[eccodes] 03/106: Upstream 0.13.0

Alastair McKinstry mckinstry at moszumanska.debian.org
Fri Jul 28 09:04:53 UTC 2017


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

mckinstry pushed a commit to branch debian/master
in repository eccodes.

commit d9e7ad3baddc1ff1ef2250431dc1550e83a37708
Author: Alastair McKinstry <mckinstry at debian.org>
Date:   Sun Feb 21 21:37:50 2016 +0000

    Upstream 0.13.0
---
 AUTHORS                                            |     4 +-
 CMakeLists.txt                                     |   133 +-
 ChangeLog                                          |     1 -
 INSTALL                                            |    59 +-
 Makefile                                           |  1364 --
 Makefile.am                                        |   302 +-
 Makefile.in                                        |   302 +-
 NOTICE                                             |     5 +-
 README                                             |    55 +-
 VERSION.cmake                                      |     2 +-
 acinclude.m4                                       |     8 +-
 autom4te.cache/output.0                            | 24511 -------------------
 autom4te.cache/output.1                            | 24511 -------------------
 autom4te.cache/output.2                            | 24511 -------------------
 autom4te.cache/requests                            |   388 -
 autom4te.cache/traces.0                            |  3420 ---
 autom4te.cache/traces.1                            |  1147 -
 autom4te.cache/traces.2                            |  1147 -
 bin/ecbuild                                        |   424 +
 cmake/CMakeLists.txt                               |     5 -
 cmake/CheckFortranSourceCompiles.cmake             |     2 +-
 cmake/FindADSM.cmake                               |     2 +-
 cmake/FindAEC.cmake                                |     4 +-
 cmake/FindAIO.cmake                                |     2 +-
 cmake/FindArmadillo.cmake                          |    35 +-
 cmake/FindCMath.cmake                              |     2 +-
 cmake/FindDl.cmake                                 |     2 +-
 cmake/FindEMOS.cmake                               |     4 +-
 cmake/FindEcLib.cmake                              |    49 -
 cmake/FindEcregrid.cmake                           |    48 -
 cmake/FindFDB.cmake                                |     2 +-
 cmake/FindHPSS.cmake                               |     2 +-
 cmake/FindLEX.cmake                                |     2 +-
 cmake/FindLegacyFDB.cmake                          |     2 +-
 cmake/FindLibGFortran.cmake                        |     2 +-
 cmake/FindLibIFort.cmake                           |    47 +
 cmake/FindMKL.cmake                                |    77 +
 cmake/FindNDBM.cmake                               |     2 +-
 cmake/FindNetCDF.cmake                             |   147 +-
 cmake/FindNetCDF3.cmake                            |    67 +-
 cmake/FindODB.cmake                                |     2 +-
 cmake/FindOpenCL.cmake                             |    67 +
 cmake/FindOpenJPEG.cmake                           |     5 +-
 cmake/FindPGIFortran.cmake                         |     2 +-
 cmake/FindPango.cmake                              |     4 +-
 cmake/FindPangoCairo.cmake                         |    15 +-
 cmake/FindProj4.cmake                              |    10 +-
 cmake/FindREADLINE.cmake                           |     2 +-
 cmake/FindRPCGEN.cmake                             |     2 +-
 cmake/FindRealtime.cmake                           |     2 +-
 cmake/FindSZip.cmake                               |     4 +-
 cmake/FindScin.cmake                               |    48 -
 cmake/FindTrilinos.cmake                           |     5 +-
 cmake/FindViennaCL.cmake                           |    38 +
 cmake/FindXLFortranLibs.cmake                      |     2 +-
 cmake/FindYACC.cmake                               |     2 +-
 cmake/Findgrib_api.cmake                           |     4 +-
 cmake/Findodb_api.cmake                            |     4 +-
 cmake/Findspot.cmake                               |     4 +-
 cmake/VERSION.cmake                                |     4 +-
 cmake/contrib/FindEigen3.cmake                     |    10 +-
 cmake/contrib/FindFFTW.cmake                       |    52 +-
 cmake/contrib/FindNetCDF4.cmake                    |    30 +-
 .../contrib/GreatCMakeCookOff/tests/CMakeLists.txt |    12 -
 .../GreatCMakeCookOff/tests/cpp11/CMakeLists.txt   |     3 -
 cmake/ecbuild-config-version.cmake                 |    12 +
 cmake/ecbuild-config.cmake                         |    90 +
 cmake/ecbuild_add_c_flags.cmake                    |    80 +
 cmake/ecbuild_add_cxx11_flags.cmake                |    22 +-
 cmake/ecbuild_add_cxx_flags.cmake                  |    80 +
 cmake/ecbuild_add_executable.cmake                 |   436 +-
 cmake/ecbuild_add_extra_search_paths.cmake         |    25 +-
 cmake/ecbuild_add_fortran_flags.cmake              |    86 +
 cmake/ecbuild_add_library.cmake                    |   733 +-
 cmake/ecbuild_add_option.cmake                     |   196 +-
 cmake/ecbuild_add_persistent.cmake                 |    94 +-
 cmake/ecbuild_add_resources.cmake                  |    97 +-
 cmake/ecbuild_add_test.cmake                       |   613 +-
 cmake/ecbuild_append_to_rpath.cmake                |    37 +-
 cmake/ecbuild_bundle.cmake                         |   338 +-
 cmake/ecbuild_cache.cmake                          |    36 +-
 cmake/ecbuild_check_c_source.cmake                 |    73 +-
 cmake/ecbuild_check_c_source_return.cmake          |   154 +
 cmake/ecbuild_check_compiler.cmake                 |    30 +-
 cmake/ecbuild_check_cxx11.cmake                    |    78 +-
 cmake/ecbuild_check_cxx_source.cmake               |    73 +-
 cmake/ecbuild_check_cxx_source_return.cmake        |   163 +
 cmake/ecbuild_check_fortran_source.cmake           |    68 +-
 cmake/ecbuild_check_fortran_source_return.cmake    |   155 +
 cmake/ecbuild_check_functions.cmake                |    67 +-
 cmake/ecbuild_check_os.cmake                       |    87 +-
 cmake/ecbuild_config.h.in                          |    27 +-
 cmake/ecbuild_debug_var.cmake                      |    14 +-
 cmake/ecbuild_declare_project.cmake                |   244 +-
 cmake/ecbuild_define_build_types.cmake             |    45 +-
 cmake/ecbuild_define_options.cmake                 |    12 +-
 cmake/ecbuild_define_paths.cmake                   |     2 +-
 cmake/ecbuild_define_uninstall.cmake               |     7 +
 cmake/ecbuild_dont_pack.cmake                      |    82 +
 cmake/ecbuild_download_resource.cmake              |    47 +
 cmake/ecbuild_echo_targets.cmake                   |    67 +-
 cmake/ecbuild_enable_fortran.cmake                 |    82 +-
 cmake/ecbuild_features.cmake                       |   121 +
 cmake/ecbuild_find_fortranlibs.cmake               |   210 +-
 cmake/ecbuild_find_lexyacc.cmake                   |    98 +-
 cmake/ecbuild_find_mpi.cmake                       |   128 +-
 cmake/ecbuild_find_omp.cmake                       |    74 +-
 cmake/ecbuild_find_package.cmake                   |   401 +-
 cmake/ecbuild_find_perl.cmake                      |    78 +-
 cmake/ecbuild_find_python.cmake                    |    76 +-
 cmake/ecbuild_generate_config_headers.cmake        |    64 +-
 cmake/ecbuild_generate_rpc.cmake                   |    33 +-
 cmake/ecbuild_generate_yy.cmake                    |   228 +-
 cmake/ecbuild_get_cxx11_flags.cmake                |    71 +
 cmake/ecbuild_get_date.cmake                       |    30 +-
 cmake/ecbuild_get_resources.cmake                  |     2 +-
 cmake/ecbuild_get_test_data.cmake                  |   251 +-
 cmake/ecbuild_git.cmake                            |   307 +
 cmake/ecbuild_install_package.cmake                |   286 -
 cmake/ecbuild_install_project.cmake                |   387 +
 cmake/ecbuild_links_target.cmake                   |     2 +-
 cmake/ecbuild_list_extra_search_paths.cmake        |    55 +-
 cmake/ecbuild_list_macros.cmake                    |    35 +-
 cmake/ecbuild_log.cmake                            |   129 +
 cmake/ecbuild_pkgconfig.cmake                      |   178 +-
 cmake/ecbuild_policies.cmake                       |    63 +
 cmake/ecbuild_print_summary.cmake                  |   179 +-
 cmake/ecbuild_project_files.cmake                  |    62 +-
 cmake/ecbuild_requires_macro_version.cmake         |    14 +-
 cmake/ecbuild_separate_sources.cmake               |    34 +-
 cmake/ecbuild_setup_test_framework.cmake           |    47 +-
 cmake/ecbuild_system.cmake                         |   383 +-
 cmake/ecbuild_uninstall.cmake.in                   |    21 +
 cmake/ecbuild_use_package.cmake                    |   354 +-
 cmake/ecbuild_version.h.in                         |     2 +-
 cmake/ecbuild_warn_unused_files.cmake              |    31 +-
 cmake/include/ecbuild/boost_test_framework.h       |     2 +-
 cmake/pkg-config.pc.in                             |     8 +-
 cmake/project-config.cmake.in                      |    18 +-
 cmake/pymain.c                                     |     5 +
 cmake/sg.pl                                        |     2 +-
 config.log                                         |  3519 ---
 config.status                                      |    38 +-
 configure                                          |     8 +-
 confluence/confUtils.pm                            |    60 -
 confluence/examples.par                            |    33 -
 confluence/load_examples.pl                        |   389 -
 confluence/load_tools.pl                           |   489 -
 confluence/tools.par                               |    37 -
 data/CMakeLists.txt                                |    15 +-
 data/Makefile                                      |   497 -
 data/bufr/CMakeLists.txt                           |     4 +-
 data/bufr/bufr_data_files.txt                      |     7 +
 data/bufr/bufr_ref_files.txt                       |   116 +
 data/download.sh                                   |    25 +-
 data/grib_data_files.txt                           |     2 +
 data/gts/CMakeLists.txt                            |     2 +-
 data/julian.out.good                               |     7 +
 data/metar/CMakeLists.txt                          |    29 +
 data/metar/metar_data_files.txt                    |     1 +
 data/metar/metar_ref_files.txt                     |     2 +
 data/scan_x_rotated_ll_5_4_good.dump               |    40 +-
 data/scan_x_rotated_ll_5_7_good.dump               |    70 +-
 data/scan_x_rotated_ll_8_4_good.dump               |    64 +-
 data/scan_x_rotated_ll_8_7_good.dump               |   112 +-
 data/scan_y_rotated_ll_5_4_good.dump               |    40 +-
 data/scan_y_rotated_ll_5_7_good.dump               |    70 +-
 data/scan_y_rotated_ll_8_4_good.dump               |    64 +-
 data/scan_y_rotated_ll_8_7_good.dump               |   112 +-
 data/tigge/CMakeLists.txt                          |    12 +-
 definitions/CMakeLists.txt                         |    35 +-
 definitions/Makefile                               | 12281 ----------
 definitions/Makefile.am                            |  4048 ++-
 definitions/Makefile.in                            |  4918 +++-
 definitions/boot.def                               |    12 +-
 definitions/budg/boot.def                          |     2 +-
 definitions/budg/mars_labeling.def                 |     2 +-
 definitions/budg/section.1.def                     |     2 +-
 definitions/budg/section.4.def                     |     2 +-
 definitions/bufr/boot.def                          |    18 +-
 definitions/bufr/boot_edition_1.def                |     5 +-
 definitions/bufr/boot_edition_2.def                |     5 +-
 definitions/bufr/boot_edition_3.def                |     5 +-
 definitions/bufr/boot_edition_4.def                |     7 +-
 definitions/bufr/dataKeys.def                      |     2 +
 definitions/bufr/old_section.1.def                 |     2 +-
 definitions/bufr/rdb_key.def                       |    52 +-
 definitions/bufr/section.0.def                     |     2 +-
 definitions/bufr/section.1.1.def                   |     2 +-
 definitions/bufr/section.1.2.def                   |     2 +-
 definitions/bufr/section.1.3.def                   |     7 +-
 definitions/bufr/section.1.4.def                   |     7 +-
 definitions/bufr/section.2.def                     |     6 +-
 definitions/bufr/section.3.def                     |   111 +-
 definitions/bufr/section.4.def                     |    23 +-
 definitions/bufr/section.5.def                     |     2 +-
 .../bufr/tables/0/local/1/98/0/element.table       |     4 +-
 .../bufr/tables/0/local/101/98/0/element.table     |     4 +-
 .../tables/0/local/2/98/0/codetables/25192.table   |     2 +
 .../tables/0/local/2/98/0/codetables/40214.table   |     2 +
 .../tables/0/local/2/98/0/codetables/5237.table    |     2 +
 .../tables/0/local/2/98/0/codetables/8201.table    |    16 +
 .../bufr/tables/0/local/2/98/0/element.table       |    16 +
 .../bufr/tables/0/local/2/98/0/sequence.def        |     6 +
 .../tables/0/local/3/98/0/codetables/25192.table   |    16 +
 .../tables/0/local/3/98/0/codetables/40214.table   |    16 +
 .../tables/0/local/3/98/0/codetables/5237.table    |     4 +
 .../tables/0/local/3/98/0/codetables/8201.table    |    16 +
 .../bufr/tables/0/local/3/98/0/element.table       |    22 +
 .../bufr/tables/0/local/3/98/0/sequence.def        |    14 +
 .../bufr/tables/0/wmo/10/codetables/1003.table     |     8 +
 .../bufr/tables/0/wmo/10/codetables/10063.table    |    10 +
 .../bufr/tables/0/wmo/10/codetables/10064.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/1007.table     |   132 +
 .../bufr/tables/0/wmo/10/codetables/1031.table     |   219 +
 .../bufr/tables/0/wmo/10/codetables/1032.table     |    41 +
 .../bufr/tables/0/wmo/10/codetables/1033.table     |   219 +
 .../bufr/tables/0/wmo/10/codetables/1035.table     |   219 +
 .../bufr/tables/0/wmo/10/codetables/1090.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/1092.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/11031.table    |     9 +
 .../bufr/tables/0/wmo/10/codetables/11037.table    |    30 +
 .../bufr/tables/0/wmo/10/codetables/11038.table    |    17 +
 .../bufr/tables/0/wmo/10/codetables/11039.table    |    16 +
 .../bufr/tables/0/wmo/10/codetables/13038.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/13039.table    |     3 +
 .../bufr/tables/0/wmo/10/codetables/13040.table    |     9 +
 .../bufr/tables/0/wmo/10/codetables/13041.table    |    10 +
 .../bufr/tables/0/wmo/10/codetables/13051.table    |     8 +
 .../bufr/tables/0/wmo/10/codetables/13056.table    |    10 +
 .../bufr/tables/0/wmo/10/codetables/13057.table    |    11 +
 .../bufr/tables/0/wmo/10/codetables/15025.table    |     2 +
 .../bufr/tables/0/wmo/10/codetables/19001.table    |     7 +
 .../bufr/tables/0/wmo/10/codetables/19008.table    |     5 +
 .../bufr/tables/0/wmo/10/codetables/19010.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/20003.table    |   250 +
 .../bufr/tables/0/wmo/10/codetables/20004.table    |    21 +
 .../bufr/tables/0/wmo/10/codetables/20005.table    |    21 +
 .../bufr/tables/0/wmo/10/codetables/20008.table    |    19 +
 .../bufr/tables/0/wmo/10/codetables/20009.table    |     6 +
 .../bufr/tables/0/wmo/10/codetables/2001.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/20011.table    |    11 +
 .../bufr/tables/0/wmo/10/codetables/20012.table    |    45 +
 .../bufr/tables/0/wmo/10/codetables/20017.table    |    11 +
 .../bufr/tables/0/wmo/10/codetables/20018.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/2002.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/20021.table    |    24 +
 .../bufr/tables/0/wmo/10/codetables/20022.table    |     7 +
 .../bufr/tables/0/wmo/10/codetables/20023.table    |    12 +
 .../bufr/tables/0/wmo/10/codetables/20024.table    |     7 +
 .../bufr/tables/0/wmo/10/codetables/20025.table    |    11 +
 .../bufr/tables/0/wmo/10/codetables/20026.table    |    14 +
 .../bufr/tables/0/wmo/10/codetables/20027.table    |     7 +
 .../bufr/tables/0/wmo/10/codetables/20029.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/2003.table     |    12 +
 .../bufr/tables/0/wmo/10/codetables/20032.table    |     6 +
 .../bufr/tables/0/wmo/10/codetables/20033.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/20034.table    |    12 +
 .../bufr/tables/0/wmo/10/codetables/20035.table    |    12 +
 .../bufr/tables/0/wmo/10/codetables/20036.table    |    12 +
 .../bufr/tables/0/wmo/10/codetables/20037.table    |    12 +
 .../bufr/tables/0/wmo/10/codetables/2004.table     |    11 +
 .../bufr/tables/0/wmo/10/codetables/20040.table    |     9 +
 .../bufr/tables/0/wmo/10/codetables/20041.table    |    11 +
 .../bufr/tables/0/wmo/10/codetables/20042.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/20045.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/20050.table    |    10 +
 .../bufr/tables/0/wmo/10/codetables/20055.table    |    11 +
 .../bufr/tables/0/wmo/10/codetables/20056.table    |     5 +
 .../bufr/tables/0/wmo/10/codetables/20062.table    |    21 +
 .../bufr/tables/0/wmo/10/codetables/20063.table    |     1 +
 .../bufr/tables/0/wmo/10/codetables/20071.table    |    11 +
 .../bufr/tables/0/wmo/10/codetables/20086.table    |     8 +
 .../bufr/tables/0/wmo/10/codetables/20090.table    |     7 +
 .../bufr/tables/0/wmo/10/codetables/20101.table    |    10 +
 .../bufr/tables/0/wmo/10/codetables/20102.table    |    11 +
 .../bufr/tables/0/wmo/10/codetables/2011.table     |    54 +
 .../bufr/tables/0/wmo/10/codetables/2012.table     |     1 +
 .../bufr/tables/0/wmo/10/codetables/2013.table     |     9 +
 .../bufr/tables/0/wmo/10/codetables/2014.table     |    50 +
 .../bufr/tables/0/wmo/10/codetables/2015.table     |     6 +
 .../bufr/tables/0/wmo/10/codetables/2016.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/2019.table     |   296 +
 .../bufr/tables/0/wmo/10/codetables/2020.table     |    24 +
 .../bufr/tables/0/wmo/10/codetables/2021.table     |     8 +
 .../bufr/tables/0/wmo/10/codetables/2022.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/2023.table     |    12 +
 .../bufr/tables/0/wmo/10/codetables/2024.table     |     3 +
 .../bufr/tables/0/wmo/10/codetables/2025.table     |    16 +
 .../bufr/tables/0/wmo/10/codetables/2030.table     |     7 +
 .../bufr/tables/0/wmo/10/codetables/2031.table     |    21 +
 .../bufr/tables/0/wmo/10/codetables/2032.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/2033.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/2034.table     |     7 +
 .../bufr/tables/0/wmo/10/codetables/2036.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/2037.table     |     7 +
 .../bufr/tables/0/wmo/10/codetables/2038.table     |    12 +
 .../bufr/tables/0/wmo/10/codetables/2039.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/2040.table     |     8 +
 .../bufr/tables/0/wmo/10/codetables/2041.table     |     6 +
 .../bufr/tables/0/wmo/10/codetables/2044.table     |     6 +
 .../bufr/tables/0/wmo/10/codetables/2045.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/2046.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/2048.table     |    12 +
 .../bufr/tables/0/wmo/10/codetables/2049.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/2050.table     |    19 +
 .../bufr/tables/0/wmo/10/codetables/2051.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/2052.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/2053.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/2054.table     |     6 +
 .../bufr/tables/0/wmo/10/codetables/2055.table     |     9 +
 .../bufr/tables/0/wmo/10/codetables/2056.table     |     6 +
 .../bufr/tables/0/wmo/10/codetables/2057.table     |     6 +
 .../bufr/tables/0/wmo/10/codetables/2058.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/2059.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/2060.table     |     7 +
 .../bufr/tables/0/wmo/10/codetables/2061.table     |     3 +
 .../bufr/tables/0/wmo/10/codetables/2062.table     |     7 +
 .../bufr/tables/0/wmo/10/codetables/2064.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/2066.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/2070.table     |    13 +
 .../bufr/tables/0/wmo/10/codetables/2080.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/2081.table     |     9 +
 .../bufr/tables/0/wmo/10/codetables/2083.table     |     6 +
 .../bufr/tables/0/wmo/10/codetables/2084.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/2095.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/2096.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/2097.table     |     8 +
 .../bufr/tables/0/wmo/10/codetables/2098.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/2101.table     |    10 +
 .../bufr/tables/0/wmo/10/codetables/2103.table     |     2 +
 .../bufr/tables/0/wmo/10/codetables/2104.table     |     7 +
 .../bufr/tables/0/wmo/10/codetables/21066.table    |    11 +
 .../bufr/tables/0/wmo/10/codetables/21067.table    |    12 +
 .../bufr/tables/0/wmo/10/codetables/21068.table    |     7 +
 .../bufr/tables/0/wmo/10/codetables/21069.table    |     9 +
 .../bufr/tables/0/wmo/10/codetables/21070.table    |    23 +
 .../bufr/tables/0/wmo/10/codetables/21072.table    |     3 +
 .../bufr/tables/0/wmo/10/codetables/21073.table    |     8 +
 .../bufr/tables/0/wmo/10/codetables/21076.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/21109.table    |     8 +
 .../bufr/tables/0/wmo/10/codetables/21115.table    |    11 +
 .../bufr/tables/0/wmo/10/codetables/21116.table    |    16 +
 .../bufr/tables/0/wmo/10/codetables/21119.table    |    14 +
 .../bufr/tables/0/wmo/10/codetables/21144.table    |     1 +
 .../bufr/tables/0/wmo/10/codetables/2115.table     |     7 +
 .../bufr/tables/0/wmo/10/codetables/21150.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/21155.table    |    16 +
 .../bufr/tables/0/wmo/10/codetables/21158.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/21159.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/21169.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/2119.table     |     8 +
 .../bufr/tables/0/wmo/10/codetables/2131.table     |     1 +
 .../bufr/tables/0/wmo/10/codetables/2143.table     |    21 +
 .../bufr/tables/0/wmo/10/codetables/2144.table     |     8 +
 .../bufr/tables/0/wmo/10/codetables/2145.table     |     9 +
 .../bufr/tables/0/wmo/10/codetables/2146.table     |    11 +
 .../bufr/tables/0/wmo/10/codetables/2148.table     |     6 +
 .../bufr/tables/0/wmo/10/codetables/2149.table     |    22 +
 .../bufr/tables/0/wmo/10/codetables/2150.table     |    55 +
 .../bufr/tables/0/wmo/10/codetables/2151.table     |     9 +
 .../bufr/tables/0/wmo/10/codetables/2152.table     |    11 +
 .../bufr/tables/0/wmo/10/codetables/2158.table     |     8 +
 .../bufr/tables/0/wmo/10/codetables/2159.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/2163.table     |    15 +
 .../bufr/tables/0/wmo/10/codetables/2164.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/2166.table     |     6 +
 .../bufr/tables/0/wmo/10/codetables/2167.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/2169.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/2172.table     |     3 +
 .../bufr/tables/0/wmo/10/codetables/2175.table     |     9 +
 .../bufr/tables/0/wmo/10/codetables/2176.table     |     6 +
 .../bufr/tables/0/wmo/10/codetables/2177.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/2178.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/2179.table     |     6 +
 .../bufr/tables/0/wmo/10/codetables/2180.table     |     8 +
 .../bufr/tables/0/wmo/10/codetables/2181.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/2182.table     |     7 +
 .../bufr/tables/0/wmo/10/codetables/2183.table     |     9 +
 .../bufr/tables/0/wmo/10/codetables/2184.table     |     8 +
 .../bufr/tables/0/wmo/10/codetables/2185.table     |     7 +
 .../bufr/tables/0/wmo/10/codetables/2186.table     |    23 +
 .../bufr/tables/0/wmo/10/codetables/2187.table     |    11 +
 .../bufr/tables/0/wmo/10/codetables/2188.table     |    10 +
 .../bufr/tables/0/wmo/10/codetables/2189.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/22056.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/22060.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/22061.table    |    11 +
 .../bufr/tables/0/wmo/10/codetables/22067.table    |     1 +
 .../bufr/tables/0/wmo/10/codetables/22068.table    |     1 +
 .../bufr/tables/0/wmo/10/codetables/22120.table    |    13 +
 .../bufr/tables/0/wmo/10/codetables/22121.table    |     9 +
 .../bufr/tables/0/wmo/10/codetables/22122.table    |     8 +
 .../bufr/tables/0/wmo/10/codetables/22123.table    |     9 +
 .../bufr/tables/0/wmo/10/codetables/23001.table    |     5 +
 .../bufr/tables/0/wmo/10/codetables/23002.table    |    16 +
 .../bufr/tables/0/wmo/10/codetables/23003.table    |     8 +
 .../bufr/tables/0/wmo/10/codetables/23004.table    |     6 +
 .../bufr/tables/0/wmo/10/codetables/23005.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/23006.table    |     8 +
 .../bufr/tables/0/wmo/10/codetables/23007.table    |     5 +
 .../bufr/tables/0/wmo/10/codetables/23008.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/23009.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/23016.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/23018.table    |     6 +
 .../bufr/tables/0/wmo/10/codetables/23031.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/23032.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/24003.table    |     5 +
 .../bufr/tables/0/wmo/10/codetables/25004.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/25005.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/25006.table    |     5 +
 .../bufr/tables/0/wmo/10/codetables/25009.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/25010.table    |     8 +
 .../bufr/tables/0/wmo/10/codetables/25011.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/25012.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/25013.table    |     1 +
 .../bufr/tables/0/wmo/10/codetables/25015.table    |     1 +
 .../bufr/tables/0/wmo/10/codetables/25017.table    |     1 +
 .../bufr/tables/0/wmo/10/codetables/25020.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/25021.table    |     5 +
 .../bufr/tables/0/wmo/10/codetables/25030.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/25032.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/25033.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/25034.table    |     3 +
 .../bufr/tables/0/wmo/10/codetables/25036.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/25040.table    |    10 +
 .../bufr/tables/0/wmo/10/codetables/25041.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/25042.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/25045.table    |    20 +
 .../bufr/tables/0/wmo/10/codetables/25046.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/25047.table    |     3 +
 .../bufr/tables/0/wmo/10/codetables/25048.table    |    15 +
 .../bufr/tables/0/wmo/10/codetables/25049.table    |     5 +
 .../bufr/tables/0/wmo/10/codetables/25051.table    |     6 +
 .../bufr/tables/0/wmo/10/codetables/25053.table    |     6 +
 .../bufr/tables/0/wmo/10/codetables/25069.table    |     7 +
 .../bufr/tables/0/wmo/10/codetables/25086.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/25093.table    |     3 +
 .../bufr/tables/0/wmo/10/codetables/25095.table    |     1 +
 .../bufr/tables/0/wmo/10/codetables/25096.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/25097.table    |    11 +
 .../bufr/tables/0/wmo/10/codetables/25098.table    |     8 +
 .../bufr/tables/0/wmo/10/codetables/25099.table    |     6 +
 .../bufr/tables/0/wmo/10/codetables/25110.table    |     6 +
 .../bufr/tables/0/wmo/10/codetables/25120.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/25122.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/25123.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/25124.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/26010.table    |    25 +
 .../bufr/tables/0/wmo/10/codetables/29001.table    |     6 +
 .../bufr/tables/0/wmo/10/codetables/29002.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/30031.table    |    13 +
 .../bufr/tables/0/wmo/10/codetables/30032.table    |     9 +
 .../bufr/tables/0/wmo/10/codetables/31021.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/31031.table    |     1 +
 .../bufr/tables/0/wmo/10/codetables/33002.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/33003.table    |     5 +
 .../bufr/tables/0/wmo/10/codetables/33005.table    |    23 +
 .../bufr/tables/0/wmo/10/codetables/33006.table    |     5 +
 .../bufr/tables/0/wmo/10/codetables/33015.table    |    16 +
 .../bufr/tables/0/wmo/10/codetables/33020.table    |     8 +
 .../bufr/tables/0/wmo/10/codetables/33021.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/33022.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/33023.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/33024.table    |    10 +
 .../bufr/tables/0/wmo/10/codetables/33025.table    |     5 +
 .../bufr/tables/0/wmo/10/codetables/33026.table    |    10 +
 .../bufr/tables/0/wmo/10/codetables/33027.table    |     5 +
 .../bufr/tables/0/wmo/10/codetables/33028.table    |     6 +
 .../bufr/tables/0/wmo/10/codetables/33030.table    |     7 +
 .../bufr/tables/0/wmo/10/codetables/33031.table    |    21 +
 .../bufr/tables/0/wmo/10/codetables/33032.table    |     6 +
 .../bufr/tables/0/wmo/10/codetables/33033.table    |    23 +
 .../bufr/tables/0/wmo/10/codetables/33035.table    |    15 +
 .../bufr/tables/0/wmo/10/codetables/33037.table    |    19 +
 .../bufr/tables/0/wmo/10/codetables/33038.table    |     9 +
 .../bufr/tables/0/wmo/10/codetables/33039.table    |     9 +
 .../bufr/tables/0/wmo/10/codetables/33041.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/33042.table    |     5 +
 .../bufr/tables/0/wmo/10/codetables/33043.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/33044.table    |    14 +
 .../bufr/tables/0/wmo/10/codetables/33047.table    |    26 +
 .../bufr/tables/0/wmo/10/codetables/33048.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/33049.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/33050.table    |     8 +
 .../bufr/tables/0/wmo/10/codetables/33052.table    |    20 +
 .../bufr/tables/0/wmo/10/codetables/33053.table    |    20 +
 .../bufr/tables/0/wmo/10/codetables/33060.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/35000.table    |    11 +
 .../bufr/tables/0/wmo/10/codetables/35001.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/35030.table    |    10 +
 .../bufr/tables/0/wmo/10/codetables/35031.table    |    20 +
 .../bufr/tables/0/wmo/10/codetables/35032.table    |    10 +
 .../bufr/tables/0/wmo/10/codetables/35033.table    |    12 +
 .../bufr/tables/0/wmo/10/codetables/35034.table    |     7 +
 .../bufr/tables/0/wmo/10/codetables/40011.table    |     4 +
 .../bufr/tables/0/wmo/10/codetables/40012.table    |     3 +
 .../bufr/tables/0/wmo/10/codetables/40013.table    |     5 +
 .../bufr/tables/0/wmo/10/codetables/4059.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/8001.table     |     7 +
 .../bufr/tables/0/wmo/10/codetables/8002.table     |    13 +
 .../bufr/tables/0/wmo/10/codetables/8003.table     |     9 +
 .../bufr/tables/0/wmo/10/codetables/8004.table     |     6 +
 .../bufr/tables/0/wmo/10/codetables/8005.table     |     7 +
 .../bufr/tables/0/wmo/10/codetables/8006.table     |     8 +
 .../bufr/tables/0/wmo/10/codetables/8007.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/8008.table     |     8 +
 .../bufr/tables/0/wmo/10/codetables/8009.table     |    16 +
 .../bufr/tables/0/wmo/10/codetables/8010.table     |    13 +
 .../bufr/tables/0/wmo/10/codetables/8011.table     |    26 +
 .../bufr/tables/0/wmo/10/codetables/8012.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/8013.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/8014.table     |    10 +
 .../bufr/tables/0/wmo/10/codetables/8016.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/8017.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/8018.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/8021.table     |    32 +
 .../bufr/tables/0/wmo/10/codetables/8023.table     |    17 +
 .../bufr/tables/0/wmo/10/codetables/8024.table     |    15 +
 .../bufr/tables/0/wmo/10/codetables/8025.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/8026.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/8029.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/8033.table     |     6 +
 .../bufr/tables/0/wmo/10/codetables/8035.table     |     8 +
 .../bufr/tables/0/wmo/10/codetables/8036.table     |     8 +
 .../bufr/tables/0/wmo/10/codetables/8039.table     |     8 +
 .../bufr/tables/0/wmo/10/codetables/8040.table     |    43 +
 .../bufr/tables/0/wmo/10/codetables/8041.table     |     9 +
 .../bufr/tables/0/wmo/10/codetables/8042.table     |    13 +
 .../bufr/tables/0/wmo/10/codetables/8043.table     |    21 +
 .../bufr/tables/0/wmo/10/codetables/8050.table     |    11 +
 .../bufr/tables/0/wmo/10/codetables/8051.table     |     7 +
 .../bufr/tables/0/wmo/10/codetables/8052.table     |    26 +
 .../bufr/tables/0/wmo/10/codetables/8053.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/8054.table     |     3 +
 .../bufr/tables/0/wmo/10/codetables/8060.table     |     8 +
 .../bufr/tables/0/wmo/10/codetables/8065.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/8066.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/8070.table     |     6 +
 .../bufr/tables/0/wmo/10/codetables/8072.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/8074.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/8075.table     |     4 +
 .../bufr/tables/0/wmo/10/codetables/8076.table     |     3 +
 .../bufr/tables/0/wmo/10/codetables/8077.table     |     7 +
 .../bufr/tables/0/wmo/10/codetables/8079.table     |     9 +
 .../bufr/tables/0/wmo/10/codetables/8080.table     |     9 +
 .../bufr/tables/0/wmo/10/codetables/8081.table     |     5 +
 .../bufr/tables/0/wmo/10/codetables/8082.table     |     3 +
 .../bufr/tables/0/wmo/10/codetables/8083.table     |     9 +
 .../bufr/tables/0/wmo/10/codetables/8085.table     |     8 +
 definitions/bufr/tables/0/wmo/10/element.table     |  1297 +
 definitions/bufr/tables/0/wmo/10/sequence.def      |   678 +
 .../bufr/tables/0/wmo/11/codetables/1003.table     |     8 +
 .../bufr/tables/0/wmo/11/codetables/10063.table    |    10 +
 .../bufr/tables/0/wmo/11/codetables/10064.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/1007.table     |   132 +
 .../bufr/tables/0/wmo/11/codetables/1031.table     |   219 +
 .../bufr/tables/0/wmo/11/codetables/1032.table     |    41 +
 .../bufr/tables/0/wmo/11/codetables/1033.table     |   219 +
 .../bufr/tables/0/wmo/11/codetables/1035.table     |   219 +
 .../bufr/tables/0/wmo/11/codetables/1090.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/1092.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/11031.table    |     9 +
 .../bufr/tables/0/wmo/11/codetables/11037.table    |    30 +
 .../bufr/tables/0/wmo/11/codetables/11038.table    |    17 +
 .../bufr/tables/0/wmo/11/codetables/11039.table    |    16 +
 .../bufr/tables/0/wmo/11/codetables/13038.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/13039.table    |     3 +
 .../bufr/tables/0/wmo/11/codetables/13040.table    |     9 +
 .../bufr/tables/0/wmo/11/codetables/13041.table    |    10 +
 .../bufr/tables/0/wmo/11/codetables/13051.table    |     8 +
 .../bufr/tables/0/wmo/11/codetables/13056.table    |    10 +
 .../bufr/tables/0/wmo/11/codetables/13057.table    |    11 +
 .../bufr/tables/0/wmo/11/codetables/15025.table    |     2 +
 .../bufr/tables/0/wmo/11/codetables/19001.table    |     7 +
 .../bufr/tables/0/wmo/11/codetables/19008.table    |     5 +
 .../bufr/tables/0/wmo/11/codetables/19010.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/20003.table    |   250 +
 .../bufr/tables/0/wmo/11/codetables/20004.table    |    21 +
 .../bufr/tables/0/wmo/11/codetables/20005.table    |    21 +
 .../bufr/tables/0/wmo/11/codetables/20008.table    |    19 +
 .../bufr/tables/0/wmo/11/codetables/20009.table    |     6 +
 .../bufr/tables/0/wmo/11/codetables/2001.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/20011.table    |    11 +
 .../bufr/tables/0/wmo/11/codetables/20012.table    |    45 +
 .../bufr/tables/0/wmo/11/codetables/20017.table    |    11 +
 .../bufr/tables/0/wmo/11/codetables/20018.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/2002.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/20021.table    |    24 +
 .../bufr/tables/0/wmo/11/codetables/20022.table    |     7 +
 .../bufr/tables/0/wmo/11/codetables/20023.table    |    12 +
 .../bufr/tables/0/wmo/11/codetables/20024.table    |     7 +
 .../bufr/tables/0/wmo/11/codetables/20025.table    |    11 +
 .../bufr/tables/0/wmo/11/codetables/20026.table    |    14 +
 .../bufr/tables/0/wmo/11/codetables/20027.table    |     7 +
 .../bufr/tables/0/wmo/11/codetables/20029.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/2003.table     |    12 +
 .../bufr/tables/0/wmo/11/codetables/20032.table    |     6 +
 .../bufr/tables/0/wmo/11/codetables/20033.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/20034.table    |    12 +
 .../bufr/tables/0/wmo/11/codetables/20035.table    |    12 +
 .../bufr/tables/0/wmo/11/codetables/20036.table    |    12 +
 .../bufr/tables/0/wmo/11/codetables/20037.table    |    12 +
 .../bufr/tables/0/wmo/11/codetables/2004.table     |    11 +
 .../bufr/tables/0/wmo/11/codetables/20040.table    |     9 +
 .../bufr/tables/0/wmo/11/codetables/20041.table    |    11 +
 .../bufr/tables/0/wmo/11/codetables/20042.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/20045.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/20050.table    |    10 +
 .../bufr/tables/0/wmo/11/codetables/20055.table    |    11 +
 .../bufr/tables/0/wmo/11/codetables/20056.table    |     5 +
 .../bufr/tables/0/wmo/11/codetables/20062.table    |    21 +
 .../bufr/tables/0/wmo/11/codetables/20063.table    |     1 +
 .../bufr/tables/0/wmo/11/codetables/20071.table    |    11 +
 .../bufr/tables/0/wmo/11/codetables/20086.table    |     8 +
 .../bufr/tables/0/wmo/11/codetables/20090.table    |     7 +
 .../bufr/tables/0/wmo/11/codetables/20101.table    |    10 +
 .../bufr/tables/0/wmo/11/codetables/20102.table    |    11 +
 .../bufr/tables/0/wmo/11/codetables/2011.table     |    54 +
 .../bufr/tables/0/wmo/11/codetables/2012.table     |     1 +
 .../bufr/tables/0/wmo/11/codetables/2013.table     |     9 +
 .../bufr/tables/0/wmo/11/codetables/2014.table     |    50 +
 .../bufr/tables/0/wmo/11/codetables/2015.table     |     6 +
 .../bufr/tables/0/wmo/11/codetables/2016.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/2019.table     |   296 +
 .../bufr/tables/0/wmo/11/codetables/2020.table     |    24 +
 .../bufr/tables/0/wmo/11/codetables/2021.table     |     8 +
 .../bufr/tables/0/wmo/11/codetables/2022.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/2023.table     |    12 +
 .../bufr/tables/0/wmo/11/codetables/2024.table     |     3 +
 .../bufr/tables/0/wmo/11/codetables/2025.table     |    16 +
 .../bufr/tables/0/wmo/11/codetables/2030.table     |     7 +
 .../bufr/tables/0/wmo/11/codetables/2031.table     |    21 +
 .../bufr/tables/0/wmo/11/codetables/2032.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/2033.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/2034.table     |     7 +
 .../bufr/tables/0/wmo/11/codetables/2036.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/2037.table     |     7 +
 .../bufr/tables/0/wmo/11/codetables/2038.table     |    12 +
 .../bufr/tables/0/wmo/11/codetables/2039.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/2040.table     |     8 +
 .../bufr/tables/0/wmo/11/codetables/2041.table     |     6 +
 .../bufr/tables/0/wmo/11/codetables/2044.table     |     6 +
 .../bufr/tables/0/wmo/11/codetables/2045.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/2046.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/2048.table     |    12 +
 .../bufr/tables/0/wmo/11/codetables/2049.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/2050.table     |    19 +
 .../bufr/tables/0/wmo/11/codetables/2051.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/2052.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/2053.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/2054.table     |     6 +
 .../bufr/tables/0/wmo/11/codetables/2055.table     |     9 +
 .../bufr/tables/0/wmo/11/codetables/2056.table     |     6 +
 .../bufr/tables/0/wmo/11/codetables/2057.table     |     6 +
 .../bufr/tables/0/wmo/11/codetables/2058.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/2059.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/2060.table     |     7 +
 .../bufr/tables/0/wmo/11/codetables/2061.table     |     3 +
 .../bufr/tables/0/wmo/11/codetables/2062.table     |     7 +
 .../bufr/tables/0/wmo/11/codetables/2064.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/2066.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/2070.table     |    13 +
 .../bufr/tables/0/wmo/11/codetables/2080.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/2081.table     |     9 +
 .../bufr/tables/0/wmo/11/codetables/2083.table     |     6 +
 .../bufr/tables/0/wmo/11/codetables/2084.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/2095.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/2096.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/2097.table     |     8 +
 .../bufr/tables/0/wmo/11/codetables/2098.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/2101.table     |    10 +
 .../bufr/tables/0/wmo/11/codetables/2103.table     |     2 +
 .../bufr/tables/0/wmo/11/codetables/2104.table     |     7 +
 .../bufr/tables/0/wmo/11/codetables/21066.table    |    11 +
 .../bufr/tables/0/wmo/11/codetables/21067.table    |    12 +
 .../bufr/tables/0/wmo/11/codetables/21068.table    |     7 +
 .../bufr/tables/0/wmo/11/codetables/21069.table    |     9 +
 .../bufr/tables/0/wmo/11/codetables/21070.table    |    23 +
 .../bufr/tables/0/wmo/11/codetables/21072.table    |     3 +
 .../bufr/tables/0/wmo/11/codetables/21073.table    |     8 +
 .../bufr/tables/0/wmo/11/codetables/21076.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/21109.table    |     8 +
 .../bufr/tables/0/wmo/11/codetables/21115.table    |    11 +
 .../bufr/tables/0/wmo/11/codetables/21116.table    |    16 +
 .../bufr/tables/0/wmo/11/codetables/21119.table    |    14 +
 .../bufr/tables/0/wmo/11/codetables/21144.table    |     1 +
 .../bufr/tables/0/wmo/11/codetables/2115.table     |     7 +
 .../bufr/tables/0/wmo/11/codetables/21150.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/21155.table    |    16 +
 .../bufr/tables/0/wmo/11/codetables/21158.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/21159.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/21169.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/2119.table     |     8 +
 .../bufr/tables/0/wmo/11/codetables/2131.table     |     1 +
 .../bufr/tables/0/wmo/11/codetables/2143.table     |    21 +
 .../bufr/tables/0/wmo/11/codetables/2144.table     |     8 +
 .../bufr/tables/0/wmo/11/codetables/2145.table     |     9 +
 .../bufr/tables/0/wmo/11/codetables/2146.table     |    11 +
 .../bufr/tables/0/wmo/11/codetables/2148.table     |     6 +
 .../bufr/tables/0/wmo/11/codetables/2149.table     |    22 +
 .../bufr/tables/0/wmo/11/codetables/2150.table     |    55 +
 .../bufr/tables/0/wmo/11/codetables/2151.table     |     9 +
 .../bufr/tables/0/wmo/11/codetables/2152.table     |    11 +
 .../bufr/tables/0/wmo/11/codetables/2158.table     |     8 +
 .../bufr/tables/0/wmo/11/codetables/2159.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/2163.table     |    15 +
 .../bufr/tables/0/wmo/11/codetables/2164.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/2166.table     |     6 +
 .../bufr/tables/0/wmo/11/codetables/2167.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/2169.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/2172.table     |     3 +
 .../bufr/tables/0/wmo/11/codetables/2175.table     |     9 +
 .../bufr/tables/0/wmo/11/codetables/2176.table     |     6 +
 .../bufr/tables/0/wmo/11/codetables/2177.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/2178.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/2179.table     |     6 +
 .../bufr/tables/0/wmo/11/codetables/2180.table     |     8 +
 .../bufr/tables/0/wmo/11/codetables/2181.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/2182.table     |     7 +
 .../bufr/tables/0/wmo/11/codetables/2183.table     |     9 +
 .../bufr/tables/0/wmo/11/codetables/2184.table     |     8 +
 .../bufr/tables/0/wmo/11/codetables/2185.table     |     7 +
 .../bufr/tables/0/wmo/11/codetables/2186.table     |    23 +
 .../bufr/tables/0/wmo/11/codetables/2187.table     |    11 +
 .../bufr/tables/0/wmo/11/codetables/2188.table     |    10 +
 .../bufr/tables/0/wmo/11/codetables/2189.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/22056.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/22060.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/22061.table    |    11 +
 .../bufr/tables/0/wmo/11/codetables/22067.table    |     1 +
 .../bufr/tables/0/wmo/11/codetables/22068.table    |     1 +
 .../bufr/tables/0/wmo/11/codetables/22120.table    |    13 +
 .../bufr/tables/0/wmo/11/codetables/22121.table    |     9 +
 .../bufr/tables/0/wmo/11/codetables/22122.table    |     8 +
 .../bufr/tables/0/wmo/11/codetables/22123.table    |     9 +
 .../bufr/tables/0/wmo/11/codetables/23001.table    |     5 +
 .../bufr/tables/0/wmo/11/codetables/23002.table    |    16 +
 .../bufr/tables/0/wmo/11/codetables/23003.table    |     8 +
 .../bufr/tables/0/wmo/11/codetables/23004.table    |     6 +
 .../bufr/tables/0/wmo/11/codetables/23005.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/23006.table    |     8 +
 .../bufr/tables/0/wmo/11/codetables/23007.table    |     5 +
 .../bufr/tables/0/wmo/11/codetables/23008.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/23009.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/23016.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/23018.table    |     6 +
 .../bufr/tables/0/wmo/11/codetables/23031.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/23032.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/24003.table    |     5 +
 .../bufr/tables/0/wmo/11/codetables/25004.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/25005.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/25006.table    |     5 +
 .../bufr/tables/0/wmo/11/codetables/25009.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/25010.table    |     8 +
 .../bufr/tables/0/wmo/11/codetables/25011.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/25012.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/25013.table    |     1 +
 .../bufr/tables/0/wmo/11/codetables/25015.table    |     1 +
 .../bufr/tables/0/wmo/11/codetables/25017.table    |     1 +
 .../bufr/tables/0/wmo/11/codetables/25020.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/25021.table    |     5 +
 .../bufr/tables/0/wmo/11/codetables/25030.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/25032.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/25033.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/25034.table    |     3 +
 .../bufr/tables/0/wmo/11/codetables/25036.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/25040.table    |    10 +
 .../bufr/tables/0/wmo/11/codetables/25041.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/25042.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/25045.table    |    20 +
 .../bufr/tables/0/wmo/11/codetables/25046.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/25047.table    |     3 +
 .../bufr/tables/0/wmo/11/codetables/25048.table    |    15 +
 .../bufr/tables/0/wmo/11/codetables/25049.table    |     5 +
 .../bufr/tables/0/wmo/11/codetables/25051.table    |     6 +
 .../bufr/tables/0/wmo/11/codetables/25053.table    |     6 +
 .../bufr/tables/0/wmo/11/codetables/25069.table    |     7 +
 .../bufr/tables/0/wmo/11/codetables/25086.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/25093.table    |     3 +
 .../bufr/tables/0/wmo/11/codetables/25095.table    |     1 +
 .../bufr/tables/0/wmo/11/codetables/25096.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/25097.table    |    11 +
 .../bufr/tables/0/wmo/11/codetables/25098.table    |     8 +
 .../bufr/tables/0/wmo/11/codetables/25099.table    |     6 +
 .../bufr/tables/0/wmo/11/codetables/25110.table    |     6 +
 .../bufr/tables/0/wmo/11/codetables/25120.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/25122.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/25123.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/25124.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/26010.table    |    25 +
 .../bufr/tables/0/wmo/11/codetables/29001.table    |     6 +
 .../bufr/tables/0/wmo/11/codetables/29002.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/30031.table    |    13 +
 .../bufr/tables/0/wmo/11/codetables/30032.table    |     9 +
 .../bufr/tables/0/wmo/11/codetables/31021.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/31031.table    |     1 +
 .../bufr/tables/0/wmo/11/codetables/33002.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/33003.table    |     5 +
 .../bufr/tables/0/wmo/11/codetables/33005.table    |    23 +
 .../bufr/tables/0/wmo/11/codetables/33006.table    |     5 +
 .../bufr/tables/0/wmo/11/codetables/33015.table    |    16 +
 .../bufr/tables/0/wmo/11/codetables/33020.table    |     8 +
 .../bufr/tables/0/wmo/11/codetables/33021.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/33022.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/33023.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/33024.table    |    10 +
 .../bufr/tables/0/wmo/11/codetables/33025.table    |     5 +
 .../bufr/tables/0/wmo/11/codetables/33026.table    |    10 +
 .../bufr/tables/0/wmo/11/codetables/33027.table    |     5 +
 .../bufr/tables/0/wmo/11/codetables/33028.table    |     6 +
 .../bufr/tables/0/wmo/11/codetables/33030.table    |     7 +
 .../bufr/tables/0/wmo/11/codetables/33031.table    |    21 +
 .../bufr/tables/0/wmo/11/codetables/33032.table    |     6 +
 .../bufr/tables/0/wmo/11/codetables/33033.table    |    23 +
 .../bufr/tables/0/wmo/11/codetables/33035.table    |    15 +
 .../bufr/tables/0/wmo/11/codetables/33037.table    |    19 +
 .../bufr/tables/0/wmo/11/codetables/33038.table    |     9 +
 .../bufr/tables/0/wmo/11/codetables/33039.table    |     9 +
 .../bufr/tables/0/wmo/11/codetables/33041.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/33042.table    |     5 +
 .../bufr/tables/0/wmo/11/codetables/33043.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/33044.table    |    14 +
 .../bufr/tables/0/wmo/11/codetables/33047.table    |    26 +
 .../bufr/tables/0/wmo/11/codetables/33048.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/33049.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/33050.table    |     8 +
 .../bufr/tables/0/wmo/11/codetables/33052.table    |    20 +
 .../bufr/tables/0/wmo/11/codetables/33053.table    |    20 +
 .../bufr/tables/0/wmo/11/codetables/33060.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/35000.table    |    11 +
 .../bufr/tables/0/wmo/11/codetables/35001.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/35030.table    |    10 +
 .../bufr/tables/0/wmo/11/codetables/35031.table    |    20 +
 .../bufr/tables/0/wmo/11/codetables/35032.table    |    10 +
 .../bufr/tables/0/wmo/11/codetables/35033.table    |    12 +
 .../bufr/tables/0/wmo/11/codetables/35034.table    |     7 +
 .../bufr/tables/0/wmo/11/codetables/40011.table    |     4 +
 .../bufr/tables/0/wmo/11/codetables/40012.table    |     3 +
 .../bufr/tables/0/wmo/11/codetables/40013.table    |     5 +
 .../bufr/tables/0/wmo/11/codetables/4059.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/8001.table     |     7 +
 .../bufr/tables/0/wmo/11/codetables/8002.table     |    13 +
 .../bufr/tables/0/wmo/11/codetables/8003.table     |     9 +
 .../bufr/tables/0/wmo/11/codetables/8004.table     |     6 +
 .../bufr/tables/0/wmo/11/codetables/8005.table     |     7 +
 .../bufr/tables/0/wmo/11/codetables/8006.table     |     8 +
 .../bufr/tables/0/wmo/11/codetables/8007.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/8008.table     |     8 +
 .../bufr/tables/0/wmo/11/codetables/8009.table     |    16 +
 .../bufr/tables/0/wmo/11/codetables/8010.table     |    13 +
 .../bufr/tables/0/wmo/11/codetables/8011.table     |    26 +
 .../bufr/tables/0/wmo/11/codetables/8012.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/8013.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/8014.table     |    10 +
 .../bufr/tables/0/wmo/11/codetables/8016.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/8017.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/8018.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/8021.table     |    32 +
 .../bufr/tables/0/wmo/11/codetables/8023.table     |    17 +
 .../bufr/tables/0/wmo/11/codetables/8024.table     |    15 +
 .../bufr/tables/0/wmo/11/codetables/8025.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/8026.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/8029.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/8033.table     |     6 +
 .../bufr/tables/0/wmo/11/codetables/8035.table     |     8 +
 .../bufr/tables/0/wmo/11/codetables/8036.table     |     8 +
 .../bufr/tables/0/wmo/11/codetables/8039.table     |     8 +
 .../bufr/tables/0/wmo/11/codetables/8040.table     |    43 +
 .../bufr/tables/0/wmo/11/codetables/8041.table     |     9 +
 .../bufr/tables/0/wmo/11/codetables/8042.table     |    13 +
 .../bufr/tables/0/wmo/11/codetables/8043.table     |    21 +
 .../bufr/tables/0/wmo/11/codetables/8050.table     |    11 +
 .../bufr/tables/0/wmo/11/codetables/8051.table     |     7 +
 .../bufr/tables/0/wmo/11/codetables/8052.table     |    26 +
 .../bufr/tables/0/wmo/11/codetables/8053.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/8054.table     |     3 +
 .../bufr/tables/0/wmo/11/codetables/8060.table     |     8 +
 .../bufr/tables/0/wmo/11/codetables/8065.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/8066.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/8070.table     |     6 +
 .../bufr/tables/0/wmo/11/codetables/8072.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/8074.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/8075.table     |     4 +
 .../bufr/tables/0/wmo/11/codetables/8076.table     |     3 +
 .../bufr/tables/0/wmo/11/codetables/8077.table     |     7 +
 .../bufr/tables/0/wmo/11/codetables/8079.table     |     9 +
 .../bufr/tables/0/wmo/11/codetables/8080.table     |     9 +
 .../bufr/tables/0/wmo/11/codetables/8081.table     |     5 +
 .../bufr/tables/0/wmo/11/codetables/8082.table     |     3 +
 .../bufr/tables/0/wmo/11/codetables/8083.table     |     9 +
 .../bufr/tables/0/wmo/11/codetables/8085.table     |     8 +
 definitions/bufr/tables/0/wmo/11/element.table     |  1297 +
 definitions/bufr/tables/0/wmo/11/sequence.def      |   678 +
 .../bufr/tables/0/wmo/12/codetables/1003.table     |     8 +
 .../bufr/tables/0/wmo/12/codetables/10063.table    |    10 +
 .../bufr/tables/0/wmo/12/codetables/10064.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/1007.table     |   132 +
 .../bufr/tables/0/wmo/12/codetables/1031.table     |   219 +
 .../bufr/tables/0/wmo/12/codetables/1032.table     |    41 +
 .../bufr/tables/0/wmo/12/codetables/1033.table     |   219 +
 .../bufr/tables/0/wmo/12/codetables/1035.table     |   219 +
 .../bufr/tables/0/wmo/12/codetables/1090.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/1092.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/11031.table    |     9 +
 .../bufr/tables/0/wmo/12/codetables/11037.table    |    30 +
 .../bufr/tables/0/wmo/12/codetables/11038.table    |    17 +
 .../bufr/tables/0/wmo/12/codetables/11039.table    |    16 +
 .../bufr/tables/0/wmo/12/codetables/13038.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/13039.table    |     3 +
 .../bufr/tables/0/wmo/12/codetables/13040.table    |     9 +
 .../bufr/tables/0/wmo/12/codetables/13041.table    |    10 +
 .../bufr/tables/0/wmo/12/codetables/13051.table    |     8 +
 .../bufr/tables/0/wmo/12/codetables/13056.table    |    10 +
 .../bufr/tables/0/wmo/12/codetables/13057.table    |    11 +
 .../bufr/tables/0/wmo/12/codetables/15025.table    |     2 +
 .../bufr/tables/0/wmo/12/codetables/19001.table    |     7 +
 .../bufr/tables/0/wmo/12/codetables/19008.table    |     5 +
 .../bufr/tables/0/wmo/12/codetables/19010.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/20003.table    |   250 +
 .../bufr/tables/0/wmo/12/codetables/20004.table    |    21 +
 .../bufr/tables/0/wmo/12/codetables/20005.table    |    21 +
 .../bufr/tables/0/wmo/12/codetables/20008.table    |    19 +
 .../bufr/tables/0/wmo/12/codetables/20009.table    |     6 +
 .../bufr/tables/0/wmo/12/codetables/2001.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/20011.table    |    11 +
 .../bufr/tables/0/wmo/12/codetables/20012.table    |    45 +
 .../bufr/tables/0/wmo/12/codetables/20017.table    |    11 +
 .../bufr/tables/0/wmo/12/codetables/20018.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/2002.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/20021.table    |    24 +
 .../bufr/tables/0/wmo/12/codetables/20022.table    |     7 +
 .../bufr/tables/0/wmo/12/codetables/20023.table    |    12 +
 .../bufr/tables/0/wmo/12/codetables/20024.table    |     7 +
 .../bufr/tables/0/wmo/12/codetables/20025.table    |    11 +
 .../bufr/tables/0/wmo/12/codetables/20026.table    |    14 +
 .../bufr/tables/0/wmo/12/codetables/20027.table    |     7 +
 .../bufr/tables/0/wmo/12/codetables/20029.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/2003.table     |    12 +
 .../bufr/tables/0/wmo/12/codetables/20032.table    |     6 +
 .../bufr/tables/0/wmo/12/codetables/20033.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/20034.table    |    12 +
 .../bufr/tables/0/wmo/12/codetables/20035.table    |    12 +
 .../bufr/tables/0/wmo/12/codetables/20036.table    |    12 +
 .../bufr/tables/0/wmo/12/codetables/20037.table    |    12 +
 .../bufr/tables/0/wmo/12/codetables/2004.table     |    11 +
 .../bufr/tables/0/wmo/12/codetables/20040.table    |     9 +
 .../bufr/tables/0/wmo/12/codetables/20041.table    |    11 +
 .../bufr/tables/0/wmo/12/codetables/20042.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/20045.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/20050.table    |    10 +
 .../bufr/tables/0/wmo/12/codetables/20055.table    |    11 +
 .../bufr/tables/0/wmo/12/codetables/20056.table    |     5 +
 .../bufr/tables/0/wmo/12/codetables/20062.table    |    21 +
 .../bufr/tables/0/wmo/12/codetables/20063.table    |     1 +
 .../bufr/tables/0/wmo/12/codetables/20071.table    |    11 +
 .../bufr/tables/0/wmo/12/codetables/20086.table    |     8 +
 .../bufr/tables/0/wmo/12/codetables/20090.table    |     7 +
 .../bufr/tables/0/wmo/12/codetables/20101.table    |    10 +
 .../bufr/tables/0/wmo/12/codetables/20102.table    |    11 +
 .../bufr/tables/0/wmo/12/codetables/2011.table     |    54 +
 .../bufr/tables/0/wmo/12/codetables/2012.table     |     1 +
 .../bufr/tables/0/wmo/12/codetables/2013.table     |     9 +
 .../bufr/tables/0/wmo/12/codetables/2014.table     |    50 +
 .../bufr/tables/0/wmo/12/codetables/2015.table     |     6 +
 .../bufr/tables/0/wmo/12/codetables/2016.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/2019.table     |   296 +
 .../bufr/tables/0/wmo/12/codetables/2020.table     |    24 +
 .../bufr/tables/0/wmo/12/codetables/2021.table     |     8 +
 .../bufr/tables/0/wmo/12/codetables/2022.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/2023.table     |    12 +
 .../bufr/tables/0/wmo/12/codetables/2024.table     |     3 +
 .../bufr/tables/0/wmo/12/codetables/2025.table     |    16 +
 .../bufr/tables/0/wmo/12/codetables/2030.table     |     7 +
 .../bufr/tables/0/wmo/12/codetables/2031.table     |    21 +
 .../bufr/tables/0/wmo/12/codetables/2032.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/2033.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/2034.table     |     7 +
 .../bufr/tables/0/wmo/12/codetables/2036.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/2037.table     |     7 +
 .../bufr/tables/0/wmo/12/codetables/2038.table     |    12 +
 .../bufr/tables/0/wmo/12/codetables/2039.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/2040.table     |     8 +
 .../bufr/tables/0/wmo/12/codetables/2041.table     |     6 +
 .../bufr/tables/0/wmo/12/codetables/2044.table     |     6 +
 .../bufr/tables/0/wmo/12/codetables/2045.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/2046.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/2048.table     |    12 +
 .../bufr/tables/0/wmo/12/codetables/2049.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/2050.table     |    19 +
 .../bufr/tables/0/wmo/12/codetables/2051.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/2052.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/2053.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/2054.table     |     6 +
 .../bufr/tables/0/wmo/12/codetables/2055.table     |     9 +
 .../bufr/tables/0/wmo/12/codetables/2056.table     |     6 +
 .../bufr/tables/0/wmo/12/codetables/2057.table     |     6 +
 .../bufr/tables/0/wmo/12/codetables/2058.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/2059.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/2060.table     |     7 +
 .../bufr/tables/0/wmo/12/codetables/2061.table     |     3 +
 .../bufr/tables/0/wmo/12/codetables/2062.table     |     7 +
 .../bufr/tables/0/wmo/12/codetables/2064.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/2066.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/2070.table     |    13 +
 .../bufr/tables/0/wmo/12/codetables/2080.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/2081.table     |     9 +
 .../bufr/tables/0/wmo/12/codetables/2083.table     |     6 +
 .../bufr/tables/0/wmo/12/codetables/2084.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/2095.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/2096.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/2097.table     |     8 +
 .../bufr/tables/0/wmo/12/codetables/2098.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/2101.table     |    10 +
 .../bufr/tables/0/wmo/12/codetables/2103.table     |     2 +
 .../bufr/tables/0/wmo/12/codetables/2104.table     |     7 +
 .../bufr/tables/0/wmo/12/codetables/21066.table    |    11 +
 .../bufr/tables/0/wmo/12/codetables/21067.table    |    12 +
 .../bufr/tables/0/wmo/12/codetables/21068.table    |     7 +
 .../bufr/tables/0/wmo/12/codetables/21069.table    |     9 +
 .../bufr/tables/0/wmo/12/codetables/21070.table    |    23 +
 .../bufr/tables/0/wmo/12/codetables/21072.table    |     3 +
 .../bufr/tables/0/wmo/12/codetables/21073.table    |     8 +
 .../bufr/tables/0/wmo/12/codetables/21076.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/21109.table    |     8 +
 .../bufr/tables/0/wmo/12/codetables/21115.table    |    11 +
 .../bufr/tables/0/wmo/12/codetables/21116.table    |    16 +
 .../bufr/tables/0/wmo/12/codetables/21119.table    |    14 +
 .../bufr/tables/0/wmo/12/codetables/21144.table    |     1 +
 .../bufr/tables/0/wmo/12/codetables/2115.table     |     7 +
 .../bufr/tables/0/wmo/12/codetables/21150.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/21155.table    |    16 +
 .../bufr/tables/0/wmo/12/codetables/21158.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/21159.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/21169.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/2119.table     |     8 +
 .../bufr/tables/0/wmo/12/codetables/2131.table     |     1 +
 .../bufr/tables/0/wmo/12/codetables/2143.table     |    21 +
 .../bufr/tables/0/wmo/12/codetables/2144.table     |     8 +
 .../bufr/tables/0/wmo/12/codetables/2145.table     |     9 +
 .../bufr/tables/0/wmo/12/codetables/2146.table     |    11 +
 .../bufr/tables/0/wmo/12/codetables/2148.table     |     6 +
 .../bufr/tables/0/wmo/12/codetables/2149.table     |    22 +
 .../bufr/tables/0/wmo/12/codetables/2150.table     |    55 +
 .../bufr/tables/0/wmo/12/codetables/2151.table     |     9 +
 .../bufr/tables/0/wmo/12/codetables/2152.table     |    11 +
 .../bufr/tables/0/wmo/12/codetables/2158.table     |     8 +
 .../bufr/tables/0/wmo/12/codetables/2159.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/2163.table     |    15 +
 .../bufr/tables/0/wmo/12/codetables/2164.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/2166.table     |     6 +
 .../bufr/tables/0/wmo/12/codetables/2167.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/2169.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/2172.table     |     3 +
 .../bufr/tables/0/wmo/12/codetables/2175.table     |     9 +
 .../bufr/tables/0/wmo/12/codetables/2176.table     |     6 +
 .../bufr/tables/0/wmo/12/codetables/2177.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/2178.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/2179.table     |     6 +
 .../bufr/tables/0/wmo/12/codetables/2180.table     |     8 +
 .../bufr/tables/0/wmo/12/codetables/2181.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/2182.table     |     7 +
 .../bufr/tables/0/wmo/12/codetables/2183.table     |     9 +
 .../bufr/tables/0/wmo/12/codetables/2184.table     |     8 +
 .../bufr/tables/0/wmo/12/codetables/2185.table     |     7 +
 .../bufr/tables/0/wmo/12/codetables/2186.table     |    23 +
 .../bufr/tables/0/wmo/12/codetables/2187.table     |    11 +
 .../bufr/tables/0/wmo/12/codetables/2188.table     |    10 +
 .../bufr/tables/0/wmo/12/codetables/2189.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/22056.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/22060.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/22061.table    |    11 +
 .../bufr/tables/0/wmo/12/codetables/22067.table    |     1 +
 .../bufr/tables/0/wmo/12/codetables/22068.table    |     1 +
 .../bufr/tables/0/wmo/12/codetables/22120.table    |    13 +
 .../bufr/tables/0/wmo/12/codetables/22121.table    |     9 +
 .../bufr/tables/0/wmo/12/codetables/22122.table    |     8 +
 .../bufr/tables/0/wmo/12/codetables/22123.table    |     9 +
 .../bufr/tables/0/wmo/12/codetables/23001.table    |     5 +
 .../bufr/tables/0/wmo/12/codetables/23002.table    |    16 +
 .../bufr/tables/0/wmo/12/codetables/23003.table    |     8 +
 .../bufr/tables/0/wmo/12/codetables/23004.table    |     6 +
 .../bufr/tables/0/wmo/12/codetables/23005.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/23006.table    |     8 +
 .../bufr/tables/0/wmo/12/codetables/23007.table    |     5 +
 .../bufr/tables/0/wmo/12/codetables/23008.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/23009.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/23016.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/23018.table    |     6 +
 .../bufr/tables/0/wmo/12/codetables/23031.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/23032.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/24003.table    |     5 +
 .../bufr/tables/0/wmo/12/codetables/25004.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/25005.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/25006.table    |     5 +
 .../bufr/tables/0/wmo/12/codetables/25009.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/25010.table    |     8 +
 .../bufr/tables/0/wmo/12/codetables/25011.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/25012.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/25013.table    |     1 +
 .../bufr/tables/0/wmo/12/codetables/25015.table    |     1 +
 .../bufr/tables/0/wmo/12/codetables/25017.table    |     1 +
 .../bufr/tables/0/wmo/12/codetables/25020.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/25021.table    |     5 +
 .../bufr/tables/0/wmo/12/codetables/25030.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/25032.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/25033.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/25034.table    |     3 +
 .../bufr/tables/0/wmo/12/codetables/25036.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/25040.table    |    10 +
 .../bufr/tables/0/wmo/12/codetables/25041.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/25042.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/25045.table    |    20 +
 .../bufr/tables/0/wmo/12/codetables/25046.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/25047.table    |     3 +
 .../bufr/tables/0/wmo/12/codetables/25048.table    |    15 +
 .../bufr/tables/0/wmo/12/codetables/25049.table    |     5 +
 .../bufr/tables/0/wmo/12/codetables/25051.table    |     6 +
 .../bufr/tables/0/wmo/12/codetables/25053.table    |     6 +
 .../bufr/tables/0/wmo/12/codetables/25069.table    |     7 +
 .../bufr/tables/0/wmo/12/codetables/25086.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/25093.table    |     3 +
 .../bufr/tables/0/wmo/12/codetables/25095.table    |     1 +
 .../bufr/tables/0/wmo/12/codetables/25096.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/25097.table    |    11 +
 .../bufr/tables/0/wmo/12/codetables/25098.table    |     8 +
 .../bufr/tables/0/wmo/12/codetables/25099.table    |     6 +
 .../bufr/tables/0/wmo/12/codetables/25110.table    |     6 +
 .../bufr/tables/0/wmo/12/codetables/25120.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/25122.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/25123.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/25124.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/26010.table    |    25 +
 .../bufr/tables/0/wmo/12/codetables/29001.table    |     6 +
 .../bufr/tables/0/wmo/12/codetables/29002.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/30031.table    |    13 +
 .../bufr/tables/0/wmo/12/codetables/30032.table    |     9 +
 .../bufr/tables/0/wmo/12/codetables/31021.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/31031.table    |     1 +
 .../bufr/tables/0/wmo/12/codetables/33002.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/33003.table    |     5 +
 .../bufr/tables/0/wmo/12/codetables/33005.table    |    23 +
 .../bufr/tables/0/wmo/12/codetables/33006.table    |     5 +
 .../bufr/tables/0/wmo/12/codetables/33015.table    |    16 +
 .../bufr/tables/0/wmo/12/codetables/33020.table    |     8 +
 .../bufr/tables/0/wmo/12/codetables/33021.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/33022.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/33023.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/33024.table    |    10 +
 .../bufr/tables/0/wmo/12/codetables/33025.table    |     5 +
 .../bufr/tables/0/wmo/12/codetables/33026.table    |    10 +
 .../bufr/tables/0/wmo/12/codetables/33027.table    |     5 +
 .../bufr/tables/0/wmo/12/codetables/33028.table    |     6 +
 .../bufr/tables/0/wmo/12/codetables/33030.table    |     7 +
 .../bufr/tables/0/wmo/12/codetables/33031.table    |    21 +
 .../bufr/tables/0/wmo/12/codetables/33032.table    |     6 +
 .../bufr/tables/0/wmo/12/codetables/33033.table    |    23 +
 .../bufr/tables/0/wmo/12/codetables/33035.table    |    15 +
 .../bufr/tables/0/wmo/12/codetables/33037.table    |    19 +
 .../bufr/tables/0/wmo/12/codetables/33038.table    |     9 +
 .../bufr/tables/0/wmo/12/codetables/33039.table    |     9 +
 .../bufr/tables/0/wmo/12/codetables/33041.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/33042.table    |     5 +
 .../bufr/tables/0/wmo/12/codetables/33043.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/33044.table    |    14 +
 .../bufr/tables/0/wmo/12/codetables/33047.table    |    26 +
 .../bufr/tables/0/wmo/12/codetables/33048.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/33049.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/33050.table    |     8 +
 .../bufr/tables/0/wmo/12/codetables/33052.table    |    20 +
 .../bufr/tables/0/wmo/12/codetables/33053.table    |    20 +
 .../bufr/tables/0/wmo/12/codetables/33060.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/35000.table    |    11 +
 .../bufr/tables/0/wmo/12/codetables/35001.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/35030.table    |    10 +
 .../bufr/tables/0/wmo/12/codetables/35031.table    |    20 +
 .../bufr/tables/0/wmo/12/codetables/35032.table    |    10 +
 .../bufr/tables/0/wmo/12/codetables/35033.table    |    12 +
 .../bufr/tables/0/wmo/12/codetables/35034.table    |     7 +
 .../bufr/tables/0/wmo/12/codetables/40011.table    |     4 +
 .../bufr/tables/0/wmo/12/codetables/40012.table    |     3 +
 .../bufr/tables/0/wmo/12/codetables/40013.table    |     5 +
 .../bufr/tables/0/wmo/12/codetables/4059.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/8001.table     |     7 +
 .../bufr/tables/0/wmo/12/codetables/8002.table     |    13 +
 .../bufr/tables/0/wmo/12/codetables/8003.table     |     9 +
 .../bufr/tables/0/wmo/12/codetables/8004.table     |     6 +
 .../bufr/tables/0/wmo/12/codetables/8005.table     |     7 +
 .../bufr/tables/0/wmo/12/codetables/8006.table     |     8 +
 .../bufr/tables/0/wmo/12/codetables/8007.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/8008.table     |     8 +
 .../bufr/tables/0/wmo/12/codetables/8009.table     |    16 +
 .../bufr/tables/0/wmo/12/codetables/8010.table     |    13 +
 .../bufr/tables/0/wmo/12/codetables/8011.table     |    26 +
 .../bufr/tables/0/wmo/12/codetables/8012.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/8013.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/8014.table     |    10 +
 .../bufr/tables/0/wmo/12/codetables/8016.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/8017.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/8018.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/8021.table     |    32 +
 .../bufr/tables/0/wmo/12/codetables/8023.table     |    17 +
 .../bufr/tables/0/wmo/12/codetables/8024.table     |    15 +
 .../bufr/tables/0/wmo/12/codetables/8025.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/8026.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/8029.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/8033.table     |     6 +
 .../bufr/tables/0/wmo/12/codetables/8035.table     |     8 +
 .../bufr/tables/0/wmo/12/codetables/8036.table     |     8 +
 .../bufr/tables/0/wmo/12/codetables/8039.table     |     8 +
 .../bufr/tables/0/wmo/12/codetables/8040.table     |    43 +
 .../bufr/tables/0/wmo/12/codetables/8041.table     |     9 +
 .../bufr/tables/0/wmo/12/codetables/8042.table     |    13 +
 .../bufr/tables/0/wmo/12/codetables/8043.table     |    21 +
 .../bufr/tables/0/wmo/12/codetables/8050.table     |    11 +
 .../bufr/tables/0/wmo/12/codetables/8051.table     |     7 +
 .../bufr/tables/0/wmo/12/codetables/8052.table     |    26 +
 .../bufr/tables/0/wmo/12/codetables/8053.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/8054.table     |     3 +
 .../bufr/tables/0/wmo/12/codetables/8060.table     |     8 +
 .../bufr/tables/0/wmo/12/codetables/8065.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/8066.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/8070.table     |     6 +
 .../bufr/tables/0/wmo/12/codetables/8072.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/8074.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/8075.table     |     4 +
 .../bufr/tables/0/wmo/12/codetables/8076.table     |     3 +
 .../bufr/tables/0/wmo/12/codetables/8077.table     |     7 +
 .../bufr/tables/0/wmo/12/codetables/8079.table     |     9 +
 .../bufr/tables/0/wmo/12/codetables/8080.table     |     9 +
 .../bufr/tables/0/wmo/12/codetables/8081.table     |     5 +
 .../bufr/tables/0/wmo/12/codetables/8082.table     |     3 +
 .../bufr/tables/0/wmo/12/codetables/8083.table     |     9 +
 .../bufr/tables/0/wmo/12/codetables/8085.table     |     8 +
 definitions/bufr/tables/0/wmo/12/element.table     |  1297 +
 definitions/bufr/tables/0/wmo/12/sequence.def      |   678 +
 definitions/bufr/tables/0/wmo/13/element.table     |    12 +-
 definitions/bufr/tables/0/wmo/14/element.table     |    14 +-
 definitions/bufr/tables/0/wmo/15/element.table     |    14 +-
 definitions/bufr/tables/0/wmo/16/element.table     |    14 +-
 definitions/bufr/tables/0/wmo/17/element.table     |    14 +-
 definitions/bufr/tables/0/wmo/18/element.table     |    16 +-
 definitions/bufr/tables/0/wmo/19/element.table     |    16 +-
 definitions/bufr/tables/0/wmo/20/element.table     |    16 +-
 definitions/bufr/tables/0/wmo/21/element.table     |    16 +-
 definitions/bufr/tables/0/wmo/22/element.table     |    16 +-
 definitions/bufr/tables/0/wmo/23/element.table     |    16 +-
 .../bufr/tables/0/wmo/24/codetables/1003.table     |     8 +
 .../bufr/tables/0/wmo/24/codetables/10063.table    |    10 +
 .../bufr/tables/0/wmo/24/codetables/10064.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/1007.table     |   187 +
 .../bufr/tables/0/wmo/24/codetables/1024.table     |     9 +
 .../bufr/tables/0/wmo/24/codetables/1028.table     |     7 +
 .../bufr/tables/0/wmo/24/codetables/1029.table     |     8 +
 .../bufr/tables/0/wmo/24/codetables/1033.table     |   234 +
 .../bufr/tables/0/wmo/24/codetables/1034.table     |   100 +
 .../bufr/tables/0/wmo/24/codetables/1036.table     |    38 +
 .../bufr/tables/0/wmo/24/codetables/1038.table     |     7 +
 .../bufr/tables/0/wmo/24/codetables/1052.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/1090.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/1092.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/1101.table     |   202 +
 .../bufr/tables/0/wmo/24/codetables/11030.table    |    25 +
 .../bufr/tables/0/wmo/24/codetables/11031.table    |    16 +
 .../bufr/tables/0/wmo/24/codetables/11037.table    |    30 +
 .../bufr/tables/0/wmo/24/codetables/11038.table    |    17 +
 .../bufr/tables/0/wmo/24/codetables/11039.table    |    17 +
 .../bufr/tables/0/wmo/24/codetables/13038.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/13039.table    |     3 +
 .../bufr/tables/0/wmo/24/codetables/13040.table    |     8 +
 .../bufr/tables/0/wmo/24/codetables/13041.table    |    10 +
 .../bufr/tables/0/wmo/24/codetables/13051.table    |     8 +
 .../bufr/tables/0/wmo/24/codetables/13056.table    |    11 +
 .../bufr/tables/0/wmo/24/codetables/13057.table    |    11 +
 .../bufr/tables/0/wmo/24/codetables/15025.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/19001.table    |     7 +
 .../bufr/tables/0/wmo/24/codetables/19008.table    |     5 +
 .../bufr/tables/0/wmo/24/codetables/19010.table    |     3 +
 .../bufr/tables/0/wmo/24/codetables/19100.table    |     9 +
 .../bufr/tables/0/wmo/24/codetables/19101.table    |    10 +
 .../bufr/tables/0/wmo/24/codetables/19102.table    |     8 +
 .../bufr/tables/0/wmo/24/codetables/19103.table    |    12 +
 .../bufr/tables/0/wmo/24/codetables/19104.table    |    12 +
 .../bufr/tables/0/wmo/24/codetables/19105.table    |    10 +
 .../bufr/tables/0/wmo/24/codetables/19107.table    |    11 +
 .../bufr/tables/0/wmo/24/codetables/19108.table    |     8 +
 .../bufr/tables/0/wmo/24/codetables/19109.table    |    12 +
 .../bufr/tables/0/wmo/24/codetables/19110.table    |     8 +
 .../bufr/tables/0/wmo/24/codetables/19113.table    |     8 +
 .../bufr/tables/0/wmo/24/codetables/19117.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/19119.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/20003.table    |   266 +
 .../bufr/tables/0/wmo/24/codetables/20004.table    |    21 +
 .../bufr/tables/0/wmo/24/codetables/20005.table    |    21 +
 .../bufr/tables/0/wmo/24/codetables/20006.table    |     5 +
 .../bufr/tables/0/wmo/24/codetables/20008.table    |    19 +
 .../bufr/tables/0/wmo/24/codetables/20009.table    |     6 +
 .../bufr/tables/0/wmo/24/codetables/2001.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/20011.table    |    16 +
 .../bufr/tables/0/wmo/24/codetables/20012.table    |    48 +
 .../bufr/tables/0/wmo/24/codetables/20017.table    |    11 +
 .../bufr/tables/0/wmo/24/codetables/20018.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/2002.table     |     3 +
 .../bufr/tables/0/wmo/24/codetables/20021.table    |    23 +
 .../bufr/tables/0/wmo/24/codetables/20022.table    |     7 +
 .../bufr/tables/0/wmo/24/codetables/20023.table    |    14 +
 .../bufr/tables/0/wmo/24/codetables/20024.table    |     8 +
 .../bufr/tables/0/wmo/24/codetables/20025.table    |    13 +
 .../bufr/tables/0/wmo/24/codetables/20026.table    |    16 +
 .../bufr/tables/0/wmo/24/codetables/20027.table    |     8 +
 .../bufr/tables/0/wmo/24/codetables/20028.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/20029.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/2003.table     |    12 +
 .../bufr/tables/0/wmo/24/codetables/20032.table    |     6 +
 .../bufr/tables/0/wmo/24/codetables/20033.table    |     3 +
 .../bufr/tables/0/wmo/24/codetables/20034.table    |    12 +
 .../bufr/tables/0/wmo/24/codetables/20035.table    |    12 +
 .../bufr/tables/0/wmo/24/codetables/20036.table    |    12 +
 .../bufr/tables/0/wmo/24/codetables/20037.table    |    12 +
 .../bufr/tables/0/wmo/24/codetables/2004.table     |    11 +
 .../bufr/tables/0/wmo/24/codetables/20040.table    |     9 +
 .../bufr/tables/0/wmo/24/codetables/20041.table    |    14 +
 .../bufr/tables/0/wmo/24/codetables/20042.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/20045.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/20048.table    |     5 +
 .../bufr/tables/0/wmo/24/codetables/20050.table    |    10 +
 .../bufr/tables/0/wmo/24/codetables/20055.table    |    12 +
 .../bufr/tables/0/wmo/24/codetables/20056.table    |     6 +
 .../bufr/tables/0/wmo/24/codetables/20062.table    |    21 +
 .../bufr/tables/0/wmo/24/codetables/20063.table    |    71 +
 .../bufr/tables/0/wmo/24/codetables/2007.table     |    11 +
 .../bufr/tables/0/wmo/24/codetables/20071.table    |    11 +
 .../bufr/tables/0/wmo/24/codetables/20085.table    |     3 +
 .../bufr/tables/0/wmo/24/codetables/20086.table    |    11 +
 .../bufr/tables/0/wmo/24/codetables/20087.table    |     6 +
 .../bufr/tables/0/wmo/24/codetables/20089.table    |    11 +
 .../bufr/tables/0/wmo/24/codetables/20090.table    |     7 +
 .../bufr/tables/0/wmo/24/codetables/20101.table    |    11 +
 .../bufr/tables/0/wmo/24/codetables/20102.table    |    11 +
 .../bufr/tables/0/wmo/24/codetables/20103.table    |    11 +
 .../bufr/tables/0/wmo/24/codetables/20104.table    |    11 +
 .../bufr/tables/0/wmo/24/codetables/20105.table    |    12 +
 .../bufr/tables/0/wmo/24/codetables/20106.table    |     7 +
 .../bufr/tables/0/wmo/24/codetables/20107.table    |    11 +
 .../bufr/tables/0/wmo/24/codetables/20108.table    |     9 +
 .../bufr/tables/0/wmo/24/codetables/2011.table     |   100 +
 .../bufr/tables/0/wmo/24/codetables/20119.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/20124.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/2013.table     |     9 +
 .../bufr/tables/0/wmo/24/codetables/20136.table    |    44 +
 .../bufr/tables/0/wmo/24/codetables/20137.table    |    11 +
 .../bufr/tables/0/wmo/24/codetables/2014.table     |    51 +
 .../bufr/tables/0/wmo/24/codetables/2015.table     |     7 +
 .../bufr/tables/0/wmo/24/codetables/2016.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/2017.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/2019.table     |   326 +
 .../bufr/tables/0/wmo/24/codetables/2020.table     |    30 +
 .../bufr/tables/0/wmo/24/codetables/2021.table     |     8 +
 .../bufr/tables/0/wmo/24/codetables/2022.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/2023.table     |    11 +
 .../bufr/tables/0/wmo/24/codetables/2024.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/2025.table     |    16 +
 .../bufr/tables/0/wmo/24/codetables/2030.table     |     8 +
 .../bufr/tables/0/wmo/24/codetables/2031.table     |    21 +
 .../bufr/tables/0/wmo/24/codetables/2032.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/2033.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/2034.table     |     7 +
 .../bufr/tables/0/wmo/24/codetables/2036.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/2037.table     |     8 +
 .../bufr/tables/0/wmo/24/codetables/2038.table     |    16 +
 .../bufr/tables/0/wmo/24/codetables/2039.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/2040.table     |     8 +
 .../bufr/tables/0/wmo/24/codetables/2041.table     |     6 +
 .../bufr/tables/0/wmo/24/codetables/2042.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/2044.table     |     6 +
 .../bufr/tables/0/wmo/24/codetables/2045.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/2046.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/2047.table     |     9 +
 .../bufr/tables/0/wmo/24/codetables/2048.table     |    14 +
 .../bufr/tables/0/wmo/24/codetables/2049.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/2050.table     |    19 +
 .../bufr/tables/0/wmo/24/codetables/2051.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/2052.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/2053.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/2054.table     |     6 +
 .../bufr/tables/0/wmo/24/codetables/2055.table     |    10 +
 .../bufr/tables/0/wmo/24/codetables/2056.table     |     6 +
 .../bufr/tables/0/wmo/24/codetables/2057.table     |     7 +
 .../bufr/tables/0/wmo/24/codetables/2058.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/2059.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/2060.table     |     7 +
 .../bufr/tables/0/wmo/24/codetables/2061.table     |     3 +
 .../bufr/tables/0/wmo/24/codetables/2062.table     |     7 +
 .../bufr/tables/0/wmo/24/codetables/2064.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/2066.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/2070.table     |    13 +
 .../bufr/tables/0/wmo/24/codetables/2080.table     |     7 +
 .../bufr/tables/0/wmo/24/codetables/2081.table     |     9 +
 .../bufr/tables/0/wmo/24/codetables/2083.table     |     6 +
 .../bufr/tables/0/wmo/24/codetables/2084.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/2095.table     |     7 +
 .../bufr/tables/0/wmo/24/codetables/2096.table     |     8 +
 .../bufr/tables/0/wmo/24/codetables/2097.table     |    11 +
 .../bufr/tables/0/wmo/24/codetables/2099.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/2101.table     |    10 +
 .../bufr/tables/0/wmo/24/codetables/2103.table     |     1 +
 .../bufr/tables/0/wmo/24/codetables/2104.table     |     9 +
 .../bufr/tables/0/wmo/24/codetables/21066.table    |    11 +
 .../bufr/tables/0/wmo/24/codetables/21067.table    |    12 +
 .../bufr/tables/0/wmo/24/codetables/21068.table    |     7 +
 .../bufr/tables/0/wmo/24/codetables/21069.table    |     9 +
 .../bufr/tables/0/wmo/24/codetables/21070.table    |    22 +
 .../bufr/tables/0/wmo/24/codetables/21072.table    |     3 +
 .../bufr/tables/0/wmo/24/codetables/21073.table    |     8 +
 .../bufr/tables/0/wmo/24/codetables/21076.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/21109.table    |     7 +
 .../bufr/tables/0/wmo/24/codetables/21115.table    |    10 +
 .../bufr/tables/0/wmo/24/codetables/21116.table    |    16 +
 .../bufr/tables/0/wmo/24/codetables/21119.table    |    14 +
 .../bufr/tables/0/wmo/24/codetables/21144.table    |     1 +
 .../bufr/tables/0/wmo/24/codetables/21148.table    |     2 +
 .../bufr/tables/0/wmo/24/codetables/2115.table     |     7 +
 .../bufr/tables/0/wmo/24/codetables/21150.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/21155.table    |    16 +
 .../bufr/tables/0/wmo/24/codetables/21158.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/21159.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/21169.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/2119.table     |     8 +
 .../bufr/tables/0/wmo/24/codetables/2131.table     |     1 +
 .../bufr/tables/0/wmo/24/codetables/2137.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/2138.table     |     3 +
 .../bufr/tables/0/wmo/24/codetables/2139.table     |     3 +
 .../bufr/tables/0/wmo/24/codetables/2143.table     |    21 +
 .../bufr/tables/0/wmo/24/codetables/2144.table     |     8 +
 .../bufr/tables/0/wmo/24/codetables/2145.table     |     9 +
 .../bufr/tables/0/wmo/24/codetables/2146.table     |    11 +
 .../bufr/tables/0/wmo/24/codetables/2147.table     |    11 +
 .../bufr/tables/0/wmo/24/codetables/2148.table     |    12 +
 .../bufr/tables/0/wmo/24/codetables/2149.table     |    38 +
 .../bufr/tables/0/wmo/24/codetables/2150.table     |    55 +
 .../bufr/tables/0/wmo/24/codetables/2151.table     |    11 +
 .../bufr/tables/0/wmo/24/codetables/2152.table     |    13 +
 .../bufr/tables/0/wmo/24/codetables/2158.table     |     8 +
 .../bufr/tables/0/wmo/24/codetables/2159.table     |     7 +
 .../bufr/tables/0/wmo/24/codetables/2160.table     |    11 +
 .../bufr/tables/0/wmo/24/codetables/2163.table     |    16 +
 .../bufr/tables/0/wmo/24/codetables/2164.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/2165.table     |     7 +
 .../bufr/tables/0/wmo/24/codetables/2166.table     |     6 +
 .../bufr/tables/0/wmo/24/codetables/2167.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/2169.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/2170.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/2172.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/2175.table     |     9 +
 .../bufr/tables/0/wmo/24/codetables/2176.table     |     6 +
 .../bufr/tables/0/wmo/24/codetables/2177.table     |     6 +
 .../bufr/tables/0/wmo/24/codetables/2178.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/2179.table     |     6 +
 .../bufr/tables/0/wmo/24/codetables/2180.table     |     8 +
 .../bufr/tables/0/wmo/24/codetables/2181.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/2182.table     |     7 +
 .../bufr/tables/0/wmo/24/codetables/2183.table     |     9 +
 .../bufr/tables/0/wmo/24/codetables/2184.table     |     9 +
 .../bufr/tables/0/wmo/24/codetables/2185.table     |     7 +
 .../bufr/tables/0/wmo/24/codetables/2186.table     |    23 +
 .../bufr/tables/0/wmo/24/codetables/2187.table     |    11 +
 .../bufr/tables/0/wmo/24/codetables/2188.table     |    10 +
 .../bufr/tables/0/wmo/24/codetables/2189.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/2191.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/22056.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/22060.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/22061.table    |    11 +
 .../bufr/tables/0/wmo/24/codetables/22067.table    |   101 +
 .../bufr/tables/0/wmo/24/codetables/22068.table    |    43 +
 .../bufr/tables/0/wmo/24/codetables/22120.table    |    13 +
 .../bufr/tables/0/wmo/24/codetables/22121.table    |     9 +
 .../bufr/tables/0/wmo/24/codetables/22122.table    |     8 +
 .../bufr/tables/0/wmo/24/codetables/22123.table    |     9 +
 .../bufr/tables/0/wmo/24/codetables/22178.table    |    12 +
 .../bufr/tables/0/wmo/24/codetables/23001.table    |     5 +
 .../bufr/tables/0/wmo/24/codetables/23002.table    |    16 +
 .../bufr/tables/0/wmo/24/codetables/23003.table    |     8 +
 .../bufr/tables/0/wmo/24/codetables/23004.table    |     6 +
 .../bufr/tables/0/wmo/24/codetables/23005.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/23006.table    |     8 +
 .../bufr/tables/0/wmo/24/codetables/23007.table    |     5 +
 .../bufr/tables/0/wmo/24/codetables/23008.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/23009.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/23016.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/23018.table    |     6 +
 .../bufr/tables/0/wmo/24/codetables/23031.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/23032.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/24003.table    |     5 +
 .../bufr/tables/0/wmo/24/codetables/25004.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/25005.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/25006.table    |     5 +
 .../bufr/tables/0/wmo/24/codetables/25009.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/25010.table    |     8 +
 .../bufr/tables/0/wmo/24/codetables/25011.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/25012.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/25013.table    |     1 +
 .../bufr/tables/0/wmo/24/codetables/25015.table    |     1 +
 .../bufr/tables/0/wmo/24/codetables/25017.table    |     1 +
 .../bufr/tables/0/wmo/24/codetables/25020.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/25021.table    |     5 +
 .../bufr/tables/0/wmo/24/codetables/25022.table    |     8 +
 .../bufr/tables/0/wmo/24/codetables/25023.table    |     8 +
 .../bufr/tables/0/wmo/24/codetables/25024.table    |    13 +
 .../bufr/tables/0/wmo/24/codetables/25029.table    |     5 +
 .../bufr/tables/0/wmo/24/codetables/25030.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/25031.table    |     6 +
 .../bufr/tables/0/wmo/24/codetables/25032.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/25033.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/25034.table    |     3 +
 .../bufr/tables/0/wmo/24/codetables/25035.table    |     8 +
 .../bufr/tables/0/wmo/24/codetables/25036.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/25040.table    |    10 +
 .../bufr/tables/0/wmo/24/codetables/25041.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/25042.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/25053.table    |     6 +
 .../bufr/tables/0/wmo/24/codetables/25063.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/25069.table    |     7 +
 .../bufr/tables/0/wmo/24/codetables/25086.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/25090.table    |    11 +
 .../bufr/tables/0/wmo/24/codetables/25093.table    |     3 +
 .../bufr/tables/0/wmo/24/codetables/25095.table    |     1 +
 .../bufr/tables/0/wmo/24/codetables/25096.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/25097.table    |    11 +
 .../bufr/tables/0/wmo/24/codetables/25098.table    |     8 +
 .../bufr/tables/0/wmo/24/codetables/25099.table    |     6 +
 .../bufr/tables/0/wmo/24/codetables/25110.table    |     6 +
 .../bufr/tables/0/wmo/24/codetables/25112.table    |     5 +
 .../bufr/tables/0/wmo/24/codetables/25113.table    |     3 +
 .../bufr/tables/0/wmo/24/codetables/25120.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/25122.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/25123.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/25124.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/25150.table    |     3 +
 .../bufr/tables/0/wmo/24/codetables/25174.table    |    13 +
 .../bufr/tables/0/wmo/24/codetables/25181.table    |     3 +
 .../bufr/tables/0/wmo/24/codetables/25182.table    |     3 +
 .../bufr/tables/0/wmo/24/codetables/25184.table    |     3 +
 .../bufr/tables/0/wmo/24/codetables/26010.table    |    25 +
 .../bufr/tables/0/wmo/24/codetables/29001.table    |     8 +
 .../bufr/tables/0/wmo/24/codetables/29002.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/30031.table    |    13 +
 .../bufr/tables/0/wmo/24/codetables/30032.table    |     9 +
 .../bufr/tables/0/wmo/24/codetables/3010.table     |    12 +
 .../bufr/tables/0/wmo/24/codetables/3011.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/3012.table     |     3 +
 .../bufr/tables/0/wmo/24/codetables/31021.table    |     8 +
 .../bufr/tables/0/wmo/24/codetables/31031.table    |     1 +
 .../bufr/tables/0/wmo/24/codetables/33002.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/33003.table    |     5 +
 .../bufr/tables/0/wmo/24/codetables/33005.table    |    23 +
 .../bufr/tables/0/wmo/24/codetables/33006.table    |     5 +
 .../bufr/tables/0/wmo/24/codetables/33015.table    |    16 +
 .../bufr/tables/0/wmo/24/codetables/33020.table    |     8 +
 .../bufr/tables/0/wmo/24/codetables/33021.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/33022.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/33023.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/33024.table    |    10 +
 .../bufr/tables/0/wmo/24/codetables/33025.table    |     5 +
 .../bufr/tables/0/wmo/24/codetables/33026.table    |    17 +
 .../bufr/tables/0/wmo/24/codetables/33027.table    |     6 +
 .../bufr/tables/0/wmo/24/codetables/33028.table    |     5 +
 .../bufr/tables/0/wmo/24/codetables/33030.table    |     7 +
 .../bufr/tables/0/wmo/24/codetables/33031.table    |    21 +
 .../bufr/tables/0/wmo/24/codetables/33032.table    |     7 +
 .../bufr/tables/0/wmo/24/codetables/33033.table    |     3 +
 .../bufr/tables/0/wmo/24/codetables/33035.table    |    10 +
 .../bufr/tables/0/wmo/24/codetables/33037.table    |    19 +
 .../bufr/tables/0/wmo/24/codetables/33038.table    |     9 +
 .../bufr/tables/0/wmo/24/codetables/33039.table    |     9 +
 .../bufr/tables/0/wmo/24/codetables/33041.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/33042.table    |     5 +
 .../bufr/tables/0/wmo/24/codetables/33043.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/33044.table    |    14 +
 .../bufr/tables/0/wmo/24/codetables/33047.table    |    27 +
 .../bufr/tables/0/wmo/24/codetables/33048.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/33049.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/33050.table    |     9 +
 .../bufr/tables/0/wmo/24/codetables/33060.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/33070.table    |    14 +
 .../bufr/tables/0/wmo/24/codetables/33071.table    |    10 +
 .../bufr/tables/0/wmo/24/codetables/33072.table    |    18 +
 .../bufr/tables/0/wmo/24/codetables/33075.table    |     5 +
 .../bufr/tables/0/wmo/24/codetables/33076.table    |     2 +
 .../bufr/tables/0/wmo/24/codetables/33077.table    |    12 +
 .../bufr/tables/0/wmo/24/codetables/33078.table    |     5 +
 .../bufr/tables/0/wmo/24/codetables/33079.table    |    10 +
 .../bufr/tables/0/wmo/24/codetables/33080.table    |    13 +
 .../bufr/tables/0/wmo/24/codetables/33081.table    |     9 +
 .../bufr/tables/0/wmo/24/codetables/33082.table    |    10 +
 .../bufr/tables/0/wmo/24/codetables/33083.table    |    10 +
 .../bufr/tables/0/wmo/24/codetables/33084.table    |    10 +
 .../bufr/tables/0/wmo/24/codetables/33085.table    |    14 +
 .../bufr/tables/0/wmo/24/codetables/33086.table    |     5 +
 .../bufr/tables/0/wmo/24/codetables/33087.table    |    10 +
 .../bufr/tables/0/wmo/24/codetables/33088.table    |    12 +
 .../bufr/tables/0/wmo/24/codetables/35000.table    |     1 +
 .../bufr/tables/0/wmo/24/codetables/35001.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/35030.table    |    10 +
 .../bufr/tables/0/wmo/24/codetables/35031.table    |    20 +
 .../bufr/tables/0/wmo/24/codetables/35032.table    |    10 +
 .../bufr/tables/0/wmo/24/codetables/35033.table    |    12 +
 .../bufr/tables/0/wmo/24/codetables/35034.table    |     7 +
 .../bufr/tables/0/wmo/24/codetables/35035.table    |    16 +
 .../bufr/tables/0/wmo/24/codetables/40005.table    |     5 +
 .../bufr/tables/0/wmo/24/codetables/40006.table    |     8 +
 .../bufr/tables/0/wmo/24/codetables/40011.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/40012.table    |     3 +
 .../bufr/tables/0/wmo/24/codetables/40013.table    |     5 +
 .../bufr/tables/0/wmo/24/codetables/40020.table    |    16 +
 .../bufr/tables/0/wmo/24/codetables/40023.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/40024.table    |     5 +
 .../bufr/tables/0/wmo/24/codetables/40025.table    |     4 +
 .../bufr/tables/0/wmo/24/codetables/4059.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/4080.table     |     6 +
 .../bufr/tables/0/wmo/24/codetables/8001.table     |     6 +
 .../bufr/tables/0/wmo/24/codetables/8002.table     |    19 +
 .../bufr/tables/0/wmo/24/codetables/8003.table     |    12 +
 .../bufr/tables/0/wmo/24/codetables/8004.table     |     6 +
 .../bufr/tables/0/wmo/24/codetables/8005.table     |     7 +
 .../bufr/tables/0/wmo/24/codetables/8006.table     |     8 +
 .../bufr/tables/0/wmo/24/codetables/8007.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/8008.table     |     8 +
 .../bufr/tables/0/wmo/24/codetables/8009.table     |    16 +
 .../bufr/tables/0/wmo/24/codetables/8010.table     |    13 +
 .../bufr/tables/0/wmo/24/codetables/8011.table     |    27 +
 .../bufr/tables/0/wmo/24/codetables/8012.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/8013.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/8014.table     |    10 +
 .../bufr/tables/0/wmo/24/codetables/8015.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/8016.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/8017.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/8018.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/8019.table     |     8 +
 .../bufr/tables/0/wmo/24/codetables/8021.table     |    32 +
 .../bufr/tables/0/wmo/24/codetables/8023.table     |    14 +
 .../bufr/tables/0/wmo/24/codetables/8024.table     |    12 +
 .../bufr/tables/0/wmo/24/codetables/8025.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/8026.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/8029.table     |    16 +
 .../bufr/tables/0/wmo/24/codetables/8032.table     |     7 +
 .../bufr/tables/0/wmo/24/codetables/8033.table     |     6 +
 .../bufr/tables/0/wmo/24/codetables/8035.table     |     8 +
 .../bufr/tables/0/wmo/24/codetables/8036.table     |     8 +
 .../bufr/tables/0/wmo/24/codetables/8039.table     |     8 +
 .../bufr/tables/0/wmo/24/codetables/8040.table     |    47 +
 .../bufr/tables/0/wmo/24/codetables/8041.table     |    15 +
 .../bufr/tables/0/wmo/24/codetables/8042.table     |    17 +
 .../bufr/tables/0/wmo/24/codetables/8043.table     |    17 +
 .../bufr/tables/0/wmo/24/codetables/8050.table     |    11 +
 .../bufr/tables/0/wmo/24/codetables/8051.table     |     7 +
 .../bufr/tables/0/wmo/24/codetables/8052.table     |    26 +
 .../bufr/tables/0/wmo/24/codetables/8053.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/8054.table     |     3 +
 .../bufr/tables/0/wmo/24/codetables/8060.table     |     8 +
 .../bufr/tables/0/wmo/24/codetables/8065.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/8066.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/8070.table     |     6 +
 .../bufr/tables/0/wmo/24/codetables/8072.table     |     6 +
 .../bufr/tables/0/wmo/24/codetables/8074.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/8075.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/8076.table     |     9 +
 .../bufr/tables/0/wmo/24/codetables/8077.table     |     7 +
 .../bufr/tables/0/wmo/24/codetables/8079.table     |     9 +
 .../bufr/tables/0/wmo/24/codetables/8080.table     |    14 +
 .../bufr/tables/0/wmo/24/codetables/8081.table     |     5 +
 .../bufr/tables/0/wmo/24/codetables/8082.table     |     3 +
 .../bufr/tables/0/wmo/24/codetables/8083.table     |     9 +
 .../bufr/tables/0/wmo/24/codetables/8085.table     |     4 +
 .../bufr/tables/0/wmo/24/codetables/8086.table     |     9 +
 .../bufr/tables/0/wmo/24/codetables/8087.table     |     5 +
 definitions/bufr/tables/0/wmo/24/element.table     |  1510 ++
 definitions/bufr/tables/0/wmo/24/sequence.def      |   902 +
 .../bufr/tables/0/wmo/25/codetables/1003.table     |     8 +
 .../bufr/tables/0/wmo/25/codetables/10063.table    |    10 +
 .../bufr/tables/0/wmo/25/codetables/10064.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/1007.table     |   188 +
 .../bufr/tables/0/wmo/25/codetables/1024.table     |     9 +
 .../bufr/tables/0/wmo/25/codetables/1028.table     |     7 +
 .../bufr/tables/0/wmo/25/codetables/1029.table     |     8 +
 .../bufr/tables/0/wmo/25/codetables/1033.table     |   234 +
 .../bufr/tables/0/wmo/25/codetables/1034.table     |   100 +
 .../bufr/tables/0/wmo/25/codetables/1036.table     |    38 +
 .../bufr/tables/0/wmo/25/codetables/1038.table     |     7 +
 .../bufr/tables/0/wmo/25/codetables/1052.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/1090.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/1092.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/1101.table     |   202 +
 .../bufr/tables/0/wmo/25/codetables/11030.table    |    25 +
 .../bufr/tables/0/wmo/25/codetables/11031.table    |    16 +
 .../bufr/tables/0/wmo/25/codetables/11037.table    |    30 +
 .../bufr/tables/0/wmo/25/codetables/11038.table    |    17 +
 .../bufr/tables/0/wmo/25/codetables/11039.table    |    17 +
 .../bufr/tables/0/wmo/25/codetables/13038.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/13039.table    |     3 +
 .../bufr/tables/0/wmo/25/codetables/13040.table    |     8 +
 .../bufr/tables/0/wmo/25/codetables/13041.table    |    10 +
 .../bufr/tables/0/wmo/25/codetables/13051.table    |     8 +
 .../bufr/tables/0/wmo/25/codetables/13056.table    |    11 +
 .../bufr/tables/0/wmo/25/codetables/13057.table    |    11 +
 .../bufr/tables/0/wmo/25/codetables/15025.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/19001.table    |     7 +
 .../bufr/tables/0/wmo/25/codetables/19008.table    |     5 +
 .../bufr/tables/0/wmo/25/codetables/19010.table    |     3 +
 .../bufr/tables/0/wmo/25/codetables/19100.table    |     9 +
 .../bufr/tables/0/wmo/25/codetables/19101.table    |    10 +
 .../bufr/tables/0/wmo/25/codetables/19102.table    |     8 +
 .../bufr/tables/0/wmo/25/codetables/19103.table    |    12 +
 .../bufr/tables/0/wmo/25/codetables/19104.table    |    12 +
 .../bufr/tables/0/wmo/25/codetables/19105.table    |    10 +
 .../bufr/tables/0/wmo/25/codetables/19107.table    |    11 +
 .../bufr/tables/0/wmo/25/codetables/19108.table    |     8 +
 .../bufr/tables/0/wmo/25/codetables/19109.table    |    12 +
 .../bufr/tables/0/wmo/25/codetables/19110.table    |     8 +
 .../bufr/tables/0/wmo/25/codetables/19113.table    |     8 +
 .../bufr/tables/0/wmo/25/codetables/19117.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/19119.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/20003.table    |   266 +
 .../bufr/tables/0/wmo/25/codetables/20004.table    |    21 +
 .../bufr/tables/0/wmo/25/codetables/20005.table    |    21 +
 .../bufr/tables/0/wmo/25/codetables/20006.table    |     5 +
 .../bufr/tables/0/wmo/25/codetables/20008.table    |    19 +
 .../bufr/tables/0/wmo/25/codetables/20009.table    |     6 +
 .../bufr/tables/0/wmo/25/codetables/2001.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/20011.table    |    16 +
 .../bufr/tables/0/wmo/25/codetables/20012.table    |    48 +
 .../bufr/tables/0/wmo/25/codetables/20017.table    |    11 +
 .../bufr/tables/0/wmo/25/codetables/20018.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/2002.table     |     3 +
 .../bufr/tables/0/wmo/25/codetables/20021.table    |    23 +
 .../bufr/tables/0/wmo/25/codetables/20022.table    |     7 +
 .../bufr/tables/0/wmo/25/codetables/20023.table    |    14 +
 .../bufr/tables/0/wmo/25/codetables/20024.table    |     8 +
 .../bufr/tables/0/wmo/25/codetables/20025.table    |    13 +
 .../bufr/tables/0/wmo/25/codetables/20026.table    |    16 +
 .../bufr/tables/0/wmo/25/codetables/20027.table    |     8 +
 .../bufr/tables/0/wmo/25/codetables/20028.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/20029.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/2003.table     |    12 +
 .../bufr/tables/0/wmo/25/codetables/20032.table    |     6 +
 .../bufr/tables/0/wmo/25/codetables/20033.table    |     3 +
 .../bufr/tables/0/wmo/25/codetables/20034.table    |    12 +
 .../bufr/tables/0/wmo/25/codetables/20035.table    |    12 +
 .../bufr/tables/0/wmo/25/codetables/20036.table    |    12 +
 .../bufr/tables/0/wmo/25/codetables/20037.table    |    12 +
 .../bufr/tables/0/wmo/25/codetables/2004.table     |    11 +
 .../bufr/tables/0/wmo/25/codetables/20040.table    |     9 +
 .../bufr/tables/0/wmo/25/codetables/20041.table    |    14 +
 .../bufr/tables/0/wmo/25/codetables/20042.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/20045.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/20048.table    |     5 +
 .../bufr/tables/0/wmo/25/codetables/20050.table    |    10 +
 .../bufr/tables/0/wmo/25/codetables/20055.table    |    12 +
 .../bufr/tables/0/wmo/25/codetables/20056.table    |     6 +
 .../bufr/tables/0/wmo/25/codetables/20062.table    |    21 +
 .../bufr/tables/0/wmo/25/codetables/20063.table    |    71 +
 .../bufr/tables/0/wmo/25/codetables/2007.table     |    11 +
 .../bufr/tables/0/wmo/25/codetables/20071.table    |    11 +
 .../bufr/tables/0/wmo/25/codetables/20085.table    |     3 +
 .../bufr/tables/0/wmo/25/codetables/20086.table    |    11 +
 .../bufr/tables/0/wmo/25/codetables/20087.table    |     6 +
 .../bufr/tables/0/wmo/25/codetables/20089.table    |    11 +
 .../bufr/tables/0/wmo/25/codetables/20090.table    |     7 +
 .../bufr/tables/0/wmo/25/codetables/20101.table    |    11 +
 .../bufr/tables/0/wmo/25/codetables/20102.table    |    11 +
 .../bufr/tables/0/wmo/25/codetables/20103.table    |    11 +
 .../bufr/tables/0/wmo/25/codetables/20104.table    |    11 +
 .../bufr/tables/0/wmo/25/codetables/20105.table    |    12 +
 .../bufr/tables/0/wmo/25/codetables/20106.table    |     7 +
 .../bufr/tables/0/wmo/25/codetables/20107.table    |    11 +
 .../bufr/tables/0/wmo/25/codetables/20108.table    |     9 +
 .../bufr/tables/0/wmo/25/codetables/2011.table     |   100 +
 .../bufr/tables/0/wmo/25/codetables/20119.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/20124.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/2013.table     |     9 +
 .../bufr/tables/0/wmo/25/codetables/20136.table    |    44 +
 .../bufr/tables/0/wmo/25/codetables/20137.table    |    11 +
 .../bufr/tables/0/wmo/25/codetables/2014.table     |    51 +
 .../bufr/tables/0/wmo/25/codetables/2015.table     |     7 +
 .../bufr/tables/0/wmo/25/codetables/2016.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/2017.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/2019.table     |   327 +
 .../bufr/tables/0/wmo/25/codetables/2020.table     |    31 +
 .../bufr/tables/0/wmo/25/codetables/2021.table     |     8 +
 .../bufr/tables/0/wmo/25/codetables/2022.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/2023.table     |    11 +
 .../bufr/tables/0/wmo/25/codetables/2024.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/2025.table     |    16 +
 .../bufr/tables/0/wmo/25/codetables/2030.table     |     8 +
 .../bufr/tables/0/wmo/25/codetables/2031.table     |    21 +
 .../bufr/tables/0/wmo/25/codetables/2032.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/2033.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/2034.table     |     7 +
 .../bufr/tables/0/wmo/25/codetables/2036.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/2037.table     |     8 +
 .../bufr/tables/0/wmo/25/codetables/2038.table     |    16 +
 .../bufr/tables/0/wmo/25/codetables/2039.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/2040.table     |     8 +
 .../bufr/tables/0/wmo/25/codetables/2041.table     |     6 +
 .../bufr/tables/0/wmo/25/codetables/2042.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/2044.table     |     6 +
 .../bufr/tables/0/wmo/25/codetables/2045.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/2046.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/2047.table     |     9 +
 .../bufr/tables/0/wmo/25/codetables/2048.table     |    14 +
 .../bufr/tables/0/wmo/25/codetables/2049.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/2050.table     |    19 +
 .../bufr/tables/0/wmo/25/codetables/2051.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/2052.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/2053.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/2054.table     |     6 +
 .../bufr/tables/0/wmo/25/codetables/2055.table     |    10 +
 .../bufr/tables/0/wmo/25/codetables/2056.table     |     6 +
 .../bufr/tables/0/wmo/25/codetables/2057.table     |     7 +
 .../bufr/tables/0/wmo/25/codetables/2058.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/2059.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/2060.table     |     7 +
 .../bufr/tables/0/wmo/25/codetables/2061.table     |     3 +
 .../bufr/tables/0/wmo/25/codetables/2062.table     |     7 +
 .../bufr/tables/0/wmo/25/codetables/2064.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/2066.table     |     9 +
 .../bufr/tables/0/wmo/25/codetables/2070.table     |    13 +
 .../bufr/tables/0/wmo/25/codetables/2080.table     |     7 +
 .../bufr/tables/0/wmo/25/codetables/2081.table     |     9 +
 .../bufr/tables/0/wmo/25/codetables/2083.table     |     6 +
 .../bufr/tables/0/wmo/25/codetables/2084.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/2095.table     |     7 +
 .../bufr/tables/0/wmo/25/codetables/2096.table     |     8 +
 .../bufr/tables/0/wmo/25/codetables/2097.table     |    12 +
 .../bufr/tables/0/wmo/25/codetables/2099.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/2101.table     |    10 +
 .../bufr/tables/0/wmo/25/codetables/2103.table     |     1 +
 .../bufr/tables/0/wmo/25/codetables/2104.table     |     9 +
 .../bufr/tables/0/wmo/25/codetables/21066.table    |    11 +
 .../bufr/tables/0/wmo/25/codetables/21067.table    |    12 +
 .../bufr/tables/0/wmo/25/codetables/21068.table    |     7 +
 .../bufr/tables/0/wmo/25/codetables/21069.table    |     9 +
 .../bufr/tables/0/wmo/25/codetables/21070.table    |    22 +
 .../bufr/tables/0/wmo/25/codetables/21072.table    |     3 +
 .../bufr/tables/0/wmo/25/codetables/21073.table    |     8 +
 .../bufr/tables/0/wmo/25/codetables/21076.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/21109.table    |     7 +
 .../bufr/tables/0/wmo/25/codetables/21115.table    |    10 +
 .../bufr/tables/0/wmo/25/codetables/21116.table    |    16 +
 .../bufr/tables/0/wmo/25/codetables/21119.table    |    14 +
 .../bufr/tables/0/wmo/25/codetables/21144.table    |     1 +
 .../bufr/tables/0/wmo/25/codetables/21148.table    |     2 +
 .../bufr/tables/0/wmo/25/codetables/2115.table     |     7 +
 .../bufr/tables/0/wmo/25/codetables/21150.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/21155.table    |    16 +
 .../bufr/tables/0/wmo/25/codetables/21158.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/21159.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/21169.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/2119.table     |     8 +
 .../bufr/tables/0/wmo/25/codetables/2131.table     |     1 +
 .../bufr/tables/0/wmo/25/codetables/2137.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/2138.table     |     3 +
 .../bufr/tables/0/wmo/25/codetables/2139.table     |     3 +
 .../bufr/tables/0/wmo/25/codetables/2143.table     |    21 +
 .../bufr/tables/0/wmo/25/codetables/2144.table     |     8 +
 .../bufr/tables/0/wmo/25/codetables/2145.table     |     9 +
 .../bufr/tables/0/wmo/25/codetables/2146.table     |    11 +
 .../bufr/tables/0/wmo/25/codetables/2147.table     |    11 +
 .../bufr/tables/0/wmo/25/codetables/2148.table     |    12 +
 .../bufr/tables/0/wmo/25/codetables/2149.table     |    38 +
 .../bufr/tables/0/wmo/25/codetables/2150.table     |    55 +
 .../bufr/tables/0/wmo/25/codetables/2151.table     |    11 +
 .../bufr/tables/0/wmo/25/codetables/2152.table     |    13 +
 .../bufr/tables/0/wmo/25/codetables/2158.table     |     8 +
 .../bufr/tables/0/wmo/25/codetables/2159.table     |     7 +
 .../bufr/tables/0/wmo/25/codetables/2160.table     |    11 +
 .../bufr/tables/0/wmo/25/codetables/2163.table     |    16 +
 .../bufr/tables/0/wmo/25/codetables/2164.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/2165.table     |     7 +
 .../bufr/tables/0/wmo/25/codetables/2166.table     |     6 +
 .../bufr/tables/0/wmo/25/codetables/2167.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/2169.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/2170.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/2172.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/2175.table     |     9 +
 .../bufr/tables/0/wmo/25/codetables/2176.table     |     6 +
 .../bufr/tables/0/wmo/25/codetables/2177.table     |     6 +
 .../bufr/tables/0/wmo/25/codetables/2178.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/2179.table     |     6 +
 .../bufr/tables/0/wmo/25/codetables/2180.table     |     8 +
 .../bufr/tables/0/wmo/25/codetables/2181.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/2182.table     |     7 +
 .../bufr/tables/0/wmo/25/codetables/2183.table     |     9 +
 .../bufr/tables/0/wmo/25/codetables/2184.table     |     9 +
 .../bufr/tables/0/wmo/25/codetables/2185.table     |     7 +
 .../bufr/tables/0/wmo/25/codetables/2186.table     |    23 +
 .../bufr/tables/0/wmo/25/codetables/2187.table     |    11 +
 .../bufr/tables/0/wmo/25/codetables/2188.table     |    10 +
 .../bufr/tables/0/wmo/25/codetables/2189.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/2191.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/22056.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/22060.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/22061.table    |    11 +
 .../bufr/tables/0/wmo/25/codetables/22067.table    |   101 +
 .../bufr/tables/0/wmo/25/codetables/22068.table    |    43 +
 .../bufr/tables/0/wmo/25/codetables/22120.table    |    13 +
 .../bufr/tables/0/wmo/25/codetables/22121.table    |     9 +
 .../bufr/tables/0/wmo/25/codetables/22122.table    |     8 +
 .../bufr/tables/0/wmo/25/codetables/22123.table    |     9 +
 .../bufr/tables/0/wmo/25/codetables/22178.table    |    12 +
 .../bufr/tables/0/wmo/25/codetables/23001.table    |     5 +
 .../bufr/tables/0/wmo/25/codetables/23002.table    |    16 +
 .../bufr/tables/0/wmo/25/codetables/23003.table    |     8 +
 .../bufr/tables/0/wmo/25/codetables/23004.table    |     6 +
 .../bufr/tables/0/wmo/25/codetables/23005.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/23006.table    |     8 +
 .../bufr/tables/0/wmo/25/codetables/23007.table    |     5 +
 .../bufr/tables/0/wmo/25/codetables/23008.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/23009.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/23016.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/23018.table    |     6 +
 .../bufr/tables/0/wmo/25/codetables/23031.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/23032.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/24003.table    |     5 +
 .../bufr/tables/0/wmo/25/codetables/25004.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/25005.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/25006.table    |     5 +
 .../bufr/tables/0/wmo/25/codetables/25009.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/25010.table    |     8 +
 .../bufr/tables/0/wmo/25/codetables/25011.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/25012.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/25013.table    |     1 +
 .../bufr/tables/0/wmo/25/codetables/25015.table    |     1 +
 .../bufr/tables/0/wmo/25/codetables/25017.table    |     1 +
 .../bufr/tables/0/wmo/25/codetables/25020.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/25021.table    |     5 +
 .../bufr/tables/0/wmo/25/codetables/25022.table    |     8 +
 .../bufr/tables/0/wmo/25/codetables/25023.table    |     8 +
 .../bufr/tables/0/wmo/25/codetables/25024.table    |    13 +
 .../bufr/tables/0/wmo/25/codetables/25029.table    |     5 +
 .../bufr/tables/0/wmo/25/codetables/25030.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/25031.table    |     6 +
 .../bufr/tables/0/wmo/25/codetables/25032.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/25033.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/25034.table    |     3 +
 .../bufr/tables/0/wmo/25/codetables/25035.table    |     8 +
 .../bufr/tables/0/wmo/25/codetables/25036.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/25040.table    |    10 +
 .../bufr/tables/0/wmo/25/codetables/25041.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/25042.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/25053.table    |     6 +
 .../bufr/tables/0/wmo/25/codetables/25063.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/25069.table    |     7 +
 .../bufr/tables/0/wmo/25/codetables/25086.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/25090.table    |    11 +
 .../bufr/tables/0/wmo/25/codetables/25093.table    |     3 +
 .../bufr/tables/0/wmo/25/codetables/25095.table    |     1 +
 .../bufr/tables/0/wmo/25/codetables/25096.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/25097.table    |    11 +
 .../bufr/tables/0/wmo/25/codetables/25098.table    |     8 +
 .../bufr/tables/0/wmo/25/codetables/25099.table    |     6 +
 .../bufr/tables/0/wmo/25/codetables/25110.table    |     6 +
 .../bufr/tables/0/wmo/25/codetables/25112.table    |     5 +
 .../bufr/tables/0/wmo/25/codetables/25113.table    |     3 +
 .../bufr/tables/0/wmo/25/codetables/25120.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/25122.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/25123.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/25124.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/25150.table    |     3 +
 .../bufr/tables/0/wmo/25/codetables/25174.table    |    13 +
 .../bufr/tables/0/wmo/25/codetables/25181.table    |     3 +
 .../bufr/tables/0/wmo/25/codetables/25182.table    |     3 +
 .../bufr/tables/0/wmo/25/codetables/25184.table    |     3 +
 .../bufr/tables/0/wmo/25/codetables/26010.table    |    25 +
 .../bufr/tables/0/wmo/25/codetables/29001.table    |     8 +
 .../bufr/tables/0/wmo/25/codetables/29002.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/30031.table    |    13 +
 .../bufr/tables/0/wmo/25/codetables/30032.table    |     9 +
 .../bufr/tables/0/wmo/25/codetables/3010.table     |    12 +
 .../bufr/tables/0/wmo/25/codetables/3011.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/3012.table     |     3 +
 .../bufr/tables/0/wmo/25/codetables/31021.table    |     8 +
 .../bufr/tables/0/wmo/25/codetables/31031.table    |     1 +
 .../bufr/tables/0/wmo/25/codetables/33002.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/33003.table    |     5 +
 .../bufr/tables/0/wmo/25/codetables/33005.table    |    23 +
 .../bufr/tables/0/wmo/25/codetables/33006.table    |     5 +
 .../bufr/tables/0/wmo/25/codetables/33015.table    |    16 +
 .../bufr/tables/0/wmo/25/codetables/33020.table    |     8 +
 .../bufr/tables/0/wmo/25/codetables/33021.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/33022.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/33023.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/33024.table    |    10 +
 .../bufr/tables/0/wmo/25/codetables/33025.table    |     5 +
 .../bufr/tables/0/wmo/25/codetables/33026.table    |    17 +
 .../bufr/tables/0/wmo/25/codetables/33027.table    |     6 +
 .../bufr/tables/0/wmo/25/codetables/33028.table    |     5 +
 .../bufr/tables/0/wmo/25/codetables/33030.table    |     7 +
 .../bufr/tables/0/wmo/25/codetables/33031.table    |    21 +
 .../bufr/tables/0/wmo/25/codetables/33032.table    |     7 +
 .../bufr/tables/0/wmo/25/codetables/33033.table    |     3 +
 .../bufr/tables/0/wmo/25/codetables/33035.table    |    10 +
 .../bufr/tables/0/wmo/25/codetables/33037.table    |    19 +
 .../bufr/tables/0/wmo/25/codetables/33038.table    |     9 +
 .../bufr/tables/0/wmo/25/codetables/33039.table    |     9 +
 .../bufr/tables/0/wmo/25/codetables/33041.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/33042.table    |     5 +
 .../bufr/tables/0/wmo/25/codetables/33043.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/33044.table    |    14 +
 .../bufr/tables/0/wmo/25/codetables/33047.table    |    27 +
 .../bufr/tables/0/wmo/25/codetables/33048.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/33049.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/33050.table    |     9 +
 .../bufr/tables/0/wmo/25/codetables/33060.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/33070.table    |    14 +
 .../bufr/tables/0/wmo/25/codetables/33071.table    |    10 +
 .../bufr/tables/0/wmo/25/codetables/33072.table    |    18 +
 .../bufr/tables/0/wmo/25/codetables/33075.table    |     5 +
 .../bufr/tables/0/wmo/25/codetables/33076.table    |     2 +
 .../bufr/tables/0/wmo/25/codetables/33077.table    |    12 +
 .../bufr/tables/0/wmo/25/codetables/33078.table    |     5 +
 .../bufr/tables/0/wmo/25/codetables/33079.table    |    10 +
 .../bufr/tables/0/wmo/25/codetables/33080.table    |    13 +
 .../bufr/tables/0/wmo/25/codetables/33081.table    |     9 +
 .../bufr/tables/0/wmo/25/codetables/33082.table    |    10 +
 .../bufr/tables/0/wmo/25/codetables/33083.table    |    10 +
 .../bufr/tables/0/wmo/25/codetables/33084.table    |    10 +
 .../bufr/tables/0/wmo/25/codetables/33085.table    |    14 +
 .../bufr/tables/0/wmo/25/codetables/33086.table    |     5 +
 .../bufr/tables/0/wmo/25/codetables/33087.table    |    10 +
 .../bufr/tables/0/wmo/25/codetables/33088.table    |    12 +
 .../bufr/tables/0/wmo/25/codetables/35000.table    |     1 +
 .../bufr/tables/0/wmo/25/codetables/35001.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/35030.table    |    10 +
 .../bufr/tables/0/wmo/25/codetables/35031.table    |    20 +
 .../bufr/tables/0/wmo/25/codetables/35032.table    |    10 +
 .../bufr/tables/0/wmo/25/codetables/35033.table    |    12 +
 .../bufr/tables/0/wmo/25/codetables/35034.table    |     7 +
 .../bufr/tables/0/wmo/25/codetables/35035.table    |    18 +
 .../bufr/tables/0/wmo/25/codetables/40005.table    |     5 +
 .../bufr/tables/0/wmo/25/codetables/40006.table    |     8 +
 .../bufr/tables/0/wmo/25/codetables/40011.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/40012.table    |     3 +
 .../bufr/tables/0/wmo/25/codetables/40013.table    |     5 +
 .../bufr/tables/0/wmo/25/codetables/40020.table    |    16 +
 .../bufr/tables/0/wmo/25/codetables/40023.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/40024.table    |     5 +
 .../bufr/tables/0/wmo/25/codetables/40025.table    |     4 +
 .../bufr/tables/0/wmo/25/codetables/40028.table    |    16 +
 .../bufr/tables/0/wmo/25/codetables/4059.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/4080.table     |     6 +
 .../bufr/tables/0/wmo/25/codetables/8001.table     |     6 +
 .../bufr/tables/0/wmo/25/codetables/8002.table     |    19 +
 .../bufr/tables/0/wmo/25/codetables/8003.table     |    12 +
 .../bufr/tables/0/wmo/25/codetables/8004.table     |     6 +
 .../bufr/tables/0/wmo/25/codetables/8005.table     |     7 +
 .../bufr/tables/0/wmo/25/codetables/8006.table     |     8 +
 .../bufr/tables/0/wmo/25/codetables/8007.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/8008.table     |     8 +
 .../bufr/tables/0/wmo/25/codetables/8009.table     |    16 +
 .../bufr/tables/0/wmo/25/codetables/8010.table     |    14 +
 .../bufr/tables/0/wmo/25/codetables/8011.table     |    27 +
 .../bufr/tables/0/wmo/25/codetables/8012.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/8013.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/8014.table     |    10 +
 .../bufr/tables/0/wmo/25/codetables/8015.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/8016.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/8017.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/8018.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/8019.table     |     8 +
 .../bufr/tables/0/wmo/25/codetables/8021.table     |    32 +
 .../bufr/tables/0/wmo/25/codetables/8023.table     |    14 +
 .../bufr/tables/0/wmo/25/codetables/8024.table     |    12 +
 .../bufr/tables/0/wmo/25/codetables/8025.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/8026.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/8029.table     |    16 +
 .../bufr/tables/0/wmo/25/codetables/8032.table     |     7 +
 .../bufr/tables/0/wmo/25/codetables/8033.table     |     6 +
 .../bufr/tables/0/wmo/25/codetables/8034.table     |    10 +
 .../bufr/tables/0/wmo/25/codetables/8035.table     |     8 +
 .../bufr/tables/0/wmo/25/codetables/8036.table     |     8 +
 .../bufr/tables/0/wmo/25/codetables/8039.table     |     8 +
 .../bufr/tables/0/wmo/25/codetables/8040.table     |    49 +
 .../bufr/tables/0/wmo/25/codetables/8041.table     |    15 +
 .../bufr/tables/0/wmo/25/codetables/8042.table     |    17 +
 .../bufr/tables/0/wmo/25/codetables/8043.table     |    17 +
 .../bufr/tables/0/wmo/25/codetables/8050.table     |    11 +
 .../bufr/tables/0/wmo/25/codetables/8051.table     |     7 +
 .../bufr/tables/0/wmo/25/codetables/8052.table     |    26 +
 .../bufr/tables/0/wmo/25/codetables/8053.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/8054.table     |     3 +
 .../bufr/tables/0/wmo/25/codetables/8060.table     |     8 +
 .../bufr/tables/0/wmo/25/codetables/8065.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/8066.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/8070.table     |     6 +
 .../bufr/tables/0/wmo/25/codetables/8072.table     |     6 +
 .../bufr/tables/0/wmo/25/codetables/8074.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/8075.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/8076.table     |     9 +
 .../bufr/tables/0/wmo/25/codetables/8077.table     |     7 +
 .../bufr/tables/0/wmo/25/codetables/8079.table     |     9 +
 .../bufr/tables/0/wmo/25/codetables/8080.table     |    14 +
 .../bufr/tables/0/wmo/25/codetables/8081.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/8082.table     |     3 +
 .../bufr/tables/0/wmo/25/codetables/8083.table     |     9 +
 .../bufr/tables/0/wmo/25/codetables/8085.table     |     4 +
 .../bufr/tables/0/wmo/25/codetables/8086.table     |     9 +
 .../bufr/tables/0/wmo/25/codetables/8087.table     |     5 +
 .../bufr/tables/0/wmo/25/codetables/8091.table     |     9 +
 definitions/bufr/tables/0/wmo/25/element.table     |  1524 ++
 definitions/bufr/tables/0/wmo/25/sequence.def      |   923 +
 .../bufr/tables/0/wmo/7/codetables/1003.table      |     8 +
 .../bufr/tables/0/wmo/7/codetables/10063.table     |    10 +
 .../bufr/tables/0/wmo/7/codetables/10064.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/1007.table      |   132 +
 .../bufr/tables/0/wmo/7/codetables/1031.table      |   219 +
 .../bufr/tables/0/wmo/7/codetables/1032.table      |    41 +
 .../bufr/tables/0/wmo/7/codetables/1033.table      |   219 +
 .../bufr/tables/0/wmo/7/codetables/1035.table      |   219 +
 .../bufr/tables/0/wmo/7/codetables/1090.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/1092.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/11031.table     |     9 +
 .../bufr/tables/0/wmo/7/codetables/11037.table     |    30 +
 .../bufr/tables/0/wmo/7/codetables/11038.table     |    17 +
 .../bufr/tables/0/wmo/7/codetables/11039.table     |    16 +
 .../bufr/tables/0/wmo/7/codetables/13038.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/13039.table     |     3 +
 .../bufr/tables/0/wmo/7/codetables/13040.table     |     9 +
 .../bufr/tables/0/wmo/7/codetables/13041.table     |    10 +
 .../bufr/tables/0/wmo/7/codetables/13051.table     |     8 +
 .../bufr/tables/0/wmo/7/codetables/13056.table     |    10 +
 .../bufr/tables/0/wmo/7/codetables/13057.table     |    11 +
 .../bufr/tables/0/wmo/7/codetables/15025.table     |     2 +
 .../bufr/tables/0/wmo/7/codetables/19001.table     |     7 +
 .../bufr/tables/0/wmo/7/codetables/19008.table     |     5 +
 .../bufr/tables/0/wmo/7/codetables/19010.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/20003.table     |   250 +
 .../bufr/tables/0/wmo/7/codetables/20004.table     |    21 +
 .../bufr/tables/0/wmo/7/codetables/20005.table     |    21 +
 .../bufr/tables/0/wmo/7/codetables/20008.table     |    19 +
 .../bufr/tables/0/wmo/7/codetables/20009.table     |     6 +
 .../bufr/tables/0/wmo/7/codetables/2001.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/20011.table     |    11 +
 .../bufr/tables/0/wmo/7/codetables/20012.table     |    45 +
 .../bufr/tables/0/wmo/7/codetables/20017.table     |    11 +
 .../bufr/tables/0/wmo/7/codetables/20018.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/2002.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/20021.table     |    24 +
 .../bufr/tables/0/wmo/7/codetables/20022.table     |     7 +
 .../bufr/tables/0/wmo/7/codetables/20023.table     |    12 +
 .../bufr/tables/0/wmo/7/codetables/20024.table     |     7 +
 .../bufr/tables/0/wmo/7/codetables/20025.table     |    11 +
 .../bufr/tables/0/wmo/7/codetables/20026.table     |    14 +
 .../bufr/tables/0/wmo/7/codetables/20027.table     |     7 +
 .../bufr/tables/0/wmo/7/codetables/20029.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/2003.table      |    12 +
 .../bufr/tables/0/wmo/7/codetables/20032.table     |     6 +
 .../bufr/tables/0/wmo/7/codetables/20033.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/20034.table     |    12 +
 .../bufr/tables/0/wmo/7/codetables/20035.table     |    12 +
 .../bufr/tables/0/wmo/7/codetables/20036.table     |    12 +
 .../bufr/tables/0/wmo/7/codetables/20037.table     |    12 +
 .../bufr/tables/0/wmo/7/codetables/2004.table      |    11 +
 .../bufr/tables/0/wmo/7/codetables/20040.table     |     9 +
 .../bufr/tables/0/wmo/7/codetables/20041.table     |    11 +
 .../bufr/tables/0/wmo/7/codetables/20042.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/20045.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/20050.table     |    10 +
 .../bufr/tables/0/wmo/7/codetables/20055.table     |    11 +
 .../bufr/tables/0/wmo/7/codetables/20056.table     |     5 +
 .../bufr/tables/0/wmo/7/codetables/20062.table     |    21 +
 .../bufr/tables/0/wmo/7/codetables/20063.table     |     1 +
 .../bufr/tables/0/wmo/7/codetables/20071.table     |    11 +
 .../bufr/tables/0/wmo/7/codetables/20086.table     |     8 +
 .../bufr/tables/0/wmo/7/codetables/20090.table     |     7 +
 .../bufr/tables/0/wmo/7/codetables/20101.table     |    10 +
 .../bufr/tables/0/wmo/7/codetables/20102.table     |    11 +
 .../bufr/tables/0/wmo/7/codetables/2011.table      |    54 +
 .../bufr/tables/0/wmo/7/codetables/2012.table      |     1 +
 .../bufr/tables/0/wmo/7/codetables/2013.table      |     9 +
 .../bufr/tables/0/wmo/7/codetables/2014.table      |    50 +
 .../bufr/tables/0/wmo/7/codetables/2015.table      |     6 +
 .../bufr/tables/0/wmo/7/codetables/2016.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/2019.table      |   296 +
 .../bufr/tables/0/wmo/7/codetables/2020.table      |    24 +
 .../bufr/tables/0/wmo/7/codetables/2021.table      |     8 +
 .../bufr/tables/0/wmo/7/codetables/2022.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/2023.table      |    12 +
 .../bufr/tables/0/wmo/7/codetables/2024.table      |     3 +
 .../bufr/tables/0/wmo/7/codetables/2025.table      |    16 +
 .../bufr/tables/0/wmo/7/codetables/2030.table      |     7 +
 .../bufr/tables/0/wmo/7/codetables/2031.table      |    21 +
 .../bufr/tables/0/wmo/7/codetables/2032.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/2033.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/2034.table      |     7 +
 .../bufr/tables/0/wmo/7/codetables/2036.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/2037.table      |     7 +
 .../bufr/tables/0/wmo/7/codetables/2038.table      |    12 +
 .../bufr/tables/0/wmo/7/codetables/2039.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/2040.table      |     8 +
 .../bufr/tables/0/wmo/7/codetables/2041.table      |     6 +
 .../bufr/tables/0/wmo/7/codetables/2044.table      |     6 +
 .../bufr/tables/0/wmo/7/codetables/2045.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/2046.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/2048.table      |    12 +
 .../bufr/tables/0/wmo/7/codetables/2049.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/2050.table      |    19 +
 .../bufr/tables/0/wmo/7/codetables/2051.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/2052.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/2053.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/2054.table      |     6 +
 .../bufr/tables/0/wmo/7/codetables/2055.table      |     9 +
 .../bufr/tables/0/wmo/7/codetables/2056.table      |     6 +
 .../bufr/tables/0/wmo/7/codetables/2057.table      |     6 +
 .../bufr/tables/0/wmo/7/codetables/2058.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/2059.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/2060.table      |     7 +
 .../bufr/tables/0/wmo/7/codetables/2061.table      |     3 +
 .../bufr/tables/0/wmo/7/codetables/2062.table      |     7 +
 .../bufr/tables/0/wmo/7/codetables/2064.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/2066.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/2070.table      |    13 +
 .../bufr/tables/0/wmo/7/codetables/2080.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/2081.table      |     9 +
 .../bufr/tables/0/wmo/7/codetables/2083.table      |     6 +
 .../bufr/tables/0/wmo/7/codetables/2084.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/2095.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/2096.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/2097.table      |     8 +
 .../bufr/tables/0/wmo/7/codetables/2098.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/2101.table      |    10 +
 .../bufr/tables/0/wmo/7/codetables/2103.table      |     2 +
 .../bufr/tables/0/wmo/7/codetables/2104.table      |     7 +
 .../bufr/tables/0/wmo/7/codetables/21066.table     |    11 +
 .../bufr/tables/0/wmo/7/codetables/21067.table     |    12 +
 .../bufr/tables/0/wmo/7/codetables/21068.table     |     7 +
 .../bufr/tables/0/wmo/7/codetables/21069.table     |     9 +
 .../bufr/tables/0/wmo/7/codetables/21070.table     |    23 +
 .../bufr/tables/0/wmo/7/codetables/21072.table     |     3 +
 .../bufr/tables/0/wmo/7/codetables/21073.table     |     8 +
 .../bufr/tables/0/wmo/7/codetables/21076.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/21109.table     |     8 +
 .../bufr/tables/0/wmo/7/codetables/21115.table     |    11 +
 .../bufr/tables/0/wmo/7/codetables/21116.table     |    16 +
 .../bufr/tables/0/wmo/7/codetables/21119.table     |    14 +
 .../bufr/tables/0/wmo/7/codetables/21144.table     |     1 +
 .../bufr/tables/0/wmo/7/codetables/2115.table      |     7 +
 .../bufr/tables/0/wmo/7/codetables/21150.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/21155.table     |    16 +
 .../bufr/tables/0/wmo/7/codetables/21158.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/21159.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/21169.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/2119.table      |     8 +
 .../bufr/tables/0/wmo/7/codetables/2131.table      |     1 +
 .../bufr/tables/0/wmo/7/codetables/2143.table      |    21 +
 .../bufr/tables/0/wmo/7/codetables/2144.table      |     8 +
 .../bufr/tables/0/wmo/7/codetables/2145.table      |     9 +
 .../bufr/tables/0/wmo/7/codetables/2146.table      |    11 +
 .../bufr/tables/0/wmo/7/codetables/2148.table      |     6 +
 .../bufr/tables/0/wmo/7/codetables/2149.table      |    22 +
 .../bufr/tables/0/wmo/7/codetables/2150.table      |    55 +
 .../bufr/tables/0/wmo/7/codetables/2151.table      |     9 +
 .../bufr/tables/0/wmo/7/codetables/2152.table      |    11 +
 .../bufr/tables/0/wmo/7/codetables/2158.table      |     8 +
 .../bufr/tables/0/wmo/7/codetables/2159.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/2163.table      |    15 +
 .../bufr/tables/0/wmo/7/codetables/2164.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/2166.table      |     6 +
 .../bufr/tables/0/wmo/7/codetables/2167.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/2169.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/2172.table      |     3 +
 .../bufr/tables/0/wmo/7/codetables/2175.table      |     9 +
 .../bufr/tables/0/wmo/7/codetables/2176.table      |     6 +
 .../bufr/tables/0/wmo/7/codetables/2177.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/2178.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/2179.table      |     6 +
 .../bufr/tables/0/wmo/7/codetables/2180.table      |     8 +
 .../bufr/tables/0/wmo/7/codetables/2181.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/2182.table      |     7 +
 .../bufr/tables/0/wmo/7/codetables/2183.table      |     9 +
 .../bufr/tables/0/wmo/7/codetables/2184.table      |     8 +
 .../bufr/tables/0/wmo/7/codetables/2185.table      |     7 +
 .../bufr/tables/0/wmo/7/codetables/2186.table      |    23 +
 .../bufr/tables/0/wmo/7/codetables/2187.table      |    11 +
 .../bufr/tables/0/wmo/7/codetables/2188.table      |    10 +
 .../bufr/tables/0/wmo/7/codetables/2189.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/22056.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/22060.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/22061.table     |    11 +
 .../bufr/tables/0/wmo/7/codetables/22067.table     |     1 +
 .../bufr/tables/0/wmo/7/codetables/22068.table     |     1 +
 .../bufr/tables/0/wmo/7/codetables/22120.table     |    13 +
 .../bufr/tables/0/wmo/7/codetables/22121.table     |     9 +
 .../bufr/tables/0/wmo/7/codetables/22122.table     |     8 +
 .../bufr/tables/0/wmo/7/codetables/22123.table     |     9 +
 .../bufr/tables/0/wmo/7/codetables/23001.table     |     5 +
 .../bufr/tables/0/wmo/7/codetables/23002.table     |    16 +
 .../bufr/tables/0/wmo/7/codetables/23003.table     |     8 +
 .../bufr/tables/0/wmo/7/codetables/23004.table     |     6 +
 .../bufr/tables/0/wmo/7/codetables/23005.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/23006.table     |     8 +
 .../bufr/tables/0/wmo/7/codetables/23007.table     |     5 +
 .../bufr/tables/0/wmo/7/codetables/23008.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/23009.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/23016.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/23018.table     |     6 +
 .../bufr/tables/0/wmo/7/codetables/23031.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/23032.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/24003.table     |     5 +
 .../bufr/tables/0/wmo/7/codetables/25004.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/25005.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/25006.table     |     5 +
 .../bufr/tables/0/wmo/7/codetables/25009.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/25010.table     |     8 +
 .../bufr/tables/0/wmo/7/codetables/25011.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/25012.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/25013.table     |     1 +
 .../bufr/tables/0/wmo/7/codetables/25015.table     |     1 +
 .../bufr/tables/0/wmo/7/codetables/25017.table     |     1 +
 .../bufr/tables/0/wmo/7/codetables/25020.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/25021.table     |     5 +
 .../bufr/tables/0/wmo/7/codetables/25030.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/25032.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/25033.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/25034.table     |     3 +
 .../bufr/tables/0/wmo/7/codetables/25036.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/25040.table     |    10 +
 .../bufr/tables/0/wmo/7/codetables/25041.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/25042.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/25045.table     |    20 +
 .../bufr/tables/0/wmo/7/codetables/25046.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/25047.table     |     3 +
 .../bufr/tables/0/wmo/7/codetables/25048.table     |    15 +
 .../bufr/tables/0/wmo/7/codetables/25049.table     |     5 +
 .../bufr/tables/0/wmo/7/codetables/25051.table     |     6 +
 .../bufr/tables/0/wmo/7/codetables/25053.table     |     6 +
 .../bufr/tables/0/wmo/7/codetables/25069.table     |     7 +
 .../bufr/tables/0/wmo/7/codetables/25086.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/25093.table     |     3 +
 .../bufr/tables/0/wmo/7/codetables/25095.table     |     1 +
 .../bufr/tables/0/wmo/7/codetables/25096.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/25097.table     |    11 +
 .../bufr/tables/0/wmo/7/codetables/25098.table     |     8 +
 .../bufr/tables/0/wmo/7/codetables/25099.table     |     6 +
 .../bufr/tables/0/wmo/7/codetables/25110.table     |     6 +
 .../bufr/tables/0/wmo/7/codetables/25120.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/25122.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/25123.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/25124.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/26010.table     |    25 +
 .../bufr/tables/0/wmo/7/codetables/29001.table     |     6 +
 .../bufr/tables/0/wmo/7/codetables/29002.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/30031.table     |    13 +
 .../bufr/tables/0/wmo/7/codetables/30032.table     |     9 +
 .../bufr/tables/0/wmo/7/codetables/31021.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/31031.table     |     1 +
 .../bufr/tables/0/wmo/7/codetables/33002.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/33003.table     |     5 +
 .../bufr/tables/0/wmo/7/codetables/33005.table     |    23 +
 .../bufr/tables/0/wmo/7/codetables/33006.table     |     5 +
 .../bufr/tables/0/wmo/7/codetables/33015.table     |    16 +
 .../bufr/tables/0/wmo/7/codetables/33020.table     |     8 +
 .../bufr/tables/0/wmo/7/codetables/33021.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/33022.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/33023.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/33024.table     |    10 +
 .../bufr/tables/0/wmo/7/codetables/33025.table     |     5 +
 .../bufr/tables/0/wmo/7/codetables/33026.table     |    10 +
 .../bufr/tables/0/wmo/7/codetables/33027.table     |     5 +
 .../bufr/tables/0/wmo/7/codetables/33028.table     |     6 +
 .../bufr/tables/0/wmo/7/codetables/33030.table     |     7 +
 .../bufr/tables/0/wmo/7/codetables/33031.table     |    21 +
 .../bufr/tables/0/wmo/7/codetables/33032.table     |     6 +
 .../bufr/tables/0/wmo/7/codetables/33033.table     |    23 +
 .../bufr/tables/0/wmo/7/codetables/33035.table     |    15 +
 .../bufr/tables/0/wmo/7/codetables/33037.table     |    19 +
 .../bufr/tables/0/wmo/7/codetables/33038.table     |     9 +
 .../bufr/tables/0/wmo/7/codetables/33039.table     |     9 +
 .../bufr/tables/0/wmo/7/codetables/33041.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/33042.table     |     5 +
 .../bufr/tables/0/wmo/7/codetables/33043.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/33044.table     |    14 +
 .../bufr/tables/0/wmo/7/codetables/33047.table     |    26 +
 .../bufr/tables/0/wmo/7/codetables/33048.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/33049.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/33050.table     |     8 +
 .../bufr/tables/0/wmo/7/codetables/33052.table     |    20 +
 .../bufr/tables/0/wmo/7/codetables/33053.table     |    20 +
 .../bufr/tables/0/wmo/7/codetables/33060.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/35000.table     |    11 +
 .../bufr/tables/0/wmo/7/codetables/35001.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/35030.table     |    10 +
 .../bufr/tables/0/wmo/7/codetables/35031.table     |    20 +
 .../bufr/tables/0/wmo/7/codetables/35032.table     |    10 +
 .../bufr/tables/0/wmo/7/codetables/35033.table     |    12 +
 .../bufr/tables/0/wmo/7/codetables/35034.table     |     7 +
 .../bufr/tables/0/wmo/7/codetables/40011.table     |     4 +
 .../bufr/tables/0/wmo/7/codetables/40012.table     |     3 +
 .../bufr/tables/0/wmo/7/codetables/40013.table     |     5 +
 .../bufr/tables/0/wmo/7/codetables/4059.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/8001.table      |     7 +
 .../bufr/tables/0/wmo/7/codetables/8002.table      |    13 +
 .../bufr/tables/0/wmo/7/codetables/8003.table      |     9 +
 .../bufr/tables/0/wmo/7/codetables/8004.table      |     6 +
 .../bufr/tables/0/wmo/7/codetables/8005.table      |     7 +
 .../bufr/tables/0/wmo/7/codetables/8006.table      |     8 +
 .../bufr/tables/0/wmo/7/codetables/8007.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/8008.table      |     8 +
 .../bufr/tables/0/wmo/7/codetables/8009.table      |    16 +
 .../bufr/tables/0/wmo/7/codetables/8010.table      |    13 +
 .../bufr/tables/0/wmo/7/codetables/8011.table      |    26 +
 .../bufr/tables/0/wmo/7/codetables/8012.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/8013.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/8014.table      |    10 +
 .../bufr/tables/0/wmo/7/codetables/8016.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/8017.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/8018.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/8021.table      |    32 +
 .../bufr/tables/0/wmo/7/codetables/8023.table      |    17 +
 .../bufr/tables/0/wmo/7/codetables/8024.table      |    15 +
 .../bufr/tables/0/wmo/7/codetables/8025.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/8026.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/8029.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/8033.table      |     6 +
 .../bufr/tables/0/wmo/7/codetables/8035.table      |     8 +
 .../bufr/tables/0/wmo/7/codetables/8036.table      |     8 +
 .../bufr/tables/0/wmo/7/codetables/8039.table      |     8 +
 .../bufr/tables/0/wmo/7/codetables/8040.table      |    43 +
 .../bufr/tables/0/wmo/7/codetables/8041.table      |     9 +
 .../bufr/tables/0/wmo/7/codetables/8042.table      |    13 +
 .../bufr/tables/0/wmo/7/codetables/8043.table      |    21 +
 .../bufr/tables/0/wmo/7/codetables/8050.table      |    11 +
 .../bufr/tables/0/wmo/7/codetables/8051.table      |     7 +
 .../bufr/tables/0/wmo/7/codetables/8052.table      |    26 +
 .../bufr/tables/0/wmo/7/codetables/8053.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/8054.table      |     3 +
 .../bufr/tables/0/wmo/7/codetables/8060.table      |     8 +
 .../bufr/tables/0/wmo/7/codetables/8065.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/8066.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/8070.table      |     6 +
 .../bufr/tables/0/wmo/7/codetables/8072.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/8074.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/8075.table      |     4 +
 .../bufr/tables/0/wmo/7/codetables/8076.table      |     3 +
 .../bufr/tables/0/wmo/7/codetables/8077.table      |     7 +
 .../bufr/tables/0/wmo/7/codetables/8079.table      |     9 +
 .../bufr/tables/0/wmo/7/codetables/8080.table      |     9 +
 .../bufr/tables/0/wmo/7/codetables/8081.table      |     5 +
 .../bufr/tables/0/wmo/7/codetables/8082.table      |     3 +
 .../bufr/tables/0/wmo/7/codetables/8083.table      |     9 +
 .../bufr/tables/0/wmo/7/codetables/8085.table      |     8 +
 definitions/bufr/tables/0/wmo/7/element.table      |  1297 +
 definitions/bufr/tables/0/wmo/7/sequence.def       |   678 +
 .../bufr/tables/0/wmo/8/codetables/1003.table      |     8 +
 .../bufr/tables/0/wmo/8/codetables/10063.table     |    10 +
 .../bufr/tables/0/wmo/8/codetables/10064.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/1007.table      |   132 +
 .../bufr/tables/0/wmo/8/codetables/1031.table      |   219 +
 .../bufr/tables/0/wmo/8/codetables/1032.table      |    41 +
 .../bufr/tables/0/wmo/8/codetables/1033.table      |   219 +
 .../bufr/tables/0/wmo/8/codetables/1035.table      |   219 +
 .../bufr/tables/0/wmo/8/codetables/1090.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/1092.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/11031.table     |     9 +
 .../bufr/tables/0/wmo/8/codetables/11037.table     |    30 +
 .../bufr/tables/0/wmo/8/codetables/11038.table     |    17 +
 .../bufr/tables/0/wmo/8/codetables/11039.table     |    16 +
 .../bufr/tables/0/wmo/8/codetables/13038.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/13039.table     |     3 +
 .../bufr/tables/0/wmo/8/codetables/13040.table     |     9 +
 .../bufr/tables/0/wmo/8/codetables/13041.table     |    10 +
 .../bufr/tables/0/wmo/8/codetables/13051.table     |     8 +
 .../bufr/tables/0/wmo/8/codetables/13056.table     |    10 +
 .../bufr/tables/0/wmo/8/codetables/13057.table     |    11 +
 .../bufr/tables/0/wmo/8/codetables/15025.table     |     2 +
 .../bufr/tables/0/wmo/8/codetables/19001.table     |     7 +
 .../bufr/tables/0/wmo/8/codetables/19008.table     |     5 +
 .../bufr/tables/0/wmo/8/codetables/19010.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/20003.table     |   250 +
 .../bufr/tables/0/wmo/8/codetables/20004.table     |    21 +
 .../bufr/tables/0/wmo/8/codetables/20005.table     |    21 +
 .../bufr/tables/0/wmo/8/codetables/20008.table     |    19 +
 .../bufr/tables/0/wmo/8/codetables/20009.table     |     6 +
 .../bufr/tables/0/wmo/8/codetables/2001.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/20011.table     |    11 +
 .../bufr/tables/0/wmo/8/codetables/20012.table     |    45 +
 .../bufr/tables/0/wmo/8/codetables/20017.table     |    11 +
 .../bufr/tables/0/wmo/8/codetables/20018.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/2002.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/20021.table     |    24 +
 .../bufr/tables/0/wmo/8/codetables/20022.table     |     7 +
 .../bufr/tables/0/wmo/8/codetables/20023.table     |    12 +
 .../bufr/tables/0/wmo/8/codetables/20024.table     |     7 +
 .../bufr/tables/0/wmo/8/codetables/20025.table     |    11 +
 .../bufr/tables/0/wmo/8/codetables/20026.table     |    14 +
 .../bufr/tables/0/wmo/8/codetables/20027.table     |     7 +
 .../bufr/tables/0/wmo/8/codetables/20029.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/2003.table      |    12 +
 .../bufr/tables/0/wmo/8/codetables/20032.table     |     6 +
 .../bufr/tables/0/wmo/8/codetables/20033.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/20034.table     |    12 +
 .../bufr/tables/0/wmo/8/codetables/20035.table     |    12 +
 .../bufr/tables/0/wmo/8/codetables/20036.table     |    12 +
 .../bufr/tables/0/wmo/8/codetables/20037.table     |    12 +
 .../bufr/tables/0/wmo/8/codetables/2004.table      |    11 +
 .../bufr/tables/0/wmo/8/codetables/20040.table     |     9 +
 .../bufr/tables/0/wmo/8/codetables/20041.table     |    11 +
 .../bufr/tables/0/wmo/8/codetables/20042.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/20045.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/20050.table     |    10 +
 .../bufr/tables/0/wmo/8/codetables/20055.table     |    11 +
 .../bufr/tables/0/wmo/8/codetables/20056.table     |     5 +
 .../bufr/tables/0/wmo/8/codetables/20062.table     |    21 +
 .../bufr/tables/0/wmo/8/codetables/20063.table     |     1 +
 .../bufr/tables/0/wmo/8/codetables/20071.table     |    11 +
 .../bufr/tables/0/wmo/8/codetables/20086.table     |     8 +
 .../bufr/tables/0/wmo/8/codetables/20090.table     |     7 +
 .../bufr/tables/0/wmo/8/codetables/20101.table     |    10 +
 .../bufr/tables/0/wmo/8/codetables/20102.table     |    11 +
 .../bufr/tables/0/wmo/8/codetables/2011.table      |    54 +
 .../bufr/tables/0/wmo/8/codetables/2012.table      |     1 +
 .../bufr/tables/0/wmo/8/codetables/2013.table      |     9 +
 .../bufr/tables/0/wmo/8/codetables/2014.table      |    50 +
 .../bufr/tables/0/wmo/8/codetables/2015.table      |     6 +
 .../bufr/tables/0/wmo/8/codetables/2016.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/2019.table      |   296 +
 .../bufr/tables/0/wmo/8/codetables/2020.table      |    24 +
 .../bufr/tables/0/wmo/8/codetables/2021.table      |     8 +
 .../bufr/tables/0/wmo/8/codetables/2022.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/2023.table      |    12 +
 .../bufr/tables/0/wmo/8/codetables/2024.table      |     3 +
 .../bufr/tables/0/wmo/8/codetables/2025.table      |    16 +
 .../bufr/tables/0/wmo/8/codetables/2030.table      |     7 +
 .../bufr/tables/0/wmo/8/codetables/2031.table      |    21 +
 .../bufr/tables/0/wmo/8/codetables/2032.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/2033.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/2034.table      |     7 +
 .../bufr/tables/0/wmo/8/codetables/2036.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/2037.table      |     7 +
 .../bufr/tables/0/wmo/8/codetables/2038.table      |    12 +
 .../bufr/tables/0/wmo/8/codetables/2039.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/2040.table      |     8 +
 .../bufr/tables/0/wmo/8/codetables/2041.table      |     6 +
 .../bufr/tables/0/wmo/8/codetables/2044.table      |     6 +
 .../bufr/tables/0/wmo/8/codetables/2045.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/2046.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/2048.table      |    12 +
 .../bufr/tables/0/wmo/8/codetables/2049.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/2050.table      |    19 +
 .../bufr/tables/0/wmo/8/codetables/2051.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/2052.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/2053.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/2054.table      |     6 +
 .../bufr/tables/0/wmo/8/codetables/2055.table      |     9 +
 .../bufr/tables/0/wmo/8/codetables/2056.table      |     6 +
 .../bufr/tables/0/wmo/8/codetables/2057.table      |     6 +
 .../bufr/tables/0/wmo/8/codetables/2058.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/2059.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/2060.table      |     7 +
 .../bufr/tables/0/wmo/8/codetables/2061.table      |     3 +
 .../bufr/tables/0/wmo/8/codetables/2062.table      |     7 +
 .../bufr/tables/0/wmo/8/codetables/2064.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/2066.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/2070.table      |    13 +
 .../bufr/tables/0/wmo/8/codetables/2080.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/2081.table      |     9 +
 .../bufr/tables/0/wmo/8/codetables/2083.table      |     6 +
 .../bufr/tables/0/wmo/8/codetables/2084.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/2095.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/2096.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/2097.table      |     8 +
 .../bufr/tables/0/wmo/8/codetables/2098.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/2101.table      |    10 +
 .../bufr/tables/0/wmo/8/codetables/2103.table      |     2 +
 .../bufr/tables/0/wmo/8/codetables/2104.table      |     7 +
 .../bufr/tables/0/wmo/8/codetables/21066.table     |    11 +
 .../bufr/tables/0/wmo/8/codetables/21067.table     |    12 +
 .../bufr/tables/0/wmo/8/codetables/21068.table     |     7 +
 .../bufr/tables/0/wmo/8/codetables/21069.table     |     9 +
 .../bufr/tables/0/wmo/8/codetables/21070.table     |    23 +
 .../bufr/tables/0/wmo/8/codetables/21072.table     |     3 +
 .../bufr/tables/0/wmo/8/codetables/21073.table     |     8 +
 .../bufr/tables/0/wmo/8/codetables/21076.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/21109.table     |     8 +
 .../bufr/tables/0/wmo/8/codetables/21115.table     |    11 +
 .../bufr/tables/0/wmo/8/codetables/21116.table     |    16 +
 .../bufr/tables/0/wmo/8/codetables/21119.table     |    14 +
 .../bufr/tables/0/wmo/8/codetables/21144.table     |     1 +
 .../bufr/tables/0/wmo/8/codetables/2115.table      |     7 +
 .../bufr/tables/0/wmo/8/codetables/21150.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/21155.table     |    16 +
 .../bufr/tables/0/wmo/8/codetables/21158.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/21159.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/21169.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/2119.table      |     8 +
 .../bufr/tables/0/wmo/8/codetables/2131.table      |     1 +
 .../bufr/tables/0/wmo/8/codetables/2143.table      |    21 +
 .../bufr/tables/0/wmo/8/codetables/2144.table      |     8 +
 .../bufr/tables/0/wmo/8/codetables/2145.table      |     9 +
 .../bufr/tables/0/wmo/8/codetables/2146.table      |    11 +
 .../bufr/tables/0/wmo/8/codetables/2148.table      |     6 +
 .../bufr/tables/0/wmo/8/codetables/2149.table      |    22 +
 .../bufr/tables/0/wmo/8/codetables/2150.table      |    55 +
 .../bufr/tables/0/wmo/8/codetables/2151.table      |     9 +
 .../bufr/tables/0/wmo/8/codetables/2152.table      |    11 +
 .../bufr/tables/0/wmo/8/codetables/2158.table      |     8 +
 .../bufr/tables/0/wmo/8/codetables/2159.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/2163.table      |    15 +
 .../bufr/tables/0/wmo/8/codetables/2164.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/2166.table      |     6 +
 .../bufr/tables/0/wmo/8/codetables/2167.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/2169.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/2172.table      |     3 +
 .../bufr/tables/0/wmo/8/codetables/2175.table      |     9 +
 .../bufr/tables/0/wmo/8/codetables/2176.table      |     6 +
 .../bufr/tables/0/wmo/8/codetables/2177.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/2178.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/2179.table      |     6 +
 .../bufr/tables/0/wmo/8/codetables/2180.table      |     8 +
 .../bufr/tables/0/wmo/8/codetables/2181.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/2182.table      |     7 +
 .../bufr/tables/0/wmo/8/codetables/2183.table      |     9 +
 .../bufr/tables/0/wmo/8/codetables/2184.table      |     8 +
 .../bufr/tables/0/wmo/8/codetables/2185.table      |     7 +
 .../bufr/tables/0/wmo/8/codetables/2186.table      |    23 +
 .../bufr/tables/0/wmo/8/codetables/2187.table      |    11 +
 .../bufr/tables/0/wmo/8/codetables/2188.table      |    10 +
 .../bufr/tables/0/wmo/8/codetables/2189.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/22056.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/22060.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/22061.table     |    11 +
 .../bufr/tables/0/wmo/8/codetables/22067.table     |     1 +
 .../bufr/tables/0/wmo/8/codetables/22068.table     |     1 +
 .../bufr/tables/0/wmo/8/codetables/22120.table     |    13 +
 .../bufr/tables/0/wmo/8/codetables/22121.table     |     9 +
 .../bufr/tables/0/wmo/8/codetables/22122.table     |     8 +
 .../bufr/tables/0/wmo/8/codetables/22123.table     |     9 +
 .../bufr/tables/0/wmo/8/codetables/23001.table     |     5 +
 .../bufr/tables/0/wmo/8/codetables/23002.table     |    16 +
 .../bufr/tables/0/wmo/8/codetables/23003.table     |     8 +
 .../bufr/tables/0/wmo/8/codetables/23004.table     |     6 +
 .../bufr/tables/0/wmo/8/codetables/23005.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/23006.table     |     8 +
 .../bufr/tables/0/wmo/8/codetables/23007.table     |     5 +
 .../bufr/tables/0/wmo/8/codetables/23008.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/23009.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/23016.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/23018.table     |     6 +
 .../bufr/tables/0/wmo/8/codetables/23031.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/23032.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/24003.table     |     5 +
 .../bufr/tables/0/wmo/8/codetables/25004.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/25005.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/25006.table     |     5 +
 .../bufr/tables/0/wmo/8/codetables/25009.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/25010.table     |     8 +
 .../bufr/tables/0/wmo/8/codetables/25011.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/25012.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/25013.table     |     1 +
 .../bufr/tables/0/wmo/8/codetables/25015.table     |     1 +
 .../bufr/tables/0/wmo/8/codetables/25017.table     |     1 +
 .../bufr/tables/0/wmo/8/codetables/25020.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/25021.table     |     5 +
 .../bufr/tables/0/wmo/8/codetables/25030.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/25032.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/25033.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/25034.table     |     3 +
 .../bufr/tables/0/wmo/8/codetables/25036.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/25040.table     |    10 +
 .../bufr/tables/0/wmo/8/codetables/25041.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/25042.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/25045.table     |    20 +
 .../bufr/tables/0/wmo/8/codetables/25046.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/25047.table     |     3 +
 .../bufr/tables/0/wmo/8/codetables/25048.table     |    15 +
 .../bufr/tables/0/wmo/8/codetables/25049.table     |     5 +
 .../bufr/tables/0/wmo/8/codetables/25051.table     |     6 +
 .../bufr/tables/0/wmo/8/codetables/25053.table     |     6 +
 .../bufr/tables/0/wmo/8/codetables/25069.table     |     7 +
 .../bufr/tables/0/wmo/8/codetables/25086.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/25093.table     |     3 +
 .../bufr/tables/0/wmo/8/codetables/25095.table     |     1 +
 .../bufr/tables/0/wmo/8/codetables/25096.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/25097.table     |    11 +
 .../bufr/tables/0/wmo/8/codetables/25098.table     |     8 +
 .../bufr/tables/0/wmo/8/codetables/25099.table     |     6 +
 .../bufr/tables/0/wmo/8/codetables/25110.table     |     6 +
 .../bufr/tables/0/wmo/8/codetables/25120.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/25122.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/25123.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/25124.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/26010.table     |    25 +
 .../bufr/tables/0/wmo/8/codetables/29001.table     |     6 +
 .../bufr/tables/0/wmo/8/codetables/29002.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/30031.table     |    13 +
 .../bufr/tables/0/wmo/8/codetables/30032.table     |     9 +
 .../bufr/tables/0/wmo/8/codetables/31021.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/31031.table     |     1 +
 .../bufr/tables/0/wmo/8/codetables/33002.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/33003.table     |     5 +
 .../bufr/tables/0/wmo/8/codetables/33005.table     |    23 +
 .../bufr/tables/0/wmo/8/codetables/33006.table     |     5 +
 .../bufr/tables/0/wmo/8/codetables/33015.table     |    16 +
 .../bufr/tables/0/wmo/8/codetables/33020.table     |     8 +
 .../bufr/tables/0/wmo/8/codetables/33021.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/33022.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/33023.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/33024.table     |    10 +
 .../bufr/tables/0/wmo/8/codetables/33025.table     |     5 +
 .../bufr/tables/0/wmo/8/codetables/33026.table     |    10 +
 .../bufr/tables/0/wmo/8/codetables/33027.table     |     5 +
 .../bufr/tables/0/wmo/8/codetables/33028.table     |     6 +
 .../bufr/tables/0/wmo/8/codetables/33030.table     |     7 +
 .../bufr/tables/0/wmo/8/codetables/33031.table     |    21 +
 .../bufr/tables/0/wmo/8/codetables/33032.table     |     6 +
 .../bufr/tables/0/wmo/8/codetables/33033.table     |    23 +
 .../bufr/tables/0/wmo/8/codetables/33035.table     |    15 +
 .../bufr/tables/0/wmo/8/codetables/33037.table     |    19 +
 .../bufr/tables/0/wmo/8/codetables/33038.table     |     9 +
 .../bufr/tables/0/wmo/8/codetables/33039.table     |     9 +
 .../bufr/tables/0/wmo/8/codetables/33041.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/33042.table     |     5 +
 .../bufr/tables/0/wmo/8/codetables/33043.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/33044.table     |    14 +
 .../bufr/tables/0/wmo/8/codetables/33047.table     |    26 +
 .../bufr/tables/0/wmo/8/codetables/33048.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/33049.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/33050.table     |     8 +
 .../bufr/tables/0/wmo/8/codetables/33052.table     |    20 +
 .../bufr/tables/0/wmo/8/codetables/33053.table     |    20 +
 .../bufr/tables/0/wmo/8/codetables/33060.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/35000.table     |    11 +
 .../bufr/tables/0/wmo/8/codetables/35001.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/35030.table     |    10 +
 .../bufr/tables/0/wmo/8/codetables/35031.table     |    20 +
 .../bufr/tables/0/wmo/8/codetables/35032.table     |    10 +
 .../bufr/tables/0/wmo/8/codetables/35033.table     |    12 +
 .../bufr/tables/0/wmo/8/codetables/35034.table     |     7 +
 .../bufr/tables/0/wmo/8/codetables/40011.table     |     4 +
 .../bufr/tables/0/wmo/8/codetables/40012.table     |     3 +
 .../bufr/tables/0/wmo/8/codetables/40013.table     |     5 +
 .../bufr/tables/0/wmo/8/codetables/4059.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/8001.table      |     7 +
 .../bufr/tables/0/wmo/8/codetables/8002.table      |    13 +
 .../bufr/tables/0/wmo/8/codetables/8003.table      |     9 +
 .../bufr/tables/0/wmo/8/codetables/8004.table      |     6 +
 .../bufr/tables/0/wmo/8/codetables/8005.table      |     7 +
 .../bufr/tables/0/wmo/8/codetables/8006.table      |     8 +
 .../bufr/tables/0/wmo/8/codetables/8007.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/8008.table      |     8 +
 .../bufr/tables/0/wmo/8/codetables/8009.table      |    16 +
 .../bufr/tables/0/wmo/8/codetables/8010.table      |    13 +
 .../bufr/tables/0/wmo/8/codetables/8011.table      |    26 +
 .../bufr/tables/0/wmo/8/codetables/8012.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/8013.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/8014.table      |    10 +
 .../bufr/tables/0/wmo/8/codetables/8016.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/8017.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/8018.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/8021.table      |    32 +
 .../bufr/tables/0/wmo/8/codetables/8023.table      |    17 +
 .../bufr/tables/0/wmo/8/codetables/8024.table      |    15 +
 .../bufr/tables/0/wmo/8/codetables/8025.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/8026.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/8029.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/8033.table      |     6 +
 .../bufr/tables/0/wmo/8/codetables/8035.table      |     8 +
 .../bufr/tables/0/wmo/8/codetables/8036.table      |     8 +
 .../bufr/tables/0/wmo/8/codetables/8039.table      |     8 +
 .../bufr/tables/0/wmo/8/codetables/8040.table      |    43 +
 .../bufr/tables/0/wmo/8/codetables/8041.table      |     9 +
 .../bufr/tables/0/wmo/8/codetables/8042.table      |    13 +
 .../bufr/tables/0/wmo/8/codetables/8043.table      |    21 +
 .../bufr/tables/0/wmo/8/codetables/8050.table      |    11 +
 .../bufr/tables/0/wmo/8/codetables/8051.table      |     7 +
 .../bufr/tables/0/wmo/8/codetables/8052.table      |    26 +
 .../bufr/tables/0/wmo/8/codetables/8053.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/8054.table      |     3 +
 .../bufr/tables/0/wmo/8/codetables/8060.table      |     8 +
 .../bufr/tables/0/wmo/8/codetables/8065.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/8066.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/8070.table      |     6 +
 .../bufr/tables/0/wmo/8/codetables/8072.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/8074.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/8075.table      |     4 +
 .../bufr/tables/0/wmo/8/codetables/8076.table      |     3 +
 .../bufr/tables/0/wmo/8/codetables/8077.table      |     7 +
 .../bufr/tables/0/wmo/8/codetables/8079.table      |     9 +
 .../bufr/tables/0/wmo/8/codetables/8080.table      |     9 +
 .../bufr/tables/0/wmo/8/codetables/8081.table      |     5 +
 .../bufr/tables/0/wmo/8/codetables/8082.table      |     3 +
 .../bufr/tables/0/wmo/8/codetables/8083.table      |     9 +
 .../bufr/tables/0/wmo/8/codetables/8085.table      |     8 +
 definitions/bufr/tables/0/wmo/8/element.table      |  1297 +
 definitions/bufr/tables/0/wmo/8/sequence.def       |   678 +
 .../bufr/tables/0/wmo/9/codetables/1003.table      |     8 +
 .../bufr/tables/0/wmo/9/codetables/10063.table     |    10 +
 .../bufr/tables/0/wmo/9/codetables/10064.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/1007.table      |   132 +
 .../bufr/tables/0/wmo/9/codetables/1031.table      |   219 +
 .../bufr/tables/0/wmo/9/codetables/1032.table      |    41 +
 .../bufr/tables/0/wmo/9/codetables/1033.table      |   219 +
 .../bufr/tables/0/wmo/9/codetables/1035.table      |   219 +
 .../bufr/tables/0/wmo/9/codetables/1090.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/1092.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/11031.table     |     9 +
 .../bufr/tables/0/wmo/9/codetables/11037.table     |    30 +
 .../bufr/tables/0/wmo/9/codetables/11038.table     |    17 +
 .../bufr/tables/0/wmo/9/codetables/11039.table     |    16 +
 .../bufr/tables/0/wmo/9/codetables/13038.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/13039.table     |     3 +
 .../bufr/tables/0/wmo/9/codetables/13040.table     |     9 +
 .../bufr/tables/0/wmo/9/codetables/13041.table     |    10 +
 .../bufr/tables/0/wmo/9/codetables/13051.table     |     8 +
 .../bufr/tables/0/wmo/9/codetables/13056.table     |    10 +
 .../bufr/tables/0/wmo/9/codetables/13057.table     |    11 +
 .../bufr/tables/0/wmo/9/codetables/15025.table     |     2 +
 .../bufr/tables/0/wmo/9/codetables/19001.table     |     7 +
 .../bufr/tables/0/wmo/9/codetables/19008.table     |     5 +
 .../bufr/tables/0/wmo/9/codetables/19010.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/20003.table     |   250 +
 .../bufr/tables/0/wmo/9/codetables/20004.table     |    21 +
 .../bufr/tables/0/wmo/9/codetables/20005.table     |    21 +
 .../bufr/tables/0/wmo/9/codetables/20008.table     |    19 +
 .../bufr/tables/0/wmo/9/codetables/20009.table     |     6 +
 .../bufr/tables/0/wmo/9/codetables/2001.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/20011.table     |    11 +
 .../bufr/tables/0/wmo/9/codetables/20012.table     |    45 +
 .../bufr/tables/0/wmo/9/codetables/20017.table     |    11 +
 .../bufr/tables/0/wmo/9/codetables/20018.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/2002.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/20021.table     |    24 +
 .../bufr/tables/0/wmo/9/codetables/20022.table     |     7 +
 .../bufr/tables/0/wmo/9/codetables/20023.table     |    12 +
 .../bufr/tables/0/wmo/9/codetables/20024.table     |     7 +
 .../bufr/tables/0/wmo/9/codetables/20025.table     |    11 +
 .../bufr/tables/0/wmo/9/codetables/20026.table     |    14 +
 .../bufr/tables/0/wmo/9/codetables/20027.table     |     7 +
 .../bufr/tables/0/wmo/9/codetables/20029.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/2003.table      |    12 +
 .../bufr/tables/0/wmo/9/codetables/20032.table     |     6 +
 .../bufr/tables/0/wmo/9/codetables/20033.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/20034.table     |    12 +
 .../bufr/tables/0/wmo/9/codetables/20035.table     |    12 +
 .../bufr/tables/0/wmo/9/codetables/20036.table     |    12 +
 .../bufr/tables/0/wmo/9/codetables/20037.table     |    12 +
 .../bufr/tables/0/wmo/9/codetables/2004.table      |    11 +
 .../bufr/tables/0/wmo/9/codetables/20040.table     |     9 +
 .../bufr/tables/0/wmo/9/codetables/20041.table     |    11 +
 .../bufr/tables/0/wmo/9/codetables/20042.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/20045.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/20050.table     |    10 +
 .../bufr/tables/0/wmo/9/codetables/20055.table     |    11 +
 .../bufr/tables/0/wmo/9/codetables/20056.table     |     5 +
 .../bufr/tables/0/wmo/9/codetables/20062.table     |    21 +
 .../bufr/tables/0/wmo/9/codetables/20063.table     |     1 +
 .../bufr/tables/0/wmo/9/codetables/20071.table     |    11 +
 .../bufr/tables/0/wmo/9/codetables/20086.table     |     8 +
 .../bufr/tables/0/wmo/9/codetables/20090.table     |     7 +
 .../bufr/tables/0/wmo/9/codetables/20101.table     |    10 +
 .../bufr/tables/0/wmo/9/codetables/20102.table     |    11 +
 .../bufr/tables/0/wmo/9/codetables/2011.table      |    54 +
 .../bufr/tables/0/wmo/9/codetables/2012.table      |     1 +
 .../bufr/tables/0/wmo/9/codetables/2013.table      |     9 +
 .../bufr/tables/0/wmo/9/codetables/2014.table      |    50 +
 .../bufr/tables/0/wmo/9/codetables/2015.table      |     6 +
 .../bufr/tables/0/wmo/9/codetables/2016.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/2019.table      |   296 +
 .../bufr/tables/0/wmo/9/codetables/2020.table      |    24 +
 .../bufr/tables/0/wmo/9/codetables/2021.table      |     8 +
 .../bufr/tables/0/wmo/9/codetables/2022.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/2023.table      |    12 +
 .../bufr/tables/0/wmo/9/codetables/2024.table      |     3 +
 .../bufr/tables/0/wmo/9/codetables/2025.table      |    16 +
 .../bufr/tables/0/wmo/9/codetables/2030.table      |     7 +
 .../bufr/tables/0/wmo/9/codetables/2031.table      |    21 +
 .../bufr/tables/0/wmo/9/codetables/2032.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/2033.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/2034.table      |     7 +
 .../bufr/tables/0/wmo/9/codetables/2036.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/2037.table      |     7 +
 .../bufr/tables/0/wmo/9/codetables/2038.table      |    12 +
 .../bufr/tables/0/wmo/9/codetables/2039.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/2040.table      |     8 +
 .../bufr/tables/0/wmo/9/codetables/2041.table      |     6 +
 .../bufr/tables/0/wmo/9/codetables/2044.table      |     6 +
 .../bufr/tables/0/wmo/9/codetables/2045.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/2046.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/2048.table      |    12 +
 .../bufr/tables/0/wmo/9/codetables/2049.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/2050.table      |    19 +
 .../bufr/tables/0/wmo/9/codetables/2051.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/2052.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/2053.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/2054.table      |     6 +
 .../bufr/tables/0/wmo/9/codetables/2055.table      |     9 +
 .../bufr/tables/0/wmo/9/codetables/2056.table      |     6 +
 .../bufr/tables/0/wmo/9/codetables/2057.table      |     6 +
 .../bufr/tables/0/wmo/9/codetables/2058.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/2059.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/2060.table      |     7 +
 .../bufr/tables/0/wmo/9/codetables/2061.table      |     3 +
 .../bufr/tables/0/wmo/9/codetables/2062.table      |     7 +
 .../bufr/tables/0/wmo/9/codetables/2064.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/2066.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/2070.table      |    13 +
 .../bufr/tables/0/wmo/9/codetables/2080.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/2081.table      |     9 +
 .../bufr/tables/0/wmo/9/codetables/2083.table      |     6 +
 .../bufr/tables/0/wmo/9/codetables/2084.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/2095.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/2096.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/2097.table      |     8 +
 .../bufr/tables/0/wmo/9/codetables/2098.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/2101.table      |    10 +
 .../bufr/tables/0/wmo/9/codetables/2103.table      |     2 +
 .../bufr/tables/0/wmo/9/codetables/2104.table      |     7 +
 .../bufr/tables/0/wmo/9/codetables/21066.table     |    11 +
 .../bufr/tables/0/wmo/9/codetables/21067.table     |    12 +
 .../bufr/tables/0/wmo/9/codetables/21068.table     |     7 +
 .../bufr/tables/0/wmo/9/codetables/21069.table     |     9 +
 .../bufr/tables/0/wmo/9/codetables/21070.table     |    23 +
 .../bufr/tables/0/wmo/9/codetables/21072.table     |     3 +
 .../bufr/tables/0/wmo/9/codetables/21073.table     |     8 +
 .../bufr/tables/0/wmo/9/codetables/21076.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/21109.table     |     8 +
 .../bufr/tables/0/wmo/9/codetables/21115.table     |    11 +
 .../bufr/tables/0/wmo/9/codetables/21116.table     |    16 +
 .../bufr/tables/0/wmo/9/codetables/21119.table     |    14 +
 .../bufr/tables/0/wmo/9/codetables/21144.table     |     1 +
 .../bufr/tables/0/wmo/9/codetables/2115.table      |     7 +
 .../bufr/tables/0/wmo/9/codetables/21150.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/21155.table     |    16 +
 .../bufr/tables/0/wmo/9/codetables/21158.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/21159.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/21169.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/2119.table      |     8 +
 .../bufr/tables/0/wmo/9/codetables/2131.table      |     1 +
 .../bufr/tables/0/wmo/9/codetables/2143.table      |    21 +
 .../bufr/tables/0/wmo/9/codetables/2144.table      |     8 +
 .../bufr/tables/0/wmo/9/codetables/2145.table      |     9 +
 .../bufr/tables/0/wmo/9/codetables/2146.table      |    11 +
 .../bufr/tables/0/wmo/9/codetables/2148.table      |     6 +
 .../bufr/tables/0/wmo/9/codetables/2149.table      |    22 +
 .../bufr/tables/0/wmo/9/codetables/2150.table      |    55 +
 .../bufr/tables/0/wmo/9/codetables/2151.table      |     9 +
 .../bufr/tables/0/wmo/9/codetables/2152.table      |    11 +
 .../bufr/tables/0/wmo/9/codetables/2158.table      |     8 +
 .../bufr/tables/0/wmo/9/codetables/2159.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/2163.table      |    15 +
 .../bufr/tables/0/wmo/9/codetables/2164.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/2166.table      |     6 +
 .../bufr/tables/0/wmo/9/codetables/2167.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/2169.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/2172.table      |     3 +
 .../bufr/tables/0/wmo/9/codetables/2175.table      |     9 +
 .../bufr/tables/0/wmo/9/codetables/2176.table      |     6 +
 .../bufr/tables/0/wmo/9/codetables/2177.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/2178.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/2179.table      |     6 +
 .../bufr/tables/0/wmo/9/codetables/2180.table      |     8 +
 .../bufr/tables/0/wmo/9/codetables/2181.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/2182.table      |     7 +
 .../bufr/tables/0/wmo/9/codetables/2183.table      |     9 +
 .../bufr/tables/0/wmo/9/codetables/2184.table      |     8 +
 .../bufr/tables/0/wmo/9/codetables/2185.table      |     7 +
 .../bufr/tables/0/wmo/9/codetables/2186.table      |    23 +
 .../bufr/tables/0/wmo/9/codetables/2187.table      |    11 +
 .../bufr/tables/0/wmo/9/codetables/2188.table      |    10 +
 .../bufr/tables/0/wmo/9/codetables/2189.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/22056.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/22060.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/22061.table     |    11 +
 .../bufr/tables/0/wmo/9/codetables/22067.table     |     1 +
 .../bufr/tables/0/wmo/9/codetables/22068.table     |     1 +
 .../bufr/tables/0/wmo/9/codetables/22120.table     |    13 +
 .../bufr/tables/0/wmo/9/codetables/22121.table     |     9 +
 .../bufr/tables/0/wmo/9/codetables/22122.table     |     8 +
 .../bufr/tables/0/wmo/9/codetables/22123.table     |     9 +
 .../bufr/tables/0/wmo/9/codetables/23001.table     |     5 +
 .../bufr/tables/0/wmo/9/codetables/23002.table     |    16 +
 .../bufr/tables/0/wmo/9/codetables/23003.table     |     8 +
 .../bufr/tables/0/wmo/9/codetables/23004.table     |     6 +
 .../bufr/tables/0/wmo/9/codetables/23005.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/23006.table     |     8 +
 .../bufr/tables/0/wmo/9/codetables/23007.table     |     5 +
 .../bufr/tables/0/wmo/9/codetables/23008.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/23009.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/23016.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/23018.table     |     6 +
 .../bufr/tables/0/wmo/9/codetables/23031.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/23032.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/24003.table     |     5 +
 .../bufr/tables/0/wmo/9/codetables/25004.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/25005.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/25006.table     |     5 +
 .../bufr/tables/0/wmo/9/codetables/25009.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/25010.table     |     8 +
 .../bufr/tables/0/wmo/9/codetables/25011.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/25012.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/25013.table     |     1 +
 .../bufr/tables/0/wmo/9/codetables/25015.table     |     1 +
 .../bufr/tables/0/wmo/9/codetables/25017.table     |     1 +
 .../bufr/tables/0/wmo/9/codetables/25020.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/25021.table     |     5 +
 .../bufr/tables/0/wmo/9/codetables/25030.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/25032.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/25033.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/25034.table     |     3 +
 .../bufr/tables/0/wmo/9/codetables/25036.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/25040.table     |    10 +
 .../bufr/tables/0/wmo/9/codetables/25041.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/25042.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/25045.table     |    20 +
 .../bufr/tables/0/wmo/9/codetables/25046.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/25047.table     |     3 +
 .../bufr/tables/0/wmo/9/codetables/25048.table     |    15 +
 .../bufr/tables/0/wmo/9/codetables/25049.table     |     5 +
 .../bufr/tables/0/wmo/9/codetables/25051.table     |     6 +
 .../bufr/tables/0/wmo/9/codetables/25053.table     |     6 +
 .../bufr/tables/0/wmo/9/codetables/25069.table     |     7 +
 .../bufr/tables/0/wmo/9/codetables/25086.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/25093.table     |     3 +
 .../bufr/tables/0/wmo/9/codetables/25095.table     |     1 +
 .../bufr/tables/0/wmo/9/codetables/25096.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/25097.table     |    11 +
 .../bufr/tables/0/wmo/9/codetables/25098.table     |     8 +
 .../bufr/tables/0/wmo/9/codetables/25099.table     |     6 +
 .../bufr/tables/0/wmo/9/codetables/25110.table     |     6 +
 .../bufr/tables/0/wmo/9/codetables/25120.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/25122.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/25123.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/25124.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/26010.table     |    25 +
 .../bufr/tables/0/wmo/9/codetables/29001.table     |     6 +
 .../bufr/tables/0/wmo/9/codetables/29002.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/30031.table     |    13 +
 .../bufr/tables/0/wmo/9/codetables/30032.table     |     9 +
 .../bufr/tables/0/wmo/9/codetables/31021.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/31031.table     |     1 +
 .../bufr/tables/0/wmo/9/codetables/33002.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/33003.table     |     5 +
 .../bufr/tables/0/wmo/9/codetables/33005.table     |    23 +
 .../bufr/tables/0/wmo/9/codetables/33006.table     |     5 +
 .../bufr/tables/0/wmo/9/codetables/33015.table     |    16 +
 .../bufr/tables/0/wmo/9/codetables/33020.table     |     8 +
 .../bufr/tables/0/wmo/9/codetables/33021.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/33022.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/33023.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/33024.table     |    10 +
 .../bufr/tables/0/wmo/9/codetables/33025.table     |     5 +
 .../bufr/tables/0/wmo/9/codetables/33026.table     |    10 +
 .../bufr/tables/0/wmo/9/codetables/33027.table     |     5 +
 .../bufr/tables/0/wmo/9/codetables/33028.table     |     6 +
 .../bufr/tables/0/wmo/9/codetables/33030.table     |     7 +
 .../bufr/tables/0/wmo/9/codetables/33031.table     |    21 +
 .../bufr/tables/0/wmo/9/codetables/33032.table     |     6 +
 .../bufr/tables/0/wmo/9/codetables/33033.table     |    23 +
 .../bufr/tables/0/wmo/9/codetables/33035.table     |    15 +
 .../bufr/tables/0/wmo/9/codetables/33037.table     |    19 +
 .../bufr/tables/0/wmo/9/codetables/33038.table     |     9 +
 .../bufr/tables/0/wmo/9/codetables/33039.table     |     9 +
 .../bufr/tables/0/wmo/9/codetables/33041.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/33042.table     |     5 +
 .../bufr/tables/0/wmo/9/codetables/33043.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/33044.table     |    14 +
 .../bufr/tables/0/wmo/9/codetables/33047.table     |    26 +
 .../bufr/tables/0/wmo/9/codetables/33048.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/33049.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/33050.table     |     8 +
 .../bufr/tables/0/wmo/9/codetables/33052.table     |    20 +
 .../bufr/tables/0/wmo/9/codetables/33053.table     |    20 +
 .../bufr/tables/0/wmo/9/codetables/33060.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/35000.table     |    11 +
 .../bufr/tables/0/wmo/9/codetables/35001.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/35030.table     |    10 +
 .../bufr/tables/0/wmo/9/codetables/35031.table     |    20 +
 .../bufr/tables/0/wmo/9/codetables/35032.table     |    10 +
 .../bufr/tables/0/wmo/9/codetables/35033.table     |    12 +
 .../bufr/tables/0/wmo/9/codetables/35034.table     |     7 +
 .../bufr/tables/0/wmo/9/codetables/40011.table     |     4 +
 .../bufr/tables/0/wmo/9/codetables/40012.table     |     3 +
 .../bufr/tables/0/wmo/9/codetables/40013.table     |     5 +
 .../bufr/tables/0/wmo/9/codetables/4059.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/8001.table      |     7 +
 .../bufr/tables/0/wmo/9/codetables/8002.table      |    13 +
 .../bufr/tables/0/wmo/9/codetables/8003.table      |     9 +
 .../bufr/tables/0/wmo/9/codetables/8004.table      |     6 +
 .../bufr/tables/0/wmo/9/codetables/8005.table      |     7 +
 .../bufr/tables/0/wmo/9/codetables/8006.table      |     8 +
 .../bufr/tables/0/wmo/9/codetables/8007.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/8008.table      |     8 +
 .../bufr/tables/0/wmo/9/codetables/8009.table      |    16 +
 .../bufr/tables/0/wmo/9/codetables/8010.table      |    13 +
 .../bufr/tables/0/wmo/9/codetables/8011.table      |    26 +
 .../bufr/tables/0/wmo/9/codetables/8012.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/8013.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/8014.table      |    10 +
 .../bufr/tables/0/wmo/9/codetables/8016.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/8017.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/8018.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/8021.table      |    32 +
 .../bufr/tables/0/wmo/9/codetables/8023.table      |    17 +
 .../bufr/tables/0/wmo/9/codetables/8024.table      |    15 +
 .../bufr/tables/0/wmo/9/codetables/8025.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/8026.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/8029.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/8033.table      |     6 +
 .../bufr/tables/0/wmo/9/codetables/8035.table      |     8 +
 .../bufr/tables/0/wmo/9/codetables/8036.table      |     8 +
 .../bufr/tables/0/wmo/9/codetables/8039.table      |     8 +
 .../bufr/tables/0/wmo/9/codetables/8040.table      |    43 +
 .../bufr/tables/0/wmo/9/codetables/8041.table      |     9 +
 .../bufr/tables/0/wmo/9/codetables/8042.table      |    13 +
 .../bufr/tables/0/wmo/9/codetables/8043.table      |    21 +
 .../bufr/tables/0/wmo/9/codetables/8050.table      |    11 +
 .../bufr/tables/0/wmo/9/codetables/8051.table      |     7 +
 .../bufr/tables/0/wmo/9/codetables/8052.table      |    26 +
 .../bufr/tables/0/wmo/9/codetables/8053.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/8054.table      |     3 +
 .../bufr/tables/0/wmo/9/codetables/8060.table      |     8 +
 .../bufr/tables/0/wmo/9/codetables/8065.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/8066.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/8070.table      |     6 +
 .../bufr/tables/0/wmo/9/codetables/8072.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/8074.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/8075.table      |     4 +
 .../bufr/tables/0/wmo/9/codetables/8076.table      |     3 +
 .../bufr/tables/0/wmo/9/codetables/8077.table      |     7 +
 .../bufr/tables/0/wmo/9/codetables/8079.table      |     9 +
 .../bufr/tables/0/wmo/9/codetables/8080.table      |     9 +
 .../bufr/tables/0/wmo/9/codetables/8081.table      |     5 +
 .../bufr/tables/0/wmo/9/codetables/8082.table      |     3 +
 .../bufr/tables/0/wmo/9/codetables/8083.table      |     9 +
 .../bufr/tables/0/wmo/9/codetables/8085.table      |     8 +
 definitions/bufr/tables/0/wmo/9/element.table      |  1297 +
 definitions/bufr/tables/0/wmo/9/sequence.def       |   678 +
 .../bufr/tables/3/local/1/98/0/element.table       |     4 +-
 definitions/bufr/tables/3/wmo/11/element.table     |    12 +-
 definitions/bufr/templates/BufrTemplate.def        |    66 +
 definitions/bufr/templates/local/BufrTemplate.def  |     3 +
 definitions/check_grib_defs.pl                     |    10 +-
 definitions/common/statistics_grid.def             |     2 +-
 definitions/common/statistics_spectral.def         |     2 +-
 definitions/create_def.pl                          |     8 +-
 definitions/create_mars_struct.pl                  |     6 +-
 definitions/grib1/0.table                          |     3 +-
 definitions/grib1/2.233.253.table                  |     2 +-
 definitions/grib1/2.98.132.table                   |     2 +
 definitions/grib1/2.98.140.table                   |    11 +-
 definitions/grib1/2.98.228.table                   |   186 +-
 definitions/grib1/2.98.230.table                   |    12 +
 definitions/grib1/2.98.235.table                   |    49 +
 definitions/grib1/3.233.table                      |     4 +-
 definitions/grib1/boot.def                         |     2 +-
 definitions/grib1/cfName.def                       |     2 +-
 definitions/grib1/cfVarName.def                    |     2 +-
 definitions/grib1/data.grid_ieee.def               |     2 +-
 definitions/grib1/data.grid_second_order.def       |     2 +-
 .../data.grid_second_order_constant_width.def      |     2 +-
 .../grib1/data.grid_second_order_general_grib1.def |     2 +-
 .../grib1/data.grid_second_order_row_by_row.def    |     2 +-
 definitions/grib1/data.grid_simple.def             |     2 +-
 definitions/grib1/data.grid_simple_matrix.def      |     2 +-
 definitions/grib1/data.spectral_complex.def        |     2 +-
 definitions/grib1/data.spectral_ieee.def           |     2 +-
 definitions/grib1/data.spectral_simple.def         |     2 +-
 definitions/grib1/gds_not_present_bitmap.def       |     2 +-
 definitions/grib1/grid_21.def                      |     2 +-
 definitions/grib1/grid_22.def                      |     2 +-
 definitions/grib1/grid_23.def                      |     2 +-
 definitions/grib1/grid_24.def                      |     2 +-
 definitions/grib1/grid_25.def                      |     2 +-
 definitions/grib1/grid_26.def                      |     2 +-
 definitions/grib1/grid_61.def                      |     2 +-
 definitions/grib1/grid_62.def                      |     2 +-
 definitions/grib1/grid_63.def                      |     2 +-
 definitions/grib1/grid_64.def                      |     2 +-
 definitions/grib1/grid_definition_0.def            |     4 +-
 definitions/grib1/grid_definition_1.def            |     8 +-
 definitions/grib1/grid_definition_10.def           |     6 +-
 definitions/grib1/grid_definition_13.def           |     2 +-
 definitions/grib1/grid_definition_14.def           |     4 +-
 definitions/grib1/grid_definition_192.78.def       |     2 +-
 definitions/grib1/grid_definition_192.98.def       |     4 +-
 definitions/grib1/grid_definition_193.98.def       |     6 +-
 definitions/grib1/grid_definition_20.def           |     6 +-
 definitions/grib1/grid_definition_24.def           |     6 +-
 definitions/grib1/grid_definition_3.def            |     2 +-
 definitions/grib1/grid_definition_30.def           |     8 +-
 definitions/grib1/grid_definition_34.def           |     8 +-
 definitions/grib1/grid_definition_4.def            |     4 +-
 definitions/grib1/grid_definition_5.def            |     8 +-
 definitions/grib1/grid_definition_50.def           |     4 +-
 definitions/grib1/grid_definition_60.def           |     6 +-
 definitions/grib1/grid_definition_70.def           |     9 +-
 definitions/grib1/grid_definition_8.def            |     6 +-
 definitions/grib1/grid_definition_80.def           |     8 +-
 definitions/grib1/grid_definition_90.def           |     8 +-
 definitions/grib1/grid_definition_gaussian.def     |    15 +-
 definitions/grib1/grid_definition_lambert.def      |     6 +-
 definitions/grib1/grid_definition_latlon.def       |     6 +-
 .../grib1/grid_definition_spherical_harmonics.def  |     2 +-
 definitions/grib1/grid_first_last_resandcomp.def   |     4 +-
 definitions/grib1/grid_rotation.def                |     6 +-
 definitions/grib1/grid_stretching.def              |     2 +-
 definitions/grib1/local.1.def                      |     2 +-
 definitions/grib1/local.214.1.def                  |     2 +-
 definitions/grib1/local.214.244.def                |     2 +-
 definitions/grib1/local.214.245.def                |     2 +-
 definitions/grib1/local.253.def                    |     2 +-
 definitions/grib1/local.254.def                    |     2 +-
 definitions/grib1/local.46.def                     |     4 +-
 definitions/grib1/local.54.def                     |     2 +-
 definitions/grib1/local.7.1.def                    |     2 +-
 definitions/grib1/local.80.def                     |     2 +-
 definitions/grib1/local.82.82.def                  |     2 +-
 definitions/grib1/local.82.83.def                  |     2 +-
 definitions/grib1/local.98.1.def                   |     2 +-
 definitions/grib1/local.98.10.def                  |     2 +-
 definitions/grib1/local.98.11.def                  |     2 +-
 definitions/grib1/local.98.13.def                  |     2 +-
 definitions/grib1/local.98.14.def                  |     2 +-
 definitions/grib1/local.98.15.def                  |     2 +-
 definitions/grib1/local.98.16.def                  |     2 +-
 definitions/grib1/local.98.17.def                  |     2 +-
 definitions/grib1/local.98.18.def                  |     2 +-
 definitions/grib1/local.98.19.def                  |    24 +-
 definitions/grib1/local.98.190.def                 |     2 +-
 definitions/grib1/local.98.191.def                 |     2 +-
 definitions/grib1/local.98.192.def                 |     2 +-
 definitions/grib1/local.98.2.def                   |     2 +-
 definitions/grib1/local.98.20.def                  |     2 +-
 definitions/grib1/local.98.21.def                  |     2 +-
 definitions/grib1/local.98.218.def                 |     2 +-
 definitions/grib1/local.98.23.def                  |     2 +-
 definitions/grib1/local.98.24.def                  |     2 +-
 definitions/grib1/local.98.25.def                  |     2 +-
 definitions/grib1/local.98.26.def                  |     2 +-
 definitions/grib1/local.98.27.def                  |     2 +-
 definitions/grib1/local.98.28.def                  |     2 +-
 definitions/grib1/local.98.29.def                  |     2 +-
 definitions/grib1/local.98.3.def                   |     2 +-
 definitions/grib1/local.98.30.def                  |     2 +-
 definitions/grib1/local.98.31.def                  |     2 +-
 definitions/grib1/local.98.32.def                  |     2 +-
 definitions/grib1/local.98.33.def                  |     2 +-
 definitions/grib1/local.98.35.def                  |     2 +-
 definitions/grib1/local.98.36.def                  |     2 +-
 definitions/grib1/local.98.37.def                  |     2 +-
 definitions/grib1/local.98.38.def                  |     2 +-
 definitions/grib1/local.98.39.def                  |     2 +-
 definitions/grib1/local.98.4.def                   |     2 +-
 definitions/grib1/local.98.40.def                  |     2 +-
 definitions/grib1/local.98.5.def                   |     2 +-
 definitions/grib1/local.98.50.def                  |     2 +-
 definitions/grib1/local.98.6.def                   |     2 +-
 definitions/grib1/local.98.7.def                   |     2 +-
 definitions/grib1/local.98.8.def                   |     2 +-
 definitions/grib1/local.98.9.def                   |     2 +-
 definitions/grib1/local.98.def                     |     2 +-
 definitions/grib1/local/edzw/2.0.3.table           |   130 +
 definitions/grib1/local/edzw/3.table               |    48 -
 definitions/grib1/local/edzw/5.table               |     6 +-
 .../local/edzw/generatingProcessIdentifier.table   |    86 +
 definitions/grib1/localConcepts/ammc/name.def      |     2 +-
 definitions/grib1/localConcepts/ammc/paramId.def   |     2 +-
 definitions/grib1/localConcepts/ammc/shortName.def |     2 +-
 definitions/grib1/localConcepts/ammc/units.def     |     2 +-
 definitions/grib1/localConcepts/cnmc/name.def      |     2 +-
 definitions/grib1/localConcepts/cnmc/paramId.def   |     2 +-
 definitions/grib1/localConcepts/cnmc/shortName.def |     2 +-
 definitions/grib1/localConcepts/cnmc/units.def     |     2 +-
 definitions/grib1/localConcepts/ecmf/cfName.def    |     2 +-
 definitions/grib1/localConcepts/ecmf/cfVarName.def |   342 +-
 definitions/grib1/localConcepts/ecmf/name.def      |   354 +-
 definitions/grib1/localConcepts/ecmf/paramId.def   |   338 +-
 definitions/grib1/localConcepts/ecmf/shortName.def |   342 +-
 definitions/grib1/localConcepts/ecmf/units.def     |   390 +-
 definitions/grib1/localConcepts/edzw/name.def      |    35 +-
 definitions/grib1/localConcepts/edzw/paramId.def   |    29 +-
 definitions/grib1/localConcepts/edzw/shortName.def |    29 +-
 definitions/grib1/localConcepts/edzw/units.def     |    73 +-
 definitions/grib1/localConcepts/efkl/cfVarName.def |  1121 +
 definitions/grib1/localConcepts/efkl/name.def      |  1121 +
 definitions/grib1/localConcepts/efkl/paramId.def   |   801 +
 definitions/grib1/localConcepts/efkl/shortName.def |  1121 +
 definitions/grib1/localConcepts/efkl/units.def     |  1121 +
 definitions/grib1/localConcepts/eidb/cfName.def    |    10 +-
 definitions/grib1/localConcepts/eidb/name.def      |    10 +-
 definitions/grib1/localConcepts/eidb/paramId.def   |    10 +-
 definitions/grib1/localConcepts/eidb/shortName.def |    10 +-
 definitions/grib1/localConcepts/eidb/units.def     |    10 +-
 definitions/grib1/localConcepts/lfpw/name.def      |     2 +-
 definitions/grib1/localConcepts/lfpw/paramId.def   |     2 +-
 definitions/grib1/localConcepts/lfpw/shortName.def |     2 +-
 definitions/grib1/localConcepts/lfpw/units.def     |     2 +-
 definitions/grib1/localConcepts/rjtd/cfVarName.def |     2 +-
 definitions/grib1/localConcepts/rjtd/name.def      |     2 +-
 definitions/grib1/localConcepts/rjtd/paramId.def   |     2 +-
 definitions/grib1/localConcepts/rjtd/shortName.def |     2 +-
 definitions/grib1/localConcepts/rjtd/stepType.def  |     2 +-
 definitions/grib1/localConcepts/rjtd/units.def     |     2 +-
 definitions/grib1/localConcepts/sbsj/name.def      |     2 +-
 definitions/grib1/localConcepts/sbsj/paramId.def   |     2 +-
 definitions/grib1/localConcepts/sbsj/shortName.def |     2 +-
 definitions/grib1/localConcepts/sbsj/units.def     |     2 +-
 definitions/grib1/local_no_mars.98.1.def           |     2 +-
 definitions/grib1/local_no_mars.98.24.def          |     2 +-
 definitions/grib1/mars_labeling.23.def             |     2 +-
 definitions/grib1/mars_labeling.4.def              |     2 +-
 definitions/grib1/mars_labeling.def                |     4 +-
 definitions/grib1/name.def                         |     2 +-
 definitions/grib1/param.pl                         |     3 +-
 definitions/grib1/paramId.def                      |     2 +-
 definitions/grib1/predefined_grid.def              |     2 +-
 definitions/grib1/resolution_flags.def             |     2 +-
 definitions/grib1/scanning_mode.def                |     2 +-
 definitions/grib1/section.0.def                    |     2 +-
 definitions/grib1/section.1.def                    |    21 +-
 definitions/grib1/section.2.def                    |    17 +-
 definitions/grib1/section.3.def                    |     2 +-
 definitions/grib1/section.4.def                    |    19 +-
 definitions/grib1/section.5.def                    |     2 +-
 definitions/grib1/shortName.def                    |     2 +-
 definitions/grib1/units.def                        |     2 +-
 definitions/grib2/boot.def                         |     5 +-
 definitions/grib2/boot_multifield.def              |     2 +-
 definitions/grib2/cfName.def                       |     2 +-
 definitions/grib2/cfVarName.def                    |   256 +-
 definitions/grib2/grib2LocalSectionNumber.98.table |     1 +
 definitions/grib2/local.82.82.def                  |     2 +-
 definitions/grib2/local.82.83.def                  |     2 +-
 definitions/grib2/local.98.11.def                  |     2 +-
 definitions/grib2/local.98.14.def                  |     2 +-
 definitions/grib2/local.98.15.def                  |     2 +-
 definitions/grib2/local.98.16.def                  |     2 +-
 definitions/grib2/local.98.18.def                  |     2 +-
 definitions/grib2/local.98.192.def                 |    20 +
 definitions/grib2/local.98.20.def                  |     2 +-
 definitions/grib2/local.98.21.def                  |     2 +-
 definitions/grib2/local.98.24.def                  |     2 +-
 definitions/grib2/local.98.25.def                  |     2 +-
 definitions/grib2/local.98.26.def                  |     2 +-
 definitions/grib2/local.98.28.def                  |     2 +-
 definitions/grib2/local.98.30.def                  |     2 +-
 definitions/grib2/local.98.300.def                 |     2 +-
 definitions/grib2/local.98.36.def                  |     2 +-
 definitions/grib2/local.98.38.def                  |     2 +-
 definitions/grib2/local.98.39.def                  |     2 +-
 definitions/grib2/local.98.500.def                 |     2 +-
 definitions/grib2/local.98.7.def                   |     2 +-
 definitions/grib2/local.98.9.def                   |     2 +-
 definitions/grib2/local/edzw/2.0.3.table           |   130 +
 definitions/grib2/local/edzw/3.table               |    51 +
 definitions/grib2/local/edzw/5.table               |    24 +
 .../local/edzw/generatingProcessIdentifier.table   |    86 +
 definitions/grib2/localConcepts/cnmc/modelName.def |     7 +
 definitions/grib2/localConcepts/cnmc/name.def      |    46 +-
 definitions/grib2/localConcepts/cnmc/paramId.def   |    46 +-
 definitions/grib2/localConcepts/cnmc/shortName.def |    46 +-
 definitions/grib2/localConcepts/cnmc/units.def     |    46 +-
 definitions/grib2/localConcepts/ecmf/cfName.def    |     2 +-
 definitions/grib2/localConcepts/ecmf/cfVarName.def |   358 +-
 definitions/grib2/localConcepts/ecmf/name.def      |   226 +-
 definitions/grib2/localConcepts/ecmf/paramId.def   |   206 +-
 definitions/grib2/localConcepts/ecmf/shortName.def |   210 +-
 definitions/grib2/localConcepts/ecmf/units.def     |   252 +-
 definitions/grib2/localConcepts/edzw/modelName.def |   107 +
 definitions/grib2/localConcepts/edzw/name.def      |   780 +-
 definitions/grib2/localConcepts/edzw/paramId.def   |   772 +-
 definitions/grib2/localConcepts/edzw/shortName.def |   774 +-
 definitions/grib2/localConcepts/edzw/units.def     |   808 +-
 definitions/grib2/localConcepts/efkl/name.def      |   157 +
 definitions/grib2/localConcepts/efkl/paramId.def   |   157 +
 definitions/grib2/localConcepts/efkl/shortName.def |   157 +
 definitions/grib2/localConcepts/efkl/units.def     |   157 +
 definitions/grib2/localConcepts/egrr/name.def      |     6 +-
 definitions/grib2/localConcepts/egrr/paramId.def   |     6 +-
 definitions/grib2/localConcepts/egrr/shortName.def |     6 +-
 definitions/grib2/localConcepts/egrr/units.def     |     6 +-
 definitions/grib2/localConcepts/kwbc/name.def      |    16 +-
 definitions/grib2/localConcepts/kwbc/paramId.def   |    16 +-
 definitions/grib2/localConcepts/kwbc/shortName.def |    16 +-
 definitions/grib2/localConcepts/kwbc/units.def     |    14 +-
 definitions/grib2/localConcepts/lfpw/name.def      |     2 +-
 definitions/grib2/localConcepts/lfpw/paramId.def   |     2 +-
 definitions/grib2/localConcepts/lfpw/shortName.def |     2 +-
 definitions/grib2/localConcepts/lfpw/units.def     |     2 +-
 definitions/grib2/localConcepts/lfpw1/name.def     |     2 +-
 definitions/grib2/localConcepts/lfpw1/paramId.def  |     2 +-
 .../grib2/localConcepts/lfpw1/shortName.def        |     2 +-
 definitions/grib2/localConcepts/lfpw1/units.def    |     2 +-
 definitions/grib2/localConcepts/lssw/modelName.def |    17 +
 definitions/grib2/mars_labeling.def                |     2 +-
 definitions/grib2/meta.def                         |     2 +-
 definitions/grib2/modelName.def                    |    43 +
 definitions/grib2/name.def                         |   246 +-
 definitions/grib2/paramId.def                      |   246 +-
 definitions/grib2/parameters.def                   |     6 +-
 definitions/grib2/products_0.def                   |     2 +-
 definitions/grib2/products_1.def                   |     2 +-
 definitions/grib2/products_2.def                   |     2 +-
 definitions/grib2/products_3.def                   |     2 +-
 definitions/grib2/products_4.def                   |    95 +-
 definitions/grib2/products_5.def                   |    95 +-
 definitions/grib2/products_6.def                   |    90 +-
 definitions/grib2/products_7.def                   |    90 +-
 definitions/grib2/products_8.def                   |    95 +-
 definitions/grib2/products_9.def                   |    95 +-
 definitions/grib2/products_s2s.def                 |   106 +
 definitions/grib2/products_tigge.def               |   102 +
 definitions/grib2/products_uerra.def               |   100 +
 definitions/grib2/rules.def                        |     2 +-
 definitions/grib2/section.0.def                    |     2 +-
 definitions/grib2/section.1.def                    |     2 +-
 definitions/grib2/section.2.def                    |     2 +-
 definitions/grib2/section.3.def                    |    16 +-
 definitions/grib2/section.4.def                    |     4 +-
 definitions/grib2/section.5.def                    |     2 +-
 definitions/grib2/section.6.def                    |     2 +-
 definitions/grib2/section.7.def                    |     2 +-
 definitions/grib2/section.8.def                    |     2 +-
 definitions/grib2/sections.def                     |     2 +-
 definitions/grib2/shortName.def                    |   248 +-
 definitions/grib2/tables/1.0.table                 |     8 +-
 definitions/grib2/tables/14/4.225.table            |    13 +-
 definitions/grib2/tables/14/4.230.table            |     2 +-
 definitions/grib2/tables/14/4.233.table            |     2 +-
 definitions/grib2/tables/15/0.0.table              |    10 +
 definitions/grib2/tables/15/1.0.table              |    20 +
 definitions/grib2/tables/15/1.1.table              |     4 +
 definitions/grib2/tables/15/1.2.table              |     8 +
 definitions/grib2/tables/15/1.3.table              |    14 +
 definitions/grib2/tables/15/1.4.table              |    13 +
 definitions/grib2/tables/15/1.5.table              |     7 +
 definitions/grib2/tables/15/1.6.table              |     8 +
 definitions/grib2/tables/15/3.0.table              |     6 +
 definitions/grib2/tables/15/3.1.table              |    47 +
 definitions/grib2/tables/15/3.10.table             |     8 +
 definitions/grib2/tables/15/3.11.table             |     7 +
 definitions/grib2/tables/15/3.15.table             |    23 +
 definitions/grib2/tables/15/3.2.table              |    14 +
 definitions/grib2/tables/15/3.20.table             |     6 +
 definitions/grib2/tables/15/3.21.table             |     8 +
 definitions/grib2/tables/15/3.3.table              |     9 +
 definitions/grib2/tables/15/3.4.table              |    17 +
 definitions/grib2/tables/15/3.5.table              |     5 +
 definitions/grib2/tables/15/3.6.table              |     2 +
 definitions/grib2/tables/15/3.7.table              |     5 +
 definitions/grib2/tables/15/3.8.table              |     7 +
 definitions/grib2/tables/15/3.9.table              |     4 +
 definitions/grib2/tables/15/4.0.table              |    64 +
 definitions/grib2/tables/15/4.1.0.table            |    27 +
 definitions/grib2/tables/15/4.1.1.table            |     7 +
 definitions/grib2/tables/15/4.1.10.table           |    10 +
 definitions/grib2/tables/15/4.1.192.table          |     4 +
 definitions/grib2/tables/15/4.1.2.table            |     9 +
 definitions/grib2/tables/15/4.1.3.table            |     6 +
 definitions/grib2/tables/15/4.10.table             |    16 +
 definitions/grib2/tables/15/4.11.table             |    10 +
 definitions/grib2/tables/15/4.12.table             |     7 +
 definitions/grib2/tables/15/4.13.table             |     6 +
 definitions/grib2/tables/15/4.14.table             |     6 +
 definitions/grib2/tables/15/4.15.table             |    11 +
 definitions/grib2/tables/15/4.192.table            |     4 +
 definitions/grib2/tables/15/4.2.0.0.table          |    26 +
 definitions/grib2/tables/15/4.2.0.1.table          |   110 +
 definitions/grib2/tables/15/4.2.0.13.table         |     5 +
 definitions/grib2/tables/15/4.2.0.14.table         |     7 +
 definitions/grib2/tables/15/4.2.0.15.table         |    21 +
 definitions/grib2/tables/15/4.2.0.16.table         |    10 +
 definitions/grib2/tables/15/4.2.0.17.table         |     2 +
 definitions/grib2/tables/15/4.2.0.18.table         |    18 +
 definitions/grib2/tables/15/4.2.0.19.table         |    32 +
 definitions/grib2/tables/15/4.2.0.190.table        |     5 +
 definitions/grib2/tables/15/4.2.0.191.table        |     8 +
 definitions/grib2/tables/15/4.2.0.2.table          |    43 +
 definitions/grib2/tables/15/4.2.0.20.table         |    42 +
 definitions/grib2/tables/15/4.2.0.3.table          |    31 +
 definitions/grib2/tables/15/4.2.0.4.table          |    20 +
 definitions/grib2/tables/15/4.2.0.5.table          |    12 +
 definitions/grib2/tables/15/4.2.0.6.table          |    44 +
 definitions/grib2/tables/15/4.2.0.7.table          |    20 +
 definitions/grib2/tables/15/4.2.1.0.table          |    12 +
 definitions/grib2/tables/15/4.2.1.1.table          |     7 +
 definitions/grib2/tables/15/4.2.1.2.table          |    14 +
 definitions/grib2/tables/15/4.2.10.0.table         |    50 +
 definitions/grib2/tables/15/4.2.10.1.table         |     8 +
 definitions/grib2/tables/15/4.2.10.191.table       |     8 +
 definitions/grib2/tables/15/4.2.10.2.table         |    17 +
 definitions/grib2/tables/15/4.2.10.3.table         |     6 +
 definitions/grib2/tables/15/4.2.10.4.table         |    18 +
 definitions/grib2/tables/15/4.2.2.0.table          |    43 +
 definitions/grib2/tables/15/4.2.2.3.table          |    28 +
 definitions/grib2/tables/15/4.2.2.4.table          |     9 +
 definitions/grib2/tables/15/4.2.2.5.table          |     2 +
 definitions/grib2/tables/15/4.2.3.0.table          |    14 +
 definitions/grib2/tables/15/4.2.3.1.table          |    28 +
 definitions/grib2/tables/15/4.201.table            |    15 +
 definitions/grib2/tables/15/4.202.table            |     4 +
 definitions/grib2/tables/15/4.203.table            |    26 +
 definitions/grib2/tables/15/4.204.table            |     9 +
 definitions/grib2/tables/15/4.205.table            |     6 +
 definitions/grib2/tables/15/4.206.table            |     6 +
 definitions/grib2/tables/15/4.207.table            |    10 +
 definitions/grib2/tables/15/4.208.table            |     9 +
 definitions/grib2/tables/15/4.209.table            |     9 +
 definitions/grib2/tables/15/4.210.table            |     6 +
 definitions/grib2/tables/15/4.211.table            |     7 +
 definitions/grib2/tables/15/4.212.table            |    18 +
 definitions/grib2/tables/15/4.213.table            |    16 +
 definitions/grib2/tables/15/4.215.table            |     9 +
 definitions/grib2/tables/15/4.216.table            |    96 +
 definitions/grib2/tables/15/4.217.table            |     8 +
 definitions/grib2/tables/15/4.218.table            |    38 +
 definitions/grib2/tables/15/4.219.table            |     8 +
 definitions/grib2/tables/15/4.220.table            |     6 +
 definitions/grib2/tables/15/4.221.table            |     6 +
 definitions/grib2/tables/15/4.222.table            |     6 +
 definitions/grib2/tables/15/4.223.table            |     5 +
 definitions/grib2/tables/15/4.224.table            |    18 +
 definitions/grib2/tables/15/4.225.table            |   267 +
 definitions/grib2/tables/15/4.227.table            |     9 +
 definitions/grib2/tables/15/4.230.table            |   423 +
 definitions/grib2/tables/15/4.233.table            |   423 +
 definitions/grib2/tables/15/4.234.table            |    21 +
 definitions/grib2/tables/15/4.236.table            |     8 +
 definitions/grib2/tables/15/4.240.table            |    12 +
 definitions/grib2/tables/15/4.241.table            |     9 +
 definitions/grib2/tables/15/4.242.table            |     7 +
 definitions/grib2/tables/15/4.243.table            |    43 +
 definitions/grib2/tables/15/4.3.table              |    20 +
 definitions/grib2/tables/15/4.4.table              |    17 +
 definitions/grib2/tables/15/4.5.table              |    63 +
 definitions/grib2/tables/15/4.6.table              |     9 +
 definitions/grib2/tables/15/4.7.table              |    14 +
 definitions/grib2/tables/15/4.8.table              |     6 +
 definitions/grib2/tables/15/4.9.table              |     9 +
 definitions/grib2/tables/15/4.91.table             |    16 +
 definitions/grib2/tables/15/5.0.table              |    24 +
 definitions/grib2/tables/15/5.1.table              |     6 +
 definitions/grib2/tables/15/5.2.table              |     8 +
 definitions/grib2/tables/15/5.3.table              |     7 +
 definitions/grib2/tables/15/5.4.table              |     6 +
 definitions/grib2/tables/15/5.40.table             |     5 +
 definitions/grib2/tables/15/5.40000.table          |     5 +
 definitions/grib2/tables/15/5.5.table              |     7 +
 definitions/grib2/tables/15/5.50002.table          |    19 +
 definitions/grib2/tables/15/5.6.table              |     7 +
 definitions/grib2/tables/15/5.7.table              |     7 +
 definitions/grib2/tables/15/6.0.table              |     6 +
 definitions/grib2/tables/15/stepType.table         |     4 +
 definitions/grib2/tables/16/0.0.table              |    10 +
 definitions/grib2/tables/16/1.0.table              |    21 +
 definitions/grib2/tables/16/1.1.table              |     4 +
 definitions/grib2/tables/16/1.2.table              |     8 +
 definitions/grib2/tables/16/1.3.table              |    14 +
 definitions/grib2/tables/16/1.4.table              |    13 +
 definitions/grib2/tables/16/1.5.table              |     7 +
 definitions/grib2/tables/16/1.6.table              |     8 +
 definitions/grib2/tables/16/3.0.table              |     6 +
 definitions/grib2/tables/16/3.1.table              |    47 +
 definitions/grib2/tables/16/3.10.table             |     8 +
 definitions/grib2/tables/16/3.11.table             |     7 +
 definitions/grib2/tables/16/3.15.table             |    23 +
 definitions/grib2/tables/16/3.2.table              |    14 +
 definitions/grib2/tables/16/3.20.table             |     6 +
 definitions/grib2/tables/16/3.21.table             |     8 +
 definitions/grib2/tables/16/3.3.table              |     9 +
 definitions/grib2/tables/16/3.4.table              |    17 +
 definitions/grib2/tables/16/3.5.table              |     5 +
 definitions/grib2/tables/16/3.6.table              |     2 +
 definitions/grib2/tables/16/3.7.table              |     5 +
 definitions/grib2/tables/16/3.8.table              |     7 +
 definitions/grib2/tables/16/3.9.table              |     4 +
 definitions/grib2/tables/16/4.0.table              |    65 +
 definitions/grib2/tables/16/4.1.0.table            |    27 +
 definitions/grib2/tables/16/4.1.1.table            |     7 +
 definitions/grib2/tables/16/4.1.10.table           |    10 +
 definitions/grib2/tables/16/4.1.192.table          |     4 +
 definitions/grib2/tables/16/4.1.2.table            |     9 +
 definitions/grib2/tables/16/4.1.3.table            |    11 +
 definitions/grib2/tables/16/4.10.table             |    16 +
 definitions/grib2/tables/16/4.11.table             |    10 +
 definitions/grib2/tables/16/4.12.table             |     7 +
 definitions/grib2/tables/16/4.13.table             |     6 +
 definitions/grib2/tables/16/4.14.table             |     6 +
 definitions/grib2/tables/16/4.15.table             |    11 +
 definitions/grib2/tables/16/4.192.table            |     4 +
 definitions/grib2/tables/16/4.2.0.0.table          |    32 +
 definitions/grib2/tables/16/4.2.0.1.table          |   111 +
 definitions/grib2/tables/16/4.2.0.13.table         |     5 +
 definitions/grib2/tables/16/4.2.0.14.table         |     7 +
 definitions/grib2/tables/16/4.2.0.15.table         |    21 +
 definitions/grib2/tables/16/4.2.0.16.table         |    10 +
 definitions/grib2/tables/16/4.2.0.17.table         |     2 +
 definitions/grib2/tables/16/4.2.0.18.table         |    18 +
 definitions/grib2/tables/16/4.2.0.19.table         |    33 +
 definitions/grib2/tables/16/4.2.0.190.table        |     5 +
 definitions/grib2/tables/16/4.2.0.191.table        |     8 +
 definitions/grib2/tables/16/4.2.0.2.table          |    49 +
 definitions/grib2/tables/16/4.2.0.20.table         |    42 +
 definitions/grib2/tables/16/4.2.0.3.table          |    35 +
 definitions/grib2/tables/16/4.2.0.4.table          |    22 +
 definitions/grib2/tables/16/4.2.0.5.table          |    12 +
 definitions/grib2/tables/16/4.2.0.6.table          |    49 +
 definitions/grib2/tables/16/4.2.0.7.table          |    23 +
 definitions/grib2/tables/16/4.2.1.0.table          |    20 +
 definitions/grib2/tables/16/4.2.1.1.table          |     7 +
 definitions/grib2/tables/16/4.2.1.2.table          |    15 +
 definitions/grib2/tables/16/4.2.10.0.table         |    50 +
 definitions/grib2/tables/16/4.2.10.1.table         |     8 +
 definitions/grib2/tables/16/4.2.10.191.table       |     8 +
 definitions/grib2/tables/16/4.2.10.2.table         |    17 +
 definitions/grib2/tables/16/4.2.10.3.table         |     6 +
 definitions/grib2/tables/16/4.2.10.4.table         |    18 +
 definitions/grib2/tables/16/4.2.2.0.table          |    43 +
 definitions/grib2/tables/16/4.2.2.3.table          |    30 +
 definitions/grib2/tables/16/4.2.2.4.table          |    16 +
 definitions/grib2/tables/16/4.2.2.5.table          |     2 +
 definitions/grib2/tables/16/4.2.3.0.table          |    14 +
 definitions/grib2/tables/16/4.2.3.1.table          |    32 +
 definitions/grib2/tables/16/4.2.3.2.table          |    13 +
 definitions/grib2/tables/16/4.2.3.3.table          |     4 +
 definitions/grib2/tables/16/4.2.3.4.table          |    10 +
 definitions/grib2/tables/16/4.2.3.5.table          |     7 +
 definitions/grib2/tables/16/4.2.3.6.table          |     7 +
 definitions/grib2/tables/16/4.201.table            |    15 +
 definitions/grib2/tables/16/4.202.table            |     4 +
 definitions/grib2/tables/16/4.203.table            |    26 +
 definitions/grib2/tables/16/4.204.table            |     9 +
 definitions/grib2/tables/16/4.205.table            |     6 +
 definitions/grib2/tables/16/4.206.table            |     6 +
 definitions/grib2/tables/16/4.207.table            |    10 +
 definitions/grib2/tables/16/4.208.table            |     9 +
 definitions/grib2/tables/16/4.209.table            |     9 +
 definitions/grib2/tables/16/4.210.table            |     6 +
 definitions/grib2/tables/16/4.211.table            |     7 +
 definitions/grib2/tables/16/4.212.table            |    18 +
 definitions/grib2/tables/16/4.213.table            |    16 +
 definitions/grib2/tables/16/4.215.table            |     9 +
 definitions/grib2/tables/16/4.216.table            |    96 +
 definitions/grib2/tables/16/4.217.table            |     8 +
 definitions/grib2/tables/16/4.218.table            |    44 +
 definitions/grib2/tables/16/4.219.table            |     8 +
 definitions/grib2/tables/16/4.220.table            |     6 +
 definitions/grib2/tables/16/4.221.table            |     6 +
 definitions/grib2/tables/16/4.222.table            |     6 +
 definitions/grib2/tables/16/4.223.table            |     5 +
 definitions/grib2/tables/16/4.224.table            |    18 +
 definitions/grib2/tables/16/4.225.table            |   267 +
 definitions/grib2/tables/16/4.227.table            |     9 +
 definitions/grib2/tables/16/4.230.table            |   423 +
 definitions/grib2/tables/16/4.233.table            |   423 +
 definitions/grib2/tables/16/4.234.table            |    21 +
 definitions/grib2/tables/16/4.236.table            |     8 +
 definitions/grib2/tables/16/4.240.table            |    12 +
 definitions/grib2/tables/16/4.241.table            |     9 +
 definitions/grib2/tables/16/4.242.table            |     7 +
 definitions/grib2/tables/16/4.243.table            |    43 +
 definitions/grib2/tables/16/4.3.table              |    22 +
 definitions/grib2/tables/16/4.4.table              |    17 +
 definitions/grib2/tables/16/4.5.table              |    62 +
 definitions/grib2/tables/16/4.6.table              |     9 +
 definitions/grib2/tables/16/4.7.table              |    14 +
 definitions/grib2/tables/16/4.8.table              |     6 +
 definitions/grib2/tables/16/4.9.table              |     9 +
 definitions/grib2/tables/16/4.91.table             |    16 +
 definitions/grib2/tables/16/5.0.table              |    24 +
 definitions/grib2/tables/16/5.1.table              |     6 +
 definitions/grib2/tables/16/5.2.table              |     8 +
 definitions/grib2/tables/16/5.3.table              |     7 +
 definitions/grib2/tables/16/5.4.table              |     6 +
 definitions/grib2/tables/16/5.40.table             |     5 +
 definitions/grib2/tables/16/5.40000.table          |     5 +
 definitions/grib2/tables/16/5.5.table              |     7 +
 definitions/grib2/tables/16/5.50002.table          |    19 +
 definitions/grib2/tables/16/5.6.table              |     7 +
 definitions/grib2/tables/16/5.7.table              |     7 +
 definitions/grib2/tables/16/6.0.table              |     6 +
 definitions/grib2/tables/16/stepType.table         |     4 +
 definitions/grib2/tables/5/4.2.0.20.table~         |    13 -
 definitions/grib2/tables/6/1.4.table~              |    13 -
 definitions/grib2/tables/6/4.2.0.20.table~         |    13 -
 definitions/grib2/tables/7/1.4.table~              |    13 -
 definitions/grib2/tables/7/4.2.0.20.table~         |    13 -
 definitions/grib2/template.1.0.def                 |     4 +-
 definitions/grib2/template.1.1.def                 |     4 +-
 definitions/grib2/template.1.2.def                 |     6 +-
 definitions/grib2/template.1.calendar.def          |     2 +-
 definitions/grib2/template.1.offset.def            |     2 +-
 definitions/grib2/template.3.0.def                 |     6 +-
 definitions/grib2/template.3.1.def                 |     8 +-
 definitions/grib2/template.3.10.def                |     8 +-
 definitions/grib2/template.3.100.def               |     2 +-
 definitions/grib2/template.3.1000.def              |     6 +-
 definitions/grib2/template.3.101.def               |     2 +-
 definitions/grib2/template.3.110.def               |     6 +-
 definitions/grib2/template.3.1100.def              |     6 +-
 definitions/grib2/template.3.12.def                |     8 +-
 definitions/grib2/template.3.120.def               |     4 +-
 definitions/grib2/template.3.1200.def              |     2 +-
 definitions/grib2/template.3.130.def               |     4 +-
 definitions/grib2/template.3.140.def               |     6 +-
 definitions/grib2/template.3.2.def                 |     8 +-
 definitions/grib2/template.3.20.def                |     6 +-
 definitions/grib2/template.3.3.def                 |    10 +-
 definitions/grib2/template.3.30.def                |     8 +-
 definitions/grib2/template.3.31.def                |     8 +-
 definitions/grib2/template.3.4.def                 |     6 +-
 definitions/grib2/template.3.40.def                |     6 +-
 definitions/grib2/template.3.41.def                |     8 +-
 definitions/grib2/template.3.42.def                |     8 +-
 definitions/grib2/template.3.43.def                |    10 +-
 definitions/grib2/template.3.5.def                 |     8 +-
 definitions/grib2/template.3.50.def                |     4 +-
 definitions/grib2/template.3.51.def                |     6 +-
 definitions/grib2/template.3.52.def                |     6 +-
 definitions/grib2/template.3.53.def                |     8 +-
 definitions/grib2/template.3.90.def                |     8 +-
 definitions/grib2/template.3.gaussian.def          |    15 +-
 definitions/grib2/template.3.grid.def              |     4 +-
 definitions/grib2/template.3.latlon.def            |     6 +-
 definitions/grib2/template.3.latlon_vares.def      |     6 +-
 definitions/grib2/template.3.resolution_flags.def  |     2 +-
 definitions/grib2/template.3.rotation.def          |     3 +-
 definitions/grib2/template.3.scanning_mode.def     |     2 +-
 .../grib2/template.3.shape_of_the_earth.def        |     2 +-
 .../grib2/template.3.spherical_harmonics.def       |     2 +-
 definitions/grib2/template.3.stretching.def        |     2 +-
 definitions/grib2/template.4.0.def                 |     8 +-
 definitions/grib2/template.4.1.def                 |    10 +-
 definitions/grib2/template.4.10.def                |    10 +-
 definitions/grib2/template.4.1000.def              |     6 +-
 definitions/grib2/template.4.1001.def              |     6 +-
 definitions/grib2/template.4.1002.def              |     4 +-
 definitions/grib2/template.4.11.def                |    10 +-
 definitions/grib2/template.4.1100.def              |     6 +-
 definitions/grib2/template.4.1101.def              |     8 +-
 definitions/grib2/template.4.12.def                |    10 +-
 definitions/grib2/template.4.13.def                |    12 +-
 definitions/grib2/template.4.14.def                |    12 +-
 definitions/grib2/template.4.15.def                |     8 +-
 definitions/grib2/template.4.2.def                 |    10 +-
 definitions/grib2/template.4.20.def                |     2 +-
 definitions/grib2/template.4.2000.def              |     2 +-
 definitions/grib2/template.4.254.def               |     2 +-
 definitions/grib2/template.4.3.def                 |    12 +-
 definitions/grib2/template.4.30.def                |     2 +-
 definitions/grib2/template.4.31.def                |     2 +-
 definitions/grib2/template.4.311.def               |     2 +-
 definitions/grib2/template.4.32.def                |     6 +-
 definitions/grib2/template.4.33.def                |     6 +-
 definitions/grib2/template.4.34.def                |     8 +-
 definitions/grib2/template.4.4.def                 |    12 +-
 definitions/grib2/template.4.40.def                |     8 +-
 definitions/grib2/template.4.40033.def             |     4 +-
 definitions/grib2/template.4.40034.def             |     4 +-
 definitions/grib2/template.4.41.def                |    10 +-
 definitions/grib2/template.4.42.def                |     8 +-
 definitions/grib2/template.4.43.def                |    10 +-
 definitions/grib2/template.4.44.def                |    12 +-
 definitions/grib2/template.4.45.def                |    10 +-
 definitions/grib2/template.4.46.def                |     8 +-
 definitions/grib2/template.4.47.def                |    10 +-
 definitions/grib2/template.4.48.def                |     8 +-
 definitions/grib2/template.4.5.def                 |    10 +-
 definitions/grib2/template.4.51.def                |    10 +-
 definitions/grib2/template.4.53.def                |     8 +-
 definitions/grib2/template.4.54.def                |     6 +-
 definitions/grib2/template.4.55.def                |    12 +
 definitions/grib2/template.4.56.def                |    26 +
 definitions/grib2/template.4.6.def                 |    10 +-
 definitions/grib2/template.4.60.def                |    12 +-
 definitions/grib2/template.4.61.def                |    12 +-
 definitions/grib2/template.4.7.def                 |     5 +-
 definitions/grib2/template.4.8.def                 |     8 +-
 definitions/grib2/template.4.9.def                 |    10 +-
 definitions/grib2/template.4.91.def                |    10 +-
 definitions/grib2/template.4.categorical.def       |     2 +-
 definitions/grib2/template.4.circular_cluster.def  |     2 +-
 definitions/grib2/template.4.derived.def           |     2 +-
 definitions/grib2/template.4.eps.def               |     2 +-
 definitions/grib2/template.4.horizontal.def        |     2 +-
 definitions/grib2/template.4.parameter.def         |     6 +-
 definitions/grib2/template.4.parameter_aerosol.def |     8 +-
 .../grib2/template.4.parameter_aerosol_44.def      |     8 +-
 .../grib2/template.4.parameter_aerosol_optical.def |     8 +-
 .../grib2/template.4.parameter_chemical.def        |     2 +-
 .../grib2/template.4.parameter_partition.def       |     6 +-
 definitions/grib2/template.4.parameter_tile.def    |    59 +
 definitions/grib2/template.4.percentile.def        |     2 +-
 definitions/grib2/template.4.point_in_time.def     |     2 +-
 definitions/grib2/template.4.probability.def       |     2 +-
 .../grib2/template.4.rectangular_cluster.def       |     2 +-
 definitions/grib2/template.4.statistical.def       |     2 +-
 definitions/grib2/template.5.0.def                 |     6 +-
 definitions/grib2/template.5.1.def                 |     4 +-
 definitions/grib2/template.5.2.def                 |     6 +-
 definitions/grib2/template.5.3.def                 |     6 +-
 definitions/grib2/template.5.4.def                 |     2 +-
 definitions/grib2/template.5.40.def                |     6 +-
 definitions/grib2/template.5.40000.def             |     4 +-
 definitions/grib2/template.5.40010.def             |     4 +-
 definitions/grib2/template.5.41.def                |     6 +-
 definitions/grib2/template.5.42.def                |     6 +-
 definitions/grib2/template.5.50.def                |     4 +-
 definitions/grib2/template.5.50000.def             |     4 +-
 definitions/grib2/template.5.50001.def             |     2 +-
 definitions/grib2/template.5.50002.def             |     2 +-
 definitions/grib2/template.5.51.def                |     4 +-
 definitions/grib2/template.5.6.def                 |     4 +-
 definitions/grib2/template.5.61.def                |     4 +-
 definitions/grib2/template.5.original_values.def   |     2 +-
 definitions/grib2/template.5.packing.def           |     2 +-
 definitions/grib2/template.5.second_order.def      |     2 +-
 definitions/grib2/template.7.0.def                 |     2 +-
 definitions/grib2/template.7.1.def                 |     2 +-
 definitions/grib2/template.7.2.def                 |     2 +-
 definitions/grib2/template.7.3.def                 |     2 +-
 definitions/grib2/template.7.4.def                 |     2 +-
 definitions/grib2/template.7.40.def                |     2 +-
 definitions/grib2/template.7.40000.def             |     5 +-
 definitions/grib2/template.7.40010.def             |     4 +-
 definitions/grib2/template.7.41.def                |     2 +-
 definitions/grib2/template.7.42.def                |     2 +-
 definitions/grib2/template.7.50.def                |     2 +-
 definitions/grib2/template.7.50000.def             |     2 +-
 definitions/grib2/template.7.50001.def             |     2 +-
 definitions/grib2/template.7.50002.def             |     2 +-
 definitions/grib2/template.7.51.def                |     2 +-
 definitions/grib2/template.7.6.def                 |     2 +-
 definitions/grib2/template.7.61.def                |     2 +-
 definitions/grib2/template.7.second_order.def      |     2 +-
 definitions/grib2/units.def                        |   246 +-
 definitions/gts/boot.def                           |     2 +-
 definitions/installDefinitions.sh                  |     4 +-
 definitions/mars/class.table                       |     7 +-
 .../eswi/{grib1.expr.3v.def => grib.expr.3v.def}   |     0
 .../eswi/{grib1.expr.4v.def => grib.expr.4v.def}   |     0
 .../eswi/{grib1.expr.an.def => grib.expr.an.def}   |     0
 .../eswi/{grib1.expr.fc.def => grib.expr.fc.def}   |     0
 .../eswi/{grib1.expr.si.def => grib.expr.si.def}   |     0
 .../eswi/{grib1.mdfa.fc.def => grib.mdfa.fc.def}   |     0
 .../eswi/{grib1.mnth.an.def => grib.mnth.an.def}   |     0
 .../eswi/{grib1.mnth.fc.def => grib.mnth.fc.def}   |     0
 .../eswi/{grib1.moda.an.def => grib.moda.an.def}   |     0
 .../eswi/{grib1.moda.fc.def => grib.moda.fc.def}   |     0
 .../eswi/{grib1.oper.3v.def => grib.oper.3v.def}   |     0
 .../eswi/{grib1.oper.4v.def => grib.oper.4v.def}   |     0
 .../eswi/{grib1.oper.an.def => grib.oper.an.def}   |     0
 .../eswi/{grib1.oper.fc.def => grib.oper.fc.def}   |     0
 .../eswi/{grib1.oper.si.def => grib.oper.si.def}   |     0
 .../mars/{grib1.amap.an.def => grib.amap.an.def}   |     0
 .../mars/{grib1.dacl.pb.def => grib.dacl.pb.def}   |     0
 .../mars/{grib1.dacw.pb.def => grib.dacw.pb.def}   |     0
 .../mars/{grib1.dcda.4i.def => grib.dcda.4i.def}   |     0
 definitions/mars/grib.dcda.me.def                  |     1 +
 .../mars/{grib1.dcda.sim.def => grib.dcda.sim.def} |     0
 .../mars/{grib1.edmm.an.def => grib.edmm.an.def}   |     0
 .../mars/{grib1.edmm.cl.def => grib.edmm.cl.def}   |     0
 definitions/mars/grib.edmm.fc.def                  |    22 +
 .../mars/{grib1.edmm.fg.def => grib.edmm.fg.def}   |     0
 .../mars/{grib1.edmm.ia.def => grib.edmm.ia.def}   |     0
 .../mars/{grib1.edmm.ssd.def => grib.edmm.ssd.def} |     0
 .../mars/{grib1.edmo.an.def => grib.edmo.an.def}   |     0
 .../mars/{grib1.edmo.cl.def => grib.edmo.cl.def}   |     0
 .../mars/{grib1.edmo.fc.def => grib.edmo.fc.def}   |     0
 .../mars/{grib1.edmo.ssd.def => grib.edmo.ssd.def} |     0
 .../mars/{grib1.efhc.cf.def => grib.efhc.cf.def}   |     0
 .../mars/{grib1.efhc.icp.def => grib.efhc.icp.def} |     0
 .../mars/{grib1.efhc.pf.def => grib.efhc.pf.def}   |     0
 .../mars/{grib1.efho.cf.def => grib.efho.cf.def}   |     0
 .../mars/{grib1.efho.pf.def => grib.efho.pf.def}   |     0
 .../mars/{grib1.efhs.cd.def => grib.efhs.cd.def}   |     0
 .../mars/{grib1.efhs.ed.def => grib.efhs.ed.def}   |     0
 .../mars/{grib1.efhs.em.def => grib.efhs.em.def}   |     0
 .../mars/{grib1.efhs.es.def => grib.efhs.es.def}   |     0
 .../{grib1.efhs.taem.def => grib.efhs.taem.def}    |     0
 .../{grib1.efhs.taes.def => grib.efhs.taes.def}    |     0
 .../mars/{grib1.efov.pf.def => grib.efov.pf.def}   |     0
 .../mars/{grib1.ehmm.em.def => grib.ehmm.em.def}   |     0
 .../mars/{grib1.elda.4i.def => grib.elda.4i.def}   |     0
 .../mars/{grib1.elda.4v.def => grib.elda.4v.def}   |     0
 .../mars/{grib1.elda.an.def => grib.elda.an.def}   |     0
 .../mars/{grib1.elda.ea.def => grib.elda.ea.def}   |     0
 .../mars/{grib1.elda.ef.def => grib.elda.ef.def}   |     0
 .../mars/{grib1.elda.em.def => grib.elda.em.def}   |     0
 .../mars/{grib1.elda.es.def => grib.elda.es.def}   |     0
 .../mars/{grib1.elda.fc.def => grib.elda.fc.def}   |     0
 .../mars/{grib1.elda.me.def => grib.elda.me.def}   |     0
 .../mars/{grib1.elda.ses.def => grib.elda.ses.def} |     0
 definitions/mars/grib.enda.4v.def                  |     1 +
 definitions/mars/grib.enda.an.def                  |     1 +
 definitions/mars/{grib1.enda.def => grib.enda.def} |     0
 definitions/mars/grib.enda.ea.def                  |     1 +
 definitions/mars/grib.enda.ef.def                  |     1 +
 .../mars/{grib1.enda.em.def => grib.enda.em.def}   |     0
 .../mars/{grib1.enda.es.def => grib.enda.es.def}   |     0
 .../mars/{grib1.enda.fc.def => grib.enda.fc.def}   |     0
 .../mars/{grib1.enda.ssd.def => grib.enda.ssd.def} |     0
 definitions/mars/grib.enda.sv.def                  |     1 +
 definitions/mars/grib.enda.svar.def                |     1 +
 .../mars/{grib1.enfh.cf.def => grib.enfh.cf.def}   |     0
 .../{grib1.enfh.fcmax.def => grib.enfh.fcmax.def}  |     0
 ...{grib1.enfh.fcmean.def => grib.enfh.fcmean.def} |     0
 .../{grib1.enfh.fcmin.def => grib.enfh.fcmin.def}  |     0
 ...rib1.enfh.fcstdev.def => grib.enfh.fcstdev.def} |     0
 .../mars/{grib1.enfh.ff.def => grib.enfh.ff.def}   |     0
 .../mars/{grib1.enfh.icp.def => grib.enfh.icp.def} |     0
 .../mars/{grib1.enfh.pf.def => grib.enfh.pf.def}   |     0
 .../{grib1.enfh.tims.def => grib.enfh.tims.def}    |     0
 .../mars/{grib1.enfo.cf.def => grib.enfo.cf.def}   |     0
 .../mars/{grib1.enfo.ci.def => grib.enfo.ci.def}   |     0
 .../mars/{grib1.enfo.cm.def => grib.enfo.cm.def}   |     0
 .../mars/{grib1.enfo.cr.def => grib.enfo.cr.def}   |     0
 .../mars/{grib1.enfo.cs.def => grib.enfo.cs.def}   |     0
 .../mars/{grib1.enfo.cv.def => grib.enfo.cv.def}   |     0
 .../mars/{grib1.enfo.ed.def => grib.enfo.ed.def}   |     0
 .../mars/{grib1.enfo.ef.def => grib.enfo.ef.def}   |     0
 .../mars/{grib1.enfo.efi.def => grib.enfo.efi.def} |     0
 .../{grib1.enfo.efic.def => grib.enfo.efic.def}    |     0
 .../mars/{grib1.enfo.em.def => grib.enfo.em.def}   |     0
 .../mars/{grib1.enfo.ep.def => grib.enfo.ep.def}   |     0
 .../mars/{grib1.enfo.es.def => grib.enfo.es.def}   |     0
 .../mars/{grib1.enfo.fc.def => grib.enfo.fc.def}   |     0
 .../{grib1.enfo.fcmax.def => grib.enfo.fcmax.def}  |     0
 ...{grib1.enfo.fcmean.def => grib.enfo.fcmean.def} |     0
 .../{grib1.enfo.fcmin.def => grib.enfo.fcmin.def}  |     0
 ...rib1.enfo.fcstdev.def => grib.enfo.fcstdev.def} |     0
 .../mars/{grib1.enfo.ff.def => grib.enfo.ff.def}   |     0
 .../mars/{grib1.enfo.fp.def => grib.enfo.fp.def}   |     0
 .../mars/{grib1.enfo.icp.def => grib.enfo.icp.def} |     0
 .../mars/{grib1.enfo.pb.def => grib.enfo.pb.def}   |     0
 .../mars/{grib1.enfo.pd.def => grib.enfo.pd.def}   |     0
 .../mars/{grib1.enfo.pf.def => grib.enfo.pf.def}   |     0
 .../mars/{grib1.enfo.sot.def => grib.enfo.sot.def} |     0
 .../mars/{grib1.enfo.sv.def => grib.enfo.sv.def}   |     0
 .../{grib1.enfo.svar.def => grib.enfo.svar.def}    |     0
 .../{grib1.enfo.taem.def => grib.enfo.taem.def}    |     0
 .../{grib1.enfo.taes.def => grib.enfo.taes.def}    |     0
 .../mars/{grib1.enfo.tu.def => grib.enfo.tu.def}   |     0
 .../mars/{grib1.enwh.cf.def => grib.enwh.cf.def}   |     0
 .../{grib1.enwh.fcmax.def => grib.enwh.fcmax.def}  |     0
 ...{grib1.enwh.fcmean.def => grib.enwh.fcmean.def} |     0
 .../{grib1.enwh.fcmin.def => grib.enwh.fcmin.def}  |     0
 ...rib1.enwh.fcstdev.def => grib.enwh.fcstdev.def} |     0
 .../mars/{grib1.enwh.pf.def => grib.enwh.pf.def}   |     0
 .../mars/{grib1.esmm.em.def => grib.esmm.em.def}   |     0
 .../mars/{grib1.espd.an.def => grib.espd.an.def}   |     0
 definitions/mars/grib.ewda.4v.def                  |     1 +
 definitions/mars/grib.ewda.an.def                  |     1 +
 definitions/mars/{grib1.ewda.def => grib.ewda.def} |     0
 definitions/mars/grib.ewda.fc.def                  |     1 +
 .../mars/{grib1.ewhc.cf.def => grib.ewhc.cf.def}   |     0
 .../mars/{grib1.ewhc.pf.def => grib.ewhc.pf.def}   |     0
 .../mars/{grib1.ewho.cf.def => grib.ewho.cf.def}   |     0
 .../mars/{grib1.ewho.pf.def => grib.ewho.pf.def}   |     0
 .../mars/{grib1.ewla.4v.def => grib.ewla.4v.def}   |     0
 .../mars/{grib1.ewla.an.def => grib.ewla.an.def}   |     0
 .../mars/{grib1.ewla.fc.def => grib.ewla.fc.def}   |     0
 .../mars/{grib1.ewmm.an.def => grib.ewmm.an.def}   |     0
 .../mars/{grib1.ewmm.cl.def => grib.ewmm.cl.def}   |     0
 definitions/mars/grib.ewmm.fc.def                  |    18 +
 .../mars/{grib1.ewmo.an.def => grib.ewmo.an.def}   |     0
 .../mars/{grib1.ewmo.cl.def => grib.ewmo.cl.def}   |     0
 definitions/mars/{grib1.ewmo.def => grib.ewmo.def} |     0
 .../mars/{grib1.ewmo.fc.def => grib.ewmo.fc.def}   |     0
 .../mars/{grib1.gfas.ga.def => grib.gfas.ga.def}   |     0
 .../mars/{grib1.gfas.gsd.def => grib.gfas.gsd.def} |     0
 .../mars/{grib1.kwbc.pf.def => grib.kwbc.pf.def}   |     0
 .../mars/{grib1.lwda.4i.def => grib.lwda.4i.def}   |     0
 .../mars/{grib1.lwda.4v.def => grib.lwda.4v.def}   |     0
 .../mars/{grib1.lwda.an.def => grib.lwda.an.def}   |     0
 .../mars/{grib1.lwda.ea.def => grib.lwda.ea.def}   |     0
 .../mars/{grib1.lwda.ef.def => grib.lwda.ef.def}   |     0
 .../mars/{grib1.lwda.fc.def => grib.lwda.fc.def}   |     0
 .../mars/{grib1.lwda.me.def => grib.lwda.me.def}   |     0
 definitions/mars/grib.lwda.ssd.def                 |     5 +
 .../mars/{grib1.lwwv.4v.def => grib.lwwv.4v.def}   |     0
 .../mars/{grib1.lwwv.an.def => grib.lwwv.an.def}   |     0
 .../mars/{grib1.lwwv.fc.def => grib.lwwv.fc.def}   |     0
 .../mars/{grib1.maed.an.def => grib.maed.an.def}   |     0
 .../mars/{grib1.maed.fc.def => grib.maed.fc.def}   |     0
 .../mars/{grib1.mawv.fc.def => grib.mawv.fc.def}   |     0
 .../mars/{grib1.mdfa.fc.def => grib.mdfa.fc.def}   |     0
 definitions/mars/{grib1.me.def => grib.me.def}     |     0
 .../mars/{grib1.mfam.em.def => grib.mfam.em.def}   |     0
 ...{grib1.mfam.fcmean.def => grib.mfam.fcmean.def} |     0
 .../mars/{grib1.mfam.fp.def => grib.mfam.fp.def}   |     0
 .../mars/{grib1.mfam.pb.def => grib.mfam.pb.def}   |     0
 .../mars/{grib1.mfam.pd.def => grib.mfam.pd.def}   |     0
 .../mars/{grib1.mfhm.em.def => grib.mfhm.em.def}   |     0
 .../mars/{grib1.mfhm.es.def => grib.mfhm.es.def}   |     0
 .../{grib1.mfhm.fcmax.def => grib.mfhm.fcmax.def}  |     0
 ...{grib1.mfhm.fcmean.def => grib.mfhm.fcmean.def} |     0
 .../{grib1.mfhm.fcmin.def => grib.mfhm.fcmin.def}  |     0
 ...rib1.mfhm.fcstdev.def => grib.mfhm.fcstdev.def} |     0
 .../mars/{grib1.mfhw.cf.def => grib.mfhw.cf.def}   |     0
 .../mars/{grib1.mfhw.fc.def => grib.mfhw.fc.def}   |     0
 .../{grib1.mfwm.fcmax.def => grib.mfwm.fcmax.def}  |     0
 ...{grib1.mfwm.fcmean.def => grib.mfwm.fcmean.def} |     0
 .../{grib1.mfwm.fcmin.def => grib.mfwm.fcmin.def}  |     0
 ...rib1.mfwm.fcstdev.def => grib.mfwm.fcstdev.def} |     0
 .../{grib1.mhwm.fcmax.def => grib.mhwm.fcmax.def}  |     0
 ...{grib1.mhwm.fcmean.def => grib.mhwm.fcmean.def} |     0
 .../{grib1.mhwm.fcmin.def => grib.mhwm.fcmin.def}  |     0
 ...rib1.mhwm.fcstdev.def => grib.mhwm.fcstdev.def} |     0
 .../mars/{grib1.mmaf.fc.def => grib.mmaf.fc.def}   |     0
 ...{grib1.mmaf.fcmean.def => grib.mmaf.fcmean.def} |     0
 ...{grib1.mmam.fcmean.def => grib.mmam.fcmean.def} |     0
 .../mars/{grib1.mmsa.em.def => grib.mmsa.em.def}   |     0
 ...{grib1.mmsa.fcmean.def => grib.mmsa.fcmean.def} |     0
 .../mars/{grib1.mmsf.fc.def => grib.mmsf.fc.def}   |     0
 .../mars/{grib1.mmsf.icp.def => grib.mmsf.icp.def} |     0
 .../mars/{grib1.mnfc.cf.def => grib.mnfc.cf.def}   |     0
 .../mars/{grib1.mnfc.ed.def => grib.mnfc.ed.def}   |     0
 .../mars/{grib1.mnfc.em.def => grib.mnfc.em.def}   |     0
 .../mars/{grib1.mnfc.es.def => grib.mnfc.es.def}   |     0
 .../mars/{grib1.mnfc.fc.def => grib.mnfc.fc.def}   |     0
 .../mars/{grib1.mnfc.ff.def => grib.mnfc.ff.def}   |     0
 .../mars/{grib1.mnfc.icp.def => grib.mnfc.icp.def} |     0
 .../mars/{grib1.mnfc.of.def => grib.mnfc.of.def}   |     0
 .../mars/{grib1.mnfh.cf.def => grib.mnfh.cf.def}   |     0
 .../mars/{grib1.mnfh.ed.def => grib.mnfh.ed.def}   |     0
 .../mars/{grib1.mnfh.em.def => grib.mnfh.em.def}   |     0
 .../mars/{grib1.mnfh.es.def => grib.mnfh.es.def}   |     0
 .../mars/{grib1.mnfh.fc.def => grib.mnfh.fc.def}   |     0
 .../mars/{grib1.mnfh.icp.def => grib.mnfh.icp.def} |     0
 .../mars/{grib1.mnfm.em.def => grib.mnfm.em.def}   |     0
 .../mars/{grib1.mnfm.es.def => grib.mnfm.es.def}   |     0
 .../{grib1.mnfm.fcmax.def => grib.mnfm.fcmax.def}  |     0
 ...{grib1.mnfm.fcmean.def => grib.mnfm.fcmean.def} |     0
 .../{grib1.mnfm.fcmin.def => grib.mnfm.fcmin.def}  |     0
 ...rib1.mnfm.fcstdev.def => grib.mnfm.fcstdev.def} |     0
 .../mars/{grib1.mnfw.cf.def => grib.mnfw.cf.def}   |     0
 .../mars/{grib1.mnfw.fc.def => grib.mnfw.fc.def}   |     0
 .../mars/{grib1.mnth.an.def => grib.mnth.an.def}   |     0
 .../mars/{grib1.mnth.cl.def => grib.mnth.cl.def}   |     0
 definitions/mars/grib.mnth.fc.def                  |    16 +
 .../mars/{grib1.mnth.fg.def => grib.mnth.fg.def}   |     0
 .../mars/{grib1.mnth.ia.def => grib.mnth.ia.def}   |     0
 .../mars/{grib1.mnth.ssd.def => grib.mnth.ssd.def} |     0
 .../mars/{grib1.moda.an.def => grib.moda.an.def}   |     0
 .../mars/{grib1.moda.cl.def => grib.moda.cl.def}   |     0
 .../mars/{grib1.moda.fc.def => grib.moda.fc.def}   |     0
 .../mars/{grib1.moda.ssd.def => grib.moda.ssd.def} |     0
 .../mars/{grib1.mofc.cf.def => grib.mofc.cf.def}   |     0
 .../mars/{grib1.mofc.ed.def => grib.mofc.ed.def}   |     0
 .../mars/{grib1.mofc.em.def => grib.mofc.em.def}   |     0
 .../mars/{grib1.mofc.es.def => grib.mofc.es.def}   |     0
 .../mars/{grib1.mofc.fc.def => grib.mofc.fc.def}   |     0
 .../mars/{grib1.mofc.ff.def => grib.mofc.ff.def}   |     0
 .../mars/{grib1.mofc.of.def => grib.mofc.of.def}   |     0
 .../{grib1.mofm.fcmax.def => grib.mofm.fcmax.def}  |     0
 ...{grib1.mofm.fcmean.def => grib.mofm.fcmean.def} |     0
 .../{grib1.mofm.fcmin.def => grib.mofm.fcmin.def}  |     0
 ...rib1.mofm.fcstdev.def => grib.mofm.fcstdev.def} |     0
 .../mars/{grib1.mpic.s3.def => grib.mpic.s3.def}   |     0
 .../mars/{grib1.msda.an.def => grib.msda.an.def}   |     0
 .../mars/{grib1.msdc.an.def => grib.msdc.an.def}   |     0
 .../mars/{grib1.msdc.fc.def => grib.msdc.fc.def}   |     0
 .../mars/{grib1.msmm.em.def => grib.msmm.em.def}   |     0
 .../{grib1.msmm.fcmax.def => grib.msmm.fcmax.def}  |     0
 ...{grib1.msmm.fcmean.def => grib.msmm.fcmean.def} |     0
 .../{grib1.msmm.fcmin.def => grib.msmm.fcmin.def}  |     0
 ...rib1.msmm.fcstdev.def => grib.msmm.fcstdev.def} |     0
 definitions/mars/grib.msmm.hcmean.def              |     1 +
 .../mars/{grib1.ocea.an.def => grib.ocea.an.def}   |     0
 .../mars/{grib1.ocea.ff.def => grib.ocea.ff.def}   |     0
 .../mars/{grib1.ocea.fx.def => grib.ocea.fx.def}   |     0
 .../mars/{grib1.ocea.of.def => grib.ocea.of.def}   |     0
 .../mars/{grib1.ocea.or.def => grib.ocea.or.def}   |     0
 .../mars/{grib1.oper.3v.def => grib.oper.3v.def}   |     0
 .../mars/{grib1.oper.4i.def => grib.oper.4i.def}   |     0
 .../mars/{grib1.oper.4v.def => grib.oper.4v.def}   |     0
 .../mars/{grib1.oper.an.def => grib.oper.an.def}   |     0
 .../mars/{grib1.oper.ea.def => grib.oper.ea.def}   |     0
 .../mars/{grib1.oper.ef.def => grib.oper.ef.def}   |     0
 .../mars/{grib1.oper.fa.def => grib.oper.fa.def}   |     0
 .../mars/{grib1.oper.fc.def => grib.oper.fc.def}   |     0
 .../mars/{grib1.oper.fg.def => grib.oper.fg.def}   |     0
 .../mars/{grib1.oper.go.def => grib.oper.go.def}   |     0
 .../mars/{grib1.oper.ia.def => grib.oper.ia.def}   |     0
 .../mars/{grib1.oper.im.def => grib.oper.im.def}   |     0
 definitions/mars/grib.oper.me.def                  |     1 +
 .../mars/{grib1.oper.oi.def => grib.oper.oi.def}   |     0
 .../mars/{grib1.oper.si.def => grib.oper.si.def}   |     0
 .../mars/{grib1.oper.sim.def => grib.oper.sim.def} |     0
 .../mars/{grib1.oper.ssd.def => grib.oper.ssd.def} |     0
 .../mars/{grib1.scda.4i.def => grib.scda.4i.def}   |     0
 definitions/mars/grib.scda.me.def                  |     1 +
 .../mars/{grib1.seap.an.def => grib.seap.an.def}   |     0
 .../mars/{grib1.seap.ef.def => grib.seap.ef.def}   |     0
 .../mars/{grib1.seap.es.def => grib.seap.es.def}   |     0
 .../mars/{grib1.seap.fc.def => grib.seap.fc.def}   |     0
 .../mars/{grib1.seap.sv.def => grib.seap.sv.def}   |     0
 .../{grib1.seap.svar.def => grib.seap.svar.def}    |     0
 .../mars/{grib1.seas.an.def => grib.seas.an.def}   |     0
 .../mars/{grib1.seas.fc.def => grib.seas.fc.def}   |     0
 .../mars/{grib1.seas.ff.def => grib.seas.ff.def}   |     0
 .../mars/{grib1.seas.fx.def => grib.seas.fx.def}   |     0
 .../mars/{grib1.seas.of.def => grib.seas.of.def}   |     0
 .../mars/{grib1.seas.or.def => grib.seas.or.def}   |     0
 .../mars/{grib1.sens.me.def => grib.sens.me.def}   |     0
 .../mars/{grib1.sens.sf.def => grib.sens.sf.def}   |     0
 .../mars/{grib1.sens.sg.def => grib.sens.sg.def}   |     0
 .../mars/{grib1.sfmm.em.def => grib.sfmm.em.def}   |     0
 .../{grib1.sfmm.fcmax.def => grib.sfmm.fcmax.def}  |     0
 ...{grib1.sfmm.fcmean.def => grib.sfmm.fcmean.def} |     0
 .../{grib1.sfmm.fcmin.def => grib.sfmm.fcmin.def}  |     0
 ...rib1.sfmm.fcstdev.def => grib.sfmm.fcstdev.def} |     0
 .../mars/{grib1.smma.em.def => grib.smma.em.def}   |     0
 ...{grib1.smma.fcmean.def => grib.smma.fcmean.def} |     0
 .../mars/{grib1.supd.an.def => grib.supd.an.def}   |     0
 .../{grib1.swmm.fcmax.def => grib.swmm.fcmax.def}  |     0
 ...{grib1.swmm.fcmean.def => grib.swmm.fcmean.def} |     0
 .../{grib1.swmm.fcmin.def => grib.swmm.fcmin.def}  |     0
 ...rib1.swmm.fcstdev.def => grib.swmm.fcstdev.def} |     0
 .../mars/{grib1.ukmo.s3.def => grib.ukmo.s3.def}   |     0
 .../mars/{grib1.waef.cv.def => grib.waef.cv.def}   |     0
 .../mars/{grib1.waef.efi.def => grib.waef.efi.def} |     0
 .../{grib1.waef.efic.def => grib.waef.efic.def}    |     0
 .../mars/{grib1.waef.ep.def => grib.waef.ep.def}   |     0
 .../{grib1.waef.fcmax.def => grib.waef.fcmax.def}  |     0
 ...{grib1.waef.fcmean.def => grib.waef.fcmean.def} |     0
 .../{grib1.waef.fcmin.def => grib.waef.fcmin.def}  |     0
 ...rib1.waef.fcstdev.def => grib.waef.fcstdev.def} |     0
 .../mars/{grib1.waef.fp.def => grib.waef.fp.def}   |     0
 .../mars/{grib1.waef.pf.def => grib.waef.pf.def}   |     0
 .../mars/{grib1.waef.sot.def => grib.waef.sot.def} |     0
 .../mars/{grib1.wamd.an.def => grib.wamd.an.def}   |     0
 .../mars/{grib1.wamd.fc.def => grib.wamd.fc.def}   |     0
 .../mars/{grib1.wamf.cf.def => grib.wamf.cf.def}   |     0
 .../mars/{grib1.wamf.fc.def => grib.wamf.fc.def}   |     0
 .../mars/{grib1.wamo.an.def => grib.wamo.an.def}   |     0
 .../mars/{grib1.wamo.cl.def => grib.wamo.cl.def}   |     0
 definitions/mars/grib.wamo.fc.def                  |    16 +
 .../mars/{grib1.wasf.fc.def => grib.wasf.fc.def}   |     0
 definitions/mars/grib.wave.4v.def                  |     1 +
 .../mars/{grib1.wave.an.def => grib.wave.an.def}   |     0
 definitions/mars/{grib1.wave.def => grib.wave.def} |     0
 .../mars/{grib1.wave.fc.def => grib.wave.fc.def}   |     0
 .../mars/{grib1.wave.fg.def => grib.wave.fg.def}   |     0
 .../mars/{grib1.wehs.cd.def => grib.wehs.cd.def}   |     0
 .../mars/{grib1.wehs.ed.def => grib.wehs.ed.def}   |     0
 .../mars/{grib1.wehs.em.def => grib.wehs.em.def}   |     0
 .../mars/{grib1.wehs.es.def => grib.wehs.es.def}   |     0
 .../mars/{grib1.weov.pf.def => grib.weov.pf.def}   |     0
 .../{grib1.wmfm.fcmax.def => grib.wmfm.fcmax.def}  |     0
 ...{grib1.wmfm.fcmean.def => grib.wmfm.fcmean.def} |     0
 .../{grib1.wmfm.fcmin.def => grib.wmfm.fcmin.def}  |     0
 ...rib1.wmfm.fcstdev.def => grib.wmfm.fcstdev.def} |     0
 definitions/mars/grib1.dcda.me.def                 |     1 -
 definitions/mars/grib1.edmm.fc.def                 |    22 -
 definitions/mars/grib1.enda.4v.def                 |     1 -
 definitions/mars/grib1.enda.an.def                 |     1 -
 definitions/mars/grib1.enda.ea.def                 |     1 -
 definitions/mars/grib1.enda.ef.def                 |     1 -
 definitions/mars/grib1.enda.sv.def                 |     1 -
 definitions/mars/grib1.enda.svar.def               |     1 -
 definitions/mars/grib1.ewda.4v.def                 |     1 -
 definitions/mars/grib1.ewda.an.def                 |     1 -
 definitions/mars/grib1.ewda.fc.def                 |     1 -
 definitions/mars/grib1.ewmm.fc.def                 |    18 -
 definitions/mars/grib1.mnth.fc.def                 |    16 -
 definitions/mars/grib1.msmm.hcmean.def             |     1 -
 definitions/mars/grib1.oper.me.def                 |     1 -
 definitions/mars/grib1.scda.me.def                 |     1 -
 definitions/mars/grib1.wamo.fc.def                 |    16 -
 definitions/mars/grib1.wave.4v.def                 |     1 -
 definitions/mars/make_type_switch_case.sh          |     2 +-
 definitions/metar/boot.def                         |   106 +-
 definitions/metar/boot.flexible.def                |   102 +-
 definitions/metar/horizontalVisibility.def         |     8 +-
 definitions/metar/runwayState.def                  |     8 +-
 definitions/metar/trend1.def                       |    22 +-
 definitions/metar/trend2.def                       |    22 +-
 definitions/metar/trend3.def                       |    22 +-
 definitions/metar/trend4.def                       |    22 +-
 definitions/publish_new_parameters.sh              |     2 +-
 definitions/taf/boot.def                           |    62 +-
 definitions/taf/horizontalVisibility.def           |     8 +-
 definitions/taf/runwayState.def                    |     8 +-
 definitions/taf/trend1.def                         |    16 +-
 definitions/taf/trend2.def                         |    16 +-
 definitions/taf/trend3.def                         |    16 +-
 definitions/taf/trend4.def                         |    16 +-
 definitions/tide/boot.def                          |     2 +-
 definitions/tide/mars_labeling.def                 |     2 +-
 definitions/tide/section.1.def                     |     2 +-
 definitions/tide/section.4.def                     |     2 +-
 definitions/wrap/boot.def                          |     2 +-
 definitions/x.grib                                 |   Bin 108 -> 0 bytes
 eccodes-import.cmake.in                            |     9 +
 eccodes.sublime-project                            |    18 +
 eccodes_config.h.in                                |     3 +-
 examples/C/.deps/box.Po                            |     1 -
 examples/C/.deps/bufr_attributes.Po                |     1 -
 examples/C/.deps/bufr_clone.Po                     |     1 -
 examples/C/.deps/bufr_expanded.Po                  |     1 -
 examples/C/.deps/bufr_get_keys.Po                  |     1 -
 examples/C/.deps/bufr_keys_iterator.Po             |     1 -
 examples/C/.deps/bufr_missing.Po                   |     1 -
 examples/C/.deps/bufr_read_header.Po               |     1 -
 examples/C/.deps/bufr_read_scatterometer.Po        |     1 -
 examples/C/.deps/bufr_read_synop.Po                |     1 -
 examples/C/.deps/bufr_read_temp.Po                 |     1 -
 examples/C/.deps/bufr_set_keys.Po                  |     1 -
 examples/C/.deps/bufr_subset.Po                    |     1 -
 examples/C/.deps/check_gaussian_grid.Po            |     1 -
 examples/C/.deps/get_product_kind.Po               |     1 -
 examples/C/.deps/grib_clone.Po                     |     1 -
 examples/C/.deps/grib_ensemble_index.Po            |     1 -
 examples/C/.deps/grib_get_data.Po                  |     1 -
 examples/C/.deps/grib_get_keys.Po                  |     1 -
 examples/C/.deps/grib_index.Po                     |     1 -
 examples/C/.deps/grib_iterator.Po                  |     1 -
 examples/C/.deps/grib_iterator_bitmap.Po           |     1 -
 examples/C/.deps/grib_keys_iterator.Po             |     1 -
 examples/C/.deps/grib_list.Po                      |     1 -
 examples/C/.deps/grib_multi.Po                     |     1 -
 examples/C/.deps/grib_multi_write.Po               |     1 -
 examples/C/.deps/grib_nearest.Po                   |     1 -
 examples/C/.deps/grib_precision.Po                 |     1 -
 examples/C/.deps/grib_print_data.Po                |     1 -
 examples/C/.deps/grib_set_bitmap.Po                |     1 -
 examples/C/.deps/grib_set_data.Po                  |     1 -
 examples/C/.deps/grib_set_keys.Po                  |     1 -
 examples/C/.deps/grib_set_pv.Po                    |     1 -
 examples/C/.deps/large_grib1.Po                    |     1 -
 examples/C/.deps/mars_param.Po                     |     1 -
 examples/C/.deps/multi2.Po                         |     1 -
 examples/C/.deps/new_sample.Po                     |     1 -
 examples/C/.deps/points.Po                         |     1 -
 examples/C/.deps/sections_copy.Po                  |     1 -
 examples/C/.deps/set_missing.Po                    |     1 -
 examples/C/.deps/values_check.Po                   |     1 -
 examples/C/CMakeLists.txt                          |    11 +-
 examples/C/Makefile                                |  1715 --
 examples/C/Makefile.am                             |     4 +-
 examples/C/Makefile.in                             |    54 +-
 examples/C/box.c                                   |    80 +-
 examples/C/bufr_attributes.c                       |    31 +-
 examples/C/bufr_attributes.sh                      |     2 +-
 examples/C/bufr_clone.c                            |    10 +-
 examples/C/bufr_clone.sh                           |     2 +-
 examples/C/bufr_expanded.c                         |    14 +-
 examples/C/bufr_expanded.sh                        |     2 +-
 examples/C/bufr_get_keys.c                         |    33 +-
 examples/C/bufr_get_keys.sh                        |     2 +-
 examples/C/bufr_keys_iterator.c                    |     5 +-
 examples/C/bufr_keys_iterator.sh                   |     3 +-
 examples/C/bufr_missing.c                          |     6 +-
 examples/C/bufr_missing.sh                         |     2 +-
 examples/C/bufr_read_header.c                      |     2 +-
 examples/C/bufr_read_header.sh                     |     2 +-
 examples/C/bufr_read_scatterometer.c               |    12 +-
 examples/C/bufr_read_scatterometer.sh              |     2 +-
 examples/C/bufr_read_synop.c                       |    12 +-
 examples/C/bufr_read_synop.sh                      |     2 +-
 examples/C/bufr_read_temp.c                        |    20 +-
 examples/C/bufr_read_temp.sh                       |     2 +-
 examples/C/bufr_set_keys.c                         |     4 +-
 examples/C/bufr_set_keys.sh                        |     2 +-
 examples/C/bufr_subset.c                           |    33 +-
 examples/C/bufr_subset.sh                          |    31 +-
 examples/C/check_gaussian_grid.c                   |   239 -
 examples/C/check_gaussian_grids.sh                 |    16 -
 examples/C/ecmwf_link.sh                           |     2 +-
 examples/C/fieldset.c                              |     2 +-
 examples/C/get_product_kind.c                      |     2 +-
 examples/C/get_product_kind.sh                     |     2 +-
 examples/C/grib_clone.c                            |     2 +-
 examples/C/grib_clone.sh                           |     2 +-
 examples/C/grib_ensemble_index.c                   |     2 +-
 examples/C/grib_get_data.c                         |     2 +-
 examples/C/grib_get_data.sh                        |     2 +-
 examples/C/grib_get_keys.c                         |    10 +-
 examples/C/grib_get_keys.sh                        |     2 +-
 examples/C/grib_index.c                            |    12 +-
 examples/C/grib_iterator.c                         |     2 +-
 examples/C/grib_iterator.sh                        |     2 +-
 examples/C/grib_iterator_bitmap.c                  |     3 +-
 examples/C/grib_keys_iterator.c                    |     7 +-
 examples/C/grib_keys_iterator.sh                   |     2 +-
 examples/C/grib_list.c                             |     2 +-
 examples/C/grib_list.sh                            |     2 +-
 examples/C/grib_multi.c                            |     6 +-
 examples/C/grib_multi.sh                           |     2 +-
 examples/C/grib_multi_write.c                      |     2 +-
 examples/C/grib_multi_write.sh                     |     2 +-
 examples/C/grib_nearest.c                          |     8 +-
 examples/C/grib_precipitation.c                    |     2 +-
 examples/C/grib_precision.c                        |     2 +-
 examples/C/grib_precision.sh                       |     2 +-
 examples/C/grib_print_data.c                       |     2 +-
 examples/C/grib_print_data.sh                      |     2 +-
 examples/C/grib_set_bitmap.c                       |   105 +-
 examples/C/grib_set_bitmap.sh                      |    20 +
 examples/C/grib_set_data.c                         |     2 +-
 examples/C/grib_set_keys.c                         |     2 +-
 examples/C/grib_set_keys.sh                        |     2 +-
 examples/C/grib_set_pv.c                           |    22 +-
 examples/C/grib_set_pv.sh                          |     2 +-
 examples/C/include.sh                              |     8 +-
 examples/C/large_grib1.c                           |    88 +-
 examples/C/large_grib1.sh                          |     7 +-
 examples/C/mars_param.c                            |     2 +-
 examples/C/multi2.c                                |     2 +-
 examples/C/nc.c                                    |    34 +-
 examples/C/points.c                                |     2 +-
 examples/C/rename.sh                               |     2 +-
 examples/C/run_examples.sh                         |     2 +-
 examples/C/sections_copy.c                         |     4 +-
 examples/C/sections_copy.sh                        |     2 +-
 examples/C/set_missing.c                           |     4 +-
 examples/C/set_missing.sh                          |     2 +-
 examples/C/values_check.c                          |     2 +-
 examples/CMakeLists.txt                            |     8 +-
 examples/F90/CMakeLists.txt                        |    46 +-
 examples/F90/Makefile                              |  1673 --
 examples/F90/Makefile.am                           |   125 +-
 examples/F90/Makefile.in                           |   814 +-
 examples/F90/bufr_attributes.f90                   |     2 +-
 examples/F90/bufr_attributes.sh                    |     4 +-
 examples/F90/bufr_clone.f90                        |     2 +-
 examples/F90/bufr_clone.sh                         |     6 +-
 examples/F90/bufr_expanded.f90                     |     2 +-
 examples/F90/bufr_expanded.sh                      |     4 +-
 examples/F90/bufr_get_keys.f90                     |     5 +-
 examples/F90/bufr_get_keys.sh                      |     4 +-
 examples/F90/bufr_keys_iterator.f90                |     2 +-
 examples/F90/bufr_keys_iterator.sh                 |     4 +-
 examples/F90/bufr_read_header.f90                  |     2 +-
 examples/F90/bufr_read_header.sh                   |     4 +-
 examples/F90/bufr_read_scatterometer.f90           |    17 +-
 examples/F90/bufr_read_scatterometer.sh            |    16 +-
 examples/F90/bufr_read_scatterometer_f.ref         |  4036 +++
 examples/F90/bufr_read_synop.f90                   |    12 +-
 examples/F90/bufr_read_synop.sh                    |     4 +-
 examples/F90/bufr_read_temp.f90                    |   132 +-
 examples/F90/bufr_read_temp.sh                     |    13 +-
 examples/F90/bufr_read_tropical_cyclone.f90        |   275 +
 examples/F90/bufr_read_tropical_cyclone.sh         |    34 +
 examples/F90/bufr_set_keys.f90                     |     2 +-
 examples/F90/bufr_set_keys.sh                      |     8 +-
 examples/F90/bufr_subset.f90                       |    15 +-
 examples/F90/bufr_subset.sh                        |    73 +-
 examples/F90/copy_message.f90                      |     2 +-
 examples/F90/copy_message.sh                       |     4 +-
 examples/F90/copy_namespace.f90                    |     2 +-
 examples/F90/count_messages.f90                    |     2 +-
 examples/F90/count_messages.sh                     |     4 +-
 examples/F90/get_data.f90                          |    33 +-
 examples/F90/get_data.sh                           |     4 +-
 examples/F90/get_pl.f90                            |    30 +-
 examples/F90/get_pl.sh                             |     4 +-
 examples/F90/get_product_kind.f90                  |     2 +-
 examples/F90/get_product_kind.sh                   |     4 +-
 examples/F90/get_pv.f90                            |    31 +-
 examples/F90/get_pv.sh                             |     4 +-
 examples/F90/get_set_uuid.sh                       |     4 +-
 examples/F90/grib_clone.f90                        |     2 +-
 examples/F90/grib_clone.sh                         |     4 +-
 examples/F90/grib_get_keys.f90                     |   113 +-
 examples/F90/grib_get_keys.sh                      |     4 +-
 examples/F90/grib_index.f90                        |     2 +-
 examples/F90/grib_index.sh                         |     6 +-
 examples/F90/grib_keys_iterator.f90                |     4 +-
 examples/F90/grib_keys_iterator.sh                 |     4 +-
 examples/F90/grib_multi.f90                        |     2 +-
 examples/F90/grib_multi.sh                         |     4 +-
 examples/F90/grib_multi_write.f90                  |     2 +-
 examples/F90/grib_multi_write.sh                   |     4 +-
 examples/F90/grib_nearest.f90                      |     2 +-
 examples/F90/grib_nearest.sh                       |     4 +-
 examples/F90/grib_precision.f90                    |     2 +-
 examples/F90/grib_precision.sh                     |     4 +-
 examples/F90/grib_print_data.f90                   |     2 +-
 examples/F90/grib_print_data.sh                    |     4 +-
 examples/F90/grib_set_bitmap.f90                   |    22 +-
 examples/F90/grib_set_bitmap.sh                    |    14 +-
 examples/F90/grib_set_keys.f90                     |     2 +-
 examples/F90/grib_set_keys.sh                      |     6 +-
 examples/F90/grib_set_pv.f90                       |     2 +-
 examples/F90/grib_set_pv.sh                        |     4 +-
 examples/F90/include.sh                            |     8 +-
 examples/F90/keys_iterator_fortran.f90             |     2 +-
 examples/F90/multi_fortran.f90                     |     2 +-
 examples/F90/new_from_file.f90                     |     2 +-
 examples/F90/precision_fortran.f90                 |     2 +-
 examples/F90/print_data_fortran.f90                |     2 +-
 examples/F90/read_from_file.f90                    |     6 +-
 examples/F90/read_from_file.sh                     |     4 +-
 examples/F90/read_message.f90                      |     2 +-
 examples/F90/read_message.sh                       |     4 +-
 examples/F90/samples.f90                           |     2 +-
 examples/F90/samples.sh                            |     6 +-
 examples/F90/set_fortran.f90                       |     2 +-
 examples/F90/set_gvc.f90                           |     2 +-
 examples/F90/set_missing.f90                       |     2 +-
 examples/F90/set_missing.sh                        |     4 +-
 examples/F90/set_missing_fortran.f90               |     2 +-
 examples/fieldset.c                                |     2 +-
 examples/get.c                                     |     2 +-
 examples/get_fortran.F                             |     2 +-
 examples/grib_precipitation.c                      |     2 +-
 examples/iterator.c                                |     2 +-
 examples/iterator_fortran.F                        |     2 +-
 examples/keys_iterator.c                           |     2 +-
 examples/keys_iterator_fortran.F                   |     2 +-
 examples/multi.c                                   |     2 +-
 examples/multi_fortran.F                           |     2 +-
 examples/nearest.c                                 |     2 +-
 examples/precision.c                               |     2 +-
 examples/precision_fortran.F                       |     2 +-
 examples/print_data.c                              |     2 +-
 examples/print_data_fortran.F                      |     2 +-
 examples/python/.deps/count_messages.Po            |     1 -
 examples/python/.deps/grib_iterator.Po             |     1 -
 examples/python/.deps/grib_keys_iterator.Po        |     1 -
 examples/python/.deps/grib_print_data.Po           |     1 -
 examples/python/CMakeLists.txt                     |    28 +-
 examples/python/Makefile                           |  1260 -
 examples/python/Makefile.am                        |    76 +-
 examples/python/Makefile.in                        |    87 +-
 examples/python/binary_message.py                  |    22 +-
 examples/python/binary_message.sh                  |     6 +-
 examples/python/bufr_attributes.py                 |    74 +-
 examples/python/bufr_attributes.sh                 |     7 +-
 examples/python/bufr_clone.py                      |    27 +-
 examples/python/bufr_clone.sh                      |     7 +-
 examples/python/bufr_encode_flight.py              |   110 +
 examples/python/bufr_encode_flight.sh              |    25 +
 examples/python/bufr_expanded.py                   |    40 +-
 examples/python/bufr_expanded.sh                   |     5 +-
 examples/python/bufr_get_keys.py                   |    96 +-
 examples/python/bufr_get_keys.sh                   |     7 +-
 examples/python/bufr_keys_iterator.py              |    32 +-
 examples/python/bufr_keys_iterator.sh              |     7 +-
 examples/python/bufr_read_header.py                |    34 +-
 examples/python/bufr_read_header.sh                |     4 +-
 examples/python/bufr_read_scatterometer.py         |    83 +-
 examples/python/bufr_read_scatterometer.sh         |     7 +-
 examples/python/bufr_read_synop.py                 |    60 +-
 examples/python/bufr_read_synop.sh                 |     7 +-
 examples/python/bufr_read_temp.py                  |   115 +-
 examples/python/bufr_read_temp.sh                  |    15 +-
 examples/python/bufr_read_tropical_cyclone.py      |   204 +
 examples/python/bufr_read_tropical_cyclone.sh      |    39 +
 examples/python/bufr_set_keys.py                   |    47 +-
 examples/python/bufr_set_keys.sh                   |     8 +-
 examples/python/bufr_subset.py                     |    54 +-
 examples/python/bufr_subset.sh                     |    55 +-
 examples/python/count_messages.c                   |     2 +-
 examples/python/count_messages.py                  |    34 +-
 examples/python/count_messages.sh                  |     2 +-
 examples/python/flight_data.csv                    |   186 +
 examples/python/get_product_kind.py                |    20 +-
 examples/python/get_product_kind.sh                |     4 +-
 examples/python/grib_clone.py                      |    35 +-
 examples/python/grib_clone.sh                      |     2 +-
 examples/python/grib_get_keys.py                   |    42 +-
 examples/python/grib_get_keys.sh                   |     4 +-
 examples/python/grib_index.py                      |    45 +-
 examples/python/grib_index.sh                      |     2 +-
 examples/python/grib_iterator.c                    |     2 +-
 examples/python/grib_iterator.py                   |    33 +-
 examples/python/grib_iterator.sh                   |     4 +-
 examples/python/grib_keys_iterator.c               |    51 +-
 examples/python/grib_keys_iterator.py              |    26 +-
 examples/python/grib_keys_iterator.sh              |     2 +-
 examples/python/grib_multi_write.py                |    31 +-
 examples/python/grib_multi_write.sh                |     2 +-
 examples/python/grib_nearest.py                    |    34 +-
 examples/python/grib_nearest.sh                    |     2 +-
 examples/python/grib_print_data.c                  |     2 +-
 examples/python/grib_print_data.py                 |    25 +-
 examples/python/grib_print_data.sh                 |     2 +-
 examples/python/grib_set_bitmap.py                 |    29 +-
 examples/python/grib_set_bitmap.sh                 |    10 +-
 examples/python/grib_set_keys.py                   |    73 +-
 examples/python/grib_set_keys.sh                   |     2 +-
 examples/python/grib_set_pv.py                     |    27 +-
 examples/python/gts_get_keys.py                    |    74 +
 examples/python/gts_get_keys.sh                    |    29 +
 examples/python/include.ctest.sh.in                |     1 +
 examples/python/include.sh                         |     1 +
 examples/python/keys_iterator_bufr.py              |    24 +-
 examples/python/keys_iterator_gts.py               |    24 +-
 examples/python/metar_get_keys.py                  |    75 +
 examples/python/metar_get_keys.sh                  |    29 +
 examples/python/samples.py                         |    48 +-
 examples/python/samples.sh                         |     2 +-
 examples/python/set_missing.py                     |    35 +-
 examples/python/set_missing.sh                     |     2 +-
 examples/set.c                                     |     2 +-
 examples/set_bitmap.c                              |     2 +-
 examples/set_fortran.F                             |     2 +-
 examples/set_pv.c                                  |     2 +-
 examples/set_pv_fortran.F                          |     2 +-
 fortran/.deps/grib_fortran.Plo                     |     1 -
 fortran/CMakeLists.txt                             |     2 +-
 fortran/Makefile                                   |   809 -
 fortran/create_grib_f90.sh                         |     2 +-
 fortran/eccodes_constants.h                        |     2 +
 fortran/eccodes_f77.h                              |     2 -
 fortran/eccodes_f90_head.f90                       |     5 +-
 fortran/eccodes_f90_int.f90                        |     2 +-
 fortran/eccodes_f90_int_size_t.f90                 |     2 +-
 fortran/eccodes_f90_long_int.f90                   |     2 +-
 fortran/eccodes_f90_long_size_t.f90                |     2 +-
 fortran/eccodes_f90_tail.f90                       |    10 +-
 fortran/grib_api_constants.h                       |     2 +
 fortran/grib_f77.c                                 |     2 +-
 fortran/grib_f90_head.f90                          |     6 +-
 fortran/grib_f90_int.f90                           |     2 +-
 fortran/grib_f90_int_size_t.f90                    |     2 +-
 fortran/grib_f90_long_int.f90                      |     2 +-
 fortran/grib_f90_long_size_t.f90                   |     2 +-
 fortran/grib_f90_tail.f90                          |    64 +-
 fortran/grib_fortran.c                             |   132 +-
 fortran/grib_fortran_kinds.c                       |     2 +-
 fortran/grib_fortran_prototypes.h                  |     2 +-
 fortran/grib_types.f90                             |     2 +-
 fortran/same_int_long.f90                          |     2 +-
 fortran/same_int_size_t.f90                        |     2 +-
 grib_api-import.cmake.in                           |     3 -
 html/Makefile.am                                   |     0
 html/annotated.html                                |     0
 html/clone_8f90-example.html                       |   101 +
 html/copy__message_8f90-example.html               |    76 +
 html/doxygen.css                                   |   322 +
 html/doxygen.png                                   |   Bin 0 -> 1281 bytes
 html/examples.html                                 |    58 +
 html/files.html                                    |    30 +
 html/get_8c-example.html                           |   128 +
 html/get_8f90-example.html                         |   134 +
 html/get__data_8f90-example.html                   |    90 +
 html/get__fortran_8_f-example.html                 |   151 +
 html/get__pl_8f90-example.html                     |    70 +
 html/get__pv_8f90-example.html                     |    70 +
 html/globals.html                                  |   360 +
 html/globals_defs.html                             |   162 +
 html/globals_func.html                             |   210 +
 html/globals_type.html                             |    73 +
 html/grib__api_8h.html                             |  1602 ++
 html/grib_compare.html                             |   281 +
 html/grib_convert.html                             |    59 +
 html/grib_copy.html                                |    82 +
 html/grib_debug.html                               |   649 +
 html/grib_dump.html                                |   242 +
 html/grib_dump_examples.html                       |    21 +
 html/grib_examples.html                            |    34 +
 html/grib_filter.html                              |   124 +
 html/grib_get.html                                 |    80 +
 html/grib_get_data.html                            |    67 +
 html/grib_keys.html                                |   153 +
 html/grib_ls.html                                  |    95 +
 html/grib_set.html                                 |   103 +
 html/group__context.html                           |  1016 +
 html/group__get__set.html                          |   938 +
 html/group__grib__handle.html                      |   625 +
 html/group__handling__coded__messages.html         |   124 +
 html/group__iterators.html                         |   559 +
 html/group__keys__iterator.html                    |   364 +
 html/index.html                                    |    64 +
 html/installation.html                             |    37 +
 .../interfacegrib__api_1_1grib__find__nearest.html |     0
 html/interfacegrib__api_1_1grib__get.html          |     0
 html/interfacegrib__api_1_1grib__get__data.html    |     0
 html/interfacegrib__api_1_1grib__get__element.html |     0
 html/interfacegrib__api_1_1grib__set.html          |     0
 html/iterator_8c-example.html                      |   103 +
 html/iterator__fortran_8_f-example.html            |   103 +
 html/keys.html                                     |    88 +
 html/keys__iterator_8c-example.html                |   115 +
 html/keys__iterator_8f90-example.html              |    86 +
 html/keys__iterator__fortran_8_f-example.html      |    99 +
 html/modules.html                                  |    30 +
 html/multi_8c-example.html                         |    85 +
 html/multi_8f90-example.html                       |    72 +
 html/multi__fortran_8_f-example.html               |    99 +
 html/namespacegrib__api.html                       |     0
 html/namespacemembers.html                         |     0
 html/namespacemembers_func.html                    |     0
 html/namespaces.html                               |     0
 html/nearest_8c-example.html                       |   107 +
 html/nearest_8f90-example.html                     |   104 +
 html/pages.html                                    |    59 +
 html/precision_8c-example.html                     |   138 +
 html/precision_8f90-example.html                   |   119 +
 html/precision__fortran_8_f-example.html           |   118 +
 html/print__data_8c-example.html                   |    94 +
 html/print__data_8f90-example.html                 |    88 +
 html/print__data__fortran_8_f-example.html         |   101 +
 html/set_8c-example.html                           |   100 +
 html/set_8f90-example.html                         |   107 +
 html/set__bitmap_8f90-example.html                 |   102 +
 html/set__fortran_8_f-example.html                 |    89 +
 html/set__missing_8f90-example.html                |    69 +
 html/set__pv_8f90-example.html                     |    96 +
 html/tab_b.gif                                     |   Bin 0 -> 35 bytes
 html/tab_l.gif                                     |   Bin 0 -> 706 bytes
 html/tab_r.gif                                     |   Bin 0 -> 2585 bytes
 html/tabs.css                                      |   102 +
 html/tools.html                                    |    26 +
 ifs_samples/CMakeLists.txt                         |    16 +
 ifs_samples/grib1/CMakeLists.txt                   |    18 +-
 ifs_samples/grib1/Makefile                         |   860 -
 ifs_samples/grib1_mlgrib2/CMakeLists.txt           |    18 +-
 ifs_samples/grib1_mlgrib2/Makefile                 |   864 -
 ifs_samples/grib1_mlgrib2_ieee32/CMakeLists.txt    |    18 +-
 ifs_samples/grib1_mlgrib2_ieee64/CMakeLists.txt    |    18 +-
 ifs_samples/grib1_mlgrib2_ieee64/Makefile          |   865 -
 libtool                                            |     4 +-
 license.pl                                         |     2 +-
 mars_tests/include.sh                              |     2 +-
 mars_tests/ls.sh                                   |     2 +-
 perf/jmeter.awk                                    |     2 +-
 perf/time.sh                                       |     2 +-
 perl/GRIB-API/Makefile.PL                          |     4 +-
 perl/GRIB-API/README                               |     2 +-
 perl/GRIB-API/convert.pl                           |     2 +-
 perl/GRIB-API/t/GRIB-API.t                         |    27 +
 perl/GRIB-API/test.pl                              |     2 +-
 perl/Makefile                                      |   532 -
 python/.deps/grib_interface.Plo                    |     1 -
 python/.deps/gribapi_swig_wrap.Plo                 |     1 -
 python/CMakeLists.txt                              |    24 +-
 python/Makefile                                    |   879 -
 python/eccode_swig.i                               |     2 +
 python/eccodes.py                                  |     7 +
 python/grib_errors.h                               |     4 +
 python/grib_interface.c                            |   497 +-
 python/gribapi.c                                   |     2 +-
 python/gribapi.py                                  |   914 +-
 python/gribapi_swig.i                              |     4 +
 python/init_eccodes.py                             |     2 +
 python/init_gribapi.py                             |     2 +
 python/swig_wrap_array.c                           |   482 +-
 python/swig_wrap_array.py                          |    49 +
 python/swig_wrap_numpy.c                           |   482 +-
 python/swig_wrap_numpy.py                          |    49 +
 python/test_general.py                             |     5 -
 rpms/eccodes.pc                                    |     2 +-
 rpms/eccodes.spec                                  |     2 +-
 rpms/eccodes_f90.pc                                |     2 +-
 samples/CMakeLists.txt                             |    11 +-
 samples/Makefile                                   |   622 -
 samples/reduced_gg_pl_64_grib1.tmpl                |   Bin 0 -> 364 bytes
 samples/reduced_gg_pl_64_grib2.tmpl                |   Bin 0 -> 452 bytes
 samples/reduced_rotated_gg_ml_grib1.tmpl           |   Bin 0 -> 982 bytes
 samples/reduced_rotated_gg_ml_grib2.tmpl           |   Bin 0 -> 1055 bytes
 samples/reduced_rotated_gg_pl_1024_grib1.tmpl      |   Bin 0 -> 4214 bytes
 samples/reduced_rotated_gg_pl_1024_grib2.tmpl      |   Bin 0 -> 4304 bytes
 samples/reduced_rotated_gg_pl_1280_grib1.tmpl      |   Bin 0 -> 5238 bytes
 samples/reduced_rotated_gg_pl_1280_grib2.tmpl      |   Bin 0 -> 5328 bytes
 samples/reduced_rotated_gg_pl_128_grib1.tmpl       |   Bin 0 -> 630 bytes
 samples/reduced_rotated_gg_pl_128_grib2.tmpl       |   Bin 0 -> 720 bytes
 samples/reduced_rotated_gg_pl_160_grib1.tmpl       |   Bin 0 -> 758 bytes
 samples/reduced_rotated_gg_pl_160_grib2.tmpl       |   Bin 0 -> 848 bytes
 samples/reduced_rotated_gg_pl_2000_grib1.tmpl      |   Bin 0 -> 8118 bytes
 samples/reduced_rotated_gg_pl_2000_grib2.tmpl      |   Bin 0 -> 8208 bytes
 samples/reduced_rotated_gg_pl_200_grib1.tmpl       |   Bin 0 -> 918 bytes
 samples/reduced_rotated_gg_pl_200_grib2.tmpl       |   Bin 0 -> 1008 bytes
 samples/reduced_rotated_gg_pl_256_grib1.tmpl       |   Bin 0 -> 1142 bytes
 samples/reduced_rotated_gg_pl_256_grib2.tmpl       |   Bin 0 -> 1232 bytes
 samples/reduced_rotated_gg_pl_320_grib1.tmpl       |   Bin 0 -> 1398 bytes
 samples/reduced_rotated_gg_pl_320_grib2.tmpl       |   Bin 0 -> 1488 bytes
 samples/reduced_rotated_gg_pl_32_grib1.tmpl        |   Bin 0 -> 246 bytes
 samples/reduced_rotated_gg_pl_32_grib2.tmpl        |   Bin 0 -> 336 bytes
 samples/reduced_rotated_gg_pl_400_grib1.tmpl       |   Bin 0 -> 1718 bytes
 samples/reduced_rotated_gg_pl_400_grib2.tmpl       |   Bin 0 -> 1808 bytes
 samples/reduced_rotated_gg_pl_48_grib1.tmpl        |   Bin 0 -> 310 bytes
 samples/reduced_rotated_gg_pl_48_grib2.tmpl        |   Bin 0 -> 400 bytes
 samples/reduced_rotated_gg_pl_512_grib1.tmpl       |   Bin 0 -> 2166 bytes
 samples/reduced_rotated_gg_pl_512_grib2.tmpl       |   Bin 0 -> 2256 bytes
 samples/reduced_rotated_gg_pl_640_grib1.tmpl       |   Bin 0 -> 2678 bytes
 samples/reduced_rotated_gg_pl_640_grib2.tmpl       |   Bin 0 -> 2768 bytes
 samples/reduced_rotated_gg_pl_80_grib1.tmpl        |   Bin 0 -> 438 bytes
 samples/reduced_rotated_gg_pl_80_grib2.tmpl        |   Bin 0 -> 528 bytes
 samples/reduced_rotated_gg_pl_96_grib1.tmpl        |   Bin 0 -> 502 bytes
 samples/reduced_rotated_gg_pl_96_grib2.tmpl        |   Bin 0 -> 592 bytes
 samples/reduced_rotated_gg_pl_grib1.tmpl           |   Bin 0 -> 246 bytes
 samples/reduced_rotated_gg_pl_grib2.tmpl           |   Bin 0 -> 319 bytes
 samples/reduced_rotated_gg_sfc_grib1.tmpl          |   Bin 0 -> 246 bytes
 samples/reduced_rotated_gg_sfc_grib2.tmpl          |   Bin 0 -> 319 bytes
 samples/reduced_rotated_gg_sfc_jpeg_grib2.tmpl     |   Bin 0 -> 508 bytes
 samples/rotated_gg_ml_grib1.tmpl                   |   Bin 0 -> 854 bytes
 samples/rotated_gg_ml_grib2.tmpl                   |   Bin 0 -> 927 bytes
 samples/rotated_gg_pl_grib1.tmpl                   |   Bin 0 -> 118 bytes
 samples/rotated_gg_pl_grib2.tmpl                   |   Bin 0 -> 191 bytes
 samples/rotated_gg_sfc_grib1.tmpl                  |   Bin 0 -> 118 bytes
 samples/rotated_gg_sfc_grib2.tmpl                  |   Bin 0 -> 191 bytes
 share/ecbuild/toolchains/ecmwf-XC30-Cray.cmake     |    81 +
 share/ecbuild/toolchains/ecmwf-XC30-GNU.cmake      |    73 +
 share/ecbuild/toolchains/ecmwf-XC30-Intel.cmake    |    76 +
 src/.deps/action.Plo                               |     1 -
 src/.deps/action_class_alias.Plo                   |     1 -
 src/.deps/action_class_assert.Plo                  |     1 -
 src/.deps/action_class_close.Plo                   |     1 -
 src/.deps/action_class_concept.Plo                 |     1 -
 src/.deps/action_class_gen.Plo                     |     1 -
 src/.deps/action_class_hash_array.Plo              |     1 -
 src/.deps/action_class_if.Plo                      |     1 -
 src/.deps/action_class_list.Plo                    |     1 -
 src/.deps/action_class_meta.Plo                    |     1 -
 src/.deps/action_class_modify.Plo                  |     1 -
 src/.deps/action_class_noop.Plo                    |     1 -
 src/.deps/action_class_print.Plo                   |     1 -
 src/.deps/action_class_put.Plo                     |     1 -
 src/.deps/action_class_remove.Plo                  |     1 -
 src/.deps/action_class_rename.Plo                  |     1 -
 src/.deps/action_class_section.Plo                 |     1 -
 src/.deps/action_class_set.Plo                     |     1 -
 src/.deps/action_class_set_darray.Plo              |     1 -
 src/.deps/action_class_set_iarray.Plo              |     1 -
 src/.deps/action_class_set_missing.Plo             |     1 -
 src/.deps/action_class_switch.Plo                  |     1 -
 src/.deps/action_class_template.Plo                |     1 -
 src/.deps/action_class_trigger.Plo                 |     1 -
 src/.deps/action_class_variable.Plo                |     1 -
 src/.deps/action_class_when.Plo                    |     1 -
 src/.deps/action_class_while.Plo                   |     1 -
 src/.deps/action_class_write.Plo                   |     1 -
 src/.deps/compile.Plo                              |     1 -
 src/.deps/eccodes.Plo                              |     1 -
 src/.deps/functions.Plo                            |     1 -
 src/.deps/grib_2order_packer_simple.Plo            |     1 -
 src/.deps/grib_accessor.Plo                        |     1 -
 src/.deps/grib_accessor_class.Plo                  |     1 -
 .../grib_accessor_class_abstract_long_vector.Plo   |     1 -
 src/.deps/grib_accessor_class_abstract_vector.Plo  |     1 -
 src/.deps/grib_accessor_class_apply_operators.Plo  |     1 -
 src/.deps/grib_accessor_class_array.Plo            |     1 -
 src/.deps/grib_accessor_class_ascii.Plo            |     1 -
 src/.deps/grib_accessor_class_assert.Plo           |     1 -
 src/.deps/grib_accessor_class_bit.Plo              |     1 -
 src/.deps/grib_accessor_class_bitmap.Plo           |     1 -
 src/.deps/grib_accessor_class_bits.Plo             |     1 -
 src/.deps/grib_accessor_class_bits_per_value.Plo   |     1 -
 src/.deps/grib_accessor_class_blob.Plo             |     1 -
 src/.deps/grib_accessor_class_box.Plo              |     1 -
 src/.deps/grib_accessor_class_budgdate.Plo         |     1 -
 src/.deps/grib_accessor_class_bufr_data.Plo        |     1 -
 src/.deps/grib_accessor_class_bufr_data_array.Plo  |     1 -
 .../grib_accessor_class_bufr_data_element.Plo      |     1 -
 .../grib_accessor_class_bufr_elements_table.Plo    |     1 -
 src/.deps/grib_accessor_class_bufr_group.Plo       |     1 -
 ...accessor_class_bufr_has_delayed_replication.Plo |     1 -
 ..._accessor_class_bufrdc_expanded_descriptors.Plo |     1 -
 src/.deps/grib_accessor_class_bytes.Plo            |     1 -
 ...ib_accessor_class_change_scanning_direction.Plo |     1 -
 src/.deps/grib_accessor_class_codeflag.Plo         |     1 -
 src/.deps/grib_accessor_class_codetable.Plo        |     1 -
 src/.deps/grib_accessor_class_codetable_title.Plo  |     1 -
 src/.deps/grib_accessor_class_codetable_units.Plo  |     1 -
 src/.deps/grib_accessor_class_concept.Plo          |     1 -
 src/.deps/grib_accessor_class_constant.Plo         |     1 -
 src/.deps/grib_accessor_class_count_file.Plo       |     1 -
 src/.deps/grib_accessor_class_count_missing.Plo    |     1 -
 src/.deps/grib_accessor_class_count_total.Plo      |     1 -
 .../grib_accessor_class_data_2order_packing.Plo    |     1 -
 ...ib_accessor_class_data_2order_packing_count.Plo |     1 -
 .../grib_accessor_class_data_apply_bitmap.Plo      |     1 -
 ...b_accessor_class_data_apply_boustrophedonic.Plo |     1 -
 ...sor_class_data_apply_boustrophedonic_bitmap.Plo |     1 -
 ...rib_accessor_class_data_apply_gdsnotpresent.Plo |     1 -
 .../grib_accessor_class_data_ccsds_packing.Plo     |     1 -
 .../grib_accessor_class_data_complex_packing.Plo   |     1 -
 .../grib_accessor_class_data_constant_field.Plo    |     1 -
 src/.deps/grib_accessor_class_data_dummy_field.Plo |     1 -
 .../grib_accessor_class_data_g1complex_packing.Plo |     1 -
 ..._data_g1second_order_constant_width_packing.Plo |     1 -
 ...ata_g1second_order_general_extended_packing.Plo |     1 -
 ...r_class_data_g1second_order_general_packing.Plo |     1 -
 ...lass_data_g1second_order_row_by_row_packing.Plo |     1 -
 ...grib_accessor_class_data_g1secondary_bitmap.Plo |     1 -
 ...grib_accessor_class_data_g1shsimple_packing.Plo |     1 -
 .../grib_accessor_class_data_g1simple_packing.Plo  |     1 -
 .../grib_accessor_class_data_g22order_packing.Plo  |     1 -
 .../grib_accessor_class_data_g2complex_packing.Plo |     1 -
 ...grib_accessor_class_data_g2secondary_bitmap.Plo |     1 -
 ...grib_accessor_class_data_g2shsimple_packing.Plo |     1 -
 .../grib_accessor_class_data_g2simple_packing.Plo  |     1 -
 ...ss_data_g2simple_packing_with_preprocessing.Plo |     1 -
 .../grib_accessor_class_data_jpeg2000_packing.Plo  |     1 -
 src/.deps/grib_accessor_class_data_png_packing.Plo |     1 -
 src/.deps/grib_accessor_class_data_raw_packing.Plo |     1 -
 .../grib_accessor_class_data_secondary_bitmap.Plo  |     1 -
 src/.deps/grib_accessor_class_data_sh_packed.Plo   |     1 -
 src/.deps/grib_accessor_class_data_sh_unpacked.Plo |     1 -
 .../grib_accessor_class_data_shsimple_packing.Plo  |     1 -
 .../grib_accessor_class_data_simple_packing.Plo    |     1 -
 .../grib_accessor_class_decimal_precision.Plo      |     1 -
 src/.deps/grib_accessor_class_dictionary.Plo       |     1 -
 src/.deps/grib_accessor_class_dirty.Plo            |     1 -
 src/.deps/grib_accessor_class_divdouble.Plo        |     1 -
 src/.deps/grib_accessor_class_double.Plo           |     1 -
 src/.deps/grib_accessor_class_element.Plo          |     1 -
 src/.deps/grib_accessor_class_evaluate.Plo         |     1 -
 .../grib_accessor_class_expanded_descriptors.Plo   |     1 -
 src/.deps/grib_accessor_class_forward.Plo          |     1 -
 ...cessor_class_from_scale_factor_scaled_value.Plo |     1 -
 .../grib_accessor_class_g1_half_byte_codeflag.Plo  |     1 -
 src/.deps/grib_accessor_class_g1_increment.Plo     |     1 -
 .../grib_accessor_class_g1_message_length.Plo      |     1 -
 .../grib_accessor_class_g1_section4_length.Plo     |     1 -
 src/.deps/grib_accessor_class_g1area.Plo           |     1 -
 src/.deps/grib_accessor_class_g1bitmap.Plo         |     1 -
 src/.deps/grib_accessor_class_g1date.Plo           |     1 -
 .../grib_accessor_class_g1day_of_the_year_date.Plo |     1 -
 ...ib_accessor_class_g1end_of_interval_monthly.Plo |     1 -
 src/.deps/grib_accessor_class_g1fcperiod.Plo       |     1 -
 src/.deps/grib_accessor_class_g1forecastmonth.Plo  |     1 -
 src/.deps/grib_accessor_class_g1monthlydate.Plo    |     1 -
 ...r_class_g1number_of_coded_values_sh_complex.Plo |     1 -
 ...or_class_g1number_of_coded_values_sh_simple.Plo |     1 -
 src/.deps/grib_accessor_class_g1p1p2.Plo           |     1 -
 src/.deps/grib_accessor_class_g1param.Plo          |     1 -
 src/.deps/grib_accessor_class_g1step_range.Plo     |     1 -
 .../grib_accessor_class_g1verificationdate.Plo     |     1 -
 src/.deps/grib_accessor_class_g2_chemical.Plo      |     1 -
 src/.deps/grib_accessor_class_g2_eps.Plo           |     1 -
 src/.deps/grib_accessor_class_g2_mars_labeling.Plo |     1 -
 src/.deps/grib_accessor_class_g2bitmap.Plo         |     1 -
 src/.deps/grib_accessor_class_g2bitmap_present.Plo |     1 -
 src/.deps/grib_accessor_class_g2date.Plo           |     1 -
 src/.deps/grib_accessor_class_g2end_step.Plo       |     1 -
 src/.deps/grib_accessor_class_g2grid.Plo           |     1 -
 src/.deps/grib_accessor_class_g2latlon.Plo         |     1 -
 src/.deps/grib_accessor_class_g2level.Plo          |     1 -
 src/.deps/grib_accessor_class_g2lon.Plo            |     1 -
 src/.deps/grib_accessor_class_g2step.Plo           |     1 -
 src/.deps/grib_accessor_class_g2step_range.Plo     |     1 -
 src/.deps/grib_accessor_class_gds_is_present.Plo   |     1 -
 .../grib_accessor_class_gds_not_present_bitmap.Plo |     1 -
 src/.deps/grib_accessor_class_gen.Plo              |     1 -
 src/.deps/grib_accessor_class_getenv.Plo           |     1 -
 src/.deps/grib_accessor_class_global_gaussian.Plo  |     1 -
 src/.deps/grib_accessor_class_group.Plo            |     1 -
 src/.deps/grib_accessor_class_gts_header.Plo       |     1 -
 src/.deps/grib_accessor_class_hash_array.Plo       |     1 -
 src/.deps/grib_accessor_class_headers_only.Plo     |     1 -
 src/.deps/grib_accessor_class_ibmfloat.Plo         |     1 -
 src/.deps/grib_accessor_class_ieeefloat.Plo        |     1 -
 src/.deps/grib_accessor_class_ifs_param.Plo        |     1 -
 src/.deps/grib_accessor_class_int16.Plo            |     1 -
 .../grib_accessor_class_int16_little_endian.Plo    |     1 -
 src/.deps/grib_accessor_class_int32.Plo            |     1 -
 .../grib_accessor_class_int32_little_endian.Plo    |     1 -
 src/.deps/grib_accessor_class_int64.Plo            |     1 -
 .../grib_accessor_class_int64_little_endian.Plo    |     1 -
 src/.deps/grib_accessor_class_int8.Plo             |     1 -
 src/.deps/grib_accessor_class_iterator.Plo         |     1 -
 src/.deps/grib_accessor_class_julian_day.Plo       |     1 -
 src/.deps/grib_accessor_class_ksec1expver.Plo      |     1 -
 src/.deps/grib_accessor_class_label.Plo            |     1 -
 src/.deps/grib_accessor_class_laplacian.Plo        |     1 -
 src/.deps/grib_accessor_class_latitudes.Plo        |     1 -
 src/.deps/grib_accessor_class_latlon_increment.Plo |     1 -
 src/.deps/grib_accessor_class_latlonvalues.Plo     |     1 -
 src/.deps/grib_accessor_class_library_version.Plo  |     1 -
 src/.deps/grib_accessor_class_local_definition.Plo |     1 -
 src/.deps/grib_accessor_class_long.Plo             |     1 -
 src/.deps/grib_accessor_class_long_vector.Plo      |     1 -
 src/.deps/grib_accessor_class_longitudes.Plo       |     1 -
 src/.deps/grib_accessor_class_lookup.Plo           |     1 -
 src/.deps/grib_accessor_class_mars_param.Plo       |     1 -
 src/.deps/grib_accessor_class_mars_step.Plo        |     1 -
 src/.deps/grib_accessor_class_md5.Plo              |     1 -
 src/.deps/grib_accessor_class_message.Plo          |     1 -
 src/.deps/grib_accessor_class_message_copy.Plo     |     1 -
 src/.deps/grib_accessor_class_missing.Plo          |     1 -
 src/.deps/grib_accessor_class_nearest.Plo          |     1 -
 src/.deps/grib_accessor_class_non_alpha.Plo        |     1 -
 .../grib_accessor_class_number_of_coded_values.Plo |     1 -
 src/.deps/grib_accessor_class_number_of_points.Plo |     1 -
 ...ib_accessor_class_number_of_points_gaussian.Plo |     1 -
 src/.deps/grib_accessor_class_number_of_values.Plo |     1 -
 ...sor_class_number_of_values_data_raw_packing.Plo |     1 -
 src/.deps/grib_accessor_class_octect_number.Plo    |     1 -
 src/.deps/grib_accessor_class_offset_file.Plo      |     1 -
 src/.deps/grib_accessor_class_offset_values.Plo    |     1 -
 src/.deps/grib_accessor_class_pad.Plo              |     1 -
 src/.deps/grib_accessor_class_padding.Plo          |     1 -
 src/.deps/grib_accessor_class_padto.Plo            |     1 -
 src/.deps/grib_accessor_class_padtoeven.Plo        |     1 -
 src/.deps/grib_accessor_class_padtomultiple.Plo    |     1 -
 src/.deps/grib_accessor_class_position.Plo         |     1 -
 .../grib_accessor_class_reference_value_error.Plo  |     1 -
 src/.deps/grib_accessor_class_round.Plo            |     1 -
 src/.deps/grib_accessor_class_scale.Plo            |     1 -
 src/.deps/grib_accessor_class_scale_values.Plo     |     1 -
 ..._accessor_class_second_order_bits_per_value.Plo |     1 -
 src/.deps/grib_accessor_class_section.Plo          |     1 -
 src/.deps/grib_accessor_class_section_length.Plo   |     1 -
 src/.deps/grib_accessor_class_section_padding.Plo  |     1 -
 src/.deps/grib_accessor_class_section_pointer.Plo  |     1 -
 .../grib_accessor_class_select_step_template.Plo   |     1 -
 .../grib_accessor_class_sexagesimal2decimal.Plo    |     1 -
 src/.deps/grib_accessor_class_signed.Plo           |     1 -
 src/.deps/grib_accessor_class_signed_bits.Plo      |     1 -
 .../grib_accessor_class_simple_packing_error.Plo   |     1 -
 src/.deps/grib_accessor_class_size.Plo             |     1 -
 src/.deps/grib_accessor_class_smart_table.Plo      |     1 -
 .../grib_accessor_class_smart_table_column.Plo     |     1 -
 src/.deps/grib_accessor_class_spd.Plo              |     1 -
 .../grib_accessor_class_spectral_truncation.Plo    |     1 -
 src/.deps/grib_accessor_class_sprintf.Plo          |     1 -
 src/.deps/grib_accessor_class_statistics.Plo       |     1 -
 .../grib_accessor_class_statistics_spectral.Plo    |     1 -
 src/.deps/grib_accessor_class_step_in_units.Plo    |     1 -
 src/.deps/grib_accessor_class_sum.Plo              |     1 -
 src/.deps/grib_accessor_class_suppressed.Plo       |     1 -
 src/.deps/grib_accessor_class_time.Plo             |     1 -
 src/.deps/grib_accessor_class_times.Plo            |     1 -
 src/.deps/grib_accessor_class_to_double.Plo        |     1 -
 src/.deps/grib_accessor_class_to_integer.Plo       |     1 -
 src/.deps/grib_accessor_class_to_string.Plo        |     1 -
 src/.deps/grib_accessor_class_transient.Plo        |     1 -
 src/.deps/grib_accessor_class_uint16.Plo           |     1 -
 .../grib_accessor_class_uint16_little_endian.Plo   |     1 -
 src/.deps/grib_accessor_class_uint32.Plo           |     1 -
 .../grib_accessor_class_uint32_little_endian.Plo   |     1 -
 src/.deps/grib_accessor_class_uint64.Plo           |     1 -
 .../grib_accessor_class_uint64_little_endian.Plo   |     1 -
 src/.deps/grib_accessor_class_uint8.Plo            |     1 -
 .../grib_accessor_class_unexpanded_descriptors.Plo |     1 -
 .../grib_accessor_class_unpack_bufr_values.Plo     |     1 -
 src/.deps/grib_accessor_class_unsigned.Plo         |     1 -
 src/.deps/grib_accessor_class_unsigned_bits.Plo    |     1 -
 src/.deps/grib_accessor_class_validity_date.Plo    |     1 -
 src/.deps/grib_accessor_class_validity_time.Plo    |     1 -
 src/.deps/grib_accessor_class_values.Plo           |     1 -
 src/.deps/grib_accessor_class_variable.Plo         |     1 -
 src/.deps/grib_accessor_class_vector.Plo           |     1 -
 src/.deps/grib_accessor_class_when.Plo             |     1 -
 src/.deps/grib_api_version.Plo                     |     1 -
 src/.deps/grib_bits.Plo                            |     1 -
 src/.deps/grib_box.Plo                             |     1 -
 src/.deps/grib_box_class.Plo                       |     1 -
 src/.deps/grib_box_class_gen.Plo                   |     1 -
 src/.deps/grib_box_class_reduced_gaussian.Plo      |     1 -
 src/.deps/grib_box_class_regular_gaussian.Plo      |     1 -
 src/.deps/grib_buffer.Plo                          |     1 -
 src/.deps/grib_bufr_descriptor.Plo                 |     1 -
 src/.deps/grib_bufr_descriptors_array.Plo          |     1 -
 src/.deps/grib_concept.Plo                         |     1 -
 src/.deps/grib_context.Plo                         |     1 -
 src/.deps/grib_darray.Plo                          |     1 -
 src/.deps/grib_date.Plo                            |     1 -
 src/.deps/grib_dependency.Plo                      |     1 -
 src/.deps/grib_dumper.Plo                          |     1 -
 src/.deps/grib_dumper_class.Plo                    |     1 -
 src/.deps/grib_dumper_class_c_code.Plo             |     1 -
 src/.deps/grib_dumper_class_debug.Plo              |     1 -
 src/.deps/grib_dumper_class_default.Plo            |     1 -
 src/.deps/grib_dumper_class_json.Plo               |     1 -
 src/.deps/grib_dumper_class_keys.Plo               |     1 -
 src/.deps/grib_dumper_class_serialize.Plo          |     1 -
 src/.deps/grib_dumper_class_wmo.Plo                |     1 -
 src/.deps/grib_dumper_class_xml.Plo                |     1 -
 src/.deps/grib_errors.Plo                          |     1 -
 src/.deps/grib_expression.Plo                      |     1 -
 src/.deps/grib_expression_class_accessor.Plo       |     1 -
 src/.deps/grib_expression_class_binop.Plo          |     1 -
 src/.deps/grib_expression_class_double.Plo         |     1 -
 src/.deps/grib_expression_class_functor.Plo        |     1 -
 src/.deps/grib_expression_class_is_in_dict.Plo     |     1 -
 src/.deps/grib_expression_class_is_in_list.Plo     |     1 -
 src/.deps/grib_expression_class_is_integer.Plo     |     1 -
 src/.deps/grib_expression_class_length.Plo         |     1 -
 src/.deps/grib_expression_class_long.Plo           |     1 -
 src/.deps/grib_expression_class_string.Plo         |     1 -
 src/.deps/grib_expression_class_string_compare.Plo |     1 -
 src/.deps/grib_expression_class_sub_string.Plo     |     1 -
 src/.deps/grib_expression_class_true.Plo           |     1 -
 src/.deps/grib_expression_class_unop.Plo           |     1 -
 src/.deps/grib_fieldset.Plo                        |     1 -
 src/.deps/grib_filepool.Plo                        |     1 -
 src/.deps/grib_gaussian_reduced.Plo                |     1 -
 src/.deps/grib_geography.Plo                       |     1 -
 src/.deps/grib_handle.Plo                          |     1 -
 src/.deps/grib_hash_array.Plo                      |     1 -
 src/.deps/grib_hash_keys.Plo                       |     1 -
 src/.deps/grib_header_compute.Plo                  |     1 -
 src/.deps/grib_iarray.Plo                          |     1 -
 src/.deps/grib_ibmfloat.Plo                        |     1 -
 src/.deps/grib_ieeefloat.Plo                       |     1 -
 src/.deps/grib_index.Plo                           |     1 -
 src/.deps/grib_io.Plo                              |     1 -
 src/.deps/grib_iterator.Plo                        |     1 -
 src/.deps/grib_iterator_class.Plo                  |     1 -
 src/.deps/grib_iterator_class_gaussian.Plo         |     1 -
 src/.deps/grib_iterator_class_gaussian_reduced.Plo |     1 -
 src/.deps/grib_iterator_class_gen.Plo              |     1 -
 ...iterator_class_lambert_azimuthal_equal_area.Plo |     1 -
 .../grib_iterator_class_lambert_conformal.Plo      |     1 -
 src/.deps/grib_iterator_class_latlon.Plo           |     1 -
 src/.deps/grib_iterator_class_latlon_reduced.Plo   |     1 -
 .../grib_iterator_class_polar_stereographic.Plo    |     1 -
 src/.deps/grib_iterator_class_regular.Plo          |     1 -
 src/.deps/grib_itrie.Plo                           |     1 -
 src/.deps/grib_jasper_encoding.Plo                 |     1 -
 src/.deps/grib_keys_iterator.Plo                   |     1 -
 src/.deps/grib_lex.Plo                             |     1 -
 src/.deps/grib_loader_from_handle.Plo              |     1 -
 src/.deps/grib_memory.Plo                          |     1 -
 src/.deps/grib_nearest.Plo                         |     1 -
 src/.deps/grib_nearest_class.Plo                   |     1 -
 src/.deps/grib_nearest_class_gen.Plo               |     1 -
 src/.deps/grib_nearest_class_lambert_conformal.Plo |     1 -
 src/.deps/grib_nearest_class_latlon_reduced.Plo    |     1 -
 src/.deps/grib_nearest_class_reduced.Plo           |     1 -
 src/.deps/grib_nearest_class_regular.Plo           |     1 -
 src/.deps/grib_nearest_class_sh.Plo                |     1 -
 src/.deps/grib_openjpeg_encoding.Plo               |     1 -
 src/.deps/grib_parse_utils.Plo                     |     1 -
 src/.deps/grib_query.Plo                           |     1 -
 src/.deps/grib_rules.Plo                           |     1 -
 src/.deps/grib_sarray.Plo                          |     1 -
 src/.deps/grib_scaling.Plo                         |     1 -
 src/.deps/grib_templates.Plo                       |     1 -
 src/.deps/grib_timer.Plo                           |     1 -
 src/.deps/grib_trie.Plo                            |     1 -
 src/.deps/grib_util.Plo                            |     1 -
 src/.deps/grib_value.Plo                           |     1 -
 src/.deps/grib_vdarray.Plo                         |     1 -
 src/.deps/grib_viarray.Plo                         |     1 -
 src/.deps/grib_vsarray.Plo                         |     1 -
 src/.deps/grib_yacc.Plo                            |     1 -
 src/.deps/md5.Plo                                  |     1 -
 src/CMakeLists.txt                                 |    14 +-
 src/Makefile                                       |  1707 --
 src/Makefile.am                                    |    10 +
 src/Makefile.in                                    |    38 +-
 src/accessor.class                                 |     2 +
 src/action.c                                       |    34 +-
 src/action_class_alias.c                           |   385 +-
 src/action_class_assert.c                          |     4 +-
 src/action_class_close.c                           |     2 +-
 src/action_class_concept.c                         |   213 +-
 src/action_class_gen.c                             |     4 +-
 src/action_class_hash_array.c                      |     2 +-
 src/action_class_if.c                              |     6 +-
 src/action_class_list.c                            |     6 +-
 src/action_class_meta.c                            |     2 +-
 src/action_class_modify.c                          |     8 +-
 src/action_class_noop.c                            |    29 +-
 src/action_class_print.c                           |   103 +-
 src/action_class_put.c                             |    77 +-
 src/action_class_remove.c                          |    86 +-
 src/action_class_rename.c                          |    99 +-
 src/action_class_section.c                         |     6 +-
 src/action_class_set.c                             |    75 +-
 src/action_class_set_darray.c                      |    61 +-
 src/action_class_set_iarray.c                      |    61 +-
 src/action_class_set_missing.c                     |    57 +-
 src/action_class_set_sarray.c                      |   135 +
 src/action_class_switch.c                          |   245 +-
 src/action_class_template.c                        |   211 +-
 src/action_class_transient_darray.c                |   148 +
 src/action_class_trigger.c                         |   105 +-
 src/action_class_variable.c                        |     2 +-
 src/action_class_when.c                            |   194 +-
 src/action_class_while.c                           |     2 +-
 src/action_class_write.c                           |   191 +-
 src/compile.c                                      |     2 +-
 src/config.h                                       |     4 +-
 src/eccodes.c                                      |     8 +-
 src/eccodes.h                                      |    17 +-
 src/eccodes_version.h                              |     6 +-
 src/eccodes_version.h.in                           |     2 +-
 src/eccodes_windef.h                               |     2 +-
 src/encode_double_array.c                          |     2 +-
 src/errors.pl                                      |     2 +-
 src/functions.c                                    |     2 +-
 src/grib2c.pl                                      |     2 +-
 src/grib_2order_packer_simple.c                    |     2 +-
 src/grib_accessor.c                                |  1070 +-
 src/grib_accessor_class.c                          |    40 +-
 src/grib_accessor_class.h                          |     8 +
 src/grib_accessor_class_abstract_long_vector.c     |     4 +-
 src/grib_accessor_class_abstract_vector.c          |     4 +-
 src/grib_accessor_class_apply_operators.c          |    54 +-
 src/grib_accessor_class_array.c                    |     6 +-
 src/grib_accessor_class_ascii.c                    |    30 +-
 src/grib_accessor_class_assert.c                   |     4 +-
 src/grib_accessor_class_bit.c                      |    20 +-
 src/grib_accessor_class_bitmap.c                   |    38 +-
 src/grib_accessor_class_bits.c                     |    60 +-
 src/grib_accessor_class_bits_per_value.c           |    14 +-
 src/grib_accessor_class_blob.c                     |     8 +-
 src/grib_accessor_class_box.c                      |     4 +-
 src/grib_accessor_class_budgdate.c                 |    22 +-
 src/grib_accessor_class_bufr_data.c                |   765 +-
 src/grib_accessor_class_bufr_data_array.c          |  2700 +-
 src/grib_accessor_class_bufr_data_element.c        |   524 +-
 src/grib_accessor_class_bufr_elements_table.c      |   232 +-
 src/grib_accessor_class_bufr_extract_subsets.c     |   202 +
 src/grib_accessor_class_bufr_group.c               |    29 +-
 ...b_accessor_class_bufr_has_delayed_replication.c |    75 +-
 src/grib_accessor_class_bufr_string_values.c       |   226 +
 ...ib_accessor_class_bufrdc_expanded_descriptors.c |   143 +-
 src/grib_accessor_class_bytes.c                    |     6 +-
 ...grib_accessor_class_change_scanning_direction.c |    24 +-
 src/grib_accessor_class_check_internal_version.c   |   166 +
 src/grib_accessor_class_codeflag.c                 |    16 +-
 src/grib_accessor_class_codetable.c                |    55 +-
 src/grib_accessor_class_codetable_title.c          |     8 +-
 src/grib_accessor_class_codetable_units.c          |     8 +-
 src/grib_accessor_class_concept.c                  |   253 +-
 src/grib_accessor_class_constant.c                 |     4 +-
 src/grib_accessor_class_count_file.c               |     6 +-
 src/grib_accessor_class_count_missing.c            |    18 +-
 src/grib_accessor_class_count_total.c              |     6 +-
 src/grib_accessor_class_data_2order_packing.c      |   310 +-
 ...grib_accessor_class_data_2order_packing_count.c |    30 +-
 src/grib_accessor_class_data_apply_bitmap.c        |    86 +-
 ...rib_accessor_class_data_apply_boustrophedonic.c |    77 +-
 ...essor_class_data_apply_boustrophedonic_bitmap.c |   108 +-
 src/grib_accessor_class_data_apply_gdsnotpresent.c |    60 +-
 src/grib_accessor_class_data_ccsds_packing.c       |   100 +-
 src/grib_accessor_class_data_complex_packing.c     |  1238 +-
 src/grib_accessor_class_data_constant_field.c      |    16 +-
 src/grib_accessor_class_data_dummy_field.c         |    32 +-
 src/grib_accessor_class_data_g1complex_packing.c   |    40 +-
 ...ss_data_g1second_order_constant_width_packing.c |    74 +-
 ..._data_g1second_order_general_extended_packing.c |   261 +-
 ...sor_class_data_g1second_order_general_packing.c |    74 +-
 ..._class_data_g1second_order_row_by_row_packing.c |   472 +-
 src/grib_accessor_class_data_g1secondary_bitmap.c  |    30 +-
 src/grib_accessor_class_data_g1shsimple_packing.c  |    14 +-
 src/grib_accessor_class_data_g1simple_packing.c    |    68 +-
 src/grib_accessor_class_data_g22order_packing.c    |   182 +-
 src/grib_accessor_class_data_g2complex_packing.c   |    10 +-
 src/grib_accessor_class_data_g2secondary_bitmap.c  |    28 +-
 src/grib_accessor_class_data_g2shsimple_packing.c  |    22 +-
 src/grib_accessor_class_data_g2simple_packing.c    |    32 +-
 ...lass_data_g2simple_packing_with_preprocessing.c |    24 +-
 src/grib_accessor_class_data_jpeg2000_packing.c    |   110 +-
 src/grib_accessor_class_data_png_packing.c         |   100 +-
 src/grib_accessor_class_data_raw_packing.c         |    32 +-
 src/grib_accessor_class_data_secondary_bitmap.c    |    42 +-
 src/grib_accessor_class_data_sh_packed.c           |    77 +-
 src/grib_accessor_class_data_sh_unpacked.c         |    63 +-
 src/grib_accessor_class_data_shsimple_packing.c    |    12 +-
 src/grib_accessor_class_data_simple_packing.c      |   183 +-
 src/grib_accessor_class_decimal_precision.c        |   132 +-
 src/grib_accessor_class_dictionary.c               |    84 +-
 src/grib_accessor_class_dirty.c                    |    37 +-
 src/grib_accessor_class_divdouble.c                |    10 +-
 src/grib_accessor_class_double.c                   |    16 +-
 src/grib_accessor_class_element.c                  |    22 +-
 src/grib_accessor_class_evaluate.c                 |     8 +-
 src/grib_accessor_class_expanded_descriptors.c     |   792 +-
 src/grib_accessor_class_forward.c                  |     8 +-
 ...accessor_class_from_scale_factor_scaled_value.c |    16 +-
 src/grib_accessor_class_g1_half_byte_codeflag.c    |    16 +-
 src/grib_accessor_class_g1_increment.c             |    50 +-
 src/grib_accessor_class_g1_message_length.c        |    18 +-
 src/grib_accessor_class_g1_section4_length.c       |    10 +-
 src/grib_accessor_class_g1area.c                   |    38 +-
 src/grib_accessor_class_g1bitmap.c                 |    26 +-
 src/grib_accessor_class_g1date.c                   |    40 +-
 src/grib_accessor_class_g1day_of_the_year_date.c   |    12 +-
 ...grib_accessor_class_g1end_of_interval_monthly.c |    25 +-
 src/grib_accessor_class_g1fcperiod.c               |     4 +-
 src/grib_accessor_class_g1forecastmonth.c          |    28 +-
 src/grib_accessor_class_g1monthlydate.c            |     8 +-
 ...sor_class_g1number_of_coded_values_sh_complex.c |    36 +-
 ...ssor_class_g1number_of_coded_values_sh_simple.c |    24 +-
 src/grib_accessor_class_g1p1p2.c                   |    14 +-
 src/grib_accessor_class_g1param.c                  |    16 +-
 src/grib_accessor_class_g1step_range.c             |    68 +-
 src/grib_accessor_class_g1verificationdate.c       |    16 +-
 src/grib_accessor_class_g2_chemical.c              |    22 +-
 src/grib_accessor_class_g2_eps.c                   |    28 +-
 src/grib_accessor_class_g2_mars_labeling.c         |    69 +-
 src/grib_accessor_class_g2bitmap.c                 |    18 +-
 src/grib_accessor_class_g2bitmap_present.c         |    10 +-
 src/grib_accessor_class_g2date.c                   |    22 +-
 src/grib_accessor_class_g2end_step.c               |    87 +-
 src/grib_accessor_class_g2grid.c                   |    54 +-
 src/grib_accessor_class_g2latlon.c                 |    22 +-
 src/grib_accessor_class_g2level.c                  |    46 +-
 src/grib_accessor_class_g2lon.c                    |    10 +-
 src/grib_accessor_class_g2step.c                   |    16 +-
 src/grib_accessor_class_g2step_range.c             |    12 +-
 src/grib_accessor_class_gaussian_grid_name.c       |   198 +
 src/grib_accessor_class_gds_is_present.c           |    18 +-
 src/grib_accessor_class_gds_not_present_bitmap.c   |    44 +-
 src/grib_accessor_class_gen.c                      |    84 +-
 src/grib_accessor_class_getenv.c                   |     8 +-
 src/grib_accessor_class_global_gaussian.c          |   371 +-
 src/grib_accessor_class_group.c                    |    30 +-
 src/grib_accessor_class_gts_header.c               |    12 +-
 src/grib_accessor_class_hash_array.c               |    18 +-
 src/grib_accessor_class_headers_only.c             |     6 +-
 src/grib_accessor_class_ibmfloat.c                 |    26 +-
 src/grib_accessor_class_ieeefloat.c                |    22 +-
 src/grib_accessor_class_ifs_param.c                |    14 +-
 src/grib_accessor_class_int16.c                    |     8 +-
 src/grib_accessor_class_int16_little_endian.c      |     8 +-
 src/grib_accessor_class_int32.c                    |     8 +-
 src/grib_accessor_class_int32_little_endian.c      |     8 +-
 src/grib_accessor_class_int64.c                    |    10 +-
 src/grib_accessor_class_int64_little_endian.c      |    10 +-
 src/grib_accessor_class_int8.c                     |     8 +-
 src/grib_accessor_class_iterator.c                 |     4 +-
 src/grib_accessor_class_julian_day.c               |    28 +-
 src/grib_accessor_class_ksec1expver.c              |    14 +-
 src/grib_accessor_class_label.c                    |     4 +-
 src/grib_accessor_class_laplacian.c                |    48 +-
 src/grib_accessor_class_latitudes.c                |    30 +-
 src/grib_accessor_class_latlon_increment.c         |    67 +-
 src/grib_accessor_class_latlonvalues.c             |    12 +-
 src/grib_accessor_class_library_version.c          |     4 +-
 src/grib_accessor_class_local_definition.c         |    53 +-
 src/grib_accessor_class_long.c                     |    28 +-
 src/grib_accessor_class_long_vector.c              |    22 +-
 src/grib_accessor_class_longitudes.c               |    28 +-
 src/grib_accessor_class_lookup.c                   |    12 +-
 src/grib_accessor_class_mars_param.c               |    22 +-
 src/grib_accessor_class_mars_step.c                |    22 +-
 src/grib_accessor_class_md5.c                      |    30 +-
 src/grib_accessor_class_message.c                  |    29 +-
 src/grib_accessor_class_message_copy.c             |    12 +-
 src/grib_accessor_class_missing.c                  |     3 +-
 src/grib_accessor_class_nearest.c                  |     4 +-
 src/grib_accessor_class_non_alpha.c                |    29 +-
 src/grib_accessor_class_number_of_coded_values.c   |    26 +-
 src/grib_accessor_class_number_of_points.c         |    22 +-
 ...grib_accessor_class_number_of_points_gaussian.c |   232 +-
 src/grib_accessor_class_number_of_values.c         |    34 +-
 ...essor_class_number_of_values_data_raw_packing.c |    12 +-
 src/grib_accessor_class_octahedral_gaussian.c      |   227 +
 src/grib_accessor_class_octect_number.c            |    10 +-
 src/grib_accessor_class_offset_file.c              |    10 +-
 src/grib_accessor_class_offset_values.c            |    12 +-
 src/grib_accessor_class_pack_bufr_values.c         |   207 +
 src/grib_accessor_class_pad.c                      |     8 +-
 src/grib_accessor_class_padding.c                  |    10 +-
 src/grib_accessor_class_padto.c                    |     8 +-
 src/grib_accessor_class_padtoeven.c                |    14 +-
 src/grib_accessor_class_padtomultiple.c            |    12 +-
 src/grib_accessor_class_position.c                 |     6 +-
 src/grib_accessor_class_raw.c                      |   233 +
 src/grib_accessor_class_reference_value_error.c    |    10 +-
 src/grib_accessor_class_round.c                    |    20 +-
 src/grib_accessor_class_scale.c                    |    44 +-
 src/grib_accessor_class_scale_values.c             |    12 +-
 ...ib_accessor_class_second_order_bits_per_value.c |    41 +-
 src/grib_accessor_class_section.c                  |    10 +-
 src/grib_accessor_class_section_length.c           |     4 +-
 src/grib_accessor_class_section_padding.c          |     4 +-
 src/grib_accessor_class_section_pointer.c          |    28 +-
 src/grib_accessor_class_select_step_template.c     |    12 +-
 src/grib_accessor_class_sexagesimal2decimal.c      |     8 +-
 src/grib_accessor_class_signed.c                   |    24 +-
 src/grib_accessor_class_signed_bits.c              |    32 +-
 src/grib_accessor_class_simple_packing_error.c     |    22 +-
 src/grib_accessor_class_size.c                     |     8 +-
 src/grib_accessor_class_smart_table.c              |    51 +-
 src/grib_accessor_class_smart_table_column.c       |    36 +-
 src/grib_accessor_class_spd.c                      |    36 +-
 src/grib_accessor_class_spectral_truncation.c      |    26 +-
 src/grib_accessor_class_sprintf.c                  |   210 +-
 src/grib_accessor_class_statistics.c               |    31 +-
 src/grib_accessor_class_statistics_spectral.c      |    48 +-
 src/grib_accessor_class_step_in_units.c            |    22 +-
 src/grib_accessor_class_sum.c                      |   122 +-
 src/grib_accessor_class_suppressed.c               |    98 +-
 src/grib_accessor_class_time.c                     |   124 +-
 src/grib_accessor_class_times.c                    |    28 +-
 src/grib_accessor_class_to_double.c                |   228 +-
 src/grib_accessor_class_to_integer.c               |   210 +-
 src/grib_accessor_class_to_string.c                |   210 +-
 src/grib_accessor_class_transient.c                |     4 +-
 src/grib_accessor_class_transient_darray.c         |   284 +
 src/grib_accessor_class_uint16.c                   |     8 +-
 src/grib_accessor_class_uint16_little_endian.c     |     8 +-
 src/grib_accessor_class_uint32.c                   |     8 +-
 src/grib_accessor_class_uint32_little_endian.c     |     8 +-
 src/grib_accessor_class_uint64.c                   |    10 +-
 src/grib_accessor_class_uint64_little_endian.c     |    10 +-
 src/grib_accessor_class_uint8.c                    |     8 +-
 src/grib_accessor_class_unexpanded_descriptors.c   |   185 +-
 src/grib_accessor_class_unpack_bufr_values.c       |     9 +-
 src/grib_accessor_class_unsigned.c                 |    30 +-
 src/grib_accessor_class_unsigned_bits.c            |    36 +-
 src/grib_accessor_class_validity_date.c            |    41 +-
 src/grib_accessor_class_validity_time.c            |    38 +-
 src/grib_accessor_class_values.c                   |    34 +-
 src/grib_accessor_class_variable.c                 |    69 +-
 src/grib_accessor_class_vector.c                   |    18 +-
 src/grib_accessor_class_when.c                     |     4 +-
 src/grib_accessor_classes_hash.c                   |     2 +-
 src/grib_accessor_factory.h                        |     8 +
 src/grib_accessor_factory_hash_list                |     8 +
 src/grib_api.h                                     |   156 +-
 src/grib_api_internal.h                            |    74 +-
 src/grib_api_prototypes.h                          |    66 +-
 src/grib_bits.c                                    |     9 +-
 src/grib_bits_any_endian.c                         |   356 +-
 src/grib_bits_any_endian_omp.c                     |     4 +-
 src/grib_bits_any_endian_simple.c                  |   283 +-
 src/grib_bits_any_endian_vector.c                  |     2 +-
 src/grib_bits_fast_big_endian.c                    |     2 +-
 src/grib_bits_fast_big_endian_omp.c                |     2 +-
 src/grib_bits_fast_big_endian_simple.c             |     2 +-
 src/grib_bits_fast_big_endian_vector.c             |     8 +-
 src/grib_bits_ibmpow.c                             |     2 +-
 src/grib_bits_ibmpow_opt.c                         |     2 +-
 src/grib_box.c                                     |     2 +-
 src/grib_box_class.c                               |     2 +-
 src/grib_box_class_gen.c                           |     2 +-
 src/grib_box_class_reduced_gaussian.c              |     2 +-
 src/grib_box_class_regular_gaussian.c              |     2 +-
 src/grib_buffer.c                                  |    25 +-
 src/grib_bufr_descriptor.c                         |     8 +-
 src/grib_bufr_descriptors_array.c                  |     2 +-
 src/grib_compressor.c                              |     2 +-
 src/grib_concept.c                                 |     5 +-
 src/grib_concept_index.c                           |     2 +-
 src/grib_context.c                                 |   125 +-
 src/grib_darray.c                                  |     2 +-
 src/grib_date.c                                    |     2 +-
 src/grib_db.c                                      |     2 +-
 src/grib_dependency.c                              |   205 +-
 src/grib_dumper.c                                  |     2 +-
 src/grib_dumper_class.c                            |     2 +-
 src/grib_dumper_class_c_code.c                     |     2 +-
 src/grib_dumper_class_debug.c                      |    14 +-
 src/grib_dumper_class_default.c                    |    13 +-
 src/grib_dumper_class_json.c                       |    56 +-
 src/grib_dumper_class_keys.c                       |     2 +-
 src/grib_dumper_class_serialize.c                  |     6 +-
 src/grib_dumper_class_wmo.c                        |   819 +-
 src/grib_dumper_class_xml.c                        |    13 +-
 src/grib_emoslib.h                                 |     2 +-
 src/grib_errors.c                                  |    40 +-
 src/grib_errors.txt                                |     2 +
 src/grib_expression.c                              |     9 +-
 src/grib_expression.h                              |     2 +-
 src/grib_expression_class_accessor.c               |     6 +-
 src/grib_expression_class_binop.c                  |     2 +-
 src/grib_expression_class_column.c                 |     2 +-
 src/grib_expression_class_constant.c               |     2 +-
 src/grib_expression_class_double.c                 |     2 +-
 src/grib_expression_class_functor.c                |   154 +-
 src/grib_expression_class_is_in_dict.c             |     6 +-
 src/grib_expression_class_is_in_list.c             |     6 +-
 src/grib_expression_class_is_integer.c             |     7 +-
 src/grib_expression_class_length.c                 |   133 +-
 src/grib_expression_class_long.c                   |     2 +-
 src/grib_expression_class_string.c                 |     2 +-
 src/grib_expression_class_string_compare.c         |    87 +-
 src/grib_expression_class_sub_string.c             |     2 +-
 src/grib_expression_class_true.c                   |     2 +-
 src/grib_expression_class_unop.c                   |     2 +-
 src/grib_fieldset.c                                |  1316 +-
 src/grib_filepool.c                                |   566 +-
 src/grib_gaussian_reduced.c                        |     2 +-
 src/grib_geography.c                               |     2 +-
 src/grib_handle.c                                  |  2112 +-
 src/grib_hash_array.c                              |     2 +-
 src/grib_hash_keys.c                               |    32 +-
 src/grib_header_compute.c                          |   495 +-
 src/grib_iarray.c                                  |   236 +-
 src/grib_ibmfloat.c                                |    54 +-
 src/grib_ieeefloat.c                               |    56 +-
 src/grib_index.c                                   |   510 +-
 src/grib_io.c                                      |   141 +-
 src/grib_iterator.c                                |   141 +-
 src/grib_iterator_class.c                          |     2 +-
 src/grib_iterator_class_gaussian.c                 |    10 +-
 src/grib_iterator_class_gaussian_reduced.c         |    50 +-
 src/grib_iterator_class_gen.c                      |    90 +-
 ...b_iterator_class_lambert_azimuthal_equal_area.c |   355 +-
 src/grib_iterator_class_lambert_conformal.c        |     2 +-
 src/grib_iterator_class_latlon.c                   |   157 +-
 src/grib_iterator_class_latlon_reduced.c           |     2 +-
 src/grib_iterator_class_polar_stereographic.c      |     2 +-
 src/grib_iterator_class_regular.c                  |    54 +-
 src/grib_itrie.c                                   |    23 +-
 src/grib_itrie_keys.c                              |     8 +-
 src/grib_jasper_encoding.c                         |     6 +-
 src/grib_keys_iterator.c                           |     4 +-
 src/grib_lex.c                                     |  1597 +-
 src/grib_loader_from_array.c                       |   312 +-
 src/grib_loader_from_file.c                        |     4 +-
 src/grib_loader_from_handle.c                      |   480 +-
 src/grib_memory.c                                  |    25 +-
 src/grib_nearest.c                                 |    10 +-
 src/grib_nearest_class.c                           |     2 +-
 src/grib_nearest_class_gen.c                       |    38 +-
 src/grib_nearest_class_lambert_conformal.c         |    31 +-
 src/grib_nearest_class_latlon_reduced.c            |     2 +-
 src/grib_nearest_class_reduced.c                   |   765 +-
 src/grib_nearest_class_regular.c                   |   562 +-
 src/grib_nearest_class_sh.c                        |   352 +-
 src/grib_openjpeg_encoding.c                       |     6 +-
 src/grib_parse_utils.c                             |   127 +-
 src/grib_query.c                                   |   713 +-
 src/grib_rules.c                                   |     2 +-
 src/grib_sarray.c                                  |   126 +-
 src/grib_scaling.c                                 |   240 +-
 src/grib_templates.c                               |   162 +-
 src/grib_templates.h                               |     2 +-
 src/grib_timer.c                                   |   226 +-
 src/grib_trie.c                                    |    45 +-
 src/grib_util.c                                    |   566 +-
 src/grib_value.c                                   |   479 +-
 src/grib_vdarray.c                                 |   126 +-
 src/grib_viarray.c                                 |   126 +-
 src/grib_vsarray.c                                 |   128 +-
 src/grib_yacc.c                                    |  3884 ++-
 src/grib_yacc.h                                    |    41 +-
 src/gribl.l                                        |     7 +-
 src/griby.y                                        |    18 +-
 src/hash.c                                         |     2 +-
 src/jgribapi_GribFile.h                            |     2 +-
 src/jgribapi_GribHandle.h                          |     2 +-
 src/jgribapi_GribIterator.h                        |     2 +-
 src/make_class.pl                                  |     4 +
 src/makeyacc                                       |    15 +
 src/md5.c                                          |     7 +-
 src/md5.h                                          |     2 +-
 src/minmax_val.c                                   |     2 +-
 tests/.deps/bpv_limit.Po                           |     1 -
 tests/.deps/ccsds_perf.Po                          |     1 -
 tests/.deps/double_cmp.Po                          |     1 -
 tests/.deps/gauss_sub.Po                           |     1 -
 tests/.deps/gribex_perf.Po                         |     1 -
 tests/.deps/index.Po                               |     1 -
 tests/.deps/jpeg_perf.Po                           |     1 -
 tests/.deps/julian.Po                              |     1 -
 tests/.deps/laplacian.Po                           |     1 -
 tests/.deps/multi_from_message.Po                  |     1 -
 tests/.deps/pack_unpack.Po                         |     1 -
 tests/.deps/packing.Po                             |     1 -
 tests/.deps/packing_check.Po                       |     1 -
 tests/.deps/png_perf.Po                            |     1 -
 tests/.deps/read_any.Po                            |     1 -
 tests/.deps/read_index.Po                          |     1 -
 tests/.deps/so_perf.Po                             |     1 -
 tests/.deps/unit_tests.Po                          |     1 -
 tests/CMakeLists.txt                               |    56 +-
 tests/ECC-197/element.table                        |  1536 ++
 tests/ECC-197/sequence.def                         |    38 +
 tests/Makefile                                     |  1605 --
 tests/Makefile.am                                  |    80 +-
 tests/Makefile.in                                  |   164 +-
 tests/asca_139.t1.ref                              |   253 +
 tests/badgrib.sh                                   |     2 +-
 tests/bitmap.sh                                    |     2 +-
 tests/bits.c                                       |     2 +-
 tests/bitsPerValue.sh                              |     2 +-
 tests/bpv_limit.c                                  |     2 +-
 tests/bpv_limit.sh                                 |     2 +-
 tests/budg.sh                                      |     2 +-
 tests/bufr_change_edition.sh                       |    35 +
 tests/bufr_compare.sh                              |    16 +-
 tests/bufr_copy.sh                                 |     2 +-
 tests/bufr_count.sh                                |     2 +-
 tests/bufr_dump.sh                                 |    54 +-
 tests/bufr_filter.sh                               |   921 +-
 tests/bufr_get.sh                                  |     5 +-
 tests/bufr_json.sh                                 |    10 +-
 tests/bufr_ls.sh                                   |     4 +-
 tests/bufr_set.sh                                  |     2 +-
 tests/bufrdc_desc_ref.sh                           |     3 +-
 tests/bufrdc_ref.sh                                |    10 +-
 tests/calendar.sh                                  |    42 +-
 tests/ccsds.sh                                     |     2 +-
 tests/ccsds_perf.c                                 |     2 +-
 tests/change_scanning.sh                           |     2 +-
 tests/check_gaussian_grids.sh                      |    17 +
 tests/compare.sh                                   |    10 +-
 tests/concept.sh                                   |     2 +-
 tests/convert.sh                                   |     2 +-
 tests/debug.sh                                     |     2 +-
 tests/decimalPrecision.sh                          |     2 +-
 tests/decode.c                                     |     2 +-
 tests/definitions.sh                               |     4 +-
 tests/double_cmp.c                                 |     2 +-
 tests/double_cmp.sh                                |     2 +-
 tests/ecc-197.sh                                   |    38 +
 tests/filter.sh                                    |     2 +-
 tests/fortran_interface.sh                         |     2 +-
 tests/gauss_sub.c                                  |     2 +-
 tests/get_fail.sh                                  |     2 +-
 tests/global.sh                                    |    51 +
 tests/grib1to2.sh                                  |     2 +-
 tests/grib2to1.sh                                  |     2 +-
 tests/grib_to_netcdf.sh                            |     4 +-
 tests/grib_util_set_spec.c                         |   166 +
 tests/grib_util_set_spec.sh                        |    38 +
 tests/gribex_perf.c                                |     2 +-
 tests/gridType.sh                                  |    24 +-
 tests/gts_ls.sh                                    |     2 +-
 tests/ibm.c                                        |     2 +-
 tests/ieee.c                                       |     2 +-
 tests/ieee.sh                                      |    23 +-
 tests/include.sh                                   |     8 +-
 tests/index.c                                      |    28 +-
 tests/index.sh                                     |    13 +-
 tests/index_orderby.c                              |     2 +-
 tests/iterator.sh                                  |     2 +-
 tests/jpeg.sh                                      |     2 +-
 tests/jpeg_perf.c                                  |     2 +-
 tests/julian.c                                     |    35 +-
 tests/julian.sh                                    |     5 +-
 tests/lamb_az_eq_area.sh                           |     2 +-
 tests/laplacian.c                                  |     2 +-
 tests/largefile.c                                  |     2 +-
 tests/level.sh                                     |     2 +-
 tests/list.sh                                      |     2 +-
 tests/list_all_keys.ksh                            |     2 +-
 tests/local.sh                                     |     2 +-
 tests/ls.sh                                        |    13 +-
 tests/md5.sh                                       |    29 +
 tests/metar_dump.sh                                |    50 +
 tests/metar_ls.sh                                  |    50 +
 tests/missing.sh                                   |     2 +-
 tests/multi.sh                                     |     2 +-
 tests/multi_from_message.c                         |     2 +-
 tests/multi_from_message.sh                        |     2 +-
 tests/mybufrdc_ref.sh                              |     2 +-
 tests/neg_fctime.sh                                |    66 +
 tests/octahedral.sh                                |    31 +
 tests/pack_unpack.c                                |     2 +-
 tests/packing.c                                    |     2 +-
 tests/packing_check.c                              |     2 +-
 tests/padding.sh                                   |     2 +-
 tests/png_perf.c                                   |     2 +-
 tests/read_any.c                                   |     2 +-
 tests/read_any.sh                                  |     2 +-
 tests/read_index.c                                 |    10 +-
 tests/second_order.sh                              |     5 +-
 tests/set.sh                                       |     2 +-
 tests/set_unexpandedDescriptors.filter             |   700 +
 tests/so_perf.c                                    |     2 +-
 tests/statistics.sh                                |     2 +-
 tests/step.sh                                      |    28 +-
 tests/tigge.sh                                     |     2 +-
 tests/tigge_conversions.sh                         |     2 +-
 tests/timing.c                                     |     2 +-
 tests/tiny.sh                                      |     2 +-
 tests/uerra.sh                                     |    69 +
 tests/unit_tests.c                                 |     6 +-
 tests/unit_tests.sh                                |     2 +-
 tests/utils.sh                                     |    33 +
 tests/values_to_ascii.c                            |     2 +-
 tigge/.deps/tigge_accumulations.Po                 |     1 -
 tigge/.deps/tigge_check.Po                         |     1 -
 tigge/.deps/tigge_name.Po                          |     1 -
 tigge/.deps/tigge_split.Po                         |     1 -
 tigge/Makefile                                     |   726 -
 tigge/jma.pl                                       |     2 +-
 tigge/tigge_accumulations.c                        |    11 +-
 tigge/tigge_check.c                                |   244 +-
 tigge/tigge_check.h                                |  1774 +-
 tigge/tigge_name.c                                 |     2 +-
 tigge/tigge_split.c                                |     2 +-
 tools/.deps/all_keys.Po                            |     1 -
 tools/.deps/big2gribex.Po                          |     1 -
 tools/.deps/bufr_compare.Po                        |     1 -
 tools/.deps/bufr_copy.Po                           |     1 -
 tools/.deps/bufr_dump.Po                           |     1 -
 tools/.deps/bufr_filter.Po                         |     1 -
 tools/.deps/bufr_get.Po                            |     1 -
 tools/.deps/bufr_index_build.Po                    |     1 -
 tools/.deps/bufr_ls.Po                             |     1 -
 tools/.deps/bufr_set.Po                            |     1 -
 tools/.deps/codes_count.Po                         |     1 -
 tools/.deps/codes_info.Po                          |     1 -
 tools/.deps/gaussian.Po                            |     1 -
 tools/.deps/gg_sub_area_check.Po                   |     1 -
 tools/.deps/grib2ppm.Po                            |     1 -
 tools/.deps/grib_compare.Po                        |     1 -
 tools/.deps/grib_copy.Po                           |     1 -
 tools/.deps/grib_diff.Po                           |     1 -
 tools/.deps/grib_dump.Po                           |     1 -
 tools/.deps/grib_filter.Po                         |     1 -
 tools/.deps/grib_get.Po                            |     1 -
 tools/.deps/grib_get_data.Po                       |     1 -
 tools/.deps/grib_histogram.Po                      |     1 -
 tools/.deps/grib_index_build.Po                    |     1 -
 tools/.deps/grib_ls.Po                             |     1 -
 tools/.deps/grib_merge.Po                          |     1 -
 tools/.deps/grib_options.Plo                       |     1 -
 tools/.deps/grib_repair.Po                         |     1 -
 tools/.deps/grib_set.Po                            |     1 -
 tools/.deps/grib_to_json.Po                        |     1 -
 tools/.deps/grib_to_netcdf.Po                      |     1 -
 tools/.deps/grib_tools.Plo                         |     1 -
 tools/.deps/gts_copy.Po                            |     1 -
 tools/.deps/gts_dump.Po                            |     1 -
 tools/.deps/gts_filter.Po                          |     1 -
 tools/.deps/gts_ls.Po                              |     1 -
 tools/.deps/list_keys.Po                           |     1 -
 tools/.deps/mars_request.Po                        |     1 -
 tools/.deps/parser.Po                              |     1 -
 tools/.deps/xref.Po                                |     1 -
 tools/CMakeLists.txt                               |    24 +-
 tools/Makefile                                     |  1302 -
 tools/Makefile.am                                  |    10 +-
 tools/Makefile.in                                  |   115 +-
 tools/all_keys.c                                   |     2 +-
 tools/big2gribex.c                                 |     2 +-
 tools/bufr_3to4.c                                  |     2 +-
 tools/bufr_compare.c                               |    48 +-
 tools/bufr_copy.c                                  |    14 +-
 tools/bufr_dump.c                                  |    64 +-
 tools/bufr_filter.c                                |    11 +-
 tools/bufr_filter.sh                               |   302 +
 tools/bufr_get.c                                   |     8 +-
 tools/bufr_index_build.c                           |     8 +-
 tools/bufr_ls.c                                    |     8 +-
 tools/bufr_set.c                                   |    14 +-
 tools/codes_count.c                                |     2 +-
 tools/codes_info.c                                 |    10 +-
 tools/codes_parser.c                               |    35 +
 tools/compile.c                                    |     2 +-
 tools/dump.c                                       |     2 +-
 tools/dumpload.c                                   |     2 +-
 tools/gaussian.c                                   |     2 +-
 tools/gg_sub_area_check.c                          |     2 +-
 tools/grib2ppm.c                                   |     2 +-
 tools/grib_2_request.c                             |     2 +-
 tools/grib_add.c                                   |     2 +-
 tools/grib_check_gaussian_grid.c                   |   255 +
 tools/grib_cmp.c                                   |     2 +-
 tools/grib_compare.c                               |    28 +-
 tools/grib_convert.c                               |     8 +-
 tools/grib_copy.c                                  |    44 +-
 tools/grib_corruption_check.c                      |     2 +-
 tools/grib_count.c                                 |     2 +-
 tools/grib_debug.c                                 |     8 +-
 tools/grib_diff.c                                  |     2 +-
 tools/grib_distance.c                              |     2 +-
 tools/grib_dump.c                                  |     8 +-
 tools/grib_dump.sh                                 |    10 +-
 tools/grib_error.c                                 |     2 +-
 tools/grib_filter.c                                |    11 +-
 tools/grib_filter.h                                |     2 +-
 tools/grib_filter.sh                               |    16 +-
 tools/grib_gen.c                                   |     2 +-
 tools/grib_get.c                                   |    13 +-
 tools/grib_get_data.c                              |     8 +-
 tools/grib_histogram.c                             |     2 +-
 tools/grib_index_build.c                           |     8 +-
 tools/grib_keys.c                                  |     8 +-
 tools/grib_ls.c                                    |    27 +-
 tools/grib_merge.c                                 |    29 +-
 tools/grib_moments.c                               |     2 +-
 tools/grib_nearest_land.c                          |     2 +-
 tools/grib_options.c                               |    28 +-
 tools/grib_packing.c                               |     2 +-
 tools/grib_points.c                                |     8 +-
 tools/grib_repair.c                                |   189 +-
 tools/grib_set.c                                   |    18 +-
 tools/grib_to_json.c                               |     2 +-
 tools/grib_to_netcdf.c                             |   123 +-
 tools/grib_to_netcdf.sh                            |    25 +
 tools/grib_tools.c                                 |    37 +-
 tools/grib_tools.h                                 |     3 +-
 tools/gts_copy.c                                   |    14 +-
 tools/gts_dump.c                                   |     8 +-
 tools/gts_filter.c                                 |     8 +-
 tools/gts_get.c                                    |     8 +-
 tools/gts_ls.c                                     |    20 +-
 tools/list_keys.c                                  |     2 +-
 tools/load.c                                       |     2 +-
 tools/load.h                                       |     2 +-
 tools/mars_request.c                               |     2 +-
 tools/metar_dump.c                                 |     8 +-
 tools/metar_filter.c                               |     8 +-
 tools/metar_get.c                                  |     8 +-
 tools/metar_ls.c                                   |    12 +-
 tools/parser.c                                     |    35 -
 tools/taf_dump.c                                   |     8 +-
 tools/taf_filter.c                                 |     8 +-
 tools/taf_get.c                                    |     8 +-
 tools/taf_ls.c                                     |     8 +-
 tools/test.c                                       |     2 +-
 tools/wingetopt.c                                  |     2 +-
 tools/wingetopt.h                                  |     2 +-
 tools/xref.c                                       |     2 +-
 tox.ini                                            |     2 +
 version.sh                                         |     4 +-
 windows/msvc/grib_api_lib/grib_api_lib.vcproj      |    44 +
 5697 files changed, 142793 insertions(+), 144766 deletions(-)

diff --git a/AUTHORS b/AUTHORS
index 91876dd..39ca7f8 100755
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,7 +1,7 @@
 Enrico Fucile
 Shahram Najm
 Sandor Kertesz
-Baudoin Raoult
+Florian Rathgeber
+Baudouin Raoult
 Cristian Codorean
 Jean-Baptiste Filippi
-
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8b80840..6efb58e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,11 +12,9 @@ project( eccodes C )
 
 set( CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../ecbuild/cmake")
 
-set( ECCODES_INSTALL_INCLUDE_DIR include CACHE PATH "ecCodes override installation directory for header files")
+include( ecbuild_system NO_POLICY_SCOPE )
 
-include( ecbuild_system )
-
-ecbuild_requires_macro_version( 1.7 )
+ecbuild_requires_macro_version( 1.9 )
 
 ###############################################################################
 # local project
@@ -26,6 +24,11 @@ ecbuild_declare_project()
 ###############################################################################
 # some variables/options of this project
 
+ecbuild_add_option( FEATURE EXAMPLES
+    DESCRIPTION "Build the examples"
+    DEFAULT ON
+)
+
 ecbuild_add_option( FEATURE JPG
     DESCRIPTION "support for JPG decoding/encoding"
     DEFAULT ON
@@ -59,26 +62,31 @@ ecbuild_add_option( FEATURE AEC
 ecbuild_add_option( FEATURE PYTHON
     DESCRIPTION "build the ecCodes Python interface"
     DEFAULT ON
+    REQUIRED_PACKAGES "Python VERSION 2.5" NumPy
 )
 
 ecbuild_add_option( FEATURE FORTRAN
     DESCRIPTION "build the ecCodes Fortran interface"
     DEFAULT ON
+    # REQUIRED_LANGUAGES Fortran # TODO
 )
 
+# TODO Remove this after REQUIRED_LANGUAGES
 if( ENABLE_FORTRAN )
     # will set EC_HAVE_FORTRAN with the result
     ecbuild_enable_fortran( MODULE_DIRECTORY ${PROJECT_BINARY_DIR}/fortran/modules )
     set( HAVE_FORTRAN ${EC_HAVE_FORTRAN} )
+else()
+    set( HAVE_FORTRAN 0 )
 endif()
 
 # advanced options (not visible in cmake-gui )
 
-ecbuild_add_option( FEATURE MEMORY_MANAGEMENT DESCRIPTION "enable memory management" DEFAULT OFF ADVANCED )
-ecbuild_add_option( FEATURE ALIGN_MEMORY      DESCRIPTION "enable memory alignment"  DEFAULT OFF ADVANCED )
-
-ecbuild_add_option( FEATURE GRIB_TIMER       DESCRIPTION "enable timer"   DEFAULT OFF ADVANCED )
-ecbuild_add_option( FEATURE GRIB_THREADS     DESCRIPTION "enable threads" DEFAULT OFF ADVANCED )
+ecbuild_add_option( FEATURE MEMORY_MANAGEMENT   DESCRIPTION "enable memory management" DEFAULT OFF ADVANCED )
+ecbuild_add_option( FEATURE ALIGN_MEMORY        DESCRIPTION "enable memory alignment"  DEFAULT OFF ADVANCED )
+ecbuild_add_option( FEATURE GRIB_TIMER          DESCRIPTION "enable timer" DEFAULT OFF ADVANCED )
+ecbuild_add_option( FEATURE ECCODES_THREADS     DESCRIPTION "enable POSIX threads" DEFAULT OFF ADVANCED )
+ecbuild_add_option( FEATURE ECCODES_OMP_THREADS DESCRIPTION "enable OMP threads" DEFAULT OFF ADVANCED )
 
 ###############################################################################
 # macro processing
@@ -88,6 +96,7 @@ set( ECCODES_EXTRA_INCLUDE_DIRS "" )
 set( ECCODES_EXTRA_DEFINITIONS  "" )
 
 find_package( CMath )
+list( APPEND ECCODES_TPLS CMath )
 
 ### JPG support
 
@@ -97,17 +106,27 @@ set( HAVE_LIBOPENJPEG 0 )
 
 if( ENABLE_JPG )
 
-    ecbuild_add_extra_search_paths( jasper ) # help standard cmake macro with ecmwf paths
+    # Note: This is a deprecated feature but we need it to find Jasper at ECMWF.
+    #       ecbuild_add_extra_search_paths modifies CMAKE_PREFIX_PATH
+    #       which can affect future package discovery if not undone by the caller.
+    #       The current CMAKE_PREFIX_PATH is backed up as _CMAKE_PREFIX_PATH
+    #
+    set(ECBUILD_NO_DEPRECATIONS ON)  # Suppress deprecation message
+    ecbuild_add_extra_search_paths( jasper )
     find_package( Jasper )
+    set(CMAKE_PREFIX_PATH ${_CMAKE_PREFIX_PATH})    # Restore CMAKE_PREFIX_PATH
+    set(ECBUILD_NO_DEPRECATIONS OFF) # Remove suppression
 
     find_package( OpenJPEG )
 
     if( JASPER_FOUND )
+        list( APPEND ECCODES_TPLS Jasper )
         set( HAVE_JPEG 1 )
         set( HAVE_LIBJASPER 1 )
     endif()
 
-    if( OpenJPEG_FOUND )
+    if( OPENJPEG_FOUND )
+        list( APPEND ECCODES_TPLS OpenJPEG )
         set( HAVE_JPEG 1 )
         set( HAVE_LIBOPENJPEG 1 )
     endif()
@@ -140,24 +159,32 @@ find_package(Threads REQUIRED)
 # debug
 message(STATUS " CMAKE_THREAD_LIBS_INIT=${CMAKE_THREAD_LIBS_INIT}")
 message(STATUS " CMAKE_USE_PTHREADS_INIT=${CMAKE_USE_PTHREADS_INIT}")
-message(STATUS " GRIB_THREADS=${GRIB_THREADS}, HAVE_GRIB_THREADS=${HAVE_GRIB_THREADS}")
-
-if( NOT ${CMAKE_USE_PTHREADS_INIT} )
-    message( FATAL_ERROR "Only pthreads supported - thread library found is [${CMAKE_THREAD_LIBS_INIT}]" )
-endif()
+message(STATUS " HAVE_ECCODES_THREADS=${HAVE_ECCODES_THREADS}")
 
 set( GRIB_PTHREADS 0 )
+set( GRIB_OMP_THREADS 0 )
 set( GRIB_LINUX_PTHREADS 0 )
-#if( HAVE_GRIB_THREADS AND CMAKE_THREAD_LIBS_INIT )
-if( HAVE_GRIB_THREADS )
-    if( CMAKE_USE_PTHREADS_INIT )
-        set( GRIB_PTHREADS 1 )
-        if( ${CMAKE_SYSTEM_NAME} MATCHES "Linux" )
-            set( GRIB_LINUX_PTHREADS 1 )
-        endif()
+#if( HAVE_ECCODES_THREADS AND CMAKE_THREAD_LIBS_INIT )
+if( HAVE_ECCODES_THREADS )
+    if( NOT ${CMAKE_USE_PTHREADS_INIT} )
+        message( FATAL_ERROR "Pthreads is not supported on your system: thread library found=[${CMAKE_THREAD_LIBS_INIT}]" )
     endif()
+    set( GRIB_PTHREADS 1 )
+    if( ${CMAKE_SYSTEM_NAME} MATCHES "Linux" )
+        set( GRIB_LINUX_PTHREADS 1 )
+    endif()
+elseif(HAVE_ECCODES_OMP_THREADS)
+    ecbuild_enable_omp()
+    set( GRIB_OMP_THREADS 1 )
+endif()
+
+# Cannot have both options
+if( HAVE_ECCODES_THREADS AND HAVE_ECCODES_OMP_THREADS )
+    message( FATAL_ERROR "Cannot enable both POSIX threads and OMP! Please specify just one option" )
 endif()
+
 message(STATUS " GRIB_PTHREADS=${GRIB_PTHREADS}")
+message(STATUS " GRIB_OMP_THREADS=${GRIB_OMP_THREADS}")
 
 set( GRIB_MEM_ALIGN 0 )
 if( ENABLE_ALIGN_MEMORY )
@@ -178,21 +205,25 @@ endif()
 # contents
 
 if( NOT ${DEVELOPER_MODE} )
-    set( grib_api_default_data_prefix ${CMAKE_INSTALL_PREFIX} )
+    set( the_default_data_prefix ${CMAKE_INSTALL_PREFIX} )
 else()
-    set( grib_api_default_data_prefix ${CMAKE_BINARY_DIR} )
+    set( the_default_data_prefix ${CMAKE_BINARY_DIR} )
 endif()
 
-if( NOT DEFINED ECCODES_DEFINITION_PATH )
-    set( ECCODES_DEFINITION_PATH ${grib_api_default_data_prefix}/share/eccodes/definitions )
+if( NOT DEFINED ECCODES_DEFINITION_SUFF )
+  set( ECCODES_DEFINITION_SUFF  share/eccodes/definitions )
 endif()
-if( NOT DEFINED ECCODES_SAMPLES_PATH )
-    set( ECCODES_SAMPLES_PATH ${grib_api_default_data_prefix}/share/eccodes/samples )
+if( NOT DEFINED ECCODES_SAMPLES_SUFF )
+  set( ECCODES_SAMPLES_SUFF     share/eccodes/samples )
 endif()
-if( NOT DEFINED ECCODES_IFS_SAMPLES_PATH )
-    set( ECCODES_IFS_SAMPLES_PATH ${grib_api_default_data_prefix}/share/eccodes/ifs_samples )
+if( NOT DEFINED ECCODES_IFS_SAMPLES_SUFF )
+  set( ECCODES_IFS_SAMPLES_SUFF ifs_samples )
 endif()
 
+set( ECCODES_DEFINITION_PATH  ${the_default_data_prefix}/${ECCODES_DEFINITION_SUFF} )
+set( ECCODES_SAMPLES_PATH     ${the_default_data_prefix}/${ECCODES_SAMPLES_SUFF} )
+set( ECCODES_IFS_SAMPLES_PATH ${the_default_data_prefix}/${ECCODES_IFS_SAMPLES_SUFF} )
+
 ### config header
 
 ecbuild_generate_config_headers()
@@ -204,7 +235,7 @@ add_definitions( -DHAVE_ECCODES_CONFIG_H )
 install( FILES ${CMAKE_CURRENT_BINARY_DIR}/eccodes_config.h DESTINATION ${INSTALL_INCLUDE_DIR} )
 
 if( CMAKE_COMPILER_IS_GNUCC )
-    cmake_add_c_flags("-pedantic")
+    ecbuild_add_c_flags("-pedantic")
 endif()
 
 ############################################################################################
@@ -212,7 +243,6 @@ endif()
 
 ### export package to other ecbuild packages
 
-set( ECCODES_TPLS            AEC PNG Jasper OpenJPEG CMath )
 set( ECCODES_INCLUDE_DIRS    ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_BINARY_DIR}/src )
 set( ECCODES_LIBRARIES       eccodes )
 
@@ -240,15 +270,16 @@ add_subdirectory( tests )
 add_subdirectory( tigge )
 add_subdirectory( examples )
 add_subdirectory( data )
-
 add_subdirectory( samples )
 add_subdirectory( ifs_samples ) # must come after samples
 
 # ecbuild_dont_pack( DIRS samples DONT_PACK_REGEX "*.grib" )
 ecbuild_dont_pack( DIRS
-     concepts html tests.ecmwf doxygen examples.dev templates parameters java
-     perl/GRIB-API/lib perl/GRIB-API/t gaussian_experimental gribex examples/F77
+     concepts tests.ecmwf doxygen confluence examples.dev templates parameters java
+     gaussian_experimental gribex examples/F77
      examples/extra bamboo fortran/fortranCtypes tigge/tools share/eccodes grib_api_for_mars
+     src/.deps tests/.deps tools/.deps tigge/.deps examples/C/.deps examples/python/.deps
+     python/.deps fortran/.deps
 )
 #ecbuild_dont_pack( DIRS data/bufr  DONT_PACK_REGEX "*.bufr" )
 #ecbuild_dont_pack( DIRS data/tigge DONT_PACK_REGEX "*.grib" )
@@ -267,14 +298,14 @@ if( EC_HAVE_FORTRAN )
 endif()
 
 if( NOT PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
-    set( ECCODES_DEFINITIONS       ${ECCODES_DEFINITIONS}  PARENT_SCOPE )# includes already TPL definitions
-    set( ECCODES_INCLUDE_DIRS     ${ECCODES_INCLUDE_DIRS} ${ECCODES_EXTRA_INCLUDE_DIRS} PARENT_SCOPE )
-    set( ECCODES_LIBRARIES        ${ECCODES_LIBRARIES}    ${ECCODES_EXTRA_LIBRARIES} ${CMATH_LIBRARIES} PARENT_SCOPE )
-    set( ECCODES_FOUND             TRUE PARENT_SCOPE )
-    set( ECCODES_SAMPLES_PATH      ${ECCODES_SAMPLES_PATH} PARENT_SCOPE )
-    set( ECCODES_IFS_SAMPLES_PATH  ${ECCODES_IFS_SAMPLES_PATH} PARENT_SCOPE )
-    set( ECCODES_DEFINITION_PATH   ${ECCODES_DEFINITION_PATH} PARENT_SCOPE )
-    set( ECCODES_INSTALL_ECMWF_TOOLS  ${ECCODES_INSTALL_ECMWF_TOOLS} PARENT_SCOPE )
+  set( ECCODES_FOUND            TRUE PARENT_SCOPE )
+  set( ECCODES_DEFINITIONS      ${ECCODES_DEFINITIONS}  PARENT_SCOPE )# includes already TPL definitions
+  set( ECCODES_INCLUDE_DIRS     ${ECCODES_INCLUDE_DIRS} ${ECCODES_EXTRA_INCLUDE_DIRS} PARENT_SCOPE )
+  set( ECCODES_LIBRARIES        ${ECCODES_LIBRARIES}    ${ECCODES_EXTRA_LIBRARIES} ${CMATH_LIBRARIES} PARENT_SCOPE )
+  set( ECCODES_SAMPLES_PATH     ${ECCODES_SAMPLES_PATH} PARENT_SCOPE )
+  set( ECCODES_IFS_SAMPLES_PATH ${ECCODES_IFS_SAMPLES_PATH} PARENT_SCOPE )
+  set( ECCODES_DEFINITION_PATH  ${ECCODES_DEFINITION_PATH} PARENT_SCOPE )
+  set( ECCODES_INSTALL_EXTRA_TOOLS  ${ECCODES_INSTALL_EXTRA_TOOLS} PARENT_SCOPE )
 endif()
 
 # pkg-config
@@ -283,7 +314,7 @@ ecbuild_pkgconfig(
   URL                 "https://software.ecmwf.int/wiki/display/ECC/"
   DESCRIPTION         "The ecCodes library"
   LIBRARIES           eccodes
-  VARIABLES           HAVE_JPG HAVE_LIBJASPER HAVE_GRIB_THREADS HAVE_NETCDF
+  VARIABLES           HAVE_JPG HAVE_LIBJASPER HAVE_ECCODES_THREADS HAVE_NETCDF
                       HAVE_PYTHON HAVE_FORTRAN HAVE_PNG HAVE_AEC
 )
 if( EC_HAVE_FORTRAN )
@@ -293,7 +324,7 @@ if( EC_HAVE_FORTRAN )
     LIBRARIES           eccodes_f90 eccodes
     DESCRIPTION         "The ecCodes library for Fortran 90"
     IGNORE_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/fortran ${PROJECT_BINARY_DIR}/fortran
-    VARIABLES           HAVE_JPG HAVE_LIBJASPER HAVE_GRIB_THREADS HAVE_NETCDF
+    VARIABLES           HAVE_JPG HAVE_LIBJASPER HAVE_ECCODES_THREADS HAVE_NETCDF
                         HAVE_PYTHON HAVE_PNG HAVE_AEC
   )
 endif()
@@ -304,3 +335,13 @@ endif()
 ecbuild_install_project( NAME ${CMAKE_PROJECT_NAME} )
 
 ecbuild_print_summary()
+
+message(STATUS "")
+message(STATUS "   +---------------------------+")
+message(STATUS "   |  ecCodes version ${ECCODES_VERSION}   |")
+message(STATUS "   |  Configuration completed  |")
+message(STATUS "   +---------------------------+")
+message(STATUS "")
+message(STATUS "   You can now do 'make' to compile the package, 'ctest' to test it and 'make install' to install it afterwards.")
+message(STATUS "")
+message(STATUS "")
diff --git a/ChangeLog b/ChangeLog
index 1c3c419..579db95 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,4 +2,3 @@ The changelog is now online. Please see:
 
 https://software.ecmwf.int/wiki/display/ECC/History+of+Changes
 
-
diff --git a/INSTALL b/INSTALL
index c7de8fa..ec79cfb 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,39 +1,46 @@
+How to build and install ecCodes library/tools
+================================================
 
-The ecCodes installation is based on the standard configure utility. 
-It is tested on several platforms and with several compilers. However for some platforms 
-modifications to the installation engine may be required. If you encounter any problem 
-during the installation procedure please send an e-mail with your problem to 
-Software.Support at ecmwf.int.
+Building and installation has been tested on several platforms and with several compilers.
+However for some platforms modifications to the installation engine may be required.
+If you encounter any problems during the installation procedure please send an e-mail
+with your problem to:
 
-The only required package for a standard installation is jasper which enables the jpeg2000 
-packing/unpacking algorithm. 
-It is possible to build ecCodes without jasper, by using the --disable-jpeg configure option, 
-but to install a fully functional library, its download is recommended.
+    Software.Support at ecmwf.int
 
 
-Standard Installation
-=====================
+Installation using CMake
+------------------------
+This is the recommended method of installation.
+However it requires that cmake be installed on your system.
 
-   1. Download eccodes from https://software.ecmwf.int/wiki/display/ECC/Releases.
-   2. Unpack distribution:
+1. Download ecCodes from https://software.ecmwf.int/wiki/display/ECC/Releases
 
-        > tar xzf eccodes-X.tar.gz
+2. Unpack distribution:
+   > tar -xzf eccodes-x.y.z-Source.tar.gz
 
-   3. Create a separate directory where to build eccodes
+3. Create a separate directory where to build ecCodes:
+   > mkdir build
+   > cd build
 
-        > mkdir build ; cd build
+4. Run cmake pointing to the source and specify the installation location:
+   > cmake  ../eccodes-x.y.z-Source -DCMAKE_INSTALL_PREFIX=/path/to/where/you/install/eccodes
 
-   4. Run cmake
+   It is recommended that you install into a clean directory
 
-        > cmake ../eccodes-X -DCMAKE_INSTALL_PREFIX=/path/to/where/you/install/eccodes
+5. Compile, test and install:
+   > make
+   > ctest
+   > make install
 
-   5. make, check and install
+You can also pass options to the cmake command above. Some typical examples are:
 
-        > make
-        ...
-        > make check
-        ...
-        > make install
-        ...
+ -DBUILD_SHARED_LIBS=OFF         Install static libraries, not shared
+ -DENABLE_JPG=ON                 Enable JPEG encoding/decoding (for GRIB packing)
+ -DCMAKE_Fortran_COMPILER=pgf90  Set Fortran compiler to Portland Group F90 compiler
+ -DCMAKE_C_FLAGS="-O2 -Wall"     Prepend the specified flags at the front
+                                 of the compilation command for C source files
+
+For more details, please see:
+https://software.ecmwf.int/wiki/display/ECC/ecCodes+installation
 
-For further details, see: https://software.ecmwf.int/wiki/display/ECC/ecCodes+installation
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 7182124..0000000
--- a/Makefile
+++ /dev/null
@@ -1,1364 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# Makefile.  Generated from Makefile.in by configure.
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/eccodes
-pkgincludedir = $(includedir)/eccodes
-pkglibdir = $(libdir)/eccodes
-pkglibexecdir = $(libexecdir)/eccodes
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = x86_64-suse-linux-gnu
-host_triplet = x86_64-suse-linux-gnu
-subdir = .
-DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \
-	$(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/configure $(am__configure_deps) \
-	$(top_srcdir)/rpms/eccodes.pc.in \
-	$(top_srcdir)/rpms/eccodes.spec.in \
-	$(top_srcdir)/rpms/eccodes_f90.pc.in \
-	$(top_srcdir)/perl/GRIB-API/Makefile.PL.in COPYING \
-	config/config.guess config/config.sub config/depcomp \
-	config/install-sh config/missing config/ltmain.sh \
-	$(top_srcdir)/config/config.guess \
-	$(top_srcdir)/config/config.sub \
-	$(top_srcdir)/config/install-sh $(top_srcdir)/config/ltmain.sh \
-	$(top_srcdir)/config/missing
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno config.status.lineno
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES = rpms/eccodes.pc rpms/eccodes.spec \
-	rpms/eccodes_f90.pc perl/GRIB-API/Makefile.PL
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_$(V))
-am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
-	ctags-recursive dvi-recursive html-recursive info-recursive \
-	install-data-recursive install-dvi-recursive \
-	install-exec-recursive install-html-recursive \
-	install-info-recursive install-pdf-recursive \
-	install-ps-recursive install-recursive installcheck-recursive \
-	installdirs-recursive pdf-recursive ps-recursive \
-	tags-recursive uninstall-recursive
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(pkgconfigdir)"
-DATA = $(pkgconfig_DATA)
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-  distclean-recursive maintainer-clean-recursive
-am__recursive_targets = \
-  $(RECURSIVE_TARGETS) \
-  $(RECURSIVE_CLEAN_TARGETS) \
-  $(am__extra_recursive_targets)
-AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-	cscope distdir dist dist-all distcheck
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-CSCOPE = cscope
-DIST_SUBDIRS = src tools definitions samples ifs_samples/grib1 \
-	ifs_samples/grib1_mlgrib2 ifs_samples/grib1_mlgrib2_ieee64 \
-	tests tigge fortran examples/C examples/F90 perl \
-	python examples/python data
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-am__remove_distdir = \
-  if test -d "$(distdir)"; then \
-    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
-      && rm -rf "$(distdir)" \
-      || { sleep 5 && rm -rf "$(distdir)"; }; \
-  else :; fi
-am__post_remove_distdir = $(am__remove_distdir)
-am__relativize = \
-  dir0=`pwd`; \
-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
-  sed_rest='s,^[^/]*/*,,'; \
-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
-  sed_butlast='s,/*[^/]*$$,,'; \
-  while test -n "$$dir1"; do \
-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
-    if test "$$first" != "."; then \
-      if test "$$first" = ".."; then \
-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
-      else \
-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
-        if test "$$first2" = "$$first"; then \
-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
-        else \
-          dir2="../$$dir2"; \
-        fi; \
-        dir0="$$dir0"/"$$first"; \
-      fi; \
-    fi; \
-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
-  done; \
-  reldir="$$dir2"
-DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
-DIST_TARGETS = dist-gzip
-distuninstallcheck_listfiles = find . -type f -print
-am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
-  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
-distcleancheck_listfiles = find . -type f -print
-ACLOCAL = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing aclocal-1.13
-AEC_DIR = 
-AMTAR = $${TAR-tar}
-AM_DEFAULT_VERBOSITY = 1
-AR = ar
-AUTOCONF = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoconf
-AUTOHEADER = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoheader
-AUTOMAKE = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing automake-1.13
-AWK = gawk
-CC = gcc
-CCDEPMODE = depmode=gcc3
-CCSDS_TEST = 
-CFLAGS = -g -O2
-CPP = gcc -E
-CPPFLAGS = 
-CYGPATH_W = echo
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DEVEL_RULES = dummy.am
-DLLTOOL = false
-DSYMUTIL = 
-DUMPBIN = 
-ECCODES_AGE = 0
-ECCODES_CURRENT = 1
-ECCODES_DEFINITION_PATH = ${datarootdir}/eccodes/definitions
-ECCODES_MAIN_VERSION = 0.10.0
-ECCODES_MAJOR_VERSION = 0
-ECCODES_MINOR_VERSION = 10
-ECCODES_PATCH_VERSION = 0
-ECCODES_REVISION = 0
-ECCODES_SAMPLES_PATH = ${datarootdir}/eccodes/samples
-ECCODES_VERSION_STR = 0.10.0
-ECHO_C = 
-ECHO_N = -n
-ECHO_T = 
-EGREP = /usr/bin/grep -E
-EMOS_LIB = 
-EXEEXT = 
-F77 = gfortran
-F90_CHECK = examples/F90
-F90_MODULE_FLAG = -I
-FC = gfortran
-FCFLAGS = -g -O2
-FFLAGS = -g -O2
-FGREP = /usr/bin/grep -F
-FORTRAN_MOD = fortran
-GREP = /usr/bin/grep
-GRIB_API_INC = /tmp/masn/git/grib_api/eccodes/src
-GRIB_API_LIB = /tmp/masn/git/grib_api/eccodes/src/grib_api.a
-GRIB_DEVEL = 0
-IFS_SAMPLES_DIR = ${datarootdir}/eccodes/ifs_samples
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-JASPER_DIR = system
-JPEG_TEST = jpeg.sh
-LD = /usr/x86_64-suse-linux/bin/ld -m elf_x86_64
-LDFLAGS = 
-LEX = flex
-LEXLIB = -lfl
-LEX_OUTPUT_ROOT = lex.yy
-LIBOBJS = 
-LIBS = -lm -ljasper 
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LIBTOOL_DEPS = config/ltmain.sh
-LIB_AEC = 
-LIB_JASPER = -ljasper
-LIB_OPENJPEG = 
-LIB_PNG = 
-LINUX_DISTRIBUTION_NAME = openSUSE 13.1 (x86_64)
-LINUX_DISTRIBUTION_VERSION = 
-LIPO = 
-LN_S = ln -s
-LTLIBOBJS = 
-MAKEINFO = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing makeinfo
-MANIFEST_TOOL = :
-MKDIR_P = /usr/bin/mkdir -p
-NETCDF_LDFLAGS = 
-NM = /usr/bin/nm -B
-NMEDIT = 
-NUMPY_INCLUDE = /usr/local/apps/python/2.7.8-01/lib/python2.7/site-packages/numpy/core/include
-OBJDUMP = objdump
-OBJEXT = o
-OPENJPEG_DIR = system
-OTOOL = 
-OTOOL64 = 
-PACKAGE = eccodes
-PACKAGE_BUGREPORT = Software.Support at ecmwf.int
-PACKAGE_NAME = eccodes
-PACKAGE_STRING = eccodes  
-PACKAGE_TARNAME = eccodes
-PACKAGE_URL = 
-PACKAGE_VERSION = 0.10.0
-PATH_SEPARATOR = :
-PERL = 
-PERLDIR = perl
-PERL_INSTALL_OPTIONS = LIB=NONE/perl
-PERL_MAKE_OPTIONS = 
-PYTHON = /usr/local/apps/python/2.7.8-01/bin/python
-PYTHON_CFLAGS = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7 -fno-strict-aliasing -O3 -fpic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
-PYTHON_CHECK = examples/python
-PYTHON_CONFIG = /usr/local/apps/python/2.7.8-01/bin/python2.7-config
-PYTHON_DATA_HANDLER = numpy
-PYTHON_EXEC_PREFIX = ${exec_prefix}
-PYTHON_INCLUDES = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7
-PYTHON_LDFLAGS = -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic
-PYTHON_LIBS = -lpthread -ldl -lutil -lm -lpython2.7
-PYTHON_PLATFORM = linux2
-PYTHON_PREFIX = ${prefix}
-PYTHON_VERSION = 2.7
-RANLIB = ranlib
-RM = rm -f
-RPM_CONFIGURE_ARGS =  '--enable-python' '--disable-shared' 'CC=gcc' 'F77=gfortran' 'FC=gfortran'
-RPM_HOST_CPU = x86_64
-RPM_HOST_OS = linux-gnu
-RPM_HOST_VENDOR = suse
-RPM_RELEASE = 1
-SED = /usr/bin/sed
-SET_MAKE = 
-SHELL = /bin/sh
-STRIP = strip
-VERSION = 0.10.0
-WARN_PEDANTIC = -pedantic -Wall
-WERROR = 
-YACC = bison -y
-YFLAGS = 
-abs_builddir = /tmp/masn/git/grib_api/eccodes
-abs_srcdir = /tmp/masn/git/grib_api/eccodes
-abs_top_builddir = /tmp/masn/git/grib_api/eccodes
-abs_top_srcdir = /tmp/masn/git/grib_api/eccodes
-ac_ct_AR = ar
-ac_ct_CC = gcc
-ac_ct_DUMPBIN = 
-ac_ct_F77 = 
-ac_ct_FC = 
-am__include = include
-am__leading_dot = .
-am__quote = 
-am__tar = $${TAR-tar} chof - "$$tardir"
-am__untar = $${TAR-tar} xf -
-bindir = ${exec_prefix}/bin
-build = x86_64-suse-linux-gnu
-build_alias = 
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = suse
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-host = x86_64-suse-linux-gnu
-host_alias = 
-host_cpu = x86_64
-host_os = linux-gnu
-host_vendor = suse
-htmldir = ${docdir}
-includedir = ${prefix}/include
-infodir = ${datarootdir}/info
-install_sh = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localedir = ${datarootdir}/locale
-localstatedir = ${prefix}/var
-mandir = ${datarootdir}/man
-mkdir_p = $(MKDIR_P)
-oldincludedir = /usr/include
-pdfdir = ${docdir}
-pkgpyexecdir = ${pyexecdir}/eccodes
-pkgpythondir = ${pythondir}/eccodes
-prefix = /usr/local
-program_transform_name = s,x,x,
-psdir = ${docdir}
-pyexecdir = ${exec_prefix}/lib/python2.7/site-packages
-pythondir = ${prefix}/lib/python2.7/site-packages
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-srcdir = .
-sysconfdir = ${prefix}/etc
-target_alias = 
-top_build_prefix = 
-top_builddir = .
-top_srcdir = .
-ACLOCAL_AMFLAGS = -I m4
-CONFIGURE_DEPENDENCIES = $(top_srcdir)/version.sh
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = rpms/eccodes.pc rpms/eccodes_f90.pc
-PERL_OPT = 
-#PERL_OPT = perl
-#PYTHON_OPT = 
-PYTHON_OPT = python
-SUBDIRS = src tools definitions samples ifs_samples/grib1 ifs_samples/grib1_mlgrib2 ifs_samples/grib1_mlgrib2_ieee64 \
-          tests tigge $(FORTRAN_MOD) examples/C $(F90_CHECK) $(PERL_OPT) $(PYTHON_OPT) examples/python data
-
-EXTRA_DIST = README AUTHORS NOTICE LICENSE ChangeLog version.sh html \
-		src/extrules.am \
-		definitions/extrules.am \
-		python/extrules.am \
-		src/dummy.am \
-		definitions/dummy.am \
-		definitions/make_makefile_am.pl \
-		data/ls.log \
-		data/multi.ok \
-		data/in_copy.grib \
-		data/bad.grib \
-		data/local.good.log \
-		data/typeOfProcessedData.ok \
-		data/gts.grib \
-		data/v.grib2 \
-		data/satellite.grib \
-		data/pad.grib \
-		data/missing_field.grib1 \
-		data/multi_step.txt \
-		data/multi_created.grib2 \
-		data/multi.grib2 \
-		data/sample.grib2 \
-		data/bitmap.diff \
-		data/no_bitmap.diff \
-		data/ieee_test.good \
-		data/index.grib \
-		data/index.ok \
-		data/index_f90.ok \
-		data/grid_ieee.grib \
-		data/spherical_model_level.grib1_32.good \
-		data/spherical_model_level.grib1.good \
-		data/budg \
-		data/tp_ecmwf.grib \
-		data/statistics.out.good \
-		data/jpeg.grib2 \
-		data/scan_x_regular_gg_5_7_good.dump \
-		data/scan_x_regular_ll_5_4_good.dump \
-		data/scan_x_regular_ll_5_7_good.dump \
-		data/scan_x_regular_ll_8_4_good.dump \
-		data/scan_x_regular_ll_8_7_good.dump \
-		data/scan_x_rotated_ll_5_4_good.dump \
-		data/scan_x_rotated_ll_5_7_good.dump \
-		data/scan_x_rotated_ll_8_4_good.dump \
-		data/scan_x_rotated_ll_8_7_good.dump \
-		data/scan_y_regular_ll_5_4_good.dump \
-		data/scan_y_regular_ll_5_7_good.dump \
-		data/scan_y_regular_ll_8_4_good.dump \
-		data/scan_y_regular_ll_8_7_good.dump \
-		data/scan_y_rotated_ll_5_4_good.dump \
-		data/scan_y_rotated_ll_5_7_good.dump \
-		data/scan_y_rotated_ll_8_4_good.dump \
-		data/scan_y_rotated_ll_8_7_good.dump \
-		data/tigge_pf_ecmwf.grib2 \
-		data/tigge_pf_ecmwf.grib2.ref \
-		data/regular_gaussian_pressure_level.grib1 \
-		data/regular_gaussian_model_level.grib1 \
-		data/regular_gaussian_surface.grib1 \
-		data/regular_latlon_surface.grib1 \
-		data/reduced_gaussian_model_level.grib1 \
-		data/reduced_gaussian_pressure_level.grib1 \
-		data/reduced_gaussian_lsm.grib1 \
-		data/reduced_gaussian_surface_jpeg.grib2 \
-		data/timeRangeIndicator_0.grib \
-		data/timeRangeIndicator_10.grib  \
-		data/timeRangeIndicator_5.grib \
-		data/reduced_gaussian_model_level.grib1 \
-		data/reduced_gaussian_surface.grib1 \
-		data/reduced_latlon_surface.grib1 \
-		data/spherical_model_level.grib1 \
-		data/spherical_pressure_level.grib1 \
-		data/missing.grib2 \
-		data/gfs.c255.grib2 \
-		data/constant_field.grib1 \
-		data/reduced_gaussian_pressure_level_constant.grib1 \
-		data/reduced_latlon_surface_constant.grib1 \
-		data/regular_gaussian_pressure_level_constant.grib1 \
-		data/regular_latlon_surface_constant.grib1 \
-		data/reduced_gaussian_sub_area.grib1 \
-		data/constant_field.grib1 \
-		data/60_model_levels \
-		data/list_points \
-		data/step.log \
-		data/step_grib1.filter \
-		data/step_grib1.log \
-		data/julian.out.good \
-		data/test_uuid.grib2 \
-		data/tigge/tigge_ammc_pl_gh.grib  \
-		data/tigge/tigge_ammc_pl_q.grib  \
-		data/tigge/tigge_ammc_pl_t.grib  \
-		data/tigge/tigge_ammc_pl_u.grib  \
-		data/tigge/tigge_ammc_pl_v.grib  \
-		data/tigge/tigge_ammc_sfc_10u.grib  \
-		data/tigge/tigge_ammc_sfc_10v.grib  \
-		data/tigge/tigge_ammc_sfc_2t.grib  \
-		data/tigge/tigge_ammc_sfc_lsm.grib  \
-		data/tigge/tigge_ammc_sfc_mn2t6.grib  \
-		data/tigge/tigge_ammc_sfc_msl.grib  \
-		data/tigge/tigge_ammc_sfc_mx2t6.grib  \
-		data/tigge/tigge_ammc_sfc_orog.grib  \
-		data/tigge/tigge_ammc_sfc_sf.grib  \
-		data/tigge/tigge_ammc_sfc_sp.grib  \
-		data/tigge/tigge_ammc_sfc_st.grib  \
-		data/tigge/tigge_ammc_sfc_tcc.grib  \
-		data/tigge/tigge_ammc_sfc_tcw.grib  \
-		data/tigge/tigge_ammc_sfc_tp.grib  \
-		data/tigge/tigge_babj_pl_gh.grib  \
-		data/tigge/tigge_babj_pl_q.grib  \
-		data/tigge/tigge_babj_pl_t.grib  \
-		data/tigge/tigge_babj_pl_u.grib  \
-		data/tigge/tigge_babj_pl_v.grib  \
-		data/tigge/tigge_babj_sfc_10u.grib  \
-		data/tigge/tigge_babj_sfc_10v.grib  \
-		data/tigge/tigge_babj_sfc_2d.grib  \
-		data/tigge/tigge_babj_sfc_2t.grib  \
-		data/tigge/tigge_babj_sfc_lsm.grib  \
-		data/tigge/tigge_babj_sfc_mn2t6.grib  \
-		data/tigge/tigge_babj_sfc_msl.grib  \
-		data/tigge/tigge_babj_sfc_mx2t6.grib  \
-		data/tigge/tigge_babj_sfc_orog.grib  \
-		data/tigge/tigge_babj_sfc_sd.grib  \
-		data/tigge/tigge_babj_sfc_sf.grib  \
-		data/tigge/tigge_babj_sfc_slhf.grib  \
-		data/tigge/tigge_babj_sfc_sp.grib  \
-		data/tigge/tigge_babj_sfc_sshf.grib  \
-		data/tigge/tigge_babj_sfc_ssr.grib  \
-		data/tigge/tigge_babj_sfc_str.grib  \
-		data/tigge/tigge_babj_sfc_tcc.grib  \
-		data/tigge/tigge_babj_sfc_tcw.grib  \
-		data/tigge/tigge_babj_sfc_tp.grib  \
-		data/tigge/tigge_cwao_pl_gh.grib  \
-		data/tigge/tigge_cwao_pl_q.grib  \
-		data/tigge/tigge_cwao_pl_t.grib  \
-		data/tigge/tigge_cwao_pl_u.grib  \
-		data/tigge/tigge_cwao_pl_v.grib  \
-		data/tigge/tigge_cwao_sfc_10u.grib  \
-		data/tigge/tigge_cwao_sfc_10v.grib  \
-		data/tigge/tigge_cwao_sfc_2d.grib  \
-		data/tigge/tigge_cwao_sfc_2t.grib  \
-		data/tigge/tigge_cwao_sfc_mn2t6.grib  \
-		data/tigge/tigge_cwao_sfc_msl.grib  \
-		data/tigge/tigge_cwao_sfc_mx2t6.grib  \
-		data/tigge/tigge_cwao_sfc_orog.grib  \
-		data/tigge/tigge_cwao_sfc_sd.grib  \
-		data/tigge/tigge_cwao_sfc_skt.grib  \
-		data/tigge/tigge_cwao_sfc_sp.grib  \
-		data/tigge/tigge_cwao_sfc_st.grib  \
-		data/tigge/tigge_cwao_sfc_tcc.grib  \
-		data/tigge/tigge_cwao_sfc_tcw.grib  \
-		data/tigge/tigge_cwao_sfc_tp.grib  \
-		data/tigge/tigge_ecmf_pl_gh.grib  \
-		data/tigge/tigge_ecmf_pl_q.grib  \
-		data/tigge/tigge_ecmf_pl_t.grib  \
-		data/tigge/tigge_ecmf_pl_u.grib  \
-		data/tigge/tigge_ecmf_pl_v.grib  \
-		data/tigge/tigge_ecmf_pt_pv.grib  \
-		data/tigge/tigge_ecmf_pv_pt.grib  \
-		data/tigge/tigge_ecmf_pv_u.grib  \
-		data/tigge/tigge_ecmf_pv_v.grib  \
-		data/tigge/tigge_ecmf_sfc_10u.grib  \
-		data/tigge/tigge_ecmf_sfc_10v.grib  \
-		data/tigge/tigge_ecmf_sfc_2d.grib  \
-		data/tigge/tigge_ecmf_sfc_2t.grib  \
-		data/tigge/tigge_ecmf_sfc_cap.grib  \
-		data/tigge/tigge_ecmf_sfc_cape.grib  \
-		data/tigge/tigge_ecmf_sfc_mn2t6.grib  \
-		data/tigge/tigge_ecmf_sfc_msl.grib  \
-		data/tigge/tigge_ecmf_sfc_mx2t6.grib  \
-		data/tigge/tigge_ecmf_sfc_sd.grib  \
-		data/tigge/tigge_ecmf_sfc_sf.grib  \
-		data/tigge/tigge_ecmf_sfc_skt.grib  \
-		data/tigge/tigge_ecmf_sfc_slhf.grib  \
-		data/tigge/tigge_ecmf_sfc_sm.grib  \
-		data/tigge/tigge_ecmf_sfc_sp.grib  \
-		data/tigge/tigge_ecmf_sfc_sshf.grib  \
-		data/tigge/tigge_ecmf_sfc_ssr.grib  \
-		data/tigge/tigge_ecmf_sfc_st.grib  \
-		data/tigge/tigge_ecmf_sfc_str.grib  \
-		data/tigge/tigge_ecmf_sfc_sund.grib  \
-		data/tigge/tigge_ecmf_sfc_tcc.grib  \
-		data/tigge/tigge_ecmf_sfc_tcw.grib  \
-		data/tigge/tigge_ecmf_sfc_tp.grib  \
-		data/tigge/tigge_ecmf_sfc_ttr.grib  \
-		data/tigge/tigge_egrr_pl_gh.grib  \
-		data/tigge/tigge_egrr_pl_q.grib  \
-		data/tigge/tigge_egrr_pl_t.grib  \
-		data/tigge/tigge_egrr_pl_u.grib  \
-		data/tigge/tigge_egrr_pl_v.grib  \
-		data/tigge/tigge_egrr_pt_pv.grib  \
-		data/tigge/tigge_egrr_pv_pt.grib  \
-		data/tigge/tigge_egrr_pv_u.grib  \
-		data/tigge/tigge_egrr_pv_v.grib  \
-		data/tigge/tigge_egrr_sfc_10u.grib  \
-		data/tigge/tigge_egrr_sfc_10v.grib  \
-		data/tigge/tigge_egrr_sfc_2d.grib  \
-		data/tigge/tigge_egrr_sfc_2t.grib  \
-		data/tigge/tigge_egrr_sfc_mn2t6.grib  \
-		data/tigge/tigge_egrr_sfc_msl.grib  \
-		data/tigge/tigge_egrr_sfc_mx2t6.grib  \
-		data/tigge/tigge_egrr_sfc_sd.grib  \
-		data/tigge/tigge_egrr_sfc_sf.grib  \
-		data/tigge/tigge_egrr_sfc_skt.grib  \
-		data/tigge/tigge_egrr_sfc_slhf.grib  \
-		data/tigge/tigge_egrr_sfc_sm.grib  \
-		data/tigge/tigge_egrr_sfc_sp.grib  \
-		data/tigge/tigge_egrr_sfc_sshf.grib  \
-		data/tigge/tigge_egrr_sfc_ssr.grib  \
-		data/tigge/tigge_egrr_sfc_st.grib  \
-		data/tigge/tigge_egrr_sfc_str.grib  \
-		data/tigge/tigge_egrr_sfc_tcc.grib  \
-		data/tigge/tigge_egrr_sfc_tcw.grib  \
-		data/tigge/tigge_egrr_sfc_tp.grib  \
-		data/tigge/tigge_egrr_sfc_ttr.grib  \
-		data/tigge/tigge_kwbc_pl_gh.grib  \
-		data/tigge/tigge_kwbc_pl_q.grib  \
-		data/tigge/tigge_kwbc_pl_t.grib  \
-		data/tigge/tigge_kwbc_pl_u.grib  \
-		data/tigge/tigge_kwbc_pl_v.grib  \
-		data/tigge/tigge_kwbc_pt_pv.grib  \
-		data/tigge/tigge_kwbc_pv_pt.grib  \
-		data/tigge/tigge_kwbc_pv_u.grib  \
-		data/tigge/tigge_kwbc_pv_v.grib  \
-		data/tigge/tigge_kwbc_sfc_10u.grib  \
-		data/tigge/tigge_kwbc_sfc_10v.grib  \
-		data/tigge/tigge_kwbc_sfc_2d.grib  \
-		data/tigge/tigge_kwbc_sfc_2t.grib  \
-		data/tigge/tigge_kwbc_sfc_cap.grib  \
-		data/tigge/tigge_kwbc_sfc_cape.grib  \
-		data/tigge/tigge_kwbc_sfc_ci.grib  \
-		data/tigge/tigge_kwbc_sfc_lsm.grib  \
-		data/tigge/tigge_kwbc_sfc_mn2t6.grib  \
-		data/tigge/tigge_kwbc_sfc_msl.grib  \
-		data/tigge/tigge_kwbc_sfc_mx2t6.grib  \
-		data/tigge/tigge_kwbc_sfc_sd.grib  \
-		data/tigge/tigge_kwbc_sfc_sf.grib  \
-		data/tigge/tigge_kwbc_sfc_skt.grib  \
-		data/tigge/tigge_kwbc_sfc_slhf.grib  \
-		data/tigge/tigge_kwbc_sfc_sm.grib  \
-		data/tigge/tigge_kwbc_sfc_sp.grib  \
-		data/tigge/tigge_kwbc_sfc_sshf.grib  \
-		data/tigge/tigge_kwbc_sfc_ssr.grib  \
-		data/tigge/tigge_kwbc_sfc_st.grib  \
-		data/tigge/tigge_kwbc_sfc_str.grib  \
-		data/tigge/tigge_kwbc_sfc_tcw.grib  \
-		data/tigge/tigge_kwbc_sfc_tp.grib  \
-		data/tigge/tigge_kwbc_sfc_ttr.grib  \
-		data/tigge/tigge_lfpw_pl_gh.grib  \
-		data/tigge/tigge_lfpw_pl_q.grib  \
-		data/tigge/tigge_lfpw_pl_t.grib  \
-		data/tigge/tigge_lfpw_pl_u.grib  \
-		data/tigge/tigge_lfpw_pl_v.grib  \
-		data/tigge/tigge_lfpw_pv_pt.grib  \
-		data/tigge/tigge_lfpw_pv_u.grib  \
-		data/tigge/tigge_lfpw_pv_v.grib  \
-		data/tigge/tigge_lfpw_sfc_10u.grib  \
-		data/tigge/tigge_lfpw_sfc_10v.grib  \
-		data/tigge/tigge_lfpw_sfc_2d.grib  \
-		data/tigge/tigge_lfpw_sfc_2t.grib  \
-		data/tigge/tigge_lfpw_sfc_cap.grib  \
-		data/tigge/tigge_lfpw_sfc_cape.grib  \
-		data/tigge/tigge_lfpw_sfc_mn2t6.grib  \
-		data/tigge/tigge_lfpw_sfc_msl.grib  \
-		data/tigge/tigge_lfpw_sfc_mx2t6.grib  \
-		data/tigge/tigge_lfpw_sfc_sd.grib  \
-		data/tigge/tigge_lfpw_sfc_sf.grib  \
-		data/tigge/tigge_lfpw_sfc_skt.grib  \
-		data/tigge/tigge_lfpw_sfc_slhf.grib  \
-		data/tigge/tigge_lfpw_sfc_sp.grib  \
-		data/tigge/tigge_lfpw_sfc_sshf.grib  \
-		data/tigge/tigge_lfpw_sfc_ssr.grib  \
-		data/tigge/tigge_lfpw_sfc_st.grib  \
-		data/tigge/tigge_lfpw_sfc_str.grib  \
-		data/tigge/tigge_lfpw_sfc_tcc.grib  \
-		data/tigge/tigge_lfpw_sfc_tcw.grib  \
-		data/tigge/tigge_lfpw_sfc_tp.grib  \
-		data/tigge/tigge_lfpw_sfc_ttr.grib  \
-		data/tigge/tigge_rjtd_pl_gh.grib  \
-		data/tigge/tigge_rjtd_pl_q.grib  \
-		data/tigge/tigge_rjtd_pl_t.grib  \
-		data/tigge/tigge_rjtd_pl_u.grib  \
-		data/tigge/tigge_rjtd_pl_v.grib  \
-		data/tigge/tigge_rjtd_sfc_10u.grib  \
-		data/tigge/tigge_rjtd_sfc_10v.grib  \
-		data/tigge/tigge_rjtd_sfc_2d.grib  \
-		data/tigge/tigge_rjtd_sfc_2t.grib  \
-		data/tigge/tigge_rjtd_sfc_mn2t6.grib  \
-		data/tigge/tigge_rjtd_sfc_msl.grib  \
-		data/tigge/tigge_rjtd_sfc_mx2t6.grib  \
-		data/tigge/tigge_rjtd_sfc_sd.grib  \
-		data/tigge/tigge_rjtd_sfc_skt.grib  \
-		data/tigge/tigge_rjtd_sfc_slhf.grib  \
-		data/tigge/tigge_rjtd_sfc_sm.grib  \
-		data/tigge/tigge_rjtd_sfc_sp.grib  \
-		data/tigge/tigge_rjtd_sfc_sshf.grib  \
-		data/tigge/tigge_rjtd_sfc_ssr.grib  \
-		data/tigge/tigge_rjtd_sfc_str.grib  \
-		data/tigge/tigge_rjtd_sfc_tcc.grib  \
-		data/tigge/tigge_rjtd_sfc_tcw.grib  \
-		data/tigge/tigge_rjtd_sfc_tp.grib  \
-		data/tigge/tigge_rjtd_sfc_ttr.grib  \
-		data/tigge/tigge_rksl_pl_gh.grib  \
-		data/tigge/tigge_rksl_pl_q.grib  \
-		data/tigge/tigge_rksl_pl_t.grib  \
-		data/tigge/tigge_rksl_pl_u.grib  \
-		data/tigge/tigge_rksl_pl_v.grib  \
-		data/tigge/tigge_rksl_sfc_10u.grib  \
-		data/tigge/tigge_rksl_sfc_10v.grib  \
-		data/tigge/tigge_rksl_sfc_2t.grib  \
-		data/tigge/tigge_rksl_sfc_msl.grib  \
-		data/tigge/tigge_rksl_sfc_sp.grib  \
-		data/tigge/tigge_sbsj_pl_gh.grib  \
-		data/tigge/tigge_sbsj_pl_q.grib  \
-		data/tigge/tigge_sbsj_pl_t.grib  \
-		data/tigge/tigge_sbsj_pl_u.grib  \
-		data/tigge/tigge_sbsj_pl_v.grib  \
-		data/tigge/tigge_sbsj_sfc_10u.grib  \
-		data/tigge/tigge_sbsj_sfc_10v.grib  \
-		data/tigge/tigge_sbsj_sfc_2t.grib  \
-		data/tigge/tigge_sbsj_sfc_msl.grib  \
-		data/tigge/tigge_sbsj_sfc_sf.grib  \
-		data/tigge/tigge_sbsj_sfc_skt.grib  \
-		data/tigge/tigge_sbsj_sfc_sp.grib  \
-		data/tigge/tigge_sbsj_sfc_ssr.grib  \
-		data/tigge/tigge_sbsj_sfc_st.grib  \
-		data/tigge/tigge_sbsj_sfc_tcc.grib  \
-		data/tigge/tigge_sbsj_sfc_tcw.grib  \
-		data/tigge/tigge_sbsj_sfc_tp.grib \
-		data/tigge/tiggelam_cnmc_sfc.grib \
-		data/constant_width_bitmap.grib \
-		data/constant_width_boust_bitmap.grib \
-		data/gen.grib \
-		data/gen_bitmap.grib \
-		data/gen_ext.grib \
-		data/gen_ext_bitmap.grib \
-		data/gen_ext_boust.grib \
-		data/gen_ext_boust_bitmap.grib \
-		data/gen_ext_spd_2.grib \
-		data/gen_ext_spd_2_bitmap.grib \
-		data/gen_ext_spd_2_boust_bitmap.grib \
-		data/gen_ext_spd_3.grib \
-		data/gen_ext_spd_3_boust_bitmap.grib \
-		data/row.grib \
-		data/simple.grib \
-		data/read_any.ok \
-		data/simple_bitmap.grib \
-		data/second_ord_rbr.grib1 \
-		data/download.sh \
-		perf/jmeter.awk \
-		perf/time.sh \
-		CMakeLists.txt \
-		project_summary.cmake \
-		VERSION.cmake \
-		eccodes_config.h.in \
-		examples/CMakeLists.txt \
-		data/CMakeLists.txt \
-		data/tigge/CMakeLists.txt \
-		data/bufr/CMakeLists.txt \
-		ifs_samples/grib1/CMakeLists.txt \
-		ifs_samples/grib1_mlgrib2_ieee64/CMakeLists.txt \
-		ifs_samples/grib1_mlgrib2_ieee32/CMakeLists.txt \
-		ifs_samples/CMakeLists.txt \
-		ifs_samples/grib1_mlgrib2/CMakeLists.txt \
-		samples/CMakeLists.txt \
-		windows/msvc/grib_api.sln \
-		windows/msvc/grib_api_lib/grib_api_lib.vcproj \
-		windows/msvc/grib_dump/grib_dump.vcproj \
-		windows/msvc/grib_compare/grib_compare.vcproj \
-		windows/msvc/grib_copy/grib_copy.vcproj \
-		windows/msvc/grib_filter/grib_filter.vcproj \
-		windows/msvc/grib_get/grib_get.vcproj \
-		windows/msvc/grib_get_data/grib_get_data.vcproj \
-		windows/msvc/grib_ls/grib_ls.vcproj \
-		windows/msvc/grib_set/grib_set.vcproj
-
-perf_dir = /tmp/masn/git/grib_api/eccodes/perf
-rpmspec = rpms/$(PACKAGE_TARNAME).spec
-rpmmacros = \
-    --define="_rpmdir $${PWD}"\
-    --define="_srcrpmdir $${PWD}"\
-    --define="_sourcedir $${PWD}"\
-    --define="_specdir $${PWD}"\
-    --define="_builddir $${PWD}"
-
-RPMBUILD = rpmbuild
-RPMFLAGS = --nodeps --buildroot="$${PWD}/_rpm"
-main_package = $(abs_top_srcdir)/$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-$(host_os)-$(host_cpu)-$(RPM_RELEASE).tar
-all: all-recursive
-
-.SUFFIXES:
-am--refresh: Makefile
-	@:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
-	      $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
-		&& exit 0; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    echo ' $(SHELL) ./config.status'; \
-	    $(SHELL) ./config.status;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	$(SHELL) ./config.status --recheck
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-$(am__aclocal_m4_deps):
-rpms/eccodes.pc: $(top_builddir)/config.status $(top_srcdir)/rpms/eccodes.pc.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-rpms/eccodes.spec: $(top_builddir)/config.status $(top_srcdir)/rpms/eccodes.spec.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-rpms/eccodes_f90.pc: $(top_builddir)/config.status $(top_srcdir)/rpms/eccodes_f90.pc.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-perl/GRIB-API/Makefile.PL: $(top_builddir)/config.status $(top_srcdir)/perl/GRIB-API/Makefile.PL.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-distclean-libtool:
-	-rm -f libtool config.lt
-install-pkgconfigDATA: $(pkgconfig_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
-	done
-
-uninstall-pkgconfigDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run 'make' without going through this Makefile.
-# To change the values of 'make' variables: instead of editing Makefiles,
-# (1) if the variable is set in 'config.status', edit 'config.status'
-#     (which will cause the Makefiles to be regenerated when you run 'make');
-# (2) otherwise, pass the desired values on the 'make' command line.
-$(am__recursive_targets):
-	@fail=; \
-	if $(am__make_keepgoing); then \
-	  failcom='fail=yes'; \
-	else \
-	  failcom='exit 1'; \
-	fi; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	for subdir in $$list; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    dot_seen=yes; \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done; \
-	if test "$$dot_seen" = "no"; then \
-	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-	fi; test -z "$$fail"
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-recursive
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
-	  include_option=--etags-include; \
-	  empty_fix=.; \
-	else \
-	  include_option=--include; \
-	  empty_fix=; \
-	fi; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test ! -f $$subdir/TAGS || \
-	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
-	  fi; \
-	done; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-recursive
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscope: cscope.files
-	test ! -s cscope.files \
-	  || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
-clean-cscope:
-	-rm -f cscope.files
-cscope.files: clean-cscope cscopelist
-cscopelist: cscopelist-recursive
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-	-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
-
-distdir: $(DISTFILES)
-	$(am__remove_distdir)
-	test -d "$(distdir)" || mkdir "$(distdir)"
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    $(am__make_dryrun) \
-	      || test -d "$(distdir)/$$subdir" \
-	      || $(MKDIR_P) "$(distdir)/$$subdir" \
-	      || exit 1; \
-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
-	    $(am__relativize); \
-	    new_distdir=$$reldir; \
-	    dir1=$$subdir; dir2="$(top_distdir)"; \
-	    $(am__relativize); \
-	    new_top_distdir=$$reldir; \
-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
-	    ($(am__cd) $$subdir && \
-	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$new_top_distdir" \
-	        distdir="$$new_distdir" \
-		am__remove_distdir=: \
-		am__skip_length_check=: \
-		am__skip_mode_fix=: \
-	        distdir) \
-	      || exit 1; \
-	  fi; \
-	done
-	-test -n "$(am__skip_mode_fix)" \
-	|| find "$(distdir)" -type d ! -perm -755 \
-		-exec chmod u+rwx,go+rx {} \; -o \
-	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
-	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
-	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
-	|| chmod -R a+r "$(distdir)"
-dist-gzip: distdir
-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(am__post_remove_distdir)
-
-dist-bzip2: distdir
-	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
-	$(am__post_remove_distdir)
-
-dist-lzip: distdir
-	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
-	$(am__post_remove_distdir)
-
-dist-xz: distdir
-	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
-	$(am__post_remove_distdir)
-
-dist-tarZ: distdir
-	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-	$(am__post_remove_distdir)
-
-dist-shar: distdir
-	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
-	$(am__post_remove_distdir)
-
-dist-zip: distdir
-	-rm -f $(distdir).zip
-	zip -rq $(distdir).zip $(distdir)
-	$(am__post_remove_distdir)
-
-dist dist-all:
-	$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
-	$(am__post_remove_distdir)
-
-# This target untars the dist file and tries a VPATH configuration.  Then
-# it guarantees that the distribution is self-contained by making another
-# tarfile.
-distcheck: dist
-	case '$(DIST_ARCHIVES)' in \
-	*.tar.gz*) \
-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
-	*.tar.bz2*) \
-	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
-	*.tar.lz*) \
-	  lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
-	*.tar.xz*) \
-	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
-	*.tar.Z*) \
-	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
-	*.shar.gz*) \
-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
-	*.zip*) \
-	  unzip $(distdir).zip ;;\
-	esac
-	chmod -R a-w $(distdir)
-	chmod u+w $(distdir)
-	mkdir $(distdir)/_build $(distdir)/_inst
-	chmod a-w $(distdir)
-	test -d $(distdir)/_build || exit 0; \
-	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
-	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
-	  && am__cwd=`pwd` \
-	  && $(am__cd) $(distdir)/_build \
-	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
-	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
-	    $(DISTCHECK_CONFIGURE_FLAGS) \
-	  && $(MAKE) $(AM_MAKEFLAGS) \
-	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
-	  && $(MAKE) $(AM_MAKEFLAGS) check \
-	  && $(MAKE) $(AM_MAKEFLAGS) install \
-	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
-	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
-	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
-	        distuninstallcheck \
-	  && chmod -R a-w "$$dc_install_base" \
-	  && ({ \
-	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
-	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
-	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
-	  && rm -rf "$$dc_destdir" \
-	  && $(MAKE) $(AM_MAKEFLAGS) dist \
-	  && rm -rf $(DIST_ARCHIVES) \
-	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
-	  && cd "$$am__cwd" \
-	  || exit 1
-	$(am__post_remove_distdir)
-	@(echo "$(distdir) archives ready for distribution: "; \
-	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
-	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
-distuninstallcheck:
-	@test -n '$(distuninstallcheck_dir)' || { \
-	  echo 'ERROR: trying to run $@ with an empty' \
-	       '$$(distuninstallcheck_dir)' >&2; \
-	  exit 1; \
-	}; \
-	$(am__cd) '$(distuninstallcheck_dir)' || { \
-	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
-	  exit 1; \
-	}; \
-	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
-	   || { echo "ERROR: files left after uninstall:" ; \
-	        if test -n "$(DESTDIR)"; then \
-	          echo "  (check DESTDIR support)"; \
-	        fi ; \
-	        $(distuninstallcheck_listfiles) ; \
-	        exit 1; } >&2
-distcleancheck: distclean
-	@if test '$(srcdir)' = . ; then \
-	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
-	  exit 1 ; \
-	fi
-	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
-	  || { echo "ERROR: files left in build directory after distclean:" ; \
-	       $(distcleancheck_listfiles) ; \
-	       exit 1; } >&2
-check-am: all-am
-check: check-recursive
-all-am: Makefile $(DATA)
-installdirs: installdirs-recursive
-installdirs-am:
-	for dir in "$(DESTDIR)$(pkgconfigdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-recursive
-	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool \
-	distclean-local distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am: install-pkgconfigDATA
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
-	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-	-rm -rf $(top_srcdir)/autom4te.cache
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am: uninstall-pkgconfigDATA
-
-.MAKE: $(am__recursive_targets) install-am install-strip
-
-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
-	am--refresh check check-am clean clean-cscope clean-generic \
-	clean-libtool cscope cscopelist-am ctags ctags-am dist \
-	dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \
-	dist-xz dist-zip distcheck distclean distclean-generic \
-	distclean-libtool distclean-local distclean-tags \
-	distcleancheck distdir distuninstallcheck dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-pkgconfigDATA install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs installdirs-am \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am uninstall-pkgconfigDATA
-
-libtool: $(LIBTOOL_DEPS)
-	$(SHELL) ./configure_status libtool
-
-$(top_srcdir)/configure: $(top_srcdir)/version.sh
-
-check-perf:
-	@echo "Running and benchmarking tests $(perf_dir). This process will take some time."
-#       -rm -f $(perf_dir)/report.out*
-	for i in 1 2 3 ; do \
-		echo "Running iteration $$i" ;\
-			$(MAKE) check PYTHON=$(PYTHON) TOPBUILDDIR=$(abs_builddir) TESTS_ENVIRONMENT=$(perf_dir)/time.sh \
-                > $(perf_dir)/report.out.$$i 2>&1; done
-	cat $(perf_dir)/report.out* | $(AWK) -f $(perf_dir)/jmeter.awk -v JMETER="true" TIMESTAMP=`date +%s`000 > $(perf_dir)/report.jtl
-	cat $(perf_dir)/report.out* | $(AWK) -f $(perf_dir)/jmeter.awk -v JMETER="false" TIMESTAMP=`date +%s`000 > $(perf_dir)/report.xml
-#	-rm -f $(perf_dir)/report.out*
-	@echo "Testing and benchmarks have finished"
-
-rpmcheck:
-	@if [ which $(RPMBUILD) &> /dev/null ]; then \
-		echo "*** This make target requires an rpm-based Linux distribution"; \
-		(exit 1); exit 1; \
-	fi
-
-srcrpm: dist rpmcheck $(rpmspec)
-	$(RPMBUILD) $(RPMFLAGS) -bs $(rpmmacros) $(rpmspec)
-
-rpms: dist rpmcheck $(rpmspec)
-	$(RPMBUILD) $(RPMFLAGS) -ba $(rpmmacros) $(rpmspec)
-
-dist-defs:
-	@rm -f $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-defs.tar.gz
-	cd definitions; \
-	$(MAKE) top_distdir=$(abs_top_srcdir)/_distdefs distdir=$(abs_top_srcdir)/_distdefs/definitions distdir; \
-	cd $(abs_top_srcdir)/_distdefs; \
-	tar zcvf $(abs_top_srcdir)/$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-defs.tar.gz definitions > /dev/null
-	@rm -rf _distdefs
-	@echo "Created definitions tar ball \"$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-defs.tar.gz\""
-
-bindist:
-	$(MAKE) DESTDIR=$(abs_top_srcdir)/_dist
-	$(MAKE) DESTDIR=$(abs_top_srcdir)/_dist install
-	cd $(abs_top_srcdir)/_dist; \
-	find . -type f -o -type l | grep $(prefix) | \
-		cpio -ov -H ustar > $(main_package) ; \
-	gzip $(main_package)
-
-distclean-local:
-	rm -rf $${PWD}/_rpm
-	find $${PWD} -name "*.rpm" -exec rm {} \;
-	rm -f *.tar.gz
-	rm -rf $(RPM_HOST_CPU)
-	rm -rf _dist _distdefs
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/Makefile.am b/Makefile.am
index e4db609..b1f45ae 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -32,34 +32,20 @@ EXTRA_DIST = README AUTHORS NOTICE LICENSE ChangeLog version.sh html \
 		src/dummy.am \
 		definitions/dummy.am \
 		definitions/make_makefile_am.pl \
+		data/grib_data_files.txt \
 		data/ls.log \
 		data/multi.ok \
-		data/in_copy.grib \
-		data/bad.grib \
 		data/local.good.log \
 		data/typeOfProcessedData.ok \
-		data/gts.grib \
-		data/v.grib2 \
-		data/satellite.grib \
-		data/pad.grib \
-		data/missing_field.grib1 \
 		data/multi_step.txt \
-		data/multi_created.grib2 \
-		data/multi.grib2 \
-		data/sample.grib2 \
 		data/bitmap.diff \
 		data/no_bitmap.diff \
 		data/ieee_test.good \
-		data/index.grib \
 		data/index.ok \
 		data/index_f90.ok \
-		data/grid_ieee.grib \
 		data/spherical_model_level.grib1_32.good \
 		data/spherical_model_level.grib1.good \
-		data/budg \
-		data/tp_ecmwf.grib \
 		data/statistics.out.good \
-		data/jpeg.grib2 \
 		data/scan_x_regular_gg_5_7_good.dump \
 		data/scan_x_regular_ll_5_4_good.dump \
 		data/scan_x_regular_ll_5_7_good.dump \
@@ -77,299 +63,15 @@ EXTRA_DIST = README AUTHORS NOTICE LICENSE ChangeLog version.sh html \
 		data/scan_y_rotated_ll_5_7_good.dump \
 		data/scan_y_rotated_ll_8_4_good.dump \
 		data/scan_y_rotated_ll_8_7_good.dump \
-		data/tigge_pf_ecmwf.grib2 \
 		data/tigge_pf_ecmwf.grib2.ref \
-		data/regular_gaussian_pressure_level.grib1 \
-		data/regular_gaussian_model_level.grib1 \
-		data/regular_gaussian_surface.grib1 \
-		data/regular_latlon_surface.grib1 \
-		data/reduced_gaussian_model_level.grib1 \
-		data/reduced_gaussian_pressure_level.grib1 \
-		data/reduced_gaussian_lsm.grib1 \
-		data/reduced_gaussian_surface_jpeg.grib2 \
-		data/timeRangeIndicator_0.grib \
-		data/timeRangeIndicator_10.grib  \
-		data/timeRangeIndicator_5.grib \
-		data/reduced_gaussian_model_level.grib1 \
-		data/reduced_gaussian_surface.grib1 \
-		data/reduced_latlon_surface.grib1 \
-		data/spherical_model_level.grib1 \
-		data/spherical_pressure_level.grib1 \
-		data/missing.grib2 \
-		data/gfs.c255.grib2 \
-		data/constant_field.grib1 \
-		data/reduced_gaussian_pressure_level_constant.grib1 \
-		data/reduced_latlon_surface_constant.grib1 \
-		data/regular_gaussian_pressure_level_constant.grib1 \
-		data/regular_latlon_surface_constant.grib1 \
-		data/reduced_gaussian_sub_area.grib1 \
-		data/constant_field.grib1 \
 		data/60_model_levels \
 		data/list_points \
 		data/step.log \
 		data/step_grib1.filter \
 		data/step_grib1.log \
 		data/julian.out.good \
-		data/test_uuid.grib2 \
-		data/tigge/tigge_ammc_pl_gh.grib  \
-		data/tigge/tigge_ammc_pl_q.grib  \
-		data/tigge/tigge_ammc_pl_t.grib  \
-		data/tigge/tigge_ammc_pl_u.grib  \
-		data/tigge/tigge_ammc_pl_v.grib  \
-		data/tigge/tigge_ammc_sfc_10u.grib  \
-		data/tigge/tigge_ammc_sfc_10v.grib  \
-		data/tigge/tigge_ammc_sfc_2t.grib  \
-		data/tigge/tigge_ammc_sfc_lsm.grib  \
-		data/tigge/tigge_ammc_sfc_mn2t6.grib  \
-		data/tigge/tigge_ammc_sfc_msl.grib  \
-		data/tigge/tigge_ammc_sfc_mx2t6.grib  \
-		data/tigge/tigge_ammc_sfc_orog.grib  \
-		data/tigge/tigge_ammc_sfc_sf.grib  \
-		data/tigge/tigge_ammc_sfc_sp.grib  \
-		data/tigge/tigge_ammc_sfc_st.grib  \
-		data/tigge/tigge_ammc_sfc_tcc.grib  \
-		data/tigge/tigge_ammc_sfc_tcw.grib  \
-		data/tigge/tigge_ammc_sfc_tp.grib  \
-		data/tigge/tigge_babj_pl_gh.grib  \
-		data/tigge/tigge_babj_pl_q.grib  \
-		data/tigge/tigge_babj_pl_t.grib  \
-		data/tigge/tigge_babj_pl_u.grib  \
-		data/tigge/tigge_babj_pl_v.grib  \
-		data/tigge/tigge_babj_sfc_10u.grib  \
-		data/tigge/tigge_babj_sfc_10v.grib  \
-		data/tigge/tigge_babj_sfc_2d.grib  \
-		data/tigge/tigge_babj_sfc_2t.grib  \
-		data/tigge/tigge_babj_sfc_lsm.grib  \
-		data/tigge/tigge_babj_sfc_mn2t6.grib  \
-		data/tigge/tigge_babj_sfc_msl.grib  \
-		data/tigge/tigge_babj_sfc_mx2t6.grib  \
-		data/tigge/tigge_babj_sfc_orog.grib  \
-		data/tigge/tigge_babj_sfc_sd.grib  \
-		data/tigge/tigge_babj_sfc_sf.grib  \
-		data/tigge/tigge_babj_sfc_slhf.grib  \
-		data/tigge/tigge_babj_sfc_sp.grib  \
-		data/tigge/tigge_babj_sfc_sshf.grib  \
-		data/tigge/tigge_babj_sfc_ssr.grib  \
-		data/tigge/tigge_babj_sfc_str.grib  \
-		data/tigge/tigge_babj_sfc_tcc.grib  \
-		data/tigge/tigge_babj_sfc_tcw.grib  \
-		data/tigge/tigge_babj_sfc_tp.grib  \
-		data/tigge/tigge_cwao_pl_gh.grib  \
-		data/tigge/tigge_cwao_pl_q.grib  \
-		data/tigge/tigge_cwao_pl_t.grib  \
-		data/tigge/tigge_cwao_pl_u.grib  \
-		data/tigge/tigge_cwao_pl_v.grib  \
-		data/tigge/tigge_cwao_sfc_10u.grib  \
-		data/tigge/tigge_cwao_sfc_10v.grib  \
-		data/tigge/tigge_cwao_sfc_2d.grib  \
-		data/tigge/tigge_cwao_sfc_2t.grib  \
-		data/tigge/tigge_cwao_sfc_mn2t6.grib  \
-		data/tigge/tigge_cwao_sfc_msl.grib  \
-		data/tigge/tigge_cwao_sfc_mx2t6.grib  \
-		data/tigge/tigge_cwao_sfc_orog.grib  \
-		data/tigge/tigge_cwao_sfc_sd.grib  \
-		data/tigge/tigge_cwao_sfc_skt.grib  \
-		data/tigge/tigge_cwao_sfc_sp.grib  \
-		data/tigge/tigge_cwao_sfc_st.grib  \
-		data/tigge/tigge_cwao_sfc_tcc.grib  \
-		data/tigge/tigge_cwao_sfc_tcw.grib  \
-		data/tigge/tigge_cwao_sfc_tp.grib  \
-		data/tigge/tigge_ecmf_pl_gh.grib  \
-		data/tigge/tigge_ecmf_pl_q.grib  \
-		data/tigge/tigge_ecmf_pl_t.grib  \
-		data/tigge/tigge_ecmf_pl_u.grib  \
-		data/tigge/tigge_ecmf_pl_v.grib  \
-		data/tigge/tigge_ecmf_pt_pv.grib  \
-		data/tigge/tigge_ecmf_pv_pt.grib  \
-		data/tigge/tigge_ecmf_pv_u.grib  \
-		data/tigge/tigge_ecmf_pv_v.grib  \
-		data/tigge/tigge_ecmf_sfc_10u.grib  \
-		data/tigge/tigge_ecmf_sfc_10v.grib  \
-		data/tigge/tigge_ecmf_sfc_2d.grib  \
-		data/tigge/tigge_ecmf_sfc_2t.grib  \
-		data/tigge/tigge_ecmf_sfc_cap.grib  \
-		data/tigge/tigge_ecmf_sfc_cape.grib  \
-		data/tigge/tigge_ecmf_sfc_mn2t6.grib  \
-		data/tigge/tigge_ecmf_sfc_msl.grib  \
-		data/tigge/tigge_ecmf_sfc_mx2t6.grib  \
-		data/tigge/tigge_ecmf_sfc_sd.grib  \
-		data/tigge/tigge_ecmf_sfc_sf.grib  \
-		data/tigge/tigge_ecmf_sfc_skt.grib  \
-		data/tigge/tigge_ecmf_sfc_slhf.grib  \
-		data/tigge/tigge_ecmf_sfc_sm.grib  \
-		data/tigge/tigge_ecmf_sfc_sp.grib  \
-		data/tigge/tigge_ecmf_sfc_sshf.grib  \
-		data/tigge/tigge_ecmf_sfc_ssr.grib  \
-		data/tigge/tigge_ecmf_sfc_st.grib  \
-		data/tigge/tigge_ecmf_sfc_str.grib  \
-		data/tigge/tigge_ecmf_sfc_sund.grib  \
-		data/tigge/tigge_ecmf_sfc_tcc.grib  \
-		data/tigge/tigge_ecmf_sfc_tcw.grib  \
-		data/tigge/tigge_ecmf_sfc_tp.grib  \
-		data/tigge/tigge_ecmf_sfc_ttr.grib  \
-		data/tigge/tigge_egrr_pl_gh.grib  \
-		data/tigge/tigge_egrr_pl_q.grib  \
-		data/tigge/tigge_egrr_pl_t.grib  \
-		data/tigge/tigge_egrr_pl_u.grib  \
-		data/tigge/tigge_egrr_pl_v.grib  \
-		data/tigge/tigge_egrr_pt_pv.grib  \
-		data/tigge/tigge_egrr_pv_pt.grib  \
-		data/tigge/tigge_egrr_pv_u.grib  \
-		data/tigge/tigge_egrr_pv_v.grib  \
-		data/tigge/tigge_egrr_sfc_10u.grib  \
-		data/tigge/tigge_egrr_sfc_10v.grib  \
-		data/tigge/tigge_egrr_sfc_2d.grib  \
-		data/tigge/tigge_egrr_sfc_2t.grib  \
-		data/tigge/tigge_egrr_sfc_mn2t6.grib  \
-		data/tigge/tigge_egrr_sfc_msl.grib  \
-		data/tigge/tigge_egrr_sfc_mx2t6.grib  \
-		data/tigge/tigge_egrr_sfc_sd.grib  \
-		data/tigge/tigge_egrr_sfc_sf.grib  \
-		data/tigge/tigge_egrr_sfc_skt.grib  \
-		data/tigge/tigge_egrr_sfc_slhf.grib  \
-		data/tigge/tigge_egrr_sfc_sm.grib  \
-		data/tigge/tigge_egrr_sfc_sp.grib  \
-		data/tigge/tigge_egrr_sfc_sshf.grib  \
-		data/tigge/tigge_egrr_sfc_ssr.grib  \
-		data/tigge/tigge_egrr_sfc_st.grib  \
-		data/tigge/tigge_egrr_sfc_str.grib  \
-		data/tigge/tigge_egrr_sfc_tcc.grib  \
-		data/tigge/tigge_egrr_sfc_tcw.grib  \
-		data/tigge/tigge_egrr_sfc_tp.grib  \
-		data/tigge/tigge_egrr_sfc_ttr.grib  \
-		data/tigge/tigge_kwbc_pl_gh.grib  \
-		data/tigge/tigge_kwbc_pl_q.grib  \
-		data/tigge/tigge_kwbc_pl_t.grib  \
-		data/tigge/tigge_kwbc_pl_u.grib  \
-		data/tigge/tigge_kwbc_pl_v.grib  \
-		data/tigge/tigge_kwbc_pt_pv.grib  \
-		data/tigge/tigge_kwbc_pv_pt.grib  \
-		data/tigge/tigge_kwbc_pv_u.grib  \
-		data/tigge/tigge_kwbc_pv_v.grib  \
-		data/tigge/tigge_kwbc_sfc_10u.grib  \
-		data/tigge/tigge_kwbc_sfc_10v.grib  \
-		data/tigge/tigge_kwbc_sfc_2d.grib  \
-		data/tigge/tigge_kwbc_sfc_2t.grib  \
-		data/tigge/tigge_kwbc_sfc_cap.grib  \
-		data/tigge/tigge_kwbc_sfc_cape.grib  \
-		data/tigge/tigge_kwbc_sfc_ci.grib  \
-		data/tigge/tigge_kwbc_sfc_lsm.grib  \
-		data/tigge/tigge_kwbc_sfc_mn2t6.grib  \
-		data/tigge/tigge_kwbc_sfc_msl.grib  \
-		data/tigge/tigge_kwbc_sfc_mx2t6.grib  \
-		data/tigge/tigge_kwbc_sfc_sd.grib  \
-		data/tigge/tigge_kwbc_sfc_sf.grib  \
-		data/tigge/tigge_kwbc_sfc_skt.grib  \
-		data/tigge/tigge_kwbc_sfc_slhf.grib  \
-		data/tigge/tigge_kwbc_sfc_sm.grib  \
-		data/tigge/tigge_kwbc_sfc_sp.grib  \
-		data/tigge/tigge_kwbc_sfc_sshf.grib  \
-		data/tigge/tigge_kwbc_sfc_ssr.grib  \
-		data/tigge/tigge_kwbc_sfc_st.grib  \
-		data/tigge/tigge_kwbc_sfc_str.grib  \
-		data/tigge/tigge_kwbc_sfc_tcw.grib  \
-		data/tigge/tigge_kwbc_sfc_tp.grib  \
-		data/tigge/tigge_kwbc_sfc_ttr.grib  \
-		data/tigge/tigge_lfpw_pl_gh.grib  \
-		data/tigge/tigge_lfpw_pl_q.grib  \
-		data/tigge/tigge_lfpw_pl_t.grib  \
-		data/tigge/tigge_lfpw_pl_u.grib  \
-		data/tigge/tigge_lfpw_pl_v.grib  \
-		data/tigge/tigge_lfpw_pv_pt.grib  \
-		data/tigge/tigge_lfpw_pv_u.grib  \
-		data/tigge/tigge_lfpw_pv_v.grib  \
-		data/tigge/tigge_lfpw_sfc_10u.grib  \
-		data/tigge/tigge_lfpw_sfc_10v.grib  \
-		data/tigge/tigge_lfpw_sfc_2d.grib  \
-		data/tigge/tigge_lfpw_sfc_2t.grib  \
-		data/tigge/tigge_lfpw_sfc_cap.grib  \
-		data/tigge/tigge_lfpw_sfc_cape.grib  \
-		data/tigge/tigge_lfpw_sfc_mn2t6.grib  \
-		data/tigge/tigge_lfpw_sfc_msl.grib  \
-		data/tigge/tigge_lfpw_sfc_mx2t6.grib  \
-		data/tigge/tigge_lfpw_sfc_sd.grib  \
-		data/tigge/tigge_lfpw_sfc_sf.grib  \
-		data/tigge/tigge_lfpw_sfc_skt.grib  \
-		data/tigge/tigge_lfpw_sfc_slhf.grib  \
-		data/tigge/tigge_lfpw_sfc_sp.grib  \
-		data/tigge/tigge_lfpw_sfc_sshf.grib  \
-		data/tigge/tigge_lfpw_sfc_ssr.grib  \
-		data/tigge/tigge_lfpw_sfc_st.grib  \
-		data/tigge/tigge_lfpw_sfc_str.grib  \
-		data/tigge/tigge_lfpw_sfc_tcc.grib  \
-		data/tigge/tigge_lfpw_sfc_tcw.grib  \
-		data/tigge/tigge_lfpw_sfc_tp.grib  \
-		data/tigge/tigge_lfpw_sfc_ttr.grib  \
-		data/tigge/tigge_rjtd_pl_gh.grib  \
-		data/tigge/tigge_rjtd_pl_q.grib  \
-		data/tigge/tigge_rjtd_pl_t.grib  \
-		data/tigge/tigge_rjtd_pl_u.grib  \
-		data/tigge/tigge_rjtd_pl_v.grib  \
-		data/tigge/tigge_rjtd_sfc_10u.grib  \
-		data/tigge/tigge_rjtd_sfc_10v.grib  \
-		data/tigge/tigge_rjtd_sfc_2d.grib  \
-		data/tigge/tigge_rjtd_sfc_2t.grib  \
-		data/tigge/tigge_rjtd_sfc_mn2t6.grib  \
-		data/tigge/tigge_rjtd_sfc_msl.grib  \
-		data/tigge/tigge_rjtd_sfc_mx2t6.grib  \
-		data/tigge/tigge_rjtd_sfc_sd.grib  \
-		data/tigge/tigge_rjtd_sfc_skt.grib  \
-		data/tigge/tigge_rjtd_sfc_slhf.grib  \
-		data/tigge/tigge_rjtd_sfc_sm.grib  \
-		data/tigge/tigge_rjtd_sfc_sp.grib  \
-		data/tigge/tigge_rjtd_sfc_sshf.grib  \
-		data/tigge/tigge_rjtd_sfc_ssr.grib  \
-		data/tigge/tigge_rjtd_sfc_str.grib  \
-		data/tigge/tigge_rjtd_sfc_tcc.grib  \
-		data/tigge/tigge_rjtd_sfc_tcw.grib  \
-		data/tigge/tigge_rjtd_sfc_tp.grib  \
-		data/tigge/tigge_rjtd_sfc_ttr.grib  \
-		data/tigge/tigge_rksl_pl_gh.grib  \
-		data/tigge/tigge_rksl_pl_q.grib  \
-		data/tigge/tigge_rksl_pl_t.grib  \
-		data/tigge/tigge_rksl_pl_u.grib  \
-		data/tigge/tigge_rksl_pl_v.grib  \
-		data/tigge/tigge_rksl_sfc_10u.grib  \
-		data/tigge/tigge_rksl_sfc_10v.grib  \
-		data/tigge/tigge_rksl_sfc_2t.grib  \
-		data/tigge/tigge_rksl_sfc_msl.grib  \
-		data/tigge/tigge_rksl_sfc_sp.grib  \
-		data/tigge/tigge_sbsj_pl_gh.grib  \
-		data/tigge/tigge_sbsj_pl_q.grib  \
-		data/tigge/tigge_sbsj_pl_t.grib  \
-		data/tigge/tigge_sbsj_pl_u.grib  \
-		data/tigge/tigge_sbsj_pl_v.grib  \
-		data/tigge/tigge_sbsj_sfc_10u.grib  \
-		data/tigge/tigge_sbsj_sfc_10v.grib  \
-		data/tigge/tigge_sbsj_sfc_2t.grib  \
-		data/tigge/tigge_sbsj_sfc_msl.grib  \
-		data/tigge/tigge_sbsj_sfc_sf.grib  \
-		data/tigge/tigge_sbsj_sfc_skt.grib  \
-		data/tigge/tigge_sbsj_sfc_sp.grib  \
-		data/tigge/tigge_sbsj_sfc_ssr.grib  \
-		data/tigge/tigge_sbsj_sfc_st.grib  \
-		data/tigge/tigge_sbsj_sfc_tcc.grib  \
-		data/tigge/tigge_sbsj_sfc_tcw.grib  \
-		data/tigge/tigge_sbsj_sfc_tp.grib \
-		data/tigge/tiggelam_cnmc_sfc.grib \
-		data/constant_width_bitmap.grib \
-		data/constant_width_boust_bitmap.grib \
-		data/gen.grib \
-		data/gen_bitmap.grib \
-		data/gen_ext.grib \
-		data/gen_ext_bitmap.grib \
-		data/gen_ext_boust.grib \
-		data/gen_ext_boust_bitmap.grib \
-		data/gen_ext_spd_2.grib \
-		data/gen_ext_spd_2_bitmap.grib \
-		data/gen_ext_spd_2_boust_bitmap.grib \
-		data/gen_ext_spd_3.grib \
-		data/gen_ext_spd_3_boust_bitmap.grib \
-		data/row.grib \
-		data/simple.grib \
+		data/tigge/tigge_data_files.txt \
 		data/read_any.ok \
-		data/simple_bitmap.grib \
-		data/second_ord_rbr.grib1 \
 		data/download.sh \
 		perf/jmeter.awk \
 		perf/time.sh \
diff --git a/Makefile.in b/Makefile.in
index 327912e..30f2f6a 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -441,34 +441,20 @@ EXTRA_DIST = README AUTHORS NOTICE LICENSE ChangeLog version.sh html \
 		src/dummy.am \
 		definitions/dummy.am \
 		definitions/make_makefile_am.pl \
+		data/grib_data_files.txt \
 		data/ls.log \
 		data/multi.ok \
-		data/in_copy.grib \
-		data/bad.grib \
 		data/local.good.log \
 		data/typeOfProcessedData.ok \
-		data/gts.grib \
-		data/v.grib2 \
-		data/satellite.grib \
-		data/pad.grib \
-		data/missing_field.grib1 \
 		data/multi_step.txt \
-		data/multi_created.grib2 \
-		data/multi.grib2 \
-		data/sample.grib2 \
 		data/bitmap.diff \
 		data/no_bitmap.diff \
 		data/ieee_test.good \
-		data/index.grib \
 		data/index.ok \
 		data/index_f90.ok \
-		data/grid_ieee.grib \
 		data/spherical_model_level.grib1_32.good \
 		data/spherical_model_level.grib1.good \
-		data/budg \
-		data/tp_ecmwf.grib \
 		data/statistics.out.good \
-		data/jpeg.grib2 \
 		data/scan_x_regular_gg_5_7_good.dump \
 		data/scan_x_regular_ll_5_4_good.dump \
 		data/scan_x_regular_ll_5_7_good.dump \
@@ -486,299 +472,15 @@ EXTRA_DIST = README AUTHORS NOTICE LICENSE ChangeLog version.sh html \
 		data/scan_y_rotated_ll_5_7_good.dump \
 		data/scan_y_rotated_ll_8_4_good.dump \
 		data/scan_y_rotated_ll_8_7_good.dump \
-		data/tigge_pf_ecmwf.grib2 \
 		data/tigge_pf_ecmwf.grib2.ref \
-		data/regular_gaussian_pressure_level.grib1 \
-		data/regular_gaussian_model_level.grib1 \
-		data/regular_gaussian_surface.grib1 \
-		data/regular_latlon_surface.grib1 \
-		data/reduced_gaussian_model_level.grib1 \
-		data/reduced_gaussian_pressure_level.grib1 \
-		data/reduced_gaussian_lsm.grib1 \
-		data/reduced_gaussian_surface_jpeg.grib2 \
-		data/timeRangeIndicator_0.grib \
-		data/timeRangeIndicator_10.grib  \
-		data/timeRangeIndicator_5.grib \
-		data/reduced_gaussian_model_level.grib1 \
-		data/reduced_gaussian_surface.grib1 \
-		data/reduced_latlon_surface.grib1 \
-		data/spherical_model_level.grib1 \
-		data/spherical_pressure_level.grib1 \
-		data/missing.grib2 \
-		data/gfs.c255.grib2 \
-		data/constant_field.grib1 \
-		data/reduced_gaussian_pressure_level_constant.grib1 \
-		data/reduced_latlon_surface_constant.grib1 \
-		data/regular_gaussian_pressure_level_constant.grib1 \
-		data/regular_latlon_surface_constant.grib1 \
-		data/reduced_gaussian_sub_area.grib1 \
-		data/constant_field.grib1 \
 		data/60_model_levels \
 		data/list_points \
 		data/step.log \
 		data/step_grib1.filter \
 		data/step_grib1.log \
 		data/julian.out.good \
-		data/test_uuid.grib2 \
-		data/tigge/tigge_ammc_pl_gh.grib  \
-		data/tigge/tigge_ammc_pl_q.grib  \
-		data/tigge/tigge_ammc_pl_t.grib  \
-		data/tigge/tigge_ammc_pl_u.grib  \
-		data/tigge/tigge_ammc_pl_v.grib  \
-		data/tigge/tigge_ammc_sfc_10u.grib  \
-		data/tigge/tigge_ammc_sfc_10v.grib  \
-		data/tigge/tigge_ammc_sfc_2t.grib  \
-		data/tigge/tigge_ammc_sfc_lsm.grib  \
-		data/tigge/tigge_ammc_sfc_mn2t6.grib  \
-		data/tigge/tigge_ammc_sfc_msl.grib  \
-		data/tigge/tigge_ammc_sfc_mx2t6.grib  \
-		data/tigge/tigge_ammc_sfc_orog.grib  \
-		data/tigge/tigge_ammc_sfc_sf.grib  \
-		data/tigge/tigge_ammc_sfc_sp.grib  \
-		data/tigge/tigge_ammc_sfc_st.grib  \
-		data/tigge/tigge_ammc_sfc_tcc.grib  \
-		data/tigge/tigge_ammc_sfc_tcw.grib  \
-		data/tigge/tigge_ammc_sfc_tp.grib  \
-		data/tigge/tigge_babj_pl_gh.grib  \
-		data/tigge/tigge_babj_pl_q.grib  \
-		data/tigge/tigge_babj_pl_t.grib  \
-		data/tigge/tigge_babj_pl_u.grib  \
-		data/tigge/tigge_babj_pl_v.grib  \
-		data/tigge/tigge_babj_sfc_10u.grib  \
-		data/tigge/tigge_babj_sfc_10v.grib  \
-		data/tigge/tigge_babj_sfc_2d.grib  \
-		data/tigge/tigge_babj_sfc_2t.grib  \
-		data/tigge/tigge_babj_sfc_lsm.grib  \
-		data/tigge/tigge_babj_sfc_mn2t6.grib  \
-		data/tigge/tigge_babj_sfc_msl.grib  \
-		data/tigge/tigge_babj_sfc_mx2t6.grib  \
-		data/tigge/tigge_babj_sfc_orog.grib  \
-		data/tigge/tigge_babj_sfc_sd.grib  \
-		data/tigge/tigge_babj_sfc_sf.grib  \
-		data/tigge/tigge_babj_sfc_slhf.grib  \
-		data/tigge/tigge_babj_sfc_sp.grib  \
-		data/tigge/tigge_babj_sfc_sshf.grib  \
-		data/tigge/tigge_babj_sfc_ssr.grib  \
-		data/tigge/tigge_babj_sfc_str.grib  \
-		data/tigge/tigge_babj_sfc_tcc.grib  \
-		data/tigge/tigge_babj_sfc_tcw.grib  \
-		data/tigge/tigge_babj_sfc_tp.grib  \
-		data/tigge/tigge_cwao_pl_gh.grib  \
-		data/tigge/tigge_cwao_pl_q.grib  \
-		data/tigge/tigge_cwao_pl_t.grib  \
-		data/tigge/tigge_cwao_pl_u.grib  \
-		data/tigge/tigge_cwao_pl_v.grib  \
-		data/tigge/tigge_cwao_sfc_10u.grib  \
-		data/tigge/tigge_cwao_sfc_10v.grib  \
-		data/tigge/tigge_cwao_sfc_2d.grib  \
-		data/tigge/tigge_cwao_sfc_2t.grib  \
-		data/tigge/tigge_cwao_sfc_mn2t6.grib  \
-		data/tigge/tigge_cwao_sfc_msl.grib  \
-		data/tigge/tigge_cwao_sfc_mx2t6.grib  \
-		data/tigge/tigge_cwao_sfc_orog.grib  \
-		data/tigge/tigge_cwao_sfc_sd.grib  \
-		data/tigge/tigge_cwao_sfc_skt.grib  \
-		data/tigge/tigge_cwao_sfc_sp.grib  \
-		data/tigge/tigge_cwao_sfc_st.grib  \
-		data/tigge/tigge_cwao_sfc_tcc.grib  \
-		data/tigge/tigge_cwao_sfc_tcw.grib  \
-		data/tigge/tigge_cwao_sfc_tp.grib  \
-		data/tigge/tigge_ecmf_pl_gh.grib  \
-		data/tigge/tigge_ecmf_pl_q.grib  \
-		data/tigge/tigge_ecmf_pl_t.grib  \
-		data/tigge/tigge_ecmf_pl_u.grib  \
-		data/tigge/tigge_ecmf_pl_v.grib  \
-		data/tigge/tigge_ecmf_pt_pv.grib  \
-		data/tigge/tigge_ecmf_pv_pt.grib  \
-		data/tigge/tigge_ecmf_pv_u.grib  \
-		data/tigge/tigge_ecmf_pv_v.grib  \
-		data/tigge/tigge_ecmf_sfc_10u.grib  \
-		data/tigge/tigge_ecmf_sfc_10v.grib  \
-		data/tigge/tigge_ecmf_sfc_2d.grib  \
-		data/tigge/tigge_ecmf_sfc_2t.grib  \
-		data/tigge/tigge_ecmf_sfc_cap.grib  \
-		data/tigge/tigge_ecmf_sfc_cape.grib  \
-		data/tigge/tigge_ecmf_sfc_mn2t6.grib  \
-		data/tigge/tigge_ecmf_sfc_msl.grib  \
-		data/tigge/tigge_ecmf_sfc_mx2t6.grib  \
-		data/tigge/tigge_ecmf_sfc_sd.grib  \
-		data/tigge/tigge_ecmf_sfc_sf.grib  \
-		data/tigge/tigge_ecmf_sfc_skt.grib  \
-		data/tigge/tigge_ecmf_sfc_slhf.grib  \
-		data/tigge/tigge_ecmf_sfc_sm.grib  \
-		data/tigge/tigge_ecmf_sfc_sp.grib  \
-		data/tigge/tigge_ecmf_sfc_sshf.grib  \
-		data/tigge/tigge_ecmf_sfc_ssr.grib  \
-		data/tigge/tigge_ecmf_sfc_st.grib  \
-		data/tigge/tigge_ecmf_sfc_str.grib  \
-		data/tigge/tigge_ecmf_sfc_sund.grib  \
-		data/tigge/tigge_ecmf_sfc_tcc.grib  \
-		data/tigge/tigge_ecmf_sfc_tcw.grib  \
-		data/tigge/tigge_ecmf_sfc_tp.grib  \
-		data/tigge/tigge_ecmf_sfc_ttr.grib  \
-		data/tigge/tigge_egrr_pl_gh.grib  \
-		data/tigge/tigge_egrr_pl_q.grib  \
-		data/tigge/tigge_egrr_pl_t.grib  \
-		data/tigge/tigge_egrr_pl_u.grib  \
-		data/tigge/tigge_egrr_pl_v.grib  \
-		data/tigge/tigge_egrr_pt_pv.grib  \
-		data/tigge/tigge_egrr_pv_pt.grib  \
-		data/tigge/tigge_egrr_pv_u.grib  \
-		data/tigge/tigge_egrr_pv_v.grib  \
-		data/tigge/tigge_egrr_sfc_10u.grib  \
-		data/tigge/tigge_egrr_sfc_10v.grib  \
-		data/tigge/tigge_egrr_sfc_2d.grib  \
-		data/tigge/tigge_egrr_sfc_2t.grib  \
-		data/tigge/tigge_egrr_sfc_mn2t6.grib  \
-		data/tigge/tigge_egrr_sfc_msl.grib  \
-		data/tigge/tigge_egrr_sfc_mx2t6.grib  \
-		data/tigge/tigge_egrr_sfc_sd.grib  \
-		data/tigge/tigge_egrr_sfc_sf.grib  \
-		data/tigge/tigge_egrr_sfc_skt.grib  \
-		data/tigge/tigge_egrr_sfc_slhf.grib  \
-		data/tigge/tigge_egrr_sfc_sm.grib  \
-		data/tigge/tigge_egrr_sfc_sp.grib  \
-		data/tigge/tigge_egrr_sfc_sshf.grib  \
-		data/tigge/tigge_egrr_sfc_ssr.grib  \
-		data/tigge/tigge_egrr_sfc_st.grib  \
-		data/tigge/tigge_egrr_sfc_str.grib  \
-		data/tigge/tigge_egrr_sfc_tcc.grib  \
-		data/tigge/tigge_egrr_sfc_tcw.grib  \
-		data/tigge/tigge_egrr_sfc_tp.grib  \
-		data/tigge/tigge_egrr_sfc_ttr.grib  \
-		data/tigge/tigge_kwbc_pl_gh.grib  \
-		data/tigge/tigge_kwbc_pl_q.grib  \
-		data/tigge/tigge_kwbc_pl_t.grib  \
-		data/tigge/tigge_kwbc_pl_u.grib  \
-		data/tigge/tigge_kwbc_pl_v.grib  \
-		data/tigge/tigge_kwbc_pt_pv.grib  \
-		data/tigge/tigge_kwbc_pv_pt.grib  \
-		data/tigge/tigge_kwbc_pv_u.grib  \
-		data/tigge/tigge_kwbc_pv_v.grib  \
-		data/tigge/tigge_kwbc_sfc_10u.grib  \
-		data/tigge/tigge_kwbc_sfc_10v.grib  \
-		data/tigge/tigge_kwbc_sfc_2d.grib  \
-		data/tigge/tigge_kwbc_sfc_2t.grib  \
-		data/tigge/tigge_kwbc_sfc_cap.grib  \
-		data/tigge/tigge_kwbc_sfc_cape.grib  \
-		data/tigge/tigge_kwbc_sfc_ci.grib  \
-		data/tigge/tigge_kwbc_sfc_lsm.grib  \
-		data/tigge/tigge_kwbc_sfc_mn2t6.grib  \
-		data/tigge/tigge_kwbc_sfc_msl.grib  \
-		data/tigge/tigge_kwbc_sfc_mx2t6.grib  \
-		data/tigge/tigge_kwbc_sfc_sd.grib  \
-		data/tigge/tigge_kwbc_sfc_sf.grib  \
-		data/tigge/tigge_kwbc_sfc_skt.grib  \
-		data/tigge/tigge_kwbc_sfc_slhf.grib  \
-		data/tigge/tigge_kwbc_sfc_sm.grib  \
-		data/tigge/tigge_kwbc_sfc_sp.grib  \
-		data/tigge/tigge_kwbc_sfc_sshf.grib  \
-		data/tigge/tigge_kwbc_sfc_ssr.grib  \
-		data/tigge/tigge_kwbc_sfc_st.grib  \
-		data/tigge/tigge_kwbc_sfc_str.grib  \
-		data/tigge/tigge_kwbc_sfc_tcw.grib  \
-		data/tigge/tigge_kwbc_sfc_tp.grib  \
-		data/tigge/tigge_kwbc_sfc_ttr.grib  \
-		data/tigge/tigge_lfpw_pl_gh.grib  \
-		data/tigge/tigge_lfpw_pl_q.grib  \
-		data/tigge/tigge_lfpw_pl_t.grib  \
-		data/tigge/tigge_lfpw_pl_u.grib  \
-		data/tigge/tigge_lfpw_pl_v.grib  \
-		data/tigge/tigge_lfpw_pv_pt.grib  \
-		data/tigge/tigge_lfpw_pv_u.grib  \
-		data/tigge/tigge_lfpw_pv_v.grib  \
-		data/tigge/tigge_lfpw_sfc_10u.grib  \
-		data/tigge/tigge_lfpw_sfc_10v.grib  \
-		data/tigge/tigge_lfpw_sfc_2d.grib  \
-		data/tigge/tigge_lfpw_sfc_2t.grib  \
-		data/tigge/tigge_lfpw_sfc_cap.grib  \
-		data/tigge/tigge_lfpw_sfc_cape.grib  \
-		data/tigge/tigge_lfpw_sfc_mn2t6.grib  \
-		data/tigge/tigge_lfpw_sfc_msl.grib  \
-		data/tigge/tigge_lfpw_sfc_mx2t6.grib  \
-		data/tigge/tigge_lfpw_sfc_sd.grib  \
-		data/tigge/tigge_lfpw_sfc_sf.grib  \
-		data/tigge/tigge_lfpw_sfc_skt.grib  \
-		data/tigge/tigge_lfpw_sfc_slhf.grib  \
-		data/tigge/tigge_lfpw_sfc_sp.grib  \
-		data/tigge/tigge_lfpw_sfc_sshf.grib  \
-		data/tigge/tigge_lfpw_sfc_ssr.grib  \
-		data/tigge/tigge_lfpw_sfc_st.grib  \
-		data/tigge/tigge_lfpw_sfc_str.grib  \
-		data/tigge/tigge_lfpw_sfc_tcc.grib  \
-		data/tigge/tigge_lfpw_sfc_tcw.grib  \
-		data/tigge/tigge_lfpw_sfc_tp.grib  \
-		data/tigge/tigge_lfpw_sfc_ttr.grib  \
-		data/tigge/tigge_rjtd_pl_gh.grib  \
-		data/tigge/tigge_rjtd_pl_q.grib  \
-		data/tigge/tigge_rjtd_pl_t.grib  \
-		data/tigge/tigge_rjtd_pl_u.grib  \
-		data/tigge/tigge_rjtd_pl_v.grib  \
-		data/tigge/tigge_rjtd_sfc_10u.grib  \
-		data/tigge/tigge_rjtd_sfc_10v.grib  \
-		data/tigge/tigge_rjtd_sfc_2d.grib  \
-		data/tigge/tigge_rjtd_sfc_2t.grib  \
-		data/tigge/tigge_rjtd_sfc_mn2t6.grib  \
-		data/tigge/tigge_rjtd_sfc_msl.grib  \
-		data/tigge/tigge_rjtd_sfc_mx2t6.grib  \
-		data/tigge/tigge_rjtd_sfc_sd.grib  \
-		data/tigge/tigge_rjtd_sfc_skt.grib  \
-		data/tigge/tigge_rjtd_sfc_slhf.grib  \
-		data/tigge/tigge_rjtd_sfc_sm.grib  \
-		data/tigge/tigge_rjtd_sfc_sp.grib  \
-		data/tigge/tigge_rjtd_sfc_sshf.grib  \
-		data/tigge/tigge_rjtd_sfc_ssr.grib  \
-		data/tigge/tigge_rjtd_sfc_str.grib  \
-		data/tigge/tigge_rjtd_sfc_tcc.grib  \
-		data/tigge/tigge_rjtd_sfc_tcw.grib  \
-		data/tigge/tigge_rjtd_sfc_tp.grib  \
-		data/tigge/tigge_rjtd_sfc_ttr.grib  \
-		data/tigge/tigge_rksl_pl_gh.grib  \
-		data/tigge/tigge_rksl_pl_q.grib  \
-		data/tigge/tigge_rksl_pl_t.grib  \
-		data/tigge/tigge_rksl_pl_u.grib  \
-		data/tigge/tigge_rksl_pl_v.grib  \
-		data/tigge/tigge_rksl_sfc_10u.grib  \
-		data/tigge/tigge_rksl_sfc_10v.grib  \
-		data/tigge/tigge_rksl_sfc_2t.grib  \
-		data/tigge/tigge_rksl_sfc_msl.grib  \
-		data/tigge/tigge_rksl_sfc_sp.grib  \
-		data/tigge/tigge_sbsj_pl_gh.grib  \
-		data/tigge/tigge_sbsj_pl_q.grib  \
-		data/tigge/tigge_sbsj_pl_t.grib  \
-		data/tigge/tigge_sbsj_pl_u.grib  \
-		data/tigge/tigge_sbsj_pl_v.grib  \
-		data/tigge/tigge_sbsj_sfc_10u.grib  \
-		data/tigge/tigge_sbsj_sfc_10v.grib  \
-		data/tigge/tigge_sbsj_sfc_2t.grib  \
-		data/tigge/tigge_sbsj_sfc_msl.grib  \
-		data/tigge/tigge_sbsj_sfc_sf.grib  \
-		data/tigge/tigge_sbsj_sfc_skt.grib  \
-		data/tigge/tigge_sbsj_sfc_sp.grib  \
-		data/tigge/tigge_sbsj_sfc_ssr.grib  \
-		data/tigge/tigge_sbsj_sfc_st.grib  \
-		data/tigge/tigge_sbsj_sfc_tcc.grib  \
-		data/tigge/tigge_sbsj_sfc_tcw.grib  \
-		data/tigge/tigge_sbsj_sfc_tp.grib \
-		data/tigge/tiggelam_cnmc_sfc.grib \
-		data/constant_width_bitmap.grib \
-		data/constant_width_boust_bitmap.grib \
-		data/gen.grib \
-		data/gen_bitmap.grib \
-		data/gen_ext.grib \
-		data/gen_ext_bitmap.grib \
-		data/gen_ext_boust.grib \
-		data/gen_ext_boust_bitmap.grib \
-		data/gen_ext_spd_2.grib \
-		data/gen_ext_spd_2_bitmap.grib \
-		data/gen_ext_spd_2_boust_bitmap.grib \
-		data/gen_ext_spd_3.grib \
-		data/gen_ext_spd_3_boust_bitmap.grib \
-		data/row.grib \
-		data/simple.grib \
+		data/tigge/tigge_data_files.txt \
 		data/read_any.ok \
-		data/simple_bitmap.grib \
-		data/second_ord_rbr.grib1 \
 		data/download.sh \
 		perf/jmeter.awk \
 		perf/time.sh \
diff --git a/NOTICE b/NOTICE
index 38e8639..ca9d8e6 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,5 +1,5 @@
 ECMWF ecCodes
-Copyright 2005-2015 ECMWF.
+Copyright 2005-2016 ECMWF.
 
 This product includes software developed at ECMWF (http://www.ecmwf.int).
 
@@ -8,6 +8,9 @@ Parts of the definitions provided by WMO (http://www.wmo.int/pages/index_en.html
 Microsoft Visual Studio support provided with the help of
 Finnish Meteorological Institute (FMI).
 
+Decoding double array optimisations provided by
+Norwegian Meteorological Institute.
+
 Adaptive Entropy Coding (CCSDS) provided by
 The Max-Planck-Institute for Meteorology and Deutsches Klimarechenzentrum GmbH.
 
diff --git a/README b/README
index 961d7d5..c2b554e 100644
--- a/README
+++ b/README
@@ -1,38 +1,53 @@
-ecCodes is the ECMWF encoding/decoding software for GRIB and BUFR.
+ecCodes is an application program interface developed by ECMWF for
+decoding and encoding messages in the following formats:
 
-Documentation can be found here:
-https://software.ecmwf.int/wiki/display/ECC/ecCodes+Home
+    * WMO FM-92 GRIB edition 1 and edition 2
+    * WMO FM-94 BUFR edition 3 and edition 4
+    * WMO GTS abbreviated header (only decoding in this release).
+
+A useful set of command line tools provide quick access to the messages.
+C, Fortran 90 and Python interfaces provide access to the main ecCodes functionality.
+
+ecCodes is an evolution of GRIB API.
+It is designed to provide the user with a simple set of functions to access data from
+several formats with a key/value approach.
 
-INSTALLATION 
 
-   1. Download eccodes from https://software.ecmwf.int/wiki/display/ECC/Releases.
-   2. Unpack distribution:
+Documentation can be found here:
+    https://software.ecmwf.int/wiki/display/ECC/ecCodes+Home
+
+INSTALLATION
+------------
 
-        > tar xzf eccodes-X.tar.gz
+1. Download ecCodes from https://software.ecmwf.int/wiki/display/ECC/Releases
 
-   3. Create a separate directory where to build eccodes
+2. Unpack distribution:
+   > tar -xzf eccodes-x.y.z-Source.tar.gz
 
-        > mkdir build ; cd build
+3. Create a separate directory where to build ecCodes:
+   > mkdir build
+   > cd build
 
-   4. Run cmake
+4. Run cmake pointing to the source and specify the installation location:
+   > cmake  ../eccodes-x.y.z-Source -DCMAKE_INSTALL_PREFIX=/path/to/where/you/install/eccodes
+   
+   It is recommended that you install into a clean directory
 
-        > cmake ../eccodes-X -DCMAKE_INSTALL_PREFIX=/path/to/where/you/install/eccodes
+5. Compile, test and install:
+   > make
+   > ctest
+   > make install
 
-   5. make, check and install
 
-        > make
-        ...
-        > make check
-        ...
-        > make install
-        ...
+For more details, please see:
+https://software.ecmwf.int/wiki/display/ECC/ecCodes+installation
 
-For further details, see: https://software.ecmwf.int/wiki/display/ECC/ecCodes+installation
 
 
 COPYRIGHT AND LICENSE
+----------------------
 
-Copyright 2005-2015 ECMWF.
+Copyright 2005-2016 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.
diff --git a/VERSION.cmake b/VERSION.cmake
index 7aa2994..5c3ffc2 100644
--- a/VERSION.cmake
+++ b/VERSION.cmake
@@ -1,2 +1,2 @@
-set( ${PROJECT_NAME}_VERSION_STR  "0.10.0" )
+set( ${PROJECT_NAME}_VERSION_STR  "0.13.0" )
 
diff --git a/acinclude.m4 b/acinclude.m4
index 0be5548..54afd83 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -125,7 +125,7 @@ AC_DEFUN([AC_GRIB_PTHREADS],
        void* increment(void* arg);
        
        int main(int argc,char** argv){
-         int i;
+         long i;
          void* status=0;
          pthread_attr_t attr;
          pthread_attr_init(&attr);
@@ -141,7 +141,7 @@ AC_DEFUN([AC_GRIB_PTHREADS],
        }
        
        void* increment(void* arg) {
-         int i=(int)arg;
+         int i=(long)arg;
          pthread_once(&once,&init);
          pthread_mutex_lock(&mutex);
          count+=i;
@@ -197,7 +197,7 @@ AC_DEFUN([AC_GRIB_LINUX_PTHREADS],
        void* increment(void* arg);
        
        int main(int argc,char** argv){
-         int i;
+         long i;
          void* status=0;
          pthread_attr_t attr;
          pthread_attr_init(&attr);
@@ -213,7 +213,7 @@ AC_DEFUN([AC_GRIB_LINUX_PTHREADS],
        }
        
        void* increment(void* arg) {
-         int i=(int)arg;
+         int i=(long)arg;
          pthread_once(&once,&init);
          pthread_mutex_lock(&mutex);
          count+=i;
diff --git a/autom4te.cache/output.0 b/autom4te.cache/output.0
deleted file mode 100644
index e5f3cd5..0000000
--- a/autom4te.cache/output.0
+++ /dev/null
@@ -1,24511 +0,0 @@
-@%:@! /bin/sh
-@%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.69 for eccodes  .
-@%:@
-@%:@ Report bugs to <Software.Support at ecmwf.int>.
-@%:@ 
-@%:@ 
-@%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
-@%:@ 
-@%:@ 
-@%:@ This configure script is free software; the Free Software Foundation
-@%:@ gives unlimited permission to copy, distribute and modify it.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in @%:@(
-  *posix*) :
-    set -o posix ;; @%:@(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in @%:@(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in @%:@((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-# Use a proper internal environment variable to ensure we don't fall
-  # into an infinite loop, continuously re-executing ourselves.
-  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
-    _as_can_reexec=no; export _as_can_reexec;
-    # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in @%:@ ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
-  fi
-  # We don't want this to propagate to other subprocesses.
-          { _as_can_reexec=; unset _as_can_reexec;}
-if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in @%:@(
-  *posix*) :
-    set -o posix ;; @%:@(
-  *) :
-     ;;
-esac
-fi
-"
-  as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-  
-else
-  exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1
-test -x / || exit 1"
-  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
-  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
-  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
-  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-
-  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
-    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
-    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
-    PATH=/empty FPATH=/empty; export PATH FPATH
-    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
-      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1"
-  if (eval "$as_required") 2>/dev/null; then :
-  as_have_required=yes
-else
-  as_have_required=no
-fi
-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-  
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  as_found=:
-  case $as_dir in @%:@(
-	 /*)
-	   for as_base in sh bash ksh sh5; do
-	     # Try only shells that exist, to save several forks.
-	     as_shell=$as_dir/$as_base
-	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  CONFIG_SHELL=$as_shell as_have_required=yes
-		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  break 2
-fi
-fi
-	   done;;
-       esac
-  as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
-	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
-  CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
-      if test "x$CONFIG_SHELL" != x; then :
-  export CONFIG_SHELL
-             # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in @%:@ ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-exit 255
-fi
-
-    if test x$as_have_required = xno; then :
-  $as_echo "$0: This script requires a shell more modern than all"
-  $as_echo "$0: the shells that I found on your system."
-  if test x${ZSH_VERSION+set} = xset ; then
-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
-  else
-    $as_echo "$0: Please tell bug-autoconf at gnu.org and
-$0: Software.Support at ecmwf.int about your system, including
-$0: any error possibly output before this message. Then
-$0: install a modern shell, or manually run the script
-$0: under such a shell if you do have one."
-  fi
-  exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-@%:@ as_fn_unset VAR
-@%:@ ---------------
-@%:@ Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-@%:@ as_fn_set_status STATUS
-@%:@ -----------------------
-@%:@ Set @S|@? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} @%:@ as_fn_set_status
-
-@%:@ as_fn_exit STATUS
-@%:@ -----------------
-@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} @%:@ as_fn_exit
-
-@%:@ as_fn_mkdir_p
-@%:@ -------------
-@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} @%:@ as_fn_mkdir_p
-
-@%:@ as_fn_executable_p FILE
-@%:@ -----------------------
-@%:@ Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} @%:@ as_fn_executable_p
-@%:@ as_fn_append VAR VALUE
-@%:@ ----------------------
-@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
-@%:@ advantage of any shell optimizations that allow amortized linear growth over
-@%:@ repeated appends, instead of the typical quadratic growth present in naive
-@%:@ implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-@%:@ as_fn_arith ARG...
-@%:@ ------------------
-@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
-@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
-@%:@ must be portable across @S|@(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
-@%:@ ----------------------------------------
-@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-@%:@ script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} @%:@ as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
-  as_lineno_1=$LINENO as_lineno_1a=$LINENO
-  as_lineno_2=$LINENO as_lineno_2a=$LINENO
-  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
-  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
-  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
-  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
-  # already done that, so ensure we don't try to do so again and fall
-  # in an infinite loop.  This has already happened in practice.
-  _as_can_reexec=no; export _as_can_reexec
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in @%:@(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIB@&t at OBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME='eccodes'
-PACKAGE_TARNAME='eccodes'
-PACKAGE_VERSION=' '
-PACKAGE_STRING='eccodes  '
-PACKAGE_BUGREPORT='Software.Support at ecmwf.int'
-PACKAGE_URL=''
-
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-#  include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-ac_unique_file="src/grib_api.h"
-ac_subst_vars='am__EXEEXT_FALSE
-am__EXEEXT_TRUE
-LTLIBOBJS
-LIB@&t at OBJS
-LINUX_DISTRIBUTION_VERSION
-LINUX_DISTRIBUTION_NAME
-WERROR
-WARN_PEDANTIC
-RM
-CREATING_SHARED_LIBS_FALSE
-CREATING_SHARED_LIBS_TRUE
-WITH_FORTRAN_FALSE
-WITH_FORTRAN_TRUE
-WITH_PYTHON_FALSE
-WITH_PYTHON_TRUE
-PYTHON_DATA_HANDLER
-NUMPY_INCLUDE
-PYTHON_CHECK
-PYTHON_CONFIG
-PYTHON_LIBS
-PYTHON_CFLAGS
-PYTHON_LDFLAGS
-PYTHON_INCLUDES
-pkgpyexecdir
-pyexecdir
-pkgpythondir
-pythondir
-PYTHON_PLATFORM
-PYTHON_EXEC_PREFIX
-PYTHON_PREFIX
-PYTHON_VERSION
-PYTHON
-WITH_PERL_FALSE
-WITH_PERL_TRUE
-GRIB_API_INC
-GRIB_API_LIB
-PERL_MAKE_OPTIONS
-PERL
-PERL_INSTALL_OPTIONS
-LIB_PNG
-CCSDS_TEST
-AEC_DIR
-LIB_AEC
-JPEG_TEST
-LIB_JASPER
-LIB_OPENJPEG
-OPENJPEG_DIR
-JASPER_DIR
-NETCDF_LDFLAGS
-EMOS_LIB
-IFS_SAMPLES_DIR
-F90_MODULE_FLAG
-F90_CHECK
-FORTRAN_MOD
-DEBUG_IN_MOD_FALSE
-DEBUG_IN_MOD_TRUE
-ECCODES_DEFINITION_PATH
-ECCODES_SAMPLES_PATH
-RPM_RELEASE
-RPM_CONFIGURE_ARGS
-RPM_HOST_OS
-RPM_HOST_VENDOR
-RPM_HOST_CPU
-WITH_MARS_TESTS_FALSE
-WITH_MARS_TESTS_TRUE
-GRIB_DEVEL
-DEVEL_RULES
-UPPER_CASE_MOD_FALSE
-UPPER_CASE_MOD_TRUE
-ac_ct_FC
-FCFLAGS
-FC
-ac_ct_F77
-FFLAGS
-F77
-LEXLIB
-LEX_OUTPUT_ROOT
-LEX
-YFLAGS
-YACC
-PERLDIR
-AM_BACKSLASH
-AM_DEFAULT_VERBOSITY
-AM_DEFAULT_V
-AM_V
-am__fastdepCC_FALSE
-am__fastdepCC_TRUE
-CCDEPMODE
-am__nodep
-AMDEPBACKSLASH
-AMDEP_FALSE
-AMDEP_TRUE
-am__quote
-am__include
-DEPDIR
-am__untar
-am__tar
-AMTAR
-am__leading_dot
-SET_MAKE
-mkdir_p
-MKDIR_P
-INSTALL_STRIP_PROGRAM
-install_sh
-MAKEINFO
-AUTOHEADER
-AUTOMAKE
-AUTOCONF
-ACLOCAL
-VERSION
-PACKAGE
-CYGPATH_W
-am__isrc
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-ECCODES_AGE
-ECCODES_REVISION
-ECCODES_CURRENT
-ECCODES_PATCH_VERSION
-ECCODES_MINOR_VERSION
-ECCODES_MAJOR_VERSION
-ECCODES_VERSION_STR
-ECCODES_MAIN_VERSION
-LIBTOOL_DEPS
-CPP
-OTOOL64
-OTOOL
-LIPO
-NMEDIT
-DSYMUTIL
-MANIFEST_TOOL
-AWK
-RANLIB
-STRIP
-ac_ct_AR
-AR
-DLLTOOL
-OBJDUMP
-LN_S
-NM
-ac_ct_DUMPBIN
-DUMPBIN
-LD
-FGREP
-EGREP
-GREP
-SED
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-LIBTOOL
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-enable_shared
-enable_static
-with_pic
-enable_fast_install
-with_gnu_ld
-with_sysroot
-enable_libtool_lock
-enable_dependency_tracking
-enable_silent_rules
-enable_pthread
-enable_ibmpower67_opt
-enable_ieee_native
-enable_align_memory
-enable_vector
-enable_memory_management
-enable_development
-enable_largefile
-with_rpm_release
-enable_fortran
-with_ifs_samples
-with_emos
-with_fortranlibdir
-with_fortranlibs
-enable_timer
-enable_omp_packing
-with_netcdf
-enable_jpeg
-with_jasper
-with_openjpeg
-with_aec
-with_png_support
-enable_install_system_perl
-with_perl
-with_perl_options
-enable_python
-enable_numpy
-enable_werror_always
-'
-      ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CPP
-YACC
-YFLAGS
-F77
-FFLAGS
-FC
-FCFLAGS
-PYTHON
-PYTHON_INCLUDES
-PYTHON_LDFLAGS
-PYTHON_CFLAGS
-PYTHON_LIBS
-PYTHON_CONFIG'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval $ac_prev=\$ac_option
-    ac_prev=
-    continue
-  fi
-
-  case $ac_option in
-  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *=)   ac_optarg= ;;
-  *)    ac_optarg=yes ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case $ac_dashdash$ac_option in
-  --)
-    ac_dashdash=yes ;;
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir=$ac_optarg ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build_alias ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build_alias=$ac_optarg ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file=$ac_optarg ;;
-
-  --config-cache | -C)
-    cache_file=config.cache ;;
-
-  -datadir | --datadir | --datadi | --datad)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=*)
-    datadir=$ac_optarg ;;
-
-  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
-  | --dataroo | --dataro | --datar)
-    ac_prev=datarootdir ;;
-  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
-  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
-    datarootdir=$ac_optarg ;;
-
-  -disable-* | --disable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=no ;;
-
-  -docdir | --docdir | --docdi | --doc | --do)
-    ac_prev=docdir ;;
-  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
-    docdir=$ac_optarg ;;
-
-  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
-    ac_prev=dvidir ;;
-  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
-    dvidir=$ac_optarg ;;
-
-  -enable-* | --enable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=\$ac_optarg ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix=$ac_optarg ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he | -h)
-    ac_init_help=long ;;
-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-    ac_init_help=recursive ;;
-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-    ac_init_help=short ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host_alias ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host_alias=$ac_optarg ;;
-
-  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
-    ac_prev=htmldir ;;
-  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
-  | --ht=*)
-    htmldir=$ac_optarg ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir=$ac_optarg ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir=$ac_optarg ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir=$ac_optarg ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir=$ac_optarg ;;
-
-  -localedir | --localedir | --localedi | --localed | --locale)
-    ac_prev=localedir ;;
-  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
-    localedir=$ac_optarg ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst | --locals)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
-    localstatedir=$ac_optarg ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir=$ac_optarg ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c | -n)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir=$ac_optarg ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix=$ac_optarg ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix=$ac_optarg ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix=$ac_optarg ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name=$ac_optarg ;;
-
-  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
-    ac_prev=pdfdir ;;
-  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
-    pdfdir=$ac_optarg ;;
-
-  -psdir | --psdir | --psdi | --psd | --ps)
-    ac_prev=psdir ;;
-  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
-    psdir=$ac_optarg ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir=$ac_optarg ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir=$ac_optarg ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site=$ac_optarg ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir=$ac_optarg ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir=$ac_optarg ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target_alias ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target_alias=$ac_optarg ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers | -V)
-    ac_init_version=: ;;
-
-  -with-* | --with-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=\$ac_optarg ;;
-
-  -without-* | --without-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=no ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes=$ac_optarg ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries=$ac_optarg ;;
-
-  -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
-    ;;
-
-  *=*)
-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-    # Reject names that are not valid shell variable names.
-    case $ac_envvar in #(
-      '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
-    esac
-    eval $ac_envvar=\$ac_optarg
-    export $ac_envvar ;;
-
-  *)
-    # FIXME: should be removed in autoconf 3.0.
-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  as_fn_error $? "missing argument to $ac_option"
-fi
-
-if test -n "$ac_unrecognized_opts"; then
-  case $enable_option_checking in
-    no) ;;
-    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
-  esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
-		datadir sysconfdir sharedstatedir localstatedir includedir \
-		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
-do
-  eval ac_val=\$$ac_var
-  # Remove trailing slashes.
-  case $ac_val in
-    */ )
-      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
-      eval $ac_var=\$ac_val;;
-  esac
-  # Be sure to have absolute directory names.
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* )  continue;;
-    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
-  esac
-  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
-  if test "x$build_alias" = x; then
-    cross_compiling=maybe
-  elif test "x$build_alias" != "x$host_alias"; then
-    cross_compiling=yes
-  fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  as_fn_error $? "working directory cannot be determined"
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  as_fn_error $? "pwd does not report name of working directory"
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then the parent directory.
-  ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_myself" : 'X\(//\)[^/]' \| \
-	 X"$as_myself" : 'X\(//\)$' \| \
-	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  srcdir=$ac_confdir
-  if test ! -r "$srcdir/$ac_unique_file"; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
-  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
-	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
-	pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
-  srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
-  eval ac_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_env_${ac_var}_value=\$${ac_var}
-  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
-  # Omit some internal or obsolete options to make the list less imposing.
-  # This message is too long to be a string in the A/UX 3.1 sh.
-  cat <<_ACEOF
-\`configure' configures eccodes   to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE.  See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
-  -h, --help              display this help and exit
-      --help=short        display options specific to this package
-      --help=recursive    display the short help of all the included packages
-  -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking ...' messages
-      --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
-  -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
-
-Installation directories:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          @<:@@S|@ac_default_prefix@:>@
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          @<:@PREFIX@:>@
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
-  --bindir=DIR            user executables [EPREFIX/bin]
-  --sbindir=DIR           system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR        program executables [EPREFIX/libexec]
-  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --libdir=DIR            object code libraries [EPREFIX/lib]
-  --includedir=DIR        C header files [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
-  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
-  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
-  --infodir=DIR           info documentation [DATAROOTDIR/info]
-  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
-  --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root @<:@DATAROOTDIR/doc/eccodes@:>@
-  --htmldir=DIR           html documentation [DOCDIR]
-  --dvidir=DIR            dvi documentation [DOCDIR]
-  --pdfdir=DIR            pdf documentation [DOCDIR]
-  --psdir=DIR             ps documentation [DOCDIR]
-_ACEOF
-
-  cat <<\_ACEOF
-
-Program names:
-  --program-prefix=PREFIX            prepend PREFIX to installed program names
-  --program-suffix=SUFFIX            append SUFFIX to installed program names
-  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
-
-System types:
-  --build=BUILD     configure for building on BUILD [guessed]
-  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-  case $ac_init_help in
-     short | recursive ) echo "Configuration of eccodes  :";;
-   esac
-  cat <<\_ACEOF
-
-Optional Features:
-  --disable-option-checking  ignore unrecognized --enable/--with options
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-shared@<:@=PKGS@:>@  build shared libraries @<:@default=yes@:>@
-  --enable-static@<:@=PKGS@:>@  build static libraries @<:@default=yes@:>@
-  --enable-fast-install@<:@=PKGS@:>@ 
-                          optimize for fast installation @<:@default=yes@:>@
-  --disable-libtool-lock  avoid locking (might break parallel builds)
-  --enable-dependency-tracking 
-                          do not reject slow dependency extractors
-  --disable-dependency-tracking 
-                          speeds up one-time build
-  --enable-silent-rules   less verbose build output (undo: "make V=1")
-  --disable-silent-rules  verbose build output (undo: "make V=0")
-  --enable-pthread        enable POSIX threads @<:@by default disabled@:>@
-  --enable-ibmpower67_opt enable IBM POWER 6/7 optimisations @<:@by default
-                          disabled@:>@
-  --disable-ieee-native   disable ieee native packing
-  --enable-align-memory   enable memory alignment @<:@by default disabled@:>@
-  --enable-vector         enable vectorised code @<:@by default disabled@:>@
-  --enable-memory-management 
-                          enable memory @<:@by default disabled@:>@
-  --enable-development    enable development configuration @<:@by default
-                          disabled@:>@
-  --disable-largefile     omit support for large files
-  --disable-fortran       disable fortran interface @<:@by default enabled@:>@
-  --enable-timer          enable timer @<:@by default disabled@:>@
-  --enable-omp-packing    enable OpenMP multithreaded packing @<:@by default
-                          disabled@:>@
-  --disable-jpeg          disable jpeg 2000 for grib 2 decoding/encoding @<:@by
-                          default enabled@:>@
-  --enable-install-system-perl 
-                          perl modules will install in the standard perl
-                          installation
-  --enable-python         Enable the Python interface in the build @<:@by default
-                          disabled@:>@
-  --disable-numpy         Disable NumPy as the data handling package for the
-                          Python interface @<:@by default enabled@:>@
-  --enable-werror-always  enable -Werror despite compiler version
-
-Optional Packages:
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-pic@<:@=PKGS@:>@       try to use only PIC/non-PIC objects @<:@default=use
-                          both@:>@
-  --with-gnu-ld           assume the C compiler uses GNU ld @<:@default=no@:>@
-  --with-sysroot=DIR Search for dependent libraries within DIR
-                        (or the compiler's sysroot if not specified).
-  --with-rpm-release=NUMBER       The rpms will use this release number  (defaults to 1)
-  --with-ifs-samples=ifs-samples-dir 
-                          ifs_samples will be installed in ifs-samples-dir
-  --with-emos=EMOS        use emos for tests
-  --with-fortranlibdir=FORTRANDIR 
-                          fortran libraries directory
-  --with-fortranlibs=FORTRANLIBS 
-                          fortran libraries to link from C
-  --with-netcdf=NETCDF    enable netcdf encoding/decoding using netcdf library
-                          in NETCDF
-  --with-jasper=JASPER    use specified jasper installation directory
-  --with-openjpeg=OPENJPEG 
-                          use specified openjpeg installation directory
-  --with-aec=DIR          use specified libaec installation directory
-  --with-png-support      add support for png decoding/encoding
-  --with-perl=PERL        use specified Perl binary to configure Perl grib_api
-  --with-perl-options=OPTIONS 
-                          options to pass on command-line when generating Perl
-                          grib_api's Makefile from Makefile.PL
-
-Some influential environment variables:
-  CC          C compiler command
-  CFLAGS      C compiler flags
-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
-              nonstandard directory <lib dir>
-  LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
-              you have headers in a nonstandard directory <include dir>
-  CPP         C preprocessor
-  YACC        The `Yet Another Compiler Compiler' implementation to use.
-              Defaults to the first program found out of: `bison -y', `byacc',
-              `yacc'.
-  YFLAGS      The list of arguments that will be passed by default to @S|@YACC.
-              This script will default YFLAGS to the empty string to avoid a
-              default value of `-d' given by some make applications.
-  F77         Fortran 77 compiler command
-  FFLAGS      Fortran 77 compiler flags
-  FC          Fortran compiler command
-  FCFLAGS     Fortran compiler flags
-  PYTHON      the Python interpreter
-  PYTHON_INCLUDES 
-              Include flags for python
-  PYTHON_LDFLAGS 
-              Link flags for python
-  PYTHON_CFLAGS 
-              C flags for python
-  PYTHON_LIBS Libraries for python
-  PYTHON_CONFIG 
-              Path to python-config
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to <Software.Support at ecmwf.int>.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
-  # If there are subdirs, report their specific --help.
-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d "$ac_dir" ||
-      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
-      continue
-    ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-    cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
-    if test -f "$ac_srcdir/configure.gnu"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
-    elif test -f "$ac_srcdir/configure"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure" --help=recursive
-    else
-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-    fi || ac_status=$?
-    cd "$ac_pwd" || { ac_status=$?; break; }
-  done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
-  cat <<\_ACEOF
-eccodes configure  
-generated by GNU Autoconf 2.69
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
-  exit
-fi
-
-## ------------------------ ##
-## Autoconf initialization. ##
-## ------------------------ ##
-
-@%:@ ac_fn_c_try_compile LINENO
-@%:@ --------------------------
-@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_c_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_c_try_compile
-
-@%:@ ac_fn_c_try_link LINENO
-@%:@ -----------------------
-@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_c_try_link
-
-@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-@%:@ -------------------------------------------------------
-@%:@ Tests whether HEADER exists and can be compiled using the include files in
-@%:@ INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-@%:@include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} @%:@ ac_fn_c_check_header_compile
-
-@%:@ ac_fn_c_try_cpp LINENO
-@%:@ ----------------------
-@%:@ Try to preprocess conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } > conftest.i && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_c_try_cpp
-
-@%:@ ac_fn_c_try_run LINENO
-@%:@ ----------------------
-@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded. Assumes
-@%:@ that executables *can* be run.
-ac_fn_c_try_run ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=$ac_status
-fi
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_c_try_run
-
-@%:@ ac_fn_c_check_func LINENO FUNC VAR
-@%:@ ----------------------------------
-@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly
-ac_fn_c_check_func ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $2 innocuous_$2
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $2 (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $2
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $2 ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$2 || defined __stub___$2
-choke me
-#endif
-
-int
-main ()
-{
-return $2 ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} @%:@ ac_fn_c_check_func
-
-@%:@ ac_fn_f77_try_compile LINENO
-@%:@ ----------------------------
-@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_f77_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_f77_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_f77_try_compile
-
-@%:@ ac_fn_f77_try_link LINENO
-@%:@ -------------------------
-@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_f77_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_f77_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_f77_try_link
-
-@%:@ ac_fn_fc_try_compile LINENO
-@%:@ ---------------------------
-@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_fc_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_fc_try_compile
-
-@%:@ ac_fn_fc_try_link LINENO
-@%:@ ------------------------
-@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_fc_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_fc_try_link
-
-@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-@%:@ -------------------------------------------------------
-@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using
-@%:@ the include files in INCLUDES and setting the cache variable VAR
-@%:@ accordingly.
-ac_fn_c_check_header_mongrel ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval \${$3+:} false; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-@%:@include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_header_compiler=yes
-else
-  ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
-  yes:no: )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ----------------------------------------- ##
-## Report this to Software.Support at ecmwf.int ##
-## ----------------------------------------- ##"
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} @%:@ ac_fn_c_check_header_mongrel
-
-@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-@%:@ -------------------------------------------
-@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache
-@%:@ variable VAR accordingly.
-ac_fn_c_check_type ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=no"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof ($2))
-	 return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof (($2)))
-	    return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  
-else
-  eval "$3=yes"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} @%:@ ac_fn_c_check_type
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by eccodes $as_me  , which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
-
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    $as_echo "PATH: $as_dir"
-  done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
-  for ac_arg
-  do
-    case $ac_arg in
-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-    | -silent | --silent | --silen | --sile | --sil)
-      continue ;;
-    *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    case $ac_pass in
-    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
-    2)
-      as_fn_append ac_configure_args1 " '$ac_arg'"
-      if test $ac_must_keep_next = true; then
-	ac_must_keep_next=false # Got value, back to normal.
-      else
-	case $ac_arg in
-	  *=* | --config-cache | -C | -disable-* | --disable-* \
-	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-	  | -with-* | --with-* | -without-* | --without-* | --x)
-	    case "$ac_configure_args0 " in
-	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-	    esac
-	    ;;
-	  -* ) ac_must_keep_next=true ;;
-	esac
-      fi
-      as_fn_append ac_configure_args " '$ac_arg'"
-      ;;
-    esac
-  done
-done
-{ ac_configure_args0=; unset ac_configure_args0;}
-{ ac_configure_args1=; unset ac_configure_args1;}
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log.  We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
-  # Save into config.log some information that might help in debugging.
-  {
-    echo
-
-    $as_echo "## ---------------- ##
-## Cache variables. ##
-## ---------------- ##"
-    echo
-    # The following way of writing the cache mishandles newlines in values,
-(
-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-  (set) 2>&1 |
-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      sed -n \
-	"s/'\''/'\''\\\\'\'''\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
-      ;; #(
-    *)
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-)
-    echo
-
-    $as_echo "## ----------------- ##
-## Output variables. ##
-## ----------------- ##"
-    echo
-    for ac_var in $ac_subst_vars
-    do
-      eval ac_val=\$$ac_var
-      case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-      esac
-      $as_echo "$ac_var='\''$ac_val'\''"
-    done | sort
-    echo
-
-    if test -n "$ac_subst_files"; then
-      $as_echo "## ------------------- ##
-## File substitutions. ##
-## ------------------- ##"
-      echo
-      for ac_var in $ac_subst_files
-      do
-	eval ac_val=\$$ac_var
-	case $ac_val in
-	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-	esac
-	$as_echo "$ac_var='\''$ac_val'\''"
-      done | sort
-      echo
-    fi
-
-    if test -s confdefs.h; then
-      $as_echo "## ----------- ##
-## confdefs.h. ##
-## ----------- ##"
-      echo
-      cat confdefs.h
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core *.core core.conftest.* &&
-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-$as_echo "/* confdefs.h */" > confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
-  # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in @%:@((
-    -*)  ac_site_file1=./$CONFIG_SITE;;
-    */*) ac_site_file1=$CONFIG_SITE;;
-    *)   ac_site_file1=./$CONFIG_SITE;;
-  esac
-elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
-else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
-  test "x$ac_site_file" = xNONE && continue
-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
-    sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file" \
-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
-  fi
-done
-
-if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special files
-  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
-  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . "$cache_file";;
-      *)                      . "./$cache_file";;
-    esac
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val=\$ac_cv_env_${ac_var}_value
-  eval ac_new_val=\$ac_env_${ac_var}_value
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,);;
-    *)
-      if test "x$ac_old_val" != "x$ac_new_val"; then
-	# differences in whitespace do not lead to failure.
-	ac_old_val_w=`echo x $ac_old_val`
-	ac_new_val_w=`echo x $ac_new_val`
-	if test "$ac_old_val_w" != "$ac_new_val_w"; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-	  ac_cache_corrupted=:
-	else
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
-	  eval $ac_var=\$ac_old_val
-	fi
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-    *) ac_arg=$ac_var=$ac_new_val ;;
-    esac
-    case " $ac_configure_args " in
-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-ac_aux_dir=
-for ac_dir in config "$srcdir"/config; do
-  if test -f "$ac_dir/install-sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f "$ac_dir/install.sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  elif test -f "$ac_dir/shtool"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/shtool install -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  as_fn_error $? "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
-
-
-
-case `pwd` in
-  *\ * | *\	*)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
-$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
-esac
-
-
-
-macro_version='2.4.2'
-macro_revision='1.3337'
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
-  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$host_alias" = x; then
-  ac_cv_host=$ac_cv_build
-else
-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-# Backslashify metacharacters that are still active within
-# double-quoted strings.
-sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
-ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
-$as_echo_n "checking how to print strings... " >&6; }
-# Test print first, because it will be a builtin if present.
-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
-   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='print -r --'
-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='printf %s\n'
-else
-  # Use this function as a fallback that always works.
-  func_fallback_echo ()
-  {
-    eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-  }
-  ECHO='func_fallback_echo'
-fi
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO "" 
-}
-
-case "$ECHO" in
-  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
-$as_echo "printf" >&6; } ;;
-  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
-$as_echo "print -r" >&6; } ;;
-  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
-$as_echo "cat" >&6; } ;;
-esac
-
-
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $@%:@ != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-	;;
-    [ab].out )
-	# We found the default executable, but exeext='' is most
-	# certainly right.
-	break;;
-    *.* )
-	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-	then :; else
-	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	fi
-	# We set ac_cv_exeext here because the later test for it is not
-	# safe: cross compilers may not add the suffix if given an `-o'
-	# argument, so we may need to know it at that point already.
-	# Even if this section looks crufty: it has the advantage of
-	# actually working.
-	break;;
-    * )
-	break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
-  ac_file=''
-fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	  break;;
-    * ) break;;
-  esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
-  { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-  if { ac_try='./conftest$ac_cv_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-	cross_compiling=yes
-    else
-	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-  
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-     for ac_i in 1 2 3 4 5 6 7; do
-       ac_script="$ac_script$as_nl$ac_script"
-     done
-     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     { ac_script=; unset ac_script;}
-     if test -z "$SED"; then
-  ac_path_SED_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_SED" || continue
-# Check for GNU ac_path_SED and select it if it is found.
-  # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
-  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
-    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_SED_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_SED="$ac_path_SED"
-      ac_path_SED_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_SED_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_SED"; then
-    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
-  fi
-else
-  ac_cv_path_SED=$SED
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
-  rm -f conftest.sed
-
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
- 
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in egrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_EGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_EGREP=$EGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
- 
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
-$as_echo_n "checking for fgrep... " >&6; }
-if ${ac_cv_path_FGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
-   then ac_cv_path_FGREP="$GREP -F"
-   else
-     if test -z "$FGREP"; then
-  ac_path_FGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in fgrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_FGREP" || continue
-# Check for GNU ac_path_FGREP and select it if it is found.
-  # Check for GNU $ac_path_FGREP
-case `"$ac_path_FGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'FGREP' >> "conftest.nl"
-    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_FGREP="$ac_path_FGREP"
-      ac_path_FGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_FGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_FGREP"; then
-    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_FGREP=$FGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
-$as_echo "$ac_cv_path_FGREP" >&6; }
- FGREP="$ac_cv_path_FGREP"
- 
-
-test -z "$GREP" && GREP=grep
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-
-
-
-@%:@ Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
-  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
-  with_gnu_ld=no
-fi
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [\\/]* | ?:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
-fi
-if ${lt_cv_path_LD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
-fi
-
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
-
-
-    
-    
-    
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
-$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if ${lt_cv_path_NM+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
-	#   nm: unknown option "B" ignored
-	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
-	  lt_cv_path_NM="$tmp_nm -B"
-	  break
-	  ;;
-	*)
-	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-	  */dev/null*)
-	    lt_cv_path_NM="$tmp_nm -p"
-	    break
-	    ;;
-	  *)
-	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-	    continue # so that we can try to find one that supports BSD flags
-	    ;;
-	  esac
-	  ;;
-	esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  : ${lt_cv_path_NM=no}
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
-$as_echo "$lt_cv_path_NM" >&6; }
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$DUMPBIN"; then :
-    # Let the user override the test.
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in dumpbin "link -dump"
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DUMPBIN"; then
-  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DUMPBIN=$ac_cv_prog_DUMPBIN
-if test -n "$DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
-$as_echo "$DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$DUMPBIN" && break
-  done
-fi
-if test -z "$DUMPBIN"; then
-  ac_ct_DUMPBIN=$DUMPBIN
-  for ac_prog in dumpbin "link -dump"
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DUMPBIN"; then
-  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
-if test -n "$ac_ct_DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
-$as_echo "$ac_ct_DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_DUMPBIN" && break
-done
-
-  if test "x$ac_ct_DUMPBIN" = x; then
-    DUMPBIN=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DUMPBIN=$ac_ct_DUMPBIN
-  fi
-fi
-
-    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
-    *COFF*)
-      DUMPBIN="$DUMPBIN -symbols"
-      ;;
-    *)
-      DUMPBIN=:
-      ;;
-    esac
-  fi
-  
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
-  fi
-fi
-test -z "$NM" && NM=nm
-
-
-    
-    
-    
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
-$as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if ${lt_cv_nm_interface+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
-  cat conftest.out >&5
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
-$as_echo "$lt_cv_nm_interface" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-# find the maximum length of command line arguments
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
-$as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if ${lt_cv_sys_max_cmd_len+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-    i=0
-  teststring="ABCD"
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  mint*)
-    # On MiNT this can take a long time and run out of memory.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  os2*)
-    # The test takes a long time on OS/2.
-    lt_cv_sys_max_cmd_len=8192
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[	 ]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
-	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-	      test $i != 17 # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-
-fi
-
-if test -n $lt_cv_sys_max_cmd_len ; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
-$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-    
-    
-    
-
-
-: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
-$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,b/c, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
-$as_echo "$xsi_shell" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
-$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
-$as_echo "$lt_shell_append" >&6; }
-
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
-else
-  lt_unset=false
-fi
-
-    
-    
-    
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
-  ;;
-esac
-
-    
-    
-    
-
-    
-    
-    
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-if ${lt_cv_to_host_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-        ;;
-    esac
-    ;;
-  *-*-cygwin* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_noop
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-        ;;
-    esac
-    ;;
-  * ) # unhandled hosts (and "normal" native builds)
-    lt_cv_to_host_file_cmd=func_convert_file_noop
-    ;;
-esac
-
-fi
-
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-$as_echo "$lt_cv_to_host_file_cmd" >&6; }
-
-    
-    
-    
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-if ${lt_cv_to_tool_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  #assume ordinary cross tools, or native build.
-lt_cv_to_tool_file_cmd=func_convert_file_noop
-case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-        ;;
-    esac
-    ;;
-esac
-
-fi
-
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
-
-    
-    
-    
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
-$as_echo_n "checking for $LD option to reload object files... " >&6; }
-if ${lt_cv_ld_reload_flag+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_reload_flag='-r'
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
-$as_echo "$lt_cv_ld_reload_flag" >&6; }
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    if test "$GCC" != yes; then
-      reload_cmds=false
-    fi
-    ;;
-  darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-
-    
-    
-    
-
-    
-    
-    
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OBJDUMP"; then
-  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
-  ac_ct_OBJDUMP=$OBJDUMP
-  # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OBJDUMP"; then
-  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OBJDUMP" = x; then
-    OBJDUMP="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OBJDUMP=$ac_ct_OBJDUMP
-  fi
-else
-  OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-    
-    
-    
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
-$as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if ${lt_cv_deplibs_check_method+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[4-9]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[45]*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
-  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    # Keep this pattern in sync with the one in func_win32_libid.
-    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-cegcc*)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-haiku*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[3-9]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
-$as_echo "$lt_cv_deplibs_check_method" >&6; }
-
-file_magic_glob=
-want_nocaseglob=no
-if test "$build" = "$host"; then
-  case $host_os in
-  mingw* | pw32*)
-    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-      want_nocaseglob=yes
-    else
-      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
-    fi
-    ;;
-  esac
-fi
-
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DLLTOOL"; then
-  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
-  ac_ct_DLLTOOL=$DLLTOOL
-  # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DLLTOOL"; then
-  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DLLTOOL" = x; then
-    DLLTOOL="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DLLTOOL=$ac_ct_DLLTOOL
-  fi
-else
-  DLLTOOL="$ac_cv_prog_DLLTOOL"
-fi
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-    
-    
-    
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_sharedlib_from_linklib_cmd='unknown'
-
-case $host_os in
-cygwin* | mingw* | pw32* | cegcc*)
-  # two different shell functions defined in ltmain.sh
-  # decide which to use based on capabilities of $DLLTOOL
-  case `$DLLTOOL --help 2>&1` in
-  *--identify-strict*)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-    ;;
-  *)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-    ;;
-  esac
-  ;;
-*)
-  # fallback: assume linklib IS sharedlib
-  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-
-
-    
-    
-    
-
-
-
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in ar
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$AR" && break
-  done
-fi
-if test -z "$AR"; then
-  ac_ct_AR=$AR
-  for ac_prog in ar
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AR="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_AR" && break
-done
-
-  if test "x$ac_ct_AR" = x; then
-    AR="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AR=$ac_ct_AR
-  fi
-fi
-
-: ${AR=ar}
-: ${AR_FLAGS=cru}
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
-$as_echo_n "checking for archiver @FILE support... " >&6; }
-if ${lt_cv_ar_at_file+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ar_at_file=no
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  echo conftest.$ac_objext > conftest.lst
-      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
-      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-      if test "$ac_status" -eq 0; then
-	# Ensure the archiver fails upon bogus file names.
-	rm -f conftest.$ac_objext libconftest.a
-	{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	if test "$ac_status" -ne 0; then
-          lt_cv_ar_at_file=@
-        fi
-      fi
-      rm -f conftest.* libconftest.a
-     
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
-$as_echo "$lt_cv_ar_at_file" >&6; }
-
-if test "x$lt_cv_ar_at_file" = xno; then
-  archiver_list_spec=
-else
-  archiver_list_spec=$lt_cv_ar_at_file
-fi
-
-    
-    
-    
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-test -z "$STRIP" && STRIP=:
-
-    
-    
-    
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-test -z "$RANLIB" && RANLIB=:
-
-    
-    
-    
-
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
-fi
-
-case $host_os in
-  darwin*)
-    lock_old_archive_extraction=yes ;;
-  *)
-    lock_old_archive_extraction=no ;;
-esac
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-for ac_prog in gawk mawk nawk awk
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AWK"; then
-  ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$AWK" && break
-done
-
-
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
-$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if ${lt_cv_sys_global_symbol_pipe+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[BCDEGRST]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[BCDT]'
-  ;;
-cygwin* | mingw* | pw32* | cegcc*)
-  symcode='[ABCDGISTW]'
-  ;;
-hpux*)
-  if test "$host_cpu" = ia64; then
-    symcode='[ABCDEGRST]'
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[BCDEGRST]'
-  ;;
-osf*)
-  symcode='[BCDEGQRST]'
-  ;;
-solaris*)
-  symcode='[BDRT]'
-  ;;
-sco3.2v5*)
-  symcode='[DT]'
-  ;;
-sysv4.2uw2*)
-  symcode='[DT]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[ABDT]'
-  ;;
-sysv4)
-  symcode='[DFNSTU]'
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[ABCDGIRSTW]' ;;
-esac
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function
-    # and D for any global variable.
-    # Also find C++ and __fastcall symbols from MSVC++,
-    # which start with @ or ?.
-    lt_cv_sys_global_symbol_pipe="$AWK '"\
-"     {last_section=section; section=\$ 3};"\
-"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
-"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     \$ 0!~/External *\|/{next};"\
-"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-"     {if(hide[section]) next};"\
-"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
-"     ' prfx=^$ac_symprfx"
-  else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-  fi
-  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
-  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-	mv -f "$nlist"T "$nlist"
-      else
-	rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-	  cat <<_LT_EOF > conftest.$ac_ext
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT@&t at _DLSYM_CONST
-#elif defined(__osf__)
-/* This system does not cope well with relocations in const data.  */
-# define LT@&t at _DLSYM_CONST
-#else
-# define LT@&t at _DLSYM_CONST const
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
-	  # Now generate the symbol file.
-	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
-	  cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols.  */
-LT@&t at _DLSYM_CONST struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-	  cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-	  # Now try linking the two files.
-	  mv conftest.$ac_objext conftstm.$ac_objext
-	  lt_globsym_save_LIBS=$LIBS
-	  lt_globsym_save_CFLAGS=$CFLAGS
-	  LIBS="conftstm.$ac_objext"
-	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
-	    pipe_works=yes
-	  fi
-	  LIBS=$lt_globsym_save_LIBS
-	  CFLAGS=$lt_globsym_save_CFLAGS
-	else
-	  echo "cannot find nm_test_func in $nlist" >&5
-	fi
-      else
-	echo "cannot find nm_test_var in $nlist" >&5
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
-    fi
-  else
-    echo "$progname: failed program was:" >&5
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-
-fi
-
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
-$as_echo "ok" >&6; }
-fi
-
-# Response file support.
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-  nm_file_list_spec='@'
-elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
-  nm_file_list_spec='@'
-fi
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-$as_echo_n "checking for sysroot... " >&6; }
-
-@%:@ Check whether --with-sysroot was given.
-if test "${with_sysroot+set}" = set; then :
-  withval=$with_sysroot; 
-else
-  with_sysroot=no
-fi
-
-
-lt_sysroot=
-case ${with_sysroot} in #(
- yes)
-   if test "$GCC" = yes; then
-     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-   fi
-   ;; #(
- /*)
-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-   ;; #(
- no|'')
-   ;; #(
- *)
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
-$as_echo "${with_sysroot}" >&6; }
-   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
-   ;;
-esac
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-$as_echo "${lt_sysroot:-no}" >&6; }
-
-    
-    
-    
-
-@%:@ Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then :
-  enableval=$enable_libtool_lock; 
-fi
-
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-	HPUX_IA64_MODE="32"
-	;;
-      *ELF-64*)
-	HPUX_IA64_MODE="64"
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    if test "$lt_cv_prog_gnu_ld" = yes; then
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -melf32bsmip"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -melf32bmipn32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -melf64bmip"
-	;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -32"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -n32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -64"
-	  ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_i386_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
-	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
-	    LD="${LD-ld} -m elf32ppclinux"
-	    ;;
-	  s390x-*linux*)
-	    LD="${LD-ld} -m elf_s390"
-	    ;;
-	  sparc64-*linux*)
-	    LD="${LD-ld} -m elf32_sparc"
-	    ;;
-	esac
-	;;
-      *64-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_x86_64_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_x86_64"
-	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
-	    LD="${LD-ld} -m elf64ppc"
-	    ;;
-	  s390*-*linux*|s390*-*tpf*)
-	    LD="${LD-ld} -m elf64_s390"
-	    ;;
-	  sparc*-*linux*)
-	    LD="${LD-ld} -m elf64_sparc"
-	    ;;
-	esac
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
-$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
-if ${lt_cv_cc_needs_belf+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_cc_needs_belf=yes
-else
-  lt_cv_cc_needs_belf=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-     ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
-$as_echo "$lt_cv_cc_needs_belf" >&6; }
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-*-*solaris*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*)
-        case $host in
-        i?86-*-solaris*)
-          LD="${LD-ld} -m elf_x86_64"
-          ;;
-        sparc*-*-solaris*)
-          LD="${LD-ld} -m elf64_sparc"
-          ;;
-        esac
-        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
-        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
-          LD="${LD-ld}_sol2"
-        fi
-        ;;
-      *)
-	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-	  LD="${LD-ld} -64"
-	fi
-	;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks="$enable_libtool_lock"
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
-set dummy ${ac_tool_prefix}mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$MANIFEST_TOOL"; then
-  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
-if test -n "$MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-$as_echo "$MANIFEST_TOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
-  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
-  # Extract the first word of "mt", so it can be a program name with args.
-set dummy mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_MANIFEST_TOOL"; then
-  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
-if test -n "$ac_ct_MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_MANIFEST_TOOL" = x; then
-    MANIFEST_TOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
-  fi
-else
-  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
-fi
-
-test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-if ${lt_cv_path_mainfest_tool+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_path_mainfest_tool=no
-  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
-  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-  cat conftest.err >&5
-  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-    lt_cv_path_mainfest_tool=yes
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-$as_echo "$lt_cv_path_mainfest_tool" >&6; }
-if test "x$lt_cv_path_mainfest_tool" != xyes; then
-  MANIFEST_TOOL=:
-fi
-
-    
-    
-    
-
-
-  case $host_os in
-    rhapsody* | darwin*)
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DSYMUTIL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DSYMUTIL"; then
-  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DSYMUTIL=$ac_cv_prog_DSYMUTIL
-if test -n "$DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
-$as_echo "$DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DSYMUTIL"; then
-  ac_ct_DSYMUTIL=$DSYMUTIL
-  # Extract the first word of "dsymutil", so it can be a program name with args.
-set dummy dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DSYMUTIL"; then
-  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
-if test -n "$ac_ct_DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
-$as_echo "$ac_ct_DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DSYMUTIL" = x; then
-    DSYMUTIL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DSYMUTIL=$ac_ct_DSYMUTIL
-  fi
-else
-  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
-set dummy ${ac_tool_prefix}nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NMEDIT"; then
-  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-NMEDIT=$ac_cv_prog_NMEDIT
-if test -n "$NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
-$as_echo "$NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_NMEDIT"; then
-  ac_ct_NMEDIT=$NMEDIT
-  # Extract the first word of "nmedit", so it can be a program name with args.
-set dummy nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_NMEDIT"; then
-  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_NMEDIT="nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
-if test -n "$ac_ct_NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
-$as_echo "$ac_ct_NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_NMEDIT" = x; then
-    NMEDIT=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    NMEDIT=$ac_ct_NMEDIT
-  fi
-else
-  NMEDIT="$ac_cv_prog_NMEDIT"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
-set dummy ${ac_tool_prefix}lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$LIPO"; then
-  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-LIPO=$ac_cv_prog_LIPO
-if test -n "$LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
-$as_echo "$LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_LIPO"; then
-  ac_ct_LIPO=$LIPO
-  # Extract the first word of "lipo", so it can be a program name with args.
-set dummy lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_LIPO"; then
-  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_LIPO="lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
-if test -n "$ac_ct_LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
-$as_echo "$ac_ct_LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_LIPO" = x; then
-    LIPO=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    LIPO=$ac_ct_LIPO
-  fi
-else
-  LIPO="$ac_cv_prog_LIPO"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL"; then
-  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL=$ac_cv_prog_OTOOL
-if test -n "$OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
-$as_echo "$OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL"; then
-  ac_ct_OTOOL=$OTOOL
-  # Extract the first word of "otool", so it can be a program name with args.
-set dummy otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL"; then
-  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OTOOL="otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
-if test -n "$ac_ct_OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
-$as_echo "$ac_ct_OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL" = x; then
-    OTOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL=$ac_ct_OTOOL
-  fi
-else
-  OTOOL="$ac_cv_prog_OTOOL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL64"; then
-  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL64=$ac_cv_prog_OTOOL64
-if test -n "$OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
-$as_echo "$OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL64"; then
-  ac_ct_OTOOL64=$OTOOL64
-  # Extract the first word of "otool64", so it can be a program name with args.
-set dummy otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL64"; then
-  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OTOOL64="otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
-if test -n "$ac_ct_OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
-$as_echo "$ac_ct_OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL64" = x; then
-    OTOOL64=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL64=$ac_ct_OTOOL64
-  fi
-else
-  OTOOL64="$ac_cv_prog_OTOOL64"
-fi
-
-    
-    
-    
-    
-
-    
-    
-    
-    
-
-    
-    
-    
-    
-
-    
-    
-    
-    
-
-    
-    
-    
-    
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
-$as_echo_n "checking for -single_module linker flag... " >&6; }
-if ${lt_cv_apple_cc_single_mod+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
-	# By default we will add the -single_module flag. You can override
-	# by either setting the environment variable LT_MULTI_MODULE
-	# non-empty at configure time, or by adding -multi_module to the
-	# link flags.
-	rm -rf libconftest.dylib*
-	echo "int foo(void){return 1;}" > conftest.c
-	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&5
-	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-	# If there is a non-empty error log, and "single_module"
-	# appears in it, assume the flag caused a linker warning
-        if test -s conftest.err && $GREP single_module conftest.err; then
-	  cat conftest.err >&5
-	# Otherwise, if the output was created with a 0 exit code from
-	# the compiler, it worked.
-	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
-	  lt_cv_apple_cc_single_mod=yes
-	else
-	  cat conftest.err >&5
-	fi
-	rm -rf libconftest.dylib*
-	rm -f conftest.*
-      fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
-$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
-$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if ${lt_cv_ld_exported_symbols_list+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_ld_exported_symbols_list=yes
-else
-  lt_cv_ld_exported_symbols_list=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-	LDFLAGS="$save_LDFLAGS"
-    
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
-$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
-$as_echo_n "checking for -force_load linker flag... " >&6; }
-if ${lt_cv_ld_force_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_force_load=no
-      cat > conftest.c << _LT_EOF
-int forced_loaded() { return 2;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
-      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
-      echo "$AR cru libconftest.a conftest.o" >&5
-      $AR cru libconftest.a conftest.o 2>&5
-      echo "$RANLIB libconftest.a" >&5
-      $RANLIB libconftest.a 2>&5
-      cat > conftest.c << _LT_EOF
-int main() { return 0;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
-      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
-      _lt_result=$?
-      if test -s conftest.err && $GREP force_load conftest.err; then
-	cat conftest.err >&5
-      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
-	lt_cv_ld_force_load=yes
-      else
-	cat conftest.err >&5
-      fi
-        rm -f conftest.err libconftest.a conftest conftest.c
-        rm -rf conftest.dSYM
-    
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
-$as_echo "$lt_cv_ld_force_load" >&6; }
-    case $host_os in
-    rhapsody* | darwin1.[012])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-	10.0,*86*-darwin8*|10.0,*-darwin[91]*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-	10.[012]*)
-	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-	10.*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    fi
-    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@ifdef __STDC__
-@%:@ include <limits.h>
-@%:@else
-@%:@ include <assert.h>
-@%:@endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-  
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@ifdef __STDC__
-@%:@ include <limits.h>
-@%:@else
-@%:@ include <assert.h>
-@%:@endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-  
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-  
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-  
-$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-		  inttypes.h stdint.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- 
-fi
-
-done
-
-
-for ac_header in dlfcn.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
-"
-if test "x$ac_cv_header_dlfcn_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_DLFCN_H 1
-_ACEOF
- 
-fi
-
-done
-
-
-
-
-
-# Set options
-@%:@ Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
-  enableval=$enable_shared; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_shared=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_shared=yes
-fi
-
-
-    
-    
-    
-    
-
-
-
-
-        enable_dlopen=no
-  
-
-  enable_win32_dll=no
-  
-
-            
-  @%:@ Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then :
-  enableval=$enable_static; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_static=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_static=yes
-fi
-
-
-    
-    
-    
-    
-
-
-
-  
-@%:@ Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then :
-  withval=$with_pic; lt_p=${PACKAGE-default}
-    case $withval in
-    yes|no) pic_mode=$withval ;;
-    *)
-      pic_mode=default
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for lt_pkg in $withval; do
-	IFS="$lt_save_ifs"
-	if test "X$lt_pkg" = "X$lt_p"; then
-	  pic_mode=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  pic_mode=default
-fi
-
-
-test -z "$pic_mode" && pic_mode=default
-
-
-    
-    
-    
-
-
-  @%:@ Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then :
-  enableval=$enable_fast_install; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_fast_install=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_fast_install=yes
-fi
-
-
-
-    
-    
-    
-
-
-  
-
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-
-
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-test -z "$LN_S" && LN_S="ln -s"
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-
-if test -n "${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
-$as_echo_n "checking for objdir... " >&6; }
-if ${lt_cv_objdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
-$as_echo "$lt_cv_objdir" >&6; }
-objdir=$lt_cv_objdir
-
-    
-    
-    
-
-cat >>confdefs.h <<_ACEOF
-@%:@define LT_OBJDIR "$lt_cv_objdir/"
-_ACEOF
-
-
-
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
-$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/${ac_tool_prefix}file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool at gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-    
-    
-    
-
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
-$as_echo_n "checking for file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/file"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool at gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  else
-    MAGIC_CMD=:
-  fi
-fi
-
-  fi
-  ;;
-esac
-
-# Use C for the default configuration in the libtool script
-
-lt_save_CC="$CC"
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-objext=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-  
-lt_prog_compiler_no_builtin_flag=
-
-if test "$GCC" = yes; then
-  case $cc_basename in
-  nvcc*)
-    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
-  *)
-    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
-  esac
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_rtti_exceptions=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="-fno-rtti -fno-exceptions"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_rtti_exceptions=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
-
-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
-    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
-else
-    :
-fi
-
-fi
-
-    
-    
-    
-
-
-  lt_prog_compiler_wl=
-lt_prog_compiler_pic=
-lt_prog_compiler_static=
-
-
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl='-Wl,'
-    lt_prog_compiler_static='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      lt_prog_compiler_pic='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      lt_prog_compiler_wl='-Xlinker '
-      if test -n "$lt_prog_compiler_pic"; then
-        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static='-Bstatic'
-      else
-	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-KPIC'
-	lt_prog_compiler_static='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-fPIC'
-	lt_prog_compiler_static='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='--shared'
-	lt_prog_compiler_static='--static'
-	;;
-      nagfor*)
-	# NAG Fortran compiler
-	lt_prog_compiler_wl='-Wl,-Wl,,'
-	lt_prog_compiler_pic='-PIC'
-	lt_prog_compiler_static='-Bstatic'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-fpic'
-	lt_prog_compiler_static='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-qpic'
-	lt_prog_compiler_static='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl=''
-	  ;;
-	*Sun\ F* | *Sun*Fortran*)
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl='-Qoption ld '
-	  ;;
-	*Sun\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl='-Wl,'
-	  ;;
-        *Intel*\ [CF]*Compiler*)
-	  lt_prog_compiler_wl='-Wl,'
-	  lt_prog_compiler_pic='-fPIC'
-	  lt_prog_compiler_static='-static'
-	  ;;
-	*Portland\ Group*)
-	  lt_prog_compiler_wl='-Wl,'
-	  lt_prog_compiler_pic='-fpic'
-	  lt_prog_compiler_static='-Bstatic'
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-	lt_prog_compiler_wl='-Qoption ld ';;
-      *)
-	lt_prog_compiler_wl='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl='-Qoption ld '
-      lt_prog_compiler_pic='-PIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	lt_prog_compiler_pic='-Kconform_pic'
-	lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_can_build_shared=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic='-pic'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared=no
-      ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic=
-    ;;
-  *)
-    lt_prog_compiler_pic="$lt_prog_compiler_pic@&t@ -DPIC"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-$as_echo "$lt_cv_prog_compiler_pic" >&6; }
-lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic@&t@ -DPIC"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
-    case $lt_prog_compiler_pic in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
-     esac
-else
-    lt_prog_compiler_pic=
-     lt_prog_compiler_can_build_shared=no
-fi
-
-fi
-
-    
-    
-    
-
-
-
-    
-    
-    
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
-$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works" = xyes; then
-    :
-else
-    lt_prog_compiler_static=
-fi
-
-
-    
-    
-    
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-    
-    
-    
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-    
-    
-    
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  runpath_var=
-  allow_undefined_flag=
-  always_export_symbols=no
-  archive_cmds=
-  archive_expsym_cmds=
-  compiler_needs_object=no
-  enable_shared_with_static_runtimes=no
-  export_dynamic_flag_spec=
-  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic=no
-  hardcode_direct=no
-  hardcode_direct_absolute=no
-  hardcode_libdir_flag_spec=
-  hardcode_libdir_separator=
-  hardcode_minus_L=no
-  hardcode_shlibpath_var=unsupported
-  inherit_rpath=no
-  link_all_deplibs=unknown
-  module_cmds=
-  module_expsym_cmds=
-  old_archive_from_new_cmds=
-  old_archive_from_expsyms_cmds=
-  thread_safe_flag_spec=
-  whole_archive_flag_spec=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  esac
-
-  ld_shlibs=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
-    case $host_os in
-      aix*)
-	# The AIX port of GNU ld has always aspired to compatibility
-	# with the native linker.  However, as the warning in the GNU ld
-	# block says, versions before 2.19.5* couldn't really create working
-	# shared libraries, regardless of the interface used.
-	case `$LD -v 2>&1` in
-	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
-	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
-	  *)
-	    lt_use_gnu_ld_interface=yes
-	    ;;
-	esac
-	;;
-      *)
-	lt_use_gnu_ld_interface=yes
-	;;
-    esac
-  fi
-
-  if test "$lt_use_gnu_ld_interface" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      whole_archive_flag_spec=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	allow_undefined_flag=unsupported
-	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec='-L$libdir'
-      export_dynamic_flag_spec='${wl}--export-all-symbols'
-      allow_undefined_flag=unsupported
-      always_export_symbols=no
-      enable_shared_with_static_runtimes=yes
-      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    haiku*)
-      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      link_all_deplibs=yes
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=' $pic_flag'
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95* | pgfortran*)
-					# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  whole_archive_flag_spec=
-	  tmp_sharedflag='--shared' ;;
-	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	nvcc*)	# Cuda Compiler Driver 2.2
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object=yes
-	  ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf* | bgf* | bgxlf* | mpixlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-	  archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        ld_shlibs=no
-      fi
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    ld_shlibs=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-    esac
-
-    if test "$ld_shlibs" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec=
-      export_dynamic_flag_spec=
-      whole_archive_flag_spec=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag=unsupported
-      always_export_symbols=yes
-      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	hardcode_direct=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	# Also, AIX nm treats weak defined symbols like other global
-	# defined symbols, whereas GNU nm marks them as "W".
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds=''
-      hardcode_direct=yes
-      hardcode_direct_absolute=yes
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      file_list_spec='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[012]|aix4.[012].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  hardcode_direct=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  hardcode_minus_L=yes
-	  hardcode_libdir_flag_spec='-L$libdir'
-	  hardcode_libdir_separator=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      export_dynamic_flag_spec='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	allow_undefined_flag='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_="/usr/lib:/lib"
-  fi
-  
-fi
-
-  aix_libpath=$lt_cv_aix_libpath_
-fi
-
-        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-	  allow_undefined_flag="-z nodefs"
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_="/usr/lib:/lib"
-  fi
-  
-fi
-
-  aix_libpath=$lt_cv_aix_libpath_
-fi
-
-	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag=' ${wl}-bernotok'
-	  allow_undefined_flag=' ${wl}-berok'
-	  if test "$with_gnu_ld" = yes; then
-	    # We only use this code for GNU lds that support --whole-archive.
-	    whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	  else
-	    # Exported symbols can be pulled into shared objects from archives
-	    whole_archive_flag_spec='$convenience'
-	  fi
-	  archive_cmds_need_lc=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-	# Native MSVC
-	hardcode_libdir_flag_spec=' '
-	allow_undefined_flag=unsupported
-	always_export_symbols=yes
-	file_list_spec='@'
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	  else
-	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	  fi~
-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	  linknames='
-	# The linker will not automatically build a static lib if we build a DLL.
-	# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
-	enable_shared_with_static_runtimes=yes
-	exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-	export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-	# Don't use ranlib
-	old_postinstall_cmds='chmod 644 $oldlib'
-	postlink_cmds='lt_outputfile="@OUTPUT@"~
-	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-	  case $lt_outputfile in
-	    *.exe|*.EXE) ;;
-	    *)
-	      lt_outputfile="$lt_outputfile.exe"
-	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-	      ;;
-	  esac~
-	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	    $RM "$lt_outputfile.manifest";
-	  fi'
-	;;
-      *)
-	# Assume MSVC wrapper
-	hardcode_libdir_flag_spec=' '
-	allow_undefined_flag=unsupported
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-	# The linker will automatically build a .lib file if we build a DLL.
-	old_archive_from_new_cmds='true'
-	# FIXME: Should let the user specify the lib program.
-	old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-	enable_shared_with_static_runtimes=yes
-	;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-      
-  
-  archive_cmds_need_lc=no
-  hardcode_direct=no
-  hardcode_automatic=yes
-  hardcode_shlibpath_var=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-    
-  else
-    whole_archive_flag_spec=''
-  fi
-  link_all_deplibs=yes
-  allow_undefined_flag="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-    
-  else
-  ld_shlibs=no
-  fi
-
-      ;;
-
-    dgux*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_direct=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L=yes
-      export_dynamic_flag_spec='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator=:
-	hardcode_direct=yes
-	hardcode_direct_absolute=yes
-	export_dynamic_flag_spec='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	hardcode_minus_L=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	
-	  # Older versions of the 11.00 compiler do not understand -b yet
-	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
-$as_echo_n "checking if $CC understands -b... " >&6; }
-if ${lt_cv_prog_compiler__b+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler__b=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS -b"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler__b=yes
-       fi
-     else
-       lt_cv_prog_compiler__b=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
-$as_echo "$lt_cv_prog_compiler__b" >&6; }
-
-if test x"$lt_cv_prog_compiler__b" = xyes; then
-    archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-else
-    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-fi
-
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  hardcode_direct=no
-	  hardcode_shlibpath_var=no
-	  ;;
-	*)
-	  hardcode_direct=yes
-	  hardcode_direct_absolute=yes
-	  export_dynamic_flag_spec='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-	# This should be the same for all languages, so no per-tag cache variable.
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_LDFLAGS="$LDFLAGS"
-	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-	   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-int foo (void) { return 0; }
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_irix_exported_symbol=yes
-else
-  lt_cv_irix_exported_symbol=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-           LDFLAGS="$save_LDFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-	if test "$lt_cv_irix_exported_symbol" = yes; then
-          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-	fi
-      else
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      inherit_rpath=yes
-      link_all_deplibs=yes
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    newsos6)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_shlibpath_var=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	hardcode_direct=yes
-	hardcode_shlibpath_var=no
-	hardcode_direct_absolute=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      allow_undefined_flag=unsupported
-      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      else
-	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	hardcode_libdir_flag_spec='-rpath $libdir'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_separator=:
-      ;;
-
-    solaris*)
-      no_undefined_flag=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_shlibpath_var=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      link_all_deplibs=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  reload_cmds='$CC -r -o $output$reload_objs'
-	  hardcode_direct=no
-        ;;
-	motorola)
-	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var=no
-      export_dynamic_flag_spec='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	hardcode_shlibpath_var=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	ld_shlibs=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag='${wl}-z,text'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag='${wl}-z,text'
-      allow_undefined_flag='${wl}-z,nodefs'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-R,$libdir'
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      export_dynamic_flag_spec='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      ld_shlibs=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	export_dynamic_flag_spec='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
-$as_echo "$ld_shlibs" >&6; }
-test "$ld_shlibs" = no && can_build_shared=no
-
-with_gnu_ld=$with_gnu_ld
-
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$lt_prog_compiler_wl
-	  pic_flag=$lt_prog_compiler_pic
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag
-	  allow_undefined_flag=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc=no
-	  else
-	    lt_cv_archive_cmds_need_lc=yes
-	  fi
-	  allow_undefined_flag=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-	
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
-      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-if test "$GCC" = yes; then
-  case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
-  esac
-  case $host_os in
-    mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
-    *) lt_sed_strip_eq="s,=/,/,g" ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
-  case $lt_search_path_spec in
-  *\;*)
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
-    ;;
-  *)
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
-    ;;
-  esac
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
-      test -d "$lt_sys_path" && \
-	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[lt_foo]++; }
-  if (lt_freq[lt_foo] == 1) { print lt_foo; }
-}'`
-  # AWK program above erroneously prepends '/' to C:/dos/paths
-  # for these hosts.
-  case $host_os in
-    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
-      $SED 's,/\([A-Za-z]:\),\1,g'` ;;
-  esac
-  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-
-      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux # correct to gnu/linux during the next big refactor
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
-	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-    
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action=
-if test -n "$hardcode_libdir_flag_spec" ||
-   test -n "$runpath_var" ||
-   test "X$hardcode_automatic" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
-     test "$hardcode_minus_L" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
-$as_echo "$hardcode_action" >&6; }
-
-if test "$hardcode_action" = relink ||
-   test "$inherit_rpath" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-    
-    
-    
-
-
-  if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-  
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    
-fi
-
-    ;;
-
-  *)
-    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
-if test "x$ac_cv_func_shl_load" = xyes; then :
-  lt_cv_dlopen="shl_load"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if ${ac_cv_lib_dld_shl_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load ();
-int
-main ()
-{
-return shl_load ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_shl_load=yes
-else
-  ac_cv_lib_dld_shl_load=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
-  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
-else
-  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
-$as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if ${ac_cv_lib_svld_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsvld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_svld_dlopen=yes
-else
-  ac_cv_lib_svld_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
-$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
-$as_echo_n "checking for dld_link in -ldld... " >&6; }
-if ${ac_cv_lib_dld_dld_link+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dld_link ();
-int
-main ()
-{
-return dld_link ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_dld_link=yes
-else
-  ac_cv_lib_dld_dld_link=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
-$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
-  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
-fi
-
-	      
-fi
-
-	    
-fi
-
-	  
-fi
-
-	
-fi
-
-      
-fi
-
-    ;;
-  esac
-
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
-$as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  	  if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-	}
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self=no
-  fi
-fi
-rm -fr conftest*
-
-    
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
-$as_echo "$lt_cv_dlopen_self" >&6; }
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
-$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self_static+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  	  if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self_static=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-	}
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self_static=no
-  fi
-fi
-rm -fr conftest*
-
-      
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
-$as_echo "$lt_cv_dlopen_self_static" >&6; }
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-  
-striplib=
-old_striplib=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
-$as_echo_n "checking whether stripping libraries is possible... " >&6; }
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP" ; then
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    fi
-    ;;
-  *)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    ;;
-  esac
-fi
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-
-  # Report which library types will actually be built
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-  test "$can_build_shared" = "no" && enable_shared=no
-
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test "$enable_shared" = yes && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
-
-  aix[4-9]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
-    fi
-    ;;
-  esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-  # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-  
-
-
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-CC="$lt_save_CC"
-
-
-
-
-
-
-
-
-       
-       
-
-
-
-
-
-        ac_config_commands="$ac_config_commands libtool"
-
-
-
-
-# Only expand once:
-
-
-
-
-
-# Source file containing package/library versioning information.
-
- . ${srcdir}/version.sh
-
-ECCODES_MAIN_VERSION="${ECCODES_MAJOR_VERSION}.${ECCODES_MINOR_VERSION}.${ECCODES_REVISION_VERSION}"
- echo $ECCODES_MAIN_VERSION
-
-PACKAGE_VERSION="${ECCODES_MAIN_VERSION}"
-ECCODES_VERSION_STR="${ECCODES_MAIN_VERSION}"
-ECCODES_PATCH_VERSION="${ECCODES_REVISION_VERSION}"
-
-
-
-
-
-
-
-
-
-
-echo "configuring ${PACKAGE_NAME} ${PACKAGE_VERSION}"
-
-# Ensure that make can run correctly
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
-$as_echo_n "checking whether build environment is sane... " >&6; }
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name.  Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
-  *[\\\"\#\$\&\'\`$am_lf]*)
-    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
-esac
-case $srcdir in
-  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
-    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
-esac
-
-# Do 'set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   am_has_slept=no
-   for am_try in 1 2; do
-     echo "timestamp, slept: $am_has_slept" > conftest.file
-     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-     if test "$*" = "X"; then
-	# -L didn't work.
-	set X `ls -t "$srcdir/configure" conftest.file`
-     fi
-     if test "$*" != "X $srcdir/configure conftest.file" \
-	&& test "$*" != "X conftest.file $srcdir/configure"; then
-
-	# If neither matched, then we have a broken ls.  This can happen
-	# if, for instance, CONFIG_SHELL is bash and it inherits a
-	# broken ls alias from the environment.  This has actually
-	# happened.  Such a system could not be considered "sane".
-	as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
-  alias in your environment" "$LINENO" 5
-     fi
-     if test "$2" = conftest.file || test $am_try -eq 2; then
-       break
-     fi
-     # Just in case.
-     sleep 1
-     am_has_slept=yes
-   done
-   test "$2" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   as_fn_error $? "newly created file is older than distributed files!
-Check your system clock" "$LINENO" 5
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-  ( sleep 1 ) &
-  am_sleep_pid=$!
-fi
-
-rm -f conftest.file
-
-
-
-ac_config_headers="$ac_config_headers src/config.h"
-
-ac_config_files="$ac_config_files src/eccodes_version.h"
-
-ac_config_files="$ac_config_files rpms/eccodes.pc rpms/eccodes.spec rpms/eccodes_f90.pc"
-
-am__api_version='1.13'
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in @%:@((
-  ./ | .// | /[cC]/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-	  if test $ac_prog = install &&
-	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # AIX install.  It has an incompatible calling convention.
-	    :
-	  elif test $ac_prog = install &&
-	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # program-specific install script used by HP pwplus--don't use.
-	    :
-	  else
-	    rm -rf conftest.one conftest.two conftest.dir
-	    echo one > conftest.one
-	    echo two > conftest.two
-	    mkdir conftest.dir
-	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
-	      test -s conftest.one && test -s conftest.two &&
-	      test -s conftest.dir/conftest.one &&
-	      test -s conftest.dir/conftest.two
-	    then
-	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-	      break 3
-	    fi
-	  fi
-	fi
-      done
-    done
-    ;;
-esac
-
-  done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-test "$program_prefix" != NONE &&
-  program_transform_name="s&^&$program_prefix&;$program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
-  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
-# Double any \ or $.
-# By default was `s,x,x', remove it if useless.
-ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
-program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-
-if test x"${MISSING+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-  *)
-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
-  esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --is-lightweight"; then
-  am_missing_run="$MISSING "
-else
-  am_missing_run=
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
-fi
-
-if test x"${install_sh}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-
-# Installed binaries are usually stripped using 'strip' when the user
-# run "make install-strip".  However 'strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the 'STRIP' environment variable to overrule this program.
-if test "$cross_compiling" != no; then
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
-if test -z "$MKDIR_P"; then
-  if ${ac_cv_path_mkdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in mkdir gmkdir; do
-	 for ac_exec_ext in '' $ac_executable_extensions; do
-	   as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
-	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
-	     'mkdir (GNU coreutils) '* | \
-	     'mkdir (coreutils) '* | \
-	     'mkdir (fileutils) '4.1*)
-	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
-	       break 3;;
-	   esac
-	 done
-       done
-  done
-IFS=$as_save_IFS
-
-fi
-
-  test -d ./--version && rmdir ./--version
-  if test "${ac_cv_path_mkdir+set}" = set; then
-    MKDIR_P="$ac_cv_path_mkdir -p"
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for MKDIR_P within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    MKDIR_P="$ac_install_sh -d"
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-	@echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
-
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-	@echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
-
-@%:@ Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then :
-  enableval=$enable_dependency_tracking; 
-fi
-
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-  am__nodep='_no'
-fi
- if test "x$enable_dependency_tracking" != xno; then
-  AMDEP_TRUE=
-  AMDEP_FALSE='#'
-else
-  AMDEP_TRUE='#'
-  AMDEP_FALSE=
-fi
-
-
-@%:@ Check whether --enable-silent-rules was given.
-if test "${enable_silent_rules+set}" = set; then :
-  enableval=$enable_silent_rules; 
-fi
-
-case $enable_silent_rules in @%:@ (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=1;;
-esac
-am_make=${MAKE-make}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
-$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
-if ${am_cv_make_support_nested_variables+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if $as_echo 'TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-	@$(TRUE)
-.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
-$as_echo "$am_cv_make_support_nested_variables" >&6; }
-if test $am_cv_make_support_nested_variables = yes; then
-    AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AM_BACKSLASH='\'
-
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  am__isrc=' -I$(srcdir)'
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-
-
-# Define the identity of the package.
-
- PACKAGE=$PACKAGE_NAME
- VERSION=${PACKAGE_VERSION}
-
-
-# Some tools Automake needs.
-
-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
-
-
-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
-
-
-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
-
-
-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
-
-
-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-
-# For better backward compatibility.  To be removed once Automake 1.9.x
-# dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-mkdir_p='$(MKDIR_P)'
-
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-# Always define AMTAR for backward compatibility.  Yes, it's still used
-# in the wild :-(  We should find a proper way to deprecate it ...
-AMTAR='$${TAR-tar}'
-
-
-# We'll loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar  pax cpio none'
-
-am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
-
-
-
-
-
-depcc="$CC"   am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CC_dependencies_compiler_type+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CC_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-	continue
-      else
-	break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CC_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if 
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
-  am__fastdepCC_TRUE=
-  am__fastdepCC_FALSE='#'
-else
-  am__fastdepCC_TRUE='#'
-  am__fastdepCC_FALSE=
-fi
-
-
-
-
-definition_files_path="${datadir}/eccodes/definitions"
-samples_files_path="${datadir}/eccodes/samples"
-ifs_samples_files_path="${datadir}/eccodes/ifs_samples"
-default_perl_install="${prefix}/perl"
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define ECCODES_MAIN_VERSION $ECCODES_MAIN_VERSION
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define ECCODES_MAJOR_VERSION $ECCODES_MAJOR_VERSION
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define ECCODES_MINOR_VERSION $ECCODES_MINOR_VERSION
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define ECCODES_REVISION_VERSION $ECCODES_REVISION_VERSION
-_ACEOF
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define ECCODES_CURRENT $ECCODES_CURRENT
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define ECCODES_REVISION $ECCODES_REVISION
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define ECCODES_AGE $ECCODES_AGE
-_ACEOF
-
-
-
-
-
-PERLDIR=perl
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in xlc_r xlc gcc cc pgcc
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in xlc_r xlc gcc cc pgcc
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-  
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@ifdef __STDC__
-@%:@ include <limits.h>
-@%:@else
-@%:@ include <assert.h>
-@%:@endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-  
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@ifdef __STDC__
-@%:@ include <limits.h>
-@%:@else
-@%:@ include <assert.h>
-@%:@endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-	@echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-for ac_prog in 'bison -y' byacc
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_YACC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$YACC"; then
-  ac_cv_prog_YACC="$YACC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_YACC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-YACC=$ac_cv_prog_YACC
-if test -n "$YACC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5
-$as_echo "$YACC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$YACC" && break
-done
-test -n "$YACC" || YACC="yacc"
-
-for ac_prog in flex lex
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LEX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$LEX"; then
-  ac_cv_prog_LEX="$LEX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_LEX="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-LEX=$ac_cv_prog_LEX
-if test -n "$LEX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5
-$as_echo "$LEX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$LEX" && break
-done
-test -n "$LEX" || LEX=":"
-
-if test "x$LEX" != "x:"; then
-  cat >conftest.l <<_ACEOF
-%%
-a { ECHO; }
-b { REJECT; }
-c { yymore (); }
-d { yyless (1); }
-e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument.  */
-    yyless ((input () != 0)); }
-f { unput (yytext[0]); }
-. { BEGIN INITIAL; }
-%%
-#ifdef YYTEXT_POINTER
-extern char *yytext;
-#endif
-int
-main (void)
-{
-  return ! yylex () + ! yywrap ();
-}
-_ACEOF
-{ { ac_try="$LEX conftest.l"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$LEX conftest.l") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5
-$as_echo_n "checking lex output file root... " >&6; }
-if ${ac_cv_prog_lex_root+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  
-if test -f lex.yy.c; then
-  ac_cv_prog_lex_root=lex.yy
-elif test -f lexyy.c; then
-  ac_cv_prog_lex_root=lexyy
-else
-  as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5
-$as_echo "$ac_cv_prog_lex_root" >&6; }
-LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
-
-if test -z "${LEXLIB+set}"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5
-$as_echo_n "checking lex library... " >&6; }
-if ${ac_cv_lib_lex+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  
-    ac_save_LIBS=$LIBS
-    ac_cv_lib_lex='none needed'
-    for ac_lib in '' -lfl -ll; do
-      LIBS="$ac_lib $ac_save_LIBS"
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-`cat $LEX_OUTPUT_ROOT.c`
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_lex=$ac_lib
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-      test "$ac_cv_lib_lex" != 'none needed' && break
-    done
-    LIBS=$ac_save_LIBS
-  
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5
-$as_echo "$ac_cv_lib_lex" >&6; }
-  test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5
-$as_echo_n "checking whether yytext is a pointer... " >&6; }
-if ${ac_cv_prog_lex_yytext_pointer+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  # POSIX says lex can declare yytext either as a pointer or an array; the
-# default is implementation-dependent.  Figure out which it is, since
-# not all implementations provide the %pointer and %array declarations.
-ac_cv_prog_lex_yytext_pointer=no
-ac_save_LIBS=$LIBS
-LIBS="$LEXLIB $ac_save_LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-  #define YYTEXT_POINTER 1
-`cat $LEX_OUTPUT_ROOT.c`
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_prog_lex_yytext_pointer=yes
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_save_LIBS
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5
-$as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; }
-if test $ac_cv_prog_lex_yytext_pointer = yes; then
-  
-$as_echo "@%:@define YYTEXT_POINTER 1" >>confdefs.h
-
-fi
-rm -f conftest.l $LEX_OUTPUT_ROOT.c
-
-fi
-ac_ext=f
-ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
-ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_f77_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in pgf90 pgf77 xlf gfortran f77 g77 f90 ifort
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$F77"; then
-  ac_cv_prog_F77="$F77" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-F77=$ac_cv_prog_F77
-if test -n "$F77"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $F77" >&5
-$as_echo "$F77" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$F77" && break
-  done
-fi
-if test -z "$F77"; then
-  ac_ct_F77=$F77
-  for ac_prog in pgf90 pgf77 xlf gfortran f77 g77 f90 ifort
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_F77"; then
-  ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_F77="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_F77=$ac_cv_prog_ac_ct_F77
-if test -n "$ac_ct_F77"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_F77" >&5
-$as_echo "$ac_ct_F77" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_F77" && break
-done
-
-  if test "x$ac_ct_F77" = x; then
-    F77=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    F77=$ac_ct_F77
-  fi
-fi
-
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-rm -f a.out
-
-# If we don't use `.F' as extension, the preprocessor is not run on the
-# input file.  (Note that this only needs to work for GNU compilers.)
-ac_save_ext=$ac_ext
-ac_ext=F
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran 77 compiler" >&5
-$as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; }
-if ${ac_cv_f77_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-#ifndef __GNUC__
-       choke me
-#endif
-
-      end
-_ACEOF
-if ac_fn_f77_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_f77_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_compiler_gnu" >&5
-$as_echo "$ac_cv_f77_compiler_gnu" >&6; }
-ac_ext=$ac_save_ext
-ac_test_FFLAGS=${FFLAGS+set}
-ac_save_FFLAGS=$FFLAGS
-FFLAGS=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $F77 accepts -g" >&5
-$as_echo_n "checking whether $F77 accepts -g... " >&6; }
-if ${ac_cv_prog_f77_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  FFLAGS=-g
-cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_f77_try_compile "$LINENO"; then :
-  ac_cv_prog_f77_g=yes
-else
-  ac_cv_prog_f77_g=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_g" >&5
-$as_echo "$ac_cv_prog_f77_g" >&6; }
-if test "$ac_test_FFLAGS" = set; then
-  FFLAGS=$ac_save_FFLAGS
-elif test $ac_cv_prog_f77_g = yes; then
-  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
-    FFLAGS="-g -O2"
-  else
-    FFLAGS="-g"
-  fi
-else
-  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
-    FFLAGS="-O2"
-  else
-    FFLAGS=
-  fi
-fi
-
-if test $ac_compiler_gnu = yes; then
-  G77=yes
-else
-  G77=
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-      ac_ext=f
-ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
-ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_f77_compiler_gnu
-
-if test -z "$F77" || test "X$F77" = "Xno"; then
-  _lt_disable_F77=yes
-fi
-
-archive_cmds_need_lc_F77=no
-allow_undefined_flag_F77=
-always_export_symbols_F77=no
-archive_expsym_cmds_F77=
-export_dynamic_flag_spec_F77=
-hardcode_direct_F77=no
-hardcode_direct_absolute_F77=no
-hardcode_libdir_flag_spec_F77=
-hardcode_libdir_separator_F77=
-hardcode_minus_L_F77=no
-hardcode_automatic_F77=no
-inherit_rpath_F77=no
-module_cmds_F77=
-module_expsym_cmds_F77=
-link_all_deplibs_F77=unknown
-old_archive_cmds_F77=$old_archive_cmds
-reload_flag_F77=$reload_flag
-reload_cmds_F77=$reload_cmds
-no_undefined_flag_F77=
-whole_archive_flag_spec_F77=
-enable_shared_with_static_runtimes_F77=no
-
-# Source file extension for f77 test sources.
-ac_ext=f
-
-# Object file extension for compiled f77 test sources.
-objext=o
-objext_F77=$objext
-
-# No sense in running all these tests if we already determined that
-# the F77 compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_F77" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-  # save warnings/boilerplate of simple test code
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  lt_save_CFLAGS=$CFLAGS
-  CC=${F77-"f77"}
-  CFLAGS=$FFLAGS
-  compiler=$CC
-  compiler_F77=$CC
-  for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-
-  GCC=$G77
-  if test -n "$compiler"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[4-9]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-    GCC_F77="$G77"
-    LD_F77="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    lt_prog_compiler_wl_F77=
-lt_prog_compiler_pic_F77=
-lt_prog_compiler_static_F77=
-
-
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl_F77='-Wl,'
-    lt_prog_compiler_static_F77='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_F77='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic_F77='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic_F77='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static_F77=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_F77='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared_F77=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_F77='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic_F77=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      lt_prog_compiler_pic_F77='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      lt_prog_compiler_wl_F77='-Xlinker '
-      if test -n "$lt_prog_compiler_pic_F77"; then
-        lt_prog_compiler_pic_F77="-Xcompiler $lt_prog_compiler_pic_F77"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_F77='-Bstatic'
-      else
-	lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_F77='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static_F77='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='-KPIC'
-	lt_prog_compiler_static_F77='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='-fPIC'
-	lt_prog_compiler_static_F77='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='--shared'
-	lt_prog_compiler_static_F77='--static'
-	;;
-      nagfor*)
-	# NAG Fortran compiler
-	lt_prog_compiler_wl_F77='-Wl,-Wl,,'
-	lt_prog_compiler_pic_F77='-PIC'
-	lt_prog_compiler_static_F77='-Bstatic'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='-fpic'
-	lt_prog_compiler_static_F77='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl_F77='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static_F77='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='-qpic'
-	lt_prog_compiler_static_F77='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic_F77='-KPIC'
-	  lt_prog_compiler_static_F77='-Bstatic'
-	  lt_prog_compiler_wl_F77=''
-	  ;;
-	*Sun\ F* | *Sun*Fortran*)
-	  lt_prog_compiler_pic_F77='-KPIC'
-	  lt_prog_compiler_static_F77='-Bstatic'
-	  lt_prog_compiler_wl_F77='-Qoption ld '
-	  ;;
-	*Sun\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic_F77='-KPIC'
-	  lt_prog_compiler_static_F77='-Bstatic'
-	  lt_prog_compiler_wl_F77='-Wl,'
-	  ;;
-        *Intel*\ [CF]*Compiler*)
-	  lt_prog_compiler_wl_F77='-Wl,'
-	  lt_prog_compiler_pic_F77='-fPIC'
-	  lt_prog_compiler_static_F77='-static'
-	  ;;
-	*Portland\ Group*)
-	  lt_prog_compiler_wl_F77='-Wl,'
-	  lt_prog_compiler_pic_F77='-fpic'
-	  lt_prog_compiler_static_F77='-Bstatic'
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_F77='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static_F77='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static_F77='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-	lt_prog_compiler_wl_F77='-Qoption ld ';;
-      *)
-	lt_prog_compiler_wl_F77='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl_F77='-Qoption ld '
-      lt_prog_compiler_pic_F77='-PIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	lt_prog_compiler_pic_F77='-Kconform_pic'
-	lt_prog_compiler_static_F77='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      lt_prog_compiler_can_build_shared_F77=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic_F77='-pic'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared_F77=no
-      ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic_F77=
-    ;;
-  *)
-    lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77@&t@"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_F77=$lt_prog_compiler_pic_F77
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_F77" >&5
-$as_echo "$lt_cv_prog_compiler_pic_F77" >&6; }
-lt_prog_compiler_pic_F77=$lt_cv_prog_compiler_pic_F77
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic_F77"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works_F77=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_F77@&t@"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works_F77=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_F77" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works_F77" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works_F77" = xyes; then
-    case $lt_prog_compiler_pic_F77 in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
-     esac
-else
-    lt_prog_compiler_pic_F77=
-     lt_prog_compiler_can_build_shared_F77=no
-fi
-
-fi
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works_F77=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works_F77=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works_F77=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_F77" >&5
-$as_echo "$lt_cv_prog_compiler_static_works_F77" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then
-    :
-else
-    lt_prog_compiler_static_F77=
-fi
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_F77=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_F77=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_F77" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; }
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_F77=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_F77=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_F77" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  runpath_var=
-  allow_undefined_flag_F77=
-  always_export_symbols_F77=no
-  archive_cmds_F77=
-  archive_expsym_cmds_F77=
-  compiler_needs_object_F77=no
-  enable_shared_with_static_runtimes_F77=no
-  export_dynamic_flag_spec_F77=
-  export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic_F77=no
-  hardcode_direct_F77=no
-  hardcode_direct_absolute_F77=no
-  hardcode_libdir_flag_spec_F77=
-  hardcode_libdir_separator_F77=
-  hardcode_minus_L_F77=no
-  hardcode_shlibpath_var_F77=unsupported
-  inherit_rpath_F77=no
-  link_all_deplibs_F77=unknown
-  module_cmds_F77=
-  module_expsym_cmds_F77=
-  old_archive_from_new_cmds_F77=
-  old_archive_from_expsyms_cmds_F77=
-  thread_safe_flag_spec_F77=
-  whole_archive_flag_spec_F77=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms_F77=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms_F77='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  esac
-
-  ld_shlibs_F77=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
-    case $host_os in
-      aix*)
-	# The AIX port of GNU ld has always aspired to compatibility
-	# with the native linker.  However, as the warning in the GNU ld
-	# block says, versions before 2.19.5* couldn't really create working
-	# shared libraries, regardless of the interface used.
-	case `$LD -v 2>&1` in
-	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
-	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
-	  *)
-	    lt_use_gnu_ld_interface=yes
-	    ;;
-	esac
-	;;
-      *)
-	lt_use_gnu_ld_interface=yes
-	;;
-    esac
-  fi
-
-  if test "$lt_use_gnu_ld_interface" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec_F77='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      whole_archive_flag_spec_F77=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	ld_shlibs_F77=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds_F77=''
-        ;;
-      m68k)
-            archive_cmds_F77='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec_F77='-L$libdir'
-            hardcode_minus_L_F77=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	allow_undefined_flag_F77=unsupported
-	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      export_dynamic_flag_spec_F77='${wl}--export-all-symbols'
-      allow_undefined_flag_F77=unsupported
-      always_export_symbols_F77=no
-      enable_shared_with_static_runtimes_F77=yes
-      export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms_F77='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-
-    haiku*)
-      archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      link_all_deplibs_F77=yes
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct_F77=no
-      hardcode_shlibpath_var_F77=no
-      hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec_F77='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=' $pic_flag'
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95* | pgfortran*)
-					# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  whole_archive_flag_spec_F77=
-	  tmp_sharedflag='--shared' ;;
-	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	nvcc*)	# Cuda Compiler Driver 2.2
-	  whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object_F77=yes
-	  ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object_F77=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          archive_expsym_cmds_F77='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf* | bgf* | bgxlf* | mpixlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  whole_archive_flag_spec_F77='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-	  archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    archive_expsym_cmds_F77='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        ld_shlibs_F77=no
-      fi
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	ld_shlibs_F77=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-	ld_shlibs_F77=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-	    archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    ld_shlibs_F77=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-    esac
-
-    if test "$ld_shlibs_F77" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec_F77=
-      export_dynamic_flag_spec_F77=
-      whole_archive_flag_spec_F77=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag_F77=unsupported
-      always_export_symbols_F77=yes
-      archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L_F77=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	hardcode_direct_F77=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	# Also, AIX nm treats weak defined symbols like other global
-	# defined symbols, whereas GNU nm marks them as "W".
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds_F77=''
-      hardcode_direct_F77=yes
-      hardcode_direct_absolute_F77=yes
-      hardcode_libdir_separator_F77=':'
-      link_all_deplibs_F77=yes
-      file_list_spec_F77='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[012]|aix4.[012].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  hardcode_direct_F77=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  hardcode_minus_L_F77=yes
-	  hardcode_libdir_flag_spec_F77='-L$libdir'
-	  hardcode_libdir_separator_F77=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      export_dynamic_flag_spec_F77='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols_F77=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	allow_undefined_flag_F77='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_f77_try_link "$LINENO"; then :
-  
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__F77=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__F77"; then
-    lt_cv_aix_libpath__F77=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__F77"; then
-    lt_cv_aix_libpath__F77="/usr/lib:/lib"
-  fi
-  
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__F77
-fi
-
-        hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds_F77='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
-	  allow_undefined_flag_F77="-z nodefs"
-	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_f77_try_link "$LINENO"; then :
-  
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__F77=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__F77"; then
-    lt_cv_aix_libpath__F77=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__F77"; then
-    lt_cv_aix_libpath__F77="/usr/lib:/lib"
-  fi
-  
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__F77
-fi
-
-	 hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag_F77=' ${wl}-bernotok'
-	  allow_undefined_flag_F77=' ${wl}-berok'
-	  if test "$with_gnu_ld" = yes; then
-	    # We only use this code for GNU lds that support --whole-archive.
-	    whole_archive_flag_spec_F77='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	  else
-	    # Exported symbols can be pulled into shared objects from archives
-	    whole_archive_flag_spec_F77='$convenience'
-	  fi
-	  archive_cmds_need_lc_F77=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds_F77=''
-        ;;
-      m68k)
-            archive_cmds_F77='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec_F77='-L$libdir'
-            hardcode_minus_L_F77=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec_F77=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-	# Native MSVC
-	hardcode_libdir_flag_spec_F77=' '
-	allow_undefined_flag_F77=unsupported
-	always_export_symbols_F77=yes
-	file_list_spec_F77='@'
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds_F77='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	  else
-	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	  fi~
-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	  linknames='
-	# The linker will not automatically build a static lib if we build a DLL.
-	# _LT_TAGVAR(old_archive_from_new_cmds, F77)='true'
-	enable_shared_with_static_runtimes_F77=yes
-	exclude_expsyms_F77='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-	export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-	# Don't use ranlib
-	old_postinstall_cmds_F77='chmod 644 $oldlib'
-	postlink_cmds_F77='lt_outputfile="@OUTPUT@"~
-	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-	  case $lt_outputfile in
-	    *.exe|*.EXE) ;;
-	    *)
-	      lt_outputfile="$lt_outputfile.exe"
-	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-	      ;;
-	  esac~
-	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	    $RM "$lt_outputfile.manifest";
-	  fi'
-	;;
-      *)
-	# Assume MSVC wrapper
-	hardcode_libdir_flag_spec_F77=' '
-	allow_undefined_flag_F77=unsupported
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-	# The linker will automatically build a .lib file if we build a DLL.
-	old_archive_from_new_cmds_F77='true'
-	# FIXME: Should let the user specify the lib program.
-	old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs'
-	enable_shared_with_static_runtimes_F77=yes
-	;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-      
-  
-  archive_cmds_need_lc_F77=no
-  hardcode_direct_F77=no
-  hardcode_automatic_F77=yes
-  hardcode_shlibpath_var_F77=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec_F77='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-    compiler_needs_object_F77=yes
-  else
-    whole_archive_flag_spec_F77=''
-  fi
-  link_all_deplibs_F77=yes
-  allow_undefined_flag_F77="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds_F77="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds_F77="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds_F77="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-    
-  else
-  ld_shlibs_F77=no
-  fi
-
-      ;;
-
-    dgux*)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_F77=yes
-      hardcode_minus_L_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds_F77='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	archive_cmds_F77='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
-      hardcode_direct_F77=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L_F77=yes
-      export_dynamic_flag_spec_F77='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	archive_cmds_F77='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_F77=:
-	hardcode_direct_F77=yes
-	hardcode_direct_absolute_F77=yes
-	export_dynamic_flag_spec_F77='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	hardcode_minus_L_F77=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_F77='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds_F77='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_F77=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  hardcode_direct_F77=no
-	  hardcode_shlibpath_var_F77=no
-	  ;;
-	*)
-	  hardcode_direct_F77=yes
-	  hardcode_direct_absolute_F77=yes
-	  export_dynamic_flag_spec_F77='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L_F77=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-	# This should be the same for all languages, so no per-tag cache variable.
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_LDFLAGS="$LDFLAGS"
-	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-	   cat > conftest.$ac_ext <<_ACEOF
-
-      subroutine foo
-      end
-_ACEOF
-if ac_fn_f77_try_link "$LINENO"; then :
-  lt_cv_irix_exported_symbol=yes
-else
-  lt_cv_irix_exported_symbol=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-           LDFLAGS="$save_LDFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-	if test "$lt_cv_irix_exported_symbol" = yes; then
-          archive_expsym_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-	fi
-      else
-	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc_F77='no'
-      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
-      inherit_rpath_F77=yes
-      link_all_deplibs_F77=yes
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    newsos6)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_F77=yes
-      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	hardcode_direct_F77=yes
-	hardcode_shlibpath_var_F77=no
-	hardcode_direct_absolute_F77=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec_F77='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec_F77='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_minus_L_F77=yes
-      allow_undefined_flag_F77=unsupported
-      archive_cmds_F77='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	allow_undefined_flag_F77=' -expect_unresolved \*'
-	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc_F77='no'
-      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_F77='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      else
-	allow_undefined_flag_F77=' -expect_unresolved \*'
-	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	hardcode_libdir_flag_spec_F77='-rpath $libdir'
-      fi
-      archive_cmds_need_lc_F77='no'
-      hardcode_libdir_separator_F77=:
-      ;;
-
-    solaris*)
-      no_undefined_flag_F77=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds_F77='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  archive_expsym_cmds_F77='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  archive_cmds_F77='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_F77='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_shlibpath_var_F77=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      link_all_deplibs_F77=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_direct_F77=yes
-      hardcode_minus_L_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_F77=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  reload_cmds_F77='$CC -r -o $output$reload_objs'
-	  hardcode_direct_F77=no
-        ;;
-	motorola)
-	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var_F77=no
-      export_dynamic_flag_spec_F77='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	hardcode_shlibpath_var_F77=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	ld_shlibs_F77=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag_F77='${wl}-z,text'
-      archive_cmds_need_lc_F77=no
-      hardcode_shlibpath_var_F77=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag_F77='${wl}-z,text'
-      allow_undefined_flag_F77='${wl}-z,nodefs'
-      archive_cmds_need_lc_F77=no
-      hardcode_shlibpath_var_F77=no
-      hardcode_libdir_flag_spec_F77='${wl}-R,$libdir'
-      hardcode_libdir_separator_F77=':'
-      link_all_deplibs_F77=yes
-      export_dynamic_flag_spec_F77='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    *)
-      ld_shlibs_F77=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	export_dynamic_flag_spec_F77='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_F77" >&5
-$as_echo "$ld_shlibs_F77" >&6; }
-test "$ld_shlibs_F77" = no && can_build_shared=no
-
-with_gnu_ld_F77=$with_gnu_ld
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc_F77" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc_F77=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds_F77 in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$lt_prog_compiler_wl_F77
-	  pic_flag=$lt_prog_compiler_pic_F77
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag_F77
-	  allow_undefined_flag_F77=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_F77 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds_F77 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc_F77=no
-	  else
-	    lt_cv_archive_cmds_need_lc_F77=yes
-	  fi
-	  allow_undefined_flag_F77=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-	
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_F77" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc_F77" >&6; }
-      archive_cmds_need_lc_F77=$lt_cv_archive_cmds_need_lc_F77
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux # correct to gnu/linux during the next big refactor
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_F77\"; \
-	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_F77\""
-    cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_f77_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-    
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action_F77=
-if test -n "$hardcode_libdir_flag_spec_F77" ||
-   test -n "$runpath_var_F77" ||
-   test "X$hardcode_automatic_F77" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct_F77" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
-     test "$hardcode_minus_L_F77" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action_F77=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action_F77=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_F77=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_F77" >&5
-$as_echo "$hardcode_action_F77" >&6; }
-
-if test "$hardcode_action_F77" = relink ||
-   test "$inherit_rpath_F77" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-    
-
-
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC="$lt_save_CC"
-  CFLAGS="$lt_save_CFLAGS"
-fi # test "$_lt_disable_F77" != yes
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
- 
-ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in pgf90 xlf90 gfortran f90 ifort
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$FC"; then
-  ac_cv_prog_FC="$FC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_FC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-FC=$ac_cv_prog_FC
-if test -n "$FC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FC" >&5
-$as_echo "$FC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$FC" && break
-  done
-fi
-if test -z "$FC"; then
-  ac_ct_FC=$FC
-  for ac_prog in pgf90 xlf90 gfortran f90 ifort
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_FC"; then
-  ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_FC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_FC=$ac_cv_prog_ac_ct_FC
-if test -n "$ac_ct_FC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FC" >&5
-$as_echo "$ac_ct_FC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_FC" && break
-done
-
-  if test "x$ac_ct_FC" = x; then
-    FC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    FC=$ac_ct_FC
-  fi
-fi
-
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-rm -f a.out
-
-# If we don't use `.F' as extension, the preprocessor is not run on the
-# input file.  (Note that this only needs to work for GNU compilers.)
-ac_save_ext=$ac_ext
-ac_ext=F
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran compiler" >&5
-$as_echo_n "checking whether we are using the GNU Fortran compiler... " >&6; }
-if ${ac_cv_fc_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-#ifndef __GNUC__
-       choke me
-#endif
-
-      end
-_ACEOF
-if ac_fn_fc_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_fc_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_compiler_gnu" >&5
-$as_echo "$ac_cv_fc_compiler_gnu" >&6; }
-ac_ext=$ac_save_ext
-ac_test_FCFLAGS=${FCFLAGS+set}
-ac_save_FCFLAGS=$FCFLAGS
-FCFLAGS=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $FC accepts -g" >&5
-$as_echo_n "checking whether $FC accepts -g... " >&6; }
-if ${ac_cv_prog_fc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  FCFLAGS=-g
-cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_fc_try_compile "$LINENO"; then :
-  ac_cv_prog_fc_g=yes
-else
-  ac_cv_prog_fc_g=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_g" >&5
-$as_echo "$ac_cv_prog_fc_g" >&6; }
-if test "$ac_test_FCFLAGS" = set; then
-  FCFLAGS=$ac_save_FCFLAGS
-elif test $ac_cv_prog_fc_g = yes; then
-  if test "x$ac_cv_fc_compiler_gnu" = xyes; then
-    FCFLAGS="-g -O2"
-  else
-    FCFLAGS="-g"
-  fi
-else
-  if test "x$ac_cv_fc_compiler_gnu" = xyes; then
-    FCFLAGS="-O2"
-  else
-    FCFLAGS=
-  fi
-fi
-
-if test $ac_compiler_gnu = yes; then
-  GFC=yes
-else
-  GFC=
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-func_stripname_cnf ()
-{
-  case ${2} in
-  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-  esac
-} # func_stripname_cnf
-
-
-      ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-
-if test -z "$FC" || test "X$FC" = "Xno"; then
-  _lt_disable_FC=yes
-fi
-
-archive_cmds_need_lc_FC=no
-allow_undefined_flag_FC=
-always_export_symbols_FC=no
-archive_expsym_cmds_FC=
-export_dynamic_flag_spec_FC=
-hardcode_direct_FC=no
-hardcode_direct_absolute_FC=no
-hardcode_libdir_flag_spec_FC=
-hardcode_libdir_separator_FC=
-hardcode_minus_L_FC=no
-hardcode_automatic_FC=no
-inherit_rpath_FC=no
-module_cmds_FC=
-module_expsym_cmds_FC=
-link_all_deplibs_FC=unknown
-old_archive_cmds_FC=$old_archive_cmds
-reload_flag_FC=$reload_flag
-reload_cmds_FC=$reload_cmds
-no_undefined_flag_FC=
-whole_archive_flag_spec_FC=
-enable_shared_with_static_runtimes_FC=no
-
-# Source file extension for fc test sources.
-ac_ext=${ac_fc_srcext-f}
-
-# Object file extension for compiled fc test sources.
-objext=o
-objext_FC=$objext
-
-# No sense in running all these tests if we already determined that
-# the FC compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_FC" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-  # save warnings/boilerplate of simple test code
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  lt_save_CFLAGS=$CFLAGS
-  CC=${FC-"f95"}
-  CFLAGS=$FCFLAGS
-  compiler=$CC
-  GCC=$ac_cv_fc_compiler_gnu
-
-  compiler_FC=$CC
-  for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-
-
-  if test -n "$compiler"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[4-9]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-    GCC_FC="$ac_cv_fc_compiler_gnu"
-    LD_FC="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    # Dependencies to place before and after the object being linked:
-predep_objects_FC=
-postdep_objects_FC=
-predeps_FC=
-postdeps_FC=
-compiler_lib_search_path_FC=
-
-cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer a
-      a=0
-      return
-      end
-_LT_EOF
-
-
-_lt_libdeps_save_CFLAGS=$CFLAGS
-case "$CC $CFLAGS " in #(
-*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
-*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
-*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
-esac
-
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  for p in `eval "$output_verbose_link_cmd"`; do
-    case ${prev}${p} in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test $p = "-L" ||
-          test $p = "-R"; then
-	 prev=$p
-	 continue
-       fi
-
-       # Expand the sysroot to ease extracting the directories later.
-       if test -z "$prev"; then
-         case $p in
-         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
-         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
-         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
-         esac
-       fi
-       case $p in
-       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
-       esac
-       if test "$pre_test_object_deps_done" = no; then
-	 case ${prev} in
-	 -L | -R)
-	   # Internal compiler library paths should come after those
-	   # provided the user.  The postdeps already come after the
-	   # user supplied libs so there is no need to process them.
-	   if test -z "$compiler_lib_search_path_FC"; then
-	     compiler_lib_search_path_FC="${prev}${p}"
-	   else
-	     compiler_lib_search_path_FC="${compiler_lib_search_path_FC} ${prev}${p}"
-	   fi
-	   ;;
-	 # The "-l" case would never come before the object being
-	 # linked, so don't bother handling this case.
-	 esac
-       else
-	 if test -z "$postdeps_FC"; then
-	   postdeps_FC="${prev}${p}"
-	 else
-	   postdeps_FC="${postdeps_FC} ${prev}${p}"
-	 fi
-       fi
-       prev=
-       ;;
-
-    *.lto.$objext) ;; # Ignore GCC LTO objects
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-	 pre_test_object_deps_done=yes
-	 continue
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 if test -z "$predep_objects_FC"; then
-	   predep_objects_FC="$p"
-	 else
-	   predep_objects_FC="$predep_objects_FC $p"
-	 fi
-       else
-	 if test -z "$postdep_objects_FC"; then
-	   postdep_objects_FC="$p"
-	 else
-	   postdep_objects_FC="$postdep_objects_FC $p"
-	 fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling FC test program"
-fi
-
-$RM -f confest.$objext
-CFLAGS=$_lt_libdeps_save_CFLAGS
-
-# PORTME: override above test on systems where it is broken
-
-
-case " $postdeps_FC " in
-*" -lc "*) archive_cmds_need_lc_FC=no ;;
-esac
- compiler_lib_search_dirs_FC=
-if test -n "${compiler_lib_search_path_FC}"; then
- compiler_lib_search_dirs_FC=`echo " ${compiler_lib_search_path_FC}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
-fi
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    lt_prog_compiler_wl_FC=
-lt_prog_compiler_pic_FC=
-lt_prog_compiler_static_FC=
-
-
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl_FC='-Wl,'
-    lt_prog_compiler_static_FC='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_FC='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic_FC='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            lt_prog_compiler_pic_FC='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic_FC='-DDLL_EXPORT'
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic_FC='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static_FC=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_FC='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared_FC=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_FC='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic_FC=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      lt_prog_compiler_pic_FC='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      lt_prog_compiler_wl_FC='-Xlinker '
-      if test -n "$lt_prog_compiler_pic_FC"; then
-        lt_prog_compiler_pic_FC="-Xcompiler $lt_prog_compiler_pic_FC"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_FC='-Bstatic'
-      else
-	lt_prog_compiler_static_FC='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic_FC='-DDLL_EXPORT'
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_FC='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static_FC='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static_FC='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='-KPIC'
-	lt_prog_compiler_static_FC='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='-fPIC'
-	lt_prog_compiler_static_FC='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='--shared'
-	lt_prog_compiler_static_FC='--static'
-	;;
-      nagfor*)
-	# NAG Fortran compiler
-	lt_prog_compiler_wl_FC='-Wl,-Wl,,'
-	lt_prog_compiler_pic_FC='-PIC'
-	lt_prog_compiler_static_FC='-Bstatic'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='-fpic'
-	lt_prog_compiler_static_FC='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl_FC='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static_FC='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='-qpic'
-	lt_prog_compiler_static_FC='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic_FC='-KPIC'
-	  lt_prog_compiler_static_FC='-Bstatic'
-	  lt_prog_compiler_wl_FC=''
-	  ;;
-	*Sun\ F* | *Sun*Fortran*)
-	  lt_prog_compiler_pic_FC='-KPIC'
-	  lt_prog_compiler_static_FC='-Bstatic'
-	  lt_prog_compiler_wl_FC='-Qoption ld '
-	  ;;
-	*Sun\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic_FC='-KPIC'
-	  lt_prog_compiler_static_FC='-Bstatic'
-	  lt_prog_compiler_wl_FC='-Wl,'
-	  ;;
-        *Intel*\ [CF]*Compiler*)
-	  lt_prog_compiler_wl_FC='-Wl,'
-	  lt_prog_compiler_pic_FC='-fPIC'
-	  lt_prog_compiler_static_FC='-static'
-	  ;;
-	*Portland\ Group*)
-	  lt_prog_compiler_wl_FC='-Wl,'
-	  lt_prog_compiler_pic_FC='-fpic'
-	  lt_prog_compiler_static_FC='-Bstatic'
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic_FC='-KPIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_FC='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static_FC='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static_FC='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic_FC='-KPIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-	lt_prog_compiler_wl_FC='-Qoption ld ';;
-      *)
-	lt_prog_compiler_wl_FC='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl_FC='-Qoption ld '
-      lt_prog_compiler_pic_FC='-PIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      lt_prog_compiler_pic_FC='-KPIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	lt_prog_compiler_pic_FC='-Kconform_pic'
-	lt_prog_compiler_static_FC='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      lt_prog_compiler_pic_FC='-KPIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      lt_prog_compiler_can_build_shared_FC=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic_FC='-pic'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared_FC=no
-      ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic_FC=
-    ;;
-  *)
-    lt_prog_compiler_pic_FC="$lt_prog_compiler_pic_FC@&t@"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_FC=$lt_prog_compiler_pic_FC
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_FC" >&5
-$as_echo "$lt_cv_prog_compiler_pic_FC" >&6; }
-lt_prog_compiler_pic_FC=$lt_cv_prog_compiler_pic_FC
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic_FC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_FC works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_FC works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works_FC=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_FC@&t@"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works_FC=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_FC" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works_FC" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works_FC" = xyes; then
-    case $lt_prog_compiler_pic_FC in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic_FC=" $lt_prog_compiler_pic_FC" ;;
-     esac
-else
-    lt_prog_compiler_pic_FC=
-     lt_prog_compiler_can_build_shared_FC=no
-fi
-
-fi
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl_FC eval lt_tmp_static_flag=\"$lt_prog_compiler_static_FC\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works_FC=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works_FC=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works_FC=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_FC" >&5
-$as_echo "$lt_cv_prog_compiler_static_works_FC" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works_FC" = xyes; then
-    :
-else
-    lt_prog_compiler_static_FC=
-fi
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_FC=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_FC=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_FC" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_FC" >&6; }
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_FC=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_FC=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_FC" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_FC" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_FC" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  runpath_var=
-  allow_undefined_flag_FC=
-  always_export_symbols_FC=no
-  archive_cmds_FC=
-  archive_expsym_cmds_FC=
-  compiler_needs_object_FC=no
-  enable_shared_with_static_runtimes_FC=no
-  export_dynamic_flag_spec_FC=
-  export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic_FC=no
-  hardcode_direct_FC=no
-  hardcode_direct_absolute_FC=no
-  hardcode_libdir_flag_spec_FC=
-  hardcode_libdir_separator_FC=
-  hardcode_minus_L_FC=no
-  hardcode_shlibpath_var_FC=unsupported
-  inherit_rpath_FC=no
-  link_all_deplibs_FC=unknown
-  module_cmds_FC=
-  module_expsym_cmds_FC=
-  old_archive_from_new_cmds_FC=
-  old_archive_from_expsyms_cmds_FC=
-  thread_safe_flag_spec_FC=
-  whole_archive_flag_spec_FC=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms_FC=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms_FC='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  esac
-
-  ld_shlibs_FC=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
-    case $host_os in
-      aix*)
-	# The AIX port of GNU ld has always aspired to compatibility
-	# with the native linker.  However, as the warning in the GNU ld
-	# block says, versions before 2.19.5* couldn't really create working
-	# shared libraries, regardless of the interface used.
-	case `$LD -v 2>&1` in
-	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
-	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
-	  *)
-	    lt_use_gnu_ld_interface=yes
-	    ;;
-	esac
-	;;
-      *)
-	lt_use_gnu_ld_interface=yes
-	;;
-    esac
-  fi
-
-  if test "$lt_use_gnu_ld_interface" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec_FC='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec_FC="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      whole_archive_flag_spec_FC=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	ld_shlibs_FC=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds_FC=''
-        ;;
-      m68k)
-            archive_cmds_FC='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec_FC='-L$libdir'
-            hardcode_minus_L_FC=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	allow_undefined_flag_FC=unsupported
-	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds_FC='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, FC) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      export_dynamic_flag_spec_FC='${wl}--export-all-symbols'
-      allow_undefined_flag_FC=unsupported
-      always_export_symbols_FC=no
-      enable_shared_with_static_runtimes_FC=yes
-      export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms_FC='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds_FC='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-
-    haiku*)
-      archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      link_all_deplibs_FC=yes
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct_FC=no
-      hardcode_shlibpath_var_FC=no
-      hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec_FC='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds_FC='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=' $pic_flag'
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95* | pgfortran*)
-					# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  whole_archive_flag_spec_FC=
-	  tmp_sharedflag='--shared' ;;
-	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	nvcc*)	# Cuda Compiler Driver 2.2
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object_FC=yes
-	  ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object_FC=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	archive_cmds_FC='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf* | bgf* | bgxlf* | mpixlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  whole_archive_flag_spec_FC='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-	  archive_cmds_FC='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        ld_shlibs_FC=no
-      fi
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds_FC='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	ld_shlibs_FC=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-	ld_shlibs_FC=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-	    archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    ld_shlibs_FC=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds_FC='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-    esac
-
-    if test "$ld_shlibs_FC" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec_FC=
-      export_dynamic_flag_spec_FC=
-      whole_archive_flag_spec_FC=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag_FC=unsupported
-      always_export_symbols_FC=yes
-      archive_expsym_cmds_FC='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L_FC=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	hardcode_direct_FC=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	# Also, AIX nm treats weak defined symbols like other global
-	# defined symbols, whereas GNU nm marks them as "W".
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  export_symbols_cmds_FC='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  export_symbols_cmds_FC='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds_FC=''
-      hardcode_direct_FC=yes
-      hardcode_direct_absolute_FC=yes
-      hardcode_libdir_separator_FC=':'
-      link_all_deplibs_FC=yes
-      file_list_spec_FC='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[012]|aix4.[012].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  hardcode_direct_FC=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  hardcode_minus_L_FC=yes
-	  hardcode_libdir_flag_spec_FC='-L$libdir'
-	  hardcode_libdir_separator_FC=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      export_dynamic_flag_spec_FC='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols_FC=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	allow_undefined_flag_FC='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_fc_try_link "$LINENO"; then :
-  
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__FC=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__FC"; then
-    lt_cv_aix_libpath__FC=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__FC"; then
-    lt_cv_aix_libpath__FC="/usr/lib:/lib"
-  fi
-  
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__FC
-fi
-
-        hardcode_libdir_flag_spec_FC='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds_FC='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec_FC='${wl}-R $libdir:/usr/lib:/lib'
-	  allow_undefined_flag_FC="-z nodefs"
-	  archive_expsym_cmds_FC="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_fc_try_link "$LINENO"; then :
-  
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__FC=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__FC"; then
-    lt_cv_aix_libpath__FC=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__FC"; then
-    lt_cv_aix_libpath__FC="/usr/lib:/lib"
-  fi
-  
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__FC
-fi
-
-	 hardcode_libdir_flag_spec_FC='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag_FC=' ${wl}-bernotok'
-	  allow_undefined_flag_FC=' ${wl}-berok'
-	  if test "$with_gnu_ld" = yes; then
-	    # We only use this code for GNU lds that support --whole-archive.
-	    whole_archive_flag_spec_FC='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	  else
-	    # Exported symbols can be pulled into shared objects from archives
-	    whole_archive_flag_spec_FC='$convenience'
-	  fi
-	  archive_cmds_need_lc_FC=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds_FC="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds_FC=''
-        ;;
-      m68k)
-            archive_cmds_FC='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec_FC='-L$libdir'
-            hardcode_minus_L_FC=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec_FC=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-	# Native MSVC
-	hardcode_libdir_flag_spec_FC=' '
-	allow_undefined_flag_FC=unsupported
-	always_export_symbols_FC=yes
-	file_list_spec_FC='@'
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds_FC='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	archive_expsym_cmds_FC='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	  else
-	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	  fi~
-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	  linknames='
-	# The linker will not automatically build a static lib if we build a DLL.
-	# _LT_TAGVAR(old_archive_from_new_cmds, FC)='true'
-	enable_shared_with_static_runtimes_FC=yes
-	exclude_expsyms_FC='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-	export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-	# Don't use ranlib
-	old_postinstall_cmds_FC='chmod 644 $oldlib'
-	postlink_cmds_FC='lt_outputfile="@OUTPUT@"~
-	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-	  case $lt_outputfile in
-	    *.exe|*.EXE) ;;
-	    *)
-	      lt_outputfile="$lt_outputfile.exe"
-	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-	      ;;
-	  esac~
-	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	    $RM "$lt_outputfile.manifest";
-	  fi'
-	;;
-      *)
-	# Assume MSVC wrapper
-	hardcode_libdir_flag_spec_FC=' '
-	allow_undefined_flag_FC=unsupported
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds_FC='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-	# The linker will automatically build a .lib file if we build a DLL.
-	old_archive_from_new_cmds_FC='true'
-	# FIXME: Should let the user specify the lib program.
-	old_archive_cmds_FC='lib -OUT:$oldlib$oldobjs$old_deplibs'
-	enable_shared_with_static_runtimes_FC=yes
-	;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-      
-  
-  archive_cmds_need_lc_FC=no
-  hardcode_direct_FC=no
-  hardcode_automatic_FC=yes
-  hardcode_shlibpath_var_FC=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec_FC='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-    compiler_needs_object_FC=yes
-  else
-    whole_archive_flag_spec_FC=''
-  fi
-  link_all_deplibs_FC=yes
-  allow_undefined_flag_FC="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds_FC="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds_FC="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds_FC="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds_FC="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-    
-  else
-  ld_shlibs_FC=no
-  fi
-
-      ;;
-
-    dgux*)
-      archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec_FC='-R$libdir'
-      hardcode_direct_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_FC=yes
-      hardcode_minus_L_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec_FC='-R$libdir'
-      hardcode_direct_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	archive_cmds_FC='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator_FC=:
-      hardcode_direct_FC=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L_FC=yes
-      export_dynamic_flag_spec_FC='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	archive_cmds_FC='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_FC='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_FC=:
-	hardcode_direct_FC=yes
-	hardcode_direct_absolute_FC=yes
-	export_dynamic_flag_spec_FC='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	hardcode_minus_L_FC=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_FC='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_FC='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds_FC='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_FC=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  hardcode_direct_FC=no
-	  hardcode_shlibpath_var_FC=no
-	  ;;
-	*)
-	  hardcode_direct_FC=yes
-	  hardcode_direct_absolute_FC=yes
-	  export_dynamic_flag_spec_FC='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L_FC=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-	# This should be the same for all languages, so no per-tag cache variable.
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_LDFLAGS="$LDFLAGS"
-	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-	   cat > conftest.$ac_ext <<_ACEOF
-
-      subroutine foo
-      end
-_ACEOF
-if ac_fn_fc_try_link "$LINENO"; then :
-  lt_cv_irix_exported_symbol=yes
-else
-  lt_cv_irix_exported_symbol=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-           LDFLAGS="$save_LDFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-	if test "$lt_cv_irix_exported_symbol" = yes; then
-          archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-	fi
-      else
-	archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc_FC='no'
-      hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_FC=:
-      inherit_rpath_FC=yes
-      link_all_deplibs_FC=yes
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	archive_cmds_FC='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec_FC='-R$libdir'
-      hardcode_direct_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    newsos6)
-      archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_FC=yes
-      hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_FC=:
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	hardcode_direct_FC=yes
-	hardcode_shlibpath_var_FC=no
-	hardcode_direct_absolute_FC=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec_FC='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec_FC='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      hardcode_minus_L_FC=yes
-      allow_undefined_flag_FC=unsupported
-      archive_cmds_FC='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds_FC='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag_FC=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	allow_undefined_flag_FC=' -expect_unresolved \*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc_FC='no'
-      hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_FC=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag_FC=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-      else
-	allow_undefined_flag_FC=' -expect_unresolved \*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_FC='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	hardcode_libdir_flag_spec_FC='-rpath $libdir'
-      fi
-      archive_cmds_need_lc_FC='no'
-      hardcode_libdir_separator_FC=:
-      ;;
-
-    solaris*)
-      no_undefined_flag_FC=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds_FC='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  archive_cmds_FC='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  archive_cmds_FC='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      hardcode_libdir_flag_spec_FC='-R$libdir'
-      hardcode_shlibpath_var_FC=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec_FC='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  whole_archive_flag_spec_FC='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      link_all_deplibs_FC=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	archive_cmds_FC='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_FC='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      hardcode_direct_FC=yes
-      hardcode_minus_L_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_FC=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  archive_cmds_FC='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  reload_cmds_FC='$CC -r -o $output$reload_objs'
-	  hardcode_direct_FC=no
-        ;;
-	motorola)
-	  archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_FC=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var_FC=no
-      export_dynamic_flag_spec_FC='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	hardcode_shlibpath_var_FC=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	ld_shlibs_FC=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag_FC='${wl}-z,text'
-      archive_cmds_need_lc_FC=no
-      hardcode_shlibpath_var_FC=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_FC='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag_FC='${wl}-z,text'
-      allow_undefined_flag_FC='${wl}-z,nodefs'
-      archive_cmds_need_lc_FC=no
-      hardcode_shlibpath_var_FC=no
-      hardcode_libdir_flag_spec_FC='${wl}-R,$libdir'
-      hardcode_libdir_separator_FC=':'
-      link_all_deplibs_FC=yes
-      export_dynamic_flag_spec_FC='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_FC='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    *)
-      ld_shlibs_FC=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	export_dynamic_flag_spec_FC='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_FC" >&5
-$as_echo "$ld_shlibs_FC" >&6; }
-test "$ld_shlibs_FC" = no && can_build_shared=no
-
-with_gnu_ld_FC=$with_gnu_ld
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc_FC" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc_FC=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds_FC in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$lt_prog_compiler_wl_FC
-	  pic_flag=$lt_prog_compiler_pic_FC
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag_FC
-	  allow_undefined_flag_FC=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc_FC=no
-	  else
-	    lt_cv_archive_cmds_need_lc_FC=yes
-	  fi
-	  allow_undefined_flag_FC=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-	
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_FC" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc_FC" >&6; }
-      archive_cmds_need_lc_FC=$lt_cv_archive_cmds_need_lc_FC
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux # correct to gnu/linux during the next big refactor
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_FC\"; \
-	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_FC\""
-    cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_fc_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-    
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action_FC=
-if test -n "$hardcode_libdir_flag_spec_FC" ||
-   test -n "$runpath_var_FC" ||
-   test "X$hardcode_automatic_FC" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct_FC" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, FC)" != no &&
-     test "$hardcode_minus_L_FC" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action_FC=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action_FC=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_FC=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_FC" >&5
-$as_echo "$hardcode_action_FC" >&6; }
-
-if test "$hardcode_action_FC" = relink ||
-   test "$inherit_rpath_FC" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-    
-
-
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-fi # test "$_lt_disable_FC" != yes
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
- 
-
-@%:@ Check whether --enable-pthread was given.
-if test "${enable_pthread+set}" = set; then :
-  enableval=$enable_pthread; pthreads=${enableval} 
-else
-  pthreads=no
-
-fi
-
-if test "x${pthreads}" = xyes; then
-   GRIB_PTHREADS=1
-else
-   GRIB_PTHREADS=0
-fi
-
-if test $GRIB_PTHREADS -eq 1
-then
-   
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if pthreads available" >&5
-$as_echo_n "checking if pthreads available... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  OLDLIBS=$LIBS
-  LIBS="$LIBS -lpthread"
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    
-       #include <pthread.h>
-       #include <stdio.h>
-
-       #define NUMTHRDS 4
-       static int count;
-       
-       static pthread_once_t once  = PTHREAD_ONCE_INIT;
-       static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-       static pthread_t callThd[NUMTHRDS];
-       
-       static void init() {
-         pthread_mutexattr_t attr;
-       
-         pthread_mutexattr_init(&attr);
-         pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
-         pthread_mutex_init(&mutex,&attr);
-         pthread_mutexattr_destroy(&attr);
-       }
-       
-       void* increment(void* arg);
-       
-       int main(int argc,char** argv){
-         int i;
-         void* status=0;
-         pthread_attr_t attr;
-         pthread_attr_init(&attr);
-         count=0;
-         pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
-         for (i=0;i<NUMTHRDS;i++) {
-           pthread_create( &callThd[i], &attr, increment, (void *)i);
-         }
-         pthread_attr_destroy(&attr);
-         for(i=0; i<NUMTHRDS; i++)
-             pthread_join( callThd[i], &status);
-         return 0;
-       }
-       
-       void* increment(void* arg) {
-         int i=(int)arg;
-         pthread_once(&once,&init);
-         pthread_mutex_lock(&mutex);
-         count+=i;
-         pthread_mutex_unlock(&mutex);
-		 pthread_exit((void*) 0);
-       }
-    
-  
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  GRIB_PTHREADS=1
-else
-  GRIB_PTHREADS=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $GRIB_PTHREADS = 0
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	LIBS=$OLDLIBS
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-   
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Linux pthreads available" >&5
-$as_echo_n "checking if Linux pthreads available... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  OLDLIBS=$LIBS
-  LIBS="$LIBS -lpthread"
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    
-       #include <pthread.h>
-       #include <stdio.h>
-
-       #define NUMTHRDS 4
-       static int count;
-	   #define PTHREAD_MUTEX_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
-	   extern int pthread_mutexattr_settype(pthread_mutexattr_t* attr,int type);
-       
-       static pthread_once_t once  = PTHREAD_ONCE_INIT;
-       static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-       static pthread_t callThd[NUMTHRDS];
-       
-       static void init() {
-         pthread_mutexattr_t attr;
-		 pthread_mutexattr_init(&attr);
-		 pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
-         pthread_mutex_init(&mutex,&attr);
-         pthread_mutexattr_destroy(&attr);
-       }
-       
-       void* increment(void* arg);
-       
-       int main(int argc,char** argv){
-         int i;
-         void* status=0;
-         pthread_attr_t attr;
-         pthread_attr_init(&attr);
-         count=0;
-         pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
-         for (i=0;i<NUMTHRDS;i++) {
-           pthread_create( &callThd[i], &attr, increment, (void *)i);
-         }
-         pthread_attr_destroy(&attr);
-         for(i=0; i<NUMTHRDS; i++)
-             pthread_join( callThd[i], &status);
-         return 0;
-       }
-       
-       void* increment(void* arg) {
-         int i=(int)arg;
-         pthread_once(&once,&init);
-         pthread_mutex_lock(&mutex);
-         count+=i;
-         pthread_mutex_unlock(&mutex);
-		 pthread_exit((void*) 0);
-       }
-    
-  
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  GRIB_LINUX_PTHREADS=1
-   GRIB_PTHREADS=1
-else
-  GRIB_LINUX_PTHREADS=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $GRIB_LINUX_PTHREADS = 0
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	LIBS=$OLDLIBS
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-else
-   GRIB_LINUX_PTHREADS=0
-fi
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define GRIB_PTHREADS $GRIB_PTHREADS
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define GRIB_LINUX_PTHREADS $GRIB_LINUX_PTHREADS
-_ACEOF
-
-
-@%:@ Check whether --enable-ibmpower67_opt was given.
-if test "${enable_ibmpower67_opt+set}" = set; then :
-  enableval=$enable_ibmpower67_opt; ibmpower67_opts=${enableval} 
-else
-  ibmpower67_opts=no
-
-fi
-
-if test "x${ibmpower67_opts}" = xyes; then
-   GRIB_IBMPOWER67_OPT=1
-else
-   GRIB_IBMPOWER67_OPT=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-@%:@define GRIB_IBMPOWER67_OPT $GRIB_IBMPOWER67_OPT
-_ACEOF
-
-
-
-ac_cv_prog_f90_uppercase_mod=no
-
-ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if Fortran 90 compiler capitalizes .mod filenames" >&5
-$as_echo_n "checking if Fortran 90 compiler capitalizes .mod filenames... " >&6; }
-cat <<EOF >conftest.f90
-    module conftest
-    end module conftest
-EOF
-
-ac_try='$FC $FCFLAGS -c conftest.f90 >&5'
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -f CONFTEST.mod ; then
-   ac_cv_prog_f90_uppercase_mod=yes
-   rm -f CONFTEST.mod
-else
-   ac_cv_prog_f90_uppercase_mod=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f90_uppercase_mod" >&5
-$as_echo "$ac_cv_prog_f90_uppercase_mod" >&6; }
-#rm -f conftest*
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
- if test "x$ac_cv_prog_f90_uppercase_mod" = xyes; then
-  UPPER_CASE_MOD_TRUE=
-  UPPER_CASE_MOD_FALSE='#'
-else
-  UPPER_CASE_MOD_TRUE='#'
-  UPPER_CASE_MOD_FALSE=
-fi
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if double and float are ieee big endian" >&5
-$as_echo_n "checking if double and float are ieee big endian... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    
-     int compare(unsigned char* a,unsigned char* b) {
-       while(*a != 0) if (*(b++)!=*(a++)) return 1;
-       return 0;
-     }
-     int main(int argc,char** argv) {
-       unsigned char dc[]={0x30,0x61,0xDE,0x80,0x93,0x67,0xCC,0xD9,0};
-       double da=1.23456789e-75;
-       unsigned char* ca;
-     
-       unsigned char fc[]={0x05,0x83,0x48,0x22,0};
-       float fa=1.23456789e-35;
-     
-       if (sizeof(double)!=8) return 1;
-     
-       ca=(unsigned char*)&da;
-       if (compare(dc,ca)) return 1;
-
-       if (sizeof(float)!=4) return 1;
-
-       ca=(unsigned char*)&fa;
-       if (compare(fc,ca)) return 1;
-     
-       return 0;
-     }
-    
-  
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  IS_IEEE_BE=1
-else
-  IS_IEEE_BE=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $IS_IEEE_BE = 0
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define IEEE_BE $IS_IEEE_BE
-_ACEOF
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if double and float are ieee little endian" >&5
-$as_echo_n "checking if double and float are ieee little endian... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    
-     int compare(unsigned char* a,unsigned char* b) {
-       while(*a != 0) if (*(b++)!=*(a++)) return 1;
-       return 0;
-     }
-     int main(int argc,char** argv) {
-       unsigned char dc[]={0xD9,0xCC,0x67,0x93,0x80,0xDE,0x61,0x30,0};
-       double da=1.23456789e-75;
-       unsigned char* ca;
-     
-       unsigned char fc[]={0x22,0x48,0x83,0x05,0};
-       float fa=1.23456789e-35;
-     
-       if (sizeof(double)!=8) return 1;
-     
-       ca=(unsigned char*)&da;
-       if (compare(dc,ca)) return 1;
-
-       if (sizeof(float)!=4) return 1;
-
-       ca=(unsigned char*)&fa;
-       if (compare(fc,ca)) return 1;
-     
-       return 0;
-     }
-    
-  
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  IS_IEEE_LE=1
-else
-  IS_IEEE_LE=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $IS_IEEE_LE = 0
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define IEEE_LE $IS_IEEE_LE
-_ACEOF
-
-
-@%:@ Check whether --enable-ieee-native was given.
-if test "${enable_ieee_native+set}" = set; then :
-  enableval=$enable_ieee_native; without_ieee=1
-else
-  without_ieee=0
-fi
-
-
-if test $without_ieee -eq 1
-then
-
-cat >>confdefs.h <<_ACEOF
-@%:@define IEEE_LE 0
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define IEEE_BE 0
-_ACEOF
-
-fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Big Endian" >&5
-$as_echo_n "checking if Big Endian... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    
-      int main(int argc,char** argv){
-        long one= 1;
-        return !(*((char *)(&one)));
-      }
-    
-  
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  IS_BIG_ENDIAN=0
-else
-  IS_BIG_ENDIAN=1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $IS_BIG_ENDIAN = 0
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define IS_BIG_ENDIAN $IS_BIG_ENDIAN
-_ACEOF
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if inline in C" >&5
-$as_echo_n "checking if inline in C... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    
-	  inline int x(int a) {return a;}
-      int main(int argc,char** argv){
-	    int a=1;
-        return x(a);
-      }
-    
-  
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  HAS_INLINE=inline
-else
-  HAS_INLINE=
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  if test x$HAS_INLINE = "x"
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define GRIB_INLINE $HAS_INLINE
-_ACEOF
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if bus error on unaligned pointers" >&5
-$as_echo_n "checking if bus error on unaligned pointers... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    
-	  void foo(char* p) {long x=*((long*)p)+1;}
-	  int main(int argc,char** argv) {char* p="xxxxxxxxx";foo(++p);return 0;}
-    
-  
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  MEM_ALIGN=0
-else
-  MEM_ALIGN=1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $MEM_ALIGN = "0"
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define GRIB_MEM_ALIGN $MEM_ALIGN
-_ACEOF
-
-
-ac_fn_c_check_func "$LINENO" "posix_memalign" "ac_cv_func_posix_memalign"
-if test "x$ac_cv_func_posix_memalign" = xyes; then :
-  
-cat >>confdefs.h <<_ACEOF
-@%:@define POSIX_MEMALIGN 1
-_ACEOF
-
-fi
-
-
-@%:@ Check whether --enable-align-memory was given.
-if test "${enable_align_memory+set}" = set; then :
-  enableval=$enable_align_memory; 
-cat >>confdefs.h <<_ACEOF
-@%:@define GRIB_MEM_ALIGN 1
-_ACEOF
-
-fi
-
-
-@%:@ Check whether --enable-vector was given.
-if test "${enable_vector+set}" = set; then :
-  enableval=$enable_vector; vectorise=${enableval}
-else
-  vectorise=no
-fi
-
-if test "x${vectorise}" = xyes
-then
-   vectorise=1
-else
-   vectorise=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-@%:@define VECTOR $vectorise
-_ACEOF
- 
-
-@%:@ Check whether --enable-memory-management was given.
-if test "${enable_memory_management+set}" = set; then :
-  enableval=$enable_memory_management; 
-cat >>confdefs.h <<_ACEOF
-@%:@define MANAGE_MEM 1
-_ACEOF
- 
-else
-  
-cat >>confdefs.h <<_ACEOF
-@%:@define MANAGE_MEM 0
-_ACEOF
- 
-	 
-fi
-
-
-DEVEL_RULES='' 
-@%:@ Check whether --enable-development was given.
-if test "${enable_development+set}" = set; then :
-  enableval=$enable_development; GRIB_DEVEL=${enableval} 
-else
-  GRIB_DEVEL=no
-
-fi
-
-if test "x${GRIB_DEVEL}" = xyes
-then
-   GRIB_DEVEL=1
-   DEVEL_RULES='extrules.am'
-else
-   GRIB_DEVEL=0
-   DEVEL_RULES='dummy.am'
-fi
-
-
-
- if test $GRIB_DEVEL -eq 1; then
-  WITH_MARS_TESTS_TRUE=
-  WITH_MARS_TESTS_FALSE='#'
-else
-  WITH_MARS_TESTS_TRUE='#'
-  WITH_MARS_TESTS_FALSE=
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5
-$as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_source+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  while :; do
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h> /* for off_t */
-     #include <stdio.h>
-int
-main ()
-{
-int (*fp) (FILE *, off_t, int) = fseeko;
-     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_sys_largefile_source=no; break
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@define _LARGEFILE_SOURCE 1
-#include <sys/types.h> /* for off_t */
-     #include <stdio.h>
-int
-main ()
-{
-int (*fp) (FILE *, off_t, int) = fseeko;
-     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_sys_largefile_source=1; break
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  ac_cv_sys_largefile_source=unknown
-  break
-done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5
-$as_echo "$ac_cv_sys_largefile_source" >&6; }
-case $ac_cv_sys_largefile_source in #(
-  no | unknown) ;;
-  *) 
-cat >>confdefs.h <<_ACEOF
-@%:@define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source
-_ACEOF
-;;
-esac
-rm -rf conftest*
-
-# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
-# in glibc 2.1.3, but that breaks too many other things.
-# If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
-if test $ac_cv_sys_largefile_source != unknown; then
-  
-$as_echo "@%:@define HAVE_FSEEKO 1" >>confdefs.h
-
-fi
-
-CREATE_H=''
-if test x"$ac_cv_func_fseeko" != xyes ; then
-	CREATE_H='./create_h.sh 1'
-else
-	CREATE_H='./create_h.sh 0'
-fi 
-
-@%:@ Check whether --enable-largefile was given.
-if test "${enable_largefile+set}" = set; then :
-  enableval=$enable_largefile; 
-fi
-
-if test "$enable_largefile" != no; then
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
-$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_sys_largefile_CC=no
-     if test "$GCC" != yes; then
-       ac_save_CC=$CC
-       while :; do
-	 # IRIX 6.2 and later do not support large files by default,
-	 # so use the C compiler's -n32 option if that helps.
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-	 if ac_fn_c_try_compile "$LINENO"; then :
-  break
-fi
-rm -f core conftest.err conftest.$ac_objext
-	 CC="$CC -n32"
-	 if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_largefile_CC=' -n32'; break
-fi
-rm -f core conftest.err conftest.$ac_objext
-	 break
-       done
-       CC=$ac_save_CC
-       rm -f conftest.$ac_ext
-    fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
-$as_echo "$ac_cv_sys_largefile_CC" >&6; }
-  if test "$ac_cv_sys_largefile_CC" != no; then
-    CC=$CC$ac_cv_sys_largefile_CC
-  fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
-if ${ac_cv_sys_file_offset_bits+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  while :; do
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_file_offset_bits=no; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@define _FILE_OFFSET_BITS 64
-@%:@include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_file_offset_bits=64; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  ac_cv_sys_file_offset_bits=unknown
-  break
-done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
-$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
-case $ac_cv_sys_file_offset_bits in #(
-  no | unknown) ;;
-  *) 
-cat >>confdefs.h <<_ACEOF
-@%:@define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
-_ACEOF
-;;
-esac
-rm -rf conftest*
-  if test $ac_cv_sys_file_offset_bits = unknown; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
-$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
-if ${ac_cv_sys_large_files+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  while :; do
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_large_files=no; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@define _LARGE_FILES 1
-@%:@include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_large_files=1; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  ac_cv_sys_large_files=unknown
-  break
-done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
-$as_echo "$ac_cv_sys_large_files" >&6; }
-case $ac_cv_sys_large_files in #(
-  no | unknown) ;;
-  *) 
-cat >>confdefs.h <<_ACEOF
-@%:@define _LARGE_FILES $ac_cv_sys_large_files
-_ACEOF
-;;
-esac
-rm -rf conftest*
-  fi
-
-  
-fi
-
-
-
-
-RPM_HOST_CPU=${host_cpu}
-RPM_HOST_VENDOR=${host_vendor}
-RPM_HOST_OS=${host_os}
-RPM_CONFIGURE_ARGS=${ac_configure_args}
-
-
-
-
-
-@%:@ Check whether --with-rpm-release was given.
-if test "${with_rpm_release+set}" = set; then :
-  withval=$with_rpm_release; RPM_RELEASE="$withval"
-else
-  RPM_RELEASE=1
-fi
-
-
-
-ECCODES_SAMPLES_PATH=$samples_files_path
-ECCODES_DEFINITION_PATH=$definition_files_path
-
-
-
-
-@%:@ Check whether --enable-fortran was given.
-if test "${enable_fortran+set}" = set; then :
-  enableval=$enable_fortran; with_fortran=${enableval}
-else
-  with_fortran=yes
-fi
-
-
-if test "x${with_fortran}" = xyes; then
-   without_fortran=0
-else
-   without_fortran=1
-fi
-
-if test "x$FC" = "x"
-then
-  without_fortran=1
-fi
-
-ac_cv_prog_f90_uppercase_mod=no
-
-ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if Fortran 90 compiler capitalizes .mod filenames" >&5
-$as_echo_n "checking if Fortran 90 compiler capitalizes .mod filenames... " >&6; }
-cat <<EOF >conftest.f90
-    module conftest
-    end module conftest
-EOF
-
-ac_try='$FC $FCFLAGS -c conftest.f90 >&5'
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -f CONFTEST.mod ; then
-   ac_cv_prog_f90_uppercase_mod=yes
-   rm -f CONFTEST.mod
-else
-   ac_cv_prog_f90_uppercase_mod=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f90_uppercase_mod" >&5
-$as_echo "$ac_cv_prog_f90_uppercase_mod" >&6; }
-#rm -f conftest*
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
- if test "x$ac_cv_prog_f90_uppercase_mod" = xyes; then
-  UPPER_CASE_MOD_TRUE=
-  UPPER_CASE_MOD_FALSE='#'
-else
-  UPPER_CASE_MOD_TRUE='#'
-  UPPER_CASE_MOD_FALSE=
-fi
-
-
-
-ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if Fortran 90 can resolve debug symbols in modules" >&5
-$as_echo_n "checking if Fortran 90 can resolve debug symbols in modules... " >&6; }
-cat <<EOF >conftest-module.f90
-    module conftest
-    end module conftest
-EOF
-cat <<EOF >conftest.f90
-	program f90usemodule
-	use CONFTEST
-	end program f90usemodule
-EOF
-
-ac_compile_module='$FC -g -c conftest-module.f90 >&5'
-ac_link_program='$FC -g -o conftest -I. conftest.f90 >&5'
-
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile_module\""; } >&5
-  (eval $ac_compile_module) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link_program\""; } >&5
-  (eval $ac_link_program) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -f conftest ; then
-   ac_cv_prog_f90_debug_in_module=yes
-   rm -f conftest
-else
-   ac_cv_prog_f90_debug_in_module=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f90_debug_in_module" >&5
-$as_echo "$ac_cv_prog_f90_debug_in_module" >&6; }
-#rm -f conftest*
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
- if test "x$ac_cv_prog_f90_debug_in_module" = xyes; then
-  DEBUG_IN_MOD_TRUE=
-  DEBUG_IN_MOD_FALSE='#'
-else
-  DEBUG_IN_MOD_TRUE='#'
-  DEBUG_IN_MOD_FALSE=
-fi
-
-
-if test $without_fortran -ne 1 && test "x$ac_cv_prog_f90_debug_in_module" != xyes \
-		&& test "x$enable_shared" = xyes && test "x$FCFLAGS" = "x-g"
-then
-	without_fortran=1
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  
-
-  Your Fortran compiler ($FC) does not support linking to dynamic library modules when debug is enabled. This is a known 
-problem with Portland compilers versions 7 and 8, for example. Possible workarounds are:
-
-  - Use a Portland compiler version 10 or higher or a different compiler.
-  - Disable shared libraries (e.g. configure --disable-shared)
-  - Disable debug (e.g. configure FCFLAGS=\"\")
-
-  Compilation of the Fortran module has been disabled
-
-" >&5
-$as_echo "$as_me: WARNING:  
-
-  Your Fortran compiler ($FC) does not support linking to dynamic library modules when debug is enabled. This is a known 
-problem with Portland compilers versions 7 and 8, for example. Possible workarounds are:
-
-  - Use a Portland compiler version 10 or higher or a different compiler.
-  - Disable shared libraries (e.g. configure --disable-shared)
-  - Disable debug (e.g. configure FCFLAGS=\"\")
-
-  Compilation of the Fortran module has been disabled
-
-" >&2;}
-fi
-
-
-if test $without_fortran -ne 1
-then
-  FORTRAN_MOD=fortran
-  
-  F90_CHECK="examples/F90"
-  
-
-    
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking fortran 90 modules inclusion flag" >&5
-$as_echo_n "checking fortran 90 modules inclusion flag... " >&6; }
-if ${ax_cv_f90_modflag+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-i=0
-while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do
-  i=`expr $i + 1`
-done
-mkdir tmpdir_$i
-cd tmpdir_$i
-cat > conftest.$ac_ext <<_ACEOF
-
-!234567
-      module conftest_module
-      contains
-      subroutine conftest_routine
-      write(*,'(a)') 'gotcha!'
-      end subroutine conftest_routine
-      end module conftest_module
-  
-_ACEOF
-if ac_fn_fc_try_compile "$LINENO"; then :
-  
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-cd ..
-ax_cv_f90_modflag="not found"
-for ax_flag in "-I" "-M" "-p"; do
-  if test "$ax_cv_f90_modflag" = "not found" ; then
-    ax_save_FCFLAGS="$FCFLAGS"
-    FCFLAGS="$ax_save_FCFLAGS ${ax_flag}tmpdir_$i"
-    cat > conftest.$ac_ext <<_ACEOF
-
-!234567
-      program conftest_program
-      use conftest_module
-      call conftest_routine
-      end program conftest_program
-      
-_ACEOF
-if ac_fn_fc_try_compile "$LINENO"; then :
-  ax_cv_f90_modflag="$ax_flag"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-    FCFLAGS="$ax_save_FCFLAGS"
-  fi
-done
-rm -fr tmpdir_$i
-#if test "$ax_cv_f90_modflag" = "not found" ; then
-#  AC_MSG_ERROR([unable to find compiler flag for modules inclusion])
-#fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_f90_modflag" >&5
-$as_echo "$ax_cv_f90_modflag" >&6; }
-  if test "$ax_cv_f90_modflag" = "not found" ; then
-    as_fn_error $? "unable to find compiler flag for modules inclusion" "$LINENO" 5
-  fi
-  F90_MODULE_FLAG=$ax_cv_f90_modflag
-  
-fi
-
-
-@%:@ Check whether --with-ifs-samples was given.
-if test "${with_ifs_samples+set}" = set; then :
-  withval=$with_ifs_samples; ifs_samples=$withval
-else
-  ifs_samples='none'
-fi
-
-IFS_SAMPLES_DIR=""
-
-if test $ifs_samples != 'none'
-then
-	IFS_SAMPLES_DIR=$ifs_samples
-else
-	IFS_SAMPLES_DIR=$ifs_samples_files_path
-fi
-
-
-
-
-@%:@ Check whether --with-emos was given.
-if test "${with_emos+set}" = set; then :
-  withval=$with_emos; emos=$withval
-else
-  emos='none'
-fi
-
-
-EMOS_LIB=""
-if test "$emos" != 'none'
-then
-  EMOS_LIB=$emos
-  
-$as_echo "@%:@define HAVE_LIBEMOS 1" >>confdefs.h
-
-fi
-
-
-
-@%:@ Check whether --with-fortranlibdir was given.
-if test "${with_fortranlibdir+set}" = set; then :
-  withval=$with_fortranlibdir; fortranlibdir=$withval
-else
-  fortranlibdir=''
-fi
-
-
-
-@%:@ Check whether --with-fortranlibs was given.
-if test "${with_fortranlibs+set}" = set; then :
-  withval=$with_fortranlibs; fortranlibs=$withval
-else
-  fortranlibs='none'
-fi
-
-
-if test "$fortranlibs" != 'none'
-then
-   EMOS_LIB="$emos -L$fortranlibdir $fortranlibs -Wl,-rpath $fortranlibdir"
-fi
-
-
-
-@%:@ Check whether --enable-timer was given.
-if test "${enable_timer+set}" = set; then :
-  enableval=$enable_timer; with_timer=${enableval}
-else
-  with_timer=no
-fi
-
-if test "x${with_timer}" = xyes; then
-  
-$as_echo "@%:@define GRIB_TIMER 1" >>confdefs.h
-
-else
-  
-$as_echo "@%:@define GRIB_TIMER 0" >>confdefs.h
-
-fi
-
-
-@%:@ Check whether --enable-omp-packing was given.
-if test "${enable_omp_packing+set}" = set; then :
-  enableval=$enable_omp_packing; with_omp=${enableval}
-else
-  with_omp=no
-fi
-
-if test "x${with_omp}" = xyes; then
-  
-$as_echo "@%:@define OMP_PACKING 1" >>confdefs.h
-
-else
-  
-$as_echo "@%:@define OMP_PACKING 0" >>confdefs.h
-
-fi
-
-
-@%:@ Check whether --with-netcdf was given.
-if test "${with_netcdf+set}" = set; then :
-  withval=$with_netcdf; netcdf_dir=$withval
-else
-  netcdf_dir='none'
-fi
-
-with_netcdf=0
-if test $netcdf_dir != 'none'
-then
-	with_netcdf=1
-	CFLAGS="$CFLAGS -I${netcdf_dir}/include"
-    NETCDF_LDFLAGS="-L${netcdf_dir}/lib -lnetcdf"
-    ORIG_LDFLAGS=$LDFLAGS
-    LDFLAGS="$LDFLAGS $NETCDF_LDFLAGS"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nc_open in -lnetcdf" >&5
-$as_echo_n "checking for nc_open in -lnetcdf... " >&6; }
-if ${ac_cv_lib_netcdf_nc_open+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lnetcdf  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char nc_open ();
-int
-main ()
-{
-return nc_open ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_netcdf_nc_open=yes
-else
-  ac_cv_lib_netcdf_nc_open=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_netcdf_nc_open" >&5
-$as_echo "$ac_cv_lib_netcdf_nc_open" >&6; }
-if test "x$ac_cv_lib_netcdf_nc_open" = xyes; then :
-  netcdf_ok=1
-else
-  netcdf_ok=0
-fi
-
-    LDFLAGS=$ORIG_LDFLAGS
-	if test $netcdf_ok -eq 0
-	then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: 
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-  CONFIGURATION ERROR: netcdf test not passed.                                                               
-  Please check that the path to the netcdf library given in --with-netcdf=PATH_TO_NETCDF
-  is correct. Otherwise build without netcdf.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-	  " >&5
-$as_echo "$as_me: 
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-  CONFIGURATION ERROR: netcdf test not passed.                                                               
-  Please check that the path to the netcdf library given in --with-netcdf=PATH_TO_NETCDF
-  is correct. Otherwise build without netcdf.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-	  " >&6;}
-	  test 0 -eq 1
-	  exit 
-    fi
-    
-    
-$as_echo "@%:@define HAVE_NETCDF 1" >>confdefs.h
-
-fi
-
-@%:@ Check whether --enable-jpeg was given.
-if test "${enable_jpeg+set}" = set; then :
-  enableval=$enable_jpeg; without_jpeg=1
-else
-  without_jpeg=0
-fi
-
-
-
-@%:@ Check whether --with-jasper was given.
-if test "${with_jasper+set}" = set; then :
-  withval=$with_jasper; jasper_dir=$withval
-else
-  jasper_dir='system'
-fi
-
-
-JASPER_DIR=$jasper_dir
-
-
-if test $jasper_dir != 'system'
-then
-  CFLAGS="$CFLAGS -I${jasper_dir}/include"
-  LDFLAGS="$LDFLAGS -L${jasper_dir}/lib"
-fi
-
-
-@%:@ Check whether --with-openjpeg was given.
-if test "${with_openjpeg+set}" = set; then :
-  withval=$with_openjpeg; openjpeg_dir=$withval
-else
-  openjpeg_dir='system'
-fi
-
-
-OPENJPEG_DIR=$openjpeg_dir
-
-
-if test $openjpeg_dir != 'system'
-then
-  CFLAGS="$CFLAGS -I${openjpeg_dir}/include"
-  LDFLAGS="$LDFLAGS -L${openjpeg_dir}/lib"
-fi
-
-if test $without_jpeg -ne 1
-then
-    
-$as_echo "@%:@define HAVE_JPEG 1" >>confdefs.h
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jas_stream_memopen in -ljasper" >&5
-$as_echo_n "checking for jas_stream_memopen in -ljasper... " >&6; }
-if ${ac_cv_lib_jasper_jas_stream_memopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ljasper  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char jas_stream_memopen ();
-int
-main ()
-{
-return jas_stream_memopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_jasper_jas_stream_memopen=yes
-else
-  ac_cv_lib_jasper_jas_stream_memopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_jasper_jas_stream_memopen" >&5
-$as_echo "$ac_cv_lib_jasper_jas_stream_memopen" >&6; }
-if test "x$ac_cv_lib_jasper_jas_stream_memopen" = xyes; then :
-  jasper_ok=1
-else
-  jasper_ok=0
-fi
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for opj_image_create in -lopenjpeg" >&5
-$as_echo_n "checking for opj_image_create in -lopenjpeg... " >&6; }
-if ${ac_cv_lib_openjpeg_opj_image_create+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lopenjpeg  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char opj_image_create ();
-int
-main ()
-{
-return opj_image_create ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_openjpeg_opj_image_create=yes
-else
-  ac_cv_lib_openjpeg_opj_image_create=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_openjpeg_opj_image_create" >&5
-$as_echo "$ac_cv_lib_openjpeg_opj_image_create" >&6; }
-if test "x$ac_cv_lib_openjpeg_opj_image_create" = xyes; then :
-  openjpeg_ok=1
-else
-  openjpeg_ok=0
-fi
-
-
-    jpeg_ok=0
-
-    # prefer openjpeg over jasper
-	if test $openjpeg_ok -eq 1
-	then
-	  jpeg_ok=1
-      LIB_OPENJPEG='-lopenjpeg -lm'
-      LIBS="$LIB_OPENJPEG $LIBS"
-      
-$as_echo "@%:@define HAVE_LIBOPENJPEG 1" >>confdefs.h
-
-      
-    elif test $jasper_ok -eq 1
-    then
-	  jpeg_ok=1
-      LIB_JASPER='-ljasper'
-      LIBS="$LIB_JASPER $LIBS"
-      
-$as_echo "@%:@define HAVE_LIBJASPER 1" >>confdefs.h
-
-      
-	fi
-
-	if test $jpeg_ok -eq 0
-	then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: 
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-  CONFIGURATION ERROR: jpeg library (jasper or openjpeg) required.                                                               
-  jpeg library installation is not working or missing.                                 
-
-  To fix this problem you have the following options.                                  
-  1) Install without jpeg support enabled (--disable-jpeg), but you will not be able to
-     decode grib2 data encoded in jpeg.
-  2) Check if you have a jpeg library installed in a path different from your system path. 
-     In this case you can provide your jpeg library installation path to the configure
-     through the options:
-        --with-jasper=\"jasper_lib_path\"
-        --with-openjpeg=\"openjpeg_lib_path\"
-  3) Download and install one of the supported jpeg libraries.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-	  " >&5
-$as_echo "$as_me: 
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-  CONFIGURATION ERROR: jpeg library (jasper or openjpeg) required.                                                               
-  jpeg library installation is not working or missing.                                 
-
-  To fix this problem you have the following options.                                  
-  1) Install without jpeg support enabled (--disable-jpeg), but you will not be able to
-     decode grib2 data encoded in jpeg.
-  2) Check if you have a jpeg library installed in a path different from your system path. 
-     In this case you can provide your jpeg library installation path to the configure
-     through the options:
-        --with-jasper=\"jasper_lib_path\"
-        --with-openjpeg=\"openjpeg_lib_path\"
-  3) Download and install one of the supported jpeg libraries.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-	  " >&6;}
-	   0 -eq 1 
-	  exit 
-    fi
-  JPEG_TEST="jpeg.sh"
-  
-fi
-
-CCSDS_TEST=""
-
-@%:@ Check whether --with-aec was given.
-if test "${with_aec+set}" = set; then :
-  withval=$with_aec; 
-else
-  with_aec=no
-fi
-
-
-if test "x$with_aec" != xno ; then
-  if test "x$with_aec" != xyes ; then
-    LDFLAGS="$LDFLAGS -L$with_aec/lib"
-    CPPFLAGS="$CPPFLAGS -I$with_aec/include"
-  fi
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for aec_encode in -laec" >&5
-$as_echo_n "checking for aec_encode in -laec... " >&6; }
-if ${ac_cv_lib_aec_aec_encode+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-laec  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char aec_encode ();
-int
-main ()
-{
-return aec_encode ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_aec_aec_encode=yes
-else
-  ac_cv_lib_aec_aec_encode=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_aec_aec_encode" >&5
-$as_echo "$ac_cv_lib_aec_aec_encode" >&6; }
-if test "x$ac_cv_lib_aec_aec_encode" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_LIBAEC 1
-_ACEOF
-
-  LIBS="-laec $LIBS"
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "aec test failed (--without-aec to disable)
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-  CCSDS_TEST="ccsds.sh"
-  LIB_AEC='-laec'
-  
-  AEC_DIR="$with_aec"
-  
-
-fi
-
-
-
-@%:@ Check whether --with-png-support was given.
-if test "${with_png_support+set}" = set; then :
-  withval=$with_png_support; with_png=1
-else
-  with_png=0
-fi
-
-
-if test $with_png -gt 0
-then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PNG " >&5
-$as_echo_n "checking for PNG ... " >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
-$as_echo "" >&6; }
-    ac_fn_c_check_header_mongrel "$LINENO" "png.h" "ac_cv_header_png_h" "$ac_includes_default"
-if test "x$ac_cv_header_png_h" = xyes; then :
-  passed=1
-else
-  passed=0
-fi
-
-
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for png_read_png in -lpng" >&5
-$as_echo_n "checking for png_read_png in -lpng... " >&6; }
-if ${ac_cv_lib_png_png_read_png+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lpng  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char png_read_png ();
-int
-main ()
-{
-return png_read_png ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_png_png_read_png=yes
-else
-  ac_cv_lib_png_png_read_png=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_png_png_read_png" >&5
-$as_echo "$ac_cv_lib_png_png_read_png" >&6; }
-if test "x$ac_cv_lib_png_png_read_png" = xyes; then :
-  passed=1
-else
-  passed=0
-fi
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if PNG support package is complete" >&5
-$as_echo_n "checking if PNG support package is complete... " >&6; }
-
-    if test $passed -gt 0
-    then
-      LIB_PNG='-lpng'
-      LIBS="$LIB_PNG $LIBS"
-      
-$as_echo "@%:@define HAVE_LIBPNG 1" >>confdefs.h
-
-      
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no -- some components failed test" >&5
-$as_echo "no -- some components failed test" >&6; }
-    fi
-fi
-
-
-#PERL_INSTALL_OPTIONS="PREFIX=$prefix INSTALLDIRS=perl"
-PERL_INSTALL_OPTIONS="LIB=$default_perl_install"
-
-@%:@ Check whether --enable-install-system-perl was given.
-if test "${enable_install_system_perl+set}" = set; then :
-  enableval=$enable_install_system_perl; enable_perl_install='yes'
-else
-  enable_perl_install='no'
-fi
-
-
-if test "$enable_perl_install" = 'yes'
-then
-    PERL_INSTALL_OPTIONS=""
-fi
-
-
-
-
-@%:@ Check whether --with-perl was given.
-if test "${with_perl+set}" = set; then :
-  withval=$with_perl; with_perl=$withval
-else
-  with_perl='no'
-fi
-
-
-if test "$with_perl" != 'no'
-then
-  if test "$with_perl" != 'yes'
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl" >&5
-$as_echo_n "checking for perl... " >&6; }
-if ${ac_cv_path_PERL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_path_PERL="$with_perl"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_PERL" >&5
-$as_echo "$ac_cv_path_PERL" >&6; };
-    PERL=$ac_cv_path_PERL
-      else
-    for ac_prog in perl perl5
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PERL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PERL in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PERL=$ac_cv_path_PERL
-if test -n "$PERL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
-$as_echo "$PERL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$PERL" && break
-done
-test -n "$PERL" || PERL="perl"
-  fi
-fi
-
-builddir=`pwd`
-
-GRIB_API_LIB="${builddir}/src/grib_api.a"
-GRIB_API_INC="${builddir}/src"
-
-@%:@ Check whether --with-perl-options was given.
-if test "${with_perl_options+set}" = set; then :
-  withval=$with_perl_options; PERL_MAKE_OPTIONS=$withval
-fi
-
-
-
-
-
- if test $with_perl != no; then
-  WITH_PERL_TRUE=
-  WITH_PERL_FALSE='#'
-else
-  WITH_PERL_TRUE='#'
-  WITH_PERL_FALSE=
-fi
-
-
-@%:@ Check whether --enable-python was given.
-if test "${enable_python+set}" = set; then :
-  enableval=$enable_python; 
-fi
-
-
-@%:@ Check whether --enable-numpy was given.
-if test "${enable_numpy+set}" = set; then :
-  enableval=$enable_numpy; 
-fi
-
-
-if test "x$enable_python" = "xyes"
-then
-      
-      
-
-  
-
-  
-        if test -n "$PYTHON"; then
-      # If the user set $PYTHON, use it and don't search something else.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 2.5" >&5
-$as_echo_n "checking whether $PYTHON version is >= 2.5... " >&6; }
-      prog="import sys
-# split strings by '.' and convert to numeric.  Append some zeros
-# because we need at least 4 digits for the hex conversion.
-# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0]
-minverhex = 0
-# xrange is not present in Python 3.0 and range returns an iterator
-for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
-sys.exit(sys.hexversion < minverhex)"
-  if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5
-   ($PYTHON -c "$prog") >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-			       as_fn_error $? "Python interpreter is too old" "$LINENO" 5
-fi
-      am_display_PYTHON=$PYTHON
-    else
-      # Otherwise, try each interpreter until we find one that satisfies
-      # VERSION.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.5" >&5
-$as_echo_n "checking for a Python interpreter with version >= 2.5... " >&6; }
-if ${am_cv_pathless_PYTHON+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  
-	for am_cv_pathless_PYTHON in python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7  python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do
-	  test "$am_cv_pathless_PYTHON" = none && break
-	  prog="import sys
-# split strings by '.' and convert to numeric.  Append some zeros
-# because we need at least 4 digits for the hex conversion.
-# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0]
-minverhex = 0
-# xrange is not present in Python 3.0 and range returns an iterator
-for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
-sys.exit(sys.hexversion < minverhex)"
-  if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5
-   ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }; then :
-  break
-fi
-	done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
-$as_echo "$am_cv_pathless_PYTHON" >&6; }
-      # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
-      if test "$am_cv_pathless_PYTHON" = none; then
-	PYTHON=:
-      else
-        # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
-set dummy $am_cv_pathless_PYTHON; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PYTHON in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PYTHON=$ac_cv_path_PYTHON
-if test -n "$PYTHON"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-      fi
-      am_display_PYTHON=$am_cv_pathless_PYTHON
-    fi
-  
-
-  if test "$PYTHON" = :; then
-      as_fn_error $? "no suitable Python interpreter found" "$LINENO" 5
-  else
-
-      
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
-$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
-if ${am_cv_python_version+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
-$as_echo "$am_cv_python_version" >&6; }
-  PYTHON_VERSION=$am_cv_python_version
-
-
-        
-  PYTHON_PREFIX='${prefix}'
-
-  PYTHON_EXEC_PREFIX='${exec_prefix}'
-
-
-    
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
-$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
-if ${am_cv_python_platform+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
-$as_echo "$am_cv_python_platform" >&6; }
-  PYTHON_PLATFORM=$am_cv_python_platform
-
-
-  # Just factor out some code duplication.
-  am_python_setup_sysconfig="\
-import sys
-# Prefer sysconfig over distutils.sysconfig, for better compatibility
-# with python 3.x.  See automake bug#10227.
-try:
-    import sysconfig
-except ImportError:
-    can_use_sysconfig = 0
-else:
-    can_use_sysconfig = 1
-# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
-# <https://github.com/pypa/virtualenv/issues/118>
-try:
-    from platform import python_implementation
-    if python_implementation() == 'CPython' and sys.version[:3] == '2.7':
-        can_use_sysconfig = 0
-except ImportError:
-    pass"
-
-  
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
-$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
-if ${am_cv_python_pythondir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$prefix" = xNONE
-     then
-       am_py_prefix=$ac_default_prefix
-     else
-       am_py_prefix=$prefix
-     fi
-     am_cv_python_pythondir=`$PYTHON -c "
-$am_python_setup_sysconfig
-if can_use_sysconfig:
-    sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
-else:
-    from distutils import sysconfig
-    sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
-sys.stdout.write(sitedir)"`
-     case $am_cv_python_pythondir in
-     $am_py_prefix*)
-       am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
-       am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
-       ;;
-     *)
-       case $am_py_prefix in
-         /usr|/System*) ;;
-         *)
-	  am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
-	  ;;
-       esac
-       ;;
-     esac
-    
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
-$as_echo "$am_cv_python_pythondir" >&6; }
-  pythondir=$am_cv_python_pythondir
-
-
-      
-  pkgpythondir=\${pythondir}/$PACKAGE
-
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
-$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
-if ${am_cv_python_pyexecdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$exec_prefix" = xNONE
-     then
-       am_py_exec_prefix=$am_py_prefix
-     else
-       am_py_exec_prefix=$exec_prefix
-     fi
-     am_cv_python_pyexecdir=`$PYTHON -c "
-$am_python_setup_sysconfig
-if can_use_sysconfig:
-    sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
-else:
-    from distutils import sysconfig
-    sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
-sys.stdout.write(sitedir)"`
-     case $am_cv_python_pyexecdir in
-     $am_py_exec_prefix*)
-       am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
-       am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
-       ;;
-     *)
-       case $am_py_exec_prefix in
-         /usr|/System*) ;;
-         *)
-	   am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
-	   ;;
-       esac
-       ;;
-     esac
-    
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
-$as_echo "$am_cv_python_pyexecdir" >&6; }
-  pyexecdir=$am_cv_python_pyexecdir
-
-
-  
-  pkgpyexecdir=\${pyexecdir}/$PACKAGE
-
-
-    
-  fi
-
-
-
-  
-  
-  
-  
-  
-
-  for ac_prog in python$PYTHON_VERSION-config python-config
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON_CONFIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PYTHON_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PYTHON_CONFIG="$PYTHON_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in `dirname $PYTHON`
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PYTHON_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PYTHON_CONFIG=$ac_cv_path_PYTHON_CONFIG
-if test -n "$PYTHON_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CONFIG" >&5
-$as_echo "$PYTHON_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$PYTHON_CONFIG" && break
-done
-test -n "$PYTHON_CONFIG" || PYTHON_CONFIG="no"
-
-  if test "$PYTHON_CONFIG" = no; then :
-  as_fn_error $? "cannot find python-config for $PYTHON." "$LINENO" 5
-fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking python include flags" >&5
-$as_echo_n "checking python include flags... " >&6; }
-  PYTHON_INCLUDES=`$PYTHON_CONFIG --includes`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_INCLUDES" >&5
-$as_echo "$PYTHON_INCLUDES" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking python link flags" >&5
-$as_echo_n "checking python link flags... " >&6; }
-  PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
-$as_echo "$PYTHON_LDFLAGS" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking python C flags" >&5
-$as_echo_n "checking python C flags... " >&6; }
-  PYTHON_CFLAGS=`$PYTHON_CONFIG --cflags`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CFLAGS" >&5
-$as_echo "$PYTHON_CFLAGS" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking python libraries" >&5
-$as_echo_n "checking python libraries... " >&6; }
-  PYTHON_LIBS=`$PYTHON_CONFIG --libs`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LIBS" >&5
-$as_echo "$PYTHON_LIBS" >&6; }
-
-  # macro that gets the include path for Python.h which is used to build
-  # the shared library corresponding to the GRIB API Python module.
-  # AX_PYTHON_DEVEL
-
-  # enable testing scripts if building with Python
-  PYTHON_CHECK='examples/python'
-  
-
-  data_handler=numpy
-  if test "x$enable_numpy" != "xno"
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether numpy is installed" >&5
-$as_echo_n "checking whether numpy is installed... " >&6; }
-
-    has_numpy=`$PYTHON -c "import numpy;print numpy" 2> /dev/null`
-    if test "x$has_numpy" = "x"
-    then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-       as_fn_error $? "NumPy is not installed. Use --disable-numpy if you want to disable Numpy from the build." "$LINENO" 5
-    else
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-       NUMPY_INCLUDE=`$PYTHON -c "import numpy;print numpy.get_include()"`
-       
-    fi
-  else
-    data_handler=array
-  fi
-
-  PYTHON_DATA_HANDLER=$data_handler
-  
-fi
-
- if test x$PYTHON != x; then
-  WITH_PYTHON_TRUE=
-  WITH_PYTHON_FALSE='#'
-else
-  WITH_PYTHON_TRUE='#'
-  WITH_PYTHON_FALSE=
-fi
-
- if test x$FORTRAN_MOD != x; then
-  WITH_FORTRAN_TRUE=
-  WITH_FORTRAN_FALSE='#'
-else
-  WITH_FORTRAN_TRUE='#'
-  WITH_FORTRAN_FALSE=
-fi
-
- if test "x$enable_shared" = xyes; then
-  CREATING_SHARED_LIBS_TRUE=
-  CREATING_SHARED_LIBS_FALSE='#'
-else
-  CREATING_SHARED_LIBS_TRUE='#'
-  CREATING_SHARED_LIBS_FALSE=
-fi
-
-
-
-
-# Extract the first word of "rm", so it can be a program name with args.
-set dummy rm; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RM+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RM"; then
-  ac_cv_prog_RM="$RM" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RM="rm"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RM=$ac_cv_prog_RM
-if test -n "$RM"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RM" >&5
-$as_echo "$RM" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AR="${ac_tool_prefix}ar"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_AR"; then
-  ac_ct_AR=$AR
-  # Extract the first word of "ar", so it can be a program name with args.
-set dummy ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AR="ar"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_AR" = x; then
-    AR="ar"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AR=$ac_ct_AR
-  fi
-else
-  AR="$ac_cv_prog_AR"
-fi
-
-
-WARN_PEDANTIC=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -pedantic -Wall" >&5
-$as_echo_n "checking whether $CC supports -pedantic -Wall... " >&6; }
-if ${grib_api_cv_prog_cc_pedantic__Wall+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_CFLAGS="$CFLAGS"
-CFLAGS="-pedantic -Wall"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  grib_api_cv_prog_cc_pedantic__Wall=yes
-else
-  grib_api_cv_prog_cc_pedantic__Wall=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-CFLAGS="$save_CFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $grib_api_cv_prog_cc_pedantic__Wall" >&5
-$as_echo "$grib_api_cv_prog_cc_pedantic__Wall" >&6; }
-if test $grib_api_cv_prog_cc_pedantic__Wall = yes; then :
-  WARN_PEDANTIC="-pedantic -Wall"
-fi
-
-
-WERROR=
-@%:@ Check whether --enable-werror-always was given.
-if test "${enable_werror_always+set}" = set; then :
-  enableval=$enable_werror_always; 
-else
-  enable_werror_always=no
-fi
-
-if test $enable_werror_always = yes; then :
-  WERROR=-Werror
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pow in -lm" >&5
-$as_echo_n "checking for pow in -lm... " >&6; }
-if ${ac_cv_lib_m_pow+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char pow ();
-int
-main ()
-{
-return pow ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_m_pow=yes
-else
-  ac_cv_lib_m_pow=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_pow" >&5
-$as_echo "$ac_cv_lib_m_pow" >&6; }
-if test "x$ac_cv_lib_m_pow" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_LIBM 1
-_ACEOF
-
-  LIBS="-lm $LIBS"
-
-fi
-
-
-ac_header_dirent=no
-for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
-  as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
-$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; }
-if eval \${$as_ac_Header+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <$ac_hdr>
-
-int
-main ()
-{
-if ((DIR *) 0)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$as_ac_Header=yes"
-else
-  eval "$as_ac_Header=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$as_ac_Header
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
-_ACEOF
-
-ac_header_dirent=$ac_hdr; break
-fi
-
-done
-# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
-if test $ac_header_dirent = dirent.h; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char opendir ();
-int
-main ()
-{
-return opendir ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' dir; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_opendir=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_opendir+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_opendir+:} false; then :
-  
-else
-  ac_cv_search_opendir=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
-ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-  
-fi
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char opendir ();
-int
-main ()
-{
-return opendir ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' x; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_opendir=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_opendir+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_opendir+:} false; then :
-  
-else
-  ac_cv_search_opendir=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
-ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-  
-fi
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-  
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-  
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-  
-$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-for ac_header in stddef.h stdlib.h string.h sys/param.h sys/time.h unistd.h math.h stdarg.h assert.h ctype.h fcntl.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- 
-fi
-
-done
-
-
-ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
-  
-else
-  
-cat >>confdefs.h <<_ACEOF
-@%:@define size_t unsigned int
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
-$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
-if ${ac_cv_header_time+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
-
-int
-main ()
-{
-if ((struct tm *) 0)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_time=yes
-else
-  ac_cv_header_time=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
-$as_echo "$ac_cv_header_time" >&6; }
-if test $ac_cv_header_time = yes; then
-  
-$as_echo "@%:@define TIME_WITH_SYS_TIME 1" >>confdefs.h
-
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5
-$as_echo_n "checking whether closedir returns void... " >&6; }
-if ${ac_cv_func_closedir_void+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ac_cv_func_closedir_void=yes
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header_dirent>
-#ifndef __cplusplus
-int closedir ();
-#endif
-
-int
-main ()
-{
-return closedir (opendir (".")) != 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_func_closedir_void=no
-else
-  ac_cv_func_closedir_void=yes
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_closedir_void" >&5
-$as_echo "$ac_cv_func_closedir_void" >&6; }
-if test $ac_cv_func_closedir_void = yes; then
-  
-$as_echo "@%:@define CLOSEDIR_VOID 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5
-$as_echo_n "checking return type of signal handlers... " >&6; }
-if ${ac_cv_type_signal+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <signal.h>
-
-int
-main ()
-{
-return *(signal (0, 0)) (0) == 1;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_type_signal=int
-else
-  ac_cv_type_signal=void
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5
-$as_echo "$ac_cv_type_signal" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-@%:@define RETSIGTYPE $ac_cv_type_signal
-_ACEOF
-
-
-for ac_func in vprintf
-do :
-  ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf"
-if test "x$ac_cv_func_vprintf" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_VPRINTF 1
-_ACEOF
- 
-ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
-if test "x$ac_cv_func__doprnt" = xyes; then :
-  
-$as_echo "@%:@define HAVE_DOPRNT 1" >>confdefs.h
-
-fi
-
-fi
-done
-
-
-for ac_func in bzero gettimeofday
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
- 
-fi
-done
-
-
-
-HOST_CPU=${host_cpu}
-HOST_VENDOR=${host_vendor}
-HOST_OS=${host_os}
-
-if test x$HOST_OS = "xlinux-gnu"
-then
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Linux distribution " >&5
-$as_echo_n "checking for Linux distribution ... " >&6; }
-
-	# This works for Fedora, RedHat and Slackware
-	for f in /etc/fedora-release /etc/redhat-release /etc/slackware-release
-	do
-		if test -f $f; then
-			distro=`cat $f`	
-			break
-		fi
-	done	
-
-	# This works in Ubuntu (11 at least)
-	if test -f /etc/lsb-release; then
-		distro=`cat /etc/lsb-release | grep DISTRIB_ID | awk -F= '{print }' `
-		distro_version=`cat /etc/lsb-release | grep DISTRIB_RELEASE | awk -F= '{print }' `
-	fi
-
-	# For SuSE
-	if test -f /etc/SuSE-release; then
-		distro=`cat /etc/SuSE-release | head -1`
-		#distro_version=`cat /etc/SuSE-release | tail -1 | awk -F= '{print }' `
-	fi
-
-	# At least Debian has this
-	if test -f /etc/issue.net -a "x$distro" = x; then
-		distro=`cat /etc/issue.net | head -1`
-	fi
-
-	# Everything else
-	if test "x$distro" = x; then
-		distro="Unknown Linux"
-	fi
-	
-	LINUX_DISTRIBUTION_NAME=$distro
-	LINUX_DISTRIBUTION_VERSION=$distro_version
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINUX_DISTRIBUTION_NAME $LINUX_DISTRIBUTION_VERSION" >&5
-$as_echo "$LINUX_DISTRIBUTION_NAME $LINUX_DISTRIBUTION_VERSION" >&6; }
-
-else
-	LINUX_DISTRIBUTION_NAME=$HOST_OS
-	LINUX_DISTRIBUTION_VERSION=""
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: OS is non-Linux UNIX $HOST_OS." >&5
-$as_echo "$as_me: OS is non-Linux UNIX $HOST_OS." >&6;}
-fi
-
-
-
-
-
-ac_config_files="$ac_config_files Makefile src/Makefile fortran/Makefile tools/Makefile data/Makefile definitions/Makefile samples/Makefile ifs_samples/grib1/Makefile ifs_samples/grib1_mlgrib2/Makefile ifs_samples/grib1_mlgrib2_ieee64/Makefile tests/Makefile examples/C/Makefile examples/F90/Makefile tigge/Makefile perl/GRIB-API/Makefile.PL perl/Makefile python/Makefile examples/python/Makefile"
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems.  If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
-  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-
-  (set) 2>&1 |
-    case $as_nl`(ac_space=' '; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes: double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \.
-      sed -n \
-	"s/'/'\\\\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-      ;; #(
-    *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-) |
-  sed '
-     /^ac_cv_env_/b end
-     t clear
-     :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-     t end
-     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-     :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
-  if test -w "$cache_file"; then
-    if test "x$cache_file" != "x/dev/null"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
-      if test ! -f "$cache_file" || test -h "$cache_file"; then
-	cat confcache >"$cache_file"
-      else
-        case $cache_file in #(
-        */* | ?:*)
-	  mv -f confcache "$cache_file"$$ &&
-	  mv -f "$cache_file"$$ "$cache_file" ;; #(
-        *)
-	  mv -f confcache "$cache_file" ;;
-	esac
-      fi
-    fi
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
-  fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-DEFS=-DHAVE_CONFIG_H
-
-ac_libobjs=
-ac_ltlibobjs=
-U=
-for ac_i in : $LIB@&t at OBJS; do test "x$ac_i" = x: && continue
-  # 1. Remove the extension, and $U if already installed.
-  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
-  #    will be set to the directory where LIBOBJS objects are built.
-  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIB@&t at OBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
-$as_echo_n "checking that generated files are newer than configure... " >&6; }
-   if test -n "$am_sleep_pid"; then
-     # Hide warnings about reused PIDs.
-     wait $am_sleep_pid 2>/dev/null
-   fi
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
-$as_echo "done" >&6; }
-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  as_fn_error $? "conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
- if test -n "$EXEEXT"; then
-  am__EXEEXT_TRUE=
-  am__EXEEXT_FALSE='#'
-else
-  am__EXEEXT_TRUE='#'
-  am__EXEEXT_FALSE=
-fi
-
-if test -z "${UPPER_CASE_MOD_TRUE}" && test -z "${UPPER_CASE_MOD_FALSE}"; then
-  as_fn_error $? "conditional \"UPPER_CASE_MOD\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${WITH_MARS_TESTS_TRUE}" && test -z "${WITH_MARS_TESTS_FALSE}"; then
-  as_fn_error $? "conditional \"WITH_MARS_TESTS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${UPPER_CASE_MOD_TRUE}" && test -z "${UPPER_CASE_MOD_FALSE}"; then
-  as_fn_error $? "conditional \"UPPER_CASE_MOD\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${DEBUG_IN_MOD_TRUE}" && test -z "${DEBUG_IN_MOD_FALSE}"; then
-  as_fn_error $? "conditional \"DEBUG_IN_MOD\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${WITH_PERL_TRUE}" && test -z "${WITH_PERL_FALSE}"; then
-  as_fn_error $? "conditional \"WITH_PERL\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${WITH_PYTHON_TRUE}" && test -z "${WITH_PYTHON_FALSE}"; then
-  as_fn_error $? "conditional \"WITH_PYTHON\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${WITH_FORTRAN_TRUE}" && test -z "${WITH_FORTRAN_FALSE}"; then
-  as_fn_error $? "conditional \"WITH_FORTRAN\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${CREATING_SHARED_LIBS_TRUE}" && test -z "${CREATING_SHARED_LIBS_FALSE}"; then
-  as_fn_error $? "conditional \"CREATING_SHARED_LIBS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-
-: "${CONFIG_STATUS=./config.status}"
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in @%:@(
-  *posix*) :
-    set -o posix ;; @%:@(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in @%:@(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in @%:@((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
-@%:@ ----------------------------------------
-@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-@%:@ script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} @%:@ as_fn_error
-
-
-@%:@ as_fn_set_status STATUS
-@%:@ -----------------------
-@%:@ Set @S|@? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} @%:@ as_fn_set_status
-
-@%:@ as_fn_exit STATUS
-@%:@ -----------------
-@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} @%:@ as_fn_exit
-
-@%:@ as_fn_unset VAR
-@%:@ ---------------
-@%:@ Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-@%:@ as_fn_append VAR VALUE
-@%:@ ----------------------
-@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
-@%:@ advantage of any shell optimizations that allow amortized linear growth over
-@%:@ repeated appends, instead of the typical quadratic growth present in naive
-@%:@ implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-@%:@ as_fn_arith ARG...
-@%:@ ------------------
-@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
-@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
-@%:@ must be portable across @S|@(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in @%:@(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-@%:@ as_fn_mkdir_p
-@%:@ -------------
-@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} @%:@ as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-
-@%:@ as_fn_executable_p FILE
-@%:@ -----------------------
-@%:@ Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} @%:@ as_fn_executable_p
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by eccodes $as_me  , which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-case $ac_config_headers in *"
-"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
-esac
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_headers="$ac_config_headers"
-config_commands="$ac_config_commands"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration.  Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number and configuration settings, then exit
-      --config     print configuration, then exit
-  -q, --quiet, --silent
-                   do not print progress messages
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-      --file=FILE[:TEMPLATE] 
-                   instantiate the configuration file FILE
-      --header=FILE[:TEMPLATE] 
-                   instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Configuration commands:
-$config_commands
-
-Report bugs to <Software.Support at ecmwf.int>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-eccodes config.status  
-configured by $0, generated by GNU Autoconf 2.69,
-  with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-MKDIR_P='$MKDIR_P'
-AWK='$AWK'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=?*)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
-    ac_shift=:
-    ;;
-  --*=)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=
-    ac_shift=:
-    ;;
-  *)
-    ac_option=$1
-    ac_optarg=$2
-    ac_shift=shift
-    ;;
-  esac
-
-  case $ac_option in
-  # Handling of the options.
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    ac_cs_recheck=: ;;
-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
-  --config | --confi | --conf | --con | --co | --c )
-    $as_echo "$ac_cs_config"; exit ;;
-  --debug | --debu | --deb | --de | --d | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    '') as_fn_error $? "missing file argument" ;;
-    esac
-    as_fn_append CONFIG_FILES " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --header | --heade | --head | --hea )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --he | --h)
-    # Conflict between --help and --header
-    as_fn_error $? "ambiguous option: \`$1'
-Try \`$0 --help' for more information.";;
-  --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil | --si | --s)
-    ac_cs_silent=: ;;
-
-  # This is an error.
-  -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
-  *) as_fn_append ac_config_targets " $1"
-     ac_need_defaults=false ;;
-
-  esac
-  shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
-  exec 6>/dev/null
-  ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
-  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-  shift
-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
-  CONFIG_SHELL='$SHELL'
-  export CONFIG_SHELL
-  exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
-@%:@@%:@ Running $as_me. @%:@@%:@
-_ASBOX
-  $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-#
-# INIT-COMMANDS
-#
-
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
-macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
-enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
-enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
-pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
-enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
-SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
-ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
-PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
-host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
-host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
-host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
-build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
-build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
-build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
-SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
-Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
-GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
-EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
-FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
-LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
-NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
-LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
-max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
-ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
-exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
-lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
-lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
-lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
-reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
-reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
-OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
-deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
-file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
-file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
-want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
-DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
-sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
-AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
-AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
-archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
-STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
-RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
-old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
-lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
-CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
-CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
-compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
-GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
-nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
-lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
-objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
-MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
-need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
-MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
-DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
-NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
-LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
-OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
-libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
-shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
-extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
-hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
-inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
-always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
-include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
-prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
-postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
-file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
-variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
-need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
-version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
-runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
-libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
-library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
-soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
-install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
-postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
-finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
-hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
-sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
-sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
-enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
-old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
-striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`'
-predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`'
-postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`'
-predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`'
-postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`'
-LD_F77='`$ECHO "$LD_F77" | $SED "$delay_single_quote_subst"`'
-LD_FC='`$ECHO "$LD_FC" | $SED "$delay_single_quote_subst"`'
-reload_flag_F77='`$ECHO "$reload_flag_F77" | $SED "$delay_single_quote_subst"`'
-reload_flag_FC='`$ECHO "$reload_flag_FC" | $SED "$delay_single_quote_subst"`'
-reload_cmds_F77='`$ECHO "$reload_cmds_F77" | $SED "$delay_single_quote_subst"`'
-reload_cmds_FC='`$ECHO "$reload_cmds_FC" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds_F77='`$ECHO "$old_archive_cmds_F77" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds_FC='`$ECHO "$old_archive_cmds_FC" | $SED "$delay_single_quote_subst"`'
-compiler_F77='`$ECHO "$compiler_F77" | $SED "$delay_single_quote_subst"`'
-compiler_FC='`$ECHO "$compiler_FC" | $SED "$delay_single_quote_subst"`'
-GCC_F77='`$ECHO "$GCC_F77" | $SED "$delay_single_quote_subst"`'
-GCC_FC='`$ECHO "$GCC_FC" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag_F77='`$ECHO "$lt_prog_compiler_no_builtin_flag_F77" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag_FC='`$ECHO "$lt_prog_compiler_no_builtin_flag_FC" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic_F77='`$ECHO "$lt_prog_compiler_pic_F77" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic_FC='`$ECHO "$lt_prog_compiler_pic_FC" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl_F77='`$ECHO "$lt_prog_compiler_wl_F77" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl_FC='`$ECHO "$lt_prog_compiler_wl_FC" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static_F77='`$ECHO "$lt_prog_compiler_static_F77" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static_FC='`$ECHO "$lt_prog_compiler_static_FC" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o_F77='`$ECHO "$lt_cv_prog_compiler_c_o_F77" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o_FC='`$ECHO "$lt_cv_prog_compiler_c_o_FC" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc_F77='`$ECHO "$archive_cmds_need_lc_F77" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc_FC='`$ECHO "$archive_cmds_need_lc_FC" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes_F77='`$ECHO "$enable_shared_with_static_runtimes_F77" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes_FC='`$ECHO "$enable_shared_with_static_runtimes_FC" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec_F77='`$ECHO "$export_dynamic_flag_spec_F77" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec_FC='`$ECHO "$export_dynamic_flag_spec_FC" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec_F77='`$ECHO "$whole_archive_flag_spec_F77" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec_FC='`$ECHO "$whole_archive_flag_spec_FC" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object_F77='`$ECHO "$compiler_needs_object_F77" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object_FC='`$ECHO "$compiler_needs_object_FC" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds_F77='`$ECHO "$old_archive_from_new_cmds_F77" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds_FC='`$ECHO "$old_archive_from_new_cmds_FC" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds_F77='`$ECHO "$old_archive_from_expsyms_cmds_F77" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds_FC='`$ECHO "$old_archive_from_expsyms_cmds_FC" | $SED "$delay_single_quote_subst"`'
-archive_cmds_F77='`$ECHO "$archive_cmds_F77" | $SED "$delay_single_quote_subst"`'
-archive_cmds_FC='`$ECHO "$archive_cmds_FC" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds_F77='`$ECHO "$archive_expsym_cmds_F77" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds_FC='`$ECHO "$archive_expsym_cmds_FC" | $SED "$delay_single_quote_subst"`'
-module_cmds_F77='`$ECHO "$module_cmds_F77" | $SED "$delay_single_quote_subst"`'
-module_cmds_FC='`$ECHO "$module_cmds_FC" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds_F77='`$ECHO "$module_expsym_cmds_F77" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds_FC='`$ECHO "$module_expsym_cmds_FC" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld_F77='`$ECHO "$with_gnu_ld_F77" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld_FC='`$ECHO "$with_gnu_ld_FC" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag_F77='`$ECHO "$allow_undefined_flag_F77" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag_FC='`$ECHO "$allow_undefined_flag_FC" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag_F77='`$ECHO "$no_undefined_flag_F77" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag_FC='`$ECHO "$no_undefined_flag_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_F77='`$ECHO "$hardcode_libdir_flag_spec_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_FC='`$ECHO "$hardcode_libdir_flag_spec_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator_F77='`$ECHO "$hardcode_libdir_separator_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator_FC='`$ECHO "$hardcode_libdir_separator_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_F77='`$ECHO "$hardcode_direct_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_FC='`$ECHO "$hardcode_direct_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute_F77='`$ECHO "$hardcode_direct_absolute_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute_FC='`$ECHO "$hardcode_direct_absolute_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L_F77='`$ECHO "$hardcode_minus_L_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L_FC='`$ECHO "$hardcode_minus_L_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var_F77='`$ECHO "$hardcode_shlibpath_var_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var_FC='`$ECHO "$hardcode_shlibpath_var_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic_F77='`$ECHO "$hardcode_automatic_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic_FC='`$ECHO "$hardcode_automatic_FC" | $SED "$delay_single_quote_subst"`'
-inherit_rpath_F77='`$ECHO "$inherit_rpath_F77" | $SED "$delay_single_quote_subst"`'
-inherit_rpath_FC='`$ECHO "$inherit_rpath_FC" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs_F77='`$ECHO "$link_all_deplibs_F77" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs_FC='`$ECHO "$link_all_deplibs_FC" | $SED "$delay_single_quote_subst"`'
-always_export_symbols_F77='`$ECHO "$always_export_symbols_F77" | $SED "$delay_single_quote_subst"`'
-always_export_symbols_FC='`$ECHO "$always_export_symbols_FC" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds_F77='`$ECHO "$export_symbols_cmds_F77" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds_FC='`$ECHO "$export_symbols_cmds_FC" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms_F77='`$ECHO "$exclude_expsyms_F77" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms_FC='`$ECHO "$exclude_expsyms_FC" | $SED "$delay_single_quote_subst"`'
-include_expsyms_F77='`$ECHO "$include_expsyms_F77" | $SED "$delay_single_quote_subst"`'
-include_expsyms_FC='`$ECHO "$include_expsyms_FC" | $SED "$delay_single_quote_subst"`'
-prelink_cmds_F77='`$ECHO "$prelink_cmds_F77" | $SED "$delay_single_quote_subst"`'
-prelink_cmds_FC='`$ECHO "$prelink_cmds_FC" | $SED "$delay_single_quote_subst"`'
-postlink_cmds_F77='`$ECHO "$postlink_cmds_F77" | $SED "$delay_single_quote_subst"`'
-postlink_cmds_FC='`$ECHO "$postlink_cmds_FC" | $SED "$delay_single_quote_subst"`'
-file_list_spec_F77='`$ECHO "$file_list_spec_F77" | $SED "$delay_single_quote_subst"`'
-file_list_spec_FC='`$ECHO "$file_list_spec_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_action_F77='`$ECHO "$hardcode_action_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_action_FC='`$ECHO "$hardcode_action_FC" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_dirs_F77='`$ECHO "$compiler_lib_search_dirs_F77" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_dirs_FC='`$ECHO "$compiler_lib_search_dirs_FC" | $SED "$delay_single_quote_subst"`'
-predep_objects_F77='`$ECHO "$predep_objects_F77" | $SED "$delay_single_quote_subst"`'
-predep_objects_FC='`$ECHO "$predep_objects_FC" | $SED "$delay_single_quote_subst"`'
-postdep_objects_F77='`$ECHO "$postdep_objects_F77" | $SED "$delay_single_quote_subst"`'
-postdep_objects_FC='`$ECHO "$postdep_objects_FC" | $SED "$delay_single_quote_subst"`'
-predeps_F77='`$ECHO "$predeps_F77" | $SED "$delay_single_quote_subst"`'
-predeps_FC='`$ECHO "$predeps_FC" | $SED "$delay_single_quote_subst"`'
-postdeps_F77='`$ECHO "$postdeps_F77" | $SED "$delay_single_quote_subst"`'
-postdeps_FC='`$ECHO "$postdeps_FC" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path_F77='`$ECHO "$compiler_lib_search_path_F77" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path_FC='`$ECHO "$compiler_lib_search_path_FC" | $SED "$delay_single_quote_subst"`'
-
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$1
-_LTECHO_EOF'
-}
-
-# Quote evaled strings.
-for var in SHELL \
-ECHO \
-PATH_SEPARATOR \
-SED \
-GREP \
-EGREP \
-FGREP \
-LD \
-NM \
-LN_S \
-lt_SP2NL \
-lt_NL2SP \
-reload_flag \
-OBJDUMP \
-deplibs_check_method \
-file_magic_cmd \
-file_magic_glob \
-want_nocaseglob \
-DLLTOOL \
-sharedlib_from_linklib_cmd \
-AR \
-AR_FLAGS \
-archiver_list_spec \
-STRIP \
-RANLIB \
-CC \
-CFLAGS \
-compiler \
-lt_cv_sys_global_symbol_pipe \
-lt_cv_sys_global_symbol_to_cdecl \
-lt_cv_sys_global_symbol_to_c_name_address \
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
-nm_file_list_spec \
-lt_prog_compiler_no_builtin_flag \
-lt_prog_compiler_pic \
-lt_prog_compiler_wl \
-lt_prog_compiler_static \
-lt_cv_prog_compiler_c_o \
-need_locks \
-MANIFEST_TOOL \
-DSYMUTIL \
-NMEDIT \
-LIPO \
-OTOOL \
-OTOOL64 \
-shrext_cmds \
-export_dynamic_flag_spec \
-whole_archive_flag_spec \
-compiler_needs_object \
-with_gnu_ld \
-allow_undefined_flag \
-no_undefined_flag \
-hardcode_libdir_flag_spec \
-hardcode_libdir_separator \
-exclude_expsyms \
-include_expsyms \
-file_list_spec \
-variables_saved_for_relink \
-libname_spec \
-library_names_spec \
-soname_spec \
-install_override_mode \
-finish_eval \
-old_striplib \
-striplib \
-compiler_lib_search_dirs \
-predep_objects \
-postdep_objects \
-predeps \
-postdeps \
-compiler_lib_search_path \
-LD_F77 \
-LD_FC \
-reload_flag_F77 \
-reload_flag_FC \
-compiler_F77 \
-compiler_FC \
-lt_prog_compiler_no_builtin_flag_F77 \
-lt_prog_compiler_no_builtin_flag_FC \
-lt_prog_compiler_pic_F77 \
-lt_prog_compiler_pic_FC \
-lt_prog_compiler_wl_F77 \
-lt_prog_compiler_wl_FC \
-lt_prog_compiler_static_F77 \
-lt_prog_compiler_static_FC \
-lt_cv_prog_compiler_c_o_F77 \
-lt_cv_prog_compiler_c_o_FC \
-export_dynamic_flag_spec_F77 \
-export_dynamic_flag_spec_FC \
-whole_archive_flag_spec_F77 \
-whole_archive_flag_spec_FC \
-compiler_needs_object_F77 \
-compiler_needs_object_FC \
-with_gnu_ld_F77 \
-with_gnu_ld_FC \
-allow_undefined_flag_F77 \
-allow_undefined_flag_FC \
-no_undefined_flag_F77 \
-no_undefined_flag_FC \
-hardcode_libdir_flag_spec_F77 \
-hardcode_libdir_flag_spec_FC \
-hardcode_libdir_separator_F77 \
-hardcode_libdir_separator_FC \
-exclude_expsyms_F77 \
-exclude_expsyms_FC \
-include_expsyms_F77 \
-include_expsyms_FC \
-file_list_spec_F77 \
-file_list_spec_FC \
-compiler_lib_search_dirs_F77 \
-compiler_lib_search_dirs_FC \
-predep_objects_F77 \
-predep_objects_FC \
-postdep_objects_F77 \
-postdep_objects_FC \
-predeps_F77 \
-predeps_FC \
-postdeps_F77 \
-postdeps_FC \
-compiler_lib_search_path_F77 \
-compiler_lib_search_path_FC; do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Double-quote double-evaled strings.
-for var in reload_cmds \
-old_postinstall_cmds \
-old_postuninstall_cmds \
-old_archive_cmds \
-extract_expsyms_cmds \
-old_archive_from_new_cmds \
-old_archive_from_expsyms_cmds \
-archive_cmds \
-archive_expsym_cmds \
-module_cmds \
-module_expsym_cmds \
-export_symbols_cmds \
-prelink_cmds \
-postlink_cmds \
-postinstall_cmds \
-postuninstall_cmds \
-finish_cmds \
-sys_lib_search_path_spec \
-sys_lib_dlsearch_path_spec \
-reload_cmds_F77 \
-reload_cmds_FC \
-old_archive_cmds_F77 \
-old_archive_cmds_FC \
-old_archive_from_new_cmds_F77 \
-old_archive_from_new_cmds_FC \
-old_archive_from_expsyms_cmds_F77 \
-old_archive_from_expsyms_cmds_FC \
-archive_cmds_F77 \
-archive_cmds_FC \
-archive_expsym_cmds_F77 \
-archive_expsym_cmds_FC \
-module_cmds_F77 \
-module_cmds_FC \
-module_expsym_cmds_F77 \
-module_expsym_cmds_FC \
-export_symbols_cmds_F77 \
-export_symbols_cmds_FC \
-prelink_cmds_F77 \
-prelink_cmds_FC \
-postlink_cmds_F77 \
-postlink_cmds_FC; do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-ac_aux_dir='$ac_aux_dir'
-xsi_shell='$xsi_shell'
-lt_shell_append='$lt_shell_append'
-
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-
-    PACKAGE='$PACKAGE'
-    VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
-    RM='$RM'
-    ofile='$ofile'
-
-
-
-
-
-
-
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
-  case $ac_config_target in
-    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
-    "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;;
-    "src/eccodes_version.h") CONFIG_FILES="$CONFIG_FILES src/eccodes_version.h" ;;
-    "rpms/eccodes.pc") CONFIG_FILES="$CONFIG_FILES rpms/eccodes.pc" ;;
-    "rpms/eccodes.spec") CONFIG_FILES="$CONFIG_FILES rpms/eccodes.spec" ;;
-    "rpms/eccodes_f90.pc") CONFIG_FILES="$CONFIG_FILES rpms/eccodes_f90.pc" ;;
-    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
-    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
-    "fortran/Makefile") CONFIG_FILES="$CONFIG_FILES fortran/Makefile" ;;
-    "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;;
-    "data/Makefile") CONFIG_FILES="$CONFIG_FILES data/Makefile" ;;
-    "definitions/Makefile") CONFIG_FILES="$CONFIG_FILES definitions/Makefile" ;;
-    "samples/Makefile") CONFIG_FILES="$CONFIG_FILES samples/Makefile" ;;
-    "ifs_samples/grib1/Makefile") CONFIG_FILES="$CONFIG_FILES ifs_samples/grib1/Makefile" ;;
-    "ifs_samples/grib1_mlgrib2/Makefile") CONFIG_FILES="$CONFIG_FILES ifs_samples/grib1_mlgrib2/Makefile" ;;
-    "ifs_samples/grib1_mlgrib2_ieee64/Makefile") CONFIG_FILES="$CONFIG_FILES ifs_samples/grib1_mlgrib2_ieee64/Makefile" ;;
-    "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
-    "examples/C/Makefile") CONFIG_FILES="$CONFIG_FILES examples/C/Makefile" ;;
-    "examples/F90/Makefile") CONFIG_FILES="$CONFIG_FILES examples/F90/Makefile" ;;
-    "tigge/Makefile") CONFIG_FILES="$CONFIG_FILES tigge/Makefile" ;;
-    "perl/GRIB-API/Makefile.PL") CONFIG_FILES="$CONFIG_FILES perl/GRIB-API/Makefile.PL" ;;
-    "perl/Makefile") CONFIG_FILES="$CONFIG_FILES perl/Makefile" ;;
-    "python/Makefile") CONFIG_FILES="$CONFIG_FILES python/Makefile" ;;
-    "examples/python/Makefile") CONFIG_FILES="$CONFIG_FILES examples/python/Makefile" ;;
-
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
-  esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience.  Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
-  tmp= ac_tmp=
-  trap 'exit_status=$?
-  : "${ac_tmp:=$tmp}"
-  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
-' 0
-  trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -d "$tmp"
-}  ||
-{
-  tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-ac_tmp=$tmp
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
-  eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-  ac_cs_awk_cr='\\r'
-else
-  ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
-_ACEOF
-
-
-{
-  echo "cat >conf$$subs.awk <<_ACEOF" &&
-  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
-  echo "_ACEOF"
-} >conf$$subs.sh ||
-  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  . ./conf$$subs.sh ||
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-
-  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
-  if test $ac_delim_n = $ac_delim_num; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\)..*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\)..*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
-  N
-  s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
-  for (key in S) S_is_set[key] = 1
-  FS = ""
-
-}
-{
-  line = $ 0
-  nfields = split(line, field, "@")
-  substed = 0
-  len = length(field[1])
-  for (i = 2; i < nfields; i++) {
-    key = field[i]
-    keylen = length(key)
-    if (S_is_set[key]) {
-      value = S[key]
-      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
-      len += length(value) + length(field[++i])
-      substed = 1
-    } else
-      len += 1 + keylen
-  }
-
-  print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
-  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
-  cat
-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
-  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
-# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
-h
-s///
-s/^/:/
-s/[	 ]*$/:/
-s/:\$(srcdir):/:/g
-s/:\${srcdir}:/:/g
-s/:@srcdir@:/:/g
-s/^:*//
-s/:*$//
-x
-s/\(=[	 ]*\).*/\1/
-G
-s/\n//
-s/^[^=]*=[	 ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-# Set up the scripts for CONFIG_HEADERS section.
-# No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
-if test -n "$CONFIG_HEADERS"; then
-cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
-BEGIN {
-_ACEOF
-
-# Transform confdefs.h into an awk script `defines.awk', embedded as
-# here-document in config.status, that substitutes the proper values into
-# config.h.in to produce config.h.
-
-# Create a delimiter string that does not exist in confdefs.h, to ease
-# handling of long lines.
-ac_delim='%!_!# '
-for ac_last_try in false false :; do
-  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
-  if test -z "$ac_tt"; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-
-# For the awk script, D is an array of macro values keyed by name,
-# likewise P contains macro parameters if any.  Preserve backslash
-# newline sequences.
-
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-sed -n '
-s/.\{148\}/&'"$ac_delim"'/g
-t rset
-:rset
-s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
-t def
-d
-:def
-s/\\$//
-t bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3"/p
-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
-d
-:bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3\\\\\\n"\\/p
-t cont
-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
-t cont
-d
-:cont
-n
-s/.\{148\}/&'"$ac_delim"'/g
-t clear
-:clear
-s/\\$//
-t bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/"/p
-d
-:bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
-b cont
-' <confdefs.h | sed '
-s/'"$ac_delim"'/"\\\
-"/g' >>$CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  for (key in D) D_is_set[key] = 1
-  FS = ""
-}
-/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
-  line = \$ 0
-  split(line, arg, " ")
-  if (arg[1] == "#") {
-    defundef = arg[2]
-    mac1 = arg[3]
-  } else {
-    defundef = substr(arg[1], 2)
-    mac1 = arg[2]
-  }
-  split(mac1, mac2, "(") #)
-  macro = mac2[1]
-  prefix = substr(line, 1, index(line, defundef) - 1)
-  if (D_is_set[macro]) {
-    # Preserve the white space surrounding the "#".
-    print prefix "define", macro P[macro] D[macro]
-    next
-  } else {
-    # Replace #undef with comments.  This is necessary, for example,
-    # in the case of _POSIX_SOURCE, which is predefined and required
-    # on some systems where configure will not decide to define it.
-    if (defundef == "undef") {
-      print "/*", prefix defundef, macro, "*/"
-      next
-    }
-  }
-}
-{ print }
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
-fi # test -n "$CONFIG_HEADERS"
-
-
-eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
-shift
-for ac_tag
-do
-  case $ac_tag in
-  :[FHLC]) ac_mode=$ac_tag; continue;;
-  esac
-  case $ac_mode$ac_tag in
-  :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
-  :[FH]-) ac_tag=-:-;;
-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-  esac
-  ac_save_IFS=$IFS
-  IFS=:
-  set x $ac_tag
-  IFS=$ac_save_IFS
-  shift
-  ac_file=$1
-  shift
-
-  case $ac_mode in
-  :L) ac_source=$1;;
-  :[FH])
-    ac_file_inputs=
-    for ac_f
-    do
-      case $ac_f in
-      -) ac_f="$ac_tmp/stdin";;
-      *) # Look for the file first in the build tree, then in the source tree
-	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
-	 # because $ac_f cannot contain `:'.
-	 test -f "$ac_f" ||
-	   case $ac_f in
-	   [\\/$]*) false;;
-	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
-	   esac ||
-	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
-      esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      as_fn_append ac_file_inputs " '$ac_f'"
-    done
-
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
-    # use $as_me), people would be surprised to read:
-    #    /* config.h.  Generated by config.status.  */
-    configure_input='Generated from '`
-	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
-	`' by configure.'
-    if test x"$ac_file" != x-; then
-      configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
-    fi
-    # Neutralize special characters interpreted by sed in replacement strings.
-    case $configure_input in #(
-    *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
-       sed 's/[\\\\&|]/\\\\&/g'`;; #(
-    *) ac_sed_conf_input=$configure_input;;
-    esac
-
-    case $ac_tag in
-    *:-:* | *:-) cat >"$ac_tmp/stdin" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
-    esac
-    ;;
-  esac
-
-  ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$ac_file" : 'X\(//\)[^/]' \| \
-	 X"$ac_file" : 'X\(//\)$' \| \
-	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  as_dir="$ac_dir"; as_fn_mkdir_p
-  ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-  case $ac_mode in
-  :F)
-  #
-  # CONFIG_FILE
-  #
-
-  case $INSTALL in
-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
-  esac
-  ac_MKDIR_P=$MKDIR_P
-  case $MKDIR_P in
-  [\\/$]* | ?:[\\/]* ) ;;
-  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
-  esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
-  p
-  q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  ac_datarootdir_hack='
-  s&@datadir@&$datadir&g
-  s&@docdir@&$docdir&g
-  s&@infodir@&$infodir&g
-  s&@localedir@&$localedir&g
-  s&@mandir@&$mandir&g
-  s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-s&@MKDIR_P@&$ac_MKDIR_P&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
-  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
-      "$ac_tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&2;}
-
-  rm -f "$ac_tmp/stdin"
-  case $ac_file in
-  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
-  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
-  esac \
-  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- ;;
-  :H)
-  #
-  # CONFIG_HEADER
-  #
-  if test x"$ac_file" != x-; then
-    {
-      $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
-    } >"$ac_tmp/config.h" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
-    else
-      rm -f "$ac_file"
-      mv "$ac_tmp/config.h" "$ac_file" \
-	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    fi
-  else
-    $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
-      || as_fn_error $? "could not create -" "$LINENO" 5
-  fi
-# Compute "$ac_file"'s index in $config_headers.
-_am_arg="$ac_file"
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
-$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$_am_arg" : 'X\(//\)[^/]' \| \
-	 X"$_am_arg" : 'X\(//\)$' \| \
-	 X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$_am_arg" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`/stamp-h$_am_stamp_count
- ;;
-  
-  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
- ;;
-  esac
-
-
-  case $ac_file$ac_mode in
-    "libtool":C) 
-    
-    # See if we are running on zsh, and set the options which allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
-      setopt NO_GLOB_SUBST
-    fi
-
-    cfgfile="${ofile}T"
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
-
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-#                 Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-
-# The names of the tagged configurations supported by this script.
-available_tags="F77 FC "
-
-# ### BEGIN LIBTOOL CONFIG
-
-# Which release of libtool.m4 was used?
-macro_version=$macro_version
-macro_revision=$macro_revision
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# What type of objects to build.
-pic_mode=$pic_mode
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# An echo program that protects backslashes.
-ECHO=$lt_ECHO
-
-# The PATH separator for the build system.
-PATH_SEPARATOR=$lt_PATH_SEPARATOR
-
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
-
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
-
-# A sed program that does not truncate output.
-SED=$lt_SED
-
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="\$SED -e 1s/^X//"
-
-# A grep program that handles long lines.
-GREP=$lt_GREP
-
-# An ERE matcher.
-EGREP=$lt_EGREP
-
-# A literal string matcher.
-FGREP=$lt_FGREP
-
-# A BSD- or MS-compatible name lister.
-NM=$lt_NM
-
-# Whether we need soft or hard links.
-LN_S=$lt_LN_S
-
-# What is the maximum length of a command?
-max_cmd_len=$max_cmd_len
-
-# Object file suffix (normally "o").
-objext=$ac_objext
-
-# Executable file suffix (normally "").
-exeext=$exeext
-
-# whether the shell understands "unset".
-lt_unset=$lt_unset
-
-# turn spaces into newlines.
-SP2NL=$lt_lt_SP2NL
-
-# turn newlines into spaces.
-NL2SP=$lt_lt_NL2SP
-
-# convert \$build file names to \$host format.
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-
-# convert \$build files to toolchain format.
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-
-# An object symbol dumper.
-OBJDUMP=$lt_OBJDUMP
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method = "file_magic".
-file_magic_cmd=$lt_file_magic_cmd
-
-# How to find potential files when deplibs_check_method = "file_magic".
-file_magic_glob=$lt_file_magic_glob
-
-# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-want_nocaseglob=$lt_want_nocaseglob
-
-# DLL creation program.
-DLLTOOL=$lt_DLLTOOL
-
-# Command to associate shared and link libraries.
-sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
-
-# The archiver.
-AR=$lt_AR
-
-# Flags to create an archive.
-AR_FLAGS=$lt_AR_FLAGS
-
-# How to feed a file listing to the archiver.
-archiver_list_spec=$lt_archiver_list_spec
-
-# A symbol stripping program.
-STRIP=$lt_STRIP
-
-# Commands used to install an old-style archive.
-RANLIB=$lt_RANLIB
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# Whether to use a lock for old archive extraction.
-lock_old_archive_extraction=$lock_old_archive_extraction
-
-# A C compiler.
-LTCC=$lt_CC
-
-# LTCC compiler flags.
-LTCFLAGS=$lt_CFLAGS
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration.
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-
-# Transform the output of nm in a C name address pair.
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-
-# Transform the output of nm in a C name address pair when lib prefix is needed.
-global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
-
-# Specify filename containing input files for \$NM.
-nm_file_list_spec=$lt_nm_file_list_spec
-
-# The root where to search for dependent libraries,and in which our libraries should be installed.
-lt_sysroot=$lt_sysroot
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# Used to examine libraries when file_magic_cmd begins with "file".
-MAGIC_CMD=$MAGIC_CMD
-
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
-
-# Manifest tool.
-MANIFEST_TOOL=$lt_MANIFEST_TOOL
-
-# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
-DSYMUTIL=$lt_DSYMUTIL
-
-# Tool to change global to local symbols on Mac OS X.
-NMEDIT=$lt_NMEDIT
-
-# Tool to manipulate fat objects and archives on Mac OS X.
-LIPO=$lt_LIPO
-
-# ldd/readelf like tool for Mach-O binaries on Mac OS X.
-OTOOL=$lt_OTOOL
-
-# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
-OTOOL64=$lt_OTOOL64
-
-# Old archive suffix (normally "a").
-libext=$libext
-
-# Shared library suffix (normally ".so").
-shrext_cmds=$lt_shrext_cmds
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at link time.
-variables_saved_for_relink=$lt_variables_saved_for_relink
-
-# Do we need the "lib" prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Library versioning type.
-version_type=$version_type
-
-# Shared library runtime path variable.
-runpath_var=$runpath_var
-
-# Shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Permission mode override for installation of shared libraries.
-install_override_mode=$lt_install_override_mode
-
-# Command to use after installation of a shared archive.
-postinstall_cmds=$lt_postinstall_cmds
-
-# Command to use after uninstallation of a shared archive.
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# As "finish_cmds", except a single script fragment to be evaled but
-# not shown.
-finish_eval=$lt_finish_eval
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Compile-time system search path for libraries.
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Run-time system search path for libraries.
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-
-# The linker used to build libraries.
-LD=$lt_LD
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds
-
-# A language specific compiler.
-CC=$lt_compiler
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds
-archive_expsym_cmds=$lt_archive_expsym_cmds
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds
-module_expsym_cmds=$lt_module_expsym_cmds
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects
-postdep_objects=$lt_postdep_objects
-predeps=$lt_predeps
-postdeps=$lt_postdeps
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path
-
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
-  case $host_os in
-  aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
-    ;;
-  esac
-
-  
-ltmain="$ac_aux_dir/ltmain.sh"
-
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" \
-     || (rm -f "$cfgfile"; exit 1)
-
-  if test x"$xsi_shell" = xyes; then
-  sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
-func_dirname ()\
-{\
-\    case ${1} in\
-\      */*) func_dirname_result="${1%/*}${2}" ;;\
-\      *  ) func_dirname_result="${3}" ;;\
-\    esac\
-} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_basename ()$/,/^} # func_basename /c\
-func_basename ()\
-{\
-\    func_basename_result="${1##*/}"\
-} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
-func_dirname_and_basename ()\
-{\
-\    case ${1} in\
-\      */*) func_dirname_result="${1%/*}${2}" ;;\
-\      *  ) func_dirname_result="${3}" ;;\
-\    esac\
-\    func_basename_result="${1##*/}"\
-} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
-func_stripname ()\
-{\
-\    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
-\    # positional parameters, so assign one to ordinary parameter first.\
-\    func_stripname_result=${3}\
-\    func_stripname_result=${func_stripname_result#"${1}"}\
-\    func_stripname_result=${func_stripname_result%"${2}"}\
-} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
-func_split_long_opt ()\
-{\
-\    func_split_long_opt_name=${1%%=*}\
-\    func_split_long_opt_arg=${1#*=}\
-} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
-func_split_short_opt ()\
-{\
-\    func_split_short_opt_arg=${1#??}\
-\    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
-} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
-func_lo2o ()\
-{\
-\    case ${1} in\
-\      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
-\      *)    func_lo2o_result=${1} ;;\
-\    esac\
-} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_xform ()$/,/^} # func_xform /c\
-func_xform ()\
-{\
-    func_xform_result=${1%.*}.lo\
-} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_arith ()$/,/^} # func_arith /c\
-func_arith ()\
-{\
-    func_arith_result=$(( $* ))\
-} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_len ()$/,/^} # func_len /c\
-func_len ()\
-{\
-    func_len_result=${#1}\
-} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-fi
-
-if test x"$lt_shell_append" = xyes; then
-  sed -e '/^func_append ()$/,/^} # func_append /c\
-func_append ()\
-{\
-    eval "${1}+=\\${2}"\
-} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
-func_append_quoted ()\
-{\
-\    func_quote_for_eval "${2}"\
-\    eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
-} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  # Save a `func_append' function call where possible by direct use of '+='
-  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-else
-  # Save a `func_append' function call even when '+=' is not available
-  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-fi
-
-if test x"$_lt_function_replace_fail" = x":"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
-fi
-
-
-   mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-
-
-    cat <<_LT_EOF >> "$ofile"
-
-# ### BEGIN LIBTOOL TAG CONFIG: F77
-
-# The linker used to build libraries.
-LD=$lt_LD_F77
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag_F77
-reload_cmds=$lt_reload_cmds_F77
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds_F77
-
-# A language specific compiler.
-CC=$lt_compiler_F77
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC_F77
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_F77
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_F77
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_F77
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_F77
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object_F77
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds_F77
-archive_expsym_cmds=$lt_archive_expsym_cmds_F77
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds_F77
-module_expsym_cmds=$lt_module_expsym_cmds_F77
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld_F77
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_F77
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_F77
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct_F77
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute_F77
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L_F77
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic_F77
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath_F77
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_F77
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols_F77
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_F77
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_F77
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_F77
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds_F77
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds_F77
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec_F77
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_F77
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_F77
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects_F77
-postdep_objects=$lt_postdep_objects_F77
-predeps=$lt_predeps_F77
-postdeps=$lt_postdeps_F77
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_F77
-
-# ### END LIBTOOL TAG CONFIG: F77
-_LT_EOF
-
-
-    cat <<_LT_EOF >> "$ofile"
-
-# ### BEGIN LIBTOOL TAG CONFIG: FC
-
-# The linker used to build libraries.
-LD=$lt_LD_FC
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag_FC
-reload_cmds=$lt_reload_cmds_FC
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds_FC
-
-# A language specific compiler.
-CC=$lt_compiler_FC
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC_FC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_FC
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_FC
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_FC
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_FC
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_FC
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_FC
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_FC
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_FC
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_FC
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object_FC
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_FC
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_FC
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds_FC
-archive_expsym_cmds=$lt_archive_expsym_cmds_FC
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds_FC
-module_expsym_cmds=$lt_module_expsym_cmds_FC
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld_FC
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_FC
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_FC
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_FC
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_FC
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct_FC
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute_FC
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L_FC
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_FC
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic_FC
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath_FC
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_FC
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols_FC
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_FC
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_FC
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_FC
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds_FC
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds_FC
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec_FC
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_FC
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_FC
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects_FC
-postdep_objects=$lt_postdep_objects_FC
-predeps=$lt_predeps_FC
-postdeps=$lt_postdeps_FC
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_FC
-
-# ### END LIBTOOL TAG CONFIG: FC
-_LT_EOF
-
- ;;
-    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
-  # Older Autoconf quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
-  esac
-  shift
-  for mf
-  do
-    # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named 'Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$mf" : 'X\(//\)[^/]' \| \
-	 X"$mf" : 'X\(//\)$' \| \
-	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$mf" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running 'make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "$am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$file" : 'X\(//\)[^/]' \| \
-	 X"$file" : 'X\(//\)$' \| \
-	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      as_dir=$dirpart/$fdir; as_fn_mkdir_p
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
-  done
-}
- ;;
-
-  esac
-done # for ac_tag
-
-
-as_fn_exit 0
-_ACEOF
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
-  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded.  So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status.  When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
-  ac_cs_success=:
-  ac_config_status_args=
-  test "$silent" = yes &&
-    ac_config_status_args="$ac_config_status_args --quiet"
-  exec 5>/dev/null
-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-  exec 5>>config.log
-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-  # would make configure fail if this is the last instruction.
-  $ac_cs_success || as_fn_exit 1
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: 
-
-  Configuration completed.
-
-    You can now say 'make' to compile the eccodes package, 'make check' to
-	  test it  and 'make install' to install it afterwards.
-	  " >&5
-$as_echo "$as_me: 
-
-  Configuration completed.
-
-    You can now say 'make' to compile the eccodes package, 'make check' to
-	  test it  and 'make install' to install it afterwards.
-	  " >&6;}
diff --git a/autom4te.cache/output.1 b/autom4te.cache/output.1
deleted file mode 100644
index e5f3cd5..0000000
--- a/autom4te.cache/output.1
+++ /dev/null
@@ -1,24511 +0,0 @@
-@%:@! /bin/sh
-@%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.69 for eccodes  .
-@%:@
-@%:@ Report bugs to <Software.Support at ecmwf.int>.
-@%:@ 
-@%:@ 
-@%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
-@%:@ 
-@%:@ 
-@%:@ This configure script is free software; the Free Software Foundation
-@%:@ gives unlimited permission to copy, distribute and modify it.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in @%:@(
-  *posix*) :
-    set -o posix ;; @%:@(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in @%:@(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in @%:@((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-# Use a proper internal environment variable to ensure we don't fall
-  # into an infinite loop, continuously re-executing ourselves.
-  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
-    _as_can_reexec=no; export _as_can_reexec;
-    # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in @%:@ ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
-  fi
-  # We don't want this to propagate to other subprocesses.
-          { _as_can_reexec=; unset _as_can_reexec;}
-if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in @%:@(
-  *posix*) :
-    set -o posix ;; @%:@(
-  *) :
-     ;;
-esac
-fi
-"
-  as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-  
-else
-  exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1
-test -x / || exit 1"
-  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
-  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
-  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
-  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-
-  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
-    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
-    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
-    PATH=/empty FPATH=/empty; export PATH FPATH
-    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
-      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1"
-  if (eval "$as_required") 2>/dev/null; then :
-  as_have_required=yes
-else
-  as_have_required=no
-fi
-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-  
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  as_found=:
-  case $as_dir in @%:@(
-	 /*)
-	   for as_base in sh bash ksh sh5; do
-	     # Try only shells that exist, to save several forks.
-	     as_shell=$as_dir/$as_base
-	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  CONFIG_SHELL=$as_shell as_have_required=yes
-		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  break 2
-fi
-fi
-	   done;;
-       esac
-  as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
-	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
-  CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
-      if test "x$CONFIG_SHELL" != x; then :
-  export CONFIG_SHELL
-             # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in @%:@ ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-exit 255
-fi
-
-    if test x$as_have_required = xno; then :
-  $as_echo "$0: This script requires a shell more modern than all"
-  $as_echo "$0: the shells that I found on your system."
-  if test x${ZSH_VERSION+set} = xset ; then
-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
-  else
-    $as_echo "$0: Please tell bug-autoconf at gnu.org and
-$0: Software.Support at ecmwf.int about your system, including
-$0: any error possibly output before this message. Then
-$0: install a modern shell, or manually run the script
-$0: under such a shell if you do have one."
-  fi
-  exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-@%:@ as_fn_unset VAR
-@%:@ ---------------
-@%:@ Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-@%:@ as_fn_set_status STATUS
-@%:@ -----------------------
-@%:@ Set @S|@? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} @%:@ as_fn_set_status
-
-@%:@ as_fn_exit STATUS
-@%:@ -----------------
-@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} @%:@ as_fn_exit
-
-@%:@ as_fn_mkdir_p
-@%:@ -------------
-@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} @%:@ as_fn_mkdir_p
-
-@%:@ as_fn_executable_p FILE
-@%:@ -----------------------
-@%:@ Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} @%:@ as_fn_executable_p
-@%:@ as_fn_append VAR VALUE
-@%:@ ----------------------
-@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
-@%:@ advantage of any shell optimizations that allow amortized linear growth over
-@%:@ repeated appends, instead of the typical quadratic growth present in naive
-@%:@ implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-@%:@ as_fn_arith ARG...
-@%:@ ------------------
-@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
-@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
-@%:@ must be portable across @S|@(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
-@%:@ ----------------------------------------
-@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-@%:@ script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} @%:@ as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
-  as_lineno_1=$LINENO as_lineno_1a=$LINENO
-  as_lineno_2=$LINENO as_lineno_2a=$LINENO
-  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
-  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
-  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
-  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
-  # already done that, so ensure we don't try to do so again and fall
-  # in an infinite loop.  This has already happened in practice.
-  _as_can_reexec=no; export _as_can_reexec
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in @%:@(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIB@&t at OBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME='eccodes'
-PACKAGE_TARNAME='eccodes'
-PACKAGE_VERSION=' '
-PACKAGE_STRING='eccodes  '
-PACKAGE_BUGREPORT='Software.Support at ecmwf.int'
-PACKAGE_URL=''
-
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-#  include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-ac_unique_file="src/grib_api.h"
-ac_subst_vars='am__EXEEXT_FALSE
-am__EXEEXT_TRUE
-LTLIBOBJS
-LIB@&t at OBJS
-LINUX_DISTRIBUTION_VERSION
-LINUX_DISTRIBUTION_NAME
-WERROR
-WARN_PEDANTIC
-RM
-CREATING_SHARED_LIBS_FALSE
-CREATING_SHARED_LIBS_TRUE
-WITH_FORTRAN_FALSE
-WITH_FORTRAN_TRUE
-WITH_PYTHON_FALSE
-WITH_PYTHON_TRUE
-PYTHON_DATA_HANDLER
-NUMPY_INCLUDE
-PYTHON_CHECK
-PYTHON_CONFIG
-PYTHON_LIBS
-PYTHON_CFLAGS
-PYTHON_LDFLAGS
-PYTHON_INCLUDES
-pkgpyexecdir
-pyexecdir
-pkgpythondir
-pythondir
-PYTHON_PLATFORM
-PYTHON_EXEC_PREFIX
-PYTHON_PREFIX
-PYTHON_VERSION
-PYTHON
-WITH_PERL_FALSE
-WITH_PERL_TRUE
-GRIB_API_INC
-GRIB_API_LIB
-PERL_MAKE_OPTIONS
-PERL
-PERL_INSTALL_OPTIONS
-LIB_PNG
-CCSDS_TEST
-AEC_DIR
-LIB_AEC
-JPEG_TEST
-LIB_JASPER
-LIB_OPENJPEG
-OPENJPEG_DIR
-JASPER_DIR
-NETCDF_LDFLAGS
-EMOS_LIB
-IFS_SAMPLES_DIR
-F90_MODULE_FLAG
-F90_CHECK
-FORTRAN_MOD
-DEBUG_IN_MOD_FALSE
-DEBUG_IN_MOD_TRUE
-ECCODES_DEFINITION_PATH
-ECCODES_SAMPLES_PATH
-RPM_RELEASE
-RPM_CONFIGURE_ARGS
-RPM_HOST_OS
-RPM_HOST_VENDOR
-RPM_HOST_CPU
-WITH_MARS_TESTS_FALSE
-WITH_MARS_TESTS_TRUE
-GRIB_DEVEL
-DEVEL_RULES
-UPPER_CASE_MOD_FALSE
-UPPER_CASE_MOD_TRUE
-ac_ct_FC
-FCFLAGS
-FC
-ac_ct_F77
-FFLAGS
-F77
-LEXLIB
-LEX_OUTPUT_ROOT
-LEX
-YFLAGS
-YACC
-PERLDIR
-AM_BACKSLASH
-AM_DEFAULT_VERBOSITY
-AM_DEFAULT_V
-AM_V
-am__fastdepCC_FALSE
-am__fastdepCC_TRUE
-CCDEPMODE
-am__nodep
-AMDEPBACKSLASH
-AMDEP_FALSE
-AMDEP_TRUE
-am__quote
-am__include
-DEPDIR
-am__untar
-am__tar
-AMTAR
-am__leading_dot
-SET_MAKE
-mkdir_p
-MKDIR_P
-INSTALL_STRIP_PROGRAM
-install_sh
-MAKEINFO
-AUTOHEADER
-AUTOMAKE
-AUTOCONF
-ACLOCAL
-VERSION
-PACKAGE
-CYGPATH_W
-am__isrc
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-ECCODES_AGE
-ECCODES_REVISION
-ECCODES_CURRENT
-ECCODES_PATCH_VERSION
-ECCODES_MINOR_VERSION
-ECCODES_MAJOR_VERSION
-ECCODES_VERSION_STR
-ECCODES_MAIN_VERSION
-LIBTOOL_DEPS
-CPP
-OTOOL64
-OTOOL
-LIPO
-NMEDIT
-DSYMUTIL
-MANIFEST_TOOL
-AWK
-RANLIB
-STRIP
-ac_ct_AR
-AR
-DLLTOOL
-OBJDUMP
-LN_S
-NM
-ac_ct_DUMPBIN
-DUMPBIN
-LD
-FGREP
-EGREP
-GREP
-SED
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-LIBTOOL
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-enable_shared
-enable_static
-with_pic
-enable_fast_install
-with_gnu_ld
-with_sysroot
-enable_libtool_lock
-enable_dependency_tracking
-enable_silent_rules
-enable_pthread
-enable_ibmpower67_opt
-enable_ieee_native
-enable_align_memory
-enable_vector
-enable_memory_management
-enable_development
-enable_largefile
-with_rpm_release
-enable_fortran
-with_ifs_samples
-with_emos
-with_fortranlibdir
-with_fortranlibs
-enable_timer
-enable_omp_packing
-with_netcdf
-enable_jpeg
-with_jasper
-with_openjpeg
-with_aec
-with_png_support
-enable_install_system_perl
-with_perl
-with_perl_options
-enable_python
-enable_numpy
-enable_werror_always
-'
-      ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CPP
-YACC
-YFLAGS
-F77
-FFLAGS
-FC
-FCFLAGS
-PYTHON
-PYTHON_INCLUDES
-PYTHON_LDFLAGS
-PYTHON_CFLAGS
-PYTHON_LIBS
-PYTHON_CONFIG'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval $ac_prev=\$ac_option
-    ac_prev=
-    continue
-  fi
-
-  case $ac_option in
-  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *=)   ac_optarg= ;;
-  *)    ac_optarg=yes ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case $ac_dashdash$ac_option in
-  --)
-    ac_dashdash=yes ;;
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir=$ac_optarg ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build_alias ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build_alias=$ac_optarg ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file=$ac_optarg ;;
-
-  --config-cache | -C)
-    cache_file=config.cache ;;
-
-  -datadir | --datadir | --datadi | --datad)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=*)
-    datadir=$ac_optarg ;;
-
-  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
-  | --dataroo | --dataro | --datar)
-    ac_prev=datarootdir ;;
-  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
-  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
-    datarootdir=$ac_optarg ;;
-
-  -disable-* | --disable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=no ;;
-
-  -docdir | --docdir | --docdi | --doc | --do)
-    ac_prev=docdir ;;
-  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
-    docdir=$ac_optarg ;;
-
-  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
-    ac_prev=dvidir ;;
-  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
-    dvidir=$ac_optarg ;;
-
-  -enable-* | --enable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=\$ac_optarg ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix=$ac_optarg ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he | -h)
-    ac_init_help=long ;;
-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-    ac_init_help=recursive ;;
-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-    ac_init_help=short ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host_alias ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host_alias=$ac_optarg ;;
-
-  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
-    ac_prev=htmldir ;;
-  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
-  | --ht=*)
-    htmldir=$ac_optarg ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir=$ac_optarg ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir=$ac_optarg ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir=$ac_optarg ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir=$ac_optarg ;;
-
-  -localedir | --localedir | --localedi | --localed | --locale)
-    ac_prev=localedir ;;
-  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
-    localedir=$ac_optarg ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst | --locals)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
-    localstatedir=$ac_optarg ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir=$ac_optarg ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c | -n)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir=$ac_optarg ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix=$ac_optarg ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix=$ac_optarg ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix=$ac_optarg ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name=$ac_optarg ;;
-
-  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
-    ac_prev=pdfdir ;;
-  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
-    pdfdir=$ac_optarg ;;
-
-  -psdir | --psdir | --psdi | --psd | --ps)
-    ac_prev=psdir ;;
-  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
-    psdir=$ac_optarg ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir=$ac_optarg ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir=$ac_optarg ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site=$ac_optarg ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir=$ac_optarg ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir=$ac_optarg ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target_alias ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target_alias=$ac_optarg ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers | -V)
-    ac_init_version=: ;;
-
-  -with-* | --with-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=\$ac_optarg ;;
-
-  -without-* | --without-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=no ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes=$ac_optarg ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries=$ac_optarg ;;
-
-  -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
-    ;;
-
-  *=*)
-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-    # Reject names that are not valid shell variable names.
-    case $ac_envvar in #(
-      '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
-    esac
-    eval $ac_envvar=\$ac_optarg
-    export $ac_envvar ;;
-
-  *)
-    # FIXME: should be removed in autoconf 3.0.
-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  as_fn_error $? "missing argument to $ac_option"
-fi
-
-if test -n "$ac_unrecognized_opts"; then
-  case $enable_option_checking in
-    no) ;;
-    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
-  esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
-		datadir sysconfdir sharedstatedir localstatedir includedir \
-		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
-do
-  eval ac_val=\$$ac_var
-  # Remove trailing slashes.
-  case $ac_val in
-    */ )
-      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
-      eval $ac_var=\$ac_val;;
-  esac
-  # Be sure to have absolute directory names.
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* )  continue;;
-    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
-  esac
-  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
-  if test "x$build_alias" = x; then
-    cross_compiling=maybe
-  elif test "x$build_alias" != "x$host_alias"; then
-    cross_compiling=yes
-  fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  as_fn_error $? "working directory cannot be determined"
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  as_fn_error $? "pwd does not report name of working directory"
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then the parent directory.
-  ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_myself" : 'X\(//\)[^/]' \| \
-	 X"$as_myself" : 'X\(//\)$' \| \
-	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  srcdir=$ac_confdir
-  if test ! -r "$srcdir/$ac_unique_file"; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
-  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
-	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
-	pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
-  srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
-  eval ac_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_env_${ac_var}_value=\$${ac_var}
-  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
-  # Omit some internal or obsolete options to make the list less imposing.
-  # This message is too long to be a string in the A/UX 3.1 sh.
-  cat <<_ACEOF
-\`configure' configures eccodes   to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE.  See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
-  -h, --help              display this help and exit
-      --help=short        display options specific to this package
-      --help=recursive    display the short help of all the included packages
-  -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking ...' messages
-      --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
-  -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
-
-Installation directories:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          @<:@@S|@ac_default_prefix@:>@
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          @<:@PREFIX@:>@
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
-  --bindir=DIR            user executables [EPREFIX/bin]
-  --sbindir=DIR           system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR        program executables [EPREFIX/libexec]
-  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --libdir=DIR            object code libraries [EPREFIX/lib]
-  --includedir=DIR        C header files [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
-  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
-  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
-  --infodir=DIR           info documentation [DATAROOTDIR/info]
-  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
-  --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root @<:@DATAROOTDIR/doc/eccodes@:>@
-  --htmldir=DIR           html documentation [DOCDIR]
-  --dvidir=DIR            dvi documentation [DOCDIR]
-  --pdfdir=DIR            pdf documentation [DOCDIR]
-  --psdir=DIR             ps documentation [DOCDIR]
-_ACEOF
-
-  cat <<\_ACEOF
-
-Program names:
-  --program-prefix=PREFIX            prepend PREFIX to installed program names
-  --program-suffix=SUFFIX            append SUFFIX to installed program names
-  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
-
-System types:
-  --build=BUILD     configure for building on BUILD [guessed]
-  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-  case $ac_init_help in
-     short | recursive ) echo "Configuration of eccodes  :";;
-   esac
-  cat <<\_ACEOF
-
-Optional Features:
-  --disable-option-checking  ignore unrecognized --enable/--with options
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-shared@<:@=PKGS@:>@  build shared libraries @<:@default=yes@:>@
-  --enable-static@<:@=PKGS@:>@  build static libraries @<:@default=yes@:>@
-  --enable-fast-install@<:@=PKGS@:>@ 
-                          optimize for fast installation @<:@default=yes@:>@
-  --disable-libtool-lock  avoid locking (might break parallel builds)
-  --enable-dependency-tracking 
-                          do not reject slow dependency extractors
-  --disable-dependency-tracking 
-                          speeds up one-time build
-  --enable-silent-rules   less verbose build output (undo: "make V=1")
-  --disable-silent-rules  verbose build output (undo: "make V=0")
-  --enable-pthread        enable POSIX threads @<:@by default disabled@:>@
-  --enable-ibmpower67_opt enable IBM POWER 6/7 optimisations @<:@by default
-                          disabled@:>@
-  --disable-ieee-native   disable ieee native packing
-  --enable-align-memory   enable memory alignment @<:@by default disabled@:>@
-  --enable-vector         enable vectorised code @<:@by default disabled@:>@
-  --enable-memory-management 
-                          enable memory @<:@by default disabled@:>@
-  --enable-development    enable development configuration @<:@by default
-                          disabled@:>@
-  --disable-largefile     omit support for large files
-  --disable-fortran       disable fortran interface @<:@by default enabled@:>@
-  --enable-timer          enable timer @<:@by default disabled@:>@
-  --enable-omp-packing    enable OpenMP multithreaded packing @<:@by default
-                          disabled@:>@
-  --disable-jpeg          disable jpeg 2000 for grib 2 decoding/encoding @<:@by
-                          default enabled@:>@
-  --enable-install-system-perl 
-                          perl modules will install in the standard perl
-                          installation
-  --enable-python         Enable the Python interface in the build @<:@by default
-                          disabled@:>@
-  --disable-numpy         Disable NumPy as the data handling package for the
-                          Python interface @<:@by default enabled@:>@
-  --enable-werror-always  enable -Werror despite compiler version
-
-Optional Packages:
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-pic@<:@=PKGS@:>@       try to use only PIC/non-PIC objects @<:@default=use
-                          both@:>@
-  --with-gnu-ld           assume the C compiler uses GNU ld @<:@default=no@:>@
-  --with-sysroot=DIR Search for dependent libraries within DIR
-                        (or the compiler's sysroot if not specified).
-  --with-rpm-release=NUMBER       The rpms will use this release number  (defaults to 1)
-  --with-ifs-samples=ifs-samples-dir 
-                          ifs_samples will be installed in ifs-samples-dir
-  --with-emos=EMOS        use emos for tests
-  --with-fortranlibdir=FORTRANDIR 
-                          fortran libraries directory
-  --with-fortranlibs=FORTRANLIBS 
-                          fortran libraries to link from C
-  --with-netcdf=NETCDF    enable netcdf encoding/decoding using netcdf library
-                          in NETCDF
-  --with-jasper=JASPER    use specified jasper installation directory
-  --with-openjpeg=OPENJPEG 
-                          use specified openjpeg installation directory
-  --with-aec=DIR          use specified libaec installation directory
-  --with-png-support      add support for png decoding/encoding
-  --with-perl=PERL        use specified Perl binary to configure Perl grib_api
-  --with-perl-options=OPTIONS 
-                          options to pass on command-line when generating Perl
-                          grib_api's Makefile from Makefile.PL
-
-Some influential environment variables:
-  CC          C compiler command
-  CFLAGS      C compiler flags
-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
-              nonstandard directory <lib dir>
-  LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
-              you have headers in a nonstandard directory <include dir>
-  CPP         C preprocessor
-  YACC        The `Yet Another Compiler Compiler' implementation to use.
-              Defaults to the first program found out of: `bison -y', `byacc',
-              `yacc'.
-  YFLAGS      The list of arguments that will be passed by default to @S|@YACC.
-              This script will default YFLAGS to the empty string to avoid a
-              default value of `-d' given by some make applications.
-  F77         Fortran 77 compiler command
-  FFLAGS      Fortran 77 compiler flags
-  FC          Fortran compiler command
-  FCFLAGS     Fortran compiler flags
-  PYTHON      the Python interpreter
-  PYTHON_INCLUDES 
-              Include flags for python
-  PYTHON_LDFLAGS 
-              Link flags for python
-  PYTHON_CFLAGS 
-              C flags for python
-  PYTHON_LIBS Libraries for python
-  PYTHON_CONFIG 
-              Path to python-config
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to <Software.Support at ecmwf.int>.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
-  # If there are subdirs, report their specific --help.
-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d "$ac_dir" ||
-      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
-      continue
-    ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-    cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
-    if test -f "$ac_srcdir/configure.gnu"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
-    elif test -f "$ac_srcdir/configure"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure" --help=recursive
-    else
-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-    fi || ac_status=$?
-    cd "$ac_pwd" || { ac_status=$?; break; }
-  done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
-  cat <<\_ACEOF
-eccodes configure  
-generated by GNU Autoconf 2.69
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
-  exit
-fi
-
-## ------------------------ ##
-## Autoconf initialization. ##
-## ------------------------ ##
-
-@%:@ ac_fn_c_try_compile LINENO
-@%:@ --------------------------
-@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_c_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_c_try_compile
-
-@%:@ ac_fn_c_try_link LINENO
-@%:@ -----------------------
-@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_c_try_link
-
-@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-@%:@ -------------------------------------------------------
-@%:@ Tests whether HEADER exists and can be compiled using the include files in
-@%:@ INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-@%:@include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} @%:@ ac_fn_c_check_header_compile
-
-@%:@ ac_fn_c_try_cpp LINENO
-@%:@ ----------------------
-@%:@ Try to preprocess conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } > conftest.i && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_c_try_cpp
-
-@%:@ ac_fn_c_try_run LINENO
-@%:@ ----------------------
-@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded. Assumes
-@%:@ that executables *can* be run.
-ac_fn_c_try_run ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=$ac_status
-fi
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_c_try_run
-
-@%:@ ac_fn_c_check_func LINENO FUNC VAR
-@%:@ ----------------------------------
-@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly
-ac_fn_c_check_func ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $2 innocuous_$2
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $2 (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $2
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $2 ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$2 || defined __stub___$2
-choke me
-#endif
-
-int
-main ()
-{
-return $2 ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} @%:@ ac_fn_c_check_func
-
-@%:@ ac_fn_f77_try_compile LINENO
-@%:@ ----------------------------
-@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_f77_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_f77_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_f77_try_compile
-
-@%:@ ac_fn_f77_try_link LINENO
-@%:@ -------------------------
-@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_f77_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_f77_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_f77_try_link
-
-@%:@ ac_fn_fc_try_compile LINENO
-@%:@ ---------------------------
-@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_fc_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_fc_try_compile
-
-@%:@ ac_fn_fc_try_link LINENO
-@%:@ ------------------------
-@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_fc_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_fc_try_link
-
-@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-@%:@ -------------------------------------------------------
-@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using
-@%:@ the include files in INCLUDES and setting the cache variable VAR
-@%:@ accordingly.
-ac_fn_c_check_header_mongrel ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval \${$3+:} false; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-@%:@include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_header_compiler=yes
-else
-  ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
-  yes:no: )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ----------------------------------------- ##
-## Report this to Software.Support at ecmwf.int ##
-## ----------------------------------------- ##"
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} @%:@ ac_fn_c_check_header_mongrel
-
-@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-@%:@ -------------------------------------------
-@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache
-@%:@ variable VAR accordingly.
-ac_fn_c_check_type ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=no"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof ($2))
-	 return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof (($2)))
-	    return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  
-else
-  eval "$3=yes"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} @%:@ ac_fn_c_check_type
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by eccodes $as_me  , which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
-
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    $as_echo "PATH: $as_dir"
-  done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
-  for ac_arg
-  do
-    case $ac_arg in
-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-    | -silent | --silent | --silen | --sile | --sil)
-      continue ;;
-    *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    case $ac_pass in
-    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
-    2)
-      as_fn_append ac_configure_args1 " '$ac_arg'"
-      if test $ac_must_keep_next = true; then
-	ac_must_keep_next=false # Got value, back to normal.
-      else
-	case $ac_arg in
-	  *=* | --config-cache | -C | -disable-* | --disable-* \
-	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-	  | -with-* | --with-* | -without-* | --without-* | --x)
-	    case "$ac_configure_args0 " in
-	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-	    esac
-	    ;;
-	  -* ) ac_must_keep_next=true ;;
-	esac
-      fi
-      as_fn_append ac_configure_args " '$ac_arg'"
-      ;;
-    esac
-  done
-done
-{ ac_configure_args0=; unset ac_configure_args0;}
-{ ac_configure_args1=; unset ac_configure_args1;}
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log.  We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
-  # Save into config.log some information that might help in debugging.
-  {
-    echo
-
-    $as_echo "## ---------------- ##
-## Cache variables. ##
-## ---------------- ##"
-    echo
-    # The following way of writing the cache mishandles newlines in values,
-(
-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-  (set) 2>&1 |
-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      sed -n \
-	"s/'\''/'\''\\\\'\'''\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
-      ;; #(
-    *)
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-)
-    echo
-
-    $as_echo "## ----------------- ##
-## Output variables. ##
-## ----------------- ##"
-    echo
-    for ac_var in $ac_subst_vars
-    do
-      eval ac_val=\$$ac_var
-      case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-      esac
-      $as_echo "$ac_var='\''$ac_val'\''"
-    done | sort
-    echo
-
-    if test -n "$ac_subst_files"; then
-      $as_echo "## ------------------- ##
-## File substitutions. ##
-## ------------------- ##"
-      echo
-      for ac_var in $ac_subst_files
-      do
-	eval ac_val=\$$ac_var
-	case $ac_val in
-	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-	esac
-	$as_echo "$ac_var='\''$ac_val'\''"
-      done | sort
-      echo
-    fi
-
-    if test -s confdefs.h; then
-      $as_echo "## ----------- ##
-## confdefs.h. ##
-## ----------- ##"
-      echo
-      cat confdefs.h
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core *.core core.conftest.* &&
-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-$as_echo "/* confdefs.h */" > confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
-  # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in @%:@((
-    -*)  ac_site_file1=./$CONFIG_SITE;;
-    */*) ac_site_file1=$CONFIG_SITE;;
-    *)   ac_site_file1=./$CONFIG_SITE;;
-  esac
-elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
-else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
-  test "x$ac_site_file" = xNONE && continue
-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
-    sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file" \
-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
-  fi
-done
-
-if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special files
-  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
-  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . "$cache_file";;
-      *)                      . "./$cache_file";;
-    esac
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val=\$ac_cv_env_${ac_var}_value
-  eval ac_new_val=\$ac_env_${ac_var}_value
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,);;
-    *)
-      if test "x$ac_old_val" != "x$ac_new_val"; then
-	# differences in whitespace do not lead to failure.
-	ac_old_val_w=`echo x $ac_old_val`
-	ac_new_val_w=`echo x $ac_new_val`
-	if test "$ac_old_val_w" != "$ac_new_val_w"; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-	  ac_cache_corrupted=:
-	else
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
-	  eval $ac_var=\$ac_old_val
-	fi
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-    *) ac_arg=$ac_var=$ac_new_val ;;
-    esac
-    case " $ac_configure_args " in
-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-ac_aux_dir=
-for ac_dir in config "$srcdir"/config; do
-  if test -f "$ac_dir/install-sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f "$ac_dir/install.sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  elif test -f "$ac_dir/shtool"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/shtool install -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  as_fn_error $? "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
-
-
-
-case `pwd` in
-  *\ * | *\	*)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
-$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
-esac
-
-
-
-macro_version='2.4.2'
-macro_revision='1.3337'
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
-  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$host_alias" = x; then
-  ac_cv_host=$ac_cv_build
-else
-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-# Backslashify metacharacters that are still active within
-# double-quoted strings.
-sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
-ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
-$as_echo_n "checking how to print strings... " >&6; }
-# Test print first, because it will be a builtin if present.
-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
-   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='print -r --'
-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='printf %s\n'
-else
-  # Use this function as a fallback that always works.
-  func_fallback_echo ()
-  {
-    eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-  }
-  ECHO='func_fallback_echo'
-fi
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO "" 
-}
-
-case "$ECHO" in
-  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
-$as_echo "printf" >&6; } ;;
-  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
-$as_echo "print -r" >&6; } ;;
-  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
-$as_echo "cat" >&6; } ;;
-esac
-
-
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $@%:@ != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-	;;
-    [ab].out )
-	# We found the default executable, but exeext='' is most
-	# certainly right.
-	break;;
-    *.* )
-	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-	then :; else
-	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	fi
-	# We set ac_cv_exeext here because the later test for it is not
-	# safe: cross compilers may not add the suffix if given an `-o'
-	# argument, so we may need to know it at that point already.
-	# Even if this section looks crufty: it has the advantage of
-	# actually working.
-	break;;
-    * )
-	break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
-  ac_file=''
-fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	  break;;
-    * ) break;;
-  esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
-  { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-  if { ac_try='./conftest$ac_cv_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-	cross_compiling=yes
-    else
-	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-  
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-     for ac_i in 1 2 3 4 5 6 7; do
-       ac_script="$ac_script$as_nl$ac_script"
-     done
-     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     { ac_script=; unset ac_script;}
-     if test -z "$SED"; then
-  ac_path_SED_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_SED" || continue
-# Check for GNU ac_path_SED and select it if it is found.
-  # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
-  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
-    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_SED_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_SED="$ac_path_SED"
-      ac_path_SED_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_SED_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_SED"; then
-    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
-  fi
-else
-  ac_cv_path_SED=$SED
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
-  rm -f conftest.sed
-
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
- 
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in egrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_EGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_EGREP=$EGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
- 
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
-$as_echo_n "checking for fgrep... " >&6; }
-if ${ac_cv_path_FGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
-   then ac_cv_path_FGREP="$GREP -F"
-   else
-     if test -z "$FGREP"; then
-  ac_path_FGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in fgrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_FGREP" || continue
-# Check for GNU ac_path_FGREP and select it if it is found.
-  # Check for GNU $ac_path_FGREP
-case `"$ac_path_FGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'FGREP' >> "conftest.nl"
-    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_FGREP="$ac_path_FGREP"
-      ac_path_FGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_FGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_FGREP"; then
-    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_FGREP=$FGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
-$as_echo "$ac_cv_path_FGREP" >&6; }
- FGREP="$ac_cv_path_FGREP"
- 
-
-test -z "$GREP" && GREP=grep
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-
-
-
-@%:@ Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
-  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
-  with_gnu_ld=no
-fi
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [\\/]* | ?:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
-fi
-if ${lt_cv_path_LD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
-fi
-
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
-
-
-    
-    
-    
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
-$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if ${lt_cv_path_NM+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
-	#   nm: unknown option "B" ignored
-	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
-	  lt_cv_path_NM="$tmp_nm -B"
-	  break
-	  ;;
-	*)
-	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-	  */dev/null*)
-	    lt_cv_path_NM="$tmp_nm -p"
-	    break
-	    ;;
-	  *)
-	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-	    continue # so that we can try to find one that supports BSD flags
-	    ;;
-	  esac
-	  ;;
-	esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  : ${lt_cv_path_NM=no}
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
-$as_echo "$lt_cv_path_NM" >&6; }
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$DUMPBIN"; then :
-    # Let the user override the test.
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in dumpbin "link -dump"
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DUMPBIN"; then
-  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DUMPBIN=$ac_cv_prog_DUMPBIN
-if test -n "$DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
-$as_echo "$DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$DUMPBIN" && break
-  done
-fi
-if test -z "$DUMPBIN"; then
-  ac_ct_DUMPBIN=$DUMPBIN
-  for ac_prog in dumpbin "link -dump"
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DUMPBIN"; then
-  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
-if test -n "$ac_ct_DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
-$as_echo "$ac_ct_DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_DUMPBIN" && break
-done
-
-  if test "x$ac_ct_DUMPBIN" = x; then
-    DUMPBIN=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DUMPBIN=$ac_ct_DUMPBIN
-  fi
-fi
-
-    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
-    *COFF*)
-      DUMPBIN="$DUMPBIN -symbols"
-      ;;
-    *)
-      DUMPBIN=:
-      ;;
-    esac
-  fi
-  
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
-  fi
-fi
-test -z "$NM" && NM=nm
-
-
-    
-    
-    
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
-$as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if ${lt_cv_nm_interface+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
-  cat conftest.out >&5
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
-$as_echo "$lt_cv_nm_interface" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-# find the maximum length of command line arguments
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
-$as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if ${lt_cv_sys_max_cmd_len+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-    i=0
-  teststring="ABCD"
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  mint*)
-    # On MiNT this can take a long time and run out of memory.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  os2*)
-    # The test takes a long time on OS/2.
-    lt_cv_sys_max_cmd_len=8192
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[	 ]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
-	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-	      test $i != 17 # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-
-fi
-
-if test -n $lt_cv_sys_max_cmd_len ; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
-$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-    
-    
-    
-
-
-: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
-$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,b/c, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
-$as_echo "$xsi_shell" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
-$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
-$as_echo "$lt_shell_append" >&6; }
-
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
-else
-  lt_unset=false
-fi
-
-    
-    
-    
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
-  ;;
-esac
-
-    
-    
-    
-
-    
-    
-    
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-if ${lt_cv_to_host_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-        ;;
-    esac
-    ;;
-  *-*-cygwin* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_noop
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-        ;;
-    esac
-    ;;
-  * ) # unhandled hosts (and "normal" native builds)
-    lt_cv_to_host_file_cmd=func_convert_file_noop
-    ;;
-esac
-
-fi
-
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-$as_echo "$lt_cv_to_host_file_cmd" >&6; }
-
-    
-    
-    
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-if ${lt_cv_to_tool_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  #assume ordinary cross tools, or native build.
-lt_cv_to_tool_file_cmd=func_convert_file_noop
-case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-        ;;
-    esac
-    ;;
-esac
-
-fi
-
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
-
-    
-    
-    
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
-$as_echo_n "checking for $LD option to reload object files... " >&6; }
-if ${lt_cv_ld_reload_flag+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_reload_flag='-r'
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
-$as_echo "$lt_cv_ld_reload_flag" >&6; }
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    if test "$GCC" != yes; then
-      reload_cmds=false
-    fi
-    ;;
-  darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-
-    
-    
-    
-
-    
-    
-    
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OBJDUMP"; then
-  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
-  ac_ct_OBJDUMP=$OBJDUMP
-  # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OBJDUMP"; then
-  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OBJDUMP" = x; then
-    OBJDUMP="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OBJDUMP=$ac_ct_OBJDUMP
-  fi
-else
-  OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-    
-    
-    
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
-$as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if ${lt_cv_deplibs_check_method+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[4-9]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[45]*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
-  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    # Keep this pattern in sync with the one in func_win32_libid.
-    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-cegcc*)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-haiku*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[3-9]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
-$as_echo "$lt_cv_deplibs_check_method" >&6; }
-
-file_magic_glob=
-want_nocaseglob=no
-if test "$build" = "$host"; then
-  case $host_os in
-  mingw* | pw32*)
-    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-      want_nocaseglob=yes
-    else
-      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
-    fi
-    ;;
-  esac
-fi
-
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DLLTOOL"; then
-  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
-  ac_ct_DLLTOOL=$DLLTOOL
-  # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DLLTOOL"; then
-  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DLLTOOL" = x; then
-    DLLTOOL="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DLLTOOL=$ac_ct_DLLTOOL
-  fi
-else
-  DLLTOOL="$ac_cv_prog_DLLTOOL"
-fi
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-    
-    
-    
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_sharedlib_from_linklib_cmd='unknown'
-
-case $host_os in
-cygwin* | mingw* | pw32* | cegcc*)
-  # two different shell functions defined in ltmain.sh
-  # decide which to use based on capabilities of $DLLTOOL
-  case `$DLLTOOL --help 2>&1` in
-  *--identify-strict*)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-    ;;
-  *)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-    ;;
-  esac
-  ;;
-*)
-  # fallback: assume linklib IS sharedlib
-  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-
-
-    
-    
-    
-
-
-
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in ar
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$AR" && break
-  done
-fi
-if test -z "$AR"; then
-  ac_ct_AR=$AR
-  for ac_prog in ar
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AR="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_AR" && break
-done
-
-  if test "x$ac_ct_AR" = x; then
-    AR="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AR=$ac_ct_AR
-  fi
-fi
-
-: ${AR=ar}
-: ${AR_FLAGS=cru}
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
-$as_echo_n "checking for archiver @FILE support... " >&6; }
-if ${lt_cv_ar_at_file+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ar_at_file=no
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  echo conftest.$ac_objext > conftest.lst
-      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
-      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-      if test "$ac_status" -eq 0; then
-	# Ensure the archiver fails upon bogus file names.
-	rm -f conftest.$ac_objext libconftest.a
-	{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	if test "$ac_status" -ne 0; then
-          lt_cv_ar_at_file=@
-        fi
-      fi
-      rm -f conftest.* libconftest.a
-     
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
-$as_echo "$lt_cv_ar_at_file" >&6; }
-
-if test "x$lt_cv_ar_at_file" = xno; then
-  archiver_list_spec=
-else
-  archiver_list_spec=$lt_cv_ar_at_file
-fi
-
-    
-    
-    
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-test -z "$STRIP" && STRIP=:
-
-    
-    
-    
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-test -z "$RANLIB" && RANLIB=:
-
-    
-    
-    
-
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
-fi
-
-case $host_os in
-  darwin*)
-    lock_old_archive_extraction=yes ;;
-  *)
-    lock_old_archive_extraction=no ;;
-esac
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-for ac_prog in gawk mawk nawk awk
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AWK"; then
-  ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$AWK" && break
-done
-
-
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
-$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if ${lt_cv_sys_global_symbol_pipe+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[BCDEGRST]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[BCDT]'
-  ;;
-cygwin* | mingw* | pw32* | cegcc*)
-  symcode='[ABCDGISTW]'
-  ;;
-hpux*)
-  if test "$host_cpu" = ia64; then
-    symcode='[ABCDEGRST]'
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[BCDEGRST]'
-  ;;
-osf*)
-  symcode='[BCDEGQRST]'
-  ;;
-solaris*)
-  symcode='[BDRT]'
-  ;;
-sco3.2v5*)
-  symcode='[DT]'
-  ;;
-sysv4.2uw2*)
-  symcode='[DT]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[ABDT]'
-  ;;
-sysv4)
-  symcode='[DFNSTU]'
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[ABCDGIRSTW]' ;;
-esac
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function
-    # and D for any global variable.
-    # Also find C++ and __fastcall symbols from MSVC++,
-    # which start with @ or ?.
-    lt_cv_sys_global_symbol_pipe="$AWK '"\
-"     {last_section=section; section=\$ 3};"\
-"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
-"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     \$ 0!~/External *\|/{next};"\
-"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-"     {if(hide[section]) next};"\
-"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
-"     ' prfx=^$ac_symprfx"
-  else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-  fi
-  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
-  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-	mv -f "$nlist"T "$nlist"
-      else
-	rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-	  cat <<_LT_EOF > conftest.$ac_ext
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT@&t at _DLSYM_CONST
-#elif defined(__osf__)
-/* This system does not cope well with relocations in const data.  */
-# define LT@&t at _DLSYM_CONST
-#else
-# define LT@&t at _DLSYM_CONST const
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
-	  # Now generate the symbol file.
-	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
-	  cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols.  */
-LT@&t at _DLSYM_CONST struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-	  cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-	  # Now try linking the two files.
-	  mv conftest.$ac_objext conftstm.$ac_objext
-	  lt_globsym_save_LIBS=$LIBS
-	  lt_globsym_save_CFLAGS=$CFLAGS
-	  LIBS="conftstm.$ac_objext"
-	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
-	    pipe_works=yes
-	  fi
-	  LIBS=$lt_globsym_save_LIBS
-	  CFLAGS=$lt_globsym_save_CFLAGS
-	else
-	  echo "cannot find nm_test_func in $nlist" >&5
-	fi
-      else
-	echo "cannot find nm_test_var in $nlist" >&5
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
-    fi
-  else
-    echo "$progname: failed program was:" >&5
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-
-fi
-
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
-$as_echo "ok" >&6; }
-fi
-
-# Response file support.
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-  nm_file_list_spec='@'
-elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
-  nm_file_list_spec='@'
-fi
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-$as_echo_n "checking for sysroot... " >&6; }
-
-@%:@ Check whether --with-sysroot was given.
-if test "${with_sysroot+set}" = set; then :
-  withval=$with_sysroot; 
-else
-  with_sysroot=no
-fi
-
-
-lt_sysroot=
-case ${with_sysroot} in #(
- yes)
-   if test "$GCC" = yes; then
-     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-   fi
-   ;; #(
- /*)
-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-   ;; #(
- no|'')
-   ;; #(
- *)
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
-$as_echo "${with_sysroot}" >&6; }
-   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
-   ;;
-esac
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-$as_echo "${lt_sysroot:-no}" >&6; }
-
-    
-    
-    
-
-@%:@ Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then :
-  enableval=$enable_libtool_lock; 
-fi
-
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-	HPUX_IA64_MODE="32"
-	;;
-      *ELF-64*)
-	HPUX_IA64_MODE="64"
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    if test "$lt_cv_prog_gnu_ld" = yes; then
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -melf32bsmip"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -melf32bmipn32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -melf64bmip"
-	;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -32"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -n32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -64"
-	  ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_i386_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
-	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
-	    LD="${LD-ld} -m elf32ppclinux"
-	    ;;
-	  s390x-*linux*)
-	    LD="${LD-ld} -m elf_s390"
-	    ;;
-	  sparc64-*linux*)
-	    LD="${LD-ld} -m elf32_sparc"
-	    ;;
-	esac
-	;;
-      *64-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_x86_64_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_x86_64"
-	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
-	    LD="${LD-ld} -m elf64ppc"
-	    ;;
-	  s390*-*linux*|s390*-*tpf*)
-	    LD="${LD-ld} -m elf64_s390"
-	    ;;
-	  sparc*-*linux*)
-	    LD="${LD-ld} -m elf64_sparc"
-	    ;;
-	esac
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
-$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
-if ${lt_cv_cc_needs_belf+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_cc_needs_belf=yes
-else
-  lt_cv_cc_needs_belf=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-     ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
-$as_echo "$lt_cv_cc_needs_belf" >&6; }
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-*-*solaris*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*)
-        case $host in
-        i?86-*-solaris*)
-          LD="${LD-ld} -m elf_x86_64"
-          ;;
-        sparc*-*-solaris*)
-          LD="${LD-ld} -m elf64_sparc"
-          ;;
-        esac
-        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
-        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
-          LD="${LD-ld}_sol2"
-        fi
-        ;;
-      *)
-	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-	  LD="${LD-ld} -64"
-	fi
-	;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks="$enable_libtool_lock"
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
-set dummy ${ac_tool_prefix}mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$MANIFEST_TOOL"; then
-  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
-if test -n "$MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-$as_echo "$MANIFEST_TOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
-  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
-  # Extract the first word of "mt", so it can be a program name with args.
-set dummy mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_MANIFEST_TOOL"; then
-  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
-if test -n "$ac_ct_MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_MANIFEST_TOOL" = x; then
-    MANIFEST_TOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
-  fi
-else
-  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
-fi
-
-test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-if ${lt_cv_path_mainfest_tool+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_path_mainfest_tool=no
-  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
-  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-  cat conftest.err >&5
-  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-    lt_cv_path_mainfest_tool=yes
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-$as_echo "$lt_cv_path_mainfest_tool" >&6; }
-if test "x$lt_cv_path_mainfest_tool" != xyes; then
-  MANIFEST_TOOL=:
-fi
-
-    
-    
-    
-
-
-  case $host_os in
-    rhapsody* | darwin*)
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DSYMUTIL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DSYMUTIL"; then
-  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DSYMUTIL=$ac_cv_prog_DSYMUTIL
-if test -n "$DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
-$as_echo "$DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DSYMUTIL"; then
-  ac_ct_DSYMUTIL=$DSYMUTIL
-  # Extract the first word of "dsymutil", so it can be a program name with args.
-set dummy dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DSYMUTIL"; then
-  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
-if test -n "$ac_ct_DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
-$as_echo "$ac_ct_DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DSYMUTIL" = x; then
-    DSYMUTIL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DSYMUTIL=$ac_ct_DSYMUTIL
-  fi
-else
-  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
-set dummy ${ac_tool_prefix}nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NMEDIT"; then
-  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-NMEDIT=$ac_cv_prog_NMEDIT
-if test -n "$NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
-$as_echo "$NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_NMEDIT"; then
-  ac_ct_NMEDIT=$NMEDIT
-  # Extract the first word of "nmedit", so it can be a program name with args.
-set dummy nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_NMEDIT"; then
-  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_NMEDIT="nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
-if test -n "$ac_ct_NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
-$as_echo "$ac_ct_NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_NMEDIT" = x; then
-    NMEDIT=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    NMEDIT=$ac_ct_NMEDIT
-  fi
-else
-  NMEDIT="$ac_cv_prog_NMEDIT"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
-set dummy ${ac_tool_prefix}lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$LIPO"; then
-  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-LIPO=$ac_cv_prog_LIPO
-if test -n "$LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
-$as_echo "$LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_LIPO"; then
-  ac_ct_LIPO=$LIPO
-  # Extract the first word of "lipo", so it can be a program name with args.
-set dummy lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_LIPO"; then
-  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_LIPO="lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
-if test -n "$ac_ct_LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
-$as_echo "$ac_ct_LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_LIPO" = x; then
-    LIPO=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    LIPO=$ac_ct_LIPO
-  fi
-else
-  LIPO="$ac_cv_prog_LIPO"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL"; then
-  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL=$ac_cv_prog_OTOOL
-if test -n "$OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
-$as_echo "$OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL"; then
-  ac_ct_OTOOL=$OTOOL
-  # Extract the first word of "otool", so it can be a program name with args.
-set dummy otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL"; then
-  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OTOOL="otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
-if test -n "$ac_ct_OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
-$as_echo "$ac_ct_OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL" = x; then
-    OTOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL=$ac_ct_OTOOL
-  fi
-else
-  OTOOL="$ac_cv_prog_OTOOL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL64"; then
-  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL64=$ac_cv_prog_OTOOL64
-if test -n "$OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
-$as_echo "$OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL64"; then
-  ac_ct_OTOOL64=$OTOOL64
-  # Extract the first word of "otool64", so it can be a program name with args.
-set dummy otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL64"; then
-  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OTOOL64="otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
-if test -n "$ac_ct_OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
-$as_echo "$ac_ct_OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL64" = x; then
-    OTOOL64=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL64=$ac_ct_OTOOL64
-  fi
-else
-  OTOOL64="$ac_cv_prog_OTOOL64"
-fi
-
-    
-    
-    
-    
-
-    
-    
-    
-    
-
-    
-    
-    
-    
-
-    
-    
-    
-    
-
-    
-    
-    
-    
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
-$as_echo_n "checking for -single_module linker flag... " >&6; }
-if ${lt_cv_apple_cc_single_mod+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
-	# By default we will add the -single_module flag. You can override
-	# by either setting the environment variable LT_MULTI_MODULE
-	# non-empty at configure time, or by adding -multi_module to the
-	# link flags.
-	rm -rf libconftest.dylib*
-	echo "int foo(void){return 1;}" > conftest.c
-	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&5
-	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-	# If there is a non-empty error log, and "single_module"
-	# appears in it, assume the flag caused a linker warning
-        if test -s conftest.err && $GREP single_module conftest.err; then
-	  cat conftest.err >&5
-	# Otherwise, if the output was created with a 0 exit code from
-	# the compiler, it worked.
-	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
-	  lt_cv_apple_cc_single_mod=yes
-	else
-	  cat conftest.err >&5
-	fi
-	rm -rf libconftest.dylib*
-	rm -f conftest.*
-      fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
-$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
-$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if ${lt_cv_ld_exported_symbols_list+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_ld_exported_symbols_list=yes
-else
-  lt_cv_ld_exported_symbols_list=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-	LDFLAGS="$save_LDFLAGS"
-    
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
-$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
-$as_echo_n "checking for -force_load linker flag... " >&6; }
-if ${lt_cv_ld_force_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_force_load=no
-      cat > conftest.c << _LT_EOF
-int forced_loaded() { return 2;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
-      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
-      echo "$AR cru libconftest.a conftest.o" >&5
-      $AR cru libconftest.a conftest.o 2>&5
-      echo "$RANLIB libconftest.a" >&5
-      $RANLIB libconftest.a 2>&5
-      cat > conftest.c << _LT_EOF
-int main() { return 0;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
-      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
-      _lt_result=$?
-      if test -s conftest.err && $GREP force_load conftest.err; then
-	cat conftest.err >&5
-      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
-	lt_cv_ld_force_load=yes
-      else
-	cat conftest.err >&5
-      fi
-        rm -f conftest.err libconftest.a conftest conftest.c
-        rm -rf conftest.dSYM
-    
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
-$as_echo "$lt_cv_ld_force_load" >&6; }
-    case $host_os in
-    rhapsody* | darwin1.[012])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-	10.0,*86*-darwin8*|10.0,*-darwin[91]*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-	10.[012]*)
-	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-	10.*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    fi
-    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@ifdef __STDC__
-@%:@ include <limits.h>
-@%:@else
-@%:@ include <assert.h>
-@%:@endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-  
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@ifdef __STDC__
-@%:@ include <limits.h>
-@%:@else
-@%:@ include <assert.h>
-@%:@endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-  
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-  
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-  
-$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-		  inttypes.h stdint.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- 
-fi
-
-done
-
-
-for ac_header in dlfcn.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
-"
-if test "x$ac_cv_header_dlfcn_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_DLFCN_H 1
-_ACEOF
- 
-fi
-
-done
-
-
-
-
-
-# Set options
-@%:@ Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
-  enableval=$enable_shared; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_shared=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_shared=yes
-fi
-
-
-    
-    
-    
-    
-
-
-
-
-        enable_dlopen=no
-  
-
-  enable_win32_dll=no
-  
-
-            
-  @%:@ Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then :
-  enableval=$enable_static; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_static=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_static=yes
-fi
-
-
-    
-    
-    
-    
-
-
-
-  
-@%:@ Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then :
-  withval=$with_pic; lt_p=${PACKAGE-default}
-    case $withval in
-    yes|no) pic_mode=$withval ;;
-    *)
-      pic_mode=default
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for lt_pkg in $withval; do
-	IFS="$lt_save_ifs"
-	if test "X$lt_pkg" = "X$lt_p"; then
-	  pic_mode=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  pic_mode=default
-fi
-
-
-test -z "$pic_mode" && pic_mode=default
-
-
-    
-    
-    
-
-
-  @%:@ Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then :
-  enableval=$enable_fast_install; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_fast_install=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_fast_install=yes
-fi
-
-
-
-    
-    
-    
-
-
-  
-
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-
-
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-test -z "$LN_S" && LN_S="ln -s"
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-
-if test -n "${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
-$as_echo_n "checking for objdir... " >&6; }
-if ${lt_cv_objdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
-$as_echo "$lt_cv_objdir" >&6; }
-objdir=$lt_cv_objdir
-
-    
-    
-    
-
-cat >>confdefs.h <<_ACEOF
-@%:@define LT_OBJDIR "$lt_cv_objdir/"
-_ACEOF
-
-
-
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
-$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/${ac_tool_prefix}file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool at gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-    
-    
-    
-
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
-$as_echo_n "checking for file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/file"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool at gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  else
-    MAGIC_CMD=:
-  fi
-fi
-
-  fi
-  ;;
-esac
-
-# Use C for the default configuration in the libtool script
-
-lt_save_CC="$CC"
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-objext=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-  
-lt_prog_compiler_no_builtin_flag=
-
-if test "$GCC" = yes; then
-  case $cc_basename in
-  nvcc*)
-    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
-  *)
-    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
-  esac
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_rtti_exceptions=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="-fno-rtti -fno-exceptions"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_rtti_exceptions=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
-
-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
-    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
-else
-    :
-fi
-
-fi
-
-    
-    
-    
-
-
-  lt_prog_compiler_wl=
-lt_prog_compiler_pic=
-lt_prog_compiler_static=
-
-
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl='-Wl,'
-    lt_prog_compiler_static='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      lt_prog_compiler_pic='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      lt_prog_compiler_wl='-Xlinker '
-      if test -n "$lt_prog_compiler_pic"; then
-        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static='-Bstatic'
-      else
-	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-KPIC'
-	lt_prog_compiler_static='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-fPIC'
-	lt_prog_compiler_static='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='--shared'
-	lt_prog_compiler_static='--static'
-	;;
-      nagfor*)
-	# NAG Fortran compiler
-	lt_prog_compiler_wl='-Wl,-Wl,,'
-	lt_prog_compiler_pic='-PIC'
-	lt_prog_compiler_static='-Bstatic'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-fpic'
-	lt_prog_compiler_static='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-qpic'
-	lt_prog_compiler_static='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl=''
-	  ;;
-	*Sun\ F* | *Sun*Fortran*)
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl='-Qoption ld '
-	  ;;
-	*Sun\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl='-Wl,'
-	  ;;
-        *Intel*\ [CF]*Compiler*)
-	  lt_prog_compiler_wl='-Wl,'
-	  lt_prog_compiler_pic='-fPIC'
-	  lt_prog_compiler_static='-static'
-	  ;;
-	*Portland\ Group*)
-	  lt_prog_compiler_wl='-Wl,'
-	  lt_prog_compiler_pic='-fpic'
-	  lt_prog_compiler_static='-Bstatic'
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-	lt_prog_compiler_wl='-Qoption ld ';;
-      *)
-	lt_prog_compiler_wl='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl='-Qoption ld '
-      lt_prog_compiler_pic='-PIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	lt_prog_compiler_pic='-Kconform_pic'
-	lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_can_build_shared=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic='-pic'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared=no
-      ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic=
-    ;;
-  *)
-    lt_prog_compiler_pic="$lt_prog_compiler_pic@&t@ -DPIC"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-$as_echo "$lt_cv_prog_compiler_pic" >&6; }
-lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic@&t@ -DPIC"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
-    case $lt_prog_compiler_pic in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
-     esac
-else
-    lt_prog_compiler_pic=
-     lt_prog_compiler_can_build_shared=no
-fi
-
-fi
-
-    
-    
-    
-
-
-
-    
-    
-    
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
-$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works" = xyes; then
-    :
-else
-    lt_prog_compiler_static=
-fi
-
-
-    
-    
-    
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-    
-    
-    
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-    
-    
-    
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  runpath_var=
-  allow_undefined_flag=
-  always_export_symbols=no
-  archive_cmds=
-  archive_expsym_cmds=
-  compiler_needs_object=no
-  enable_shared_with_static_runtimes=no
-  export_dynamic_flag_spec=
-  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic=no
-  hardcode_direct=no
-  hardcode_direct_absolute=no
-  hardcode_libdir_flag_spec=
-  hardcode_libdir_separator=
-  hardcode_minus_L=no
-  hardcode_shlibpath_var=unsupported
-  inherit_rpath=no
-  link_all_deplibs=unknown
-  module_cmds=
-  module_expsym_cmds=
-  old_archive_from_new_cmds=
-  old_archive_from_expsyms_cmds=
-  thread_safe_flag_spec=
-  whole_archive_flag_spec=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  esac
-
-  ld_shlibs=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
-    case $host_os in
-      aix*)
-	# The AIX port of GNU ld has always aspired to compatibility
-	# with the native linker.  However, as the warning in the GNU ld
-	# block says, versions before 2.19.5* couldn't really create working
-	# shared libraries, regardless of the interface used.
-	case `$LD -v 2>&1` in
-	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
-	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
-	  *)
-	    lt_use_gnu_ld_interface=yes
-	    ;;
-	esac
-	;;
-      *)
-	lt_use_gnu_ld_interface=yes
-	;;
-    esac
-  fi
-
-  if test "$lt_use_gnu_ld_interface" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      whole_archive_flag_spec=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	allow_undefined_flag=unsupported
-	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec='-L$libdir'
-      export_dynamic_flag_spec='${wl}--export-all-symbols'
-      allow_undefined_flag=unsupported
-      always_export_symbols=no
-      enable_shared_with_static_runtimes=yes
-      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    haiku*)
-      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      link_all_deplibs=yes
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=' $pic_flag'
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95* | pgfortran*)
-					# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  whole_archive_flag_spec=
-	  tmp_sharedflag='--shared' ;;
-	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	nvcc*)	# Cuda Compiler Driver 2.2
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object=yes
-	  ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf* | bgf* | bgxlf* | mpixlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-	  archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        ld_shlibs=no
-      fi
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    ld_shlibs=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-    esac
-
-    if test "$ld_shlibs" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec=
-      export_dynamic_flag_spec=
-      whole_archive_flag_spec=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag=unsupported
-      always_export_symbols=yes
-      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	hardcode_direct=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	# Also, AIX nm treats weak defined symbols like other global
-	# defined symbols, whereas GNU nm marks them as "W".
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds=''
-      hardcode_direct=yes
-      hardcode_direct_absolute=yes
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      file_list_spec='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[012]|aix4.[012].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  hardcode_direct=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  hardcode_minus_L=yes
-	  hardcode_libdir_flag_spec='-L$libdir'
-	  hardcode_libdir_separator=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      export_dynamic_flag_spec='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	allow_undefined_flag='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_="/usr/lib:/lib"
-  fi
-  
-fi
-
-  aix_libpath=$lt_cv_aix_libpath_
-fi
-
-        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-	  allow_undefined_flag="-z nodefs"
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_="/usr/lib:/lib"
-  fi
-  
-fi
-
-  aix_libpath=$lt_cv_aix_libpath_
-fi
-
-	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag=' ${wl}-bernotok'
-	  allow_undefined_flag=' ${wl}-berok'
-	  if test "$with_gnu_ld" = yes; then
-	    # We only use this code for GNU lds that support --whole-archive.
-	    whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	  else
-	    # Exported symbols can be pulled into shared objects from archives
-	    whole_archive_flag_spec='$convenience'
-	  fi
-	  archive_cmds_need_lc=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-	# Native MSVC
-	hardcode_libdir_flag_spec=' '
-	allow_undefined_flag=unsupported
-	always_export_symbols=yes
-	file_list_spec='@'
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	  else
-	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	  fi~
-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	  linknames='
-	# The linker will not automatically build a static lib if we build a DLL.
-	# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
-	enable_shared_with_static_runtimes=yes
-	exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-	export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-	# Don't use ranlib
-	old_postinstall_cmds='chmod 644 $oldlib'
-	postlink_cmds='lt_outputfile="@OUTPUT@"~
-	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-	  case $lt_outputfile in
-	    *.exe|*.EXE) ;;
-	    *)
-	      lt_outputfile="$lt_outputfile.exe"
-	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-	      ;;
-	  esac~
-	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	    $RM "$lt_outputfile.manifest";
-	  fi'
-	;;
-      *)
-	# Assume MSVC wrapper
-	hardcode_libdir_flag_spec=' '
-	allow_undefined_flag=unsupported
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-	# The linker will automatically build a .lib file if we build a DLL.
-	old_archive_from_new_cmds='true'
-	# FIXME: Should let the user specify the lib program.
-	old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-	enable_shared_with_static_runtimes=yes
-	;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-      
-  
-  archive_cmds_need_lc=no
-  hardcode_direct=no
-  hardcode_automatic=yes
-  hardcode_shlibpath_var=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-    
-  else
-    whole_archive_flag_spec=''
-  fi
-  link_all_deplibs=yes
-  allow_undefined_flag="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-    
-  else
-  ld_shlibs=no
-  fi
-
-      ;;
-
-    dgux*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_direct=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L=yes
-      export_dynamic_flag_spec='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator=:
-	hardcode_direct=yes
-	hardcode_direct_absolute=yes
-	export_dynamic_flag_spec='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	hardcode_minus_L=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	
-	  # Older versions of the 11.00 compiler do not understand -b yet
-	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
-$as_echo_n "checking if $CC understands -b... " >&6; }
-if ${lt_cv_prog_compiler__b+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler__b=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS -b"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler__b=yes
-       fi
-     else
-       lt_cv_prog_compiler__b=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
-$as_echo "$lt_cv_prog_compiler__b" >&6; }
-
-if test x"$lt_cv_prog_compiler__b" = xyes; then
-    archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-else
-    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-fi
-
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  hardcode_direct=no
-	  hardcode_shlibpath_var=no
-	  ;;
-	*)
-	  hardcode_direct=yes
-	  hardcode_direct_absolute=yes
-	  export_dynamic_flag_spec='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-	# This should be the same for all languages, so no per-tag cache variable.
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_LDFLAGS="$LDFLAGS"
-	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-	   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-int foo (void) { return 0; }
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_irix_exported_symbol=yes
-else
-  lt_cv_irix_exported_symbol=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-           LDFLAGS="$save_LDFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-	if test "$lt_cv_irix_exported_symbol" = yes; then
-          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-	fi
-      else
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      inherit_rpath=yes
-      link_all_deplibs=yes
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    newsos6)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_shlibpath_var=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	hardcode_direct=yes
-	hardcode_shlibpath_var=no
-	hardcode_direct_absolute=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      allow_undefined_flag=unsupported
-      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      else
-	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	hardcode_libdir_flag_spec='-rpath $libdir'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_separator=:
-      ;;
-
-    solaris*)
-      no_undefined_flag=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_shlibpath_var=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      link_all_deplibs=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  reload_cmds='$CC -r -o $output$reload_objs'
-	  hardcode_direct=no
-        ;;
-	motorola)
-	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var=no
-      export_dynamic_flag_spec='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	hardcode_shlibpath_var=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	ld_shlibs=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag='${wl}-z,text'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag='${wl}-z,text'
-      allow_undefined_flag='${wl}-z,nodefs'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-R,$libdir'
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      export_dynamic_flag_spec='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      ld_shlibs=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	export_dynamic_flag_spec='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
-$as_echo "$ld_shlibs" >&6; }
-test "$ld_shlibs" = no && can_build_shared=no
-
-with_gnu_ld=$with_gnu_ld
-
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$lt_prog_compiler_wl
-	  pic_flag=$lt_prog_compiler_pic
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag
-	  allow_undefined_flag=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc=no
-	  else
-	    lt_cv_archive_cmds_need_lc=yes
-	  fi
-	  allow_undefined_flag=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-	
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
-      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-if test "$GCC" = yes; then
-  case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
-  esac
-  case $host_os in
-    mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
-    *) lt_sed_strip_eq="s,=/,/,g" ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
-  case $lt_search_path_spec in
-  *\;*)
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
-    ;;
-  *)
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
-    ;;
-  esac
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
-      test -d "$lt_sys_path" && \
-	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[lt_foo]++; }
-  if (lt_freq[lt_foo] == 1) { print lt_foo; }
-}'`
-  # AWK program above erroneously prepends '/' to C:/dos/paths
-  # for these hosts.
-  case $host_os in
-    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
-      $SED 's,/\([A-Za-z]:\),\1,g'` ;;
-  esac
-  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-
-      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux # correct to gnu/linux during the next big refactor
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
-	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-    
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action=
-if test -n "$hardcode_libdir_flag_spec" ||
-   test -n "$runpath_var" ||
-   test "X$hardcode_automatic" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
-     test "$hardcode_minus_L" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
-$as_echo "$hardcode_action" >&6; }
-
-if test "$hardcode_action" = relink ||
-   test "$inherit_rpath" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-    
-    
-    
-
-
-  if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-  
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    
-fi
-
-    ;;
-
-  *)
-    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
-if test "x$ac_cv_func_shl_load" = xyes; then :
-  lt_cv_dlopen="shl_load"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if ${ac_cv_lib_dld_shl_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load ();
-int
-main ()
-{
-return shl_load ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_shl_load=yes
-else
-  ac_cv_lib_dld_shl_load=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
-  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
-else
-  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
-$as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if ${ac_cv_lib_svld_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsvld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_svld_dlopen=yes
-else
-  ac_cv_lib_svld_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
-$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
-$as_echo_n "checking for dld_link in -ldld... " >&6; }
-if ${ac_cv_lib_dld_dld_link+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dld_link ();
-int
-main ()
-{
-return dld_link ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_dld_link=yes
-else
-  ac_cv_lib_dld_dld_link=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
-$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
-  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
-fi
-
-	      
-fi
-
-	    
-fi
-
-	  
-fi
-
-	
-fi
-
-      
-fi
-
-    ;;
-  esac
-
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
-$as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  	  if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-	}
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self=no
-  fi
-fi
-rm -fr conftest*
-
-    
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
-$as_echo "$lt_cv_dlopen_self" >&6; }
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
-$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self_static+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  	  if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self_static=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-	}
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self_static=no
-  fi
-fi
-rm -fr conftest*
-
-      
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
-$as_echo "$lt_cv_dlopen_self_static" >&6; }
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-  
-striplib=
-old_striplib=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
-$as_echo_n "checking whether stripping libraries is possible... " >&6; }
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP" ; then
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    fi
-    ;;
-  *)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    ;;
-  esac
-fi
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-
-  # Report which library types will actually be built
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-  test "$can_build_shared" = "no" && enable_shared=no
-
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test "$enable_shared" = yes && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
-
-  aix[4-9]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
-    fi
-    ;;
-  esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-  # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-  
-
-
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-CC="$lt_save_CC"
-
-
-
-
-
-
-
-
-       
-       
-
-
-
-
-
-        ac_config_commands="$ac_config_commands libtool"
-
-
-
-
-# Only expand once:
-
-
-
-
-
-# Source file containing package/library versioning information.
-
- . ${srcdir}/version.sh
-
-ECCODES_MAIN_VERSION="${ECCODES_MAJOR_VERSION}.${ECCODES_MINOR_VERSION}.${ECCODES_REVISION_VERSION}"
- echo $ECCODES_MAIN_VERSION
-
-PACKAGE_VERSION="${ECCODES_MAIN_VERSION}"
-ECCODES_VERSION_STR="${ECCODES_MAIN_VERSION}"
-ECCODES_PATCH_VERSION="${ECCODES_REVISION_VERSION}"
-
-
-
-
-
-
-
-
-
-
-echo "configuring ${PACKAGE_NAME} ${PACKAGE_VERSION}"
-
-# Ensure that make can run correctly
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
-$as_echo_n "checking whether build environment is sane... " >&6; }
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name.  Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
-  *[\\\"\#\$\&\'\`$am_lf]*)
-    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
-esac
-case $srcdir in
-  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
-    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
-esac
-
-# Do 'set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   am_has_slept=no
-   for am_try in 1 2; do
-     echo "timestamp, slept: $am_has_slept" > conftest.file
-     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-     if test "$*" = "X"; then
-	# -L didn't work.
-	set X `ls -t "$srcdir/configure" conftest.file`
-     fi
-     if test "$*" != "X $srcdir/configure conftest.file" \
-	&& test "$*" != "X conftest.file $srcdir/configure"; then
-
-	# If neither matched, then we have a broken ls.  This can happen
-	# if, for instance, CONFIG_SHELL is bash and it inherits a
-	# broken ls alias from the environment.  This has actually
-	# happened.  Such a system could not be considered "sane".
-	as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
-  alias in your environment" "$LINENO" 5
-     fi
-     if test "$2" = conftest.file || test $am_try -eq 2; then
-       break
-     fi
-     # Just in case.
-     sleep 1
-     am_has_slept=yes
-   done
-   test "$2" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   as_fn_error $? "newly created file is older than distributed files!
-Check your system clock" "$LINENO" 5
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-  ( sleep 1 ) &
-  am_sleep_pid=$!
-fi
-
-rm -f conftest.file
-
-
-
-ac_config_headers="$ac_config_headers src/config.h"
-
-ac_config_files="$ac_config_files src/eccodes_version.h"
-
-ac_config_files="$ac_config_files rpms/eccodes.pc rpms/eccodes.spec rpms/eccodes_f90.pc"
-
-am__api_version='1.13'
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in @%:@((
-  ./ | .// | /[cC]/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-	  if test $ac_prog = install &&
-	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # AIX install.  It has an incompatible calling convention.
-	    :
-	  elif test $ac_prog = install &&
-	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # program-specific install script used by HP pwplus--don't use.
-	    :
-	  else
-	    rm -rf conftest.one conftest.two conftest.dir
-	    echo one > conftest.one
-	    echo two > conftest.two
-	    mkdir conftest.dir
-	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
-	      test -s conftest.one && test -s conftest.two &&
-	      test -s conftest.dir/conftest.one &&
-	      test -s conftest.dir/conftest.two
-	    then
-	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-	      break 3
-	    fi
-	  fi
-	fi
-      done
-    done
-    ;;
-esac
-
-  done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-test "$program_prefix" != NONE &&
-  program_transform_name="s&^&$program_prefix&;$program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
-  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
-# Double any \ or $.
-# By default was `s,x,x', remove it if useless.
-ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
-program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-
-if test x"${MISSING+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-  *)
-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
-  esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --is-lightweight"; then
-  am_missing_run="$MISSING "
-else
-  am_missing_run=
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
-fi
-
-if test x"${install_sh}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-
-# Installed binaries are usually stripped using 'strip' when the user
-# run "make install-strip".  However 'strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the 'STRIP' environment variable to overrule this program.
-if test "$cross_compiling" != no; then
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
-if test -z "$MKDIR_P"; then
-  if ${ac_cv_path_mkdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in mkdir gmkdir; do
-	 for ac_exec_ext in '' $ac_executable_extensions; do
-	   as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
-	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
-	     'mkdir (GNU coreutils) '* | \
-	     'mkdir (coreutils) '* | \
-	     'mkdir (fileutils) '4.1*)
-	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
-	       break 3;;
-	   esac
-	 done
-       done
-  done
-IFS=$as_save_IFS
-
-fi
-
-  test -d ./--version && rmdir ./--version
-  if test "${ac_cv_path_mkdir+set}" = set; then
-    MKDIR_P="$ac_cv_path_mkdir -p"
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for MKDIR_P within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    MKDIR_P="$ac_install_sh -d"
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-	@echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
-
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-	@echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
-
-@%:@ Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then :
-  enableval=$enable_dependency_tracking; 
-fi
-
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-  am__nodep='_no'
-fi
- if test "x$enable_dependency_tracking" != xno; then
-  AMDEP_TRUE=
-  AMDEP_FALSE='#'
-else
-  AMDEP_TRUE='#'
-  AMDEP_FALSE=
-fi
-
-
-@%:@ Check whether --enable-silent-rules was given.
-if test "${enable_silent_rules+set}" = set; then :
-  enableval=$enable_silent_rules; 
-fi
-
-case $enable_silent_rules in @%:@ (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=1;;
-esac
-am_make=${MAKE-make}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
-$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
-if ${am_cv_make_support_nested_variables+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if $as_echo 'TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-	@$(TRUE)
-.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
-$as_echo "$am_cv_make_support_nested_variables" >&6; }
-if test $am_cv_make_support_nested_variables = yes; then
-    AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AM_BACKSLASH='\'
-
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  am__isrc=' -I$(srcdir)'
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-
-
-# Define the identity of the package.
-
- PACKAGE=$PACKAGE_NAME
- VERSION=${PACKAGE_VERSION}
-
-
-# Some tools Automake needs.
-
-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
-
-
-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
-
-
-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
-
-
-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
-
-
-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-
-# For better backward compatibility.  To be removed once Automake 1.9.x
-# dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-mkdir_p='$(MKDIR_P)'
-
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-# Always define AMTAR for backward compatibility.  Yes, it's still used
-# in the wild :-(  We should find a proper way to deprecate it ...
-AMTAR='$${TAR-tar}'
-
-
-# We'll loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar  pax cpio none'
-
-am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
-
-
-
-
-
-depcc="$CC"   am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CC_dependencies_compiler_type+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CC_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-	continue
-      else
-	break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CC_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if 
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
-  am__fastdepCC_TRUE=
-  am__fastdepCC_FALSE='#'
-else
-  am__fastdepCC_TRUE='#'
-  am__fastdepCC_FALSE=
-fi
-
-
-
-
-definition_files_path="${datadir}/eccodes/definitions"
-samples_files_path="${datadir}/eccodes/samples"
-ifs_samples_files_path="${datadir}/eccodes/ifs_samples"
-default_perl_install="${prefix}/perl"
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define ECCODES_MAIN_VERSION $ECCODES_MAIN_VERSION
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define ECCODES_MAJOR_VERSION $ECCODES_MAJOR_VERSION
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define ECCODES_MINOR_VERSION $ECCODES_MINOR_VERSION
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define ECCODES_REVISION_VERSION $ECCODES_REVISION_VERSION
-_ACEOF
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define ECCODES_CURRENT $ECCODES_CURRENT
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define ECCODES_REVISION $ECCODES_REVISION
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define ECCODES_AGE $ECCODES_AGE
-_ACEOF
-
-
-
-
-
-PERLDIR=perl
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in xlc_r xlc gcc cc pgcc
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in xlc_r xlc gcc cc pgcc
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-  
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@ifdef __STDC__
-@%:@ include <limits.h>
-@%:@else
-@%:@ include <assert.h>
-@%:@endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-  
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@ifdef __STDC__
-@%:@ include <limits.h>
-@%:@else
-@%:@ include <assert.h>
-@%:@endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-	@echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-for ac_prog in 'bison -y' byacc
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_YACC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$YACC"; then
-  ac_cv_prog_YACC="$YACC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_YACC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-YACC=$ac_cv_prog_YACC
-if test -n "$YACC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5
-$as_echo "$YACC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$YACC" && break
-done
-test -n "$YACC" || YACC="yacc"
-
-for ac_prog in flex lex
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LEX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$LEX"; then
-  ac_cv_prog_LEX="$LEX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_LEX="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-LEX=$ac_cv_prog_LEX
-if test -n "$LEX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5
-$as_echo "$LEX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$LEX" && break
-done
-test -n "$LEX" || LEX=":"
-
-if test "x$LEX" != "x:"; then
-  cat >conftest.l <<_ACEOF
-%%
-a { ECHO; }
-b { REJECT; }
-c { yymore (); }
-d { yyless (1); }
-e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument.  */
-    yyless ((input () != 0)); }
-f { unput (yytext[0]); }
-. { BEGIN INITIAL; }
-%%
-#ifdef YYTEXT_POINTER
-extern char *yytext;
-#endif
-int
-main (void)
-{
-  return ! yylex () + ! yywrap ();
-}
-_ACEOF
-{ { ac_try="$LEX conftest.l"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$LEX conftest.l") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5
-$as_echo_n "checking lex output file root... " >&6; }
-if ${ac_cv_prog_lex_root+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  
-if test -f lex.yy.c; then
-  ac_cv_prog_lex_root=lex.yy
-elif test -f lexyy.c; then
-  ac_cv_prog_lex_root=lexyy
-else
-  as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5
-$as_echo "$ac_cv_prog_lex_root" >&6; }
-LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
-
-if test -z "${LEXLIB+set}"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5
-$as_echo_n "checking lex library... " >&6; }
-if ${ac_cv_lib_lex+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  
-    ac_save_LIBS=$LIBS
-    ac_cv_lib_lex='none needed'
-    for ac_lib in '' -lfl -ll; do
-      LIBS="$ac_lib $ac_save_LIBS"
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-`cat $LEX_OUTPUT_ROOT.c`
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_lex=$ac_lib
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-      test "$ac_cv_lib_lex" != 'none needed' && break
-    done
-    LIBS=$ac_save_LIBS
-  
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5
-$as_echo "$ac_cv_lib_lex" >&6; }
-  test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5
-$as_echo_n "checking whether yytext is a pointer... " >&6; }
-if ${ac_cv_prog_lex_yytext_pointer+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  # POSIX says lex can declare yytext either as a pointer or an array; the
-# default is implementation-dependent.  Figure out which it is, since
-# not all implementations provide the %pointer and %array declarations.
-ac_cv_prog_lex_yytext_pointer=no
-ac_save_LIBS=$LIBS
-LIBS="$LEXLIB $ac_save_LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-  #define YYTEXT_POINTER 1
-`cat $LEX_OUTPUT_ROOT.c`
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_prog_lex_yytext_pointer=yes
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_save_LIBS
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5
-$as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; }
-if test $ac_cv_prog_lex_yytext_pointer = yes; then
-  
-$as_echo "@%:@define YYTEXT_POINTER 1" >>confdefs.h
-
-fi
-rm -f conftest.l $LEX_OUTPUT_ROOT.c
-
-fi
-ac_ext=f
-ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
-ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_f77_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in pgf90 pgf77 xlf gfortran f77 g77 f90 ifort
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$F77"; then
-  ac_cv_prog_F77="$F77" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-F77=$ac_cv_prog_F77
-if test -n "$F77"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $F77" >&5
-$as_echo "$F77" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$F77" && break
-  done
-fi
-if test -z "$F77"; then
-  ac_ct_F77=$F77
-  for ac_prog in pgf90 pgf77 xlf gfortran f77 g77 f90 ifort
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_F77"; then
-  ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_F77="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_F77=$ac_cv_prog_ac_ct_F77
-if test -n "$ac_ct_F77"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_F77" >&5
-$as_echo "$ac_ct_F77" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_F77" && break
-done
-
-  if test "x$ac_ct_F77" = x; then
-    F77=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    F77=$ac_ct_F77
-  fi
-fi
-
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-rm -f a.out
-
-# If we don't use `.F' as extension, the preprocessor is not run on the
-# input file.  (Note that this only needs to work for GNU compilers.)
-ac_save_ext=$ac_ext
-ac_ext=F
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran 77 compiler" >&5
-$as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; }
-if ${ac_cv_f77_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-#ifndef __GNUC__
-       choke me
-#endif
-
-      end
-_ACEOF
-if ac_fn_f77_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_f77_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_compiler_gnu" >&5
-$as_echo "$ac_cv_f77_compiler_gnu" >&6; }
-ac_ext=$ac_save_ext
-ac_test_FFLAGS=${FFLAGS+set}
-ac_save_FFLAGS=$FFLAGS
-FFLAGS=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $F77 accepts -g" >&5
-$as_echo_n "checking whether $F77 accepts -g... " >&6; }
-if ${ac_cv_prog_f77_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  FFLAGS=-g
-cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_f77_try_compile "$LINENO"; then :
-  ac_cv_prog_f77_g=yes
-else
-  ac_cv_prog_f77_g=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_g" >&5
-$as_echo "$ac_cv_prog_f77_g" >&6; }
-if test "$ac_test_FFLAGS" = set; then
-  FFLAGS=$ac_save_FFLAGS
-elif test $ac_cv_prog_f77_g = yes; then
-  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
-    FFLAGS="-g -O2"
-  else
-    FFLAGS="-g"
-  fi
-else
-  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
-    FFLAGS="-O2"
-  else
-    FFLAGS=
-  fi
-fi
-
-if test $ac_compiler_gnu = yes; then
-  G77=yes
-else
-  G77=
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-      ac_ext=f
-ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
-ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_f77_compiler_gnu
-
-if test -z "$F77" || test "X$F77" = "Xno"; then
-  _lt_disable_F77=yes
-fi
-
-archive_cmds_need_lc_F77=no
-allow_undefined_flag_F77=
-always_export_symbols_F77=no
-archive_expsym_cmds_F77=
-export_dynamic_flag_spec_F77=
-hardcode_direct_F77=no
-hardcode_direct_absolute_F77=no
-hardcode_libdir_flag_spec_F77=
-hardcode_libdir_separator_F77=
-hardcode_minus_L_F77=no
-hardcode_automatic_F77=no
-inherit_rpath_F77=no
-module_cmds_F77=
-module_expsym_cmds_F77=
-link_all_deplibs_F77=unknown
-old_archive_cmds_F77=$old_archive_cmds
-reload_flag_F77=$reload_flag
-reload_cmds_F77=$reload_cmds
-no_undefined_flag_F77=
-whole_archive_flag_spec_F77=
-enable_shared_with_static_runtimes_F77=no
-
-# Source file extension for f77 test sources.
-ac_ext=f
-
-# Object file extension for compiled f77 test sources.
-objext=o
-objext_F77=$objext
-
-# No sense in running all these tests if we already determined that
-# the F77 compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_F77" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-  # save warnings/boilerplate of simple test code
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  lt_save_CFLAGS=$CFLAGS
-  CC=${F77-"f77"}
-  CFLAGS=$FFLAGS
-  compiler=$CC
-  compiler_F77=$CC
-  for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-
-  GCC=$G77
-  if test -n "$compiler"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[4-9]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-    GCC_F77="$G77"
-    LD_F77="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    lt_prog_compiler_wl_F77=
-lt_prog_compiler_pic_F77=
-lt_prog_compiler_static_F77=
-
-
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl_F77='-Wl,'
-    lt_prog_compiler_static_F77='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_F77='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic_F77='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic_F77='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static_F77=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_F77='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared_F77=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_F77='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic_F77=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      lt_prog_compiler_pic_F77='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      lt_prog_compiler_wl_F77='-Xlinker '
-      if test -n "$lt_prog_compiler_pic_F77"; then
-        lt_prog_compiler_pic_F77="-Xcompiler $lt_prog_compiler_pic_F77"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_F77='-Bstatic'
-      else
-	lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_F77='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static_F77='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='-KPIC'
-	lt_prog_compiler_static_F77='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='-fPIC'
-	lt_prog_compiler_static_F77='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='--shared'
-	lt_prog_compiler_static_F77='--static'
-	;;
-      nagfor*)
-	# NAG Fortran compiler
-	lt_prog_compiler_wl_F77='-Wl,-Wl,,'
-	lt_prog_compiler_pic_F77='-PIC'
-	lt_prog_compiler_static_F77='-Bstatic'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='-fpic'
-	lt_prog_compiler_static_F77='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl_F77='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static_F77='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='-qpic'
-	lt_prog_compiler_static_F77='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic_F77='-KPIC'
-	  lt_prog_compiler_static_F77='-Bstatic'
-	  lt_prog_compiler_wl_F77=''
-	  ;;
-	*Sun\ F* | *Sun*Fortran*)
-	  lt_prog_compiler_pic_F77='-KPIC'
-	  lt_prog_compiler_static_F77='-Bstatic'
-	  lt_prog_compiler_wl_F77='-Qoption ld '
-	  ;;
-	*Sun\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic_F77='-KPIC'
-	  lt_prog_compiler_static_F77='-Bstatic'
-	  lt_prog_compiler_wl_F77='-Wl,'
-	  ;;
-        *Intel*\ [CF]*Compiler*)
-	  lt_prog_compiler_wl_F77='-Wl,'
-	  lt_prog_compiler_pic_F77='-fPIC'
-	  lt_prog_compiler_static_F77='-static'
-	  ;;
-	*Portland\ Group*)
-	  lt_prog_compiler_wl_F77='-Wl,'
-	  lt_prog_compiler_pic_F77='-fpic'
-	  lt_prog_compiler_static_F77='-Bstatic'
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_F77='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static_F77='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static_F77='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-	lt_prog_compiler_wl_F77='-Qoption ld ';;
-      *)
-	lt_prog_compiler_wl_F77='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl_F77='-Qoption ld '
-      lt_prog_compiler_pic_F77='-PIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	lt_prog_compiler_pic_F77='-Kconform_pic'
-	lt_prog_compiler_static_F77='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      lt_prog_compiler_can_build_shared_F77=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic_F77='-pic'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared_F77=no
-      ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic_F77=
-    ;;
-  *)
-    lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77@&t@"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_F77=$lt_prog_compiler_pic_F77
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_F77" >&5
-$as_echo "$lt_cv_prog_compiler_pic_F77" >&6; }
-lt_prog_compiler_pic_F77=$lt_cv_prog_compiler_pic_F77
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic_F77"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works_F77=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_F77@&t@"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works_F77=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_F77" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works_F77" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works_F77" = xyes; then
-    case $lt_prog_compiler_pic_F77 in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
-     esac
-else
-    lt_prog_compiler_pic_F77=
-     lt_prog_compiler_can_build_shared_F77=no
-fi
-
-fi
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works_F77=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works_F77=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works_F77=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_F77" >&5
-$as_echo "$lt_cv_prog_compiler_static_works_F77" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then
-    :
-else
-    lt_prog_compiler_static_F77=
-fi
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_F77=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_F77=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_F77" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; }
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_F77=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_F77=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_F77" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  runpath_var=
-  allow_undefined_flag_F77=
-  always_export_symbols_F77=no
-  archive_cmds_F77=
-  archive_expsym_cmds_F77=
-  compiler_needs_object_F77=no
-  enable_shared_with_static_runtimes_F77=no
-  export_dynamic_flag_spec_F77=
-  export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic_F77=no
-  hardcode_direct_F77=no
-  hardcode_direct_absolute_F77=no
-  hardcode_libdir_flag_spec_F77=
-  hardcode_libdir_separator_F77=
-  hardcode_minus_L_F77=no
-  hardcode_shlibpath_var_F77=unsupported
-  inherit_rpath_F77=no
-  link_all_deplibs_F77=unknown
-  module_cmds_F77=
-  module_expsym_cmds_F77=
-  old_archive_from_new_cmds_F77=
-  old_archive_from_expsyms_cmds_F77=
-  thread_safe_flag_spec_F77=
-  whole_archive_flag_spec_F77=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms_F77=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms_F77='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  esac
-
-  ld_shlibs_F77=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
-    case $host_os in
-      aix*)
-	# The AIX port of GNU ld has always aspired to compatibility
-	# with the native linker.  However, as the warning in the GNU ld
-	# block says, versions before 2.19.5* couldn't really create working
-	# shared libraries, regardless of the interface used.
-	case `$LD -v 2>&1` in
-	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
-	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
-	  *)
-	    lt_use_gnu_ld_interface=yes
-	    ;;
-	esac
-	;;
-      *)
-	lt_use_gnu_ld_interface=yes
-	;;
-    esac
-  fi
-
-  if test "$lt_use_gnu_ld_interface" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec_F77='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      whole_archive_flag_spec_F77=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	ld_shlibs_F77=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds_F77=''
-        ;;
-      m68k)
-            archive_cmds_F77='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec_F77='-L$libdir'
-            hardcode_minus_L_F77=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	allow_undefined_flag_F77=unsupported
-	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      export_dynamic_flag_spec_F77='${wl}--export-all-symbols'
-      allow_undefined_flag_F77=unsupported
-      always_export_symbols_F77=no
-      enable_shared_with_static_runtimes_F77=yes
-      export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms_F77='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-
-    haiku*)
-      archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      link_all_deplibs_F77=yes
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct_F77=no
-      hardcode_shlibpath_var_F77=no
-      hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec_F77='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=' $pic_flag'
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95* | pgfortran*)
-					# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  whole_archive_flag_spec_F77=
-	  tmp_sharedflag='--shared' ;;
-	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	nvcc*)	# Cuda Compiler Driver 2.2
-	  whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object_F77=yes
-	  ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object_F77=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          archive_expsym_cmds_F77='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf* | bgf* | bgxlf* | mpixlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  whole_archive_flag_spec_F77='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-	  archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    archive_expsym_cmds_F77='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        ld_shlibs_F77=no
-      fi
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	ld_shlibs_F77=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-	ld_shlibs_F77=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-	    archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    ld_shlibs_F77=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-    esac
-
-    if test "$ld_shlibs_F77" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec_F77=
-      export_dynamic_flag_spec_F77=
-      whole_archive_flag_spec_F77=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag_F77=unsupported
-      always_export_symbols_F77=yes
-      archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L_F77=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	hardcode_direct_F77=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	# Also, AIX nm treats weak defined symbols like other global
-	# defined symbols, whereas GNU nm marks them as "W".
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds_F77=''
-      hardcode_direct_F77=yes
-      hardcode_direct_absolute_F77=yes
-      hardcode_libdir_separator_F77=':'
-      link_all_deplibs_F77=yes
-      file_list_spec_F77='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[012]|aix4.[012].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  hardcode_direct_F77=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  hardcode_minus_L_F77=yes
-	  hardcode_libdir_flag_spec_F77='-L$libdir'
-	  hardcode_libdir_separator_F77=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      export_dynamic_flag_spec_F77='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols_F77=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	allow_undefined_flag_F77='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_f77_try_link "$LINENO"; then :
-  
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__F77=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__F77"; then
-    lt_cv_aix_libpath__F77=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__F77"; then
-    lt_cv_aix_libpath__F77="/usr/lib:/lib"
-  fi
-  
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__F77
-fi
-
-        hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds_F77='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
-	  allow_undefined_flag_F77="-z nodefs"
-	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_f77_try_link "$LINENO"; then :
-  
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__F77=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__F77"; then
-    lt_cv_aix_libpath__F77=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__F77"; then
-    lt_cv_aix_libpath__F77="/usr/lib:/lib"
-  fi
-  
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__F77
-fi
-
-	 hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag_F77=' ${wl}-bernotok'
-	  allow_undefined_flag_F77=' ${wl}-berok'
-	  if test "$with_gnu_ld" = yes; then
-	    # We only use this code for GNU lds that support --whole-archive.
-	    whole_archive_flag_spec_F77='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	  else
-	    # Exported symbols can be pulled into shared objects from archives
-	    whole_archive_flag_spec_F77='$convenience'
-	  fi
-	  archive_cmds_need_lc_F77=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds_F77=''
-        ;;
-      m68k)
-            archive_cmds_F77='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec_F77='-L$libdir'
-            hardcode_minus_L_F77=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec_F77=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-	# Native MSVC
-	hardcode_libdir_flag_spec_F77=' '
-	allow_undefined_flag_F77=unsupported
-	always_export_symbols_F77=yes
-	file_list_spec_F77='@'
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds_F77='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	  else
-	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	  fi~
-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	  linknames='
-	# The linker will not automatically build a static lib if we build a DLL.
-	# _LT_TAGVAR(old_archive_from_new_cmds, F77)='true'
-	enable_shared_with_static_runtimes_F77=yes
-	exclude_expsyms_F77='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-	export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-	# Don't use ranlib
-	old_postinstall_cmds_F77='chmod 644 $oldlib'
-	postlink_cmds_F77='lt_outputfile="@OUTPUT@"~
-	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-	  case $lt_outputfile in
-	    *.exe|*.EXE) ;;
-	    *)
-	      lt_outputfile="$lt_outputfile.exe"
-	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-	      ;;
-	  esac~
-	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	    $RM "$lt_outputfile.manifest";
-	  fi'
-	;;
-      *)
-	# Assume MSVC wrapper
-	hardcode_libdir_flag_spec_F77=' '
-	allow_undefined_flag_F77=unsupported
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-	# The linker will automatically build a .lib file if we build a DLL.
-	old_archive_from_new_cmds_F77='true'
-	# FIXME: Should let the user specify the lib program.
-	old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs'
-	enable_shared_with_static_runtimes_F77=yes
-	;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-      
-  
-  archive_cmds_need_lc_F77=no
-  hardcode_direct_F77=no
-  hardcode_automatic_F77=yes
-  hardcode_shlibpath_var_F77=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec_F77='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-    compiler_needs_object_F77=yes
-  else
-    whole_archive_flag_spec_F77=''
-  fi
-  link_all_deplibs_F77=yes
-  allow_undefined_flag_F77="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds_F77="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds_F77="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds_F77="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-    
-  else
-  ld_shlibs_F77=no
-  fi
-
-      ;;
-
-    dgux*)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_F77=yes
-      hardcode_minus_L_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds_F77='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	archive_cmds_F77='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
-      hardcode_direct_F77=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L_F77=yes
-      export_dynamic_flag_spec_F77='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	archive_cmds_F77='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_F77=:
-	hardcode_direct_F77=yes
-	hardcode_direct_absolute_F77=yes
-	export_dynamic_flag_spec_F77='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	hardcode_minus_L_F77=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_F77='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds_F77='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_F77=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  hardcode_direct_F77=no
-	  hardcode_shlibpath_var_F77=no
-	  ;;
-	*)
-	  hardcode_direct_F77=yes
-	  hardcode_direct_absolute_F77=yes
-	  export_dynamic_flag_spec_F77='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L_F77=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-	# This should be the same for all languages, so no per-tag cache variable.
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_LDFLAGS="$LDFLAGS"
-	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-	   cat > conftest.$ac_ext <<_ACEOF
-
-      subroutine foo
-      end
-_ACEOF
-if ac_fn_f77_try_link "$LINENO"; then :
-  lt_cv_irix_exported_symbol=yes
-else
-  lt_cv_irix_exported_symbol=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-           LDFLAGS="$save_LDFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-	if test "$lt_cv_irix_exported_symbol" = yes; then
-          archive_expsym_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-	fi
-      else
-	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc_F77='no'
-      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
-      inherit_rpath_F77=yes
-      link_all_deplibs_F77=yes
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    newsos6)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_F77=yes
-      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	hardcode_direct_F77=yes
-	hardcode_shlibpath_var_F77=no
-	hardcode_direct_absolute_F77=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec_F77='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec_F77='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_minus_L_F77=yes
-      allow_undefined_flag_F77=unsupported
-      archive_cmds_F77='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	allow_undefined_flag_F77=' -expect_unresolved \*'
-	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc_F77='no'
-      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_F77='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      else
-	allow_undefined_flag_F77=' -expect_unresolved \*'
-	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	hardcode_libdir_flag_spec_F77='-rpath $libdir'
-      fi
-      archive_cmds_need_lc_F77='no'
-      hardcode_libdir_separator_F77=:
-      ;;
-
-    solaris*)
-      no_undefined_flag_F77=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds_F77='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  archive_expsym_cmds_F77='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  archive_cmds_F77='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_F77='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_shlibpath_var_F77=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      link_all_deplibs_F77=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_direct_F77=yes
-      hardcode_minus_L_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_F77=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  reload_cmds_F77='$CC -r -o $output$reload_objs'
-	  hardcode_direct_F77=no
-        ;;
-	motorola)
-	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var_F77=no
-      export_dynamic_flag_spec_F77='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	hardcode_shlibpath_var_F77=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	ld_shlibs_F77=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag_F77='${wl}-z,text'
-      archive_cmds_need_lc_F77=no
-      hardcode_shlibpath_var_F77=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag_F77='${wl}-z,text'
-      allow_undefined_flag_F77='${wl}-z,nodefs'
-      archive_cmds_need_lc_F77=no
-      hardcode_shlibpath_var_F77=no
-      hardcode_libdir_flag_spec_F77='${wl}-R,$libdir'
-      hardcode_libdir_separator_F77=':'
-      link_all_deplibs_F77=yes
-      export_dynamic_flag_spec_F77='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    *)
-      ld_shlibs_F77=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	export_dynamic_flag_spec_F77='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_F77" >&5
-$as_echo "$ld_shlibs_F77" >&6; }
-test "$ld_shlibs_F77" = no && can_build_shared=no
-
-with_gnu_ld_F77=$with_gnu_ld
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc_F77" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc_F77=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds_F77 in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$lt_prog_compiler_wl_F77
-	  pic_flag=$lt_prog_compiler_pic_F77
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag_F77
-	  allow_undefined_flag_F77=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_F77 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds_F77 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc_F77=no
-	  else
-	    lt_cv_archive_cmds_need_lc_F77=yes
-	  fi
-	  allow_undefined_flag_F77=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-	
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_F77" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc_F77" >&6; }
-      archive_cmds_need_lc_F77=$lt_cv_archive_cmds_need_lc_F77
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux # correct to gnu/linux during the next big refactor
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_F77\"; \
-	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_F77\""
-    cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_f77_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-    
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action_F77=
-if test -n "$hardcode_libdir_flag_spec_F77" ||
-   test -n "$runpath_var_F77" ||
-   test "X$hardcode_automatic_F77" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct_F77" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
-     test "$hardcode_minus_L_F77" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action_F77=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action_F77=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_F77=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_F77" >&5
-$as_echo "$hardcode_action_F77" >&6; }
-
-if test "$hardcode_action_F77" = relink ||
-   test "$inherit_rpath_F77" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-    
-
-
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC="$lt_save_CC"
-  CFLAGS="$lt_save_CFLAGS"
-fi # test "$_lt_disable_F77" != yes
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
- 
-ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in pgf90 xlf90 gfortran f90 ifort
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$FC"; then
-  ac_cv_prog_FC="$FC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_FC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-FC=$ac_cv_prog_FC
-if test -n "$FC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FC" >&5
-$as_echo "$FC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$FC" && break
-  done
-fi
-if test -z "$FC"; then
-  ac_ct_FC=$FC
-  for ac_prog in pgf90 xlf90 gfortran f90 ifort
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_FC"; then
-  ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_FC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_FC=$ac_cv_prog_ac_ct_FC
-if test -n "$ac_ct_FC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FC" >&5
-$as_echo "$ac_ct_FC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_FC" && break
-done
-
-  if test "x$ac_ct_FC" = x; then
-    FC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    FC=$ac_ct_FC
-  fi
-fi
-
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-rm -f a.out
-
-# If we don't use `.F' as extension, the preprocessor is not run on the
-# input file.  (Note that this only needs to work for GNU compilers.)
-ac_save_ext=$ac_ext
-ac_ext=F
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran compiler" >&5
-$as_echo_n "checking whether we are using the GNU Fortran compiler... " >&6; }
-if ${ac_cv_fc_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-#ifndef __GNUC__
-       choke me
-#endif
-
-      end
-_ACEOF
-if ac_fn_fc_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_fc_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_compiler_gnu" >&5
-$as_echo "$ac_cv_fc_compiler_gnu" >&6; }
-ac_ext=$ac_save_ext
-ac_test_FCFLAGS=${FCFLAGS+set}
-ac_save_FCFLAGS=$FCFLAGS
-FCFLAGS=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $FC accepts -g" >&5
-$as_echo_n "checking whether $FC accepts -g... " >&6; }
-if ${ac_cv_prog_fc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  FCFLAGS=-g
-cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_fc_try_compile "$LINENO"; then :
-  ac_cv_prog_fc_g=yes
-else
-  ac_cv_prog_fc_g=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_g" >&5
-$as_echo "$ac_cv_prog_fc_g" >&6; }
-if test "$ac_test_FCFLAGS" = set; then
-  FCFLAGS=$ac_save_FCFLAGS
-elif test $ac_cv_prog_fc_g = yes; then
-  if test "x$ac_cv_fc_compiler_gnu" = xyes; then
-    FCFLAGS="-g -O2"
-  else
-    FCFLAGS="-g"
-  fi
-else
-  if test "x$ac_cv_fc_compiler_gnu" = xyes; then
-    FCFLAGS="-O2"
-  else
-    FCFLAGS=
-  fi
-fi
-
-if test $ac_compiler_gnu = yes; then
-  GFC=yes
-else
-  GFC=
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-func_stripname_cnf ()
-{
-  case ${2} in
-  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-  esac
-} # func_stripname_cnf
-
-
-      ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-
-if test -z "$FC" || test "X$FC" = "Xno"; then
-  _lt_disable_FC=yes
-fi
-
-archive_cmds_need_lc_FC=no
-allow_undefined_flag_FC=
-always_export_symbols_FC=no
-archive_expsym_cmds_FC=
-export_dynamic_flag_spec_FC=
-hardcode_direct_FC=no
-hardcode_direct_absolute_FC=no
-hardcode_libdir_flag_spec_FC=
-hardcode_libdir_separator_FC=
-hardcode_minus_L_FC=no
-hardcode_automatic_FC=no
-inherit_rpath_FC=no
-module_cmds_FC=
-module_expsym_cmds_FC=
-link_all_deplibs_FC=unknown
-old_archive_cmds_FC=$old_archive_cmds
-reload_flag_FC=$reload_flag
-reload_cmds_FC=$reload_cmds
-no_undefined_flag_FC=
-whole_archive_flag_spec_FC=
-enable_shared_with_static_runtimes_FC=no
-
-# Source file extension for fc test sources.
-ac_ext=${ac_fc_srcext-f}
-
-# Object file extension for compiled fc test sources.
-objext=o
-objext_FC=$objext
-
-# No sense in running all these tests if we already determined that
-# the FC compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_FC" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-  # save warnings/boilerplate of simple test code
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  lt_save_CFLAGS=$CFLAGS
-  CC=${FC-"f95"}
-  CFLAGS=$FCFLAGS
-  compiler=$CC
-  GCC=$ac_cv_fc_compiler_gnu
-
-  compiler_FC=$CC
-  for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-
-
-  if test -n "$compiler"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[4-9]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-    GCC_FC="$ac_cv_fc_compiler_gnu"
-    LD_FC="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    # Dependencies to place before and after the object being linked:
-predep_objects_FC=
-postdep_objects_FC=
-predeps_FC=
-postdeps_FC=
-compiler_lib_search_path_FC=
-
-cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer a
-      a=0
-      return
-      end
-_LT_EOF
-
-
-_lt_libdeps_save_CFLAGS=$CFLAGS
-case "$CC $CFLAGS " in #(
-*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
-*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
-*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
-esac
-
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  for p in `eval "$output_verbose_link_cmd"`; do
-    case ${prev}${p} in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test $p = "-L" ||
-          test $p = "-R"; then
-	 prev=$p
-	 continue
-       fi
-
-       # Expand the sysroot to ease extracting the directories later.
-       if test -z "$prev"; then
-         case $p in
-         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
-         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
-         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
-         esac
-       fi
-       case $p in
-       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
-       esac
-       if test "$pre_test_object_deps_done" = no; then
-	 case ${prev} in
-	 -L | -R)
-	   # Internal compiler library paths should come after those
-	   # provided the user.  The postdeps already come after the
-	   # user supplied libs so there is no need to process them.
-	   if test -z "$compiler_lib_search_path_FC"; then
-	     compiler_lib_search_path_FC="${prev}${p}"
-	   else
-	     compiler_lib_search_path_FC="${compiler_lib_search_path_FC} ${prev}${p}"
-	   fi
-	   ;;
-	 # The "-l" case would never come before the object being
-	 # linked, so don't bother handling this case.
-	 esac
-       else
-	 if test -z "$postdeps_FC"; then
-	   postdeps_FC="${prev}${p}"
-	 else
-	   postdeps_FC="${postdeps_FC} ${prev}${p}"
-	 fi
-       fi
-       prev=
-       ;;
-
-    *.lto.$objext) ;; # Ignore GCC LTO objects
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-	 pre_test_object_deps_done=yes
-	 continue
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 if test -z "$predep_objects_FC"; then
-	   predep_objects_FC="$p"
-	 else
-	   predep_objects_FC="$predep_objects_FC $p"
-	 fi
-       else
-	 if test -z "$postdep_objects_FC"; then
-	   postdep_objects_FC="$p"
-	 else
-	   postdep_objects_FC="$postdep_objects_FC $p"
-	 fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling FC test program"
-fi
-
-$RM -f confest.$objext
-CFLAGS=$_lt_libdeps_save_CFLAGS
-
-# PORTME: override above test on systems where it is broken
-
-
-case " $postdeps_FC " in
-*" -lc "*) archive_cmds_need_lc_FC=no ;;
-esac
- compiler_lib_search_dirs_FC=
-if test -n "${compiler_lib_search_path_FC}"; then
- compiler_lib_search_dirs_FC=`echo " ${compiler_lib_search_path_FC}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
-fi
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    lt_prog_compiler_wl_FC=
-lt_prog_compiler_pic_FC=
-lt_prog_compiler_static_FC=
-
-
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl_FC='-Wl,'
-    lt_prog_compiler_static_FC='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_FC='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic_FC='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            lt_prog_compiler_pic_FC='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic_FC='-DDLL_EXPORT'
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic_FC='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static_FC=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_FC='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared_FC=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_FC='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic_FC=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      lt_prog_compiler_pic_FC='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      lt_prog_compiler_wl_FC='-Xlinker '
-      if test -n "$lt_prog_compiler_pic_FC"; then
-        lt_prog_compiler_pic_FC="-Xcompiler $lt_prog_compiler_pic_FC"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_FC='-Bstatic'
-      else
-	lt_prog_compiler_static_FC='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic_FC='-DDLL_EXPORT'
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_FC='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static_FC='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static_FC='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='-KPIC'
-	lt_prog_compiler_static_FC='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='-fPIC'
-	lt_prog_compiler_static_FC='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='--shared'
-	lt_prog_compiler_static_FC='--static'
-	;;
-      nagfor*)
-	# NAG Fortran compiler
-	lt_prog_compiler_wl_FC='-Wl,-Wl,,'
-	lt_prog_compiler_pic_FC='-PIC'
-	lt_prog_compiler_static_FC='-Bstatic'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='-fpic'
-	lt_prog_compiler_static_FC='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl_FC='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static_FC='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='-qpic'
-	lt_prog_compiler_static_FC='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic_FC='-KPIC'
-	  lt_prog_compiler_static_FC='-Bstatic'
-	  lt_prog_compiler_wl_FC=''
-	  ;;
-	*Sun\ F* | *Sun*Fortran*)
-	  lt_prog_compiler_pic_FC='-KPIC'
-	  lt_prog_compiler_static_FC='-Bstatic'
-	  lt_prog_compiler_wl_FC='-Qoption ld '
-	  ;;
-	*Sun\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic_FC='-KPIC'
-	  lt_prog_compiler_static_FC='-Bstatic'
-	  lt_prog_compiler_wl_FC='-Wl,'
-	  ;;
-        *Intel*\ [CF]*Compiler*)
-	  lt_prog_compiler_wl_FC='-Wl,'
-	  lt_prog_compiler_pic_FC='-fPIC'
-	  lt_prog_compiler_static_FC='-static'
-	  ;;
-	*Portland\ Group*)
-	  lt_prog_compiler_wl_FC='-Wl,'
-	  lt_prog_compiler_pic_FC='-fpic'
-	  lt_prog_compiler_static_FC='-Bstatic'
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic_FC='-KPIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_FC='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static_FC='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static_FC='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic_FC='-KPIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-	lt_prog_compiler_wl_FC='-Qoption ld ';;
-      *)
-	lt_prog_compiler_wl_FC='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl_FC='-Qoption ld '
-      lt_prog_compiler_pic_FC='-PIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      lt_prog_compiler_pic_FC='-KPIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	lt_prog_compiler_pic_FC='-Kconform_pic'
-	lt_prog_compiler_static_FC='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      lt_prog_compiler_pic_FC='-KPIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      lt_prog_compiler_can_build_shared_FC=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic_FC='-pic'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared_FC=no
-      ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic_FC=
-    ;;
-  *)
-    lt_prog_compiler_pic_FC="$lt_prog_compiler_pic_FC@&t@"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_FC=$lt_prog_compiler_pic_FC
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_FC" >&5
-$as_echo "$lt_cv_prog_compiler_pic_FC" >&6; }
-lt_prog_compiler_pic_FC=$lt_cv_prog_compiler_pic_FC
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic_FC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_FC works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_FC works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works_FC=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_FC@&t@"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works_FC=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_FC" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works_FC" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works_FC" = xyes; then
-    case $lt_prog_compiler_pic_FC in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic_FC=" $lt_prog_compiler_pic_FC" ;;
-     esac
-else
-    lt_prog_compiler_pic_FC=
-     lt_prog_compiler_can_build_shared_FC=no
-fi
-
-fi
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl_FC eval lt_tmp_static_flag=\"$lt_prog_compiler_static_FC\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works_FC=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works_FC=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works_FC=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_FC" >&5
-$as_echo "$lt_cv_prog_compiler_static_works_FC" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works_FC" = xyes; then
-    :
-else
-    lt_prog_compiler_static_FC=
-fi
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_FC=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_FC=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_FC" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_FC" >&6; }
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_FC=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_FC=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_FC" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_FC" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_FC" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  runpath_var=
-  allow_undefined_flag_FC=
-  always_export_symbols_FC=no
-  archive_cmds_FC=
-  archive_expsym_cmds_FC=
-  compiler_needs_object_FC=no
-  enable_shared_with_static_runtimes_FC=no
-  export_dynamic_flag_spec_FC=
-  export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic_FC=no
-  hardcode_direct_FC=no
-  hardcode_direct_absolute_FC=no
-  hardcode_libdir_flag_spec_FC=
-  hardcode_libdir_separator_FC=
-  hardcode_minus_L_FC=no
-  hardcode_shlibpath_var_FC=unsupported
-  inherit_rpath_FC=no
-  link_all_deplibs_FC=unknown
-  module_cmds_FC=
-  module_expsym_cmds_FC=
-  old_archive_from_new_cmds_FC=
-  old_archive_from_expsyms_cmds_FC=
-  thread_safe_flag_spec_FC=
-  whole_archive_flag_spec_FC=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms_FC=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms_FC='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  esac
-
-  ld_shlibs_FC=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
-    case $host_os in
-      aix*)
-	# The AIX port of GNU ld has always aspired to compatibility
-	# with the native linker.  However, as the warning in the GNU ld
-	# block says, versions before 2.19.5* couldn't really create working
-	# shared libraries, regardless of the interface used.
-	case `$LD -v 2>&1` in
-	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
-	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
-	  *)
-	    lt_use_gnu_ld_interface=yes
-	    ;;
-	esac
-	;;
-      *)
-	lt_use_gnu_ld_interface=yes
-	;;
-    esac
-  fi
-
-  if test "$lt_use_gnu_ld_interface" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec_FC='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec_FC="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      whole_archive_flag_spec_FC=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	ld_shlibs_FC=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds_FC=''
-        ;;
-      m68k)
-            archive_cmds_FC='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec_FC='-L$libdir'
-            hardcode_minus_L_FC=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	allow_undefined_flag_FC=unsupported
-	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds_FC='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, FC) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      export_dynamic_flag_spec_FC='${wl}--export-all-symbols'
-      allow_undefined_flag_FC=unsupported
-      always_export_symbols_FC=no
-      enable_shared_with_static_runtimes_FC=yes
-      export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms_FC='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds_FC='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-
-    haiku*)
-      archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      link_all_deplibs_FC=yes
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct_FC=no
-      hardcode_shlibpath_var_FC=no
-      hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec_FC='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds_FC='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=' $pic_flag'
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95* | pgfortran*)
-					# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  whole_archive_flag_spec_FC=
-	  tmp_sharedflag='--shared' ;;
-	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	nvcc*)	# Cuda Compiler Driver 2.2
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object_FC=yes
-	  ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object_FC=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	archive_cmds_FC='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf* | bgf* | bgxlf* | mpixlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  whole_archive_flag_spec_FC='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-	  archive_cmds_FC='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        ld_shlibs_FC=no
-      fi
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds_FC='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	ld_shlibs_FC=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-	ld_shlibs_FC=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-	    archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    ld_shlibs_FC=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds_FC='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-    esac
-
-    if test "$ld_shlibs_FC" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec_FC=
-      export_dynamic_flag_spec_FC=
-      whole_archive_flag_spec_FC=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag_FC=unsupported
-      always_export_symbols_FC=yes
-      archive_expsym_cmds_FC='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L_FC=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	hardcode_direct_FC=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	# Also, AIX nm treats weak defined symbols like other global
-	# defined symbols, whereas GNU nm marks them as "W".
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  export_symbols_cmds_FC='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  export_symbols_cmds_FC='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds_FC=''
-      hardcode_direct_FC=yes
-      hardcode_direct_absolute_FC=yes
-      hardcode_libdir_separator_FC=':'
-      link_all_deplibs_FC=yes
-      file_list_spec_FC='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[012]|aix4.[012].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  hardcode_direct_FC=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  hardcode_minus_L_FC=yes
-	  hardcode_libdir_flag_spec_FC='-L$libdir'
-	  hardcode_libdir_separator_FC=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      export_dynamic_flag_spec_FC='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols_FC=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	allow_undefined_flag_FC='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_fc_try_link "$LINENO"; then :
-  
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__FC=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__FC"; then
-    lt_cv_aix_libpath__FC=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__FC"; then
-    lt_cv_aix_libpath__FC="/usr/lib:/lib"
-  fi
-  
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__FC
-fi
-
-        hardcode_libdir_flag_spec_FC='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds_FC='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec_FC='${wl}-R $libdir:/usr/lib:/lib'
-	  allow_undefined_flag_FC="-z nodefs"
-	  archive_expsym_cmds_FC="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_fc_try_link "$LINENO"; then :
-  
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__FC=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__FC"; then
-    lt_cv_aix_libpath__FC=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__FC"; then
-    lt_cv_aix_libpath__FC="/usr/lib:/lib"
-  fi
-  
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__FC
-fi
-
-	 hardcode_libdir_flag_spec_FC='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag_FC=' ${wl}-bernotok'
-	  allow_undefined_flag_FC=' ${wl}-berok'
-	  if test "$with_gnu_ld" = yes; then
-	    # We only use this code for GNU lds that support --whole-archive.
-	    whole_archive_flag_spec_FC='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	  else
-	    # Exported symbols can be pulled into shared objects from archives
-	    whole_archive_flag_spec_FC='$convenience'
-	  fi
-	  archive_cmds_need_lc_FC=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds_FC="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds_FC=''
-        ;;
-      m68k)
-            archive_cmds_FC='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec_FC='-L$libdir'
-            hardcode_minus_L_FC=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec_FC=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-	# Native MSVC
-	hardcode_libdir_flag_spec_FC=' '
-	allow_undefined_flag_FC=unsupported
-	always_export_symbols_FC=yes
-	file_list_spec_FC='@'
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds_FC='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	archive_expsym_cmds_FC='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	  else
-	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	  fi~
-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	  linknames='
-	# The linker will not automatically build a static lib if we build a DLL.
-	# _LT_TAGVAR(old_archive_from_new_cmds, FC)='true'
-	enable_shared_with_static_runtimes_FC=yes
-	exclude_expsyms_FC='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-	export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-	# Don't use ranlib
-	old_postinstall_cmds_FC='chmod 644 $oldlib'
-	postlink_cmds_FC='lt_outputfile="@OUTPUT@"~
-	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-	  case $lt_outputfile in
-	    *.exe|*.EXE) ;;
-	    *)
-	      lt_outputfile="$lt_outputfile.exe"
-	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-	      ;;
-	  esac~
-	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	    $RM "$lt_outputfile.manifest";
-	  fi'
-	;;
-      *)
-	# Assume MSVC wrapper
-	hardcode_libdir_flag_spec_FC=' '
-	allow_undefined_flag_FC=unsupported
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds_FC='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-	# The linker will automatically build a .lib file if we build a DLL.
-	old_archive_from_new_cmds_FC='true'
-	# FIXME: Should let the user specify the lib program.
-	old_archive_cmds_FC='lib -OUT:$oldlib$oldobjs$old_deplibs'
-	enable_shared_with_static_runtimes_FC=yes
-	;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-      
-  
-  archive_cmds_need_lc_FC=no
-  hardcode_direct_FC=no
-  hardcode_automatic_FC=yes
-  hardcode_shlibpath_var_FC=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec_FC='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-    compiler_needs_object_FC=yes
-  else
-    whole_archive_flag_spec_FC=''
-  fi
-  link_all_deplibs_FC=yes
-  allow_undefined_flag_FC="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds_FC="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds_FC="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds_FC="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds_FC="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-    
-  else
-  ld_shlibs_FC=no
-  fi
-
-      ;;
-
-    dgux*)
-      archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec_FC='-R$libdir'
-      hardcode_direct_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_FC=yes
-      hardcode_minus_L_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec_FC='-R$libdir'
-      hardcode_direct_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	archive_cmds_FC='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator_FC=:
-      hardcode_direct_FC=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L_FC=yes
-      export_dynamic_flag_spec_FC='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	archive_cmds_FC='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_FC='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_FC=:
-	hardcode_direct_FC=yes
-	hardcode_direct_absolute_FC=yes
-	export_dynamic_flag_spec_FC='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	hardcode_minus_L_FC=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_FC='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_FC='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds_FC='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_FC=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  hardcode_direct_FC=no
-	  hardcode_shlibpath_var_FC=no
-	  ;;
-	*)
-	  hardcode_direct_FC=yes
-	  hardcode_direct_absolute_FC=yes
-	  export_dynamic_flag_spec_FC='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L_FC=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-	# This should be the same for all languages, so no per-tag cache variable.
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_LDFLAGS="$LDFLAGS"
-	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-	   cat > conftest.$ac_ext <<_ACEOF
-
-      subroutine foo
-      end
-_ACEOF
-if ac_fn_fc_try_link "$LINENO"; then :
-  lt_cv_irix_exported_symbol=yes
-else
-  lt_cv_irix_exported_symbol=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-           LDFLAGS="$save_LDFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-	if test "$lt_cv_irix_exported_symbol" = yes; then
-          archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-	fi
-      else
-	archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc_FC='no'
-      hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_FC=:
-      inherit_rpath_FC=yes
-      link_all_deplibs_FC=yes
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	archive_cmds_FC='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec_FC='-R$libdir'
-      hardcode_direct_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    newsos6)
-      archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_FC=yes
-      hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_FC=:
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	hardcode_direct_FC=yes
-	hardcode_shlibpath_var_FC=no
-	hardcode_direct_absolute_FC=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec_FC='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec_FC='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      hardcode_minus_L_FC=yes
-      allow_undefined_flag_FC=unsupported
-      archive_cmds_FC='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds_FC='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag_FC=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	allow_undefined_flag_FC=' -expect_unresolved \*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc_FC='no'
-      hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_FC=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag_FC=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-      else
-	allow_undefined_flag_FC=' -expect_unresolved \*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_FC='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	hardcode_libdir_flag_spec_FC='-rpath $libdir'
-      fi
-      archive_cmds_need_lc_FC='no'
-      hardcode_libdir_separator_FC=:
-      ;;
-
-    solaris*)
-      no_undefined_flag_FC=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds_FC='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  archive_cmds_FC='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  archive_cmds_FC='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      hardcode_libdir_flag_spec_FC='-R$libdir'
-      hardcode_shlibpath_var_FC=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec_FC='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  whole_archive_flag_spec_FC='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      link_all_deplibs_FC=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	archive_cmds_FC='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_FC='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      hardcode_direct_FC=yes
-      hardcode_minus_L_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_FC=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  archive_cmds_FC='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  reload_cmds_FC='$CC -r -o $output$reload_objs'
-	  hardcode_direct_FC=no
-        ;;
-	motorola)
-	  archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_FC=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var_FC=no
-      export_dynamic_flag_spec_FC='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	hardcode_shlibpath_var_FC=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	ld_shlibs_FC=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag_FC='${wl}-z,text'
-      archive_cmds_need_lc_FC=no
-      hardcode_shlibpath_var_FC=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_FC='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag_FC='${wl}-z,text'
-      allow_undefined_flag_FC='${wl}-z,nodefs'
-      archive_cmds_need_lc_FC=no
-      hardcode_shlibpath_var_FC=no
-      hardcode_libdir_flag_spec_FC='${wl}-R,$libdir'
-      hardcode_libdir_separator_FC=':'
-      link_all_deplibs_FC=yes
-      export_dynamic_flag_spec_FC='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_FC='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    *)
-      ld_shlibs_FC=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	export_dynamic_flag_spec_FC='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_FC" >&5
-$as_echo "$ld_shlibs_FC" >&6; }
-test "$ld_shlibs_FC" = no && can_build_shared=no
-
-with_gnu_ld_FC=$with_gnu_ld
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc_FC" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc_FC=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds_FC in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$lt_prog_compiler_wl_FC
-	  pic_flag=$lt_prog_compiler_pic_FC
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag_FC
-	  allow_undefined_flag_FC=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc_FC=no
-	  else
-	    lt_cv_archive_cmds_need_lc_FC=yes
-	  fi
-	  allow_undefined_flag_FC=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-	
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_FC" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc_FC" >&6; }
-      archive_cmds_need_lc_FC=$lt_cv_archive_cmds_need_lc_FC
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux # correct to gnu/linux during the next big refactor
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_FC\"; \
-	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_FC\""
-    cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_fc_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-    
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action_FC=
-if test -n "$hardcode_libdir_flag_spec_FC" ||
-   test -n "$runpath_var_FC" ||
-   test "X$hardcode_automatic_FC" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct_FC" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, FC)" != no &&
-     test "$hardcode_minus_L_FC" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action_FC=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action_FC=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_FC=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_FC" >&5
-$as_echo "$hardcode_action_FC" >&6; }
-
-if test "$hardcode_action_FC" = relink ||
-   test "$inherit_rpath_FC" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-    
-
-
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-fi # test "$_lt_disable_FC" != yes
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
- 
-
-@%:@ Check whether --enable-pthread was given.
-if test "${enable_pthread+set}" = set; then :
-  enableval=$enable_pthread; pthreads=${enableval} 
-else
-  pthreads=no
-
-fi
-
-if test "x${pthreads}" = xyes; then
-   GRIB_PTHREADS=1
-else
-   GRIB_PTHREADS=0
-fi
-
-if test $GRIB_PTHREADS -eq 1
-then
-   
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if pthreads available" >&5
-$as_echo_n "checking if pthreads available... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  OLDLIBS=$LIBS
-  LIBS="$LIBS -lpthread"
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    
-       #include <pthread.h>
-       #include <stdio.h>
-
-       #define NUMTHRDS 4
-       static int count;
-       
-       static pthread_once_t once  = PTHREAD_ONCE_INIT;
-       static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-       static pthread_t callThd[NUMTHRDS];
-       
-       static void init() {
-         pthread_mutexattr_t attr;
-       
-         pthread_mutexattr_init(&attr);
-         pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
-         pthread_mutex_init(&mutex,&attr);
-         pthread_mutexattr_destroy(&attr);
-       }
-       
-       void* increment(void* arg);
-       
-       int main(int argc,char** argv){
-         int i;
-         void* status=0;
-         pthread_attr_t attr;
-         pthread_attr_init(&attr);
-         count=0;
-         pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
-         for (i=0;i<NUMTHRDS;i++) {
-           pthread_create( &callThd[i], &attr, increment, (void *)i);
-         }
-         pthread_attr_destroy(&attr);
-         for(i=0; i<NUMTHRDS; i++)
-             pthread_join( callThd[i], &status);
-         return 0;
-       }
-       
-       void* increment(void* arg) {
-         int i=(int)arg;
-         pthread_once(&once,&init);
-         pthread_mutex_lock(&mutex);
-         count+=i;
-         pthread_mutex_unlock(&mutex);
-		 pthread_exit((void*) 0);
-       }
-    
-  
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  GRIB_PTHREADS=1
-else
-  GRIB_PTHREADS=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $GRIB_PTHREADS = 0
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	LIBS=$OLDLIBS
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-   
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Linux pthreads available" >&5
-$as_echo_n "checking if Linux pthreads available... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  OLDLIBS=$LIBS
-  LIBS="$LIBS -lpthread"
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    
-       #include <pthread.h>
-       #include <stdio.h>
-
-       #define NUMTHRDS 4
-       static int count;
-	   #define PTHREAD_MUTEX_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
-	   extern int pthread_mutexattr_settype(pthread_mutexattr_t* attr,int type);
-       
-       static pthread_once_t once  = PTHREAD_ONCE_INIT;
-       static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-       static pthread_t callThd[NUMTHRDS];
-       
-       static void init() {
-         pthread_mutexattr_t attr;
-		 pthread_mutexattr_init(&attr);
-		 pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
-         pthread_mutex_init(&mutex,&attr);
-         pthread_mutexattr_destroy(&attr);
-       }
-       
-       void* increment(void* arg);
-       
-       int main(int argc,char** argv){
-         int i;
-         void* status=0;
-         pthread_attr_t attr;
-         pthread_attr_init(&attr);
-         count=0;
-         pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
-         for (i=0;i<NUMTHRDS;i++) {
-           pthread_create( &callThd[i], &attr, increment, (void *)i);
-         }
-         pthread_attr_destroy(&attr);
-         for(i=0; i<NUMTHRDS; i++)
-             pthread_join( callThd[i], &status);
-         return 0;
-       }
-       
-       void* increment(void* arg) {
-         int i=(int)arg;
-         pthread_once(&once,&init);
-         pthread_mutex_lock(&mutex);
-         count+=i;
-         pthread_mutex_unlock(&mutex);
-		 pthread_exit((void*) 0);
-       }
-    
-  
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  GRIB_LINUX_PTHREADS=1
-   GRIB_PTHREADS=1
-else
-  GRIB_LINUX_PTHREADS=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $GRIB_LINUX_PTHREADS = 0
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	LIBS=$OLDLIBS
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-else
-   GRIB_LINUX_PTHREADS=0
-fi
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define GRIB_PTHREADS $GRIB_PTHREADS
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define GRIB_LINUX_PTHREADS $GRIB_LINUX_PTHREADS
-_ACEOF
-
-
-@%:@ Check whether --enable-ibmpower67_opt was given.
-if test "${enable_ibmpower67_opt+set}" = set; then :
-  enableval=$enable_ibmpower67_opt; ibmpower67_opts=${enableval} 
-else
-  ibmpower67_opts=no
-
-fi
-
-if test "x${ibmpower67_opts}" = xyes; then
-   GRIB_IBMPOWER67_OPT=1
-else
-   GRIB_IBMPOWER67_OPT=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-@%:@define GRIB_IBMPOWER67_OPT $GRIB_IBMPOWER67_OPT
-_ACEOF
-
-
-
-ac_cv_prog_f90_uppercase_mod=no
-
-ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if Fortran 90 compiler capitalizes .mod filenames" >&5
-$as_echo_n "checking if Fortran 90 compiler capitalizes .mod filenames... " >&6; }
-cat <<EOF >conftest.f90
-    module conftest
-    end module conftest
-EOF
-
-ac_try='$FC $FCFLAGS -c conftest.f90 >&5'
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -f CONFTEST.mod ; then
-   ac_cv_prog_f90_uppercase_mod=yes
-   rm -f CONFTEST.mod
-else
-   ac_cv_prog_f90_uppercase_mod=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f90_uppercase_mod" >&5
-$as_echo "$ac_cv_prog_f90_uppercase_mod" >&6; }
-#rm -f conftest*
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
- if test "x$ac_cv_prog_f90_uppercase_mod" = xyes; then
-  UPPER_CASE_MOD_TRUE=
-  UPPER_CASE_MOD_FALSE='#'
-else
-  UPPER_CASE_MOD_TRUE='#'
-  UPPER_CASE_MOD_FALSE=
-fi
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if double and float are ieee big endian" >&5
-$as_echo_n "checking if double and float are ieee big endian... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    
-     int compare(unsigned char* a,unsigned char* b) {
-       while(*a != 0) if (*(b++)!=*(a++)) return 1;
-       return 0;
-     }
-     int main(int argc,char** argv) {
-       unsigned char dc[]={0x30,0x61,0xDE,0x80,0x93,0x67,0xCC,0xD9,0};
-       double da=1.23456789e-75;
-       unsigned char* ca;
-     
-       unsigned char fc[]={0x05,0x83,0x48,0x22,0};
-       float fa=1.23456789e-35;
-     
-       if (sizeof(double)!=8) return 1;
-     
-       ca=(unsigned char*)&da;
-       if (compare(dc,ca)) return 1;
-
-       if (sizeof(float)!=4) return 1;
-
-       ca=(unsigned char*)&fa;
-       if (compare(fc,ca)) return 1;
-     
-       return 0;
-     }
-    
-  
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  IS_IEEE_BE=1
-else
-  IS_IEEE_BE=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $IS_IEEE_BE = 0
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define IEEE_BE $IS_IEEE_BE
-_ACEOF
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if double and float are ieee little endian" >&5
-$as_echo_n "checking if double and float are ieee little endian... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    
-     int compare(unsigned char* a,unsigned char* b) {
-       while(*a != 0) if (*(b++)!=*(a++)) return 1;
-       return 0;
-     }
-     int main(int argc,char** argv) {
-       unsigned char dc[]={0xD9,0xCC,0x67,0x93,0x80,0xDE,0x61,0x30,0};
-       double da=1.23456789e-75;
-       unsigned char* ca;
-     
-       unsigned char fc[]={0x22,0x48,0x83,0x05,0};
-       float fa=1.23456789e-35;
-     
-       if (sizeof(double)!=8) return 1;
-     
-       ca=(unsigned char*)&da;
-       if (compare(dc,ca)) return 1;
-
-       if (sizeof(float)!=4) return 1;
-
-       ca=(unsigned char*)&fa;
-       if (compare(fc,ca)) return 1;
-     
-       return 0;
-     }
-    
-  
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  IS_IEEE_LE=1
-else
-  IS_IEEE_LE=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $IS_IEEE_LE = 0
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define IEEE_LE $IS_IEEE_LE
-_ACEOF
-
-
-@%:@ Check whether --enable-ieee-native was given.
-if test "${enable_ieee_native+set}" = set; then :
-  enableval=$enable_ieee_native; without_ieee=1
-else
-  without_ieee=0
-fi
-
-
-if test $without_ieee -eq 1
-then
-
-cat >>confdefs.h <<_ACEOF
-@%:@define IEEE_LE 0
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define IEEE_BE 0
-_ACEOF
-
-fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Big Endian" >&5
-$as_echo_n "checking if Big Endian... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    
-      int main(int argc,char** argv){
-        long one= 1;
-        return !(*((char *)(&one)));
-      }
-    
-  
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  IS_BIG_ENDIAN=0
-else
-  IS_BIG_ENDIAN=1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $IS_BIG_ENDIAN = 0
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define IS_BIG_ENDIAN $IS_BIG_ENDIAN
-_ACEOF
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if inline in C" >&5
-$as_echo_n "checking if inline in C... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    
-	  inline int x(int a) {return a;}
-      int main(int argc,char** argv){
-	    int a=1;
-        return x(a);
-      }
-    
-  
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  HAS_INLINE=inline
-else
-  HAS_INLINE=
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  if test x$HAS_INLINE = "x"
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define GRIB_INLINE $HAS_INLINE
-_ACEOF
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if bus error on unaligned pointers" >&5
-$as_echo_n "checking if bus error on unaligned pointers... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    
-	  void foo(char* p) {long x=*((long*)p)+1;}
-	  int main(int argc,char** argv) {char* p="xxxxxxxxx";foo(++p);return 0;}
-    
-  
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  MEM_ALIGN=0
-else
-  MEM_ALIGN=1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $MEM_ALIGN = "0"
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define GRIB_MEM_ALIGN $MEM_ALIGN
-_ACEOF
-
-
-ac_fn_c_check_func "$LINENO" "posix_memalign" "ac_cv_func_posix_memalign"
-if test "x$ac_cv_func_posix_memalign" = xyes; then :
-  
-cat >>confdefs.h <<_ACEOF
-@%:@define POSIX_MEMALIGN 1
-_ACEOF
-
-fi
-
-
-@%:@ Check whether --enable-align-memory was given.
-if test "${enable_align_memory+set}" = set; then :
-  enableval=$enable_align_memory; 
-cat >>confdefs.h <<_ACEOF
-@%:@define GRIB_MEM_ALIGN 1
-_ACEOF
-
-fi
-
-
-@%:@ Check whether --enable-vector was given.
-if test "${enable_vector+set}" = set; then :
-  enableval=$enable_vector; vectorise=${enableval}
-else
-  vectorise=no
-fi
-
-if test "x${vectorise}" = xyes
-then
-   vectorise=1
-else
-   vectorise=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-@%:@define VECTOR $vectorise
-_ACEOF
- 
-
-@%:@ Check whether --enable-memory-management was given.
-if test "${enable_memory_management+set}" = set; then :
-  enableval=$enable_memory_management; 
-cat >>confdefs.h <<_ACEOF
-@%:@define MANAGE_MEM 1
-_ACEOF
- 
-else
-  
-cat >>confdefs.h <<_ACEOF
-@%:@define MANAGE_MEM 0
-_ACEOF
- 
-	 
-fi
-
-
-DEVEL_RULES='' 
-@%:@ Check whether --enable-development was given.
-if test "${enable_development+set}" = set; then :
-  enableval=$enable_development; GRIB_DEVEL=${enableval} 
-else
-  GRIB_DEVEL=no
-
-fi
-
-if test "x${GRIB_DEVEL}" = xyes
-then
-   GRIB_DEVEL=1
-   DEVEL_RULES='extrules.am'
-else
-   GRIB_DEVEL=0
-   DEVEL_RULES='dummy.am'
-fi
-
-
-
- if test $GRIB_DEVEL -eq 1; then
-  WITH_MARS_TESTS_TRUE=
-  WITH_MARS_TESTS_FALSE='#'
-else
-  WITH_MARS_TESTS_TRUE='#'
-  WITH_MARS_TESTS_FALSE=
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5
-$as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_source+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  while :; do
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h> /* for off_t */
-     #include <stdio.h>
-int
-main ()
-{
-int (*fp) (FILE *, off_t, int) = fseeko;
-     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_sys_largefile_source=no; break
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@define _LARGEFILE_SOURCE 1
-#include <sys/types.h> /* for off_t */
-     #include <stdio.h>
-int
-main ()
-{
-int (*fp) (FILE *, off_t, int) = fseeko;
-     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_sys_largefile_source=1; break
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  ac_cv_sys_largefile_source=unknown
-  break
-done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5
-$as_echo "$ac_cv_sys_largefile_source" >&6; }
-case $ac_cv_sys_largefile_source in #(
-  no | unknown) ;;
-  *) 
-cat >>confdefs.h <<_ACEOF
-@%:@define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source
-_ACEOF
-;;
-esac
-rm -rf conftest*
-
-# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
-# in glibc 2.1.3, but that breaks too many other things.
-# If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
-if test $ac_cv_sys_largefile_source != unknown; then
-  
-$as_echo "@%:@define HAVE_FSEEKO 1" >>confdefs.h
-
-fi
-
-CREATE_H=''
-if test x"$ac_cv_func_fseeko" != xyes ; then
-	CREATE_H='./create_h.sh 1'
-else
-	CREATE_H='./create_h.sh 0'
-fi 
-
-@%:@ Check whether --enable-largefile was given.
-if test "${enable_largefile+set}" = set; then :
-  enableval=$enable_largefile; 
-fi
-
-if test "$enable_largefile" != no; then
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
-$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_sys_largefile_CC=no
-     if test "$GCC" != yes; then
-       ac_save_CC=$CC
-       while :; do
-	 # IRIX 6.2 and later do not support large files by default,
-	 # so use the C compiler's -n32 option if that helps.
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-	 if ac_fn_c_try_compile "$LINENO"; then :
-  break
-fi
-rm -f core conftest.err conftest.$ac_objext
-	 CC="$CC -n32"
-	 if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_largefile_CC=' -n32'; break
-fi
-rm -f core conftest.err conftest.$ac_objext
-	 break
-       done
-       CC=$ac_save_CC
-       rm -f conftest.$ac_ext
-    fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
-$as_echo "$ac_cv_sys_largefile_CC" >&6; }
-  if test "$ac_cv_sys_largefile_CC" != no; then
-    CC=$CC$ac_cv_sys_largefile_CC
-  fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
-if ${ac_cv_sys_file_offset_bits+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  while :; do
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_file_offset_bits=no; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@define _FILE_OFFSET_BITS 64
-@%:@include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_file_offset_bits=64; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  ac_cv_sys_file_offset_bits=unknown
-  break
-done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
-$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
-case $ac_cv_sys_file_offset_bits in #(
-  no | unknown) ;;
-  *) 
-cat >>confdefs.h <<_ACEOF
-@%:@define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
-_ACEOF
-;;
-esac
-rm -rf conftest*
-  if test $ac_cv_sys_file_offset_bits = unknown; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
-$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
-if ${ac_cv_sys_large_files+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  while :; do
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_large_files=no; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@define _LARGE_FILES 1
-@%:@include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_large_files=1; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  ac_cv_sys_large_files=unknown
-  break
-done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
-$as_echo "$ac_cv_sys_large_files" >&6; }
-case $ac_cv_sys_large_files in #(
-  no | unknown) ;;
-  *) 
-cat >>confdefs.h <<_ACEOF
-@%:@define _LARGE_FILES $ac_cv_sys_large_files
-_ACEOF
-;;
-esac
-rm -rf conftest*
-  fi
-
-  
-fi
-
-
-
-
-RPM_HOST_CPU=${host_cpu}
-RPM_HOST_VENDOR=${host_vendor}
-RPM_HOST_OS=${host_os}
-RPM_CONFIGURE_ARGS=${ac_configure_args}
-
-
-
-
-
-@%:@ Check whether --with-rpm-release was given.
-if test "${with_rpm_release+set}" = set; then :
-  withval=$with_rpm_release; RPM_RELEASE="$withval"
-else
-  RPM_RELEASE=1
-fi
-
-
-
-ECCODES_SAMPLES_PATH=$samples_files_path
-ECCODES_DEFINITION_PATH=$definition_files_path
-
-
-
-
-@%:@ Check whether --enable-fortran was given.
-if test "${enable_fortran+set}" = set; then :
-  enableval=$enable_fortran; with_fortran=${enableval}
-else
-  with_fortran=yes
-fi
-
-
-if test "x${with_fortran}" = xyes; then
-   without_fortran=0
-else
-   without_fortran=1
-fi
-
-if test "x$FC" = "x"
-then
-  without_fortran=1
-fi
-
-ac_cv_prog_f90_uppercase_mod=no
-
-ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if Fortran 90 compiler capitalizes .mod filenames" >&5
-$as_echo_n "checking if Fortran 90 compiler capitalizes .mod filenames... " >&6; }
-cat <<EOF >conftest.f90
-    module conftest
-    end module conftest
-EOF
-
-ac_try='$FC $FCFLAGS -c conftest.f90 >&5'
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -f CONFTEST.mod ; then
-   ac_cv_prog_f90_uppercase_mod=yes
-   rm -f CONFTEST.mod
-else
-   ac_cv_prog_f90_uppercase_mod=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f90_uppercase_mod" >&5
-$as_echo "$ac_cv_prog_f90_uppercase_mod" >&6; }
-#rm -f conftest*
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
- if test "x$ac_cv_prog_f90_uppercase_mod" = xyes; then
-  UPPER_CASE_MOD_TRUE=
-  UPPER_CASE_MOD_FALSE='#'
-else
-  UPPER_CASE_MOD_TRUE='#'
-  UPPER_CASE_MOD_FALSE=
-fi
-
-
-
-ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if Fortran 90 can resolve debug symbols in modules" >&5
-$as_echo_n "checking if Fortran 90 can resolve debug symbols in modules... " >&6; }
-cat <<EOF >conftest-module.f90
-    module conftest
-    end module conftest
-EOF
-cat <<EOF >conftest.f90
-	program f90usemodule
-	use CONFTEST
-	end program f90usemodule
-EOF
-
-ac_compile_module='$FC -g -c conftest-module.f90 >&5'
-ac_link_program='$FC -g -o conftest -I. conftest.f90 >&5'
-
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile_module\""; } >&5
-  (eval $ac_compile_module) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link_program\""; } >&5
-  (eval $ac_link_program) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -f conftest ; then
-   ac_cv_prog_f90_debug_in_module=yes
-   rm -f conftest
-else
-   ac_cv_prog_f90_debug_in_module=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f90_debug_in_module" >&5
-$as_echo "$ac_cv_prog_f90_debug_in_module" >&6; }
-#rm -f conftest*
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
- if test "x$ac_cv_prog_f90_debug_in_module" = xyes; then
-  DEBUG_IN_MOD_TRUE=
-  DEBUG_IN_MOD_FALSE='#'
-else
-  DEBUG_IN_MOD_TRUE='#'
-  DEBUG_IN_MOD_FALSE=
-fi
-
-
-if test $without_fortran -ne 1 && test "x$ac_cv_prog_f90_debug_in_module" != xyes \
-		&& test "x$enable_shared" = xyes && test "x$FCFLAGS" = "x-g"
-then
-	without_fortran=1
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  
-
-  Your Fortran compiler ($FC) does not support linking to dynamic library modules when debug is enabled. This is a known 
-problem with Portland compilers versions 7 and 8, for example. Possible workarounds are:
-
-  - Use a Portland compiler version 10 or higher or a different compiler.
-  - Disable shared libraries (e.g. configure --disable-shared)
-  - Disable debug (e.g. configure FCFLAGS=\"\")
-
-  Compilation of the Fortran module has been disabled
-
-" >&5
-$as_echo "$as_me: WARNING:  
-
-  Your Fortran compiler ($FC) does not support linking to dynamic library modules when debug is enabled. This is a known 
-problem with Portland compilers versions 7 and 8, for example. Possible workarounds are:
-
-  - Use a Portland compiler version 10 or higher or a different compiler.
-  - Disable shared libraries (e.g. configure --disable-shared)
-  - Disable debug (e.g. configure FCFLAGS=\"\")
-
-  Compilation of the Fortran module has been disabled
-
-" >&2;}
-fi
-
-
-if test $without_fortran -ne 1
-then
-  FORTRAN_MOD=fortran
-  
-  F90_CHECK="examples/F90"
-  
-
-    
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking fortran 90 modules inclusion flag" >&5
-$as_echo_n "checking fortran 90 modules inclusion flag... " >&6; }
-if ${ax_cv_f90_modflag+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-i=0
-while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do
-  i=`expr $i + 1`
-done
-mkdir tmpdir_$i
-cd tmpdir_$i
-cat > conftest.$ac_ext <<_ACEOF
-
-!234567
-      module conftest_module
-      contains
-      subroutine conftest_routine
-      write(*,'(a)') 'gotcha!'
-      end subroutine conftest_routine
-      end module conftest_module
-  
-_ACEOF
-if ac_fn_fc_try_compile "$LINENO"; then :
-  
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-cd ..
-ax_cv_f90_modflag="not found"
-for ax_flag in "-I" "-M" "-p"; do
-  if test "$ax_cv_f90_modflag" = "not found" ; then
-    ax_save_FCFLAGS="$FCFLAGS"
-    FCFLAGS="$ax_save_FCFLAGS ${ax_flag}tmpdir_$i"
-    cat > conftest.$ac_ext <<_ACEOF
-
-!234567
-      program conftest_program
-      use conftest_module
-      call conftest_routine
-      end program conftest_program
-      
-_ACEOF
-if ac_fn_fc_try_compile "$LINENO"; then :
-  ax_cv_f90_modflag="$ax_flag"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-    FCFLAGS="$ax_save_FCFLAGS"
-  fi
-done
-rm -fr tmpdir_$i
-#if test "$ax_cv_f90_modflag" = "not found" ; then
-#  AC_MSG_ERROR([unable to find compiler flag for modules inclusion])
-#fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_f90_modflag" >&5
-$as_echo "$ax_cv_f90_modflag" >&6; }
-  if test "$ax_cv_f90_modflag" = "not found" ; then
-    as_fn_error $? "unable to find compiler flag for modules inclusion" "$LINENO" 5
-  fi
-  F90_MODULE_FLAG=$ax_cv_f90_modflag
-  
-fi
-
-
-@%:@ Check whether --with-ifs-samples was given.
-if test "${with_ifs_samples+set}" = set; then :
-  withval=$with_ifs_samples; ifs_samples=$withval
-else
-  ifs_samples='none'
-fi
-
-IFS_SAMPLES_DIR=""
-
-if test $ifs_samples != 'none'
-then
-	IFS_SAMPLES_DIR=$ifs_samples
-else
-	IFS_SAMPLES_DIR=$ifs_samples_files_path
-fi
-
-
-
-
-@%:@ Check whether --with-emos was given.
-if test "${with_emos+set}" = set; then :
-  withval=$with_emos; emos=$withval
-else
-  emos='none'
-fi
-
-
-EMOS_LIB=""
-if test "$emos" != 'none'
-then
-  EMOS_LIB=$emos
-  
-$as_echo "@%:@define HAVE_LIBEMOS 1" >>confdefs.h
-
-fi
-
-
-
-@%:@ Check whether --with-fortranlibdir was given.
-if test "${with_fortranlibdir+set}" = set; then :
-  withval=$with_fortranlibdir; fortranlibdir=$withval
-else
-  fortranlibdir=''
-fi
-
-
-
-@%:@ Check whether --with-fortranlibs was given.
-if test "${with_fortranlibs+set}" = set; then :
-  withval=$with_fortranlibs; fortranlibs=$withval
-else
-  fortranlibs='none'
-fi
-
-
-if test "$fortranlibs" != 'none'
-then
-   EMOS_LIB="$emos -L$fortranlibdir $fortranlibs -Wl,-rpath $fortranlibdir"
-fi
-
-
-
-@%:@ Check whether --enable-timer was given.
-if test "${enable_timer+set}" = set; then :
-  enableval=$enable_timer; with_timer=${enableval}
-else
-  with_timer=no
-fi
-
-if test "x${with_timer}" = xyes; then
-  
-$as_echo "@%:@define GRIB_TIMER 1" >>confdefs.h
-
-else
-  
-$as_echo "@%:@define GRIB_TIMER 0" >>confdefs.h
-
-fi
-
-
-@%:@ Check whether --enable-omp-packing was given.
-if test "${enable_omp_packing+set}" = set; then :
-  enableval=$enable_omp_packing; with_omp=${enableval}
-else
-  with_omp=no
-fi
-
-if test "x${with_omp}" = xyes; then
-  
-$as_echo "@%:@define OMP_PACKING 1" >>confdefs.h
-
-else
-  
-$as_echo "@%:@define OMP_PACKING 0" >>confdefs.h
-
-fi
-
-
-@%:@ Check whether --with-netcdf was given.
-if test "${with_netcdf+set}" = set; then :
-  withval=$with_netcdf; netcdf_dir=$withval
-else
-  netcdf_dir='none'
-fi
-
-with_netcdf=0
-if test $netcdf_dir != 'none'
-then
-	with_netcdf=1
-	CFLAGS="$CFLAGS -I${netcdf_dir}/include"
-    NETCDF_LDFLAGS="-L${netcdf_dir}/lib -lnetcdf"
-    ORIG_LDFLAGS=$LDFLAGS
-    LDFLAGS="$LDFLAGS $NETCDF_LDFLAGS"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nc_open in -lnetcdf" >&5
-$as_echo_n "checking for nc_open in -lnetcdf... " >&6; }
-if ${ac_cv_lib_netcdf_nc_open+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lnetcdf  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char nc_open ();
-int
-main ()
-{
-return nc_open ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_netcdf_nc_open=yes
-else
-  ac_cv_lib_netcdf_nc_open=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_netcdf_nc_open" >&5
-$as_echo "$ac_cv_lib_netcdf_nc_open" >&6; }
-if test "x$ac_cv_lib_netcdf_nc_open" = xyes; then :
-  netcdf_ok=1
-else
-  netcdf_ok=0
-fi
-
-    LDFLAGS=$ORIG_LDFLAGS
-	if test $netcdf_ok -eq 0
-	then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: 
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-  CONFIGURATION ERROR: netcdf test not passed.                                                               
-  Please check that the path to the netcdf library given in --with-netcdf=PATH_TO_NETCDF
-  is correct. Otherwise build without netcdf.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-	  " >&5
-$as_echo "$as_me: 
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-  CONFIGURATION ERROR: netcdf test not passed.                                                               
-  Please check that the path to the netcdf library given in --with-netcdf=PATH_TO_NETCDF
-  is correct. Otherwise build without netcdf.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-	  " >&6;}
-	  test 0 -eq 1
-	  exit 
-    fi
-    
-    
-$as_echo "@%:@define HAVE_NETCDF 1" >>confdefs.h
-
-fi
-
-@%:@ Check whether --enable-jpeg was given.
-if test "${enable_jpeg+set}" = set; then :
-  enableval=$enable_jpeg; without_jpeg=1
-else
-  without_jpeg=0
-fi
-
-
-
-@%:@ Check whether --with-jasper was given.
-if test "${with_jasper+set}" = set; then :
-  withval=$with_jasper; jasper_dir=$withval
-else
-  jasper_dir='system'
-fi
-
-
-JASPER_DIR=$jasper_dir
-
-
-if test $jasper_dir != 'system'
-then
-  CFLAGS="$CFLAGS -I${jasper_dir}/include"
-  LDFLAGS="$LDFLAGS -L${jasper_dir}/lib"
-fi
-
-
-@%:@ Check whether --with-openjpeg was given.
-if test "${with_openjpeg+set}" = set; then :
-  withval=$with_openjpeg; openjpeg_dir=$withval
-else
-  openjpeg_dir='system'
-fi
-
-
-OPENJPEG_DIR=$openjpeg_dir
-
-
-if test $openjpeg_dir != 'system'
-then
-  CFLAGS="$CFLAGS -I${openjpeg_dir}/include"
-  LDFLAGS="$LDFLAGS -L${openjpeg_dir}/lib"
-fi
-
-if test $without_jpeg -ne 1
-then
-    
-$as_echo "@%:@define HAVE_JPEG 1" >>confdefs.h
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jas_stream_memopen in -ljasper" >&5
-$as_echo_n "checking for jas_stream_memopen in -ljasper... " >&6; }
-if ${ac_cv_lib_jasper_jas_stream_memopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ljasper  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char jas_stream_memopen ();
-int
-main ()
-{
-return jas_stream_memopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_jasper_jas_stream_memopen=yes
-else
-  ac_cv_lib_jasper_jas_stream_memopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_jasper_jas_stream_memopen" >&5
-$as_echo "$ac_cv_lib_jasper_jas_stream_memopen" >&6; }
-if test "x$ac_cv_lib_jasper_jas_stream_memopen" = xyes; then :
-  jasper_ok=1
-else
-  jasper_ok=0
-fi
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for opj_image_create in -lopenjpeg" >&5
-$as_echo_n "checking for opj_image_create in -lopenjpeg... " >&6; }
-if ${ac_cv_lib_openjpeg_opj_image_create+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lopenjpeg  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char opj_image_create ();
-int
-main ()
-{
-return opj_image_create ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_openjpeg_opj_image_create=yes
-else
-  ac_cv_lib_openjpeg_opj_image_create=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_openjpeg_opj_image_create" >&5
-$as_echo "$ac_cv_lib_openjpeg_opj_image_create" >&6; }
-if test "x$ac_cv_lib_openjpeg_opj_image_create" = xyes; then :
-  openjpeg_ok=1
-else
-  openjpeg_ok=0
-fi
-
-
-    jpeg_ok=0
-
-    # prefer openjpeg over jasper
-	if test $openjpeg_ok -eq 1
-	then
-	  jpeg_ok=1
-      LIB_OPENJPEG='-lopenjpeg -lm'
-      LIBS="$LIB_OPENJPEG $LIBS"
-      
-$as_echo "@%:@define HAVE_LIBOPENJPEG 1" >>confdefs.h
-
-      
-    elif test $jasper_ok -eq 1
-    then
-	  jpeg_ok=1
-      LIB_JASPER='-ljasper'
-      LIBS="$LIB_JASPER $LIBS"
-      
-$as_echo "@%:@define HAVE_LIBJASPER 1" >>confdefs.h
-
-      
-	fi
-
-	if test $jpeg_ok -eq 0
-	then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: 
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-  CONFIGURATION ERROR: jpeg library (jasper or openjpeg) required.                                                               
-  jpeg library installation is not working or missing.                                 
-
-  To fix this problem you have the following options.                                  
-  1) Install without jpeg support enabled (--disable-jpeg), but you will not be able to
-     decode grib2 data encoded in jpeg.
-  2) Check if you have a jpeg library installed in a path different from your system path. 
-     In this case you can provide your jpeg library installation path to the configure
-     through the options:
-        --with-jasper=\"jasper_lib_path\"
-        --with-openjpeg=\"openjpeg_lib_path\"
-  3) Download and install one of the supported jpeg libraries.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-	  " >&5
-$as_echo "$as_me: 
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-  CONFIGURATION ERROR: jpeg library (jasper or openjpeg) required.                                                               
-  jpeg library installation is not working or missing.                                 
-
-  To fix this problem you have the following options.                                  
-  1) Install without jpeg support enabled (--disable-jpeg), but you will not be able to
-     decode grib2 data encoded in jpeg.
-  2) Check if you have a jpeg library installed in a path different from your system path. 
-     In this case you can provide your jpeg library installation path to the configure
-     through the options:
-        --with-jasper=\"jasper_lib_path\"
-        --with-openjpeg=\"openjpeg_lib_path\"
-  3) Download and install one of the supported jpeg libraries.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-	  " >&6;}
-	   0 -eq 1 
-	  exit 
-    fi
-  JPEG_TEST="jpeg.sh"
-  
-fi
-
-CCSDS_TEST=""
-
-@%:@ Check whether --with-aec was given.
-if test "${with_aec+set}" = set; then :
-  withval=$with_aec; 
-else
-  with_aec=no
-fi
-
-
-if test "x$with_aec" != xno ; then
-  if test "x$with_aec" != xyes ; then
-    LDFLAGS="$LDFLAGS -L$with_aec/lib"
-    CPPFLAGS="$CPPFLAGS -I$with_aec/include"
-  fi
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for aec_encode in -laec" >&5
-$as_echo_n "checking for aec_encode in -laec... " >&6; }
-if ${ac_cv_lib_aec_aec_encode+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-laec  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char aec_encode ();
-int
-main ()
-{
-return aec_encode ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_aec_aec_encode=yes
-else
-  ac_cv_lib_aec_aec_encode=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_aec_aec_encode" >&5
-$as_echo "$ac_cv_lib_aec_aec_encode" >&6; }
-if test "x$ac_cv_lib_aec_aec_encode" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_LIBAEC 1
-_ACEOF
-
-  LIBS="-laec $LIBS"
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "aec test failed (--without-aec to disable)
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-  CCSDS_TEST="ccsds.sh"
-  LIB_AEC='-laec'
-  
-  AEC_DIR="$with_aec"
-  
-
-fi
-
-
-
-@%:@ Check whether --with-png-support was given.
-if test "${with_png_support+set}" = set; then :
-  withval=$with_png_support; with_png=1
-else
-  with_png=0
-fi
-
-
-if test $with_png -gt 0
-then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PNG " >&5
-$as_echo_n "checking for PNG ... " >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
-$as_echo "" >&6; }
-    ac_fn_c_check_header_mongrel "$LINENO" "png.h" "ac_cv_header_png_h" "$ac_includes_default"
-if test "x$ac_cv_header_png_h" = xyes; then :
-  passed=1
-else
-  passed=0
-fi
-
-
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for png_read_png in -lpng" >&5
-$as_echo_n "checking for png_read_png in -lpng... " >&6; }
-if ${ac_cv_lib_png_png_read_png+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lpng  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char png_read_png ();
-int
-main ()
-{
-return png_read_png ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_png_png_read_png=yes
-else
-  ac_cv_lib_png_png_read_png=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_png_png_read_png" >&5
-$as_echo "$ac_cv_lib_png_png_read_png" >&6; }
-if test "x$ac_cv_lib_png_png_read_png" = xyes; then :
-  passed=1
-else
-  passed=0
-fi
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if PNG support package is complete" >&5
-$as_echo_n "checking if PNG support package is complete... " >&6; }
-
-    if test $passed -gt 0
-    then
-      LIB_PNG='-lpng'
-      LIBS="$LIB_PNG $LIBS"
-      
-$as_echo "@%:@define HAVE_LIBPNG 1" >>confdefs.h
-
-      
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no -- some components failed test" >&5
-$as_echo "no -- some components failed test" >&6; }
-    fi
-fi
-
-
-#PERL_INSTALL_OPTIONS="PREFIX=$prefix INSTALLDIRS=perl"
-PERL_INSTALL_OPTIONS="LIB=$default_perl_install"
-
-@%:@ Check whether --enable-install-system-perl was given.
-if test "${enable_install_system_perl+set}" = set; then :
-  enableval=$enable_install_system_perl; enable_perl_install='yes'
-else
-  enable_perl_install='no'
-fi
-
-
-if test "$enable_perl_install" = 'yes'
-then
-    PERL_INSTALL_OPTIONS=""
-fi
-
-
-
-
-@%:@ Check whether --with-perl was given.
-if test "${with_perl+set}" = set; then :
-  withval=$with_perl; with_perl=$withval
-else
-  with_perl='no'
-fi
-
-
-if test "$with_perl" != 'no'
-then
-  if test "$with_perl" != 'yes'
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl" >&5
-$as_echo_n "checking for perl... " >&6; }
-if ${ac_cv_path_PERL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_path_PERL="$with_perl"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_PERL" >&5
-$as_echo "$ac_cv_path_PERL" >&6; };
-    PERL=$ac_cv_path_PERL
-      else
-    for ac_prog in perl perl5
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PERL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PERL in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PERL=$ac_cv_path_PERL
-if test -n "$PERL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
-$as_echo "$PERL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$PERL" && break
-done
-test -n "$PERL" || PERL="perl"
-  fi
-fi
-
-builddir=`pwd`
-
-GRIB_API_LIB="${builddir}/src/grib_api.a"
-GRIB_API_INC="${builddir}/src"
-
-@%:@ Check whether --with-perl-options was given.
-if test "${with_perl_options+set}" = set; then :
-  withval=$with_perl_options; PERL_MAKE_OPTIONS=$withval
-fi
-
-
-
-
-
- if test $with_perl != no; then
-  WITH_PERL_TRUE=
-  WITH_PERL_FALSE='#'
-else
-  WITH_PERL_TRUE='#'
-  WITH_PERL_FALSE=
-fi
-
-
-@%:@ Check whether --enable-python was given.
-if test "${enable_python+set}" = set; then :
-  enableval=$enable_python; 
-fi
-
-
-@%:@ Check whether --enable-numpy was given.
-if test "${enable_numpy+set}" = set; then :
-  enableval=$enable_numpy; 
-fi
-
-
-if test "x$enable_python" = "xyes"
-then
-      
-      
-
-  
-
-  
-        if test -n "$PYTHON"; then
-      # If the user set $PYTHON, use it and don't search something else.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 2.5" >&5
-$as_echo_n "checking whether $PYTHON version is >= 2.5... " >&6; }
-      prog="import sys
-# split strings by '.' and convert to numeric.  Append some zeros
-# because we need at least 4 digits for the hex conversion.
-# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0]
-minverhex = 0
-# xrange is not present in Python 3.0 and range returns an iterator
-for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
-sys.exit(sys.hexversion < minverhex)"
-  if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5
-   ($PYTHON -c "$prog") >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-			       as_fn_error $? "Python interpreter is too old" "$LINENO" 5
-fi
-      am_display_PYTHON=$PYTHON
-    else
-      # Otherwise, try each interpreter until we find one that satisfies
-      # VERSION.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.5" >&5
-$as_echo_n "checking for a Python interpreter with version >= 2.5... " >&6; }
-if ${am_cv_pathless_PYTHON+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  
-	for am_cv_pathless_PYTHON in python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7  python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do
-	  test "$am_cv_pathless_PYTHON" = none && break
-	  prog="import sys
-# split strings by '.' and convert to numeric.  Append some zeros
-# because we need at least 4 digits for the hex conversion.
-# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0]
-minverhex = 0
-# xrange is not present in Python 3.0 and range returns an iterator
-for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
-sys.exit(sys.hexversion < minverhex)"
-  if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5
-   ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }; then :
-  break
-fi
-	done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
-$as_echo "$am_cv_pathless_PYTHON" >&6; }
-      # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
-      if test "$am_cv_pathless_PYTHON" = none; then
-	PYTHON=:
-      else
-        # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
-set dummy $am_cv_pathless_PYTHON; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PYTHON in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PYTHON=$ac_cv_path_PYTHON
-if test -n "$PYTHON"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-      fi
-      am_display_PYTHON=$am_cv_pathless_PYTHON
-    fi
-  
-
-  if test "$PYTHON" = :; then
-      as_fn_error $? "no suitable Python interpreter found" "$LINENO" 5
-  else
-
-      
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
-$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
-if ${am_cv_python_version+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
-$as_echo "$am_cv_python_version" >&6; }
-  PYTHON_VERSION=$am_cv_python_version
-
-
-        
-  PYTHON_PREFIX='${prefix}'
-
-  PYTHON_EXEC_PREFIX='${exec_prefix}'
-
-
-    
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
-$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
-if ${am_cv_python_platform+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
-$as_echo "$am_cv_python_platform" >&6; }
-  PYTHON_PLATFORM=$am_cv_python_platform
-
-
-  # Just factor out some code duplication.
-  am_python_setup_sysconfig="\
-import sys
-# Prefer sysconfig over distutils.sysconfig, for better compatibility
-# with python 3.x.  See automake bug#10227.
-try:
-    import sysconfig
-except ImportError:
-    can_use_sysconfig = 0
-else:
-    can_use_sysconfig = 1
-# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
-# <https://github.com/pypa/virtualenv/issues/118>
-try:
-    from platform import python_implementation
-    if python_implementation() == 'CPython' and sys.version[:3] == '2.7':
-        can_use_sysconfig = 0
-except ImportError:
-    pass"
-
-  
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
-$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
-if ${am_cv_python_pythondir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$prefix" = xNONE
-     then
-       am_py_prefix=$ac_default_prefix
-     else
-       am_py_prefix=$prefix
-     fi
-     am_cv_python_pythondir=`$PYTHON -c "
-$am_python_setup_sysconfig
-if can_use_sysconfig:
-    sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
-else:
-    from distutils import sysconfig
-    sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
-sys.stdout.write(sitedir)"`
-     case $am_cv_python_pythondir in
-     $am_py_prefix*)
-       am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
-       am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
-       ;;
-     *)
-       case $am_py_prefix in
-         /usr|/System*) ;;
-         *)
-	  am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
-	  ;;
-       esac
-       ;;
-     esac
-    
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
-$as_echo "$am_cv_python_pythondir" >&6; }
-  pythondir=$am_cv_python_pythondir
-
-
-      
-  pkgpythondir=\${pythondir}/$PACKAGE
-
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
-$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
-if ${am_cv_python_pyexecdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$exec_prefix" = xNONE
-     then
-       am_py_exec_prefix=$am_py_prefix
-     else
-       am_py_exec_prefix=$exec_prefix
-     fi
-     am_cv_python_pyexecdir=`$PYTHON -c "
-$am_python_setup_sysconfig
-if can_use_sysconfig:
-    sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
-else:
-    from distutils import sysconfig
-    sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
-sys.stdout.write(sitedir)"`
-     case $am_cv_python_pyexecdir in
-     $am_py_exec_prefix*)
-       am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
-       am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
-       ;;
-     *)
-       case $am_py_exec_prefix in
-         /usr|/System*) ;;
-         *)
-	   am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
-	   ;;
-       esac
-       ;;
-     esac
-    
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
-$as_echo "$am_cv_python_pyexecdir" >&6; }
-  pyexecdir=$am_cv_python_pyexecdir
-
-
-  
-  pkgpyexecdir=\${pyexecdir}/$PACKAGE
-
-
-    
-  fi
-
-
-
-  
-  
-  
-  
-  
-
-  for ac_prog in python$PYTHON_VERSION-config python-config
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON_CONFIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PYTHON_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PYTHON_CONFIG="$PYTHON_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in `dirname $PYTHON`
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PYTHON_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PYTHON_CONFIG=$ac_cv_path_PYTHON_CONFIG
-if test -n "$PYTHON_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CONFIG" >&5
-$as_echo "$PYTHON_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$PYTHON_CONFIG" && break
-done
-test -n "$PYTHON_CONFIG" || PYTHON_CONFIG="no"
-
-  if test "$PYTHON_CONFIG" = no; then :
-  as_fn_error $? "cannot find python-config for $PYTHON." "$LINENO" 5
-fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking python include flags" >&5
-$as_echo_n "checking python include flags... " >&6; }
-  PYTHON_INCLUDES=`$PYTHON_CONFIG --includes`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_INCLUDES" >&5
-$as_echo "$PYTHON_INCLUDES" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking python link flags" >&5
-$as_echo_n "checking python link flags... " >&6; }
-  PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
-$as_echo "$PYTHON_LDFLAGS" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking python C flags" >&5
-$as_echo_n "checking python C flags... " >&6; }
-  PYTHON_CFLAGS=`$PYTHON_CONFIG --cflags`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CFLAGS" >&5
-$as_echo "$PYTHON_CFLAGS" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking python libraries" >&5
-$as_echo_n "checking python libraries... " >&6; }
-  PYTHON_LIBS=`$PYTHON_CONFIG --libs`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LIBS" >&5
-$as_echo "$PYTHON_LIBS" >&6; }
-
-  # macro that gets the include path for Python.h which is used to build
-  # the shared library corresponding to the GRIB API Python module.
-  # AX_PYTHON_DEVEL
-
-  # enable testing scripts if building with Python
-  PYTHON_CHECK='examples/python'
-  
-
-  data_handler=numpy
-  if test "x$enable_numpy" != "xno"
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether numpy is installed" >&5
-$as_echo_n "checking whether numpy is installed... " >&6; }
-
-    has_numpy=`$PYTHON -c "import numpy;print numpy" 2> /dev/null`
-    if test "x$has_numpy" = "x"
-    then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-       as_fn_error $? "NumPy is not installed. Use --disable-numpy if you want to disable Numpy from the build." "$LINENO" 5
-    else
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-       NUMPY_INCLUDE=`$PYTHON -c "import numpy;print numpy.get_include()"`
-       
-    fi
-  else
-    data_handler=array
-  fi
-
-  PYTHON_DATA_HANDLER=$data_handler
-  
-fi
-
- if test x$PYTHON != x; then
-  WITH_PYTHON_TRUE=
-  WITH_PYTHON_FALSE='#'
-else
-  WITH_PYTHON_TRUE='#'
-  WITH_PYTHON_FALSE=
-fi
-
- if test x$FORTRAN_MOD != x; then
-  WITH_FORTRAN_TRUE=
-  WITH_FORTRAN_FALSE='#'
-else
-  WITH_FORTRAN_TRUE='#'
-  WITH_FORTRAN_FALSE=
-fi
-
- if test "x$enable_shared" = xyes; then
-  CREATING_SHARED_LIBS_TRUE=
-  CREATING_SHARED_LIBS_FALSE='#'
-else
-  CREATING_SHARED_LIBS_TRUE='#'
-  CREATING_SHARED_LIBS_FALSE=
-fi
-
-
-
-
-# Extract the first word of "rm", so it can be a program name with args.
-set dummy rm; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RM+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RM"; then
-  ac_cv_prog_RM="$RM" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RM="rm"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RM=$ac_cv_prog_RM
-if test -n "$RM"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RM" >&5
-$as_echo "$RM" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AR="${ac_tool_prefix}ar"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_AR"; then
-  ac_ct_AR=$AR
-  # Extract the first word of "ar", so it can be a program name with args.
-set dummy ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AR="ar"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_AR" = x; then
-    AR="ar"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AR=$ac_ct_AR
-  fi
-else
-  AR="$ac_cv_prog_AR"
-fi
-
-
-WARN_PEDANTIC=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -pedantic -Wall" >&5
-$as_echo_n "checking whether $CC supports -pedantic -Wall... " >&6; }
-if ${grib_api_cv_prog_cc_pedantic__Wall+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_CFLAGS="$CFLAGS"
-CFLAGS="-pedantic -Wall"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  grib_api_cv_prog_cc_pedantic__Wall=yes
-else
-  grib_api_cv_prog_cc_pedantic__Wall=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-CFLAGS="$save_CFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $grib_api_cv_prog_cc_pedantic__Wall" >&5
-$as_echo "$grib_api_cv_prog_cc_pedantic__Wall" >&6; }
-if test $grib_api_cv_prog_cc_pedantic__Wall = yes; then :
-  WARN_PEDANTIC="-pedantic -Wall"
-fi
-
-
-WERROR=
-@%:@ Check whether --enable-werror-always was given.
-if test "${enable_werror_always+set}" = set; then :
-  enableval=$enable_werror_always; 
-else
-  enable_werror_always=no
-fi
-
-if test $enable_werror_always = yes; then :
-  WERROR=-Werror
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pow in -lm" >&5
-$as_echo_n "checking for pow in -lm... " >&6; }
-if ${ac_cv_lib_m_pow+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char pow ();
-int
-main ()
-{
-return pow ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_m_pow=yes
-else
-  ac_cv_lib_m_pow=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_pow" >&5
-$as_echo "$ac_cv_lib_m_pow" >&6; }
-if test "x$ac_cv_lib_m_pow" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_LIBM 1
-_ACEOF
-
-  LIBS="-lm $LIBS"
-
-fi
-
-
-ac_header_dirent=no
-for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
-  as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
-$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; }
-if eval \${$as_ac_Header+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <$ac_hdr>
-
-int
-main ()
-{
-if ((DIR *) 0)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$as_ac_Header=yes"
-else
-  eval "$as_ac_Header=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$as_ac_Header
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
-_ACEOF
-
-ac_header_dirent=$ac_hdr; break
-fi
-
-done
-# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
-if test $ac_header_dirent = dirent.h; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char opendir ();
-int
-main ()
-{
-return opendir ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' dir; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_opendir=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_opendir+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_opendir+:} false; then :
-  
-else
-  ac_cv_search_opendir=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
-ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-  
-fi
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char opendir ();
-int
-main ()
-{
-return opendir ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' x; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_opendir=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_opendir+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_opendir+:} false; then :
-  
-else
-  ac_cv_search_opendir=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
-ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-  
-fi
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-  
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-  
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-  
-$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-for ac_header in stddef.h stdlib.h string.h sys/param.h sys/time.h unistd.h math.h stdarg.h assert.h ctype.h fcntl.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- 
-fi
-
-done
-
-
-ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
-  
-else
-  
-cat >>confdefs.h <<_ACEOF
-@%:@define size_t unsigned int
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
-$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
-if ${ac_cv_header_time+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
-
-int
-main ()
-{
-if ((struct tm *) 0)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_time=yes
-else
-  ac_cv_header_time=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
-$as_echo "$ac_cv_header_time" >&6; }
-if test $ac_cv_header_time = yes; then
-  
-$as_echo "@%:@define TIME_WITH_SYS_TIME 1" >>confdefs.h
-
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5
-$as_echo_n "checking whether closedir returns void... " >&6; }
-if ${ac_cv_func_closedir_void+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ac_cv_func_closedir_void=yes
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header_dirent>
-#ifndef __cplusplus
-int closedir ();
-#endif
-
-int
-main ()
-{
-return closedir (opendir (".")) != 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_func_closedir_void=no
-else
-  ac_cv_func_closedir_void=yes
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_closedir_void" >&5
-$as_echo "$ac_cv_func_closedir_void" >&6; }
-if test $ac_cv_func_closedir_void = yes; then
-  
-$as_echo "@%:@define CLOSEDIR_VOID 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5
-$as_echo_n "checking return type of signal handlers... " >&6; }
-if ${ac_cv_type_signal+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <signal.h>
-
-int
-main ()
-{
-return *(signal (0, 0)) (0) == 1;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_type_signal=int
-else
-  ac_cv_type_signal=void
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5
-$as_echo "$ac_cv_type_signal" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-@%:@define RETSIGTYPE $ac_cv_type_signal
-_ACEOF
-
-
-for ac_func in vprintf
-do :
-  ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf"
-if test "x$ac_cv_func_vprintf" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_VPRINTF 1
-_ACEOF
- 
-ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
-if test "x$ac_cv_func__doprnt" = xyes; then :
-  
-$as_echo "@%:@define HAVE_DOPRNT 1" >>confdefs.h
-
-fi
-
-fi
-done
-
-
-for ac_func in bzero gettimeofday
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
- 
-fi
-done
-
-
-
-HOST_CPU=${host_cpu}
-HOST_VENDOR=${host_vendor}
-HOST_OS=${host_os}
-
-if test x$HOST_OS = "xlinux-gnu"
-then
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Linux distribution " >&5
-$as_echo_n "checking for Linux distribution ... " >&6; }
-
-	# This works for Fedora, RedHat and Slackware
-	for f in /etc/fedora-release /etc/redhat-release /etc/slackware-release
-	do
-		if test -f $f; then
-			distro=`cat $f`	
-			break
-		fi
-	done	
-
-	# This works in Ubuntu (11 at least)
-	if test -f /etc/lsb-release; then
-		distro=`cat /etc/lsb-release | grep DISTRIB_ID | awk -F= '{print }' `
-		distro_version=`cat /etc/lsb-release | grep DISTRIB_RELEASE | awk -F= '{print }' `
-	fi
-
-	# For SuSE
-	if test -f /etc/SuSE-release; then
-		distro=`cat /etc/SuSE-release | head -1`
-		#distro_version=`cat /etc/SuSE-release | tail -1 | awk -F= '{print }' `
-	fi
-
-	# At least Debian has this
-	if test -f /etc/issue.net -a "x$distro" = x; then
-		distro=`cat /etc/issue.net | head -1`
-	fi
-
-	# Everything else
-	if test "x$distro" = x; then
-		distro="Unknown Linux"
-	fi
-	
-	LINUX_DISTRIBUTION_NAME=$distro
-	LINUX_DISTRIBUTION_VERSION=$distro_version
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINUX_DISTRIBUTION_NAME $LINUX_DISTRIBUTION_VERSION" >&5
-$as_echo "$LINUX_DISTRIBUTION_NAME $LINUX_DISTRIBUTION_VERSION" >&6; }
-
-else
-	LINUX_DISTRIBUTION_NAME=$HOST_OS
-	LINUX_DISTRIBUTION_VERSION=""
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: OS is non-Linux UNIX $HOST_OS." >&5
-$as_echo "$as_me: OS is non-Linux UNIX $HOST_OS." >&6;}
-fi
-
-
-
-
-
-ac_config_files="$ac_config_files Makefile src/Makefile fortran/Makefile tools/Makefile data/Makefile definitions/Makefile samples/Makefile ifs_samples/grib1/Makefile ifs_samples/grib1_mlgrib2/Makefile ifs_samples/grib1_mlgrib2_ieee64/Makefile tests/Makefile examples/C/Makefile examples/F90/Makefile tigge/Makefile perl/GRIB-API/Makefile.PL perl/Makefile python/Makefile examples/python/Makefile"
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems.  If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
-  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-
-  (set) 2>&1 |
-    case $as_nl`(ac_space=' '; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes: double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \.
-      sed -n \
-	"s/'/'\\\\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-      ;; #(
-    *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-) |
-  sed '
-     /^ac_cv_env_/b end
-     t clear
-     :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-     t end
-     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-     :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
-  if test -w "$cache_file"; then
-    if test "x$cache_file" != "x/dev/null"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
-      if test ! -f "$cache_file" || test -h "$cache_file"; then
-	cat confcache >"$cache_file"
-      else
-        case $cache_file in #(
-        */* | ?:*)
-	  mv -f confcache "$cache_file"$$ &&
-	  mv -f "$cache_file"$$ "$cache_file" ;; #(
-        *)
-	  mv -f confcache "$cache_file" ;;
-	esac
-      fi
-    fi
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
-  fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-DEFS=-DHAVE_CONFIG_H
-
-ac_libobjs=
-ac_ltlibobjs=
-U=
-for ac_i in : $LIB@&t at OBJS; do test "x$ac_i" = x: && continue
-  # 1. Remove the extension, and $U if already installed.
-  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
-  #    will be set to the directory where LIBOBJS objects are built.
-  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIB@&t at OBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
-$as_echo_n "checking that generated files are newer than configure... " >&6; }
-   if test -n "$am_sleep_pid"; then
-     # Hide warnings about reused PIDs.
-     wait $am_sleep_pid 2>/dev/null
-   fi
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
-$as_echo "done" >&6; }
-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  as_fn_error $? "conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
- if test -n "$EXEEXT"; then
-  am__EXEEXT_TRUE=
-  am__EXEEXT_FALSE='#'
-else
-  am__EXEEXT_TRUE='#'
-  am__EXEEXT_FALSE=
-fi
-
-if test -z "${UPPER_CASE_MOD_TRUE}" && test -z "${UPPER_CASE_MOD_FALSE}"; then
-  as_fn_error $? "conditional \"UPPER_CASE_MOD\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${WITH_MARS_TESTS_TRUE}" && test -z "${WITH_MARS_TESTS_FALSE}"; then
-  as_fn_error $? "conditional \"WITH_MARS_TESTS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${UPPER_CASE_MOD_TRUE}" && test -z "${UPPER_CASE_MOD_FALSE}"; then
-  as_fn_error $? "conditional \"UPPER_CASE_MOD\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${DEBUG_IN_MOD_TRUE}" && test -z "${DEBUG_IN_MOD_FALSE}"; then
-  as_fn_error $? "conditional \"DEBUG_IN_MOD\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${WITH_PERL_TRUE}" && test -z "${WITH_PERL_FALSE}"; then
-  as_fn_error $? "conditional \"WITH_PERL\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${WITH_PYTHON_TRUE}" && test -z "${WITH_PYTHON_FALSE}"; then
-  as_fn_error $? "conditional \"WITH_PYTHON\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${WITH_FORTRAN_TRUE}" && test -z "${WITH_FORTRAN_FALSE}"; then
-  as_fn_error $? "conditional \"WITH_FORTRAN\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${CREATING_SHARED_LIBS_TRUE}" && test -z "${CREATING_SHARED_LIBS_FALSE}"; then
-  as_fn_error $? "conditional \"CREATING_SHARED_LIBS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-
-: "${CONFIG_STATUS=./config.status}"
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in @%:@(
-  *posix*) :
-    set -o posix ;; @%:@(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in @%:@(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in @%:@((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
-@%:@ ----------------------------------------
-@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-@%:@ script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} @%:@ as_fn_error
-
-
-@%:@ as_fn_set_status STATUS
-@%:@ -----------------------
-@%:@ Set @S|@? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} @%:@ as_fn_set_status
-
-@%:@ as_fn_exit STATUS
-@%:@ -----------------
-@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} @%:@ as_fn_exit
-
-@%:@ as_fn_unset VAR
-@%:@ ---------------
-@%:@ Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-@%:@ as_fn_append VAR VALUE
-@%:@ ----------------------
-@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
-@%:@ advantage of any shell optimizations that allow amortized linear growth over
-@%:@ repeated appends, instead of the typical quadratic growth present in naive
-@%:@ implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-@%:@ as_fn_arith ARG...
-@%:@ ------------------
-@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
-@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
-@%:@ must be portable across @S|@(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in @%:@(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-@%:@ as_fn_mkdir_p
-@%:@ -------------
-@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} @%:@ as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-
-@%:@ as_fn_executable_p FILE
-@%:@ -----------------------
-@%:@ Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} @%:@ as_fn_executable_p
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by eccodes $as_me  , which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-case $ac_config_headers in *"
-"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
-esac
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_headers="$ac_config_headers"
-config_commands="$ac_config_commands"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration.  Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number and configuration settings, then exit
-      --config     print configuration, then exit
-  -q, --quiet, --silent
-                   do not print progress messages
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-      --file=FILE[:TEMPLATE] 
-                   instantiate the configuration file FILE
-      --header=FILE[:TEMPLATE] 
-                   instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Configuration commands:
-$config_commands
-
-Report bugs to <Software.Support at ecmwf.int>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-eccodes config.status  
-configured by $0, generated by GNU Autoconf 2.69,
-  with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-MKDIR_P='$MKDIR_P'
-AWK='$AWK'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=?*)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
-    ac_shift=:
-    ;;
-  --*=)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=
-    ac_shift=:
-    ;;
-  *)
-    ac_option=$1
-    ac_optarg=$2
-    ac_shift=shift
-    ;;
-  esac
-
-  case $ac_option in
-  # Handling of the options.
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    ac_cs_recheck=: ;;
-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
-  --config | --confi | --conf | --con | --co | --c )
-    $as_echo "$ac_cs_config"; exit ;;
-  --debug | --debu | --deb | --de | --d | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    '') as_fn_error $? "missing file argument" ;;
-    esac
-    as_fn_append CONFIG_FILES " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --header | --heade | --head | --hea )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --he | --h)
-    # Conflict between --help and --header
-    as_fn_error $? "ambiguous option: \`$1'
-Try \`$0 --help' for more information.";;
-  --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil | --si | --s)
-    ac_cs_silent=: ;;
-
-  # This is an error.
-  -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
-  *) as_fn_append ac_config_targets " $1"
-     ac_need_defaults=false ;;
-
-  esac
-  shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
-  exec 6>/dev/null
-  ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
-  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-  shift
-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
-  CONFIG_SHELL='$SHELL'
-  export CONFIG_SHELL
-  exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
-@%:@@%:@ Running $as_me. @%:@@%:@
-_ASBOX
-  $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-#
-# INIT-COMMANDS
-#
-
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
-macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
-enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
-enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
-pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
-enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
-SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
-ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
-PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
-host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
-host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
-host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
-build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
-build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
-build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
-SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
-Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
-GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
-EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
-FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
-LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
-NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
-LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
-max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
-ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
-exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
-lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
-lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
-lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
-reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
-reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
-OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
-deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
-file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
-file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
-want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
-DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
-sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
-AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
-AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
-archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
-STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
-RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
-old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
-lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
-CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
-CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
-compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
-GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
-nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
-lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
-objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
-MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
-need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
-MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
-DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
-NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
-LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
-OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
-libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
-shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
-extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
-hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
-inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
-always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
-include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
-prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
-postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
-file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
-variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
-need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
-version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
-runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
-libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
-library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
-soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
-install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
-postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
-finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
-hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
-sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
-sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
-enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
-old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
-striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`'
-predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`'
-postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`'
-predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`'
-postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`'
-LD_F77='`$ECHO "$LD_F77" | $SED "$delay_single_quote_subst"`'
-LD_FC='`$ECHO "$LD_FC" | $SED "$delay_single_quote_subst"`'
-reload_flag_F77='`$ECHO "$reload_flag_F77" | $SED "$delay_single_quote_subst"`'
-reload_flag_FC='`$ECHO "$reload_flag_FC" | $SED "$delay_single_quote_subst"`'
-reload_cmds_F77='`$ECHO "$reload_cmds_F77" | $SED "$delay_single_quote_subst"`'
-reload_cmds_FC='`$ECHO "$reload_cmds_FC" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds_F77='`$ECHO "$old_archive_cmds_F77" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds_FC='`$ECHO "$old_archive_cmds_FC" | $SED "$delay_single_quote_subst"`'
-compiler_F77='`$ECHO "$compiler_F77" | $SED "$delay_single_quote_subst"`'
-compiler_FC='`$ECHO "$compiler_FC" | $SED "$delay_single_quote_subst"`'
-GCC_F77='`$ECHO "$GCC_F77" | $SED "$delay_single_quote_subst"`'
-GCC_FC='`$ECHO "$GCC_FC" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag_F77='`$ECHO "$lt_prog_compiler_no_builtin_flag_F77" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag_FC='`$ECHO "$lt_prog_compiler_no_builtin_flag_FC" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic_F77='`$ECHO "$lt_prog_compiler_pic_F77" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic_FC='`$ECHO "$lt_prog_compiler_pic_FC" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl_F77='`$ECHO "$lt_prog_compiler_wl_F77" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl_FC='`$ECHO "$lt_prog_compiler_wl_FC" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static_F77='`$ECHO "$lt_prog_compiler_static_F77" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static_FC='`$ECHO "$lt_prog_compiler_static_FC" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o_F77='`$ECHO "$lt_cv_prog_compiler_c_o_F77" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o_FC='`$ECHO "$lt_cv_prog_compiler_c_o_FC" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc_F77='`$ECHO "$archive_cmds_need_lc_F77" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc_FC='`$ECHO "$archive_cmds_need_lc_FC" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes_F77='`$ECHO "$enable_shared_with_static_runtimes_F77" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes_FC='`$ECHO "$enable_shared_with_static_runtimes_FC" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec_F77='`$ECHO "$export_dynamic_flag_spec_F77" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec_FC='`$ECHO "$export_dynamic_flag_spec_FC" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec_F77='`$ECHO "$whole_archive_flag_spec_F77" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec_FC='`$ECHO "$whole_archive_flag_spec_FC" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object_F77='`$ECHO "$compiler_needs_object_F77" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object_FC='`$ECHO "$compiler_needs_object_FC" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds_F77='`$ECHO "$old_archive_from_new_cmds_F77" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds_FC='`$ECHO "$old_archive_from_new_cmds_FC" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds_F77='`$ECHO "$old_archive_from_expsyms_cmds_F77" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds_FC='`$ECHO "$old_archive_from_expsyms_cmds_FC" | $SED "$delay_single_quote_subst"`'
-archive_cmds_F77='`$ECHO "$archive_cmds_F77" | $SED "$delay_single_quote_subst"`'
-archive_cmds_FC='`$ECHO "$archive_cmds_FC" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds_F77='`$ECHO "$archive_expsym_cmds_F77" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds_FC='`$ECHO "$archive_expsym_cmds_FC" | $SED "$delay_single_quote_subst"`'
-module_cmds_F77='`$ECHO "$module_cmds_F77" | $SED "$delay_single_quote_subst"`'
-module_cmds_FC='`$ECHO "$module_cmds_FC" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds_F77='`$ECHO "$module_expsym_cmds_F77" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds_FC='`$ECHO "$module_expsym_cmds_FC" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld_F77='`$ECHO "$with_gnu_ld_F77" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld_FC='`$ECHO "$with_gnu_ld_FC" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag_F77='`$ECHO "$allow_undefined_flag_F77" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag_FC='`$ECHO "$allow_undefined_flag_FC" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag_F77='`$ECHO "$no_undefined_flag_F77" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag_FC='`$ECHO "$no_undefined_flag_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_F77='`$ECHO "$hardcode_libdir_flag_spec_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_FC='`$ECHO "$hardcode_libdir_flag_spec_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator_F77='`$ECHO "$hardcode_libdir_separator_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator_FC='`$ECHO "$hardcode_libdir_separator_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_F77='`$ECHO "$hardcode_direct_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_FC='`$ECHO "$hardcode_direct_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute_F77='`$ECHO "$hardcode_direct_absolute_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute_FC='`$ECHO "$hardcode_direct_absolute_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L_F77='`$ECHO "$hardcode_minus_L_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L_FC='`$ECHO "$hardcode_minus_L_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var_F77='`$ECHO "$hardcode_shlibpath_var_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var_FC='`$ECHO "$hardcode_shlibpath_var_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic_F77='`$ECHO "$hardcode_automatic_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic_FC='`$ECHO "$hardcode_automatic_FC" | $SED "$delay_single_quote_subst"`'
-inherit_rpath_F77='`$ECHO "$inherit_rpath_F77" | $SED "$delay_single_quote_subst"`'
-inherit_rpath_FC='`$ECHO "$inherit_rpath_FC" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs_F77='`$ECHO "$link_all_deplibs_F77" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs_FC='`$ECHO "$link_all_deplibs_FC" | $SED "$delay_single_quote_subst"`'
-always_export_symbols_F77='`$ECHO "$always_export_symbols_F77" | $SED "$delay_single_quote_subst"`'
-always_export_symbols_FC='`$ECHO "$always_export_symbols_FC" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds_F77='`$ECHO "$export_symbols_cmds_F77" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds_FC='`$ECHO "$export_symbols_cmds_FC" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms_F77='`$ECHO "$exclude_expsyms_F77" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms_FC='`$ECHO "$exclude_expsyms_FC" | $SED "$delay_single_quote_subst"`'
-include_expsyms_F77='`$ECHO "$include_expsyms_F77" | $SED "$delay_single_quote_subst"`'
-include_expsyms_FC='`$ECHO "$include_expsyms_FC" | $SED "$delay_single_quote_subst"`'
-prelink_cmds_F77='`$ECHO "$prelink_cmds_F77" | $SED "$delay_single_quote_subst"`'
-prelink_cmds_FC='`$ECHO "$prelink_cmds_FC" | $SED "$delay_single_quote_subst"`'
-postlink_cmds_F77='`$ECHO "$postlink_cmds_F77" | $SED "$delay_single_quote_subst"`'
-postlink_cmds_FC='`$ECHO "$postlink_cmds_FC" | $SED "$delay_single_quote_subst"`'
-file_list_spec_F77='`$ECHO "$file_list_spec_F77" | $SED "$delay_single_quote_subst"`'
-file_list_spec_FC='`$ECHO "$file_list_spec_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_action_F77='`$ECHO "$hardcode_action_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_action_FC='`$ECHO "$hardcode_action_FC" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_dirs_F77='`$ECHO "$compiler_lib_search_dirs_F77" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_dirs_FC='`$ECHO "$compiler_lib_search_dirs_FC" | $SED "$delay_single_quote_subst"`'
-predep_objects_F77='`$ECHO "$predep_objects_F77" | $SED "$delay_single_quote_subst"`'
-predep_objects_FC='`$ECHO "$predep_objects_FC" | $SED "$delay_single_quote_subst"`'
-postdep_objects_F77='`$ECHO "$postdep_objects_F77" | $SED "$delay_single_quote_subst"`'
-postdep_objects_FC='`$ECHO "$postdep_objects_FC" | $SED "$delay_single_quote_subst"`'
-predeps_F77='`$ECHO "$predeps_F77" | $SED "$delay_single_quote_subst"`'
-predeps_FC='`$ECHO "$predeps_FC" | $SED "$delay_single_quote_subst"`'
-postdeps_F77='`$ECHO "$postdeps_F77" | $SED "$delay_single_quote_subst"`'
-postdeps_FC='`$ECHO "$postdeps_FC" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path_F77='`$ECHO "$compiler_lib_search_path_F77" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path_FC='`$ECHO "$compiler_lib_search_path_FC" | $SED "$delay_single_quote_subst"`'
-
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$1
-_LTECHO_EOF'
-}
-
-# Quote evaled strings.
-for var in SHELL \
-ECHO \
-PATH_SEPARATOR \
-SED \
-GREP \
-EGREP \
-FGREP \
-LD \
-NM \
-LN_S \
-lt_SP2NL \
-lt_NL2SP \
-reload_flag \
-OBJDUMP \
-deplibs_check_method \
-file_magic_cmd \
-file_magic_glob \
-want_nocaseglob \
-DLLTOOL \
-sharedlib_from_linklib_cmd \
-AR \
-AR_FLAGS \
-archiver_list_spec \
-STRIP \
-RANLIB \
-CC \
-CFLAGS \
-compiler \
-lt_cv_sys_global_symbol_pipe \
-lt_cv_sys_global_symbol_to_cdecl \
-lt_cv_sys_global_symbol_to_c_name_address \
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
-nm_file_list_spec \
-lt_prog_compiler_no_builtin_flag \
-lt_prog_compiler_pic \
-lt_prog_compiler_wl \
-lt_prog_compiler_static \
-lt_cv_prog_compiler_c_o \
-need_locks \
-MANIFEST_TOOL \
-DSYMUTIL \
-NMEDIT \
-LIPO \
-OTOOL \
-OTOOL64 \
-shrext_cmds \
-export_dynamic_flag_spec \
-whole_archive_flag_spec \
-compiler_needs_object \
-with_gnu_ld \
-allow_undefined_flag \
-no_undefined_flag \
-hardcode_libdir_flag_spec \
-hardcode_libdir_separator \
-exclude_expsyms \
-include_expsyms \
-file_list_spec \
-variables_saved_for_relink \
-libname_spec \
-library_names_spec \
-soname_spec \
-install_override_mode \
-finish_eval \
-old_striplib \
-striplib \
-compiler_lib_search_dirs \
-predep_objects \
-postdep_objects \
-predeps \
-postdeps \
-compiler_lib_search_path \
-LD_F77 \
-LD_FC \
-reload_flag_F77 \
-reload_flag_FC \
-compiler_F77 \
-compiler_FC \
-lt_prog_compiler_no_builtin_flag_F77 \
-lt_prog_compiler_no_builtin_flag_FC \
-lt_prog_compiler_pic_F77 \
-lt_prog_compiler_pic_FC \
-lt_prog_compiler_wl_F77 \
-lt_prog_compiler_wl_FC \
-lt_prog_compiler_static_F77 \
-lt_prog_compiler_static_FC \
-lt_cv_prog_compiler_c_o_F77 \
-lt_cv_prog_compiler_c_o_FC \
-export_dynamic_flag_spec_F77 \
-export_dynamic_flag_spec_FC \
-whole_archive_flag_spec_F77 \
-whole_archive_flag_spec_FC \
-compiler_needs_object_F77 \
-compiler_needs_object_FC \
-with_gnu_ld_F77 \
-with_gnu_ld_FC \
-allow_undefined_flag_F77 \
-allow_undefined_flag_FC \
-no_undefined_flag_F77 \
-no_undefined_flag_FC \
-hardcode_libdir_flag_spec_F77 \
-hardcode_libdir_flag_spec_FC \
-hardcode_libdir_separator_F77 \
-hardcode_libdir_separator_FC \
-exclude_expsyms_F77 \
-exclude_expsyms_FC \
-include_expsyms_F77 \
-include_expsyms_FC \
-file_list_spec_F77 \
-file_list_spec_FC \
-compiler_lib_search_dirs_F77 \
-compiler_lib_search_dirs_FC \
-predep_objects_F77 \
-predep_objects_FC \
-postdep_objects_F77 \
-postdep_objects_FC \
-predeps_F77 \
-predeps_FC \
-postdeps_F77 \
-postdeps_FC \
-compiler_lib_search_path_F77 \
-compiler_lib_search_path_FC; do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Double-quote double-evaled strings.
-for var in reload_cmds \
-old_postinstall_cmds \
-old_postuninstall_cmds \
-old_archive_cmds \
-extract_expsyms_cmds \
-old_archive_from_new_cmds \
-old_archive_from_expsyms_cmds \
-archive_cmds \
-archive_expsym_cmds \
-module_cmds \
-module_expsym_cmds \
-export_symbols_cmds \
-prelink_cmds \
-postlink_cmds \
-postinstall_cmds \
-postuninstall_cmds \
-finish_cmds \
-sys_lib_search_path_spec \
-sys_lib_dlsearch_path_spec \
-reload_cmds_F77 \
-reload_cmds_FC \
-old_archive_cmds_F77 \
-old_archive_cmds_FC \
-old_archive_from_new_cmds_F77 \
-old_archive_from_new_cmds_FC \
-old_archive_from_expsyms_cmds_F77 \
-old_archive_from_expsyms_cmds_FC \
-archive_cmds_F77 \
-archive_cmds_FC \
-archive_expsym_cmds_F77 \
-archive_expsym_cmds_FC \
-module_cmds_F77 \
-module_cmds_FC \
-module_expsym_cmds_F77 \
-module_expsym_cmds_FC \
-export_symbols_cmds_F77 \
-export_symbols_cmds_FC \
-prelink_cmds_F77 \
-prelink_cmds_FC \
-postlink_cmds_F77 \
-postlink_cmds_FC; do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-ac_aux_dir='$ac_aux_dir'
-xsi_shell='$xsi_shell'
-lt_shell_append='$lt_shell_append'
-
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-
-    PACKAGE='$PACKAGE'
-    VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
-    RM='$RM'
-    ofile='$ofile'
-
-
-
-
-
-
-
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
-  case $ac_config_target in
-    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
-    "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;;
-    "src/eccodes_version.h") CONFIG_FILES="$CONFIG_FILES src/eccodes_version.h" ;;
-    "rpms/eccodes.pc") CONFIG_FILES="$CONFIG_FILES rpms/eccodes.pc" ;;
-    "rpms/eccodes.spec") CONFIG_FILES="$CONFIG_FILES rpms/eccodes.spec" ;;
-    "rpms/eccodes_f90.pc") CONFIG_FILES="$CONFIG_FILES rpms/eccodes_f90.pc" ;;
-    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
-    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
-    "fortran/Makefile") CONFIG_FILES="$CONFIG_FILES fortran/Makefile" ;;
-    "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;;
-    "data/Makefile") CONFIG_FILES="$CONFIG_FILES data/Makefile" ;;
-    "definitions/Makefile") CONFIG_FILES="$CONFIG_FILES definitions/Makefile" ;;
-    "samples/Makefile") CONFIG_FILES="$CONFIG_FILES samples/Makefile" ;;
-    "ifs_samples/grib1/Makefile") CONFIG_FILES="$CONFIG_FILES ifs_samples/grib1/Makefile" ;;
-    "ifs_samples/grib1_mlgrib2/Makefile") CONFIG_FILES="$CONFIG_FILES ifs_samples/grib1_mlgrib2/Makefile" ;;
-    "ifs_samples/grib1_mlgrib2_ieee64/Makefile") CONFIG_FILES="$CONFIG_FILES ifs_samples/grib1_mlgrib2_ieee64/Makefile" ;;
-    "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
-    "examples/C/Makefile") CONFIG_FILES="$CONFIG_FILES examples/C/Makefile" ;;
-    "examples/F90/Makefile") CONFIG_FILES="$CONFIG_FILES examples/F90/Makefile" ;;
-    "tigge/Makefile") CONFIG_FILES="$CONFIG_FILES tigge/Makefile" ;;
-    "perl/GRIB-API/Makefile.PL") CONFIG_FILES="$CONFIG_FILES perl/GRIB-API/Makefile.PL" ;;
-    "perl/Makefile") CONFIG_FILES="$CONFIG_FILES perl/Makefile" ;;
-    "python/Makefile") CONFIG_FILES="$CONFIG_FILES python/Makefile" ;;
-    "examples/python/Makefile") CONFIG_FILES="$CONFIG_FILES examples/python/Makefile" ;;
-
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
-  esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience.  Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
-  tmp= ac_tmp=
-  trap 'exit_status=$?
-  : "${ac_tmp:=$tmp}"
-  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
-' 0
-  trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -d "$tmp"
-}  ||
-{
-  tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-ac_tmp=$tmp
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
-  eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-  ac_cs_awk_cr='\\r'
-else
-  ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
-_ACEOF
-
-
-{
-  echo "cat >conf$$subs.awk <<_ACEOF" &&
-  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
-  echo "_ACEOF"
-} >conf$$subs.sh ||
-  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  . ./conf$$subs.sh ||
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-
-  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
-  if test $ac_delim_n = $ac_delim_num; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\)..*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\)..*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
-  N
-  s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
-  for (key in S) S_is_set[key] = 1
-  FS = ""
-
-}
-{
-  line = $ 0
-  nfields = split(line, field, "@")
-  substed = 0
-  len = length(field[1])
-  for (i = 2; i < nfields; i++) {
-    key = field[i]
-    keylen = length(key)
-    if (S_is_set[key]) {
-      value = S[key]
-      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
-      len += length(value) + length(field[++i])
-      substed = 1
-    } else
-      len += 1 + keylen
-  }
-
-  print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
-  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
-  cat
-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
-  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
-# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
-h
-s///
-s/^/:/
-s/[	 ]*$/:/
-s/:\$(srcdir):/:/g
-s/:\${srcdir}:/:/g
-s/:@srcdir@:/:/g
-s/^:*//
-s/:*$//
-x
-s/\(=[	 ]*\).*/\1/
-G
-s/\n//
-s/^[^=]*=[	 ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-# Set up the scripts for CONFIG_HEADERS section.
-# No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
-if test -n "$CONFIG_HEADERS"; then
-cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
-BEGIN {
-_ACEOF
-
-# Transform confdefs.h into an awk script `defines.awk', embedded as
-# here-document in config.status, that substitutes the proper values into
-# config.h.in to produce config.h.
-
-# Create a delimiter string that does not exist in confdefs.h, to ease
-# handling of long lines.
-ac_delim='%!_!# '
-for ac_last_try in false false :; do
-  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
-  if test -z "$ac_tt"; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-
-# For the awk script, D is an array of macro values keyed by name,
-# likewise P contains macro parameters if any.  Preserve backslash
-# newline sequences.
-
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-sed -n '
-s/.\{148\}/&'"$ac_delim"'/g
-t rset
-:rset
-s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
-t def
-d
-:def
-s/\\$//
-t bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3"/p
-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
-d
-:bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3\\\\\\n"\\/p
-t cont
-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
-t cont
-d
-:cont
-n
-s/.\{148\}/&'"$ac_delim"'/g
-t clear
-:clear
-s/\\$//
-t bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/"/p
-d
-:bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
-b cont
-' <confdefs.h | sed '
-s/'"$ac_delim"'/"\\\
-"/g' >>$CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  for (key in D) D_is_set[key] = 1
-  FS = ""
-}
-/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
-  line = \$ 0
-  split(line, arg, " ")
-  if (arg[1] == "#") {
-    defundef = arg[2]
-    mac1 = arg[3]
-  } else {
-    defundef = substr(arg[1], 2)
-    mac1 = arg[2]
-  }
-  split(mac1, mac2, "(") #)
-  macro = mac2[1]
-  prefix = substr(line, 1, index(line, defundef) - 1)
-  if (D_is_set[macro]) {
-    # Preserve the white space surrounding the "#".
-    print prefix "define", macro P[macro] D[macro]
-    next
-  } else {
-    # Replace #undef with comments.  This is necessary, for example,
-    # in the case of _POSIX_SOURCE, which is predefined and required
-    # on some systems where configure will not decide to define it.
-    if (defundef == "undef") {
-      print "/*", prefix defundef, macro, "*/"
-      next
-    }
-  }
-}
-{ print }
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
-fi # test -n "$CONFIG_HEADERS"
-
-
-eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
-shift
-for ac_tag
-do
-  case $ac_tag in
-  :[FHLC]) ac_mode=$ac_tag; continue;;
-  esac
-  case $ac_mode$ac_tag in
-  :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
-  :[FH]-) ac_tag=-:-;;
-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-  esac
-  ac_save_IFS=$IFS
-  IFS=:
-  set x $ac_tag
-  IFS=$ac_save_IFS
-  shift
-  ac_file=$1
-  shift
-
-  case $ac_mode in
-  :L) ac_source=$1;;
-  :[FH])
-    ac_file_inputs=
-    for ac_f
-    do
-      case $ac_f in
-      -) ac_f="$ac_tmp/stdin";;
-      *) # Look for the file first in the build tree, then in the source tree
-	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
-	 # because $ac_f cannot contain `:'.
-	 test -f "$ac_f" ||
-	   case $ac_f in
-	   [\\/$]*) false;;
-	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
-	   esac ||
-	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
-      esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      as_fn_append ac_file_inputs " '$ac_f'"
-    done
-
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
-    # use $as_me), people would be surprised to read:
-    #    /* config.h.  Generated by config.status.  */
-    configure_input='Generated from '`
-	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
-	`' by configure.'
-    if test x"$ac_file" != x-; then
-      configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
-    fi
-    # Neutralize special characters interpreted by sed in replacement strings.
-    case $configure_input in #(
-    *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
-       sed 's/[\\\\&|]/\\\\&/g'`;; #(
-    *) ac_sed_conf_input=$configure_input;;
-    esac
-
-    case $ac_tag in
-    *:-:* | *:-) cat >"$ac_tmp/stdin" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
-    esac
-    ;;
-  esac
-
-  ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$ac_file" : 'X\(//\)[^/]' \| \
-	 X"$ac_file" : 'X\(//\)$' \| \
-	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  as_dir="$ac_dir"; as_fn_mkdir_p
-  ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-  case $ac_mode in
-  :F)
-  #
-  # CONFIG_FILE
-  #
-
-  case $INSTALL in
-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
-  esac
-  ac_MKDIR_P=$MKDIR_P
-  case $MKDIR_P in
-  [\\/$]* | ?:[\\/]* ) ;;
-  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
-  esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
-  p
-  q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  ac_datarootdir_hack='
-  s&@datadir@&$datadir&g
-  s&@docdir@&$docdir&g
-  s&@infodir@&$infodir&g
-  s&@localedir@&$localedir&g
-  s&@mandir@&$mandir&g
-  s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-s&@MKDIR_P@&$ac_MKDIR_P&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
-  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
-      "$ac_tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&2;}
-
-  rm -f "$ac_tmp/stdin"
-  case $ac_file in
-  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
-  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
-  esac \
-  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- ;;
-  :H)
-  #
-  # CONFIG_HEADER
-  #
-  if test x"$ac_file" != x-; then
-    {
-      $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
-    } >"$ac_tmp/config.h" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
-    else
-      rm -f "$ac_file"
-      mv "$ac_tmp/config.h" "$ac_file" \
-	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    fi
-  else
-    $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
-      || as_fn_error $? "could not create -" "$LINENO" 5
-  fi
-# Compute "$ac_file"'s index in $config_headers.
-_am_arg="$ac_file"
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
-$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$_am_arg" : 'X\(//\)[^/]' \| \
-	 X"$_am_arg" : 'X\(//\)$' \| \
-	 X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$_am_arg" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`/stamp-h$_am_stamp_count
- ;;
-  
-  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
- ;;
-  esac
-
-
-  case $ac_file$ac_mode in
-    "libtool":C) 
-    
-    # See if we are running on zsh, and set the options which allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
-      setopt NO_GLOB_SUBST
-    fi
-
-    cfgfile="${ofile}T"
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
-
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-#                 Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-
-# The names of the tagged configurations supported by this script.
-available_tags="F77 FC "
-
-# ### BEGIN LIBTOOL CONFIG
-
-# Which release of libtool.m4 was used?
-macro_version=$macro_version
-macro_revision=$macro_revision
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# What type of objects to build.
-pic_mode=$pic_mode
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# An echo program that protects backslashes.
-ECHO=$lt_ECHO
-
-# The PATH separator for the build system.
-PATH_SEPARATOR=$lt_PATH_SEPARATOR
-
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
-
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
-
-# A sed program that does not truncate output.
-SED=$lt_SED
-
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="\$SED -e 1s/^X//"
-
-# A grep program that handles long lines.
-GREP=$lt_GREP
-
-# An ERE matcher.
-EGREP=$lt_EGREP
-
-# A literal string matcher.
-FGREP=$lt_FGREP
-
-# A BSD- or MS-compatible name lister.
-NM=$lt_NM
-
-# Whether we need soft or hard links.
-LN_S=$lt_LN_S
-
-# What is the maximum length of a command?
-max_cmd_len=$max_cmd_len
-
-# Object file suffix (normally "o").
-objext=$ac_objext
-
-# Executable file suffix (normally "").
-exeext=$exeext
-
-# whether the shell understands "unset".
-lt_unset=$lt_unset
-
-# turn spaces into newlines.
-SP2NL=$lt_lt_SP2NL
-
-# turn newlines into spaces.
-NL2SP=$lt_lt_NL2SP
-
-# convert \$build file names to \$host format.
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-
-# convert \$build files to toolchain format.
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-
-# An object symbol dumper.
-OBJDUMP=$lt_OBJDUMP
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method = "file_magic".
-file_magic_cmd=$lt_file_magic_cmd
-
-# How to find potential files when deplibs_check_method = "file_magic".
-file_magic_glob=$lt_file_magic_glob
-
-# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-want_nocaseglob=$lt_want_nocaseglob
-
-# DLL creation program.
-DLLTOOL=$lt_DLLTOOL
-
-# Command to associate shared and link libraries.
-sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
-
-# The archiver.
-AR=$lt_AR
-
-# Flags to create an archive.
-AR_FLAGS=$lt_AR_FLAGS
-
-# How to feed a file listing to the archiver.
-archiver_list_spec=$lt_archiver_list_spec
-
-# A symbol stripping program.
-STRIP=$lt_STRIP
-
-# Commands used to install an old-style archive.
-RANLIB=$lt_RANLIB
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# Whether to use a lock for old archive extraction.
-lock_old_archive_extraction=$lock_old_archive_extraction
-
-# A C compiler.
-LTCC=$lt_CC
-
-# LTCC compiler flags.
-LTCFLAGS=$lt_CFLAGS
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration.
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-
-# Transform the output of nm in a C name address pair.
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-
-# Transform the output of nm in a C name address pair when lib prefix is needed.
-global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
-
-# Specify filename containing input files for \$NM.
-nm_file_list_spec=$lt_nm_file_list_spec
-
-# The root where to search for dependent libraries,and in which our libraries should be installed.
-lt_sysroot=$lt_sysroot
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# Used to examine libraries when file_magic_cmd begins with "file".
-MAGIC_CMD=$MAGIC_CMD
-
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
-
-# Manifest tool.
-MANIFEST_TOOL=$lt_MANIFEST_TOOL
-
-# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
-DSYMUTIL=$lt_DSYMUTIL
-
-# Tool to change global to local symbols on Mac OS X.
-NMEDIT=$lt_NMEDIT
-
-# Tool to manipulate fat objects and archives on Mac OS X.
-LIPO=$lt_LIPO
-
-# ldd/readelf like tool for Mach-O binaries on Mac OS X.
-OTOOL=$lt_OTOOL
-
-# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
-OTOOL64=$lt_OTOOL64
-
-# Old archive suffix (normally "a").
-libext=$libext
-
-# Shared library suffix (normally ".so").
-shrext_cmds=$lt_shrext_cmds
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at link time.
-variables_saved_for_relink=$lt_variables_saved_for_relink
-
-# Do we need the "lib" prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Library versioning type.
-version_type=$version_type
-
-# Shared library runtime path variable.
-runpath_var=$runpath_var
-
-# Shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Permission mode override for installation of shared libraries.
-install_override_mode=$lt_install_override_mode
-
-# Command to use after installation of a shared archive.
-postinstall_cmds=$lt_postinstall_cmds
-
-# Command to use after uninstallation of a shared archive.
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# As "finish_cmds", except a single script fragment to be evaled but
-# not shown.
-finish_eval=$lt_finish_eval
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Compile-time system search path for libraries.
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Run-time system search path for libraries.
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-
-# The linker used to build libraries.
-LD=$lt_LD
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds
-
-# A language specific compiler.
-CC=$lt_compiler
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds
-archive_expsym_cmds=$lt_archive_expsym_cmds
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds
-module_expsym_cmds=$lt_module_expsym_cmds
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects
-postdep_objects=$lt_postdep_objects
-predeps=$lt_predeps
-postdeps=$lt_postdeps
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path
-
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
-  case $host_os in
-  aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
-    ;;
-  esac
-
-  
-ltmain="$ac_aux_dir/ltmain.sh"
-
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" \
-     || (rm -f "$cfgfile"; exit 1)
-
-  if test x"$xsi_shell" = xyes; then
-  sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
-func_dirname ()\
-{\
-\    case ${1} in\
-\      */*) func_dirname_result="${1%/*}${2}" ;;\
-\      *  ) func_dirname_result="${3}" ;;\
-\    esac\
-} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_basename ()$/,/^} # func_basename /c\
-func_basename ()\
-{\
-\    func_basename_result="${1##*/}"\
-} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
-func_dirname_and_basename ()\
-{\
-\    case ${1} in\
-\      */*) func_dirname_result="${1%/*}${2}" ;;\
-\      *  ) func_dirname_result="${3}" ;;\
-\    esac\
-\    func_basename_result="${1##*/}"\
-} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
-func_stripname ()\
-{\
-\    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
-\    # positional parameters, so assign one to ordinary parameter first.\
-\    func_stripname_result=${3}\
-\    func_stripname_result=${func_stripname_result#"${1}"}\
-\    func_stripname_result=${func_stripname_result%"${2}"}\
-} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
-func_split_long_opt ()\
-{\
-\    func_split_long_opt_name=${1%%=*}\
-\    func_split_long_opt_arg=${1#*=}\
-} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
-func_split_short_opt ()\
-{\
-\    func_split_short_opt_arg=${1#??}\
-\    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
-} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
-func_lo2o ()\
-{\
-\    case ${1} in\
-\      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
-\      *)    func_lo2o_result=${1} ;;\
-\    esac\
-} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_xform ()$/,/^} # func_xform /c\
-func_xform ()\
-{\
-    func_xform_result=${1%.*}.lo\
-} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_arith ()$/,/^} # func_arith /c\
-func_arith ()\
-{\
-    func_arith_result=$(( $* ))\
-} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_len ()$/,/^} # func_len /c\
-func_len ()\
-{\
-    func_len_result=${#1}\
-} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-fi
-
-if test x"$lt_shell_append" = xyes; then
-  sed -e '/^func_append ()$/,/^} # func_append /c\
-func_append ()\
-{\
-    eval "${1}+=\\${2}"\
-} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
-func_append_quoted ()\
-{\
-\    func_quote_for_eval "${2}"\
-\    eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
-} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  # Save a `func_append' function call where possible by direct use of '+='
-  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-else
-  # Save a `func_append' function call even when '+=' is not available
-  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-fi
-
-if test x"$_lt_function_replace_fail" = x":"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
-fi
-
-
-   mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-
-
-    cat <<_LT_EOF >> "$ofile"
-
-# ### BEGIN LIBTOOL TAG CONFIG: F77
-
-# The linker used to build libraries.
-LD=$lt_LD_F77
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag_F77
-reload_cmds=$lt_reload_cmds_F77
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds_F77
-
-# A language specific compiler.
-CC=$lt_compiler_F77
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC_F77
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_F77
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_F77
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_F77
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_F77
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object_F77
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds_F77
-archive_expsym_cmds=$lt_archive_expsym_cmds_F77
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds_F77
-module_expsym_cmds=$lt_module_expsym_cmds_F77
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld_F77
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_F77
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_F77
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct_F77
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute_F77
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L_F77
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic_F77
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath_F77
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_F77
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols_F77
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_F77
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_F77
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_F77
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds_F77
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds_F77
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec_F77
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_F77
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_F77
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects_F77
-postdep_objects=$lt_postdep_objects_F77
-predeps=$lt_predeps_F77
-postdeps=$lt_postdeps_F77
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_F77
-
-# ### END LIBTOOL TAG CONFIG: F77
-_LT_EOF
-
-
-    cat <<_LT_EOF >> "$ofile"
-
-# ### BEGIN LIBTOOL TAG CONFIG: FC
-
-# The linker used to build libraries.
-LD=$lt_LD_FC
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag_FC
-reload_cmds=$lt_reload_cmds_FC
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds_FC
-
-# A language specific compiler.
-CC=$lt_compiler_FC
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC_FC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_FC
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_FC
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_FC
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_FC
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_FC
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_FC
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_FC
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_FC
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_FC
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object_FC
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_FC
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_FC
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds_FC
-archive_expsym_cmds=$lt_archive_expsym_cmds_FC
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds_FC
-module_expsym_cmds=$lt_module_expsym_cmds_FC
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld_FC
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_FC
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_FC
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_FC
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_FC
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct_FC
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute_FC
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L_FC
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_FC
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic_FC
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath_FC
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_FC
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols_FC
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_FC
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_FC
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_FC
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds_FC
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds_FC
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec_FC
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_FC
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_FC
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects_FC
-postdep_objects=$lt_postdep_objects_FC
-predeps=$lt_predeps_FC
-postdeps=$lt_postdeps_FC
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_FC
-
-# ### END LIBTOOL TAG CONFIG: FC
-_LT_EOF
-
- ;;
-    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
-  # Older Autoconf quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
-  esac
-  shift
-  for mf
-  do
-    # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named 'Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$mf" : 'X\(//\)[^/]' \| \
-	 X"$mf" : 'X\(//\)$' \| \
-	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$mf" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running 'make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "$am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$file" : 'X\(//\)[^/]' \| \
-	 X"$file" : 'X\(//\)$' \| \
-	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      as_dir=$dirpart/$fdir; as_fn_mkdir_p
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
-  done
-}
- ;;
-
-  esac
-done # for ac_tag
-
-
-as_fn_exit 0
-_ACEOF
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
-  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded.  So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status.  When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
-  ac_cs_success=:
-  ac_config_status_args=
-  test "$silent" = yes &&
-    ac_config_status_args="$ac_config_status_args --quiet"
-  exec 5>/dev/null
-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-  exec 5>>config.log
-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-  # would make configure fail if this is the last instruction.
-  $ac_cs_success || as_fn_exit 1
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: 
-
-  Configuration completed.
-
-    You can now say 'make' to compile the eccodes package, 'make check' to
-	  test it  and 'make install' to install it afterwards.
-	  " >&5
-$as_echo "$as_me: 
-
-  Configuration completed.
-
-    You can now say 'make' to compile the eccodes package, 'make check' to
-	  test it  and 'make install' to install it afterwards.
-	  " >&6;}
diff --git a/autom4te.cache/output.2 b/autom4te.cache/output.2
deleted file mode 100644
index e5f3cd5..0000000
--- a/autom4te.cache/output.2
+++ /dev/null
@@ -1,24511 +0,0 @@
-@%:@! /bin/sh
-@%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.69 for eccodes  .
-@%:@
-@%:@ Report bugs to <Software.Support at ecmwf.int>.
-@%:@ 
-@%:@ 
-@%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
-@%:@ 
-@%:@ 
-@%:@ This configure script is free software; the Free Software Foundation
-@%:@ gives unlimited permission to copy, distribute and modify it.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in @%:@(
-  *posix*) :
-    set -o posix ;; @%:@(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in @%:@(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in @%:@((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-# Use a proper internal environment variable to ensure we don't fall
-  # into an infinite loop, continuously re-executing ourselves.
-  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
-    _as_can_reexec=no; export _as_can_reexec;
-    # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in @%:@ ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
-  fi
-  # We don't want this to propagate to other subprocesses.
-          { _as_can_reexec=; unset _as_can_reexec;}
-if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in @%:@(
-  *posix*) :
-    set -o posix ;; @%:@(
-  *) :
-     ;;
-esac
-fi
-"
-  as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-  
-else
-  exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1
-test -x / || exit 1"
-  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
-  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
-  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
-  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-
-  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
-    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
-    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
-    PATH=/empty FPATH=/empty; export PATH FPATH
-    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
-      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1"
-  if (eval "$as_required") 2>/dev/null; then :
-  as_have_required=yes
-else
-  as_have_required=no
-fi
-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-  
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  as_found=:
-  case $as_dir in @%:@(
-	 /*)
-	   for as_base in sh bash ksh sh5; do
-	     # Try only shells that exist, to save several forks.
-	     as_shell=$as_dir/$as_base
-	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  CONFIG_SHELL=$as_shell as_have_required=yes
-		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  break 2
-fi
-fi
-	   done;;
-       esac
-  as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
-	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
-  CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
-      if test "x$CONFIG_SHELL" != x; then :
-  export CONFIG_SHELL
-             # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in @%:@ ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-exit 255
-fi
-
-    if test x$as_have_required = xno; then :
-  $as_echo "$0: This script requires a shell more modern than all"
-  $as_echo "$0: the shells that I found on your system."
-  if test x${ZSH_VERSION+set} = xset ; then
-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
-  else
-    $as_echo "$0: Please tell bug-autoconf at gnu.org and
-$0: Software.Support at ecmwf.int about your system, including
-$0: any error possibly output before this message. Then
-$0: install a modern shell, or manually run the script
-$0: under such a shell if you do have one."
-  fi
-  exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-@%:@ as_fn_unset VAR
-@%:@ ---------------
-@%:@ Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-@%:@ as_fn_set_status STATUS
-@%:@ -----------------------
-@%:@ Set @S|@? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} @%:@ as_fn_set_status
-
-@%:@ as_fn_exit STATUS
-@%:@ -----------------
-@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} @%:@ as_fn_exit
-
-@%:@ as_fn_mkdir_p
-@%:@ -------------
-@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} @%:@ as_fn_mkdir_p
-
-@%:@ as_fn_executable_p FILE
-@%:@ -----------------------
-@%:@ Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} @%:@ as_fn_executable_p
-@%:@ as_fn_append VAR VALUE
-@%:@ ----------------------
-@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
-@%:@ advantage of any shell optimizations that allow amortized linear growth over
-@%:@ repeated appends, instead of the typical quadratic growth present in naive
-@%:@ implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-@%:@ as_fn_arith ARG...
-@%:@ ------------------
-@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
-@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
-@%:@ must be portable across @S|@(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
-@%:@ ----------------------------------------
-@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-@%:@ script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} @%:@ as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
-  as_lineno_1=$LINENO as_lineno_1a=$LINENO
-  as_lineno_2=$LINENO as_lineno_2a=$LINENO
-  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
-  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
-  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
-  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
-  # already done that, so ensure we don't try to do so again and fall
-  # in an infinite loop.  This has already happened in practice.
-  _as_can_reexec=no; export _as_can_reexec
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in @%:@(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIB@&t at OBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME='eccodes'
-PACKAGE_TARNAME='eccodes'
-PACKAGE_VERSION=' '
-PACKAGE_STRING='eccodes  '
-PACKAGE_BUGREPORT='Software.Support at ecmwf.int'
-PACKAGE_URL=''
-
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-#  include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-ac_unique_file="src/grib_api.h"
-ac_subst_vars='am__EXEEXT_FALSE
-am__EXEEXT_TRUE
-LTLIBOBJS
-LIB@&t at OBJS
-LINUX_DISTRIBUTION_VERSION
-LINUX_DISTRIBUTION_NAME
-WERROR
-WARN_PEDANTIC
-RM
-CREATING_SHARED_LIBS_FALSE
-CREATING_SHARED_LIBS_TRUE
-WITH_FORTRAN_FALSE
-WITH_FORTRAN_TRUE
-WITH_PYTHON_FALSE
-WITH_PYTHON_TRUE
-PYTHON_DATA_HANDLER
-NUMPY_INCLUDE
-PYTHON_CHECK
-PYTHON_CONFIG
-PYTHON_LIBS
-PYTHON_CFLAGS
-PYTHON_LDFLAGS
-PYTHON_INCLUDES
-pkgpyexecdir
-pyexecdir
-pkgpythondir
-pythondir
-PYTHON_PLATFORM
-PYTHON_EXEC_PREFIX
-PYTHON_PREFIX
-PYTHON_VERSION
-PYTHON
-WITH_PERL_FALSE
-WITH_PERL_TRUE
-GRIB_API_INC
-GRIB_API_LIB
-PERL_MAKE_OPTIONS
-PERL
-PERL_INSTALL_OPTIONS
-LIB_PNG
-CCSDS_TEST
-AEC_DIR
-LIB_AEC
-JPEG_TEST
-LIB_JASPER
-LIB_OPENJPEG
-OPENJPEG_DIR
-JASPER_DIR
-NETCDF_LDFLAGS
-EMOS_LIB
-IFS_SAMPLES_DIR
-F90_MODULE_FLAG
-F90_CHECK
-FORTRAN_MOD
-DEBUG_IN_MOD_FALSE
-DEBUG_IN_MOD_TRUE
-ECCODES_DEFINITION_PATH
-ECCODES_SAMPLES_PATH
-RPM_RELEASE
-RPM_CONFIGURE_ARGS
-RPM_HOST_OS
-RPM_HOST_VENDOR
-RPM_HOST_CPU
-WITH_MARS_TESTS_FALSE
-WITH_MARS_TESTS_TRUE
-GRIB_DEVEL
-DEVEL_RULES
-UPPER_CASE_MOD_FALSE
-UPPER_CASE_MOD_TRUE
-ac_ct_FC
-FCFLAGS
-FC
-ac_ct_F77
-FFLAGS
-F77
-LEXLIB
-LEX_OUTPUT_ROOT
-LEX
-YFLAGS
-YACC
-PERLDIR
-AM_BACKSLASH
-AM_DEFAULT_VERBOSITY
-AM_DEFAULT_V
-AM_V
-am__fastdepCC_FALSE
-am__fastdepCC_TRUE
-CCDEPMODE
-am__nodep
-AMDEPBACKSLASH
-AMDEP_FALSE
-AMDEP_TRUE
-am__quote
-am__include
-DEPDIR
-am__untar
-am__tar
-AMTAR
-am__leading_dot
-SET_MAKE
-mkdir_p
-MKDIR_P
-INSTALL_STRIP_PROGRAM
-install_sh
-MAKEINFO
-AUTOHEADER
-AUTOMAKE
-AUTOCONF
-ACLOCAL
-VERSION
-PACKAGE
-CYGPATH_W
-am__isrc
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-ECCODES_AGE
-ECCODES_REVISION
-ECCODES_CURRENT
-ECCODES_PATCH_VERSION
-ECCODES_MINOR_VERSION
-ECCODES_MAJOR_VERSION
-ECCODES_VERSION_STR
-ECCODES_MAIN_VERSION
-LIBTOOL_DEPS
-CPP
-OTOOL64
-OTOOL
-LIPO
-NMEDIT
-DSYMUTIL
-MANIFEST_TOOL
-AWK
-RANLIB
-STRIP
-ac_ct_AR
-AR
-DLLTOOL
-OBJDUMP
-LN_S
-NM
-ac_ct_DUMPBIN
-DUMPBIN
-LD
-FGREP
-EGREP
-GREP
-SED
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-LIBTOOL
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-enable_shared
-enable_static
-with_pic
-enable_fast_install
-with_gnu_ld
-with_sysroot
-enable_libtool_lock
-enable_dependency_tracking
-enable_silent_rules
-enable_pthread
-enable_ibmpower67_opt
-enable_ieee_native
-enable_align_memory
-enable_vector
-enable_memory_management
-enable_development
-enable_largefile
-with_rpm_release
-enable_fortran
-with_ifs_samples
-with_emos
-with_fortranlibdir
-with_fortranlibs
-enable_timer
-enable_omp_packing
-with_netcdf
-enable_jpeg
-with_jasper
-with_openjpeg
-with_aec
-with_png_support
-enable_install_system_perl
-with_perl
-with_perl_options
-enable_python
-enable_numpy
-enable_werror_always
-'
-      ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CPP
-YACC
-YFLAGS
-F77
-FFLAGS
-FC
-FCFLAGS
-PYTHON
-PYTHON_INCLUDES
-PYTHON_LDFLAGS
-PYTHON_CFLAGS
-PYTHON_LIBS
-PYTHON_CONFIG'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval $ac_prev=\$ac_option
-    ac_prev=
-    continue
-  fi
-
-  case $ac_option in
-  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *=)   ac_optarg= ;;
-  *)    ac_optarg=yes ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case $ac_dashdash$ac_option in
-  --)
-    ac_dashdash=yes ;;
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir=$ac_optarg ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build_alias ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build_alias=$ac_optarg ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file=$ac_optarg ;;
-
-  --config-cache | -C)
-    cache_file=config.cache ;;
-
-  -datadir | --datadir | --datadi | --datad)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=*)
-    datadir=$ac_optarg ;;
-
-  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
-  | --dataroo | --dataro | --datar)
-    ac_prev=datarootdir ;;
-  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
-  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
-    datarootdir=$ac_optarg ;;
-
-  -disable-* | --disable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=no ;;
-
-  -docdir | --docdir | --docdi | --doc | --do)
-    ac_prev=docdir ;;
-  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
-    docdir=$ac_optarg ;;
-
-  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
-    ac_prev=dvidir ;;
-  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
-    dvidir=$ac_optarg ;;
-
-  -enable-* | --enable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=\$ac_optarg ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix=$ac_optarg ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he | -h)
-    ac_init_help=long ;;
-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-    ac_init_help=recursive ;;
-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-    ac_init_help=short ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host_alias ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host_alias=$ac_optarg ;;
-
-  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
-    ac_prev=htmldir ;;
-  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
-  | --ht=*)
-    htmldir=$ac_optarg ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir=$ac_optarg ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir=$ac_optarg ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir=$ac_optarg ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir=$ac_optarg ;;
-
-  -localedir | --localedir | --localedi | --localed | --locale)
-    ac_prev=localedir ;;
-  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
-    localedir=$ac_optarg ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst | --locals)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
-    localstatedir=$ac_optarg ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir=$ac_optarg ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c | -n)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir=$ac_optarg ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix=$ac_optarg ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix=$ac_optarg ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix=$ac_optarg ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name=$ac_optarg ;;
-
-  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
-    ac_prev=pdfdir ;;
-  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
-    pdfdir=$ac_optarg ;;
-
-  -psdir | --psdir | --psdi | --psd | --ps)
-    ac_prev=psdir ;;
-  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
-    psdir=$ac_optarg ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir=$ac_optarg ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir=$ac_optarg ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site=$ac_optarg ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir=$ac_optarg ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir=$ac_optarg ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target_alias ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target_alias=$ac_optarg ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers | -V)
-    ac_init_version=: ;;
-
-  -with-* | --with-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=\$ac_optarg ;;
-
-  -without-* | --without-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=no ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes=$ac_optarg ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries=$ac_optarg ;;
-
-  -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
-    ;;
-
-  *=*)
-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-    # Reject names that are not valid shell variable names.
-    case $ac_envvar in #(
-      '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
-    esac
-    eval $ac_envvar=\$ac_optarg
-    export $ac_envvar ;;
-
-  *)
-    # FIXME: should be removed in autoconf 3.0.
-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  as_fn_error $? "missing argument to $ac_option"
-fi
-
-if test -n "$ac_unrecognized_opts"; then
-  case $enable_option_checking in
-    no) ;;
-    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
-  esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
-		datadir sysconfdir sharedstatedir localstatedir includedir \
-		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
-do
-  eval ac_val=\$$ac_var
-  # Remove trailing slashes.
-  case $ac_val in
-    */ )
-      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
-      eval $ac_var=\$ac_val;;
-  esac
-  # Be sure to have absolute directory names.
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* )  continue;;
-    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
-  esac
-  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
-  if test "x$build_alias" = x; then
-    cross_compiling=maybe
-  elif test "x$build_alias" != "x$host_alias"; then
-    cross_compiling=yes
-  fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  as_fn_error $? "working directory cannot be determined"
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  as_fn_error $? "pwd does not report name of working directory"
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then the parent directory.
-  ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_myself" : 'X\(//\)[^/]' \| \
-	 X"$as_myself" : 'X\(//\)$' \| \
-	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  srcdir=$ac_confdir
-  if test ! -r "$srcdir/$ac_unique_file"; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
-  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
-	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
-	pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
-  srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
-  eval ac_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_env_${ac_var}_value=\$${ac_var}
-  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
-  # Omit some internal or obsolete options to make the list less imposing.
-  # This message is too long to be a string in the A/UX 3.1 sh.
-  cat <<_ACEOF
-\`configure' configures eccodes   to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE.  See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
-  -h, --help              display this help and exit
-      --help=short        display options specific to this package
-      --help=recursive    display the short help of all the included packages
-  -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking ...' messages
-      --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
-  -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
-
-Installation directories:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          @<:@@S|@ac_default_prefix@:>@
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          @<:@PREFIX@:>@
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
-  --bindir=DIR            user executables [EPREFIX/bin]
-  --sbindir=DIR           system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR        program executables [EPREFIX/libexec]
-  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --libdir=DIR            object code libraries [EPREFIX/lib]
-  --includedir=DIR        C header files [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
-  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
-  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
-  --infodir=DIR           info documentation [DATAROOTDIR/info]
-  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
-  --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root @<:@DATAROOTDIR/doc/eccodes@:>@
-  --htmldir=DIR           html documentation [DOCDIR]
-  --dvidir=DIR            dvi documentation [DOCDIR]
-  --pdfdir=DIR            pdf documentation [DOCDIR]
-  --psdir=DIR             ps documentation [DOCDIR]
-_ACEOF
-
-  cat <<\_ACEOF
-
-Program names:
-  --program-prefix=PREFIX            prepend PREFIX to installed program names
-  --program-suffix=SUFFIX            append SUFFIX to installed program names
-  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
-
-System types:
-  --build=BUILD     configure for building on BUILD [guessed]
-  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-  case $ac_init_help in
-     short | recursive ) echo "Configuration of eccodes  :";;
-   esac
-  cat <<\_ACEOF
-
-Optional Features:
-  --disable-option-checking  ignore unrecognized --enable/--with options
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-shared@<:@=PKGS@:>@  build shared libraries @<:@default=yes@:>@
-  --enable-static@<:@=PKGS@:>@  build static libraries @<:@default=yes@:>@
-  --enable-fast-install@<:@=PKGS@:>@ 
-                          optimize for fast installation @<:@default=yes@:>@
-  --disable-libtool-lock  avoid locking (might break parallel builds)
-  --enable-dependency-tracking 
-                          do not reject slow dependency extractors
-  --disable-dependency-tracking 
-                          speeds up one-time build
-  --enable-silent-rules   less verbose build output (undo: "make V=1")
-  --disable-silent-rules  verbose build output (undo: "make V=0")
-  --enable-pthread        enable POSIX threads @<:@by default disabled@:>@
-  --enable-ibmpower67_opt enable IBM POWER 6/7 optimisations @<:@by default
-                          disabled@:>@
-  --disable-ieee-native   disable ieee native packing
-  --enable-align-memory   enable memory alignment @<:@by default disabled@:>@
-  --enable-vector         enable vectorised code @<:@by default disabled@:>@
-  --enable-memory-management 
-                          enable memory @<:@by default disabled@:>@
-  --enable-development    enable development configuration @<:@by default
-                          disabled@:>@
-  --disable-largefile     omit support for large files
-  --disable-fortran       disable fortran interface @<:@by default enabled@:>@
-  --enable-timer          enable timer @<:@by default disabled@:>@
-  --enable-omp-packing    enable OpenMP multithreaded packing @<:@by default
-                          disabled@:>@
-  --disable-jpeg          disable jpeg 2000 for grib 2 decoding/encoding @<:@by
-                          default enabled@:>@
-  --enable-install-system-perl 
-                          perl modules will install in the standard perl
-                          installation
-  --enable-python         Enable the Python interface in the build @<:@by default
-                          disabled@:>@
-  --disable-numpy         Disable NumPy as the data handling package for the
-                          Python interface @<:@by default enabled@:>@
-  --enable-werror-always  enable -Werror despite compiler version
-
-Optional Packages:
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-pic@<:@=PKGS@:>@       try to use only PIC/non-PIC objects @<:@default=use
-                          both@:>@
-  --with-gnu-ld           assume the C compiler uses GNU ld @<:@default=no@:>@
-  --with-sysroot=DIR Search for dependent libraries within DIR
-                        (or the compiler's sysroot if not specified).
-  --with-rpm-release=NUMBER       The rpms will use this release number  (defaults to 1)
-  --with-ifs-samples=ifs-samples-dir 
-                          ifs_samples will be installed in ifs-samples-dir
-  --with-emos=EMOS        use emos for tests
-  --with-fortranlibdir=FORTRANDIR 
-                          fortran libraries directory
-  --with-fortranlibs=FORTRANLIBS 
-                          fortran libraries to link from C
-  --with-netcdf=NETCDF    enable netcdf encoding/decoding using netcdf library
-                          in NETCDF
-  --with-jasper=JASPER    use specified jasper installation directory
-  --with-openjpeg=OPENJPEG 
-                          use specified openjpeg installation directory
-  --with-aec=DIR          use specified libaec installation directory
-  --with-png-support      add support for png decoding/encoding
-  --with-perl=PERL        use specified Perl binary to configure Perl grib_api
-  --with-perl-options=OPTIONS 
-                          options to pass on command-line when generating Perl
-                          grib_api's Makefile from Makefile.PL
-
-Some influential environment variables:
-  CC          C compiler command
-  CFLAGS      C compiler flags
-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
-              nonstandard directory <lib dir>
-  LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
-              you have headers in a nonstandard directory <include dir>
-  CPP         C preprocessor
-  YACC        The `Yet Another Compiler Compiler' implementation to use.
-              Defaults to the first program found out of: `bison -y', `byacc',
-              `yacc'.
-  YFLAGS      The list of arguments that will be passed by default to @S|@YACC.
-              This script will default YFLAGS to the empty string to avoid a
-              default value of `-d' given by some make applications.
-  F77         Fortran 77 compiler command
-  FFLAGS      Fortran 77 compiler flags
-  FC          Fortran compiler command
-  FCFLAGS     Fortran compiler flags
-  PYTHON      the Python interpreter
-  PYTHON_INCLUDES 
-              Include flags for python
-  PYTHON_LDFLAGS 
-              Link flags for python
-  PYTHON_CFLAGS 
-              C flags for python
-  PYTHON_LIBS Libraries for python
-  PYTHON_CONFIG 
-              Path to python-config
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to <Software.Support at ecmwf.int>.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
-  # If there are subdirs, report their specific --help.
-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d "$ac_dir" ||
-      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
-      continue
-    ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-    cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
-    if test -f "$ac_srcdir/configure.gnu"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
-    elif test -f "$ac_srcdir/configure"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure" --help=recursive
-    else
-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-    fi || ac_status=$?
-    cd "$ac_pwd" || { ac_status=$?; break; }
-  done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
-  cat <<\_ACEOF
-eccodes configure  
-generated by GNU Autoconf 2.69
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
-  exit
-fi
-
-## ------------------------ ##
-## Autoconf initialization. ##
-## ------------------------ ##
-
-@%:@ ac_fn_c_try_compile LINENO
-@%:@ --------------------------
-@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_c_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_c_try_compile
-
-@%:@ ac_fn_c_try_link LINENO
-@%:@ -----------------------
-@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_c_try_link
-
-@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-@%:@ -------------------------------------------------------
-@%:@ Tests whether HEADER exists and can be compiled using the include files in
-@%:@ INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-@%:@include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} @%:@ ac_fn_c_check_header_compile
-
-@%:@ ac_fn_c_try_cpp LINENO
-@%:@ ----------------------
-@%:@ Try to preprocess conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } > conftest.i && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_c_try_cpp
-
-@%:@ ac_fn_c_try_run LINENO
-@%:@ ----------------------
-@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded. Assumes
-@%:@ that executables *can* be run.
-ac_fn_c_try_run ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=$ac_status
-fi
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_c_try_run
-
-@%:@ ac_fn_c_check_func LINENO FUNC VAR
-@%:@ ----------------------------------
-@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly
-ac_fn_c_check_func ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $2 innocuous_$2
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $2 (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $2
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $2 ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$2 || defined __stub___$2
-choke me
-#endif
-
-int
-main ()
-{
-return $2 ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} @%:@ ac_fn_c_check_func
-
-@%:@ ac_fn_f77_try_compile LINENO
-@%:@ ----------------------------
-@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_f77_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_f77_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_f77_try_compile
-
-@%:@ ac_fn_f77_try_link LINENO
-@%:@ -------------------------
-@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_f77_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_f77_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_f77_try_link
-
-@%:@ ac_fn_fc_try_compile LINENO
-@%:@ ---------------------------
-@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_fc_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_fc_try_compile
-
-@%:@ ac_fn_fc_try_link LINENO
-@%:@ ------------------------
-@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_fc_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_fc_try_link
-
-@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-@%:@ -------------------------------------------------------
-@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using
-@%:@ the include files in INCLUDES and setting the cache variable VAR
-@%:@ accordingly.
-ac_fn_c_check_header_mongrel ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval \${$3+:} false; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-@%:@include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_header_compiler=yes
-else
-  ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
-  yes:no: )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ----------------------------------------- ##
-## Report this to Software.Support at ecmwf.int ##
-## ----------------------------------------- ##"
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} @%:@ ac_fn_c_check_header_mongrel
-
-@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-@%:@ -------------------------------------------
-@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache
-@%:@ variable VAR accordingly.
-ac_fn_c_check_type ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=no"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof ($2))
-	 return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof (($2)))
-	    return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  
-else
-  eval "$3=yes"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} @%:@ ac_fn_c_check_type
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by eccodes $as_me  , which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
-
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    $as_echo "PATH: $as_dir"
-  done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
-  for ac_arg
-  do
-    case $ac_arg in
-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-    | -silent | --silent | --silen | --sile | --sil)
-      continue ;;
-    *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    case $ac_pass in
-    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
-    2)
-      as_fn_append ac_configure_args1 " '$ac_arg'"
-      if test $ac_must_keep_next = true; then
-	ac_must_keep_next=false # Got value, back to normal.
-      else
-	case $ac_arg in
-	  *=* | --config-cache | -C | -disable-* | --disable-* \
-	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-	  | -with-* | --with-* | -without-* | --without-* | --x)
-	    case "$ac_configure_args0 " in
-	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-	    esac
-	    ;;
-	  -* ) ac_must_keep_next=true ;;
-	esac
-      fi
-      as_fn_append ac_configure_args " '$ac_arg'"
-      ;;
-    esac
-  done
-done
-{ ac_configure_args0=; unset ac_configure_args0;}
-{ ac_configure_args1=; unset ac_configure_args1;}
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log.  We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
-  # Save into config.log some information that might help in debugging.
-  {
-    echo
-
-    $as_echo "## ---------------- ##
-## Cache variables. ##
-## ---------------- ##"
-    echo
-    # The following way of writing the cache mishandles newlines in values,
-(
-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-  (set) 2>&1 |
-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      sed -n \
-	"s/'\''/'\''\\\\'\'''\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
-      ;; #(
-    *)
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-)
-    echo
-
-    $as_echo "## ----------------- ##
-## Output variables. ##
-## ----------------- ##"
-    echo
-    for ac_var in $ac_subst_vars
-    do
-      eval ac_val=\$$ac_var
-      case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-      esac
-      $as_echo "$ac_var='\''$ac_val'\''"
-    done | sort
-    echo
-
-    if test -n "$ac_subst_files"; then
-      $as_echo "## ------------------- ##
-## File substitutions. ##
-## ------------------- ##"
-      echo
-      for ac_var in $ac_subst_files
-      do
-	eval ac_val=\$$ac_var
-	case $ac_val in
-	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-	esac
-	$as_echo "$ac_var='\''$ac_val'\''"
-      done | sort
-      echo
-    fi
-
-    if test -s confdefs.h; then
-      $as_echo "## ----------- ##
-## confdefs.h. ##
-## ----------- ##"
-      echo
-      cat confdefs.h
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core *.core core.conftest.* &&
-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-$as_echo "/* confdefs.h */" > confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
-  # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in @%:@((
-    -*)  ac_site_file1=./$CONFIG_SITE;;
-    */*) ac_site_file1=$CONFIG_SITE;;
-    *)   ac_site_file1=./$CONFIG_SITE;;
-  esac
-elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
-else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
-  test "x$ac_site_file" = xNONE && continue
-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
-    sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file" \
-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
-  fi
-done
-
-if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special files
-  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
-  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . "$cache_file";;
-      *)                      . "./$cache_file";;
-    esac
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val=\$ac_cv_env_${ac_var}_value
-  eval ac_new_val=\$ac_env_${ac_var}_value
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,);;
-    *)
-      if test "x$ac_old_val" != "x$ac_new_val"; then
-	# differences in whitespace do not lead to failure.
-	ac_old_val_w=`echo x $ac_old_val`
-	ac_new_val_w=`echo x $ac_new_val`
-	if test "$ac_old_val_w" != "$ac_new_val_w"; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-	  ac_cache_corrupted=:
-	else
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
-	  eval $ac_var=\$ac_old_val
-	fi
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-    *) ac_arg=$ac_var=$ac_new_val ;;
-    esac
-    case " $ac_configure_args " in
-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-ac_aux_dir=
-for ac_dir in config "$srcdir"/config; do
-  if test -f "$ac_dir/install-sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f "$ac_dir/install.sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  elif test -f "$ac_dir/shtool"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/shtool install -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  as_fn_error $? "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
-
-
-
-case `pwd` in
-  *\ * | *\	*)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
-$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
-esac
-
-
-
-macro_version='2.4.2'
-macro_revision='1.3337'
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
-  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$host_alias" = x; then
-  ac_cv_host=$ac_cv_build
-else
-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-# Backslashify metacharacters that are still active within
-# double-quoted strings.
-sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
-ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
-$as_echo_n "checking how to print strings... " >&6; }
-# Test print first, because it will be a builtin if present.
-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
-   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='print -r --'
-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='printf %s\n'
-else
-  # Use this function as a fallback that always works.
-  func_fallback_echo ()
-  {
-    eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-  }
-  ECHO='func_fallback_echo'
-fi
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO "" 
-}
-
-case "$ECHO" in
-  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
-$as_echo "printf" >&6; } ;;
-  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
-$as_echo "print -r" >&6; } ;;
-  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
-$as_echo "cat" >&6; } ;;
-esac
-
-
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $@%:@ != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-	;;
-    [ab].out )
-	# We found the default executable, but exeext='' is most
-	# certainly right.
-	break;;
-    *.* )
-	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-	then :; else
-	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	fi
-	# We set ac_cv_exeext here because the later test for it is not
-	# safe: cross compilers may not add the suffix if given an `-o'
-	# argument, so we may need to know it at that point already.
-	# Even if this section looks crufty: it has the advantage of
-	# actually working.
-	break;;
-    * )
-	break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
-  ac_file=''
-fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	  break;;
-    * ) break;;
-  esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
-  { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-  if { ac_try='./conftest$ac_cv_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-	cross_compiling=yes
-    else
-	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-  
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-     for ac_i in 1 2 3 4 5 6 7; do
-       ac_script="$ac_script$as_nl$ac_script"
-     done
-     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     { ac_script=; unset ac_script;}
-     if test -z "$SED"; then
-  ac_path_SED_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_SED" || continue
-# Check for GNU ac_path_SED and select it if it is found.
-  # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
-  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
-    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_SED_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_SED="$ac_path_SED"
-      ac_path_SED_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_SED_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_SED"; then
-    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
-  fi
-else
-  ac_cv_path_SED=$SED
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
-  rm -f conftest.sed
-
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
- 
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in egrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_EGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_EGREP=$EGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
- 
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
-$as_echo_n "checking for fgrep... " >&6; }
-if ${ac_cv_path_FGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
-   then ac_cv_path_FGREP="$GREP -F"
-   else
-     if test -z "$FGREP"; then
-  ac_path_FGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in fgrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_FGREP" || continue
-# Check for GNU ac_path_FGREP and select it if it is found.
-  # Check for GNU $ac_path_FGREP
-case `"$ac_path_FGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'FGREP' >> "conftest.nl"
-    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_FGREP="$ac_path_FGREP"
-      ac_path_FGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_FGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_FGREP"; then
-    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_FGREP=$FGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
-$as_echo "$ac_cv_path_FGREP" >&6; }
- FGREP="$ac_cv_path_FGREP"
- 
-
-test -z "$GREP" && GREP=grep
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-
-
-
-@%:@ Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
-  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
-  with_gnu_ld=no
-fi
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [\\/]* | ?:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
-fi
-if ${lt_cv_path_LD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
-fi
-
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
-
-
-    
-    
-    
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
-$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if ${lt_cv_path_NM+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
-	#   nm: unknown option "B" ignored
-	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
-	  lt_cv_path_NM="$tmp_nm -B"
-	  break
-	  ;;
-	*)
-	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-	  */dev/null*)
-	    lt_cv_path_NM="$tmp_nm -p"
-	    break
-	    ;;
-	  *)
-	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-	    continue # so that we can try to find one that supports BSD flags
-	    ;;
-	  esac
-	  ;;
-	esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  : ${lt_cv_path_NM=no}
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
-$as_echo "$lt_cv_path_NM" >&6; }
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$DUMPBIN"; then :
-    # Let the user override the test.
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in dumpbin "link -dump"
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DUMPBIN"; then
-  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DUMPBIN=$ac_cv_prog_DUMPBIN
-if test -n "$DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
-$as_echo "$DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$DUMPBIN" && break
-  done
-fi
-if test -z "$DUMPBIN"; then
-  ac_ct_DUMPBIN=$DUMPBIN
-  for ac_prog in dumpbin "link -dump"
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DUMPBIN"; then
-  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
-if test -n "$ac_ct_DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
-$as_echo "$ac_ct_DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_DUMPBIN" && break
-done
-
-  if test "x$ac_ct_DUMPBIN" = x; then
-    DUMPBIN=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DUMPBIN=$ac_ct_DUMPBIN
-  fi
-fi
-
-    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
-    *COFF*)
-      DUMPBIN="$DUMPBIN -symbols"
-      ;;
-    *)
-      DUMPBIN=:
-      ;;
-    esac
-  fi
-  
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
-  fi
-fi
-test -z "$NM" && NM=nm
-
-
-    
-    
-    
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
-$as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if ${lt_cv_nm_interface+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
-  cat conftest.out >&5
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
-$as_echo "$lt_cv_nm_interface" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-# find the maximum length of command line arguments
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
-$as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if ${lt_cv_sys_max_cmd_len+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-    i=0
-  teststring="ABCD"
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  mint*)
-    # On MiNT this can take a long time and run out of memory.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  os2*)
-    # The test takes a long time on OS/2.
-    lt_cv_sys_max_cmd_len=8192
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[	 ]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
-	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-	      test $i != 17 # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-
-fi
-
-if test -n $lt_cv_sys_max_cmd_len ; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
-$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-    
-    
-    
-
-
-: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
-$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,b/c, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
-$as_echo "$xsi_shell" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
-$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
-$as_echo "$lt_shell_append" >&6; }
-
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
-else
-  lt_unset=false
-fi
-
-    
-    
-    
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
-  ;;
-esac
-
-    
-    
-    
-
-    
-    
-    
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-if ${lt_cv_to_host_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-        ;;
-    esac
-    ;;
-  *-*-cygwin* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_noop
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-        ;;
-    esac
-    ;;
-  * ) # unhandled hosts (and "normal" native builds)
-    lt_cv_to_host_file_cmd=func_convert_file_noop
-    ;;
-esac
-
-fi
-
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-$as_echo "$lt_cv_to_host_file_cmd" >&6; }
-
-    
-    
-    
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-if ${lt_cv_to_tool_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  #assume ordinary cross tools, or native build.
-lt_cv_to_tool_file_cmd=func_convert_file_noop
-case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-        ;;
-    esac
-    ;;
-esac
-
-fi
-
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
-
-    
-    
-    
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
-$as_echo_n "checking for $LD option to reload object files... " >&6; }
-if ${lt_cv_ld_reload_flag+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_reload_flag='-r'
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
-$as_echo "$lt_cv_ld_reload_flag" >&6; }
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    if test "$GCC" != yes; then
-      reload_cmds=false
-    fi
-    ;;
-  darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-
-    
-    
-    
-
-    
-    
-    
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OBJDUMP"; then
-  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
-  ac_ct_OBJDUMP=$OBJDUMP
-  # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OBJDUMP"; then
-  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OBJDUMP" = x; then
-    OBJDUMP="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OBJDUMP=$ac_ct_OBJDUMP
-  fi
-else
-  OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-    
-    
-    
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
-$as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if ${lt_cv_deplibs_check_method+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[4-9]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[45]*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
-  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    # Keep this pattern in sync with the one in func_win32_libid.
-    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-cegcc*)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-haiku*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[3-9]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
-$as_echo "$lt_cv_deplibs_check_method" >&6; }
-
-file_magic_glob=
-want_nocaseglob=no
-if test "$build" = "$host"; then
-  case $host_os in
-  mingw* | pw32*)
-    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-      want_nocaseglob=yes
-    else
-      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
-    fi
-    ;;
-  esac
-fi
-
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DLLTOOL"; then
-  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
-  ac_ct_DLLTOOL=$DLLTOOL
-  # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DLLTOOL"; then
-  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DLLTOOL" = x; then
-    DLLTOOL="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DLLTOOL=$ac_ct_DLLTOOL
-  fi
-else
-  DLLTOOL="$ac_cv_prog_DLLTOOL"
-fi
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-    
-    
-    
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_sharedlib_from_linklib_cmd='unknown'
-
-case $host_os in
-cygwin* | mingw* | pw32* | cegcc*)
-  # two different shell functions defined in ltmain.sh
-  # decide which to use based on capabilities of $DLLTOOL
-  case `$DLLTOOL --help 2>&1` in
-  *--identify-strict*)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-    ;;
-  *)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-    ;;
-  esac
-  ;;
-*)
-  # fallback: assume linklib IS sharedlib
-  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-
-
-    
-    
-    
-
-
-
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in ar
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$AR" && break
-  done
-fi
-if test -z "$AR"; then
-  ac_ct_AR=$AR
-  for ac_prog in ar
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AR="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_AR" && break
-done
-
-  if test "x$ac_ct_AR" = x; then
-    AR="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AR=$ac_ct_AR
-  fi
-fi
-
-: ${AR=ar}
-: ${AR_FLAGS=cru}
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
-$as_echo_n "checking for archiver @FILE support... " >&6; }
-if ${lt_cv_ar_at_file+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ar_at_file=no
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  echo conftest.$ac_objext > conftest.lst
-      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
-      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-      if test "$ac_status" -eq 0; then
-	# Ensure the archiver fails upon bogus file names.
-	rm -f conftest.$ac_objext libconftest.a
-	{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	if test "$ac_status" -ne 0; then
-          lt_cv_ar_at_file=@
-        fi
-      fi
-      rm -f conftest.* libconftest.a
-     
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
-$as_echo "$lt_cv_ar_at_file" >&6; }
-
-if test "x$lt_cv_ar_at_file" = xno; then
-  archiver_list_spec=
-else
-  archiver_list_spec=$lt_cv_ar_at_file
-fi
-
-    
-    
-    
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-test -z "$STRIP" && STRIP=:
-
-    
-    
-    
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-test -z "$RANLIB" && RANLIB=:
-
-    
-    
-    
-
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
-fi
-
-case $host_os in
-  darwin*)
-    lock_old_archive_extraction=yes ;;
-  *)
-    lock_old_archive_extraction=no ;;
-esac
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-for ac_prog in gawk mawk nawk awk
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AWK"; then
-  ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$AWK" && break
-done
-
-
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
-$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if ${lt_cv_sys_global_symbol_pipe+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[BCDEGRST]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[BCDT]'
-  ;;
-cygwin* | mingw* | pw32* | cegcc*)
-  symcode='[ABCDGISTW]'
-  ;;
-hpux*)
-  if test "$host_cpu" = ia64; then
-    symcode='[ABCDEGRST]'
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[BCDEGRST]'
-  ;;
-osf*)
-  symcode='[BCDEGQRST]'
-  ;;
-solaris*)
-  symcode='[BDRT]'
-  ;;
-sco3.2v5*)
-  symcode='[DT]'
-  ;;
-sysv4.2uw2*)
-  symcode='[DT]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[ABDT]'
-  ;;
-sysv4)
-  symcode='[DFNSTU]'
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[ABCDGIRSTW]' ;;
-esac
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function
-    # and D for any global variable.
-    # Also find C++ and __fastcall symbols from MSVC++,
-    # which start with @ or ?.
-    lt_cv_sys_global_symbol_pipe="$AWK '"\
-"     {last_section=section; section=\$ 3};"\
-"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
-"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     \$ 0!~/External *\|/{next};"\
-"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-"     {if(hide[section]) next};"\
-"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
-"     ' prfx=^$ac_symprfx"
-  else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-  fi
-  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
-  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-	mv -f "$nlist"T "$nlist"
-      else
-	rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-	  cat <<_LT_EOF > conftest.$ac_ext
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT@&t at _DLSYM_CONST
-#elif defined(__osf__)
-/* This system does not cope well with relocations in const data.  */
-# define LT@&t at _DLSYM_CONST
-#else
-# define LT@&t at _DLSYM_CONST const
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
-	  # Now generate the symbol file.
-	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
-	  cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols.  */
-LT@&t at _DLSYM_CONST struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-	  cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-	  # Now try linking the two files.
-	  mv conftest.$ac_objext conftstm.$ac_objext
-	  lt_globsym_save_LIBS=$LIBS
-	  lt_globsym_save_CFLAGS=$CFLAGS
-	  LIBS="conftstm.$ac_objext"
-	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
-	    pipe_works=yes
-	  fi
-	  LIBS=$lt_globsym_save_LIBS
-	  CFLAGS=$lt_globsym_save_CFLAGS
-	else
-	  echo "cannot find nm_test_func in $nlist" >&5
-	fi
-      else
-	echo "cannot find nm_test_var in $nlist" >&5
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
-    fi
-  else
-    echo "$progname: failed program was:" >&5
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-
-fi
-
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
-$as_echo "ok" >&6; }
-fi
-
-# Response file support.
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-  nm_file_list_spec='@'
-elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
-  nm_file_list_spec='@'
-fi
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-$as_echo_n "checking for sysroot... " >&6; }
-
-@%:@ Check whether --with-sysroot was given.
-if test "${with_sysroot+set}" = set; then :
-  withval=$with_sysroot; 
-else
-  with_sysroot=no
-fi
-
-
-lt_sysroot=
-case ${with_sysroot} in #(
- yes)
-   if test "$GCC" = yes; then
-     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-   fi
-   ;; #(
- /*)
-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-   ;; #(
- no|'')
-   ;; #(
- *)
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
-$as_echo "${with_sysroot}" >&6; }
-   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
-   ;;
-esac
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-$as_echo "${lt_sysroot:-no}" >&6; }
-
-    
-    
-    
-
-@%:@ Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then :
-  enableval=$enable_libtool_lock; 
-fi
-
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-	HPUX_IA64_MODE="32"
-	;;
-      *ELF-64*)
-	HPUX_IA64_MODE="64"
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    if test "$lt_cv_prog_gnu_ld" = yes; then
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -melf32bsmip"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -melf32bmipn32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -melf64bmip"
-	;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -32"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -n32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -64"
-	  ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_i386_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
-	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
-	    LD="${LD-ld} -m elf32ppclinux"
-	    ;;
-	  s390x-*linux*)
-	    LD="${LD-ld} -m elf_s390"
-	    ;;
-	  sparc64-*linux*)
-	    LD="${LD-ld} -m elf32_sparc"
-	    ;;
-	esac
-	;;
-      *64-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_x86_64_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_x86_64"
-	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
-	    LD="${LD-ld} -m elf64ppc"
-	    ;;
-	  s390*-*linux*|s390*-*tpf*)
-	    LD="${LD-ld} -m elf64_s390"
-	    ;;
-	  sparc*-*linux*)
-	    LD="${LD-ld} -m elf64_sparc"
-	    ;;
-	esac
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
-$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
-if ${lt_cv_cc_needs_belf+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_cc_needs_belf=yes
-else
-  lt_cv_cc_needs_belf=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-     ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
-$as_echo "$lt_cv_cc_needs_belf" >&6; }
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-*-*solaris*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*)
-        case $host in
-        i?86-*-solaris*)
-          LD="${LD-ld} -m elf_x86_64"
-          ;;
-        sparc*-*-solaris*)
-          LD="${LD-ld} -m elf64_sparc"
-          ;;
-        esac
-        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
-        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
-          LD="${LD-ld}_sol2"
-        fi
-        ;;
-      *)
-	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-	  LD="${LD-ld} -64"
-	fi
-	;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks="$enable_libtool_lock"
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
-set dummy ${ac_tool_prefix}mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$MANIFEST_TOOL"; then
-  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
-if test -n "$MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-$as_echo "$MANIFEST_TOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
-  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
-  # Extract the first word of "mt", so it can be a program name with args.
-set dummy mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_MANIFEST_TOOL"; then
-  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
-if test -n "$ac_ct_MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_MANIFEST_TOOL" = x; then
-    MANIFEST_TOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
-  fi
-else
-  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
-fi
-
-test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-if ${lt_cv_path_mainfest_tool+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_path_mainfest_tool=no
-  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
-  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-  cat conftest.err >&5
-  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-    lt_cv_path_mainfest_tool=yes
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-$as_echo "$lt_cv_path_mainfest_tool" >&6; }
-if test "x$lt_cv_path_mainfest_tool" != xyes; then
-  MANIFEST_TOOL=:
-fi
-
-    
-    
-    
-
-
-  case $host_os in
-    rhapsody* | darwin*)
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DSYMUTIL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DSYMUTIL"; then
-  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DSYMUTIL=$ac_cv_prog_DSYMUTIL
-if test -n "$DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
-$as_echo "$DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DSYMUTIL"; then
-  ac_ct_DSYMUTIL=$DSYMUTIL
-  # Extract the first word of "dsymutil", so it can be a program name with args.
-set dummy dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DSYMUTIL"; then
-  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
-if test -n "$ac_ct_DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
-$as_echo "$ac_ct_DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DSYMUTIL" = x; then
-    DSYMUTIL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DSYMUTIL=$ac_ct_DSYMUTIL
-  fi
-else
-  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
-set dummy ${ac_tool_prefix}nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NMEDIT"; then
-  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-NMEDIT=$ac_cv_prog_NMEDIT
-if test -n "$NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
-$as_echo "$NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_NMEDIT"; then
-  ac_ct_NMEDIT=$NMEDIT
-  # Extract the first word of "nmedit", so it can be a program name with args.
-set dummy nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_NMEDIT"; then
-  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_NMEDIT="nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
-if test -n "$ac_ct_NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
-$as_echo "$ac_ct_NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_NMEDIT" = x; then
-    NMEDIT=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    NMEDIT=$ac_ct_NMEDIT
-  fi
-else
-  NMEDIT="$ac_cv_prog_NMEDIT"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
-set dummy ${ac_tool_prefix}lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$LIPO"; then
-  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-LIPO=$ac_cv_prog_LIPO
-if test -n "$LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
-$as_echo "$LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_LIPO"; then
-  ac_ct_LIPO=$LIPO
-  # Extract the first word of "lipo", so it can be a program name with args.
-set dummy lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_LIPO"; then
-  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_LIPO="lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
-if test -n "$ac_ct_LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
-$as_echo "$ac_ct_LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_LIPO" = x; then
-    LIPO=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    LIPO=$ac_ct_LIPO
-  fi
-else
-  LIPO="$ac_cv_prog_LIPO"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL"; then
-  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL=$ac_cv_prog_OTOOL
-if test -n "$OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
-$as_echo "$OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL"; then
-  ac_ct_OTOOL=$OTOOL
-  # Extract the first word of "otool", so it can be a program name with args.
-set dummy otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL"; then
-  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OTOOL="otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
-if test -n "$ac_ct_OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
-$as_echo "$ac_ct_OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL" = x; then
-    OTOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL=$ac_ct_OTOOL
-  fi
-else
-  OTOOL="$ac_cv_prog_OTOOL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL64"; then
-  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL64=$ac_cv_prog_OTOOL64
-if test -n "$OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
-$as_echo "$OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL64"; then
-  ac_ct_OTOOL64=$OTOOL64
-  # Extract the first word of "otool64", so it can be a program name with args.
-set dummy otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL64"; then
-  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OTOOL64="otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
-if test -n "$ac_ct_OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
-$as_echo "$ac_ct_OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL64" = x; then
-    OTOOL64=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL64=$ac_ct_OTOOL64
-  fi
-else
-  OTOOL64="$ac_cv_prog_OTOOL64"
-fi
-
-    
-    
-    
-    
-
-    
-    
-    
-    
-
-    
-    
-    
-    
-
-    
-    
-    
-    
-
-    
-    
-    
-    
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
-$as_echo_n "checking for -single_module linker flag... " >&6; }
-if ${lt_cv_apple_cc_single_mod+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
-	# By default we will add the -single_module flag. You can override
-	# by either setting the environment variable LT_MULTI_MODULE
-	# non-empty at configure time, or by adding -multi_module to the
-	# link flags.
-	rm -rf libconftest.dylib*
-	echo "int foo(void){return 1;}" > conftest.c
-	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&5
-	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-	# If there is a non-empty error log, and "single_module"
-	# appears in it, assume the flag caused a linker warning
-        if test -s conftest.err && $GREP single_module conftest.err; then
-	  cat conftest.err >&5
-	# Otherwise, if the output was created with a 0 exit code from
-	# the compiler, it worked.
-	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
-	  lt_cv_apple_cc_single_mod=yes
-	else
-	  cat conftest.err >&5
-	fi
-	rm -rf libconftest.dylib*
-	rm -f conftest.*
-      fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
-$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
-$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if ${lt_cv_ld_exported_symbols_list+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_ld_exported_symbols_list=yes
-else
-  lt_cv_ld_exported_symbols_list=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-	LDFLAGS="$save_LDFLAGS"
-    
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
-$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
-$as_echo_n "checking for -force_load linker flag... " >&6; }
-if ${lt_cv_ld_force_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_force_load=no
-      cat > conftest.c << _LT_EOF
-int forced_loaded() { return 2;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
-      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
-      echo "$AR cru libconftest.a conftest.o" >&5
-      $AR cru libconftest.a conftest.o 2>&5
-      echo "$RANLIB libconftest.a" >&5
-      $RANLIB libconftest.a 2>&5
-      cat > conftest.c << _LT_EOF
-int main() { return 0;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
-      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
-      _lt_result=$?
-      if test -s conftest.err && $GREP force_load conftest.err; then
-	cat conftest.err >&5
-      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
-	lt_cv_ld_force_load=yes
-      else
-	cat conftest.err >&5
-      fi
-        rm -f conftest.err libconftest.a conftest conftest.c
-        rm -rf conftest.dSYM
-    
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
-$as_echo "$lt_cv_ld_force_load" >&6; }
-    case $host_os in
-    rhapsody* | darwin1.[012])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-	10.0,*86*-darwin8*|10.0,*-darwin[91]*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-	10.[012]*)
-	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-	10.*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    fi
-    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@ifdef __STDC__
-@%:@ include <limits.h>
-@%:@else
-@%:@ include <assert.h>
-@%:@endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-  
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@ifdef __STDC__
-@%:@ include <limits.h>
-@%:@else
-@%:@ include <assert.h>
-@%:@endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-  
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-  
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-  
-$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-		  inttypes.h stdint.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- 
-fi
-
-done
-
-
-for ac_header in dlfcn.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
-"
-if test "x$ac_cv_header_dlfcn_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_DLFCN_H 1
-_ACEOF
- 
-fi
-
-done
-
-
-
-
-
-# Set options
-@%:@ Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
-  enableval=$enable_shared; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_shared=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_shared=yes
-fi
-
-
-    
-    
-    
-    
-
-
-
-
-        enable_dlopen=no
-  
-
-  enable_win32_dll=no
-  
-
-            
-  @%:@ Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then :
-  enableval=$enable_static; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_static=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_static=yes
-fi
-
-
-    
-    
-    
-    
-
-
-
-  
-@%:@ Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then :
-  withval=$with_pic; lt_p=${PACKAGE-default}
-    case $withval in
-    yes|no) pic_mode=$withval ;;
-    *)
-      pic_mode=default
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for lt_pkg in $withval; do
-	IFS="$lt_save_ifs"
-	if test "X$lt_pkg" = "X$lt_p"; then
-	  pic_mode=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  pic_mode=default
-fi
-
-
-test -z "$pic_mode" && pic_mode=default
-
-
-    
-    
-    
-
-
-  @%:@ Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then :
-  enableval=$enable_fast_install; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_fast_install=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_fast_install=yes
-fi
-
-
-
-    
-    
-    
-
-
-  
-
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-
-
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-test -z "$LN_S" && LN_S="ln -s"
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-
-if test -n "${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
-$as_echo_n "checking for objdir... " >&6; }
-if ${lt_cv_objdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
-$as_echo "$lt_cv_objdir" >&6; }
-objdir=$lt_cv_objdir
-
-    
-    
-    
-
-cat >>confdefs.h <<_ACEOF
-@%:@define LT_OBJDIR "$lt_cv_objdir/"
-_ACEOF
-
-
-
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
-$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/${ac_tool_prefix}file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool at gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-    
-    
-    
-
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
-$as_echo_n "checking for file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/file"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool at gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  else
-    MAGIC_CMD=:
-  fi
-fi
-
-  fi
-  ;;
-esac
-
-# Use C for the default configuration in the libtool script
-
-lt_save_CC="$CC"
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-objext=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-  
-lt_prog_compiler_no_builtin_flag=
-
-if test "$GCC" = yes; then
-  case $cc_basename in
-  nvcc*)
-    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
-  *)
-    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
-  esac
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_rtti_exceptions=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="-fno-rtti -fno-exceptions"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_rtti_exceptions=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
-
-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
-    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
-else
-    :
-fi
-
-fi
-
-    
-    
-    
-
-
-  lt_prog_compiler_wl=
-lt_prog_compiler_pic=
-lt_prog_compiler_static=
-
-
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl='-Wl,'
-    lt_prog_compiler_static='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      lt_prog_compiler_pic='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      lt_prog_compiler_wl='-Xlinker '
-      if test -n "$lt_prog_compiler_pic"; then
-        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static='-Bstatic'
-      else
-	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-KPIC'
-	lt_prog_compiler_static='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-fPIC'
-	lt_prog_compiler_static='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='--shared'
-	lt_prog_compiler_static='--static'
-	;;
-      nagfor*)
-	# NAG Fortran compiler
-	lt_prog_compiler_wl='-Wl,-Wl,,'
-	lt_prog_compiler_pic='-PIC'
-	lt_prog_compiler_static='-Bstatic'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-fpic'
-	lt_prog_compiler_static='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-qpic'
-	lt_prog_compiler_static='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl=''
-	  ;;
-	*Sun\ F* | *Sun*Fortran*)
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl='-Qoption ld '
-	  ;;
-	*Sun\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl='-Wl,'
-	  ;;
-        *Intel*\ [CF]*Compiler*)
-	  lt_prog_compiler_wl='-Wl,'
-	  lt_prog_compiler_pic='-fPIC'
-	  lt_prog_compiler_static='-static'
-	  ;;
-	*Portland\ Group*)
-	  lt_prog_compiler_wl='-Wl,'
-	  lt_prog_compiler_pic='-fpic'
-	  lt_prog_compiler_static='-Bstatic'
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-	lt_prog_compiler_wl='-Qoption ld ';;
-      *)
-	lt_prog_compiler_wl='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl='-Qoption ld '
-      lt_prog_compiler_pic='-PIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	lt_prog_compiler_pic='-Kconform_pic'
-	lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_can_build_shared=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic='-pic'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared=no
-      ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic=
-    ;;
-  *)
-    lt_prog_compiler_pic="$lt_prog_compiler_pic@&t@ -DPIC"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-$as_echo "$lt_cv_prog_compiler_pic" >&6; }
-lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic@&t@ -DPIC"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
-    case $lt_prog_compiler_pic in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
-     esac
-else
-    lt_prog_compiler_pic=
-     lt_prog_compiler_can_build_shared=no
-fi
-
-fi
-
-    
-    
-    
-
-
-
-    
-    
-    
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
-$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works" = xyes; then
-    :
-else
-    lt_prog_compiler_static=
-fi
-
-
-    
-    
-    
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-    
-    
-    
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-    
-    
-    
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  runpath_var=
-  allow_undefined_flag=
-  always_export_symbols=no
-  archive_cmds=
-  archive_expsym_cmds=
-  compiler_needs_object=no
-  enable_shared_with_static_runtimes=no
-  export_dynamic_flag_spec=
-  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic=no
-  hardcode_direct=no
-  hardcode_direct_absolute=no
-  hardcode_libdir_flag_spec=
-  hardcode_libdir_separator=
-  hardcode_minus_L=no
-  hardcode_shlibpath_var=unsupported
-  inherit_rpath=no
-  link_all_deplibs=unknown
-  module_cmds=
-  module_expsym_cmds=
-  old_archive_from_new_cmds=
-  old_archive_from_expsyms_cmds=
-  thread_safe_flag_spec=
-  whole_archive_flag_spec=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  esac
-
-  ld_shlibs=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
-    case $host_os in
-      aix*)
-	# The AIX port of GNU ld has always aspired to compatibility
-	# with the native linker.  However, as the warning in the GNU ld
-	# block says, versions before 2.19.5* couldn't really create working
-	# shared libraries, regardless of the interface used.
-	case `$LD -v 2>&1` in
-	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
-	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
-	  *)
-	    lt_use_gnu_ld_interface=yes
-	    ;;
-	esac
-	;;
-      *)
-	lt_use_gnu_ld_interface=yes
-	;;
-    esac
-  fi
-
-  if test "$lt_use_gnu_ld_interface" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      whole_archive_flag_spec=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	allow_undefined_flag=unsupported
-	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec='-L$libdir'
-      export_dynamic_flag_spec='${wl}--export-all-symbols'
-      allow_undefined_flag=unsupported
-      always_export_symbols=no
-      enable_shared_with_static_runtimes=yes
-      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    haiku*)
-      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      link_all_deplibs=yes
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=' $pic_flag'
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95* | pgfortran*)
-					# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  whole_archive_flag_spec=
-	  tmp_sharedflag='--shared' ;;
-	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	nvcc*)	# Cuda Compiler Driver 2.2
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object=yes
-	  ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf* | bgf* | bgxlf* | mpixlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-	  archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        ld_shlibs=no
-      fi
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    ld_shlibs=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-    esac
-
-    if test "$ld_shlibs" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec=
-      export_dynamic_flag_spec=
-      whole_archive_flag_spec=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag=unsupported
-      always_export_symbols=yes
-      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	hardcode_direct=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	# Also, AIX nm treats weak defined symbols like other global
-	# defined symbols, whereas GNU nm marks them as "W".
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds=''
-      hardcode_direct=yes
-      hardcode_direct_absolute=yes
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      file_list_spec='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[012]|aix4.[012].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  hardcode_direct=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  hardcode_minus_L=yes
-	  hardcode_libdir_flag_spec='-L$libdir'
-	  hardcode_libdir_separator=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      export_dynamic_flag_spec='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	allow_undefined_flag='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_="/usr/lib:/lib"
-  fi
-  
-fi
-
-  aix_libpath=$lt_cv_aix_libpath_
-fi
-
-        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-	  allow_undefined_flag="-z nodefs"
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_="/usr/lib:/lib"
-  fi
-  
-fi
-
-  aix_libpath=$lt_cv_aix_libpath_
-fi
-
-	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag=' ${wl}-bernotok'
-	  allow_undefined_flag=' ${wl}-berok'
-	  if test "$with_gnu_ld" = yes; then
-	    # We only use this code for GNU lds that support --whole-archive.
-	    whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	  else
-	    # Exported symbols can be pulled into shared objects from archives
-	    whole_archive_flag_spec='$convenience'
-	  fi
-	  archive_cmds_need_lc=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-	# Native MSVC
-	hardcode_libdir_flag_spec=' '
-	allow_undefined_flag=unsupported
-	always_export_symbols=yes
-	file_list_spec='@'
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	  else
-	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	  fi~
-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	  linknames='
-	# The linker will not automatically build a static lib if we build a DLL.
-	# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
-	enable_shared_with_static_runtimes=yes
-	exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-	export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-	# Don't use ranlib
-	old_postinstall_cmds='chmod 644 $oldlib'
-	postlink_cmds='lt_outputfile="@OUTPUT@"~
-	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-	  case $lt_outputfile in
-	    *.exe|*.EXE) ;;
-	    *)
-	      lt_outputfile="$lt_outputfile.exe"
-	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-	      ;;
-	  esac~
-	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	    $RM "$lt_outputfile.manifest";
-	  fi'
-	;;
-      *)
-	# Assume MSVC wrapper
-	hardcode_libdir_flag_spec=' '
-	allow_undefined_flag=unsupported
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-	# The linker will automatically build a .lib file if we build a DLL.
-	old_archive_from_new_cmds='true'
-	# FIXME: Should let the user specify the lib program.
-	old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-	enable_shared_with_static_runtimes=yes
-	;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-      
-  
-  archive_cmds_need_lc=no
-  hardcode_direct=no
-  hardcode_automatic=yes
-  hardcode_shlibpath_var=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-    
-  else
-    whole_archive_flag_spec=''
-  fi
-  link_all_deplibs=yes
-  allow_undefined_flag="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-    
-  else
-  ld_shlibs=no
-  fi
-
-      ;;
-
-    dgux*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_direct=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L=yes
-      export_dynamic_flag_spec='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator=:
-	hardcode_direct=yes
-	hardcode_direct_absolute=yes
-	export_dynamic_flag_spec='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	hardcode_minus_L=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	
-	  # Older versions of the 11.00 compiler do not understand -b yet
-	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
-$as_echo_n "checking if $CC understands -b... " >&6; }
-if ${lt_cv_prog_compiler__b+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler__b=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS -b"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler__b=yes
-       fi
-     else
-       lt_cv_prog_compiler__b=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
-$as_echo "$lt_cv_prog_compiler__b" >&6; }
-
-if test x"$lt_cv_prog_compiler__b" = xyes; then
-    archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-else
-    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-fi
-
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  hardcode_direct=no
-	  hardcode_shlibpath_var=no
-	  ;;
-	*)
-	  hardcode_direct=yes
-	  hardcode_direct_absolute=yes
-	  export_dynamic_flag_spec='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-	# This should be the same for all languages, so no per-tag cache variable.
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_LDFLAGS="$LDFLAGS"
-	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-	   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-int foo (void) { return 0; }
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_irix_exported_symbol=yes
-else
-  lt_cv_irix_exported_symbol=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-           LDFLAGS="$save_LDFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-	if test "$lt_cv_irix_exported_symbol" = yes; then
-          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-	fi
-      else
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      inherit_rpath=yes
-      link_all_deplibs=yes
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    newsos6)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_shlibpath_var=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	hardcode_direct=yes
-	hardcode_shlibpath_var=no
-	hardcode_direct_absolute=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      allow_undefined_flag=unsupported
-      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      else
-	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	hardcode_libdir_flag_spec='-rpath $libdir'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_separator=:
-      ;;
-
-    solaris*)
-      no_undefined_flag=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_shlibpath_var=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      link_all_deplibs=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  reload_cmds='$CC -r -o $output$reload_objs'
-	  hardcode_direct=no
-        ;;
-	motorola)
-	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var=no
-      export_dynamic_flag_spec='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	hardcode_shlibpath_var=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	ld_shlibs=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag='${wl}-z,text'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag='${wl}-z,text'
-      allow_undefined_flag='${wl}-z,nodefs'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-R,$libdir'
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      export_dynamic_flag_spec='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      ld_shlibs=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	export_dynamic_flag_spec='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
-$as_echo "$ld_shlibs" >&6; }
-test "$ld_shlibs" = no && can_build_shared=no
-
-with_gnu_ld=$with_gnu_ld
-
-
-    
-    
-    
-
-    
-    
-    
-
-    
-    
-    
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$lt_prog_compiler_wl
-	  pic_flag=$lt_prog_compiler_pic
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag
-	  allow_undefined_flag=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc=no
-	  else
-	    lt_cv_archive_cmds_need_lc=yes
-	  fi
-	  allow_undefined_flag=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-	
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
-      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-if test "$GCC" = yes; then
-  case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
-  esac
-  case $host_os in
-    mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
-    *) lt_sed_strip_eq="s,=/,/,g" ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
-  case $lt_search_path_spec in
-  *\;*)
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
-    ;;
-  *)
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
-    ;;
-  esac
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
-      test -d "$lt_sys_path" && \
-	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[lt_foo]++; }
-  if (lt_freq[lt_foo] == 1) { print lt_foo; }
-}'`
-  # AWK program above erroneously prepends '/' to C:/dos/paths
-  # for these hosts.
-  case $host_os in
-    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
-      $SED 's,/\([A-Za-z]:\),\1,g'` ;;
-  esac
-  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-
-      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux # correct to gnu/linux during the next big refactor
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
-	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-    
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action=
-if test -n "$hardcode_libdir_flag_spec" ||
-   test -n "$runpath_var" ||
-   test "X$hardcode_automatic" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
-     test "$hardcode_minus_L" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
-$as_echo "$hardcode_action" >&6; }
-
-if test "$hardcode_action" = relink ||
-   test "$inherit_rpath" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-    
-    
-    
-
-
-  if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-  
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    
-fi
-
-    ;;
-
-  *)
-    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
-if test "x$ac_cv_func_shl_load" = xyes; then :
-  lt_cv_dlopen="shl_load"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if ${ac_cv_lib_dld_shl_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load ();
-int
-main ()
-{
-return shl_load ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_shl_load=yes
-else
-  ac_cv_lib_dld_shl_load=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
-  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
-else
-  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
-$as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if ${ac_cv_lib_svld_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsvld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_svld_dlopen=yes
-else
-  ac_cv_lib_svld_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
-$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
-$as_echo_n "checking for dld_link in -ldld... " >&6; }
-if ${ac_cv_lib_dld_dld_link+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dld_link ();
-int
-main ()
-{
-return dld_link ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_dld_link=yes
-else
-  ac_cv_lib_dld_dld_link=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
-$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
-  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
-fi
-
-	      
-fi
-
-	    
-fi
-
-	  
-fi
-
-	
-fi
-
-      
-fi
-
-    ;;
-  esac
-
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
-$as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  	  if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-	}
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self=no
-  fi
-fi
-rm -fr conftest*
-
-    
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
-$as_echo "$lt_cv_dlopen_self" >&6; }
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
-$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self_static+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  	  if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self_static=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-	}
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self_static=no
-  fi
-fi
-rm -fr conftest*
-
-      
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
-$as_echo "$lt_cv_dlopen_self_static" >&6; }
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-  
-striplib=
-old_striplib=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
-$as_echo_n "checking whether stripping libraries is possible... " >&6; }
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP" ; then
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    fi
-    ;;
-  *)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    ;;
-  esac
-fi
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-
-  # Report which library types will actually be built
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-  test "$can_build_shared" = "no" && enable_shared=no
-
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test "$enable_shared" = yes && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
-
-  aix[4-9]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
-    fi
-    ;;
-  esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-  # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-  
-
-
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-CC="$lt_save_CC"
-
-
-
-
-
-
-
-
-       
-       
-
-
-
-
-
-        ac_config_commands="$ac_config_commands libtool"
-
-
-
-
-# Only expand once:
-
-
-
-
-
-# Source file containing package/library versioning information.
-
- . ${srcdir}/version.sh
-
-ECCODES_MAIN_VERSION="${ECCODES_MAJOR_VERSION}.${ECCODES_MINOR_VERSION}.${ECCODES_REVISION_VERSION}"
- echo $ECCODES_MAIN_VERSION
-
-PACKAGE_VERSION="${ECCODES_MAIN_VERSION}"
-ECCODES_VERSION_STR="${ECCODES_MAIN_VERSION}"
-ECCODES_PATCH_VERSION="${ECCODES_REVISION_VERSION}"
-
-
-
-
-
-
-
-
-
-
-echo "configuring ${PACKAGE_NAME} ${PACKAGE_VERSION}"
-
-# Ensure that make can run correctly
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
-$as_echo_n "checking whether build environment is sane... " >&6; }
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name.  Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
-  *[\\\"\#\$\&\'\`$am_lf]*)
-    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
-esac
-case $srcdir in
-  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
-    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
-esac
-
-# Do 'set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   am_has_slept=no
-   for am_try in 1 2; do
-     echo "timestamp, slept: $am_has_slept" > conftest.file
-     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-     if test "$*" = "X"; then
-	# -L didn't work.
-	set X `ls -t "$srcdir/configure" conftest.file`
-     fi
-     if test "$*" != "X $srcdir/configure conftest.file" \
-	&& test "$*" != "X conftest.file $srcdir/configure"; then
-
-	# If neither matched, then we have a broken ls.  This can happen
-	# if, for instance, CONFIG_SHELL is bash and it inherits a
-	# broken ls alias from the environment.  This has actually
-	# happened.  Such a system could not be considered "sane".
-	as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
-  alias in your environment" "$LINENO" 5
-     fi
-     if test "$2" = conftest.file || test $am_try -eq 2; then
-       break
-     fi
-     # Just in case.
-     sleep 1
-     am_has_slept=yes
-   done
-   test "$2" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   as_fn_error $? "newly created file is older than distributed files!
-Check your system clock" "$LINENO" 5
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-  ( sleep 1 ) &
-  am_sleep_pid=$!
-fi
-
-rm -f conftest.file
-
-
-
-ac_config_headers="$ac_config_headers src/config.h"
-
-ac_config_files="$ac_config_files src/eccodes_version.h"
-
-ac_config_files="$ac_config_files rpms/eccodes.pc rpms/eccodes.spec rpms/eccodes_f90.pc"
-
-am__api_version='1.13'
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in @%:@((
-  ./ | .// | /[cC]/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-	  if test $ac_prog = install &&
-	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # AIX install.  It has an incompatible calling convention.
-	    :
-	  elif test $ac_prog = install &&
-	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # program-specific install script used by HP pwplus--don't use.
-	    :
-	  else
-	    rm -rf conftest.one conftest.two conftest.dir
-	    echo one > conftest.one
-	    echo two > conftest.two
-	    mkdir conftest.dir
-	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
-	      test -s conftest.one && test -s conftest.two &&
-	      test -s conftest.dir/conftest.one &&
-	      test -s conftest.dir/conftest.two
-	    then
-	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-	      break 3
-	    fi
-	  fi
-	fi
-      done
-    done
-    ;;
-esac
-
-  done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-test "$program_prefix" != NONE &&
-  program_transform_name="s&^&$program_prefix&;$program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
-  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
-# Double any \ or $.
-# By default was `s,x,x', remove it if useless.
-ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
-program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-
-if test x"${MISSING+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-  *)
-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
-  esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --is-lightweight"; then
-  am_missing_run="$MISSING "
-else
-  am_missing_run=
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
-fi
-
-if test x"${install_sh}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-
-# Installed binaries are usually stripped using 'strip' when the user
-# run "make install-strip".  However 'strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the 'STRIP' environment variable to overrule this program.
-if test "$cross_compiling" != no; then
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
-if test -z "$MKDIR_P"; then
-  if ${ac_cv_path_mkdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in mkdir gmkdir; do
-	 for ac_exec_ext in '' $ac_executable_extensions; do
-	   as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
-	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
-	     'mkdir (GNU coreutils) '* | \
-	     'mkdir (coreutils) '* | \
-	     'mkdir (fileutils) '4.1*)
-	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
-	       break 3;;
-	   esac
-	 done
-       done
-  done
-IFS=$as_save_IFS
-
-fi
-
-  test -d ./--version && rmdir ./--version
-  if test "${ac_cv_path_mkdir+set}" = set; then
-    MKDIR_P="$ac_cv_path_mkdir -p"
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for MKDIR_P within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    MKDIR_P="$ac_install_sh -d"
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-	@echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
-
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-	@echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
-
-@%:@ Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then :
-  enableval=$enable_dependency_tracking; 
-fi
-
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-  am__nodep='_no'
-fi
- if test "x$enable_dependency_tracking" != xno; then
-  AMDEP_TRUE=
-  AMDEP_FALSE='#'
-else
-  AMDEP_TRUE='#'
-  AMDEP_FALSE=
-fi
-
-
-@%:@ Check whether --enable-silent-rules was given.
-if test "${enable_silent_rules+set}" = set; then :
-  enableval=$enable_silent_rules; 
-fi
-
-case $enable_silent_rules in @%:@ (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=1;;
-esac
-am_make=${MAKE-make}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
-$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
-if ${am_cv_make_support_nested_variables+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if $as_echo 'TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-	@$(TRUE)
-.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
-$as_echo "$am_cv_make_support_nested_variables" >&6; }
-if test $am_cv_make_support_nested_variables = yes; then
-    AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AM_BACKSLASH='\'
-
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  am__isrc=' -I$(srcdir)'
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-
-
-# Define the identity of the package.
-
- PACKAGE=$PACKAGE_NAME
- VERSION=${PACKAGE_VERSION}
-
-
-# Some tools Automake needs.
-
-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
-
-
-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
-
-
-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
-
-
-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
-
-
-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-
-# For better backward compatibility.  To be removed once Automake 1.9.x
-# dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-mkdir_p='$(MKDIR_P)'
-
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-# Always define AMTAR for backward compatibility.  Yes, it's still used
-# in the wild :-(  We should find a proper way to deprecate it ...
-AMTAR='$${TAR-tar}'
-
-
-# We'll loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar  pax cpio none'
-
-am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
-
-
-
-
-
-depcc="$CC"   am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CC_dependencies_compiler_type+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CC_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-	continue
-      else
-	break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CC_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if 
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
-  am__fastdepCC_TRUE=
-  am__fastdepCC_FALSE='#'
-else
-  am__fastdepCC_TRUE='#'
-  am__fastdepCC_FALSE=
-fi
-
-
-
-
-definition_files_path="${datadir}/eccodes/definitions"
-samples_files_path="${datadir}/eccodes/samples"
-ifs_samples_files_path="${datadir}/eccodes/ifs_samples"
-default_perl_install="${prefix}/perl"
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define ECCODES_MAIN_VERSION $ECCODES_MAIN_VERSION
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define ECCODES_MAJOR_VERSION $ECCODES_MAJOR_VERSION
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define ECCODES_MINOR_VERSION $ECCODES_MINOR_VERSION
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define ECCODES_REVISION_VERSION $ECCODES_REVISION_VERSION
-_ACEOF
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define ECCODES_CURRENT $ECCODES_CURRENT
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define ECCODES_REVISION $ECCODES_REVISION
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define ECCODES_AGE $ECCODES_AGE
-_ACEOF
-
-
-
-
-
-PERLDIR=perl
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in xlc_r xlc gcc cc pgcc
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in xlc_r xlc gcc cc pgcc
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-  
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@ifdef __STDC__
-@%:@ include <limits.h>
-@%:@else
-@%:@ include <assert.h>
-@%:@endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-  
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@ifdef __STDC__
-@%:@ include <limits.h>
-@%:@else
-@%:@ include <assert.h>
-@%:@endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-	@echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-for ac_prog in 'bison -y' byacc
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_YACC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$YACC"; then
-  ac_cv_prog_YACC="$YACC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_YACC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-YACC=$ac_cv_prog_YACC
-if test -n "$YACC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5
-$as_echo "$YACC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$YACC" && break
-done
-test -n "$YACC" || YACC="yacc"
-
-for ac_prog in flex lex
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LEX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$LEX"; then
-  ac_cv_prog_LEX="$LEX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_LEX="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-LEX=$ac_cv_prog_LEX
-if test -n "$LEX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5
-$as_echo "$LEX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$LEX" && break
-done
-test -n "$LEX" || LEX=":"
-
-if test "x$LEX" != "x:"; then
-  cat >conftest.l <<_ACEOF
-%%
-a { ECHO; }
-b { REJECT; }
-c { yymore (); }
-d { yyless (1); }
-e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument.  */
-    yyless ((input () != 0)); }
-f { unput (yytext[0]); }
-. { BEGIN INITIAL; }
-%%
-#ifdef YYTEXT_POINTER
-extern char *yytext;
-#endif
-int
-main (void)
-{
-  return ! yylex () + ! yywrap ();
-}
-_ACEOF
-{ { ac_try="$LEX conftest.l"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$LEX conftest.l") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5
-$as_echo_n "checking lex output file root... " >&6; }
-if ${ac_cv_prog_lex_root+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  
-if test -f lex.yy.c; then
-  ac_cv_prog_lex_root=lex.yy
-elif test -f lexyy.c; then
-  ac_cv_prog_lex_root=lexyy
-else
-  as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5
-$as_echo "$ac_cv_prog_lex_root" >&6; }
-LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
-
-if test -z "${LEXLIB+set}"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5
-$as_echo_n "checking lex library... " >&6; }
-if ${ac_cv_lib_lex+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  
-    ac_save_LIBS=$LIBS
-    ac_cv_lib_lex='none needed'
-    for ac_lib in '' -lfl -ll; do
-      LIBS="$ac_lib $ac_save_LIBS"
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-`cat $LEX_OUTPUT_ROOT.c`
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_lex=$ac_lib
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-      test "$ac_cv_lib_lex" != 'none needed' && break
-    done
-    LIBS=$ac_save_LIBS
-  
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5
-$as_echo "$ac_cv_lib_lex" >&6; }
-  test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5
-$as_echo_n "checking whether yytext is a pointer... " >&6; }
-if ${ac_cv_prog_lex_yytext_pointer+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  # POSIX says lex can declare yytext either as a pointer or an array; the
-# default is implementation-dependent.  Figure out which it is, since
-# not all implementations provide the %pointer and %array declarations.
-ac_cv_prog_lex_yytext_pointer=no
-ac_save_LIBS=$LIBS
-LIBS="$LEXLIB $ac_save_LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-  #define YYTEXT_POINTER 1
-`cat $LEX_OUTPUT_ROOT.c`
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_prog_lex_yytext_pointer=yes
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_save_LIBS
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5
-$as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; }
-if test $ac_cv_prog_lex_yytext_pointer = yes; then
-  
-$as_echo "@%:@define YYTEXT_POINTER 1" >>confdefs.h
-
-fi
-rm -f conftest.l $LEX_OUTPUT_ROOT.c
-
-fi
-ac_ext=f
-ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
-ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_f77_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in pgf90 pgf77 xlf gfortran f77 g77 f90 ifort
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$F77"; then
-  ac_cv_prog_F77="$F77" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-F77=$ac_cv_prog_F77
-if test -n "$F77"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $F77" >&5
-$as_echo "$F77" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$F77" && break
-  done
-fi
-if test -z "$F77"; then
-  ac_ct_F77=$F77
-  for ac_prog in pgf90 pgf77 xlf gfortran f77 g77 f90 ifort
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_F77"; then
-  ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_F77="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_F77=$ac_cv_prog_ac_ct_F77
-if test -n "$ac_ct_F77"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_F77" >&5
-$as_echo "$ac_ct_F77" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_F77" && break
-done
-
-  if test "x$ac_ct_F77" = x; then
-    F77=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    F77=$ac_ct_F77
-  fi
-fi
-
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-rm -f a.out
-
-# If we don't use `.F' as extension, the preprocessor is not run on the
-# input file.  (Note that this only needs to work for GNU compilers.)
-ac_save_ext=$ac_ext
-ac_ext=F
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran 77 compiler" >&5
-$as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; }
-if ${ac_cv_f77_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-#ifndef __GNUC__
-       choke me
-#endif
-
-      end
-_ACEOF
-if ac_fn_f77_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_f77_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_compiler_gnu" >&5
-$as_echo "$ac_cv_f77_compiler_gnu" >&6; }
-ac_ext=$ac_save_ext
-ac_test_FFLAGS=${FFLAGS+set}
-ac_save_FFLAGS=$FFLAGS
-FFLAGS=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $F77 accepts -g" >&5
-$as_echo_n "checking whether $F77 accepts -g... " >&6; }
-if ${ac_cv_prog_f77_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  FFLAGS=-g
-cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_f77_try_compile "$LINENO"; then :
-  ac_cv_prog_f77_g=yes
-else
-  ac_cv_prog_f77_g=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_g" >&5
-$as_echo "$ac_cv_prog_f77_g" >&6; }
-if test "$ac_test_FFLAGS" = set; then
-  FFLAGS=$ac_save_FFLAGS
-elif test $ac_cv_prog_f77_g = yes; then
-  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
-    FFLAGS="-g -O2"
-  else
-    FFLAGS="-g"
-  fi
-else
-  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
-    FFLAGS="-O2"
-  else
-    FFLAGS=
-  fi
-fi
-
-if test $ac_compiler_gnu = yes; then
-  G77=yes
-else
-  G77=
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-      ac_ext=f
-ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
-ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_f77_compiler_gnu
-
-if test -z "$F77" || test "X$F77" = "Xno"; then
-  _lt_disable_F77=yes
-fi
-
-archive_cmds_need_lc_F77=no
-allow_undefined_flag_F77=
-always_export_symbols_F77=no
-archive_expsym_cmds_F77=
-export_dynamic_flag_spec_F77=
-hardcode_direct_F77=no
-hardcode_direct_absolute_F77=no
-hardcode_libdir_flag_spec_F77=
-hardcode_libdir_separator_F77=
-hardcode_minus_L_F77=no
-hardcode_automatic_F77=no
-inherit_rpath_F77=no
-module_cmds_F77=
-module_expsym_cmds_F77=
-link_all_deplibs_F77=unknown
-old_archive_cmds_F77=$old_archive_cmds
-reload_flag_F77=$reload_flag
-reload_cmds_F77=$reload_cmds
-no_undefined_flag_F77=
-whole_archive_flag_spec_F77=
-enable_shared_with_static_runtimes_F77=no
-
-# Source file extension for f77 test sources.
-ac_ext=f
-
-# Object file extension for compiled f77 test sources.
-objext=o
-objext_F77=$objext
-
-# No sense in running all these tests if we already determined that
-# the F77 compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_F77" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-  # save warnings/boilerplate of simple test code
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  lt_save_CFLAGS=$CFLAGS
-  CC=${F77-"f77"}
-  CFLAGS=$FFLAGS
-  compiler=$CC
-  compiler_F77=$CC
-  for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-
-  GCC=$G77
-  if test -n "$compiler"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[4-9]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-    GCC_F77="$G77"
-    LD_F77="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    lt_prog_compiler_wl_F77=
-lt_prog_compiler_pic_F77=
-lt_prog_compiler_static_F77=
-
-
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl_F77='-Wl,'
-    lt_prog_compiler_static_F77='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_F77='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic_F77='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic_F77='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static_F77=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_F77='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared_F77=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_F77='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic_F77=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      lt_prog_compiler_pic_F77='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      lt_prog_compiler_wl_F77='-Xlinker '
-      if test -n "$lt_prog_compiler_pic_F77"; then
-        lt_prog_compiler_pic_F77="-Xcompiler $lt_prog_compiler_pic_F77"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_F77='-Bstatic'
-      else
-	lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_F77='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static_F77='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='-KPIC'
-	lt_prog_compiler_static_F77='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='-fPIC'
-	lt_prog_compiler_static_F77='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='--shared'
-	lt_prog_compiler_static_F77='--static'
-	;;
-      nagfor*)
-	# NAG Fortran compiler
-	lt_prog_compiler_wl_F77='-Wl,-Wl,,'
-	lt_prog_compiler_pic_F77='-PIC'
-	lt_prog_compiler_static_F77='-Bstatic'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='-fpic'
-	lt_prog_compiler_static_F77='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl_F77='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static_F77='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='-qpic'
-	lt_prog_compiler_static_F77='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic_F77='-KPIC'
-	  lt_prog_compiler_static_F77='-Bstatic'
-	  lt_prog_compiler_wl_F77=''
-	  ;;
-	*Sun\ F* | *Sun*Fortran*)
-	  lt_prog_compiler_pic_F77='-KPIC'
-	  lt_prog_compiler_static_F77='-Bstatic'
-	  lt_prog_compiler_wl_F77='-Qoption ld '
-	  ;;
-	*Sun\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic_F77='-KPIC'
-	  lt_prog_compiler_static_F77='-Bstatic'
-	  lt_prog_compiler_wl_F77='-Wl,'
-	  ;;
-        *Intel*\ [CF]*Compiler*)
-	  lt_prog_compiler_wl_F77='-Wl,'
-	  lt_prog_compiler_pic_F77='-fPIC'
-	  lt_prog_compiler_static_F77='-static'
-	  ;;
-	*Portland\ Group*)
-	  lt_prog_compiler_wl_F77='-Wl,'
-	  lt_prog_compiler_pic_F77='-fpic'
-	  lt_prog_compiler_static_F77='-Bstatic'
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_F77='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static_F77='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static_F77='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-	lt_prog_compiler_wl_F77='-Qoption ld ';;
-      *)
-	lt_prog_compiler_wl_F77='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl_F77='-Qoption ld '
-      lt_prog_compiler_pic_F77='-PIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	lt_prog_compiler_pic_F77='-Kconform_pic'
-	lt_prog_compiler_static_F77='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      lt_prog_compiler_can_build_shared_F77=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic_F77='-pic'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared_F77=no
-      ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic_F77=
-    ;;
-  *)
-    lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77@&t@"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_F77=$lt_prog_compiler_pic_F77
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_F77" >&5
-$as_echo "$lt_cv_prog_compiler_pic_F77" >&6; }
-lt_prog_compiler_pic_F77=$lt_cv_prog_compiler_pic_F77
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic_F77"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works_F77=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_F77@&t@"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works_F77=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_F77" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works_F77" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works_F77" = xyes; then
-    case $lt_prog_compiler_pic_F77 in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
-     esac
-else
-    lt_prog_compiler_pic_F77=
-     lt_prog_compiler_can_build_shared_F77=no
-fi
-
-fi
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works_F77=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works_F77=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works_F77=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_F77" >&5
-$as_echo "$lt_cv_prog_compiler_static_works_F77" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then
-    :
-else
-    lt_prog_compiler_static_F77=
-fi
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_F77=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_F77=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_F77" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; }
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_F77=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_F77=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_F77" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  runpath_var=
-  allow_undefined_flag_F77=
-  always_export_symbols_F77=no
-  archive_cmds_F77=
-  archive_expsym_cmds_F77=
-  compiler_needs_object_F77=no
-  enable_shared_with_static_runtimes_F77=no
-  export_dynamic_flag_spec_F77=
-  export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic_F77=no
-  hardcode_direct_F77=no
-  hardcode_direct_absolute_F77=no
-  hardcode_libdir_flag_spec_F77=
-  hardcode_libdir_separator_F77=
-  hardcode_minus_L_F77=no
-  hardcode_shlibpath_var_F77=unsupported
-  inherit_rpath_F77=no
-  link_all_deplibs_F77=unknown
-  module_cmds_F77=
-  module_expsym_cmds_F77=
-  old_archive_from_new_cmds_F77=
-  old_archive_from_expsyms_cmds_F77=
-  thread_safe_flag_spec_F77=
-  whole_archive_flag_spec_F77=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms_F77=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms_F77='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  esac
-
-  ld_shlibs_F77=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
-    case $host_os in
-      aix*)
-	# The AIX port of GNU ld has always aspired to compatibility
-	# with the native linker.  However, as the warning in the GNU ld
-	# block says, versions before 2.19.5* couldn't really create working
-	# shared libraries, regardless of the interface used.
-	case `$LD -v 2>&1` in
-	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
-	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
-	  *)
-	    lt_use_gnu_ld_interface=yes
-	    ;;
-	esac
-	;;
-      *)
-	lt_use_gnu_ld_interface=yes
-	;;
-    esac
-  fi
-
-  if test "$lt_use_gnu_ld_interface" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec_F77='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      whole_archive_flag_spec_F77=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	ld_shlibs_F77=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds_F77=''
-        ;;
-      m68k)
-            archive_cmds_F77='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec_F77='-L$libdir'
-            hardcode_minus_L_F77=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	allow_undefined_flag_F77=unsupported
-	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      export_dynamic_flag_spec_F77='${wl}--export-all-symbols'
-      allow_undefined_flag_F77=unsupported
-      always_export_symbols_F77=no
-      enable_shared_with_static_runtimes_F77=yes
-      export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms_F77='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-
-    haiku*)
-      archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      link_all_deplibs_F77=yes
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct_F77=no
-      hardcode_shlibpath_var_F77=no
-      hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec_F77='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=' $pic_flag'
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95* | pgfortran*)
-					# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  whole_archive_flag_spec_F77=
-	  tmp_sharedflag='--shared' ;;
-	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	nvcc*)	# Cuda Compiler Driver 2.2
-	  whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object_F77=yes
-	  ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object_F77=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          archive_expsym_cmds_F77='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf* | bgf* | bgxlf* | mpixlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  whole_archive_flag_spec_F77='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-	  archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    archive_expsym_cmds_F77='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        ld_shlibs_F77=no
-      fi
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	ld_shlibs_F77=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-	ld_shlibs_F77=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-	    archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    ld_shlibs_F77=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-    esac
-
-    if test "$ld_shlibs_F77" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec_F77=
-      export_dynamic_flag_spec_F77=
-      whole_archive_flag_spec_F77=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag_F77=unsupported
-      always_export_symbols_F77=yes
-      archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L_F77=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	hardcode_direct_F77=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	# Also, AIX nm treats weak defined symbols like other global
-	# defined symbols, whereas GNU nm marks them as "W".
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds_F77=''
-      hardcode_direct_F77=yes
-      hardcode_direct_absolute_F77=yes
-      hardcode_libdir_separator_F77=':'
-      link_all_deplibs_F77=yes
-      file_list_spec_F77='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[012]|aix4.[012].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  hardcode_direct_F77=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  hardcode_minus_L_F77=yes
-	  hardcode_libdir_flag_spec_F77='-L$libdir'
-	  hardcode_libdir_separator_F77=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      export_dynamic_flag_spec_F77='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols_F77=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	allow_undefined_flag_F77='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_f77_try_link "$LINENO"; then :
-  
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__F77=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__F77"; then
-    lt_cv_aix_libpath__F77=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__F77"; then
-    lt_cv_aix_libpath__F77="/usr/lib:/lib"
-  fi
-  
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__F77
-fi
-
-        hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds_F77='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
-	  allow_undefined_flag_F77="-z nodefs"
-	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_f77_try_link "$LINENO"; then :
-  
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__F77=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__F77"; then
-    lt_cv_aix_libpath__F77=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__F77"; then
-    lt_cv_aix_libpath__F77="/usr/lib:/lib"
-  fi
-  
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__F77
-fi
-
-	 hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag_F77=' ${wl}-bernotok'
-	  allow_undefined_flag_F77=' ${wl}-berok'
-	  if test "$with_gnu_ld" = yes; then
-	    # We only use this code for GNU lds that support --whole-archive.
-	    whole_archive_flag_spec_F77='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	  else
-	    # Exported symbols can be pulled into shared objects from archives
-	    whole_archive_flag_spec_F77='$convenience'
-	  fi
-	  archive_cmds_need_lc_F77=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds_F77=''
-        ;;
-      m68k)
-            archive_cmds_F77='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec_F77='-L$libdir'
-            hardcode_minus_L_F77=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec_F77=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-	# Native MSVC
-	hardcode_libdir_flag_spec_F77=' '
-	allow_undefined_flag_F77=unsupported
-	always_export_symbols_F77=yes
-	file_list_spec_F77='@'
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds_F77='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	  else
-	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	  fi~
-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	  linknames='
-	# The linker will not automatically build a static lib if we build a DLL.
-	# _LT_TAGVAR(old_archive_from_new_cmds, F77)='true'
-	enable_shared_with_static_runtimes_F77=yes
-	exclude_expsyms_F77='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-	export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-	# Don't use ranlib
-	old_postinstall_cmds_F77='chmod 644 $oldlib'
-	postlink_cmds_F77='lt_outputfile="@OUTPUT@"~
-	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-	  case $lt_outputfile in
-	    *.exe|*.EXE) ;;
-	    *)
-	      lt_outputfile="$lt_outputfile.exe"
-	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-	      ;;
-	  esac~
-	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	    $RM "$lt_outputfile.manifest";
-	  fi'
-	;;
-      *)
-	# Assume MSVC wrapper
-	hardcode_libdir_flag_spec_F77=' '
-	allow_undefined_flag_F77=unsupported
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-	# The linker will automatically build a .lib file if we build a DLL.
-	old_archive_from_new_cmds_F77='true'
-	# FIXME: Should let the user specify the lib program.
-	old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs'
-	enable_shared_with_static_runtimes_F77=yes
-	;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-      
-  
-  archive_cmds_need_lc_F77=no
-  hardcode_direct_F77=no
-  hardcode_automatic_F77=yes
-  hardcode_shlibpath_var_F77=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec_F77='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-    compiler_needs_object_F77=yes
-  else
-    whole_archive_flag_spec_F77=''
-  fi
-  link_all_deplibs_F77=yes
-  allow_undefined_flag_F77="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds_F77="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds_F77="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds_F77="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-    
-  else
-  ld_shlibs_F77=no
-  fi
-
-      ;;
-
-    dgux*)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_F77=yes
-      hardcode_minus_L_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds_F77='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	archive_cmds_F77='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
-      hardcode_direct_F77=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L_F77=yes
-      export_dynamic_flag_spec_F77='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	archive_cmds_F77='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_F77=:
-	hardcode_direct_F77=yes
-	hardcode_direct_absolute_F77=yes
-	export_dynamic_flag_spec_F77='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	hardcode_minus_L_F77=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_F77='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds_F77='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_F77=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  hardcode_direct_F77=no
-	  hardcode_shlibpath_var_F77=no
-	  ;;
-	*)
-	  hardcode_direct_F77=yes
-	  hardcode_direct_absolute_F77=yes
-	  export_dynamic_flag_spec_F77='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L_F77=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-	# This should be the same for all languages, so no per-tag cache variable.
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_LDFLAGS="$LDFLAGS"
-	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-	   cat > conftest.$ac_ext <<_ACEOF
-
-      subroutine foo
-      end
-_ACEOF
-if ac_fn_f77_try_link "$LINENO"; then :
-  lt_cv_irix_exported_symbol=yes
-else
-  lt_cv_irix_exported_symbol=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-           LDFLAGS="$save_LDFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-	if test "$lt_cv_irix_exported_symbol" = yes; then
-          archive_expsym_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-	fi
-      else
-	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc_F77='no'
-      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
-      inherit_rpath_F77=yes
-      link_all_deplibs_F77=yes
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    newsos6)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_F77=yes
-      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	hardcode_direct_F77=yes
-	hardcode_shlibpath_var_F77=no
-	hardcode_direct_absolute_F77=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec_F77='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec_F77='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_minus_L_F77=yes
-      allow_undefined_flag_F77=unsupported
-      archive_cmds_F77='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	allow_undefined_flag_F77=' -expect_unresolved \*'
-	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc_F77='no'
-      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_F77='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      else
-	allow_undefined_flag_F77=' -expect_unresolved \*'
-	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	hardcode_libdir_flag_spec_F77='-rpath $libdir'
-      fi
-      archive_cmds_need_lc_F77='no'
-      hardcode_libdir_separator_F77=:
-      ;;
-
-    solaris*)
-      no_undefined_flag_F77=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds_F77='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  archive_expsym_cmds_F77='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  archive_cmds_F77='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_F77='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_shlibpath_var_F77=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      link_all_deplibs_F77=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_direct_F77=yes
-      hardcode_minus_L_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_F77=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  reload_cmds_F77='$CC -r -o $output$reload_objs'
-	  hardcode_direct_F77=no
-        ;;
-	motorola)
-	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var_F77=no
-      export_dynamic_flag_spec_F77='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	hardcode_shlibpath_var_F77=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	ld_shlibs_F77=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag_F77='${wl}-z,text'
-      archive_cmds_need_lc_F77=no
-      hardcode_shlibpath_var_F77=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag_F77='${wl}-z,text'
-      allow_undefined_flag_F77='${wl}-z,nodefs'
-      archive_cmds_need_lc_F77=no
-      hardcode_shlibpath_var_F77=no
-      hardcode_libdir_flag_spec_F77='${wl}-R,$libdir'
-      hardcode_libdir_separator_F77=':'
-      link_all_deplibs_F77=yes
-      export_dynamic_flag_spec_F77='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    *)
-      ld_shlibs_F77=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	export_dynamic_flag_spec_F77='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_F77" >&5
-$as_echo "$ld_shlibs_F77" >&6; }
-test "$ld_shlibs_F77" = no && can_build_shared=no
-
-with_gnu_ld_F77=$with_gnu_ld
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc_F77" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc_F77=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds_F77 in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$lt_prog_compiler_wl_F77
-	  pic_flag=$lt_prog_compiler_pic_F77
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag_F77
-	  allow_undefined_flag_F77=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_F77 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds_F77 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc_F77=no
-	  else
-	    lt_cv_archive_cmds_need_lc_F77=yes
-	  fi
-	  allow_undefined_flag_F77=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-	
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_F77" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc_F77" >&6; }
-      archive_cmds_need_lc_F77=$lt_cv_archive_cmds_need_lc_F77
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux # correct to gnu/linux during the next big refactor
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_F77\"; \
-	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_F77\""
-    cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_f77_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-    
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action_F77=
-if test -n "$hardcode_libdir_flag_spec_F77" ||
-   test -n "$runpath_var_F77" ||
-   test "X$hardcode_automatic_F77" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct_F77" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
-     test "$hardcode_minus_L_F77" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action_F77=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action_F77=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_F77=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_F77" >&5
-$as_echo "$hardcode_action_F77" >&6; }
-
-if test "$hardcode_action_F77" = relink ||
-   test "$inherit_rpath_F77" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-    
-
-
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC="$lt_save_CC"
-  CFLAGS="$lt_save_CFLAGS"
-fi # test "$_lt_disable_F77" != yes
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
- 
-ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in pgf90 xlf90 gfortran f90 ifort
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$FC"; then
-  ac_cv_prog_FC="$FC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_FC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-FC=$ac_cv_prog_FC
-if test -n "$FC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FC" >&5
-$as_echo "$FC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$FC" && break
-  done
-fi
-if test -z "$FC"; then
-  ac_ct_FC=$FC
-  for ac_prog in pgf90 xlf90 gfortran f90 ifort
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_FC"; then
-  ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_FC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_FC=$ac_cv_prog_ac_ct_FC
-if test -n "$ac_ct_FC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FC" >&5
-$as_echo "$ac_ct_FC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_FC" && break
-done
-
-  if test "x$ac_ct_FC" = x; then
-    FC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    FC=$ac_ct_FC
-  fi
-fi
-
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-rm -f a.out
-
-# If we don't use `.F' as extension, the preprocessor is not run on the
-# input file.  (Note that this only needs to work for GNU compilers.)
-ac_save_ext=$ac_ext
-ac_ext=F
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran compiler" >&5
-$as_echo_n "checking whether we are using the GNU Fortran compiler... " >&6; }
-if ${ac_cv_fc_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-#ifndef __GNUC__
-       choke me
-#endif
-
-      end
-_ACEOF
-if ac_fn_fc_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_fc_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_compiler_gnu" >&5
-$as_echo "$ac_cv_fc_compiler_gnu" >&6; }
-ac_ext=$ac_save_ext
-ac_test_FCFLAGS=${FCFLAGS+set}
-ac_save_FCFLAGS=$FCFLAGS
-FCFLAGS=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $FC accepts -g" >&5
-$as_echo_n "checking whether $FC accepts -g... " >&6; }
-if ${ac_cv_prog_fc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  FCFLAGS=-g
-cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_fc_try_compile "$LINENO"; then :
-  ac_cv_prog_fc_g=yes
-else
-  ac_cv_prog_fc_g=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_g" >&5
-$as_echo "$ac_cv_prog_fc_g" >&6; }
-if test "$ac_test_FCFLAGS" = set; then
-  FCFLAGS=$ac_save_FCFLAGS
-elif test $ac_cv_prog_fc_g = yes; then
-  if test "x$ac_cv_fc_compiler_gnu" = xyes; then
-    FCFLAGS="-g -O2"
-  else
-    FCFLAGS="-g"
-  fi
-else
-  if test "x$ac_cv_fc_compiler_gnu" = xyes; then
-    FCFLAGS="-O2"
-  else
-    FCFLAGS=
-  fi
-fi
-
-if test $ac_compiler_gnu = yes; then
-  GFC=yes
-else
-  GFC=
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-func_stripname_cnf ()
-{
-  case ${2} in
-  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-  esac
-} # func_stripname_cnf
-
-
-      ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-
-if test -z "$FC" || test "X$FC" = "Xno"; then
-  _lt_disable_FC=yes
-fi
-
-archive_cmds_need_lc_FC=no
-allow_undefined_flag_FC=
-always_export_symbols_FC=no
-archive_expsym_cmds_FC=
-export_dynamic_flag_spec_FC=
-hardcode_direct_FC=no
-hardcode_direct_absolute_FC=no
-hardcode_libdir_flag_spec_FC=
-hardcode_libdir_separator_FC=
-hardcode_minus_L_FC=no
-hardcode_automatic_FC=no
-inherit_rpath_FC=no
-module_cmds_FC=
-module_expsym_cmds_FC=
-link_all_deplibs_FC=unknown
-old_archive_cmds_FC=$old_archive_cmds
-reload_flag_FC=$reload_flag
-reload_cmds_FC=$reload_cmds
-no_undefined_flag_FC=
-whole_archive_flag_spec_FC=
-enable_shared_with_static_runtimes_FC=no
-
-# Source file extension for fc test sources.
-ac_ext=${ac_fc_srcext-f}
-
-# Object file extension for compiled fc test sources.
-objext=o
-objext_FC=$objext
-
-# No sense in running all these tests if we already determined that
-# the FC compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_FC" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-  # save warnings/boilerplate of simple test code
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  lt_save_CFLAGS=$CFLAGS
-  CC=${FC-"f95"}
-  CFLAGS=$FCFLAGS
-  compiler=$CC
-  GCC=$ac_cv_fc_compiler_gnu
-
-  compiler_FC=$CC
-  for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-
-
-  if test -n "$compiler"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[4-9]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-    GCC_FC="$ac_cv_fc_compiler_gnu"
-    LD_FC="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    # Dependencies to place before and after the object being linked:
-predep_objects_FC=
-postdep_objects_FC=
-predeps_FC=
-postdeps_FC=
-compiler_lib_search_path_FC=
-
-cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer a
-      a=0
-      return
-      end
-_LT_EOF
-
-
-_lt_libdeps_save_CFLAGS=$CFLAGS
-case "$CC $CFLAGS " in #(
-*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
-*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
-*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
-esac
-
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  for p in `eval "$output_verbose_link_cmd"`; do
-    case ${prev}${p} in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test $p = "-L" ||
-          test $p = "-R"; then
-	 prev=$p
-	 continue
-       fi
-
-       # Expand the sysroot to ease extracting the directories later.
-       if test -z "$prev"; then
-         case $p in
-         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
-         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
-         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
-         esac
-       fi
-       case $p in
-       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
-       esac
-       if test "$pre_test_object_deps_done" = no; then
-	 case ${prev} in
-	 -L | -R)
-	   # Internal compiler library paths should come after those
-	   # provided the user.  The postdeps already come after the
-	   # user supplied libs so there is no need to process them.
-	   if test -z "$compiler_lib_search_path_FC"; then
-	     compiler_lib_search_path_FC="${prev}${p}"
-	   else
-	     compiler_lib_search_path_FC="${compiler_lib_search_path_FC} ${prev}${p}"
-	   fi
-	   ;;
-	 # The "-l" case would never come before the object being
-	 # linked, so don't bother handling this case.
-	 esac
-       else
-	 if test -z "$postdeps_FC"; then
-	   postdeps_FC="${prev}${p}"
-	 else
-	   postdeps_FC="${postdeps_FC} ${prev}${p}"
-	 fi
-       fi
-       prev=
-       ;;
-
-    *.lto.$objext) ;; # Ignore GCC LTO objects
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-	 pre_test_object_deps_done=yes
-	 continue
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 if test -z "$predep_objects_FC"; then
-	   predep_objects_FC="$p"
-	 else
-	   predep_objects_FC="$predep_objects_FC $p"
-	 fi
-       else
-	 if test -z "$postdep_objects_FC"; then
-	   postdep_objects_FC="$p"
-	 else
-	   postdep_objects_FC="$postdep_objects_FC $p"
-	 fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling FC test program"
-fi
-
-$RM -f confest.$objext
-CFLAGS=$_lt_libdeps_save_CFLAGS
-
-# PORTME: override above test on systems where it is broken
-
-
-case " $postdeps_FC " in
-*" -lc "*) archive_cmds_need_lc_FC=no ;;
-esac
- compiler_lib_search_dirs_FC=
-if test -n "${compiler_lib_search_path_FC}"; then
- compiler_lib_search_dirs_FC=`echo " ${compiler_lib_search_path_FC}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
-fi
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    
-    
-    
-
-
-    lt_prog_compiler_wl_FC=
-lt_prog_compiler_pic_FC=
-lt_prog_compiler_static_FC=
-
-
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl_FC='-Wl,'
-    lt_prog_compiler_static_FC='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_FC='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic_FC='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            lt_prog_compiler_pic_FC='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic_FC='-DDLL_EXPORT'
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic_FC='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static_FC=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_FC='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared_FC=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_FC='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic_FC=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      lt_prog_compiler_pic_FC='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      lt_prog_compiler_wl_FC='-Xlinker '
-      if test -n "$lt_prog_compiler_pic_FC"; then
-        lt_prog_compiler_pic_FC="-Xcompiler $lt_prog_compiler_pic_FC"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_FC='-Bstatic'
-      else
-	lt_prog_compiler_static_FC='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic_FC='-DDLL_EXPORT'
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_FC='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static_FC='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static_FC='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='-KPIC'
-	lt_prog_compiler_static_FC='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='-fPIC'
-	lt_prog_compiler_static_FC='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='--shared'
-	lt_prog_compiler_static_FC='--static'
-	;;
-      nagfor*)
-	# NAG Fortran compiler
-	lt_prog_compiler_wl_FC='-Wl,-Wl,,'
-	lt_prog_compiler_pic_FC='-PIC'
-	lt_prog_compiler_static_FC='-Bstatic'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='-fpic'
-	lt_prog_compiler_static_FC='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl_FC='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static_FC='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='-qpic'
-	lt_prog_compiler_static_FC='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic_FC='-KPIC'
-	  lt_prog_compiler_static_FC='-Bstatic'
-	  lt_prog_compiler_wl_FC=''
-	  ;;
-	*Sun\ F* | *Sun*Fortran*)
-	  lt_prog_compiler_pic_FC='-KPIC'
-	  lt_prog_compiler_static_FC='-Bstatic'
-	  lt_prog_compiler_wl_FC='-Qoption ld '
-	  ;;
-	*Sun\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic_FC='-KPIC'
-	  lt_prog_compiler_static_FC='-Bstatic'
-	  lt_prog_compiler_wl_FC='-Wl,'
-	  ;;
-        *Intel*\ [CF]*Compiler*)
-	  lt_prog_compiler_wl_FC='-Wl,'
-	  lt_prog_compiler_pic_FC='-fPIC'
-	  lt_prog_compiler_static_FC='-static'
-	  ;;
-	*Portland\ Group*)
-	  lt_prog_compiler_wl_FC='-Wl,'
-	  lt_prog_compiler_pic_FC='-fpic'
-	  lt_prog_compiler_static_FC='-Bstatic'
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic_FC='-KPIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_FC='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static_FC='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static_FC='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic_FC='-KPIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-	lt_prog_compiler_wl_FC='-Qoption ld ';;
-      *)
-	lt_prog_compiler_wl_FC='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl_FC='-Qoption ld '
-      lt_prog_compiler_pic_FC='-PIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      lt_prog_compiler_pic_FC='-KPIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	lt_prog_compiler_pic_FC='-Kconform_pic'
-	lt_prog_compiler_static_FC='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      lt_prog_compiler_pic_FC='-KPIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      lt_prog_compiler_can_build_shared_FC=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic_FC='-pic'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared_FC=no
-      ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic_FC=
-    ;;
-  *)
-    lt_prog_compiler_pic_FC="$lt_prog_compiler_pic_FC@&t@"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_FC=$lt_prog_compiler_pic_FC
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_FC" >&5
-$as_echo "$lt_cv_prog_compiler_pic_FC" >&6; }
-lt_prog_compiler_pic_FC=$lt_cv_prog_compiler_pic_FC
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic_FC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_FC works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_FC works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works_FC=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_FC@&t@"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works_FC=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_FC" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works_FC" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works_FC" = xyes; then
-    case $lt_prog_compiler_pic_FC in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic_FC=" $lt_prog_compiler_pic_FC" ;;
-     esac
-else
-    lt_prog_compiler_pic_FC=
-     lt_prog_compiler_can_build_shared_FC=no
-fi
-
-fi
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl_FC eval lt_tmp_static_flag=\"$lt_prog_compiler_static_FC\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works_FC=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works_FC=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works_FC=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_FC" >&5
-$as_echo "$lt_cv_prog_compiler_static_works_FC" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works_FC" = xyes; then
-    :
-else
-    lt_prog_compiler_static_FC=
-fi
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_FC=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_FC=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_FC" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_FC" >&6; }
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_FC=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_FC=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_FC" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_FC" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_FC" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  runpath_var=
-  allow_undefined_flag_FC=
-  always_export_symbols_FC=no
-  archive_cmds_FC=
-  archive_expsym_cmds_FC=
-  compiler_needs_object_FC=no
-  enable_shared_with_static_runtimes_FC=no
-  export_dynamic_flag_spec_FC=
-  export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic_FC=no
-  hardcode_direct_FC=no
-  hardcode_direct_absolute_FC=no
-  hardcode_libdir_flag_spec_FC=
-  hardcode_libdir_separator_FC=
-  hardcode_minus_L_FC=no
-  hardcode_shlibpath_var_FC=unsupported
-  inherit_rpath_FC=no
-  link_all_deplibs_FC=unknown
-  module_cmds_FC=
-  module_expsym_cmds_FC=
-  old_archive_from_new_cmds_FC=
-  old_archive_from_expsyms_cmds_FC=
-  thread_safe_flag_spec_FC=
-  whole_archive_flag_spec_FC=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms_FC=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms_FC='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  esac
-
-  ld_shlibs_FC=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
-    case $host_os in
-      aix*)
-	# The AIX port of GNU ld has always aspired to compatibility
-	# with the native linker.  However, as the warning in the GNU ld
-	# block says, versions before 2.19.5* couldn't really create working
-	# shared libraries, regardless of the interface used.
-	case `$LD -v 2>&1` in
-	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
-	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
-	  *)
-	    lt_use_gnu_ld_interface=yes
-	    ;;
-	esac
-	;;
-      *)
-	lt_use_gnu_ld_interface=yes
-	;;
-    esac
-  fi
-
-  if test "$lt_use_gnu_ld_interface" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec_FC='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec_FC="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      whole_archive_flag_spec_FC=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	ld_shlibs_FC=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds_FC=''
-        ;;
-      m68k)
-            archive_cmds_FC='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec_FC='-L$libdir'
-            hardcode_minus_L_FC=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	allow_undefined_flag_FC=unsupported
-	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds_FC='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, FC) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      export_dynamic_flag_spec_FC='${wl}--export-all-symbols'
-      allow_undefined_flag_FC=unsupported
-      always_export_symbols_FC=no
-      enable_shared_with_static_runtimes_FC=yes
-      export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms_FC='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds_FC='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-
-    haiku*)
-      archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      link_all_deplibs_FC=yes
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct_FC=no
-      hardcode_shlibpath_var_FC=no
-      hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec_FC='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds_FC='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=' $pic_flag'
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95* | pgfortran*)
-					# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  whole_archive_flag_spec_FC=
-	  tmp_sharedflag='--shared' ;;
-	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	nvcc*)	# Cuda Compiler Driver 2.2
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object_FC=yes
-	  ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object_FC=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	archive_cmds_FC='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf* | bgf* | bgxlf* | mpixlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  whole_archive_flag_spec_FC='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-	  archive_cmds_FC='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        ld_shlibs_FC=no
-      fi
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds_FC='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	ld_shlibs_FC=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-	ld_shlibs_FC=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-	    archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    ld_shlibs_FC=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds_FC='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-    esac
-
-    if test "$ld_shlibs_FC" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec_FC=
-      export_dynamic_flag_spec_FC=
-      whole_archive_flag_spec_FC=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag_FC=unsupported
-      always_export_symbols_FC=yes
-      archive_expsym_cmds_FC='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L_FC=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	hardcode_direct_FC=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	# Also, AIX nm treats weak defined symbols like other global
-	# defined symbols, whereas GNU nm marks them as "W".
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  export_symbols_cmds_FC='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  export_symbols_cmds_FC='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds_FC=''
-      hardcode_direct_FC=yes
-      hardcode_direct_absolute_FC=yes
-      hardcode_libdir_separator_FC=':'
-      link_all_deplibs_FC=yes
-      file_list_spec_FC='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[012]|aix4.[012].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  hardcode_direct_FC=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  hardcode_minus_L_FC=yes
-	  hardcode_libdir_flag_spec_FC='-L$libdir'
-	  hardcode_libdir_separator_FC=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      export_dynamic_flag_spec_FC='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols_FC=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	allow_undefined_flag_FC='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_fc_try_link "$LINENO"; then :
-  
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__FC=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__FC"; then
-    lt_cv_aix_libpath__FC=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__FC"; then
-    lt_cv_aix_libpath__FC="/usr/lib:/lib"
-  fi
-  
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__FC
-fi
-
-        hardcode_libdir_flag_spec_FC='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds_FC='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec_FC='${wl}-R $libdir:/usr/lib:/lib'
-	  allow_undefined_flag_FC="-z nodefs"
-	  archive_expsym_cmds_FC="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_fc_try_link "$LINENO"; then :
-  
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__FC=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__FC"; then
-    lt_cv_aix_libpath__FC=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__FC"; then
-    lt_cv_aix_libpath__FC="/usr/lib:/lib"
-  fi
-  
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__FC
-fi
-
-	 hardcode_libdir_flag_spec_FC='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag_FC=' ${wl}-bernotok'
-	  allow_undefined_flag_FC=' ${wl}-berok'
-	  if test "$with_gnu_ld" = yes; then
-	    # We only use this code for GNU lds that support --whole-archive.
-	    whole_archive_flag_spec_FC='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	  else
-	    # Exported symbols can be pulled into shared objects from archives
-	    whole_archive_flag_spec_FC='$convenience'
-	  fi
-	  archive_cmds_need_lc_FC=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds_FC="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds_FC=''
-        ;;
-      m68k)
-            archive_cmds_FC='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec_FC='-L$libdir'
-            hardcode_minus_L_FC=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec_FC=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-	# Native MSVC
-	hardcode_libdir_flag_spec_FC=' '
-	allow_undefined_flag_FC=unsupported
-	always_export_symbols_FC=yes
-	file_list_spec_FC='@'
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds_FC='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	archive_expsym_cmds_FC='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	  else
-	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	  fi~
-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	  linknames='
-	# The linker will not automatically build a static lib if we build a DLL.
-	# _LT_TAGVAR(old_archive_from_new_cmds, FC)='true'
-	enable_shared_with_static_runtimes_FC=yes
-	exclude_expsyms_FC='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-	export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-	# Don't use ranlib
-	old_postinstall_cmds_FC='chmod 644 $oldlib'
-	postlink_cmds_FC='lt_outputfile="@OUTPUT@"~
-	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-	  case $lt_outputfile in
-	    *.exe|*.EXE) ;;
-	    *)
-	      lt_outputfile="$lt_outputfile.exe"
-	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-	      ;;
-	  esac~
-	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	    $RM "$lt_outputfile.manifest";
-	  fi'
-	;;
-      *)
-	# Assume MSVC wrapper
-	hardcode_libdir_flag_spec_FC=' '
-	allow_undefined_flag_FC=unsupported
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds_FC='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-	# The linker will automatically build a .lib file if we build a DLL.
-	old_archive_from_new_cmds_FC='true'
-	# FIXME: Should let the user specify the lib program.
-	old_archive_cmds_FC='lib -OUT:$oldlib$oldobjs$old_deplibs'
-	enable_shared_with_static_runtimes_FC=yes
-	;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-      
-  
-  archive_cmds_need_lc_FC=no
-  hardcode_direct_FC=no
-  hardcode_automatic_FC=yes
-  hardcode_shlibpath_var_FC=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec_FC='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-    compiler_needs_object_FC=yes
-  else
-    whole_archive_flag_spec_FC=''
-  fi
-  link_all_deplibs_FC=yes
-  allow_undefined_flag_FC="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds_FC="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds_FC="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds_FC="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds_FC="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-    
-  else
-  ld_shlibs_FC=no
-  fi
-
-      ;;
-
-    dgux*)
-      archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec_FC='-R$libdir'
-      hardcode_direct_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_FC=yes
-      hardcode_minus_L_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec_FC='-R$libdir'
-      hardcode_direct_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	archive_cmds_FC='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator_FC=:
-      hardcode_direct_FC=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L_FC=yes
-      export_dynamic_flag_spec_FC='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	archive_cmds_FC='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_FC='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_FC=:
-	hardcode_direct_FC=yes
-	hardcode_direct_absolute_FC=yes
-	export_dynamic_flag_spec_FC='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	hardcode_minus_L_FC=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_FC='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_FC='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds_FC='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_FC=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  hardcode_direct_FC=no
-	  hardcode_shlibpath_var_FC=no
-	  ;;
-	*)
-	  hardcode_direct_FC=yes
-	  hardcode_direct_absolute_FC=yes
-	  export_dynamic_flag_spec_FC='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L_FC=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-	# This should be the same for all languages, so no per-tag cache variable.
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_LDFLAGS="$LDFLAGS"
-	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-	   cat > conftest.$ac_ext <<_ACEOF
-
-      subroutine foo
-      end
-_ACEOF
-if ac_fn_fc_try_link "$LINENO"; then :
-  lt_cv_irix_exported_symbol=yes
-else
-  lt_cv_irix_exported_symbol=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-           LDFLAGS="$save_LDFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-	if test "$lt_cv_irix_exported_symbol" = yes; then
-          archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-	fi
-      else
-	archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc_FC='no'
-      hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_FC=:
-      inherit_rpath_FC=yes
-      link_all_deplibs_FC=yes
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	archive_cmds_FC='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec_FC='-R$libdir'
-      hardcode_direct_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    newsos6)
-      archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_FC=yes
-      hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_FC=:
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	hardcode_direct_FC=yes
-	hardcode_shlibpath_var_FC=no
-	hardcode_direct_absolute_FC=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec_FC='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec_FC='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      hardcode_minus_L_FC=yes
-      allow_undefined_flag_FC=unsupported
-      archive_cmds_FC='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds_FC='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag_FC=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	allow_undefined_flag_FC=' -expect_unresolved \*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc_FC='no'
-      hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_FC=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag_FC=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-      else
-	allow_undefined_flag_FC=' -expect_unresolved \*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_FC='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	hardcode_libdir_flag_spec_FC='-rpath $libdir'
-      fi
-      archive_cmds_need_lc_FC='no'
-      hardcode_libdir_separator_FC=:
-      ;;
-
-    solaris*)
-      no_undefined_flag_FC=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds_FC='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  archive_cmds_FC='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  archive_cmds_FC='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      hardcode_libdir_flag_spec_FC='-R$libdir'
-      hardcode_shlibpath_var_FC=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec_FC='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  whole_archive_flag_spec_FC='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      link_all_deplibs_FC=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	archive_cmds_FC='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_FC='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      hardcode_direct_FC=yes
-      hardcode_minus_L_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_FC=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  archive_cmds_FC='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  reload_cmds_FC='$CC -r -o $output$reload_objs'
-	  hardcode_direct_FC=no
-        ;;
-	motorola)
-	  archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_FC=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var_FC=no
-      export_dynamic_flag_spec_FC='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	hardcode_shlibpath_var_FC=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	ld_shlibs_FC=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag_FC='${wl}-z,text'
-      archive_cmds_need_lc_FC=no
-      hardcode_shlibpath_var_FC=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_FC='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag_FC='${wl}-z,text'
-      allow_undefined_flag_FC='${wl}-z,nodefs'
-      archive_cmds_need_lc_FC=no
-      hardcode_shlibpath_var_FC=no
-      hardcode_libdir_flag_spec_FC='${wl}-R,$libdir'
-      hardcode_libdir_separator_FC=':'
-      link_all_deplibs_FC=yes
-      export_dynamic_flag_spec_FC='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_FC='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    *)
-      ld_shlibs_FC=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	export_dynamic_flag_spec_FC='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_FC" >&5
-$as_echo "$ld_shlibs_FC" >&6; }
-test "$ld_shlibs_FC" = no && can_build_shared=no
-
-with_gnu_ld_FC=$with_gnu_ld
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc_FC" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc_FC=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds_FC in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$lt_prog_compiler_wl_FC
-	  pic_flag=$lt_prog_compiler_pic_FC
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag_FC
-	  allow_undefined_flag_FC=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc_FC=no
-	  else
-	    lt_cv_archive_cmds_need_lc_FC=yes
-	  fi
-	  allow_undefined_flag_FC=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-	
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_FC" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc_FC" >&6; }
-      archive_cmds_need_lc_FC=$lt_cv_archive_cmds_need_lc_FC
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux # correct to gnu/linux during the next big refactor
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_FC\"; \
-	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_FC\""
-    cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_fc_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-    
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action_FC=
-if test -n "$hardcode_libdir_flag_spec_FC" ||
-   test -n "$runpath_var_FC" ||
-   test "X$hardcode_automatic_FC" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct_FC" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, FC)" != no &&
-     test "$hardcode_minus_L_FC" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action_FC=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action_FC=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_FC=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_FC" >&5
-$as_echo "$hardcode_action_FC" >&6; }
-
-if test "$hardcode_action_FC" = relink ||
-   test "$inherit_rpath_FC" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-    
-
-
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-fi # test "$_lt_disable_FC" != yes
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
- 
-
-@%:@ Check whether --enable-pthread was given.
-if test "${enable_pthread+set}" = set; then :
-  enableval=$enable_pthread; pthreads=${enableval} 
-else
-  pthreads=no
-
-fi
-
-if test "x${pthreads}" = xyes; then
-   GRIB_PTHREADS=1
-else
-   GRIB_PTHREADS=0
-fi
-
-if test $GRIB_PTHREADS -eq 1
-then
-   
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if pthreads available" >&5
-$as_echo_n "checking if pthreads available... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  OLDLIBS=$LIBS
-  LIBS="$LIBS -lpthread"
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    
-       #include <pthread.h>
-       #include <stdio.h>
-
-       #define NUMTHRDS 4
-       static int count;
-       
-       static pthread_once_t once  = PTHREAD_ONCE_INIT;
-       static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-       static pthread_t callThd[NUMTHRDS];
-       
-       static void init() {
-         pthread_mutexattr_t attr;
-       
-         pthread_mutexattr_init(&attr);
-         pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
-         pthread_mutex_init(&mutex,&attr);
-         pthread_mutexattr_destroy(&attr);
-       }
-       
-       void* increment(void* arg);
-       
-       int main(int argc,char** argv){
-         int i;
-         void* status=0;
-         pthread_attr_t attr;
-         pthread_attr_init(&attr);
-         count=0;
-         pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
-         for (i=0;i<NUMTHRDS;i++) {
-           pthread_create( &callThd[i], &attr, increment, (void *)i);
-         }
-         pthread_attr_destroy(&attr);
-         for(i=0; i<NUMTHRDS; i++)
-             pthread_join( callThd[i], &status);
-         return 0;
-       }
-       
-       void* increment(void* arg) {
-         int i=(int)arg;
-         pthread_once(&once,&init);
-         pthread_mutex_lock(&mutex);
-         count+=i;
-         pthread_mutex_unlock(&mutex);
-		 pthread_exit((void*) 0);
-       }
-    
-  
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  GRIB_PTHREADS=1
-else
-  GRIB_PTHREADS=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $GRIB_PTHREADS = 0
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	LIBS=$OLDLIBS
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-   
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Linux pthreads available" >&5
-$as_echo_n "checking if Linux pthreads available... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  OLDLIBS=$LIBS
-  LIBS="$LIBS -lpthread"
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    
-       #include <pthread.h>
-       #include <stdio.h>
-
-       #define NUMTHRDS 4
-       static int count;
-	   #define PTHREAD_MUTEX_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
-	   extern int pthread_mutexattr_settype(pthread_mutexattr_t* attr,int type);
-       
-       static pthread_once_t once  = PTHREAD_ONCE_INIT;
-       static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-       static pthread_t callThd[NUMTHRDS];
-       
-       static void init() {
-         pthread_mutexattr_t attr;
-		 pthread_mutexattr_init(&attr);
-		 pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
-         pthread_mutex_init(&mutex,&attr);
-         pthread_mutexattr_destroy(&attr);
-       }
-       
-       void* increment(void* arg);
-       
-       int main(int argc,char** argv){
-         int i;
-         void* status=0;
-         pthread_attr_t attr;
-         pthread_attr_init(&attr);
-         count=0;
-         pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
-         for (i=0;i<NUMTHRDS;i++) {
-           pthread_create( &callThd[i], &attr, increment, (void *)i);
-         }
-         pthread_attr_destroy(&attr);
-         for(i=0; i<NUMTHRDS; i++)
-             pthread_join( callThd[i], &status);
-         return 0;
-       }
-       
-       void* increment(void* arg) {
-         int i=(int)arg;
-         pthread_once(&once,&init);
-         pthread_mutex_lock(&mutex);
-         count+=i;
-         pthread_mutex_unlock(&mutex);
-		 pthread_exit((void*) 0);
-       }
-    
-  
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  GRIB_LINUX_PTHREADS=1
-   GRIB_PTHREADS=1
-else
-  GRIB_LINUX_PTHREADS=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $GRIB_LINUX_PTHREADS = 0
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	LIBS=$OLDLIBS
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-else
-   GRIB_LINUX_PTHREADS=0
-fi
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define GRIB_PTHREADS $GRIB_PTHREADS
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define GRIB_LINUX_PTHREADS $GRIB_LINUX_PTHREADS
-_ACEOF
-
-
-@%:@ Check whether --enable-ibmpower67_opt was given.
-if test "${enable_ibmpower67_opt+set}" = set; then :
-  enableval=$enable_ibmpower67_opt; ibmpower67_opts=${enableval} 
-else
-  ibmpower67_opts=no
-
-fi
-
-if test "x${ibmpower67_opts}" = xyes; then
-   GRIB_IBMPOWER67_OPT=1
-else
-   GRIB_IBMPOWER67_OPT=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-@%:@define GRIB_IBMPOWER67_OPT $GRIB_IBMPOWER67_OPT
-_ACEOF
-
-
-
-ac_cv_prog_f90_uppercase_mod=no
-
-ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if Fortran 90 compiler capitalizes .mod filenames" >&5
-$as_echo_n "checking if Fortran 90 compiler capitalizes .mod filenames... " >&6; }
-cat <<EOF >conftest.f90
-    module conftest
-    end module conftest
-EOF
-
-ac_try='$FC $FCFLAGS -c conftest.f90 >&5'
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -f CONFTEST.mod ; then
-   ac_cv_prog_f90_uppercase_mod=yes
-   rm -f CONFTEST.mod
-else
-   ac_cv_prog_f90_uppercase_mod=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f90_uppercase_mod" >&5
-$as_echo "$ac_cv_prog_f90_uppercase_mod" >&6; }
-#rm -f conftest*
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
- if test "x$ac_cv_prog_f90_uppercase_mod" = xyes; then
-  UPPER_CASE_MOD_TRUE=
-  UPPER_CASE_MOD_FALSE='#'
-else
-  UPPER_CASE_MOD_TRUE='#'
-  UPPER_CASE_MOD_FALSE=
-fi
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if double and float are ieee big endian" >&5
-$as_echo_n "checking if double and float are ieee big endian... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    
-     int compare(unsigned char* a,unsigned char* b) {
-       while(*a != 0) if (*(b++)!=*(a++)) return 1;
-       return 0;
-     }
-     int main(int argc,char** argv) {
-       unsigned char dc[]={0x30,0x61,0xDE,0x80,0x93,0x67,0xCC,0xD9,0};
-       double da=1.23456789e-75;
-       unsigned char* ca;
-     
-       unsigned char fc[]={0x05,0x83,0x48,0x22,0};
-       float fa=1.23456789e-35;
-     
-       if (sizeof(double)!=8) return 1;
-     
-       ca=(unsigned char*)&da;
-       if (compare(dc,ca)) return 1;
-
-       if (sizeof(float)!=4) return 1;
-
-       ca=(unsigned char*)&fa;
-       if (compare(fc,ca)) return 1;
-     
-       return 0;
-     }
-    
-  
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  IS_IEEE_BE=1
-else
-  IS_IEEE_BE=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $IS_IEEE_BE = 0
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define IEEE_BE $IS_IEEE_BE
-_ACEOF
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if double and float are ieee little endian" >&5
-$as_echo_n "checking if double and float are ieee little endian... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    
-     int compare(unsigned char* a,unsigned char* b) {
-       while(*a != 0) if (*(b++)!=*(a++)) return 1;
-       return 0;
-     }
-     int main(int argc,char** argv) {
-       unsigned char dc[]={0xD9,0xCC,0x67,0x93,0x80,0xDE,0x61,0x30,0};
-       double da=1.23456789e-75;
-       unsigned char* ca;
-     
-       unsigned char fc[]={0x22,0x48,0x83,0x05,0};
-       float fa=1.23456789e-35;
-     
-       if (sizeof(double)!=8) return 1;
-     
-       ca=(unsigned char*)&da;
-       if (compare(dc,ca)) return 1;
-
-       if (sizeof(float)!=4) return 1;
-
-       ca=(unsigned char*)&fa;
-       if (compare(fc,ca)) return 1;
-     
-       return 0;
-     }
-    
-  
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  IS_IEEE_LE=1
-else
-  IS_IEEE_LE=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $IS_IEEE_LE = 0
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define IEEE_LE $IS_IEEE_LE
-_ACEOF
-
-
-@%:@ Check whether --enable-ieee-native was given.
-if test "${enable_ieee_native+set}" = set; then :
-  enableval=$enable_ieee_native; without_ieee=1
-else
-  without_ieee=0
-fi
-
-
-if test $without_ieee -eq 1
-then
-
-cat >>confdefs.h <<_ACEOF
-@%:@define IEEE_LE 0
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define IEEE_BE 0
-_ACEOF
-
-fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Big Endian" >&5
-$as_echo_n "checking if Big Endian... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    
-      int main(int argc,char** argv){
-        long one= 1;
-        return !(*((char *)(&one)));
-      }
-    
-  
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  IS_BIG_ENDIAN=0
-else
-  IS_BIG_ENDIAN=1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $IS_BIG_ENDIAN = 0
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define IS_BIG_ENDIAN $IS_BIG_ENDIAN
-_ACEOF
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if inline in C" >&5
-$as_echo_n "checking if inline in C... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    
-	  inline int x(int a) {return a;}
-      int main(int argc,char** argv){
-	    int a=1;
-        return x(a);
-      }
-    
-  
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  HAS_INLINE=inline
-else
-  HAS_INLINE=
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  if test x$HAS_INLINE = "x"
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define GRIB_INLINE $HAS_INLINE
-_ACEOF
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if bus error on unaligned pointers" >&5
-$as_echo_n "checking if bus error on unaligned pointers... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    
-	  void foo(char* p) {long x=*((long*)p)+1;}
-	  int main(int argc,char** argv) {char* p="xxxxxxxxx";foo(++p);return 0;}
-    
-  
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  MEM_ALIGN=0
-else
-  MEM_ALIGN=1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $MEM_ALIGN = "0"
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define GRIB_MEM_ALIGN $MEM_ALIGN
-_ACEOF
-
-
-ac_fn_c_check_func "$LINENO" "posix_memalign" "ac_cv_func_posix_memalign"
-if test "x$ac_cv_func_posix_memalign" = xyes; then :
-  
-cat >>confdefs.h <<_ACEOF
-@%:@define POSIX_MEMALIGN 1
-_ACEOF
-
-fi
-
-
-@%:@ Check whether --enable-align-memory was given.
-if test "${enable_align_memory+set}" = set; then :
-  enableval=$enable_align_memory; 
-cat >>confdefs.h <<_ACEOF
-@%:@define GRIB_MEM_ALIGN 1
-_ACEOF
-
-fi
-
-
-@%:@ Check whether --enable-vector was given.
-if test "${enable_vector+set}" = set; then :
-  enableval=$enable_vector; vectorise=${enableval}
-else
-  vectorise=no
-fi
-
-if test "x${vectorise}" = xyes
-then
-   vectorise=1
-else
-   vectorise=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-@%:@define VECTOR $vectorise
-_ACEOF
- 
-
-@%:@ Check whether --enable-memory-management was given.
-if test "${enable_memory_management+set}" = set; then :
-  enableval=$enable_memory_management; 
-cat >>confdefs.h <<_ACEOF
-@%:@define MANAGE_MEM 1
-_ACEOF
- 
-else
-  
-cat >>confdefs.h <<_ACEOF
-@%:@define MANAGE_MEM 0
-_ACEOF
- 
-	 
-fi
-
-
-DEVEL_RULES='' 
-@%:@ Check whether --enable-development was given.
-if test "${enable_development+set}" = set; then :
-  enableval=$enable_development; GRIB_DEVEL=${enableval} 
-else
-  GRIB_DEVEL=no
-
-fi
-
-if test "x${GRIB_DEVEL}" = xyes
-then
-   GRIB_DEVEL=1
-   DEVEL_RULES='extrules.am'
-else
-   GRIB_DEVEL=0
-   DEVEL_RULES='dummy.am'
-fi
-
-
-
- if test $GRIB_DEVEL -eq 1; then
-  WITH_MARS_TESTS_TRUE=
-  WITH_MARS_TESTS_FALSE='#'
-else
-  WITH_MARS_TESTS_TRUE='#'
-  WITH_MARS_TESTS_FALSE=
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5
-$as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_source+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  while :; do
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h> /* for off_t */
-     #include <stdio.h>
-int
-main ()
-{
-int (*fp) (FILE *, off_t, int) = fseeko;
-     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_sys_largefile_source=no; break
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@define _LARGEFILE_SOURCE 1
-#include <sys/types.h> /* for off_t */
-     #include <stdio.h>
-int
-main ()
-{
-int (*fp) (FILE *, off_t, int) = fseeko;
-     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_sys_largefile_source=1; break
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  ac_cv_sys_largefile_source=unknown
-  break
-done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5
-$as_echo "$ac_cv_sys_largefile_source" >&6; }
-case $ac_cv_sys_largefile_source in #(
-  no | unknown) ;;
-  *) 
-cat >>confdefs.h <<_ACEOF
-@%:@define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source
-_ACEOF
-;;
-esac
-rm -rf conftest*
-
-# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
-# in glibc 2.1.3, but that breaks too many other things.
-# If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
-if test $ac_cv_sys_largefile_source != unknown; then
-  
-$as_echo "@%:@define HAVE_FSEEKO 1" >>confdefs.h
-
-fi
-
-CREATE_H=''
-if test x"$ac_cv_func_fseeko" != xyes ; then
-	CREATE_H='./create_h.sh 1'
-else
-	CREATE_H='./create_h.sh 0'
-fi 
-
-@%:@ Check whether --enable-largefile was given.
-if test "${enable_largefile+set}" = set; then :
-  enableval=$enable_largefile; 
-fi
-
-if test "$enable_largefile" != no; then
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
-$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_sys_largefile_CC=no
-     if test "$GCC" != yes; then
-       ac_save_CC=$CC
-       while :; do
-	 # IRIX 6.2 and later do not support large files by default,
-	 # so use the C compiler's -n32 option if that helps.
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-	 if ac_fn_c_try_compile "$LINENO"; then :
-  break
-fi
-rm -f core conftest.err conftest.$ac_objext
-	 CC="$CC -n32"
-	 if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_largefile_CC=' -n32'; break
-fi
-rm -f core conftest.err conftest.$ac_objext
-	 break
-       done
-       CC=$ac_save_CC
-       rm -f conftest.$ac_ext
-    fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
-$as_echo "$ac_cv_sys_largefile_CC" >&6; }
-  if test "$ac_cv_sys_largefile_CC" != no; then
-    CC=$CC$ac_cv_sys_largefile_CC
-  fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
-if ${ac_cv_sys_file_offset_bits+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  while :; do
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_file_offset_bits=no; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@define _FILE_OFFSET_BITS 64
-@%:@include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_file_offset_bits=64; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  ac_cv_sys_file_offset_bits=unknown
-  break
-done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
-$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
-case $ac_cv_sys_file_offset_bits in #(
-  no | unknown) ;;
-  *) 
-cat >>confdefs.h <<_ACEOF
-@%:@define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
-_ACEOF
-;;
-esac
-rm -rf conftest*
-  if test $ac_cv_sys_file_offset_bits = unknown; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
-$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
-if ${ac_cv_sys_large_files+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  while :; do
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_large_files=no; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-@%:@define _LARGE_FILES 1
-@%:@include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_large_files=1; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  ac_cv_sys_large_files=unknown
-  break
-done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
-$as_echo "$ac_cv_sys_large_files" >&6; }
-case $ac_cv_sys_large_files in #(
-  no | unknown) ;;
-  *) 
-cat >>confdefs.h <<_ACEOF
-@%:@define _LARGE_FILES $ac_cv_sys_large_files
-_ACEOF
-;;
-esac
-rm -rf conftest*
-  fi
-
-  
-fi
-
-
-
-
-RPM_HOST_CPU=${host_cpu}
-RPM_HOST_VENDOR=${host_vendor}
-RPM_HOST_OS=${host_os}
-RPM_CONFIGURE_ARGS=${ac_configure_args}
-
-
-
-
-
-@%:@ Check whether --with-rpm-release was given.
-if test "${with_rpm_release+set}" = set; then :
-  withval=$with_rpm_release; RPM_RELEASE="$withval"
-else
-  RPM_RELEASE=1
-fi
-
-
-
-ECCODES_SAMPLES_PATH=$samples_files_path
-ECCODES_DEFINITION_PATH=$definition_files_path
-
-
-
-
-@%:@ Check whether --enable-fortran was given.
-if test "${enable_fortran+set}" = set; then :
-  enableval=$enable_fortran; with_fortran=${enableval}
-else
-  with_fortran=yes
-fi
-
-
-if test "x${with_fortran}" = xyes; then
-   without_fortran=0
-else
-   without_fortran=1
-fi
-
-if test "x$FC" = "x"
-then
-  without_fortran=1
-fi
-
-ac_cv_prog_f90_uppercase_mod=no
-
-ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if Fortran 90 compiler capitalizes .mod filenames" >&5
-$as_echo_n "checking if Fortran 90 compiler capitalizes .mod filenames... " >&6; }
-cat <<EOF >conftest.f90
-    module conftest
-    end module conftest
-EOF
-
-ac_try='$FC $FCFLAGS -c conftest.f90 >&5'
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -f CONFTEST.mod ; then
-   ac_cv_prog_f90_uppercase_mod=yes
-   rm -f CONFTEST.mod
-else
-   ac_cv_prog_f90_uppercase_mod=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f90_uppercase_mod" >&5
-$as_echo "$ac_cv_prog_f90_uppercase_mod" >&6; }
-#rm -f conftest*
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
- if test "x$ac_cv_prog_f90_uppercase_mod" = xyes; then
-  UPPER_CASE_MOD_TRUE=
-  UPPER_CASE_MOD_FALSE='#'
-else
-  UPPER_CASE_MOD_TRUE='#'
-  UPPER_CASE_MOD_FALSE=
-fi
-
-
-
-ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if Fortran 90 can resolve debug symbols in modules" >&5
-$as_echo_n "checking if Fortran 90 can resolve debug symbols in modules... " >&6; }
-cat <<EOF >conftest-module.f90
-    module conftest
-    end module conftest
-EOF
-cat <<EOF >conftest.f90
-	program f90usemodule
-	use CONFTEST
-	end program f90usemodule
-EOF
-
-ac_compile_module='$FC -g -c conftest-module.f90 >&5'
-ac_link_program='$FC -g -o conftest -I. conftest.f90 >&5'
-
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile_module\""; } >&5
-  (eval $ac_compile_module) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link_program\""; } >&5
-  (eval $ac_link_program) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -f conftest ; then
-   ac_cv_prog_f90_debug_in_module=yes
-   rm -f conftest
-else
-   ac_cv_prog_f90_debug_in_module=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f90_debug_in_module" >&5
-$as_echo "$ac_cv_prog_f90_debug_in_module" >&6; }
-#rm -f conftest*
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
- if test "x$ac_cv_prog_f90_debug_in_module" = xyes; then
-  DEBUG_IN_MOD_TRUE=
-  DEBUG_IN_MOD_FALSE='#'
-else
-  DEBUG_IN_MOD_TRUE='#'
-  DEBUG_IN_MOD_FALSE=
-fi
-
-
-if test $without_fortran -ne 1 && test "x$ac_cv_prog_f90_debug_in_module" != xyes \
-		&& test "x$enable_shared" = xyes && test "x$FCFLAGS" = "x-g"
-then
-	without_fortran=1
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  
-
-  Your Fortran compiler ($FC) does not support linking to dynamic library modules when debug is enabled. This is a known 
-problem with Portland compilers versions 7 and 8, for example. Possible workarounds are:
-
-  - Use a Portland compiler version 10 or higher or a different compiler.
-  - Disable shared libraries (e.g. configure --disable-shared)
-  - Disable debug (e.g. configure FCFLAGS=\"\")
-
-  Compilation of the Fortran module has been disabled
-
-" >&5
-$as_echo "$as_me: WARNING:  
-
-  Your Fortran compiler ($FC) does not support linking to dynamic library modules when debug is enabled. This is a known 
-problem with Portland compilers versions 7 and 8, for example. Possible workarounds are:
-
-  - Use a Portland compiler version 10 or higher or a different compiler.
-  - Disable shared libraries (e.g. configure --disable-shared)
-  - Disable debug (e.g. configure FCFLAGS=\"\")
-
-  Compilation of the Fortran module has been disabled
-
-" >&2;}
-fi
-
-
-if test $without_fortran -ne 1
-then
-  FORTRAN_MOD=fortran
-  
-  F90_CHECK="examples/F90"
-  
-
-    
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking fortran 90 modules inclusion flag" >&5
-$as_echo_n "checking fortran 90 modules inclusion flag... " >&6; }
-if ${ax_cv_f90_modflag+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-i=0
-while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do
-  i=`expr $i + 1`
-done
-mkdir tmpdir_$i
-cd tmpdir_$i
-cat > conftest.$ac_ext <<_ACEOF
-
-!234567
-      module conftest_module
-      contains
-      subroutine conftest_routine
-      write(*,'(a)') 'gotcha!'
-      end subroutine conftest_routine
-      end module conftest_module
-  
-_ACEOF
-if ac_fn_fc_try_compile "$LINENO"; then :
-  
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-cd ..
-ax_cv_f90_modflag="not found"
-for ax_flag in "-I" "-M" "-p"; do
-  if test "$ax_cv_f90_modflag" = "not found" ; then
-    ax_save_FCFLAGS="$FCFLAGS"
-    FCFLAGS="$ax_save_FCFLAGS ${ax_flag}tmpdir_$i"
-    cat > conftest.$ac_ext <<_ACEOF
-
-!234567
-      program conftest_program
-      use conftest_module
-      call conftest_routine
-      end program conftest_program
-      
-_ACEOF
-if ac_fn_fc_try_compile "$LINENO"; then :
-  ax_cv_f90_modflag="$ax_flag"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-    FCFLAGS="$ax_save_FCFLAGS"
-  fi
-done
-rm -fr tmpdir_$i
-#if test "$ax_cv_f90_modflag" = "not found" ; then
-#  AC_MSG_ERROR([unable to find compiler flag for modules inclusion])
-#fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_f90_modflag" >&5
-$as_echo "$ax_cv_f90_modflag" >&6; }
-  if test "$ax_cv_f90_modflag" = "not found" ; then
-    as_fn_error $? "unable to find compiler flag for modules inclusion" "$LINENO" 5
-  fi
-  F90_MODULE_FLAG=$ax_cv_f90_modflag
-  
-fi
-
-
-@%:@ Check whether --with-ifs-samples was given.
-if test "${with_ifs_samples+set}" = set; then :
-  withval=$with_ifs_samples; ifs_samples=$withval
-else
-  ifs_samples='none'
-fi
-
-IFS_SAMPLES_DIR=""
-
-if test $ifs_samples != 'none'
-then
-	IFS_SAMPLES_DIR=$ifs_samples
-else
-	IFS_SAMPLES_DIR=$ifs_samples_files_path
-fi
-
-
-
-
-@%:@ Check whether --with-emos was given.
-if test "${with_emos+set}" = set; then :
-  withval=$with_emos; emos=$withval
-else
-  emos='none'
-fi
-
-
-EMOS_LIB=""
-if test "$emos" != 'none'
-then
-  EMOS_LIB=$emos
-  
-$as_echo "@%:@define HAVE_LIBEMOS 1" >>confdefs.h
-
-fi
-
-
-
-@%:@ Check whether --with-fortranlibdir was given.
-if test "${with_fortranlibdir+set}" = set; then :
-  withval=$with_fortranlibdir; fortranlibdir=$withval
-else
-  fortranlibdir=''
-fi
-
-
-
-@%:@ Check whether --with-fortranlibs was given.
-if test "${with_fortranlibs+set}" = set; then :
-  withval=$with_fortranlibs; fortranlibs=$withval
-else
-  fortranlibs='none'
-fi
-
-
-if test "$fortranlibs" != 'none'
-then
-   EMOS_LIB="$emos -L$fortranlibdir $fortranlibs -Wl,-rpath $fortranlibdir"
-fi
-
-
-
-@%:@ Check whether --enable-timer was given.
-if test "${enable_timer+set}" = set; then :
-  enableval=$enable_timer; with_timer=${enableval}
-else
-  with_timer=no
-fi
-
-if test "x${with_timer}" = xyes; then
-  
-$as_echo "@%:@define GRIB_TIMER 1" >>confdefs.h
-
-else
-  
-$as_echo "@%:@define GRIB_TIMER 0" >>confdefs.h
-
-fi
-
-
-@%:@ Check whether --enable-omp-packing was given.
-if test "${enable_omp_packing+set}" = set; then :
-  enableval=$enable_omp_packing; with_omp=${enableval}
-else
-  with_omp=no
-fi
-
-if test "x${with_omp}" = xyes; then
-  
-$as_echo "@%:@define OMP_PACKING 1" >>confdefs.h
-
-else
-  
-$as_echo "@%:@define OMP_PACKING 0" >>confdefs.h
-
-fi
-
-
-@%:@ Check whether --with-netcdf was given.
-if test "${with_netcdf+set}" = set; then :
-  withval=$with_netcdf; netcdf_dir=$withval
-else
-  netcdf_dir='none'
-fi
-
-with_netcdf=0
-if test $netcdf_dir != 'none'
-then
-	with_netcdf=1
-	CFLAGS="$CFLAGS -I${netcdf_dir}/include"
-    NETCDF_LDFLAGS="-L${netcdf_dir}/lib -lnetcdf"
-    ORIG_LDFLAGS=$LDFLAGS
-    LDFLAGS="$LDFLAGS $NETCDF_LDFLAGS"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nc_open in -lnetcdf" >&5
-$as_echo_n "checking for nc_open in -lnetcdf... " >&6; }
-if ${ac_cv_lib_netcdf_nc_open+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lnetcdf  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char nc_open ();
-int
-main ()
-{
-return nc_open ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_netcdf_nc_open=yes
-else
-  ac_cv_lib_netcdf_nc_open=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_netcdf_nc_open" >&5
-$as_echo "$ac_cv_lib_netcdf_nc_open" >&6; }
-if test "x$ac_cv_lib_netcdf_nc_open" = xyes; then :
-  netcdf_ok=1
-else
-  netcdf_ok=0
-fi
-
-    LDFLAGS=$ORIG_LDFLAGS
-	if test $netcdf_ok -eq 0
-	then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: 
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-  CONFIGURATION ERROR: netcdf test not passed.                                                               
-  Please check that the path to the netcdf library given in --with-netcdf=PATH_TO_NETCDF
-  is correct. Otherwise build without netcdf.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-	  " >&5
-$as_echo "$as_me: 
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-  CONFIGURATION ERROR: netcdf test not passed.                                                               
-  Please check that the path to the netcdf library given in --with-netcdf=PATH_TO_NETCDF
-  is correct. Otherwise build without netcdf.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-	  " >&6;}
-	  test 0 -eq 1
-	  exit 
-    fi
-    
-    
-$as_echo "@%:@define HAVE_NETCDF 1" >>confdefs.h
-
-fi
-
-@%:@ Check whether --enable-jpeg was given.
-if test "${enable_jpeg+set}" = set; then :
-  enableval=$enable_jpeg; without_jpeg=1
-else
-  without_jpeg=0
-fi
-
-
-
-@%:@ Check whether --with-jasper was given.
-if test "${with_jasper+set}" = set; then :
-  withval=$with_jasper; jasper_dir=$withval
-else
-  jasper_dir='system'
-fi
-
-
-JASPER_DIR=$jasper_dir
-
-
-if test $jasper_dir != 'system'
-then
-  CFLAGS="$CFLAGS -I${jasper_dir}/include"
-  LDFLAGS="$LDFLAGS -L${jasper_dir}/lib"
-fi
-
-
-@%:@ Check whether --with-openjpeg was given.
-if test "${with_openjpeg+set}" = set; then :
-  withval=$with_openjpeg; openjpeg_dir=$withval
-else
-  openjpeg_dir='system'
-fi
-
-
-OPENJPEG_DIR=$openjpeg_dir
-
-
-if test $openjpeg_dir != 'system'
-then
-  CFLAGS="$CFLAGS -I${openjpeg_dir}/include"
-  LDFLAGS="$LDFLAGS -L${openjpeg_dir}/lib"
-fi
-
-if test $without_jpeg -ne 1
-then
-    
-$as_echo "@%:@define HAVE_JPEG 1" >>confdefs.h
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jas_stream_memopen in -ljasper" >&5
-$as_echo_n "checking for jas_stream_memopen in -ljasper... " >&6; }
-if ${ac_cv_lib_jasper_jas_stream_memopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ljasper  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char jas_stream_memopen ();
-int
-main ()
-{
-return jas_stream_memopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_jasper_jas_stream_memopen=yes
-else
-  ac_cv_lib_jasper_jas_stream_memopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_jasper_jas_stream_memopen" >&5
-$as_echo "$ac_cv_lib_jasper_jas_stream_memopen" >&6; }
-if test "x$ac_cv_lib_jasper_jas_stream_memopen" = xyes; then :
-  jasper_ok=1
-else
-  jasper_ok=0
-fi
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for opj_image_create in -lopenjpeg" >&5
-$as_echo_n "checking for opj_image_create in -lopenjpeg... " >&6; }
-if ${ac_cv_lib_openjpeg_opj_image_create+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lopenjpeg  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char opj_image_create ();
-int
-main ()
-{
-return opj_image_create ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_openjpeg_opj_image_create=yes
-else
-  ac_cv_lib_openjpeg_opj_image_create=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_openjpeg_opj_image_create" >&5
-$as_echo "$ac_cv_lib_openjpeg_opj_image_create" >&6; }
-if test "x$ac_cv_lib_openjpeg_opj_image_create" = xyes; then :
-  openjpeg_ok=1
-else
-  openjpeg_ok=0
-fi
-
-
-    jpeg_ok=0
-
-    # prefer openjpeg over jasper
-	if test $openjpeg_ok -eq 1
-	then
-	  jpeg_ok=1
-      LIB_OPENJPEG='-lopenjpeg -lm'
-      LIBS="$LIB_OPENJPEG $LIBS"
-      
-$as_echo "@%:@define HAVE_LIBOPENJPEG 1" >>confdefs.h
-
-      
-    elif test $jasper_ok -eq 1
-    then
-	  jpeg_ok=1
-      LIB_JASPER='-ljasper'
-      LIBS="$LIB_JASPER $LIBS"
-      
-$as_echo "@%:@define HAVE_LIBJASPER 1" >>confdefs.h
-
-      
-	fi
-
-	if test $jpeg_ok -eq 0
-	then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: 
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-  CONFIGURATION ERROR: jpeg library (jasper or openjpeg) required.                                                               
-  jpeg library installation is not working or missing.                                 
-
-  To fix this problem you have the following options.                                  
-  1) Install without jpeg support enabled (--disable-jpeg), but you will not be able to
-     decode grib2 data encoded in jpeg.
-  2) Check if you have a jpeg library installed in a path different from your system path. 
-     In this case you can provide your jpeg library installation path to the configure
-     through the options:
-        --with-jasper=\"jasper_lib_path\"
-        --with-openjpeg=\"openjpeg_lib_path\"
-  3) Download and install one of the supported jpeg libraries.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-	  " >&5
-$as_echo "$as_me: 
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-  CONFIGURATION ERROR: jpeg library (jasper or openjpeg) required.                                                               
-  jpeg library installation is not working or missing.                                 
-
-  To fix this problem you have the following options.                                  
-  1) Install without jpeg support enabled (--disable-jpeg), but you will not be able to
-     decode grib2 data encoded in jpeg.
-  2) Check if you have a jpeg library installed in a path different from your system path. 
-     In this case you can provide your jpeg library installation path to the configure
-     through the options:
-        --with-jasper=\"jasper_lib_path\"
-        --with-openjpeg=\"openjpeg_lib_path\"
-  3) Download and install one of the supported jpeg libraries.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-	  " >&6;}
-	   0 -eq 1 
-	  exit 
-    fi
-  JPEG_TEST="jpeg.sh"
-  
-fi
-
-CCSDS_TEST=""
-
-@%:@ Check whether --with-aec was given.
-if test "${with_aec+set}" = set; then :
-  withval=$with_aec; 
-else
-  with_aec=no
-fi
-
-
-if test "x$with_aec" != xno ; then
-  if test "x$with_aec" != xyes ; then
-    LDFLAGS="$LDFLAGS -L$with_aec/lib"
-    CPPFLAGS="$CPPFLAGS -I$with_aec/include"
-  fi
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for aec_encode in -laec" >&5
-$as_echo_n "checking for aec_encode in -laec... " >&6; }
-if ${ac_cv_lib_aec_aec_encode+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-laec  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char aec_encode ();
-int
-main ()
-{
-return aec_encode ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_aec_aec_encode=yes
-else
-  ac_cv_lib_aec_aec_encode=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_aec_aec_encode" >&5
-$as_echo "$ac_cv_lib_aec_aec_encode" >&6; }
-if test "x$ac_cv_lib_aec_aec_encode" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_LIBAEC 1
-_ACEOF
-
-  LIBS="-laec $LIBS"
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "aec test failed (--without-aec to disable)
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-  CCSDS_TEST="ccsds.sh"
-  LIB_AEC='-laec'
-  
-  AEC_DIR="$with_aec"
-  
-
-fi
-
-
-
-@%:@ Check whether --with-png-support was given.
-if test "${with_png_support+set}" = set; then :
-  withval=$with_png_support; with_png=1
-else
-  with_png=0
-fi
-
-
-if test $with_png -gt 0
-then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PNG " >&5
-$as_echo_n "checking for PNG ... " >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
-$as_echo "" >&6; }
-    ac_fn_c_check_header_mongrel "$LINENO" "png.h" "ac_cv_header_png_h" "$ac_includes_default"
-if test "x$ac_cv_header_png_h" = xyes; then :
-  passed=1
-else
-  passed=0
-fi
-
-
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for png_read_png in -lpng" >&5
-$as_echo_n "checking for png_read_png in -lpng... " >&6; }
-if ${ac_cv_lib_png_png_read_png+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lpng  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char png_read_png ();
-int
-main ()
-{
-return png_read_png ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_png_png_read_png=yes
-else
-  ac_cv_lib_png_png_read_png=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_png_png_read_png" >&5
-$as_echo "$ac_cv_lib_png_png_read_png" >&6; }
-if test "x$ac_cv_lib_png_png_read_png" = xyes; then :
-  passed=1
-else
-  passed=0
-fi
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if PNG support package is complete" >&5
-$as_echo_n "checking if PNG support package is complete... " >&6; }
-
-    if test $passed -gt 0
-    then
-      LIB_PNG='-lpng'
-      LIBS="$LIB_PNG $LIBS"
-      
-$as_echo "@%:@define HAVE_LIBPNG 1" >>confdefs.h
-
-      
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no -- some components failed test" >&5
-$as_echo "no -- some components failed test" >&6; }
-    fi
-fi
-
-
-#PERL_INSTALL_OPTIONS="PREFIX=$prefix INSTALLDIRS=perl"
-PERL_INSTALL_OPTIONS="LIB=$default_perl_install"
-
-@%:@ Check whether --enable-install-system-perl was given.
-if test "${enable_install_system_perl+set}" = set; then :
-  enableval=$enable_install_system_perl; enable_perl_install='yes'
-else
-  enable_perl_install='no'
-fi
-
-
-if test "$enable_perl_install" = 'yes'
-then
-    PERL_INSTALL_OPTIONS=""
-fi
-
-
-
-
-@%:@ Check whether --with-perl was given.
-if test "${with_perl+set}" = set; then :
-  withval=$with_perl; with_perl=$withval
-else
-  with_perl='no'
-fi
-
-
-if test "$with_perl" != 'no'
-then
-  if test "$with_perl" != 'yes'
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl" >&5
-$as_echo_n "checking for perl... " >&6; }
-if ${ac_cv_path_PERL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_path_PERL="$with_perl"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_PERL" >&5
-$as_echo "$ac_cv_path_PERL" >&6; };
-    PERL=$ac_cv_path_PERL
-      else
-    for ac_prog in perl perl5
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PERL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PERL in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PERL=$ac_cv_path_PERL
-if test -n "$PERL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
-$as_echo "$PERL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$PERL" && break
-done
-test -n "$PERL" || PERL="perl"
-  fi
-fi
-
-builddir=`pwd`
-
-GRIB_API_LIB="${builddir}/src/grib_api.a"
-GRIB_API_INC="${builddir}/src"
-
-@%:@ Check whether --with-perl-options was given.
-if test "${with_perl_options+set}" = set; then :
-  withval=$with_perl_options; PERL_MAKE_OPTIONS=$withval
-fi
-
-
-
-
-
- if test $with_perl != no; then
-  WITH_PERL_TRUE=
-  WITH_PERL_FALSE='#'
-else
-  WITH_PERL_TRUE='#'
-  WITH_PERL_FALSE=
-fi
-
-
-@%:@ Check whether --enable-python was given.
-if test "${enable_python+set}" = set; then :
-  enableval=$enable_python; 
-fi
-
-
-@%:@ Check whether --enable-numpy was given.
-if test "${enable_numpy+set}" = set; then :
-  enableval=$enable_numpy; 
-fi
-
-
-if test "x$enable_python" = "xyes"
-then
-      
-      
-
-  
-
-  
-        if test -n "$PYTHON"; then
-      # If the user set $PYTHON, use it and don't search something else.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 2.5" >&5
-$as_echo_n "checking whether $PYTHON version is >= 2.5... " >&6; }
-      prog="import sys
-# split strings by '.' and convert to numeric.  Append some zeros
-# because we need at least 4 digits for the hex conversion.
-# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0]
-minverhex = 0
-# xrange is not present in Python 3.0 and range returns an iterator
-for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
-sys.exit(sys.hexversion < minverhex)"
-  if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5
-   ($PYTHON -c "$prog") >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-			       as_fn_error $? "Python interpreter is too old" "$LINENO" 5
-fi
-      am_display_PYTHON=$PYTHON
-    else
-      # Otherwise, try each interpreter until we find one that satisfies
-      # VERSION.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.5" >&5
-$as_echo_n "checking for a Python interpreter with version >= 2.5... " >&6; }
-if ${am_cv_pathless_PYTHON+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  
-	for am_cv_pathless_PYTHON in python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7  python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do
-	  test "$am_cv_pathless_PYTHON" = none && break
-	  prog="import sys
-# split strings by '.' and convert to numeric.  Append some zeros
-# because we need at least 4 digits for the hex conversion.
-# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0]
-minverhex = 0
-# xrange is not present in Python 3.0 and range returns an iterator
-for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
-sys.exit(sys.hexversion < minverhex)"
-  if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5
-   ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }; then :
-  break
-fi
-	done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
-$as_echo "$am_cv_pathless_PYTHON" >&6; }
-      # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
-      if test "$am_cv_pathless_PYTHON" = none; then
-	PYTHON=:
-      else
-        # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
-set dummy $am_cv_pathless_PYTHON; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PYTHON in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PYTHON=$ac_cv_path_PYTHON
-if test -n "$PYTHON"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-      fi
-      am_display_PYTHON=$am_cv_pathless_PYTHON
-    fi
-  
-
-  if test "$PYTHON" = :; then
-      as_fn_error $? "no suitable Python interpreter found" "$LINENO" 5
-  else
-
-      
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
-$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
-if ${am_cv_python_version+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
-$as_echo "$am_cv_python_version" >&6; }
-  PYTHON_VERSION=$am_cv_python_version
-
-
-        
-  PYTHON_PREFIX='${prefix}'
-
-  PYTHON_EXEC_PREFIX='${exec_prefix}'
-
-
-    
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
-$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
-if ${am_cv_python_platform+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
-$as_echo "$am_cv_python_platform" >&6; }
-  PYTHON_PLATFORM=$am_cv_python_platform
-
-
-  # Just factor out some code duplication.
-  am_python_setup_sysconfig="\
-import sys
-# Prefer sysconfig over distutils.sysconfig, for better compatibility
-# with python 3.x.  See automake bug#10227.
-try:
-    import sysconfig
-except ImportError:
-    can_use_sysconfig = 0
-else:
-    can_use_sysconfig = 1
-# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
-# <https://github.com/pypa/virtualenv/issues/118>
-try:
-    from platform import python_implementation
-    if python_implementation() == 'CPython' and sys.version[:3] == '2.7':
-        can_use_sysconfig = 0
-except ImportError:
-    pass"
-
-  
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
-$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
-if ${am_cv_python_pythondir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$prefix" = xNONE
-     then
-       am_py_prefix=$ac_default_prefix
-     else
-       am_py_prefix=$prefix
-     fi
-     am_cv_python_pythondir=`$PYTHON -c "
-$am_python_setup_sysconfig
-if can_use_sysconfig:
-    sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
-else:
-    from distutils import sysconfig
-    sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
-sys.stdout.write(sitedir)"`
-     case $am_cv_python_pythondir in
-     $am_py_prefix*)
-       am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
-       am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
-       ;;
-     *)
-       case $am_py_prefix in
-         /usr|/System*) ;;
-         *)
-	  am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
-	  ;;
-       esac
-       ;;
-     esac
-    
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
-$as_echo "$am_cv_python_pythondir" >&6; }
-  pythondir=$am_cv_python_pythondir
-
-
-      
-  pkgpythondir=\${pythondir}/$PACKAGE
-
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
-$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
-if ${am_cv_python_pyexecdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$exec_prefix" = xNONE
-     then
-       am_py_exec_prefix=$am_py_prefix
-     else
-       am_py_exec_prefix=$exec_prefix
-     fi
-     am_cv_python_pyexecdir=`$PYTHON -c "
-$am_python_setup_sysconfig
-if can_use_sysconfig:
-    sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
-else:
-    from distutils import sysconfig
-    sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
-sys.stdout.write(sitedir)"`
-     case $am_cv_python_pyexecdir in
-     $am_py_exec_prefix*)
-       am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
-       am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
-       ;;
-     *)
-       case $am_py_exec_prefix in
-         /usr|/System*) ;;
-         *)
-	   am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
-	   ;;
-       esac
-       ;;
-     esac
-    
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
-$as_echo "$am_cv_python_pyexecdir" >&6; }
-  pyexecdir=$am_cv_python_pyexecdir
-
-
-  
-  pkgpyexecdir=\${pyexecdir}/$PACKAGE
-
-
-    
-  fi
-
-
-
-  
-  
-  
-  
-  
-
-  for ac_prog in python$PYTHON_VERSION-config python-config
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON_CONFIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PYTHON_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PYTHON_CONFIG="$PYTHON_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in `dirname $PYTHON`
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PYTHON_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PYTHON_CONFIG=$ac_cv_path_PYTHON_CONFIG
-if test -n "$PYTHON_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CONFIG" >&5
-$as_echo "$PYTHON_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$PYTHON_CONFIG" && break
-done
-test -n "$PYTHON_CONFIG" || PYTHON_CONFIG="no"
-
-  if test "$PYTHON_CONFIG" = no; then :
-  as_fn_error $? "cannot find python-config for $PYTHON." "$LINENO" 5
-fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking python include flags" >&5
-$as_echo_n "checking python include flags... " >&6; }
-  PYTHON_INCLUDES=`$PYTHON_CONFIG --includes`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_INCLUDES" >&5
-$as_echo "$PYTHON_INCLUDES" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking python link flags" >&5
-$as_echo_n "checking python link flags... " >&6; }
-  PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
-$as_echo "$PYTHON_LDFLAGS" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking python C flags" >&5
-$as_echo_n "checking python C flags... " >&6; }
-  PYTHON_CFLAGS=`$PYTHON_CONFIG --cflags`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CFLAGS" >&5
-$as_echo "$PYTHON_CFLAGS" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking python libraries" >&5
-$as_echo_n "checking python libraries... " >&6; }
-  PYTHON_LIBS=`$PYTHON_CONFIG --libs`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LIBS" >&5
-$as_echo "$PYTHON_LIBS" >&6; }
-
-  # macro that gets the include path for Python.h which is used to build
-  # the shared library corresponding to the GRIB API Python module.
-  # AX_PYTHON_DEVEL
-
-  # enable testing scripts if building with Python
-  PYTHON_CHECK='examples/python'
-  
-
-  data_handler=numpy
-  if test "x$enable_numpy" != "xno"
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether numpy is installed" >&5
-$as_echo_n "checking whether numpy is installed... " >&6; }
-
-    has_numpy=`$PYTHON -c "import numpy;print numpy" 2> /dev/null`
-    if test "x$has_numpy" = "x"
-    then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-       as_fn_error $? "NumPy is not installed. Use --disable-numpy if you want to disable Numpy from the build." "$LINENO" 5
-    else
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-       NUMPY_INCLUDE=`$PYTHON -c "import numpy;print numpy.get_include()"`
-       
-    fi
-  else
-    data_handler=array
-  fi
-
-  PYTHON_DATA_HANDLER=$data_handler
-  
-fi
-
- if test x$PYTHON != x; then
-  WITH_PYTHON_TRUE=
-  WITH_PYTHON_FALSE='#'
-else
-  WITH_PYTHON_TRUE='#'
-  WITH_PYTHON_FALSE=
-fi
-
- if test x$FORTRAN_MOD != x; then
-  WITH_FORTRAN_TRUE=
-  WITH_FORTRAN_FALSE='#'
-else
-  WITH_FORTRAN_TRUE='#'
-  WITH_FORTRAN_FALSE=
-fi
-
- if test "x$enable_shared" = xyes; then
-  CREATING_SHARED_LIBS_TRUE=
-  CREATING_SHARED_LIBS_FALSE='#'
-else
-  CREATING_SHARED_LIBS_TRUE='#'
-  CREATING_SHARED_LIBS_FALSE=
-fi
-
-
-
-
-# Extract the first word of "rm", so it can be a program name with args.
-set dummy rm; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RM+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RM"; then
-  ac_cv_prog_RM="$RM" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RM="rm"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RM=$ac_cv_prog_RM
-if test -n "$RM"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RM" >&5
-$as_echo "$RM" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AR="${ac_tool_prefix}ar"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_AR"; then
-  ac_ct_AR=$AR
-  # Extract the first word of "ar", so it can be a program name with args.
-set dummy ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AR="ar"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_AR" = x; then
-    AR="ar"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AR=$ac_ct_AR
-  fi
-else
-  AR="$ac_cv_prog_AR"
-fi
-
-
-WARN_PEDANTIC=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -pedantic -Wall" >&5
-$as_echo_n "checking whether $CC supports -pedantic -Wall... " >&6; }
-if ${grib_api_cv_prog_cc_pedantic__Wall+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_CFLAGS="$CFLAGS"
-CFLAGS="-pedantic -Wall"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  grib_api_cv_prog_cc_pedantic__Wall=yes
-else
-  grib_api_cv_prog_cc_pedantic__Wall=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-CFLAGS="$save_CFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $grib_api_cv_prog_cc_pedantic__Wall" >&5
-$as_echo "$grib_api_cv_prog_cc_pedantic__Wall" >&6; }
-if test $grib_api_cv_prog_cc_pedantic__Wall = yes; then :
-  WARN_PEDANTIC="-pedantic -Wall"
-fi
-
-
-WERROR=
-@%:@ Check whether --enable-werror-always was given.
-if test "${enable_werror_always+set}" = set; then :
-  enableval=$enable_werror_always; 
-else
-  enable_werror_always=no
-fi
-
-if test $enable_werror_always = yes; then :
-  WERROR=-Werror
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pow in -lm" >&5
-$as_echo_n "checking for pow in -lm... " >&6; }
-if ${ac_cv_lib_m_pow+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char pow ();
-int
-main ()
-{
-return pow ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_m_pow=yes
-else
-  ac_cv_lib_m_pow=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_pow" >&5
-$as_echo "$ac_cv_lib_m_pow" >&6; }
-if test "x$ac_cv_lib_m_pow" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_LIBM 1
-_ACEOF
-
-  LIBS="-lm $LIBS"
-
-fi
-
-
-ac_header_dirent=no
-for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
-  as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
-$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; }
-if eval \${$as_ac_Header+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <$ac_hdr>
-
-int
-main ()
-{
-if ((DIR *) 0)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$as_ac_Header=yes"
-else
-  eval "$as_ac_Header=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$as_ac_Header
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
-_ACEOF
-
-ac_header_dirent=$ac_hdr; break
-fi
-
-done
-# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
-if test $ac_header_dirent = dirent.h; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char opendir ();
-int
-main ()
-{
-return opendir ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' dir; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_opendir=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_opendir+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_opendir+:} false; then :
-  
-else
-  ac_cv_search_opendir=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
-ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-  
-fi
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char opendir ();
-int
-main ()
-{
-return opendir ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' x; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_opendir=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_opendir+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_opendir+:} false; then :
-  
-else
-  ac_cv_search_opendir=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
-ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-  
-fi
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-  
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-  
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-  
-$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-for ac_header in stddef.h stdlib.h string.h sys/param.h sys/time.h unistd.h math.h stdarg.h assert.h ctype.h fcntl.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- 
-fi
-
-done
-
-
-ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
-  
-else
-  
-cat >>confdefs.h <<_ACEOF
-@%:@define size_t unsigned int
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
-$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
-if ${ac_cv_header_time+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
-
-int
-main ()
-{
-if ((struct tm *) 0)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_time=yes
-else
-  ac_cv_header_time=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
-$as_echo "$ac_cv_header_time" >&6; }
-if test $ac_cv_header_time = yes; then
-  
-$as_echo "@%:@define TIME_WITH_SYS_TIME 1" >>confdefs.h
-
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5
-$as_echo_n "checking whether closedir returns void... " >&6; }
-if ${ac_cv_func_closedir_void+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ac_cv_func_closedir_void=yes
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header_dirent>
-#ifndef __cplusplus
-int closedir ();
-#endif
-
-int
-main ()
-{
-return closedir (opendir (".")) != 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_func_closedir_void=no
-else
-  ac_cv_func_closedir_void=yes
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_closedir_void" >&5
-$as_echo "$ac_cv_func_closedir_void" >&6; }
-if test $ac_cv_func_closedir_void = yes; then
-  
-$as_echo "@%:@define CLOSEDIR_VOID 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5
-$as_echo_n "checking return type of signal handlers... " >&6; }
-if ${ac_cv_type_signal+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <signal.h>
-
-int
-main ()
-{
-return *(signal (0, 0)) (0) == 1;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_type_signal=int
-else
-  ac_cv_type_signal=void
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5
-$as_echo "$ac_cv_type_signal" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-@%:@define RETSIGTYPE $ac_cv_type_signal
-_ACEOF
-
-
-for ac_func in vprintf
-do :
-  ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf"
-if test "x$ac_cv_func_vprintf" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_VPRINTF 1
-_ACEOF
- 
-ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
-if test "x$ac_cv_func__doprnt" = xyes; then :
-  
-$as_echo "@%:@define HAVE_DOPRNT 1" >>confdefs.h
-
-fi
-
-fi
-done
-
-
-for ac_func in bzero gettimeofday
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
- 
-fi
-done
-
-
-
-HOST_CPU=${host_cpu}
-HOST_VENDOR=${host_vendor}
-HOST_OS=${host_os}
-
-if test x$HOST_OS = "xlinux-gnu"
-then
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Linux distribution " >&5
-$as_echo_n "checking for Linux distribution ... " >&6; }
-
-	# This works for Fedora, RedHat and Slackware
-	for f in /etc/fedora-release /etc/redhat-release /etc/slackware-release
-	do
-		if test -f $f; then
-			distro=`cat $f`	
-			break
-		fi
-	done	
-
-	# This works in Ubuntu (11 at least)
-	if test -f /etc/lsb-release; then
-		distro=`cat /etc/lsb-release | grep DISTRIB_ID | awk -F= '{print }' `
-		distro_version=`cat /etc/lsb-release | grep DISTRIB_RELEASE | awk -F= '{print }' `
-	fi
-
-	# For SuSE
-	if test -f /etc/SuSE-release; then
-		distro=`cat /etc/SuSE-release | head -1`
-		#distro_version=`cat /etc/SuSE-release | tail -1 | awk -F= '{print }' `
-	fi
-
-	# At least Debian has this
-	if test -f /etc/issue.net -a "x$distro" = x; then
-		distro=`cat /etc/issue.net | head -1`
-	fi
-
-	# Everything else
-	if test "x$distro" = x; then
-		distro="Unknown Linux"
-	fi
-	
-	LINUX_DISTRIBUTION_NAME=$distro
-	LINUX_DISTRIBUTION_VERSION=$distro_version
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINUX_DISTRIBUTION_NAME $LINUX_DISTRIBUTION_VERSION" >&5
-$as_echo "$LINUX_DISTRIBUTION_NAME $LINUX_DISTRIBUTION_VERSION" >&6; }
-
-else
-	LINUX_DISTRIBUTION_NAME=$HOST_OS
-	LINUX_DISTRIBUTION_VERSION=""
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: OS is non-Linux UNIX $HOST_OS." >&5
-$as_echo "$as_me: OS is non-Linux UNIX $HOST_OS." >&6;}
-fi
-
-
-
-
-
-ac_config_files="$ac_config_files Makefile src/Makefile fortran/Makefile tools/Makefile data/Makefile definitions/Makefile samples/Makefile ifs_samples/grib1/Makefile ifs_samples/grib1_mlgrib2/Makefile ifs_samples/grib1_mlgrib2_ieee64/Makefile tests/Makefile examples/C/Makefile examples/F90/Makefile tigge/Makefile perl/GRIB-API/Makefile.PL perl/Makefile python/Makefile examples/python/Makefile"
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems.  If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
-  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-
-  (set) 2>&1 |
-    case $as_nl`(ac_space=' '; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes: double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \.
-      sed -n \
-	"s/'/'\\\\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-      ;; #(
-    *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-) |
-  sed '
-     /^ac_cv_env_/b end
-     t clear
-     :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-     t end
-     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-     :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
-  if test -w "$cache_file"; then
-    if test "x$cache_file" != "x/dev/null"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
-      if test ! -f "$cache_file" || test -h "$cache_file"; then
-	cat confcache >"$cache_file"
-      else
-        case $cache_file in #(
-        */* | ?:*)
-	  mv -f confcache "$cache_file"$$ &&
-	  mv -f "$cache_file"$$ "$cache_file" ;; #(
-        *)
-	  mv -f confcache "$cache_file" ;;
-	esac
-      fi
-    fi
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
-  fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-DEFS=-DHAVE_CONFIG_H
-
-ac_libobjs=
-ac_ltlibobjs=
-U=
-for ac_i in : $LIB@&t at OBJS; do test "x$ac_i" = x: && continue
-  # 1. Remove the extension, and $U if already installed.
-  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
-  #    will be set to the directory where LIBOBJS objects are built.
-  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIB@&t at OBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
-$as_echo_n "checking that generated files are newer than configure... " >&6; }
-   if test -n "$am_sleep_pid"; then
-     # Hide warnings about reused PIDs.
-     wait $am_sleep_pid 2>/dev/null
-   fi
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
-$as_echo "done" >&6; }
-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  as_fn_error $? "conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
- if test -n "$EXEEXT"; then
-  am__EXEEXT_TRUE=
-  am__EXEEXT_FALSE='#'
-else
-  am__EXEEXT_TRUE='#'
-  am__EXEEXT_FALSE=
-fi
-
-if test -z "${UPPER_CASE_MOD_TRUE}" && test -z "${UPPER_CASE_MOD_FALSE}"; then
-  as_fn_error $? "conditional \"UPPER_CASE_MOD\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${WITH_MARS_TESTS_TRUE}" && test -z "${WITH_MARS_TESTS_FALSE}"; then
-  as_fn_error $? "conditional \"WITH_MARS_TESTS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${UPPER_CASE_MOD_TRUE}" && test -z "${UPPER_CASE_MOD_FALSE}"; then
-  as_fn_error $? "conditional \"UPPER_CASE_MOD\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${DEBUG_IN_MOD_TRUE}" && test -z "${DEBUG_IN_MOD_FALSE}"; then
-  as_fn_error $? "conditional \"DEBUG_IN_MOD\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${WITH_PERL_TRUE}" && test -z "${WITH_PERL_FALSE}"; then
-  as_fn_error $? "conditional \"WITH_PERL\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${WITH_PYTHON_TRUE}" && test -z "${WITH_PYTHON_FALSE}"; then
-  as_fn_error $? "conditional \"WITH_PYTHON\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${WITH_FORTRAN_TRUE}" && test -z "${WITH_FORTRAN_FALSE}"; then
-  as_fn_error $? "conditional \"WITH_FORTRAN\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${CREATING_SHARED_LIBS_TRUE}" && test -z "${CREATING_SHARED_LIBS_FALSE}"; then
-  as_fn_error $? "conditional \"CREATING_SHARED_LIBS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-
-: "${CONFIG_STATUS=./config.status}"
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in @%:@(
-  *posix*) :
-    set -o posix ;; @%:@(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in @%:@(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in @%:@((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
-@%:@ ----------------------------------------
-@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-@%:@ script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} @%:@ as_fn_error
-
-
-@%:@ as_fn_set_status STATUS
-@%:@ -----------------------
-@%:@ Set @S|@? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} @%:@ as_fn_set_status
-
-@%:@ as_fn_exit STATUS
-@%:@ -----------------
-@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} @%:@ as_fn_exit
-
-@%:@ as_fn_unset VAR
-@%:@ ---------------
-@%:@ Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-@%:@ as_fn_append VAR VALUE
-@%:@ ----------------------
-@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
-@%:@ advantage of any shell optimizations that allow amortized linear growth over
-@%:@ repeated appends, instead of the typical quadratic growth present in naive
-@%:@ implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-@%:@ as_fn_arith ARG...
-@%:@ ------------------
-@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
-@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
-@%:@ must be portable across @S|@(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in @%:@(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-@%:@ as_fn_mkdir_p
-@%:@ -------------
-@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} @%:@ as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-
-@%:@ as_fn_executable_p FILE
-@%:@ -----------------------
-@%:@ Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} @%:@ as_fn_executable_p
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by eccodes $as_me  , which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-case $ac_config_headers in *"
-"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
-esac
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_headers="$ac_config_headers"
-config_commands="$ac_config_commands"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration.  Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number and configuration settings, then exit
-      --config     print configuration, then exit
-  -q, --quiet, --silent
-                   do not print progress messages
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-      --file=FILE[:TEMPLATE] 
-                   instantiate the configuration file FILE
-      --header=FILE[:TEMPLATE] 
-                   instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Configuration commands:
-$config_commands
-
-Report bugs to <Software.Support at ecmwf.int>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-eccodes config.status  
-configured by $0, generated by GNU Autoconf 2.69,
-  with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-MKDIR_P='$MKDIR_P'
-AWK='$AWK'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=?*)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
-    ac_shift=:
-    ;;
-  --*=)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=
-    ac_shift=:
-    ;;
-  *)
-    ac_option=$1
-    ac_optarg=$2
-    ac_shift=shift
-    ;;
-  esac
-
-  case $ac_option in
-  # Handling of the options.
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    ac_cs_recheck=: ;;
-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
-  --config | --confi | --conf | --con | --co | --c )
-    $as_echo "$ac_cs_config"; exit ;;
-  --debug | --debu | --deb | --de | --d | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    '') as_fn_error $? "missing file argument" ;;
-    esac
-    as_fn_append CONFIG_FILES " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --header | --heade | --head | --hea )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --he | --h)
-    # Conflict between --help and --header
-    as_fn_error $? "ambiguous option: \`$1'
-Try \`$0 --help' for more information.";;
-  --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil | --si | --s)
-    ac_cs_silent=: ;;
-
-  # This is an error.
-  -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
-  *) as_fn_append ac_config_targets " $1"
-     ac_need_defaults=false ;;
-
-  esac
-  shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
-  exec 6>/dev/null
-  ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
-  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-  shift
-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
-  CONFIG_SHELL='$SHELL'
-  export CONFIG_SHELL
-  exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
-@%:@@%:@ Running $as_me. @%:@@%:@
-_ASBOX
-  $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-#
-# INIT-COMMANDS
-#
-
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
-macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
-enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
-enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
-pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
-enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
-SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
-ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
-PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
-host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
-host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
-host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
-build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
-build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
-build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
-SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
-Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
-GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
-EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
-FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
-LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
-NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
-LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
-max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
-ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
-exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
-lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
-lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
-lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
-reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
-reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
-OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
-deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
-file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
-file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
-want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
-DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
-sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
-AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
-AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
-archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
-STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
-RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
-old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
-lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
-CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
-CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
-compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
-GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
-nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
-lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
-objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
-MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
-need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
-MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
-DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
-NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
-LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
-OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
-libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
-shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
-extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
-hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
-inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
-always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
-include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
-prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
-postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
-file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
-variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
-need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
-version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
-runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
-libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
-library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
-soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
-install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
-postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
-finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
-hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
-sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
-sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
-enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
-old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
-striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`'
-predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`'
-postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`'
-predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`'
-postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`'
-LD_F77='`$ECHO "$LD_F77" | $SED "$delay_single_quote_subst"`'
-LD_FC='`$ECHO "$LD_FC" | $SED "$delay_single_quote_subst"`'
-reload_flag_F77='`$ECHO "$reload_flag_F77" | $SED "$delay_single_quote_subst"`'
-reload_flag_FC='`$ECHO "$reload_flag_FC" | $SED "$delay_single_quote_subst"`'
-reload_cmds_F77='`$ECHO "$reload_cmds_F77" | $SED "$delay_single_quote_subst"`'
-reload_cmds_FC='`$ECHO "$reload_cmds_FC" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds_F77='`$ECHO "$old_archive_cmds_F77" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds_FC='`$ECHO "$old_archive_cmds_FC" | $SED "$delay_single_quote_subst"`'
-compiler_F77='`$ECHO "$compiler_F77" | $SED "$delay_single_quote_subst"`'
-compiler_FC='`$ECHO "$compiler_FC" | $SED "$delay_single_quote_subst"`'
-GCC_F77='`$ECHO "$GCC_F77" | $SED "$delay_single_quote_subst"`'
-GCC_FC='`$ECHO "$GCC_FC" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag_F77='`$ECHO "$lt_prog_compiler_no_builtin_flag_F77" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag_FC='`$ECHO "$lt_prog_compiler_no_builtin_flag_FC" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic_F77='`$ECHO "$lt_prog_compiler_pic_F77" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic_FC='`$ECHO "$lt_prog_compiler_pic_FC" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl_F77='`$ECHO "$lt_prog_compiler_wl_F77" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl_FC='`$ECHO "$lt_prog_compiler_wl_FC" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static_F77='`$ECHO "$lt_prog_compiler_static_F77" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static_FC='`$ECHO "$lt_prog_compiler_static_FC" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o_F77='`$ECHO "$lt_cv_prog_compiler_c_o_F77" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o_FC='`$ECHO "$lt_cv_prog_compiler_c_o_FC" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc_F77='`$ECHO "$archive_cmds_need_lc_F77" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc_FC='`$ECHO "$archive_cmds_need_lc_FC" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes_F77='`$ECHO "$enable_shared_with_static_runtimes_F77" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes_FC='`$ECHO "$enable_shared_with_static_runtimes_FC" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec_F77='`$ECHO "$export_dynamic_flag_spec_F77" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec_FC='`$ECHO "$export_dynamic_flag_spec_FC" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec_F77='`$ECHO "$whole_archive_flag_spec_F77" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec_FC='`$ECHO "$whole_archive_flag_spec_FC" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object_F77='`$ECHO "$compiler_needs_object_F77" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object_FC='`$ECHO "$compiler_needs_object_FC" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds_F77='`$ECHO "$old_archive_from_new_cmds_F77" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds_FC='`$ECHO "$old_archive_from_new_cmds_FC" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds_F77='`$ECHO "$old_archive_from_expsyms_cmds_F77" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds_FC='`$ECHO "$old_archive_from_expsyms_cmds_FC" | $SED "$delay_single_quote_subst"`'
-archive_cmds_F77='`$ECHO "$archive_cmds_F77" | $SED "$delay_single_quote_subst"`'
-archive_cmds_FC='`$ECHO "$archive_cmds_FC" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds_F77='`$ECHO "$archive_expsym_cmds_F77" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds_FC='`$ECHO "$archive_expsym_cmds_FC" | $SED "$delay_single_quote_subst"`'
-module_cmds_F77='`$ECHO "$module_cmds_F77" | $SED "$delay_single_quote_subst"`'
-module_cmds_FC='`$ECHO "$module_cmds_FC" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds_F77='`$ECHO "$module_expsym_cmds_F77" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds_FC='`$ECHO "$module_expsym_cmds_FC" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld_F77='`$ECHO "$with_gnu_ld_F77" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld_FC='`$ECHO "$with_gnu_ld_FC" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag_F77='`$ECHO "$allow_undefined_flag_F77" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag_FC='`$ECHO "$allow_undefined_flag_FC" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag_F77='`$ECHO "$no_undefined_flag_F77" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag_FC='`$ECHO "$no_undefined_flag_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_F77='`$ECHO "$hardcode_libdir_flag_spec_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_FC='`$ECHO "$hardcode_libdir_flag_spec_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator_F77='`$ECHO "$hardcode_libdir_separator_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator_FC='`$ECHO "$hardcode_libdir_separator_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_F77='`$ECHO "$hardcode_direct_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_FC='`$ECHO "$hardcode_direct_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute_F77='`$ECHO "$hardcode_direct_absolute_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute_FC='`$ECHO "$hardcode_direct_absolute_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L_F77='`$ECHO "$hardcode_minus_L_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L_FC='`$ECHO "$hardcode_minus_L_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var_F77='`$ECHO "$hardcode_shlibpath_var_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var_FC='`$ECHO "$hardcode_shlibpath_var_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic_F77='`$ECHO "$hardcode_automatic_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic_FC='`$ECHO "$hardcode_automatic_FC" | $SED "$delay_single_quote_subst"`'
-inherit_rpath_F77='`$ECHO "$inherit_rpath_F77" | $SED "$delay_single_quote_subst"`'
-inherit_rpath_FC='`$ECHO "$inherit_rpath_FC" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs_F77='`$ECHO "$link_all_deplibs_F77" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs_FC='`$ECHO "$link_all_deplibs_FC" | $SED "$delay_single_quote_subst"`'
-always_export_symbols_F77='`$ECHO "$always_export_symbols_F77" | $SED "$delay_single_quote_subst"`'
-always_export_symbols_FC='`$ECHO "$always_export_symbols_FC" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds_F77='`$ECHO "$export_symbols_cmds_F77" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds_FC='`$ECHO "$export_symbols_cmds_FC" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms_F77='`$ECHO "$exclude_expsyms_F77" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms_FC='`$ECHO "$exclude_expsyms_FC" | $SED "$delay_single_quote_subst"`'
-include_expsyms_F77='`$ECHO "$include_expsyms_F77" | $SED "$delay_single_quote_subst"`'
-include_expsyms_FC='`$ECHO "$include_expsyms_FC" | $SED "$delay_single_quote_subst"`'
-prelink_cmds_F77='`$ECHO "$prelink_cmds_F77" | $SED "$delay_single_quote_subst"`'
-prelink_cmds_FC='`$ECHO "$prelink_cmds_FC" | $SED "$delay_single_quote_subst"`'
-postlink_cmds_F77='`$ECHO "$postlink_cmds_F77" | $SED "$delay_single_quote_subst"`'
-postlink_cmds_FC='`$ECHO "$postlink_cmds_FC" | $SED "$delay_single_quote_subst"`'
-file_list_spec_F77='`$ECHO "$file_list_spec_F77" | $SED "$delay_single_quote_subst"`'
-file_list_spec_FC='`$ECHO "$file_list_spec_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_action_F77='`$ECHO "$hardcode_action_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_action_FC='`$ECHO "$hardcode_action_FC" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_dirs_F77='`$ECHO "$compiler_lib_search_dirs_F77" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_dirs_FC='`$ECHO "$compiler_lib_search_dirs_FC" | $SED "$delay_single_quote_subst"`'
-predep_objects_F77='`$ECHO "$predep_objects_F77" | $SED "$delay_single_quote_subst"`'
-predep_objects_FC='`$ECHO "$predep_objects_FC" | $SED "$delay_single_quote_subst"`'
-postdep_objects_F77='`$ECHO "$postdep_objects_F77" | $SED "$delay_single_quote_subst"`'
-postdep_objects_FC='`$ECHO "$postdep_objects_FC" | $SED "$delay_single_quote_subst"`'
-predeps_F77='`$ECHO "$predeps_F77" | $SED "$delay_single_quote_subst"`'
-predeps_FC='`$ECHO "$predeps_FC" | $SED "$delay_single_quote_subst"`'
-postdeps_F77='`$ECHO "$postdeps_F77" | $SED "$delay_single_quote_subst"`'
-postdeps_FC='`$ECHO "$postdeps_FC" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path_F77='`$ECHO "$compiler_lib_search_path_F77" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path_FC='`$ECHO "$compiler_lib_search_path_FC" | $SED "$delay_single_quote_subst"`'
-
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$1
-_LTECHO_EOF'
-}
-
-# Quote evaled strings.
-for var in SHELL \
-ECHO \
-PATH_SEPARATOR \
-SED \
-GREP \
-EGREP \
-FGREP \
-LD \
-NM \
-LN_S \
-lt_SP2NL \
-lt_NL2SP \
-reload_flag \
-OBJDUMP \
-deplibs_check_method \
-file_magic_cmd \
-file_magic_glob \
-want_nocaseglob \
-DLLTOOL \
-sharedlib_from_linklib_cmd \
-AR \
-AR_FLAGS \
-archiver_list_spec \
-STRIP \
-RANLIB \
-CC \
-CFLAGS \
-compiler \
-lt_cv_sys_global_symbol_pipe \
-lt_cv_sys_global_symbol_to_cdecl \
-lt_cv_sys_global_symbol_to_c_name_address \
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
-nm_file_list_spec \
-lt_prog_compiler_no_builtin_flag \
-lt_prog_compiler_pic \
-lt_prog_compiler_wl \
-lt_prog_compiler_static \
-lt_cv_prog_compiler_c_o \
-need_locks \
-MANIFEST_TOOL \
-DSYMUTIL \
-NMEDIT \
-LIPO \
-OTOOL \
-OTOOL64 \
-shrext_cmds \
-export_dynamic_flag_spec \
-whole_archive_flag_spec \
-compiler_needs_object \
-with_gnu_ld \
-allow_undefined_flag \
-no_undefined_flag \
-hardcode_libdir_flag_spec \
-hardcode_libdir_separator \
-exclude_expsyms \
-include_expsyms \
-file_list_spec \
-variables_saved_for_relink \
-libname_spec \
-library_names_spec \
-soname_spec \
-install_override_mode \
-finish_eval \
-old_striplib \
-striplib \
-compiler_lib_search_dirs \
-predep_objects \
-postdep_objects \
-predeps \
-postdeps \
-compiler_lib_search_path \
-LD_F77 \
-LD_FC \
-reload_flag_F77 \
-reload_flag_FC \
-compiler_F77 \
-compiler_FC \
-lt_prog_compiler_no_builtin_flag_F77 \
-lt_prog_compiler_no_builtin_flag_FC \
-lt_prog_compiler_pic_F77 \
-lt_prog_compiler_pic_FC \
-lt_prog_compiler_wl_F77 \
-lt_prog_compiler_wl_FC \
-lt_prog_compiler_static_F77 \
-lt_prog_compiler_static_FC \
-lt_cv_prog_compiler_c_o_F77 \
-lt_cv_prog_compiler_c_o_FC \
-export_dynamic_flag_spec_F77 \
-export_dynamic_flag_spec_FC \
-whole_archive_flag_spec_F77 \
-whole_archive_flag_spec_FC \
-compiler_needs_object_F77 \
-compiler_needs_object_FC \
-with_gnu_ld_F77 \
-with_gnu_ld_FC \
-allow_undefined_flag_F77 \
-allow_undefined_flag_FC \
-no_undefined_flag_F77 \
-no_undefined_flag_FC \
-hardcode_libdir_flag_spec_F77 \
-hardcode_libdir_flag_spec_FC \
-hardcode_libdir_separator_F77 \
-hardcode_libdir_separator_FC \
-exclude_expsyms_F77 \
-exclude_expsyms_FC \
-include_expsyms_F77 \
-include_expsyms_FC \
-file_list_spec_F77 \
-file_list_spec_FC \
-compiler_lib_search_dirs_F77 \
-compiler_lib_search_dirs_FC \
-predep_objects_F77 \
-predep_objects_FC \
-postdep_objects_F77 \
-postdep_objects_FC \
-predeps_F77 \
-predeps_FC \
-postdeps_F77 \
-postdeps_FC \
-compiler_lib_search_path_F77 \
-compiler_lib_search_path_FC; do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Double-quote double-evaled strings.
-for var in reload_cmds \
-old_postinstall_cmds \
-old_postuninstall_cmds \
-old_archive_cmds \
-extract_expsyms_cmds \
-old_archive_from_new_cmds \
-old_archive_from_expsyms_cmds \
-archive_cmds \
-archive_expsym_cmds \
-module_cmds \
-module_expsym_cmds \
-export_symbols_cmds \
-prelink_cmds \
-postlink_cmds \
-postinstall_cmds \
-postuninstall_cmds \
-finish_cmds \
-sys_lib_search_path_spec \
-sys_lib_dlsearch_path_spec \
-reload_cmds_F77 \
-reload_cmds_FC \
-old_archive_cmds_F77 \
-old_archive_cmds_FC \
-old_archive_from_new_cmds_F77 \
-old_archive_from_new_cmds_FC \
-old_archive_from_expsyms_cmds_F77 \
-old_archive_from_expsyms_cmds_FC \
-archive_cmds_F77 \
-archive_cmds_FC \
-archive_expsym_cmds_F77 \
-archive_expsym_cmds_FC \
-module_cmds_F77 \
-module_cmds_FC \
-module_expsym_cmds_F77 \
-module_expsym_cmds_FC \
-export_symbols_cmds_F77 \
-export_symbols_cmds_FC \
-prelink_cmds_F77 \
-prelink_cmds_FC \
-postlink_cmds_F77 \
-postlink_cmds_FC; do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-ac_aux_dir='$ac_aux_dir'
-xsi_shell='$xsi_shell'
-lt_shell_append='$lt_shell_append'
-
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-
-    PACKAGE='$PACKAGE'
-    VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
-    RM='$RM'
-    ofile='$ofile'
-
-
-
-
-
-
-
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
-  case $ac_config_target in
-    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
-    "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;;
-    "src/eccodes_version.h") CONFIG_FILES="$CONFIG_FILES src/eccodes_version.h" ;;
-    "rpms/eccodes.pc") CONFIG_FILES="$CONFIG_FILES rpms/eccodes.pc" ;;
-    "rpms/eccodes.spec") CONFIG_FILES="$CONFIG_FILES rpms/eccodes.spec" ;;
-    "rpms/eccodes_f90.pc") CONFIG_FILES="$CONFIG_FILES rpms/eccodes_f90.pc" ;;
-    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
-    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
-    "fortran/Makefile") CONFIG_FILES="$CONFIG_FILES fortran/Makefile" ;;
-    "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;;
-    "data/Makefile") CONFIG_FILES="$CONFIG_FILES data/Makefile" ;;
-    "definitions/Makefile") CONFIG_FILES="$CONFIG_FILES definitions/Makefile" ;;
-    "samples/Makefile") CONFIG_FILES="$CONFIG_FILES samples/Makefile" ;;
-    "ifs_samples/grib1/Makefile") CONFIG_FILES="$CONFIG_FILES ifs_samples/grib1/Makefile" ;;
-    "ifs_samples/grib1_mlgrib2/Makefile") CONFIG_FILES="$CONFIG_FILES ifs_samples/grib1_mlgrib2/Makefile" ;;
-    "ifs_samples/grib1_mlgrib2_ieee64/Makefile") CONFIG_FILES="$CONFIG_FILES ifs_samples/grib1_mlgrib2_ieee64/Makefile" ;;
-    "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
-    "examples/C/Makefile") CONFIG_FILES="$CONFIG_FILES examples/C/Makefile" ;;
-    "examples/F90/Makefile") CONFIG_FILES="$CONFIG_FILES examples/F90/Makefile" ;;
-    "tigge/Makefile") CONFIG_FILES="$CONFIG_FILES tigge/Makefile" ;;
-    "perl/GRIB-API/Makefile.PL") CONFIG_FILES="$CONFIG_FILES perl/GRIB-API/Makefile.PL" ;;
-    "perl/Makefile") CONFIG_FILES="$CONFIG_FILES perl/Makefile" ;;
-    "python/Makefile") CONFIG_FILES="$CONFIG_FILES python/Makefile" ;;
-    "examples/python/Makefile") CONFIG_FILES="$CONFIG_FILES examples/python/Makefile" ;;
-
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
-  esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience.  Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
-  tmp= ac_tmp=
-  trap 'exit_status=$?
-  : "${ac_tmp:=$tmp}"
-  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
-' 0
-  trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -d "$tmp"
-}  ||
-{
-  tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-ac_tmp=$tmp
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
-  eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-  ac_cs_awk_cr='\\r'
-else
-  ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
-_ACEOF
-
-
-{
-  echo "cat >conf$$subs.awk <<_ACEOF" &&
-  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
-  echo "_ACEOF"
-} >conf$$subs.sh ||
-  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  . ./conf$$subs.sh ||
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-
-  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
-  if test $ac_delim_n = $ac_delim_num; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\)..*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\)..*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
-  N
-  s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
-  for (key in S) S_is_set[key] = 1
-  FS = ""
-
-}
-{
-  line = $ 0
-  nfields = split(line, field, "@")
-  substed = 0
-  len = length(field[1])
-  for (i = 2; i < nfields; i++) {
-    key = field[i]
-    keylen = length(key)
-    if (S_is_set[key]) {
-      value = S[key]
-      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
-      len += length(value) + length(field[++i])
-      substed = 1
-    } else
-      len += 1 + keylen
-  }
-
-  print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
-  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
-  cat
-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
-  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
-# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
-h
-s///
-s/^/:/
-s/[	 ]*$/:/
-s/:\$(srcdir):/:/g
-s/:\${srcdir}:/:/g
-s/:@srcdir@:/:/g
-s/^:*//
-s/:*$//
-x
-s/\(=[	 ]*\).*/\1/
-G
-s/\n//
-s/^[^=]*=[	 ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-# Set up the scripts for CONFIG_HEADERS section.
-# No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
-if test -n "$CONFIG_HEADERS"; then
-cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
-BEGIN {
-_ACEOF
-
-# Transform confdefs.h into an awk script `defines.awk', embedded as
-# here-document in config.status, that substitutes the proper values into
-# config.h.in to produce config.h.
-
-# Create a delimiter string that does not exist in confdefs.h, to ease
-# handling of long lines.
-ac_delim='%!_!# '
-for ac_last_try in false false :; do
-  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
-  if test -z "$ac_tt"; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-
-# For the awk script, D is an array of macro values keyed by name,
-# likewise P contains macro parameters if any.  Preserve backslash
-# newline sequences.
-
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-sed -n '
-s/.\{148\}/&'"$ac_delim"'/g
-t rset
-:rset
-s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
-t def
-d
-:def
-s/\\$//
-t bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3"/p
-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
-d
-:bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3\\\\\\n"\\/p
-t cont
-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
-t cont
-d
-:cont
-n
-s/.\{148\}/&'"$ac_delim"'/g
-t clear
-:clear
-s/\\$//
-t bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/"/p
-d
-:bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
-b cont
-' <confdefs.h | sed '
-s/'"$ac_delim"'/"\\\
-"/g' >>$CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  for (key in D) D_is_set[key] = 1
-  FS = ""
-}
-/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
-  line = \$ 0
-  split(line, arg, " ")
-  if (arg[1] == "#") {
-    defundef = arg[2]
-    mac1 = arg[3]
-  } else {
-    defundef = substr(arg[1], 2)
-    mac1 = arg[2]
-  }
-  split(mac1, mac2, "(") #)
-  macro = mac2[1]
-  prefix = substr(line, 1, index(line, defundef) - 1)
-  if (D_is_set[macro]) {
-    # Preserve the white space surrounding the "#".
-    print prefix "define", macro P[macro] D[macro]
-    next
-  } else {
-    # Replace #undef with comments.  This is necessary, for example,
-    # in the case of _POSIX_SOURCE, which is predefined and required
-    # on some systems where configure will not decide to define it.
-    if (defundef == "undef") {
-      print "/*", prefix defundef, macro, "*/"
-      next
-    }
-  }
-}
-{ print }
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
-fi # test -n "$CONFIG_HEADERS"
-
-
-eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
-shift
-for ac_tag
-do
-  case $ac_tag in
-  :[FHLC]) ac_mode=$ac_tag; continue;;
-  esac
-  case $ac_mode$ac_tag in
-  :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
-  :[FH]-) ac_tag=-:-;;
-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-  esac
-  ac_save_IFS=$IFS
-  IFS=:
-  set x $ac_tag
-  IFS=$ac_save_IFS
-  shift
-  ac_file=$1
-  shift
-
-  case $ac_mode in
-  :L) ac_source=$1;;
-  :[FH])
-    ac_file_inputs=
-    for ac_f
-    do
-      case $ac_f in
-      -) ac_f="$ac_tmp/stdin";;
-      *) # Look for the file first in the build tree, then in the source tree
-	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
-	 # because $ac_f cannot contain `:'.
-	 test -f "$ac_f" ||
-	   case $ac_f in
-	   [\\/$]*) false;;
-	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
-	   esac ||
-	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
-      esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      as_fn_append ac_file_inputs " '$ac_f'"
-    done
-
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
-    # use $as_me), people would be surprised to read:
-    #    /* config.h.  Generated by config.status.  */
-    configure_input='Generated from '`
-	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
-	`' by configure.'
-    if test x"$ac_file" != x-; then
-      configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
-    fi
-    # Neutralize special characters interpreted by sed in replacement strings.
-    case $configure_input in #(
-    *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
-       sed 's/[\\\\&|]/\\\\&/g'`;; #(
-    *) ac_sed_conf_input=$configure_input;;
-    esac
-
-    case $ac_tag in
-    *:-:* | *:-) cat >"$ac_tmp/stdin" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
-    esac
-    ;;
-  esac
-
-  ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$ac_file" : 'X\(//\)[^/]' \| \
-	 X"$ac_file" : 'X\(//\)$' \| \
-	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  as_dir="$ac_dir"; as_fn_mkdir_p
-  ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-  case $ac_mode in
-  :F)
-  #
-  # CONFIG_FILE
-  #
-
-  case $INSTALL in
-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
-  esac
-  ac_MKDIR_P=$MKDIR_P
-  case $MKDIR_P in
-  [\\/$]* | ?:[\\/]* ) ;;
-  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
-  esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
-  p
-  q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  ac_datarootdir_hack='
-  s&@datadir@&$datadir&g
-  s&@docdir@&$docdir&g
-  s&@infodir@&$infodir&g
-  s&@localedir@&$localedir&g
-  s&@mandir@&$mandir&g
-  s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-s&@MKDIR_P@&$ac_MKDIR_P&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
-  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
-      "$ac_tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&2;}
-
-  rm -f "$ac_tmp/stdin"
-  case $ac_file in
-  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
-  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
-  esac \
-  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- ;;
-  :H)
-  #
-  # CONFIG_HEADER
-  #
-  if test x"$ac_file" != x-; then
-    {
-      $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
-    } >"$ac_tmp/config.h" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
-    else
-      rm -f "$ac_file"
-      mv "$ac_tmp/config.h" "$ac_file" \
-	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    fi
-  else
-    $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
-      || as_fn_error $? "could not create -" "$LINENO" 5
-  fi
-# Compute "$ac_file"'s index in $config_headers.
-_am_arg="$ac_file"
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
-$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$_am_arg" : 'X\(//\)[^/]' \| \
-	 X"$_am_arg" : 'X\(//\)$' \| \
-	 X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$_am_arg" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`/stamp-h$_am_stamp_count
- ;;
-  
-  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
- ;;
-  esac
-
-
-  case $ac_file$ac_mode in
-    "libtool":C) 
-    
-    # See if we are running on zsh, and set the options which allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
-      setopt NO_GLOB_SUBST
-    fi
-
-    cfgfile="${ofile}T"
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
-
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-#                 Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-
-# The names of the tagged configurations supported by this script.
-available_tags="F77 FC "
-
-# ### BEGIN LIBTOOL CONFIG
-
-# Which release of libtool.m4 was used?
-macro_version=$macro_version
-macro_revision=$macro_revision
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# What type of objects to build.
-pic_mode=$pic_mode
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# An echo program that protects backslashes.
-ECHO=$lt_ECHO
-
-# The PATH separator for the build system.
-PATH_SEPARATOR=$lt_PATH_SEPARATOR
-
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
-
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
-
-# A sed program that does not truncate output.
-SED=$lt_SED
-
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="\$SED -e 1s/^X//"
-
-# A grep program that handles long lines.
-GREP=$lt_GREP
-
-# An ERE matcher.
-EGREP=$lt_EGREP
-
-# A literal string matcher.
-FGREP=$lt_FGREP
-
-# A BSD- or MS-compatible name lister.
-NM=$lt_NM
-
-# Whether we need soft or hard links.
-LN_S=$lt_LN_S
-
-# What is the maximum length of a command?
-max_cmd_len=$max_cmd_len
-
-# Object file suffix (normally "o").
-objext=$ac_objext
-
-# Executable file suffix (normally "").
-exeext=$exeext
-
-# whether the shell understands "unset".
-lt_unset=$lt_unset
-
-# turn spaces into newlines.
-SP2NL=$lt_lt_SP2NL
-
-# turn newlines into spaces.
-NL2SP=$lt_lt_NL2SP
-
-# convert \$build file names to \$host format.
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-
-# convert \$build files to toolchain format.
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-
-# An object symbol dumper.
-OBJDUMP=$lt_OBJDUMP
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method = "file_magic".
-file_magic_cmd=$lt_file_magic_cmd
-
-# How to find potential files when deplibs_check_method = "file_magic".
-file_magic_glob=$lt_file_magic_glob
-
-# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-want_nocaseglob=$lt_want_nocaseglob
-
-# DLL creation program.
-DLLTOOL=$lt_DLLTOOL
-
-# Command to associate shared and link libraries.
-sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
-
-# The archiver.
-AR=$lt_AR
-
-# Flags to create an archive.
-AR_FLAGS=$lt_AR_FLAGS
-
-# How to feed a file listing to the archiver.
-archiver_list_spec=$lt_archiver_list_spec
-
-# A symbol stripping program.
-STRIP=$lt_STRIP
-
-# Commands used to install an old-style archive.
-RANLIB=$lt_RANLIB
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# Whether to use a lock for old archive extraction.
-lock_old_archive_extraction=$lock_old_archive_extraction
-
-# A C compiler.
-LTCC=$lt_CC
-
-# LTCC compiler flags.
-LTCFLAGS=$lt_CFLAGS
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration.
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-
-# Transform the output of nm in a C name address pair.
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-
-# Transform the output of nm in a C name address pair when lib prefix is needed.
-global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
-
-# Specify filename containing input files for \$NM.
-nm_file_list_spec=$lt_nm_file_list_spec
-
-# The root where to search for dependent libraries,and in which our libraries should be installed.
-lt_sysroot=$lt_sysroot
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# Used to examine libraries when file_magic_cmd begins with "file".
-MAGIC_CMD=$MAGIC_CMD
-
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
-
-# Manifest tool.
-MANIFEST_TOOL=$lt_MANIFEST_TOOL
-
-# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
-DSYMUTIL=$lt_DSYMUTIL
-
-# Tool to change global to local symbols on Mac OS X.
-NMEDIT=$lt_NMEDIT
-
-# Tool to manipulate fat objects and archives on Mac OS X.
-LIPO=$lt_LIPO
-
-# ldd/readelf like tool for Mach-O binaries on Mac OS X.
-OTOOL=$lt_OTOOL
-
-# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
-OTOOL64=$lt_OTOOL64
-
-# Old archive suffix (normally "a").
-libext=$libext
-
-# Shared library suffix (normally ".so").
-shrext_cmds=$lt_shrext_cmds
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at link time.
-variables_saved_for_relink=$lt_variables_saved_for_relink
-
-# Do we need the "lib" prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Library versioning type.
-version_type=$version_type
-
-# Shared library runtime path variable.
-runpath_var=$runpath_var
-
-# Shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Permission mode override for installation of shared libraries.
-install_override_mode=$lt_install_override_mode
-
-# Command to use after installation of a shared archive.
-postinstall_cmds=$lt_postinstall_cmds
-
-# Command to use after uninstallation of a shared archive.
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# As "finish_cmds", except a single script fragment to be evaled but
-# not shown.
-finish_eval=$lt_finish_eval
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Compile-time system search path for libraries.
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Run-time system search path for libraries.
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-
-# The linker used to build libraries.
-LD=$lt_LD
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds
-
-# A language specific compiler.
-CC=$lt_compiler
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds
-archive_expsym_cmds=$lt_archive_expsym_cmds
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds
-module_expsym_cmds=$lt_module_expsym_cmds
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects
-postdep_objects=$lt_postdep_objects
-predeps=$lt_predeps
-postdeps=$lt_postdeps
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path
-
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
-  case $host_os in
-  aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
-    ;;
-  esac
-
-  
-ltmain="$ac_aux_dir/ltmain.sh"
-
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" \
-     || (rm -f "$cfgfile"; exit 1)
-
-  if test x"$xsi_shell" = xyes; then
-  sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
-func_dirname ()\
-{\
-\    case ${1} in\
-\      */*) func_dirname_result="${1%/*}${2}" ;;\
-\      *  ) func_dirname_result="${3}" ;;\
-\    esac\
-} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_basename ()$/,/^} # func_basename /c\
-func_basename ()\
-{\
-\    func_basename_result="${1##*/}"\
-} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
-func_dirname_and_basename ()\
-{\
-\    case ${1} in\
-\      */*) func_dirname_result="${1%/*}${2}" ;;\
-\      *  ) func_dirname_result="${3}" ;;\
-\    esac\
-\    func_basename_result="${1##*/}"\
-} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
-func_stripname ()\
-{\
-\    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
-\    # positional parameters, so assign one to ordinary parameter first.\
-\    func_stripname_result=${3}\
-\    func_stripname_result=${func_stripname_result#"${1}"}\
-\    func_stripname_result=${func_stripname_result%"${2}"}\
-} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
-func_split_long_opt ()\
-{\
-\    func_split_long_opt_name=${1%%=*}\
-\    func_split_long_opt_arg=${1#*=}\
-} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
-func_split_short_opt ()\
-{\
-\    func_split_short_opt_arg=${1#??}\
-\    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
-} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
-func_lo2o ()\
-{\
-\    case ${1} in\
-\      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
-\      *)    func_lo2o_result=${1} ;;\
-\    esac\
-} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_xform ()$/,/^} # func_xform /c\
-func_xform ()\
-{\
-    func_xform_result=${1%.*}.lo\
-} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_arith ()$/,/^} # func_arith /c\
-func_arith ()\
-{\
-    func_arith_result=$(( $* ))\
-} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_len ()$/,/^} # func_len /c\
-func_len ()\
-{\
-    func_len_result=${#1}\
-} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-fi
-
-if test x"$lt_shell_append" = xyes; then
-  sed -e '/^func_append ()$/,/^} # func_append /c\
-func_append ()\
-{\
-    eval "${1}+=\\${2}"\
-} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
-func_append_quoted ()\
-{\
-\    func_quote_for_eval "${2}"\
-\    eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
-} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  # Save a `func_append' function call where possible by direct use of '+='
-  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-else
-  # Save a `func_append' function call even when '+=' is not available
-  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-fi
-
-if test x"$_lt_function_replace_fail" = x":"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
-fi
-
-
-   mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-
-
-    cat <<_LT_EOF >> "$ofile"
-
-# ### BEGIN LIBTOOL TAG CONFIG: F77
-
-# The linker used to build libraries.
-LD=$lt_LD_F77
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag_F77
-reload_cmds=$lt_reload_cmds_F77
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds_F77
-
-# A language specific compiler.
-CC=$lt_compiler_F77
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC_F77
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_F77
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_F77
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_F77
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_F77
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object_F77
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds_F77
-archive_expsym_cmds=$lt_archive_expsym_cmds_F77
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds_F77
-module_expsym_cmds=$lt_module_expsym_cmds_F77
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld_F77
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_F77
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_F77
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct_F77
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute_F77
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L_F77
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic_F77
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath_F77
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_F77
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols_F77
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_F77
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_F77
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_F77
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds_F77
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds_F77
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec_F77
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_F77
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_F77
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects_F77
-postdep_objects=$lt_postdep_objects_F77
-predeps=$lt_predeps_F77
-postdeps=$lt_postdeps_F77
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_F77
-
-# ### END LIBTOOL TAG CONFIG: F77
-_LT_EOF
-
-
-    cat <<_LT_EOF >> "$ofile"
-
-# ### BEGIN LIBTOOL TAG CONFIG: FC
-
-# The linker used to build libraries.
-LD=$lt_LD_FC
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag_FC
-reload_cmds=$lt_reload_cmds_FC
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds_FC
-
-# A language specific compiler.
-CC=$lt_compiler_FC
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC_FC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_FC
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_FC
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_FC
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_FC
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_FC
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_FC
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_FC
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_FC
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_FC
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object_FC
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_FC
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_FC
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds_FC
-archive_expsym_cmds=$lt_archive_expsym_cmds_FC
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds_FC
-module_expsym_cmds=$lt_module_expsym_cmds_FC
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld_FC
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_FC
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_FC
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_FC
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_FC
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct_FC
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute_FC
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L_FC
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_FC
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic_FC
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath_FC
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_FC
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols_FC
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_FC
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_FC
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_FC
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds_FC
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds_FC
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec_FC
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_FC
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_FC
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects_FC
-postdep_objects=$lt_postdep_objects_FC
-predeps=$lt_predeps_FC
-postdeps=$lt_postdeps_FC
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_FC
-
-# ### END LIBTOOL TAG CONFIG: FC
-_LT_EOF
-
- ;;
-    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
-  # Older Autoconf quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
-  esac
-  shift
-  for mf
-  do
-    # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named 'Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$mf" : 'X\(//\)[^/]' \| \
-	 X"$mf" : 'X\(//\)$' \| \
-	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$mf" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running 'make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "$am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$file" : 'X\(//\)[^/]' \| \
-	 X"$file" : 'X\(//\)$' \| \
-	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      as_dir=$dirpart/$fdir; as_fn_mkdir_p
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
-  done
-}
- ;;
-
-  esac
-done # for ac_tag
-
-
-as_fn_exit 0
-_ACEOF
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
-  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded.  So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status.  When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
-  ac_cs_success=:
-  ac_config_status_args=
-  test "$silent" = yes &&
-    ac_config_status_args="$ac_config_status_args --quiet"
-  exec 5>/dev/null
-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-  exec 5>>config.log
-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-  # would make configure fail if this is the last instruction.
-  $ac_cs_success || as_fn_exit 1
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: 
-
-  Configuration completed.
-
-    You can now say 'make' to compile the eccodes package, 'make check' to
-	  test it  and 'make install' to install it afterwards.
-	  " >&5
-$as_echo "$as_me: 
-
-  Configuration completed.
-
-    You can now say 'make' to compile the eccodes package, 'make check' to
-	  test it  and 'make install' to install it afterwards.
-	  " >&6;}
diff --git a/autom4te.cache/requests b/autom4te.cache/requests
deleted file mode 100644
index cf6cf93..0000000
--- a/autom4te.cache/requests
+++ /dev/null
@@ -1,388 +0,0 @@
-# This file was generated.
-# It contains the lists of macros which have been traced.
-# It can be safely removed.
-
- at request = (
-             bless( [
-                      '0',
-                      1,
-                      [
-                        '/usr/share/autoconf'
-                      ],
-                      [
-                        '/usr/share/autoconf/autoconf/autoconf.m4f',
-                        '-',
-                        '/usr/share/aclocal-1.13/internal/ac-config-macro-dirs.m4',
-                        '/usr/share/aclocal/argz.m4',
-                        '/usr/share/aclocal/ltdl.m4',
-                        '/usr/share/aclocal-1.13/amversion.m4',
-                        '/usr/share/aclocal-1.13/auxdir.m4',
-                        '/usr/share/aclocal-1.13/cond.m4',
-                        '/usr/share/aclocal-1.13/depend.m4',
-                        '/usr/share/aclocal-1.13/depout.m4',
-                        '/usr/share/aclocal-1.13/init.m4',
-                        '/usr/share/aclocal-1.13/install-sh.m4',
-                        '/usr/share/aclocal-1.13/lead-dot.m4',
-                        '/usr/share/aclocal-1.13/make.m4',
-                        '/usr/share/aclocal-1.13/missing.m4',
-                        '/usr/share/aclocal-1.13/options.m4',
-                        '/usr/share/aclocal-1.13/python.m4',
-                        '/usr/share/aclocal-1.13/runlog.m4',
-                        '/usr/share/aclocal-1.13/sanity.m4',
-                        '/usr/share/aclocal-1.13/silent.m4',
-                        '/usr/share/aclocal-1.13/strip.m4',
-                        '/usr/share/aclocal-1.13/substnot.m4',
-                        '/usr/share/aclocal-1.13/tar.m4',
-                        'm4/ax_linux_distribution.m4',
-                        'm4/libtool.m4',
-                        'm4/ltoptions.m4',
-                        'm4/ltsugar.m4',
-                        'm4/ltversion.m4',
-                        'm4/lt~obsolete.m4',
-                        'acinclude.m4',
-                        'configure.ac'
-                      ],
-                      {
-                        '_LT_PATH_TOOL_PREFIX' => 1,
-                        'LT_AC_PROG_GCJ' => 1,
-                        'AC_PATH_MAGIC' => 1,
-                        'AC_DEPLIBS_CHECK_METHOD' => 1,
-                        '_LT_AC_LANG_CXX_CONFIG' => 1,
-                        '_LT_WITH_SYSROOT' => 1,
-                        'AC_LIBTOOL_COMPILER_OPTION' => 1,
-                        'AC_LTDL_SYMBOL_USCORE' => 1,
-                        'AC_DISABLE_SHARED' => 1,
-                        '_AM_DEPENDENCIES' => 1,
-                        'AC_LTDL_PREOPEN' => 1,
-                        'AC_DEFUN' => 1,
-                        'AC_LIBTOOL_PROG_CC_C_O' => 1,
-                        '_AM_SET_OPTION' => 1,
-                        'AM_PROG_NM' => 1,
-                        'LTSUGAR_VERSION' => 1,
-                        'AC_LIBTOOL_CXX' => 1,
-                        'LT_LANG' => 1,
-                        '_LT_AC_SYS_COMPILER' => 1,
-                        'LT_CONFIG_LTDL_DIR' => 1,
-                        '_AM_MANGLE_OPTION' => 1,
-                        '_LT_AC_LOCK' => 1,
-                        '_LT_AC_LANG_C_CONFIG' => 1,
-                        'AM_DISABLE_STATIC' => 1,
-                        '_LT_CC_BASENAME' => 1,
-                        'AC_LIBTOOL_WIN32_DLL' => 1,
-                        'AC_LIB_LTDL' => 1,
-                        '_m4_warn' => 1,
-                        'AC_PROG_LIBTOOL' => 1,
-                        'LTDL_CONVENIENCE' => 1,
-                        'LT_CMD_MAX_LEN' => 1,
-                        '_LT_AC_LANG_GCJ' => 1,
-                        'AC_LTDL_DLSYM_USCORE' => 1,
-                        'LT_LIB_M' => 1,
-                        'AM_PROG_LIBTOOL' => 1,
-                        'AC_LIBTOOL_LINKER_OPTION' => 1,
-                        '_AM_IF_OPTION' => 1,
-                        'LT_LIB_DLLOAD' => 1,
-                        'LT_SYS_DLOPEN_SELF' => 1,
-                        'AM_CONDITIONAL' => 1,
-                        '_LT_LINKER_BOILERPLATE' => 1,
-                        '_LT_PROG_LTMAIN' => 1,
-                        'AC_DEFUN_ONCE' => 1,
-                        'grib_api_PROG_CC_WARNING_PEDANTIC' => 1,
-                        'AC_LIBTOOL_CONFIG' => 1,
-                        'AC_LIBLTDL_CONVENIENCE' => 1,
-                        'include' => 1,
-                        'AM_SUBST_NOTMAKE' => 1,
-                        'AC_ALIGN' => 1,
-                        'LT_SUPPORTED_TAG' => 1,
-                        'AC_LTDL_SYSSEARCHPATH' => 1,
-                        'AC_LTDL_OBJDIR' => 1,
-                        'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
-                        'AC_LIBTOOL_OBJDIR' => 1,
-                        'LT_PATH_NM' => 1,
-                        'LT_AC_PROG_SED' => 1,
-                        'AC_CHECK_LIBM' => 1,
-                        '_LT_PROG_CXX' => 1,
-                        'AC_PROG_FC_UPPERCASE_MOD' => 1,
-                        'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
-                        '_LT_AC_LANG_F77' => 1,
-                        'LT_SYS_DLOPEN_DEPLIBS' => 1,
-                        'm4_pattern_allow' => 1,
-                        '_AM_SET_OPTIONS' => 1,
-                        'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
-                        'AM_SET_DEPDIR' => 1,
-                        'AM_ENABLE_STATIC' => 1,
-                        'AC_LIBTOOL_SETUP' => 1,
-                        'gl_PREREQ_ARGZ' => 1,
-                        'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
-                        'AC_LTDL_SHLIBEXT' => 1,
-                        '_LT_AC_TRY_DLOPEN_SELF' => 1,
-                        'AM_SANITY_CHECK' => 1,
-                        'AC_LIBTOOL_LANG_C_CONFIG' => 1,
-                        'AC_PATH_TOOL_PREFIX' => 1,
-                        '_AM_PROG_TAR' => 1,
-                        '_LT_AC_TAGCONFIG' => 1,
-                        'AC_LIBTOOL_PICMODE' => 1,
-                        'AC_INLINE' => 1,
-                        'AC_CONFIG_MACRO_DIR' => 1,
-                        'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
-                        'AC_ENABLE_SHARED' => 1,
-                        'LTVERSION_VERSION' => 1,
-                        'AC_LTDL_SHLIBPATH' => 1,
-                        'AX_LINUX_DISTRIBUTION' => 1,
-                        'LT_SYS_MODULE_EXT' => 1,
-                        'AM_PROG_LD' => 1,
-                        'LTDL_INSTALLABLE' => 1,
-                        '_AC_AM_CONFIG_HEADER_HOOK' => 1,
-                        'LTOBSOLETE_VERSION' => 1,
-                        'grib_api_ENABLE_WARNINGS_ARE_ERRORS' => 1,
-                        '_LTDL_SETUP' => 1,
-                        '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
-                        'AC_IEEE_BE' => 1,
-                        'LT_AC_PROG_EGREP' => 1,
-                        'AC_DISABLE_FAST_INSTALL' => 1,
-                        'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
-                        'AC_ENABLE_STATIC' => 1,
-                        'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
-                        'AM_SET_LEADING_DOT' => 1,
-                        'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
-                        'm4_pattern_forbid' => 1,
-                        'AC_CONFIG_MACRO_DIR_TRACE' => 1,
-                        'LT_WITH_LTDL' => 1,
-                        '_LT_AC_LANG_RC_CONFIG' => 1,
-                        'AM_AUTOMAKE_VERSION' => 1,
-                        '_AC_PROG_LIBTOOL' => 1,
-                        'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
-                        'AM_MISSING_HAS_RUN' => 1,
-                        '_LT_AC_LANG_CXX' => 1,
-                        'AU_DEFUN' => 1,
-                        'AM_PROG_INSTALL_STRIP' => 1,
-                        'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
-                        'LT_PATH_LD' => 1,
-                        'AM_PYTHON_CHECK_VERSION' => 1,
-                        '_LT_REQUIRED_DARWIN_CHECKS' => 1,
-                        'AC_PROG_LD_GNU' => 1,
-                        '_LT_PROG_F77' => 1,
-                        '_LT_AC_LANG_GCJ_CONFIG' => 1,
-                        'AC_LIBTOOL_GCJ' => 1,
-                        'AC_LTDL_DLLIB' => 1,
-                        'AM_MISSING_PROG' => 1,
-                        'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
-                        'LT_PROG_GO' => 1,
-                        'AC_WITH_LTDL' => 1,
-                        'AC_PROG_EGREP' => 1,
-                        '_LT_PROG_FC' => 1,
-                        'AM_AUX_DIR_EXPAND' => 1,
-                        '_LT_AC_CHECK_DLFCN' => 1,
-                        '_LT_AC_PROG_ECHO_BACKSLASH' => 1,
-                        '_LT_PROG_ECHO_BACKSLASH' => 1,
-                        'LT_OUTPUT' => 1,
-                        '_LT_AC_TAGVAR' => 1,
-                        '_LT_AC_SYS_LIBPATH_AIX' => 1,
-                        'LT_INIT' => 1,
-                        '_LT_COMPILER_OPTION' => 1,
-                        'AC_ENABLE_FAST_INSTALL' => 1,
-                        'AM_INIT_AUTOMAKE' => 1,
-                        'AM_DISABLE_SHARED' => 1,
-                        'AC_LIBTOOL_RC' => 1,
-                        'AC_LIBLTDL_INSTALLABLE' => 1,
-                        'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
-                        'LT_PROG_GCJ' => 1,
-                        '_LT_LINKER_OPTION' => 1,
-                        'AX_F90_MODULE_FLAG' => 1,
-                        'AC_LIBTOOL_FC' => 1,
-                        'm4_include' => 1,
-                        'AM_MAKE_INCLUDE' => 1,
-                        '_AM_AUTOCONF_VERSION' => 1,
-                        '_LT_AC_LANG_F77_CONFIG' => 1,
-                        '_LT_AC_PROG_CXXCPP' => 1,
-                        'LT_SYS_MODULE_PATH' => 1,
-                        'AC_IEEE_LE' => 1,
-                        'AM_PATH_PYTHON' => 1,
-                        'LT_SYS_SYMBOL_USCORE' => 1,
-                        '_LT_COMPILER_BOILERPLATE' => 1,
-                        'AC_LTDL_ENABLE_INSTALL' => 1,
-                        'AC_LIBTOOL_F77' => 1,
-                        'AM_ENABLE_SHARED' => 1,
-                        'AC_GRIB_PTHREADS' => 1,
-                        'LTOPTIONS_VERSION' => 1,
-                        'LT_PROG_RC' => 1,
-                        'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
-                        'AM_SILENT_RULES' => 1,
-                        'LT_FUNC_DLSYM_USCORE' => 1,
-                        'AC_LIBTOOL_DLOPEN_SELF' => 1,
-                        'AM_RUN_LOG' => 1,
-                        'AC_DISABLE_STATIC' => 1,
-                        '_LT_AC_FILE_LTDLL_C' => 1,
-                        'AC_PROG_NM' => 1,
-                        'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
-                        '_AM_CONFIG_MACRO_DIRS' => 1,
-                        'LT_SYS_DLSEARCH_PATH' => 1,
-                        '_LT_AC_SHELL_INIT' => 1,
-                        'LT_AC_PROG_RC' => 1,
-                        '_LT_LIBOBJ' => 1,
-                        'gl_FUNC_ARGZ' => 1,
-                        'AC_LIBTOOL_DLOPEN' => 1,
-                        'LTDL_INIT' => 1,
-                        'AC_PROG_FC_DEBUG_IN_MODULE' => 1,
-                        'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
-                        'AC_BIG_ENDIAN' => 1,
-                        'AM_PROG_INSTALL_SH' => 1,
-                        'AC_PROG_LD' => 1,
-                        'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
-                        'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
-                        'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
-                        'AC_GRIB_LINUX_PTHREADS' => 1,
-                        'AM_DEP_TRACK' => 1,
-                        '_LT_PREPARE_SED_QUOTE_VARS' => 1,
-                        '_AM_SUBST_NOTMAKE' => 1,
-                        'AC_PROG_LD_RELOAD_FLAG' => 1
-                      }
-                    ], 'Autom4te::Request' ),
-             bless( [
-                      '1',
-                      1,
-                      [
-                        '/usr/share/autoconf',
-                        'm4'
-                      ],
-                      [
-                        '/usr/share/autoconf/autoconf/autoconf.m4f',
-                        'aclocal.m4',
-                        'configure.ac'
-                      ],
-                      {
-                        'AC_CONFIG_SUBDIRS' => 1,
-                        'AH_OUTPUT' => 1,
-                        'AC_FC_FREEFORM' => 1,
-                        'AM_NLS' => 1,
-                        'AM_PROG_FC_C_O' => 1,
-                        'AM_SILENT_RULES' => 1,
-                        'AC_CONFIG_LIBOBJ_DIR' => 1,
-                        'AC_FC_PP_DEFINE' => 1,
-                        'AC_DEFINE_TRACE_LITERAL' => 1,
-                        'AC_CONFIG_LINKS' => 1,
-                        'sinclude' => 1,
-                        'AM_MAINTAINER_MODE' => 1,
-                        'AC_CANONICAL_BUILD' => 1,
-                        'LT_CONFIG_LTDL_DIR' => 1,
-                        'AM_ENABLE_MULTILIB' => 1,
-                        'AM_PROG_F77_C_O' => 1,
-                        'AM_XGETTEXT_OPTION' => 1,
-                        'AC_CONFIG_HEADERS' => 1,
-                        'm4_pattern_forbid' => 1,
-                        'AC_CANONICAL_SYSTEM' => 1,
-                        '_AM_COND_IF' => 1,
-                        '_AM_COND_ELSE' => 1,
-                        'AM_AUTOMAKE_VERSION' => 1,
-                        'AC_REQUIRE_AUX_FILE' => 1,
-                        'AC_FC_PP_SRCEXT' => 1,
-                        'AC_INIT' => 1,
-                        'm4_pattern_allow' => 1,
-                        'AC_CONFIG_AUX_DIR' => 1,
-                        'AC_SUBST_TRACE' => 1,
-                        'AM_POT_TOOLS' => 1,
-                        'LT_INIT' => 1,
-                        'AC_CONFIG_FILES' => 1,
-                        'AM_INIT_AUTOMAKE' => 1,
-                        'AC_CANONICAL_TARGET' => 1,
-                        'AM_CONDITIONAL' => 1,
-                        'AC_LIBSOURCE' => 1,
-                        'AM_PROG_CC_C_O' => 1,
-                        'AM_PROG_MOC' => 1,
-                        'AC_LIBLTDL_INSTALLABLE' => 1,
-                        'include' => 1,
-                        'm4_include' => 1,
-                        'AC_FC_SRCEXT' => 1,
-                        'AC_LIBLTDL_CONVENIENCE' => 1,
-                        'LT_SUPPORTED_TAG' => 1,
-                        '_AM_SUBST_NOTMAKE' => 1,
-                        'AM_PROG_AR' => 1,
-                        'AM_GNU_GETTEXT' => 1,
-                        '_AM_COND_ENDIF' => 1,
-                        '_LT_AC_TAGCONFIG' => 1,
-                        'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
-                        '_AM_MAKEFILE_INCLUDE' => 1,
-                        'AC_CANONICAL_HOST' => 1,
-                        'm4_sinclude' => 1,
-                        'AM_PATH_GUILE' => 1,
-                        'AM_PROG_CXX_C_O' => 1,
-                        '_m4_warn' => 1,
-                        'AC_PROG_LIBTOOL' => 1,
-                        'AM_MAKEFILE_INCLUDE' => 1,
-                        'AC_SUBST' => 1
-                      }
-                    ], 'Autom4te::Request' ),
-             bless( [
-                      '2',
-                      1,
-                      [
-                        '/usr/share/autoconf'
-                      ],
-                      [
-                        '/usr/share/autoconf/autoconf/autoconf.m4f',
-                        'aclocal.m4',
-                        'configure.ac'
-                      ],
-                      {
-                        'm4_sinclude' => 1,
-                        'AM_PROG_CXX_C_O' => 1,
-                        '_m4_warn' => 1,
-                        'AM_PATH_GUILE' => 1,
-                        'AC_PROG_LIBTOOL' => 1,
-                        'AC_SUBST' => 1,
-                        'AM_MAKEFILE_INCLUDE' => 1,
-                        'AM_EXTRA_RECURSIVE_TARGETS' => 1,
-                        '_AM_COND_ENDIF' => 1,
-                        '_LT_AC_TAGCONFIG' => 1,
-                        'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
-                        '_AM_MAKEFILE_INCLUDE' => 1,
-                        'AC_CANONICAL_HOST' => 1,
-                        'AC_FC_SRCEXT' => 1,
-                        'include' => 1,
-                        'm4_include' => 1,
-                        'LT_SUPPORTED_TAG' => 1,
-                        '_AM_SUBST_NOTMAKE' => 1,
-                        'AM_PROG_AR' => 1,
-                        'AM_GNU_GETTEXT' => 1,
-                        'AC_SUBST_TRACE' => 1,
-                        'AM_POT_TOOLS' => 1,
-                        'LT_INIT' => 1,
-                        'AC_CONFIG_FILES' => 1,
-                        'AM_INIT_AUTOMAKE' => 1,
-                        'AC_CANONICAL_TARGET' => 1,
-                        'AM_CONDITIONAL' => 1,
-                        'AC_LIBSOURCE' => 1,
-                        'AM_PROG_MOC' => 1,
-                        'AM_PROG_CC_C_O' => 1,
-                        'AM_AUTOMAKE_VERSION' => 1,
-                        'AC_REQUIRE_AUX_FILE' => 1,
-                        'AC_FC_PP_SRCEXT' => 1,
-                        'AC_CONFIG_AUX_DIR' => 1,
-                        'm4_pattern_allow' => 1,
-                        'AC_INIT' => 1,
-                        'AM_PROG_MKDIR_P' => 1,
-                        'AM_XGETTEXT_OPTION' => 1,
-                        'm4_pattern_forbid' => 1,
-                        'AC_CONFIG_HEADERS' => 1,
-                        '_AM_COND_IF' => 1,
-                        'AC_CANONICAL_SYSTEM' => 1,
-                        '_AM_COND_ELSE' => 1,
-                        'AC_DEFINE_TRACE_LITERAL' => 1,
-                        'AC_FC_PP_DEFINE' => 1,
-                        'AC_CONFIG_LINKS' => 1,
-                        'sinclude' => 1,
-                        'LT_CONFIG_LTDL_DIR' => 1,
-                        'AC_CANONICAL_BUILD' => 1,
-                        'AM_MAINTAINER_MODE' => 1,
-                        'AM_ENABLE_MULTILIB' => 1,
-                        'AM_PROG_F77_C_O' => 1,
-                        'AC_CONFIG_SUBDIRS' => 1,
-                        'AH_OUTPUT' => 1,
-                        'AC_FC_FREEFORM' => 1,
-                        'AM_NLS' => 1,
-                        'AM_PROG_FC_C_O' => 1,
-                        'AC_CONFIG_LIBOBJ_DIR' => 1,
-                        'AM_SILENT_RULES' => 1
-                      }
-                    ], 'Autom4te::Request' )
-           );
-
diff --git a/autom4te.cache/traces.0 b/autom4te.cache/traces.0
deleted file mode 100644
index d63664f..0000000
--- a/autom4te.cache/traces.0
+++ /dev/null
@@ -1,3420 +0,0 @@
-m4trace:/usr/share/aclocal/argz.m4:12: -1- AC_DEFUN([gl_FUNC_ARGZ], [gl_PREREQ_ARGZ
-
-AC_CHECK_HEADERS([argz.h], [], [], [AC_INCLUDES_DEFAULT])
-
-AC_CHECK_TYPES([error_t],
-  [],
-  [AC_DEFINE([error_t], [int],
-   [Define to a type to use for `error_t' if it is not otherwise available.])
-   AC_DEFINE([__error_t_defined], [1], [Define so that glibc/gnulib argp.h
-    does not typedef error_t.])],
-  [#if defined(HAVE_ARGZ_H)
-#  include <argz.h>
-#endif])
-
-ARGZ_H=
-AC_CHECK_FUNCS([argz_add argz_append argz_count argz_create_sep argz_insert \
-	argz_next argz_stringify], [], [ARGZ_H=argz.h; AC_LIBOBJ([argz])])
-
-dnl if have system argz functions, allow forced use of
-dnl libltdl-supplied implementation (and default to do so
-dnl on "known bad" systems). Could use a runtime check, but
-dnl (a) detecting malloc issues is notoriously unreliable
-dnl (b) only known system that declares argz functions,
-dnl     provides them, yet they are broken, is cygwin
-dnl     releases prior to 16-Mar-2007 (1.5.24 and earlier)
-dnl So, it's more straightforward simply to special case
-dnl this for known bad systems.
-AS_IF([test -z "$ARGZ_H"],
-    [AC_CACHE_CHECK(
-        [if argz actually works],
-        [lt_cv_sys_argz_works],
-        [[case $host_os in #(
-	 *cygwin*)
-	   lt_cv_sys_argz_works=no
-	   if test "$cross_compiling" != no; then
-	     lt_cv_sys_argz_works="guessing no"
-	   else
-	     lt_sed_extract_leading_digits='s/^\([0-9\.]*\).*/\1/'
-	     save_IFS=$IFS
-	     IFS=-.
-	     set x `uname -r | sed -e "$lt_sed_extract_leading_digits"`
-	     IFS=$save_IFS
-	     lt_os_major=${2-0}
-	     lt_os_minor=${3-0}
-	     lt_os_micro=${4-0}
-	     if test "$lt_os_major" -gt 1 \
-		|| { test "$lt_os_major" -eq 1 \
-		  && { test "$lt_os_minor" -gt 5 \
-		    || { test "$lt_os_minor" -eq 5 \
-		      && test "$lt_os_micro" -gt 24; }; }; }; then
-	       lt_cv_sys_argz_works=yes
-	     fi
-	   fi
-	   ;; #(
-	 *) lt_cv_sys_argz_works=yes ;;
-	 esac]])
-     AS_IF([test "$lt_cv_sys_argz_works" = yes],
-        [AC_DEFINE([HAVE_WORKING_ARGZ], 1,
-                   [This value is set to 1 to indicate that the system argz facility works])],
-        [ARGZ_H=argz.h
-        AC_LIBOBJ([argz])])])
-
-AC_SUBST([ARGZ_H])
-])
-m4trace:/usr/share/aclocal/argz.m4:79: -1- AC_DEFUN([gl_PREREQ_ARGZ], [:])
-m4trace:/usr/share/aclocal/ltdl.m4:16: -1- AC_DEFUN([LT_CONFIG_LTDL_DIR], [AC_BEFORE([$0], [LTDL_INIT])
-_$0($*)
-])
-m4trace:/usr/share/aclocal/ltdl.m4:68: -1- AC_DEFUN([LTDL_CONVENIENCE], [AC_BEFORE([$0], [LTDL_INIT])dnl
-dnl Although the argument is deprecated and no longer documented,
-dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one
-dnl here make sure it is the same as any other declaration of libltdl's
-dnl location!  This also ensures lt_ltdl_dir is set when configure.ac is
-dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
-m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
-_$0()
-])
-m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AU_DEFUN([AC_LIBLTDL_CONVENIENCE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
-_LTDL_CONVENIENCE])
-m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_CONVENIENCE' is obsolete.
-You should run autoupdate.])dnl
-_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
-_LTDL_CONVENIENCE])
-m4trace:/usr/share/aclocal/ltdl.m4:124: -1- AC_DEFUN([LTDL_INSTALLABLE], [AC_BEFORE([$0], [LTDL_INIT])dnl
-dnl Although the argument is deprecated and no longer documented,
-dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one
-dnl here make sure it is the same as any other declaration of libltdl's
-dnl location!  This also ensures lt_ltdl_dir is set when configure.ac is
-dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
-m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
-_$0()
-])
-m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AU_DEFUN([AC_LIBLTDL_INSTALLABLE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
-_LTDL_INSTALLABLE])
-m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_INSTALLABLE' is obsolete.
-You should run autoupdate.])dnl
-_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
-_LTDL_INSTALLABLE])
-m4trace:/usr/share/aclocal/ltdl.m4:213: -1- AC_DEFUN([_LT_LIBOBJ], [
-  m4_pattern_allow([^_LT_LIBOBJS$])
-  _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext"
-])
-m4trace:/usr/share/aclocal/ltdl.m4:226: -1- AC_DEFUN([LTDL_INIT], [dnl Parse OPTIONS
-_LT_SET_OPTIONS([$0], [$1])
-
-dnl We need to keep our own list of libobjs separate from our parent project,
-dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while
-dnl we look for our own LIBOBJs.
-m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ]))
-m4_pushdef([AC_LIBSOURCES])
-
-dnl If not otherwise defined, default to the 1.5.x compatible subproject mode:
-m4_if(_LTDL_MODE, [],
-        [m4_define([_LTDL_MODE], m4_default([$2], [subproject]))
-        m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])],
-                [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])
-
-AC_ARG_WITH([included_ltdl],
-    [AS_HELP_STRING([--with-included-ltdl],
-                    [use the GNU ltdl sources included here])])
-
-if test "x$with_included_ltdl" != xyes; then
-  # We are not being forced to use the included libltdl sources, so
-  # decide whether there is a useful installed version we can use.
-  AC_CHECK_HEADER([ltdl.h],
-      [AC_CHECK_DECL([lt_dlinterface_register],
-	   [AC_CHECK_LIB([ltdl], [lt_dladvise_preload],
-	       [with_included_ltdl=no],
-	       [with_included_ltdl=yes])],
-	   [with_included_ltdl=yes],
-	   [AC_INCLUDES_DEFAULT
-	    #include <ltdl.h>])],
-      [with_included_ltdl=yes],
-      [AC_INCLUDES_DEFAULT]
-  )
-fi
-
-dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE
-dnl was called yet, then for old times' sake, we assume libltdl is in an
-dnl eponymous directory:
-AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])])
-
-AC_ARG_WITH([ltdl_include],
-    [AS_HELP_STRING([--with-ltdl-include=DIR],
-                    [use the ltdl headers installed in DIR])])
-
-if test -n "$with_ltdl_include"; then
-  if test -f "$with_ltdl_include/ltdl.h"; then :
-  else
-    AC_MSG_ERROR([invalid ltdl include directory: `$with_ltdl_include'])
-  fi
-else
-  with_ltdl_include=no
-fi
-
-AC_ARG_WITH([ltdl_lib],
-    [AS_HELP_STRING([--with-ltdl-lib=DIR],
-                    [use the libltdl.la installed in DIR])])
-
-if test -n "$with_ltdl_lib"; then
-  if test -f "$with_ltdl_lib/libltdl.la"; then :
-  else
-    AC_MSG_ERROR([invalid ltdl library directory: `$with_ltdl_lib'])
-  fi
-else
-  with_ltdl_lib=no
-fi
-
-case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in
-  ,yes,no,no,)
-	m4_case(m4_default(_LTDL_TYPE, [convenience]),
-	    [convenience], [_LTDL_CONVENIENCE],
-	    [installable], [_LTDL_INSTALLABLE],
-	  [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)])
-	;;
-  ,no,no,no,)
-	# If the included ltdl is not to be used, then use the
-	# preinstalled libltdl we found.
-	AC_DEFINE([HAVE_LTDL], [1],
-	  [Define this if a modern libltdl is already installed])
-	LIBLTDL=-lltdl
-	LTDLDEPS=
-	LTDLINCL=
-	;;
-  ,no*,no,*)
-	AC_MSG_ERROR([`--with-ltdl-include' and `--with-ltdl-lib' options must be used together])
-	;;
-  *)	with_included_ltdl=no
-	LIBLTDL="-L$with_ltdl_lib -lltdl"
-	LTDLDEPS=
-	LTDLINCL="-I$with_ltdl_include"
-	;;
-esac
-INCLTDL="$LTDLINCL"
-
-# Report our decision...
-AC_MSG_CHECKING([where to find libltdl headers])
-AC_MSG_RESULT([$LTDLINCL])
-AC_MSG_CHECKING([where to find libltdl library])
-AC_MSG_RESULT([$LIBLTDL])
-
-_LTDL_SETUP
-
-dnl restore autoconf definition.
-m4_popdef([AC_LIBOBJ])
-m4_popdef([AC_LIBSOURCES])
-
-AC_CONFIG_COMMANDS_PRE([
-    _ltdl_libobjs=
-    _ltdl_ltlibobjs=
-    if test -n "$_LT_LIBOBJS"; then
-      # Remove the extension.
-      _lt_sed_drop_objext='s/\.o$//;s/\.obj$//'
-      for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do
-        _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext"
-        _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo"
-      done
-    fi
-    AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs])
-    AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs])
-])
-
-# Only expand once:
-m4_define([LTDL_INIT])
-])
-m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)])
-m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AC_DEFUN([AC_LIB_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIB_LTDL' is obsolete.
-You should run autoupdate.])dnl
-LTDL_INIT($@)])
-m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)])
-m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AC_DEFUN([AC_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_WITH_LTDL' is obsolete.
-You should run autoupdate.])dnl
-LTDL_INIT($@)])
-m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)])
-m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AC_DEFUN([LT_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `LT_WITH_LTDL' is obsolete.
-You should run autoupdate.])dnl
-LTDL_INIT($@)])
-m4trace:/usr/share/aclocal/ltdl.m4:367: -1- AC_DEFUN([_LTDL_SETUP], [AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([LT_SYS_MODULE_EXT])dnl
-AC_REQUIRE([LT_SYS_MODULE_PATH])dnl
-AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl
-AC_REQUIRE([LT_LIB_DLLOAD])dnl
-AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl
-AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl
-AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl
-AC_REQUIRE([gl_FUNC_ARGZ])dnl
-
-m4_require([_LT_CHECK_OBJDIR])dnl
-m4_require([_LT_HEADER_DLFCN])dnl
-m4_require([_LT_CHECK_DLPREOPEN])dnl
-m4_require([_LT_DECL_SED])dnl
-
-dnl Don't require this, or it will be expanded earlier than the code
-dnl that sets the variables it relies on:
-_LT_ENABLE_INSTALL
-
-dnl _LTDL_MODE specific code must be called at least once:
-_LTDL_MODE_DISPATCH
-
-# In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS
-# the user used.  This is so that ltdl.h can pick up the parent projects
-# config.h file, The first file in AC_CONFIG_HEADERS must contain the
-# definitions required by ltdl.c.
-# FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility).
-AC_CONFIG_COMMANDS_PRE([dnl
-m4_pattern_allow([^LT_CONFIG_H$])dnl
-m4_ifset([AH_HEADER],
-    [LT_CONFIG_H=AH_HEADER],
-    [m4_ifset([AC_LIST_HEADERS],
-	    [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's,^[[      ]]*,,;s,[[ :]].*$,,'`],
-	[])])])
-AC_SUBST([LT_CONFIG_H])
-
-AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h],
-	[], [], [AC_INCLUDES_DEFAULT])
-
-AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])])
-AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])])
-
-m4_pattern_allow([LT_LIBEXT])dnl
-AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension])
-
-name=
-eval "lt_libprefix=\"$libname_spec\""
-m4_pattern_allow([LT_LIBPREFIX])dnl
-AC_DEFINE_UNQUOTED([LT_LIBPREFIX],["$lt_libprefix"],[The archive prefix])
-
-name=ltdl
-eval "LTDLOPEN=\"$libname_spec\""
-AC_SUBST([LTDLOPEN])
-])
-m4trace:/usr/share/aclocal/ltdl.m4:443: -1- AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_CACHE_CHECK([whether deplibs are loaded by dlopen],
-  [lt_cv_sys_dlopen_deplibs],
-  [# PORTME does your system automatically load deplibs for dlopen?
-  # or its logical equivalent (e.g. shl_load for HP-UX < 11)
-  # For now, we just catch OSes we know something about -- in the
-  # future, we'll try test this programmatically.
-  lt_cv_sys_dlopen_deplibs=unknown
-  case $host_os in
-  aix3*|aix4.1.*|aix4.2.*)
-    # Unknown whether this is true for these versions of AIX, but
-    # we want this `case' here to explicitly catch those versions.
-    lt_cv_sys_dlopen_deplibs=unknown
-    ;;
-  aix[[4-9]]*)
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  amigaos*)
-    case $host_cpu in
-    powerpc)
-      lt_cv_sys_dlopen_deplibs=no
-      ;;
-    esac
-    ;;
-  darwin*)
-    # Assuming the user has installed a libdl from somewhere, this is true
-    # If you are looking for one http://www.opendarwin.org/projects/dlcompat
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  freebsd* | dragonfly*)
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu)
-    # GNU and its variants, using gnu ld.so (Glibc)
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  hpux10*|hpux11*)
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  interix*)
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  irix[[12345]]*|irix6.[[01]]*)
-    # Catch all versions of IRIX before 6.2, and indicate that we don't
-    # know how it worked for any of those versions.
-    lt_cv_sys_dlopen_deplibs=unknown
-    ;;
-  irix*)
-    # The case above catches anything before 6.2, and it's known that
-    # at 6.2 and later dlopen does load deplibs.
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  netbsd*)
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  openbsd*)
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  osf[[1234]]*)
-    # dlopen did load deplibs (at least at 4.x), but until the 5.x series,
-    # it did *not* use an RPATH in a shared library to find objects the
-    # library depends on, so we explicitly say `no'.
-    lt_cv_sys_dlopen_deplibs=no
-    ;;
-  osf5.0|osf5.0a|osf5.1)
-    # dlopen *does* load deplibs and with the right loader patch applied
-    # it even uses RPATH in a shared library to search for shared objects
-    # that the library depends on, but there's no easy way to know if that
-    # patch is installed.  Since this is the case, all we can really
-    # say is unknown -- it depends on the patch being installed.  If
-    # it is, this changes to `yes'.  Without it, it would be `no'.
-    lt_cv_sys_dlopen_deplibs=unknown
-    ;;
-  osf*)
-    # the two cases above should catch all versions of osf <= 5.1.  Read
-    # the comments above for what we know about them.
-    # At > 5.1, deplibs are loaded *and* any RPATH in a shared library
-    # is used to find them so we can finally say `yes'.
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  qnx*)
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  solaris*)
-    lt_cv_sys_dlopen_deplibs=yes
-    ;;
-  sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-    libltdl_cv_sys_dlopen_deplibs=yes
-    ;;
-  esac
-  ])
-if test "$lt_cv_sys_dlopen_deplibs" != yes; then
- AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1],
-    [Define if the OS needs help to load dependent libraries for dlopen().])
-fi
-])
-m4trace:/usr/share/aclocal/ltdl.m4:542: -1- AU_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:542: -1- AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYS_DLOPEN_DEPLIBS' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:549: -1- AC_DEFUN([LT_SYS_MODULE_EXT], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
-AC_CACHE_CHECK([which extension is used for runtime loadable modules],
-  [libltdl_cv_shlibext],
-[
-module=yes
-eval libltdl_cv_shlibext=$shrext_cmds
-module=no
-eval libltdl_cv_shrext=$shrext_cmds
-  ])
-if test -n "$libltdl_cv_shlibext"; then
-  m4_pattern_allow([LT_MODULE_EXT])dnl
-  AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"],
-    [Define to the extension used for runtime loadable modules, say, ".so".])
-fi
-if test "$libltdl_cv_shrext" != "$libltdl_cv_shlibext"; then
-  m4_pattern_allow([LT_SHARED_EXT])dnl
-  AC_DEFINE_UNQUOTED([LT_SHARED_EXT], ["$libltdl_cv_shrext"],
-    [Define to the shared library suffix, say, ".dylib".])
-fi
-])
-m4trace:/usr/share/aclocal/ltdl.m4:572: -1- AU_DEFUN([AC_LTDL_SHLIBEXT], [m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:572: -1- AC_DEFUN([AC_LTDL_SHLIBEXT], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBEXT' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:579: -1- AC_DEFUN([LT_SYS_MODULE_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
-AC_CACHE_CHECK([which variable specifies run-time module search path],
-  [lt_cv_module_path_var], [lt_cv_module_path_var="$shlibpath_var"])
-if test -n "$lt_cv_module_path_var"; then
-  m4_pattern_allow([LT_MODULE_PATH_VAR])dnl
-  AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"],
-    [Define to the name of the environment variable that determines the run-time module search path.])
-fi
-])
-m4trace:/usr/share/aclocal/ltdl.m4:591: -1- AU_DEFUN([AC_LTDL_SHLIBPATH], [m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:591: -1- AC_DEFUN([AC_LTDL_SHLIBPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBPATH' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:598: -1- AC_DEFUN([LT_SYS_DLSEARCH_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
-AC_CACHE_CHECK([for the default library search path],
-  [lt_cv_sys_dlsearch_path],
-  [lt_cv_sys_dlsearch_path="$sys_lib_dlsearch_path_spec"])
-if test -n "$lt_cv_sys_dlsearch_path"; then
-  sys_dlsearch_path=
-  for dir in $lt_cv_sys_dlsearch_path; do
-    if test -z "$sys_dlsearch_path"; then
-      sys_dlsearch_path="$dir"
-    else
-      sys_dlsearch_path="$sys_dlsearch_path$PATH_SEPARATOR$dir"
-    fi
-  done
-  m4_pattern_allow([LT_DLSEARCH_PATH])dnl
-  AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"],
-    [Define to the system default library search path.])
-fi
-])
-m4trace:/usr/share/aclocal/ltdl.m4:619: -1- AU_DEFUN([AC_LTDL_SYSSEARCHPATH], [m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:619: -1- AC_DEFUN([AC_LTDL_SYSSEARCHPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYSSEARCHPATH' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:645: -1- AC_DEFUN([LT_LIB_DLLOAD], [m4_pattern_allow([^LT_DLLOADERS$])
-LT_DLLOADERS=
-AC_SUBST([LT_DLLOADERS])
-
-AC_LANG_PUSH([C])
-
-LIBADD_DLOPEN=
-AC_SEARCH_LIBS([dlopen], [dl],
-	[AC_DEFINE([HAVE_LIBDL], [1],
-		   [Define if you have the libdl library or equivalent.])
-	if test "$ac_cv_search_dlopen" != "none required" ; then
-	  LIBADD_DLOPEN="-ldl"
-	fi
-	libltdl_cv_lib_dl_dlopen="yes"
-	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"],
-    [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H
-#  include <dlfcn.h>
-#endif
-    ]], [[dlopen(0, 0);]])],
-	    [AC_DEFINE([HAVE_LIBDL], [1],
-		       [Define if you have the libdl library or equivalent.])
-	    libltdl_cv_func_dlopen="yes"
-	    LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"],
-	[AC_CHECK_LIB([svld], [dlopen],
-		[AC_DEFINE([HAVE_LIBDL], [1],
-			 [Define if you have the libdl library or equivalent.])
-	        LIBADD_DLOPEN="-lsvld" libltdl_cv_func_dlopen="yes"
-		LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])])
-if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes
-then
-  lt_save_LIBS="$LIBS"
-  LIBS="$LIBS $LIBADD_DLOPEN"
-  AC_CHECK_FUNCS([dlerror])
-  LIBS="$lt_save_LIBS"
-fi
-AC_SUBST([LIBADD_DLOPEN])
-
-LIBADD_SHL_LOAD=
-AC_CHECK_FUNC([shl_load],
-	[AC_DEFINE([HAVE_SHL_LOAD], [1],
-		   [Define if you have the shl_load function.])
-	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"],
-    [AC_CHECK_LIB([dld], [shl_load],
-	    [AC_DEFINE([HAVE_SHL_LOAD], [1],
-		       [Define if you have the shl_load function.])
-	    LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"
-	    LIBADD_SHL_LOAD="-ldld"])])
-AC_SUBST([LIBADD_SHL_LOAD])
-
-case $host_os in
-darwin[[1567]].*)
-# We only want this for pre-Mac OS X 10.4.
-  AC_CHECK_FUNC([_dyld_func_lookup],
-	[AC_DEFINE([HAVE_DYLD], [1],
-		   [Define if you have the _dyld_func_lookup function.])
-	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"])
-  ;;
-beos*)
-  LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la"
-  ;;
-cygwin* | mingw* | os2* | pw32*)
-  AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include <sys/cygwin.h>]])
-  LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la"
-  ;;
-esac
-
-AC_CHECK_LIB([dld], [dld_link],
-	[AC_DEFINE([HAVE_DLD], [1],
-		   [Define if you have the GNU dld library.])
-		LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"])
-AC_SUBST([LIBADD_DLD_LINK])
-
-m4_pattern_allow([^LT_DLPREOPEN$])
-LT_DLPREOPEN=
-if test -n "$LT_DLLOADERS"
-then
-  for lt_loader in $LT_DLLOADERS; do
-    LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader "
-  done
-  AC_DEFINE([HAVE_LIBDLLOADER], [1],
-            [Define if libdlloader will be built on this platform])
-fi
-AC_SUBST([LT_DLPREOPEN])
-
-dnl This isn't used anymore, but set it for backwards compatibility
-LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD"
-AC_SUBST([LIBADD_DL])
-
-AC_LANG_POP
-])
-m4trace:/usr/share/aclocal/ltdl.m4:738: -1- AU_DEFUN([AC_LTDL_DLLIB], [m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:738: -1- AC_DEFUN([AC_LTDL_DLLIB], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLLIB' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:746: -1- AC_DEFUN([LT_SYS_SYMBOL_USCORE], [m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-AC_CACHE_CHECK([for _ prefix in compiled symbols],
-  [lt_cv_sys_symbol_underscore],
-  [lt_cv_sys_symbol_underscore=no
-  cat > conftest.$ac_ext <<_LT_EOF
-void nm_test_func(){}
-int main(){nm_test_func;return 0;}
-_LT_EOF
-  if AC_TRY_EVAL(ac_compile); then
-    # Now try to grab the symbols.
-    ac_nlist=conftest.nm
-    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then
-      # See whether the symbols have a leading underscore.
-      if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then
-        lt_cv_sys_symbol_underscore=yes
-      else
-        if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then
-	  :
-        else
-	  echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD
-        fi
-      fi
-    else
-      echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
-    fi
-  else
-    echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
-    cat conftest.c >&AS_MESSAGE_LOG_FD
-  fi
-  rm -rf conftest*
-  ])
-  sys_symbol_underscore=$lt_cv_sys_symbol_underscore
-  AC_SUBST([sys_symbol_underscore])
-])
-m4trace:/usr/share/aclocal/ltdl.m4:783: -1- AU_DEFUN([AC_LTDL_SYMBOL_USCORE], [m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:783: -1- AC_DEFUN([AC_LTDL_SYMBOL_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYMBOL_USCORE' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:790: -1- AC_DEFUN([LT_FUNC_DLSYM_USCORE], [AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl
-if test x"$lt_cv_sys_symbol_underscore" = xyes; then
-  if test x"$libltdl_cv_func_dlopen" = xyes ||
-     test x"$libltdl_cv_lib_dl_dlopen" = xyes ; then
-	AC_CACHE_CHECK([whether we have to add an underscore for dlsym],
-	  [libltdl_cv_need_uscore],
-	  [libltdl_cv_need_uscore=unknown
-          save_LIBS="$LIBS"
-          LIBS="$LIBS $LIBADD_DLOPEN"
-	  _LT_TRY_DLOPEN_SELF(
-	    [libltdl_cv_need_uscore=no], [libltdl_cv_need_uscore=yes],
-	    [],				 [libltdl_cv_need_uscore=cross])
-	  LIBS="$save_LIBS"
-	])
-  fi
-fi
-
-if test x"$libltdl_cv_need_uscore" = xyes; then
-  AC_DEFINE([NEED_USCORE], [1],
-    [Define if dlsym() requires a leading underscore in symbol names.])
-fi
-])
-m4trace:/usr/share/aclocal/ltdl.m4:815: -1- AU_DEFUN([AC_LTDL_DLSYM_USCORE], [m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])])
-m4trace:/usr/share/aclocal/ltdl.m4:815: -1- AC_DEFUN([AC_LTDL_DLSYM_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLSYM_USCORE' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])])
-m4trace:/usr/share/aclocal-1.13/amversion.m4:14: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.13'
-dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
-dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.13.4], [],
-      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
-])
-m4trace:/usr/share/aclocal-1.13/amversion.m4:33: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.13.4])dnl
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
-m4trace:/usr/share/aclocal-1.13/auxdir.m4:47: -1- AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-])
-m4trace:/usr/share/aclocal-1.13/cond.m4:12: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl
- m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])dnl
-AC_SUBST([$1_FALSE])dnl
-_AM_SUBST_NOTMAKE([$1_TRUE])dnl
-_AM_SUBST_NOTMAKE([$1_FALSE])dnl
-m4_define([_AM_COND_VALUE_$1], [$2])dnl
-if $2; then
-  $1_TRUE=
-  $1_FALSE='#'
-else
-  $1_TRUE='#'
-  $1_FALSE=
-fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
-  AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
-m4trace:/usr/share/aclocal-1.13/depend.m4:26: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl
-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-AC_REQUIRE([AM_DEP_TRACK])dnl
-
-m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
-      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
-      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
-      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
-      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
-                    [depcc="$$1"   am_compiler_list=])
-
-AC_CACHE_CHECK([dependency style of $depcc],
-               [am_cv_$1_dependencies_compiler_type],
-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_$1_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
-  fi
-  am__universal=false
-  m4_case([$1], [CC],
-    [case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac],
-    [CXX],
-    [case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac])
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-	continue
-      else
-	break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_$1_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_$1_dependencies_compiler_type=none
-fi
-])
-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-AM_CONDITIONAL([am__fastdep$1], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-])
-m4trace:/usr/share/aclocal-1.13/depend.m4:163: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-])
-m4trace:/usr/share/aclocal-1.13/depend.m4:171: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl
-AS_HELP_STRING(
-  [--enable-dependency-tracking],
-  [do not reject slow dependency extractors])
-AS_HELP_STRING(
-  [--disable-dependency-tracking],
-  [speeds up one-time build])])
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-  am__nodep='_no'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-AC_SUBST([am__nodep])dnl
-_AM_SUBST_NOTMAKE([am__nodep])dnl
-])
-m4trace:/usr/share/aclocal-1.13/depout.m4:12: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{
-  # Older Autoconf quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
-  esac
-  shift
-  for mf
-  do
-    # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named 'Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`AS_DIRNAME("$mf")`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running 'make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "$am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`AS_DIRNAME(["$file"])`
-      AS_MKDIR_P([$dirpart/$fdir])
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
-  done
-}
-])
-m4trace:/usr/share/aclocal-1.13/depout.m4:71: -1- AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles],
-     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
-     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
-m4trace:/usr/share/aclocal-1.13/init.m4:23: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl
-dnl Autoconf wants to disallow AM_ names.  We explicitly allow
-dnl the ones we care about.
-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-AC_REQUIRE([AC_PROG_INSTALL])dnl
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-AC_SUBST([CYGPATH_W])
-
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[AC_DIAGNOSE([obsolete],
-             [$0: two- and three-arguments forms are deprecated.])
-m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- AC_SUBST([PACKAGE], [$1])dnl
- AC_SUBST([VERSION], [$2])],
-[_AM_SET_OPTIONS([$1])dnl
-dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(
-  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
-  [ok:ok],,
-  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
-
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
- AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
-
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
-AM_MISSING_PROG([AUTOCONF], [autoconf])
-AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
-AM_MISSING_PROG([AUTOHEADER], [autoheader])
-AM_MISSING_PROG([MAKEINFO], [makeinfo])
-AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-# For better backward compatibility.  To be removed once Automake 1.9.x
-# dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
-	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
-			     [_AM_PROG_TAR([v7])])])
-_AM_IF_OPTION([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
-		  [_AM_DEPENDENCIES([CC])],
-		  [m4_define([AC_PROG_CC],
-			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
-		  [_AM_DEPENDENCIES([CXX])],
-		  [m4_define([AC_PROG_CXX],
-			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-		  [_AM_DEPENDENCIES([OBJC])],
-		  [m4_define([AC_PROG_OBJC],
-			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
-		  [_AM_DEPENDENCIES([OBJCXX])],
-		  [m4_define([AC_PROG_OBJCXX],
-			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
-])
-AC_REQUIRE([AM_SILENT_RULES])dnl
-dnl The testsuite driver may need to know about EXEEXT, so add the
-dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
-dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
-AC_CONFIG_COMMANDS_PRE(dnl
-[m4_provide_if([_AM_COMPILER_EXEEXT],
-  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-])
-m4trace:/usr/share/aclocal-1.13/init.m4:136: -1- AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers.
-_am_arg=$1
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-m4trace:/usr/share/aclocal-1.13/install-sh.m4:11: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-AC_SUBST([install_sh])])
-m4trace:/usr/share/aclocal-1.13/lead-dot.m4:10: -1- AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-m4trace:/usr/share/aclocal-1.13/make.m4:12: -1- AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-	@echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
-m4trace:/usr/share/aclocal-1.13/missing.m4:11: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
-m4trace:/usr/share/aclocal-1.13/missing.m4:20: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([missing])dnl
-if test x"${MISSING+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-  *)
-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
-  esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --is-lightweight"; then
-  am_missing_run="$MISSING "
-else
-  am_missing_run=
-  AC_MSG_WARN(['missing' script is too old or missing])
-fi
-])
-m4trace:/usr/share/aclocal-1.13/options.m4:11: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
-m4trace:/usr/share/aclocal-1.13/options.m4:17: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])])
-m4trace:/usr/share/aclocal-1.13/options.m4:23: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
-m4trace:/usr/share/aclocal-1.13/options.m4:29: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-m4trace:/usr/share/aclocal-1.13/python.m4:35: -1- AC_DEFUN([AM_PATH_PYTHON], [
-  dnl Find a Python interpreter.  Python versions prior to 2.0 are not
-  dnl supported. (2.0 was released on October 16, 2000).
-  m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
-[python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 dnl
- python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0])
-
-  AC_ARG_VAR([PYTHON], [the Python interpreter])
-
-  m4_if([$1],[],[
-    dnl No version check is needed.
-    # Find any Python interpreter.
-    if test -z "$PYTHON"; then
-      AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :)
-    fi
-    am_display_PYTHON=python
-  ], [
-    dnl A version check is needed.
-    if test -n "$PYTHON"; then
-      # If the user set $PYTHON, use it and don't search something else.
-      AC_MSG_CHECKING([whether $PYTHON version is >= $1])
-      AM_PYTHON_CHECK_VERSION([$PYTHON], [$1],
-			      [AC_MSG_RESULT([yes])],
-			      [AC_MSG_RESULT([no])
-			       AC_MSG_ERROR([Python interpreter is too old])])
-      am_display_PYTHON=$PYTHON
-    else
-      # Otherwise, try each interpreter until we find one that satisfies
-      # VERSION.
-      AC_CACHE_CHECK([for a Python interpreter with version >= $1],
-	[am_cv_pathless_PYTHON],[
-	for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do
-	  test "$am_cv_pathless_PYTHON" = none && break
-	  AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
-	done])
-      # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
-      if test "$am_cv_pathless_PYTHON" = none; then
-	PYTHON=:
-      else
-        AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON])
-      fi
-      am_display_PYTHON=$am_cv_pathless_PYTHON
-    fi
-  ])
-
-  if test "$PYTHON" = :; then
-  dnl Run any user-specified action, or abort.
-    m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])])
-  else
-
-  dnl Query Python for its version number.  Getting [:3] seems to be
-  dnl the best way to do this; it's what "site.py" does in the standard
-  dnl library.
-
-  AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version],
-    [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`])
-  AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
-
-  dnl Use the values of $prefix and $exec_prefix for the corresponding
-  dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX.  These are made
-  dnl distinct variables so they can be overridden if need be.  However,
-  dnl general consensus is that you shouldn't need this ability.
-
-  AC_SUBST([PYTHON_PREFIX], ['${prefix}'])
-  AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
-
-  dnl At times (like when building shared libraries) you may want
-  dnl to know which OS platform Python thinks this is.
-
-  AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform],
-    [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
-  AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
-
-  # Just factor out some code duplication.
-  am_python_setup_sysconfig="\
-import sys
-# Prefer sysconfig over distutils.sysconfig, for better compatibility
-# with python 3.x.  See automake bug#10227.
-try:
-    import sysconfig
-except ImportError:
-    can_use_sysconfig = 0
-else:
-    can_use_sysconfig = 1
-# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
-# <https://github.com/pypa/virtualenv/issues/118>
-try:
-    from platform import python_implementation
-    if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7':
-        can_use_sysconfig = 0
-except ImportError:
-    pass"
-
-  dnl Set up 4 directories:
-
-  dnl pythondir -- where to install python scripts.  This is the
-  dnl   site-packages directory, not the python standard library
-  dnl   directory like in previous automake betas.  This behavior
-  dnl   is more consistent with lispdir.m4 for example.
-  dnl Query distutils for this directory.
-  AC_CACHE_CHECK([for $am_display_PYTHON script directory],
-    [am_cv_python_pythondir],
-    [if test "x$prefix" = xNONE
-     then
-       am_py_prefix=$ac_default_prefix
-     else
-       am_py_prefix=$prefix
-     fi
-     am_cv_python_pythondir=`$PYTHON -c "
-$am_python_setup_sysconfig
-if can_use_sysconfig:
-    sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
-else:
-    from distutils import sysconfig
-    sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
-sys.stdout.write(sitedir)"`
-     case $am_cv_python_pythondir in
-     $am_py_prefix*)
-       am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
-       am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
-       ;;
-     *)
-       case $am_py_prefix in
-         /usr|/System*) ;;
-         *)
-	  am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
-	  ;;
-       esac
-       ;;
-     esac
-    ])
-  AC_SUBST([pythondir], [$am_cv_python_pythondir])
-
-  dnl pkgpythondir -- $PACKAGE directory under pythondir.  Was
-  dnl   PYTHON_SITE_PACKAGE in previous betas, but this naming is
-  dnl   more consistent with the rest of automake.
-
-  AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
-
-  dnl pyexecdir -- directory for installing python extension modules
-  dnl   (shared libraries)
-  dnl Query distutils for this directory.
-  AC_CACHE_CHECK([for $am_display_PYTHON extension module directory],
-    [am_cv_python_pyexecdir],
-    [if test "x$exec_prefix" = xNONE
-     then
-       am_py_exec_prefix=$am_py_prefix
-     else
-       am_py_exec_prefix=$exec_prefix
-     fi
-     am_cv_python_pyexecdir=`$PYTHON -c "
-$am_python_setup_sysconfig
-if can_use_sysconfig:
-    sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
-else:
-    from distutils import sysconfig
-    sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
-sys.stdout.write(sitedir)"`
-     case $am_cv_python_pyexecdir in
-     $am_py_exec_prefix*)
-       am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
-       am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
-       ;;
-     *)
-       case $am_py_exec_prefix in
-         /usr|/System*) ;;
-         *)
-	   am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
-	   ;;
-       esac
-       ;;
-     esac
-    ])
-  AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
-
-  dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
-
-  AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
-
-  dnl Run any user-specified action.
-  $2
-  fi
-
-])
-m4trace:/usr/share/aclocal-1.13/python.m4:229: -1- AC_DEFUN([AM_PYTHON_CHECK_VERSION], [prog="import sys
-# split strings by '.' and convert to numeric.  Append some zeros
-# because we need at least 4 digits for the hex conversion.
-# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
-minverhex = 0
-# xrange is not present in Python 3.0 and range returns an iterator
-for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
-sys.exit(sys.hexversion < minverhex)"
-  AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
-m4trace:/usr/share/aclocal-1.13/runlog.m4:12: -1- AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
-   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   (exit $ac_status); }])
-m4trace:/usr/share/aclocal-1.13/sanity.m4:11: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane])
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name.  Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
-  *[[\\\"\#\$\&\'\`$am_lf]]*)
-    AC_MSG_ERROR([unsafe absolute working directory name]);;
-esac
-case $srcdir in
-  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
-    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
-esac
-
-# Do 'set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   am_has_slept=no
-   for am_try in 1 2; do
-     echo "timestamp, slept: $am_has_slept" > conftest.file
-     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-     if test "$[*]" = "X"; then
-	# -L didn't work.
-	set X `ls -t "$srcdir/configure" conftest.file`
-     fi
-     if test "$[*]" != "X $srcdir/configure conftest.file" \
-	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
-
-	# If neither matched, then we have a broken ls.  This can happen
-	# if, for instance, CONFIG_SHELL is bash and it inherits a
-	# broken ls alias from the environment.  This has actually
-	# happened.  Such a system could not be considered "sane".
-	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-  alias in your environment])
-     fi
-     if test "$[2]" = conftest.file || test $am_try -eq 2; then
-       break
-     fi
-     # Just in case.
-     sleep 1
-     am_has_slept=yes
-   done
-   test "$[2]" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
-fi
-AC_MSG_RESULT([yes])
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-  ( sleep 1 ) &
-  am_sleep_pid=$!
-fi
-AC_CONFIG_COMMANDS_PRE(
-  [AC_MSG_CHECKING([that generated files are newer than configure])
-   if test -n "$am_sleep_pid"; then
-     # Hide warnings about reused PIDs.
-     wait $am_sleep_pid 2>/dev/null
-   fi
-   AC_MSG_RESULT([done])])
-rm -f conftest.file
-])
-m4trace:/usr/share/aclocal-1.13/silent.m4:12: -1- AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl
-AS_HELP_STRING(
-  [--enable-silent-rules],
-  [less verbose build output (undo: "make V=1")])
-AS_HELP_STRING(
-  [--disable-silent-rules],
-  [verbose build output (undo: "make V=0")])dnl
-])
-case $enable_silent_rules in @%:@ (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
-esac
-dnl
-dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
-dnl do not support nested variable expansions.
-dnl See automake bug#9928 and bug#10237.
-am_make=${MAKE-make}
-AC_CACHE_CHECK([whether $am_make supports nested variables],
-   [am_cv_make_support_nested_variables],
-   [if AS_ECHO([['TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-	@$(TRUE)
-.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi])
-if test $am_cv_make_support_nested_variables = yes; then
-  dnl Using '$V' instead of '$(V)' breaks IRIX make.
-  AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AC_SUBST([AM_V])dnl
-AM_SUBST_NOTMAKE([AM_V])dnl
-AC_SUBST([AM_DEFAULT_V])dnl
-AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
-AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
-AM_BACKSLASH='\'
-AC_SUBST([AM_BACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
-])
-m4trace:/usr/share/aclocal-1.13/strip.m4:17: -1- AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using 'strip' when the user
-# run "make install-strip".  However 'strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the 'STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
-if test "$cross_compiling" != no; then
-  AC_CHECK_TOOL([STRIP], [strip], :)
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-m4trace:/usr/share/aclocal-1.13/substnot.m4:12: -1- AC_DEFUN([_AM_SUBST_NOTMAKE])
-m4trace:/usr/share/aclocal-1.13/substnot.m4:17: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
-m4trace:/usr/share/aclocal-1.13/tar.m4:23: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility.  Yes, it's still used
-# in the wild :-(  We should find a proper way to deprecate it ...
-AC_SUBST([AMTAR], ['$${TAR-tar}'])
-
-# We'll loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-
-m4_if([$1], [v7],
-  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
-
-  [m4_case([$1],
-    [ustar],
-     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
-      # There is notably a 21 bits limit for the UID and the GID.  In fact,
-      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
-      # and bug#13588).
-      am_max_uid=2097151 # 2^21 - 1
-      am_max_gid=$am_max_uid
-      # The $UID and $GID variables are not portable, so we need to resort
-      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
-      # below are definitely unexpected, so allow the users to see them
-      # (that is, avoid stderr redirection).
-      am_uid=`id -u || echo unknown`
-      am_gid=`id -g || echo unknown`
-      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
-      if test $am_uid -le $am_max_uid; then
-         AC_MSG_RESULT([yes])
-      else
-         AC_MSG_RESULT([no])
-         _am_tools=none
-      fi
-      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
-      if test $am_gid -le $am_max_gid; then
-         AC_MSG_RESULT([yes])
-      else
-        AC_MSG_RESULT([no])
-        _am_tools=none
-      fi],
-
-  [pax],
-    [],
-
-  [m4_fatal([Unknown tar format])])
-
-  AC_MSG_CHECKING([how to create a $1 tar archive])
-
-  # Go ahead even if we have the value already cached.  We do so because we
-  # need to set the values for the 'am__tar' and 'am__untar' variables.
-  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
-
-  for _am_tool in $_am_tools; do
-    case $_am_tool in
-    gnutar)
-      for _am_tar in tar gnutar gtar; do
-        AM_RUN_LOG([$_am_tar --version]) && break
-      done
-      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-      am__untar="$_am_tar -xf -"
-      ;;
-    plaintar)
-      # Must skip GNU tar: if it does not support --format= it doesn't create
-      # ustar tarball either.
-      (tar --version) >/dev/null 2>&1 && continue
-      am__tar='tar chf - "$$tardir"'
-      am__tar_='tar chf - "$tardir"'
-      am__untar='tar xf -'
-      ;;
-    pax)
-      am__tar='pax -L -x $1 -w "$$tardir"'
-      am__tar_='pax -L -x $1 -w "$tardir"'
-      am__untar='pax -r'
-      ;;
-    cpio)
-      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-      am__untar='cpio -i -H $1 -d'
-      ;;
-    none)
-      am__tar=false
-      am__tar_=false
-      am__untar=false
-      ;;
-    esac
-
-    # If the value was cached, stop now.  We just wanted to have am__tar
-    # and am__untar set.
-    test -n "${am_cv_prog_tar_$1}" && break
-
-    # tar/untar a dummy directory, and stop if the command works.
-    rm -rf conftest.dir
-    mkdir conftest.dir
-    echo GrepMe > conftest.dir/file
-    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
-    rm -rf conftest.dir
-    if test -s conftest.tar; then
-      AM_RUN_LOG([$am__untar <conftest.tar])
-      AM_RUN_LOG([cat conftest.dir/file])
-      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-    fi
-  done
-  rm -rf conftest.dir
-
-  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-
-AC_SUBST([am__tar])
-AC_SUBST([am__untar])
-])
-m4trace:m4/ax_linux_distribution.m4:23: -1- AC_DEFUN([AX_LINUX_DISTRIBUTION], [dnl
-AC_REQUIRE([AC_CANONICAL_HOST])
-HOST_CPU=${host_cpu}
-HOST_VENDOR=${host_vendor}
-HOST_OS=${host_os}
-
-if test x$HOST_OS = "xlinux-gnu"
-then
-	AC_MSG_CHECKING(for Linux distribution )
-
-	# This works for Fedora, RedHat and Slackware
-	for f in /etc/fedora-release /etc/redhat-release /etc/slackware-release
-	do
-		if test -f $f; then
-			distro=`cat $f`	
-			break
-		fi
-	done	
-
-	# This works in Ubuntu (11 at least)
-	if test -f /etc/lsb-release; then
-		distro=`cat /etc/lsb-release | grep DISTRIB_ID | awk -F= '{print $2}' `
-		distro_version=`cat /etc/lsb-release | grep DISTRIB_RELEASE | awk -F= '{print $2}' `
-	fi
-
-	# For SuSE
-	if test -f /etc/SuSE-release; then
-		distro=`cat /etc/SuSE-release | head -1`
-		#distro_version=`cat /etc/SuSE-release | tail -1 | awk -F= '{print $2}' `
-	fi
-
-	# At least Debian has this
-	if test -f /etc/issue.net -a "x$distro" = x; then
-		distro=`cat /etc/issue.net | head -1`
-	fi
-
-	# Everything else
-	if test "x$distro" = x; then
-		distro="Unknown Linux"
-	fi
-	
-	LINUX_DISTRIBUTION_NAME=$distro
-	LINUX_DISTRIBUTION_VERSION=$distro_version
-    AC_MSG_RESULT($LINUX_DISTRIBUTION_NAME $LINUX_DISTRIBUTION_VERSION)
-
-else
-	LINUX_DISTRIBUTION_NAME=$HOST_OS
-	LINUX_DISTRIBUTION_VERSION=""
-	AC_MSG_NOTICE(OS is non-Linux UNIX $HOST_OS.)
-fi
-
-AC_SUBST(LINUX_DISTRIBUTION_NAME)
-AC_SUBST(LINUX_DISTRIBUTION_VERSION)
-])
-m4trace:m4/libtool.m4:69: -1- AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
-AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
-AC_BEFORE([$0], [LT_LANG])dnl
-AC_BEFORE([$0], [LT_OUTPUT])dnl
-AC_BEFORE([$0], [LTDL_INIT])dnl
-m4_require([_LT_CHECK_BUILDDIR])dnl
-
-dnl Autoconf doesn't catch unexpanded LT_ macros by default:
-m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
-m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
-dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
-dnl unless we require an AC_DEFUNed macro:
-AC_REQUIRE([LTOPTIONS_VERSION])dnl
-AC_REQUIRE([LTSUGAR_VERSION])dnl
-AC_REQUIRE([LTVERSION_VERSION])dnl
-AC_REQUIRE([LTOBSOLETE_VERSION])dnl
-m4_require([_LT_PROG_LTMAIN])dnl
-
-_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
-
-dnl Parse OPTIONS
-_LT_SET_OPTIONS([$0], [$1])
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
-
-_LT_SETUP
-
-# Only expand once:
-m4_define([LT_INIT])
-])
-m4trace:m4/libtool.m4:107: -1- AU_DEFUN([AC_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
-m4trace:m4/libtool.m4:107: -1- AC_DEFUN([AC_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
-m4trace:m4/libtool.m4:108: -1- AU_DEFUN([AM_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
-m4trace:m4/libtool.m4:108: -1- AC_DEFUN([AM_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_LIBTOOL' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
-m4trace:m4/libtool.m4:609: -1- AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt}
-AC_MSG_NOTICE([creating $CONFIG_LT])
-_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
-[# Run this file to recreate a libtool stub with the current configuration.])
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-lt_cl_silent=false
-exec AS_MESSAGE_LOG_FD>>config.log
-{
-  echo
-  AS_BOX([Running $as_me.])
-} >&AS_MESSAGE_LOG_FD
-
-lt_cl_help="\
-\`$as_me' creates a local libtool stub from the current configuration,
-for use in further configure time tests before the real libtool is
-generated.
-
-Usage: $[0] [[OPTIONS]]
-
-  -h, --help      print this help, then exit
-  -V, --version   print version number, then exit
-  -q, --quiet     do not print progress messages
-  -d, --debug     don't remove temporary files
-
-Report bugs to <bug-libtool at gnu.org>."
-
-lt_cl_version="\
-m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
-m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
-configured by $[0], generated by m4_PACKAGE_STRING.
-
-Copyright (C) 2011 Free Software Foundation, Inc.
-This config.lt script is free software; the Free Software Foundation
-gives unlimited permision to copy, distribute and modify it."
-
-while test $[#] != 0
-do
-  case $[1] in
-    --version | --v* | -V )
-      echo "$lt_cl_version"; exit 0 ;;
-    --help | --h* | -h )
-      echo "$lt_cl_help"; exit 0 ;;
-    --debug | --d* | -d )
-      debug=: ;;
-    --quiet | --q* | --silent | --s* | -q )
-      lt_cl_silent=: ;;
-
-    -*) AC_MSG_ERROR([unrecognized option: $[1]
-Try \`$[0] --help' for more information.]) ;;
-
-    *) AC_MSG_ERROR([unrecognized argument: $[1]
-Try \`$[0] --help' for more information.]) ;;
-  esac
-  shift
-done
-
-if $lt_cl_silent; then
-  exec AS_MESSAGE_FD>/dev/null
-fi
-_LTEOF
-
-cat >>"$CONFIG_LT" <<_LTEOF
-_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
-_LTEOF
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-AC_MSG_NOTICE([creating $ofile])
-_LT_OUTPUT_LIBTOOL_COMMANDS
-AS_EXIT(0)
-_LTEOF
-chmod +x "$CONFIG_LT"
-
-# configure is writing to config.log, but config.lt does its own redirection,
-# appending to config.log, which fails on DOS, as config.log is still kept
-# open by configure.  Here we exec the FD to /dev/null, effectively closing
-# config.log, so it can be properly (re)opened and appended to by config.lt.
-lt_cl_success=:
-test "$silent" = yes &&
-  lt_config_lt_args="$lt_config_lt_args --quiet"
-exec AS_MESSAGE_LOG_FD>/dev/null
-$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
-exec AS_MESSAGE_LOG_FD>>config.log
-$lt_cl_success || AS_EXIT(1)
-])
-m4trace:m4/libtool.m4:790: -1- AC_DEFUN([LT_SUPPORTED_TAG], [])
-m4trace:m4/libtool.m4:801: -1- AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl
-m4_case([$1],
-  [C],			[_LT_LANG(C)],
-  [C++],		[_LT_LANG(CXX)],
-  [Go],			[_LT_LANG(GO)],
-  [Java],		[_LT_LANG(GCJ)],
-  [Fortran 77],		[_LT_LANG(F77)],
-  [Fortran],		[_LT_LANG(FC)],
-  [Windows Resource],	[_LT_LANG(RC)],
-  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
-    [_LT_LANG($1)],
-    [m4_fatal([$0: unsupported language: "$1"])])])dnl
-])
-m4trace:m4/libtool.m4:893: -1- AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
-m4trace:m4/libtool.m4:893: -1- AC_DEFUN([AC_LIBTOOL_CXX], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_CXX' is obsolete.
-You should run autoupdate.])dnl
-LT_LANG(C++)])
-m4trace:m4/libtool.m4:894: -1- AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
-m4trace:m4/libtool.m4:894: -1- AC_DEFUN([AC_LIBTOOL_F77], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_F77' is obsolete.
-You should run autoupdate.])dnl
-LT_LANG(Fortran 77)])
-m4trace:m4/libtool.m4:895: -1- AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
-m4trace:m4/libtool.m4:895: -1- AC_DEFUN([AC_LIBTOOL_FC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_FC' is obsolete.
-You should run autoupdate.])dnl
-LT_LANG(Fortran)])
-m4trace:m4/libtool.m4:896: -1- AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
-m4trace:m4/libtool.m4:896: -1- AC_DEFUN([AC_LIBTOOL_GCJ], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_GCJ' is obsolete.
-You should run autoupdate.])dnl
-LT_LANG(Java)])
-m4trace:m4/libtool.m4:897: -1- AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
-m4trace:m4/libtool.m4:897: -1- AC_DEFUN([AC_LIBTOOL_RC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_RC' is obsolete.
-You should run autoupdate.])dnl
-LT_LANG(Windows Resource)])
-m4trace:m4/libtool.m4:1225: -1- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot])
-AC_ARG_WITH([sysroot],
-[  --with-sysroot[=DIR] Search for dependent libraries within DIR
-                        (or the compiler's sysroot if not specified).],
-[], [with_sysroot=no])
-
-dnl lt_sysroot will always be passed unquoted.  We quote it here
-dnl in case the user passed a directory name.
-lt_sysroot=
-case ${with_sysroot} in #(
- yes)
-   if test "$GCC" = yes; then
-     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-   fi
-   ;; #(
- /*)
-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-   ;; #(
- no|'')
-   ;; #(
- *)
-   AC_MSG_RESULT([${with_sysroot}])
-   AC_MSG_ERROR([The sysroot must be an absolute path.])
-   ;;
-esac
-
- AC_MSG_RESULT([${lt_sysroot:-no}])
-_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
-[dependent libraries, and in which our libraries should be installed.])])
-m4trace:m4/libtool.m4:1502: -1- AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$3"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       $2=yes
-     fi
-   fi
-   $RM conftest*
-])
-
-if test x"[$]$2" = xyes; then
-    m4_if([$5], , :, [$5])
-else
-    m4_if([$6], , :, [$6])
-fi
-])
-m4trace:m4/libtool.m4:1544: -1- AU_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])])
-m4trace:m4/libtool.m4:1544: -1- AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_COMPILER_OPTION' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])])
-m4trace:m4/libtool.m4:1553: -1- AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $3"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&AS_MESSAGE_LOG_FD
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         $2=yes
-       fi
-     else
-       $2=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-])
-
-if test x"[$]$2" = xyes; then
-    m4_if([$4], , :, [$4])
-else
-    m4_if([$5], , :, [$5])
-fi
-])
-m4trace:m4/libtool.m4:1588: -1- AU_DEFUN([AC_LIBTOOL_LINKER_OPTION], [m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])])
-m4trace:m4/libtool.m4:1588: -1- AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_LINKER_OPTION' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])])
-m4trace:m4/libtool.m4:1595: -1- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
-# find the maximum length of command line arguments
-AC_MSG_CHECKING([the maximum length of command line arguments])
-AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
-  i=0
-  teststring="ABCD"
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  mint*)
-    # On MiNT this can take a long time and run out of memory.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  os2*)
-    # The test takes a long time on OS/2.
-    lt_cv_sys_max_cmd_len=8192
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
-	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-	      test $i != 17 # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-])
-if test -n $lt_cv_sys_max_cmd_len ; then
-  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
-else
-  AC_MSG_RESULT(none)
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-_LT_DECL([], [max_cmd_len], [0],
-    [What is the maximum length of a command?])
-])
-m4trace:m4/libtool.m4:1733: -1- AU_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])])
-m4trace:m4/libtool.m4:1733: -1- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_SYS_MAX_CMD_LEN' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])])
-m4trace:m4/libtool.m4:1844: -1- AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl
-if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ])
-    ;;
-
-  *)
-    AC_CHECK_FUNC([shl_load],
-	  [lt_cv_dlopen="shl_load"],
-      [AC_CHECK_LIB([dld], [shl_load],
-	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
-	[AC_CHECK_FUNC([dlopen],
-	      [lt_cv_dlopen="dlopen"],
-	  [AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
-	    [AC_CHECK_LIB([svld], [dlopen],
-		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-	      [AC_CHECK_LIB([dld], [dld_link],
-		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
-	      ])
-	    ])
-	  ])
-	])
-      ])
-    ;;
-  esac
-
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    AC_CACHE_CHECK([whether a program can dlopen itself],
-	  lt_cv_dlopen_self, [dnl
-	  _LT_TRY_DLOPEN_SELF(
-	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
-	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
-    ])
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
-	  lt_cv_dlopen_self_static, [dnl
-	  _LT_TRY_DLOPEN_SELF(
-	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
-	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
-      ])
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-_LT_DECL([dlopen_support], [enable_dlopen], [0],
-	 [Whether dlopen is supported])
-_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
-	 [Whether dlopen of programs is supported])
-_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
-	 [Whether dlopen of statically linked programs is supported])
-])
-m4trace:m4/libtool.m4:1961: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])])
-m4trace:m4/libtool.m4:1961: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN_SELF' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])])
-m4trace:m4/libtool.m4:2930: -1- AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl
-AC_MSG_CHECKING([for $1])
-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
-[case $MAGIC_CMD in
-[[\\/*] |  ?:[\\/]*])
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-dnl $ac_dummy forces splitting on constant user-supplied paths.
-dnl POSIX.2 word splitting is done only on the output of word expansions,
-dnl not every word.  This closes a longstanding sh security hole.
-  ac_dummy="m4_if([$2], , $PATH, [$2])"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$1; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool at gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac])
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  AC_MSG_RESULT($MAGIC_CMD)
-else
-  AC_MSG_RESULT(no)
-fi
-_LT_DECL([], [MAGIC_CMD], [0],
-	 [Used to examine libraries when file_magic_cmd begins with "file"])dnl
-])
-m4trace:m4/libtool.m4:2992: -1- AU_DEFUN([AC_PATH_TOOL_PREFIX], [m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])])
-m4trace:m4/libtool.m4:2992: -1- AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_DIAGNOSE([obsolete], [The macro `AC_PATH_TOOL_PREFIX' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])])
-m4trace:m4/libtool.m4:3015: -1- AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
-
-AC_ARG_WITH([gnu-ld],
-    [AS_HELP_STRING([--with-gnu-ld],
-	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
-    [test "$withval" = no || with_gnu_ld=yes],
-    [with_gnu_ld=no])dnl
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  AC_MSG_CHECKING([for ld used by $CC])
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [[\\/]]* | ?:[[\\/]]*)
-      re_direlt='/[[^/]][[^/]]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  AC_MSG_CHECKING([for GNU ld])
-else
-  AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(lt_cv_path_LD,
-[if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  AC_MSG_RESULT($LD)
-else
-  AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-_LT_PATH_LD_GNU
-AC_SUBST([LD])
-
-_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
-])
-m4trace:m4/libtool.m4:3104: -1- AU_DEFUN([AM_PROG_LD], [m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
-m4trace:m4/libtool.m4:3104: -1- AC_DEFUN([AM_PROG_LD], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_LD' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
-m4trace:m4/libtool.m4:3105: -1- AU_DEFUN([AC_PROG_LD], [m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
-m4trace:m4/libtool.m4:3105: -1- AC_DEFUN([AC_PROG_LD], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_LD' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
-m4trace:m4/libtool.m4:3399: -1- AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl
-AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
-[if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
-	#   nm: unknown option "B" ignored
-	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
-	  lt_cv_path_NM="$tmp_nm -B"
-	  break
-	  ;;
-	*)
-	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-	  */dev/null*)
-	    lt_cv_path_NM="$tmp_nm -p"
-	    break
-	    ;;
-	  *)
-	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-	    continue # so that we can try to find one that supports BSD flags
-	    ;;
-	  esac
-	  ;;
-	esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  : ${lt_cv_path_NM=no}
-fi])
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$DUMPBIN"; then :
-    # Let the user override the test.
-  else
-    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
-    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
-    *COFF*)
-      DUMPBIN="$DUMPBIN -symbols"
-      ;;
-    *)
-      DUMPBIN=:
-      ;;
-    esac
-  fi
-  AC_SUBST([DUMPBIN])
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
-  fi
-fi
-test -z "$NM" && NM=nm
-AC_SUBST([NM])
-_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
-
-AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
-  [lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
-  cat conftest.out >&AS_MESSAGE_LOG_FD
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*])
-])
-m4trace:m4/libtool.m4:3489: -1- AU_DEFUN([AM_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
-m4trace:m4/libtool.m4:3489: -1- AC_DEFUN([AM_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_NM' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
-m4trace:m4/libtool.m4:3490: -1- AU_DEFUN([AC_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
-m4trace:m4/libtool.m4:3490: -1- AC_DEFUN([AC_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_NM' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
-m4trace:m4/libtool.m4:3560: -1- AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
-LIBM=
-case $host in
-*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
-  # These system don't have libm, or don't need it
-  ;;
-*-ncr-sysv4.3*)
-  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
-  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
-  ;;
-*)
-  AC_CHECK_LIB(m, cos, LIBM="-lm")
-  ;;
-esac
-AC_SUBST([LIBM])
-])
-m4trace:m4/libtool.m4:3579: -1- AU_DEFUN([AC_CHECK_LIBM], [m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])])
-m4trace:m4/libtool.m4:3579: -1- AC_DEFUN([AC_CHECK_LIBM], [AC_DIAGNOSE([obsolete], [The macro `AC_CHECK_LIBM' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])])
-m4trace:m4/libtool.m4:7622: -1- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
-  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
-    [AC_CHECK_TOOL(GCJ, gcj,)
-      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
-      AC_SUBST(GCJFLAGS)])])[]dnl
-])
-m4trace:m4/libtool.m4:7631: -1- AU_DEFUN([LT_AC_PROG_GCJ], [m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])])
-m4trace:m4/libtool.m4:7631: -1- AC_DEFUN([LT_AC_PROG_GCJ], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_GCJ' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])])
-m4trace:m4/libtool.m4:7638: -1- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,)
-])
-m4trace:m4/libtool.m4:7645: -1- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,)
-])
-m4trace:m4/libtool.m4:7650: -1- AU_DEFUN([LT_AC_PROG_RC], [m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])])
-m4trace:m4/libtool.m4:7650: -1- AC_DEFUN([LT_AC_PROG_RC], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_RC' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])])
-m4trace:m4/libtool.m4:7770: -1- AU_DEFUN([LT_AC_PROG_SED], [m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])])
-m4trace:m4/libtool.m4:7770: -1- AC_DEFUN([LT_AC_PROG_SED], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_SED' is obsolete.
-You should run autoupdate.])dnl
-m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])])
-m4trace:m4/ltoptions.m4:14: -1- AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
-m4trace:m4/ltoptions.m4:111: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `dlopen' option into LT_INIT's first parameter.])
-])
-m4trace:m4/ltoptions.m4:111: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN' is obsolete.
-You should run autoupdate.])dnl
-_LT_SET_OPTION([LT_INIT], [dlopen])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `dlopen' option into LT_INIT's first parameter.])
-])
-m4trace:m4/ltoptions.m4:146: -1- AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
-_LT_SET_OPTION([LT_INIT], [win32-dll])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `win32-dll' option into LT_INIT's first parameter.])
-])
-m4trace:m4/ltoptions.m4:146: -1- AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_WIN32_DLL' is obsolete.
-You should run autoupdate.])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-_LT_SET_OPTION([LT_INIT], [win32-dll])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `win32-dll' option into LT_INIT's first parameter.])
-])
-m4trace:m4/ltoptions.m4:195: -1- AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
-])
-m4trace:m4/ltoptions.m4:199: -1- AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared])
-])
-m4trace:m4/ltoptions.m4:203: -1- AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
-m4trace:m4/ltoptions.m4:203: -1- AC_DEFUN([AM_ENABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_SHARED' is obsolete.
-You should run autoupdate.])dnl
-AC_ENABLE_SHARED($@)])
-m4trace:m4/ltoptions.m4:204: -1- AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
-m4trace:m4/ltoptions.m4:204: -1- AC_DEFUN([AM_DISABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_SHARED' is obsolete.
-You should run autoupdate.])dnl
-AC_DISABLE_SHARED($@)])
-m4trace:m4/ltoptions.m4:249: -1- AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
-])
-m4trace:m4/ltoptions.m4:253: -1- AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static])
-])
-m4trace:m4/ltoptions.m4:257: -1- AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
-m4trace:m4/ltoptions.m4:257: -1- AC_DEFUN([AM_ENABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_STATIC' is obsolete.
-You should run autoupdate.])dnl
-AC_ENABLE_STATIC($@)])
-m4trace:m4/ltoptions.m4:258: -1- AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
-m4trace:m4/ltoptions.m4:258: -1- AC_DEFUN([AM_DISABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_STATIC' is obsolete.
-You should run autoupdate.])dnl
-AC_DISABLE_STATIC($@)])
-m4trace:m4/ltoptions.m4:303: -1- AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `fast-install' option into LT_INIT's first parameter.])
-])
-m4trace:m4/ltoptions.m4:303: -1- AC_DEFUN([AC_ENABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_ENABLE_FAST_INSTALL' is obsolete.
-You should run autoupdate.])dnl
-_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `fast-install' option into LT_INIT's first parameter.])
-])
-m4trace:m4/ltoptions.m4:310: -1- AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-fast-install' option into LT_INIT's first parameter.])
-])
-m4trace:m4/ltoptions.m4:310: -1- AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_DISABLE_FAST_INSTALL' is obsolete.
-You should run autoupdate.])dnl
-_LT_SET_OPTION([LT_INIT], [disable-fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-fast-install' option into LT_INIT's first parameter.])
-])
-m4trace:m4/ltoptions.m4:358: -1- AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `pic-only' option into LT_INIT's first parameter.])
-])
-m4trace:m4/ltoptions.m4:358: -1- AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_PICMODE' is obsolete.
-You should run autoupdate.])dnl
-_LT_SET_OPTION([LT_INIT], [pic-only])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `pic-only' option into LT_INIT's first parameter.])
-])
-m4trace:m4/ltsugar.m4:13: -1- AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
-m4trace:m4/ltversion.m4:18: -1- AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.2'
-macro_revision='1.3337'
-_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
-_LT_DECL(, macro_revision, 0)
-])
-m4trace:m4/lt~obsolete.m4:36: -1- AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
-m4trace:m4/lt~obsolete.m4:40: -1- AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])
-m4trace:m4/lt~obsolete.m4:41: -1- AC_DEFUN([_LT_AC_SHELL_INIT])
-m4trace:m4/lt~obsolete.m4:42: -1- AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])
-m4trace:m4/lt~obsolete.m4:44: -1- AC_DEFUN([_LT_AC_TAGVAR])
-m4trace:m4/lt~obsolete.m4:45: -1- AC_DEFUN([AC_LTDL_ENABLE_INSTALL])
-m4trace:m4/lt~obsolete.m4:46: -1- AC_DEFUN([AC_LTDL_PREOPEN])
-m4trace:m4/lt~obsolete.m4:47: -1- AC_DEFUN([_LT_AC_SYS_COMPILER])
-m4trace:m4/lt~obsolete.m4:48: -1- AC_DEFUN([_LT_AC_LOCK])
-m4trace:m4/lt~obsolete.m4:49: -1- AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])
-m4trace:m4/lt~obsolete.m4:50: -1- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])
-m4trace:m4/lt~obsolete.m4:51: -1- AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])
-m4trace:m4/lt~obsolete.m4:52: -1- AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])
-m4trace:m4/lt~obsolete.m4:53: -1- AC_DEFUN([AC_LIBTOOL_OBJDIR])
-m4trace:m4/lt~obsolete.m4:54: -1- AC_DEFUN([AC_LTDL_OBJDIR])
-m4trace:m4/lt~obsolete.m4:55: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])
-m4trace:m4/lt~obsolete.m4:56: -1- AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])
-m4trace:m4/lt~obsolete.m4:57: -1- AC_DEFUN([AC_PATH_MAGIC])
-m4trace:m4/lt~obsolete.m4:58: -1- AC_DEFUN([AC_PROG_LD_GNU])
-m4trace:m4/lt~obsolete.m4:59: -1- AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])
-m4trace:m4/lt~obsolete.m4:60: -1- AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])
-m4trace:m4/lt~obsolete.m4:61: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])
-m4trace:m4/lt~obsolete.m4:62: -1- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])
-m4trace:m4/lt~obsolete.m4:63: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])
-m4trace:m4/lt~obsolete.m4:64: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])
-m4trace:m4/lt~obsolete.m4:65: -1- AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])
-m4trace:m4/lt~obsolete.m4:66: -1- AC_DEFUN([LT_AC_PROG_EGREP])
-m4trace:m4/lt~obsolete.m4:71: -1- AC_DEFUN([_AC_PROG_LIBTOOL])
-m4trace:m4/lt~obsolete.m4:72: -1- AC_DEFUN([AC_LIBTOOL_SETUP])
-m4trace:m4/lt~obsolete.m4:73: -1- AC_DEFUN([_LT_AC_CHECK_DLFCN])
-m4trace:m4/lt~obsolete.m4:74: -1- AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])
-m4trace:m4/lt~obsolete.m4:75: -1- AC_DEFUN([_LT_AC_TAGCONFIG])
-m4trace:m4/lt~obsolete.m4:77: -1- AC_DEFUN([_LT_AC_LANG_CXX])
-m4trace:m4/lt~obsolete.m4:78: -1- AC_DEFUN([_LT_AC_LANG_F77])
-m4trace:m4/lt~obsolete.m4:79: -1- AC_DEFUN([_LT_AC_LANG_GCJ])
-m4trace:m4/lt~obsolete.m4:80: -1- AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])
-m4trace:m4/lt~obsolete.m4:81: -1- AC_DEFUN([_LT_AC_LANG_C_CONFIG])
-m4trace:m4/lt~obsolete.m4:82: -1- AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])
-m4trace:m4/lt~obsolete.m4:83: -1- AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])
-m4trace:m4/lt~obsolete.m4:84: -1- AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])
-m4trace:m4/lt~obsolete.m4:85: -1- AC_DEFUN([_LT_AC_LANG_F77_CONFIG])
-m4trace:m4/lt~obsolete.m4:86: -1- AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])
-m4trace:m4/lt~obsolete.m4:87: -1- AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])
-m4trace:m4/lt~obsolete.m4:88: -1- AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])
-m4trace:m4/lt~obsolete.m4:89: -1- AC_DEFUN([_LT_AC_LANG_RC_CONFIG])
-m4trace:m4/lt~obsolete.m4:90: -1- AC_DEFUN([AC_LIBTOOL_CONFIG])
-m4trace:m4/lt~obsolete.m4:91: -1- AC_DEFUN([_LT_AC_FILE_LTDLL_C])
-m4trace:m4/lt~obsolete.m4:93: -1- AC_DEFUN([_LT_AC_PROG_CXXCPP])
-m4trace:m4/lt~obsolete.m4:96: -1- AC_DEFUN([_LT_PROG_F77])
-m4trace:m4/lt~obsolete.m4:97: -1- AC_DEFUN([_LT_PROG_FC])
-m4trace:m4/lt~obsolete.m4:98: -1- AC_DEFUN([_LT_PROG_CXX])
-m4trace:acinclude.m4:3: -1- AC_DEFUN([AC_IEEE_BE], [
-  AC_MSG_CHECKING([if double and float are ieee big endian])
-  AC_LANG(C)
-  AC_RUN_IFELSE(
-  [
-    AC_LANG_SOURCE([
-     int compare(unsigned char* a,unsigned char* b) {
-       while(*a != 0) if (*(b++)!=*(a++)) return 1;
-       return 0;
-     }
-     int main(int argc,char** argv) {
-       unsigned char dc[[]]={0x30,0x61,0xDE,0x80,0x93,0x67,0xCC,0xD9,0};
-       double da=1.23456789e-75;
-       unsigned char* ca;
-     
-       unsigned char fc[[]]={0x05,0x83,0x48,0x22,0};
-       float fa=1.23456789e-35;
-     
-       if (sizeof(double)!=8) return 1;
-     
-       ca=(unsigned char*)&da;
-       if (compare(dc,ca)) return 1;
-
-       if (sizeof(float)!=4) return 1;
-
-       ca=(unsigned char*)&fa;
-       if (compare(fc,ca)) return 1;
-     
-       return 0;
-     }
-    ])
-  ],
-  [AS_VAR_SET(IS_IEEE_BE, 1)],
-  [AS_VAR_SET(IS_IEEE_BE, 0)],
-  [])
-  if test $IS_IEEE_BE = 0
-  then
-    AC_MSG_RESULT(no)
-  else
-    AC_MSG_RESULT(yes)
-  fi
-
-])
-m4trace:acinclude.m4:50: -1- AC_DEFUN([AC_IEEE_LE], [
-  AC_MSG_CHECKING([if double and float are ieee little endian])
-  AC_LANG(C)
-  AC_RUN_IFELSE(
-  [
-    AC_LANG_SOURCE([
-     int compare(unsigned char* a,unsigned char* b) {
-       while(*a != 0) if (*(b++)!=*(a++)) return 1;
-       return 0;
-     }
-     int main(int argc,char** argv) {
-       unsigned char dc[[]]={0xD9,0xCC,0x67,0x93,0x80,0xDE,0x61,0x30,0};
-       double da=1.23456789e-75;
-       unsigned char* ca;
-     
-       unsigned char fc[[]]={0x22,0x48,0x83,0x05,0};
-       float fa=1.23456789e-35;
-     
-       if (sizeof(double)!=8) return 1;
-     
-       ca=(unsigned char*)&da;
-       if (compare(dc,ca)) return 1;
-
-       if (sizeof(float)!=4) return 1;
-
-       ca=(unsigned char*)&fa;
-       if (compare(fc,ca)) return 1;
-     
-       return 0;
-     }
-    ])
-  ],
-  [AS_VAR_SET(IS_IEEE_LE, 1)],
-  [AS_VAR_SET(IS_IEEE_LE, 0)],
-  [])
-  if test $IS_IEEE_LE = 0
-  then
-    AC_MSG_RESULT(no)
-  else
-    AC_MSG_RESULT(yes)
-  fi
-
-])
-m4trace:acinclude.m4:97: -1- AC_DEFUN([AC_GRIB_PTHREADS], [
-  AC_MSG_CHECKING([if pthreads available])
-  AC_LANG(C)
-  OLDLIBS=$LIBS
-  LIBS="$LIBS -lpthread"
-  AC_RUN_IFELSE(
-  [
-    AC_LANG_SOURCE([
-       #include <pthread.h>
-       #include <stdio.h>
-
-       #define NUMTHRDS 4
-       static int count;
-       
-       static pthread_once_t once  = PTHREAD_ONCE_INIT;
-       static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-       static pthread_t callThd[[NUMTHRDS]];
-       
-       static void init() {
-         pthread_mutexattr_t attr;
-       
-         pthread_mutexattr_init(&attr);
-         pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
-         pthread_mutex_init(&mutex,&attr);
-         pthread_mutexattr_destroy(&attr);
-       }
-       
-       void* increment(void* arg);
-       
-       int main(int argc,char** argv){
-         int i;
-         void* status=0;
-         pthread_attr_t attr;
-         pthread_attr_init(&attr);
-         count=0;
-         pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
-         for (i=0;i<NUMTHRDS;i++) {
-           pthread_create( &callThd[[i]], &attr, increment, (void *)i);
-         }
-         pthread_attr_destroy(&attr);
-         for(i=0; i<NUMTHRDS; i++)
-             pthread_join( callThd[[i]], &status);
-         return 0;
-       }
-       
-       void* increment(void* arg) {
-         int i=(int)arg;
-         pthread_once(&once,&init);
-         pthread_mutex_lock(&mutex);
-         count+=i;
-         pthread_mutex_unlock(&mutex);
-		 pthread_exit((void*) 0);
-       }
-    ])
-  ],
-  [AS_VAR_SET(GRIB_PTHREADS, 1)],
-  [AS_VAR_SET(GRIB_PTHREADS, 0)],
-  [])
-  if test $GRIB_PTHREADS = 0
-  then
-    AC_MSG_RESULT(no)
-	LIBS=$OLDLIBS
-  else
-    AC_MSG_RESULT(yes)
-  fi
-
-])
-m4trace:acinclude.m4:168: -1- AC_DEFUN([AC_GRIB_LINUX_PTHREADS], [
-  AC_MSG_CHECKING([if Linux pthreads available])
-  AC_LANG(C)
-  OLDLIBS=$LIBS
-  LIBS="$LIBS -lpthread"
-  AC_RUN_IFELSE(
-  [
-    AC_LANG_SOURCE([
-       #include <pthread.h>
-       #include <stdio.h>
-
-       #define NUMTHRDS 4
-       static int count;
-	   #define PTHREAD_MUTEX_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
-	   extern int pthread_mutexattr_settype(pthread_mutexattr_t* attr,int type);
-       
-       static pthread_once_t once  = PTHREAD_ONCE_INIT;
-       static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-       static pthread_t callThd[[NUMTHRDS]];
-       
-       static void init() {
-         pthread_mutexattr_t attr;
-		 pthread_mutexattr_init(&attr);
-		 pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
-         pthread_mutex_init(&mutex,&attr);
-         pthread_mutexattr_destroy(&attr);
-       }
-       
-       void* increment(void* arg);
-       
-       int main(int argc,char** argv){
-         int i;
-         void* status=0;
-         pthread_attr_t attr;
-         pthread_attr_init(&attr);
-         count=0;
-         pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
-         for (i=0;i<NUMTHRDS;i++) {
-           pthread_create( &callThd[[i]], &attr, increment, (void *)i);
-         }
-         pthread_attr_destroy(&attr);
-         for(i=0; i<NUMTHRDS; i++)
-             pthread_join( callThd[[i]], &status);
-         return 0;
-       }
-       
-       void* increment(void* arg) {
-         int i=(int)arg;
-         pthread_once(&once,&init);
-         pthread_mutex_lock(&mutex);
-         count+=i;
-         pthread_mutex_unlock(&mutex);
-		 pthread_exit((void*) 0);
-       }
-    ])
-  ],
-  [AS_VAR_SET(GRIB_LINUX_PTHREADS, 1)
-   AS_VAR_SET(GRIB_PTHREADS, 1)],
-  [AS_VAR_SET(GRIB_LINUX_PTHREADS, 0)],
-  [])
-  if test $GRIB_LINUX_PTHREADS = 0
-  then
-    AC_MSG_RESULT(no)
-	LIBS=$OLDLIBS
-  else
-    AC_MSG_RESULT(yes)
-  fi
-
-])
-m4trace:acinclude.m4:241: -1- AC_DEFUN([AC_BIG_ENDIAN], [
-  AC_MSG_CHECKING([if Big Endian])
-  AC_LANG(C)
-  AC_RUN_IFELSE(
-  [
-    AC_LANG_SOURCE([
-      int main(int argc,char** argv){
-        long one= 1;
-        return !(*((char *)(&one)));
-      }
-    ])
-  ],
-  [AS_VAR_SET(IS_BIG_ENDIAN, 0)],
-  [AS_VAR_SET(IS_BIG_ENDIAN, 1)],
-  [])
-  if test $IS_BIG_ENDIAN = 0
-  then
-    AC_MSG_RESULT(no)
-  else
-    AC_MSG_RESULT(yes)
-  fi
-
-])
-m4trace:acinclude.m4:268: -1- AC_DEFUN([AC_INLINE], [
-  AC_MSG_CHECKING([if inline in C])
-  AC_LANG(C)
-  AC_COMPILE_IFELSE(
-  [
-    AC_LANG_SOURCE([
-	  inline int x(int a) {return a;}
-      int main(int argc,char** argv){
-	    int a=1;
-        return x(a);
-      }
-    ])
-  ],
-  [AS_VAR_SET(HAS_INLINE, inline)],
-  [AS_VAR_SET(HAS_INLINE, )],
-  [])
-  if test x$HAS_INLINE = "x"
-  then
-    AC_MSG_RESULT(no)
-  else
-    AC_MSG_RESULT(yes)
-  fi
-
-])
-m4trace:acinclude.m4:297: -1- AC_DEFUN([AC_ALIGN], [
-  AC_MSG_CHECKING([if bus error on unaligned pointers])
-  AC_LANG(C)
-  AC_RUN_IFELSE(
-  [
-    AC_LANG_SOURCE([
-	  void foo(char* p) {long x=*((long*)p)+1;}
-	  int main(int argc,char** argv) {char* p="xxxxxxxxx";foo(++p);return 0;}
-    ])
-  ],
-  [AS_VAR_SET(MEM_ALIGN,0)],
-  [AS_VAR_SET(MEM_ALIGN,1)],
-  [])
-  if test $MEM_ALIGN = "0"
-  then
-    AC_MSG_RESULT(no)
-  else
-    AC_MSG_RESULT(yes)
-  fi
-
-])
-m4trace:acinclude.m4:325: -1- AC_DEFUN([grib_api_PROG_CC_WARNING_PEDANTIC], [AC_REQUIRE([AC_PROG_CC])dnl
-AC_SUBST([WARN_PEDANTIC])dnl
-AS_VAR_PUSHDEF([grib_api_Pedantic], [grib_api_cv_prog_cc_pedantic_$1])dnl
-WARN_PEDANTIC=
-AC_CACHE_CHECK([whether $CC supports -pedantic $1], grib_api_Pedantic,
-[save_CFLAGS="$CFLAGS"
-CFLAGS="-pedantic $1"
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
-   [AS_VAR_SET(grib_api_Pedantic, yes)],
-   [AS_VAR_SET(grib_api_Pedantic, no)])
-CFLAGS="$save_CFLAGS"])
-AS_IF([test AS_VAR_GET(grib_api_Pedantic) = yes],
-      [WARN_PEDANTIC="-pedantic $1"])
-AS_VAR_POPDEF([grib_api_Pedantic])dnl
-])
-m4trace:acinclude.m4:344: -1- AC_DEFUN([grib_api_ENABLE_WARNINGS_ARE_ERRORS], [AC_REQUIRE([AC_PROG_CC])dnl
-AC_SUBST([WERROR])dnl
-WERROR=
-AC_ARG_ENABLE(werror-always, 
-    AS_HELP_STRING([--enable-werror-always],
-		   [enable -Werror despite compiler version]),
-[], [enable_werror_always=no])
-AS_IF([test $enable_werror_always = yes],
-      [WERROR=-Werror])
-])
-m4trace:acinclude.m4:358: -1- AC_DEFUN([AC_PROG_FC_UPPERCASE_MOD], [
-AC_LANG_PUSH(Fortran)
-AC_MSG_CHECKING([if Fortran 90 compiler capitalizes .mod filenames])
-cat <<EOF >conftest.f90
-    module conftest
-    end module conftest
-EOF
-
-ac_try='$FC $FCFLAGS -c conftest.f90 >&AS_MESSAGE_LOG_FD'
-if AC_TRY_EVAL(ac_try) && test -f CONFTEST.mod ; then
-   ac_cv_prog_f90_uppercase_mod=yes
-   rm -f CONFTEST.mod
-else
-   ac_cv_prog_f90_uppercase_mod=no
-fi
-AC_MSG_RESULT($ac_cv_prog_f90_uppercase_mod)
-#rm -f conftest*
-AC_LANG_POP(Fortran)
-])
-m4trace:acinclude.m4:407: -1- AC_DEFUN([AX_F90_MODULE_FLAG], [
-AC_CACHE_CHECK([fortran 90 modules inclusion flag],
-ax_cv_f90_modflag,
-[AC_LANG_PUSH(Fortran)
-i=0
-while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do
-  i=`expr $i + 1`
-done
-mkdir tmpdir_$i
-cd tmpdir_$i
-AC_COMPILE_IFELSE([
-!234567
-      module conftest_module
-      contains
-      subroutine conftest_routine
-      write(*,'(a)') 'gotcha!'
-      end subroutine conftest_routine
-      end module conftest_module
-  ],[],[])
-cd ..
-ax_cv_f90_modflag="not found"
-for ax_flag in "-I" "-M" "-p"; do
-  if test "$ax_cv_f90_modflag" = "not found" ; then
-    ax_save_FCFLAGS="$FCFLAGS"
-    FCFLAGS="$ax_save_FCFLAGS ${ax_flag}tmpdir_$i"
-    AC_COMPILE_IFELSE([
-!234567
-      program conftest_program
-      use conftest_module
-      call conftest_routine
-      end program conftest_program
-      ],[ax_cv_f90_modflag="$ax_flag"],[])
-    FCFLAGS="$ax_save_FCFLAGS"
-  fi
-done
-rm -fr tmpdir_$i
-#if test "$ax_cv_f90_modflag" = "not found" ; then
-#  AC_MSG_ERROR([unable to find compiler flag for modules inclusion])
-#fi
-AC_LANG_POP(Fortran)
-])])
-m4trace:acinclude.m4:452: -1- AC_DEFUN([AC_PROG_FC_DEBUG_IN_MODULE], [
-AC_LANG_PUSH(Fortran)
-AC_MSG_CHECKING([if Fortran 90 can resolve debug symbols in modules])
-cat <<EOF >conftest-module.f90
-    module conftest
-    end module conftest
-EOF
-cat <<EOF >conftest.f90
-	program f90usemodule
-	use CONFTEST
-	end program f90usemodule
-EOF
-
-ac_compile_module='$FC -g -c conftest-module.f90 >&AS_MESSAGE_LOG_FD'
-ac_link_program='$FC -g -o conftest -I. conftest.f90 >&AS_MESSAGE_LOG_FD'
-
-if AC_TRY_EVAL(ac_compile_module) && AC_TRY_EVAL(ac_link_program) && test -f conftest ; then
-   ac_cv_prog_f90_debug_in_module=yes
-   rm -f conftest
-else
-   ac_cv_prog_f90_debug_in_module=no
-fi
-AC_MSG_RESULT($ac_cv_prog_f90_debug_in_module)
-#rm -f conftest*
-AC_LANG_POP(Fortran)
-])
-m4trace:configure.ac:3: -1- AC_DEFUN([_AM_AUTOCONF_VERSION], [])
-m4trace:configure.ac:6: -1- m4_pattern_forbid([^_?A[CHUM]_])
-m4trace:configure.ac:6: -1- m4_pattern_forbid([_AC_])
-m4trace:configure.ac:6: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^AS_FLAGS$])
-m4trace:configure.ac:6: -1- m4_pattern_forbid([^_?m4_])
-m4trace:configure.ac:6: -1- m4_pattern_forbid([^dnl$])
-m4trace:configure.ac:6: -1- m4_pattern_forbid([^_?AS_])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^SHELL$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PATH_SEPARATOR$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_NAME$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_VERSION$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_STRING$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_URL$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^exec_prefix$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^prefix$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^program_transform_name$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^bindir$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^sbindir$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^libexecdir$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^datarootdir$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^datadir$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^sysconfdir$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^sharedstatedir$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^localstatedir$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^includedir$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^oldincludedir$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^docdir$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^infodir$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^htmldir$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^dvidir$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^pdfdir$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^psdir$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^libdir$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^localedir$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^mandir$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_NAME$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_VERSION$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_STRING$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_URL$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^DEFS$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^ECHO_C$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^ECHO_N$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^ECHO_T$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^build_alias$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^host_alias$])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^target_alias$])
-m4trace:configure.ac:10: -1- LT_INIT([shared])
-m4trace:configure.ac:10: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
-m4trace:configure.ac:10: -1- LTOPTIONS_VERSION
-m4trace:configure.ac:10: -1- LTSUGAR_VERSION
-m4trace:configure.ac:10: -1- LTVERSION_VERSION
-m4trace:configure.ac:10: -1- LTOBSOLETE_VERSION
-m4trace:configure.ac:10: -1- _LT_PROG_LTMAIN
-m4trace:configure.ac:10: -1- m4_pattern_allow([^LIBTOOL$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^build$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^build_cpu$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^build_vendor$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^build_os$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^host$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^host_cpu$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^host_vendor$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^host_os$])
-m4trace:configure.ac:10: -1- _LT_PREPARE_SED_QUOTE_VARS
-m4trace:configure.ac:10: -1- _LT_PROG_ECHO_BACKSLASH
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CFLAGS$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^ac_ct_CC$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^EXEEXT$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^OBJEXT$])
-m4trace:configure.ac:10: -1- LT_PATH_LD
-m4trace:configure.ac:10: -1- m4_pattern_allow([^SED$])
-m4trace:configure.ac:10: -1- AC_PROG_EGREP
-m4trace:configure.ac:10: -1- m4_pattern_allow([^GREP$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^EGREP$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^FGREP$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^GREP$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^LD$])
-m4trace:configure.ac:10: -1- LT_PATH_NM
-m4trace:configure.ac:10: -1- m4_pattern_allow([^DUMPBIN$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^DUMPBIN$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^NM$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^LN_S$])
-m4trace:configure.ac:10: -1- LT_CMD_MAX_LEN
-m4trace:configure.ac:10: -1- m4_pattern_allow([^OBJDUMP$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^OBJDUMP$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^DLLTOOL$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^DLLTOOL$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^AR$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^ac_ct_AR$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^STRIP$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^RANLIB$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^AWK$])
-m4trace:configure.ac:10: -1- _LT_WITH_SYSROOT
-m4trace:configure.ac:10: -1- m4_pattern_allow([LT_OBJDIR])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^LT_OBJDIR$])
-m4trace:configure.ac:10: -1- _LT_CC_BASENAME([$compiler])
-m4trace:configure.ac:10: -1- _LT_PATH_TOOL_PREFIX([${ac_tool_prefix}file], [/usr/bin$PATH_SEPARATOR$PATH])
-m4trace:configure.ac:10: -1- _LT_PATH_TOOL_PREFIX([file], [/usr/bin$PATH_SEPARATOR$PATH])
-m4trace:configure.ac:10: -1- LT_SUPPORTED_TAG([CC])
-m4trace:configure.ac:10: -1- _LT_COMPILER_BOILERPLATE
-m4trace:configure.ac:10: -1- _LT_LINKER_BOILERPLATE
-m4trace:configure.ac:10: -1- _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], [lt_cv_prog_compiler_rtti_exceptions], [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, )="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, ) -fno-rtti -fno-exceptions"])
-m4trace:configure.ac:10: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, ) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, )], [$_LT_TAGVAR(lt_prog_compiler_pic, )@&t at m4_if([],[],[ -DPIC],[m4_if([],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, ) in
-     "" | " "*) ;;
-     *) _LT_TAGVAR(lt_prog_compiler_pic, )=" $_LT_TAGVAR(lt_prog_compiler_pic, )" ;;
-     esac], [_LT_TAGVAR(lt_prog_compiler_pic, )=
-     _LT_TAGVAR(lt_prog_compiler_can_build_shared, )=no])
-m4trace:configure.ac:10: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, )=])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^MANIFEST_TOOL$])
-m4trace:configure.ac:10: -1- _LT_REQUIRED_DARWIN_CHECKS
-m4trace:configure.ac:10: -1- m4_pattern_allow([^DSYMUTIL$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^NMEDIT$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^LIPO$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^OTOOL$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^OTOOL64$])
-m4trace:configure.ac:10: -1- _LT_LINKER_OPTION([if $CC understands -b], [lt_cv_prog_compiler__b], [-b], [_LT_TAGVAR(archive_cmds, )='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, )='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])
-m4trace:configure.ac:10: -1- LT_SYS_DLOPEN_SELF
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^STDC_HEADERS$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
-m4trace:configure.ac:11: -1- m4_pattern_allow([^LIBTOOL_DEPS$])
-m4trace:configure.ac:12: -1- AC_CONFIG_MACRO_DIR([m4])
-m4trace:configure.ac:24: -1- m4_pattern_allow([^ECCODES_MAIN_VERSION$])
-m4trace:configure.ac:25: -1- m4_pattern_allow([^ECCODES_VERSION_STR$])
-m4trace:configure.ac:26: -1- m4_pattern_allow([^ECCODES_MAJOR_VERSION$])
-m4trace:configure.ac:27: -1- m4_pattern_allow([^ECCODES_MINOR_VERSION$])
-m4trace:configure.ac:28: -1- m4_pattern_allow([^ECCODES_PATCH_VERSION$])
-m4trace:configure.ac:30: -1- m4_pattern_allow([^ECCODES_CURRENT$])
-m4trace:configure.ac:31: -1- m4_pattern_allow([^ECCODES_REVISION$])
-m4trace:configure.ac:32: -1- m4_pattern_allow([^ECCODES_AGE$])
-m4trace:configure.ac:37: -1- AM_SANITY_CHECK
-m4trace:configure.ac:43: -1- AM_INIT_AUTOMAKE([$PACKAGE_NAME], [${PACKAGE_VERSION}], [http://www.ecmwf.int])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
-m4trace:configure.ac:43: -1- AM_SET_CURRENT_AUTOMAKE_VERSION
-m4trace:configure.ac:43: -1- AM_AUTOMAKE_VERSION([1.13.4])
-m4trace:configure.ac:43: -1- _AM_AUTOCONF_VERSION([2.69])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^INSTALL_DATA$])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__isrc$])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([am__isrc])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^CYGPATH_W$])
-m4trace:configure.ac:43: -1- _m4_warn([obsolete], [AM_INIT_AUTOMAKE: two- and three-arguments forms are deprecated.], [/usr/share/aclocal-1.13/init.m4:23: AM_INIT_AUTOMAKE is expanded from...
-configure.ac:43: the top level])
-m4trace:configure.ac:43: -1- _AM_SET_OPTION([no-define])
-m4trace:configure.ac:43: -2- _AM_MANGLE_OPTION([no-define])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^PACKAGE$])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^VERSION$])
-m4trace:configure.ac:43: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
- AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])
-m4trace:configure.ac:43: -2- _AM_MANGLE_OPTION([no-define])
-m4trace:configure.ac:43: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
-m4trace:configure.ac:43: -1- AM_MISSING_HAS_RUN
-m4trace:configure.ac:43: -1- AM_AUX_DIR_EXPAND
-m4trace:configure.ac:43: -1- m4_pattern_allow([^ACLOCAL$])
-m4trace:configure.ac:43: -1- AM_MISSING_PROG([AUTOCONF], [autoconf])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AUTOCONF$])
-m4trace:configure.ac:43: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AUTOMAKE$])
-m4trace:configure.ac:43: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AUTOHEADER$])
-m4trace:configure.ac:43: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^MAKEINFO$])
-m4trace:configure.ac:43: -1- AM_PROG_INSTALL_SH
-m4trace:configure.ac:43: -1- m4_pattern_allow([^install_sh$])
-m4trace:configure.ac:43: -1- AM_PROG_INSTALL_STRIP
-m4trace:configure.ac:43: -1- m4_pattern_allow([^STRIP$])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^MKDIR_P$])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^mkdir_p$])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^SET_MAKE$])
-m4trace:configure.ac:43: -1- AM_SET_LEADING_DOT
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__leading_dot$])
-m4trace:configure.ac:43: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
-			     [_AM_PROG_TAR([v7])])])
-m4trace:configure.ac:43: -2- _AM_MANGLE_OPTION([tar-ustar])
-m4trace:configure.ac:43: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])
-m4trace:configure.ac:43: -2- _AM_MANGLE_OPTION([tar-pax])
-m4trace:configure.ac:43: -1- _AM_PROG_TAR([v7])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AMTAR$])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__tar$])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__untar$])
-m4trace:configure.ac:43: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC],
-		  [_AM_DEPENDENCIES([CC])],
-		  [m4_define([AC_PROG_CC],
-			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
-		  [_AM_DEPENDENCIES([CXX])],
-		  [m4_define([AC_PROG_CXX],
-			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-		  [_AM_DEPENDENCIES([OBJC])],
-		  [m4_define([AC_PROG_OBJC],
-			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
-		  [_AM_DEPENDENCIES([OBJCXX])],
-		  [m4_define([AC_PROG_OBJCXX],
-			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
-])
-m4trace:configure.ac:43: -2- _AM_MANGLE_OPTION([no-dependencies])
-m4trace:configure.ac:43: -1- _AM_DEPENDENCIES([CC])
-m4trace:configure.ac:43: -1- AM_SET_DEPDIR
-m4trace:configure.ac:43: -1- m4_pattern_allow([^DEPDIR$])
-m4trace:configure.ac:43: -1- AM_OUTPUT_DEPENDENCY_COMMANDS
-m4trace:configure.ac:43: -1- AM_MAKE_INCLUDE
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__include$])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__quote$])
-m4trace:configure.ac:43: -1- AM_DEP_TRACK
-m4trace:configure.ac:43: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AMDEP_TRUE$])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AMDEP_FALSE$])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__nodep$])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([am__nodep])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^CCDEPMODE$])
-m4trace:configure.ac:43: -1- AM_CONDITIONAL([am__fastdepCC], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
-m4trace:configure.ac:43: -1- AM_SILENT_RULES
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AM_V$])
-m4trace:configure.ac:43: -1- AM_SUBST_NOTMAKE([AM_V])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([AM_V])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AM_DEFAULT_V$])
-m4trace:configure.ac:43: -1- AM_SUBST_NOTMAKE([AM_DEFAULT_V])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AM_BACKSLASH$])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH])
-m4trace:configure.ac:50: -1- m4_pattern_allow([^ECCODES_MAIN_VERSION$])
-m4trace:configure.ac:51: -1- m4_pattern_allow([^ECCODES_MAJOR_VERSION$])
-m4trace:configure.ac:52: -1- m4_pattern_allow([^ECCODES_MINOR_VERSION$])
-m4trace:configure.ac:53: -1- m4_pattern_allow([^ECCODES_REVISION_VERSION$])
-m4trace:configure.ac:55: -1- m4_pattern_allow([^ECCODES_CURRENT$])
-m4trace:configure.ac:56: -1- m4_pattern_allow([^ECCODES_REVISION$])
-m4trace:configure.ac:57: -1- m4_pattern_allow([^ECCODES_AGE$])
-m4trace:configure.ac:64: -1- m4_pattern_allow([^PERLDIR$])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^CFLAGS$])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^ac_ct_CC$])
-m4trace:configure.ac:69: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:69: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:69: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:71: -1- m4_pattern_allow([^LN_S$])
-m4trace:configure.ac:72: -1- m4_pattern_allow([^SET_MAKE$])
-m4trace:configure.ac:73: -1- m4_pattern_allow([^YACC$])
-m4trace:configure.ac:73: -1- m4_pattern_allow([^YACC$])
-m4trace:configure.ac:73: -1- m4_pattern_allow([^YFLAGS$])
-m4trace:configure.ac:74: -1- m4_pattern_allow([^LEX$])
-m4trace:configure.ac:74: -1- m4_pattern_allow([^LEX_OUTPUT_ROOT$])
-m4trace:configure.ac:74: -1- m4_pattern_allow([^LEXLIB$])
-m4trace:configure.ac:74: -1- m4_pattern_allow([^YYTEXT_POINTER$])
-m4trace:configure.ac:75: -1- m4_pattern_allow([^F77$])
-m4trace:configure.ac:75: -1- m4_pattern_allow([^FFLAGS$])
-m4trace:configure.ac:75: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:75: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:75: -1- m4_pattern_allow([^F77$])
-m4trace:configure.ac:75: -1- m4_pattern_allow([^ac_ct_F77$])
-m4trace:configure.ac:75: -1- LT_LANG([F77])
-m4trace:configure.ac:75: -1- LT_SUPPORTED_TAG([F77])
-m4trace:configure.ac:75: -1- _LT_COMPILER_BOILERPLATE
-m4trace:configure.ac:75: -1- _LT_LINKER_BOILERPLATE
-m4trace:configure.ac:75: -1- _LT_CC_BASENAME([$compiler])
-m4trace:configure.ac:75: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, F77) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, F77)], [$_LT_TAGVAR(lt_prog_compiler_pic, F77)@&t at m4_if([F77],[],[ -DPIC],[m4_if([F77],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, F77) in
-     "" | " "*) ;;
-     *) _LT_TAGVAR(lt_prog_compiler_pic, F77)=" $_LT_TAGVAR(lt_prog_compiler_pic, F77)" ;;
-     esac], [_LT_TAGVAR(lt_prog_compiler_pic, F77)=
-     _LT_TAGVAR(lt_prog_compiler_can_build_shared, F77)=no])
-m4trace:configure.ac:75: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works_F77], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, F77)=])
-m4trace:configure.ac:76: -1- m4_pattern_allow([^FC$])
-m4trace:configure.ac:76: -1- m4_pattern_allow([^FCFLAGS$])
-m4trace:configure.ac:76: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:76: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:76: -1- m4_pattern_allow([^FC$])
-m4trace:configure.ac:76: -1- m4_pattern_allow([^ac_ct_FC$])
-m4trace:configure.ac:76: -1- LT_LANG([FC])
-m4trace:configure.ac:76: -1- LT_SUPPORTED_TAG([FC])
-m4trace:configure.ac:76: -1- _LT_COMPILER_BOILERPLATE
-m4trace:configure.ac:76: -1- _LT_LINKER_BOILERPLATE
-m4trace:configure.ac:76: -1- _LT_CC_BASENAME([$compiler])
-m4trace:configure.ac:76: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, FC) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, FC)], [$_LT_TAGVAR(lt_prog_compiler_pic, FC)@&t at m4_if([FC],[],[ -DPIC],[m4_if([FC],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, FC) in
-     "" | " "*) ;;
-     *) _LT_TAGVAR(lt_prog_compiler_pic, FC)=" $_LT_TAGVAR(lt_prog_compiler_pic, FC)" ;;
-     esac], [_LT_TAGVAR(lt_prog_compiler_pic, FC)=
-     _LT_TAGVAR(lt_prog_compiler_can_build_shared, FC)=no])
-m4trace:configure.ac:76: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works_FC], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, FC)=])
-m4trace:configure.ac:91: -1- AC_GRIB_PTHREADS
-m4trace:configure.ac:91: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [../../lib/autoconf/general.m4:2748: AC_RUN_IFELSE is expanded from...
-acinclude.m4:97: AC_GRIB_PTHREADS is expanded from...
-configure.ac:91: the top level])
-m4trace:configure.ac:92: -1- AC_GRIB_LINUX_PTHREADS
-m4trace:configure.ac:92: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [../../lib/autoconf/general.m4:2748: AC_RUN_IFELSE is expanded from...
-acinclude.m4:168: AC_GRIB_LINUX_PTHREADS is expanded from...
-configure.ac:92: the top level])
-m4trace:configure.ac:97: -1- m4_pattern_allow([^GRIB_PTHREADS$])
-m4trace:configure.ac:98: -1- m4_pattern_allow([^GRIB_LINUX_PTHREADS$])
-m4trace:configure.ac:110: -1- m4_pattern_allow([^GRIB_IBMPOWER67_OPT$])
-m4trace:configure.ac:116: -1- AC_PROG_FC_UPPERCASE_MOD
-m4trace:configure.ac:117: -1- AM_CONDITIONAL([UPPER_CASE_MOD], [test "x$ac_cv_prog_f90_uppercase_mod" = xyes])
-m4trace:configure.ac:117: -1- m4_pattern_allow([^UPPER_CASE_MOD_TRUE$])
-m4trace:configure.ac:117: -1- m4_pattern_allow([^UPPER_CASE_MOD_FALSE$])
-m4trace:configure.ac:117: -1- _AM_SUBST_NOTMAKE([UPPER_CASE_MOD_TRUE])
-m4trace:configure.ac:117: -1- _AM_SUBST_NOTMAKE([UPPER_CASE_MOD_FALSE])
-m4trace:configure.ac:119: -1- AC_IEEE_BE
-m4trace:configure.ac:119: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [../../lib/autoconf/general.m4:2748: AC_RUN_IFELSE is expanded from...
-acinclude.m4:3: AC_IEEE_BE is expanded from...
-configure.ac:119: the top level])
-m4trace:configure.ac:120: -1- m4_pattern_allow([^IEEE_BE$])
-m4trace:configure.ac:122: -1- AC_IEEE_LE
-m4trace:configure.ac:122: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [../../lib/autoconf/general.m4:2748: AC_RUN_IFELSE is expanded from...
-acinclude.m4:50: AC_IEEE_LE is expanded from...
-configure.ac:122: the top level])
-m4trace:configure.ac:123: -1- m4_pattern_allow([^IEEE_LE$])
-m4trace:configure.ac:132: -1- m4_pattern_allow([^IEEE_LE$])
-m4trace:configure.ac:133: -1- m4_pattern_allow([^IEEE_BE$])
-m4trace:configure.ac:136: -1- AC_BIG_ENDIAN
-m4trace:configure.ac:136: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [../../lib/autoconf/general.m4:2748: AC_RUN_IFELSE is expanded from...
-acinclude.m4:241: AC_BIG_ENDIAN is expanded from...
-configure.ac:136: the top level])
-m4trace:configure.ac:137: -1- m4_pattern_allow([^IS_BIG_ENDIAN$])
-m4trace:configure.ac:139: -1- AC_INLINE
-m4trace:configure.ac:140: -1- m4_pattern_allow([^GRIB_INLINE$])
-m4trace:configure.ac:142: -1- AC_ALIGN
-m4trace:configure.ac:142: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [../../lib/autoconf/general.m4:2748: AC_RUN_IFELSE is expanded from...
-acinclude.m4:297: AC_ALIGN is expanded from...
-configure.ac:142: the top level])
-m4trace:configure.ac:143: -1- m4_pattern_allow([^GRIB_MEM_ALIGN$])
-m4trace:configure.ac:145: -1- m4_pattern_allow([^POSIX_MEMALIGN$])
-m4trace:configure.ac:150: -2- m4_pattern_allow([^GRIB_MEM_ALIGN$])
-m4trace:configure.ac:163: -1- m4_pattern_allow([^VECTOR$])
-m4trace:configure.ac:168: -2- m4_pattern_allow([^MANAGE_MEM$])
-m4trace:configure.ac:169: -2- m4_pattern_allow([^MANAGE_MEM$])
-m4trace:configure.ac:186: -1- m4_pattern_allow([^DEVEL_RULES$])
-m4trace:configure.ac:187: -1- m4_pattern_allow([^GRIB_DEVEL$])
-m4trace:configure.ac:189: -1- AM_CONDITIONAL([WITH_MARS_TESTS], [test $GRIB_DEVEL -eq 1])
-m4trace:configure.ac:189: -1- m4_pattern_allow([^WITH_MARS_TESTS_TRUE$])
-m4trace:configure.ac:189: -1- m4_pattern_allow([^WITH_MARS_TESTS_FALSE$])
-m4trace:configure.ac:189: -1- _AM_SUBST_NOTMAKE([WITH_MARS_TESTS_TRUE])
-m4trace:configure.ac:189: -1- _AM_SUBST_NOTMAKE([WITH_MARS_TESTS_FALSE])
-m4trace:configure.ac:192: -1- m4_pattern_allow([^_LARGEFILE_SOURCE$])
-m4trace:configure.ac:192: -1- m4_pattern_allow([^HAVE_FSEEKO$])
-m4trace:configure.ac:200: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$])
-m4trace:configure.ac:200: -1- m4_pattern_allow([^_LARGE_FILES$])
-m4trace:configure.ac:210: -1- m4_pattern_allow([^RPM_HOST_CPU$])
-m4trace:configure.ac:211: -1- m4_pattern_allow([^RPM_HOST_VENDOR$])
-m4trace:configure.ac:212: -1- m4_pattern_allow([^RPM_HOST_OS$])
-m4trace:configure.ac:213: -1- m4_pattern_allow([^RPM_CONFIGURE_ARGS$])
-m4trace:configure.ac:216: -1- m4_pattern_allow([^RPM_RELEASE$])
-m4trace:configure.ac:221: -1- m4_pattern_allow([^ECCODES_SAMPLES_PATH$])
-m4trace:configure.ac:222: -1- m4_pattern_allow([^ECCODES_DEFINITION_PATH$])
-m4trace:configure.ac:243: -1- AC_PROG_FC_UPPERCASE_MOD
-m4trace:configure.ac:244: -1- AM_CONDITIONAL([UPPER_CASE_MOD], [test "x$ac_cv_prog_f90_uppercase_mod" = xyes])
-m4trace:configure.ac:244: -1- m4_pattern_allow([^UPPER_CASE_MOD_TRUE$])
-m4trace:configure.ac:244: -1- m4_pattern_allow([^UPPER_CASE_MOD_FALSE$])
-m4trace:configure.ac:244: -1- _AM_SUBST_NOTMAKE([UPPER_CASE_MOD_TRUE])
-m4trace:configure.ac:244: -1- _AM_SUBST_NOTMAKE([UPPER_CASE_MOD_FALSE])
-m4trace:configure.ac:248: -1- AC_PROG_FC_DEBUG_IN_MODULE
-m4trace:configure.ac:249: -1- AM_CONDITIONAL([DEBUG_IN_MOD], [test "x$ac_cv_prog_f90_debug_in_module" = xyes])
-m4trace:configure.ac:249: -1- m4_pattern_allow([^DEBUG_IN_MOD_TRUE$])
-m4trace:configure.ac:249: -1- m4_pattern_allow([^DEBUG_IN_MOD_FALSE$])
-m4trace:configure.ac:249: -1- _AM_SUBST_NOTMAKE([DEBUG_IN_MOD_TRUE])
-m4trace:configure.ac:249: -1- _AM_SUBST_NOTMAKE([DEBUG_IN_MOD_FALSE])
-m4trace:configure.ac:255: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: WARNING:  
-
-  Your Fortran compiler ($FC) does not support linking to dynamic library modules when debug is enabled. This is a known 
-problem with Portland compilers versions 7 and 8, for example. Possible workarounds are:
-
-  - Use a Portland compiler version 10 or higher or a different compiler.
-  - Disable shared libraries (e.g. configure --disable-shared)
-  - Disable debug (e.g. configure FCFLAGS=\"\")
-
-  Compilation of the Fortran module has been disabled
-
-], [])
-m4trace:configure.ac:255: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: WARNING:  
-
-  Your Fortran compiler ($FC) does not support linking to dynamic library modules when debug is enabled. This is a known 
-problem with Portland compilers versions 7 and 8, for example. Possible workarounds are:
-
-  - Use a Portland compiler version 10 or higher or a different compiler.
-  - Disable shared libraries (e.g. configure --disable-shared)
-  - Disable debug (e.g. configure FCFLAGS=\"\")
-
-  Compilation of the Fortran module has been disabled
-
-], [])
-m4trace:configure.ac:273: -1- m4_pattern_allow([^FORTRAN_MOD$])
-m4trace:configure.ac:275: -1- m4_pattern_allow([^F90_CHECK$])
-m4trace:configure.ac:278: -1- AX_F90_MODULE_FLAG
-m4trace:configure.ac:283: -1- m4_pattern_allow([^F90_MODULE_FLAG$])
-m4trace:configure.ac:298: -1- m4_pattern_allow([^IFS_SAMPLES_DIR$])
-m4trace:configure.ac:310: -1- m4_pattern_allow([^HAVE_LIBEMOS$])
-m4trace:configure.ac:328: -1- m4_pattern_allow([^EMOS_LIB$])
-m4trace:configure.ac:335: -1- m4_pattern_allow([^GRIB_TIMER$])
-m4trace:configure.ac:337: -1- m4_pattern_allow([^GRIB_TIMER$])
-m4trace:configure.ac:346: -1- m4_pattern_allow([^OMP_PACKING$])
-m4trace:configure.ac:348: -1- m4_pattern_allow([^OMP_PACKING$])
-m4trace:configure.ac:376: -1- m4_pattern_allow([^NETCDF_LDFLAGS$])
-m4trace:configure.ac:377: -1- m4_pattern_allow([^HAVE_NETCDF$])
-m4trace:configure.ac:390: -1- m4_pattern_allow([^JASPER_DIR$])
-m4trace:configure.ac:403: -1- m4_pattern_allow([^OPENJPEG_DIR$])
-m4trace:configure.ac:413: -1- m4_pattern_allow([^HAVE_JPEG$])
-m4trace:configure.ac:425: -1- m4_pattern_allow([^HAVE_LIBOPENJPEG$])
-m4trace:configure.ac:426: -1- m4_pattern_allow([^LIB_OPENJPEG$])
-m4trace:configure.ac:432: -1- m4_pattern_allow([^HAVE_LIBJASPER$])
-m4trace:configure.ac:433: -1- m4_pattern_allow([^LIB_JASPER$])
-m4trace:configure.ac:460: -1- m4_pattern_allow([^JPEG_TEST$])
-m4trace:configure.ac:475: -1- m4_pattern_allow([^HAVE_LIBAEC$])
-m4trace:configure.ac:479: -1- m4_pattern_allow([^LIB_AEC$])
-m4trace:configure.ac:481: -1- m4_pattern_allow([^AEC_DIR$])
-m4trace:configure.ac:484: -1- m4_pattern_allow([^CCSDS_TEST$])
-m4trace:configure.ac:503: -1- m4_pattern_allow([^HAVE_LIBPNG$])
-m4trace:configure.ac:504: -1- m4_pattern_allow([^LIB_PNG$])
-m4trace:configure.ac:525: -1- m4_pattern_allow([^PERL_INSTALL_OPTIONS$])
-m4trace:configure.ac:539: -1- m4_pattern_allow([^PERL$])
-m4trace:configure.ac:541: -1- m4_pattern_allow([^PERL$])
-m4trace:configure.ac:555: -1- m4_pattern_allow([^PERL_MAKE_OPTIONS$])
-m4trace:configure.ac:556: -1- m4_pattern_allow([^GRIB_API_LIB$])
-m4trace:configure.ac:557: -1- m4_pattern_allow([^GRIB_API_INC$])
-m4trace:configure.ac:559: -1- AM_CONDITIONAL([WITH_PERL], [test $with_perl != no])
-m4trace:configure.ac:559: -1- m4_pattern_allow([^WITH_PERL_TRUE$])
-m4trace:configure.ac:559: -1- m4_pattern_allow([^WITH_PERL_FALSE$])
-m4trace:configure.ac:559: -1- _AM_SUBST_NOTMAKE([WITH_PERL_TRUE])
-m4trace:configure.ac:559: -1- _AM_SUBST_NOTMAKE([WITH_PERL_FALSE])
-m4trace:configure.ac:574: -1- AM_PATH_PYTHON([2.5])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^PYTHON$])
-m4trace:configure.ac:574: -1- AM_PYTHON_CHECK_VERSION([$PYTHON], [2.5], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])
-			       AC_MSG_ERROR([Python interpreter is too old])])
-m4trace:configure.ac:574: -1- AM_RUN_LOG([$PYTHON -c "$prog"])
-m4trace:configure.ac:574: -1- AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [2.5], [break])
-m4trace:configure.ac:574: -1- AM_RUN_LOG([$am_cv_pathless_PYTHON -c "$prog"])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^PYTHON$])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^PYTHON_VERSION$])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^PYTHON_PREFIX$])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^PYTHON_EXEC_PREFIX$])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^PYTHON_PLATFORM$])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^pythondir$])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^pkgpythondir$])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^pyexecdir$])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^pkgpyexecdir$])
-m4trace:configure.ac:576: -1- m4_pattern_allow([^PYTHON_INCLUDES$])
-m4trace:configure.ac:577: -1- m4_pattern_allow([^PYTHON_LDFLAGS$])
-m4trace:configure.ac:578: -1- m4_pattern_allow([^PYTHON_CFLAGS$])
-m4trace:configure.ac:579: -1- m4_pattern_allow([^PYTHON_LIBS$])
-m4trace:configure.ac:580: -1- m4_pattern_allow([^PYTHON_CONFIG$])
-m4trace:configure.ac:582: -1- m4_pattern_allow([^PYTHON_CONFIG$])
-m4trace:configure.ac:610: -1- m4_pattern_allow([^PYTHON_CHECK$])
-m4trace:configure.ac:625: -1- m4_pattern_allow([^NUMPY_INCLUDE$])
-m4trace:configure.ac:632: -1- m4_pattern_allow([^PYTHON_DATA_HANDLER$])
-m4trace:configure.ac:635: -1- AM_CONDITIONAL([WITH_PYTHON], [test x$PYTHON != x])
-m4trace:configure.ac:635: -1- m4_pattern_allow([^WITH_PYTHON_TRUE$])
-m4trace:configure.ac:635: -1- m4_pattern_allow([^WITH_PYTHON_FALSE$])
-m4trace:configure.ac:635: -1- _AM_SUBST_NOTMAKE([WITH_PYTHON_TRUE])
-m4trace:configure.ac:635: -1- _AM_SUBST_NOTMAKE([WITH_PYTHON_FALSE])
-m4trace:configure.ac:636: -1- AM_CONDITIONAL([WITH_FORTRAN], [test x$FORTRAN_MOD != x])
-m4trace:configure.ac:636: -1- m4_pattern_allow([^WITH_FORTRAN_TRUE$])
-m4trace:configure.ac:636: -1- m4_pattern_allow([^WITH_FORTRAN_FALSE$])
-m4trace:configure.ac:636: -1- _AM_SUBST_NOTMAKE([WITH_FORTRAN_TRUE])
-m4trace:configure.ac:636: -1- _AM_SUBST_NOTMAKE([WITH_FORTRAN_FALSE])
-m4trace:configure.ac:637: -1- AM_CONDITIONAL([CREATING_SHARED_LIBS], [test "x$enable_shared" = xyes])
-m4trace:configure.ac:637: -1- m4_pattern_allow([^CREATING_SHARED_LIBS_TRUE$])
-m4trace:configure.ac:637: -1- m4_pattern_allow([^CREATING_SHARED_LIBS_FALSE$])
-m4trace:configure.ac:637: -1- _AM_SUBST_NOTMAKE([CREATING_SHARED_LIBS_TRUE])
-m4trace:configure.ac:637: -1- _AM_SUBST_NOTMAKE([CREATING_SHARED_LIBS_FALSE])
-m4trace:configure.ac:644: -1- m4_pattern_allow([^RM$])
-m4trace:configure.ac:645: -1- m4_pattern_allow([^AR$])
-m4trace:configure.ac:648: -1- grib_api_PROG_CC_WARNING_PEDANTIC([-Wall])
-m4trace:configure.ac:648: -1- m4_pattern_allow([^WARN_PEDANTIC$])
-m4trace:configure.ac:651: -1- grib_api_ENABLE_WARNINGS_ARE_ERRORS
-m4trace:configure.ac:651: -1- m4_pattern_allow([^WERROR$])
-m4trace:configure.ac:654: -1- m4_pattern_allow([^HAVE_LIBM$])
-m4trace:configure.ac:658: -1- m4_pattern_allow([^STDC_HEADERS$])
-m4trace:configure.ac:662: -1- m4_pattern_allow([^size_t$])
-m4trace:configure.ac:663: -1- m4_pattern_allow([^TIME_WITH_SYS_TIME$])
-m4trace:configure.ac:666: -1- m4_pattern_allow([^CLOSEDIR_VOID$])
-m4trace:configure.ac:667: -1- _m4_warn([obsolete], [The macro `AC_TYPE_SIGNAL' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/types.m4:746: AC_TYPE_SIGNAL is expanded from...
-configure.ac:667: the top level])
-m4trace:configure.ac:667: -1- m4_pattern_allow([^RETSIGTYPE$])
-m4trace:configure.ac:668: -1- m4_pattern_allow([^HAVE_VPRINTF$])
-m4trace:configure.ac:668: -1- m4_pattern_allow([^HAVE_DOPRNT$])
-m4trace:configure.ac:671: -1- AX_LINUX_DISTRIBUTION
-m4trace:configure.ac:671: -1- m4_pattern_allow([^LINUX_DISTRIBUTION_NAME$])
-m4trace:configure.ac:671: -1- m4_pattern_allow([^LINUX_DISTRIBUTION_VERSION$])
-m4trace:configure.ac:673: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments.
-You should run autoupdate.], [])
-m4trace:configure.ac:673: -1- m4_pattern_allow([^LIB@&t at OBJS$])
-m4trace:configure.ac:673: -1- m4_pattern_allow([^LTLIBOBJS$])
-m4trace:configure.ac:673: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
-m4trace:configure.ac:673: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
-m4trace:configure.ac:673: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
-m4trace:configure.ac:673: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
-m4trace:configure.ac:673: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
-m4trace:configure.ac:673: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"])
-m4trace:configure.ac:673: -1- _LT_PROG_LTMAIN
-m4trace:configure.ac:673: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS
diff --git a/autom4te.cache/traces.1 b/autom4te.cache/traces.1
deleted file mode 100644
index bea41c2..0000000
--- a/autom4te.cache/traces.1
+++ /dev/null
@@ -1,1147 +0,0 @@
-m4trace:aclocal.m4:1284: -1- m4_include([m4/ax_linux_distribution.m4])
-m4trace:aclocal.m4:1285: -1- m4_include([m4/libtool.m4])
-m4trace:aclocal.m4:1286: -1- m4_include([m4/ltoptions.m4])
-m4trace:aclocal.m4:1287: -1- m4_include([m4/ltsugar.m4])
-m4trace:aclocal.m4:1288: -1- m4_include([m4/ltversion.m4])
-m4trace:aclocal.m4:1289: -1- m4_include([m4/lt~obsolete.m4])
-m4trace:aclocal.m4:1290: -1- m4_include([acinclude.m4])
-m4trace:configure.ac:6: -1- AC_INIT([eccodes], [ ], [Software.Support at ecmwf.int])
-m4trace:configure.ac:6: -1- m4_pattern_forbid([^_?A[CHUM]_])
-m4trace:configure.ac:6: -1- m4_pattern_forbid([_AC_])
-m4trace:configure.ac:6: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^AS_FLAGS$])
-m4trace:configure.ac:6: -1- m4_pattern_forbid([^_?m4_])
-m4trace:configure.ac:6: -1- m4_pattern_forbid([^dnl$])
-m4trace:configure.ac:6: -1- m4_pattern_forbid([^_?AS_])
-m4trace:configure.ac:6: -1- AC_SUBST([SHELL])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([SHELL])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^SHELL$])
-m4trace:configure.ac:6: -1- AC_SUBST([PATH_SEPARATOR])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PATH_SEPARATOR$])
-m4trace:configure.ac:6: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME],      ['AC_PACKAGE_NAME'])])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PACKAGE_NAME])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_NAME$])
-m4trace:configure.ac:6: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME],   ['AC_PACKAGE_TARNAME'])])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
-m4trace:configure.ac:6: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION],   ['AC_PACKAGE_VERSION'])])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_VERSION$])
-m4trace:configure.ac:6: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING],    ['AC_PACKAGE_STRING'])])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PACKAGE_STRING])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_STRING$])
-m4trace:configure.ac:6: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
-m4trace:configure.ac:6: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL],       ['AC_PACKAGE_URL'])])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PACKAGE_URL])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_URL$])
-m4trace:configure.ac:6: -1- AC_SUBST([exec_prefix], [NONE])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([exec_prefix])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^exec_prefix$])
-m4trace:configure.ac:6: -1- AC_SUBST([prefix], [NONE])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([prefix])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^prefix$])
-m4trace:configure.ac:6: -1- AC_SUBST([program_transform_name], [s,x,x,])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([program_transform_name])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^program_transform_name$])
-m4trace:configure.ac:6: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([bindir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^bindir$])
-m4trace:configure.ac:6: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([sbindir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^sbindir$])
-m4trace:configure.ac:6: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([libexecdir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^libexecdir$])
-m4trace:configure.ac:6: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([datarootdir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^datarootdir$])
-m4trace:configure.ac:6: -1- AC_SUBST([datadir], ['${datarootdir}'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([datadir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^datadir$])
-m4trace:configure.ac:6: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([sysconfdir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^sysconfdir$])
-m4trace:configure.ac:6: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([sharedstatedir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^sharedstatedir$])
-m4trace:configure.ac:6: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([localstatedir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^localstatedir$])
-m4trace:configure.ac:6: -1- AC_SUBST([includedir], ['${prefix}/include'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([includedir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^includedir$])
-m4trace:configure.ac:6: -1- AC_SUBST([oldincludedir], ['/usr/include'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([oldincludedir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^oldincludedir$])
-m4trace:configure.ac:6: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
-				     ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
-				     ['${datarootdir}/doc/${PACKAGE}'])])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([docdir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^docdir$])
-m4trace:configure.ac:6: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([infodir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^infodir$])
-m4trace:configure.ac:6: -1- AC_SUBST([htmldir], ['${docdir}'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([htmldir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^htmldir$])
-m4trace:configure.ac:6: -1- AC_SUBST([dvidir], ['${docdir}'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([dvidir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^dvidir$])
-m4trace:configure.ac:6: -1- AC_SUBST([pdfdir], ['${docdir}'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([pdfdir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^pdfdir$])
-m4trace:configure.ac:6: -1- AC_SUBST([psdir], ['${docdir}'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([psdir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^psdir$])
-m4trace:configure.ac:6: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([libdir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^libdir$])
-m4trace:configure.ac:6: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([localedir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^localedir$])
-m4trace:configure.ac:6: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([mandir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^mandir$])
-m4trace:configure.ac:6: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_NAME$])
-m4trace:configure.ac:6: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
-@%:@undef PACKAGE_NAME])
-m4trace:configure.ac:6: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
-m4trace:configure.ac:6: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
-@%:@undef PACKAGE_TARNAME])
-m4trace:configure.ac:6: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_VERSION$])
-m4trace:configure.ac:6: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
-@%:@undef PACKAGE_VERSION])
-m4trace:configure.ac:6: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_STRING$])
-m4trace:configure.ac:6: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
-@%:@undef PACKAGE_STRING])
-m4trace:configure.ac:6: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
-m4trace:configure.ac:6: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
-@%:@undef PACKAGE_BUGREPORT])
-m4trace:configure.ac:6: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_URL$])
-m4trace:configure.ac:6: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
-@%:@undef PACKAGE_URL])
-m4trace:configure.ac:6: -1- AC_SUBST([DEFS])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([DEFS])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^DEFS$])
-m4trace:configure.ac:6: -1- AC_SUBST([ECHO_C])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([ECHO_C])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^ECHO_C$])
-m4trace:configure.ac:6: -1- AC_SUBST([ECHO_N])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([ECHO_N])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^ECHO_N$])
-m4trace:configure.ac:6: -1- AC_SUBST([ECHO_T])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([ECHO_T])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^ECHO_T$])
-m4trace:configure.ac:6: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:6: -1- AC_SUBST([build_alias])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([build_alias])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^build_alias$])
-m4trace:configure.ac:6: -1- AC_SUBST([host_alias])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([host_alias])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^host_alias$])
-m4trace:configure.ac:6: -1- AC_SUBST([target_alias])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([target_alias])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^target_alias$])
-m4trace:configure.ac:8: -1- AC_CONFIG_AUX_DIR([config])
-m4trace:configure.ac:10: -1- LT_INIT([shared])
-m4trace:configure.ac:10: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
-m4trace:configure.ac:10: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
-m4trace:configure.ac:10: -1- AC_SUBST([LIBTOOL])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LIBTOOL])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^LIBTOOL$])
-m4trace:configure.ac:10: -1- AC_CANONICAL_HOST
-m4trace:configure.ac:10: -1- AC_CANONICAL_BUILD
-m4trace:configure.ac:10: -1- AC_REQUIRE_AUX_FILE([config.sub])
-m4trace:configure.ac:10: -1- AC_REQUIRE_AUX_FILE([config.guess])
-m4trace:configure.ac:10: -1- AC_SUBST([build], [$ac_cv_build])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([build])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^build$])
-m4trace:configure.ac:10: -1- AC_SUBST([build_cpu], [$[1]])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([build_cpu])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^build_cpu$])
-m4trace:configure.ac:10: -1- AC_SUBST([build_vendor], [$[2]])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([build_vendor])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^build_vendor$])
-m4trace:configure.ac:10: -1- AC_SUBST([build_os])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([build_os])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^build_os$])
-m4trace:configure.ac:10: -1- AC_SUBST([host], [$ac_cv_host])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([host])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^host$])
-m4trace:configure.ac:10: -1- AC_SUBST([host_cpu], [$[1]])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([host_cpu])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^host_cpu$])
-m4trace:configure.ac:10: -1- AC_SUBST([host_vendor], [$[2]])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([host_vendor])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^host_vendor$])
-m4trace:configure.ac:10: -1- AC_SUBST([host_os])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([host_os])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^host_os$])
-m4trace:configure.ac:10: -1- AC_SUBST([CC])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:10: -1- AC_SUBST([CFLAGS])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CFLAGS])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CFLAGS$])
-m4trace:configure.ac:10: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LDFLAGS])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:10: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:10: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:10: -1- AC_SUBST([CC])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:10: -1- AC_SUBST([CC])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:10: -1- AC_SUBST([CC])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:10: -1- AC_SUBST([CC])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:10: -1- AC_SUBST([ac_ct_CC])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([ac_ct_CC])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^ac_ct_CC$])
-m4trace:configure.ac:10: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([EXEEXT])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^EXEEXT$])
-m4trace:configure.ac:10: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([OBJEXT])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^OBJEXT$])
-m4trace:configure.ac:10: -1- AC_SUBST([SED])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([SED])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^SED$])
-m4trace:configure.ac:10: -1- AC_SUBST([GREP])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([GREP])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^GREP$])
-m4trace:configure.ac:10: -1- AC_SUBST([EGREP])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([EGREP])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^EGREP$])
-m4trace:configure.ac:10: -1- AC_SUBST([FGREP])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([FGREP])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^FGREP$])
-m4trace:configure.ac:10: -1- AC_SUBST([GREP])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([GREP])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^GREP$])
-m4trace:configure.ac:10: -1- AC_SUBST([LD])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LD])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^LD$])
-m4trace:configure.ac:10: -1- AC_SUBST([DUMPBIN])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([DUMPBIN])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^DUMPBIN$])
-m4trace:configure.ac:10: -1- AC_SUBST([ac_ct_DUMPBIN])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([ac_ct_DUMPBIN])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
-m4trace:configure.ac:10: -1- AC_SUBST([DUMPBIN])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([DUMPBIN])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^DUMPBIN$])
-m4trace:configure.ac:10: -1- AC_SUBST([NM])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([NM])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^NM$])
-m4trace:configure.ac:10: -1- AC_SUBST([LN_S], [$as_ln_s])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LN_S])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^LN_S$])
-m4trace:configure.ac:10: -1- AC_SUBST([OBJDUMP])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([OBJDUMP])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^OBJDUMP$])
-m4trace:configure.ac:10: -1- AC_SUBST([OBJDUMP])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([OBJDUMP])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^OBJDUMP$])
-m4trace:configure.ac:10: -1- AC_SUBST([DLLTOOL])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([DLLTOOL])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^DLLTOOL$])
-m4trace:configure.ac:10: -1- AC_SUBST([DLLTOOL])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([DLLTOOL])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^DLLTOOL$])
-m4trace:configure.ac:10: -1- AC_SUBST([AR])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([AR])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^AR$])
-m4trace:configure.ac:10: -1- AC_SUBST([ac_ct_AR])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([ac_ct_AR])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^ac_ct_AR$])
-m4trace:configure.ac:10: -1- AC_SUBST([STRIP])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([STRIP])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^STRIP$])
-m4trace:configure.ac:10: -1- AC_SUBST([RANLIB])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([RANLIB])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^RANLIB$])
-m4trace:configure.ac:10: -1- AC_SUBST([AWK])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([AWK])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^AWK$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([LT_OBJDIR])
-m4trace:configure.ac:10: -1- AC_DEFINE_TRACE_LITERAL([LT_OBJDIR])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^LT_OBJDIR$])
-m4trace:configure.ac:10: -1- AH_OUTPUT([LT_OBJDIR], [/* Define to the sub-directory in which libtool stores uninstalled libraries.
-   */
-@%:@undef LT_OBJDIR])
-m4trace:configure.ac:10: -1- LT_SUPPORTED_TAG([CC])
-m4trace:configure.ac:10: -1- AC_SUBST([MANIFEST_TOOL])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([MANIFEST_TOOL])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^MANIFEST_TOOL$])
-m4trace:configure.ac:10: -1- AC_SUBST([DSYMUTIL])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([DSYMUTIL])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^DSYMUTIL$])
-m4trace:configure.ac:10: -1- AC_SUBST([NMEDIT])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([NMEDIT])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^NMEDIT$])
-m4trace:configure.ac:10: -1- AC_SUBST([LIPO])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LIPO])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^LIPO$])
-m4trace:configure.ac:10: -1- AC_SUBST([OTOOL])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([OTOOL])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^OTOOL$])
-m4trace:configure.ac:10: -1- AC_SUBST([OTOOL64])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([OTOOL64])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^OTOOL64$])
-m4trace:configure.ac:10: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
-@%:@undef HAVE_DLFCN_H])
-m4trace:configure.ac:10: -1- AC_SUBST([CPP])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CPP])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:10: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:10: -1- AC_SUBST([CPP])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CPP])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:10: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^STDC_HEADERS$])
-m4trace:configure.ac:10: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
-@%:@undef STDC_HEADERS])
-m4trace:configure.ac:10: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
-@%:@undef HAVE_SYS_TYPES_H])
-m4trace:configure.ac:10: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
-@%:@undef HAVE_SYS_STAT_H])
-m4trace:configure.ac:10: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
-@%:@undef HAVE_STDLIB_H])
-m4trace:configure.ac:10: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
-@%:@undef HAVE_STRING_H])
-m4trace:configure.ac:10: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
-@%:@undef HAVE_MEMORY_H])
-m4trace:configure.ac:10: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
-@%:@undef HAVE_STRINGS_H])
-m4trace:configure.ac:10: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
-@%:@undef HAVE_INTTYPES_H])
-m4trace:configure.ac:10: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
-@%:@undef HAVE_STDINT_H])
-m4trace:configure.ac:10: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
-@%:@undef HAVE_UNISTD_H])
-m4trace:configure.ac:10: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DLFCN_H])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
-m4trace:configure.ac:11: -1- AC_SUBST([LIBTOOL_DEPS])
-m4trace:configure.ac:11: -1- AC_SUBST_TRACE([LIBTOOL_DEPS])
-m4trace:configure.ac:11: -1- m4_pattern_allow([^LIBTOOL_DEPS$])
-m4trace:configure.ac:24: -1- AC_SUBST([ECCODES_MAIN_VERSION])
-m4trace:configure.ac:24: -1- AC_SUBST_TRACE([ECCODES_MAIN_VERSION])
-m4trace:configure.ac:24: -1- m4_pattern_allow([^ECCODES_MAIN_VERSION$])
-m4trace:configure.ac:25: -1- AC_SUBST([ECCODES_VERSION_STR])
-m4trace:configure.ac:25: -1- AC_SUBST_TRACE([ECCODES_VERSION_STR])
-m4trace:configure.ac:25: -1- m4_pattern_allow([^ECCODES_VERSION_STR$])
-m4trace:configure.ac:26: -1- AC_SUBST([ECCODES_MAJOR_VERSION])
-m4trace:configure.ac:26: -1- AC_SUBST_TRACE([ECCODES_MAJOR_VERSION])
-m4trace:configure.ac:26: -1- m4_pattern_allow([^ECCODES_MAJOR_VERSION$])
-m4trace:configure.ac:27: -1- AC_SUBST([ECCODES_MINOR_VERSION])
-m4trace:configure.ac:27: -1- AC_SUBST_TRACE([ECCODES_MINOR_VERSION])
-m4trace:configure.ac:27: -1- m4_pattern_allow([^ECCODES_MINOR_VERSION$])
-m4trace:configure.ac:28: -1- AC_SUBST([ECCODES_PATCH_VERSION])
-m4trace:configure.ac:28: -1- AC_SUBST_TRACE([ECCODES_PATCH_VERSION])
-m4trace:configure.ac:28: -1- m4_pattern_allow([^ECCODES_PATCH_VERSION$])
-m4trace:configure.ac:30: -1- AC_SUBST([ECCODES_CURRENT])
-m4trace:configure.ac:30: -1- AC_SUBST_TRACE([ECCODES_CURRENT])
-m4trace:configure.ac:30: -1- m4_pattern_allow([^ECCODES_CURRENT$])
-m4trace:configure.ac:31: -1- AC_SUBST([ECCODES_REVISION])
-m4trace:configure.ac:31: -1- AC_SUBST_TRACE([ECCODES_REVISION])
-m4trace:configure.ac:31: -1- m4_pattern_allow([^ECCODES_REVISION$])
-m4trace:configure.ac:32: -1- AC_SUBST([ECCODES_AGE])
-m4trace:configure.ac:32: -1- AC_SUBST_TRACE([ECCODES_AGE])
-m4trace:configure.ac:32: -1- m4_pattern_allow([^ECCODES_AGE$])
-m4trace:configure.ac:40: -1- AC_CONFIG_HEADERS([src/config.h])
-m4trace:configure.ac:41: -1- AC_CONFIG_FILES([src/eccodes_version.h])
-m4trace:configure.ac:42: -1- AC_CONFIG_FILES([rpms/eccodes.pc rpms/eccodes.spec rpms/eccodes_f90.pc])
-m4trace:configure.ac:43: -1- AM_INIT_AUTOMAKE([$PACKAGE_NAME], [${PACKAGE_VERSION}], [http://www.ecmwf.int])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
-m4trace:configure.ac:43: -1- AM_AUTOMAKE_VERSION([1.13.4])
-m4trace:configure.ac:43: -1- AC_REQUIRE_AUX_FILE([install-sh])
-m4trace:configure.ac:43: -1- AC_SUBST([INSTALL_PROGRAM])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
-m4trace:configure.ac:43: -1- AC_SUBST([INSTALL_SCRIPT])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
-m4trace:configure.ac:43: -1- AC_SUBST([INSTALL_DATA])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([INSTALL_DATA])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^INSTALL_DATA$])
-m4trace:configure.ac:43: -1- AC_SUBST([am__isrc], [' -I$(srcdir)'])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([am__isrc])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__isrc$])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([am__isrc])
-m4trace:configure.ac:43: -1- AC_SUBST([CYGPATH_W])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([CYGPATH_W])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^CYGPATH_W$])
-m4trace:configure.ac:43: -1- _m4_warn([obsolete], [AM_INIT_AUTOMAKE: two- and three-arguments forms are deprecated.], [aclocal.m4:424: AM_INIT_AUTOMAKE is expanded from...
-configure.ac:43: the top level])
-m4trace:configure.ac:43: -1- AC_SUBST([PACKAGE], [$PACKAGE_NAME])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([PACKAGE])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^PACKAGE$])
-m4trace:configure.ac:43: -1- AC_SUBST([VERSION], [${PACKAGE_VERSION}])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([VERSION])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^VERSION$])
-m4trace:configure.ac:43: -1- AC_REQUIRE_AUX_FILE([missing])
-m4trace:configure.ac:43: -1- AC_SUBST([ACLOCAL])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([ACLOCAL])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^ACLOCAL$])
-m4trace:configure.ac:43: -1- AC_SUBST([AUTOCONF])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([AUTOCONF])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AUTOCONF$])
-m4trace:configure.ac:43: -1- AC_SUBST([AUTOMAKE])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([AUTOMAKE])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AUTOMAKE$])
-m4trace:configure.ac:43: -1- AC_SUBST([AUTOHEADER])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([AUTOHEADER])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AUTOHEADER$])
-m4trace:configure.ac:43: -1- AC_SUBST([MAKEINFO])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([MAKEINFO])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^MAKEINFO$])
-m4trace:configure.ac:43: -1- AC_SUBST([install_sh])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([install_sh])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^install_sh$])
-m4trace:configure.ac:43: -1- AC_SUBST([STRIP])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([STRIP])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^STRIP$])
-m4trace:configure.ac:43: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
-m4trace:configure.ac:43: -1- AC_REQUIRE_AUX_FILE([install-sh])
-m4trace:configure.ac:43: -1- AC_SUBST([MKDIR_P])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([MKDIR_P])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^MKDIR_P$])
-m4trace:configure.ac:43: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([mkdir_p])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^mkdir_p$])
-m4trace:configure.ac:43: -1- AC_SUBST([SET_MAKE])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([SET_MAKE])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^SET_MAKE$])
-m4trace:configure.ac:43: -1- AC_SUBST([am__leading_dot])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([am__leading_dot])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__leading_dot$])
-m4trace:configure.ac:43: -1- AC_SUBST([AMTAR], ['$${TAR-tar}'])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([AMTAR])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AMTAR$])
-m4trace:configure.ac:43: -1- AC_SUBST([am__tar])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([am__tar])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__tar$])
-m4trace:configure.ac:43: -1- AC_SUBST([am__untar])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([am__untar])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__untar$])
-m4trace:configure.ac:43: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([DEPDIR])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^DEPDIR$])
-m4trace:configure.ac:43: -1- AC_SUBST([am__include])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([am__include])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__include$])
-m4trace:configure.ac:43: -1- AC_SUBST([am__quote])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([am__quote])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__quote$])
-m4trace:configure.ac:43: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-m4trace:configure.ac:43: -1- AC_SUBST([AMDEP_TRUE])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([AMDEP_TRUE])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AMDEP_TRUE$])
-m4trace:configure.ac:43: -1- AC_SUBST([AMDEP_FALSE])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([AMDEP_FALSE])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AMDEP_FALSE$])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
-m4trace:configure.ac:43: -1- AC_SUBST([AMDEPBACKSLASH])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([AMDEPBACKSLASH])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
-m4trace:configure.ac:43: -1- AC_SUBST([am__nodep])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([am__nodep])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__nodep$])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([am__nodep])
-m4trace:configure.ac:43: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([CCDEPMODE])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^CCDEPMODE$])
-m4trace:configure.ac:43: -1- AM_CONDITIONAL([am__fastdepCC], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
-m4trace:configure.ac:43: -1- AC_SUBST([am__fastdepCC_TRUE])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
-m4trace:configure.ac:43: -1- AC_SUBST([am__fastdepCC_FALSE])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
-m4trace:configure.ac:43: -1- AM_SILENT_RULES
-m4trace:configure.ac:43: -1- AC_SUBST([AM_V])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([AM_V])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AM_V$])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([AM_V])
-m4trace:configure.ac:43: -1- AC_SUBST([AM_DEFAULT_V])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([AM_DEFAULT_V])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AM_DEFAULT_V$])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V])
-m4trace:configure.ac:43: -1- AC_SUBST([AM_DEFAULT_VERBOSITY])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$])
-m4trace:configure.ac:43: -1- AC_SUBST([AM_BACKSLASH])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([AM_BACKSLASH])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AM_BACKSLASH$])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH])
-m4trace:configure.ac:50: -1- AC_DEFINE_TRACE_LITERAL([ECCODES_MAIN_VERSION])
-m4trace:configure.ac:50: -1- m4_pattern_allow([^ECCODES_MAIN_VERSION$])
-m4trace:configure.ac:50: -1- AH_OUTPUT([ECCODES_MAIN_VERSION], [/* ecCodes version */
-@%:@undef ECCODES_MAIN_VERSION])
-m4trace:configure.ac:51: -1- AC_DEFINE_TRACE_LITERAL([ECCODES_MAJOR_VERSION])
-m4trace:configure.ac:51: -1- m4_pattern_allow([^ECCODES_MAJOR_VERSION$])
-m4trace:configure.ac:51: -1- AH_OUTPUT([ECCODES_MAJOR_VERSION], [/* ecCodes Major release */
-@%:@undef ECCODES_MAJOR_VERSION])
-m4trace:configure.ac:52: -1- AC_DEFINE_TRACE_LITERAL([ECCODES_MINOR_VERSION])
-m4trace:configure.ac:52: -1- m4_pattern_allow([^ECCODES_MINOR_VERSION$])
-m4trace:configure.ac:52: -1- AH_OUTPUT([ECCODES_MINOR_VERSION], [/* ecCodes Minor release */
-@%:@undef ECCODES_MINOR_VERSION])
-m4trace:configure.ac:53: -1- AC_DEFINE_TRACE_LITERAL([ECCODES_REVISION_VERSION])
-m4trace:configure.ac:53: -1- m4_pattern_allow([^ECCODES_REVISION_VERSION$])
-m4trace:configure.ac:53: -1- AH_OUTPUT([ECCODES_REVISION_VERSION], [/* ecCodes Revision release */
-@%:@undef ECCODES_REVISION_VERSION])
-m4trace:configure.ac:55: -1- AC_DEFINE_TRACE_LITERAL([ECCODES_CURRENT])
-m4trace:configure.ac:55: -1- m4_pattern_allow([^ECCODES_CURRENT$])
-m4trace:configure.ac:55: -1- AH_OUTPUT([ECCODES_CURRENT], [/* ecCodes Current ABI version */
-@%:@undef ECCODES_CURRENT])
-m4trace:configure.ac:56: -1- AC_DEFINE_TRACE_LITERAL([ECCODES_REVISION])
-m4trace:configure.ac:56: -1- m4_pattern_allow([^ECCODES_REVISION$])
-m4trace:configure.ac:56: -1- AH_OUTPUT([ECCODES_REVISION], [/* ecCodes Revision ABI version */
-@%:@undef ECCODES_REVISION])
-m4trace:configure.ac:57: -1- AC_DEFINE_TRACE_LITERAL([ECCODES_AGE])
-m4trace:configure.ac:57: -1- m4_pattern_allow([^ECCODES_AGE$])
-m4trace:configure.ac:57: -1- AH_OUTPUT([ECCODES_AGE], [/* ecCodes Age of ABI version */
-@%:@undef ECCODES_AGE])
-m4trace:configure.ac:60: -1- AH_OUTPUT([_LARGE_FILE_API], [/* Needs to be undefined on some AIX */
-@%:@undef _LARGE_FILE_API])
-m4trace:configure.ac:64: -1- AC_SUBST([PERLDIR])
-m4trace:configure.ac:64: -1- AC_SUBST_TRACE([PERLDIR])
-m4trace:configure.ac:64: -1- m4_pattern_allow([^PERLDIR$])
-m4trace:configure.ac:68: -1- AC_SUBST([CC])
-m4trace:configure.ac:68: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:68: -1- AC_SUBST([CFLAGS])
-m4trace:configure.ac:68: -1- AC_SUBST_TRACE([CFLAGS])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^CFLAGS$])
-m4trace:configure.ac:68: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.ac:68: -1- AC_SUBST_TRACE([LDFLAGS])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:68: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:68: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:68: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.ac:68: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:68: -1- AC_SUBST([CC])
-m4trace:configure.ac:68: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:68: -1- AC_SUBST([ac_ct_CC])
-m4trace:configure.ac:68: -1- AC_SUBST_TRACE([ac_ct_CC])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^ac_ct_CC$])
-m4trace:configure.ac:69: -1- AC_SUBST([CPP])
-m4trace:configure.ac:69: -1- AC_SUBST_TRACE([CPP])
-m4trace:configure.ac:69: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:69: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.ac:69: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.ac:69: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:69: -1- AC_SUBST([CPP])
-m4trace:configure.ac:69: -1- AC_SUBST_TRACE([CPP])
-m4trace:configure.ac:69: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:71: -1- AC_SUBST([LN_S], [$as_ln_s])
-m4trace:configure.ac:71: -1- AC_SUBST_TRACE([LN_S])
-m4trace:configure.ac:71: -1- m4_pattern_allow([^LN_S$])
-m4trace:configure.ac:72: -1- AC_SUBST([SET_MAKE])
-m4trace:configure.ac:72: -1- AC_SUBST_TRACE([SET_MAKE])
-m4trace:configure.ac:72: -1- m4_pattern_allow([^SET_MAKE$])
-m4trace:configure.ac:73: -1- AC_SUBST([YACC])
-m4trace:configure.ac:73: -1- AC_SUBST_TRACE([YACC])
-m4trace:configure.ac:73: -1- m4_pattern_allow([^YACC$])
-m4trace:configure.ac:73: -1- AC_SUBST([YACC])
-m4trace:configure.ac:73: -1- AC_SUBST_TRACE([YACC])
-m4trace:configure.ac:73: -1- m4_pattern_allow([^YACC$])
-m4trace:configure.ac:73: -1- AC_SUBST([YFLAGS])
-m4trace:configure.ac:73: -1- AC_SUBST_TRACE([YFLAGS])
-m4trace:configure.ac:73: -1- m4_pattern_allow([^YFLAGS$])
-m4trace:configure.ac:74: -1- AC_SUBST([LEX])
-m4trace:configure.ac:74: -1- AC_SUBST_TRACE([LEX])
-m4trace:configure.ac:74: -1- m4_pattern_allow([^LEX$])
-m4trace:configure.ac:74: -1- AC_SUBST([LEX_OUTPUT_ROOT], [$ac_cv_prog_lex_root])
-m4trace:configure.ac:74: -1- AC_SUBST_TRACE([LEX_OUTPUT_ROOT])
-m4trace:configure.ac:74: -1- m4_pattern_allow([^LEX_OUTPUT_ROOT$])
-m4trace:configure.ac:74: -1- AC_SUBST([LEXLIB])
-m4trace:configure.ac:74: -1- AC_SUBST_TRACE([LEXLIB])
-m4trace:configure.ac:74: -1- m4_pattern_allow([^LEXLIB$])
-m4trace:configure.ac:74: -1- AC_DEFINE_TRACE_LITERAL([YYTEXT_POINTER])
-m4trace:configure.ac:74: -1- m4_pattern_allow([^YYTEXT_POINTER$])
-m4trace:configure.ac:74: -1- AH_OUTPUT([YYTEXT_POINTER], [/* Define to 1 if `lex\' declares `yytext\' as a `char *\' by default, not a
-   `char@<:@@:>@\'. */
-@%:@undef YYTEXT_POINTER])
-m4trace:configure.ac:75: -1- AC_SUBST([F77])
-m4trace:configure.ac:75: -1- AC_SUBST_TRACE([F77])
-m4trace:configure.ac:75: -1- m4_pattern_allow([^F77$])
-m4trace:configure.ac:75: -1- AC_SUBST([FFLAGS])
-m4trace:configure.ac:75: -1- AC_SUBST_TRACE([FFLAGS])
-m4trace:configure.ac:75: -1- m4_pattern_allow([^FFLAGS$])
-m4trace:configure.ac:75: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.ac:75: -1- AC_SUBST_TRACE([LDFLAGS])
-m4trace:configure.ac:75: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:75: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:75: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.ac:75: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:75: -1- AC_SUBST([F77])
-m4trace:configure.ac:75: -1- AC_SUBST_TRACE([F77])
-m4trace:configure.ac:75: -1- m4_pattern_allow([^F77$])
-m4trace:configure.ac:75: -1- AC_SUBST([ac_ct_F77])
-m4trace:configure.ac:75: -1- AC_SUBST_TRACE([ac_ct_F77])
-m4trace:configure.ac:75: -1- m4_pattern_allow([^ac_ct_F77$])
-m4trace:configure.ac:75: -1- LT_SUPPORTED_TAG([F77])
-m4trace:configure.ac:76: -1- AC_SUBST([FC])
-m4trace:configure.ac:76: -1- AC_SUBST_TRACE([FC])
-m4trace:configure.ac:76: -1- m4_pattern_allow([^FC$])
-m4trace:configure.ac:76: -1- AC_SUBST([FCFLAGS])
-m4trace:configure.ac:76: -1- AC_SUBST_TRACE([FCFLAGS])
-m4trace:configure.ac:76: -1- m4_pattern_allow([^FCFLAGS$])
-m4trace:configure.ac:76: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.ac:76: -1- AC_SUBST_TRACE([LDFLAGS])
-m4trace:configure.ac:76: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:76: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:76: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.ac:76: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:76: -1- AC_SUBST([FC])
-m4trace:configure.ac:76: -1- AC_SUBST_TRACE([FC])
-m4trace:configure.ac:76: -1- m4_pattern_allow([^FC$])
-m4trace:configure.ac:76: -1- AC_SUBST([ac_ct_FC])
-m4trace:configure.ac:76: -1- AC_SUBST_TRACE([ac_ct_FC])
-m4trace:configure.ac:76: -1- m4_pattern_allow([^ac_ct_FC$])
-m4trace:configure.ac:76: -1- LT_SUPPORTED_TAG([FC])
-m4trace:configure.ac:91: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [../../lib/autoconf/general.m4:2748: AC_RUN_IFELSE is expanded from...
-acinclude.m4:97: AC_GRIB_PTHREADS is expanded from...
-configure.ac:91: the top level])
-m4trace:configure.ac:92: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [../../lib/autoconf/general.m4:2748: AC_RUN_IFELSE is expanded from...
-acinclude.m4:168: AC_GRIB_LINUX_PTHREADS is expanded from...
-configure.ac:92: the top level])
-m4trace:configure.ac:97: -1- AC_DEFINE_TRACE_LITERAL([GRIB_PTHREADS])
-m4trace:configure.ac:97: -1- m4_pattern_allow([^GRIB_PTHREADS$])
-m4trace:configure.ac:97: -1- AH_OUTPUT([GRIB_PTHREADS], [/* 1->pthreads enabled 0->pthreads disabled */
-@%:@undef GRIB_PTHREADS])
-m4trace:configure.ac:98: -1- AC_DEFINE_TRACE_LITERAL([GRIB_LINUX_PTHREADS])
-m4trace:configure.ac:98: -1- m4_pattern_allow([^GRIB_LINUX_PTHREADS$])
-m4trace:configure.ac:98: -1- AH_OUTPUT([GRIB_LINUX_PTHREADS], [/* 1->pthreads enabled 0->pthreads disabled */
-@%:@undef GRIB_LINUX_PTHREADS])
-m4trace:configure.ac:110: -1- AC_DEFINE_TRACE_LITERAL([GRIB_IBMPOWER67_OPT])
-m4trace:configure.ac:110: -1- m4_pattern_allow([^GRIB_IBMPOWER67_OPT$])
-m4trace:configure.ac:110: -1- AH_OUTPUT([GRIB_IBMPOWER67_OPT], [/* 1->IBM Power6/7 Optimisations enabled 0->IBM Power6/7 Optimisations
-   disabled */
-@%:@undef GRIB_IBMPOWER67_OPT])
-m4trace:configure.ac:117: -1- AM_CONDITIONAL([UPPER_CASE_MOD], [test "x$ac_cv_prog_f90_uppercase_mod" = xyes])
-m4trace:configure.ac:117: -1- AC_SUBST([UPPER_CASE_MOD_TRUE])
-m4trace:configure.ac:117: -1- AC_SUBST_TRACE([UPPER_CASE_MOD_TRUE])
-m4trace:configure.ac:117: -1- m4_pattern_allow([^UPPER_CASE_MOD_TRUE$])
-m4trace:configure.ac:117: -1- AC_SUBST([UPPER_CASE_MOD_FALSE])
-m4trace:configure.ac:117: -1- AC_SUBST_TRACE([UPPER_CASE_MOD_FALSE])
-m4trace:configure.ac:117: -1- m4_pattern_allow([^UPPER_CASE_MOD_FALSE$])
-m4trace:configure.ac:117: -1- _AM_SUBST_NOTMAKE([UPPER_CASE_MOD_TRUE])
-m4trace:configure.ac:117: -1- _AM_SUBST_NOTMAKE([UPPER_CASE_MOD_FALSE])
-m4trace:configure.ac:119: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [../../lib/autoconf/general.m4:2748: AC_RUN_IFELSE is expanded from...
-acinclude.m4:3: AC_IEEE_BE is expanded from...
-configure.ac:119: the top level])
-m4trace:configure.ac:120: -1- AC_DEFINE_TRACE_LITERAL([IEEE_BE])
-m4trace:configure.ac:120: -1- m4_pattern_allow([^IEEE_BE$])
-m4trace:configure.ac:120: -1- AH_OUTPUT([IEEE_BE], [/* 1-> ieee big endian float/double 0->no ieee big endian float/double */
-@%:@undef IEEE_BE])
-m4trace:configure.ac:122: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [../../lib/autoconf/general.m4:2748: AC_RUN_IFELSE is expanded from...
-acinclude.m4:50: AC_IEEE_LE is expanded from...
-configure.ac:122: the top level])
-m4trace:configure.ac:123: -1- AC_DEFINE_TRACE_LITERAL([IEEE_LE])
-m4trace:configure.ac:123: -1- m4_pattern_allow([^IEEE_LE$])
-m4trace:configure.ac:123: -1- AH_OUTPUT([IEEE_LE], [/* 1-> ieee little endian float/double 0->no ieee little endian float/double
-   */
-@%:@undef IEEE_LE])
-m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([IEEE_LE])
-m4trace:configure.ac:132: -1- m4_pattern_allow([^IEEE_LE$])
-m4trace:configure.ac:132: -1- AH_OUTPUT([IEEE_LE], [/* 1-> ieee little endian float/double 0->no ieee little endian float/double
-   */
-@%:@undef IEEE_LE])
-m4trace:configure.ac:133: -1- AC_DEFINE_TRACE_LITERAL([IEEE_BE])
-m4trace:configure.ac:133: -1- m4_pattern_allow([^IEEE_BE$])
-m4trace:configure.ac:133: -1- AH_OUTPUT([IEEE_BE], [/* 1-> ieee big endian float/double 0->no ieee big endian float/double */
-@%:@undef IEEE_BE])
-m4trace:configure.ac:136: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [../../lib/autoconf/general.m4:2748: AC_RUN_IFELSE is expanded from...
-acinclude.m4:241: AC_BIG_ENDIAN is expanded from...
-configure.ac:136: the top level])
-m4trace:configure.ac:137: -1- AC_DEFINE_TRACE_LITERAL([IS_BIG_ENDIAN])
-m4trace:configure.ac:137: -1- m4_pattern_allow([^IS_BIG_ENDIAN$])
-m4trace:configure.ac:137: -1- AH_OUTPUT([IS_BIG_ENDIAN], [/* 1-> big endian 0->little endian */
-@%:@undef IS_BIG_ENDIAN])
-m4trace:configure.ac:140: -1- AC_DEFINE_TRACE_LITERAL([GRIB_INLINE])
-m4trace:configure.ac:140: -1- m4_pattern_allow([^GRIB_INLINE$])
-m4trace:configure.ac:140: -1- AH_OUTPUT([GRIB_INLINE], [/* inline if available */
-@%:@undef GRIB_INLINE])
-m4trace:configure.ac:142: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [../../lib/autoconf/general.m4:2748: AC_RUN_IFELSE is expanded from...
-acinclude.m4:297: AC_ALIGN is expanded from...
-configure.ac:142: the top level])
-m4trace:configure.ac:143: -1- AC_DEFINE_TRACE_LITERAL([GRIB_MEM_ALIGN])
-m4trace:configure.ac:143: -1- m4_pattern_allow([^GRIB_MEM_ALIGN$])
-m4trace:configure.ac:143: -1- AH_OUTPUT([GRIB_MEM_ALIGN], [/* memory alignment required */
-@%:@undef GRIB_MEM_ALIGN])
-m4trace:configure.ac:145: -1- AC_DEFINE_TRACE_LITERAL([POSIX_MEMALIGN])
-m4trace:configure.ac:145: -1- m4_pattern_allow([^POSIX_MEMALIGN$])
-m4trace:configure.ac:145: -1- AH_OUTPUT([POSIX_MEMALIGN], [/* posix_memalign present */
-@%:@undef POSIX_MEMALIGN])
-m4trace:configure.ac:150: -2- AC_DEFINE_TRACE_LITERAL([GRIB_MEM_ALIGN])
-m4trace:configure.ac:150: -2- m4_pattern_allow([^GRIB_MEM_ALIGN$])
-m4trace:configure.ac:150: -2- AH_OUTPUT([GRIB_MEM_ALIGN], [/* memory alignment required */
-@%:@undef GRIB_MEM_ALIGN])
-m4trace:configure.ac:163: -1- AC_DEFINE_TRACE_LITERAL([VECTOR])
-m4trace:configure.ac:163: -1- m4_pattern_allow([^VECTOR$])
-m4trace:configure.ac:163: -1- AH_OUTPUT([VECTOR], [/* vectorised code */
-@%:@undef VECTOR])
-m4trace:configure.ac:168: -2- AC_DEFINE_TRACE_LITERAL([MANAGE_MEM])
-m4trace:configure.ac:168: -2- m4_pattern_allow([^MANAGE_MEM$])
-m4trace:configure.ac:168: -2- AH_OUTPUT([MANAGE_MEM], [/* memory management */
-@%:@undef MANAGE_MEM])
-m4trace:configure.ac:169: -2- AC_DEFINE_TRACE_LITERAL([MANAGE_MEM])
-m4trace:configure.ac:169: -2- m4_pattern_allow([^MANAGE_MEM$])
-m4trace:configure.ac:169: -2- AH_OUTPUT([MANAGE_MEM], [/* memory management */
-@%:@undef MANAGE_MEM])
-m4trace:configure.ac:186: -1- AC_SUBST([DEVEL_RULES])
-m4trace:configure.ac:186: -1- AC_SUBST_TRACE([DEVEL_RULES])
-m4trace:configure.ac:186: -1- m4_pattern_allow([^DEVEL_RULES$])
-m4trace:configure.ac:187: -1- AC_SUBST([GRIB_DEVEL])
-m4trace:configure.ac:187: -1- AC_SUBST_TRACE([GRIB_DEVEL])
-m4trace:configure.ac:187: -1- m4_pattern_allow([^GRIB_DEVEL$])
-m4trace:configure.ac:189: -1- AM_CONDITIONAL([WITH_MARS_TESTS], [test $GRIB_DEVEL -eq 1])
-m4trace:configure.ac:189: -1- AC_SUBST([WITH_MARS_TESTS_TRUE])
-m4trace:configure.ac:189: -1- AC_SUBST_TRACE([WITH_MARS_TESTS_TRUE])
-m4trace:configure.ac:189: -1- m4_pattern_allow([^WITH_MARS_TESTS_TRUE$])
-m4trace:configure.ac:189: -1- AC_SUBST([WITH_MARS_TESTS_FALSE])
-m4trace:configure.ac:189: -1- AC_SUBST_TRACE([WITH_MARS_TESTS_FALSE])
-m4trace:configure.ac:189: -1- m4_pattern_allow([^WITH_MARS_TESTS_FALSE$])
-m4trace:configure.ac:189: -1- _AM_SUBST_NOTMAKE([WITH_MARS_TESTS_TRUE])
-m4trace:configure.ac:189: -1- _AM_SUBST_NOTMAKE([WITH_MARS_TESTS_FALSE])
-m4trace:configure.ac:192: -1- AC_DEFINE_TRACE_LITERAL([_LARGEFILE_SOURCE])
-m4trace:configure.ac:192: -1- m4_pattern_allow([^_LARGEFILE_SOURCE$])
-m4trace:configure.ac:192: -1- AH_OUTPUT([_LARGEFILE_SOURCE], [/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
-@%:@undef _LARGEFILE_SOURCE])
-m4trace:configure.ac:192: -1- AC_DEFINE_TRACE_LITERAL([HAVE_FSEEKO])
-m4trace:configure.ac:192: -1- m4_pattern_allow([^HAVE_FSEEKO$])
-m4trace:configure.ac:192: -1- AH_OUTPUT([HAVE_FSEEKO], [/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
-@%:@undef HAVE_FSEEKO])
-m4trace:configure.ac:200: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS])
-m4trace:configure.ac:200: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$])
-m4trace:configure.ac:200: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */
-@%:@undef _FILE_OFFSET_BITS])
-m4trace:configure.ac:200: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES])
-m4trace:configure.ac:200: -1- m4_pattern_allow([^_LARGE_FILES$])
-m4trace:configure.ac:200: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */
-@%:@undef _LARGE_FILES])
-m4trace:configure.ac:200: -1- AH_OUTPUT([_DARWIN_USE_64_BIT_INODE], [/* Enable large inode numbers on Mac OS X 10.5.  */
-#ifndef _DARWIN_USE_64_BIT_INODE
-# define _DARWIN_USE_64_BIT_INODE 1
-#endif])
-m4trace:configure.ac:203: -1- AC_CANONICAL_HOST
-m4trace:configure.ac:210: -1- AC_SUBST([RPM_HOST_CPU])
-m4trace:configure.ac:210: -1- AC_SUBST_TRACE([RPM_HOST_CPU])
-m4trace:configure.ac:210: -1- m4_pattern_allow([^RPM_HOST_CPU$])
-m4trace:configure.ac:211: -1- AC_SUBST([RPM_HOST_VENDOR])
-m4trace:configure.ac:211: -1- AC_SUBST_TRACE([RPM_HOST_VENDOR])
-m4trace:configure.ac:211: -1- m4_pattern_allow([^RPM_HOST_VENDOR$])
-m4trace:configure.ac:212: -1- AC_SUBST([RPM_HOST_OS])
-m4trace:configure.ac:212: -1- AC_SUBST_TRACE([RPM_HOST_OS])
-m4trace:configure.ac:212: -1- m4_pattern_allow([^RPM_HOST_OS$])
-m4trace:configure.ac:213: -1- AC_SUBST([RPM_CONFIGURE_ARGS])
-m4trace:configure.ac:213: -1- AC_SUBST_TRACE([RPM_CONFIGURE_ARGS])
-m4trace:configure.ac:213: -1- m4_pattern_allow([^RPM_CONFIGURE_ARGS$])
-m4trace:configure.ac:216: -1- AC_SUBST([RPM_RELEASE])
-m4trace:configure.ac:216: -1- AC_SUBST_TRACE([RPM_RELEASE])
-m4trace:configure.ac:216: -1- m4_pattern_allow([^RPM_RELEASE$])
-m4trace:configure.ac:221: -1- AC_SUBST([ECCODES_SAMPLES_PATH])
-m4trace:configure.ac:221: -1- AC_SUBST_TRACE([ECCODES_SAMPLES_PATH])
-m4trace:configure.ac:221: -1- m4_pattern_allow([^ECCODES_SAMPLES_PATH$])
-m4trace:configure.ac:222: -1- AC_SUBST([ECCODES_DEFINITION_PATH])
-m4trace:configure.ac:222: -1- AC_SUBST_TRACE([ECCODES_DEFINITION_PATH])
-m4trace:configure.ac:222: -1- m4_pattern_allow([^ECCODES_DEFINITION_PATH$])
-m4trace:configure.ac:244: -1- AM_CONDITIONAL([UPPER_CASE_MOD], [test "x$ac_cv_prog_f90_uppercase_mod" = xyes])
-m4trace:configure.ac:244: -1- AC_SUBST([UPPER_CASE_MOD_TRUE])
-m4trace:configure.ac:244: -1- AC_SUBST_TRACE([UPPER_CASE_MOD_TRUE])
-m4trace:configure.ac:244: -1- m4_pattern_allow([^UPPER_CASE_MOD_TRUE$])
-m4trace:configure.ac:244: -1- AC_SUBST([UPPER_CASE_MOD_FALSE])
-m4trace:configure.ac:244: -1- AC_SUBST_TRACE([UPPER_CASE_MOD_FALSE])
-m4trace:configure.ac:244: -1- m4_pattern_allow([^UPPER_CASE_MOD_FALSE$])
-m4trace:configure.ac:244: -1- _AM_SUBST_NOTMAKE([UPPER_CASE_MOD_TRUE])
-m4trace:configure.ac:244: -1- _AM_SUBST_NOTMAKE([UPPER_CASE_MOD_FALSE])
-m4trace:configure.ac:249: -1- AM_CONDITIONAL([DEBUG_IN_MOD], [test "x$ac_cv_prog_f90_debug_in_module" = xyes])
-m4trace:configure.ac:249: -1- AC_SUBST([DEBUG_IN_MOD_TRUE])
-m4trace:configure.ac:249: -1- AC_SUBST_TRACE([DEBUG_IN_MOD_TRUE])
-m4trace:configure.ac:249: -1- m4_pattern_allow([^DEBUG_IN_MOD_TRUE$])
-m4trace:configure.ac:249: -1- AC_SUBST([DEBUG_IN_MOD_FALSE])
-m4trace:configure.ac:249: -1- AC_SUBST_TRACE([DEBUG_IN_MOD_FALSE])
-m4trace:configure.ac:249: -1- m4_pattern_allow([^DEBUG_IN_MOD_FALSE$])
-m4trace:configure.ac:249: -1- _AM_SUBST_NOTMAKE([DEBUG_IN_MOD_TRUE])
-m4trace:configure.ac:249: -1- _AM_SUBST_NOTMAKE([DEBUG_IN_MOD_FALSE])
-m4trace:configure.ac:255: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: WARNING:  
-
-  Your Fortran compiler ($FC) does not support linking to dynamic library modules when debug is enabled. This is a known 
-problem with Portland compilers versions 7 and 8, for example. Possible workarounds are:
-
-  - Use a Portland compiler version 10 or higher or a different compiler.
-  - Disable shared libraries (e.g. configure --disable-shared)
-  - Disable debug (e.g. configure FCFLAGS=\"\")
-
-  Compilation of the Fortran module has been disabled
-
-], [])
-m4trace:configure.ac:255: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: WARNING:  
-
-  Your Fortran compiler ($FC) does not support linking to dynamic library modules when debug is enabled. This is a known 
-problem with Portland compilers versions 7 and 8, for example. Possible workarounds are:
-
-  - Use a Portland compiler version 10 or higher or a different compiler.
-  - Disable shared libraries (e.g. configure --disable-shared)
-  - Disable debug (e.g. configure FCFLAGS=\"\")
-
-  Compilation of the Fortran module has been disabled
-
-], [])
-m4trace:configure.ac:273: -1- AC_SUBST([FORTRAN_MOD])
-m4trace:configure.ac:273: -1- AC_SUBST_TRACE([FORTRAN_MOD])
-m4trace:configure.ac:273: -1- m4_pattern_allow([^FORTRAN_MOD$])
-m4trace:configure.ac:275: -1- AC_SUBST([F90_CHECK])
-m4trace:configure.ac:275: -1- AC_SUBST_TRACE([F90_CHECK])
-m4trace:configure.ac:275: -1- m4_pattern_allow([^F90_CHECK$])
-m4trace:configure.ac:283: -1- AC_SUBST([F90_MODULE_FLAG])
-m4trace:configure.ac:283: -1- AC_SUBST_TRACE([F90_MODULE_FLAG])
-m4trace:configure.ac:283: -1- m4_pattern_allow([^F90_MODULE_FLAG$])
-m4trace:configure.ac:298: -1- AC_SUBST([IFS_SAMPLES_DIR])
-m4trace:configure.ac:298: -1- AC_SUBST_TRACE([IFS_SAMPLES_DIR])
-m4trace:configure.ac:298: -1- m4_pattern_allow([^IFS_SAMPLES_DIR$])
-m4trace:configure.ac:310: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBEMOS])
-m4trace:configure.ac:310: -1- m4_pattern_allow([^HAVE_LIBEMOS$])
-m4trace:configure.ac:310: -1- AH_OUTPUT([HAVE_LIBEMOS], [/* Define if you have EMOS library */
-@%:@undef HAVE_LIBEMOS])
-m4trace:configure.ac:328: -1- AC_SUBST([EMOS_LIB])
-m4trace:configure.ac:328: -1- AC_SUBST_TRACE([EMOS_LIB])
-m4trace:configure.ac:328: -1- m4_pattern_allow([^EMOS_LIB$])
-m4trace:configure.ac:335: -1- AC_DEFINE_TRACE_LITERAL([GRIB_TIMER])
-m4trace:configure.ac:335: -1- m4_pattern_allow([^GRIB_TIMER$])
-m4trace:configure.ac:335: -1- AH_OUTPUT([GRIB_TIMER], [/* 1->Timer on 0->Timer off */
-@%:@undef GRIB_TIMER])
-m4trace:configure.ac:337: -1- AC_DEFINE_TRACE_LITERAL([GRIB_TIMER])
-m4trace:configure.ac:337: -1- m4_pattern_allow([^GRIB_TIMER$])
-m4trace:configure.ac:337: -1- AH_OUTPUT([GRIB_TIMER], [/* 1->Timer on 0->Timer off */
-@%:@undef GRIB_TIMER])
-m4trace:configure.ac:346: -1- AC_DEFINE_TRACE_LITERAL([OMP_PACKING])
-m4trace:configure.ac:346: -1- m4_pattern_allow([^OMP_PACKING$])
-m4trace:configure.ac:346: -1- AH_OUTPUT([OMP_PACKING], [/* 1->OpenMP packing 0->single thread packing */
-@%:@undef OMP_PACKING])
-m4trace:configure.ac:348: -1- AC_DEFINE_TRACE_LITERAL([OMP_PACKING])
-m4trace:configure.ac:348: -1- m4_pattern_allow([^OMP_PACKING$])
-m4trace:configure.ac:348: -1- AH_OUTPUT([OMP_PACKING], [/* 1->OpenMP packing 0->single thread packing */
-@%:@undef OMP_PACKING])
-m4trace:configure.ac:376: -1- AC_SUBST([NETCDF_LDFLAGS])
-m4trace:configure.ac:376: -1- AC_SUBST_TRACE([NETCDF_LDFLAGS])
-m4trace:configure.ac:376: -1- m4_pattern_allow([^NETCDF_LDFLAGS$])
-m4trace:configure.ac:377: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NETCDF])
-m4trace:configure.ac:377: -1- m4_pattern_allow([^HAVE_NETCDF$])
-m4trace:configure.ac:377: -1- AH_OUTPUT([HAVE_NETCDF], [/* NETCDF enabled */
-@%:@undef HAVE_NETCDF])
-m4trace:configure.ac:390: -1- AC_SUBST([JASPER_DIR])
-m4trace:configure.ac:390: -1- AC_SUBST_TRACE([JASPER_DIR])
-m4trace:configure.ac:390: -1- m4_pattern_allow([^JASPER_DIR$])
-m4trace:configure.ac:403: -1- AC_SUBST([OPENJPEG_DIR])
-m4trace:configure.ac:403: -1- AC_SUBST_TRACE([OPENJPEG_DIR])
-m4trace:configure.ac:403: -1- m4_pattern_allow([^OPENJPEG_DIR$])
-m4trace:configure.ac:413: -1- AC_DEFINE_TRACE_LITERAL([HAVE_JPEG])
-m4trace:configure.ac:413: -1- m4_pattern_allow([^HAVE_JPEG$])
-m4trace:configure.ac:413: -1- AH_OUTPUT([HAVE_JPEG], [/* JPEG enabled */
-@%:@undef HAVE_JPEG])
-m4trace:configure.ac:425: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBOPENJPEG])
-m4trace:configure.ac:425: -1- m4_pattern_allow([^HAVE_LIBOPENJPEG$])
-m4trace:configure.ac:425: -1- AH_OUTPUT([HAVE_LIBOPENJPEG], [/* Define if you have JPEG version 2 "Openjpeg" library */
-@%:@undef HAVE_LIBOPENJPEG])
-m4trace:configure.ac:426: -1- AC_SUBST([LIB_OPENJPEG])
-m4trace:configure.ac:426: -1- AC_SUBST_TRACE([LIB_OPENJPEG])
-m4trace:configure.ac:426: -1- m4_pattern_allow([^LIB_OPENJPEG$])
-m4trace:configure.ac:432: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBJASPER])
-m4trace:configure.ac:432: -1- m4_pattern_allow([^HAVE_LIBJASPER$])
-m4trace:configure.ac:432: -1- AH_OUTPUT([HAVE_LIBJASPER], [/* Define if you have JPEG version 2 "Jasper" library */
-@%:@undef HAVE_LIBJASPER])
-m4trace:configure.ac:433: -1- AC_SUBST([LIB_JASPER])
-m4trace:configure.ac:433: -1- AC_SUBST_TRACE([LIB_JASPER])
-m4trace:configure.ac:433: -1- m4_pattern_allow([^LIB_JASPER$])
-m4trace:configure.ac:460: -1- AC_SUBST([JPEG_TEST])
-m4trace:configure.ac:460: -1- AC_SUBST_TRACE([JPEG_TEST])
-m4trace:configure.ac:460: -1- m4_pattern_allow([^JPEG_TEST$])
-m4trace:configure.ac:475: -1- AH_OUTPUT([HAVE_LIBAEC], [/* Define to 1 if you have the `aec\' library (-laec). */
-@%:@undef HAVE_LIBAEC])
-m4trace:configure.ac:475: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBAEC])
-m4trace:configure.ac:475: -1- m4_pattern_allow([^HAVE_LIBAEC$])
-m4trace:configure.ac:479: -1- AC_SUBST([LIB_AEC])
-m4trace:configure.ac:479: -1- AC_SUBST_TRACE([LIB_AEC])
-m4trace:configure.ac:479: -1- m4_pattern_allow([^LIB_AEC$])
-m4trace:configure.ac:481: -1- AC_SUBST([AEC_DIR])
-m4trace:configure.ac:481: -1- AC_SUBST_TRACE([AEC_DIR])
-m4trace:configure.ac:481: -1- m4_pattern_allow([^AEC_DIR$])
-m4trace:configure.ac:484: -1- AC_SUBST([CCSDS_TEST])
-m4trace:configure.ac:484: -1- AC_SUBST_TRACE([CCSDS_TEST])
-m4trace:configure.ac:484: -1- m4_pattern_allow([^CCSDS_TEST$])
-m4trace:configure.ac:503: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBPNG])
-m4trace:configure.ac:503: -1- m4_pattern_allow([^HAVE_LIBPNG$])
-m4trace:configure.ac:503: -1- AH_OUTPUT([HAVE_LIBPNG], [/* Define to 1 if you have the png library (-lpng) */
-@%:@undef HAVE_LIBPNG])
-m4trace:configure.ac:504: -1- AC_SUBST([LIB_PNG])
-m4trace:configure.ac:504: -1- AC_SUBST_TRACE([LIB_PNG])
-m4trace:configure.ac:504: -1- m4_pattern_allow([^LIB_PNG$])
-m4trace:configure.ac:525: -1- AC_SUBST([PERL_INSTALL_OPTIONS])
-m4trace:configure.ac:525: -1- AC_SUBST_TRACE([PERL_INSTALL_OPTIONS])
-m4trace:configure.ac:525: -1- m4_pattern_allow([^PERL_INSTALL_OPTIONS$])
-m4trace:configure.ac:539: -1- AC_SUBST([PERL])
-m4trace:configure.ac:539: -1- AC_SUBST_TRACE([PERL])
-m4trace:configure.ac:539: -1- m4_pattern_allow([^PERL$])
-m4trace:configure.ac:541: -1- AC_SUBST([PERL])
-m4trace:configure.ac:541: -1- AC_SUBST_TRACE([PERL])
-m4trace:configure.ac:541: -1- m4_pattern_allow([^PERL$])
-m4trace:configure.ac:555: -1- AC_SUBST([PERL_MAKE_OPTIONS])
-m4trace:configure.ac:555: -1- AC_SUBST_TRACE([PERL_MAKE_OPTIONS])
-m4trace:configure.ac:555: -1- m4_pattern_allow([^PERL_MAKE_OPTIONS$])
-m4trace:configure.ac:556: -1- AC_SUBST([GRIB_API_LIB])
-m4trace:configure.ac:556: -1- AC_SUBST_TRACE([GRIB_API_LIB])
-m4trace:configure.ac:556: -1- m4_pattern_allow([^GRIB_API_LIB$])
-m4trace:configure.ac:557: -1- AC_SUBST([GRIB_API_INC])
-m4trace:configure.ac:557: -1- AC_SUBST_TRACE([GRIB_API_INC])
-m4trace:configure.ac:557: -1- m4_pattern_allow([^GRIB_API_INC$])
-m4trace:configure.ac:559: -1- AM_CONDITIONAL([WITH_PERL], [test $with_perl != no])
-m4trace:configure.ac:559: -1- AC_SUBST([WITH_PERL_TRUE])
-m4trace:configure.ac:559: -1- AC_SUBST_TRACE([WITH_PERL_TRUE])
-m4trace:configure.ac:559: -1- m4_pattern_allow([^WITH_PERL_TRUE$])
-m4trace:configure.ac:559: -1- AC_SUBST([WITH_PERL_FALSE])
-m4trace:configure.ac:559: -1- AC_SUBST_TRACE([WITH_PERL_FALSE])
-m4trace:configure.ac:559: -1- m4_pattern_allow([^WITH_PERL_FALSE$])
-m4trace:configure.ac:559: -1- _AM_SUBST_NOTMAKE([WITH_PERL_TRUE])
-m4trace:configure.ac:559: -1- _AM_SUBST_NOTMAKE([WITH_PERL_FALSE])
-m4trace:configure.ac:574: -1- AC_SUBST([PYTHON])
-m4trace:configure.ac:574: -1- AC_SUBST_TRACE([PYTHON])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^PYTHON$])
-m4trace:configure.ac:574: -1- AC_SUBST([PYTHON])
-m4trace:configure.ac:574: -1- AC_SUBST_TRACE([PYTHON])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^PYTHON$])
-m4trace:configure.ac:574: -1- AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
-m4trace:configure.ac:574: -1- AC_SUBST_TRACE([PYTHON_VERSION])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^PYTHON_VERSION$])
-m4trace:configure.ac:574: -1- AC_SUBST([PYTHON_PREFIX], ['${prefix}'])
-m4trace:configure.ac:574: -1- AC_SUBST_TRACE([PYTHON_PREFIX])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^PYTHON_PREFIX$])
-m4trace:configure.ac:574: -1- AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
-m4trace:configure.ac:574: -1- AC_SUBST_TRACE([PYTHON_EXEC_PREFIX])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^PYTHON_EXEC_PREFIX$])
-m4trace:configure.ac:574: -1- AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
-m4trace:configure.ac:574: -1- AC_SUBST_TRACE([PYTHON_PLATFORM])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^PYTHON_PLATFORM$])
-m4trace:configure.ac:574: -1- AC_SUBST([pythondir], [$am_cv_python_pythondir])
-m4trace:configure.ac:574: -1- AC_SUBST_TRACE([pythondir])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^pythondir$])
-m4trace:configure.ac:574: -1- AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
-m4trace:configure.ac:574: -1- AC_SUBST_TRACE([pkgpythondir])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^pkgpythondir$])
-m4trace:configure.ac:574: -1- AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
-m4trace:configure.ac:574: -1- AC_SUBST_TRACE([pyexecdir])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^pyexecdir$])
-m4trace:configure.ac:574: -1- AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
-m4trace:configure.ac:574: -1- AC_SUBST_TRACE([pkgpyexecdir])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^pkgpyexecdir$])
-m4trace:configure.ac:576: -1- AC_SUBST([PYTHON_INCLUDES])
-m4trace:configure.ac:576: -1- AC_SUBST_TRACE([PYTHON_INCLUDES])
-m4trace:configure.ac:576: -1- m4_pattern_allow([^PYTHON_INCLUDES$])
-m4trace:configure.ac:577: -1- AC_SUBST([PYTHON_LDFLAGS])
-m4trace:configure.ac:577: -1- AC_SUBST_TRACE([PYTHON_LDFLAGS])
-m4trace:configure.ac:577: -1- m4_pattern_allow([^PYTHON_LDFLAGS$])
-m4trace:configure.ac:578: -1- AC_SUBST([PYTHON_CFLAGS])
-m4trace:configure.ac:578: -1- AC_SUBST_TRACE([PYTHON_CFLAGS])
-m4trace:configure.ac:578: -1- m4_pattern_allow([^PYTHON_CFLAGS$])
-m4trace:configure.ac:579: -1- AC_SUBST([PYTHON_LIBS])
-m4trace:configure.ac:579: -1- AC_SUBST_TRACE([PYTHON_LIBS])
-m4trace:configure.ac:579: -1- m4_pattern_allow([^PYTHON_LIBS$])
-m4trace:configure.ac:580: -1- AC_SUBST([PYTHON_CONFIG])
-m4trace:configure.ac:580: -1- AC_SUBST_TRACE([PYTHON_CONFIG])
-m4trace:configure.ac:580: -1- m4_pattern_allow([^PYTHON_CONFIG$])
-m4trace:configure.ac:582: -1- AC_SUBST([PYTHON_CONFIG])
-m4trace:configure.ac:582: -1- AC_SUBST_TRACE([PYTHON_CONFIG])
-m4trace:configure.ac:582: -1- m4_pattern_allow([^PYTHON_CONFIG$])
-m4trace:configure.ac:610: -1- AC_SUBST([PYTHON_CHECK])
-m4trace:configure.ac:610: -1- AC_SUBST_TRACE([PYTHON_CHECK])
-m4trace:configure.ac:610: -1- m4_pattern_allow([^PYTHON_CHECK$])
-m4trace:configure.ac:625: -1- AC_SUBST([NUMPY_INCLUDE])
-m4trace:configure.ac:625: -1- AC_SUBST_TRACE([NUMPY_INCLUDE])
-m4trace:configure.ac:625: -1- m4_pattern_allow([^NUMPY_INCLUDE$])
-m4trace:configure.ac:632: -1- AC_SUBST([PYTHON_DATA_HANDLER])
-m4trace:configure.ac:632: -1- AC_SUBST_TRACE([PYTHON_DATA_HANDLER])
-m4trace:configure.ac:632: -1- m4_pattern_allow([^PYTHON_DATA_HANDLER$])
-m4trace:configure.ac:635: -1- AM_CONDITIONAL([WITH_PYTHON], [test x$PYTHON != x])
-m4trace:configure.ac:635: -1- AC_SUBST([WITH_PYTHON_TRUE])
-m4trace:configure.ac:635: -1- AC_SUBST_TRACE([WITH_PYTHON_TRUE])
-m4trace:configure.ac:635: -1- m4_pattern_allow([^WITH_PYTHON_TRUE$])
-m4trace:configure.ac:635: -1- AC_SUBST([WITH_PYTHON_FALSE])
-m4trace:configure.ac:635: -1- AC_SUBST_TRACE([WITH_PYTHON_FALSE])
-m4trace:configure.ac:635: -1- m4_pattern_allow([^WITH_PYTHON_FALSE$])
-m4trace:configure.ac:635: -1- _AM_SUBST_NOTMAKE([WITH_PYTHON_TRUE])
-m4trace:configure.ac:635: -1- _AM_SUBST_NOTMAKE([WITH_PYTHON_FALSE])
-m4trace:configure.ac:636: -1- AM_CONDITIONAL([WITH_FORTRAN], [test x$FORTRAN_MOD != x])
-m4trace:configure.ac:636: -1- AC_SUBST([WITH_FORTRAN_TRUE])
-m4trace:configure.ac:636: -1- AC_SUBST_TRACE([WITH_FORTRAN_TRUE])
-m4trace:configure.ac:636: -1- m4_pattern_allow([^WITH_FORTRAN_TRUE$])
-m4trace:configure.ac:636: -1- AC_SUBST([WITH_FORTRAN_FALSE])
-m4trace:configure.ac:636: -1- AC_SUBST_TRACE([WITH_FORTRAN_FALSE])
-m4trace:configure.ac:636: -1- m4_pattern_allow([^WITH_FORTRAN_FALSE$])
-m4trace:configure.ac:636: -1- _AM_SUBST_NOTMAKE([WITH_FORTRAN_TRUE])
-m4trace:configure.ac:636: -1- _AM_SUBST_NOTMAKE([WITH_FORTRAN_FALSE])
-m4trace:configure.ac:637: -1- AM_CONDITIONAL([CREATING_SHARED_LIBS], [test "x$enable_shared" = xyes])
-m4trace:configure.ac:637: -1- AC_SUBST([CREATING_SHARED_LIBS_TRUE])
-m4trace:configure.ac:637: -1- AC_SUBST_TRACE([CREATING_SHARED_LIBS_TRUE])
-m4trace:configure.ac:637: -1- m4_pattern_allow([^CREATING_SHARED_LIBS_TRUE$])
-m4trace:configure.ac:637: -1- AC_SUBST([CREATING_SHARED_LIBS_FALSE])
-m4trace:configure.ac:637: -1- AC_SUBST_TRACE([CREATING_SHARED_LIBS_FALSE])
-m4trace:configure.ac:637: -1- m4_pattern_allow([^CREATING_SHARED_LIBS_FALSE$])
-m4trace:configure.ac:637: -1- _AM_SUBST_NOTMAKE([CREATING_SHARED_LIBS_TRUE])
-m4trace:configure.ac:637: -1- _AM_SUBST_NOTMAKE([CREATING_SHARED_LIBS_FALSE])
-m4trace:configure.ac:644: -1- AC_SUBST([RM])
-m4trace:configure.ac:644: -1- AC_SUBST_TRACE([RM])
-m4trace:configure.ac:644: -1- m4_pattern_allow([^RM$])
-m4trace:configure.ac:645: -1- AC_SUBST([AR])
-m4trace:configure.ac:645: -1- AC_SUBST_TRACE([AR])
-m4trace:configure.ac:645: -1- m4_pattern_allow([^AR$])
-m4trace:configure.ac:648: -1- AC_SUBST([WARN_PEDANTIC])
-m4trace:configure.ac:648: -1- AC_SUBST_TRACE([WARN_PEDANTIC])
-m4trace:configure.ac:648: -1- m4_pattern_allow([^WARN_PEDANTIC$])
-m4trace:configure.ac:651: -1- AC_SUBST([WERROR])
-m4trace:configure.ac:651: -1- AC_SUBST_TRACE([WERROR])
-m4trace:configure.ac:651: -1- m4_pattern_allow([^WERROR$])
-m4trace:configure.ac:654: -1- AH_OUTPUT([HAVE_LIBM], [/* Define to 1 if you have the `m\' library (-lm). */
-@%:@undef HAVE_LIBM])
-m4trace:configure.ac:654: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBM])
-m4trace:configure.ac:654: -1- m4_pattern_allow([^HAVE_LIBM$])
-m4trace:configure.ac:657: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR\'.
-   */
-@%:@undef HAVE_DIRENT_H])
-m4trace:configure.ac:657: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR\'.
-   */
-@%:@undef HAVE_SYS_NDIR_H])
-m4trace:configure.ac:657: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR\'.
-   */
-@%:@undef HAVE_SYS_DIR_H])
-m4trace:configure.ac:657: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR\'. */
-@%:@undef HAVE_NDIR_H])
-m4trace:configure.ac:658: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
-m4trace:configure.ac:658: -1- m4_pattern_allow([^STDC_HEADERS$])
-m4trace:configure.ac:658: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
-@%:@undef STDC_HEADERS])
-m4trace:configure.ac:659: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the <stddef.h> header file. */
-@%:@undef HAVE_STDDEF_H])
-m4trace:configure.ac:659: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
-@%:@undef HAVE_STDLIB_H])
-m4trace:configure.ac:659: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
-@%:@undef HAVE_STRING_H])
-m4trace:configure.ac:659: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
-@%:@undef HAVE_SYS_PARAM_H])
-m4trace:configure.ac:659: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
-@%:@undef HAVE_SYS_TIME_H])
-m4trace:configure.ac:659: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
-@%:@undef HAVE_UNISTD_H])
-m4trace:configure.ac:659: -1- AH_OUTPUT([HAVE_MATH_H], [/* Define to 1 if you have the <math.h> header file. */
-@%:@undef HAVE_MATH_H])
-m4trace:configure.ac:659: -1- AH_OUTPUT([HAVE_STDARG_H], [/* Define to 1 if you have the <stdarg.h> header file. */
-@%:@undef HAVE_STDARG_H])
-m4trace:configure.ac:659: -1- AH_OUTPUT([HAVE_ASSERT_H], [/* Define to 1 if you have the <assert.h> header file. */
-@%:@undef HAVE_ASSERT_H])
-m4trace:configure.ac:659: -1- AH_OUTPUT([HAVE_CTYPE_H], [/* Define to 1 if you have the <ctype.h> header file. */
-@%:@undef HAVE_CTYPE_H])
-m4trace:configure.ac:659: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the <fcntl.h> header file. */
-@%:@undef HAVE_FCNTL_H])
-m4trace:configure.ac:662: -1- AC_DEFINE_TRACE_LITERAL([size_t])
-m4trace:configure.ac:662: -1- m4_pattern_allow([^size_t$])
-m4trace:configure.ac:662: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
-@%:@undef size_t])
-m4trace:configure.ac:663: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME])
-m4trace:configure.ac:663: -1- m4_pattern_allow([^TIME_WITH_SYS_TIME$])
-m4trace:configure.ac:663: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-@%:@undef TIME_WITH_SYS_TIME])
-m4trace:configure.ac:666: -1- AC_DEFINE_TRACE_LITERAL([CLOSEDIR_VOID])
-m4trace:configure.ac:666: -1- m4_pattern_allow([^CLOSEDIR_VOID$])
-m4trace:configure.ac:666: -1- AH_OUTPUT([CLOSEDIR_VOID], [/* Define to 1 if the `closedir\' function returns void instead of `int\'. */
-@%:@undef CLOSEDIR_VOID])
-m4trace:configure.ac:667: -1- _m4_warn([obsolete], [The macro `AC_TYPE_SIGNAL' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/types.m4:746: AC_TYPE_SIGNAL is expanded from...
-configure.ac:667: the top level])
-m4trace:configure.ac:667: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE])
-m4trace:configure.ac:667: -1- m4_pattern_allow([^RETSIGTYPE$])
-m4trace:configure.ac:667: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */
-@%:@undef RETSIGTYPE])
-m4trace:configure.ac:668: -1- AH_OUTPUT([HAVE_VPRINTF], [/* Define to 1 if you have the `vprintf\' function. */
-@%:@undef HAVE_VPRINTF])
-m4trace:configure.ac:668: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VPRINTF])
-m4trace:configure.ac:668: -1- m4_pattern_allow([^HAVE_VPRINTF$])
-m4trace:configure.ac:668: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOPRNT])
-m4trace:configure.ac:668: -1- m4_pattern_allow([^HAVE_DOPRNT$])
-m4trace:configure.ac:668: -1- AH_OUTPUT([HAVE_DOPRNT], [/* Define to 1 if you don\'t have `vprintf\' but do have `_doprnt.\' */
-@%:@undef HAVE_DOPRNT])
-m4trace:configure.ac:669: -1- AH_OUTPUT([HAVE_BZERO], [/* Define to 1 if you have the `bzero\' function. */
-@%:@undef HAVE_BZERO])
-m4trace:configure.ac:669: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the `gettimeofday\' function. */
-@%:@undef HAVE_GETTIMEOFDAY])
-m4trace:configure.ac:671: -1- AC_SUBST([LINUX_DISTRIBUTION_NAME])
-m4trace:configure.ac:671: -1- AC_SUBST_TRACE([LINUX_DISTRIBUTION_NAME])
-m4trace:configure.ac:671: -1- m4_pattern_allow([^LINUX_DISTRIBUTION_NAME$])
-m4trace:configure.ac:671: -1- AC_SUBST([LINUX_DISTRIBUTION_VERSION])
-m4trace:configure.ac:671: -1- AC_SUBST_TRACE([LINUX_DISTRIBUTION_VERSION])
-m4trace:configure.ac:671: -1- m4_pattern_allow([^LINUX_DISTRIBUTION_VERSION$])
-m4trace:configure.ac:673: -1- AC_CONFIG_FILES([Makefile src/Makefile fortran/Makefile tools/Makefile data/Makefile definitions/Makefile samples/Makefile ifs_samples/grib1/Makefile ifs_samples/grib1_mlgrib2/Makefile ifs_samples/grib1_mlgrib2_ieee64/Makefile tests/Makefile examples/C/Makefile examples/F90/Makefile tigge/Makefile perl/GRIB-API/Makefile.PL perl/Makefile python/Makefile examples/python/Makefile])
-m4trace:configure.ac:673: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments.
-You should run autoupdate.], [])
-m4trace:configure.ac:673: -1- AC_SUBST([LIB@&t at OBJS], [$ac_libobjs])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([LIB@&t at OBJS])
-m4trace:configure.ac:673: -1- m4_pattern_allow([^LIB@&t at OBJS$])
-m4trace:configure.ac:673: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([LTLIBOBJS])
-m4trace:configure.ac:673: -1- m4_pattern_allow([^LTLIBOBJS$])
-m4trace:configure.ac:673: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
-m4trace:configure.ac:673: -1- AC_SUBST([am__EXEEXT_TRUE])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE])
-m4trace:configure.ac:673: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
-m4trace:configure.ac:673: -1- AC_SUBST([am__EXEEXT_FALSE])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE])
-m4trace:configure.ac:673: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
-m4trace:configure.ac:673: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
-m4trace:configure.ac:673: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([top_builddir])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([top_build_prefix])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([srcdir])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([abs_srcdir])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([top_srcdir])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([abs_top_srcdir])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([builddir])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([abs_builddir])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([abs_top_builddir])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([INSTALL])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([MKDIR_P])
-m4trace:configure.ac:673: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
diff --git a/autom4te.cache/traces.2 b/autom4te.cache/traces.2
deleted file mode 100644
index bea41c2..0000000
--- a/autom4te.cache/traces.2
+++ /dev/null
@@ -1,1147 +0,0 @@
-m4trace:aclocal.m4:1284: -1- m4_include([m4/ax_linux_distribution.m4])
-m4trace:aclocal.m4:1285: -1- m4_include([m4/libtool.m4])
-m4trace:aclocal.m4:1286: -1- m4_include([m4/ltoptions.m4])
-m4trace:aclocal.m4:1287: -1- m4_include([m4/ltsugar.m4])
-m4trace:aclocal.m4:1288: -1- m4_include([m4/ltversion.m4])
-m4trace:aclocal.m4:1289: -1- m4_include([m4/lt~obsolete.m4])
-m4trace:aclocal.m4:1290: -1- m4_include([acinclude.m4])
-m4trace:configure.ac:6: -1- AC_INIT([eccodes], [ ], [Software.Support at ecmwf.int])
-m4trace:configure.ac:6: -1- m4_pattern_forbid([^_?A[CHUM]_])
-m4trace:configure.ac:6: -1- m4_pattern_forbid([_AC_])
-m4trace:configure.ac:6: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^AS_FLAGS$])
-m4trace:configure.ac:6: -1- m4_pattern_forbid([^_?m4_])
-m4trace:configure.ac:6: -1- m4_pattern_forbid([^dnl$])
-m4trace:configure.ac:6: -1- m4_pattern_forbid([^_?AS_])
-m4trace:configure.ac:6: -1- AC_SUBST([SHELL])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([SHELL])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^SHELL$])
-m4trace:configure.ac:6: -1- AC_SUBST([PATH_SEPARATOR])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PATH_SEPARATOR$])
-m4trace:configure.ac:6: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME],      ['AC_PACKAGE_NAME'])])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PACKAGE_NAME])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_NAME$])
-m4trace:configure.ac:6: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME],   ['AC_PACKAGE_TARNAME'])])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
-m4trace:configure.ac:6: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION],   ['AC_PACKAGE_VERSION'])])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_VERSION$])
-m4trace:configure.ac:6: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING],    ['AC_PACKAGE_STRING'])])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PACKAGE_STRING])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_STRING$])
-m4trace:configure.ac:6: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
-m4trace:configure.ac:6: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL],       ['AC_PACKAGE_URL'])])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PACKAGE_URL])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_URL$])
-m4trace:configure.ac:6: -1- AC_SUBST([exec_prefix], [NONE])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([exec_prefix])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^exec_prefix$])
-m4trace:configure.ac:6: -1- AC_SUBST([prefix], [NONE])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([prefix])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^prefix$])
-m4trace:configure.ac:6: -1- AC_SUBST([program_transform_name], [s,x,x,])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([program_transform_name])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^program_transform_name$])
-m4trace:configure.ac:6: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([bindir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^bindir$])
-m4trace:configure.ac:6: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([sbindir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^sbindir$])
-m4trace:configure.ac:6: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([libexecdir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^libexecdir$])
-m4trace:configure.ac:6: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([datarootdir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^datarootdir$])
-m4trace:configure.ac:6: -1- AC_SUBST([datadir], ['${datarootdir}'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([datadir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^datadir$])
-m4trace:configure.ac:6: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([sysconfdir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^sysconfdir$])
-m4trace:configure.ac:6: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([sharedstatedir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^sharedstatedir$])
-m4trace:configure.ac:6: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([localstatedir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^localstatedir$])
-m4trace:configure.ac:6: -1- AC_SUBST([includedir], ['${prefix}/include'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([includedir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^includedir$])
-m4trace:configure.ac:6: -1- AC_SUBST([oldincludedir], ['/usr/include'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([oldincludedir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^oldincludedir$])
-m4trace:configure.ac:6: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
-				     ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
-				     ['${datarootdir}/doc/${PACKAGE}'])])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([docdir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^docdir$])
-m4trace:configure.ac:6: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([infodir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^infodir$])
-m4trace:configure.ac:6: -1- AC_SUBST([htmldir], ['${docdir}'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([htmldir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^htmldir$])
-m4trace:configure.ac:6: -1- AC_SUBST([dvidir], ['${docdir}'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([dvidir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^dvidir$])
-m4trace:configure.ac:6: -1- AC_SUBST([pdfdir], ['${docdir}'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([pdfdir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^pdfdir$])
-m4trace:configure.ac:6: -1- AC_SUBST([psdir], ['${docdir}'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([psdir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^psdir$])
-m4trace:configure.ac:6: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([libdir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^libdir$])
-m4trace:configure.ac:6: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([localedir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^localedir$])
-m4trace:configure.ac:6: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([mandir])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^mandir$])
-m4trace:configure.ac:6: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_NAME$])
-m4trace:configure.ac:6: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
-@%:@undef PACKAGE_NAME])
-m4trace:configure.ac:6: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
-m4trace:configure.ac:6: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
-@%:@undef PACKAGE_TARNAME])
-m4trace:configure.ac:6: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_VERSION$])
-m4trace:configure.ac:6: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
-@%:@undef PACKAGE_VERSION])
-m4trace:configure.ac:6: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_STRING$])
-m4trace:configure.ac:6: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
-@%:@undef PACKAGE_STRING])
-m4trace:configure.ac:6: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
-m4trace:configure.ac:6: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
-@%:@undef PACKAGE_BUGREPORT])
-m4trace:configure.ac:6: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_URL$])
-m4trace:configure.ac:6: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
-@%:@undef PACKAGE_URL])
-m4trace:configure.ac:6: -1- AC_SUBST([DEFS])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([DEFS])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^DEFS$])
-m4trace:configure.ac:6: -1- AC_SUBST([ECHO_C])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([ECHO_C])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^ECHO_C$])
-m4trace:configure.ac:6: -1- AC_SUBST([ECHO_N])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([ECHO_N])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^ECHO_N$])
-m4trace:configure.ac:6: -1- AC_SUBST([ECHO_T])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([ECHO_T])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^ECHO_T$])
-m4trace:configure.ac:6: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:6: -1- AC_SUBST([build_alias])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([build_alias])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^build_alias$])
-m4trace:configure.ac:6: -1- AC_SUBST([host_alias])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([host_alias])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^host_alias$])
-m4trace:configure.ac:6: -1- AC_SUBST([target_alias])
-m4trace:configure.ac:6: -1- AC_SUBST_TRACE([target_alias])
-m4trace:configure.ac:6: -1- m4_pattern_allow([^target_alias$])
-m4trace:configure.ac:8: -1- AC_CONFIG_AUX_DIR([config])
-m4trace:configure.ac:10: -1- LT_INIT([shared])
-m4trace:configure.ac:10: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
-m4trace:configure.ac:10: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
-m4trace:configure.ac:10: -1- AC_SUBST([LIBTOOL])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LIBTOOL])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^LIBTOOL$])
-m4trace:configure.ac:10: -1- AC_CANONICAL_HOST
-m4trace:configure.ac:10: -1- AC_CANONICAL_BUILD
-m4trace:configure.ac:10: -1- AC_REQUIRE_AUX_FILE([config.sub])
-m4trace:configure.ac:10: -1- AC_REQUIRE_AUX_FILE([config.guess])
-m4trace:configure.ac:10: -1- AC_SUBST([build], [$ac_cv_build])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([build])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^build$])
-m4trace:configure.ac:10: -1- AC_SUBST([build_cpu], [$[1]])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([build_cpu])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^build_cpu$])
-m4trace:configure.ac:10: -1- AC_SUBST([build_vendor], [$[2]])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([build_vendor])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^build_vendor$])
-m4trace:configure.ac:10: -1- AC_SUBST([build_os])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([build_os])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^build_os$])
-m4trace:configure.ac:10: -1- AC_SUBST([host], [$ac_cv_host])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([host])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^host$])
-m4trace:configure.ac:10: -1- AC_SUBST([host_cpu], [$[1]])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([host_cpu])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^host_cpu$])
-m4trace:configure.ac:10: -1- AC_SUBST([host_vendor], [$[2]])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([host_vendor])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^host_vendor$])
-m4trace:configure.ac:10: -1- AC_SUBST([host_os])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([host_os])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^host_os$])
-m4trace:configure.ac:10: -1- AC_SUBST([CC])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:10: -1- AC_SUBST([CFLAGS])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CFLAGS])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CFLAGS$])
-m4trace:configure.ac:10: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LDFLAGS])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:10: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:10: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:10: -1- AC_SUBST([CC])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:10: -1- AC_SUBST([CC])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:10: -1- AC_SUBST([CC])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:10: -1- AC_SUBST([CC])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:10: -1- AC_SUBST([ac_ct_CC])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([ac_ct_CC])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^ac_ct_CC$])
-m4trace:configure.ac:10: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([EXEEXT])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^EXEEXT$])
-m4trace:configure.ac:10: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([OBJEXT])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^OBJEXT$])
-m4trace:configure.ac:10: -1- AC_SUBST([SED])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([SED])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^SED$])
-m4trace:configure.ac:10: -1- AC_SUBST([GREP])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([GREP])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^GREP$])
-m4trace:configure.ac:10: -1- AC_SUBST([EGREP])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([EGREP])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^EGREP$])
-m4trace:configure.ac:10: -1- AC_SUBST([FGREP])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([FGREP])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^FGREP$])
-m4trace:configure.ac:10: -1- AC_SUBST([GREP])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([GREP])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^GREP$])
-m4trace:configure.ac:10: -1- AC_SUBST([LD])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LD])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^LD$])
-m4trace:configure.ac:10: -1- AC_SUBST([DUMPBIN])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([DUMPBIN])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^DUMPBIN$])
-m4trace:configure.ac:10: -1- AC_SUBST([ac_ct_DUMPBIN])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([ac_ct_DUMPBIN])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
-m4trace:configure.ac:10: -1- AC_SUBST([DUMPBIN])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([DUMPBIN])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^DUMPBIN$])
-m4trace:configure.ac:10: -1- AC_SUBST([NM])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([NM])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^NM$])
-m4trace:configure.ac:10: -1- AC_SUBST([LN_S], [$as_ln_s])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LN_S])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^LN_S$])
-m4trace:configure.ac:10: -1- AC_SUBST([OBJDUMP])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([OBJDUMP])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^OBJDUMP$])
-m4trace:configure.ac:10: -1- AC_SUBST([OBJDUMP])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([OBJDUMP])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^OBJDUMP$])
-m4trace:configure.ac:10: -1- AC_SUBST([DLLTOOL])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([DLLTOOL])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^DLLTOOL$])
-m4trace:configure.ac:10: -1- AC_SUBST([DLLTOOL])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([DLLTOOL])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^DLLTOOL$])
-m4trace:configure.ac:10: -1- AC_SUBST([AR])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([AR])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^AR$])
-m4trace:configure.ac:10: -1- AC_SUBST([ac_ct_AR])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([ac_ct_AR])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^ac_ct_AR$])
-m4trace:configure.ac:10: -1- AC_SUBST([STRIP])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([STRIP])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^STRIP$])
-m4trace:configure.ac:10: -1- AC_SUBST([RANLIB])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([RANLIB])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^RANLIB$])
-m4trace:configure.ac:10: -1- AC_SUBST([AWK])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([AWK])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^AWK$])
-m4trace:configure.ac:10: -1- m4_pattern_allow([LT_OBJDIR])
-m4trace:configure.ac:10: -1- AC_DEFINE_TRACE_LITERAL([LT_OBJDIR])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^LT_OBJDIR$])
-m4trace:configure.ac:10: -1- AH_OUTPUT([LT_OBJDIR], [/* Define to the sub-directory in which libtool stores uninstalled libraries.
-   */
-@%:@undef LT_OBJDIR])
-m4trace:configure.ac:10: -1- LT_SUPPORTED_TAG([CC])
-m4trace:configure.ac:10: -1- AC_SUBST([MANIFEST_TOOL])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([MANIFEST_TOOL])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^MANIFEST_TOOL$])
-m4trace:configure.ac:10: -1- AC_SUBST([DSYMUTIL])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([DSYMUTIL])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^DSYMUTIL$])
-m4trace:configure.ac:10: -1- AC_SUBST([NMEDIT])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([NMEDIT])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^NMEDIT$])
-m4trace:configure.ac:10: -1- AC_SUBST([LIPO])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LIPO])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^LIPO$])
-m4trace:configure.ac:10: -1- AC_SUBST([OTOOL])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([OTOOL])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^OTOOL$])
-m4trace:configure.ac:10: -1- AC_SUBST([OTOOL64])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([OTOOL64])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^OTOOL64$])
-m4trace:configure.ac:10: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
-@%:@undef HAVE_DLFCN_H])
-m4trace:configure.ac:10: -1- AC_SUBST([CPP])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CPP])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:10: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:10: -1- AC_SUBST([CPP])
-m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CPP])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:10: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^STDC_HEADERS$])
-m4trace:configure.ac:10: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
-@%:@undef STDC_HEADERS])
-m4trace:configure.ac:10: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
-@%:@undef HAVE_SYS_TYPES_H])
-m4trace:configure.ac:10: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
-@%:@undef HAVE_SYS_STAT_H])
-m4trace:configure.ac:10: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
-@%:@undef HAVE_STDLIB_H])
-m4trace:configure.ac:10: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
-@%:@undef HAVE_STRING_H])
-m4trace:configure.ac:10: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
-@%:@undef HAVE_MEMORY_H])
-m4trace:configure.ac:10: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
-@%:@undef HAVE_STRINGS_H])
-m4trace:configure.ac:10: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
-@%:@undef HAVE_INTTYPES_H])
-m4trace:configure.ac:10: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
-@%:@undef HAVE_STDINT_H])
-m4trace:configure.ac:10: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
-@%:@undef HAVE_UNISTD_H])
-m4trace:configure.ac:10: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DLFCN_H])
-m4trace:configure.ac:10: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
-m4trace:configure.ac:11: -1- AC_SUBST([LIBTOOL_DEPS])
-m4trace:configure.ac:11: -1- AC_SUBST_TRACE([LIBTOOL_DEPS])
-m4trace:configure.ac:11: -1- m4_pattern_allow([^LIBTOOL_DEPS$])
-m4trace:configure.ac:24: -1- AC_SUBST([ECCODES_MAIN_VERSION])
-m4trace:configure.ac:24: -1- AC_SUBST_TRACE([ECCODES_MAIN_VERSION])
-m4trace:configure.ac:24: -1- m4_pattern_allow([^ECCODES_MAIN_VERSION$])
-m4trace:configure.ac:25: -1- AC_SUBST([ECCODES_VERSION_STR])
-m4trace:configure.ac:25: -1- AC_SUBST_TRACE([ECCODES_VERSION_STR])
-m4trace:configure.ac:25: -1- m4_pattern_allow([^ECCODES_VERSION_STR$])
-m4trace:configure.ac:26: -1- AC_SUBST([ECCODES_MAJOR_VERSION])
-m4trace:configure.ac:26: -1- AC_SUBST_TRACE([ECCODES_MAJOR_VERSION])
-m4trace:configure.ac:26: -1- m4_pattern_allow([^ECCODES_MAJOR_VERSION$])
-m4trace:configure.ac:27: -1- AC_SUBST([ECCODES_MINOR_VERSION])
-m4trace:configure.ac:27: -1- AC_SUBST_TRACE([ECCODES_MINOR_VERSION])
-m4trace:configure.ac:27: -1- m4_pattern_allow([^ECCODES_MINOR_VERSION$])
-m4trace:configure.ac:28: -1- AC_SUBST([ECCODES_PATCH_VERSION])
-m4trace:configure.ac:28: -1- AC_SUBST_TRACE([ECCODES_PATCH_VERSION])
-m4trace:configure.ac:28: -1- m4_pattern_allow([^ECCODES_PATCH_VERSION$])
-m4trace:configure.ac:30: -1- AC_SUBST([ECCODES_CURRENT])
-m4trace:configure.ac:30: -1- AC_SUBST_TRACE([ECCODES_CURRENT])
-m4trace:configure.ac:30: -1- m4_pattern_allow([^ECCODES_CURRENT$])
-m4trace:configure.ac:31: -1- AC_SUBST([ECCODES_REVISION])
-m4trace:configure.ac:31: -1- AC_SUBST_TRACE([ECCODES_REVISION])
-m4trace:configure.ac:31: -1- m4_pattern_allow([^ECCODES_REVISION$])
-m4trace:configure.ac:32: -1- AC_SUBST([ECCODES_AGE])
-m4trace:configure.ac:32: -1- AC_SUBST_TRACE([ECCODES_AGE])
-m4trace:configure.ac:32: -1- m4_pattern_allow([^ECCODES_AGE$])
-m4trace:configure.ac:40: -1- AC_CONFIG_HEADERS([src/config.h])
-m4trace:configure.ac:41: -1- AC_CONFIG_FILES([src/eccodes_version.h])
-m4trace:configure.ac:42: -1- AC_CONFIG_FILES([rpms/eccodes.pc rpms/eccodes.spec rpms/eccodes_f90.pc])
-m4trace:configure.ac:43: -1- AM_INIT_AUTOMAKE([$PACKAGE_NAME], [${PACKAGE_VERSION}], [http://www.ecmwf.int])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
-m4trace:configure.ac:43: -1- AM_AUTOMAKE_VERSION([1.13.4])
-m4trace:configure.ac:43: -1- AC_REQUIRE_AUX_FILE([install-sh])
-m4trace:configure.ac:43: -1- AC_SUBST([INSTALL_PROGRAM])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
-m4trace:configure.ac:43: -1- AC_SUBST([INSTALL_SCRIPT])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
-m4trace:configure.ac:43: -1- AC_SUBST([INSTALL_DATA])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([INSTALL_DATA])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^INSTALL_DATA$])
-m4trace:configure.ac:43: -1- AC_SUBST([am__isrc], [' -I$(srcdir)'])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([am__isrc])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__isrc$])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([am__isrc])
-m4trace:configure.ac:43: -1- AC_SUBST([CYGPATH_W])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([CYGPATH_W])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^CYGPATH_W$])
-m4trace:configure.ac:43: -1- _m4_warn([obsolete], [AM_INIT_AUTOMAKE: two- and three-arguments forms are deprecated.], [aclocal.m4:424: AM_INIT_AUTOMAKE is expanded from...
-configure.ac:43: the top level])
-m4trace:configure.ac:43: -1- AC_SUBST([PACKAGE], [$PACKAGE_NAME])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([PACKAGE])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^PACKAGE$])
-m4trace:configure.ac:43: -1- AC_SUBST([VERSION], [${PACKAGE_VERSION}])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([VERSION])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^VERSION$])
-m4trace:configure.ac:43: -1- AC_REQUIRE_AUX_FILE([missing])
-m4trace:configure.ac:43: -1- AC_SUBST([ACLOCAL])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([ACLOCAL])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^ACLOCAL$])
-m4trace:configure.ac:43: -1- AC_SUBST([AUTOCONF])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([AUTOCONF])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AUTOCONF$])
-m4trace:configure.ac:43: -1- AC_SUBST([AUTOMAKE])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([AUTOMAKE])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AUTOMAKE$])
-m4trace:configure.ac:43: -1- AC_SUBST([AUTOHEADER])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([AUTOHEADER])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AUTOHEADER$])
-m4trace:configure.ac:43: -1- AC_SUBST([MAKEINFO])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([MAKEINFO])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^MAKEINFO$])
-m4trace:configure.ac:43: -1- AC_SUBST([install_sh])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([install_sh])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^install_sh$])
-m4trace:configure.ac:43: -1- AC_SUBST([STRIP])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([STRIP])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^STRIP$])
-m4trace:configure.ac:43: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
-m4trace:configure.ac:43: -1- AC_REQUIRE_AUX_FILE([install-sh])
-m4trace:configure.ac:43: -1- AC_SUBST([MKDIR_P])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([MKDIR_P])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^MKDIR_P$])
-m4trace:configure.ac:43: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([mkdir_p])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^mkdir_p$])
-m4trace:configure.ac:43: -1- AC_SUBST([SET_MAKE])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([SET_MAKE])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^SET_MAKE$])
-m4trace:configure.ac:43: -1- AC_SUBST([am__leading_dot])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([am__leading_dot])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__leading_dot$])
-m4trace:configure.ac:43: -1- AC_SUBST([AMTAR], ['$${TAR-tar}'])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([AMTAR])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AMTAR$])
-m4trace:configure.ac:43: -1- AC_SUBST([am__tar])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([am__tar])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__tar$])
-m4trace:configure.ac:43: -1- AC_SUBST([am__untar])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([am__untar])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__untar$])
-m4trace:configure.ac:43: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([DEPDIR])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^DEPDIR$])
-m4trace:configure.ac:43: -1- AC_SUBST([am__include])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([am__include])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__include$])
-m4trace:configure.ac:43: -1- AC_SUBST([am__quote])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([am__quote])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__quote$])
-m4trace:configure.ac:43: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-m4trace:configure.ac:43: -1- AC_SUBST([AMDEP_TRUE])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([AMDEP_TRUE])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AMDEP_TRUE$])
-m4trace:configure.ac:43: -1- AC_SUBST([AMDEP_FALSE])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([AMDEP_FALSE])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AMDEP_FALSE$])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
-m4trace:configure.ac:43: -1- AC_SUBST([AMDEPBACKSLASH])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([AMDEPBACKSLASH])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
-m4trace:configure.ac:43: -1- AC_SUBST([am__nodep])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([am__nodep])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__nodep$])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([am__nodep])
-m4trace:configure.ac:43: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([CCDEPMODE])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^CCDEPMODE$])
-m4trace:configure.ac:43: -1- AM_CONDITIONAL([am__fastdepCC], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
-m4trace:configure.ac:43: -1- AC_SUBST([am__fastdepCC_TRUE])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
-m4trace:configure.ac:43: -1- AC_SUBST([am__fastdepCC_FALSE])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
-m4trace:configure.ac:43: -1- AM_SILENT_RULES
-m4trace:configure.ac:43: -1- AC_SUBST([AM_V])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([AM_V])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AM_V$])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([AM_V])
-m4trace:configure.ac:43: -1- AC_SUBST([AM_DEFAULT_V])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([AM_DEFAULT_V])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AM_DEFAULT_V$])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V])
-m4trace:configure.ac:43: -1- AC_SUBST([AM_DEFAULT_VERBOSITY])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$])
-m4trace:configure.ac:43: -1- AC_SUBST([AM_BACKSLASH])
-m4trace:configure.ac:43: -1- AC_SUBST_TRACE([AM_BACKSLASH])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^AM_BACKSLASH$])
-m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH])
-m4trace:configure.ac:50: -1- AC_DEFINE_TRACE_LITERAL([ECCODES_MAIN_VERSION])
-m4trace:configure.ac:50: -1- m4_pattern_allow([^ECCODES_MAIN_VERSION$])
-m4trace:configure.ac:50: -1- AH_OUTPUT([ECCODES_MAIN_VERSION], [/* ecCodes version */
-@%:@undef ECCODES_MAIN_VERSION])
-m4trace:configure.ac:51: -1- AC_DEFINE_TRACE_LITERAL([ECCODES_MAJOR_VERSION])
-m4trace:configure.ac:51: -1- m4_pattern_allow([^ECCODES_MAJOR_VERSION$])
-m4trace:configure.ac:51: -1- AH_OUTPUT([ECCODES_MAJOR_VERSION], [/* ecCodes Major release */
-@%:@undef ECCODES_MAJOR_VERSION])
-m4trace:configure.ac:52: -1- AC_DEFINE_TRACE_LITERAL([ECCODES_MINOR_VERSION])
-m4trace:configure.ac:52: -1- m4_pattern_allow([^ECCODES_MINOR_VERSION$])
-m4trace:configure.ac:52: -1- AH_OUTPUT([ECCODES_MINOR_VERSION], [/* ecCodes Minor release */
-@%:@undef ECCODES_MINOR_VERSION])
-m4trace:configure.ac:53: -1- AC_DEFINE_TRACE_LITERAL([ECCODES_REVISION_VERSION])
-m4trace:configure.ac:53: -1- m4_pattern_allow([^ECCODES_REVISION_VERSION$])
-m4trace:configure.ac:53: -1- AH_OUTPUT([ECCODES_REVISION_VERSION], [/* ecCodes Revision release */
-@%:@undef ECCODES_REVISION_VERSION])
-m4trace:configure.ac:55: -1- AC_DEFINE_TRACE_LITERAL([ECCODES_CURRENT])
-m4trace:configure.ac:55: -1- m4_pattern_allow([^ECCODES_CURRENT$])
-m4trace:configure.ac:55: -1- AH_OUTPUT([ECCODES_CURRENT], [/* ecCodes Current ABI version */
-@%:@undef ECCODES_CURRENT])
-m4trace:configure.ac:56: -1- AC_DEFINE_TRACE_LITERAL([ECCODES_REVISION])
-m4trace:configure.ac:56: -1- m4_pattern_allow([^ECCODES_REVISION$])
-m4trace:configure.ac:56: -1- AH_OUTPUT([ECCODES_REVISION], [/* ecCodes Revision ABI version */
-@%:@undef ECCODES_REVISION])
-m4trace:configure.ac:57: -1- AC_DEFINE_TRACE_LITERAL([ECCODES_AGE])
-m4trace:configure.ac:57: -1- m4_pattern_allow([^ECCODES_AGE$])
-m4trace:configure.ac:57: -1- AH_OUTPUT([ECCODES_AGE], [/* ecCodes Age of ABI version */
-@%:@undef ECCODES_AGE])
-m4trace:configure.ac:60: -1- AH_OUTPUT([_LARGE_FILE_API], [/* Needs to be undefined on some AIX */
-@%:@undef _LARGE_FILE_API])
-m4trace:configure.ac:64: -1- AC_SUBST([PERLDIR])
-m4trace:configure.ac:64: -1- AC_SUBST_TRACE([PERLDIR])
-m4trace:configure.ac:64: -1- m4_pattern_allow([^PERLDIR$])
-m4trace:configure.ac:68: -1- AC_SUBST([CC])
-m4trace:configure.ac:68: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:68: -1- AC_SUBST([CFLAGS])
-m4trace:configure.ac:68: -1- AC_SUBST_TRACE([CFLAGS])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^CFLAGS$])
-m4trace:configure.ac:68: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.ac:68: -1- AC_SUBST_TRACE([LDFLAGS])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:68: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:68: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:68: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.ac:68: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:68: -1- AC_SUBST([CC])
-m4trace:configure.ac:68: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:68: -1- AC_SUBST([ac_ct_CC])
-m4trace:configure.ac:68: -1- AC_SUBST_TRACE([ac_ct_CC])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^ac_ct_CC$])
-m4trace:configure.ac:69: -1- AC_SUBST([CPP])
-m4trace:configure.ac:69: -1- AC_SUBST_TRACE([CPP])
-m4trace:configure.ac:69: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:69: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.ac:69: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.ac:69: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:69: -1- AC_SUBST([CPP])
-m4trace:configure.ac:69: -1- AC_SUBST_TRACE([CPP])
-m4trace:configure.ac:69: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:71: -1- AC_SUBST([LN_S], [$as_ln_s])
-m4trace:configure.ac:71: -1- AC_SUBST_TRACE([LN_S])
-m4trace:configure.ac:71: -1- m4_pattern_allow([^LN_S$])
-m4trace:configure.ac:72: -1- AC_SUBST([SET_MAKE])
-m4trace:configure.ac:72: -1- AC_SUBST_TRACE([SET_MAKE])
-m4trace:configure.ac:72: -1- m4_pattern_allow([^SET_MAKE$])
-m4trace:configure.ac:73: -1- AC_SUBST([YACC])
-m4trace:configure.ac:73: -1- AC_SUBST_TRACE([YACC])
-m4trace:configure.ac:73: -1- m4_pattern_allow([^YACC$])
-m4trace:configure.ac:73: -1- AC_SUBST([YACC])
-m4trace:configure.ac:73: -1- AC_SUBST_TRACE([YACC])
-m4trace:configure.ac:73: -1- m4_pattern_allow([^YACC$])
-m4trace:configure.ac:73: -1- AC_SUBST([YFLAGS])
-m4trace:configure.ac:73: -1- AC_SUBST_TRACE([YFLAGS])
-m4trace:configure.ac:73: -1- m4_pattern_allow([^YFLAGS$])
-m4trace:configure.ac:74: -1- AC_SUBST([LEX])
-m4trace:configure.ac:74: -1- AC_SUBST_TRACE([LEX])
-m4trace:configure.ac:74: -1- m4_pattern_allow([^LEX$])
-m4trace:configure.ac:74: -1- AC_SUBST([LEX_OUTPUT_ROOT], [$ac_cv_prog_lex_root])
-m4trace:configure.ac:74: -1- AC_SUBST_TRACE([LEX_OUTPUT_ROOT])
-m4trace:configure.ac:74: -1- m4_pattern_allow([^LEX_OUTPUT_ROOT$])
-m4trace:configure.ac:74: -1- AC_SUBST([LEXLIB])
-m4trace:configure.ac:74: -1- AC_SUBST_TRACE([LEXLIB])
-m4trace:configure.ac:74: -1- m4_pattern_allow([^LEXLIB$])
-m4trace:configure.ac:74: -1- AC_DEFINE_TRACE_LITERAL([YYTEXT_POINTER])
-m4trace:configure.ac:74: -1- m4_pattern_allow([^YYTEXT_POINTER$])
-m4trace:configure.ac:74: -1- AH_OUTPUT([YYTEXT_POINTER], [/* Define to 1 if `lex\' declares `yytext\' as a `char *\' by default, not a
-   `char@<:@@:>@\'. */
-@%:@undef YYTEXT_POINTER])
-m4trace:configure.ac:75: -1- AC_SUBST([F77])
-m4trace:configure.ac:75: -1- AC_SUBST_TRACE([F77])
-m4trace:configure.ac:75: -1- m4_pattern_allow([^F77$])
-m4trace:configure.ac:75: -1- AC_SUBST([FFLAGS])
-m4trace:configure.ac:75: -1- AC_SUBST_TRACE([FFLAGS])
-m4trace:configure.ac:75: -1- m4_pattern_allow([^FFLAGS$])
-m4trace:configure.ac:75: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.ac:75: -1- AC_SUBST_TRACE([LDFLAGS])
-m4trace:configure.ac:75: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:75: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:75: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.ac:75: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:75: -1- AC_SUBST([F77])
-m4trace:configure.ac:75: -1- AC_SUBST_TRACE([F77])
-m4trace:configure.ac:75: -1- m4_pattern_allow([^F77$])
-m4trace:configure.ac:75: -1- AC_SUBST([ac_ct_F77])
-m4trace:configure.ac:75: -1- AC_SUBST_TRACE([ac_ct_F77])
-m4trace:configure.ac:75: -1- m4_pattern_allow([^ac_ct_F77$])
-m4trace:configure.ac:75: -1- LT_SUPPORTED_TAG([F77])
-m4trace:configure.ac:76: -1- AC_SUBST([FC])
-m4trace:configure.ac:76: -1- AC_SUBST_TRACE([FC])
-m4trace:configure.ac:76: -1- m4_pattern_allow([^FC$])
-m4trace:configure.ac:76: -1- AC_SUBST([FCFLAGS])
-m4trace:configure.ac:76: -1- AC_SUBST_TRACE([FCFLAGS])
-m4trace:configure.ac:76: -1- m4_pattern_allow([^FCFLAGS$])
-m4trace:configure.ac:76: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.ac:76: -1- AC_SUBST_TRACE([LDFLAGS])
-m4trace:configure.ac:76: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:76: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:76: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.ac:76: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:76: -1- AC_SUBST([FC])
-m4trace:configure.ac:76: -1- AC_SUBST_TRACE([FC])
-m4trace:configure.ac:76: -1- m4_pattern_allow([^FC$])
-m4trace:configure.ac:76: -1- AC_SUBST([ac_ct_FC])
-m4trace:configure.ac:76: -1- AC_SUBST_TRACE([ac_ct_FC])
-m4trace:configure.ac:76: -1- m4_pattern_allow([^ac_ct_FC$])
-m4trace:configure.ac:76: -1- LT_SUPPORTED_TAG([FC])
-m4trace:configure.ac:91: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [../../lib/autoconf/general.m4:2748: AC_RUN_IFELSE is expanded from...
-acinclude.m4:97: AC_GRIB_PTHREADS is expanded from...
-configure.ac:91: the top level])
-m4trace:configure.ac:92: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [../../lib/autoconf/general.m4:2748: AC_RUN_IFELSE is expanded from...
-acinclude.m4:168: AC_GRIB_LINUX_PTHREADS is expanded from...
-configure.ac:92: the top level])
-m4trace:configure.ac:97: -1- AC_DEFINE_TRACE_LITERAL([GRIB_PTHREADS])
-m4trace:configure.ac:97: -1- m4_pattern_allow([^GRIB_PTHREADS$])
-m4trace:configure.ac:97: -1- AH_OUTPUT([GRIB_PTHREADS], [/* 1->pthreads enabled 0->pthreads disabled */
-@%:@undef GRIB_PTHREADS])
-m4trace:configure.ac:98: -1- AC_DEFINE_TRACE_LITERAL([GRIB_LINUX_PTHREADS])
-m4trace:configure.ac:98: -1- m4_pattern_allow([^GRIB_LINUX_PTHREADS$])
-m4trace:configure.ac:98: -1- AH_OUTPUT([GRIB_LINUX_PTHREADS], [/* 1->pthreads enabled 0->pthreads disabled */
-@%:@undef GRIB_LINUX_PTHREADS])
-m4trace:configure.ac:110: -1- AC_DEFINE_TRACE_LITERAL([GRIB_IBMPOWER67_OPT])
-m4trace:configure.ac:110: -1- m4_pattern_allow([^GRIB_IBMPOWER67_OPT$])
-m4trace:configure.ac:110: -1- AH_OUTPUT([GRIB_IBMPOWER67_OPT], [/* 1->IBM Power6/7 Optimisations enabled 0->IBM Power6/7 Optimisations
-   disabled */
-@%:@undef GRIB_IBMPOWER67_OPT])
-m4trace:configure.ac:117: -1- AM_CONDITIONAL([UPPER_CASE_MOD], [test "x$ac_cv_prog_f90_uppercase_mod" = xyes])
-m4trace:configure.ac:117: -1- AC_SUBST([UPPER_CASE_MOD_TRUE])
-m4trace:configure.ac:117: -1- AC_SUBST_TRACE([UPPER_CASE_MOD_TRUE])
-m4trace:configure.ac:117: -1- m4_pattern_allow([^UPPER_CASE_MOD_TRUE$])
-m4trace:configure.ac:117: -1- AC_SUBST([UPPER_CASE_MOD_FALSE])
-m4trace:configure.ac:117: -1- AC_SUBST_TRACE([UPPER_CASE_MOD_FALSE])
-m4trace:configure.ac:117: -1- m4_pattern_allow([^UPPER_CASE_MOD_FALSE$])
-m4trace:configure.ac:117: -1- _AM_SUBST_NOTMAKE([UPPER_CASE_MOD_TRUE])
-m4trace:configure.ac:117: -1- _AM_SUBST_NOTMAKE([UPPER_CASE_MOD_FALSE])
-m4trace:configure.ac:119: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [../../lib/autoconf/general.m4:2748: AC_RUN_IFELSE is expanded from...
-acinclude.m4:3: AC_IEEE_BE is expanded from...
-configure.ac:119: the top level])
-m4trace:configure.ac:120: -1- AC_DEFINE_TRACE_LITERAL([IEEE_BE])
-m4trace:configure.ac:120: -1- m4_pattern_allow([^IEEE_BE$])
-m4trace:configure.ac:120: -1- AH_OUTPUT([IEEE_BE], [/* 1-> ieee big endian float/double 0->no ieee big endian float/double */
-@%:@undef IEEE_BE])
-m4trace:configure.ac:122: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [../../lib/autoconf/general.m4:2748: AC_RUN_IFELSE is expanded from...
-acinclude.m4:50: AC_IEEE_LE is expanded from...
-configure.ac:122: the top level])
-m4trace:configure.ac:123: -1- AC_DEFINE_TRACE_LITERAL([IEEE_LE])
-m4trace:configure.ac:123: -1- m4_pattern_allow([^IEEE_LE$])
-m4trace:configure.ac:123: -1- AH_OUTPUT([IEEE_LE], [/* 1-> ieee little endian float/double 0->no ieee little endian float/double
-   */
-@%:@undef IEEE_LE])
-m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([IEEE_LE])
-m4trace:configure.ac:132: -1- m4_pattern_allow([^IEEE_LE$])
-m4trace:configure.ac:132: -1- AH_OUTPUT([IEEE_LE], [/* 1-> ieee little endian float/double 0->no ieee little endian float/double
-   */
-@%:@undef IEEE_LE])
-m4trace:configure.ac:133: -1- AC_DEFINE_TRACE_LITERAL([IEEE_BE])
-m4trace:configure.ac:133: -1- m4_pattern_allow([^IEEE_BE$])
-m4trace:configure.ac:133: -1- AH_OUTPUT([IEEE_BE], [/* 1-> ieee big endian float/double 0->no ieee big endian float/double */
-@%:@undef IEEE_BE])
-m4trace:configure.ac:136: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [../../lib/autoconf/general.m4:2748: AC_RUN_IFELSE is expanded from...
-acinclude.m4:241: AC_BIG_ENDIAN is expanded from...
-configure.ac:136: the top level])
-m4trace:configure.ac:137: -1- AC_DEFINE_TRACE_LITERAL([IS_BIG_ENDIAN])
-m4trace:configure.ac:137: -1- m4_pattern_allow([^IS_BIG_ENDIAN$])
-m4trace:configure.ac:137: -1- AH_OUTPUT([IS_BIG_ENDIAN], [/* 1-> big endian 0->little endian */
-@%:@undef IS_BIG_ENDIAN])
-m4trace:configure.ac:140: -1- AC_DEFINE_TRACE_LITERAL([GRIB_INLINE])
-m4trace:configure.ac:140: -1- m4_pattern_allow([^GRIB_INLINE$])
-m4trace:configure.ac:140: -1- AH_OUTPUT([GRIB_INLINE], [/* inline if available */
-@%:@undef GRIB_INLINE])
-m4trace:configure.ac:142: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [../../lib/autoconf/general.m4:2748: AC_RUN_IFELSE is expanded from...
-acinclude.m4:297: AC_ALIGN is expanded from...
-configure.ac:142: the top level])
-m4trace:configure.ac:143: -1- AC_DEFINE_TRACE_LITERAL([GRIB_MEM_ALIGN])
-m4trace:configure.ac:143: -1- m4_pattern_allow([^GRIB_MEM_ALIGN$])
-m4trace:configure.ac:143: -1- AH_OUTPUT([GRIB_MEM_ALIGN], [/* memory alignment required */
-@%:@undef GRIB_MEM_ALIGN])
-m4trace:configure.ac:145: -1- AC_DEFINE_TRACE_LITERAL([POSIX_MEMALIGN])
-m4trace:configure.ac:145: -1- m4_pattern_allow([^POSIX_MEMALIGN$])
-m4trace:configure.ac:145: -1- AH_OUTPUT([POSIX_MEMALIGN], [/* posix_memalign present */
-@%:@undef POSIX_MEMALIGN])
-m4trace:configure.ac:150: -2- AC_DEFINE_TRACE_LITERAL([GRIB_MEM_ALIGN])
-m4trace:configure.ac:150: -2- m4_pattern_allow([^GRIB_MEM_ALIGN$])
-m4trace:configure.ac:150: -2- AH_OUTPUT([GRIB_MEM_ALIGN], [/* memory alignment required */
-@%:@undef GRIB_MEM_ALIGN])
-m4trace:configure.ac:163: -1- AC_DEFINE_TRACE_LITERAL([VECTOR])
-m4trace:configure.ac:163: -1- m4_pattern_allow([^VECTOR$])
-m4trace:configure.ac:163: -1- AH_OUTPUT([VECTOR], [/* vectorised code */
-@%:@undef VECTOR])
-m4trace:configure.ac:168: -2- AC_DEFINE_TRACE_LITERAL([MANAGE_MEM])
-m4trace:configure.ac:168: -2- m4_pattern_allow([^MANAGE_MEM$])
-m4trace:configure.ac:168: -2- AH_OUTPUT([MANAGE_MEM], [/* memory management */
-@%:@undef MANAGE_MEM])
-m4trace:configure.ac:169: -2- AC_DEFINE_TRACE_LITERAL([MANAGE_MEM])
-m4trace:configure.ac:169: -2- m4_pattern_allow([^MANAGE_MEM$])
-m4trace:configure.ac:169: -2- AH_OUTPUT([MANAGE_MEM], [/* memory management */
-@%:@undef MANAGE_MEM])
-m4trace:configure.ac:186: -1- AC_SUBST([DEVEL_RULES])
-m4trace:configure.ac:186: -1- AC_SUBST_TRACE([DEVEL_RULES])
-m4trace:configure.ac:186: -1- m4_pattern_allow([^DEVEL_RULES$])
-m4trace:configure.ac:187: -1- AC_SUBST([GRIB_DEVEL])
-m4trace:configure.ac:187: -1- AC_SUBST_TRACE([GRIB_DEVEL])
-m4trace:configure.ac:187: -1- m4_pattern_allow([^GRIB_DEVEL$])
-m4trace:configure.ac:189: -1- AM_CONDITIONAL([WITH_MARS_TESTS], [test $GRIB_DEVEL -eq 1])
-m4trace:configure.ac:189: -1- AC_SUBST([WITH_MARS_TESTS_TRUE])
-m4trace:configure.ac:189: -1- AC_SUBST_TRACE([WITH_MARS_TESTS_TRUE])
-m4trace:configure.ac:189: -1- m4_pattern_allow([^WITH_MARS_TESTS_TRUE$])
-m4trace:configure.ac:189: -1- AC_SUBST([WITH_MARS_TESTS_FALSE])
-m4trace:configure.ac:189: -1- AC_SUBST_TRACE([WITH_MARS_TESTS_FALSE])
-m4trace:configure.ac:189: -1- m4_pattern_allow([^WITH_MARS_TESTS_FALSE$])
-m4trace:configure.ac:189: -1- _AM_SUBST_NOTMAKE([WITH_MARS_TESTS_TRUE])
-m4trace:configure.ac:189: -1- _AM_SUBST_NOTMAKE([WITH_MARS_TESTS_FALSE])
-m4trace:configure.ac:192: -1- AC_DEFINE_TRACE_LITERAL([_LARGEFILE_SOURCE])
-m4trace:configure.ac:192: -1- m4_pattern_allow([^_LARGEFILE_SOURCE$])
-m4trace:configure.ac:192: -1- AH_OUTPUT([_LARGEFILE_SOURCE], [/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
-@%:@undef _LARGEFILE_SOURCE])
-m4trace:configure.ac:192: -1- AC_DEFINE_TRACE_LITERAL([HAVE_FSEEKO])
-m4trace:configure.ac:192: -1- m4_pattern_allow([^HAVE_FSEEKO$])
-m4trace:configure.ac:192: -1- AH_OUTPUT([HAVE_FSEEKO], [/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
-@%:@undef HAVE_FSEEKO])
-m4trace:configure.ac:200: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS])
-m4trace:configure.ac:200: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$])
-m4trace:configure.ac:200: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */
-@%:@undef _FILE_OFFSET_BITS])
-m4trace:configure.ac:200: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES])
-m4trace:configure.ac:200: -1- m4_pattern_allow([^_LARGE_FILES$])
-m4trace:configure.ac:200: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */
-@%:@undef _LARGE_FILES])
-m4trace:configure.ac:200: -1- AH_OUTPUT([_DARWIN_USE_64_BIT_INODE], [/* Enable large inode numbers on Mac OS X 10.5.  */
-#ifndef _DARWIN_USE_64_BIT_INODE
-# define _DARWIN_USE_64_BIT_INODE 1
-#endif])
-m4trace:configure.ac:203: -1- AC_CANONICAL_HOST
-m4trace:configure.ac:210: -1- AC_SUBST([RPM_HOST_CPU])
-m4trace:configure.ac:210: -1- AC_SUBST_TRACE([RPM_HOST_CPU])
-m4trace:configure.ac:210: -1- m4_pattern_allow([^RPM_HOST_CPU$])
-m4trace:configure.ac:211: -1- AC_SUBST([RPM_HOST_VENDOR])
-m4trace:configure.ac:211: -1- AC_SUBST_TRACE([RPM_HOST_VENDOR])
-m4trace:configure.ac:211: -1- m4_pattern_allow([^RPM_HOST_VENDOR$])
-m4trace:configure.ac:212: -1- AC_SUBST([RPM_HOST_OS])
-m4trace:configure.ac:212: -1- AC_SUBST_TRACE([RPM_HOST_OS])
-m4trace:configure.ac:212: -1- m4_pattern_allow([^RPM_HOST_OS$])
-m4trace:configure.ac:213: -1- AC_SUBST([RPM_CONFIGURE_ARGS])
-m4trace:configure.ac:213: -1- AC_SUBST_TRACE([RPM_CONFIGURE_ARGS])
-m4trace:configure.ac:213: -1- m4_pattern_allow([^RPM_CONFIGURE_ARGS$])
-m4trace:configure.ac:216: -1- AC_SUBST([RPM_RELEASE])
-m4trace:configure.ac:216: -1- AC_SUBST_TRACE([RPM_RELEASE])
-m4trace:configure.ac:216: -1- m4_pattern_allow([^RPM_RELEASE$])
-m4trace:configure.ac:221: -1- AC_SUBST([ECCODES_SAMPLES_PATH])
-m4trace:configure.ac:221: -1- AC_SUBST_TRACE([ECCODES_SAMPLES_PATH])
-m4trace:configure.ac:221: -1- m4_pattern_allow([^ECCODES_SAMPLES_PATH$])
-m4trace:configure.ac:222: -1- AC_SUBST([ECCODES_DEFINITION_PATH])
-m4trace:configure.ac:222: -1- AC_SUBST_TRACE([ECCODES_DEFINITION_PATH])
-m4trace:configure.ac:222: -1- m4_pattern_allow([^ECCODES_DEFINITION_PATH$])
-m4trace:configure.ac:244: -1- AM_CONDITIONAL([UPPER_CASE_MOD], [test "x$ac_cv_prog_f90_uppercase_mod" = xyes])
-m4trace:configure.ac:244: -1- AC_SUBST([UPPER_CASE_MOD_TRUE])
-m4trace:configure.ac:244: -1- AC_SUBST_TRACE([UPPER_CASE_MOD_TRUE])
-m4trace:configure.ac:244: -1- m4_pattern_allow([^UPPER_CASE_MOD_TRUE$])
-m4trace:configure.ac:244: -1- AC_SUBST([UPPER_CASE_MOD_FALSE])
-m4trace:configure.ac:244: -1- AC_SUBST_TRACE([UPPER_CASE_MOD_FALSE])
-m4trace:configure.ac:244: -1- m4_pattern_allow([^UPPER_CASE_MOD_FALSE$])
-m4trace:configure.ac:244: -1- _AM_SUBST_NOTMAKE([UPPER_CASE_MOD_TRUE])
-m4trace:configure.ac:244: -1- _AM_SUBST_NOTMAKE([UPPER_CASE_MOD_FALSE])
-m4trace:configure.ac:249: -1- AM_CONDITIONAL([DEBUG_IN_MOD], [test "x$ac_cv_prog_f90_debug_in_module" = xyes])
-m4trace:configure.ac:249: -1- AC_SUBST([DEBUG_IN_MOD_TRUE])
-m4trace:configure.ac:249: -1- AC_SUBST_TRACE([DEBUG_IN_MOD_TRUE])
-m4trace:configure.ac:249: -1- m4_pattern_allow([^DEBUG_IN_MOD_TRUE$])
-m4trace:configure.ac:249: -1- AC_SUBST([DEBUG_IN_MOD_FALSE])
-m4trace:configure.ac:249: -1- AC_SUBST_TRACE([DEBUG_IN_MOD_FALSE])
-m4trace:configure.ac:249: -1- m4_pattern_allow([^DEBUG_IN_MOD_FALSE$])
-m4trace:configure.ac:249: -1- _AM_SUBST_NOTMAKE([DEBUG_IN_MOD_TRUE])
-m4trace:configure.ac:249: -1- _AM_SUBST_NOTMAKE([DEBUG_IN_MOD_FALSE])
-m4trace:configure.ac:255: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: WARNING:  
-
-  Your Fortran compiler ($FC) does not support linking to dynamic library modules when debug is enabled. This is a known 
-problem with Portland compilers versions 7 and 8, for example. Possible workarounds are:
-
-  - Use a Portland compiler version 10 or higher or a different compiler.
-  - Disable shared libraries (e.g. configure --disable-shared)
-  - Disable debug (e.g. configure FCFLAGS=\"\")
-
-  Compilation of the Fortran module has been disabled
-
-], [])
-m4trace:configure.ac:255: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: WARNING:  
-
-  Your Fortran compiler ($FC) does not support linking to dynamic library modules when debug is enabled. This is a known 
-problem with Portland compilers versions 7 and 8, for example. Possible workarounds are:
-
-  - Use a Portland compiler version 10 or higher or a different compiler.
-  - Disable shared libraries (e.g. configure --disable-shared)
-  - Disable debug (e.g. configure FCFLAGS=\"\")
-
-  Compilation of the Fortran module has been disabled
-
-], [])
-m4trace:configure.ac:273: -1- AC_SUBST([FORTRAN_MOD])
-m4trace:configure.ac:273: -1- AC_SUBST_TRACE([FORTRAN_MOD])
-m4trace:configure.ac:273: -1- m4_pattern_allow([^FORTRAN_MOD$])
-m4trace:configure.ac:275: -1- AC_SUBST([F90_CHECK])
-m4trace:configure.ac:275: -1- AC_SUBST_TRACE([F90_CHECK])
-m4trace:configure.ac:275: -1- m4_pattern_allow([^F90_CHECK$])
-m4trace:configure.ac:283: -1- AC_SUBST([F90_MODULE_FLAG])
-m4trace:configure.ac:283: -1- AC_SUBST_TRACE([F90_MODULE_FLAG])
-m4trace:configure.ac:283: -1- m4_pattern_allow([^F90_MODULE_FLAG$])
-m4trace:configure.ac:298: -1- AC_SUBST([IFS_SAMPLES_DIR])
-m4trace:configure.ac:298: -1- AC_SUBST_TRACE([IFS_SAMPLES_DIR])
-m4trace:configure.ac:298: -1- m4_pattern_allow([^IFS_SAMPLES_DIR$])
-m4trace:configure.ac:310: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBEMOS])
-m4trace:configure.ac:310: -1- m4_pattern_allow([^HAVE_LIBEMOS$])
-m4trace:configure.ac:310: -1- AH_OUTPUT([HAVE_LIBEMOS], [/* Define if you have EMOS library */
-@%:@undef HAVE_LIBEMOS])
-m4trace:configure.ac:328: -1- AC_SUBST([EMOS_LIB])
-m4trace:configure.ac:328: -1- AC_SUBST_TRACE([EMOS_LIB])
-m4trace:configure.ac:328: -1- m4_pattern_allow([^EMOS_LIB$])
-m4trace:configure.ac:335: -1- AC_DEFINE_TRACE_LITERAL([GRIB_TIMER])
-m4trace:configure.ac:335: -1- m4_pattern_allow([^GRIB_TIMER$])
-m4trace:configure.ac:335: -1- AH_OUTPUT([GRIB_TIMER], [/* 1->Timer on 0->Timer off */
-@%:@undef GRIB_TIMER])
-m4trace:configure.ac:337: -1- AC_DEFINE_TRACE_LITERAL([GRIB_TIMER])
-m4trace:configure.ac:337: -1- m4_pattern_allow([^GRIB_TIMER$])
-m4trace:configure.ac:337: -1- AH_OUTPUT([GRIB_TIMER], [/* 1->Timer on 0->Timer off */
-@%:@undef GRIB_TIMER])
-m4trace:configure.ac:346: -1- AC_DEFINE_TRACE_LITERAL([OMP_PACKING])
-m4trace:configure.ac:346: -1- m4_pattern_allow([^OMP_PACKING$])
-m4trace:configure.ac:346: -1- AH_OUTPUT([OMP_PACKING], [/* 1->OpenMP packing 0->single thread packing */
-@%:@undef OMP_PACKING])
-m4trace:configure.ac:348: -1- AC_DEFINE_TRACE_LITERAL([OMP_PACKING])
-m4trace:configure.ac:348: -1- m4_pattern_allow([^OMP_PACKING$])
-m4trace:configure.ac:348: -1- AH_OUTPUT([OMP_PACKING], [/* 1->OpenMP packing 0->single thread packing */
-@%:@undef OMP_PACKING])
-m4trace:configure.ac:376: -1- AC_SUBST([NETCDF_LDFLAGS])
-m4trace:configure.ac:376: -1- AC_SUBST_TRACE([NETCDF_LDFLAGS])
-m4trace:configure.ac:376: -1- m4_pattern_allow([^NETCDF_LDFLAGS$])
-m4trace:configure.ac:377: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NETCDF])
-m4trace:configure.ac:377: -1- m4_pattern_allow([^HAVE_NETCDF$])
-m4trace:configure.ac:377: -1- AH_OUTPUT([HAVE_NETCDF], [/* NETCDF enabled */
-@%:@undef HAVE_NETCDF])
-m4trace:configure.ac:390: -1- AC_SUBST([JASPER_DIR])
-m4trace:configure.ac:390: -1- AC_SUBST_TRACE([JASPER_DIR])
-m4trace:configure.ac:390: -1- m4_pattern_allow([^JASPER_DIR$])
-m4trace:configure.ac:403: -1- AC_SUBST([OPENJPEG_DIR])
-m4trace:configure.ac:403: -1- AC_SUBST_TRACE([OPENJPEG_DIR])
-m4trace:configure.ac:403: -1- m4_pattern_allow([^OPENJPEG_DIR$])
-m4trace:configure.ac:413: -1- AC_DEFINE_TRACE_LITERAL([HAVE_JPEG])
-m4trace:configure.ac:413: -1- m4_pattern_allow([^HAVE_JPEG$])
-m4trace:configure.ac:413: -1- AH_OUTPUT([HAVE_JPEG], [/* JPEG enabled */
-@%:@undef HAVE_JPEG])
-m4trace:configure.ac:425: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBOPENJPEG])
-m4trace:configure.ac:425: -1- m4_pattern_allow([^HAVE_LIBOPENJPEG$])
-m4trace:configure.ac:425: -1- AH_OUTPUT([HAVE_LIBOPENJPEG], [/* Define if you have JPEG version 2 "Openjpeg" library */
-@%:@undef HAVE_LIBOPENJPEG])
-m4trace:configure.ac:426: -1- AC_SUBST([LIB_OPENJPEG])
-m4trace:configure.ac:426: -1- AC_SUBST_TRACE([LIB_OPENJPEG])
-m4trace:configure.ac:426: -1- m4_pattern_allow([^LIB_OPENJPEG$])
-m4trace:configure.ac:432: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBJASPER])
-m4trace:configure.ac:432: -1- m4_pattern_allow([^HAVE_LIBJASPER$])
-m4trace:configure.ac:432: -1- AH_OUTPUT([HAVE_LIBJASPER], [/* Define if you have JPEG version 2 "Jasper" library */
-@%:@undef HAVE_LIBJASPER])
-m4trace:configure.ac:433: -1- AC_SUBST([LIB_JASPER])
-m4trace:configure.ac:433: -1- AC_SUBST_TRACE([LIB_JASPER])
-m4trace:configure.ac:433: -1- m4_pattern_allow([^LIB_JASPER$])
-m4trace:configure.ac:460: -1- AC_SUBST([JPEG_TEST])
-m4trace:configure.ac:460: -1- AC_SUBST_TRACE([JPEG_TEST])
-m4trace:configure.ac:460: -1- m4_pattern_allow([^JPEG_TEST$])
-m4trace:configure.ac:475: -1- AH_OUTPUT([HAVE_LIBAEC], [/* Define to 1 if you have the `aec\' library (-laec). */
-@%:@undef HAVE_LIBAEC])
-m4trace:configure.ac:475: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBAEC])
-m4trace:configure.ac:475: -1- m4_pattern_allow([^HAVE_LIBAEC$])
-m4trace:configure.ac:479: -1- AC_SUBST([LIB_AEC])
-m4trace:configure.ac:479: -1- AC_SUBST_TRACE([LIB_AEC])
-m4trace:configure.ac:479: -1- m4_pattern_allow([^LIB_AEC$])
-m4trace:configure.ac:481: -1- AC_SUBST([AEC_DIR])
-m4trace:configure.ac:481: -1- AC_SUBST_TRACE([AEC_DIR])
-m4trace:configure.ac:481: -1- m4_pattern_allow([^AEC_DIR$])
-m4trace:configure.ac:484: -1- AC_SUBST([CCSDS_TEST])
-m4trace:configure.ac:484: -1- AC_SUBST_TRACE([CCSDS_TEST])
-m4trace:configure.ac:484: -1- m4_pattern_allow([^CCSDS_TEST$])
-m4trace:configure.ac:503: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBPNG])
-m4trace:configure.ac:503: -1- m4_pattern_allow([^HAVE_LIBPNG$])
-m4trace:configure.ac:503: -1- AH_OUTPUT([HAVE_LIBPNG], [/* Define to 1 if you have the png library (-lpng) */
-@%:@undef HAVE_LIBPNG])
-m4trace:configure.ac:504: -1- AC_SUBST([LIB_PNG])
-m4trace:configure.ac:504: -1- AC_SUBST_TRACE([LIB_PNG])
-m4trace:configure.ac:504: -1- m4_pattern_allow([^LIB_PNG$])
-m4trace:configure.ac:525: -1- AC_SUBST([PERL_INSTALL_OPTIONS])
-m4trace:configure.ac:525: -1- AC_SUBST_TRACE([PERL_INSTALL_OPTIONS])
-m4trace:configure.ac:525: -1- m4_pattern_allow([^PERL_INSTALL_OPTIONS$])
-m4trace:configure.ac:539: -1- AC_SUBST([PERL])
-m4trace:configure.ac:539: -1- AC_SUBST_TRACE([PERL])
-m4trace:configure.ac:539: -1- m4_pattern_allow([^PERL$])
-m4trace:configure.ac:541: -1- AC_SUBST([PERL])
-m4trace:configure.ac:541: -1- AC_SUBST_TRACE([PERL])
-m4trace:configure.ac:541: -1- m4_pattern_allow([^PERL$])
-m4trace:configure.ac:555: -1- AC_SUBST([PERL_MAKE_OPTIONS])
-m4trace:configure.ac:555: -1- AC_SUBST_TRACE([PERL_MAKE_OPTIONS])
-m4trace:configure.ac:555: -1- m4_pattern_allow([^PERL_MAKE_OPTIONS$])
-m4trace:configure.ac:556: -1- AC_SUBST([GRIB_API_LIB])
-m4trace:configure.ac:556: -1- AC_SUBST_TRACE([GRIB_API_LIB])
-m4trace:configure.ac:556: -1- m4_pattern_allow([^GRIB_API_LIB$])
-m4trace:configure.ac:557: -1- AC_SUBST([GRIB_API_INC])
-m4trace:configure.ac:557: -1- AC_SUBST_TRACE([GRIB_API_INC])
-m4trace:configure.ac:557: -1- m4_pattern_allow([^GRIB_API_INC$])
-m4trace:configure.ac:559: -1- AM_CONDITIONAL([WITH_PERL], [test $with_perl != no])
-m4trace:configure.ac:559: -1- AC_SUBST([WITH_PERL_TRUE])
-m4trace:configure.ac:559: -1- AC_SUBST_TRACE([WITH_PERL_TRUE])
-m4trace:configure.ac:559: -1- m4_pattern_allow([^WITH_PERL_TRUE$])
-m4trace:configure.ac:559: -1- AC_SUBST([WITH_PERL_FALSE])
-m4trace:configure.ac:559: -1- AC_SUBST_TRACE([WITH_PERL_FALSE])
-m4trace:configure.ac:559: -1- m4_pattern_allow([^WITH_PERL_FALSE$])
-m4trace:configure.ac:559: -1- _AM_SUBST_NOTMAKE([WITH_PERL_TRUE])
-m4trace:configure.ac:559: -1- _AM_SUBST_NOTMAKE([WITH_PERL_FALSE])
-m4trace:configure.ac:574: -1- AC_SUBST([PYTHON])
-m4trace:configure.ac:574: -1- AC_SUBST_TRACE([PYTHON])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^PYTHON$])
-m4trace:configure.ac:574: -1- AC_SUBST([PYTHON])
-m4trace:configure.ac:574: -1- AC_SUBST_TRACE([PYTHON])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^PYTHON$])
-m4trace:configure.ac:574: -1- AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
-m4trace:configure.ac:574: -1- AC_SUBST_TRACE([PYTHON_VERSION])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^PYTHON_VERSION$])
-m4trace:configure.ac:574: -1- AC_SUBST([PYTHON_PREFIX], ['${prefix}'])
-m4trace:configure.ac:574: -1- AC_SUBST_TRACE([PYTHON_PREFIX])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^PYTHON_PREFIX$])
-m4trace:configure.ac:574: -1- AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
-m4trace:configure.ac:574: -1- AC_SUBST_TRACE([PYTHON_EXEC_PREFIX])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^PYTHON_EXEC_PREFIX$])
-m4trace:configure.ac:574: -1- AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
-m4trace:configure.ac:574: -1- AC_SUBST_TRACE([PYTHON_PLATFORM])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^PYTHON_PLATFORM$])
-m4trace:configure.ac:574: -1- AC_SUBST([pythondir], [$am_cv_python_pythondir])
-m4trace:configure.ac:574: -1- AC_SUBST_TRACE([pythondir])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^pythondir$])
-m4trace:configure.ac:574: -1- AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
-m4trace:configure.ac:574: -1- AC_SUBST_TRACE([pkgpythondir])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^pkgpythondir$])
-m4trace:configure.ac:574: -1- AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
-m4trace:configure.ac:574: -1- AC_SUBST_TRACE([pyexecdir])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^pyexecdir$])
-m4trace:configure.ac:574: -1- AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
-m4trace:configure.ac:574: -1- AC_SUBST_TRACE([pkgpyexecdir])
-m4trace:configure.ac:574: -1- m4_pattern_allow([^pkgpyexecdir$])
-m4trace:configure.ac:576: -1- AC_SUBST([PYTHON_INCLUDES])
-m4trace:configure.ac:576: -1- AC_SUBST_TRACE([PYTHON_INCLUDES])
-m4trace:configure.ac:576: -1- m4_pattern_allow([^PYTHON_INCLUDES$])
-m4trace:configure.ac:577: -1- AC_SUBST([PYTHON_LDFLAGS])
-m4trace:configure.ac:577: -1- AC_SUBST_TRACE([PYTHON_LDFLAGS])
-m4trace:configure.ac:577: -1- m4_pattern_allow([^PYTHON_LDFLAGS$])
-m4trace:configure.ac:578: -1- AC_SUBST([PYTHON_CFLAGS])
-m4trace:configure.ac:578: -1- AC_SUBST_TRACE([PYTHON_CFLAGS])
-m4trace:configure.ac:578: -1- m4_pattern_allow([^PYTHON_CFLAGS$])
-m4trace:configure.ac:579: -1- AC_SUBST([PYTHON_LIBS])
-m4trace:configure.ac:579: -1- AC_SUBST_TRACE([PYTHON_LIBS])
-m4trace:configure.ac:579: -1- m4_pattern_allow([^PYTHON_LIBS$])
-m4trace:configure.ac:580: -1- AC_SUBST([PYTHON_CONFIG])
-m4trace:configure.ac:580: -1- AC_SUBST_TRACE([PYTHON_CONFIG])
-m4trace:configure.ac:580: -1- m4_pattern_allow([^PYTHON_CONFIG$])
-m4trace:configure.ac:582: -1- AC_SUBST([PYTHON_CONFIG])
-m4trace:configure.ac:582: -1- AC_SUBST_TRACE([PYTHON_CONFIG])
-m4trace:configure.ac:582: -1- m4_pattern_allow([^PYTHON_CONFIG$])
-m4trace:configure.ac:610: -1- AC_SUBST([PYTHON_CHECK])
-m4trace:configure.ac:610: -1- AC_SUBST_TRACE([PYTHON_CHECK])
-m4trace:configure.ac:610: -1- m4_pattern_allow([^PYTHON_CHECK$])
-m4trace:configure.ac:625: -1- AC_SUBST([NUMPY_INCLUDE])
-m4trace:configure.ac:625: -1- AC_SUBST_TRACE([NUMPY_INCLUDE])
-m4trace:configure.ac:625: -1- m4_pattern_allow([^NUMPY_INCLUDE$])
-m4trace:configure.ac:632: -1- AC_SUBST([PYTHON_DATA_HANDLER])
-m4trace:configure.ac:632: -1- AC_SUBST_TRACE([PYTHON_DATA_HANDLER])
-m4trace:configure.ac:632: -1- m4_pattern_allow([^PYTHON_DATA_HANDLER$])
-m4trace:configure.ac:635: -1- AM_CONDITIONAL([WITH_PYTHON], [test x$PYTHON != x])
-m4trace:configure.ac:635: -1- AC_SUBST([WITH_PYTHON_TRUE])
-m4trace:configure.ac:635: -1- AC_SUBST_TRACE([WITH_PYTHON_TRUE])
-m4trace:configure.ac:635: -1- m4_pattern_allow([^WITH_PYTHON_TRUE$])
-m4trace:configure.ac:635: -1- AC_SUBST([WITH_PYTHON_FALSE])
-m4trace:configure.ac:635: -1- AC_SUBST_TRACE([WITH_PYTHON_FALSE])
-m4trace:configure.ac:635: -1- m4_pattern_allow([^WITH_PYTHON_FALSE$])
-m4trace:configure.ac:635: -1- _AM_SUBST_NOTMAKE([WITH_PYTHON_TRUE])
-m4trace:configure.ac:635: -1- _AM_SUBST_NOTMAKE([WITH_PYTHON_FALSE])
-m4trace:configure.ac:636: -1- AM_CONDITIONAL([WITH_FORTRAN], [test x$FORTRAN_MOD != x])
-m4trace:configure.ac:636: -1- AC_SUBST([WITH_FORTRAN_TRUE])
-m4trace:configure.ac:636: -1- AC_SUBST_TRACE([WITH_FORTRAN_TRUE])
-m4trace:configure.ac:636: -1- m4_pattern_allow([^WITH_FORTRAN_TRUE$])
-m4trace:configure.ac:636: -1- AC_SUBST([WITH_FORTRAN_FALSE])
-m4trace:configure.ac:636: -1- AC_SUBST_TRACE([WITH_FORTRAN_FALSE])
-m4trace:configure.ac:636: -1- m4_pattern_allow([^WITH_FORTRAN_FALSE$])
-m4trace:configure.ac:636: -1- _AM_SUBST_NOTMAKE([WITH_FORTRAN_TRUE])
-m4trace:configure.ac:636: -1- _AM_SUBST_NOTMAKE([WITH_FORTRAN_FALSE])
-m4trace:configure.ac:637: -1- AM_CONDITIONAL([CREATING_SHARED_LIBS], [test "x$enable_shared" = xyes])
-m4trace:configure.ac:637: -1- AC_SUBST([CREATING_SHARED_LIBS_TRUE])
-m4trace:configure.ac:637: -1- AC_SUBST_TRACE([CREATING_SHARED_LIBS_TRUE])
-m4trace:configure.ac:637: -1- m4_pattern_allow([^CREATING_SHARED_LIBS_TRUE$])
-m4trace:configure.ac:637: -1- AC_SUBST([CREATING_SHARED_LIBS_FALSE])
-m4trace:configure.ac:637: -1- AC_SUBST_TRACE([CREATING_SHARED_LIBS_FALSE])
-m4trace:configure.ac:637: -1- m4_pattern_allow([^CREATING_SHARED_LIBS_FALSE$])
-m4trace:configure.ac:637: -1- _AM_SUBST_NOTMAKE([CREATING_SHARED_LIBS_TRUE])
-m4trace:configure.ac:637: -1- _AM_SUBST_NOTMAKE([CREATING_SHARED_LIBS_FALSE])
-m4trace:configure.ac:644: -1- AC_SUBST([RM])
-m4trace:configure.ac:644: -1- AC_SUBST_TRACE([RM])
-m4trace:configure.ac:644: -1- m4_pattern_allow([^RM$])
-m4trace:configure.ac:645: -1- AC_SUBST([AR])
-m4trace:configure.ac:645: -1- AC_SUBST_TRACE([AR])
-m4trace:configure.ac:645: -1- m4_pattern_allow([^AR$])
-m4trace:configure.ac:648: -1- AC_SUBST([WARN_PEDANTIC])
-m4trace:configure.ac:648: -1- AC_SUBST_TRACE([WARN_PEDANTIC])
-m4trace:configure.ac:648: -1- m4_pattern_allow([^WARN_PEDANTIC$])
-m4trace:configure.ac:651: -1- AC_SUBST([WERROR])
-m4trace:configure.ac:651: -1- AC_SUBST_TRACE([WERROR])
-m4trace:configure.ac:651: -1- m4_pattern_allow([^WERROR$])
-m4trace:configure.ac:654: -1- AH_OUTPUT([HAVE_LIBM], [/* Define to 1 if you have the `m\' library (-lm). */
-@%:@undef HAVE_LIBM])
-m4trace:configure.ac:654: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBM])
-m4trace:configure.ac:654: -1- m4_pattern_allow([^HAVE_LIBM$])
-m4trace:configure.ac:657: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR\'.
-   */
-@%:@undef HAVE_DIRENT_H])
-m4trace:configure.ac:657: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR\'.
-   */
-@%:@undef HAVE_SYS_NDIR_H])
-m4trace:configure.ac:657: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR\'.
-   */
-@%:@undef HAVE_SYS_DIR_H])
-m4trace:configure.ac:657: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR\'. */
-@%:@undef HAVE_NDIR_H])
-m4trace:configure.ac:658: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
-m4trace:configure.ac:658: -1- m4_pattern_allow([^STDC_HEADERS$])
-m4trace:configure.ac:658: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
-@%:@undef STDC_HEADERS])
-m4trace:configure.ac:659: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the <stddef.h> header file. */
-@%:@undef HAVE_STDDEF_H])
-m4trace:configure.ac:659: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
-@%:@undef HAVE_STDLIB_H])
-m4trace:configure.ac:659: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
-@%:@undef HAVE_STRING_H])
-m4trace:configure.ac:659: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
-@%:@undef HAVE_SYS_PARAM_H])
-m4trace:configure.ac:659: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
-@%:@undef HAVE_SYS_TIME_H])
-m4trace:configure.ac:659: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
-@%:@undef HAVE_UNISTD_H])
-m4trace:configure.ac:659: -1- AH_OUTPUT([HAVE_MATH_H], [/* Define to 1 if you have the <math.h> header file. */
-@%:@undef HAVE_MATH_H])
-m4trace:configure.ac:659: -1- AH_OUTPUT([HAVE_STDARG_H], [/* Define to 1 if you have the <stdarg.h> header file. */
-@%:@undef HAVE_STDARG_H])
-m4trace:configure.ac:659: -1- AH_OUTPUT([HAVE_ASSERT_H], [/* Define to 1 if you have the <assert.h> header file. */
-@%:@undef HAVE_ASSERT_H])
-m4trace:configure.ac:659: -1- AH_OUTPUT([HAVE_CTYPE_H], [/* Define to 1 if you have the <ctype.h> header file. */
-@%:@undef HAVE_CTYPE_H])
-m4trace:configure.ac:659: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the <fcntl.h> header file. */
-@%:@undef HAVE_FCNTL_H])
-m4trace:configure.ac:662: -1- AC_DEFINE_TRACE_LITERAL([size_t])
-m4trace:configure.ac:662: -1- m4_pattern_allow([^size_t$])
-m4trace:configure.ac:662: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
-@%:@undef size_t])
-m4trace:configure.ac:663: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME])
-m4trace:configure.ac:663: -1- m4_pattern_allow([^TIME_WITH_SYS_TIME$])
-m4trace:configure.ac:663: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-@%:@undef TIME_WITH_SYS_TIME])
-m4trace:configure.ac:666: -1- AC_DEFINE_TRACE_LITERAL([CLOSEDIR_VOID])
-m4trace:configure.ac:666: -1- m4_pattern_allow([^CLOSEDIR_VOID$])
-m4trace:configure.ac:666: -1- AH_OUTPUT([CLOSEDIR_VOID], [/* Define to 1 if the `closedir\' function returns void instead of `int\'. */
-@%:@undef CLOSEDIR_VOID])
-m4trace:configure.ac:667: -1- _m4_warn([obsolete], [The macro `AC_TYPE_SIGNAL' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/types.m4:746: AC_TYPE_SIGNAL is expanded from...
-configure.ac:667: the top level])
-m4trace:configure.ac:667: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE])
-m4trace:configure.ac:667: -1- m4_pattern_allow([^RETSIGTYPE$])
-m4trace:configure.ac:667: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */
-@%:@undef RETSIGTYPE])
-m4trace:configure.ac:668: -1- AH_OUTPUT([HAVE_VPRINTF], [/* Define to 1 if you have the `vprintf\' function. */
-@%:@undef HAVE_VPRINTF])
-m4trace:configure.ac:668: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VPRINTF])
-m4trace:configure.ac:668: -1- m4_pattern_allow([^HAVE_VPRINTF$])
-m4trace:configure.ac:668: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOPRNT])
-m4trace:configure.ac:668: -1- m4_pattern_allow([^HAVE_DOPRNT$])
-m4trace:configure.ac:668: -1- AH_OUTPUT([HAVE_DOPRNT], [/* Define to 1 if you don\'t have `vprintf\' but do have `_doprnt.\' */
-@%:@undef HAVE_DOPRNT])
-m4trace:configure.ac:669: -1- AH_OUTPUT([HAVE_BZERO], [/* Define to 1 if you have the `bzero\' function. */
-@%:@undef HAVE_BZERO])
-m4trace:configure.ac:669: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the `gettimeofday\' function. */
-@%:@undef HAVE_GETTIMEOFDAY])
-m4trace:configure.ac:671: -1- AC_SUBST([LINUX_DISTRIBUTION_NAME])
-m4trace:configure.ac:671: -1- AC_SUBST_TRACE([LINUX_DISTRIBUTION_NAME])
-m4trace:configure.ac:671: -1- m4_pattern_allow([^LINUX_DISTRIBUTION_NAME$])
-m4trace:configure.ac:671: -1- AC_SUBST([LINUX_DISTRIBUTION_VERSION])
-m4trace:configure.ac:671: -1- AC_SUBST_TRACE([LINUX_DISTRIBUTION_VERSION])
-m4trace:configure.ac:671: -1- m4_pattern_allow([^LINUX_DISTRIBUTION_VERSION$])
-m4trace:configure.ac:673: -1- AC_CONFIG_FILES([Makefile src/Makefile fortran/Makefile tools/Makefile data/Makefile definitions/Makefile samples/Makefile ifs_samples/grib1/Makefile ifs_samples/grib1_mlgrib2/Makefile ifs_samples/grib1_mlgrib2_ieee64/Makefile tests/Makefile examples/C/Makefile examples/F90/Makefile tigge/Makefile perl/GRIB-API/Makefile.PL perl/Makefile python/Makefile examples/python/Makefile])
-m4trace:configure.ac:673: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments.
-You should run autoupdate.], [])
-m4trace:configure.ac:673: -1- AC_SUBST([LIB@&t at OBJS], [$ac_libobjs])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([LIB@&t at OBJS])
-m4trace:configure.ac:673: -1- m4_pattern_allow([^LIB@&t at OBJS$])
-m4trace:configure.ac:673: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([LTLIBOBJS])
-m4trace:configure.ac:673: -1- m4_pattern_allow([^LTLIBOBJS$])
-m4trace:configure.ac:673: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
-m4trace:configure.ac:673: -1- AC_SUBST([am__EXEEXT_TRUE])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE])
-m4trace:configure.ac:673: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
-m4trace:configure.ac:673: -1- AC_SUBST([am__EXEEXT_FALSE])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE])
-m4trace:configure.ac:673: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
-m4trace:configure.ac:673: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
-m4trace:configure.ac:673: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([top_builddir])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([top_build_prefix])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([srcdir])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([abs_srcdir])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([top_srcdir])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([abs_top_srcdir])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([builddir])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([abs_builddir])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([abs_top_builddir])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([INSTALL])
-m4trace:configure.ac:673: -1- AC_SUBST_TRACE([MKDIR_P])
-m4trace:configure.ac:673: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
diff --git a/bin/ecbuild b/bin/ecbuild
new file mode 100755
index 0000000..b327cde
--- /dev/null
+++ b/bin/ecbuild
@@ -0,0 +1,424 @@
+#!/bin/bash
+
+set -eua
+
+CMAKE_MIN_REQUIRED=2.8.10
+CMAKE_BUILD_VERSION=3.2.3
+
+usage()
+{
+  echo "Usage: ecbuild [--help] [--version]"
+  exit $1
+}
+
+help()
+{
+    cat <<EOF
+USAGE:
+
+  ecbuild [--help] [--version] [--toolchains]
+  ecbuild [option...] [--] [cmake-argument...] <path-to-source>
+  ecbuild [option...] [--] [cmake-argument...] <path-to-existing-build>
+
+DESCRIPTION:
+
+  ecbuild is a build system based on CMake, but providing a lot of macro's
+  to make it easier to work with. Upon execution,
+  the equivalent cmake command is printed.
+
+  ecbuild/cmake must be called from an out-of-source build directory and
+  forbids in-source builds.
+
+SYNOPSIS:
+
+    --help         Display this help
+    --version      Display ecbuild version
+    --toolchains   Display list of pre-installed toolchains (see below)
+
+
+Available values for "option":
+
+    --cmakebin=<path>
+          Set which cmake binary to use. Default is 'cmake'
+
+    --prefix=<prefix>
+          Set the install path to <prefix>.
+          Equivalent to cmake argument "-DCMAKE_INSTALL_PREFIX=<prefix>"
+
+    --build=<build-type>
+          Set the build-type to <build-type>.
+          Equivalent to cmake argument "-DCMAKE_BUILD_TYPE=<build-type>"
+          <build-type> can be any of:
+             - debug : Lowest optimization level, useful for debugging
+             - release : Highest optimization level, for best performance
+             - bit : Highest optimization level while staying bit-reproducible
+             - ...others depending on project
+
+    --log=<log-level>
+          Set the ecbuild log-level
+          Equivalent to "-DECBUILD_LOG_LEVEL=<log-level>"
+          <log-level> can be any of:
+             - DEBUG
+             - INFO
+             - WARN
+             - ERROR
+             - CRITICAL
+             - OFF
+          Every choice outputs also the log-levels listed below itself
+
+    --static
+          Build static libraries.
+          Equivalent to "-DBUILD_SHARED_LIBS=OFF"
+
+    --dynamic
+          Build dynamic libraries (usually the default).
+          Equivalent to "-DBUILD_SHARED_LIBS=ON"
+
+    --shared     (same option as --dynamic)
+          Build dynamic libraries (usually the default).
+          Equivalent to "-DBUILD_SHARED_LIBS=ON"
+
+    --toolchain=<toolchain>
+          Use a platform specific toolchain, containing settings such
+          as compilation flags, locations of commonly used dependencies.
+          <toolchain> can be the path to a custom toolchain file, or a
+          pre-installed toolchain provided with ecbuild. For a list of
+          pre-installed toolchains, run "ecbuild --toolchains".
+          Equivalent to cmake argument "-DCMAKE_TOOLCHAIN_FILE=<toolchain-file>"
+
+    --cache=<ecbuild-cache-file>    (advanced)
+          A file called "ecbuild-cache.cmake" is generated during configuration.
+          This file can be moved to a safe location, and specified for future
+          builds to speed up checking of compiler/platform capabilities. Note
+          that this is only accelerating fresh builds, as cmake internally
+          caches also. Therefore this option is *not* recommended.
+
+    --build-cmake
+          Automatically download and build CMake version $CMAKE_BUILD_VERSION if the CMake
+          version found does not meet the minimum requirements (version $CMAKE_MIN_REQUIRED
+          is required). Requires an internet connection and may take a while.
+
+    --dryrun
+          Don't actually execute the cmake call, just print what would have
+          been executed.
+
+
+Available values for "cmake-argument":
+
+    Any value that can be usually passed to cmake to (re)configure the build.
+    Typically these values start with "-D".
+        example:  -DENABLE_TESTS=ON  -DENABLE_MPI=OFF  -DECKIT_PATH=...
+
+    They can be explicitly separated from [option...] with a "--", for the case
+    there is a conflicting option with the "cmake" executable, and the latter's
+    option is requested.
+
+------------------------------------------------------------------------
+
+NOTE: When reconfiguring a build, it is only necessary to change the relevant
+options, as everything stays cached. For example:
+  > ecbuild --prefix=PREFIX .
+  > ecbuild -DENABLE_TESTS=ON .
+
+------------------------------------------------------------------------
+
+Compiling:
+
+  To compile the project with <N> threads:
+    > make -j<N>
+
+  To get verbose compilation/linking output:
+    > make VERBOSE=1
+
+Testing:
+
+  To run the project's tests
+    > ctest
+
+  Also check the ctest manual/help for more options on running tests
+
+Installing:
+
+  To install the project in location PREFIX with
+       "--prefix=PREFIX" or
+       "-DCMAKE_INSTALL_PREFIX=PREFIX"
+    > make install
+
+------------------------------------------------------------------------
+ECMWF"
+
+EOF
+    exit $1
+}
+
+INSTALL_DIR="$( cd $( dirname "${BASH_SOURCE[0]}" ) && pwd -P )"
+ECBUILD_MODULE_PATH=""
+# If there is a directory share/ecbuild/cmake relative to the parent directory
+# (as in an install tree), add it to CMAKE_MODULE_PATH
+if [ -d $INSTALL_DIR/../share/ecbuild/cmake ]; then
+  ECBUILD_MODULE_PATH="$( cd "$INSTALL_DIR/../share/ecbuild/cmake" && pwd -P )"
+# If there is a cmake subdirectory relative to the script directory (as in a
+# tarball), add it to CMAKE_MODULE_PATH
+elif [ -d $INSTALL_DIR/../cmake ]; then
+  ECBUILD_MODULE_PATH="$( cd "$INSTALL_DIR/../cmake" && pwd -P )"
+fi
+
+# Fail if we couldn't find ecBuild modules
+if [ ! -f "$ECBUILD_MODULE_PATH/VERSION.cmake" ]; then
+  echo "FATAL: ecBuild modules could not be found in either $INSTALL_DIR/../share/ecbuild/cmake or $INSTALL_DIR/../cmake" >&2
+  exit 1
+fi
+
+ADD_ECBUILD_OPTIONS="-DCMAKE_MODULE_PATH=$ECBUILD_MODULE_PATH"
+
+if [ -d $INSTALL_DIR/../share/ecbuild/toolchains ]; then
+  ECBUILD_TOOLCHAIN_DIR="$( cd "$INSTALL_DIR/../share/ecbuild/toolchains" && pwd -P )"
+elif [ -d $INSTALL_DIR/share/ecbuild/toolchains ]; then
+  ECBUILD_TOOLCHAIN_DIR="$( cd "$INSTALL_DIR/share/ecbuild/toolchains" && pwd -P )"
+fi
+
+version()
+{
+  ecbuild_version=$(cat ${ECBUILD_MODULE_PATH}/VERSION.cmake | grep ECBUILD_VERSION_STR |  perl -p -e 's/.*([\d]\.[\d]\.[\d]).*/\1/' )
+  echo "ecbuild version ${ecbuild_version}"
+  command -v cmake >/dev/null 2>&1 || { exit 0; }
+  cmake --version | head -1
+  exit 0
+}
+
+log()
+{
+  log_level=$(sed 's/.*/\U&/' <<< "$1")
+  ADD_ECBUILD_OPTIONS="$ADD_ECBUILD_OPTIONS -DECBUILD_LOG_LEVEL=${log_level}"
+}
+
+toolchains()
+{
+  if [ -d $ECBUILD_TOOLCHAIN_DIR ]; then
+    cd $ECBUILD_TOOLCHAIN_DIR
+    echo "Available toolchains:"
+    ls | while read fname
+    do
+        echo "  - ${fname%%.*}"
+    done
+    exit 0
+  else
+    echo "No toolchains available."
+    exit 1
+  fi
+}
+
+prefix()
+{
+  ADD_ECBUILD_OPTIONS="$ADD_ECBUILD_OPTIONS -DCMAKE_INSTALL_PREFIX=${1/#\~\//$HOME/}"
+}
+
+toolchain()
+{
+  arg=${1/#\~\//$HOME/}
+  if [ -f $arg ]; then
+    toolchain_file=$arg
+  else
+    if [ -f $ECBUILD_TOOLCHAIN_DIR/$arg.cmake ]; then
+      toolchain_file=$ECBUILD_TOOLCHAIN_DIR/$arg.cmake
+    fi
+  fi
+  if [ -z ${toolchain_file+x} ]; then
+    echo "Error:"
+    echo "   Toolchain [$arg] is not valid: [$arg.cmake] cannot be"
+    echo "   found in [$ECBUILD_TOOLCHAIN_DIR]"
+    exit 1
+  else
+    ADD_ECBUILD_OPTIONS="$ADD_ECBUILD_OPTIONS -DCMAKE_TOOLCHAIN_FILE=${toolchain_file}"
+  fi
+}
+
+cache()
+{
+  arg=$1
+  if [ -f $arg ]; then
+    cache_file=$( cd "$arg" && pwd -P )
+  else
+    echo "Error:"
+    echo "   Cache file [$arg] is not found or is not a file."
+    exit 1
+  fi
+  ADD_ECBUILD_OPTIONS="$ADD_ECBUILD_OPTIONS -DECBUILD_CACHE=${cache_file}"
+}
+
+if test $# -eq 0; then
+    usage 1
+fi
+
+while test $# -gt 0; do
+
+    # Split --option=value in $opt="--option" and $val="value"
+
+    opt=""
+    val=""
+
+    case "$1" in
+    --*=*)
+      opt=`echo "$1" | sed 's/=.*//'`
+      val=`echo "$1" | sed 's/--[_a-zA-Z0-9]*=//'`
+      ;;
+    --*)
+      opt=$1
+      ;;
+    # -D*)
+    #   ADD_ECBUILD_OPTIONS="$ADD_ECBUILD_OPTIONS $1"
+    #   ;;
+    *)
+      break
+      ;;
+    esac
+
+    # echo "debug opt: $opt $val"
+
+    # Parse options
+    case "$opt" in
+      --help)
+        help 0
+  	    ;;
+      --version)
+        version
+        ;;
+      --dryrun)
+        dryrun="yes"
+        ;;
+      --toolchains)
+        toolchains
+        ;;
+      --cmakebin)
+        cmakebin="$val"
+        ;;
+      --prefix)
+        prefix "$val"
+        ;;
+      --build)
+        ADD_ECBUILD_OPTIONS="$ADD_ECBUILD_OPTIONS -DCMAKE_BUILD_TYPE=$val"
+        ;;
+      --log)
+        log $val
+        ;;
+      --static)
+        ADD_ECBUILD_OPTIONS="$ADD_ECBUILD_OPTIONS -DBUILD_SHARED_LIBS=OFF"
+        ;;
+      --dynamic)
+        ADD_ECBUILD_OPTIONS="$ADD_ECBUILD_OPTIONS -DBUILD_SHARED_LIBS=ON"
+        ;;
+      --shared)
+        ADD_ECBUILD_OPTIONS="$ADD_ECBUILD_OPTIONS -DBUILD_SHARED_LIBS=ON"
+        ;;
+      --toolchain)
+        toolchain $val
+        ;;
+      --cache)
+        cache $val
+        ;;
+      --build-cmake)
+        build_cmake="yes"
+        ;;
+      --)
+        shift
+        break
+        ;;
+      *)
+        echo "unknown option: $opt"
+	      usage 1
+        ;;
+    esac
+    shift
+done
+
+# If no arguments remain, set srcARG to "."
+if [ $# -eq 0 ]; then
+  srcARG="."
+fi
+
+src=${srcARG:=""}
+cmake=${cmakebin:=cmake}
+dryrun=${dryrun:=no}
+build_cmake=${build_cmake:=""}
+cmake_found=""
+cmake_version_sufficient=""
+
+
+# Check that version $1 satisfies $2
+# CMake versions have no more than 4 fields
+# (adapted from http://stackoverflow.com/a/25731924/396967)
+version_gte() {
+    [  "$2" = "$(echo -e "$1\n$2" | sort -t '.' -k 1,1 -k 2,2 -k 3,3 -k 4,4 -g | head -n1)" ]
+}
+
+# Check if the cmake version is sufficient
+check_cmake() {
+  # Check if cmake is available
+  if $(command -v $cmake >/dev/null 2>&1); then
+    cmake_found="yes"
+    cmake_version=$($cmake --version | head -n1 | awk '{ print $3 }')
+    echo "Found CMake version $cmake_version" >& 2
+    if version_gte $cmake_version $CMAKE_MIN_REQUIRED; then
+      cmake_version_sufficient="yes"
+    fi
+  fi
+}
+check_cmake
+# Use already built CMake if any
+if [[ ! $cmake_version_sufficient && -x bin/cmake ]]; then
+  echo "Using already built CMake in $PWD/bin/cmake" >&2
+  cmake=bin/cmake
+  check_cmake
+fi
+
+# Build CMake if requested and no sufficient version found
+if [[ ! $cmake_version_sufficient && $build_cmake ]]; then
+  echo "CMake version $CMAKE_MIN_REQUIRED is required but only $cmake_version was found." >&2
+  echo "Building CMake version ${CMAKE_BUILD_VERSION} ..." >&2
+  tarball=cmake-${CMAKE_BUILD_VERSION}.tar.gz
+  if [[ ! -r $tarball ]]; then
+    url=http://www.cmake.org/files/v${CMAKE_BUILD_VERSION:0:3}/$tarball
+    # -N          Download only if the remote version of the file is newer
+    # --continue  Continue an interrupted download
+    # -T 60       Time out a download attempt after 60 seconds
+    # -t 3        Only make 3 download attempts
+    wget -N --continue -T 60 -t 3 $url || {
+      echo "Failed to download CMake release $CMAKE_BUILD_VERSION." >&2
+      echo "Please download from $url" >&2
+      echo "and place $tarball in $PWD" >&2
+      exit 1
+    }
+  fi
+  tar xzf cmake-${CMAKE_BUILD_VERSION}.tar.gz
+  (
+    mkdir -p build_cmake
+    cd build_cmake
+    ../cmake-${CMAKE_BUILD_VERSION}/bootstrap --prefix=.. && make && make install
+  )
+  cmake=bin/cmake
+  check_cmake
+fi
+
+# Fail if we don't have a sufficient CMake
+if [[ ! $cmake_version_sufficient ]]; then
+  if [[ ! $cmake_found ]]; then
+    echo "CMake is required and cannot be found in the PATH." >&2
+  else
+    echo "CMake version $CMAKE_MIN_REQUIRED is required but only $cmake_version was found." >&2
+  fi
+  echo "" >&2
+  echo "  Try 'module load cmake', specify a CMake binary with --cmakebin=/path/to/cmake" >&2
+  echo "  or  let ecbuild download and build CMake with the --build-cmake option." >&2
+  exit 1
+fi
+
+echo ""
+echo "$cmake ${ADD_ECBUILD_OPTIONS} $@ $src"
+echo ""
+
+if [ ${dryrun} == "yes" ]; then
+  echo "[DRYRUN] -- not executing"
+  exit 0
+fi
+
+$cmake ${ADD_ECBUILD_OPTIONS} "$@" $src
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
deleted file mode 100644
index d42a153..0000000
--- a/cmake/CMakeLists.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-file( GLOB_RECURSE ecbuild_support_files  RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*" )
-
-ecbuild_add_resources(  TARGET ${PROJECT_NAME}_ecbuild_support_files
-						SOURCES_PACK
-							${ecbuild_support_files} )
diff --git a/cmake/CheckFortranSourceCompiles.cmake b/cmake/CheckFortranSourceCompiles.cmake
index ad4b91f..4303315 100644
--- a/cmake/CheckFortranSourceCompiles.cmake
+++ b/cmake/CheckFortranSourceCompiles.cmake
@@ -29,7 +29,7 @@
 
 macro(CHECK_FORTRAN_SOURCE_COMPILES SOURCE VAR)
 
-if("${VAR}" MATCHES "^${VAR}$")
+if( ${VAR} MATCHES "^${VAR}$" )
     set(_FAIL_REGEX)
     set(_key)
     foreach(arg ${ARGN})
diff --git a/cmake/FindADSM.cmake b/cmake/FindADSM.cmake
index 76140b6..7af6723 100644
--- a/cmake/FindADSM.cmake
+++ b/cmake/FindADSM.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
diff --git a/cmake/FindAEC.cmake b/cmake/FindAEC.cmake
index 70a63b1..8a59037 100644
--- a/cmake/FindAEC.cmake
+++ b/cmake/FindAEC.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -14,8 +14,6 @@
 #  AEC_INCLUDE_DIRS - The AEC include directories
 #  AEC_LIBRARIES - The libraries needed to use AEC
 
-ecbuild_add_extra_search_paths( aec )
-
 if( DEFINED AEC_PATH )
     find_path( AEC_INCLUDE_DIR szlib.h    PATHS ${AEC_PATH}/include PATH_SUFFIXES aec NO_DEFAULT_PATH )
     find_library( AEC_LIBRARY  NAMES aec  PATHS ${AEC_PATH}/lib     PATH_SUFFIXES aec NO_DEFAULT_PATH )
diff --git a/cmake/FindAIO.cmake b/cmake/FindAIO.cmake
index 61fdcc0..c27b795 100644
--- a/cmake/FindAIO.cmake
+++ b/cmake/FindAIO.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
diff --git a/cmake/FindArmadillo.cmake b/cmake/FindArmadillo.cmake
index ba14e2e..a3628a5 100644
--- a/cmake/FindArmadillo.cmake
+++ b/cmake/FindArmadillo.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
@@ -6,19 +6,28 @@
 # granted to it by virtue of its status as an intergovernmental organisation nor
 # does it submit to any jurisdiction.
 
-ecbuild_add_extra_search_paths( armadillo )
-
-IF( NOT DEFINED ARMADILLO_PATH AND NOT "$ENV{ARMADILLO_PATH}" STREQUAL "" )
-  SET( ARMADILLO_PATH "$ENV{ARMADILLO_PATH}" )
-ENDIF()
-
-if( DEFINED ARMADILLO_PATH )
-        find_path(ARMADILLO_INCLUDE_DIR ARMADILLO.h PATHS ${ARMADILLO_PATH}/include PATH_SUFFIXES ARMADILLO  NO_DEFAULT_PATH)
-        find_library(ARMADILLO_LIBRARY  ARMADILLO   PATHS ${ARMADILLO_PATH}/lib     PATH_SUFFIXES ARMADILLO  NO_DEFAULT_PATH)
-endif()
-
+# - Try to find Armadillo
+# Once done this will define
+#
+#  ARMADILLO_FOUND         - system has Armadillo
+#  ARMADILLO_INCLUDE_DIRS  - the Armadillo include directory
+#  ARMADILLO_LIBRARIES     - the Armadillo library
+#
+# The following paths will be searched with priority if set in CMake or env
+#
+#  ARMADILLO_PATH          - prefix path of the Armadillo installation
+
+# Search with priority for ARMADILLO_PATH if given as CMake or env var
+find_path(ARMADILLO_INCLUDE_DIR armadillo
+          PATHS ${ARMADILLO_PATH} ENV ARMADILLO_PATH
+          PATH_SUFFIXES include NO_DEFAULT_PATH)
 find_path(ARMADILLO_INCLUDE_DIR  armadillo PATH_SUFFIXES include )
-find_library( ARMADILLO_LIBRARY  armadillo   PATH_SUFFIXES lib )
+
+# Search with priority for ARMADILLO_PATH if given as CMake or env var
+find_library(ARMADILLO_LIBRARY armadillo
+             PATHS ${ARMADILLO_PATH} ENV ARMADILLO_PATH
+             PATH_SUFFIXES lib64 lib NO_DEFAULT_PATH)
+find_library( ARMADILLO_LIBRARY  armadillo   PATH_SUFFIXES lib64 lib )
 
 set( ARMADILLO_LIBRARIES    ${ARMADILLO_LIBRARY} )
 set( ARMADILLO_INCLUDE_DIRS ${ARMADILLO_INCLUDE_DIR} )
diff --git a/cmake/FindCMath.cmake b/cmake/FindCMath.cmake
index 7cf6f58..cf80f85 100644
--- a/cmake/FindCMath.cmake
+++ b/cmake/FindCMath.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
diff --git a/cmake/FindDl.cmake b/cmake/FindDl.cmake
index 305fff0..30db9c6 100644
--- a/cmake/FindDl.cmake
+++ b/cmake/FindDl.cmake
@@ -1,4 +1,4 @@
-# © Copyright 1996-2014 ECMWF.
+# © Copyright 1996-2015 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. 
diff --git a/cmake/FindEMOS.cmake b/cmake/FindEMOS.cmake
index 8472b0a..70028ca 100644
--- a/cmake/FindEMOS.cmake
+++ b/cmake/FindEMOS.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
@@ -12,8 +12,6 @@
 #  EMOS_INCLUDE_DIRS - The EMOS include directories
 #  EMOS_LIBRARIES - The libraries needed to use EMOS
 
-ecbuild_add_extra_search_paths( libemos )
-
 if( NOT DEFINED EMOS_PATH AND DEFINED $ENV{EMOS_PATH} )
 	set( EMOS_PATH $ENV{EMOS_PATH} )
 endif()
diff --git a/cmake/FindEcLib.cmake b/cmake/FindEcLib.cmake
deleted file mode 100644
index 5799c85..0000000
--- a/cmake/FindEcLib.cmake
+++ /dev/null
@@ -1,49 +0,0 @@
-# (C) Copyright 1996-2014 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.
-
-# - Try to find EcLib
-# Once done this will define
-#  ECLIB_FOUND - System has ECLIB
-#  ECLIB_INCLUDE_DIRS - The ECLIB include directories
-#  ECLIB_LIBRARIES - The libraries needed to use ECLIB
-
-# skip if ECLIB is already found or if has is built inside
-
-if( NOT ECLIB_FOUND )
-
-    # find external eclib
-
-    set( _ENV_ECLIB_PATH "$ENV{ECLIB_PATH}" )
-    if( NOT DEFINED ECLIB_PATH AND _ENV_ECLIB_PATH )
-        set( ECLIB_PATH ${_ENV_ECLIB_PATH} )
-    endif()
-
-    if( DEFINED ECLIB_PATH )
-        find_path(ECLIB_INCLUDE_DIR NAMES eclib_version.h PATHS ${ECLIB_PATH} ${ECLIB_PATH}/include PATH_SUFFIXES eclib  NO_DEFAULT_PATH)
-        find_library(ECLIB_LIBRARY  NAMES Ec              PATHS ${ECLIB_PATH} ${ECLIB_PATH}/lib     PATH_SUFFIXES eclib  NO_DEFAULT_PATH)
-    endif()
-    
-    find_path(ECLIB_INCLUDE_DIR NAMES eclib_version.h PATH_SUFFIXES eclib )
-    find_library( ECLIB_LIBRARY NAMES Ec              PATH_SUFFIXES eclib )
-
-    include(FindPackageHandleStandardArgs)
-    
-    # handle the QUIETLY and REQUIRED arguments and set ECLIB_FOUND to TRUE
-    # if all listed variables are TRUE
-    find_package_handle_standard_args(ECLIB  DEFAULT_MSG
-                                      ECLIB_LIBRARY ECLIB_INCLUDE_DIR )
-    
-    mark_as_advanced(ECLIB_INCLUDE_DIR ECLIB_LIBRARY )
-
-    set( ECLIB_LIBRARIES    ${ECLIB_LIBRARY} )
-    set( ECLIB_INCLUDE_DIRS ${ECLIB_INCLUDE_DIR} )
-
-    debug_var( ECLIB_LIBRARIES )
-    debug_var( ECLIB_INCLUDE_DIRS )
-
-endif()
diff --git a/cmake/FindEcregrid.cmake b/cmake/FindEcregrid.cmake
deleted file mode 100644
index 3ddf732..0000000
--- a/cmake/FindEcregrid.cmake
+++ /dev/null
@@ -1,48 +0,0 @@
-# (C) Copyright 1996-2014 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.
-
-# - Try to find ECREGRID
-# Once done this will define
-#  ECREGRID_FOUND - System has ECREGRID
-#  ECREGRID_INCLUDE_DIRS - The ECREGRID include directories
-#  ECREGRID_LIBRARIES - The libraries needed to use ECREGRID
-#  ECREGRID_DEFINITIONS - Compiler switches required for using ECREGRID
-
-option( WITH_ECREGRID "try to find scin installation" ON )
-
-# skip if ECREGRID is already found or if has is built inside
-
-if( NOT ECREGRID_FOUND AND WITH_ECREGRID )
-
-    if( NOT DEFINED ECREGRID_PATH AND NOT "$ENV{ECREGRID_PATH}" STREQUAL "" )
-        list( APPEND ECREGRID_PATH "$ENV{ECREGRID_PATH}" )
-    endif()
-
-    if( DEFINED ECREGRID_PATH )
-        find_path(ECREGRID_INCLUDE_DIR NAMES scin_api.h PATHS ${ECREGRID_PATH} ${ECREGRID_PATH}/include PATH_SUFFIXES scin_api  NO_DEFAULT_PATH )
-        find_library(ECREGRID_LIBRARY  NAMES scin       PATHS ${ECREGRID_PATH} ${ECREGRID_PATH}/lib     PATH_SUFFIXES scin      NO_DEFAULT_PATH )
-    endif()
-    
-    find_path(ECREGRID_INCLUDE_DIR NAMES scin_api.h PATH_SUFFIXES scin_api )
-    find_library( ECREGRID_LIBRARY NAMES scin       PATH_SUFFIXES scin     )
-    
-    include(FindPackageHandleStandardArgs)
-    
-    # handle the QUIETLY and REQUIRED arguments and set ECREGRID_FOUND to TRUE
-    # if all listed variables are TRUE
-    find_package_handle_standard_args(Scin  DEFAULT_MSG
-                                      ECREGRID_LIBRARY ECREGRID_INCLUDE_DIR)
-
-    if( ECREGRID_FOUND )
-        set( ECREGRID_LIBRARIES    ${ECREGRID_LIBRARY} )
-        set( ECREGRID_INCLUDE_DIRS ${ECREGRID_INCLUDE_DIR} )
-    endif()
-    
-    mark_as_advanced(ECREGRID_INCLUDE_DIR ECREGRID_LIBRARY )
-    
-endif()
diff --git a/cmake/FindFDB.cmake b/cmake/FindFDB.cmake
index 6624544..9608a54 100644
--- a/cmake/FindFDB.cmake
+++ b/cmake/FindFDB.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
diff --git a/cmake/FindHPSS.cmake b/cmake/FindHPSS.cmake
index 50f95cc..a96b8d4 100644
--- a/cmake/FindHPSS.cmake
+++ b/cmake/FindHPSS.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
diff --git a/cmake/FindLEX.cmake b/cmake/FindLEX.cmake
index 34ea36c..00335c2 100644
--- a/cmake/FindLEX.cmake
+++ b/cmake/FindLEX.cmake
@@ -44,7 +44,7 @@
 # This file is based on the FindFLEX CMake macro, and adapted by ECMWF
 
 #=============================================================================
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
diff --git a/cmake/FindLegacyFDB.cmake b/cmake/FindLegacyFDB.cmake
index 0136299..f461a0e 100644
--- a/cmake/FindLegacyFDB.cmake
+++ b/cmake/FindLegacyFDB.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
diff --git a/cmake/FindLibGFortran.cmake b/cmake/FindLibGFortran.cmake
index bf9e168..200ffcb 100644
--- a/cmake/FindLibGFortran.cmake
+++ b/cmake/FindLibGFortran.cmake
@@ -1,4 +1,4 @@
-# © Copyright 1996-2014 ECMWF.
+# © Copyright 1996-2015 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. 
diff --git a/cmake/FindLibIFort.cmake b/cmake/FindLibIFort.cmake
new file mode 100644
index 0000000..e1d82ee
--- /dev/null
+++ b/cmake/FindLibIFort.cmake
@@ -0,0 +1,47 @@
+# © Copyright 1996-2015 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.
+
+# date:   July 2015
+# author: Florian Rathgeber
+
+###############################################################################
+
+# - Try to find Intel Fortran (ifort) runtime libraries libifcore and libifport
+# Once done this will define
+#
+#  LIBIFORT_FOUND   - system has Intel Fortran (ifort) runtime libraries
+#  IFORT_LIBRARIES  - the Intel Fortran (ifort) runtime libraries
+#
+# The following paths will be searched with priority if set in CMake or env
+#
+#  INTEL_PATH       - prefix path of the Intel installation
+#
+# Otherwise the libraries are assumed to be on LIBRARY_PATH or LD_LIBRARY_PATH
+
+# FIXME: might need to add further libraries in future, see
+# http://nf.nci.org.au/facilities/software/Compilers/Intel8/doc/f_ug1/files_32.htm
+
+# Search with priority for INTEL_PATH if given as CMake or env var
+find_library( IFORT_LIB_CORE ifcore PATHS ${INTEL_PATH} ENV INTEL_PATH
+              PATH_SUFFIXES lib/intel64 compiler/lib/intel64 NO_DEFAULT_PATH )
+find_library( IFORT_LIB_PORT ifport PATHS ${INTEL_PATH} ENV INTEL_PATH
+              PATH_SUFFIXES lib/intel64 compiler/lib/intel64 NO_DEFAULT_PATH )
+
+# Otherwise, search LIBRARY_PATH and LD_LIBRARY_PATH
+find_library( IFORT_LIB_CORE ifcore PATHS ENV LIBRARY_PATH LD_LIBRARY_PATH )
+find_library( IFORT_LIB_PORT ifport PATHS ENV LIBRARY_PATH LD_LIBRARY_PATH )
+
+mark_as_advanced( IFORT_LIB_CORE IFORT_LIB_PORT )
+
+if( IFORT_LIB_CORE AND IFORT_LIB_PORT )
+  set( IFORT_LIBRARIES ${IFORT_LIB_CORE} ${IFORT_LIB_PORT} )
+endif()
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args( LIBIFORT DEFAULT_MSG IFORT_LIBRARIES )
diff --git a/cmake/FindMKL.cmake b/cmake/FindMKL.cmake
new file mode 100644
index 0000000..fe182a4
--- /dev/null
+++ b/cmake/FindMKL.cmake
@@ -0,0 +1,77 @@
+# (C) Copyright 1996-2015 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.
+
+# - Try to find MKL
+# Once done this will define
+#
+#  MKL_FOUND         - system has Intel MKL
+#  MKL_INCLUDE_DIRS  - the MKL include directories
+#  MKL_LIBRARIES     - link these to use MKL
+#
+# The following paths will be searched with priority if set in CMake or env
+#
+#  MKL_PATH          - root directory of the MKL installation
+#  MKL_ROOT          - root directory of the MKL installation
+
+option( MKL_PARALLEL "if mkl shoudl be parallel" OFF )
+
+if( MKL_PARALLEL )
+
+  set( __mkl_lib_par  MKL_LIB_INTEL_THREAD )
+  set( __mkl_lib_name mkl_intel_thread )
+
+  find_package(Threads)
+
+else()
+
+  set( __mkl_lib_par MKL_LIB_SEQUENTIAL )
+  set( __mkl_lib_name mkl_sequential )
+
+endif()
+
+# Search with priority for MKL_ROOT and MKL_PATH if set in CMake or env
+find_path(MKL_INCLUDE_DIR mkl.h
+          PATHS ${MKL_PATH} ${MKL_ROOT} ENV MKL_PATH MKL_ROOT
+          PATH_SUFFIXES include NO_DEFAULT_PATH)
+find_path(MKL_INCLUDE_DIR mkl.h
+          PATH_SUFFIXES include)
+
+if( MKL_INCLUDE_DIR ) # use include dir to find libs
+
+  set( MKL_INCLUDE_DIRS ${MKL_INCLUDE_DIR} )
+
+  if( CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" )
+    get_filename_component( MKL_LIB_PATH ${MKL_INCLUDE_DIR}/../lib/intel64 ABSOLUTE )
+    set( __libsfx _lp64 )
+  else()
+    get_filename_component( MKL_LIB_PATH ${MKL_INCLUDE_DIR}/../lib/ia32 ABSOLUTE )
+    set( __libsfx "" )
+  endif()
+
+  message( STATUS "ICC_LIB_PATH ${ICC_LIB_PATH}" )
+
+  find_library( MKL_LIB_INTEL         NAMES mkl_intel${__libsfx} PATHS ${MKL_LIB_PATH} )
+  find_library( ${__mkl_lib_par}      NAMES ${__mkl_lib_name} PATHS ${MKL_LIB_PATH} )
+  find_library( MKL_LIB_CORE          NAMES mkl_core PATHS ${MKL_LIB_PATH} )
+
+  if( MKL_PARALLEL )
+    find_library( MKL_LIB_IOMP5  NAMES iomp5 PATHS ${MKL_LIB_PATH} )
+  endif()
+
+  if( MKL_LIB_INTEL AND ${__mkl_lib_par} AND MKL_LIB_CORE )
+    set( MKL_LIBRARIES ${MKL_LIB_INTEL} ${${__mkl_lib_par}} ${MKL_LIB_CORE} ${MKL_LIB_IOMP5} ${CMAKE_THREAD_LIBS_INIT} )
+  endif()
+
+endif()
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args( MKL DEFAULT_MSG
+                                   MKL_LIBRARIES MKL_INCLUDE_DIRS )
+
+mark_as_advanced( MKL_INCLUDE_DIR MKL_LIB_LAPACK MKL_LIB_INTEL MKL_LIB_SEQUENTIAL MKL_LIB_CORE )
diff --git a/cmake/FindNDBM.cmake b/cmake/FindNDBM.cmake
index 21cf1cf..5203ee9 100644
--- a/cmake/FindNDBM.cmake
+++ b/cmake/FindNDBM.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
diff --git a/cmake/FindNetCDF.cmake b/cmake/FindNetCDF.cmake
index 99ead8d..89af114 100644
--- a/cmake/FindNetCDF.cmake
+++ b/cmake/FindNetCDF.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -23,7 +23,7 @@
 
 # default is netcdf4
 if( NetCDF_FIND_VERSION STREQUAL "3" )
-    set( PREFER_NETCDF3 1 )
+  set( PREFER_NETCDF3 1 )
 endif()
 
 if( NOT PREFER_NETCDF3 )
@@ -40,87 +40,88 @@ set( NETCDF_FIND_COMPONENTS ${NetCDF_FIND_COMPONENTS} )
 list( APPEND NETCDF_FIND_COMPONENTS C )
 
 if( NETCDF_CXX )
-    list( APPEND NETCDF_FIND_COMPONENTS CXX )
+  ecbuild_debug( "FindNetCDF: also looking for C++ libraries" )
+  list( APPEND NETCDF_FIND_COMPONENTS CXX )
 endif()
 
 if( NETCDF_Fortran OR NETCDF_FORTRAN OR NETCDF_F90 )
-    list( APPEND NETCDF_FIND_COMPONENTS FORTRAN F90 )
+  ecbuild_debug( "FindNetCDF: also looking for Fortran libraries" )
+  list( APPEND NETCDF_FIND_COMPONENTS FORTRAN F90 )
 endif()
 
 list(FIND NETCDF_FIND_COMPONENTS "FORTRAN" _index)
 if(${_index} GREATER -1)
-    list( APPEND NETCDF_FIND_COMPONENTS F90 )
+  list( APPEND NETCDF_FIND_COMPONENTS F90 )
 endif()
 
 list (FIND NETCDF_FIND_COMPONENTS "F90" _index)
 if(${_index} GREATER -1)
-    list( APPEND NETCDF_FIND_COMPONENTS FORTRAN )
+  list( APPEND NETCDF_FIND_COMPONENTS FORTRAN )
 endif()
 
 list(FIND NETCDF_FIND_COMPONENTS "Fortran" _index)
 if(${_index} GREATER -1)
-    list( REMOVE_ITEM NETCDF_FIND_COMPONENTS Fortran )
-    list( APPEND NETCDF_FIND_COMPONENTS FORTRAN F90 )
+  list( REMOVE_ITEM NETCDF_FIND_COMPONENTS Fortran )
+  list( APPEND NETCDF_FIND_COMPONENTS FORTRAN F90 )
 endif()
 
 list( REMOVE_DUPLICATES NETCDF_FIND_COMPONENTS )
+ecbuild_debug( "FindNetCDF: looking for components ${NETCDF_FIND_COMPONENTS}" )
 
 ### NetCDF4
 
 if( PREFER_NETCDF4 )
 
-    ## hdf5
+  ecbuild_debug( "FindNetCDF: looking for NetCDF4" )
 
-    ecbuild_add_extra_search_paths( hdf5 )
+  ## hdf5
 
-    # Note: Only the HDF5 C-library is required for NetCDF 
-    #       ( even for Fortan and CXX bindings)
-    find_package( HDF5 COMPONENTS C QUIET )
+  # Note: Only the HDF5 C-library is required for NetCDF 
+  #       ( even for Fortan and CXX bindings)
+  find_package( HDF5 COMPONENTS C QUIET )
 
-    ## netcdf4
+  ## netcdf4
 
-    # CONFIGURE the NETCDF_FIND_COMPONENTS variable
+  # CONFIGURE the NETCDF_FIND_COMPONENTS variable
 
-    # Find NetCDF4
+  # Find NetCDF4
 
-    ecbuild_add_extra_search_paths( netcdf4 )
+  # message( "NETCDF CMAKE_PREFIX_PATH = [${CMAKE_PREFIX_PATH}]")
+  # debug_var( NETCDF_ROOT )
+  # debug_var( NETCDF_FIND_COMPONENTS )
+  # debug_var( NETCDF_FIND_QUIETLY )
+  # debug_var( NETCDF_FIND_REQUIRED )
+  find_package( NetCDF4 COMPONENTS ${NETCDF_FIND_COMPONENTS} )
+  # debug_var( NETCDF4_FOUND )
+  # debug_var( NETCDF_FOUND )
+  # debug_var( NETCDF_LIBRARIES )
+  # debug_var( NETCDF_INCLUDE_DIRS )
 
-    # message( "NETCDF CMAKE_PREFIX_PATH = [${CMAKE_PREFIX_PATH}]")
-    # debug_var( NETCDF_ROOT )
-    # debug_var( NETCDF_FIND_COMPONENTS )
-    # debug_var( NETCDF_FIND_QUIETLY )
-    # debug_var( NETCDF_FIND_REQUIRED )
-    find_package( NetCDF4 )
-    # debug_var( NETCDF4_FOUND )
-    # debug_var( NETCDF_FOUND )
-    # debug_var( NETCDF_LIBRARIES )
-    # debug_var( NETCDF_INCLUDE_DIRS )
+  list( APPEND NETCDF_Fortran_LIBRARIES ${NETCDF_FORTRAN_LIBRARIES} ${NETCDF_F90_LIBRARIES} )
+  if( NETCDF_Fortran_LIBRARIES )
+    list( REMOVE_DUPLICATES NETCDF_Fortran_LIBRARIES )
+  endif()
 
-    list( APPEND NETCDF_Fortran_LIBRARIES ${NETCDF_FORTRAN_LIBRARIES} ${NETCDF_F90_LIBRARIES} )
-    if( NETCDF_Fortran_LIBRARIES )
-      list( REMOVE_DUPLICATES NETCDF_Fortran_LIBRARIES )
-    endif()
+  # debug_var( NETCDF_Fortran_LIBRARIES )
+  # debug_var( NETCDF_C_LIBRARIES )
+  # debug_var( NETCDF_CXX_LIBRARIES )
 
-    # debug_var( NETCDF_Fortran_LIBRARIES )
-    # debug_var( NETCDF_C_LIBRARIES )
-    # debug_var( NETCDF_CXX_LIBRARIES )
 
+  set_package_properties( NetCDF4 PROPERTIES TYPE RECOMMENDED PURPOSE "support for NetCDF4 file format" )
 
-	set_package_properties( NetCDF4 PROPERTIES TYPE RECOMMENDED PURPOSE "support for NetCDF4 file format" )
+  if( NETCDF_FOUND AND HDF5_FOUND )
+    # list( APPEND NETCDF_DEFINITIONS  ${HDF5_DEFINITIONS} )
+    list( APPEND NETCDF_LIBRARIES    ${HDF5_HL_LIBRARIES} ${HDF5_LIBRARIES}  )
+    list( APPEND NETCDF_INCLUDE_DIRS ${HDF5_INCLUDE_DIRS} )
+  endif()
 
-    if( NETCDF_FOUND AND HDF5_FOUND )
-        # list( APPEND NETCDF_DEFINITIONS  ${HDF5_DEFINITIONS} )
-        list( APPEND NETCDF_LIBRARIES    ${HDF5_HL_LIBRARIES} ${HDF5_LIBRARIES}  )
-        list( APPEND NETCDF_INCLUDE_DIRS ${HDF5_INCLUDE_DIRS} )
-    endif()
-
-    #debug_var( NETCDF_FOUND )
-    #debug_var( NETCDF_LIBRARIES )
-    #debug_var( NETCDF_INCLUDE_DIRS )
-    #debug_var( HDF5_FOUND )
-    #debug_var( HDF5_INCLUDE_DIRS )
-    #debug_var( HDF5_HL_LIBRARIES )
-    #debug_var( HDF5_LIBRARIES )
+  #debug_var( NETCDF_FOUND )
+  #debug_var( NETCDF_LIBRARIES )
+  #debug_var( NETCDF_INCLUDE_DIRS )
+  #debug_var( HDF5_FOUND )
+  #debug_var( HDF5_INCLUDE_DIRS )
+  #debug_var( HDF5_HL_LIBRARIES )
+  #debug_var( HDF5_LIBRARIES )
 
 endif()
 
@@ -128,40 +129,36 @@ endif()
 
 if( PREFER_NETCDF3 )
 
-    # message( "LOOKING FOR NETCDF3" )
-
-    # debug_var( NetCDF_FIND_COMPONENTS )
-    # debug_var( NetCDF_FIND_QUIETLY )
-    # debug_var( NetCDF_FIND_REQUIRED )
-
-	list(FIND NetCDF_FIND_COMPONENTS "CXX" _index)
-	if(${_index} GREATER -1)
-        set( NETCDF_CXX 1 )
-    endif()
+  ecbuild_debug( "FindNetCDF: looking for NetCDF3" )
 
-	list(FIND NetCDF_FIND_COMPONENTS "Fortran" _index)
-	if(${_index} GREATER -1)
-        set( NETCDF_Fortran 1 )
-    endif()
+  # debug_var( NetCDF_FIND_COMPONENTS )
+  # debug_var( NetCDF_FIND_QUIETLY )
+  # debug_var( NetCDF_FIND_REQUIRED )
 
-	list(FIND NetCDF_FIND_COMPONENTS "FORTRAN" _index)
-	if(${_index} GREATER -1)
-        set( NETCDF_Fortran 1 )
-    endif()
+  list(FIND NetCDF_FIND_COMPONENTS "CXX" _index)
+  if(${_index} GREATER -1)
+    set( NETCDF_CXX 1 )
+  endif()
 
-	list(FIND NetCDF_FIND_COMPONENTS "F90" _index)
-	if(${_index} GREATER -1)
-        set( NETCDF_Fortran 1 )
-    endif()
+  list(FIND NetCDF_FIND_COMPONENTS "Fortran" _index)
+  if(${_index} GREATER -1)
+    set( NETCDF_Fortran 1 )
+  endif()
 
-    ecbuild_add_extra_search_paths( netcdf3 )
+  list(FIND NetCDF_FIND_COMPONENTS "FORTRAN" _index)
+  if(${_index} GREATER -1)
+    set( NETCDF_Fortran 1 )
+  endif()
 
-	ecbuild_add_extra_search_paths( netcdf ) # fallback to netcdf search paths
+  list(FIND NetCDF_FIND_COMPONENTS "F90" _index)
+  if(${_index} GREATER -1)
+    set( NETCDF_Fortran 1 )
+  endif()
 
-    message( "NETCDF CMAKE_PREFIX_PATH = ${CMAKE_PREFIX_PATH}" )
+  #message( "NETCDF CMAKE_PREFIX_PATH = ${CMAKE_PREFIX_PATH}" )
 
-    find_package( NetCDF3 )
+  find_package( NetCDF3 COMPONENTS ${NETCDF_FIND_COMPONENTS} )
 
-	set_package_properties( NetCDF3 PROPERTIES TYPE RECOMMENDED PURPOSE "support for NetCDF3 file format" )
+  set_package_properties( NetCDF3 PROPERTIES TYPE RECOMMENDED PURPOSE "support for NetCDF3 file format" )
 
 endif()
diff --git a/cmake/FindNetCDF3.cmake b/cmake/FindNetCDF3.cmake
index 079e55e..40e6bc0 100644
--- a/cmake/FindNetCDF3.cmake
+++ b/cmake/FindNetCDF3.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
@@ -9,10 +9,12 @@
 # Try to find NetCDF
 #
 # Input:
-#  * NETCDF_PATH - user defined path where to search for the library first
-#  * NETCDF_DIR  - user defined path where to search for the library first
-#  * NETCDF_CXX  - if to search also for netcdf_c++ wrapper library
-#  * NETCDF_Fortran  - if to search also for netcdff wrapper library
+#  * NETCDF_PATH     - user defined path where to search for the library first
+#                      (CMake or environment variable)
+#  * NETCDF_DIR      - user defined path where to search for the library first
+#                      (CMake or environment variable)
+#  * NETCDF_CXX      - search also for netcdf_c++ wrapper library
+#  * NETCDF_Fortran  - search also for netcdff wrapper library
 #
 # Output:
 #  NETCDF_FOUND - System has NetCDF
@@ -21,14 +23,6 @@
 
 ### TODO: generalize this into a macro for all ecbuild
 
-if( DEFINED $ENV{NETCDF_PATH} )
-    list( APPEND CMAKE_PREFIX_PATH  $ENV{NETCDF_PATH} )
-endif()
-
-if( DEFINED $ENV{NETCDF_DIR} )
-    list( APPEND CMAKE_PREFIX_PATH  $ENV{NETCDF_DIR} )
-endif()
-
 if( DEFINED NETCDF_PATH )
     list( APPEND _netcdf_incs ${NETCDF_PATH} ${NETCDF_PATH}/include )
     list( APPEND _netcdf_libs ${NETCDF_PATH} ${NETCDF_PATH}/lib )
@@ -39,33 +33,20 @@ if( DEFINED NETCDF_DIR )
     list( APPEND _netcdf_libs ${NETCDF_DIR} ${NETCDF_DIR}/lib )
 endif()
 
-foreach( _h /usr/local/apps/netcdf )
-
-	if( EXISTS ${_h} )
-	
-        list( APPEND _netcdf_incs  ${_h}/include ${_h}/current/include ${_h}/new/include ${_h}/stable/include )
-        list( APPEND _netcdf_libs  ${_h}/lib ${_h}/current/lib ${_h}/new/lib ${_h}/stable/lib )
-
-		file(GLOB _hd ${_h}/*)
-        foreach( d ${_hd} )
-            if( IS_DIRECTORY ${d} )
-                list( APPEND _netcdf_incs ${d}/include ${d}/LP64/include )
-                list( APPEND _netcdf_libs ${d}/lib ${d}/LP64/lib )
-            endif()
-        endforeach()
-    endif()
-
-endforeach() 
+# Honour environment variables NETCDF_DIR, NETCDF_PATH
+list( APPEND _netcdf_incs ENV NETCDF_DIR ENV NETCDF_PATH )
+list( APPEND _netcdf_libs ENV NETCDF_DIR ENV NETCDF_PATH )
 
 ###
 
-set( _ncdf_sfx netcdf LP64 )
+set( _inc_sfx netcdf include )
+set( _lib_sfx netcdf lib64 lib )
 
-find_path( NETCDF_INCLUDE_DIR  netcdf.h  PATHS ${_netcdf_incs} PATH_SUFFIXES ${_ncdf_sfx} NO_DEFAULT_PATH )
-find_path( NETCDF_INCLUDE_DIR  netcdf.h  PATHS ${_netcdf_incs} PATH_SUFFIXES ${_ncdf_sfx} )
+find_path( NETCDF_INCLUDE_DIR  netcdf.h  PATHS ${_netcdf_incs} PATH_SUFFIXES ${_inc_sfx} NO_DEFAULT_PATH )
+find_path( NETCDF_INCLUDE_DIR  netcdf.h  PATHS ${_netcdf_incs} PATH_SUFFIXES ${_inc_sfx} )
 
-find_library( NETCDF_LIBRARY  netcdf  PATHS ${_netcdf_libs} PATH_SUFFIXES ${_ncdf_sfx}  NO_DEFAULT_PATH )
-find_library( NETCDF_LIBRARY  netcdf  PATHS ${_netcdf_libs} PATH_SUFFIXES ${_ncdf_sfx}  )
+find_library( NETCDF_LIBRARY  netcdf  PATHS ${_netcdf_libs} PATH_SUFFIXES ${_lib_sfx}  NO_DEFAULT_PATH )
+find_library( NETCDF_LIBRARY  netcdf  PATHS ${_netcdf_libs} PATH_SUFFIXES ${_lib_sfx}  )
 
 set( NETCDF_LIBRARIES    ${NETCDF_LIBRARY} )
 set( NETCDF_INCLUDE_DIRS ${NETCDF_INCLUDE_DIR} )
@@ -76,13 +57,13 @@ list( APPEND NETCDF_REQUIRED_VARS NETCDF_LIBRARY NETCDF_INCLUDE_DIR )
 
 if( NETCDF_CXX )
 
-    find_path( NETCDF_CXX_INCLUDE_DIR netcdfcpp.h PATHS ${_netcdf_incs} PATH_SUFFIXES ${_ncdf_sfx} NO_DEFAULT_PATH)
-    find_path( NETCDF_CXX_INCLUDE_DIR netcdfcpp.h PATHS ${_netcdf_incs} PATH_SUFFIXES ${_ncdf_sfx} )
+    find_path( NETCDF_CXX_INCLUDE_DIR netcdfcpp.h PATHS ${_netcdf_incs} PATH_SUFFIXES ${_inc_sfx} NO_DEFAULT_PATH)
+    find_path( NETCDF_CXX_INCLUDE_DIR netcdfcpp.h PATHS ${_netcdf_incs} PATH_SUFFIXES ${_inc_sfx} )
 
     set( _ncdf_cxx netcdf_c++ netcdf_c++ netcdf_c++4 )
 
-    find_library( NETCDF_CXX_LIBRARY NAMES ${_ncdf_cxx} PATHS ${_netcdf_libs} PATH_SUFFIXES ${_ncdf_sfx} NO_DEFAULT_PATH )
-    find_library( NETCDF_CXX_LIBRARY NAMES ${_ncdf_cxx} PATHS ${_netcdf_libs} PATH_SUFFIXES ${_ncdf_sfx} )
+    find_library( NETCDF_CXX_LIBRARY NAMES ${_ncdf_cxx} PATHS ${_netcdf_libs} PATH_SUFFIXES ${_lib_sfx} NO_DEFAULT_PATH )
+    find_library( NETCDF_CXX_LIBRARY NAMES ${_ncdf_cxx} PATHS ${_netcdf_libs} PATH_SUFFIXES ${_lib_sfx} )
 
     list( APPEND NETCDF_INCLUDE_DIRS ${NETCDF_CXX_INCLUDE_DIR} )
     list( APPEND NETCDF_LIBRARIES    ${NETCDF_CXX_LIBRARY} )
@@ -95,13 +76,13 @@ endif()
 
 if( NETCDF_Fortran )
 
-    find_path( NETCDF_Fortran_INCLUDE_DIR netcdf.mod PATHS ${_netcdf_incs} PATH_SUFFIXES ${_ncdf_sfx} NO_DEFAULT_PATH)
-    find_path( NETCDF_Fortran_INCLUDE_DIR netcdf.mod PATHS ${_netcdf_incs} PATH_SUFFIXES ${_ncdf_sfx} )
+    find_path( NETCDF_Fortran_INCLUDE_DIR netcdf.mod PATHS ${_netcdf_incs} PATH_SUFFIXES ${_inc_sfx} NO_DEFAULT_PATH)
+    find_path( NETCDF_Fortran_INCLUDE_DIR netcdf.mod PATHS ${_netcdf_incs} PATH_SUFFIXES ${_inc_sfx} )
 
     set( _ncdf_fortran netcdff )
 
-    find_library( NETCDF_Fortran_LIBRARY NAMES ${_ncdf_fortran} PATHS ${_netcdf_libs} PATH_SUFFIXES ${_ncdf_sfx} NO_DEFAULT_PATH )
-    find_library( NETCDF_Fortran_LIBRARY NAMES ${_ncdf_fortran} PATHS ${_netcdf_libs} PATH_SUFFIXES ${_ncdf_sfx} )
+    find_library( NETCDF_Fortran_LIBRARY NAMES ${_ncdf_fortran} PATHS ${_netcdf_libs} PATH_SUFFIXES ${_lib_sfx} NO_DEFAULT_PATH )
+    find_library( NETCDF_Fortran_LIBRARY NAMES ${_ncdf_fortran} PATHS ${_netcdf_libs} PATH_SUFFIXES ${_lib_sfx} )
 
     list( APPEND NETCDF_INCLUDE_DIRS ${NETCDF_Fortran_INCLUDE_DIR} )
     list( APPEND NETCDF_LIBRARIES    ${NETCDF_Fortran_LIBRARY} )
diff --git a/cmake/FindODB.cmake b/cmake/FindODB.cmake
index bfa6905..3a1fa12 100644
--- a/cmake/FindODB.cmake
+++ b/cmake/FindODB.cmake
@@ -1,4 +1,4 @@
-# © Copyright 1996-2014 ECMWF.
+# © Copyright 1996-2015 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.
diff --git a/cmake/FindOpenCL.cmake b/cmake/FindOpenCL.cmake
new file mode 100644
index 0000000..e4e9556
--- /dev/null
+++ b/cmake/FindOpenCL.cmake
@@ -0,0 +1,67 @@
+# (C) Copyright 1996-2015 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.
+
+# - Try to find OpenCL
+# Once done this will define
+#
+#  OPENCL_FOUND           - system has OpenCL
+#  OPENCL_INCLUDE_DIRS    - the OpenCL include directory
+#  OPENCL_LIBRARIES       - link these to use OpenCL
+#
+# The following paths will be searched with priority if set in CMake or env
+#
+#  OPENCL_ROOT            - root folder of the OpenCL installation
+#  CUDA_TOOLKIT_ROOT_DIR  - root folder of the CUDA installation (ships OpenCL)
+#  CUDA_ROOT              - root folder of the CUDA installation (ships OpenCL)
+
+if(UNIX)
+
+  if(APPLE)
+
+    # Search with priority for OPENCL_ROOT if given as CMake or env var
+    find_path(OPENCL_INCLUDE_DIRS OpenCL/cl.h
+              PATHS ${OPENCL_ROOT} ENV OPENCL_ROOT
+              PATH_SUFFIXES include NO_DEFAULT_PATH)
+    find_path(OPENCL_INCLUDE_DIRS OpenCL/cl.h
+              PATH_SUFFIXES include )
+
+    # Search with priority for OPENCL_ROOT if given as CMake or env var
+    find_library(OPENCL_LIBRARIES OpenCL
+                 PATHS ${OPENCL_ROOT} ENV OPENCL_ROOT
+                 PATH_SUFFIXES lib NO_DEFAULT_PATH)
+    find_library(OPENCL_LIBRARIES OpenCL
+                 PATH_SUFFIXES lib )
+
+  else()
+
+    # Search with priority for OPENCL_ROOT if given as CMake or env var
+    find_path(OPENCL_INCLUDE_DIRS NAMES CL/cl.h CL/opencl.h
+              PATHS ${OPENCL_ROOT} ENV OPENCL_ROOT
+              PATH_SUFFIXES include NO_DEFAULT_PATH)
+    find_path(OPENCL_INCLUDE_DIRS NAMES CL/cl.h CL/opencl.h
+              PATHS ${CUDA_TOOLKIT_ROOT_DIR} ${CUDA_ROOT} /usr/local/cuda
+              PATH_SUFFIXES include )
+
+    # Search with priority for OPENCL_ROOT if given as CMake or env var
+    find_library(OPENCL_LIBRARIES OpenCL
+                 PATHS ${OPENCL_ROOT} ENV OPENCL_ROOT
+                 PATH_SUFFIXES lib64 lib NO_DEFAULT_PATH)
+    find_library(OPENCL_LIBRARIES OpenCL
+                 PATHS ${CUDA_TOOLKIT_ROOT_DIR} ${CUDA_ROOT} /usr/local/cuda
+                 PATH_SUFFIXES lib64 lib )
+
+  endif()
+
+endif()
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args( OPENCL DEFAULT_MSG
+                                   OPENCL_LIBRARIES OPENCL_INCLUDE_DIRS )
+
+mark_as_advanced( OPENCL_INCLUDE_DIRS OPENCL_LIBRARIES )
diff --git a/cmake/FindOpenJPEG.cmake b/cmake/FindOpenJPEG.cmake
index 3e36954..82d19fb 100644
--- a/cmake/FindOpenJPEG.cmake
+++ b/cmake/FindOpenJPEG.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
@@ -16,12 +16,11 @@
 #  OPENJPEG_LIBRARY, where to find the OpenJPEG library.
 #  OPENJPEG_INCLUDE_DIR, where to find the openjpeg.h header
 
-ecbuild_add_extra_search_paths( openjpg )
-
 IF( NOT DEFINED OPENJPEG_PATH AND NOT "$ENV{OPENJPEG_PATH}" STREQUAL "" )
   SET( OPENJPEG_PATH "$ENV{OPENJPEG_PATH}" )
 ENDIF()
 
+# TODO: This only works for OpenJPEG v1.x.y and not for v2 which has a different API, library name etc
 if( DEFINED OPENJPEG_PATH )
         find_path(OPENJPEG_INCLUDE_DIR openjpeg.h PATHS ${OPENJPEG_PATH}/include PATH_SUFFIXES openjpeg  NO_DEFAULT_PATH)
         find_library(OPENJPEG_LIBRARY  openjpeg   PATHS ${OPENJPEG_PATH}/lib     PATH_SUFFIXES openjpeg  NO_DEFAULT_PATH)
diff --git a/cmake/FindPGIFortran.cmake b/cmake/FindPGIFortran.cmake
index ae2221b..7308e49 100644
--- a/cmake/FindPGIFortran.cmake
+++ b/cmake/FindPGIFortran.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
diff --git a/cmake/FindPango.cmake b/cmake/FindPango.cmake
index 81b55c0..811cdf9 100644
--- a/cmake/FindPango.cmake
+++ b/cmake/FindPango.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
@@ -13,8 +13,6 @@
 #   PANGO_LIBRARIES
 #   PANGO_INCLUDE_DIRS
 
-ecbuild_add_extra_search_paths( pango )
-
 find_package(PkgConfig)
 
 pkg_check_modules(PC_LIBPANGO QUIET pango)
diff --git a/cmake/FindPangoCairo.cmake b/cmake/FindPangoCairo.cmake
index 4fb1fd2..7445754 100644
--- a/cmake/FindPangoCairo.cmake
+++ b/cmake/FindPangoCairo.cmake
@@ -1,8 +1,8 @@
-# (C) Copyright 1996-2014 ECMWF.
-# 
+# (C) Copyright 1996-2015 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 
+# 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.
 
@@ -21,15 +21,18 @@ pkg_check_modules(PC_LIBPANGOCAIRO QUIET pangocairo)
 #debug_var( PC_LIBPANGOCAIRO_FOUND )
 #debug_var( PC_LIBPANGOCAIRO_VERSION )
 #debug_var( PC_LIBPANGOCAIRO_LIBRARIES )
+#debug_var( PC_LIBPANGOCAIRO_LDFLAGS )
+#debug_var( PC_LIBPANGOCAIRO_LDFLAGS_OTHER )
 #debug_var( PC_LIBPANGOCAIRO_INCLUDE_DIRS )
 
-
 if(PC_LIBPANGOCAIRO_FOUND)
+
     include(FindPackageHandleStandardArgs)
     find_package_handle_standard_args( pangocairo DEFAULT_MSG PC_LIBPANGOCAIRO_LIBRARIES PC_LIBPANGOCAIRO_INCLUDE_DIRS )
     set( PANGOCAIRO_VERSION ${PC_LIBPANGOCAIRO_VERSION} )
-    set( PANGOCAIRO_LIBRARIES ${PC_LIBPANGOCAIRO_LIBRARIES} )
+    set( PANGOCAIRO_LIBRARIES "${PC_LIBPANGOCAIRO_LDFLAGS} ${PC_LIBPANGOCAIRO_LDFLAGS_OTHER}" )
     set( PANGOCAIRO_INCLUDE_DIRS ${PC_LIBPANGOCAIRO_INCLUDE_DIRS} )
+
 else()
 
     # this is to get magics compiling on mac with macbrew
diff --git a/cmake/FindProj4.cmake b/cmake/FindProj4.cmake
index 6181ed0..6774b6e 100644
--- a/cmake/FindProj4.cmake
+++ b/cmake/FindProj4.cmake
@@ -7,12 +7,14 @@
 #
 # Define PROJ4_MIN_VERSION for which version desired.
 
-if( NOT PROJ4_PATH AND NOT "$ENV{PROJ4_PATH}" STREQUAL "" )
-    set( PROJ4_PATH "$ENV{PROJ4_PATH}" )
+if( NOT PROJ4_PATH )
+    if ( NOT "$ENV{PROJ4_PATH}" STREQUAL "" )
+        set( PROJ4_PATH "$ENV{PROJ4_PATH}" )
+    elseif ( NOT "$ENV{PROJ4_DIR}" STREQUAL "" )
+        set( PROJ4_PATH "$ENV{PROJ4_DIR}" )
+    endif()
 endif()
 
-ecbuild_add_extra_search_paths( proj4 )
-
 if( NOT PROJ4_PATH )
 
     include(FindPkgConfig)
diff --git a/cmake/FindREADLINE.cmake b/cmake/FindREADLINE.cmake
index 9477026..bbabe15 100644
--- a/cmake/FindREADLINE.cmake
+++ b/cmake/FindREADLINE.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
diff --git a/cmake/FindRPCGEN.cmake b/cmake/FindRPCGEN.cmake
index 98c4a98..3e25daf 100644
--- a/cmake/FindRPCGEN.cmake
+++ b/cmake/FindRPCGEN.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
diff --git a/cmake/FindRealtime.cmake b/cmake/FindRealtime.cmake
index b46b9b7..2c2a7b2 100644
--- a/cmake/FindRealtime.cmake
+++ b/cmake/FindRealtime.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
diff --git a/cmake/FindSZip.cmake b/cmake/FindSZip.cmake
index 533df50..6e9b1a2 100644
--- a/cmake/FindSZip.cmake
+++ b/cmake/FindSZip.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -12,8 +12,6 @@
 #  SZIP_INCLUDE_DIRS - The SZip include directories
 #  SZIP_LIBRARIES - The libraries needed to use SZip
 
-ecbuild_add_extra_search_paths( szip )
-
 if( DEFINED SZIP_PATH )
     find_path( SZIP_INCLUDE_DIR szlib.h       PATHS ${SZIP_PATH}/include PATH_SUFFIXES szip NO_DEFAULT_PATH )
     find_library( SZIP_LIBRARY  NAMES szip sz PATHS ${SZIP_PATH}/lib     PATH_SUFFIXES szip NO_DEFAULT_PATH )
diff --git a/cmake/FindScin.cmake b/cmake/FindScin.cmake
deleted file mode 100644
index 3ddf732..0000000
--- a/cmake/FindScin.cmake
+++ /dev/null
@@ -1,48 +0,0 @@
-# (C) Copyright 1996-2014 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.
-
-# - Try to find ECREGRID
-# Once done this will define
-#  ECREGRID_FOUND - System has ECREGRID
-#  ECREGRID_INCLUDE_DIRS - The ECREGRID include directories
-#  ECREGRID_LIBRARIES - The libraries needed to use ECREGRID
-#  ECREGRID_DEFINITIONS - Compiler switches required for using ECREGRID
-
-option( WITH_ECREGRID "try to find scin installation" ON )
-
-# skip if ECREGRID is already found or if has is built inside
-
-if( NOT ECREGRID_FOUND AND WITH_ECREGRID )
-
-    if( NOT DEFINED ECREGRID_PATH AND NOT "$ENV{ECREGRID_PATH}" STREQUAL "" )
-        list( APPEND ECREGRID_PATH "$ENV{ECREGRID_PATH}" )
-    endif()
-
-    if( DEFINED ECREGRID_PATH )
-        find_path(ECREGRID_INCLUDE_DIR NAMES scin_api.h PATHS ${ECREGRID_PATH} ${ECREGRID_PATH}/include PATH_SUFFIXES scin_api  NO_DEFAULT_PATH )
-        find_library(ECREGRID_LIBRARY  NAMES scin       PATHS ${ECREGRID_PATH} ${ECREGRID_PATH}/lib     PATH_SUFFIXES scin      NO_DEFAULT_PATH )
-    endif()
-    
-    find_path(ECREGRID_INCLUDE_DIR NAMES scin_api.h PATH_SUFFIXES scin_api )
-    find_library( ECREGRID_LIBRARY NAMES scin       PATH_SUFFIXES scin     )
-    
-    include(FindPackageHandleStandardArgs)
-    
-    # handle the QUIETLY and REQUIRED arguments and set ECREGRID_FOUND to TRUE
-    # if all listed variables are TRUE
-    find_package_handle_standard_args(Scin  DEFAULT_MSG
-                                      ECREGRID_LIBRARY ECREGRID_INCLUDE_DIR)
-
-    if( ECREGRID_FOUND )
-        set( ECREGRID_LIBRARIES    ${ECREGRID_LIBRARY} )
-        set( ECREGRID_INCLUDE_DIRS ${ECREGRID_INCLUDE_DIR} )
-    endif()
-    
-    mark_as_advanced(ECREGRID_INCLUDE_DIR ECREGRID_LIBRARY )
-    
-endif()
diff --git a/cmake/FindTrilinos.cmake b/cmake/FindTrilinos.cmake
index 717cca6..a1cabce 100644
--- a/cmake/FindTrilinos.cmake
+++ b/cmake/FindTrilinos.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
@@ -17,9 +17,6 @@
 
 # Try to find Trilinos using Trilinos recommendations
 
-
-ecbuild_add_extra_search_paths( trilinos )
-
 if( DEFINED $ENV{TRILINOS_PATH} )
     find_package(Trilinos PATHS $ENV{TRILINOS_PATH}/lib/cmake/Trilinos $ENV{TRILINOS_PATH}/include )
 endif()
diff --git a/cmake/FindViennaCL.cmake b/cmake/FindViennaCL.cmake
new file mode 100644
index 0000000..a1b1eb9
--- /dev/null
+++ b/cmake/FindViennaCL.cmake
@@ -0,0 +1,38 @@
+# (C) Copyright 1996-2015 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.
+
+# - Try to find ViennaCL
+# Once done this will define
+#
+#  VIENNACL_FOUND         - system has ViennaCL
+#  VIENNACL_INCLUDE_DIRS  - the ViennaCL include directories
+#
+# The following paths will be searched with priority if set in CMake or env
+#
+#  VIENNACL_PATH          - prefix path of the ViennaCL installation
+#
+# ViennaCL is header only, so there are no libraries to be found
+
+# Search with priority for VIENNACL_PATH if given as CMake or env var
+find_path(VIENNACL_INCLUDE_DIR viennacl/version.hpp
+          PATHS ${VIENNACL_PATH} ENV VIENNACL_PATH
+          PATH_SUFFIXES include NO_DEFAULT_PATH)
+
+find_path(VIENNACL_INCLUDE_DIR viennacl/version.hpp
+          PATH_SUFFIXES include )
+
+set( VIENNACL_INCLUDE_DIRS ${VIENNACL_INCLUDE_DIR} )
+
+include(FindPackageHandleStandardArgs)
+
+# handle the QUIETLY and REQUIRED arguments and set VIENNACL_FOUND to TRUE
+# if all listed variables are valid
+find_package_handle_standard_args(VIENNACL  DEFAULT_MSG
+                                  VIENNACL_INCLUDE_DIR)
+
+mark_as_advanced(VIENNACL_INCLUDE_DIRS)
diff --git a/cmake/FindXLFortranLibs.cmake b/cmake/FindXLFortranLibs.cmake
index 7be0070..10a68aa 100644
--- a/cmake/FindXLFortranLibs.cmake
+++ b/cmake/FindXLFortranLibs.cmake
@@ -1,4 +1,4 @@
-# © Copyright 1996-2014 ECMWF.
+# © Copyright 1996-2015 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. 
diff --git a/cmake/FindYACC.cmake b/cmake/FindYACC.cmake
index dbdb191..a410c6f 100644
--- a/cmake/FindYACC.cmake
+++ b/cmake/FindYACC.cmake
@@ -41,7 +41,7 @@
 # This file is based on the FindFLEX CMake macro, and adapted by ECMWF
 
 #=============================================================================
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
diff --git a/cmake/Findgrib_api.cmake b/cmake/Findgrib_api.cmake
index 55a7b19..8b6cb43 100644
--- a/cmake/Findgrib_api.cmake
+++ b/cmake/Findgrib_api.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -19,8 +19,6 @@ option( GRIB_API_JPG "use jpg with grib_api" ON )
 
 if( NOT grib_api_FOUND AND NOT NO_GRIB_API_BINARIES )
 
-    ecbuild_add_extra_search_paths( grib_api )
-
     if( GRIB_API_JPG ) # jpeg support
         
         find_package( JPEG     QUIET ) # grib_api might be a static .a library in which
diff --git a/cmake/Findodb_api.cmake b/cmake/Findodb_api.cmake
index c573d9b..2b8e800 100644
--- a/cmake/Findodb_api.cmake
+++ b/cmake/Findodb_api.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -15,8 +15,6 @@
 
 if( NOT odb_api_FOUND )
 
-    ecbuild_add_extra_search_paths( odb_api )
-
     # find external odb_api
 
     if( NOT DEFINED ODB_API_PATH AND NOT "$ENV{ODB_API_PATH}" STREQUAL "" )
diff --git a/cmake/Findspot.cmake b/cmake/Findspot.cmake
index 6396ef0..cad0e33 100644
--- a/cmake/Findspot.cmake
+++ b/cmake/Findspot.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2012 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -15,8 +15,6 @@
 
 if( NOT spot_FOUND )
 
-    ecbuild_add_extra_search_paths( spot )
-
     # find external odb_api
 
     if( NOT DEFINED SPOT_PATH AND NOT "$ENV{SPOT_PATH}" STREQUAL "" )
diff --git a/cmake/VERSION.cmake b/cmake/VERSION.cmake
index 40762d8..a07bd4a 100644
--- a/cmake/VERSION.cmake
+++ b/cmake/VERSION.cmake
@@ -1,7 +1,7 @@
 set( ECBUILD_MAJOR_VERSION "1" )
-set( ECBUILD_MINOR_VERSION "7" )
+set( ECBUILD_MINOR_VERSION "9" )
 set( ECBUILD_PATCH_VERSION "0" )
 
-set( ECBUILD_VERSION_STR  "1.7.0" )
+set( ECBUILD_VERSION_STR  "1.9.0" )
 
 set( ECBUILD_MACRO_VERSION "${ECBUILD_MAJOR_VERSION}.${ECBUILD_MINOR_VERSION}" )
diff --git a/cmake/contrib/FindEigen3.cmake b/cmake/contrib/FindEigen3.cmake
index 72d4a9d..9315294 100644
--- a/cmake/contrib/FindEigen3.cmake
+++ b/cmake/contrib/FindEigen3.cmake
@@ -15,8 +15,6 @@
 # Copyright (c) 2009 Benoit Jacob <jacob.benoit.1 at gmail.com>
 # Redistribution and use is allowed according to the terms of the 2-clause BSD license.
 
-ecbuild_add_extra_search_paths( eigen )
-
 if(NOT Eigen3_FIND_VERSION)
   if(NOT Eigen3_FIND_VERSION_MAJOR)
     set(Eigen3_FIND_VERSION_MAJOR 2)
@@ -76,7 +74,13 @@ else(EIGEN3_INCLUDE_DIR)
       ${EIGEN_PATH}/include
       ${EIGEN_DIR}/include
       ${EIGEN_ROOT}/include
-      PATH_SUFFIXES eigen3 eigen
+      ENV EIGEN3_PATH
+      ENV EIGEN3_DIR
+      ENV EIGEN3_ROOT
+      ENV EIGEN_PATH
+      ENV EIGEN_DIR
+      ENV EIGEN_ROOT
+      PATH_SUFFIXES eigen3 eigen include/eigen3 include/eigen
     )
 
   if(EIGEN3_INCLUDE_DIR)
diff --git a/cmake/contrib/FindFFTW.cmake b/cmake/contrib/FindFFTW.cmake
index 1ddaf4c..d76767b 100644
--- a/cmake/contrib/FindFFTW.cmake
+++ b/cmake/contrib/FindFFTW.cmake
@@ -12,27 +12,55 @@
 #   FFTW_USE_STATIC_LIBS    ... if true, only static libraries are found
 #   FFTW_ROOT               ... if set, the libraries are exclusively searched
 #                               under this path
+#   FFTW_DIR                ... equivalent to FFTW_ROOT
+#   FFTW_PATH               ... equivalent to FFTW_ROOT
 #   FFTW_LIBRARY            ... fftw library to use
 #   FFTW_INCLUDE_DIR        ... fftw include directory
 #
 
-#=======================#
-#
-#      From Eigen3
-#
-#========================
+#============================================#
+#                                            #
+#    From Eigen3, modified by W Deconinck    #
+#                                            #
+#============================================#
 
-#If environment variable FFTWDIR is specified, it has same effect as FFTW_ROOT
-if( NOT FFTW_ROOT AND ENV{FFTWDIR} )
+if( (NOT FFTW_ROOT) AND EXISTS $ENV{FFTW_ROOT} )
+  set( FFTW_ROOT ${FFTW_ROOT} )
+endif()
+if( NOT FFTW_ROOT AND $FFTW_DIR )
+  set( FFTW_ROOT ${FFTW_DIR} )
+endif()
+if( (NOT FFTW_ROOT) AND EXISTS $ENV{FFTW_DIR} )
+  set( FFTW_ROOT $ENV{FFTW_DIR} )
+endif()
+if( (NOT FFTW_ROOT) AND FFTWDIR )
+  set( FFTW_ROOT ${FFTWDIR} )
+endif()
+if( (NOT FFTW_ROOT) AND EXISTS $ENV{FFTWDIR} )
   set( FFTW_ROOT $ENV{FFTWDIR} )
 endif()
+if( (NOT FFTW_ROOT) AND FFTW_PATH )
+  set( FFTW_ROOT ${FFTW_PATH} )
+endif()
+if( (NOT FFTW_ROOT) AND EXISTS $ENV{FFTW_PATH})
+  set( FFTW_ROOT $ENV{FFTW_PATH} )
+endif()
+
+if( FFTW_ROOT ) # On cc[a|b|t] FFTW_DIR is set to the lib directory :(
+  get_filename_component(_dirname ${FFTW_ROOT} NAME)
+  if( _dirname MATCHES "lib" )
+    set( FFTW_ROOT "${FFTW_ROOT}/.." )
+  endif()
+endif()
 
-# Check if we can use PkgConfig
-find_package(PkgConfig)
+if( NOT FFTW_ROOT )
+  # Check if we can use PkgConfig
+  find_package(PkgConfig)
 
-#Determine from PKG
-if( PKG_CONFIG_FOUND AND NOT FFTW_ROOT )
-  pkg_check_modules( PKG_FFTW QUIET "fftw3" )
+  #Determine from PKG
+  if( PKG_CONFIG_FOUND AND NOT FFTW_ROOT )
+    pkg_check_modules( PKG_FFTW QUIET "fftw3" )
+  endif()
 endif()
 
 #Check whether to search static or dynamic libs
diff --git a/cmake/contrib/FindNetCDF4.cmake b/cmake/contrib/FindNetCDF4.cmake
index 33e7b36..89b0337 100644
--- a/cmake/contrib/FindNetCDF4.cmake
+++ b/cmake/contrib/FindNetCDF4.cmake
@@ -22,8 +22,9 @@
 # NETCDF_USE_STATIC_LIBRARIES variable is set before the call to find_package.
 #
 # To provide the module with a hint about where to find your NETCDF installation,
-# you can set the environment variable NETCDF_ROOT.  The Find module will then
-# look in this path when searching for NETCDF executables, paths, and libraries.
+# set the CMake or environment variable NETCDF_ROOT, NETCDF_DIR, NETCDF_PATH or
+# NETCDF4_DIR. The Find module will then look in this path when searching for
+# NETCDF executables, paths, and libraries.
 #
 # In addition to finding the includes and libraries required to compile an NETCDF
 # client application, this module also makes an effort to find tools that come
@@ -90,11 +91,12 @@ endmacro()
 # try to find the NETCDF wrapper compilers
 find_program( NETCDF_CONFIG_EXECUTABLE
     NAMES nc-config
-    HINTS ENV NETCDF_ROOT
-    PATHS
+    HINTS ${NETCDF_ROOT} ${NETCDF_DIR} ${NETCDF_PATH} ${NETCDF4_DIR}
+          ENV NETCDF_ROOT ENV NETCDF_DIR ENV NETCDF_PATH ENV NETCDF4_DIR
     PATH_SUFFIXES bin Bin
     DOC "NETCDF CONFIG PROGRAM.  Used only to detect NETCDF compile flags." )
 mark_as_advanced( NETCDF_CONFIG_EXECUTABLE )
+ecbuild_debug("FindNetCDF4: nc-config executable = ${NETCDF_CONFIG_EXECUTABLE}")
 
 set(output "no")
 _NETCDF_CONFIG (--has-hdf5 output return)
@@ -154,16 +156,15 @@ else()
     set( NETCDF_REQUIRED netcdf.h netcdfcpp.h netcdf.mod typesizes.mod netcdf netcdff netcdf_c++)
 
     foreach( LANGUAGE ${NETCDF_LANGUAGE_BINDINGS} )
-      # debug_var(LANGUAGE)
+        ecbuild_debug("FindNetCDF4: looking for ${LANGUAGE} language bindings")
         set( NETCDF_${LANGUAGE}_FOUND 1 ) # disable this in following if necessary
       
         # find the NETCDF includes
         foreach( INC ${NETCDF_${LANGUAGE}_INCLUDE_NAMES} )
           find_path( NETCDF_${INC}_INCLUDE_DIR ${INC}
-              HINTS
-                  ${NETCDF_${LANGUAGE}_INCLUDE_FLAGS}
-                      ENV NETCDF_ROOT
-              PATHS
+              HINTS ${NETCDF_${LANGUAGE}_INCLUDE_FLAGS}
+                    ${NETCDF_ROOT} ${NETCDF_DIR} ${NETCDF_PATH} ${NETCDF4_DIR}
+                    ENV NETCDF_ROOT ENV NETCDF_DIR ENV NETCDF_PATH ENV NETCDF4_DIR
               PATH_SUFFIXES
                   include
                   Include
@@ -203,14 +204,14 @@ else()
             find_library( NETCDF_${LIB}_LIBRARY_DEBUG
                 NAMES ${THIS_LIBRARY_SEARCH_DEBUG}
                 HINTS ${NETCDF_${LANGUAGE}_LIBRARY_DIRS}
-                ENV NETCDF_ROOT
-                PATHS
+                      ${NETCDF_ROOT} ${NETCDF_DIR} ${NETCDF_PATH} ${NETCDF4_DIR}
+                      ENV NETCDF_ROOT ENV NETCDF_DIR ENV NETCDF_PATH ENV NETCDF4_DIR
                 PATH_SUFFIXES lib64 Lib64 lib Lib)
             find_library( NETCDF_${LIB}_LIBRARY_RELEASE
                 NAMES ${THIS_LIBRARY_SEARCH_RELEASE}
                 HINTS ${NETCDF_${LANGUAGE}_LIBRARY_DIRS}
-                ENV NETCDF_ROOT
-                PATHS
+                      ${NETCDF_ROOT} ${NETCDF_DIR} ${NETCDF_PATH} ${NETCDF4_DIR}
+                      ENV NETCDF_ROOT ENV NETCDF_DIR ENV NETCDF_PATH ENV NETCDF4_DIR
                 PATH_SUFFIXES lib64 Lib64 lib Lib )
             select_library_configurations( NETCDF_${LIB} )
             # even though we adjusted the individual library names in
@@ -231,7 +232,6 @@ else()
           endif()
           if (NETCDF_${LIB}_LIBRARY_RELEASE OR NETCDF_${LIB}_LIBRARY_DEBUG )
           else()
-            # message( STATUS "\"${LIB}\" is not found." )
             list( FIND NETCDF_REQUIRED ${LIB} location )
             if( ${location} EQUAL -1 )
             else()
@@ -250,8 +250,8 @@ else()
         # Append the libraries for this language binding to the list of all
         # required libraries.
         
-        # debug_var( NETCDF_${LANGUAGE}_FOUND )
         if( NETCDF_${LANGUAGE}_FOUND )
+            ecbuild_debug( "FindNetCDF4: ${LANGUAGE} language bindings found" )
             if( CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE )
                 list( APPEND NETCDF_${LANGUAGE}_LIBRARIES 
                     debug ${NETCDF_${LANGUAGE}_LIBRARIES_DEBUG}
diff --git a/cmake/contrib/GreatCMakeCookOff/tests/CMakeLists.txt b/cmake/contrib/GreatCMakeCookOff/tests/CMakeLists.txt
deleted file mode 100644
index f2eb4d0..0000000
--- a/cmake/contrib/GreatCMakeCookOff/tests/CMakeLists.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-cmake_minimum_required(VERSION 2.8.3 FATAL_ERROR)
-project(COOKOFF_TEST)
-
-enable_testing()
-
-include(${PROJECT_SOURCE_DIR}/../TestCMake.cmake)
-
-cmake_test(checkisnan SOURCE)
-cmake_test(checkcpp11flags)
-cmake_test(addgtest NOEXEC SOURCE --test-command ${CMAKE_MAKE_PROGRAM} test)
-
-add_subdirectory(cpp11)
diff --git a/cmake/contrib/GreatCMakeCookOff/tests/cpp11/CMakeLists.txt b/cmake/contrib/GreatCMakeCookOff/tests/cpp11/CMakeLists.txt
deleted file mode 100644
index 45d20a5..0000000
--- a/cmake/contrib/GreatCMakeCookOff/tests/cpp11/CMakeLists.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-cmake_test(allfeatures)
-cmake_test(parse_input_features)
-cmake_test(check_features)
diff --git a/cmake/ecbuild-config-version.cmake b/cmake/ecbuild-config-version.cmake
new file mode 100644
index 0000000..eb4e668
--- /dev/null
+++ b/cmake/ecbuild-config-version.cmake
@@ -0,0 +1,12 @@
+set(PACKAGE_VERSION "1.9.0")
+
+# check whether the requested PACKAGE_FIND_VERSION is compatible
+
+if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
+  set(PACKAGE_VERSION_COMPATIBLE FALSE)
+else()
+  set(PACKAGE_VERSION_COMPATIBLE TRUE)
+  if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
+    set(PACKAGE_VERSION_EXACT TRUE)
+  endif()
+endif()
diff --git a/cmake/ecbuild-config.cmake b/cmake/ecbuild-config.cmake
new file mode 100644
index 0000000..c5835de
--- /dev/null
+++ b/cmake/ecbuild-config.cmake
@@ -0,0 +1,90 @@
+# Config file for the ecbuild package
+# Defines the following variables:
+#
+#  ECBUILD_INCLUDE_DIRS - include directories
+#  ECBUILD_DEFINITIONS  - preprocessor definitions
+#  ECBUILD_LIBRARIES    - libraries to link against
+#  ECBUILD_FEATURES     - list of enabled features
+#  ECBUILD_VERSION      - version of the package
+#
+# Also defines ecbuild third-party library dependencies:
+#  ECBUILD_TPLS             - package names of  third-party library dependencies
+#  ECBUILD_TPL_INCLUDE_DIRS - include directories
+#  ECBUILD_TPL_DEFINITIONS  - preprocessor definitions
+#  ECBUILD_TPL_LIBRARIES    - libraries to link against
+
+### compute paths
+
+get_filename_component(ECBUILD_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+
+set( ECBUILD_SELF_INCLUDE_DIRS "${ECBUILD_CMAKE_DIR}/../../../include" )
+set( ECBUILD_SELF_DEFINITIONS  "" )
+set( ECBUILD_SELF_LIBRARIES    "" )
+
+set( ECBUILD_TPLS              "" )
+set( ECBUILD_TPL_INCLUDE_DIRS  "" )
+set( ECBUILD_TPL_DEFINITIONS   "" )
+set( ECBUILD_TPL_LIBRARIES     "" )
+
+### export include paths as absolute paths
+
+set( ECBUILD_INCLUDE_DIRS "" )
+foreach( path ${ECBUILD_SELF_INCLUDE_DIRS} )
+	get_filename_component( abspath ${path} ABSOLUTE )
+	list( APPEND ECBUILD_INCLUDE_DIRS ${abspath} )
+endforeach()
+list( APPEND ECBUILD_INCLUDE_DIRS ${ECBUILD_TPL_INCLUDE_DIRS} )
+
+### export definitions
+
+set( ECBUILD_DEFINITIONS      ${ECBUILD_SELF_DEFINITIONS} ${ECBUILD_TPL_DEFINITIONS} )
+
+### export list of all libraries
+
+set( ECBUILD_LIBRARIES        ${ECBUILD_SELF_LIBRARIES}   ${ECBUILD_TPL_LIBRARIES}   )
+
+### export the features provided by the package
+
+set( ECBUILD_FEATURES    "TESTS;INSTALL" )
+foreach( _f ${ECBUILD_FEATURES} )
+	set( ECBUILD_HAVE_${_f} 1 )
+endforeach()
+
+# Has this configuration been exported from a build tree?
+set( ECBUILD_IS_BUILD_DIR_EXPORT OFF )
+
+if( EXISTS ${ECBUILD_CMAKE_DIR}/ecbuild-import.cmake )
+  set( ECBUILD_IMPORT_FILE "${ECBUILD_CMAKE_DIR}/ecbuild-import.cmake" )
+  include( ${ECBUILD_IMPORT_FILE} )
+endif()
+
+# insert definitions for IMPORTED targets
+
+if( NOT ecbuild_BINARY_DIR )
+
+  if( ECBUILD_IS_BUILD_DIR_EXPORT )
+		include( "/tmp/metabuilds/ecflow-metab_5062/opensuse131/ecbuild/builds/ecbuild-targets.cmake" OPTIONAL )
+	else()
+		include( "${ECBUILD_CMAKE_DIR}/ecbuild-targets.cmake" )
+	endif()
+
+endif()
+
+# here goes the imports of the TPL's
+
+include( ${CMAKE_CURRENT_LIST_FILE}.tpls OPTIONAL )
+
+# publish this file as imported
+
+set( ECBUILD_IMPORT_FILE ${CMAKE_CURRENT_LIST_FILE} )
+mark_as_advanced( ECBUILD_IMPORT_FILE )
+
+# set ecbuild_BASE_DIR for final installations or build directories
+
+if( NOT ecbuild )
+	if( ECBUILD_IS_BUILD_DIR_EXPORT )
+		set( ecbuild_BASE_DIR /tmp/metabuilds/ecflow-metab_5062/opensuse131/ecbuild/builds )
+	else()
+		set( ecbuild_BASE_DIR /usr/local/apps/ecbuild/1.9.0 )
+	endif()
+endif()
diff --git a/cmake/ecbuild_add_c_flags.cmake b/cmake/ecbuild_add_c_flags.cmake
new file mode 100644
index 0000000..bef1d34
--- /dev/null
+++ b/cmake/ecbuild_add_c_flags.cmake
@@ -0,0 +1,80 @@
+# (C) Copyright 1996-2015 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.
+
+##############################################################################
+#.rst:
+#
+# ecbuild_add_c_flags
+# ===================
+#
+# Add C compiler flags to CMAKE_C_FLAGS only if supported by the compiler. ::
+#
+#   ecbuild_add_c_flags( <flag1> [ <flag2> ... ]
+#                        [ BUILD <build> ]
+#                        [ NAME <name> ] )
+#
+# Options
+# -------
+#
+# BUILD : optional
+#   add flags to ``CMAKE_C_FLAGS_<build>`` instead of ``CMAKE_C_FLAGS``
+#
+# NAME : optional
+#   name of the check (if omitted, checks are enumerated)
+#
+##############################################################################
+
+macro( ecbuild_add_c_flags m_c_flags )
+
+  set( _flags ${m_c_flags} )
+
+  if( _flags AND CMAKE_C_COMPILER_LOADED )
+    set( options )
+    set( single_value_args BUILD NAME )
+    set( multi_value_args )
+
+    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if( NOT DEFINED N_CFLAG )
+      set( N_CFLAG 0 )
+    endif()
+
+    math( EXPR N_CFLAG '${N_CFLAG}+1' )
+
+    if( NOT ECBUILD_TRUST_FLAGS )
+      if( DEFINED _PAR_NAME )
+        check_c_compiler_flag( ${_flags} ${_PAR_NAME} )
+        set( _flag_ok ${${_PAR_NAME}} )
+      else()
+        check_c_compiler_flag( ${_flags} C_FLAG_TEST_${N_CFLAG} )
+        set( _flag_ok ${C_FLAG_TEST_${N_CFLAG}} )
+      endif()
+    else()
+      set( _flag_ok 1 )
+    endif()
+
+    if( _flag_ok )
+      if( _PAR_BUILD )
+        set( CMAKE_C_FLAGS_${_PAR_BUILD} "${CMAKE_C_FLAGS_${_PAR_BUILD}} ${_flags}" )
+        ecbuild_debug( "C FLAG [${_flags}] added for build type ${_PAR_BUILD}" )
+      else()
+        set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flags}" )
+        ecbuild_debug( "C FLAG [${_flags}] added" )
+      endif()
+    else()
+      message( WARNING "Unrecognised C flag [${_flags}] -- skipping" )
+    endif()
+  endif()
+  unset( _flags )
+  unset( _flag_ok )
+endmacro()
+
+macro( cmake_add_c_flags m_c_flags )
+  message( DEPRECATION " cmake_add_c_flags is deprecated, use ecbuild_add_c_flags instead." )
+  ecbuild_add_c_flags( ${m_c_flags} )
+endmacro()
diff --git a/cmake/ecbuild_add_cxx11_flags.cmake b/cmake/ecbuild_add_cxx11_flags.cmake
index 414f39f..a4cce91 100644
--- a/cmake/ecbuild_add_cxx11_flags.cmake
+++ b/cmake/ecbuild_add_cxx11_flags.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -6,17 +6,27 @@
 # granted to it by virtue of its status as an intergovernmental organisation nor
 # does it submit to any jurisdiction.
 
-############################################################################################
-# macro to add cxx11 flags to compilation
-# uses macros from the project github.com/UCL/GreatCMakeCookOff
+##############################################################################
+#.rst:
+#
+# ecbuild_add_cxx11_flags
+# =======================
+#
+# Add cxx11 flags to CXX compilation flags. ::
+#
+#   ecbuild_add_cxx11_flags()
+#
+# This macro uses macros from http://github.com/UCL/GreatCMakeCookOff.
+#
+##############################################################################
 
 macro( ecbuild_add_cxx11_flags )
 
 	# if( CMAKE_COMPILER_IS_GNUCXX )
 	# 	if( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7 )
-	# 		cmake_add_cxx_flags("-std=c++0x")
+	# 		ecbuild_add_cxx_flags("-std=c++0x")
 	# 	else()
-	# 		cmake_add_cxx_flags("-std=c++11")
+	# 		ecbuild_add_cxx_flags("-std=c++11")
 	# 	endif()
 	# endif()
 
diff --git a/cmake/ecbuild_add_cxx_flags.cmake b/cmake/ecbuild_add_cxx_flags.cmake
new file mode 100644
index 0000000..8393572
--- /dev/null
+++ b/cmake/ecbuild_add_cxx_flags.cmake
@@ -0,0 +1,80 @@
+# (C) Copyright 1996-2015 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.
+
+##############################################################################
+#.rst:
+#
+# ecbuild_add_cxx_flags
+# =====================
+#
+# Add C++ compiler flags to CMAKE_CXX_FLAGS only if supported by compiler. ::
+#
+#   ecbuild_add_cxx_flags( <flag1> [ <flag2> ... ]
+#                          [ BUILD <build> ]
+#                          [ NAME <name> ] )
+#
+# Options
+# -------
+#
+# BUILD : optional
+#   add flags to ``CMAKE_CXX_FLAGS_<build>`` instead of ``CMAKE_CXX_FLAGS``
+#
+# NAME : optional
+#   name of the check (if omitted, checks are enumerated)
+#
+##############################################################################
+
+macro( ecbuild_add_cxx_flags m_cxx_flags )
+
+  set( _flags ${m_cxx_flags} )
+  if( _flags AND CMAKE_CXX_COMPILER_LOADED )
+    set( options )
+    set( single_value_args BUILD NAME )
+    set( multi_value_args )
+
+    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if( NOT DEFINED N_CXXFLAG )
+      set( N_CXXFLAG 0 )
+    endif()
+
+    math( EXPR N_CXXFLAG '${N_CXXFLAG}+1' )
+
+    if( NOT ECBUILD_TRUST_FLAGS )
+      if( DEFINED _PAR_NAME )
+        check_cxx_compiler_flag( ${_flags} ${_PAR_NAME} )
+        set( _flag_ok ${${_PAR_NAME}} )
+      else()
+        check_cxx_compiler_flag( ${_flags} CXX_FLAG_TEST_${N_CXXFLAG} )
+        set( _flag_ok CXX_FLAG_TEST_${N_CXXFLAG} )
+      endif()
+    else()
+      set( _flag_ok 1 )
+    endif()
+
+    if( _flag_ok )
+      if( _PAR_BUILD )
+        set( CMAKE_CXX_FLAGS_${_PAR_BUILD} "${CMAKE_CXX_FLAGS_${_PAR_BUILD}} ${_flags}" )
+        ecbuild_debug( "C++ FLAG [${_flags}] added for build type ${_PAR_BUILD}" )
+      else()
+        set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flags}" )
+        ecbuild_debug( "C++ FLAG [${_flags}] added" )
+      endif()
+    else()
+      message( STATUS "Unrecognised CXX flag [${_flags}] -- skipping" )
+    endif()
+  endif()
+  unset( _flags )
+  unset( _flag_ok )
+
+endmacro()
+
+macro( cmake_add_cxx_flags m_cxx_flags )
+  message( DEPRECATION " cmake_add_cxx_flags is deprecated, use ecbuild_add_cxx_flags instead." )
+  ecbuild_add_cxx_flags( ${m_cxx_flags} )
+endmacro()
diff --git a/cmake/ecbuild_add_executable.cmake b/cmake/ecbuild_add_executable.cmake
index 389505a..e4e39a1 100644
--- a/cmake/ecbuild_add_executable.cmake
+++ b/cmake/ecbuild_add_executable.cmake
@@ -1,197 +1,297 @@
-# (C) Copyright 1996-2014 ECMWF.
-# 
+# (C) Copyright 1996-2015 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 
+# 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.
 
 ##############################################################################
-# macro for adding a test
+#.rst:
+#
+# ecbuild_add_executable
+# ======================
+#
+# Add an executable with a given list of source files. ::
+#
+#   ecbuild_add_executable( TARGET <name>
+#                           SOURCES <source1> [<source2> ...]
+#                           [ TEMPLATES <template1> [<template2> ...] ]
+#                           [ LIBS <library1> [<library2> ...] ]
+#                           [ INCLUDES <path1> [<path2> ...] ]
+#                           [ DEFINITIONS <definition1> [<definition2> ...] ]
+#                           [ PERSISTENT <file1> [<file2> ...] ]
+#                           [ GENERATED <file1> [<file2> ...] ]
+#                           [ DEPENDS <target1> [<target2> ...] ]
+#                           [ CONDITION <condition1> [<condition2> ...] ]
+#                           [ NOINSTALL ]
+#                           [ VERSION <version> | AUTO_VERSION ]
+#                           [ CFLAGS <flag1> [<flag2> ...] ]
+#                           [ CXXFLAGS <flag1> [<flag2> ...] ]
+#                           [ FFLAGS <flag1> [<flag2> ...] ]
+#                           [ LINKER_LANGUAGE <lang> ]
+#                           [ OUTPUT_NAME <name> ] )
+#
+# Options
+# -------
+#
+# TARGET : required
+#   target name
+#
+# SOURCES : required
+#   list of source files
+#
+# TEMPLATES : optional
+#   list of files specified as SOURCES which are not to be compiled separately
+#   (these are commonly template implementation files included in a header)
+#
+# LIBS : optional
+#   list of libraries to link against (CMake targets or external libraries)
+#
+# INCLUDES : optional
+#   list of paths to add to include directories
+#
+# DEFINITIONS : optional
+#   list of definitions to add to preprocessor defines
+#
+# PERSISTENT : optional
+#   list of persistent layer object files
+#
+# GENERATED : optional
+#   list of files to mark as generated (sets GENERATED source file property)
+#
+# DEPENDS : optional
+#   list of targets to be built before this target
+#
+# CONDITION : optional
+#   conditional expression which must evaluate to true for this target to be
+#   built (must be valid in a CMake ``if`` statement)
+#
+# NOINSTALL : optional
+#   do not install the executable
+# 
+# VERSION : optional, AUTO_VERSION or LIBS_VERSION is used if not specified
+#   version to use as executable version
+#
+# AUTO_VERSION : optional, ignored if VERSION is specified
+#   automatically version the executable with the package version
+#
+# CFLAGS : optional
+#   list of C compiler flags to use for all C source files
+#
+# CXXFLAGS : optional
+#   list of C++ compiler flags to use for all C++ source files
+#
+# FFLAGS : optional
+#   list of Fortran compiler flags to use for all Fortran source files
+#
+#
+# LINKER_LANGUAGE : optional
+#   sets the LINKER_LANGUAGE property on the target
+#
+# OUTPUT_NAME : optional
+#   sets the OUTPUT_NAME property on the target
+#
 ##############################################################################
 
 macro( ecbuild_add_executable )
 
-	set( options NOINSTALL AUTO_VERSION )
-	set( single_value_args TARGET COMPONENT LINKER_LANGUAGE VERSION OUTPUT_NAME )
-    set( multi_value_args  SOURCES TEMPLATES LIBS INCLUDES DEPENDS PERSISTENT DEFINITIONS CFLAGS CXXFLAGS FFLAGS GENERATED CONDITION )
+  set( options NOINSTALL AUTO_VERSION )
+  set( single_value_args TARGET COMPONENT LINKER_LANGUAGE VERSION OUTPUT_NAME )
+  set( multi_value_args  SOURCES TEMPLATES LIBS INCLUDES DEPENDS PERSISTENT DEFINITIONS CFLAGS CXXFLAGS FFLAGS GENERATED CONDITION )
+
+  cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+  if(_PAR_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "Unknown keywords given to ecbuild_add_executable(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+  endif()
+
+  if( NOT _PAR_TARGET  )
+    message(FATAL_ERROR "The call to ecbuild_add_executable() doesn't specify the TARGET.")
+  endif()
+
+  if( NOT _PAR_SOURCES )
+    message(FATAL_ERROR "The call to ecbuild_add_executable() doesn't specify the SOURCES.")
+  endif()
+
+  ### conditional build
 
-    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+  if( DEFINED _PAR_CONDITION )
+    set(_target_condition_file "${CMAKE_CURRENT_BINARY_DIR}/set_${_PAR_TARGET}_condition.cmake")
+    file( WRITE  ${_target_condition_file} "  if( ")
+    foreach( term ${_PAR_CONDITION} )
+      file( APPEND ${_target_condition_file} " ${term}")
+    endforeach()
+    file( APPEND ${_target_condition_file} " )\n    set(_${_PAR_TARGET}_condition TRUE)\n  else()\n    set(_${_PAR_TARGET}_condition FALSE)\n  endif()\n")
+    include( ${_target_condition_file} )
+  else()
+    set( _${_PAR_TARGET}_condition TRUE )
+  endif()
 
-    if(_PAR_UNPARSED_ARGUMENTS)
-      message(FATAL_ERROR "Unknown keywords given to ecbuild_add_executable(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+  if( _${_PAR_TARGET}_condition )
+
+    # add include dirs if defined
+    if( DEFINED _PAR_INCLUDES )
+      list(REMOVE_DUPLICATES _PAR_INCLUDES )
+      foreach( path ${_PAR_INCLUDES} ) # skip NOTFOUND
+        if( path )
+          ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): add ${path} to include_directories")
+          include_directories( ${path} )
+        else()
+          ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): ${path} not found - not adding to include_directories")
+        endif()
+      endforeach()
     endif()
 
-    if( NOT _PAR_TARGET  )
-      message(FATAL_ERROR "The call to ecbuild_add_executable() doesn't specify the TARGET.")
+    # add persistent layer files
+    if( DEFINED _PAR_PERSISTENT )
+      if( DEFINED PERSISTENT_NAMESPACE )
+        ecbuild_add_persistent( SRC_LIST _PAR_SOURCES FILES ${_PAR_PERSISTENT} NAMESPACE ${PERSISTENT_NAMESPACE} )
+      else()
+        ecbuild_add_persistent( SRC_LIST _PAR_SOURCES FILES ${_PAR_PERSISTENT} )
+      endif()
     endif()
 
-    if( NOT _PAR_SOURCES )
-      message(FATAL_ERROR "The call to ecbuild_add_executable() doesn't specify the SOURCES.")
+    # remove templates from compilation sources
+    if( DEFINED _PAR_TEMPLATES )
+      ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): removing ${_PAR_TEMPLATES} from sources")
+      list( REMOVE_ITEM _PAR_SOURCES ${_PAR_TEMPLATES} )
+      add_custom_target( ${_PAR_TARGET}_templates SOURCES ${_PAR_TEMPLATES} )
     endif()
 
-    ### conditional build
+    # add the executable target
+    add_executable( ${_PAR_TARGET} ${_PAR_SOURCES} )
 
-    if( DEFINED _PAR_CONDITION )
-        set(_target_condition_file "${CMAKE_CURRENT_BINARY_DIR}/set_${_PAR_TARGET}_condition.cmake")
-        file( WRITE  ${_target_condition_file} "  if( ")
-        foreach( term ${_PAR_CONDITION} )
-            file( APPEND ${_target_condition_file} " ${term}")
-        endforeach()
-        file( APPEND ${_target_condition_file} " )\n    set(_${_PAR_TARGET}_condition TRUE)\n  else()\n    set(_${_PAR_TARGET}_condition FALSE)\n  endif()\n")
-        include( ${_target_condition_file} )
-    else()
-        set( _${_PAR_TARGET}_condition TRUE )
+    # set OUTPUT_NAME
+
+    if( DEFINED _PAR_OUTPUT_NAME )
+      ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): set OUTPUT_NAME to ${_PAR_OUTPUT_NAME}")
+      set_target_properties( ${_PAR_TARGET} PROPERTIES OUTPUT_NAME ${_PAR_OUTPUT_NAME} )
     endif()
 
-    if( _${_PAR_TARGET}_condition )
-
-        # add include dirs if defined
-        if( DEFINED _PAR_INCLUDES )
-          list(REMOVE_DUPLICATES _PAR_INCLUDES )
-          foreach( path ${_PAR_INCLUDES} ) # skip NOTFOUND
-            if( path )
-              include_directories( ${path} )
-    #        else()
-    #          message( WARNING "Path ${path} was skipped" )
-            endif()
-          endforeach()
-        endif()
-    
-        # add persistent layer files
-        if( DEFINED _PAR_PERSISTENT )
-			if( DEFINED PERSISTENT_NAMESPACE )
-	            ecbuild_add_persistent( SRC_LIST _PAR_SOURCES FILES ${_PAR_PERSISTENT} NAMESPACE ${PERSISTENT_NAMESPACE} )
-			else()
-	            ecbuild_add_persistent( SRC_LIST _PAR_SOURCES FILES ${_PAR_PERSISTENT} )
-			endif()
-     endif()
-    
-        # add templates to project files and remove from compilation sources
-        if( DEFINED _PAR_TEMPLATES )
-            list( REMOVE_ITEM _PAR_SOURCES ${_PAR_TEMPLATES} )
-            ecbuild_declare_project_files( ${_PAR_TEMPLATES} )
-            add_custom_target( ${_PAR_TARGET}_templates SOURCES ${_PAR_TEMPLATES} )
-        endif()
-    
-        # add the executable target
-        add_executable( ${_PAR_TARGET} ${_PAR_SOURCES} )
-    
-		# set OUTPUT_NAME
-
-		if( DEFINED _PAR_OUTPUT_NAME )
-			set_target_properties( ${_PAR_TARGET} PROPERTIES OUTPUT_NAME ${_PAR_OUTPUT_NAME} )
-		endif()
-
-		# add extra dependencies
-        if( DEFINED _PAR_DEPENDS)
-          add_dependencies( ${_PAR_TARGET} ${_PAR_DEPENDS} )
-        endif()
-    
-        # add the link libraries
-        if( DEFINED _PAR_LIBS )
-          list(REMOVE_DUPLICATES _PAR_LIBS )
-          list(REMOVE_ITEM _PAR_LIBS debug)
-          list(REMOVE_ITEM _PAR_LIBS optimized)
-          foreach( lib ${_PAR_LIBS} ) # skip NOTFOUND
-            if( lib )
-              target_link_libraries( ${_PAR_TARGET} ${lib} )
-            else()
-#              message( WARNING "Lib ${lib} was skipped" )
-            endif()
-          endforeach()
-        endif()
-    
-        # add local flags
-        if( DEFINED _PAR_CFLAGS )
-            set_source_files_properties( ${${_PAR_TARGET}_c_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_CFLAGS}" )
-        endif()
-        if( DEFINED _PAR_CXXFLAGS )
-            set_source_files_properties( ${${_PAR_TARGET}_cxx_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CXXFLAGS}" )
-        endif()
-        if( DEFINED _PAR_FFLAGS )
-            set_source_files_properties( ${${_PAR_TARGET}_f_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_FFLAGS}" )
-        endif()
-        if( DEFINED _PAR_GENERATED )
-            set_source_files_properties( ${_PAR_GENERATED} PROPERTIES GENERATED 1 )
-        endif()
+    # add extra dependencies
+    if( DEFINED _PAR_DEPENDS)
+      ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): add dependency on ${_PAR_DEPENDS}")
+      add_dependencies( ${_PAR_TARGET} ${_PAR_DEPENDS} )
+    endif()
 
-		# define VERSION if requested
-		if( DEFINED _PAR_VERSION )
-			set_target_properties( ${_PAR_TARGET} PROPERTIES VERSION "${_PAR_VERSION}" )
-		else()
-			if( _PAR_AUTO_VERSION )
-				set_target_properties( ${_PAR_TARGET} PROPERTIES VERSION "${${PNAME}_MAJOR_VERSION}.${${PNAME}_MINOR_VERSION}" )
-			endif()
-		endif()
-    
-        # filter sources        
-
-        ecbuild_separate_sources( TARGET ${_PAR_TARGET} SOURCES ${_PAR_SOURCES} )
-
-#    debug_var( ${_PAR_TARGET}_h_srcs )
-#    debug_var( ${_PAR_TARGET}_c_srcs )
-#    debug_var( ${_PAR_TARGET}_cxx_srcs )
-#    debug_var( ${_PAR_TARGET}_f_srcs )
-
-        # installation
-
-        if( NOT _PAR_NOINSTALL )
-
-            # add installation paths and associate with defined component
-#            if( DEFINED _PAR_COMPONENT )
-#                set( COMPONENT_DIRECTIVE "${_PAR_COMPONENT}" )
-#            else()
-#                set( COMPONENT_DIRECTIVE "${PROJECT_NAME}" )
-#            endif()
-        
-            install( TARGETS ${_PAR_TARGET}
-              EXPORT  ${CMAKE_PROJECT_NAME}-targets
-              RUNTIME DESTINATION ${INSTALL_BIN_DIR}
-              LIBRARY DESTINATION ${INSTALL_LIB_DIR}
-              ARCHIVE DESTINATION ${INSTALL_LIB_DIR} )
-#              COMPONENT ${COMPONENT_DIRECTIVE} )
-
-            # set build location
-
-            set_property( TARGET ${_PAR_TARGET} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
-
-            # export location of target to other projects -- must be exactly after setting the build location (see previous command)
-
-            export( TARGETS ${_PAR_TARGET} APPEND FILE "${TOP_PROJECT_TARGETS_FILE}" )
-
-		else()
-				# NOINSTALL targets are always built the build_rpath, not the install_rpath
-				set_property( TARGET ${_PAR_TARGET} PROPERTY SKIP_BUILD_RPATH         FALSE )
-				set_property( TARGET ${_PAR_TARGET} PROPERTY BUILD_WITH_INSTALL_RPATH FALSE )
-		endif()
-    
-        # add definitions to compilation
-        if( DEFINED _PAR_DEFINITIONS )
-            get_property( _target_defs TARGET ${_PAR_TARGET} PROPERTY COMPILE_DEFINITIONS )
-            list( APPEND _target_defs ${_PAR_DEFINITIONS} )
-            set_property( TARGET ${_PAR_TARGET} PROPERTY COMPILE_DEFINITIONS ${_target_defs} )
-        endif()
-        
-        # set linker language
-        if( DEFINED _PAR_LINKER_LANGUAGE )
-            set_property( TARGET ${_PAR_TARGET} PROPERTY LINKER_LANGUAGE ${_PAR_LINKER_LANGUAGE} )
+    # add the link libraries
+    if( DEFINED _PAR_LIBS )
+      list(REMOVE_DUPLICATES _PAR_LIBS )
+      list(REMOVE_ITEM _PAR_LIBS debug)
+      list(REMOVE_ITEM _PAR_LIBS optimized)
+      foreach( lib ${_PAR_LIBS} ) # skip NOTFOUND
+        if( lib )
+          ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): linking with ${lib}")
+          target_link_libraries( ${_PAR_TARGET} ${lib} )
+        else()
+          ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): ${lib} not found - not linking")
         endif()
+      endforeach()
+    endif()
 
-        # make sure target is removed before - some problems with AIX
-        add_custom_command( TARGET ${_PAR_TARGET} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E remove $<TARGET_FILE:${_PAR_TARGET}> )
-    
-        # for the links target
-        if( NOT _PAR_NOINSTALL )
-            ecbuild_link_exe( ${_PAR_TARGET} $<TARGET_FILE_NAME:${_PAR_TARGET}> $<TARGET_FILE:${_PAR_TARGET}>  )
-        endif()
+    # filter sources
+    ecbuild_separate_sources( TARGET ${_PAR_TARGET} SOURCES ${_PAR_SOURCES} )
 
-        # append to the list of this project targets
-        set( ${PROJECT_NAME}_ALL_EXES ${${PROJECT_NAME}_ALL_EXES} ${_PAR_TARGET} CACHE INTERNAL "" )    
+    # add local flags
+    if( DEFINED _PAR_CFLAGS )
+      ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): use C flags ${_PAR_CFLAGS}")
+      set_source_files_properties( ${${_PAR_TARGET}_c_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_CFLAGS}" )
+    endif()
+    if( DEFINED _PAR_CXXFLAGS )
+      ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): use C++ flags ${_PAR_CFLAGS}")
+      set_source_files_properties( ${${_PAR_TARGET}_cxx_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CXXFLAGS}" )
+    endif()
+    if( DEFINED _PAR_FFLAGS )
+      ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): use Fortran flags ${_PAR_CFLAGS}")
+      set_source_files_properties( ${${_PAR_TARGET}_f_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_FFLAGS}" )
+    endif()
+    if( DEFINED _PAR_GENERATED )
+      ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): mark as generated ${_PAR_GENERATED}")
+      set_source_files_properties( ${_PAR_GENERATED} PROPERTIES GENERATED 1 )
+    endif()
+
+    # define VERSION if requested
+    if( DEFINED _PAR_VERSION )
+      ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): set version to ${_PAR_VERSION}")
+      set_target_properties( ${_PAR_TARGET} PROPERTIES VERSION "${_PAR_VERSION}" )
+    else()
+      if( _PAR_AUTO_VERSION )
+        ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): set version to ${${PNAME}_MAJOR_VERSION}.${${PNAME}_MINOR_VERSION}")
+        set_target_properties( ${_PAR_TARGET} PROPERTIES VERSION "${${PNAME}_MAJOR_VERSION}.${${PNAME}_MINOR_VERSION}" )
+      endif()
+    endif()
+
+    #    debug_var( ${_PAR_TARGET}_h_srcs )
+    #    debug_var( ${_PAR_TARGET}_c_srcs )
+    #    debug_var( ${_PAR_TARGET}_cxx_srcs )
+    #    debug_var( ${_PAR_TARGET}_f_srcs )
+
+    # installation
+
+    if( NOT _PAR_NOINSTALL )
+      ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): installing to ${INSTALL_BIN_DIR}")
+
+      # add installation paths and associate with defined component
+      #            if( DEFINED _PAR_COMPONENT )
+      #                set( COMPONENT_DIRECTIVE "${_PAR_COMPONENT}" )
+      #            else()
+      #                set( COMPONENT_DIRECTIVE "${PROJECT_NAME}" )
+      #            endif()
+
+      install( TARGETS ${_PAR_TARGET}
+               EXPORT  ${CMAKE_PROJECT_NAME}-targets
+               RUNTIME DESTINATION ${INSTALL_BIN_DIR}
+               LIBRARY DESTINATION ${INSTALL_LIB_DIR}
+               ARCHIVE DESTINATION ${INSTALL_LIB_DIR} )
+      #        COMPONENT ${COMPONENT_DIRECTIVE} )
+
+      # set build location
+
+      set_property( TARGET ${_PAR_TARGET} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
 
+      # export location of target to other projects -- must be exactly after setting the build location (see previous command)
+
+      export( TARGETS ${_PAR_TARGET} APPEND FILE "${TOP_PROJECT_TARGETS_FILE}" )
+
+    else()
+      ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): not installing")
+      # NOINSTALL targets are always built the build_rpath, not the install_rpath
+      set_property( TARGET ${_PAR_TARGET} PROPERTY SKIP_BUILD_RPATH         FALSE )
+      set_property( TARGET ${_PAR_TARGET} PROPERTY BUILD_WITH_INSTALL_RPATH FALSE )
+    endif()
+
+    # add definitions to compilation
+    if( DEFINED _PAR_DEFINITIONS )
+      get_property( _target_defs TARGET ${_PAR_TARGET} PROPERTY COMPILE_DEFINITIONS )
+      list( APPEND _target_defs ${_PAR_DEFINITIONS} )
+      ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): using definitions ${_target_defs}")
+      set_property( TARGET ${_PAR_TARGET} PROPERTY COMPILE_DEFINITIONS ${_target_defs} )
+    endif()
+
+    # set linker language
+    if( DEFINED _PAR_LINKER_LANGUAGE )
+      ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): using linker language ${_PAR_LINKER_LANGUAGE}")
+      set_property( TARGET ${_PAR_TARGET} PROPERTY LINKER_LANGUAGE ${_PAR_LINKER_LANGUAGE} )
+    endif()
+
+    # make sure target is removed before - some problems with AIX
+    add_custom_command( TARGET ${_PAR_TARGET} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E remove $<TARGET_FILE:${_PAR_TARGET}> )
+
+    # for the links target
+    if( NOT _PAR_NOINSTALL )
+      ecbuild_link_exe( ${_PAR_TARGET} $<TARGET_FILE_NAME:${_PAR_TARGET}> $<TARGET_FILE:${_PAR_TARGET}>  )
     endif()
 
-    # mark project files
-    ecbuild_declare_project_files( ${_PAR_SOURCES} )
+    # append to the list of this project targets
+    set( ${PROJECT_NAME}_ALL_EXES ${${PROJECT_NAME}_ALL_EXES} ${_PAR_TARGET} CACHE INTERNAL "" )
+
+  endif()
+
+  # mark source files as used
+  ecbuild_declare_project_files( ${_PAR_SOURCES} )
+  if( DEFINED _PAR_TEMPLATES )
+    ecbuild_declare_project_files( ${_PAR_TEMPLATES} )
+  endif()
 
 endmacro( ecbuild_add_executable  )
diff --git a/cmake/ecbuild_add_extra_search_paths.cmake b/cmake/ecbuild_add_extra_search_paths.cmake
index 8e28091..fac96ba 100644
--- a/cmake/ecbuild_add_extra_search_paths.cmake
+++ b/cmake/ecbuild_add_extra_search_paths.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -6,7 +6,7 @@
 # granted to it by virtue of its status as an intergovernmental organisation nor
 # does it submit to any jurisdiction.
 
-############################################################################################
+###############################################################################
 #
 # macro for adding search paths to CMAKE_PREFIX_PATH
 # for example the ECMWF /usr/local/apps paths
@@ -15,20 +15,19 @@
 
 function( ecbuild_add_extra_search_paths pkg )
 
-# debug_var( pkg )
+  message( DEPRECATION " ecbuild_add_extra_search_paths modifies CMAKE_PREFIX_PATH,"
+           " which can affect future package discovery if not undone by the caller."
+           " The current CMAKE_PREFIX_PATH is being backed up as _CMAKE_PREFIX_PATH"
+           " so it can later be restored." )
 
-	ecbuild_list_extra_search_paths( ${pkg} CMAKE_PREFIX_PATH )
+  # Back up current CMAKE_PREFIX_PATH so the caller can reset it
+  set( _CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE )
 
-	set( CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE )
+  string( TOUPPER ${pkg} _PKG )
 
-	# fixes BOOST_ROOT taking precedence on the search for location
-	if( ${pkg} STREQUAL "boost" )
-		if( BOOST_ROOT OR BOOSTROOT OR DEFINED ENV{BOOST_ROOT} OR DEFINED ENV{BOOSTROOT} )
-			set( CMAKE_PREFIX_PATH ${BOOST_ROOT} ${BOOSTROOT} $ENV{BOOST_ROOT} $ENV{BOOSTROOT} ${CMAKE_PREFIX_PATH} )
-		endif()
-	endif()
+  ecbuild_list_extra_search_paths( ${pkg} CMAKE_PREFIX_PATH )
 
-# debug_var( CMAKE_PREFIX_PATH )
+  set( CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE )
+  # debug_var( CMAKE_PREFIX_PATH )
 
 endfunction()
-
diff --git a/cmake/ecbuild_add_fortran_flags.cmake b/cmake/ecbuild_add_fortran_flags.cmake
new file mode 100644
index 0000000..f0da53f
--- /dev/null
+++ b/cmake/ecbuild_add_fortran_flags.cmake
@@ -0,0 +1,86 @@
+# (C) Copyright 1996-2015 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.
+
+##############################################################################
+#.rst:
+#
+# ecbuild_add_fortran_flags
+# =========================
+#
+# Add Fortran compiler flags to CMAKE_Fortran_FLAGS only if supported by the
+# compiler. ::
+#
+#   ecbuild_add_fortran_flags( <flag1> [ <flag2> ... ]
+#                              [ BUILD <build> ]
+#                              [ NAME <name> ] )
+#
+# Options
+# -------
+#
+# BUILD : optional
+#   add flags to ``CMAKE_Fortran_FLAGS_<build>`` instead of
+#   ``CMAKE_Fortran_FLAGS``
+#
+# NAME : optional
+#   name of the check (if omitted, checks are enumerated)
+#
+##############################################################################
+
+include( CheckFortranCompilerFlag )
+macro( ecbuild_add_fortran_flags m_fortran_flags )
+
+  set( _flags ${m_fortran_flags} )
+
+  if( _flags AND CMAKE_Fortran_COMPILER_LOADED )
+
+    set( options )
+    set( single_value_args BUILD NAME )
+    set( multi_value_args )
+
+    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if( NOT DEFINED N_FortranFLAG )
+      set( N_FortranFLAG 0 )
+    endif()
+
+    math( EXPR N_FortranFLAG '${N_FortranFLAG}+1' )
+
+    if( NOT ECBUILD_TRUST_FLAGS )
+      if( DEFINED _PAR_NAME )
+        check_fortran_compiler_flag( ${_flags} ${_PAR_NAME} )
+        set( _flag_ok ${${_PAR_NAME}} )
+      else()
+        check_fortran_compiler_flag( ${_flags} Fortran_FLAG_TEST_${N_FortranFLAG} )
+        set( _flag_ok ${Fortran_FLAG_TEST_${N_FortranFLAG}} )
+      endif()
+    else()
+      set( _flag_ok 1 )
+    endif()
+
+    if( _flag_ok )
+      if( _PAR_BUILD )
+        set( CMAKE_Fortran_FLAGS_${_PAR_BUILD} "${CMAKE_Fortran_FLAGS_${_PAR_BUILD}} ${_flags}" )
+        ecbuild_debug( "Fortran FLAG [${_flags}] added for build type ${_PAR_BUILD}" )
+      else()
+        set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${_flags}" )
+        ecbuild_debug( "Fortran FLAG [${_flags}] added" )
+      endif()
+    else()
+      message( STATUS "Unrecognised Fortran flag [${_flags}] -- skipping" )
+    endif()
+  endif()
+
+  unset( _flags )
+  unset( _flag_ok )
+
+endmacro()
+
+macro( cmake_add_fortran_flags m_fortran_flags )
+  message( DEPRECATION " cmake_add_fortran_flags is deprecated, use ecbuild_add_fortran_flags instead." )
+  ecbuild_add_fortran_flags( ${m_fortran_flags} )
+endmacro()
diff --git a/cmake/ecbuild_add_library.cmake b/cmake/ecbuild_add_library.cmake
index 534807f..dc47956 100644
--- a/cmake/ecbuild_add_library.cmake
+++ b/cmake/ecbuild_add_library.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -7,266 +7,437 @@
 # does it submit to any jurisdiction.
 
 ##############################################################################
-# auxiliary macro for adding a library
+#.rst:
+#
+# ecbuild_add_library
+# ===================
+#
+# Add a library with a given list of source files. ::
+#
+#   ecbuild_add_library( TARGET <name>
+#                        SOURCES <source1> [<source2> ...]
+#                        [ TYPE SHARED|STATIC|MODULE ]
+#                        [ TEMPLATES <template1> [<template2> ...] ]
+#                        [ LIBS <library1> [<library2> ...] ]
+#                        [ INCLUDES <path1> [<path2> ...] ]
+#                        [ PRIVATE_INCLUDES <path1> [<path2> ...] ]
+#                        [ PUBLIC_INCLUDES <path1> [<path2> ...] ]
+#                        [ DEFINITIONS <definition1> [<definition2> ...] ]
+#                        [ PERSISTENT <file1> [<file2> ...] ]
+#                        [ GENERATED <file1> [<file2> ...] ]
+#                        [ DEPENDS <target1> [<target2> ...] ]
+#                        [ CONDITION <condition1> [<condition2> ...] ]
+#                        [ NOINSTALL ]
+#                        [ HEADER_DESTINATION <path> ]
+#                        [ INSTALL_HEADERS LISTED|ALL ]
+#                        [ INSTALL_HEADERS_LIST <header1> [<header2> ...] ]
+#                        [ INSTALL_HEADERS_REGEX <pattern> ]
+#                        [ VERSION <version> | AUTO_VERSION ]
+#                        [ CFLAGS <flag1> [<flag2> ...] ]
+#                        [ CXXFLAGS <flag1> [<flag2> ...] ]
+#                        [ FFLAGS <flag1> [<flag2> ...] ]
+#                        [ LINKER_LANGUAGE <lang> ]
+#                        [ OUTPUT_NAME <name> ] )
+#
+# Options
+# -------
+#
+# TARGET : required
+#   target name
+#
+# SOURCES : required
+#   list of source files
+#
+# TYPE : optional
+#   library type, one of:
+#
+#   :SHARED: libraries are linked dynamically and loaded at runtime
+#   :STATIC: archives of object files for use when linking other targets.
+#   :MODULE: plugins that are not linked into other targets but may be loaded
+#            dynamically at runtime using dlopen-like functionality
+#
+# TEMPLATES : optional
+#   list of files specified as SOURCES which are not to be compiled separately
+#   (these are commonly template implementation files included in a header)
+#
+# LIBS : optional
+#   list of libraries to link against (CMake targets or external libraries)
+#
+# INCLUDES : (DEPRECATED) optional
+#   list of paths to add to include directories, behaves as PUBLIC_INCLUDES if CMake >= 2.8.11
+#   and reverts to include_directories() for CMake < 2.8.11
+#
+# PUBLIC_INCLUDES : optional
+#   list of paths to add to include directories which will be publicly exported to other projects
+#
+# PRIVATE_INCLUDES : optional
+#   list of paths to add to include directories which won't be exported to other projects,
+#   equivalent to using a include_directories() before calling this macro
+#
+# DEFINITIONS : optional
+#   list of definitions to add to preprocessor defines
+#
+# PERSISTENT : optional
+#   list of persistent layer object files
+#
+# GENERATED : optional
+#   list of files to mark as generated (sets GENERATED source file property)
+#
+# DEPENDS : optional
+#   list of targets to be built before this target
+#
+# CONDITION : optional
+#   conditional expression which must evaluate to true for this target to be
+#   built (must be valid in a CMake ``if`` statement)
+#
+# NOINSTALL : optional
+#   do not install the library
+#
+# HEADER_DESTINATION
+#   directory to install headers (if not specified, INSTALL_INCLUDE_DIR is used)
+#
+# INSTALL_HEADERS : optional
+#   specify which header files to install:
+#
+#   :LISTED: install header files listed as SOURCES
+#   :ALL:    install all header files ending in .h, .hh, .hpp, .H
+#
+# INSTALL_HEADERS_LIST : optional
+#   list of extra headers to install
+#
+# INSTALL_HEADERS_REGEX : optional
+#   regular expression to match extra headers to install
+#
+# VERSION : optional, AUTO_VERSION or LIBS_VERSION is used if not specified
+#   version to use as library version
+#
+# AUTO_VERSION : optional, ignored if VERSION is specified
+#   automatically version the library with the package version
+#
+# CFLAGS : optional
+#   list of C compiler flags to use for all C source files
+#
+# CXXFLAGS : optional
+#   list of C++ compiler flags to use for all C++ source files
+#
+# FFLAGS : optional
+#   list of Fortran compiler flags to use for all Fortran source files
+#
+# LINKER_LANGUAGE : optional
+#   sets the LINKER_LANGUAGE property on the target
+#
+# OUTPUT_NAME : optional
+#   sets the OUTPUT_NAME property on the target
+#
 ##############################################################################
 
 function( ecbuild_add_library_impl )
 
-	set( options NOINSTALL AUTO_VERSION )
-	set( single_value_args TARGET TYPE COMPONENT INSTALL_HEADERS LINKER_LANGUAGE HEADER_DESTINATION VERSION OUTPUT_NAME )
-	set( multi_value_args  SOURCES TEMPLATES LIBS INCLUDES DEPENDS PERSISTENT DEFINITIONS CFLAGS CXXFLAGS FFLAGS GENERATED CONDITION )
-
-	cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
-
-	if(_PAR_UNPARSED_ARGUMENTS)
-	  message(FATAL_ERROR "Unknown keywords given to ecbuild_add_library(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
-	endif()
-
-	if( NOT _PAR_TARGET  )
-	  message(FATAL_ERROR "The call to ecbuild_add_library() doesn't specify the TARGET.")
-	endif()
-
-	if( NOT _PAR_SOURCES )
-	  message(FATAL_ERROR "The call to ecbuild_add_library() doesn't specify the SOURCES.")
-	endif()
-
-	### conditional build
-
-	if( DEFINED _PAR_CONDITION )
-		set(_target_condition_file "${CMAKE_CURRENT_BINARY_DIR}/set_${_PAR_TARGET}_condition.cmake")
-		file( WRITE  ${_target_condition_file} "  if( ")
-		foreach( term ${_PAR_CONDITION} )
-			file( APPEND ${_target_condition_file} " ${term}")
-		endforeach()
-		file( APPEND ${_target_condition_file} " )\n    set(_${_PAR_TARGET}_condition TRUE)\n  else()\n    set(_${_PAR_TARGET}_condition FALSE)\n  endif()\n")
-		include( ${_target_condition_file} )
-	else()
-		set( _${_PAR_TARGET}_condition TRUE )
-	endif()
-
-	if( _${_PAR_TARGET}_condition )
-
-		# defines the type of library
-		if( DEFINED _PAR_TYPE )
-			# checks that is either SHARED or STATIC or MODULE
-			if( NOT _PAR_TYPE MATCHES "STATIC" AND
-				NOT _PAR_TYPE MATCHES "SHARED" AND
-				NOT _PAR_TYPE MATCHES "MODULE" )
-				message( FATAL_ERROR "library type must be one of [ STATIC | SHARED | MODULE ]" )
-			endif()
-		endif()
-
-
-		# add persistent layer files
-		if( DEFINED _PAR_PERSISTENT )
-			if( DEFINED PERSISTENT_NAMESPACE )
-				ecbuild_add_persistent( SRC_LIST _PAR_SOURCES FILES ${_PAR_PERSISTENT} NAMESPACE ${PERSISTENT_NAMESPACE} )
-			else()
-				ecbuild_add_persistent( SRC_LIST _PAR_SOURCES FILES ${_PAR_PERSISTENT} )
-			endif()
-		endif()
-
-		# add templates to project files and remove from compilation sources
-		if( DEFINED _PAR_TEMPLATES )
-			list( REMOVE_ITEM _PAR_SOURCES ${_PAR_TEMPLATES} )
-			ecbuild_declare_project_files( ${_PAR_TEMPLATES} )
-			add_custom_target( ${_PAR_TARGET}_templates SOURCES ${_PAR_TEMPLATES} )
-		endif()
-
-		add_library( ${_PAR_TARGET} ${_PAR_TYPE} ${_PAR_SOURCES} )
-
-		# set OUTPUT_NAME
-
-		if( DEFINED _PAR_OUTPUT_NAME )
-			set_target_properties( ${_PAR_TARGET} PROPERTIES OUTPUT_NAME ${_PAR_OUTPUT_NAME} )
-		endif()
-
-		# add extra dependencies
-		if( DEFINED _PAR_DEPENDS)
-		  add_dependencies( ${_PAR_TARGET} ${_PAR_DEPENDS} )
-		endif()
-
-		# add the link libraries
-		if( DEFINED _PAR_LIBS )
-		  list(REMOVE_DUPLICATES _PAR_LIBS )
-		  list(REMOVE_ITEM _PAR_LIBS debug)
-		  list(REMOVE_ITEM _PAR_LIBS optimized)
-		  foreach( lib ${_PAR_LIBS} ) # skip NOTFOUND
-			if( lib )
-			  target_link_libraries( ${_PAR_TARGET} ${lib} )
-			else()
-#              message( WARNING "Lib ${lib} was skipped" )
-			endif()
-		  endforeach()
-		endif()
-
-		# add include dirs if defined
-		if( DEFINED _PAR_INCLUDES )
-		  list( REMOVE_DUPLICATES _PAR_INCLUDES )
-		  foreach( path ${_PAR_INCLUDES} ) # skip NOTFOUND
-			if( path )
-				if( "${CMAKE_VERSION}" VERSION_LESS "2.8.11" )
-					include_directories( ${path} )
-				else()
-			  		target_include_directories( ${_PAR_TARGET} PUBLIC ${path} )
-				endif()
-	#        else()
-	#          message( WARNING "Path ${path} was skipped" )
-			endif()
-		  endforeach()
-		endif()
-
-		# FIX: Cray compiler PIC option is not detected by CMake
-
-		get_property( _target_pic TARGET ${_PAR_TARGET} PROPERTY POSITION_INDEPENDENT_CODE )
-		if( _target_pic )
-			if( "${CMAKE_C_COMPILER_ID}" STREQUAL "Cray" )
-				set( _PAR_CFLAGS "-fPIC -h PIC ${_PAR_CFLAGS}" )
-			endif()
-			if( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Cray" )
-				set( _PAR_CXXFLAGS "-fPIC -h PIC ${_PAR_CXXFLAGS}" )
-			endif()
-			if( "${CMAKE_Fortran_COMPILER_ID}" STREQUAL "Cray" )
-				set( _PAR_FFLAGS "-fPIC -h PIC ${_PAR_FFLAGS}" )
-			endif()
-		endif()
-
-		# define VERSION if requested
-		if( DEFINED _PAR_VERSION )
-			set_target_properties( ${_PAR_TARGET} PROPERTIES VERSION "${_PAR_VERSION}" )
-		else()
-			if( _PAR_AUTO_VERSION OR LIBS_VERSION MATCHES "[Aa][Uu][Tt][Oo]")
-				set_target_properties( ${_PAR_TARGET} PROPERTIES VERSION "${${PNAME}_MAJOR_VERSION}.${${PNAME}_MINOR_VERSION}" )
-			endif()
-			if( LIBS_VERSION AND NOT LIBS_VERSION MATCHES "[Aa][Uu][Tt][Oo]" )
-				set_target_properties( ${_PAR_TARGET} PROPERTIES VERSION "${LIBS_VERSION}" )
-			endif()
-		endif()
-
-		# filter sources
-
-		ecbuild_separate_sources( TARGET ${_PAR_TARGET} SOURCES ${_PAR_SOURCES} )
-
-#		debug_var( ${_PAR_TARGET}_h_srcs )
-#		debug_var( ${_PAR_TARGET}_c_srcs )
-#		debug_var( ${_PAR_TARGET}_cxx_srcs )
-#		debug_var( ${_PAR_TARGET}_f_srcs )
-
-		# add local flags
-
-		if( DEFINED _PAR_CFLAGS )
-			set_source_files_properties( ${${_PAR_TARGET}_c_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_CFLAGS}" )
-		endif()
-		if( DEFINED _PAR_CXXFLAGS )
-			set_source_files_properties( ${${_PAR_TARGET}_cxx_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CXXFLAGS}" )
-		endif()
-		if( DEFINED _PAR_FFLAGS )
-			set_source_files_properties( ${${_PAR_TARGET}_f_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_FFLAGS}" )
-		endif()
-		if( DEFINED _PAR_GENERATED )
-			set_source_files_properties( ${_PAR_GENERATED} PROPERTIES GENERATED 1 )
-		endif()
-
-		# set linker language
-		if( DEFINED _PAR_LINKER_LANGUAGE )
-			set_property( TARGET ${_PAR_TARGET} PROPERTY LINKER_LANGUAGE ${_PAR_LINKER_LANGUAGE} )
-		endif()
-
-		# installation
-
-		if( NOT _PAR_NOINSTALL )
-
-			# and associate with defined component
-#            if( DEFINED _PAR_COMPONENT )
-#                set( COMPONENT_DIRECTIVE "${_PAR_COMPONENT}" )
-#            else()
-#                set( COMPONENT_DIRECTIVE "${PROJECT_NAME}" )
-#            endif()
-
-			install( TARGETS ${_PAR_TARGET}
-			  EXPORT  ${CMAKE_PROJECT_NAME}-targets
-			  RUNTIME DESTINATION ${INSTALL_BIN_DIR}
-			  LIBRARY DESTINATION ${INSTALL_LIB_DIR}
-			  ARCHIVE DESTINATION ${INSTALL_LIB_DIR} )
-#              COMPONENT ${COMPONENT_DIRECTIVE} )
-
-			# install headers
-			if( _PAR_HEADER_DESTINATION )
-				set( _h_destination "${_PAR_HEADER_DESTINATION}" )
-			else()
-				set( _h_destination "${INSTALL_INCLUDE_DIR}" )
-			endif()
-
-			if( _PAR_INSTALL_HEADERS )
-				if( _PAR_INSTALL_HEADERS MATCHES "LISTED" )
-					foreach( file ${${_PAR_TARGET}_h_srcs} )
-						get_filename_component( _file_dir ${file} PATH )
-						install( FILES ${file} DESTINATION "${_h_destination}/${_file_dir}" )
-					endforeach()
-					if( DEFINED _PAR_TEMPLATES )
-						foreach( file ${_PAR_TEMPLATES} )
-							get_filename_component( _file_dir ${file} PATH )
-							install( FILES ${file} DESTINATION "${_h_destination}/${_file_dir}" )
-						endforeach()
-					endif()
-					if( DEFINED _PAR_PERSISTENT )
-						foreach( file ${_PAR_PERSISTENT} )
-							  get_filename_component( _file_dir ${file} PATH )
-							  get_filename_component( _file_we  ${file} NAME_WE )
-							  set( pfile "${CMAKE_CURRENT_BINARY_DIR}/${_file_dir}/${_file_we}.b" )
-							  install( FILES ${pfile} DESTINATION "${_h_destination}/${_file_dir}" )
-						endforeach()
-					endif()
-				endif()
-				if( _PAR_INSTALL_HEADERS MATCHES "ALL" ) # "(\\.h|\\.b|\\.hxx|\\.hh|\\.hpp|\\.H)" ????
-					install( DIRECTORY ./  DESTINATION ${_h_destination} FILES_MATCHING PATTERN "*.h" )
-					install( DIRECTORY ./  DESTINATION ${_h_destination} FILES_MATCHING PATTERN "*.hh" )
-					install( DIRECTORY ./  DESTINATION ${_h_destination} FILES_MATCHING PATTERN "*.hpp" )
-					install( DIRECTORY ./  DESTINATION ${_h_destination} FILES_MATCHING PATTERN "*.H" )
-				endif()
-			endif()
-
-			if( DEFINED _PAR_INSTALL_HEADERS_LIST )
-				install( FILES ${_PAR_INSTALL_HEADERS_LIST} DESTINATION ${_h_destination} )
-			endif()
-
-			if( DEFINED _PAR_INSTALL_HEADERS_REGEX )
-				install( DIRECTORY ./  DESTINATION ${_h_destination} FILES_MATCHING PATTERN "${_PAR_INSTALL_HEADERS_REGEX}")
-			endif()
-
-			# set build location
-
-			set_property( TARGET ${_PAR_TARGET} PROPERTY LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
-			set_property( TARGET ${_PAR_TARGET} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
-
-			# export location of target to other projects -- must be exactly after setting the build location (see previous 2 commands)
-
-			export( TARGETS ${_PAR_TARGET} APPEND FILE "${TOP_PROJECT_TARGETS_FILE}" )
-
-		endif()
-
-		# add definitions to compilation
-		if( DEFINED _PAR_DEFINITIONS )
-			get_property( _target_defs TARGET ${_PAR_TARGET} PROPERTY COMPILE_DEFINITIONS )
-			list( APPEND _target_defs ${_PAR_DEFINITIONS} )
-			set_property( TARGET ${_PAR_TARGET} PROPERTY COMPILE_DEFINITIONS ${_target_defs} )
-		endif()
-
-		# make sure target is removed before - some problems with AIX
-		add_custom_command( TARGET ${_PAR_TARGET} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E remove $<TARGET_FILE:${_PAR_TARGET}> )
-
-		# for the links target
-		if( NOT _PAR_NOINSTALL )
-			ecbuild_link_lib( ${_PAR_TARGET} $<TARGET_FILE_NAME:${_PAR_TARGET}> $<TARGET_FILE:${_PAR_TARGET}>  )
-		endif()
-
-		# append to the list of this project targets
-		set( ${PROJECT_NAME}_ALL_LIBS ${${PROJECT_NAME}_ALL_LIBS} ${_PAR_TARGET} CACHE INTERNAL "" )
-
-	endif()
-
-	# mark project files
-	ecbuild_declare_project_files( ${_PAR_SOURCES} )
+  set( options NOINSTALL AUTO_VERSION )
+  set( single_value_args TARGET TYPE COMPONENT INSTALL_HEADERS INSTALL_HEADERS_REGEX LINKER_LANGUAGE HEADER_DESTINATION VERSION OUTPUT_NAME )
+  set( multi_value_args  SOURCES TEMPLATES LIBS INCLUDES PRIVATE_INCLUDES PUBLIC_INCLUDES DEPENDS PERSISTENT DEFINITIONS INSTALL_HEADERS_LIST CFLAGS CXXFLAGS FFLAGS GENERATED CONDITION )
+
+  cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+  if(_PAR_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "Unknown keywords given to ecbuild_add_library(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+  endif()
+
+  if( NOT _PAR_TARGET  )
+    message(FATAL_ERROR "The call to ecbuild_add_library() doesn't specify the TARGET.")
+  endif()
+
+  if( NOT _PAR_SOURCES )
+    message(FATAL_ERROR "The call to ecbuild_add_library() doesn't specify the SOURCES.")
+  endif()
+
+  ### conditional build
+
+  if( DEFINED _PAR_CONDITION )
+    set(_target_condition_file "${CMAKE_CURRENT_BINARY_DIR}/set_${_PAR_TARGET}_condition.cmake")
+    file( WRITE  ${_target_condition_file} "  if( ")
+    foreach( term ${_PAR_CONDITION} )
+      file( APPEND ${_target_condition_file} " ${term}")
+    endforeach()
+    file( APPEND ${_target_condition_file} " )\n    set(_${_PAR_TARGET}_condition TRUE)\n  else()\n    set(_${_PAR_TARGET}_condition FALSE)\n  endif()\n")
+    include( ${_target_condition_file} )
+  else()
+    set( _${_PAR_TARGET}_condition TRUE )
+  endif()
+
+  if( _${_PAR_TARGET}_condition )
+
+    # defines the type of library
+    if( DEFINED _PAR_TYPE )
+      # checks that is either SHARED or STATIC or MODULE
+      if( NOT _PAR_TYPE MATCHES "STATIC" AND
+          NOT _PAR_TYPE MATCHES "SHARED" AND
+          NOT _PAR_TYPE MATCHES "MODULE" )
+        message( FATAL_ERROR "library type must be one of [ STATIC | SHARED | MODULE ]" )
+      endif()
+      ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): library type is ${_PAR_TYPE}")
+    endif()
+
+
+    # add persistent layer files
+    if( DEFINED _PAR_PERSISTENT )
+      if( DEFINED PERSISTENT_NAMESPACE )
+        ecbuild_add_persistent( SRC_LIST _PAR_SOURCES FILES ${_PAR_PERSISTENT} NAMESPACE ${PERSISTENT_NAMESPACE} )
+      else()
+        ecbuild_add_persistent( SRC_LIST _PAR_SOURCES FILES ${_PAR_PERSISTENT} )
+      endif()
+    endif()
+
+    # remove templates from compilation sources
+    if( DEFINED _PAR_TEMPLATES )
+      ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): removing ${_PAR_TEMPLATES} from sources")
+      list( REMOVE_ITEM _PAR_SOURCES ${_PAR_TEMPLATES} )
+      add_custom_target( ${_PAR_TARGET}_templates SOURCES ${_PAR_TEMPLATES} )
+    endif()
+
+    add_library( ${_PAR_TARGET} ${_PAR_TYPE} ${_PAR_SOURCES} )
+
+    # set OUTPUT_NAME
+
+    if( DEFINED _PAR_OUTPUT_NAME )
+      ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): set OUTPUT_NAME to ${_PAR_OUTPUT_NAME}")
+      set_target_properties( ${_PAR_TARGET} PROPERTIES OUTPUT_NAME ${_PAR_OUTPUT_NAME} )
+    endif()
+
+    # add extra dependencies
+    if( DEFINED _PAR_DEPENDS)
+      ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): add dependency on ${_PAR_DEPENDS}")
+      add_dependencies( ${_PAR_TARGET} ${_PAR_DEPENDS} )
+    endif()
+
+    # add the link libraries
+    if( DEFINED _PAR_LIBS )
+      list(REMOVE_DUPLICATES _PAR_LIBS )
+      list(REMOVE_ITEM _PAR_LIBS debug)
+      list(REMOVE_ITEM _PAR_LIBS optimized)
+      foreach( lib ${_PAR_LIBS} ) # skip NOTFOUND
+        if( lib )
+          ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): linking with ${lib}")
+          target_link_libraries( ${_PAR_TARGET} ${lib} )
+        else()
+          ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): ${lib} not found - not linking")
+        endif()
+      endforeach()
+    endif()
+
+    # add include dirs if defined
+    if( DEFINED _PAR_INCLUDES )
+      list( REMOVE_DUPLICATES _PAR_INCLUDES )
+      foreach( path ${_PAR_INCLUDES} ) # skip NOTFOUND
+        if( path )
+          ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): add ${path} to include_directories")
+          if( "${CMAKE_VERSION}" VERSION_LESS "2.8.11" OR ECBUILD_USE_INCLUDE_DIRECTORIES )
+            include_directories( ${path} )
+          else()
+            target_include_directories( ${_PAR_TARGET} PUBLIC ${path} )
+          endif()
+        else()
+          ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): ${path} not found - not adding to include_directories")
+        endif()
+      endforeach()
+    endif()
+
+    # add private include dirs if defined
+    if( DEFINED _PAR_PRIVATE_INCLUDES )
+      if( "${CMAKE_VERSION}" VERSION_LESS "2.8.11" )
+        ecbuild_critical("ecbuild_add_library(${_PAR_TARGET}): cannot use PRIVATE_INCLUDES with CMake < 2.8.11" )
+      endif()
+      list( REMOVE_DUPLICATES _PAR_PRIVATE_INCLUDES )
+      foreach( path ${_PAR_PRIVATE_INCLUDES} ) # skip NOTFOUND
+        if( path )
+          ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): add ${path} to include_directories")
+          target_include_directories( ${_PAR_TARGET} PRIVATE ${path} )
+        else()
+          ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): ${path} not found - not adding to include_directories")
+        endif()
+      endforeach()
+    endif()
+
+    # add public include dirs if defined
+    if( DEFINED _PAR_PUBLIC_INCLUDES )
+      if( "${CMAKE_VERSION}" VERSION_LESS "2.8.11" )
+        ecbuild_critical("ecbuild_add_library(${_PAR_TARGET}): cannot use PUBLIC_INCLUDES with CMake < 2.8.11" )
+      endif()
+      list( REMOVE_DUPLICATES _PAR_PUBLIC_INCLUDES )
+      foreach( path ${_PAR_PUBLIC_INCLUDES} ) # skip NOTFOUND
+        if( path )
+          ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): add ${path} to include_directories")
+          target_include_directories( ${_PAR_TARGET} PUBLIC ${path} )
+        else()
+          ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): ${path} not found - not adding to include_directories")
+        endif()
+      endforeach()
+    endif()
+
+    # FIX: Cray compiler PIC option is not detected by CMake
+
+    get_property( _target_pic TARGET ${_PAR_TARGET} PROPERTY POSITION_INDEPENDENT_CODE )
+    if( _target_pic )
+      if( "${CMAKE_C_COMPILER_ID}" STREQUAL "Cray" )
+        set( _PAR_CFLAGS "-fPIC -h PIC ${_PAR_CFLAGS}" )
+      endif()
+      if( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Cray" )
+        set( _PAR_CXXFLAGS "-fPIC -h PIC ${_PAR_CXXFLAGS}" )
+      endif()
+      if( "${CMAKE_Fortran_COMPILER_ID}" STREQUAL "Cray" )
+        set( _PAR_FFLAGS "-fPIC -h PIC ${_PAR_FFLAGS}" )
+      endif()
+    endif()
+
+    # define VERSION if requested
+    if( DEFINED _PAR_VERSION )
+      ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): set version to ${_PAR_VERSION}")
+      set_target_properties( ${_PAR_TARGET} PROPERTIES VERSION "${_PAR_VERSION}" )
+    else()
+      if( _PAR_AUTO_VERSION OR LIBS_VERSION MATCHES "[Aa][Uu][Tt][Oo]")
+        ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): set version to ${${PNAME}_MAJOR_VERSION}.${${PNAME}_MINOR_VERSION} (auto)")
+        set_target_properties( ${_PAR_TARGET} PROPERTIES VERSION "${${PNAME}_MAJOR_VERSION}.${${PNAME}_MINOR_VERSION}" )
+      endif()
+      if( LIBS_VERSION AND NOT LIBS_VERSION MATCHES "[Aa][Uu][Tt][Oo]" )
+        ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): set version to ${LIBS_VERSION}")
+        set_target_properties( ${_PAR_TARGET} PROPERTIES VERSION "${LIBS_VERSION}" )
+      endif()
+    endif()
+
+    # filter sources
+
+    ecbuild_separate_sources( TARGET ${_PAR_TARGET} SOURCES ${_PAR_SOURCES} )
+
+    #   debug_var( ${_PAR_TARGET}_h_srcs )
+    #   debug_var( ${_PAR_TARGET}_c_srcs )
+    #   debug_var( ${_PAR_TARGET}_cxx_srcs )
+    #   debug_var( ${_PAR_TARGET}_f_srcs )
+
+    # add local flags
+
+    if( DEFINED _PAR_CFLAGS )
+      ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): use C flags ${_PAR_CFLAGS}")
+      set_source_files_properties( ${${_PAR_TARGET}_c_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_CFLAGS}" )
+    endif()
+    if( DEFINED _PAR_CXXFLAGS )
+      ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): use C++ flags ${_PAR_CFLAGS}")
+      set_source_files_properties( ${${_PAR_TARGET}_cxx_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CXXFLAGS}" )
+    endif()
+    if( DEFINED _PAR_FFLAGS )
+      ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): use Fortran flags ${_PAR_CFLAGS}")
+      set_source_files_properties( ${${_PAR_TARGET}_f_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_FFLAGS}" )
+    endif()
+    if( DEFINED _PAR_GENERATED )
+      ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): mark as generated ${_PAR_GENERATED}")
+      set_source_files_properties( ${_PAR_GENERATED} PROPERTIES GENERATED 1 )
+    endif()
+
+    # set linker language
+    if( DEFINED _PAR_LINKER_LANGUAGE )
+      ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): using linker language ${_PAR_LINKER_LANGUAGE}")
+      set_property( TARGET ${_PAR_TARGET} PROPERTY LINKER_LANGUAGE ${_PAR_LINKER_LANGUAGE} )
+    endif()
+
+    # installation
+
+    if( NOT _PAR_NOINSTALL )
+      ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): installing to ${INSTALL_LIB_DIR}")
+
+      # and associate with defined component
+      #            if( DEFINED _PAR_COMPONENT )
+      #                set( COMPONENT_DIRECTIVE "${_PAR_COMPONENT}" )
+      #            else()
+      #                set( COMPONENT_DIRECTIVE "${PROJECT_NAME}" )
+      #            endif()
+
+      install( TARGETS ${_PAR_TARGET}
+        EXPORT  ${CMAKE_PROJECT_NAME}-targets
+        RUNTIME DESTINATION ${INSTALL_BIN_DIR}
+        LIBRARY DESTINATION ${INSTALL_LIB_DIR}
+        ARCHIVE DESTINATION ${INSTALL_LIB_DIR} )
+      #              COMPONENT ${COMPONENT_DIRECTIVE} )
+
+      # install headers
+      if( _PAR_HEADER_DESTINATION )
+        set( _h_destination "${_PAR_HEADER_DESTINATION}" )
+      else()
+        set( _h_destination "${INSTALL_INCLUDE_DIR}" )
+      endif()
+
+      if( _PAR_INSTALL_HEADERS )
+        if( _PAR_INSTALL_HEADERS MATCHES "LISTED" )
+          foreach( file ${${_PAR_TARGET}_h_srcs} )
+            get_filename_component( _file_dir ${file} PATH )
+            install( FILES ${file} DESTINATION "${_h_destination}/${_file_dir}" )
+          endforeach()
+          if( DEFINED _PAR_TEMPLATES )
+            foreach( file ${_PAR_TEMPLATES} )
+              get_filename_component( _file_dir ${file} PATH )
+              install( FILES ${file} DESTINATION "${_h_destination}/${_file_dir}" )
+            endforeach()
+          endif()
+          if( DEFINED _PAR_PERSISTENT )
+            foreach( file ${_PAR_PERSISTENT} )
+              get_filename_component( _file_dir ${file} PATH )
+              get_filename_component( _file_we  ${file} NAME_WE )
+              set( pfile "${CMAKE_CURRENT_BINARY_DIR}/${_file_dir}/${_file_we}.b" )
+              install( FILES ${pfile} DESTINATION "${_h_destination}/${_file_dir}" )
+            endforeach()
+          endif()
+        endif()
+        if( _PAR_INSTALL_HEADERS MATCHES "ALL" ) # "(\\.h|\\.b|\\.hxx|\\.hh|\\.hpp|\\.H)" ????
+          install( DIRECTORY ./  DESTINATION ${_h_destination} FILES_MATCHING PATTERN "*.h" )
+          install( DIRECTORY ./  DESTINATION ${_h_destination} FILES_MATCHING PATTERN "*.hh" )
+          install( DIRECTORY ./  DESTINATION ${_h_destination} FILES_MATCHING PATTERN "*.hpp" )
+          install( DIRECTORY ./  DESTINATION ${_h_destination} FILES_MATCHING PATTERN "*.H" )
+        endif()
+      endif()
+
+      if( DEFINED _PAR_INSTALL_HEADERS_LIST )
+        install( FILES ${_PAR_INSTALL_HEADERS_LIST} DESTINATION ${_h_destination} )
+      endif()
+
+      if( DEFINED _PAR_INSTALL_HEADERS_REGEX )
+        install( DIRECTORY ./  DESTINATION ${_h_destination} FILES_MATCHING PATTERN "${_PAR_INSTALL_HEADERS_REGEX}")
+      endif()
+
+      # set build location
+
+      set_property( TARGET ${_PAR_TARGET} PROPERTY LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
+      set_property( TARGET ${_PAR_TARGET} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
+
+      # export location of target to other projects -- must be exactly after setting the build location (see previous 2 commands)
+
+      export( TARGETS ${_PAR_TARGET} APPEND FILE "${TOP_PROJECT_TARGETS_FILE}" )
+
+    endif()
+
+    # add definitions to compilation
+    if( DEFINED _PAR_DEFINITIONS )
+      get_property( _target_defs TARGET ${_PAR_TARGET} PROPERTY COMPILE_DEFINITIONS )
+      list( APPEND _target_defs ${_PAR_DEFINITIONS} )
+      ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): using definitions ${_target_defs}")
+      set_property( TARGET ${_PAR_TARGET} PROPERTY COMPILE_DEFINITIONS ${_target_defs} )
+    endif()
+
+    # make sure target is removed before - some problems with AIX
+    add_custom_command( TARGET ${_PAR_TARGET} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E remove $<TARGET_FILE:${_PAR_TARGET}> )
+
+    # for the links target
+    if( NOT _PAR_NOINSTALL )
+      ecbuild_link_lib( ${_PAR_TARGET} $<TARGET_FILE_NAME:${_PAR_TARGET}> $<TARGET_FILE:${_PAR_TARGET}>  )
+    endif()
+
+    # append to the list of this project targets
+    set( ${PROJECT_NAME}_ALL_LIBS ${${PROJECT_NAME}_ALL_LIBS} ${_PAR_TARGET} CACHE INTERNAL "" )
+
+  endif()
+
+  # mark source files as used
+  ecbuild_declare_project_files( ${_PAR_SOURCES} )
+  if( DEFINED _PAR_TEMPLATES )
+    ecbuild_declare_project_files( ${_PAR_TEMPLATES} )
+  endif()
 
 endfunction( ecbuild_add_library_impl  )
 
@@ -276,46 +447,46 @@ endfunction( ecbuild_add_library_impl  )
 
 macro( ecbuild_add_library )
 
-	set( options  )
-	set( single_value_args TARGET TYPE )
-	set( multi_value_args )
+  set( options  )
+  set( single_value_args TARGET TYPE )
+  set( multi_value_args )
 
-	cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+  cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
 
-	if( DEFINED _p_TYPE ) # don't do anything if TYPE was specified
+  if( DEFINED _p_TYPE ) # don't do anything if TYPE was specified
 
-			if( _p_TYPE MATCHES "[Bb][Oo][Tt][Hh]" ) # build both types
+    if( _p_TYPE MATCHES "[Bb][Oo][Tt][Hh]" ) # build both types
 
-				ecbuild_add_library_impl( TARGET ${_p_TARGET}        TYPE SHARED ${_p_UNPARSED_ARGUMENTS} )
-				ecbuild_add_library_impl( TARGET ${_p_TARGET}-static TYPE STATIC ${_p_UNPARSED_ARGUMENTS} OUTPUT_NAME ${_p_TARGET} DEPENDS ${_p_TARGET} )
+      ecbuild_add_library_impl( TARGET ${_p_TARGET}        TYPE SHARED ${_p_UNPARSED_ARGUMENTS} )
+      ecbuild_add_library_impl( TARGET ${_p_TARGET}-static TYPE STATIC ${_p_UNPARSED_ARGUMENTS} OUTPUT_NAME ${_p_TARGET} DEPENDS ${_p_TARGET} )
 
-			else()
+    else()
 
-				ecbuild_add_library_impl( ${ARGV} )
+      ecbuild_add_library_impl( ${ARGV} )
 
-			endif()
+    endif()
 
-	else()
+  else()
 
-		if( NOT DEFINED _p_TARGET )
-			message(FATAL_ERROR "The call to ecbuild_add_library() doesn't specify the TARGET.")
-		else()
+    if( NOT DEFINED _p_TARGET )
+      message(FATAL_ERROR "The call to ecbuild_add_library() doesn't specify the TARGET.")
+    else()
 
-			if( BUILD_SHARED_LIBS MATCHES "[Bb][Oo][Tt][Hh]" ) # build both types
+      if( BUILD_SHARED_LIBS MATCHES "[Bb][Oo][Tt][Hh]" ) # build both types
 
-				ecbuild_add_library_impl( TARGET ${_p_TARGET}        TYPE SHARED ${_p_UNPARSED_ARGUMENTS} )
-				ecbuild_add_library_impl( TARGET ${_p_TARGET}-static TYPE STATIC ${_p_UNPARSED_ARGUMENTS} DEPENDS ${_p_TARGET} )
+        ecbuild_add_library_impl( TARGET ${_p_TARGET}        TYPE SHARED ${_p_UNPARSED_ARGUMENTS} )
+        ecbuild_add_library_impl( TARGET ${_p_TARGET}-static TYPE STATIC ${_p_UNPARSED_ARGUMENTS} DEPENDS ${_p_TARGET} )
 
-				set_target_properties( ${_p_TARGET}-static PROPERTIES OUTPUT_NAME ${_p_TARGET} )
+        set_target_properties( ${_p_TARGET}-static PROPERTIES OUTPUT_NAME ${_p_TARGET} )
 
-			else()
+      else()
 
-				ecbuild_add_library_impl( ${ARGV} )
+        ecbuild_add_library_impl( ${ARGV} )
 
-			endif()
+      endif()
 
-		endif()
+    endif()
 
-	endif()
+  endif()
 
 endmacro( ecbuild_add_library )
diff --git a/cmake/ecbuild_add_option.cmake b/cmake/ecbuild_add_option.cmake
index 8f42550..7728716 100644
--- a/cmake/ecbuild_add_option.cmake
+++ b/cmake/ecbuild_add_option.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -7,36 +7,96 @@
 # does it submit to any jurisdiction.
 
 ##############################################################################
-# macro for adding a test
+#.rst:
+#
+# ecbuild_add_option
+# ==================
+#
+# Add a CMake configuration option, which may depend on a list of packages. ::
+#
+#   ecbuild_add_option( FEATURE <name>
+#                       [ DEFAULT ON|OFF ]
+#                       [ DESCRIPTION <description> ]
+#                       [ REQUIRED_PACKAGES <package1> [<package2> ...] ]
+#                       [ CONDITION <condition1> [<condition2> ...] ]
+#                       [ ADVANCED ] )
+#
+# Options
+# -------
+#
+# FEATURE : required
+#   name of the feature / option
+#
+# DEFAULT : optional, defaults to ON
+#   if set to ON, the feature is enabled even if not explicitly requested
+#
+# DESCRIPTION : optional
+#   string describing the feature (shown in summary and stored in the cache)
+#
+# REQUIRED_PACKAGES : optional
+#   list of packages required to be found for this feature to be enabled
+#
+#   The package specification can be either ::
+#
+#     <package> [ <version> ... ]
+#
+#   to search for a given package with option minimum required version or ::
+#
+#     PROJECT <name> [ VERSION <version> ... ]
+#
+#   to search for an ecBuild project with optional minimum required version.
+#
+# CONDITION : optional
+#   conditional expression which must evaluate to true for this option to be
+#   enabled (must be valid in a CMake ``if`` statement)
+#
+# ADVANCED : optional
+#   mark the feature as advanced
+#
+# Usage
+# -----
+#
+# Features with ``DEFAULT OFF`` need to be explcitly enabled by the user with
+# ``-DENABLE_<FEATURE>=ON``. If a feature is enabled, all ``REQUIRED_PACKAGES``
+# are found and ``CONDITION`` is met, ecBuild sets the variable
+# ``HAVE_<FEATURE>`` to ``ON``. This is the variable to use to check for the
+# availability of the feature.
+#
+# If a feature is explicitly enabled but the required packages are not found,
+# configuration fails. This only applies when configuring from *clean cache*.
+# With an already populated cache, use ``-DENABLE_<FEATURE>=REQUIRE`` to make
+# the feature a required feature (this cannot be done via the CMake GUI).
+#
 ##############################################################################
 
 macro( ecbuild_add_option )
 
-	set( options ADVANCED )
+  set( options ADVANCED )
   set( single_value_args FEATURE DEFAULT DESCRIPTION )
   set( multi_value_args  REQUIRED_PACKAGES CONDITION )
 
-	cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+  cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
 
   if( _p_UNPARSED_ARGUMENTS )
-	  message(FATAL_ERROR "Unknown keywords given to ecbuild_add_option(): \"${_p_UNPARSED_ARGUMENTS}\"")
+    message(FATAL_ERROR "Unknown keywords given to ecbuild_add_option(): \"${_p_UNPARSED_ARGUMENTS}\"")
   endif()
 
-	# check FEATURE parameter
+  # check FEATURE parameter
 
   if( NOT _p_FEATURE  )
-	  message(FATAL_ERROR "The call to ecbuild_add_option() doesn't specify the FEATURE.")
+    message(FATAL_ERROR "The call to ecbuild_add_option() doesn't specify the FEATURE.")
   endif()
 
-	# check DEFAULT parameter
+  # check DEFAULT parameter
 
   if( NOT DEFINED _p_DEFAULT )
-		set( _p_DEFAULT ON )
+    set( _p_DEFAULT ON )
   else()
-		if( NOT _p_DEFAULT MATCHES "[Oo][Nn]" AND NOT _p_DEFAULT MATCHES "[Oo][Ff][Ff]" )
-			message(FATAL_ERROR "In macro ecbuild_add_option(), DEFAULT is either ON or OFF: \"${_p_DEFAULT}\"")
-		endif()
-	endif()
+    if( NOT _p_DEFAULT MATCHES "[Oo][Nn]" AND NOT _p_DEFAULT MATCHES "[Oo][Ff][Ff]" )
+      message(FATAL_ERROR "In macro ecbuild_add_option(), DEFAULT is either ON or OFF: \"${_p_DEFAULT}\"")
+    endif()
+  endif()
+  ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): defaults to ${_p_DEFAULT}")
 
   # check CONDITION parameter
   if( DEFINED _p_CONDITION )
@@ -47,33 +107,44 @@ macro( ecbuild_add_option )
     endforeach()
     file( APPEND ${_feature_condition_file} " )\n    set(_${_p_FEATURE}_condition TRUE)\n  else()\n    set(_${_p_FEATURE}_condition FALSE)\n  endif()\n")
     include( ${_feature_condition_file} )
+    ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): checking condition ${_p_CONDITION} -> ${_${_p_FEATURE}_condition}")
   else()
     set( _${_p_FEATURE}_condition TRUE )
   endif()
 
-	# check if user provided value
+  # check if user provided value
 
-	get_property( _in_cache CACHE ENABLE_${_p_FEATURE} PROPERTY VALUE )
+  get_property( _in_cache CACHE ENABLE_${_p_FEATURE} PROPERTY VALUE )
 
-	if( NOT "${ENABLE_${_p_FEATURE}}" STREQUAL "" AND _in_cache )
-		set( ${_p_FEATURE}_user_provided_input 1 CACHE BOOL "" )
-	else()
-		set( ${_p_FEATURE}_user_provided_input 0 CACHE BOOL "" )
-	endif()
+  # A feature set to REQUIRE is always treated as explicitly enabled
+  if( ENABLE_${_p_FEATURE} MATCHES "REQUIRE" )
+    set( ENABLE_${_p_FEATURE} ON CACHE BOOL "" FORCE )
+    ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): ENABLE_${_p_FEATURE} was required")
+    set( ${_p_FEATURE}_user_provided_input 1 CACHE BOOL "" FORCE )
+  elseif( NOT "${ENABLE_${_p_FEATURE}}" STREQUAL "" AND _in_cache )
+    ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): ENABLE_${_p_FEATURE} was found in cache")
+    set( ${_p_FEATURE}_user_provided_input 1 CACHE BOOL "" )
+  else()
+    ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): ENABLE_${_p_FEATURE} not found in cache")
+    set( ${_p_FEATURE}_user_provided_input 0 CACHE BOOL "" )
+  endif()
 
-	mark_as_advanced( ${_p_FEATURE}_user_provided_input )
+  mark_as_advanced( ${_p_FEATURE}_user_provided_input )
 
 
-	# define the option -- for cmake GUI
+  # define the option -- for cmake GUI
 
-	option( ENABLE_${_p_FEATURE} "${_p_DESCRIPTION}" ${_p_DEFAULT} )
+  option( ENABLE_${_p_FEATURE} "${_p_DESCRIPTION}" ${_p_DEFAULT} )
+  ecbuild_set_feature( ${_p_FEATURE} ENABLED ${_p_DEFAULT} PURPOSE "${_p_DESCRIPTION}" )
 
+  ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): ENABLE_${_p_FEATURE} = ${ENABLE_${_p_FEATURE}}")
   set( _do_search ${ENABLE_${_p_FEATURE}} )
   if( _p_FEATURE STREQUAL "OMP" )
     set( _do_search TRUE )
   endif()
 
   if( _do_search  )
+    ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): feature enabled")
 
     set( HAVE_${_p_FEATURE} 1 )
 
@@ -81,7 +152,9 @@ macro( ecbuild_add_option )
 
       ### search for dependent packages
 
+      set( _failed_to_find_packages )  # clear variable
       foreach( pkg ${_p_REQUIRED_PACKAGES} )
+        ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for dependent package ${pkg}")
 
         string(REPLACE " " ";" pkglist ${pkg}) # string to list
 
@@ -102,17 +175,23 @@ macro( ecbuild_add_option )
         string( TOLOWER ${pkgname} pkgLOWER )
 
         if( ${pkgname}_FOUND OR ${pkgUPPER}_FOUND OR ${pkgLOWER}_FOUND )
+
+          ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): ${pkgname} has already been found")
           set( ${pkgname}_already_found 1 )
-        else()
 
-          ecbuild_add_extra_search_paths( ${pkgLOWER} ) # adds search paths specific to ECMWF
+        else()
 
           if( pkgproject )
+
+            ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for ecbuild project ${pkgname}")
             ecbuild_use_package( ${pkglist} )
+
           else()
+
             if( pkgname STREQUAL "MPI" )
               set( _find_args ${pkglist} )
               list( REMOVE_ITEM _find_args "MPI" )
+              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for MPI")
               ecbuild_find_mpi( ${_find_args} )
             elseif( pkgname STREQUAL "OMP" )
               set( _find_args ${pkglist} )
@@ -120,15 +199,27 @@ macro( ecbuild_add_option )
               if( NOT ENABLE_${_p_FEATURE} )
                 list( APPEND _find_args STUBS )
               endif()
+              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for OpenMP")
               ecbuild_find_omp( ${_find_args} )
+            elseif( pkgname STREQUAL "Python" OR pkgname STREQUAL "PYTHON" )
+              set( _find_args ${pkglist} )
+              list( REMOVE_ITEM _find_args ${pkgname} )
+              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for Python")
+              ecbuild_find_python( ${_find_args} )
             else()
+              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for package ${pkgname}")
               find_package( ${pkglist} )
             endif()
+
           endif()
 
-          # append to list of third-party libraries (to be forward to other packages )
-          string( TOUPPER ${PROJECT_NAME} PNAME )
-          list( APPEND ${PNAME}_TPLS ${pkgname} )
+        endif()
+
+        # if found append to list of third-party libraries (to be forward to other packages )
+        if( ${pkgname}_FOUND OR ${pkgUPPER}_FOUND OR ${pkgLOWER}_FOUND )
+
+          list( APPEND ${PROJECT_NAME_CAPS}_TPLS ${pkgname} )
+          list( REMOVE_DUPLICATES ${PROJECT_NAME_CAPS}_TPLS )
 
         endif()
 
@@ -147,49 +238,50 @@ macro( ecbuild_add_option )
         endif()
 
       endforeach()
-    else()
+    else( _${_p_FEATURE}_condition )
       set( HAVE_${_p_FEATURE} 0 )
-    endif()
+    endif( _${_p_FEATURE}_condition )
 
-		# FINAL CHECK
+    ecbuild_set_feature( ${_p_FEATURE} ENABLED ${HAVE_${_p_FEATURE}} )
+    # FINAL CHECK
 
-		if( HAVE_${_p_FEATURE} )
+    if( HAVE_${_p_FEATURE} )
 
-			message( STATUS "Feature ${_p_FEATURE} enabled" )
+      message( STATUS "Feature ${_p_FEATURE} enabled" )
 
-		else() # if user provided input and we cannot satisfy FAIL otherwise WARN
+    else() # if user provided input and we cannot satisfy FAIL otherwise WARN
 
-			if( ${_p_FEATURE}_user_provided_input )
+      if( ${_p_FEATURE}_user_provided_input )
         if( _${_p_FEATURE}_condition )
           message( FATAL_ERROR "Feature ${_p_FEATURE} cannot be enabled -- following required packages weren't found: ${_failed_to_find_packages}" )
         else()
           message( FATAL_ERROR "Feature ${_p_FEATURE} cannot be enabled -- following condition was not met: ${_p_CONDITION}" )
         endif()
-			else()
-				message( STATUS "Feature ${_p_FEATURE} was not enabled (also not requested) -- following required packages weren't found: ${_failed_to_find_packages}" )
-				set( ENABLE_${_p_FEATURE} OFF )
-			endif()
+      else()
+        if( _${_p_FEATURE}_condition )
+          message( STATUS "Feature ${_p_FEATURE} was not enabled (also not requested) -- following condition was not met: ${_p_CONDITION}" )
+        else()
+          message( STATUS "Feature ${_p_FEATURE} was not enabled (also not requested) -- following required packages weren't found: ${_failed_to_find_packages}" )
+        endif()
+        set( ENABLE_${_p_FEATURE} OFF )
+        ecbuild_set_feature( ${_p_FEATURE} ENABLED OFF )
+      endif()
 
-		endif()
+    endif()
 
   else( _do_search )
 
-		set( HAVE_${_p_FEATURE} 0 )
+    ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): feature disabled")
+    set( HAVE_${_p_FEATURE} 0 )
+    ecbuild_set_feature( ${_p_FEATURE} ENABLED OFF )
 
   endif( _do_search )
 
 
-	if( ${_p_ADVANCED} )
-		mark_as_advanced( ENABLE_${_p_FEATURE} )
-	else()
-		add_feature_info( ${_p_FEATURE} ENABLE_${_p_FEATURE} "${_p_DESCRIPTION}")
-	endif()
-
-  if( HAVE_${_p_FEATURE} )
-    string( TOUPPER PNAME ${PROJECT_NAME} )
-    set( ${PNAME}_HAVE_${_p_FEATURE} 1 )
-    set( ${PNAME}_FEATURES "${${PNAME}_FEATURES};${PNAME}_HAVE_${_p_FEATURE}" CACHE INTERNAL "" )
-    list( REMOVE_DUPLICATES ${PNAME}_FEATURES )
+  if( ${_p_ADVANCED} )
+    mark_as_advanced( ENABLE_${_p_FEATURE} )
   endif()
 
+  set( ${PROJECT_NAME_CAPS}_HAVE_${_p_FEATURE} ${HAVE_${_p_FEATURE}} )
+
 endmacro( ecbuild_add_option  )
diff --git a/cmake/ecbuild_add_persistent.cmake b/cmake/ecbuild_add_persistent.cmake
index c8ef383..96c160d 100644
--- a/cmake/ecbuild_add_persistent.cmake
+++ b/cmake/ecbuild_add_persistent.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
@@ -7,55 +7,79 @@
 # does it submit to any jurisdiction.
 
 ##############################################################################
-# macro for adding persistent layer object classes
+#.rst:
+#
+# ecbuild_add_persistent
+# ======================
+#
+# Add persistent layer object classes. ::
+#
+#   ecbuild_add_persistent( SRC_LIST <variable>
+#                           FILES <file1> [<file2> ...] ]
+#                           [ NAMESPACE <namespace> ] )
+#
+# Options
+# -------
+#
+# SRC_LIST : required
+#   CMake variable to append the generated persistent layer objects to
+#
+# FILES : required
+#   list of base names of files to build persistent class information for
+#
+#   The source file is expected to have a .h extension, the generated file
+#   gets a .b extension.
+#
+# NAMESPACE : optional
+#   C++ namespace to place the persistent class information in
+#
 ##############################################################################
-	
+  
 # define the script to build the persistent class information
 set( sg_perl "${CMAKE_CURRENT_LIST_DIR}/sg.pl" CACHE INTERNAL "perl script to generate persistent objects" )
 
 macro( ecbuild_add_persistent )
 
-	ecbuild_find_perl( REQUIRED )
+  ecbuild_find_perl( REQUIRED )
 
-	set( options )
-    set( single_value_args SRC_LIST NAMESPACE )
-    set( multi_value_args  FILES ) 
+  set( options )
+  set( single_value_args SRC_LIST NAMESPACE )
+  set( multi_value_args  FILES ) 
 
-    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+  cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
 
-    if(_PAR_UNPARSED_ARGUMENTS)
-      message(FATAL_ERROR "Unknown keywords given to ecbuild_add_persistent(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
-    endif()
+  if(_PAR_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "Unknown keywords given to ecbuild_add_persistent(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+  endif()
 
-    if( NOT _PAR_SRC_LIST  )
-      message(FATAL_ERROR "The call to ecbuild_add_persistent() doesn't specify the SRC_LIST.")
-    endif()
+  if( NOT _PAR_SRC_LIST  )
+    message(FATAL_ERROR "The call to ecbuild_add_persistent() doesn't specify the SRC_LIST.")
+  endif()
 
-    if( NOT _PAR_FILES )
-      message(FATAL_ERROR "The call to ecbuild_add_persistent() doesn't specify the FILES.")
-    endif()
+  if( NOT _PAR_FILES )
+    message(FATAL_ERROR "The call to ecbuild_add_persistent() doesn't specify the FILES.")
+  endif()
 
-    foreach( file ${_PAR_FILES} )
+  foreach( file ${_PAR_FILES} )
 
-      get_filename_component( _file_dir    ${file} PATH )
-      get_filename_component( _file_we     ${file} NAME_WE )
+    get_filename_component( _file_dir    ${file} PATH )
+    get_filename_component( _file_we     ${file} NAME_WE )
+
+    set( file ${_file_we} )
+    if( _file_dir )
+      file( MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${_file_dir} )
+      set( file ${_file_dir}/${_file_we} )
+    endif()
 
-      set( file ${_file_we} )
-      if( _file_dir )
-         file( MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${_file_dir} )
-         set( file ${_file_dir}/${_file_we} )
-      endif()
+    # debug_var(file)
 
-      # debug_var(file)
+    add_custom_command( OUTPUT  ${file}.b
+                        COMMAND ${PERL_EXECUTABLE} ${sg_perl} ${CMAKE_CURRENT_SOURCE_DIR}/${file}.h
+                                ${CMAKE_CURRENT_BINARY_DIR}/${_file_dir} ${_PAR_NAMESPACE}
+                        DEPENDS ${sg_perl} ${file}.h )
+    set_source_files_properties( ${file}.h PROPERTIES OBJECT_DEPENDS "${file}.b" )
+    list( APPEND ${_PAR_SRC_LIST} ${CMAKE_CURRENT_BINARY_DIR}/${file}.b )
 
-      add_custom_command(
-        OUTPUT  ${file}.b
-		COMMAND ${PERL_EXECUTABLE} ${sg_perl} ${CMAKE_CURRENT_SOURCE_DIR}/${file}.h ${CMAKE_CURRENT_BINARY_DIR}/${_file_dir} ${_PAR_NAMESPACE}
-		DEPENDS ${sg_perl} ${file}.h
-        )
-      set_source_files_properties( ${file}.h PROPERTIES OBJECT_DEPENDS "${file}.b" )
-      list( APPEND ${_PAR_SRC_LIST} ${CMAKE_CURRENT_BINARY_DIR}/${file}.b )
-    
-    endforeach()
+  endforeach()
 
 endmacro( ecbuild_add_persistent  )
diff --git a/cmake/ecbuild_add_resources.cmake b/cmake/ecbuild_add_resources.cmake
index 12f47af..da6e55a 100644
--- a/cmake/ecbuild_add_resources.cmake
+++ b/cmake/ecbuild_add_resources.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
@@ -7,58 +7,52 @@
 # does it submit to any jurisdiction.
 
 ##############################################################################
-# macro for adding a resources
+#.rst:
+#
+# ecbuild_add_resources
+# =====================
+#
+# Add resources as project files but optionally exclude them from packaging. ::
+#
+#   ecbuild_add_resources( TARGET <name>
+#                          [ SOURCES <source1> [<source2> ...] ]
+#                          [ SOURCES_PACK <source1> [<source2> ...] ]
+#                          [ SOURCES_DONT_PACK <source1> [<source2> ...] ]
+#                          [ PACK <file1> [<file2> ...] ]
+#                          [ DONT_PACK <file1> [<file2> ...] ]
+#                          [ DONT_PACK_DIRS <directory1> [<directory2> ...] ]
+#                          [ DONT_PACK_REGEX <regex1> [<regex2> ...] ] )
+#
+# Options
+# -------
+#
+# TARGET : required
+#   target name (target will only be created if there are any sources)
+#
+# SOURCES : optional, alias for SOURCES_PACK
+#   list of source files included when packaging
+#
+# SOURCES_PACK : optional, alias for SOURCES
+#   list of source files included when packaging
+#
+# SOURCES_DONT_PACK : optional
+#   list of source files excluded when packaging
+#
+# PACK : optional, priority over DONT_PACK, DONT_PACK_DIRS, DONT_PACK_REGEX
+#   list of files to include when packaging
+#
+# DONT_PACK : optional
+#   list of files to exclude when packaging
+#
+# DONT_PACK_DIRS : optional
+#   list of directories to exclude when packaging
+#
+# DONT_PACK_REGEX : optional
+#   list of regular expressions to match files and directories to exclude when
+#   packaging
+#
 ##############################################################################
 
-macro( ecbuild_dont_pack )
-
-    set( options )
-    set( single_value_args REGEX )
-    set( multi_value_args  FILES DIRS )
-
-    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
-
-    if(_PAR_UNPARSED_ARGUMENTS)
-      message(FATAL_ERROR "Unknown keywords given to ecbuild_add_resources(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
-    endif()
-
-    if( NOT DEFINED _PAR_REGEX AND NOT  DEFINED _PAR_FILES AND NOT  DEFINED _PAR_DIRS )
-      message(FATAL_ERROR "Call to ecbuild_dont_pack does not speficify any list to avoid packing.")
-    endif()
-
-    set( LOCAL_FILES_NOT_TO_PACK "" )
-
-    # all recursive files are not to pack
-    if( DEFINED _PAR_REGEX )
-        file( GLOB_RECURSE all_files_in_subdirs RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${_PAR_REGEX} )
-        list( APPEND LOCAL_FILES_NOT_TO_PACK ${all_files_in_subdirs} )
-    endif()
-
-    # selected dirs not to pack
-    if( DEFINED _PAR_DIRS )
-        foreach( dir ${_PAR_DIRS} )
-            list( APPEND LOCAL_FILES_NOT_TO_PACK ${dir}/ )
-        endforeach()
-    endif()
-
-    # selected files not to pack
-    if( DEFINED _PAR_FILES )
-        list( APPEND LOCAL_FILES_NOT_TO_PACK ${_PAR_FILES} )
-    endif()
-
-    # transform the local files  to full absolute paths
-    # and place them in the global list of files not to pack
-    foreach( file ${LOCAL_FILES_NOT_TO_PACK} )
-        list( APPEND ECBUILD_DONT_PACK_FILES ${CMAKE_CURRENT_SOURCE_DIR}/${file} )
-    endforeach()
-
-    # save cache if we added any files not to pack
-    if( LOCAL_FILES_NOT_TO_PACK )
-        set( ECBUILD_DONT_PACK_FILES ${ECBUILD_DONT_PACK_FILES} CACHE INTERNAL "" )
-    endif()
-
-endmacro()
-
 macro( ecbuild_add_resources )
 
     set( options )
@@ -155,4 +149,3 @@ macro( ecbuild_add_resources )
     endif()
 
 endmacro( ecbuild_add_resources  )
-
diff --git a/cmake/ecbuild_add_test.cmake b/cmake/ecbuild_add_test.cmake
index 44f850f..6ae839a 100644
--- a/cmake/ecbuild_add_test.cmake
+++ b/cmake/ecbuild_add_test.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -7,309 +7,434 @@
 # does it submit to any jurisdiction.
 
 ##############################################################################
-# macro for adding a test
+#.rst:
+#
+# ecbuild_add_test
+# ================
+#
+# Add a test as a script or an executable with a given list of source files. ::
+#
+#   ecbuild_add_test( [ TARGET <name> ]
+#                     [ SOURCES <source1> [<source2> ...] ]
+#                     [ COMMAND <executable> ]
+#                     [ TYPE EXE|SCRIPT|PYTHON ]
+#                     [ ARGS <argument1> [<argument2> ...] ]
+#                     [ RESOURCES <file1> [<file2> ...] ]
+#                     [ TEST_DATA <file1> [<file2> ...] ]
+#                     [ BOOST ]
+#                     [ MPI <number-of-ranks> ]
+#                     [ ENABLED ON|OFF ]
+#                     [ LIBS <library1> [<library2> ...] ]
+#                     [ INCLUDES <path1> [<path2> ...] ]
+#                     [ DEFINITIONS <definition1> [<definition2> ...] ]
+#                     [ PERSISTENT <file1> [<file2> ...] ]
+#                     [ GENERATED <file1> [<file2> ...] ]
+#                     [ DEPENDS <target1> [<target2> ...] ]
+#                     [ TEST_DEPENDS <target1> [<target2> ...] ]
+#                     [ CONDITION <condition1> [<condition2> ...] ]
+#                     [ ENVIRONMENT <variable1> [<variable2> ...] ]
+#                     [ WORKING_DIRECTORY <path> ]
+#                     [ CFLAGS <flag1> [<flag2> ...] ]
+#                     [ CXXFLAGS <flag1> [<flag2> ...] ]
+#                     [ FFLAGS <flag1> [<flag2> ...] ]
+#                     [ LINKER_LANGUAGE <lang> ] )
+#
+# Options
+# -------
+#
+# TARGET : either TARGET or COMMAND must be provided, unless TYPE is PYTHON
+#   target name to be built
+#
+# SOURCES : required if TARGET is provided
+#   list of source files to be compiled
+#
+# COMMAND : either TARGET or COMMAND must be provided, unless TYPE is PYTHON
+#   command or script to execute (no executable is built)
+#
+# TYPE : optional
+#   test type, one of:
+#
+#   :EXE:    run built executable, default if TARGET is provided
+#   :SCRIPT: run command or script, default if COMMAND is provided
+#   :PYTHON: run a Python script (requires the Python interpreter to be found)
+#
+# ARGS : optional
+#   list of arguments to pass to TARGET or COMMAND when running the test
+#
+# RESOURCES : optional
+#   list of files to copy from the test source directory to the test directory
+#
+# TEST_DATA : optional
+#   list of test data files to download
+#
+# BOOST : optional
+#   use the Boost Unit Test Framework
+#
+# MPI : optional
+#   number of MPI tasks to use.
+#
+#   If greater than 1, and MPI is not available, the test is disabled.
+#
+# ENABLED : optional
+#   if set to OFF, the test is built but not enabled as a test case
+#
+# LIBS : optional
+#   list of libraries to link against (CMake targets or external libraries)
+#
+# INCLUDES : optional
+#   list of paths to add to include directories
+#
+# DEFINITIONS : optional
+#   list of definitions to add to preprocessor defines
+#
+# PERSISTENT : optional
+#   list of persistent layer object files
+#
+# GENERATED : optional
+#   list of files to mark as generated (sets GENERATED source file property)
+#
+# DEPENDS : optional
+#   list of targets to be built before this target
+#
+# TEST_DEPENDS : optional
+#   list of tests to be run before this one
+#
+# CONDITION : optional
+#   conditional expression which must evaluate to true for this target to be
+#   built (must be valid in a CMake ``if`` statement)
+#
+# ENVIRONMENT : optional
+#   list of environment variables to set in the test environment
+#
+# WORKING_DIRECTORY : optional
+#   directory to switch to before running the test
+#
+# CFLAGS : optional
+#   list of C compiler flags to use for all C source files
+#
+# CXXFLAGS : optional
+#   list of C++ compiler flags to use for all C++ source files
+#
+# FFLAGS : optional
+#   list of Fortran compiler flags to use for all Fortran source files
+#
+# LINKER_LANGUAGE : optional
+#   sets the LINKER_LANGUAGE property on the target
+#
 ##############################################################################
 
-# Arguments:
-#  TARGET : name of test
-#  ENABLED [optional]: (default ON)
-#  COMMAND [optional]: Run command instead of executable
-#  TYPE [optional]: EXE / SCRIPT / PYTHON  (default EXE)
-#  MPI [optional]: number of mpi-tasks to use. If greater than 1,
-#                  and MPI is not available, the test is disabled
-#  SOURCES: sources to be compiled
-#  LIBS: Libraries needed for linking
-#  INCLUDES: Extra include directories
-#  DEPENDS: Add explicit dependency to other targets (for building)
-#  TEST_DEPENDS: add explicity dependency on another test running before
-#  ARGS: Command-line arguments to COMMAND OR TARGET
-
 macro( ecbuild_add_test )
 
-    set( options           BOOST )
-    set( single_value_args TARGET ENABLED COMMAND TYPE LINKER_LANGUAGE MPI WORKING_DIRECTORY )
-    set( multi_value_args  SOURCES LIBS INCLUDES TEST_DEPENDS DEPENDS ARGS PERSISTENT DEFINITIONS RESOURCES TEST_DATA CFLAGS CXXFLAGS FFLAGS GENERATED CONDITION ENVIRONMENT )
+  set( options           BOOST )
+  set( single_value_args TARGET ENABLED COMMAND TYPE LINKER_LANGUAGE MPI WORKING_DIRECTORY )
+  set( multi_value_args  SOURCES LIBS INCLUDES TEST_DEPENDS DEPENDS ARGS
+                         PERSISTENT DEFINITIONS RESOURCES TEST_DATA CFLAGS
+                         CXXFLAGS FFLAGS GENERATED CONDITION ENVIRONMENT )
 
-    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+  cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
 
-    if(_PAR_UNPARSED_ARGUMENTS)
-      message(FATAL_ERROR "Unknown keywords given to ecbuild_add_test(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
-    endif()
+  if(_PAR_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "Unknown keywords given to ecbuild_add_test(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+  endif()
 
-    set( _TEST_DIR ${CMAKE_CURRENT_BINARY_DIR} )
+  set( _TEST_DIR ${CMAKE_CURRENT_BINARY_DIR} )
 
-    # Check for MPI
-    if(_PAR_MPI)
-      if( (_PAR_MPI GREATER 1) AND ( (NOT HAVE_MPI) OR (NOT MPIEXEC) ) )
-        set( _PAR_ENABLED 0 )
-      endif()
-      if( (_PAR_MPI EQUAL 1) AND (NOT HAVE_MPI) )
-        set( _PAR_MPI 0 )
-      endif()
+  # Check for MPI
+  if(_PAR_MPI)
+    if( (_PAR_MPI GREATER 1) AND ( (NOT HAVE_MPI) OR (NOT MPIEXEC) ) )
+      ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): ${_PAR_MPI} MPI ranks requested but MPI not available - disabling test")
+      set( _PAR_ENABLED 0 )
     endif()
-
-    # default is enabled
-    if( NOT DEFINED _PAR_ENABLED )
-      set( _PAR_ENABLED 1 )
+    if( (_PAR_MPI EQUAL 1) AND (NOT HAVE_MPI) )
+      ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): 1 MPI rank requested but MPI not available - disabling MPI")
+      set( _PAR_MPI 0 )
     endif()
+  endif()
 
+  # default is enabled
+  if( NOT DEFINED _PAR_ENABLED )
+    set( _PAR_ENABLED 1 )
+  endif()
 
-    ### check test type
 
-    # command implies script
-    if( DEFINED _PAR_COMMAND )
-        set( _PAR_TYPE "SCRIPT" )
-    endif()
+  ### check test type
 
-    # default of TYPE
-    if( NOT _PAR_TYPE AND DEFINED _PAR_TARGET )
-        set( _PAR_TYPE "EXE" )
-        if( NOT _PAR_SOURCES )
-           message(FATAL_ERROR "The call to ecbuild_add_test() defines neither a TARGET without SOURCES.")
-        endif()
-    endif()
+  # command implies script
+  if( DEFINED _PAR_COMMAND )
+    set( _PAR_TYPE "SCRIPT" )
+  endif()
 
-    if( _PAR_TYPE MATCHES "PYTHON" )
-        if( PYTHONINTERP_FOUND )
-            set( _PAR_COMMAND ${PYTHON_EXECUTABLE} )
-        else()
-            message( FATAL_ERROR "Requested a python test but python interpreter not found - PYTHON_EXECUTABLE: [${PYTHON_EXECUTABLE}]" )
-        endif()
+  # default of TYPE
+  if( NOT _PAR_TYPE AND DEFINED _PAR_TARGET )
+    set( _PAR_TYPE "EXE" )
+    if( NOT _PAR_SOURCES )
+      message(FATAL_ERROR "The call to ecbuild_add_test() defines a TARGET without SOURCES.")
     endif()
+  endif()
 
-    ### further checks
-
-    if( NOT _PAR_TARGET AND NOT _PAR_COMMAND )
-        message(FATAL_ERROR "The call to ecbuild_add_test() defines neither a TARGET nor a COMMAND.")
+  if( _PAR_TYPE MATCHES "PYTHON" )
+    if( PYTHONINTERP_FOUND )
+      set( _PAR_COMMAND ${PYTHON_EXECUTABLE} )
+    else()
+      message( WARNING "Requested a python test but python interpreter not found - disabling test\nPYTHON_EXECUTABLE: [${PYTHON_EXECUTABLE}]" )
+      set( _PAR_ENABLED 0 )
     endif()
-
-    if( NOT _PAR_COMMAND AND NOT _PAR_SOURCES )
-      message(FATAL_ERROR "The call to ecbuild_add_test() defines neither a COMMAND nor SOURCES, so no test can be defined or built.")
+  endif()
+
+  ### further checks
+
+  if( _PAR_ENABLED AND NOT _PAR_TARGET AND NOT _PAR_COMMAND )
+    message(FATAL_ERROR "The call to ecbuild_add_test() defines neither a TARGET nor a COMMAND.")
+  endif()
+
+  if( _PAR_ENABLED AND NOT _PAR_COMMAND AND NOT _PAR_SOURCES )
+    message(FATAL_ERROR "The call to ecbuild_add_test() defines neither a COMMAND nor SOURCES, so no test can be defined or built.")
+  endif()
+
+  if( _PAR_TYPE MATCHES "SCRIPT" AND NOT _PAR_COMMAND )
+    message(FATAL_ERROR "The call to ecbuild_add_test() defines a 'script' but doesn't specify the COMMAND.")
+  endif()
+
+  ### conditional build
+
+  if( DEFINED _PAR_CONDITION )
+    set(_target_condition_file "${_TEST_DIR}/set_${_PAR_TARGET}_condition.cmake")
+    file( WRITE  ${_target_condition_file} "  if( ")
+    foreach( term ${_PAR_CONDITION} )
+      file( APPEND ${_target_condition_file} " ${term}")
+    endforeach()
+    file( APPEND ${_target_condition_file} " )\n    set(_${_PAR_TARGET}_condition TRUE)\n  else()\n    set(_${_PAR_TARGET}_condition FALSE)\n  endif()\n")
+    include( ${_target_condition_file} )
+  else()
+    set( _${_PAR_TARGET}_condition TRUE )
+  endif()
+
+  # boost unit test linking to unit_test lib ?
+
+  if( _PAR_BOOST AND ENABLE_TESTS AND _${_PAR_TARGET}_condition )
+
+    if( HAVE_BOOST_UNIT_TEST )
+      if( BOOST_UNIT_TEST_FRAMEWORK_HEADER_ONLY )
+        include_directories( ${ECBUILD_BOOST_HEADER_DIRS} )
+        include_directories( ${Boost_INCLUDE_DIRS}  ) # temporary until we ship Boost Unit Test with ecBuild
+      else()
+        include_directories( ${ECBUILD_BOOST_HEADER_DIRS} ${Boost_INCLUDE_DIRS} )
+      endif()
+    else()
+      ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): boost unit test framework not available - not building test")
+      set( _${_PAR_TARGET}_condition FALSE )
     endif()
 
-    if( _PAR_TYPE MATCHES "SCRIPT" AND NOT _PAR_COMMAND )
-        message(FATAL_ERROR "The call to ecbuild_add_test() defines a 'script' but doesn't specify the COMMAND.")
-    endif()
+  endif()
 
-    ### conditional build
+  ### enable the tests
 
-    if( DEFINED _PAR_CONDITION )
-        set(_target_condition_file "${CMAKE_CURRENT_BINARY_DIR}/set_${_PAR_TARGET}_condition.cmake")
-        file( WRITE  ${_target_condition_file} "  if( ")
-        foreach( term ${_PAR_CONDITION} )
-            file( APPEND ${_target_condition_file} " ${term}")
-        endforeach()
-        file( APPEND ${_target_condition_file} " )\n    set(_${_PAR_TARGET}_condition TRUE)\n  else()\n    set(_${_PAR_TARGET}_condition FALSE)\n  endif()\n")
-        include( ${_target_condition_file} )
-    else()
-        set( _${_PAR_TARGET}_condition TRUE )
+  if( ENABLE_TESTS AND _${_PAR_TARGET}_condition )
+
+    # add resources
+
+    if( DEFINED _PAR_RESOURCES )
+      ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): copying resources ${_PAR_RESOURCES}")
+      foreach( rfile ${_PAR_RESOURCES} )
+        execute_process( COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${rfile} ${_TEST_DIR} )
+      endforeach()
     endif()
 
-	# boost unit test linking to unit_test lib ?
+    # build executable
 
-	if( _PAR_BOOST AND ENABLE_TESTS AND _${_PAR_TARGET}_condition )
+    if( DEFINED _PAR_SOURCES )
 
-		if( HAVE_BOOST_UNIT_TEST )
-			if( BOOST_UNIT_TEST_FRAMEWORK_HEADER_ONLY )
-				include_directories( ${ECBUILD_BOOST_HEADER_DIRS} )
-			else()
-				include_directories( ${ECBUILD_BOOST_HEADER_DIRS} ${Boost_INCLUDE_DIRS} )
-			endif()
-		else()
-			set( _${_PAR_TARGET}_condition FALSE )
-		endif()
+      # add include dirs if defined
+      if( DEFINED _PAR_INCLUDES )
+        list(REMOVE_DUPLICATES _PAR_INCLUDES )
+        foreach( path ${_PAR_INCLUDES} ) # skip NOTFOUND
+          if( path )
+            ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): add ${path} to include_directories")
+            include_directories( ${path} )
+          else()
+            ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): ${path} not found - not adding to include_directories")
+          endif()
+        endforeach()
+      endif()
 
-	endif()
+      # add persistent layer files
+      if( DEFINED _PAR_PERSISTENT )
+        if( DEFINED PERSISTENT_NAMESPACE )
+          ecbuild_add_persistent( SRC_LIST _PAR_SOURCES FILES ${_PAR_PERSISTENT} NAMESPACE ${PERSISTENT_NAMESPACE} )
+        else()
+          ecbuild_add_persistent( SRC_LIST _PAR_SOURCES FILES ${_PAR_PERSISTENT} )
+        endif()
+      endif()
 
-	### enable the tests
+      # add the test target
 
-    if( ENABLE_TESTS AND _${_PAR_TARGET}_condition )
+      add_executable( ${_PAR_TARGET} ${_PAR_SOURCES} )
 
-      # add resources
+      # add extra dependencies
+      if( DEFINED _PAR_DEPENDS)
+        ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): add dependency on ${_PAR_DEPENDS}")
+        add_dependencies( ${_PAR_TARGET} ${_PAR_DEPENDS} )
+      endif()
 
-      if( DEFINED _PAR_RESOURCES )
-        foreach( rfile ${_PAR_RESOURCES} )
-          execute_process( COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${rfile} ${CMAKE_CURRENT_BINARY_DIR} )
+      # add the link libraries
+      if( DEFINED _PAR_LIBS )
+        list(REMOVE_DUPLICATES _PAR_LIBS )
+        list(REMOVE_ITEM _PAR_LIBS debug)
+        list(REMOVE_ITEM _PAR_LIBS optimized)
+        foreach( lib ${_PAR_LIBS} ) # skip NOTFOUND
+          if( lib )
+            ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): linking with ${lib}")
+            target_link_libraries( ${_PAR_TARGET} ${lib} )
+          else()
+            ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): ${lib} not found - not linking")
+          endif()
         endforeach()
       endif()
 
-      # build executable
-
-      if( DEFINED _PAR_SOURCES )
-
-                # add include dirs if defined
-                if( DEFINED _PAR_INCLUDES )
-                  list(REMOVE_DUPLICATES _PAR_INCLUDES )
-                  foreach( path ${_PAR_INCLUDES} ) # skip NOTFOUND
-                    if( path )
-                      include_directories( ${path} )
-                    endif()
-                  endforeach()
-                endif()
-
-                # add persistent layer files
-                if( DEFINED _PAR_PERSISTENT )
-		            if( DEFINED PERSISTENT_NAMESPACE )
-        		        ecbuild_add_persistent( SRC_LIST _PAR_SOURCES FILES ${_PAR_PERSISTENT} NAMESPACE ${PERSISTENT_NAMESPACE} )
-            		else()
-                		ecbuild_add_persistent( SRC_LIST _PAR_SOURCES FILES ${_PAR_PERSISTENT} )
-            		endif()
-                endif()
-
-                # add the test target
-
-                add_executable( ${_PAR_TARGET} ${_PAR_SOURCES} )
-
-                # add extra dependencies
-                if( DEFINED _PAR_DEPENDS)
-                  add_dependencies( ${_PAR_TARGET} ${_PAR_DEPENDS} )
-                endif()
-
-                # add the link libraries
-                if( DEFINED _PAR_LIBS )
-                  list(REMOVE_DUPLICATES _PAR_LIBS )
-                  list(REMOVE_ITEM _PAR_LIBS debug)
-                  list(REMOVE_ITEM _PAR_LIBS optimized)
-                  foreach( lib ${_PAR_LIBS} ) # skip NOTFOUND
-                    if( lib )
-                      target_link_libraries( ${_PAR_TARGET} ${lib} )
-                    else()
-                      message( WARNING "Lib ${lib} was skipped" )
-                    endif()
-                  endforeach()
-                endif()
-
-                # add test libraries
-				if( _PAR_BOOST AND BOOST_UNIT_TEST_FRAMEWORK_LINKED AND HAVE_BOOST_UNIT_TEST )
-                    target_link_libraries( ${_PAR_TARGET} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY} ${Boost_TEST_EXEC_MONITOR_LIBRARY} )
-                endif()
-
-                # add local flags
-                if( DEFINED _PAR_CFLAGS )
-                    set_source_files_properties( ${${_PAR_TARGET}_c_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_CFLAGS}" )
-                endif()
-                if( DEFINED _PAR_CXXFLAGS )
-                    set_source_files_properties( ${${_PAR_TARGET}_cxx_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CXXFLAGS}" )
-                endif()
-                if( DEFINED _PAR_FFLAGS )
-                    set_source_files_properties( ${${_PAR_TARGET}_f_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_FFLAGS}" )
-                endif()
-                if( DEFINED _PAR_GENERATED )
-                    set_source_files_properties( ${_PAR_GENERATED} PROPERTIES GENERATED 1 )
-                endif()
-
-
-                # modify definitions to compilation ( -D... )
-                get_property( _target_defs TARGET ${_PAR_TARGET} PROPERTY COMPILE_DEFINITIONS )
-
-                if( DEFINED _PAR_DEFINITIONS )
-                    list( APPEND _target_defs ${_PAR_DEFINITIONS} )
-                endif()
-
-				if( _PAR_BOOST AND BOOST_UNIT_TEST_FRAMEWORK_HEADER_ONLY )
-					list( APPEND _target_defs BOOST_UNIT_TEST_FRAMEWORK_HEADER_ONLY )
-				endif()
-
-			    set_property( TARGET ${_PAR_TARGET} PROPERTY COMPILE_DEFINITIONS ${_target_defs} )
-
-                # set build location to local build dir
-                # not the project base as defined for libs and execs
-                set_property( TARGET ${_PAR_TARGET} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )
-
-				# whatever project settings are, we always build tests with the build_rpath, not the install_rpath
-				set_property( TARGET ${_PAR_TARGET} PROPERTY BUILD_WITH_INSTALL_RPATH FALSE )
-				set_property( TARGET ${_PAR_TARGET} PROPERTY SKIP_BUILD_RPATH         FALSE )
-
-                # set linker language
-                if( DEFINED _PAR_LINKER_LANGUAGE )
-                    set_property( TARGET ${_PAR_TARGET} PROPERTY LINKER_LANGUAGE ${_PAR_LINKER_LANGUAGE} )
-                endif()
-
-                # make sure target is removed before - some problems with AIX
-                get_target_property(EXE_FILENAME ${_PAR_TARGET} OUTPUT_NAME)
-                add_custom_command(
-                      TARGET ${_PAR_TARGET}
-                      PRE_BUILD
-                      COMMAND ${CMAKE_COMMAND} -E remove ${EXE_FILENAME}
-                )
-
-				set_property( TARGET ${_PAR_TARGET} PROPERTY SKIP_BUILD_RPATH         FALSE )
-				set_property( TARGET ${_PAR_TARGET} PROPERTY BUILD_WITH_INSTALL_RPATH FALSE )
-
-      endif() # _PAR_SOURCES
-
-      if( DEFINED _PAR_COMMAND AND NOT _PAR_TARGET ) # in the absence of target, we use the command as a name
-          set( _PAR_TARGET ${_PAR_COMMAND} )
+      # add test libraries
+      if( _PAR_BOOST AND BOOST_UNIT_TEST_FRAMEWORK_LINKED AND HAVE_BOOST_UNIT_TEST )
+        target_link_libraries( ${_PAR_TARGET} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY} ${Boost_TEST_EXEC_MONITOR_LIBRARY} )
       endif()
 
-      # scripts dont have actual build targets
-      # we build a phony target to trigger the dependencies
-      if( DEFINED _PAR_COMMAND AND DEFINED _PAR_DEPENDS )
+      # filter sources
+      ecbuild_separate_sources( TARGET ${_PAR_TARGET} SOURCES ${_PAR_SOURCES} )
 
-          add_custom_target( ${_PAR_TARGET}.x ALL COMMAND ${CMAKE_COMMAND} -E touch ${_PAR_TARGET}.x )
+      # add local flags
+      if( DEFINED _PAR_CFLAGS )
+        ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): use C flags ${_PAR_CFLAGS}")
+        set_source_files_properties( ${${_PAR_TARGET}_c_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_CFLAGS}" )
+      endif()
+      if( DEFINED _PAR_CXXFLAGS )
+        ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): use C++ flags ${_PAR_CFLAGS}")
+        set_source_files_properties( ${${_PAR_TARGET}_cxx_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CXXFLAGS}" )
+      endif()
+      if( DEFINED _PAR_FFLAGS )
+        ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): use Fortran flags ${_PAR_CFLAGS}")
+        set_source_files_properties( ${${_PAR_TARGET}_f_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_FFLAGS}" )
+      endif()
+      if( DEFINED _PAR_GENERATED )
+        ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): mark as generated ${_PAR_GENERATED}")
+        set_source_files_properties( ${_PAR_GENERATED} PROPERTIES GENERATED 1 )
+      endif()
 
-          add_dependencies( ${_PAR_TARGET}.x ${_PAR_DEPENDS} )
 
+      # modify definitions to compilation ( -D... )
+      get_property( _target_defs TARGET ${_PAR_TARGET} PROPERTY COMPILE_DEFINITIONS )
+
+      if( DEFINED _PAR_DEFINITIONS )
+        list( APPEND _target_defs ${_PAR_DEFINITIONS} )
       endif()
 
+      if( _PAR_BOOST AND BOOST_UNIT_TEST_FRAMEWORK_HEADER_ONLY )
+        list( APPEND _target_defs BOOST_UNIT_TEST_FRAMEWORK_HEADER_ONLY )
+      endif()
 
-      # define the arguments
-      set( TEST_ARGS "" )
-      if( DEFINED _PAR_ARGS  )
-        list( APPEND TEST_ARGS ${_PAR_ARGS} )
+      if( _target_defs )
+        ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): using definitions ${_target_defs}")
+        set_property( TARGET ${_PAR_TARGET} PROPERTY COMPILE_DEFINITIONS ${_target_defs} )
       endif()
 
-      # Wrap with MPIEXEC
-      if( _PAR_MPI )
-        if( DEFINED _PAR_COMMAND )
-          set( _PAR_COMMAND ${MPIEXEC} -n ${_PAR_MPI} ${_PAR_COMMAND} )
-        else()
-          set( _PAR_COMMAND ${MPIEXEC} -n ${_PAR_MPI} ${_PAR_TARGET} )
-        endif()
+      # set build location to local build dir
+      # not the project base as defined for libs and execs
+      set_property( TARGET ${_PAR_TARGET} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${_TEST_DIR} )
+
+      # whatever project settings are, we always build tests with the build_rpath, not the install_rpath
+      set_property( TARGET ${_PAR_TARGET} PROPERTY BUILD_WITH_INSTALL_RPATH FALSE )
+      set_property( TARGET ${_PAR_TARGET} PROPERTY SKIP_BUILD_RPATH         FALSE )
+
+      # set linker language
+      if( DEFINED _PAR_LINKER_LANGUAGE )
+        ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): using linker language ${_PAR_LINKER_LANGUAGE}")
+        set_property( TARGET ${_PAR_TARGET} PROPERTY LINKER_LANGUAGE ${_PAR_LINKER_LANGUAGE} )
       endif()
 
-      ### define the test
+      # make sure target is removed before - some problems with AIX
+      get_target_property(EXE_FILENAME ${_PAR_TARGET} OUTPUT_NAME)
+      add_custom_command( TARGET ${_PAR_TARGET}
+                          PRE_BUILD
+                          COMMAND ${CMAKE_COMMAND} -E remove ${EXE_FILENAME} )
 
-      if( _PAR_ENABLED ) # we can disable and still build it but not run it with 'make tests'
+      set_property( TARGET ${_PAR_TARGET} PROPERTY SKIP_BUILD_RPATH         FALSE )
+      set_property( TARGET ${_PAR_TARGET} PROPERTY BUILD_WITH_INSTALL_RPATH FALSE )
 
-          if( DEFINED _PAR_COMMAND )
-              add_test( ${_PAR_TARGET} ${_PAR_COMMAND} ${TEST_ARGS} ${_working_dir} ) # run a command as test
-          else()
-              add_test( ${_PAR_TARGET} ${_PAR_TARGET}  ${TEST_ARGS} ${_working_dir} ) # run the test that was generated
-          endif()
+    endif() # _PAR_SOURCES
 
-          # get test data
+    if( DEFINED _PAR_COMMAND AND NOT _PAR_TARGET ) # in the absence of target, we use the command as a name
+      set( _PAR_TARGET ${_PAR_COMMAND} )
+    endif()
 
-          if( _PAR_TEST_DATA )
+    # scripts dont have actual build targets
+    # we build a phony target to trigger the dependencies
+    if( DEFINED _PAR_COMMAND AND DEFINED _PAR_DEPENDS )
 
-             ecbuild_get_test_multidata( TARGET ${_PAR_TARGET}_data NAMES ${_PAR_TEST_DATA} )
+      add_custom_target( ${_PAR_TARGET}.x ALL COMMAND ${CMAKE_COMMAND} -E touch ${_PAR_TARGET}.x )
 
-             list( APPEND _PAR_TEST_DEPENDS ${_PAR_TARGET}_data )
+      add_dependencies( ${_PAR_TARGET}.x ${_PAR_DEPENDS} )
 
-          endif()
+    endif()
 
-          if( DEFINED _PAR_ENVIRONMENT )
-              set_property( TEST ${_PAR_TARGET} APPEND PROPERTY ENVIRONMENT "${_PAR_ENVIRONMENT}" )
-          endif()
 
-          if( DEFINED _PAR_WORKING_DIRECTORY )
-              set_tests_properties( ${_PAR_TARGET} PROPERTIES WORKING_DIRECTORY "${_PAR_WORKING_DIRECTORY}")
-          endif()
+    # define the arguments
+    set( TEST_ARGS "" )
+    if( DEFINED _PAR_ARGS  )
+      list( APPEND TEST_ARGS ${_PAR_ARGS} )
+    endif()
 
-          if( DEFINED _PAR_TEST_DEPENDS )
-              set_property( TEST ${_PAR_TARGET} APPEND PROPERTY DEPENDS "${_PAR_TEST_DEPENDS}" )
-          endif()
+    # Wrap with MPIEXEC
+    if( _PAR_MPI )
+      if( DEFINED _PAR_COMMAND )
+        ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): running as ${MPIEXEC} -n ${_PAR_MPI} ${_TEST_DIR}/${_PAR_COMMAND}")
+        set( _PAR_COMMAND ${MPIEXEC} -n ${_PAR_MPI} ${_TEST_DIR}/${_PAR_COMMAND} )
+      else()
+        ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): running as ${MPIEXEC} -n ${_PAR_MPI} ${_TEST_DIR}/${_PAR_TARGET}")
+        set( _PAR_COMMAND ${MPIEXEC} -n ${_PAR_MPI} ${_TEST_DIR}/${_PAR_TARGET} )
+      endif()
+    endif()
+
+    ### define the test
+
+    if( _PAR_ENABLED ) # we can disable and still build it but not run it with 'make tests'
+
+      if( DEFINED _PAR_COMMAND )
+        add_test( ${_PAR_TARGET} ${_PAR_COMMAND} ${TEST_ARGS} ${_working_dir} ) # run a command as test
+      else()
+        add_test( ${_PAR_TARGET} ${_PAR_TARGET}  ${TEST_ARGS} ${_working_dir} ) # run the test that was generated
+      endif()
 
+      # get test data
+
+      if( _PAR_TEST_DATA )
+
+        ecbuild_get_test_multidata( TARGET ${_PAR_TARGET}_data NAMES ${_PAR_TEST_DATA} )
+
+        list( APPEND _PAR_TEST_DEPENDS ${_PAR_TARGET}_data )
+
+      endif()
+
+      if( DEFINED _PAR_ENVIRONMENT )
+        set_property( TEST ${_PAR_TARGET} APPEND PROPERTY ENVIRONMENT "${_PAR_ENVIRONMENT}" )
       endif()
 
-      # add to the overall list of tests
-      list( APPEND ECBUILD_ALL_TESTS ${_PAR_TARGET} )
-      list( REMOVE_DUPLICATES ECBUILD_ALL_TESTS )
-      set( ECBUILD_ALL_TESTS ${ECBUILD_ALL_TESTS} CACHE INTERNAL "" )
+      if( DEFINED _PAR_WORKING_DIRECTORY )
+        ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): set working directory to ${_PAR_WORKING_DIRECTORY}")
+        set_tests_properties( ${_PAR_TARGET} PROPERTIES WORKING_DIRECTORY "${_PAR_WORKING_DIRECTORY}")
+      endif()
+
+      if( DEFINED _PAR_TEST_DEPENDS )
+        ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): set test dependencies to ${_PAR_TEST_DEPENDS}")
+        set_property( TEST ${_PAR_TARGET} APPEND PROPERTY DEPENDS "${_PAR_TEST_DEPENDS}" )
+      endif()
+
+    endif()
+
+    # add to the overall list of tests
+    list( APPEND ECBUILD_ALL_TESTS ${_PAR_TARGET} )
+    list( REMOVE_DUPLICATES ECBUILD_ALL_TESTS )
+    set( ECBUILD_ALL_TESTS ${ECBUILD_ALL_TESTS} CACHE INTERNAL "" )
 
-    endif() # _condition
+  endif() # _condition
 
-    # finally mark project files
-    ecbuild_declare_project_files( ${_PAR_SOURCES} )
+  # finally mark project files
+  ecbuild_declare_project_files( ${_PAR_SOURCES} )
 
 endmacro( ecbuild_add_test )
diff --git a/cmake/ecbuild_append_to_rpath.cmake b/cmake/ecbuild_append_to_rpath.cmake
index 6868e50..5a7bd66 100644
--- a/cmake/ecbuild_append_to_rpath.cmake
+++ b/cmake/ecbuild_append_to_rpath.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -6,32 +6,46 @@
 # granted to it by virtue of its status as an intergovernmental organisation nor
 # does it submit to any jurisdiction.
 
-############################################################################################
-# macro to append paths to rpath
-
-# if dir is absolute, it simply appends
-# if dir is relative,
-#    then it will try to make it relative to the executables
-#    else it will fallback to making it absolute by prepending the install path
+##############################################################################
+#.rst:
+#
+# ecbuild_append_to_rpath
+# =======================
+#
+# Append paths to the rpath. ::
+#
+#   ecbuild_append_to_rpath( RPATH_DIRS )
+#
+# ``RPATH_DIRS`` is a list of directories to append to ``CMAKE_INSTALL_RPATH``.
+#
+# * If a directory is absolute, simply append it.
+# * If a directory is relative, build a platform-dependent relative path
+#   (using ``@loader_path`` on Mac OSX, ``$ORIGIN`` on Linux and Solaris)
+#   or fall back to making it absolute by prepending the install prefix.
+#
+##############################################################################
 
 function( _path_append var path )
 	if( "${${var}}" STREQUAL "" )
 		set( ${var} "${path}" PARENT_SCOPE )
 	else()
-		set( ${var} "${${var}}:${path}" PARENT_SCOPE )
+		list( FIND ${var} ${path} _found )
+		if( _found EQUAL "-1" )
+			set( ${var} "${${var}}:${path}" PARENT_SCOPE )
+		endif()
 	endif()
 endfunction()
 
 macro( ecbuild_append_to_rpath RPATH_DIRS )
    
    if( NOT ${ARGC} EQUAL 1 )
-	   message( SEND_ERROR "ecbuild_append_to_rpath takes 1 argument")
+     message( SEND_ERROR "ecbuild_append_to_rpath takes 1 argument")
    endif()
 
    foreach( RPATH_DIR ${RPATH_DIRS} )
      
 		if( NOT ${RPATH_DIR} STREQUAL "" )
-        
+
 			file( TO_CMAKE_PATH ${RPATH_DIR} RPATH_DIR ) # sanitize the path
 
 			if( IS_ABSOLUTE ${RPATH_DIR} )
@@ -48,6 +62,7 @@ macro( ecbuild_append_to_rpath RPATH_DIRS )
 						set( CMAKE_INSTALL_NAME_DIR "@loader_path/${RPATH_DIR}" )
 					endif()
 					_path_append( CMAKE_INSTALL_RPATH "@loader_path/${RPATH_DIR}" )
+
 					set( _done 1 )
 
 				endif()
diff --git a/cmake/ecbuild_bundle.cmake b/cmake/ecbuild_bundle.cmake
index 2a75e84..2d9b779 100644
--- a/cmake/ecbuild_bundle.cmake
+++ b/cmake/ecbuild_bundle.cmake
@@ -1,15 +1,13 @@
-# Manages an external git repository
-# Usage:
-# git(DIR <directory> URL <giturl> [BRANCH <gitbranch>] [TAG <gittag>] [UPDATE] )
+# (C) Copyright 1996-2015 ECMWF.
 #
-# Arguments:
-#  - DIR: directory name where repo will be cloned to
-#  - URL: location of origin git repository
-#  - BRANCH (optional): Branch to clone
-#  - TAG (optional): Tag or commit-id to checkout
-#  - UPDATE (optional) : Option to try to update every cmake run
-#  - NOREMOTE (optional) : Option to avoid remote operations that require network
-#                          changes to tags that havent been fetched might fail
+# 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.
+
+# Set policies
+include( ecbuild_policies NO_POLICY_SCOPE )
 
 macro( debug_here VAR )
   message( STATUS " >>>>> ${VAR} [${${VAR}}]")
@@ -17,222 +15,18 @@ endmacro()
 
 include(CMakeParseArguments)
 
-set( ECBUILD_GIT  ON  CACHE BOOL "Turn on/off ecbuild_git() function" )
-
-if( ECBUILD_GIT )
-
-  find_package(Git)
-
-  set( ECMWF_USER $ENV{USER} CACHE STRING "ECMWF git user" )
-  set( ECMWF_GIT  SSH        CACHE STRING "ECMWF git protocol" )
-
-  set( ECMWF_GIT_SSH   "ssh://git@software.ecmwf.int:7999"                  CACHE INTERNAL "ECMWF ssh address" )
-  set( ECMWF_GIT_HTTPS "https://${ECMWF_USER}@software.ecmwf.int/stash/scm" CACHE INTERNAL "ECMWF https address" )
-
-  if( ECMWF_GIT MATCHES "[Ss][Ss][Hh]" )
-    set( ECMWF_GIT_ADDRESS ${ECMWF_GIT_SSH} CACHE INTERNAL "" )
-  else()
-    set( ECMWF_GIT_ADDRESS ${ECMWF_GIT_HTTPS} CACHE INTERNAL "" )
-  endif()
-  
-endif()
-
-macro( ecbuild_git )
-
-  set( options UPDATE NOREMOTE )
-  set( single_value_args PROJECT DIR URL TAG BRANCH )
-  set( multi_value_args )
-  cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}" ${_FIRST_ARG} ${ARGN} )
-
-  if( DEFINED _PAR_BRANCH AND DEFINED _PAR_TAG )
-    message( FATAL_ERROR "Cannot defined both BRANCH and TAG in macro ecbuild_git" )
-  endif()
-
-  if( _PAR_UPDATE AND _PAR_NOREMOTE )
-    message( FATAL_ERROR "Cannot pass both NOREMOTE and UPDATE in macro ecbuild_git" )
-  endif()
-
-  if(_PAR_UNPARSED_ARGUMENTS)
-    message(FATAL_ERROR "Unknown keywords given to ecbuild_git(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
-  endif()
-
-  if( ECBUILD_GIT )
-
-    set( _needs_switch 0 )
-
-    get_filename_component( ABS_PAR_DIR "${_PAR_DIR}" ABSOLUTE )
-    get_filename_component( PARENT_DIR  "${_PAR_DIR}/.." ABSOLUTE )
-
-    ### clone if no directory
-
-    if( NOT EXISTS "${_PAR_DIR}" )
-
-      message( STATUS "Cloning ${_PAR_PROJECT} from ${_PAR_URL} into ${_PAR_DIR}...")
-      execute_process(
-        COMMAND ${GIT_EXECUTABLE} "clone" ${_PAR_URL} ${clone_args} ${_PAR_DIR} "-q"
-        RESULT_VARIABLE nok ERROR_VARIABLE error
-        WORKING_DIRECTORY "${PARENT_DIR}")
-      if(nok)
-        message(FATAL_ERROR "${_PAR_DIR} git clone failed: ${error}\n")
-      endif()
-      message( STATUS "${_PAR_DIR} retrieved.")
-      set( _needs_switch 1 )
-
-    endif()
-
-    ### check current tag and sha1
-
-    if( IS_DIRECTORY "${_PAR_DIR}/.git" )
-
-        execute_process(
-          COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
-          OUTPUT_VARIABLE _sha1 RESULT_VARIABLE nok ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE
-          WORKING_DIRECTORY "${ABS_PAR_DIR}" )
-        if(nok)
-          message(STATUS "git rev-parse HEAD on ${_PAR_DIR} failed:\n ${error}")
-        endif()
-
-        execute_process(
-          COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
-          OUTPUT_VARIABLE _current_branch RESULT_VARIABLE nok ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE
-          WORKING_DIRECTORY "${ABS_PAR_DIR}" )
-        if( nok OR _current_branch STREQUAL "" )
-          message(STATUS "git rev-parse --abbrev-ref HEAD on ${_PAR_DIR} failed:\n ${error}")
-        endif()
-
-        #message(STATUS "git describe --exact-match --abbrev=0 @ ${ABS_PAR_DIR}")
-        execute_process(
-          COMMAND ${GIT_EXECUTABLE} describe --exact-match --abbrev=0
-          OUTPUT_VARIABLE _current_tag RESULT_VARIABLE nok ERROR_VARIABLE error
-          OUTPUT_STRIP_TRAILING_WHITESPACE  ERROR_STRIP_TRAILING_WHITESPACE
-          WORKING_DIRECTORY "${ABS_PAR_DIR}" )
-
-        if( error MATCHES "no tag exactly matches" OR error MATCHES "No names found" )
-          unset( _current_tag )
-        else()
-          if( nok )
-            message(STATUS "git describe --exact-match --abbrev=0 on ${_PAR_DIR} failed:\n ${error}")
-          endif()
-        endif()
-
-        if( NOT _current_tag ) # try nother method
-          #message(STATUS "git name-rev --tags --name-only @ ${ABS_PAR_DIR}")
-          execute_process(
-            COMMAND ${GIT_EXECUTABLE} name-rev --tags --name-only ${_sha1}
-            OUTPUT_VARIABLE _current_tag RESULT_VARIABLE nok ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE
-            WORKING_DIRECTORY "${ABS_PAR_DIR}" )
-          if( nok OR _current_tag STREQUAL "" )
-            message(STATUS "git name-rev --tags --name-only on ${_PAR_DIR} failed:\n ${error}")
-          endif()
-        endif()
-
-    endif()
-
-    if( DEFINED _PAR_BRANCH AND NOT "${_current_branch}" STREQUAL "${_PAR_BRANCH}" )
-      set( _needs_switch 1 )
-    endif()
-
-    if( DEFINED _PAR_TAG AND NOT "${_current_tag}" STREQUAL "${_PAR_TAG}" )
-      set( _needs_switch 1 )
-    endif()
-
-    if( DEFINED _PAR_BRANCH AND _PAR_UPDATE AND NOT _PAR_NOREMOTE )
-
-      add_custom_target( git_update_${_PAR_PROJECT}
-                         COMMAND "${GIT_EXECUTABLE}" pull -q
-                         WORKING_DIRECTORY "${ABS_PAR_DIR}"
-                         COMMENT "git pull of branch ${_PAR_BRANCH} on ${_PAR_DIR}" )
-
-      set( git_update_targets "git_update_${_PAR_PROJECT};${git_update_targets}" )
-
-    endif()
-
-    ### updates
-
-    if( _needs_switch AND IS_DIRECTORY "${_PAR_DIR}/.git" )
-
-      # debug_here( ABS_PAR_DIR )
-      # debug_here( _sha1 )
-      # debug_here( _current_branch )
-      # debug_here( _current_tag )
-      # debug_here( _PAR_TAG )
-      # debug_here( _PAR_BRANCH )
-      # debug_here( _needs_switch )
-      # debug_here( _PAR_UPDATE )
-
-      if( DEFINED _PAR_BRANCH )
-        set ( _gitref ${_PAR_BRANCH} )
-        message(STATUS "Updating ${_PAR_PROJECT} to head of BRANCH ${_PAR_BRANCH}...")
-      else()
-        message(STATUS "Updating ${_PAR_PROJECT} to TAG ${_PAR_TAG}...")
-        set ( _gitref ${_PAR_TAG} )
-      endif()
-
-      # fetching latest tags and branches
-
-      if( NOT _PAR_NOREMOTE )
-
-          message(STATUS "git fetch --all @ ${ABS_PAR_DIR}")
-          execute_process(COMMAND "${GIT_EXECUTABLE}" fetch --all -q
-            RESULT_VARIABLE nok ERROR_VARIABLE error
-            WORKING_DIRECTORY "${ABS_PAR_DIR}")
-          if(nok)
-            message(STATUS "git fetch --all in ${_PAR_DIR} failed:\n ${error}")
-          endif()
-
-          message(STATUS "git fetch --all --tags @ ${ABS_PAR_DIR}")
-          execute_process(COMMAND "${GIT_EXECUTABLE}" fetch --all --tags -q
-            RESULT_VARIABLE nok ERROR_VARIABLE error
-            WORKING_DIRECTORY "${ABS_PAR_DIR}")
-          if(nok)
-            message(STATUS "git fetch --all --tags in ${_PAR_DIR} failed:\n ${error}")
-          endif()
-
-      else()
-          message(STATUS "${_PAR_DIR} marked NOREMOTE : Skipping git fetch")
-      endif()
-
-      # checking out gitref
-
-      message(STATUS "git checkout ${_gitref} @ ${ABS_PAR_DIR}")
-      execute_process(COMMAND "${GIT_EXECUTABLE}" checkout -q "${_gitref}"
-        RESULT_VARIABLE nok ERROR_VARIABLE error
-        WORKING_DIRECTORY "${ABS_PAR_DIR}")
-      if(nok)
-        message(FATAL_ERROR "git checkout ${_gitref} on ${_PAR_DIR} failed:\n ${error}")
-      endif()
-
-      if( DEFINED _PAR_BRANCH AND _PAR_UPDATE ) #############################################################################
-
-            execute_process(COMMAND "${GIT_EXECUTABLE}" pull -q
-              RESULT_VARIABLE nok ERROR_VARIABLE error
-              WORKING_DIRECTORY "${ABS_PAR_DIR}")
-            if(nok)
-              message(STATUS "git pull of branch ${_PAR_BRANCH} on ${_PAR_DIR} failed:\n ${error}")
-            endif()
-
-      endif() ####################################################################################
-
-    endif( _needs_switch AND IS_DIRECTORY "${_PAR_DIR}/.git" )
-
-  endif( ECBUILD_GIT )
-
-endmacro()
-
-########################################################################################################################
-
-macro( ecmwf_stash )
+include(ecbuild_git)
 
-  set( options )
-  set( single_value_args STASH )
-  set( multi_value_args )
-  cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}" ${_FIRST_ARG} ${ARGN} )
-
-  ecbuild_git( URL "${ECMWF_GIT_ADDRESS}/${_PAR_STASH}.git" ${_PAR_UNPARSED_ARGUMENTS} )
-
-endmacro()
-
-########################################################################################################################
+##############################################################################
+#.rst:
+#
+# ecbuild_bundle_initialize
+# =========================
+#
+# Initialise the ecBuild environment for a bundle. *Must* be called *before*
+# any call to ecbuild_bundle.
+#
+##############################################################################
 
 macro( ecbuild_bundle_initialize )
 
@@ -258,21 +52,105 @@ macro( ecbuild_bundle_initialize )
 
 endmacro()
 
-########################################################################################################################
+##############################################################################
+#.rst:
+#
+# ecbuild_bundle
+# ==============
+#
+# Declare a subproject to be built as part of this bundle. ::
+#
+#   ecbuild_bundle( PROJECT <name>
+#                   STASH <repository> | GIT <giturl>
+#                   [ BRANCH <gitbranch> | TAG <gittag> ]
+#                   [ UPDATE | NOREMOTE ] )
+#                   [ MANUAL ] )
+#
+# Options
+# -------
+#
+# PROJECT : required
+#   project name for the Git repository to be managed
+#
+# STASH : cannot be combined with GIT, either is required
+#   Stash repository in the form <project>/<repository>
+#
+# URL : cannot be combined with STASH, either is required
+#   Git URL of the remote repository to clone (see ``git help clone``)
+#
+# BRANCH : optional, cannot be combined with TAG
+#   Git branch to check out
+#
+# TAG : optional, cannot be combined with BRANCH
+#   Git tag or commit id to check out
+#
+# UPDATE : optional, requires BRANCH, cannot be combined with NOREMOTE
+#   Create a CMake target update to fetch changes from the remote repository
+#
+# NOREMOTE : optional, cannot be combined with UPDATE
+#   Do not fetch changes from the remote repository
+#
+# MANUAL : optional
+#   Do not automatically switch branches or tags
+#
+# Usage
+# -----
+#
+# A bundle is used to build a number of projects together. Each subproject
+# needs to be declared with a call to ecbuild_bundle, where the order of
+# projects is important and needs to respect dependencies: if project B
+# depends on project A, A should be listed before B in the bundle.
+#
+# The first time a bundle is built, the sources of all subprojects are cloned
+# into directories named according to project in the *source* tree of the
+# bundle (which means these directories should be added to ``.gitignore``).
+#
+# Subprojects are configured and built in order. Due to being added as a
+# subproject, the usual project discovery mechanism (i.e. locating and
+# importing a ``<project>-config.cmake`` file) is not used. Also there are no
+# ``<project>-config.cmake`` files being generated for individual subprojects.
+# However there *are* package-config files being generated for each library.
+#
+# To switch off a subproject when building a bundle, set the CMake variable
+# ``BUNDLE_SKIP_<PNAME>`` where ``PNAME`` is the capitalised project name.
+#
+##############################################################################
 
 macro( ecbuild_bundle )
 
   set( options )
-  set( single_value_args PROJECT )
+  set( single_value_args PROJECT STASH GIT )
   set( multi_value_args )
   cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}" ${_FIRST_ARG} ${ARGN} )
 
-  ecmwf_stash( PROJECT ${_PAR_PROJECT} DIR ${PROJECT_SOURCE_DIR}/${_PAR_PROJECT} ${_PAR_UNPARSED_ARGUMENTS} )
+  string(TOUPPER "${_PAR_PROJECT}" PNAME)
+
+  if( BUNDLE_SKIP_${PNAME} )
+      message( STATUS "Skipping bundle project ${PNAME}" )
+  else()
+
+      if( _PAR_STASH )
+          ecmwf_stash( PROJECT ${_PAR_PROJECT} DIR ${PROJECT_SOURCE_DIR}/${_PAR_PROJECT} STASH ${_PAR_STASH} ${_PAR_UNPARSED_ARGUMENTS} )
+      elseif( _PAR_GIT )
+          ecbuild_git( PROJECT ${_PAR_PROJECT} DIR ${PROJECT_SOURCE_DIR}/${_PAR_PROJECT} URL ${_PAR_GIT} ${_PAR_UNPARSED_ARGUMENTS} )
+      endif()
 
-  ecbuild_use_package( PROJECT ${_PAR_PROJECT} )
+      ecbuild_use_package( PROJECT ${_PAR_PROJECT} )
+  endif()
 
 endmacro()
 
+##############################################################################
+#.rst:
+#
+# ecbuild_bundle_finalize
+# =======================
+#
+# Finalise the ecBuild environment for a bundle. *Must* be called *after* the
+# last call to ecbuild_bundle.
+#
+##############################################################################
+
 macro( ecbuild_bundle_finalize )
 
   add_custom_target( update DEPENDS ${git_update_targets} )
diff --git a/cmake/ecbuild_cache.cmake b/cmake/ecbuild_cache.cmake
index af12cf1..9663bca 100644
--- a/cmake/ecbuild_cache.cmake
+++ b/cmake/ecbuild_cache.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
@@ -6,6 +6,30 @@
 # granted to it by virtue of its status as an intergovernmental organisation nor
 # does it submit to any jurisdiction.
 
+##############################################################################
+#.rst:
+#
+# ecBuild Cache
+# =============
+#
+# During initialisation, ecBuild introspects the compiler and operating system
+# and performs a number of checks. The result of these is written to a
+# dedicated ``ecbuild-cache.cmake`` file in the build tree. This cache may be
+# used to speed up subsequent *clean* builds i.e. those where no CMakeCache.txt
+# exists yet.
+#
+# To use the ecBuild cache, configure with ``-DECBUILD_CACHE=<cache-file>``,
+# where ``<cache-file>`` is the path to an existing ``ecbuild-cache.cmake``.
+#
+# .. note ::
+#
+#   The ecBuild cache is specific to compiler *and* operating system. Do *not*
+#   attempt to use a cache file created on a different machine or with a
+#   different compiler!
+#
+##############################################################################
+
+# Prepare the cache and clobber any existing ecbuild-cache.cmake
 macro( ecbuild_prepare_cache )
     include( CheckSymbolExists )
     include( CheckIncludeFiles )
@@ -16,7 +40,7 @@ macro( ecbuild_prepare_cache )
     file(WRITE ${ecbuild_cache_file} "# ecbuild cache file\n\n")    
 endmacro()
 
-
+# Buffer the CMake variable var to be written to the ecBuild cache
 function( ecbuild_cache_var var )
   if( NOT ${var} )
     set( ${var} 0 )
@@ -24,6 +48,7 @@ function( ecbuild_cache_var var )
   set( ECBUILD_CACHE_BUFFER "${ECBUILD_CACHE_BUFFER}set( ${var} ${${var}} )\n" CACHE INTERNAL "Cache buffer" )
 endfunction()
 
+# Call check_symbol_exists only if the output is not defined yet
 function( ecbuild_cache_check_symbol_exists symbol includes output )
   if( NOT DEFINED ${output} )
     check_symbol_exists( ${symbol} ${includes} ${output} )
@@ -31,6 +56,7 @@ function( ecbuild_cache_check_symbol_exists symbol includes output )
   ecbuild_cache_var( ${output} )
 endfunction()
 
+# Call check_include_files only if the output is not defined yet
 function( ecbuild_cache_check_include_files includes output )
   if( NOT DEFINED ${output} )
     check_include_files( ${includes} ${output} )
@@ -38,6 +64,7 @@ function( ecbuild_cache_check_include_files includes output )
   ecbuild_cache_var( ${output} )
 endfunction()
 
+# Call check_c_source_compiles only if the output is not defined yet
 function( ecbuild_cache_check_c_source_compiles source output )
   if( NOT DEFINED ${output} )
     check_c_source_compiles( "${source}" ${output} )
@@ -45,6 +72,7 @@ function( ecbuild_cache_check_c_source_compiles source output )
   ecbuild_cache_var( ${output} )
 endfunction()
 
+# Call check_cxx_source_compiles only if the output is not defined yet
 function( ecbuild_cache_check_cxx_source_compiles source output )
   if( NOT DEFINED ${output} )
     check_cxx_source_compiles( "${source}" ${output} )
@@ -52,6 +80,7 @@ function( ecbuild_cache_check_cxx_source_compiles source output )
   ecbuild_cache_var( ${output} )
 endfunction()
 
+# Call check_type_size only if the output is not defined yet
 function( ecbuild_cache_check_type_size type output )
   if( NOT DEFINED ${output} )
     check_type_size( "${type}" ${output} )
@@ -59,7 +88,8 @@ function( ecbuild_cache_check_type_size type output )
   ecbuild_cache_var( ${output} )
 endfunction()
 
+# Flush the ecBuild cache to disk and reset the buffer
 function( ecbuild_flush_cache )
   file( APPEND ${ecbuild_cache_file} "${ECBUILD_CACHE_BUFFER}" )
   set( ECBUILD_CACHE_BUFFER "" CACHE INTERNAL "Cache buffer" )
-endfunction()
\ No newline at end of file
+endfunction()
diff --git a/cmake/ecbuild_check_c_source.cmake b/cmake/ecbuild_check_c_source.cmake
index 12a26c1..4460455 100644
--- a/cmake/ecbuild_check_c_source.cmake
+++ b/cmake/ecbuild_check_c_source.cmake
@@ -7,7 +7,48 @@
 # does it submit to any jurisdiction.
 
 ##############################################################################
-# macro that runs the given C code and returns its output
+#.rst:
+#
+# ecbuild_check_c_source_return
+# =============================
+#
+# Compile and run a given C source code and return its output. ::
+#
+#   ecbuild_check_c_source_return( <source>
+#                                  VAR <name>
+#                                  OUTPUT <name>
+#                                  [ INCLUDES <path1> [ <path2> ... ] ]
+#                                  [ LIBS <library1> [ <library2> ... ] ]
+#                                  [ DEFINITIONS <definition1> [ <definition2> ... ] ] )
+#
+# Options
+# -------
+#
+# VAR : required
+#   name of the check and name of the CMake variable to write result to
+#
+# OUTPUT : required
+#   name of CMake variable to write the output to
+#
+# INCLUDES : optional
+#   list of paths to add to include directories
+#
+# LIBS : optional
+#   list of libraries to link against (CMake targets or external libraries)
+#
+# DEFINITIONS : optional
+#   list of definitions to add to preprocessor defines
+#
+# Usage
+# -----
+#
+# This will write the given source to a .c file and compile and run it with
+# try_run. If successful, ``${VAR}`` is set to 1 and ``${OUTPUT}`` is set to
+# the output of the successful run in the CMake cache.
+#
+# The check will not run if ``${VAR}`` is defined (e.g. from ecBuild cache).
+#
+##############################################################################
 
 macro( ecbuild_check_c_source_return SOURCE )
 
@@ -48,7 +89,7 @@ macro( ecbuild_check_c_source_return SOURCE )
         if( _PAR_INCLUDES )
             list( APPEND __add_incs ${_PAR_INCLUDES} )
         endif()
-		if( __add_incs )
+        if( __add_incs )
             set(CHECK_C_SOURCE_COMPILES_ADD_INCLUDES "-DINCLUDE_DIRECTORIES:STRING=${__add_incs}")
         endif()
     
@@ -113,9 +154,29 @@ macro( ecbuild_check_c_source_return SOURCE )
 endmacro()
 
 ##############################################################################
-# macro that only adds a c flag if compiler supports it
+#.rst:
+#
+# ecbuild_add_c_flags
+# ===================
+#
+# Add C compiler flags to CMAKE_C_FLAGS only if supported by the compiler. ::
+#
+#   ecbuild_add_c_flags( <flag1> [ <flag2> ... ]
+#                        [ BUILD <build> ]
+#                        [ NAME <name> ] )
+#
+# Options
+# -------
+#
+# BUILD : optional
+#   add flags to ``CMAKE_C_FLAGS_<build>`` instead of ``CMAKE_C_FLAGS``
+#
+# NAME : optional
+#   name of the check (if omitted, checks are enumerated)
+#
+##############################################################################
 
-macro( cmake_add_c_flags m_c_flags )
+macro( ecbuild_add_c_flags m_c_flags )
 
   set( _flags ${m_c_flags} )
 
@@ -159,3 +220,7 @@ macro( cmake_add_c_flags m_c_flags )
   unset( _flag_ok )
 endmacro()
 
+macro( cmake_add_c_flags m_c_flags )
+  message( DEPRECATION " cmake_add_c_flags is deprecated, use ecbuild_add_c_flags instead." )
+  ecbuild_add_c_flags( ${m_c_flags} )
+endmacro()
diff --git a/cmake/ecbuild_check_c_source_return.cmake b/cmake/ecbuild_check_c_source_return.cmake
new file mode 100644
index 0000000..1dadca6
--- /dev/null
+++ b/cmake/ecbuild_check_c_source_return.cmake
@@ -0,0 +1,154 @@
+# (C) Copyright 1996-2015 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.
+
+##############################################################################
+#.rst:
+#
+# ecbuild_check_c_source_return
+# =============================
+#
+# Compile and run a given C source code and return its output. ::
+#
+#   ecbuild_check_c_source_return( <source>
+#                                  VAR <name>
+#                                  OUTPUT <name>
+#                                  [ INCLUDES <path1> [ <path2> ... ] ]
+#                                  [ LIBS <library1> [ <library2> ... ] ]
+#                                  [ DEFINITIONS <definition1> [ <definition2> ... ] ] )
+#
+# Options
+# -------
+#
+# VAR : required
+#   name of the check and name of the CMake variable to write result to
+#
+# OUTPUT : required
+#   name of CMake variable to write the output to
+#
+# INCLUDES : optional
+#   list of paths to add to include directories
+#
+# LIBS : optional
+#   list of libraries to link against (CMake targets or external libraries)
+#
+# DEFINITIONS : optional
+#   list of definitions to add to preprocessor defines
+#
+# Usage
+# -----
+#
+# This will write the given source to a .c file and compile and run it with
+# try_run. If successful, ``${VAR}`` is set to 1 and ``${OUTPUT}`` is set to
+# the output of the successful run in the CMake cache.
+#
+# The check will not run if ``${VAR}`` is defined (e.g. from ecBuild cache).
+#
+##############################################################################
+
+macro( ecbuild_check_c_source_return SOURCE )
+
+    set( options )
+    set( single_value_args VAR  OUTPUT )
+    set( multi_value_args  INCLUDES LIBS DEFINITIONS )
+
+    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_PAR_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_check_c_source_return(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    if( NOT _PAR_VAR OR NOT _PAR_OUTPUT )
+      message(FATAL_ERROR "The call to ecbuild_check_c_source_return() doesn't specify either SOURCE, VAR or OUTPUT")
+    endif()
+
+
+    if( NOT DEFINED ${_PAR_VAR} )
+
+        set(MACRO_CHECK_FUNCTION_DEFINITIONS "-D${_PAR_VAR} ${CMAKE_REQUIRED_FLAGS}")
+
+        set(CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES)
+        if( CMAKE_REQUIRED_LIBRARIES )
+            list( APPEND __add_libs ${CMAKE_REQUIRED_LIBRARIES} )
+        endif()
+        if( _PAR_LIBS )
+            list( APPEND __add_libs ${_PAR_LIBS} )
+        endif()
+        if( __add_libs )
+            set(CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES "-DLINK_LIBRARIES:STRING=${__add_libs}")
+        endif()
+
+        set(CHECK_C_SOURCE_COMPILES_ADD_INCLUDES)
+        if( CMAKE_REQUIRED_INCLUDES )
+            list( APPEND __add_incs ${CMAKE_REQUIRED_INCLUDES} )
+        endif()
+        if( _PAR_INCLUDES )
+            list( APPEND __add_incs ${_PAR_INCLUDES} )
+        endif()
+        if( __add_incs )
+            set(CHECK_C_SOURCE_COMPILES_ADD_INCLUDES "-DINCLUDE_DIRECTORIES:STRING=${__add_incs}")
+        endif()
+    
+        # write the source file
+    
+        file( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test_${_PAR_VAR}.c" "${SOURCE}\n" )
+
+        message( STATUS "Performing Test ${_PAR_VAR}" )
+        try_run( ${_PAR_VAR}_EXITCODE ${_PAR_VAR}_COMPILED
+          ${CMAKE_BINARY_DIR}
+          ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test_${_PAR_VAR}.c
+          COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+          CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
+          -DCMAKE_SKIP_RPATH:BOOL=${CMAKE_SKIP_RPATH}
+          "${CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES}"
+          "${CHECK_C_SOURCE_COMPILES_ADD_INCLUDES}"
+          COMPILE_OUTPUT_VARIABLE compile_OUTPUT 
+          RUN_OUTPUT_VARIABLE     run_OUTPUT )
+    
+        # if it did not compile make the return value fail code of 1
+        if( NOT ${_PAR_VAR}_COMPILED )
+          set( ${_PAR_VAR}_EXITCODE 1 )
+        endif()
+    
+        # if the return value was 0 then it worked
+        if("${${_PAR_VAR}_EXITCODE}" EQUAL 0)
+    
+          message(STATUS "Performing Test ${_PAR_VAR} - Success")
+          file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log 
+            "Performing C SOURCE FILE Test ${_PAR_VAR} succeded with the following compile output:\n"
+            "${compile_OUTPUT}\n" 
+            "Performing C SOURCE FILE Run ${_PAR_VAR} succeded with the following run output:\n"
+            "${run_OUTPUT}\n" 
+            "Return value: ${${_PAR_VAR}}\n"
+            "Source file was:\n${SOURCE}\n")
+
+          set( ${_PAR_VAR}     1              CACHE INTERNAL "Test ${_PAR_VAR}")
+          set( ${_PAR_OUTPUT} "${run_OUTPUT}" CACHE INTERNAL "Test ${_PAR_VAR} output")
+    
+        else()
+    
+          if(CMAKE_CROSSCOMPILING AND "${${_PAR_VAR}_EXITCODE}" MATCHES  "FAILED_TO_RUN")
+            set(${_PAR_VAR} "${${_PAR_VAR}_EXITCODE}")
+            set(${OUTPUT} "")
+          else()
+            set(${_PAR_VAR} "" CACHE INTERNAL "Test ${_PAR_VAR}")
+            set(${_PAR_OUTPUT} "" CACHE INTERNAL "Test ${_PAR_VAR} output")
+          endif()
+    
+          message(STATUS "Performing Test ${_PAR_VAR} - Failed")
+          file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log 
+            "Performing C SOURCE FILE Test ${_PAR_VAR} failed with the following compile output:\n"
+            "${compile_OUTPUT}\n" 
+            "Performing C SOURCE FILE Run ${_PAR_VAR} failed with the following run output:\n"
+            "${run_OUTPUT}\n" 
+            "Return value: ${${_PAR_VAR}_EXITCODE}\n"
+            "Source file was:\n${SOURCE}\n")
+        endif()
+    
+    endif()
+
+endmacro()
diff --git a/cmake/ecbuild_check_compiler.cmake b/cmake/ecbuild_check_compiler.cmake
index 406f1d2..32ff6cc 100644
--- a/cmake/ecbuild_check_compiler.cmake
+++ b/cmake/ecbuild_check_compiler.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -81,7 +81,6 @@ if( CMAKE_CXX_COMPILER_LOADED AND ENABLE_OS_TESTS )
     # check for __FUNCTION__
     ecbuild_cache_check_cxx_source_compiles( "#include <iostream>\nint main(int argc, char* argv[]) { std::cout << __FUNCTION__ << std::endl; }"
       EC_HAVE_FUNCTION_DEF )
-    
 
     # check for c++ abi, usually present in GNU compilers
     ecbuild_cache_check_cxx_source_compiles( "#include <cxxabi.h>\n int main() { char * type; int status; char * r = abi::__cxa_demangle(type, 0, 0, &status); }"
@@ -94,7 +93,7 @@ if( CMAKE_CXX_COMPILER_LOADED AND ENABLE_OS_TESTS )
     # check for sstream
     ecbuild_cache_check_cxx_source_compiles( "#include <sstream>\nint main() { std::stringstream s; }"
 	  EC_HAVE_CXX_SSTREAM )
- 
+
 endif()
 
 ############################################################################################
@@ -102,23 +101,23 @@ endif()
 
 if( CMAKE_COMPILER_IS_GNUCC )
 
-    cmake_add_c_flags("-pipe") # use pipe for faster compilation
+    ecbuild_add_c_flags("-pipe") # use pipe for faster compilation
 
     if( ENABLE_WARNINGS )
-        cmake_add_c_flags("-Wall")
-        cmake_add_c_flags("-pedantic")
-        #    cmake_add_c_flags("-Wextra")
+        ecbuild_add_c_flags("-Wall")
+        # ecbuild_add_c_flags("-pedantic")
+        # ecbuild_add_c_flags("-Wextra")
     endif()
 
 endif()
 
 if( CMAKE_COMPILER_IS_GNUCXX )
 
-   cmake_add_cxx_flags("-pipe") # use pipe for faster compilation
+   ecbuild_add_cxx_flags("-pipe") # use pipe for faster compilation
 
     if( ENABLE_WARNINGS )
-        cmake_add_cxx_flags("-Wall")
-        #    cmake_add_cxx_flags("-Wextra")
+        ecbuild_add_cxx_flags("-Wall")
+        #    ecbuild_add_cxx_flags("-Wextra")
     endif()
 
 endif()
@@ -139,3 +138,14 @@ endif()
 if( "${CMAKE_Fortran_COMPILER_ID}" STREQUAL "Cray" )
   set(CMAKE_Fortran_LINK_EXECUTABLE "<CMAKE_Fortran_COMPILER> <CMAKE_Fortran_LINK_FLAGS> <LINK_FLAGS> <FLAGS> <OBJECTS>  -o <TARGET> <LINK_LIBRARIES> -Wl,-Bdynamic" )
 endif()
+
+############################################################################################
+# Fortran compiler specific flags
+# if( NOT HAVE_SINGLE_PRECISION )
+#  if(CMAKE_Fortran_COMPILER_ID STREQUAL "PGI")
+#      ecbuild_add_fortran_flags("-r8")
+#  elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
+#      # NOTE that if we add -fdefault-real-8 then we NEED -fdefault-double-8 to avoid quadmath
+#      ecbuild_add_fortran_flags("-fdefault-real-8 -fdefault-double-8")
+#  endif()
+# endif()
diff --git a/cmake/ecbuild_check_cxx11.cmake b/cmake/ecbuild_check_cxx11.cmake
index ef1b24e..6453786 100644
--- a/cmake/ecbuild_check_cxx11.cmake
+++ b/cmake/ecbuild_check_cxx11.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -6,9 +6,33 @@
 # granted to it by virtue of its status as an intergovernmental organisation nor
 # does it submit to any jurisdiction.
 
-############################################################################################
-# macro to check for cxx11 features
-# uses macros from the project github.com/UCL/GreatCMakeCookOff
+##############################################################################
+#.rst:
+#
+# ecbuild_check_cxx11
+# ===================
+#
+# Check for C++11 features. ::
+#
+#   ecbuild_check_cxx11( [ FEATURES <feature1> [ <feature2> ... ] ]
+#                        [ REQUIRED <feature1> [ <feature2> ... ] ]
+#                        [ PRINT ] )
+#
+# This function uses macros from http://github.com/UCL/GreatCMakeCookOff
+#
+# Options
+# -------
+#
+# FEATURES : optional, checks for all features if omitted
+#   list of features to check for
+#
+# REQUIRED : optional
+#   list of required features to check for
+#
+# PRINT : optional
+#   print a summary of features check for, found and not found
+#
+##############################################################################
 
 function( ecbuild_check_cxx11 )
 
@@ -28,7 +52,15 @@ function( ecbuild_check_cxx11 )
 
 	cxx11_find_all_features( ALL_FEATURES ) # list all available features to check
 
-	if( NOT _p_FEATURES AND NOT _p_REQUIRED ) # no input, then searhc for all features
+	# Save CXX flags
+	set( CXX_FLAGS_SNASHOT ${CMAKE_CXX_FLAGS} )
+
+	# Add C++11 flags
+	include( ${ECBUILD_MACROS_DIR}/ecbuild_get_cxx11_flags.cmake )
+	ecbuild_get_cxx11_flags( CXX11_FLAGS )
+	set( CMAKE_CXX_FLAGS "${CXX11_FLAGS} ${CMAKE_CXX_FLAGS}" )
+
+	if( NOT _p_FEATURES AND NOT _p_REQUIRED ) # no input, then search for all features
 
 		cxx11_feature_check()
 
@@ -44,7 +76,16 @@ function( ecbuild_check_cxx11 )
 
 	endif()
 
-	foreach( f ${ALL_FEATURES} )
+	# Restore CXX flags
+	set( CMAKE_CXX_FLAGS ${CXX_FLAGS_SNAPSHOT} )
+
+	if( _p_FEATURES OR _p_REQUIRED )
+		set( CXX11_CHECKED_FEATURES ${_p_FEATURES} ${_p_REQUIRED} )
+	else()
+		set( CXX11_CHECKED_FEATURES ${ALL_FEATURES} )
+	endif()
+
+	foreach( f ${CXX11_CHECKED_FEATURES} )
 		# message( "HAS_CXX11_${FEAT}" )
 		string( TOUPPER ${f} FEAT )
 		if( HAS_CXX11_${FEAT} )
@@ -54,13 +95,38 @@ function( ecbuild_check_cxx11 )
 		endif()
 	endforeach()
 
+  if( CXX11_CHECKED_FEATURES )
+    list( SORT CXX11_CHECKED_FEATURES )
+	endif()
+	if( CXX11_SUPPORTED_FEATURES )
+		list( SORT CXX11_SUPPORTED_FEATURES )
+	endif()
+	if( CXX11_NOT_SUPPORTED_FEATURES )
+		list( SORT CXX11_NOT_SUPPORTED_FEATURES )
+	endif()
+
+	set( CXX11_CHECKED_FEATURES       ${CXX11_CHECKED_FEATURES}       PARENT_SCOPE )
 	set( CXX11_SUPPORTED_FEATURES     ${CXX11_SUPPORTED_FEATURES}     PARENT_SCOPE )
 	set( CXX11_NOT_SUPPORTED_FEATURES ${CXX11_NOT_SUPPORTED_FEATURES} PARENT_SCOPE )
 
 	if( _p_PRINT )
+		if( CXX11_CHECKED_FEATURES )
+			join( CXX11_CHECKED_FEATURES " " CXX11_CHECKED_FEATURES_STR )
+			message( STATUS "Checked C++11 features: ${CXX11_CHECKED_FEATURES_STR}" )
+		else()
+			message( STATUS "Checked no C++11 features" )
+		endif()
 		if( CXX11_SUPPORTED_FEATURES )
 			join( CXX11_SUPPORTED_FEATURES " " CXX11_SUPPORTED_FEATURES_STR )
 			message( STATUS "Found C++11 features: ${CXX11_SUPPORTED_FEATURES_STR}" )
+		else()
+			message( STATUS "Found no C++11 features" )
+		endif()
+		if( CXX11_NOT_SUPPORTED_FEATURES )
+			join( CXX11_NOT_SUPPORTED_FEATURES " " CXX11_NOT_SUPPORTED_FEATURES_STR )
+			message( STATUS "Not found C++11 features: ${CXX11_NOT_SUPPORTED_FEATURES_STR}" )
+		else()
+			message( STATUS "Found all checked C++11 features" )
 		endif()
 	endif()
 
diff --git a/cmake/ecbuild_check_cxx_source.cmake b/cmake/ecbuild_check_cxx_source.cmake
index a48ae5a..ee3588b 100644
--- a/cmake/ecbuild_check_cxx_source.cmake
+++ b/cmake/ecbuild_check_cxx_source.cmake
@@ -7,7 +7,48 @@
 # does it submit to any jurisdiction.
 
 ##############################################################################
-# macro that runs the given C++ code and returns its output
+#.rst:
+#
+# ecbuild_check_cxx_source_return
+# ===============================
+#
+# Compile and run a given C++ code and return its output. ::
+#
+#   ecbuild_check_cxx_source_return( <source>
+#                                    VAR <name>
+#                                    OUTPUT <name>
+#                                    [ INCLUDES <path1> [ <path2> ... ] ]
+#                                    [ LIBS <library1> [ <library2> ... ] ]
+#                                    [ DEFINITIONS <definition1> [ <definition2> ... ] ] )
+#
+# Options
+# -------
+#
+# VAR : required
+#   name of the check and name of the CMake variable to write result to
+#
+# OUTPUT : required
+#   name of CMake variable to write the output to
+#
+# INCLUDES : optional
+#   list of paths to add to include directories
+#
+# LIBS : optional
+#   list of libraries to link against (CMake targets or external libraries)
+#
+# DEFINITIONS : optional
+#   list of definitions to add to preprocessor defines
+#
+# Usage
+# -----
+#
+# This will write the given source to a .cxx file and compile and run it with
+# try_run. If successful, ``${VAR}`` is set to 1 and ``${OUTPUT}`` is set to
+# the output of the successful run in the CMake cache.
+#
+# The check will not run if ``${VAR}`` is defined (e.g. from ecBuild cache).
+#
+##############################################################################
 
 macro( ecbuild_check_cxx_source_return SOURCE )
 
@@ -49,7 +90,7 @@ macro( ecbuild_check_cxx_source_return SOURCE )
         if( _p_INCLUDES )
             list( APPEND __add_incs ${_p_INCLUDES} )
         endif()
-		if( __add_incs )
+        if( __add_incs )
             set(CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES "-DINCLUDE_DIRECTORIES:STRING=${__add_incs}")
         endif()
     
@@ -69,8 +110,8 @@ macro( ecbuild_check_cxx_source_return SOURCE )
           COMPILE_OUTPUT_VARIABLE compile_OUTPUT 
           RUN_OUTPUT_VARIABLE     run_OUTPUT )
    
-	  # debug_var( ${_p_VAR}_COMPILED )
-	  # debug_var( ${_p_VAR}_EXITCODE )
+        # debug_var( ${_p_VAR}_COMPILED )
+        # debug_var( ${_p_VAR}_EXITCODE )
 
         # if it did not compile make the return value fail code of 1
 
@@ -122,9 +163,24 @@ macro( ecbuild_check_cxx_source_return SOURCE )
 endmacro()
 
 ##############################################################################
-# macro that only adds a cxx flag if compiler supports it
+#.rst:
+#
+# ecbuild_add_cxx_flags
+# =====================
+#
+# Add C++ compiler flags to CMAKE_CXX_FLAGS only if supported by compiler. ::
+#
+#   ecbuild_add_cxx_flags( <flag1> [ <flag2> ... ] [ BUILD <build> ] )
+#
+# Options
+# -------
+#
+# BUILD : optional
+#   add flags to ``CMAKE_CXX_FLAGS_<build>`` instead of ``CMAKE_CXX_FLAGS``
+#
+##############################################################################
 
-macro( cmake_add_cxx_flags m_cxx_flags )
+macro( ecbuild_add_cxx_flags m_cxx_flags )
 
   set( _flags ${m_cxx_flags} )
   if( _flags AND CMAKE_CXX_COMPILER_LOADED )
@@ -158,3 +214,8 @@ macro( cmake_add_cxx_flags m_cxx_flags )
   unset( _flags )
 
 endmacro()
+
+macro( cmake_add_cxx_flags m_cxx_flags )
+  message( DEPRECATION " cmake_add_cxx_flags is deprecated, use ecbuild_add_cxx_flags instead." )
+  ecbuild_add_cxx_flags( ${m_cxx_flags} )
+endmacro()
diff --git a/cmake/ecbuild_check_cxx_source_return.cmake b/cmake/ecbuild_check_cxx_source_return.cmake
new file mode 100644
index 0000000..e364918
--- /dev/null
+++ b/cmake/ecbuild_check_cxx_source_return.cmake
@@ -0,0 +1,163 @@
+# (C) Copyright 1996-2015 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.
+
+##############################################################################
+#.rst:
+#
+# ecbuild_check_cxx_source_return
+# ===============================
+#
+# Compile and run a given C++ code and return its output. ::
+#
+#   ecbuild_check_cxx_source_return( <source>
+#                                    VAR <name>
+#                                    OUTPUT <name>
+#                                    [ INCLUDES <path1> [ <path2> ... ] ]
+#                                    [ LIBS <library1> [ <library2> ... ] ]
+#                                    [ DEFINITIONS <definition1> [ <definition2> ... ] ] )
+#
+# Options
+# -------
+#
+# VAR : required
+#   name of the check and name of the CMake variable to write result to
+#
+# OUTPUT : required
+#   name of CMake variable to write the output to
+#
+# INCLUDES : optional
+#   list of paths to add to include directories
+#
+# LIBS : optional
+#   list of libraries to link against (CMake targets or external libraries)
+#
+# DEFINITIONS : optional
+#   list of definitions to add to preprocessor defines
+#
+# Usage
+# -----
+#
+# This will write the given source to a .cxx file and compile and run it with
+# try_run. If successful, ``${VAR}`` is set to 1 and ``${OUTPUT}`` is set to
+# the output of the successful run in the CMake cache.
+#
+# The check will not run if ``${VAR}`` is defined (e.g. from ecBuild cache).
+#
+##############################################################################
+
+macro( ecbuild_check_cxx_source_return SOURCE )
+
+    set( options )
+    set( single_value_args VAR  OUTPUT )
+    set( multi_value_args  INCLUDES LIBS DEFINITIONS )
+
+    cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_p_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_check_cxx_source_return(): \"${_p_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    if( NOT _p_VAR OR NOT _p_OUTPUT )
+      message(FATAL_ERROR "The call to ecbuild_check_cxx_source_return() doesn't specify either SOURCE, VAR or OUTPUT")
+    endif()
+
+    set( _msg "Testing ${_p_VAR}:" )
+
+    if( NOT DEFINED ${_p_VAR} )
+
+        set(MACRO_CHECK_FUNCTION_DEFINITIONS "-D${_p_VAR} ${CMAKE_REQUIRED_FLAGS}")
+
+        set(CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES)
+        if(CMAKE_REQUIRED_LIBRARIES)
+            list( APPEND __add_libs ${CMAKE_REQUIRED_LIBRARIES} )
+        endif()
+        if( _p_LIBS )
+            list( APPEND __add_libs ${_p_LIBS} )
+        endif()
+        if( __add_libs )
+            set(CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES "-DLINK_LIBRARIES:STRING=${__add_libs}")
+        endif()
+
+        set(CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES)
+        if(CMAKE_REQUIRED_INCLUDES)
+            list( APPEND __add_incs ${CMAKE_REQUIRED_INCLUDES} )
+        endif()
+        if( _p_INCLUDES )
+            list( APPEND __add_incs ${_p_INCLUDES} )
+        endif()
+        if( __add_incs )
+            set(CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES "-DINCLUDE_DIRECTORIES:STRING=${__add_incs}")
+        endif()
+    
+        # write the source file
+    
+        file( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test_${_p_VAR}.cxx" "${SOURCE}\n" )
+
+        message( STATUS "${_msg}" )
+        try_run( ${_p_VAR}_EXITCODE ${_p_VAR}_COMPILED
+          ${CMAKE_BINARY_DIR}
+          ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test_${_p_VAR}.cxx
+          COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+          CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
+          -DCMAKE_SKIP_RPATH:BOOL=${CMAKE_SKIP_RPATH}
+          "${CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES}"
+          "${CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES}"
+          COMPILE_OUTPUT_VARIABLE compile_OUTPUT 
+          RUN_OUTPUT_VARIABLE     run_OUTPUT )
+   
+        # debug_var( ${_p_VAR}_COMPILED )
+        # debug_var( ${_p_VAR}_EXITCODE )
+
+        # if it did not compile make the return value fail code of 1
+
+        if( NOT ${_p_VAR}_COMPILED )
+          message( STATUS "${_msg} failed to compile" )
+        endif()
+
+        if( "${${_p_VAR}_EXITCODE}" MATCHES  "FAILED_TO_RUN" )
+          message( STATUS "${_msg} failed to run" )
+        endif()
+
+        # if the return value was 0 then it worked
+        if( ${_p_VAR}_COMPILED AND "${${_p_VAR}_EXITCODE}" EQUAL 0 )
+    
+          message(STATUS "${_msg} Success")
+          file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log 
+            "Performing C++ SOURCE FILE Test ${_p_VAR} succeded with the following compile output:\n"
+            "${compile_OUTPUT}\n" 
+            "Performing C++ SOURCE FILE Run ${_p_VAR} succeded with the following run output:\n"
+            "${run_OUTPUT}\n" 
+            "Return value: ${${_p_VAR}}\n"
+            "Source file was:\n${SOURCE}\n")
+
+          set( ${_p_VAR}     1              CACHE INTERNAL "Test ${_p_VAR}")
+          set( ${_p_OUTPUT} "${run_OUTPUT}" CACHE INTERNAL "Test ${_p_VAR} output")
+    
+        else()
+    
+          if(CMAKE_CROSSCOMPILING AND "${${_p_VAR}_EXITCODE}" MATCHES  "FAILED_TO_RUN")
+            set(${_p_VAR} "${${_p_VAR}_EXITCODE}")
+            set(${OUTPUT} "")
+          else()
+            set(${_p_VAR} "" CACHE INTERNAL "Test ${_p_VAR}")
+            set(${_p_OUTPUT} "" CACHE INTERNAL "Test ${_p_VAR} output")
+          endif()
+    
+          message(STATUS "Test ${_p_VAR} - Failed")
+          file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log 
+            "Performing C++ SOURCE FILE Test ${_p_VAR} failed with the following compile output:\n"
+            "${compile_OUTPUT}\n" 
+            "Performing C++ SOURCE FILE Run ${_p_VAR} failed with the following run output:\n"
+            "${run_OUTPUT}\n" 
+            "Return value: ${${_p_VAR}_EXITCODE}\n"
+            "Source file was:\n${SOURCE}\n")
+        endif()
+    
+    endif()
+
+endmacro()
diff --git a/cmake/ecbuild_check_fortran_source.cmake b/cmake/ecbuild_check_fortran_source.cmake
index da04a70..9f95502 100644
--- a/cmake/ecbuild_check_fortran_source.cmake
+++ b/cmake/ecbuild_check_fortran_source.cmake
@@ -7,7 +7,48 @@
 # does it submit to any jurisdiction.
 
 ##############################################################################
-# macro that runs the given Fortran code and returns its output
+#.rst:
+#
+# ecbuild_check_fortran_source_return
+# ===================================
+#
+# Compile and run a given Fortran code and return its output. ::
+#
+#   ecbuild_check_fortran_source_return( <source>
+#                                        VAR <name>
+#                                        OUTPUT <name>
+#                                        [ INCLUDES <path1> [ <path2> ... ] ]
+#                                        [ LIBS <library1> [ <library2> ... ] ]
+#                                        [ DEFINITIONS <def1> [ <def2> ... ] ] )
+#
+# Options
+# -------
+#
+# VAR : required
+#   name of the check and name of the CMake variable to write result to
+#
+# OUTPUT : required
+#   name of CMake variable to write the output to
+#
+# INCLUDES : optional
+#   list of paths to add to include directories
+#
+# LIBS : optional
+#   list of libraries to link against (CMake targets or external libraries)
+#
+# DEFINITIONS : optional
+#   list of definitions to add to preprocessor defines
+#
+# Usage
+# -----
+#
+# This will write the given source to a .f file and compile and run it with
+# try_run. If successful, ``${VAR}`` is set to 1 and ``${OUTPUT}`` is set to
+# the output of the successful run in the CMake cache.
+#
+# The check will not run if ``${VAR}`` is defined (e.g. from ecBuild cache).
+#
+##############################################################################
 
 macro( ecbuild_check_fortran_source_return SOURCE )
 
@@ -114,10 +155,27 @@ macro( ecbuild_check_fortran_source_return SOURCE )
 endmacro()
 
 ##############################################################################
-# macro that only adds a Fortran flag if compiler supports it
+#.rst:
+#
+# ecbuild_add_fortran_flags
+# =========================
+#
+# Add Fortran compiler flags to CMAKE_Fortran_FLAGS only if supported by the
+# compiler. ::
+#
+#   ecbuild_add_fortran_flags( <flag1> [ <flag2> ... ] [ BUILD <build> ] )
+#
+# Options
+# -------
+#
+# BUILD : optional
+#   add flags to ``CMAKE_Fortran_FLAGS_<build>`` instead of
+#   ``CMAKE_Fortran_FLAGS``
+#
+##############################################################################
 
 include( CheckFortranCompilerFlag )
-macro( cmake_add_fortran_flags m_fortran_flags )
+macro( ecbuild_add_fortran_flags m_fortran_flags )
 
   set( _flags ${m_fortran_flags} )
 
@@ -155,3 +213,7 @@ macro( cmake_add_fortran_flags m_fortran_flags )
 
 endmacro()
 
+macro( cmake_add_fortran_flags m_fortran_flags )
+  message( DEPRECATION " cmake_add_fortran_flags is deprecated, use ecbuild_add_fortran_flags instead." )
+  ecbuild_add_fortran_flags( ${m_fortran_flags} )
+endmacro()
diff --git a/cmake/ecbuild_check_fortran_source_return.cmake b/cmake/ecbuild_check_fortran_source_return.cmake
new file mode 100644
index 0000000..1c50896
--- /dev/null
+++ b/cmake/ecbuild_check_fortran_source_return.cmake
@@ -0,0 +1,155 @@
+# (C) Copyright 1996-2015 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.
+
+##############################################################################
+#.rst:
+#
+# ecbuild_check_fortran_source_return
+# ===================================
+#
+# Compile and run a given Fortran code and return its output. ::
+#
+#   ecbuild_check_fortran_source_return( <source>
+#                                        VAR <name>
+#                                        OUTPUT <name>
+#                                        [ INCLUDES <path1> [ <path2> ... ] ]
+#                                        [ LIBS <library1> [ <library2> ... ] ]
+#                                        [ DEFINITIONS <def1> [ <def2> ... ] ] )
+#
+# Options
+# -------
+#
+# VAR : required
+#   name of the check and name of the CMake variable to write result to
+#
+# OUTPUT : required
+#   name of CMake variable to write the output to
+#
+# INCLUDES : optional
+#   list of paths to add to include directories
+#
+# LIBS : optional
+#   list of libraries to link against (CMake targets or external libraries)
+#
+# DEFINITIONS : optional
+#   list of definitions to add to preprocessor defines
+#
+# Usage
+# -----
+#
+# This will write the given source to a .f file and compile and run it with
+# try_run. If successful, ``${VAR}`` is set to 1 and ``${OUTPUT}`` is set to
+# the output of the successful run in the CMake cache.
+#
+# The check will not run if ``${VAR}`` is defined (e.g. from ecBuild cache).
+#
+##############################################################################
+
+macro( ecbuild_check_fortran_source_return SOURCE )
+
+    message( WARNING "This macro ecbuild_check_fortran_source has never been tested" )
+    set( options )
+    set( single_value_args VAR  OUTPUT )
+    set( multi_value_args  INCLUDES LIBS DEFINITIONS )
+
+    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_PAR_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_check_fortran_source_return(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    if( NOT _PAR_VAR OR NOT _PAR_OUTPUT )
+      message(FATAL_ERROR "The call to ecbuild_check_fortran_source_return() doesn't specify either SOURCE, VAR or OUTPUT")
+    endif()
+
+
+    if( NOT DEFINED ${_PAR_VAR} )
+
+        set(MACRO_CHECK_FUNCTION_DEFINITIONS "-D${_PAR_VAR} ${CMAKE_REQUIRED_FLAGS}")
+
+        set(CHECK_Fortran_SOURCE_COMPILES_ADD_LIBRARIES)
+        if( CMAKE_REQUIRED_LIBRARIES )
+            list( APPEND __add_libs ${CMAKE_REQUIRED_LIBRARIES} )
+        endif()
+        if( _PAR_LIBS )
+            list( APPEND __add_libs ${_PAR_LIBS} )
+        endif()
+        if( __add_libs )
+            set(CHECK_Fortran_SOURCE_COMPILES_ADD_LIBRARIES "-DLINK_LIBRARIES:STRING=${__add_libs}")
+        endif()
+
+        set(CHECK_Fortran_SOURCE_COMPILES_ADD_INCLUDES)
+        if( CMAKE_REQUIRED_INCLUDES )
+            list( APPEND __add_incs ${CMAKE_REQUIRED_INCLUDES} )
+        endif()
+        if( _PAR_INCLUDES )
+            list( APPEND __add_incs ${_PAR_INCLUDES} )
+        endif()
+        if( __add_libs )
+            set(CHECK_Fortran_SOURCE_COMPILES_ADD_INCLUDES "-DINCLUDE_DIRECTORIES:STRING=${__add_incs}")
+        endif()
+    
+        # write the source file
+    
+        file( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test_${_PAR_VAR}.f" "${SOURCE}\n" )
+
+        message( STATUS "Performing Test ${_PAR_VAR}" )
+        try_run( ${_PAR_VAR}_EXITCODE ${_PAR_VAR}_COMPILED
+          ${CMAKE_BINARY_DIR}
+          ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test_${_PAR_VAR}.f
+          COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+          CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
+          -DCMAKE_SKIP_RPATH:BOOL=${CMAKE_SKIP_RPATH}
+          "${CHECK_Fortran_SOURCE_COMPILES_ADD_LIBRARIES}"
+          "${CHECK_Fortran_SOURCE_COMPILES_ADD_INCLUDES}"
+          COMPILE_OUTPUT_VARIABLE compile_OUTPUT 
+          RUN_OUTPUT_VARIABLE     run_OUTPUT )
+    
+        # if it did not compile make the return value fail code of 1
+        if( NOT ${_PAR_VAR}_COMPILED )
+          set( ${_PAR_VAR}_EXITCODE 1 )
+        endif()
+    
+        # if the return value was 0 then it worked
+        if("${${_PAR_VAR}_EXITCODE}" EQUAL 0)
+    
+          message(STATUS "Performing Test ${_PAR_VAR} - Success")
+          file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log 
+            "Performing Fortran SOURCE FILE Test ${_PAR_VAR} succeded with the following compile output:\n"
+            "${compile_OUTPUT}\n" 
+            "Performing Fortran SOURCE FILE Run ${_PAR_VAR} succeded with the following run output:\n"
+            "${run_OUTPUT}\n" 
+            "Return value: ${${_PAR_VAR}}\n"
+            "Source file was:\n${SOURCE}\n")
+
+          set( ${_PAR_VAR}     1              CACHE INTERNAL "Test ${_PAR_VAR}")
+          set( ${_PAR_OUTPUT} "${run_OUTPUT}" CACHE INTERNAL "Test ${_PAR_VAR} output")
+    
+        else()
+    
+          if(CMAKE_CROSSCOMPILING AND "${${_PAR_VAR}_EXITCODE}" MATCHES  "FAILED_TO_RUN")
+            set(${_PAR_VAR} "${${_PAR_VAR}_EXITCODE}")
+            set(${OUTPUT} "")
+          else()
+            set(${_PAR_VAR} "" CACHE INTERNAL "Test ${_PAR_VAR}")
+            set(${_PAR_OUTPUT} "" CACHE INTERNAL "Test ${_PAR_VAR} output")
+          endif()
+    
+          message(STATUS "Performing Test ${_PAR_VAR} - Failed")
+          file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log 
+            "Performing C SOURCE FILE Test ${_PAR_VAR} failed with the following compile output:\n"
+            "${compile_OUTPUT}\n" 
+            "Performing C SOURCE FILE Run ${_PAR_VAR} failed with the following run output:\n"
+            "${run_OUTPUT}\n" 
+            "Return value: ${${_PAR_VAR}_EXITCODE}\n"
+            "Source file was:\n${SOURCE}\n")
+        endif()
+    
+    endif()
+
+endmacro()
diff --git a/cmake/ecbuild_check_functions.cmake b/cmake/ecbuild_check_functions.cmake
index e859432..a3ed7a1 100644
--- a/cmake/ecbuild_check_functions.cmake
+++ b/cmake/ecbuild_check_functions.cmake
@@ -1,5 +1,5 @@
-# (C) Copyright 1996-2014 ECMWF.
-# 
+# (C) Copyright 1996-2015 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 
@@ -10,7 +10,7 @@
 # os capability checks
 
 if( ENABLE_OS_FUNCTIONS_TEST )
-    
+
     ### symbol checks ##################
 
     ecbuild_cache_check_symbol_exists( fseek        "stdio.h"                         EC_HAVE_FSEEK  )
@@ -22,17 +22,17 @@ if( ENABLE_OS_FUNCTIONS_TEST )
     ecbuild_cache_check_symbol_exists( fopen        "stdio.h"                         EC_HAVE_FOPEN  )
     ecbuild_cache_check_symbol_exists( flock        "sys/file.h"                      EC_HAVE_FLOCK  )
     ecbuild_cache_check_symbol_exists( mmap         "sys/mman.h"                      EC_HAVE_MMAP   )
-    
+
     ecbuild_cache_check_symbol_exists( posix_memalign "stdlib.h"                      EC_HAVE_POSIX_MEMALIGN )
-    
+
     ecbuild_cache_check_symbol_exists( F_GETLK      "fcntl.h"                         EC_HAVE_F_GETLK  )
     ecbuild_cache_check_symbol_exists( F_SETLK      "fcntl.h"                         EC_HAVE_F_SETLK  )
     ecbuild_cache_check_symbol_exists( F_SETLKW     "fcntl.h"                         EC_HAVE_F_SETLKW  )
-     
+
     ecbuild_cache_check_symbol_exists( F_GETLK64     "fcntl.h"                        EC_HAVE_F_GETLK64  )
     ecbuild_cache_check_symbol_exists( F_SETLK64     "fcntl.h"                        EC_HAVE_F_SETLK64  )
     ecbuild_cache_check_symbol_exists( F_SETLKW64    "fcntl.h"                        EC_HAVE_F_SETLKW64  )
-    
+
     ecbuild_cache_check_symbol_exists( MAP_ANONYMOUS "sys/mman.h"                     EC_HAVE_MAP_ANONYMOUS )
     ecbuild_cache_check_symbol_exists( MAP_ANON      "sys/mman.h"                     EC_HAVE_MAP_ANON )
 
@@ -48,7 +48,7 @@ if( ENABLE_OS_FUNCTIONS_TEST )
     ecbuild_cache_check_include_files( sys/types.h    EC_HAVE_SYS_TYPES_H   )
     ecbuild_cache_check_include_files( malloc.h       EC_HAVE_MALLOC_H      )
     ecbuild_cache_check_include_files( sys/malloc.h   EC_HAVE_SYS_MALLOC_H  )
-    
+
     ecbuild_cache_check_include_files( sys/param.h    EC_HAVE_SYS_PARAM_H   )
     ecbuild_cache_check_include_files( sys/mount.h    EC_HAVE_SYS_MOUNT_H   )
     ecbuild_cache_check_include_files( sys/vfs.h      EC_HAVE_SYS_VFS_H     )
@@ -93,7 +93,7 @@ if( ENABLE_OS_FUNCTIONS_TEST )
     ecbuild_cache_check_c_source_compiles( "#include <sys/statvfs.h>\nint main(){ struct statvfs v; }" EC_HAVE_STRUCT_STATVFS )
     # test for struct statvfs64
     ecbuild_cache_check_c_source_compiles( "#define _LARGEFILE64_SOURCE\n#include <sys/statvfs.h>\nint main(){ struct statvfs64 v; }" EC_HAVE_STRUCT_STATVFS64 )
-        
+
     # test for fsync
     ecbuild_cache_check_symbol_exists(fsync "unistd.h" EC_HAVE_FSYNC)
     # test for fdatasync
@@ -106,7 +106,7 @@ if( ENABLE_OS_FUNCTIONS_TEST )
     ecbuild_cache_check_c_source_compiles( "#include <sys/procfs.h>\nint main(){ return 0; }\n" EC_HAVE_SYSPROCFS )
     # test for backtrace
     ecbuild_cache_check_c_source_compiles( "#include <unistd.h>\n#include <execinfo.h>\n int main(){ void ** buffer; int i = backtrace(buffer, 256); }\n" EC_HAVE_EXECINFO_BACKTRACE )
-           
+
     #### reentrant funtions support  #############
 
     # test for gmtime_r
@@ -120,6 +120,53 @@ if( ENABLE_OS_FUNCTIONS_TEST )
     # test for gethostbyname_r
     ecbuild_cache_check_c_source_compiles( "#include <netdb.h>\nint main(){ const char *name; struct hostent *ret; char *buf; struct hostent **result; size_t buflen; int *h_errnop; int i = gethostbyname_r(name,ret,buf,buflen,result,h_errnop); }\n" EC_HAVE_GETHOSTBYNAME_R )
 
+    #### special compiler __atributes__  #############
+
+    # test for __attribute__ ((__constructor__)) -- usually present in GCC, Clang, Intel on Linux, Solaris, MacOSX; not present in AIX XLC
+    ecbuild_cache_check_c_source_compiles( "#include <stdio.h>\nstatic int argc_;static char** argv_;static char** envp_;\nint main(){printf(\"%d\", argc_);}\n__attribute__ ((__constructor__)) static void before_main(int argc, char* argv[], char* envp[]){argc_ = argc;argv_ = argv;envp_ = envp;}\n" EC_HAVE_ATTRIBUTE_CONSTRUCTOR )
+
+    if( NOT DEFINED EC_ATTRIBUTE_CONSTRUCTOR_INITS_ARGV )
+        ecbuild_check_c_source_return("
+            #include <stdio.h>
+            #include <string.h>
+            int main(){return 0;}
+            __attribute__ ((__constructor__))
+            static void before_main(int argc, char* argv[], char* envp[])
+            {
+                printf(\"%d:%d\",argc, strstr(argv[0],\"cmTryCompileExec\")?1:0);
+            }"
+            VAR    EC_ATTRIBUTE_CONSTRUCTOR_INITS_ARGV
+            OUTPUT EC_ATTRIBUTE_CONSTRUCTOR_INITS_OUTPUT )
+
+        if( EC_ATTRIBUTE_CONSTRUCTOR_INITS_ARGV AND NOT EC_ATTRIBUTE_CONSTRUCTOR_INITS_OUTPUT STREQUAL "1:1" )
+          set(EC_ATTRIBUTE_CONSTRUCTOR_INITS_ARGV 0 CACHE INTERNAL "ATTRIBUTE_CONSTRUCTOR doesnt init argv correctly")
+        endif()
+    endif()
+    ecbuild_cache_var( EC_ATTRIBUTE_CONSTRUCTOR_INITS_ARGV )
+
+
+    #### check for some Linux stuff #############
+
+    if( NOT DEFINED EC_HAVE_PROCFS )
+        ecbuild_check_c_source_return("
+            #include <sys/types.h>
+            #include <dirent.h>
+            int main()
+            {
+                DIR* d = opendir(\"/proc\");
+                if(d)
+                    return 0;
+                else
+                    return -1;
+            }"
+            VAR    EC_HAVE_PROCFS
+            OUTPUT EC_HAVE_PROCFS_OUTPUT )
+    endif()
+    ecbuild_cache_var( EC_HAVE_PROCFS )
+
+#    debug_var(EC_HAVE_PROCFS)
+#    debug_var(EC_HAVE_PROCFS_OUTPUT)
+
 endif()
 
 
diff --git a/cmake/ecbuild_check_os.cmake b/cmake/ecbuild_check_os.cmake
index 8373c4a..942fb6b 100644
--- a/cmake/ecbuild_check_os.cmake
+++ b/cmake/ecbuild_check_os.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -181,6 +181,35 @@ if( ENABLE_OS_ENDINESS_TEST )
 endif()
 
 ############################################################################################
+# enable profiling
+
+if( ENABLE_PROFILING )
+
+  if( CMAKE_C_COMPILER_ID MATCHES "GNU" )
+
+    set( _flags "-pg --coverage" )
+
+    set( CMAKE_EXE_LINKER_FLAGS    "${CMAKE_EXE_LINKER_FLAGS} ${_flags}" )
+    set( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${_flags}" )
+    set( CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${_flags}" )
+
+    set( _trust_flags ${ECBUILD_TRUST_FLAGS} )
+    set( ECBUILD_TRUST_FLAGS ON )
+    ecbuild_add_c_flags( "${_flags}" )
+    ecbuild_add_cxx_flags( "${_flags}" )
+    ecbuild_add_fortran_flags( "${_flags}" )
+    set( ECBUILD_TRUST_FLAGS ${_trust_flags} )
+    unset( _trust_flags )
+
+    unset( _flags )
+  
+  else()
+    message( WARNING "Profiling enabled but ecbuild doesn't know how to enable for this particular compiler ${CMAKE_C_COMPILER_ID}")
+  endif()
+
+endif()
+
+############################################################################################
 # check operating system
 
 set( EC_OS_NAME "UNKNOWN" )
@@ -237,78 +266,78 @@ if( UNIX )
 
 		if( CMAKE_COMPILER_IS_GNUCC )
 			if( EC_OS_BITS EQUAL "64" )
-				cmake_add_c_flags("-maix64")
+				ecbuild_add_c_flags("-maix64")
 			endif()
 			if( EC_OS_BITS EQUAL "32" )
-				cmake_add_c_flags("-maix32")
+				ecbuild_add_c_flags("-maix32")
 			endif()
 		endif()
 
 		if( CMAKE_COMPILER_IS_GNUCXX )
 			if( EC_OS_BITS EQUAL "64" )
-				cmake_add_cxx_flags("-maix64")
+				ecbuild_add_cxx_flags("-maix64")
 			endif()
 			if( EC_OS_BITS EQUAL "32" )
-				cmake_add_cxx_flags("-maix32")
+				ecbuild_add_cxx_flags("-maix32")
 			endif()
 		endif()
 
 		if( CMAKE_C_COMPILER_ID MATCHES "XL" )
 
-			cmake_add_c_flags("-qpic=large")
-#            cmake_add_c_flags("-qweaksymbol")
+			ecbuild_add_c_flags("-qpic=large")
+#            ecbuild_add_c_flags("-qweaksymbol")
 
 			if(EC_OS_BITS EQUAL "32" )
-				cmake_add_c_flags("-q32")
+				ecbuild_add_c_flags("-q32")
 			endif()
 
 			if(${CMAKE_BUILD_TYPE} MATCHES "Release" OR ${CMAKE_BUILD_TYPE} MATCHES "Production" )
-					cmake_add_c_flags("-qstrict")
-					cmake_add_c_flags("-qinline")
+					ecbuild_add_c_flags("-qstrict")
+					ecbuild_add_c_flags("-qinline")
 			endif()
 
 			if(${CMAKE_BUILD_TYPE} MATCHES "Debug")
-					cmake_add_c_flags("-qfullpath")
-					cmake_add_c_flags("-qkeepparm")
+					ecbuild_add_c_flags("-qfullpath")
+					ecbuild_add_c_flags("-qkeepparm")
 			endif()
 
 		endif()
 
 		if( CMAKE_CXX_COMPILER_ID MATCHES "XL" )
 
-			cmake_add_cxx_flags("-qpic=large")
-			cmake_add_cxx_flags("-bmaxdata:0x40000000")
-			cmake_add_cxx_flags("-qrtti")
-			cmake_add_cxx_flags("-qfuncsect")
+			ecbuild_add_cxx_flags("-qpic=large")
+			ecbuild_add_cxx_flags("-bmaxdata:0x40000000")
+			ecbuild_add_cxx_flags("-qrtti")
+			ecbuild_add_cxx_flags("-qfuncsect")
 
-#           cmake_add_cxx_flags("-qweaksymbol")
+#           ecbuild_add_cxx_flags("-qweaksymbol")
 
 			if(EC_OS_BITS EQUAL "32" )
-				cmake_add_cxx_flags("-q32")
+				ecbuild_add_cxx_flags("-q32")
 			endif()
 
 			if(${CMAKE_BUILD_TYPE} MATCHES "Release" OR ${CMAKE_BUILD_TYPE} MATCHES "Production" )
-					cmake_add_cxx_flags("-qstrict")
-					cmake_add_cxx_flags("-qinline")
+					ecbuild_add_cxx_flags("-qstrict")
+					ecbuild_add_cxx_flags("-qinline")
 			endif()
 
 			if(${CMAKE_BUILD_TYPE} MATCHES "Debug")
-					cmake_add_cxx_flags("-qfullpath")
-					cmake_add_cxx_flags("-qkeepparm")
+					ecbuild_add_cxx_flags("-qfullpath")
+					ecbuild_add_cxx_flags("-qkeepparm")
 			endif()
 
 		endif()
 
 		if( CMAKE_Fortran_COMPILER_ID MATCHES "XL" )
 
-			cmake_add_fortran_flags("-qxflag=dealloc_cfptr")
-			cmake_add_fortran_flags("-qextname")
-			cmake_add_fortran_flags("-qdpc=e")
-			cmake_add_fortran_flags("-bmaxdata:0x40000000")
-			cmake_add_fortran_flags("-bloadmap:loadmap -bmap:loadmap")
+			ecbuild_add_fortran_flags("-qxflag=dealloc_cfptr")
+			ecbuild_add_fortran_flags("-qextname")
+			ecbuild_add_fortran_flags("-qdpc=e")
+			ecbuild_add_fortran_flags("-bmaxdata:0x40000000")
+			ecbuild_add_fortran_flags("-bloadmap:loadmap -bmap:loadmap")
 
 			if(EC_OS_BITS EQUAL "32" )
-				cmake_add_fortran_flags("-q32")
+				ecbuild_add_fortran_flags("-q32")
 			endif()
 		endif()
 
@@ -338,5 +367,3 @@ if( ${EC_OS_NAME} MATCHES "UNKNOWN" )
 	endif()
 
 endif()
-
-
diff --git a/cmake/ecbuild_config.h.in b/cmake/ecbuild_config.h.in
index 8e68a8e..2a01618 100644
--- a/cmake/ecbuild_config.h.in
+++ b/cmake/ecbuild_config.h.in
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 1996-2014 ECMWF.
+ * (C) Copyright 1996-2015 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.
@@ -11,6 +11,15 @@
 #ifndef @PROJECT_NAME at _ecbuild_config_h
 #define @PROJECT_NAME at _ecbuild_config_h
 
+/* ecbuild info */
+
+#ifndef ECBUILD_VERSION_STR
+#define ECBUILD_VERSION_STR "@ECBUILD_VERSION_STR@"
+#endif
+#ifndef ECBUILD_MACROS_DIR
+#define ECBUILD_MACROS_DIR  "@ECBUILD_MACROS_DIR@"
+#endif
+
 /* cpu arch info */
 
 #cmakedefine EC_BIG_ENDIAN       @EC_BIG_ENDIAN@
@@ -112,6 +121,12 @@
 #cmakedefine EC_HAVE_READDIR_R
 #cmakedefine EC_HAVE_GETHOSTBYNAME_R
 
+/* --- compiler __attribute__ support --- */
+
+#cmakedefine EC_HAVE_ATTRIBUTE_CONSTRUCTOR
+#cmakedefine EC_ATTRIBUTE_CONSTRUCTOR_INITS_ARGV
+#cmakedefine EC_HAVE_PROCFS
+
 /* --- c compiler support --- */
 
 #cmakedefine EC_HAVE_C_INLINE
@@ -149,6 +164,16 @@
 #define @PNAME at _CXX_COMPILER     "@CMAKE_CXX_COMPILER@"
 #define @PNAME at _CXX_FLAGS        "@EC_CXX_FLAGS@"
 
+/* Needed for finding per package config files */
+
+#define @PNAME at _INSTALL_DIR       "@CMAKE_INSTALL_PREFIX@"
+#define @PNAME at _INSTALL_BIN_DIR   "@CMAKE_INSTALL_PREFIX@/@INSTALL_BIN_DIR@"
+#define @PNAME at _INSTALL_LIB_DIR   "@CMAKE_INSTALL_PREFIX@/@INSTALL_LIB_DIR@"
+#define @PNAME at _INSTALL_DATA_DIR  "@CMAKE_INSTALL_PREFIX@/@INSTALL_DATA_DIR@"
+
+#define @PNAME at _DEVELOPER_SRC_DIR "@CMAKE_SOURCE_DIR@"
+#define @PNAME at _DEVELOPER_BIN_DIR "@CMAKE_BINARY_DIR@"
+
 #cmakedefine EC_HAVE_FORTRAN
 
 #ifdef EC_HAVE_FORTRAN
diff --git a/cmake/ecbuild_debug_var.cmake b/cmake/ecbuild_debug_var.cmake
index 63a5104..9bb3499 100644
--- a/cmake/ecbuild_debug_var.cmake
+++ b/cmake/ecbuild_debug_var.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
@@ -25,6 +25,18 @@ macro( debug_var VAR )
 endmacro( debug_var )
 
 ##############################################################################
+# macro for debugging a cmake list
+
+macro( debug_list VAR )
+
+    message( STATUS "${VAR}:" )
+    foreach( _elem ${${VAR}} )
+      message( STATUS "  ${_elem}" )
+    endforeach()
+
+endmacro( debug_list )
+
+##############################################################################
 # macro for debugging a environment variable within cmake
 
 macro( debug_env_var VAR )
diff --git a/cmake/ecbuild_declare_project.cmake b/cmake/ecbuild_declare_project.cmake
index 57dd1b0..11052c6 100644
--- a/cmake/ecbuild_declare_project.cmake
+++ b/cmake/ecbuild_declare_project.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -6,146 +6,188 @@
 # granted to it by virtue of its status as an intergovernmental organisation nor
 # does it submit to any jurisdiction.
 
-# macro to initialize a project
+##############################################################################
+#.rst:
+#
+# ecbuild_declare_project
+# =======================
+#
+# Initialise an ecBuild project. A CMake project must have previously been
+# declared with ``project( <name> ... )``. ::
+#
+#   ecbuild_declare_project()
+#
+# Sets the following CMake variables
+# (where ``PNAME`` is the capitalised project name):
+#
+# :<PNAME>_GIT_SHA1:       Git revision (if project is a Git repo)
+# :<PNAME>_GIT_SHA1_SHORT: short Git revision (if project is a Git repo)
+# :<PNAME>_VERSION:        version in format ``MAJOR.MINOR.PATCH``
+# :<PNAME>_VERSION_STR:    version as given in ``VERSION.cmake`` or 0.0.0
+# :<PNAME>_MAJOR_VERSION:  major version number
+# :<PNAME>_MINOR_VERSION:  minor version number
+# :<PNAME>_PATCH_VERSION:  patch version number
+# :INSTALL_BIN_DIR:        relative install directory for executables
+#                          (default: ``bin``)
+# :INSTALL_LIB_DIR:        relative install directory for libraries
+#                          (default: ``lib``)
+# :INSTALL_INCLUDE_DIR:    relative install directory for include files
+#                          (default: ``include``)
+# :INSTALL_DATA_DIR:       relative install directory for data
+#                          (default: ``share/<project_name>``)
+# :INSTALL_CMAKE_DIR:      relative install directory for CMake files
+#                          (default: ``share/<project_name>/cmake``)
+#
+# The relative installation directories of components can be customised by
+# setting the following CMake variables on the command line or in cache:
+#
+# :<PNAME>_INSTALL_BIN_DIR:     directory for installing executables
+# :<PNAME>_INSTALL_LIB_DIR:     directory for installing libraries
+# :<PNAME>_INSTALL_INCLUDE_DIR: directory for installing include files
+# :<PNAME>_INSTALL_DATA_DIR:    directory for installing data
+# :<PNAME>_INSTALL_CMAKE_DIR:   directory for installing CMake files
+#
+# Using *relative* paths is recommended, which are interpreted relative to the
+# ``CMAKE_INSTALL_PREFIX``. Using absolute paths makes the build
+# non-relocatable and may break the generation of relocatable binary packages.
+#
+##############################################################################
 
 macro( ecbuild_declare_project )
 
-	string( TOUPPER ${PROJECT_NAME} PNAME )
+  string( TOUPPER ${PROJECT_NAME} PNAME )
 
-	# reset the lists of targets (executables, libs, tests & resources)
+  # reset the lists of targets (executables, libs, tests & resources)
 
-	set( ${PROJECT_NAME}_ALL_EXES "" CACHE INTERNAL "" )
-	set( ${PROJECT_NAME}_ALL_LIBS "" CACHE INTERNAL "" )
+  set( ${PROJECT_NAME}_ALL_EXES "" CACHE INTERNAL "" )
+  set( ${PROJECT_NAME}_ALL_LIBS "" CACHE INTERNAL "" )
 
-	# if git project get its HEAD SHA1
-	# leave it here so we may use ${PNAME}_GIT_SHA1 on the version file
+  # if git project get its HEAD SHA1
+  # leave it here so we may use ${PNAME}_GIT_SHA1 on the version file
 
-	if( EXISTS ${PROJECT_SOURCE_DIR}/.git )
-		get_git_head_revision( GIT_REFSPEC ${PNAME}_GIT_SHA1 )
-		if( ${PNAME}_GIT_SHA1 )
-		  string( SUBSTRING "${${PNAME}_GIT_SHA1}" 0 7 ${PNAME}_GIT_SHA1_SHORT )
-#		  debug_var( ${PNAME}_GIT_SHA1 )
-#		  debug_var( ${PNAME}_GIT_SHA1_SHORT )
-        else()
-          message( STATUS "Could not get git-sha1 for project ${PNAME}")
-        endif()
-	endif()
+  if( EXISTS ${PROJECT_SOURCE_DIR}/.git )
+    get_git_head_revision( GIT_REFSPEC ${PNAME}_GIT_SHA1 )
+    if( ${PNAME}_GIT_SHA1 )
+      string( SUBSTRING "${${PNAME}_GIT_SHA1}" 0 7 ${PNAME}_GIT_SHA1_SHORT )
+      #     debug_var( ${PNAME}_GIT_SHA1 )
+      #     debug_var( ${PNAME}_GIT_SHA1_SHORT )
+    else()
+      message( STATUS "Could not get git-sha1 for project ${PNAME}")
+    endif()
+  endif()
 
-	# read and parse project version file
-	if( EXISTS ${PROJECT_SOURCE_DIR}/VERSION.cmake )
-		include( ${PROJECT_SOURCE_DIR}/VERSION.cmake )
-	else()
-		set( ${PROJECT_NAME}_VERSION_STR "0.0.0" )
-	endif()
+  # read and parse project version file
+  if( EXISTS ${PROJECT_SOURCE_DIR}/VERSION.cmake )
+    include( ${PROJECT_SOURCE_DIR}/VERSION.cmake )
+  else()
+    set( ${PROJECT_NAME}_VERSION_STR "0.0.0" )
+  endif()
 
-	string( REPLACE "." " " _version_list ${${PROJECT_NAME}_VERSION_STR} ) # dots to spaces
+  string( REPLACE "." " " _version_list ${${PROJECT_NAME}_VERSION_STR} ) # dots to spaces
 
-	separate_arguments( _version_list )
+  separate_arguments( _version_list )
 
-	list( GET _version_list 0 ${PNAME}_MAJOR_VERSION )
-	list( GET _version_list 1 ${PNAME}_MINOR_VERSION )
-	list( GET _version_list 2 ${PNAME}_PATCH_VERSION )
+  list( GET _version_list 0 ${PNAME}_MAJOR_VERSION )
+  list( GET _version_list 1 ${PNAME}_MINOR_VERSION )
+  list( GET _version_list 2 ${PNAME}_PATCH_VERSION )
 
-	# cleanup patch version of any extra qualifiers ( -dev -rc1 ... )
+  # cleanup patch version of any extra qualifiers ( -dev -rc1 ... )
 
-	string( REGEX REPLACE "^([0-9]+).*" "\\1" ${PNAME}_PATCH_VERSION "${${PNAME}_PATCH_VERSION}" )
+  string( REGEX REPLACE "^([0-9]+).*" "\\1" ${PNAME}_PATCH_VERSION "${${PNAME}_PATCH_VERSION}" )
 
-	set( ${PNAME}_VERSION "${${PNAME}_MAJOR_VERSION}.${${PNAME}_MINOR_VERSION}.${${PNAME}_PATCH_VERSION}" CACHE INTERNAL "package ${PNAME} version" )
+  set( ${PNAME}_VERSION "${${PNAME}_MAJOR_VERSION}.${${PNAME}_MINOR_VERSION}.${${PNAME}_PATCH_VERSION}"
+       CACHE INTERNAL "package ${PNAME} version" )
 
-	set( ${PNAME}_VERSION_STR "${${PROJECT_NAME}_VERSION_STR}" CACHE INTERNAL "package ${PNAME} version string" ) # ignore caps
+  set( ${PNAME}_VERSION_STR "${${PROJECT_NAME}_VERSION_STR}"
+       CACHE INTERNAL "package ${PNAME} version string" ) # ignore caps
 
-#    debug_var( ${PNAME}_VERSION )
-#    debug_var( ${PNAME}_VERSION_STR )
-#    debug_var( ${PNAME}_MAJOR_VERSION )
-#    debug_var( ${PNAME}_MINOR_VERSION )
-#    debug_var( ${PNAME}_PATCH_VERSION )
+  #    debug_var( ${PNAME}_VERSION )
+  #    debug_var( ${PNAME}_VERSION_STR )
+  #    debug_var( ${PNAME}_MAJOR_VERSION )
+  #    debug_var( ${PNAME}_MINOR_VERSION )
+  #    debug_var( ${PNAME}_PATCH_VERSION )
 
-	# install dirs for this project
+  # install dirs for this project
 
-	if( NOT DEFINED INSTALL_BIN_DIR )
-		set( INSTALL_BIN_DIR bin CACHE PATH "Installation directory for executables")
-	endif()
+  set( INSTALL_BIN_DIR bin )
+  set( INSTALL_LIB_DIR lib )
+  set( INSTALL_INCLUDE_DIR include )
+  set( INSTALL_DATA_DIR share/${PROJECT_NAME} )
+  set( INSTALL_CMAKE_DIR share/${PROJECT_NAME}/cmake )
 
-	if( NOT DEFINED INSTALL_LIB_DIR )
-		set( INSTALL_LIB_DIR lib CACHE PATH "Installation directory for libraries")
-	endif()
+  mark_as_advanced( INSTALL_BIN_DIR )
+  mark_as_advanced( INSTALL_LIB_DIR )
+  mark_as_advanced( INSTALL_INCLUDE_DIR )
+  mark_as_advanced( INSTALL_DATA_DIR )
+  mark_as_advanced( INSTALL_CMAKE_DIR )
 
-	if( NOT DEFINED INSTALL_INCLUDE_DIR )
-		set( INSTALL_INCLUDE_DIR include CACHE PATH "Installation directory for header files")
-	endif()
+  # overrides of install dirs
 
-	if( NOT DEFINED INSTALL_DATA_DIR )
-		set( INSTALL_DATA_DIR share/${PROJECT_NAME} CACHE PATH "Installation directory for data files")
-	endif()
+  foreach( p LIB BIN INCLUDE DATA CMAKE )
+    if( ${PNAME}_INSTALL_${p}_DIR )
+      set( INSTALL_${p}_DIR ${${PNAME}_INSTALL_${p}_DIR} )
+    endif()
+  endforeach()
 
-	if( NOT DEFINED INSTALL_CMAKE_DIR )
-		set( INSTALL_CMAKE_DIR share/${PROJECT_NAME}/cmake CACHE PATH "Installation directory for CMake files")
-	endif()
+  # warnings for non-relocatable projects
 
-		mark_as_advanced( INSTALL_BIN_DIR )
-		mark_as_advanced( INSTALL_LIB_DIR )
-		mark_as_advanced( INSTALL_INCLUDE_DIR )
-		mark_as_advanced( INSTALL_DATA_DIR )
-		mark_as_advanced( INSTALL_CMAKE_DIR )
+  foreach( p LIB BIN INCLUDE DATA CMAKE )
+    if( IS_ABSOLUTE ${INSTALL_${p}_DIR} )
+      message( WARNING "Defining INSTALL_${p}_DIR as absolute path '${INSTALL_${p}_DIR}' makes this build non-relocatable, possibly breaking the installation of RPMS and DEB packages" )
+    endif()
+  endforeach()
 
-	# warnings for non-relocatable projects
+  # make relative paths absolute ( needed later on ) and cache them ...
+  foreach( p LIB BIN INCLUDE DATA CMAKE )
 
-	foreach( p LIB BIN INCLUDE DATA CMAKE )
-		if( IS_ABSOLUTE ${INSTALL_${p}_DIR} )
-			message( WARNING "Defining INSTALL_${p}_DIR as absolute path '${INSTALL_${p}_DIR}' makes this build non-relocatable, possibly breaking the installation of RPMS and DEB packages" )
-		endif()
-	endforeach()
+    set( var INSTALL_${p}_DIR )
 
-	# make relative paths absolute ( needed later on ) and cache them ...
-	foreach( p LIB BIN INCLUDE DATA CMAKE )
+    if( NOT IS_ABSOLUTE "${${var}}" )
+      set( ${PNAME}_FULL_INSTALL_${p}_DIR "${CMAKE_INSTALL_PREFIX}/${${var}}"
+           CACHE INTERNAL "${PNAME} ${p} full install path" )
+    else()
+      message( WARNING "Setting an absolute path for ${VAR} in project ${PNAME}, breakes generation of relocatable binary packages (rpm,deb,...)" )
+      set( ${PNAME}_FULL_INSTALL_${p}_DIR "${${var}}"
+           CACHE INTERNAL "${PNAME} ${p} full install path" )
+    endif()
 
-		set( var INSTALL_${p}_DIR )
+    #        debug_var( ${PNAME}_FULL_INSTALL_${p}_DIR )
 
-		if( NOT IS_ABSOLUTE "${${var}}" )
-			set( ${PNAME}_FULL_INSTALL_${p}_DIR "${CMAKE_INSTALL_PREFIX}/${${var}}" CACHE INTERNAL "${PNAME} ${p} full install path" )
-		else()
-			message( WARNING "Setting an absolute path for ${VAR} in project ${PNAME}, breakes generation of relocatable binary packages (rpm,deb,...)" )
-			set( ${PNAME}_FULL_INSTALL_${p}_DIR "${${var}}" CACHE INTERNAL "${PNAME} ${p} full install path" )
-		endif()
+  endforeach()
 
-#        debug_var( ${PNAME}_FULL_INSTALL_${p}_DIR )
+  # correctly set CMAKE_INSTALL_RPATH
 
-	endforeach()
+  if( ENABLE_RPATHS )
 
-	# correctly set CMAKE_INSTALL_RPATH
+    if( ENABLE_RELATIVE_RPATHS )
 
-	if( ENABLE_RPATHS )
+      file( RELATIVE_PATH relative_rpath ${${PNAME}_FULL_INSTALL_BIN_DIR} ${${PNAME}_FULL_INSTALL_LIB_DIR} )
+      # debug_var( relative_rpath )
 
-		if( ENABLE_RELATIVE_RPATHS )
+      ecbuild_append_to_rpath( ${relative_rpath} )
 
-			file( RELATIVE_PATH relative_rpath ${${PNAME}_FULL_INSTALL_BIN_DIR} ${${PNAME}_FULL_INSTALL_LIB_DIR} )
-			# debug_var( relative_rpath )
+    else() # make rpaths absolute
 
-			ecbuild_append_to_rpath( ${relative_rpath} )
+      if( IS_ABSOLUTE ${INSTALL_LIB_DIR} )
+        ecbuild_append_to_rpath( "${INSTALL_LIB_DIR}" )
+      else()
+        ecbuild_append_to_rpath( "${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB_DIR}" ) 
+      endif()
 
-		else() # make rpaths absolute
+    endif()
 
-		    if( IS_ABSOLUTE ${INSTALL_LIB_DIR} )
-		        ecbuild_append_to_rpath( "${INSTALL_LIB_DIR}" )
-		    else()
-		        ecbuild_append_to_rpath( "${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB_DIR}" ) 
-		    endif()
+  endif()
 
-		endif()
-    
-	endif()
+  # debug_var( CMAKE_INSTALL_RPATH )
 
-	# debug_var( CMAKE_INSTALL_RPATH )
+  # print project header
 
-	# print project header
+  message( STATUS "---------------------------------------------------------" )
 
-	message( STATUS "---------------------------------------------------------" )
-
-	if( ${PNAME}_GIT_SHA1_SHORT )
-		message( STATUS "[${PROJECT_NAME}] (${${PNAME}_VERSION_STR}) [${${PNAME}_GIT_SHA1_SHORT}]" )
-	else()
-		message( STATUS "[${PROJECT_NAME}] (${${PNAME}_VERSION_STR})" )
-	endif()
+  if( ${PNAME}_GIT_SHA1_SHORT )
+    message( STATUS "[${PROJECT_NAME}] (${${PNAME}_VERSION_STR}) [${${PNAME}_GIT_SHA1_SHORT}]" )
+  else()
+    message( STATUS "[${PROJECT_NAME}] (${${PNAME}_VERSION_STR})" )
+  endif()
 
 endmacro( ecbuild_declare_project )
-
diff --git a/cmake/ecbuild_define_build_types.cmake b/cmake/ecbuild_define_build_types.cmake
index 9ec2ef0..53e4de0 100644
--- a/cmake/ecbuild_define_build_types.cmake
+++ b/cmake/ecbuild_define_build_types.cmake
@@ -1,8 +1,8 @@
-# (C) Copyright 1996-2014 ECMWF.
-# 
+# (C) Copyright 1996-2015 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 
+# 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.
 
@@ -35,8 +35,8 @@ mark_as_advanced(
     CMAKE_CXX_FLAGS_PRODUCTION
     CMAKE_C_FLAGS_PRODUCTION
     CMAKE_EXE_LINKER_FLAGS_PRODUCTION
-	CMAKE_SHARED_LINKER_FLAGS_PRODUCTION
-	CMAKE_MODULE_LINKER_FLAGS_PRODUCTION )
+	  CMAKE_SHARED_LINKER_FLAGS_PRODUCTION
+	  CMAKE_MODULE_LINKER_FLAGS_PRODUCTION )
 
 ############################################################################################
 # fixes for specific compilers
@@ -99,12 +99,39 @@ endif()
 
 # fail if build type is not one of the defined ones
 if( NOT CMAKE_BUILD_TYPE MATCHES "None"  AND
-	NOT CMAKE_BUILD_TYPE MATCHES "Debug" AND
-	NOT CMAKE_BUILD_TYPE MATCHES "Bit" AND
-	NOT CMAKE_BUILD_TYPE MATCHES "Production" AND
+	  NOT CMAKE_BUILD_TYPE MATCHES "Debug" AND
+	  NOT CMAKE_BUILD_TYPE MATCHES "Bit" AND
+	  NOT CMAKE_BUILD_TYPE MATCHES "Production" AND
     NOT CMAKE_BUILD_TYPE MATCHES "Release"  AND
     NOT CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo" )
     message( FATAL_ERROR "CMAKE_BUILD_TYPE is not recognized. ${_BUILD_TYPE_MSG}" )
 endif()
 
+############################################################################################
+# overrides of the flags per build type
+
+foreach( _btype NONE DEBUG BIT PRODUCTION RELEASE RELWITHDEBINFO )
+
+  # OVERRIDE Compiler FLAGS per language (we override because CMake forcely defines them)
+  foreach( _lang C CXX Fortran )
+    if( ECBUILD_${_lang}_FLAGS_${_btype} )
+      set( CMAKE_${_lang}_FLAGS_${_btype} ${ECBUILD_${_lang}_FLAGS_${_btype}} )
+    endif()
+  endforeach()
+
+  # OVERRIDE Linker FLAGS per object type (we override because CMake forcely defines them)
+  foreach( _obj EXE SHARED MODULE )
+    if( ECBUILD_${_obj}_LINKER_FLAGS_${_btype} )
+      set( CMAKE_${_obj}_LINKER_FLAGS_${_btype} ${ECBUILD_${_obj}_LINKER_FLAGS_${_btype}} )
+    endif()
+  endforeach()
+
+endforeach()
+
+# APPEND Linker FLAGS per language (we append because CMake typically leaves them empty)
 
+foreach( _lang C CXX Fortran )
+  if( ECBUILD_${_lang}_LINK_FLAGS )
+    set( CMAKE_${_lang}_LINK_FLAGS "${CMAKE_${_lang}_LINK_FLAGS} ${ECBUILD_${_lang}_LINK_FLAGS}" )
+  endif()
+endforeach()
\ No newline at end of file
diff --git a/cmake/ecbuild_define_options.cmake b/cmake/ecbuild_define_options.cmake
index a79fcf3..f7a2321 100644
--- a/cmake/ecbuild_define_options.cmake
+++ b/cmake/ecbuild_define_options.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
@@ -16,6 +16,8 @@ option( ENABLE_WARNINGS         "enable compiler warnings"
 
 option( ENABLE_LARGE_FILE_SUPPORT "build with large file support"   ON  )
 
+option( ENABLE_PROFILING        "build with profiling support" OFF )
+
 mark_as_advanced( ENABLE_LARGE_FILE_SUPPORT )
 
 option( ENABLE_OS_TESTS          "Run all OS tests" ON )
@@ -26,7 +28,7 @@ option( ENABLE_FORTRAN_C_INTERFACE "Enable Fortran/C Interface" OFF )
 mark_as_advanced( ENABLE_FORTRAN_C_INTERFACE )
 
 option( DEVELOPER_MODE           "activates developer mode"               OFF )
-option( CHECK_UNUSED_FILES       "check for unused project files"         ON )
+option( CHECK_UNUSED_FILES       "check for unused project files (slow)"  OFF )
 
 mark_as_advanced( DEVELOPER_MODE  )
 mark_as_advanced( CHECK_UNUSED_FILES  )
@@ -38,3 +40,9 @@ cmake_dependent_option( ENABLE_OS_ENDINESS_TEST  "Run OS endiness tests"       O
 cmake_dependent_option( ENABLE_OS_FUNCTIONS_TEST "Run OS functions tests"      ON "ENABLE_OS_TESTS" OFF)
 
 mark_as_advanced( ENABLE_OS_TYPES_TEST ENABLE_OS_ENDINESS_TEST ENABLE_OS_FUNCTIONS_TEST  )
+
+option( ECBUILD_USE_INCLUDE_DIRECTORIES "Forces to use global include_directories() instead of target specific. Adverse effect on PkgConfig generation." OFF )
+
+mark_as_advanced( ECBUILD_USE_INCLUDE_DIRECTORIES )
+
+set( CMAKE_NO_SYSTEM_FROM_IMPORTED ON )
diff --git a/cmake/ecbuild_define_paths.cmake b/cmake/ecbuild_define_paths.cmake
index 57a3f1a..822bf71 100644
--- a/cmake/ecbuild_define_paths.cmake
+++ b/cmake/ecbuild_define_paths.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2012 ECMWF.
+# (C) Copyright 1996-2015 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. 
diff --git a/cmake/ecbuild_define_uninstall.cmake b/cmake/ecbuild_define_uninstall.cmake
new file mode 100644
index 0000000..cc6efa9
--- /dev/null
+++ b/cmake/ecbuild_define_uninstall.cmake
@@ -0,0 +1,7 @@
+### adds uninstall target ###############
+
+configure_file(
+  "${CMAKE_CURRENT_LIST_DIR}/ecbuild_uninstall.cmake.in"
+  "${CMAKE_CURRENT_BINARY_DIR}/ecbuild_uninstall.cmake" IMMEDIATE @ONLY)
+
+add_custom_target( uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/ecbuild_uninstall.cmake")
diff --git a/cmake/ecbuild_dont_pack.cmake b/cmake/ecbuild_dont_pack.cmake
new file mode 100644
index 0000000..099ee1d
--- /dev/null
+++ b/cmake/ecbuild_dont_pack.cmake
@@ -0,0 +1,82 @@
+# (C) Copyright 1996-2015 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.
+
+##############################################################################
+#.rst:
+#
+# ecbuild_dont_pack
+# =================
+#
+# Specify files and directories to exclude from packaging. ::
+#
+#   ecbuild_dont_pack( [ FILES <file1> [ <file2> ... ] ]
+#                      [ DIRS <dir1> [ <dir2> ... ] ]
+#                      [ REGEX <regex> ] )
+#
+# Options
+# -------
+#
+# FILES : optional, one of FILES, DIRS, REGEX required
+#   list of files to exclude from packaging
+#
+# DIRS : optional, one of FILES, DIRS, REGEX required
+#   list of directories to exclude from packaging
+#
+# REGEX : optional, one of FILES, DIRS, REGEX required
+#   regular expression to match files / directories to exclude from packaging
+#
+##############################################################################
+
+macro( ecbuild_dont_pack )
+
+    set( options )
+    set( single_value_args REGEX )
+    set( multi_value_args  FILES DIRS )
+
+    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_PAR_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_dont_pack(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    if( NOT DEFINED _PAR_REGEX AND NOT  DEFINED _PAR_FILES AND NOT  DEFINED _PAR_DIRS )
+      message(FATAL_ERROR "Call to ecbuild_dont_pack does not speficify any list to avoid packing.")
+    endif()
+
+    set( LOCAL_FILES_NOT_TO_PACK "" )
+
+    # all recursive files are not to pack
+    if( DEFINED _PAR_REGEX )
+        file( GLOB_RECURSE all_files_in_subdirs RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${_PAR_REGEX} )
+        list( APPEND LOCAL_FILES_NOT_TO_PACK ${all_files_in_subdirs} )
+    endif()
+
+    # selected dirs not to pack
+    if( DEFINED _PAR_DIRS )
+        foreach( dir ${_PAR_DIRS} )
+            list( APPEND LOCAL_FILES_NOT_TO_PACK ${dir}/ )
+        endforeach()
+    endif()
+
+    # selected files not to pack
+    if( DEFINED _PAR_FILES )
+        list( APPEND LOCAL_FILES_NOT_TO_PACK ${_PAR_FILES} )
+    endif()
+
+    # transform the local files  to full absolute paths
+    # and place them in the global list of files not to pack
+    foreach( file ${LOCAL_FILES_NOT_TO_PACK} )
+        list( APPEND ECBUILD_DONT_PACK_FILES ${CMAKE_CURRENT_SOURCE_DIR}/${file} )
+    endforeach()
+
+    # save cache if we added any files not to pack
+    if( LOCAL_FILES_NOT_TO_PACK )
+        set( ECBUILD_DONT_PACK_FILES ${ECBUILD_DONT_PACK_FILES} CACHE INTERNAL "" )
+    endif()
+
+endmacro()
diff --git a/cmake/ecbuild_download_resource.cmake b/cmake/ecbuild_download_resource.cmake
new file mode 100644
index 0000000..d313704
--- /dev/null
+++ b/cmake/ecbuild_download_resource.cmake
@@ -0,0 +1,47 @@
+# (C) Copyright 1996-2015 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.
+
+##############################################################################
+#.rst:
+#
+# ecbuild_download_resource
+# =========================
+#
+# Download a file from a given URL and save to FILE at configure time. ::
+#
+#   ecbuild_download_resource( FILE URL )
+#
+# curl or wget is required (curl is preferred if available).
+#
+##############################################################################
+
+function( ecbuild_download_resource _p_OUT _p_URL )
+
+  if( NOT EXISTS ${_p_OUT} )
+
+    find_program( CURL_PROGRAM curl )
+    if( CURL_PROGRAM )
+      execute_process( COMMAND ${CURL_PROGRAM} --silent --show-error --fail --output ${_p_OUT} ${_p_URL}
+                       WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} RESULT_VARIABLE CMD_RESULT )
+    else()
+      find_program( WGET_PROGRAM wget )
+      if( WGET_PROGRAM )
+        execute_process( COMMAND ${WGET_PROGRAM} -nv -O ${_p_OUT} ${_p_URL}
+                         WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} RESULT_VARIABLE CMD_RESULT )
+      else()
+        message(FATAL_ERROR "Could not find curl or wget. Error downloading ${_p_URL}")
+      endif()
+    endif()
+
+    if(CMD_RESULT)
+      message(FATAL_ERROR "Error downloading ${_p_URL}")
+    endif()
+
+  endif()
+
+endfunction()
diff --git a/cmake/ecbuild_echo_targets.cmake b/cmake/ecbuild_echo_targets.cmake
index 015192b..ddaa2e4 100644
--- a/cmake/ecbuild_echo_targets.cmake
+++ b/cmake/ecbuild_echo_targets.cmake
@@ -1,14 +1,25 @@
+# (C) Copyright 1996-2015 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.
+
+##############################################################################
+#.rst:
+#
+# ecbuild_echo_target_property
+# ============================
+#
+# Output a given property of a given target. ::
 #
-# FUNCTION ecbuild_echo_targets ( <list-of-targets> )
+#   ecbuild_echo_target_property( <target> <property> )
 #
-#   Writes all possible target properties of the specified list-of-targets.
-#   This is very useful for debugging
-# 
+##############################################################################
 
+function(ecbuild_echo_target_property tgt prop)
 
-function(echo_target_property tgt prop)
- 
   cmake_policy(PUSH)
 
   if( POLICY CMP0026 )
@@ -19,7 +30,7 @@ function(echo_target_property tgt prop)
   get_property(v TARGET ${tgt} PROPERTY ${prop})
   get_property(d TARGET ${tgt} PROPERTY ${prop} DEFINED)
   get_property(s TARGET ${tgt} PROPERTY ${prop} SET)
- 
+
   # only produce output for values that are set
   #if(s)
     message("tgt='${tgt}' prop='${prop}'")
@@ -32,13 +43,25 @@ function(echo_target_property tgt prop)
   cmake_policy(POP)
 
 endfunction()
- 
-function(echo_target tgt)
+
+##############################################################################
+#.rst:
+#
+# ecbuild_echo_target
+# ===================
+#
+# Output all possible target properties of a given target. ::
+#
+#   ecbuild_echo_target( <target> )
+#
+##############################################################################
+
+function(ecbuild_echo_target tgt)
   if(NOT TARGET ${tgt})
     message("There is no target named '${tgt}'")
     return()
   endif()
- 
+
   set(props
 DEBUG_OUTPUT_NAME
 DEBUG_POSTFIX
@@ -181,18 +204,30 @@ VS_WINRT_REFERENCES
 WIN32_EXECUTABLE
 XCODE_ATTRIBUTE_WHATEVER
 )
- 
+
   message("======================== ${tgt} ========================")
   foreach(p ${props})
-    echo_target_property("${t}" "${p}")
+    ecbuild_echo_target_property("${t}" "${p}")
   endforeach()
   message("")
 endfunction()
- 
- 
+
+##############################################################################
+#.rst:
+#
+# ecbuild_echo_targets
+# ====================
+#
+# Output all possible target properties of the specified list-of-targets.
+# This is very useful for debugging. ::
+#
+#   ecbuild_echo_targets( <list-of-targets> )
+#
+##############################################################################
+
 function(ecbuild_echo_targets)
   set(tgts ${ARGV})
   foreach(t ${tgts})
-    echo_target("${t}")
+    ecbuild_echo_target("${t}")
   endforeach()
-endfunction()
\ No newline at end of file
+endfunction()
diff --git a/cmake/ecbuild_enable_fortran.cmake b/cmake/ecbuild_enable_fortran.cmake
index dfb28d4..16512e8 100644
--- a/cmake/ecbuild_enable_fortran.cmake
+++ b/cmake/ecbuild_enable_fortran.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -7,50 +7,68 @@
 # does it submit to any jurisdiction.
 
 ##############################################################################
-
-# macro for enabling the fortan language
+#.rst:
+#
+# ecbuild_enable_fortran
+# ======================
+#
+# Enable the Fortran language. ::
+#
+#   ecbuild_enable_fortran( [ MODULE_DIRECTORY <directory> ] [ REQUIRED ] )
+#
+# Options
+# -------
+#
+# MODULE_DIRECTORY : optional, defaults to ``${CMAKE_BINARY_DIR}/module``
+#   set the CMAKE_Fortran_MODULE_DIRECTORY
+#
+# REQUIRED : optional
+#   fail if no working Fortran compiler was detected
+#
+##############################################################################
 
 macro( ecbuild_enable_fortran )
 
-    set( options REQUIRED  )
-    set( single_value_args MODULE_DIRECTORY )
-    set( multi_value_args  )
+  set( options REQUIRED  )
+  set( single_value_args MODULE_DIRECTORY )
+  set( multi_value_args  )
 
-    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+  cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
 
-    if(_PAR_UNPARSED_ARGUMENTS)
-      message(FATAL_ERROR "Unknown keywords given to ecbuild_enable_fortran(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
-    endif()
+  if(_PAR_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "Unknown keywords given to ecbuild_enable_fortran(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+  endif()
 
-    enable_language( Fortran )
+  enable_language( Fortran )
 
-    if( DEFINED _PAR_REQUIRED )
-      if( CMAKE_Fortran_COMPILER_FORCED )
-        set( CMAKE_Fortran_COMPILER_WORKS 1 )
-      endif()
-      if( NOT CMAKE_Fortran_COMPILER OR NOT CMAKE_Fortran_COMPILER_WORKS )
-          message( FATAL_ERROR "Fortran compiler required by project ${PROJECT_NAME} but does not seem to work" )
-      endif()
+  if( DEFINED _PAR_REQUIRED )
+    if( CMAKE_Fortran_COMPILER_FORCED )
+      set( CMAKE_Fortran_COMPILER_WORKS 1 )
     endif()
-
-    if( CMAKE_Fortran_COMPILER_LOADED )
-        include(CheckFortranFunctionExists)
-		if( CMAKE_C_COMPILER_LOADED AND ENABLE_FORTRAN_C_INTERFACE )
-			include(FortranCInterface)
-		endif()
-		set( EC_HAVE_FORTRAN 1 )
+    if( NOT CMAKE_Fortran_COMPILER OR NOT CMAKE_Fortran_COMPILER_WORKS )
+      message( FATAL_ERROR "Fortran compiler required by project ${PROJECT_NAME} but does not seem to work" )
     endif()
+  endif()
 
-    if( DEFINED _PAR_MODULE_DIRECTORY )
-        set( CMAKE_Fortran_MODULE_DIRECTORY  ${_PAR_MODULE_DIRECTORY} )
-    else()
-        set( CMAKE_Fortran_MODULE_DIRECTORY  ${CMAKE_BINARY_DIR}/module CACHE PATH "directory for all fortran modules." )
+  if( CMAKE_Fortran_COMPILER_LOADED )
+    include(CheckFortranFunctionExists)
+    if( CMAKE_C_COMPILER_LOADED AND ENABLE_FORTRAN_C_INTERFACE )
+      include(FortranCInterface)
     endif()
+    set( EC_HAVE_FORTRAN 1 )
+  endif()
+
+  if( DEFINED _PAR_MODULE_DIRECTORY )
+    set( CMAKE_Fortran_MODULE_DIRECTORY  ${_PAR_MODULE_DIRECTORY} )
+  else()
+    set( CMAKE_Fortran_MODULE_DIRECTORY  ${CMAKE_BINARY_DIR}/module
+         CACHE PATH "directory for all fortran modules." )
+  endif()
 
-	file( MAKE_DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY} )
+  file( MAKE_DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY} )
 
-    include_directories( ${CMAKE_Fortran_MODULE_DIRECTORY} )
+  include_directories( ${CMAKE_Fortran_MODULE_DIRECTORY} )
 
-    install( CODE "EXECUTE_PROCESS (COMMAND \"${CMAKE_COMMAND}\" -E copy_directory \"${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}\" \"${INSTALL_INCLUDE_DIR}\")" )
+  install( CODE "EXECUTE_PROCESS (COMMAND \"${CMAKE_COMMAND}\" -E copy_directory \"${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}\" \"${INSTALL_INCLUDE_DIR}\")" )
 
 endmacro( ecbuild_enable_fortran )
diff --git a/cmake/ecbuild_features.cmake b/cmake/ecbuild_features.cmake
new file mode 100644
index 0000000..5d619a5
--- /dev/null
+++ b/cmake/ecbuild_features.cmake
@@ -0,0 +1,121 @@
+# (C) Copyright 1996-2015 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.
+
+# Internal macros to handle CMake features
+
+include( FeatureSummary )
+
+function( debug_var _var )
+  message( "${_var} = ${${_var}}" )
+endfunction()
+
+# Write list of enabled features to CMake variable ${OUT}
+macro( ecbuild_enabled_features OUT )
+    get_property( ${OUT}  GLOBAL PROPERTY ENABLED_FEATURES )
+endmacro()
+
+# Write list of disabled features to CMake variable ${OUT}
+macro( ecbuild_disabled_features OUT )
+    get_property( ${OUT}  GLOBAL PROPERTY DISABLED_FEATURES )
+endmacro()
+
+# Enable the feature ${_name} (add to enabled features, remove from disabled)
+function( ecbuild_enable_feature _name )
+  
+  get_property( _enabled_features  GLOBAL PROPERTY ENABLED_FEATURES )
+  get_property( _disabled_features GLOBAL PROPERTY DISABLED_FEATURES )
+  
+  if( _disabled_features )
+    list( REMOVE_ITEM _disabled_features ${_name} )
+  endif()
+
+  list( APPEND _enabled_features ${_name} )
+  list( REMOVE_DUPLICATES _enabled_features )
+    
+  set_property(GLOBAL PROPERTY ENABLED_FEATURES  "${_enabled_features}" )
+  set_property(GLOBAL PROPERTY DISABLED_FEATURES "${_disabled_features}" )
+
+endfunction()
+
+# Disable the feature ${_name} (add to disabled features, remove from enabled)
+function( ecbuild_disable_feature _name )
+
+  get_property( _enabled_features  GLOBAL PROPERTY ENABLED_FEATURES )
+  get_property( _disabled_features GLOBAL PROPERTY DISABLED_FEATURES )
+  
+  if( _enabled_features )
+    list( REMOVE_ITEM _enabled_features ${_name} )
+  endif()
+
+  list( APPEND _disabled_features ${_name} )
+  list( REMOVE_DUPLICATES _disabled_features )
+    
+  set_property(GLOBAL PROPERTY ENABLED_FEATURES  "${_enabled_features}" )
+  set_property(GLOBAL PROPERTY DISABLED_FEATURES "${_disabled_features}" )
+  
+endfunction()
+
+# Set description of feature ${_name} to ${_desc}
+function( ecbuild_set_feature_description _name _desc)      
+  set_property(GLOBAL PROPERTY _CMAKE_${_name}_DESCRIPTION "${_desc}" )
+endfunction()
+
+# Set purpose of feature ${_name} to ${_desc}
+function( ecbuild_set_feature_purpose _name _purpose )
+  get_property( _purpose_list  GLOBAL PROPERTY _CMAKE_${_name}_PURPOSE )
+  list( APPEND _purpose_list ${_purpose} )
+  list( REMOVE_DUPLICATES _purpose_list )
+  set_property(GLOBAL PROPERTY _CMAKE_${_name}_PURPOSE "${_purpose_list}" )
+endfunction()
+
+# en/disable feature ${_name} and set its description and purpose
+function( ecbuild_set_feature _name )
+
+  set(options ) # none
+  set(oneValueArgs ENABLED DESCRIPTION PURPOSE )
+  set(multiValueArgs ) # none
+
+  CMAKE_PARSE_ARGUMENTS( _PAR "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
+  
+  get_property( _feature_desc      GLOBAL PROPERTY _CMAKE_${_name}_DESCRIPTION )  
+  get_property( _enabled_features  GLOBAL PROPERTY ENABLED_FEATURES )
+  get_property( _disabled_features GLOBAL PROPERTY DISABLED_FEATURES )
+  
+  if( DEFINED _PAR_ENABLED )
+    if( _PAR_ENABLED )
+      ecbuild_enable_feature( ${_name} )
+    else()
+      ecbuild_disable_feature( ${_name} )
+    endif()
+  endif()
+  
+  ecbuild_enabled_features( _enabled_features )
+  list (FIND _enabled_features "${_name}" _index)
+  if (${_index} GREATER -1)
+    set( _feature_found 1 )
+  endif()
+
+  ecbuild_disabled_features( _disabled_features )
+  list (FIND _disabled_features "${_name}" _index)
+  if (${_index} GREATER -1)
+    set( _feature_found 1 )
+  endif()
+  
+  if( NOT _feature_found )
+    message( WARNING "Feature ${_name} has not yet been enabled or disabled" )
+  endif()
+  
+  if( _PAR_DESCRIPTION )
+    ecbuild_set_feature_description( ${_name} ${_PAR_DESCRIPTION} )
+  endif()
+  
+  if( _PAR_PURPOSE )
+    ecbuild_set_feature_purpose( ${_name} ${_PAR_PURPOSE} )
+  endif()
+
+endfunction()
diff --git a/cmake/ecbuild_find_fortranlibs.cmake b/cmake/ecbuild_find_fortranlibs.cmake
index b40a5eb..850c4a3 100644
--- a/cmake/ecbuild_find_fortranlibs.cmake
+++ b/cmake/ecbuild_find_fortranlibs.cmake
@@ -1,131 +1,163 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
-
-############################################################################################
-# macro to find fortran (static) link libraries
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
 
+##############################################################################
+#.rst:
+#
+# ecbuild_find_fortranlibs
+# ========================
+#
+# Find the Fortran (static) link libraries. ::
+#
+#   ecbuild_find_fortranlibs( [ COMPILER gfortran|pgi|xlf|intel ]
+#                             [ REQUIRED ] )
+#
+# Options
+# -------
+#
+# COMPILER : optional, defaults to gfortran
+#   request a given Fortran compiler (``gfortran``, ``pgi``, ``xlf``, ``intel``)
+#
+# REQUIRED : optional
+#   fail if Fortran libraries were not found
+#
+##############################################################################
 
 macro( ecbuild_find_fortranlibs )
 
-    # parse parameters
+  # parse parameters
+
+  set( options REQUIRED )
+  set( single_value_args COMPILER )
+  set( multi_value_args  )
+
+  cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+  if(_PAR_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "Unknown keywords given to ecbuild_find_python(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+  endif()
 
-    set( options REQUIRED )
-	set( single_value_args COMPILER )
-    set( multi_value_args  )
+  if( NOT FORTRANLIBS_FOUND ) # don't repeat search
 
-    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+    if( _PAR_COMPILER )
+      set( __known_fcomp 0 )
+    endif()
 
-    if(_PAR_UNPARSED_ARGUMENTS)
-      message(FATAL_ERROR "Unknown keywords given to ecbuild_find_python(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+    if( _PAR_COMPILER MATCHES "gfortran" )
+      set( WITH_LIBGFORTRAN 1 )
+      set( __known_fcomp 1 )
     endif()
 
-	if( NOT FORTRANLIBS_FOUND ) # don't repeat search
+    if( _PAR_COMPILER MATCHES "pgi" )
+      set( WITH_PGI_FORTRAN 1 )
+      set( __known_fcomp 1 )
+    endif()
 
-		if( _PAR_COMPILER )
-			set( __known_fcomp 0 )
-		endif()
+    if( _PAR_COMPILER MATCHES "xlf" )
+      set( WITH_XL_FORTRAN 1 )
+      set( __known_fcomp 1 )
+    endif()
 
-		if( _PAR_COMPILER MATCHES "gfortran" )
-			set( WITH_LIBGFORTRAN 1 )
-			set( __known_fcomp 1 )
-		endif()
+    if( _PAR_COMPILER MATCHES "intel" )
+      set( WITH_INTEL_FORTRAN 1 )
+      set( __known_fcomp 1 )
+    endif()
 
-		if( _PAR_COMPILER MATCHES "pgi" )
-			set( WITH_PGI_FORTRAN 1 )
-			set( __known_fcomp 1 )
-		endif()
+    if( _PAR_COMPILER AND NOT __known_fcomp )
+      message( FATAL_ERROR "unknown fortran compiler ${_PAR_COMPILER}" )
+    endif()
 
-		if( _PAR_COMPILER MATCHES "xlf" )
-			set( WITH_XL_FORTRAN 1 )
-			set( __known_fcomp 1 )
-		endif()
+    ### set path from environment variables
 
-		if( _PAR_COMPILER MATCHES "intel" )
-			message( FATAL_ERROR "searching for intel libraries has not been implemented" )
-			set( __known_fcomp 1 )
-		endif()
+    foreach( _fortran_lib PGI XLF LIBGFORTRAN INTEL )
+      if( NOT ${_fortran_lib}_PATH AND NOT "$ENV{${_fortran_lib}_PATH}" STREQUAL "" )
+        set( ${_fortran_lib}_PATH "$ENV{${_fortran_lib}_PATH}" )
+      endif()
+    endforeach()
 
-		if( _PAR_COMPILER AND NOT __known_fcomp )
-			message( FATAL_ERROR "unknown fortran compiler ${_PAR_COMPILER}" )
-		endif()
+    set( _flibs_found 0 )
 
-		### set path from environment variables
+    ### default is to search for gfortran
 
-		foreach( _fortran_lib PGI XLF LIBGFORTRAN )
-			if( NOT ${_fortran_lib}_PATH AND NOT "$ENV{${_fortran_lib}_PATH}" STREQUAL "" )
-				set( ${_fortran_lib}_PATH "$ENV{${_fortran_lib}_PATH}" )
-			endif()
-		endforeach()
+    if( NOT (WITH_PGI_FORTRAN OR WITH_LIBGFORTRAN OR
+             WITH_XL_FORTRAN OR WITH_INTEL_FORTRAN)
+        AND NOT (DEFINED PGI_PATH OR DEFINED LIBGFORTRAN_PATH OR
+                 DEFINED XLF_PATH OR DEFINED INTEL_PATH) )
+      message( WARNING "Finding fortran libs for unspecified Fortran compiler: default search [ gfortran ]" )
+      set( WITH_LIBGFORTRAN 1 )
+    endif()
 
-		set( _flibs_found 0 )
+    ### actual search ...
 
-		### default is to search for gfortran
+    if( WITH_PGI_FORTRAN OR DEFINED PGI_PATH )
 
-		if( NOT WITH_PGI_FORTRAN AND NOT WITH_LIBGFORTRAN AND NOT WITH_XL_FORTRAN
-			AND NOT DEFINED PGI_PATH AND NOT DEFINED LIBGFORTRAN_PATH AND NOT DEFINED XLF_PATH )
-			message( WARNING "Finding fortran libs for unspecified Fortran compiler: default search [ gfortran ]" )
-			set( WITH_LIBGFORTRAN 1 )
-		endif()
+      find_package(PGIFortran)
 
-		### actual search ...
+      if( LIBPGIFORTRAN_FOUND )
+        set( FORTRAN_LIBRARIES ${PGIFORTRAN_LIBRARIES} )
+        set( _flibs_found 1 )
+        set( _flibs_txt "PGI" )
+      endif()
 
-		if( WITH_PGI_FORTRAN OR DEFINED PGI_PATH )
+    endif()
 
-			find_package(PGIFortran)
+    if( WITH_LIBGFORTRAN OR DEFINED LIBGFORTRAN_PATH )
 
-			if( LIBPGIFORTRAN_FOUND )
-				set( FORTRAN_LIBRARIES ${PGIFORTRAN_LIBRARIES} )
-				set( _flibs_found 1 )
-				set( _flibs_txt "PGI" )
-			endif()
+      find_package(LibGFortran)
 
-		endif()
+      if( LIBGFORTRAN_FOUND )
+        set( FORTRAN_LIBRARIES ${GFORTRAN_LIBRARIES} )
+        set( _flibs_found 1 )
+        set( _flibs_txt "gfortran" )
+      endif()
 
-		if( WITH_LIBGFORTRAN OR DEFINED LIBGFORTRAN_PATH )
+    endif()
 
-			find_package(LibGFortran)
+    if( WITH_XL_FORTRAN OR DEFINED XLF_PATH )
 
-			if( LIBGFORTRAN_FOUND )
-				set( FORTRAN_LIBRARIES ${GFORTRAN_LIBRARIES} )
-				set( _flibs_found 1 )
-				set( _flibs_txt "gfortran" )
-			endif()
+      find_package(XLFortranLibs)
 
-		endif()
+      if( LIBXLFORTRAN_FOUND )
+        set( FORTRAN_LIBRARIES ${XLFORTRAN_LIBRARIES} )
+        set( _flibs_found 1 )
+        set( _flibs_txt "XLF" )
+      endif()
 
-		if( WITH_XL_FORTRAN OR DEFINED XLF_PATH )
+    endif()
 
-			find_package(XLFortranLibs)
+    if( WITH_INTEL_FORTRAN OR DEFINED INTEL_PATH )
 
-			if( LIBXLFORTRAN_FOUND )
-				set( FORTRAN_LIBRARIES ${XLFORTRAN_LIBRARIES} )
-				set( _flibs_found 1 )
-				set( _flibs_txt "XLF" )
-			endif()
+      find_package(LibIFort)
 
-		endif()
+      if( LIBIFORT_FOUND )
+        set( FORTRAN_LIBRARIES ${IFORT_LIBRARIES} )
+        set( _flibs_found 1 )
+        set( _flibs_txt "Intel" )
+      endif()
 
-		### set found
+    endif()
 
-		if( _flibs_found )
-			set( FORTRANLIBS_FOUND 1 CACHE INTERNAL "Fortran libraries found" )
-			set( FORTRANLIBS_NAME ${_flibs_txt}  CACHE INTERNAL "Fortran library name" )
-			set( FORTRAN_LIBRARIES ${FORTRAN_LIBRARIES} CACHE INTERNAL "Fortran libraries" )
-			message( STATUS "Found Fortran libraries: ${_flibs_txt}" )
-		else()
-			set( FORTRANLIBS_FOUND 0 )
-			if( _PAR_REQUIRED )
-			   message( FATAL_ERROR "Failed to find Fortran libraries" )
-			else()
-			   message( STATUS "Failed to find Fortran libraries" )
-			endif()
-		endif()
+    ### set found
+
+    if( _flibs_found )
+      set( FORTRANLIBS_FOUND 1 CACHE INTERNAL "Fortran libraries found" )
+      set( FORTRANLIBS_NAME ${_flibs_txt}  CACHE INTERNAL "Fortran library name" )
+      set( FORTRAN_LIBRARIES ${FORTRAN_LIBRARIES} CACHE INTERNAL "Fortran libraries" )
+      message( STATUS "Found Fortran libraries: ${_flibs_txt}" )
+    else()
+      set( FORTRANLIBS_FOUND 0 )
+      if( _PAR_REQUIRED )
+        message( FATAL_ERROR "Failed to find Fortran libraries" )
+      else()
+        message( STATUS "Failed to find Fortran libraries" )
+      endif()
+    endif()
 
-	endif( NOT FORTRANLIBS_FOUND )
+  endif( NOT FORTRANLIBS_FOUND )
 
 endmacro( ecbuild_find_fortranlibs )
diff --git a/cmake/ecbuild_find_lexyacc.cmake b/cmake/ecbuild_find_lexyacc.cmake
index 373b81c..9876097 100644
--- a/cmake/ecbuild_find_lexyacc.cmake
+++ b/cmake/ecbuild_find_lexyacc.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -6,55 +6,79 @@
 # granted to it by virtue of its status as an intergovernmental organisation nor
 # does it submit to any jurisdiction.
 
-############################################################################################
-# macro to find python
-
-# OUTPUT:
+##############################################################################
+#.rst:
+#
+# ecbuild_find_lexyacc
+# ====================
+#
+# Find flex and bison (preferred) or lex and yacc.
+#
+# Input variables
+# ---------------
+#
+# The following CMake variables can set to skip search for bison or yacc:
+#
+# :SKIP_BISON: do not search for flex and bison
+# :SKIP_YACC:  do not search for lex and yacc
+#
+# Output variables
+# ----------------
+#
+# The following CMake variables are set if flex and bison were found:
+#
+# :FLEX_FOUND:       flex was found
+# :BISON_FOUND:      bison was found
+# :FLEX_EXECUTABLE:  path to the flex executable
+# :BISON_EXECUTABLE: path to the bison executable
+#
+# The following CMake variables are set if lex and yacc were found:
 #
-# BISON_FOUND or YACC_FOUND
-# FLEX_FOUND or LEX_FOUND
+# :LEX_FOUND:       lex was found
+# :YACC_FOUND:      yacc was found
+# :LEX_EXECUTABLE:  path to the lex executable
+# :YACC_EXECUTABLE: path to the yacc executable
 #
-# BISON_EXECUTABLE or YACC_EXECUTABLE
-# FLEX_EXECUTABLE or LEX_EXECUTABLE
+##############################################################################
 
 macro( ecbuild_find_lexyacc )
 
-	# find preferably bison or else yacc
+  # find preferably bison or else yacc
 
-	if( NOT SKIP_BISON )
+  if( NOT SKIP_BISON )
 
-		find_package( BISON 2.3 )
-		find_package( FLEX )
+    find_package( BISON 2.3 )
+    find_package( FLEX )
 
-	endif()
+  endif()
 
-	if( NOT BISON_FOUND AND NOT SKIP_YACC )
+  if( NOT BISON_FOUND AND NOT SKIP_YACC )
 
-		find_package( YACC )
-		find_package( LEX  )
+    find_package( YACC )
+    find_package( LEX  )
 
-	endif()
+  endif()
 
-	if( NOT YACC_FOUND AND NOT BISON_FOUND ) # neither bison nor yacc were found
-		message( FATAL_ERROR "neither bison or yacc were found - at least one is required (together with its lexical analyser" )
-	endif()
+  if( NOT YACC_FOUND AND NOT BISON_FOUND ) # neither bison nor yacc were found
+    message( FATAL_ERROR "neither bison or yacc were found - at least one is required (together with its lexical analyser" )
+  endif()
 
-	if( NOT YACC_FOUND ) # check for both bison & flex together
-		if( BISON_FOUND AND NOT FLEX_FOUND )
-			message( FATAL_ERROR "both bison and flex are required - flex not found" )
-		endif()
-		if( FLEX_FOUND AND NOT BISON_FOUND )
-			message( FATAL_ERROR "both bison and flex are required - bison not found" )
-		endif()
-	endif()
+  if( NOT YACC_FOUND ) # check for both bison & flex together
+    if( BISON_FOUND AND NOT FLEX_FOUND )
+      message( FATAL_ERROR "both bison and flex are required - flex not found" )
+    endif()
+    if( FLEX_FOUND AND NOT BISON_FOUND )
+      message( FATAL_ERROR "both bison and flex are required - bison not found" )
+    endif()
+  endif()
 
-	if( NOT BISON_FOUND ) # check for both yacc & lex together
-		if( YACC_FOUND AND NOT LEX_FOUND )
-			message( FATAL_ERROR "both yacc and lex are required - lex not found" )
-		endif()
-		if( LEX_FOUND AND NOT YACC_FOUND )
-			message( FATAL_ERROR "both yacc and lex are required - yacc not found" )
-		endif()
-	endif()
+  if( NOT BISON_FOUND ) # check for both yacc & lex together
+    if( YACC_FOUND AND NOT LEX_FOUND )
+      message( FATAL_ERROR "both yacc and lex are required - lex not found" )
+    endif()
+    if( LEX_FOUND AND NOT YACC_FOUND )
+      message( FATAL_ERROR "both yacc and lex are required - yacc not found" )
+    endif()
+  endif()
 
 endmacro( ecbuild_find_lexyacc )
diff --git a/cmake/ecbuild_find_mpi.cmake b/cmake/ecbuild_find_mpi.cmake
index 9ed4b3c..82fc4b5 100644
--- a/cmake/ecbuild_find_mpi.cmake
+++ b/cmake/ecbuild_find_mpi.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -6,10 +6,69 @@
 # granted to it by virtue of its status as an intergovernmental organisation nor
 # does it submit to any jurisdiction.
 
-############################################################################################
-# macro to find MPI
-# uses the canonical find_package( MPI )
-# but does more checks
+##############################################################################
+#.rst:
+#
+# ecbuild_find_mpi
+# ================
+#
+# Find MPI and check if MPI compilers successfully compile C/C++/Fortran. ::
+#
+#   ecbuild_find_mpi( [ COMPONENTS <component1> [ <component2> ... ] ]
+#                     [ REQUIRED ] )
+#
+# Options
+# -------
+#
+# COMPONENTS : optional, defaults to C
+#   list of required languages bindings
+#
+# REQUIRED : optional
+#   fail if MPI was not found
+#
+# Input variables
+# ---------------
+#
+# ECBUILD_FIND_MPI : optional, defaults to TRUE
+#   test C/C++/Fortran MPI compiler wrappers (assume working if FALSE)
+#
+# Output variables
+# ----------------
+#
+# The following CMake variables are set if MPI was found: ::
+#
+#   MPI_FOUND
+#   MPI_LIBRARY
+#   MPI_EXTRA_LIBRARY 
+#
+# The following CMake variables are set if C bindings were found: ::
+#
+#   MPI_C_FOUND
+#   MPI_C_COMPILER
+#   MPI_C_COMPILE_FLAGS
+#   MPI_C_INCLUDE_PATH
+#   MPI_C_LIBRARIES
+#   MPI_C_LINK_FLAGS
+#
+# The following CMake variables are set if C++ bindings were found: ::
+#
+#   MPI_CXX_FOUND
+#   MPI_CXX_COMPILER
+#   MPI_CXX_COMPILE_FLAGS
+#   MPI_CXX_INCLUDE_PATH
+#   MPI_CXX_LIBRARIES
+#   MPI_CXX_LINK_FLAGS
+#
+# The following CMake variables are set if Fortran bindings were found: ::
+#
+#   MPI_Fortran_FOUND
+#   MPI_Fortran_COMPILER
+#   MPI_Fortran_COMPILE_FLAGS
+#   MPI_Fortran_INCLUDE_PATH
+#   MPI_Fortran_LIBRARIES
+#   MPI_Fortran_LINK_FLAGS
+#
+##############################################################################
 
 macro( ecbuild_find_mpi )
 
@@ -156,6 +215,32 @@ macro( ecbuild_find_mpi )
 
 endmacro( ecbuild_find_mpi )
 
+##############################################################################
+#.rst:
+#
+# ecbuild_enable_mpi
+# ==================
+#
+# Find MPI, add include directories and set compiler flags. ::
+#
+#   ecbuild_enable_mpi( [ COMPONENTS <component1> [ <component2> ... ] ]
+#                       [ REQUIRED ] )
+#
+# For each MPI language binding found, set the corresponding compiler flags
+# and add the include directories.
+#
+# See ``ecbuild_find_mpi`` for input and output variables.
+#
+# Options
+# -------
+#
+# COMPONENTS : optional, defaults to C
+#   list of required languages bindings
+#
+# REQUIRED : optional
+#   fail if MPI was not found
+#
+##############################################################################
 
 macro( ecbuild_enable_mpi )
 
@@ -180,23 +265,36 @@ macro( ecbuild_enable_mpi )
     endif()
 
     if( MPI_C_FOUND AND NOT C_COMPILER_SUPPORTS_MPI )
-        cmake_add_c_flags("${MPI_C_COMPILE_FLAGS}")
+        ecbuild_add_c_flags("${MPI_C_COMPILE_FLAGS}")
         include_directories(${MPI_C_INCLUDE_PATH})
     endif()
 
     if( MPI_CXX_FOUND AND NOT CXX_COMPILER_SUPPORTS_MPI )
-        cmake_add_cxx_flags("${MPI_CXX_COMPILE_FLAGS}")
+        ecbuild_add_cxx_flags("${MPI_CXX_COMPILE_FLAGS}")
         include_directories(${MPI_CXX_INCLUDE_PATH})
     endif()
 
     if( MPI_Fortran_FOUND AND NOT Fortran_COMPILER_SUPPORTS_MPI )
-        include(ecbuild_check_fortran_source)
-        cmake_add_fortran_flags("${MPI_Fortran_COMPILE_FLAGS}")
+        include( ecbuild_check_fortran_source_return )
+        ecbuild_add_fortran_flags("${MPI_Fortran_COMPILE_FLAGS}")
         include_directories(${MPI_Fortran_INCLUDE_PATH})
     endif()
 
 endmacro( ecbuild_enable_mpi )
 
+##############################################################################
+#.rst:
+#
+# ecbuild_include_mpi
+# ===================
+#
+# Add MPI include directories and set compiler flags, assuming MPI was found.
+#
+# For each MPI language binding found, set corresponding compiler flags and
+# add include directories. ``ecbuild_find_mpi`` must have been called before.
+#
+##############################################################################
+
 macro( ecbuild_include_mpi )
 
     set( options )
@@ -210,20 +308,20 @@ macro( ecbuild_include_mpi )
     endif()
 
     if( MPI_C_FOUND AND NOT C_COMPILER_SUPPORTS_MPI )
-        include( ecbuild_check_c_source )
-        cmake_add_c_flags("${MPI_C_COMPILE_FLAGS}")
+        include( ecbuild_check_c_source_return )
+        ecbuild_add_c_flags("${MPI_C_COMPILE_FLAGS}")
         include_directories(${MPI_C_INCLUDE_PATH})
     endif()
 
     if( MPI_CXX_FOUND AND NOT CXX_COMPILER_SUPPORTS_MPI )
-        include( ecbuild_check_cxx_source )
-        cmake_add_cxx_flags("${MPI_CXX_COMPILE_FLAGS}")
+        include( ecbuild_check_cxx_source_return )
+        ecbuild_add_cxx_flags("${MPI_CXX_COMPILE_FLAGS}")
         include_directories(${MPI_CXX_INCLUDE_PATH})
     endif()
 
     if( MPI_Fortran_FOUND AND NOT Fortran_COMPILER_SUPPORTS_MPI )
-        include( ecbuild_check_fortran_source )
-        cmake_add_fortran_flags("${MPI_Fortran_COMPILE_FLAGS}")
+        include( ecbuild_check_fortran_source_return )
+        ecbuild_add_fortran_flags("${MPI_Fortran_COMPILE_FLAGS}")
         include_directories(${MPI_Fortran_INCLUDE_PATH})
     endif()
 
diff --git a/cmake/ecbuild_find_omp.cmake b/cmake/ecbuild_find_omp.cmake
index 86ab139..882adfe 100644
--- a/cmake/ecbuild_find_omp.cmake
+++ b/cmake/ecbuild_find_omp.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -7,8 +7,7 @@
 # does it submit to any jurisdiction.
 
 ##############################################################################
-# macro for adding a test
-##############################################################################
+# macro for looking for openmp flags
 
 macro( lookup_omp_flags )
   set(_OMP_FLAG_GNU        "-fopenmp")
@@ -74,19 +73,47 @@ macro( lookup_omp_flags )
 
 endmacro()
 
-
-# MACRO ecbuild_find_omp
+##############################################################################
+#.rst:
+#
+# ecbuild_find_omp
+# ================
+#
+# Find OpenMP. ::
+#
+#   ecbuild_find_omp( [ COMPONENTS <component1> [ <component2> ... ] ]
+#                     [ REQUIRED ]
+#                     [ STUBS ] )
+#
+# Options
+# -------
+#
+# COMPONENTS : optional, defaults to C
+#   list of required languages bindings
+#
+# REQUIRED : optional
+#   fail if OpenMP was not found
+#
+# STUBS : optional
+#   search for OpenMP stubs
+#
+# Output variables
+# ----------------
+#
+# The following CMake variables are set if OpenMP was found:
+#
+# :OMP_FOUND: OpenMP was found
+#
+# For each language listed in COMPONENTS, the following variables are set:
 #
-# ecbuild_find_omp( COMPONENTS C CXX Fortran
-#                   STUBS )
-# Sets following variables
-#   - OMP_FOUND
-#   - OMP_<lang>_FOUND
-#   - OMP_<lang>_FLAGS
+# :OMP_<LANG>_FOUND: OpenMP bindings for LANG were found
+# :OMP_<LANG>_FLAGS: OpenMP compiler flags for LANG
 #
-# If STUBS are available, above flags will still hold TRUE,
-# as OMP code will just work.
+# If the STUBS option was given, all variables are also set with the OMPSTUBS
+# instead of the OMP prefix.
 #
+##############################################################################
+
 macro( ecbuild_find_omp )
 
   set( options REQUIRED STUBS )
@@ -166,6 +193,16 @@ macro( ecbuild_find_omp )
 
 endmacro( ecbuild_find_omp )
 
+##############################################################################
+#.rst:
+#
+# ecbuild_enable_omp
+# ==================
+#
+# Find OpenMP for C, C++ and Fortran and set the compiler flags for each
+# language for which OpenMP support was detected.
+#
+##############################################################################
 
 macro( ecbuild_enable_omp )
 
@@ -185,6 +222,17 @@ macro( ecbuild_enable_omp )
 
 endmacro( ecbuild_enable_omp )
 
+##############################################################################
+#.rst:
+#
+# ecbuild_enable_ompstubs
+# =======================
+#
+# Find OpenMP stubs for C, C++ and Fortran and set the compiler flags for each
+# language for which OpenMP stubs were detected.
+#
+##############################################################################
+
 macro( ecbuild_enable_ompstubs )
 
   ecbuild_find_omp( COMPONENTS C CXX Fortran STUBS )
diff --git a/cmake/ecbuild_find_package.cmake b/cmake/ecbuild_find_package.cmake
index e6cea19..b67b51d 100644
--- a/cmake/ecbuild_find_package.cmake
+++ b/cmake/ecbuild_find_package.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -7,184 +7,319 @@
 # does it submit to any jurisdiction.
 
 ##############################################################################
-# macro for adding a subproject directory
+#.rst:
+#
+# ecbuild_find_package
+# ====================
+#
+# Find a package and import its configuration. ::
+#
+#   ecbuild_find_package( NAME <name>
+#                         [ VERSION <version> [ EXACT ] ]
+#                         [ COMPONENTS <component1> [ <component2> ... ] ]
+#                         [ REQUIRED ]
+#                         [ QUIET ] )
+#
+# Options
+# -------
+#
+# NAME : required
+#   package name (used as ``Find<name>.cmake`` and ``<name>-config.cmake``)
+#
+# VERSION : optional
+#   minimum required package version
+#
+# COMPONENTS : optional
+#   list of package components to find (behaviour depends on the package)
+#
+# EXACT : optional, requires VERSION
+#   require the exact version rather than a minimum version
+#
+# REQUIRED : optional
+#   fail if package cannot be found
+#
+# QUIET : optional
+#   do not output package information if found
+#
+# Input variables
+# ---------------
+#
+# The following CMake variables influence the behaviour if set (``<name>`` is
+# the package name as given, ``<NAME>`` is the capitalised version):
+#
+# :DEVELOPER_MODE: if enabled, discover projects parallel in the build tree
+# :<name>_PATH:    install prefix path of the package
+# :<NAME>_PATH:    install prefix path of the package
+# :<name>_DIR:     directory containing the ``<name>-config.cmake`` file
+#                  (usually ``<install-prefix>/share/<name>/cmake``)
+#
+# The environment variables ``<name>_PATH``, ``<NAME>_PATH``, ``<name>_DIR``
+# are taken into account only if the corresponding CMake variables are unset.
+#
+# Usage
+# -----
+#
+# The search proceeds as follows:
+#
+# 1.  If any paths have been specified by the user via CMake or environment
+#     variables as given above or a parallel build tree has been discovered in
+#     DEVELOPER_MODE:
+#
+#     * search for ``<name>-config.cmake`` in those paths only
+#     * search using ``Find<name>.cmake`` (which should respect those paths)
+#     * fail if the package was not found in any of those paths
+#
+# 2.  Search for ``<name>-config.cmake`` in the ``CMAKE_PREFIX_PATH`` and if
+#     DEVELOPER_MODE is enabled also in the user package registry.
+#
+# 3.  Search system paths for ``<name>-config.cmake``.
+#
+# 4.  Search system paths using ``Find<name>.cmake``.
+#
+# 5.  If the package was found, and a minimum version was requested, check if
+#     the version is acceptable and if not, unset ``<NAME>_FOUND``.
+#
+# 6.  Fail if the package was not found and is REQUIRED.
+#
 ##############################################################################
 
 macro( ecbuild_find_package )
 
-    set( options REQUIRED QUIET EXACT )
-    set( single_value_args NAME VERSION )
-    set( multi_value_args )
+  set( options REQUIRED QUIET EXACT )
+  set( single_value_args NAME VERSION )
+  set( multi_value_args COMPONENTS )
 
-    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+  cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
 
-    if(_PAR_UNPARSED_ARGUMENTS)
-      message(FATAL_ERROR "Unknown keywords given to ecbuild_find_package(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
-    endif()
+  if(_PAR_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "Unknown keywords given to ecbuild_find_package(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+  endif()
 
-    if( NOT _PAR_NAME  )
-      message(FATAL_ERROR "The call to ecbuild_find_package() doesn't specify the NAME.")
-    endif()
+  if( NOT _PAR_NAME  )
+    message(FATAL_ERROR "The call to ecbuild_find_package() doesn't specify the NAME.")
+  endif()
 
-    if( _PAR_EXACT AND NOT _PAR_VERSION )
-      message(FATAL_ERROR "Call to ecbuild_find_package() requests EXACT but doesn't specify VERSION.")
-    endif()
+  if( _PAR_EXACT AND NOT _PAR_VERSION )
+    message(FATAL_ERROR "Call to ecbuild_find_package() requests EXACT but doesn't specify VERSION.")
+  endif()
 
-	# debug_var( _PAR_NAME )
+  # debug_var( _PAR_NAME )
 
-    string( TOUPPER ${_PAR_NAME} PNAME )
+  string( TOUPPER ${_PAR_NAME} pkgUPPER )
+  string( TOLOWER ${_PAR_NAME} pkgLOWER )
 
-    set( _${PNAME}_version "" )
-    if( _PAR_VERSION )
-        set( _${PNAME}_version ${_PAR_VERSION} )
-        if( _PAR_EXACT )
-            set( _${PNAME}_version ${_PAR_VERSION} EXACT )
-        endif()
+  set( _${pkgUPPER}_version "" )
+  if( _PAR_VERSION )
+    set( _${pkgUPPER}_version ${_PAR_VERSION} )
+    if( _PAR_EXACT )
+      set( _${pkgUPPER}_version ${_PAR_VERSION} EXACT )
     endif()
+  endif()
+
+  # check developer mode (search in cmake cache )
+
+  if( NOT ${DEVELOPER_MODE} )
+    ecbuild_debug("ecbuild_find_package(${_PAR_NAME}): Not in DEVELOPER_MODE - do not search package registry or recent GUI build paths")
+    set( NO_DEV_BUILD_DIRS NO_CMAKE_PACKAGE_REGISTRY NO_CMAKE_BUILDS_PATH )
+  endif()
+
+  # in DEVELOPER_MODE we give priority to projects parallel in the build tree
+  # so lets prepend a parallel build tree to the search path if we find it
+
+  if( DEVELOPER_MODE )
+    get_filename_component( _proj_bdir "${CMAKE_BINARY_DIR}/../${pkgLOWER}" ABSOLUTE )
+    ecbuild_debug("ecbuild_find_package(${_PAR_NAME}): in DEVELOPER_MODE - searching for ${pkgLOWER}-config.cmake in ${_proj_bdir}")
+    if( EXISTS ${_proj_bdir}/${pkgLOWER}-config.cmake )
+      ecbuild_debug("ecbuild_find_package(${_PAR_NAME}): in DEVELOPER_MODE - found parallel build tree in ${_proj_bdir}")
+      if( ${pkgUPPER}_PATH )
+        ecbuild_debug("ecbuild_find_package(${_PAR_NAME}): in DEVELOPER_MODE - ${pkgUPPER}_PATH already set to ${${pkgUPPER}_PATH}, not modifying")
+      else()
+        ecbuild_debug("ecbuild_find_package(${_PAR_NAME}): in DEVELOPER_MODE - setting ${pkgUPPER}_PATH to ${_proj_bdir}")
+        set( ${pkgUPPER}_PATH "${_proj_bdir}" )
+      endif()
+    endif()
+  endif()
 
-	# check developer mode (search in cmake cache )
-
-	if( NOT ${DEVELOPER_MODE} )
-		set( NO_DEV_BUILD_DIRS NO_CMAKE_PACKAGE_REGISTRY NO_CMAKE_BUILDS_PATH )
-	endif()
-
-	# search user defined paths first
-
-	if( ${_PAR_NAME}_PATH OR ${PNAME}_PATH OR ${_PAR_NAME}_DIR OR ${PNAME}_DIR )
-
-		# debug_var( ${_PAR_NAME}_PATH )
-		# debug_var( ${PNAME}_PATH )
+  # Read environment variables but ONLY if the corresponding CMake variables are unset
 
-		# 1) search using CONFIG mode -- try to locate a configuration file provided by the package (package-config.cmake)
+  if( NOT DEFINED ${pkgUPPER}_PATH AND NOT "$ENV{${pkgUPPER}_PATH}" STREQUAL "" )
+    ecbuild_debug("ecbuild_find_package(${_PAR_NAME}): setting ${pkgUPPER}_PATH=${${pkgUPPER}_PATH} from environment")
+    set( ${pkgUPPER}_PATH "$ENV{${pkgUPPER}_PATH}" )
+  endif()
 
-		if( NOT ${_PAR_NAME}_FOUND )
-			find_package( ${_PAR_NAME} ${_${PNAME}_version} NO_MODULE QUIET
-                HINTS ${${PNAME}_PATH} ${_PAR_NAME}_PATH ${${PNAME}_DIR} ${${_PAR_NAME}_DIR}
-                NO_DEFAULT_PATH )
-		endif()
+  if( NOT DEFINED ${_PAR_NAME}_PATH AND NOT "$ENV{${_PAR_NAME}_PATH}" STREQUAL "" )
+    ecbuild_debug("ecbuild_find_package(${_PAR_NAME}): setting ${_PAR_NAME}_PATH=${${_PAR_NAME}_PATH} from environment")
+    set( ${_PAR_NAME}_PATH "$ENV{${_PAR_NAME}_PATH}" )
+  endif()
 
-		# 2) search using a file Find<package>.cmake if it exists ( macro should itself take *_PATH into account )
+  if( NOT DEFINED ${_PAR_NAME}_DIR AND NOT "$ENV{${_PAR_NAME}_DIR}" STREQUAL "" )
+    ecbuild_debug("ecbuild_find_package(${_PAR_NAME}): setting ${_PAR_NAME}_DIR=${${_PAR_NAME}_DIR} from environment")
+    set( ${_PAR_NAME}_DIR "$ENV{${_PAR_NAME}_DIR}" )
+  endif()
 
-		if( NOT ${_PAR_NAME}_FOUND )
-			find_package( ${_PAR_NAME} ${_${PNAME}_version} MODULE QUIET )
-		endif()
+  # Find packages quietly unless in DEVELOPER_MODE, LOG_LEVEL is DEBUG or the package is REQUIRED
 
-		# is <package>_PATH was given and we don't find anything then we FAIL
+  if( NOT ( DEVELOPER_MODE OR _PAR_REQUIRED ) AND ( ECBUILD_LOG_LEVEL GREATER ${ECBUILD_DEBUG} ) )
+    set( _find_quiet QUIET )
+  endif()
 
-		if( NOT ${_PAR_NAME}_FOUND )
-			if( ${_PAR_NAME}_PATH )
-				message( FATAL_ERROR "${_PAR_NAME}_PATH was provided by user but package ${_PAR_NAME} wasn't found" )
-			endif()
-			if( ${PNAME}_PATH )
-				message( FATAL_ERROR "${PNAME}_PATH was provided by user but package ${_PAR_NAME} wasn't found" )
-			endif()
-		endif()
+  # search user defined paths first
 
-	endif()
+  if( ${_PAR_NAME}_PATH OR ${pkgUPPER}_PATH OR ${_PAR_NAME}_DIR )
+    ecbuild_debug("ecbuild_find_package(${_PAR_NAME}): ${_PAR_NAME}_PATH=${${_PAR_NAME}_PATH}, ${pkgUPPER}_PATH=${${pkgUPPER}_PATH}, ${_PAR_NAME}_DIR=${${_PAR_NAME}_DIR}")
 
-	# 3) search developer cache and recently configured packages in the CMake GUI
+    # 1) search using CONFIG mode -- try to locate a configuration file provided by the package (package-config.cmake)
 
-	if( NOT ${_PAR_NAME}_FOUND )
+    if( NOT ${_PAR_NAME}_FOUND )
+      ecbuild_debug("ecbuild_find_package(${_PAR_NAME}): 1) search using CONFIG mode -- try to locate ${_PAR_NAME}-config.cmake")
+      ecbuild_debug("ecbuild_find_package(${_PAR_NAME}):    using hints ${pkgUPPER}_PATH=${${pkgUPPER}_PATH}, ${_PAR_NAME}_PATH=${${_PAR_NAME}_PATH}, ${_PAR_NAME}_DIR=${${_PAR_NAME}_DIR}")
+      find_package( ${_PAR_NAME} ${_${pkgUPPER}_version} NO_MODULE ${_find_quiet}
+        COMPONENTS ${_PAR_COMPONENTS}
+        HINTS ${${pkgUPPER}_PATH} ${${_PAR_NAME}_PATH} ${${_PAR_NAME}_DIR}
+        NO_DEFAULT_PATH )
+    endif()
 
-		find_package( ${_PAR_NAME} ${_${PNAME}_version} QUIET NO_MODULE HINTS ENV ${PNAME}_PATH
-				${NO_DEV_BUILD_DIRS}
-				NO_CMAKE_ENVIRONMENT_PATH
-				NO_SYSTEM_ENVIRONMENT_PATH
-				NO_CMAKE_SYSTEM_PATH
-				NO_CMAKE_SYSTEM_PACKAGE_REGISTRY )
+    # 2) search using a file Find<package>.cmake if it exists ( macro should itself take *_PATH into account )
 
-	endif()
+    if( NOT ${_PAR_NAME}_FOUND )
+      ecbuild_debug("ecbuild_find_package(${_PAR_NAME}): 2) search using a file Find${_PAR_NAME}.cmake if it exists")
+      find_package( ${_PAR_NAME} ${_${pkgUPPER}_version} MODULE ${_find_quiet}
+                    COMPONENTS ${_PAR_COMPONENTS} )
+    endif()
 
-	# 4) search special ECMWF paths
+    # is <package>_PATH was given and we don't find anything then we FAIL
 
-	if( NOT ${_PAR_NAME}_FOUND )
+    if( NOT ${_PAR_NAME}_FOUND )
+      if( ${_PAR_NAME}_PATH )
+        message( FATAL_ERROR "${_PAR_NAME}_PATH was provided by user but package ${_PAR_NAME} wasn't found" )
+      endif()
+      if( ${pkgUPPER}_PATH )
+        message( FATAL_ERROR "${pkgUPPER}_PATH was provided by user but package ${_PAR_NAME} wasn't found" )
+      endif()
+    endif()
 
-		set( _ecmwf_paths ) # clear variable
-		ecbuild_list_extra_search_paths( ${_PAR_NAME} _ecmwf_paths )
+  endif()
 
-		if( _ecmwf_paths )
-			find_package( ${_PAR_NAME} ${_${PNAME}_version} QUIET NO_MODULE PATHS ${_ecmwf_paths} NO_DEFAULT_PATH )
-		endif()
+  # 3) search developer cache and recently configured packages in the CMake GUI if in DEVELOPER_MODE
+  #    otherwise only search CMAKE_PREFIX_PATH and <package>_PATH
 
-	endif()
+  if( NOT ${_PAR_NAME}_FOUND )
+    if (NO_DEV_BUILD_DIRS)
+      ecbuild_debug("ecbuild_find_package(${_PAR_NAME}): 3) search CMAKE_PREFIX_PATH and \$${pkgUPPER}_PATH")
+    else()
+      ecbuild_debug("ecbuild_find_package(${_PAR_NAME}): 3) search CMAKE_PREFIX_PATH and \$${pkgUPPER}_PATH and package registry")
+    endif()
 
-	# 5) search system paths, for <package>-config.cmake
+    find_package( ${_PAR_NAME} ${_${pkgUPPER}_version} ${_find_quiet} NO_MODULE
+      COMPONENTS ${_PAR_COMPONENTS}
+      HINTS ENV ${pkgUPPER}_PATH
+      ${NO_DEV_BUILD_DIRS}
+      NO_CMAKE_ENVIRONMENT_PATH
+      NO_SYSTEM_ENVIRONMENT_PATH
+      NO_CMAKE_SYSTEM_PATH
+      NO_CMAKE_SYSTEM_PACKAGE_REGISTRY )
 
-	if( NOT ${_PAR_NAME}_FOUND )
+  endif()
 
-		find_package( ${_PAR_NAME} ${_${PNAME}_version} QUIET NO_MODULE ${NO_DEV_BUILD_DIRS} )
+  # 4) search system paths, for <package>-config.cmake
 
-	endif()
+  if( NOT ${_PAR_NAME}_FOUND )
+    ecbuild_debug("ecbuild_find_package(${_PAR_NAME}): 5) search system paths, for ${_PAR_NAME}-config.cmake")
 
-	# 6) search system paths, using Find<package>.cmake if it exists
+    find_package( ${_PAR_NAME} ${_${pkgUPPER}_version} ${_find_quiet} NO_MODULE
+      COMPONENTS ${_PAR_COMPONENTS}
+      ${NO_DEV_BUILD_DIRS} )
 
-	if( NOT ${_PAR_NAME}_FOUND )
+  endif()
 
-		find_package( ${_PAR_NAME} ${_${PNAME}_version} QUIET MODULE )
+  # 5) search system paths, using Find<package>.cmake if it exists
 
-	endif()
+  if( NOT ${_PAR_NAME}_FOUND )
+    ecbuild_debug("ecbuild_find_package(${_PAR_NAME}): 6) search system paths, using Find${_PAR_NAME}.cmake if it exists")
 
-    # check version found is acceptable
+    find_package( ${_PAR_NAME} ${_${pkgUPPER}_version} ${_find_quiet} MODULE
+                  COMPONENTS ${_PAR_COMPONENTS} )
 
-    if( ${_PAR_NAME}_FOUND )
-        set( _version_acceptable 1 )
-        if( _PAR_VERSION )
-            if( ${_PAR_NAME}_VERSION )
-                if( _PAR_EXACT )
-                    if( NOT ${_PAR_NAME}_VERSION VERSION_EQUAL _PAR_VERSION )
-                        message( WARNING "${PROJECT_NAME} requires (exactly) ${_PAR_NAME} = ${_PAR_VERSION} -- found ${${_PAR_NAME}_VERSION}" )
-                        set( _version_acceptable 0 )
-                    endif()
-                else()
-                    if( _PAR_VERSION VERSION_LESS ${_PAR_NAME}_VERSION OR _PAR_VERSION VERSION_EQUAL ${_PAR_NAME}_VERSION )
-                        set( _version_acceptable 1 )
-                    else()
-                        if( NOT _PAR_QUIET )
-                            message( WARNING "${PROJECT_NAME} requires ${_PAR_NAME} >= ${_PAR_VERSION} -- found ${${_PAR_NAME}_VERSION}" )
-                        endif()
-                        set( _version_acceptable 0 )
-                    endif()
-                endif()
-            else()
-                if( NOT _PAR_QUIET )
-                    message( WARNING "${PROJECT_NAME} found ${_PAR_NAME} but no version information, so cannot check if satisfies ${_PAR_VERSION}" )
-                endif()
-                set( _version_acceptable 0 )
-            endif()
-        endif()
-    endif()
+  endif()
 
-    if( ${_PAR_NAME}_FOUND )
+  # check version found is acceptable
 
-        if( _version_acceptable )
-            set( ${PNAME}_FOUND ${${_PAR_NAME}_FOUND} )
+  if( ${_PAR_NAME}_FOUND )
+    set( _version_acceptable 1 )
+    if( _PAR_VERSION )
+      if( ${_PAR_NAME}_VERSION )
+        if( _PAR_EXACT )
+          if( NOT ${_PAR_NAME}_VERSION VERSION_EQUAL _PAR_VERSION )
+            message( WARNING "${PROJECT_NAME} requires (exactly) ${_PAR_NAME} = ${_PAR_VERSION} -- found ${${_PAR_NAME}_VERSION}" )
+            set( _version_acceptable 0 )
+          endif()
         else()
+          if( _PAR_VERSION VERSION_LESS ${_PAR_NAME}_VERSION OR _PAR_VERSION VERSION_EQUAL ${_PAR_NAME}_VERSION )
+            set( _version_acceptable 1 )
+          else()
             if( NOT _PAR_QUIET )
-                message( WARNING "${PROJECT_NAME} found ${_PAR_NAME} but with unsuitable version" )
+              message( WARNING "${PROJECT_NAME} requires ${_PAR_NAME} >= ${_PAR_VERSION} -- found ${${_PAR_NAME}_VERSION}" )
             endif()
-            set( ${PNAME}_FOUND 0 )
-            set( ${_PAR_NAME}_FOUND 0 )
+            set( _version_acceptable 0 )
+          endif()
         endif()
-
+      else()
+        if( NOT _PAR_QUIET )
+          message( WARNING "${PROJECT_NAME} found ${_PAR_NAME} but no version information, so cannot check if satisfies ${_PAR_VERSION}" )
+        endif()
+        set( _version_acceptable 0 )
+      endif()
+    endif()
+  endif()
+
+  if( ${_PAR_NAME}_FOUND )
+
+    if( _version_acceptable )
+      set( ${pkgUPPER}_FOUND ${${_PAR_NAME}_FOUND} )
+    else()
+      if( NOT _PAR_QUIET )
+        message( WARNING "${PROJECT_NAME} found ${_PAR_NAME} but with unsuitable version" )
+      endif()
+      set( ${pkgUPPER}_FOUND 0 )
+      set( ${_PAR_NAME}_FOUND 0 )
     endif()
 
-	### final messages
-
-	if( NOT ${_PAR_NAME}_FOUND )
-		if( _PAR_REQUIRED )
-			message( FATAL_ERROR
-              "    ${PROJECT_NAME} FAILED to find REQUIRED package ${_PAR_NAME}"
-              "    Provide location with \"-D ${PNAME}_DIR=/...\"\n"
-              "    or export ${PNAME}_DIR in environment"
-            )
-		else()
-			if( NOT _PAR_QUIET )
-				message( STATUS
-                      "${PROJECT_NAME} couldn't find package ${_PAR_NAME}.\n"
-                      "      Provide location with \"-D ${PNAME}_DIR=/...\"\n"
-                      "      or export ${PNAME}_DIR in environment" )
-			endif()
-		endif()
-	endif()
+  endif()
+
+  ### final messages
+
+  set( _failed_message
+    "\n"
+    "  ${PROJECT_NAME} FAILED to find package ${_PAR_NAME}\n"
+    "\n"
+    "    Provide location with \"-D${pkgUPPER}_PATH=/...\" or \"-D${_PAR_NAME}_DIR=/...\" \n"
+    "    You may also export environment variables ${pkgUPPER}_PATH or ${_PAR_NAME}_DIR\n"
+    "\n"
+    "  Values (note CAPITALISATION):\n"
+    "    ${pkgUPPER}_PATH should contain the path to the install prefix (as in <install>/bin <install>/lib <install>/include)\n"
+    "    ${_PAR_NAME}_DIR should be a directory containing a <package>-config.cmake file (usually <install>/share/<package>/cmake)\n"
+    "\n"
+    )
+
+  if( ${_PAR_NAME}_FOUND OR ${pkgUPPER}_FOUND )
+    if( NOT _PAR_QUIET )
+      message( STATUS "[${_PAR_NAME}] (${${_PAR_NAME}_VERSION})" )
+      foreach( var in ITEMS INCLUDE_DIR INCLUDE_DIRS DEFINITIONS LIBRARY LIBRARIES )
+        if( ${pkgUPPER}_${var} )
+          message( STATUS "   ${pkgUPPER}_${var} : [${${pkgUPPER}_${var}}]" )
+        elseif( ${_PAR_NAME}_${var} )
+          message( STATUS "   ${_PAR_NAME}_${var} : [${${_PAR_NAME}_${var}}]" )
+        endif()
+      endforeach()
+    endif()
+  else()
+    if( _PAR_REQUIRED )
+      message( FATAL_ERROR ${_failed_message} " !! ${PROJECT_NAME} requires package ${_PAR_NAME} !!" )
+    else()
+      if( NOT _PAR_QUIET )
+        message( STATUS ${_failed_message} )
+      endif()
+    endif()
+  endif()
 
 endmacro()
diff --git a/cmake/ecbuild_find_perl.cmake b/cmake/ecbuild_find_perl.cmake
index 2d0cd02..c615203 100644
--- a/cmake/ecbuild_find_perl.cmake
+++ b/cmake/ecbuild_find_perl.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
@@ -6,40 +6,68 @@
 # granted to it by virtue of its status as an intergovernmental organisation nor
 # does it submit to any jurisdiction.
 
-# OUTPUT:
+##############################################################################
+#.rst:
+#
+# ecbuild_find_perl
+# =================
+#
+# Find perl executable and its version. ::
+#
+#   ecbuild_find_perl( [ REQUIRED ] )
+#
+# Options
+# -------
+#
+# REQUIRED : optional
+#   fail if perl was not found
+#
+# Output variables
+# ----------------
+#
+# The following CMake variables are set if perl was found:
+#
+# :PERL_FOUND:          perl was found
+# :PERL_EXECUTABLE:     path to the perl executable
+# :PERL_VERSION:        perl version
+# :PERL_VERSION_STRING: perl version (same as ``PERL_VERSION``)
+#
+##############################################################################
 
 macro( ecbuild_find_perl )
 
-    # parse parameters
+  # parse parameters
 
-    set( options REQUIRED )
-    set( single_value_args )
-    set( multi_value_args  )
+  set( options REQUIRED )
+  set( single_value_args )
+  set( multi_value_args  )
 
-    cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+  cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
 
-    if(_p_UNPARSED_ARGUMENTS)
-      message(FATAL_ERROR "Unknown keywords given to ecbuild_find_perl(): \"${_p_UNPARSED_ARGUMENTS}\"")
-    endif()
+  if(_p_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "Unknown keywords given to ecbuild_find_perl(): \"${_p_UNPARSED_ARGUMENTS}\"")
+  endif()
 
-	find_package( Perl )
+  find_package( Perl )
 
-    if( NOT PERL_EXECUTABLE AND _p_REQUIRED )
-        message( FATAL_ERROR "Failed to find Perl (REQUIRED)" )
-    endif()
+  if( NOT PERL_EXECUTABLE AND _p_REQUIRED )
+    message( FATAL_ERROR "Failed to find Perl (REQUIRED)" )
+  endif()
 
-    if( PERL_EXECUTABLE )
+  if( PERL_EXECUTABLE )
 
-		execute_process( COMMAND ${PERL_EXECUTABLE} -V:version OUTPUT_VARIABLE  perl_version_output_variable  RESULT_VARIABLE  perl_version_return )
-		if( NOT perl_version_return )
-			string(REGEX REPLACE "version='([^']+)'.*" "\\1" PERL_VERSION ${perl_version_output_variable})
-		endif()
+    execute_process( COMMAND ${PERL_EXECUTABLE} -V:version OUTPUT_VARIABLE  perl_version_output_variable  RESULT_VARIABLE  perl_version_return )
+    if( NOT perl_version_return )
+      string(REGEX REPLACE "version='([^']+)'.*" "\\1" PERL_VERSION ${perl_version_output_variable})
+    endif()
+
+    # from cmake 2.8.8 onwards
+    if( NOT PERL_VERSION_STRING )
+      set( PERL_VERSION_STRING ${PERL_VERSION} )
+    endif()
 
-		# from cmake 2.8.8 onwards
-		if( NOT PERL_VERSION_STRING )
-			set( PERL_VERSION_STRING ${PERL_VERSION} )
-		endif()
+    ecbuild_debug("ecbuild_find_perl: found perl version ${PERL_VERSION_STRING} as ${PERL_EXECUTABLE}")
 
-	endif()
+  endif()
 
-endmacro( ecbuild_find_perl )
\ No newline at end of file
+endmacro( ecbuild_find_perl )
diff --git a/cmake/ecbuild_find_python.cmake b/cmake/ecbuild_find_python.cmake
index d207ee8..c001a7b 100644
--- a/cmake/ecbuild_find_python.cmake
+++ b/cmake/ecbuild_find_python.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -6,15 +6,44 @@
 # granted to it by virtue of its status as an intergovernmental organisation nor
 # does it submit to any jurisdiction.
 
-############################################################################################
-# macro to find python
+##############################################################################
+#.rst:
+#
+# ecbuild_find_python
+# ===================
+#
+# Find Python interpreter, its version and the Python libraries. ::
+#
+#   ecbuild_find_python( [ VERSION <version> ] [ REQUIRED ] )
+#
+# Options
+# -------
+#
+# VERSION : optional
+#   minimum required version
+#
+# REQUIRED : optional
+#   fail if Python was not found
+#
+# Output variables
+# ----------------
+#
+# The following CMake variables are set if perl was found:
+#
+# :PYTHONINTERP_FOUND:    Python interpreter was found
+# :PYTHONLIBS_FOUND:      Python libraries were found
+# :PYTHON_FOUND:          Python was found (both interpreter and libraries)
+# :PYTHON_VERSION_MAJOR:  major version number
+# :PYTHON_VERSION_MINOR:  minor version number
+# :PYTHON_VERSION_PATCH:  patch version number
+# :PYTHON_VERSION_STRING: Python version
+# :PYTHON_INCLUDE_DIRS:   Python include directories
+# :PYTHON_LIBRARIES:      Python libraries
+# :PYTHON_SITE_PACKAGES:  Python site packages directory
+#
+##############################################################################
 
-# OUTPUT:
-#   PYTHONINTERP_FOUND
-#   PYTHONLIBS_FOUND
-#   PYTHON_INCLUDE_DIRS
-#   PYTHON_LIBRARIES
-#   PYTHON_SITE_PACKAGES
+set( __test_python ${CMAKE_CURRENT_LIST_DIR}/pymain.c )
 
 macro( ecbuild_find_python )
 
@@ -63,8 +92,9 @@ macro( ecbuild_find_python )
     endif()
 
     if( PYTHONINTERP_FOUND )
+        ecbuild_debug( "ecbuild_find_python: Found Python interpreter version ${PYTHON_VERSION_STRING} at ${PYTHON_EXECUTABLE}" )
 
-        # find pythonn config
+        # find python config
 
         if( PYTHON_EXECUTABLE AND EXISTS ${PYTHON_EXECUTABLE}-config )
             set(PYTHON_CONFIG ${PYTHON_EXECUTABLE}-config CACHE PATH "" FORCE)
@@ -78,6 +108,7 @@ macro( ecbuild_find_python )
         # that don't reliably report linking flags that will work.
         
         if( PYTHON_CONFIG AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD" )
+            ecbuild_debug( "ecbuild_find_python: Searching for Python include directories and libraries using ${PYTHON_CONFIG}" )
             
             execute_process(COMMAND "${PYTHON_CONFIG}" --ldflags
                             OUTPUT_VARIABLE PYTHON_LIBRARIES
@@ -89,15 +120,13 @@ macro( ecbuild_find_python )
                             OUTPUT_STRIP_TRAILING_WHITESPACE
                             ERROR_QUIET)
 
-#           debug_var(PYTHON_LIBRARIES)
-#           debug_var(PYTHON_INCLUDE_DIR)
-
             string(REGEX REPLACE "^[-I]" "" PYTHON_INCLUDE_DIR "${PYTHON_INCLUDE_DIR}")
             string(REGEX REPLACE "[ ]-I" " " PYTHON_INCLUDE_DIR "${PYTHON_INCLUDE_DIR}")
             
             separate_arguments(PYTHON_INCLUDE_DIR)
 
         else() # revert to finding pythonlibs the standard way (cmake macro)
+            ecbuild_debug( "ecbuild_find_python: Searching for Python include directories and libraries using find_package(PythonLibs)" )
             
             find_package(PythonLibs)
             if( PYTHON_INCLUDE_PATH AND NOT PYTHON_INCLUDE_DIR )
@@ -106,18 +135,35 @@ macro( ecbuild_find_python )
 
         endif()
 
+        # Remove duplicate include directories
+        list(REMOVE_DUPLICATES PYTHON_INCLUDE_DIR)
+
+        # Test if we can link against the Python libraries and include Python.h
+        try_compile( PYTHON_LIBS_WORKING ${CMAKE_CURRENT_BINARY_DIR}
+                     ${__test_python}
+                     CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${PYTHON_INCLUDE_DIR}"
+                     LINK_LIBRARIES ${PYTHON_LIBRARIES} )
+
         # set output variables
 
-        find_package_handle_standard_args( PythonLibs DEFAULT_MSG PYTHON_INCLUDE_DIR PYTHON_LIBRARIES )
+        find_package_handle_standard_args( PythonLibs DEFAULT_MSG
+                                           PYTHON_INCLUDE_DIR PYTHON_LIBRARIES PYTHON_LIBS_WORKING )
+        ecbuild_debug( "ecbuild_find_python: PYTHON_INCLUDE_DIR=${PYTHON_INCLUDE_DIR}" )
+        ecbuild_debug( "ecbuild_find_python: PYTHON_LIBRARIES=${PYTHON_LIBRARIES}" )
 
         set( PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIR} )
         set( PYTHON_INCLUDE_PATH ${PYTHON_INCLUDE_DIR} )
 
-        list( REMOVE_DUPLICATES PYTHON_INCLUDE_DIRS )
+        # Also set PYTHON_FOUND and Python_FOUND for compatibility with ecbuild_add_option
+        if( PYTHONLIBS_FOUND )
+          set( PYTHON_FOUND 1 )
+          set( Python_FOUND 1 )
+        endif()
 
         # find where python site-packages are ...
 
         execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()" OUTPUT_VARIABLE PYTHON_SITE_PACKAGES OUTPUT_STRIP_TRAILING_WHITESPACE)
+        ecbuild_debug( "ecbuild_find_python: PYTHON_SITE_PACKAGES=${PYTHON_SITE_PACKAGES}" )
 
     endif()
 
diff --git a/cmake/ecbuild_generate_config_headers.cmake b/cmake/ecbuild_generate_config_headers.cmake
index abf9aac..93cbb1f 100644
--- a/cmake/ecbuild_generate_config_headers.cmake
+++ b/cmake/ecbuild_generate_config_headers.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -6,42 +6,58 @@
 # granted to it by virtue of its status as an intergovernmental organisation nor
 # does it submit to any jurisdiction.
 
-############################################################################################
-# generates the config header fot the project with the system introspection done by CMake
+##############################################################################
+#.rst:
+#
+# ecbuild_generate_config_headers
+# ===============================
+#
+# Generates the ecBuild configuration header for the project with the system
+# introspection done by CMake. ::
+#
+#   ecbuild_generate_config_headers( [ DESTINATION <directory> ] )
+#
+# Options
+# -------
+#
+# DESTINATION : optional
+#   installation destination directory
+#
+##############################################################################
 
 function( ecbuild_generate_config_headers )
 
-    # parse parameters
+  # parse parameters
 
-    set( options )
-	set( single_value_args DESTINATION )
-    set( multi_value_args  )
+  set( options )
+  set( single_value_args DESTINATION )
+  set( multi_value_args  )
 
-	cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+  cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
 
-    if(_PAR_UNPARSED_ARGUMENTS)
-      message(FATAL_ERROR "Unknown keywords given to ecbuild_generate_config_headers(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
-    endif()
+  if(_PAR_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "Unknown keywords given to ecbuild_generate_config_headers(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+  endif()
 
-	# generate list of compiler flags
+  # generate list of compiler flags
 
-	string( TOUPPER ${PROJECT_NAME} PNAME )
+  string( TOUPPER ${PROJECT_NAME} PNAME )
 
-	get_property( langs GLOBAL PROPERTY ENABLED_LANGUAGES )
+  get_property( langs GLOBAL PROPERTY ENABLED_LANGUAGES )
 
-	foreach( lang ${langs} )
-		set( EC_${lang}_FLAGS "${CMAKE_${lang}_FLAGS} ${CMAKE_${lang}_FLAGS_${CMAKE_BUILD_TYPE_CAPS}}" )
-	endforeach()
+  foreach( lang ${langs} )
+    set( EC_${lang}_FLAGS "${CMAKE_${lang}_FLAGS} ${CMAKE_${lang}_FLAGS_${CMAKE_BUILD_TYPE_CAPS}}" )
+  endforeach()
 
-	configure_file( ${ECBUILD_MACROS_DIR}/ecbuild_config.h.in  ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_ecbuild_config.h   )
+  configure_file( ${ECBUILD_MACROS_DIR}/ecbuild_config.h.in  ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_ecbuild_config.h   )
 
-	# install ecbuild configuration
+  # install ecbuild configuration
 
-	set( _destination ${INSTALL_INCLUDE_DIR} )
-	if( _p_DESTINATION )
-		set( _destination ${_p_DESTINATION} )
-	endif()
+  set( _destination ${INSTALL_INCLUDE_DIR} )
+  if( _p_DESTINATION )
+    set( _destination ${_p_DESTINATION} )
+  endif()
 
-	install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_ecbuild_config.h DESTINATION ${_destination} )
+  install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_ecbuild_config.h DESTINATION ${_destination} )
 
 endfunction( ecbuild_generate_config_headers )
diff --git a/cmake/ecbuild_generate_rpc.cmake b/cmake/ecbuild_generate_rpc.cmake
index 5bd4f76..45a00ba 100644
--- a/cmake/ecbuild_generate_rpc.cmake
+++ b/cmake/ecbuild_generate_rpc.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -6,8 +6,35 @@
 # granted to it by virtue of its status as an intergovernmental organisation nor
 # does it submit to any jurisdiction.
 
-############################################################################################
-# macro to process rpcgen files
+##############################################################################
+#.rst:
+#
+# ecbuild_generate_rpc
+# ====================
+#
+# Process RPC (Remote Procedure Call) Language files using rpcgen. ::
+#
+#   ecbuild_generate_rpc( SOURCE <file>
+#                         [ TARGET_H <file> ]
+#                         [ TARGET_C <file> ]
+#                         [ DEPENDANT <file1> [ <file2> ... ] ] )
+#
+# Options
+# -------
+#
+# SOURCE : required
+#   RPC source file
+#
+# TARGET_H : optional (required if TARGET_C not given)
+#   name of header file to be generated
+#
+# TARGET_C : optional (required if TARGET_H not given)
+#   name of source file to be generated
+#
+# DEPENDANT : optional
+#  list of files which depend on the generated source and header files
+#
+##############################################################################
 
 macro( ecbuild_generate_rpc )
 
diff --git a/cmake/ecbuild_generate_yy.cmake b/cmake/ecbuild_generate_yy.cmake
index 391bed1..5ef2dad 100644
--- a/cmake/ecbuild_generate_yy.cmake
+++ b/cmake/ecbuild_generate_yy.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -6,108 +6,188 @@
 # granted to it by virtue of its status as an intergovernmental organisation nor
 # does it submit to any jurisdiction.
 
-############################################################################################
-# macro to process lex/yacc files
+##############################################################################
+#.rst:
+#
+# ecbuild_generate_yy
+# ===================
+#
+# Process lex/yacc files. ::
+#
+#   ecbuild_generate_yy( YYPREFIX <prefix>
+#                        YACC <file>
+#                        LEX <file>
+#                        DEPENDANT <file1> [ <file2> ... ]
+#                        [ SOURCE_DIR <dir> ]
+#                        [ YACC_TARGET <file> ]
+#                        [ LEX_TARGET <file> ]
+#                        [ YACC_FLAGS <flags> ]
+#                        [ LEX_FLAGS <flags> ]
+#                        [ BISON_FLAGS <flags> ]
+#                        [ FLEX_FLAGS <flags> ] )
+#
+# Options
+# -------
+#
+# YYPREFIX : required
+#   prefix to use for file and function names
+#
+# YACC : required
+#   base name of the yacc source file (without .y extension)
+#
+# LEX : required
+#   base name of the lex source file (without .l extension)
+#
+# DEPENDANT : required
+#  list of files which depend on the generated lex and yacc target files
+#  At least one should be an existing source file (not generated itself).
+#
+# SOURCE_DIR : optional, defaults to CMAKE_CURRENT_SOURCE_DIR
+#   directory where yacc and lex source files are located
+#
+# YACC_TARGET : optional, defaults to YACC
+#   base name of the generated yacc target file (without .c extension)
+#
+# LEX_TARGET : optional, defaults to LEX
+#   base name of the generated lex target file (without .c extension)
+#
+# YACC_FLAGS : optional, defaults to -t
+#   flags to pass to yacc executable
+#
+# LEX_FLAGS : optional
+#   flags to pass to lex executable
+#
+# BISON_FLAGS : optional, defaults to -t
+#   flags to pass to bison executable
+#
+# FLEX_FLAGS : optional, defaults to -l
+#   flags to pass to flex executable
+#
+##############################################################################
 
 macro( ecbuild_generate_yy )
 
-	ecbuild_find_lexyacc() # find [ yacc|byson ] and [ lex|flex ]
+  ecbuild_find_lexyacc() # find [ yacc|byson ] and [ lex|flex ]
 
-	ecbuild_find_perl( REQUIRED )
+  ecbuild_find_perl( REQUIRED )
 
-    set( options )
-	set( single_value_args YYPREFIX YACC LEX LEX_FLAGS YACC_FLAGS FLEX_FLAGS BISON_FLAGS )
-    set( multi_value_args  DEPENDANT )
+  set( options )
+  set( single_value_args YYPREFIX YACC LEX SOURCE_DIR YACC_TARGET LEX_TARGET LEX_FLAGS YACC_FLAGS FLEX_FLAGS BISON_FLAGS )
+  set( multi_value_args  DEPENDANT )
 
-    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+  cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
 
-    if(_PAR_UNPARSED_ARGUMENTS)
-      message(FATAL_ERROR "Unknown keywords given to ecbuild_generate_yy(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
-    endif()
+  if(_PAR_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "Unknown keywords given to ecbuild_generate_yy(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+  endif()
 
-    if( NOT _PAR_YYPREFIX  )
-      message(FATAL_ERROR "The call to ecbuild_generate_yy() doesn't specify the YYPREFIX.")
-    endif()
+  if( NOT _PAR_YYPREFIX  )
+    message(FATAL_ERROR "The call to ecbuild_generate_yy() doesn't specify the YYPREFIX.")
+  endif()
 
-    if( NOT _PAR_YACC  )
-      message(FATAL_ERROR "The call to ecbuild_generate_yy() doesn't specify the YACC file.")
-    endif()
+  if( NOT _PAR_YACC  )
+    message(FATAL_ERROR "The call to ecbuild_generate_yy() doesn't specify the YACC file.")
+  endif()
 
-    if( NOT _PAR_LEX  )
-      message(FATAL_ERROR "The call to ecbuild_generate_yy() doesn't specify the LEX file.")
-    endif()
+  if( NOT _PAR_LEX  )
+    message(FATAL_ERROR "The call to ecbuild_generate_yy() doesn't specify the LEX file.")
+  endif()
 
-    if( NOT _PAR_DEPENDANT )
-      message(FATAL_ERROR "The call to ecbuild_generate_yy() doesn't specify the DEPENDANT files.")
-    endif()
+  if( NOT _PAR_DEPENDANT )
+    message(FATAL_ERROR "The call to ecbuild_generate_yy() doesn't specify the DEPENDANT files.")
+  endif()
 
-    set( BASE ${_PAR_YYPREFIX}_${_PAR_YACC} )
+  set( BASE ${_PAR_YYPREFIX}_${_PAR_YACC} )
 
-	## default flags
+  ## default flags
 
-	if( NOT _PAR_LEX_FLAGS )
-		set( _PAR_LEX_FLAGS "" )
-	endif()
+  if( NOT _PAR_LEX_FLAGS )
+    set( _PAR_LEX_FLAGS "" )
+  endif()
 
-	if( NOT _PAR_FLEX_FLAGS )
-		set( _PAR_FLEX_FLAGS "-l" )
-	endif()
+  if( NOT _PAR_FLEX_FLAGS )
+    set( _PAR_FLEX_FLAGS "-l" )
+  endif()
 
-	if( NOT _PAR_YACC_FLAGS )
-		set( _PAR_YACC_FLAGS "-t" )
-	endif()
+  if( NOT _PAR_YACC_FLAGS )
+    set( _PAR_YACC_FLAGS "-t" )
+  endif()
 
-	if( NOT _PAR_BISON_FLAGS )
-		set( _PAR_BISON_FLAGS "-t" )
-	endif()
+  if( NOT _PAR_BISON_FLAGS )
+    set( _PAR_BISON_FLAGS "-t" )
+  endif()
 
-#    debug_var( BASE )
+  if( NOT _PAR_YACC_TARGET )
+    set ( _PAR_YACC_TARGET ${_PAR_YACC} )
+  endif()
 
-    set( ${BASE}yy_tmp_target ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_YACC}.tmp.c )
-    set( ${BASE}yl_tmp_target ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_LEX}.tmp.c )
+  if ( NOT _PAR_LEX_TARGET )
+    set ( _PAR_LEX_TARGET ${_PAR_LEX} )
+  endif()
 
-    set( ${BASE}yy_target ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_YACC}.c )
-    set( ${BASE}yl_target ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_LEX}.c )
+  set( ${BASE}yy_tmp_target ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_YACC_TARGET}.tmp.c )
+  set( ${BASE}yh_tmp_target ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_YACC_TARGET}.tmp.h )
+  set( ${BASE}yl_tmp_target ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_LEX_TARGET}.tmp.c )
 
-    add_custom_target( ${_PAR_YYPREFIX}_${DEPENDANT} SOURCES ${_PAR_YACC}.y ${_PAR_LEX}.l )
+  set( ${BASE}yy_target ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_YACC_TARGET}.c )
+  set( ${BASE}yh_target ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_YACC_TARGET}.h )
+  set( ${BASE}yl_target ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_LEX_TARGET}.c )
 
-    if( BISON_FOUND )
-		bison_target( ${BASE}_parser  ${_PAR_YACC}.y  ${${BASE}yy_tmp_target} COMPILE_FLAGS "${_PAR_BISON_FLAGS}" )
-	else()
-		yacc_target( ${BASE}_parser  ${_PAR_YACC}.y   ${${BASE}yy_tmp_target} COMPILE_FLAGS "${_PAR_YACC_FLAGS}" )
-    endif()
+  if( NOT _PAR_SOURCE_DIR )
+    set( _PAR_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} )
+  endif()
 
-    if( FLEX_FOUND )
-		flex_target(  ${BASE}_scanner ${_PAR_LEX}.l   ${${BASE}yl_tmp_target} COMPILE_FLAGS "${_PAR_FLEX_FLAGS}" )
-        add_flex_bison_dependency(${BASE}_scanner ${BASE}_parser)
-    else()
-		lex_target(  ${BASE}_scanner ${_PAR_LEX}.l   ${${BASE}yl_tmp_target} COMPILE_FLAGS "${_PAR_LEX_FLAGS}" )
-        add_lex_yacc_dependency(${BASE}_scanner ${BASE}_parser)
-    endif()
+  add_custom_target( ${_PAR_YYPREFIX}_${DEPENDANT} SOURCES ${_PAR_SOURCE_DIR}/${_PAR_YACC}.y ${_PAR_SOURCE_DIR}/${_PAR_LEX}.l )
+
+  if( BISON_FOUND )
+    bison_target( ${BASE}_parser ${_PAR_SOURCE_DIR}/${_PAR_YACC}.y ${${BASE}yy_tmp_target} COMPILE_FLAGS "${_PAR_BISON_FLAGS}" )
+  else()
+    yacc_target( ${BASE}_parser ${_PAR_SOURCE_DIR}/${_PAR_YACC}.y ${${BASE}yy_tmp_target} COMPILE_FLAGS "${_PAR_YACC_FLAGS}" )
+  endif()
+
+  if( FLEX_FOUND )
+    flex_target( ${BASE}_scanner ${_PAR_SOURCE_DIR}/${_PAR_LEX}.l ${${BASE}yl_tmp_target} COMPILE_FLAGS "${_PAR_FLEX_FLAGS}" )
+    add_flex_bison_dependency(${BASE}_scanner ${BASE}_parser)
+  else()
+    lex_target( ${BASE}_scanner ${_PAR_SOURCE_DIR}/${_PAR_LEX}.l ${${BASE}yl_tmp_target} COMPILE_FLAGS "${_PAR_LEX_FLAGS}" )
+    add_lex_yacc_dependency(${BASE}_scanner ${BASE}_parser)
+  endif()
 
-    set_source_files_properties(${${BASE}yy_tmp_target} GENERATED)
-    set_source_files_properties(${${BASE}yl_tmp_target} GENERATED)
+  set_source_files_properties(${${BASE}yy_tmp_target} GENERATED)
+  set_source_files_properties(${${BASE}yh_tmp_target} GENERATED)
+  set_source_files_properties(${${BASE}yl_tmp_target} GENERATED)
 
-    add_custom_command(OUTPUT  ${${BASE}yy_target}
-                       COMMAND ${CMAKE_COMMAND} -E copy ${${BASE}yy_tmp_target} ${${BASE}yy_target}
-                       COMMAND ${PERL_EXECUTABLE} -pi -e 's/yy/${_PAR_YYPREFIX}/g' ${${BASE}yy_target}
-                       COMMAND ${PERL_EXECUTABLE} -pi -e 's/\\.tmp\\.c/\\.c/g' ${${BASE}yy_target}
-                       DEPENDS ${${BASE}yy_tmp_target}
+  add_custom_command(OUTPUT  ${${BASE}yy_target}
+    COMMAND ${CMAKE_COMMAND} -E copy ${${BASE}yy_tmp_target} ${${BASE}yy_target}
+    COMMAND ${PERL_EXECUTABLE} -pi -e 's/yy/${_PAR_YYPREFIX}/g' ${${BASE}yy_target}
+    COMMAND ${PERL_EXECUTABLE} -pi -e 's/\\.tmp\\.c/\\.c/g' ${${BASE}yy_target}
+    DEPENDS ${${BASE}yy_tmp_target}
     )
 
-    add_custom_command(OUTPUT  ${${BASE}yl_target}
-                       COMMAND ${CMAKE_COMMAND} -E copy ${${BASE}yl_tmp_target} ${${BASE}yl_target}
-                       COMMAND ${PERL_EXECUTABLE} -pi -e 's/yy/${_PAR_YYPREFIX}/g' ${${BASE}yl_target}
-                       COMMAND ${PERL_EXECUTABLE} -pi -e 's/\\.tmp\\.c/\\.c/g' ${${BASE}yl_target}
-                       DEPENDS ${${BASE}yl_tmp_target}
+  add_custom_command(OUTPUT  ${${BASE}yh_target}
+    COMMAND ${CMAKE_COMMAND} -E copy ${${BASE}yh_tmp_target} ${${BASE}yh_target}
+    COMMAND ${PERL_EXECUTABLE} -pi -e 's/yy/${_PAR_YYPREFIX}/g' ${${BASE}yh_target}
+    COMMAND ${PERL_EXECUTABLE} -pi -e 's/\\.tmp\\.h/\\.h/g' ${${BASE}yh_target}
+    DEPENDS ${${BASE}yh_tmp_target}
     )
 
-    set_source_files_properties(${${BASE}yy_target} GENERATED)
-    set_source_files_properties(${${BASE}yl_target} GENERATED)
+  add_custom_command(OUTPUT  ${${BASE}yl_target}
+    COMMAND ${CMAKE_COMMAND} -E copy ${${BASE}yl_tmp_target} ${${BASE}yl_target}
+    COMMAND ${PERL_EXECUTABLE} -pi -e 's/yy/${_PAR_YYPREFIX}/g' ${${BASE}yl_target}
+    COMMAND ${PERL_EXECUTABLE} -pi -e 's/\\.tmp\\.c/\\.c/g' ${${BASE}yl_target}
+    DEPENDS ${${BASE}yl_tmp_target}
+    )
+
+  set_source_files_properties(${${BASE}yy_target} GENERATED)
+  set_source_files_properties(${${BASE}yh_target} GENERATED)
+  set_source_files_properties(${${BASE}yl_target} GENERATED)
 
-    foreach( file ${_PAR_DEPENDANT} )
-        set_source_files_properties( ${file} PROPERTIES
-                                    OBJECT_DEPENDS "${${BASE}yy_target};${${BASE}yl_target}" )
-    endforeach()
+  foreach( file ${_PAR_DEPENDANT} )
+    if( NOT IS_ABSOLUTE ${file})
+      set( file ${_PAR_SOURCE_DIR}/${file} )
+    endif()
+    set_source_files_properties( ${file} PROPERTIES
+        OBJECT_DEPENDS "${${BASE}yy_target};${${BASE}yh_target};${${BASE}yl_target}" )
+  endforeach()
 
 endmacro( ecbuild_generate_yy )
diff --git a/cmake/ecbuild_get_cxx11_flags.cmake b/cmake/ecbuild_get_cxx11_flags.cmake
new file mode 100644
index 0000000..5bfed07
--- /dev/null
+++ b/cmake/ecbuild_get_cxx11_flags.cmake
@@ -0,0 +1,71 @@
+# (C) Copyright 1996-2015 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.
+
+##############################################################################
+#.rst:
+#
+# ecbuild_get_cxx11_flags
+# =======================
+#
+# Set the CMake variable ``${CXX11_FLAGS}`` to the C++11 flags for the current
+# compiler (based on macros from https://github.com/UCL/GreatCMakeCookOff). ::
+#
+#   ecbuild_get_cxx11_flags( CXX11_FLAGS )
+#
+##############################################################################
+
+function( ecbuild_get_cxx11_flags CXX11_FLAGS )
+
+  include(CheckCXXCompilerFlag)
+
+  # On older cmake versions + newer compilers, 
+  # the given version of CheckCXXCompilerFlags does not quite work.
+  if(CMAKE_VERSION VERSION_LESS 2.8.9)
+    macro (CHECK_CXX_COMPILER_FLAG _FLAG _RESULT)
+       set(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}")
+       set(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}")
+       CHECK_CXX_SOURCE_COMPILES("int main() { return 0;}" ${_RESULT}
+         # Some compilers do not fail with a bad flag
+         FAIL_REGEX "command line option .* is valid for .* but not for C\\\\+\\\\+" # GNU
+         FAIL_REGEX "unrecognized .*option"                     # GNU
+         FAIL_REGEX "unknown .*option"                          # Clang
+         FAIL_REGEX "ignoring unknown option"                   # MSVC
+         FAIL_REGEX "warning D9002"                             # MSVC, any lang
+         FAIL_REGEX "option.*not supported"                     # Intel
+         FAIL_REGEX "invalid argument .*option"                 # Intel
+         FAIL_REGEX "ignoring option .*argument required"       # Intel
+         FAIL_REGEX "[Uu]nknown option"                         # HP
+         FAIL_REGEX "[Ww]arning: [Oo]ption"                     # SunPro
+         FAIL_REGEX "command option .* is not recognized"       # XL
+         FAIL_REGEX "not supported in this configuration; ignored"       # AIX
+         FAIL_REGEX "File with unknown suffix passed to linker" # PGI
+         FAIL_REGEX "WARNING: unknown flag:"                    # Open64
+         )
+       set (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}")
+    endmacro ()
+  endif(CMAKE_VERSION VERSION_LESS 2.8.9)
+
+  check_cxx_compiler_flag(-std=c++11 has_std_cpp11)
+  check_cxx_compiler_flag(-std=c++0x has_std_cpp0x)
+  if(MINGW) 
+    check_cxx_compiler_flag(-std=gnu++11 has_std_gnupp11)
+    check_cxx_compiler_flag(-std=gnu++0x has_std_gnupp0x)
+  endif(MINGW)
+  if(has_std_gnupp11)
+    set(${CXX11_FLAGS} "-std=gnu++11" PARENT_SCOPE)
+  elseif(has_std_gnupp0x)
+    set(${CXX11_FLAGS} "-std=gnu++0x" PARENT_SCOPE)
+  elseif(has_std_cpp11) 
+    set(${CXX11_FLAGS} "-std=c++11" PARENT_SCOPE)
+  elseif(has_std_cpp0x)
+    set(${CXX11_FLAGS} "-std=c++0x" PARENT_SCOPE)
+  else()
+    message(FATAL ERROR "Could not detect C++11 flags")
+  endif(has_std_gnupp11)
+
+endfunction()
diff --git a/cmake/ecbuild_get_date.cmake b/cmake/ecbuild_get_date.cmake
index afe3d09..ec308a3 100644
--- a/cmake/ecbuild_get_date.cmake
+++ b/cmake/ecbuild_get_date.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
@@ -6,8 +6,18 @@
 # granted to it by virtue of its status as an intergovernmental organisation nor
 # does it submit to any jurisdiction.
 
-############################################################################################
-# get date macro
+##############################################################################
+#.rst:
+#
+# ecbuild_get_date
+# ================
+#
+# Set the CMake variable ``${DATE}`` to the current date in the form
+# YYYY.mm.DD. ::
+#
+#   ecbuild_get_date( DATE )
+#
+##############################################################################
 
 macro(ecbuild_get_date RESULT)
     if(UNIX)
@@ -18,8 +28,18 @@ macro(ecbuild_get_date RESULT)
     endif()
 endmacro(ecbuild_get_date)
 
-############################################################################################
-# get timestamp
+##############################################################################
+#.rst:
+#
+# ecbuild_get_timestamp
+# =====================
+#
+# Set the CMake variable ``${TIMESTAMP}`` to the current date and time in the
+# form YYYYmmDDHHMMSS. ::
+#
+#   ecbuild_get_timestamp( TIMESTAMP )
+#
+##############################################################################
 
 macro(ecbuild_get_timestamp RESULT)
     if(UNIX)
diff --git a/cmake/ecbuild_get_resources.cmake b/cmake/ecbuild_get_resources.cmake
index bf48ecf..da824d9 100644
--- a/cmake/ecbuild_get_resources.cmake
+++ b/cmake/ecbuild_get_resources.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
diff --git a/cmake/ecbuild_get_test_data.cmake b/cmake/ecbuild_get_test_data.cmake
index d50ed6c..8106c65 100644
--- a/cmake/ecbuild_get_test_data.cmake
+++ b/cmake/ecbuild_get_test_data.cmake
@@ -1,76 +1,129 @@
-# (C) Copyright 1996-2014 ECMWF.
-# 
+# (C) Copyright 1996-2015 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 
+# 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.
 
 ##############################################################################
+
 # function for downloading test data
 
 function( _download_test_data _p_NAME _p_DIRNAME )
 
-    # TODO: make that 'at ecmwf'
-    #if(1)
-    #unset(ENV{no_proxy})
-    #unset(ENV{NO_PROXY})
-    #set(ENV{http_proxy} "http://proxy.ecmwf.int:3333")
-    #endif()
+  # TODO: make that 'at ecmwf'
+  #if(1)
+  #unset(ENV{no_proxy})
+  #unset(ENV{NO_PROXY})
+  #set(ENV{http_proxy} "http://proxy.ecmwf.int:3333")
+  #endif()
 
-    find_program( CURL_PROGRAM curl )
+  find_program( CURL_PROGRAM curl )
 
-    if( CURL_PROGRAM )
+  if( CURL_PROGRAM )
 
-		add_custom_command( OUTPUT ${_p_NAME}
-			COMMENT "(curl) downloading http://download.ecmwf.org/test-data/${_p_DIRNAME}/${_p_NAME}"
-			COMMAND ${CURL_PROGRAM} --silent --show-error --fail --output ${_p_NAME} http://download.ecmwf.org/test-data/${_p_DIRNAME}/${_p_NAME} )
-
-    else()
+    add_custom_command( OUTPUT ${_p_NAME}
+      COMMENT "(curl) downloading http://download.ecmwf.org/test-data/${_p_DIRNAME}/${_p_NAME}"
+      COMMAND ${CURL_PROGRAM} --silent --show-error --fail --output ${_p_NAME}
+              http://download.ecmwf.org/test-data/${_p_DIRNAME}/${_p_NAME} )
 
-        find_program( WGET_PROGRAM wget )
+  else()
 
-        if( WGET_PROGRAM )
+    find_program( WGET_PROGRAM wget )
 
-				 add_custom_command( OUTPUT ${_p_NAME}
-						COMMENT "(wget) downloading http://download.ecmwf.org/test-data/${_p_DIRNAME}/${_p_NAME}"
-						COMMAND ${WGET_PROGRAM} -nv -O ${_p_NAME} http://download.ecmwf.org/test-data/${_p_DIRNAME}/${_p_NAME} )
+    if( WGET_PROGRAM )
 
-				else()
+      add_custom_command( OUTPUT ${_p_NAME}
+        COMMENT "(wget) downloading http://download.ecmwf.org/test-data/${_p_DIRNAME}/${_p_NAME}"
+        COMMAND ${WGET_PROGRAM} -nv -O ${_p_NAME}
+                http://download.ecmwf.org/test-data/${_p_DIRNAME}/${_p_NAME} )
 
-					if( WARNING_CANNOT_DOWNLOAD_TEST_DATA )
-						message( WARNING "Couldn't find curl neither wget -- cannot download test data from server.\nPlease obtain the test data by other means and pleace it in the build directory." )
-						set( WARNING_CANNOT_DOWNLOAD_TEST_DATA 1 CACHE INTERNAL "Couldn't find curl neither wget -- cannot download test data from server" )
-						mark_as_advanced( WARNING_CANNOT_DOWNLOAD_TEST_DATA )
-					endif()
+    else()
 
-        endif()
+      if( WARNING_CANNOT_DOWNLOAD_TEST_DATA )
+        message( WARNING "Couldn't find curl neither wget -- cannot download test data from server.\nPlease obtain the test data by other means and pleace it in the build directory." )
+        set( WARNING_CANNOT_DOWNLOAD_TEST_DATA 1 CACHE INTERNAL "Couldn't find curl neither wget -- cannot download test data from server" )
+        mark_as_advanced( WARNING_CANNOT_DOWNLOAD_TEST_DATA )
+      endif()
 
     endif()
 
-endfunction()
+  endif()
 
+endfunction()
 
 ##############################################################################
-# function for getting test data
+#.rst:
+#
+# ecbuild_get_test_data
+# =====================
+#
+# Download a test data set at build time. ::
+#
+#   ecbuild_get_test_data( NAME <name>
+#                          [ TARGET <target> ]
+#                          [ DIRNAME <dir> ]
+#                          [ MD5 <hash> ]
+#                          [ EXTRACT ]
+#                          [ NOCHECK ] )
+#
+# curl or wget is required (curl is preferred if available).
+#
+# Options
+# -------
+#
+# NAME : required
+#   name of the test data file
 #
-# examples:
+# TARGET : optional, defaults to test_data_<name>
+#   CMake target name
 #
-## no check done
-#    ecbuild_get_test_data( NAME msl.grib NOCHECK )
+# DIRNAME : optional, defaults to <project>/<relative path to current dir>
+#   directory in which the test data resides
 #
-## checksum agains remote md5 file
-#    ecbuild_get_test_data( NAME msl.grib )
+# MD5 : optional, ignored if NOCHECK is given
+#   md5 checksum of the data set to verify. If not given and NOCHECK is *not*
+#   set, download the md5 checksum and verify
 #
-## checksum agains local md5
-#    ecbuild_get_test_data( NAME msl.grib MD5 f69ca0929d1122c7878d19f32401abe9 )
+# EXTRACT : optional
+#   extract the downloaded file (supported archives: tar, zip, tar.gz, tar.bz2)
 #
-## (DEPRECATED) checksum agains local sha1
-#    ecbuild_get_test_data( NAME msl.grib SHA1 5a8e8c57c510b64e31863ca47cfc3b65971089d9 )
+# NOCHECK : optional
+#   do not verify the md5 checksum of the data file
+#
+# Usage
+# -----
+#
+# Download test data from ``http://download.ecmwf.org/test-data/<DIRNAME>/<NAME>``
+#
+# If the ``DIRNAME`` argument is not given, the project name followed by the
+# relative path from the root directory to the current directory is used.
+#
+# By default, the downloaded file is verified against an md5 checksum, either
+# given as the ``MD5`` argument or downloaded from the server otherwise. Use
+# the argument ``NOCHECK`` to disable this check.
+#
+# Examples
+# --------
+#
+# Do not verify the checksum: ::
+#
+#   ecbuild_get_test_data( NAME msl.grib NOCHECK )
+#
+# Checksum agains remote md5 file: ::
+#
+#   ecbuild_get_test_data( NAME msl.grib )
+#
+# Checksum agains local md5: ::
+#
+#   ecbuild_get_test_data( NAME msl.grib MD5 f69ca0929d1122c7878d19f32401abe9 )
+#
+##############################################################################
 
 function( ecbuild_get_test_data )
 
-    set( options NOCHECK )
+    set( options NOCHECK EXTRACT )
     set( single_value_args TARGET URL NAME DIRNAME MD5 SHA1)
     set( multi_value_args  )
 
@@ -113,38 +166,38 @@ function( ecbuild_get_test_data )
 
     if( NOT _p_NOCHECK )
 
-        find_program( MD5SUM md5sum )
-
-        if( MD5SUM AND NOT _p_MD5 AND NOT _p_SHA1) # use remote md5
+        if( NOT _p_MD5 AND NOT _p_SHA1) # use remote md5
 
 #            message( STATUS " ---  getting MD5 sum " )
 
             add_custom_command( OUTPUT ${_p_NAME}.localmd5
-                                COMMAND ${MD5SUM} -t ${_p_NAME} > ${_p_NAME}.localmd5
+                                COMMAND ${CMAKE_COMMAND} -E md5sum ${_p_NAME} > ${_p_NAME}.localmd5
                                 DEPENDS ${_p_NAME} )
 
             _download_test_data( ${_p_NAME}.md5 ${_p_DIRNAME} )
 
-            add_custom_command(	OUTPUT ${_p_NAME}.ok
-                                COMMAND diff ${_p_NAME}.md5 ${_p_NAME}.localmd5 && touch ${_p_NAME}.ok
+            add_custom_command( OUTPUT ${_p_NAME}.ok
+                                COMMAND ${CMAKE_COMMAND} -E compare_files ${_p_NAME}.md5 ${_p_NAME}.localmd5 &&
+                                        ${CMAKE_COMMAND} -E touch ${_p_NAME}.ok
                                 DEPENDS ${_p_NAME}.localmd5 ${_p_NAME}.md5 )
 
             list( APPEND _deps  ${_p_NAME}.localmd5 ${_p_NAME}.ok )
 
         endif()
 
-        if( MD5SUM AND _p_MD5 )
+        if( _p_MD5 )
 
 #            message( STATUS " ---  computing MD5 sum [${_p_MD5}]" )
 
             add_custom_command( OUTPUT ${_p_NAME}.localmd5
-                                COMMAND ${MD5SUM} -t ${_p_NAME} > ${_p_NAME}.localmd5
+                                COMMAND ${CMAKE_COMMAND} -E md5sum ${_p_NAME} > ${_p_NAME}.localmd5
                                 DEPENDS ${_p_NAME} )
 
             configure_file( "${ECBUILD_MACROS_DIR}/md5.in" ${_p_NAME}.md5 @ONLY )
 
             add_custom_command( OUTPUT ${_p_NAME}.ok
-                                COMMAND diff ${_p_NAME}.md5 ${_p_NAME}.localmd5 && touch ${_p_NAME}.ok
+                                COMMAND ${CMAKE_COMMAND} -E compare_files ${_p_NAME}.md5 ${_p_NAME}.localmd5 &&
+                                        ${CMAKE_COMMAND} -E touch ${_p_NAME}.ok
                                 DEPENDS ${_p_NAME}.localmd5 )
 
             list( APPEND _deps ${_p_NAME}.localmd5 ${_p_NAME}.ok )
@@ -174,23 +227,86 @@ function( ecbuild_get_test_data )
 
     add_custom_target( ${_p_TARGET} DEPENDS ${_deps} )
 
+    if( _p_EXTRACT )
+      ecbuild_debug("ecbuild_get_test_data: extracting ${_p_NAME} (post-build for target ${_p_TARGET}")
+      add_custom_command( TARGET ${_p_TARGET} POST_BUILD
+                          COMMAND ${CMAKE_COMMAND} -E tar xv ${_p_NAME} )
+    endif()
+
 endfunction(ecbuild_get_test_data)
 
 ##############################################################################
-# function for getting test data
+#.rst:
+#
+# ecbuild_get_test_multidata
+# ==========================
+#
+# Download multiple test data sets at build time. ::
+#
+#   ecbuild_get_test_multidata( NAMES <name1> [ <name2> ... ]
+#                               TARGET <target>
+#                               [ DIRNAME <dir> ]
+#                               [ EXTRACT ]
+#                               [ NOCHECK ] )
+#
+# curl or wget is required (curl is preferred if available).
+#
+# Options
+# -------
+#
+# NAMES : required
+#   list of names of the test data files
+#
+# TARGET : optional
+#   CMake target name
+#
+# DIRNAME : optional, defaults to <project>/<relative path to current dir>
+#   directory in which the test data resides
+#
+# EXTRACT : optional
+#   extract downloaded files (supported archives: tar, zip, tar.gz, tar.bz2)
+#
+# NOCHECK : optional
+#   do not verify the md5 checksum of the data file
+#
+# Usage
+# -----
 #
-# examples:
+# Download test data from ``http://download.ecmwf.org/test-data/<DIRNAME>``
+# for each name given in the list of ``NAMES``. Each name may contain a
+# relative path, which is appended to ``DIRNAME`` and may be followed by an
+# md5 checksum, separated with a ``:`` (the name must not contain spaces).
 #
-## no check done
-#    ecbuild_get_test_multidata( TARGET get_foobar_data NAMES foo.grib bar.grib DIRNAME test/data/dir NOCHECK )
+# If the ``DIRNAME`` argument is not given, the project name followed by the
+# relative path from the root directory to the current directory is used.
 #
-## check for remote md5
-#    ecbuild_get_test_multidata( TARGET get_foobar_data NAMES foo.grib bar.grib DIRNAME test/data/dir )
+# By default, each downloaded file is verified against an md5 checksum, either
+# given as part of the name as described above or a remote checksum downloaded
+# from the server. Use the argument ``NOCHECK`` to disable this check.
 #
+# Examples
+# --------
+#
+# Do not verify checksums: ::
+#
+#   ecbuild_get_test_multidata( TARGET get_grib_data NAMES foo.grib bar.grib
+#                               DIRNAME test/data/dir NOCHECK )
+#
+# Checksums agains remote md5 file: ::
+#
+#   ecbuild_get_test_multidata( TARGET get_grib_data NAMES foo.grib bar.grib
+#                               DIRNAME test/data/dir )
+#
+# Checksum agains local md5: ::
+#
+#   ecbuild_get_test_multidata( TARGET get_grib_data DIRNAME test/data/dir
+#                               NAMES msl.grib:f69ca0929d1122c7878d19f32401abe9 )
+#
+##############################################################################
 
 function( ecbuild_get_test_multidata )
 
-    set( options NOCHECK )
+    set( options EXTRACT NOCHECK )
     set( single_value_args TARGET DIRNAME )
     set( multi_value_args  NAMES )
 
@@ -214,6 +330,10 @@ function( ecbuild_get_test_multidata )
 #    debug_var( _p_NAME )
 #    debug_var( _p_DIRNAME )
 
+    if( _p_EXTRACT )
+        set( _extract EXTRACT )
+    endif()
+
     if( _p_NOCHECK )
         set( _nocheck NOCHECK )
     endif()
@@ -238,12 +358,11 @@ endfunction()\n\n" )
         get_filename_component( _dir  ${_f} PATH )
 
         list( APPEND _path_comps ${_p_DIRNAME} ${_dir} )
-
         join( _path_comps "/" _dirname )
-
         if( _dirname )
             set( _dirname DIRNAME ${_dirname} )
         endif()
+        unset( _path_comps )
 
         string( REPLACE "." "_" _name "${_file}" )
         string( REGEX MATCH ":.*"  _md5  "${_d}" )
@@ -259,13 +378,19 @@ endfunction()\n\n" )
         #debug_var(_name)
         #debug_var(_md5)
 
-        ecbuild_get_test_data( TARGET __get_data_${_p_TARGET}_${_name} NAME ${_file} ${_dirname} ${_md5} ${_nocheck} )
+        ecbuild_get_test_data(
+            TARGET __get_data_${_p_TARGET}_${_name}
+            NAME ${_file} ${_dirname} ${_md5} ${_extract} ${_nocheck} )
 
-        file( APPEND ${_script} "exec_check( ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target __get_data_${_p_TARGET}_${_name} )\n" )
+        # The option /fast disables dependency checking on a target, see
+        # https://cmake.org/Wiki/CMake_FAQ#Is_there_a_way_to_skip_checking_of_dependent_libraries_when_compiling.3F
+        file( APPEND ${_script}
+            "exec_check( \"${CMAKE_COMMAND}\" --build \"${CMAKE_BINARY_DIR}\" --target __get_data_${_p_TARGET}_${_name}/fast )\n" )
 
     endforeach()
 
-    add_test(  NAME ${_p_TARGET} COMMAND ${CMAKE_COMMAND} -P ${_script} )
+    if( ENABLE_TESTS )
+      add_test(  NAME ${_p_TARGET} COMMAND ${CMAKE_COMMAND} -P ${_script} )
+    endif()
 
 endfunction(ecbuild_get_test_multidata)
-
diff --git a/cmake/ecbuild_git.cmake b/cmake/ecbuild_git.cmake
new file mode 100644
index 0000000..42124db
--- /dev/null
+++ b/cmake/ecbuild_git.cmake
@@ -0,0 +1,307 @@
+# (C) Copyright 1996-2015 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.
+
+set( ECBUILD_GIT  ON  CACHE BOOL "Turn on/off ecbuild_git() function" )
+
+if( ECBUILD_GIT )
+
+  find_package(Git)
+
+  set( ECMWF_USER $ENV{USER} CACHE STRING "ECMWF git user" )
+  set( ECMWF_GIT  SSH        CACHE STRING "ECMWF git protocol" )
+
+  set( ECMWF_GIT_SSH   "ssh://git@software.ecmwf.int:7999"                  CACHE INTERNAL "ECMWF ssh address" )
+  set( ECMWF_GIT_HTTPS "https://${ECMWF_USER}@software.ecmwf.int/stash/scm" CACHE INTERNAL "ECMWF https address" )
+
+  if( ECMWF_GIT MATCHES "[Ss][Ss][Hh]" )
+    set( ECMWF_GIT_ADDRESS ${ECMWF_GIT_SSH} CACHE INTERNAL "" )
+  else()
+    set( ECMWF_GIT_ADDRESS ${ECMWF_GIT_HTTPS} CACHE INTERNAL "" )
+  endif()
+
+endif()
+
+##############################################################################
+#.rst:
+#
+# ecbuild_git
+# ===========
+#
+# Manages an external Git repository. ::
+#
+#   ecbuild_git( PROJECT <name>
+#                DIR <directory>
+#                URL <giturl>
+#                [ BRANCH <gitbranch> | TAG <gittag> ]
+#                [ UPDATE | NOREMOTE ] )
+#                [ MANUAL ] )
+#
+# Options
+# -------
+#
+# PROJECT : required
+#   project name for the Git repository to be managed
+#
+# DIR : required
+#   directory to clone the repository into (can be relative)
+#
+# URL : required
+#   Git URL of the remote repository to clone (see ``git help clone``)
+#
+# BRANCH : optional, cannot be combined with TAG
+#   Git branch to check out
+#
+# TAG : optional, cannot be combined with BRANCH
+#   Git tag or commit id to check out
+#
+# UPDATE : optional, requires BRANCH, cannot be combined with NOREMOTE
+#   Create a CMake target update to fetch changes from the remote repository
+#
+# NOREMOTE : optional, cannot be combined with UPDATE
+#   Do not fetch changes from the remote repository
+#
+# MANUAL : optional
+#   Do not automatically switch branches or tags
+#
+##############################################################################
+
+macro( ecbuild_git )
+
+  set( options UPDATE NOREMOTE MANUAL )
+  set( single_value_args PROJECT DIR URL TAG BRANCH )
+  set( multi_value_args )
+  cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}" ${_FIRST_ARG} ${ARGN} )
+
+  if( DEFINED _PAR_BRANCH AND DEFINED _PAR_TAG )
+    message( FATAL_ERROR "Cannot defined both BRANCH and TAG in macro ecbuild_git" )
+  endif()
+
+  if( _PAR_UPDATE AND _PAR_NOREMOTE )
+    message( FATAL_ERROR "Cannot pass both NOREMOTE and UPDATE in macro ecbuild_git" )
+  endif()
+
+  if(_PAR_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "Unknown keywords given to ecbuild_git(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+  endif()
+
+  if( ECBUILD_GIT )
+
+    set( _needs_switch 0 )
+
+    get_filename_component( ABS_PAR_DIR "${_PAR_DIR}" ABSOLUTE )
+    get_filename_component( PARENT_DIR  "${_PAR_DIR}/.." ABSOLUTE )
+
+    ### clone if no directory
+
+    if( NOT EXISTS "${_PAR_DIR}" )
+
+      message( STATUS "Cloning ${_PAR_PROJECT} from ${_PAR_URL} into ${_PAR_DIR}...")
+      execute_process(
+        COMMAND ${GIT_EXECUTABLE} "clone" ${_PAR_URL} ${clone_args} ${_PAR_DIR} "-q"
+        RESULT_VARIABLE nok ERROR_VARIABLE error
+        WORKING_DIRECTORY "${PARENT_DIR}")
+      if(nok)
+        message(FATAL_ERROR "${_PAR_DIR} git clone failed: ${error}\n")
+      endif()
+      message( STATUS "${_PAR_DIR} retrieved.")
+      set( _needs_switch 1 )
+
+    endif()
+
+    ### check current tag and sha1
+
+    if( IS_DIRECTORY "${_PAR_DIR}/.git" )
+
+      execute_process( COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
+                       OUTPUT_VARIABLE _sha1 RESULT_VARIABLE nok ERROR_VARIABLE error
+                       OUTPUT_STRIP_TRAILING_WHITESPACE
+                       WORKING_DIRECTORY "${ABS_PAR_DIR}" )
+      if(nok)
+        message(STATUS "git rev-parse HEAD on ${_PAR_DIR} failed:\n ${error}")
+      endif()
+
+      execute_process( COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
+                       OUTPUT_VARIABLE _current_branch RESULT_VARIABLE nok ERROR_VARIABLE error
+                       OUTPUT_STRIP_TRAILING_WHITESPACE
+                       WORKING_DIRECTORY "${ABS_PAR_DIR}" )
+      if( nok OR _current_branch STREQUAL "" )
+        message(STATUS "git rev-parse --abbrev-ref HEAD on ${_PAR_DIR} failed:\n ${error}")
+      endif()
+
+      #message(STATUS "git describe --exact-match --abbrev=0 @ ${ABS_PAR_DIR}")
+      execute_process( COMMAND ${GIT_EXECUTABLE} describe --exact-match --abbrev=0
+                       OUTPUT_VARIABLE _current_tag RESULT_VARIABLE nok ERROR_VARIABLE error
+                       OUTPUT_STRIP_TRAILING_WHITESPACE  ERROR_STRIP_TRAILING_WHITESPACE
+                       WORKING_DIRECTORY "${ABS_PAR_DIR}" )
+
+      if( error MATCHES "no tag exactly matches" OR error MATCHES "No names found" )
+        unset( _current_tag )
+      else()
+        if( nok )
+          message(STATUS "git describe --exact-match --abbrev=0 on ${_PAR_DIR} failed:\n ${error}")
+        endif()
+      endif()
+
+      if( NOT _current_tag ) # try nother method
+        #message(STATUS "git name-rev --tags --name-only @ ${ABS_PAR_DIR}")
+        execute_process( COMMAND ${GIT_EXECUTABLE} name-rev --tags --name-only ${_sha1}
+                         OUTPUT_VARIABLE _current_tag RESULT_VARIABLE nok ERROR_VARIABLE error
+                         OUTPUT_STRIP_TRAILING_WHITESPACE
+                         WORKING_DIRECTORY "${ABS_PAR_DIR}" )
+        if( nok OR _current_tag STREQUAL "" )
+          message(STATUS "git name-rev --tags --name-only on ${_PAR_DIR} failed:\n ${error}")
+        endif()
+      endif()
+
+    endif()
+
+    if( NOT _PAR_MANUAL AND DEFINED _PAR_BRANCH AND NOT "${_current_branch}" STREQUAL "${_PAR_BRANCH}" )
+      set( _needs_switch 1 )
+    endif()
+
+    if( NOT _PAR_MANUAL AND DEFINED _PAR_TAG AND NOT "${_current_tag}" STREQUAL "${_PAR_TAG}" )
+      set( _needs_switch 1 )
+    endif()
+
+    if( DEFINED _PAR_BRANCH AND _PAR_UPDATE AND NOT _PAR_NOREMOTE )
+
+      add_custom_target( git_update_${_PAR_PROJECT}
+                         COMMAND "${GIT_EXECUTABLE}" pull -q
+                         WORKING_DIRECTORY "${ABS_PAR_DIR}"
+                         COMMENT "git pull of branch ${_PAR_BRANCH} on ${_PAR_DIR}" )
+
+      set( git_update_targets "git_update_${_PAR_PROJECT};${git_update_targets}" )
+
+    endif()
+
+    ### updates
+
+    if( _needs_switch AND IS_DIRECTORY "${_PAR_DIR}/.git" )
+
+      # debug_here( ABS_PAR_DIR )
+      # debug_here( _sha1 )
+      # debug_here( _current_branch )
+      # debug_here( _current_tag )
+      # debug_here( _PAR_TAG )
+      # debug_here( _PAR_BRANCH )
+      # debug_here( _needs_switch )
+      # debug_here( _PAR_UPDATE )
+
+      if( DEFINED _PAR_BRANCH )
+        set ( _gitref ${_PAR_BRANCH} )
+        message(STATUS "Updating ${_PAR_PROJECT} to head of BRANCH ${_PAR_BRANCH}...")
+      else()
+        message(STATUS "Updating ${_PAR_PROJECT} to TAG ${_PAR_TAG}...")
+        set ( _gitref ${_PAR_TAG} )
+      endif()
+
+      # fetching latest tags and branches
+
+      if( NOT _PAR_NOREMOTE )
+
+        message(STATUS "git fetch --all @ ${ABS_PAR_DIR}")
+        execute_process( COMMAND "${GIT_EXECUTABLE}" fetch --all -q
+                         RESULT_VARIABLE nok ERROR_VARIABLE error
+                         WORKING_DIRECTORY "${ABS_PAR_DIR}")
+        if(nok)
+          message(STATUS "git fetch --all in ${_PAR_DIR} failed:\n ${error}")
+        endif()
+
+        message(STATUS "git fetch --all --tags @ ${ABS_PAR_DIR}")
+        execute_process( COMMAND "${GIT_EXECUTABLE}" fetch --all --tags -q
+                         RESULT_VARIABLE nok ERROR_VARIABLE error
+                         WORKING_DIRECTORY "${ABS_PAR_DIR}")
+        if(nok)
+          message(STATUS "git fetch --all --tags in ${_PAR_DIR} failed:\n ${error}")
+        endif()
+
+      else()
+        message(STATUS "${_PAR_DIR} marked NOREMOTE : Skipping git fetch")
+      endif()
+
+      # checking out gitref
+
+      message(STATUS "git checkout ${_gitref} @ ${ABS_PAR_DIR}")
+      execute_process( COMMAND "${GIT_EXECUTABLE}" checkout -q "${_gitref}"
+                       RESULT_VARIABLE nok ERROR_VARIABLE error
+                       WORKING_DIRECTORY "${ABS_PAR_DIR}")
+      if(nok)
+        message(FATAL_ERROR "git checkout ${_gitref} on ${_PAR_DIR} failed:\n ${error}")
+      endif()
+
+      if( DEFINED _PAR_BRANCH AND _PAR_UPDATE ) #############################################################################
+
+        execute_process( COMMAND "${GIT_EXECUTABLE}" pull -q
+                         RESULT_VARIABLE nok ERROR_VARIABLE error
+                         WORKING_DIRECTORY "${ABS_PAR_DIR}")
+        if(nok)
+          message(STATUS "git pull of branch ${_PAR_BRANCH} on ${_PAR_DIR} failed:\n ${error}")
+        endif()
+
+      endif() ####################################################################################
+
+    endif( _needs_switch AND IS_DIRECTORY "${_PAR_DIR}/.git" )
+
+  endif( ECBUILD_GIT )
+
+endmacro()
+
+##############################################################################
+#.rst:
+#
+# ecbuild_stash
+# =============
+#
+# Manages an external Git repository on ECMWF Stash. ::
+#
+#   ecbuild_stash( PROJECT <name>
+#                  DIR <directory>
+#                  STASH <repository>
+#                  [ BRANCH <gitbranch> | TAG <gittag> ]
+#                  [ UPDATE | NOREMOTE ] )
+#                  [ MANUAL ] )
+#
+# Options
+# -------
+#
+# PROJECT : required
+#   project name for the Git repository to be managed
+#
+# DIR : required
+#   directory to clone the repository into (can be relative)
+#
+# STASH : required
+#   Stash repository in the form <project>/<repository>
+#
+# BRANCH : optional, cannot be combined with TAG
+#   Git branch to check out
+#
+# TAG : optional, cannot be combined with BRANCH
+#   Git tag or commit id to check out
+#
+# UPDATE : optional, requires BRANCH, cannot be combined with NOREMOTE
+#   Create a CMake target update to fetch changes from the remote repository
+#
+# NOREMOTE : optional, cannot be combined with UPDATE
+#   Do not fetch changes from the remote repository
+#
+# MANUAL : optional
+#   Do not automatically switch branches or tags
+#
+##############################################################################
+
+macro( ecmwf_stash )
+
+  set( options )
+  set( single_value_args STASH )
+  set( multi_value_args )
+  cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}" ${_FIRST_ARG} ${ARGN} )
+
+  ecbuild_git( URL "${ECMWF_GIT_ADDRESS}/${_PAR_STASH}.git" ${_PAR_UNPARSED_ARGUMENTS} )
+
+endmacro()
diff --git a/cmake/ecbuild_install_package.cmake b/cmake/ecbuild_install_package.cmake
deleted file mode 100644
index dec046f..0000000
--- a/cmake/ecbuild_install_package.cmake
+++ /dev/null
@@ -1,286 +0,0 @@
-# (C) Copyright 1996-2014 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.
-
-###############################################################################
-
-macro( ecbuild_install_project )
-
-
-    set( options )
-    set( single_value_args NAME DESCRIPTION )
-    set( multi_value_args  COMPONENTS )
-
-    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
-
-    if(_PAR_UNPARSED_ARGUMENTS)
-      message(FATAL_ERROR "Unknown keywords given to ecbuild_install_project(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
-    endif()
-
-    if( NOT _PAR_NAME  )
-      message(FATAL_ERROR "The call to ecbuild_install_project() doesn't specify the NAME.")
-    endif()
-
-    ### PACKAGING ########################################################
-
-    string( TOUPPER ${PROJECT_NAME} PNAME )
-    string( TOLOWER ${PROJECT_NAME} LNAME )
-    
-    # components
-
-    #    if( DEFINED _PAR_COMPONENTS )
-    #        set(CPACK_COMPONENTS_ALL   "${_PAR_COMPONENTS}")
-    #    else()
-    #        set(CPACK_COMPONENTS_ALL   "${PROJECT_NAME}")
-    #    endif()
-    
-    # name, version, etc ...
-
-    set(CPACK_PACKAGE_NAME      "${_PAR_NAME}")
-    set(CPACK_PACKAGE_VERSION   "${${PNAME}_VERSION_STR}")
-
-    set(CPACK_PACKAGE_FILE_NAME   "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
-
-    set(CPACK_DEBIAN_PACKAGE_MAINTAINER "ECMWF") # required for DEB
-
-    #    set(CPACK_ARCHIVE_COMPONENT_INSTALL "ON")
-    #    set(CPACK_RPM_COMPONENT_INSTALL "ON")
-
-    #    set(CPACK_GENERATOR        "TGZ;RPM;DEB")
-    set(CPACK_GENERATOR        "TGZ")
-    set(CPACK_SOURCE_GENERATOR "TGZ")
-    set(CPACK_PACKAGE_VENDOR   "ECMWF")
-
-    # short description
-
-    if( _PAR_DESCRIPTION )
-        set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${_PAR_DESCRIPTION}" )
-    else()
-        set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${_PAR_NAME} misses a description" )
-    endif()
-
-    # long description
-
-    if( EXISTS ${PROJECT_SOURCE_DIR}/INSTALL )
-        set(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/INSTALL")
-    endif()
-	if( EXISTS ${PROJECT_SOURCE_DIR}/LICENSE )
-        set(CPACK_RESOURCE_FILE_LICENSE    "${PROJECT_SOURCE_DIR}/LICENSE")
-    endif()
-
-    # set(CPACK_PACKAGE_EXECUTABLES ${ECBUILD_ALL_EXES})
-
-	list( APPEND CPACK_SOURCE_INSTALLED_DIRECTORIES
-	   "${PROJECT_SOURCE_DIR}" "."
-	   "${ECBUILD_MACROS_DIR}" "cmake/" )
-
-	# what to pack and not
-
-    set(CPACK_SOURCE_IGNORE_FILES
-        /build/
-        /\\\\.git/
-        /\\\\.svn/
-        CMakeLists.txt.user
-        \\\\.swp$
-        p4config
-    )
-
-    # skip the files that were declared as DONT_PACK
-
-    list( APPEND CPACK_SOURCE_IGNORE_FILES ${ECBUILD_DONT_PACK_FILES} )
-
-    # cpack config file
-
-    # set(CPACK_INSTALL_CMAKE_PROJECTS "${${PROJECT_NAME}_BINARY_DIR}" "${PROJECT_NAME}" "${CPACK_COMPONENTS_ALL}" "*" )
-
-    include( CPack )
-
-    ### EXPORTS ########################################################
- 
-
-    foreach( _tpl ${${PNAME}_TPLS} )
-        string( TOUPPER ${_tpl} _TPL )
-
-        if( ${_tpl}_INCLUDE_DIRS )
-            list( APPEND ${PNAME}_TPL_INCLUDE_DIRS ${${_tpl}_INCLUDE_DIRS} )
-        elseif( ${_tpl}_INCLUDE_DIR )
-            list( APPEND ${PNAME}_TPL_INCLUDE_DIRS ${${_tpl}_INCLUDE_DIR} )
-        elseif( ${_TPL}_INCLUDE_DIRS )
-            list( APPEND ${PNAME}_TPL_INCLUDE_DIRS ${${_TPL}_INCLUDE_DIRS} )
-        elseif( ${_TPL}_INCLUDE_DIR )
-            list( APPEND ${PNAME}_TPL_INCLUDE_DIRS ${${_TPL}_INCLUDE_DIR} )
-        endif()
-
-        if( ${_tpl}_LIBRARIES )
-            list( APPEND ${PNAME}_TPL_LIBRARIES   ${${_tpl}_LIBRARIES} )
-        elseif( ${_tpl}_LIBRARY )
-            list( APPEND ${PNAME}_TPL_LIBRARIES   ${${_tpl}_LIBRARY} )
-        elseif( ${_TPL}_LIBRARIES )
-            list( APPEND ${PNAME}_TPL_LIBRARIES   ${${_TPL}_LIBRARIES} )
-        elseif( ${_TPL}_LIBRARY )
-            list( APPEND ${PNAME}_TPL_LIBRARIES   ${${_TPL}_LIBRARY} )
-        endif()
-
-        if( ${_tpl}_DEFINITIONS )
-            list( APPEND ${PNAME}_TPL_DEFINITIONS ${${_tpl}_DEFINITIONS} )
-        elseif( ${_TPL}_DEFINITIONS )
-            list( APPEND ${PNAME}_TPL_DEFINITIONS ${${_TPL}_DEFINITIONS} )
-        endif()
-    endforeach()
-
-    # TOP-LEVEL PROJECT EXPORT
-
-    if( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
-
-        # exports the package for use from the build-tree -- inserts <package> into the CMake user package registry
-    
-        export( PACKAGE ${PROJECT_NAME} )
-         
-        set( _template_config "${ECBUILD_MACROS_DIR}/project-config.cmake.in" )
-        if( EXISTS ${LNAME}-config.cmake.in )
-            set( _template_config "${LNAME}-config.cmake.in" )
-        endif()
-    
-        set( _template_config_version "${ECBUILD_MACROS_DIR}/project-config-version.cmake.in" )
-        if( EXISTS ${LNAME}-config-version.cmake.in )
-            set( _template_config_version "${LNAME}-config-version.cmake.in" )
-        endif()
-    
-        # project-config-version.cmake -- format ([0-9]+).([0-9]+).([0-9]+)
-    
-        set( PACKAGE_VERSION "${${PNAME}_VERSION}" ) 
-        
-        configure_file( "${_template_config_version}" "${PROJECT_BINARY_DIR}/${LNAME}-config-version.cmake" @ONLY )
-
-        install( FILES "${PROJECT_BINARY_DIR}/${LNAME}-config-version.cmake" DESTINATION "${INSTALL_CMAKE_DIR}" )
-
-        # prepare imutable variables (don't depend on install path)
-
-        set( CONF_FEATURES "" )
-        if( ${PNAME}_FEATURES )
-          set( CONF_FEATURES ${${PNAME}_FEATURES} )
-        endif()
-
-        set( CONF_LIBRARIES ${${PROJECT_NAME}_ALL_LIBS} )
-        if( ${PNAME}_LIBRARIES )
-            set( CONF_LIBRARIES ${${PNAME}_LIBRARIES} )
-        endif()
-                    
-        set( CONF_DEFINITIONS "" )
-        if( ${PNAME}_DEFINITIONS )
-           set( CONF_DEFINITIONS ${${PNAME}_DEFINITIONS} )
-        endif()
-
-        set( CONF_TPL_LIBRARIES   "" )
-        if( ${PNAME}_TPL_LIBRARIES )
-           set( CONF_TPL_LIBRARIES ${${PNAME}_TPL_LIBRARIES} )
-        endif()
-
-        # project-config.cmake @ build tree
-
-        set( CONF_TPLS ${${PNAME}_TPLS} )
-
-        set( CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}" "${PROJECT_BINARY_DIR}" )
-        if( ${PNAME}_INCLUDE_DIRS )
-            set( CONF_INCLUDE_DIRS ${${PNAME}_INCLUDE_DIRS} )
-        endif()
-
-        set( CONF_TPL_INCLUDE_DIRS "" )
-        foreach( _tpl ${${PNAME}_TPLS} )
-            string( TOUPPER ${_tpl} TPL )
-            if( ${_tpl}_INCLUDE_DIRS )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${_tpl}_INCLUDE_DIRS} )
-            elseif( ${_tpl}_INCLUDE_DIR )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${_tpl}_INCLUDE_DIR} )
-            elseif( ${TPL}_INCLUDE_DIRS )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${TPL}_INCLUDE_DIRS} )
-            elseif( ${TPL}_INCLUDE_DIR )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${TPL}_INCLUDE_DIR} )
-            endif()
-        endforeach()
-
-        set( CONF_IMPORT_FILE "${LNAME}-import.cmake" )
-
-        if( EXISTS "${PROJECT_SOURCE_DIR}/${CONF_IMPORT_FILE}.in" )
-            configure_file( "${PROJECT_SOURCE_DIR}/${CONF_IMPORT_FILE}.in"
-                            "${PROJECT_BINARY_DIR}/${CONF_IMPORT_FILE}" @ONLY )
-            install( FILES "${PROJECT_BINARY_DIR}/${CONF_IMPORT_FILE}"
-                     DESTINATION "${INSTALL_CMAKE_DIR}" )
-        endif()
-
-        set( _lname_config "${PROJECT_BINARY_DIR}/${LNAME}-config.cmake")
-
-        set( _is_build_dir_export ON )
-        configure_file( "${_template_config}" "${_lname_config}" @ONLY )
-
-        file( REMOVE ${_lname_config}.tpls.in )
-
-        foreach( _tpl ${${PNAME}_TPLS} )
-            string( TOUPPER ${_tpl} TPL )
-            if( ${TPL}_IMPORT_FILE )
-                set( __import_file "${${TPL}_IMPORT_FILE}" )
-                file( APPEND "${_lname_config}.tpls.in" "if( NOT ${TPL}_IMPORT_FILE )\n" )
-                file( APPEND "${_lname_config}.tpls.in" "    include( \"${__import_file}\" OPTIONAL )\n" )
-                file( APPEND "${_lname_config}.tpls.in" "endif()\n" )
-            endif()
-        endforeach()
-
-        if( EXISTS "${_lname_config}.tpls.in" )
-            configure_file( "${_lname_config}.tpls.in" "${_lname_config}.tpls" @ONLY )
-            install( FILES "${_lname_config}.tpls" DESTINATION "${INSTALL_CMAKE_DIR}" )
-        endif()
-
-        # project-config.cmake @ install tree
-        
-        file( RELATIVE_PATH REL_INCLUDE_DIR "${${PNAME}_FULL_INSTALL_CMAKE_DIR}" "${${PNAME}_FULL_INSTALL_INCLUDE_DIR}" )
-        set( CONF_INCLUDE_DIRS "\${${PNAME}_CMAKE_DIR}/${REL_INCLUDE_DIR}" )
-
-        set( CONF_TPL_INCLUDE_DIRS "" )
-        foreach( _tpl ${${PNAME}_TPLS} )
-            string( TOUPPER ${_tpl} TPL )
-            if( ${TPL}_FULL_INSTALL_INCLUDE_DIR )
-                 list( APPEND CONF_TPL_INCLUDE_DIRS "\${${PNAME}_CMAKE_DIR}/${REL_INCLUDE_DIR}" )
-            endif()
-            if( ${_tpl}_INCLUDE_DIRS )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${_tpl}_INCLUDE_DIRS} )
-            elseif( ${_tpl}_INCLUDE_DIR )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${_tpl}_INCLUDE_DIR} )
-            elseif( ${TPL}_INCLUDE_DIRS )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${TPL}_INCLUDE_DIRS} )
-            elseif( ${TPL}_INCLUDE_DIR )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${TPL}_INCLUDE_DIR} )
-            endif()
-        endforeach()
-        
-        set( _is_build_dir_export OFF )
-        configure_file( "${_template_config}" "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${LNAME}-config.cmake" @ONLY )
-        install( FILES "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${LNAME}-config.cmake" DESTINATION "${INSTALL_CMAKE_DIR}" )
-     
-        # install the export
-    
-        if( ${PROJECT_NAME}_ALL_EXES OR ${PROJECT_NAME}_ALL_LIBS )
-            install( EXPORT ${CMAKE_PROJECT_NAME}-targets DESTINATION "${INSTALL_CMAKE_DIR}" )
-        endif()
-    
-    else()
-
-        set( ${PNAME}_FOUND             TRUE                          PARENT_SCOPE )
-        set( ${PROJECT_NAME}_FOUND      TRUE                          PARENT_SCOPE )
-        set( ${PNAME}_VERSION           ${${PNAME}_VERSION}           PARENT_SCOPE )
-        set( ${PROJECT_NAME}_VERSION    ${${PNAME}_VERSION}           PARENT_SCOPE )
-        set( ${PNAME}_INCLUDE_DIRS      ${${PNAME}_INCLUDE_DIRS}      PARENT_SCOPE )
-        set( ${PNAME}_LIBRARIES         ${${PNAME}_LIBRARIES}         PARENT_SCOPE )
-        set( ${PNAME}_DEFINITIONS       ${${PNAME}_DEFINITIONS}       PARENT_SCOPE )
-        set( ${PNAME}_PACKAGES          ${${PNAME}_PACKAGES}          PARENT_SCOPE )
-        set( ${PNAME}_TPLS              ${${PNAME}_TPLS}              PARENT_SCOPE )
-        set( ${PNAME}_TPL_LIBRARIES     ${${PNAME}_TPL_LIBRARIES}     PARENT_SCOPE )
-        set( ${PNAME}_TPL_DEFINITIONS   ${${PNAME}_TPL_DEFINITIONS}   PARENT_SCOPE )
-        set( ${PNAME}_TPL_INCLUDE_DIRS  ${${PNAME}_TPL_INCLUDE_DIRS}  PARENT_SCOPE )
-
-    endif()
-
-endmacro( ecbuild_install_project )
diff --git a/cmake/ecbuild_install_project.cmake b/cmake/ecbuild_install_project.cmake
new file mode 100644
index 0000000..d53f110
--- /dev/null
+++ b/cmake/ecbuild_install_project.cmake
@@ -0,0 +1,387 @@
+# (C) Copyright 1996-2015 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.
+
+##############################################################################
+#.rst:
+#
+# ecbuild_install_project
+# =======================
+#
+# Set up packaging and export configuration. ::
+#
+#   ecbuild_install_project( NAME <name> [ DESCRIPTION <description> ] )
+#
+# Options
+# -------
+#
+# NAME : required
+#   project name used for packaging
+#
+# DESCRIPTION : optional
+#   project description used for packaging
+#
+# Usage
+# -----
+#
+# ``ecbuild_install_project`` should be called at the very end of any ecBuild
+# project (only followed by ``ecbuild_print_summary``), sets up packaging of
+# the project with cpack and exports the configuration and targets for other
+# projects to use.
+#
+# In a top-level project, the following files are generated:
+#
+# :<project>-config.cmake:         default project configuration
+# :<project>-config-version.cmake: project version number
+# :<project>-import.cmake:         extra project configuration (optional)
+# :<project>-config.cmake.tpls:    3rd party project configurations
+# :<project>-targets.cmake:        exported targets
+#
+# For ``<project>-import.cmake`` to be exported to build and install tree,
+# ``<project>-import.cmake`` or ``<project>-import.cmake.in`` must exist in
+# the source tree. ``<project>-config.cmake.in`` and
+# ``<project>-config-version.cmake.in`` can be provided in the source tree to
+# override the default templates used to generate ``<project>-config.cmake``
+# and ``<project>-config-version.cmake``.
+#
+# In DEVELOPER_MODE, the build tree location is also added to the CMake user
+# package registry.
+#
+# If the project is added as a subdirectory, the following CMake variables
+# are set in the parent scope:
+#
+# :<PROJECT>_FOUND:            set to ``TRUE``
+# :<project>_FOUND:            set to ``TRUE``
+# :<PROJECT>_VERSION:          version string
+# :<project>_VERSION:          version string
+# :<PROJECT>_INCLUDE_DIRS:     list of include directories
+# :<PROJECT>_LIBRARIES:        list of libraries
+# :<PROJECT>_DEFINITIONS:      list of compiler definitions
+# :<PROJECT>_TPLS:             list of 3rd party dependencies
+# :<PROJECT>_TPL_LIBRARIES:    libraries of 3rd party dependencies
+# :<PROJECT>_TPL_DEFINITIONS:  compiler definitions of 3rd party dependencies
+# :<PROJECT>_TPL_INCLUDE_DIRS: include directories of 3rd party dependencies
+# :<PROJECT>_FEATURES:         list of enabled features
+# :<PROJECT>_HAVE_<FEATURE>:   set to 1 for each enabled features
+#
+##############################################################################
+
+
+macro( ecbuild_install_project )
+
+    set( options )
+    set( single_value_args NAME DESCRIPTION )
+    set( multi_value_args  COMPONENTS )
+
+    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_PAR_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_install_project(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    if( NOT _PAR_NAME  )
+      message(FATAL_ERROR "The call to ecbuild_install_project() doesn't specify the NAME.")
+    endif()
+
+    ### PACKAGING ########################################################
+
+    set( PNAME ${PROJECT_NAME_CAPS} )
+    set( LNAME ${PROJECT_NAME_LOWCASE} )
+
+    # components
+
+    #    if( DEFINED _PAR_COMPONENTS )
+    #        set(CPACK_COMPONENTS_ALL   "${_PAR_COMPONENTS}")
+    #    else()
+    #        set(CPACK_COMPONENTS_ALL   "${PROJECT_NAME}")
+    #    endif()
+
+    # name, version, etc ...
+
+    set(CPACK_PACKAGE_NAME      "${_PAR_NAME}")
+    set(CPACK_PACKAGE_VERSION   "${${PNAME}_VERSION_STR}")
+
+    set(CPACK_PACKAGE_FILE_NAME   "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
+
+    set(CPACK_DEBIAN_PACKAGE_MAINTAINER "ECMWF") # required for DEB
+
+    #    set(CPACK_ARCHIVE_COMPONENT_INSTALL "ON")
+    #    set(CPACK_RPM_COMPONENT_INSTALL "ON")
+
+    #    set(CPACK_GENERATOR        "TGZ;RPM;DEB")
+    set(CPACK_GENERATOR        "TGZ")
+    set(CPACK_SOURCE_GENERATOR "TGZ")
+    set(CPACK_PACKAGE_VENDOR   "ECMWF")
+
+    # short description
+
+    if( _PAR_DESCRIPTION )
+        set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${_PAR_DESCRIPTION}" )
+    else()
+        set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${_PAR_NAME} misses a description" )
+    endif()
+
+    # long description
+
+    if( EXISTS ${PROJECT_SOURCE_DIR}/INSTALL )
+        set(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/INSTALL")
+    endif()
+    if( EXISTS ${PROJECT_SOURCE_DIR}/LICENSE )
+        set(CPACK_RESOURCE_FILE_LICENSE    "${PROJECT_SOURCE_DIR}/LICENSE")
+    endif()
+
+    # set(CPACK_PACKAGE_EXECUTABLES ${ECBUILD_ALL_EXES})
+
+    list( APPEND CPACK_SOURCE_INSTALLED_DIRECTORIES
+          "${PROJECT_SOURCE_DIR}" "."
+          "${ECBUILD_MACROS_DIR}" "cmake/" )
+
+    # what to pack and not
+
+    set(CPACK_SOURCE_IGNORE_FILES
+        /build/
+        /\\\\.git/
+        /\\\\.svn/
+        CMakeLists.txt.user
+        \\\\.swp$
+        p4config
+    )
+
+    # skip the files that were declared as DONT_PACK
+
+    list( APPEND CPACK_SOURCE_IGNORE_FILES ${ECBUILD_DONT_PACK_FILES} )
+
+    # Find the ecbuild toolchain files and include in the source package if found
+    find_path( ECBUILD_TOOLCHAIN_DIR ecmwf-XC30-GNU.cmake
+               PATHS ${ECBUILD_MACROS_DIR}/../toolchains
+                     ${ECBUILD_MACROS_DIR}/../share/ecbuild/toolchains )
+
+    if( ECBUILD_TOOLCHAIN_DIR )
+      list( APPEND CPACK_SOURCE_INSTALLED_DIRECTORIES "${ECBUILD_TOOLCHAIN_DIR}" "share/ecbuild/toolchains/" )
+    endif()
+
+    # Find the ecbuild bin directory and include in the source package if found
+    find_program( ECBUILD_SCRIPT ecbuild
+                  PATHS ${ECBUILD_MACROS_DIR}/../bin
+                        ${ECBUILD_MACROS_DIR}/../../../bin )
+
+    if( ECBUILD_SCRIPT )
+      get_filename_component( ECBUILD_BIN_DIR ${ECBUILD_SCRIPT} PATH )
+      list( APPEND CPACK_SOURCE_INSTALLED_DIRECTORIES "${ECBUILD_BIN_DIR}" "bin/" )
+    endif()
+
+    # cpack config file
+
+    # set(CPACK_INSTALL_CMAKE_PROJECTS "${${PROJECT_NAME}_BINARY_DIR}" "${PROJECT_NAME}" "${CPACK_COMPONENTS_ALL}" "*" )
+
+    include( CPack )
+
+    ### EXPORTS ########################################################
+
+    ecbuild_enabled_features( ${PROJECT_NAME_CAPS}_FEATURES )
+    foreach( _f ${${PNAME}_FEATURES} )
+        set( ${PNAME}_HAVE_${_f} 1 )
+    endforeach()
+
+    message( STATUS "${PROJECT_NAME_CAPS}_TPLS: ${${PROJECT_NAME_CAPS}_TPLS}" )
+
+    foreach( _tpl ${${PNAME}_TPLS} )
+        string( TOUPPER ${_tpl} _TPL )
+
+        if( ${_tpl}_INCLUDE_DIRS )
+            list( APPEND ${PNAME}_TPL_INCLUDE_DIRS ${${_tpl}_INCLUDE_DIRS} )
+        elseif( ${_tpl}_INCLUDE_DIR )
+            list( APPEND ${PNAME}_TPL_INCLUDE_DIRS ${${_tpl}_INCLUDE_DIR} )
+        elseif( ${_TPL}_INCLUDE_DIRS )
+            list( APPEND ${PNAME}_TPL_INCLUDE_DIRS ${${_TPL}_INCLUDE_DIRS} )
+        elseif( ${_TPL}_INCLUDE_DIR )
+            list( APPEND ${PNAME}_TPL_INCLUDE_DIRS ${${_TPL}_INCLUDE_DIR} )
+        endif()
+
+        if( ${_tpl}_LIBRARIES )
+            list( APPEND ${PNAME}_TPL_LIBRARIES   ${${_tpl}_LIBRARIES} )
+        elseif( ${_tpl}_LIBRARY )
+            list( APPEND ${PNAME}_TPL_LIBRARIES   ${${_tpl}_LIBRARY} )
+        elseif( ${_TPL}_LIBRARIES )
+            list( APPEND ${PNAME}_TPL_LIBRARIES   ${${_TPL}_LIBRARIES} )
+        elseif( ${_TPL}_LIBRARY )
+            list( APPEND ${PNAME}_TPL_LIBRARIES   ${${_TPL}_LIBRARY} )
+        endif()
+
+        if( ${_tpl}_DEFINITIONS )
+            list( APPEND ${PNAME}_TPL_DEFINITIONS ${${_tpl}_DEFINITIONS} )
+        elseif( ${_TPL}_DEFINITIONS )
+            list( APPEND ${PNAME}_TPL_DEFINITIONS ${${_TPL}_DEFINITIONS} )
+        endif()
+    endforeach()
+
+    # TOP-LEVEL PROJECT EXPORT
+
+    if( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
+
+        # exports the package for use from the build-tree but only in DEVELOPER_MODE
+        # inserts <package> into the CMake user package registry
+
+        if( DEVELOPER_MODE )
+            export( PACKAGE ${PROJECT_NAME} )
+        endif()
+
+        set( _template_config "${ECBUILD_MACROS_DIR}/project-config.cmake.in" )
+        if( EXISTS ${LNAME}-config.cmake.in )
+            set( _template_config "${LNAME}-config.cmake.in" )
+        endif()
+
+        set( _template_config_version "${ECBUILD_MACROS_DIR}/project-config-version.cmake.in" )
+        if( EXISTS ${LNAME}-config-version.cmake.in )
+            set( _template_config_version "${LNAME}-config-version.cmake.in" )
+        endif()
+
+        # project-config-version.cmake -- format ([0-9]+).([0-9]+).([0-9]+)
+
+        set( PACKAGE_VERSION "${${PNAME}_VERSION}" )
+
+        configure_file( "${_template_config_version}" "${PROJECT_BINARY_DIR}/${LNAME}-config-version.cmake" @ONLY )
+
+        install( FILES "${PROJECT_BINARY_DIR}/${LNAME}-config-version.cmake" DESTINATION "${INSTALL_CMAKE_DIR}" )
+
+        # prepare imutable variables (don't depend on install path)
+
+        if( ${PNAME}_FEATURES )
+          set( CONF_FEATURES ${${PNAME}_FEATURES} )
+        endif()
+
+        set( CONF_LIBRARIES ${${PROJECT_NAME}_ALL_LIBS} )
+        if( ${PNAME}_LIBRARIES )
+            set( CONF_LIBRARIES ${${PNAME}_LIBRARIES} )
+        endif()
+
+        set( CONF_DEFINITIONS "" )
+        if( ${PNAME}_DEFINITIONS )
+           set( CONF_DEFINITIONS ${${PNAME}_DEFINITIONS} )
+        endif()
+
+        set( CONF_TPL_LIBRARIES   "" )
+        if( ${PNAME}_TPL_LIBRARIES )
+           set( CONF_TPL_LIBRARIES ${${PNAME}_TPL_LIBRARIES} )
+        endif()
+
+        # project-config.cmake @ build tree
+
+        set( CONF_TPLS ${${PNAME}_TPLS} )
+
+        set( CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}" "${PROJECT_BINARY_DIR}" )
+        if( ${PNAME}_INCLUDE_DIRS )
+            set( CONF_INCLUDE_DIRS ${${PNAME}_INCLUDE_DIRS} )
+        endif()
+
+        set( CONF_TPL_INCLUDE_DIRS "" )
+        foreach( _tpl ${${PNAME}_TPLS} )
+            string( TOUPPER ${_tpl} TPL )
+            if( ${_tpl}_INCLUDE_DIRS )
+                list( APPEND CONF_TPL_INCLUDE_DIRS ${${_tpl}_INCLUDE_DIRS} )
+            elseif( ${_tpl}_INCLUDE_DIR )
+                list( APPEND CONF_TPL_INCLUDE_DIRS ${${_tpl}_INCLUDE_DIR} )
+            elseif( ${TPL}_INCLUDE_DIRS )
+                list( APPEND CONF_TPL_INCLUDE_DIRS ${${TPL}_INCLUDE_DIRS} )
+            elseif( ${TPL}_INCLUDE_DIR )
+                list( APPEND CONF_TPL_INCLUDE_DIRS ${${TPL}_INCLUDE_DIR} )
+            endif()
+        endforeach()
+
+        set( CONF_IMPORT_FILE "${LNAME}-import.cmake" )
+
+        # If <project>-import.cmake.in exist in source tree, configure it to
+        # the build tree and install the configured version
+        if( EXISTS "${PROJECT_SOURCE_DIR}/${CONF_IMPORT_FILE}.in" )
+          configure_file( "${PROJECT_SOURCE_DIR}/${CONF_IMPORT_FILE}.in"
+                          "${PROJECT_BINARY_DIR}/${CONF_IMPORT_FILE}" @ONLY )
+          install( FILES "${PROJECT_BINARY_DIR}/${CONF_IMPORT_FILE}"
+                   DESTINATION "${INSTALL_CMAKE_DIR}" )
+        # Otherwise, if <project>-import.cmake exist in source tree, copy it to
+        # the build tree and install it
+        elseif( EXISTS "${PROJECT_SOURCE_DIR}/${CONF_IMPORT_FILE}" )
+          configure_file( "${PROJECT_SOURCE_DIR}/${CONF_IMPORT_FILE}"
+                          "${PROJECT_BINARY_DIR}/${CONF_IMPORT_FILE}" COPYONLY )
+          install( FILES "${PROJECT_SOURCE_DIR}/${CONF_IMPORT_FILE}"
+                   DESTINATION "${INSTALL_CMAKE_DIR}" )
+        endif()
+
+        set( _lname_config "${PROJECT_BINARY_DIR}/${LNAME}-config.cmake")
+
+        set( _is_build_dir_export ON )
+        configure_file( "${_template_config}" "${_lname_config}" @ONLY )
+
+        file( REMOVE ${_lname_config}.tpls.in )
+
+        foreach( _tpl ${${PNAME}_TPLS} )
+            string( TOUPPER ${_tpl} TPL )
+            if( ${TPL}_IMPORT_FILE )
+                set( __import_file "${${TPL}_IMPORT_FILE}" )
+                file( APPEND "${_lname_config}.tpls.in" "if( NOT ${TPL}_IMPORT_FILE )\n" )
+                file( APPEND "${_lname_config}.tpls.in" "    include( \"${__import_file}\" OPTIONAL )\n" )
+                file( APPEND "${_lname_config}.tpls.in" "endif()\n" )
+            endif()
+        endforeach()
+
+        if( EXISTS "${_lname_config}.tpls.in" )
+            configure_file( "${_lname_config}.tpls.in" "${_lname_config}.tpls" @ONLY )
+            install( FILES "${_lname_config}.tpls" DESTINATION "${INSTALL_CMAKE_DIR}" )
+        endif()
+
+        # project-config.cmake @ install tree
+
+        file( RELATIVE_PATH REL_INCLUDE_DIR "${${PNAME}_FULL_INSTALL_CMAKE_DIR}" "${${PNAME}_FULL_INSTALL_INCLUDE_DIR}" )
+        set( CONF_INCLUDE_DIRS "\${${PNAME}_CMAKE_DIR}/${REL_INCLUDE_DIR}" )
+
+        set( CONF_TPL_INCLUDE_DIRS "" )
+        foreach( _tpl ${${PNAME}_TPLS} )
+            string( TOUPPER ${_tpl} TPL )
+            if( ${TPL}_FULL_INSTALL_INCLUDE_DIR )
+                 list( APPEND CONF_TPL_INCLUDE_DIRS "\${${PNAME}_CMAKE_DIR}/${REL_INCLUDE_DIR}" )
+            endif()
+            if( ${_tpl}_INCLUDE_DIRS )
+                list( APPEND CONF_TPL_INCLUDE_DIRS ${${_tpl}_INCLUDE_DIRS} )
+            elseif( ${_tpl}_INCLUDE_DIR )
+                list( APPEND CONF_TPL_INCLUDE_DIRS ${${_tpl}_INCLUDE_DIR} )
+            elseif( ${TPL}_INCLUDE_DIRS )
+                list( APPEND CONF_TPL_INCLUDE_DIRS ${${TPL}_INCLUDE_DIRS} )
+            elseif( ${TPL}_INCLUDE_DIR )
+                list( APPEND CONF_TPL_INCLUDE_DIRS ${${TPL}_INCLUDE_DIR} )
+            endif()
+        endforeach()
+
+        set( _is_build_dir_export OFF )
+        configure_file( "${_template_config}" "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${LNAME}-config.cmake" @ONLY )
+        install( FILES "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${LNAME}-config.cmake" DESTINATION "${INSTALL_CMAKE_DIR}" )
+
+        # install the export
+
+        if( ${PROJECT_NAME}_ALL_EXES OR ${PROJECT_NAME}_ALL_LIBS )
+            install( EXPORT ${CMAKE_PROJECT_NAME}-targets DESTINATION "${INSTALL_CMAKE_DIR}" )
+        endif()
+
+    else()
+
+        set( ${PNAME}_FOUND             TRUE                          PARENT_SCOPE )
+        set( ${PROJECT_NAME}_FOUND      TRUE                          PARENT_SCOPE )
+        set( ${PNAME}_VERSION           ${${PNAME}_VERSION}           PARENT_SCOPE )
+        set( ${PROJECT_NAME}_VERSION    ${${PNAME}_VERSION}           PARENT_SCOPE )
+        set( ${PNAME}_INCLUDE_DIRS      ${${PNAME}_INCLUDE_DIRS}      PARENT_SCOPE )
+        set( ${PNAME}_LIBRARIES         ${${PNAME}_LIBRARIES}         PARENT_SCOPE )
+        set( ${PNAME}_DEFINITIONS       ${${PNAME}_DEFINITIONS}       PARENT_SCOPE )
+        set( ${PNAME}_PACKAGES          ${${PNAME}_PACKAGES}          PARENT_SCOPE )
+        set( ${PNAME}_TPLS              ${${PNAME}_TPLS}              PARENT_SCOPE )
+        set( ${PNAME}_TPL_LIBRARIES     ${${PNAME}_TPL_LIBRARIES}     PARENT_SCOPE )
+        set( ${PNAME}_TPL_DEFINITIONS   ${${PNAME}_TPL_DEFINITIONS}   PARENT_SCOPE )
+        set( ${PNAME}_TPL_INCLUDE_DIRS  ${${PNAME}_TPL_INCLUDE_DIRS}  PARENT_SCOPE )
+        set( ${PNAME}_FEATURES          ${${PNAME}_FEATURES}          PARENT_SCOPE )
+        foreach( _f ${${PNAME}_FEATURES} )
+            set( ${PNAME}_HAVE_${_f} ${${PNAME}_HAVE_${_f}} PARENT_SCOPE )
+        endforeach()
+     endif()
+
+endmacro( ecbuild_install_project )
diff --git a/cmake/ecbuild_links_target.cmake b/cmake/ecbuild_links_target.cmake
index 5dfacdc..c881c0d 100644
--- a/cmake/ecbuild_links_target.cmake
+++ b/cmake/ecbuild_links_target.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
diff --git a/cmake/ecbuild_list_extra_search_paths.cmake b/cmake/ecbuild_list_extra_search_paths.cmake
index 7373486..0768a48 100644
--- a/cmake/ecbuild_list_extra_search_paths.cmake
+++ b/cmake/ecbuild_list_extra_search_paths.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -8,13 +8,15 @@
 
 ############################################################################################
 #
-# macro for adding search paths to CMAKE_PREFIX_PATH
-# for example the ECMWF /usr/local/apps paths
+# macro for adding search paths for a package to a given CMake variable
 #
 # usage: ecbuild_list_extra_search_paths( netcdf4 VARIABLE )
 
 function( ecbuild_list_extra_search_paths pkg var )
 
+  message( DEPRECATION " ecbuild_list_extra_search_paths should no longer be"
+           " used and is going to be removed in a future version of ecBuild." )
+
 	# debug_var( pkg )
 	# debug_var( var )
 
@@ -23,75 +25,45 @@ function( ecbuild_list_extra_search_paths pkg var )
 	# PKG_PATH (upper case)
 
 	if( DEFINED ${_PKG}_PATH AND EXISTS ${${_PKG}_PATH} )
-		message( "${_PKG}_PATH ${${_PKG}_PATH} exists " )
+    ecbuild_debug("ecbuild_list_extra_search_paths(${pkg}): appending ${_PKG}_PATH = ${${_PKG}_PATH} to ${var}")
 		list( APPEND ${var} ${${_PKG}_PATH} )
 	endif()
 
 	# ENV PKG_PATH (upper case)
 
 	if( DEFINED ENV{${_PKG}_PATH} AND EXISTS $ENV{${_PKG}_PATH}  )
+    ecbuild_debug("ecbuild_list_extra_search_paths(${pkg}): appending \$${_PKG}_PATH = $ENV{${_PKG}_PATH} to ${var}")
 		list( APPEND ${var} $ENV{${_PKG}_PATH} )
 	endif()
 
 	# pkg_PATH (lower case)
 
 	if( DEFINED ${pkg}_PATH AND EXISTS ${${pkg}_PATH} )
+    ecbuild_debug("ecbuild_list_extra_search_paths(${pkg}): appending ${pkg}_PATH = ${${pkg}_PATH} to ${var}")
 		list( APPEND ${var} ${${pkg}_PATH} )
 	endif()
 
 	# ENV pkg_PATH (lower case)
 
-	if( DEFINED ${pkg}_PATH AND EXISTS ${${pkg}_PATH} )
-		list( APPEND ${var} ${${pkg}_PATH} )
+  if( DEFINED ${pkg}_PATH AND EXISTS $ENV{${pkg}_PATH} )
+    ecbuild_debug("ecbuild_list_extra_search_paths(${pkg}): appending \$${pkg}_PATH = $ENV{${pkg}_PATH} to ${var}")
+    list( APPEND ${var} $ENV{${pkg}_PATH} )
 	endif()
 
 	# ENV PKG_DIR (upper case)
 
 	if( DEFINED ENV{${_PKG}_DIR} AND EXISTS $ENV{${_PKG}_DIR}  )
+    ecbuild_debug("ecbuild_list_extra_search_paths(${pkg}): appending \$${_PKG}_DIR = $ENV{${_PKG}_DIR} to ${var}")
 		list( APPEND ${var} $ENV{${_PKG}_DIR} )
 	endif()
 
 	# ENV pkg_DIR (lower case)
 
 	if( DEFINED ENV{${pkg}_DIR} AND EXISTS $ENV{${pkg}_DIR} )
+    ecbuild_debug("ecbuild_list_extra_search_paths(${pkg}): appending \$${pkg}_DIR = $ENV{${pkg}_DIR} to ${var}")
 		list( APPEND ${var} $ENV{${pkg}_DIR} )
 	endif()
 
-	# directories under /usr/local/apps/${pkg}
-
-	if( SEARCH_ECMWF_PATHS )
-
-		foreach( _apps /usr/local/apps/${pkg} /usr/local/lib/metaps/lib/${pkg} )
-
-			if( EXISTS ${_apps} )
-
-				 file( GLOB ps ${_apps}/[0-9]* )
-				 list( SORT ps )
-				 list( REVERSE ps ) # reversing will give us the newest versions first
-				 foreach( p ${ps} )
-					 if( IS_DIRECTORY ${p} )
-						  list( APPEND ${var}  ${p} )
-						  if( EXISTS ${p}/LP64 )
-							  list( APPEND ${var} ${p}/LP64 )
-						  endif()
-					 endif()
-				 endforeach()
-
-				 foreach( p ${_apps} ${_apps}/current ${_apps}/stable ${_apps}/new ${_apps}/next ${_apps}/prev )
-				   if( EXISTS ${p} )
-					   list( APPEND ${var} ${p} )
-				   endif()
-				   if( EXISTS ${p}/LP64 )
-					   list( APPEND ${var} ${p}/LP64 )
-				   endif()
-				 endforeach()
-
-			endif()
-
-		endforeach()
-
-	endif( SEARCH_ECMWF_PATHS )
-
 	# sanitize the list
 
 	if( ${var} )
@@ -100,6 +72,7 @@ function( ecbuild_list_extra_search_paths pkg var )
 
 	# define it out of the function
 
+  ecbuild_debug("ecbuild_list_extra_search_paths(${pkg}): setting ${var} to ${${var}}")
 	set( ${var} ${${var}} PARENT_SCOPE )
 
 # debug_var( ${var} )
diff --git a/cmake/ecbuild_list_macros.cmake b/cmake/ecbuild_list_macros.cmake
index 5c10dd2..a4152c7 100644
--- a/cmake/ecbuild_list_macros.cmake
+++ b/cmake/ecbuild_list_macros.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
@@ -55,3 +55,36 @@ endfunction(MAP_INSERT)
 function( MAP_GET _map _key _var )
 	set( ${_var} "${_${_map}_${_key}}" PARENT_SCOPE )
 endfunction(MAP_GET)
+
+##############################################################################
+# function to remove items from a list that match a list of patterns
+#
+# examples:
+#
+#   ecbuild_list_remove_pattern( mylist "foo;bar" VAR )
+#
+
+function(ecbuild_list_remove_pattern _list _patterns _var)
+
+#debug_var(  _list )
+#debug_var(  _patterns )
+#debug_var(  _var )
+
+    foreach( _elem ${_list} )
+        set( _keep TRUE)
+        foreach( _pat ${_patterns} )
+            if( ${_elem} MATCHES ${_pat} )
+                set( _keep FALSE)
+            endif()
+        endforeach()
+        if( _keep )
+            list( APPEND _result ${_elem} )
+        endif()
+
+    endforeach()
+
+#debug_var(  _result )
+
+    set( ${_var} "${_result}" PARENT_SCOPE )
+
+endfunction(ecbuild_list_remove_pattern)
diff --git a/cmake/ecbuild_log.cmake b/cmake/ecbuild_log.cmake
new file mode 100644
index 0000000..fbb2349
--- /dev/null
+++ b/cmake/ecbuild_log.cmake
@@ -0,0 +1,129 @@
+# (C) Copyright 1996-2015 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.
+
+##############################################################################
+#.rst:
+#
+# Logging
+# =======
+#
+# ecBuild provides macros for logging based on a log level set by the user,
+# similar to the Python logging module:
+#
+# :ecbuild_debug:    logs a ``STATUS`` message if log level <= ``DEBUG``
+# :ecbuild_info:     logs a ``STATUS`` message if log level <= ``INFO``
+# :ecbuild_warn:     logs a ``WARNING`` message if log level <= ``WARN``
+# :ecbuild_error:    logs a ``SEND_ERROR`` message if log level <= ``ERROR``
+# :ecbuild_critical: logs a ``FATAL_ERROR`` message if log level <= ``CRITICAL``
+#
+# Input variables
+# ---------------
+#
+# CMake variables controlling logging behaviour:
+#
+# ECBUILD_LOG_LEVEL : string, one of DEBUG, INFO, WARN, ERROR, CRITICAL, OFF
+#   set the desired log level, OFF to disable logging altogether
+#
+# ECBUILD_NO_COLOUR : bool
+#   if set, does not colour log output (by default log output is coloured)
+#
+# Usage
+# -----
+#
+# The macros ``ecbuild_debug`` and ``ecbuild_info`` can be used to output
+# messages which are not printed by default. Many ecBuild macros use this
+# facility to log debugging hints. When debugging a CMake run, users can use
+# ``-DECBUILD_LOG_LEVEL=DEBUG`` to get detailed diagnostics.
+#
+##############################################################################
+
+# Define colour escape sequences (https://stackoverflow.com/a/19578320/396967)
+if(NOT (WIN32 OR ECBUILD_NO_COLOUR))
+  string(ASCII 27 Esc)
+  set(ColourReset "${Esc}[m")
+  set(ColourBold  "${Esc}[1m")
+  set(Red         "${Esc}[31m")
+  set(Green       "${Esc}[32m")
+  set(Yellow      "${Esc}[33m")
+  set(Blue        "${Esc}[34m")
+  set(Magenta     "${Esc}[35m")
+  set(Cyan        "${Esc}[36m")
+  set(White       "${Esc}[37m")
+  set(BoldRed     "${Esc}[1;31m")
+  set(BoldGreen   "${Esc}[1;32m")
+  set(BoldYellow  "${Esc}[1;33m")
+  set(BoldBlue    "${Esc}[1;34m")
+  set(BoldMagenta "${Esc}[1;35m")
+  set(BoldCyan    "${Esc}[1;36m")
+  set(BoldWhite   "${Esc}[1;37m")
+endif()
+
+set(ECBUILD_DEBUG    10)
+set(ECBUILD_INFO     20)
+set(ECBUILD_WARN     30)
+set(ECBUILD_ERROR    40)
+set(ECBUILD_CRITICAL 50)
+
+if( NOT DEFINED ECBUILD_LOG_LEVEL )
+  set(ECBUILD_LOG_LEVEL ${ECBUILD_WARN})
+elseif( NOT ECBUILD_LOG_LEVEL )
+  set(ECBUILD_LOG_LEVEL 60)
+elseif( ECBUILD_LOG_LEVEL STREQUAL "DEBUG" )
+  set(ECBUILD_LOG_LEVEL ${ECBUILD_DEBUG})
+elseif( ECBUILD_LOG_LEVEL STREQUAL "INFO" )
+  set(ECBUILD_LOG_LEVEL ${ECBUILD_INFO})
+elseif( ECBUILD_LOG_LEVEL STREQUAL "WARN" )
+  set(ECBUILD_LOG_LEVEL ${ECBUILD_WARN})
+elseif( ECBUILD_LOG_LEVEL STREQUAL "ERROR" )
+  set(ECBUILD_LOG_LEVEL ${ECBUILD_ERROR})
+elseif( ECBUILD_LOG_LEVEL STREQUAL "CRITICAL" )
+  set(ECBUILD_LOG_LEVEL ${ECBUILD_CRITICAL})
+else()
+  message(WARNING "Unknown log level ${ECBUILD_LOG_LEVEL} (valid are DEBUG, INFO, WARN, ERROR, CRITICAL) - using WARN")
+  set(ECBUILD_LOG_LEVEL ${ECBUILD_WARN})
+endif()
+
+##############################################################################
+
+macro( ecbuild_debug MSG )
+  if( ECBUILD_LOG_LEVEL LESS 11)
+    message(STATUS "${Blue}DEBUG - ${MSG}${ColourReset}")
+  endif()
+endmacro( ecbuild_debug )
+
+##############################################################################
+
+macro( ecbuild_info MSG )
+  if( ECBUILD_LOG_LEVEL LESS 21)
+    message(STATUS "${Green}INFO - ${MSG}${ColourReset}")
+  endif()
+endmacro( ecbuild_info )
+
+##############################################################################
+
+macro( ecbuild_warn MSG )
+  if( ECBUILD_LOG_LEVEL LESS 31)
+    message(WARNING "${Yellow}WARN - ${MSG}${ColourReset}")
+  endif()
+endmacro( ecbuild_warn )
+
+##############################################################################
+
+macro( ecbuild_error MSG )
+  if( ECBUILD_LOG_LEVEL LESS 41)
+    message(SEND_ERROR "${BoldRed}ERROR - ${MSG}${ColourReset}")
+  endif()
+endmacro( ecbuild_error )
+
+##############################################################################
+
+macro( ecbuild_critical MSG )
+  if( ECBUILD_LOG_LEVEL LESS 51)
+    message(FATAL_ERROR "${BoldMagenta}CRITICAL - ${MSG}${ColourReset}")
+  endif()
+endmacro( ecbuild_critical )
diff --git a/cmake/ecbuild_pkgconfig.cmake b/cmake/ecbuild_pkgconfig.cmake
index 8549d46..6db3726 100644
--- a/cmake/ecbuild_pkgconfig.cmake
+++ b/cmake/ecbuild_pkgconfig.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -6,52 +6,10 @@
 # granted to it by virtue of its status as an intergovernmental organisation nor
 # does it submit to any jurisdiction.
 
-#############################################################################################
-#
-# MACRO ecbuild_pkgconfig
-#
-# This macro creates a pkg-config file for the current project
-#
-# It takes following optional arguments:
-#
-#  - FILENAME <filename>
-#       The file that will be generated. Default value is the lowercase
-#       name of the project with suffix ".pc" is used
-#
-#  - NAME <name>
-#       The name to be given to the package. Default value is the lowercase
-#       name of the project
-#
-#  - TEMPLATE <template>
-#       The template configuration file to use. This is useful to create more
-#       custom pkg-config files. Default is ${ECBUILD_CMAKE_DIR}/pkg-config.pc.in
-#
-#  - URL <url>
-#       The url of the package. Default is ${UPPERCASE_PROJECT_NAME}_URL
-#
-#  - DESCRIPTION <description>
-#       The description of the package. Default is ${UPPERCASE_PROJECT_NAME}_DESCRIPTION
-#
-#  - LIBRARIES <libraries>
-#       The package libraries. Default is ${UPPERCASE_PROJECT_NAME}_LIBRARIES
-#       This is e.g. of the form "eckit;eckit_geometry"
-#
-#  - IGNORE_INCLUDE_DIRS <include_dirs>
-#       Ignore specified include directories
-#
-#  - IGNORE_LIBRARIES <libraries>
-#       Ignore specified libraries
-#
-#  - LANGUAGES <languages>
-#       List of languages used. If none given, all CMake_<lang>_COMPILER_LOAED languages
-#       are added. Accepted languages: C CXX Fortran
-#
-#  - NO_PRIVATE_INCLUDE_DIRS
-#       Don't add include dirs of dependencies to Cflags. This is mainly useful
-#       for Fortran only packages, when only the modules need to be added to Cflags
-#
-#############################################################################################
+##############################################################################
 
+# Write transitive list of library dependencies of each library in ${libraries}
+# to CMake variable ${dependencies}
 function( ecbuild_library_dependencies dependencies libraries )
 
   set( _libraries ${${libraries}} )
@@ -105,8 +63,10 @@ function( ecbuild_library_dependencies dependencies libraries )
 
 endfunction(ecbuild_library_dependencies)
 
-#############################################################################################
+##############################################################################
 
+# Write list of include directories of each library in ${libraries}
+# to CMake variable ${dependencies}
 function( ecbuild_include_dependencies dependencies libraries )
 
   set( _libraries ${${libraries}} )
@@ -129,8 +89,10 @@ function( ecbuild_include_dependencies dependencies libraries )
 
 endfunction(ecbuild_include_dependencies)
 
-#############################################################################################
+##############################################################################
 
+# Transform list of libraries in ${libraries}, ignoring any in ${ignore_libs},
+# and write pkg-config compatible string to CMake variable ${pkgconfig_libs}
 function( ecbuild_pkgconfig_libs pkgconfig_libs libraries ignore_libs )
 
   set( _libraries ${${libraries}} )
@@ -158,6 +120,9 @@ function( ecbuild_pkgconfig_libs pkgconfig_libs libraries ignore_libs )
         get_filename_component( _name ${_lib} NAME_WE )
         get_filename_component( _dir  ${_lib} PATH )
 
+        if( TARGET ${_lib} )
+          get_target_property( _name ${_lib} OUTPUT_NAME )
+        endif()
         if( NOT _name )
           set( _name ${_lib} )
         endif()
@@ -203,10 +168,11 @@ function( ecbuild_pkgconfig_libs pkgconfig_libs libraries ignore_libs )
 
 endfunction(ecbuild_pkgconfig_libs)
 
+##############################################################################
 
-#############################################################################################
-
-
+# Transform list of include directories in ${INCLUDE_DIRS}, ignoring any in
+# ${ignore_includes} and ${${PNAME}_INCLUDE_DIRS}, and write pkg-config
+# compatible string to CMake variable ${INCLUDE}
 function( ecbuild_pkgconfig_include INCLUDE INCLUDE_DIRS ignore_includes )
 
   string( TOUPPER ${PROJECT_NAME} PNAME )
@@ -216,14 +182,17 @@ function( ecbuild_pkgconfig_include INCLUDE INCLUDE_DIRS ignore_includes )
   list( APPEND ignore_include_dirs
     "/usr/include"
      ${${PNAME}_INCLUDE_DIRS} # These are build-directory includes
+     ${CMAKE_SOURCE_DIR}  # Ignore private includes referencing source tree
+     ${CMAKE_BINARY_DIR}  # Ignore private includes referencing build tree
      ${_ignore_includes}
   )
 
   foreach( _incdir ${${INCLUDE_DIRS}} )
 
     foreach( _ignore ${ignore_include_dirs} )
-      if( "${_incdir}" STREQUAL "${_ignore}" )
+      if( "${_incdir}" MATCHES "${_ignore}" )
         unset( _incdir )
+        break()
       endif()
     endforeach()
 
@@ -241,13 +210,100 @@ function( ecbuild_pkgconfig_include INCLUDE INCLUDE_DIRS ignore_includes )
 
 endfunction(ecbuild_pkgconfig_include)
 
-
-#############################################################################################
+##############################################################################
+#.rst:
+#
+# ecbuild_pkgconfig
+# =================
+#
+# Create a pkg-config file for the current project. ::
+#
+#   ecbuild_pkgconfig( [ NAME <name> ]
+#                      [ FILENAME <filename> ]
+#                      [ TEMPLATE <template> ]
+#                      [ URL <url> ]
+#                      [ DESCRIPTION <description> ]
+#                      [ LIBRARIES <lib1> [ <lib2> ... ] ]
+#                      [ IGNORE_INCLUDE_DIRS <dir1> [ <dir2> ... ] ]
+#                      [ IGNORE_LIBRARIES <lib1> [ <lib2> ... ] ]
+#                      [ LANGUAGES <language1> [ <language2> ... ] ]
+#                      [ VARIABLES <variable1> [ <variable2> ... ] ]
+#                      [ NO_PRIVATE_INCLUDE_DIRS ] )
+#
+# Options
+# -------
+#
+# NAME : optional, defaults to lower case name of the project
+#   name to be given to the package
+#
+# FILENAME : optional, defaults to ``<NAME>.pc``
+#   file to be generated, including .pc extension
+#
+# TEMPLATE : optional, defaults to ``${ECBUILD_CMAKE_DIR}/pkg-config.pc.in``
+#   template configuration file to use
+#
+#   This is useful to create customised pkg-config files.
+#
+# URL : optional, defaults to ``${UPPERCASE_PROJECT_NAME}_URL``
+#   url of the package
+#
+# DESCRIPTION : optional, defaults to ``${UPPERCASE_PROJECT_NAME}_DESCRIPTION``
+#   description of the package
+#
+# LIBRARIES : optional, defaults to ``${UPPERCASE_PROJECT_NAME}_LIBRARIES``
+#   list of package libraries
+#
+# IGNORE_INCLUDE_DIRS : optional
+#   list of include directories to ignore
+#
+# IGNORE_LIBRARIES : optional
+#   list of libraries to ignore i.e. those are removed from ``LIBRARIES``
+#
+# VARIABLES : optional
+#   list of additional CMake variables to export to the pkg-config file
+#
+# LANGUAGES : optional, defaults to all loaded languages
+#   list of languages to use. Accepted languages: C CXX Fortran
+#
+# NO_PRIVATE_INCLUDE_DIRS
+#   do not add include directories of dependencies to Cflags
+#
+#   This is mainly useful for Fortran only packages, when only modules need
+#   to be added to Cflags.
+#
+# Input variables
+# ---------------
+#
+# The following CMake variables are used as default values for some of the
+# options listed above, where ``PNAME`` is the project name in upper case: ::
+#
+# :<PNAME>_LIBRARIES:    list of libraries to export
+# :<PNAME>_DESCRIPTION:  package description
+# :<PNAME>_URL:          package URL
+# :<PNAME>_VERSION:      package version
+# :<PNAME>_GIT_SHA1:     Git revision
+#
+# Usage
+# -----
+#
+# It is good practice to provide a separate pkg-config file for each library a
+# package exports. This can be achieved as follows: ::
+#
+#   foreach( _lib ${${PNAME}_LIBRARIES} )
+#     if( TARGET ${_lib} )
+#       ecbuild_pkgconfig( NAME ${_lib}
+#                          DESCRIPTION "..."
+#                          URL "..."
+#                          LIBRARIES ${_lib} )
+#     endif()
+#   endforeach()
+#
+##############################################################################
 
 function( ecbuild_pkgconfig )
 
   set( options REQUIRES NO_PRIVATE_INCLUDE_DIRS )
-  set( single_value_args FILEPATH NAME TEMPLATE URL DESCRIPTION )
+  set( single_value_args FILENAME NAME TEMPLATE URL DESCRIPTION )
   set( multi_value_args LIBRARIES IGNORE_INCLUDE_DIRS IGNORE_LIBRARIES VARIABLES LANGUAGES )
 
   cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
@@ -331,8 +387,8 @@ function( ecbuild_pkgconfig )
     set( PKGCONFIG_NAME ${_PAR_NAME} )
   endif()
 
-  if( NOT _PAR_FILEPATH )
-    set( _PAR_FILEPATH "${PKGCONFIG_NAME}.pc" )
+  if( NOT _PAR_FILENAME )
+    set( _PAR_FILENAME "${PKGCONFIG_NAME}.pc" )
   endif()
 
   set( PKGCONFIG_DESCRIPTION ${${PNAME}_DESCRIPTION} )
@@ -355,11 +411,11 @@ function( ecbuild_pkgconfig )
     endforeach()
   endif()
 
-  configure_file( ${_PAR_TEMPLATE} "${CMAKE_BINARY_DIR}/${_PAR_FILEPATH}" @ONLY )
-  message( STATUS "pkg-config file created: ${_PAR_FILEPATH}" )
+  configure_file( ${_PAR_TEMPLATE} "${CMAKE_BINARY_DIR}/${_PAR_FILENAME}" @ONLY )
+  message( STATUS "pkg-config file created: ${_PAR_FILENAME}" )
 
-  install( FILES ${CMAKE_BINARY_DIR}/${_PAR_FILEPATH}
-           DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig/
+  install( FILES ${CMAKE_BINARY_DIR}/${_PAR_FILENAME}
+           DESTINATION ${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB_DIR}/pkgconfig/
            COMPONENT utilities )
 
 endfunction(ecbuild_pkgconfig)
diff --git a/cmake/ecbuild_policies.cmake b/cmake/ecbuild_policies.cmake
new file mode 100644
index 0000000..06f856b
--- /dev/null
+++ b/cmake/ecbuild_policies.cmake
@@ -0,0 +1,63 @@
+# (C) Copyright 1996-2015 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.
+
+###############################################################################
+# define cmake policies
+#
+# NOTE: This file needs to be included with NO_POLICY_SCOPE or it will have no
+#       effect!
+# NOTE: Policies 1 through 17 will be set to NEW by requiring CMake 2.8.4 i.e.
+#       calling cmake_minimum_required( VERSION 2.8.4 FATAL_ERROR )
+
+# allow for empty spaces around library names 
+if( POLICY CMP0004 )
+    cmake_policy( SET CMP0004 OLD )
+endif()
+
+# Allow use of the LOCATION target property.
+if( POLICY CMP0026 )
+    cmake_policy( SET CMP0026 OLD )
+endif()
+
+# for macosx use @rpath in a target’s install name
+if( POLICY CMP0042 )
+    cmake_policy( SET CMP0042 NEW )
+    set( CMAKE_MACOSX_RPATH ON )
+endif()
+
+# Error on non-existent target in get_target_property
+if( POLICY CMP0045 )
+    cmake_policy( SET CMP0045 NEW )
+endif()
+
+# Error on non-existent dependency in add_dependencies
+if( POLICY CMP0046 )
+    cmake_policy( SET CMP0046 NEW )
+endif()
+
+# Do not manage VERSION variables in project command
+if( POLICY CMP0048 )
+  cmake_policy( SET CMP0048 OLD )
+endif()
+
+# Disallow add_custom_command SOURCE signatures
+if( POLICY CMP0050 )
+    cmake_policy( SET CMP0050 NEW )
+endif()
+
+# Reject source and build dirs in installed INTERFACE_INCLUDE_DIRECTORIES
+if( POLICY CMP0052 )
+    cmake_policy( SET CMP0052 NEW )
+endif()
+
+# inside if() don't dereference variables if they are quoted
+# e.g. "VAR" is not dereferenced
+#      "${VAR}" is dereference only once
+if( POLICY CMP0054 )
+    cmake_policy( SET CMP0054 NEW )
+endif()
diff --git a/cmake/ecbuild_print_summary.cmake b/cmake/ecbuild_print_summary.cmake
index 193bf1f..d4bffba 100644
--- a/cmake/ecbuild_print_summary.cmake
+++ b/cmake/ecbuild_print_summary.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -6,110 +6,101 @@
 # granted to it by virtue of its status as an intergovernmental organisation nor
 # does it submit to any jurisdiction.
 
+##############################################################################
+#.rst:
+#
+# ecbuild_print_summary
+# =====================
+#
+# Print a summary of the project, build environment and enabled features. ::
+#
+#   ecbuild_print_summary()
+#
+# If ``project_summary.cmake`` exist in the source root directory, a project
+# summary is printed by including this file.
+#
+# For a top level project, a summary of the build environment and a feature
+# summary are also printed.
+#
+##############################################################################
+
 macro( ecbuild_print_summary )
 
-    if( EXISTS ${PROJECT_SOURCE_DIR}/project_summary.cmake )
+  if( EXISTS ${PROJECT_SOURCE_DIR}/project_summary.cmake )
+
+    message( STATUS "---------------------------------------------------------" )
+    message( STATUS "Project ${PROJECT_NAME} summary" )
+    message( STATUS "---------------------------------------------------------" )
+
+    include( ${PROJECT_SOURCE_DIR}/project_summary.cmake )
+
+  endif()
+
+  if( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
+
+    ecbuild_define_links_target()
 
-		message( STATUS "---------------------------------------------------------" )
-		message( STATUS "Project ${PROJECT_NAME} summary" )
-		message( STATUS "---------------------------------------------------------" )
+    get_property( langs GLOBAL PROPERTY ENABLED_LANGUAGES )
 
-		include( ${PROJECT_SOURCE_DIR}/project_summary.cmake )
+    message( STATUS "---------------------------------------------------------" )
+    if( NOT ${DEVELOPER_MODE} )
+      message( STATUS "Build summary" )
+    else()
+      message( STATUS "Build summary -- ( DEVELOPER_MODE )" )
+    endif()
+    message( STATUS "---------------------------------------------------------" )
 
+    message( STATUS "system : [${BUILD_SITE}] [${CMAKE_SYSTEM}] [${EC_OS_NAME}.${EC_OS_BITS}]" )
+    message( STATUS "processor        : [${CMAKE_SYSTEM_PROCESSOR}]" )
+    if( EC_BIG_ENDIAN )
+      message( STATUS "endiness         : Big Endian -- IEEE [${IEEE_BE}]" )
+    endif()
+    if( EC_LITTLE_ENDIAN )
+      message( STATUS "endiness         : Little Endian -- IEEE [${IEEE_LE}]" )
+    endif()
+    message( STATUS "build type       : [${CMAKE_BUILD_TYPE}]" )
+    message( STATUS "timestamp        : [${EC_BUILD_TIMESTAMP}]" )
+    message( STATUS "install prefix   : [${CMAKE_INSTALL_PREFIX}]" )
+    if( EC_LINK_DIR )
+      message( STATUS "links prefix     : [${EC_LINK_DIR}]" )
     endif()
+    message( STATUS "---------------------------------------------------------" )
 
-    if( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
-	
-        ecbuild_define_links_target()
-
-        get_property( langs GLOBAL PROPERTY ENABLED_LANGUAGES )
-
-		message( STATUS "---------------------------------------------------------" )
-		if( NOT ${DEVELOPER_MODE} )
-			message( STATUS "Build summary" )
-		else()
-			message( STATUS "Build summary -- ( DEVELOPER_MODE )" )
-		endif()
-		message( STATUS "---------------------------------------------------------" )
-
-		message( STATUS "system : [${BUILD_SITE}] [${CMAKE_SYSTEM}] [${EC_OS_NAME}.${EC_OS_BITS}]" )
-		message( STATUS "processor        : [${CMAKE_SYSTEM_PROCESSOR}]" )
-		if( EC_BIG_ENDIAN )
-			message( STATUS "endiness         : Big Endian -- IEEE [${IEEE_BE}]" )
-		endif()
-		if( EC_LITTLE_ENDIAN )
-			message( STATUS "endiness         : Little Endian -- IEEE [${IEEE_LE}]" )
-		endif()
-		message( STATUS "build type       : [${CMAKE_BUILD_TYPE}]" )
-		message( STATUS "timestamp        : [${EC_BUILD_TIMESTAMP}]" )
-		message( STATUS "install prefix   : [${CMAKE_INSTALL_PREFIX}]" )
-		if( EC_LINK_DIR )
-			message( STATUS "links prefix     : [${EC_LINK_DIR}]" )
-		endif()
-        message( STATUS "---------------------------------------------------------" )
-
-        foreach( lang ${langs} )
-		  message( STATUS "${lang} -- ${CMAKE_${lang}_COMPILER_ID} ${CMAKE_${lang}_COMPILER_VERSION}"  )
-		  message( STATUS "    compiler   : ${CMAKE_${lang}_COMPILER} ${CMAKE_${lang}_FLAGS} ${CMAKE_${lang}_FLAGS_${CMAKE_BUILD_TYPE_CAPS}}" )
-		  message( STATUS "    link flags : ${CMAKE_${lang}_LINK_FLAGS}" )
-		endforeach()
-
-	message( STATUS "linker : ${CMAKE_LINKER}")
-	message( STATUS "ar     : ${CMAKE_AR}")
-	message( STATUS "ranlib : ${CMAKE_RANLIB}")
-	message( STATUS "link flags" )
-	message( STATUS "    executable [${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXEC_LINKER_FLAGS_${CMAKE_BUILD_TYPE_CAPS}}]" )
-	message( STATUS "    shared lib [${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_${CMAKE_BUILD_TYPE_CAPS}}]" )
-	message( STATUS "    static lib [${CMAKE_MODULE_LINKER_FLAGS} ${CMAKE_MODULE_LINKER_FLAGS_${CMAKE_BUILD_TYPE_CAPS}}]" )
-	message( STATUS "install rpath  : ${CMAKE_INSTALL_RPATH}" )
-
-	get_directory_property( defs COMPILE_DEFINITIONS )
-
-	message( STATUS "common definitions: ${defs}" )
-
-	message( STATUS "---------------------------------------------------------" )
-
-	### FEATURE SUMMARY
-
-	  # debug_var( CMAKE_VERSION )
-	  if( ${CMAKE_VERSION} VERSION_LESS "2.8.6" )
-		feature_summary( WHAT ALL )
-	  else()
-		feature_summary( WHAT ALL INCLUDE_QUIET_PACKAGES )
-	  endif()
-
-	### WARNINGS
+    foreach( lang ${langs} )
+      message( STATUS "${lang} -- ${CMAKE_${lang}_COMPILER_ID} ${CMAKE_${lang}_COMPILER_VERSION}"  )
+      message( STATUS "    compiler   : ${CMAKE_${lang}_COMPILER} ${CMAKE_${lang}_FLAGS} ${CMAKE_${lang}_FLAGS_${CMAKE_BUILD_TYPE_CAPS}}" )
+      message( STATUS "    link flags : ${CMAKE_${lang}_LINK_FLAGS}" )
+    endforeach()
 
-    # issue warnings / errors in case there are unused project files
-    ecbuild_warn_unused_files()
+    message( STATUS "linker : ${CMAKE_LINKER}")
+    message( STATUS "ar     : ${CMAKE_AR}")
+    message( STATUS "ranlib : ${CMAKE_RANLIB}")
+    message( STATUS "link flags" )
+    message( STATUS "    executable [${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_${CMAKE_BUILD_TYPE_CAPS}}]" )
+    message( STATUS "    shared lib [${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_${CMAKE_BUILD_TYPE_CAPS}}]" )
+    message( STATUS "    static lib [${CMAKE_MODULE_LINKER_FLAGS} ${CMAKE_MODULE_LINKER_FLAGS_${CMAKE_BUILD_TYPE_CAPS}}]" )
+    message( STATUS "install rpath  : ${CMAKE_INSTALL_RPATH}" )
+
+    get_directory_property( defs COMPILE_DEFINITIONS )
 
-    # issue a warning that 'make install' mighty be broken for old cmakes
-    if( ${CMAKE_VERSION} VERSION_LESS "2.8.3" )
-
-        message( STATUS " +++ WARNING +++ WARNING +++ WARNING +++" )
-        message( STATUS " +++ " )
-		message( STATUS " +++ This CMake version [${CMAKE_VERSION}] is rather OLD !!" )
-        message( STATUS " +++ " )
-        message( STATUS " +++ We work hard to keep CMake backward compatibility (support >= 2.6.4)" )
-        message( STATUS " +++ but there are some limits inherent to older versions." )
-        message( STATUS " +++ " )
-        message( STATUS " +++ You will be able to build the software... " )
-        message( STATUS " +++ " )
-        message( STATUS " +++ But: " )
-        message( STATUS " +++     * the 'make install' target most likely will NOT WORK" )
-        message( STATUS " +++     * if you want to install these binaries you might need to copy them by yourself" )
-        message( STATUS " +++     * the binaries are in '${CMAKE_BINARY_DIR}' /lib and /bin" )
-        message( STATUS " +++     * copying headers will take substantially more work, and you might end up copying files that won't be needed" )
-        message( STATUS " +++ " )
-        message( STATUS " +++ Therefore, we recommend that you:  " )
-        message( STATUS " +++     * upgrade to a newer CMake with version at least >= 2.8.3" )
-        message( STATUS " +++     * remove this build directory '${CMAKE_BINARY_DIR}'" )
-        message( STATUS " +++     * rerun a newer cmake on an new empty build directory" )
-        message( STATUS " +++ " )
-        message( STATUS " +++ WARNING +++ WARNING +++ WARNING +++" )
+    message( STATUS "common definitions: ${defs}" )
 
+    message( STATUS "---------------------------------------------------------" )
+
+    ### FEATURE SUMMARY
+
+    # debug_var( CMAKE_VERSION )
+    if( ${CMAKE_VERSION} VERSION_LESS "2.8.6" )
+      feature_summary( WHAT ALL )
+    else()
+      feature_summary( WHAT ALL INCLUDE_QUIET_PACKAGES )
     endif()
 
-    endif( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
+    ### WARNINGS
+
+    # issue warnings / errors in case there are unused project files
+    ecbuild_warn_unused_files()
+
+  endif( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
 
 endmacro( ecbuild_print_summary )
diff --git a/cmake/ecbuild_project_files.cmake b/cmake/ecbuild_project_files.cmake
index f304772..fbf3015 100644
--- a/cmake/ecbuild_project_files.cmake
+++ b/cmake/ecbuild_project_files.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
@@ -16,30 +16,29 @@ macro( ecbuild_find_files_recursive aFileList )
 
 list( APPEND ecbuild_project_extensions c cc cpp cxx ) # for the moment skip ( h hh )
 
-# first find all the files in the directory
 foreach( aExt ${ecbuild_project_extensions} )
-
-    file( GLOB_RECURSE listFilesWithExt *.${aExt})
-
-    list( LENGTH  listFilesWithExt sizeFilesWithExt )
-    if( sizeFilesWithExt GREATER 0 )
-      set( ${aFileList} ${${aFileList}} ${listFilesWithExt} )
-    endif()
-
+  set( globPatterns ${globPatterns} *.${aExt} )
 endforeach()
 
+# This globs for only one pattern at a time
+# Shell extglob patterns are unfortunately not supported.
+file( GLOB_RECURSE ${aFileList} ${globPatterns} )
+
 endmacro()
 
 ##############################################################################
 # finds the unused files on all the project
 function( ecbuild_find_project_files )
 
-  ecbuild_find_files_recursive( cwdFiles )
+  # Only do this if we actually care to warn about unused files
+  if( CHECK_UNUSED_FILES )
+    ecbuild_find_files_recursive( cwdFiles )
 
-  # this list will be kept
-  set( EC_PROJECT_FILES ${EC_PROJECT_FILES} ${cwdFiles} CACHE INTERNAL "" )
-  # this list will be progressevely emptied
-  set( EC_UNUSED_FILES  ${EC_UNUSED_FILES}  ${cwdFiles} CACHE INTERNAL "" )
+    # this list will be kept
+    set( EC_PROJECT_FILES ${EC_PROJECT_FILES} ${cwdFiles} CACHE INTERNAL "" )
+    # this list will be progressevely emptied
+    set( EC_UNUSED_FILES  ${EC_UNUSED_FILES}  ${cwdFiles} CACHE INTERNAL "" )
+  endif()
 
 endfunction()
 
@@ -47,27 +46,30 @@ endfunction()
 # removed used files from unused list
 macro( ecbuild_declare_project_files )
 
-  foreach( _afile ${ARGV} )
+  # Only do this if we actually care to warn about unused files
+  if( CHECK_UNUSED_FILES )
+    foreach( _afile ${ARGV} )
 
-    # debug_var( _afile )
+      # debug_var( _afile )
 
-    get_property( _src_gen SOURCE ${_afile} PROPERTY GENERATED )
+      get_property( _src_gen SOURCE ${_afile} PROPERTY GENERATED )
 
-    if( NOT _src_gen )
+      if( NOT _src_gen )
 
-    	get_filename_component( _abspath ${_afile} ABSOLUTE )
+        get_filename_component( _abspath ${_afile} ABSOLUTE )
 
-    	# check for existance of all declared files
-	    if( EXISTS ${_abspath} )
-    	    list( REMOVE_ITEM EC_UNUSED_FILES ${_abspath} )
-	    else()
-			message( FATAL_ERROR "In directory ${CMAKE_CURRENT_SOURCE_DIR} file ${_afile} was declared in CMakeLists.txt but not found" )
-    	endif()
-    endif()
+        # check for existance of all declared files
+        if( EXISTS ${_abspath} )
+            list( REMOVE_ITEM EC_UNUSED_FILES ${_abspath} )
+        else()
+        message( FATAL_ERROR "In directory ${CMAKE_CURRENT_SOURCE_DIR} file ${_afile} was declared in CMakeLists.txt but not found" )
+        endif()
+      endif()
 
-  endforeach()
+    endforeach()
 
-  # rewrite the unused file list in cache
-  set( EC_UNUSED_FILES ${EC_UNUSED_FILES} CACHE INTERNAL "unused files" )
+    # rewrite the unused file list in cache
+    set( EC_UNUSED_FILES ${EC_UNUSED_FILES} CACHE INTERNAL "unused files" )
+  endif()
 
 endmacro()
diff --git a/cmake/ecbuild_requires_macro_version.cmake b/cmake/ecbuild_requires_macro_version.cmake
index dbdcc05..ef13d64 100644
--- a/cmake/ecbuild_requires_macro_version.cmake
+++ b/cmake/ecbuild_requires_macro_version.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -6,6 +6,18 @@
 # granted to it by virtue of its status as an intergovernmental organisation nor
 # does it submit to any jurisdiction.
 
+##############################################################################
+#.rst:
+#
+# ecbuild_requires_macro_version
+# ==============================
+#
+# Check that the ecBuild version satisfied a given minimum version or fail. ::
+#
+#   ecbuild_requires_macro_version( <minimum-version> )
+#
+##############################################################################
+
 macro( ecbuild_requires_macro_version req_vrs )
 
 	if( ECBUILD_MACRO_VERSION VERSION_LESS ${req_vrs} )
diff --git a/cmake/ecbuild_separate_sources.cmake b/cmake/ecbuild_separate_sources.cmake
index 71d56b3..55c6d8f 100644
--- a/cmake/ecbuild_separate_sources.cmake
+++ b/cmake/ecbuild_separate_sources.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -7,7 +7,36 @@
 # does it submit to any jurisdiction.
 
 ##############################################################################
-# macro for separating sources sccording to language
+#.rst:
+#
+# ecbuild_separate_sources
+# ========================
+#
+# Separate a given list of sources according to language. ::
+#
+#   ecbuild_separate_sources( TARGET <name>
+#                             SOURCES <source1> [ <source2> ... ] )
+#
+# Options
+# -------
+#
+# TARGET : required
+#   base name for the CMake output variables to set
+#
+# SOURCES : required
+#   list of source files to separate
+#
+# Output variables
+# ----------------
+#
+# If any file of the following group of extensions is present in the list of
+# sources, the corresponding CMake variable is set:
+#
+# :<target>_h_srcs:   list of sources with extension .h, .hxx, .hh, .hpp, .H
+# :<target>_c_srcs:   list of sources with extension .c
+# :<target>_cxx_srcs: list of sources with extension .cc, .cxx, .cpp, .C
+# :<target>_f_srcs:   list of sources with extension .f, .F, .for, f77, .f90, .f95
+#
 ##############################################################################
 
 macro( ecbuild_separate_sources )
@@ -60,4 +89,3 @@ macro( ecbuild_separate_sources )
 #    debug_var( ${_PAR_TARGET}_f_srcs )
 
 endmacro( ecbuild_separate_sources  )
-
diff --git a/cmake/ecbuild_setup_test_framework.cmake b/cmake/ecbuild_setup_test_framework.cmake
index 86f026e..538a433 100644
--- a/cmake/ecbuild_setup_test_framework.cmake
+++ b/cmake/ecbuild_setup_test_framework.cmake
@@ -1,42 +1,41 @@
 ecbuild_add_option( FEATURE TESTS
-					DEFAULT ON
-					DESCRIPTION "Enable the unit tests" )
+                    DEFAULT ON
+                    DESCRIPTION "Enable the unit tests" )
 
 if( ENABLE_TESTS )
 
-	# Try to find compiled boost
+  # Try to find compiled boost
 
-	if( BOOST_ROOT OR BOOSTROOT OR DEFINED ENV{BOOST_ROOT} OR DEFINED ENV{BOOSTROOT} )
-		set( CMAKE_PREFIX_PATH ${BOOST_ROOT} ${BOOSTROOT} $ENV{BOOST_ROOT} $ENV{BOOSTROOT} ${CMAKE_PREFIX_PATH} )
-	endif()
+  # BOOST_ROOT or BOOSTROOT should take precedence on the search for location
+  if( BOOST_ROOT OR BOOSTROOT OR DEFINED ENV{BOOST_ROOT} OR DEFINED ENV{BOOSTROOT} )
+    set( CMAKE_PREFIX_PATH ${BOOST_ROOT} ${BOOSTROOT} $ENV{BOOST_ROOT} $ENV{BOOSTROOT} ${CMAKE_PREFIX_PATH} )
+  endif()
 
-	ecbuild_add_extra_search_paths( boost ) # also respects BOOST_ROOT
+  set( Boost_USE_MULTITHREADED  ON )
+  #   set( Boost_DEBUG              ON )
 
-	set( Boost_USE_MULTITHREADED  ON )
-#   set( Boost_DEBUG              ON )
+  find_package( Boost 1.47.0 COMPONENTS unit_test_framework )
 
-	find_package( Boost 1.47.0 COMPONENTS unit_test_framework )
+  set( ECBUILD_BOOST_HEADER_DIRS "${CMAKE_CURRENT_LIST_DIR}/include" )
 
-	set( ECBUILD_BOOST_HEADER_DIRS "${CMAKE_CURRENT_LIST_DIR}/include" )
+  if( Boost_FOUND AND Boost_UNIT_TEST_FRAMEWORK_LIBRARY )
 
-	if( Boost_FOUND AND Boost_UNIT_TEST_FRAMEWORK_LIBRARY )
+    set( HAVE_BOOST_UNIT_TEST 1 )
+    set( BOOST_UNIT_TEST_FRAMEWORK_LINKED 1 )
 
-		set( HAVE_BOOST_UNIT_TEST 1 )
-		set( BOOST_UNIT_TEST_FRAMEWORK_LINKED 1 )
+    message( STATUS "Using Boost for unit tests:\n    INC [${Boost_INCLUDE_DIRS}]\n    LIB [${Boost_UNIT_TEST_FRAMEWORK_LIBRARY}]" )
 
-		# message( STATUS "Boost unit test framework -- FOUND [${Boost_UNIT_TEST_FRAMEWORK_LIBRARY}]" )
+  else()
 
-	else()
+    message( STATUS "Boost unit test framework -- NOT FOUND" )
 
-		message( STATUS "Boost unit test framework -- NOT FOUND" )
+    set( HAVE_BOOST_UNIT_TEST 0 )
 
-		set( HAVE_BOOST_UNIT_TEST 0 )
+    # set( BOOST_UNIT_TEST_FRAMEWORK_HEADER_ONLY 1 )
+    # comment out this when ecbuild packs boost unit test inside...
+    # list( APPEND ECBUILD_BOOST_HEADER_DIRS "${CMAKE_CURRENT_LIST_DIR}/contrib/boost-1.55/include" )
+    # set( HAVE_BOOST_UNIT_TEST 1 )
 
-		# set( BOOST_UNIT_TEST_FRAMEWORK_HEADER_ONLY 1 )
-		# comment out this when ecbuild packs boost unit test inside...
-		# list( APPEND ECBUILD_BOOST_HEADER_DIRS "${CMAKE_CURRENT_LIST_DIR}/contrib/boost-1.55/include" )
-		# set( HAVE_BOOST_UNIT_TEST 1 )
-
-	endif()
+  endif()
 
 endif()
diff --git a/cmake/ecbuild_system.cmake b/cmake/ecbuild_system.cmake
index 939d92e..ca4f4fa 100644
--- a/cmake/ecbuild_system.cmake
+++ b/cmake/ecbuild_system.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -10,19 +10,19 @@
 # disallow in-source build
 
 if( EXISTS ${CMAKE_SOURCE_DIR}/CMakeCache.txt ) # check for failed attempts to build within the source tree
-   message( FATAL_ERROR "Project ${PROJECT_NAME} contains a CMakeCache.txt inside source tree [${CMAKE_SOURCE_DIR}/CMakeCache.txt].\n Please remove it and
-   make sure that source tree is prestine and clean of unintended files, before retrying." )
+    message( FATAL_ERROR "Project ${PROJECT_NAME} contains a CMakeCache.txt inside source tree [${CMAKE_SOURCE_DIR}/CMakeCache.txt].\n Please remove it and
+    make sure that source tree is prestine and clean of unintended files, before retrying." )
 endif()
 
 get_filename_component(srcdir "${CMAKE_SOURCE_DIR}" REALPATH)
 get_filename_component(bindir "${CMAKE_BINARY_DIR}" REALPATH)
 
 if(${srcdir} STREQUAL ${bindir})
-  message("######################################################")
-  message("You are attempting to build in your source directory (${srcdir}).")
-  message("You must run cmake from a different build directory.")
-  message("######################################################")
-  message( FATAL_ERROR "${PROJECT_NAME} requires an out of source build.\n Please create a separate build directory and run 'cmake path/to/project [options]' from there.")
+    message("######################################################")
+    message("You are attempting to build in your source directory (${srcdir}).")
+    message("You must run cmake from a different build directory.")
+    message("######################################################")
+    message( FATAL_ERROR "${PROJECT_NAME} requires an out of source build.\n Please create a separate build directory and run 'cmake path/to/project [options]' from there.")
 endif()
 
 ########################################################################################################
@@ -30,7 +30,7 @@ endif()
 
 set( ECBUILD_CMAKE_MINIMUM "2.8.4" )
 if( ${CMAKE_VERSION} VERSION_LESS ${ECBUILD_CMAKE_MINIMUM} )
-  message(FATAL_ERROR "${PROJECT_NAME} requires at least CMake ${ECBUILD_CMAKE_MINIMUM} -- you are using ${CMAKE_COMMAND} [${CMAKE_VERSION}]\n Please, get a newer version of CMake @ www.cmake.org" )
+    message(FATAL_ERROR "${PROJECT_NAME} requires at least CMake ${ECBUILD_CMAKE_MINIMUM} -- you are using ${CMAKE_COMMAND} [${CMAKE_VERSION}]\n Please, get a newer version of CMake @ www.cmake.org" )
 endif()
 
 set( ECBUILD_MACROS_DIR "${CMAKE_CURRENT_LIST_DIR}" CACHE INTERNAL "where ecbuild system is" )
@@ -39,243 +39,200 @@ include( "${ECBUILD_MACROS_DIR}/VERSION.cmake" )
 
 set( ecbuild_VERSION_STR "${ECBUILD_VERSION_STR}" )
 
-########################################################################################################
-# define cmake policies
-
-# Included scripts don't automatic cmake_policy PUSH and POP
-
-if( POLICY CMP0011 )
-	cmake_policy( SET CMP0011 OLD )
-endif()
-
-# Allow use of the LOCATION target property.
-
-if( POLICY CMP0026 )
-	cmake_policy( SET CMP0026 OLD )
-endif()
-
-# for macosx use @rpath in a target’s install name
-
-if( POLICY CMP0042 )
-	cmake_policy( SET CMP0042 NEW )
-	set( CMAKE_MACOSX_RPATH ON )
-endif()
-
-# Error on non-existent target in get_target_property
+# Set policies
+include( ecbuild_policies NO_POLICY_SCOPE )
 
-if( POLICY CMP0045 )
-	cmake_policy( SET CMP0045 NEW )
-endif()
+# set capitalised project name
 
-# Error on non-existent target in get_target_property
-
-if( POLICY CMP0046 )
-	cmake_policy( SET CMP0046 NEW )
-endif()
-
-# Error on non-existent dependency in add_dependencies
-
-if( POLICY CMP0046 )
-	cmake_policy( SET CMP0050 NEW )
-endif()
-
-# Reject source and build dirs in installed INTERFACE_INCLUDE_DIRECTORIES
-
-if( POLICY CMP0052 )
-	cmake_policy( SET CMP0052 NEW )
-endif()
-
-# inside if() don't dereference variables if they are quoted 
-# e.g. "VAR" is not dereferenced 
-#      "${VAR}" is dereference only once
-
-if( POLICY CMP0054 )
-	cmake_policy( SET CMP0054 NEW )
-endif()
+string( TOUPPER ${PROJECT_NAME} PROJECT_NAME_CAPS )
+string( TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWCASE )
 
 ########################################################################################################
 # include our cmake macros, but only do so if this is the top project
 if( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
 
-	# hostname of where we build
+    # hostname of where we build
 
-	site_name( BUILD_SITE )
-	mark_as_advanced( BUILD_SITE )
-	mark_as_advanced( BUILD_TESTING )
+    site_name( BUILD_SITE )
+    mark_as_advanced( BUILD_SITE )
+    mark_as_advanced( BUILD_TESTING )
 
-	set( ECBUILD_PROJECTS  "" CACHE INTERNAL "list of ecbuild (sub)projects that use ecbuild" )
+    set( ECBUILD_PROJECTS  "" CACHE INTERNAL "list of ecbuild (sub)projects that use ecbuild" )
 
-	message( STATUS "ecbuild   ${ecbuild_VERSION_STR}\t${ECBUILD_MACROS_DIR}" )
-	message( STATUS "cmake     ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}\t${CMAKE_COMMAND}" )
+    message( STATUS "ecbuild   ${ecbuild_VERSION_STR}\t${ECBUILD_MACROS_DIR}" )
+    message( STATUS "cmake     ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}\t${CMAKE_COMMAND}" )
 
-	if( CMAKE_TOOLCHAIN_FILE )
-		message( STATUS "toolchain ${CMAKE_TOOLCHAIN_FILE}" )
-	endif()
+    if( CMAKE_TOOLCHAIN_FILE )
+    message( STATUS "toolchain ${CMAKE_TOOLCHAIN_FILE}" )
+    endif()
 
-	if( ECBUILD_CACHE )
-		include( ${ECBUILD_CACHE} )
+    if( ECBUILD_CACHE )
+    include( ${ECBUILD_CACHE} )
       message( STATUS "cache     ${ECBUILD_CACHE}" )
-	endif()
+    endif()
 
-	message( STATUS "---------------------------------------------------------" )
+    message( STATUS "---------------------------------------------------------" )
 
-	# clear the build dir exported targets file (only on the top project)
+    # clear the build dir exported targets file (only on the top project)
 
-	set( TOP_PROJECT_TARGETS_FILE "${PROJECT_BINARY_DIR}/${CMAKE_PROJECT_NAME}-targets.cmake" CACHE INTERNAL "" )
-	file( REMOVE ${TOP_PROJECT_TARGETS_FILE} )
+    set( TOP_PROJECT_TARGETS_FILE "${PROJECT_BINARY_DIR}/${CMAKE_PROJECT_NAME}-targets.cmake" CACHE INTERNAL "" )
+    file( REMOVE ${TOP_PROJECT_TARGETS_FILE} )
 
-	# add backport support for versions up too 2.8.4
-	if( ${CMAKE_VERSION} VERSION_LESS "2.8" )
-		set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/2.8" ${CMAKE_MODULE_PATH} )
-	endif()
+    # add backport support for versions up too 2.8.4
+    if( ${CMAKE_VERSION} VERSION_LESS "2.8" )
+    set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/2.8" ${CMAKE_MODULE_PATH} )
+    endif()
 
-	# add extra macros from external contributions
-	set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/contrib" )
+    # add extra macros from external contributions
+    set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/contrib" )
 
-	# would bring FindEigen in, so for the moment keep it out
-	# set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/contrib/GreatCMakeCookOff" )
+    # would bring FindEigen in, so for the moment keep it out
+    # set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/contrib/GreatCMakeCookOff" )
 
-	include(CTest)                 # add cmake testing support
-	enable_testing()
+    include(CTest)                 # add cmake testing support
+    enable_testing()
 
-	# keep this until we modify the meaning to 'check' if installation worked
-	add_custom_target( check COMMAND ${CMAKE_CTEST_COMMAND} -V )
+    # keep this until we modify the meaning to 'check' if installation worked
+    add_custom_target( check COMMAND ${CMAKE_CTEST_COMMAND} -V )
 
-	############################################################################################
-	# define valid build types
+    ############################################################################################
+    # define valid build types
 
-	include(ecbuild_define_build_types)
+    include(ecbuild_define_build_types)
 
-	############################################################################################
-	# add cmake macros
+    ############################################################################################
+    # add cmake macros
 
-	include(AddFileDependencies)
+    include(AddFileDependencies)
 
-	include(CheckTypeSize)
-	include(CheckIncludeFile)
-	include(CheckIncludeFiles)
+    include(CheckTypeSize)
+    include(CheckIncludeFile)
+    include(CheckIncludeFiles)
 
-	include(CheckFunctionExists)
-	include(CheckSymbolExists)
+    include(CheckFunctionExists)
+    include(CheckSymbolExists)
 
-	include(CheckCCompilerFlag)
-	include(CheckCSourceCompiles)
-	include(CheckCSourceRuns)
+    include(CheckCCompilerFlag)
+    include(CheckCSourceCompiles)
+    include(CheckCSourceRuns)
 
-	include(CMakeParseArguments)
+    include(CMakeParseArguments)
 
-	# include(CMakePrintSystemInformation) # available in cmake 2.8.4
+    # include(CMakePrintSystemInformation) # available in cmake 2.8.4
 
-	if( CMAKE_CXX_COMPILER_LOADED )
-		include(CheckIncludeFileCXX)
-		include(CheckCXXCompilerFlag)
-		include(CheckCXXSourceCompiles)
-		include(CheckCXXSourceRuns)
-	endif()
+    if( CMAKE_CXX_COMPILER_LOADED )
+    include(CheckIncludeFileCXX)
+    include(CheckCXXCompilerFlag)
+    include(CheckCXXSourceCompiles)
+    include(CheckCXXSourceRuns)
+    endif()
 
-	if( CMAKE_Fortran_COMPILER_LOADED )
+    if( CMAKE_Fortran_COMPILER_LOADED )
         set( CMAKE_Fortran_MODULE_DIRECTORY  ${CMAKE_BINARY_DIR}/module CACHE PATH "directory for all fortran modules." )
-		include(CheckFortranFunctionExists)
-		if( CMAKE_C_COMPILER_LOADED AND ENABLE_FORTRAN_C_INTERFACE )
-			include(FortranCInterface)
-		endif()
-		set( EC_HAVE_FORTRAN 1 )
-	endif()
-
-	include(FeatureSummary) # support features in cmake
-
-	include(TestBigEndian)
-
-	############################################################################################
-	# backport of cmake > 2.8.4 functions
-
-	if( "${CMAKE_VERSION}" VERSION_LESS "2.8.6" )
-		include( ${CMAKE_CURRENT_LIST_DIR}/2.8/CMakePushCheckState.cmake )
-	else()
-		include(CMakePushCheckState)
-	endif()
-
-	############################################################################################
-	# add our macros
-
-	include( ecbuild_debug_var )
-	include( ecbuild_list_macros )
-
-	include( ecbuild_check_c_source )
-
-	if( CMAKE_CXX_COMPILER_LOADED )
-		include( ecbuild_check_cxx_source )
-		include( ecbuild_check_cxx11 )
-	endif()
-
-	if( CMAKE_Fortran_COMPILER_LOADED )
-		include( ecbuild_check_fortran_source )
-	endif()
-
-	include( ecbuild_requires_macro_version )
-	include( ecbuild_get_date )
-	include( ecbuild_add_persistent )
-	include( ecbuild_generate_config_headers )
-	include( ecbuild_generate_rpc )
-	include( ecbuild_generate_yy )
-	include( ecbuild_echo_targets )
-	include( ecbuild_add_option )
-	include( ecbuild_add_library )
-	include( ecbuild_add_executable )
-	include( ecbuild_append_to_rpath )
-	include( ecbuild_get_test_data )
-	include( ecbuild_add_cxx11_flags )
-	include( ecbuild_add_test )
-	include( ecbuild_add_resources )
-	include( ecbuild_get_resources )
-	include( ecbuild_project_files )
-	include( ecbuild_declare_project )
-	include( ecbuild_install_package )
-	include( ecbuild_separate_sources )
-	include( ecbuild_find_package )
-	include( ecbuild_use_package )
-	include( ecbuild_list_extra_search_paths )
-	include( ecbuild_add_extra_search_paths )
-	include( ecbuild_print_summary )
-	include( ecbuild_warn_unused_files )
-	include( ecbuild_find_mpi )
-	include( ecbuild_find_omp )
-	include( ecbuild_find_perl )
-	include( ecbuild_find_python )
-	include( ecbuild_find_lexyacc )
-	include( ecbuild_find_fortranlibs )
-	include( ecbuild_enable_fortran )
-	include( ecbuild_check_c_source )
-	include( ecbuild_check_cxx_source )
-	include( ecbuild_check_fortran_source )
-	include( ecbuild_bundle )
-	include( ecbuild_pkgconfig )
-	include( ecbuild_cache )
-
-	include( ${CMAKE_CURRENT_LIST_DIR}/contrib/GetGitRevisionDescription.cmake )
-
-	############################################################################################
-	# kickstart the build system
-
-  	ecbuild_prepare_cache()
-	include( ecbuild_define_options )               # define build options
-	include( ecbuild_check_compiler )               # check for compiler characteristics
-	include( ecbuild_check_os )                     # check for os characteristics
-	include( ecbuild_check_functions )              # check for available functions
-	include( ecbuild_define_paths )                 # define installation paths
-	include( ecbuild_links_target )                 # define the links target
-	include( ecbuild_setup_test_framework )         # setup test framework
- 	ecbuild_flush_cache()
-
-	############################################################################################
-	# define the build timestamp
-
-	if( NOT DEFINED EC_BUILD_TIMESTAMP )
-		ecbuild_get_timestamp( EC_BUILD_TIMESTAMP )
-		set( EC_BUILD_TIMESTAMP  "${EC_BUILD_TIMESTAMP}" CACHE INTERNAL "Build timestamp" )
-	endif()
-
-	message( STATUS "---------------------------------------------------------" )
+    include(CheckFortranFunctionExists)
+    if( CMAKE_C_COMPILER_LOADED AND ENABLE_FORTRAN_C_INTERFACE )
+    include(FortranCInterface)
+    endif()
+    set( EC_HAVE_FORTRAN 1 )
+    endif()
+
+    include(FeatureSummary) # support features in cmake
+
+    include(TestBigEndian)
+
+    ############################################################################################
+    # backport of cmake > 2.8.4 functions
+
+    if( "${CMAKE_VERSION}" VERSION_LESS "2.8.6" )
+    include( ${CMAKE_CURRENT_LIST_DIR}/2.8/CMakePushCheckState.cmake )
+    else()
+    include(CMakePushCheckState)
+    endif()
+
+    ############################################################################################
+    # add our macros
+
+    include( ecbuild_debug_var )
+    include( ecbuild_log )
+    include( ecbuild_list_macros )
+
+    include( ecbuild_check_c_source_return )
+    include( ecbuild_check_cxx_source_return )
+    include( ecbuild_check_cxx11 )
+    include( ecbuild_check_fortran_source_return )
+
+    include( ecbuild_requires_macro_version )
+    include( ecbuild_get_date )
+    include( ecbuild_add_persistent )
+    include( ecbuild_generate_config_headers )
+    include( ecbuild_generate_rpc )
+    include( ecbuild_generate_yy )
+    include( ecbuild_echo_targets )
+    include( ecbuild_features )
+    include( ecbuild_add_option )
+    include( ecbuild_add_library )
+    include( ecbuild_add_executable )
+    include( ecbuild_append_to_rpath )
+    include( ecbuild_download_resource )
+    include( ecbuild_get_test_data )
+    include( ecbuild_add_c_flags )
+    include( ecbuild_add_cxx_flags )
+    include( ecbuild_add_cxx11_flags )
+    include( ecbuild_get_cxx11_flags )
+    include( ecbuild_add_fortran_flags )
+    include( ecbuild_add_test )
+    include( ecbuild_add_resources )
+    include( ecbuild_get_resources )
+    include( ecbuild_dont_pack )
+    include( ecbuild_project_files )
+    include( ecbuild_declare_project )
+    include( ecbuild_install_project )
+    include( ecbuild_separate_sources )
+    include( ecbuild_find_package )
+    include( ecbuild_use_package )
+    include( ecbuild_list_extra_search_paths )
+    include( ecbuild_add_extra_search_paths )
+    include( ecbuild_print_summary )
+    include( ecbuild_warn_unused_files )
+    include( ecbuild_find_mpi )
+    include( ecbuild_find_omp )
+    include( ecbuild_find_perl )
+    include( ecbuild_find_python )
+    include( ecbuild_find_lexyacc )
+    include( ecbuild_find_fortranlibs )
+    include( ecbuild_git )
+    include( ecbuild_enable_fortran )
+    include( ecbuild_bundle )
+    include( ecbuild_pkgconfig )
+    include( ecbuild_cache )
+
+    include( ${CMAKE_CURRENT_LIST_DIR}/contrib/GetGitRevisionDescription.cmake )
+
+    ############################################################################################
+    # kickstart the build system
+
+      ecbuild_prepare_cache()
+
+    include( ecbuild_define_options )               # define build options
+    include( ecbuild_check_compiler )               # check for compiler characteristics
+    include( ecbuild_check_os )                     # check for os characteristics
+    include( ecbuild_check_functions )              # check for available functions
+    include( ecbuild_define_paths )                 # define installation paths
+    include( ecbuild_links_target )                 # define the links target
+    include( ecbuild_setup_test_framework )         # setup test framework
+    include( ecbuild_define_uninstall )             # define uninstall target
+
+    ecbuild_flush_cache()
+
+    ############################################################################################
+    # define the build timestamp
+
+    if( NOT DEFINED EC_BUILD_TIMESTAMP )
+        ecbuild_get_timestamp( EC_BUILD_TIMESTAMP )
+        set( EC_BUILD_TIMESTAMP  "${EC_BUILD_TIMESTAMP}" CACHE INTERNAL "Build timestamp" )
+    endif()
+
+    message( STATUS "---------------------------------------------------------" )
 
 endif()
 
diff --git a/cmake/ecbuild_uninstall.cmake.in b/cmake/ecbuild_uninstall.cmake.in
new file mode 100644
index 0000000..2037e36
--- /dev/null
+++ b/cmake/ecbuild_uninstall.cmake.in
@@ -0,0 +1,21 @@
+if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+  message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+
+file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
+string(REGEX REPLACE "\n" ";" files "${files}")
+foreach(file ${files})
+  message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
+  if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
+    exec_program(
+      "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
+      OUTPUT_VARIABLE rm_out
+      RETURN_VALUE rm_retval
+      )
+    if(NOT "${rm_retval}" STREQUAL 0)
+      message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
+    endif(NOT "${rm_retval}" STREQUAL 0)
+  else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
+    message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
+  endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
+endforeach(file)
diff --git a/cmake/ecbuild_use_package.cmake b/cmake/ecbuild_use_package.cmake
index 3d77384..acbe495 100644
--- a/cmake/ecbuild_use_package.cmake
+++ b/cmake/ecbuild_use_package.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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.
@@ -7,200 +7,280 @@
 # does it submit to any jurisdiction.
 
 ##############################################################################
-# function for adding a subproject directory
+#.rst:
+#
+# ecbuild_use_package
+# ===================
+#
+# Add a project from a source directory, a subdirectory or search for it. ::
+#
+#   ecbuild_use_package( PROJECT <name>
+#                        [ VERSION <version> [ EXACT ] ]
+#                        [ REQUIRED ]
+#                        [ QUIET ] )
+#
+# Options
+# -------
+#
+# NAME : required
+#   package name (used as ``Find<name>.cmake`` and ``<name>-config.cmake``)
+#
+# VERSION : optional
+#   minimum required package version
+#
+# EXACT : optional, requires VERSION
+#   require the exact version rather than a minimum version
+#
+# REQUIRED : optional
+#   fail if package cannot be found
+#
+# QUIET : optional
+#   do not output package information if found
+#
+# Input variables
+# ---------------
+#
+# The following CMake variables influence the behaviour if set (``<name>``
+# is the package name as given, ``<NAME>`` is the capitalised version):
+#
+# :<NAME>_SOURCE:    path to source directory for package
+# :SUBPROJECT_DIRS:  list of additional paths to search for package source
+#
+# See also ``ecbuild_find_package`` for additional CMake variables relevant
+# when search for the package (step 6 below).
+#
+# Usage
+# -----
+#
+# Use another CMake project as a dependency by either building it from source
+# i.e. adding its source directory as a subdirectory or searching for it. This
+# transparently deals with the case where the project has already been included
+# e.g. because multiple projects with shared dependencies are built together.
+#
+# The search proceeds as follows:
+#
+# 1.  If ``SUBPROJECT_DIRS`` is set, each directory in the list is searched
+#     for a subdirectory <name> and ``<NAME>_SOURCE`` is set to the first one
+#     found (if any).
+#
+# 2.  If ``<NAME>_SOURCE`` is set, check if this directory is a CMake project
+#     (contains ``CMakeLists.txt`` and fail if not.
+#
+# 3.  Otherwise, check if the current directory has a ``<name>`` subdirectory.
+#
+# 4.  If the project has not been previously marked as found or added as a
+#     subdirectory and a project source directory has been found in steps 1-3
+#     add this subdirectory.
+#
+# 5.  If the project has been marked as found, check the version.
+#
+# 6.  Otherwise, search for the project using ``ecbuild_find_package``.
+#
 ##############################################################################
 
 macro( ecbuild_use_package )
 
-    set( options            REQUIRED QUIET EXACT )
-    set( single_value_args  PROJECT VERSION )
-    set( multi_value_args )
+  set( options            REQUIRED QUIET EXACT )
+  set( single_value_args  PROJECT VERSION )
+  set( multi_value_args )
 
-	cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+  cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
 
-	if(_p_UNPARSED_ARGUMENTS)
-	  message(FATAL_ERROR "Unknown keywords given to ecbuild_use_package(): \"${_p_UNPARSED_ARGUMENTS}\"")
-    endif()
+  if(_p_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "Unknown keywords given to ecbuild_use_package(): \"${_p_UNPARSED_ARGUMENTS}\"")
+  endif()
 
-	if( NOT _p_PROJECT  )
-      message(FATAL_ERROR "The call to ecbuild_use_package() doesn't specify the PROJECT.")
-    endif()
-
-	if( _p_EXACT AND NOT _p_VERSION )
-      message(FATAL_ERROR "Call to ecbuild_use_package() requests EXACT but doesn't specify VERSION.")
-    endif()
+  if( NOT _p_PROJECT  )
+    message(FATAL_ERROR "The call to ecbuild_use_package() doesn't specify the PROJECT.")
+  endif()
 
-    # try to find the package as a subproject and build it
+  if( _p_EXACT AND NOT _p_VERSION )
+    message(FATAL_ERROR "Call to ecbuild_use_package() requests EXACT but doesn't specify VERSION.")
+  endif()
 
-	string( TOUPPER ${_p_PROJECT} PNAME )
+  # try to find the package as a subproject and build it
 
-    # user defined dir with subprojects
+  string( TOUPPER ${_p_PROJECT} pkgUPPER )
 
-    if( NOT DEFINED ${PNAME}_SOURCE AND DEFINED SUBPROJECT_DIRS )
-        foreach( dir ${SUBPROJECT_DIRS} )
-			if( EXISTS ${dir}/${_p_PROJECT} AND EXISTS ${dir}/${_p_PROJECT}/CMakeLists.txt )
-				set( ${PNAME}_SOURCE "${dir}/${_p_PROJECT}" )
-            endif()
-        endforeach()
-    endif()
+  # user defined dir with subprojects
 
-    # user defined path to subproject
+  if( NOT DEFINED ${pkgUPPER}_SOURCE AND DEFINED SUBPROJECT_DIRS )
+    ecbuild_debug("ecbuild_use_package(${_p_PROJECT}): scanning subproject directories ${SUBPROJECT_DIRS}")
+    foreach( dir ${SUBPROJECT_DIRS} )
+      if( EXISTS ${dir}/${_p_PROJECT} AND EXISTS ${dir}/${_p_PROJECT}/CMakeLists.txt )
+        ecbuild_debug("ecbuild_use_package(${_p_PROJECT}):   setting ${pkgUPPER}_SOURCE to ${dir}/${_p_PROJECT}")
+        set( ${pkgUPPER}_SOURCE "${dir}/${_p_PROJECT}" )
+      endif()
+    endforeach()
+  endif()
 
-    if( DEFINED ${PNAME}_SOURCE )
+  # user defined path to subproject
 
-        if( NOT EXISTS ${${PNAME}_SOURCE} OR NOT EXISTS ${${PNAME}_SOURCE}/CMakeLists.txt )
-			message( FATAL_ERROR "User defined source directory '${${PNAME}_SOURCE}' for project '${_p_PROJECT}' does not exist or does not contain a CMakeLists.txt file." )
-        endif()
+  if( DEFINED ${pkgUPPER}_SOURCE )
 
-		set( ${PNAME}_subproj_dir_ "${${PNAME}_SOURCE}" )
+    if( NOT EXISTS ${${pkgUPPER}_SOURCE} OR NOT EXISTS ${${pkgUPPER}_SOURCE}/CMakeLists.txt )
+      message( FATAL_ERROR "User defined source directory '${${pkgUPPER}_SOURCE}' for project '${_p_PROJECT}' does not exist or does not contain a CMakeLists.txt file." )
+    endif()
 
-    else() # default is 'dropped in' subdirectory named as project
+    set( ${pkgUPPER}_subproj_dir_ "${${pkgUPPER}_SOURCE}" )
 
-		if( EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_p_PROJECT} AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_p_PROJECT}/CMakeLists.txt )
-			set( ${PNAME}_subproj_dir_ "${CMAKE_CURRENT_SOURCE_DIR}/${_p_PROJECT}" )
-        endif()
+  else() # default is 'dropped in' subdirectory named as project
 
+    if( EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_p_PROJECT} AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_p_PROJECT}/CMakeLists.txt )
+      ecbuild_debug("ecbuild_use_package(${_p_PROJECT}): found ${_p_PROJECT} in subdirectory ${CMAKE_CURRENT_SOURCE_DIR}/${_p_PROJECT}")
+      set( ${pkgUPPER}_subproj_dir_ "${CMAKE_CURRENT_SOURCE_DIR}/${_p_PROJECT}" )
     endif()
 
-    # check if was already added as subproject ...
+  endif()
 
-    set( _just_added 0 )
-    set( _do_version_check 0 )
-    set( _source_description "" )
+  # check if was already added as subproject ...
 
-	list( FIND ECBUILD_PROJECTS ${_p_PROJECT} _ecbuild_project_${PNAME} )
+  set( _just_added 0 )
+  set( _do_version_check 0 )
+  set( _source_description "" )
 
-    if( NOT _ecbuild_project_${PNAME} EQUAL "-1" )
-		set( ${PNAME}_previous_subproj_ 1 )
-    else()
-		set( ${PNAME}_previous_subproj_ 0 )
-    endif()
+  list( FIND ECBUILD_PROJECTS ${_p_PROJECT} _ecbuild_project_${pkgUPPER} )
 
-    # solve capitalization issues
-    
-	if( ${_p_PROJECT}_FOUND AND NOT ${PNAME}_FOUND )
-        set( ${PNAME}_FOUND 1 ) 
-    endif()
-	if( ${PNAME}_FOUND AND NOT ${_p_PROJECT}_FOUND )
-		set( ${_p_PROJECT}_FOUND 1 )
-    endif()
+  if( NOT _ecbuild_project_${pkgUPPER} EQUAL "-1" )
+    ecbuild_debug("ecbuild_use_package(${_p_PROJECT}): ${_p_PROJECT} was previously added as a subproject")
+    set( ${pkgUPPER}_previous_subproj_ 1 )
+  else()
+    ecbuild_debug("ecbuild_use_package(${_p_PROJECT}): ${_p_PROJECT} was not previously added as a subproject")
+    set( ${pkgUPPER}_previous_subproj_ 0 )
+  endif()
+
+  # solve capitalization issues
+
+  if( ${_p_PROJECT}_FOUND AND NOT ${pkgUPPER}_FOUND )
+    set( ${pkgUPPER}_FOUND 1 )
+  endif()
+  if( ${pkgUPPER}_FOUND AND NOT ${_p_PROJECT}_FOUND )
+    set( ${_p_PROJECT}_FOUND 1 )
+  endif()
+
+  # Case 1) project was NOT previously added as subproject and is NOT already FOUND
 
-    # Case 1) project was NOT added as subproject and is NOT FOUND
+  if( NOT ${pkgUPPER}_FOUND AND NOT ${pkgUPPER}_previous_subproj_ )
 
-	if( NOT ${PNAME}_FOUND AND NOT ${PNAME}_previous_subproj_ )
+    # check if SUBPROJDIR is set
 
-            # check if SUBPROJDIR is set
+    if( DEFINED ${pkgUPPER}_subproj_dir_ )
 
-			if( DEFINED ${PNAME}_subproj_dir_ )
+      ecbuild_debug("ecbuild_use_package(${_p_PROJECT}): 1) project was NOT previously added as subproject and is NOT already FOUND")
 
-                # check version is acceptable
-                set( _just_added 1 )
-                set( _do_version_check 1 )
-				set( _source_description "sub-project ${_p_PROJECT} (sources)" )
+      # check version is acceptable
+      set( _just_added 1 )
+      set( _do_version_check 1 )
+      set( _source_description "sub-project ${_p_PROJECT} (sources)" )
 
-                # add as a subproject
+      # add as a subproject
 
-				set( ${PNAME}_subproj_dir_ ${${PNAME}_subproj_dir_} CACHE PATH "Path to ${_p_PROJECT} source directory" )
+      set( ${pkgUPPER}_subproj_dir_ ${${pkgUPPER}_subproj_dir_} CACHE PATH "Path to ${_p_PROJECT} source directory" )
 
-				set( ECBUILD_PROJECTS ${ECBUILD_PROJECTS} ${_p_PROJECT} CACHE INTERNAL "" )
+      set( ECBUILD_PROJECTS ${ECBUILD_PROJECTS} ${_p_PROJECT} CACHE INTERNAL "" )
 
-				add_subdirectory( ${${PNAME}_subproj_dir_} ${_p_PROJECT} )
+      ecbuild_debug("ecbuild_use_package(${_p_PROJECT}):    ${_p_PROJECT} found in subdirectory ${${pkgUPPER}_subproj_dir_}")
+      add_subdirectory( ${${pkgUPPER}_subproj_dir_} ${_p_PROJECT} )
 
-                set( ${PNAME}_FOUND 1 )
-				set( ${_p_PROJECT}_VERSION ${${PNAME}_VERSION} )
+      set( ${_p_PROJECT}_BASE_DIR ${CMAKE_BINARY_DIR} )
 
-            endif()
+      set( ${pkgUPPER}_FOUND 1 )
+      set( ${_p_PROJECT}_VERSION ${${pkgUPPER}_VERSION} )
 
     endif()
 
-    # Case 2) project was already added as subproject, so is already FOUND -- BUT must check version acceptable
+  endif()
 
-	if( ${PNAME}_previous_subproj_ )
+  # Case 2) project was already added as subproject, so is already FOUND -- BUT must check version acceptable
 
-        if( NOT ${PNAME}_FOUND )
-			message( FATAL_ERROR "${_p_PROJECT} was already included as sub-project but ${PNAME}_FOUND isn't set -- this is likely a BUG in ecbuild" )
-        endif()
+  if( ${pkgUPPER}_previous_subproj_ )
 
-        # check version is acceptable
-        set( _do_version_check 1 )
-		set( _source_description "already existing sub-project ${_p_PROJECT} (sources)" )
+    ecbuild_debug("ecbuild_use_package(${_p_PROJECT}): 2) project was already added as subproject, check version is acceptable")
 
+    if( NOT ${pkgUPPER}_FOUND )
+      message( FATAL_ERROR "${_p_PROJECT} was already included as sub-project but ${pkgUPPER}_FOUND isn't set -- this is likely a BUG in ecbuild" )
     endif()
 
-    # Case 3) project was NOT added as subproject, but is FOUND -- so it was previously found as a binary ( either build or install tree )
+    # check version is acceptable
+    set( _do_version_check 1 )
+    set( _source_description "already existing sub-project ${_p_PROJECT} (sources)" )
 
-	if( ${PNAME}_FOUND AND NOT ${PNAME}_previous_subproj_ AND NOT _just_added )
+  endif()
 
-        # check version is acceptable
-        set( _do_version_check 1 )
-		set( _source_description "previously found package ${_p_PROJECT} (binaries)" )
+  # Case 3) project was NOT added as subproject, but is FOUND -- so it was previously found as a binary ( either build or install tree )
 
-    endif()
+  if( ${pkgUPPER}_FOUND AND NOT ${pkgUPPER}_previous_subproj_ AND NOT _just_added )
 
-    # test version for Cases 1,2,3
-
-# debug_var( _p_PROJECT )
-# debug_var( _p_VERSION )
-# debug_var( ${PNAME}_VERSION )
-# debug_var( ${_p_PROJECT}_VERSION )
-# debug_var( _just_added )
-# debug_var( _do_version_check )
-# debug_var( _source_description )
-# debug_var( ${PNAME}_FOUND )
-# debug_var( ${PNAME}_previous_subproj_ )
-
-	if( _p_VERSION AND _do_version_check )
-			if( _p_EXACT )
-				if( NOT ${_p_PROJECT}_VERSION VERSION_EQUAL _p_VERSION )
-					message( FATAL_ERROR "${PROJECT_NAME} requires (exactly) ${_p_PROJECT} = ${_p_VERSION} -- detected as ${_source_description} ${${_p_PROJECT}_VERSION}" )
-                endif()
-            else()
-				if( _p_VERSION VERSION_LESS ${_p_PROJECT}_VERSION OR _p_VERSION VERSION_EQUAL ${_p_PROJECT}_VERSION )
-					message( STATUS "${PROJECT_NAME} requires ${_p_PROJECT} >= ${_p_VERSION} -- detected as ${_source_description} ${${_p_PROJECT}_VERSION}" )
-				else()
-					message( FATAL_ERROR "${PROJECT_NAME} requires ${_p_PROJECT} >= ${_p_VERSION} -- detected only ${_source_description} ${${_p_PROJECT}_VERSION}" )
-                endif()
-            endif()
-    endif()
+    ecbuild_debug("ecbuild_use_package(${_p_PROJECT}): 3) project was NOT previously added as subproject, but is FOUND")
 
-    # Case 4) is NOT FOUND so far, NOT as sub-project (now or before), and NOT as binary neither 
-    #         so try to find precompiled binaries or a build tree
+    # check version is acceptable
+    set( _do_version_check 1 )
+    set( _source_description "previously found package ${_p_PROJECT} (binaries)" )
 
-    if( NOT ${PNAME}_FOUND )
+  endif()
 
-        set( _opts )
-		if( _p_VERSION )
-			list( APPEND _opts VERSION ${_p_VERSION} )
-        endif()
-		if( _p_EXACT )
-            list( APPEND _opts EXACT )
-        endif()
-		if( _p_REQUIRED )
-            list( APPEND _opts REQUIRED )
-        endif()
-    
-		ecbuild_find_package( NAME ${_p_PROJECT} ${_opts} )
+  # test version for Cases 1,2,3
 
-		if( ${_p_PROJECT}_FOUND )
+  # debug_var( _p_PROJECT )
+  # debug_var( _p_VERSION )
+  # debug_var( ${pkgUPPER}_VERSION )
+  # debug_var( ${_p_PROJECT}_VERSION )
+  # debug_var( _just_added )
+  # debug_var( _do_version_check )
+  # debug_var( _source_description )
+  # debug_var( ${pkgUPPER}_FOUND )
+  # debug_var( ${pkgUPPER}_previous_subproj_ )
 
-			set( ${PNAME}_FOUND ${${_p_PROJECT}_FOUND} )
+  if( _p_VERSION AND _do_version_check )
+    if( _p_EXACT )
+      if( NOT ${_p_PROJECT}_VERSION VERSION_EQUAL _p_VERSION )
+        message( FATAL_ERROR "${PROJECT_NAME} requires (exactly) ${_p_PROJECT} = ${_p_VERSION} -- detected as ${_source_description} ${${_p_PROJECT}_VERSION}" )
+      endif()
+    else()
+      if( _p_VERSION VERSION_LESS ${_p_PROJECT}_VERSION OR _p_VERSION VERSION_EQUAL ${_p_PROJECT}_VERSION )
+        message( STATUS "${PROJECT_NAME} requires ${_p_PROJECT} >= ${_p_VERSION} -- detected as ${_source_description} ${${_p_PROJECT}_VERSION}" )
+      else()
+        message( FATAL_ERROR "${PROJECT_NAME} requires ${_p_PROJECT} >= ${_p_VERSION} -- detected only ${_source_description} ${${_p_PROJECT}_VERSION}" )
+      endif()
+    endif()
+  endif()
 
-			message( STATUS "[${_p_PROJECT}] (${${_p_PROJECT}_VERSION})" )
+  # Case 4) is NOT FOUND so far, NOT as sub-project (now or before), and NOT as binary neither
+  #         so try to find precompiled binaries or a build tree
 
-            message( STATUS "   ${PNAME}_INCLUDE_DIRS : [${${PNAME}_INCLUDE_DIRS}]" )
-            if( ${PNAME}_DEFINITIONS )
-                message( STATUS "   ${PNAME}_DEFINITIONS : [${${PNAME}_DEFINITIONS}]" )
-            endif()
-            message( STATUS "   ${PNAME}_LIBRARIES : [${${PNAME}_LIBRARIES}]" )
+  if( NOT ${pkgUPPER}_FOUND )
 
-        endif()
+    ecbuild_debug("ecbuild_use_package(${_p_PROJECT}): 4) project has NOT been added as a subproject and is NOT already FOUND")
 
+    set( _opts )
+    if( _p_VERSION )
+      list( APPEND _opts VERSION ${_p_VERSION} )
+    endif()
+    if( _p_EXACT )
+      list( APPEND _opts EXACT )
+    endif()
+    if( _p_REQUIRED )
+      list( APPEND _opts REQUIRED )
     endif()
 
-### for when we change this macro to a function()
-#	set_parent_scope( ${PNAME}_FOUND )
-#	set_parent_scope( ${_p_PROJECT}_FOUND )
-#	set_parent_scope( ${PNAME}_VERSION )
-#	set_parent_scope( ${_p_PROJECT}_VERSION )
+    ecbuild_find_package( NAME ${_p_PROJECT} ${_opts} )
+
+    if( ${_p_PROJECT}_FOUND )
+      set( ${pkgUPPER}_FOUND ${${_p_PROJECT}_FOUND} )
+    endif()
+
+  endif()
+
+  if( ${pkgUPPER}_FOUND )
+    list( APPEND ${PROJECT_NAME_CAPS}_TPLS ${_p_PROJECT} )
+    list( REMOVE_DUPLICATES ${PROJECT_NAME_CAPS}_TPLS )
+  endif()
+
+  ### for when we change this macro to a function()
+  # set_parent_scope( ${pkgUPPER}_FOUND )
+  # set_parent_scope( ${_p_PROJECT}_FOUND )
+  # set_parent_scope( ${pkgUPPER}_VERSION )
+  # set_parent_scope( ${_p_PROJECT}_VERSION )
+  # set_parent_scope( ${_p_PROJECT}_BINARY_DIR )
 
 endmacro()
diff --git a/cmake/ecbuild_version.h.in b/cmake/ecbuild_version.h.in
index d274bf6..3ed96ce 100644
--- a/cmake/ecbuild_version.h.in
+++ b/cmake/ecbuild_version.h.in
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 1996-2014 ECMWF.
+ * (C) Copyright 1996-2015 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. 
diff --git a/cmake/ecbuild_warn_unused_files.cmake b/cmake/ecbuild_warn_unused_files.cmake
index c3aa7d5..084adb3 100644
--- a/cmake/ecbuild_warn_unused_files.cmake
+++ b/cmake/ecbuild_warn_unused_files.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
@@ -6,8 +6,28 @@
 # granted to it by virtue of its status as an intergovernmental organisation nor
 # does it submit to any jurisdiction.
 
-############################################################################################
-# print warnings about unused files
+##############################################################################
+#.rst:
+#
+# ecbuild_warn_unused_files
+# =========================
+#
+# Print warnings about unused source files in the project. ::
+#
+#   ecbuild_warn_unused_files()
+#
+# If the CMake variable ``CHECK_UNUSED_FILES`` is set, ecBuild will keep track
+# of any source files (.c, .cc, .cpp, .cxx) which are not part of a CMake
+# target. If set, this macro reports unused files if any have been found. This
+# is considered a fatal error unless ``UNUSED_FILES_LEVEL`` is set to a value
+# different from ``ERROR``.
+#
+# .. note ::
+#
+#   Enabling ``CHECK_UNUSED_FILES`` can slow down the CMake configure time
+#   considerably!
+#
+##############################################################################
 
 macro( ecbuild_warn_unused_files )
 
@@ -26,15 +46,14 @@ macro( ecbuild_warn_unused_files )
           endif()
     
           # if unused files where found, put the list on the file
-          list( LENGTH MARS_UNUSED_FILES MARS_LENGTH_UNUSED_FILES )
-          if( MARS_LENGTH_UNUSED_FILES )
+          if( EC_UNUSED_FILES )
     
             message( STATUS "")
             message( STATUS " !!!--- ${UNUSED_FILES_LEVEL} ---!!! ")
             message( STATUS " !!!--- ${UNUSED_FILES_LEVEL} ---!!! ")
             message( STATUS "")
             message( STATUS " Unused source files found:")
-            foreach( AFILE ${MARS_UNUSED_FILES} )
+            foreach( AFILE ${EC_UNUSED_FILES} )
               message( STATUS "     ${AFILE}")
               file( APPEND ${UNUSED_FILE} "${AFILE}\n" )
             endforeach()
diff --git a/cmake/include/ecbuild/boost_test_framework.h b/cmake/include/ecbuild/boost_test_framework.h
index 09e61dd..8cbd8e9 100644
--- a/cmake/include/ecbuild/boost_test_framework.h
+++ b/cmake/include/ecbuild/boost_test_framework.h
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 1996-2014 ECMWF.
+ * (C) Copyright 1996-2015 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.
diff --git a/cmake/pkg-config.pc.in b/cmake/pkg-config.pc.in
index 86031db..e6d903d 100644
--- a/cmake/pkg-config.pc.in
+++ b/cmake/pkg-config.pc.in
@@ -5,10 +5,10 @@ git_tag=@PKGCONFIG_GIT_TAG@
 
 prefix=@CMAKE_INSTALL_PREFIX@
 exec_prefix=${prefix}
-libdir=${prefix}/lib
-includedir=${prefix}/include
-bindir=${prefix}/bin
-fmoddir=${prefix}/include
+libdir=${prefix}/@INSTALL_LIB_DIR@
+includedir=${prefix}/@INSTALL_INCLUDE_DIR@
+bindir=${prefix}/@INSTALL_BIN_DIR@
+fmoddir=${prefix}/@INSTALL_INCLUDE_DIR@
 
 CC=@CMAKE_C_COMPILER@
 CXX=@CMAKE_CXX_COMPILER@
diff --git a/cmake/project-config.cmake.in b/cmake/project-config.cmake.in
index dbb936f..03f875b 100644
--- a/cmake/project-config.cmake.in
+++ b/cmake/project-config.cmake.in
@@ -47,9 +47,12 @@ set( @PNAME at _LIBRARIES        ${@PNAME at _SELF_LIBRARIES}   ${@PNAME at _TPL_LIBRARIE
 
 set( @PNAME at _FEATURES    "@CONF_FEATURES@" )
 foreach( _f ${@PNAME at _FEATURES} )
-	set( ${_f} 1 )
+	set( @PNAME at _HAVE_${_f} 1 )
 endforeach()
 
+# Has this configuration been exported from a build tree?
+set( @PNAME at _IS_BUILD_DIR_EXPORT @_is_build_dir_export@ )
+
 if( EXISTS ${@PNAME at _CMAKE_DIR}/@CONF_IMPORT_FILE@ )
   set( @PNAME at _IMPORT_FILE "${@PNAME at _CMAKE_DIR}/@CONF_IMPORT_FILE@" )
   include( ${@PNAME at _IMPORT_FILE} )
@@ -59,9 +62,7 @@ endif()
 
 if( NOT @PROJECT_NAME at _BINARY_DIR )
 
-	set( IS_BUILD_DIR_EXPORT @_is_build_dir_export@ )
-
-	if( IS_BUILD_DIR_EXPORT )
+  if( @PNAME at _IS_BUILD_DIR_EXPORT )
 		include( "@TOP_PROJECT_TARGETS_FILE@" OPTIONAL )
 	else()
 		include( "${@PNAME at _CMAKE_DIR}/@CMAKE_PROJECT_NAME at -targets.cmake" )
@@ -78,3 +79,12 @@ include( ${CMAKE_CURRENT_LIST_FILE}.tpls OPTIONAL )
 set( @PNAME at _IMPORT_FILE ${CMAKE_CURRENT_LIST_FILE} )
 mark_as_advanced( @PNAME at _IMPORT_FILE )
 
+# set @PROJECT_NAME at _BASE_DIR for final installations or build directories
+
+if( NOT @PROJECT_NAME@ )
+	if( @PNAME at _IS_BUILD_DIR_EXPORT )
+		set( @PROJECT_NAME at _BASE_DIR @CMAKE_BINARY_DIR@ )
+	else()
+		set( @PROJECT_NAME at _BASE_DIR @CMAKE_INSTALL_PREFIX@ )
+	endif()
+endif()
diff --git a/cmake/pymain.c b/cmake/pymain.c
new file mode 100644
index 0000000..823d57d
--- /dev/null
+++ b/cmake/pymain.c
@@ -0,0 +1,5 @@
+#include <Python.h>
+
+int main() {
+  return 0;
+}
diff --git a/cmake/sg.pl b/cmake/sg.pl
old mode 100755
new mode 100644
index 455161b..8a64bf4
--- a/cmake/sg.pl
+++ b/cmake/sg.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 #!/usr/local/share/perl56
 
-# (C) Copyright 1996-2014 ECMWF.
+# (C) Copyright 1996-2015 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. 
diff --git a/config.log b/config.log
deleted file mode 100644
index abf71c7..0000000
--- a/config.log
+++ /dev/null
@@ -1,3519 +0,0 @@
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by eccodes configure  , which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  $ ./configure --enable-python --disable-shared
-
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = costard
-uname -m = x86_64
-uname -r = 3.11.10-21-desktop
-uname -s = Linux
-uname -v = #1 SMP PREEMPT Mon Jul 21 15:28:46 UTC 2014 (9a9565d)
-
-/usr/bin/uname -p = x86_64
-/bin/uname -X     = unknown
-
-/bin/arch              = x86_64
-/usr/bin/arch -k       = unknown
-/usr/convex/getsysinfo = unknown
-/usr/bin/hostinfo      = unknown
-/bin/machine           = unknown
-/usr/bin/oslevel       = unknown
-/bin/universe          = unknown
-
-PATH: /usr/local/apps/eccodes/0.10.0/GNU/4.8.1/bin
-PATH: /usr/local/apps//panoply/4.0
-PATH: /usr/local/apps/cdo/1.6.4/bin
-PATH: /usr/local/apps/netcdf4/4.3.2/GNU/4.8.1/bin
-PATH: /usr/local/apps/totalview/tv8.14.0-16/bin
-PATH: /usr/local/apps/libemos/000394/bin
-PATH: /usr/local/apps/ecaccess/4.0.2/bin
-PATH: /usr/local/apps/metview/4.5.0/bin
-PATH: /usr/local/apps/ecfs/2.0.13rc2/bin
-PATH: /usr/local/apps/sms/4.4.14/bin
-PATH: /usr/local/apps/python/2.7.8-01/bin
-PATH: /usr/lib64/mpi/gcc/openmpi/bin
-PATH: /home/ma/masn/bin
-PATH: /usr/local/bin
-PATH: /usr/bin
-PATH: /bin
-PATH: /usr/sbin
-PATH: /sbin
-PATH: /usr/X11R6/bin
-PATH: /usr/bin/X11
-PATH: /usr/games
-PATH: /opt/bin
-PATH: /opt/kde3/bin
-PATH: /usr/lib/mit/bin
-PATH: /usr/lib/qt3/bin
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-configure:2677: checking build system type
-configure:2691: result: x86_64-suse-linux-gnu
-configure:2711: checking host system type
-configure:2724: result: x86_64-suse-linux-gnu
-configure:2765: checking how to print strings
-configure:2792: result: printf
-configure:2861: checking for gcc
-configure:2888: result: gcc
-configure:3117: checking for C compiler version
-configure:3126: gcc --version >&5
-gcc (SUSE Linux) 4.8.1 20130909 [gcc-4_8-branch revision 202388]
-Copyright (C) 2013 Free Software Foundation, Inc.
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-configure:3137: $? = 0
-configure:3126: gcc -v >&5
-Using built-in specs.
-COLLECT_GCC=gcc
-COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/4.8/lto-wrapper
-Target: x86_64-suse-linux
-Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.8 --enable-ssp --disable-libssp --disable-plugin --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib64 --with-system-zlib --enable-__cxa_atexit --enable-l [...]
-Thread model: posix
-gcc version 4.8.1 20130909 [gcc-4_8-branch revision 202388] (SUSE Linux) 
-configure:3137: $? = 0
-configure:3126: gcc -V >&5
-gcc: error: unrecognized command line option '-V'
-gcc: fatal error: no input files
-compilation terminated.
-configure:3137: $? = 1
-configure:3126: gcc -qversion >&5
-gcc: error: unrecognized command line option '-qversion'
-gcc: fatal error: no input files
-compilation terminated.
-configure:3137: $? = 1
-configure:3157: checking whether the C compiler works
-configure:3179: gcc    conftest.c  >&5
-configure:3183: $? = 0
-configure:3231: result: yes
-configure:3234: checking for C compiler default output file name
-configure:3236: result: a.out
-configure:3242: checking for suffix of executables
-configure:3249: gcc -o conftest    conftest.c  >&5
-configure:3253: $? = 0
-configure:3275: result: 
-configure:3297: checking whether we are cross compiling
-configure:3305: gcc -o conftest    conftest.c  >&5
-configure:3309: $? = 0
-configure:3316: ./conftest
-configure:3320: $? = 0
-configure:3335: result: no
-configure:3340: checking for suffix of object files
-configure:3362: gcc -c   conftest.c >&5
-configure:3366: $? = 0
-configure:3387: result: o
-configure:3391: checking whether we are using the GNU C compiler
-configure:3410: gcc -c   conftest.c >&5
-configure:3410: $? = 0
-configure:3419: result: yes
-configure:3428: checking whether gcc accepts -g
-configure:3448: gcc -c -g  conftest.c >&5
-configure:3448: $? = 0
-configure:3489: result: yes
-configure:3506: checking for gcc option to accept ISO C89
-configure:3569: gcc  -c -g -O2  conftest.c >&5
-configure:3569: $? = 0
-configure:3582: result: none needed
-configure:3602: checking for a sed that does not truncate output
-configure:3666: result: /usr/bin/sed
-configure:3684: checking for grep that handles long lines and -e
-configure:3742: result: /usr/bin/grep
-configure:3747: checking for egrep
-configure:3809: result: /usr/bin/grep -E
-configure:3814: checking for fgrep
-configure:3876: result: /usr/bin/grep -F
-configure:3911: checking for ld used by gcc
-configure:3978: result: /usr/x86_64-suse-linux/bin/ld
-configure:3985: checking if the linker (/usr/x86_64-suse-linux/bin/ld) is GNU ld
-configure:4000: result: yes
-configure:4012: checking for BSD- or MS-compatible name lister (nm)
-configure:4061: result: /usr/bin/nm -B
-configure:4191: checking the name lister (/usr/bin/nm -B) interface
-configure:4198: gcc -c -g -O2  conftest.c >&5
-configure:4201: /usr/bin/nm -B "conftest.o"
-configure:4204: output
-0000000000000000 B some_variable
-configure:4211: result: BSD nm
-configure:4214: checking whether ln -s works
-configure:4218: result: yes
-configure:4226: checking the maximum length of command line arguments
-configure:4356: result: 1572864
-configure:4373: checking whether the shell understands some XSI constructs
-configure:4383: result: yes
-configure:4387: checking whether the shell understands "+="
-configure:4393: result: yes
-configure:4428: checking how to convert x86_64-suse-linux-gnu file names to x86_64-suse-linux-gnu format
-configure:4468: result: func_convert_file_noop
-configure:4475: checking how to convert x86_64-suse-linux-gnu file names to toolchain format
-configure:4495: result: func_convert_file_noop
-configure:4502: checking for /usr/x86_64-suse-linux/bin/ld option to reload object files
-configure:4509: result: -r
-configure:4583: checking for objdump
-configure:4599: found /usr/bin/objdump
-configure:4610: result: objdump
-configure:4642: checking how to recognize dependent libraries
-configure:4844: result: pass_all
-configure:4929: checking for dlltool
-configure:4959: result: no
-configure:4989: checking how to associate runtime and link libraries
-configure:5016: result: printf %s\n
-configure:5077: checking for ar
-configure:5093: found /usr/bin/ar
-configure:5104: result: ar
-configure:5141: checking for archiver @FILE support
-configure:5158: gcc -c -g -O2  conftest.c >&5
-configure:5158: $? = 0
-configure:5161: ar cru libconftest.a @conftest.lst >&5
-configure:5164: $? = 0
-configure:5169: ar cru libconftest.a @conftest.lst >&5
-ar: conftest.o: No such file or directory
-configure:5172: $? = 1
-configure:5184: result: @
-configure:5242: checking for strip
-configure:5258: found /usr/bin/strip
-configure:5269: result: strip
-configure:5341: checking for ranlib
-configure:5357: found /usr/bin/ranlib
-configure:5368: result: ranlib
-configure:5445: checking for gawk
-configure:5461: found /usr/bin/gawk
-configure:5472: result: gawk
-configure:5512: checking command to parse /usr/bin/nm -B output from gcc object
-configure:5632: gcc -c -g -O2  conftest.c >&5
-configure:5635: $? = 0
-configure:5639: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | sed '/ __gnu_lto/d' \> conftest.nm
-configure:5642: $? = 0
-configure:5708: gcc -o conftest -g -O2   conftest.c conftstm.o >&5
-configure:5711: $? = 0
-configure:5749: result: ok
-configure:5786: checking for sysroot
-configure:5816: result: no
-configure:5893: gcc -c -g -O2  conftest.c >&5
-configure:5896: $? = 0
-configure:6072: checking for mt
-configure:6088: found /usr/bin/mt
-configure:6099: result: mt
-configure:6122: checking if mt is a manifest tool
-configure:6128: mt '-?'
-configure:6136: result: no
-configure:6778: checking how to run the C preprocessor
-configure:6809: gcc -E  conftest.c
-configure:6809: $? = 0
-configure:6823: gcc -E  conftest.c
-conftest.c:9:28: fatal error: ac_nonexistent.h: No such file or directory
- #include <ac_nonexistent.h>
-                            ^
-compilation terminated.
-configure:6823: $? = 1
-configure: failed program was:
-| /* confdefs.h */
-| #define PACKAGE_NAME "eccodes"
-| #define PACKAGE_TARNAME "eccodes"
-| #define PACKAGE_VERSION " "
-| #define PACKAGE_STRING "eccodes  "
-| #define PACKAGE_BUGREPORT "Software.Support at ecmwf.int"
-| #define PACKAGE_URL ""
-| /* end confdefs.h.  */
-| #include <ac_nonexistent.h>
-configure:6848: result: gcc -E
-configure:6868: gcc -E  conftest.c
-configure:6868: $? = 0
-configure:6882: gcc -E  conftest.c
-conftest.c:9:28: fatal error: ac_nonexistent.h: No such file or directory
- #include <ac_nonexistent.h>
-                            ^
-compilation terminated.
-configure:6882: $? = 1
-configure: failed program was:
-| /* confdefs.h */
-| #define PACKAGE_NAME "eccodes"
-| #define PACKAGE_TARNAME "eccodes"
-| #define PACKAGE_VERSION " "
-| #define PACKAGE_STRING "eccodes  "
-| #define PACKAGE_BUGREPORT "Software.Support at ecmwf.int"
-| #define PACKAGE_URL ""
-| /* end confdefs.h.  */
-| #include <ac_nonexistent.h>
-configure:6911: checking for ANSI C header files
-configure:6931: gcc -c -g -O2  conftest.c >&5
-configure:6931: $? = 0
-configure:7004: gcc -o conftest -g -O2   conftest.c  >&5
-configure:7004: $? = 0
-configure:7004: ./conftest
-configure:7004: $? = 0
-configure:7015: result: yes
-configure:7028: checking for sys/types.h
-configure:7028: gcc -c -g -O2  conftest.c >&5
-configure:7028: $? = 0
-configure:7028: result: yes
-configure:7028: checking for sys/stat.h
-configure:7028: gcc -c -g -O2  conftest.c >&5
-configure:7028: $? = 0
-configure:7028: result: yes
-configure:7028: checking for stdlib.h
-configure:7028: gcc -c -g -O2  conftest.c >&5
-configure:7028: $? = 0
-configure:7028: result: yes
-configure:7028: checking for string.h
-configure:7028: gcc -c -g -O2  conftest.c >&5
-configure:7028: $? = 0
-configure:7028: result: yes
-configure:7028: checking for memory.h
-configure:7028: gcc -c -g -O2  conftest.c >&5
-configure:7028: $? = 0
-configure:7028: result: yes
-configure:7028: checking for strings.h
-configure:7028: gcc -c -g -O2  conftest.c >&5
-configure:7028: $? = 0
-configure:7028: result: yes
-configure:7028: checking for inttypes.h
-configure:7028: gcc -c -g -O2  conftest.c >&5
-configure:7028: $? = 0
-configure:7028: result: yes
-configure:7028: checking for stdint.h
-configure:7028: gcc -c -g -O2  conftest.c >&5
-configure:7028: $? = 0
-configure:7028: result: yes
-configure:7028: checking for unistd.h
-configure:7028: gcc -c -g -O2  conftest.c >&5
-configure:7028: $? = 0
-configure:7028: result: yes
-configure:7042: checking for dlfcn.h
-configure:7042: gcc -c -g -O2  conftest.c >&5
-configure:7042: $? = 0
-configure:7042: result: yes
-configure:7247: checking for objdir
-configure:7262: result: .libs
-configure:7533: checking if gcc supports -fno-rtti -fno-exceptions
-configure:7551: gcc -c -g -O2  -fno-rtti -fno-exceptions conftest.c >&5
-cc1: warning: command line option '-fno-rtti' is valid for C++/ObjC++ but not for C [enabled by default]
-configure:7555: $? = 0
-configure:7568: result: no
-configure:7895: checking for gcc option to produce PIC
-configure:7902: result: -fPIC -DPIC
-configure:7910: checking if gcc PIC flag -fPIC -DPIC works
-configure:7928: gcc -c -g -O2  -fPIC -DPIC -DPIC conftest.c >&5
-configure:7932: $? = 0
-configure:7945: result: yes
-configure:7974: checking if gcc static flag -static works
-configure:8002: result: no
-configure:8017: checking if gcc supports -c -o file.o
-configure:8038: gcc -c -g -O2  -o out/conftest2.o conftest.c >&5
-configure:8042: $? = 0
-configure:8064: result: yes
-configure:8072: checking if gcc supports -c -o file.o
-configure:8119: result: yes
-configure:8152: checking whether the gcc linker (/usr/x86_64-suse-linux/bin/ld -m elf_x86_64) supports shared libraries
-configure:9305: result: yes
-configure:9545: checking dynamic linker characteristics
-configure:10056: gcc -o conftest -g -O2   -Wl,-rpath -Wl,/foo conftest.c  >&5
-configure:10056: $? = 0
-configure:10278: result: GNU/Linux ld.so
-configure:10385: checking how to hardcode library paths into programs
-configure:10410: result: immediate
-configure:10950: checking whether stripping libraries is possible
-configure:10955: result: yes
-configure:10990: checking if libtool supports shared libraries
-configure:10992: result: yes
-configure:10995: checking whether to build shared libraries
-configure:11016: result: no
-configure:11019: checking whether to build static libraries
-configure:11023: result: yes
-configure:11086: checking whether build environment is sane
-configure:11141: result: yes
-configure:11177: checking for a BSD-compatible install
-configure:11245: result: /usr/bin/install -c
-configure:11395: checking for a thread-safe mkdir -p
-configure:11434: result: /usr/bin/mkdir -p
-configure:11437: checking whether make sets $(MAKE)
-configure:11459: result: yes
-configure:11489: checking for style of include used by make
-configure:11517: result: GNU
-configure:11551: checking whether make supports nested variables
-configure:11568: result: yes
-configure:11645: checking dependency style of gcc
-configure:11756: result: gcc3
-configure:11934: checking for C compiler version
-configure:11943: gcc --version >&5
-gcc (SUSE Linux) 4.8.1 20130909 [gcc-4_8-branch revision 202388]
-Copyright (C) 2013 Free Software Foundation, Inc.
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-configure:11954: $? = 0
-configure:11943: gcc -v >&5
-Using built-in specs.
-COLLECT_GCC=gcc
-COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/4.8/lto-wrapper
-Target: x86_64-suse-linux
-Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.8 --enable-ssp --disable-libssp --disable-plugin --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib64 --with-system-zlib --enable-__cxa_atexit --enable-l [...]
-Thread model: posix
-gcc version 4.8.1 20130909 [gcc-4_8-branch revision 202388] (SUSE Linux) 
-configure:11954: $? = 0
-configure:11943: gcc -V >&5
-gcc: error: unrecognized command line option '-V'
-gcc: fatal error: no input files
-compilation terminated.
-configure:11954: $? = 1
-configure:11943: gcc -qversion >&5
-gcc: error: unrecognized command line option '-qversion'
-gcc: fatal error: no input files
-compilation terminated.
-configure:11954: $? = 1
-configure:11958: checking whether we are using the GNU C compiler
-configure:11986: result: yes
-configure:11995: checking whether gcc accepts -g
-configure:12056: result: yes
-configure:12073: checking for gcc option to accept ISO C89
-configure:12149: result: none needed
-configure:12174: checking how to run the C preprocessor
-configure:12244: result: gcc -E
-configure:12264: gcc -E  conftest.c
-configure:12264: $? = 0
-configure:12278: gcc -E  conftest.c
-conftest.c:28:28: fatal error: ac_nonexistent.h: No such file or directory
- #include <ac_nonexistent.h>
-                            ^
-compilation terminated.
-configure:12278: $? = 1
-configure: failed program was:
-| /* confdefs.h */
-| #define PACKAGE_NAME "eccodes"
-| #define PACKAGE_TARNAME "eccodes"
-| #define PACKAGE_VERSION " "
-| #define PACKAGE_STRING "eccodes  "
-| #define PACKAGE_BUGREPORT "Software.Support at ecmwf.int"
-| #define PACKAGE_URL ""
-| #define STDC_HEADERS 1
-| #define HAVE_SYS_TYPES_H 1
-| #define HAVE_SYS_STAT_H 1
-| #define HAVE_STDLIB_H 1
-| #define HAVE_STRING_H 1
-| #define HAVE_MEMORY_H 1
-| #define HAVE_STRINGS_H 1
-| #define HAVE_INTTYPES_H 1
-| #define HAVE_STDINT_H 1
-| #define HAVE_UNISTD_H 1
-| #define HAVE_DLFCN_H 1
-| #define LT_OBJDIR ".libs/"
-| #define ECCODES_MAIN_VERSION 0.10.0
-| #define ECCODES_MAJOR_VERSION 0
-| #define ECCODES_MINOR_VERSION 10
-| #define ECCODES_REVISION_VERSION 0
-| #define ECCODES_CURRENT 1
-| #define ECCODES_REVISION 0
-| #define ECCODES_AGE 0
-| /* end confdefs.h.  */
-| #include <ac_nonexistent.h>
-configure:12307: checking whether ln -s works
-configure:12311: result: yes
-configure:12318: checking whether make sets $(MAKE)
-configure:12340: result: yes
-configure:12353: checking for bison
-configure:12369: found /usr/bin/bison
-configure:12380: result: bison -y
-configure:12396: checking for flex
-configure:12412: found /usr/bin/flex
-configure:12423: result: flex
-configure:12461: flex conftest.l
-configure:12465: $? = 0
-configure:12467: checking lex output file root
-configure:12481: result: lex.yy
-configure:12486: checking lex library
-configure:12500: gcc -o conftest -g -O2   conftest.c   >&5
-/var/tmp/tmpdir/masn/jtmp.4574/cc2WmzkQ.o: In function `input':
-/tmp/masn/git/grib_api/eccodes/lex.yy.c:1170: undefined reference to `yywrap'
-/var/tmp/tmpdir/masn/jtmp.4574/cc2WmzkQ.o: In function `yylex':
-/tmp/masn/git/grib_api/eccodes/lex.yy.c:869: undefined reference to `yywrap'
-/var/tmp/tmpdir/masn/jtmp.4574/cc2WmzkQ.o: In function `main':
-/tmp/masn/git/grib_api/eccodes/conftest.l:18: undefined reference to `yywrap'
-collect2: error: ld returned 1 exit status
-configure:12500: $? = 1
-configure: failed program was:
-| /* confdefs.h */
-| #define PACKAGE_NAME "eccodes"
-| #define PACKAGE_TARNAME "eccodes"
-| #define PACKAGE_VERSION " "
-| #define PACKAGE_STRING "eccodes  "
-| #define PACKAGE_BUGREPORT "Software.Support at ecmwf.int"
-| #define PACKAGE_URL ""
-| #define STDC_HEADERS 1
-| #define HAVE_SYS_TYPES_H 1
-| #define HAVE_SYS_STAT_H 1
-| #define HAVE_STDLIB_H 1
-| #define HAVE_STRING_H 1
-| #define HAVE_MEMORY_H 1
-| #define HAVE_STRINGS_H 1
-| #define HAVE_INTTYPES_H 1
-| #define HAVE_STDINT_H 1
-| #define HAVE_UNISTD_H 1
-| #define HAVE_DLFCN_H 1
-| #define LT_OBJDIR ".libs/"
-| #define ECCODES_MAIN_VERSION 0.10.0
-| #define ECCODES_MAJOR_VERSION 0
-| #define ECCODES_MINOR_VERSION 10
-| #define ECCODES_REVISION_VERSION 0
-| #define ECCODES_CURRENT 1
-| #define ECCODES_REVISION 0
-| #define ECCODES_AGE 0
-| /* end confdefs.h.  */
-| 
-| #line 3 "lex.yy.c"
-| 
-| #define  YY_INT_ALIGNED short int
-| 
-| /* A lexical scanner generated by flex */
-| 
-| #define FLEX_SCANNER
-| #define YY_FLEX_MAJOR_VERSION 2
-| #define YY_FLEX_MINOR_VERSION 5
-| #define YY_FLEX_SUBMINOR_VERSION 37
-| #if YY_FLEX_SUBMINOR_VERSION > 0
-| #define FLEX_BETA
-| #endif
-| 
-| /* First, we deal with  platform-specific or compiler-specific issues. */
-| 
-| /* begin standard C headers. */
-| #include <stdio.h>
-| #include <string.h>
-| #include <errno.h>
-| #include <stdlib.h>
-| 
-| /* end standard C headers. */
-| 
-| /* flex integer type definitions */
-| 
-| #ifndef FLEXINT_H
-| #define FLEXINT_H
-| 
-| /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
-| 
-| #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-| 
-| /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
-|  * if you want the limit (max/min) macros for int types. 
-|  */
-| #ifndef __STDC_LIMIT_MACROS
-| #define __STDC_LIMIT_MACROS 1
-| #endif
-| 
-| #include <inttypes.h>
-| typedef int8_t flex_int8_t;
-| typedef uint8_t flex_uint8_t;
-| typedef int16_t flex_int16_t;
-| typedef uint16_t flex_uint16_t;
-| typedef int32_t flex_int32_t;
-| typedef uint32_t flex_uint32_t;
-| #else
-| typedef signed char flex_int8_t;
-| typedef short int flex_int16_t;
-| typedef int flex_int32_t;
-| typedef unsigned char flex_uint8_t; 
-| typedef unsigned short int flex_uint16_t;
-| typedef unsigned int flex_uint32_t;
-| 
-| /* Limits of integral types. */
-| #ifndef INT8_MIN
-| #define INT8_MIN               (-128)
-| #endif
-| #ifndef INT16_MIN
-| #define INT16_MIN              (-32767-1)
-| #endif
-| #ifndef INT32_MIN
-| #define INT32_MIN              (-2147483647-1)
-| #endif
-| #ifndef INT8_MAX
-| #define INT8_MAX               (127)
-| #endif
-| #ifndef INT16_MAX
-| #define INT16_MAX              (32767)
-| #endif
-| #ifndef INT32_MAX
-| #define INT32_MAX              (2147483647)
-| #endif
-| #ifndef UINT8_MAX
-| #define UINT8_MAX              (255U)
-| #endif
-| #ifndef UINT16_MAX
-| #define UINT16_MAX             (65535U)
-| #endif
-| #ifndef UINT32_MAX
-| #define UINT32_MAX             (4294967295U)
-| #endif
-| 
-| #endif /* ! C99 */
-| 
-| #endif /* ! FLEXINT_H */
-| 
-| #ifdef __cplusplus
-| 
-| /* The "const" storage-class-modifier is valid. */
-| #define YY_USE_CONST
-| 
-| #else	/* ! __cplusplus */
-| 
-| /* C99 requires __STDC__ to be defined as 1. */
-| #if defined (__STDC__)
-| 
-| #define YY_USE_CONST
-| 
-| #endif	/* defined (__STDC__) */
-| #endif	/* ! __cplusplus */
-| 
-| #ifdef YY_USE_CONST
-| #define yyconst const
-| #else
-| #define yyconst
-| #endif
-| 
-| /* Returned upon end-of-file. */
-| #define YY_NULL 0
-| 
-| /* Promotes a possibly negative, possibly signed char to an unsigned
-|  * integer for use as an array index.  If the signed char is negative,
-|  * we want to instead treat it as an 8-bit unsigned char, hence the
-|  * double cast.
-|  */
-| #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
-| 
-| /* Enter a start condition.  This macro really ought to take a parameter,
-|  * but we do it the disgusting crufty way forced on us by the ()-less
-|  * definition of BEGIN.
-|  */
-| #define BEGIN (yy_start) = 1 + 2 *
-| 
-| /* Translate the current start state into a value that can be later handed
-|  * to BEGIN to return to the state.  The YYSTATE alias is for lex
-|  * compatibility.
-|  */
-| #define YY_START (((yy_start) - 1) / 2)
-| #define YYSTATE YY_START
-| 
-| /* Action number for EOF rule of a given start state. */
-| #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-| 
-| /* Special action meaning "start processing a new file". */
-| #define YY_NEW_FILE yyrestart(yyin  )
-| 
-| #define YY_END_OF_BUFFER_CHAR 0
-| 
-| /* Size of default input buffer. */
-| #ifndef YY_BUF_SIZE
-| #define YY_BUF_SIZE 16384
-| #endif
-| 
-| /* The state buf must be large enough to hold one state per character in the main buffer.
-|  */
-| #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
-| 
-| #ifndef YY_TYPEDEF_YY_BUFFER_STATE
-| #define YY_TYPEDEF_YY_BUFFER_STATE
-| typedef struct yy_buffer_state *YY_BUFFER_STATE;
-| #endif
-| 
-| #ifndef YY_TYPEDEF_YY_SIZE_T
-| #define YY_TYPEDEF_YY_SIZE_T
-| typedef size_t yy_size_t;
-| #endif
-| 
-| extern yy_size_t yyleng;
-| 
-| extern FILE *yyin, *yyout;
-| 
-| #define EOB_ACT_CONTINUE_SCAN 0
-| #define EOB_ACT_END_OF_FILE 1
-| #define EOB_ACT_LAST_MATCH 2
-| 
-|     #define YY_LESS_LINENO(n)
-|     
-| /* Return all but the first "n" matched characters back to the input stream. */
-| #define yyless(n) \
-| 	do \
-| 		{ \
-| 		/* Undo effects of setting up yytext. */ \
-|         int yyless_macro_arg = (n); \
-|         YY_LESS_LINENO(yyless_macro_arg);\
-| 		*yy_cp = (yy_hold_char); \
-| 		YY_RESTORE_YY_MORE_OFFSET \
-| 		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
-| 		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
-| 		} \
-| 	while ( 0 )
-| 
-| #define unput(c) yyunput( c, (yytext_ptr)  )
-| 
-| #ifndef YY_STRUCT_YY_BUFFER_STATE
-| #define YY_STRUCT_YY_BUFFER_STATE
-| struct yy_buffer_state
-| 	{
-| 	FILE *yy_input_file;
-| 
-| 	char *yy_ch_buf;		/* input buffer */
-| 	char *yy_buf_pos;		/* current position in input buffer */
-| 
-| 	/* Size of input buffer in bytes, not including room for EOB
-| 	 * characters.
-| 	 */
-| 	yy_size_t yy_buf_size;
-| 
-| 	/* Number of characters read into yy_ch_buf, not including EOB
-| 	 * characters.
-| 	 */
-| 	yy_size_t yy_n_chars;
-| 
-| 	/* Whether we "own" the buffer - i.e., we know we created it,
-| 	 * and can realloc() it to grow it, and should free() it to
-| 	 * delete it.
-| 	 */
-| 	int yy_is_our_buffer;
-| 
-| 	/* Whether this is an "interactive" input source; if so, and
-| 	 * if we're using stdio for input, then we want to use getc()
-| 	 * instead of fread(), to make sure we stop fetching input after
-| 	 * each newline.
-| 	 */
-| 	int yy_is_interactive;
-| 
-| 	/* Whether we're considered to be at the beginning of a line.
-| 	 * If so, '^' rules will be active on the next match, otherwise
-| 	 * not.
-| 	 */
-| 	int yy_at_bol;
-| 
-|     int yy_bs_lineno; /**< The line count. */
-|     int yy_bs_column; /**< The column count. */
-|     
-| 	/* Whether to try to fill the input buffer when we reach the
-| 	 * end of it.
-| 	 */
-| 	int yy_fill_buffer;
-| 
-| 	int yy_buffer_status;
-| 
-| #define YY_BUFFER_NEW 0
-| #define YY_BUFFER_NORMAL 1
-| 	/* When an EOF's been seen but there's still some text to process
-| 	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
-| 	 * shouldn't try reading from the input source any more.  We might
-| 	 * still have a bunch of tokens to match, though, because of
-| 	 * possible backing-up.
-| 	 *
-| 	 * When we actually see the EOF, we change the status to "new"
-| 	 * (via yyrestart()), so that the user can continue scanning by
-| 	 * just pointing yyin at a new input file.
-| 	 */
-| #define YY_BUFFER_EOF_PENDING 2
-| 
-| 	};
-| #endif /* !YY_STRUCT_YY_BUFFER_STATE */
-| 
-| /* Stack of input buffers. */
-| static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
-| static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
-| static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
-| 
-| /* We provide macros for accessing buffer states in case in the
-|  * future we want to put the buffer states in a more general
-|  * "scanner state".
-|  *
-|  * Returns the top of the stack, or NULL.
-|  */
-| #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
-|                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
-|                           : NULL)
-| 
-| /* Same as previous macro, but useful when we know that the buffer stack is not
-|  * NULL or when we need an lvalue. For internal use only.
-|  */
-| #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
-| 
-| /* yy_hold_char holds the character lost when yytext is formed. */
-| static char yy_hold_char;
-| static yy_size_t yy_n_chars;		/* number of characters read into yy_ch_buf */
-| yy_size_t yyleng;
-| 
-| /* Points to current character in buffer. */
-| static char *yy_c_buf_p = (char *) 0;
-| static int yy_init = 0;		/* whether we need to initialize */
-| static int yy_start = 0;	/* start state number */
-| 
-| /* Flag which is used to allow yywrap()'s to do buffer switches
-|  * instead of setting up a fresh yyin.  A bit of a hack ...
-|  */
-| static int yy_did_buffer_switch_on_eof;
-| 
-| void yyrestart (FILE *input_file  );
-| void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
-| YY_BUFFER_STATE yy_create_buffer (FILE *file,int size  );
-| void yy_delete_buffer (YY_BUFFER_STATE b  );
-| void yy_flush_buffer (YY_BUFFER_STATE b  );
-| void yypush_buffer_state (YY_BUFFER_STATE new_buffer  );
-| void yypop_buffer_state (void );
-| 
-| static void yyensure_buffer_stack (void );
-| static void yy_load_buffer_state (void );
-| static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
-| 
-| #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
-| 
-| YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
-| YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
-| YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len  );
-| 
-| void *yyalloc (yy_size_t  );
-| void *yyrealloc (void *,yy_size_t  );
-| void yyfree (void *  );
-| 
-| #define yy_new_buffer yy_create_buffer
-| 
-| #define yy_set_interactive(is_interactive) \
-| 	{ \
-| 	if ( ! YY_CURRENT_BUFFER ){ \
-|         yyensure_buffer_stack (); \
-| 		YY_CURRENT_BUFFER_LVALUE =    \
-|             yy_create_buffer(yyin,YY_BUF_SIZE ); \
-| 	} \
-| 	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
-| 	}
-| 
-| #define yy_set_bol(at_bol) \
-| 	{ \
-| 	if ( ! YY_CURRENT_BUFFER ){\
-|         yyensure_buffer_stack (); \
-| 		YY_CURRENT_BUFFER_LVALUE =    \
-|             yy_create_buffer(yyin,YY_BUF_SIZE ); \
-| 	} \
-| 	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
-| 	}
-| 
-| #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
-| 
-| /* Begin user sect3 */
-| 
-| typedef unsigned char YY_CHAR;
-| 
-| FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
-| 
-| typedef int yy_state_type;
-| 
-| extern int yylineno;
-| 
-| int yylineno = 1;
-| 
-| extern char *yytext;
-| #define yytext_ptr yytext
-| 
-| static yy_state_type yy_get_previous_state (void );
-| static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
-| static int yy_get_next_buffer (void );
-| static void yy_fatal_error (yyconst char msg[]  );
-| 
-| /* Done after the current pattern has been matched and before the
-|  * corresponding action - sets up yytext.
-|  */
-| #define YY_DO_BEFORE_ACTION \
-| 	(yytext_ptr) = yy_bp; \
-| 	(yytext_ptr) -= (yy_more_len); \
-| 	yyleng = (size_t) (yy_cp - (yytext_ptr)); \
-| 	(yy_hold_char) = *yy_cp; \
-| 	*yy_cp = '\0'; \
-| 	(yy_c_buf_p) = yy_cp;
-| 
-| #define YY_NUM_RULES 8
-| #define YY_END_OF_BUFFER 9
-| /* This struct is not used in this scanner,
-|    but its presence is necessary. */
-| struct yy_trans_info
-| 	{
-| 	flex_int32_t yy_verify;
-| 	flex_int32_t yy_nxt;
-| 	};
-| static yyconst flex_int16_t yy_acclist[23] =
-|     {   0,
-|         9,    7,    8,    8,    1,    7,    8,    2,    7,    8,
-|         3,    7,    8,    4,    7,    8,    5,    7,    8,    6,
-|         7,    8
-|     } ;
-| 
-| static yyconst flex_int16_t yy_accept[14] =
-|     {   0,
-|         1,    1,    1,    2,    4,    5,    8,   11,   14,   17,
-|        20,   23,   23
-|     } ;
-| 
-| static yyconst flex_int32_t yy_ec[256] =
-|     {   0,
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    2,
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-|         1,    1,    1,    1,    1,    1,    3,    4,    5,    6,
-| 
-|         7,    8,    1,    1,    1,    1,    1,    1,    1,    1,
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-| 
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-|         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-|         1,    1,    1,    1,    1
-|     } ;
-| 
-| static yyconst flex_int32_t yy_meta[9] =
-|     {   0,
-|         1,    1,    1,    1,    1,    1,    1,    1
-|     } ;
-| 
-| static yyconst flex_int16_t yy_base[13] =
-|     {   0,
-|         0,    0,    9,   10,   10,   10,   10,   10,   10,   10,
-|        10,   10
-|     } ;
-| 
-| static yyconst flex_int16_t yy_def[13] =
-|     {   0,
-|        12,    1,   12,   12,   12,   12,   12,   12,   12,   12,
-|        12,    0
-|     } ;
-| 
-| static yyconst flex_int16_t yy_nxt[19] =
-|     {   0,
-|         4,    5,    6,    7,    8,    9,   10,   11,   12,    3,
-|        12,   12,   12,   12,   12,   12,   12,   12
-|     } ;
-| 
-| static yyconst flex_int16_t yy_chk[19] =
-|     {   0,
-|         1,    1,    1,    1,    1,    1,    1,    1,    3,   12,
-|        12,   12,   12,   12,   12,   12,   12,   12
-|     } ;
-| 
-| extern int yy_flex_debug;
-| int yy_flex_debug = 0;
-| 
-| static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
-| static char *yy_full_match;
-| static int yy_lp;
-| #define REJECT \
-| { \
-| *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ \
-| yy_cp = (yy_full_match); /* restore poss. backed-over text */ \
-| ++(yy_lp); \
-| goto find_rule; \
-| }
-| 
-| static int yy_more_flag = 0;
-| static int yy_more_len = 0;
-| #define yymore() ((yy_more_flag) = 1)
-| #define YY_MORE_ADJ (yy_more_len)
-| #define YY_RESTORE_YY_MORE_OFFSET
-| char *yytext;
-| #line 1 "conftest.l"
-| #line 469 "lex.yy.c"
-| 
-| #define INITIAL 0
-| 
-| #ifndef YY_NO_UNISTD_H
-| /* Special case for "unistd.h", since it is non-ANSI. We include it way
-|  * down here because we want the user's section 1 to have been scanned first.
-|  * The user has a chance to override it with an option.
-|  */
-| #include <unistd.h>
-| #endif
-| 
-| #ifndef YY_EXTRA_TYPE
-| #define YY_EXTRA_TYPE void *
-| #endif
-| 
-| static int yy_init_globals (void );
-| 
-| /* Accessor methods to globals.
-|    These are made visible to non-reentrant scanners for convenience. */
-| 
-| int yylex_destroy (void );
-| 
-| int yyget_debug (void );
-| 
-| void yyset_debug (int debug_flag  );
-| 
-| YY_EXTRA_TYPE yyget_extra (void );
-| 
-| void yyset_extra (YY_EXTRA_TYPE user_defined  );
-| 
-| FILE *yyget_in (void );
-| 
-| void yyset_in  (FILE * in_str  );
-| 
-| FILE *yyget_out (void );
-| 
-| void yyset_out  (FILE * out_str  );
-| 
-| yy_size_t yyget_leng (void );
-| 
-| char *yyget_text (void );
-| 
-| int yyget_lineno (void );
-| 
-| void yyset_lineno (int line_number  );
-| 
-| /* Macros after this point can all be overridden by user definitions in
-|  * section 1.
-|  */
-| 
-| #ifndef YY_SKIP_YYWRAP
-| #ifdef __cplusplus
-| extern "C" int yywrap (void );
-| #else
-| extern int yywrap (void );
-| #endif
-| #endif
-| 
-|     static void yyunput (int c,char *buf_ptr  );
-|     
-| #ifndef yytext_ptr
-| static void yy_flex_strncpy (char *,yyconst char *,int );
-| #endif
-| 
-| #ifdef YY_NEED_STRLEN
-| static int yy_flex_strlen (yyconst char * );
-| #endif
-| 
-| #ifndef YY_NO_INPUT
-| 
-| #ifdef __cplusplus
-| static int yyinput (void );
-| #else
-| static int input (void );
-| #endif
-| 
-| #endif
-| 
-| /* Amount of stuff to slurp up with each read. */
-| #ifndef YY_READ_BUF_SIZE
-| #define YY_READ_BUF_SIZE 8192
-| #endif
-| 
-| /* Copy whatever the last rule matched to the standard output. */
-| #ifndef ECHO
-| /* This used to be an fputs(), but since the string might contain NUL's,
-|  * we now use fwrite().
-|  */
-| #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
-| #endif
-| 
-| /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
-|  * is returned in "result".
-|  */
-| #ifndef YY_INPUT
-| #define YY_INPUT(buf,result,max_size) \
-| 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
-| 		{ \
-| 		int c = '*'; \
-| 		size_t n; \
-| 		for ( n = 0; n < max_size && \
-| 			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
-| 			buf[n] = (char) c; \
-| 		if ( c == '\n' ) \
-| 			buf[n++] = (char) c; \
-| 		if ( c == EOF && ferror( yyin ) ) \
-| 			YY_FATAL_ERROR( "input in flex scanner failed" ); \
-| 		result = n; \
-| 		} \
-| 	else \
-| 		{ \
-| 		errno=0; \
-| 		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
-| 			{ \
-| 			if( errno != EINTR) \
-| 				{ \
-| 				YY_FATAL_ERROR( "input in flex scanner failed" ); \
-| 				break; \
-| 				} \
-| 			errno=0; \
-| 			clearerr(yyin); \
-| 			} \
-| 		}\
-| \
-| 
-| #endif
-| 
-| /* No semi-colon after return; correct usage is to write "yyterminate();" -
-|  * we don't want an extra ';' after the "return" because that will cause
-|  * some compilers to complain about unreachable statements.
-|  */
-| #ifndef yyterminate
-| #define yyterminate() return YY_NULL
-| #endif
-| 
-| /* Number of entries by which start-condition stack grows. */
-| #ifndef YY_START_STACK_INCR
-| #define YY_START_STACK_INCR 25
-| #endif
-| 
-| /* Report a fatal error. */
-| #ifndef YY_FATAL_ERROR
-| #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
-| #endif
-| 
-| /* end tables serialization structures and prototypes */
-| 
-| /* Default declaration of generated scanner - a define so the user can
-|  * easily add parameters.
-|  */
-| #ifndef YY_DECL
-| #define YY_DECL_IS_OURS 1
-| 
-| extern int yylex (void);
-| 
-| #define YY_DECL int yylex (void)
-| #endif /* !YY_DECL */
-| 
-| /* Code executed at the beginning of each rule, after yytext and yyleng
-|  * have been set up.
-|  */
-| #ifndef YY_USER_ACTION
-| #define YY_USER_ACTION
-| #endif
-| 
-| /* Code executed at the end of each rule. */
-| #ifndef YY_BREAK
-| #define YY_BREAK break;
-| #endif
-| 
-| #define YY_RULE_SETUP \
-| 	YY_USER_ACTION
-| 
-| /** The main scanner function which does all the work.
-|  */
-| YY_DECL
-| {
-| 	register yy_state_type yy_current_state;
-| 	register char *yy_cp, *yy_bp;
-| 	register int yy_act;
-|     
-| #line 1 "conftest.l"
-| 
-| #line 653 "lex.yy.c"
-| 
-| 	if ( !(yy_init) )
-| 		{
-| 		(yy_init) = 1;
-| 
-| #ifdef YY_USER_INIT
-| 		YY_USER_INIT;
-| #endif
-| 
-|         /* Create the reject buffer large enough to save one state per allowed character. */
-|         if ( ! (yy_state_buf) )
-|             (yy_state_buf) = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE  );
-|             if ( ! (yy_state_buf) )
-|                 YY_FATAL_ERROR( "out of dynamic memory in yylex()" );
-| 
-| 		if ( ! (yy_start) )
-| 			(yy_start) = 1;	/* first start state */
-| 
-| 		if ( ! yyin )
-| 			yyin = stdin;
-| 
-| 		if ( ! yyout )
-| 			yyout = stdout;
-| 
-| 		if ( ! YY_CURRENT_BUFFER ) {
-| 			yyensure_buffer_stack ();
-| 			YY_CURRENT_BUFFER_LVALUE =
-| 				yy_create_buffer(yyin,YY_BUF_SIZE );
-| 		}
-| 
-| 		yy_load_buffer_state( );
-| 		}
-| 
-| 	while ( 1 )		/* loops until end-of-file is reached */
-| 		{
-| 		(yy_more_len) = 0;
-| 		if ( (yy_more_flag) )
-| 			{
-| 			(yy_more_len) = (yy_c_buf_p) - (yytext_ptr);
-| 			(yy_more_flag) = 0;
-| 			}
-| 		yy_cp = (yy_c_buf_p);
-| 
-| 		/* Support of yytext. */
-| 		*yy_cp = (yy_hold_char);
-| 
-| 		/* yy_bp points to the position in yy_ch_buf of the start of
-| 		 * the current run.
-| 		 */
-| 		yy_bp = yy_cp;
-| 
-| 		yy_current_state = (yy_start);
-| 
-| 		(yy_state_ptr) = (yy_state_buf);
-| 		*(yy_state_ptr)++ = yy_current_state;
-| 
-| yy_match:
-| 		do
-| 			{
-| 			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
-| 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-| 				{
-| 				yy_current_state = (int) yy_def[yy_current_state];
-| 				if ( yy_current_state >= 13 )
-| 					yy_c = yy_meta[(unsigned int) yy_c];
-| 				}
-| 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-| 			*(yy_state_ptr)++ = yy_current_state;
-| 			++yy_cp;
-| 			}
-| 		while ( yy_base[yy_current_state] != 10 );
-| 
-| yy_find_action:
-| 		yy_current_state = *--(yy_state_ptr);
-| 		(yy_lp) = yy_accept[yy_current_state];
-| find_rule: /* we branch to this label when backing up */
-| 		for ( ; ; ) /* until we find what rule we matched */
-| 			{
-| 			if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] )
-| 				{
-| 				yy_act = yy_acclist[(yy_lp)];
-| 					{
-| 					(yy_full_match) = yy_cp;
-| 					break;
-| 					}
-| 				}
-| 			--yy_cp;
-| 			yy_current_state = *--(yy_state_ptr);
-| 			(yy_lp) = yy_accept[yy_current_state];
-| 			}
-| 
-| 		YY_DO_BEFORE_ACTION;
-| 
-| do_action:	/* This label is used only to access EOF actions. */
-| 
-| 		switch ( yy_act )
-| 	{ /* beginning of action switch */
-| case 1:
-| YY_RULE_SETUP
-| #line 2 "conftest.l"
-| { ECHO; }
-| 	YY_BREAK
-| case 2:
-| YY_RULE_SETUP
-| #line 3 "conftest.l"
-| { REJECT; }
-| 	YY_BREAK
-| case 3:
-| YY_RULE_SETUP
-| #line 4 "conftest.l"
-| { yymore (); }
-| 	YY_BREAK
-| case 4:
-| YY_RULE_SETUP
-| #line 5 "conftest.l"
-| { yyless (1); }
-| 	YY_BREAK
-| case 5:
-| YY_RULE_SETUP
-| #line 6 "conftest.l"
-| { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument.  */
-|     yyless ((input () != 0)); }
-| 	YY_BREAK
-| case 6:
-| YY_RULE_SETUP
-| #line 8 "conftest.l"
-| { unput (yytext[0]); }
-| 	YY_BREAK
-| case 7:
-| YY_RULE_SETUP
-| #line 9 "conftest.l"
-| { BEGIN INITIAL; }
-| 	YY_BREAK
-| case 8:
-| YY_RULE_SETUP
-| #line 10 "conftest.l"
-| ECHO;
-| 	YY_BREAK
-| #line 792 "lex.yy.c"
-| 			case YY_STATE_EOF(INITIAL):
-| 				yyterminate();
-| 
-| 	case YY_END_OF_BUFFER:
-| 		{
-| 		/* Amount of text matched not including the EOB char. */
-| 		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
-| 
-| 		/* Undo the effects of YY_DO_BEFORE_ACTION. */
-| 		*yy_cp = (yy_hold_char);
-| 		YY_RESTORE_YY_MORE_OFFSET
-| 
-| 		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
-| 			{
-| 			/* We're scanning a new file or input source.  It's
-| 			 * possible that this happened because the user
-| 			 * just pointed yyin at a new source and called
-| 			 * yylex().  If so, then we have to assure
-| 			 * consistency between YY_CURRENT_BUFFER and our
-| 			 * globals.  Here is the right place to do so, because
-| 			 * this is the first action (other than possibly a
-| 			 * back-up) that will match for the new input source.
-| 			 */
-| 			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-| 			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
-| 			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
-| 			}
-| 
-| 		/* Note that here we test for yy_c_buf_p "<=" to the position
-| 		 * of the first EOB in the buffer, since yy_c_buf_p will
-| 		 * already have been incremented past the NUL character
-| 		 * (since all states make transitions on EOB to the
-| 		 * end-of-buffer state).  Contrast this with the test
-| 		 * in input().
-| 		 */
-| 		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
-| 			{ /* This was really a NUL. */
-| 			yy_state_type yy_next_state;
-| 
-| 			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
-| 
-| 			yy_current_state = yy_get_previous_state(  );
-| 
-| 			/* Okay, we're now positioned to make the NUL
-| 			 * transition.  We couldn't have
-| 			 * yy_get_previous_state() go ahead and do it
-| 			 * for us because it doesn't know how to deal
-| 			 * with the possibility of jamming (and we don't
-| 			 * want to build jamming into it because then it
-| 			 * will run more slowly).
-| 			 */
-| 
-| 			yy_next_state = yy_try_NUL_trans( yy_current_state );
-| 
-| 			yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-| 
-| 			if ( yy_next_state )
-| 				{
-| 				/* Consume the NUL. */
-| 				yy_cp = ++(yy_c_buf_p);
-| 				yy_current_state = yy_next_state;
-| 				goto yy_match;
-| 				}
-| 
-| 			else
-| 				{
-| 				yy_cp = (yy_c_buf_p);
-| 				goto yy_find_action;
-| 				}
-| 			}
-| 
-| 		else switch ( yy_get_next_buffer(  ) )
-| 			{
-| 			case EOB_ACT_END_OF_FILE:
-| 				{
-| 				(yy_did_buffer_switch_on_eof) = 0;
-| 
-| 				if ( yywrap( ) )
-| 					{
-| 					/* Note: because we've taken care in
-| 					 * yy_get_next_buffer() to have set up
-| 					 * yytext, we can now set up
-| 					 * yy_c_buf_p so that if some total
-| 					 * hoser (like flex itself) wants to
-| 					 * call the scanner after we return the
-| 					 * YY_NULL, it'll still work - another
-| 					 * YY_NULL will get returned.
-| 					 */
-| 					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
-| 
-| 					yy_act = YY_STATE_EOF(YY_START);
-| 					goto do_action;
-| 					}
-| 
-| 				else
-| 					{
-| 					if ( ! (yy_did_buffer_switch_on_eof) )
-| 						YY_NEW_FILE;
-| 					}
-| 				break;
-| 				}
-| 
-| 			case EOB_ACT_CONTINUE_SCAN:
-| 				(yy_c_buf_p) =
-| 					(yytext_ptr) + yy_amount_of_matched_text;
-| 
-| 				yy_current_state = yy_get_previous_state(  );
-| 
-| 				yy_cp = (yy_c_buf_p);
-| 				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-| 				goto yy_match;
-| 
-| 			case EOB_ACT_LAST_MATCH:
-| 				(yy_c_buf_p) =
-| 				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
-| 
-| 				yy_current_state = yy_get_previous_state(  );
-| 
-| 				yy_cp = (yy_c_buf_p);
-| 				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-| 				goto yy_find_action;
-| 			}
-| 		break;
-| 		}
-| 
-| 	default:
-| 		YY_FATAL_ERROR(
-| 			"fatal flex scanner internal error--no action found" );
-| 	} /* end of action switch */
-| 		} /* end of scanning one token */
-| } /* end of yylex */
-| 
-| /* yy_get_next_buffer - try to read in a new buffer
-|  *
-|  * Returns a code representing an action:
-|  *	EOB_ACT_LAST_MATCH -
-|  *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
-|  *	EOB_ACT_END_OF_FILE - end of file
-|  */
-| static int yy_get_next_buffer (void)
-| {
-|     	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-| 	register char *source = (yytext_ptr);
-| 	register int number_to_move, i;
-| 	int ret_val;
-| 
-| 	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
-| 		YY_FATAL_ERROR(
-| 		"fatal flex scanner internal error--end of buffer missed" );
-| 
-| 	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
-| 		{ /* Don't try to fill the buffer, so this is an EOF. */
-| 		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
-| 			{
-| 			/* We matched a single character, the EOB, so
-| 			 * treat this as a final EOF.
-| 			 */
-| 			return EOB_ACT_END_OF_FILE;
-| 			}
-| 
-| 		else
-| 			{
-| 			/* We matched some text prior to the EOB, first
-| 			 * process it.
-| 			 */
-| 			return EOB_ACT_LAST_MATCH;
-| 			}
-| 		}
-| 
-| 	/* Try to read more data. */
-| 
-| 	/* First move last chars to start of buffer. */
-| 	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
-| 
-| 	for ( i = 0; i < number_to_move; ++i )
-| 		*(dest++) = *(source++);
-| 
-| 	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
-| 		/* don't do the read, it's not guaranteed to return an EOF,
-| 		 * just force an EOF
-| 		 */
-| 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
-| 
-| 	else
-| 		{
-| 			yy_size_t num_to_read =
-| 			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
-| 
-| 		while ( num_to_read <= 0 )
-| 			{ /* Not enough room in the buffer - grow it. */
-| 
-| 			YY_FATAL_ERROR(
-| "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
-| 
-| 			}
-| 
-| 		if ( num_to_read > YY_READ_BUF_SIZE )
-| 			num_to_read = YY_READ_BUF_SIZE;
-| 
-| 		/* Read in more data. */
-| 		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-| 			(yy_n_chars), num_to_read );
-| 
-| 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-| 		}
-| 
-| 	if ( (yy_n_chars) == 0 )
-| 		{
-| 		if ( number_to_move == YY_MORE_ADJ )
-| 			{
-| 			ret_val = EOB_ACT_END_OF_FILE;
-| 			yyrestart(yyin  );
-| 			}
-| 
-| 		else
-| 			{
-| 			ret_val = EOB_ACT_LAST_MATCH;
-| 			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
-| 				YY_BUFFER_EOF_PENDING;
-| 			}
-| 		}
-| 
-| 	else
-| 		ret_val = EOB_ACT_CONTINUE_SCAN;
-| 
-| 	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
-| 		/* Extend the array by 50%, plus the number we really need. */
-| 		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
-| 		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
-| 		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
-| 			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
-| 	}
-| 
-| 	(yy_n_chars) += number_to_move;
-| 	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
-| 	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
-| 
-| 	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
-| 
-| 	return ret_val;
-| }
-| 
-| /* yy_get_previous_state - get the state just before the EOB char was reached */
-| 
-|     static yy_state_type yy_get_previous_state (void)
-| {
-| 	register yy_state_type yy_current_state;
-| 	register char *yy_cp;
-|     
-| 	yy_current_state = (yy_start);
-| 
-| 	(yy_state_ptr) = (yy_state_buf);
-| 	*(yy_state_ptr)++ = yy_current_state;
-| 
-| 	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
-| 		{
-| 		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
-| 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-| 			{
-| 			yy_current_state = (int) yy_def[yy_current_state];
-| 			if ( yy_current_state >= 13 )
-| 				yy_c = yy_meta[(unsigned int) yy_c];
-| 			}
-| 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-| 		*(yy_state_ptr)++ = yy_current_state;
-| 		}
-| 
-| 	return yy_current_state;
-| }
-| 
-| /* yy_try_NUL_trans - try to make a transition on the NUL character
-|  *
-|  * synopsis
-|  *	next_state = yy_try_NUL_trans( current_state );
-|  */
-|     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
-| {
-| 	register int yy_is_jam;
-|     
-| 	register YY_CHAR yy_c = 1;
-| 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-| 		{
-| 		yy_current_state = (int) yy_def[yy_current_state];
-| 		if ( yy_current_state >= 13 )
-| 			yy_c = yy_meta[(unsigned int) yy_c];
-| 		}
-| 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-| 	yy_is_jam = (yy_current_state == 12);
-| 	if ( ! yy_is_jam )
-| 		*(yy_state_ptr)++ = yy_current_state;
-| 
-| 		return yy_is_jam ? 0 : yy_current_state;
-| }
-| 
-|     static void yyunput (int c, register char * yy_bp )
-| {
-| 	register char *yy_cp;
-|     
-|     yy_cp = (yy_c_buf_p);
-| 
-| 	/* undo effects of setting up yytext */
-| 	*yy_cp = (yy_hold_char);
-| 
-| 	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
-| 		{ /* need to shift things up to make room */
-| 		/* +2 for EOB chars. */
-| 		register yy_size_t number_to_move = (yy_n_chars) + 2;
-| 		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
-| 					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
-| 		register char *source =
-| 				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
-| 
-| 		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
-| 			*--dest = *--source;
-| 
-| 		yy_cp += (int) (dest - source);
-| 		yy_bp += (int) (dest - source);
-| 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
-| 			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
-| 
-| 		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
-| 			YY_FATAL_ERROR( "flex scanner push-back overflow" );
-| 		}
-| 
-| 	*--yy_cp = (char) c;
-| 
-| 	(yytext_ptr) = yy_bp;
-| 	(yy_hold_char) = *yy_cp;
-| 	(yy_c_buf_p) = yy_cp;
-| }
-| 
-| #ifndef YY_NO_INPUT
-| #ifdef __cplusplus
-|     static int yyinput (void)
-| #else
-|     static int input  (void)
-| #endif
-| 
-| {
-| 	int c;
-|     
-| 	*(yy_c_buf_p) = (yy_hold_char);
-| 
-| 	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
-| 		{
-| 		/* yy_c_buf_p now points to the character we want to return.
-| 		 * If this occurs *before* the EOB characters, then it's a
-| 		 * valid NUL; if not, then we've hit the end of the buffer.
-| 		 */
-| 		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
-| 			/* This was really a NUL. */
-| 			*(yy_c_buf_p) = '\0';
-| 
-| 		else
-| 			{ /* need more input */
-| 			yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
-| 			++(yy_c_buf_p);
-| 
-| 			switch ( yy_get_next_buffer(  ) )
-| 				{
-| 				case EOB_ACT_LAST_MATCH:
-| 					/* This happens because yy_g_n_b()
-| 					 * sees that we've accumulated a
-| 					 * token and flags that we need to
-| 					 * try matching the token before
-| 					 * proceeding.  But for input(),
-| 					 * there's no matching to consider.
-| 					 * So convert the EOB_ACT_LAST_MATCH
-| 					 * to EOB_ACT_END_OF_FILE.
-| 					 */
-| 
-| 					/* Reset buffer status. */
-| 					yyrestart(yyin );
-| 
-| 					/*FALLTHROUGH*/
-| 
-| 				case EOB_ACT_END_OF_FILE:
-| 					{
-| 					if ( yywrap( ) )
-| 						return EOF;
-| 
-| 					if ( ! (yy_did_buffer_switch_on_eof) )
-| 						YY_NEW_FILE;
-| #ifdef __cplusplus
-| 					return yyinput();
-| #else
-| 					return input();
-| #endif
-| 					}
-| 
-| 				case EOB_ACT_CONTINUE_SCAN:
-| 					(yy_c_buf_p) = (yytext_ptr) + offset;
-| 					break;
-| 				}
-| 			}
-| 		}
-| 
-| 	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
-| 	*(yy_c_buf_p) = '\0';	/* preserve yytext */
-| 	(yy_hold_char) = *++(yy_c_buf_p);
-| 
-| 	return c;
-| }
-| #endif	/* ifndef YY_NO_INPUT */
-| 
-| /** Immediately switch to a different input stream.
-|  * @param input_file A readable stream.
-|  * 
-|  * @note This function does not reset the start condition to @c INITIAL .
-|  */
-|     void yyrestart  (FILE * input_file )
-| {
-|     
-| 	if ( ! YY_CURRENT_BUFFER ){
-|         yyensure_buffer_stack ();
-| 		YY_CURRENT_BUFFER_LVALUE =
-|             yy_create_buffer(yyin,YY_BUF_SIZE );
-| 	}
-| 
-| 	yy_init_buffer(YY_CURRENT_BUFFER,input_file );
-| 	yy_load_buffer_state( );
-| }
-| 
-| /** Switch to a different input buffer.
-|  * @param new_buffer The new input buffer.
-|  * 
-|  */
-|     void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
-| {
-|     
-| 	/* TODO. We should be able to replace this entire function body
-| 	 * with
-| 	 *		yypop_buffer_state();
-| 	 *		yypush_buffer_state(new_buffer);
-|      */
-| 	yyensure_buffer_stack ();
-| 	if ( YY_CURRENT_BUFFER == new_buffer )
-| 		return;
-| 
-| 	if ( YY_CURRENT_BUFFER )
-| 		{
-| 		/* Flush out information for old buffer. */
-| 		*(yy_c_buf_p) = (yy_hold_char);
-| 		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
-| 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-| 		}
-| 
-| 	YY_CURRENT_BUFFER_LVALUE = new_buffer;
-| 	yy_load_buffer_state( );
-| 
-| 	/* We don't actually know whether we did this switch during
-| 	 * EOF (yywrap()) processing, but the only time this flag
-| 	 * is looked at is after yywrap() is called, so it's safe
-| 	 * to go ahead and always set it.
-| 	 */
-| 	(yy_did_buffer_switch_on_eof) = 1;
-| }
-| 
-| static void yy_load_buffer_state  (void)
-| {
-|     	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-| 	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
-| 	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
-| 	(yy_hold_char) = *(yy_c_buf_p);
-| }
-| 
-| /** Allocate and initialize an input buffer state.
-|  * @param file A readable stream.
-|  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
-|  * 
-|  * @return the allocated buffer state.
-|  */
-|     YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
-| {
-| 	YY_BUFFER_STATE b;
-|     
-| 	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
-| 	if ( ! b )
-| 		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-| 
-| 	b->yy_buf_size = size;
-| 
-| 	/* yy_ch_buf has to be 2 characters longer than the size given because
-| 	 * we need to put in 2 end-of-buffer characters.
-| 	 */
-| 	b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
-| 	if ( ! b->yy_ch_buf )
-| 		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-| 
-| 	b->yy_is_our_buffer = 1;
-| 
-| 	yy_init_buffer(b,file );
-| 
-| 	return b;
-| }
-| 
-| /** Destroy the buffer.
-|  * @param b a buffer created with yy_create_buffer()
-|  * 
-|  */
-|     void yy_delete_buffer (YY_BUFFER_STATE  b )
-| {
-|     
-| 	if ( ! b )
-| 		return;
-| 
-| 	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
-| 		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
-| 
-| 	if ( b->yy_is_our_buffer )
-| 		yyfree((void *) b->yy_ch_buf  );
-| 
-| 	yyfree((void *) b  );
-| }
-| 
-| /* Initializes or reinitializes a buffer.
-|  * This function is sometimes called more than once on the same buffer,
-|  * such as during a yyrestart() or at EOF.
-|  */
-|     static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
-| 
-| {
-| 	int oerrno = errno;
-|     
-| 	yy_flush_buffer(b );
-| 
-| 	b->yy_input_file = file;
-| 	b->yy_fill_buffer = 1;
-| 
-|     /* If b is the current buffer, then yy_init_buffer was _probably_
-|      * called from yyrestart() or through yy_get_next_buffer.
-|      * In that case, we don't want to reset the lineno or column.
-|      */
-|     if (b != YY_CURRENT_BUFFER){
-|         b->yy_bs_lineno = 1;
-|         b->yy_bs_column = 0;
-|     }
-| 
-|         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-|     
-| 	errno = oerrno;
-| }
-| 
-| /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
-|  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
-|  * 
-|  */
-|     void yy_flush_buffer (YY_BUFFER_STATE  b )
-| {
-|     	if ( ! b )
-| 		return;
-| 
-| 	b->yy_n_chars = 0;
-| 
-| 	/* We always need two end-of-buffer characters.  The first causes
-| 	 * a transition to the end-of-buffer state.  The second causes
-| 	 * a jam in that state.
-| 	 */
-| 	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
-| 	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-| 
-| 	b->yy_buf_pos = &b->yy_ch_buf[0];
-| 
-| 	b->yy_at_bol = 1;
-| 	b->yy_buffer_status = YY_BUFFER_NEW;
-| 
-| 	if ( b == YY_CURRENT_BUFFER )
-| 		yy_load_buffer_state( );
-| }
-| 
-| /** Pushes the new state onto the stack. The new state becomes
-|  *  the current state. This function will allocate the stack
-|  *  if necessary.
-|  *  @param new_buffer The new state.
-|  *  
-|  */
-| void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
-| {
-|     	if (new_buffer == NULL)
-| 		return;
-| 
-| 	yyensure_buffer_stack();
-| 
-| 	/* This block is copied from yy_switch_to_buffer. */
-| 	if ( YY_CURRENT_BUFFER )
-| 		{
-| 		/* Flush out information for old buffer. */
-| 		*(yy_c_buf_p) = (yy_hold_char);
-| 		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
-| 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-| 		}
-| 
-| 	/* Only push if top exists. Otherwise, replace top. */
-| 	if (YY_CURRENT_BUFFER)
-| 		(yy_buffer_stack_top)++;
-| 	YY_CURRENT_BUFFER_LVALUE = new_buffer;
-| 
-| 	/* copied from yy_switch_to_buffer. */
-| 	yy_load_buffer_state( );
-| 	(yy_did_buffer_switch_on_eof) = 1;
-| }
-| 
-| /** Removes and deletes the top of the stack, if present.
-|  *  The next element becomes the new top.
-|  *  
-|  */
-| void yypop_buffer_state (void)
-| {
-|     	if (!YY_CURRENT_BUFFER)
-| 		return;
-| 
-| 	yy_delete_buffer(YY_CURRENT_BUFFER );
-| 	YY_CURRENT_BUFFER_LVALUE = NULL;
-| 	if ((yy_buffer_stack_top) > 0)
-| 		--(yy_buffer_stack_top);
-| 
-| 	if (YY_CURRENT_BUFFER) {
-| 		yy_load_buffer_state( );
-| 		(yy_did_buffer_switch_on_eof) = 1;
-| 	}
-| }
-| 
-| /* Allocates the stack if it does not exist.
-|  *  Guarantees space for at least one push.
-|  */
-| static void yyensure_buffer_stack (void)
-| {
-| 	yy_size_t num_to_alloc;
-|     
-| 	if (!(yy_buffer_stack)) {
-| 
-| 		/* First allocation is just for 2 elements, since we don't know if this
-| 		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
-| 		 * immediate realloc on the next call.
-|          */
-| 		num_to_alloc = 1;
-| 		(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
-| 								(num_to_alloc * sizeof(struct yy_buffer_state*)
-| 								);
-| 		if ( ! (yy_buffer_stack) )
-| 			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
-| 								  
-| 		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-| 				
-| 		(yy_buffer_stack_max) = num_to_alloc;
-| 		(yy_buffer_stack_top) = 0;
-| 		return;
-| 	}
-| 
-| 	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
-| 
-| 		/* Increase the buffer to prepare for a possible push. */
-| 		int grow_size = 8 /* arbitrary grow size */;
-| 
-| 		num_to_alloc = (yy_buffer_stack_max) + grow_size;
-| 		(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
-| 								((yy_buffer_stack),
-| 								num_to_alloc * sizeof(struct yy_buffer_state*)
-| 								);
-| 		if ( ! (yy_buffer_stack) )
-| 			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
-| 
-| 		/* zero only the new slots.*/
-| 		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
-| 		(yy_buffer_stack_max) = num_to_alloc;
-| 	}
-| }
-| 
-| /** Setup the input buffer state to scan directly from a user-specified character buffer.
-|  * @param base the character buffer
-|  * @param size the size in bytes of the character buffer
-|  * 
-|  * @return the newly allocated buffer state object. 
-|  */
-| YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
-| {
-| 	YY_BUFFER_STATE b;
-|     
-| 	if ( size < 2 ||
-| 	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
-| 	     base[size-1] != YY_END_OF_BUFFER_CHAR )
-| 		/* They forgot to leave room for the EOB's. */
-| 		return 0;
-| 
-| 	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
-| 	if ( ! b )
-| 		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
-| 
-| 	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
-| 	b->yy_buf_pos = b->yy_ch_buf = base;
-| 	b->yy_is_our_buffer = 0;
-| 	b->yy_input_file = 0;
-| 	b->yy_n_chars = b->yy_buf_size;
-| 	b->yy_is_interactive = 0;
-| 	b->yy_at_bol = 1;
-| 	b->yy_fill_buffer = 0;
-| 	b->yy_buffer_status = YY_BUFFER_NEW;
-| 
-| 	yy_switch_to_buffer(b  );
-| 
-| 	return b;
-| }
-| 
-| /** Setup the input buffer state to scan a string. The next call to yylex() will
-|  * scan from a @e copy of @a str.
-|  * @param yystr a NUL-terminated string to scan
-|  * 
-|  * @return the newly allocated buffer state object.
-|  * @note If you want to scan bytes that may contain NUL values, then use
-|  *       yy_scan_bytes() instead.
-|  */
-| YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
-| {
-|     
-| 	return yy_scan_bytes(yystr,strlen(yystr) );
-| }
-| 
-| /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
-|  * scan from a @e copy of @a bytes.
-|  * @param yybytes the byte buffer to scan
-|  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
-|  * 
-|  * @return the newly allocated buffer state object.
-|  */
-| YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
-| {
-| 	YY_BUFFER_STATE b;
-| 	char *buf;
-| 	yy_size_t n;
-| 	int i;
-|     
-| 	/* Get memory for full buffer, including space for trailing EOB's. */
-| 	n = _yybytes_len + 2;
-| 	buf = (char *) yyalloc(n  );
-| 	if ( ! buf )
-| 		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
-| 
-| 	for ( i = 0; i < _yybytes_len; ++i )
-| 		buf[i] = yybytes[i];
-| 
-| 	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
-| 
-| 	b = yy_scan_buffer(buf,n );
-| 	if ( ! b )
-| 		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
-| 
-| 	/* It's okay to grow etc. this buffer, and we should throw it
-| 	 * away when we're done.
-| 	 */
-| 	b->yy_is_our_buffer = 1;
-| 
-| 	return b;
-| }
-| 
-| #ifndef YY_EXIT_FAILURE
-| #define YY_EXIT_FAILURE 2
-| #endif
-| 
-| static void yy_fatal_error (yyconst char* msg )
-| {
-|     	(void) fprintf( stderr, "%s\n", msg );
-| 	exit( YY_EXIT_FAILURE );
-| }
-| 
-| /* Redefine yyless() so it works in section 3 code. */
-| 
-| #undef yyless
-| #define yyless(n) \
-| 	do \
-| 		{ \
-| 		/* Undo effects of setting up yytext. */ \
-|         int yyless_macro_arg = (n); \
-|         YY_LESS_LINENO(yyless_macro_arg);\
-| 		yytext[yyleng] = (yy_hold_char); \
-| 		(yy_c_buf_p) = yytext + yyless_macro_arg; \
-| 		(yy_hold_char) = *(yy_c_buf_p); \
-| 		*(yy_c_buf_p) = '\0'; \
-| 		yyleng = yyless_macro_arg; \
-| 		} \
-| 	while ( 0 )
-| 
-| /* Accessor  methods (get/set functions) to struct members. */
-| 
-| /** Get the current line number.
-|  * 
-|  */
-| int yyget_lineno  (void)
-| {
-|         
-|     return yylineno;
-| }
-| 
-| /** Get the input stream.
-|  * 
-|  */
-| FILE *yyget_in  (void)
-| {
-|         return yyin;
-| }
-| 
-| /** Get the output stream.
-|  * 
-|  */
-| FILE *yyget_out  (void)
-| {
-|         return yyout;
-| }
-| 
-| /** Get the length of the current token.
-|  * 
-|  */
-| yy_size_t yyget_leng  (void)
-| {
-|         return yyleng;
-| }
-| 
-| /** Get the current token.
-|  * 
-|  */
-| 
-| char *yyget_text  (void)
-| {
-|         return yytext;
-| }
-| 
-| /** Set the current line number.
-|  * @param line_number
-|  * 
-|  */
-| void yyset_lineno (int  line_number )
-| {
-|     
-|     yylineno = line_number;
-| }
-| 
-| /** Set the input stream. This does not discard the current
-|  * input buffer.
-|  * @param in_str A readable stream.
-|  * 
-|  * @see yy_switch_to_buffer
-|  */
-| void yyset_in (FILE *  in_str )
-| {
-|         yyin = in_str ;
-| }
-| 
-| void yyset_out (FILE *  out_str )
-| {
-|         yyout = out_str ;
-| }
-| 
-| int yyget_debug  (void)
-| {
-|         return yy_flex_debug;
-| }
-| 
-| void yyset_debug (int  bdebug )
-| {
-|         yy_flex_debug = bdebug ;
-| }
-| 
-| static int yy_init_globals (void)
-| {
-|         /* Initialization is the same as for the non-reentrant scanner.
-|      * This function is called from yylex_destroy(), so don't allocate here.
-|      */
-| 
-|     (yy_buffer_stack) = 0;
-|     (yy_buffer_stack_top) = 0;
-|     (yy_buffer_stack_max) = 0;
-|     (yy_c_buf_p) = (char *) 0;
-|     (yy_init) = 0;
-|     (yy_start) = 0;
-| 
-|     (yy_state_buf) = 0;
-|     (yy_state_ptr) = 0;
-|     (yy_full_match) = 0;
-|     (yy_lp) = 0;
-| 
-| /* Defined in main.c */
-| #ifdef YY_STDINIT
-|     yyin = stdin;
-|     yyout = stdout;
-| #else
-|     yyin = (FILE *) 0;
-|     yyout = (FILE *) 0;
-| #endif
-| 
-|     /* For future reference: Set errno on error, since we are called by
-|      * yylex_init()
-|      */
-|     return 0;
-| }
-| 
-| /* yylex_destroy is for both reentrant and non-reentrant scanners. */
-| int yylex_destroy  (void)
-| {
-|     
-|     /* Pop the buffer stack, destroying each element. */
-| 	while(YY_CURRENT_BUFFER){
-| 		yy_delete_buffer(YY_CURRENT_BUFFER  );
-| 		YY_CURRENT_BUFFER_LVALUE = NULL;
-| 		yypop_buffer_state();
-| 	}
-| 
-| 	/* Destroy the stack itself. */
-| 	yyfree((yy_buffer_stack) );
-| 	(yy_buffer_stack) = NULL;
-| 
-|     yyfree ( (yy_state_buf) );
-|     (yy_state_buf)  = NULL;
-| 
-|     /* Reset the globals. This is important in a non-reentrant scanner so the next time
-|      * yylex() is called, initialization will occur. */
-|     yy_init_globals( );
-| 
-|     return 0;
-| }
-| 
-| /*
-|  * Internal utility routines.
-|  */
-| 
-| #ifndef yytext_ptr
-| static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
-| {
-| 	register int i;
-| 	for ( i = 0; i < n; ++i )
-| 		s1[i] = s2[i];
-| }
-| #endif
-| 
-| #ifdef YY_NEED_STRLEN
-| static int yy_flex_strlen (yyconst char * s )
-| {
-| 	register int n;
-| 	for ( n = 0; s[n]; ++n )
-| 		;
-| 
-| 	return n;
-| }
-| #endif
-| 
-| void *yyalloc (yy_size_t  size )
-| {
-| 	return (void *) malloc( size );
-| }
-| 
-| void *yyrealloc  (void * ptr, yy_size_t  size )
-| {
-| 	/* The cast to (char *) in the following accommodates both
-| 	 * implementations that use char* generic pointers, and those
-| 	 * that use void* generic pointers.  It works with the latter
-| 	 * because both ANSI C and C++ allow castless assignment from
-| 	 * any pointer type to void*, and deal with argument conversions
-| 	 * as though doing an assignment.
-| 	 */
-| 	return (void *) realloc( (char *) ptr, size );
-| }
-| 
-| void yyfree (void * ptr )
-| {
-| 	free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
-| }
-| 
-| #define YYTABLES_NAME "yytables"
-| 
-| #line 10 "conftest.l"
-| 
-| 
-| #ifdef YYTEXT_POINTER
-| extern char *yytext;
-| #endif
-| int
-| main (void)
-| {
-|   return ! yylex () + ! yywrap ();
-| }
-configure:12500: gcc -o conftest -g -O2   conftest.c -lfl  >&5
-configure:12500: $? = 0
-configure:12510: result: -lfl
-configure:12516: checking whether yytext is a pointer
-configure:12533: gcc -o conftest -g -O2   conftest.c -lfl  >&5
-configure:12533: $? = 0
-configure:12541: result: yes
-configure:12657: checking for Fortran 77 compiler version
-configure:12666: gfortran --version >&5
-GNU Fortran (SUSE Linux) 4.8.1 20130909 [gcc-4_8-branch revision 202388]
-Copyright (C) 2013 Free Software Foundation, Inc.
-
-GNU Fortran comes with NO WARRANTY, to the extent permitted by law.
-You may redistribute copies of GNU Fortran
-under the terms of the GNU General Public License.
-For more information about these matters, see the file named COPYING
-
-configure:12677: $? = 0
-configure:12666: gfortran -v >&5
-Using built-in specs.
-COLLECT_GCC=gfortran
-COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/4.8/lto-wrapper
-Target: x86_64-suse-linux
-Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.8 --enable-ssp --disable-libssp --disable-plugin --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib64 --with-system-zlib --enable-__cxa_atexit --enable-l [...]
-Thread model: posix
-gcc version 4.8.1 20130909 [gcc-4_8-branch revision 202388] (SUSE Linux) 
-configure:12677: $? = 0
-configure:12666: gfortran -V >&5
-gfortran: error: unrecognized command line option '-V'
-gfortran: fatal error: no input files
-compilation terminated.
-configure:12677: $? = 1
-configure:12666: gfortran -qversion >&5
-gfortran: error: unrecognized command line option '-qversion'
-gfortran: fatal error: no input files
-compilation terminated.
-configure:12677: $? = 1
-configure:12686: checking whether we are using the GNU Fortran 77 compiler
-configure:12699: gfortran -c  conftest.F >&5
-configure:12699: $? = 0
-configure:12708: result: yes
-configure:12714: checking whether gfortran accepts -g
-configure:12725: gfortran -c -g conftest.f >&5
-configure:12725: $? = 0
-configure:12733: result: yes
-configure:12869: checking if libtool supports shared libraries
-configure:12871: result: yes
-configure:12874: checking whether to build shared libraries
-configure:12894: result: no
-configure:12897: checking whether to build static libraries
-configure:12901: result: yes
-configure:13222: checking for gfortran option to produce PIC
-configure:13229: result: -fPIC
-configure:13237: checking if gfortran PIC flag -fPIC works
-configure:13255: gfortran -c -g -O2 -fPIC conftest.f >&5
-configure:13259: $? = 0
-configure:13272: result: yes
-configure:13295: checking if gfortran static flag -static works
-configure:13323: result: no
-configure:13335: checking if gfortran supports -c -o file.o
-configure:13356: gfortran -c -g -O2 -o out/conftest2.o conftest.f >&5
-configure:13360: $? = 0
-configure:13382: result: yes
-configure:13387: checking if gfortran supports -c -o file.o
-configure:13434: result: yes
-configure:13464: checking whether the gfortran linker (/usr/x86_64-suse-linux/bin/ld -m elf_x86_64) supports shared libraries
-configure:14567: result: yes
-configure:14708: checking dynamic linker characteristics
-configure:15369: result: GNU/Linux ld.so
-configure:15422: checking how to hardcode library paths into programs
-configure:15447: result: immediate
-configure:15586: checking for Fortran compiler version
-configure:15595: gfortran --version >&5
-GNU Fortran (SUSE Linux) 4.8.1 20130909 [gcc-4_8-branch revision 202388]
-Copyright (C) 2013 Free Software Foundation, Inc.
-
-GNU Fortran comes with NO WARRANTY, to the extent permitted by law.
-You may redistribute copies of GNU Fortran
-under the terms of the GNU General Public License.
-For more information about these matters, see the file named COPYING
-
-configure:15606: $? = 0
-configure:15595: gfortran -v >&5
-Using built-in specs.
-COLLECT_GCC=gfortran
-COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/4.8/lto-wrapper
-Target: x86_64-suse-linux
-Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.8 --enable-ssp --disable-libssp --disable-plugin --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib64 --with-system-zlib --enable-__cxa_atexit --enable-l [...]
-Thread model: posix
-gcc version 4.8.1 20130909 [gcc-4_8-branch revision 202388] (SUSE Linux) 
-configure:15606: $? = 0
-configure:15595: gfortran -V >&5
-gfortran: error: unrecognized command line option '-V'
-gfortran: fatal error: no input files
-compilation terminated.
-configure:15606: $? = 1
-configure:15595: gfortran -qversion >&5
-gfortran: error: unrecognized command line option '-qversion'
-gfortran: fatal error: no input files
-compilation terminated.
-configure:15606: $? = 1
-configure:15615: checking whether we are using the GNU Fortran compiler
-configure:15628: gfortran -c   conftest.F >&5
-configure:15628: $? = 0
-configure:15637: result: yes
-configure:15643: checking whether gfortran accepts -g
-configure:15654: gfortran -c -g  conftest.f >&5
-configure:15654: $? = 0
-configure:15662: result: yes
-configure:15811: checking if libtool supports shared libraries
-configure:15813: result: yes
-configure:15816: checking whether to build shared libraries
-configure:15836: result: no
-configure:15839: checking whether to build static libraries
-configure:15843: result: yes
-configure:15877: gfortran -c -g -O2  conftest.f >&5
-configure:15880: $? = 0
-configure:16327: checking for gfortran option to produce PIC
-configure:16334: result: -fPIC
-configure:16342: checking if gfortran PIC flag -fPIC works
-configure:16360: gfortran -c -g -O2 -fPIC  conftest.f >&5
-configure:16364: $? = 0
-configure:16377: result: yes
-configure:16400: checking if gfortran static flag -static works
-configure:16428: result: no
-configure:16440: checking if gfortran supports -c -o file.o
-configure:16461: gfortran -c -g -O2 -o out/conftest2.o  conftest.f >&5
-configure:16465: $? = 0
-configure:16487: result: yes
-configure:16492: checking if gfortran supports -c -o file.o
-configure:16539: result: yes
-configure:16569: checking whether the gfortran linker (/usr/x86_64-suse-linux/bin/ld -m elf_x86_64) supports shared libraries
-configure:17672: result: yes
-configure:17813: checking dynamic linker characteristics
-configure:18474: result: GNU/Linux ld.so
-configure:18527: checking how to hardcode library paths into programs
-configure:18552: result: immediate
-configure:18824: checking if Fortran 90 compiler capitalizes .mod filenames
-configure:18832: gfortran -g -O2 -c conftest.f90 >&5
-configure:18835: $? = 0
-configure:18842: result: no
-configure:18862: checking if double and float are ieee big endian
-configure:18907: gcc -o conftest -g -O2   conftest.c  >&5
-configure:18907: $? = 0
-configure:18907: ./conftest
-configure:18907: $? = 1
-configure: program exited with status 1
-configure: failed program was:
-| /* confdefs.h */
-| #define PACKAGE_NAME "eccodes"
-| #define PACKAGE_TARNAME "eccodes"
-| #define PACKAGE_VERSION " "
-| #define PACKAGE_STRING "eccodes  "
-| #define PACKAGE_BUGREPORT "Software.Support at ecmwf.int"
-| #define PACKAGE_URL ""
-| #define STDC_HEADERS 1
-| #define HAVE_SYS_TYPES_H 1
-| #define HAVE_SYS_STAT_H 1
-| #define HAVE_STDLIB_H 1
-| #define HAVE_STRING_H 1
-| #define HAVE_MEMORY_H 1
-| #define HAVE_STRINGS_H 1
-| #define HAVE_INTTYPES_H 1
-| #define HAVE_STDINT_H 1
-| #define HAVE_UNISTD_H 1
-| #define HAVE_DLFCN_H 1
-| #define LT_OBJDIR ".libs/"
-| #define ECCODES_MAIN_VERSION 0.10.0
-| #define ECCODES_MAJOR_VERSION 0
-| #define ECCODES_MINOR_VERSION 10
-| #define ECCODES_REVISION_VERSION 0
-| #define ECCODES_CURRENT 1
-| #define ECCODES_REVISION 0
-| #define ECCODES_AGE 0
-| #define YYTEXT_POINTER 1
-| #define GRIB_PTHREADS 0
-| #define GRIB_LINUX_PTHREADS 0
-| #define GRIB_IBMPOWER67_OPT 0
-| /* end confdefs.h.  */
-| 
-| 
-|      int compare(unsigned char* a,unsigned char* b) {
-|        while(*a != 0) if (*(b++)!=*(a++)) return 1;
-|        return 0;
-|      }
-|      int main(int argc,char** argv) {
-|        unsigned char dc[]={0x30,0x61,0xDE,0x80,0x93,0x67,0xCC,0xD9,0};
-|        double da=1.23456789e-75;
-|        unsigned char* ca;
-| 
-|        unsigned char fc[]={0x05,0x83,0x48,0x22,0};
-|        float fa=1.23456789e-35;
-| 
-|        if (sizeof(double)!=8) return 1;
-| 
-|        ca=(unsigned char*)&da;
-|        if (compare(dc,ca)) return 1;
-| 
-|        if (sizeof(float)!=4) return 1;
-| 
-|        ca=(unsigned char*)&fa;
-|        if (compare(fc,ca)) return 1;
-| 
-|        return 0;
-|      }
-| 
-| 
-configure:18918: result: no
-configure:18933: checking if double and float are ieee little endian
-configure:18978: gcc -o conftest -g -O2   conftest.c  >&5
-configure:18978: $? = 0
-configure:18978: ./conftest
-configure:18978: $? = 0
-configure:18992: result: yes
-configure:19026: checking if Big Endian
-configure:19051: gcc -o conftest -g -O2   conftest.c  >&5
-configure:19051: $? = 0
-configure:19051: ./conftest
-configure:19051: $? = 0
-configure:19062: result: no
-configure:19077: checking if inline in C
-configure:19097: gcc -c -g -O2  conftest.c >&5
-configure:19097: $? = 0
-configure:19108: result: yes
-configure:19120: checking if bus error on unaligned pointers
-configure:19143: gcc -o conftest -g -O2   conftest.c  >&5
-configure:19143: $? = 0
-configure:19143: ./conftest
-configure:19143: $? = 0
-configure:19154: result: no
-configure:19168: checking for posix_memalign
-configure:19168: gcc -o conftest -g -O2   conftest.c  >&5
-configure:19168: $? = 0
-configure:19168: result: yes
-configure:19253: checking for _LARGEFILE_SOURCE value needed for large files
-configure:19272: gcc -o conftest -g -O2   conftest.c  >&5
-configure:19272: $? = 0
-configure:19300: result: no
-configure:19335: checking for special C compiler options needed for large files
-configure:19380: result: no
-configure:19386: checking for _FILE_OFFSET_BITS value needed for large files
-configure:19411: gcc -c -g -O2  conftest.c >&5
-configure:19411: $? = 0
-configure:19443: result: no
-configure:19581: checking if Fortran 90 compiler capitalizes .mod filenames
-configure:19589: gfortran -g -O2 -c conftest.f90 >&5
-configure:19592: $? = 0
-configure:19599: result: no
-configure:19624: checking if Fortran 90 can resolve debug symbols in modules
-configure:19639: gfortran -g -c conftest-module.f90 >&5
-configure:19642: $? = 0
-configure:19643: gfortran -g -o conftest -I. conftest.f90 >&5
-configure:19646: $? = 0
-configure:19653: result: yes
-configure:19711: checking fortran 90 modules inclusion flag
-configure:19738: gfortran -c -g -O2  conftest.f >&5
-configure:19738: $? = 0
-configure:19757: gfortran -c -g -O2 -Itmpdir_0  conftest.f >&5
-configure:19757: $? = 0
-configure:19776: result: -I
-configure:20016: checking for jas_stream_memopen in -ljasper
-configure:20041: gcc -o conftest -g -O2   conftest.c -ljasper   >&5
-configure:20041: $? = 0
-configure:20050: result: yes
-configure:20058: checking for opj_image_create in -lopenjpeg
-configure:20083: gcc -o conftest -g -O2   conftest.c -lopenjpeg   >&5
-/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: cannot find -lopenjpeg
-collect2: error: ld returned 1 exit status
-configure:20083: $? = 1
-configure: failed program was:
-| /* confdefs.h */
-| #define PACKAGE_NAME "eccodes"
-| #define PACKAGE_TARNAME "eccodes"
-| #define PACKAGE_VERSION " "
-| #define PACKAGE_STRING "eccodes  "
-| #define PACKAGE_BUGREPORT "Software.Support at ecmwf.int"
-| #define PACKAGE_URL ""
-| #define STDC_HEADERS 1
-| #define HAVE_SYS_TYPES_H 1
-| #define HAVE_SYS_STAT_H 1
-| #define HAVE_STDLIB_H 1
-| #define HAVE_STRING_H 1
-| #define HAVE_MEMORY_H 1
-| #define HAVE_STRINGS_H 1
-| #define HAVE_INTTYPES_H 1
-| #define HAVE_STDINT_H 1
-| #define HAVE_UNISTD_H 1
-| #define HAVE_DLFCN_H 1
-| #define LT_OBJDIR ".libs/"
-| #define ECCODES_MAIN_VERSION 0.10.0
-| #define ECCODES_MAJOR_VERSION 0
-| #define ECCODES_MINOR_VERSION 10
-| #define ECCODES_REVISION_VERSION 0
-| #define ECCODES_CURRENT 1
-| #define ECCODES_REVISION 0
-| #define ECCODES_AGE 0
-| #define YYTEXT_POINTER 1
-| #define GRIB_PTHREADS 0
-| #define GRIB_LINUX_PTHREADS 0
-| #define GRIB_IBMPOWER67_OPT 0
-| #define IEEE_BE 0
-| #define IEEE_LE 1
-| #define IS_BIG_ENDIAN 0
-| #define GRIB_INLINE inline
-| #define GRIB_MEM_ALIGN 0
-| #define POSIX_MEMALIGN 1
-| #define VECTOR 0
-| #define MANAGE_MEM 0
-| #define HAVE_FSEEKO 1
-| #define GRIB_TIMER 0
-| #define OMP_PACKING 0
-| #define HAVE_JPEG 1
-| /* end confdefs.h.  */
-| 
-| /* Override any GCC internal prototype to avoid an error.
-|    Use char because int might match the return type of a GCC
-|    builtin and then its argument prototype would still apply.  */
-| #ifdef __cplusplus
-| extern "C"
-| #endif
-| char opj_image_create ();
-| int
-| main ()
-| {
-| return opj_image_create ();
-|   ;
-|   return 0;
-| }
-configure:20092: result: no
-configure:20490: checking for a Python interpreter with version >= 2.5
-configure:20507: python -c import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] sys.exit(sys.hexversion < minverhex)
-configure:20510: $? = 0
-configure:20516: result: python
-configure:20524: checking for python
-configure:20542: found /usr/local/apps/python/2.7.8-01/bin/python
-configure:20554: result: /usr/local/apps/python/2.7.8-01/bin/python
-configure:20572: checking for python version
-configure:20579: result: 2.7
-configure:20591: checking for python platform
-configure:20598: result: linux2
-configure:20624: checking for python script directory
-configure:20659: result: ${prefix}/lib/python2.7/site-packages
-configure:20668: checking for python extension module directory
-configure:20703: result: ${exec_prefix}/lib/python2.7/site-packages
-configure:20727: checking for python2.7-config
-configure:20745: found /usr/local/apps/python/2.7.8-01/bin/python2.7-config
-configure:20757: result: /usr/local/apps/python/2.7.8-01/bin/python2.7-config
-configure:20773: checking python include flags
-configure:20776: result: -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7
-configure:20779: checking python link flags
-configure:20782: result: -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic
-configure:20785: checking python C flags
-configure:20788: result: -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7 -fno-strict-aliasing -O3 -fpic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
-configure:20791: checking python libraries
-configure:20794: result: -lpthread -ldl -lutil -lm -lpython2.7
-configure:20808: checking whether numpy is installed
-configure:20818: result: yes
-configure:20860: checking for rm
-configure:20887: result: rm -f
-configure:20938: checking for ar
-configure:20965: result: ar
-configure:20989: checking whether gcc supports -pedantic -Wall
-configure:21007: gcc -c -pedantic -Wall  conftest.c >&5
-configure:21007: $? = 0
-configure:21015: result: yes
-configure:21035: checking for pow in -lm
-configure:21060: gcc -o conftest -g -O2   conftest.c -lm  -ljasper  >&5
-conftest.c:52:6: warning: conflicting types for built-in function 'pow' [enabled by default]
- char pow ();
-      ^
-configure:21060: $? = 0
-configure:21069: result: yes
-configure:21084: checking for dirent.h that defines DIR
-configure:21103: gcc -c -g -O2  conftest.c >&5
-configure:21103: $? = 0
-configure:21111: result: yes
-configure:21124: checking for library containing opendir
-configure:21155: gcc -o conftest -g -O2   conftest.c -lm -ljasper  >&5
-configure:21155: $? = 0
-configure:21172: result: none required
-configure:21239: checking for ANSI C header files
-configure:21343: result: yes
-configure:21354: checking stddef.h usability
-configure:21354: gcc -c -g -O2  conftest.c >&5
-configure:21354: $? = 0
-configure:21354: result: yes
-configure:21354: checking stddef.h presence
-configure:21354: gcc -E  conftest.c
-configure:21354: $? = 0
-configure:21354: result: yes
-configure:21354: checking for stddef.h
-configure:21354: result: yes
-configure:21354: checking for stdlib.h
-configure:21354: result: yes
-configure:21354: checking for string.h
-configure:21354: result: yes
-configure:21354: checking sys/param.h usability
-configure:21354: gcc -c -g -O2  conftest.c >&5
-configure:21354: $? = 0
-configure:21354: result: yes
-configure:21354: checking sys/param.h presence
-configure:21354: gcc -E  conftest.c
-configure:21354: $? = 0
-configure:21354: result: yes
-configure:21354: checking for sys/param.h
-configure:21354: result: yes
-configure:21354: checking sys/time.h usability
-configure:21354: gcc -c -g -O2  conftest.c >&5
-configure:21354: $? = 0
-configure:21354: result: yes
-configure:21354: checking sys/time.h presence
-configure:21354: gcc -E  conftest.c
-configure:21354: $? = 0
-configure:21354: result: yes
-configure:21354: checking for sys/time.h
-configure:21354: result: yes
-configure:21354: checking for unistd.h
-configure:21354: result: yes
-configure:21354: checking math.h usability
-configure:21354: gcc -c -g -O2  conftest.c >&5
-configure:21354: $? = 0
-configure:21354: result: yes
-configure:21354: checking math.h presence
-configure:21354: gcc -E  conftest.c
-configure:21354: $? = 0
-configure:21354: result: yes
-configure:21354: checking for math.h
-configure:21354: result: yes
-configure:21354: checking stdarg.h usability
-configure:21354: gcc -c -g -O2  conftest.c >&5
-configure:21354: $? = 0
-configure:21354: result: yes
-configure:21354: checking stdarg.h presence
-configure:21354: gcc -E  conftest.c
-configure:21354: $? = 0
-configure:21354: result: yes
-configure:21354: checking for stdarg.h
-configure:21354: result: yes
-configure:21354: checking assert.h usability
-configure:21354: gcc -c -g -O2  conftest.c >&5
-configure:21354: $? = 0
-configure:21354: result: yes
-configure:21354: checking assert.h presence
-configure:21354: gcc -E  conftest.c
-configure:21354: $? = 0
-configure:21354: result: yes
-configure:21354: checking for assert.h
-configure:21354: result: yes
-configure:21354: checking ctype.h usability
-configure:21354: gcc -c -g -O2  conftest.c >&5
-configure:21354: $? = 0
-configure:21354: result: yes
-configure:21354: checking ctype.h presence
-configure:21354: gcc -E  conftest.c
-configure:21354: $? = 0
-configure:21354: result: yes
-configure:21354: checking for ctype.h
-configure:21354: result: yes
-configure:21354: checking fcntl.h usability
-configure:21354: gcc -c -g -O2  conftest.c >&5
-configure:21354: $? = 0
-configure:21354: result: yes
-configure:21354: checking fcntl.h presence
-configure:21354: gcc -E  conftest.c
-configure:21354: $? = 0
-configure:21354: result: yes
-configure:21354: checking for fcntl.h
-configure:21354: result: yes
-configure:21365: checking for size_t
-configure:21365: gcc -c -g -O2  conftest.c >&5
-configure:21365: $? = 0
-configure:21365: gcc -c -g -O2  conftest.c >&5
-conftest.c: In function 'main':
-conftest.c:95:21: error: expected expression before ')' token
- if (sizeof ((size_t)))
-                     ^
-configure:21365: $? = 1
-configure: failed program was:
-| /* confdefs.h */
-| #define PACKAGE_NAME "eccodes"
-| #define PACKAGE_TARNAME "eccodes"
-| #define PACKAGE_VERSION " "
-| #define PACKAGE_STRING "eccodes  "
-| #define PACKAGE_BUGREPORT "Software.Support at ecmwf.int"
-| #define PACKAGE_URL ""
-| #define STDC_HEADERS 1
-| #define HAVE_SYS_TYPES_H 1
-| #define HAVE_SYS_STAT_H 1
-| #define HAVE_STDLIB_H 1
-| #define HAVE_STRING_H 1
-| #define HAVE_MEMORY_H 1
-| #define HAVE_STRINGS_H 1
-| #define HAVE_INTTYPES_H 1
-| #define HAVE_STDINT_H 1
-| #define HAVE_UNISTD_H 1
-| #define HAVE_DLFCN_H 1
-| #define LT_OBJDIR ".libs/"
-| #define ECCODES_MAIN_VERSION 0.10.0
-| #define ECCODES_MAJOR_VERSION 0
-| #define ECCODES_MINOR_VERSION 10
-| #define ECCODES_REVISION_VERSION 0
-| #define ECCODES_CURRENT 1
-| #define ECCODES_REVISION 0
-| #define ECCODES_AGE 0
-| #define YYTEXT_POINTER 1
-| #define GRIB_PTHREADS 0
-| #define GRIB_LINUX_PTHREADS 0
-| #define GRIB_IBMPOWER67_OPT 0
-| #define IEEE_BE 0
-| #define IEEE_LE 1
-| #define IS_BIG_ENDIAN 0
-| #define GRIB_INLINE inline
-| #define GRIB_MEM_ALIGN 0
-| #define POSIX_MEMALIGN 1
-| #define VECTOR 0
-| #define MANAGE_MEM 0
-| #define HAVE_FSEEKO 1
-| #define GRIB_TIMER 0
-| #define OMP_PACKING 0
-| #define HAVE_JPEG 1
-| #define HAVE_LIBJASPER 1
-| #define HAVE_LIBM 1
-| #define HAVE_DIRENT_H 1
-| #define STDC_HEADERS 1
-| #define HAVE_STDDEF_H 1
-| #define HAVE_STDLIB_H 1
-| #define HAVE_STRING_H 1
-| #define HAVE_SYS_PARAM_H 1
-| #define HAVE_SYS_TIME_H 1
-| #define HAVE_UNISTD_H 1
-| #define HAVE_MATH_H 1
-| #define HAVE_STDARG_H 1
-| #define HAVE_ASSERT_H 1
-| #define HAVE_CTYPE_H 1
-| #define HAVE_FCNTL_H 1
-| /* end confdefs.h.  */
-| #include <stdio.h>
-| #ifdef HAVE_SYS_TYPES_H
-| # include <sys/types.h>
-| #endif
-| #ifdef HAVE_SYS_STAT_H
-| # include <sys/stat.h>
-| #endif
-| #ifdef STDC_HEADERS
-| # include <stdlib.h>
-| # include <stddef.h>
-| #else
-| # ifdef HAVE_STDLIB_H
-| #  include <stdlib.h>
-| # endif
-| #endif
-| #ifdef HAVE_STRING_H
-| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-| #  include <memory.h>
-| # endif
-| # include <string.h>
-| #endif
-| #ifdef HAVE_STRINGS_H
-| # include <strings.h>
-| #endif
-| #ifdef HAVE_INTTYPES_H
-| # include <inttypes.h>
-| #endif
-| #ifdef HAVE_STDINT_H
-| # include <stdint.h>
-| #endif
-| #ifdef HAVE_UNISTD_H
-| # include <unistd.h>
-| #endif
-| int
-| main ()
-| {
-| if (sizeof ((size_t)))
-| 	    return 0;
-|   ;
-|   return 0;
-| }
-configure:21365: result: yes
-configure:21376: checking whether time.h and sys/time.h may both be included
-configure:21396: gcc -c -g -O2  conftest.c >&5
-configure:21396: $? = 0
-configure:21403: result: yes
-configure:21412: checking whether closedir returns void
-configure:21436: gcc -o conftest -g -O2   conftest.c -lm -ljasper  >&5
-configure:21436: $? = 0
-configure:21436: ./conftest
-configure:21436: $? = 0
-configure:21446: result: no
-configure:21454: checking return type of signal handlers
-configure:21472: gcc -c -g -O2  conftest.c >&5
-conftest.c: In function 'main':
-conftest.c:66:1: error: void value not ignored as it ought to be
- return *(signal (0, 0)) (0) == 1;
- ^
-configure:21472: $? = 1
-configure: failed program was:
-| /* confdefs.h */
-| #define PACKAGE_NAME "eccodes"
-| #define PACKAGE_TARNAME "eccodes"
-| #define PACKAGE_VERSION " "
-| #define PACKAGE_STRING "eccodes  "
-| #define PACKAGE_BUGREPORT "Software.Support at ecmwf.int"
-| #define PACKAGE_URL ""
-| #define STDC_HEADERS 1
-| #define HAVE_SYS_TYPES_H 1
-| #define HAVE_SYS_STAT_H 1
-| #define HAVE_STDLIB_H 1
-| #define HAVE_STRING_H 1
-| #define HAVE_MEMORY_H 1
-| #define HAVE_STRINGS_H 1
-| #define HAVE_INTTYPES_H 1
-| #define HAVE_STDINT_H 1
-| #define HAVE_UNISTD_H 1
-| #define HAVE_DLFCN_H 1
-| #define LT_OBJDIR ".libs/"
-| #define ECCODES_MAIN_VERSION 0.10.0
-| #define ECCODES_MAJOR_VERSION 0
-| #define ECCODES_MINOR_VERSION 10
-| #define ECCODES_REVISION_VERSION 0
-| #define ECCODES_CURRENT 1
-| #define ECCODES_REVISION 0
-| #define ECCODES_AGE 0
-| #define YYTEXT_POINTER 1
-| #define GRIB_PTHREADS 0
-| #define GRIB_LINUX_PTHREADS 0
-| #define GRIB_IBMPOWER67_OPT 0
-| #define IEEE_BE 0
-| #define IEEE_LE 1
-| #define IS_BIG_ENDIAN 0
-| #define GRIB_INLINE inline
-| #define GRIB_MEM_ALIGN 0
-| #define POSIX_MEMALIGN 1
-| #define VECTOR 0
-| #define MANAGE_MEM 0
-| #define HAVE_FSEEKO 1
-| #define GRIB_TIMER 0
-| #define OMP_PACKING 0
-| #define HAVE_JPEG 1
-| #define HAVE_LIBJASPER 1
-| #define HAVE_LIBM 1
-| #define HAVE_DIRENT_H 1
-| #define STDC_HEADERS 1
-| #define HAVE_STDDEF_H 1
-| #define HAVE_STDLIB_H 1
-| #define HAVE_STRING_H 1
-| #define HAVE_SYS_PARAM_H 1
-| #define HAVE_SYS_TIME_H 1
-| #define HAVE_UNISTD_H 1
-| #define HAVE_MATH_H 1
-| #define HAVE_STDARG_H 1
-| #define HAVE_ASSERT_H 1
-| #define HAVE_CTYPE_H 1
-| #define HAVE_FCNTL_H 1
-| #define TIME_WITH_SYS_TIME 1
-| /* end confdefs.h.  */
-| #include <sys/types.h>
-| #include <signal.h>
-| 
-| int
-| main ()
-| {
-| return *(signal (0, 0)) (0) == 1;
-|   ;
-|   return 0;
-| }
-configure:21479: result: void
-configure:21489: checking for vprintf
-configure:21489: gcc -o conftest -g -O2   conftest.c -lm -ljasper  >&5
-conftest.c:84:6: warning: conflicting types for built-in function 'vprintf' [enabled by default]
- char vprintf ();
-      ^
-configure:21489: $? = 0
-configure:21489: result: yes
-configure:21495: checking for _doprnt
-configure:21495: gcc -o conftest -g -O2   conftest.c -lm -ljasper  >&5
-/var/tmp/tmpdir/masn/jtmp.4574/cc5uWyKz.o: In function `main':
-/tmp/masn/git/grib_api/eccodes/conftest.c:96: undefined reference to `_doprnt'
-collect2: error: ld returned 1 exit status
-configure:21495: $? = 1
-configure: failed program was:
-| /* confdefs.h */
-| #define PACKAGE_NAME "eccodes"
-| #define PACKAGE_TARNAME "eccodes"
-| #define PACKAGE_VERSION " "
-| #define PACKAGE_STRING "eccodes  "
-| #define PACKAGE_BUGREPORT "Software.Support at ecmwf.int"
-| #define PACKAGE_URL ""
-| #define STDC_HEADERS 1
-| #define HAVE_SYS_TYPES_H 1
-| #define HAVE_SYS_STAT_H 1
-| #define HAVE_STDLIB_H 1
-| #define HAVE_STRING_H 1
-| #define HAVE_MEMORY_H 1
-| #define HAVE_STRINGS_H 1
-| #define HAVE_INTTYPES_H 1
-| #define HAVE_STDINT_H 1
-| #define HAVE_UNISTD_H 1
-| #define HAVE_DLFCN_H 1
-| #define LT_OBJDIR ".libs/"
-| #define ECCODES_MAIN_VERSION 0.10.0
-| #define ECCODES_MAJOR_VERSION 0
-| #define ECCODES_MINOR_VERSION 10
-| #define ECCODES_REVISION_VERSION 0
-| #define ECCODES_CURRENT 1
-| #define ECCODES_REVISION 0
-| #define ECCODES_AGE 0
-| #define YYTEXT_POINTER 1
-| #define GRIB_PTHREADS 0
-| #define GRIB_LINUX_PTHREADS 0
-| #define GRIB_IBMPOWER67_OPT 0
-| #define IEEE_BE 0
-| #define IEEE_LE 1
-| #define IS_BIG_ENDIAN 0
-| #define GRIB_INLINE inline
-| #define GRIB_MEM_ALIGN 0
-| #define POSIX_MEMALIGN 1
-| #define VECTOR 0
-| #define MANAGE_MEM 0
-| #define HAVE_FSEEKO 1
-| #define GRIB_TIMER 0
-| #define OMP_PACKING 0
-| #define HAVE_JPEG 1
-| #define HAVE_LIBJASPER 1
-| #define HAVE_LIBM 1
-| #define HAVE_DIRENT_H 1
-| #define STDC_HEADERS 1
-| #define HAVE_STDDEF_H 1
-| #define HAVE_STDLIB_H 1
-| #define HAVE_STRING_H 1
-| #define HAVE_SYS_PARAM_H 1
-| #define HAVE_SYS_TIME_H 1
-| #define HAVE_UNISTD_H 1
-| #define HAVE_MATH_H 1
-| #define HAVE_STDARG_H 1
-| #define HAVE_ASSERT_H 1
-| #define HAVE_CTYPE_H 1
-| #define HAVE_FCNTL_H 1
-| #define TIME_WITH_SYS_TIME 1
-| #define RETSIGTYPE void
-| #define HAVE_VPRINTF 1
-| /* end confdefs.h.  */
-| /* Define _doprnt to an innocuous variant, in case <limits.h> declares _doprnt.
-|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-| #define _doprnt innocuous__doprnt
-| 
-| /* System header to define __stub macros and hopefully few prototypes,
-|     which can conflict with char _doprnt (); below.
-|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-|     <limits.h> exists even on freestanding compilers.  */
-| 
-| #ifdef __STDC__
-| # include <limits.h>
-| #else
-| # include <assert.h>
-| #endif
-| 
-| #undef _doprnt
-| 
-| /* Override any GCC internal prototype to avoid an error.
-|    Use char because int might match the return type of a GCC
-|    builtin and then its argument prototype would still apply.  */
-| #ifdef __cplusplus
-| extern "C"
-| #endif
-| char _doprnt ();
-| /* The GNU C library defines this for functions which it implements
-|     to always fail with ENOSYS.  Some functions are actually named
-|     something starting with __ and the normal name is an alias.  */
-| #if defined __stub__doprnt || defined __stub____doprnt
-| choke me
-| #endif
-| 
-| int
-| main ()
-| {
-| return _doprnt ();
-|   ;
-|   return 0;
-| }
-configure:21495: result: no
-configure:21509: checking for bzero
-configure:21509: gcc -o conftest -g -O2   conftest.c -lm -ljasper  >&5
-conftest.c:85:6: warning: conflicting types for built-in function 'bzero' [enabled by default]
- char bzero ();
-      ^
-configure:21509: $? = 0
-configure:21509: result: yes
-configure:21509: checking for gettimeofday
-configure:21509: gcc -o conftest -g -O2   conftest.c -lm -ljasper  >&5
-configure:21509: $? = 0
-configure:21509: result: yes
-configure:21526: checking for Linux distribution 
-configure:21562: result: openSUSE 13.1 (x86_64) 
-configure:21687: checking that generated files are newer than configure
-configure:21693: result: done
-configure:21748: creating ./config.status
-
-## ---------------------- ##
-## Running config.status. ##
-## ---------------------- ##
-
-This file was extended by eccodes config.status  , which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  CONFIG_FILES    = 
-  CONFIG_HEADERS  = 
-  CONFIG_LINKS    = 
-  CONFIG_COMMANDS = 
-  $ ./config.status 
-
-on costard
-
-config.status:1341: creating src/eccodes_version.h
-config.status:1341: creating rpms/eccodes.pc
-config.status:1341: creating rpms/eccodes.spec
-config.status:1341: creating rpms/eccodes_f90.pc
-config.status:1341: creating Makefile
-config.status:1341: creating src/Makefile
-config.status:1341: creating fortran/Makefile
-config.status:1341: creating tools/Makefile
-config.status:1341: creating data/Makefile
-config.status:1341: creating definitions/Makefile
-config.status:1341: creating samples/Makefile
-config.status:1341: creating ifs_samples/grib1/Makefile
-config.status:1341: creating ifs_samples/grib1_mlgrib2/Makefile
-config.status:1341: creating ifs_samples/grib1_mlgrib2_ieee64/Makefile
-config.status:1341: creating tests/Makefile
-config.status:1341: creating examples/C/Makefile
-config.status:1341: creating examples/F90/Makefile
-config.status:1341: creating tigge/Makefile
-config.status:1341: creating perl/GRIB-API/Makefile.PL
-config.status:1341: creating perl/Makefile
-config.status:1341: creating python/Makefile
-config.status:1341: creating examples/python/Makefile
-config.status:1341: creating src/config.h
-config.status:1570: executing libtool commands
-config.status:1570: executing depfiles commands
-configure:24504:
-
-  Configuration completed.
-
-    You can now say 'make' to compile the eccodes package, 'make check' to
-	  test it  and 'make install' to install it afterwards.
-	  
-
-## ---------------- ##
-## Cache variables. ##
-## ---------------- ##
-
-ac_cv_build=x86_64-suse-linux-gnu
-ac_cv_c_compiler_gnu=yes
-ac_cv_env_CC_set=set
-ac_cv_env_CC_value=gcc
-ac_cv_env_CFLAGS_set=
-ac_cv_env_CFLAGS_value=
-ac_cv_env_CPPFLAGS_set=
-ac_cv_env_CPPFLAGS_value=
-ac_cv_env_CPP_set=
-ac_cv_env_CPP_value=
-ac_cv_env_F77_set=set
-ac_cv_env_F77_value=gfortran
-ac_cv_env_FCFLAGS_set=
-ac_cv_env_FCFLAGS_value=
-ac_cv_env_FC_set=set
-ac_cv_env_FC_value=gfortran
-ac_cv_env_FFLAGS_set=
-ac_cv_env_FFLAGS_value=
-ac_cv_env_LDFLAGS_set=
-ac_cv_env_LDFLAGS_value=
-ac_cv_env_LIBS_set=
-ac_cv_env_LIBS_value=
-ac_cv_env_PYTHON_CFLAGS_set=
-ac_cv_env_PYTHON_CFLAGS_value=
-ac_cv_env_PYTHON_CONFIG_set=
-ac_cv_env_PYTHON_CONFIG_value=
-ac_cv_env_PYTHON_INCLUDES_set=
-ac_cv_env_PYTHON_INCLUDES_value=
-ac_cv_env_PYTHON_LDFLAGS_set=
-ac_cv_env_PYTHON_LDFLAGS_value=
-ac_cv_env_PYTHON_LIBS_set=
-ac_cv_env_PYTHON_LIBS_value=
-ac_cv_env_PYTHON_set=
-ac_cv_env_PYTHON_value=
-ac_cv_env_YACC_set=
-ac_cv_env_YACC_value=
-ac_cv_env_YFLAGS_set=
-ac_cv_env_YFLAGS_value=
-ac_cv_env_build_alias_set=
-ac_cv_env_build_alias_value=
-ac_cv_env_host_alias_set=
-ac_cv_env_host_alias_value=
-ac_cv_env_target_alias_set=
-ac_cv_env_target_alias_value=
-ac_cv_f77_compiler_gnu=yes
-ac_cv_fc_compiler_gnu=yes
-ac_cv_func__doprnt=no
-ac_cv_func_bzero=yes
-ac_cv_func_closedir_void=no
-ac_cv_func_gettimeofday=yes
-ac_cv_func_posix_memalign=yes
-ac_cv_func_vprintf=yes
-ac_cv_header_assert_h=yes
-ac_cv_header_ctype_h=yes
-ac_cv_header_dirent_dirent_h=yes
-ac_cv_header_dlfcn_h=yes
-ac_cv_header_fcntl_h=yes
-ac_cv_header_inttypes_h=yes
-ac_cv_header_math_h=yes
-ac_cv_header_memory_h=yes
-ac_cv_header_stdarg_h=yes
-ac_cv_header_stdc=yes
-ac_cv_header_stddef_h=yes
-ac_cv_header_stdint_h=yes
-ac_cv_header_stdlib_h=yes
-ac_cv_header_string_h=yes
-ac_cv_header_strings_h=yes
-ac_cv_header_sys_param_h=yes
-ac_cv_header_sys_stat_h=yes
-ac_cv_header_sys_time_h=yes
-ac_cv_header_sys_types_h=yes
-ac_cv_header_time=yes
-ac_cv_header_unistd_h=yes
-ac_cv_host=x86_64-suse-linux-gnu
-ac_cv_lib_jasper_jas_stream_memopen=yes
-ac_cv_lib_lex=-lfl
-ac_cv_lib_m_pow=yes
-ac_cv_lib_openjpeg_opj_image_create=no
-ac_cv_objext=o
-ac_cv_path_EGREP='/usr/bin/grep -E'
-ac_cv_path_FGREP='/usr/bin/grep -F'
-ac_cv_path_GREP=/usr/bin/grep
-ac_cv_path_PYTHON=/usr/local/apps/python/2.7.8-01/bin/python
-ac_cv_path_PYTHON_CONFIG=/usr/local/apps/python/2.7.8-01/bin/python2.7-config
-ac_cv_path_SED=/usr/bin/sed
-ac_cv_path_install='/usr/bin/install -c'
-ac_cv_path_mkdir=/usr/bin/mkdir
-ac_cv_prog_AWK=gawk
-ac_cv_prog_CPP='gcc -E'
-ac_cv_prog_LEX=flex
-ac_cv_prog_RM='rm -f'
-ac_cv_prog_YACC='bison -y'
-ac_cv_prog_ac_ct_AR=ar
-ac_cv_prog_ac_ct_CC=gcc
-ac_cv_prog_ac_ct_MANIFEST_TOOL=mt
-ac_cv_prog_ac_ct_OBJDUMP=objdump
-ac_cv_prog_ac_ct_RANLIB=ranlib
-ac_cv_prog_ac_ct_STRIP=strip
-ac_cv_prog_cc_c89=
-ac_cv_prog_cc_g=yes
-ac_cv_prog_f77_g=yes
-ac_cv_prog_f90_debug_in_module=yes
-ac_cv_prog_f90_uppercase_mod=no
-ac_cv_prog_fc_g=yes
-ac_cv_prog_lex_root=lex.yy
-ac_cv_prog_lex_yytext_pointer=yes
-ac_cv_prog_make_make_set=yes
-ac_cv_search_opendir='none required'
-ac_cv_sys_file_offset_bits=no
-ac_cv_sys_largefile_CC=no
-ac_cv_sys_largefile_source=no
-ac_cv_type_signal=void
-ac_cv_type_size_t=yes
-am_cv_CC_dependencies_compiler_type=gcc3
-am_cv_make_support_nested_variables=yes
-am_cv_pathless_PYTHON=python
-am_cv_python_platform=linux2
-am_cv_python_pyexecdir='${exec_prefix}/lib/python2.7/site-packages'
-am_cv_python_pythondir='${prefix}/lib/python2.7/site-packages'
-am_cv_python_version=2.7
-ax_cv_f90_modflag=-I
-grib_api_cv_prog_cc_pedantic__Wall=yes
-lt_cv_ar_at_file=@
-lt_cv_deplibs_check_method=pass_all
-lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_ld_reload_flag=-r
-lt_cv_nm_interface='BSD nm'
-lt_cv_objdir=.libs
-lt_cv_path_LD=/usr/x86_64-suse-linux/bin/ld
-lt_cv_path_NM='/usr/bin/nm -B'
-lt_cv_path_mainfest_tool=no
-lt_cv_prog_compiler_c_o=yes
-lt_cv_prog_compiler_c_o_F77=yes
-lt_cv_prog_compiler_c_o_FC=yes
-lt_cv_prog_compiler_pic='-fPIC -DPIC'
-lt_cv_prog_compiler_pic_F77=-fPIC
-lt_cv_prog_compiler_pic_FC=-fPIC
-lt_cv_prog_compiler_pic_works=yes
-lt_cv_prog_compiler_pic_works_F77=yes
-lt_cv_prog_compiler_pic_works_FC=yes
-lt_cv_prog_compiler_rtti_exceptions=no
-lt_cv_prog_compiler_static_works=no
-lt_cv_prog_compiler_static_works_F77=no
-lt_cv_prog_compiler_static_works_FC=no
-lt_cv_prog_gnu_ld=yes
-lt_cv_sharedlib_from_linklib_cmd='printf %s\n'
-lt_cv_shlibpath_overrides_runpath=yes
-lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[	 ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[	 ][	 ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'' | sed '\''/ __gnu_lto/d'\'''
-lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/  {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/  {"\2", (void *) \&\2},/p'\'''
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/  {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/  {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/  {"lib\2", (void *) \&\2},/p'\'''
-lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\'''
-lt_cv_sys_max_cmd_len=1572864
-lt_cv_to_host_file_cmd=func_convert_file_noop
-lt_cv_to_tool_file_cmd=func_convert_file_noop
-
-## ----------------- ##
-## Output variables. ##
-## ----------------- ##
-
-ACLOCAL='${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing aclocal-1.13'
-AEC_DIR=''
-AMDEPBACKSLASH='\'
-AMDEP_FALSE='#'
-AMDEP_TRUE=''
-AMTAR='$${TAR-tar}'
-AM_BACKSLASH='\'
-AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-AM_DEFAULT_VERBOSITY='1'
-AM_V='$(V)'
-AR='ar'
-AUTOCONF='${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoconf'
-AUTOHEADER='${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoheader'
-AUTOMAKE='${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing automake-1.13'
-AWK='gawk'
-CC='gcc'
-CCDEPMODE='depmode=gcc3'
-CCSDS_TEST=''
-CFLAGS='-g -O2'
-CPP='gcc -E'
-CPPFLAGS=''
-CREATING_SHARED_LIBS_FALSE=''
-CREATING_SHARED_LIBS_TRUE='#'
-CYGPATH_W='echo'
-DEBUG_IN_MOD_FALSE='#'
-DEBUG_IN_MOD_TRUE=''
-DEFS='-DHAVE_CONFIG_H'
-DEPDIR='.deps'
-DEVEL_RULES='dummy.am'
-DLLTOOL='false'
-DSYMUTIL=''
-DUMPBIN=''
-ECCODES_AGE='0'
-ECCODES_CURRENT='1'
-ECCODES_DEFINITION_PATH='${datarootdir}/eccodes/definitions'
-ECCODES_MAIN_VERSION='0.10.0'
-ECCODES_MAJOR_VERSION='0'
-ECCODES_MINOR_VERSION='10'
-ECCODES_PATCH_VERSION='0'
-ECCODES_REVISION='0'
-ECCODES_SAMPLES_PATH='${datarootdir}/eccodes/samples'
-ECCODES_VERSION_STR='0.10.0'
-ECHO_C=''
-ECHO_N='-n'
-ECHO_T=''
-EGREP='/usr/bin/grep -E'
-EMOS_LIB=''
-EXEEXT=''
-F77='gfortran'
-F90_CHECK='examples/F90'
-F90_MODULE_FLAG='-I'
-FC='gfortran'
-FCFLAGS='-g -O2'
-FFLAGS='-g -O2'
-FGREP='/usr/bin/grep -F'
-FORTRAN_MOD='fortran'
-GREP='/usr/bin/grep'
-GRIB_API_INC='/tmp/masn/git/grib_api/eccodes/src'
-GRIB_API_LIB='/tmp/masn/git/grib_api/eccodes/src/grib_api.a'
-GRIB_DEVEL='0'
-IFS_SAMPLES_DIR='${datarootdir}/eccodes/ifs_samples'
-INSTALL_DATA='${INSTALL} -m 644'
-INSTALL_PROGRAM='${INSTALL}'
-INSTALL_SCRIPT='${INSTALL}'
-INSTALL_STRIP_PROGRAM='$(install_sh) -c -s'
-JASPER_DIR='system'
-JPEG_TEST='jpeg.sh'
-LD='/usr/x86_64-suse-linux/bin/ld -m elf_x86_64'
-LDFLAGS=''
-LEX='flex'
-LEXLIB='-lfl'
-LEX_OUTPUT_ROOT='lex.yy'
-LIBOBJS=''
-LIBS='-lm -ljasper '
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-LIBTOOL_DEPS='config/ltmain.sh'
-LIB_AEC=''
-LIB_JASPER='-ljasper'
-LIB_OPENJPEG=''
-LIB_PNG=''
-LINUX_DISTRIBUTION_NAME='openSUSE 13.1 (x86_64)'
-LINUX_DISTRIBUTION_VERSION=''
-LIPO=''
-LN_S='ln -s'
-LTLIBOBJS=''
-MAKEINFO='${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing makeinfo'
-MANIFEST_TOOL=':'
-MKDIR_P='/usr/bin/mkdir -p'
-NETCDF_LDFLAGS=''
-NM='/usr/bin/nm -B'
-NMEDIT=''
-NUMPY_INCLUDE='/usr/local/apps/python/2.7.8-01/lib/python2.7/site-packages/numpy/core/include'
-OBJDUMP='objdump'
-OBJEXT='o'
-OPENJPEG_DIR='system'
-OTOOL64=''
-OTOOL=''
-PACKAGE='eccodes'
-PACKAGE_BUGREPORT='Software.Support at ecmwf.int'
-PACKAGE_NAME='eccodes'
-PACKAGE_STRING='eccodes  '
-PACKAGE_TARNAME='eccodes'
-PACKAGE_URL=''
-PACKAGE_VERSION='0.10.0'
-PATH_SEPARATOR=':'
-PERL=''
-PERLDIR='perl'
-PERL_INSTALL_OPTIONS='LIB=NONE/perl'
-PERL_MAKE_OPTIONS=''
-PYTHON='/usr/local/apps/python/2.7.8-01/bin/python'
-PYTHON_CFLAGS='-I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7 -fno-strict-aliasing -O3 -fpic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes'
-PYTHON_CHECK='examples/python'
-PYTHON_CONFIG='/usr/local/apps/python/2.7.8-01/bin/python2.7-config'
-PYTHON_DATA_HANDLER='numpy'
-PYTHON_EXEC_PREFIX='${exec_prefix}'
-PYTHON_INCLUDES='-I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7'
-PYTHON_LDFLAGS='-lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic'
-PYTHON_LIBS='-lpthread -ldl -lutil -lm -lpython2.7'
-PYTHON_PLATFORM='linux2'
-PYTHON_PREFIX='${prefix}'
-PYTHON_VERSION='2.7'
-RANLIB='ranlib'
-RM='rm -f'
-RPM_CONFIGURE_ARGS=' '\''--enable-python'\'' '\''--disable-shared'\'' '\''CC=gcc'\'' '\''F77=gfortran'\'' '\''FC=gfortran'\'''
-RPM_HOST_CPU='x86_64'
-RPM_HOST_OS='linux-gnu'
-RPM_HOST_VENDOR='suse'
-RPM_RELEASE='1'
-SED='/usr/bin/sed'
-SET_MAKE=''
-SHELL='/bin/sh'
-STRIP='strip'
-UPPER_CASE_MOD_FALSE=''
-UPPER_CASE_MOD_TRUE='#'
-VERSION='0.10.0'
-WARN_PEDANTIC='-pedantic -Wall'
-WERROR=''
-WITH_FORTRAN_FALSE='#'
-WITH_FORTRAN_TRUE=''
-WITH_MARS_TESTS_FALSE=''
-WITH_MARS_TESTS_TRUE='#'
-WITH_PERL_FALSE=''
-WITH_PERL_TRUE='#'
-WITH_PYTHON_FALSE='#'
-WITH_PYTHON_TRUE=''
-YACC='bison -y'
-YFLAGS=''
-ac_ct_AR='ar'
-ac_ct_CC='gcc'
-ac_ct_DUMPBIN=''
-ac_ct_F77=''
-ac_ct_FC=''
-am__EXEEXT_FALSE=''
-am__EXEEXT_TRUE='#'
-am__fastdepCC_FALSE='#'
-am__fastdepCC_TRUE=''
-am__include='include'
-am__isrc=''
-am__leading_dot='.'
-am__nodep='_no'
-am__quote=''
-am__tar='$${TAR-tar} chof - "$$tardir"'
-am__untar='$${TAR-tar} xf -'
-bindir='${exec_prefix}/bin'
-build='x86_64-suse-linux-gnu'
-build_alias=''
-build_cpu='x86_64'
-build_os='linux-gnu'
-build_vendor='suse'
-datadir='${datarootdir}'
-datarootdir='${prefix}/share'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-dvidir='${docdir}'
-exec_prefix='${prefix}'
-host='x86_64-suse-linux-gnu'
-host_alias=''
-host_cpu='x86_64'
-host_os='linux-gnu'
-host_vendor='suse'
-htmldir='${docdir}'
-includedir='${prefix}/include'
-infodir='${datarootdir}/info'
-install_sh='${SHELL} /tmp/masn/git/grib_api/eccodes/config/install-sh'
-libdir='${exec_prefix}/lib'
-libexecdir='${exec_prefix}/libexec'
-localedir='${datarootdir}/locale'
-localstatedir='${prefix}/var'
-mandir='${datarootdir}/man'
-mkdir_p='$(MKDIR_P)'
-oldincludedir='/usr/include'
-pdfdir='${docdir}'
-pkgpyexecdir='${pyexecdir}/eccodes'
-pkgpythondir='${pythondir}/eccodes'
-prefix='/usr/local'
-program_transform_name='s,x,x,'
-psdir='${docdir}'
-pyexecdir='${exec_prefix}/lib/python2.7/site-packages'
-pythondir='${prefix}/lib/python2.7/site-packages'
-sbindir='${exec_prefix}/sbin'
-sharedstatedir='${prefix}/com'
-sysconfdir='${prefix}/etc'
-target_alias=''
-
-## ----------- ##
-## confdefs.h. ##
-## ----------- ##
-
-/* confdefs.h */
-#define PACKAGE_NAME "eccodes"
-#define PACKAGE_TARNAME "eccodes"
-#define PACKAGE_VERSION " "
-#define PACKAGE_STRING "eccodes  "
-#define PACKAGE_BUGREPORT "Software.Support at ecmwf.int"
-#define PACKAGE_URL ""
-#define STDC_HEADERS 1
-#define HAVE_SYS_TYPES_H 1
-#define HAVE_SYS_STAT_H 1
-#define HAVE_STDLIB_H 1
-#define HAVE_STRING_H 1
-#define HAVE_MEMORY_H 1
-#define HAVE_STRINGS_H 1
-#define HAVE_INTTYPES_H 1
-#define HAVE_STDINT_H 1
-#define HAVE_UNISTD_H 1
-#define HAVE_DLFCN_H 1
-#define LT_OBJDIR ".libs/"
-#define ECCODES_MAIN_VERSION 0.10.0
-#define ECCODES_MAJOR_VERSION 0
-#define ECCODES_MINOR_VERSION 10
-#define ECCODES_REVISION_VERSION 0
-#define ECCODES_CURRENT 1
-#define ECCODES_REVISION 0
-#define ECCODES_AGE 0
-#define YYTEXT_POINTER 1
-#define GRIB_PTHREADS 0
-#define GRIB_LINUX_PTHREADS 0
-#define GRIB_IBMPOWER67_OPT 0
-#define IEEE_BE 0
-#define IEEE_LE 1
-#define IS_BIG_ENDIAN 0
-#define GRIB_INLINE inline
-#define GRIB_MEM_ALIGN 0
-#define POSIX_MEMALIGN 1
-#define VECTOR 0
-#define MANAGE_MEM 0
-#define HAVE_FSEEKO 1
-#define GRIB_TIMER 0
-#define OMP_PACKING 0
-#define HAVE_JPEG 1
-#define HAVE_LIBJASPER 1
-#define HAVE_LIBM 1
-#define HAVE_DIRENT_H 1
-#define STDC_HEADERS 1
-#define HAVE_STDDEF_H 1
-#define HAVE_STDLIB_H 1
-#define HAVE_STRING_H 1
-#define HAVE_SYS_PARAM_H 1
-#define HAVE_SYS_TIME_H 1
-#define HAVE_UNISTD_H 1
-#define HAVE_MATH_H 1
-#define HAVE_STDARG_H 1
-#define HAVE_ASSERT_H 1
-#define HAVE_CTYPE_H 1
-#define HAVE_FCNTL_H 1
-#define TIME_WITH_SYS_TIME 1
-#define RETSIGTYPE void
-#define HAVE_VPRINTF 1
-#define HAVE_BZERO 1
-#define HAVE_GETTIMEOFDAY 1
-
-configure: exit 0
diff --git a/config.status b/config.status
index 3b028a2..332233c 100755
--- a/config.status
+++ b/config.status
@@ -437,7 +437,7 @@ Copyright (C) 2012 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
-ac_pwd='/tmp/masn/git/grib_api/eccodes'
+ac_pwd='/home/ma/masn/git/eccodes'
 srcdir='.'
 INSTALL='/usr/bin/install -c'
 MKDIR_P='/usr/bin/mkdir -p'
@@ -674,7 +674,7 @@ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
 finish_eval=''
 hardcode_into_libs='yes'
 sys_lib_search_path_spec='/usr/lib64/gcc/x86_64-suse-linux/4.8 /usr/lib64 /lib64 /usr/x86_64-suse-linux/lib '
-sys_lib_dlsearch_path_spec='/lib /usr/lib /usr/local/lib64 /usr/local/lib /usr/lib64/apper /usr/lib64/graphviz /usr/lib64/graphviz/sharp /usr/lib64/graphviz/java /usr/lib64/graphviz/perl /usr/lib64/graphviz/php /usr/lib64/graphviz/ocaml /usr/lib64/graphviz/python /usr/lib64/graphviz/lua /usr/lib64/graphviz/tcl /usr/lib64/graphviz/guile /usr/lib64/graphviz/ruby /opt/kde3/lib64 /opt/kde3/lib /usr/lib64/mysql-workbench /usr/X11R6/lib64 /usr/X11R6/lib /usr/X11R6/lib64 /usr/X11R6/lib /usr/lib [...]
+sys_lib_dlsearch_path_spec='/lib /usr/lib /usr/local/lib64 /usr/local/lib /usr/lib64/apper /usr/lib64/graphviz /usr/lib64/graphviz/sharp /usr/lib64/graphviz/java /usr/lib64/graphviz/perl /usr/lib64/graphviz/php /usr/lib64/graphviz/ocaml /usr/lib64/graphviz/python /usr/lib64/graphviz/lua /usr/lib64/graphviz/tcl /usr/lib64/graphviz/guile /usr/lib64/graphviz/ruby /opt/kde3/lib64 /opt/kde3/lib /usr/lib64/mysql-workbench /usr/X11R6/lib64 /usr/X11R6/lib /usr/lib64/smokegen '
 hardcode_action='immediate'
 enable_dlopen='unknown'
 enable_dlopen_self='unknown'
@@ -838,7 +838,7 @@ fi
 
 
     PACKAGE='eccodes'
-    VERSION='0.10.0'
+    VERSION='0.13.0'
     TIMESTAMP=''
     RM='rm -f'
     ofile='libtool'
@@ -981,14 +981,14 @@ S["PYTHON_VERSION"]="2.7"
 S["PYTHON"]="/usr/local/apps/python/2.7.8-01/bin/python"
 S["WITH_PERL_FALSE"]=""
 S["WITH_PERL_TRUE"]="#"
-S["GRIB_API_INC"]="/tmp/masn/git/grib_api/eccodes/src"
-S["GRIB_API_LIB"]="/tmp/masn/git/grib_api/eccodes/src/grib_api.a"
+S["GRIB_API_INC"]="/home/ma/masn/git/eccodes/src"
+S["GRIB_API_LIB"]="/home/ma/masn/git/eccodes/src/grib_api.a"
 S["PERL_MAKE_OPTIONS"]=""
 S["PERL"]=""
 S["PERL_INSTALL_OPTIONS"]="LIB=NONE/perl"
 S["LIB_PNG"]=""
 S["CCSDS_TEST"]=""
-S["AEC_DIR"]=""
+S["AEC_DIR"]="/usr/local/apps/aec/0.3/LP64"
 S["LIB_AEC"]=""
 S["JPEG_TEST"]="jpeg.sh"
 S["LIB_JASPER"]="-ljasper"
@@ -1050,13 +1050,13 @@ S["SET_MAKE"]=""
 S["mkdir_p"]="$(MKDIR_P)"
 S["MKDIR_P"]="/usr/bin/mkdir -p"
 S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s"
-S["install_sh"]="${SHELL} /tmp/masn/git/grib_api/eccodes/config/install-sh"
-S["MAKEINFO"]="${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing makeinfo"
-S["AUTOHEADER"]="${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoheader"
-S["AUTOMAKE"]="${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing automake-1.13"
-S["AUTOCONF"]="${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoconf"
-S["ACLOCAL"]="${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing aclocal-1.13"
-S["VERSION"]="0.10.0"
+S["install_sh"]="${SHELL} /home/ma/masn/git/eccodes/config/install-sh"
+S["MAKEINFO"]="${SHELL} /home/ma/masn/git/eccodes/config/missing makeinfo"
+S["AUTOHEADER"]="${SHELL} /home/ma/masn/git/eccodes/config/missing autoheader"
+S["AUTOMAKE"]="${SHELL} /home/ma/masn/git/eccodes/config/missing automake-1.13"
+S["AUTOCONF"]="${SHELL} /home/ma/masn/git/eccodes/config/missing autoconf"
+S["ACLOCAL"]="${SHELL} /home/ma/masn/git/eccodes/config/missing aclocal-1.13"
+S["VERSION"]="0.13.0"
 S["PACKAGE"]="eccodes"
 S["CYGPATH_W"]="echo"
 S["am__isrc"]=""
@@ -1067,10 +1067,10 @@ S["ECCODES_AGE"]="0"
 S["ECCODES_REVISION"]="0"
 S["ECCODES_CURRENT"]="1"
 S["ECCODES_PATCH_VERSION"]="0"
-S["ECCODES_MINOR_VERSION"]="10"
+S["ECCODES_MINOR_VERSION"]="13"
 S["ECCODES_MAJOR_VERSION"]="0"
-S["ECCODES_VERSION_STR"]="0.10.0"
-S["ECCODES_MAIN_VERSION"]="0.10.0"
+S["ECCODES_VERSION_STR"]="0.13.0"
+S["ECCODES_MAIN_VERSION"]="0.13.0"
 S["LIBTOOL_DEPS"]="config/ltmain.sh"
 S["CPP"]="gcc -E"
 S["OTOOL64"]=""
@@ -1144,7 +1144,7 @@ S["exec_prefix"]="${prefix}"
 S["PACKAGE_URL"]=""
 S["PACKAGE_BUGREPORT"]="Software.Support at ecmwf.int"
 S["PACKAGE_STRING"]="eccodes  "
-S["PACKAGE_VERSION"]="0.10.0"
+S["PACKAGE_VERSION"]="0.13.0"
 S["PACKAGE_TARNAME"]="eccodes"
 S["PACKAGE_NAME"]="eccodes"
 S["PATH_SEPARATOR"]=":"
@@ -1208,9 +1208,9 @@ D["HAVE_STDINT_H"]=" 1"
 D["HAVE_UNISTD_H"]=" 1"
 D["HAVE_DLFCN_H"]=" 1"
 D["LT_OBJDIR"]=" \".libs/\""
-D["ECCODES_MAIN_VERSION"]=" 0.10.0"
+D["ECCODES_MAIN_VERSION"]=" 0.13.0"
 D["ECCODES_MAJOR_VERSION"]=" 0"
-D["ECCODES_MINOR_VERSION"]=" 10"
+D["ECCODES_MINOR_VERSION"]=" 13"
 D["ECCODES_REVISION_VERSION"]=" 0"
 D["ECCODES_CURRENT"]=" 1"
 D["ECCODES_REVISION"]=" 0"
diff --git a/configure b/configure
index 9f966a1..351eb9b 100755
--- a/configure
+++ b/configure
@@ -18642,7 +18642,7 @@ else
        void* increment(void* arg);
 
        int main(int argc,char** argv){
-         int i;
+         long i;
          void* status=0;
          pthread_attr_t attr;
          pthread_attr_init(&attr);
@@ -18658,7 +18658,7 @@ else
        }
 
        void* increment(void* arg) {
-         int i=(int)arg;
+         int i=(long)arg;
          pthread_once(&once,&init);
          pthread_mutex_lock(&mutex);
          count+=i;
@@ -18732,7 +18732,7 @@ else
        void* increment(void* arg);
 
        int main(int argc,char** argv){
-         int i;
+         long i;
          void* status=0;
          pthread_attr_t attr;
          pthread_attr_init(&attr);
@@ -18748,7 +18748,7 @@ else
        }
 
        void* increment(void* arg) {
-         int i=(int)arg;
+         int i=(long)arg;
          pthread_once(&once,&init);
          pthread_mutex_lock(&mutex);
          count+=i;
diff --git a/confluence/confUtils.pm b/confluence/confUtils.pm
deleted file mode 100644
index 22c9044..0000000
--- a/confluence/confUtils.pm
+++ /dev/null
@@ -1,60 +0,0 @@
-package confUtils;
-
-use strict;
-
-my $CONF=$ENV{CONF}; 
-
-#====================================================
-#
-# Generic functions related to confluence 
-#
-#====================================================
-
-#--------------------------------
-# Upload a page to confluence
-#--------------------------------
-
-sub loadToConf {
-    
-    my ($fHtml,$title,$parentPage) = @_;
-    
-    my $cmd="$CONF -a addPage --noConvert --replace --space \"ECC\" --title \"$title\" --parent \"$parentPage\" --file $fHtml";
- 
-    print "\t\tUpload to conflunce with command:\n\t$cmd\n";   
-    system($cmd);
-}    
-
-#---------------------------------------
-# Create link to a page
-#---------------------------------------
-
-sub linkToPage {
-    
-    my ($page,$label) = @_;
-    
-    my $str="<ac:link>
-  <ri:page ri:content-title=\"".$page."\"/>
-  <ac:plain-text-link-body>
-    <![CDATA[".$label."]]>
-  </ac:plain-text-link-body>
-  </ac:link>";
-
-   return $str;
-}   
-
-sub makeInfo {
-    
-    my ($text) = @_;
-    
-    return "<ac:structured-macro ac:name=\"info\"><ac:parameter ac:name=\"icon\">false</ac:parameter>".
-              "<ac:rich-text-body>".$text."</ac:rich-text-body></ac:structured-macro>";
-}    
-
-sub makeCode {
-    
-    my ($text) = @_;
-
-    return "<ac:structured-macro ac:name=\"code\"><ac:plain-text-body><![CDATA[".$text."]]></ac:plain-text-body></ac:structured-macro>";
-}
-
-1;
diff --git a/confluence/examples.par b/confluence/examples.par
deleted file mode 100644
index 19338f4..0000000
--- a/confluence/examples.par
+++ /dev/null
@@ -1,33 +0,0 @@
-#examples
-
-GRIB (
-      grib_clone
-      grib_ensemble_index
-      grib_get_keys
-      grib_index
-      grib_iterator_bitmap
-      grib_iterator
-      grib_keys_iterator
-      grib_multi_write
-      grib_multi
-      grib_nearest
-      grib_precision
-      grib_print_data
-      grib_set_bitmap
-      grib_set_data
-      grib_set_pv
-      grib_set_keys
-    )
-BUFR (
-      bufr_attributes
-      bufr_clone
-      bufr_expanded
-      bufr_get_keys
-      bufr_keys_iterator
-      bufr_read_header
-      bufr_read_scatterometer
-      bufr_read_synop
-      bufr_read_temp
-      bufr_set_keys
-      )
-
diff --git a/confluence/load_examples.pl b/confluence/load_examples.pl
deleted file mode 100755
index fc0ba80..0000000
--- a/confluence/load_examples.pl
+++ /dev/null
@@ -1,389 +0,0 @@
-#!/usr/local/apps/perl/current/bin/perl -I/usr/local/lib/metaps/perl
-
-use Getopt::Long;
-use strict;
-
-#--------------------------------------------------
-# 
-#--------------------------------------------------
-
-#The root page of examples in confluence!!!
-my $rootPage="API examples";
-
-my @langKeys=("c","f","p");
-
-my %langName = ("f" => "Fortran 90",
-             "c"  => "C",
-             "p"  => "Python");
-
-my %langType = ("f" => "none",
-             "c"  => "cpp",
-             "p"  => "python");
-
-my %langSuffix = ("f" => "f90",
-             "c"  => "c",
-             "p"  => "py");
-
-my %langDir = ("f" => "F90",
-             "c"  => "C",
-             "p"  => "python");
-
-
-my $CONF=$ENV{CONF}; 
-my $inRootDir;
-
-#---------------------------------
-# Read arguments
-#---------------------------------
-
-GetOptions("inDir=s" => \$inRootDir)
- 	or die("Error in command line arguments\n");
- 
-#----------------------------------
-# Dirs
-#----------------------------------
-
-#The root dir of the examples
-$inRootDir="../examples";
-
-#The genareted html files are stored here
-my $htmlDir=$ENV{TMPDIR}."/res_html";
-
-
-my %allExamples=read_examples();
-
-#----------------------------------------
-# Preparations
-#----------------------------------------
-
-unless ( -d  $htmlDir ) {
-    mkdir $htmlDir	
-}
-
-#---------------------------------------------------
-# Loop for the code types (e.g. grib, bufr, etc.)
-#---------------------------------------------------
-
-foreach my $cType (keys %allExamples) {
-    
-    print "----------------------------------------\n";
-    print "  Processing examples for: $cType\n";
-    print "----------------------------------------\n";
-    
-    #Get the examples
-    my @examples=@{$allExamples{$cType}};  
-    
-    if($#examples+1 == 0) {
-        die "No examples are defined!\n";
-    }
-
-    #---------------------------------------------------
-    # Create a parent page for the examples of this type
-    #---------------------------------------------------
-
-    my $parentPage=parentPageTitle($cType);
-    makeParentPage($rootPage,$parentPage,$htmlDir,$cType, at examples);
-   
-    #--------------------------------
-    # Loop for the examples
-    #--------------------------------
-    
-    foreach my $name (@examples) {
-        
-        my $fOut=$htmlDir."/".$cType."_".$name.".html";
-        open(OUT,">$fOut") or die "$fOut: $!"; 
-        
-        #Description
-        print OUT "<h3>Description</h3>";
-        print OUT "This example shows: <i>".getDescription($name)."</i>\n";
-        
-        #Create a tab container
-        print OUT "<h3>Source code</h3>";
-        print OUT "<ac:structured-macro ac:name=\"auitabs\"><ac:parameter ac:name=\"direction\">horizontal</ac:parameter><ac:rich-text-body>";
-    
-        #Add a tab for each language
-        foreach my $i (@langKeys) {
-        
-            my $tabName=$langName{$i};
-            my $fName=$name.".".$langSuffix{$i};
-            my $fPath=$inRootDir."/".$langDir{$i}."/".$fName;
-            my $lType=$langType{$i};
-        
-            #Read sourcode into html format
-            my $c=getSourceCode($fName,$fPath,$lType);
-    
-            #If there is a source creates a tab for it            
-            #if(length($c) > 0) {
-            print OUT "<ac:structured-macro ac:name=\"auitabspage\"><ac:parameter ac:name=\"title\">".$tabName."</ac:parameter>
-                <ac:rich-text-body>".$c."</ac:rich-text-body></ac:structured-macro>";
-            
-        }
-        
-        #Close tab container
-        print OUT  "</ac:rich-text-body></ac:structured-macro>";  
-
-        close OUT;
-        
-        #Upload the file to confluence 
-        my $pageTitle=examplePageTitle($name);
-        loadToConf($fOut,$pageTitle,$parentPage);       
-    }
-}    
-
-#===========================================================
-#===========================================================
-#
-# FUNCTIONS 
-#
-#===========================================================
-#===========================================================
-
-#====================================================
-#
-# Functions related to the examples
-#
-#====================================================
-
-#------------------------------------------
-# Read in example list
-#------------------------------------------
-
-sub read_examples {
-
-	my %res=();
-	my $fIn="examples.par";
-	open(IN,"<$fIn") or die "$fIn: $!";
-	
-    my $line;	
-    my $actType;
-    while (defined ($line = <IN>)) {
-		chomp($line);
-		if ($line =~ /.*#/) {next;}
-		
-        #print $line."\n";
-    
-        $line =~ s/\"//g;
-    
-        my ($a)=($line =~ /(\S+)\s*\(/);
-        if($a and $a !~ /\!/) {
-            $actType=$a;
-            #print "type: ".$a."\n";
-            #$res{$actType};
-            next;
-        }
-        
-        if( $line =~ /\)/) {
-            $actType="";
-            next;
-        }
-        
-        if(length($actType) > 0) {            
-            my ($b) =($line =~ /(\S+)/);
-            #print "ex: ".$b."\n";
-            if($b) {
-                push(@{$res{$actType}},$b);
-            }
-        }        
-        
-	}	
-    
-    close IN;
-    
-	return %res;
-}
-
-#-----------------------------------------------------------------------------
-# Genarate the page title for the parent page for a given type of examples
-#-----------------------------------------------------------------------------
-
-sub parentPageTitle {
-   
-   my ($codeType) = @_;
-   
-   return $codeType." examples";  
-}   
-
-#--------------------------------------------------------
-# Create parent page for a given type of examples
-#--------------------------------------------------------
-
-sub makeParentPage {
-    my ($rootPage,$pageTitle,$outDir,$cType, at xmp) = @_;
-    
-    my $f=$outDir."/parent_".$cType."html";
-  
-    open(OUT,">$f") or die "$f: $!"; 
-        
-    my $str="<table><tbody>";
-    $str=$str."<tr><th>Example</th><th>Description</th></tr>";
-    
-    foreach my $xm (@xmp) {
-        $str=$str."<tr><td>".linkToPage($xm,examplePageTitle($xm))."</td><td>".getDescription($xm)."</td></tr>";
-    }        
-    $str=$str."</tbody></table>";                   
-    
-    print OUT $str;
-    
-    close OUT;
-    
-    #Load it to confluence
-    loadToConf($f,$pageTitle,$rootPage);
-}
-
-#-----------------------------------------------------------------------------
-# Genarate the page title for a given example
-#-----------------------------------------------------------------------------
- 
-sub examplePageTitle {
-   
-   my ($exName) = @_;
-   
-   return $exName; 
-}    
-  
-#-----------------------------------------------------------
-# Get the file path for an example with the given language 
-#-----------------------------------------------------------
-
-sub examplePath {    
-    my ($name,$lang) = @_;
-    return $inRootDir."/".$langDir{$lang}."/".$name.".".$langSuffix{$lang};
-}
-
-#-----------------------------------------------------------
-# Check if the file for a given example exists.  
-#-----------------------------------------------------------
-
-sub hasExample {
-    
-    my ($name,$lang) = @_;
-    my $f=examplePath($name,$lang);
-    if( -e $f ) {return 1};
-    
-    print "$f no!!!\n";
-    
-    return 0;
-}
-
-#------------------------------------------------------------
-# Generate confluence formatted html string form a source file
-#------------------------------------------------------------
-
-sub getSourceCode {
-    
-    my ($title,$fPath,$lang) = @_;
- 
-    my $codeTxt;
-    
-    print $fPath."\n";
- 
-    my $str;
-    
-    if($lang eq "") {
-        $codeTxt=fortran_file_to_string($fPath);
-        #return "<p /><code><ac:macro ac:name=\"html\"><ac:plain-text-body><![CDATA[".$codeTxt."]]></ac:plain-text-body></ac:macro></code>";
-        return "<p /><pre>".$codeTxt."</pre>";
-    } else {   
-        open(IN,"<$fPath") or  return ""; # die "$fPath: $!";  
-        $codeTxt=join("", <IN>); 
-        close IN;
-    }
-    
-    $str="
-    <ac:structured-macro ac:name=\"code\">
-        <ac:parameter ac:name=\"title\">".$title."</ac:parameter>
-        <ac:parameter ac:name=\"linenumbers\">false</ac:parameter>
-        <ac:parameter ac:name=\"language\">".$lang."</ac:parameter>
-        <ac:plain-text-body><![CDATA[".$codeTxt."]]></ac:plain-text-body>
-    </ac:structured-macro>";
-    
-    return $str;
-}
-
-#--------------------------------------------------------
-# Extract the description of a given example
-#--------------------------------------------------------
-
-sub getDescription {
-    
-    my ($name) = @_;
-   
-    my $lang="c";
-   
-    my $res;
-   
-    if(hasExample($name,$lang)== 1) {
-        my $f=examplePath($name,$lang);
-   
-        my $found=0;            
-        open (IN,"<$f") or return "";
-        while (defined (my $line = <IN>)) {
-            #First row
-            if($found==0) {
-                if($line =~ /\*\s*Description:/) {
-                    $found=1;
-                    my ($r)=($line =~ /\*\s*Description:\s*(.+)/);
-                    if(length($r) > 2) {
-                        $res=$r;
-                    }    
-                }    
-            } else {
-                my ($r)=($line =~ /\*\s+(.+)/);
-                if(length($r) > 2) {
-                    $res=$res." ".$r;
-                } else {
-                    last;
-                }                    
-            }
-        }  
-        
-        #print $f."\n";
-        #print "descr: ".$res."\n"; 
-    }
-    
-    return $res;                
-}  
-
-#====================================================
-#
-# Generic functions related to confluence 
-#
-#====================================================
-
-#--------------------------------
-# Upload a page to confluence
-#--------------------------------
-
-sub loadToConf {
-    
-    my ($fHtml,$title,$parentPage) = @_;
-   
-    system("$CONF -a addPage --noConvert --replace --space \"ECC\" --title \"$title\" --parent \"$parentPage\" --file $fHtml");
-}    
-
-#---------------------------------------
-# Create link to a page
-#---------------------------------------
-
-sub linkToPage {
-    
-    my ($page,$label) = @_;
-    
-    my $str="<ac:link>
-  <ri:page ri:content-title=\"".$page."\"/>
-  <ac:plain-text-link-body>
-    <![CDATA[".$label."]]>
-  </ac:plain-text-link-body>
-  </ac:link>";
-
-   return $str;
-}   
-
-sub makeInfo {
-    
-    my ($text) = @_;
-    
-    return "<ac:structured-macro ac:name=\"info\"><ac:parameter ac:name=\"icon\">false</ac:parameter>".
-              "<ac:rich-text-body>".$text."</ac:rich-text-body></ac:structured-macro>";
-}    
-
diff --git a/confluence/load_tools.pl b/confluence/load_tools.pl
deleted file mode 100755
index 97d9b35..0000000
--- a/confluence/load_tools.pl
+++ /dev/null
@@ -1,489 +0,0 @@
-#!/usr/local/apps/perl/current/bin/perl -I/usr/local/lib/metaps/perl -I.
-
-use confUtils;
-use Getopt::Long;
-use strict;
-
-#--------------------------------------------------
-# 
-#--------------------------------------------------
-
-#The root page of examples in confluence!!!
-my $rootPage="Command line tools";
-my $unique;
-
-#---------------------------------
-# Read arguments
-#---------------------------------
-
-GetOptions("unique=s" => \$unique)
- 	or die("Error in command line arguments\n");
- 
-#----------------------------------
-# Dirs
-#----------------------------------
-
-#The tools executales and shell scripts 
-my $toolsDir="../tools";
-
-#The genareted html files are stored here
-my $htmlDir=$ENV{TMPDIR}."/res_tools_html";
-
-my %cmdSwitches=();
-my %allTools=read_config();
-
-#----------------------------------------
-# Preparations
-#----------------------------------------
-
-unless ( -d  $htmlDir ) {
-    mkdir $htmlDir	
-}
-
-#---------------------------------------------------
-# Loop for the code types (e.g. grib, bufr, etc.)
-#---------------------------------------------------
-
-foreach my $cType (keys %allTools) {
-    
-    print "----------------------------------------\n";
-    print "  Processing tools for: $cType\n";
-    print "----------------------------------------\n";
-    
-    #Get the examples
-    my @tools=@{$allTools{$cType}};  
-    
-    if($#tools+1 == 0) {
-        die "No tools are defined!\n";
-    }
-
-    #---------------------------------------------------
-    # Create a parent page for the tools of this type
-    #---------------------------------------------------
-
-    print "--> Genarate parent page\n";
-
-    my $parentPage=parentPageTitle($cType);
-    
-    unless($unique) {
-    	makeParentPage($rootPage,$parentPage,$htmlDir,$cType, at tools);
-    }
-    	
-    #--------------------------------
-    # Loop for the tools
-    #--------------------------------
-    
-    foreach my $name (@tools) {
-    
-        if($unique eq "" or $name eq $unique) {
-		
-	    print "-------------------------------\n--> tool: ".$name."\n";
-        
-            my $fOut=$htmlDir."/".$cType."_".$name.".html";
-            open(OUT,">$fOut") or die "$fOut: $!"; 
-        
-            my $str=getDoc($name);
-        
-            $str=$str.getExample($name);
-        
-            print OUT $str;
-        
-            close OUT;
-        
-            #Upload the file to confluence 
-            my $pageTitle=toolsPageTitle($name);
-            confUtils::loadToConf($fOut,$pageTitle,$parentPage); 
-	}          
-    }
-}    
-
-#===========================================================
-#===========================================================
-#
-# FUNCTIONS 
-#
-#===========================================================
-#===========================================================
-
-#====================================================
-#
-# Functions related to the examples
-#
-#====================================================
-
-#------------------------------------------
-# Read in example list
-#------------------------------------------
-
-sub read_config {
-
-	my %res=();
-	my $fIn="tools.par";
-	open(IN,"<$fIn") or die "$fIn: $!";
-	
-    my $line;	
-    my $actType;
-    while (defined ($line = <IN>)) {
-		chomp($line);
-		if ($line =~ /.*#/) {next;}
-		
-        #print $line."\n";
-    
-        $line =~ s/\"//g;
-    
-        my ($a)=($line =~ /(\S+)\s*\(/);
-        if($a and ($a !~ /\!/)) {
-            $actType=$a;
-            #print "type: ".$a."\n";
-            #$res{$actType};
-            next;
-        }
-        
-        if( $line =~ /\)/) {
-            $actType="";
-            next;
-        }
-        
-        if(length($actType) > 0) {  
-            
-            #If ! presents we skip this tool
-            if($line =~ /^\s*!/) {
-                next;
-            
-            #A switch is specified for the tool's shell script
-            } elsif( $line =~ /\S+ \S+/) {
-                      
-                 my ($b,$c)=($line =~ /(\S+) (\S+)/);  
-                 if($b) {
-                        push(@{$res{$actType}},$b);
-                        $cmdSwitches{$b}="$c";
-                 }
-            
-            #The tools shell script has to be called without a switch          
-            } else {          
-                my ($b) =($line =~ /(\S+)/);
-                #print "ex: ".$b."\n";
-                if($b) {
-                    push(@{$res{$actType}},$b);
-                }    
-            }
-        }        
-        
-	}	
-    
-    close IN;
-    
-	return %res;
-}
-
-#-----------------------------------------------------------------------------
-# Genarate the page title for the parent page for a given type of examples
-#-----------------------------------------------------------------------------
-
-sub parentPageTitle {
-   
-   my ($codeType) = @_;
-   
-   return $codeType." tools";  
-}   
-
-#--------------------------------------------------------
-# Create parent page for a given type of examples
-#--------------------------------------------------------
-
-sub makeParentPage {
-    my ($rootPage,$pageTitle,$outDir,$cType, at xmp) = @_;
-    
-    my $f=$outDir."/parent_".$cType."html";
-  
-    open(OUT,">$f") or die "$f: $!"; 
-        
-    my $str="<table><tbody>";
-    $str=$str."<tr><th>Name</th><th>Description</th></tr>";
-    
-    foreach my $xm (@xmp) {
-        $str=$str."<tr><td>".confUtils::linkToPage($xm,toolsPageTitle($xm))."</td><td>".getDescription($xm)."</td></tr>";
-    }        
-    $str=$str."</tbody></table>";                   
-    
-    print OUT $str;
-    
-    close OUT;
-    
-    #Load it to confluence
-    confUtils::loadToConf($f,$pageTitle,$rootPage);
-}
-
-#-----------------------------------------------------------------------------
-# Genarate the page title for a given example
-#-----------------------------------------------------------------------------
- 
-sub toolsPageTitle {
-   
-   my ($exName) = @_;
-   
-   return $exName; 
-}    
-  
-#-----------------------------------------------------------
-# Get the file path for an example with the given language 
-#-----------------------------------------------------------
-
-sub toolsPath {    
-    my ($name) = @_;
-    return $toolsDir."/".$name;
-}
-
-#-----------------------------------------------------------
-# Check if the file for a given example exists.  
-#-----------------------------------------------------------
-
-sub hasExample {
-    
-    my ($name,$lang) = @_;
-    #my $f=examplePath($name,$lang);
-    #if( -e $f ) {return 1};
-    
-    #print "$f no!!!\n";
-    
-    return 0;
-}
-
-sub docPath {
-    
-    my ($name) = @_;
-    
-    my $fTmp=$htmlDir."/doc_".$name.".tmp";
-    
-    my $exe=$name;
-    if( -e $toolsDir."/".$exe) {
-        
-        my $swt;
-        if(defined($cmdSwitches{$name})) {
-            $swt=$cmdSwitches{$name};
-        }    
-       
-	my $cmd;
-	
-	#If the switch is desc it does not run the shell script but 
-	#use the .desc file"
-	if ($swt eq "desc") {
-		$cmd="cd ".$toolsDir."; cp ".$name.".desc ".$fTmp;
-	} else {
-        	$cmd="cd ".$toolsDir.";./".$exe."  > ".$fTmp;
-        }
-	
-	print "\tGenerate documentation with command:\n\t\t".$cmd."\n";
-	
-	system($cmd);
-        return $fTmp;
-    }
-    
-    return "";    
-} 
-   
-#------------------------------------------------------------
-# 
-#------------------------------------------------------------
-
-sub examplePath {
-    
-    my ($name) = @_;
-    
-    my $fTmp=$htmlDir."/ex_".$name.".tmp";
-    
-    my $script=$name.".sh";
-    if( -e $toolsDir."/".$script) {
-        
-        my $cmd="cd ".$toolsDir.";./".$script."  > ".$fTmp;
-        print "\tGenerate examples text with command:\n\t\t".$cmd."\n";        
-        system($cmd);
-        return $fTmp;
-    } 
-    
-    return "";    
-}    
-
-
-#------------------------------------------------------------
-# Generate confluence formatted html string form a source file
-#------------------------------------------------------------
-
-sub getDoc {
-    
-    my ($name) = @_;
-    
-    my $fPath=docPath($name);
-    
-    my $str;
-    my $tbody=0;
-       
-    open (IN,"<$fPath") or return "";
-    while (defined (my $line = <IN>)) {
-            
-        $line =~ s/^\s+//g;
-        $line=~ s/\n//g;
-        
-        if($line =~ /^NAME\s*/) {
-            next;
-        }
-        
-        if($line =~ /^DESCRIPTION|USAGE|OPTIONS\s*/) {
-            
-            if($tbody == 1) {
-                $str=$str."</p>";
-                $tbody=0;
-            }    
-            
-            $str=$str."<h2>".$line."</h2>";
-           
-            unless($line =~ /OPTIONS\s*/)
-            {
-                $str=$str."<p>";
-                $tbody=1;
-            }    
-            
-        } elsif( $line =~ /^\s*-\w /) {
-            
-            if($tbody == 1) {
-                $str=$str."</p>";
-                $tbody=0;
-            }    
-            
-            my @v=split(/\t|\s{2,}/,$line);
-            
-            if($#v+1 > 0) {
-                $str=$str."<br /><b>". at v[0]."</b><br /><p>";
-                if($#v+1 > 1) {
-                    for(my $k=1; $k <= $#v; $k++) {
-                        $str=$str. at v[$k]." ";
-                    }
-                }        
-            }
-
-            $tbody=1;
-        
-        } else {
-            
-            if($line =~ /\S/) {
-                $str=$str.$line." ";
-            } elsif ($tbody == 1) {
-                $str=$str."</p>";
-                $tbody=0;
-            }
-        }  
-    } 
-    
-    close IN;
-    if($tbody == 1) {
-        $str=$str."</p>";
-    }    
-    
-    return $str;
-}    
-
-#--------------------------------------------------------
-# Extract the description of a given example
-#--------------------------------------------------------
-
-sub getDescription {
-    
-    my ($name) = @_;
-    
-    my $fPath=docPath($name);
-    
-    print "\tExtract desription from: ".$fPath."\n";
-     
-    my $str;
-    
-    local $/=undef;  
-    open (IN,"<$fPath") or return "";
-    $str=<IN>;
-    close IN;
-    
-    ($str) = ($str =~ /DESCRIPTION\s*([\S|\s]+)USAGE/);
-    $str =~ s/\n/ /g; 
-    
-    return $str;
-}  
-
-#--------------------------------------------------------
-# 
-#--------------------------------------------------------
-
-sub getExample {
-    
-    my ($name) = @_;
-    
-    my $fPath=examplePath($name);    
-    
-    unless($fPath) {
-        return "";
-    }   
-    
-    my $str;
-   
-    local $/=undef;  
-    open (IN,"<$fPath") or return "";
-    $str=<IN>;
-    close IN;
-    
-    my @v=split(/-#/,$str);
-    
-    $str="<h2>".$name." examples</h2>";
-    $str=$str."<ol>";
-    foreach my $block (@v) {
-        print "block=".$block."\n";
-        
-        #If there is text
-        if($block =~ /\S+/) {
-        
-            $block =~ s/\\n//g;
-            $block =~ s/\n>/\n> /g;
-            $block =~ s/&&/&&/g;
-            
-            my $blockMod;
-            my $prevLine;
-            my $inList=0;
-            foreach my $line (split(/\n/,$block)) {
-                    
-                if($line =~ /\\verbatim/) {
-                    $line =~ s/\\verbatim/<ac:structured-macro ac:name="code"><ac:plain-text-body><!\[CDATA\[/g;  
-                } elsif($line =~ /\\endverbatim/)  {
-                    $line =~ s/\\endverbatim/\]\]><\/ac:plain-text-body><\/ac:structured-macro>/g;                    
-                } elsif($line =~ /\\code/)  {    
-                    $line =~ s/\\code/<ac:structured-macro ac:name="code"><ac:plain-text-body><!\[CDATA\[/g;
-                } elsif($line =~ /\\endcode/)  {    
-                    $line =~ s/\\endcode/\]\]><\/ac:plain-text-body><\/ac:structured-macro>/g;
-                } elsif($line =~ /^\s*- /) {
-                    $line =~ s/^\s*- /<li>/;
-                    
-                    if($inList ==  1) {
-                        $line="</li>".$line;
-                    } else {
-                         $line="<ul>".$line;
-                    }     
-                         
-                    $inList=1;
-                }
-                
-                if($line =~ /^\s*\.\s*/ and $inList==1) {
-                        $line="</li></ul>";
-                        $inList=0;
-                }       
-                
-                $prevLine=$line;
-                
-                $blockMod=$blockMod.$line."\n";    
-            }        
-          
-            $str=$str."<li><p>".$blockMod."</p></li><br />";
-        }
-
-    }
-
-    $str=$str."</ol>";
-
-
-    return $str;
-}    
diff --git a/confluence/tools.par b/confluence/tools.par
deleted file mode 100644
index 9b48c38..0000000
--- a/confluence/tools.par
+++ /dev/null
@@ -1,37 +0,0 @@
-#examples
-
-GRIB (
-      grib_compare
-      grib_copy
-      grib_count desc
-      grib_dump 
-      grib_filter
-      grib_get
-      grib_get_data
-      grib_index_build
-      grib_ls
-      grib_set
-      grib_to_netcdf
-    )
-BUFR (
-      bufr_compare
-      bufr_copy
-      bufr_count desc
-      bufr_dump
-      bufr_filter
-      bufr_get
-      bufr_ls
-      bufr_set
-      )
-!GTS (           
-      gts_copy
-      gts_dump
-      gts_filter
-      gts_ls
-    )  
-      
-!Generic (
-      codes_count desc
-      codes_info desc
-      )
-
diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt
index efc5a31..f8027cf 100644
--- a/data/CMakeLists.txt
+++ b/data/CMakeLists.txt
@@ -1,22 +1,23 @@
 # data/CMakeLists.txt
 add_subdirectory(tigge)
 add_subdirectory(bufr)
+add_subdirectory(metar)
 add_subdirectory(gts)
 
 
 # Download all the binary GRIB data from website
-#
-FILE(READ "grib_data_files.txt" files_to_download)
-STRING(REGEX REPLACE "\n" ";" files_to_download "${files_to_download}")
+
+file(READ "grib_data_files.txt" files_to_download)
+string(REGEX REPLACE "\n" ";" files_to_download "${files_to_download}")
 if( HAVE_AEC )
-    LIST(APPEND files_to_download ccsds.grib2)
+    list(APPEND files_to_download ccsds.grib2)
 endif()
 
 
 # Download all data files doing md5 check on each
-ecbuild_get_test_multidata( TARGET get_gribs
-                            NAMES ${files_to_download}
-)
+ecbuild_get_test_multidata( TARGET eccodes_get_gribs
+                            NOCHECK
+                            NAMES ${files_to_download} )
 
 # Copy other files - e.g. reference data, text files etc from the source data dir
 LIST(APPEND other_files
diff --git a/data/Makefile b/data/Makefile
deleted file mode 100644
index b066ca1..0000000
--- a/data/Makefile
+++ /dev/null
@@ -1,497 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# data/Makefile.  Generated from Makefile.in by configure.
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/eccodes
-pkgincludedir = $(includedir)/eccodes
-pkglibdir = $(libdir)/eccodes
-pkglibexecdir = $(libexecdir)/eccodes
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = x86_64-suse-linux-gnu
-host_triplet = x86_64-suse-linux-gnu
-subdir = data
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_$(V))
-am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing aclocal-1.13
-AEC_DIR = 
-AMTAR = $${TAR-tar}
-AM_DEFAULT_VERBOSITY = 1
-AR = ar
-AUTOCONF = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoconf
-AUTOHEADER = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoheader
-AUTOMAKE = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing automake-1.13
-AWK = gawk
-CC = gcc
-CCDEPMODE = depmode=gcc3
-CCSDS_TEST = 
-CFLAGS = -g -O2
-CPP = gcc -E
-CPPFLAGS = 
-CYGPATH_W = echo
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DEVEL_RULES = dummy.am
-DLLTOOL = false
-DSYMUTIL = 
-DUMPBIN = 
-ECCODES_AGE = 0
-ECCODES_CURRENT = 1
-ECCODES_DEFINITION_PATH = ${datarootdir}/eccodes/definitions
-ECCODES_MAIN_VERSION = 0.10.0
-ECCODES_MAJOR_VERSION = 0
-ECCODES_MINOR_VERSION = 10
-ECCODES_PATCH_VERSION = 0
-ECCODES_REVISION = 0
-ECCODES_SAMPLES_PATH = ${datarootdir}/eccodes/samples
-ECCODES_VERSION_STR = 0.10.0
-ECHO_C = 
-ECHO_N = -n
-ECHO_T = 
-EGREP = /usr/bin/grep -E
-EMOS_LIB = 
-EXEEXT = 
-F77 = gfortran
-F90_CHECK = examples/F90
-F90_MODULE_FLAG = -I
-FC = gfortran
-FCFLAGS = -g -O2
-FFLAGS = -g -O2
-FGREP = /usr/bin/grep -F
-FORTRAN_MOD = fortran
-GREP = /usr/bin/grep
-GRIB_API_INC = /tmp/masn/git/grib_api/eccodes/src
-GRIB_API_LIB = /tmp/masn/git/grib_api/eccodes/src/grib_api.a
-GRIB_DEVEL = 0
-IFS_SAMPLES_DIR = ${datarootdir}/eccodes/ifs_samples
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-JASPER_DIR = system
-JPEG_TEST = jpeg.sh
-LD = /usr/x86_64-suse-linux/bin/ld -m elf_x86_64
-LDFLAGS = 
-LEX = flex
-LEXLIB = -lfl
-LEX_OUTPUT_ROOT = lex.yy
-LIBOBJS = 
-LIBS = -lm -ljasper 
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LIBTOOL_DEPS = config/ltmain.sh
-LIB_AEC = 
-LIB_JASPER = -ljasper
-LIB_OPENJPEG = 
-LIB_PNG = 
-LINUX_DISTRIBUTION_NAME = openSUSE 13.1 (x86_64)
-LINUX_DISTRIBUTION_VERSION = 
-LIPO = 
-LN_S = ln -s
-LTLIBOBJS = 
-MAKEINFO = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing makeinfo
-MANIFEST_TOOL = :
-MKDIR_P = /usr/bin/mkdir -p
-NETCDF_LDFLAGS = 
-NM = /usr/bin/nm -B
-NMEDIT = 
-NUMPY_INCLUDE = /usr/local/apps/python/2.7.8-01/lib/python2.7/site-packages/numpy/core/include
-OBJDUMP = objdump
-OBJEXT = o
-OPENJPEG_DIR = system
-OTOOL = 
-OTOOL64 = 
-PACKAGE = eccodes
-PACKAGE_BUGREPORT = Software.Support at ecmwf.int
-PACKAGE_NAME = eccodes
-PACKAGE_STRING = eccodes  
-PACKAGE_TARNAME = eccodes
-PACKAGE_URL = 
-PACKAGE_VERSION = 0.10.0
-PATH_SEPARATOR = :
-PERL = 
-PERLDIR = perl
-PERL_INSTALL_OPTIONS = LIB=NONE/perl
-PERL_MAKE_OPTIONS = 
-PYTHON = /usr/local/apps/python/2.7.8-01/bin/python
-PYTHON_CFLAGS = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7 -fno-strict-aliasing -O3 -fpic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
-PYTHON_CHECK = examples/python
-PYTHON_CONFIG = /usr/local/apps/python/2.7.8-01/bin/python2.7-config
-PYTHON_DATA_HANDLER = numpy
-PYTHON_EXEC_PREFIX = ${exec_prefix}
-PYTHON_INCLUDES = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7
-PYTHON_LDFLAGS = -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic
-PYTHON_LIBS = -lpthread -ldl -lutil -lm -lpython2.7
-PYTHON_PLATFORM = linux2
-PYTHON_PREFIX = ${prefix}
-PYTHON_VERSION = 2.7
-RANLIB = ranlib
-RM = rm -f
-RPM_CONFIGURE_ARGS =  '--enable-python' '--disable-shared' 'CC=gcc' 'F77=gfortran' 'FC=gfortran'
-RPM_HOST_CPU = x86_64
-RPM_HOST_OS = linux-gnu
-RPM_HOST_VENDOR = suse
-RPM_RELEASE = 1
-SED = /usr/bin/sed
-SET_MAKE = 
-SHELL = /bin/sh
-STRIP = strip
-VERSION = 0.10.0
-WARN_PEDANTIC = -pedantic -Wall
-WERROR = 
-YACC = bison -y
-YFLAGS = 
-abs_builddir = /tmp/masn/git/grib_api/eccodes/data
-abs_srcdir = /tmp/masn/git/grib_api/eccodes/data
-abs_top_builddir = /tmp/masn/git/grib_api/eccodes
-abs_top_srcdir = /tmp/masn/git/grib_api/eccodes
-ac_ct_AR = ar
-ac_ct_CC = gcc
-ac_ct_DUMPBIN = 
-ac_ct_F77 = 
-ac_ct_FC = 
-am__include = include
-am__leading_dot = .
-am__quote = 
-am__tar = $${TAR-tar} chof - "$$tardir"
-am__untar = $${TAR-tar} xf -
-bindir = ${exec_prefix}/bin
-build = x86_64-suse-linux-gnu
-build_alias = 
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = suse
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-host = x86_64-suse-linux-gnu
-host_alias = 
-host_cpu = x86_64
-host_os = linux-gnu
-host_vendor = suse
-htmldir = ${docdir}
-includedir = ${prefix}/include
-infodir = ${datarootdir}/info
-install_sh = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localedir = ${datarootdir}/locale
-localstatedir = ${prefix}/var
-mandir = ${datarootdir}/man
-mkdir_p = $(MKDIR_P)
-oldincludedir = /usr/include
-pdfdir = ${docdir}
-pkgpyexecdir = ${pyexecdir}/eccodes
-pkgpythondir = ${pythondir}/eccodes
-prefix = /usr/local
-program_transform_name = s,x,x,
-psdir = ${docdir}
-pyexecdir = ${exec_prefix}/lib/python2.7/site-packages
-pythondir = ${prefix}/lib/python2.7/site-packages
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-srcdir = .
-sysconfdir = ${prefix}/etc
-target_alias = 
-top_build_prefix = ../
-top_builddir = ..
-top_srcdir = ..
-EXTRA_DIST = CMakeLists.txt
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu data/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-local mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	clean-local cscopelist-am ctags-am distclean distclean-generic \
-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags-am uninstall uninstall-am
-
-clean-local:
-	@./download.sh -c .
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/data/bufr/CMakeLists.txt b/data/bufr/CMakeLists.txt
index 5c22513..7ec0fda 100644
--- a/data/bufr/CMakeLists.txt
+++ b/data/bufr/CMakeLists.txt
@@ -11,9 +11,11 @@ STRING(REGEX REPLACE "\n" ";" bufr_files_to_download "${bufr_files_to_download}"
 FILE(READ "bufr_ref_files.txt" bufr_refs_to_download)
 STRING(REGEX REPLACE "\n" ";" bufr_refs_to_download "${bufr_refs_to_download}")
 
+# Exceptional case: download bufr files which have to be treated specially
+LIST(APPEND bufr_refs_to_download "vos308014_v3_26.bufr")  # See test ecc-197
 
 ecbuild_get_test_multidata(
-     TARGET get_bufrs
+     TARGET eccodes_get_bufrs
      NOCHECK
      NAMES ${bufr_files_to_download} ${bufr_refs_to_download}
 )
diff --git a/data/bufr/bufr_data_files.txt b/data/bufr/bufr_data_files.txt
index 6f79729..1d6c61e 100644
--- a/data/bufr/bufr_data_files.txt
+++ b/data/bufr/bufr_data_files.txt
@@ -35,6 +35,7 @@ b005_87.bufr
 b005_89.bufr
 b006_96.bufr
 b007_31.bufr
+bad.bufr
 bssh_170.bufr
 bssh_176.bufr
 bssh_178.bufr
@@ -131,3 +132,9 @@ temp_106.bufr
 tmr7_129.bufr
 tros_31.bufr
 wavb_134.bufr
+207003.bufr
+new.bufr
+tropical_cyclone.bufr
+uegabe.bufr
+PraticaTemp.bufr
+profiler_european.bufr
diff --git a/data/bufr/bufr_ref_files.txt b/data/bufr/bufr_ref_files.txt
index a2bdb17..b3d747b 100644
--- a/data/bufr/bufr_ref_files.txt
+++ b/data/bufr/bufr_ref_files.txt
@@ -269,3 +269,119 @@ synop_multi_subset.bufr.desc.ref
 aaen_55.bufr.ls.ref
 syno_multi.bufr.header.ref
 syno_multi.bufr
+bad.bufr.json.ref
+207003.bufr.json.ref
+new_207003.bufr.ref
+new_aaen_55.bufr.ref
+new_aben_55.bufr.ref
+new_ahws_139.bufr.ref
+new_airc_142.bufr.ref
+new_airc_144.bufr.ref
+new_airs_57.bufr.ref
+new_alws_139.bufr.ref
+new_amda_144.bufr.ref
+new_amsa_55.bufr.ref
+new_amsb_55.bufr.ref
+new_amse_55.bufr.ref
+new_amsu_55.bufr.ref
+new_amv2_87.bufr.ref
+new_amv3_87.bufr.ref
+new_asbh_139.bufr.ref
+new_asbl_139.bufr.ref
+new_asca_139.bufr.ref
+new_asch_139.bufr.ref
+new_ascs_139.bufr.ref
+new_aseh_139.bufr.ref
+new_asel_139.bufr.ref
+new_ashs_139.bufr.ref
+new_atap_55.bufr.ref
+new_ateu_155.bufr.ref
+new_atms_201.bufr.ref
+new_atov_55.bufr.ref
+new_avhm_87.bufr.ref
+new_avhn_87.bufr.ref
+new_avhr_58.bufr.ref
+new_b002_95.bufr.ref
+new_b002_96.bufr.ref
+new_b003_56.bufr.ref
+new_b004_145.bufr.ref
+new_b005_87.bufr.ref
+new_b006_96.bufr.ref
+new_b007_31.bufr.ref
+new_bssh_170.bufr.ref
+new_bssh_176.bufr.ref
+new_bssh_178.bufr.ref
+new_bssh_180.bufr.ref
+new_btem_109.bufr.ref
+new_buoy_27.bufr.ref
+new_cmwi_87.bufr.ref
+new_cmwn_87.bufr.ref
+new_cnow_28.bufr.ref
+new_cori_156.bufr.ref
+new_crit_202.bufr.ref
+new_emsg_87.bufr.ref
+new_euwv_87.bufr.ref
+new_fy3a_154.bufr.ref
+new_fy3b_154.bufr.ref
+new_go15_87.bufr.ref
+new_goee_87.bufr.ref
+new_goes_87.bufr.ref
+new_grst_26.bufr.ref
+new_gst4_26.bufr.ref
+new_hirb_55.bufr.ref
+new_hirs_55.bufr.ref
+new_ias1_240.bufr.ref
+new_iasi_241.bufr.ref
+new_itwt_233.bufr.ref
+new_j2eo_216.bufr.ref
+new_j2nb_216.bufr.ref
+new_jaso_214.bufr.ref
+new_meta_140.bufr.ref
+new_mhen_55.bufr.ref
+new_mhsa_55.bufr.ref
+new_mhsb_55.bufr.ref
+new_mhse_55.bufr.ref
+new_modi_87.bufr.ref
+new_modw_87.bufr.ref
+new_monw_87.bufr.ref
+new_mytemp.bufr.ref
+new_new.bufr.ref
+new_ocea_131.bufr.ref
+new_ocea_132.bufr.ref
+new_ocea_133.bufr.ref
+new_ocea_21.bufr.ref
+new_pgps_110.bufr.ref
+new_pilo_91.bufr.ref
+new_s4kn_165.bufr.ref
+new_ship_11.bufr.ref
+new_ship_12.bufr.ref
+new_ship_13.bufr.ref
+new_ship_14.bufr.ref
+new_ship_19.bufr.ref
+new_ship_9.bufr.ref
+new_smin_49.bufr.ref
+new_smis_49.bufr.ref
+new_smiu_49.bufr.ref
+new_smos_203.bufr.ref
+new_sn4k_165.bufr.ref
+new_soil_7.bufr.ref
+new_ssbt_127.bufr.ref
+new_stuk_7.bufr.ref
+new_syno_1.bufr.ref
+new_syno_2.bufr.ref
+new_syno_3.bufr.ref
+new_syno_4.bufr.ref
+new_syno_multi.bufr.ref
+new_synop_multi_subset.bufr.ref
+new_temp_101.bufr.ref
+new_temp_102.bufr.ref
+new_temp_106.bufr.ref
+new_tmr7_129.bufr.ref
+new_tros_31.bufr.ref
+new_wavb_134.bufr.ref
+set_unexpandedDescriptors.filter
+311001.bufr.ref
+uegabe.bufr.num.ref
+syno.bufr.out.ref
+airep.bufr.out.ref
+new_replication.bufr.ref
diff --git a/data/download.sh b/data/download.sh
index 902ddad..8ffafb5 100755
--- a/data/download.sh
+++ b/data/download.sh
@@ -3,9 +3,10 @@
 usage ()
 {
    prog=`basename $0`
-   echo "Usage: $prog [-v] data_dir"
+   echo "Usage: $prog [-v] [-c] data_dir"
    echo
    echo "-v  verbose"
+   echo "-c  clean downloaded files"
    echo "-h  prints this help message"
    echo
 }
@@ -39,9 +40,10 @@ fi
 grib_files=`cat $DATA_DIR/grib_data_files.txt`
 tigge_files=`cat $DATA_DIR/tigge/tigge_data_files.txt | sed -e 's:^:tigge/:'`
 bufr_files=`cat $DATA_DIR/bufr/bufr_data_files.txt $DATA_DIR/bufr/bufr_ref_files.txt | sed -e 's:^:bufr/:'`
+metar_files=`cat $DATA_DIR/metar/metar_data_files.txt $DATA_DIR/metar/metar_ref_files.txt | sed -e 's:^:metar/:'`
 gts_files=`cat $DATA_DIR/gts/gts_data_files.txt $DATA_DIR/gts/gts_ref_files.txt | sed -e 's:^:gts/:'`
 
-files="$grib_files $tigge_files $bufr_files $gts_files"
+files="$grib_files $tigge_files $bufr_files $metar_files $gts_files"
 
 if [ $CLEAN -eq 1 ]; then
    for f in $files; do
@@ -61,21 +63,23 @@ fi
 
 [ -d "${DATA_DIR}/tigge" ] || mkdir "${DATA_DIR}/tigge"
 
+TIMEOUT_SECS=15
+
 # Decide what tool to use to download data
 DNLD_PROG=""
 if command -v wget >/dev/null 2>&1; then
    PROG=wget
-   OPTIONS="--tries=1 --timeout=3 -nv -q -O"
+   OPTIONS="--tries=1 --timeout=$TIMEOUT_SECS -nv -q -O"
    if [ $VERBOSE -eq 1 ]; then
-      OPTIONS="--tries=1 --timeout=3 -nv -O"
+      OPTIONS="--tries=1 --timeout=$TIMEOUT_SECS -nv -O"
    fi
    DNLD_PROG="$PROG $OPTIONS"
 fi
 if command -v curl >/dev/null 2>&1; then
    PROG=curl
-   OPTIONS="--silent --show-error --fail --output"
+   OPTIONS="--connect-timeout $TIMEOUT_SECS --silent --show-error --fail --output"
    if [ $VERBOSE -eq 1 ]; then
-      OPTIONS="--show-error --fail --output"
+      OPTIONS="--connect-timeout $TIMEOUT_SECS --show-error --fail --output"
    fi
    DNLD_PROG="$PROG $OPTIONS"
 fi
@@ -86,13 +90,18 @@ fi
 
 download_URL="http://download.ecmwf.org"
 cd ${DATA_DIR}
-echo "Downloading data files for testing..."
+echo "Checking data files for testing..."
+downloading=0
 for f in $files; do
    # If we haven't already got the file, download it
    if [ ! -f "$f" ]; then
       if [ $VERBOSE -eq 1 ]; then
          echo "$DNLD_PROG $f ${download_URL}/test-data/grib_api/data/$f"
       fi
+      if [ $downloading = 0 ]; then
+        echo "Downloading..."
+        downloading=1
+      fi
       $DNLD_PROG $f ${download_URL}/test-data/grib_api/data/$f
       if [ $? -ne 0 ]; then
           echo
@@ -109,4 +118,4 @@ done
 
 # Add a file to indicate we've done the download
 touch .downloaded
-echo "Downloads completed."
+echo "Completed."
diff --git a/data/grib_data_files.txt b/data/grib_data_files.txt
index f8cdb5a..2d356cc 100644
--- a/data/grib_data_files.txt
+++ b/data/grib_data_files.txt
@@ -21,6 +21,7 @@ gts.grib
 index.grib
 grid_ieee.grib
 jpeg.grib2
+latlon.grib
 lfpw.grib1
 missing_field.grib1
 missing.grib2
@@ -83,3 +84,4 @@ timeRangeIndicator_10.grib
 timeRangeIndicator_5.grib
 tp_ecmwf.grib
 v.grib2
+msl.octa.glob.grib1
diff --git a/data/gts/CMakeLists.txt b/data/gts/CMakeLists.txt
index c086fb0..01e9ca5 100644
--- a/data/gts/CMakeLists.txt
+++ b/data/gts/CMakeLists.txt
@@ -10,7 +10,7 @@ STRING(REGEX REPLACE "\n" ";" gts_refs_to_download "${gts_refs_to_download}")
 
 
 ecbuild_get_test_multidata(
-     TARGET get_gts
+     TARGET eccodes_get_gts
      NOCHECK
      NAMES ${gts_files_to_download} ${gts_refs_to_download}
 )
diff --git a/data/julian.out.good b/data/julian.out.good
index 700d28e..c132128 100644
--- a/data/julian.out.good
+++ b/data/julian.out.good
@@ -1,6 +1,11 @@
+Test0...
+1801 1 30 18:26:24 -> 2378891.268333
+1801 1 30 18:26:24 -> 2378891.268333
+Test1...
 1957 10 4 19:26:24 -> 2436116.310000
 1957 10 4 19:26:24 -> 2436116.310000
 
+Test2...
 + 2000 1 1 12:0:0 -> 2451545.000000
 - 2000 1 1 12:0:0 -> 2451545.000000
 + 20000101 -> 2451545
@@ -56,3 +61,5 @@
 + -47120001 -> 0
 - -47120001 -> 6
 
+Test3...
+All OK
diff --git a/data/metar/CMakeLists.txt b/data/metar/CMakeLists.txt
new file mode 100644
index 0000000..cf06d0b
--- /dev/null
+++ b/data/metar/CMakeLists.txt
@@ -0,0 +1,29 @@
+# data/metar/CMakeLists.txt
+# Download all the METAR data and reference files from website
+#
+
+FILE(READ "metar_data_files.txt" metar_files_to_download)
+# Convert file contents into a CMake list (where each element in the list
+# is one line of the file)
+STRING(REGEX REPLACE "\n" ";" metar_files_to_download "${metar_files_to_download}")
+
+
+FILE(READ "metar_ref_files.txt" metar_refs_to_download)
+STRING(REGEX REPLACE "\n" ";" metar_refs_to_download "${metar_refs_to_download}")
+
+
+ecbuild_get_test_multidata(
+     TARGET eccodes_get_metars
+     NOCHECK
+     NAMES ${metar_files_to_download} ${metar_refs_to_download}
+)
+
+# Copy other files - e.g. text files etc from the source data/metar dir
+LIST(APPEND other_files
+    metar_data_files.txt
+    metar_ref_files.txt
+)
+
+foreach( file ${other_files} )
+   execute_process( COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${file} ${CMAKE_CURRENT_BINARY_DIR} )
+endforeach()
diff --git a/data/metar/metar_data_files.txt b/data/metar/metar_data_files.txt
new file mode 100644
index 0000000..eede5ea
--- /dev/null
+++ b/data/metar/metar_data_files.txt
@@ -0,0 +1 @@
+metar.txt
diff --git a/data/metar/metar_ref_files.txt b/data/metar/metar_ref_files.txt
new file mode 100644
index 0000000..8ea0cff
--- /dev/null
+++ b/data/metar/metar_ref_files.txt
@@ -0,0 +1,2 @@
+metar.txt.dump.ref
+metar.txt.ls.ref
diff --git a/data/scan_x_rotated_ll_5_4_good.dump b/data/scan_x_rotated_ll_5_4_good.dump
index 66efea3..77a4e5d 100644
--- a/data/scan_x_rotated_ll_5_4_good.dump
+++ b/data/scan_x_rotated_ll_5_4_good.dump
@@ -1,21 +1,21 @@
 Latitude, Longitude, Value
-   20.000   24.000 5
-   20.000   23.000 4
-   20.000   22.000 3
-   20.000   21.000 2
-   20.000   20.000 1
-   19.000   24.000 10
-   19.000   23.000 9
-   19.000   22.000 8
-   19.000   21.000 7
-   19.000   20.000 6
-   18.000   24.000 15
-   18.000   23.000 14
-   18.000   22.000 13
-   18.000   21.000 12
-   18.000   20.000 11
-   17.000   24.000 20
-   17.000   23.000 19
-   17.000   22.000 18
-   17.000   21.000 17
-   17.000   20.000 16
+   59.143  131.824 5
+   59.882  132.969 4
+   60.606  134.175 3
+   61.316  135.444 2
+   62.009  136.781 1
+   59.743  130.250 10
+   60.500  131.388 9
+   61.243  132.588 8
+   61.972  133.855 7
+   62.685  135.193 6
+   60.323  128.619 15
+   61.099  129.746 14
+   61.861  130.937 13
+   62.609  132.197 12
+   63.342  133.531 11
+   60.883  126.931 20
+   61.677  128.042 19
+   62.458  129.219 18
+   63.226  130.468 17
+   63.979  131.793 16
diff --git a/data/scan_x_rotated_ll_5_7_good.dump b/data/scan_x_rotated_ll_5_7_good.dump
index d34e8db..54985ef 100644
--- a/data/scan_x_rotated_ll_5_7_good.dump
+++ b/data/scan_x_rotated_ll_5_7_good.dump
@@ -1,36 +1,36 @@
 Latitude, Longitude, Value
-   20.000   24.000 5
-   20.000   23.000 4
-   20.000   22.000 3
-   20.000   21.000 2
-   20.000   20.000 1
-   19.000   24.000 10
-   19.000   23.000 9
-   19.000   22.000 8
-   19.000   21.000 7
-   19.000   20.000 6
-   18.000   24.000 15
-   18.000   23.000 14
-   18.000   22.000 13
-   18.000   21.000 12
-   18.000   20.000 11
-   17.000   24.000 20
-   17.000   23.000 19
-   17.000   22.000 18
-   17.000   21.000 17
-   17.000   20.000 16
-   16.000   24.000 25
-   16.000   23.000 24
-   16.000   22.000 23
-   16.000   21.000 22
-   16.000   20.000 21
-   15.000   24.000 30
-   15.000   23.000 29
-   15.000   22.000 28
-   15.000   21.000 27
-   15.000   20.000 26
-   14.000   24.000 35
-   14.000   23.000 34
-   14.000   22.000 33
-   14.000   21.000 32
-   14.000   20.000 31
+   59.143  131.824 5
+   59.882  132.969 4
+   60.606  134.175 3
+   61.316  135.444 2
+   62.009  136.781 1
+   59.743  130.250 10
+   60.500  131.388 9
+   61.243  132.588 8
+   61.972  133.855 7
+   62.685  135.193 6
+   60.323  128.619 15
+   61.099  129.746 14
+   61.861  130.937 13
+   62.609  132.197 12
+   63.342  133.531 11
+   60.883  126.931 20
+   61.677  128.042 19
+   62.458  129.219 18
+   63.226  130.468 17
+   63.979  131.793 16
+   61.421  125.183 25
+   62.233  126.274 24
+   63.033  127.433 23
+   63.820  128.665 22
+   64.594  129.976 21
+   61.935  123.376 30
+   62.765  124.441 29
+   63.584  125.575 28
+   64.392  126.785 27
+   65.186  128.076 26
+   62.425  121.508 35
+   63.273  122.542 34
+   64.111  123.647 33
+   64.938  124.828 32
+   65.752  126.092 31
diff --git a/data/scan_x_rotated_ll_8_4_good.dump b/data/scan_x_rotated_ll_8_4_good.dump
index bff032c..f7ab7ec 100644
--- a/data/scan_x_rotated_ll_8_4_good.dump
+++ b/data/scan_x_rotated_ll_8_4_good.dump
@@ -1,33 +1,33 @@
 Latitude, Longitude, Value
-   20.000   27.000 8
-   20.000   26.000 7
-   20.000   25.000 6
-   20.000   24.000 5
-   20.000   23.000 4
-   20.000   22.000 3
-   20.000   21.000 2
-   20.000   20.000 1
-   19.000   27.000 16
-   19.000   26.000 15
-   19.000   25.000 14
-   19.000   24.000 13
-   19.000   23.000 12
-   19.000   22.000 11
-   19.000   21.000 10
-   19.000   20.000 9
-   18.000   27.000 24
-   18.000   26.000 23
-   18.000   25.000 22
-   18.000   24.000 21
-   18.000   23.000 20
-   18.000   22.000 19
-   18.000   21.000 18
-   18.000   20.000 17
-   17.000   27.000 32
-   17.000   26.000 31
-   17.000   25.000 30
-   17.000   24.000 29
-   17.000   23.000 28
-   17.000   22.000 27
-   17.000   21.000 26
-   17.000   20.000 25
+   56.853  128.720 8
+   57.628  129.702 7
+   58.392  130.736 6
+   59.143  131.824 5
+   59.882  132.969 4
+   60.606  134.175 3
+   61.316  135.444 2
+   62.009  136.781 1
+   57.401  127.178 16
+   58.193  128.149 15
+   58.974  129.171 14
+   59.743  130.250 13
+   60.500  131.388 12
+   61.243  132.588 11
+   61.972  133.855 10
+   62.685  135.193 9
+   57.930  125.591 24
+   58.738  126.546 23
+   59.536  127.554 22
+   60.323  128.619 21
+   61.099  129.746 20
+   61.861  130.937 19
+   62.609  132.197 18
+   63.342  133.531 17
+   58.438  123.957 32
+   59.263  124.893 31
+   60.078  125.883 30
+   60.883  126.931 29
+   61.677  128.042 28
+   62.458  129.219 27
+   63.226  130.468 26
+   63.979  131.793 25
diff --git a/data/scan_x_rotated_ll_8_7_good.dump b/data/scan_x_rotated_ll_8_7_good.dump
index c7ebdee..661b6c9 100644
--- a/data/scan_x_rotated_ll_8_7_good.dump
+++ b/data/scan_x_rotated_ll_8_7_good.dump
@@ -1,57 +1,57 @@
 Latitude, Longitude, Value
-   20.000   27.000 8
-   20.000   26.000 7
-   20.000   25.000 6
-   20.000   24.000 5
-   20.000   23.000 4
-   20.000   22.000 3
-   20.000   21.000 2
-   20.000   20.000 1
-   19.000   27.000 16
-   19.000   26.000 15
-   19.000   25.000 14
-   19.000   24.000 13
-   19.000   23.000 12
-   19.000   22.000 11
-   19.000   21.000 10
-   19.000   20.000 9
-   18.000   27.000 24
-   18.000   26.000 23
-   18.000   25.000 22
-   18.000   24.000 21
-   18.000   23.000 20
-   18.000   22.000 19
-   18.000   21.000 18
-   18.000   20.000 17
-   17.000   27.000 32
-   17.000   26.000 31
-   17.000   25.000 30
-   17.000   24.000 29
-   17.000   23.000 28
-   17.000   22.000 27
-   17.000   21.000 26
-   17.000   20.000 25
-   16.000   27.000 40
-   16.000   26.000 39
-   16.000   25.000 38
-   16.000   24.000 37
-   16.000   23.000 36
-   16.000   22.000 35
-   16.000   21.000 34
-   16.000   20.000 33
-   15.000   27.000 48
-   15.000   26.000 47
-   15.000   25.000 46
-   15.000   24.000 45
-   15.000   23.000 44
-   15.000   22.000 43
-   15.000   21.000 42
-   15.000   20.000 41
-   14.000   27.000 56
-   14.000   26.000 55
-   14.000   25.000 54
-   14.000   24.000 53
-   14.000   23.000 52
-   14.000   22.000 51
-   14.000   21.000 50
-   14.000   20.000 49
+   56.853  128.720 8
+   57.628  129.702 7
+   58.392  130.736 6
+   59.143  131.824 5
+   59.882  132.969 4
+   60.606  134.175 3
+   61.316  135.444 2
+   62.009  136.781 1
+   57.401  127.178 16
+   58.193  128.149 15
+   58.974  129.171 14
+   59.743  130.250 13
+   60.500  131.388 12
+   61.243  132.588 11
+   61.972  133.855 10
+   62.685  135.193 9
+   57.930  125.591 24
+   58.738  126.546 23
+   59.536  127.554 22
+   60.323  128.619 21
+   61.099  129.746 20
+   61.861  130.937 19
+   62.609  132.197 18
+   63.342  133.531 17
+   58.438  123.957 32
+   59.263  124.893 31
+   60.078  125.883 30
+   60.883  126.931 29
+   61.677  128.042 28
+   62.458  129.219 27
+   63.226  130.468 26
+   63.979  131.793 25
+   58.925  122.277 40
+   59.766  123.189 39
+   60.598  124.157 38
+   61.421  125.183 37
+   62.233  126.274 36
+   63.033  127.433 35
+   63.820  128.665 34
+   64.594  129.976 33
+   59.389  120.549 48
+   60.246  121.435 47
+   61.095  122.376 46
+   61.935  123.376 45
+   62.765  124.441 44
+   63.584  125.575 43
+   64.392  126.785 42
+   65.186  128.076 41
+   59.830  118.775 56
+   60.703  119.629 55
+   61.568  120.539 54
+   62.425  121.508 53
+   63.273  122.542 52
+   64.111  123.647 51
+   64.938  124.828 50
+   65.752  126.092 49
diff --git a/data/scan_y_rotated_ll_5_4_good.dump b/data/scan_y_rotated_ll_5_4_good.dump
index dcccfb8..a1dd220 100644
--- a/data/scan_y_rotated_ll_5_4_good.dump
+++ b/data/scan_y_rotated_ll_5_4_good.dump
@@ -1,21 +1,21 @@
 Latitude, Longitude, Value
-   17.000   20.000 16
-   17.000   21.000 17
-   17.000   22.000 18
-   17.000   23.000 19
-   17.000   24.000 20
-   18.000   20.000 11
-   18.000   21.000 12
-   18.000   22.000 13
-   18.000   23.000 14
-   18.000   24.000 15
-   19.000   20.000 6
-   19.000   21.000 7
-   19.000   22.000 8
-   19.000   23.000 9
-   19.000   24.000 10
-   20.000   20.000 1
-   20.000   21.000 2
-   20.000   22.000 3
-   20.000   23.000 4
-   20.000   24.000 5
+   63.979  131.793 16
+   63.226  130.468 17
+   62.458  129.219 18
+   61.677  128.042 19
+   60.883  126.931 20
+   63.342  133.531 11
+   62.609  132.197 12
+   61.861  130.937 13
+   61.099  129.746 14
+   60.323  128.619 15
+   62.685  135.193 6
+   61.972  133.855 7
+   61.243  132.588 8
+   60.500  131.388 9
+   59.743  130.250 10
+   62.009  136.781 1
+   61.316  135.444 2
+   60.606  134.175 3
+   59.882  132.969 4
+   59.143  131.824 5
diff --git a/data/scan_y_rotated_ll_5_7_good.dump b/data/scan_y_rotated_ll_5_7_good.dump
index 8d5be97..7c547d7 100644
--- a/data/scan_y_rotated_ll_5_7_good.dump
+++ b/data/scan_y_rotated_ll_5_7_good.dump
@@ -1,36 +1,36 @@
 Latitude, Longitude, Value
-   14.000   20.000 31
-   14.000   21.000 32
-   14.000   22.000 33
-   14.000   23.000 34
-   14.000   24.000 35
-   15.000   20.000 26
-   15.000   21.000 27
-   15.000   22.000 28
-   15.000   23.000 29
-   15.000   24.000 30
-   16.000   20.000 21
-   16.000   21.000 22
-   16.000   22.000 23
-   16.000   23.000 24
-   16.000   24.000 25
-   17.000   20.000 16
-   17.000   21.000 17
-   17.000   22.000 18
-   17.000   23.000 19
-   17.000   24.000 20
-   18.000   20.000 11
-   18.000   21.000 12
-   18.000   22.000 13
-   18.000   23.000 14
-   18.000   24.000 15
-   19.000   20.000 6
-   19.000   21.000 7
-   19.000   22.000 8
-   19.000   23.000 9
-   19.000   24.000 10
-   20.000   20.000 1
-   20.000   21.000 2
-   20.000   22.000 3
-   20.000   23.000 4
-   20.000   24.000 5
+   65.752  126.092 31
+   64.938  124.828 32
+   64.111  123.647 33
+   63.273  122.542 34
+   62.425  121.508 35
+   65.186  128.076 26
+   64.392  126.785 27
+   63.584  125.575 28
+   62.765  124.441 29
+   61.935  123.376 30
+   64.594  129.976 21
+   63.820  128.665 22
+   63.033  127.433 23
+   62.233  126.274 24
+   61.421  125.183 25
+   63.979  131.793 16
+   63.226  130.468 17
+   62.458  129.219 18
+   61.677  128.042 19
+   60.883  126.931 20
+   63.342  133.531 11
+   62.609  132.197 12
+   61.861  130.937 13
+   61.099  129.746 14
+   60.323  128.619 15
+   62.685  135.193 6
+   61.972  133.855 7
+   61.243  132.588 8
+   60.500  131.388 9
+   59.743  130.250 10
+   62.009  136.781 1
+   61.316  135.444 2
+   60.606  134.175 3
+   59.882  132.969 4
+   59.143  131.824 5
diff --git a/data/scan_y_rotated_ll_8_4_good.dump b/data/scan_y_rotated_ll_8_4_good.dump
index 7b2ca02..8627db0 100644
--- a/data/scan_y_rotated_ll_8_4_good.dump
+++ b/data/scan_y_rotated_ll_8_4_good.dump
@@ -1,33 +1,33 @@
 Latitude, Longitude, Value
-   17.000   20.000 25
-   17.000   21.000 26
-   17.000   22.000 27
-   17.000   23.000 28
-   17.000   24.000 29
-   17.000   25.000 30
-   17.000   26.000 31
-   17.000   27.000 32
-   18.000   20.000 17
-   18.000   21.000 18
-   18.000   22.000 19
-   18.000   23.000 20
-   18.000   24.000 21
-   18.000   25.000 22
-   18.000   26.000 23
-   18.000   27.000 24
-   19.000   20.000 9
-   19.000   21.000 10
-   19.000   22.000 11
-   19.000   23.000 12
-   19.000   24.000 13
-   19.000   25.000 14
-   19.000   26.000 15
-   19.000   27.000 16
-   20.000   20.000 1
-   20.000   21.000 2
-   20.000   22.000 3
-   20.000   23.000 4
-   20.000   24.000 5
-   20.000   25.000 6
-   20.000   26.000 7
-   20.000   27.000 8
+   63.979  131.793 25
+   63.226  130.468 26
+   62.458  129.219 27
+   61.677  128.042 28
+   60.883  126.931 29
+   60.078  125.883 30
+   59.263  124.893 31
+   58.438  123.957 32
+   63.342  133.531 17
+   62.609  132.197 18
+   61.861  130.937 19
+   61.099  129.746 20
+   60.323  128.619 21
+   59.536  127.554 22
+   58.738  126.546 23
+   57.930  125.591 24
+   62.685  135.193 9
+   61.972  133.855 10
+   61.243  132.588 11
+   60.500  131.388 12
+   59.743  130.250 13
+   58.974  129.171 14
+   58.193  128.149 15
+   57.401  127.178 16
+   62.009  136.781 1
+   61.316  135.444 2
+   60.606  134.175 3
+   59.882  132.969 4
+   59.143  131.824 5
+   58.392  130.736 6
+   57.628  129.702 7
+   56.853  128.720 8
diff --git a/data/scan_y_rotated_ll_8_7_good.dump b/data/scan_y_rotated_ll_8_7_good.dump
index e225cd9..cf6cc94 100644
--- a/data/scan_y_rotated_ll_8_7_good.dump
+++ b/data/scan_y_rotated_ll_8_7_good.dump
@@ -1,57 +1,57 @@
 Latitude, Longitude, Value
-   14.000   20.000 49
-   14.000   21.000 50
-   14.000   22.000 51
-   14.000   23.000 52
-   14.000   24.000 53
-   14.000   25.000 54
-   14.000   26.000 55
-   14.000   27.000 56
-   15.000   20.000 41
-   15.000   21.000 42
-   15.000   22.000 43
-   15.000   23.000 44
-   15.000   24.000 45
-   15.000   25.000 46
-   15.000   26.000 47
-   15.000   27.000 48
-   16.000   20.000 33
-   16.000   21.000 34
-   16.000   22.000 35
-   16.000   23.000 36
-   16.000   24.000 37
-   16.000   25.000 38
-   16.000   26.000 39
-   16.000   27.000 40
-   17.000   20.000 25
-   17.000   21.000 26
-   17.000   22.000 27
-   17.000   23.000 28
-   17.000   24.000 29
-   17.000   25.000 30
-   17.000   26.000 31
-   17.000   27.000 32
-   18.000   20.000 17
-   18.000   21.000 18
-   18.000   22.000 19
-   18.000   23.000 20
-   18.000   24.000 21
-   18.000   25.000 22
-   18.000   26.000 23
-   18.000   27.000 24
-   19.000   20.000 9
-   19.000   21.000 10
-   19.000   22.000 11
-   19.000   23.000 12
-   19.000   24.000 13
-   19.000   25.000 14
-   19.000   26.000 15
-   19.000   27.000 16
-   20.000   20.000 1
-   20.000   21.000 2
-   20.000   22.000 3
-   20.000   23.000 4
-   20.000   24.000 5
-   20.000   25.000 6
-   20.000   26.000 7
-   20.000   27.000 8
+   65.752  126.092 49
+   64.938  124.828 50
+   64.111  123.647 51
+   63.273  122.542 52
+   62.425  121.508 53
+   61.568  120.539 54
+   60.703  119.629 55
+   59.830  118.775 56
+   65.186  128.076 41
+   64.392  126.785 42
+   63.584  125.575 43
+   62.765  124.441 44
+   61.935  123.376 45
+   61.095  122.376 46
+   60.246  121.435 47
+   59.389  120.549 48
+   64.594  129.976 33
+   63.820  128.665 34
+   63.033  127.433 35
+   62.233  126.274 36
+   61.421  125.183 37
+   60.598  124.157 38
+   59.766  123.189 39
+   58.925  122.277 40
+   63.979  131.793 25
+   63.226  130.468 26
+   62.458  129.219 27
+   61.677  128.042 28
+   60.883  126.931 29
+   60.078  125.883 30
+   59.263  124.893 31
+   58.438  123.957 32
+   63.342  133.531 17
+   62.609  132.197 18
+   61.861  130.937 19
+   61.099  129.746 20
+   60.323  128.619 21
+   59.536  127.554 22
+   58.738  126.546 23
+   57.930  125.591 24
+   62.685  135.193 9
+   61.972  133.855 10
+   61.243  132.588 11
+   60.500  131.388 12
+   59.743  130.250 13
+   58.974  129.171 14
+   58.193  128.149 15
+   57.401  127.178 16
+   62.009  136.781 1
+   61.316  135.444 2
+   60.606  134.175 3
+   59.882  132.969 4
+   59.143  131.824 5
+   58.392  130.736 6
+   57.628  129.702 7
+   56.853  128.720 8
diff --git a/data/tigge/CMakeLists.txt b/data/tigge/CMakeLists.txt
index c93b9db..6193594 100644
--- a/data/tigge/CMakeLists.txt
+++ b/data/tigge/CMakeLists.txt
@@ -1,10 +1,10 @@
 # data/tigge/CMakeLists.txt
 # Download all the TIGGE grib data from website
-#
-FILE(READ "tigge_data_files.txt" tigge_files_to_download)
-STRING(REGEX REPLACE "\n" ";" tigge_files_to_download "${tigge_files_to_download}")
+
+file(READ "tigge_data_files.txt" tigge_files_to_download)
+string(REGEX REPLACE "\n" ";" tigge_files_to_download "${tigge_files_to_download}")
 
 # Download all data files doing md5 check on each
-ecbuild_get_test_multidata( TARGET get_tigge_gribs
-                            NAMES ${tigge_files_to_download}
-)
+ecbuild_get_test_multidata( TARGET eccodes_get_tigge_gribs
+                            NOCHECK
+                            NAMES ${tigge_files_to_download} )
diff --git a/definitions/CMakeLists.txt b/definitions/CMakeLists.txt
index 3f8e07b..bbd1a11 100644
--- a/definitions/CMakeLists.txt
+++ b/definitions/CMakeLists.txt
@@ -1,14 +1,15 @@
 file( GLOB definition_files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.def" )
-file( GLOB table_files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.table" )
+file( GLOB table_files      RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.table" )
+file( GLOB text_files       RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.txt" )
 
-install( FILES ${definition_files} ${table_files}  
+install( FILES ${definition_files} ${table_files} ${text_files}
          DESTINATION share/${PROJECT_NAME}/definitions
          PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ )
 
 install( FILES installDefinitions.sh
          DESTINATION share/${PROJECT_NAME}/definitions)
 
-install(  DIRECTORY budg bufr cdf common grib1 grib2 gts mars tide hdf5 wrap
+install(  DIRECTORY budg bufr cdf common grib1 grib2 gts mars metar tide hdf5 wrap
           DESTINATION share/${PROJECT_NAME}/definitions
           FILES_MATCHING 
           PATTERN "*.def"
@@ -18,14 +19,22 @@ install(  DIRECTORY budg bufr cdf common grib1 grib2 gts mars tide hdf5 wrap
           PATTERN "4.2.192.*.table" EXCLUDE
           PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ )
 
-# copy the definitions to the build directory
-
-file(    COPY ${definition_files} ${table_files}
-         DESTINATION ${CMAKE_BINARY_DIR}/share/${PROJECT_NAME}/definitions )
+# link to the definitions. See GRIB-786
+file( MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/share/${PROJECT_NAME} )
+if( NOT EXISTS "${CMAKE_BINARY_DIR}/share/${PROJECT_NAME}/definitions" )
+  execute_process( COMMAND "${CMAKE_COMMAND}" "-E" "create_symlink"
+    "${CMAKE_CURRENT_SOURCE_DIR}"
+    "${CMAKE_BINARY_DIR}/share/${PROJECT_NAME}/definitions" )
+endif()
 
-file(     COPY budg bufr cdf common grib1 grib2 gts mars metar taf tide hdf5 wrap
-          DESTINATION ${CMAKE_BINARY_DIR}/share/${PROJECT_NAME}/definitions
-          FILES_MATCHING
-          PATTERN "*.def"
-          PATTERN "*.table"
-          PATTERN "4.2.192.*.table" EXCLUDE )
+# copy the definitions to the build directory
+#file(    COPY ${definition_files} ${table_files} ${text_files}
+#         DESTINATION ${CMAKE_BINARY_DIR}/share/${PROJECT_NAME}/definitions )
+#file(     COPY budg bufr cdf common grib1 grib2 gts mars metar tide hdf5 wrap
+#          DESTINATION ${CMAKE_BINARY_DIR}/share/${PROJECT_NAME}/definitions
+#          FILES_MATCHING
+#          PATTERN "*.def"
+#          PATTERN "*.txt"
+#          PATTERN "*.list"
+#          PATTERN "*.table"
+#          PATTERN "4.2.192.*.table" EXCLUDE )
diff --git a/definitions/Makefile b/definitions/Makefile
deleted file mode 100644
index 5e3d665..0000000
--- a/definitions/Makefile
+++ /dev/null
@@ -1,12281 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# definitions/Makefile.  Generated from Makefile.in by configure.
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/eccodes
-pkgincludedir = $(includedir)/eccodes
-pkglibdir = $(libdir)/eccodes
-pkglibexecdir = $(libexecdir)/eccodes
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = x86_64-suse-linux-gnu
-host_triplet = x86_64-suse-linux-gnu
-subdir = definitions
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(dist_definitions_DATA) $(dist_definitionsbudg_DATA) \
-	$(dist_definitionsbufr_DATA) \
-	$(dist_definitionsbufr_tables_DATA) \
-	$(dist_definitionsbufr_tables_0_local_101_98_0_DATA) \
-	$(dist_definitionsbufr_tables_0_local_101_98_0_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_local_1_98_0_DATA) \
-	$(dist_definitionsbufr_tables_0_local_1_98_0_6_DATA) \
-	$(dist_definitionsbufr_tables_0_local_1_98_0_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_13_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_13_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_14_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_14_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_15_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_15_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_16_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_16_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_17_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_17_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_18_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_18_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_19_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_19_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_20_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_20_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_21_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_21_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_22_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_22_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_23_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_23_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_6_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_6_codetables_DATA) \
-	$(dist_definitionsbufr_tables_3_local_1_98_0_DATA) \
-	$(dist_definitionsbufr_tables_3_wmo_11_DATA) \
-	$(dist_definitionsbufr_tables_3_wmo_6_DATA) \
-	$(dist_definitionscdf_DATA) $(dist_definitionscommon_DATA) \
-	$(dist_definitionsgrib1_DATA) \
-	$(dist_definitionsgrib1_localConcepts_ammc_DATA) \
-	$(dist_definitionsgrib1_localConcepts_cnmc_DATA) \
-	$(dist_definitionsgrib1_localConcepts_ecmf_DATA) \
-	$(dist_definitionsgrib1_localConcepts_edzw_DATA) \
-	$(dist_definitionsgrib1_localConcepts_eidb_DATA) \
-	$(dist_definitionsgrib1_localConcepts_ekmi_DATA) \
-	$(dist_definitionsgrib1_localConcepts_enmi_DATA) \
-	$(dist_definitionsgrib1_localConcepts_eswi_DATA) \
-	$(dist_definitionsgrib1_localConcepts_kwbc_DATA) \
-	$(dist_definitionsgrib1_localConcepts_lfpw_DATA) \
-	$(dist_definitionsgrib1_localConcepts_lowm_DATA) \
-	$(dist_definitionsgrib1_localConcepts_rjtd_DATA) \
-	$(dist_definitionsgrib1_localConcepts_sbsj_DATA) \
-	$(dist_definitionsgrib1_local_ecmf_DATA) \
-	$(dist_definitionsgrib1_local_edzw_DATA) \
-	$(dist_definitionsgrib1_local_rjtd_DATA) \
-	$(dist_definitionsgrib2_DATA) \
-	$(dist_definitionsgrib2_local_DATA) \
-	$(dist_definitionsgrib2_localConcepts_cnmc_DATA) \
-	$(dist_definitionsgrib2_localConcepts_ecmf_DATA) \
-	$(dist_definitionsgrib2_localConcepts_edzw_DATA) \
-	$(dist_definitionsgrib2_localConcepts_egrr_DATA) \
-	$(dist_definitionsgrib2_localConcepts_ekmi_DATA) \
-	$(dist_definitionsgrib2_localConcepts_eswi_DATA) \
-	$(dist_definitionsgrib2_localConcepts_kwbc_DATA) \
-	$(dist_definitionsgrib2_localConcepts_lfpw_DATA) \
-	$(dist_definitionsgrib2_localConcepts_lfpw1_DATA) \
-	$(dist_definitionsgrib2_local_1098_DATA) \
-	$(dist_definitionsgrib2_tables_DATA) \
-	$(dist_definitionsgrib2_tables_0_DATA) \
-	$(dist_definitionsgrib2_tables_1_DATA) \
-	$(dist_definitionsgrib2_tables_10_DATA) \
-	$(dist_definitionsgrib2_tables_11_DATA) \
-	$(dist_definitionsgrib2_tables_12_DATA) \
-	$(dist_definitionsgrib2_tables_13_DATA) \
-	$(dist_definitionsgrib2_tables_14_DATA) \
-	$(dist_definitionsgrib2_tables_2_DATA) \
-	$(dist_definitionsgrib2_tables_3_DATA) \
-	$(dist_definitionsgrib2_tables_4_DATA) \
-	$(dist_definitionsgrib2_tables_5_DATA) \
-	$(dist_definitionsgrib2_tables_6_DATA) \
-	$(dist_definitionsgrib2_tables_7_DATA) \
-	$(dist_definitionsgrib2_tables_8_DATA) \
-	$(dist_definitionsgrib2_tables_9_DATA) \
-	$(dist_definitionsgrib2_tables_local_ecmf_DATA) \
-	$(dist_definitionsgrib2_tables_local_ecmf_4_DATA) \
-	$(dist_definitionsgts_DATA) $(dist_definitionshdf5_DATA) \
-	$(dist_definitionsmars_DATA) $(dist_definitionsmars_eswi_DATA) \
-	$(dist_definitionstide_DATA) $(dist_definitionswrap_DATA)
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_$(V))
-am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(definitionsdir)" \
-	"$(DESTDIR)$(definitionsbudgdir)" \
-	"$(DESTDIR)$(definitionsbufrdir)" \
-	"$(DESTDIR)$(definitionsbufr_tablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_6dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_13dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_13_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_14dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_14_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_15dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_15_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_16dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_16_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_17dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_17_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_18dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_18_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_19dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_19_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_20dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_20_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_21dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_21_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_22dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_22_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_23dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_23_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_6dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_6_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_3_local_1_98_0dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_3_wmo_11dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_3_wmo_6dir)" \
-	"$(DESTDIR)$(definitionscdfdir)" \
-	"$(DESTDIR)$(definitionscommondir)" \
-	"$(DESTDIR)$(definitionsgrib1dir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_ammcdir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_cnmcdir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_ecmfdir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_edzwdir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_eidbdir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_ekmidir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_enmidir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_eswidir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_kwbcdir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_lfpwdir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_lowmdir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_rjtddir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_sbsjdir)" \
-	"$(DESTDIR)$(definitionsgrib1_local_ecmfdir)" \
-	"$(DESTDIR)$(definitionsgrib1_local_edzwdir)" \
-	"$(DESTDIR)$(definitionsgrib1_local_rjtddir)" \
-	"$(DESTDIR)$(definitionsgrib2dir)" \
-	"$(DESTDIR)$(definitionsgrib2_localdir)" \
-	"$(DESTDIR)$(definitionsgrib2_localConcepts_cnmcdir)" \
-	"$(DESTDIR)$(definitionsgrib2_localConcepts_ecmfdir)" \
-	"$(DESTDIR)$(definitionsgrib2_localConcepts_edzwdir)" \
-	"$(DESTDIR)$(definitionsgrib2_localConcepts_egrrdir)" \
-	"$(DESTDIR)$(definitionsgrib2_localConcepts_ekmidir)" \
-	"$(DESTDIR)$(definitionsgrib2_localConcepts_eswidir)" \
-	"$(DESTDIR)$(definitionsgrib2_localConcepts_kwbcdir)" \
-	"$(DESTDIR)$(definitionsgrib2_localConcepts_lfpwdir)" \
-	"$(DESTDIR)$(definitionsgrib2_localConcepts_lfpw1dir)" \
-	"$(DESTDIR)$(definitionsgrib2_local_1098dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tablesdir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_0dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_1dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_10dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_11dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_12dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_13dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_14dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_2dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_3dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_4dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_5dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_6dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_7dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_8dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_9dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_local_ecmfdir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_local_ecmf_4dir)" \
-	"$(DESTDIR)$(definitionsgtsdir)" \
-	"$(DESTDIR)$(definitionshdf5dir)" \
-	"$(DESTDIR)$(definitionsmarsdir)" \
-	"$(DESTDIR)$(definitionsmars_eswidir)" \
-	"$(DESTDIR)$(definitionstidedir)" \
-	"$(DESTDIR)$(definitionswrapdir)"
-DATA = $(dist_definitions_DATA) $(dist_definitionsbudg_DATA) \
-	$(dist_definitionsbufr_DATA) \
-	$(dist_definitionsbufr_tables_DATA) \
-	$(dist_definitionsbufr_tables_0_local_101_98_0_DATA) \
-	$(dist_definitionsbufr_tables_0_local_101_98_0_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_local_1_98_0_DATA) \
-	$(dist_definitionsbufr_tables_0_local_1_98_0_6_DATA) \
-	$(dist_definitionsbufr_tables_0_local_1_98_0_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_13_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_13_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_14_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_14_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_15_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_15_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_16_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_16_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_17_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_17_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_18_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_18_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_19_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_19_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_20_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_20_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_21_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_21_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_22_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_22_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_23_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_23_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_6_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_6_codetables_DATA) \
-	$(dist_definitionsbufr_tables_3_local_1_98_0_DATA) \
-	$(dist_definitionsbufr_tables_3_wmo_11_DATA) \
-	$(dist_definitionsbufr_tables_3_wmo_6_DATA) \
-	$(dist_definitionscdf_DATA) $(dist_definitionscommon_DATA) \
-	$(dist_definitionsgrib1_DATA) \
-	$(dist_definitionsgrib1_localConcepts_ammc_DATA) \
-	$(dist_definitionsgrib1_localConcepts_cnmc_DATA) \
-	$(dist_definitionsgrib1_localConcepts_ecmf_DATA) \
-	$(dist_definitionsgrib1_localConcepts_edzw_DATA) \
-	$(dist_definitionsgrib1_localConcepts_eidb_DATA) \
-	$(dist_definitionsgrib1_localConcepts_ekmi_DATA) \
-	$(dist_definitionsgrib1_localConcepts_enmi_DATA) \
-	$(dist_definitionsgrib1_localConcepts_eswi_DATA) \
-	$(dist_definitionsgrib1_localConcepts_kwbc_DATA) \
-	$(dist_definitionsgrib1_localConcepts_lfpw_DATA) \
-	$(dist_definitionsgrib1_localConcepts_lowm_DATA) \
-	$(dist_definitionsgrib1_localConcepts_rjtd_DATA) \
-	$(dist_definitionsgrib1_localConcepts_sbsj_DATA) \
-	$(dist_definitionsgrib1_local_ecmf_DATA) \
-	$(dist_definitionsgrib1_local_edzw_DATA) \
-	$(dist_definitionsgrib1_local_rjtd_DATA) \
-	$(dist_definitionsgrib2_DATA) \
-	$(dist_definitionsgrib2_local_DATA) \
-	$(dist_definitionsgrib2_localConcepts_cnmc_DATA) \
-	$(dist_definitionsgrib2_localConcepts_ecmf_DATA) \
-	$(dist_definitionsgrib2_localConcepts_edzw_DATA) \
-	$(dist_definitionsgrib2_localConcepts_egrr_DATA) \
-	$(dist_definitionsgrib2_localConcepts_ekmi_DATA) \
-	$(dist_definitionsgrib2_localConcepts_eswi_DATA) \
-	$(dist_definitionsgrib2_localConcepts_kwbc_DATA) \
-	$(dist_definitionsgrib2_localConcepts_lfpw_DATA) \
-	$(dist_definitionsgrib2_localConcepts_lfpw1_DATA) \
-	$(dist_definitionsgrib2_local_1098_DATA) \
-	$(dist_definitionsgrib2_tables_DATA) \
-	$(dist_definitionsgrib2_tables_0_DATA) \
-	$(dist_definitionsgrib2_tables_1_DATA) \
-	$(dist_definitionsgrib2_tables_10_DATA) \
-	$(dist_definitionsgrib2_tables_11_DATA) \
-	$(dist_definitionsgrib2_tables_12_DATA) \
-	$(dist_definitionsgrib2_tables_13_DATA) \
-	$(dist_definitionsgrib2_tables_14_DATA) \
-	$(dist_definitionsgrib2_tables_2_DATA) \
-	$(dist_definitionsgrib2_tables_3_DATA) \
-	$(dist_definitionsgrib2_tables_4_DATA) \
-	$(dist_definitionsgrib2_tables_5_DATA) \
-	$(dist_definitionsgrib2_tables_6_DATA) \
-	$(dist_definitionsgrib2_tables_7_DATA) \
-	$(dist_definitionsgrib2_tables_8_DATA) \
-	$(dist_definitionsgrib2_tables_9_DATA) \
-	$(dist_definitionsgrib2_tables_local_ecmf_DATA) \
-	$(dist_definitionsgrib2_tables_local_ecmf_4_DATA) \
-	$(dist_definitionsgts_DATA) $(dist_definitionshdf5_DATA) \
-	$(dist_definitionsmars_DATA) $(dist_definitionsmars_eswi_DATA) \
-	$(dist_definitionstide_DATA) $(dist_definitionswrap_DATA)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing aclocal-1.13
-AEC_DIR = 
-AMTAR = $${TAR-tar}
-AM_DEFAULT_VERBOSITY = 1
-AR = ar
-AUTOCONF = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoconf
-AUTOHEADER = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoheader
-AUTOMAKE = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing automake-1.13
-AWK = gawk
-CC = gcc
-CCDEPMODE = depmode=gcc3
-CCSDS_TEST = 
-CFLAGS = -g -O2
-CPP = gcc -E
-CPPFLAGS = 
-CYGPATH_W = echo
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DEVEL_RULES = dummy.am
-DLLTOOL = false
-DSYMUTIL = 
-DUMPBIN = 
-ECCODES_AGE = 0
-ECCODES_CURRENT = 1
-ECCODES_DEFINITION_PATH = ${datarootdir}/eccodes/definitions
-ECCODES_MAIN_VERSION = 0.10.0
-ECCODES_MAJOR_VERSION = 0
-ECCODES_MINOR_VERSION = 10
-ECCODES_PATCH_VERSION = 0
-ECCODES_REVISION = 0
-ECCODES_SAMPLES_PATH = ${datarootdir}/eccodes/samples
-ECCODES_VERSION_STR = 0.10.0
-ECHO_C = 
-ECHO_N = -n
-ECHO_T = 
-EGREP = /usr/bin/grep -E
-EMOS_LIB = 
-EXEEXT = 
-F77 = gfortran
-F90_CHECK = examples/F90
-F90_MODULE_FLAG = -I
-FC = gfortran
-FCFLAGS = -g -O2
-FFLAGS = -g -O2
-FGREP = /usr/bin/grep -F
-FORTRAN_MOD = fortran
-GREP = /usr/bin/grep
-GRIB_API_INC = /tmp/masn/git/grib_api/eccodes/src
-GRIB_API_LIB = /tmp/masn/git/grib_api/eccodes/src/grib_api.a
-GRIB_DEVEL = 0
-IFS_SAMPLES_DIR = ${datarootdir}/eccodes/ifs_samples
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-JASPER_DIR = system
-JPEG_TEST = jpeg.sh
-LD = /usr/x86_64-suse-linux/bin/ld -m elf_x86_64
-LDFLAGS = 
-LEX = flex
-LEXLIB = -lfl
-LEX_OUTPUT_ROOT = lex.yy
-LIBOBJS = 
-LIBS = -lm -ljasper 
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LIBTOOL_DEPS = config/ltmain.sh
-LIB_AEC = 
-LIB_JASPER = -ljasper
-LIB_OPENJPEG = 
-LIB_PNG = 
-LINUX_DISTRIBUTION_NAME = openSUSE 13.1 (x86_64)
-LINUX_DISTRIBUTION_VERSION = 
-LIPO = 
-LN_S = ln -s
-LTLIBOBJS = 
-MAKEINFO = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing makeinfo
-MANIFEST_TOOL = :
-MKDIR_P = /usr/bin/mkdir -p
-NETCDF_LDFLAGS = 
-NM = /usr/bin/nm -B
-NMEDIT = 
-NUMPY_INCLUDE = /usr/local/apps/python/2.7.8-01/lib/python2.7/site-packages/numpy/core/include
-OBJDUMP = objdump
-OBJEXT = o
-OPENJPEG_DIR = system
-OTOOL = 
-OTOOL64 = 
-PACKAGE = eccodes
-PACKAGE_BUGREPORT = Software.Support at ecmwf.int
-PACKAGE_NAME = eccodes
-PACKAGE_STRING = eccodes  
-PACKAGE_TARNAME = eccodes
-PACKAGE_URL = 
-PACKAGE_VERSION = 0.10.0
-PATH_SEPARATOR = :
-PERL = 
-PERLDIR = perl
-PERL_INSTALL_OPTIONS = LIB=NONE/perl
-PERL_MAKE_OPTIONS = 
-PYTHON = /usr/local/apps/python/2.7.8-01/bin/python
-PYTHON_CFLAGS = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7 -fno-strict-aliasing -O3 -fpic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
-PYTHON_CHECK = examples/python
-PYTHON_CONFIG = /usr/local/apps/python/2.7.8-01/bin/python2.7-config
-PYTHON_DATA_HANDLER = numpy
-PYTHON_EXEC_PREFIX = ${exec_prefix}
-PYTHON_INCLUDES = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7
-PYTHON_LDFLAGS = -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic
-PYTHON_LIBS = -lpthread -ldl -lutil -lm -lpython2.7
-PYTHON_PLATFORM = linux2
-PYTHON_PREFIX = ${prefix}
-PYTHON_VERSION = 2.7
-RANLIB = ranlib
-RM = rm -f
-RPM_CONFIGURE_ARGS =  '--enable-python' '--disable-shared' 'CC=gcc' 'F77=gfortran' 'FC=gfortran'
-RPM_HOST_CPU = x86_64
-RPM_HOST_OS = linux-gnu
-RPM_HOST_VENDOR = suse
-RPM_RELEASE = 1
-SED = /usr/bin/sed
-SET_MAKE = 
-SHELL = /bin/sh
-STRIP = strip
-VERSION = 0.10.0
-WARN_PEDANTIC = -pedantic -Wall
-WERROR = 
-YACC = bison -y
-YFLAGS = 
-abs_builddir = /tmp/masn/git/grib_api/eccodes/definitions
-abs_srcdir = /tmp/masn/git/grib_api/eccodes/definitions
-abs_top_builddir = /tmp/masn/git/grib_api/eccodes
-abs_top_srcdir = /tmp/masn/git/grib_api/eccodes
-ac_ct_AR = ar
-ac_ct_CC = gcc
-ac_ct_DUMPBIN = 
-ac_ct_F77 = 
-ac_ct_FC = 
-am__include = include
-am__leading_dot = .
-am__quote = 
-am__tar = $${TAR-tar} chof - "$$tardir"
-am__untar = $${TAR-tar} xf -
-bindir = ${exec_prefix}/bin
-build = x86_64-suse-linux-gnu
-build_alias = 
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = suse
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-host = x86_64-suse-linux-gnu
-host_alias = 
-host_cpu = x86_64
-host_os = linux-gnu
-host_vendor = suse
-htmldir = ${docdir}
-includedir = ${prefix}/include
-infodir = ${datarootdir}/info
-install_sh = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localedir = ${datarootdir}/locale
-localstatedir = ${prefix}/var
-mandir = ${datarootdir}/man
-mkdir_p = $(MKDIR_P)
-oldincludedir = /usr/include
-pdfdir = ${docdir}
-pkgpyexecdir = ${pyexecdir}/eccodes
-pkgpythondir = ${pythondir}/eccodes
-prefix = /usr/local
-program_transform_name = s,x,x,
-psdir = ${docdir}
-pyexecdir = ${exec_prefix}/lib/python2.7/site-packages
-pythondir = ${prefix}/lib/python2.7/site-packages
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-srcdir = .
-sysconfdir = ${prefix}/etc
-target_alias = 
-top_build_prefix = ../
-top_builddir = ..
-top_srcdir = ..
-
-#This file is generated by make_makefile_am.pl
-#  DON'T EDIT!!!
-definitionsdir = ${datarootdir}/eccodes/definitions
-dist_definitions_DATA = \
-	./CMakeLists.txt\
-	./boot.def\
-	./empty_template.def\
-	./installDefinitions.sh\
-	./mars_param.table\
-	./param_id.table\
-	./parameters_version.def\
-	./publish_new_parameters.sh\
-	./stepUnits.table\
-	./x.grib
-
-definitionsbudgdir = ${datarootdir}/eccodes/definitions/budg
-dist_definitionsbudg_DATA = \
-	budg/boot.def\
-	budg/mars_labeling.def\
-	budg/section.1.def\
-	budg/section.4.def
-
-definitionsbufrdir = ${datarootdir}/eccodes/definitions/bufr
-dist_definitionsbufr_DATA = \
-	bufr/boot.def\
-	bufr/boot_edition_1.def\
-	bufr/boot_edition_2.def\
-	bufr/boot_edition_3.def\
-	bufr/boot_edition_4.def\
-	bufr/old_section.1.def\
-	bufr/rdb_key.def\
-	bufr/rdb_key_28.def\
-	bufr/section.0.def\
-	bufr/section.1.1.def\
-	bufr/section.1.2.def\
-	bufr/section.1.3.def\
-	bufr/section.1.4.def\
-	bufr/section.2.def\
-	bufr/section.3.def\
-	bufr/section.4.def\
-	bufr/section.5.def\
-	bufr/section1_flags.table\
-	bufr/section3_flags.table
-
-definitionsbufr_tablesdir = ${datarootdir}/eccodes/definitions/bufr/tables
-dist_definitionsbufr_tables_DATA = \
-	bufr/tables/operators.table
-
-definitionsbufr_tables_0_local_1_98_0dir = ${datarootdir}/eccodes/definitions/bufr/tables/0/local/1/98/0
-dist_definitionsbufr_tables_0_local_1_98_0_DATA = \
-	bufr/tables/0/local/1/98/0/element.table\
-	bufr/tables/0/local/1/98/0/sequence.def
-
-definitionsbufr_tables_0_local_1_98_0_6dir = ${datarootdir}/eccodes/definitions/bufr/tables/0/local/1/98/0/6
-dist_definitionsbufr_tables_0_local_1_98_0_6_DATA = \
-	bufr/tables/0/local/1/98/0/6/element.table
-
-definitionsbufr_tables_0_local_1_98_0_codetablesdir = ${datarootdir}/eccodes/definitions/bufr/tables/0/local/1/98/0/codetables
-dist_definitionsbufr_tables_0_local_1_98_0_codetables_DATA = \
-	bufr/tables/0/local/1/98/0/codetables/13202.table\
-	bufr/tables/0/local/1/98/0/codetables/20252.table\
-	bufr/tables/0/local/1/98/0/codetables/20253.table\
-	bufr/tables/0/local/1/98/0/codetables/21196.table\
-	bufr/tables/0/local/1/98/0/codetables/21199.table\
-	bufr/tables/0/local/1/98/0/codetables/21227.table\
-	bufr/tables/0/local/1/98/0/codetables/2194.table\
-	bufr/tables/0/local/1/98/0/codetables/2196.table\
-	bufr/tables/0/local/1/98/0/codetables/2199.table\
-	bufr/tables/0/local/1/98/0/codetables/2207.table\
-	bufr/tables/0/local/1/98/0/codetables/2231.table\
-	bufr/tables/0/local/1/98/0/codetables/2232.table\
-	bufr/tables/0/local/1/98/0/codetables/2251.table\
-	bufr/tables/0/local/1/98/0/codetables/2252.table\
-	bufr/tables/0/local/1/98/0/codetables/2254.table\
-	bufr/tables/0/local/1/98/0/codetables/33195.table\
-	bufr/tables/0/local/1/98/0/codetables/33205.table\
-	bufr/tables/0/local/1/98/0/codetables/33206.table\
-	bufr/tables/0/local/1/98/0/codetables/33207.table\
-	bufr/tables/0/local/1/98/0/codetables/33208.table\
-	bufr/tables/0/local/1/98/0/codetables/33209.table\
-	bufr/tables/0/local/1/98/0/codetables/33220.table\
-	bufr/tables/0/local/1/98/0/codetables/33221.table\
-	bufr/tables/0/local/1/98/0/codetables/33222.table\
-	bufr/tables/0/local/1/98/0/codetables/33223.table\
-	bufr/tables/0/local/1/98/0/codetables/33224.table\
-	bufr/tables/0/local/1/98/0/codetables/33225.table\
-	bufr/tables/0/local/1/98/0/codetables/33226.table\
-	bufr/tables/0/local/1/98/0/codetables/33227.table\
-	bufr/tables/0/local/1/98/0/codetables/33228.table\
-	bufr/tables/0/local/1/98/0/codetables/33229.table\
-	bufr/tables/0/local/1/98/0/codetables/33230.table\
-	bufr/tables/0/local/1/98/0/codetables/33232.table\
-	bufr/tables/0/local/1/98/0/codetables/33233.table\
-	bufr/tables/0/local/1/98/0/codetables/33234.table\
-	bufr/tables/0/local/1/98/0/codetables/33236.table\
-	bufr/tables/0/local/1/98/0/codetables/33237.table\
-	bufr/tables/0/local/1/98/0/codetables/33238.table\
-	bufr/tables/0/local/1/98/0/codetables/33239.table\
-	bufr/tables/0/local/1/98/0/codetables/33240.table\
-	bufr/tables/0/local/1/98/0/codetables/33243.table\
-	bufr/tables/0/local/1/98/0/codetables/33244.table\
-	bufr/tables/0/local/1/98/0/codetables/33245.table\
-	bufr/tables/0/local/1/98/0/codetables/33246.table\
-	bufr/tables/0/local/1/98/0/codetables/33247.table\
-	bufr/tables/0/local/1/98/0/codetables/33248.table\
-	bufr/tables/0/local/1/98/0/codetables/33249.table\
-	bufr/tables/0/local/1/98/0/codetables/33252.table\
-	bufr/tables/0/local/1/98/0/codetables/33254.table\
-	bufr/tables/0/local/1/98/0/codetables/40203.table\
-	bufr/tables/0/local/1/98/0/codetables/40211.table\
-	bufr/tables/0/local/1/98/0/codetables/49193.table\
-	bufr/tables/0/local/1/98/0/codetables/49194.table\
-	bufr/tables/0/local/1/98/0/codetables/8193.table\
-	bufr/tables/0/local/1/98/0/codetables/8195.table\
-	bufr/tables/0/local/1/98/0/codetables/8201.table
-
-definitionsbufr_tables_0_local_101_98_0dir = ${datarootdir}/eccodes/definitions/bufr/tables/0/local/101/98/0
-dist_definitionsbufr_tables_0_local_101_98_0_DATA = \
-	bufr/tables/0/local/101/98/0/element.table\
-	bufr/tables/0/local/101/98/0/sequence.def
-
-definitionsbufr_tables_0_local_101_98_0_codetablesdir = ${datarootdir}/eccodes/definitions/bufr/tables/0/local/101/98/0/codetables
-dist_definitionsbufr_tables_0_local_101_98_0_codetables_DATA = \
-	bufr/tables/0/local/101/98/0/codetables/13202.table\
-	bufr/tables/0/local/101/98/0/codetables/20252.table\
-	bufr/tables/0/local/101/98/0/codetables/20253.table\
-	bufr/tables/0/local/101/98/0/codetables/21196.table\
-	bufr/tables/0/local/101/98/0/codetables/21199.table\
-	bufr/tables/0/local/101/98/0/codetables/2194.table\
-	bufr/tables/0/local/101/98/0/codetables/2196.table\
-	bufr/tables/0/local/101/98/0/codetables/2199.table\
-	bufr/tables/0/local/101/98/0/codetables/2231.table\
-	bufr/tables/0/local/101/98/0/codetables/2232.table\
-	bufr/tables/0/local/101/98/0/codetables/2251.table\
-	bufr/tables/0/local/101/98/0/codetables/2252.table\
-	bufr/tables/0/local/101/98/0/codetables/2254.table\
-	bufr/tables/0/local/101/98/0/codetables/33195.table\
-	bufr/tables/0/local/101/98/0/codetables/33205.table\
-	bufr/tables/0/local/101/98/0/codetables/33206.table\
-	bufr/tables/0/local/101/98/0/codetables/33207.table\
-	bufr/tables/0/local/101/98/0/codetables/33208.table\
-	bufr/tables/0/local/101/98/0/codetables/33209.table\
-	bufr/tables/0/local/101/98/0/codetables/33220.table\
-	bufr/tables/0/local/101/98/0/codetables/33221.table\
-	bufr/tables/0/local/101/98/0/codetables/33222.table\
-	bufr/tables/0/local/101/98/0/codetables/33223.table\
-	bufr/tables/0/local/101/98/0/codetables/33224.table\
-	bufr/tables/0/local/101/98/0/codetables/33225.table\
-	bufr/tables/0/local/101/98/0/codetables/33226.table\
-	bufr/tables/0/local/101/98/0/codetables/33227.table\
-	bufr/tables/0/local/101/98/0/codetables/33228.table\
-	bufr/tables/0/local/101/98/0/codetables/33229.table\
-	bufr/tables/0/local/101/98/0/codetables/33230.table\
-	bufr/tables/0/local/101/98/0/codetables/33232.table\
-	bufr/tables/0/local/101/98/0/codetables/33233.table\
-	bufr/tables/0/local/101/98/0/codetables/33234.table\
-	bufr/tables/0/local/101/98/0/codetables/33236.table\
-	bufr/tables/0/local/101/98/0/codetables/33237.table\
-	bufr/tables/0/local/101/98/0/codetables/33238.table\
-	bufr/tables/0/local/101/98/0/codetables/33239.table\
-	bufr/tables/0/local/101/98/0/codetables/33240.table\
-	bufr/tables/0/local/101/98/0/codetables/33243.table\
-	bufr/tables/0/local/101/98/0/codetables/33244.table\
-	bufr/tables/0/local/101/98/0/codetables/33245.table\
-	bufr/tables/0/local/101/98/0/codetables/33246.table\
-	bufr/tables/0/local/101/98/0/codetables/33247.table\
-	bufr/tables/0/local/101/98/0/codetables/33248.table\
-	bufr/tables/0/local/101/98/0/codetables/33249.table\
-	bufr/tables/0/local/101/98/0/codetables/33252.table\
-	bufr/tables/0/local/101/98/0/codetables/33254.table\
-	bufr/tables/0/local/101/98/0/codetables/49193.table\
-	bufr/tables/0/local/101/98/0/codetables/49194.table\
-	bufr/tables/0/local/101/98/0/codetables/8079.table\
-	bufr/tables/0/local/101/98/0/codetables/8193.table\
-	bufr/tables/0/local/101/98/0/codetables/8195.table
-
-definitionsbufr_tables_0_wmo_13dir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/13
-dist_definitionsbufr_tables_0_wmo_13_DATA = \
-	bufr/tables/0/wmo/13/element.table\
-	bufr/tables/0/wmo/13/sequence.def
-
-definitionsbufr_tables_0_wmo_13_codetablesdir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/13/codetables
-dist_definitionsbufr_tables_0_wmo_13_codetables_DATA = \
-	bufr/tables/0/wmo/13/codetables/1003.table\
-	bufr/tables/0/wmo/13/codetables/10063.table\
-	bufr/tables/0/wmo/13/codetables/10064.table\
-	bufr/tables/0/wmo/13/codetables/1007.table\
-	bufr/tables/0/wmo/13/codetables/1031.table\
-	bufr/tables/0/wmo/13/codetables/1032.table\
-	bufr/tables/0/wmo/13/codetables/1033.table\
-	bufr/tables/0/wmo/13/codetables/1035.table\
-	bufr/tables/0/wmo/13/codetables/1090.table\
-	bufr/tables/0/wmo/13/codetables/1092.table\
-	bufr/tables/0/wmo/13/codetables/11031.table\
-	bufr/tables/0/wmo/13/codetables/11037.table\
-	bufr/tables/0/wmo/13/codetables/11038.table\
-	bufr/tables/0/wmo/13/codetables/11039.table\
-	bufr/tables/0/wmo/13/codetables/13038.table\
-	bufr/tables/0/wmo/13/codetables/13039.table\
-	bufr/tables/0/wmo/13/codetables/13040.table\
-	bufr/tables/0/wmo/13/codetables/13041.table\
-	bufr/tables/0/wmo/13/codetables/13051.table\
-	bufr/tables/0/wmo/13/codetables/13056.table\
-	bufr/tables/0/wmo/13/codetables/13057.table\
-	bufr/tables/0/wmo/13/codetables/15025.table\
-	bufr/tables/0/wmo/13/codetables/19001.table\
-	bufr/tables/0/wmo/13/codetables/19008.table\
-	bufr/tables/0/wmo/13/codetables/19010.table\
-	bufr/tables/0/wmo/13/codetables/20003.table\
-	bufr/tables/0/wmo/13/codetables/20004.table\
-	bufr/tables/0/wmo/13/codetables/20005.table\
-	bufr/tables/0/wmo/13/codetables/20008.table\
-	bufr/tables/0/wmo/13/codetables/20009.table\
-	bufr/tables/0/wmo/13/codetables/2001.table\
-	bufr/tables/0/wmo/13/codetables/20011.table\
-	bufr/tables/0/wmo/13/codetables/20012.table\
-	bufr/tables/0/wmo/13/codetables/20017.table\
-	bufr/tables/0/wmo/13/codetables/20018.table\
-	bufr/tables/0/wmo/13/codetables/2002.table\
-	bufr/tables/0/wmo/13/codetables/20021.table\
-	bufr/tables/0/wmo/13/codetables/20022.table\
-	bufr/tables/0/wmo/13/codetables/20023.table\
-	bufr/tables/0/wmo/13/codetables/20024.table\
-	bufr/tables/0/wmo/13/codetables/20025.table\
-	bufr/tables/0/wmo/13/codetables/20026.table\
-	bufr/tables/0/wmo/13/codetables/20027.table\
-	bufr/tables/0/wmo/13/codetables/20029.table\
-	bufr/tables/0/wmo/13/codetables/2003.table\
-	bufr/tables/0/wmo/13/codetables/20032.table\
-	bufr/tables/0/wmo/13/codetables/20033.table\
-	bufr/tables/0/wmo/13/codetables/20034.table\
-	bufr/tables/0/wmo/13/codetables/20035.table\
-	bufr/tables/0/wmo/13/codetables/20036.table\
-	bufr/tables/0/wmo/13/codetables/20037.table\
-	bufr/tables/0/wmo/13/codetables/2004.table\
-	bufr/tables/0/wmo/13/codetables/20040.table\
-	bufr/tables/0/wmo/13/codetables/20041.table\
-	bufr/tables/0/wmo/13/codetables/20042.table\
-	bufr/tables/0/wmo/13/codetables/20045.table\
-	bufr/tables/0/wmo/13/codetables/20050.table\
-	bufr/tables/0/wmo/13/codetables/20055.table\
-	bufr/tables/0/wmo/13/codetables/20056.table\
-	bufr/tables/0/wmo/13/codetables/20062.table\
-	bufr/tables/0/wmo/13/codetables/20063.table\
-	bufr/tables/0/wmo/13/codetables/20071.table\
-	bufr/tables/0/wmo/13/codetables/20086.table\
-	bufr/tables/0/wmo/13/codetables/20090.table\
-	bufr/tables/0/wmo/13/codetables/20101.table\
-	bufr/tables/0/wmo/13/codetables/20102.table\
-	bufr/tables/0/wmo/13/codetables/2011.table\
-	bufr/tables/0/wmo/13/codetables/2012.table\
-	bufr/tables/0/wmo/13/codetables/2013.table\
-	bufr/tables/0/wmo/13/codetables/2014.table\
-	bufr/tables/0/wmo/13/codetables/2015.table\
-	bufr/tables/0/wmo/13/codetables/2016.table\
-	bufr/tables/0/wmo/13/codetables/2019.table\
-	bufr/tables/0/wmo/13/codetables/2020.table\
-	bufr/tables/0/wmo/13/codetables/2021.table\
-	bufr/tables/0/wmo/13/codetables/2022.table\
-	bufr/tables/0/wmo/13/codetables/2023.table\
-	bufr/tables/0/wmo/13/codetables/2024.table\
-	bufr/tables/0/wmo/13/codetables/2025.table\
-	bufr/tables/0/wmo/13/codetables/2030.table\
-	bufr/tables/0/wmo/13/codetables/2031.table\
-	bufr/tables/0/wmo/13/codetables/2032.table\
-	bufr/tables/0/wmo/13/codetables/2033.table\
-	bufr/tables/0/wmo/13/codetables/2034.table\
-	bufr/tables/0/wmo/13/codetables/2036.table\
-	bufr/tables/0/wmo/13/codetables/2037.table\
-	bufr/tables/0/wmo/13/codetables/2038.table\
-	bufr/tables/0/wmo/13/codetables/2039.table\
-	bufr/tables/0/wmo/13/codetables/2040.table\
-	bufr/tables/0/wmo/13/codetables/2041.table\
-	bufr/tables/0/wmo/13/codetables/2044.table\
-	bufr/tables/0/wmo/13/codetables/2045.table\
-	bufr/tables/0/wmo/13/codetables/2046.table\
-	bufr/tables/0/wmo/13/codetables/2048.table\
-	bufr/tables/0/wmo/13/codetables/2049.table\
-	bufr/tables/0/wmo/13/codetables/2050.table\
-	bufr/tables/0/wmo/13/codetables/2051.table\
-	bufr/tables/0/wmo/13/codetables/2052.table\
-	bufr/tables/0/wmo/13/codetables/2053.table\
-	bufr/tables/0/wmo/13/codetables/2054.table\
-	bufr/tables/0/wmo/13/codetables/2055.table\
-	bufr/tables/0/wmo/13/codetables/2056.table\
-	bufr/tables/0/wmo/13/codetables/2057.table\
-	bufr/tables/0/wmo/13/codetables/2058.table\
-	bufr/tables/0/wmo/13/codetables/2059.table\
-	bufr/tables/0/wmo/13/codetables/2060.table\
-	bufr/tables/0/wmo/13/codetables/2061.table\
-	bufr/tables/0/wmo/13/codetables/2062.table\
-	bufr/tables/0/wmo/13/codetables/2064.table\
-	bufr/tables/0/wmo/13/codetables/2066.table\
-	bufr/tables/0/wmo/13/codetables/2070.table\
-	bufr/tables/0/wmo/13/codetables/2080.table\
-	bufr/tables/0/wmo/13/codetables/2081.table\
-	bufr/tables/0/wmo/13/codetables/2083.table\
-	bufr/tables/0/wmo/13/codetables/2084.table\
-	bufr/tables/0/wmo/13/codetables/2095.table\
-	bufr/tables/0/wmo/13/codetables/2096.table\
-	bufr/tables/0/wmo/13/codetables/2097.table\
-	bufr/tables/0/wmo/13/codetables/2098.table\
-	bufr/tables/0/wmo/13/codetables/2101.table\
-	bufr/tables/0/wmo/13/codetables/2103.table\
-	bufr/tables/0/wmo/13/codetables/2104.table\
-	bufr/tables/0/wmo/13/codetables/21066.table\
-	bufr/tables/0/wmo/13/codetables/21067.table\
-	bufr/tables/0/wmo/13/codetables/21068.table\
-	bufr/tables/0/wmo/13/codetables/21069.table\
-	bufr/tables/0/wmo/13/codetables/21070.table\
-	bufr/tables/0/wmo/13/codetables/21072.table\
-	bufr/tables/0/wmo/13/codetables/21073.table\
-	bufr/tables/0/wmo/13/codetables/21076.table\
-	bufr/tables/0/wmo/13/codetables/21109.table\
-	bufr/tables/0/wmo/13/codetables/21115.table\
-	bufr/tables/0/wmo/13/codetables/21116.table\
-	bufr/tables/0/wmo/13/codetables/21119.table\
-	bufr/tables/0/wmo/13/codetables/21144.table\
-	bufr/tables/0/wmo/13/codetables/2115.table\
-	bufr/tables/0/wmo/13/codetables/21150.table\
-	bufr/tables/0/wmo/13/codetables/21155.table\
-	bufr/tables/0/wmo/13/codetables/21158.table\
-	bufr/tables/0/wmo/13/codetables/21159.table\
-	bufr/tables/0/wmo/13/codetables/21169.table\
-	bufr/tables/0/wmo/13/codetables/2119.table\
-	bufr/tables/0/wmo/13/codetables/2131.table\
-	bufr/tables/0/wmo/13/codetables/2143.table\
-	bufr/tables/0/wmo/13/codetables/2144.table\
-	bufr/tables/0/wmo/13/codetables/2145.table\
-	bufr/tables/0/wmo/13/codetables/2146.table\
-	bufr/tables/0/wmo/13/codetables/2148.table\
-	bufr/tables/0/wmo/13/codetables/2149.table\
-	bufr/tables/0/wmo/13/codetables/2150.table\
-	bufr/tables/0/wmo/13/codetables/2151.table\
-	bufr/tables/0/wmo/13/codetables/2152.table\
-	bufr/tables/0/wmo/13/codetables/2158.table\
-	bufr/tables/0/wmo/13/codetables/2159.table\
-	bufr/tables/0/wmo/13/codetables/2163.table\
-	bufr/tables/0/wmo/13/codetables/2164.table\
-	bufr/tables/0/wmo/13/codetables/2166.table\
-	bufr/tables/0/wmo/13/codetables/2167.table\
-	bufr/tables/0/wmo/13/codetables/2169.table\
-	bufr/tables/0/wmo/13/codetables/2172.table\
-	bufr/tables/0/wmo/13/codetables/2175.table\
-	bufr/tables/0/wmo/13/codetables/2176.table\
-	bufr/tables/0/wmo/13/codetables/2177.table\
-	bufr/tables/0/wmo/13/codetables/2178.table\
-	bufr/tables/0/wmo/13/codetables/2179.table\
-	bufr/tables/0/wmo/13/codetables/2180.table\
-	bufr/tables/0/wmo/13/codetables/2181.table\
-	bufr/tables/0/wmo/13/codetables/2182.table\
-	bufr/tables/0/wmo/13/codetables/2183.table\
-	bufr/tables/0/wmo/13/codetables/2184.table\
-	bufr/tables/0/wmo/13/codetables/2185.table\
-	bufr/tables/0/wmo/13/codetables/2186.table\
-	bufr/tables/0/wmo/13/codetables/2187.table\
-	bufr/tables/0/wmo/13/codetables/2188.table\
-	bufr/tables/0/wmo/13/codetables/2189.table\
-	bufr/tables/0/wmo/13/codetables/22056.table\
-	bufr/tables/0/wmo/13/codetables/22060.table\
-	bufr/tables/0/wmo/13/codetables/22061.table\
-	bufr/tables/0/wmo/13/codetables/22067.table\
-	bufr/tables/0/wmo/13/codetables/22068.table\
-	bufr/tables/0/wmo/13/codetables/22120.table\
-	bufr/tables/0/wmo/13/codetables/22121.table\
-	bufr/tables/0/wmo/13/codetables/22122.table\
-	bufr/tables/0/wmo/13/codetables/22123.table\
-	bufr/tables/0/wmo/13/codetables/23001.table\
-	bufr/tables/0/wmo/13/codetables/23002.table\
-	bufr/tables/0/wmo/13/codetables/23003.table\
-	bufr/tables/0/wmo/13/codetables/23004.table\
-	bufr/tables/0/wmo/13/codetables/23005.table\
-	bufr/tables/0/wmo/13/codetables/23006.table\
-	bufr/tables/0/wmo/13/codetables/23007.table\
-	bufr/tables/0/wmo/13/codetables/23008.table\
-	bufr/tables/0/wmo/13/codetables/23009.table\
-	bufr/tables/0/wmo/13/codetables/23016.table\
-	bufr/tables/0/wmo/13/codetables/23018.table\
-	bufr/tables/0/wmo/13/codetables/23031.table\
-	bufr/tables/0/wmo/13/codetables/23032.table\
-	bufr/tables/0/wmo/13/codetables/24003.table\
-	bufr/tables/0/wmo/13/codetables/25004.table\
-	bufr/tables/0/wmo/13/codetables/25005.table\
-	bufr/tables/0/wmo/13/codetables/25006.table\
-	bufr/tables/0/wmo/13/codetables/25009.table\
-	bufr/tables/0/wmo/13/codetables/25010.table\
-	bufr/tables/0/wmo/13/codetables/25011.table\
-	bufr/tables/0/wmo/13/codetables/25012.table\
-	bufr/tables/0/wmo/13/codetables/25013.table\
-	bufr/tables/0/wmo/13/codetables/25015.table\
-	bufr/tables/0/wmo/13/codetables/25017.table\
-	bufr/tables/0/wmo/13/codetables/25020.table\
-	bufr/tables/0/wmo/13/codetables/25021.table\
-	bufr/tables/0/wmo/13/codetables/25030.table\
-	bufr/tables/0/wmo/13/codetables/25032.table\
-	bufr/tables/0/wmo/13/codetables/25033.table\
-	bufr/tables/0/wmo/13/codetables/25034.table\
-	bufr/tables/0/wmo/13/codetables/25036.table\
-	bufr/tables/0/wmo/13/codetables/25040.table\
-	bufr/tables/0/wmo/13/codetables/25041.table\
-	bufr/tables/0/wmo/13/codetables/25042.table\
-	bufr/tables/0/wmo/13/codetables/25045.table\
-	bufr/tables/0/wmo/13/codetables/25046.table\
-	bufr/tables/0/wmo/13/codetables/25047.table\
-	bufr/tables/0/wmo/13/codetables/25048.table\
-	bufr/tables/0/wmo/13/codetables/25049.table\
-	bufr/tables/0/wmo/13/codetables/25051.table\
-	bufr/tables/0/wmo/13/codetables/25053.table\
-	bufr/tables/0/wmo/13/codetables/25069.table\
-	bufr/tables/0/wmo/13/codetables/25086.table\
-	bufr/tables/0/wmo/13/codetables/25093.table\
-	bufr/tables/0/wmo/13/codetables/25095.table\
-	bufr/tables/0/wmo/13/codetables/25096.table\
-	bufr/tables/0/wmo/13/codetables/25097.table\
-	bufr/tables/0/wmo/13/codetables/25098.table\
-	bufr/tables/0/wmo/13/codetables/25099.table\
-	bufr/tables/0/wmo/13/codetables/25110.table\
-	bufr/tables/0/wmo/13/codetables/25120.table\
-	bufr/tables/0/wmo/13/codetables/25122.table\
-	bufr/tables/0/wmo/13/codetables/25123.table\
-	bufr/tables/0/wmo/13/codetables/25124.table\
-	bufr/tables/0/wmo/13/codetables/26010.table\
-	bufr/tables/0/wmo/13/codetables/29001.table\
-	bufr/tables/0/wmo/13/codetables/29002.table\
-	bufr/tables/0/wmo/13/codetables/30031.table\
-	bufr/tables/0/wmo/13/codetables/30032.table\
-	bufr/tables/0/wmo/13/codetables/31021.table\
-	bufr/tables/0/wmo/13/codetables/31031.table\
-	bufr/tables/0/wmo/13/codetables/33002.table\
-	bufr/tables/0/wmo/13/codetables/33003.table\
-	bufr/tables/0/wmo/13/codetables/33005.table\
-	bufr/tables/0/wmo/13/codetables/33006.table\
-	bufr/tables/0/wmo/13/codetables/33015.table\
-	bufr/tables/0/wmo/13/codetables/33020.table\
-	bufr/tables/0/wmo/13/codetables/33021.table\
-	bufr/tables/0/wmo/13/codetables/33022.table\
-	bufr/tables/0/wmo/13/codetables/33023.table\
-	bufr/tables/0/wmo/13/codetables/33024.table\
-	bufr/tables/0/wmo/13/codetables/33025.table\
-	bufr/tables/0/wmo/13/codetables/33026.table\
-	bufr/tables/0/wmo/13/codetables/33027.table\
-	bufr/tables/0/wmo/13/codetables/33028.table\
-	bufr/tables/0/wmo/13/codetables/33030.table\
-	bufr/tables/0/wmo/13/codetables/33031.table\
-	bufr/tables/0/wmo/13/codetables/33032.table\
-	bufr/tables/0/wmo/13/codetables/33033.table\
-	bufr/tables/0/wmo/13/codetables/33035.table\
-	bufr/tables/0/wmo/13/codetables/33037.table\
-	bufr/tables/0/wmo/13/codetables/33038.table\
-	bufr/tables/0/wmo/13/codetables/33039.table\
-	bufr/tables/0/wmo/13/codetables/33041.table\
-	bufr/tables/0/wmo/13/codetables/33042.table\
-	bufr/tables/0/wmo/13/codetables/33043.table\
-	bufr/tables/0/wmo/13/codetables/33044.table\
-	bufr/tables/0/wmo/13/codetables/33047.table\
-	bufr/tables/0/wmo/13/codetables/33048.table\
-	bufr/tables/0/wmo/13/codetables/33049.table\
-	bufr/tables/0/wmo/13/codetables/33050.table\
-	bufr/tables/0/wmo/13/codetables/33052.table\
-	bufr/tables/0/wmo/13/codetables/33053.table\
-	bufr/tables/0/wmo/13/codetables/33060.table\
-	bufr/tables/0/wmo/13/codetables/35000.table\
-	bufr/tables/0/wmo/13/codetables/35001.table\
-	bufr/tables/0/wmo/13/codetables/35030.table\
-	bufr/tables/0/wmo/13/codetables/35031.table\
-	bufr/tables/0/wmo/13/codetables/35032.table\
-	bufr/tables/0/wmo/13/codetables/35033.table\
-	bufr/tables/0/wmo/13/codetables/35034.table\
-	bufr/tables/0/wmo/13/codetables/40011.table\
-	bufr/tables/0/wmo/13/codetables/40012.table\
-	bufr/tables/0/wmo/13/codetables/40013.table\
-	bufr/tables/0/wmo/13/codetables/4059.table\
-	bufr/tables/0/wmo/13/codetables/8001.table\
-	bufr/tables/0/wmo/13/codetables/8002.table\
-	bufr/tables/0/wmo/13/codetables/8003.table\
-	bufr/tables/0/wmo/13/codetables/8004.table\
-	bufr/tables/0/wmo/13/codetables/8005.table\
-	bufr/tables/0/wmo/13/codetables/8006.table\
-	bufr/tables/0/wmo/13/codetables/8007.table\
-	bufr/tables/0/wmo/13/codetables/8008.table\
-	bufr/tables/0/wmo/13/codetables/8009.table\
-	bufr/tables/0/wmo/13/codetables/8010.table\
-	bufr/tables/0/wmo/13/codetables/8011.table\
-	bufr/tables/0/wmo/13/codetables/8012.table\
-	bufr/tables/0/wmo/13/codetables/8013.table\
-	bufr/tables/0/wmo/13/codetables/8014.table\
-	bufr/tables/0/wmo/13/codetables/8016.table\
-	bufr/tables/0/wmo/13/codetables/8017.table\
-	bufr/tables/0/wmo/13/codetables/8018.table\
-	bufr/tables/0/wmo/13/codetables/8021.table\
-	bufr/tables/0/wmo/13/codetables/8023.table\
-	bufr/tables/0/wmo/13/codetables/8024.table\
-	bufr/tables/0/wmo/13/codetables/8025.table\
-	bufr/tables/0/wmo/13/codetables/8026.table\
-	bufr/tables/0/wmo/13/codetables/8029.table\
-	bufr/tables/0/wmo/13/codetables/8033.table\
-	bufr/tables/0/wmo/13/codetables/8035.table\
-	bufr/tables/0/wmo/13/codetables/8036.table\
-	bufr/tables/0/wmo/13/codetables/8039.table\
-	bufr/tables/0/wmo/13/codetables/8040.table\
-	bufr/tables/0/wmo/13/codetables/8041.table\
-	bufr/tables/0/wmo/13/codetables/8042.table\
-	bufr/tables/0/wmo/13/codetables/8043.table\
-	bufr/tables/0/wmo/13/codetables/8050.table\
-	bufr/tables/0/wmo/13/codetables/8051.table\
-	bufr/tables/0/wmo/13/codetables/8052.table\
-	bufr/tables/0/wmo/13/codetables/8053.table\
-	bufr/tables/0/wmo/13/codetables/8054.table\
-	bufr/tables/0/wmo/13/codetables/8060.table\
-	bufr/tables/0/wmo/13/codetables/8065.table\
-	bufr/tables/0/wmo/13/codetables/8066.table\
-	bufr/tables/0/wmo/13/codetables/8070.table\
-	bufr/tables/0/wmo/13/codetables/8072.table\
-	bufr/tables/0/wmo/13/codetables/8074.table\
-	bufr/tables/0/wmo/13/codetables/8075.table\
-	bufr/tables/0/wmo/13/codetables/8076.table\
-	bufr/tables/0/wmo/13/codetables/8077.table\
-	bufr/tables/0/wmo/13/codetables/8079.table\
-	bufr/tables/0/wmo/13/codetables/8080.table\
-	bufr/tables/0/wmo/13/codetables/8081.table\
-	bufr/tables/0/wmo/13/codetables/8082.table\
-	bufr/tables/0/wmo/13/codetables/8083.table\
-	bufr/tables/0/wmo/13/codetables/8085.table
-
-definitionsbufr_tables_0_wmo_14dir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/14
-dist_definitionsbufr_tables_0_wmo_14_DATA = \
-	bufr/tables/0/wmo/14/element.table\
-	bufr/tables/0/wmo/14/sequence.def
-
-definitionsbufr_tables_0_wmo_14_codetablesdir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/14/codetables
-dist_definitionsbufr_tables_0_wmo_14_codetables_DATA = \
-	bufr/tables/0/wmo/14/codetables/1003.table\
-	bufr/tables/0/wmo/14/codetables/10063.table\
-	bufr/tables/0/wmo/14/codetables/10064.table\
-	bufr/tables/0/wmo/14/codetables/1007.table\
-	bufr/tables/0/wmo/14/codetables/1031.table\
-	bufr/tables/0/wmo/14/codetables/1032.table\
-	bufr/tables/0/wmo/14/codetables/1033.table\
-	bufr/tables/0/wmo/14/codetables/1035.table\
-	bufr/tables/0/wmo/14/codetables/1090.table\
-	bufr/tables/0/wmo/14/codetables/1092.table\
-	bufr/tables/0/wmo/14/codetables/11031.table\
-	bufr/tables/0/wmo/14/codetables/11037.table\
-	bufr/tables/0/wmo/14/codetables/11038.table\
-	bufr/tables/0/wmo/14/codetables/11039.table\
-	bufr/tables/0/wmo/14/codetables/13038.table\
-	bufr/tables/0/wmo/14/codetables/13039.table\
-	bufr/tables/0/wmo/14/codetables/13040.table\
-	bufr/tables/0/wmo/14/codetables/13041.table\
-	bufr/tables/0/wmo/14/codetables/13051.table\
-	bufr/tables/0/wmo/14/codetables/13056.table\
-	bufr/tables/0/wmo/14/codetables/13057.table\
-	bufr/tables/0/wmo/14/codetables/15025.table\
-	bufr/tables/0/wmo/14/codetables/19001.table\
-	bufr/tables/0/wmo/14/codetables/19008.table\
-	bufr/tables/0/wmo/14/codetables/19010.table\
-	bufr/tables/0/wmo/14/codetables/20003.table\
-	bufr/tables/0/wmo/14/codetables/20004.table\
-	bufr/tables/0/wmo/14/codetables/20005.table\
-	bufr/tables/0/wmo/14/codetables/20008.table\
-	bufr/tables/0/wmo/14/codetables/20009.table\
-	bufr/tables/0/wmo/14/codetables/2001.table\
-	bufr/tables/0/wmo/14/codetables/20011.table\
-	bufr/tables/0/wmo/14/codetables/20012.table\
-	bufr/tables/0/wmo/14/codetables/20017.table\
-	bufr/tables/0/wmo/14/codetables/20018.table\
-	bufr/tables/0/wmo/14/codetables/2002.table\
-	bufr/tables/0/wmo/14/codetables/20021.table\
-	bufr/tables/0/wmo/14/codetables/20022.table\
-	bufr/tables/0/wmo/14/codetables/20023.table\
-	bufr/tables/0/wmo/14/codetables/20024.table\
-	bufr/tables/0/wmo/14/codetables/20025.table\
-	bufr/tables/0/wmo/14/codetables/20026.table\
-	bufr/tables/0/wmo/14/codetables/20027.table\
-	bufr/tables/0/wmo/14/codetables/20029.table\
-	bufr/tables/0/wmo/14/codetables/2003.table\
-	bufr/tables/0/wmo/14/codetables/20032.table\
-	bufr/tables/0/wmo/14/codetables/20033.table\
-	bufr/tables/0/wmo/14/codetables/20034.table\
-	bufr/tables/0/wmo/14/codetables/20035.table\
-	bufr/tables/0/wmo/14/codetables/20036.table\
-	bufr/tables/0/wmo/14/codetables/20037.table\
-	bufr/tables/0/wmo/14/codetables/2004.table\
-	bufr/tables/0/wmo/14/codetables/20040.table\
-	bufr/tables/0/wmo/14/codetables/20041.table\
-	bufr/tables/0/wmo/14/codetables/20042.table\
-	bufr/tables/0/wmo/14/codetables/20045.table\
-	bufr/tables/0/wmo/14/codetables/20050.table\
-	bufr/tables/0/wmo/14/codetables/20055.table\
-	bufr/tables/0/wmo/14/codetables/20056.table\
-	bufr/tables/0/wmo/14/codetables/20062.table\
-	bufr/tables/0/wmo/14/codetables/20063.table\
-	bufr/tables/0/wmo/14/codetables/20071.table\
-	bufr/tables/0/wmo/14/codetables/20086.table\
-	bufr/tables/0/wmo/14/codetables/20090.table\
-	bufr/tables/0/wmo/14/codetables/20101.table\
-	bufr/tables/0/wmo/14/codetables/20102.table\
-	bufr/tables/0/wmo/14/codetables/2011.table\
-	bufr/tables/0/wmo/14/codetables/2012.table\
-	bufr/tables/0/wmo/14/codetables/2013.table\
-	bufr/tables/0/wmo/14/codetables/2014.table\
-	bufr/tables/0/wmo/14/codetables/2015.table\
-	bufr/tables/0/wmo/14/codetables/2016.table\
-	bufr/tables/0/wmo/14/codetables/2019.table\
-	bufr/tables/0/wmo/14/codetables/2020.table\
-	bufr/tables/0/wmo/14/codetables/2021.table\
-	bufr/tables/0/wmo/14/codetables/2022.table\
-	bufr/tables/0/wmo/14/codetables/2023.table\
-	bufr/tables/0/wmo/14/codetables/2024.table\
-	bufr/tables/0/wmo/14/codetables/2025.table\
-	bufr/tables/0/wmo/14/codetables/2030.table\
-	bufr/tables/0/wmo/14/codetables/2031.table\
-	bufr/tables/0/wmo/14/codetables/2032.table\
-	bufr/tables/0/wmo/14/codetables/2033.table\
-	bufr/tables/0/wmo/14/codetables/2034.table\
-	bufr/tables/0/wmo/14/codetables/2036.table\
-	bufr/tables/0/wmo/14/codetables/2037.table\
-	bufr/tables/0/wmo/14/codetables/2038.table\
-	bufr/tables/0/wmo/14/codetables/2039.table\
-	bufr/tables/0/wmo/14/codetables/2040.table\
-	bufr/tables/0/wmo/14/codetables/2041.table\
-	bufr/tables/0/wmo/14/codetables/2044.table\
-	bufr/tables/0/wmo/14/codetables/2045.table\
-	bufr/tables/0/wmo/14/codetables/2046.table\
-	bufr/tables/0/wmo/14/codetables/2048.table\
-	bufr/tables/0/wmo/14/codetables/2049.table\
-	bufr/tables/0/wmo/14/codetables/2050.table\
-	bufr/tables/0/wmo/14/codetables/2051.table\
-	bufr/tables/0/wmo/14/codetables/2052.table\
-	bufr/tables/0/wmo/14/codetables/2053.table\
-	bufr/tables/0/wmo/14/codetables/2054.table\
-	bufr/tables/0/wmo/14/codetables/2055.table\
-	bufr/tables/0/wmo/14/codetables/2056.table\
-	bufr/tables/0/wmo/14/codetables/2057.table\
-	bufr/tables/0/wmo/14/codetables/2058.table\
-	bufr/tables/0/wmo/14/codetables/2059.table\
-	bufr/tables/0/wmo/14/codetables/2060.table\
-	bufr/tables/0/wmo/14/codetables/2061.table\
-	bufr/tables/0/wmo/14/codetables/2062.table\
-	bufr/tables/0/wmo/14/codetables/2064.table\
-	bufr/tables/0/wmo/14/codetables/2066.table\
-	bufr/tables/0/wmo/14/codetables/2070.table\
-	bufr/tables/0/wmo/14/codetables/2080.table\
-	bufr/tables/0/wmo/14/codetables/2081.table\
-	bufr/tables/0/wmo/14/codetables/2083.table\
-	bufr/tables/0/wmo/14/codetables/2084.table\
-	bufr/tables/0/wmo/14/codetables/2095.table\
-	bufr/tables/0/wmo/14/codetables/2096.table\
-	bufr/tables/0/wmo/14/codetables/2097.table\
-	bufr/tables/0/wmo/14/codetables/2101.table\
-	bufr/tables/0/wmo/14/codetables/2103.table\
-	bufr/tables/0/wmo/14/codetables/2104.table\
-	bufr/tables/0/wmo/14/codetables/21066.table\
-	bufr/tables/0/wmo/14/codetables/21067.table\
-	bufr/tables/0/wmo/14/codetables/21068.table\
-	bufr/tables/0/wmo/14/codetables/21069.table\
-	bufr/tables/0/wmo/14/codetables/21070.table\
-	bufr/tables/0/wmo/14/codetables/21072.table\
-	bufr/tables/0/wmo/14/codetables/21073.table\
-	bufr/tables/0/wmo/14/codetables/21076.table\
-	bufr/tables/0/wmo/14/codetables/21109.table\
-	bufr/tables/0/wmo/14/codetables/21115.table\
-	bufr/tables/0/wmo/14/codetables/21116.table\
-	bufr/tables/0/wmo/14/codetables/21119.table\
-	bufr/tables/0/wmo/14/codetables/21144.table\
-	bufr/tables/0/wmo/14/codetables/2115.table\
-	bufr/tables/0/wmo/14/codetables/21150.table\
-	bufr/tables/0/wmo/14/codetables/21155.table\
-	bufr/tables/0/wmo/14/codetables/21158.table\
-	bufr/tables/0/wmo/14/codetables/21159.table\
-	bufr/tables/0/wmo/14/codetables/21169.table\
-	bufr/tables/0/wmo/14/codetables/2119.table\
-	bufr/tables/0/wmo/14/codetables/2131.table\
-	bufr/tables/0/wmo/14/codetables/2143.table\
-	bufr/tables/0/wmo/14/codetables/2144.table\
-	bufr/tables/0/wmo/14/codetables/2145.table\
-	bufr/tables/0/wmo/14/codetables/2146.table\
-	bufr/tables/0/wmo/14/codetables/2148.table\
-	bufr/tables/0/wmo/14/codetables/2149.table\
-	bufr/tables/0/wmo/14/codetables/2150.table\
-	bufr/tables/0/wmo/14/codetables/2151.table\
-	bufr/tables/0/wmo/14/codetables/2152.table\
-	bufr/tables/0/wmo/14/codetables/2158.table\
-	bufr/tables/0/wmo/14/codetables/2159.table\
-	bufr/tables/0/wmo/14/codetables/2163.table\
-	bufr/tables/0/wmo/14/codetables/2164.table\
-	bufr/tables/0/wmo/14/codetables/2166.table\
-	bufr/tables/0/wmo/14/codetables/2167.table\
-	bufr/tables/0/wmo/14/codetables/2169.table\
-	bufr/tables/0/wmo/14/codetables/2172.table\
-	bufr/tables/0/wmo/14/codetables/2175.table\
-	bufr/tables/0/wmo/14/codetables/2176.table\
-	bufr/tables/0/wmo/14/codetables/2177.table\
-	bufr/tables/0/wmo/14/codetables/2178.table\
-	bufr/tables/0/wmo/14/codetables/2179.table\
-	bufr/tables/0/wmo/14/codetables/2180.table\
-	bufr/tables/0/wmo/14/codetables/2181.table\
-	bufr/tables/0/wmo/14/codetables/2182.table\
-	bufr/tables/0/wmo/14/codetables/2183.table\
-	bufr/tables/0/wmo/14/codetables/2184.table\
-	bufr/tables/0/wmo/14/codetables/2185.table\
-	bufr/tables/0/wmo/14/codetables/2186.table\
-	bufr/tables/0/wmo/14/codetables/2187.table\
-	bufr/tables/0/wmo/14/codetables/2188.table\
-	bufr/tables/0/wmo/14/codetables/2189.table\
-	bufr/tables/0/wmo/14/codetables/22056.table\
-	bufr/tables/0/wmo/14/codetables/22060.table\
-	bufr/tables/0/wmo/14/codetables/22061.table\
-	bufr/tables/0/wmo/14/codetables/22067.table\
-	bufr/tables/0/wmo/14/codetables/22068.table\
-	bufr/tables/0/wmo/14/codetables/22120.table\
-	bufr/tables/0/wmo/14/codetables/22121.table\
-	bufr/tables/0/wmo/14/codetables/22122.table\
-	bufr/tables/0/wmo/14/codetables/22123.table\
-	bufr/tables/0/wmo/14/codetables/23001.table\
-	bufr/tables/0/wmo/14/codetables/23002.table\
-	bufr/tables/0/wmo/14/codetables/23003.table\
-	bufr/tables/0/wmo/14/codetables/23004.table\
-	bufr/tables/0/wmo/14/codetables/23005.table\
-	bufr/tables/0/wmo/14/codetables/23006.table\
-	bufr/tables/0/wmo/14/codetables/23007.table\
-	bufr/tables/0/wmo/14/codetables/23008.table\
-	bufr/tables/0/wmo/14/codetables/23009.table\
-	bufr/tables/0/wmo/14/codetables/23016.table\
-	bufr/tables/0/wmo/14/codetables/23018.table\
-	bufr/tables/0/wmo/14/codetables/23031.table\
-	bufr/tables/0/wmo/14/codetables/23032.table\
-	bufr/tables/0/wmo/14/codetables/24003.table\
-	bufr/tables/0/wmo/14/codetables/25004.table\
-	bufr/tables/0/wmo/14/codetables/25005.table\
-	bufr/tables/0/wmo/14/codetables/25006.table\
-	bufr/tables/0/wmo/14/codetables/25009.table\
-	bufr/tables/0/wmo/14/codetables/25010.table\
-	bufr/tables/0/wmo/14/codetables/25011.table\
-	bufr/tables/0/wmo/14/codetables/25012.table\
-	bufr/tables/0/wmo/14/codetables/25013.table\
-	bufr/tables/0/wmo/14/codetables/25015.table\
-	bufr/tables/0/wmo/14/codetables/25017.table\
-	bufr/tables/0/wmo/14/codetables/25020.table\
-	bufr/tables/0/wmo/14/codetables/25021.table\
-	bufr/tables/0/wmo/14/codetables/25030.table\
-	bufr/tables/0/wmo/14/codetables/25032.table\
-	bufr/tables/0/wmo/14/codetables/25033.table\
-	bufr/tables/0/wmo/14/codetables/25034.table\
-	bufr/tables/0/wmo/14/codetables/25036.table\
-	bufr/tables/0/wmo/14/codetables/25040.table\
-	bufr/tables/0/wmo/14/codetables/25041.table\
-	bufr/tables/0/wmo/14/codetables/25042.table\
-	bufr/tables/0/wmo/14/codetables/25045.table\
-	bufr/tables/0/wmo/14/codetables/25046.table\
-	bufr/tables/0/wmo/14/codetables/25047.table\
-	bufr/tables/0/wmo/14/codetables/25048.table\
-	bufr/tables/0/wmo/14/codetables/25049.table\
-	bufr/tables/0/wmo/14/codetables/25051.table\
-	bufr/tables/0/wmo/14/codetables/25053.table\
-	bufr/tables/0/wmo/14/codetables/25069.table\
-	bufr/tables/0/wmo/14/codetables/25086.table\
-	bufr/tables/0/wmo/14/codetables/25093.table\
-	bufr/tables/0/wmo/14/codetables/25095.table\
-	bufr/tables/0/wmo/14/codetables/25096.table\
-	bufr/tables/0/wmo/14/codetables/25097.table\
-	bufr/tables/0/wmo/14/codetables/25098.table\
-	bufr/tables/0/wmo/14/codetables/25099.table\
-	bufr/tables/0/wmo/14/codetables/25110.table\
-	bufr/tables/0/wmo/14/codetables/25120.table\
-	bufr/tables/0/wmo/14/codetables/25122.table\
-	bufr/tables/0/wmo/14/codetables/25123.table\
-	bufr/tables/0/wmo/14/codetables/25124.table\
-	bufr/tables/0/wmo/14/codetables/26010.table\
-	bufr/tables/0/wmo/14/codetables/29001.table\
-	bufr/tables/0/wmo/14/codetables/29002.table\
-	bufr/tables/0/wmo/14/codetables/30031.table\
-	bufr/tables/0/wmo/14/codetables/30032.table\
-	bufr/tables/0/wmo/14/codetables/31021.table\
-	bufr/tables/0/wmo/14/codetables/31031.table\
-	bufr/tables/0/wmo/14/codetables/33002.table\
-	bufr/tables/0/wmo/14/codetables/33003.table\
-	bufr/tables/0/wmo/14/codetables/33005.table\
-	bufr/tables/0/wmo/14/codetables/33006.table\
-	bufr/tables/0/wmo/14/codetables/33015.table\
-	bufr/tables/0/wmo/14/codetables/33020.table\
-	bufr/tables/0/wmo/14/codetables/33021.table\
-	bufr/tables/0/wmo/14/codetables/33022.table\
-	bufr/tables/0/wmo/14/codetables/33023.table\
-	bufr/tables/0/wmo/14/codetables/33024.table\
-	bufr/tables/0/wmo/14/codetables/33025.table\
-	bufr/tables/0/wmo/14/codetables/33026.table\
-	bufr/tables/0/wmo/14/codetables/33027.table\
-	bufr/tables/0/wmo/14/codetables/33028.table\
-	bufr/tables/0/wmo/14/codetables/33030.table\
-	bufr/tables/0/wmo/14/codetables/33031.table\
-	bufr/tables/0/wmo/14/codetables/33032.table\
-	bufr/tables/0/wmo/14/codetables/33033.table\
-	bufr/tables/0/wmo/14/codetables/33035.table\
-	bufr/tables/0/wmo/14/codetables/33037.table\
-	bufr/tables/0/wmo/14/codetables/33038.table\
-	bufr/tables/0/wmo/14/codetables/33039.table\
-	bufr/tables/0/wmo/14/codetables/33041.table\
-	bufr/tables/0/wmo/14/codetables/33042.table\
-	bufr/tables/0/wmo/14/codetables/33043.table\
-	bufr/tables/0/wmo/14/codetables/33044.table\
-	bufr/tables/0/wmo/14/codetables/33047.table\
-	bufr/tables/0/wmo/14/codetables/33048.table\
-	bufr/tables/0/wmo/14/codetables/33049.table\
-	bufr/tables/0/wmo/14/codetables/33050.table\
-	bufr/tables/0/wmo/14/codetables/33052.table\
-	bufr/tables/0/wmo/14/codetables/33053.table\
-	bufr/tables/0/wmo/14/codetables/33060.table\
-	bufr/tables/0/wmo/14/codetables/33075.table\
-	bufr/tables/0/wmo/14/codetables/33076.table\
-	bufr/tables/0/wmo/14/codetables/33077.table\
-	bufr/tables/0/wmo/14/codetables/33078.table\
-	bufr/tables/0/wmo/14/codetables/35000.table\
-	bufr/tables/0/wmo/14/codetables/35001.table\
-	bufr/tables/0/wmo/14/codetables/35030.table\
-	bufr/tables/0/wmo/14/codetables/35031.table\
-	bufr/tables/0/wmo/14/codetables/35032.table\
-	bufr/tables/0/wmo/14/codetables/35033.table\
-	bufr/tables/0/wmo/14/codetables/35034.table\
-	bufr/tables/0/wmo/14/codetables/35035.table\
-	bufr/tables/0/wmo/14/codetables/40011.table\
-	bufr/tables/0/wmo/14/codetables/40012.table\
-	bufr/tables/0/wmo/14/codetables/40013.table\
-	bufr/tables/0/wmo/14/codetables/4059.table\
-	bufr/tables/0/wmo/14/codetables/8001.table\
-	bufr/tables/0/wmo/14/codetables/8002.table\
-	bufr/tables/0/wmo/14/codetables/8003.table\
-	bufr/tables/0/wmo/14/codetables/8004.table\
-	bufr/tables/0/wmo/14/codetables/8005.table\
-	bufr/tables/0/wmo/14/codetables/8006.table\
-	bufr/tables/0/wmo/14/codetables/8007.table\
-	bufr/tables/0/wmo/14/codetables/8008.table\
-	bufr/tables/0/wmo/14/codetables/8009.table\
-	bufr/tables/0/wmo/14/codetables/8010.table\
-	bufr/tables/0/wmo/14/codetables/8011.table\
-	bufr/tables/0/wmo/14/codetables/8012.table\
-	bufr/tables/0/wmo/14/codetables/8013.table\
-	bufr/tables/0/wmo/14/codetables/8014.table\
-	bufr/tables/0/wmo/14/codetables/8016.table\
-	bufr/tables/0/wmo/14/codetables/8017.table\
-	bufr/tables/0/wmo/14/codetables/8018.table\
-	bufr/tables/0/wmo/14/codetables/8021.table\
-	bufr/tables/0/wmo/14/codetables/8023.table\
-	bufr/tables/0/wmo/14/codetables/8024.table\
-	bufr/tables/0/wmo/14/codetables/8025.table\
-	bufr/tables/0/wmo/14/codetables/8026.table\
-	bufr/tables/0/wmo/14/codetables/8029.table\
-	bufr/tables/0/wmo/14/codetables/8033.table\
-	bufr/tables/0/wmo/14/codetables/8035.table\
-	bufr/tables/0/wmo/14/codetables/8036.table\
-	bufr/tables/0/wmo/14/codetables/8039.table\
-	bufr/tables/0/wmo/14/codetables/8040.table\
-	bufr/tables/0/wmo/14/codetables/8041.table\
-	bufr/tables/0/wmo/14/codetables/8042.table\
-	bufr/tables/0/wmo/14/codetables/8043.table\
-	bufr/tables/0/wmo/14/codetables/8050.table\
-	bufr/tables/0/wmo/14/codetables/8051.table\
-	bufr/tables/0/wmo/14/codetables/8052.table\
-	bufr/tables/0/wmo/14/codetables/8053.table\
-	bufr/tables/0/wmo/14/codetables/8054.table\
-	bufr/tables/0/wmo/14/codetables/8060.table\
-	bufr/tables/0/wmo/14/codetables/8065.table\
-	bufr/tables/0/wmo/14/codetables/8066.table\
-	bufr/tables/0/wmo/14/codetables/8070.table\
-	bufr/tables/0/wmo/14/codetables/8072.table\
-	bufr/tables/0/wmo/14/codetables/8074.table\
-	bufr/tables/0/wmo/14/codetables/8075.table\
-	bufr/tables/0/wmo/14/codetables/8076.table\
-	bufr/tables/0/wmo/14/codetables/8077.table\
-	bufr/tables/0/wmo/14/codetables/8079.table\
-	bufr/tables/0/wmo/14/codetables/8080.table\
-	bufr/tables/0/wmo/14/codetables/8081.table\
-	bufr/tables/0/wmo/14/codetables/8082.table\
-	bufr/tables/0/wmo/14/codetables/8083.table\
-	bufr/tables/0/wmo/14/codetables/8085.table
-
-definitionsbufr_tables_0_wmo_15dir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/15
-dist_definitionsbufr_tables_0_wmo_15_DATA = \
-	bufr/tables/0/wmo/15/element.table\
-	bufr/tables/0/wmo/15/sequence.def
-
-definitionsbufr_tables_0_wmo_15_codetablesdir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/15/codetables
-dist_definitionsbufr_tables_0_wmo_15_codetables_DATA = \
-	bufr/tables/0/wmo/15/codetables/1003.table\
-	bufr/tables/0/wmo/15/codetables/10063.table\
-	bufr/tables/0/wmo/15/codetables/10064.table\
-	bufr/tables/0/wmo/15/codetables/1007.table\
-	bufr/tables/0/wmo/15/codetables/1024.table\
-	bufr/tables/0/wmo/15/codetables/1028.table\
-	bufr/tables/0/wmo/15/codetables/1029.table\
-	bufr/tables/0/wmo/15/codetables/1033.table\
-	bufr/tables/0/wmo/15/codetables/1034.table\
-	bufr/tables/0/wmo/15/codetables/1036.table\
-	bufr/tables/0/wmo/15/codetables/1038.table\
-	bufr/tables/0/wmo/15/codetables/1052.table\
-	bufr/tables/0/wmo/15/codetables/1090.table\
-	bufr/tables/0/wmo/15/codetables/1092.table\
-	bufr/tables/0/wmo/15/codetables/1101.table\
-	bufr/tables/0/wmo/15/codetables/11030.table\
-	bufr/tables/0/wmo/15/codetables/11031.table\
-	bufr/tables/0/wmo/15/codetables/11037.table\
-	bufr/tables/0/wmo/15/codetables/11038.table\
-	bufr/tables/0/wmo/15/codetables/11039.table\
-	bufr/tables/0/wmo/15/codetables/13038.table\
-	bufr/tables/0/wmo/15/codetables/13039.table\
-	bufr/tables/0/wmo/15/codetables/13040.table\
-	bufr/tables/0/wmo/15/codetables/13041.table\
-	bufr/tables/0/wmo/15/codetables/13051.table\
-	bufr/tables/0/wmo/15/codetables/13056.table\
-	bufr/tables/0/wmo/15/codetables/13057.table\
-	bufr/tables/0/wmo/15/codetables/15025.table\
-	bufr/tables/0/wmo/15/codetables/19001.table\
-	bufr/tables/0/wmo/15/codetables/19008.table\
-	bufr/tables/0/wmo/15/codetables/19010.table\
-	bufr/tables/0/wmo/15/codetables/19100.table\
-	bufr/tables/0/wmo/15/codetables/19101.table\
-	bufr/tables/0/wmo/15/codetables/19102.table\
-	bufr/tables/0/wmo/15/codetables/19103.table\
-	bufr/tables/0/wmo/15/codetables/19104.table\
-	bufr/tables/0/wmo/15/codetables/19105.table\
-	bufr/tables/0/wmo/15/codetables/19107.table\
-	bufr/tables/0/wmo/15/codetables/19108.table\
-	bufr/tables/0/wmo/15/codetables/19109.table\
-	bufr/tables/0/wmo/15/codetables/19110.table\
-	bufr/tables/0/wmo/15/codetables/19113.table\
-	bufr/tables/0/wmo/15/codetables/19117.table\
-	bufr/tables/0/wmo/15/codetables/19119.table\
-	bufr/tables/0/wmo/15/codetables/20003.table\
-	bufr/tables/0/wmo/15/codetables/20004.table\
-	bufr/tables/0/wmo/15/codetables/20005.table\
-	bufr/tables/0/wmo/15/codetables/20006.table\
-	bufr/tables/0/wmo/15/codetables/20008.table\
-	bufr/tables/0/wmo/15/codetables/20009.table\
-	bufr/tables/0/wmo/15/codetables/2001.table\
-	bufr/tables/0/wmo/15/codetables/20011.table\
-	bufr/tables/0/wmo/15/codetables/20012.table\
-	bufr/tables/0/wmo/15/codetables/20017.table\
-	bufr/tables/0/wmo/15/codetables/20018.table\
-	bufr/tables/0/wmo/15/codetables/2002.table\
-	bufr/tables/0/wmo/15/codetables/20021.table\
-	bufr/tables/0/wmo/15/codetables/20022.table\
-	bufr/tables/0/wmo/15/codetables/20023.table\
-	bufr/tables/0/wmo/15/codetables/20024.table\
-	bufr/tables/0/wmo/15/codetables/20025.table\
-	bufr/tables/0/wmo/15/codetables/20026.table\
-	bufr/tables/0/wmo/15/codetables/20027.table\
-	bufr/tables/0/wmo/15/codetables/20028.table\
-	bufr/tables/0/wmo/15/codetables/20029.table\
-	bufr/tables/0/wmo/15/codetables/2003.table\
-	bufr/tables/0/wmo/15/codetables/20032.table\
-	bufr/tables/0/wmo/15/codetables/20033.table\
-	bufr/tables/0/wmo/15/codetables/20034.table\
-	bufr/tables/0/wmo/15/codetables/20035.table\
-	bufr/tables/0/wmo/15/codetables/20036.table\
-	bufr/tables/0/wmo/15/codetables/20037.table\
-	bufr/tables/0/wmo/15/codetables/2004.table\
-	bufr/tables/0/wmo/15/codetables/20040.table\
-	bufr/tables/0/wmo/15/codetables/20041.table\
-	bufr/tables/0/wmo/15/codetables/20042.table\
-	bufr/tables/0/wmo/15/codetables/20045.table\
-	bufr/tables/0/wmo/15/codetables/20048.table\
-	bufr/tables/0/wmo/15/codetables/20050.table\
-	bufr/tables/0/wmo/15/codetables/20055.table\
-	bufr/tables/0/wmo/15/codetables/20056.table\
-	bufr/tables/0/wmo/15/codetables/20062.table\
-	bufr/tables/0/wmo/15/codetables/20063.table\
-	bufr/tables/0/wmo/15/codetables/20071.table\
-	bufr/tables/0/wmo/15/codetables/20085.table\
-	bufr/tables/0/wmo/15/codetables/20086.table\
-	bufr/tables/0/wmo/15/codetables/20087.table\
-	bufr/tables/0/wmo/15/codetables/20089.table\
-	bufr/tables/0/wmo/15/codetables/20090.table\
-	bufr/tables/0/wmo/15/codetables/20101.table\
-	bufr/tables/0/wmo/15/codetables/20102.table\
-	bufr/tables/0/wmo/15/codetables/20103.table\
-	bufr/tables/0/wmo/15/codetables/20104.table\
-	bufr/tables/0/wmo/15/codetables/20105.table\
-	bufr/tables/0/wmo/15/codetables/20106.table\
-	bufr/tables/0/wmo/15/codetables/20107.table\
-	bufr/tables/0/wmo/15/codetables/20108.table\
-	bufr/tables/0/wmo/15/codetables/2011.table\
-	bufr/tables/0/wmo/15/codetables/20119.table\
-	bufr/tables/0/wmo/15/codetables/20124.table\
-	bufr/tables/0/wmo/15/codetables/2013.table\
-	bufr/tables/0/wmo/15/codetables/20136.table\
-	bufr/tables/0/wmo/15/codetables/20137.table\
-	bufr/tables/0/wmo/15/codetables/2014.table\
-	bufr/tables/0/wmo/15/codetables/2015.table\
-	bufr/tables/0/wmo/15/codetables/2016.table\
-	bufr/tables/0/wmo/15/codetables/2019.table\
-	bufr/tables/0/wmo/15/codetables/2020.table\
-	bufr/tables/0/wmo/15/codetables/2021.table\
-	bufr/tables/0/wmo/15/codetables/2022.table\
-	bufr/tables/0/wmo/15/codetables/2023.table\
-	bufr/tables/0/wmo/15/codetables/2024.table\
-	bufr/tables/0/wmo/15/codetables/2025.table\
-	bufr/tables/0/wmo/15/codetables/2030.table\
-	bufr/tables/0/wmo/15/codetables/2031.table\
-	bufr/tables/0/wmo/15/codetables/2032.table\
-	bufr/tables/0/wmo/15/codetables/2033.table\
-	bufr/tables/0/wmo/15/codetables/2034.table\
-	bufr/tables/0/wmo/15/codetables/2036.table\
-	bufr/tables/0/wmo/15/codetables/2037.table\
-	bufr/tables/0/wmo/15/codetables/2038.table\
-	bufr/tables/0/wmo/15/codetables/2039.table\
-	bufr/tables/0/wmo/15/codetables/2040.table\
-	bufr/tables/0/wmo/15/codetables/2041.table\
-	bufr/tables/0/wmo/15/codetables/2042.table\
-	bufr/tables/0/wmo/15/codetables/2044.table\
-	bufr/tables/0/wmo/15/codetables/2045.table\
-	bufr/tables/0/wmo/15/codetables/2046.table\
-	bufr/tables/0/wmo/15/codetables/2047.table\
-	bufr/tables/0/wmo/15/codetables/2048.table\
-	bufr/tables/0/wmo/15/codetables/2049.table\
-	bufr/tables/0/wmo/15/codetables/2050.table\
-	bufr/tables/0/wmo/15/codetables/2051.table\
-	bufr/tables/0/wmo/15/codetables/2052.table\
-	bufr/tables/0/wmo/15/codetables/2053.table\
-	bufr/tables/0/wmo/15/codetables/2054.table\
-	bufr/tables/0/wmo/15/codetables/2055.table\
-	bufr/tables/0/wmo/15/codetables/2056.table\
-	bufr/tables/0/wmo/15/codetables/2057.table\
-	bufr/tables/0/wmo/15/codetables/2058.table\
-	bufr/tables/0/wmo/15/codetables/2059.table\
-	bufr/tables/0/wmo/15/codetables/2060.table\
-	bufr/tables/0/wmo/15/codetables/2061.table\
-	bufr/tables/0/wmo/15/codetables/2062.table\
-	bufr/tables/0/wmo/15/codetables/2064.table\
-	bufr/tables/0/wmo/15/codetables/2066.table\
-	bufr/tables/0/wmo/15/codetables/2070.table\
-	bufr/tables/0/wmo/15/codetables/2080.table\
-	bufr/tables/0/wmo/15/codetables/2081.table\
-	bufr/tables/0/wmo/15/codetables/2083.table\
-	bufr/tables/0/wmo/15/codetables/2084.table\
-	bufr/tables/0/wmo/15/codetables/2095.table\
-	bufr/tables/0/wmo/15/codetables/2096.table\
-	bufr/tables/0/wmo/15/codetables/2097.table\
-	bufr/tables/0/wmo/15/codetables/2099.table\
-	bufr/tables/0/wmo/15/codetables/2101.table\
-	bufr/tables/0/wmo/15/codetables/2103.table\
-	bufr/tables/0/wmo/15/codetables/2104.table\
-	bufr/tables/0/wmo/15/codetables/21066.table\
-	bufr/tables/0/wmo/15/codetables/21067.table\
-	bufr/tables/0/wmo/15/codetables/21068.table\
-	bufr/tables/0/wmo/15/codetables/21069.table\
-	bufr/tables/0/wmo/15/codetables/21070.table\
-	bufr/tables/0/wmo/15/codetables/21072.table\
-	bufr/tables/0/wmo/15/codetables/21073.table\
-	bufr/tables/0/wmo/15/codetables/21076.table\
-	bufr/tables/0/wmo/15/codetables/21109.table\
-	bufr/tables/0/wmo/15/codetables/21115.table\
-	bufr/tables/0/wmo/15/codetables/21116.table\
-	bufr/tables/0/wmo/15/codetables/21119.table\
-	bufr/tables/0/wmo/15/codetables/21144.table\
-	bufr/tables/0/wmo/15/codetables/2115.table\
-	bufr/tables/0/wmo/15/codetables/21150.table\
-	bufr/tables/0/wmo/15/codetables/21155.table\
-	bufr/tables/0/wmo/15/codetables/21158.table\
-	bufr/tables/0/wmo/15/codetables/21159.table\
-	bufr/tables/0/wmo/15/codetables/21169.table\
-	bufr/tables/0/wmo/15/codetables/2119.table\
-	bufr/tables/0/wmo/15/codetables/2131.table\
-	bufr/tables/0/wmo/15/codetables/2143.table\
-	bufr/tables/0/wmo/15/codetables/2144.table\
-	bufr/tables/0/wmo/15/codetables/2145.table\
-	bufr/tables/0/wmo/15/codetables/2146.table\
-	bufr/tables/0/wmo/15/codetables/2148.table\
-	bufr/tables/0/wmo/15/codetables/2149.table\
-	bufr/tables/0/wmo/15/codetables/2150.table\
-	bufr/tables/0/wmo/15/codetables/2151.table\
-	bufr/tables/0/wmo/15/codetables/2152.table\
-	bufr/tables/0/wmo/15/codetables/2158.table\
-	bufr/tables/0/wmo/15/codetables/2159.table\
-	bufr/tables/0/wmo/15/codetables/2160.table\
-	bufr/tables/0/wmo/15/codetables/2163.table\
-	bufr/tables/0/wmo/15/codetables/2164.table\
-	bufr/tables/0/wmo/15/codetables/2165.table\
-	bufr/tables/0/wmo/15/codetables/2166.table\
-	bufr/tables/0/wmo/15/codetables/2167.table\
-	bufr/tables/0/wmo/15/codetables/2169.table\
-	bufr/tables/0/wmo/15/codetables/2172.table\
-	bufr/tables/0/wmo/15/codetables/2175.table\
-	bufr/tables/0/wmo/15/codetables/2176.table\
-	bufr/tables/0/wmo/15/codetables/2177.table\
-	bufr/tables/0/wmo/15/codetables/2178.table\
-	bufr/tables/0/wmo/15/codetables/2179.table\
-	bufr/tables/0/wmo/15/codetables/2180.table\
-	bufr/tables/0/wmo/15/codetables/2181.table\
-	bufr/tables/0/wmo/15/codetables/2182.table\
-	bufr/tables/0/wmo/15/codetables/2183.table\
-	bufr/tables/0/wmo/15/codetables/2184.table\
-	bufr/tables/0/wmo/15/codetables/2185.table\
-	bufr/tables/0/wmo/15/codetables/2186.table\
-	bufr/tables/0/wmo/15/codetables/2187.table\
-	bufr/tables/0/wmo/15/codetables/2188.table\
-	bufr/tables/0/wmo/15/codetables/2189.table\
-	bufr/tables/0/wmo/15/codetables/2191.table\
-	bufr/tables/0/wmo/15/codetables/22056.table\
-	bufr/tables/0/wmo/15/codetables/22060.table\
-	bufr/tables/0/wmo/15/codetables/22061.table\
-	bufr/tables/0/wmo/15/codetables/22067.table\
-	bufr/tables/0/wmo/15/codetables/22068.table\
-	bufr/tables/0/wmo/15/codetables/22120.table\
-	bufr/tables/0/wmo/15/codetables/22121.table\
-	bufr/tables/0/wmo/15/codetables/22122.table\
-	bufr/tables/0/wmo/15/codetables/22123.table\
-	bufr/tables/0/wmo/15/codetables/22178.table\
-	bufr/tables/0/wmo/15/codetables/23001.table\
-	bufr/tables/0/wmo/15/codetables/23002.table\
-	bufr/tables/0/wmo/15/codetables/23003.table\
-	bufr/tables/0/wmo/15/codetables/23004.table\
-	bufr/tables/0/wmo/15/codetables/23005.table\
-	bufr/tables/0/wmo/15/codetables/23006.table\
-	bufr/tables/0/wmo/15/codetables/23007.table\
-	bufr/tables/0/wmo/15/codetables/23008.table\
-	bufr/tables/0/wmo/15/codetables/23009.table\
-	bufr/tables/0/wmo/15/codetables/23016.table\
-	bufr/tables/0/wmo/15/codetables/23018.table\
-	bufr/tables/0/wmo/15/codetables/23031.table\
-	bufr/tables/0/wmo/15/codetables/23032.table\
-	bufr/tables/0/wmo/15/codetables/24003.table\
-	bufr/tables/0/wmo/15/codetables/25004.table\
-	bufr/tables/0/wmo/15/codetables/25005.table\
-	bufr/tables/0/wmo/15/codetables/25006.table\
-	bufr/tables/0/wmo/15/codetables/25009.table\
-	bufr/tables/0/wmo/15/codetables/25010.table\
-	bufr/tables/0/wmo/15/codetables/25011.table\
-	bufr/tables/0/wmo/15/codetables/25012.table\
-	bufr/tables/0/wmo/15/codetables/25013.table\
-	bufr/tables/0/wmo/15/codetables/25015.table\
-	bufr/tables/0/wmo/15/codetables/25017.table\
-	bufr/tables/0/wmo/15/codetables/25020.table\
-	bufr/tables/0/wmo/15/codetables/25021.table\
-	bufr/tables/0/wmo/15/codetables/25022.table\
-	bufr/tables/0/wmo/15/codetables/25023.table\
-	bufr/tables/0/wmo/15/codetables/25024.table\
-	bufr/tables/0/wmo/15/codetables/25029.table\
-	bufr/tables/0/wmo/15/codetables/25030.table\
-	bufr/tables/0/wmo/15/codetables/25031.table\
-	bufr/tables/0/wmo/15/codetables/25032.table\
-	bufr/tables/0/wmo/15/codetables/25033.table\
-	bufr/tables/0/wmo/15/codetables/25034.table\
-	bufr/tables/0/wmo/15/codetables/25035.table\
-	bufr/tables/0/wmo/15/codetables/25036.table\
-	bufr/tables/0/wmo/15/codetables/25040.table\
-	bufr/tables/0/wmo/15/codetables/25041.table\
-	bufr/tables/0/wmo/15/codetables/25042.table\
-	bufr/tables/0/wmo/15/codetables/25053.table\
-	bufr/tables/0/wmo/15/codetables/25063.table\
-	bufr/tables/0/wmo/15/codetables/25069.table\
-	bufr/tables/0/wmo/15/codetables/25086.table\
-	bufr/tables/0/wmo/15/codetables/25090.table\
-	bufr/tables/0/wmo/15/codetables/25093.table\
-	bufr/tables/0/wmo/15/codetables/25095.table\
-	bufr/tables/0/wmo/15/codetables/25096.table\
-	bufr/tables/0/wmo/15/codetables/25097.table\
-	bufr/tables/0/wmo/15/codetables/25098.table\
-	bufr/tables/0/wmo/15/codetables/25099.table\
-	bufr/tables/0/wmo/15/codetables/25110.table\
-	bufr/tables/0/wmo/15/codetables/25120.table\
-	bufr/tables/0/wmo/15/codetables/25122.table\
-	bufr/tables/0/wmo/15/codetables/25123.table\
-	bufr/tables/0/wmo/15/codetables/25124.table\
-	bufr/tables/0/wmo/15/codetables/25150.table\
-	bufr/tables/0/wmo/15/codetables/25174.table\
-	bufr/tables/0/wmo/15/codetables/26010.table\
-	bufr/tables/0/wmo/15/codetables/29001.table\
-	bufr/tables/0/wmo/15/codetables/29002.table\
-	bufr/tables/0/wmo/15/codetables/30031.table\
-	bufr/tables/0/wmo/15/codetables/30032.table\
-	bufr/tables/0/wmo/15/codetables/31021.table\
-	bufr/tables/0/wmo/15/codetables/31031.table\
-	bufr/tables/0/wmo/15/codetables/33002.table\
-	bufr/tables/0/wmo/15/codetables/33003.table\
-	bufr/tables/0/wmo/15/codetables/33005.table\
-	bufr/tables/0/wmo/15/codetables/33006.table\
-	bufr/tables/0/wmo/15/codetables/33015.table\
-	bufr/tables/0/wmo/15/codetables/33020.table\
-	bufr/tables/0/wmo/15/codetables/33021.table\
-	bufr/tables/0/wmo/15/codetables/33022.table\
-	bufr/tables/0/wmo/15/codetables/33023.table\
-	bufr/tables/0/wmo/15/codetables/33024.table\
-	bufr/tables/0/wmo/15/codetables/33025.table\
-	bufr/tables/0/wmo/15/codetables/33026.table\
-	bufr/tables/0/wmo/15/codetables/33027.table\
-	bufr/tables/0/wmo/15/codetables/33028.table\
-	bufr/tables/0/wmo/15/codetables/33030.table\
-	bufr/tables/0/wmo/15/codetables/33031.table\
-	bufr/tables/0/wmo/15/codetables/33032.table\
-	bufr/tables/0/wmo/15/codetables/33033.table\
-	bufr/tables/0/wmo/15/codetables/33035.table\
-	bufr/tables/0/wmo/15/codetables/33037.table\
-	bufr/tables/0/wmo/15/codetables/33038.table\
-	bufr/tables/0/wmo/15/codetables/33039.table\
-	bufr/tables/0/wmo/15/codetables/33041.table\
-	bufr/tables/0/wmo/15/codetables/33042.table\
-	bufr/tables/0/wmo/15/codetables/33043.table\
-	bufr/tables/0/wmo/15/codetables/33044.table\
-	bufr/tables/0/wmo/15/codetables/33047.table\
-	bufr/tables/0/wmo/15/codetables/33048.table\
-	bufr/tables/0/wmo/15/codetables/33049.table\
-	bufr/tables/0/wmo/15/codetables/33050.table\
-	bufr/tables/0/wmo/15/codetables/33060.table\
-	bufr/tables/0/wmo/15/codetables/33070.table\
-	bufr/tables/0/wmo/15/codetables/33071.table\
-	bufr/tables/0/wmo/15/codetables/33072.table\
-	bufr/tables/0/wmo/15/codetables/33075.table\
-	bufr/tables/0/wmo/15/codetables/33076.table\
-	bufr/tables/0/wmo/15/codetables/33077.table\
-	bufr/tables/0/wmo/15/codetables/33078.table\
-	bufr/tables/0/wmo/15/codetables/33079.table\
-	bufr/tables/0/wmo/15/codetables/33080.table\
-	bufr/tables/0/wmo/15/codetables/33081.table\
-	bufr/tables/0/wmo/15/codetables/35000.table\
-	bufr/tables/0/wmo/15/codetables/35001.table\
-	bufr/tables/0/wmo/15/codetables/35030.table\
-	bufr/tables/0/wmo/15/codetables/35031.table\
-	bufr/tables/0/wmo/15/codetables/35032.table\
-	bufr/tables/0/wmo/15/codetables/35033.table\
-	bufr/tables/0/wmo/15/codetables/35034.table\
-	bufr/tables/0/wmo/15/codetables/35035.table\
-	bufr/tables/0/wmo/15/codetables/40005.table\
-	bufr/tables/0/wmo/15/codetables/40006.table\
-	bufr/tables/0/wmo/15/codetables/40011.table\
-	bufr/tables/0/wmo/15/codetables/40012.table\
-	bufr/tables/0/wmo/15/codetables/40013.table\
-	bufr/tables/0/wmo/15/codetables/40023.table\
-	bufr/tables/0/wmo/15/codetables/40024.table\
-	bufr/tables/0/wmo/15/codetables/40025.table\
-	bufr/tables/0/wmo/15/codetables/4059.table\
-	bufr/tables/0/wmo/15/codetables/4080.table\
-	bufr/tables/0/wmo/15/codetables/8001.table\
-	bufr/tables/0/wmo/15/codetables/8002.table\
-	bufr/tables/0/wmo/15/codetables/8003.table\
-	bufr/tables/0/wmo/15/codetables/8004.table\
-	bufr/tables/0/wmo/15/codetables/8005.table\
-	bufr/tables/0/wmo/15/codetables/8006.table\
-	bufr/tables/0/wmo/15/codetables/8007.table\
-	bufr/tables/0/wmo/15/codetables/8008.table\
-	bufr/tables/0/wmo/15/codetables/8009.table\
-	bufr/tables/0/wmo/15/codetables/8010.table\
-	bufr/tables/0/wmo/15/codetables/8011.table\
-	bufr/tables/0/wmo/15/codetables/8012.table\
-	bufr/tables/0/wmo/15/codetables/8013.table\
-	bufr/tables/0/wmo/15/codetables/8014.table\
-	bufr/tables/0/wmo/15/codetables/8016.table\
-	bufr/tables/0/wmo/15/codetables/8017.table\
-	bufr/tables/0/wmo/15/codetables/8018.table\
-	bufr/tables/0/wmo/15/codetables/8019.table\
-	bufr/tables/0/wmo/15/codetables/8021.table\
-	bufr/tables/0/wmo/15/codetables/8023.table\
-	bufr/tables/0/wmo/15/codetables/8024.table\
-	bufr/tables/0/wmo/15/codetables/8025.table\
-	bufr/tables/0/wmo/15/codetables/8026.table\
-	bufr/tables/0/wmo/15/codetables/8029.table\
-	bufr/tables/0/wmo/15/codetables/8033.table\
-	bufr/tables/0/wmo/15/codetables/8035.table\
-	bufr/tables/0/wmo/15/codetables/8036.table\
-	bufr/tables/0/wmo/15/codetables/8039.table\
-	bufr/tables/0/wmo/15/codetables/8040.table\
-	bufr/tables/0/wmo/15/codetables/8041.table\
-	bufr/tables/0/wmo/15/codetables/8042.table\
-	bufr/tables/0/wmo/15/codetables/8043.table\
-	bufr/tables/0/wmo/15/codetables/8050.table\
-	bufr/tables/0/wmo/15/codetables/8051.table\
-	bufr/tables/0/wmo/15/codetables/8052.table\
-	bufr/tables/0/wmo/15/codetables/8053.table\
-	bufr/tables/0/wmo/15/codetables/8054.table\
-	bufr/tables/0/wmo/15/codetables/8060.table\
-	bufr/tables/0/wmo/15/codetables/8065.table\
-	bufr/tables/0/wmo/15/codetables/8066.table\
-	bufr/tables/0/wmo/15/codetables/8070.table\
-	bufr/tables/0/wmo/15/codetables/8072.table\
-	bufr/tables/0/wmo/15/codetables/8074.table\
-	bufr/tables/0/wmo/15/codetables/8075.table\
-	bufr/tables/0/wmo/15/codetables/8076.table\
-	bufr/tables/0/wmo/15/codetables/8077.table\
-	bufr/tables/0/wmo/15/codetables/8079.table\
-	bufr/tables/0/wmo/15/codetables/8080.table\
-	bufr/tables/0/wmo/15/codetables/8081.table\
-	bufr/tables/0/wmo/15/codetables/8082.table\
-	bufr/tables/0/wmo/15/codetables/8083.table\
-	bufr/tables/0/wmo/15/codetables/8085.table\
-	bufr/tables/0/wmo/15/codetables/8086.table
-
-definitionsbufr_tables_0_wmo_16dir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/16
-dist_definitionsbufr_tables_0_wmo_16_DATA = \
-	bufr/tables/0/wmo/16/element.table\
-	bufr/tables/0/wmo/16/sequence.def
-
-definitionsbufr_tables_0_wmo_16_codetablesdir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/16/codetables
-dist_definitionsbufr_tables_0_wmo_16_codetables_DATA = \
-	bufr/tables/0/wmo/16/codetables/1003.table\
-	bufr/tables/0/wmo/16/codetables/10063.table\
-	bufr/tables/0/wmo/16/codetables/10064.table\
-	bufr/tables/0/wmo/16/codetables/1007.table\
-	bufr/tables/0/wmo/16/codetables/1024.table\
-	bufr/tables/0/wmo/16/codetables/1028.table\
-	bufr/tables/0/wmo/16/codetables/1029.table\
-	bufr/tables/0/wmo/16/codetables/1033.table\
-	bufr/tables/0/wmo/16/codetables/1034.table\
-	bufr/tables/0/wmo/16/codetables/1036.table\
-	bufr/tables/0/wmo/16/codetables/1038.table\
-	bufr/tables/0/wmo/16/codetables/1052.table\
-	bufr/tables/0/wmo/16/codetables/1090.table\
-	bufr/tables/0/wmo/16/codetables/1092.table\
-	bufr/tables/0/wmo/16/codetables/1101.table\
-	bufr/tables/0/wmo/16/codetables/11030.table\
-	bufr/tables/0/wmo/16/codetables/11031.table\
-	bufr/tables/0/wmo/16/codetables/11037.table\
-	bufr/tables/0/wmo/16/codetables/11038.table\
-	bufr/tables/0/wmo/16/codetables/11039.table\
-	bufr/tables/0/wmo/16/codetables/13038.table\
-	bufr/tables/0/wmo/16/codetables/13039.table\
-	bufr/tables/0/wmo/16/codetables/13040.table\
-	bufr/tables/0/wmo/16/codetables/13041.table\
-	bufr/tables/0/wmo/16/codetables/13051.table\
-	bufr/tables/0/wmo/16/codetables/13056.table\
-	bufr/tables/0/wmo/16/codetables/13057.table\
-	bufr/tables/0/wmo/16/codetables/15025.table\
-	bufr/tables/0/wmo/16/codetables/19001.table\
-	bufr/tables/0/wmo/16/codetables/19008.table\
-	bufr/tables/0/wmo/16/codetables/19010.table\
-	bufr/tables/0/wmo/16/codetables/19100.table\
-	bufr/tables/0/wmo/16/codetables/19101.table\
-	bufr/tables/0/wmo/16/codetables/19102.table\
-	bufr/tables/0/wmo/16/codetables/19103.table\
-	bufr/tables/0/wmo/16/codetables/19104.table\
-	bufr/tables/0/wmo/16/codetables/19105.table\
-	bufr/tables/0/wmo/16/codetables/19107.table\
-	bufr/tables/0/wmo/16/codetables/19108.table\
-	bufr/tables/0/wmo/16/codetables/19109.table\
-	bufr/tables/0/wmo/16/codetables/19110.table\
-	bufr/tables/0/wmo/16/codetables/19113.table\
-	bufr/tables/0/wmo/16/codetables/19117.table\
-	bufr/tables/0/wmo/16/codetables/19119.table\
-	bufr/tables/0/wmo/16/codetables/20003.table\
-	bufr/tables/0/wmo/16/codetables/20004.table\
-	bufr/tables/0/wmo/16/codetables/20005.table\
-	bufr/tables/0/wmo/16/codetables/20006.table\
-	bufr/tables/0/wmo/16/codetables/20008.table\
-	bufr/tables/0/wmo/16/codetables/20009.table\
-	bufr/tables/0/wmo/16/codetables/2001.table\
-	bufr/tables/0/wmo/16/codetables/20011.table\
-	bufr/tables/0/wmo/16/codetables/20012.table\
-	bufr/tables/0/wmo/16/codetables/20017.table\
-	bufr/tables/0/wmo/16/codetables/20018.table\
-	bufr/tables/0/wmo/16/codetables/2002.table\
-	bufr/tables/0/wmo/16/codetables/20021.table\
-	bufr/tables/0/wmo/16/codetables/20022.table\
-	bufr/tables/0/wmo/16/codetables/20023.table\
-	bufr/tables/0/wmo/16/codetables/20024.table\
-	bufr/tables/0/wmo/16/codetables/20025.table\
-	bufr/tables/0/wmo/16/codetables/20026.table\
-	bufr/tables/0/wmo/16/codetables/20027.table\
-	bufr/tables/0/wmo/16/codetables/20028.table\
-	bufr/tables/0/wmo/16/codetables/20029.table\
-	bufr/tables/0/wmo/16/codetables/2003.table\
-	bufr/tables/0/wmo/16/codetables/20032.table\
-	bufr/tables/0/wmo/16/codetables/20033.table\
-	bufr/tables/0/wmo/16/codetables/20034.table\
-	bufr/tables/0/wmo/16/codetables/20035.table\
-	bufr/tables/0/wmo/16/codetables/20036.table\
-	bufr/tables/0/wmo/16/codetables/20037.table\
-	bufr/tables/0/wmo/16/codetables/2004.table\
-	bufr/tables/0/wmo/16/codetables/20040.table\
-	bufr/tables/0/wmo/16/codetables/20041.table\
-	bufr/tables/0/wmo/16/codetables/20042.table\
-	bufr/tables/0/wmo/16/codetables/20045.table\
-	bufr/tables/0/wmo/16/codetables/20048.table\
-	bufr/tables/0/wmo/16/codetables/20050.table\
-	bufr/tables/0/wmo/16/codetables/20055.table\
-	bufr/tables/0/wmo/16/codetables/20056.table\
-	bufr/tables/0/wmo/16/codetables/20062.table\
-	bufr/tables/0/wmo/16/codetables/20063.table\
-	bufr/tables/0/wmo/16/codetables/20071.table\
-	bufr/tables/0/wmo/16/codetables/20085.table\
-	bufr/tables/0/wmo/16/codetables/20086.table\
-	bufr/tables/0/wmo/16/codetables/20087.table\
-	bufr/tables/0/wmo/16/codetables/20089.table\
-	bufr/tables/0/wmo/16/codetables/20090.table\
-	bufr/tables/0/wmo/16/codetables/20101.table\
-	bufr/tables/0/wmo/16/codetables/20102.table\
-	bufr/tables/0/wmo/16/codetables/20103.table\
-	bufr/tables/0/wmo/16/codetables/20104.table\
-	bufr/tables/0/wmo/16/codetables/20105.table\
-	bufr/tables/0/wmo/16/codetables/20106.table\
-	bufr/tables/0/wmo/16/codetables/20107.table\
-	bufr/tables/0/wmo/16/codetables/20108.table\
-	bufr/tables/0/wmo/16/codetables/2011.table\
-	bufr/tables/0/wmo/16/codetables/20119.table\
-	bufr/tables/0/wmo/16/codetables/20124.table\
-	bufr/tables/0/wmo/16/codetables/2013.table\
-	bufr/tables/0/wmo/16/codetables/20136.table\
-	bufr/tables/0/wmo/16/codetables/20137.table\
-	bufr/tables/0/wmo/16/codetables/2014.table\
-	bufr/tables/0/wmo/16/codetables/2015.table\
-	bufr/tables/0/wmo/16/codetables/2016.table\
-	bufr/tables/0/wmo/16/codetables/2019.table\
-	bufr/tables/0/wmo/16/codetables/2020.table\
-	bufr/tables/0/wmo/16/codetables/2021.table\
-	bufr/tables/0/wmo/16/codetables/2022.table\
-	bufr/tables/0/wmo/16/codetables/2023.table\
-	bufr/tables/0/wmo/16/codetables/2024.table\
-	bufr/tables/0/wmo/16/codetables/2025.table\
-	bufr/tables/0/wmo/16/codetables/2030.table\
-	bufr/tables/0/wmo/16/codetables/2031.table\
-	bufr/tables/0/wmo/16/codetables/2032.table\
-	bufr/tables/0/wmo/16/codetables/2033.table\
-	bufr/tables/0/wmo/16/codetables/2034.table\
-	bufr/tables/0/wmo/16/codetables/2036.table\
-	bufr/tables/0/wmo/16/codetables/2037.table\
-	bufr/tables/0/wmo/16/codetables/2038.table\
-	bufr/tables/0/wmo/16/codetables/2039.table\
-	bufr/tables/0/wmo/16/codetables/2040.table\
-	bufr/tables/0/wmo/16/codetables/2041.table\
-	bufr/tables/0/wmo/16/codetables/2042.table\
-	bufr/tables/0/wmo/16/codetables/2044.table\
-	bufr/tables/0/wmo/16/codetables/2045.table\
-	bufr/tables/0/wmo/16/codetables/2046.table\
-	bufr/tables/0/wmo/16/codetables/2047.table\
-	bufr/tables/0/wmo/16/codetables/2048.table\
-	bufr/tables/0/wmo/16/codetables/2049.table\
-	bufr/tables/0/wmo/16/codetables/2050.table\
-	bufr/tables/0/wmo/16/codetables/2051.table\
-	bufr/tables/0/wmo/16/codetables/2052.table\
-	bufr/tables/0/wmo/16/codetables/2053.table\
-	bufr/tables/0/wmo/16/codetables/2054.table\
-	bufr/tables/0/wmo/16/codetables/2055.table\
-	bufr/tables/0/wmo/16/codetables/2056.table\
-	bufr/tables/0/wmo/16/codetables/2057.table\
-	bufr/tables/0/wmo/16/codetables/2058.table\
-	bufr/tables/0/wmo/16/codetables/2059.table\
-	bufr/tables/0/wmo/16/codetables/2060.table\
-	bufr/tables/0/wmo/16/codetables/2061.table\
-	bufr/tables/0/wmo/16/codetables/2062.table\
-	bufr/tables/0/wmo/16/codetables/2064.table\
-	bufr/tables/0/wmo/16/codetables/2066.table\
-	bufr/tables/0/wmo/16/codetables/2070.table\
-	bufr/tables/0/wmo/16/codetables/2080.table\
-	bufr/tables/0/wmo/16/codetables/2081.table\
-	bufr/tables/0/wmo/16/codetables/2083.table\
-	bufr/tables/0/wmo/16/codetables/2084.table\
-	bufr/tables/0/wmo/16/codetables/2095.table\
-	bufr/tables/0/wmo/16/codetables/2096.table\
-	bufr/tables/0/wmo/16/codetables/2097.table\
-	bufr/tables/0/wmo/16/codetables/2099.table\
-	bufr/tables/0/wmo/16/codetables/2101.table\
-	bufr/tables/0/wmo/16/codetables/2103.table\
-	bufr/tables/0/wmo/16/codetables/2104.table\
-	bufr/tables/0/wmo/16/codetables/21066.table\
-	bufr/tables/0/wmo/16/codetables/21067.table\
-	bufr/tables/0/wmo/16/codetables/21068.table\
-	bufr/tables/0/wmo/16/codetables/21069.table\
-	bufr/tables/0/wmo/16/codetables/21070.table\
-	bufr/tables/0/wmo/16/codetables/21072.table\
-	bufr/tables/0/wmo/16/codetables/21073.table\
-	bufr/tables/0/wmo/16/codetables/21076.table\
-	bufr/tables/0/wmo/16/codetables/21109.table\
-	bufr/tables/0/wmo/16/codetables/21115.table\
-	bufr/tables/0/wmo/16/codetables/21116.table\
-	bufr/tables/0/wmo/16/codetables/21119.table\
-	bufr/tables/0/wmo/16/codetables/21144.table\
-	bufr/tables/0/wmo/16/codetables/2115.table\
-	bufr/tables/0/wmo/16/codetables/21150.table\
-	bufr/tables/0/wmo/16/codetables/21155.table\
-	bufr/tables/0/wmo/16/codetables/21158.table\
-	bufr/tables/0/wmo/16/codetables/21159.table\
-	bufr/tables/0/wmo/16/codetables/21169.table\
-	bufr/tables/0/wmo/16/codetables/2119.table\
-	bufr/tables/0/wmo/16/codetables/2131.table\
-	bufr/tables/0/wmo/16/codetables/2137.table\
-	bufr/tables/0/wmo/16/codetables/2138.table\
-	bufr/tables/0/wmo/16/codetables/2143.table\
-	bufr/tables/0/wmo/16/codetables/2144.table\
-	bufr/tables/0/wmo/16/codetables/2145.table\
-	bufr/tables/0/wmo/16/codetables/2146.table\
-	bufr/tables/0/wmo/16/codetables/2148.table\
-	bufr/tables/0/wmo/16/codetables/2149.table\
-	bufr/tables/0/wmo/16/codetables/2150.table\
-	bufr/tables/0/wmo/16/codetables/2151.table\
-	bufr/tables/0/wmo/16/codetables/2152.table\
-	bufr/tables/0/wmo/16/codetables/2158.table\
-	bufr/tables/0/wmo/16/codetables/2159.table\
-	bufr/tables/0/wmo/16/codetables/2160.table\
-	bufr/tables/0/wmo/16/codetables/2163.table\
-	bufr/tables/0/wmo/16/codetables/2164.table\
-	bufr/tables/0/wmo/16/codetables/2165.table\
-	bufr/tables/0/wmo/16/codetables/2166.table\
-	bufr/tables/0/wmo/16/codetables/2167.table\
-	bufr/tables/0/wmo/16/codetables/2169.table\
-	bufr/tables/0/wmo/16/codetables/2172.table\
-	bufr/tables/0/wmo/16/codetables/2175.table\
-	bufr/tables/0/wmo/16/codetables/2176.table\
-	bufr/tables/0/wmo/16/codetables/2177.table\
-	bufr/tables/0/wmo/16/codetables/2178.table\
-	bufr/tables/0/wmo/16/codetables/2179.table\
-	bufr/tables/0/wmo/16/codetables/2180.table\
-	bufr/tables/0/wmo/16/codetables/2181.table\
-	bufr/tables/0/wmo/16/codetables/2182.table\
-	bufr/tables/0/wmo/16/codetables/2183.table\
-	bufr/tables/0/wmo/16/codetables/2184.table\
-	bufr/tables/0/wmo/16/codetables/2185.table\
-	bufr/tables/0/wmo/16/codetables/2186.table\
-	bufr/tables/0/wmo/16/codetables/2187.table\
-	bufr/tables/0/wmo/16/codetables/2188.table\
-	bufr/tables/0/wmo/16/codetables/2189.table\
-	bufr/tables/0/wmo/16/codetables/2191.table\
-	bufr/tables/0/wmo/16/codetables/22056.table\
-	bufr/tables/0/wmo/16/codetables/22060.table\
-	bufr/tables/0/wmo/16/codetables/22061.table\
-	bufr/tables/0/wmo/16/codetables/22067.table\
-	bufr/tables/0/wmo/16/codetables/22068.table\
-	bufr/tables/0/wmo/16/codetables/22120.table\
-	bufr/tables/0/wmo/16/codetables/22121.table\
-	bufr/tables/0/wmo/16/codetables/22122.table\
-	bufr/tables/0/wmo/16/codetables/22123.table\
-	bufr/tables/0/wmo/16/codetables/22178.table\
-	bufr/tables/0/wmo/16/codetables/23001.table\
-	bufr/tables/0/wmo/16/codetables/23002.table\
-	bufr/tables/0/wmo/16/codetables/23003.table\
-	bufr/tables/0/wmo/16/codetables/23004.table\
-	bufr/tables/0/wmo/16/codetables/23005.table\
-	bufr/tables/0/wmo/16/codetables/23006.table\
-	bufr/tables/0/wmo/16/codetables/23007.table\
-	bufr/tables/0/wmo/16/codetables/23008.table\
-	bufr/tables/0/wmo/16/codetables/23009.table\
-	bufr/tables/0/wmo/16/codetables/23016.table\
-	bufr/tables/0/wmo/16/codetables/23018.table\
-	bufr/tables/0/wmo/16/codetables/23031.table\
-	bufr/tables/0/wmo/16/codetables/23032.table\
-	bufr/tables/0/wmo/16/codetables/24003.table\
-	bufr/tables/0/wmo/16/codetables/25004.table\
-	bufr/tables/0/wmo/16/codetables/25005.table\
-	bufr/tables/0/wmo/16/codetables/25006.table\
-	bufr/tables/0/wmo/16/codetables/25009.table\
-	bufr/tables/0/wmo/16/codetables/25010.table\
-	bufr/tables/0/wmo/16/codetables/25011.table\
-	bufr/tables/0/wmo/16/codetables/25012.table\
-	bufr/tables/0/wmo/16/codetables/25013.table\
-	bufr/tables/0/wmo/16/codetables/25015.table\
-	bufr/tables/0/wmo/16/codetables/25017.table\
-	bufr/tables/0/wmo/16/codetables/25020.table\
-	bufr/tables/0/wmo/16/codetables/25021.table\
-	bufr/tables/0/wmo/16/codetables/25022.table\
-	bufr/tables/0/wmo/16/codetables/25023.table\
-	bufr/tables/0/wmo/16/codetables/25024.table\
-	bufr/tables/0/wmo/16/codetables/25029.table\
-	bufr/tables/0/wmo/16/codetables/25030.table\
-	bufr/tables/0/wmo/16/codetables/25031.table\
-	bufr/tables/0/wmo/16/codetables/25032.table\
-	bufr/tables/0/wmo/16/codetables/25033.table\
-	bufr/tables/0/wmo/16/codetables/25034.table\
-	bufr/tables/0/wmo/16/codetables/25035.table\
-	bufr/tables/0/wmo/16/codetables/25036.table\
-	bufr/tables/0/wmo/16/codetables/25040.table\
-	bufr/tables/0/wmo/16/codetables/25041.table\
-	bufr/tables/0/wmo/16/codetables/25042.table\
-	bufr/tables/0/wmo/16/codetables/25053.table\
-	bufr/tables/0/wmo/16/codetables/25063.table\
-	bufr/tables/0/wmo/16/codetables/25069.table\
-	bufr/tables/0/wmo/16/codetables/25086.table\
-	bufr/tables/0/wmo/16/codetables/25090.table\
-	bufr/tables/0/wmo/16/codetables/25093.table\
-	bufr/tables/0/wmo/16/codetables/25095.table\
-	bufr/tables/0/wmo/16/codetables/25096.table\
-	bufr/tables/0/wmo/16/codetables/25097.table\
-	bufr/tables/0/wmo/16/codetables/25098.table\
-	bufr/tables/0/wmo/16/codetables/25099.table\
-	bufr/tables/0/wmo/16/codetables/25110.table\
-	bufr/tables/0/wmo/16/codetables/25120.table\
-	bufr/tables/0/wmo/16/codetables/25122.table\
-	bufr/tables/0/wmo/16/codetables/25123.table\
-	bufr/tables/0/wmo/16/codetables/25124.table\
-	bufr/tables/0/wmo/16/codetables/25150.table\
-	bufr/tables/0/wmo/16/codetables/25174.table\
-	bufr/tables/0/wmo/16/codetables/26010.table\
-	bufr/tables/0/wmo/16/codetables/29001.table\
-	bufr/tables/0/wmo/16/codetables/29002.table\
-	bufr/tables/0/wmo/16/codetables/30031.table\
-	bufr/tables/0/wmo/16/codetables/30032.table\
-	bufr/tables/0/wmo/16/codetables/31021.table\
-	bufr/tables/0/wmo/16/codetables/31031.table\
-	bufr/tables/0/wmo/16/codetables/33002.table\
-	bufr/tables/0/wmo/16/codetables/33003.table\
-	bufr/tables/0/wmo/16/codetables/33005.table\
-	bufr/tables/0/wmo/16/codetables/33006.table\
-	bufr/tables/0/wmo/16/codetables/33015.table\
-	bufr/tables/0/wmo/16/codetables/33020.table\
-	bufr/tables/0/wmo/16/codetables/33021.table\
-	bufr/tables/0/wmo/16/codetables/33022.table\
-	bufr/tables/0/wmo/16/codetables/33023.table\
-	bufr/tables/0/wmo/16/codetables/33024.table\
-	bufr/tables/0/wmo/16/codetables/33025.table\
-	bufr/tables/0/wmo/16/codetables/33026.table\
-	bufr/tables/0/wmo/16/codetables/33027.table\
-	bufr/tables/0/wmo/16/codetables/33028.table\
-	bufr/tables/0/wmo/16/codetables/33030.table\
-	bufr/tables/0/wmo/16/codetables/33031.table\
-	bufr/tables/0/wmo/16/codetables/33032.table\
-	bufr/tables/0/wmo/16/codetables/33033.table\
-	bufr/tables/0/wmo/16/codetables/33035.table\
-	bufr/tables/0/wmo/16/codetables/33037.table\
-	bufr/tables/0/wmo/16/codetables/33038.table\
-	bufr/tables/0/wmo/16/codetables/33039.table\
-	bufr/tables/0/wmo/16/codetables/33041.table\
-	bufr/tables/0/wmo/16/codetables/33042.table\
-	bufr/tables/0/wmo/16/codetables/33043.table\
-	bufr/tables/0/wmo/16/codetables/33044.table\
-	bufr/tables/0/wmo/16/codetables/33047.table\
-	bufr/tables/0/wmo/16/codetables/33048.table\
-	bufr/tables/0/wmo/16/codetables/33049.table\
-	bufr/tables/0/wmo/16/codetables/33050.table\
-	bufr/tables/0/wmo/16/codetables/33060.table\
-	bufr/tables/0/wmo/16/codetables/33070.table\
-	bufr/tables/0/wmo/16/codetables/33071.table\
-	bufr/tables/0/wmo/16/codetables/33072.table\
-	bufr/tables/0/wmo/16/codetables/33075.table\
-	bufr/tables/0/wmo/16/codetables/33076.table\
-	bufr/tables/0/wmo/16/codetables/33077.table\
-	bufr/tables/0/wmo/16/codetables/33078.table\
-	bufr/tables/0/wmo/16/codetables/33079.table\
-	bufr/tables/0/wmo/16/codetables/33080.table\
-	bufr/tables/0/wmo/16/codetables/33081.table\
-	bufr/tables/0/wmo/16/codetables/33082.table\
-	bufr/tables/0/wmo/16/codetables/33083.table\
-	bufr/tables/0/wmo/16/codetables/35000.table\
-	bufr/tables/0/wmo/16/codetables/35001.table\
-	bufr/tables/0/wmo/16/codetables/35030.table\
-	bufr/tables/0/wmo/16/codetables/35031.table\
-	bufr/tables/0/wmo/16/codetables/35032.table\
-	bufr/tables/0/wmo/16/codetables/35033.table\
-	bufr/tables/0/wmo/16/codetables/35034.table\
-	bufr/tables/0/wmo/16/codetables/35035.table\
-	bufr/tables/0/wmo/16/codetables/40005.table\
-	bufr/tables/0/wmo/16/codetables/40006.table\
-	bufr/tables/0/wmo/16/codetables/40011.table\
-	bufr/tables/0/wmo/16/codetables/40012.table\
-	bufr/tables/0/wmo/16/codetables/40013.table\
-	bufr/tables/0/wmo/16/codetables/40020.table\
-	bufr/tables/0/wmo/16/codetables/40023.table\
-	bufr/tables/0/wmo/16/codetables/40024.table\
-	bufr/tables/0/wmo/16/codetables/40025.table\
-	bufr/tables/0/wmo/16/codetables/4059.table\
-	bufr/tables/0/wmo/16/codetables/4080.table\
-	bufr/tables/0/wmo/16/codetables/8001.table\
-	bufr/tables/0/wmo/16/codetables/8002.table\
-	bufr/tables/0/wmo/16/codetables/8003.table\
-	bufr/tables/0/wmo/16/codetables/8004.table\
-	bufr/tables/0/wmo/16/codetables/8005.table\
-	bufr/tables/0/wmo/16/codetables/8006.table\
-	bufr/tables/0/wmo/16/codetables/8007.table\
-	bufr/tables/0/wmo/16/codetables/8008.table\
-	bufr/tables/0/wmo/16/codetables/8009.table\
-	bufr/tables/0/wmo/16/codetables/8010.table\
-	bufr/tables/0/wmo/16/codetables/8011.table\
-	bufr/tables/0/wmo/16/codetables/8012.table\
-	bufr/tables/0/wmo/16/codetables/8013.table\
-	bufr/tables/0/wmo/16/codetables/8014.table\
-	bufr/tables/0/wmo/16/codetables/8016.table\
-	bufr/tables/0/wmo/16/codetables/8017.table\
-	bufr/tables/0/wmo/16/codetables/8018.table\
-	bufr/tables/0/wmo/16/codetables/8019.table\
-	bufr/tables/0/wmo/16/codetables/8021.table\
-	bufr/tables/0/wmo/16/codetables/8023.table\
-	bufr/tables/0/wmo/16/codetables/8024.table\
-	bufr/tables/0/wmo/16/codetables/8025.table\
-	bufr/tables/0/wmo/16/codetables/8026.table\
-	bufr/tables/0/wmo/16/codetables/8029.table\
-	bufr/tables/0/wmo/16/codetables/8033.table\
-	bufr/tables/0/wmo/16/codetables/8035.table\
-	bufr/tables/0/wmo/16/codetables/8036.table\
-	bufr/tables/0/wmo/16/codetables/8039.table\
-	bufr/tables/0/wmo/16/codetables/8040.table\
-	bufr/tables/0/wmo/16/codetables/8041.table\
-	bufr/tables/0/wmo/16/codetables/8042.table\
-	bufr/tables/0/wmo/16/codetables/8043.table\
-	bufr/tables/0/wmo/16/codetables/8050.table\
-	bufr/tables/0/wmo/16/codetables/8051.table\
-	bufr/tables/0/wmo/16/codetables/8052.table\
-	bufr/tables/0/wmo/16/codetables/8053.table\
-	bufr/tables/0/wmo/16/codetables/8054.table\
-	bufr/tables/0/wmo/16/codetables/8060.table\
-	bufr/tables/0/wmo/16/codetables/8065.table\
-	bufr/tables/0/wmo/16/codetables/8066.table\
-	bufr/tables/0/wmo/16/codetables/8070.table\
-	bufr/tables/0/wmo/16/codetables/8072.table\
-	bufr/tables/0/wmo/16/codetables/8074.table\
-	bufr/tables/0/wmo/16/codetables/8075.table\
-	bufr/tables/0/wmo/16/codetables/8076.table\
-	bufr/tables/0/wmo/16/codetables/8077.table\
-	bufr/tables/0/wmo/16/codetables/8079.table\
-	bufr/tables/0/wmo/16/codetables/8080.table\
-	bufr/tables/0/wmo/16/codetables/8081.table\
-	bufr/tables/0/wmo/16/codetables/8082.table\
-	bufr/tables/0/wmo/16/codetables/8083.table\
-	bufr/tables/0/wmo/16/codetables/8085.table\
-	bufr/tables/0/wmo/16/codetables/8086.table
-
-definitionsbufr_tables_0_wmo_17dir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/17
-dist_definitionsbufr_tables_0_wmo_17_DATA = \
-	bufr/tables/0/wmo/17/element.table\
-	bufr/tables/0/wmo/17/sequence.def
-
-definitionsbufr_tables_0_wmo_17_codetablesdir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/17/codetables
-dist_definitionsbufr_tables_0_wmo_17_codetables_DATA = \
-	bufr/tables/0/wmo/17/codetables/1003.table\
-	bufr/tables/0/wmo/17/codetables/10063.table\
-	bufr/tables/0/wmo/17/codetables/10064.table\
-	bufr/tables/0/wmo/17/codetables/1007.table\
-	bufr/tables/0/wmo/17/codetables/1024.table\
-	bufr/tables/0/wmo/17/codetables/1028.table\
-	bufr/tables/0/wmo/17/codetables/1029.table\
-	bufr/tables/0/wmo/17/codetables/1033.table\
-	bufr/tables/0/wmo/17/codetables/1034.table\
-	bufr/tables/0/wmo/17/codetables/1036.table\
-	bufr/tables/0/wmo/17/codetables/1038.table\
-	bufr/tables/0/wmo/17/codetables/1052.table\
-	bufr/tables/0/wmo/17/codetables/1090.table\
-	bufr/tables/0/wmo/17/codetables/1092.table\
-	bufr/tables/0/wmo/17/codetables/1101.table\
-	bufr/tables/0/wmo/17/codetables/11030.table\
-	bufr/tables/0/wmo/17/codetables/11031.table\
-	bufr/tables/0/wmo/17/codetables/11037.table\
-	bufr/tables/0/wmo/17/codetables/11038.table\
-	bufr/tables/0/wmo/17/codetables/11039.table\
-	bufr/tables/0/wmo/17/codetables/13038.table\
-	bufr/tables/0/wmo/17/codetables/13039.table\
-	bufr/tables/0/wmo/17/codetables/13040.table\
-	bufr/tables/0/wmo/17/codetables/13041.table\
-	bufr/tables/0/wmo/17/codetables/13051.table\
-	bufr/tables/0/wmo/17/codetables/13056.table\
-	bufr/tables/0/wmo/17/codetables/13057.table\
-	bufr/tables/0/wmo/17/codetables/15025.table\
-	bufr/tables/0/wmo/17/codetables/19001.table\
-	bufr/tables/0/wmo/17/codetables/19008.table\
-	bufr/tables/0/wmo/17/codetables/19010.table\
-	bufr/tables/0/wmo/17/codetables/19100.table\
-	bufr/tables/0/wmo/17/codetables/19101.table\
-	bufr/tables/0/wmo/17/codetables/19102.table\
-	bufr/tables/0/wmo/17/codetables/19103.table\
-	bufr/tables/0/wmo/17/codetables/19104.table\
-	bufr/tables/0/wmo/17/codetables/19105.table\
-	bufr/tables/0/wmo/17/codetables/19107.table\
-	bufr/tables/0/wmo/17/codetables/19108.table\
-	bufr/tables/0/wmo/17/codetables/19109.table\
-	bufr/tables/0/wmo/17/codetables/19110.table\
-	bufr/tables/0/wmo/17/codetables/19113.table\
-	bufr/tables/0/wmo/17/codetables/19117.table\
-	bufr/tables/0/wmo/17/codetables/19119.table\
-	bufr/tables/0/wmo/17/codetables/20003.table\
-	bufr/tables/0/wmo/17/codetables/20004.table\
-	bufr/tables/0/wmo/17/codetables/20005.table\
-	bufr/tables/0/wmo/17/codetables/20006.table\
-	bufr/tables/0/wmo/17/codetables/20008.table\
-	bufr/tables/0/wmo/17/codetables/20009.table\
-	bufr/tables/0/wmo/17/codetables/2001.table\
-	bufr/tables/0/wmo/17/codetables/20011.table\
-	bufr/tables/0/wmo/17/codetables/20012.table\
-	bufr/tables/0/wmo/17/codetables/20017.table\
-	bufr/tables/0/wmo/17/codetables/20018.table\
-	bufr/tables/0/wmo/17/codetables/2002.table\
-	bufr/tables/0/wmo/17/codetables/20021.table\
-	bufr/tables/0/wmo/17/codetables/20022.table\
-	bufr/tables/0/wmo/17/codetables/20023.table\
-	bufr/tables/0/wmo/17/codetables/20024.table\
-	bufr/tables/0/wmo/17/codetables/20025.table\
-	bufr/tables/0/wmo/17/codetables/20026.table\
-	bufr/tables/0/wmo/17/codetables/20027.table\
-	bufr/tables/0/wmo/17/codetables/20028.table\
-	bufr/tables/0/wmo/17/codetables/20029.table\
-	bufr/tables/0/wmo/17/codetables/2003.table\
-	bufr/tables/0/wmo/17/codetables/20032.table\
-	bufr/tables/0/wmo/17/codetables/20033.table\
-	bufr/tables/0/wmo/17/codetables/20034.table\
-	bufr/tables/0/wmo/17/codetables/20035.table\
-	bufr/tables/0/wmo/17/codetables/20036.table\
-	bufr/tables/0/wmo/17/codetables/20037.table\
-	bufr/tables/0/wmo/17/codetables/2004.table\
-	bufr/tables/0/wmo/17/codetables/20040.table\
-	bufr/tables/0/wmo/17/codetables/20041.table\
-	bufr/tables/0/wmo/17/codetables/20042.table\
-	bufr/tables/0/wmo/17/codetables/20045.table\
-	bufr/tables/0/wmo/17/codetables/20048.table\
-	bufr/tables/0/wmo/17/codetables/20050.table\
-	bufr/tables/0/wmo/17/codetables/20055.table\
-	bufr/tables/0/wmo/17/codetables/20056.table\
-	bufr/tables/0/wmo/17/codetables/20062.table\
-	bufr/tables/0/wmo/17/codetables/20063.table\
-	bufr/tables/0/wmo/17/codetables/20071.table\
-	bufr/tables/0/wmo/17/codetables/20085.table\
-	bufr/tables/0/wmo/17/codetables/20086.table\
-	bufr/tables/0/wmo/17/codetables/20087.table\
-	bufr/tables/0/wmo/17/codetables/20089.table\
-	bufr/tables/0/wmo/17/codetables/20090.table\
-	bufr/tables/0/wmo/17/codetables/20101.table\
-	bufr/tables/0/wmo/17/codetables/20102.table\
-	bufr/tables/0/wmo/17/codetables/20103.table\
-	bufr/tables/0/wmo/17/codetables/20104.table\
-	bufr/tables/0/wmo/17/codetables/20105.table\
-	bufr/tables/0/wmo/17/codetables/20106.table\
-	bufr/tables/0/wmo/17/codetables/20107.table\
-	bufr/tables/0/wmo/17/codetables/20108.table\
-	bufr/tables/0/wmo/17/codetables/2011.table\
-	bufr/tables/0/wmo/17/codetables/20119.table\
-	bufr/tables/0/wmo/17/codetables/20124.table\
-	bufr/tables/0/wmo/17/codetables/2013.table\
-	bufr/tables/0/wmo/17/codetables/20136.table\
-	bufr/tables/0/wmo/17/codetables/20137.table\
-	bufr/tables/0/wmo/17/codetables/2014.table\
-	bufr/tables/0/wmo/17/codetables/2015.table\
-	bufr/tables/0/wmo/17/codetables/2016.table\
-	bufr/tables/0/wmo/17/codetables/2019.table\
-	bufr/tables/0/wmo/17/codetables/2020.table\
-	bufr/tables/0/wmo/17/codetables/2021.table\
-	bufr/tables/0/wmo/17/codetables/2022.table\
-	bufr/tables/0/wmo/17/codetables/2023.table\
-	bufr/tables/0/wmo/17/codetables/2024.table\
-	bufr/tables/0/wmo/17/codetables/2025.table\
-	bufr/tables/0/wmo/17/codetables/2030.table\
-	bufr/tables/0/wmo/17/codetables/2031.table\
-	bufr/tables/0/wmo/17/codetables/2032.table\
-	bufr/tables/0/wmo/17/codetables/2033.table\
-	bufr/tables/0/wmo/17/codetables/2034.table\
-	bufr/tables/0/wmo/17/codetables/2036.table\
-	bufr/tables/0/wmo/17/codetables/2037.table\
-	bufr/tables/0/wmo/17/codetables/2038.table\
-	bufr/tables/0/wmo/17/codetables/2039.table\
-	bufr/tables/0/wmo/17/codetables/2040.table\
-	bufr/tables/0/wmo/17/codetables/2041.table\
-	bufr/tables/0/wmo/17/codetables/2042.table\
-	bufr/tables/0/wmo/17/codetables/2044.table\
-	bufr/tables/0/wmo/17/codetables/2045.table\
-	bufr/tables/0/wmo/17/codetables/2046.table\
-	bufr/tables/0/wmo/17/codetables/2047.table\
-	bufr/tables/0/wmo/17/codetables/2048.table\
-	bufr/tables/0/wmo/17/codetables/2049.table\
-	bufr/tables/0/wmo/17/codetables/2050.table\
-	bufr/tables/0/wmo/17/codetables/2051.table\
-	bufr/tables/0/wmo/17/codetables/2052.table\
-	bufr/tables/0/wmo/17/codetables/2053.table\
-	bufr/tables/0/wmo/17/codetables/2054.table\
-	bufr/tables/0/wmo/17/codetables/2055.table\
-	bufr/tables/0/wmo/17/codetables/2056.table\
-	bufr/tables/0/wmo/17/codetables/2057.table\
-	bufr/tables/0/wmo/17/codetables/2058.table\
-	bufr/tables/0/wmo/17/codetables/2059.table\
-	bufr/tables/0/wmo/17/codetables/2060.table\
-	bufr/tables/0/wmo/17/codetables/2061.table\
-	bufr/tables/0/wmo/17/codetables/2062.table\
-	bufr/tables/0/wmo/17/codetables/2064.table\
-	bufr/tables/0/wmo/17/codetables/2066.table\
-	bufr/tables/0/wmo/17/codetables/2070.table\
-	bufr/tables/0/wmo/17/codetables/2080.table\
-	bufr/tables/0/wmo/17/codetables/2081.table\
-	bufr/tables/0/wmo/17/codetables/2083.table\
-	bufr/tables/0/wmo/17/codetables/2084.table\
-	bufr/tables/0/wmo/17/codetables/2095.table\
-	bufr/tables/0/wmo/17/codetables/2096.table\
-	bufr/tables/0/wmo/17/codetables/2097.table\
-	bufr/tables/0/wmo/17/codetables/2099.table\
-	bufr/tables/0/wmo/17/codetables/2101.table\
-	bufr/tables/0/wmo/17/codetables/2103.table\
-	bufr/tables/0/wmo/17/codetables/2104.table\
-	bufr/tables/0/wmo/17/codetables/21066.table\
-	bufr/tables/0/wmo/17/codetables/21067.table\
-	bufr/tables/0/wmo/17/codetables/21068.table\
-	bufr/tables/0/wmo/17/codetables/21069.table\
-	bufr/tables/0/wmo/17/codetables/21070.table\
-	bufr/tables/0/wmo/17/codetables/21072.table\
-	bufr/tables/0/wmo/17/codetables/21073.table\
-	bufr/tables/0/wmo/17/codetables/21076.table\
-	bufr/tables/0/wmo/17/codetables/21109.table\
-	bufr/tables/0/wmo/17/codetables/21115.table\
-	bufr/tables/0/wmo/17/codetables/21116.table\
-	bufr/tables/0/wmo/17/codetables/21119.table\
-	bufr/tables/0/wmo/17/codetables/21144.table\
-	bufr/tables/0/wmo/17/codetables/2115.table\
-	bufr/tables/0/wmo/17/codetables/21150.table\
-	bufr/tables/0/wmo/17/codetables/21155.table\
-	bufr/tables/0/wmo/17/codetables/21158.table\
-	bufr/tables/0/wmo/17/codetables/21159.table\
-	bufr/tables/0/wmo/17/codetables/21169.table\
-	bufr/tables/0/wmo/17/codetables/2119.table\
-	bufr/tables/0/wmo/17/codetables/2131.table\
-	bufr/tables/0/wmo/17/codetables/2137.table\
-	bufr/tables/0/wmo/17/codetables/2138.table\
-	bufr/tables/0/wmo/17/codetables/2143.table\
-	bufr/tables/0/wmo/17/codetables/2144.table\
-	bufr/tables/0/wmo/17/codetables/2145.table\
-	bufr/tables/0/wmo/17/codetables/2146.table\
-	bufr/tables/0/wmo/17/codetables/2148.table\
-	bufr/tables/0/wmo/17/codetables/2149.table\
-	bufr/tables/0/wmo/17/codetables/2150.table\
-	bufr/tables/0/wmo/17/codetables/2151.table\
-	bufr/tables/0/wmo/17/codetables/2152.table\
-	bufr/tables/0/wmo/17/codetables/2158.table\
-	bufr/tables/0/wmo/17/codetables/2159.table\
-	bufr/tables/0/wmo/17/codetables/2160.table\
-	bufr/tables/0/wmo/17/codetables/2163.table\
-	bufr/tables/0/wmo/17/codetables/2164.table\
-	bufr/tables/0/wmo/17/codetables/2165.table\
-	bufr/tables/0/wmo/17/codetables/2166.table\
-	bufr/tables/0/wmo/17/codetables/2167.table\
-	bufr/tables/0/wmo/17/codetables/2169.table\
-	bufr/tables/0/wmo/17/codetables/2172.table\
-	bufr/tables/0/wmo/17/codetables/2175.table\
-	bufr/tables/0/wmo/17/codetables/2176.table\
-	bufr/tables/0/wmo/17/codetables/2177.table\
-	bufr/tables/0/wmo/17/codetables/2178.table\
-	bufr/tables/0/wmo/17/codetables/2179.table\
-	bufr/tables/0/wmo/17/codetables/2180.table\
-	bufr/tables/0/wmo/17/codetables/2181.table\
-	bufr/tables/0/wmo/17/codetables/2182.table\
-	bufr/tables/0/wmo/17/codetables/2183.table\
-	bufr/tables/0/wmo/17/codetables/2184.table\
-	bufr/tables/0/wmo/17/codetables/2185.table\
-	bufr/tables/0/wmo/17/codetables/2186.table\
-	bufr/tables/0/wmo/17/codetables/2187.table\
-	bufr/tables/0/wmo/17/codetables/2188.table\
-	bufr/tables/0/wmo/17/codetables/2189.table\
-	bufr/tables/0/wmo/17/codetables/2191.table\
-	bufr/tables/0/wmo/17/codetables/22056.table\
-	bufr/tables/0/wmo/17/codetables/22060.table\
-	bufr/tables/0/wmo/17/codetables/22061.table\
-	bufr/tables/0/wmo/17/codetables/22067.table\
-	bufr/tables/0/wmo/17/codetables/22068.table\
-	bufr/tables/0/wmo/17/codetables/22120.table\
-	bufr/tables/0/wmo/17/codetables/22121.table\
-	bufr/tables/0/wmo/17/codetables/22122.table\
-	bufr/tables/0/wmo/17/codetables/22123.table\
-	bufr/tables/0/wmo/17/codetables/22178.table\
-	bufr/tables/0/wmo/17/codetables/23001.table\
-	bufr/tables/0/wmo/17/codetables/23002.table\
-	bufr/tables/0/wmo/17/codetables/23003.table\
-	bufr/tables/0/wmo/17/codetables/23004.table\
-	bufr/tables/0/wmo/17/codetables/23005.table\
-	bufr/tables/0/wmo/17/codetables/23006.table\
-	bufr/tables/0/wmo/17/codetables/23007.table\
-	bufr/tables/0/wmo/17/codetables/23008.table\
-	bufr/tables/0/wmo/17/codetables/23009.table\
-	bufr/tables/0/wmo/17/codetables/23016.table\
-	bufr/tables/0/wmo/17/codetables/23018.table\
-	bufr/tables/0/wmo/17/codetables/23031.table\
-	bufr/tables/0/wmo/17/codetables/23032.table\
-	bufr/tables/0/wmo/17/codetables/24003.table\
-	bufr/tables/0/wmo/17/codetables/25004.table\
-	bufr/tables/0/wmo/17/codetables/25005.table\
-	bufr/tables/0/wmo/17/codetables/25006.table\
-	bufr/tables/0/wmo/17/codetables/25009.table\
-	bufr/tables/0/wmo/17/codetables/25010.table\
-	bufr/tables/0/wmo/17/codetables/25011.table\
-	bufr/tables/0/wmo/17/codetables/25012.table\
-	bufr/tables/0/wmo/17/codetables/25013.table\
-	bufr/tables/0/wmo/17/codetables/25015.table\
-	bufr/tables/0/wmo/17/codetables/25017.table\
-	bufr/tables/0/wmo/17/codetables/25020.table\
-	bufr/tables/0/wmo/17/codetables/25021.table\
-	bufr/tables/0/wmo/17/codetables/25022.table\
-	bufr/tables/0/wmo/17/codetables/25023.table\
-	bufr/tables/0/wmo/17/codetables/25024.table\
-	bufr/tables/0/wmo/17/codetables/25029.table\
-	bufr/tables/0/wmo/17/codetables/25030.table\
-	bufr/tables/0/wmo/17/codetables/25031.table\
-	bufr/tables/0/wmo/17/codetables/25032.table\
-	bufr/tables/0/wmo/17/codetables/25033.table\
-	bufr/tables/0/wmo/17/codetables/25034.table\
-	bufr/tables/0/wmo/17/codetables/25035.table\
-	bufr/tables/0/wmo/17/codetables/25036.table\
-	bufr/tables/0/wmo/17/codetables/25040.table\
-	bufr/tables/0/wmo/17/codetables/25041.table\
-	bufr/tables/0/wmo/17/codetables/25042.table\
-	bufr/tables/0/wmo/17/codetables/25053.table\
-	bufr/tables/0/wmo/17/codetables/25063.table\
-	bufr/tables/0/wmo/17/codetables/25069.table\
-	bufr/tables/0/wmo/17/codetables/25086.table\
-	bufr/tables/0/wmo/17/codetables/25090.table\
-	bufr/tables/0/wmo/17/codetables/25093.table\
-	bufr/tables/0/wmo/17/codetables/25095.table\
-	bufr/tables/0/wmo/17/codetables/25096.table\
-	bufr/tables/0/wmo/17/codetables/25097.table\
-	bufr/tables/0/wmo/17/codetables/25098.table\
-	bufr/tables/0/wmo/17/codetables/25099.table\
-	bufr/tables/0/wmo/17/codetables/25110.table\
-	bufr/tables/0/wmo/17/codetables/25120.table\
-	bufr/tables/0/wmo/17/codetables/25122.table\
-	bufr/tables/0/wmo/17/codetables/25123.table\
-	bufr/tables/0/wmo/17/codetables/25124.table\
-	bufr/tables/0/wmo/17/codetables/25150.table\
-	bufr/tables/0/wmo/17/codetables/25174.table\
-	bufr/tables/0/wmo/17/codetables/26010.table\
-	bufr/tables/0/wmo/17/codetables/29001.table\
-	bufr/tables/0/wmo/17/codetables/29002.table\
-	bufr/tables/0/wmo/17/codetables/30031.table\
-	bufr/tables/0/wmo/17/codetables/30032.table\
-	bufr/tables/0/wmo/17/codetables/31021.table\
-	bufr/tables/0/wmo/17/codetables/31031.table\
-	bufr/tables/0/wmo/17/codetables/33002.table\
-	bufr/tables/0/wmo/17/codetables/33003.table\
-	bufr/tables/0/wmo/17/codetables/33005.table\
-	bufr/tables/0/wmo/17/codetables/33006.table\
-	bufr/tables/0/wmo/17/codetables/33015.table\
-	bufr/tables/0/wmo/17/codetables/33020.table\
-	bufr/tables/0/wmo/17/codetables/33021.table\
-	bufr/tables/0/wmo/17/codetables/33022.table\
-	bufr/tables/0/wmo/17/codetables/33023.table\
-	bufr/tables/0/wmo/17/codetables/33024.table\
-	bufr/tables/0/wmo/17/codetables/33025.table\
-	bufr/tables/0/wmo/17/codetables/33026.table\
-	bufr/tables/0/wmo/17/codetables/33027.table\
-	bufr/tables/0/wmo/17/codetables/33028.table\
-	bufr/tables/0/wmo/17/codetables/33030.table\
-	bufr/tables/0/wmo/17/codetables/33031.table\
-	bufr/tables/0/wmo/17/codetables/33032.table\
-	bufr/tables/0/wmo/17/codetables/33033.table\
-	bufr/tables/0/wmo/17/codetables/33035.table\
-	bufr/tables/0/wmo/17/codetables/33037.table\
-	bufr/tables/0/wmo/17/codetables/33038.table\
-	bufr/tables/0/wmo/17/codetables/33039.table\
-	bufr/tables/0/wmo/17/codetables/33041.table\
-	bufr/tables/0/wmo/17/codetables/33042.table\
-	bufr/tables/0/wmo/17/codetables/33043.table\
-	bufr/tables/0/wmo/17/codetables/33044.table\
-	bufr/tables/0/wmo/17/codetables/33047.table\
-	bufr/tables/0/wmo/17/codetables/33048.table\
-	bufr/tables/0/wmo/17/codetables/33049.table\
-	bufr/tables/0/wmo/17/codetables/33050.table\
-	bufr/tables/0/wmo/17/codetables/33060.table\
-	bufr/tables/0/wmo/17/codetables/33070.table\
-	bufr/tables/0/wmo/17/codetables/33071.table\
-	bufr/tables/0/wmo/17/codetables/33072.table\
-	bufr/tables/0/wmo/17/codetables/33075.table\
-	bufr/tables/0/wmo/17/codetables/33076.table\
-	bufr/tables/0/wmo/17/codetables/33077.table\
-	bufr/tables/0/wmo/17/codetables/33078.table\
-	bufr/tables/0/wmo/17/codetables/33079.table\
-	bufr/tables/0/wmo/17/codetables/33080.table\
-	bufr/tables/0/wmo/17/codetables/33081.table\
-	bufr/tables/0/wmo/17/codetables/33082.table\
-	bufr/tables/0/wmo/17/codetables/33083.table\
-	bufr/tables/0/wmo/17/codetables/35000.table\
-	bufr/tables/0/wmo/17/codetables/35001.table\
-	bufr/tables/0/wmo/17/codetables/35030.table\
-	bufr/tables/0/wmo/17/codetables/35031.table\
-	bufr/tables/0/wmo/17/codetables/35032.table\
-	bufr/tables/0/wmo/17/codetables/35033.table\
-	bufr/tables/0/wmo/17/codetables/35034.table\
-	bufr/tables/0/wmo/17/codetables/35035.table\
-	bufr/tables/0/wmo/17/codetables/40005.table\
-	bufr/tables/0/wmo/17/codetables/40006.table\
-	bufr/tables/0/wmo/17/codetables/40011.table\
-	bufr/tables/0/wmo/17/codetables/40012.table\
-	bufr/tables/0/wmo/17/codetables/40013.table\
-	bufr/tables/0/wmo/17/codetables/40020.table\
-	bufr/tables/0/wmo/17/codetables/40023.table\
-	bufr/tables/0/wmo/17/codetables/40024.table\
-	bufr/tables/0/wmo/17/codetables/40025.table\
-	bufr/tables/0/wmo/17/codetables/4059.table\
-	bufr/tables/0/wmo/17/codetables/4080.table\
-	bufr/tables/0/wmo/17/codetables/8001.table\
-	bufr/tables/0/wmo/17/codetables/8002.table\
-	bufr/tables/0/wmo/17/codetables/8003.table\
-	bufr/tables/0/wmo/17/codetables/8004.table\
-	bufr/tables/0/wmo/17/codetables/8005.table\
-	bufr/tables/0/wmo/17/codetables/8006.table\
-	bufr/tables/0/wmo/17/codetables/8007.table\
-	bufr/tables/0/wmo/17/codetables/8008.table\
-	bufr/tables/0/wmo/17/codetables/8009.table\
-	bufr/tables/0/wmo/17/codetables/8010.table\
-	bufr/tables/0/wmo/17/codetables/8011.table\
-	bufr/tables/0/wmo/17/codetables/8012.table\
-	bufr/tables/0/wmo/17/codetables/8013.table\
-	bufr/tables/0/wmo/17/codetables/8014.table\
-	bufr/tables/0/wmo/17/codetables/8016.table\
-	bufr/tables/0/wmo/17/codetables/8017.table\
-	bufr/tables/0/wmo/17/codetables/8018.table\
-	bufr/tables/0/wmo/17/codetables/8019.table\
-	bufr/tables/0/wmo/17/codetables/8021.table\
-	bufr/tables/0/wmo/17/codetables/8023.table\
-	bufr/tables/0/wmo/17/codetables/8024.table\
-	bufr/tables/0/wmo/17/codetables/8025.table\
-	bufr/tables/0/wmo/17/codetables/8026.table\
-	bufr/tables/0/wmo/17/codetables/8029.table\
-	bufr/tables/0/wmo/17/codetables/8033.table\
-	bufr/tables/0/wmo/17/codetables/8035.table\
-	bufr/tables/0/wmo/17/codetables/8036.table\
-	bufr/tables/0/wmo/17/codetables/8039.table\
-	bufr/tables/0/wmo/17/codetables/8040.table\
-	bufr/tables/0/wmo/17/codetables/8041.table\
-	bufr/tables/0/wmo/17/codetables/8042.table\
-	bufr/tables/0/wmo/17/codetables/8043.table\
-	bufr/tables/0/wmo/17/codetables/8050.table\
-	bufr/tables/0/wmo/17/codetables/8051.table\
-	bufr/tables/0/wmo/17/codetables/8052.table\
-	bufr/tables/0/wmo/17/codetables/8053.table\
-	bufr/tables/0/wmo/17/codetables/8054.table\
-	bufr/tables/0/wmo/17/codetables/8060.table\
-	bufr/tables/0/wmo/17/codetables/8065.table\
-	bufr/tables/0/wmo/17/codetables/8066.table\
-	bufr/tables/0/wmo/17/codetables/8070.table\
-	bufr/tables/0/wmo/17/codetables/8072.table\
-	bufr/tables/0/wmo/17/codetables/8074.table\
-	bufr/tables/0/wmo/17/codetables/8075.table\
-	bufr/tables/0/wmo/17/codetables/8076.table\
-	bufr/tables/0/wmo/17/codetables/8077.table\
-	bufr/tables/0/wmo/17/codetables/8079.table\
-	bufr/tables/0/wmo/17/codetables/8080.table\
-	bufr/tables/0/wmo/17/codetables/8081.table\
-	bufr/tables/0/wmo/17/codetables/8082.table\
-	bufr/tables/0/wmo/17/codetables/8083.table\
-	bufr/tables/0/wmo/17/codetables/8085.table\
-	bufr/tables/0/wmo/17/codetables/8086.table
-
-definitionsbufr_tables_0_wmo_18dir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/18
-dist_definitionsbufr_tables_0_wmo_18_DATA = \
-	bufr/tables/0/wmo/18/element.table\
-	bufr/tables/0/wmo/18/sequence.def
-
-definitionsbufr_tables_0_wmo_18_codetablesdir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/18/codetables
-dist_definitionsbufr_tables_0_wmo_18_codetables_DATA = \
-	bufr/tables/0/wmo/18/codetables/1003.table\
-	bufr/tables/0/wmo/18/codetables/10063.table\
-	bufr/tables/0/wmo/18/codetables/10064.table\
-	bufr/tables/0/wmo/18/codetables/1007.table\
-	bufr/tables/0/wmo/18/codetables/1024.table\
-	bufr/tables/0/wmo/18/codetables/1028.table\
-	bufr/tables/0/wmo/18/codetables/1029.table\
-	bufr/tables/0/wmo/18/codetables/1033.table\
-	bufr/tables/0/wmo/18/codetables/1034.table\
-	bufr/tables/0/wmo/18/codetables/1036.table\
-	bufr/tables/0/wmo/18/codetables/1038.table\
-	bufr/tables/0/wmo/18/codetables/1052.table\
-	bufr/tables/0/wmo/18/codetables/1090.table\
-	bufr/tables/0/wmo/18/codetables/1092.table\
-	bufr/tables/0/wmo/18/codetables/1101.table\
-	bufr/tables/0/wmo/18/codetables/11030.table\
-	bufr/tables/0/wmo/18/codetables/11031.table\
-	bufr/tables/0/wmo/18/codetables/11037.table\
-	bufr/tables/0/wmo/18/codetables/11038.table\
-	bufr/tables/0/wmo/18/codetables/11039.table\
-	bufr/tables/0/wmo/18/codetables/13038.table\
-	bufr/tables/0/wmo/18/codetables/13039.table\
-	bufr/tables/0/wmo/18/codetables/13040.table\
-	bufr/tables/0/wmo/18/codetables/13041.table\
-	bufr/tables/0/wmo/18/codetables/13051.table\
-	bufr/tables/0/wmo/18/codetables/13056.table\
-	bufr/tables/0/wmo/18/codetables/13057.table\
-	bufr/tables/0/wmo/18/codetables/15025.table\
-	bufr/tables/0/wmo/18/codetables/19001.table\
-	bufr/tables/0/wmo/18/codetables/19008.table\
-	bufr/tables/0/wmo/18/codetables/19010.table\
-	bufr/tables/0/wmo/18/codetables/19100.table\
-	bufr/tables/0/wmo/18/codetables/19101.table\
-	bufr/tables/0/wmo/18/codetables/19102.table\
-	bufr/tables/0/wmo/18/codetables/19103.table\
-	bufr/tables/0/wmo/18/codetables/19104.table\
-	bufr/tables/0/wmo/18/codetables/19105.table\
-	bufr/tables/0/wmo/18/codetables/19107.table\
-	bufr/tables/0/wmo/18/codetables/19108.table\
-	bufr/tables/0/wmo/18/codetables/19109.table\
-	bufr/tables/0/wmo/18/codetables/19110.table\
-	bufr/tables/0/wmo/18/codetables/19113.table\
-	bufr/tables/0/wmo/18/codetables/19117.table\
-	bufr/tables/0/wmo/18/codetables/19119.table\
-	bufr/tables/0/wmo/18/codetables/20003.table\
-	bufr/tables/0/wmo/18/codetables/20004.table\
-	bufr/tables/0/wmo/18/codetables/20005.table\
-	bufr/tables/0/wmo/18/codetables/20006.table\
-	bufr/tables/0/wmo/18/codetables/20008.table\
-	bufr/tables/0/wmo/18/codetables/20009.table\
-	bufr/tables/0/wmo/18/codetables/2001.table\
-	bufr/tables/0/wmo/18/codetables/20011.table\
-	bufr/tables/0/wmo/18/codetables/20012.table\
-	bufr/tables/0/wmo/18/codetables/20017.table\
-	bufr/tables/0/wmo/18/codetables/20018.table\
-	bufr/tables/0/wmo/18/codetables/2002.table\
-	bufr/tables/0/wmo/18/codetables/20021.table\
-	bufr/tables/0/wmo/18/codetables/20022.table\
-	bufr/tables/0/wmo/18/codetables/20023.table\
-	bufr/tables/0/wmo/18/codetables/20024.table\
-	bufr/tables/0/wmo/18/codetables/20025.table\
-	bufr/tables/0/wmo/18/codetables/20026.table\
-	bufr/tables/0/wmo/18/codetables/20027.table\
-	bufr/tables/0/wmo/18/codetables/20028.table\
-	bufr/tables/0/wmo/18/codetables/20029.table\
-	bufr/tables/0/wmo/18/codetables/2003.table\
-	bufr/tables/0/wmo/18/codetables/20032.table\
-	bufr/tables/0/wmo/18/codetables/20033.table\
-	bufr/tables/0/wmo/18/codetables/20034.table\
-	bufr/tables/0/wmo/18/codetables/20035.table\
-	bufr/tables/0/wmo/18/codetables/20036.table\
-	bufr/tables/0/wmo/18/codetables/20037.table\
-	bufr/tables/0/wmo/18/codetables/2004.table\
-	bufr/tables/0/wmo/18/codetables/20040.table\
-	bufr/tables/0/wmo/18/codetables/20041.table\
-	bufr/tables/0/wmo/18/codetables/20042.table\
-	bufr/tables/0/wmo/18/codetables/20045.table\
-	bufr/tables/0/wmo/18/codetables/20048.table\
-	bufr/tables/0/wmo/18/codetables/20050.table\
-	bufr/tables/0/wmo/18/codetables/20055.table\
-	bufr/tables/0/wmo/18/codetables/20056.table\
-	bufr/tables/0/wmo/18/codetables/20062.table\
-	bufr/tables/0/wmo/18/codetables/20063.table\
-	bufr/tables/0/wmo/18/codetables/20071.table\
-	bufr/tables/0/wmo/18/codetables/20085.table\
-	bufr/tables/0/wmo/18/codetables/20086.table\
-	bufr/tables/0/wmo/18/codetables/20087.table\
-	bufr/tables/0/wmo/18/codetables/20089.table\
-	bufr/tables/0/wmo/18/codetables/20090.table\
-	bufr/tables/0/wmo/18/codetables/20101.table\
-	bufr/tables/0/wmo/18/codetables/20102.table\
-	bufr/tables/0/wmo/18/codetables/20103.table\
-	bufr/tables/0/wmo/18/codetables/20104.table\
-	bufr/tables/0/wmo/18/codetables/20105.table\
-	bufr/tables/0/wmo/18/codetables/20106.table\
-	bufr/tables/0/wmo/18/codetables/20107.table\
-	bufr/tables/0/wmo/18/codetables/20108.table\
-	bufr/tables/0/wmo/18/codetables/2011.table\
-	bufr/tables/0/wmo/18/codetables/20119.table\
-	bufr/tables/0/wmo/18/codetables/20124.table\
-	bufr/tables/0/wmo/18/codetables/2013.table\
-	bufr/tables/0/wmo/18/codetables/20136.table\
-	bufr/tables/0/wmo/18/codetables/2014.table\
-	bufr/tables/0/wmo/18/codetables/2015.table\
-	bufr/tables/0/wmo/18/codetables/2016.table\
-	bufr/tables/0/wmo/18/codetables/2017.table\
-	bufr/tables/0/wmo/18/codetables/2019.table\
-	bufr/tables/0/wmo/18/codetables/2020.table\
-	bufr/tables/0/wmo/18/codetables/2021.table\
-	bufr/tables/0/wmo/18/codetables/2022.table\
-	bufr/tables/0/wmo/18/codetables/2023.table\
-	bufr/tables/0/wmo/18/codetables/2024.table\
-	bufr/tables/0/wmo/18/codetables/2025.table\
-	bufr/tables/0/wmo/18/codetables/2030.table\
-	bufr/tables/0/wmo/18/codetables/2031.table\
-	bufr/tables/0/wmo/18/codetables/2032.table\
-	bufr/tables/0/wmo/18/codetables/2033.table\
-	bufr/tables/0/wmo/18/codetables/2034.table\
-	bufr/tables/0/wmo/18/codetables/2036.table\
-	bufr/tables/0/wmo/18/codetables/2037.table\
-	bufr/tables/0/wmo/18/codetables/2038.table\
-	bufr/tables/0/wmo/18/codetables/2039.table\
-	bufr/tables/0/wmo/18/codetables/2040.table\
-	bufr/tables/0/wmo/18/codetables/2041.table\
-	bufr/tables/0/wmo/18/codetables/2042.table\
-	bufr/tables/0/wmo/18/codetables/2044.table\
-	bufr/tables/0/wmo/18/codetables/2045.table\
-	bufr/tables/0/wmo/18/codetables/2046.table\
-	bufr/tables/0/wmo/18/codetables/2047.table\
-	bufr/tables/0/wmo/18/codetables/2048.table\
-	bufr/tables/0/wmo/18/codetables/2049.table\
-	bufr/tables/0/wmo/18/codetables/2050.table\
-	bufr/tables/0/wmo/18/codetables/2051.table\
-	bufr/tables/0/wmo/18/codetables/2052.table\
-	bufr/tables/0/wmo/18/codetables/2053.table\
-	bufr/tables/0/wmo/18/codetables/2054.table\
-	bufr/tables/0/wmo/18/codetables/2055.table\
-	bufr/tables/0/wmo/18/codetables/2056.table\
-	bufr/tables/0/wmo/18/codetables/2057.table\
-	bufr/tables/0/wmo/18/codetables/2058.table\
-	bufr/tables/0/wmo/18/codetables/2059.table\
-	bufr/tables/0/wmo/18/codetables/2060.table\
-	bufr/tables/0/wmo/18/codetables/2061.table\
-	bufr/tables/0/wmo/18/codetables/2062.table\
-	bufr/tables/0/wmo/18/codetables/2064.table\
-	bufr/tables/0/wmo/18/codetables/2066.table\
-	bufr/tables/0/wmo/18/codetables/2070.table\
-	bufr/tables/0/wmo/18/codetables/2080.table\
-	bufr/tables/0/wmo/18/codetables/2081.table\
-	bufr/tables/0/wmo/18/codetables/2083.table\
-	bufr/tables/0/wmo/18/codetables/2084.table\
-	bufr/tables/0/wmo/18/codetables/2095.table\
-	bufr/tables/0/wmo/18/codetables/2096.table\
-	bufr/tables/0/wmo/18/codetables/2097.table\
-	bufr/tables/0/wmo/18/codetables/2099.table\
-	bufr/tables/0/wmo/18/codetables/2101.table\
-	bufr/tables/0/wmo/18/codetables/2103.table\
-	bufr/tables/0/wmo/18/codetables/2104.table\
-	bufr/tables/0/wmo/18/codetables/21066.table\
-	bufr/tables/0/wmo/18/codetables/21067.table\
-	bufr/tables/0/wmo/18/codetables/21068.table\
-	bufr/tables/0/wmo/18/codetables/21069.table\
-	bufr/tables/0/wmo/18/codetables/21070.table\
-	bufr/tables/0/wmo/18/codetables/21072.table\
-	bufr/tables/0/wmo/18/codetables/21073.table\
-	bufr/tables/0/wmo/18/codetables/21076.table\
-	bufr/tables/0/wmo/18/codetables/21109.table\
-	bufr/tables/0/wmo/18/codetables/21115.table\
-	bufr/tables/0/wmo/18/codetables/21116.table\
-	bufr/tables/0/wmo/18/codetables/21119.table\
-	bufr/tables/0/wmo/18/codetables/21144.table\
-	bufr/tables/0/wmo/18/codetables/2115.table\
-	bufr/tables/0/wmo/18/codetables/21150.table\
-	bufr/tables/0/wmo/18/codetables/21155.table\
-	bufr/tables/0/wmo/18/codetables/21158.table\
-	bufr/tables/0/wmo/18/codetables/21159.table\
-	bufr/tables/0/wmo/18/codetables/21169.table\
-	bufr/tables/0/wmo/18/codetables/2119.table\
-	bufr/tables/0/wmo/18/codetables/2131.table\
-	bufr/tables/0/wmo/18/codetables/2137.table\
-	bufr/tables/0/wmo/18/codetables/2138.table\
-	bufr/tables/0/wmo/18/codetables/2143.table\
-	bufr/tables/0/wmo/18/codetables/2144.table\
-	bufr/tables/0/wmo/18/codetables/2145.table\
-	bufr/tables/0/wmo/18/codetables/2146.table\
-	bufr/tables/0/wmo/18/codetables/2148.table\
-	bufr/tables/0/wmo/18/codetables/2149.table\
-	bufr/tables/0/wmo/18/codetables/2150.table\
-	bufr/tables/0/wmo/18/codetables/2151.table\
-	bufr/tables/0/wmo/18/codetables/2152.table\
-	bufr/tables/0/wmo/18/codetables/2158.table\
-	bufr/tables/0/wmo/18/codetables/2159.table\
-	bufr/tables/0/wmo/18/codetables/2160.table\
-	bufr/tables/0/wmo/18/codetables/2163.table\
-	bufr/tables/0/wmo/18/codetables/2164.table\
-	bufr/tables/0/wmo/18/codetables/2165.table\
-	bufr/tables/0/wmo/18/codetables/2166.table\
-	bufr/tables/0/wmo/18/codetables/2167.table\
-	bufr/tables/0/wmo/18/codetables/2169.table\
-	bufr/tables/0/wmo/18/codetables/2170.table\
-	bufr/tables/0/wmo/18/codetables/2172.table\
-	bufr/tables/0/wmo/18/codetables/2175.table\
-	bufr/tables/0/wmo/18/codetables/2176.table\
-	bufr/tables/0/wmo/18/codetables/2177.table\
-	bufr/tables/0/wmo/18/codetables/2178.table\
-	bufr/tables/0/wmo/18/codetables/2179.table\
-	bufr/tables/0/wmo/18/codetables/2180.table\
-	bufr/tables/0/wmo/18/codetables/2181.table\
-	bufr/tables/0/wmo/18/codetables/2182.table\
-	bufr/tables/0/wmo/18/codetables/2183.table\
-	bufr/tables/0/wmo/18/codetables/2184.table\
-	bufr/tables/0/wmo/18/codetables/2185.table\
-	bufr/tables/0/wmo/18/codetables/2186.table\
-	bufr/tables/0/wmo/18/codetables/2187.table\
-	bufr/tables/0/wmo/18/codetables/2188.table\
-	bufr/tables/0/wmo/18/codetables/2189.table\
-	bufr/tables/0/wmo/18/codetables/2191.table\
-	bufr/tables/0/wmo/18/codetables/22056.table\
-	bufr/tables/0/wmo/18/codetables/22060.table\
-	bufr/tables/0/wmo/18/codetables/22061.table\
-	bufr/tables/0/wmo/18/codetables/22067.table\
-	bufr/tables/0/wmo/18/codetables/22068.table\
-	bufr/tables/0/wmo/18/codetables/22120.table\
-	bufr/tables/0/wmo/18/codetables/22121.table\
-	bufr/tables/0/wmo/18/codetables/22122.table\
-	bufr/tables/0/wmo/18/codetables/22123.table\
-	bufr/tables/0/wmo/18/codetables/23001.table\
-	bufr/tables/0/wmo/18/codetables/23002.table\
-	bufr/tables/0/wmo/18/codetables/23003.table\
-	bufr/tables/0/wmo/18/codetables/23004.table\
-	bufr/tables/0/wmo/18/codetables/23005.table\
-	bufr/tables/0/wmo/18/codetables/23006.table\
-	bufr/tables/0/wmo/18/codetables/23007.table\
-	bufr/tables/0/wmo/18/codetables/23008.table\
-	bufr/tables/0/wmo/18/codetables/23009.table\
-	bufr/tables/0/wmo/18/codetables/23016.table\
-	bufr/tables/0/wmo/18/codetables/23018.table\
-	bufr/tables/0/wmo/18/codetables/23031.table\
-	bufr/tables/0/wmo/18/codetables/23032.table\
-	bufr/tables/0/wmo/18/codetables/24003.table\
-	bufr/tables/0/wmo/18/codetables/25004.table\
-	bufr/tables/0/wmo/18/codetables/25005.table\
-	bufr/tables/0/wmo/18/codetables/25006.table\
-	bufr/tables/0/wmo/18/codetables/25009.table\
-	bufr/tables/0/wmo/18/codetables/25010.table\
-	bufr/tables/0/wmo/18/codetables/25011.table\
-	bufr/tables/0/wmo/18/codetables/25012.table\
-	bufr/tables/0/wmo/18/codetables/25013.table\
-	bufr/tables/0/wmo/18/codetables/25015.table\
-	bufr/tables/0/wmo/18/codetables/25017.table\
-	bufr/tables/0/wmo/18/codetables/25020.table\
-	bufr/tables/0/wmo/18/codetables/25021.table\
-	bufr/tables/0/wmo/18/codetables/25022.table\
-	bufr/tables/0/wmo/18/codetables/25023.table\
-	bufr/tables/0/wmo/18/codetables/25024.table\
-	bufr/tables/0/wmo/18/codetables/25029.table\
-	bufr/tables/0/wmo/18/codetables/25030.table\
-	bufr/tables/0/wmo/18/codetables/25031.table\
-	bufr/tables/0/wmo/18/codetables/25032.table\
-	bufr/tables/0/wmo/18/codetables/25033.table\
-	bufr/tables/0/wmo/18/codetables/25034.table\
-	bufr/tables/0/wmo/18/codetables/25035.table\
-	bufr/tables/0/wmo/18/codetables/25036.table\
-	bufr/tables/0/wmo/18/codetables/25040.table\
-	bufr/tables/0/wmo/18/codetables/25041.table\
-	bufr/tables/0/wmo/18/codetables/25042.table\
-	bufr/tables/0/wmo/18/codetables/25053.table\
-	bufr/tables/0/wmo/18/codetables/25063.table\
-	bufr/tables/0/wmo/18/codetables/25069.table\
-	bufr/tables/0/wmo/18/codetables/25086.table\
-	bufr/tables/0/wmo/18/codetables/25090.table\
-	bufr/tables/0/wmo/18/codetables/25093.table\
-	bufr/tables/0/wmo/18/codetables/25095.table\
-	bufr/tables/0/wmo/18/codetables/25096.table\
-	bufr/tables/0/wmo/18/codetables/25097.table\
-	bufr/tables/0/wmo/18/codetables/25098.table\
-	bufr/tables/0/wmo/18/codetables/25099.table\
-	bufr/tables/0/wmo/18/codetables/25110.table\
-	bufr/tables/0/wmo/18/codetables/25120.table\
-	bufr/tables/0/wmo/18/codetables/25122.table\
-	bufr/tables/0/wmo/18/codetables/25123.table\
-	bufr/tables/0/wmo/18/codetables/25124.table\
-	bufr/tables/0/wmo/18/codetables/25150.table\
-	bufr/tables/0/wmo/18/codetables/25174.table\
-	bufr/tables/0/wmo/18/codetables/26010.table\
-	bufr/tables/0/wmo/18/codetables/29001.table\
-	bufr/tables/0/wmo/18/codetables/29002.table\
-	bufr/tables/0/wmo/18/codetables/30031.table\
-	bufr/tables/0/wmo/18/codetables/30032.table\
-	bufr/tables/0/wmo/18/codetables/31021.table\
-	bufr/tables/0/wmo/18/codetables/31031.table\
-	bufr/tables/0/wmo/18/codetables/33002.table\
-	bufr/tables/0/wmo/18/codetables/33003.table\
-	bufr/tables/0/wmo/18/codetables/33005.table\
-	bufr/tables/0/wmo/18/codetables/33006.table\
-	bufr/tables/0/wmo/18/codetables/33015.table\
-	bufr/tables/0/wmo/18/codetables/33020.table\
-	bufr/tables/0/wmo/18/codetables/33021.table\
-	bufr/tables/0/wmo/18/codetables/33022.table\
-	bufr/tables/0/wmo/18/codetables/33023.table\
-	bufr/tables/0/wmo/18/codetables/33024.table\
-	bufr/tables/0/wmo/18/codetables/33025.table\
-	bufr/tables/0/wmo/18/codetables/33026.table\
-	bufr/tables/0/wmo/18/codetables/33027.table\
-	bufr/tables/0/wmo/18/codetables/33028.table\
-	bufr/tables/0/wmo/18/codetables/33030.table\
-	bufr/tables/0/wmo/18/codetables/33031.table\
-	bufr/tables/0/wmo/18/codetables/33032.table\
-	bufr/tables/0/wmo/18/codetables/33033.table\
-	bufr/tables/0/wmo/18/codetables/33035.table\
-	bufr/tables/0/wmo/18/codetables/33037.table\
-	bufr/tables/0/wmo/18/codetables/33038.table\
-	bufr/tables/0/wmo/18/codetables/33039.table\
-	bufr/tables/0/wmo/18/codetables/33041.table\
-	bufr/tables/0/wmo/18/codetables/33042.table\
-	bufr/tables/0/wmo/18/codetables/33043.table\
-	bufr/tables/0/wmo/18/codetables/33044.table\
-	bufr/tables/0/wmo/18/codetables/33047.table\
-	bufr/tables/0/wmo/18/codetables/33048.table\
-	bufr/tables/0/wmo/18/codetables/33049.table\
-	bufr/tables/0/wmo/18/codetables/33050.table\
-	bufr/tables/0/wmo/18/codetables/33060.table\
-	bufr/tables/0/wmo/18/codetables/33070.table\
-	bufr/tables/0/wmo/18/codetables/33071.table\
-	bufr/tables/0/wmo/18/codetables/33072.table\
-	bufr/tables/0/wmo/18/codetables/33075.table\
-	bufr/tables/0/wmo/18/codetables/33076.table\
-	bufr/tables/0/wmo/18/codetables/33077.table\
-	bufr/tables/0/wmo/18/codetables/33078.table\
-	bufr/tables/0/wmo/18/codetables/33079.table\
-	bufr/tables/0/wmo/18/codetables/33080.table\
-	bufr/tables/0/wmo/18/codetables/33081.table\
-	bufr/tables/0/wmo/18/codetables/33082.table\
-	bufr/tables/0/wmo/18/codetables/33083.table\
-	bufr/tables/0/wmo/18/codetables/35000.table\
-	bufr/tables/0/wmo/18/codetables/35001.table\
-	bufr/tables/0/wmo/18/codetables/35030.table\
-	bufr/tables/0/wmo/18/codetables/35031.table\
-	bufr/tables/0/wmo/18/codetables/35032.table\
-	bufr/tables/0/wmo/18/codetables/35033.table\
-	bufr/tables/0/wmo/18/codetables/35034.table\
-	bufr/tables/0/wmo/18/codetables/35035.table\
-	bufr/tables/0/wmo/18/codetables/40005.table\
-	bufr/tables/0/wmo/18/codetables/40006.table\
-	bufr/tables/0/wmo/18/codetables/40011.table\
-	bufr/tables/0/wmo/18/codetables/40012.table\
-	bufr/tables/0/wmo/18/codetables/40013.table\
-	bufr/tables/0/wmo/18/codetables/40020.table\
-	bufr/tables/0/wmo/18/codetables/40023.table\
-	bufr/tables/0/wmo/18/codetables/40024.table\
-	bufr/tables/0/wmo/18/codetables/40025.table\
-	bufr/tables/0/wmo/18/codetables/4059.table\
-	bufr/tables/0/wmo/18/codetables/4080.table\
-	bufr/tables/0/wmo/18/codetables/8001.table\
-	bufr/tables/0/wmo/18/codetables/8002.table\
-	bufr/tables/0/wmo/18/codetables/8003.table\
-	bufr/tables/0/wmo/18/codetables/8004.table\
-	bufr/tables/0/wmo/18/codetables/8005.table\
-	bufr/tables/0/wmo/18/codetables/8006.table\
-	bufr/tables/0/wmo/18/codetables/8007.table\
-	bufr/tables/0/wmo/18/codetables/8008.table\
-	bufr/tables/0/wmo/18/codetables/8009.table\
-	bufr/tables/0/wmo/18/codetables/8010.table\
-	bufr/tables/0/wmo/18/codetables/8011.table\
-	bufr/tables/0/wmo/18/codetables/8012.table\
-	bufr/tables/0/wmo/18/codetables/8013.table\
-	bufr/tables/0/wmo/18/codetables/8014.table\
-	bufr/tables/0/wmo/18/codetables/8016.table\
-	bufr/tables/0/wmo/18/codetables/8017.table\
-	bufr/tables/0/wmo/18/codetables/8018.table\
-	bufr/tables/0/wmo/18/codetables/8019.table\
-	bufr/tables/0/wmo/18/codetables/8021.table\
-	bufr/tables/0/wmo/18/codetables/8023.table\
-	bufr/tables/0/wmo/18/codetables/8024.table\
-	bufr/tables/0/wmo/18/codetables/8025.table\
-	bufr/tables/0/wmo/18/codetables/8026.table\
-	bufr/tables/0/wmo/18/codetables/8029.table\
-	bufr/tables/0/wmo/18/codetables/8033.table\
-	bufr/tables/0/wmo/18/codetables/8035.table\
-	bufr/tables/0/wmo/18/codetables/8036.table\
-	bufr/tables/0/wmo/18/codetables/8039.table\
-	bufr/tables/0/wmo/18/codetables/8040.table\
-	bufr/tables/0/wmo/18/codetables/8041.table\
-	bufr/tables/0/wmo/18/codetables/8042.table\
-	bufr/tables/0/wmo/18/codetables/8043.table\
-	bufr/tables/0/wmo/18/codetables/8050.table\
-	bufr/tables/0/wmo/18/codetables/8051.table\
-	bufr/tables/0/wmo/18/codetables/8052.table\
-	bufr/tables/0/wmo/18/codetables/8053.table\
-	bufr/tables/0/wmo/18/codetables/8054.table\
-	bufr/tables/0/wmo/18/codetables/8060.table\
-	bufr/tables/0/wmo/18/codetables/8065.table\
-	bufr/tables/0/wmo/18/codetables/8066.table\
-	bufr/tables/0/wmo/18/codetables/8070.table\
-	bufr/tables/0/wmo/18/codetables/8072.table\
-	bufr/tables/0/wmo/18/codetables/8074.table\
-	bufr/tables/0/wmo/18/codetables/8075.table\
-	bufr/tables/0/wmo/18/codetables/8076.table\
-	bufr/tables/0/wmo/18/codetables/8077.table\
-	bufr/tables/0/wmo/18/codetables/8079.table\
-	bufr/tables/0/wmo/18/codetables/8080.table\
-	bufr/tables/0/wmo/18/codetables/8081.table\
-	bufr/tables/0/wmo/18/codetables/8082.table\
-	bufr/tables/0/wmo/18/codetables/8083.table\
-	bufr/tables/0/wmo/18/codetables/8085.table\
-	bufr/tables/0/wmo/18/codetables/8086.table
-
-definitionsbufr_tables_0_wmo_19dir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/19
-dist_definitionsbufr_tables_0_wmo_19_DATA = \
-	bufr/tables/0/wmo/19/element.table\
-	bufr/tables/0/wmo/19/sequence.def
-
-definitionsbufr_tables_0_wmo_19_codetablesdir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/19/codetables
-dist_definitionsbufr_tables_0_wmo_19_codetables_DATA = \
-	bufr/tables/0/wmo/19/codetables/1003.table\
-	bufr/tables/0/wmo/19/codetables/10063.table\
-	bufr/tables/0/wmo/19/codetables/10064.table\
-	bufr/tables/0/wmo/19/codetables/1007.table\
-	bufr/tables/0/wmo/19/codetables/1024.table\
-	bufr/tables/0/wmo/19/codetables/1028.table\
-	bufr/tables/0/wmo/19/codetables/1029.table\
-	bufr/tables/0/wmo/19/codetables/1033.table\
-	bufr/tables/0/wmo/19/codetables/1034.table\
-	bufr/tables/0/wmo/19/codetables/1036.table\
-	bufr/tables/0/wmo/19/codetables/1038.table\
-	bufr/tables/0/wmo/19/codetables/1052.table\
-	bufr/tables/0/wmo/19/codetables/1090.table\
-	bufr/tables/0/wmo/19/codetables/1092.table\
-	bufr/tables/0/wmo/19/codetables/1101.table\
-	bufr/tables/0/wmo/19/codetables/11030.table\
-	bufr/tables/0/wmo/19/codetables/11031.table\
-	bufr/tables/0/wmo/19/codetables/11037.table\
-	bufr/tables/0/wmo/19/codetables/11038.table\
-	bufr/tables/0/wmo/19/codetables/11039.table\
-	bufr/tables/0/wmo/19/codetables/13038.table\
-	bufr/tables/0/wmo/19/codetables/13039.table\
-	bufr/tables/0/wmo/19/codetables/13040.table\
-	bufr/tables/0/wmo/19/codetables/13041.table\
-	bufr/tables/0/wmo/19/codetables/13051.table\
-	bufr/tables/0/wmo/19/codetables/13056.table\
-	bufr/tables/0/wmo/19/codetables/13057.table\
-	bufr/tables/0/wmo/19/codetables/15025.table\
-	bufr/tables/0/wmo/19/codetables/19001.table\
-	bufr/tables/0/wmo/19/codetables/19008.table\
-	bufr/tables/0/wmo/19/codetables/19010.table\
-	bufr/tables/0/wmo/19/codetables/19100.table\
-	bufr/tables/0/wmo/19/codetables/19101.table\
-	bufr/tables/0/wmo/19/codetables/19102.table\
-	bufr/tables/0/wmo/19/codetables/19103.table\
-	bufr/tables/0/wmo/19/codetables/19104.table\
-	bufr/tables/0/wmo/19/codetables/19105.table\
-	bufr/tables/0/wmo/19/codetables/19107.table\
-	bufr/tables/0/wmo/19/codetables/19108.table\
-	bufr/tables/0/wmo/19/codetables/19109.table\
-	bufr/tables/0/wmo/19/codetables/19110.table\
-	bufr/tables/0/wmo/19/codetables/19113.table\
-	bufr/tables/0/wmo/19/codetables/19117.table\
-	bufr/tables/0/wmo/19/codetables/19119.table\
-	bufr/tables/0/wmo/19/codetables/20003.table\
-	bufr/tables/0/wmo/19/codetables/20004.table\
-	bufr/tables/0/wmo/19/codetables/20005.table\
-	bufr/tables/0/wmo/19/codetables/20006.table\
-	bufr/tables/0/wmo/19/codetables/20008.table\
-	bufr/tables/0/wmo/19/codetables/20009.table\
-	bufr/tables/0/wmo/19/codetables/2001.table\
-	bufr/tables/0/wmo/19/codetables/20011.table\
-	bufr/tables/0/wmo/19/codetables/20012.table\
-	bufr/tables/0/wmo/19/codetables/20017.table\
-	bufr/tables/0/wmo/19/codetables/20018.table\
-	bufr/tables/0/wmo/19/codetables/2002.table\
-	bufr/tables/0/wmo/19/codetables/20021.table\
-	bufr/tables/0/wmo/19/codetables/20022.table\
-	bufr/tables/0/wmo/19/codetables/20023.table\
-	bufr/tables/0/wmo/19/codetables/20024.table\
-	bufr/tables/0/wmo/19/codetables/20025.table\
-	bufr/tables/0/wmo/19/codetables/20026.table\
-	bufr/tables/0/wmo/19/codetables/20027.table\
-	bufr/tables/0/wmo/19/codetables/20028.table\
-	bufr/tables/0/wmo/19/codetables/20029.table\
-	bufr/tables/0/wmo/19/codetables/2003.table\
-	bufr/tables/0/wmo/19/codetables/20032.table\
-	bufr/tables/0/wmo/19/codetables/20033.table\
-	bufr/tables/0/wmo/19/codetables/20034.table\
-	bufr/tables/0/wmo/19/codetables/20035.table\
-	bufr/tables/0/wmo/19/codetables/20036.table\
-	bufr/tables/0/wmo/19/codetables/20037.table\
-	bufr/tables/0/wmo/19/codetables/2004.table\
-	bufr/tables/0/wmo/19/codetables/20040.table\
-	bufr/tables/0/wmo/19/codetables/20041.table\
-	bufr/tables/0/wmo/19/codetables/20042.table\
-	bufr/tables/0/wmo/19/codetables/20045.table\
-	bufr/tables/0/wmo/19/codetables/20048.table\
-	bufr/tables/0/wmo/19/codetables/20050.table\
-	bufr/tables/0/wmo/19/codetables/20055.table\
-	bufr/tables/0/wmo/19/codetables/20056.table\
-	bufr/tables/0/wmo/19/codetables/20062.table\
-	bufr/tables/0/wmo/19/codetables/20063.table\
-	bufr/tables/0/wmo/19/codetables/20071.table\
-	bufr/tables/0/wmo/19/codetables/20085.table\
-	bufr/tables/0/wmo/19/codetables/20086.table\
-	bufr/tables/0/wmo/19/codetables/20087.table\
-	bufr/tables/0/wmo/19/codetables/20089.table\
-	bufr/tables/0/wmo/19/codetables/20090.table\
-	bufr/tables/0/wmo/19/codetables/20101.table\
-	bufr/tables/0/wmo/19/codetables/20102.table\
-	bufr/tables/0/wmo/19/codetables/20103.table\
-	bufr/tables/0/wmo/19/codetables/20104.table\
-	bufr/tables/0/wmo/19/codetables/20105.table\
-	bufr/tables/0/wmo/19/codetables/20106.table\
-	bufr/tables/0/wmo/19/codetables/20107.table\
-	bufr/tables/0/wmo/19/codetables/20108.table\
-	bufr/tables/0/wmo/19/codetables/2011.table\
-	bufr/tables/0/wmo/19/codetables/20119.table\
-	bufr/tables/0/wmo/19/codetables/20124.table\
-	bufr/tables/0/wmo/19/codetables/2013.table\
-	bufr/tables/0/wmo/19/codetables/20136.table\
-	bufr/tables/0/wmo/19/codetables/2014.table\
-	bufr/tables/0/wmo/19/codetables/2015.table\
-	bufr/tables/0/wmo/19/codetables/2016.table\
-	bufr/tables/0/wmo/19/codetables/2017.table\
-	bufr/tables/0/wmo/19/codetables/2019.table\
-	bufr/tables/0/wmo/19/codetables/2020.table\
-	bufr/tables/0/wmo/19/codetables/2021.table\
-	bufr/tables/0/wmo/19/codetables/2022.table\
-	bufr/tables/0/wmo/19/codetables/2023.table\
-	bufr/tables/0/wmo/19/codetables/2024.table\
-	bufr/tables/0/wmo/19/codetables/2025.table\
-	bufr/tables/0/wmo/19/codetables/2030.table\
-	bufr/tables/0/wmo/19/codetables/2031.table\
-	bufr/tables/0/wmo/19/codetables/2032.table\
-	bufr/tables/0/wmo/19/codetables/2033.table\
-	bufr/tables/0/wmo/19/codetables/2034.table\
-	bufr/tables/0/wmo/19/codetables/2036.table\
-	bufr/tables/0/wmo/19/codetables/2037.table\
-	bufr/tables/0/wmo/19/codetables/2038.table\
-	bufr/tables/0/wmo/19/codetables/2039.table\
-	bufr/tables/0/wmo/19/codetables/2040.table\
-	bufr/tables/0/wmo/19/codetables/2041.table\
-	bufr/tables/0/wmo/19/codetables/2042.table\
-	bufr/tables/0/wmo/19/codetables/2044.table\
-	bufr/tables/0/wmo/19/codetables/2045.table\
-	bufr/tables/0/wmo/19/codetables/2046.table\
-	bufr/tables/0/wmo/19/codetables/2047.table\
-	bufr/tables/0/wmo/19/codetables/2048.table\
-	bufr/tables/0/wmo/19/codetables/2049.table\
-	bufr/tables/0/wmo/19/codetables/2050.table\
-	bufr/tables/0/wmo/19/codetables/2051.table\
-	bufr/tables/0/wmo/19/codetables/2052.table\
-	bufr/tables/0/wmo/19/codetables/2053.table\
-	bufr/tables/0/wmo/19/codetables/2054.table\
-	bufr/tables/0/wmo/19/codetables/2055.table\
-	bufr/tables/0/wmo/19/codetables/2056.table\
-	bufr/tables/0/wmo/19/codetables/2057.table\
-	bufr/tables/0/wmo/19/codetables/2058.table\
-	bufr/tables/0/wmo/19/codetables/2059.table\
-	bufr/tables/0/wmo/19/codetables/2060.table\
-	bufr/tables/0/wmo/19/codetables/2061.table\
-	bufr/tables/0/wmo/19/codetables/2062.table\
-	bufr/tables/0/wmo/19/codetables/2064.table\
-	bufr/tables/0/wmo/19/codetables/2066.table\
-	bufr/tables/0/wmo/19/codetables/2070.table\
-	bufr/tables/0/wmo/19/codetables/2080.table\
-	bufr/tables/0/wmo/19/codetables/2081.table\
-	bufr/tables/0/wmo/19/codetables/2083.table\
-	bufr/tables/0/wmo/19/codetables/2084.table\
-	bufr/tables/0/wmo/19/codetables/2095.table\
-	bufr/tables/0/wmo/19/codetables/2096.table\
-	bufr/tables/0/wmo/19/codetables/2097.table\
-	bufr/tables/0/wmo/19/codetables/2099.table\
-	bufr/tables/0/wmo/19/codetables/2101.table\
-	bufr/tables/0/wmo/19/codetables/2103.table\
-	bufr/tables/0/wmo/19/codetables/2104.table\
-	bufr/tables/0/wmo/19/codetables/21066.table\
-	bufr/tables/0/wmo/19/codetables/21067.table\
-	bufr/tables/0/wmo/19/codetables/21068.table\
-	bufr/tables/0/wmo/19/codetables/21069.table\
-	bufr/tables/0/wmo/19/codetables/21070.table\
-	bufr/tables/0/wmo/19/codetables/21072.table\
-	bufr/tables/0/wmo/19/codetables/21073.table\
-	bufr/tables/0/wmo/19/codetables/21076.table\
-	bufr/tables/0/wmo/19/codetables/21109.table\
-	bufr/tables/0/wmo/19/codetables/21115.table\
-	bufr/tables/0/wmo/19/codetables/21116.table\
-	bufr/tables/0/wmo/19/codetables/21119.table\
-	bufr/tables/0/wmo/19/codetables/21144.table\
-	bufr/tables/0/wmo/19/codetables/2115.table\
-	bufr/tables/0/wmo/19/codetables/21150.table\
-	bufr/tables/0/wmo/19/codetables/21155.table\
-	bufr/tables/0/wmo/19/codetables/21158.table\
-	bufr/tables/0/wmo/19/codetables/21159.table\
-	bufr/tables/0/wmo/19/codetables/21169.table\
-	bufr/tables/0/wmo/19/codetables/2119.table\
-	bufr/tables/0/wmo/19/codetables/2131.table\
-	bufr/tables/0/wmo/19/codetables/2137.table\
-	bufr/tables/0/wmo/19/codetables/2138.table\
-	bufr/tables/0/wmo/19/codetables/2139.table\
-	bufr/tables/0/wmo/19/codetables/2143.table\
-	bufr/tables/0/wmo/19/codetables/2144.table\
-	bufr/tables/0/wmo/19/codetables/2145.table\
-	bufr/tables/0/wmo/19/codetables/2146.table\
-	bufr/tables/0/wmo/19/codetables/2148.table\
-	bufr/tables/0/wmo/19/codetables/2149.table\
-	bufr/tables/0/wmo/19/codetables/2150.table\
-	bufr/tables/0/wmo/19/codetables/2151.table\
-	bufr/tables/0/wmo/19/codetables/2152.table\
-	bufr/tables/0/wmo/19/codetables/2158.table\
-	bufr/tables/0/wmo/19/codetables/2159.table\
-	bufr/tables/0/wmo/19/codetables/2160.table\
-	bufr/tables/0/wmo/19/codetables/2163.table\
-	bufr/tables/0/wmo/19/codetables/2164.table\
-	bufr/tables/0/wmo/19/codetables/2165.table\
-	bufr/tables/0/wmo/19/codetables/2166.table\
-	bufr/tables/0/wmo/19/codetables/2167.table\
-	bufr/tables/0/wmo/19/codetables/2169.table\
-	bufr/tables/0/wmo/19/codetables/2170.table\
-	bufr/tables/0/wmo/19/codetables/2172.table\
-	bufr/tables/0/wmo/19/codetables/2175.table\
-	bufr/tables/0/wmo/19/codetables/2176.table\
-	bufr/tables/0/wmo/19/codetables/2177.table\
-	bufr/tables/0/wmo/19/codetables/2178.table\
-	bufr/tables/0/wmo/19/codetables/2179.table\
-	bufr/tables/0/wmo/19/codetables/2180.table\
-	bufr/tables/0/wmo/19/codetables/2181.table\
-	bufr/tables/0/wmo/19/codetables/2182.table\
-	bufr/tables/0/wmo/19/codetables/2183.table\
-	bufr/tables/0/wmo/19/codetables/2184.table\
-	bufr/tables/0/wmo/19/codetables/2185.table\
-	bufr/tables/0/wmo/19/codetables/2186.table\
-	bufr/tables/0/wmo/19/codetables/2187.table\
-	bufr/tables/0/wmo/19/codetables/2188.table\
-	bufr/tables/0/wmo/19/codetables/2189.table\
-	bufr/tables/0/wmo/19/codetables/2191.table\
-	bufr/tables/0/wmo/19/codetables/22056.table\
-	bufr/tables/0/wmo/19/codetables/22060.table\
-	bufr/tables/0/wmo/19/codetables/22061.table\
-	bufr/tables/0/wmo/19/codetables/22067.table\
-	bufr/tables/0/wmo/19/codetables/22068.table\
-	bufr/tables/0/wmo/19/codetables/22120.table\
-	bufr/tables/0/wmo/19/codetables/22121.table\
-	bufr/tables/0/wmo/19/codetables/22122.table\
-	bufr/tables/0/wmo/19/codetables/22123.table\
-	bufr/tables/0/wmo/19/codetables/22178.table\
-	bufr/tables/0/wmo/19/codetables/23001.table\
-	bufr/tables/0/wmo/19/codetables/23002.table\
-	bufr/tables/0/wmo/19/codetables/23003.table\
-	bufr/tables/0/wmo/19/codetables/23004.table\
-	bufr/tables/0/wmo/19/codetables/23005.table\
-	bufr/tables/0/wmo/19/codetables/23006.table\
-	bufr/tables/0/wmo/19/codetables/23007.table\
-	bufr/tables/0/wmo/19/codetables/23008.table\
-	bufr/tables/0/wmo/19/codetables/23009.table\
-	bufr/tables/0/wmo/19/codetables/23016.table\
-	bufr/tables/0/wmo/19/codetables/23018.table\
-	bufr/tables/0/wmo/19/codetables/23031.table\
-	bufr/tables/0/wmo/19/codetables/23032.table\
-	bufr/tables/0/wmo/19/codetables/24003.table\
-	bufr/tables/0/wmo/19/codetables/25004.table\
-	bufr/tables/0/wmo/19/codetables/25005.table\
-	bufr/tables/0/wmo/19/codetables/25006.table\
-	bufr/tables/0/wmo/19/codetables/25009.table\
-	bufr/tables/0/wmo/19/codetables/25010.table\
-	bufr/tables/0/wmo/19/codetables/25011.table\
-	bufr/tables/0/wmo/19/codetables/25012.table\
-	bufr/tables/0/wmo/19/codetables/25013.table\
-	bufr/tables/0/wmo/19/codetables/25015.table\
-	bufr/tables/0/wmo/19/codetables/25017.table\
-	bufr/tables/0/wmo/19/codetables/25020.table\
-	bufr/tables/0/wmo/19/codetables/25021.table\
-	bufr/tables/0/wmo/19/codetables/25022.table\
-	bufr/tables/0/wmo/19/codetables/25023.table\
-	bufr/tables/0/wmo/19/codetables/25024.table\
-	bufr/tables/0/wmo/19/codetables/25029.table\
-	bufr/tables/0/wmo/19/codetables/25030.table\
-	bufr/tables/0/wmo/19/codetables/25031.table\
-	bufr/tables/0/wmo/19/codetables/25032.table\
-	bufr/tables/0/wmo/19/codetables/25033.table\
-	bufr/tables/0/wmo/19/codetables/25034.table\
-	bufr/tables/0/wmo/19/codetables/25035.table\
-	bufr/tables/0/wmo/19/codetables/25036.table\
-	bufr/tables/0/wmo/19/codetables/25040.table\
-	bufr/tables/0/wmo/19/codetables/25041.table\
-	bufr/tables/0/wmo/19/codetables/25042.table\
-	bufr/tables/0/wmo/19/codetables/25053.table\
-	bufr/tables/0/wmo/19/codetables/25063.table\
-	bufr/tables/0/wmo/19/codetables/25069.table\
-	bufr/tables/0/wmo/19/codetables/25086.table\
-	bufr/tables/0/wmo/19/codetables/25090.table\
-	bufr/tables/0/wmo/19/codetables/25093.table\
-	bufr/tables/0/wmo/19/codetables/25095.table\
-	bufr/tables/0/wmo/19/codetables/25096.table\
-	bufr/tables/0/wmo/19/codetables/25097.table\
-	bufr/tables/0/wmo/19/codetables/25098.table\
-	bufr/tables/0/wmo/19/codetables/25099.table\
-	bufr/tables/0/wmo/19/codetables/25110.table\
-	bufr/tables/0/wmo/19/codetables/25120.table\
-	bufr/tables/0/wmo/19/codetables/25122.table\
-	bufr/tables/0/wmo/19/codetables/25123.table\
-	bufr/tables/0/wmo/19/codetables/25124.table\
-	bufr/tables/0/wmo/19/codetables/25150.table\
-	bufr/tables/0/wmo/19/codetables/25174.table\
-	bufr/tables/0/wmo/19/codetables/25181.table\
-	bufr/tables/0/wmo/19/codetables/25182.table\
-	bufr/tables/0/wmo/19/codetables/25184.table\
-	bufr/tables/0/wmo/19/codetables/26010.table\
-	bufr/tables/0/wmo/19/codetables/29001.table\
-	bufr/tables/0/wmo/19/codetables/29002.table\
-	bufr/tables/0/wmo/19/codetables/30031.table\
-	bufr/tables/0/wmo/19/codetables/30032.table\
-	bufr/tables/0/wmo/19/codetables/31021.table\
-	bufr/tables/0/wmo/19/codetables/31031.table\
-	bufr/tables/0/wmo/19/codetables/33002.table\
-	bufr/tables/0/wmo/19/codetables/33003.table\
-	bufr/tables/0/wmo/19/codetables/33005.table\
-	bufr/tables/0/wmo/19/codetables/33006.table\
-	bufr/tables/0/wmo/19/codetables/33015.table\
-	bufr/tables/0/wmo/19/codetables/33020.table\
-	bufr/tables/0/wmo/19/codetables/33021.table\
-	bufr/tables/0/wmo/19/codetables/33022.table\
-	bufr/tables/0/wmo/19/codetables/33023.table\
-	bufr/tables/0/wmo/19/codetables/33024.table\
-	bufr/tables/0/wmo/19/codetables/33025.table\
-	bufr/tables/0/wmo/19/codetables/33026.table\
-	bufr/tables/0/wmo/19/codetables/33027.table\
-	bufr/tables/0/wmo/19/codetables/33028.table\
-	bufr/tables/0/wmo/19/codetables/33030.table\
-	bufr/tables/0/wmo/19/codetables/33031.table\
-	bufr/tables/0/wmo/19/codetables/33032.table\
-	bufr/tables/0/wmo/19/codetables/33033.table\
-	bufr/tables/0/wmo/19/codetables/33035.table\
-	bufr/tables/0/wmo/19/codetables/33037.table\
-	bufr/tables/0/wmo/19/codetables/33038.table\
-	bufr/tables/0/wmo/19/codetables/33039.table\
-	bufr/tables/0/wmo/19/codetables/33041.table\
-	bufr/tables/0/wmo/19/codetables/33042.table\
-	bufr/tables/0/wmo/19/codetables/33043.table\
-	bufr/tables/0/wmo/19/codetables/33044.table\
-	bufr/tables/0/wmo/19/codetables/33047.table\
-	bufr/tables/0/wmo/19/codetables/33048.table\
-	bufr/tables/0/wmo/19/codetables/33049.table\
-	bufr/tables/0/wmo/19/codetables/33050.table\
-	bufr/tables/0/wmo/19/codetables/33060.table\
-	bufr/tables/0/wmo/19/codetables/33070.table\
-	bufr/tables/0/wmo/19/codetables/33071.table\
-	bufr/tables/0/wmo/19/codetables/33072.table\
-	bufr/tables/0/wmo/19/codetables/33075.table\
-	bufr/tables/0/wmo/19/codetables/33076.table\
-	bufr/tables/0/wmo/19/codetables/33077.table\
-	bufr/tables/0/wmo/19/codetables/33078.table\
-	bufr/tables/0/wmo/19/codetables/33079.table\
-	bufr/tables/0/wmo/19/codetables/33080.table\
-	bufr/tables/0/wmo/19/codetables/33081.table\
-	bufr/tables/0/wmo/19/codetables/33082.table\
-	bufr/tables/0/wmo/19/codetables/33083.table\
-	bufr/tables/0/wmo/19/codetables/33084.table\
-	bufr/tables/0/wmo/19/codetables/33086.table\
-	bufr/tables/0/wmo/19/codetables/35000.table\
-	bufr/tables/0/wmo/19/codetables/35001.table\
-	bufr/tables/0/wmo/19/codetables/35030.table\
-	bufr/tables/0/wmo/19/codetables/35031.table\
-	bufr/tables/0/wmo/19/codetables/35032.table\
-	bufr/tables/0/wmo/19/codetables/35033.table\
-	bufr/tables/0/wmo/19/codetables/35034.table\
-	bufr/tables/0/wmo/19/codetables/35035.table\
-	bufr/tables/0/wmo/19/codetables/40005.table\
-	bufr/tables/0/wmo/19/codetables/40006.table\
-	bufr/tables/0/wmo/19/codetables/40011.table\
-	bufr/tables/0/wmo/19/codetables/40012.table\
-	bufr/tables/0/wmo/19/codetables/40013.table\
-	bufr/tables/0/wmo/19/codetables/40020.table\
-	bufr/tables/0/wmo/19/codetables/40023.table\
-	bufr/tables/0/wmo/19/codetables/40024.table\
-	bufr/tables/0/wmo/19/codetables/40025.table\
-	bufr/tables/0/wmo/19/codetables/4059.table\
-	bufr/tables/0/wmo/19/codetables/4080.table\
-	bufr/tables/0/wmo/19/codetables/8001.table\
-	bufr/tables/0/wmo/19/codetables/8002.table\
-	bufr/tables/0/wmo/19/codetables/8003.table\
-	bufr/tables/0/wmo/19/codetables/8004.table\
-	bufr/tables/0/wmo/19/codetables/8005.table\
-	bufr/tables/0/wmo/19/codetables/8006.table\
-	bufr/tables/0/wmo/19/codetables/8007.table\
-	bufr/tables/0/wmo/19/codetables/8008.table\
-	bufr/tables/0/wmo/19/codetables/8009.table\
-	bufr/tables/0/wmo/19/codetables/8010.table\
-	bufr/tables/0/wmo/19/codetables/8011.table\
-	bufr/tables/0/wmo/19/codetables/8012.table\
-	bufr/tables/0/wmo/19/codetables/8013.table\
-	bufr/tables/0/wmo/19/codetables/8014.table\
-	bufr/tables/0/wmo/19/codetables/8016.table\
-	bufr/tables/0/wmo/19/codetables/8017.table\
-	bufr/tables/0/wmo/19/codetables/8018.table\
-	bufr/tables/0/wmo/19/codetables/8019.table\
-	bufr/tables/0/wmo/19/codetables/8021.table\
-	bufr/tables/0/wmo/19/codetables/8023.table\
-	bufr/tables/0/wmo/19/codetables/8024.table\
-	bufr/tables/0/wmo/19/codetables/8025.table\
-	bufr/tables/0/wmo/19/codetables/8026.table\
-	bufr/tables/0/wmo/19/codetables/8029.table\
-	bufr/tables/0/wmo/19/codetables/8033.table\
-	bufr/tables/0/wmo/19/codetables/8035.table\
-	bufr/tables/0/wmo/19/codetables/8036.table\
-	bufr/tables/0/wmo/19/codetables/8039.table\
-	bufr/tables/0/wmo/19/codetables/8040.table\
-	bufr/tables/0/wmo/19/codetables/8041.table\
-	bufr/tables/0/wmo/19/codetables/8042.table\
-	bufr/tables/0/wmo/19/codetables/8043.table\
-	bufr/tables/0/wmo/19/codetables/8050.table\
-	bufr/tables/0/wmo/19/codetables/8051.table\
-	bufr/tables/0/wmo/19/codetables/8052.table\
-	bufr/tables/0/wmo/19/codetables/8053.table\
-	bufr/tables/0/wmo/19/codetables/8054.table\
-	bufr/tables/0/wmo/19/codetables/8060.table\
-	bufr/tables/0/wmo/19/codetables/8065.table\
-	bufr/tables/0/wmo/19/codetables/8066.table\
-	bufr/tables/0/wmo/19/codetables/8070.table\
-	bufr/tables/0/wmo/19/codetables/8072.table\
-	bufr/tables/0/wmo/19/codetables/8074.table\
-	bufr/tables/0/wmo/19/codetables/8075.table\
-	bufr/tables/0/wmo/19/codetables/8076.table\
-	bufr/tables/0/wmo/19/codetables/8077.table\
-	bufr/tables/0/wmo/19/codetables/8079.table\
-	bufr/tables/0/wmo/19/codetables/8080.table\
-	bufr/tables/0/wmo/19/codetables/8081.table\
-	bufr/tables/0/wmo/19/codetables/8082.table\
-	bufr/tables/0/wmo/19/codetables/8083.table\
-	bufr/tables/0/wmo/19/codetables/8085.table\
-	bufr/tables/0/wmo/19/codetables/8086.table
-
-definitionsbufr_tables_0_wmo_20dir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/20
-dist_definitionsbufr_tables_0_wmo_20_DATA = \
-	bufr/tables/0/wmo/20/element.table\
-	bufr/tables/0/wmo/20/sequence.def
-
-definitionsbufr_tables_0_wmo_20_codetablesdir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/20/codetables
-dist_definitionsbufr_tables_0_wmo_20_codetables_DATA = \
-	bufr/tables/0/wmo/20/codetables/1003.table\
-	bufr/tables/0/wmo/20/codetables/10063.table\
-	bufr/tables/0/wmo/20/codetables/10064.table\
-	bufr/tables/0/wmo/20/codetables/1007.table\
-	bufr/tables/0/wmo/20/codetables/1024.table\
-	bufr/tables/0/wmo/20/codetables/1028.table\
-	bufr/tables/0/wmo/20/codetables/1029.table\
-	bufr/tables/0/wmo/20/codetables/1033.table\
-	bufr/tables/0/wmo/20/codetables/1034.table\
-	bufr/tables/0/wmo/20/codetables/1036.table\
-	bufr/tables/0/wmo/20/codetables/1038.table\
-	bufr/tables/0/wmo/20/codetables/1052.table\
-	bufr/tables/0/wmo/20/codetables/1090.table\
-	bufr/tables/0/wmo/20/codetables/1092.table\
-	bufr/tables/0/wmo/20/codetables/1101.table\
-	bufr/tables/0/wmo/20/codetables/11030.table\
-	bufr/tables/0/wmo/20/codetables/11031.table\
-	bufr/tables/0/wmo/20/codetables/11037.table\
-	bufr/tables/0/wmo/20/codetables/11038.table\
-	bufr/tables/0/wmo/20/codetables/11039.table\
-	bufr/tables/0/wmo/20/codetables/13038.table\
-	bufr/tables/0/wmo/20/codetables/13039.table\
-	bufr/tables/0/wmo/20/codetables/13040.table\
-	bufr/tables/0/wmo/20/codetables/13041.table\
-	bufr/tables/0/wmo/20/codetables/13051.table\
-	bufr/tables/0/wmo/20/codetables/13056.table\
-	bufr/tables/0/wmo/20/codetables/13057.table\
-	bufr/tables/0/wmo/20/codetables/15025.table\
-	bufr/tables/0/wmo/20/codetables/19001.table\
-	bufr/tables/0/wmo/20/codetables/19008.table\
-	bufr/tables/0/wmo/20/codetables/19010.table\
-	bufr/tables/0/wmo/20/codetables/19100.table\
-	bufr/tables/0/wmo/20/codetables/19101.table\
-	bufr/tables/0/wmo/20/codetables/19102.table\
-	bufr/tables/0/wmo/20/codetables/19103.table\
-	bufr/tables/0/wmo/20/codetables/19104.table\
-	bufr/tables/0/wmo/20/codetables/19105.table\
-	bufr/tables/0/wmo/20/codetables/19107.table\
-	bufr/tables/0/wmo/20/codetables/19108.table\
-	bufr/tables/0/wmo/20/codetables/19109.table\
-	bufr/tables/0/wmo/20/codetables/19110.table\
-	bufr/tables/0/wmo/20/codetables/19113.table\
-	bufr/tables/0/wmo/20/codetables/19117.table\
-	bufr/tables/0/wmo/20/codetables/19119.table\
-	bufr/tables/0/wmo/20/codetables/20003.table\
-	bufr/tables/0/wmo/20/codetables/20004.table\
-	bufr/tables/0/wmo/20/codetables/20005.table\
-	bufr/tables/0/wmo/20/codetables/20006.table\
-	bufr/tables/0/wmo/20/codetables/20008.table\
-	bufr/tables/0/wmo/20/codetables/20009.table\
-	bufr/tables/0/wmo/20/codetables/2001.table\
-	bufr/tables/0/wmo/20/codetables/20011.table\
-	bufr/tables/0/wmo/20/codetables/20012.table\
-	bufr/tables/0/wmo/20/codetables/20017.table\
-	bufr/tables/0/wmo/20/codetables/20018.table\
-	bufr/tables/0/wmo/20/codetables/2002.table\
-	bufr/tables/0/wmo/20/codetables/20021.table\
-	bufr/tables/0/wmo/20/codetables/20022.table\
-	bufr/tables/0/wmo/20/codetables/20023.table\
-	bufr/tables/0/wmo/20/codetables/20024.table\
-	bufr/tables/0/wmo/20/codetables/20025.table\
-	bufr/tables/0/wmo/20/codetables/20026.table\
-	bufr/tables/0/wmo/20/codetables/20027.table\
-	bufr/tables/0/wmo/20/codetables/20028.table\
-	bufr/tables/0/wmo/20/codetables/20029.table\
-	bufr/tables/0/wmo/20/codetables/2003.table\
-	bufr/tables/0/wmo/20/codetables/20032.table\
-	bufr/tables/0/wmo/20/codetables/20033.table\
-	bufr/tables/0/wmo/20/codetables/20034.table\
-	bufr/tables/0/wmo/20/codetables/20035.table\
-	bufr/tables/0/wmo/20/codetables/20036.table\
-	bufr/tables/0/wmo/20/codetables/20037.table\
-	bufr/tables/0/wmo/20/codetables/2004.table\
-	bufr/tables/0/wmo/20/codetables/20040.table\
-	bufr/tables/0/wmo/20/codetables/20041.table\
-	bufr/tables/0/wmo/20/codetables/20042.table\
-	bufr/tables/0/wmo/20/codetables/20045.table\
-	bufr/tables/0/wmo/20/codetables/20048.table\
-	bufr/tables/0/wmo/20/codetables/20050.table\
-	bufr/tables/0/wmo/20/codetables/20055.table\
-	bufr/tables/0/wmo/20/codetables/20056.table\
-	bufr/tables/0/wmo/20/codetables/20062.table\
-	bufr/tables/0/wmo/20/codetables/20063.table\
-	bufr/tables/0/wmo/20/codetables/20071.table\
-	bufr/tables/0/wmo/20/codetables/20085.table\
-	bufr/tables/0/wmo/20/codetables/20086.table\
-	bufr/tables/0/wmo/20/codetables/20087.table\
-	bufr/tables/0/wmo/20/codetables/20089.table\
-	bufr/tables/0/wmo/20/codetables/20090.table\
-	bufr/tables/0/wmo/20/codetables/20101.table\
-	bufr/tables/0/wmo/20/codetables/20102.table\
-	bufr/tables/0/wmo/20/codetables/20103.table\
-	bufr/tables/0/wmo/20/codetables/20104.table\
-	bufr/tables/0/wmo/20/codetables/20105.table\
-	bufr/tables/0/wmo/20/codetables/20106.table\
-	bufr/tables/0/wmo/20/codetables/20107.table\
-	bufr/tables/0/wmo/20/codetables/20108.table\
-	bufr/tables/0/wmo/20/codetables/2011.table\
-	bufr/tables/0/wmo/20/codetables/20119.table\
-	bufr/tables/0/wmo/20/codetables/20124.table\
-	bufr/tables/0/wmo/20/codetables/2013.table\
-	bufr/tables/0/wmo/20/codetables/20136.table\
-	bufr/tables/0/wmo/20/codetables/2014.table\
-	bufr/tables/0/wmo/20/codetables/2015.table\
-	bufr/tables/0/wmo/20/codetables/2016.table\
-	bufr/tables/0/wmo/20/codetables/2017.table\
-	bufr/tables/0/wmo/20/codetables/2019.table\
-	bufr/tables/0/wmo/20/codetables/2020.table\
-	bufr/tables/0/wmo/20/codetables/2021.table\
-	bufr/tables/0/wmo/20/codetables/2022.table\
-	bufr/tables/0/wmo/20/codetables/2023.table\
-	bufr/tables/0/wmo/20/codetables/2024.table\
-	bufr/tables/0/wmo/20/codetables/2025.table\
-	bufr/tables/0/wmo/20/codetables/2030.table\
-	bufr/tables/0/wmo/20/codetables/2031.table\
-	bufr/tables/0/wmo/20/codetables/2032.table\
-	bufr/tables/0/wmo/20/codetables/2033.table\
-	bufr/tables/0/wmo/20/codetables/2034.table\
-	bufr/tables/0/wmo/20/codetables/2036.table\
-	bufr/tables/0/wmo/20/codetables/2037.table\
-	bufr/tables/0/wmo/20/codetables/2038.table\
-	bufr/tables/0/wmo/20/codetables/2039.table\
-	bufr/tables/0/wmo/20/codetables/2040.table\
-	bufr/tables/0/wmo/20/codetables/2041.table\
-	bufr/tables/0/wmo/20/codetables/2042.table\
-	bufr/tables/0/wmo/20/codetables/2044.table\
-	bufr/tables/0/wmo/20/codetables/2045.table\
-	bufr/tables/0/wmo/20/codetables/2046.table\
-	bufr/tables/0/wmo/20/codetables/2047.table\
-	bufr/tables/0/wmo/20/codetables/2048.table\
-	bufr/tables/0/wmo/20/codetables/2049.table\
-	bufr/tables/0/wmo/20/codetables/2050.table\
-	bufr/tables/0/wmo/20/codetables/2051.table\
-	bufr/tables/0/wmo/20/codetables/2052.table\
-	bufr/tables/0/wmo/20/codetables/2053.table\
-	bufr/tables/0/wmo/20/codetables/2054.table\
-	bufr/tables/0/wmo/20/codetables/2055.table\
-	bufr/tables/0/wmo/20/codetables/2056.table\
-	bufr/tables/0/wmo/20/codetables/2057.table\
-	bufr/tables/0/wmo/20/codetables/2058.table\
-	bufr/tables/0/wmo/20/codetables/2059.table\
-	bufr/tables/0/wmo/20/codetables/2060.table\
-	bufr/tables/0/wmo/20/codetables/2061.table\
-	bufr/tables/0/wmo/20/codetables/2062.table\
-	bufr/tables/0/wmo/20/codetables/2064.table\
-	bufr/tables/0/wmo/20/codetables/2066.table\
-	bufr/tables/0/wmo/20/codetables/2070.table\
-	bufr/tables/0/wmo/20/codetables/2080.table\
-	bufr/tables/0/wmo/20/codetables/2081.table\
-	bufr/tables/0/wmo/20/codetables/2083.table\
-	bufr/tables/0/wmo/20/codetables/2084.table\
-	bufr/tables/0/wmo/20/codetables/2095.table\
-	bufr/tables/0/wmo/20/codetables/2096.table\
-	bufr/tables/0/wmo/20/codetables/2097.table\
-	bufr/tables/0/wmo/20/codetables/2099.table\
-	bufr/tables/0/wmo/20/codetables/2101.table\
-	bufr/tables/0/wmo/20/codetables/2103.table\
-	bufr/tables/0/wmo/20/codetables/2104.table\
-	bufr/tables/0/wmo/20/codetables/21066.table\
-	bufr/tables/0/wmo/20/codetables/21067.table\
-	bufr/tables/0/wmo/20/codetables/21068.table\
-	bufr/tables/0/wmo/20/codetables/21069.table\
-	bufr/tables/0/wmo/20/codetables/21070.table\
-	bufr/tables/0/wmo/20/codetables/21072.table\
-	bufr/tables/0/wmo/20/codetables/21073.table\
-	bufr/tables/0/wmo/20/codetables/21076.table\
-	bufr/tables/0/wmo/20/codetables/21109.table\
-	bufr/tables/0/wmo/20/codetables/21115.table\
-	bufr/tables/0/wmo/20/codetables/21116.table\
-	bufr/tables/0/wmo/20/codetables/21119.table\
-	bufr/tables/0/wmo/20/codetables/21144.table\
-	bufr/tables/0/wmo/20/codetables/2115.table\
-	bufr/tables/0/wmo/20/codetables/21150.table\
-	bufr/tables/0/wmo/20/codetables/21155.table\
-	bufr/tables/0/wmo/20/codetables/21158.table\
-	bufr/tables/0/wmo/20/codetables/21159.table\
-	bufr/tables/0/wmo/20/codetables/21169.table\
-	bufr/tables/0/wmo/20/codetables/2119.table\
-	bufr/tables/0/wmo/20/codetables/2131.table\
-	bufr/tables/0/wmo/20/codetables/2137.table\
-	bufr/tables/0/wmo/20/codetables/2138.table\
-	bufr/tables/0/wmo/20/codetables/2139.table\
-	bufr/tables/0/wmo/20/codetables/2143.table\
-	bufr/tables/0/wmo/20/codetables/2144.table\
-	bufr/tables/0/wmo/20/codetables/2145.table\
-	bufr/tables/0/wmo/20/codetables/2146.table\
-	bufr/tables/0/wmo/20/codetables/2148.table\
-	bufr/tables/0/wmo/20/codetables/2149.table\
-	bufr/tables/0/wmo/20/codetables/2150.table\
-	bufr/tables/0/wmo/20/codetables/2151.table\
-	bufr/tables/0/wmo/20/codetables/2152.table\
-	bufr/tables/0/wmo/20/codetables/2158.table\
-	bufr/tables/0/wmo/20/codetables/2159.table\
-	bufr/tables/0/wmo/20/codetables/2160.table\
-	bufr/tables/0/wmo/20/codetables/2163.table\
-	bufr/tables/0/wmo/20/codetables/2164.table\
-	bufr/tables/0/wmo/20/codetables/2165.table\
-	bufr/tables/0/wmo/20/codetables/2166.table\
-	bufr/tables/0/wmo/20/codetables/2167.table\
-	bufr/tables/0/wmo/20/codetables/2169.table\
-	bufr/tables/0/wmo/20/codetables/2170.table\
-	bufr/tables/0/wmo/20/codetables/2172.table\
-	bufr/tables/0/wmo/20/codetables/2175.table\
-	bufr/tables/0/wmo/20/codetables/2176.table\
-	bufr/tables/0/wmo/20/codetables/2177.table\
-	bufr/tables/0/wmo/20/codetables/2178.table\
-	bufr/tables/0/wmo/20/codetables/2179.table\
-	bufr/tables/0/wmo/20/codetables/2180.table\
-	bufr/tables/0/wmo/20/codetables/2181.table\
-	bufr/tables/0/wmo/20/codetables/2182.table\
-	bufr/tables/0/wmo/20/codetables/2183.table\
-	bufr/tables/0/wmo/20/codetables/2184.table\
-	bufr/tables/0/wmo/20/codetables/2185.table\
-	bufr/tables/0/wmo/20/codetables/2186.table\
-	bufr/tables/0/wmo/20/codetables/2187.table\
-	bufr/tables/0/wmo/20/codetables/2188.table\
-	bufr/tables/0/wmo/20/codetables/2189.table\
-	bufr/tables/0/wmo/20/codetables/2191.table\
-	bufr/tables/0/wmo/20/codetables/22056.table\
-	bufr/tables/0/wmo/20/codetables/22060.table\
-	bufr/tables/0/wmo/20/codetables/22061.table\
-	bufr/tables/0/wmo/20/codetables/22067.table\
-	bufr/tables/0/wmo/20/codetables/22068.table\
-	bufr/tables/0/wmo/20/codetables/22120.table\
-	bufr/tables/0/wmo/20/codetables/22121.table\
-	bufr/tables/0/wmo/20/codetables/22122.table\
-	bufr/tables/0/wmo/20/codetables/22123.table\
-	bufr/tables/0/wmo/20/codetables/22178.table\
-	bufr/tables/0/wmo/20/codetables/23001.table\
-	bufr/tables/0/wmo/20/codetables/23002.table\
-	bufr/tables/0/wmo/20/codetables/23003.table\
-	bufr/tables/0/wmo/20/codetables/23004.table\
-	bufr/tables/0/wmo/20/codetables/23005.table\
-	bufr/tables/0/wmo/20/codetables/23006.table\
-	bufr/tables/0/wmo/20/codetables/23007.table\
-	bufr/tables/0/wmo/20/codetables/23008.table\
-	bufr/tables/0/wmo/20/codetables/23009.table\
-	bufr/tables/0/wmo/20/codetables/23016.table\
-	bufr/tables/0/wmo/20/codetables/23018.table\
-	bufr/tables/0/wmo/20/codetables/23031.table\
-	bufr/tables/0/wmo/20/codetables/23032.table\
-	bufr/tables/0/wmo/20/codetables/24003.table\
-	bufr/tables/0/wmo/20/codetables/25004.table\
-	bufr/tables/0/wmo/20/codetables/25005.table\
-	bufr/tables/0/wmo/20/codetables/25006.table\
-	bufr/tables/0/wmo/20/codetables/25009.table\
-	bufr/tables/0/wmo/20/codetables/25010.table\
-	bufr/tables/0/wmo/20/codetables/25011.table\
-	bufr/tables/0/wmo/20/codetables/25012.table\
-	bufr/tables/0/wmo/20/codetables/25013.table\
-	bufr/tables/0/wmo/20/codetables/25015.table\
-	bufr/tables/0/wmo/20/codetables/25017.table\
-	bufr/tables/0/wmo/20/codetables/25020.table\
-	bufr/tables/0/wmo/20/codetables/25021.table\
-	bufr/tables/0/wmo/20/codetables/25022.table\
-	bufr/tables/0/wmo/20/codetables/25023.table\
-	bufr/tables/0/wmo/20/codetables/25024.table\
-	bufr/tables/0/wmo/20/codetables/25029.table\
-	bufr/tables/0/wmo/20/codetables/25030.table\
-	bufr/tables/0/wmo/20/codetables/25031.table\
-	bufr/tables/0/wmo/20/codetables/25032.table\
-	bufr/tables/0/wmo/20/codetables/25033.table\
-	bufr/tables/0/wmo/20/codetables/25034.table\
-	bufr/tables/0/wmo/20/codetables/25035.table\
-	bufr/tables/0/wmo/20/codetables/25036.table\
-	bufr/tables/0/wmo/20/codetables/25040.table\
-	bufr/tables/0/wmo/20/codetables/25041.table\
-	bufr/tables/0/wmo/20/codetables/25042.table\
-	bufr/tables/0/wmo/20/codetables/25053.table\
-	bufr/tables/0/wmo/20/codetables/25063.table\
-	bufr/tables/0/wmo/20/codetables/25069.table\
-	bufr/tables/0/wmo/20/codetables/25086.table\
-	bufr/tables/0/wmo/20/codetables/25090.table\
-	bufr/tables/0/wmo/20/codetables/25093.table\
-	bufr/tables/0/wmo/20/codetables/25095.table\
-	bufr/tables/0/wmo/20/codetables/25096.table\
-	bufr/tables/0/wmo/20/codetables/25097.table\
-	bufr/tables/0/wmo/20/codetables/25098.table\
-	bufr/tables/0/wmo/20/codetables/25099.table\
-	bufr/tables/0/wmo/20/codetables/25110.table\
-	bufr/tables/0/wmo/20/codetables/25120.table\
-	bufr/tables/0/wmo/20/codetables/25122.table\
-	bufr/tables/0/wmo/20/codetables/25123.table\
-	bufr/tables/0/wmo/20/codetables/25124.table\
-	bufr/tables/0/wmo/20/codetables/25150.table\
-	bufr/tables/0/wmo/20/codetables/25174.table\
-	bufr/tables/0/wmo/20/codetables/25181.table\
-	bufr/tables/0/wmo/20/codetables/25182.table\
-	bufr/tables/0/wmo/20/codetables/25184.table\
-	bufr/tables/0/wmo/20/codetables/26010.table\
-	bufr/tables/0/wmo/20/codetables/29001.table\
-	bufr/tables/0/wmo/20/codetables/29002.table\
-	bufr/tables/0/wmo/20/codetables/30031.table\
-	bufr/tables/0/wmo/20/codetables/30032.table\
-	bufr/tables/0/wmo/20/codetables/31021.table\
-	bufr/tables/0/wmo/20/codetables/31031.table\
-	bufr/tables/0/wmo/20/codetables/33002.table\
-	bufr/tables/0/wmo/20/codetables/33003.table\
-	bufr/tables/0/wmo/20/codetables/33005.table\
-	bufr/tables/0/wmo/20/codetables/33006.table\
-	bufr/tables/0/wmo/20/codetables/33015.table\
-	bufr/tables/0/wmo/20/codetables/33020.table\
-	bufr/tables/0/wmo/20/codetables/33021.table\
-	bufr/tables/0/wmo/20/codetables/33022.table\
-	bufr/tables/0/wmo/20/codetables/33023.table\
-	bufr/tables/0/wmo/20/codetables/33024.table\
-	bufr/tables/0/wmo/20/codetables/33025.table\
-	bufr/tables/0/wmo/20/codetables/33026.table\
-	bufr/tables/0/wmo/20/codetables/33027.table\
-	bufr/tables/0/wmo/20/codetables/33028.table\
-	bufr/tables/0/wmo/20/codetables/33030.table\
-	bufr/tables/0/wmo/20/codetables/33031.table\
-	bufr/tables/0/wmo/20/codetables/33032.table\
-	bufr/tables/0/wmo/20/codetables/33033.table\
-	bufr/tables/0/wmo/20/codetables/33035.table\
-	bufr/tables/0/wmo/20/codetables/33037.table\
-	bufr/tables/0/wmo/20/codetables/33038.table\
-	bufr/tables/0/wmo/20/codetables/33039.table\
-	bufr/tables/0/wmo/20/codetables/33041.table\
-	bufr/tables/0/wmo/20/codetables/33042.table\
-	bufr/tables/0/wmo/20/codetables/33043.table\
-	bufr/tables/0/wmo/20/codetables/33044.table\
-	bufr/tables/0/wmo/20/codetables/33047.table\
-	bufr/tables/0/wmo/20/codetables/33048.table\
-	bufr/tables/0/wmo/20/codetables/33049.table\
-	bufr/tables/0/wmo/20/codetables/33050.table\
-	bufr/tables/0/wmo/20/codetables/33060.table\
-	bufr/tables/0/wmo/20/codetables/33070.table\
-	bufr/tables/0/wmo/20/codetables/33071.table\
-	bufr/tables/0/wmo/20/codetables/33072.table\
-	bufr/tables/0/wmo/20/codetables/33075.table\
-	bufr/tables/0/wmo/20/codetables/33076.table\
-	bufr/tables/0/wmo/20/codetables/33077.table\
-	bufr/tables/0/wmo/20/codetables/33078.table\
-	bufr/tables/0/wmo/20/codetables/33079.table\
-	bufr/tables/0/wmo/20/codetables/33080.table\
-	bufr/tables/0/wmo/20/codetables/33081.table\
-	bufr/tables/0/wmo/20/codetables/33082.table\
-	bufr/tables/0/wmo/20/codetables/33083.table\
-	bufr/tables/0/wmo/20/codetables/33084.table\
-	bufr/tables/0/wmo/20/codetables/33086.table\
-	bufr/tables/0/wmo/20/codetables/35000.table\
-	bufr/tables/0/wmo/20/codetables/35001.table\
-	bufr/tables/0/wmo/20/codetables/35030.table\
-	bufr/tables/0/wmo/20/codetables/35031.table\
-	bufr/tables/0/wmo/20/codetables/35032.table\
-	bufr/tables/0/wmo/20/codetables/35033.table\
-	bufr/tables/0/wmo/20/codetables/35034.table\
-	bufr/tables/0/wmo/20/codetables/35035.table\
-	bufr/tables/0/wmo/20/codetables/40005.table\
-	bufr/tables/0/wmo/20/codetables/40006.table\
-	bufr/tables/0/wmo/20/codetables/40011.table\
-	bufr/tables/0/wmo/20/codetables/40012.table\
-	bufr/tables/0/wmo/20/codetables/40013.table\
-	bufr/tables/0/wmo/20/codetables/40020.table\
-	bufr/tables/0/wmo/20/codetables/40023.table\
-	bufr/tables/0/wmo/20/codetables/40024.table\
-	bufr/tables/0/wmo/20/codetables/40025.table\
-	bufr/tables/0/wmo/20/codetables/4059.table\
-	bufr/tables/0/wmo/20/codetables/4080.table\
-	bufr/tables/0/wmo/20/codetables/8001.table\
-	bufr/tables/0/wmo/20/codetables/8002.table\
-	bufr/tables/0/wmo/20/codetables/8003.table\
-	bufr/tables/0/wmo/20/codetables/8004.table\
-	bufr/tables/0/wmo/20/codetables/8005.table\
-	bufr/tables/0/wmo/20/codetables/8006.table\
-	bufr/tables/0/wmo/20/codetables/8007.table\
-	bufr/tables/0/wmo/20/codetables/8008.table\
-	bufr/tables/0/wmo/20/codetables/8009.table\
-	bufr/tables/0/wmo/20/codetables/8010.table\
-	bufr/tables/0/wmo/20/codetables/8011.table\
-	bufr/tables/0/wmo/20/codetables/8012.table\
-	bufr/tables/0/wmo/20/codetables/8013.table\
-	bufr/tables/0/wmo/20/codetables/8014.table\
-	bufr/tables/0/wmo/20/codetables/8016.table\
-	bufr/tables/0/wmo/20/codetables/8017.table\
-	bufr/tables/0/wmo/20/codetables/8018.table\
-	bufr/tables/0/wmo/20/codetables/8019.table\
-	bufr/tables/0/wmo/20/codetables/8021.table\
-	bufr/tables/0/wmo/20/codetables/8023.table\
-	bufr/tables/0/wmo/20/codetables/8024.table\
-	bufr/tables/0/wmo/20/codetables/8025.table\
-	bufr/tables/0/wmo/20/codetables/8026.table\
-	bufr/tables/0/wmo/20/codetables/8029.table\
-	bufr/tables/0/wmo/20/codetables/8033.table\
-	bufr/tables/0/wmo/20/codetables/8035.table\
-	bufr/tables/0/wmo/20/codetables/8036.table\
-	bufr/tables/0/wmo/20/codetables/8039.table\
-	bufr/tables/0/wmo/20/codetables/8040.table\
-	bufr/tables/0/wmo/20/codetables/8041.table\
-	bufr/tables/0/wmo/20/codetables/8042.table\
-	bufr/tables/0/wmo/20/codetables/8043.table\
-	bufr/tables/0/wmo/20/codetables/8050.table\
-	bufr/tables/0/wmo/20/codetables/8051.table\
-	bufr/tables/0/wmo/20/codetables/8052.table\
-	bufr/tables/0/wmo/20/codetables/8053.table\
-	bufr/tables/0/wmo/20/codetables/8054.table\
-	bufr/tables/0/wmo/20/codetables/8060.table\
-	bufr/tables/0/wmo/20/codetables/8065.table\
-	bufr/tables/0/wmo/20/codetables/8066.table\
-	bufr/tables/0/wmo/20/codetables/8070.table\
-	bufr/tables/0/wmo/20/codetables/8072.table\
-	bufr/tables/0/wmo/20/codetables/8074.table\
-	bufr/tables/0/wmo/20/codetables/8075.table\
-	bufr/tables/0/wmo/20/codetables/8076.table\
-	bufr/tables/0/wmo/20/codetables/8077.table\
-	bufr/tables/0/wmo/20/codetables/8079.table\
-	bufr/tables/0/wmo/20/codetables/8080.table\
-	bufr/tables/0/wmo/20/codetables/8081.table\
-	bufr/tables/0/wmo/20/codetables/8082.table\
-	bufr/tables/0/wmo/20/codetables/8083.table\
-	bufr/tables/0/wmo/20/codetables/8085.table\
-	bufr/tables/0/wmo/20/codetables/8086.table
-
-definitionsbufr_tables_0_wmo_21dir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/21
-dist_definitionsbufr_tables_0_wmo_21_DATA = \
-	bufr/tables/0/wmo/21/element.table\
-	bufr/tables/0/wmo/21/sequence.def
-
-definitionsbufr_tables_0_wmo_21_codetablesdir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/21/codetables
-dist_definitionsbufr_tables_0_wmo_21_codetables_DATA = \
-	bufr/tables/0/wmo/21/codetables/1003.table\
-	bufr/tables/0/wmo/21/codetables/10063.table\
-	bufr/tables/0/wmo/21/codetables/10064.table\
-	bufr/tables/0/wmo/21/codetables/1007.table\
-	bufr/tables/0/wmo/21/codetables/1024.table\
-	bufr/tables/0/wmo/21/codetables/1028.table\
-	bufr/tables/0/wmo/21/codetables/1029.table\
-	bufr/tables/0/wmo/21/codetables/1033.table\
-	bufr/tables/0/wmo/21/codetables/1034.table\
-	bufr/tables/0/wmo/21/codetables/1036.table\
-	bufr/tables/0/wmo/21/codetables/1038.table\
-	bufr/tables/0/wmo/21/codetables/1052.table\
-	bufr/tables/0/wmo/21/codetables/1090.table\
-	bufr/tables/0/wmo/21/codetables/1092.table\
-	bufr/tables/0/wmo/21/codetables/1101.table\
-	bufr/tables/0/wmo/21/codetables/11030.table\
-	bufr/tables/0/wmo/21/codetables/11031.table\
-	bufr/tables/0/wmo/21/codetables/11037.table\
-	bufr/tables/0/wmo/21/codetables/11038.table\
-	bufr/tables/0/wmo/21/codetables/11039.table\
-	bufr/tables/0/wmo/21/codetables/13038.table\
-	bufr/tables/0/wmo/21/codetables/13039.table\
-	bufr/tables/0/wmo/21/codetables/13040.table\
-	bufr/tables/0/wmo/21/codetables/13041.table\
-	bufr/tables/0/wmo/21/codetables/13051.table\
-	bufr/tables/0/wmo/21/codetables/13056.table\
-	bufr/tables/0/wmo/21/codetables/13057.table\
-	bufr/tables/0/wmo/21/codetables/15025.table\
-	bufr/tables/0/wmo/21/codetables/19001.table\
-	bufr/tables/0/wmo/21/codetables/19008.table\
-	bufr/tables/0/wmo/21/codetables/19010.table\
-	bufr/tables/0/wmo/21/codetables/19100.table\
-	bufr/tables/0/wmo/21/codetables/19101.table\
-	bufr/tables/0/wmo/21/codetables/19102.table\
-	bufr/tables/0/wmo/21/codetables/19103.table\
-	bufr/tables/0/wmo/21/codetables/19104.table\
-	bufr/tables/0/wmo/21/codetables/19105.table\
-	bufr/tables/0/wmo/21/codetables/19107.table\
-	bufr/tables/0/wmo/21/codetables/19108.table\
-	bufr/tables/0/wmo/21/codetables/19109.table\
-	bufr/tables/0/wmo/21/codetables/19110.table\
-	bufr/tables/0/wmo/21/codetables/19113.table\
-	bufr/tables/0/wmo/21/codetables/19117.table\
-	bufr/tables/0/wmo/21/codetables/19119.table\
-	bufr/tables/0/wmo/21/codetables/20003.table\
-	bufr/tables/0/wmo/21/codetables/20004.table\
-	bufr/tables/0/wmo/21/codetables/20005.table\
-	bufr/tables/0/wmo/21/codetables/20006.table\
-	bufr/tables/0/wmo/21/codetables/20008.table\
-	bufr/tables/0/wmo/21/codetables/20009.table\
-	bufr/tables/0/wmo/21/codetables/2001.table\
-	bufr/tables/0/wmo/21/codetables/20011.table\
-	bufr/tables/0/wmo/21/codetables/20012.table\
-	bufr/tables/0/wmo/21/codetables/20017.table\
-	bufr/tables/0/wmo/21/codetables/20018.table\
-	bufr/tables/0/wmo/21/codetables/2002.table\
-	bufr/tables/0/wmo/21/codetables/20021.table\
-	bufr/tables/0/wmo/21/codetables/20022.table\
-	bufr/tables/0/wmo/21/codetables/20023.table\
-	bufr/tables/0/wmo/21/codetables/20024.table\
-	bufr/tables/0/wmo/21/codetables/20025.table\
-	bufr/tables/0/wmo/21/codetables/20026.table\
-	bufr/tables/0/wmo/21/codetables/20027.table\
-	bufr/tables/0/wmo/21/codetables/20028.table\
-	bufr/tables/0/wmo/21/codetables/20029.table\
-	bufr/tables/0/wmo/21/codetables/2003.table\
-	bufr/tables/0/wmo/21/codetables/20032.table\
-	bufr/tables/0/wmo/21/codetables/20033.table\
-	bufr/tables/0/wmo/21/codetables/20034.table\
-	bufr/tables/0/wmo/21/codetables/20035.table\
-	bufr/tables/0/wmo/21/codetables/20036.table\
-	bufr/tables/0/wmo/21/codetables/20037.table\
-	bufr/tables/0/wmo/21/codetables/2004.table\
-	bufr/tables/0/wmo/21/codetables/20040.table\
-	bufr/tables/0/wmo/21/codetables/20041.table\
-	bufr/tables/0/wmo/21/codetables/20042.table\
-	bufr/tables/0/wmo/21/codetables/20045.table\
-	bufr/tables/0/wmo/21/codetables/20048.table\
-	bufr/tables/0/wmo/21/codetables/20050.table\
-	bufr/tables/0/wmo/21/codetables/20055.table\
-	bufr/tables/0/wmo/21/codetables/20056.table\
-	bufr/tables/0/wmo/21/codetables/20062.table\
-	bufr/tables/0/wmo/21/codetables/20063.table\
-	bufr/tables/0/wmo/21/codetables/20071.table\
-	bufr/tables/0/wmo/21/codetables/20085.table\
-	bufr/tables/0/wmo/21/codetables/20086.table\
-	bufr/tables/0/wmo/21/codetables/20087.table\
-	bufr/tables/0/wmo/21/codetables/20089.table\
-	bufr/tables/0/wmo/21/codetables/20090.table\
-	bufr/tables/0/wmo/21/codetables/20101.table\
-	bufr/tables/0/wmo/21/codetables/20102.table\
-	bufr/tables/0/wmo/21/codetables/20103.table\
-	bufr/tables/0/wmo/21/codetables/20104.table\
-	bufr/tables/0/wmo/21/codetables/20105.table\
-	bufr/tables/0/wmo/21/codetables/20106.table\
-	bufr/tables/0/wmo/21/codetables/20107.table\
-	bufr/tables/0/wmo/21/codetables/20108.table\
-	bufr/tables/0/wmo/21/codetables/2011.table\
-	bufr/tables/0/wmo/21/codetables/20119.table\
-	bufr/tables/0/wmo/21/codetables/20124.table\
-	bufr/tables/0/wmo/21/codetables/2013.table\
-	bufr/tables/0/wmo/21/codetables/20136.table\
-	bufr/tables/0/wmo/21/codetables/20137.table\
-	bufr/tables/0/wmo/21/codetables/2014.table\
-	bufr/tables/0/wmo/21/codetables/2015.table\
-	bufr/tables/0/wmo/21/codetables/2016.table\
-	bufr/tables/0/wmo/21/codetables/2017.table\
-	bufr/tables/0/wmo/21/codetables/2019.table\
-	bufr/tables/0/wmo/21/codetables/2020.table\
-	bufr/tables/0/wmo/21/codetables/2021.table\
-	bufr/tables/0/wmo/21/codetables/2022.table\
-	bufr/tables/0/wmo/21/codetables/2023.table\
-	bufr/tables/0/wmo/21/codetables/2024.table\
-	bufr/tables/0/wmo/21/codetables/2025.table\
-	bufr/tables/0/wmo/21/codetables/2030.table\
-	bufr/tables/0/wmo/21/codetables/2031.table\
-	bufr/tables/0/wmo/21/codetables/2032.table\
-	bufr/tables/0/wmo/21/codetables/2033.table\
-	bufr/tables/0/wmo/21/codetables/2034.table\
-	bufr/tables/0/wmo/21/codetables/2036.table\
-	bufr/tables/0/wmo/21/codetables/2037.table\
-	bufr/tables/0/wmo/21/codetables/2038.table\
-	bufr/tables/0/wmo/21/codetables/2039.table\
-	bufr/tables/0/wmo/21/codetables/2040.table\
-	bufr/tables/0/wmo/21/codetables/2041.table\
-	bufr/tables/0/wmo/21/codetables/2042.table\
-	bufr/tables/0/wmo/21/codetables/2044.table\
-	bufr/tables/0/wmo/21/codetables/2045.table\
-	bufr/tables/0/wmo/21/codetables/2046.table\
-	bufr/tables/0/wmo/21/codetables/2047.table\
-	bufr/tables/0/wmo/21/codetables/2048.table\
-	bufr/tables/0/wmo/21/codetables/2049.table\
-	bufr/tables/0/wmo/21/codetables/2050.table\
-	bufr/tables/0/wmo/21/codetables/2051.table\
-	bufr/tables/0/wmo/21/codetables/2052.table\
-	bufr/tables/0/wmo/21/codetables/2053.table\
-	bufr/tables/0/wmo/21/codetables/2054.table\
-	bufr/tables/0/wmo/21/codetables/2055.table\
-	bufr/tables/0/wmo/21/codetables/2056.table\
-	bufr/tables/0/wmo/21/codetables/2057.table\
-	bufr/tables/0/wmo/21/codetables/2058.table\
-	bufr/tables/0/wmo/21/codetables/2059.table\
-	bufr/tables/0/wmo/21/codetables/2060.table\
-	bufr/tables/0/wmo/21/codetables/2061.table\
-	bufr/tables/0/wmo/21/codetables/2062.table\
-	bufr/tables/0/wmo/21/codetables/2064.table\
-	bufr/tables/0/wmo/21/codetables/2066.table\
-	bufr/tables/0/wmo/21/codetables/2070.table\
-	bufr/tables/0/wmo/21/codetables/2080.table\
-	bufr/tables/0/wmo/21/codetables/2081.table\
-	bufr/tables/0/wmo/21/codetables/2083.table\
-	bufr/tables/0/wmo/21/codetables/2084.table\
-	bufr/tables/0/wmo/21/codetables/2095.table\
-	bufr/tables/0/wmo/21/codetables/2096.table\
-	bufr/tables/0/wmo/21/codetables/2097.table\
-	bufr/tables/0/wmo/21/codetables/2099.table\
-	bufr/tables/0/wmo/21/codetables/2101.table\
-	bufr/tables/0/wmo/21/codetables/2103.table\
-	bufr/tables/0/wmo/21/codetables/2104.table\
-	bufr/tables/0/wmo/21/codetables/21066.table\
-	bufr/tables/0/wmo/21/codetables/21067.table\
-	bufr/tables/0/wmo/21/codetables/21068.table\
-	bufr/tables/0/wmo/21/codetables/21069.table\
-	bufr/tables/0/wmo/21/codetables/21070.table\
-	bufr/tables/0/wmo/21/codetables/21072.table\
-	bufr/tables/0/wmo/21/codetables/21073.table\
-	bufr/tables/0/wmo/21/codetables/21076.table\
-	bufr/tables/0/wmo/21/codetables/21109.table\
-	bufr/tables/0/wmo/21/codetables/21115.table\
-	bufr/tables/0/wmo/21/codetables/21116.table\
-	bufr/tables/0/wmo/21/codetables/21119.table\
-	bufr/tables/0/wmo/21/codetables/21144.table\
-	bufr/tables/0/wmo/21/codetables/2115.table\
-	bufr/tables/0/wmo/21/codetables/21150.table\
-	bufr/tables/0/wmo/21/codetables/21155.table\
-	bufr/tables/0/wmo/21/codetables/21158.table\
-	bufr/tables/0/wmo/21/codetables/21159.table\
-	bufr/tables/0/wmo/21/codetables/21169.table\
-	bufr/tables/0/wmo/21/codetables/2119.table\
-	bufr/tables/0/wmo/21/codetables/2131.table\
-	bufr/tables/0/wmo/21/codetables/2137.table\
-	bufr/tables/0/wmo/21/codetables/2138.table\
-	bufr/tables/0/wmo/21/codetables/2139.table\
-	bufr/tables/0/wmo/21/codetables/2143.table\
-	bufr/tables/0/wmo/21/codetables/2144.table\
-	bufr/tables/0/wmo/21/codetables/2145.table\
-	bufr/tables/0/wmo/21/codetables/2146.table\
-	bufr/tables/0/wmo/21/codetables/2148.table\
-	bufr/tables/0/wmo/21/codetables/2149.table\
-	bufr/tables/0/wmo/21/codetables/2150.table\
-	bufr/tables/0/wmo/21/codetables/2151.table\
-	bufr/tables/0/wmo/21/codetables/2152.table\
-	bufr/tables/0/wmo/21/codetables/2158.table\
-	bufr/tables/0/wmo/21/codetables/2159.table\
-	bufr/tables/0/wmo/21/codetables/2160.table\
-	bufr/tables/0/wmo/21/codetables/2163.table\
-	bufr/tables/0/wmo/21/codetables/2164.table\
-	bufr/tables/0/wmo/21/codetables/2165.table\
-	bufr/tables/0/wmo/21/codetables/2166.table\
-	bufr/tables/0/wmo/21/codetables/2167.table\
-	bufr/tables/0/wmo/21/codetables/2169.table\
-	bufr/tables/0/wmo/21/codetables/2170.table\
-	bufr/tables/0/wmo/21/codetables/2172.table\
-	bufr/tables/0/wmo/21/codetables/2175.table\
-	bufr/tables/0/wmo/21/codetables/2176.table\
-	bufr/tables/0/wmo/21/codetables/2177.table\
-	bufr/tables/0/wmo/21/codetables/2178.table\
-	bufr/tables/0/wmo/21/codetables/2179.table\
-	bufr/tables/0/wmo/21/codetables/2180.table\
-	bufr/tables/0/wmo/21/codetables/2181.table\
-	bufr/tables/0/wmo/21/codetables/2182.table\
-	bufr/tables/0/wmo/21/codetables/2183.table\
-	bufr/tables/0/wmo/21/codetables/2184.table\
-	bufr/tables/0/wmo/21/codetables/2185.table\
-	bufr/tables/0/wmo/21/codetables/2186.table\
-	bufr/tables/0/wmo/21/codetables/2187.table\
-	bufr/tables/0/wmo/21/codetables/2188.table\
-	bufr/tables/0/wmo/21/codetables/2189.table\
-	bufr/tables/0/wmo/21/codetables/2191.table\
-	bufr/tables/0/wmo/21/codetables/22056.table\
-	bufr/tables/0/wmo/21/codetables/22060.table\
-	bufr/tables/0/wmo/21/codetables/22061.table\
-	bufr/tables/0/wmo/21/codetables/22067.table\
-	bufr/tables/0/wmo/21/codetables/22068.table\
-	bufr/tables/0/wmo/21/codetables/22120.table\
-	bufr/tables/0/wmo/21/codetables/22121.table\
-	bufr/tables/0/wmo/21/codetables/22122.table\
-	bufr/tables/0/wmo/21/codetables/22123.table\
-	bufr/tables/0/wmo/21/codetables/22178.table\
-	bufr/tables/0/wmo/21/codetables/23001.table\
-	bufr/tables/0/wmo/21/codetables/23002.table\
-	bufr/tables/0/wmo/21/codetables/23003.table\
-	bufr/tables/0/wmo/21/codetables/23004.table\
-	bufr/tables/0/wmo/21/codetables/23005.table\
-	bufr/tables/0/wmo/21/codetables/23006.table\
-	bufr/tables/0/wmo/21/codetables/23007.table\
-	bufr/tables/0/wmo/21/codetables/23008.table\
-	bufr/tables/0/wmo/21/codetables/23009.table\
-	bufr/tables/0/wmo/21/codetables/23016.table\
-	bufr/tables/0/wmo/21/codetables/23018.table\
-	bufr/tables/0/wmo/21/codetables/23031.table\
-	bufr/tables/0/wmo/21/codetables/23032.table\
-	bufr/tables/0/wmo/21/codetables/24003.table\
-	bufr/tables/0/wmo/21/codetables/25004.table\
-	bufr/tables/0/wmo/21/codetables/25005.table\
-	bufr/tables/0/wmo/21/codetables/25006.table\
-	bufr/tables/0/wmo/21/codetables/25009.table\
-	bufr/tables/0/wmo/21/codetables/25010.table\
-	bufr/tables/0/wmo/21/codetables/25011.table\
-	bufr/tables/0/wmo/21/codetables/25012.table\
-	bufr/tables/0/wmo/21/codetables/25013.table\
-	bufr/tables/0/wmo/21/codetables/25015.table\
-	bufr/tables/0/wmo/21/codetables/25017.table\
-	bufr/tables/0/wmo/21/codetables/25020.table\
-	bufr/tables/0/wmo/21/codetables/25021.table\
-	bufr/tables/0/wmo/21/codetables/25022.table\
-	bufr/tables/0/wmo/21/codetables/25023.table\
-	bufr/tables/0/wmo/21/codetables/25024.table\
-	bufr/tables/0/wmo/21/codetables/25029.table\
-	bufr/tables/0/wmo/21/codetables/25030.table\
-	bufr/tables/0/wmo/21/codetables/25031.table\
-	bufr/tables/0/wmo/21/codetables/25032.table\
-	bufr/tables/0/wmo/21/codetables/25033.table\
-	bufr/tables/0/wmo/21/codetables/25034.table\
-	bufr/tables/0/wmo/21/codetables/25035.table\
-	bufr/tables/0/wmo/21/codetables/25036.table\
-	bufr/tables/0/wmo/21/codetables/25040.table\
-	bufr/tables/0/wmo/21/codetables/25041.table\
-	bufr/tables/0/wmo/21/codetables/25042.table\
-	bufr/tables/0/wmo/21/codetables/25053.table\
-	bufr/tables/0/wmo/21/codetables/25063.table\
-	bufr/tables/0/wmo/21/codetables/25069.table\
-	bufr/tables/0/wmo/21/codetables/25086.table\
-	bufr/tables/0/wmo/21/codetables/25090.table\
-	bufr/tables/0/wmo/21/codetables/25093.table\
-	bufr/tables/0/wmo/21/codetables/25095.table\
-	bufr/tables/0/wmo/21/codetables/25096.table\
-	bufr/tables/0/wmo/21/codetables/25097.table\
-	bufr/tables/0/wmo/21/codetables/25098.table\
-	bufr/tables/0/wmo/21/codetables/25099.table\
-	bufr/tables/0/wmo/21/codetables/25110.table\
-	bufr/tables/0/wmo/21/codetables/25120.table\
-	bufr/tables/0/wmo/21/codetables/25122.table\
-	bufr/tables/0/wmo/21/codetables/25123.table\
-	bufr/tables/0/wmo/21/codetables/25124.table\
-	bufr/tables/0/wmo/21/codetables/25150.table\
-	bufr/tables/0/wmo/21/codetables/25174.table\
-	bufr/tables/0/wmo/21/codetables/25181.table\
-	bufr/tables/0/wmo/21/codetables/25182.table\
-	bufr/tables/0/wmo/21/codetables/25184.table\
-	bufr/tables/0/wmo/21/codetables/26010.table\
-	bufr/tables/0/wmo/21/codetables/29001.table\
-	bufr/tables/0/wmo/21/codetables/29002.table\
-	bufr/tables/0/wmo/21/codetables/30031.table\
-	bufr/tables/0/wmo/21/codetables/30032.table\
-	bufr/tables/0/wmo/21/codetables/31021.table\
-	bufr/tables/0/wmo/21/codetables/31031.table\
-	bufr/tables/0/wmo/21/codetables/33002.table\
-	bufr/tables/0/wmo/21/codetables/33003.table\
-	bufr/tables/0/wmo/21/codetables/33005.table\
-	bufr/tables/0/wmo/21/codetables/33006.table\
-	bufr/tables/0/wmo/21/codetables/33015.table\
-	bufr/tables/0/wmo/21/codetables/33020.table\
-	bufr/tables/0/wmo/21/codetables/33021.table\
-	bufr/tables/0/wmo/21/codetables/33022.table\
-	bufr/tables/0/wmo/21/codetables/33023.table\
-	bufr/tables/0/wmo/21/codetables/33024.table\
-	bufr/tables/0/wmo/21/codetables/33025.table\
-	bufr/tables/0/wmo/21/codetables/33026.table\
-	bufr/tables/0/wmo/21/codetables/33027.table\
-	bufr/tables/0/wmo/21/codetables/33028.table\
-	bufr/tables/0/wmo/21/codetables/33030.table\
-	bufr/tables/0/wmo/21/codetables/33031.table\
-	bufr/tables/0/wmo/21/codetables/33032.table\
-	bufr/tables/0/wmo/21/codetables/33033.table\
-	bufr/tables/0/wmo/21/codetables/33035.table\
-	bufr/tables/0/wmo/21/codetables/33037.table\
-	bufr/tables/0/wmo/21/codetables/33038.table\
-	bufr/tables/0/wmo/21/codetables/33039.table\
-	bufr/tables/0/wmo/21/codetables/33041.table\
-	bufr/tables/0/wmo/21/codetables/33042.table\
-	bufr/tables/0/wmo/21/codetables/33043.table\
-	bufr/tables/0/wmo/21/codetables/33044.table\
-	bufr/tables/0/wmo/21/codetables/33047.table\
-	bufr/tables/0/wmo/21/codetables/33048.table\
-	bufr/tables/0/wmo/21/codetables/33049.table\
-	bufr/tables/0/wmo/21/codetables/33050.table\
-	bufr/tables/0/wmo/21/codetables/33060.table\
-	bufr/tables/0/wmo/21/codetables/33070.table\
-	bufr/tables/0/wmo/21/codetables/33071.table\
-	bufr/tables/0/wmo/21/codetables/33072.table\
-	bufr/tables/0/wmo/21/codetables/33075.table\
-	bufr/tables/0/wmo/21/codetables/33076.table\
-	bufr/tables/0/wmo/21/codetables/33077.table\
-	bufr/tables/0/wmo/21/codetables/33078.table\
-	bufr/tables/0/wmo/21/codetables/33079.table\
-	bufr/tables/0/wmo/21/codetables/33080.table\
-	bufr/tables/0/wmo/21/codetables/33081.table\
-	bufr/tables/0/wmo/21/codetables/33082.table\
-	bufr/tables/0/wmo/21/codetables/33083.table\
-	bufr/tables/0/wmo/21/codetables/33084.table\
-	bufr/tables/0/wmo/21/codetables/33085.table\
-	bufr/tables/0/wmo/21/codetables/33086.table\
-	bufr/tables/0/wmo/21/codetables/33087.table\
-	bufr/tables/0/wmo/21/codetables/33088.table\
-	bufr/tables/0/wmo/21/codetables/35000.table\
-	bufr/tables/0/wmo/21/codetables/35001.table\
-	bufr/tables/0/wmo/21/codetables/35030.table\
-	bufr/tables/0/wmo/21/codetables/35031.table\
-	bufr/tables/0/wmo/21/codetables/35032.table\
-	bufr/tables/0/wmo/21/codetables/35033.table\
-	bufr/tables/0/wmo/21/codetables/35034.table\
-	bufr/tables/0/wmo/21/codetables/35035.table\
-	bufr/tables/0/wmo/21/codetables/40005.table\
-	bufr/tables/0/wmo/21/codetables/40006.table\
-	bufr/tables/0/wmo/21/codetables/40011.table\
-	bufr/tables/0/wmo/21/codetables/40012.table\
-	bufr/tables/0/wmo/21/codetables/40013.table\
-	bufr/tables/0/wmo/21/codetables/40020.table\
-	bufr/tables/0/wmo/21/codetables/40023.table\
-	bufr/tables/0/wmo/21/codetables/40024.table\
-	bufr/tables/0/wmo/21/codetables/40025.table\
-	bufr/tables/0/wmo/21/codetables/4059.table\
-	bufr/tables/0/wmo/21/codetables/4080.table\
-	bufr/tables/0/wmo/21/codetables/8001.table\
-	bufr/tables/0/wmo/21/codetables/8002.table\
-	bufr/tables/0/wmo/21/codetables/8003.table\
-	bufr/tables/0/wmo/21/codetables/8004.table\
-	bufr/tables/0/wmo/21/codetables/8005.table\
-	bufr/tables/0/wmo/21/codetables/8006.table\
-	bufr/tables/0/wmo/21/codetables/8007.table\
-	bufr/tables/0/wmo/21/codetables/8008.table\
-	bufr/tables/0/wmo/21/codetables/8009.table\
-	bufr/tables/0/wmo/21/codetables/8010.table\
-	bufr/tables/0/wmo/21/codetables/8011.table\
-	bufr/tables/0/wmo/21/codetables/8012.table\
-	bufr/tables/0/wmo/21/codetables/8013.table\
-	bufr/tables/0/wmo/21/codetables/8014.table\
-	bufr/tables/0/wmo/21/codetables/8016.table\
-	bufr/tables/0/wmo/21/codetables/8017.table\
-	bufr/tables/0/wmo/21/codetables/8018.table\
-	bufr/tables/0/wmo/21/codetables/8019.table\
-	bufr/tables/0/wmo/21/codetables/8021.table\
-	bufr/tables/0/wmo/21/codetables/8023.table\
-	bufr/tables/0/wmo/21/codetables/8024.table\
-	bufr/tables/0/wmo/21/codetables/8025.table\
-	bufr/tables/0/wmo/21/codetables/8026.table\
-	bufr/tables/0/wmo/21/codetables/8029.table\
-	bufr/tables/0/wmo/21/codetables/8033.table\
-	bufr/tables/0/wmo/21/codetables/8035.table\
-	bufr/tables/0/wmo/21/codetables/8036.table\
-	bufr/tables/0/wmo/21/codetables/8039.table\
-	bufr/tables/0/wmo/21/codetables/8040.table\
-	bufr/tables/0/wmo/21/codetables/8041.table\
-	bufr/tables/0/wmo/21/codetables/8042.table\
-	bufr/tables/0/wmo/21/codetables/8043.table\
-	bufr/tables/0/wmo/21/codetables/8050.table\
-	bufr/tables/0/wmo/21/codetables/8051.table\
-	bufr/tables/0/wmo/21/codetables/8052.table\
-	bufr/tables/0/wmo/21/codetables/8053.table\
-	bufr/tables/0/wmo/21/codetables/8054.table\
-	bufr/tables/0/wmo/21/codetables/8060.table\
-	bufr/tables/0/wmo/21/codetables/8065.table\
-	bufr/tables/0/wmo/21/codetables/8066.table\
-	bufr/tables/0/wmo/21/codetables/8070.table\
-	bufr/tables/0/wmo/21/codetables/8072.table\
-	bufr/tables/0/wmo/21/codetables/8074.table\
-	bufr/tables/0/wmo/21/codetables/8075.table\
-	bufr/tables/0/wmo/21/codetables/8076.table\
-	bufr/tables/0/wmo/21/codetables/8077.table\
-	bufr/tables/0/wmo/21/codetables/8079.table\
-	bufr/tables/0/wmo/21/codetables/8080.table\
-	bufr/tables/0/wmo/21/codetables/8081.table\
-	bufr/tables/0/wmo/21/codetables/8082.table\
-	bufr/tables/0/wmo/21/codetables/8083.table\
-	bufr/tables/0/wmo/21/codetables/8085.table\
-	bufr/tables/0/wmo/21/codetables/8086.table
-
-definitionsbufr_tables_0_wmo_22dir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/22
-dist_definitionsbufr_tables_0_wmo_22_DATA = \
-	bufr/tables/0/wmo/22/element.table\
-	bufr/tables/0/wmo/22/sequence.def
-
-definitionsbufr_tables_0_wmo_22_codetablesdir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/22/codetables
-dist_definitionsbufr_tables_0_wmo_22_codetables_DATA = \
-	bufr/tables/0/wmo/22/codetables/1003.table\
-	bufr/tables/0/wmo/22/codetables/10063.table\
-	bufr/tables/0/wmo/22/codetables/10064.table\
-	bufr/tables/0/wmo/22/codetables/1007.table\
-	bufr/tables/0/wmo/22/codetables/1024.table\
-	bufr/tables/0/wmo/22/codetables/1028.table\
-	bufr/tables/0/wmo/22/codetables/1029.table\
-	bufr/tables/0/wmo/22/codetables/1033.table\
-	bufr/tables/0/wmo/22/codetables/1034.table\
-	bufr/tables/0/wmo/22/codetables/1036.table\
-	bufr/tables/0/wmo/22/codetables/1038.table\
-	bufr/tables/0/wmo/22/codetables/1052.table\
-	bufr/tables/0/wmo/22/codetables/1090.table\
-	bufr/tables/0/wmo/22/codetables/1092.table\
-	bufr/tables/0/wmo/22/codetables/1101.table\
-	bufr/tables/0/wmo/22/codetables/11030.table\
-	bufr/tables/0/wmo/22/codetables/11031.table\
-	bufr/tables/0/wmo/22/codetables/11037.table\
-	bufr/tables/0/wmo/22/codetables/11038.table\
-	bufr/tables/0/wmo/22/codetables/11039.table\
-	bufr/tables/0/wmo/22/codetables/13038.table\
-	bufr/tables/0/wmo/22/codetables/13039.table\
-	bufr/tables/0/wmo/22/codetables/13040.table\
-	bufr/tables/0/wmo/22/codetables/13041.table\
-	bufr/tables/0/wmo/22/codetables/13051.table\
-	bufr/tables/0/wmo/22/codetables/13056.table\
-	bufr/tables/0/wmo/22/codetables/13057.table\
-	bufr/tables/0/wmo/22/codetables/15025.table\
-	bufr/tables/0/wmo/22/codetables/19001.table\
-	bufr/tables/0/wmo/22/codetables/19008.table\
-	bufr/tables/0/wmo/22/codetables/19010.table\
-	bufr/tables/0/wmo/22/codetables/19100.table\
-	bufr/tables/0/wmo/22/codetables/19101.table\
-	bufr/tables/0/wmo/22/codetables/19102.table\
-	bufr/tables/0/wmo/22/codetables/19103.table\
-	bufr/tables/0/wmo/22/codetables/19104.table\
-	bufr/tables/0/wmo/22/codetables/19105.table\
-	bufr/tables/0/wmo/22/codetables/19107.table\
-	bufr/tables/0/wmo/22/codetables/19108.table\
-	bufr/tables/0/wmo/22/codetables/19109.table\
-	bufr/tables/0/wmo/22/codetables/19110.table\
-	bufr/tables/0/wmo/22/codetables/19113.table\
-	bufr/tables/0/wmo/22/codetables/19117.table\
-	bufr/tables/0/wmo/22/codetables/19119.table\
-	bufr/tables/0/wmo/22/codetables/20003.table\
-	bufr/tables/0/wmo/22/codetables/20004.table\
-	bufr/tables/0/wmo/22/codetables/20005.table\
-	bufr/tables/0/wmo/22/codetables/20006.table\
-	bufr/tables/0/wmo/22/codetables/20008.table\
-	bufr/tables/0/wmo/22/codetables/20009.table\
-	bufr/tables/0/wmo/22/codetables/2001.table\
-	bufr/tables/0/wmo/22/codetables/20011.table\
-	bufr/tables/0/wmo/22/codetables/20012.table\
-	bufr/tables/0/wmo/22/codetables/20017.table\
-	bufr/tables/0/wmo/22/codetables/20018.table\
-	bufr/tables/0/wmo/22/codetables/2002.table\
-	bufr/tables/0/wmo/22/codetables/20021.table\
-	bufr/tables/0/wmo/22/codetables/20022.table\
-	bufr/tables/0/wmo/22/codetables/20023.table\
-	bufr/tables/0/wmo/22/codetables/20024.table\
-	bufr/tables/0/wmo/22/codetables/20025.table\
-	bufr/tables/0/wmo/22/codetables/20026.table\
-	bufr/tables/0/wmo/22/codetables/20027.table\
-	bufr/tables/0/wmo/22/codetables/20028.table\
-	bufr/tables/0/wmo/22/codetables/20029.table\
-	bufr/tables/0/wmo/22/codetables/2003.table\
-	bufr/tables/0/wmo/22/codetables/20032.table\
-	bufr/tables/0/wmo/22/codetables/20033.table\
-	bufr/tables/0/wmo/22/codetables/20034.table\
-	bufr/tables/0/wmo/22/codetables/20035.table\
-	bufr/tables/0/wmo/22/codetables/20036.table\
-	bufr/tables/0/wmo/22/codetables/20037.table\
-	bufr/tables/0/wmo/22/codetables/2004.table\
-	bufr/tables/0/wmo/22/codetables/20040.table\
-	bufr/tables/0/wmo/22/codetables/20041.table\
-	bufr/tables/0/wmo/22/codetables/20042.table\
-	bufr/tables/0/wmo/22/codetables/20045.table\
-	bufr/tables/0/wmo/22/codetables/20048.table\
-	bufr/tables/0/wmo/22/codetables/20050.table\
-	bufr/tables/0/wmo/22/codetables/20055.table\
-	bufr/tables/0/wmo/22/codetables/20056.table\
-	bufr/tables/0/wmo/22/codetables/20062.table\
-	bufr/tables/0/wmo/22/codetables/20063.table\
-	bufr/tables/0/wmo/22/codetables/2007.table\
-	bufr/tables/0/wmo/22/codetables/20071.table\
-	bufr/tables/0/wmo/22/codetables/20085.table\
-	bufr/tables/0/wmo/22/codetables/20086.table\
-	bufr/tables/0/wmo/22/codetables/20087.table\
-	bufr/tables/0/wmo/22/codetables/20089.table\
-	bufr/tables/0/wmo/22/codetables/20090.table\
-	bufr/tables/0/wmo/22/codetables/20101.table\
-	bufr/tables/0/wmo/22/codetables/20102.table\
-	bufr/tables/0/wmo/22/codetables/20103.table\
-	bufr/tables/0/wmo/22/codetables/20104.table\
-	bufr/tables/0/wmo/22/codetables/20105.table\
-	bufr/tables/0/wmo/22/codetables/20106.table\
-	bufr/tables/0/wmo/22/codetables/20107.table\
-	bufr/tables/0/wmo/22/codetables/20108.table\
-	bufr/tables/0/wmo/22/codetables/2011.table\
-	bufr/tables/0/wmo/22/codetables/20119.table\
-	bufr/tables/0/wmo/22/codetables/20124.table\
-	bufr/tables/0/wmo/22/codetables/2013.table\
-	bufr/tables/0/wmo/22/codetables/20136.table\
-	bufr/tables/0/wmo/22/codetables/20137.table\
-	bufr/tables/0/wmo/22/codetables/2014.table\
-	bufr/tables/0/wmo/22/codetables/2015.table\
-	bufr/tables/0/wmo/22/codetables/2016.table\
-	bufr/tables/0/wmo/22/codetables/2017.table\
-	bufr/tables/0/wmo/22/codetables/2019.table\
-	bufr/tables/0/wmo/22/codetables/2020.table\
-	bufr/tables/0/wmo/22/codetables/2021.table\
-	bufr/tables/0/wmo/22/codetables/2022.table\
-	bufr/tables/0/wmo/22/codetables/2023.table\
-	bufr/tables/0/wmo/22/codetables/2024.table\
-	bufr/tables/0/wmo/22/codetables/2025.table\
-	bufr/tables/0/wmo/22/codetables/2030.table\
-	bufr/tables/0/wmo/22/codetables/2031.table\
-	bufr/tables/0/wmo/22/codetables/2032.table\
-	bufr/tables/0/wmo/22/codetables/2033.table\
-	bufr/tables/0/wmo/22/codetables/2034.table\
-	bufr/tables/0/wmo/22/codetables/2036.table\
-	bufr/tables/0/wmo/22/codetables/2037.table\
-	bufr/tables/0/wmo/22/codetables/2038.table\
-	bufr/tables/0/wmo/22/codetables/2039.table\
-	bufr/tables/0/wmo/22/codetables/2040.table\
-	bufr/tables/0/wmo/22/codetables/2041.table\
-	bufr/tables/0/wmo/22/codetables/2042.table\
-	bufr/tables/0/wmo/22/codetables/2044.table\
-	bufr/tables/0/wmo/22/codetables/2045.table\
-	bufr/tables/0/wmo/22/codetables/2046.table\
-	bufr/tables/0/wmo/22/codetables/2047.table\
-	bufr/tables/0/wmo/22/codetables/2048.table\
-	bufr/tables/0/wmo/22/codetables/2049.table\
-	bufr/tables/0/wmo/22/codetables/2050.table\
-	bufr/tables/0/wmo/22/codetables/2051.table\
-	bufr/tables/0/wmo/22/codetables/2052.table\
-	bufr/tables/0/wmo/22/codetables/2053.table\
-	bufr/tables/0/wmo/22/codetables/2054.table\
-	bufr/tables/0/wmo/22/codetables/2055.table\
-	bufr/tables/0/wmo/22/codetables/2056.table\
-	bufr/tables/0/wmo/22/codetables/2057.table\
-	bufr/tables/0/wmo/22/codetables/2058.table\
-	bufr/tables/0/wmo/22/codetables/2059.table\
-	bufr/tables/0/wmo/22/codetables/2060.table\
-	bufr/tables/0/wmo/22/codetables/2061.table\
-	bufr/tables/0/wmo/22/codetables/2062.table\
-	bufr/tables/0/wmo/22/codetables/2064.table\
-	bufr/tables/0/wmo/22/codetables/2066.table\
-	bufr/tables/0/wmo/22/codetables/2070.table\
-	bufr/tables/0/wmo/22/codetables/2080.table\
-	bufr/tables/0/wmo/22/codetables/2081.table\
-	bufr/tables/0/wmo/22/codetables/2083.table\
-	bufr/tables/0/wmo/22/codetables/2084.table\
-	bufr/tables/0/wmo/22/codetables/2095.table\
-	bufr/tables/0/wmo/22/codetables/2096.table\
-	bufr/tables/0/wmo/22/codetables/2097.table\
-	bufr/tables/0/wmo/22/codetables/2099.table\
-	bufr/tables/0/wmo/22/codetables/2101.table\
-	bufr/tables/0/wmo/22/codetables/2103.table\
-	bufr/tables/0/wmo/22/codetables/2104.table\
-	bufr/tables/0/wmo/22/codetables/21066.table\
-	bufr/tables/0/wmo/22/codetables/21067.table\
-	bufr/tables/0/wmo/22/codetables/21068.table\
-	bufr/tables/0/wmo/22/codetables/21069.table\
-	bufr/tables/0/wmo/22/codetables/21070.table\
-	bufr/tables/0/wmo/22/codetables/21072.table\
-	bufr/tables/0/wmo/22/codetables/21073.table\
-	bufr/tables/0/wmo/22/codetables/21076.table\
-	bufr/tables/0/wmo/22/codetables/21109.table\
-	bufr/tables/0/wmo/22/codetables/21115.table\
-	bufr/tables/0/wmo/22/codetables/21116.table\
-	bufr/tables/0/wmo/22/codetables/21119.table\
-	bufr/tables/0/wmo/22/codetables/21144.table\
-	bufr/tables/0/wmo/22/codetables/2115.table\
-	bufr/tables/0/wmo/22/codetables/21150.table\
-	bufr/tables/0/wmo/22/codetables/21155.table\
-	bufr/tables/0/wmo/22/codetables/21158.table\
-	bufr/tables/0/wmo/22/codetables/21159.table\
-	bufr/tables/0/wmo/22/codetables/21169.table\
-	bufr/tables/0/wmo/22/codetables/2119.table\
-	bufr/tables/0/wmo/22/codetables/2131.table\
-	bufr/tables/0/wmo/22/codetables/2137.table\
-	bufr/tables/0/wmo/22/codetables/2138.table\
-	bufr/tables/0/wmo/22/codetables/2139.table\
-	bufr/tables/0/wmo/22/codetables/2143.table\
-	bufr/tables/0/wmo/22/codetables/2144.table\
-	bufr/tables/0/wmo/22/codetables/2145.table\
-	bufr/tables/0/wmo/22/codetables/2146.table\
-	bufr/tables/0/wmo/22/codetables/2147.table\
-	bufr/tables/0/wmo/22/codetables/2148.table\
-	bufr/tables/0/wmo/22/codetables/2149.table\
-	bufr/tables/0/wmo/22/codetables/2150.table\
-	bufr/tables/0/wmo/22/codetables/2151.table\
-	bufr/tables/0/wmo/22/codetables/2152.table\
-	bufr/tables/0/wmo/22/codetables/2158.table\
-	bufr/tables/0/wmo/22/codetables/2159.table\
-	bufr/tables/0/wmo/22/codetables/2160.table\
-	bufr/tables/0/wmo/22/codetables/2163.table\
-	bufr/tables/0/wmo/22/codetables/2164.table\
-	bufr/tables/0/wmo/22/codetables/2165.table\
-	bufr/tables/0/wmo/22/codetables/2166.table\
-	bufr/tables/0/wmo/22/codetables/2167.table\
-	bufr/tables/0/wmo/22/codetables/2169.table\
-	bufr/tables/0/wmo/22/codetables/2170.table\
-	bufr/tables/0/wmo/22/codetables/2172.table\
-	bufr/tables/0/wmo/22/codetables/2175.table\
-	bufr/tables/0/wmo/22/codetables/2176.table\
-	bufr/tables/0/wmo/22/codetables/2177.table\
-	bufr/tables/0/wmo/22/codetables/2178.table\
-	bufr/tables/0/wmo/22/codetables/2179.table\
-	bufr/tables/0/wmo/22/codetables/2180.table\
-	bufr/tables/0/wmo/22/codetables/2181.table\
-	bufr/tables/0/wmo/22/codetables/2182.table\
-	bufr/tables/0/wmo/22/codetables/2183.table\
-	bufr/tables/0/wmo/22/codetables/2184.table\
-	bufr/tables/0/wmo/22/codetables/2185.table\
-	bufr/tables/0/wmo/22/codetables/2186.table\
-	bufr/tables/0/wmo/22/codetables/2187.table\
-	bufr/tables/0/wmo/22/codetables/2188.table\
-	bufr/tables/0/wmo/22/codetables/2189.table\
-	bufr/tables/0/wmo/22/codetables/2191.table\
-	bufr/tables/0/wmo/22/codetables/22056.table\
-	bufr/tables/0/wmo/22/codetables/22060.table\
-	bufr/tables/0/wmo/22/codetables/22061.table\
-	bufr/tables/0/wmo/22/codetables/22067.table\
-	bufr/tables/0/wmo/22/codetables/22068.table\
-	bufr/tables/0/wmo/22/codetables/22120.table\
-	bufr/tables/0/wmo/22/codetables/22121.table\
-	bufr/tables/0/wmo/22/codetables/22122.table\
-	bufr/tables/0/wmo/22/codetables/22123.table\
-	bufr/tables/0/wmo/22/codetables/22178.table\
-	bufr/tables/0/wmo/22/codetables/23001.table\
-	bufr/tables/0/wmo/22/codetables/23002.table\
-	bufr/tables/0/wmo/22/codetables/23003.table\
-	bufr/tables/0/wmo/22/codetables/23004.table\
-	bufr/tables/0/wmo/22/codetables/23005.table\
-	bufr/tables/0/wmo/22/codetables/23006.table\
-	bufr/tables/0/wmo/22/codetables/23007.table\
-	bufr/tables/0/wmo/22/codetables/23008.table\
-	bufr/tables/0/wmo/22/codetables/23009.table\
-	bufr/tables/0/wmo/22/codetables/23016.table\
-	bufr/tables/0/wmo/22/codetables/23018.table\
-	bufr/tables/0/wmo/22/codetables/23031.table\
-	bufr/tables/0/wmo/22/codetables/23032.table\
-	bufr/tables/0/wmo/22/codetables/24003.table\
-	bufr/tables/0/wmo/22/codetables/25004.table\
-	bufr/tables/0/wmo/22/codetables/25005.table\
-	bufr/tables/0/wmo/22/codetables/25006.table\
-	bufr/tables/0/wmo/22/codetables/25009.table\
-	bufr/tables/0/wmo/22/codetables/25010.table\
-	bufr/tables/0/wmo/22/codetables/25011.table\
-	bufr/tables/0/wmo/22/codetables/25012.table\
-	bufr/tables/0/wmo/22/codetables/25013.table\
-	bufr/tables/0/wmo/22/codetables/25015.table\
-	bufr/tables/0/wmo/22/codetables/25017.table\
-	bufr/tables/0/wmo/22/codetables/25020.table\
-	bufr/tables/0/wmo/22/codetables/25021.table\
-	bufr/tables/0/wmo/22/codetables/25022.table\
-	bufr/tables/0/wmo/22/codetables/25023.table\
-	bufr/tables/0/wmo/22/codetables/25024.table\
-	bufr/tables/0/wmo/22/codetables/25029.table\
-	bufr/tables/0/wmo/22/codetables/25030.table\
-	bufr/tables/0/wmo/22/codetables/25031.table\
-	bufr/tables/0/wmo/22/codetables/25032.table\
-	bufr/tables/0/wmo/22/codetables/25033.table\
-	bufr/tables/0/wmo/22/codetables/25034.table\
-	bufr/tables/0/wmo/22/codetables/25035.table\
-	bufr/tables/0/wmo/22/codetables/25036.table\
-	bufr/tables/0/wmo/22/codetables/25040.table\
-	bufr/tables/0/wmo/22/codetables/25041.table\
-	bufr/tables/0/wmo/22/codetables/25042.table\
-	bufr/tables/0/wmo/22/codetables/25053.table\
-	bufr/tables/0/wmo/22/codetables/25063.table\
-	bufr/tables/0/wmo/22/codetables/25069.table\
-	bufr/tables/0/wmo/22/codetables/25086.table\
-	bufr/tables/0/wmo/22/codetables/25090.table\
-	bufr/tables/0/wmo/22/codetables/25093.table\
-	bufr/tables/0/wmo/22/codetables/25095.table\
-	bufr/tables/0/wmo/22/codetables/25096.table\
-	bufr/tables/0/wmo/22/codetables/25097.table\
-	bufr/tables/0/wmo/22/codetables/25098.table\
-	bufr/tables/0/wmo/22/codetables/25099.table\
-	bufr/tables/0/wmo/22/codetables/25110.table\
-	bufr/tables/0/wmo/22/codetables/25120.table\
-	bufr/tables/0/wmo/22/codetables/25122.table\
-	bufr/tables/0/wmo/22/codetables/25123.table\
-	bufr/tables/0/wmo/22/codetables/25124.table\
-	bufr/tables/0/wmo/22/codetables/25150.table\
-	bufr/tables/0/wmo/22/codetables/25174.table\
-	bufr/tables/0/wmo/22/codetables/25181.table\
-	bufr/tables/0/wmo/22/codetables/25182.table\
-	bufr/tables/0/wmo/22/codetables/25184.table\
-	bufr/tables/0/wmo/22/codetables/26010.table\
-	bufr/tables/0/wmo/22/codetables/29001.table\
-	bufr/tables/0/wmo/22/codetables/29002.table\
-	bufr/tables/0/wmo/22/codetables/30031.table\
-	bufr/tables/0/wmo/22/codetables/30032.table\
-	bufr/tables/0/wmo/22/codetables/3010.table\
-	bufr/tables/0/wmo/22/codetables/3011.table\
-	bufr/tables/0/wmo/22/codetables/3012.table\
-	bufr/tables/0/wmo/22/codetables/31021.table\
-	bufr/tables/0/wmo/22/codetables/31031.table\
-	bufr/tables/0/wmo/22/codetables/33002.table\
-	bufr/tables/0/wmo/22/codetables/33003.table\
-	bufr/tables/0/wmo/22/codetables/33005.table\
-	bufr/tables/0/wmo/22/codetables/33006.table\
-	bufr/tables/0/wmo/22/codetables/33015.table\
-	bufr/tables/0/wmo/22/codetables/33020.table\
-	bufr/tables/0/wmo/22/codetables/33021.table\
-	bufr/tables/0/wmo/22/codetables/33022.table\
-	bufr/tables/0/wmo/22/codetables/33023.table\
-	bufr/tables/0/wmo/22/codetables/33024.table\
-	bufr/tables/0/wmo/22/codetables/33025.table\
-	bufr/tables/0/wmo/22/codetables/33026.table\
-	bufr/tables/0/wmo/22/codetables/33027.table\
-	bufr/tables/0/wmo/22/codetables/33028.table\
-	bufr/tables/0/wmo/22/codetables/33030.table\
-	bufr/tables/0/wmo/22/codetables/33031.table\
-	bufr/tables/0/wmo/22/codetables/33032.table\
-	bufr/tables/0/wmo/22/codetables/33033.table\
-	bufr/tables/0/wmo/22/codetables/33035.table\
-	bufr/tables/0/wmo/22/codetables/33037.table\
-	bufr/tables/0/wmo/22/codetables/33038.table\
-	bufr/tables/0/wmo/22/codetables/33039.table\
-	bufr/tables/0/wmo/22/codetables/33041.table\
-	bufr/tables/0/wmo/22/codetables/33042.table\
-	bufr/tables/0/wmo/22/codetables/33043.table\
-	bufr/tables/0/wmo/22/codetables/33044.table\
-	bufr/tables/0/wmo/22/codetables/33047.table\
-	bufr/tables/0/wmo/22/codetables/33048.table\
-	bufr/tables/0/wmo/22/codetables/33049.table\
-	bufr/tables/0/wmo/22/codetables/33050.table\
-	bufr/tables/0/wmo/22/codetables/33060.table\
-	bufr/tables/0/wmo/22/codetables/33070.table\
-	bufr/tables/0/wmo/22/codetables/33071.table\
-	bufr/tables/0/wmo/22/codetables/33072.table\
-	bufr/tables/0/wmo/22/codetables/33075.table\
-	bufr/tables/0/wmo/22/codetables/33076.table\
-	bufr/tables/0/wmo/22/codetables/33077.table\
-	bufr/tables/0/wmo/22/codetables/33078.table\
-	bufr/tables/0/wmo/22/codetables/33079.table\
-	bufr/tables/0/wmo/22/codetables/33080.table\
-	bufr/tables/0/wmo/22/codetables/33081.table\
-	bufr/tables/0/wmo/22/codetables/33082.table\
-	bufr/tables/0/wmo/22/codetables/33083.table\
-	bufr/tables/0/wmo/22/codetables/33084.table\
-	bufr/tables/0/wmo/22/codetables/33085.table\
-	bufr/tables/0/wmo/22/codetables/33086.table\
-	bufr/tables/0/wmo/22/codetables/33087.table\
-	bufr/tables/0/wmo/22/codetables/33088.table\
-	bufr/tables/0/wmo/22/codetables/35000.table\
-	bufr/tables/0/wmo/22/codetables/35001.table\
-	bufr/tables/0/wmo/22/codetables/35030.table\
-	bufr/tables/0/wmo/22/codetables/35031.table\
-	bufr/tables/0/wmo/22/codetables/35032.table\
-	bufr/tables/0/wmo/22/codetables/35033.table\
-	bufr/tables/0/wmo/22/codetables/35034.table\
-	bufr/tables/0/wmo/22/codetables/35035.table\
-	bufr/tables/0/wmo/22/codetables/40005.table\
-	bufr/tables/0/wmo/22/codetables/40006.table\
-	bufr/tables/0/wmo/22/codetables/40011.table\
-	bufr/tables/0/wmo/22/codetables/40012.table\
-	bufr/tables/0/wmo/22/codetables/40013.table\
-	bufr/tables/0/wmo/22/codetables/40020.table\
-	bufr/tables/0/wmo/22/codetables/40023.table\
-	bufr/tables/0/wmo/22/codetables/40024.table\
-	bufr/tables/0/wmo/22/codetables/40025.table\
-	bufr/tables/0/wmo/22/codetables/4059.table\
-	bufr/tables/0/wmo/22/codetables/4080.table\
-	bufr/tables/0/wmo/22/codetables/8001.table\
-	bufr/tables/0/wmo/22/codetables/8002.table\
-	bufr/tables/0/wmo/22/codetables/8003.table\
-	bufr/tables/0/wmo/22/codetables/8004.table\
-	bufr/tables/0/wmo/22/codetables/8005.table\
-	bufr/tables/0/wmo/22/codetables/8006.table\
-	bufr/tables/0/wmo/22/codetables/8007.table\
-	bufr/tables/0/wmo/22/codetables/8008.table\
-	bufr/tables/0/wmo/22/codetables/8009.table\
-	bufr/tables/0/wmo/22/codetables/8010.table\
-	bufr/tables/0/wmo/22/codetables/8011.table\
-	bufr/tables/0/wmo/22/codetables/8012.table\
-	bufr/tables/0/wmo/22/codetables/8013.table\
-	bufr/tables/0/wmo/22/codetables/8014.table\
-	bufr/tables/0/wmo/22/codetables/8015.table\
-	bufr/tables/0/wmo/22/codetables/8016.table\
-	bufr/tables/0/wmo/22/codetables/8017.table\
-	bufr/tables/0/wmo/22/codetables/8018.table\
-	bufr/tables/0/wmo/22/codetables/8019.table\
-	bufr/tables/0/wmo/22/codetables/8021.table\
-	bufr/tables/0/wmo/22/codetables/8023.table\
-	bufr/tables/0/wmo/22/codetables/8024.table\
-	bufr/tables/0/wmo/22/codetables/8025.table\
-	bufr/tables/0/wmo/22/codetables/8026.table\
-	bufr/tables/0/wmo/22/codetables/8029.table\
-	bufr/tables/0/wmo/22/codetables/8032.table\
-	bufr/tables/0/wmo/22/codetables/8033.table\
-	bufr/tables/0/wmo/22/codetables/8035.table\
-	bufr/tables/0/wmo/22/codetables/8036.table\
-	bufr/tables/0/wmo/22/codetables/8039.table\
-	bufr/tables/0/wmo/22/codetables/8040.table\
-	bufr/tables/0/wmo/22/codetables/8041.table\
-	bufr/tables/0/wmo/22/codetables/8042.table\
-	bufr/tables/0/wmo/22/codetables/8043.table\
-	bufr/tables/0/wmo/22/codetables/8050.table\
-	bufr/tables/0/wmo/22/codetables/8051.table\
-	bufr/tables/0/wmo/22/codetables/8052.table\
-	bufr/tables/0/wmo/22/codetables/8053.table\
-	bufr/tables/0/wmo/22/codetables/8054.table\
-	bufr/tables/0/wmo/22/codetables/8060.table\
-	bufr/tables/0/wmo/22/codetables/8065.table\
-	bufr/tables/0/wmo/22/codetables/8066.table\
-	bufr/tables/0/wmo/22/codetables/8070.table\
-	bufr/tables/0/wmo/22/codetables/8072.table\
-	bufr/tables/0/wmo/22/codetables/8074.table\
-	bufr/tables/0/wmo/22/codetables/8075.table\
-	bufr/tables/0/wmo/22/codetables/8076.table\
-	bufr/tables/0/wmo/22/codetables/8077.table\
-	bufr/tables/0/wmo/22/codetables/8079.table\
-	bufr/tables/0/wmo/22/codetables/8080.table\
-	bufr/tables/0/wmo/22/codetables/8081.table\
-	bufr/tables/0/wmo/22/codetables/8082.table\
-	bufr/tables/0/wmo/22/codetables/8083.table\
-	bufr/tables/0/wmo/22/codetables/8085.table\
-	bufr/tables/0/wmo/22/codetables/8086.table
-
-definitionsbufr_tables_0_wmo_23dir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/23
-dist_definitionsbufr_tables_0_wmo_23_DATA = \
-	bufr/tables/0/wmo/23/element.table\
-	bufr/tables/0/wmo/23/sequence.def
-
-definitionsbufr_tables_0_wmo_23_codetablesdir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/23/codetables
-dist_definitionsbufr_tables_0_wmo_23_codetables_DATA = \
-	bufr/tables/0/wmo/23/codetables/1003.table\
-	bufr/tables/0/wmo/23/codetables/10063.table\
-	bufr/tables/0/wmo/23/codetables/10064.table\
-	bufr/tables/0/wmo/23/codetables/1007.table\
-	bufr/tables/0/wmo/23/codetables/1024.table\
-	bufr/tables/0/wmo/23/codetables/1028.table\
-	bufr/tables/0/wmo/23/codetables/1029.table\
-	bufr/tables/0/wmo/23/codetables/1033.table\
-	bufr/tables/0/wmo/23/codetables/1034.table\
-	bufr/tables/0/wmo/23/codetables/1036.table\
-	bufr/tables/0/wmo/23/codetables/1038.table\
-	bufr/tables/0/wmo/23/codetables/1052.table\
-	bufr/tables/0/wmo/23/codetables/1090.table\
-	bufr/tables/0/wmo/23/codetables/1092.table\
-	bufr/tables/0/wmo/23/codetables/1101.table\
-	bufr/tables/0/wmo/23/codetables/11030.table\
-	bufr/tables/0/wmo/23/codetables/11031.table\
-	bufr/tables/0/wmo/23/codetables/11037.table\
-	bufr/tables/0/wmo/23/codetables/11038.table\
-	bufr/tables/0/wmo/23/codetables/11039.table\
-	bufr/tables/0/wmo/23/codetables/13038.table\
-	bufr/tables/0/wmo/23/codetables/13039.table\
-	bufr/tables/0/wmo/23/codetables/13040.table\
-	bufr/tables/0/wmo/23/codetables/13041.table\
-	bufr/tables/0/wmo/23/codetables/13051.table\
-	bufr/tables/0/wmo/23/codetables/13056.table\
-	bufr/tables/0/wmo/23/codetables/13057.table\
-	bufr/tables/0/wmo/23/codetables/15025.table\
-	bufr/tables/0/wmo/23/codetables/19001.table\
-	bufr/tables/0/wmo/23/codetables/19008.table\
-	bufr/tables/0/wmo/23/codetables/19010.table\
-	bufr/tables/0/wmo/23/codetables/19100.table\
-	bufr/tables/0/wmo/23/codetables/19101.table\
-	bufr/tables/0/wmo/23/codetables/19102.table\
-	bufr/tables/0/wmo/23/codetables/19103.table\
-	bufr/tables/0/wmo/23/codetables/19104.table\
-	bufr/tables/0/wmo/23/codetables/19105.table\
-	bufr/tables/0/wmo/23/codetables/19107.table\
-	bufr/tables/0/wmo/23/codetables/19108.table\
-	bufr/tables/0/wmo/23/codetables/19109.table\
-	bufr/tables/0/wmo/23/codetables/19110.table\
-	bufr/tables/0/wmo/23/codetables/19113.table\
-	bufr/tables/0/wmo/23/codetables/19117.table\
-	bufr/tables/0/wmo/23/codetables/19119.table\
-	bufr/tables/0/wmo/23/codetables/20003.table\
-	bufr/tables/0/wmo/23/codetables/20004.table\
-	bufr/tables/0/wmo/23/codetables/20005.table\
-	bufr/tables/0/wmo/23/codetables/20006.table\
-	bufr/tables/0/wmo/23/codetables/20008.table\
-	bufr/tables/0/wmo/23/codetables/20009.table\
-	bufr/tables/0/wmo/23/codetables/2001.table\
-	bufr/tables/0/wmo/23/codetables/20011.table\
-	bufr/tables/0/wmo/23/codetables/20012.table\
-	bufr/tables/0/wmo/23/codetables/20017.table\
-	bufr/tables/0/wmo/23/codetables/20018.table\
-	bufr/tables/0/wmo/23/codetables/2002.table\
-	bufr/tables/0/wmo/23/codetables/20021.table\
-	bufr/tables/0/wmo/23/codetables/20022.table\
-	bufr/tables/0/wmo/23/codetables/20023.table\
-	bufr/tables/0/wmo/23/codetables/20024.table\
-	bufr/tables/0/wmo/23/codetables/20025.table\
-	bufr/tables/0/wmo/23/codetables/20026.table\
-	bufr/tables/0/wmo/23/codetables/20027.table\
-	bufr/tables/0/wmo/23/codetables/20028.table\
-	bufr/tables/0/wmo/23/codetables/20029.table\
-	bufr/tables/0/wmo/23/codetables/2003.table\
-	bufr/tables/0/wmo/23/codetables/20032.table\
-	bufr/tables/0/wmo/23/codetables/20033.table\
-	bufr/tables/0/wmo/23/codetables/20034.table\
-	bufr/tables/0/wmo/23/codetables/20035.table\
-	bufr/tables/0/wmo/23/codetables/20036.table\
-	bufr/tables/0/wmo/23/codetables/20037.table\
-	bufr/tables/0/wmo/23/codetables/2004.table\
-	bufr/tables/0/wmo/23/codetables/20040.table\
-	bufr/tables/0/wmo/23/codetables/20041.table\
-	bufr/tables/0/wmo/23/codetables/20042.table\
-	bufr/tables/0/wmo/23/codetables/20045.table\
-	bufr/tables/0/wmo/23/codetables/20048.table\
-	bufr/tables/0/wmo/23/codetables/20050.table\
-	bufr/tables/0/wmo/23/codetables/20055.table\
-	bufr/tables/0/wmo/23/codetables/20056.table\
-	bufr/tables/0/wmo/23/codetables/20062.table\
-	bufr/tables/0/wmo/23/codetables/20063.table\
-	bufr/tables/0/wmo/23/codetables/2007.table\
-	bufr/tables/0/wmo/23/codetables/20071.table\
-	bufr/tables/0/wmo/23/codetables/20085.table\
-	bufr/tables/0/wmo/23/codetables/20086.table\
-	bufr/tables/0/wmo/23/codetables/20087.table\
-	bufr/tables/0/wmo/23/codetables/20089.table\
-	bufr/tables/0/wmo/23/codetables/20090.table\
-	bufr/tables/0/wmo/23/codetables/20101.table\
-	bufr/tables/0/wmo/23/codetables/20102.table\
-	bufr/tables/0/wmo/23/codetables/20103.table\
-	bufr/tables/0/wmo/23/codetables/20104.table\
-	bufr/tables/0/wmo/23/codetables/20105.table\
-	bufr/tables/0/wmo/23/codetables/20106.table\
-	bufr/tables/0/wmo/23/codetables/20107.table\
-	bufr/tables/0/wmo/23/codetables/20108.table\
-	bufr/tables/0/wmo/23/codetables/2011.table\
-	bufr/tables/0/wmo/23/codetables/20119.table\
-	bufr/tables/0/wmo/23/codetables/20124.table\
-	bufr/tables/0/wmo/23/codetables/2013.table\
-	bufr/tables/0/wmo/23/codetables/20136.table\
-	bufr/tables/0/wmo/23/codetables/20137.table\
-	bufr/tables/0/wmo/23/codetables/2014.table\
-	bufr/tables/0/wmo/23/codetables/2015.table\
-	bufr/tables/0/wmo/23/codetables/2016.table\
-	bufr/tables/0/wmo/23/codetables/2017.table\
-	bufr/tables/0/wmo/23/codetables/2019.table\
-	bufr/tables/0/wmo/23/codetables/2020.table\
-	bufr/tables/0/wmo/23/codetables/2021.table\
-	bufr/tables/0/wmo/23/codetables/2022.table\
-	bufr/tables/0/wmo/23/codetables/2023.table\
-	bufr/tables/0/wmo/23/codetables/2024.table\
-	bufr/tables/0/wmo/23/codetables/2025.table\
-	bufr/tables/0/wmo/23/codetables/2030.table\
-	bufr/tables/0/wmo/23/codetables/2031.table\
-	bufr/tables/0/wmo/23/codetables/2032.table\
-	bufr/tables/0/wmo/23/codetables/2033.table\
-	bufr/tables/0/wmo/23/codetables/2034.table\
-	bufr/tables/0/wmo/23/codetables/2036.table\
-	bufr/tables/0/wmo/23/codetables/2037.table\
-	bufr/tables/0/wmo/23/codetables/2038.table\
-	bufr/tables/0/wmo/23/codetables/2039.table\
-	bufr/tables/0/wmo/23/codetables/2040.table\
-	bufr/tables/0/wmo/23/codetables/2041.table\
-	bufr/tables/0/wmo/23/codetables/2042.table\
-	bufr/tables/0/wmo/23/codetables/2044.table\
-	bufr/tables/0/wmo/23/codetables/2045.table\
-	bufr/tables/0/wmo/23/codetables/2046.table\
-	bufr/tables/0/wmo/23/codetables/2047.table\
-	bufr/tables/0/wmo/23/codetables/2048.table\
-	bufr/tables/0/wmo/23/codetables/2049.table\
-	bufr/tables/0/wmo/23/codetables/2050.table\
-	bufr/tables/0/wmo/23/codetables/2051.table\
-	bufr/tables/0/wmo/23/codetables/2052.table\
-	bufr/tables/0/wmo/23/codetables/2053.table\
-	bufr/tables/0/wmo/23/codetables/2054.table\
-	bufr/tables/0/wmo/23/codetables/2055.table\
-	bufr/tables/0/wmo/23/codetables/2056.table\
-	bufr/tables/0/wmo/23/codetables/2057.table\
-	bufr/tables/0/wmo/23/codetables/2058.table\
-	bufr/tables/0/wmo/23/codetables/2059.table\
-	bufr/tables/0/wmo/23/codetables/2060.table\
-	bufr/tables/0/wmo/23/codetables/2061.table\
-	bufr/tables/0/wmo/23/codetables/2062.table\
-	bufr/tables/0/wmo/23/codetables/2064.table\
-	bufr/tables/0/wmo/23/codetables/2066.table\
-	bufr/tables/0/wmo/23/codetables/2070.table\
-	bufr/tables/0/wmo/23/codetables/2080.table\
-	bufr/tables/0/wmo/23/codetables/2081.table\
-	bufr/tables/0/wmo/23/codetables/2083.table\
-	bufr/tables/0/wmo/23/codetables/2084.table\
-	bufr/tables/0/wmo/23/codetables/2095.table\
-	bufr/tables/0/wmo/23/codetables/2096.table\
-	bufr/tables/0/wmo/23/codetables/2097.table\
-	bufr/tables/0/wmo/23/codetables/2099.table\
-	bufr/tables/0/wmo/23/codetables/2101.table\
-	bufr/tables/0/wmo/23/codetables/2103.table\
-	bufr/tables/0/wmo/23/codetables/2104.table\
-	bufr/tables/0/wmo/23/codetables/21066.table\
-	bufr/tables/0/wmo/23/codetables/21067.table\
-	bufr/tables/0/wmo/23/codetables/21068.table\
-	bufr/tables/0/wmo/23/codetables/21069.table\
-	bufr/tables/0/wmo/23/codetables/21070.table\
-	bufr/tables/0/wmo/23/codetables/21072.table\
-	bufr/tables/0/wmo/23/codetables/21073.table\
-	bufr/tables/0/wmo/23/codetables/21076.table\
-	bufr/tables/0/wmo/23/codetables/21109.table\
-	bufr/tables/0/wmo/23/codetables/21115.table\
-	bufr/tables/0/wmo/23/codetables/21116.table\
-	bufr/tables/0/wmo/23/codetables/21119.table\
-	bufr/tables/0/wmo/23/codetables/21144.table\
-	bufr/tables/0/wmo/23/codetables/21148.table\
-	bufr/tables/0/wmo/23/codetables/2115.table\
-	bufr/tables/0/wmo/23/codetables/21150.table\
-	bufr/tables/0/wmo/23/codetables/21155.table\
-	bufr/tables/0/wmo/23/codetables/21158.table\
-	bufr/tables/0/wmo/23/codetables/21159.table\
-	bufr/tables/0/wmo/23/codetables/21169.table\
-	bufr/tables/0/wmo/23/codetables/2119.table\
-	bufr/tables/0/wmo/23/codetables/2131.table\
-	bufr/tables/0/wmo/23/codetables/2137.table\
-	bufr/tables/0/wmo/23/codetables/2138.table\
-	bufr/tables/0/wmo/23/codetables/2139.table\
-	bufr/tables/0/wmo/23/codetables/2143.table\
-	bufr/tables/0/wmo/23/codetables/2144.table\
-	bufr/tables/0/wmo/23/codetables/2145.table\
-	bufr/tables/0/wmo/23/codetables/2146.table\
-	bufr/tables/0/wmo/23/codetables/2147.table\
-	bufr/tables/0/wmo/23/codetables/2148.table\
-	bufr/tables/0/wmo/23/codetables/2149.table\
-	bufr/tables/0/wmo/23/codetables/2150.table\
-	bufr/tables/0/wmo/23/codetables/2151.table\
-	bufr/tables/0/wmo/23/codetables/2152.table\
-	bufr/tables/0/wmo/23/codetables/2158.table\
-	bufr/tables/0/wmo/23/codetables/2159.table\
-	bufr/tables/0/wmo/23/codetables/2160.table\
-	bufr/tables/0/wmo/23/codetables/2163.table\
-	bufr/tables/0/wmo/23/codetables/2164.table\
-	bufr/tables/0/wmo/23/codetables/2165.table\
-	bufr/tables/0/wmo/23/codetables/2166.table\
-	bufr/tables/0/wmo/23/codetables/2167.table\
-	bufr/tables/0/wmo/23/codetables/2169.table\
-	bufr/tables/0/wmo/23/codetables/2170.table\
-	bufr/tables/0/wmo/23/codetables/2172.table\
-	bufr/tables/0/wmo/23/codetables/2175.table\
-	bufr/tables/0/wmo/23/codetables/2176.table\
-	bufr/tables/0/wmo/23/codetables/2177.table\
-	bufr/tables/0/wmo/23/codetables/2178.table\
-	bufr/tables/0/wmo/23/codetables/2179.table\
-	bufr/tables/0/wmo/23/codetables/2180.table\
-	bufr/tables/0/wmo/23/codetables/2181.table\
-	bufr/tables/0/wmo/23/codetables/2182.table\
-	bufr/tables/0/wmo/23/codetables/2183.table\
-	bufr/tables/0/wmo/23/codetables/2184.table\
-	bufr/tables/0/wmo/23/codetables/2185.table\
-	bufr/tables/0/wmo/23/codetables/2186.table\
-	bufr/tables/0/wmo/23/codetables/2187.table\
-	bufr/tables/0/wmo/23/codetables/2188.table\
-	bufr/tables/0/wmo/23/codetables/2189.table\
-	bufr/tables/0/wmo/23/codetables/2191.table\
-	bufr/tables/0/wmo/23/codetables/22056.table\
-	bufr/tables/0/wmo/23/codetables/22060.table\
-	bufr/tables/0/wmo/23/codetables/22061.table\
-	bufr/tables/0/wmo/23/codetables/22067.table\
-	bufr/tables/0/wmo/23/codetables/22068.table\
-	bufr/tables/0/wmo/23/codetables/22120.table\
-	bufr/tables/0/wmo/23/codetables/22121.table\
-	bufr/tables/0/wmo/23/codetables/22122.table\
-	bufr/tables/0/wmo/23/codetables/22123.table\
-	bufr/tables/0/wmo/23/codetables/22178.table\
-	bufr/tables/0/wmo/23/codetables/23001.table\
-	bufr/tables/0/wmo/23/codetables/23002.table\
-	bufr/tables/0/wmo/23/codetables/23003.table\
-	bufr/tables/0/wmo/23/codetables/23004.table\
-	bufr/tables/0/wmo/23/codetables/23005.table\
-	bufr/tables/0/wmo/23/codetables/23006.table\
-	bufr/tables/0/wmo/23/codetables/23007.table\
-	bufr/tables/0/wmo/23/codetables/23008.table\
-	bufr/tables/0/wmo/23/codetables/23009.table\
-	bufr/tables/0/wmo/23/codetables/23016.table\
-	bufr/tables/0/wmo/23/codetables/23018.table\
-	bufr/tables/0/wmo/23/codetables/23031.table\
-	bufr/tables/0/wmo/23/codetables/23032.table\
-	bufr/tables/0/wmo/23/codetables/24003.table\
-	bufr/tables/0/wmo/23/codetables/25004.table\
-	bufr/tables/0/wmo/23/codetables/25005.table\
-	bufr/tables/0/wmo/23/codetables/25006.table\
-	bufr/tables/0/wmo/23/codetables/25009.table\
-	bufr/tables/0/wmo/23/codetables/25010.table\
-	bufr/tables/0/wmo/23/codetables/25011.table\
-	bufr/tables/0/wmo/23/codetables/25012.table\
-	bufr/tables/0/wmo/23/codetables/25013.table\
-	bufr/tables/0/wmo/23/codetables/25015.table\
-	bufr/tables/0/wmo/23/codetables/25017.table\
-	bufr/tables/0/wmo/23/codetables/25020.table\
-	bufr/tables/0/wmo/23/codetables/25021.table\
-	bufr/tables/0/wmo/23/codetables/25022.table\
-	bufr/tables/0/wmo/23/codetables/25023.table\
-	bufr/tables/0/wmo/23/codetables/25024.table\
-	bufr/tables/0/wmo/23/codetables/25029.table\
-	bufr/tables/0/wmo/23/codetables/25030.table\
-	bufr/tables/0/wmo/23/codetables/25031.table\
-	bufr/tables/0/wmo/23/codetables/25032.table\
-	bufr/tables/0/wmo/23/codetables/25033.table\
-	bufr/tables/0/wmo/23/codetables/25034.table\
-	bufr/tables/0/wmo/23/codetables/25035.table\
-	bufr/tables/0/wmo/23/codetables/25036.table\
-	bufr/tables/0/wmo/23/codetables/25040.table\
-	bufr/tables/0/wmo/23/codetables/25041.table\
-	bufr/tables/0/wmo/23/codetables/25042.table\
-	bufr/tables/0/wmo/23/codetables/25053.table\
-	bufr/tables/0/wmo/23/codetables/25063.table\
-	bufr/tables/0/wmo/23/codetables/25069.table\
-	bufr/tables/0/wmo/23/codetables/25086.table\
-	bufr/tables/0/wmo/23/codetables/25090.table\
-	bufr/tables/0/wmo/23/codetables/25093.table\
-	bufr/tables/0/wmo/23/codetables/25095.table\
-	bufr/tables/0/wmo/23/codetables/25096.table\
-	bufr/tables/0/wmo/23/codetables/25097.table\
-	bufr/tables/0/wmo/23/codetables/25098.table\
-	bufr/tables/0/wmo/23/codetables/25099.table\
-	bufr/tables/0/wmo/23/codetables/25110.table\
-	bufr/tables/0/wmo/23/codetables/25112.table\
-	bufr/tables/0/wmo/23/codetables/25113.table\
-	bufr/tables/0/wmo/23/codetables/25120.table\
-	bufr/tables/0/wmo/23/codetables/25122.table\
-	bufr/tables/0/wmo/23/codetables/25123.table\
-	bufr/tables/0/wmo/23/codetables/25124.table\
-	bufr/tables/0/wmo/23/codetables/25150.table\
-	bufr/tables/0/wmo/23/codetables/25174.table\
-	bufr/tables/0/wmo/23/codetables/25181.table\
-	bufr/tables/0/wmo/23/codetables/25182.table\
-	bufr/tables/0/wmo/23/codetables/25184.table\
-	bufr/tables/0/wmo/23/codetables/26010.table\
-	bufr/tables/0/wmo/23/codetables/29001.table\
-	bufr/tables/0/wmo/23/codetables/29002.table\
-	bufr/tables/0/wmo/23/codetables/30031.table\
-	bufr/tables/0/wmo/23/codetables/30032.table\
-	bufr/tables/0/wmo/23/codetables/3010.table\
-	bufr/tables/0/wmo/23/codetables/3011.table\
-	bufr/tables/0/wmo/23/codetables/3012.table\
-	bufr/tables/0/wmo/23/codetables/31021.table\
-	bufr/tables/0/wmo/23/codetables/31031.table\
-	bufr/tables/0/wmo/23/codetables/33002.table\
-	bufr/tables/0/wmo/23/codetables/33003.table\
-	bufr/tables/0/wmo/23/codetables/33005.table\
-	bufr/tables/0/wmo/23/codetables/33006.table\
-	bufr/tables/0/wmo/23/codetables/33015.table\
-	bufr/tables/0/wmo/23/codetables/33020.table\
-	bufr/tables/0/wmo/23/codetables/33021.table\
-	bufr/tables/0/wmo/23/codetables/33022.table\
-	bufr/tables/0/wmo/23/codetables/33023.table\
-	bufr/tables/0/wmo/23/codetables/33024.table\
-	bufr/tables/0/wmo/23/codetables/33025.table\
-	bufr/tables/0/wmo/23/codetables/33026.table\
-	bufr/tables/0/wmo/23/codetables/33027.table\
-	bufr/tables/0/wmo/23/codetables/33028.table\
-	bufr/tables/0/wmo/23/codetables/33030.table\
-	bufr/tables/0/wmo/23/codetables/33031.table\
-	bufr/tables/0/wmo/23/codetables/33032.table\
-	bufr/tables/0/wmo/23/codetables/33033.table\
-	bufr/tables/0/wmo/23/codetables/33035.table\
-	bufr/tables/0/wmo/23/codetables/33037.table\
-	bufr/tables/0/wmo/23/codetables/33038.table\
-	bufr/tables/0/wmo/23/codetables/33039.table\
-	bufr/tables/0/wmo/23/codetables/33041.table\
-	bufr/tables/0/wmo/23/codetables/33042.table\
-	bufr/tables/0/wmo/23/codetables/33043.table\
-	bufr/tables/0/wmo/23/codetables/33044.table\
-	bufr/tables/0/wmo/23/codetables/33047.table\
-	bufr/tables/0/wmo/23/codetables/33048.table\
-	bufr/tables/0/wmo/23/codetables/33049.table\
-	bufr/tables/0/wmo/23/codetables/33050.table\
-	bufr/tables/0/wmo/23/codetables/33060.table\
-	bufr/tables/0/wmo/23/codetables/33070.table\
-	bufr/tables/0/wmo/23/codetables/33071.table\
-	bufr/tables/0/wmo/23/codetables/33072.table\
-	bufr/tables/0/wmo/23/codetables/33075.table\
-	bufr/tables/0/wmo/23/codetables/33076.table\
-	bufr/tables/0/wmo/23/codetables/33077.table\
-	bufr/tables/0/wmo/23/codetables/33078.table\
-	bufr/tables/0/wmo/23/codetables/33079.table\
-	bufr/tables/0/wmo/23/codetables/33080.table\
-	bufr/tables/0/wmo/23/codetables/33081.table\
-	bufr/tables/0/wmo/23/codetables/33082.table\
-	bufr/tables/0/wmo/23/codetables/33083.table\
-	bufr/tables/0/wmo/23/codetables/33084.table\
-	bufr/tables/0/wmo/23/codetables/33085.table\
-	bufr/tables/0/wmo/23/codetables/33086.table\
-	bufr/tables/0/wmo/23/codetables/33087.table\
-	bufr/tables/0/wmo/23/codetables/33088.table\
-	bufr/tables/0/wmo/23/codetables/35000.table\
-	bufr/tables/0/wmo/23/codetables/35001.table\
-	bufr/tables/0/wmo/23/codetables/35030.table\
-	bufr/tables/0/wmo/23/codetables/35031.table\
-	bufr/tables/0/wmo/23/codetables/35032.table\
-	bufr/tables/0/wmo/23/codetables/35033.table\
-	bufr/tables/0/wmo/23/codetables/35034.table\
-	bufr/tables/0/wmo/23/codetables/35035.table\
-	bufr/tables/0/wmo/23/codetables/40005.table\
-	bufr/tables/0/wmo/23/codetables/40006.table\
-	bufr/tables/0/wmo/23/codetables/40011.table\
-	bufr/tables/0/wmo/23/codetables/40012.table\
-	bufr/tables/0/wmo/23/codetables/40013.table\
-	bufr/tables/0/wmo/23/codetables/40020.table\
-	bufr/tables/0/wmo/23/codetables/40023.table\
-	bufr/tables/0/wmo/23/codetables/40024.table\
-	bufr/tables/0/wmo/23/codetables/40025.table\
-	bufr/tables/0/wmo/23/codetables/4059.table\
-	bufr/tables/0/wmo/23/codetables/4080.table\
-	bufr/tables/0/wmo/23/codetables/8001.table\
-	bufr/tables/0/wmo/23/codetables/8002.table\
-	bufr/tables/0/wmo/23/codetables/8003.table\
-	bufr/tables/0/wmo/23/codetables/8004.table\
-	bufr/tables/0/wmo/23/codetables/8005.table\
-	bufr/tables/0/wmo/23/codetables/8006.table\
-	bufr/tables/0/wmo/23/codetables/8007.table\
-	bufr/tables/0/wmo/23/codetables/8008.table\
-	bufr/tables/0/wmo/23/codetables/8009.table\
-	bufr/tables/0/wmo/23/codetables/8010.table\
-	bufr/tables/0/wmo/23/codetables/8011.table\
-	bufr/tables/0/wmo/23/codetables/8012.table\
-	bufr/tables/0/wmo/23/codetables/8013.table\
-	bufr/tables/0/wmo/23/codetables/8014.table\
-	bufr/tables/0/wmo/23/codetables/8015.table\
-	bufr/tables/0/wmo/23/codetables/8016.table\
-	bufr/tables/0/wmo/23/codetables/8017.table\
-	bufr/tables/0/wmo/23/codetables/8018.table\
-	bufr/tables/0/wmo/23/codetables/8019.table\
-	bufr/tables/0/wmo/23/codetables/8021.table\
-	bufr/tables/0/wmo/23/codetables/8023.table\
-	bufr/tables/0/wmo/23/codetables/8024.table\
-	bufr/tables/0/wmo/23/codetables/8025.table\
-	bufr/tables/0/wmo/23/codetables/8026.table\
-	bufr/tables/0/wmo/23/codetables/8029.table\
-	bufr/tables/0/wmo/23/codetables/8032.table\
-	bufr/tables/0/wmo/23/codetables/8033.table\
-	bufr/tables/0/wmo/23/codetables/8035.table\
-	bufr/tables/0/wmo/23/codetables/8036.table\
-	bufr/tables/0/wmo/23/codetables/8039.table\
-	bufr/tables/0/wmo/23/codetables/8040.table\
-	bufr/tables/0/wmo/23/codetables/8041.table\
-	bufr/tables/0/wmo/23/codetables/8042.table\
-	bufr/tables/0/wmo/23/codetables/8043.table\
-	bufr/tables/0/wmo/23/codetables/8050.table\
-	bufr/tables/0/wmo/23/codetables/8051.table\
-	bufr/tables/0/wmo/23/codetables/8052.table\
-	bufr/tables/0/wmo/23/codetables/8053.table\
-	bufr/tables/0/wmo/23/codetables/8054.table\
-	bufr/tables/0/wmo/23/codetables/8060.table\
-	bufr/tables/0/wmo/23/codetables/8065.table\
-	bufr/tables/0/wmo/23/codetables/8066.table\
-	bufr/tables/0/wmo/23/codetables/8070.table\
-	bufr/tables/0/wmo/23/codetables/8072.table\
-	bufr/tables/0/wmo/23/codetables/8074.table\
-	bufr/tables/0/wmo/23/codetables/8075.table\
-	bufr/tables/0/wmo/23/codetables/8076.table\
-	bufr/tables/0/wmo/23/codetables/8077.table\
-	bufr/tables/0/wmo/23/codetables/8079.table\
-	bufr/tables/0/wmo/23/codetables/8080.table\
-	bufr/tables/0/wmo/23/codetables/8081.table\
-	bufr/tables/0/wmo/23/codetables/8082.table\
-	bufr/tables/0/wmo/23/codetables/8083.table\
-	bufr/tables/0/wmo/23/codetables/8085.table\
-	bufr/tables/0/wmo/23/codetables/8086.table\
-	bufr/tables/0/wmo/23/codetables/8087.table
-
-definitionsbufr_tables_0_wmo_6dir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/6
-dist_definitionsbufr_tables_0_wmo_6_DATA = \
-	bufr/tables/0/wmo/6/element.table\
-	bufr/tables/0/wmo/6/sequence.def
-
-definitionsbufr_tables_0_wmo_6_codetablesdir = ${datarootdir}/eccodes/definitions/bufr/tables/0/wmo/6/codetables
-dist_definitionsbufr_tables_0_wmo_6_codetables_DATA = \
-	bufr/tables/0/wmo/6/codetables/1003.table\
-	bufr/tables/0/wmo/6/codetables/10063.table\
-	bufr/tables/0/wmo/6/codetables/1007.table\
-	bufr/tables/0/wmo/6/codetables/1031.table\
-	bufr/tables/0/wmo/6/codetables/1032.table\
-	bufr/tables/0/wmo/6/codetables/1033.table\
-	bufr/tables/0/wmo/6/codetables/11031.table\
-	bufr/tables/0/wmo/6/codetables/13038.table\
-	bufr/tables/0/wmo/6/codetables/13039.table\
-	bufr/tables/0/wmo/6/codetables/13041.table\
-	bufr/tables/0/wmo/6/codetables/13051.table\
-	bufr/tables/0/wmo/6/codetables/19001.table\
-	bufr/tables/0/wmo/6/codetables/19008.table\
-	bufr/tables/0/wmo/6/codetables/20003.table\
-	bufr/tables/0/wmo/6/codetables/20004.table\
-	bufr/tables/0/wmo/6/codetables/20005.table\
-	bufr/tables/0/wmo/6/codetables/20009.table\
-	bufr/tables/0/wmo/6/codetables/2001.table\
-	bufr/tables/0/wmo/6/codetables/20011.table\
-	bufr/tables/0/wmo/6/codetables/20012.table\
-	bufr/tables/0/wmo/6/codetables/20017.table\
-	bufr/tables/0/wmo/6/codetables/20018.table\
-	bufr/tables/0/wmo/6/codetables/2002.table\
-	bufr/tables/0/wmo/6/codetables/2003.table\
-	bufr/tables/0/wmo/6/codetables/20032.table\
-	bufr/tables/0/wmo/6/codetables/20033.table\
-	bufr/tables/0/wmo/6/codetables/20034.table\
-	bufr/tables/0/wmo/6/codetables/20035.table\
-	bufr/tables/0/wmo/6/codetables/20036.table\
-	bufr/tables/0/wmo/6/codetables/20037.table\
-	bufr/tables/0/wmo/6/codetables/2004.table\
-	bufr/tables/0/wmo/6/codetables/20041.table\
-	bufr/tables/0/wmo/6/codetables/20062.table\
-	bufr/tables/0/wmo/6/codetables/20063.table\
-	bufr/tables/0/wmo/6/codetables/20090.table\
-	bufr/tables/0/wmo/6/codetables/2011.table\
-	bufr/tables/0/wmo/6/codetables/2012.table\
-	bufr/tables/0/wmo/6/codetables/2013.table\
-	bufr/tables/0/wmo/6/codetables/2014.table\
-	bufr/tables/0/wmo/6/codetables/2015.table\
-	bufr/tables/0/wmo/6/codetables/2019.table\
-	bufr/tables/0/wmo/6/codetables/2020.table\
-	bufr/tables/0/wmo/6/codetables/2021.table\
-	bufr/tables/0/wmo/6/codetables/2022.table\
-	bufr/tables/0/wmo/6/codetables/2023.table\
-	bufr/tables/0/wmo/6/codetables/2024.table\
-	bufr/tables/0/wmo/6/codetables/2025.table\
-	bufr/tables/0/wmo/6/codetables/2030.table\
-	bufr/tables/0/wmo/6/codetables/2031.table\
-	bufr/tables/0/wmo/6/codetables/2032.table\
-	bufr/tables/0/wmo/6/codetables/2033.table\
-	bufr/tables/0/wmo/6/codetables/2034.table\
-	bufr/tables/0/wmo/6/codetables/2036.table\
-	bufr/tables/0/wmo/6/codetables/2037.table\
-	bufr/tables/0/wmo/6/codetables/2038.table\
-	bufr/tables/0/wmo/6/codetables/2039.table\
-	bufr/tables/0/wmo/6/codetables/2040.table\
-	bufr/tables/0/wmo/6/codetables/2041.table\
-	bufr/tables/0/wmo/6/codetables/2044.table\
-	bufr/tables/0/wmo/6/codetables/2045.table\
-	bufr/tables/0/wmo/6/codetables/2046.table\
-	bufr/tables/0/wmo/6/codetables/2048.table\
-	bufr/tables/0/wmo/6/codetables/2049.table\
-	bufr/tables/0/wmo/6/codetables/2050.table\
-	bufr/tables/0/wmo/6/codetables/2051.table\
-	bufr/tables/0/wmo/6/codetables/2052.table\
-	bufr/tables/0/wmo/6/codetables/2053.table\
-	bufr/tables/0/wmo/6/codetables/2054.table\
-	bufr/tables/0/wmo/6/codetables/2055.table\
-	bufr/tables/0/wmo/6/codetables/2056.table\
-	bufr/tables/0/wmo/6/codetables/2057.table\
-	bufr/tables/0/wmo/6/codetables/2058.table\
-	bufr/tables/0/wmo/6/codetables/2059.table\
-	bufr/tables/0/wmo/6/codetables/2060.table\
-	bufr/tables/0/wmo/6/codetables/2061.table\
-	bufr/tables/0/wmo/6/codetables/2062.table\
-	bufr/tables/0/wmo/6/codetables/2064.table\
-	bufr/tables/0/wmo/6/codetables/2070.table\
-	bufr/tables/0/wmo/6/codetables/2101.table\
-	bufr/tables/0/wmo/6/codetables/2103.table\
-	bufr/tables/0/wmo/6/codetables/2104.table\
-	bufr/tables/0/wmo/6/codetables/21066.table\
-	bufr/tables/0/wmo/6/codetables/21067.table\
-	bufr/tables/0/wmo/6/codetables/21068.table\
-	bufr/tables/0/wmo/6/codetables/21069.table\
-	bufr/tables/0/wmo/6/codetables/21070.table\
-	bufr/tables/0/wmo/6/codetables/21072.table\
-	bufr/tables/0/wmo/6/codetables/21073.table\
-	bufr/tables/0/wmo/6/codetables/21076.table\
-	bufr/tables/0/wmo/6/codetables/21109.table\
-	bufr/tables/0/wmo/6/codetables/21115.table\
-	bufr/tables/0/wmo/6/codetables/21116.table\
-	bufr/tables/0/wmo/6/codetables/21119.table\
-	bufr/tables/0/wmo/6/codetables/2131.table\
-	bufr/tables/0/wmo/6/codetables/2143.table\
-	bufr/tables/0/wmo/6/codetables/2144.table\
-	bufr/tables/0/wmo/6/codetables/2145.table\
-	bufr/tables/0/wmo/6/codetables/2146.table\
-	bufr/tables/0/wmo/6/codetables/2150.table\
-	bufr/tables/0/wmo/6/codetables/2151.table\
-	bufr/tables/0/wmo/6/codetables/2152.table\
-	bufr/tables/0/wmo/6/codetables/2158.table\
-	bufr/tables/0/wmo/6/codetables/2159.table\
-	bufr/tables/0/wmo/6/codetables/2163.table\
-	bufr/tables/0/wmo/6/codetables/2164.table\
-	bufr/tables/0/wmo/6/codetables/2166.table\
-	bufr/tables/0/wmo/6/codetables/2167.table\
-	bufr/tables/0/wmo/6/codetables/2169.table\
-	bufr/tables/0/wmo/6/codetables/2172.table\
-	bufr/tables/0/wmo/6/codetables/22061.table\
-	bufr/tables/0/wmo/6/codetables/22067.table\
-	bufr/tables/0/wmo/6/codetables/22068.table\
-	bufr/tables/0/wmo/6/codetables/22120.table\
-	bufr/tables/0/wmo/6/codetables/22121.table\
-	bufr/tables/0/wmo/6/codetables/22122.table\
-	bufr/tables/0/wmo/6/codetables/22123.table\
-	bufr/tables/0/wmo/6/codetables/23001.table\
-	bufr/tables/0/wmo/6/codetables/23002.table\
-	bufr/tables/0/wmo/6/codetables/23003.table\
-	bufr/tables/0/wmo/6/codetables/23004.table\
-	bufr/tables/0/wmo/6/codetables/23005.table\
-	bufr/tables/0/wmo/6/codetables/23006.table\
-	bufr/tables/0/wmo/6/codetables/23007.table\
-	bufr/tables/0/wmo/6/codetables/23008.table\
-	bufr/tables/0/wmo/6/codetables/23009.table\
-	bufr/tables/0/wmo/6/codetables/23016.table\
-	bufr/tables/0/wmo/6/codetables/23018.table\
-	bufr/tables/0/wmo/6/codetables/23031.table\
-	bufr/tables/0/wmo/6/codetables/23032.table\
-	bufr/tables/0/wmo/6/codetables/24003.table\
-	bufr/tables/0/wmo/6/codetables/25004.table\
-	bufr/tables/0/wmo/6/codetables/25005.table\
-	bufr/tables/0/wmo/6/codetables/25006.table\
-	bufr/tables/0/wmo/6/codetables/25009.table\
-	bufr/tables/0/wmo/6/codetables/25010.table\
-	bufr/tables/0/wmo/6/codetables/25011.table\
-	bufr/tables/0/wmo/6/codetables/25012.table\
-	bufr/tables/0/wmo/6/codetables/25013.table\
-	bufr/tables/0/wmo/6/codetables/25015.table\
-	bufr/tables/0/wmo/6/codetables/25017.table\
-	bufr/tables/0/wmo/6/codetables/25020.table\
-	bufr/tables/0/wmo/6/codetables/25021.table\
-	bufr/tables/0/wmo/6/codetables/25030.table\
-	bufr/tables/0/wmo/6/codetables/25032.table\
-	bufr/tables/0/wmo/6/codetables/25033.table\
-	bufr/tables/0/wmo/6/codetables/25034.table\
-	bufr/tables/0/wmo/6/codetables/25040.table\
-	bufr/tables/0/wmo/6/codetables/25041.table\
-	bufr/tables/0/wmo/6/codetables/25042.table\
-	bufr/tables/0/wmo/6/codetables/25045.table\
-	bufr/tables/0/wmo/6/codetables/25046.table\
-	bufr/tables/0/wmo/6/codetables/25047.table\
-	bufr/tables/0/wmo/6/codetables/25048.table\
-	bufr/tables/0/wmo/6/codetables/25049.table\
-	bufr/tables/0/wmo/6/codetables/25051.table\
-	bufr/tables/0/wmo/6/codetables/25053.table\
-	bufr/tables/0/wmo/6/codetables/29001.table\
-	bufr/tables/0/wmo/6/codetables/29002.table\
-	bufr/tables/0/wmo/6/codetables/30031.table\
-	bufr/tables/0/wmo/6/codetables/30032.table\
-	bufr/tables/0/wmo/6/codetables/31021.table\
-	bufr/tables/0/wmo/6/codetables/31031.table\
-	bufr/tables/0/wmo/6/codetables/33002.table\
-	bufr/tables/0/wmo/6/codetables/33003.table\
-	bufr/tables/0/wmo/6/codetables/33020.table\
-	bufr/tables/0/wmo/6/codetables/33021.table\
-	bufr/tables/0/wmo/6/codetables/33022.table\
-	bufr/tables/0/wmo/6/codetables/33023.table\
-	bufr/tables/0/wmo/6/codetables/33024.table\
-	bufr/tables/0/wmo/6/codetables/33025.table\
-	bufr/tables/0/wmo/6/codetables/33026.table\
-	bufr/tables/0/wmo/6/codetables/33027.table\
-	bufr/tables/0/wmo/6/codetables/33030.table\
-	bufr/tables/0/wmo/6/codetables/33031.table\
-	bufr/tables/0/wmo/6/codetables/33032.table\
-	bufr/tables/0/wmo/6/codetables/33033.table\
-	bufr/tables/0/wmo/6/codetables/8001.table\
-	bufr/tables/0/wmo/6/codetables/8002.table\
-	bufr/tables/0/wmo/6/codetables/8003.table\
-	bufr/tables/0/wmo/6/codetables/8004.table\
-	bufr/tables/0/wmo/6/codetables/8005.table\
-	bufr/tables/0/wmo/6/codetables/8006.table\
-	bufr/tables/0/wmo/6/codetables/8007.table\
-	bufr/tables/0/wmo/6/codetables/8011.table\
-	bufr/tables/0/wmo/6/codetables/8012.table\
-	bufr/tables/0/wmo/6/codetables/8013.table\
-	bufr/tables/0/wmo/6/codetables/8014.table\
-	bufr/tables/0/wmo/6/codetables/8016.table\
-	bufr/tables/0/wmo/6/codetables/8017.table\
-	bufr/tables/0/wmo/6/codetables/8018.table\
-	bufr/tables/0/wmo/6/codetables/8021.table\
-	bufr/tables/0/wmo/6/codetables/8023.table\
-	bufr/tables/0/wmo/6/codetables/8024.table\
-	bufr/tables/0/wmo/6/codetables/8025.table\
-	bufr/tables/0/wmo/6/codetables/8033.table\
-	bufr/tables/0/wmo/6/codetables/8051.table\
-	bufr/tables/0/wmo/6/codetables/8052.table\
-	bufr/tables/0/wmo/6/codetables/8053.table\
-	bufr/tables/0/wmo/6/codetables/8060.table\
-	bufr/tables/0/wmo/6/codetables/8065.table\
-	bufr/tables/0/wmo/6/codetables/8066.table\
-	bufr/tables/0/wmo/6/codetables/8070.table\
-	bufr/tables/0/wmo/6/codetables/8072.table
-
-definitionsbufr_tables_3_local_1_98_0dir = ${datarootdir}/eccodes/definitions/bufr/tables/3/local/1/98/0
-dist_definitionsbufr_tables_3_local_1_98_0_DATA = \
-	bufr/tables/3/local/1/98/0/element.table\
-	bufr/tables/3/local/1/98/0/sequence.def
-
-definitionsbufr_tables_3_wmo_11dir = ${datarootdir}/eccodes/definitions/bufr/tables/3/wmo/11
-dist_definitionsbufr_tables_3_wmo_11_DATA = \
-	bufr/tables/3/wmo/11/element.table\
-	bufr/tables/3/wmo/11/sequence.def
-
-definitionsbufr_tables_3_wmo_6dir = ${datarootdir}/eccodes/definitions/bufr/tables/3/wmo/6
-dist_definitionsbufr_tables_3_wmo_6_DATA = \
-	bufr/tables/3/wmo/6/element.table\
-	bufr/tables/3/wmo/6/sequence.def
-
-definitionscdfdir = ${datarootdir}/eccodes/definitions/cdf
-dist_definitionscdf_DATA = \
-	cdf/boot.def
-
-definitionscommondir = ${datarootdir}/eccodes/definitions/common
-dist_definitionscommon_DATA = \
-	common/statistics_grid.def\
-	common/statistics_spectral.def
-
-definitionsgrib1dir = ${datarootdir}/eccodes/definitions/grib1
-dist_definitionsgrib1_DATA = \
-	grib1/0.ecmf.table\
-	grib1/0.eidb.table\
-	grib1/0.eswi.table\
-	grib1/0.rjtd.table\
-	grib1/0.table\
-	grib1/1.table\
-	grib1/10.table\
-	grib1/11-2.table\
-	grib1/11.table\
-	grib1/12.table\
-	grib1/13.table\
-	grib1/2.0.1.table\
-	grib1/2.0.2.table\
-	grib1/2.0.3.table\
-	grib1/2.128.table\
-	grib1/2.233.1.table\
-	grib1/2.233.253.table\
-	grib1/2.253.128.table\
-	grib1/2.34.200.table\
-	grib1/2.46.254.table\
-	grib1/2.82.1.table\
-	grib1/2.82.128.table\
-	grib1/2.82.129.table\
-	grib1/2.82.130.table\
-	grib1/2.82.131.table\
-	grib1/2.82.133.table\
-	grib1/2.82.134.table\
-	grib1/2.82.135.table\
-	grib1/2.82.136.table\
-	grib1/2.82.253.table\
-	grib1/2.98.128.table\
-	grib1/2.98.129.table\
-	grib1/2.98.130.table\
-	grib1/2.98.131.table\
-	grib1/2.98.132.table\
-	grib1/2.98.133.table\
-	grib1/2.98.140.table\
-	grib1/2.98.150.table\
-	grib1/2.98.151.table\
-	grib1/2.98.160.table\
-	grib1/2.98.162.table\
-	grib1/2.98.170.table\
-	grib1/2.98.171.table\
-	grib1/2.98.172.table\
-	grib1/2.98.173.table\
-	grib1/2.98.174.table\
-	grib1/2.98.175.table\
-	grib1/2.98.180.table\
-	grib1/2.98.190.table\
-	grib1/2.98.200.table\
-	grib1/2.98.201.table\
-	grib1/2.98.210.table\
-	grib1/2.98.211.table\
-	grib1/2.98.220.table\
-	grib1/2.98.228.table\
-	grib1/2.98.230.table\
-	grib1/2.table\
-	grib1/3.233.table\
-	grib1/3.82.table\
-	grib1/3.98.table\
-	grib1/3.table\
-	grib1/4.table\
-	grib1/5.table\
-	grib1/6.table\
-	grib1/7.table\
-	grib1/8.table\
-	grib1/9.table\
-	grib1/boot.def\
-	grib1/cfName.def\
-	grib1/cfVarName.def\
-	grib1/cluster_domain.def\
-	grib1/data.grid_ieee.def\
-	grib1/data.grid_jpeg.def\
-	grib1/data.grid_second_order.def\
-	grib1/data.grid_second_order_SPD1.def\
-	grib1/data.grid_second_order_SPD2.def\
-	grib1/data.grid_second_order_SPD3.def\
-	grib1/data.grid_second_order_constant_width.def\
-	grib1/data.grid_second_order_general_grib1.def\
-	grib1/data.grid_second_order_no_SPD.def\
-	grib1/data.grid_second_order_row_by_row.def\
-	grib1/data.grid_simple.def\
-	grib1/data.grid_simple_matrix.def\
-	grib1/data.spectral_complex.def\
-	grib1/data.spectral_ieee.def\
-	grib1/data.spectral_simple.def\
-	grib1/gds_not_present_bitmap.def\
-	grib1/grid.192.78.3.10.table\
-	grib1/grid.192.78.3.9.table\
-	grib1/grid_21.def\
-	grib1/grid_22.def\
-	grib1/grid_23.def\
-	grib1/grid_24.def\
-	grib1/grid_25.def\
-	grib1/grid_26.def\
-	grib1/grid_61.def\
-	grib1/grid_62.def\
-	grib1/grid_63.def\
-	grib1/grid_64.def\
-	grib1/grid_definition_0.def\
-	grib1/grid_definition_1.def\
-	grib1/grid_definition_10.def\
-	grib1/grid_definition_13.def\
-	grib1/grid_definition_14.def\
-	grib1/grid_definition_192.78.def\
-	grib1/grid_definition_192.98.def\
-	grib1/grid_definition_193.98.def\
-	grib1/grid_definition_20.def\
-	grib1/grid_definition_24.def\
-	grib1/grid_definition_3.def\
-	grib1/grid_definition_30.def\
-	grib1/grid_definition_34.def\
-	grib1/grid_definition_4.def\
-	grib1/grid_definition_5.def\
-	grib1/grid_definition_50.def\
-	grib1/grid_definition_60.def\
-	grib1/grid_definition_70.def\
-	grib1/grid_definition_8.def\
-	grib1/grid_definition_80.def\
-	grib1/grid_definition_90.def\
-	grib1/grid_definition_gaussian.def\
-	grib1/grid_definition_lambert.def\
-	grib1/grid_definition_latlon.def\
-	grib1/grid_definition_spherical_harmonics.def\
-	grib1/grid_first_last_resandcomp.def\
-	grib1/grid_rotation.def\
-	grib1/grid_stretching.def\
-	grib1/local.1.def\
-	grib1/local.13.table\
-	grib1/local.214.1.def\
-	grib1/local.214.244.def\
-	grib1/local.214.245.def\
-	grib1/local.214.def\
-	grib1/local.253.def\
-	grib1/local.254.def\
-	grib1/local.34.1.def\
-	grib1/local.34.def\
-	grib1/local.46.def\
-	grib1/local.54.def\
-	grib1/local.7.1.def\
-	grib1/local.7.def\
-	grib1/local.78.def\
-	grib1/local.80.def\
-	grib1/local.82.0.def\
-	grib1/local.82.82.def\
-	grib1/local.82.83.def\
-	grib1/local.82.def\
-	grib1/local.96.def\
-	grib1/local.98.1.def\
-	grib1/local.98.10.def\
-	grib1/local.98.11.def\
-	grib1/local.98.13.def\
-	grib1/local.98.14.def\
-	grib1/local.98.15.def\
-	grib1/local.98.16.def\
-	grib1/local.98.17.def\
-	grib1/local.98.18.def\
-	grib1/local.98.19.def\
-	grib1/local.98.190.def\
-	grib1/local.98.191.def\
-	grib1/local.98.192.def\
-	grib1/local.98.2.def\
-	grib1/local.98.20.def\
-	grib1/local.98.21.def\
-	grib1/local.98.218.def\
-	grib1/local.98.23.def\
-	grib1/local.98.24.def\
-	grib1/local.98.244.def\
-	grib1/local.98.245.def\
-	grib1/local.98.25.def\
-	grib1/local.98.26.def\
-	grib1/local.98.27.def\
-	grib1/local.98.28.def\
-	grib1/local.98.29.def\
-	grib1/local.98.3.def\
-	grib1/local.98.30.def\
-	grib1/local.98.31.def\
-	grib1/local.98.32.def\
-	grib1/local.98.33.def\
-	grib1/local.98.35.def\
-	grib1/local.98.36.def\
-	grib1/local.98.37.def\
-	grib1/local.98.38.def\
-	grib1/local.98.39.def\
-	grib1/local.98.4.def\
-	grib1/local.98.40.def\
-	grib1/local.98.5.def\
-	grib1/local.98.50.def\
-	grib1/local.98.6.def\
-	grib1/local.98.7.def\
-	grib1/local.98.8.def\
-	grib1/local.98.9.def\
-	grib1/local.98.def\
-	grib1/localDefinitionNumber.34.table\
-	grib1/localDefinitionNumber.82.table\
-	grib1/localDefinitionNumber.96.table\
-	grib1/localDefinitionNumber.98.table\
-	grib1/local_no_mars.98.1.def\
-	grib1/local_no_mars.98.24.def\
-	grib1/ls.def\
-	grib1/ls_labeling.82.def\
-	grib1/mars_labeling.23.def\
-	grib1/mars_labeling.4.def\
-	grib1/mars_labeling.82.def\
-	grib1/mars_labeling.def\
-	grib1/name.def\
-	grib1/ocean.1.table\
-	grib1/paramId.def\
-	grib1/precision.table\
-	grib1/predefined_grid.def\
-	grib1/regimes.table\
-	grib1/resolution_flags.def\
-	grib1/scanning_mode.def\
-	grib1/section.0.def\
-	grib1/section.1.def\
-	grib1/section.2.def\
-	grib1/section.3.def\
-	grib1/section.4.def\
-	grib1/section.5.def\
-	grib1/sensitive_area_domain.def\
-	grib1/shortName.def\
-	grib1/stepType.def\
-	grib1/tube_domain.def\
-	grib1/typeOfLevel.def\
-	grib1/units.def
-
-definitionsgrib1_local_ecmfdir = ${datarootdir}/eccodes/definitions/grib1/local/ecmf
-dist_definitionsgrib1_local_ecmf_DATA = \
-	grib1/local/ecmf/3.table\
-	grib1/local/ecmf/5.table
-
-definitionsgrib1_local_edzwdir = ${datarootdir}/eccodes/definitions/grib1/local/edzw
-dist_definitionsgrib1_local_edzw_DATA = \
-	grib1/local/edzw/3.table\
-	grib1/local/edzw/5.table
-
-definitionsgrib1_local_rjtddir = ${datarootdir}/eccodes/definitions/grib1/local/rjtd
-dist_definitionsgrib1_local_rjtd_DATA = \
-	grib1/local/rjtd/252.table\
-	grib1/local/rjtd/3.table\
-	grib1/local/rjtd/5.table
-
-definitionsgrib1_localConcepts_ammcdir = ${datarootdir}/eccodes/definitions/grib1/localConcepts/ammc
-dist_definitionsgrib1_localConcepts_ammc_DATA = \
-	grib1/localConcepts/ammc/name.def\
-	grib1/localConcepts/ammc/paramId.def\
-	grib1/localConcepts/ammc/shortName.def\
-	grib1/localConcepts/ammc/units.def
-
-definitionsgrib1_localConcepts_cnmcdir = ${datarootdir}/eccodes/definitions/grib1/localConcepts/cnmc
-dist_definitionsgrib1_localConcepts_cnmc_DATA = \
-	grib1/localConcepts/cnmc/name.def\
-	grib1/localConcepts/cnmc/paramId.def\
-	grib1/localConcepts/cnmc/shortName.def\
-	grib1/localConcepts/cnmc/units.def
-
-definitionsgrib1_localConcepts_ecmfdir = ${datarootdir}/eccodes/definitions/grib1/localConcepts/ecmf
-dist_definitionsgrib1_localConcepts_ecmf_DATA = \
-	grib1/localConcepts/ecmf/cfName.def\
-	grib1/localConcepts/ecmf/cfVarName.def\
-	grib1/localConcepts/ecmf/name.def\
-	grib1/localConcepts/ecmf/paramId.def\
-	grib1/localConcepts/ecmf/shortName.def\
-	grib1/localConcepts/ecmf/stepType.def\
-	grib1/localConcepts/ecmf/typeOfLevel.def\
-	grib1/localConcepts/ecmf/units.def
-
-definitionsgrib1_localConcepts_edzwdir = ${datarootdir}/eccodes/definitions/grib1/localConcepts/edzw
-dist_definitionsgrib1_localConcepts_edzw_DATA = \
-	grib1/localConcepts/edzw/name.def\
-	grib1/localConcepts/edzw/paramId.def\
-	grib1/localConcepts/edzw/shortName.def\
-	grib1/localConcepts/edzw/stepType.def\
-	grib1/localConcepts/edzw/units.def
-
-definitionsgrib1_localConcepts_eidbdir = ${datarootdir}/eccodes/definitions/grib1/localConcepts/eidb
-dist_definitionsgrib1_localConcepts_eidb_DATA = \
-	grib1/localConcepts/eidb/cfName.def\
-	grib1/localConcepts/eidb/name.def\
-	grib1/localConcepts/eidb/paramId.def\
-	grib1/localConcepts/eidb/shortName.def\
-	grib1/localConcepts/eidb/typeOfLevel.def\
-	grib1/localConcepts/eidb/units.def
-
-definitionsgrib1_localConcepts_ekmidir = ${datarootdir}/eccodes/definitions/grib1/localConcepts/ekmi
-dist_definitionsgrib1_localConcepts_ekmi_DATA = \
-	grib1/localConcepts/ekmi/name.def\
-	grib1/localConcepts/ekmi/paramId.def\
-	grib1/localConcepts/ekmi/shortName.def\
-	grib1/localConcepts/ekmi/units.def
-
-definitionsgrib1_localConcepts_enmidir = ${datarootdir}/eccodes/definitions/grib1/localConcepts/enmi
-dist_definitionsgrib1_localConcepts_enmi_DATA = \
-	grib1/localConcepts/enmi/name.def\
-	grib1/localConcepts/enmi/paramId.def\
-	grib1/localConcepts/enmi/shortName.def\
-	grib1/localConcepts/enmi/units.def
-
-definitionsgrib1_localConcepts_eswidir = ${datarootdir}/eccodes/definitions/grib1/localConcepts/eswi
-dist_definitionsgrib1_localConcepts_eswi_DATA = \
-	grib1/localConcepts/eswi/aerosolConcept.def\
-	grib1/localConcepts/eswi/aerosolbinnumber.table\
-	grib1/localConcepts/eswi/cfName.def\
-	grib1/localConcepts/eswi/landTypeConcept.def\
-	grib1/localConcepts/eswi/landtype.table\
-	grib1/localConcepts/eswi/name.def\
-	grib1/localConcepts/eswi/paramId.def\
-	grib1/localConcepts/eswi/shortName.def\
-	grib1/localConcepts/eswi/sort.table\
-	grib1/localConcepts/eswi/sortConcept.def\
-	grib1/localConcepts/eswi/timeRepresConcept.def\
-	grib1/localConcepts/eswi/timerepres.table\
-	grib1/localConcepts/eswi/typeOfLevel.def\
-	grib1/localConcepts/eswi/units.def
-
-definitionsgrib1_localConcepts_kwbcdir = ${datarootdir}/eccodes/definitions/grib1/localConcepts/kwbc
-dist_definitionsgrib1_localConcepts_kwbc_DATA = \
-	grib1/localConcepts/kwbc/name.def\
-	grib1/localConcepts/kwbc/paramId.def\
-	grib1/localConcepts/kwbc/shortName.def\
-	grib1/localConcepts/kwbc/units.def
-
-definitionsgrib1_localConcepts_lfpwdir = ${datarootdir}/eccodes/definitions/grib1/localConcepts/lfpw
-dist_definitionsgrib1_localConcepts_lfpw_DATA = \
-	grib1/localConcepts/lfpw/name.def\
-	grib1/localConcepts/lfpw/paramId.def\
-	grib1/localConcepts/lfpw/shortName.def\
-	grib1/localConcepts/lfpw/units.def
-
-definitionsgrib1_localConcepts_lowmdir = ${datarootdir}/eccodes/definitions/grib1/localConcepts/lowm
-dist_definitionsgrib1_localConcepts_lowm_DATA = \
-	grib1/localConcepts/lowm/name.def\
-	grib1/localConcepts/lowm/paramId.def\
-	grib1/localConcepts/lowm/shortName.def\
-	grib1/localConcepts/lowm/units.def
-
-definitionsgrib1_localConcepts_rjtddir = ${datarootdir}/eccodes/definitions/grib1/localConcepts/rjtd
-dist_definitionsgrib1_localConcepts_rjtd_DATA = \
-	grib1/localConcepts/rjtd/cfVarName.def\
-	grib1/localConcepts/rjtd/name.def\
-	grib1/localConcepts/rjtd/paramId.def\
-	grib1/localConcepts/rjtd/shortName.def\
-	grib1/localConcepts/rjtd/stepType.def\
-	grib1/localConcepts/rjtd/typeOfLevel.def\
-	grib1/localConcepts/rjtd/units.def
-
-definitionsgrib1_localConcepts_sbsjdir = ${datarootdir}/eccodes/definitions/grib1/localConcepts/sbsj
-dist_definitionsgrib1_localConcepts_sbsj_DATA = \
-	grib1/localConcepts/sbsj/name.def\
-	grib1/localConcepts/sbsj/paramId.def\
-	grib1/localConcepts/sbsj/shortName.def\
-	grib1/localConcepts/sbsj/units.def
-
-definitionsgrib2dir = ${datarootdir}/eccodes/definitions/grib2
-dist_definitionsgrib2_DATA = \
-	grib2/boot.def\
-	grib2/boot_multifield.def\
-	grib2/cfName.def\
-	grib2/cfVarName.def\
-	grib2/dimension.0.table\
-	grib2/dimensionTableNumber.table\
-	grib2/dimensionType.table\
-	grib2/grib2LocalSectionNumber.82.table\
-	grib2/grib2LocalSectionNumber.98.table\
-	grib2/local.82.0.def\
-	grib2/local.82.82.def\
-	grib2/local.82.83.def\
-	grib2/local.82.def\
-	grib2/local.98.0.def\
-	grib2/local.98.1.def\
-	grib2/local.98.11.def\
-	grib2/local.98.14.def\
-	grib2/local.98.15.def\
-	grib2/local.98.16.def\
-	grib2/local.98.18.def\
-	grib2/local.98.20.def\
-	grib2/local.98.21.def\
-	grib2/local.98.24.def\
-	grib2/local.98.25.def\
-	grib2/local.98.26.def\
-	grib2/local.98.28.def\
-	grib2/local.98.30.def\
-	grib2/local.98.300.def\
-	grib2/local.98.36.def\
-	grib2/local.98.38.def\
-	grib2/local.98.39.def\
-	grib2/local.98.500.def\
-	grib2/local.98.7.def\
-	grib2/local.98.9.def\
-	grib2/local.98.def\
-	grib2/local.tigge.1.def\
-	grib2/ls.def\
-	grib2/ls_labeling.82.def\
-	grib2/mars_labeling.82.def\
-	grib2/mars_labeling.def\
-	grib2/meta.def\
-	grib2/name.def\
-	grib2/paramId.def\
-	grib2/parameters.def\
-	grib2/products_0.def\
-	grib2/products_1.def\
-	grib2/products_2.def\
-	grib2/products_3.def\
-	grib2/products_4.def\
-	grib2/products_5.def\
-	grib2/products_6.def\
-	grib2/products_7.def\
-	grib2/products_8.def\
-	grib2/products_9.def\
-	grib2/rules.def\
-	grib2/section.0.def\
-	grib2/section.1.def\
-	grib2/section.2.def\
-	grib2/section.3.def\
-	grib2/section.4.def\
-	grib2/section.5.def\
-	grib2/section.6.def\
-	grib2/section.7.def\
-	grib2/section.8.def\
-	grib2/sections.def\
-	grib2/shortName.def\
-	grib2/template.1.0.def\
-	grib2/template.1.1.def\
-	grib2/template.1.2.def\
-	grib2/template.1.calendar.def\
-	grib2/template.1.offset.def\
-	grib2/template.3.0.def\
-	grib2/template.3.1.def\
-	grib2/template.3.10.def\
-	grib2/template.3.100.def\
-	grib2/template.3.1000.def\
-	grib2/template.3.101.def\
-	grib2/template.3.110.def\
-	grib2/template.3.1100.def\
-	grib2/template.3.12.def\
-	grib2/template.3.120.def\
-	grib2/template.3.1200.def\
-	grib2/template.3.130.def\
-	grib2/template.3.140.def\
-	grib2/template.3.2.def\
-	grib2/template.3.20.def\
-	grib2/template.3.3.def\
-	grib2/template.3.30.def\
-	grib2/template.3.31.def\
-	grib2/template.3.4.def\
-	grib2/template.3.40.def\
-	grib2/template.3.41.def\
-	grib2/template.3.42.def\
-	grib2/template.3.43.def\
-	grib2/template.3.5.def\
-	grib2/template.3.50.def\
-	grib2/template.3.51.def\
-	grib2/template.3.52.def\
-	grib2/template.3.53.def\
-	grib2/template.3.90.def\
-	grib2/template.3.gaussian.def\
-	grib2/template.3.grid.def\
-	grib2/template.3.latlon.def\
-	grib2/template.3.latlon_vares.def\
-	grib2/template.3.resolution_flags.def\
-	grib2/template.3.rotation.def\
-	grib2/template.3.scanning_mode.def\
-	grib2/template.3.shape_of_the_earth.def\
-	grib2/template.3.spherical_harmonics.def\
-	grib2/template.3.stretching.def\
-	grib2/template.4.0.def\
-	grib2/template.4.1.def\
-	grib2/template.4.10.def\
-	grib2/template.4.1000.def\
-	grib2/template.4.1001.def\
-	grib2/template.4.1002.def\
-	grib2/template.4.11.def\
-	grib2/template.4.1100.def\
-	grib2/template.4.1101.def\
-	grib2/template.4.12.def\
-	grib2/template.4.13.def\
-	grib2/template.4.14.def\
-	grib2/template.4.15.def\
-	grib2/template.4.2.def\
-	grib2/template.4.20.def\
-	grib2/template.4.2000.def\
-	grib2/template.4.254.def\
-	grib2/template.4.3.def\
-	grib2/template.4.30.def\
-	grib2/template.4.31.def\
-	grib2/template.4.311.def\
-	grib2/template.4.32.def\
-	grib2/template.4.33.def\
-	grib2/template.4.34.def\
-	grib2/template.4.4.def\
-	grib2/template.4.40.def\
-	grib2/template.4.40033.def\
-	grib2/template.4.40034.def\
-	grib2/template.4.41.def\
-	grib2/template.4.42.def\
-	grib2/template.4.43.def\
-	grib2/template.4.44.def\
-	grib2/template.4.45.def\
-	grib2/template.4.46.def\
-	grib2/template.4.47.def\
-	grib2/template.4.48.def\
-	grib2/template.4.5.def\
-	grib2/template.4.51.def\
-	grib2/template.4.53.def\
-	grib2/template.4.54.def\
-	grib2/template.4.6.def\
-	grib2/template.4.60.def\
-	grib2/template.4.61.def\
-	grib2/template.4.7.def\
-	grib2/template.4.8.def\
-	grib2/template.4.9.def\
-	grib2/template.4.91.def\
-	grib2/template.4.categorical.def\
-	grib2/template.4.circular_cluster.def\
-	grib2/template.4.derived.def\
-	grib2/template.4.eps.def\
-	grib2/template.4.horizontal.def\
-	grib2/template.4.parameter.def\
-	grib2/template.4.parameter_aerosol.def\
-	grib2/template.4.parameter_aerosol_44.def\
-	grib2/template.4.parameter_aerosol_optical.def\
-	grib2/template.4.parameter_chemical.def\
-	grib2/template.4.parameter_partition.def\
-	grib2/template.4.percentile.def\
-	grib2/template.4.point_in_time.def\
-	grib2/template.4.probability.def\
-	grib2/template.4.rectangular_cluster.def\
-	grib2/template.4.reforecast.def\
-	grib2/template.4.statistical.def\
-	grib2/template.5.0.def\
-	grib2/template.5.1.def\
-	grib2/template.5.2.def\
-	grib2/template.5.3.def\
-	grib2/template.5.4.def\
-	grib2/template.5.40.def\
-	grib2/template.5.40000.def\
-	grib2/template.5.40010.def\
-	grib2/template.5.41.def\
-	grib2/template.5.42.def\
-	grib2/template.5.50.def\
-	grib2/template.5.50000.def\
-	grib2/template.5.50001.def\
-	grib2/template.5.50002.def\
-	grib2/template.5.51.def\
-	grib2/template.5.6.def\
-	grib2/template.5.61.def\
-	grib2/template.5.original_values.def\
-	grib2/template.5.packing.def\
-	grib2/template.5.second_order.def\
-	grib2/template.7.0.def\
-	grib2/template.7.1.def\
-	grib2/template.7.2.def\
-	grib2/template.7.3.def\
-	grib2/template.7.4.def\
-	grib2/template.7.40.def\
-	grib2/template.7.40000.def\
-	grib2/template.7.40010.def\
-	grib2/template.7.41.def\
-	grib2/template.7.42.def\
-	grib2/template.7.50.def\
-	grib2/template.7.50000.def\
-	grib2/template.7.50001.def\
-	grib2/template.7.50002.def\
-	grib2/template.7.51.def\
-	grib2/template.7.6.def\
-	grib2/template.7.61.def\
-	grib2/template.7.second_order.def\
-	grib2/template.second_order.def\
-	grib2/tiggeLocalVersion.table\
-	grib2/tigge_name.def\
-	grib2/tigge_parameter.def\
-	grib2/tigge_short_name.def\
-	grib2/tigge_suiteName.table\
-	grib2/units.def
-
-definitionsgrib2_localdir = ${datarootdir}/eccodes/definitions/grib2/local
-dist_definitionsgrib2_local_DATA = \
-	grib2/local/2.0.table
-
-definitionsgrib2_local_1098dir = ${datarootdir}/eccodes/definitions/grib2/local/1098
-dist_definitionsgrib2_local_1098_DATA = \
-	grib2/local/1098/2.1.table\
-	grib2/local/1098/centres.table\
-	grib2/local/1098/models.table\
-	grib2/local/1098/template.2.0.def
-
-definitionsgrib2_localConcepts_cnmcdir = ${datarootdir}/eccodes/definitions/grib2/localConcepts/cnmc
-dist_definitionsgrib2_localConcepts_cnmc_DATA = \
-	grib2/localConcepts/cnmc/name.def\
-	grib2/localConcepts/cnmc/paramId.def\
-	grib2/localConcepts/cnmc/shortName.def\
-	grib2/localConcepts/cnmc/units.def
-
-definitionsgrib2_localConcepts_ecmfdir = ${datarootdir}/eccodes/definitions/grib2/localConcepts/ecmf
-dist_definitionsgrib2_localConcepts_ecmf_DATA = \
-	grib2/localConcepts/ecmf/cfName.def\
-	grib2/localConcepts/ecmf/cfVarName.def\
-	grib2/localConcepts/ecmf/name.def\
-	grib2/localConcepts/ecmf/paramId.def\
-	grib2/localConcepts/ecmf/shortName.def\
-	grib2/localConcepts/ecmf/units.def
-
-definitionsgrib2_localConcepts_edzwdir = ${datarootdir}/eccodes/definitions/grib2/localConcepts/edzw
-dist_definitionsgrib2_localConcepts_edzw_DATA = \
-	grib2/localConcepts/edzw/name.def\
-	grib2/localConcepts/edzw/paramId.def\
-	grib2/localConcepts/edzw/shortName.def\
-	grib2/localConcepts/edzw/units.def
-
-definitionsgrib2_localConcepts_egrrdir = ${datarootdir}/eccodes/definitions/grib2/localConcepts/egrr
-dist_definitionsgrib2_localConcepts_egrr_DATA = \
-	grib2/localConcepts/egrr/name.def\
-	grib2/localConcepts/egrr/paramId.def\
-	grib2/localConcepts/egrr/shortName.def\
-	grib2/localConcepts/egrr/units.def
-
-definitionsgrib2_localConcepts_ekmidir = ${datarootdir}/eccodes/definitions/grib2/localConcepts/ekmi
-dist_definitionsgrib2_localConcepts_ekmi_DATA = \
-	grib2/localConcepts/ekmi/name.def\
-	grib2/localConcepts/ekmi/paramId.def\
-	grib2/localConcepts/ekmi/shortName.def\
-	grib2/localConcepts/ekmi/units.def
-
-definitionsgrib2_localConcepts_eswidir = ${datarootdir}/eccodes/definitions/grib2/localConcepts/eswi
-dist_definitionsgrib2_localConcepts_eswi_DATA = \
-	grib2/localConcepts/eswi/name.def\
-	grib2/localConcepts/eswi/paramId.def\
-	grib2/localConcepts/eswi/shortName.def\
-	grib2/localConcepts/eswi/units.def
-
-definitionsgrib2_localConcepts_kwbcdir = ${datarootdir}/eccodes/definitions/grib2/localConcepts/kwbc
-dist_definitionsgrib2_localConcepts_kwbc_DATA = \
-	grib2/localConcepts/kwbc/name.def\
-	grib2/localConcepts/kwbc/paramId.def\
-	grib2/localConcepts/kwbc/shortName.def\
-	grib2/localConcepts/kwbc/units.def
-
-definitionsgrib2_localConcepts_lfpwdir = ${datarootdir}/eccodes/definitions/grib2/localConcepts/lfpw
-dist_definitionsgrib2_localConcepts_lfpw_DATA = \
-	grib2/localConcepts/lfpw/name.def\
-	grib2/localConcepts/lfpw/paramId.def\
-	grib2/localConcepts/lfpw/shortName.def\
-	grib2/localConcepts/lfpw/units.def
-
-definitionsgrib2_localConcepts_lfpw1dir = ${datarootdir}/eccodes/definitions/grib2/localConcepts/lfpw1
-dist_definitionsgrib2_localConcepts_lfpw1_DATA = \
-	grib2/localConcepts/lfpw1/name.def\
-	grib2/localConcepts/lfpw1/paramId.def\
-	grib2/localConcepts/lfpw1/shortName.def\
-	grib2/localConcepts/lfpw1/units.def
-
-definitionsgrib2_tablesdir = ${datarootdir}/eccodes/definitions/grib2/tables
-dist_definitionsgrib2_tables_DATA = \
-	grib2/tables/0.0.table\
-	grib2/tables/1.0.table
-
-definitionsgrib2_tables_0dir = ${datarootdir}/eccodes/definitions/grib2/tables/0
-dist_definitionsgrib2_tables_0_DATA = \
-	grib2/tables/0/0.0.table\
-	grib2/tables/0/1.0.table\
-	grib2/tables/0/1.1.table\
-	grib2/tables/0/1.2.table\
-	grib2/tables/0/1.3.table\
-	grib2/tables/0/1.4.table\
-	grib2/tables/0/3.0.table\
-	grib2/tables/0/3.1.table\
-	grib2/tables/0/3.10.table\
-	grib2/tables/0/3.11.table\
-	grib2/tables/0/3.15.table\
-	grib2/tables/0/3.2.table\
-	grib2/tables/0/3.20.table\
-	grib2/tables/0/3.21.table\
-	grib2/tables/0/3.3.table\
-	grib2/tables/0/3.4.table\
-	grib2/tables/0/3.5.table\
-	grib2/tables/0/3.6.table\
-	grib2/tables/0/3.7.table\
-	grib2/tables/0/3.8.table\
-	grib2/tables/0/3.9.table\
-	grib2/tables/0/4.0.table\
-	grib2/tables/0/4.1.0.table\
-	grib2/tables/0/4.1.1.table\
-	grib2/tables/0/4.1.10.table\
-	grib2/tables/0/4.1.2.table\
-	grib2/tables/0/4.1.3.table\
-	grib2/tables/0/4.1.table\
-	grib2/tables/0/4.10.table\
-	grib2/tables/0/4.11.table\
-	grib2/tables/0/4.12.table\
-	grib2/tables/0/4.13.table\
-	grib2/tables/0/4.14.table\
-	grib2/tables/0/4.15.table\
-	grib2/tables/0/4.151.table\
-	grib2/tables/0/4.2.0.0.table\
-	grib2/tables/0/4.2.0.1.table\
-	grib2/tables/0/4.2.0.13.table\
-	grib2/tables/0/4.2.0.14.table\
-	grib2/tables/0/4.2.0.15.table\
-	grib2/tables/0/4.2.0.18.table\
-	grib2/tables/0/4.2.0.19.table\
-	grib2/tables/0/4.2.0.190.table\
-	grib2/tables/0/4.2.0.191.table\
-	grib2/tables/0/4.2.0.2.table\
-	grib2/tables/0/4.2.0.20.table\
-	grib2/tables/0/4.2.0.3.table\
-	grib2/tables/0/4.2.0.4.table\
-	grib2/tables/0/4.2.0.5.table\
-	grib2/tables/0/4.2.0.6.table\
-	grib2/tables/0/4.2.0.7.table\
-	grib2/tables/0/4.2.1.0.table\
-	grib2/tables/0/4.2.1.1.table\
-	grib2/tables/0/4.2.10.0.table\
-	grib2/tables/0/4.2.10.1.table\
-	grib2/tables/0/4.2.10.2.table\
-	grib2/tables/0/4.2.10.3.table\
-	grib2/tables/0/4.2.10.4.table\
-	grib2/tables/0/4.2.2.0.table\
-	grib2/tables/0/4.2.2.3.table\
-	grib2/tables/0/4.2.3.0.table\
-	grib2/tables/0/4.2.3.1.table\
-	grib2/tables/0/4.2.table\
-	grib2/tables/0/4.201.table\
-	grib2/tables/0/4.202.table\
-	grib2/tables/0/4.203.table\
-	grib2/tables/0/4.204.table\
-	grib2/tables/0/4.205.table\
-	grib2/tables/0/4.206.table\
-	grib2/tables/0/4.207.table\
-	grib2/tables/0/4.208.table\
-	grib2/tables/0/4.209.table\
-	grib2/tables/0/4.210.table\
-	grib2/tables/0/4.211.table\
-	grib2/tables/0/4.212.table\
-	grib2/tables/0/4.213.table\
-	grib2/tables/0/4.215.table\
-	grib2/tables/0/4.216.table\
-	grib2/tables/0/4.217.table\
-	grib2/tables/0/4.220.table\
-	grib2/tables/0/4.221.table\
-	grib2/tables/0/4.230.table\
-	grib2/tables/0/4.3.table\
-	grib2/tables/0/4.4.table\
-	grib2/tables/0/4.5.table\
-	grib2/tables/0/4.6.table\
-	grib2/tables/0/4.7.table\
-	grib2/tables/0/4.8.table\
-	grib2/tables/0/4.9.table\
-	grib2/tables/0/4.91.table\
-	grib2/tables/0/5.0.table\
-	grib2/tables/0/5.1.table\
-	grib2/tables/0/5.2.table\
-	grib2/tables/0/5.3.table\
-	grib2/tables/0/5.4.table\
-	grib2/tables/0/5.40.table\
-	grib2/tables/0/5.40000.table\
-	grib2/tables/0/5.5.table\
-	grib2/tables/0/5.6.table\
-	grib2/tables/0/5.7.table\
-	grib2/tables/0/5.8.table\
-	grib2/tables/0/5.9.table\
-	grib2/tables/0/6.0.table\
-	grib2/tables/0/stepType.table
-
-definitionsgrib2_tables_1dir = ${datarootdir}/eccodes/definitions/grib2/tables/1
-dist_definitionsgrib2_tables_1_DATA = \
-	grib2/tables/1/0.0.table\
-	grib2/tables/1/1.0.table\
-	grib2/tables/1/1.1.table\
-	grib2/tables/1/1.2.table\
-	grib2/tables/1/1.3.table\
-	grib2/tables/1/1.4.table\
-	grib2/tables/1/3.0.table\
-	grib2/tables/1/3.1.table\
-	grib2/tables/1/3.10.table\
-	grib2/tables/1/3.11.table\
-	grib2/tables/1/3.15.table\
-	grib2/tables/1/3.2.table\
-	grib2/tables/1/3.20.table\
-	grib2/tables/1/3.21.table\
-	grib2/tables/1/3.3.table\
-	grib2/tables/1/3.4.table\
-	grib2/tables/1/3.5.table\
-	grib2/tables/1/3.6.table\
-	grib2/tables/1/3.7.table\
-	grib2/tables/1/3.8.table\
-	grib2/tables/1/3.9.table\
-	grib2/tables/1/4.0.table\
-	grib2/tables/1/4.1.0.table\
-	grib2/tables/1/4.1.1.table\
-	grib2/tables/1/4.1.10.table\
-	grib2/tables/1/4.1.2.table\
-	grib2/tables/1/4.1.3.table\
-	grib2/tables/1/4.1.table\
-	grib2/tables/1/4.10.table\
-	grib2/tables/1/4.11.table\
-	grib2/tables/1/4.12.table\
-	grib2/tables/1/4.13.table\
-	grib2/tables/1/4.14.table\
-	grib2/tables/1/4.15.table\
-	grib2/tables/1/4.151.table\
-	grib2/tables/1/4.2.0.0.table\
-	grib2/tables/1/4.2.0.1.table\
-	grib2/tables/1/4.2.0.13.table\
-	grib2/tables/1/4.2.0.14.table\
-	grib2/tables/1/4.2.0.15.table\
-	grib2/tables/1/4.2.0.18.table\
-	grib2/tables/1/4.2.0.19.table\
-	grib2/tables/1/4.2.0.190.table\
-	grib2/tables/1/4.2.0.191.table\
-	grib2/tables/1/4.2.0.2.table\
-	grib2/tables/1/4.2.0.20.table\
-	grib2/tables/1/4.2.0.3.table\
-	grib2/tables/1/4.2.0.4.table\
-	grib2/tables/1/4.2.0.5.table\
-	grib2/tables/1/4.2.0.6.table\
-	grib2/tables/1/4.2.0.7.table\
-	grib2/tables/1/4.2.1.0.table\
-	grib2/tables/1/4.2.1.1.table\
-	grib2/tables/1/4.2.10.0.table\
-	grib2/tables/1/4.2.10.1.table\
-	grib2/tables/1/4.2.10.2.table\
-	grib2/tables/1/4.2.10.3.table\
-	grib2/tables/1/4.2.10.4.table\
-	grib2/tables/1/4.2.2.0.table\
-	grib2/tables/1/4.2.2.3.table\
-	grib2/tables/1/4.2.3.0.table\
-	grib2/tables/1/4.2.3.1.table\
-	grib2/tables/1/4.2.table\
-	grib2/tables/1/4.201.table\
-	grib2/tables/1/4.202.table\
-	grib2/tables/1/4.203.table\
-	grib2/tables/1/4.204.table\
-	grib2/tables/1/4.205.table\
-	grib2/tables/1/4.206.table\
-	grib2/tables/1/4.207.table\
-	grib2/tables/1/4.208.table\
-	grib2/tables/1/4.209.table\
-	grib2/tables/1/4.210.table\
-	grib2/tables/1/4.211.table\
-	grib2/tables/1/4.212.table\
-	grib2/tables/1/4.213.table\
-	grib2/tables/1/4.215.table\
-	grib2/tables/1/4.216.table\
-	grib2/tables/1/4.217.table\
-	grib2/tables/1/4.220.table\
-	grib2/tables/1/4.221.table\
-	grib2/tables/1/4.230.table\
-	grib2/tables/1/4.3.table\
-	grib2/tables/1/4.4.table\
-	grib2/tables/1/4.5.table\
-	grib2/tables/1/4.6.table\
-	grib2/tables/1/4.7.table\
-	grib2/tables/1/4.8.table\
-	grib2/tables/1/4.9.table\
-	grib2/tables/1/4.91.table\
-	grib2/tables/1/5.0.table\
-	grib2/tables/1/5.1.table\
-	grib2/tables/1/5.2.table\
-	grib2/tables/1/5.3.table\
-	grib2/tables/1/5.4.table\
-	grib2/tables/1/5.40.table\
-	grib2/tables/1/5.40000.table\
-	grib2/tables/1/5.5.table\
-	grib2/tables/1/5.6.table\
-	grib2/tables/1/5.7.table\
-	grib2/tables/1/5.8.table\
-	grib2/tables/1/5.9.table\
-	grib2/tables/1/6.0.table\
-	grib2/tables/1/stepType.table
-
-definitionsgrib2_tables_10dir = ${datarootdir}/eccodes/definitions/grib2/tables/10
-dist_definitionsgrib2_tables_10_DATA = \
-	grib2/tables/10/0.0.table\
-	grib2/tables/10/1.0.table\
-	grib2/tables/10/1.1.table\
-	grib2/tables/10/1.2.table\
-	grib2/tables/10/1.3.table\
-	grib2/tables/10/1.4.table\
-	grib2/tables/10/3.0.table\
-	grib2/tables/10/3.1.table\
-	grib2/tables/10/3.10.table\
-	grib2/tables/10/3.11.table\
-	grib2/tables/10/3.15.table\
-	grib2/tables/10/3.2.table\
-	grib2/tables/10/3.20.table\
-	grib2/tables/10/3.21.table\
-	grib2/tables/10/3.3.table\
-	grib2/tables/10/3.4.table\
-	grib2/tables/10/3.5.table\
-	grib2/tables/10/3.6.table\
-	grib2/tables/10/3.7.table\
-	grib2/tables/10/3.8.table\
-	grib2/tables/10/3.9.table\
-	grib2/tables/10/4.0.table\
-	grib2/tables/10/4.1.0.table\
-	grib2/tables/10/4.1.1.table\
-	grib2/tables/10/4.1.10.table\
-	grib2/tables/10/4.1.192.table\
-	grib2/tables/10/4.1.2.table\
-	grib2/tables/10/4.1.3.table\
-	grib2/tables/10/4.1.table\
-	grib2/tables/10/4.10.table\
-	grib2/tables/10/4.11.table\
-	grib2/tables/10/4.12.table\
-	grib2/tables/10/4.13.table\
-	grib2/tables/10/4.14.table\
-	grib2/tables/10/4.15.table\
-	grib2/tables/10/4.151.table\
-	grib2/tables/10/4.192.table\
-	grib2/tables/10/4.2.0.0.table\
-	grib2/tables/10/4.2.0.1.table\
-	grib2/tables/10/4.2.0.13.table\
-	grib2/tables/10/4.2.0.14.table\
-	grib2/tables/10/4.2.0.15.table\
-	grib2/tables/10/4.2.0.16.table\
-	grib2/tables/10/4.2.0.18.table\
-	grib2/tables/10/4.2.0.19.table\
-	grib2/tables/10/4.2.0.190.table\
-	grib2/tables/10/4.2.0.191.table\
-	grib2/tables/10/4.2.0.2.table\
-	grib2/tables/10/4.2.0.20.table\
-	grib2/tables/10/4.2.0.3.table\
-	grib2/tables/10/4.2.0.4.table\
-	grib2/tables/10/4.2.0.5.table\
-	grib2/tables/10/4.2.0.6.table\
-	grib2/tables/10/4.2.0.7.table\
-	grib2/tables/10/4.2.1.0.table\
-	grib2/tables/10/4.2.1.1.table\
-	grib2/tables/10/4.2.1.2.table\
-	grib2/tables/10/4.2.10.0.table\
-	grib2/tables/10/4.2.10.1.table\
-	grib2/tables/10/4.2.10.191.table\
-	grib2/tables/10/4.2.10.2.table\
-	grib2/tables/10/4.2.10.3.table\
-	grib2/tables/10/4.2.10.4.table\
-	grib2/tables/10/4.2.2.0.table\
-	grib2/tables/10/4.2.2.3.table\
-	grib2/tables/10/4.2.2.4.table\
-	grib2/tables/10/4.2.3.0.table\
-	grib2/tables/10/4.2.3.1.table\
-	grib2/tables/10/4.2.table\
-	grib2/tables/10/4.201.table\
-	grib2/tables/10/4.202.table\
-	grib2/tables/10/4.203.table\
-	grib2/tables/10/4.204.table\
-	grib2/tables/10/4.205.table\
-	grib2/tables/10/4.206.table\
-	grib2/tables/10/4.207.table\
-	grib2/tables/10/4.208.table\
-	grib2/tables/10/4.209.table\
-	grib2/tables/10/4.210.table\
-	grib2/tables/10/4.211.table\
-	grib2/tables/10/4.212.table\
-	grib2/tables/10/4.213.table\
-	grib2/tables/10/4.215.table\
-	grib2/tables/10/4.216.table\
-	grib2/tables/10/4.217.table\
-	grib2/tables/10/4.218.table\
-	grib2/tables/10/4.219.table\
-	grib2/tables/10/4.220.table\
-	grib2/tables/10/4.221.table\
-	grib2/tables/10/4.222.table\
-	grib2/tables/10/4.223.table\
-	grib2/tables/10/4.224.table\
-	grib2/tables/10/4.225.table\
-	grib2/tables/10/4.227.table\
-	grib2/tables/10/4.230.table\
-	grib2/tables/10/4.233.table\
-	grib2/tables/10/4.234.table\
-	grib2/tables/10/4.235.table\
-	grib2/tables/10/4.3.table\
-	grib2/tables/10/4.4.table\
-	grib2/tables/10/4.5.table\
-	grib2/tables/10/4.6.table\
-	grib2/tables/10/4.7.table\
-	grib2/tables/10/4.8.table\
-	grib2/tables/10/4.9.table\
-	grib2/tables/10/4.91.table\
-	grib2/tables/10/5.0.table\
-	grib2/tables/10/5.1.table\
-	grib2/tables/10/5.2.table\
-	grib2/tables/10/5.3.table\
-	grib2/tables/10/5.4.table\
-	grib2/tables/10/5.40.table\
-	grib2/tables/10/5.40000.table\
-	grib2/tables/10/5.5.table\
-	grib2/tables/10/5.50002.table\
-	grib2/tables/10/5.6.table\
-	grib2/tables/10/5.7.table\
-	grib2/tables/10/5.8.table\
-	grib2/tables/10/5.9.table\
-	grib2/tables/10/6.0.table\
-	grib2/tables/10/stepType.table
-
-definitionsgrib2_tables_11dir = ${datarootdir}/eccodes/definitions/grib2/tables/11
-dist_definitionsgrib2_tables_11_DATA = \
-	grib2/tables/11/0.0.table\
-	grib2/tables/11/1.0.table\
-	grib2/tables/11/1.1.table\
-	grib2/tables/11/1.2.table\
-	grib2/tables/11/1.3.table\
-	grib2/tables/11/1.4.table\
-	grib2/tables/11/3.0.table\
-	grib2/tables/11/3.1.table\
-	grib2/tables/11/3.10.table\
-	grib2/tables/11/3.11.table\
-	grib2/tables/11/3.15.table\
-	grib2/tables/11/3.2.table\
-	grib2/tables/11/3.20.table\
-	grib2/tables/11/3.21.table\
-	grib2/tables/11/3.3.table\
-	grib2/tables/11/3.4.table\
-	grib2/tables/11/3.5.table\
-	grib2/tables/11/3.6.table\
-	grib2/tables/11/3.7.table\
-	grib2/tables/11/3.8.table\
-	grib2/tables/11/3.9.table\
-	grib2/tables/11/4.0.table\
-	grib2/tables/11/4.1.0.table\
-	grib2/tables/11/4.1.1.table\
-	grib2/tables/11/4.1.10.table\
-	grib2/tables/11/4.1.192.table\
-	grib2/tables/11/4.1.2.table\
-	grib2/tables/11/4.1.3.table\
-	grib2/tables/11/4.10.table\
-	grib2/tables/11/4.11.table\
-	grib2/tables/11/4.12.table\
-	grib2/tables/11/4.13.table\
-	grib2/tables/11/4.14.table\
-	grib2/tables/11/4.15.table\
-	grib2/tables/11/4.192.table\
-	grib2/tables/11/4.2.0.0.table\
-	grib2/tables/11/4.2.0.1.table\
-	grib2/tables/11/4.2.0.13.table\
-	grib2/tables/11/4.2.0.14.table\
-	grib2/tables/11/4.2.0.15.table\
-	grib2/tables/11/4.2.0.16.table\
-	grib2/tables/11/4.2.0.18.table\
-	grib2/tables/11/4.2.0.19.table\
-	grib2/tables/11/4.2.0.190.table\
-	grib2/tables/11/4.2.0.191.table\
-	grib2/tables/11/4.2.0.2.table\
-	grib2/tables/11/4.2.0.20.table\
-	grib2/tables/11/4.2.0.3.table\
-	grib2/tables/11/4.2.0.4.table\
-	grib2/tables/11/4.2.0.5.table\
-	grib2/tables/11/4.2.0.6.table\
-	grib2/tables/11/4.2.0.7.table\
-	grib2/tables/11/4.2.1.0.table\
-	grib2/tables/11/4.2.1.1.table\
-	grib2/tables/11/4.2.1.2.table\
-	grib2/tables/11/4.2.10.0.table\
-	grib2/tables/11/4.2.10.1.table\
-	grib2/tables/11/4.2.10.191.table\
-	grib2/tables/11/4.2.10.2.table\
-	grib2/tables/11/4.2.10.3.table\
-	grib2/tables/11/4.2.10.4.table\
-	grib2/tables/11/4.2.2.0.table\
-	grib2/tables/11/4.2.2.3.table\
-	grib2/tables/11/4.2.2.4.table\
-	grib2/tables/11/4.2.3.0.table\
-	grib2/tables/11/4.2.3.1.table\
-	grib2/tables/11/4.201.table\
-	grib2/tables/11/4.202.table\
-	grib2/tables/11/4.203.table\
-	grib2/tables/11/4.204.table\
-	grib2/tables/11/4.205.table\
-	grib2/tables/11/4.206.table\
-	grib2/tables/11/4.207.table\
-	grib2/tables/11/4.208.table\
-	grib2/tables/11/4.209.table\
-	grib2/tables/11/4.210.table\
-	grib2/tables/11/4.211.table\
-	grib2/tables/11/4.212.table\
-	grib2/tables/11/4.213.table\
-	grib2/tables/11/4.215.table\
-	grib2/tables/11/4.216.table\
-	grib2/tables/11/4.217.table\
-	grib2/tables/11/4.218.table\
-	grib2/tables/11/4.219.table\
-	grib2/tables/11/4.220.table\
-	grib2/tables/11/4.221.table\
-	grib2/tables/11/4.222.table\
-	grib2/tables/11/4.223.table\
-	grib2/tables/11/4.224.table\
-	grib2/tables/11/4.225.table\
-	grib2/tables/11/4.227.table\
-	grib2/tables/11/4.230.table\
-	grib2/tables/11/4.233.table\
-	grib2/tables/11/4.234.table\
-	grib2/tables/11/4.236.table\
-	grib2/tables/11/4.3.table\
-	grib2/tables/11/4.4.table\
-	grib2/tables/11/4.5.table\
-	grib2/tables/11/4.6.table\
-	grib2/tables/11/4.7.table\
-	grib2/tables/11/4.8.table\
-	grib2/tables/11/4.9.table\
-	grib2/tables/11/4.91.table\
-	grib2/tables/11/5.0.table\
-	grib2/tables/11/5.1.table\
-	grib2/tables/11/5.2.table\
-	grib2/tables/11/5.3.table\
-	grib2/tables/11/5.4.table\
-	grib2/tables/11/5.40.table\
-	grib2/tables/11/5.40000.table\
-	grib2/tables/11/5.5.table\
-	grib2/tables/11/5.50002.table\
-	grib2/tables/11/5.6.table\
-	grib2/tables/11/5.7.table\
-	grib2/tables/11/5.8.table\
-	grib2/tables/11/5.9.table\
-	grib2/tables/11/6.0.table\
-	grib2/tables/11/stepType.table
-
-definitionsgrib2_tables_12dir = ${datarootdir}/eccodes/definitions/grib2/tables/12
-dist_definitionsgrib2_tables_12_DATA = \
-	grib2/tables/12/0.0.table\
-	grib2/tables/12/1.0.table\
-	grib2/tables/12/1.1.table\
-	grib2/tables/12/1.2.table\
-	grib2/tables/12/1.3.table\
-	grib2/tables/12/1.4.table\
-	grib2/tables/12/1.5.table\
-	grib2/tables/12/1.6.table\
-	grib2/tables/12/3.0.table\
-	grib2/tables/12/3.1.table\
-	grib2/tables/12/3.10.table\
-	grib2/tables/12/3.11.table\
-	grib2/tables/12/3.15.table\
-	grib2/tables/12/3.2.table\
-	grib2/tables/12/3.20.table\
-	grib2/tables/12/3.21.table\
-	grib2/tables/12/3.3.table\
-	grib2/tables/12/3.4.table\
-	grib2/tables/12/3.5.table\
-	grib2/tables/12/3.6.table\
-	grib2/tables/12/3.7.table\
-	grib2/tables/12/3.8.table\
-	grib2/tables/12/3.9.table\
-	grib2/tables/12/4.0.table\
-	grib2/tables/12/4.1.0.table\
-	grib2/tables/12/4.1.1.table\
-	grib2/tables/12/4.1.10.table\
-	grib2/tables/12/4.1.192.table\
-	grib2/tables/12/4.1.2.table\
-	grib2/tables/12/4.1.3.table\
-	grib2/tables/12/4.10.table\
-	grib2/tables/12/4.11.table\
-	grib2/tables/12/4.12.table\
-	grib2/tables/12/4.13.table\
-	grib2/tables/12/4.14.table\
-	grib2/tables/12/4.15.table\
-	grib2/tables/12/4.192.table\
-	grib2/tables/12/4.2.0.0.table\
-	grib2/tables/12/4.2.0.1.table\
-	grib2/tables/12/4.2.0.13.table\
-	grib2/tables/12/4.2.0.14.table\
-	grib2/tables/12/4.2.0.15.table\
-	grib2/tables/12/4.2.0.16.table\
-	grib2/tables/12/4.2.0.18.table\
-	grib2/tables/12/4.2.0.19.table\
-	grib2/tables/12/4.2.0.190.table\
-	grib2/tables/12/4.2.0.191.table\
-	grib2/tables/12/4.2.0.2.table\
-	grib2/tables/12/4.2.0.20.table\
-	grib2/tables/12/4.2.0.3.table\
-	grib2/tables/12/4.2.0.4.table\
-	grib2/tables/12/4.2.0.5.table\
-	grib2/tables/12/4.2.0.6.table\
-	grib2/tables/12/4.2.0.7.table\
-	grib2/tables/12/4.2.1.0.table\
-	grib2/tables/12/4.2.1.1.table\
-	grib2/tables/12/4.2.1.2.table\
-	grib2/tables/12/4.2.10.0.table\
-	grib2/tables/12/4.2.10.1.table\
-	grib2/tables/12/4.2.10.191.table\
-	grib2/tables/12/4.2.10.2.table\
-	grib2/tables/12/4.2.10.3.table\
-	grib2/tables/12/4.2.10.4.table\
-	grib2/tables/12/4.2.2.0.table\
-	grib2/tables/12/4.2.2.3.table\
-	grib2/tables/12/4.2.2.4.table\
-	grib2/tables/12/4.2.3.0.table\
-	grib2/tables/12/4.2.3.1.table\
-	grib2/tables/12/4.201.table\
-	grib2/tables/12/4.202.table\
-	grib2/tables/12/4.203.table\
-	grib2/tables/12/4.204.table\
-	grib2/tables/12/4.205.table\
-	grib2/tables/12/4.206.table\
-	grib2/tables/12/4.207.table\
-	grib2/tables/12/4.208.table\
-	grib2/tables/12/4.209.table\
-	grib2/tables/12/4.210.table\
-	grib2/tables/12/4.211.table\
-	grib2/tables/12/4.212.table\
-	grib2/tables/12/4.213.table\
-	grib2/tables/12/4.215.table\
-	grib2/tables/12/4.216.table\
-	grib2/tables/12/4.217.table\
-	grib2/tables/12/4.218.table\
-	grib2/tables/12/4.219.table\
-	grib2/tables/12/4.220.table\
-	grib2/tables/12/4.221.table\
-	grib2/tables/12/4.222.table\
-	grib2/tables/12/4.223.table\
-	grib2/tables/12/4.224.table\
-	grib2/tables/12/4.225.table\
-	grib2/tables/12/4.227.table\
-	grib2/tables/12/4.230.table\
-	grib2/tables/12/4.233.table\
-	grib2/tables/12/4.234.table\
-	grib2/tables/12/4.236.table\
-	grib2/tables/12/4.3.table\
-	grib2/tables/12/4.4.table\
-	grib2/tables/12/4.5.table\
-	grib2/tables/12/4.6.table\
-	grib2/tables/12/4.7.table\
-	grib2/tables/12/4.8.table\
-	grib2/tables/12/4.9.table\
-	grib2/tables/12/4.91.table\
-	grib2/tables/12/5.0.table\
-	grib2/tables/12/5.1.table\
-	grib2/tables/12/5.2.table\
-	grib2/tables/12/5.3.table\
-	grib2/tables/12/5.4.table\
-	grib2/tables/12/5.40.table\
-	grib2/tables/12/5.40000.table\
-	grib2/tables/12/5.5.table\
-	grib2/tables/12/5.50002.table\
-	grib2/tables/12/5.6.table\
-	grib2/tables/12/5.7.table\
-	grib2/tables/12/5.8.table\
-	grib2/tables/12/5.9.table\
-	grib2/tables/12/6.0.table\
-	grib2/tables/12/stepType.table
-
-definitionsgrib2_tables_13dir = ${datarootdir}/eccodes/definitions/grib2/tables/13
-dist_definitionsgrib2_tables_13_DATA = \
-	grib2/tables/13/0.0.table\
-	grib2/tables/13/1.0.table\
-	grib2/tables/13/1.1.table\
-	grib2/tables/13/1.2.table\
-	grib2/tables/13/1.3.table\
-	grib2/tables/13/1.4.table\
-	grib2/tables/13/1.5.table\
-	grib2/tables/13/1.6.table\
-	grib2/tables/13/3.0.table\
-	grib2/tables/13/3.1.table\
-	grib2/tables/13/3.10.table\
-	grib2/tables/13/3.11.table\
-	grib2/tables/13/3.15.table\
-	grib2/tables/13/3.2.table\
-	grib2/tables/13/3.20.table\
-	grib2/tables/13/3.21.table\
-	grib2/tables/13/3.3.table\
-	grib2/tables/13/3.4.table\
-	grib2/tables/13/3.5.table\
-	grib2/tables/13/3.6.table\
-	grib2/tables/13/3.7.table\
-	grib2/tables/13/3.8.table\
-	grib2/tables/13/3.9.table\
-	grib2/tables/13/4.0.table\
-	grib2/tables/13/4.1.0.table\
-	grib2/tables/13/4.1.1.table\
-	grib2/tables/13/4.1.10.table\
-	grib2/tables/13/4.1.192.table\
-	grib2/tables/13/4.1.2.table\
-	grib2/tables/13/4.1.3.table\
-	grib2/tables/13/4.10.table\
-	grib2/tables/13/4.11.table\
-	grib2/tables/13/4.12.table\
-	grib2/tables/13/4.13.table\
-	grib2/tables/13/4.14.table\
-	grib2/tables/13/4.15.table\
-	grib2/tables/13/4.192.table\
-	grib2/tables/13/4.2.0.0.table\
-	grib2/tables/13/4.2.0.1.table\
-	grib2/tables/13/4.2.0.13.table\
-	grib2/tables/13/4.2.0.14.table\
-	grib2/tables/13/4.2.0.15.table\
-	grib2/tables/13/4.2.0.16.table\
-	grib2/tables/13/4.2.0.17.table\
-	grib2/tables/13/4.2.0.18.table\
-	grib2/tables/13/4.2.0.19.table\
-	grib2/tables/13/4.2.0.190.table\
-	grib2/tables/13/4.2.0.191.table\
-	grib2/tables/13/4.2.0.2.table\
-	grib2/tables/13/4.2.0.20.table\
-	grib2/tables/13/4.2.0.3.table\
-	grib2/tables/13/4.2.0.4.table\
-	grib2/tables/13/4.2.0.5.table\
-	grib2/tables/13/4.2.0.6.table\
-	grib2/tables/13/4.2.0.7.table\
-	grib2/tables/13/4.2.1.0.table\
-	grib2/tables/13/4.2.1.1.table\
-	grib2/tables/13/4.2.1.2.table\
-	grib2/tables/13/4.2.10.0.table\
-	grib2/tables/13/4.2.10.1.table\
-	grib2/tables/13/4.2.10.191.table\
-	grib2/tables/13/4.2.10.2.table\
-	grib2/tables/13/4.2.10.3.table\
-	grib2/tables/13/4.2.10.4.table\
-	grib2/tables/13/4.2.2.0.table\
-	grib2/tables/13/4.2.2.3.table\
-	grib2/tables/13/4.2.2.4.table\
-	grib2/tables/13/4.2.3.0.table\
-	grib2/tables/13/4.2.3.1.table\
-	grib2/tables/13/4.201.table\
-	grib2/tables/13/4.202.table\
-	grib2/tables/13/4.203.table\
-	grib2/tables/13/4.204.table\
-	grib2/tables/13/4.205.table\
-	grib2/tables/13/4.206.table\
-	grib2/tables/13/4.207.table\
-	grib2/tables/13/4.208.table\
-	grib2/tables/13/4.209.table\
-	grib2/tables/13/4.210.table\
-	grib2/tables/13/4.211.table\
-	grib2/tables/13/4.212.table\
-	grib2/tables/13/4.213.table\
-	grib2/tables/13/4.215.table\
-	grib2/tables/13/4.216.table\
-	grib2/tables/13/4.217.table\
-	grib2/tables/13/4.218.table\
-	grib2/tables/13/4.219.table\
-	grib2/tables/13/4.220.table\
-	grib2/tables/13/4.221.table\
-	grib2/tables/13/4.222.table\
-	grib2/tables/13/4.223.table\
-	grib2/tables/13/4.224.table\
-	grib2/tables/13/4.225.table\
-	grib2/tables/13/4.227.table\
-	grib2/tables/13/4.230.table\
-	grib2/tables/13/4.233.table\
-	grib2/tables/13/4.234.table\
-	grib2/tables/13/4.236.table\
-	grib2/tables/13/4.3.table\
-	grib2/tables/13/4.4.table\
-	grib2/tables/13/4.5.table\
-	grib2/tables/13/4.6.table\
-	grib2/tables/13/4.7.table\
-	grib2/tables/13/4.8.table\
-	grib2/tables/13/4.9.table\
-	grib2/tables/13/4.91.table\
-	grib2/tables/13/5.0.table\
-	grib2/tables/13/5.1.table\
-	grib2/tables/13/5.2.table\
-	grib2/tables/13/5.3.table\
-	grib2/tables/13/5.4.table\
-	grib2/tables/13/5.40.table\
-	grib2/tables/13/5.40000.table\
-	grib2/tables/13/5.5.table\
-	grib2/tables/13/5.50002.table\
-	grib2/tables/13/5.6.table\
-	grib2/tables/13/5.7.table\
-	grib2/tables/13/5.8.table\
-	grib2/tables/13/5.9.table\
-	grib2/tables/13/6.0.table\
-	grib2/tables/13/stepType.table
-
-definitionsgrib2_tables_14dir = ${datarootdir}/eccodes/definitions/grib2/tables/14
-dist_definitionsgrib2_tables_14_DATA = \
-	grib2/tables/14/0.0.table\
-	grib2/tables/14/1.0.table\
-	grib2/tables/14/1.1.table\
-	grib2/tables/14/1.2.table\
-	grib2/tables/14/1.3.table\
-	grib2/tables/14/1.4.table\
-	grib2/tables/14/1.5.table\
-	grib2/tables/14/1.6.table\
-	grib2/tables/14/3.0.table\
-	grib2/tables/14/3.1.table\
-	grib2/tables/14/3.10.table\
-	grib2/tables/14/3.11.table\
-	grib2/tables/14/3.15.table\
-	grib2/tables/14/3.2.table\
-	grib2/tables/14/3.20.table\
-	grib2/tables/14/3.21.table\
-	grib2/tables/14/3.3.table\
-	grib2/tables/14/3.4.table\
-	grib2/tables/14/3.5.table\
-	grib2/tables/14/3.6.table\
-	grib2/tables/14/3.7.table\
-	grib2/tables/14/3.8.table\
-	grib2/tables/14/3.9.table\
-	grib2/tables/14/4.0.table\
-	grib2/tables/14/4.1.0.table\
-	grib2/tables/14/4.1.1.table\
-	grib2/tables/14/4.1.10.table\
-	grib2/tables/14/4.1.192.table\
-	grib2/tables/14/4.1.2.table\
-	grib2/tables/14/4.1.3.table\
-	grib2/tables/14/4.10.table\
-	grib2/tables/14/4.11.table\
-	grib2/tables/14/4.12.table\
-	grib2/tables/14/4.13.table\
-	grib2/tables/14/4.14.table\
-	grib2/tables/14/4.15.table\
-	grib2/tables/14/4.192.table\
-	grib2/tables/14/4.2.0.0.table\
-	grib2/tables/14/4.2.0.1.table\
-	grib2/tables/14/4.2.0.13.table\
-	grib2/tables/14/4.2.0.14.table\
-	grib2/tables/14/4.2.0.15.table\
-	grib2/tables/14/4.2.0.16.table\
-	grib2/tables/14/4.2.0.17.table\
-	grib2/tables/14/4.2.0.18.table\
-	grib2/tables/14/4.2.0.19.table\
-	grib2/tables/14/4.2.0.190.table\
-	grib2/tables/14/4.2.0.191.table\
-	grib2/tables/14/4.2.0.2.table\
-	grib2/tables/14/4.2.0.20.table\
-	grib2/tables/14/4.2.0.3.table\
-	grib2/tables/14/4.2.0.4.table\
-	grib2/tables/14/4.2.0.5.table\
-	grib2/tables/14/4.2.0.6.table\
-	grib2/tables/14/4.2.0.7.table\
-	grib2/tables/14/4.2.1.0.table\
-	grib2/tables/14/4.2.1.1.table\
-	grib2/tables/14/4.2.1.2.table\
-	grib2/tables/14/4.2.10.0.table\
-	grib2/tables/14/4.2.10.1.table\
-	grib2/tables/14/4.2.10.191.table\
-	grib2/tables/14/4.2.10.2.table\
-	grib2/tables/14/4.2.10.3.table\
-	grib2/tables/14/4.2.10.4.table\
-	grib2/tables/14/4.2.2.0.table\
-	grib2/tables/14/4.2.2.3.table\
-	grib2/tables/14/4.2.2.4.table\
-	grib2/tables/14/4.2.3.0.table\
-	grib2/tables/14/4.2.3.1.table\
-	grib2/tables/14/4.201.table\
-	grib2/tables/14/4.202.table\
-	grib2/tables/14/4.203.table\
-	grib2/tables/14/4.204.table\
-	grib2/tables/14/4.205.table\
-	grib2/tables/14/4.206.table\
-	grib2/tables/14/4.207.table\
-	grib2/tables/14/4.208.table\
-	grib2/tables/14/4.209.table\
-	grib2/tables/14/4.210.table\
-	grib2/tables/14/4.211.table\
-	grib2/tables/14/4.212.table\
-	grib2/tables/14/4.213.table\
-	grib2/tables/14/4.215.table\
-	grib2/tables/14/4.216.table\
-	grib2/tables/14/4.217.table\
-	grib2/tables/14/4.218.table\
-	grib2/tables/14/4.219.table\
-	grib2/tables/14/4.220.table\
-	grib2/tables/14/4.221.table\
-	grib2/tables/14/4.222.table\
-	grib2/tables/14/4.223.table\
-	grib2/tables/14/4.224.table\
-	grib2/tables/14/4.225.table\
-	grib2/tables/14/4.227.table\
-	grib2/tables/14/4.230.table\
-	grib2/tables/14/4.233.table\
-	grib2/tables/14/4.234.table\
-	grib2/tables/14/4.236.table\
-	grib2/tables/14/4.241.table\
-	grib2/tables/14/4.242.table\
-	grib2/tables/14/4.243.table\
-	grib2/tables/14/4.3.table\
-	grib2/tables/14/4.4.table\
-	grib2/tables/14/4.5.table\
-	grib2/tables/14/4.6.table\
-	grib2/tables/14/4.7.table\
-	grib2/tables/14/4.8.table\
-	grib2/tables/14/4.9.table\
-	grib2/tables/14/4.91.table\
-	grib2/tables/14/5.0.table\
-	grib2/tables/14/5.1.table\
-	grib2/tables/14/5.2.table\
-	grib2/tables/14/5.3.table\
-	grib2/tables/14/5.4.table\
-	grib2/tables/14/5.40.table\
-	grib2/tables/14/5.40000.table\
-	grib2/tables/14/5.5.table\
-	grib2/tables/14/5.50002.table\
-	grib2/tables/14/5.6.table\
-	grib2/tables/14/5.7.table\
-	grib2/tables/14/5.8.table\
-	grib2/tables/14/5.9.table\
-	grib2/tables/14/6.0.table\
-	grib2/tables/14/stepType.table
-
-definitionsgrib2_tables_2dir = ${datarootdir}/eccodes/definitions/grib2/tables/2
-dist_definitionsgrib2_tables_2_DATA = \
-	grib2/tables/2/0.0.table\
-	grib2/tables/2/1.0.table\
-	grib2/tables/2/1.1.table\
-	grib2/tables/2/1.2.table\
-	grib2/tables/2/1.3.table\
-	grib2/tables/2/1.4.table\
-	grib2/tables/2/3.0.table\
-	grib2/tables/2/3.1.table\
-	grib2/tables/2/3.10.table\
-	grib2/tables/2/3.11.table\
-	grib2/tables/2/3.15.table\
-	grib2/tables/2/3.2.table\
-	grib2/tables/2/3.20.table\
-	grib2/tables/2/3.21.table\
-	grib2/tables/2/3.3.table\
-	grib2/tables/2/3.4.table\
-	grib2/tables/2/3.5.table\
-	grib2/tables/2/3.6.table\
-	grib2/tables/2/3.7.table\
-	grib2/tables/2/3.8.table\
-	grib2/tables/2/3.9.table\
-	grib2/tables/2/4.0.table\
-	grib2/tables/2/4.1.0.table\
-	grib2/tables/2/4.1.1.table\
-	grib2/tables/2/4.1.10.table\
-	grib2/tables/2/4.1.2.table\
-	grib2/tables/2/4.1.3.table\
-	grib2/tables/2/4.1.table\
-	grib2/tables/2/4.10.table\
-	grib2/tables/2/4.11.table\
-	grib2/tables/2/4.12.table\
-	grib2/tables/2/4.13.table\
-	grib2/tables/2/4.14.table\
-	grib2/tables/2/4.15.table\
-	grib2/tables/2/4.151.table\
-	grib2/tables/2/4.2.0.0.table\
-	grib2/tables/2/4.2.0.1.table\
-	grib2/tables/2/4.2.0.13.table\
-	grib2/tables/2/4.2.0.14.table\
-	grib2/tables/2/4.2.0.15.table\
-	grib2/tables/2/4.2.0.18.table\
-	grib2/tables/2/4.2.0.19.table\
-	grib2/tables/2/4.2.0.190.table\
-	grib2/tables/2/4.2.0.191.table\
-	grib2/tables/2/4.2.0.2.table\
-	grib2/tables/2/4.2.0.20.table\
-	grib2/tables/2/4.2.0.3.table\
-	grib2/tables/2/4.2.0.4.table\
-	grib2/tables/2/4.2.0.5.table\
-	grib2/tables/2/4.2.0.6.table\
-	grib2/tables/2/4.2.0.7.table\
-	grib2/tables/2/4.2.1.0.table\
-	grib2/tables/2/4.2.1.1.table\
-	grib2/tables/2/4.2.10.0.table\
-	grib2/tables/2/4.2.10.1.table\
-	grib2/tables/2/4.2.10.2.table\
-	grib2/tables/2/4.2.10.3.table\
-	grib2/tables/2/4.2.10.4.table\
-	grib2/tables/2/4.2.2.0.table\
-	grib2/tables/2/4.2.2.3.table\
-	grib2/tables/2/4.2.3.0.table\
-	grib2/tables/2/4.2.3.1.table\
-	grib2/tables/2/4.2.table\
-	grib2/tables/2/4.201.table\
-	grib2/tables/2/4.202.table\
-	grib2/tables/2/4.203.table\
-	grib2/tables/2/4.204.table\
-	grib2/tables/2/4.205.table\
-	grib2/tables/2/4.206.table\
-	grib2/tables/2/4.207.table\
-	grib2/tables/2/4.208.table\
-	grib2/tables/2/4.209.table\
-	grib2/tables/2/4.210.table\
-	grib2/tables/2/4.211.table\
-	grib2/tables/2/4.212.table\
-	grib2/tables/2/4.213.table\
-	grib2/tables/2/4.215.table\
-	grib2/tables/2/4.216.table\
-	grib2/tables/2/4.217.table\
-	grib2/tables/2/4.220.table\
-	grib2/tables/2/4.221.table\
-	grib2/tables/2/4.230.table\
-	grib2/tables/2/4.3.table\
-	grib2/tables/2/4.4.table\
-	grib2/tables/2/4.5.table\
-	grib2/tables/2/4.6.table\
-	grib2/tables/2/4.7.table\
-	grib2/tables/2/4.8.table\
-	grib2/tables/2/4.9.table\
-	grib2/tables/2/4.91.table\
-	grib2/tables/2/5.0.table\
-	grib2/tables/2/5.1.table\
-	grib2/tables/2/5.2.table\
-	grib2/tables/2/5.3.table\
-	grib2/tables/2/5.4.table\
-	grib2/tables/2/5.40.table\
-	grib2/tables/2/5.40000.table\
-	grib2/tables/2/5.5.table\
-	grib2/tables/2/5.6.table\
-	grib2/tables/2/5.7.table\
-	grib2/tables/2/5.8.table\
-	grib2/tables/2/5.9.table\
-	grib2/tables/2/6.0.table\
-	grib2/tables/2/stepType.table
-
-definitionsgrib2_tables_3dir = ${datarootdir}/eccodes/definitions/grib2/tables/3
-dist_definitionsgrib2_tables_3_DATA = \
-	grib2/tables/3/0.0.table\
-	grib2/tables/3/1.0.table\
-	grib2/tables/3/1.1.table\
-	grib2/tables/3/1.2.table\
-	grib2/tables/3/1.3.table\
-	grib2/tables/3/1.4.table\
-	grib2/tables/3/3.0.table\
-	grib2/tables/3/3.1.table\
-	grib2/tables/3/3.10.table\
-	grib2/tables/3/3.11.table\
-	grib2/tables/3/3.15.table\
-	grib2/tables/3/3.2.table\
-	grib2/tables/3/3.20.table\
-	grib2/tables/3/3.21.table\
-	grib2/tables/3/3.3.table\
-	grib2/tables/3/3.4.table\
-	grib2/tables/3/3.5.table\
-	grib2/tables/3/3.6.table\
-	grib2/tables/3/3.7.table\
-	grib2/tables/3/3.8.table\
-	grib2/tables/3/3.9.table\
-	grib2/tables/3/4.0.table\
-	grib2/tables/3/4.1.0.table\
-	grib2/tables/3/4.1.1.table\
-	grib2/tables/3/4.1.10.table\
-	grib2/tables/3/4.1.2.table\
-	grib2/tables/3/4.1.3.table\
-	grib2/tables/3/4.1.table\
-	grib2/tables/3/4.10.table\
-	grib2/tables/3/4.11.table\
-	grib2/tables/3/4.12.table\
-	grib2/tables/3/4.13.table\
-	grib2/tables/3/4.14.table\
-	grib2/tables/3/4.15.table\
-	grib2/tables/3/4.151.table\
-	grib2/tables/3/4.2.0.0.table\
-	grib2/tables/3/4.2.0.1.table\
-	grib2/tables/3/4.2.0.13.table\
-	grib2/tables/3/4.2.0.14.table\
-	grib2/tables/3/4.2.0.15.table\
-	grib2/tables/3/4.2.0.18.table\
-	grib2/tables/3/4.2.0.19.table\
-	grib2/tables/3/4.2.0.190.table\
-	grib2/tables/3/4.2.0.191.table\
-	grib2/tables/3/4.2.0.2.table\
-	grib2/tables/3/4.2.0.20.table\
-	grib2/tables/3/4.2.0.3.table\
-	grib2/tables/3/4.2.0.4.table\
-	grib2/tables/3/4.2.0.5.table\
-	grib2/tables/3/4.2.0.6.table\
-	grib2/tables/3/4.2.0.7.table\
-	grib2/tables/3/4.2.1.0.table\
-	grib2/tables/3/4.2.1.1.table\
-	grib2/tables/3/4.2.10.0.table\
-	grib2/tables/3/4.2.10.1.table\
-	grib2/tables/3/4.2.10.2.table\
-	grib2/tables/3/4.2.10.3.table\
-	grib2/tables/3/4.2.10.4.table\
-	grib2/tables/3/4.2.2.0.table\
-	grib2/tables/3/4.2.2.3.table\
-	grib2/tables/3/4.2.3.0.table\
-	grib2/tables/3/4.2.3.1.table\
-	grib2/tables/3/4.2.table\
-	grib2/tables/3/4.201.table\
-	grib2/tables/3/4.202.table\
-	grib2/tables/3/4.203.table\
-	grib2/tables/3/4.204.table\
-	grib2/tables/3/4.205.table\
-	grib2/tables/3/4.206.table\
-	grib2/tables/3/4.207.table\
-	grib2/tables/3/4.208.table\
-	grib2/tables/3/4.209.table\
-	grib2/tables/3/4.210.table\
-	grib2/tables/3/4.211.table\
-	grib2/tables/3/4.212.table\
-	grib2/tables/3/4.213.table\
-	grib2/tables/3/4.215.table\
-	grib2/tables/3/4.216.table\
-	grib2/tables/3/4.217.table\
-	grib2/tables/3/4.220.table\
-	grib2/tables/3/4.221.table\
-	grib2/tables/3/4.230.table\
-	grib2/tables/3/4.3.table\
-	grib2/tables/3/4.4.table\
-	grib2/tables/3/4.5.table\
-	grib2/tables/3/4.6.table\
-	grib2/tables/3/4.7.table\
-	grib2/tables/3/4.8.table\
-	grib2/tables/3/4.9.table\
-	grib2/tables/3/4.91.table\
-	grib2/tables/3/5.0.table\
-	grib2/tables/3/5.1.table\
-	grib2/tables/3/5.2.table\
-	grib2/tables/3/5.3.table\
-	grib2/tables/3/5.4.table\
-	grib2/tables/3/5.40.table\
-	grib2/tables/3/5.40000.table\
-	grib2/tables/3/5.5.table\
-	grib2/tables/3/5.50002.table\
-	grib2/tables/3/5.6.table\
-	grib2/tables/3/5.7.table\
-	grib2/tables/3/5.8.table\
-	grib2/tables/3/5.9.table\
-	grib2/tables/3/6.0.table\
-	grib2/tables/3/stepType.table
-
-definitionsgrib2_tables_4dir = ${datarootdir}/eccodes/definitions/grib2/tables/4
-dist_definitionsgrib2_tables_4_DATA = \
-	grib2/tables/4/0.0.table\
-	grib2/tables/4/1.0.table\
-	grib2/tables/4/1.1.table\
-	grib2/tables/4/1.2.table\
-	grib2/tables/4/1.3.table\
-	grib2/tables/4/1.4.table\
-	grib2/tables/4/3.0.table\
-	grib2/tables/4/3.1.table\
-	grib2/tables/4/3.10.table\
-	grib2/tables/4/3.11.table\
-	grib2/tables/4/3.15.table\
-	grib2/tables/4/3.2.table\
-	grib2/tables/4/3.20.table\
-	grib2/tables/4/3.21.table\
-	grib2/tables/4/3.3.table\
-	grib2/tables/4/3.4.table\
-	grib2/tables/4/3.5.table\
-	grib2/tables/4/3.6.table\
-	grib2/tables/4/3.7.table\
-	grib2/tables/4/3.8.table\
-	grib2/tables/4/3.9.table\
-	grib2/tables/4/4.0.table\
-	grib2/tables/4/4.1.0.table\
-	grib2/tables/4/4.1.1.table\
-	grib2/tables/4/4.1.10.table\
-	grib2/tables/4/4.1.192.table\
-	grib2/tables/4/4.1.2.table\
-	grib2/tables/4/4.1.3.table\
-	grib2/tables/4/4.1.table\
-	grib2/tables/4/4.10.table\
-	grib2/tables/4/4.11.table\
-	grib2/tables/4/4.12.table\
-	grib2/tables/4/4.13.table\
-	grib2/tables/4/4.14.table\
-	grib2/tables/4/4.15.table\
-	grib2/tables/4/4.151.table\
-	grib2/tables/4/4.2.0.0.table\
-	grib2/tables/4/4.2.0.1.table\
-	grib2/tables/4/4.2.0.13.table\
-	grib2/tables/4/4.2.0.14.table\
-	grib2/tables/4/4.2.0.15.table\
-	grib2/tables/4/4.2.0.18.table\
-	grib2/tables/4/4.2.0.19.table\
-	grib2/tables/4/4.2.0.190.table\
-	grib2/tables/4/4.2.0.191.table\
-	grib2/tables/4/4.2.0.2.table\
-	grib2/tables/4/4.2.0.20.table\
-	grib2/tables/4/4.2.0.3.table\
-	grib2/tables/4/4.2.0.4.table\
-	grib2/tables/4/4.2.0.5.table\
-	grib2/tables/4/4.2.0.6.table\
-	grib2/tables/4/4.2.0.7.table\
-	grib2/tables/4/4.2.1.0.table\
-	grib2/tables/4/4.2.1.1.table\
-	grib2/tables/4/4.2.10.0.table\
-	grib2/tables/4/4.2.10.1.table\
-	grib2/tables/4/4.2.10.2.table\
-	grib2/tables/4/4.2.10.3.table\
-	grib2/tables/4/4.2.10.4.table\
-	grib2/tables/4/4.2.192.0.table\
-	grib2/tables/4/4.2.192.1.table\
-	grib2/tables/4/4.2.192.10.table\
-	grib2/tables/4/4.2.192.100.table\
-	grib2/tables/4/4.2.192.101.table\
-	grib2/tables/4/4.2.192.102.table\
-	grib2/tables/4/4.2.192.103.table\
-	grib2/tables/4/4.2.192.104.table\
-	grib2/tables/4/4.2.192.105.table\
-	grib2/tables/4/4.2.192.106.table\
-	grib2/tables/4/4.2.192.107.table\
-	grib2/tables/4/4.2.192.108.table\
-	grib2/tables/4/4.2.192.109.table\
-	grib2/tables/4/4.2.192.11.table\
-	grib2/tables/4/4.2.192.110.table\
-	grib2/tables/4/4.2.192.111.table\
-	grib2/tables/4/4.2.192.112.table\
-	grib2/tables/4/4.2.192.113.table\
-	grib2/tables/4/4.2.192.114.table\
-	grib2/tables/4/4.2.192.115.table\
-	grib2/tables/4/4.2.192.116.table\
-	grib2/tables/4/4.2.192.117.table\
-	grib2/tables/4/4.2.192.118.table\
-	grib2/tables/4/4.2.192.119.table\
-	grib2/tables/4/4.2.192.12.table\
-	grib2/tables/4/4.2.192.120.table\
-	grib2/tables/4/4.2.192.121.table\
-	grib2/tables/4/4.2.192.122.table\
-	grib2/tables/4/4.2.192.123.table\
-	grib2/tables/4/4.2.192.124.table\
-	grib2/tables/4/4.2.192.125.table\
-	grib2/tables/4/4.2.192.126.table\
-	grib2/tables/4/4.2.192.127.table\
-	grib2/tables/4/4.2.192.128.table\
-	grib2/tables/4/4.2.192.129.table\
-	grib2/tables/4/4.2.192.13.table\
-	grib2/tables/4/4.2.192.130.table\
-	grib2/tables/4/4.2.192.131.table\
-	grib2/tables/4/4.2.192.132.table\
-	grib2/tables/4/4.2.192.133.table\
-	grib2/tables/4/4.2.192.134.table\
-	grib2/tables/4/4.2.192.135.table\
-	grib2/tables/4/4.2.192.136.table\
-	grib2/tables/4/4.2.192.137.table\
-	grib2/tables/4/4.2.192.138.table\
-	grib2/tables/4/4.2.192.139.table\
-	grib2/tables/4/4.2.192.14.table\
-	grib2/tables/4/4.2.192.140.table\
-	grib2/tables/4/4.2.192.141.table\
-	grib2/tables/4/4.2.192.142.table\
-	grib2/tables/4/4.2.192.143.table\
-	grib2/tables/4/4.2.192.144.table\
-	grib2/tables/4/4.2.192.145.table\
-	grib2/tables/4/4.2.192.146.table\
-	grib2/tables/4/4.2.192.147.table\
-	grib2/tables/4/4.2.192.148.table\
-	grib2/tables/4/4.2.192.149.table\
-	grib2/tables/4/4.2.192.15.table\
-	grib2/tables/4/4.2.192.150.table\
-	grib2/tables/4/4.2.192.151.table\
-	grib2/tables/4/4.2.192.152.table\
-	grib2/tables/4/4.2.192.153.table\
-	grib2/tables/4/4.2.192.154.table\
-	grib2/tables/4/4.2.192.155.table\
-	grib2/tables/4/4.2.192.156.table\
-	grib2/tables/4/4.2.192.157.table\
-	grib2/tables/4/4.2.192.158.table\
-	grib2/tables/4/4.2.192.159.table\
-	grib2/tables/4/4.2.192.16.table\
-	grib2/tables/4/4.2.192.160.table\
-	grib2/tables/4/4.2.192.161.table\
-	grib2/tables/4/4.2.192.162.table\
-	grib2/tables/4/4.2.192.163.table\
-	grib2/tables/4/4.2.192.164.table\
-	grib2/tables/4/4.2.192.165.table\
-	grib2/tables/4/4.2.192.166.table\
-	grib2/tables/4/4.2.192.167.table\
-	grib2/tables/4/4.2.192.168.table\
-	grib2/tables/4/4.2.192.169.table\
-	grib2/tables/4/4.2.192.17.table\
-	grib2/tables/4/4.2.192.170.table\
-	grib2/tables/4/4.2.192.171.table\
-	grib2/tables/4/4.2.192.172.table\
-	grib2/tables/4/4.2.192.173.table\
-	grib2/tables/4/4.2.192.174.table\
-	grib2/tables/4/4.2.192.175.table\
-	grib2/tables/4/4.2.192.176.table\
-	grib2/tables/4/4.2.192.177.table\
-	grib2/tables/4/4.2.192.178.table\
-	grib2/tables/4/4.2.192.179.table\
-	grib2/tables/4/4.2.192.18.table\
-	grib2/tables/4/4.2.192.180.table\
-	grib2/tables/4/4.2.192.181.table\
-	grib2/tables/4/4.2.192.182.table\
-	grib2/tables/4/4.2.192.183.table\
-	grib2/tables/4/4.2.192.184.table\
-	grib2/tables/4/4.2.192.185.table\
-	grib2/tables/4/4.2.192.186.table\
-	grib2/tables/4/4.2.192.187.table\
-	grib2/tables/4/4.2.192.188.table\
-	grib2/tables/4/4.2.192.189.table\
-	grib2/tables/4/4.2.192.19.table\
-	grib2/tables/4/4.2.192.190.table\
-	grib2/tables/4/4.2.192.191.table\
-	grib2/tables/4/4.2.192.192.table\
-	grib2/tables/4/4.2.192.193.table\
-	grib2/tables/4/4.2.192.194.table\
-	grib2/tables/4/4.2.192.195.table\
-	grib2/tables/4/4.2.192.196.table\
-	grib2/tables/4/4.2.192.197.table\
-	grib2/tables/4/4.2.192.198.table\
-	grib2/tables/4/4.2.192.199.table\
-	grib2/tables/4/4.2.192.2.table\
-	grib2/tables/4/4.2.192.20.table\
-	grib2/tables/4/4.2.192.200.table\
-	grib2/tables/4/4.2.192.201.table\
-	grib2/tables/4/4.2.192.202.table\
-	grib2/tables/4/4.2.192.203.table\
-	grib2/tables/4/4.2.192.204.table\
-	grib2/tables/4/4.2.192.205.table\
-	grib2/tables/4/4.2.192.206.table\
-	grib2/tables/4/4.2.192.207.table\
-	grib2/tables/4/4.2.192.208.table\
-	grib2/tables/4/4.2.192.209.table\
-	grib2/tables/4/4.2.192.21.table\
-	grib2/tables/4/4.2.192.210.table\
-	grib2/tables/4/4.2.192.211.table\
-	grib2/tables/4/4.2.192.212.table\
-	grib2/tables/4/4.2.192.213.table\
-	grib2/tables/4/4.2.192.214.table\
-	grib2/tables/4/4.2.192.215.table\
-	grib2/tables/4/4.2.192.216.table\
-	grib2/tables/4/4.2.192.217.table\
-	grib2/tables/4/4.2.192.218.table\
-	grib2/tables/4/4.2.192.219.table\
-	grib2/tables/4/4.2.192.22.table\
-	grib2/tables/4/4.2.192.220.table\
-	grib2/tables/4/4.2.192.221.table\
-	grib2/tables/4/4.2.192.222.table\
-	grib2/tables/4/4.2.192.223.table\
-	grib2/tables/4/4.2.192.224.table\
-	grib2/tables/4/4.2.192.225.table\
-	grib2/tables/4/4.2.192.226.table\
-	grib2/tables/4/4.2.192.227.table\
-	grib2/tables/4/4.2.192.228.table\
-	grib2/tables/4/4.2.192.229.table\
-	grib2/tables/4/4.2.192.23.table\
-	grib2/tables/4/4.2.192.230.table\
-	grib2/tables/4/4.2.192.231.table\
-	grib2/tables/4/4.2.192.232.table\
-	grib2/tables/4/4.2.192.233.table\
-	grib2/tables/4/4.2.192.234.table\
-	grib2/tables/4/4.2.192.235.table\
-	grib2/tables/4/4.2.192.236.table\
-	grib2/tables/4/4.2.192.237.table\
-	grib2/tables/4/4.2.192.238.table\
-	grib2/tables/4/4.2.192.239.table\
-	grib2/tables/4/4.2.192.24.table\
-	grib2/tables/4/4.2.192.240.table\
-	grib2/tables/4/4.2.192.241.table\
-	grib2/tables/4/4.2.192.242.table\
-	grib2/tables/4/4.2.192.243.table\
-	grib2/tables/4/4.2.192.244.table\
-	grib2/tables/4/4.2.192.245.table\
-	grib2/tables/4/4.2.192.246.table\
-	grib2/tables/4/4.2.192.247.table\
-	grib2/tables/4/4.2.192.248.table\
-	grib2/tables/4/4.2.192.249.table\
-	grib2/tables/4/4.2.192.25.table\
-	grib2/tables/4/4.2.192.250.table\
-	grib2/tables/4/4.2.192.251.table\
-	grib2/tables/4/4.2.192.252.table\
-	grib2/tables/4/4.2.192.253.table\
-	grib2/tables/4/4.2.192.254.table\
-	grib2/tables/4/4.2.192.255.table\
-	grib2/tables/4/4.2.192.26.table\
-	grib2/tables/4/4.2.192.27.table\
-	grib2/tables/4/4.2.192.28.table\
-	grib2/tables/4/4.2.192.29.table\
-	grib2/tables/4/4.2.192.3.table\
-	grib2/tables/4/4.2.192.30.table\
-	grib2/tables/4/4.2.192.31.table\
-	grib2/tables/4/4.2.192.32.table\
-	grib2/tables/4/4.2.192.33.table\
-	grib2/tables/4/4.2.192.34.table\
-	grib2/tables/4/4.2.192.35.table\
-	grib2/tables/4/4.2.192.36.table\
-	grib2/tables/4/4.2.192.37.table\
-	grib2/tables/4/4.2.192.38.table\
-	grib2/tables/4/4.2.192.39.table\
-	grib2/tables/4/4.2.192.4.table\
-	grib2/tables/4/4.2.192.40.table\
-	grib2/tables/4/4.2.192.41.table\
-	grib2/tables/4/4.2.192.42.table\
-	grib2/tables/4/4.2.192.43.table\
-	grib2/tables/4/4.2.192.44.table\
-	grib2/tables/4/4.2.192.45.table\
-	grib2/tables/4/4.2.192.46.table\
-	grib2/tables/4/4.2.192.47.table\
-	grib2/tables/4/4.2.192.48.table\
-	grib2/tables/4/4.2.192.49.table\
-	grib2/tables/4/4.2.192.5.table\
-	grib2/tables/4/4.2.192.50.table\
-	grib2/tables/4/4.2.192.51.table\
-	grib2/tables/4/4.2.192.52.table\
-	grib2/tables/4/4.2.192.53.table\
-	grib2/tables/4/4.2.192.54.table\
-	grib2/tables/4/4.2.192.55.table\
-	grib2/tables/4/4.2.192.56.table\
-	grib2/tables/4/4.2.192.57.table\
-	grib2/tables/4/4.2.192.58.table\
-	grib2/tables/4/4.2.192.59.table\
-	grib2/tables/4/4.2.192.6.table\
-	grib2/tables/4/4.2.192.60.table\
-	grib2/tables/4/4.2.192.61.table\
-	grib2/tables/4/4.2.192.62.table\
-	grib2/tables/4/4.2.192.63.table\
-	grib2/tables/4/4.2.192.64.table\
-	grib2/tables/4/4.2.192.65.table\
-	grib2/tables/4/4.2.192.66.table\
-	grib2/tables/4/4.2.192.67.table\
-	grib2/tables/4/4.2.192.68.table\
-	grib2/tables/4/4.2.192.69.table\
-	grib2/tables/4/4.2.192.7.table\
-	grib2/tables/4/4.2.192.70.table\
-	grib2/tables/4/4.2.192.71.table\
-	grib2/tables/4/4.2.192.72.table\
-	grib2/tables/4/4.2.192.73.table\
-	grib2/tables/4/4.2.192.74.table\
-	grib2/tables/4/4.2.192.75.table\
-	grib2/tables/4/4.2.192.76.table\
-	grib2/tables/4/4.2.192.77.table\
-	grib2/tables/4/4.2.192.78.table\
-	grib2/tables/4/4.2.192.79.table\
-	grib2/tables/4/4.2.192.8.table\
-	grib2/tables/4/4.2.192.80.table\
-	grib2/tables/4/4.2.192.81.table\
-	grib2/tables/4/4.2.192.82.table\
-	grib2/tables/4/4.2.192.83.table\
-	grib2/tables/4/4.2.192.84.table\
-	grib2/tables/4/4.2.192.85.table\
-	grib2/tables/4/4.2.192.86.table\
-	grib2/tables/4/4.2.192.87.table\
-	grib2/tables/4/4.2.192.88.table\
-	grib2/tables/4/4.2.192.89.table\
-	grib2/tables/4/4.2.192.9.table\
-	grib2/tables/4/4.2.192.90.table\
-	grib2/tables/4/4.2.192.91.table\
-	grib2/tables/4/4.2.192.92.table\
-	grib2/tables/4/4.2.192.93.table\
-	grib2/tables/4/4.2.192.94.table\
-	grib2/tables/4/4.2.192.95.table\
-	grib2/tables/4/4.2.192.96.table\
-	grib2/tables/4/4.2.192.97.table\
-	grib2/tables/4/4.2.192.98.table\
-	grib2/tables/4/4.2.192.99.table\
-	grib2/tables/4/4.2.2.0.table\
-	grib2/tables/4/4.2.2.3.table\
-	grib2/tables/4/4.2.3.0.table\
-	grib2/tables/4/4.2.3.1.table\
-	grib2/tables/4/4.2.table\
-	grib2/tables/4/4.201.table\
-	grib2/tables/4/4.202.table\
-	grib2/tables/4/4.203.table\
-	grib2/tables/4/4.204.table\
-	grib2/tables/4/4.205.table\
-	grib2/tables/4/4.206.table\
-	grib2/tables/4/4.207.table\
-	grib2/tables/4/4.208.table\
-	grib2/tables/4/4.209.table\
-	grib2/tables/4/4.210.table\
-	grib2/tables/4/4.211.table\
-	grib2/tables/4/4.212.table\
-	grib2/tables/4/4.213.table\
-	grib2/tables/4/4.215.table\
-	grib2/tables/4/4.216.table\
-	grib2/tables/4/4.217.table\
-	grib2/tables/4/4.220.table\
-	grib2/tables/4/4.221.table\
-	grib2/tables/4/4.230.table\
-	grib2/tables/4/4.3.table\
-	grib2/tables/4/4.4.table\
-	grib2/tables/4/4.5.table\
-	grib2/tables/4/4.6.table\
-	grib2/tables/4/4.7.table\
-	grib2/tables/4/4.8.table\
-	grib2/tables/4/4.9.table\
-	grib2/tables/4/4.91.table\
-	grib2/tables/4/5.0.table\
-	grib2/tables/4/5.1.table\
-	grib2/tables/4/5.2.table\
-	grib2/tables/4/5.3.table\
-	grib2/tables/4/5.4.table\
-	grib2/tables/4/5.40.table\
-	grib2/tables/4/5.40000.table\
-	grib2/tables/4/5.5.table\
-	grib2/tables/4/5.50002.table\
-	grib2/tables/4/5.6.table\
-	grib2/tables/4/5.7.table\
-	grib2/tables/4/5.8.table\
-	grib2/tables/4/5.9.table\
-	grib2/tables/4/6.0.table\
-	grib2/tables/4/stepType.table
-
-definitionsgrib2_tables_5dir = ${datarootdir}/eccodes/definitions/grib2/tables/5
-dist_definitionsgrib2_tables_5_DATA = \
-	grib2/tables/5/0.0.table\
-	grib2/tables/5/1.0.table\
-	grib2/tables/5/1.1.table\
-	grib2/tables/5/1.2.table\
-	grib2/tables/5/1.3.table\
-	grib2/tables/5/1.4.table\
-	grib2/tables/5/3.0.table\
-	grib2/tables/5/3.1.table\
-	grib2/tables/5/3.10.table\
-	grib2/tables/5/3.11.table\
-	grib2/tables/5/3.15.table\
-	grib2/tables/5/3.2.table\
-	grib2/tables/5/3.20.table\
-	grib2/tables/5/3.21.table\
-	grib2/tables/5/3.3.table\
-	grib2/tables/5/3.4.table\
-	grib2/tables/5/3.5.table\
-	grib2/tables/5/3.6.table\
-	grib2/tables/5/3.7.table\
-	grib2/tables/5/3.8.table\
-	grib2/tables/5/3.9.table\
-	grib2/tables/5/4.0.table\
-	grib2/tables/5/4.1.0.table\
-	grib2/tables/5/4.1.1.table\
-	grib2/tables/5/4.1.10.table\
-	grib2/tables/5/4.1.192.table\
-	grib2/tables/5/4.1.2.table\
-	grib2/tables/5/4.1.3.table\
-	grib2/tables/5/4.1.table\
-	grib2/tables/5/4.10.table\
-	grib2/tables/5/4.11.table\
-	grib2/tables/5/4.12.table\
-	grib2/tables/5/4.13.table\
-	grib2/tables/5/4.14.table\
-	grib2/tables/5/4.15.table\
-	grib2/tables/5/4.151.table\
-	grib2/tables/5/4.192.table\
-	grib2/tables/5/4.2.0.0.table\
-	grib2/tables/5/4.2.0.1.table\
-	grib2/tables/5/4.2.0.13.table\
-	grib2/tables/5/4.2.0.14.table\
-	grib2/tables/5/4.2.0.15.table\
-	grib2/tables/5/4.2.0.18.table\
-	grib2/tables/5/4.2.0.19.table\
-	grib2/tables/5/4.2.0.190.table\
-	grib2/tables/5/4.2.0.191.table\
-	grib2/tables/5/4.2.0.2.table\
-	grib2/tables/5/4.2.0.20.table\
-	grib2/tables/5/4.2.0.3.table\
-	grib2/tables/5/4.2.0.4.table\
-	grib2/tables/5/4.2.0.5.table\
-	grib2/tables/5/4.2.0.6.table\
-	grib2/tables/5/4.2.0.7.table\
-	grib2/tables/5/4.2.1.0.table\
-	grib2/tables/5/4.2.1.1.table\
-	grib2/tables/5/4.2.10.0.table\
-	grib2/tables/5/4.2.10.1.table\
-	grib2/tables/5/4.2.10.191.table\
-	grib2/tables/5/4.2.10.2.table\
-	grib2/tables/5/4.2.10.3.table\
-	grib2/tables/5/4.2.10.4.table\
-	grib2/tables/5/4.2.192.0.table\
-	grib2/tables/5/4.2.192.1.table\
-	grib2/tables/5/4.2.192.10.table\
-	grib2/tables/5/4.2.192.100.table\
-	grib2/tables/5/4.2.192.101.table\
-	grib2/tables/5/4.2.192.102.table\
-	grib2/tables/5/4.2.192.103.table\
-	grib2/tables/5/4.2.192.104.table\
-	grib2/tables/5/4.2.192.105.table\
-	grib2/tables/5/4.2.192.106.table\
-	grib2/tables/5/4.2.192.107.table\
-	grib2/tables/5/4.2.192.108.table\
-	grib2/tables/5/4.2.192.109.table\
-	grib2/tables/5/4.2.192.11.table\
-	grib2/tables/5/4.2.192.110.table\
-	grib2/tables/5/4.2.192.111.table\
-	grib2/tables/5/4.2.192.112.table\
-	grib2/tables/5/4.2.192.113.table\
-	grib2/tables/5/4.2.192.114.table\
-	grib2/tables/5/4.2.192.115.table\
-	grib2/tables/5/4.2.192.116.table\
-	grib2/tables/5/4.2.192.117.table\
-	grib2/tables/5/4.2.192.118.table\
-	grib2/tables/5/4.2.192.119.table\
-	grib2/tables/5/4.2.192.12.table\
-	grib2/tables/5/4.2.192.120.table\
-	grib2/tables/5/4.2.192.121.table\
-	grib2/tables/5/4.2.192.122.table\
-	grib2/tables/5/4.2.192.123.table\
-	grib2/tables/5/4.2.192.124.table\
-	grib2/tables/5/4.2.192.125.table\
-	grib2/tables/5/4.2.192.126.table\
-	grib2/tables/5/4.2.192.127.table\
-	grib2/tables/5/4.2.192.128.table\
-	grib2/tables/5/4.2.192.129.table\
-	grib2/tables/5/4.2.192.13.table\
-	grib2/tables/5/4.2.192.130.table\
-	grib2/tables/5/4.2.192.131.table\
-	grib2/tables/5/4.2.192.132.table\
-	grib2/tables/5/4.2.192.133.table\
-	grib2/tables/5/4.2.192.134.table\
-	grib2/tables/5/4.2.192.135.table\
-	grib2/tables/5/4.2.192.136.table\
-	grib2/tables/5/4.2.192.137.table\
-	grib2/tables/5/4.2.192.138.table\
-	grib2/tables/5/4.2.192.139.table\
-	grib2/tables/5/4.2.192.14.table\
-	grib2/tables/5/4.2.192.140.table\
-	grib2/tables/5/4.2.192.141.table\
-	grib2/tables/5/4.2.192.142.table\
-	grib2/tables/5/4.2.192.143.table\
-	grib2/tables/5/4.2.192.144.table\
-	grib2/tables/5/4.2.192.145.table\
-	grib2/tables/5/4.2.192.146.table\
-	grib2/tables/5/4.2.192.147.table\
-	grib2/tables/5/4.2.192.148.table\
-	grib2/tables/5/4.2.192.149.table\
-	grib2/tables/5/4.2.192.15.table\
-	grib2/tables/5/4.2.192.150.table\
-	grib2/tables/5/4.2.192.151.table\
-	grib2/tables/5/4.2.192.152.table\
-	grib2/tables/5/4.2.192.153.table\
-	grib2/tables/5/4.2.192.154.table\
-	grib2/tables/5/4.2.192.155.table\
-	grib2/tables/5/4.2.192.156.table\
-	grib2/tables/5/4.2.192.157.table\
-	grib2/tables/5/4.2.192.158.table\
-	grib2/tables/5/4.2.192.159.table\
-	grib2/tables/5/4.2.192.16.table\
-	grib2/tables/5/4.2.192.160.table\
-	grib2/tables/5/4.2.192.161.table\
-	grib2/tables/5/4.2.192.162.table\
-	grib2/tables/5/4.2.192.163.table\
-	grib2/tables/5/4.2.192.164.table\
-	grib2/tables/5/4.2.192.165.table\
-	grib2/tables/5/4.2.192.166.table\
-	grib2/tables/5/4.2.192.167.table\
-	grib2/tables/5/4.2.192.168.table\
-	grib2/tables/5/4.2.192.169.table\
-	grib2/tables/5/4.2.192.17.table\
-	grib2/tables/5/4.2.192.170.table\
-	grib2/tables/5/4.2.192.171.table\
-	grib2/tables/5/4.2.192.172.table\
-	grib2/tables/5/4.2.192.173.table\
-	grib2/tables/5/4.2.192.174.table\
-	grib2/tables/5/4.2.192.175.table\
-	grib2/tables/5/4.2.192.176.table\
-	grib2/tables/5/4.2.192.177.table\
-	grib2/tables/5/4.2.192.178.table\
-	grib2/tables/5/4.2.192.179.table\
-	grib2/tables/5/4.2.192.18.table\
-	grib2/tables/5/4.2.192.180.table\
-	grib2/tables/5/4.2.192.181.table\
-	grib2/tables/5/4.2.192.182.table\
-	grib2/tables/5/4.2.192.183.table\
-	grib2/tables/5/4.2.192.184.table\
-	grib2/tables/5/4.2.192.185.table\
-	grib2/tables/5/4.2.192.186.table\
-	grib2/tables/5/4.2.192.187.table\
-	grib2/tables/5/4.2.192.188.table\
-	grib2/tables/5/4.2.192.189.table\
-	grib2/tables/5/4.2.192.19.table\
-	grib2/tables/5/4.2.192.190.table\
-	grib2/tables/5/4.2.192.191.table\
-	grib2/tables/5/4.2.192.192.table\
-	grib2/tables/5/4.2.192.193.table\
-	grib2/tables/5/4.2.192.194.table\
-	grib2/tables/5/4.2.192.195.table\
-	grib2/tables/5/4.2.192.196.table\
-	grib2/tables/5/4.2.192.197.table\
-	grib2/tables/5/4.2.192.198.table\
-	grib2/tables/5/4.2.192.199.table\
-	grib2/tables/5/4.2.192.2.table\
-	grib2/tables/5/4.2.192.20.table\
-	grib2/tables/5/4.2.192.200.table\
-	grib2/tables/5/4.2.192.201.table\
-	grib2/tables/5/4.2.192.202.table\
-	grib2/tables/5/4.2.192.203.table\
-	grib2/tables/5/4.2.192.204.table\
-	grib2/tables/5/4.2.192.205.table\
-	grib2/tables/5/4.2.192.206.table\
-	grib2/tables/5/4.2.192.207.table\
-	grib2/tables/5/4.2.192.208.table\
-	grib2/tables/5/4.2.192.209.table\
-	grib2/tables/5/4.2.192.21.table\
-	grib2/tables/5/4.2.192.210.table\
-	grib2/tables/5/4.2.192.211.table\
-	grib2/tables/5/4.2.192.212.table\
-	grib2/tables/5/4.2.192.213.table\
-	grib2/tables/5/4.2.192.214.table\
-	grib2/tables/5/4.2.192.215.table\
-	grib2/tables/5/4.2.192.216.table\
-	grib2/tables/5/4.2.192.217.table\
-	grib2/tables/5/4.2.192.218.table\
-	grib2/tables/5/4.2.192.219.table\
-	grib2/tables/5/4.2.192.22.table\
-	grib2/tables/5/4.2.192.220.table\
-	grib2/tables/5/4.2.192.221.table\
-	grib2/tables/5/4.2.192.222.table\
-	grib2/tables/5/4.2.192.223.table\
-	grib2/tables/5/4.2.192.224.table\
-	grib2/tables/5/4.2.192.225.table\
-	grib2/tables/5/4.2.192.226.table\
-	grib2/tables/5/4.2.192.227.table\
-	grib2/tables/5/4.2.192.228.table\
-	grib2/tables/5/4.2.192.229.table\
-	grib2/tables/5/4.2.192.23.table\
-	grib2/tables/5/4.2.192.230.table\
-	grib2/tables/5/4.2.192.231.table\
-	grib2/tables/5/4.2.192.232.table\
-	grib2/tables/5/4.2.192.233.table\
-	grib2/tables/5/4.2.192.234.table\
-	grib2/tables/5/4.2.192.235.table\
-	grib2/tables/5/4.2.192.236.table\
-	grib2/tables/5/4.2.192.237.table\
-	grib2/tables/5/4.2.192.238.table\
-	grib2/tables/5/4.2.192.239.table\
-	grib2/tables/5/4.2.192.24.table\
-	grib2/tables/5/4.2.192.240.table\
-	grib2/tables/5/4.2.192.241.table\
-	grib2/tables/5/4.2.192.242.table\
-	grib2/tables/5/4.2.192.243.table\
-	grib2/tables/5/4.2.192.244.table\
-	grib2/tables/5/4.2.192.245.table\
-	grib2/tables/5/4.2.192.246.table\
-	grib2/tables/5/4.2.192.247.table\
-	grib2/tables/5/4.2.192.248.table\
-	grib2/tables/5/4.2.192.249.table\
-	grib2/tables/5/4.2.192.25.table\
-	grib2/tables/5/4.2.192.250.table\
-	grib2/tables/5/4.2.192.251.table\
-	grib2/tables/5/4.2.192.252.table\
-	grib2/tables/5/4.2.192.253.table\
-	grib2/tables/5/4.2.192.254.table\
-	grib2/tables/5/4.2.192.255.table\
-	grib2/tables/5/4.2.192.26.table\
-	grib2/tables/5/4.2.192.27.table\
-	grib2/tables/5/4.2.192.28.table\
-	grib2/tables/5/4.2.192.29.table\
-	grib2/tables/5/4.2.192.3.table\
-	grib2/tables/5/4.2.192.30.table\
-	grib2/tables/5/4.2.192.31.table\
-	grib2/tables/5/4.2.192.32.table\
-	grib2/tables/5/4.2.192.33.table\
-	grib2/tables/5/4.2.192.34.table\
-	grib2/tables/5/4.2.192.35.table\
-	grib2/tables/5/4.2.192.36.table\
-	grib2/tables/5/4.2.192.37.table\
-	grib2/tables/5/4.2.192.38.table\
-	grib2/tables/5/4.2.192.39.table\
-	grib2/tables/5/4.2.192.4.table\
-	grib2/tables/5/4.2.192.40.table\
-	grib2/tables/5/4.2.192.41.table\
-	grib2/tables/5/4.2.192.42.table\
-	grib2/tables/5/4.2.192.43.table\
-	grib2/tables/5/4.2.192.44.table\
-	grib2/tables/5/4.2.192.45.table\
-	grib2/tables/5/4.2.192.46.table\
-	grib2/tables/5/4.2.192.47.table\
-	grib2/tables/5/4.2.192.48.table\
-	grib2/tables/5/4.2.192.49.table\
-	grib2/tables/5/4.2.192.5.table\
-	grib2/tables/5/4.2.192.50.table\
-	grib2/tables/5/4.2.192.51.table\
-	grib2/tables/5/4.2.192.52.table\
-	grib2/tables/5/4.2.192.53.table\
-	grib2/tables/5/4.2.192.54.table\
-	grib2/tables/5/4.2.192.55.table\
-	grib2/tables/5/4.2.192.56.table\
-	grib2/tables/5/4.2.192.57.table\
-	grib2/tables/5/4.2.192.58.table\
-	grib2/tables/5/4.2.192.59.table\
-	grib2/tables/5/4.2.192.6.table\
-	grib2/tables/5/4.2.192.60.table\
-	grib2/tables/5/4.2.192.61.table\
-	grib2/tables/5/4.2.192.62.table\
-	grib2/tables/5/4.2.192.63.table\
-	grib2/tables/5/4.2.192.64.table\
-	grib2/tables/5/4.2.192.65.table\
-	grib2/tables/5/4.2.192.66.table\
-	grib2/tables/5/4.2.192.67.table\
-	grib2/tables/5/4.2.192.68.table\
-	grib2/tables/5/4.2.192.69.table\
-	grib2/tables/5/4.2.192.7.table\
-	grib2/tables/5/4.2.192.70.table\
-	grib2/tables/5/4.2.192.71.table\
-	grib2/tables/5/4.2.192.72.table\
-	grib2/tables/5/4.2.192.73.table\
-	grib2/tables/5/4.2.192.74.table\
-	grib2/tables/5/4.2.192.75.table\
-	grib2/tables/5/4.2.192.76.table\
-	grib2/tables/5/4.2.192.77.table\
-	grib2/tables/5/4.2.192.78.table\
-	grib2/tables/5/4.2.192.79.table\
-	grib2/tables/5/4.2.192.8.table\
-	grib2/tables/5/4.2.192.80.table\
-	grib2/tables/5/4.2.192.81.table\
-	grib2/tables/5/4.2.192.82.table\
-	grib2/tables/5/4.2.192.83.table\
-	grib2/tables/5/4.2.192.84.table\
-	grib2/tables/5/4.2.192.85.table\
-	grib2/tables/5/4.2.192.86.table\
-	grib2/tables/5/4.2.192.87.table\
-	grib2/tables/5/4.2.192.88.table\
-	grib2/tables/5/4.2.192.89.table\
-	grib2/tables/5/4.2.192.9.table\
-	grib2/tables/5/4.2.192.90.table\
-	grib2/tables/5/4.2.192.91.table\
-	grib2/tables/5/4.2.192.92.table\
-	grib2/tables/5/4.2.192.93.table\
-	grib2/tables/5/4.2.192.94.table\
-	grib2/tables/5/4.2.192.95.table\
-	grib2/tables/5/4.2.192.96.table\
-	grib2/tables/5/4.2.192.97.table\
-	grib2/tables/5/4.2.192.98.table\
-	grib2/tables/5/4.2.192.99.table\
-	grib2/tables/5/4.2.2.0.table\
-	grib2/tables/5/4.2.2.3.table\
-	grib2/tables/5/4.2.3.0.table\
-	grib2/tables/5/4.2.3.1.table\
-	grib2/tables/5/4.2.table\
-	grib2/tables/5/4.201.table\
-	grib2/tables/5/4.202.table\
-	grib2/tables/5/4.203.table\
-	grib2/tables/5/4.204.table\
-	grib2/tables/5/4.205.table\
-	grib2/tables/5/4.206.table\
-	grib2/tables/5/4.207.table\
-	grib2/tables/5/4.208.table\
-	grib2/tables/5/4.209.table\
-	grib2/tables/5/4.210.table\
-	grib2/tables/5/4.211.table\
-	grib2/tables/5/4.212.table\
-	grib2/tables/5/4.213.table\
-	grib2/tables/5/4.215.table\
-	grib2/tables/5/4.216.table\
-	grib2/tables/5/4.217.table\
-	grib2/tables/5/4.218.table\
-	grib2/tables/5/4.219.table\
-	grib2/tables/5/4.220.table\
-	grib2/tables/5/4.221.table\
-	grib2/tables/5/4.222.table\
-	grib2/tables/5/4.223.table\
-	grib2/tables/5/4.230.table\
-	grib2/tables/5/4.3.table\
-	grib2/tables/5/4.4.table\
-	grib2/tables/5/4.5.table\
-	grib2/tables/5/4.6.table\
-	grib2/tables/5/4.7.table\
-	grib2/tables/5/4.8.table\
-	grib2/tables/5/4.9.table\
-	grib2/tables/5/4.91.table\
-	grib2/tables/5/5.0.table\
-	grib2/tables/5/5.1.table\
-	grib2/tables/5/5.2.table\
-	grib2/tables/5/5.3.table\
-	grib2/tables/5/5.4.table\
-	grib2/tables/5/5.40.table\
-	grib2/tables/5/5.40000.table\
-	grib2/tables/5/5.5.table\
-	grib2/tables/5/5.50002.table\
-	grib2/tables/5/5.6.table\
-	grib2/tables/5/5.7.table\
-	grib2/tables/5/5.8.table\
-	grib2/tables/5/5.9.table\
-	grib2/tables/5/6.0.table\
-	grib2/tables/5/stepType.table
-
-definitionsgrib2_tables_6dir = ${datarootdir}/eccodes/definitions/grib2/tables/6
-dist_definitionsgrib2_tables_6_DATA = \
-	grib2/tables/6/0.0.table\
-	grib2/tables/6/1.0.table\
-	grib2/tables/6/1.1.table\
-	grib2/tables/6/1.2.table\
-	grib2/tables/6/1.3.table\
-	grib2/tables/6/1.4.table\
-	grib2/tables/6/3.0.table\
-	grib2/tables/6/3.1.table\
-	grib2/tables/6/3.10.table\
-	grib2/tables/6/3.11.table\
-	grib2/tables/6/3.15.table\
-	grib2/tables/6/3.2.table\
-	grib2/tables/6/3.20.table\
-	grib2/tables/6/3.21.table\
-	grib2/tables/6/3.3.table\
-	grib2/tables/6/3.4.table\
-	grib2/tables/6/3.5.table\
-	grib2/tables/6/3.6.table\
-	grib2/tables/6/3.7.table\
-	grib2/tables/6/3.8.table\
-	grib2/tables/6/3.9.table\
-	grib2/tables/6/4.0.table\
-	grib2/tables/6/4.1.0.table\
-	grib2/tables/6/4.1.1.table\
-	grib2/tables/6/4.1.10.table\
-	grib2/tables/6/4.1.192.table\
-	grib2/tables/6/4.1.2.table\
-	grib2/tables/6/4.1.3.table\
-	grib2/tables/6/4.1.table\
-	grib2/tables/6/4.10.table\
-	grib2/tables/6/4.11.table\
-	grib2/tables/6/4.12.table\
-	grib2/tables/6/4.13.table\
-	grib2/tables/6/4.14.table\
-	grib2/tables/6/4.15.table\
-	grib2/tables/6/4.151.table\
-	grib2/tables/6/4.192.table\
-	grib2/tables/6/4.2.0.0.table\
-	grib2/tables/6/4.2.0.1.table\
-	grib2/tables/6/4.2.0.13.table\
-	grib2/tables/6/4.2.0.14.table\
-	grib2/tables/6/4.2.0.15.table\
-	grib2/tables/6/4.2.0.16.table\
-	grib2/tables/6/4.2.0.18.table\
-	grib2/tables/6/4.2.0.19.table\
-	grib2/tables/6/4.2.0.190.table\
-	grib2/tables/6/4.2.0.191.table\
-	grib2/tables/6/4.2.0.2.table\
-	grib2/tables/6/4.2.0.20.table\
-	grib2/tables/6/4.2.0.3.table\
-	grib2/tables/6/4.2.0.4.table\
-	grib2/tables/6/4.2.0.5.table\
-	grib2/tables/6/4.2.0.6.table\
-	grib2/tables/6/4.2.0.7.table\
-	grib2/tables/6/4.2.1.0.table\
-	grib2/tables/6/4.2.1.1.table\
-	grib2/tables/6/4.2.10.0.table\
-	grib2/tables/6/4.2.10.1.table\
-	grib2/tables/6/4.2.10.191.table\
-	grib2/tables/6/4.2.10.2.table\
-	grib2/tables/6/4.2.10.3.table\
-	grib2/tables/6/4.2.10.4.table\
-	grib2/tables/6/4.2.192.0.table\
-	grib2/tables/6/4.2.192.1.table\
-	grib2/tables/6/4.2.192.10.table\
-	grib2/tables/6/4.2.192.100.table\
-	grib2/tables/6/4.2.192.101.table\
-	grib2/tables/6/4.2.192.102.table\
-	grib2/tables/6/4.2.192.103.table\
-	grib2/tables/6/4.2.192.104.table\
-	grib2/tables/6/4.2.192.105.table\
-	grib2/tables/6/4.2.192.106.table\
-	grib2/tables/6/4.2.192.107.table\
-	grib2/tables/6/4.2.192.108.table\
-	grib2/tables/6/4.2.192.109.table\
-	grib2/tables/6/4.2.192.11.table\
-	grib2/tables/6/4.2.192.110.table\
-	grib2/tables/6/4.2.192.111.table\
-	grib2/tables/6/4.2.192.112.table\
-	grib2/tables/6/4.2.192.113.table\
-	grib2/tables/6/4.2.192.114.table\
-	grib2/tables/6/4.2.192.115.table\
-	grib2/tables/6/4.2.192.116.table\
-	grib2/tables/6/4.2.192.117.table\
-	grib2/tables/6/4.2.192.118.table\
-	grib2/tables/6/4.2.192.119.table\
-	grib2/tables/6/4.2.192.12.table\
-	grib2/tables/6/4.2.192.120.table\
-	grib2/tables/6/4.2.192.121.table\
-	grib2/tables/6/4.2.192.122.table\
-	grib2/tables/6/4.2.192.123.table\
-	grib2/tables/6/4.2.192.124.table\
-	grib2/tables/6/4.2.192.125.table\
-	grib2/tables/6/4.2.192.126.table\
-	grib2/tables/6/4.2.192.127.table\
-	grib2/tables/6/4.2.192.128.table\
-	grib2/tables/6/4.2.192.129.table\
-	grib2/tables/6/4.2.192.13.table\
-	grib2/tables/6/4.2.192.130.table\
-	grib2/tables/6/4.2.192.131.table\
-	grib2/tables/6/4.2.192.132.table\
-	grib2/tables/6/4.2.192.133.table\
-	grib2/tables/6/4.2.192.134.table\
-	grib2/tables/6/4.2.192.135.table\
-	grib2/tables/6/4.2.192.136.table\
-	grib2/tables/6/4.2.192.137.table\
-	grib2/tables/6/4.2.192.138.table\
-	grib2/tables/6/4.2.192.139.table\
-	grib2/tables/6/4.2.192.14.table\
-	grib2/tables/6/4.2.192.140.table\
-	grib2/tables/6/4.2.192.141.table\
-	grib2/tables/6/4.2.192.142.table\
-	grib2/tables/6/4.2.192.143.table\
-	grib2/tables/6/4.2.192.144.table\
-	grib2/tables/6/4.2.192.145.table\
-	grib2/tables/6/4.2.192.146.table\
-	grib2/tables/6/4.2.192.147.table\
-	grib2/tables/6/4.2.192.148.table\
-	grib2/tables/6/4.2.192.149.table\
-	grib2/tables/6/4.2.192.15.table\
-	grib2/tables/6/4.2.192.150.table\
-	grib2/tables/6/4.2.192.151.table\
-	grib2/tables/6/4.2.192.152.table\
-	grib2/tables/6/4.2.192.153.table\
-	grib2/tables/6/4.2.192.154.table\
-	grib2/tables/6/4.2.192.155.table\
-	grib2/tables/6/4.2.192.156.table\
-	grib2/tables/6/4.2.192.157.table\
-	grib2/tables/6/4.2.192.158.table\
-	grib2/tables/6/4.2.192.159.table\
-	grib2/tables/6/4.2.192.16.table\
-	grib2/tables/6/4.2.192.160.table\
-	grib2/tables/6/4.2.192.161.table\
-	grib2/tables/6/4.2.192.162.table\
-	grib2/tables/6/4.2.192.163.table\
-	grib2/tables/6/4.2.192.164.table\
-	grib2/tables/6/4.2.192.165.table\
-	grib2/tables/6/4.2.192.166.table\
-	grib2/tables/6/4.2.192.167.table\
-	grib2/tables/6/4.2.192.168.table\
-	grib2/tables/6/4.2.192.169.table\
-	grib2/tables/6/4.2.192.17.table\
-	grib2/tables/6/4.2.192.170.table\
-	grib2/tables/6/4.2.192.171.table\
-	grib2/tables/6/4.2.192.172.table\
-	grib2/tables/6/4.2.192.173.table\
-	grib2/tables/6/4.2.192.174.table\
-	grib2/tables/6/4.2.192.175.table\
-	grib2/tables/6/4.2.192.176.table\
-	grib2/tables/6/4.2.192.177.table\
-	grib2/tables/6/4.2.192.178.table\
-	grib2/tables/6/4.2.192.179.table\
-	grib2/tables/6/4.2.192.18.table\
-	grib2/tables/6/4.2.192.180.table\
-	grib2/tables/6/4.2.192.181.table\
-	grib2/tables/6/4.2.192.182.table\
-	grib2/tables/6/4.2.192.183.table\
-	grib2/tables/6/4.2.192.184.table\
-	grib2/tables/6/4.2.192.185.table\
-	grib2/tables/6/4.2.192.186.table\
-	grib2/tables/6/4.2.192.187.table\
-	grib2/tables/6/4.2.192.188.table\
-	grib2/tables/6/4.2.192.189.table\
-	grib2/tables/6/4.2.192.19.table\
-	grib2/tables/6/4.2.192.190.table\
-	grib2/tables/6/4.2.192.191.table\
-	grib2/tables/6/4.2.192.192.table\
-	grib2/tables/6/4.2.192.193.table\
-	grib2/tables/6/4.2.192.194.table\
-	grib2/tables/6/4.2.192.195.table\
-	grib2/tables/6/4.2.192.196.table\
-	grib2/tables/6/4.2.192.197.table\
-	grib2/tables/6/4.2.192.198.table\
-	grib2/tables/6/4.2.192.199.table\
-	grib2/tables/6/4.2.192.2.table\
-	grib2/tables/6/4.2.192.20.table\
-	grib2/tables/6/4.2.192.200.table\
-	grib2/tables/6/4.2.192.201.table\
-	grib2/tables/6/4.2.192.202.table\
-	grib2/tables/6/4.2.192.203.table\
-	grib2/tables/6/4.2.192.204.table\
-	grib2/tables/6/4.2.192.205.table\
-	grib2/tables/6/4.2.192.206.table\
-	grib2/tables/6/4.2.192.207.table\
-	grib2/tables/6/4.2.192.208.table\
-	grib2/tables/6/4.2.192.209.table\
-	grib2/tables/6/4.2.192.21.table\
-	grib2/tables/6/4.2.192.210.table\
-	grib2/tables/6/4.2.192.211.table\
-	grib2/tables/6/4.2.192.212.table\
-	grib2/tables/6/4.2.192.213.table\
-	grib2/tables/6/4.2.192.214.table\
-	grib2/tables/6/4.2.192.215.table\
-	grib2/tables/6/4.2.192.216.table\
-	grib2/tables/6/4.2.192.217.table\
-	grib2/tables/6/4.2.192.218.table\
-	grib2/tables/6/4.2.192.219.table\
-	grib2/tables/6/4.2.192.22.table\
-	grib2/tables/6/4.2.192.220.table\
-	grib2/tables/6/4.2.192.221.table\
-	grib2/tables/6/4.2.192.222.table\
-	grib2/tables/6/4.2.192.223.table\
-	grib2/tables/6/4.2.192.224.table\
-	grib2/tables/6/4.2.192.225.table\
-	grib2/tables/6/4.2.192.226.table\
-	grib2/tables/6/4.2.192.227.table\
-	grib2/tables/6/4.2.192.228.table\
-	grib2/tables/6/4.2.192.229.table\
-	grib2/tables/6/4.2.192.23.table\
-	grib2/tables/6/4.2.192.230.table\
-	grib2/tables/6/4.2.192.231.table\
-	grib2/tables/6/4.2.192.232.table\
-	grib2/tables/6/4.2.192.233.table\
-	grib2/tables/6/4.2.192.234.table\
-	grib2/tables/6/4.2.192.235.table\
-	grib2/tables/6/4.2.192.236.table\
-	grib2/tables/6/4.2.192.237.table\
-	grib2/tables/6/4.2.192.238.table\
-	grib2/tables/6/4.2.192.239.table\
-	grib2/tables/6/4.2.192.24.table\
-	grib2/tables/6/4.2.192.240.table\
-	grib2/tables/6/4.2.192.241.table\
-	grib2/tables/6/4.2.192.242.table\
-	grib2/tables/6/4.2.192.243.table\
-	grib2/tables/6/4.2.192.244.table\
-	grib2/tables/6/4.2.192.245.table\
-	grib2/tables/6/4.2.192.246.table\
-	grib2/tables/6/4.2.192.247.table\
-	grib2/tables/6/4.2.192.248.table\
-	grib2/tables/6/4.2.192.249.table\
-	grib2/tables/6/4.2.192.25.table\
-	grib2/tables/6/4.2.192.250.table\
-	grib2/tables/6/4.2.192.251.table\
-	grib2/tables/6/4.2.192.252.table\
-	grib2/tables/6/4.2.192.253.table\
-	grib2/tables/6/4.2.192.254.table\
-	grib2/tables/6/4.2.192.255.table\
-	grib2/tables/6/4.2.192.26.table\
-	grib2/tables/6/4.2.192.27.table\
-	grib2/tables/6/4.2.192.28.table\
-	grib2/tables/6/4.2.192.29.table\
-	grib2/tables/6/4.2.192.3.table\
-	grib2/tables/6/4.2.192.30.table\
-	grib2/tables/6/4.2.192.31.table\
-	grib2/tables/6/4.2.192.32.table\
-	grib2/tables/6/4.2.192.33.table\
-	grib2/tables/6/4.2.192.34.table\
-	grib2/tables/6/4.2.192.35.table\
-	grib2/tables/6/4.2.192.36.table\
-	grib2/tables/6/4.2.192.37.table\
-	grib2/tables/6/4.2.192.38.table\
-	grib2/tables/6/4.2.192.39.table\
-	grib2/tables/6/4.2.192.4.table\
-	grib2/tables/6/4.2.192.40.table\
-	grib2/tables/6/4.2.192.41.table\
-	grib2/tables/6/4.2.192.42.table\
-	grib2/tables/6/4.2.192.43.table\
-	grib2/tables/6/4.2.192.44.table\
-	grib2/tables/6/4.2.192.45.table\
-	grib2/tables/6/4.2.192.46.table\
-	grib2/tables/6/4.2.192.47.table\
-	grib2/tables/6/4.2.192.48.table\
-	grib2/tables/6/4.2.192.49.table\
-	grib2/tables/6/4.2.192.5.table\
-	grib2/tables/6/4.2.192.50.table\
-	grib2/tables/6/4.2.192.51.table\
-	grib2/tables/6/4.2.192.52.table\
-	grib2/tables/6/4.2.192.53.table\
-	grib2/tables/6/4.2.192.54.table\
-	grib2/tables/6/4.2.192.55.table\
-	grib2/tables/6/4.2.192.56.table\
-	grib2/tables/6/4.2.192.57.table\
-	grib2/tables/6/4.2.192.58.table\
-	grib2/tables/6/4.2.192.59.table\
-	grib2/tables/6/4.2.192.6.table\
-	grib2/tables/6/4.2.192.60.table\
-	grib2/tables/6/4.2.192.61.table\
-	grib2/tables/6/4.2.192.62.table\
-	grib2/tables/6/4.2.192.63.table\
-	grib2/tables/6/4.2.192.64.table\
-	grib2/tables/6/4.2.192.65.table\
-	grib2/tables/6/4.2.192.66.table\
-	grib2/tables/6/4.2.192.67.table\
-	grib2/tables/6/4.2.192.68.table\
-	grib2/tables/6/4.2.192.69.table\
-	grib2/tables/6/4.2.192.7.table\
-	grib2/tables/6/4.2.192.70.table\
-	grib2/tables/6/4.2.192.71.table\
-	grib2/tables/6/4.2.192.72.table\
-	grib2/tables/6/4.2.192.73.table\
-	grib2/tables/6/4.2.192.74.table\
-	grib2/tables/6/4.2.192.75.table\
-	grib2/tables/6/4.2.192.76.table\
-	grib2/tables/6/4.2.192.77.table\
-	grib2/tables/6/4.2.192.78.table\
-	grib2/tables/6/4.2.192.79.table\
-	grib2/tables/6/4.2.192.8.table\
-	grib2/tables/6/4.2.192.80.table\
-	grib2/tables/6/4.2.192.81.table\
-	grib2/tables/6/4.2.192.82.table\
-	grib2/tables/6/4.2.192.83.table\
-	grib2/tables/6/4.2.192.84.table\
-	grib2/tables/6/4.2.192.85.table\
-	grib2/tables/6/4.2.192.86.table\
-	grib2/tables/6/4.2.192.87.table\
-	grib2/tables/6/4.2.192.88.table\
-	grib2/tables/6/4.2.192.89.table\
-	grib2/tables/6/4.2.192.9.table\
-	grib2/tables/6/4.2.192.90.table\
-	grib2/tables/6/4.2.192.91.table\
-	grib2/tables/6/4.2.192.92.table\
-	grib2/tables/6/4.2.192.93.table\
-	grib2/tables/6/4.2.192.94.table\
-	grib2/tables/6/4.2.192.95.table\
-	grib2/tables/6/4.2.192.96.table\
-	grib2/tables/6/4.2.192.97.table\
-	grib2/tables/6/4.2.192.98.table\
-	grib2/tables/6/4.2.192.99.table\
-	grib2/tables/6/4.2.2.0.table\
-	grib2/tables/6/4.2.2.3.table\
-	grib2/tables/6/4.2.2.4.table\
-	grib2/tables/6/4.2.3.0.table\
-	grib2/tables/6/4.2.3.1.table\
-	grib2/tables/6/4.2.table\
-	grib2/tables/6/4.201.table\
-	grib2/tables/6/4.202.table\
-	grib2/tables/6/4.203.table\
-	grib2/tables/6/4.204.table\
-	grib2/tables/6/4.205.table\
-	grib2/tables/6/4.206.table\
-	grib2/tables/6/4.207.table\
-	grib2/tables/6/4.208.table\
-	grib2/tables/6/4.209.table\
-	grib2/tables/6/4.210.table\
-	grib2/tables/6/4.211.table\
-	grib2/tables/6/4.212.table\
-	grib2/tables/6/4.213.table\
-	grib2/tables/6/4.215.table\
-	grib2/tables/6/4.216.table\
-	grib2/tables/6/4.217.table\
-	grib2/tables/6/4.218.table\
-	grib2/tables/6/4.219.table\
-	grib2/tables/6/4.220.table\
-	grib2/tables/6/4.221.table\
-	grib2/tables/6/4.222.table\
-	grib2/tables/6/4.223.table\
-	grib2/tables/6/4.230.table\
-	grib2/tables/6/4.3.table\
-	grib2/tables/6/4.4.table\
-	grib2/tables/6/4.5.table\
-	grib2/tables/6/4.6.table\
-	grib2/tables/6/4.7.table\
-	grib2/tables/6/4.8.table\
-	grib2/tables/6/4.9.table\
-	grib2/tables/6/4.91.table\
-	grib2/tables/6/5.0.table\
-	grib2/tables/6/5.1.table\
-	grib2/tables/6/5.2.table\
-	grib2/tables/6/5.3.table\
-	grib2/tables/6/5.4.table\
-	grib2/tables/6/5.40.table\
-	grib2/tables/6/5.40000.table\
-	grib2/tables/6/5.5.table\
-	grib2/tables/6/5.50002.table\
-	grib2/tables/6/5.6.table\
-	grib2/tables/6/5.7.table\
-	grib2/tables/6/5.8.table\
-	grib2/tables/6/5.9.table\
-	grib2/tables/6/6.0.table\
-	grib2/tables/6/stepType.table
-
-definitionsgrib2_tables_7dir = ${datarootdir}/eccodes/definitions/grib2/tables/7
-dist_definitionsgrib2_tables_7_DATA = \
-	grib2/tables/7/0.0.table\
-	grib2/tables/7/1.0.table\
-	grib2/tables/7/1.1.table\
-	grib2/tables/7/1.2.table\
-	grib2/tables/7/1.3.table\
-	grib2/tables/7/1.4.table\
-	grib2/tables/7/3.0.table\
-	grib2/tables/7/3.1.table\
-	grib2/tables/7/3.10.table\
-	grib2/tables/7/3.11.table\
-	grib2/tables/7/3.15.table\
-	grib2/tables/7/3.2.table\
-	grib2/tables/7/3.20.table\
-	grib2/tables/7/3.21.table\
-	grib2/tables/7/3.3.table\
-	grib2/tables/7/3.4.table\
-	grib2/tables/7/3.5.table\
-	grib2/tables/7/3.6.table\
-	grib2/tables/7/3.7.table\
-	grib2/tables/7/3.8.table\
-	grib2/tables/7/3.9.table\
-	grib2/tables/7/4.0.table\
-	grib2/tables/7/4.1.0.table\
-	grib2/tables/7/4.1.1.table\
-	grib2/tables/7/4.1.10.table\
-	grib2/tables/7/4.1.192.table\
-	grib2/tables/7/4.1.2.table\
-	grib2/tables/7/4.1.3.table\
-	grib2/tables/7/4.1.table\
-	grib2/tables/7/4.10.table\
-	grib2/tables/7/4.11.table\
-	grib2/tables/7/4.12.table\
-	grib2/tables/7/4.13.table\
-	grib2/tables/7/4.14.table\
-	grib2/tables/7/4.15.table\
-	grib2/tables/7/4.151.table\
-	grib2/tables/7/4.192.table\
-	grib2/tables/7/4.2.0.0.table\
-	grib2/tables/7/4.2.0.1.table\
-	grib2/tables/7/4.2.0.13.table\
-	grib2/tables/7/4.2.0.14.table\
-	grib2/tables/7/4.2.0.15.table\
-	grib2/tables/7/4.2.0.16.table\
-	grib2/tables/7/4.2.0.18.table\
-	grib2/tables/7/4.2.0.19.table\
-	grib2/tables/7/4.2.0.190.table\
-	grib2/tables/7/4.2.0.191.table\
-	grib2/tables/7/4.2.0.2.table\
-	grib2/tables/7/4.2.0.20.table\
-	grib2/tables/7/4.2.0.3.table\
-	grib2/tables/7/4.2.0.4.table\
-	grib2/tables/7/4.2.0.5.table\
-	grib2/tables/7/4.2.0.6.table\
-	grib2/tables/7/4.2.0.7.table\
-	grib2/tables/7/4.2.1.0.table\
-	grib2/tables/7/4.2.1.1.table\
-	grib2/tables/7/4.2.10.0.table\
-	grib2/tables/7/4.2.10.1.table\
-	grib2/tables/7/4.2.10.191.table\
-	grib2/tables/7/4.2.10.2.table\
-	grib2/tables/7/4.2.10.3.table\
-	grib2/tables/7/4.2.10.4.table\
-	grib2/tables/7/4.2.192.0.table\
-	grib2/tables/7/4.2.192.1.table\
-	grib2/tables/7/4.2.192.10.table\
-	grib2/tables/7/4.2.192.100.table\
-	grib2/tables/7/4.2.192.101.table\
-	grib2/tables/7/4.2.192.102.table\
-	grib2/tables/7/4.2.192.103.table\
-	grib2/tables/7/4.2.192.104.table\
-	grib2/tables/7/4.2.192.105.table\
-	grib2/tables/7/4.2.192.106.table\
-	grib2/tables/7/4.2.192.107.table\
-	grib2/tables/7/4.2.192.108.table\
-	grib2/tables/7/4.2.192.109.table\
-	grib2/tables/7/4.2.192.11.table\
-	grib2/tables/7/4.2.192.110.table\
-	grib2/tables/7/4.2.192.111.table\
-	grib2/tables/7/4.2.192.112.table\
-	grib2/tables/7/4.2.192.113.table\
-	grib2/tables/7/4.2.192.114.table\
-	grib2/tables/7/4.2.192.115.table\
-	grib2/tables/7/4.2.192.116.table\
-	grib2/tables/7/4.2.192.117.table\
-	grib2/tables/7/4.2.192.118.table\
-	grib2/tables/7/4.2.192.119.table\
-	grib2/tables/7/4.2.192.12.table\
-	grib2/tables/7/4.2.192.120.table\
-	grib2/tables/7/4.2.192.121.table\
-	grib2/tables/7/4.2.192.122.table\
-	grib2/tables/7/4.2.192.123.table\
-	grib2/tables/7/4.2.192.124.table\
-	grib2/tables/7/4.2.192.125.table\
-	grib2/tables/7/4.2.192.126.table\
-	grib2/tables/7/4.2.192.127.table\
-	grib2/tables/7/4.2.192.128.table\
-	grib2/tables/7/4.2.192.129.table\
-	grib2/tables/7/4.2.192.13.table\
-	grib2/tables/7/4.2.192.130.table\
-	grib2/tables/7/4.2.192.131.table\
-	grib2/tables/7/4.2.192.132.table\
-	grib2/tables/7/4.2.192.133.table\
-	grib2/tables/7/4.2.192.134.table\
-	grib2/tables/7/4.2.192.135.table\
-	grib2/tables/7/4.2.192.136.table\
-	grib2/tables/7/4.2.192.137.table\
-	grib2/tables/7/4.2.192.138.table\
-	grib2/tables/7/4.2.192.139.table\
-	grib2/tables/7/4.2.192.14.table\
-	grib2/tables/7/4.2.192.140.table\
-	grib2/tables/7/4.2.192.141.table\
-	grib2/tables/7/4.2.192.142.table\
-	grib2/tables/7/4.2.192.143.table\
-	grib2/tables/7/4.2.192.144.table\
-	grib2/tables/7/4.2.192.145.table\
-	grib2/tables/7/4.2.192.146.table\
-	grib2/tables/7/4.2.192.147.table\
-	grib2/tables/7/4.2.192.148.table\
-	grib2/tables/7/4.2.192.149.table\
-	grib2/tables/7/4.2.192.15.table\
-	grib2/tables/7/4.2.192.150.table\
-	grib2/tables/7/4.2.192.151.table\
-	grib2/tables/7/4.2.192.152.table\
-	grib2/tables/7/4.2.192.153.table\
-	grib2/tables/7/4.2.192.154.table\
-	grib2/tables/7/4.2.192.155.table\
-	grib2/tables/7/4.2.192.156.table\
-	grib2/tables/7/4.2.192.157.table\
-	grib2/tables/7/4.2.192.158.table\
-	grib2/tables/7/4.2.192.159.table\
-	grib2/tables/7/4.2.192.16.table\
-	grib2/tables/7/4.2.192.160.table\
-	grib2/tables/7/4.2.192.161.table\
-	grib2/tables/7/4.2.192.162.table\
-	grib2/tables/7/4.2.192.163.table\
-	grib2/tables/7/4.2.192.164.table\
-	grib2/tables/7/4.2.192.165.table\
-	grib2/tables/7/4.2.192.166.table\
-	grib2/tables/7/4.2.192.167.table\
-	grib2/tables/7/4.2.192.168.table\
-	grib2/tables/7/4.2.192.169.table\
-	grib2/tables/7/4.2.192.17.table\
-	grib2/tables/7/4.2.192.170.table\
-	grib2/tables/7/4.2.192.171.table\
-	grib2/tables/7/4.2.192.172.table\
-	grib2/tables/7/4.2.192.173.table\
-	grib2/tables/7/4.2.192.174.table\
-	grib2/tables/7/4.2.192.175.table\
-	grib2/tables/7/4.2.192.176.table\
-	grib2/tables/7/4.2.192.177.table\
-	grib2/tables/7/4.2.192.178.table\
-	grib2/tables/7/4.2.192.179.table\
-	grib2/tables/7/4.2.192.18.table\
-	grib2/tables/7/4.2.192.180.table\
-	grib2/tables/7/4.2.192.181.table\
-	grib2/tables/7/4.2.192.182.table\
-	grib2/tables/7/4.2.192.183.table\
-	grib2/tables/7/4.2.192.184.table\
-	grib2/tables/7/4.2.192.185.table\
-	grib2/tables/7/4.2.192.186.table\
-	grib2/tables/7/4.2.192.187.table\
-	grib2/tables/7/4.2.192.188.table\
-	grib2/tables/7/4.2.192.189.table\
-	grib2/tables/7/4.2.192.19.table\
-	grib2/tables/7/4.2.192.190.table\
-	grib2/tables/7/4.2.192.191.table\
-	grib2/tables/7/4.2.192.192.table\
-	grib2/tables/7/4.2.192.193.table\
-	grib2/tables/7/4.2.192.194.table\
-	grib2/tables/7/4.2.192.195.table\
-	grib2/tables/7/4.2.192.196.table\
-	grib2/tables/7/4.2.192.197.table\
-	grib2/tables/7/4.2.192.198.table\
-	grib2/tables/7/4.2.192.199.table\
-	grib2/tables/7/4.2.192.2.table\
-	grib2/tables/7/4.2.192.20.table\
-	grib2/tables/7/4.2.192.200.table\
-	grib2/tables/7/4.2.192.201.table\
-	grib2/tables/7/4.2.192.202.table\
-	grib2/tables/7/4.2.192.203.table\
-	grib2/tables/7/4.2.192.204.table\
-	grib2/tables/7/4.2.192.205.table\
-	grib2/tables/7/4.2.192.206.table\
-	grib2/tables/7/4.2.192.207.table\
-	grib2/tables/7/4.2.192.208.table\
-	grib2/tables/7/4.2.192.209.table\
-	grib2/tables/7/4.2.192.21.table\
-	grib2/tables/7/4.2.192.210.table\
-	grib2/tables/7/4.2.192.211.table\
-	grib2/tables/7/4.2.192.212.table\
-	grib2/tables/7/4.2.192.213.table\
-	grib2/tables/7/4.2.192.214.table\
-	grib2/tables/7/4.2.192.215.table\
-	grib2/tables/7/4.2.192.216.table\
-	grib2/tables/7/4.2.192.217.table\
-	grib2/tables/7/4.2.192.218.table\
-	grib2/tables/7/4.2.192.219.table\
-	grib2/tables/7/4.2.192.22.table\
-	grib2/tables/7/4.2.192.220.table\
-	grib2/tables/7/4.2.192.221.table\
-	grib2/tables/7/4.2.192.222.table\
-	grib2/tables/7/4.2.192.223.table\
-	grib2/tables/7/4.2.192.224.table\
-	grib2/tables/7/4.2.192.225.table\
-	grib2/tables/7/4.2.192.226.table\
-	grib2/tables/7/4.2.192.227.table\
-	grib2/tables/7/4.2.192.228.table\
-	grib2/tables/7/4.2.192.229.table\
-	grib2/tables/7/4.2.192.23.table\
-	grib2/tables/7/4.2.192.230.table\
-	grib2/tables/7/4.2.192.231.table\
-	grib2/tables/7/4.2.192.232.table\
-	grib2/tables/7/4.2.192.233.table\
-	grib2/tables/7/4.2.192.234.table\
-	grib2/tables/7/4.2.192.235.table\
-	grib2/tables/7/4.2.192.236.table\
-	grib2/tables/7/4.2.192.237.table\
-	grib2/tables/7/4.2.192.238.table\
-	grib2/tables/7/4.2.192.239.table\
-	grib2/tables/7/4.2.192.24.table\
-	grib2/tables/7/4.2.192.240.table\
-	grib2/tables/7/4.2.192.241.table\
-	grib2/tables/7/4.2.192.242.table\
-	grib2/tables/7/4.2.192.243.table\
-	grib2/tables/7/4.2.192.244.table\
-	grib2/tables/7/4.2.192.245.table\
-	grib2/tables/7/4.2.192.246.table\
-	grib2/tables/7/4.2.192.247.table\
-	grib2/tables/7/4.2.192.248.table\
-	grib2/tables/7/4.2.192.249.table\
-	grib2/tables/7/4.2.192.25.table\
-	grib2/tables/7/4.2.192.250.table\
-	grib2/tables/7/4.2.192.251.table\
-	grib2/tables/7/4.2.192.252.table\
-	grib2/tables/7/4.2.192.253.table\
-	grib2/tables/7/4.2.192.254.table\
-	grib2/tables/7/4.2.192.255.table\
-	grib2/tables/7/4.2.192.26.table\
-	grib2/tables/7/4.2.192.27.table\
-	grib2/tables/7/4.2.192.28.table\
-	grib2/tables/7/4.2.192.29.table\
-	grib2/tables/7/4.2.192.3.table\
-	grib2/tables/7/4.2.192.30.table\
-	grib2/tables/7/4.2.192.31.table\
-	grib2/tables/7/4.2.192.32.table\
-	grib2/tables/7/4.2.192.33.table\
-	grib2/tables/7/4.2.192.34.table\
-	grib2/tables/7/4.2.192.35.table\
-	grib2/tables/7/4.2.192.36.table\
-	grib2/tables/7/4.2.192.37.table\
-	grib2/tables/7/4.2.192.38.table\
-	grib2/tables/7/4.2.192.39.table\
-	grib2/tables/7/4.2.192.4.table\
-	grib2/tables/7/4.2.192.40.table\
-	grib2/tables/7/4.2.192.41.table\
-	grib2/tables/7/4.2.192.42.table\
-	grib2/tables/7/4.2.192.43.table\
-	grib2/tables/7/4.2.192.44.table\
-	grib2/tables/7/4.2.192.45.table\
-	grib2/tables/7/4.2.192.46.table\
-	grib2/tables/7/4.2.192.47.table\
-	grib2/tables/7/4.2.192.48.table\
-	grib2/tables/7/4.2.192.49.table\
-	grib2/tables/7/4.2.192.5.table\
-	grib2/tables/7/4.2.192.50.table\
-	grib2/tables/7/4.2.192.51.table\
-	grib2/tables/7/4.2.192.52.table\
-	grib2/tables/7/4.2.192.53.table\
-	grib2/tables/7/4.2.192.54.table\
-	grib2/tables/7/4.2.192.55.table\
-	grib2/tables/7/4.2.192.56.table\
-	grib2/tables/7/4.2.192.57.table\
-	grib2/tables/7/4.2.192.58.table\
-	grib2/tables/7/4.2.192.59.table\
-	grib2/tables/7/4.2.192.6.table\
-	grib2/tables/7/4.2.192.60.table\
-	grib2/tables/7/4.2.192.61.table\
-	grib2/tables/7/4.2.192.62.table\
-	grib2/tables/7/4.2.192.63.table\
-	grib2/tables/7/4.2.192.64.table\
-	grib2/tables/7/4.2.192.65.table\
-	grib2/tables/7/4.2.192.66.table\
-	grib2/tables/7/4.2.192.67.table\
-	grib2/tables/7/4.2.192.68.table\
-	grib2/tables/7/4.2.192.69.table\
-	grib2/tables/7/4.2.192.7.table\
-	grib2/tables/7/4.2.192.70.table\
-	grib2/tables/7/4.2.192.71.table\
-	grib2/tables/7/4.2.192.72.table\
-	grib2/tables/7/4.2.192.73.table\
-	grib2/tables/7/4.2.192.74.table\
-	grib2/tables/7/4.2.192.75.table\
-	grib2/tables/7/4.2.192.76.table\
-	grib2/tables/7/4.2.192.77.table\
-	grib2/tables/7/4.2.192.78.table\
-	grib2/tables/7/4.2.192.79.table\
-	grib2/tables/7/4.2.192.8.table\
-	grib2/tables/7/4.2.192.80.table\
-	grib2/tables/7/4.2.192.81.table\
-	grib2/tables/7/4.2.192.82.table\
-	grib2/tables/7/4.2.192.83.table\
-	grib2/tables/7/4.2.192.84.table\
-	grib2/tables/7/4.2.192.85.table\
-	grib2/tables/7/4.2.192.86.table\
-	grib2/tables/7/4.2.192.87.table\
-	grib2/tables/7/4.2.192.88.table\
-	grib2/tables/7/4.2.192.89.table\
-	grib2/tables/7/4.2.192.9.table\
-	grib2/tables/7/4.2.192.90.table\
-	grib2/tables/7/4.2.192.91.table\
-	grib2/tables/7/4.2.192.92.table\
-	grib2/tables/7/4.2.192.93.table\
-	grib2/tables/7/4.2.192.94.table\
-	grib2/tables/7/4.2.192.95.table\
-	grib2/tables/7/4.2.192.96.table\
-	grib2/tables/7/4.2.192.97.table\
-	grib2/tables/7/4.2.192.98.table\
-	grib2/tables/7/4.2.192.99.table\
-	grib2/tables/7/4.2.2.0.table\
-	grib2/tables/7/4.2.2.3.table\
-	grib2/tables/7/4.2.2.4.table\
-	grib2/tables/7/4.2.3.0.table\
-	grib2/tables/7/4.2.3.1.table\
-	grib2/tables/7/4.2.table\
-	grib2/tables/7/4.201.table\
-	grib2/tables/7/4.202.table\
-	grib2/tables/7/4.203.table\
-	grib2/tables/7/4.204.table\
-	grib2/tables/7/4.205.table\
-	grib2/tables/7/4.206.table\
-	grib2/tables/7/4.207.table\
-	grib2/tables/7/4.208.table\
-	grib2/tables/7/4.209.table\
-	grib2/tables/7/4.210.table\
-	grib2/tables/7/4.211.table\
-	grib2/tables/7/4.212.table\
-	grib2/tables/7/4.213.table\
-	grib2/tables/7/4.215.table\
-	grib2/tables/7/4.216.table\
-	grib2/tables/7/4.217.table\
-	grib2/tables/7/4.218.table\
-	grib2/tables/7/4.219.table\
-	grib2/tables/7/4.220.table\
-	grib2/tables/7/4.221.table\
-	grib2/tables/7/4.222.table\
-	grib2/tables/7/4.223.table\
-	grib2/tables/7/4.224.table\
-	grib2/tables/7/4.230.table\
-	grib2/tables/7/4.3.table\
-	grib2/tables/7/4.4.table\
-	grib2/tables/7/4.5.table\
-	grib2/tables/7/4.6.table\
-	grib2/tables/7/4.7.table\
-	grib2/tables/7/4.8.table\
-	grib2/tables/7/4.9.table\
-	grib2/tables/7/4.91.table\
-	grib2/tables/7/5.0.table\
-	grib2/tables/7/5.1.table\
-	grib2/tables/7/5.2.table\
-	grib2/tables/7/5.3.table\
-	grib2/tables/7/5.4.table\
-	grib2/tables/7/5.40.table\
-	grib2/tables/7/5.40000.table\
-	grib2/tables/7/5.5.table\
-	grib2/tables/7/5.50002.table\
-	grib2/tables/7/5.6.table\
-	grib2/tables/7/5.7.table\
-	grib2/tables/7/5.8.table\
-	grib2/tables/7/5.9.table\
-	grib2/tables/7/6.0.table\
-	grib2/tables/7/stepType.table
-
-definitionsgrib2_tables_8dir = ${datarootdir}/eccodes/definitions/grib2/tables/8
-dist_definitionsgrib2_tables_8_DATA = \
-	grib2/tables/8/0.0.table\
-	grib2/tables/8/1.0.table\
-	grib2/tables/8/1.1.table\
-	grib2/tables/8/1.2.table\
-	grib2/tables/8/1.3.table\
-	grib2/tables/8/1.4.table\
-	grib2/tables/8/3.0.table\
-	grib2/tables/8/3.1.table\
-	grib2/tables/8/3.10.table\
-	grib2/tables/8/3.11.table\
-	grib2/tables/8/3.15.table\
-	grib2/tables/8/3.2.table\
-	grib2/tables/8/3.20.table\
-	grib2/tables/8/3.21.table\
-	grib2/tables/8/3.3.table\
-	grib2/tables/8/3.4.table\
-	grib2/tables/8/3.5.table\
-	grib2/tables/8/3.6.table\
-	grib2/tables/8/3.7.table\
-	grib2/tables/8/3.8.table\
-	grib2/tables/8/3.9.table\
-	grib2/tables/8/4.0.table\
-	grib2/tables/8/4.1.0.table\
-	grib2/tables/8/4.1.1.table\
-	grib2/tables/8/4.1.10.table\
-	grib2/tables/8/4.1.192.table\
-	grib2/tables/8/4.1.2.table\
-	grib2/tables/8/4.1.3.table\
-	grib2/tables/8/4.1.table\
-	grib2/tables/8/4.10.table\
-	grib2/tables/8/4.11.table\
-	grib2/tables/8/4.12.table\
-	grib2/tables/8/4.13.table\
-	grib2/tables/8/4.14.table\
-	grib2/tables/8/4.15.table\
-	grib2/tables/8/4.151.table\
-	grib2/tables/8/4.192.table\
-	grib2/tables/8/4.2.0.0.table\
-	grib2/tables/8/4.2.0.1.table\
-	grib2/tables/8/4.2.0.13.table\
-	grib2/tables/8/4.2.0.14.table\
-	grib2/tables/8/4.2.0.15.table\
-	grib2/tables/8/4.2.0.16.table\
-	grib2/tables/8/4.2.0.18.table\
-	grib2/tables/8/4.2.0.19.table\
-	grib2/tables/8/4.2.0.190.table\
-	grib2/tables/8/4.2.0.191.table\
-	grib2/tables/8/4.2.0.2.table\
-	grib2/tables/8/4.2.0.20.table\
-	grib2/tables/8/4.2.0.3.table\
-	grib2/tables/8/4.2.0.4.table\
-	grib2/tables/8/4.2.0.5.table\
-	grib2/tables/8/4.2.0.6.table\
-	grib2/tables/8/4.2.0.7.table\
-	grib2/tables/8/4.2.1.0.table\
-	grib2/tables/8/4.2.1.1.table\
-	grib2/tables/8/4.2.1.2.table\
-	grib2/tables/8/4.2.10.0.table\
-	grib2/tables/8/4.2.10.1.table\
-	grib2/tables/8/4.2.10.191.table\
-	grib2/tables/8/4.2.10.2.table\
-	grib2/tables/8/4.2.10.3.table\
-	grib2/tables/8/4.2.10.4.table\
-	grib2/tables/8/4.2.192.0.table\
-	grib2/tables/8/4.2.192.1.table\
-	grib2/tables/8/4.2.192.10.table\
-	grib2/tables/8/4.2.192.100.table\
-	grib2/tables/8/4.2.192.101.table\
-	grib2/tables/8/4.2.192.102.table\
-	grib2/tables/8/4.2.192.103.table\
-	grib2/tables/8/4.2.192.104.table\
-	grib2/tables/8/4.2.192.105.table\
-	grib2/tables/8/4.2.192.106.table\
-	grib2/tables/8/4.2.192.107.table\
-	grib2/tables/8/4.2.192.108.table\
-	grib2/tables/8/4.2.192.109.table\
-	grib2/tables/8/4.2.192.11.table\
-	grib2/tables/8/4.2.192.110.table\
-	grib2/tables/8/4.2.192.111.table\
-	grib2/tables/8/4.2.192.112.table\
-	grib2/tables/8/4.2.192.113.table\
-	grib2/tables/8/4.2.192.114.table\
-	grib2/tables/8/4.2.192.115.table\
-	grib2/tables/8/4.2.192.116.table\
-	grib2/tables/8/4.2.192.117.table\
-	grib2/tables/8/4.2.192.118.table\
-	grib2/tables/8/4.2.192.119.table\
-	grib2/tables/8/4.2.192.12.table\
-	grib2/tables/8/4.2.192.120.table\
-	grib2/tables/8/4.2.192.121.table\
-	grib2/tables/8/4.2.192.122.table\
-	grib2/tables/8/4.2.192.123.table\
-	grib2/tables/8/4.2.192.124.table\
-	grib2/tables/8/4.2.192.125.table\
-	grib2/tables/8/4.2.192.126.table\
-	grib2/tables/8/4.2.192.127.table\
-	grib2/tables/8/4.2.192.128.table\
-	grib2/tables/8/4.2.192.129.table\
-	grib2/tables/8/4.2.192.13.table\
-	grib2/tables/8/4.2.192.130.table\
-	grib2/tables/8/4.2.192.131.table\
-	grib2/tables/8/4.2.192.132.table\
-	grib2/tables/8/4.2.192.133.table\
-	grib2/tables/8/4.2.192.134.table\
-	grib2/tables/8/4.2.192.135.table\
-	grib2/tables/8/4.2.192.136.table\
-	grib2/tables/8/4.2.192.137.table\
-	grib2/tables/8/4.2.192.138.table\
-	grib2/tables/8/4.2.192.139.table\
-	grib2/tables/8/4.2.192.14.table\
-	grib2/tables/8/4.2.192.140.table\
-	grib2/tables/8/4.2.192.141.table\
-	grib2/tables/8/4.2.192.142.table\
-	grib2/tables/8/4.2.192.143.table\
-	grib2/tables/8/4.2.192.144.table\
-	grib2/tables/8/4.2.192.145.table\
-	grib2/tables/8/4.2.192.146.table\
-	grib2/tables/8/4.2.192.147.table\
-	grib2/tables/8/4.2.192.148.table\
-	grib2/tables/8/4.2.192.149.table\
-	grib2/tables/8/4.2.192.15.table\
-	grib2/tables/8/4.2.192.150.table\
-	grib2/tables/8/4.2.192.151.table\
-	grib2/tables/8/4.2.192.152.table\
-	grib2/tables/8/4.2.192.153.table\
-	grib2/tables/8/4.2.192.154.table\
-	grib2/tables/8/4.2.192.155.table\
-	grib2/tables/8/4.2.192.156.table\
-	grib2/tables/8/4.2.192.157.table\
-	grib2/tables/8/4.2.192.158.table\
-	grib2/tables/8/4.2.192.159.table\
-	grib2/tables/8/4.2.192.16.table\
-	grib2/tables/8/4.2.192.160.table\
-	grib2/tables/8/4.2.192.161.table\
-	grib2/tables/8/4.2.192.162.table\
-	grib2/tables/8/4.2.192.163.table\
-	grib2/tables/8/4.2.192.164.table\
-	grib2/tables/8/4.2.192.165.table\
-	grib2/tables/8/4.2.192.166.table\
-	grib2/tables/8/4.2.192.167.table\
-	grib2/tables/8/4.2.192.168.table\
-	grib2/tables/8/4.2.192.169.table\
-	grib2/tables/8/4.2.192.17.table\
-	grib2/tables/8/4.2.192.170.table\
-	grib2/tables/8/4.2.192.171.table\
-	grib2/tables/8/4.2.192.172.table\
-	grib2/tables/8/4.2.192.173.table\
-	grib2/tables/8/4.2.192.174.table\
-	grib2/tables/8/4.2.192.175.table\
-	grib2/tables/8/4.2.192.176.table\
-	grib2/tables/8/4.2.192.177.table\
-	grib2/tables/8/4.2.192.178.table\
-	grib2/tables/8/4.2.192.179.table\
-	grib2/tables/8/4.2.192.18.table\
-	grib2/tables/8/4.2.192.180.table\
-	grib2/tables/8/4.2.192.181.table\
-	grib2/tables/8/4.2.192.182.table\
-	grib2/tables/8/4.2.192.183.table\
-	grib2/tables/8/4.2.192.184.table\
-	grib2/tables/8/4.2.192.185.table\
-	grib2/tables/8/4.2.192.186.table\
-	grib2/tables/8/4.2.192.187.table\
-	grib2/tables/8/4.2.192.188.table\
-	grib2/tables/8/4.2.192.189.table\
-	grib2/tables/8/4.2.192.19.table\
-	grib2/tables/8/4.2.192.190.table\
-	grib2/tables/8/4.2.192.191.table\
-	grib2/tables/8/4.2.192.192.table\
-	grib2/tables/8/4.2.192.193.table\
-	grib2/tables/8/4.2.192.194.table\
-	grib2/tables/8/4.2.192.195.table\
-	grib2/tables/8/4.2.192.196.table\
-	grib2/tables/8/4.2.192.197.table\
-	grib2/tables/8/4.2.192.198.table\
-	grib2/tables/8/4.2.192.199.table\
-	grib2/tables/8/4.2.192.2.table\
-	grib2/tables/8/4.2.192.20.table\
-	grib2/tables/8/4.2.192.200.table\
-	grib2/tables/8/4.2.192.201.table\
-	grib2/tables/8/4.2.192.202.table\
-	grib2/tables/8/4.2.192.203.table\
-	grib2/tables/8/4.2.192.204.table\
-	grib2/tables/8/4.2.192.205.table\
-	grib2/tables/8/4.2.192.206.table\
-	grib2/tables/8/4.2.192.207.table\
-	grib2/tables/8/4.2.192.208.table\
-	grib2/tables/8/4.2.192.209.table\
-	grib2/tables/8/4.2.192.21.table\
-	grib2/tables/8/4.2.192.210.table\
-	grib2/tables/8/4.2.192.211.table\
-	grib2/tables/8/4.2.192.212.table\
-	grib2/tables/8/4.2.192.213.table\
-	grib2/tables/8/4.2.192.214.table\
-	grib2/tables/8/4.2.192.215.table\
-	grib2/tables/8/4.2.192.216.table\
-	grib2/tables/8/4.2.192.217.table\
-	grib2/tables/8/4.2.192.218.table\
-	grib2/tables/8/4.2.192.219.table\
-	grib2/tables/8/4.2.192.22.table\
-	grib2/tables/8/4.2.192.220.table\
-	grib2/tables/8/4.2.192.221.table\
-	grib2/tables/8/4.2.192.222.table\
-	grib2/tables/8/4.2.192.223.table\
-	grib2/tables/8/4.2.192.224.table\
-	grib2/tables/8/4.2.192.225.table\
-	grib2/tables/8/4.2.192.226.table\
-	grib2/tables/8/4.2.192.227.table\
-	grib2/tables/8/4.2.192.228.table\
-	grib2/tables/8/4.2.192.229.table\
-	grib2/tables/8/4.2.192.23.table\
-	grib2/tables/8/4.2.192.230.table\
-	grib2/tables/8/4.2.192.231.table\
-	grib2/tables/8/4.2.192.232.table\
-	grib2/tables/8/4.2.192.233.table\
-	grib2/tables/8/4.2.192.234.table\
-	grib2/tables/8/4.2.192.235.table\
-	grib2/tables/8/4.2.192.236.table\
-	grib2/tables/8/4.2.192.237.table\
-	grib2/tables/8/4.2.192.238.table\
-	grib2/tables/8/4.2.192.239.table\
-	grib2/tables/8/4.2.192.24.table\
-	grib2/tables/8/4.2.192.240.table\
-	grib2/tables/8/4.2.192.241.table\
-	grib2/tables/8/4.2.192.242.table\
-	grib2/tables/8/4.2.192.243.table\
-	grib2/tables/8/4.2.192.244.table\
-	grib2/tables/8/4.2.192.245.table\
-	grib2/tables/8/4.2.192.246.table\
-	grib2/tables/8/4.2.192.247.table\
-	grib2/tables/8/4.2.192.248.table\
-	grib2/tables/8/4.2.192.249.table\
-	grib2/tables/8/4.2.192.25.table\
-	grib2/tables/8/4.2.192.250.table\
-	grib2/tables/8/4.2.192.251.table\
-	grib2/tables/8/4.2.192.252.table\
-	grib2/tables/8/4.2.192.253.table\
-	grib2/tables/8/4.2.192.254.table\
-	grib2/tables/8/4.2.192.255.table\
-	grib2/tables/8/4.2.192.26.table\
-	grib2/tables/8/4.2.192.27.table\
-	grib2/tables/8/4.2.192.28.table\
-	grib2/tables/8/4.2.192.29.table\
-	grib2/tables/8/4.2.192.3.table\
-	grib2/tables/8/4.2.192.30.table\
-	grib2/tables/8/4.2.192.31.table\
-	grib2/tables/8/4.2.192.32.table\
-	grib2/tables/8/4.2.192.33.table\
-	grib2/tables/8/4.2.192.34.table\
-	grib2/tables/8/4.2.192.35.table\
-	grib2/tables/8/4.2.192.36.table\
-	grib2/tables/8/4.2.192.37.table\
-	grib2/tables/8/4.2.192.38.table\
-	grib2/tables/8/4.2.192.39.table\
-	grib2/tables/8/4.2.192.4.table\
-	grib2/tables/8/4.2.192.40.table\
-	grib2/tables/8/4.2.192.41.table\
-	grib2/tables/8/4.2.192.42.table\
-	grib2/tables/8/4.2.192.43.table\
-	grib2/tables/8/4.2.192.44.table\
-	grib2/tables/8/4.2.192.45.table\
-	grib2/tables/8/4.2.192.46.table\
-	grib2/tables/8/4.2.192.47.table\
-	grib2/tables/8/4.2.192.48.table\
-	grib2/tables/8/4.2.192.49.table\
-	grib2/tables/8/4.2.192.5.table\
-	grib2/tables/8/4.2.192.50.table\
-	grib2/tables/8/4.2.192.51.table\
-	grib2/tables/8/4.2.192.52.table\
-	grib2/tables/8/4.2.192.53.table\
-	grib2/tables/8/4.2.192.54.table\
-	grib2/tables/8/4.2.192.55.table\
-	grib2/tables/8/4.2.192.56.table\
-	grib2/tables/8/4.2.192.57.table\
-	grib2/tables/8/4.2.192.58.table\
-	grib2/tables/8/4.2.192.59.table\
-	grib2/tables/8/4.2.192.6.table\
-	grib2/tables/8/4.2.192.60.table\
-	grib2/tables/8/4.2.192.61.table\
-	grib2/tables/8/4.2.192.62.table\
-	grib2/tables/8/4.2.192.63.table\
-	grib2/tables/8/4.2.192.64.table\
-	grib2/tables/8/4.2.192.65.table\
-	grib2/tables/8/4.2.192.66.table\
-	grib2/tables/8/4.2.192.67.table\
-	grib2/tables/8/4.2.192.68.table\
-	grib2/tables/8/4.2.192.69.table\
-	grib2/tables/8/4.2.192.7.table\
-	grib2/tables/8/4.2.192.70.table\
-	grib2/tables/8/4.2.192.71.table\
-	grib2/tables/8/4.2.192.72.table\
-	grib2/tables/8/4.2.192.73.table\
-	grib2/tables/8/4.2.192.74.table\
-	grib2/tables/8/4.2.192.75.table\
-	grib2/tables/8/4.2.192.76.table\
-	grib2/tables/8/4.2.192.77.table\
-	grib2/tables/8/4.2.192.78.table\
-	grib2/tables/8/4.2.192.79.table\
-	grib2/tables/8/4.2.192.8.table\
-	grib2/tables/8/4.2.192.80.table\
-	grib2/tables/8/4.2.192.81.table\
-	grib2/tables/8/4.2.192.82.table\
-	grib2/tables/8/4.2.192.83.table\
-	grib2/tables/8/4.2.192.84.table\
-	grib2/tables/8/4.2.192.85.table\
-	grib2/tables/8/4.2.192.86.table\
-	grib2/tables/8/4.2.192.87.table\
-	grib2/tables/8/4.2.192.88.table\
-	grib2/tables/8/4.2.192.89.table\
-	grib2/tables/8/4.2.192.9.table\
-	grib2/tables/8/4.2.192.90.table\
-	grib2/tables/8/4.2.192.91.table\
-	grib2/tables/8/4.2.192.92.table\
-	grib2/tables/8/4.2.192.93.table\
-	grib2/tables/8/4.2.192.94.table\
-	grib2/tables/8/4.2.192.95.table\
-	grib2/tables/8/4.2.192.96.table\
-	grib2/tables/8/4.2.192.97.table\
-	grib2/tables/8/4.2.192.98.table\
-	grib2/tables/8/4.2.192.99.table\
-	grib2/tables/8/4.2.2.0.table\
-	grib2/tables/8/4.2.2.3.table\
-	grib2/tables/8/4.2.2.4.table\
-	grib2/tables/8/4.2.3.0.table\
-	grib2/tables/8/4.2.3.1.table\
-	grib2/tables/8/4.2.table\
-	grib2/tables/8/4.201.table\
-	grib2/tables/8/4.202.table\
-	grib2/tables/8/4.203.table\
-	grib2/tables/8/4.204.table\
-	grib2/tables/8/4.205.table\
-	grib2/tables/8/4.206.table\
-	grib2/tables/8/4.207.table\
-	grib2/tables/8/4.208.table\
-	grib2/tables/8/4.209.table\
-	grib2/tables/8/4.210.table\
-	grib2/tables/8/4.211.table\
-	grib2/tables/8/4.212.table\
-	grib2/tables/8/4.213.table\
-	grib2/tables/8/4.215.table\
-	grib2/tables/8/4.216.table\
-	grib2/tables/8/4.217.table\
-	grib2/tables/8/4.218.table\
-	grib2/tables/8/4.219.table\
-	grib2/tables/8/4.220.table\
-	grib2/tables/8/4.221.table\
-	grib2/tables/8/4.222.table\
-	grib2/tables/8/4.223.table\
-	grib2/tables/8/4.224.table\
-	grib2/tables/8/4.230.table\
-	grib2/tables/8/4.233.table\
-	grib2/tables/8/4.3.table\
-	grib2/tables/8/4.4.table\
-	grib2/tables/8/4.5.table\
-	grib2/tables/8/4.6.table\
-	grib2/tables/8/4.7.table\
-	grib2/tables/8/4.8.table\
-	grib2/tables/8/4.9.table\
-	grib2/tables/8/4.91.table\
-	grib2/tables/8/5.0.table\
-	grib2/tables/8/5.1.table\
-	grib2/tables/8/5.2.table\
-	grib2/tables/8/5.3.table\
-	grib2/tables/8/5.4.table\
-	grib2/tables/8/5.40.table\
-	grib2/tables/8/5.40000.table\
-	grib2/tables/8/5.5.table\
-	grib2/tables/8/5.50002.table\
-	grib2/tables/8/5.6.table\
-	grib2/tables/8/5.7.table\
-	grib2/tables/8/5.8.table\
-	grib2/tables/8/5.9.table\
-	grib2/tables/8/6.0.table\
-	grib2/tables/8/stepType.table
-
-definitionsgrib2_tables_9dir = ${datarootdir}/eccodes/definitions/grib2/tables/9
-dist_definitionsgrib2_tables_9_DATA = \
-	grib2/tables/9/0.0.table\
-	grib2/tables/9/1.0.table\
-	grib2/tables/9/1.1.table\
-	grib2/tables/9/1.2.table\
-	grib2/tables/9/1.3.table\
-	grib2/tables/9/1.4.table\
-	grib2/tables/9/3.0.table\
-	grib2/tables/9/3.1.table\
-	grib2/tables/9/3.10.table\
-	grib2/tables/9/3.11.table\
-	grib2/tables/9/3.15.table\
-	grib2/tables/9/3.2.table\
-	grib2/tables/9/3.20.table\
-	grib2/tables/9/3.21.table\
-	grib2/tables/9/3.3.table\
-	grib2/tables/9/3.4.table\
-	grib2/tables/9/3.5.table\
-	grib2/tables/9/3.6.table\
-	grib2/tables/9/3.7.table\
-	grib2/tables/9/3.8.table\
-	grib2/tables/9/3.9.table\
-	grib2/tables/9/4.0.table\
-	grib2/tables/9/4.1.0.table\
-	grib2/tables/9/4.1.1.table\
-	grib2/tables/9/4.1.10.table\
-	grib2/tables/9/4.1.192.table\
-	grib2/tables/9/4.1.2.table\
-	grib2/tables/9/4.1.3.table\
-	grib2/tables/9/4.1.table\
-	grib2/tables/9/4.10.table\
-	grib2/tables/9/4.11.table\
-	grib2/tables/9/4.12.table\
-	grib2/tables/9/4.13.table\
-	grib2/tables/9/4.14.table\
-	grib2/tables/9/4.15.table\
-	grib2/tables/9/4.151.table\
-	grib2/tables/9/4.192.table\
-	grib2/tables/9/4.2.0.0.table\
-	grib2/tables/9/4.2.0.1.table\
-	grib2/tables/9/4.2.0.13.table\
-	grib2/tables/9/4.2.0.14.table\
-	grib2/tables/9/4.2.0.15.table\
-	grib2/tables/9/4.2.0.16.table\
-	grib2/tables/9/4.2.0.18.table\
-	grib2/tables/9/4.2.0.19.table\
-	grib2/tables/9/4.2.0.190.table\
-	grib2/tables/9/4.2.0.191.table\
-	grib2/tables/9/4.2.0.2.table\
-	grib2/tables/9/4.2.0.20.table\
-	grib2/tables/9/4.2.0.3.table\
-	grib2/tables/9/4.2.0.4.table\
-	grib2/tables/9/4.2.0.5.table\
-	grib2/tables/9/4.2.0.6.table\
-	grib2/tables/9/4.2.0.7.table\
-	grib2/tables/9/4.2.1.0.table\
-	grib2/tables/9/4.2.1.1.table\
-	grib2/tables/9/4.2.1.2.table\
-	grib2/tables/9/4.2.10.0.table\
-	grib2/tables/9/4.2.10.1.table\
-	grib2/tables/9/4.2.10.191.table\
-	grib2/tables/9/4.2.10.2.table\
-	grib2/tables/9/4.2.10.3.table\
-	grib2/tables/9/4.2.10.4.table\
-	grib2/tables/9/4.2.192.0.table\
-	grib2/tables/9/4.2.192.1.table\
-	grib2/tables/9/4.2.192.10.table\
-	grib2/tables/9/4.2.192.100.table\
-	grib2/tables/9/4.2.192.101.table\
-	grib2/tables/9/4.2.192.102.table\
-	grib2/tables/9/4.2.192.103.table\
-	grib2/tables/9/4.2.192.104.table\
-	grib2/tables/9/4.2.192.105.table\
-	grib2/tables/9/4.2.192.106.table\
-	grib2/tables/9/4.2.192.107.table\
-	grib2/tables/9/4.2.192.108.table\
-	grib2/tables/9/4.2.192.109.table\
-	grib2/tables/9/4.2.192.11.table\
-	grib2/tables/9/4.2.192.110.table\
-	grib2/tables/9/4.2.192.111.table\
-	grib2/tables/9/4.2.192.112.table\
-	grib2/tables/9/4.2.192.113.table\
-	grib2/tables/9/4.2.192.114.table\
-	grib2/tables/9/4.2.192.115.table\
-	grib2/tables/9/4.2.192.116.table\
-	grib2/tables/9/4.2.192.117.table\
-	grib2/tables/9/4.2.192.118.table\
-	grib2/tables/9/4.2.192.119.table\
-	grib2/tables/9/4.2.192.12.table\
-	grib2/tables/9/4.2.192.120.table\
-	grib2/tables/9/4.2.192.121.table\
-	grib2/tables/9/4.2.192.122.table\
-	grib2/tables/9/4.2.192.123.table\
-	grib2/tables/9/4.2.192.124.table\
-	grib2/tables/9/4.2.192.125.table\
-	grib2/tables/9/4.2.192.126.table\
-	grib2/tables/9/4.2.192.127.table\
-	grib2/tables/9/4.2.192.128.table\
-	grib2/tables/9/4.2.192.129.table\
-	grib2/tables/9/4.2.192.13.table\
-	grib2/tables/9/4.2.192.130.table\
-	grib2/tables/9/4.2.192.131.table\
-	grib2/tables/9/4.2.192.132.table\
-	grib2/tables/9/4.2.192.133.table\
-	grib2/tables/9/4.2.192.134.table\
-	grib2/tables/9/4.2.192.135.table\
-	grib2/tables/9/4.2.192.136.table\
-	grib2/tables/9/4.2.192.137.table\
-	grib2/tables/9/4.2.192.138.table\
-	grib2/tables/9/4.2.192.139.table\
-	grib2/tables/9/4.2.192.14.table\
-	grib2/tables/9/4.2.192.140.table\
-	grib2/tables/9/4.2.192.141.table\
-	grib2/tables/9/4.2.192.142.table\
-	grib2/tables/9/4.2.192.143.table\
-	grib2/tables/9/4.2.192.144.table\
-	grib2/tables/9/4.2.192.145.table\
-	grib2/tables/9/4.2.192.146.table\
-	grib2/tables/9/4.2.192.147.table\
-	grib2/tables/9/4.2.192.148.table\
-	grib2/tables/9/4.2.192.149.table\
-	grib2/tables/9/4.2.192.15.table\
-	grib2/tables/9/4.2.192.150.table\
-	grib2/tables/9/4.2.192.151.table\
-	grib2/tables/9/4.2.192.152.table\
-	grib2/tables/9/4.2.192.153.table\
-	grib2/tables/9/4.2.192.154.table\
-	grib2/tables/9/4.2.192.155.table\
-	grib2/tables/9/4.2.192.156.table\
-	grib2/tables/9/4.2.192.157.table\
-	grib2/tables/9/4.2.192.158.table\
-	grib2/tables/9/4.2.192.159.table\
-	grib2/tables/9/4.2.192.16.table\
-	grib2/tables/9/4.2.192.160.table\
-	grib2/tables/9/4.2.192.161.table\
-	grib2/tables/9/4.2.192.162.table\
-	grib2/tables/9/4.2.192.163.table\
-	grib2/tables/9/4.2.192.164.table\
-	grib2/tables/9/4.2.192.165.table\
-	grib2/tables/9/4.2.192.166.table\
-	grib2/tables/9/4.2.192.167.table\
-	grib2/tables/9/4.2.192.168.table\
-	grib2/tables/9/4.2.192.169.table\
-	grib2/tables/9/4.2.192.17.table\
-	grib2/tables/9/4.2.192.170.table\
-	grib2/tables/9/4.2.192.171.table\
-	grib2/tables/9/4.2.192.172.table\
-	grib2/tables/9/4.2.192.173.table\
-	grib2/tables/9/4.2.192.174.table\
-	grib2/tables/9/4.2.192.175.table\
-	grib2/tables/9/4.2.192.176.table\
-	grib2/tables/9/4.2.192.177.table\
-	grib2/tables/9/4.2.192.178.table\
-	grib2/tables/9/4.2.192.179.table\
-	grib2/tables/9/4.2.192.18.table\
-	grib2/tables/9/4.2.192.180.table\
-	grib2/tables/9/4.2.192.181.table\
-	grib2/tables/9/4.2.192.182.table\
-	grib2/tables/9/4.2.192.183.table\
-	grib2/tables/9/4.2.192.184.table\
-	grib2/tables/9/4.2.192.185.table\
-	grib2/tables/9/4.2.192.186.table\
-	grib2/tables/9/4.2.192.187.table\
-	grib2/tables/9/4.2.192.188.table\
-	grib2/tables/9/4.2.192.189.table\
-	grib2/tables/9/4.2.192.19.table\
-	grib2/tables/9/4.2.192.190.table\
-	grib2/tables/9/4.2.192.191.table\
-	grib2/tables/9/4.2.192.192.table\
-	grib2/tables/9/4.2.192.193.table\
-	grib2/tables/9/4.2.192.194.table\
-	grib2/tables/9/4.2.192.195.table\
-	grib2/tables/9/4.2.192.196.table\
-	grib2/tables/9/4.2.192.197.table\
-	grib2/tables/9/4.2.192.198.table\
-	grib2/tables/9/4.2.192.199.table\
-	grib2/tables/9/4.2.192.2.table\
-	grib2/tables/9/4.2.192.20.table\
-	grib2/tables/9/4.2.192.200.table\
-	grib2/tables/9/4.2.192.201.table\
-	grib2/tables/9/4.2.192.202.table\
-	grib2/tables/9/4.2.192.203.table\
-	grib2/tables/9/4.2.192.204.table\
-	grib2/tables/9/4.2.192.205.table\
-	grib2/tables/9/4.2.192.206.table\
-	grib2/tables/9/4.2.192.207.table\
-	grib2/tables/9/4.2.192.208.table\
-	grib2/tables/9/4.2.192.209.table\
-	grib2/tables/9/4.2.192.21.table\
-	grib2/tables/9/4.2.192.210.table\
-	grib2/tables/9/4.2.192.211.table\
-	grib2/tables/9/4.2.192.212.table\
-	grib2/tables/9/4.2.192.213.table\
-	grib2/tables/9/4.2.192.214.table\
-	grib2/tables/9/4.2.192.215.table\
-	grib2/tables/9/4.2.192.216.table\
-	grib2/tables/9/4.2.192.217.table\
-	grib2/tables/9/4.2.192.218.table\
-	grib2/tables/9/4.2.192.219.table\
-	grib2/tables/9/4.2.192.22.table\
-	grib2/tables/9/4.2.192.220.table\
-	grib2/tables/9/4.2.192.221.table\
-	grib2/tables/9/4.2.192.222.table\
-	grib2/tables/9/4.2.192.223.table\
-	grib2/tables/9/4.2.192.224.table\
-	grib2/tables/9/4.2.192.225.table\
-	grib2/tables/9/4.2.192.226.table\
-	grib2/tables/9/4.2.192.227.table\
-	grib2/tables/9/4.2.192.228.table\
-	grib2/tables/9/4.2.192.229.table\
-	grib2/tables/9/4.2.192.23.table\
-	grib2/tables/9/4.2.192.230.table\
-	grib2/tables/9/4.2.192.231.table\
-	grib2/tables/9/4.2.192.232.table\
-	grib2/tables/9/4.2.192.233.table\
-	grib2/tables/9/4.2.192.234.table\
-	grib2/tables/9/4.2.192.235.table\
-	grib2/tables/9/4.2.192.236.table\
-	grib2/tables/9/4.2.192.237.table\
-	grib2/tables/9/4.2.192.238.table\
-	grib2/tables/9/4.2.192.239.table\
-	grib2/tables/9/4.2.192.24.table\
-	grib2/tables/9/4.2.192.240.table\
-	grib2/tables/9/4.2.192.241.table\
-	grib2/tables/9/4.2.192.242.table\
-	grib2/tables/9/4.2.192.243.table\
-	grib2/tables/9/4.2.192.244.table\
-	grib2/tables/9/4.2.192.245.table\
-	grib2/tables/9/4.2.192.246.table\
-	grib2/tables/9/4.2.192.247.table\
-	grib2/tables/9/4.2.192.248.table\
-	grib2/tables/9/4.2.192.249.table\
-	grib2/tables/9/4.2.192.25.table\
-	grib2/tables/9/4.2.192.250.table\
-	grib2/tables/9/4.2.192.251.table\
-	grib2/tables/9/4.2.192.252.table\
-	grib2/tables/9/4.2.192.253.table\
-	grib2/tables/9/4.2.192.254.table\
-	grib2/tables/9/4.2.192.255.table\
-	grib2/tables/9/4.2.192.26.table\
-	grib2/tables/9/4.2.192.27.table\
-	grib2/tables/9/4.2.192.28.table\
-	grib2/tables/9/4.2.192.29.table\
-	grib2/tables/9/4.2.192.3.table\
-	grib2/tables/9/4.2.192.30.table\
-	grib2/tables/9/4.2.192.31.table\
-	grib2/tables/9/4.2.192.32.table\
-	grib2/tables/9/4.2.192.33.table\
-	grib2/tables/9/4.2.192.34.table\
-	grib2/tables/9/4.2.192.35.table\
-	grib2/tables/9/4.2.192.36.table\
-	grib2/tables/9/4.2.192.37.table\
-	grib2/tables/9/4.2.192.38.table\
-	grib2/tables/9/4.2.192.39.table\
-	grib2/tables/9/4.2.192.4.table\
-	grib2/tables/9/4.2.192.40.table\
-	grib2/tables/9/4.2.192.41.table\
-	grib2/tables/9/4.2.192.42.table\
-	grib2/tables/9/4.2.192.43.table\
-	grib2/tables/9/4.2.192.44.table\
-	grib2/tables/9/4.2.192.45.table\
-	grib2/tables/9/4.2.192.46.table\
-	grib2/tables/9/4.2.192.47.table\
-	grib2/tables/9/4.2.192.48.table\
-	grib2/tables/9/4.2.192.49.table\
-	grib2/tables/9/4.2.192.5.table\
-	grib2/tables/9/4.2.192.50.table\
-	grib2/tables/9/4.2.192.51.table\
-	grib2/tables/9/4.2.192.52.table\
-	grib2/tables/9/4.2.192.53.table\
-	grib2/tables/9/4.2.192.54.table\
-	grib2/tables/9/4.2.192.55.table\
-	grib2/tables/9/4.2.192.56.table\
-	grib2/tables/9/4.2.192.57.table\
-	grib2/tables/9/4.2.192.58.table\
-	grib2/tables/9/4.2.192.59.table\
-	grib2/tables/9/4.2.192.6.table\
-	grib2/tables/9/4.2.192.60.table\
-	grib2/tables/9/4.2.192.61.table\
-	grib2/tables/9/4.2.192.62.table\
-	grib2/tables/9/4.2.192.63.table\
-	grib2/tables/9/4.2.192.64.table\
-	grib2/tables/9/4.2.192.65.table\
-	grib2/tables/9/4.2.192.66.table\
-	grib2/tables/9/4.2.192.67.table\
-	grib2/tables/9/4.2.192.68.table\
-	grib2/tables/9/4.2.192.69.table\
-	grib2/tables/9/4.2.192.7.table\
-	grib2/tables/9/4.2.192.70.table\
-	grib2/tables/9/4.2.192.71.table\
-	grib2/tables/9/4.2.192.72.table\
-	grib2/tables/9/4.2.192.73.table\
-	grib2/tables/9/4.2.192.74.table\
-	grib2/tables/9/4.2.192.75.table\
-	grib2/tables/9/4.2.192.76.table\
-	grib2/tables/9/4.2.192.77.table\
-	grib2/tables/9/4.2.192.78.table\
-	grib2/tables/9/4.2.192.79.table\
-	grib2/tables/9/4.2.192.8.table\
-	grib2/tables/9/4.2.192.80.table\
-	grib2/tables/9/4.2.192.81.table\
-	grib2/tables/9/4.2.192.82.table\
-	grib2/tables/9/4.2.192.83.table\
-	grib2/tables/9/4.2.192.84.table\
-	grib2/tables/9/4.2.192.85.table\
-	grib2/tables/9/4.2.192.86.table\
-	grib2/tables/9/4.2.192.87.table\
-	grib2/tables/9/4.2.192.88.table\
-	grib2/tables/9/4.2.192.89.table\
-	grib2/tables/9/4.2.192.9.table\
-	grib2/tables/9/4.2.192.90.table\
-	grib2/tables/9/4.2.192.91.table\
-	grib2/tables/9/4.2.192.92.table\
-	grib2/tables/9/4.2.192.93.table\
-	grib2/tables/9/4.2.192.94.table\
-	grib2/tables/9/4.2.192.95.table\
-	grib2/tables/9/4.2.192.96.table\
-	grib2/tables/9/4.2.192.97.table\
-	grib2/tables/9/4.2.192.98.table\
-	grib2/tables/9/4.2.192.99.table\
-	grib2/tables/9/4.2.2.0.table\
-	grib2/tables/9/4.2.2.3.table\
-	grib2/tables/9/4.2.2.4.table\
-	grib2/tables/9/4.2.3.0.table\
-	grib2/tables/9/4.2.3.1.table\
-	grib2/tables/9/4.2.table\
-	grib2/tables/9/4.201.table\
-	grib2/tables/9/4.202.table\
-	grib2/tables/9/4.203.table\
-	grib2/tables/9/4.204.table\
-	grib2/tables/9/4.205.table\
-	grib2/tables/9/4.206.table\
-	grib2/tables/9/4.207.table\
-	grib2/tables/9/4.208.table\
-	grib2/tables/9/4.209.table\
-	grib2/tables/9/4.210.table\
-	grib2/tables/9/4.211.table\
-	grib2/tables/9/4.212.table\
-	grib2/tables/9/4.213.table\
-	grib2/tables/9/4.215.table\
-	grib2/tables/9/4.216.table\
-	grib2/tables/9/4.217.table\
-	grib2/tables/9/4.218.table\
-	grib2/tables/9/4.219.table\
-	grib2/tables/9/4.220.table\
-	grib2/tables/9/4.221.table\
-	grib2/tables/9/4.222.table\
-	grib2/tables/9/4.223.table\
-	grib2/tables/9/4.224.table\
-	grib2/tables/9/4.227.table\
-	grib2/tables/9/4.230.table\
-	grib2/tables/9/4.233.table\
-	grib2/tables/9/4.234.table\
-	grib2/tables/9/4.235.table\
-	grib2/tables/9/4.3.table\
-	grib2/tables/9/4.4.table\
-	grib2/tables/9/4.5.table\
-	grib2/tables/9/4.6.table\
-	grib2/tables/9/4.7.table\
-	grib2/tables/9/4.8.table\
-	grib2/tables/9/4.9.table\
-	grib2/tables/9/4.91.table\
-	grib2/tables/9/5.0.table\
-	grib2/tables/9/5.1.table\
-	grib2/tables/9/5.2.table\
-	grib2/tables/9/5.3.table\
-	grib2/tables/9/5.4.table\
-	grib2/tables/9/5.40.table\
-	grib2/tables/9/5.40000.table\
-	grib2/tables/9/5.5.table\
-	grib2/tables/9/5.50002.table\
-	grib2/tables/9/5.6.table\
-	grib2/tables/9/5.7.table\
-	grib2/tables/9/5.8.table\
-	grib2/tables/9/5.9.table\
-	grib2/tables/9/6.0.table\
-	grib2/tables/9/stepType.table
-
-definitionsgrib2_tables_local_ecmfdir = ${datarootdir}/eccodes/definitions/grib2/tables/local/ecmf
-dist_definitionsgrib2_tables_local_ecmf_DATA = \
-	grib2/tables/local/ecmf/obstat.1.0.table\
-	grib2/tables/local/ecmf/obstat.10.0.table\
-	grib2/tables/local/ecmf/obstat.11.0.table\
-	grib2/tables/local/ecmf/obstat.2.0.table\
-	grib2/tables/local/ecmf/obstat.3.0.table\
-	grib2/tables/local/ecmf/obstat.4.0.table\
-	grib2/tables/local/ecmf/obstat.5.0.table\
-	grib2/tables/local/ecmf/obstat.6.0.table\
-	grib2/tables/local/ecmf/obstat.7.0.table\
-	grib2/tables/local/ecmf/obstat.8.0.table\
-	grib2/tables/local/ecmf/obstat.9.0.table\
-	grib2/tables/local/ecmf/obstat.reporttype.table\
-	grib2/tables/local/ecmf/obstat.varno.table
-
-definitionsgrib2_tables_local_ecmf_4dir = ${datarootdir}/eccodes/definitions/grib2/tables/local/ecmf/4
-dist_definitionsgrib2_tables_local_ecmf_4_DATA = \
-	grib2/tables/local/ecmf/4/1.2.table
-
-definitionsgtsdir = ${datarootdir}/eccodes/definitions/gts
-dist_definitionsgts_DATA = \
-	gts/boot.def
-
-definitionshdf5dir = ${datarootdir}/eccodes/definitions/hdf5
-dist_definitionshdf5_DATA = \
-	hdf5/boot.def
-
-definitionsmarsdir = ${datarootdir}/eccodes/definitions/mars
-dist_definitionsmars_DATA = \
-	mars/base.def\
-	mars/class.table\
-	mars/default_labeling.def\
-	mars/domain.96.table\
-	mars/domain.table\
-	mars/grib1.amap.an.def\
-	mars/grib1.dacl.pb.def\
-	mars/grib1.dacw.pb.def\
-	mars/grib1.dcda.4i.def\
-	mars/grib1.dcda.me.def\
-	mars/grib1.dcda.sim.def\
-	mars/grib1.edmm.an.def\
-	mars/grib1.edmm.cl.def\
-	mars/grib1.edmm.fc.def\
-	mars/grib1.edmm.fg.def\
-	mars/grib1.edmm.ia.def\
-	mars/grib1.edmm.ssd.def\
-	mars/grib1.edmo.an.def\
-	mars/grib1.edmo.cl.def\
-	mars/grib1.edmo.fc.def\
-	mars/grib1.edmo.ssd.def\
-	mars/grib1.efhc.cf.def\
-	mars/grib1.efhc.icp.def\
-	mars/grib1.efhc.pf.def\
-	mars/grib1.efho.cf.def\
-	mars/grib1.efho.pf.def\
-	mars/grib1.efhs.cd.def\
-	mars/grib1.efhs.ed.def\
-	mars/grib1.efhs.em.def\
-	mars/grib1.efhs.es.def\
-	mars/grib1.efhs.taem.def\
-	mars/grib1.efhs.taes.def\
-	mars/grib1.efov.pf.def\
-	mars/grib1.ehmm.em.def\
-	mars/grib1.elda.4i.def\
-	mars/grib1.elda.4v.def\
-	mars/grib1.elda.an.def\
-	mars/grib1.elda.ea.def\
-	mars/grib1.elda.ef.def\
-	mars/grib1.elda.em.def\
-	mars/grib1.elda.es.def\
-	mars/grib1.elda.fc.def\
-	mars/grib1.elda.me.def\
-	mars/grib1.elda.ses.def\
-	mars/grib1.enda.4v.def\
-	mars/grib1.enda.an.def\
-	mars/grib1.enda.def\
-	mars/grib1.enda.ea.def\
-	mars/grib1.enda.ef.def\
-	mars/grib1.enda.em.def\
-	mars/grib1.enda.es.def\
-	mars/grib1.enda.fc.def\
-	mars/grib1.enda.ssd.def\
-	mars/grib1.enda.sv.def\
-	mars/grib1.enda.svar.def\
-	mars/grib1.enfh.cf.def\
-	mars/grib1.enfh.fcmax.def\
-	mars/grib1.enfh.fcmean.def\
-	mars/grib1.enfh.fcmin.def\
-	mars/grib1.enfh.fcstdev.def\
-	mars/grib1.enfh.ff.def\
-	mars/grib1.enfh.icp.def\
-	mars/grib1.enfh.pf.def\
-	mars/grib1.enfh.tims.def\
-	mars/grib1.enfo.cf.def\
-	mars/grib1.enfo.ci.def\
-	mars/grib1.enfo.cm.def\
-	mars/grib1.enfo.cr.def\
-	mars/grib1.enfo.cs.def\
-	mars/grib1.enfo.cv.def\
-	mars/grib1.enfo.ed.def\
-	mars/grib1.enfo.ef.def\
-	mars/grib1.enfo.efi.def\
-	mars/grib1.enfo.efic.def\
-	mars/grib1.enfo.em.def\
-	mars/grib1.enfo.ep.def\
-	mars/grib1.enfo.es.def\
-	mars/grib1.enfo.fc.def\
-	mars/grib1.enfo.fcmax.def\
-	mars/grib1.enfo.fcmean.def\
-	mars/grib1.enfo.fcmin.def\
-	mars/grib1.enfo.fcstdev.def\
-	mars/grib1.enfo.ff.def\
-	mars/grib1.enfo.fp.def\
-	mars/grib1.enfo.icp.def\
-	mars/grib1.enfo.pb.def\
-	mars/grib1.enfo.pd.def\
-	mars/grib1.enfo.pf.def\
-	mars/grib1.enfo.sot.def\
-	mars/grib1.enfo.sv.def\
-	mars/grib1.enfo.svar.def\
-	mars/grib1.enfo.taem.def\
-	mars/grib1.enfo.taes.def\
-	mars/grib1.enfo.tu.def\
-	mars/grib1.enwh.cf.def\
-	mars/grib1.enwh.fcmax.def\
-	mars/grib1.enwh.fcmean.def\
-	mars/grib1.enwh.fcmin.def\
-	mars/grib1.enwh.fcstdev.def\
-	mars/grib1.enwh.pf.def\
-	mars/grib1.esmm.em.def\
-	mars/grib1.espd.an.def\
-	mars/grib1.ewda.4v.def\
-	mars/grib1.ewda.an.def\
-	mars/grib1.ewda.def\
-	mars/grib1.ewda.fc.def\
-	mars/grib1.ewhc.cf.def\
-	mars/grib1.ewhc.pf.def\
-	mars/grib1.ewho.cf.def\
-	mars/grib1.ewho.pf.def\
-	mars/grib1.ewla.4v.def\
-	mars/grib1.ewla.an.def\
-	mars/grib1.ewla.fc.def\
-	mars/grib1.ewmm.an.def\
-	mars/grib1.ewmm.cl.def\
-	mars/grib1.ewmm.fc.def\
-	mars/grib1.ewmo.an.def\
-	mars/grib1.ewmo.cl.def\
-	mars/grib1.ewmo.def\
-	mars/grib1.ewmo.fc.def\
-	mars/grib1.gfas.ga.def\
-	mars/grib1.gfas.gsd.def\
-	mars/grib1.kwbc.pf.def\
-	mars/grib1.lwda.4i.def\
-	mars/grib1.lwda.4v.def\
-	mars/grib1.lwda.an.def\
-	mars/grib1.lwda.ea.def\
-	mars/grib1.lwda.ef.def\
-	mars/grib1.lwda.fc.def\
-	mars/grib1.lwda.me.def\
-	mars/grib1.lwwv.4v.def\
-	mars/grib1.lwwv.an.def\
-	mars/grib1.lwwv.fc.def\
-	mars/grib1.maed.an.def\
-	mars/grib1.maed.fc.def\
-	mars/grib1.mawv.fc.def\
-	mars/grib1.mdfa.fc.def\
-	mars/grib1.me.def\
-	mars/grib1.mfam.em.def\
-	mars/grib1.mfam.fcmean.def\
-	mars/grib1.mfam.fp.def\
-	mars/grib1.mfam.pb.def\
-	mars/grib1.mfam.pd.def\
-	mars/grib1.mfhm.em.def\
-	mars/grib1.mfhm.es.def\
-	mars/grib1.mfhm.fcmax.def\
-	mars/grib1.mfhm.fcmean.def\
-	mars/grib1.mfhm.fcmin.def\
-	mars/grib1.mfhm.fcstdev.def\
-	mars/grib1.mfhw.cf.def\
-	mars/grib1.mfhw.fc.def\
-	mars/grib1.mfwm.fcmax.def\
-	mars/grib1.mfwm.fcmean.def\
-	mars/grib1.mfwm.fcmin.def\
-	mars/grib1.mfwm.fcstdev.def\
-	mars/grib1.mhwm.fcmax.def\
-	mars/grib1.mhwm.fcmean.def\
-	mars/grib1.mhwm.fcmin.def\
-	mars/grib1.mhwm.fcstdev.def\
-	mars/grib1.mmaf.fc.def\
-	mars/grib1.mmaf.fcmean.def\
-	mars/grib1.mmam.fcmean.def\
-	mars/grib1.mmsa.em.def\
-	mars/grib1.mmsa.fcmean.def\
-	mars/grib1.mmsf.fc.def\
-	mars/grib1.mmsf.icp.def\
-	mars/grib1.mnfc.cf.def\
-	mars/grib1.mnfc.ed.def\
-	mars/grib1.mnfc.em.def\
-	mars/grib1.mnfc.es.def\
-	mars/grib1.mnfc.fc.def\
-	mars/grib1.mnfc.ff.def\
-	mars/grib1.mnfc.icp.def\
-	mars/grib1.mnfc.of.def\
-	mars/grib1.mnfh.cf.def\
-	mars/grib1.mnfh.ed.def\
-	mars/grib1.mnfh.em.def\
-	mars/grib1.mnfh.es.def\
-	mars/grib1.mnfh.fc.def\
-	mars/grib1.mnfh.icp.def\
-	mars/grib1.mnfm.em.def\
-	mars/grib1.mnfm.es.def\
-	mars/grib1.mnfm.fcmax.def\
-	mars/grib1.mnfm.fcmean.def\
-	mars/grib1.mnfm.fcmin.def\
-	mars/grib1.mnfm.fcstdev.def\
-	mars/grib1.mnfw.cf.def\
-	mars/grib1.mnfw.fc.def\
-	mars/grib1.mnth.an.def\
-	mars/grib1.mnth.cl.def\
-	mars/grib1.mnth.fc.def\
-	mars/grib1.mnth.fg.def\
-	mars/grib1.mnth.ia.def\
-	mars/grib1.mnth.ssd.def\
-	mars/grib1.moda.an.def\
-	mars/grib1.moda.cl.def\
-	mars/grib1.moda.fc.def\
-	mars/grib1.moda.ssd.def\
-	mars/grib1.mofc.cf.def\
-	mars/grib1.mofc.ed.def\
-	mars/grib1.mofc.em.def\
-	mars/grib1.mofc.es.def\
-	mars/grib1.mofc.fc.def\
-	mars/grib1.mofc.ff.def\
-	mars/grib1.mofc.of.def\
-	mars/grib1.mofm.fcmax.def\
-	mars/grib1.mofm.fcmean.def\
-	mars/grib1.mofm.fcmin.def\
-	mars/grib1.mofm.fcstdev.def\
-	mars/grib1.mpic.s3.def\
-	mars/grib1.msda.an.def\
-	mars/grib1.msdc.an.def\
-	mars/grib1.msdc.fc.def\
-	mars/grib1.msmm.em.def\
-	mars/grib1.msmm.fcmax.def\
-	mars/grib1.msmm.fcmean.def\
-	mars/grib1.msmm.fcmin.def\
-	mars/grib1.msmm.fcstdev.def\
-	mars/grib1.msmm.hcmean.def\
-	mars/grib1.ocea.an.def\
-	mars/grib1.ocea.ff.def\
-	mars/grib1.ocea.fx.def\
-	mars/grib1.ocea.of.def\
-	mars/grib1.ocea.or.def\
-	mars/grib1.oper.3v.def\
-	mars/grib1.oper.4i.def\
-	mars/grib1.oper.4v.def\
-	mars/grib1.oper.an.def\
-	mars/grib1.oper.ea.def\
-	mars/grib1.oper.ef.def\
-	mars/grib1.oper.fa.def\
-	mars/grib1.oper.fc.def\
-	mars/grib1.oper.fg.def\
-	mars/grib1.oper.go.def\
-	mars/grib1.oper.ia.def\
-	mars/grib1.oper.im.def\
-	mars/grib1.oper.me.def\
-	mars/grib1.oper.oi.def\
-	mars/grib1.oper.si.def\
-	mars/grib1.oper.sim.def\
-	mars/grib1.oper.ssd.def\
-	mars/grib1.scda.4i.def\
-	mars/grib1.scda.me.def\
-	mars/grib1.seap.an.def\
-	mars/grib1.seap.ef.def\
-	mars/grib1.seap.es.def\
-	mars/grib1.seap.fc.def\
-	mars/grib1.seap.sv.def\
-	mars/grib1.seap.svar.def\
-	mars/grib1.seas.an.def\
-	mars/grib1.seas.fc.def\
-	mars/grib1.seas.ff.def\
-	mars/grib1.seas.fx.def\
-	mars/grib1.seas.of.def\
-	mars/grib1.seas.or.def\
-	mars/grib1.sens.me.def\
-	mars/grib1.sens.sf.def\
-	mars/grib1.sens.sg.def\
-	mars/grib1.sfmm.em.def\
-	mars/grib1.sfmm.fcmax.def\
-	mars/grib1.sfmm.fcmean.def\
-	mars/grib1.sfmm.fcmin.def\
-	mars/grib1.sfmm.fcstdev.def\
-	mars/grib1.smma.em.def\
-	mars/grib1.smma.fcmean.def\
-	mars/grib1.supd.an.def\
-	mars/grib1.swmm.fcmax.def\
-	mars/grib1.swmm.fcmean.def\
-	mars/grib1.swmm.fcmin.def\
-	mars/grib1.swmm.fcstdev.def\
-	mars/grib1.ukmo.s3.def\
-	mars/grib1.waef.cv.def\
-	mars/grib1.waef.efi.def\
-	mars/grib1.waef.efic.def\
-	mars/grib1.waef.ep.def\
-	mars/grib1.waef.fcmax.def\
-	mars/grib1.waef.fcmean.def\
-	mars/grib1.waef.fcmin.def\
-	mars/grib1.waef.fcstdev.def\
-	mars/grib1.waef.fp.def\
-	mars/grib1.waef.pf.def\
-	mars/grib1.waef.sot.def\
-	mars/grib1.wamd.an.def\
-	mars/grib1.wamd.fc.def\
-	mars/grib1.wamf.cf.def\
-	mars/grib1.wamf.fc.def\
-	mars/grib1.wamo.an.def\
-	mars/grib1.wamo.cl.def\
-	mars/grib1.wamo.fc.def\
-	mars/grib1.wasf.fc.def\
-	mars/grib1.wave.4v.def\
-	mars/grib1.wave.an.def\
-	mars/grib1.wave.def\
-	mars/grib1.wave.fc.def\
-	mars/grib1.wave.fg.def\
-	mars/grib1.wehs.cd.def\
-	mars/grib1.wehs.ed.def\
-	mars/grib1.wehs.em.def\
-	mars/grib1.wehs.es.def\
-	mars/grib1.weov.pf.def\
-	mars/grib1.wmfm.fcmax.def\
-	mars/grib1.wmfm.fcmean.def\
-	mars/grib1.wmfm.fcmin.def\
-	mars/grib1.wmfm.fcstdev.def\
-	mars/make_type_switch_case.sh\
-	mars/marsTypeConcept.def\
-	mars/model.96.table\
-	mars/stream.table\
-	mars/type.table\
-	mars/wave_domain.def
-
-definitionsmars_eswidir = ${datarootdir}/eccodes/definitions/mars/eswi
-dist_definitionsmars_eswi_DATA = \
-	mars/eswi/aerosolPackingConcept.def\
-	mars/eswi/class.table\
-	mars/eswi/grib1.expr.3v.def\
-	mars/eswi/grib1.expr.4v.def\
-	mars/eswi/grib1.expr.an.def\
-	mars/eswi/grib1.expr.fc.def\
-	mars/eswi/grib1.expr.si.def\
-	mars/eswi/grib1.mdfa.fc.def\
-	mars/eswi/grib1.mnth.an.def\
-	mars/eswi/grib1.mnth.fc.def\
-	mars/eswi/grib1.moda.an.def\
-	mars/eswi/grib1.moda.fc.def\
-	mars/eswi/grib1.oper.3v.def\
-	mars/eswi/grib1.oper.4v.def\
-	mars/eswi/grib1.oper.an.def\
-	mars/eswi/grib1.oper.fc.def\
-	mars/eswi/grib1.oper.si.def\
-	mars/eswi/model.table\
-	mars/eswi/stream.table\
-	mars/eswi/type.table\
-	mars/eswi/wave_domain.def
-
-definitionstidedir = ${datarootdir}/eccodes/definitions/tide
-dist_definitionstide_DATA = \
-	tide/boot.def\
-	tide/mars_labeling.def\
-	tide/section.1.def\
-	tide/section.4.def
-
-definitionswrapdir = ${datarootdir}/eccodes/definitions/wrap
-dist_definitionswrap_DATA = \
-	wrap/boot.def\
-	wrap/metadata.0.def
-
-EXTRA_DIST = CMakeLists.txt
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu definitions/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu definitions/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-dist_definitionsDATA: $(dist_definitions_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitions_DATA)'; test -n "$(definitionsdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitions_DATA)'; test -n "$(definitionsdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbudgDATA: $(dist_definitionsbudg_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbudg_DATA)'; test -n "$(definitionsbudgdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbudgdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbudgdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbudgdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbudgdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbudgDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbudg_DATA)'; test -n "$(definitionsbudgdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbudgdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufrDATA: $(dist_definitionsbufr_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_DATA)'; test -n "$(definitionsbufrdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufrdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufrdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufrdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufrdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufrDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_DATA)'; test -n "$(definitionsbufrdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufrdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tablesDATA: $(dist_definitionsbufr_tables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_DATA)'; test -n "$(definitionsbufr_tablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_DATA)'; test -n "$(definitionsbufr_tablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_local_101_98_0DATA: $(dist_definitionsbufr_tables_0_local_101_98_0_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_101_98_0_DATA)'; test -n "$(definitionsbufr_tables_0_local_101_98_0dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_local_101_98_0DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_101_98_0_DATA)'; test -n "$(definitionsbufr_tables_0_local_101_98_0dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_local_101_98_0_codetablesDATA: $(dist_definitionsbufr_tables_0_local_101_98_0_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_101_98_0_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_local_101_98_0_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_local_101_98_0_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_101_98_0_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_local_101_98_0_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_local_1_98_0DATA: $(dist_definitionsbufr_tables_0_local_1_98_0_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_1_98_0_DATA)'; test -n "$(definitionsbufr_tables_0_local_1_98_0dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_local_1_98_0DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_1_98_0_DATA)'; test -n "$(definitionsbufr_tables_0_local_1_98_0dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_local_1_98_0_6DATA: $(dist_definitionsbufr_tables_0_local_1_98_0_6_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_1_98_0_6_DATA)'; test -n "$(definitionsbufr_tables_0_local_1_98_0_6dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_6dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_6dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_6dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_6dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_local_1_98_0_6DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_1_98_0_6_DATA)'; test -n "$(definitionsbufr_tables_0_local_1_98_0_6dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_6dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_local_1_98_0_codetablesDATA: $(dist_definitionsbufr_tables_0_local_1_98_0_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_1_98_0_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_local_1_98_0_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_1_98_0_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_13DATA: $(dist_definitionsbufr_tables_0_wmo_13_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_13_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_13dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_13dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_13dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_13dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_13dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_13DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_13_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_13dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_13dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_13_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_13_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_13_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_13_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_13_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_13_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_13_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_13_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_13_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_13_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_13_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_13_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_14DATA: $(dist_definitionsbufr_tables_0_wmo_14_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_14_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_14dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_14dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_14dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_14dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_14dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_14DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_14_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_14dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_14dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_14_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_14_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_14_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_14_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_14_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_14_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_14_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_14_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_14_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_14_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_14_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_14_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_15DATA: $(dist_definitionsbufr_tables_0_wmo_15_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_15_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_15dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_15dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_15dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_15dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_15dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_15DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_15_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_15dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_15dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_15_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_15_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_15_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_15_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_15_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_15_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_15_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_15_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_15_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_15_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_15_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_15_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_16DATA: $(dist_definitionsbufr_tables_0_wmo_16_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_16_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_16dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_16dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_16dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_16dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_16dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_16DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_16_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_16dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_16dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_16_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_16_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_16_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_16_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_16_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_16_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_16_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_16_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_16_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_16_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_16_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_16_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_17DATA: $(dist_definitionsbufr_tables_0_wmo_17_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_17_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_17dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_17dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_17dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_17dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_17dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_17DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_17_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_17dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_17dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_17_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_17_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_17_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_17_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_17_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_17_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_17_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_17_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_17_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_17_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_17_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_17_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_18DATA: $(dist_definitionsbufr_tables_0_wmo_18_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_18_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_18dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_18dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_18dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_18dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_18dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_18DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_18_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_18dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_18dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_18_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_18_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_18_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_18_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_18_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_18_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_18_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_18_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_18_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_18_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_18_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_18_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_19DATA: $(dist_definitionsbufr_tables_0_wmo_19_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_19_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_19dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_19dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_19dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_19dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_19dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_19DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_19_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_19dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_19dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_19_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_19_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_19_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_19_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_19_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_19_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_19_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_19_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_19_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_19_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_19_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_19_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_20DATA: $(dist_definitionsbufr_tables_0_wmo_20_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_20_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_20dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_20dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_20dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_20dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_20dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_20DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_20_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_20dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_20dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_20_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_20_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_20_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_20_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_20_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_20_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_20_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_20_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_20_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_20_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_20_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_20_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_21DATA: $(dist_definitionsbufr_tables_0_wmo_21_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_21_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_21dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_21dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_21dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_21dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_21dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_21DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_21_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_21dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_21dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_21_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_21_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_21_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_21_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_21_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_21_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_21_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_21_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_21_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_21_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_21_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_21_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_22DATA: $(dist_definitionsbufr_tables_0_wmo_22_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_22_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_22dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_22dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_22dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_22dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_22dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_22DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_22_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_22dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_22dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_22_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_22_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_22_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_22_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_22_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_22_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_22_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_22_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_22_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_22_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_22_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_22_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_23DATA: $(dist_definitionsbufr_tables_0_wmo_23_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_23_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_23dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_23dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_23dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_23dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_23dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_23DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_23_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_23dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_23dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_23_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_23_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_23_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_23_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_23_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_23_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_23_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_23_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_23_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_23_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_23_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_23_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_6DATA: $(dist_definitionsbufr_tables_0_wmo_6_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_6_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_6dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_6dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_6dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_6dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_6dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_6DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_6_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_6dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_6dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_6_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_6_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_6_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_6_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_6_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_6_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_6_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_6_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_6_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_6_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_6_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_6_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_3_local_1_98_0DATA: $(dist_definitionsbufr_tables_3_local_1_98_0_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_3_local_1_98_0_DATA)'; test -n "$(definitionsbufr_tables_3_local_1_98_0dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_3_local_1_98_0dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_3_local_1_98_0dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_3_local_1_98_0dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_3_local_1_98_0dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_3_local_1_98_0DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_3_local_1_98_0_DATA)'; test -n "$(definitionsbufr_tables_3_local_1_98_0dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_3_local_1_98_0dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_3_wmo_11DATA: $(dist_definitionsbufr_tables_3_wmo_11_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_3_wmo_11_DATA)'; test -n "$(definitionsbufr_tables_3_wmo_11dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_3_wmo_11dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_3_wmo_11dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_3_wmo_11dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_3_wmo_11dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_3_wmo_11DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_3_wmo_11_DATA)'; test -n "$(definitionsbufr_tables_3_wmo_11dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_3_wmo_11dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_3_wmo_6DATA: $(dist_definitionsbufr_tables_3_wmo_6_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_3_wmo_6_DATA)'; test -n "$(definitionsbufr_tables_3_wmo_6dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_3_wmo_6dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_3_wmo_6dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_3_wmo_6dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_3_wmo_6dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_3_wmo_6DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_3_wmo_6_DATA)'; test -n "$(definitionsbufr_tables_3_wmo_6dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_3_wmo_6dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionscdfDATA: $(dist_definitionscdf_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionscdf_DATA)'; test -n "$(definitionscdfdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionscdfdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionscdfdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionscdfdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionscdfdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionscdfDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionscdf_DATA)'; test -n "$(definitionscdfdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionscdfdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionscommonDATA: $(dist_definitionscommon_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionscommon_DATA)'; test -n "$(definitionscommondir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionscommondir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionscommondir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionscommondir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionscommondir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionscommonDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionscommon_DATA)'; test -n "$(definitionscommondir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionscommondir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1DATA: $(dist_definitionsgrib1_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_DATA)'; test -n "$(definitionsgrib1dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_DATA)'; test -n "$(definitionsgrib1dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_ammcDATA: $(dist_definitionsgrib1_localConcepts_ammc_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_ammc_DATA)'; test -n "$(definitionsgrib1_localConcepts_ammcdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_ammcdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_ammcdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_ammcdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_ammcdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_ammcDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_ammc_DATA)'; test -n "$(definitionsgrib1_localConcepts_ammcdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_ammcdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_cnmcDATA: $(dist_definitionsgrib1_localConcepts_cnmc_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_cnmc_DATA)'; test -n "$(definitionsgrib1_localConcepts_cnmcdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_cnmcdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_cnmcdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_cnmcdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_cnmcdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_cnmcDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_cnmc_DATA)'; test -n "$(definitionsgrib1_localConcepts_cnmcdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_cnmcdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_ecmfDATA: $(dist_definitionsgrib1_localConcepts_ecmf_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_ecmf_DATA)'; test -n "$(definitionsgrib1_localConcepts_ecmfdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_ecmfdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_ecmfdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_ecmfdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_ecmfdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_ecmfDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_ecmf_DATA)'; test -n "$(definitionsgrib1_localConcepts_ecmfdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_ecmfdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_edzwDATA: $(dist_definitionsgrib1_localConcepts_edzw_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_edzw_DATA)'; test -n "$(definitionsgrib1_localConcepts_edzwdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_edzwdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_edzwdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_edzwdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_edzwdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_edzwDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_edzw_DATA)'; test -n "$(definitionsgrib1_localConcepts_edzwdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_edzwdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_eidbDATA: $(dist_definitionsgrib1_localConcepts_eidb_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_eidb_DATA)'; test -n "$(definitionsgrib1_localConcepts_eidbdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_eidbdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_eidbdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_eidbdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_eidbdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_eidbDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_eidb_DATA)'; test -n "$(definitionsgrib1_localConcepts_eidbdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_eidbdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_ekmiDATA: $(dist_definitionsgrib1_localConcepts_ekmi_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_ekmi_DATA)'; test -n "$(definitionsgrib1_localConcepts_ekmidir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_ekmidir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_ekmidir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_ekmidir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_ekmidir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_ekmiDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_ekmi_DATA)'; test -n "$(definitionsgrib1_localConcepts_ekmidir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_ekmidir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_enmiDATA: $(dist_definitionsgrib1_localConcepts_enmi_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_enmi_DATA)'; test -n "$(definitionsgrib1_localConcepts_enmidir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_enmidir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_enmidir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_enmidir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_enmidir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_enmiDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_enmi_DATA)'; test -n "$(definitionsgrib1_localConcepts_enmidir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_enmidir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_eswiDATA: $(dist_definitionsgrib1_localConcepts_eswi_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_eswi_DATA)'; test -n "$(definitionsgrib1_localConcepts_eswidir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_eswidir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_eswidir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_eswidir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_eswidir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_eswiDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_eswi_DATA)'; test -n "$(definitionsgrib1_localConcepts_eswidir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_eswidir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_kwbcDATA: $(dist_definitionsgrib1_localConcepts_kwbc_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_kwbc_DATA)'; test -n "$(definitionsgrib1_localConcepts_kwbcdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_kwbcdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_kwbcdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_kwbcdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_kwbcdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_kwbcDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_kwbc_DATA)'; test -n "$(definitionsgrib1_localConcepts_kwbcdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_kwbcdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_lfpwDATA: $(dist_definitionsgrib1_localConcepts_lfpw_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_lfpw_DATA)'; test -n "$(definitionsgrib1_localConcepts_lfpwdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_lfpwdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_lfpwdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_lfpwdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_lfpwdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_lfpwDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_lfpw_DATA)'; test -n "$(definitionsgrib1_localConcepts_lfpwdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_lfpwdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_lowmDATA: $(dist_definitionsgrib1_localConcepts_lowm_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_lowm_DATA)'; test -n "$(definitionsgrib1_localConcepts_lowmdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_lowmdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_lowmdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_lowmdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_lowmdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_lowmDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_lowm_DATA)'; test -n "$(definitionsgrib1_localConcepts_lowmdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_lowmdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_rjtdDATA: $(dist_definitionsgrib1_localConcepts_rjtd_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_rjtd_DATA)'; test -n "$(definitionsgrib1_localConcepts_rjtddir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_rjtddir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_rjtddir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_rjtddir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_rjtddir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_rjtdDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_rjtd_DATA)'; test -n "$(definitionsgrib1_localConcepts_rjtddir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_rjtddir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_sbsjDATA: $(dist_definitionsgrib1_localConcepts_sbsj_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_sbsj_DATA)'; test -n "$(definitionsgrib1_localConcepts_sbsjdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_sbsjdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_sbsjdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_sbsjdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_sbsjdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_sbsjDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_sbsj_DATA)'; test -n "$(definitionsgrib1_localConcepts_sbsjdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_sbsjdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_local_ecmfDATA: $(dist_definitionsgrib1_local_ecmf_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_local_ecmf_DATA)'; test -n "$(definitionsgrib1_local_ecmfdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_local_ecmfdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_local_ecmfdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_local_ecmfdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_local_ecmfdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_local_ecmfDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_local_ecmf_DATA)'; test -n "$(definitionsgrib1_local_ecmfdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_local_ecmfdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_local_edzwDATA: $(dist_definitionsgrib1_local_edzw_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_local_edzw_DATA)'; test -n "$(definitionsgrib1_local_edzwdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_local_edzwdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_local_edzwdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_local_edzwdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_local_edzwdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_local_edzwDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_local_edzw_DATA)'; test -n "$(definitionsgrib1_local_edzwdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_local_edzwdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_local_rjtdDATA: $(dist_definitionsgrib1_local_rjtd_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_local_rjtd_DATA)'; test -n "$(definitionsgrib1_local_rjtddir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_local_rjtddir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_local_rjtddir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_local_rjtddir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_local_rjtddir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_local_rjtdDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_local_rjtd_DATA)'; test -n "$(definitionsgrib1_local_rjtddir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_local_rjtddir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2DATA: $(dist_definitionsgrib2_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_DATA)'; test -n "$(definitionsgrib2dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_DATA)'; test -n "$(definitionsgrib2dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_localDATA: $(dist_definitionsgrib2_local_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_local_DATA)'; test -n "$(definitionsgrib2_localdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_localDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_local_DATA)'; test -n "$(definitionsgrib2_localdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_localdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_localConcepts_cnmcDATA: $(dist_definitionsgrib2_localConcepts_cnmc_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_cnmc_DATA)'; test -n "$(definitionsgrib2_localConcepts_cnmcdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localConcepts_cnmcdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localConcepts_cnmcdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localConcepts_cnmcdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localConcepts_cnmcdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_localConcepts_cnmcDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_cnmc_DATA)'; test -n "$(definitionsgrib2_localConcepts_cnmcdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_cnmcdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_localConcepts_ecmfDATA: $(dist_definitionsgrib2_localConcepts_ecmf_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_ecmf_DATA)'; test -n "$(definitionsgrib2_localConcepts_ecmfdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localConcepts_ecmfdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localConcepts_ecmfdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localConcepts_ecmfdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localConcepts_ecmfdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_localConcepts_ecmfDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_ecmf_DATA)'; test -n "$(definitionsgrib2_localConcepts_ecmfdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_ecmfdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_localConcepts_edzwDATA: $(dist_definitionsgrib2_localConcepts_edzw_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_edzw_DATA)'; test -n "$(definitionsgrib2_localConcepts_edzwdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localConcepts_edzwdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localConcepts_edzwdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localConcepts_edzwdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localConcepts_edzwdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_localConcepts_edzwDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_edzw_DATA)'; test -n "$(definitionsgrib2_localConcepts_edzwdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_edzwdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_localConcepts_egrrDATA: $(dist_definitionsgrib2_localConcepts_egrr_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_egrr_DATA)'; test -n "$(definitionsgrib2_localConcepts_egrrdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localConcepts_egrrdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localConcepts_egrrdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localConcepts_egrrdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localConcepts_egrrdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_localConcepts_egrrDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_egrr_DATA)'; test -n "$(definitionsgrib2_localConcepts_egrrdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_egrrdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_localConcepts_ekmiDATA: $(dist_definitionsgrib2_localConcepts_ekmi_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_ekmi_DATA)'; test -n "$(definitionsgrib2_localConcepts_ekmidir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localConcepts_ekmidir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localConcepts_ekmidir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localConcepts_ekmidir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localConcepts_ekmidir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_localConcepts_ekmiDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_ekmi_DATA)'; test -n "$(definitionsgrib2_localConcepts_ekmidir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_ekmidir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_localConcepts_eswiDATA: $(dist_definitionsgrib2_localConcepts_eswi_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_eswi_DATA)'; test -n "$(definitionsgrib2_localConcepts_eswidir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localConcepts_eswidir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localConcepts_eswidir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localConcepts_eswidir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localConcepts_eswidir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_localConcepts_eswiDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_eswi_DATA)'; test -n "$(definitionsgrib2_localConcepts_eswidir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_eswidir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_localConcepts_kwbcDATA: $(dist_definitionsgrib2_localConcepts_kwbc_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_kwbc_DATA)'; test -n "$(definitionsgrib2_localConcepts_kwbcdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localConcepts_kwbcdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localConcepts_kwbcdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localConcepts_kwbcdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localConcepts_kwbcdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_localConcepts_kwbcDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_kwbc_DATA)'; test -n "$(definitionsgrib2_localConcepts_kwbcdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_kwbcdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_localConcepts_lfpwDATA: $(dist_definitionsgrib2_localConcepts_lfpw_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_lfpw_DATA)'; test -n "$(definitionsgrib2_localConcepts_lfpwdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localConcepts_lfpwdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localConcepts_lfpwdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localConcepts_lfpwdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localConcepts_lfpwdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_localConcepts_lfpwDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_lfpw_DATA)'; test -n "$(definitionsgrib2_localConcepts_lfpwdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_lfpwdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_localConcepts_lfpw1DATA: $(dist_definitionsgrib2_localConcepts_lfpw1_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_lfpw1_DATA)'; test -n "$(definitionsgrib2_localConcepts_lfpw1dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localConcepts_lfpw1dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localConcepts_lfpw1dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localConcepts_lfpw1dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localConcepts_lfpw1dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_localConcepts_lfpw1DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_lfpw1_DATA)'; test -n "$(definitionsgrib2_localConcepts_lfpw1dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_lfpw1dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_local_1098DATA: $(dist_definitionsgrib2_local_1098_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_local_1098_DATA)'; test -n "$(definitionsgrib2_local_1098dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_local_1098dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_local_1098dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_local_1098dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_local_1098dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_local_1098DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_local_1098_DATA)'; test -n "$(definitionsgrib2_local_1098dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_local_1098dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tablesDATA: $(dist_definitionsgrib2_tables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_DATA)'; test -n "$(definitionsgrib2_tablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_DATA)'; test -n "$(definitionsgrib2_tablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_0DATA: $(dist_definitionsgrib2_tables_0_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_0_DATA)'; test -n "$(definitionsgrib2_tables_0dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_0dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_0dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_0dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_0dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_0DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_0_DATA)'; test -n "$(definitionsgrib2_tables_0dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_0dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_1DATA: $(dist_definitionsgrib2_tables_1_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_1_DATA)'; test -n "$(definitionsgrib2_tables_1dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_1dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_1dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_1dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_1dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_1DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_1_DATA)'; test -n "$(definitionsgrib2_tables_1dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_1dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_10DATA: $(dist_definitionsgrib2_tables_10_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_10_DATA)'; test -n "$(definitionsgrib2_tables_10dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_10dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_10dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_10dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_10dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_10DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_10_DATA)'; test -n "$(definitionsgrib2_tables_10dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_10dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_11DATA: $(dist_definitionsgrib2_tables_11_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_11_DATA)'; test -n "$(definitionsgrib2_tables_11dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_11dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_11dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_11dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_11dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_11DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_11_DATA)'; test -n "$(definitionsgrib2_tables_11dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_11dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_12DATA: $(dist_definitionsgrib2_tables_12_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_12_DATA)'; test -n "$(definitionsgrib2_tables_12dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_12dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_12dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_12dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_12dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_12DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_12_DATA)'; test -n "$(definitionsgrib2_tables_12dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_12dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_13DATA: $(dist_definitionsgrib2_tables_13_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_13_DATA)'; test -n "$(definitionsgrib2_tables_13dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_13dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_13dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_13dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_13dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_13DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_13_DATA)'; test -n "$(definitionsgrib2_tables_13dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_13dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_14DATA: $(dist_definitionsgrib2_tables_14_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_14_DATA)'; test -n "$(definitionsgrib2_tables_14dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_14dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_14dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_14dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_14dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_14DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_14_DATA)'; test -n "$(definitionsgrib2_tables_14dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_14dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_2DATA: $(dist_definitionsgrib2_tables_2_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_2_DATA)'; test -n "$(definitionsgrib2_tables_2dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_2dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_2dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_2dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_2dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_2DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_2_DATA)'; test -n "$(definitionsgrib2_tables_2dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_2dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_3DATA: $(dist_definitionsgrib2_tables_3_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_3_DATA)'; test -n "$(definitionsgrib2_tables_3dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_3dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_3dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_3dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_3dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_3DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_3_DATA)'; test -n "$(definitionsgrib2_tables_3dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_3dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_4DATA: $(dist_definitionsgrib2_tables_4_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_4_DATA)'; test -n "$(definitionsgrib2_tables_4dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_4dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_4dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_4dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_4dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_4DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_4_DATA)'; test -n "$(definitionsgrib2_tables_4dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_4dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_5DATA: $(dist_definitionsgrib2_tables_5_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_5_DATA)'; test -n "$(definitionsgrib2_tables_5dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_5dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_5dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_5dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_5dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_5DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_5_DATA)'; test -n "$(definitionsgrib2_tables_5dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_5dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_6DATA: $(dist_definitionsgrib2_tables_6_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_6_DATA)'; test -n "$(definitionsgrib2_tables_6dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_6dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_6dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_6dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_6dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_6DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_6_DATA)'; test -n "$(definitionsgrib2_tables_6dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_6dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_7DATA: $(dist_definitionsgrib2_tables_7_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_7_DATA)'; test -n "$(definitionsgrib2_tables_7dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_7dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_7dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_7dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_7dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_7DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_7_DATA)'; test -n "$(definitionsgrib2_tables_7dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_7dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_8DATA: $(dist_definitionsgrib2_tables_8_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_8_DATA)'; test -n "$(definitionsgrib2_tables_8dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_8dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_8dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_8dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_8dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_8DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_8_DATA)'; test -n "$(definitionsgrib2_tables_8dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_8dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_9DATA: $(dist_definitionsgrib2_tables_9_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_9_DATA)'; test -n "$(definitionsgrib2_tables_9dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_9dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_9dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_9dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_9dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_9DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_9_DATA)'; test -n "$(definitionsgrib2_tables_9dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_9dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_local_ecmfDATA: $(dist_definitionsgrib2_tables_local_ecmf_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_local_ecmf_DATA)'; test -n "$(definitionsgrib2_tables_local_ecmfdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_local_ecmfdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_local_ecmfdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_local_ecmfdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_local_ecmfdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_local_ecmfDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_local_ecmf_DATA)'; test -n "$(definitionsgrib2_tables_local_ecmfdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_local_ecmfdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_local_ecmf_4DATA: $(dist_definitionsgrib2_tables_local_ecmf_4_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_local_ecmf_4_DATA)'; test -n "$(definitionsgrib2_tables_local_ecmf_4dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_local_ecmf_4dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_local_ecmf_4dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_local_ecmf_4dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_local_ecmf_4dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_local_ecmf_4DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_local_ecmf_4_DATA)'; test -n "$(definitionsgrib2_tables_local_ecmf_4dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_local_ecmf_4dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgtsDATA: $(dist_definitionsgts_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgts_DATA)'; test -n "$(definitionsgtsdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgtsdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgtsdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgtsdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgtsdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgtsDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgts_DATA)'; test -n "$(definitionsgtsdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgtsdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionshdf5DATA: $(dist_definitionshdf5_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionshdf5_DATA)'; test -n "$(definitionshdf5dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionshdf5dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionshdf5dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionshdf5dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionshdf5dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionshdf5DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionshdf5_DATA)'; test -n "$(definitionshdf5dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionshdf5dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsmarsDATA: $(dist_definitionsmars_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsmars_DATA)'; test -n "$(definitionsmarsdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsmarsdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsmarsdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsmarsdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsmarsdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsmarsDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsmars_DATA)'; test -n "$(definitionsmarsdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsmarsdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsmars_eswiDATA: $(dist_definitionsmars_eswi_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsmars_eswi_DATA)'; test -n "$(definitionsmars_eswidir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsmars_eswidir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsmars_eswidir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsmars_eswidir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsmars_eswidir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsmars_eswiDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsmars_eswi_DATA)'; test -n "$(definitionsmars_eswidir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsmars_eswidir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionstideDATA: $(dist_definitionstide_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionstide_DATA)'; test -n "$(definitionstidedir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionstidedir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionstidedir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionstidedir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionstidedir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionstideDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionstide_DATA)'; test -n "$(definitionstidedir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionstidedir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionswrapDATA: $(dist_definitionswrap_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionswrap_DATA)'; test -n "$(definitionswrapdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionswrapdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionswrapdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionswrapdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionswrapdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionswrapDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionswrap_DATA)'; test -n "$(definitionswrapdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionswrapdir)'; $(am__uninstall_files_from_dir)
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
-	for dir in "$(DESTDIR)$(definitionsdir)" "$(DESTDIR)$(definitionsbudgdir)" "$(DESTDIR)$(definitionsbufrdir)" "$(DESTDIR)$(definitionsbufr_tablesdir)" "$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0dir)" "$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0_codetablesdir)" "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0dir)" "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_6dir)" "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)" "$(DESTDIR)$(definitionsbufr_tabl [...]
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-dist_definitionsDATA \
-	install-dist_definitionsbudgDATA \
-	install-dist_definitionsbufrDATA \
-	install-dist_definitionsbufr_tablesDATA \
-	install-dist_definitionsbufr_tables_0_local_101_98_0DATA \
-	install-dist_definitionsbufr_tables_0_local_101_98_0_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_local_1_98_0DATA \
-	install-dist_definitionsbufr_tables_0_local_1_98_0_6DATA \
-	install-dist_definitionsbufr_tables_0_local_1_98_0_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_13DATA \
-	install-dist_definitionsbufr_tables_0_wmo_13_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_14DATA \
-	install-dist_definitionsbufr_tables_0_wmo_14_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_15DATA \
-	install-dist_definitionsbufr_tables_0_wmo_15_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_16DATA \
-	install-dist_definitionsbufr_tables_0_wmo_16_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_17DATA \
-	install-dist_definitionsbufr_tables_0_wmo_17_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_18DATA \
-	install-dist_definitionsbufr_tables_0_wmo_18_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_19DATA \
-	install-dist_definitionsbufr_tables_0_wmo_19_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_20DATA \
-	install-dist_definitionsbufr_tables_0_wmo_20_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_21DATA \
-	install-dist_definitionsbufr_tables_0_wmo_21_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_22DATA \
-	install-dist_definitionsbufr_tables_0_wmo_22_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_23DATA \
-	install-dist_definitionsbufr_tables_0_wmo_23_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_6DATA \
-	install-dist_definitionsbufr_tables_0_wmo_6_codetablesDATA \
-	install-dist_definitionsbufr_tables_3_local_1_98_0DATA \
-	install-dist_definitionsbufr_tables_3_wmo_11DATA \
-	install-dist_definitionsbufr_tables_3_wmo_6DATA \
-	install-dist_definitionscdfDATA \
-	install-dist_definitionscommonDATA \
-	install-dist_definitionsgrib1DATA \
-	install-dist_definitionsgrib1_localConcepts_ammcDATA \
-	install-dist_definitionsgrib1_localConcepts_cnmcDATA \
-	install-dist_definitionsgrib1_localConcepts_ecmfDATA \
-	install-dist_definitionsgrib1_localConcepts_edzwDATA \
-	install-dist_definitionsgrib1_localConcepts_eidbDATA \
-	install-dist_definitionsgrib1_localConcepts_ekmiDATA \
-	install-dist_definitionsgrib1_localConcepts_enmiDATA \
-	install-dist_definitionsgrib1_localConcepts_eswiDATA \
-	install-dist_definitionsgrib1_localConcepts_kwbcDATA \
-	install-dist_definitionsgrib1_localConcepts_lfpwDATA \
-	install-dist_definitionsgrib1_localConcepts_lowmDATA \
-	install-dist_definitionsgrib1_localConcepts_rjtdDATA \
-	install-dist_definitionsgrib1_localConcepts_sbsjDATA \
-	install-dist_definitionsgrib1_local_ecmfDATA \
-	install-dist_definitionsgrib1_local_edzwDATA \
-	install-dist_definitionsgrib1_local_rjtdDATA \
-	install-dist_definitionsgrib2DATA \
-	install-dist_definitionsgrib2_localConcepts_cnmcDATA \
-	install-dist_definitionsgrib2_localConcepts_ecmfDATA \
-	install-dist_definitionsgrib2_localConcepts_edzwDATA \
-	install-dist_definitionsgrib2_localConcepts_egrrDATA \
-	install-dist_definitionsgrib2_localConcepts_ekmiDATA \
-	install-dist_definitionsgrib2_localConcepts_eswiDATA \
-	install-dist_definitionsgrib2_localConcepts_kwbcDATA \
-	install-dist_definitionsgrib2_localConcepts_lfpw1DATA \
-	install-dist_definitionsgrib2_localConcepts_lfpwDATA \
-	install-dist_definitionsgrib2_localDATA \
-	install-dist_definitionsgrib2_local_1098DATA \
-	install-dist_definitionsgrib2_tablesDATA \
-	install-dist_definitionsgrib2_tables_0DATA \
-	install-dist_definitionsgrib2_tables_10DATA \
-	install-dist_definitionsgrib2_tables_11DATA \
-	install-dist_definitionsgrib2_tables_12DATA \
-	install-dist_definitionsgrib2_tables_13DATA \
-	install-dist_definitionsgrib2_tables_14DATA \
-	install-dist_definitionsgrib2_tables_1DATA \
-	install-dist_definitionsgrib2_tables_2DATA \
-	install-dist_definitionsgrib2_tables_3DATA \
-	install-dist_definitionsgrib2_tables_4DATA \
-	install-dist_definitionsgrib2_tables_5DATA \
-	install-dist_definitionsgrib2_tables_6DATA \
-	install-dist_definitionsgrib2_tables_7DATA \
-	install-dist_definitionsgrib2_tables_8DATA \
-	install-dist_definitionsgrib2_tables_9DATA \
-	install-dist_definitionsgrib2_tables_local_ecmfDATA \
-	install-dist_definitionsgrib2_tables_local_ecmf_4DATA \
-	install-dist_definitionsgtsDATA \
-	install-dist_definitionshdf5DATA \
-	install-dist_definitionsmarsDATA \
-	install-dist_definitionsmars_eswiDATA \
-	install-dist_definitionstideDATA \
-	install-dist_definitionswrapDATA
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-dist_definitionsDATA \
-	uninstall-dist_definitionsbudgDATA \
-	uninstall-dist_definitionsbufrDATA \
-	uninstall-dist_definitionsbufr_tablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_local_101_98_0DATA \
-	uninstall-dist_definitionsbufr_tables_0_local_101_98_0_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_local_1_98_0DATA \
-	uninstall-dist_definitionsbufr_tables_0_local_1_98_0_6DATA \
-	uninstall-dist_definitionsbufr_tables_0_local_1_98_0_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_13DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_13_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_14DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_14_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_15DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_15_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_16DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_16_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_17DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_17_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_18DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_18_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_19DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_19_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_20DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_20_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_21DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_21_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_22DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_22_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_23DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_23_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_6DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_6_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_3_local_1_98_0DATA \
-	uninstall-dist_definitionsbufr_tables_3_wmo_11DATA \
-	uninstall-dist_definitionsbufr_tables_3_wmo_6DATA \
-	uninstall-dist_definitionscdfDATA \
-	uninstall-dist_definitionscommonDATA \
-	uninstall-dist_definitionsgrib1DATA \
-	uninstall-dist_definitionsgrib1_localConcepts_ammcDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_cnmcDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_ecmfDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_edzwDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_eidbDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_ekmiDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_enmiDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_eswiDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_kwbcDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_lfpwDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_lowmDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_rjtdDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_sbsjDATA \
-	uninstall-dist_definitionsgrib1_local_ecmfDATA \
-	uninstall-dist_definitionsgrib1_local_edzwDATA \
-	uninstall-dist_definitionsgrib1_local_rjtdDATA \
-	uninstall-dist_definitionsgrib2DATA \
-	uninstall-dist_definitionsgrib2_localConcepts_cnmcDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_ecmfDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_edzwDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_egrrDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_ekmiDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_eswiDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_kwbcDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_lfpw1DATA \
-	uninstall-dist_definitionsgrib2_localConcepts_lfpwDATA \
-	uninstall-dist_definitionsgrib2_localDATA \
-	uninstall-dist_definitionsgrib2_local_1098DATA \
-	uninstall-dist_definitionsgrib2_tablesDATA \
-	uninstall-dist_definitionsgrib2_tables_0DATA \
-	uninstall-dist_definitionsgrib2_tables_10DATA \
-	uninstall-dist_definitionsgrib2_tables_11DATA \
-	uninstall-dist_definitionsgrib2_tables_12DATA \
-	uninstall-dist_definitionsgrib2_tables_13DATA \
-	uninstall-dist_definitionsgrib2_tables_14DATA \
-	uninstall-dist_definitionsgrib2_tables_1DATA \
-	uninstall-dist_definitionsgrib2_tables_2DATA \
-	uninstall-dist_definitionsgrib2_tables_3DATA \
-	uninstall-dist_definitionsgrib2_tables_4DATA \
-	uninstall-dist_definitionsgrib2_tables_5DATA \
-	uninstall-dist_definitionsgrib2_tables_6DATA \
-	uninstall-dist_definitionsgrib2_tables_7DATA \
-	uninstall-dist_definitionsgrib2_tables_8DATA \
-	uninstall-dist_definitionsgrib2_tables_9DATA \
-	uninstall-dist_definitionsgrib2_tables_local_ecmfDATA \
-	uninstall-dist_definitionsgrib2_tables_local_ecmf_4DATA \
-	uninstall-dist_definitionsgtsDATA \
-	uninstall-dist_definitionshdf5DATA \
-	uninstall-dist_definitionsmarsDATA \
-	uninstall-dist_definitionsmars_eswiDATA \
-	uninstall-dist_definitionstideDATA \
-	uninstall-dist_definitionswrapDATA
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	cscopelist-am ctags-am distclean distclean-generic \
-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-dist_definitionsDATA install-dist_definitionsbudgDATA \
-	install-dist_definitionsbufrDATA \
-	install-dist_definitionsbufr_tablesDATA \
-	install-dist_definitionsbufr_tables_0_local_101_98_0DATA \
-	install-dist_definitionsbufr_tables_0_local_101_98_0_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_local_1_98_0DATA \
-	install-dist_definitionsbufr_tables_0_local_1_98_0_6DATA \
-	install-dist_definitionsbufr_tables_0_local_1_98_0_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_13DATA \
-	install-dist_definitionsbufr_tables_0_wmo_13_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_14DATA \
-	install-dist_definitionsbufr_tables_0_wmo_14_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_15DATA \
-	install-dist_definitionsbufr_tables_0_wmo_15_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_16DATA \
-	install-dist_definitionsbufr_tables_0_wmo_16_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_17DATA \
-	install-dist_definitionsbufr_tables_0_wmo_17_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_18DATA \
-	install-dist_definitionsbufr_tables_0_wmo_18_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_19DATA \
-	install-dist_definitionsbufr_tables_0_wmo_19_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_20DATA \
-	install-dist_definitionsbufr_tables_0_wmo_20_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_21DATA \
-	install-dist_definitionsbufr_tables_0_wmo_21_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_22DATA \
-	install-dist_definitionsbufr_tables_0_wmo_22_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_23DATA \
-	install-dist_definitionsbufr_tables_0_wmo_23_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_6DATA \
-	install-dist_definitionsbufr_tables_0_wmo_6_codetablesDATA \
-	install-dist_definitionsbufr_tables_3_local_1_98_0DATA \
-	install-dist_definitionsbufr_tables_3_wmo_11DATA \
-	install-dist_definitionsbufr_tables_3_wmo_6DATA \
-	install-dist_definitionscdfDATA \
-	install-dist_definitionscommonDATA \
-	install-dist_definitionsgrib1DATA \
-	install-dist_definitionsgrib1_localConcepts_ammcDATA \
-	install-dist_definitionsgrib1_localConcepts_cnmcDATA \
-	install-dist_definitionsgrib1_localConcepts_ecmfDATA \
-	install-dist_definitionsgrib1_localConcepts_edzwDATA \
-	install-dist_definitionsgrib1_localConcepts_eidbDATA \
-	install-dist_definitionsgrib1_localConcepts_ekmiDATA \
-	install-dist_definitionsgrib1_localConcepts_enmiDATA \
-	install-dist_definitionsgrib1_localConcepts_eswiDATA \
-	install-dist_definitionsgrib1_localConcepts_kwbcDATA \
-	install-dist_definitionsgrib1_localConcepts_lfpwDATA \
-	install-dist_definitionsgrib1_localConcepts_lowmDATA \
-	install-dist_definitionsgrib1_localConcepts_rjtdDATA \
-	install-dist_definitionsgrib1_localConcepts_sbsjDATA \
-	install-dist_definitionsgrib1_local_ecmfDATA \
-	install-dist_definitionsgrib1_local_edzwDATA \
-	install-dist_definitionsgrib1_local_rjtdDATA \
-	install-dist_definitionsgrib2DATA \
-	install-dist_definitionsgrib2_localConcepts_cnmcDATA \
-	install-dist_definitionsgrib2_localConcepts_ecmfDATA \
-	install-dist_definitionsgrib2_localConcepts_edzwDATA \
-	install-dist_definitionsgrib2_localConcepts_egrrDATA \
-	install-dist_definitionsgrib2_localConcepts_ekmiDATA \
-	install-dist_definitionsgrib2_localConcepts_eswiDATA \
-	install-dist_definitionsgrib2_localConcepts_kwbcDATA \
-	install-dist_definitionsgrib2_localConcepts_lfpw1DATA \
-	install-dist_definitionsgrib2_localConcepts_lfpwDATA \
-	install-dist_definitionsgrib2_localDATA \
-	install-dist_definitionsgrib2_local_1098DATA \
-	install-dist_definitionsgrib2_tablesDATA \
-	install-dist_definitionsgrib2_tables_0DATA \
-	install-dist_definitionsgrib2_tables_10DATA \
-	install-dist_definitionsgrib2_tables_11DATA \
-	install-dist_definitionsgrib2_tables_12DATA \
-	install-dist_definitionsgrib2_tables_13DATA \
-	install-dist_definitionsgrib2_tables_14DATA \
-	install-dist_definitionsgrib2_tables_1DATA \
-	install-dist_definitionsgrib2_tables_2DATA \
-	install-dist_definitionsgrib2_tables_3DATA \
-	install-dist_definitionsgrib2_tables_4DATA \
-	install-dist_definitionsgrib2_tables_5DATA \
-	install-dist_definitionsgrib2_tables_6DATA \
-	install-dist_definitionsgrib2_tables_7DATA \
-	install-dist_definitionsgrib2_tables_8DATA \
-	install-dist_definitionsgrib2_tables_9DATA \
-	install-dist_definitionsgrib2_tables_local_ecmfDATA \
-	install-dist_definitionsgrib2_tables_local_ecmf_4DATA \
-	install-dist_definitionsgtsDATA \
-	install-dist_definitionshdf5DATA \
-	install-dist_definitionsmarsDATA \
-	install-dist_definitionsmars_eswiDATA \
-	install-dist_definitionstideDATA \
-	install-dist_definitionswrapDATA install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
-	uninstall-am uninstall-dist_definitionsDATA \
-	uninstall-dist_definitionsbudgDATA \
-	uninstall-dist_definitionsbufrDATA \
-	uninstall-dist_definitionsbufr_tablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_local_101_98_0DATA \
-	uninstall-dist_definitionsbufr_tables_0_local_101_98_0_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_local_1_98_0DATA \
-	uninstall-dist_definitionsbufr_tables_0_local_1_98_0_6DATA \
-	uninstall-dist_definitionsbufr_tables_0_local_1_98_0_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_13DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_13_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_14DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_14_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_15DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_15_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_16DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_16_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_17DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_17_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_18DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_18_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_19DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_19_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_20DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_20_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_21DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_21_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_22DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_22_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_23DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_23_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_6DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_6_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_3_local_1_98_0DATA \
-	uninstall-dist_definitionsbufr_tables_3_wmo_11DATA \
-	uninstall-dist_definitionsbufr_tables_3_wmo_6DATA \
-	uninstall-dist_definitionscdfDATA \
-	uninstall-dist_definitionscommonDATA \
-	uninstall-dist_definitionsgrib1DATA \
-	uninstall-dist_definitionsgrib1_localConcepts_ammcDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_cnmcDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_ecmfDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_edzwDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_eidbDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_ekmiDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_enmiDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_eswiDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_kwbcDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_lfpwDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_lowmDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_rjtdDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_sbsjDATA \
-	uninstall-dist_definitionsgrib1_local_ecmfDATA \
-	uninstall-dist_definitionsgrib1_local_edzwDATA \
-	uninstall-dist_definitionsgrib1_local_rjtdDATA \
-	uninstall-dist_definitionsgrib2DATA \
-	uninstall-dist_definitionsgrib2_localConcepts_cnmcDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_ecmfDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_edzwDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_egrrDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_ekmiDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_eswiDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_kwbcDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_lfpw1DATA \
-	uninstall-dist_definitionsgrib2_localConcepts_lfpwDATA \
-	uninstall-dist_definitionsgrib2_localDATA \
-	uninstall-dist_definitionsgrib2_local_1098DATA \
-	uninstall-dist_definitionsgrib2_tablesDATA \
-	uninstall-dist_definitionsgrib2_tables_0DATA \
-	uninstall-dist_definitionsgrib2_tables_10DATA \
-	uninstall-dist_definitionsgrib2_tables_11DATA \
-	uninstall-dist_definitionsgrib2_tables_12DATA \
-	uninstall-dist_definitionsgrib2_tables_13DATA \
-	uninstall-dist_definitionsgrib2_tables_14DATA \
-	uninstall-dist_definitionsgrib2_tables_1DATA \
-	uninstall-dist_definitionsgrib2_tables_2DATA \
-	uninstall-dist_definitionsgrib2_tables_3DATA \
-	uninstall-dist_definitionsgrib2_tables_4DATA \
-	uninstall-dist_definitionsgrib2_tables_5DATA \
-	uninstall-dist_definitionsgrib2_tables_6DATA \
-	uninstall-dist_definitionsgrib2_tables_7DATA \
-	uninstall-dist_definitionsgrib2_tables_8DATA \
-	uninstall-dist_definitionsgrib2_tables_9DATA \
-	uninstall-dist_definitionsgrib2_tables_local_ecmfDATA \
-	uninstall-dist_definitionsgrib2_tables_local_ecmf_4DATA \
-	uninstall-dist_definitionsgtsDATA \
-	uninstall-dist_definitionshdf5DATA \
-	uninstall-dist_definitionsmarsDATA \
-	uninstall-dist_definitionsmars_eswiDATA \
-	uninstall-dist_definitionstideDATA \
-	uninstall-dist_definitionswrapDATA
-
-
-include $(DEVEL_RULES)
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/definitions/Makefile.am b/definitions/Makefile.am
index 5974d4a..0871df9 100644
--- a/definitions/Makefile.am
+++ b/definitions/Makefile.am
@@ -10,8 +10,7 @@ dist_definitions_DATA = \
 	./param_id.table\
 	./parameters_version.def\
 	./publish_new_parameters.sh\
-	./stepUnits.table\
-	./x.grib
+	./stepUnits.table
 
 definitionsbudgdir = @ECCODES_DEFINITION_PATH@/budg
 dist_definitionsbudg_DATA = \
@@ -27,6 +26,7 @@ dist_definitionsbufr_DATA = \
 	bufr/boot_edition_2.def\
 	bufr/boot_edition_3.def\
 	bufr/boot_edition_4.def\
+	bufr/dataKeys.def\
 	bufr/old_section.1.def\
 	bufr/rdb_key.def\
 	bufr/rdb_key_28.def\
@@ -174,6 +174,1074 @@ dist_definitionsbufr_tables_0_local_101_98_0_codetables_DATA = \
 	bufr/tables/0/local/101/98/0/codetables/8193.table\
 	bufr/tables/0/local/101/98/0/codetables/8195.table
 
+definitionsbufr_tables_0_local_2_98_0dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/local/2/98/0
+dist_definitionsbufr_tables_0_local_2_98_0_DATA = \
+	bufr/tables/0/local/2/98/0/element.table\
+	bufr/tables/0/local/2/98/0/sequence.def
+
+definitionsbufr_tables_0_local_2_98_0_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/local/2/98/0/codetables
+dist_definitionsbufr_tables_0_local_2_98_0_codetables_DATA = \
+	bufr/tables/0/local/2/98/0/codetables/25192.table\
+	bufr/tables/0/local/2/98/0/codetables/40214.table\
+	bufr/tables/0/local/2/98/0/codetables/5237.table\
+	bufr/tables/0/local/2/98/0/codetables/8201.table
+
+definitionsbufr_tables_0_local_3_98_0dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/local/3/98/0
+dist_definitionsbufr_tables_0_local_3_98_0_DATA = \
+	bufr/tables/0/local/3/98/0/element.table\
+	bufr/tables/0/local/3/98/0/sequence.def
+
+definitionsbufr_tables_0_local_3_98_0_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/local/3/98/0/codetables
+dist_definitionsbufr_tables_0_local_3_98_0_codetables_DATA = \
+	bufr/tables/0/local/3/98/0/codetables/25192.table\
+	bufr/tables/0/local/3/98/0/codetables/40214.table\
+	bufr/tables/0/local/3/98/0/codetables/5237.table\
+	bufr/tables/0/local/3/98/0/codetables/8201.table
+
+definitionsbufr_tables_0_wmo_10dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/10
+dist_definitionsbufr_tables_0_wmo_10_DATA = \
+	bufr/tables/0/wmo/10/element.table\
+	bufr/tables/0/wmo/10/sequence.def
+
+definitionsbufr_tables_0_wmo_10_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/10/codetables
+dist_definitionsbufr_tables_0_wmo_10_codetables_DATA = \
+	bufr/tables/0/wmo/10/codetables/1003.table\
+	bufr/tables/0/wmo/10/codetables/10063.table\
+	bufr/tables/0/wmo/10/codetables/10064.table\
+	bufr/tables/0/wmo/10/codetables/1007.table\
+	bufr/tables/0/wmo/10/codetables/1031.table\
+	bufr/tables/0/wmo/10/codetables/1032.table\
+	bufr/tables/0/wmo/10/codetables/1033.table\
+	bufr/tables/0/wmo/10/codetables/1035.table\
+	bufr/tables/0/wmo/10/codetables/1090.table\
+	bufr/tables/0/wmo/10/codetables/1092.table\
+	bufr/tables/0/wmo/10/codetables/11031.table\
+	bufr/tables/0/wmo/10/codetables/11037.table\
+	bufr/tables/0/wmo/10/codetables/11038.table\
+	bufr/tables/0/wmo/10/codetables/11039.table\
+	bufr/tables/0/wmo/10/codetables/13038.table\
+	bufr/tables/0/wmo/10/codetables/13039.table\
+	bufr/tables/0/wmo/10/codetables/13040.table\
+	bufr/tables/0/wmo/10/codetables/13041.table\
+	bufr/tables/0/wmo/10/codetables/13051.table\
+	bufr/tables/0/wmo/10/codetables/13056.table\
+	bufr/tables/0/wmo/10/codetables/13057.table\
+	bufr/tables/0/wmo/10/codetables/15025.table\
+	bufr/tables/0/wmo/10/codetables/19001.table\
+	bufr/tables/0/wmo/10/codetables/19008.table\
+	bufr/tables/0/wmo/10/codetables/19010.table\
+	bufr/tables/0/wmo/10/codetables/20003.table\
+	bufr/tables/0/wmo/10/codetables/20004.table\
+	bufr/tables/0/wmo/10/codetables/20005.table\
+	bufr/tables/0/wmo/10/codetables/20008.table\
+	bufr/tables/0/wmo/10/codetables/20009.table\
+	bufr/tables/0/wmo/10/codetables/2001.table\
+	bufr/tables/0/wmo/10/codetables/20011.table\
+	bufr/tables/0/wmo/10/codetables/20012.table\
+	bufr/tables/0/wmo/10/codetables/20017.table\
+	bufr/tables/0/wmo/10/codetables/20018.table\
+	bufr/tables/0/wmo/10/codetables/2002.table\
+	bufr/tables/0/wmo/10/codetables/20021.table\
+	bufr/tables/0/wmo/10/codetables/20022.table\
+	bufr/tables/0/wmo/10/codetables/20023.table\
+	bufr/tables/0/wmo/10/codetables/20024.table\
+	bufr/tables/0/wmo/10/codetables/20025.table\
+	bufr/tables/0/wmo/10/codetables/20026.table\
+	bufr/tables/0/wmo/10/codetables/20027.table\
+	bufr/tables/0/wmo/10/codetables/20029.table\
+	bufr/tables/0/wmo/10/codetables/2003.table\
+	bufr/tables/0/wmo/10/codetables/20032.table\
+	bufr/tables/0/wmo/10/codetables/20033.table\
+	bufr/tables/0/wmo/10/codetables/20034.table\
+	bufr/tables/0/wmo/10/codetables/20035.table\
+	bufr/tables/0/wmo/10/codetables/20036.table\
+	bufr/tables/0/wmo/10/codetables/20037.table\
+	bufr/tables/0/wmo/10/codetables/2004.table\
+	bufr/tables/0/wmo/10/codetables/20040.table\
+	bufr/tables/0/wmo/10/codetables/20041.table\
+	bufr/tables/0/wmo/10/codetables/20042.table\
+	bufr/tables/0/wmo/10/codetables/20045.table\
+	bufr/tables/0/wmo/10/codetables/20050.table\
+	bufr/tables/0/wmo/10/codetables/20055.table\
+	bufr/tables/0/wmo/10/codetables/20056.table\
+	bufr/tables/0/wmo/10/codetables/20062.table\
+	bufr/tables/0/wmo/10/codetables/20063.table\
+	bufr/tables/0/wmo/10/codetables/20071.table\
+	bufr/tables/0/wmo/10/codetables/20086.table\
+	bufr/tables/0/wmo/10/codetables/20090.table\
+	bufr/tables/0/wmo/10/codetables/20101.table\
+	bufr/tables/0/wmo/10/codetables/20102.table\
+	bufr/tables/0/wmo/10/codetables/2011.table\
+	bufr/tables/0/wmo/10/codetables/2012.table\
+	bufr/tables/0/wmo/10/codetables/2013.table\
+	bufr/tables/0/wmo/10/codetables/2014.table\
+	bufr/tables/0/wmo/10/codetables/2015.table\
+	bufr/tables/0/wmo/10/codetables/2016.table\
+	bufr/tables/0/wmo/10/codetables/2019.table\
+	bufr/tables/0/wmo/10/codetables/2020.table\
+	bufr/tables/0/wmo/10/codetables/2021.table\
+	bufr/tables/0/wmo/10/codetables/2022.table\
+	bufr/tables/0/wmo/10/codetables/2023.table\
+	bufr/tables/0/wmo/10/codetables/2024.table\
+	bufr/tables/0/wmo/10/codetables/2025.table\
+	bufr/tables/0/wmo/10/codetables/2030.table\
+	bufr/tables/0/wmo/10/codetables/2031.table\
+	bufr/tables/0/wmo/10/codetables/2032.table\
+	bufr/tables/0/wmo/10/codetables/2033.table\
+	bufr/tables/0/wmo/10/codetables/2034.table\
+	bufr/tables/0/wmo/10/codetables/2036.table\
+	bufr/tables/0/wmo/10/codetables/2037.table\
+	bufr/tables/0/wmo/10/codetables/2038.table\
+	bufr/tables/0/wmo/10/codetables/2039.table\
+	bufr/tables/0/wmo/10/codetables/2040.table\
+	bufr/tables/0/wmo/10/codetables/2041.table\
+	bufr/tables/0/wmo/10/codetables/2044.table\
+	bufr/tables/0/wmo/10/codetables/2045.table\
+	bufr/tables/0/wmo/10/codetables/2046.table\
+	bufr/tables/0/wmo/10/codetables/2048.table\
+	bufr/tables/0/wmo/10/codetables/2049.table\
+	bufr/tables/0/wmo/10/codetables/2050.table\
+	bufr/tables/0/wmo/10/codetables/2051.table\
+	bufr/tables/0/wmo/10/codetables/2052.table\
+	bufr/tables/0/wmo/10/codetables/2053.table\
+	bufr/tables/0/wmo/10/codetables/2054.table\
+	bufr/tables/0/wmo/10/codetables/2055.table\
+	bufr/tables/0/wmo/10/codetables/2056.table\
+	bufr/tables/0/wmo/10/codetables/2057.table\
+	bufr/tables/0/wmo/10/codetables/2058.table\
+	bufr/tables/0/wmo/10/codetables/2059.table\
+	bufr/tables/0/wmo/10/codetables/2060.table\
+	bufr/tables/0/wmo/10/codetables/2061.table\
+	bufr/tables/0/wmo/10/codetables/2062.table\
+	bufr/tables/0/wmo/10/codetables/2064.table\
+	bufr/tables/0/wmo/10/codetables/2066.table\
+	bufr/tables/0/wmo/10/codetables/2070.table\
+	bufr/tables/0/wmo/10/codetables/2080.table\
+	bufr/tables/0/wmo/10/codetables/2081.table\
+	bufr/tables/0/wmo/10/codetables/2083.table\
+	bufr/tables/0/wmo/10/codetables/2084.table\
+	bufr/tables/0/wmo/10/codetables/2095.table\
+	bufr/tables/0/wmo/10/codetables/2096.table\
+	bufr/tables/0/wmo/10/codetables/2097.table\
+	bufr/tables/0/wmo/10/codetables/2098.table\
+	bufr/tables/0/wmo/10/codetables/2101.table\
+	bufr/tables/0/wmo/10/codetables/2103.table\
+	bufr/tables/0/wmo/10/codetables/2104.table\
+	bufr/tables/0/wmo/10/codetables/21066.table\
+	bufr/tables/0/wmo/10/codetables/21067.table\
+	bufr/tables/0/wmo/10/codetables/21068.table\
+	bufr/tables/0/wmo/10/codetables/21069.table\
+	bufr/tables/0/wmo/10/codetables/21070.table\
+	bufr/tables/0/wmo/10/codetables/21072.table\
+	bufr/tables/0/wmo/10/codetables/21073.table\
+	bufr/tables/0/wmo/10/codetables/21076.table\
+	bufr/tables/0/wmo/10/codetables/21109.table\
+	bufr/tables/0/wmo/10/codetables/21115.table\
+	bufr/tables/0/wmo/10/codetables/21116.table\
+	bufr/tables/0/wmo/10/codetables/21119.table\
+	bufr/tables/0/wmo/10/codetables/21144.table\
+	bufr/tables/0/wmo/10/codetables/2115.table\
+	bufr/tables/0/wmo/10/codetables/21150.table\
+	bufr/tables/0/wmo/10/codetables/21155.table\
+	bufr/tables/0/wmo/10/codetables/21158.table\
+	bufr/tables/0/wmo/10/codetables/21159.table\
+	bufr/tables/0/wmo/10/codetables/21169.table\
+	bufr/tables/0/wmo/10/codetables/2119.table\
+	bufr/tables/0/wmo/10/codetables/2131.table\
+	bufr/tables/0/wmo/10/codetables/2143.table\
+	bufr/tables/0/wmo/10/codetables/2144.table\
+	bufr/tables/0/wmo/10/codetables/2145.table\
+	bufr/tables/0/wmo/10/codetables/2146.table\
+	bufr/tables/0/wmo/10/codetables/2148.table\
+	bufr/tables/0/wmo/10/codetables/2149.table\
+	bufr/tables/0/wmo/10/codetables/2150.table\
+	bufr/tables/0/wmo/10/codetables/2151.table\
+	bufr/tables/0/wmo/10/codetables/2152.table\
+	bufr/tables/0/wmo/10/codetables/2158.table\
+	bufr/tables/0/wmo/10/codetables/2159.table\
+	bufr/tables/0/wmo/10/codetables/2163.table\
+	bufr/tables/0/wmo/10/codetables/2164.table\
+	bufr/tables/0/wmo/10/codetables/2166.table\
+	bufr/tables/0/wmo/10/codetables/2167.table\
+	bufr/tables/0/wmo/10/codetables/2169.table\
+	bufr/tables/0/wmo/10/codetables/2172.table\
+	bufr/tables/0/wmo/10/codetables/2175.table\
+	bufr/tables/0/wmo/10/codetables/2176.table\
+	bufr/tables/0/wmo/10/codetables/2177.table\
+	bufr/tables/0/wmo/10/codetables/2178.table\
+	bufr/tables/0/wmo/10/codetables/2179.table\
+	bufr/tables/0/wmo/10/codetables/2180.table\
+	bufr/tables/0/wmo/10/codetables/2181.table\
+	bufr/tables/0/wmo/10/codetables/2182.table\
+	bufr/tables/0/wmo/10/codetables/2183.table\
+	bufr/tables/0/wmo/10/codetables/2184.table\
+	bufr/tables/0/wmo/10/codetables/2185.table\
+	bufr/tables/0/wmo/10/codetables/2186.table\
+	bufr/tables/0/wmo/10/codetables/2187.table\
+	bufr/tables/0/wmo/10/codetables/2188.table\
+	bufr/tables/0/wmo/10/codetables/2189.table\
+	bufr/tables/0/wmo/10/codetables/22056.table\
+	bufr/tables/0/wmo/10/codetables/22060.table\
+	bufr/tables/0/wmo/10/codetables/22061.table\
+	bufr/tables/0/wmo/10/codetables/22067.table\
+	bufr/tables/0/wmo/10/codetables/22068.table\
+	bufr/tables/0/wmo/10/codetables/22120.table\
+	bufr/tables/0/wmo/10/codetables/22121.table\
+	bufr/tables/0/wmo/10/codetables/22122.table\
+	bufr/tables/0/wmo/10/codetables/22123.table\
+	bufr/tables/0/wmo/10/codetables/23001.table\
+	bufr/tables/0/wmo/10/codetables/23002.table\
+	bufr/tables/0/wmo/10/codetables/23003.table\
+	bufr/tables/0/wmo/10/codetables/23004.table\
+	bufr/tables/0/wmo/10/codetables/23005.table\
+	bufr/tables/0/wmo/10/codetables/23006.table\
+	bufr/tables/0/wmo/10/codetables/23007.table\
+	bufr/tables/0/wmo/10/codetables/23008.table\
+	bufr/tables/0/wmo/10/codetables/23009.table\
+	bufr/tables/0/wmo/10/codetables/23016.table\
+	bufr/tables/0/wmo/10/codetables/23018.table\
+	bufr/tables/0/wmo/10/codetables/23031.table\
+	bufr/tables/0/wmo/10/codetables/23032.table\
+	bufr/tables/0/wmo/10/codetables/24003.table\
+	bufr/tables/0/wmo/10/codetables/25004.table\
+	bufr/tables/0/wmo/10/codetables/25005.table\
+	bufr/tables/0/wmo/10/codetables/25006.table\
+	bufr/tables/0/wmo/10/codetables/25009.table\
+	bufr/tables/0/wmo/10/codetables/25010.table\
+	bufr/tables/0/wmo/10/codetables/25011.table\
+	bufr/tables/0/wmo/10/codetables/25012.table\
+	bufr/tables/0/wmo/10/codetables/25013.table\
+	bufr/tables/0/wmo/10/codetables/25015.table\
+	bufr/tables/0/wmo/10/codetables/25017.table\
+	bufr/tables/0/wmo/10/codetables/25020.table\
+	bufr/tables/0/wmo/10/codetables/25021.table\
+	bufr/tables/0/wmo/10/codetables/25030.table\
+	bufr/tables/0/wmo/10/codetables/25032.table\
+	bufr/tables/0/wmo/10/codetables/25033.table\
+	bufr/tables/0/wmo/10/codetables/25034.table\
+	bufr/tables/0/wmo/10/codetables/25036.table\
+	bufr/tables/0/wmo/10/codetables/25040.table\
+	bufr/tables/0/wmo/10/codetables/25041.table\
+	bufr/tables/0/wmo/10/codetables/25042.table\
+	bufr/tables/0/wmo/10/codetables/25045.table\
+	bufr/tables/0/wmo/10/codetables/25046.table\
+	bufr/tables/0/wmo/10/codetables/25047.table\
+	bufr/tables/0/wmo/10/codetables/25048.table\
+	bufr/tables/0/wmo/10/codetables/25049.table\
+	bufr/tables/0/wmo/10/codetables/25051.table\
+	bufr/tables/0/wmo/10/codetables/25053.table\
+	bufr/tables/0/wmo/10/codetables/25069.table\
+	bufr/tables/0/wmo/10/codetables/25086.table\
+	bufr/tables/0/wmo/10/codetables/25093.table\
+	bufr/tables/0/wmo/10/codetables/25095.table\
+	bufr/tables/0/wmo/10/codetables/25096.table\
+	bufr/tables/0/wmo/10/codetables/25097.table\
+	bufr/tables/0/wmo/10/codetables/25098.table\
+	bufr/tables/0/wmo/10/codetables/25099.table\
+	bufr/tables/0/wmo/10/codetables/25110.table\
+	bufr/tables/0/wmo/10/codetables/25120.table\
+	bufr/tables/0/wmo/10/codetables/25122.table\
+	bufr/tables/0/wmo/10/codetables/25123.table\
+	bufr/tables/0/wmo/10/codetables/25124.table\
+	bufr/tables/0/wmo/10/codetables/26010.table\
+	bufr/tables/0/wmo/10/codetables/29001.table\
+	bufr/tables/0/wmo/10/codetables/29002.table\
+	bufr/tables/0/wmo/10/codetables/30031.table\
+	bufr/tables/0/wmo/10/codetables/30032.table\
+	bufr/tables/0/wmo/10/codetables/31021.table\
+	bufr/tables/0/wmo/10/codetables/31031.table\
+	bufr/tables/0/wmo/10/codetables/33002.table\
+	bufr/tables/0/wmo/10/codetables/33003.table\
+	bufr/tables/0/wmo/10/codetables/33005.table\
+	bufr/tables/0/wmo/10/codetables/33006.table\
+	bufr/tables/0/wmo/10/codetables/33015.table\
+	bufr/tables/0/wmo/10/codetables/33020.table\
+	bufr/tables/0/wmo/10/codetables/33021.table\
+	bufr/tables/0/wmo/10/codetables/33022.table\
+	bufr/tables/0/wmo/10/codetables/33023.table\
+	bufr/tables/0/wmo/10/codetables/33024.table\
+	bufr/tables/0/wmo/10/codetables/33025.table\
+	bufr/tables/0/wmo/10/codetables/33026.table\
+	bufr/tables/0/wmo/10/codetables/33027.table\
+	bufr/tables/0/wmo/10/codetables/33028.table\
+	bufr/tables/0/wmo/10/codetables/33030.table\
+	bufr/tables/0/wmo/10/codetables/33031.table\
+	bufr/tables/0/wmo/10/codetables/33032.table\
+	bufr/tables/0/wmo/10/codetables/33033.table\
+	bufr/tables/0/wmo/10/codetables/33035.table\
+	bufr/tables/0/wmo/10/codetables/33037.table\
+	bufr/tables/0/wmo/10/codetables/33038.table\
+	bufr/tables/0/wmo/10/codetables/33039.table\
+	bufr/tables/0/wmo/10/codetables/33041.table\
+	bufr/tables/0/wmo/10/codetables/33042.table\
+	bufr/tables/0/wmo/10/codetables/33043.table\
+	bufr/tables/0/wmo/10/codetables/33044.table\
+	bufr/tables/0/wmo/10/codetables/33047.table\
+	bufr/tables/0/wmo/10/codetables/33048.table\
+	bufr/tables/0/wmo/10/codetables/33049.table\
+	bufr/tables/0/wmo/10/codetables/33050.table\
+	bufr/tables/0/wmo/10/codetables/33052.table\
+	bufr/tables/0/wmo/10/codetables/33053.table\
+	bufr/tables/0/wmo/10/codetables/33060.table\
+	bufr/tables/0/wmo/10/codetables/35000.table\
+	bufr/tables/0/wmo/10/codetables/35001.table\
+	bufr/tables/0/wmo/10/codetables/35030.table\
+	bufr/tables/0/wmo/10/codetables/35031.table\
+	bufr/tables/0/wmo/10/codetables/35032.table\
+	bufr/tables/0/wmo/10/codetables/35033.table\
+	bufr/tables/0/wmo/10/codetables/35034.table\
+	bufr/tables/0/wmo/10/codetables/40011.table\
+	bufr/tables/0/wmo/10/codetables/40012.table\
+	bufr/tables/0/wmo/10/codetables/40013.table\
+	bufr/tables/0/wmo/10/codetables/4059.table\
+	bufr/tables/0/wmo/10/codetables/8001.table\
+	bufr/tables/0/wmo/10/codetables/8002.table\
+	bufr/tables/0/wmo/10/codetables/8003.table\
+	bufr/tables/0/wmo/10/codetables/8004.table\
+	bufr/tables/0/wmo/10/codetables/8005.table\
+	bufr/tables/0/wmo/10/codetables/8006.table\
+	bufr/tables/0/wmo/10/codetables/8007.table\
+	bufr/tables/0/wmo/10/codetables/8008.table\
+	bufr/tables/0/wmo/10/codetables/8009.table\
+	bufr/tables/0/wmo/10/codetables/8010.table\
+	bufr/tables/0/wmo/10/codetables/8011.table\
+	bufr/tables/0/wmo/10/codetables/8012.table\
+	bufr/tables/0/wmo/10/codetables/8013.table\
+	bufr/tables/0/wmo/10/codetables/8014.table\
+	bufr/tables/0/wmo/10/codetables/8016.table\
+	bufr/tables/0/wmo/10/codetables/8017.table\
+	bufr/tables/0/wmo/10/codetables/8018.table\
+	bufr/tables/0/wmo/10/codetables/8021.table\
+	bufr/tables/0/wmo/10/codetables/8023.table\
+	bufr/tables/0/wmo/10/codetables/8024.table\
+	bufr/tables/0/wmo/10/codetables/8025.table\
+	bufr/tables/0/wmo/10/codetables/8026.table\
+	bufr/tables/0/wmo/10/codetables/8029.table\
+	bufr/tables/0/wmo/10/codetables/8033.table\
+	bufr/tables/0/wmo/10/codetables/8035.table\
+	bufr/tables/0/wmo/10/codetables/8036.table\
+	bufr/tables/0/wmo/10/codetables/8039.table\
+	bufr/tables/0/wmo/10/codetables/8040.table\
+	bufr/tables/0/wmo/10/codetables/8041.table\
+	bufr/tables/0/wmo/10/codetables/8042.table\
+	bufr/tables/0/wmo/10/codetables/8043.table\
+	bufr/tables/0/wmo/10/codetables/8050.table\
+	bufr/tables/0/wmo/10/codetables/8051.table\
+	bufr/tables/0/wmo/10/codetables/8052.table\
+	bufr/tables/0/wmo/10/codetables/8053.table\
+	bufr/tables/0/wmo/10/codetables/8054.table\
+	bufr/tables/0/wmo/10/codetables/8060.table\
+	bufr/tables/0/wmo/10/codetables/8065.table\
+	bufr/tables/0/wmo/10/codetables/8066.table\
+	bufr/tables/0/wmo/10/codetables/8070.table\
+	bufr/tables/0/wmo/10/codetables/8072.table\
+	bufr/tables/0/wmo/10/codetables/8074.table\
+	bufr/tables/0/wmo/10/codetables/8075.table\
+	bufr/tables/0/wmo/10/codetables/8076.table\
+	bufr/tables/0/wmo/10/codetables/8077.table\
+	bufr/tables/0/wmo/10/codetables/8079.table\
+	bufr/tables/0/wmo/10/codetables/8080.table\
+	bufr/tables/0/wmo/10/codetables/8081.table\
+	bufr/tables/0/wmo/10/codetables/8082.table\
+	bufr/tables/0/wmo/10/codetables/8083.table\
+	bufr/tables/0/wmo/10/codetables/8085.table
+
+definitionsbufr_tables_0_wmo_11dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/11
+dist_definitionsbufr_tables_0_wmo_11_DATA = \
+	bufr/tables/0/wmo/11/element.table\
+	bufr/tables/0/wmo/11/sequence.def
+
+definitionsbufr_tables_0_wmo_11_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/11/codetables
+dist_definitionsbufr_tables_0_wmo_11_codetables_DATA = \
+	bufr/tables/0/wmo/11/codetables/1003.table\
+	bufr/tables/0/wmo/11/codetables/10063.table\
+	bufr/tables/0/wmo/11/codetables/10064.table\
+	bufr/tables/0/wmo/11/codetables/1007.table\
+	bufr/tables/0/wmo/11/codetables/1031.table\
+	bufr/tables/0/wmo/11/codetables/1032.table\
+	bufr/tables/0/wmo/11/codetables/1033.table\
+	bufr/tables/0/wmo/11/codetables/1035.table\
+	bufr/tables/0/wmo/11/codetables/1090.table\
+	bufr/tables/0/wmo/11/codetables/1092.table\
+	bufr/tables/0/wmo/11/codetables/11031.table\
+	bufr/tables/0/wmo/11/codetables/11037.table\
+	bufr/tables/0/wmo/11/codetables/11038.table\
+	bufr/tables/0/wmo/11/codetables/11039.table\
+	bufr/tables/0/wmo/11/codetables/13038.table\
+	bufr/tables/0/wmo/11/codetables/13039.table\
+	bufr/tables/0/wmo/11/codetables/13040.table\
+	bufr/tables/0/wmo/11/codetables/13041.table\
+	bufr/tables/0/wmo/11/codetables/13051.table\
+	bufr/tables/0/wmo/11/codetables/13056.table\
+	bufr/tables/0/wmo/11/codetables/13057.table\
+	bufr/tables/0/wmo/11/codetables/15025.table\
+	bufr/tables/0/wmo/11/codetables/19001.table\
+	bufr/tables/0/wmo/11/codetables/19008.table\
+	bufr/tables/0/wmo/11/codetables/19010.table\
+	bufr/tables/0/wmo/11/codetables/20003.table\
+	bufr/tables/0/wmo/11/codetables/20004.table\
+	bufr/tables/0/wmo/11/codetables/20005.table\
+	bufr/tables/0/wmo/11/codetables/20008.table\
+	bufr/tables/0/wmo/11/codetables/20009.table\
+	bufr/tables/0/wmo/11/codetables/2001.table\
+	bufr/tables/0/wmo/11/codetables/20011.table\
+	bufr/tables/0/wmo/11/codetables/20012.table\
+	bufr/tables/0/wmo/11/codetables/20017.table\
+	bufr/tables/0/wmo/11/codetables/20018.table\
+	bufr/tables/0/wmo/11/codetables/2002.table\
+	bufr/tables/0/wmo/11/codetables/20021.table\
+	bufr/tables/0/wmo/11/codetables/20022.table\
+	bufr/tables/0/wmo/11/codetables/20023.table\
+	bufr/tables/0/wmo/11/codetables/20024.table\
+	bufr/tables/0/wmo/11/codetables/20025.table\
+	bufr/tables/0/wmo/11/codetables/20026.table\
+	bufr/tables/0/wmo/11/codetables/20027.table\
+	bufr/tables/0/wmo/11/codetables/20029.table\
+	bufr/tables/0/wmo/11/codetables/2003.table\
+	bufr/tables/0/wmo/11/codetables/20032.table\
+	bufr/tables/0/wmo/11/codetables/20033.table\
+	bufr/tables/0/wmo/11/codetables/20034.table\
+	bufr/tables/0/wmo/11/codetables/20035.table\
+	bufr/tables/0/wmo/11/codetables/20036.table\
+	bufr/tables/0/wmo/11/codetables/20037.table\
+	bufr/tables/0/wmo/11/codetables/2004.table\
+	bufr/tables/0/wmo/11/codetables/20040.table\
+	bufr/tables/0/wmo/11/codetables/20041.table\
+	bufr/tables/0/wmo/11/codetables/20042.table\
+	bufr/tables/0/wmo/11/codetables/20045.table\
+	bufr/tables/0/wmo/11/codetables/20050.table\
+	bufr/tables/0/wmo/11/codetables/20055.table\
+	bufr/tables/0/wmo/11/codetables/20056.table\
+	bufr/tables/0/wmo/11/codetables/20062.table\
+	bufr/tables/0/wmo/11/codetables/20063.table\
+	bufr/tables/0/wmo/11/codetables/20071.table\
+	bufr/tables/0/wmo/11/codetables/20086.table\
+	bufr/tables/0/wmo/11/codetables/20090.table\
+	bufr/tables/0/wmo/11/codetables/20101.table\
+	bufr/tables/0/wmo/11/codetables/20102.table\
+	bufr/tables/0/wmo/11/codetables/2011.table\
+	bufr/tables/0/wmo/11/codetables/2012.table\
+	bufr/tables/0/wmo/11/codetables/2013.table\
+	bufr/tables/0/wmo/11/codetables/2014.table\
+	bufr/tables/0/wmo/11/codetables/2015.table\
+	bufr/tables/0/wmo/11/codetables/2016.table\
+	bufr/tables/0/wmo/11/codetables/2019.table\
+	bufr/tables/0/wmo/11/codetables/2020.table\
+	bufr/tables/0/wmo/11/codetables/2021.table\
+	bufr/tables/0/wmo/11/codetables/2022.table\
+	bufr/tables/0/wmo/11/codetables/2023.table\
+	bufr/tables/0/wmo/11/codetables/2024.table\
+	bufr/tables/0/wmo/11/codetables/2025.table\
+	bufr/tables/0/wmo/11/codetables/2030.table\
+	bufr/tables/0/wmo/11/codetables/2031.table\
+	bufr/tables/0/wmo/11/codetables/2032.table\
+	bufr/tables/0/wmo/11/codetables/2033.table\
+	bufr/tables/0/wmo/11/codetables/2034.table\
+	bufr/tables/0/wmo/11/codetables/2036.table\
+	bufr/tables/0/wmo/11/codetables/2037.table\
+	bufr/tables/0/wmo/11/codetables/2038.table\
+	bufr/tables/0/wmo/11/codetables/2039.table\
+	bufr/tables/0/wmo/11/codetables/2040.table\
+	bufr/tables/0/wmo/11/codetables/2041.table\
+	bufr/tables/0/wmo/11/codetables/2044.table\
+	bufr/tables/0/wmo/11/codetables/2045.table\
+	bufr/tables/0/wmo/11/codetables/2046.table\
+	bufr/tables/0/wmo/11/codetables/2048.table\
+	bufr/tables/0/wmo/11/codetables/2049.table\
+	bufr/tables/0/wmo/11/codetables/2050.table\
+	bufr/tables/0/wmo/11/codetables/2051.table\
+	bufr/tables/0/wmo/11/codetables/2052.table\
+	bufr/tables/0/wmo/11/codetables/2053.table\
+	bufr/tables/0/wmo/11/codetables/2054.table\
+	bufr/tables/0/wmo/11/codetables/2055.table\
+	bufr/tables/0/wmo/11/codetables/2056.table\
+	bufr/tables/0/wmo/11/codetables/2057.table\
+	bufr/tables/0/wmo/11/codetables/2058.table\
+	bufr/tables/0/wmo/11/codetables/2059.table\
+	bufr/tables/0/wmo/11/codetables/2060.table\
+	bufr/tables/0/wmo/11/codetables/2061.table\
+	bufr/tables/0/wmo/11/codetables/2062.table\
+	bufr/tables/0/wmo/11/codetables/2064.table\
+	bufr/tables/0/wmo/11/codetables/2066.table\
+	bufr/tables/0/wmo/11/codetables/2070.table\
+	bufr/tables/0/wmo/11/codetables/2080.table\
+	bufr/tables/0/wmo/11/codetables/2081.table\
+	bufr/tables/0/wmo/11/codetables/2083.table\
+	bufr/tables/0/wmo/11/codetables/2084.table\
+	bufr/tables/0/wmo/11/codetables/2095.table\
+	bufr/tables/0/wmo/11/codetables/2096.table\
+	bufr/tables/0/wmo/11/codetables/2097.table\
+	bufr/tables/0/wmo/11/codetables/2098.table\
+	bufr/tables/0/wmo/11/codetables/2101.table\
+	bufr/tables/0/wmo/11/codetables/2103.table\
+	bufr/tables/0/wmo/11/codetables/2104.table\
+	bufr/tables/0/wmo/11/codetables/21066.table\
+	bufr/tables/0/wmo/11/codetables/21067.table\
+	bufr/tables/0/wmo/11/codetables/21068.table\
+	bufr/tables/0/wmo/11/codetables/21069.table\
+	bufr/tables/0/wmo/11/codetables/21070.table\
+	bufr/tables/0/wmo/11/codetables/21072.table\
+	bufr/tables/0/wmo/11/codetables/21073.table\
+	bufr/tables/0/wmo/11/codetables/21076.table\
+	bufr/tables/0/wmo/11/codetables/21109.table\
+	bufr/tables/0/wmo/11/codetables/21115.table\
+	bufr/tables/0/wmo/11/codetables/21116.table\
+	bufr/tables/0/wmo/11/codetables/21119.table\
+	bufr/tables/0/wmo/11/codetables/21144.table\
+	bufr/tables/0/wmo/11/codetables/2115.table\
+	bufr/tables/0/wmo/11/codetables/21150.table\
+	bufr/tables/0/wmo/11/codetables/21155.table\
+	bufr/tables/0/wmo/11/codetables/21158.table\
+	bufr/tables/0/wmo/11/codetables/21159.table\
+	bufr/tables/0/wmo/11/codetables/21169.table\
+	bufr/tables/0/wmo/11/codetables/2119.table\
+	bufr/tables/0/wmo/11/codetables/2131.table\
+	bufr/tables/0/wmo/11/codetables/2143.table\
+	bufr/tables/0/wmo/11/codetables/2144.table\
+	bufr/tables/0/wmo/11/codetables/2145.table\
+	bufr/tables/0/wmo/11/codetables/2146.table\
+	bufr/tables/0/wmo/11/codetables/2148.table\
+	bufr/tables/0/wmo/11/codetables/2149.table\
+	bufr/tables/0/wmo/11/codetables/2150.table\
+	bufr/tables/0/wmo/11/codetables/2151.table\
+	bufr/tables/0/wmo/11/codetables/2152.table\
+	bufr/tables/0/wmo/11/codetables/2158.table\
+	bufr/tables/0/wmo/11/codetables/2159.table\
+	bufr/tables/0/wmo/11/codetables/2163.table\
+	bufr/tables/0/wmo/11/codetables/2164.table\
+	bufr/tables/0/wmo/11/codetables/2166.table\
+	bufr/tables/0/wmo/11/codetables/2167.table\
+	bufr/tables/0/wmo/11/codetables/2169.table\
+	bufr/tables/0/wmo/11/codetables/2172.table\
+	bufr/tables/0/wmo/11/codetables/2175.table\
+	bufr/tables/0/wmo/11/codetables/2176.table\
+	bufr/tables/0/wmo/11/codetables/2177.table\
+	bufr/tables/0/wmo/11/codetables/2178.table\
+	bufr/tables/0/wmo/11/codetables/2179.table\
+	bufr/tables/0/wmo/11/codetables/2180.table\
+	bufr/tables/0/wmo/11/codetables/2181.table\
+	bufr/tables/0/wmo/11/codetables/2182.table\
+	bufr/tables/0/wmo/11/codetables/2183.table\
+	bufr/tables/0/wmo/11/codetables/2184.table\
+	bufr/tables/0/wmo/11/codetables/2185.table\
+	bufr/tables/0/wmo/11/codetables/2186.table\
+	bufr/tables/0/wmo/11/codetables/2187.table\
+	bufr/tables/0/wmo/11/codetables/2188.table\
+	bufr/tables/0/wmo/11/codetables/2189.table\
+	bufr/tables/0/wmo/11/codetables/22056.table\
+	bufr/tables/0/wmo/11/codetables/22060.table\
+	bufr/tables/0/wmo/11/codetables/22061.table\
+	bufr/tables/0/wmo/11/codetables/22067.table\
+	bufr/tables/0/wmo/11/codetables/22068.table\
+	bufr/tables/0/wmo/11/codetables/22120.table\
+	bufr/tables/0/wmo/11/codetables/22121.table\
+	bufr/tables/0/wmo/11/codetables/22122.table\
+	bufr/tables/0/wmo/11/codetables/22123.table\
+	bufr/tables/0/wmo/11/codetables/23001.table\
+	bufr/tables/0/wmo/11/codetables/23002.table\
+	bufr/tables/0/wmo/11/codetables/23003.table\
+	bufr/tables/0/wmo/11/codetables/23004.table\
+	bufr/tables/0/wmo/11/codetables/23005.table\
+	bufr/tables/0/wmo/11/codetables/23006.table\
+	bufr/tables/0/wmo/11/codetables/23007.table\
+	bufr/tables/0/wmo/11/codetables/23008.table\
+	bufr/tables/0/wmo/11/codetables/23009.table\
+	bufr/tables/0/wmo/11/codetables/23016.table\
+	bufr/tables/0/wmo/11/codetables/23018.table\
+	bufr/tables/0/wmo/11/codetables/23031.table\
+	bufr/tables/0/wmo/11/codetables/23032.table\
+	bufr/tables/0/wmo/11/codetables/24003.table\
+	bufr/tables/0/wmo/11/codetables/25004.table\
+	bufr/tables/0/wmo/11/codetables/25005.table\
+	bufr/tables/0/wmo/11/codetables/25006.table\
+	bufr/tables/0/wmo/11/codetables/25009.table\
+	bufr/tables/0/wmo/11/codetables/25010.table\
+	bufr/tables/0/wmo/11/codetables/25011.table\
+	bufr/tables/0/wmo/11/codetables/25012.table\
+	bufr/tables/0/wmo/11/codetables/25013.table\
+	bufr/tables/0/wmo/11/codetables/25015.table\
+	bufr/tables/0/wmo/11/codetables/25017.table\
+	bufr/tables/0/wmo/11/codetables/25020.table\
+	bufr/tables/0/wmo/11/codetables/25021.table\
+	bufr/tables/0/wmo/11/codetables/25030.table\
+	bufr/tables/0/wmo/11/codetables/25032.table\
+	bufr/tables/0/wmo/11/codetables/25033.table\
+	bufr/tables/0/wmo/11/codetables/25034.table\
+	bufr/tables/0/wmo/11/codetables/25036.table\
+	bufr/tables/0/wmo/11/codetables/25040.table\
+	bufr/tables/0/wmo/11/codetables/25041.table\
+	bufr/tables/0/wmo/11/codetables/25042.table\
+	bufr/tables/0/wmo/11/codetables/25045.table\
+	bufr/tables/0/wmo/11/codetables/25046.table\
+	bufr/tables/0/wmo/11/codetables/25047.table\
+	bufr/tables/0/wmo/11/codetables/25048.table\
+	bufr/tables/0/wmo/11/codetables/25049.table\
+	bufr/tables/0/wmo/11/codetables/25051.table\
+	bufr/tables/0/wmo/11/codetables/25053.table\
+	bufr/tables/0/wmo/11/codetables/25069.table\
+	bufr/tables/0/wmo/11/codetables/25086.table\
+	bufr/tables/0/wmo/11/codetables/25093.table\
+	bufr/tables/0/wmo/11/codetables/25095.table\
+	bufr/tables/0/wmo/11/codetables/25096.table\
+	bufr/tables/0/wmo/11/codetables/25097.table\
+	bufr/tables/0/wmo/11/codetables/25098.table\
+	bufr/tables/0/wmo/11/codetables/25099.table\
+	bufr/tables/0/wmo/11/codetables/25110.table\
+	bufr/tables/0/wmo/11/codetables/25120.table\
+	bufr/tables/0/wmo/11/codetables/25122.table\
+	bufr/tables/0/wmo/11/codetables/25123.table\
+	bufr/tables/0/wmo/11/codetables/25124.table\
+	bufr/tables/0/wmo/11/codetables/26010.table\
+	bufr/tables/0/wmo/11/codetables/29001.table\
+	bufr/tables/0/wmo/11/codetables/29002.table\
+	bufr/tables/0/wmo/11/codetables/30031.table\
+	bufr/tables/0/wmo/11/codetables/30032.table\
+	bufr/tables/0/wmo/11/codetables/31021.table\
+	bufr/tables/0/wmo/11/codetables/31031.table\
+	bufr/tables/0/wmo/11/codetables/33002.table\
+	bufr/tables/0/wmo/11/codetables/33003.table\
+	bufr/tables/0/wmo/11/codetables/33005.table\
+	bufr/tables/0/wmo/11/codetables/33006.table\
+	bufr/tables/0/wmo/11/codetables/33015.table\
+	bufr/tables/0/wmo/11/codetables/33020.table\
+	bufr/tables/0/wmo/11/codetables/33021.table\
+	bufr/tables/0/wmo/11/codetables/33022.table\
+	bufr/tables/0/wmo/11/codetables/33023.table\
+	bufr/tables/0/wmo/11/codetables/33024.table\
+	bufr/tables/0/wmo/11/codetables/33025.table\
+	bufr/tables/0/wmo/11/codetables/33026.table\
+	bufr/tables/0/wmo/11/codetables/33027.table\
+	bufr/tables/0/wmo/11/codetables/33028.table\
+	bufr/tables/0/wmo/11/codetables/33030.table\
+	bufr/tables/0/wmo/11/codetables/33031.table\
+	bufr/tables/0/wmo/11/codetables/33032.table\
+	bufr/tables/0/wmo/11/codetables/33033.table\
+	bufr/tables/0/wmo/11/codetables/33035.table\
+	bufr/tables/0/wmo/11/codetables/33037.table\
+	bufr/tables/0/wmo/11/codetables/33038.table\
+	bufr/tables/0/wmo/11/codetables/33039.table\
+	bufr/tables/0/wmo/11/codetables/33041.table\
+	bufr/tables/0/wmo/11/codetables/33042.table\
+	bufr/tables/0/wmo/11/codetables/33043.table\
+	bufr/tables/0/wmo/11/codetables/33044.table\
+	bufr/tables/0/wmo/11/codetables/33047.table\
+	bufr/tables/0/wmo/11/codetables/33048.table\
+	bufr/tables/0/wmo/11/codetables/33049.table\
+	bufr/tables/0/wmo/11/codetables/33050.table\
+	bufr/tables/0/wmo/11/codetables/33052.table\
+	bufr/tables/0/wmo/11/codetables/33053.table\
+	bufr/tables/0/wmo/11/codetables/33060.table\
+	bufr/tables/0/wmo/11/codetables/35000.table\
+	bufr/tables/0/wmo/11/codetables/35001.table\
+	bufr/tables/0/wmo/11/codetables/35030.table\
+	bufr/tables/0/wmo/11/codetables/35031.table\
+	bufr/tables/0/wmo/11/codetables/35032.table\
+	bufr/tables/0/wmo/11/codetables/35033.table\
+	bufr/tables/0/wmo/11/codetables/35034.table\
+	bufr/tables/0/wmo/11/codetables/40011.table\
+	bufr/tables/0/wmo/11/codetables/40012.table\
+	bufr/tables/0/wmo/11/codetables/40013.table\
+	bufr/tables/0/wmo/11/codetables/4059.table\
+	bufr/tables/0/wmo/11/codetables/8001.table\
+	bufr/tables/0/wmo/11/codetables/8002.table\
+	bufr/tables/0/wmo/11/codetables/8003.table\
+	bufr/tables/0/wmo/11/codetables/8004.table\
+	bufr/tables/0/wmo/11/codetables/8005.table\
+	bufr/tables/0/wmo/11/codetables/8006.table\
+	bufr/tables/0/wmo/11/codetables/8007.table\
+	bufr/tables/0/wmo/11/codetables/8008.table\
+	bufr/tables/0/wmo/11/codetables/8009.table\
+	bufr/tables/0/wmo/11/codetables/8010.table\
+	bufr/tables/0/wmo/11/codetables/8011.table\
+	bufr/tables/0/wmo/11/codetables/8012.table\
+	bufr/tables/0/wmo/11/codetables/8013.table\
+	bufr/tables/0/wmo/11/codetables/8014.table\
+	bufr/tables/0/wmo/11/codetables/8016.table\
+	bufr/tables/0/wmo/11/codetables/8017.table\
+	bufr/tables/0/wmo/11/codetables/8018.table\
+	bufr/tables/0/wmo/11/codetables/8021.table\
+	bufr/tables/0/wmo/11/codetables/8023.table\
+	bufr/tables/0/wmo/11/codetables/8024.table\
+	bufr/tables/0/wmo/11/codetables/8025.table\
+	bufr/tables/0/wmo/11/codetables/8026.table\
+	bufr/tables/0/wmo/11/codetables/8029.table\
+	bufr/tables/0/wmo/11/codetables/8033.table\
+	bufr/tables/0/wmo/11/codetables/8035.table\
+	bufr/tables/0/wmo/11/codetables/8036.table\
+	bufr/tables/0/wmo/11/codetables/8039.table\
+	bufr/tables/0/wmo/11/codetables/8040.table\
+	bufr/tables/0/wmo/11/codetables/8041.table\
+	bufr/tables/0/wmo/11/codetables/8042.table\
+	bufr/tables/0/wmo/11/codetables/8043.table\
+	bufr/tables/0/wmo/11/codetables/8050.table\
+	bufr/tables/0/wmo/11/codetables/8051.table\
+	bufr/tables/0/wmo/11/codetables/8052.table\
+	bufr/tables/0/wmo/11/codetables/8053.table\
+	bufr/tables/0/wmo/11/codetables/8054.table\
+	bufr/tables/0/wmo/11/codetables/8060.table\
+	bufr/tables/0/wmo/11/codetables/8065.table\
+	bufr/tables/0/wmo/11/codetables/8066.table\
+	bufr/tables/0/wmo/11/codetables/8070.table\
+	bufr/tables/0/wmo/11/codetables/8072.table\
+	bufr/tables/0/wmo/11/codetables/8074.table\
+	bufr/tables/0/wmo/11/codetables/8075.table\
+	bufr/tables/0/wmo/11/codetables/8076.table\
+	bufr/tables/0/wmo/11/codetables/8077.table\
+	bufr/tables/0/wmo/11/codetables/8079.table\
+	bufr/tables/0/wmo/11/codetables/8080.table\
+	bufr/tables/0/wmo/11/codetables/8081.table\
+	bufr/tables/0/wmo/11/codetables/8082.table\
+	bufr/tables/0/wmo/11/codetables/8083.table\
+	bufr/tables/0/wmo/11/codetables/8085.table
+
+definitionsbufr_tables_0_wmo_12dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/12
+dist_definitionsbufr_tables_0_wmo_12_DATA = \
+	bufr/tables/0/wmo/12/element.table\
+	bufr/tables/0/wmo/12/sequence.def
+
+definitionsbufr_tables_0_wmo_12_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/12/codetables
+dist_definitionsbufr_tables_0_wmo_12_codetables_DATA = \
+	bufr/tables/0/wmo/12/codetables/1003.table\
+	bufr/tables/0/wmo/12/codetables/10063.table\
+	bufr/tables/0/wmo/12/codetables/10064.table\
+	bufr/tables/0/wmo/12/codetables/1007.table\
+	bufr/tables/0/wmo/12/codetables/1031.table\
+	bufr/tables/0/wmo/12/codetables/1032.table\
+	bufr/tables/0/wmo/12/codetables/1033.table\
+	bufr/tables/0/wmo/12/codetables/1035.table\
+	bufr/tables/0/wmo/12/codetables/1090.table\
+	bufr/tables/0/wmo/12/codetables/1092.table\
+	bufr/tables/0/wmo/12/codetables/11031.table\
+	bufr/tables/0/wmo/12/codetables/11037.table\
+	bufr/tables/0/wmo/12/codetables/11038.table\
+	bufr/tables/0/wmo/12/codetables/11039.table\
+	bufr/tables/0/wmo/12/codetables/13038.table\
+	bufr/tables/0/wmo/12/codetables/13039.table\
+	bufr/tables/0/wmo/12/codetables/13040.table\
+	bufr/tables/0/wmo/12/codetables/13041.table\
+	bufr/tables/0/wmo/12/codetables/13051.table\
+	bufr/tables/0/wmo/12/codetables/13056.table\
+	bufr/tables/0/wmo/12/codetables/13057.table\
+	bufr/tables/0/wmo/12/codetables/15025.table\
+	bufr/tables/0/wmo/12/codetables/19001.table\
+	bufr/tables/0/wmo/12/codetables/19008.table\
+	bufr/tables/0/wmo/12/codetables/19010.table\
+	bufr/tables/0/wmo/12/codetables/20003.table\
+	bufr/tables/0/wmo/12/codetables/20004.table\
+	bufr/tables/0/wmo/12/codetables/20005.table\
+	bufr/tables/0/wmo/12/codetables/20008.table\
+	bufr/tables/0/wmo/12/codetables/20009.table\
+	bufr/tables/0/wmo/12/codetables/2001.table\
+	bufr/tables/0/wmo/12/codetables/20011.table\
+	bufr/tables/0/wmo/12/codetables/20012.table\
+	bufr/tables/0/wmo/12/codetables/20017.table\
+	bufr/tables/0/wmo/12/codetables/20018.table\
+	bufr/tables/0/wmo/12/codetables/2002.table\
+	bufr/tables/0/wmo/12/codetables/20021.table\
+	bufr/tables/0/wmo/12/codetables/20022.table\
+	bufr/tables/0/wmo/12/codetables/20023.table\
+	bufr/tables/0/wmo/12/codetables/20024.table\
+	bufr/tables/0/wmo/12/codetables/20025.table\
+	bufr/tables/0/wmo/12/codetables/20026.table\
+	bufr/tables/0/wmo/12/codetables/20027.table\
+	bufr/tables/0/wmo/12/codetables/20029.table\
+	bufr/tables/0/wmo/12/codetables/2003.table\
+	bufr/tables/0/wmo/12/codetables/20032.table\
+	bufr/tables/0/wmo/12/codetables/20033.table\
+	bufr/tables/0/wmo/12/codetables/20034.table\
+	bufr/tables/0/wmo/12/codetables/20035.table\
+	bufr/tables/0/wmo/12/codetables/20036.table\
+	bufr/tables/0/wmo/12/codetables/20037.table\
+	bufr/tables/0/wmo/12/codetables/2004.table\
+	bufr/tables/0/wmo/12/codetables/20040.table\
+	bufr/tables/0/wmo/12/codetables/20041.table\
+	bufr/tables/0/wmo/12/codetables/20042.table\
+	bufr/tables/0/wmo/12/codetables/20045.table\
+	bufr/tables/0/wmo/12/codetables/20050.table\
+	bufr/tables/0/wmo/12/codetables/20055.table\
+	bufr/tables/0/wmo/12/codetables/20056.table\
+	bufr/tables/0/wmo/12/codetables/20062.table\
+	bufr/tables/0/wmo/12/codetables/20063.table\
+	bufr/tables/0/wmo/12/codetables/20071.table\
+	bufr/tables/0/wmo/12/codetables/20086.table\
+	bufr/tables/0/wmo/12/codetables/20090.table\
+	bufr/tables/0/wmo/12/codetables/20101.table\
+	bufr/tables/0/wmo/12/codetables/20102.table\
+	bufr/tables/0/wmo/12/codetables/2011.table\
+	bufr/tables/0/wmo/12/codetables/2012.table\
+	bufr/tables/0/wmo/12/codetables/2013.table\
+	bufr/tables/0/wmo/12/codetables/2014.table\
+	bufr/tables/0/wmo/12/codetables/2015.table\
+	bufr/tables/0/wmo/12/codetables/2016.table\
+	bufr/tables/0/wmo/12/codetables/2019.table\
+	bufr/tables/0/wmo/12/codetables/2020.table\
+	bufr/tables/0/wmo/12/codetables/2021.table\
+	bufr/tables/0/wmo/12/codetables/2022.table\
+	bufr/tables/0/wmo/12/codetables/2023.table\
+	bufr/tables/0/wmo/12/codetables/2024.table\
+	bufr/tables/0/wmo/12/codetables/2025.table\
+	bufr/tables/0/wmo/12/codetables/2030.table\
+	bufr/tables/0/wmo/12/codetables/2031.table\
+	bufr/tables/0/wmo/12/codetables/2032.table\
+	bufr/tables/0/wmo/12/codetables/2033.table\
+	bufr/tables/0/wmo/12/codetables/2034.table\
+	bufr/tables/0/wmo/12/codetables/2036.table\
+	bufr/tables/0/wmo/12/codetables/2037.table\
+	bufr/tables/0/wmo/12/codetables/2038.table\
+	bufr/tables/0/wmo/12/codetables/2039.table\
+	bufr/tables/0/wmo/12/codetables/2040.table\
+	bufr/tables/0/wmo/12/codetables/2041.table\
+	bufr/tables/0/wmo/12/codetables/2044.table\
+	bufr/tables/0/wmo/12/codetables/2045.table\
+	bufr/tables/0/wmo/12/codetables/2046.table\
+	bufr/tables/0/wmo/12/codetables/2048.table\
+	bufr/tables/0/wmo/12/codetables/2049.table\
+	bufr/tables/0/wmo/12/codetables/2050.table\
+	bufr/tables/0/wmo/12/codetables/2051.table\
+	bufr/tables/0/wmo/12/codetables/2052.table\
+	bufr/tables/0/wmo/12/codetables/2053.table\
+	bufr/tables/0/wmo/12/codetables/2054.table\
+	bufr/tables/0/wmo/12/codetables/2055.table\
+	bufr/tables/0/wmo/12/codetables/2056.table\
+	bufr/tables/0/wmo/12/codetables/2057.table\
+	bufr/tables/0/wmo/12/codetables/2058.table\
+	bufr/tables/0/wmo/12/codetables/2059.table\
+	bufr/tables/0/wmo/12/codetables/2060.table\
+	bufr/tables/0/wmo/12/codetables/2061.table\
+	bufr/tables/0/wmo/12/codetables/2062.table\
+	bufr/tables/0/wmo/12/codetables/2064.table\
+	bufr/tables/0/wmo/12/codetables/2066.table\
+	bufr/tables/0/wmo/12/codetables/2070.table\
+	bufr/tables/0/wmo/12/codetables/2080.table\
+	bufr/tables/0/wmo/12/codetables/2081.table\
+	bufr/tables/0/wmo/12/codetables/2083.table\
+	bufr/tables/0/wmo/12/codetables/2084.table\
+	bufr/tables/0/wmo/12/codetables/2095.table\
+	bufr/tables/0/wmo/12/codetables/2096.table\
+	bufr/tables/0/wmo/12/codetables/2097.table\
+	bufr/tables/0/wmo/12/codetables/2098.table\
+	bufr/tables/0/wmo/12/codetables/2101.table\
+	bufr/tables/0/wmo/12/codetables/2103.table\
+	bufr/tables/0/wmo/12/codetables/2104.table\
+	bufr/tables/0/wmo/12/codetables/21066.table\
+	bufr/tables/0/wmo/12/codetables/21067.table\
+	bufr/tables/0/wmo/12/codetables/21068.table\
+	bufr/tables/0/wmo/12/codetables/21069.table\
+	bufr/tables/0/wmo/12/codetables/21070.table\
+	bufr/tables/0/wmo/12/codetables/21072.table\
+	bufr/tables/0/wmo/12/codetables/21073.table\
+	bufr/tables/0/wmo/12/codetables/21076.table\
+	bufr/tables/0/wmo/12/codetables/21109.table\
+	bufr/tables/0/wmo/12/codetables/21115.table\
+	bufr/tables/0/wmo/12/codetables/21116.table\
+	bufr/tables/0/wmo/12/codetables/21119.table\
+	bufr/tables/0/wmo/12/codetables/21144.table\
+	bufr/tables/0/wmo/12/codetables/2115.table\
+	bufr/tables/0/wmo/12/codetables/21150.table\
+	bufr/tables/0/wmo/12/codetables/21155.table\
+	bufr/tables/0/wmo/12/codetables/21158.table\
+	bufr/tables/0/wmo/12/codetables/21159.table\
+	bufr/tables/0/wmo/12/codetables/21169.table\
+	bufr/tables/0/wmo/12/codetables/2119.table\
+	bufr/tables/0/wmo/12/codetables/2131.table\
+	bufr/tables/0/wmo/12/codetables/2143.table\
+	bufr/tables/0/wmo/12/codetables/2144.table\
+	bufr/tables/0/wmo/12/codetables/2145.table\
+	bufr/tables/0/wmo/12/codetables/2146.table\
+	bufr/tables/0/wmo/12/codetables/2148.table\
+	bufr/tables/0/wmo/12/codetables/2149.table\
+	bufr/tables/0/wmo/12/codetables/2150.table\
+	bufr/tables/0/wmo/12/codetables/2151.table\
+	bufr/tables/0/wmo/12/codetables/2152.table\
+	bufr/tables/0/wmo/12/codetables/2158.table\
+	bufr/tables/0/wmo/12/codetables/2159.table\
+	bufr/tables/0/wmo/12/codetables/2163.table\
+	bufr/tables/0/wmo/12/codetables/2164.table\
+	bufr/tables/0/wmo/12/codetables/2166.table\
+	bufr/tables/0/wmo/12/codetables/2167.table\
+	bufr/tables/0/wmo/12/codetables/2169.table\
+	bufr/tables/0/wmo/12/codetables/2172.table\
+	bufr/tables/0/wmo/12/codetables/2175.table\
+	bufr/tables/0/wmo/12/codetables/2176.table\
+	bufr/tables/0/wmo/12/codetables/2177.table\
+	bufr/tables/0/wmo/12/codetables/2178.table\
+	bufr/tables/0/wmo/12/codetables/2179.table\
+	bufr/tables/0/wmo/12/codetables/2180.table\
+	bufr/tables/0/wmo/12/codetables/2181.table\
+	bufr/tables/0/wmo/12/codetables/2182.table\
+	bufr/tables/0/wmo/12/codetables/2183.table\
+	bufr/tables/0/wmo/12/codetables/2184.table\
+	bufr/tables/0/wmo/12/codetables/2185.table\
+	bufr/tables/0/wmo/12/codetables/2186.table\
+	bufr/tables/0/wmo/12/codetables/2187.table\
+	bufr/tables/0/wmo/12/codetables/2188.table\
+	bufr/tables/0/wmo/12/codetables/2189.table\
+	bufr/tables/0/wmo/12/codetables/22056.table\
+	bufr/tables/0/wmo/12/codetables/22060.table\
+	bufr/tables/0/wmo/12/codetables/22061.table\
+	bufr/tables/0/wmo/12/codetables/22067.table\
+	bufr/tables/0/wmo/12/codetables/22068.table\
+	bufr/tables/0/wmo/12/codetables/22120.table\
+	bufr/tables/0/wmo/12/codetables/22121.table\
+	bufr/tables/0/wmo/12/codetables/22122.table\
+	bufr/tables/0/wmo/12/codetables/22123.table\
+	bufr/tables/0/wmo/12/codetables/23001.table\
+	bufr/tables/0/wmo/12/codetables/23002.table\
+	bufr/tables/0/wmo/12/codetables/23003.table\
+	bufr/tables/0/wmo/12/codetables/23004.table\
+	bufr/tables/0/wmo/12/codetables/23005.table\
+	bufr/tables/0/wmo/12/codetables/23006.table\
+	bufr/tables/0/wmo/12/codetables/23007.table\
+	bufr/tables/0/wmo/12/codetables/23008.table\
+	bufr/tables/0/wmo/12/codetables/23009.table\
+	bufr/tables/0/wmo/12/codetables/23016.table\
+	bufr/tables/0/wmo/12/codetables/23018.table\
+	bufr/tables/0/wmo/12/codetables/23031.table\
+	bufr/tables/0/wmo/12/codetables/23032.table\
+	bufr/tables/0/wmo/12/codetables/24003.table\
+	bufr/tables/0/wmo/12/codetables/25004.table\
+	bufr/tables/0/wmo/12/codetables/25005.table\
+	bufr/tables/0/wmo/12/codetables/25006.table\
+	bufr/tables/0/wmo/12/codetables/25009.table\
+	bufr/tables/0/wmo/12/codetables/25010.table\
+	bufr/tables/0/wmo/12/codetables/25011.table\
+	bufr/tables/0/wmo/12/codetables/25012.table\
+	bufr/tables/0/wmo/12/codetables/25013.table\
+	bufr/tables/0/wmo/12/codetables/25015.table\
+	bufr/tables/0/wmo/12/codetables/25017.table\
+	bufr/tables/0/wmo/12/codetables/25020.table\
+	bufr/tables/0/wmo/12/codetables/25021.table\
+	bufr/tables/0/wmo/12/codetables/25030.table\
+	bufr/tables/0/wmo/12/codetables/25032.table\
+	bufr/tables/0/wmo/12/codetables/25033.table\
+	bufr/tables/0/wmo/12/codetables/25034.table\
+	bufr/tables/0/wmo/12/codetables/25036.table\
+	bufr/tables/0/wmo/12/codetables/25040.table\
+	bufr/tables/0/wmo/12/codetables/25041.table\
+	bufr/tables/0/wmo/12/codetables/25042.table\
+	bufr/tables/0/wmo/12/codetables/25045.table\
+	bufr/tables/0/wmo/12/codetables/25046.table\
+	bufr/tables/0/wmo/12/codetables/25047.table\
+	bufr/tables/0/wmo/12/codetables/25048.table\
+	bufr/tables/0/wmo/12/codetables/25049.table\
+	bufr/tables/0/wmo/12/codetables/25051.table\
+	bufr/tables/0/wmo/12/codetables/25053.table\
+	bufr/tables/0/wmo/12/codetables/25069.table\
+	bufr/tables/0/wmo/12/codetables/25086.table\
+	bufr/tables/0/wmo/12/codetables/25093.table\
+	bufr/tables/0/wmo/12/codetables/25095.table\
+	bufr/tables/0/wmo/12/codetables/25096.table\
+	bufr/tables/0/wmo/12/codetables/25097.table\
+	bufr/tables/0/wmo/12/codetables/25098.table\
+	bufr/tables/0/wmo/12/codetables/25099.table\
+	bufr/tables/0/wmo/12/codetables/25110.table\
+	bufr/tables/0/wmo/12/codetables/25120.table\
+	bufr/tables/0/wmo/12/codetables/25122.table\
+	bufr/tables/0/wmo/12/codetables/25123.table\
+	bufr/tables/0/wmo/12/codetables/25124.table\
+	bufr/tables/0/wmo/12/codetables/26010.table\
+	bufr/tables/0/wmo/12/codetables/29001.table\
+	bufr/tables/0/wmo/12/codetables/29002.table\
+	bufr/tables/0/wmo/12/codetables/30031.table\
+	bufr/tables/0/wmo/12/codetables/30032.table\
+	bufr/tables/0/wmo/12/codetables/31021.table\
+	bufr/tables/0/wmo/12/codetables/31031.table\
+	bufr/tables/0/wmo/12/codetables/33002.table\
+	bufr/tables/0/wmo/12/codetables/33003.table\
+	bufr/tables/0/wmo/12/codetables/33005.table\
+	bufr/tables/0/wmo/12/codetables/33006.table\
+	bufr/tables/0/wmo/12/codetables/33015.table\
+	bufr/tables/0/wmo/12/codetables/33020.table\
+	bufr/tables/0/wmo/12/codetables/33021.table\
+	bufr/tables/0/wmo/12/codetables/33022.table\
+	bufr/tables/0/wmo/12/codetables/33023.table\
+	bufr/tables/0/wmo/12/codetables/33024.table\
+	bufr/tables/0/wmo/12/codetables/33025.table\
+	bufr/tables/0/wmo/12/codetables/33026.table\
+	bufr/tables/0/wmo/12/codetables/33027.table\
+	bufr/tables/0/wmo/12/codetables/33028.table\
+	bufr/tables/0/wmo/12/codetables/33030.table\
+	bufr/tables/0/wmo/12/codetables/33031.table\
+	bufr/tables/0/wmo/12/codetables/33032.table\
+	bufr/tables/0/wmo/12/codetables/33033.table\
+	bufr/tables/0/wmo/12/codetables/33035.table\
+	bufr/tables/0/wmo/12/codetables/33037.table\
+	bufr/tables/0/wmo/12/codetables/33038.table\
+	bufr/tables/0/wmo/12/codetables/33039.table\
+	bufr/tables/0/wmo/12/codetables/33041.table\
+	bufr/tables/0/wmo/12/codetables/33042.table\
+	bufr/tables/0/wmo/12/codetables/33043.table\
+	bufr/tables/0/wmo/12/codetables/33044.table\
+	bufr/tables/0/wmo/12/codetables/33047.table\
+	bufr/tables/0/wmo/12/codetables/33048.table\
+	bufr/tables/0/wmo/12/codetables/33049.table\
+	bufr/tables/0/wmo/12/codetables/33050.table\
+	bufr/tables/0/wmo/12/codetables/33052.table\
+	bufr/tables/0/wmo/12/codetables/33053.table\
+	bufr/tables/0/wmo/12/codetables/33060.table\
+	bufr/tables/0/wmo/12/codetables/35000.table\
+	bufr/tables/0/wmo/12/codetables/35001.table\
+	bufr/tables/0/wmo/12/codetables/35030.table\
+	bufr/tables/0/wmo/12/codetables/35031.table\
+	bufr/tables/0/wmo/12/codetables/35032.table\
+	bufr/tables/0/wmo/12/codetables/35033.table\
+	bufr/tables/0/wmo/12/codetables/35034.table\
+	bufr/tables/0/wmo/12/codetables/40011.table\
+	bufr/tables/0/wmo/12/codetables/40012.table\
+	bufr/tables/0/wmo/12/codetables/40013.table\
+	bufr/tables/0/wmo/12/codetables/4059.table\
+	bufr/tables/0/wmo/12/codetables/8001.table\
+	bufr/tables/0/wmo/12/codetables/8002.table\
+	bufr/tables/0/wmo/12/codetables/8003.table\
+	bufr/tables/0/wmo/12/codetables/8004.table\
+	bufr/tables/0/wmo/12/codetables/8005.table\
+	bufr/tables/0/wmo/12/codetables/8006.table\
+	bufr/tables/0/wmo/12/codetables/8007.table\
+	bufr/tables/0/wmo/12/codetables/8008.table\
+	bufr/tables/0/wmo/12/codetables/8009.table\
+	bufr/tables/0/wmo/12/codetables/8010.table\
+	bufr/tables/0/wmo/12/codetables/8011.table\
+	bufr/tables/0/wmo/12/codetables/8012.table\
+	bufr/tables/0/wmo/12/codetables/8013.table\
+	bufr/tables/0/wmo/12/codetables/8014.table\
+	bufr/tables/0/wmo/12/codetables/8016.table\
+	bufr/tables/0/wmo/12/codetables/8017.table\
+	bufr/tables/0/wmo/12/codetables/8018.table\
+	bufr/tables/0/wmo/12/codetables/8021.table\
+	bufr/tables/0/wmo/12/codetables/8023.table\
+	bufr/tables/0/wmo/12/codetables/8024.table\
+	bufr/tables/0/wmo/12/codetables/8025.table\
+	bufr/tables/0/wmo/12/codetables/8026.table\
+	bufr/tables/0/wmo/12/codetables/8029.table\
+	bufr/tables/0/wmo/12/codetables/8033.table\
+	bufr/tables/0/wmo/12/codetables/8035.table\
+	bufr/tables/0/wmo/12/codetables/8036.table\
+	bufr/tables/0/wmo/12/codetables/8039.table\
+	bufr/tables/0/wmo/12/codetables/8040.table\
+	bufr/tables/0/wmo/12/codetables/8041.table\
+	bufr/tables/0/wmo/12/codetables/8042.table\
+	bufr/tables/0/wmo/12/codetables/8043.table\
+	bufr/tables/0/wmo/12/codetables/8050.table\
+	bufr/tables/0/wmo/12/codetables/8051.table\
+	bufr/tables/0/wmo/12/codetables/8052.table\
+	bufr/tables/0/wmo/12/codetables/8053.table\
+	bufr/tables/0/wmo/12/codetables/8054.table\
+	bufr/tables/0/wmo/12/codetables/8060.table\
+	bufr/tables/0/wmo/12/codetables/8065.table\
+	bufr/tables/0/wmo/12/codetables/8066.table\
+	bufr/tables/0/wmo/12/codetables/8070.table\
+	bufr/tables/0/wmo/12/codetables/8072.table\
+	bufr/tables/0/wmo/12/codetables/8074.table\
+	bufr/tables/0/wmo/12/codetables/8075.table\
+	bufr/tables/0/wmo/12/codetables/8076.table\
+	bufr/tables/0/wmo/12/codetables/8077.table\
+	bufr/tables/0/wmo/12/codetables/8079.table\
+	bufr/tables/0/wmo/12/codetables/8080.table\
+	bufr/tables/0/wmo/12/codetables/8081.table\
+	bufr/tables/0/wmo/12/codetables/8082.table\
+	bufr/tables/0/wmo/12/codetables/8083.table\
+	bufr/tables/0/wmo/12/codetables/8085.table
+
 definitionsbufr_tables_0_wmo_13dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/13
 dist_definitionsbufr_tables_0_wmo_13_DATA = \
 	bufr/tables/0/wmo/13/element.table\
@@ -4660,6 +5728,881 @@ dist_definitionsbufr_tables_0_wmo_23_codetables_DATA = \
 	bufr/tables/0/wmo/23/codetables/8086.table\
 	bufr/tables/0/wmo/23/codetables/8087.table
 
+definitionsbufr_tables_0_wmo_24dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/24
+dist_definitionsbufr_tables_0_wmo_24_DATA = \
+	bufr/tables/0/wmo/24/element.table\
+	bufr/tables/0/wmo/24/sequence.def
+
+definitionsbufr_tables_0_wmo_24_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/24/codetables
+dist_definitionsbufr_tables_0_wmo_24_codetables_DATA = \
+	bufr/tables/0/wmo/24/codetables/1003.table\
+	bufr/tables/0/wmo/24/codetables/10063.table\
+	bufr/tables/0/wmo/24/codetables/10064.table\
+	bufr/tables/0/wmo/24/codetables/1007.table\
+	bufr/tables/0/wmo/24/codetables/1024.table\
+	bufr/tables/0/wmo/24/codetables/1028.table\
+	bufr/tables/0/wmo/24/codetables/1029.table\
+	bufr/tables/0/wmo/24/codetables/1033.table\
+	bufr/tables/0/wmo/24/codetables/1034.table\
+	bufr/tables/0/wmo/24/codetables/1036.table\
+	bufr/tables/0/wmo/24/codetables/1038.table\
+	bufr/tables/0/wmo/24/codetables/1052.table\
+	bufr/tables/0/wmo/24/codetables/1090.table\
+	bufr/tables/0/wmo/24/codetables/1092.table\
+	bufr/tables/0/wmo/24/codetables/1101.table\
+	bufr/tables/0/wmo/24/codetables/11030.table\
+	bufr/tables/0/wmo/24/codetables/11031.table\
+	bufr/tables/0/wmo/24/codetables/11037.table\
+	bufr/tables/0/wmo/24/codetables/11038.table\
+	bufr/tables/0/wmo/24/codetables/11039.table\
+	bufr/tables/0/wmo/24/codetables/13038.table\
+	bufr/tables/0/wmo/24/codetables/13039.table\
+	bufr/tables/0/wmo/24/codetables/13040.table\
+	bufr/tables/0/wmo/24/codetables/13041.table\
+	bufr/tables/0/wmo/24/codetables/13051.table\
+	bufr/tables/0/wmo/24/codetables/13056.table\
+	bufr/tables/0/wmo/24/codetables/13057.table\
+	bufr/tables/0/wmo/24/codetables/15025.table\
+	bufr/tables/0/wmo/24/codetables/19001.table\
+	bufr/tables/0/wmo/24/codetables/19008.table\
+	bufr/tables/0/wmo/24/codetables/19010.table\
+	bufr/tables/0/wmo/24/codetables/19100.table\
+	bufr/tables/0/wmo/24/codetables/19101.table\
+	bufr/tables/0/wmo/24/codetables/19102.table\
+	bufr/tables/0/wmo/24/codetables/19103.table\
+	bufr/tables/0/wmo/24/codetables/19104.table\
+	bufr/tables/0/wmo/24/codetables/19105.table\
+	bufr/tables/0/wmo/24/codetables/19107.table\
+	bufr/tables/0/wmo/24/codetables/19108.table\
+	bufr/tables/0/wmo/24/codetables/19109.table\
+	bufr/tables/0/wmo/24/codetables/19110.table\
+	bufr/tables/0/wmo/24/codetables/19113.table\
+	bufr/tables/0/wmo/24/codetables/19117.table\
+	bufr/tables/0/wmo/24/codetables/19119.table\
+	bufr/tables/0/wmo/24/codetables/20003.table\
+	bufr/tables/0/wmo/24/codetables/20004.table\
+	bufr/tables/0/wmo/24/codetables/20005.table\
+	bufr/tables/0/wmo/24/codetables/20006.table\
+	bufr/tables/0/wmo/24/codetables/20008.table\
+	bufr/tables/0/wmo/24/codetables/20009.table\
+	bufr/tables/0/wmo/24/codetables/2001.table\
+	bufr/tables/0/wmo/24/codetables/20011.table\
+	bufr/tables/0/wmo/24/codetables/20012.table\
+	bufr/tables/0/wmo/24/codetables/20017.table\
+	bufr/tables/0/wmo/24/codetables/20018.table\
+	bufr/tables/0/wmo/24/codetables/2002.table\
+	bufr/tables/0/wmo/24/codetables/20021.table\
+	bufr/tables/0/wmo/24/codetables/20022.table\
+	bufr/tables/0/wmo/24/codetables/20023.table\
+	bufr/tables/0/wmo/24/codetables/20024.table\
+	bufr/tables/0/wmo/24/codetables/20025.table\
+	bufr/tables/0/wmo/24/codetables/20026.table\
+	bufr/tables/0/wmo/24/codetables/20027.table\
+	bufr/tables/0/wmo/24/codetables/20028.table\
+	bufr/tables/0/wmo/24/codetables/20029.table\
+	bufr/tables/0/wmo/24/codetables/2003.table\
+	bufr/tables/0/wmo/24/codetables/20032.table\
+	bufr/tables/0/wmo/24/codetables/20033.table\
+	bufr/tables/0/wmo/24/codetables/20034.table\
+	bufr/tables/0/wmo/24/codetables/20035.table\
+	bufr/tables/0/wmo/24/codetables/20036.table\
+	bufr/tables/0/wmo/24/codetables/20037.table\
+	bufr/tables/0/wmo/24/codetables/2004.table\
+	bufr/tables/0/wmo/24/codetables/20040.table\
+	bufr/tables/0/wmo/24/codetables/20041.table\
+	bufr/tables/0/wmo/24/codetables/20042.table\
+	bufr/tables/0/wmo/24/codetables/20045.table\
+	bufr/tables/0/wmo/24/codetables/20048.table\
+	bufr/tables/0/wmo/24/codetables/20050.table\
+	bufr/tables/0/wmo/24/codetables/20055.table\
+	bufr/tables/0/wmo/24/codetables/20056.table\
+	bufr/tables/0/wmo/24/codetables/20062.table\
+	bufr/tables/0/wmo/24/codetables/20063.table\
+	bufr/tables/0/wmo/24/codetables/2007.table\
+	bufr/tables/0/wmo/24/codetables/20071.table\
+	bufr/tables/0/wmo/24/codetables/20085.table\
+	bufr/tables/0/wmo/24/codetables/20086.table\
+	bufr/tables/0/wmo/24/codetables/20087.table\
+	bufr/tables/0/wmo/24/codetables/20089.table\
+	bufr/tables/0/wmo/24/codetables/20090.table\
+	bufr/tables/0/wmo/24/codetables/20101.table\
+	bufr/tables/0/wmo/24/codetables/20102.table\
+	bufr/tables/0/wmo/24/codetables/20103.table\
+	bufr/tables/0/wmo/24/codetables/20104.table\
+	bufr/tables/0/wmo/24/codetables/20105.table\
+	bufr/tables/0/wmo/24/codetables/20106.table\
+	bufr/tables/0/wmo/24/codetables/20107.table\
+	bufr/tables/0/wmo/24/codetables/20108.table\
+	bufr/tables/0/wmo/24/codetables/2011.table\
+	bufr/tables/0/wmo/24/codetables/20119.table\
+	bufr/tables/0/wmo/24/codetables/20124.table\
+	bufr/tables/0/wmo/24/codetables/2013.table\
+	bufr/tables/0/wmo/24/codetables/20136.table\
+	bufr/tables/0/wmo/24/codetables/20137.table\
+	bufr/tables/0/wmo/24/codetables/2014.table\
+	bufr/tables/0/wmo/24/codetables/2015.table\
+	bufr/tables/0/wmo/24/codetables/2016.table\
+	bufr/tables/0/wmo/24/codetables/2017.table\
+	bufr/tables/0/wmo/24/codetables/2019.table\
+	bufr/tables/0/wmo/24/codetables/2020.table\
+	bufr/tables/0/wmo/24/codetables/2021.table\
+	bufr/tables/0/wmo/24/codetables/2022.table\
+	bufr/tables/0/wmo/24/codetables/2023.table\
+	bufr/tables/0/wmo/24/codetables/2024.table\
+	bufr/tables/0/wmo/24/codetables/2025.table\
+	bufr/tables/0/wmo/24/codetables/2030.table\
+	bufr/tables/0/wmo/24/codetables/2031.table\
+	bufr/tables/0/wmo/24/codetables/2032.table\
+	bufr/tables/0/wmo/24/codetables/2033.table\
+	bufr/tables/0/wmo/24/codetables/2034.table\
+	bufr/tables/0/wmo/24/codetables/2036.table\
+	bufr/tables/0/wmo/24/codetables/2037.table\
+	bufr/tables/0/wmo/24/codetables/2038.table\
+	bufr/tables/0/wmo/24/codetables/2039.table\
+	bufr/tables/0/wmo/24/codetables/2040.table\
+	bufr/tables/0/wmo/24/codetables/2041.table\
+	bufr/tables/0/wmo/24/codetables/2042.table\
+	bufr/tables/0/wmo/24/codetables/2044.table\
+	bufr/tables/0/wmo/24/codetables/2045.table\
+	bufr/tables/0/wmo/24/codetables/2046.table\
+	bufr/tables/0/wmo/24/codetables/2047.table\
+	bufr/tables/0/wmo/24/codetables/2048.table\
+	bufr/tables/0/wmo/24/codetables/2049.table\
+	bufr/tables/0/wmo/24/codetables/2050.table\
+	bufr/tables/0/wmo/24/codetables/2051.table\
+	bufr/tables/0/wmo/24/codetables/2052.table\
+	bufr/tables/0/wmo/24/codetables/2053.table\
+	bufr/tables/0/wmo/24/codetables/2054.table\
+	bufr/tables/0/wmo/24/codetables/2055.table\
+	bufr/tables/0/wmo/24/codetables/2056.table\
+	bufr/tables/0/wmo/24/codetables/2057.table\
+	bufr/tables/0/wmo/24/codetables/2058.table\
+	bufr/tables/0/wmo/24/codetables/2059.table\
+	bufr/tables/0/wmo/24/codetables/2060.table\
+	bufr/tables/0/wmo/24/codetables/2061.table\
+	bufr/tables/0/wmo/24/codetables/2062.table\
+	bufr/tables/0/wmo/24/codetables/2064.table\
+	bufr/tables/0/wmo/24/codetables/2066.table\
+	bufr/tables/0/wmo/24/codetables/2070.table\
+	bufr/tables/0/wmo/24/codetables/2080.table\
+	bufr/tables/0/wmo/24/codetables/2081.table\
+	bufr/tables/0/wmo/24/codetables/2083.table\
+	bufr/tables/0/wmo/24/codetables/2084.table\
+	bufr/tables/0/wmo/24/codetables/2095.table\
+	bufr/tables/0/wmo/24/codetables/2096.table\
+	bufr/tables/0/wmo/24/codetables/2097.table\
+	bufr/tables/0/wmo/24/codetables/2099.table\
+	bufr/tables/0/wmo/24/codetables/2101.table\
+	bufr/tables/0/wmo/24/codetables/2103.table\
+	bufr/tables/0/wmo/24/codetables/2104.table\
+	bufr/tables/0/wmo/24/codetables/21066.table\
+	bufr/tables/0/wmo/24/codetables/21067.table\
+	bufr/tables/0/wmo/24/codetables/21068.table\
+	bufr/tables/0/wmo/24/codetables/21069.table\
+	bufr/tables/0/wmo/24/codetables/21070.table\
+	bufr/tables/0/wmo/24/codetables/21072.table\
+	bufr/tables/0/wmo/24/codetables/21073.table\
+	bufr/tables/0/wmo/24/codetables/21076.table\
+	bufr/tables/0/wmo/24/codetables/21109.table\
+	bufr/tables/0/wmo/24/codetables/21115.table\
+	bufr/tables/0/wmo/24/codetables/21116.table\
+	bufr/tables/0/wmo/24/codetables/21119.table\
+	bufr/tables/0/wmo/24/codetables/21144.table\
+	bufr/tables/0/wmo/24/codetables/21148.table\
+	bufr/tables/0/wmo/24/codetables/2115.table\
+	bufr/tables/0/wmo/24/codetables/21150.table\
+	bufr/tables/0/wmo/24/codetables/21155.table\
+	bufr/tables/0/wmo/24/codetables/21158.table\
+	bufr/tables/0/wmo/24/codetables/21159.table\
+	bufr/tables/0/wmo/24/codetables/21169.table\
+	bufr/tables/0/wmo/24/codetables/2119.table\
+	bufr/tables/0/wmo/24/codetables/2131.table\
+	bufr/tables/0/wmo/24/codetables/2137.table\
+	bufr/tables/0/wmo/24/codetables/2138.table\
+	bufr/tables/0/wmo/24/codetables/2139.table\
+	bufr/tables/0/wmo/24/codetables/2143.table\
+	bufr/tables/0/wmo/24/codetables/2144.table\
+	bufr/tables/0/wmo/24/codetables/2145.table\
+	bufr/tables/0/wmo/24/codetables/2146.table\
+	bufr/tables/0/wmo/24/codetables/2147.table\
+	bufr/tables/0/wmo/24/codetables/2148.table\
+	bufr/tables/0/wmo/24/codetables/2149.table\
+	bufr/tables/0/wmo/24/codetables/2150.table\
+	bufr/tables/0/wmo/24/codetables/2151.table\
+	bufr/tables/0/wmo/24/codetables/2152.table\
+	bufr/tables/0/wmo/24/codetables/2158.table\
+	bufr/tables/0/wmo/24/codetables/2159.table\
+	bufr/tables/0/wmo/24/codetables/2160.table\
+	bufr/tables/0/wmo/24/codetables/2163.table\
+	bufr/tables/0/wmo/24/codetables/2164.table\
+	bufr/tables/0/wmo/24/codetables/2165.table\
+	bufr/tables/0/wmo/24/codetables/2166.table\
+	bufr/tables/0/wmo/24/codetables/2167.table\
+	bufr/tables/0/wmo/24/codetables/2169.table\
+	bufr/tables/0/wmo/24/codetables/2170.table\
+	bufr/tables/0/wmo/24/codetables/2172.table\
+	bufr/tables/0/wmo/24/codetables/2175.table\
+	bufr/tables/0/wmo/24/codetables/2176.table\
+	bufr/tables/0/wmo/24/codetables/2177.table\
+	bufr/tables/0/wmo/24/codetables/2178.table\
+	bufr/tables/0/wmo/24/codetables/2179.table\
+	bufr/tables/0/wmo/24/codetables/2180.table\
+	bufr/tables/0/wmo/24/codetables/2181.table\
+	bufr/tables/0/wmo/24/codetables/2182.table\
+	bufr/tables/0/wmo/24/codetables/2183.table\
+	bufr/tables/0/wmo/24/codetables/2184.table\
+	bufr/tables/0/wmo/24/codetables/2185.table\
+	bufr/tables/0/wmo/24/codetables/2186.table\
+	bufr/tables/0/wmo/24/codetables/2187.table\
+	bufr/tables/0/wmo/24/codetables/2188.table\
+	bufr/tables/0/wmo/24/codetables/2189.table\
+	bufr/tables/0/wmo/24/codetables/2191.table\
+	bufr/tables/0/wmo/24/codetables/22056.table\
+	bufr/tables/0/wmo/24/codetables/22060.table\
+	bufr/tables/0/wmo/24/codetables/22061.table\
+	bufr/tables/0/wmo/24/codetables/22067.table\
+	bufr/tables/0/wmo/24/codetables/22068.table\
+	bufr/tables/0/wmo/24/codetables/22120.table\
+	bufr/tables/0/wmo/24/codetables/22121.table\
+	bufr/tables/0/wmo/24/codetables/22122.table\
+	bufr/tables/0/wmo/24/codetables/22123.table\
+	bufr/tables/0/wmo/24/codetables/22178.table\
+	bufr/tables/0/wmo/24/codetables/23001.table\
+	bufr/tables/0/wmo/24/codetables/23002.table\
+	bufr/tables/0/wmo/24/codetables/23003.table\
+	bufr/tables/0/wmo/24/codetables/23004.table\
+	bufr/tables/0/wmo/24/codetables/23005.table\
+	bufr/tables/0/wmo/24/codetables/23006.table\
+	bufr/tables/0/wmo/24/codetables/23007.table\
+	bufr/tables/0/wmo/24/codetables/23008.table\
+	bufr/tables/0/wmo/24/codetables/23009.table\
+	bufr/tables/0/wmo/24/codetables/23016.table\
+	bufr/tables/0/wmo/24/codetables/23018.table\
+	bufr/tables/0/wmo/24/codetables/23031.table\
+	bufr/tables/0/wmo/24/codetables/23032.table\
+	bufr/tables/0/wmo/24/codetables/24003.table\
+	bufr/tables/0/wmo/24/codetables/25004.table\
+	bufr/tables/0/wmo/24/codetables/25005.table\
+	bufr/tables/0/wmo/24/codetables/25006.table\
+	bufr/tables/0/wmo/24/codetables/25009.table\
+	bufr/tables/0/wmo/24/codetables/25010.table\
+	bufr/tables/0/wmo/24/codetables/25011.table\
+	bufr/tables/0/wmo/24/codetables/25012.table\
+	bufr/tables/0/wmo/24/codetables/25013.table\
+	bufr/tables/0/wmo/24/codetables/25015.table\
+	bufr/tables/0/wmo/24/codetables/25017.table\
+	bufr/tables/0/wmo/24/codetables/25020.table\
+	bufr/tables/0/wmo/24/codetables/25021.table\
+	bufr/tables/0/wmo/24/codetables/25022.table\
+	bufr/tables/0/wmo/24/codetables/25023.table\
+	bufr/tables/0/wmo/24/codetables/25024.table\
+	bufr/tables/0/wmo/24/codetables/25029.table\
+	bufr/tables/0/wmo/24/codetables/25030.table\
+	bufr/tables/0/wmo/24/codetables/25031.table\
+	bufr/tables/0/wmo/24/codetables/25032.table\
+	bufr/tables/0/wmo/24/codetables/25033.table\
+	bufr/tables/0/wmo/24/codetables/25034.table\
+	bufr/tables/0/wmo/24/codetables/25035.table\
+	bufr/tables/0/wmo/24/codetables/25036.table\
+	bufr/tables/0/wmo/24/codetables/25040.table\
+	bufr/tables/0/wmo/24/codetables/25041.table\
+	bufr/tables/0/wmo/24/codetables/25042.table\
+	bufr/tables/0/wmo/24/codetables/25053.table\
+	bufr/tables/0/wmo/24/codetables/25063.table\
+	bufr/tables/0/wmo/24/codetables/25069.table\
+	bufr/tables/0/wmo/24/codetables/25086.table\
+	bufr/tables/0/wmo/24/codetables/25090.table\
+	bufr/tables/0/wmo/24/codetables/25093.table\
+	bufr/tables/0/wmo/24/codetables/25095.table\
+	bufr/tables/0/wmo/24/codetables/25096.table\
+	bufr/tables/0/wmo/24/codetables/25097.table\
+	bufr/tables/0/wmo/24/codetables/25098.table\
+	bufr/tables/0/wmo/24/codetables/25099.table\
+	bufr/tables/0/wmo/24/codetables/25110.table\
+	bufr/tables/0/wmo/24/codetables/25112.table\
+	bufr/tables/0/wmo/24/codetables/25113.table\
+	bufr/tables/0/wmo/24/codetables/25120.table\
+	bufr/tables/0/wmo/24/codetables/25122.table\
+	bufr/tables/0/wmo/24/codetables/25123.table\
+	bufr/tables/0/wmo/24/codetables/25124.table\
+	bufr/tables/0/wmo/24/codetables/25150.table\
+	bufr/tables/0/wmo/24/codetables/25174.table\
+	bufr/tables/0/wmo/24/codetables/25181.table\
+	bufr/tables/0/wmo/24/codetables/25182.table\
+	bufr/tables/0/wmo/24/codetables/25184.table\
+	bufr/tables/0/wmo/24/codetables/26010.table\
+	bufr/tables/0/wmo/24/codetables/29001.table\
+	bufr/tables/0/wmo/24/codetables/29002.table\
+	bufr/tables/0/wmo/24/codetables/30031.table\
+	bufr/tables/0/wmo/24/codetables/30032.table\
+	bufr/tables/0/wmo/24/codetables/3010.table\
+	bufr/tables/0/wmo/24/codetables/3011.table\
+	bufr/tables/0/wmo/24/codetables/3012.table\
+	bufr/tables/0/wmo/24/codetables/31021.table\
+	bufr/tables/0/wmo/24/codetables/31031.table\
+	bufr/tables/0/wmo/24/codetables/33002.table\
+	bufr/tables/0/wmo/24/codetables/33003.table\
+	bufr/tables/0/wmo/24/codetables/33005.table\
+	bufr/tables/0/wmo/24/codetables/33006.table\
+	bufr/tables/0/wmo/24/codetables/33015.table\
+	bufr/tables/0/wmo/24/codetables/33020.table\
+	bufr/tables/0/wmo/24/codetables/33021.table\
+	bufr/tables/0/wmo/24/codetables/33022.table\
+	bufr/tables/0/wmo/24/codetables/33023.table\
+	bufr/tables/0/wmo/24/codetables/33024.table\
+	bufr/tables/0/wmo/24/codetables/33025.table\
+	bufr/tables/0/wmo/24/codetables/33026.table\
+	bufr/tables/0/wmo/24/codetables/33027.table\
+	bufr/tables/0/wmo/24/codetables/33028.table\
+	bufr/tables/0/wmo/24/codetables/33030.table\
+	bufr/tables/0/wmo/24/codetables/33031.table\
+	bufr/tables/0/wmo/24/codetables/33032.table\
+	bufr/tables/0/wmo/24/codetables/33033.table\
+	bufr/tables/0/wmo/24/codetables/33035.table\
+	bufr/tables/0/wmo/24/codetables/33037.table\
+	bufr/tables/0/wmo/24/codetables/33038.table\
+	bufr/tables/0/wmo/24/codetables/33039.table\
+	bufr/tables/0/wmo/24/codetables/33041.table\
+	bufr/tables/0/wmo/24/codetables/33042.table\
+	bufr/tables/0/wmo/24/codetables/33043.table\
+	bufr/tables/0/wmo/24/codetables/33044.table\
+	bufr/tables/0/wmo/24/codetables/33047.table\
+	bufr/tables/0/wmo/24/codetables/33048.table\
+	bufr/tables/0/wmo/24/codetables/33049.table\
+	bufr/tables/0/wmo/24/codetables/33050.table\
+	bufr/tables/0/wmo/24/codetables/33060.table\
+	bufr/tables/0/wmo/24/codetables/33070.table\
+	bufr/tables/0/wmo/24/codetables/33071.table\
+	bufr/tables/0/wmo/24/codetables/33072.table\
+	bufr/tables/0/wmo/24/codetables/33075.table\
+	bufr/tables/0/wmo/24/codetables/33076.table\
+	bufr/tables/0/wmo/24/codetables/33077.table\
+	bufr/tables/0/wmo/24/codetables/33078.table\
+	bufr/tables/0/wmo/24/codetables/33079.table\
+	bufr/tables/0/wmo/24/codetables/33080.table\
+	bufr/tables/0/wmo/24/codetables/33081.table\
+	bufr/tables/0/wmo/24/codetables/33082.table\
+	bufr/tables/0/wmo/24/codetables/33083.table\
+	bufr/tables/0/wmo/24/codetables/33084.table\
+	bufr/tables/0/wmo/24/codetables/33085.table\
+	bufr/tables/0/wmo/24/codetables/33086.table\
+	bufr/tables/0/wmo/24/codetables/33087.table\
+	bufr/tables/0/wmo/24/codetables/33088.table\
+	bufr/tables/0/wmo/24/codetables/35000.table\
+	bufr/tables/0/wmo/24/codetables/35001.table\
+	bufr/tables/0/wmo/24/codetables/35030.table\
+	bufr/tables/0/wmo/24/codetables/35031.table\
+	bufr/tables/0/wmo/24/codetables/35032.table\
+	bufr/tables/0/wmo/24/codetables/35033.table\
+	bufr/tables/0/wmo/24/codetables/35034.table\
+	bufr/tables/0/wmo/24/codetables/35035.table\
+	bufr/tables/0/wmo/24/codetables/40005.table\
+	bufr/tables/0/wmo/24/codetables/40006.table\
+	bufr/tables/0/wmo/24/codetables/40011.table\
+	bufr/tables/0/wmo/24/codetables/40012.table\
+	bufr/tables/0/wmo/24/codetables/40013.table\
+	bufr/tables/0/wmo/24/codetables/40020.table\
+	bufr/tables/0/wmo/24/codetables/40023.table\
+	bufr/tables/0/wmo/24/codetables/40024.table\
+	bufr/tables/0/wmo/24/codetables/40025.table\
+	bufr/tables/0/wmo/24/codetables/4059.table\
+	bufr/tables/0/wmo/24/codetables/4080.table\
+	bufr/tables/0/wmo/24/codetables/8001.table\
+	bufr/tables/0/wmo/24/codetables/8002.table\
+	bufr/tables/0/wmo/24/codetables/8003.table\
+	bufr/tables/0/wmo/24/codetables/8004.table\
+	bufr/tables/0/wmo/24/codetables/8005.table\
+	bufr/tables/0/wmo/24/codetables/8006.table\
+	bufr/tables/0/wmo/24/codetables/8007.table\
+	bufr/tables/0/wmo/24/codetables/8008.table\
+	bufr/tables/0/wmo/24/codetables/8009.table\
+	bufr/tables/0/wmo/24/codetables/8010.table\
+	bufr/tables/0/wmo/24/codetables/8011.table\
+	bufr/tables/0/wmo/24/codetables/8012.table\
+	bufr/tables/0/wmo/24/codetables/8013.table\
+	bufr/tables/0/wmo/24/codetables/8014.table\
+	bufr/tables/0/wmo/24/codetables/8015.table\
+	bufr/tables/0/wmo/24/codetables/8016.table\
+	bufr/tables/0/wmo/24/codetables/8017.table\
+	bufr/tables/0/wmo/24/codetables/8018.table\
+	bufr/tables/0/wmo/24/codetables/8019.table\
+	bufr/tables/0/wmo/24/codetables/8021.table\
+	bufr/tables/0/wmo/24/codetables/8023.table\
+	bufr/tables/0/wmo/24/codetables/8024.table\
+	bufr/tables/0/wmo/24/codetables/8025.table\
+	bufr/tables/0/wmo/24/codetables/8026.table\
+	bufr/tables/0/wmo/24/codetables/8029.table\
+	bufr/tables/0/wmo/24/codetables/8032.table\
+	bufr/tables/0/wmo/24/codetables/8033.table\
+	bufr/tables/0/wmo/24/codetables/8035.table\
+	bufr/tables/0/wmo/24/codetables/8036.table\
+	bufr/tables/0/wmo/24/codetables/8039.table\
+	bufr/tables/0/wmo/24/codetables/8040.table\
+	bufr/tables/0/wmo/24/codetables/8041.table\
+	bufr/tables/0/wmo/24/codetables/8042.table\
+	bufr/tables/0/wmo/24/codetables/8043.table\
+	bufr/tables/0/wmo/24/codetables/8050.table\
+	bufr/tables/0/wmo/24/codetables/8051.table\
+	bufr/tables/0/wmo/24/codetables/8052.table\
+	bufr/tables/0/wmo/24/codetables/8053.table\
+	bufr/tables/0/wmo/24/codetables/8054.table\
+	bufr/tables/0/wmo/24/codetables/8060.table\
+	bufr/tables/0/wmo/24/codetables/8065.table\
+	bufr/tables/0/wmo/24/codetables/8066.table\
+	bufr/tables/0/wmo/24/codetables/8070.table\
+	bufr/tables/0/wmo/24/codetables/8072.table\
+	bufr/tables/0/wmo/24/codetables/8074.table\
+	bufr/tables/0/wmo/24/codetables/8075.table\
+	bufr/tables/0/wmo/24/codetables/8076.table\
+	bufr/tables/0/wmo/24/codetables/8077.table\
+	bufr/tables/0/wmo/24/codetables/8079.table\
+	bufr/tables/0/wmo/24/codetables/8080.table\
+	bufr/tables/0/wmo/24/codetables/8081.table\
+	bufr/tables/0/wmo/24/codetables/8082.table\
+	bufr/tables/0/wmo/24/codetables/8083.table\
+	bufr/tables/0/wmo/24/codetables/8085.table\
+	bufr/tables/0/wmo/24/codetables/8086.table\
+	bufr/tables/0/wmo/24/codetables/8087.table
+
+definitionsbufr_tables_0_wmo_25dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/25
+dist_definitionsbufr_tables_0_wmo_25_DATA = \
+	bufr/tables/0/wmo/25/element.table\
+	bufr/tables/0/wmo/25/sequence.def
+
+definitionsbufr_tables_0_wmo_25_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/25/codetables
+dist_definitionsbufr_tables_0_wmo_25_codetables_DATA = \
+	bufr/tables/0/wmo/25/codetables/1003.table\
+	bufr/tables/0/wmo/25/codetables/10063.table\
+	bufr/tables/0/wmo/25/codetables/10064.table\
+	bufr/tables/0/wmo/25/codetables/1007.table\
+	bufr/tables/0/wmo/25/codetables/1024.table\
+	bufr/tables/0/wmo/25/codetables/1028.table\
+	bufr/tables/0/wmo/25/codetables/1029.table\
+	bufr/tables/0/wmo/25/codetables/1033.table\
+	bufr/tables/0/wmo/25/codetables/1034.table\
+	bufr/tables/0/wmo/25/codetables/1036.table\
+	bufr/tables/0/wmo/25/codetables/1038.table\
+	bufr/tables/0/wmo/25/codetables/1052.table\
+	bufr/tables/0/wmo/25/codetables/1090.table\
+	bufr/tables/0/wmo/25/codetables/1092.table\
+	bufr/tables/0/wmo/25/codetables/1101.table\
+	bufr/tables/0/wmo/25/codetables/11030.table\
+	bufr/tables/0/wmo/25/codetables/11031.table\
+	bufr/tables/0/wmo/25/codetables/11037.table\
+	bufr/tables/0/wmo/25/codetables/11038.table\
+	bufr/tables/0/wmo/25/codetables/11039.table\
+	bufr/tables/0/wmo/25/codetables/13038.table\
+	bufr/tables/0/wmo/25/codetables/13039.table\
+	bufr/tables/0/wmo/25/codetables/13040.table\
+	bufr/tables/0/wmo/25/codetables/13041.table\
+	bufr/tables/0/wmo/25/codetables/13051.table\
+	bufr/tables/0/wmo/25/codetables/13056.table\
+	bufr/tables/0/wmo/25/codetables/13057.table\
+	bufr/tables/0/wmo/25/codetables/15025.table\
+	bufr/tables/0/wmo/25/codetables/19001.table\
+	bufr/tables/0/wmo/25/codetables/19008.table\
+	bufr/tables/0/wmo/25/codetables/19010.table\
+	bufr/tables/0/wmo/25/codetables/19100.table\
+	bufr/tables/0/wmo/25/codetables/19101.table\
+	bufr/tables/0/wmo/25/codetables/19102.table\
+	bufr/tables/0/wmo/25/codetables/19103.table\
+	bufr/tables/0/wmo/25/codetables/19104.table\
+	bufr/tables/0/wmo/25/codetables/19105.table\
+	bufr/tables/0/wmo/25/codetables/19107.table\
+	bufr/tables/0/wmo/25/codetables/19108.table\
+	bufr/tables/0/wmo/25/codetables/19109.table\
+	bufr/tables/0/wmo/25/codetables/19110.table\
+	bufr/tables/0/wmo/25/codetables/19113.table\
+	bufr/tables/0/wmo/25/codetables/19117.table\
+	bufr/tables/0/wmo/25/codetables/19119.table\
+	bufr/tables/0/wmo/25/codetables/20003.table\
+	bufr/tables/0/wmo/25/codetables/20004.table\
+	bufr/tables/0/wmo/25/codetables/20005.table\
+	bufr/tables/0/wmo/25/codetables/20006.table\
+	bufr/tables/0/wmo/25/codetables/20008.table\
+	bufr/tables/0/wmo/25/codetables/20009.table\
+	bufr/tables/0/wmo/25/codetables/2001.table\
+	bufr/tables/0/wmo/25/codetables/20011.table\
+	bufr/tables/0/wmo/25/codetables/20012.table\
+	bufr/tables/0/wmo/25/codetables/20017.table\
+	bufr/tables/0/wmo/25/codetables/20018.table\
+	bufr/tables/0/wmo/25/codetables/2002.table\
+	bufr/tables/0/wmo/25/codetables/20021.table\
+	bufr/tables/0/wmo/25/codetables/20022.table\
+	bufr/tables/0/wmo/25/codetables/20023.table\
+	bufr/tables/0/wmo/25/codetables/20024.table\
+	bufr/tables/0/wmo/25/codetables/20025.table\
+	bufr/tables/0/wmo/25/codetables/20026.table\
+	bufr/tables/0/wmo/25/codetables/20027.table\
+	bufr/tables/0/wmo/25/codetables/20028.table\
+	bufr/tables/0/wmo/25/codetables/20029.table\
+	bufr/tables/0/wmo/25/codetables/2003.table\
+	bufr/tables/0/wmo/25/codetables/20032.table\
+	bufr/tables/0/wmo/25/codetables/20033.table\
+	bufr/tables/0/wmo/25/codetables/20034.table\
+	bufr/tables/0/wmo/25/codetables/20035.table\
+	bufr/tables/0/wmo/25/codetables/20036.table\
+	bufr/tables/0/wmo/25/codetables/20037.table\
+	bufr/tables/0/wmo/25/codetables/2004.table\
+	bufr/tables/0/wmo/25/codetables/20040.table\
+	bufr/tables/0/wmo/25/codetables/20041.table\
+	bufr/tables/0/wmo/25/codetables/20042.table\
+	bufr/tables/0/wmo/25/codetables/20045.table\
+	bufr/tables/0/wmo/25/codetables/20048.table\
+	bufr/tables/0/wmo/25/codetables/20050.table\
+	bufr/tables/0/wmo/25/codetables/20055.table\
+	bufr/tables/0/wmo/25/codetables/20056.table\
+	bufr/tables/0/wmo/25/codetables/20062.table\
+	bufr/tables/0/wmo/25/codetables/20063.table\
+	bufr/tables/0/wmo/25/codetables/2007.table\
+	bufr/tables/0/wmo/25/codetables/20071.table\
+	bufr/tables/0/wmo/25/codetables/20085.table\
+	bufr/tables/0/wmo/25/codetables/20086.table\
+	bufr/tables/0/wmo/25/codetables/20087.table\
+	bufr/tables/0/wmo/25/codetables/20089.table\
+	bufr/tables/0/wmo/25/codetables/20090.table\
+	bufr/tables/0/wmo/25/codetables/20101.table\
+	bufr/tables/0/wmo/25/codetables/20102.table\
+	bufr/tables/0/wmo/25/codetables/20103.table\
+	bufr/tables/0/wmo/25/codetables/20104.table\
+	bufr/tables/0/wmo/25/codetables/20105.table\
+	bufr/tables/0/wmo/25/codetables/20106.table\
+	bufr/tables/0/wmo/25/codetables/20107.table\
+	bufr/tables/0/wmo/25/codetables/20108.table\
+	bufr/tables/0/wmo/25/codetables/2011.table\
+	bufr/tables/0/wmo/25/codetables/20119.table\
+	bufr/tables/0/wmo/25/codetables/20124.table\
+	bufr/tables/0/wmo/25/codetables/2013.table\
+	bufr/tables/0/wmo/25/codetables/20136.table\
+	bufr/tables/0/wmo/25/codetables/20137.table\
+	bufr/tables/0/wmo/25/codetables/2014.table\
+	bufr/tables/0/wmo/25/codetables/2015.table\
+	bufr/tables/0/wmo/25/codetables/2016.table\
+	bufr/tables/0/wmo/25/codetables/2017.table\
+	bufr/tables/0/wmo/25/codetables/2019.table\
+	bufr/tables/0/wmo/25/codetables/2020.table\
+	bufr/tables/0/wmo/25/codetables/2021.table\
+	bufr/tables/0/wmo/25/codetables/2022.table\
+	bufr/tables/0/wmo/25/codetables/2023.table\
+	bufr/tables/0/wmo/25/codetables/2024.table\
+	bufr/tables/0/wmo/25/codetables/2025.table\
+	bufr/tables/0/wmo/25/codetables/2030.table\
+	bufr/tables/0/wmo/25/codetables/2031.table\
+	bufr/tables/0/wmo/25/codetables/2032.table\
+	bufr/tables/0/wmo/25/codetables/2033.table\
+	bufr/tables/0/wmo/25/codetables/2034.table\
+	bufr/tables/0/wmo/25/codetables/2036.table\
+	bufr/tables/0/wmo/25/codetables/2037.table\
+	bufr/tables/0/wmo/25/codetables/2038.table\
+	bufr/tables/0/wmo/25/codetables/2039.table\
+	bufr/tables/0/wmo/25/codetables/2040.table\
+	bufr/tables/0/wmo/25/codetables/2041.table\
+	bufr/tables/0/wmo/25/codetables/2042.table\
+	bufr/tables/0/wmo/25/codetables/2044.table\
+	bufr/tables/0/wmo/25/codetables/2045.table\
+	bufr/tables/0/wmo/25/codetables/2046.table\
+	bufr/tables/0/wmo/25/codetables/2047.table\
+	bufr/tables/0/wmo/25/codetables/2048.table\
+	bufr/tables/0/wmo/25/codetables/2049.table\
+	bufr/tables/0/wmo/25/codetables/2050.table\
+	bufr/tables/0/wmo/25/codetables/2051.table\
+	bufr/tables/0/wmo/25/codetables/2052.table\
+	bufr/tables/0/wmo/25/codetables/2053.table\
+	bufr/tables/0/wmo/25/codetables/2054.table\
+	bufr/tables/0/wmo/25/codetables/2055.table\
+	bufr/tables/0/wmo/25/codetables/2056.table\
+	bufr/tables/0/wmo/25/codetables/2057.table\
+	bufr/tables/0/wmo/25/codetables/2058.table\
+	bufr/tables/0/wmo/25/codetables/2059.table\
+	bufr/tables/0/wmo/25/codetables/2060.table\
+	bufr/tables/0/wmo/25/codetables/2061.table\
+	bufr/tables/0/wmo/25/codetables/2062.table\
+	bufr/tables/0/wmo/25/codetables/2064.table\
+	bufr/tables/0/wmo/25/codetables/2066.table\
+	bufr/tables/0/wmo/25/codetables/2070.table\
+	bufr/tables/0/wmo/25/codetables/2080.table\
+	bufr/tables/0/wmo/25/codetables/2081.table\
+	bufr/tables/0/wmo/25/codetables/2083.table\
+	bufr/tables/0/wmo/25/codetables/2084.table\
+	bufr/tables/0/wmo/25/codetables/2095.table\
+	bufr/tables/0/wmo/25/codetables/2096.table\
+	bufr/tables/0/wmo/25/codetables/2097.table\
+	bufr/tables/0/wmo/25/codetables/2099.table\
+	bufr/tables/0/wmo/25/codetables/2101.table\
+	bufr/tables/0/wmo/25/codetables/2103.table\
+	bufr/tables/0/wmo/25/codetables/2104.table\
+	bufr/tables/0/wmo/25/codetables/21066.table\
+	bufr/tables/0/wmo/25/codetables/21067.table\
+	bufr/tables/0/wmo/25/codetables/21068.table\
+	bufr/tables/0/wmo/25/codetables/21069.table\
+	bufr/tables/0/wmo/25/codetables/21070.table\
+	bufr/tables/0/wmo/25/codetables/21072.table\
+	bufr/tables/0/wmo/25/codetables/21073.table\
+	bufr/tables/0/wmo/25/codetables/21076.table\
+	bufr/tables/0/wmo/25/codetables/21109.table\
+	bufr/tables/0/wmo/25/codetables/21115.table\
+	bufr/tables/0/wmo/25/codetables/21116.table\
+	bufr/tables/0/wmo/25/codetables/21119.table\
+	bufr/tables/0/wmo/25/codetables/21144.table\
+	bufr/tables/0/wmo/25/codetables/21148.table\
+	bufr/tables/0/wmo/25/codetables/2115.table\
+	bufr/tables/0/wmo/25/codetables/21150.table\
+	bufr/tables/0/wmo/25/codetables/21155.table\
+	bufr/tables/0/wmo/25/codetables/21158.table\
+	bufr/tables/0/wmo/25/codetables/21159.table\
+	bufr/tables/0/wmo/25/codetables/21169.table\
+	bufr/tables/0/wmo/25/codetables/2119.table\
+	bufr/tables/0/wmo/25/codetables/2131.table\
+	bufr/tables/0/wmo/25/codetables/2137.table\
+	bufr/tables/0/wmo/25/codetables/2138.table\
+	bufr/tables/0/wmo/25/codetables/2139.table\
+	bufr/tables/0/wmo/25/codetables/2143.table\
+	bufr/tables/0/wmo/25/codetables/2144.table\
+	bufr/tables/0/wmo/25/codetables/2145.table\
+	bufr/tables/0/wmo/25/codetables/2146.table\
+	bufr/tables/0/wmo/25/codetables/2147.table\
+	bufr/tables/0/wmo/25/codetables/2148.table\
+	bufr/tables/0/wmo/25/codetables/2149.table\
+	bufr/tables/0/wmo/25/codetables/2150.table\
+	bufr/tables/0/wmo/25/codetables/2151.table\
+	bufr/tables/0/wmo/25/codetables/2152.table\
+	bufr/tables/0/wmo/25/codetables/2158.table\
+	bufr/tables/0/wmo/25/codetables/2159.table\
+	bufr/tables/0/wmo/25/codetables/2160.table\
+	bufr/tables/0/wmo/25/codetables/2163.table\
+	bufr/tables/0/wmo/25/codetables/2164.table\
+	bufr/tables/0/wmo/25/codetables/2165.table\
+	bufr/tables/0/wmo/25/codetables/2166.table\
+	bufr/tables/0/wmo/25/codetables/2167.table\
+	bufr/tables/0/wmo/25/codetables/2169.table\
+	bufr/tables/0/wmo/25/codetables/2170.table\
+	bufr/tables/0/wmo/25/codetables/2172.table\
+	bufr/tables/0/wmo/25/codetables/2175.table\
+	bufr/tables/0/wmo/25/codetables/2176.table\
+	bufr/tables/0/wmo/25/codetables/2177.table\
+	bufr/tables/0/wmo/25/codetables/2178.table\
+	bufr/tables/0/wmo/25/codetables/2179.table\
+	bufr/tables/0/wmo/25/codetables/2180.table\
+	bufr/tables/0/wmo/25/codetables/2181.table\
+	bufr/tables/0/wmo/25/codetables/2182.table\
+	bufr/tables/0/wmo/25/codetables/2183.table\
+	bufr/tables/0/wmo/25/codetables/2184.table\
+	bufr/tables/0/wmo/25/codetables/2185.table\
+	bufr/tables/0/wmo/25/codetables/2186.table\
+	bufr/tables/0/wmo/25/codetables/2187.table\
+	bufr/tables/0/wmo/25/codetables/2188.table\
+	bufr/tables/0/wmo/25/codetables/2189.table\
+	bufr/tables/0/wmo/25/codetables/2191.table\
+	bufr/tables/0/wmo/25/codetables/22056.table\
+	bufr/tables/0/wmo/25/codetables/22060.table\
+	bufr/tables/0/wmo/25/codetables/22061.table\
+	bufr/tables/0/wmo/25/codetables/22067.table\
+	bufr/tables/0/wmo/25/codetables/22068.table\
+	bufr/tables/0/wmo/25/codetables/22120.table\
+	bufr/tables/0/wmo/25/codetables/22121.table\
+	bufr/tables/0/wmo/25/codetables/22122.table\
+	bufr/tables/0/wmo/25/codetables/22123.table\
+	bufr/tables/0/wmo/25/codetables/22178.table\
+	bufr/tables/0/wmo/25/codetables/23001.table\
+	bufr/tables/0/wmo/25/codetables/23002.table\
+	bufr/tables/0/wmo/25/codetables/23003.table\
+	bufr/tables/0/wmo/25/codetables/23004.table\
+	bufr/tables/0/wmo/25/codetables/23005.table\
+	bufr/tables/0/wmo/25/codetables/23006.table\
+	bufr/tables/0/wmo/25/codetables/23007.table\
+	bufr/tables/0/wmo/25/codetables/23008.table\
+	bufr/tables/0/wmo/25/codetables/23009.table\
+	bufr/tables/0/wmo/25/codetables/23016.table\
+	bufr/tables/0/wmo/25/codetables/23018.table\
+	bufr/tables/0/wmo/25/codetables/23031.table\
+	bufr/tables/0/wmo/25/codetables/23032.table\
+	bufr/tables/0/wmo/25/codetables/24003.table\
+	bufr/tables/0/wmo/25/codetables/25004.table\
+	bufr/tables/0/wmo/25/codetables/25005.table\
+	bufr/tables/0/wmo/25/codetables/25006.table\
+	bufr/tables/0/wmo/25/codetables/25009.table\
+	bufr/tables/0/wmo/25/codetables/25010.table\
+	bufr/tables/0/wmo/25/codetables/25011.table\
+	bufr/tables/0/wmo/25/codetables/25012.table\
+	bufr/tables/0/wmo/25/codetables/25013.table\
+	bufr/tables/0/wmo/25/codetables/25015.table\
+	bufr/tables/0/wmo/25/codetables/25017.table\
+	bufr/tables/0/wmo/25/codetables/25020.table\
+	bufr/tables/0/wmo/25/codetables/25021.table\
+	bufr/tables/0/wmo/25/codetables/25022.table\
+	bufr/tables/0/wmo/25/codetables/25023.table\
+	bufr/tables/0/wmo/25/codetables/25024.table\
+	bufr/tables/0/wmo/25/codetables/25029.table\
+	bufr/tables/0/wmo/25/codetables/25030.table\
+	bufr/tables/0/wmo/25/codetables/25031.table\
+	bufr/tables/0/wmo/25/codetables/25032.table\
+	bufr/tables/0/wmo/25/codetables/25033.table\
+	bufr/tables/0/wmo/25/codetables/25034.table\
+	bufr/tables/0/wmo/25/codetables/25035.table\
+	bufr/tables/0/wmo/25/codetables/25036.table\
+	bufr/tables/0/wmo/25/codetables/25040.table\
+	bufr/tables/0/wmo/25/codetables/25041.table\
+	bufr/tables/0/wmo/25/codetables/25042.table\
+	bufr/tables/0/wmo/25/codetables/25053.table\
+	bufr/tables/0/wmo/25/codetables/25063.table\
+	bufr/tables/0/wmo/25/codetables/25069.table\
+	bufr/tables/0/wmo/25/codetables/25086.table\
+	bufr/tables/0/wmo/25/codetables/25090.table\
+	bufr/tables/0/wmo/25/codetables/25093.table\
+	bufr/tables/0/wmo/25/codetables/25095.table\
+	bufr/tables/0/wmo/25/codetables/25096.table\
+	bufr/tables/0/wmo/25/codetables/25097.table\
+	bufr/tables/0/wmo/25/codetables/25098.table\
+	bufr/tables/0/wmo/25/codetables/25099.table\
+	bufr/tables/0/wmo/25/codetables/25110.table\
+	bufr/tables/0/wmo/25/codetables/25112.table\
+	bufr/tables/0/wmo/25/codetables/25113.table\
+	bufr/tables/0/wmo/25/codetables/25120.table\
+	bufr/tables/0/wmo/25/codetables/25122.table\
+	bufr/tables/0/wmo/25/codetables/25123.table\
+	bufr/tables/0/wmo/25/codetables/25124.table\
+	bufr/tables/0/wmo/25/codetables/25150.table\
+	bufr/tables/0/wmo/25/codetables/25174.table\
+	bufr/tables/0/wmo/25/codetables/25181.table\
+	bufr/tables/0/wmo/25/codetables/25182.table\
+	bufr/tables/0/wmo/25/codetables/25184.table\
+	bufr/tables/0/wmo/25/codetables/26010.table\
+	bufr/tables/0/wmo/25/codetables/29001.table\
+	bufr/tables/0/wmo/25/codetables/29002.table\
+	bufr/tables/0/wmo/25/codetables/30031.table\
+	bufr/tables/0/wmo/25/codetables/30032.table\
+	bufr/tables/0/wmo/25/codetables/3010.table\
+	bufr/tables/0/wmo/25/codetables/3011.table\
+	bufr/tables/0/wmo/25/codetables/3012.table\
+	bufr/tables/0/wmo/25/codetables/31021.table\
+	bufr/tables/0/wmo/25/codetables/31031.table\
+	bufr/tables/0/wmo/25/codetables/33002.table\
+	bufr/tables/0/wmo/25/codetables/33003.table\
+	bufr/tables/0/wmo/25/codetables/33005.table\
+	bufr/tables/0/wmo/25/codetables/33006.table\
+	bufr/tables/0/wmo/25/codetables/33015.table\
+	bufr/tables/0/wmo/25/codetables/33020.table\
+	bufr/tables/0/wmo/25/codetables/33021.table\
+	bufr/tables/0/wmo/25/codetables/33022.table\
+	bufr/tables/0/wmo/25/codetables/33023.table\
+	bufr/tables/0/wmo/25/codetables/33024.table\
+	bufr/tables/0/wmo/25/codetables/33025.table\
+	bufr/tables/0/wmo/25/codetables/33026.table\
+	bufr/tables/0/wmo/25/codetables/33027.table\
+	bufr/tables/0/wmo/25/codetables/33028.table\
+	bufr/tables/0/wmo/25/codetables/33030.table\
+	bufr/tables/0/wmo/25/codetables/33031.table\
+	bufr/tables/0/wmo/25/codetables/33032.table\
+	bufr/tables/0/wmo/25/codetables/33033.table\
+	bufr/tables/0/wmo/25/codetables/33035.table\
+	bufr/tables/0/wmo/25/codetables/33037.table\
+	bufr/tables/0/wmo/25/codetables/33038.table\
+	bufr/tables/0/wmo/25/codetables/33039.table\
+	bufr/tables/0/wmo/25/codetables/33041.table\
+	bufr/tables/0/wmo/25/codetables/33042.table\
+	bufr/tables/0/wmo/25/codetables/33043.table\
+	bufr/tables/0/wmo/25/codetables/33044.table\
+	bufr/tables/0/wmo/25/codetables/33047.table\
+	bufr/tables/0/wmo/25/codetables/33048.table\
+	bufr/tables/0/wmo/25/codetables/33049.table\
+	bufr/tables/0/wmo/25/codetables/33050.table\
+	bufr/tables/0/wmo/25/codetables/33060.table\
+	bufr/tables/0/wmo/25/codetables/33070.table\
+	bufr/tables/0/wmo/25/codetables/33071.table\
+	bufr/tables/0/wmo/25/codetables/33072.table\
+	bufr/tables/0/wmo/25/codetables/33075.table\
+	bufr/tables/0/wmo/25/codetables/33076.table\
+	bufr/tables/0/wmo/25/codetables/33077.table\
+	bufr/tables/0/wmo/25/codetables/33078.table\
+	bufr/tables/0/wmo/25/codetables/33079.table\
+	bufr/tables/0/wmo/25/codetables/33080.table\
+	bufr/tables/0/wmo/25/codetables/33081.table\
+	bufr/tables/0/wmo/25/codetables/33082.table\
+	bufr/tables/0/wmo/25/codetables/33083.table\
+	bufr/tables/0/wmo/25/codetables/33084.table\
+	bufr/tables/0/wmo/25/codetables/33085.table\
+	bufr/tables/0/wmo/25/codetables/33086.table\
+	bufr/tables/0/wmo/25/codetables/33087.table\
+	bufr/tables/0/wmo/25/codetables/33088.table\
+	bufr/tables/0/wmo/25/codetables/35000.table\
+	bufr/tables/0/wmo/25/codetables/35001.table\
+	bufr/tables/0/wmo/25/codetables/35030.table\
+	bufr/tables/0/wmo/25/codetables/35031.table\
+	bufr/tables/0/wmo/25/codetables/35032.table\
+	bufr/tables/0/wmo/25/codetables/35033.table\
+	bufr/tables/0/wmo/25/codetables/35034.table\
+	bufr/tables/0/wmo/25/codetables/35035.table\
+	bufr/tables/0/wmo/25/codetables/40005.table\
+	bufr/tables/0/wmo/25/codetables/40006.table\
+	bufr/tables/0/wmo/25/codetables/40011.table\
+	bufr/tables/0/wmo/25/codetables/40012.table\
+	bufr/tables/0/wmo/25/codetables/40013.table\
+	bufr/tables/0/wmo/25/codetables/40020.table\
+	bufr/tables/0/wmo/25/codetables/40023.table\
+	bufr/tables/0/wmo/25/codetables/40024.table\
+	bufr/tables/0/wmo/25/codetables/40025.table\
+	bufr/tables/0/wmo/25/codetables/40028.table\
+	bufr/tables/0/wmo/25/codetables/4059.table\
+	bufr/tables/0/wmo/25/codetables/4080.table\
+	bufr/tables/0/wmo/25/codetables/8001.table\
+	bufr/tables/0/wmo/25/codetables/8002.table\
+	bufr/tables/0/wmo/25/codetables/8003.table\
+	bufr/tables/0/wmo/25/codetables/8004.table\
+	bufr/tables/0/wmo/25/codetables/8005.table\
+	bufr/tables/0/wmo/25/codetables/8006.table\
+	bufr/tables/0/wmo/25/codetables/8007.table\
+	bufr/tables/0/wmo/25/codetables/8008.table\
+	bufr/tables/0/wmo/25/codetables/8009.table\
+	bufr/tables/0/wmo/25/codetables/8010.table\
+	bufr/tables/0/wmo/25/codetables/8011.table\
+	bufr/tables/0/wmo/25/codetables/8012.table\
+	bufr/tables/0/wmo/25/codetables/8013.table\
+	bufr/tables/0/wmo/25/codetables/8014.table\
+	bufr/tables/0/wmo/25/codetables/8015.table\
+	bufr/tables/0/wmo/25/codetables/8016.table\
+	bufr/tables/0/wmo/25/codetables/8017.table\
+	bufr/tables/0/wmo/25/codetables/8018.table\
+	bufr/tables/0/wmo/25/codetables/8019.table\
+	bufr/tables/0/wmo/25/codetables/8021.table\
+	bufr/tables/0/wmo/25/codetables/8023.table\
+	bufr/tables/0/wmo/25/codetables/8024.table\
+	bufr/tables/0/wmo/25/codetables/8025.table\
+	bufr/tables/0/wmo/25/codetables/8026.table\
+	bufr/tables/0/wmo/25/codetables/8029.table\
+	bufr/tables/0/wmo/25/codetables/8032.table\
+	bufr/tables/0/wmo/25/codetables/8033.table\
+	bufr/tables/0/wmo/25/codetables/8034.table\
+	bufr/tables/0/wmo/25/codetables/8035.table\
+	bufr/tables/0/wmo/25/codetables/8036.table\
+	bufr/tables/0/wmo/25/codetables/8039.table\
+	bufr/tables/0/wmo/25/codetables/8040.table\
+	bufr/tables/0/wmo/25/codetables/8041.table\
+	bufr/tables/0/wmo/25/codetables/8042.table\
+	bufr/tables/0/wmo/25/codetables/8043.table\
+	bufr/tables/0/wmo/25/codetables/8050.table\
+	bufr/tables/0/wmo/25/codetables/8051.table\
+	bufr/tables/0/wmo/25/codetables/8052.table\
+	bufr/tables/0/wmo/25/codetables/8053.table\
+	bufr/tables/0/wmo/25/codetables/8054.table\
+	bufr/tables/0/wmo/25/codetables/8060.table\
+	bufr/tables/0/wmo/25/codetables/8065.table\
+	bufr/tables/0/wmo/25/codetables/8066.table\
+	bufr/tables/0/wmo/25/codetables/8070.table\
+	bufr/tables/0/wmo/25/codetables/8072.table\
+	bufr/tables/0/wmo/25/codetables/8074.table\
+	bufr/tables/0/wmo/25/codetables/8075.table\
+	bufr/tables/0/wmo/25/codetables/8076.table\
+	bufr/tables/0/wmo/25/codetables/8077.table\
+	bufr/tables/0/wmo/25/codetables/8079.table\
+	bufr/tables/0/wmo/25/codetables/8080.table\
+	bufr/tables/0/wmo/25/codetables/8081.table\
+	bufr/tables/0/wmo/25/codetables/8082.table\
+	bufr/tables/0/wmo/25/codetables/8083.table\
+	bufr/tables/0/wmo/25/codetables/8085.table\
+	bufr/tables/0/wmo/25/codetables/8086.table\
+	bufr/tables/0/wmo/25/codetables/8087.table\
+	bufr/tables/0/wmo/25/codetables/8091.table
+
 definitionsbufr_tables_0_wmo_6dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/6
 dist_definitionsbufr_tables_0_wmo_6_DATA = \
 	bufr/tables/0/wmo/6/element.table\
@@ -4871,6 +6814,1050 @@ dist_definitionsbufr_tables_0_wmo_6_codetables_DATA = \
 	bufr/tables/0/wmo/6/codetables/8070.table\
 	bufr/tables/0/wmo/6/codetables/8072.table
 
+definitionsbufr_tables_0_wmo_7dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/7
+dist_definitionsbufr_tables_0_wmo_7_DATA = \
+	bufr/tables/0/wmo/7/element.table\
+	bufr/tables/0/wmo/7/sequence.def
+
+definitionsbufr_tables_0_wmo_7_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/7/codetables
+dist_definitionsbufr_tables_0_wmo_7_codetables_DATA = \
+	bufr/tables/0/wmo/7/codetables/1003.table\
+	bufr/tables/0/wmo/7/codetables/10063.table\
+	bufr/tables/0/wmo/7/codetables/10064.table\
+	bufr/tables/0/wmo/7/codetables/1007.table\
+	bufr/tables/0/wmo/7/codetables/1031.table\
+	bufr/tables/0/wmo/7/codetables/1032.table\
+	bufr/tables/0/wmo/7/codetables/1033.table\
+	bufr/tables/0/wmo/7/codetables/1035.table\
+	bufr/tables/0/wmo/7/codetables/1090.table\
+	bufr/tables/0/wmo/7/codetables/1092.table\
+	bufr/tables/0/wmo/7/codetables/11031.table\
+	bufr/tables/0/wmo/7/codetables/11037.table\
+	bufr/tables/0/wmo/7/codetables/11038.table\
+	bufr/tables/0/wmo/7/codetables/11039.table\
+	bufr/tables/0/wmo/7/codetables/13038.table\
+	bufr/tables/0/wmo/7/codetables/13039.table\
+	bufr/tables/0/wmo/7/codetables/13040.table\
+	bufr/tables/0/wmo/7/codetables/13041.table\
+	bufr/tables/0/wmo/7/codetables/13051.table\
+	bufr/tables/0/wmo/7/codetables/13056.table\
+	bufr/tables/0/wmo/7/codetables/13057.table\
+	bufr/tables/0/wmo/7/codetables/15025.table\
+	bufr/tables/0/wmo/7/codetables/19001.table\
+	bufr/tables/0/wmo/7/codetables/19008.table\
+	bufr/tables/0/wmo/7/codetables/19010.table\
+	bufr/tables/0/wmo/7/codetables/20003.table\
+	bufr/tables/0/wmo/7/codetables/20004.table\
+	bufr/tables/0/wmo/7/codetables/20005.table\
+	bufr/tables/0/wmo/7/codetables/20008.table\
+	bufr/tables/0/wmo/7/codetables/20009.table\
+	bufr/tables/0/wmo/7/codetables/2001.table\
+	bufr/tables/0/wmo/7/codetables/20011.table\
+	bufr/tables/0/wmo/7/codetables/20012.table\
+	bufr/tables/0/wmo/7/codetables/20017.table\
+	bufr/tables/0/wmo/7/codetables/20018.table\
+	bufr/tables/0/wmo/7/codetables/2002.table\
+	bufr/tables/0/wmo/7/codetables/20021.table\
+	bufr/tables/0/wmo/7/codetables/20022.table\
+	bufr/tables/0/wmo/7/codetables/20023.table\
+	bufr/tables/0/wmo/7/codetables/20024.table\
+	bufr/tables/0/wmo/7/codetables/20025.table\
+	bufr/tables/0/wmo/7/codetables/20026.table\
+	bufr/tables/0/wmo/7/codetables/20027.table\
+	bufr/tables/0/wmo/7/codetables/20029.table\
+	bufr/tables/0/wmo/7/codetables/2003.table\
+	bufr/tables/0/wmo/7/codetables/20032.table\
+	bufr/tables/0/wmo/7/codetables/20033.table\
+	bufr/tables/0/wmo/7/codetables/20034.table\
+	bufr/tables/0/wmo/7/codetables/20035.table\
+	bufr/tables/0/wmo/7/codetables/20036.table\
+	bufr/tables/0/wmo/7/codetables/20037.table\
+	bufr/tables/0/wmo/7/codetables/2004.table\
+	bufr/tables/0/wmo/7/codetables/20040.table\
+	bufr/tables/0/wmo/7/codetables/20041.table\
+	bufr/tables/0/wmo/7/codetables/20042.table\
+	bufr/tables/0/wmo/7/codetables/20045.table\
+	bufr/tables/0/wmo/7/codetables/20050.table\
+	bufr/tables/0/wmo/7/codetables/20055.table\
+	bufr/tables/0/wmo/7/codetables/20056.table\
+	bufr/tables/0/wmo/7/codetables/20062.table\
+	bufr/tables/0/wmo/7/codetables/20063.table\
+	bufr/tables/0/wmo/7/codetables/20071.table\
+	bufr/tables/0/wmo/7/codetables/20086.table\
+	bufr/tables/0/wmo/7/codetables/20090.table\
+	bufr/tables/0/wmo/7/codetables/20101.table\
+	bufr/tables/0/wmo/7/codetables/20102.table\
+	bufr/tables/0/wmo/7/codetables/2011.table\
+	bufr/tables/0/wmo/7/codetables/2012.table\
+	bufr/tables/0/wmo/7/codetables/2013.table\
+	bufr/tables/0/wmo/7/codetables/2014.table\
+	bufr/tables/0/wmo/7/codetables/2015.table\
+	bufr/tables/0/wmo/7/codetables/2016.table\
+	bufr/tables/0/wmo/7/codetables/2019.table\
+	bufr/tables/0/wmo/7/codetables/2020.table\
+	bufr/tables/0/wmo/7/codetables/2021.table\
+	bufr/tables/0/wmo/7/codetables/2022.table\
+	bufr/tables/0/wmo/7/codetables/2023.table\
+	bufr/tables/0/wmo/7/codetables/2024.table\
+	bufr/tables/0/wmo/7/codetables/2025.table\
+	bufr/tables/0/wmo/7/codetables/2030.table\
+	bufr/tables/0/wmo/7/codetables/2031.table\
+	bufr/tables/0/wmo/7/codetables/2032.table\
+	bufr/tables/0/wmo/7/codetables/2033.table\
+	bufr/tables/0/wmo/7/codetables/2034.table\
+	bufr/tables/0/wmo/7/codetables/2036.table\
+	bufr/tables/0/wmo/7/codetables/2037.table\
+	bufr/tables/0/wmo/7/codetables/2038.table\
+	bufr/tables/0/wmo/7/codetables/2039.table\
+	bufr/tables/0/wmo/7/codetables/2040.table\
+	bufr/tables/0/wmo/7/codetables/2041.table\
+	bufr/tables/0/wmo/7/codetables/2044.table\
+	bufr/tables/0/wmo/7/codetables/2045.table\
+	bufr/tables/0/wmo/7/codetables/2046.table\
+	bufr/tables/0/wmo/7/codetables/2048.table\
+	bufr/tables/0/wmo/7/codetables/2049.table\
+	bufr/tables/0/wmo/7/codetables/2050.table\
+	bufr/tables/0/wmo/7/codetables/2051.table\
+	bufr/tables/0/wmo/7/codetables/2052.table\
+	bufr/tables/0/wmo/7/codetables/2053.table\
+	bufr/tables/0/wmo/7/codetables/2054.table\
+	bufr/tables/0/wmo/7/codetables/2055.table\
+	bufr/tables/0/wmo/7/codetables/2056.table\
+	bufr/tables/0/wmo/7/codetables/2057.table\
+	bufr/tables/0/wmo/7/codetables/2058.table\
+	bufr/tables/0/wmo/7/codetables/2059.table\
+	bufr/tables/0/wmo/7/codetables/2060.table\
+	bufr/tables/0/wmo/7/codetables/2061.table\
+	bufr/tables/0/wmo/7/codetables/2062.table\
+	bufr/tables/0/wmo/7/codetables/2064.table\
+	bufr/tables/0/wmo/7/codetables/2066.table\
+	bufr/tables/0/wmo/7/codetables/2070.table\
+	bufr/tables/0/wmo/7/codetables/2080.table\
+	bufr/tables/0/wmo/7/codetables/2081.table\
+	bufr/tables/0/wmo/7/codetables/2083.table\
+	bufr/tables/0/wmo/7/codetables/2084.table\
+	bufr/tables/0/wmo/7/codetables/2095.table\
+	bufr/tables/0/wmo/7/codetables/2096.table\
+	bufr/tables/0/wmo/7/codetables/2097.table\
+	bufr/tables/0/wmo/7/codetables/2098.table\
+	bufr/tables/0/wmo/7/codetables/2101.table\
+	bufr/tables/0/wmo/7/codetables/2103.table\
+	bufr/tables/0/wmo/7/codetables/2104.table\
+	bufr/tables/0/wmo/7/codetables/21066.table\
+	bufr/tables/0/wmo/7/codetables/21067.table\
+	bufr/tables/0/wmo/7/codetables/21068.table\
+	bufr/tables/0/wmo/7/codetables/21069.table\
+	bufr/tables/0/wmo/7/codetables/21070.table\
+	bufr/tables/0/wmo/7/codetables/21072.table\
+	bufr/tables/0/wmo/7/codetables/21073.table\
+	bufr/tables/0/wmo/7/codetables/21076.table\
+	bufr/tables/0/wmo/7/codetables/21109.table\
+	bufr/tables/0/wmo/7/codetables/21115.table\
+	bufr/tables/0/wmo/7/codetables/21116.table\
+	bufr/tables/0/wmo/7/codetables/21119.table\
+	bufr/tables/0/wmo/7/codetables/21144.table\
+	bufr/tables/0/wmo/7/codetables/2115.table\
+	bufr/tables/0/wmo/7/codetables/21150.table\
+	bufr/tables/0/wmo/7/codetables/21155.table\
+	bufr/tables/0/wmo/7/codetables/21158.table\
+	bufr/tables/0/wmo/7/codetables/21159.table\
+	bufr/tables/0/wmo/7/codetables/21169.table\
+	bufr/tables/0/wmo/7/codetables/2119.table\
+	bufr/tables/0/wmo/7/codetables/2131.table\
+	bufr/tables/0/wmo/7/codetables/2143.table\
+	bufr/tables/0/wmo/7/codetables/2144.table\
+	bufr/tables/0/wmo/7/codetables/2145.table\
+	bufr/tables/0/wmo/7/codetables/2146.table\
+	bufr/tables/0/wmo/7/codetables/2148.table\
+	bufr/tables/0/wmo/7/codetables/2149.table\
+	bufr/tables/0/wmo/7/codetables/2150.table\
+	bufr/tables/0/wmo/7/codetables/2151.table\
+	bufr/tables/0/wmo/7/codetables/2152.table\
+	bufr/tables/0/wmo/7/codetables/2158.table\
+	bufr/tables/0/wmo/7/codetables/2159.table\
+	bufr/tables/0/wmo/7/codetables/2163.table\
+	bufr/tables/0/wmo/7/codetables/2164.table\
+	bufr/tables/0/wmo/7/codetables/2166.table\
+	bufr/tables/0/wmo/7/codetables/2167.table\
+	bufr/tables/0/wmo/7/codetables/2169.table\
+	bufr/tables/0/wmo/7/codetables/2172.table\
+	bufr/tables/0/wmo/7/codetables/2175.table\
+	bufr/tables/0/wmo/7/codetables/2176.table\
+	bufr/tables/0/wmo/7/codetables/2177.table\
+	bufr/tables/0/wmo/7/codetables/2178.table\
+	bufr/tables/0/wmo/7/codetables/2179.table\
+	bufr/tables/0/wmo/7/codetables/2180.table\
+	bufr/tables/0/wmo/7/codetables/2181.table\
+	bufr/tables/0/wmo/7/codetables/2182.table\
+	bufr/tables/0/wmo/7/codetables/2183.table\
+	bufr/tables/0/wmo/7/codetables/2184.table\
+	bufr/tables/0/wmo/7/codetables/2185.table\
+	bufr/tables/0/wmo/7/codetables/2186.table\
+	bufr/tables/0/wmo/7/codetables/2187.table\
+	bufr/tables/0/wmo/7/codetables/2188.table\
+	bufr/tables/0/wmo/7/codetables/2189.table\
+	bufr/tables/0/wmo/7/codetables/22056.table\
+	bufr/tables/0/wmo/7/codetables/22060.table\
+	bufr/tables/0/wmo/7/codetables/22061.table\
+	bufr/tables/0/wmo/7/codetables/22067.table\
+	bufr/tables/0/wmo/7/codetables/22068.table\
+	bufr/tables/0/wmo/7/codetables/22120.table\
+	bufr/tables/0/wmo/7/codetables/22121.table\
+	bufr/tables/0/wmo/7/codetables/22122.table\
+	bufr/tables/0/wmo/7/codetables/22123.table\
+	bufr/tables/0/wmo/7/codetables/23001.table\
+	bufr/tables/0/wmo/7/codetables/23002.table\
+	bufr/tables/0/wmo/7/codetables/23003.table\
+	bufr/tables/0/wmo/7/codetables/23004.table\
+	bufr/tables/0/wmo/7/codetables/23005.table\
+	bufr/tables/0/wmo/7/codetables/23006.table\
+	bufr/tables/0/wmo/7/codetables/23007.table\
+	bufr/tables/0/wmo/7/codetables/23008.table\
+	bufr/tables/0/wmo/7/codetables/23009.table\
+	bufr/tables/0/wmo/7/codetables/23016.table\
+	bufr/tables/0/wmo/7/codetables/23018.table\
+	bufr/tables/0/wmo/7/codetables/23031.table\
+	bufr/tables/0/wmo/7/codetables/23032.table\
+	bufr/tables/0/wmo/7/codetables/24003.table\
+	bufr/tables/0/wmo/7/codetables/25004.table\
+	bufr/tables/0/wmo/7/codetables/25005.table\
+	bufr/tables/0/wmo/7/codetables/25006.table\
+	bufr/tables/0/wmo/7/codetables/25009.table\
+	bufr/tables/0/wmo/7/codetables/25010.table\
+	bufr/tables/0/wmo/7/codetables/25011.table\
+	bufr/tables/0/wmo/7/codetables/25012.table\
+	bufr/tables/0/wmo/7/codetables/25013.table\
+	bufr/tables/0/wmo/7/codetables/25015.table\
+	bufr/tables/0/wmo/7/codetables/25017.table\
+	bufr/tables/0/wmo/7/codetables/25020.table\
+	bufr/tables/0/wmo/7/codetables/25021.table\
+	bufr/tables/0/wmo/7/codetables/25030.table\
+	bufr/tables/0/wmo/7/codetables/25032.table\
+	bufr/tables/0/wmo/7/codetables/25033.table\
+	bufr/tables/0/wmo/7/codetables/25034.table\
+	bufr/tables/0/wmo/7/codetables/25036.table\
+	bufr/tables/0/wmo/7/codetables/25040.table\
+	bufr/tables/0/wmo/7/codetables/25041.table\
+	bufr/tables/0/wmo/7/codetables/25042.table\
+	bufr/tables/0/wmo/7/codetables/25045.table\
+	bufr/tables/0/wmo/7/codetables/25046.table\
+	bufr/tables/0/wmo/7/codetables/25047.table\
+	bufr/tables/0/wmo/7/codetables/25048.table\
+	bufr/tables/0/wmo/7/codetables/25049.table\
+	bufr/tables/0/wmo/7/codetables/25051.table\
+	bufr/tables/0/wmo/7/codetables/25053.table\
+	bufr/tables/0/wmo/7/codetables/25069.table\
+	bufr/tables/0/wmo/7/codetables/25086.table\
+	bufr/tables/0/wmo/7/codetables/25093.table\
+	bufr/tables/0/wmo/7/codetables/25095.table\
+	bufr/tables/0/wmo/7/codetables/25096.table\
+	bufr/tables/0/wmo/7/codetables/25097.table\
+	bufr/tables/0/wmo/7/codetables/25098.table\
+	bufr/tables/0/wmo/7/codetables/25099.table\
+	bufr/tables/0/wmo/7/codetables/25110.table\
+	bufr/tables/0/wmo/7/codetables/25120.table\
+	bufr/tables/0/wmo/7/codetables/25122.table\
+	bufr/tables/0/wmo/7/codetables/25123.table\
+	bufr/tables/0/wmo/7/codetables/25124.table\
+	bufr/tables/0/wmo/7/codetables/26010.table\
+	bufr/tables/0/wmo/7/codetables/29001.table\
+	bufr/tables/0/wmo/7/codetables/29002.table\
+	bufr/tables/0/wmo/7/codetables/30031.table\
+	bufr/tables/0/wmo/7/codetables/30032.table\
+	bufr/tables/0/wmo/7/codetables/31021.table\
+	bufr/tables/0/wmo/7/codetables/31031.table\
+	bufr/tables/0/wmo/7/codetables/33002.table\
+	bufr/tables/0/wmo/7/codetables/33003.table\
+	bufr/tables/0/wmo/7/codetables/33005.table\
+	bufr/tables/0/wmo/7/codetables/33006.table\
+	bufr/tables/0/wmo/7/codetables/33015.table\
+	bufr/tables/0/wmo/7/codetables/33020.table\
+	bufr/tables/0/wmo/7/codetables/33021.table\
+	bufr/tables/0/wmo/7/codetables/33022.table\
+	bufr/tables/0/wmo/7/codetables/33023.table\
+	bufr/tables/0/wmo/7/codetables/33024.table\
+	bufr/tables/0/wmo/7/codetables/33025.table\
+	bufr/tables/0/wmo/7/codetables/33026.table\
+	bufr/tables/0/wmo/7/codetables/33027.table\
+	bufr/tables/0/wmo/7/codetables/33028.table\
+	bufr/tables/0/wmo/7/codetables/33030.table\
+	bufr/tables/0/wmo/7/codetables/33031.table\
+	bufr/tables/0/wmo/7/codetables/33032.table\
+	bufr/tables/0/wmo/7/codetables/33033.table\
+	bufr/tables/0/wmo/7/codetables/33035.table\
+	bufr/tables/0/wmo/7/codetables/33037.table\
+	bufr/tables/0/wmo/7/codetables/33038.table\
+	bufr/tables/0/wmo/7/codetables/33039.table\
+	bufr/tables/0/wmo/7/codetables/33041.table\
+	bufr/tables/0/wmo/7/codetables/33042.table\
+	bufr/tables/0/wmo/7/codetables/33043.table\
+	bufr/tables/0/wmo/7/codetables/33044.table\
+	bufr/tables/0/wmo/7/codetables/33047.table\
+	bufr/tables/0/wmo/7/codetables/33048.table\
+	bufr/tables/0/wmo/7/codetables/33049.table\
+	bufr/tables/0/wmo/7/codetables/33050.table\
+	bufr/tables/0/wmo/7/codetables/33052.table\
+	bufr/tables/0/wmo/7/codetables/33053.table\
+	bufr/tables/0/wmo/7/codetables/33060.table\
+	bufr/tables/0/wmo/7/codetables/35000.table\
+	bufr/tables/0/wmo/7/codetables/35001.table\
+	bufr/tables/0/wmo/7/codetables/35030.table\
+	bufr/tables/0/wmo/7/codetables/35031.table\
+	bufr/tables/0/wmo/7/codetables/35032.table\
+	bufr/tables/0/wmo/7/codetables/35033.table\
+	bufr/tables/0/wmo/7/codetables/35034.table\
+	bufr/tables/0/wmo/7/codetables/40011.table\
+	bufr/tables/0/wmo/7/codetables/40012.table\
+	bufr/tables/0/wmo/7/codetables/40013.table\
+	bufr/tables/0/wmo/7/codetables/4059.table\
+	bufr/tables/0/wmo/7/codetables/8001.table\
+	bufr/tables/0/wmo/7/codetables/8002.table\
+	bufr/tables/0/wmo/7/codetables/8003.table\
+	bufr/tables/0/wmo/7/codetables/8004.table\
+	bufr/tables/0/wmo/7/codetables/8005.table\
+	bufr/tables/0/wmo/7/codetables/8006.table\
+	bufr/tables/0/wmo/7/codetables/8007.table\
+	bufr/tables/0/wmo/7/codetables/8008.table\
+	bufr/tables/0/wmo/7/codetables/8009.table\
+	bufr/tables/0/wmo/7/codetables/8010.table\
+	bufr/tables/0/wmo/7/codetables/8011.table\
+	bufr/tables/0/wmo/7/codetables/8012.table\
+	bufr/tables/0/wmo/7/codetables/8013.table\
+	bufr/tables/0/wmo/7/codetables/8014.table\
+	bufr/tables/0/wmo/7/codetables/8016.table\
+	bufr/tables/0/wmo/7/codetables/8017.table\
+	bufr/tables/0/wmo/7/codetables/8018.table\
+	bufr/tables/0/wmo/7/codetables/8021.table\
+	bufr/tables/0/wmo/7/codetables/8023.table\
+	bufr/tables/0/wmo/7/codetables/8024.table\
+	bufr/tables/0/wmo/7/codetables/8025.table\
+	bufr/tables/0/wmo/7/codetables/8026.table\
+	bufr/tables/0/wmo/7/codetables/8029.table\
+	bufr/tables/0/wmo/7/codetables/8033.table\
+	bufr/tables/0/wmo/7/codetables/8035.table\
+	bufr/tables/0/wmo/7/codetables/8036.table\
+	bufr/tables/0/wmo/7/codetables/8039.table\
+	bufr/tables/0/wmo/7/codetables/8040.table\
+	bufr/tables/0/wmo/7/codetables/8041.table\
+	bufr/tables/0/wmo/7/codetables/8042.table\
+	bufr/tables/0/wmo/7/codetables/8043.table\
+	bufr/tables/0/wmo/7/codetables/8050.table\
+	bufr/tables/0/wmo/7/codetables/8051.table\
+	bufr/tables/0/wmo/7/codetables/8052.table\
+	bufr/tables/0/wmo/7/codetables/8053.table\
+	bufr/tables/0/wmo/7/codetables/8054.table\
+	bufr/tables/0/wmo/7/codetables/8060.table\
+	bufr/tables/0/wmo/7/codetables/8065.table\
+	bufr/tables/0/wmo/7/codetables/8066.table\
+	bufr/tables/0/wmo/7/codetables/8070.table\
+	bufr/tables/0/wmo/7/codetables/8072.table\
+	bufr/tables/0/wmo/7/codetables/8074.table\
+	bufr/tables/0/wmo/7/codetables/8075.table\
+	bufr/tables/0/wmo/7/codetables/8076.table\
+	bufr/tables/0/wmo/7/codetables/8077.table\
+	bufr/tables/0/wmo/7/codetables/8079.table\
+	bufr/tables/0/wmo/7/codetables/8080.table\
+	bufr/tables/0/wmo/7/codetables/8081.table\
+	bufr/tables/0/wmo/7/codetables/8082.table\
+	bufr/tables/0/wmo/7/codetables/8083.table\
+	bufr/tables/0/wmo/7/codetables/8085.table
+
+definitionsbufr_tables_0_wmo_8dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/8
+dist_definitionsbufr_tables_0_wmo_8_DATA = \
+	bufr/tables/0/wmo/8/element.table\
+	bufr/tables/0/wmo/8/sequence.def
+
+definitionsbufr_tables_0_wmo_8_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/8/codetables
+dist_definitionsbufr_tables_0_wmo_8_codetables_DATA = \
+	bufr/tables/0/wmo/8/codetables/1003.table\
+	bufr/tables/0/wmo/8/codetables/10063.table\
+	bufr/tables/0/wmo/8/codetables/10064.table\
+	bufr/tables/0/wmo/8/codetables/1007.table\
+	bufr/tables/0/wmo/8/codetables/1031.table\
+	bufr/tables/0/wmo/8/codetables/1032.table\
+	bufr/tables/0/wmo/8/codetables/1033.table\
+	bufr/tables/0/wmo/8/codetables/1035.table\
+	bufr/tables/0/wmo/8/codetables/1090.table\
+	bufr/tables/0/wmo/8/codetables/1092.table\
+	bufr/tables/0/wmo/8/codetables/11031.table\
+	bufr/tables/0/wmo/8/codetables/11037.table\
+	bufr/tables/0/wmo/8/codetables/11038.table\
+	bufr/tables/0/wmo/8/codetables/11039.table\
+	bufr/tables/0/wmo/8/codetables/13038.table\
+	bufr/tables/0/wmo/8/codetables/13039.table\
+	bufr/tables/0/wmo/8/codetables/13040.table\
+	bufr/tables/0/wmo/8/codetables/13041.table\
+	bufr/tables/0/wmo/8/codetables/13051.table\
+	bufr/tables/0/wmo/8/codetables/13056.table\
+	bufr/tables/0/wmo/8/codetables/13057.table\
+	bufr/tables/0/wmo/8/codetables/15025.table\
+	bufr/tables/0/wmo/8/codetables/19001.table\
+	bufr/tables/0/wmo/8/codetables/19008.table\
+	bufr/tables/0/wmo/8/codetables/19010.table\
+	bufr/tables/0/wmo/8/codetables/20003.table\
+	bufr/tables/0/wmo/8/codetables/20004.table\
+	bufr/tables/0/wmo/8/codetables/20005.table\
+	bufr/tables/0/wmo/8/codetables/20008.table\
+	bufr/tables/0/wmo/8/codetables/20009.table\
+	bufr/tables/0/wmo/8/codetables/2001.table\
+	bufr/tables/0/wmo/8/codetables/20011.table\
+	bufr/tables/0/wmo/8/codetables/20012.table\
+	bufr/tables/0/wmo/8/codetables/20017.table\
+	bufr/tables/0/wmo/8/codetables/20018.table\
+	bufr/tables/0/wmo/8/codetables/2002.table\
+	bufr/tables/0/wmo/8/codetables/20021.table\
+	bufr/tables/0/wmo/8/codetables/20022.table\
+	bufr/tables/0/wmo/8/codetables/20023.table\
+	bufr/tables/0/wmo/8/codetables/20024.table\
+	bufr/tables/0/wmo/8/codetables/20025.table\
+	bufr/tables/0/wmo/8/codetables/20026.table\
+	bufr/tables/0/wmo/8/codetables/20027.table\
+	bufr/tables/0/wmo/8/codetables/20029.table\
+	bufr/tables/0/wmo/8/codetables/2003.table\
+	bufr/tables/0/wmo/8/codetables/20032.table\
+	bufr/tables/0/wmo/8/codetables/20033.table\
+	bufr/tables/0/wmo/8/codetables/20034.table\
+	bufr/tables/0/wmo/8/codetables/20035.table\
+	bufr/tables/0/wmo/8/codetables/20036.table\
+	bufr/tables/0/wmo/8/codetables/20037.table\
+	bufr/tables/0/wmo/8/codetables/2004.table\
+	bufr/tables/0/wmo/8/codetables/20040.table\
+	bufr/tables/0/wmo/8/codetables/20041.table\
+	bufr/tables/0/wmo/8/codetables/20042.table\
+	bufr/tables/0/wmo/8/codetables/20045.table\
+	bufr/tables/0/wmo/8/codetables/20050.table\
+	bufr/tables/0/wmo/8/codetables/20055.table\
+	bufr/tables/0/wmo/8/codetables/20056.table\
+	bufr/tables/0/wmo/8/codetables/20062.table\
+	bufr/tables/0/wmo/8/codetables/20063.table\
+	bufr/tables/0/wmo/8/codetables/20071.table\
+	bufr/tables/0/wmo/8/codetables/20086.table\
+	bufr/tables/0/wmo/8/codetables/20090.table\
+	bufr/tables/0/wmo/8/codetables/20101.table\
+	bufr/tables/0/wmo/8/codetables/20102.table\
+	bufr/tables/0/wmo/8/codetables/2011.table\
+	bufr/tables/0/wmo/8/codetables/2012.table\
+	bufr/tables/0/wmo/8/codetables/2013.table\
+	bufr/tables/0/wmo/8/codetables/2014.table\
+	bufr/tables/0/wmo/8/codetables/2015.table\
+	bufr/tables/0/wmo/8/codetables/2016.table\
+	bufr/tables/0/wmo/8/codetables/2019.table\
+	bufr/tables/0/wmo/8/codetables/2020.table\
+	bufr/tables/0/wmo/8/codetables/2021.table\
+	bufr/tables/0/wmo/8/codetables/2022.table\
+	bufr/tables/0/wmo/8/codetables/2023.table\
+	bufr/tables/0/wmo/8/codetables/2024.table\
+	bufr/tables/0/wmo/8/codetables/2025.table\
+	bufr/tables/0/wmo/8/codetables/2030.table\
+	bufr/tables/0/wmo/8/codetables/2031.table\
+	bufr/tables/0/wmo/8/codetables/2032.table\
+	bufr/tables/0/wmo/8/codetables/2033.table\
+	bufr/tables/0/wmo/8/codetables/2034.table\
+	bufr/tables/0/wmo/8/codetables/2036.table\
+	bufr/tables/0/wmo/8/codetables/2037.table\
+	bufr/tables/0/wmo/8/codetables/2038.table\
+	bufr/tables/0/wmo/8/codetables/2039.table\
+	bufr/tables/0/wmo/8/codetables/2040.table\
+	bufr/tables/0/wmo/8/codetables/2041.table\
+	bufr/tables/0/wmo/8/codetables/2044.table\
+	bufr/tables/0/wmo/8/codetables/2045.table\
+	bufr/tables/0/wmo/8/codetables/2046.table\
+	bufr/tables/0/wmo/8/codetables/2048.table\
+	bufr/tables/0/wmo/8/codetables/2049.table\
+	bufr/tables/0/wmo/8/codetables/2050.table\
+	bufr/tables/0/wmo/8/codetables/2051.table\
+	bufr/tables/0/wmo/8/codetables/2052.table\
+	bufr/tables/0/wmo/8/codetables/2053.table\
+	bufr/tables/0/wmo/8/codetables/2054.table\
+	bufr/tables/0/wmo/8/codetables/2055.table\
+	bufr/tables/0/wmo/8/codetables/2056.table\
+	bufr/tables/0/wmo/8/codetables/2057.table\
+	bufr/tables/0/wmo/8/codetables/2058.table\
+	bufr/tables/0/wmo/8/codetables/2059.table\
+	bufr/tables/0/wmo/8/codetables/2060.table\
+	bufr/tables/0/wmo/8/codetables/2061.table\
+	bufr/tables/0/wmo/8/codetables/2062.table\
+	bufr/tables/0/wmo/8/codetables/2064.table\
+	bufr/tables/0/wmo/8/codetables/2066.table\
+	bufr/tables/0/wmo/8/codetables/2070.table\
+	bufr/tables/0/wmo/8/codetables/2080.table\
+	bufr/tables/0/wmo/8/codetables/2081.table\
+	bufr/tables/0/wmo/8/codetables/2083.table\
+	bufr/tables/0/wmo/8/codetables/2084.table\
+	bufr/tables/0/wmo/8/codetables/2095.table\
+	bufr/tables/0/wmo/8/codetables/2096.table\
+	bufr/tables/0/wmo/8/codetables/2097.table\
+	bufr/tables/0/wmo/8/codetables/2098.table\
+	bufr/tables/0/wmo/8/codetables/2101.table\
+	bufr/tables/0/wmo/8/codetables/2103.table\
+	bufr/tables/0/wmo/8/codetables/2104.table\
+	bufr/tables/0/wmo/8/codetables/21066.table\
+	bufr/tables/0/wmo/8/codetables/21067.table\
+	bufr/tables/0/wmo/8/codetables/21068.table\
+	bufr/tables/0/wmo/8/codetables/21069.table\
+	bufr/tables/0/wmo/8/codetables/21070.table\
+	bufr/tables/0/wmo/8/codetables/21072.table\
+	bufr/tables/0/wmo/8/codetables/21073.table\
+	bufr/tables/0/wmo/8/codetables/21076.table\
+	bufr/tables/0/wmo/8/codetables/21109.table\
+	bufr/tables/0/wmo/8/codetables/21115.table\
+	bufr/tables/0/wmo/8/codetables/21116.table\
+	bufr/tables/0/wmo/8/codetables/21119.table\
+	bufr/tables/0/wmo/8/codetables/21144.table\
+	bufr/tables/0/wmo/8/codetables/2115.table\
+	bufr/tables/0/wmo/8/codetables/21150.table\
+	bufr/tables/0/wmo/8/codetables/21155.table\
+	bufr/tables/0/wmo/8/codetables/21158.table\
+	bufr/tables/0/wmo/8/codetables/21159.table\
+	bufr/tables/0/wmo/8/codetables/21169.table\
+	bufr/tables/0/wmo/8/codetables/2119.table\
+	bufr/tables/0/wmo/8/codetables/2131.table\
+	bufr/tables/0/wmo/8/codetables/2143.table\
+	bufr/tables/0/wmo/8/codetables/2144.table\
+	bufr/tables/0/wmo/8/codetables/2145.table\
+	bufr/tables/0/wmo/8/codetables/2146.table\
+	bufr/tables/0/wmo/8/codetables/2148.table\
+	bufr/tables/0/wmo/8/codetables/2149.table\
+	bufr/tables/0/wmo/8/codetables/2150.table\
+	bufr/tables/0/wmo/8/codetables/2151.table\
+	bufr/tables/0/wmo/8/codetables/2152.table\
+	bufr/tables/0/wmo/8/codetables/2158.table\
+	bufr/tables/0/wmo/8/codetables/2159.table\
+	bufr/tables/0/wmo/8/codetables/2163.table\
+	bufr/tables/0/wmo/8/codetables/2164.table\
+	bufr/tables/0/wmo/8/codetables/2166.table\
+	bufr/tables/0/wmo/8/codetables/2167.table\
+	bufr/tables/0/wmo/8/codetables/2169.table\
+	bufr/tables/0/wmo/8/codetables/2172.table\
+	bufr/tables/0/wmo/8/codetables/2175.table\
+	bufr/tables/0/wmo/8/codetables/2176.table\
+	bufr/tables/0/wmo/8/codetables/2177.table\
+	bufr/tables/0/wmo/8/codetables/2178.table\
+	bufr/tables/0/wmo/8/codetables/2179.table\
+	bufr/tables/0/wmo/8/codetables/2180.table\
+	bufr/tables/0/wmo/8/codetables/2181.table\
+	bufr/tables/0/wmo/8/codetables/2182.table\
+	bufr/tables/0/wmo/8/codetables/2183.table\
+	bufr/tables/0/wmo/8/codetables/2184.table\
+	bufr/tables/0/wmo/8/codetables/2185.table\
+	bufr/tables/0/wmo/8/codetables/2186.table\
+	bufr/tables/0/wmo/8/codetables/2187.table\
+	bufr/tables/0/wmo/8/codetables/2188.table\
+	bufr/tables/0/wmo/8/codetables/2189.table\
+	bufr/tables/0/wmo/8/codetables/22056.table\
+	bufr/tables/0/wmo/8/codetables/22060.table\
+	bufr/tables/0/wmo/8/codetables/22061.table\
+	bufr/tables/0/wmo/8/codetables/22067.table\
+	bufr/tables/0/wmo/8/codetables/22068.table\
+	bufr/tables/0/wmo/8/codetables/22120.table\
+	bufr/tables/0/wmo/8/codetables/22121.table\
+	bufr/tables/0/wmo/8/codetables/22122.table\
+	bufr/tables/0/wmo/8/codetables/22123.table\
+	bufr/tables/0/wmo/8/codetables/23001.table\
+	bufr/tables/0/wmo/8/codetables/23002.table\
+	bufr/tables/0/wmo/8/codetables/23003.table\
+	bufr/tables/0/wmo/8/codetables/23004.table\
+	bufr/tables/0/wmo/8/codetables/23005.table\
+	bufr/tables/0/wmo/8/codetables/23006.table\
+	bufr/tables/0/wmo/8/codetables/23007.table\
+	bufr/tables/0/wmo/8/codetables/23008.table\
+	bufr/tables/0/wmo/8/codetables/23009.table\
+	bufr/tables/0/wmo/8/codetables/23016.table\
+	bufr/tables/0/wmo/8/codetables/23018.table\
+	bufr/tables/0/wmo/8/codetables/23031.table\
+	bufr/tables/0/wmo/8/codetables/23032.table\
+	bufr/tables/0/wmo/8/codetables/24003.table\
+	bufr/tables/0/wmo/8/codetables/25004.table\
+	bufr/tables/0/wmo/8/codetables/25005.table\
+	bufr/tables/0/wmo/8/codetables/25006.table\
+	bufr/tables/0/wmo/8/codetables/25009.table\
+	bufr/tables/0/wmo/8/codetables/25010.table\
+	bufr/tables/0/wmo/8/codetables/25011.table\
+	bufr/tables/0/wmo/8/codetables/25012.table\
+	bufr/tables/0/wmo/8/codetables/25013.table\
+	bufr/tables/0/wmo/8/codetables/25015.table\
+	bufr/tables/0/wmo/8/codetables/25017.table\
+	bufr/tables/0/wmo/8/codetables/25020.table\
+	bufr/tables/0/wmo/8/codetables/25021.table\
+	bufr/tables/0/wmo/8/codetables/25030.table\
+	bufr/tables/0/wmo/8/codetables/25032.table\
+	bufr/tables/0/wmo/8/codetables/25033.table\
+	bufr/tables/0/wmo/8/codetables/25034.table\
+	bufr/tables/0/wmo/8/codetables/25036.table\
+	bufr/tables/0/wmo/8/codetables/25040.table\
+	bufr/tables/0/wmo/8/codetables/25041.table\
+	bufr/tables/0/wmo/8/codetables/25042.table\
+	bufr/tables/0/wmo/8/codetables/25045.table\
+	bufr/tables/0/wmo/8/codetables/25046.table\
+	bufr/tables/0/wmo/8/codetables/25047.table\
+	bufr/tables/0/wmo/8/codetables/25048.table\
+	bufr/tables/0/wmo/8/codetables/25049.table\
+	bufr/tables/0/wmo/8/codetables/25051.table\
+	bufr/tables/0/wmo/8/codetables/25053.table\
+	bufr/tables/0/wmo/8/codetables/25069.table\
+	bufr/tables/0/wmo/8/codetables/25086.table\
+	bufr/tables/0/wmo/8/codetables/25093.table\
+	bufr/tables/0/wmo/8/codetables/25095.table\
+	bufr/tables/0/wmo/8/codetables/25096.table\
+	bufr/tables/0/wmo/8/codetables/25097.table\
+	bufr/tables/0/wmo/8/codetables/25098.table\
+	bufr/tables/0/wmo/8/codetables/25099.table\
+	bufr/tables/0/wmo/8/codetables/25110.table\
+	bufr/tables/0/wmo/8/codetables/25120.table\
+	bufr/tables/0/wmo/8/codetables/25122.table\
+	bufr/tables/0/wmo/8/codetables/25123.table\
+	bufr/tables/0/wmo/8/codetables/25124.table\
+	bufr/tables/0/wmo/8/codetables/26010.table\
+	bufr/tables/0/wmo/8/codetables/29001.table\
+	bufr/tables/0/wmo/8/codetables/29002.table\
+	bufr/tables/0/wmo/8/codetables/30031.table\
+	bufr/tables/0/wmo/8/codetables/30032.table\
+	bufr/tables/0/wmo/8/codetables/31021.table\
+	bufr/tables/0/wmo/8/codetables/31031.table\
+	bufr/tables/0/wmo/8/codetables/33002.table\
+	bufr/tables/0/wmo/8/codetables/33003.table\
+	bufr/tables/0/wmo/8/codetables/33005.table\
+	bufr/tables/0/wmo/8/codetables/33006.table\
+	bufr/tables/0/wmo/8/codetables/33015.table\
+	bufr/tables/0/wmo/8/codetables/33020.table\
+	bufr/tables/0/wmo/8/codetables/33021.table\
+	bufr/tables/0/wmo/8/codetables/33022.table\
+	bufr/tables/0/wmo/8/codetables/33023.table\
+	bufr/tables/0/wmo/8/codetables/33024.table\
+	bufr/tables/0/wmo/8/codetables/33025.table\
+	bufr/tables/0/wmo/8/codetables/33026.table\
+	bufr/tables/0/wmo/8/codetables/33027.table\
+	bufr/tables/0/wmo/8/codetables/33028.table\
+	bufr/tables/0/wmo/8/codetables/33030.table\
+	bufr/tables/0/wmo/8/codetables/33031.table\
+	bufr/tables/0/wmo/8/codetables/33032.table\
+	bufr/tables/0/wmo/8/codetables/33033.table\
+	bufr/tables/0/wmo/8/codetables/33035.table\
+	bufr/tables/0/wmo/8/codetables/33037.table\
+	bufr/tables/0/wmo/8/codetables/33038.table\
+	bufr/tables/0/wmo/8/codetables/33039.table\
+	bufr/tables/0/wmo/8/codetables/33041.table\
+	bufr/tables/0/wmo/8/codetables/33042.table\
+	bufr/tables/0/wmo/8/codetables/33043.table\
+	bufr/tables/0/wmo/8/codetables/33044.table\
+	bufr/tables/0/wmo/8/codetables/33047.table\
+	bufr/tables/0/wmo/8/codetables/33048.table\
+	bufr/tables/0/wmo/8/codetables/33049.table\
+	bufr/tables/0/wmo/8/codetables/33050.table\
+	bufr/tables/0/wmo/8/codetables/33052.table\
+	bufr/tables/0/wmo/8/codetables/33053.table\
+	bufr/tables/0/wmo/8/codetables/33060.table\
+	bufr/tables/0/wmo/8/codetables/35000.table\
+	bufr/tables/0/wmo/8/codetables/35001.table\
+	bufr/tables/0/wmo/8/codetables/35030.table\
+	bufr/tables/0/wmo/8/codetables/35031.table\
+	bufr/tables/0/wmo/8/codetables/35032.table\
+	bufr/tables/0/wmo/8/codetables/35033.table\
+	bufr/tables/0/wmo/8/codetables/35034.table\
+	bufr/tables/0/wmo/8/codetables/40011.table\
+	bufr/tables/0/wmo/8/codetables/40012.table\
+	bufr/tables/0/wmo/8/codetables/40013.table\
+	bufr/tables/0/wmo/8/codetables/4059.table\
+	bufr/tables/0/wmo/8/codetables/8001.table\
+	bufr/tables/0/wmo/8/codetables/8002.table\
+	bufr/tables/0/wmo/8/codetables/8003.table\
+	bufr/tables/0/wmo/8/codetables/8004.table\
+	bufr/tables/0/wmo/8/codetables/8005.table\
+	bufr/tables/0/wmo/8/codetables/8006.table\
+	bufr/tables/0/wmo/8/codetables/8007.table\
+	bufr/tables/0/wmo/8/codetables/8008.table\
+	bufr/tables/0/wmo/8/codetables/8009.table\
+	bufr/tables/0/wmo/8/codetables/8010.table\
+	bufr/tables/0/wmo/8/codetables/8011.table\
+	bufr/tables/0/wmo/8/codetables/8012.table\
+	bufr/tables/0/wmo/8/codetables/8013.table\
+	bufr/tables/0/wmo/8/codetables/8014.table\
+	bufr/tables/0/wmo/8/codetables/8016.table\
+	bufr/tables/0/wmo/8/codetables/8017.table\
+	bufr/tables/0/wmo/8/codetables/8018.table\
+	bufr/tables/0/wmo/8/codetables/8021.table\
+	bufr/tables/0/wmo/8/codetables/8023.table\
+	bufr/tables/0/wmo/8/codetables/8024.table\
+	bufr/tables/0/wmo/8/codetables/8025.table\
+	bufr/tables/0/wmo/8/codetables/8026.table\
+	bufr/tables/0/wmo/8/codetables/8029.table\
+	bufr/tables/0/wmo/8/codetables/8033.table\
+	bufr/tables/0/wmo/8/codetables/8035.table\
+	bufr/tables/0/wmo/8/codetables/8036.table\
+	bufr/tables/0/wmo/8/codetables/8039.table\
+	bufr/tables/0/wmo/8/codetables/8040.table\
+	bufr/tables/0/wmo/8/codetables/8041.table\
+	bufr/tables/0/wmo/8/codetables/8042.table\
+	bufr/tables/0/wmo/8/codetables/8043.table\
+	bufr/tables/0/wmo/8/codetables/8050.table\
+	bufr/tables/0/wmo/8/codetables/8051.table\
+	bufr/tables/0/wmo/8/codetables/8052.table\
+	bufr/tables/0/wmo/8/codetables/8053.table\
+	bufr/tables/0/wmo/8/codetables/8054.table\
+	bufr/tables/0/wmo/8/codetables/8060.table\
+	bufr/tables/0/wmo/8/codetables/8065.table\
+	bufr/tables/0/wmo/8/codetables/8066.table\
+	bufr/tables/0/wmo/8/codetables/8070.table\
+	bufr/tables/0/wmo/8/codetables/8072.table\
+	bufr/tables/0/wmo/8/codetables/8074.table\
+	bufr/tables/0/wmo/8/codetables/8075.table\
+	bufr/tables/0/wmo/8/codetables/8076.table\
+	bufr/tables/0/wmo/8/codetables/8077.table\
+	bufr/tables/0/wmo/8/codetables/8079.table\
+	bufr/tables/0/wmo/8/codetables/8080.table\
+	bufr/tables/0/wmo/8/codetables/8081.table\
+	bufr/tables/0/wmo/8/codetables/8082.table\
+	bufr/tables/0/wmo/8/codetables/8083.table\
+	bufr/tables/0/wmo/8/codetables/8085.table
+
+definitionsbufr_tables_0_wmo_9dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/9
+dist_definitionsbufr_tables_0_wmo_9_DATA = \
+	bufr/tables/0/wmo/9/element.table\
+	bufr/tables/0/wmo/9/sequence.def
+
+definitionsbufr_tables_0_wmo_9_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/9/codetables
+dist_definitionsbufr_tables_0_wmo_9_codetables_DATA = \
+	bufr/tables/0/wmo/9/codetables/1003.table\
+	bufr/tables/0/wmo/9/codetables/10063.table\
+	bufr/tables/0/wmo/9/codetables/10064.table\
+	bufr/tables/0/wmo/9/codetables/1007.table\
+	bufr/tables/0/wmo/9/codetables/1031.table\
+	bufr/tables/0/wmo/9/codetables/1032.table\
+	bufr/tables/0/wmo/9/codetables/1033.table\
+	bufr/tables/0/wmo/9/codetables/1035.table\
+	bufr/tables/0/wmo/9/codetables/1090.table\
+	bufr/tables/0/wmo/9/codetables/1092.table\
+	bufr/tables/0/wmo/9/codetables/11031.table\
+	bufr/tables/0/wmo/9/codetables/11037.table\
+	bufr/tables/0/wmo/9/codetables/11038.table\
+	bufr/tables/0/wmo/9/codetables/11039.table\
+	bufr/tables/0/wmo/9/codetables/13038.table\
+	bufr/tables/0/wmo/9/codetables/13039.table\
+	bufr/tables/0/wmo/9/codetables/13040.table\
+	bufr/tables/0/wmo/9/codetables/13041.table\
+	bufr/tables/0/wmo/9/codetables/13051.table\
+	bufr/tables/0/wmo/9/codetables/13056.table\
+	bufr/tables/0/wmo/9/codetables/13057.table\
+	bufr/tables/0/wmo/9/codetables/15025.table\
+	bufr/tables/0/wmo/9/codetables/19001.table\
+	bufr/tables/0/wmo/9/codetables/19008.table\
+	bufr/tables/0/wmo/9/codetables/19010.table\
+	bufr/tables/0/wmo/9/codetables/20003.table\
+	bufr/tables/0/wmo/9/codetables/20004.table\
+	bufr/tables/0/wmo/9/codetables/20005.table\
+	bufr/tables/0/wmo/9/codetables/20008.table\
+	bufr/tables/0/wmo/9/codetables/20009.table\
+	bufr/tables/0/wmo/9/codetables/2001.table\
+	bufr/tables/0/wmo/9/codetables/20011.table\
+	bufr/tables/0/wmo/9/codetables/20012.table\
+	bufr/tables/0/wmo/9/codetables/20017.table\
+	bufr/tables/0/wmo/9/codetables/20018.table\
+	bufr/tables/0/wmo/9/codetables/2002.table\
+	bufr/tables/0/wmo/9/codetables/20021.table\
+	bufr/tables/0/wmo/9/codetables/20022.table\
+	bufr/tables/0/wmo/9/codetables/20023.table\
+	bufr/tables/0/wmo/9/codetables/20024.table\
+	bufr/tables/0/wmo/9/codetables/20025.table\
+	bufr/tables/0/wmo/9/codetables/20026.table\
+	bufr/tables/0/wmo/9/codetables/20027.table\
+	bufr/tables/0/wmo/9/codetables/20029.table\
+	bufr/tables/0/wmo/9/codetables/2003.table\
+	bufr/tables/0/wmo/9/codetables/20032.table\
+	bufr/tables/0/wmo/9/codetables/20033.table\
+	bufr/tables/0/wmo/9/codetables/20034.table\
+	bufr/tables/0/wmo/9/codetables/20035.table\
+	bufr/tables/0/wmo/9/codetables/20036.table\
+	bufr/tables/0/wmo/9/codetables/20037.table\
+	bufr/tables/0/wmo/9/codetables/2004.table\
+	bufr/tables/0/wmo/9/codetables/20040.table\
+	bufr/tables/0/wmo/9/codetables/20041.table\
+	bufr/tables/0/wmo/9/codetables/20042.table\
+	bufr/tables/0/wmo/9/codetables/20045.table\
+	bufr/tables/0/wmo/9/codetables/20050.table\
+	bufr/tables/0/wmo/9/codetables/20055.table\
+	bufr/tables/0/wmo/9/codetables/20056.table\
+	bufr/tables/0/wmo/9/codetables/20062.table\
+	bufr/tables/0/wmo/9/codetables/20063.table\
+	bufr/tables/0/wmo/9/codetables/20071.table\
+	bufr/tables/0/wmo/9/codetables/20086.table\
+	bufr/tables/0/wmo/9/codetables/20090.table\
+	bufr/tables/0/wmo/9/codetables/20101.table\
+	bufr/tables/0/wmo/9/codetables/20102.table\
+	bufr/tables/0/wmo/9/codetables/2011.table\
+	bufr/tables/0/wmo/9/codetables/2012.table\
+	bufr/tables/0/wmo/9/codetables/2013.table\
+	bufr/tables/0/wmo/9/codetables/2014.table\
+	bufr/tables/0/wmo/9/codetables/2015.table\
+	bufr/tables/0/wmo/9/codetables/2016.table\
+	bufr/tables/0/wmo/9/codetables/2019.table\
+	bufr/tables/0/wmo/9/codetables/2020.table\
+	bufr/tables/0/wmo/9/codetables/2021.table\
+	bufr/tables/0/wmo/9/codetables/2022.table\
+	bufr/tables/0/wmo/9/codetables/2023.table\
+	bufr/tables/0/wmo/9/codetables/2024.table\
+	bufr/tables/0/wmo/9/codetables/2025.table\
+	bufr/tables/0/wmo/9/codetables/2030.table\
+	bufr/tables/0/wmo/9/codetables/2031.table\
+	bufr/tables/0/wmo/9/codetables/2032.table\
+	bufr/tables/0/wmo/9/codetables/2033.table\
+	bufr/tables/0/wmo/9/codetables/2034.table\
+	bufr/tables/0/wmo/9/codetables/2036.table\
+	bufr/tables/0/wmo/9/codetables/2037.table\
+	bufr/tables/0/wmo/9/codetables/2038.table\
+	bufr/tables/0/wmo/9/codetables/2039.table\
+	bufr/tables/0/wmo/9/codetables/2040.table\
+	bufr/tables/0/wmo/9/codetables/2041.table\
+	bufr/tables/0/wmo/9/codetables/2044.table\
+	bufr/tables/0/wmo/9/codetables/2045.table\
+	bufr/tables/0/wmo/9/codetables/2046.table\
+	bufr/tables/0/wmo/9/codetables/2048.table\
+	bufr/tables/0/wmo/9/codetables/2049.table\
+	bufr/tables/0/wmo/9/codetables/2050.table\
+	bufr/tables/0/wmo/9/codetables/2051.table\
+	bufr/tables/0/wmo/9/codetables/2052.table\
+	bufr/tables/0/wmo/9/codetables/2053.table\
+	bufr/tables/0/wmo/9/codetables/2054.table\
+	bufr/tables/0/wmo/9/codetables/2055.table\
+	bufr/tables/0/wmo/9/codetables/2056.table\
+	bufr/tables/0/wmo/9/codetables/2057.table\
+	bufr/tables/0/wmo/9/codetables/2058.table\
+	bufr/tables/0/wmo/9/codetables/2059.table\
+	bufr/tables/0/wmo/9/codetables/2060.table\
+	bufr/tables/0/wmo/9/codetables/2061.table\
+	bufr/tables/0/wmo/9/codetables/2062.table\
+	bufr/tables/0/wmo/9/codetables/2064.table\
+	bufr/tables/0/wmo/9/codetables/2066.table\
+	bufr/tables/0/wmo/9/codetables/2070.table\
+	bufr/tables/0/wmo/9/codetables/2080.table\
+	bufr/tables/0/wmo/9/codetables/2081.table\
+	bufr/tables/0/wmo/9/codetables/2083.table\
+	bufr/tables/0/wmo/9/codetables/2084.table\
+	bufr/tables/0/wmo/9/codetables/2095.table\
+	bufr/tables/0/wmo/9/codetables/2096.table\
+	bufr/tables/0/wmo/9/codetables/2097.table\
+	bufr/tables/0/wmo/9/codetables/2098.table\
+	bufr/tables/0/wmo/9/codetables/2101.table\
+	bufr/tables/0/wmo/9/codetables/2103.table\
+	bufr/tables/0/wmo/9/codetables/2104.table\
+	bufr/tables/0/wmo/9/codetables/21066.table\
+	bufr/tables/0/wmo/9/codetables/21067.table\
+	bufr/tables/0/wmo/9/codetables/21068.table\
+	bufr/tables/0/wmo/9/codetables/21069.table\
+	bufr/tables/0/wmo/9/codetables/21070.table\
+	bufr/tables/0/wmo/9/codetables/21072.table\
+	bufr/tables/0/wmo/9/codetables/21073.table\
+	bufr/tables/0/wmo/9/codetables/21076.table\
+	bufr/tables/0/wmo/9/codetables/21109.table\
+	bufr/tables/0/wmo/9/codetables/21115.table\
+	bufr/tables/0/wmo/9/codetables/21116.table\
+	bufr/tables/0/wmo/9/codetables/21119.table\
+	bufr/tables/0/wmo/9/codetables/21144.table\
+	bufr/tables/0/wmo/9/codetables/2115.table\
+	bufr/tables/0/wmo/9/codetables/21150.table\
+	bufr/tables/0/wmo/9/codetables/21155.table\
+	bufr/tables/0/wmo/9/codetables/21158.table\
+	bufr/tables/0/wmo/9/codetables/21159.table\
+	bufr/tables/0/wmo/9/codetables/21169.table\
+	bufr/tables/0/wmo/9/codetables/2119.table\
+	bufr/tables/0/wmo/9/codetables/2131.table\
+	bufr/tables/0/wmo/9/codetables/2143.table\
+	bufr/tables/0/wmo/9/codetables/2144.table\
+	bufr/tables/0/wmo/9/codetables/2145.table\
+	bufr/tables/0/wmo/9/codetables/2146.table\
+	bufr/tables/0/wmo/9/codetables/2148.table\
+	bufr/tables/0/wmo/9/codetables/2149.table\
+	bufr/tables/0/wmo/9/codetables/2150.table\
+	bufr/tables/0/wmo/9/codetables/2151.table\
+	bufr/tables/0/wmo/9/codetables/2152.table\
+	bufr/tables/0/wmo/9/codetables/2158.table\
+	bufr/tables/0/wmo/9/codetables/2159.table\
+	bufr/tables/0/wmo/9/codetables/2163.table\
+	bufr/tables/0/wmo/9/codetables/2164.table\
+	bufr/tables/0/wmo/9/codetables/2166.table\
+	bufr/tables/0/wmo/9/codetables/2167.table\
+	bufr/tables/0/wmo/9/codetables/2169.table\
+	bufr/tables/0/wmo/9/codetables/2172.table\
+	bufr/tables/0/wmo/9/codetables/2175.table\
+	bufr/tables/0/wmo/9/codetables/2176.table\
+	bufr/tables/0/wmo/9/codetables/2177.table\
+	bufr/tables/0/wmo/9/codetables/2178.table\
+	bufr/tables/0/wmo/9/codetables/2179.table\
+	bufr/tables/0/wmo/9/codetables/2180.table\
+	bufr/tables/0/wmo/9/codetables/2181.table\
+	bufr/tables/0/wmo/9/codetables/2182.table\
+	bufr/tables/0/wmo/9/codetables/2183.table\
+	bufr/tables/0/wmo/9/codetables/2184.table\
+	bufr/tables/0/wmo/9/codetables/2185.table\
+	bufr/tables/0/wmo/9/codetables/2186.table\
+	bufr/tables/0/wmo/9/codetables/2187.table\
+	bufr/tables/0/wmo/9/codetables/2188.table\
+	bufr/tables/0/wmo/9/codetables/2189.table\
+	bufr/tables/0/wmo/9/codetables/22056.table\
+	bufr/tables/0/wmo/9/codetables/22060.table\
+	bufr/tables/0/wmo/9/codetables/22061.table\
+	bufr/tables/0/wmo/9/codetables/22067.table\
+	bufr/tables/0/wmo/9/codetables/22068.table\
+	bufr/tables/0/wmo/9/codetables/22120.table\
+	bufr/tables/0/wmo/9/codetables/22121.table\
+	bufr/tables/0/wmo/9/codetables/22122.table\
+	bufr/tables/0/wmo/9/codetables/22123.table\
+	bufr/tables/0/wmo/9/codetables/23001.table\
+	bufr/tables/0/wmo/9/codetables/23002.table\
+	bufr/tables/0/wmo/9/codetables/23003.table\
+	bufr/tables/0/wmo/9/codetables/23004.table\
+	bufr/tables/0/wmo/9/codetables/23005.table\
+	bufr/tables/0/wmo/9/codetables/23006.table\
+	bufr/tables/0/wmo/9/codetables/23007.table\
+	bufr/tables/0/wmo/9/codetables/23008.table\
+	bufr/tables/0/wmo/9/codetables/23009.table\
+	bufr/tables/0/wmo/9/codetables/23016.table\
+	bufr/tables/0/wmo/9/codetables/23018.table\
+	bufr/tables/0/wmo/9/codetables/23031.table\
+	bufr/tables/0/wmo/9/codetables/23032.table\
+	bufr/tables/0/wmo/9/codetables/24003.table\
+	bufr/tables/0/wmo/9/codetables/25004.table\
+	bufr/tables/0/wmo/9/codetables/25005.table\
+	bufr/tables/0/wmo/9/codetables/25006.table\
+	bufr/tables/0/wmo/9/codetables/25009.table\
+	bufr/tables/0/wmo/9/codetables/25010.table\
+	bufr/tables/0/wmo/9/codetables/25011.table\
+	bufr/tables/0/wmo/9/codetables/25012.table\
+	bufr/tables/0/wmo/9/codetables/25013.table\
+	bufr/tables/0/wmo/9/codetables/25015.table\
+	bufr/tables/0/wmo/9/codetables/25017.table\
+	bufr/tables/0/wmo/9/codetables/25020.table\
+	bufr/tables/0/wmo/9/codetables/25021.table\
+	bufr/tables/0/wmo/9/codetables/25030.table\
+	bufr/tables/0/wmo/9/codetables/25032.table\
+	bufr/tables/0/wmo/9/codetables/25033.table\
+	bufr/tables/0/wmo/9/codetables/25034.table\
+	bufr/tables/0/wmo/9/codetables/25036.table\
+	bufr/tables/0/wmo/9/codetables/25040.table\
+	bufr/tables/0/wmo/9/codetables/25041.table\
+	bufr/tables/0/wmo/9/codetables/25042.table\
+	bufr/tables/0/wmo/9/codetables/25045.table\
+	bufr/tables/0/wmo/9/codetables/25046.table\
+	bufr/tables/0/wmo/9/codetables/25047.table\
+	bufr/tables/0/wmo/9/codetables/25048.table\
+	bufr/tables/0/wmo/9/codetables/25049.table\
+	bufr/tables/0/wmo/9/codetables/25051.table\
+	bufr/tables/0/wmo/9/codetables/25053.table\
+	bufr/tables/0/wmo/9/codetables/25069.table\
+	bufr/tables/0/wmo/9/codetables/25086.table\
+	bufr/tables/0/wmo/9/codetables/25093.table\
+	bufr/tables/0/wmo/9/codetables/25095.table\
+	bufr/tables/0/wmo/9/codetables/25096.table\
+	bufr/tables/0/wmo/9/codetables/25097.table\
+	bufr/tables/0/wmo/9/codetables/25098.table\
+	bufr/tables/0/wmo/9/codetables/25099.table\
+	bufr/tables/0/wmo/9/codetables/25110.table\
+	bufr/tables/0/wmo/9/codetables/25120.table\
+	bufr/tables/0/wmo/9/codetables/25122.table\
+	bufr/tables/0/wmo/9/codetables/25123.table\
+	bufr/tables/0/wmo/9/codetables/25124.table\
+	bufr/tables/0/wmo/9/codetables/26010.table\
+	bufr/tables/0/wmo/9/codetables/29001.table\
+	bufr/tables/0/wmo/9/codetables/29002.table\
+	bufr/tables/0/wmo/9/codetables/30031.table\
+	bufr/tables/0/wmo/9/codetables/30032.table\
+	bufr/tables/0/wmo/9/codetables/31021.table\
+	bufr/tables/0/wmo/9/codetables/31031.table\
+	bufr/tables/0/wmo/9/codetables/33002.table\
+	bufr/tables/0/wmo/9/codetables/33003.table\
+	bufr/tables/0/wmo/9/codetables/33005.table\
+	bufr/tables/0/wmo/9/codetables/33006.table\
+	bufr/tables/0/wmo/9/codetables/33015.table\
+	bufr/tables/0/wmo/9/codetables/33020.table\
+	bufr/tables/0/wmo/9/codetables/33021.table\
+	bufr/tables/0/wmo/9/codetables/33022.table\
+	bufr/tables/0/wmo/9/codetables/33023.table\
+	bufr/tables/0/wmo/9/codetables/33024.table\
+	bufr/tables/0/wmo/9/codetables/33025.table\
+	bufr/tables/0/wmo/9/codetables/33026.table\
+	bufr/tables/0/wmo/9/codetables/33027.table\
+	bufr/tables/0/wmo/9/codetables/33028.table\
+	bufr/tables/0/wmo/9/codetables/33030.table\
+	bufr/tables/0/wmo/9/codetables/33031.table\
+	bufr/tables/0/wmo/9/codetables/33032.table\
+	bufr/tables/0/wmo/9/codetables/33033.table\
+	bufr/tables/0/wmo/9/codetables/33035.table\
+	bufr/tables/0/wmo/9/codetables/33037.table\
+	bufr/tables/0/wmo/9/codetables/33038.table\
+	bufr/tables/0/wmo/9/codetables/33039.table\
+	bufr/tables/0/wmo/9/codetables/33041.table\
+	bufr/tables/0/wmo/9/codetables/33042.table\
+	bufr/tables/0/wmo/9/codetables/33043.table\
+	bufr/tables/0/wmo/9/codetables/33044.table\
+	bufr/tables/0/wmo/9/codetables/33047.table\
+	bufr/tables/0/wmo/9/codetables/33048.table\
+	bufr/tables/0/wmo/9/codetables/33049.table\
+	bufr/tables/0/wmo/9/codetables/33050.table\
+	bufr/tables/0/wmo/9/codetables/33052.table\
+	bufr/tables/0/wmo/9/codetables/33053.table\
+	bufr/tables/0/wmo/9/codetables/33060.table\
+	bufr/tables/0/wmo/9/codetables/35000.table\
+	bufr/tables/0/wmo/9/codetables/35001.table\
+	bufr/tables/0/wmo/9/codetables/35030.table\
+	bufr/tables/0/wmo/9/codetables/35031.table\
+	bufr/tables/0/wmo/9/codetables/35032.table\
+	bufr/tables/0/wmo/9/codetables/35033.table\
+	bufr/tables/0/wmo/9/codetables/35034.table\
+	bufr/tables/0/wmo/9/codetables/40011.table\
+	bufr/tables/0/wmo/9/codetables/40012.table\
+	bufr/tables/0/wmo/9/codetables/40013.table\
+	bufr/tables/0/wmo/9/codetables/4059.table\
+	bufr/tables/0/wmo/9/codetables/8001.table\
+	bufr/tables/0/wmo/9/codetables/8002.table\
+	bufr/tables/0/wmo/9/codetables/8003.table\
+	bufr/tables/0/wmo/9/codetables/8004.table\
+	bufr/tables/0/wmo/9/codetables/8005.table\
+	bufr/tables/0/wmo/9/codetables/8006.table\
+	bufr/tables/0/wmo/9/codetables/8007.table\
+	bufr/tables/0/wmo/9/codetables/8008.table\
+	bufr/tables/0/wmo/9/codetables/8009.table\
+	bufr/tables/0/wmo/9/codetables/8010.table\
+	bufr/tables/0/wmo/9/codetables/8011.table\
+	bufr/tables/0/wmo/9/codetables/8012.table\
+	bufr/tables/0/wmo/9/codetables/8013.table\
+	bufr/tables/0/wmo/9/codetables/8014.table\
+	bufr/tables/0/wmo/9/codetables/8016.table\
+	bufr/tables/0/wmo/9/codetables/8017.table\
+	bufr/tables/0/wmo/9/codetables/8018.table\
+	bufr/tables/0/wmo/9/codetables/8021.table\
+	bufr/tables/0/wmo/9/codetables/8023.table\
+	bufr/tables/0/wmo/9/codetables/8024.table\
+	bufr/tables/0/wmo/9/codetables/8025.table\
+	bufr/tables/0/wmo/9/codetables/8026.table\
+	bufr/tables/0/wmo/9/codetables/8029.table\
+	bufr/tables/0/wmo/9/codetables/8033.table\
+	bufr/tables/0/wmo/9/codetables/8035.table\
+	bufr/tables/0/wmo/9/codetables/8036.table\
+	bufr/tables/0/wmo/9/codetables/8039.table\
+	bufr/tables/0/wmo/9/codetables/8040.table\
+	bufr/tables/0/wmo/9/codetables/8041.table\
+	bufr/tables/0/wmo/9/codetables/8042.table\
+	bufr/tables/0/wmo/9/codetables/8043.table\
+	bufr/tables/0/wmo/9/codetables/8050.table\
+	bufr/tables/0/wmo/9/codetables/8051.table\
+	bufr/tables/0/wmo/9/codetables/8052.table\
+	bufr/tables/0/wmo/9/codetables/8053.table\
+	bufr/tables/0/wmo/9/codetables/8054.table\
+	bufr/tables/0/wmo/9/codetables/8060.table\
+	bufr/tables/0/wmo/9/codetables/8065.table\
+	bufr/tables/0/wmo/9/codetables/8066.table\
+	bufr/tables/0/wmo/9/codetables/8070.table\
+	bufr/tables/0/wmo/9/codetables/8072.table\
+	bufr/tables/0/wmo/9/codetables/8074.table\
+	bufr/tables/0/wmo/9/codetables/8075.table\
+	bufr/tables/0/wmo/9/codetables/8076.table\
+	bufr/tables/0/wmo/9/codetables/8077.table\
+	bufr/tables/0/wmo/9/codetables/8079.table\
+	bufr/tables/0/wmo/9/codetables/8080.table\
+	bufr/tables/0/wmo/9/codetables/8081.table\
+	bufr/tables/0/wmo/9/codetables/8082.table\
+	bufr/tables/0/wmo/9/codetables/8083.table\
+	bufr/tables/0/wmo/9/codetables/8085.table
+
 definitionsbufr_tables_3_local_1_98_0dir = @ECCODES_DEFINITION_PATH@/bufr/tables/3/local/1/98/0
 dist_definitionsbufr_tables_3_local_1_98_0_DATA = \
 	bufr/tables/3/local/1/98/0/element.table\
@@ -4886,6 +7873,14 @@ dist_definitionsbufr_tables_3_wmo_6_DATA = \
 	bufr/tables/3/wmo/6/element.table\
 	bufr/tables/3/wmo/6/sequence.def
 
+definitionsbufr_templatesdir = @ECCODES_DEFINITION_PATH@/bufr/templates
+dist_definitionsbufr_templates_DATA = \
+	bufr/templates/BufrTemplate.def
+
+definitionsbufr_templates_localdir = @ECCODES_DEFINITION_PATH@/bufr/templates/local
+dist_definitionsbufr_templates_local_DATA = \
+	bufr/templates/local/BufrTemplate.def
+
 definitionscdfdir = @ECCODES_DEFINITION_PATH@/cdf
 dist_definitionscdf_DATA = \
 	cdf/boot.def
@@ -4953,6 +7948,7 @@ dist_definitionsgrib1_DATA = \
 	grib1/2.98.220.table\
 	grib1/2.98.228.table\
 	grib1/2.98.230.table\
+	grib1/2.98.235.table\
 	grib1/2.table\
 	grib1/3.233.table\
 	grib1/3.82.table\
@@ -5130,7 +8126,6 @@ dist_definitionsgrib1_local_ecmf_DATA = \
 
 definitionsgrib1_local_edzwdir = @ECCODES_DEFINITION_PATH@/grib1/local/edzw
 dist_definitionsgrib1_local_edzw_DATA = \
-	grib1/local/edzw/3.table\
 	grib1/local/edzw/5.table
 
 definitionsgrib1_local_rjtddir = @ECCODES_DEFINITION_PATH@/grib1/local/rjtd
@@ -5172,6 +8167,14 @@ dist_definitionsgrib1_localConcepts_edzw_DATA = \
 	grib1/localConcepts/edzw/stepType.def\
 	grib1/localConcepts/edzw/units.def
 
+definitionsgrib1_localConcepts_efkldir = @ECCODES_DEFINITION_PATH@/grib1/localConcepts/efkl
+dist_definitionsgrib1_localConcepts_efkl_DATA = \
+	grib1/localConcepts/efkl/cfVarName.def\
+	grib1/localConcepts/efkl/name.def\
+	grib1/localConcepts/efkl/paramId.def\
+	grib1/localConcepts/efkl/shortName.def\
+	grib1/localConcepts/efkl/units.def
+
 definitionsgrib1_localConcepts_eidbdir = @ECCODES_DEFINITION_PATH@/grib1/localConcepts/eidb
 dist_definitionsgrib1_localConcepts_eidb_DATA = \
 	grib1/localConcepts/eidb/cfName.def\
@@ -5272,6 +8275,7 @@ dist_definitionsgrib2_DATA = \
 	grib2/local.98.15.def\
 	grib2/local.98.16.def\
 	grib2/local.98.18.def\
+	grib2/local.98.192.def\
 	grib2/local.98.20.def\
 	grib2/local.98.21.def\
 	grib2/local.98.24.def\
@@ -5293,6 +8297,7 @@ dist_definitionsgrib2_DATA = \
 	grib2/mars_labeling.82.def\
 	grib2/mars_labeling.def\
 	grib2/meta.def\
+	grib2/modelName.def\
 	grib2/name.def\
 	grib2/paramId.def\
 	grib2/parameters.def\
@@ -5402,6 +8407,8 @@ dist_definitionsgrib2_DATA = \
 	grib2/template.4.51.def\
 	grib2/template.4.53.def\
 	grib2/template.4.54.def\
+	grib2/template.4.55.def\
+	grib2/template.4.56.def\
 	grib2/template.4.6.def\
 	grib2/template.4.60.def\
 	grib2/template.4.61.def\
@@ -5420,6 +8427,7 @@ dist_definitionsgrib2_DATA = \
 	grib2/template.4.parameter_aerosol_optical.def\
 	grib2/template.4.parameter_chemical.def\
 	grib2/template.4.parameter_partition.def\
+	grib2/template.4.parameter_tile.def\
 	grib2/template.4.percentile.def\
 	grib2/template.4.point_in_time.def\
 	grib2/template.4.probability.def\
@@ -5485,6 +8493,7 @@ dist_definitionsgrib2_local_1098_DATA = \
 
 definitionsgrib2_localConcepts_cnmcdir = @ECCODES_DEFINITION_PATH@/grib2/localConcepts/cnmc
 dist_definitionsgrib2_localConcepts_cnmc_DATA = \
+	grib2/localConcepts/cnmc/modelName.def\
 	grib2/localConcepts/cnmc/name.def\
 	grib2/localConcepts/cnmc/paramId.def\
 	grib2/localConcepts/cnmc/shortName.def\
@@ -5501,11 +8510,19 @@ dist_definitionsgrib2_localConcepts_ecmf_DATA = \
 
 definitionsgrib2_localConcepts_edzwdir = @ECCODES_DEFINITION_PATH@/grib2/localConcepts/edzw
 dist_definitionsgrib2_localConcepts_edzw_DATA = \
+	grib2/localConcepts/edzw/modelName.def\
 	grib2/localConcepts/edzw/name.def\
 	grib2/localConcepts/edzw/paramId.def\
 	grib2/localConcepts/edzw/shortName.def\
 	grib2/localConcepts/edzw/units.def
 
+definitionsgrib2_localConcepts_efkldir = @ECCODES_DEFINITION_PATH@/grib2/localConcepts/efkl
+dist_definitionsgrib2_localConcepts_efkl_DATA = \
+	grib2/localConcepts/efkl/name.def\
+	grib2/localConcepts/efkl/paramId.def\
+	grib2/localConcepts/efkl/shortName.def\
+	grib2/localConcepts/efkl/units.def
+
 definitionsgrib2_localConcepts_egrrdir = @ECCODES_DEFINITION_PATH@/grib2/localConcepts/egrr
 dist_definitionsgrib2_localConcepts_egrr_DATA = \
 	grib2/localConcepts/egrr/name.def\
@@ -5548,6 +8565,10 @@ dist_definitionsgrib2_localConcepts_lfpw1_DATA = \
 	grib2/localConcepts/lfpw1/shortName.def\
 	grib2/localConcepts/lfpw1/units.def
 
+definitionsgrib2_localConcepts_lsswdir = @ECCODES_DEFINITION_PATH@/grib2/localConcepts/lssw
+dist_definitionsgrib2_localConcepts_lssw_DATA = \
+	grib2/localConcepts/lssw/modelName.def
+
 definitionsgrib2_tablesdir = @ECCODES_DEFINITION_PATH@/grib2/tables
 dist_definitionsgrib2_tables_DATA = \
 	grib2/tables/0.0.table\
@@ -6386,6 +9407,265 @@ dist_definitionsgrib2_tables_14_DATA = \
 	grib2/tables/14/6.0.table\
 	grib2/tables/14/stepType.table
 
+definitionsgrib2_tables_15dir = @ECCODES_DEFINITION_PATH@/grib2/tables/15
+dist_definitionsgrib2_tables_15_DATA = \
+	grib2/tables/15/0.0.table\
+	grib2/tables/15/1.0.table\
+	grib2/tables/15/1.1.table\
+	grib2/tables/15/1.2.table\
+	grib2/tables/15/1.3.table\
+	grib2/tables/15/1.4.table\
+	grib2/tables/15/1.5.table\
+	grib2/tables/15/1.6.table\
+	grib2/tables/15/3.0.table\
+	grib2/tables/15/3.1.table\
+	grib2/tables/15/3.10.table\
+	grib2/tables/15/3.11.table\
+	grib2/tables/15/3.15.table\
+	grib2/tables/15/3.2.table\
+	grib2/tables/15/3.20.table\
+	grib2/tables/15/3.21.table\
+	grib2/tables/15/3.3.table\
+	grib2/tables/15/3.4.table\
+	grib2/tables/15/3.5.table\
+	grib2/tables/15/3.6.table\
+	grib2/tables/15/3.7.table\
+	grib2/tables/15/3.8.table\
+	grib2/tables/15/3.9.table\
+	grib2/tables/15/4.0.table\
+	grib2/tables/15/4.1.0.table\
+	grib2/tables/15/4.1.1.table\
+	grib2/tables/15/4.1.10.table\
+	grib2/tables/15/4.1.192.table\
+	grib2/tables/15/4.1.2.table\
+	grib2/tables/15/4.1.3.table\
+	grib2/tables/15/4.10.table\
+	grib2/tables/15/4.11.table\
+	grib2/tables/15/4.12.table\
+	grib2/tables/15/4.13.table\
+	grib2/tables/15/4.14.table\
+	grib2/tables/15/4.15.table\
+	grib2/tables/15/4.192.table\
+	grib2/tables/15/4.2.0.0.table\
+	grib2/tables/15/4.2.0.1.table\
+	grib2/tables/15/4.2.0.13.table\
+	grib2/tables/15/4.2.0.14.table\
+	grib2/tables/15/4.2.0.15.table\
+	grib2/tables/15/4.2.0.16.table\
+	grib2/tables/15/4.2.0.17.table\
+	grib2/tables/15/4.2.0.18.table\
+	grib2/tables/15/4.2.0.19.table\
+	grib2/tables/15/4.2.0.190.table\
+	grib2/tables/15/4.2.0.191.table\
+	grib2/tables/15/4.2.0.2.table\
+	grib2/tables/15/4.2.0.20.table\
+	grib2/tables/15/4.2.0.3.table\
+	grib2/tables/15/4.2.0.4.table\
+	grib2/tables/15/4.2.0.5.table\
+	grib2/tables/15/4.2.0.6.table\
+	grib2/tables/15/4.2.0.7.table\
+	grib2/tables/15/4.2.1.0.table\
+	grib2/tables/15/4.2.1.1.table\
+	grib2/tables/15/4.2.1.2.table\
+	grib2/tables/15/4.2.10.0.table\
+	grib2/tables/15/4.2.10.1.table\
+	grib2/tables/15/4.2.10.191.table\
+	grib2/tables/15/4.2.10.2.table\
+	grib2/tables/15/4.2.10.3.table\
+	grib2/tables/15/4.2.10.4.table\
+	grib2/tables/15/4.2.2.0.table\
+	grib2/tables/15/4.2.2.3.table\
+	grib2/tables/15/4.2.2.4.table\
+	grib2/tables/15/4.2.2.5.table\
+	grib2/tables/15/4.2.3.0.table\
+	grib2/tables/15/4.2.3.1.table\
+	grib2/tables/15/4.201.table\
+	grib2/tables/15/4.202.table\
+	grib2/tables/15/4.203.table\
+	grib2/tables/15/4.204.table\
+	grib2/tables/15/4.205.table\
+	grib2/tables/15/4.206.table\
+	grib2/tables/15/4.207.table\
+	grib2/tables/15/4.208.table\
+	grib2/tables/15/4.209.table\
+	grib2/tables/15/4.210.table\
+	grib2/tables/15/4.211.table\
+	grib2/tables/15/4.212.table\
+	grib2/tables/15/4.213.table\
+	grib2/tables/15/4.215.table\
+	grib2/tables/15/4.216.table\
+	grib2/tables/15/4.217.table\
+	grib2/tables/15/4.218.table\
+	grib2/tables/15/4.219.table\
+	grib2/tables/15/4.220.table\
+	grib2/tables/15/4.221.table\
+	grib2/tables/15/4.222.table\
+	grib2/tables/15/4.223.table\
+	grib2/tables/15/4.224.table\
+	grib2/tables/15/4.225.table\
+	grib2/tables/15/4.227.table\
+	grib2/tables/15/4.230.table\
+	grib2/tables/15/4.233.table\
+	grib2/tables/15/4.234.table\
+	grib2/tables/15/4.236.table\
+	grib2/tables/15/4.240.table\
+	grib2/tables/15/4.241.table\
+	grib2/tables/15/4.242.table\
+	grib2/tables/15/4.243.table\
+	grib2/tables/15/4.3.table\
+	grib2/tables/15/4.4.table\
+	grib2/tables/15/4.5.table\
+	grib2/tables/15/4.6.table\
+	grib2/tables/15/4.7.table\
+	grib2/tables/15/4.8.table\
+	grib2/tables/15/4.9.table\
+	grib2/tables/15/4.91.table\
+	grib2/tables/15/5.0.table\
+	grib2/tables/15/5.1.table\
+	grib2/tables/15/5.2.table\
+	grib2/tables/15/5.3.table\
+	grib2/tables/15/5.4.table\
+	grib2/tables/15/5.40.table\
+	grib2/tables/15/5.40000.table\
+	grib2/tables/15/5.5.table\
+	grib2/tables/15/5.50002.table\
+	grib2/tables/15/5.6.table\
+	grib2/tables/15/5.7.table\
+	grib2/tables/15/6.0.table\
+	grib2/tables/15/stepType.table
+
+definitionsgrib2_tables_16dir = @ECCODES_DEFINITION_PATH@/grib2/tables/16
+dist_definitionsgrib2_tables_16_DATA = \
+	grib2/tables/16/0.0.table\
+	grib2/tables/16/1.0.table\
+	grib2/tables/16/1.1.table\
+	grib2/tables/16/1.2.table\
+	grib2/tables/16/1.3.table\
+	grib2/tables/16/1.4.table\
+	grib2/tables/16/1.5.table\
+	grib2/tables/16/1.6.table\
+	grib2/tables/16/3.0.table\
+	grib2/tables/16/3.1.table\
+	grib2/tables/16/3.10.table\
+	grib2/tables/16/3.11.table\
+	grib2/tables/16/3.15.table\
+	grib2/tables/16/3.2.table\
+	grib2/tables/16/3.20.table\
+	grib2/tables/16/3.21.table\
+	grib2/tables/16/3.3.table\
+	grib2/tables/16/3.4.table\
+	grib2/tables/16/3.5.table\
+	grib2/tables/16/3.6.table\
+	grib2/tables/16/3.7.table\
+	grib2/tables/16/3.8.table\
+	grib2/tables/16/3.9.table\
+	grib2/tables/16/4.0.table\
+	grib2/tables/16/4.1.0.table\
+	grib2/tables/16/4.1.1.table\
+	grib2/tables/16/4.1.10.table\
+	grib2/tables/16/4.1.192.table\
+	grib2/tables/16/4.1.2.table\
+	grib2/tables/16/4.1.3.table\
+	grib2/tables/16/4.10.table\
+	grib2/tables/16/4.11.table\
+	grib2/tables/16/4.12.table\
+	grib2/tables/16/4.13.table\
+	grib2/tables/16/4.14.table\
+	grib2/tables/16/4.15.table\
+	grib2/tables/16/4.192.table\
+	grib2/tables/16/4.2.0.0.table\
+	grib2/tables/16/4.2.0.1.table\
+	grib2/tables/16/4.2.0.13.table\
+	grib2/tables/16/4.2.0.14.table\
+	grib2/tables/16/4.2.0.15.table\
+	grib2/tables/16/4.2.0.16.table\
+	grib2/tables/16/4.2.0.17.table\
+	grib2/tables/16/4.2.0.18.table\
+	grib2/tables/16/4.2.0.19.table\
+	grib2/tables/16/4.2.0.190.table\
+	grib2/tables/16/4.2.0.191.table\
+	grib2/tables/16/4.2.0.2.table\
+	grib2/tables/16/4.2.0.20.table\
+	grib2/tables/16/4.2.0.3.table\
+	grib2/tables/16/4.2.0.4.table\
+	grib2/tables/16/4.2.0.5.table\
+	grib2/tables/16/4.2.0.6.table\
+	grib2/tables/16/4.2.0.7.table\
+	grib2/tables/16/4.2.1.0.table\
+	grib2/tables/16/4.2.1.1.table\
+	grib2/tables/16/4.2.1.2.table\
+	grib2/tables/16/4.2.10.0.table\
+	grib2/tables/16/4.2.10.1.table\
+	grib2/tables/16/4.2.10.191.table\
+	grib2/tables/16/4.2.10.2.table\
+	grib2/tables/16/4.2.10.3.table\
+	grib2/tables/16/4.2.10.4.table\
+	grib2/tables/16/4.2.2.0.table\
+	grib2/tables/16/4.2.2.3.table\
+	grib2/tables/16/4.2.2.4.table\
+	grib2/tables/16/4.2.2.5.table\
+	grib2/tables/16/4.2.3.0.table\
+	grib2/tables/16/4.2.3.1.table\
+	grib2/tables/16/4.2.3.2.table\
+	grib2/tables/16/4.2.3.3.table\
+	grib2/tables/16/4.2.3.4.table\
+	grib2/tables/16/4.2.3.5.table\
+	grib2/tables/16/4.2.3.6.table\
+	grib2/tables/16/4.201.table\
+	grib2/tables/16/4.202.table\
+	grib2/tables/16/4.203.table\
+	grib2/tables/16/4.204.table\
+	grib2/tables/16/4.205.table\
+	grib2/tables/16/4.206.table\
+	grib2/tables/16/4.207.table\
+	grib2/tables/16/4.208.table\
+	grib2/tables/16/4.209.table\
+	grib2/tables/16/4.210.table\
+	grib2/tables/16/4.211.table\
+	grib2/tables/16/4.212.table\
+	grib2/tables/16/4.213.table\
+	grib2/tables/16/4.215.table\
+	grib2/tables/16/4.216.table\
+	grib2/tables/16/4.217.table\
+	grib2/tables/16/4.218.table\
+	grib2/tables/16/4.219.table\
+	grib2/tables/16/4.220.table\
+	grib2/tables/16/4.221.table\
+	grib2/tables/16/4.222.table\
+	grib2/tables/16/4.223.table\
+	grib2/tables/16/4.224.table\
+	grib2/tables/16/4.225.table\
+	grib2/tables/16/4.227.table\
+	grib2/tables/16/4.230.table\
+	grib2/tables/16/4.233.table\
+	grib2/tables/16/4.234.table\
+	grib2/tables/16/4.236.table\
+	grib2/tables/16/4.240.table\
+	grib2/tables/16/4.241.table\
+	grib2/tables/16/4.242.table\
+	grib2/tables/16/4.243.table\
+	grib2/tables/16/4.3.table\
+	grib2/tables/16/4.4.table\
+	grib2/tables/16/4.5.table\
+	grib2/tables/16/4.6.table\
+	grib2/tables/16/4.7.table\
+	grib2/tables/16/4.8.table\
+	grib2/tables/16/4.9.table\
+	grib2/tables/16/4.91.table\
+	grib2/tables/16/5.0.table\
+	grib2/tables/16/5.1.table\
+	grib2/tables/16/5.2.table\
+	grib2/tables/16/5.3.table\
+	grib2/tables/16/5.4.table\
+	grib2/tables/16/5.40.table\
+	grib2/tables/16/5.40000.table\
+	grib2/tables/16/5.5.table\
+	grib2/tables/16/5.50002.table\
+	grib2/tables/16/5.6.table\
+	grib2/tables/16/5.7.table\
+	grib2/tables/16/6.0.table\
+	grib2/tables/16/stepType.table
+
 definitionsgrib2_tables_2dir = @ECCODES_DEFINITION_PATH@/grib2/tables/2
 dist_definitionsgrib2_tables_2_DATA = \
 	grib2/tables/2/0.0.table\
@@ -8874,305 +12154,306 @@ dist_definitionsmars_DATA = \
 	mars/default_labeling.def\
 	mars/domain.96.table\
 	mars/domain.table\
-	mars/grib1.amap.an.def\
-	mars/grib1.dacl.pb.def\
-	mars/grib1.dacw.pb.def\
-	mars/grib1.dcda.4i.def\
-	mars/grib1.dcda.me.def\
-	mars/grib1.dcda.sim.def\
-	mars/grib1.edmm.an.def\
-	mars/grib1.edmm.cl.def\
-	mars/grib1.edmm.fc.def\
-	mars/grib1.edmm.fg.def\
-	mars/grib1.edmm.ia.def\
-	mars/grib1.edmm.ssd.def\
-	mars/grib1.edmo.an.def\
-	mars/grib1.edmo.cl.def\
-	mars/grib1.edmo.fc.def\
-	mars/grib1.edmo.ssd.def\
-	mars/grib1.efhc.cf.def\
-	mars/grib1.efhc.icp.def\
-	mars/grib1.efhc.pf.def\
-	mars/grib1.efho.cf.def\
-	mars/grib1.efho.pf.def\
-	mars/grib1.efhs.cd.def\
-	mars/grib1.efhs.ed.def\
-	mars/grib1.efhs.em.def\
-	mars/grib1.efhs.es.def\
-	mars/grib1.efhs.taem.def\
-	mars/grib1.efhs.taes.def\
-	mars/grib1.efov.pf.def\
-	mars/grib1.ehmm.em.def\
-	mars/grib1.elda.4i.def\
-	mars/grib1.elda.4v.def\
-	mars/grib1.elda.an.def\
-	mars/grib1.elda.ea.def\
-	mars/grib1.elda.ef.def\
-	mars/grib1.elda.em.def\
-	mars/grib1.elda.es.def\
-	mars/grib1.elda.fc.def\
-	mars/grib1.elda.me.def\
-	mars/grib1.elda.ses.def\
-	mars/grib1.enda.4v.def\
-	mars/grib1.enda.an.def\
-	mars/grib1.enda.def\
-	mars/grib1.enda.ea.def\
-	mars/grib1.enda.ef.def\
-	mars/grib1.enda.em.def\
-	mars/grib1.enda.es.def\
-	mars/grib1.enda.fc.def\
-	mars/grib1.enda.ssd.def\
-	mars/grib1.enda.sv.def\
-	mars/grib1.enda.svar.def\
-	mars/grib1.enfh.cf.def\
-	mars/grib1.enfh.fcmax.def\
-	mars/grib1.enfh.fcmean.def\
-	mars/grib1.enfh.fcmin.def\
-	mars/grib1.enfh.fcstdev.def\
-	mars/grib1.enfh.ff.def\
-	mars/grib1.enfh.icp.def\
-	mars/grib1.enfh.pf.def\
-	mars/grib1.enfh.tims.def\
-	mars/grib1.enfo.cf.def\
-	mars/grib1.enfo.ci.def\
-	mars/grib1.enfo.cm.def\
-	mars/grib1.enfo.cr.def\
-	mars/grib1.enfo.cs.def\
-	mars/grib1.enfo.cv.def\
-	mars/grib1.enfo.ed.def\
-	mars/grib1.enfo.ef.def\
-	mars/grib1.enfo.efi.def\
-	mars/grib1.enfo.efic.def\
-	mars/grib1.enfo.em.def\
-	mars/grib1.enfo.ep.def\
-	mars/grib1.enfo.es.def\
-	mars/grib1.enfo.fc.def\
-	mars/grib1.enfo.fcmax.def\
-	mars/grib1.enfo.fcmean.def\
-	mars/grib1.enfo.fcmin.def\
-	mars/grib1.enfo.fcstdev.def\
-	mars/grib1.enfo.ff.def\
-	mars/grib1.enfo.fp.def\
-	mars/grib1.enfo.icp.def\
-	mars/grib1.enfo.pb.def\
-	mars/grib1.enfo.pd.def\
-	mars/grib1.enfo.pf.def\
-	mars/grib1.enfo.sot.def\
-	mars/grib1.enfo.sv.def\
-	mars/grib1.enfo.svar.def\
-	mars/grib1.enfo.taem.def\
-	mars/grib1.enfo.taes.def\
-	mars/grib1.enfo.tu.def\
-	mars/grib1.enwh.cf.def\
-	mars/grib1.enwh.fcmax.def\
-	mars/grib1.enwh.fcmean.def\
-	mars/grib1.enwh.fcmin.def\
-	mars/grib1.enwh.fcstdev.def\
-	mars/grib1.enwh.pf.def\
-	mars/grib1.esmm.em.def\
-	mars/grib1.espd.an.def\
-	mars/grib1.ewda.4v.def\
-	mars/grib1.ewda.an.def\
-	mars/grib1.ewda.def\
-	mars/grib1.ewda.fc.def\
-	mars/grib1.ewhc.cf.def\
-	mars/grib1.ewhc.pf.def\
-	mars/grib1.ewho.cf.def\
-	mars/grib1.ewho.pf.def\
-	mars/grib1.ewla.4v.def\
-	mars/grib1.ewla.an.def\
-	mars/grib1.ewla.fc.def\
-	mars/grib1.ewmm.an.def\
-	mars/grib1.ewmm.cl.def\
-	mars/grib1.ewmm.fc.def\
-	mars/grib1.ewmo.an.def\
-	mars/grib1.ewmo.cl.def\
-	mars/grib1.ewmo.def\
-	mars/grib1.ewmo.fc.def\
-	mars/grib1.gfas.ga.def\
-	mars/grib1.gfas.gsd.def\
-	mars/grib1.kwbc.pf.def\
-	mars/grib1.lwda.4i.def\
-	mars/grib1.lwda.4v.def\
-	mars/grib1.lwda.an.def\
-	mars/grib1.lwda.ea.def\
-	mars/grib1.lwda.ef.def\
-	mars/grib1.lwda.fc.def\
-	mars/grib1.lwda.me.def\
-	mars/grib1.lwwv.4v.def\
-	mars/grib1.lwwv.an.def\
-	mars/grib1.lwwv.fc.def\
-	mars/grib1.maed.an.def\
-	mars/grib1.maed.fc.def\
-	mars/grib1.mawv.fc.def\
-	mars/grib1.mdfa.fc.def\
-	mars/grib1.me.def\
-	mars/grib1.mfam.em.def\
-	mars/grib1.mfam.fcmean.def\
-	mars/grib1.mfam.fp.def\
-	mars/grib1.mfam.pb.def\
-	mars/grib1.mfam.pd.def\
-	mars/grib1.mfhm.em.def\
-	mars/grib1.mfhm.es.def\
-	mars/grib1.mfhm.fcmax.def\
-	mars/grib1.mfhm.fcmean.def\
-	mars/grib1.mfhm.fcmin.def\
-	mars/grib1.mfhm.fcstdev.def\
-	mars/grib1.mfhw.cf.def\
-	mars/grib1.mfhw.fc.def\
-	mars/grib1.mfwm.fcmax.def\
-	mars/grib1.mfwm.fcmean.def\
-	mars/grib1.mfwm.fcmin.def\
-	mars/grib1.mfwm.fcstdev.def\
-	mars/grib1.mhwm.fcmax.def\
-	mars/grib1.mhwm.fcmean.def\
-	mars/grib1.mhwm.fcmin.def\
-	mars/grib1.mhwm.fcstdev.def\
-	mars/grib1.mmaf.fc.def\
-	mars/grib1.mmaf.fcmean.def\
-	mars/grib1.mmam.fcmean.def\
-	mars/grib1.mmsa.em.def\
-	mars/grib1.mmsa.fcmean.def\
-	mars/grib1.mmsf.fc.def\
-	mars/grib1.mmsf.icp.def\
-	mars/grib1.mnfc.cf.def\
-	mars/grib1.mnfc.ed.def\
-	mars/grib1.mnfc.em.def\
-	mars/grib1.mnfc.es.def\
-	mars/grib1.mnfc.fc.def\
-	mars/grib1.mnfc.ff.def\
-	mars/grib1.mnfc.icp.def\
-	mars/grib1.mnfc.of.def\
-	mars/grib1.mnfh.cf.def\
-	mars/grib1.mnfh.ed.def\
-	mars/grib1.mnfh.em.def\
-	mars/grib1.mnfh.es.def\
-	mars/grib1.mnfh.fc.def\
-	mars/grib1.mnfh.icp.def\
-	mars/grib1.mnfm.em.def\
-	mars/grib1.mnfm.es.def\
-	mars/grib1.mnfm.fcmax.def\
-	mars/grib1.mnfm.fcmean.def\
-	mars/grib1.mnfm.fcmin.def\
-	mars/grib1.mnfm.fcstdev.def\
-	mars/grib1.mnfw.cf.def\
-	mars/grib1.mnfw.fc.def\
-	mars/grib1.mnth.an.def\
-	mars/grib1.mnth.cl.def\
-	mars/grib1.mnth.fc.def\
-	mars/grib1.mnth.fg.def\
-	mars/grib1.mnth.ia.def\
-	mars/grib1.mnth.ssd.def\
-	mars/grib1.moda.an.def\
-	mars/grib1.moda.cl.def\
-	mars/grib1.moda.fc.def\
-	mars/grib1.moda.ssd.def\
-	mars/grib1.mofc.cf.def\
-	mars/grib1.mofc.ed.def\
-	mars/grib1.mofc.em.def\
-	mars/grib1.mofc.es.def\
-	mars/grib1.mofc.fc.def\
-	mars/grib1.mofc.ff.def\
-	mars/grib1.mofc.of.def\
-	mars/grib1.mofm.fcmax.def\
-	mars/grib1.mofm.fcmean.def\
-	mars/grib1.mofm.fcmin.def\
-	mars/grib1.mofm.fcstdev.def\
-	mars/grib1.mpic.s3.def\
-	mars/grib1.msda.an.def\
-	mars/grib1.msdc.an.def\
-	mars/grib1.msdc.fc.def\
-	mars/grib1.msmm.em.def\
-	mars/grib1.msmm.fcmax.def\
-	mars/grib1.msmm.fcmean.def\
-	mars/grib1.msmm.fcmin.def\
-	mars/grib1.msmm.fcstdev.def\
-	mars/grib1.msmm.hcmean.def\
-	mars/grib1.ocea.an.def\
-	mars/grib1.ocea.ff.def\
-	mars/grib1.ocea.fx.def\
-	mars/grib1.ocea.of.def\
-	mars/grib1.ocea.or.def\
-	mars/grib1.oper.3v.def\
-	mars/grib1.oper.4i.def\
-	mars/grib1.oper.4v.def\
-	mars/grib1.oper.an.def\
-	mars/grib1.oper.ea.def\
-	mars/grib1.oper.ef.def\
-	mars/grib1.oper.fa.def\
-	mars/grib1.oper.fc.def\
-	mars/grib1.oper.fg.def\
-	mars/grib1.oper.go.def\
-	mars/grib1.oper.ia.def\
-	mars/grib1.oper.im.def\
-	mars/grib1.oper.me.def\
-	mars/grib1.oper.oi.def\
-	mars/grib1.oper.si.def\
-	mars/grib1.oper.sim.def\
-	mars/grib1.oper.ssd.def\
-	mars/grib1.scda.4i.def\
-	mars/grib1.scda.me.def\
-	mars/grib1.seap.an.def\
-	mars/grib1.seap.ef.def\
-	mars/grib1.seap.es.def\
-	mars/grib1.seap.fc.def\
-	mars/grib1.seap.sv.def\
-	mars/grib1.seap.svar.def\
-	mars/grib1.seas.an.def\
-	mars/grib1.seas.fc.def\
-	mars/grib1.seas.ff.def\
-	mars/grib1.seas.fx.def\
-	mars/grib1.seas.of.def\
-	mars/grib1.seas.or.def\
-	mars/grib1.sens.me.def\
-	mars/grib1.sens.sf.def\
-	mars/grib1.sens.sg.def\
-	mars/grib1.sfmm.em.def\
-	mars/grib1.sfmm.fcmax.def\
-	mars/grib1.sfmm.fcmean.def\
-	mars/grib1.sfmm.fcmin.def\
-	mars/grib1.sfmm.fcstdev.def\
-	mars/grib1.smma.em.def\
-	mars/grib1.smma.fcmean.def\
-	mars/grib1.supd.an.def\
-	mars/grib1.swmm.fcmax.def\
-	mars/grib1.swmm.fcmean.def\
-	mars/grib1.swmm.fcmin.def\
-	mars/grib1.swmm.fcstdev.def\
-	mars/grib1.ukmo.s3.def\
-	mars/grib1.waef.cv.def\
-	mars/grib1.waef.efi.def\
-	mars/grib1.waef.efic.def\
-	mars/grib1.waef.ep.def\
-	mars/grib1.waef.fcmax.def\
-	mars/grib1.waef.fcmean.def\
-	mars/grib1.waef.fcmin.def\
-	mars/grib1.waef.fcstdev.def\
-	mars/grib1.waef.fp.def\
-	mars/grib1.waef.pf.def\
-	mars/grib1.waef.sot.def\
-	mars/grib1.wamd.an.def\
-	mars/grib1.wamd.fc.def\
-	mars/grib1.wamf.cf.def\
-	mars/grib1.wamf.fc.def\
-	mars/grib1.wamo.an.def\
-	mars/grib1.wamo.cl.def\
-	mars/grib1.wamo.fc.def\
-	mars/grib1.wasf.fc.def\
-	mars/grib1.wave.4v.def\
-	mars/grib1.wave.an.def\
-	mars/grib1.wave.def\
-	mars/grib1.wave.fc.def\
-	mars/grib1.wave.fg.def\
-	mars/grib1.wehs.cd.def\
-	mars/grib1.wehs.ed.def\
-	mars/grib1.wehs.em.def\
-	mars/grib1.wehs.es.def\
-	mars/grib1.weov.pf.def\
-	mars/grib1.wmfm.fcmax.def\
-	mars/grib1.wmfm.fcmean.def\
-	mars/grib1.wmfm.fcmin.def\
-	mars/grib1.wmfm.fcstdev.def\
+	mars/grib.amap.an.def\
+	mars/grib.dacl.pb.def\
+	mars/grib.dacw.pb.def\
+	mars/grib.dcda.4i.def\
+	mars/grib.dcda.me.def\
+	mars/grib.dcda.sim.def\
+	mars/grib.edmm.an.def\
+	mars/grib.edmm.cl.def\
+	mars/grib.edmm.fc.def\
+	mars/grib.edmm.fg.def\
+	mars/grib.edmm.ia.def\
+	mars/grib.edmm.ssd.def\
+	mars/grib.edmo.an.def\
+	mars/grib.edmo.cl.def\
+	mars/grib.edmo.fc.def\
+	mars/grib.edmo.ssd.def\
+	mars/grib.efhc.cf.def\
+	mars/grib.efhc.icp.def\
+	mars/grib.efhc.pf.def\
+	mars/grib.efho.cf.def\
+	mars/grib.efho.pf.def\
+	mars/grib.efhs.cd.def\
+	mars/grib.efhs.ed.def\
+	mars/grib.efhs.em.def\
+	mars/grib.efhs.es.def\
+	mars/grib.efhs.taem.def\
+	mars/grib.efhs.taes.def\
+	mars/grib.efov.pf.def\
+	mars/grib.ehmm.em.def\
+	mars/grib.elda.4i.def\
+	mars/grib.elda.4v.def\
+	mars/grib.elda.an.def\
+	mars/grib.elda.ea.def\
+	mars/grib.elda.ef.def\
+	mars/grib.elda.em.def\
+	mars/grib.elda.es.def\
+	mars/grib.elda.fc.def\
+	mars/grib.elda.me.def\
+	mars/grib.elda.ses.def\
+	mars/grib.enda.4v.def\
+	mars/grib.enda.an.def\
+	mars/grib.enda.def\
+	mars/grib.enda.ea.def\
+	mars/grib.enda.ef.def\
+	mars/grib.enda.em.def\
+	mars/grib.enda.es.def\
+	mars/grib.enda.fc.def\
+	mars/grib.enda.ssd.def\
+	mars/grib.enda.sv.def\
+	mars/grib.enda.svar.def\
+	mars/grib.enfh.cf.def\
+	mars/grib.enfh.fcmax.def\
+	mars/grib.enfh.fcmean.def\
+	mars/grib.enfh.fcmin.def\
+	mars/grib.enfh.fcstdev.def\
+	mars/grib.enfh.ff.def\
+	mars/grib.enfh.icp.def\
+	mars/grib.enfh.pf.def\
+	mars/grib.enfh.tims.def\
+	mars/grib.enfo.cf.def\
+	mars/grib.enfo.ci.def\
+	mars/grib.enfo.cm.def\
+	mars/grib.enfo.cr.def\
+	mars/grib.enfo.cs.def\
+	mars/grib.enfo.cv.def\
+	mars/grib.enfo.ed.def\
+	mars/grib.enfo.ef.def\
+	mars/grib.enfo.efi.def\
+	mars/grib.enfo.efic.def\
+	mars/grib.enfo.em.def\
+	mars/grib.enfo.ep.def\
+	mars/grib.enfo.es.def\
+	mars/grib.enfo.fc.def\
+	mars/grib.enfo.fcmax.def\
+	mars/grib.enfo.fcmean.def\
+	mars/grib.enfo.fcmin.def\
+	mars/grib.enfo.fcstdev.def\
+	mars/grib.enfo.ff.def\
+	mars/grib.enfo.fp.def\
+	mars/grib.enfo.icp.def\
+	mars/grib.enfo.pb.def\
+	mars/grib.enfo.pd.def\
+	mars/grib.enfo.pf.def\
+	mars/grib.enfo.sot.def\
+	mars/grib.enfo.sv.def\
+	mars/grib.enfo.svar.def\
+	mars/grib.enfo.taem.def\
+	mars/grib.enfo.taes.def\
+	mars/grib.enfo.tu.def\
+	mars/grib.enwh.cf.def\
+	mars/grib.enwh.fcmax.def\
+	mars/grib.enwh.fcmean.def\
+	mars/grib.enwh.fcmin.def\
+	mars/grib.enwh.fcstdev.def\
+	mars/grib.enwh.pf.def\
+	mars/grib.esmm.em.def\
+	mars/grib.espd.an.def\
+	mars/grib.ewda.4v.def\
+	mars/grib.ewda.an.def\
+	mars/grib.ewda.def\
+	mars/grib.ewda.fc.def\
+	mars/grib.ewhc.cf.def\
+	mars/grib.ewhc.pf.def\
+	mars/grib.ewho.cf.def\
+	mars/grib.ewho.pf.def\
+	mars/grib.ewla.4v.def\
+	mars/grib.ewla.an.def\
+	mars/grib.ewla.fc.def\
+	mars/grib.ewmm.an.def\
+	mars/grib.ewmm.cl.def\
+	mars/grib.ewmm.fc.def\
+	mars/grib.ewmo.an.def\
+	mars/grib.ewmo.cl.def\
+	mars/grib.ewmo.def\
+	mars/grib.ewmo.fc.def\
+	mars/grib.gfas.ga.def\
+	mars/grib.gfas.gsd.def\
+	mars/grib.kwbc.pf.def\
+	mars/grib.lwda.4i.def\
+	mars/grib.lwda.4v.def\
+	mars/grib.lwda.an.def\
+	mars/grib.lwda.ea.def\
+	mars/grib.lwda.ef.def\
+	mars/grib.lwda.fc.def\
+	mars/grib.lwda.me.def\
+	mars/grib.lwda.ssd.def\
+	mars/grib.lwwv.4v.def\
+	mars/grib.lwwv.an.def\
+	mars/grib.lwwv.fc.def\
+	mars/grib.maed.an.def\
+	mars/grib.maed.fc.def\
+	mars/grib.mawv.fc.def\
+	mars/grib.mdfa.fc.def\
+	mars/grib.me.def\
+	mars/grib.mfam.em.def\
+	mars/grib.mfam.fcmean.def\
+	mars/grib.mfam.fp.def\
+	mars/grib.mfam.pb.def\
+	mars/grib.mfam.pd.def\
+	mars/grib.mfhm.em.def\
+	mars/grib.mfhm.es.def\
+	mars/grib.mfhm.fcmax.def\
+	mars/grib.mfhm.fcmean.def\
+	mars/grib.mfhm.fcmin.def\
+	mars/grib.mfhm.fcstdev.def\
+	mars/grib.mfhw.cf.def\
+	mars/grib.mfhw.fc.def\
+	mars/grib.mfwm.fcmax.def\
+	mars/grib.mfwm.fcmean.def\
+	mars/grib.mfwm.fcmin.def\
+	mars/grib.mfwm.fcstdev.def\
+	mars/grib.mhwm.fcmax.def\
+	mars/grib.mhwm.fcmean.def\
+	mars/grib.mhwm.fcmin.def\
+	mars/grib.mhwm.fcstdev.def\
+	mars/grib.mmaf.fc.def\
+	mars/grib.mmaf.fcmean.def\
+	mars/grib.mmam.fcmean.def\
+	mars/grib.mmsa.em.def\
+	mars/grib.mmsa.fcmean.def\
+	mars/grib.mmsf.fc.def\
+	mars/grib.mmsf.icp.def\
+	mars/grib.mnfc.cf.def\
+	mars/grib.mnfc.ed.def\
+	mars/grib.mnfc.em.def\
+	mars/grib.mnfc.es.def\
+	mars/grib.mnfc.fc.def\
+	mars/grib.mnfc.ff.def\
+	mars/grib.mnfc.icp.def\
+	mars/grib.mnfc.of.def\
+	mars/grib.mnfh.cf.def\
+	mars/grib.mnfh.ed.def\
+	mars/grib.mnfh.em.def\
+	mars/grib.mnfh.es.def\
+	mars/grib.mnfh.fc.def\
+	mars/grib.mnfh.icp.def\
+	mars/grib.mnfm.em.def\
+	mars/grib.mnfm.es.def\
+	mars/grib.mnfm.fcmax.def\
+	mars/grib.mnfm.fcmean.def\
+	mars/grib.mnfm.fcmin.def\
+	mars/grib.mnfm.fcstdev.def\
+	mars/grib.mnfw.cf.def\
+	mars/grib.mnfw.fc.def\
+	mars/grib.mnth.an.def\
+	mars/grib.mnth.cl.def\
+	mars/grib.mnth.fc.def\
+	mars/grib.mnth.fg.def\
+	mars/grib.mnth.ia.def\
+	mars/grib.mnth.ssd.def\
+	mars/grib.moda.an.def\
+	mars/grib.moda.cl.def\
+	mars/grib.moda.fc.def\
+	mars/grib.moda.ssd.def\
+	mars/grib.mofc.cf.def\
+	mars/grib.mofc.ed.def\
+	mars/grib.mofc.em.def\
+	mars/grib.mofc.es.def\
+	mars/grib.mofc.fc.def\
+	mars/grib.mofc.ff.def\
+	mars/grib.mofc.of.def\
+	mars/grib.mofm.fcmax.def\
+	mars/grib.mofm.fcmean.def\
+	mars/grib.mofm.fcmin.def\
+	mars/grib.mofm.fcstdev.def\
+	mars/grib.mpic.s3.def\
+	mars/grib.msda.an.def\
+	mars/grib.msdc.an.def\
+	mars/grib.msdc.fc.def\
+	mars/grib.msmm.em.def\
+	mars/grib.msmm.fcmax.def\
+	mars/grib.msmm.fcmean.def\
+	mars/grib.msmm.fcmin.def\
+	mars/grib.msmm.fcstdev.def\
+	mars/grib.msmm.hcmean.def\
+	mars/grib.ocea.an.def\
+	mars/grib.ocea.ff.def\
+	mars/grib.ocea.fx.def\
+	mars/grib.ocea.of.def\
+	mars/grib.ocea.or.def\
+	mars/grib.oper.3v.def\
+	mars/grib.oper.4i.def\
+	mars/grib.oper.4v.def\
+	mars/grib.oper.an.def\
+	mars/grib.oper.ea.def\
+	mars/grib.oper.ef.def\
+	mars/grib.oper.fa.def\
+	mars/grib.oper.fc.def\
+	mars/grib.oper.fg.def\
+	mars/grib.oper.go.def\
+	mars/grib.oper.ia.def\
+	mars/grib.oper.im.def\
+	mars/grib.oper.me.def\
+	mars/grib.oper.oi.def\
+	mars/grib.oper.si.def\
+	mars/grib.oper.sim.def\
+	mars/grib.oper.ssd.def\
+	mars/grib.scda.4i.def\
+	mars/grib.scda.me.def\
+	mars/grib.seap.an.def\
+	mars/grib.seap.ef.def\
+	mars/grib.seap.es.def\
+	mars/grib.seap.fc.def\
+	mars/grib.seap.sv.def\
+	mars/grib.seap.svar.def\
+	mars/grib.seas.an.def\
+	mars/grib.seas.fc.def\
+	mars/grib.seas.ff.def\
+	mars/grib.seas.fx.def\
+	mars/grib.seas.of.def\
+	mars/grib.seas.or.def\
+	mars/grib.sens.me.def\
+	mars/grib.sens.sf.def\
+	mars/grib.sens.sg.def\
+	mars/grib.sfmm.em.def\
+	mars/grib.sfmm.fcmax.def\
+	mars/grib.sfmm.fcmean.def\
+	mars/grib.sfmm.fcmin.def\
+	mars/grib.sfmm.fcstdev.def\
+	mars/grib.smma.em.def\
+	mars/grib.smma.fcmean.def\
+	mars/grib.supd.an.def\
+	mars/grib.swmm.fcmax.def\
+	mars/grib.swmm.fcmean.def\
+	mars/grib.swmm.fcmin.def\
+	mars/grib.swmm.fcstdev.def\
+	mars/grib.ukmo.s3.def\
+	mars/grib.waef.cv.def\
+	mars/grib.waef.efi.def\
+	mars/grib.waef.efic.def\
+	mars/grib.waef.ep.def\
+	mars/grib.waef.fcmax.def\
+	mars/grib.waef.fcmean.def\
+	mars/grib.waef.fcmin.def\
+	mars/grib.waef.fcstdev.def\
+	mars/grib.waef.fp.def\
+	mars/grib.waef.pf.def\
+	mars/grib.waef.sot.def\
+	mars/grib.wamd.an.def\
+	mars/grib.wamd.fc.def\
+	mars/grib.wamf.cf.def\
+	mars/grib.wamf.fc.def\
+	mars/grib.wamo.an.def\
+	mars/grib.wamo.cl.def\
+	mars/grib.wamo.fc.def\
+	mars/grib.wasf.fc.def\
+	mars/grib.wave.4v.def\
+	mars/grib.wave.an.def\
+	mars/grib.wave.def\
+	mars/grib.wave.fc.def\
+	mars/grib.wave.fg.def\
+	mars/grib.wehs.cd.def\
+	mars/grib.wehs.ed.def\
+	mars/grib.wehs.em.def\
+	mars/grib.wehs.es.def\
+	mars/grib.weov.pf.def\
+	mars/grib.wmfm.fcmax.def\
+	mars/grib.wmfm.fcmean.def\
+	mars/grib.wmfm.fcmin.def\
+	mars/grib.wmfm.fcstdev.def\
 	mars/make_type_switch_case.sh\
 	mars/marsTypeConcept.def\
 	mars/model.96.table\
@@ -9184,26 +12465,159 @@ definitionsmars_eswidir = @ECCODES_DEFINITION_PATH@/mars/eswi
 dist_definitionsmars_eswi_DATA = \
 	mars/eswi/aerosolPackingConcept.def\
 	mars/eswi/class.table\
-	mars/eswi/grib1.expr.3v.def\
-	mars/eswi/grib1.expr.4v.def\
-	mars/eswi/grib1.expr.an.def\
-	mars/eswi/grib1.expr.fc.def\
-	mars/eswi/grib1.expr.si.def\
-	mars/eswi/grib1.mdfa.fc.def\
-	mars/eswi/grib1.mnth.an.def\
-	mars/eswi/grib1.mnth.fc.def\
-	mars/eswi/grib1.moda.an.def\
-	mars/eswi/grib1.moda.fc.def\
-	mars/eswi/grib1.oper.3v.def\
-	mars/eswi/grib1.oper.4v.def\
-	mars/eswi/grib1.oper.an.def\
-	mars/eswi/grib1.oper.fc.def\
-	mars/eswi/grib1.oper.si.def\
+	mars/eswi/grib.expr.3v.def\
+	mars/eswi/grib.expr.4v.def\
+	mars/eswi/grib.expr.an.def\
+	mars/eswi/grib.expr.fc.def\
+	mars/eswi/grib.expr.si.def\
+	mars/eswi/grib.mdfa.fc.def\
+	mars/eswi/grib.mnth.an.def\
+	mars/eswi/grib.mnth.fc.def\
+	mars/eswi/grib.moda.an.def\
+	mars/eswi/grib.moda.fc.def\
+	mars/eswi/grib.oper.3v.def\
+	mars/eswi/grib.oper.4v.def\
+	mars/eswi/grib.oper.an.def\
+	mars/eswi/grib.oper.fc.def\
+	mars/eswi/grib.oper.si.def\
 	mars/eswi/model.table\
 	mars/eswi/stream.table\
 	mars/eswi/type.table\
 	mars/eswi/wave_domain.def
 
+definitionsmetardir = @ECCODES_DEFINITION_PATH@/metar
+dist_definitionsmetar_DATA = \
+	metar/CCCC.txt\
+	metar/boot.def\
+	metar/boot.flexible.def\
+	metar/cccc.def\
+	metar/clouds.def\
+	metar/clouds.table\
+	metar/clouds_Trend1.def\
+	metar/clouds_Trend2.def\
+	metar/clouds_Trend3.def\
+	metar/clouds_Trend4.def\
+	metar/colour.def\
+	metar/direction.table\
+	metar/horizontalVisibility.def\
+	metar/horizontalVisibility_Trend1.def\
+	metar/horizontalVisibility_Trend2.def\
+	metar/horizontalVisibility_Trend3.def\
+	metar/horizontalVisibility_Trend4.def\
+	metar/missing_field.def\
+	metar/nsd_cccc.txt\
+	metar/present_weather.def\
+	metar/present_weather.list\
+	metar/present_weather_Trend1.def\
+	metar/present_weather_Trend2.def\
+	metar/present_weather_Trend3.def\
+	metar/present_weather_Trend4.def\
+	metar/qnh.def\
+	metar/recent_weather.def\
+	metar/remark.def\
+	metar/runwayDepthOfDeposit.table\
+	metar/runwayFrictionCoefficient.table\
+	metar/runwayState.def\
+	metar/runwayState1.def\
+	metar/runwayState2.def\
+	metar/runwayState3.def\
+	metar/runwayState4.def\
+	metar/runwayStateDeposit.table\
+	metar/runwayStateExtentOfContamination.table\
+	metar/rvr1.def\
+	metar/rvr2.def\
+	metar/rvr3.def\
+	metar/rvr4.def\
+	metar/seaState.table\
+	metar/sea_state.def\
+	metar/temperature.def\
+	metar/temperature.list\
+	metar/trend1.def\
+	metar/trend2.def\
+	metar/trend3.def\
+	metar/trend4.def\
+	metar/weatherCodes-forecasters.txt\
+	metar/weatherCodes-full.txt\
+	metar/weatherCodes-metar-template.txt\
+	metar/weatherCodes-trend-template.txt\
+	metar/wind.def\
+	metar/wind_Trend1.def\
+	metar/wind_Trend2.def\
+	metar/wind_Trend3.def\
+	metar/wind_Trend4.def\
+	metar/wind_shear.def\
+	metar/wrong_delayed.def
+
+definitionsmetar_stationsdir = @ECCODES_DEFINITION_PATH@/metar/stations
+dist_definitionsmetar_stations_DATA = \
+	metar/stations/nsd_cccc.txt
+
+definitionstafdir = @ECCODES_DEFINITION_PATH@/taf
+dist_definitionstaf_DATA = \
+	taf/CCCC.txt\
+	taf/boot.def\
+	taf/cccc.def\
+	taf/clouds.def\
+	taf/clouds.table\
+	taf/clouds_Trend1.def\
+	taf/clouds_Trend2.def\
+	taf/clouds_Trend3.def\
+	taf/clouds_Trend4.def\
+	taf/colour.def\
+	taf/direction.table\
+	taf/horizontalVisibility.def\
+	taf/horizontalVisibility_Trend1.def\
+	taf/horizontalVisibility_Trend2.def\
+	taf/horizontalVisibility_Trend3.def\
+	taf/horizontalVisibility_Trend4.def\
+	taf/missing_field.def\
+	taf/nsd_cccc.txt\
+	taf/present_weather.def\
+	taf/present_weather.list\
+	taf/present_weather_Trend1.def\
+	taf/present_weather_Trend2.def\
+	taf/present_weather_Trend3.def\
+	taf/present_weather_Trend4.def\
+	taf/qnh.def\
+	taf/recent_weather.def\
+	taf/remark.def\
+	taf/runwayDepthOfDeposit.table\
+	taf/runwayFrictionCoefficient.table\
+	taf/runwayState.def\
+	taf/runwayState1.def\
+	taf/runwayState2.def\
+	taf/runwayState3.def\
+	taf/runwayState4.def\
+	taf/runwayStateDeposit.table\
+	taf/runwayStateExtentOfContamination.table\
+	taf/rvr1.def\
+	taf/rvr2.def\
+	taf/rvr3.def\
+	taf/rvr4.def\
+	taf/seaState.table\
+	taf/sea_state.def\
+	taf/temperature.def\
+	taf/temperature.list\
+	taf/trend1.def\
+	taf/trend2.def\
+	taf/trend3.def\
+	taf/trend4.def\
+	taf/weatherCodes-forecasters.txt\
+	taf/weatherCodes-full.txt\
+	taf/weatherCodes-metar-template.txt\
+	taf/weatherCodes-trend-template.txt\
+	taf/wind.def\
+	taf/wind_Trend1.def\
+	taf/wind_Trend2.def\
+	taf/wind_Trend3.def\
+	taf/wind_Trend4.def\
+	taf/wind_shear.def\
+	taf/wrong_delayed.def
+
+definitionstaf_stationsdir = @ECCODES_DEFINITION_PATH@/taf/stations
+dist_definitionstaf_stations_DATA = \
+	taf/stations/nsd_cccc.txt
+
 definitionstidedir = @ECCODES_DEFINITION_PATH@/tide
 dist_definitionstide_DATA = \
 	tide/boot.def\
diff --git a/definitions/Makefile.in b/definitions/Makefile.in
index 982c76c..1b93770 100644
--- a/definitions/Makefile.in
+++ b/definitions/Makefile.in
@@ -88,6 +88,16 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(dist_definitionsbufr_tables_0_local_1_98_0_DATA) \
 	$(dist_definitionsbufr_tables_0_local_1_98_0_6_DATA) \
 	$(dist_definitionsbufr_tables_0_local_1_98_0_codetables_DATA) \
+	$(dist_definitionsbufr_tables_0_local_2_98_0_DATA) \
+	$(dist_definitionsbufr_tables_0_local_2_98_0_codetables_DATA) \
+	$(dist_definitionsbufr_tables_0_local_3_98_0_DATA) \
+	$(dist_definitionsbufr_tables_0_local_3_98_0_codetables_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_10_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_10_codetables_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_11_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_11_codetables_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_12_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_12_codetables_DATA) \
 	$(dist_definitionsbufr_tables_0_wmo_13_DATA) \
 	$(dist_definitionsbufr_tables_0_wmo_13_codetables_DATA) \
 	$(dist_definitionsbufr_tables_0_wmo_14_DATA) \
@@ -110,17 +120,30 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(dist_definitionsbufr_tables_0_wmo_22_codetables_DATA) \
 	$(dist_definitionsbufr_tables_0_wmo_23_DATA) \
 	$(dist_definitionsbufr_tables_0_wmo_23_codetables_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_24_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_24_codetables_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_25_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_25_codetables_DATA) \
 	$(dist_definitionsbufr_tables_0_wmo_6_DATA) \
 	$(dist_definitionsbufr_tables_0_wmo_6_codetables_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_7_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_7_codetables_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_8_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_8_codetables_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_9_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_9_codetables_DATA) \
 	$(dist_definitionsbufr_tables_3_local_1_98_0_DATA) \
 	$(dist_definitionsbufr_tables_3_wmo_11_DATA) \
 	$(dist_definitionsbufr_tables_3_wmo_6_DATA) \
+	$(dist_definitionsbufr_templates_DATA) \
+	$(dist_definitionsbufr_templates_local_DATA) \
 	$(dist_definitionscdf_DATA) $(dist_definitionscommon_DATA) \
 	$(dist_definitionsgrib1_DATA) \
 	$(dist_definitionsgrib1_localConcepts_ammc_DATA) \
 	$(dist_definitionsgrib1_localConcepts_cnmc_DATA) \
 	$(dist_definitionsgrib1_localConcepts_ecmf_DATA) \
 	$(dist_definitionsgrib1_localConcepts_edzw_DATA) \
+	$(dist_definitionsgrib1_localConcepts_efkl_DATA) \
 	$(dist_definitionsgrib1_localConcepts_eidb_DATA) \
 	$(dist_definitionsgrib1_localConcepts_ekmi_DATA) \
 	$(dist_definitionsgrib1_localConcepts_enmi_DATA) \
@@ -138,12 +161,14 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(dist_definitionsgrib2_localConcepts_cnmc_DATA) \
 	$(dist_definitionsgrib2_localConcepts_ecmf_DATA) \
 	$(dist_definitionsgrib2_localConcepts_edzw_DATA) \
+	$(dist_definitionsgrib2_localConcepts_efkl_DATA) \
 	$(dist_definitionsgrib2_localConcepts_egrr_DATA) \
 	$(dist_definitionsgrib2_localConcepts_ekmi_DATA) \
 	$(dist_definitionsgrib2_localConcepts_eswi_DATA) \
 	$(dist_definitionsgrib2_localConcepts_kwbc_DATA) \
 	$(dist_definitionsgrib2_localConcepts_lfpw_DATA) \
 	$(dist_definitionsgrib2_localConcepts_lfpw1_DATA) \
+	$(dist_definitionsgrib2_localConcepts_lssw_DATA) \
 	$(dist_definitionsgrib2_local_1098_DATA) \
 	$(dist_definitionsgrib2_tables_DATA) \
 	$(dist_definitionsgrib2_tables_0_DATA) \
@@ -153,6 +178,8 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(dist_definitionsgrib2_tables_12_DATA) \
 	$(dist_definitionsgrib2_tables_13_DATA) \
 	$(dist_definitionsgrib2_tables_14_DATA) \
+	$(dist_definitionsgrib2_tables_15_DATA) \
+	$(dist_definitionsgrib2_tables_16_DATA) \
 	$(dist_definitionsgrib2_tables_2_DATA) \
 	$(dist_definitionsgrib2_tables_3_DATA) \
 	$(dist_definitionsgrib2_tables_4_DATA) \
@@ -165,6 +192,10 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(dist_definitionsgrib2_tables_local_ecmf_4_DATA) \
 	$(dist_definitionsgts_DATA) $(dist_definitionshdf5_DATA) \
 	$(dist_definitionsmars_DATA) $(dist_definitionsmars_eswi_DATA) \
+	$(dist_definitionsmetar_DATA) \
+	$(dist_definitionsmetar_stations_DATA) \
+	$(dist_definitionstaf_DATA) \
+	$(dist_definitionstaf_stations_DATA) \
 	$(dist_definitionstide_DATA) $(dist_definitionswrap_DATA)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
@@ -233,6 +264,16 @@ am__installdirs = "$(DESTDIR)$(definitionsdir)" \
 	"$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0dir)" \
 	"$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_6dir)" \
 	"$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)" \
+	"$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0dir)" \
+	"$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0_codetablesdir)" \
+	"$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0dir)" \
+	"$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0_codetablesdir)" \
+	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_10dir)" \
+	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_10_codetablesdir)" \
+	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_11dir)" \
+	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_11_codetablesdir)" \
+	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_12dir)" \
+	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_12_codetablesdir)" \
 	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_13dir)" \
 	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_13_codetablesdir)" \
 	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_14dir)" \
@@ -255,11 +296,23 @@ am__installdirs = "$(DESTDIR)$(definitionsdir)" \
 	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_22_codetablesdir)" \
 	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_23dir)" \
 	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_23_codetablesdir)" \
+	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_24dir)" \
+	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_24_codetablesdir)" \
+	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_25dir)" \
+	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_25_codetablesdir)" \
 	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_6dir)" \
 	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_6_codetablesdir)" \
+	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_7dir)" \
+	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_7_codetablesdir)" \
+	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_8dir)" \
+	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_8_codetablesdir)" \
+	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_9dir)" \
+	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_9_codetablesdir)" \
 	"$(DESTDIR)$(definitionsbufr_tables_3_local_1_98_0dir)" \
 	"$(DESTDIR)$(definitionsbufr_tables_3_wmo_11dir)" \
 	"$(DESTDIR)$(definitionsbufr_tables_3_wmo_6dir)" \
+	"$(DESTDIR)$(definitionsbufr_templatesdir)" \
+	"$(DESTDIR)$(definitionsbufr_templates_localdir)" \
 	"$(DESTDIR)$(definitionscdfdir)" \
 	"$(DESTDIR)$(definitionscommondir)" \
 	"$(DESTDIR)$(definitionsgrib1dir)" \
@@ -267,6 +320,7 @@ am__installdirs = "$(DESTDIR)$(definitionsdir)" \
 	"$(DESTDIR)$(definitionsgrib1_localConcepts_cnmcdir)" \
 	"$(DESTDIR)$(definitionsgrib1_localConcepts_ecmfdir)" \
 	"$(DESTDIR)$(definitionsgrib1_localConcepts_edzwdir)" \
+	"$(DESTDIR)$(definitionsgrib1_localConcepts_efkldir)" \
 	"$(DESTDIR)$(definitionsgrib1_localConcepts_eidbdir)" \
 	"$(DESTDIR)$(definitionsgrib1_localConcepts_ekmidir)" \
 	"$(DESTDIR)$(definitionsgrib1_localConcepts_enmidir)" \
@@ -284,12 +338,14 @@ am__installdirs = "$(DESTDIR)$(definitionsdir)" \
 	"$(DESTDIR)$(definitionsgrib2_localConcepts_cnmcdir)" \
 	"$(DESTDIR)$(definitionsgrib2_localConcepts_ecmfdir)" \
 	"$(DESTDIR)$(definitionsgrib2_localConcepts_edzwdir)" \
+	"$(DESTDIR)$(definitionsgrib2_localConcepts_efkldir)" \
 	"$(DESTDIR)$(definitionsgrib2_localConcepts_egrrdir)" \
 	"$(DESTDIR)$(definitionsgrib2_localConcepts_ekmidir)" \
 	"$(DESTDIR)$(definitionsgrib2_localConcepts_eswidir)" \
 	"$(DESTDIR)$(definitionsgrib2_localConcepts_kwbcdir)" \
 	"$(DESTDIR)$(definitionsgrib2_localConcepts_lfpwdir)" \
 	"$(DESTDIR)$(definitionsgrib2_localConcepts_lfpw1dir)" \
+	"$(DESTDIR)$(definitionsgrib2_localConcepts_lsswdir)" \
 	"$(DESTDIR)$(definitionsgrib2_local_1098dir)" \
 	"$(DESTDIR)$(definitionsgrib2_tablesdir)" \
 	"$(DESTDIR)$(definitionsgrib2_tables_0dir)" \
@@ -299,6 +355,8 @@ am__installdirs = "$(DESTDIR)$(definitionsdir)" \
 	"$(DESTDIR)$(definitionsgrib2_tables_12dir)" \
 	"$(DESTDIR)$(definitionsgrib2_tables_13dir)" \
 	"$(DESTDIR)$(definitionsgrib2_tables_14dir)" \
+	"$(DESTDIR)$(definitionsgrib2_tables_15dir)" \
+	"$(DESTDIR)$(definitionsgrib2_tables_16dir)" \
 	"$(DESTDIR)$(definitionsgrib2_tables_2dir)" \
 	"$(DESTDIR)$(definitionsgrib2_tables_3dir)" \
 	"$(DESTDIR)$(definitionsgrib2_tables_4dir)" \
@@ -313,6 +371,10 @@ am__installdirs = "$(DESTDIR)$(definitionsdir)" \
 	"$(DESTDIR)$(definitionshdf5dir)" \
 	"$(DESTDIR)$(definitionsmarsdir)" \
 	"$(DESTDIR)$(definitionsmars_eswidir)" \
+	"$(DESTDIR)$(definitionsmetardir)" \
+	"$(DESTDIR)$(definitionsmetar_stationsdir)" \
+	"$(DESTDIR)$(definitionstafdir)" \
+	"$(DESTDIR)$(definitionstaf_stationsdir)" \
 	"$(DESTDIR)$(definitionstidedir)" \
 	"$(DESTDIR)$(definitionswrapdir)"
 DATA = $(dist_definitions_DATA) $(dist_definitionsbudg_DATA) \
@@ -323,6 +385,16 @@ DATA = $(dist_definitions_DATA) $(dist_definitionsbudg_DATA) \
 	$(dist_definitionsbufr_tables_0_local_1_98_0_DATA) \
 	$(dist_definitionsbufr_tables_0_local_1_98_0_6_DATA) \
 	$(dist_definitionsbufr_tables_0_local_1_98_0_codetables_DATA) \
+	$(dist_definitionsbufr_tables_0_local_2_98_0_DATA) \
+	$(dist_definitionsbufr_tables_0_local_2_98_0_codetables_DATA) \
+	$(dist_definitionsbufr_tables_0_local_3_98_0_DATA) \
+	$(dist_definitionsbufr_tables_0_local_3_98_0_codetables_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_10_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_10_codetables_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_11_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_11_codetables_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_12_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_12_codetables_DATA) \
 	$(dist_definitionsbufr_tables_0_wmo_13_DATA) \
 	$(dist_definitionsbufr_tables_0_wmo_13_codetables_DATA) \
 	$(dist_definitionsbufr_tables_0_wmo_14_DATA) \
@@ -345,17 +417,30 @@ DATA = $(dist_definitions_DATA) $(dist_definitionsbudg_DATA) \
 	$(dist_definitionsbufr_tables_0_wmo_22_codetables_DATA) \
 	$(dist_definitionsbufr_tables_0_wmo_23_DATA) \
 	$(dist_definitionsbufr_tables_0_wmo_23_codetables_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_24_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_24_codetables_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_25_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_25_codetables_DATA) \
 	$(dist_definitionsbufr_tables_0_wmo_6_DATA) \
 	$(dist_definitionsbufr_tables_0_wmo_6_codetables_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_7_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_7_codetables_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_8_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_8_codetables_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_9_DATA) \
+	$(dist_definitionsbufr_tables_0_wmo_9_codetables_DATA) \
 	$(dist_definitionsbufr_tables_3_local_1_98_0_DATA) \
 	$(dist_definitionsbufr_tables_3_wmo_11_DATA) \
 	$(dist_definitionsbufr_tables_3_wmo_6_DATA) \
+	$(dist_definitionsbufr_templates_DATA) \
+	$(dist_definitionsbufr_templates_local_DATA) \
 	$(dist_definitionscdf_DATA) $(dist_definitionscommon_DATA) \
 	$(dist_definitionsgrib1_DATA) \
 	$(dist_definitionsgrib1_localConcepts_ammc_DATA) \
 	$(dist_definitionsgrib1_localConcepts_cnmc_DATA) \
 	$(dist_definitionsgrib1_localConcepts_ecmf_DATA) \
 	$(dist_definitionsgrib1_localConcepts_edzw_DATA) \
+	$(dist_definitionsgrib1_localConcepts_efkl_DATA) \
 	$(dist_definitionsgrib1_localConcepts_eidb_DATA) \
 	$(dist_definitionsgrib1_localConcepts_ekmi_DATA) \
 	$(dist_definitionsgrib1_localConcepts_enmi_DATA) \
@@ -373,12 +458,14 @@ DATA = $(dist_definitions_DATA) $(dist_definitionsbudg_DATA) \
 	$(dist_definitionsgrib2_localConcepts_cnmc_DATA) \
 	$(dist_definitionsgrib2_localConcepts_ecmf_DATA) \
 	$(dist_definitionsgrib2_localConcepts_edzw_DATA) \
+	$(dist_definitionsgrib2_localConcepts_efkl_DATA) \
 	$(dist_definitionsgrib2_localConcepts_egrr_DATA) \
 	$(dist_definitionsgrib2_localConcepts_ekmi_DATA) \
 	$(dist_definitionsgrib2_localConcepts_eswi_DATA) \
 	$(dist_definitionsgrib2_localConcepts_kwbc_DATA) \
 	$(dist_definitionsgrib2_localConcepts_lfpw_DATA) \
 	$(dist_definitionsgrib2_localConcepts_lfpw1_DATA) \
+	$(dist_definitionsgrib2_localConcepts_lssw_DATA) \
 	$(dist_definitionsgrib2_local_1098_DATA) \
 	$(dist_definitionsgrib2_tables_DATA) \
 	$(dist_definitionsgrib2_tables_0_DATA) \
@@ -388,6 +475,8 @@ DATA = $(dist_definitions_DATA) $(dist_definitionsbudg_DATA) \
 	$(dist_definitionsgrib2_tables_12_DATA) \
 	$(dist_definitionsgrib2_tables_13_DATA) \
 	$(dist_definitionsgrib2_tables_14_DATA) \
+	$(dist_definitionsgrib2_tables_15_DATA) \
+	$(dist_definitionsgrib2_tables_16_DATA) \
 	$(dist_definitionsgrib2_tables_2_DATA) \
 	$(dist_definitionsgrib2_tables_3_DATA) \
 	$(dist_definitionsgrib2_tables_4_DATA) \
@@ -400,6 +489,10 @@ DATA = $(dist_definitions_DATA) $(dist_definitionsbudg_DATA) \
 	$(dist_definitionsgrib2_tables_local_ecmf_4_DATA) \
 	$(dist_definitionsgts_DATA) $(dist_definitionshdf5_DATA) \
 	$(dist_definitionsmars_DATA) $(dist_definitionsmars_eswi_DATA) \
+	$(dist_definitionsmetar_DATA) \
+	$(dist_definitionsmetar_stations_DATA) \
+	$(dist_definitionstaf_DATA) \
+	$(dist_definitionstaf_stations_DATA) \
 	$(dist_definitionstide_DATA) $(dist_definitionswrap_DATA)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -602,8 +695,7 @@ dist_definitions_DATA = \
 	./param_id.table\
 	./parameters_version.def\
 	./publish_new_parameters.sh\
-	./stepUnits.table\
-	./x.grib
+	./stepUnits.table
 
 definitionsbudgdir = @ECCODES_DEFINITION_PATH@/budg
 dist_definitionsbudg_DATA = \
@@ -619,6 +711,7 @@ dist_definitionsbufr_DATA = \
 	bufr/boot_edition_2.def\
 	bufr/boot_edition_3.def\
 	bufr/boot_edition_4.def\
+	bufr/dataKeys.def\
 	bufr/old_section.1.def\
 	bufr/rdb_key.def\
 	bufr/rdb_key_28.def\
@@ -766,6 +859,1074 @@ dist_definitionsbufr_tables_0_local_101_98_0_codetables_DATA = \
 	bufr/tables/0/local/101/98/0/codetables/8193.table\
 	bufr/tables/0/local/101/98/0/codetables/8195.table
 
+definitionsbufr_tables_0_local_2_98_0dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/local/2/98/0
+dist_definitionsbufr_tables_0_local_2_98_0_DATA = \
+	bufr/tables/0/local/2/98/0/element.table\
+	bufr/tables/0/local/2/98/0/sequence.def
+
+definitionsbufr_tables_0_local_2_98_0_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/local/2/98/0/codetables
+dist_definitionsbufr_tables_0_local_2_98_0_codetables_DATA = \
+	bufr/tables/0/local/2/98/0/codetables/25192.table\
+	bufr/tables/0/local/2/98/0/codetables/40214.table\
+	bufr/tables/0/local/2/98/0/codetables/5237.table\
+	bufr/tables/0/local/2/98/0/codetables/8201.table
+
+definitionsbufr_tables_0_local_3_98_0dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/local/3/98/0
+dist_definitionsbufr_tables_0_local_3_98_0_DATA = \
+	bufr/tables/0/local/3/98/0/element.table\
+	bufr/tables/0/local/3/98/0/sequence.def
+
+definitionsbufr_tables_0_local_3_98_0_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/local/3/98/0/codetables
+dist_definitionsbufr_tables_0_local_3_98_0_codetables_DATA = \
+	bufr/tables/0/local/3/98/0/codetables/25192.table\
+	bufr/tables/0/local/3/98/0/codetables/40214.table\
+	bufr/tables/0/local/3/98/0/codetables/5237.table\
+	bufr/tables/0/local/3/98/0/codetables/8201.table
+
+definitionsbufr_tables_0_wmo_10dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/10
+dist_definitionsbufr_tables_0_wmo_10_DATA = \
+	bufr/tables/0/wmo/10/element.table\
+	bufr/tables/0/wmo/10/sequence.def
+
+definitionsbufr_tables_0_wmo_10_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/10/codetables
+dist_definitionsbufr_tables_0_wmo_10_codetables_DATA = \
+	bufr/tables/0/wmo/10/codetables/1003.table\
+	bufr/tables/0/wmo/10/codetables/10063.table\
+	bufr/tables/0/wmo/10/codetables/10064.table\
+	bufr/tables/0/wmo/10/codetables/1007.table\
+	bufr/tables/0/wmo/10/codetables/1031.table\
+	bufr/tables/0/wmo/10/codetables/1032.table\
+	bufr/tables/0/wmo/10/codetables/1033.table\
+	bufr/tables/0/wmo/10/codetables/1035.table\
+	bufr/tables/0/wmo/10/codetables/1090.table\
+	bufr/tables/0/wmo/10/codetables/1092.table\
+	bufr/tables/0/wmo/10/codetables/11031.table\
+	bufr/tables/0/wmo/10/codetables/11037.table\
+	bufr/tables/0/wmo/10/codetables/11038.table\
+	bufr/tables/0/wmo/10/codetables/11039.table\
+	bufr/tables/0/wmo/10/codetables/13038.table\
+	bufr/tables/0/wmo/10/codetables/13039.table\
+	bufr/tables/0/wmo/10/codetables/13040.table\
+	bufr/tables/0/wmo/10/codetables/13041.table\
+	bufr/tables/0/wmo/10/codetables/13051.table\
+	bufr/tables/0/wmo/10/codetables/13056.table\
+	bufr/tables/0/wmo/10/codetables/13057.table\
+	bufr/tables/0/wmo/10/codetables/15025.table\
+	bufr/tables/0/wmo/10/codetables/19001.table\
+	bufr/tables/0/wmo/10/codetables/19008.table\
+	bufr/tables/0/wmo/10/codetables/19010.table\
+	bufr/tables/0/wmo/10/codetables/20003.table\
+	bufr/tables/0/wmo/10/codetables/20004.table\
+	bufr/tables/0/wmo/10/codetables/20005.table\
+	bufr/tables/0/wmo/10/codetables/20008.table\
+	bufr/tables/0/wmo/10/codetables/20009.table\
+	bufr/tables/0/wmo/10/codetables/2001.table\
+	bufr/tables/0/wmo/10/codetables/20011.table\
+	bufr/tables/0/wmo/10/codetables/20012.table\
+	bufr/tables/0/wmo/10/codetables/20017.table\
+	bufr/tables/0/wmo/10/codetables/20018.table\
+	bufr/tables/0/wmo/10/codetables/2002.table\
+	bufr/tables/0/wmo/10/codetables/20021.table\
+	bufr/tables/0/wmo/10/codetables/20022.table\
+	bufr/tables/0/wmo/10/codetables/20023.table\
+	bufr/tables/0/wmo/10/codetables/20024.table\
+	bufr/tables/0/wmo/10/codetables/20025.table\
+	bufr/tables/0/wmo/10/codetables/20026.table\
+	bufr/tables/0/wmo/10/codetables/20027.table\
+	bufr/tables/0/wmo/10/codetables/20029.table\
+	bufr/tables/0/wmo/10/codetables/2003.table\
+	bufr/tables/0/wmo/10/codetables/20032.table\
+	bufr/tables/0/wmo/10/codetables/20033.table\
+	bufr/tables/0/wmo/10/codetables/20034.table\
+	bufr/tables/0/wmo/10/codetables/20035.table\
+	bufr/tables/0/wmo/10/codetables/20036.table\
+	bufr/tables/0/wmo/10/codetables/20037.table\
+	bufr/tables/0/wmo/10/codetables/2004.table\
+	bufr/tables/0/wmo/10/codetables/20040.table\
+	bufr/tables/0/wmo/10/codetables/20041.table\
+	bufr/tables/0/wmo/10/codetables/20042.table\
+	bufr/tables/0/wmo/10/codetables/20045.table\
+	bufr/tables/0/wmo/10/codetables/20050.table\
+	bufr/tables/0/wmo/10/codetables/20055.table\
+	bufr/tables/0/wmo/10/codetables/20056.table\
+	bufr/tables/0/wmo/10/codetables/20062.table\
+	bufr/tables/0/wmo/10/codetables/20063.table\
+	bufr/tables/0/wmo/10/codetables/20071.table\
+	bufr/tables/0/wmo/10/codetables/20086.table\
+	bufr/tables/0/wmo/10/codetables/20090.table\
+	bufr/tables/0/wmo/10/codetables/20101.table\
+	bufr/tables/0/wmo/10/codetables/20102.table\
+	bufr/tables/0/wmo/10/codetables/2011.table\
+	bufr/tables/0/wmo/10/codetables/2012.table\
+	bufr/tables/0/wmo/10/codetables/2013.table\
+	bufr/tables/0/wmo/10/codetables/2014.table\
+	bufr/tables/0/wmo/10/codetables/2015.table\
+	bufr/tables/0/wmo/10/codetables/2016.table\
+	bufr/tables/0/wmo/10/codetables/2019.table\
+	bufr/tables/0/wmo/10/codetables/2020.table\
+	bufr/tables/0/wmo/10/codetables/2021.table\
+	bufr/tables/0/wmo/10/codetables/2022.table\
+	bufr/tables/0/wmo/10/codetables/2023.table\
+	bufr/tables/0/wmo/10/codetables/2024.table\
+	bufr/tables/0/wmo/10/codetables/2025.table\
+	bufr/tables/0/wmo/10/codetables/2030.table\
+	bufr/tables/0/wmo/10/codetables/2031.table\
+	bufr/tables/0/wmo/10/codetables/2032.table\
+	bufr/tables/0/wmo/10/codetables/2033.table\
+	bufr/tables/0/wmo/10/codetables/2034.table\
+	bufr/tables/0/wmo/10/codetables/2036.table\
+	bufr/tables/0/wmo/10/codetables/2037.table\
+	bufr/tables/0/wmo/10/codetables/2038.table\
+	bufr/tables/0/wmo/10/codetables/2039.table\
+	bufr/tables/0/wmo/10/codetables/2040.table\
+	bufr/tables/0/wmo/10/codetables/2041.table\
+	bufr/tables/0/wmo/10/codetables/2044.table\
+	bufr/tables/0/wmo/10/codetables/2045.table\
+	bufr/tables/0/wmo/10/codetables/2046.table\
+	bufr/tables/0/wmo/10/codetables/2048.table\
+	bufr/tables/0/wmo/10/codetables/2049.table\
+	bufr/tables/0/wmo/10/codetables/2050.table\
+	bufr/tables/0/wmo/10/codetables/2051.table\
+	bufr/tables/0/wmo/10/codetables/2052.table\
+	bufr/tables/0/wmo/10/codetables/2053.table\
+	bufr/tables/0/wmo/10/codetables/2054.table\
+	bufr/tables/0/wmo/10/codetables/2055.table\
+	bufr/tables/0/wmo/10/codetables/2056.table\
+	bufr/tables/0/wmo/10/codetables/2057.table\
+	bufr/tables/0/wmo/10/codetables/2058.table\
+	bufr/tables/0/wmo/10/codetables/2059.table\
+	bufr/tables/0/wmo/10/codetables/2060.table\
+	bufr/tables/0/wmo/10/codetables/2061.table\
+	bufr/tables/0/wmo/10/codetables/2062.table\
+	bufr/tables/0/wmo/10/codetables/2064.table\
+	bufr/tables/0/wmo/10/codetables/2066.table\
+	bufr/tables/0/wmo/10/codetables/2070.table\
+	bufr/tables/0/wmo/10/codetables/2080.table\
+	bufr/tables/0/wmo/10/codetables/2081.table\
+	bufr/tables/0/wmo/10/codetables/2083.table\
+	bufr/tables/0/wmo/10/codetables/2084.table\
+	bufr/tables/0/wmo/10/codetables/2095.table\
+	bufr/tables/0/wmo/10/codetables/2096.table\
+	bufr/tables/0/wmo/10/codetables/2097.table\
+	bufr/tables/0/wmo/10/codetables/2098.table\
+	bufr/tables/0/wmo/10/codetables/2101.table\
+	bufr/tables/0/wmo/10/codetables/2103.table\
+	bufr/tables/0/wmo/10/codetables/2104.table\
+	bufr/tables/0/wmo/10/codetables/21066.table\
+	bufr/tables/0/wmo/10/codetables/21067.table\
+	bufr/tables/0/wmo/10/codetables/21068.table\
+	bufr/tables/0/wmo/10/codetables/21069.table\
+	bufr/tables/0/wmo/10/codetables/21070.table\
+	bufr/tables/0/wmo/10/codetables/21072.table\
+	bufr/tables/0/wmo/10/codetables/21073.table\
+	bufr/tables/0/wmo/10/codetables/21076.table\
+	bufr/tables/0/wmo/10/codetables/21109.table\
+	bufr/tables/0/wmo/10/codetables/21115.table\
+	bufr/tables/0/wmo/10/codetables/21116.table\
+	bufr/tables/0/wmo/10/codetables/21119.table\
+	bufr/tables/0/wmo/10/codetables/21144.table\
+	bufr/tables/0/wmo/10/codetables/2115.table\
+	bufr/tables/0/wmo/10/codetables/21150.table\
+	bufr/tables/0/wmo/10/codetables/21155.table\
+	bufr/tables/0/wmo/10/codetables/21158.table\
+	bufr/tables/0/wmo/10/codetables/21159.table\
+	bufr/tables/0/wmo/10/codetables/21169.table\
+	bufr/tables/0/wmo/10/codetables/2119.table\
+	bufr/tables/0/wmo/10/codetables/2131.table\
+	bufr/tables/0/wmo/10/codetables/2143.table\
+	bufr/tables/0/wmo/10/codetables/2144.table\
+	bufr/tables/0/wmo/10/codetables/2145.table\
+	bufr/tables/0/wmo/10/codetables/2146.table\
+	bufr/tables/0/wmo/10/codetables/2148.table\
+	bufr/tables/0/wmo/10/codetables/2149.table\
+	bufr/tables/0/wmo/10/codetables/2150.table\
+	bufr/tables/0/wmo/10/codetables/2151.table\
+	bufr/tables/0/wmo/10/codetables/2152.table\
+	bufr/tables/0/wmo/10/codetables/2158.table\
+	bufr/tables/0/wmo/10/codetables/2159.table\
+	bufr/tables/0/wmo/10/codetables/2163.table\
+	bufr/tables/0/wmo/10/codetables/2164.table\
+	bufr/tables/0/wmo/10/codetables/2166.table\
+	bufr/tables/0/wmo/10/codetables/2167.table\
+	bufr/tables/0/wmo/10/codetables/2169.table\
+	bufr/tables/0/wmo/10/codetables/2172.table\
+	bufr/tables/0/wmo/10/codetables/2175.table\
+	bufr/tables/0/wmo/10/codetables/2176.table\
+	bufr/tables/0/wmo/10/codetables/2177.table\
+	bufr/tables/0/wmo/10/codetables/2178.table\
+	bufr/tables/0/wmo/10/codetables/2179.table\
+	bufr/tables/0/wmo/10/codetables/2180.table\
+	bufr/tables/0/wmo/10/codetables/2181.table\
+	bufr/tables/0/wmo/10/codetables/2182.table\
+	bufr/tables/0/wmo/10/codetables/2183.table\
+	bufr/tables/0/wmo/10/codetables/2184.table\
+	bufr/tables/0/wmo/10/codetables/2185.table\
+	bufr/tables/0/wmo/10/codetables/2186.table\
+	bufr/tables/0/wmo/10/codetables/2187.table\
+	bufr/tables/0/wmo/10/codetables/2188.table\
+	bufr/tables/0/wmo/10/codetables/2189.table\
+	bufr/tables/0/wmo/10/codetables/22056.table\
+	bufr/tables/0/wmo/10/codetables/22060.table\
+	bufr/tables/0/wmo/10/codetables/22061.table\
+	bufr/tables/0/wmo/10/codetables/22067.table\
+	bufr/tables/0/wmo/10/codetables/22068.table\
+	bufr/tables/0/wmo/10/codetables/22120.table\
+	bufr/tables/0/wmo/10/codetables/22121.table\
+	bufr/tables/0/wmo/10/codetables/22122.table\
+	bufr/tables/0/wmo/10/codetables/22123.table\
+	bufr/tables/0/wmo/10/codetables/23001.table\
+	bufr/tables/0/wmo/10/codetables/23002.table\
+	bufr/tables/0/wmo/10/codetables/23003.table\
+	bufr/tables/0/wmo/10/codetables/23004.table\
+	bufr/tables/0/wmo/10/codetables/23005.table\
+	bufr/tables/0/wmo/10/codetables/23006.table\
+	bufr/tables/0/wmo/10/codetables/23007.table\
+	bufr/tables/0/wmo/10/codetables/23008.table\
+	bufr/tables/0/wmo/10/codetables/23009.table\
+	bufr/tables/0/wmo/10/codetables/23016.table\
+	bufr/tables/0/wmo/10/codetables/23018.table\
+	bufr/tables/0/wmo/10/codetables/23031.table\
+	bufr/tables/0/wmo/10/codetables/23032.table\
+	bufr/tables/0/wmo/10/codetables/24003.table\
+	bufr/tables/0/wmo/10/codetables/25004.table\
+	bufr/tables/0/wmo/10/codetables/25005.table\
+	bufr/tables/0/wmo/10/codetables/25006.table\
+	bufr/tables/0/wmo/10/codetables/25009.table\
+	bufr/tables/0/wmo/10/codetables/25010.table\
+	bufr/tables/0/wmo/10/codetables/25011.table\
+	bufr/tables/0/wmo/10/codetables/25012.table\
+	bufr/tables/0/wmo/10/codetables/25013.table\
+	bufr/tables/0/wmo/10/codetables/25015.table\
+	bufr/tables/0/wmo/10/codetables/25017.table\
+	bufr/tables/0/wmo/10/codetables/25020.table\
+	bufr/tables/0/wmo/10/codetables/25021.table\
+	bufr/tables/0/wmo/10/codetables/25030.table\
+	bufr/tables/0/wmo/10/codetables/25032.table\
+	bufr/tables/0/wmo/10/codetables/25033.table\
+	bufr/tables/0/wmo/10/codetables/25034.table\
+	bufr/tables/0/wmo/10/codetables/25036.table\
+	bufr/tables/0/wmo/10/codetables/25040.table\
+	bufr/tables/0/wmo/10/codetables/25041.table\
+	bufr/tables/0/wmo/10/codetables/25042.table\
+	bufr/tables/0/wmo/10/codetables/25045.table\
+	bufr/tables/0/wmo/10/codetables/25046.table\
+	bufr/tables/0/wmo/10/codetables/25047.table\
+	bufr/tables/0/wmo/10/codetables/25048.table\
+	bufr/tables/0/wmo/10/codetables/25049.table\
+	bufr/tables/0/wmo/10/codetables/25051.table\
+	bufr/tables/0/wmo/10/codetables/25053.table\
+	bufr/tables/0/wmo/10/codetables/25069.table\
+	bufr/tables/0/wmo/10/codetables/25086.table\
+	bufr/tables/0/wmo/10/codetables/25093.table\
+	bufr/tables/0/wmo/10/codetables/25095.table\
+	bufr/tables/0/wmo/10/codetables/25096.table\
+	bufr/tables/0/wmo/10/codetables/25097.table\
+	bufr/tables/0/wmo/10/codetables/25098.table\
+	bufr/tables/0/wmo/10/codetables/25099.table\
+	bufr/tables/0/wmo/10/codetables/25110.table\
+	bufr/tables/0/wmo/10/codetables/25120.table\
+	bufr/tables/0/wmo/10/codetables/25122.table\
+	bufr/tables/0/wmo/10/codetables/25123.table\
+	bufr/tables/0/wmo/10/codetables/25124.table\
+	bufr/tables/0/wmo/10/codetables/26010.table\
+	bufr/tables/0/wmo/10/codetables/29001.table\
+	bufr/tables/0/wmo/10/codetables/29002.table\
+	bufr/tables/0/wmo/10/codetables/30031.table\
+	bufr/tables/0/wmo/10/codetables/30032.table\
+	bufr/tables/0/wmo/10/codetables/31021.table\
+	bufr/tables/0/wmo/10/codetables/31031.table\
+	bufr/tables/0/wmo/10/codetables/33002.table\
+	bufr/tables/0/wmo/10/codetables/33003.table\
+	bufr/tables/0/wmo/10/codetables/33005.table\
+	bufr/tables/0/wmo/10/codetables/33006.table\
+	bufr/tables/0/wmo/10/codetables/33015.table\
+	bufr/tables/0/wmo/10/codetables/33020.table\
+	bufr/tables/0/wmo/10/codetables/33021.table\
+	bufr/tables/0/wmo/10/codetables/33022.table\
+	bufr/tables/0/wmo/10/codetables/33023.table\
+	bufr/tables/0/wmo/10/codetables/33024.table\
+	bufr/tables/0/wmo/10/codetables/33025.table\
+	bufr/tables/0/wmo/10/codetables/33026.table\
+	bufr/tables/0/wmo/10/codetables/33027.table\
+	bufr/tables/0/wmo/10/codetables/33028.table\
+	bufr/tables/0/wmo/10/codetables/33030.table\
+	bufr/tables/0/wmo/10/codetables/33031.table\
+	bufr/tables/0/wmo/10/codetables/33032.table\
+	bufr/tables/0/wmo/10/codetables/33033.table\
+	bufr/tables/0/wmo/10/codetables/33035.table\
+	bufr/tables/0/wmo/10/codetables/33037.table\
+	bufr/tables/0/wmo/10/codetables/33038.table\
+	bufr/tables/0/wmo/10/codetables/33039.table\
+	bufr/tables/0/wmo/10/codetables/33041.table\
+	bufr/tables/0/wmo/10/codetables/33042.table\
+	bufr/tables/0/wmo/10/codetables/33043.table\
+	bufr/tables/0/wmo/10/codetables/33044.table\
+	bufr/tables/0/wmo/10/codetables/33047.table\
+	bufr/tables/0/wmo/10/codetables/33048.table\
+	bufr/tables/0/wmo/10/codetables/33049.table\
+	bufr/tables/0/wmo/10/codetables/33050.table\
+	bufr/tables/0/wmo/10/codetables/33052.table\
+	bufr/tables/0/wmo/10/codetables/33053.table\
+	bufr/tables/0/wmo/10/codetables/33060.table\
+	bufr/tables/0/wmo/10/codetables/35000.table\
+	bufr/tables/0/wmo/10/codetables/35001.table\
+	bufr/tables/0/wmo/10/codetables/35030.table\
+	bufr/tables/0/wmo/10/codetables/35031.table\
+	bufr/tables/0/wmo/10/codetables/35032.table\
+	bufr/tables/0/wmo/10/codetables/35033.table\
+	bufr/tables/0/wmo/10/codetables/35034.table\
+	bufr/tables/0/wmo/10/codetables/40011.table\
+	bufr/tables/0/wmo/10/codetables/40012.table\
+	bufr/tables/0/wmo/10/codetables/40013.table\
+	bufr/tables/0/wmo/10/codetables/4059.table\
+	bufr/tables/0/wmo/10/codetables/8001.table\
+	bufr/tables/0/wmo/10/codetables/8002.table\
+	bufr/tables/0/wmo/10/codetables/8003.table\
+	bufr/tables/0/wmo/10/codetables/8004.table\
+	bufr/tables/0/wmo/10/codetables/8005.table\
+	bufr/tables/0/wmo/10/codetables/8006.table\
+	bufr/tables/0/wmo/10/codetables/8007.table\
+	bufr/tables/0/wmo/10/codetables/8008.table\
+	bufr/tables/0/wmo/10/codetables/8009.table\
+	bufr/tables/0/wmo/10/codetables/8010.table\
+	bufr/tables/0/wmo/10/codetables/8011.table\
+	bufr/tables/0/wmo/10/codetables/8012.table\
+	bufr/tables/0/wmo/10/codetables/8013.table\
+	bufr/tables/0/wmo/10/codetables/8014.table\
+	bufr/tables/0/wmo/10/codetables/8016.table\
+	bufr/tables/0/wmo/10/codetables/8017.table\
+	bufr/tables/0/wmo/10/codetables/8018.table\
+	bufr/tables/0/wmo/10/codetables/8021.table\
+	bufr/tables/0/wmo/10/codetables/8023.table\
+	bufr/tables/0/wmo/10/codetables/8024.table\
+	bufr/tables/0/wmo/10/codetables/8025.table\
+	bufr/tables/0/wmo/10/codetables/8026.table\
+	bufr/tables/0/wmo/10/codetables/8029.table\
+	bufr/tables/0/wmo/10/codetables/8033.table\
+	bufr/tables/0/wmo/10/codetables/8035.table\
+	bufr/tables/0/wmo/10/codetables/8036.table\
+	bufr/tables/0/wmo/10/codetables/8039.table\
+	bufr/tables/0/wmo/10/codetables/8040.table\
+	bufr/tables/0/wmo/10/codetables/8041.table\
+	bufr/tables/0/wmo/10/codetables/8042.table\
+	bufr/tables/0/wmo/10/codetables/8043.table\
+	bufr/tables/0/wmo/10/codetables/8050.table\
+	bufr/tables/0/wmo/10/codetables/8051.table\
+	bufr/tables/0/wmo/10/codetables/8052.table\
+	bufr/tables/0/wmo/10/codetables/8053.table\
+	bufr/tables/0/wmo/10/codetables/8054.table\
+	bufr/tables/0/wmo/10/codetables/8060.table\
+	bufr/tables/0/wmo/10/codetables/8065.table\
+	bufr/tables/0/wmo/10/codetables/8066.table\
+	bufr/tables/0/wmo/10/codetables/8070.table\
+	bufr/tables/0/wmo/10/codetables/8072.table\
+	bufr/tables/0/wmo/10/codetables/8074.table\
+	bufr/tables/0/wmo/10/codetables/8075.table\
+	bufr/tables/0/wmo/10/codetables/8076.table\
+	bufr/tables/0/wmo/10/codetables/8077.table\
+	bufr/tables/0/wmo/10/codetables/8079.table\
+	bufr/tables/0/wmo/10/codetables/8080.table\
+	bufr/tables/0/wmo/10/codetables/8081.table\
+	bufr/tables/0/wmo/10/codetables/8082.table\
+	bufr/tables/0/wmo/10/codetables/8083.table\
+	bufr/tables/0/wmo/10/codetables/8085.table
+
+definitionsbufr_tables_0_wmo_11dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/11
+dist_definitionsbufr_tables_0_wmo_11_DATA = \
+	bufr/tables/0/wmo/11/element.table\
+	bufr/tables/0/wmo/11/sequence.def
+
+definitionsbufr_tables_0_wmo_11_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/11/codetables
+dist_definitionsbufr_tables_0_wmo_11_codetables_DATA = \
+	bufr/tables/0/wmo/11/codetables/1003.table\
+	bufr/tables/0/wmo/11/codetables/10063.table\
+	bufr/tables/0/wmo/11/codetables/10064.table\
+	bufr/tables/0/wmo/11/codetables/1007.table\
+	bufr/tables/0/wmo/11/codetables/1031.table\
+	bufr/tables/0/wmo/11/codetables/1032.table\
+	bufr/tables/0/wmo/11/codetables/1033.table\
+	bufr/tables/0/wmo/11/codetables/1035.table\
+	bufr/tables/0/wmo/11/codetables/1090.table\
+	bufr/tables/0/wmo/11/codetables/1092.table\
+	bufr/tables/0/wmo/11/codetables/11031.table\
+	bufr/tables/0/wmo/11/codetables/11037.table\
+	bufr/tables/0/wmo/11/codetables/11038.table\
+	bufr/tables/0/wmo/11/codetables/11039.table\
+	bufr/tables/0/wmo/11/codetables/13038.table\
+	bufr/tables/0/wmo/11/codetables/13039.table\
+	bufr/tables/0/wmo/11/codetables/13040.table\
+	bufr/tables/0/wmo/11/codetables/13041.table\
+	bufr/tables/0/wmo/11/codetables/13051.table\
+	bufr/tables/0/wmo/11/codetables/13056.table\
+	bufr/tables/0/wmo/11/codetables/13057.table\
+	bufr/tables/0/wmo/11/codetables/15025.table\
+	bufr/tables/0/wmo/11/codetables/19001.table\
+	bufr/tables/0/wmo/11/codetables/19008.table\
+	bufr/tables/0/wmo/11/codetables/19010.table\
+	bufr/tables/0/wmo/11/codetables/20003.table\
+	bufr/tables/0/wmo/11/codetables/20004.table\
+	bufr/tables/0/wmo/11/codetables/20005.table\
+	bufr/tables/0/wmo/11/codetables/20008.table\
+	bufr/tables/0/wmo/11/codetables/20009.table\
+	bufr/tables/0/wmo/11/codetables/2001.table\
+	bufr/tables/0/wmo/11/codetables/20011.table\
+	bufr/tables/0/wmo/11/codetables/20012.table\
+	bufr/tables/0/wmo/11/codetables/20017.table\
+	bufr/tables/0/wmo/11/codetables/20018.table\
+	bufr/tables/0/wmo/11/codetables/2002.table\
+	bufr/tables/0/wmo/11/codetables/20021.table\
+	bufr/tables/0/wmo/11/codetables/20022.table\
+	bufr/tables/0/wmo/11/codetables/20023.table\
+	bufr/tables/0/wmo/11/codetables/20024.table\
+	bufr/tables/0/wmo/11/codetables/20025.table\
+	bufr/tables/0/wmo/11/codetables/20026.table\
+	bufr/tables/0/wmo/11/codetables/20027.table\
+	bufr/tables/0/wmo/11/codetables/20029.table\
+	bufr/tables/0/wmo/11/codetables/2003.table\
+	bufr/tables/0/wmo/11/codetables/20032.table\
+	bufr/tables/0/wmo/11/codetables/20033.table\
+	bufr/tables/0/wmo/11/codetables/20034.table\
+	bufr/tables/0/wmo/11/codetables/20035.table\
+	bufr/tables/0/wmo/11/codetables/20036.table\
+	bufr/tables/0/wmo/11/codetables/20037.table\
+	bufr/tables/0/wmo/11/codetables/2004.table\
+	bufr/tables/0/wmo/11/codetables/20040.table\
+	bufr/tables/0/wmo/11/codetables/20041.table\
+	bufr/tables/0/wmo/11/codetables/20042.table\
+	bufr/tables/0/wmo/11/codetables/20045.table\
+	bufr/tables/0/wmo/11/codetables/20050.table\
+	bufr/tables/0/wmo/11/codetables/20055.table\
+	bufr/tables/0/wmo/11/codetables/20056.table\
+	bufr/tables/0/wmo/11/codetables/20062.table\
+	bufr/tables/0/wmo/11/codetables/20063.table\
+	bufr/tables/0/wmo/11/codetables/20071.table\
+	bufr/tables/0/wmo/11/codetables/20086.table\
+	bufr/tables/0/wmo/11/codetables/20090.table\
+	bufr/tables/0/wmo/11/codetables/20101.table\
+	bufr/tables/0/wmo/11/codetables/20102.table\
+	bufr/tables/0/wmo/11/codetables/2011.table\
+	bufr/tables/0/wmo/11/codetables/2012.table\
+	bufr/tables/0/wmo/11/codetables/2013.table\
+	bufr/tables/0/wmo/11/codetables/2014.table\
+	bufr/tables/0/wmo/11/codetables/2015.table\
+	bufr/tables/0/wmo/11/codetables/2016.table\
+	bufr/tables/0/wmo/11/codetables/2019.table\
+	bufr/tables/0/wmo/11/codetables/2020.table\
+	bufr/tables/0/wmo/11/codetables/2021.table\
+	bufr/tables/0/wmo/11/codetables/2022.table\
+	bufr/tables/0/wmo/11/codetables/2023.table\
+	bufr/tables/0/wmo/11/codetables/2024.table\
+	bufr/tables/0/wmo/11/codetables/2025.table\
+	bufr/tables/0/wmo/11/codetables/2030.table\
+	bufr/tables/0/wmo/11/codetables/2031.table\
+	bufr/tables/0/wmo/11/codetables/2032.table\
+	bufr/tables/0/wmo/11/codetables/2033.table\
+	bufr/tables/0/wmo/11/codetables/2034.table\
+	bufr/tables/0/wmo/11/codetables/2036.table\
+	bufr/tables/0/wmo/11/codetables/2037.table\
+	bufr/tables/0/wmo/11/codetables/2038.table\
+	bufr/tables/0/wmo/11/codetables/2039.table\
+	bufr/tables/0/wmo/11/codetables/2040.table\
+	bufr/tables/0/wmo/11/codetables/2041.table\
+	bufr/tables/0/wmo/11/codetables/2044.table\
+	bufr/tables/0/wmo/11/codetables/2045.table\
+	bufr/tables/0/wmo/11/codetables/2046.table\
+	bufr/tables/0/wmo/11/codetables/2048.table\
+	bufr/tables/0/wmo/11/codetables/2049.table\
+	bufr/tables/0/wmo/11/codetables/2050.table\
+	bufr/tables/0/wmo/11/codetables/2051.table\
+	bufr/tables/0/wmo/11/codetables/2052.table\
+	bufr/tables/0/wmo/11/codetables/2053.table\
+	bufr/tables/0/wmo/11/codetables/2054.table\
+	bufr/tables/0/wmo/11/codetables/2055.table\
+	bufr/tables/0/wmo/11/codetables/2056.table\
+	bufr/tables/0/wmo/11/codetables/2057.table\
+	bufr/tables/0/wmo/11/codetables/2058.table\
+	bufr/tables/0/wmo/11/codetables/2059.table\
+	bufr/tables/0/wmo/11/codetables/2060.table\
+	bufr/tables/0/wmo/11/codetables/2061.table\
+	bufr/tables/0/wmo/11/codetables/2062.table\
+	bufr/tables/0/wmo/11/codetables/2064.table\
+	bufr/tables/0/wmo/11/codetables/2066.table\
+	bufr/tables/0/wmo/11/codetables/2070.table\
+	bufr/tables/0/wmo/11/codetables/2080.table\
+	bufr/tables/0/wmo/11/codetables/2081.table\
+	bufr/tables/0/wmo/11/codetables/2083.table\
+	bufr/tables/0/wmo/11/codetables/2084.table\
+	bufr/tables/0/wmo/11/codetables/2095.table\
+	bufr/tables/0/wmo/11/codetables/2096.table\
+	bufr/tables/0/wmo/11/codetables/2097.table\
+	bufr/tables/0/wmo/11/codetables/2098.table\
+	bufr/tables/0/wmo/11/codetables/2101.table\
+	bufr/tables/0/wmo/11/codetables/2103.table\
+	bufr/tables/0/wmo/11/codetables/2104.table\
+	bufr/tables/0/wmo/11/codetables/21066.table\
+	bufr/tables/0/wmo/11/codetables/21067.table\
+	bufr/tables/0/wmo/11/codetables/21068.table\
+	bufr/tables/0/wmo/11/codetables/21069.table\
+	bufr/tables/0/wmo/11/codetables/21070.table\
+	bufr/tables/0/wmo/11/codetables/21072.table\
+	bufr/tables/0/wmo/11/codetables/21073.table\
+	bufr/tables/0/wmo/11/codetables/21076.table\
+	bufr/tables/0/wmo/11/codetables/21109.table\
+	bufr/tables/0/wmo/11/codetables/21115.table\
+	bufr/tables/0/wmo/11/codetables/21116.table\
+	bufr/tables/0/wmo/11/codetables/21119.table\
+	bufr/tables/0/wmo/11/codetables/21144.table\
+	bufr/tables/0/wmo/11/codetables/2115.table\
+	bufr/tables/0/wmo/11/codetables/21150.table\
+	bufr/tables/0/wmo/11/codetables/21155.table\
+	bufr/tables/0/wmo/11/codetables/21158.table\
+	bufr/tables/0/wmo/11/codetables/21159.table\
+	bufr/tables/0/wmo/11/codetables/21169.table\
+	bufr/tables/0/wmo/11/codetables/2119.table\
+	bufr/tables/0/wmo/11/codetables/2131.table\
+	bufr/tables/0/wmo/11/codetables/2143.table\
+	bufr/tables/0/wmo/11/codetables/2144.table\
+	bufr/tables/0/wmo/11/codetables/2145.table\
+	bufr/tables/0/wmo/11/codetables/2146.table\
+	bufr/tables/0/wmo/11/codetables/2148.table\
+	bufr/tables/0/wmo/11/codetables/2149.table\
+	bufr/tables/0/wmo/11/codetables/2150.table\
+	bufr/tables/0/wmo/11/codetables/2151.table\
+	bufr/tables/0/wmo/11/codetables/2152.table\
+	bufr/tables/0/wmo/11/codetables/2158.table\
+	bufr/tables/0/wmo/11/codetables/2159.table\
+	bufr/tables/0/wmo/11/codetables/2163.table\
+	bufr/tables/0/wmo/11/codetables/2164.table\
+	bufr/tables/0/wmo/11/codetables/2166.table\
+	bufr/tables/0/wmo/11/codetables/2167.table\
+	bufr/tables/0/wmo/11/codetables/2169.table\
+	bufr/tables/0/wmo/11/codetables/2172.table\
+	bufr/tables/0/wmo/11/codetables/2175.table\
+	bufr/tables/0/wmo/11/codetables/2176.table\
+	bufr/tables/0/wmo/11/codetables/2177.table\
+	bufr/tables/0/wmo/11/codetables/2178.table\
+	bufr/tables/0/wmo/11/codetables/2179.table\
+	bufr/tables/0/wmo/11/codetables/2180.table\
+	bufr/tables/0/wmo/11/codetables/2181.table\
+	bufr/tables/0/wmo/11/codetables/2182.table\
+	bufr/tables/0/wmo/11/codetables/2183.table\
+	bufr/tables/0/wmo/11/codetables/2184.table\
+	bufr/tables/0/wmo/11/codetables/2185.table\
+	bufr/tables/0/wmo/11/codetables/2186.table\
+	bufr/tables/0/wmo/11/codetables/2187.table\
+	bufr/tables/0/wmo/11/codetables/2188.table\
+	bufr/tables/0/wmo/11/codetables/2189.table\
+	bufr/tables/0/wmo/11/codetables/22056.table\
+	bufr/tables/0/wmo/11/codetables/22060.table\
+	bufr/tables/0/wmo/11/codetables/22061.table\
+	bufr/tables/0/wmo/11/codetables/22067.table\
+	bufr/tables/0/wmo/11/codetables/22068.table\
+	bufr/tables/0/wmo/11/codetables/22120.table\
+	bufr/tables/0/wmo/11/codetables/22121.table\
+	bufr/tables/0/wmo/11/codetables/22122.table\
+	bufr/tables/0/wmo/11/codetables/22123.table\
+	bufr/tables/0/wmo/11/codetables/23001.table\
+	bufr/tables/0/wmo/11/codetables/23002.table\
+	bufr/tables/0/wmo/11/codetables/23003.table\
+	bufr/tables/0/wmo/11/codetables/23004.table\
+	bufr/tables/0/wmo/11/codetables/23005.table\
+	bufr/tables/0/wmo/11/codetables/23006.table\
+	bufr/tables/0/wmo/11/codetables/23007.table\
+	bufr/tables/0/wmo/11/codetables/23008.table\
+	bufr/tables/0/wmo/11/codetables/23009.table\
+	bufr/tables/0/wmo/11/codetables/23016.table\
+	bufr/tables/0/wmo/11/codetables/23018.table\
+	bufr/tables/0/wmo/11/codetables/23031.table\
+	bufr/tables/0/wmo/11/codetables/23032.table\
+	bufr/tables/0/wmo/11/codetables/24003.table\
+	bufr/tables/0/wmo/11/codetables/25004.table\
+	bufr/tables/0/wmo/11/codetables/25005.table\
+	bufr/tables/0/wmo/11/codetables/25006.table\
+	bufr/tables/0/wmo/11/codetables/25009.table\
+	bufr/tables/0/wmo/11/codetables/25010.table\
+	bufr/tables/0/wmo/11/codetables/25011.table\
+	bufr/tables/0/wmo/11/codetables/25012.table\
+	bufr/tables/0/wmo/11/codetables/25013.table\
+	bufr/tables/0/wmo/11/codetables/25015.table\
+	bufr/tables/0/wmo/11/codetables/25017.table\
+	bufr/tables/0/wmo/11/codetables/25020.table\
+	bufr/tables/0/wmo/11/codetables/25021.table\
+	bufr/tables/0/wmo/11/codetables/25030.table\
+	bufr/tables/0/wmo/11/codetables/25032.table\
+	bufr/tables/0/wmo/11/codetables/25033.table\
+	bufr/tables/0/wmo/11/codetables/25034.table\
+	bufr/tables/0/wmo/11/codetables/25036.table\
+	bufr/tables/0/wmo/11/codetables/25040.table\
+	bufr/tables/0/wmo/11/codetables/25041.table\
+	bufr/tables/0/wmo/11/codetables/25042.table\
+	bufr/tables/0/wmo/11/codetables/25045.table\
+	bufr/tables/0/wmo/11/codetables/25046.table\
+	bufr/tables/0/wmo/11/codetables/25047.table\
+	bufr/tables/0/wmo/11/codetables/25048.table\
+	bufr/tables/0/wmo/11/codetables/25049.table\
+	bufr/tables/0/wmo/11/codetables/25051.table\
+	bufr/tables/0/wmo/11/codetables/25053.table\
+	bufr/tables/0/wmo/11/codetables/25069.table\
+	bufr/tables/0/wmo/11/codetables/25086.table\
+	bufr/tables/0/wmo/11/codetables/25093.table\
+	bufr/tables/0/wmo/11/codetables/25095.table\
+	bufr/tables/0/wmo/11/codetables/25096.table\
+	bufr/tables/0/wmo/11/codetables/25097.table\
+	bufr/tables/0/wmo/11/codetables/25098.table\
+	bufr/tables/0/wmo/11/codetables/25099.table\
+	bufr/tables/0/wmo/11/codetables/25110.table\
+	bufr/tables/0/wmo/11/codetables/25120.table\
+	bufr/tables/0/wmo/11/codetables/25122.table\
+	bufr/tables/0/wmo/11/codetables/25123.table\
+	bufr/tables/0/wmo/11/codetables/25124.table\
+	bufr/tables/0/wmo/11/codetables/26010.table\
+	bufr/tables/0/wmo/11/codetables/29001.table\
+	bufr/tables/0/wmo/11/codetables/29002.table\
+	bufr/tables/0/wmo/11/codetables/30031.table\
+	bufr/tables/0/wmo/11/codetables/30032.table\
+	bufr/tables/0/wmo/11/codetables/31021.table\
+	bufr/tables/0/wmo/11/codetables/31031.table\
+	bufr/tables/0/wmo/11/codetables/33002.table\
+	bufr/tables/0/wmo/11/codetables/33003.table\
+	bufr/tables/0/wmo/11/codetables/33005.table\
+	bufr/tables/0/wmo/11/codetables/33006.table\
+	bufr/tables/0/wmo/11/codetables/33015.table\
+	bufr/tables/0/wmo/11/codetables/33020.table\
+	bufr/tables/0/wmo/11/codetables/33021.table\
+	bufr/tables/0/wmo/11/codetables/33022.table\
+	bufr/tables/0/wmo/11/codetables/33023.table\
+	bufr/tables/0/wmo/11/codetables/33024.table\
+	bufr/tables/0/wmo/11/codetables/33025.table\
+	bufr/tables/0/wmo/11/codetables/33026.table\
+	bufr/tables/0/wmo/11/codetables/33027.table\
+	bufr/tables/0/wmo/11/codetables/33028.table\
+	bufr/tables/0/wmo/11/codetables/33030.table\
+	bufr/tables/0/wmo/11/codetables/33031.table\
+	bufr/tables/0/wmo/11/codetables/33032.table\
+	bufr/tables/0/wmo/11/codetables/33033.table\
+	bufr/tables/0/wmo/11/codetables/33035.table\
+	bufr/tables/0/wmo/11/codetables/33037.table\
+	bufr/tables/0/wmo/11/codetables/33038.table\
+	bufr/tables/0/wmo/11/codetables/33039.table\
+	bufr/tables/0/wmo/11/codetables/33041.table\
+	bufr/tables/0/wmo/11/codetables/33042.table\
+	bufr/tables/0/wmo/11/codetables/33043.table\
+	bufr/tables/0/wmo/11/codetables/33044.table\
+	bufr/tables/0/wmo/11/codetables/33047.table\
+	bufr/tables/0/wmo/11/codetables/33048.table\
+	bufr/tables/0/wmo/11/codetables/33049.table\
+	bufr/tables/0/wmo/11/codetables/33050.table\
+	bufr/tables/0/wmo/11/codetables/33052.table\
+	bufr/tables/0/wmo/11/codetables/33053.table\
+	bufr/tables/0/wmo/11/codetables/33060.table\
+	bufr/tables/0/wmo/11/codetables/35000.table\
+	bufr/tables/0/wmo/11/codetables/35001.table\
+	bufr/tables/0/wmo/11/codetables/35030.table\
+	bufr/tables/0/wmo/11/codetables/35031.table\
+	bufr/tables/0/wmo/11/codetables/35032.table\
+	bufr/tables/0/wmo/11/codetables/35033.table\
+	bufr/tables/0/wmo/11/codetables/35034.table\
+	bufr/tables/0/wmo/11/codetables/40011.table\
+	bufr/tables/0/wmo/11/codetables/40012.table\
+	bufr/tables/0/wmo/11/codetables/40013.table\
+	bufr/tables/0/wmo/11/codetables/4059.table\
+	bufr/tables/0/wmo/11/codetables/8001.table\
+	bufr/tables/0/wmo/11/codetables/8002.table\
+	bufr/tables/0/wmo/11/codetables/8003.table\
+	bufr/tables/0/wmo/11/codetables/8004.table\
+	bufr/tables/0/wmo/11/codetables/8005.table\
+	bufr/tables/0/wmo/11/codetables/8006.table\
+	bufr/tables/0/wmo/11/codetables/8007.table\
+	bufr/tables/0/wmo/11/codetables/8008.table\
+	bufr/tables/0/wmo/11/codetables/8009.table\
+	bufr/tables/0/wmo/11/codetables/8010.table\
+	bufr/tables/0/wmo/11/codetables/8011.table\
+	bufr/tables/0/wmo/11/codetables/8012.table\
+	bufr/tables/0/wmo/11/codetables/8013.table\
+	bufr/tables/0/wmo/11/codetables/8014.table\
+	bufr/tables/0/wmo/11/codetables/8016.table\
+	bufr/tables/0/wmo/11/codetables/8017.table\
+	bufr/tables/0/wmo/11/codetables/8018.table\
+	bufr/tables/0/wmo/11/codetables/8021.table\
+	bufr/tables/0/wmo/11/codetables/8023.table\
+	bufr/tables/0/wmo/11/codetables/8024.table\
+	bufr/tables/0/wmo/11/codetables/8025.table\
+	bufr/tables/0/wmo/11/codetables/8026.table\
+	bufr/tables/0/wmo/11/codetables/8029.table\
+	bufr/tables/0/wmo/11/codetables/8033.table\
+	bufr/tables/0/wmo/11/codetables/8035.table\
+	bufr/tables/0/wmo/11/codetables/8036.table\
+	bufr/tables/0/wmo/11/codetables/8039.table\
+	bufr/tables/0/wmo/11/codetables/8040.table\
+	bufr/tables/0/wmo/11/codetables/8041.table\
+	bufr/tables/0/wmo/11/codetables/8042.table\
+	bufr/tables/0/wmo/11/codetables/8043.table\
+	bufr/tables/0/wmo/11/codetables/8050.table\
+	bufr/tables/0/wmo/11/codetables/8051.table\
+	bufr/tables/0/wmo/11/codetables/8052.table\
+	bufr/tables/0/wmo/11/codetables/8053.table\
+	bufr/tables/0/wmo/11/codetables/8054.table\
+	bufr/tables/0/wmo/11/codetables/8060.table\
+	bufr/tables/0/wmo/11/codetables/8065.table\
+	bufr/tables/0/wmo/11/codetables/8066.table\
+	bufr/tables/0/wmo/11/codetables/8070.table\
+	bufr/tables/0/wmo/11/codetables/8072.table\
+	bufr/tables/0/wmo/11/codetables/8074.table\
+	bufr/tables/0/wmo/11/codetables/8075.table\
+	bufr/tables/0/wmo/11/codetables/8076.table\
+	bufr/tables/0/wmo/11/codetables/8077.table\
+	bufr/tables/0/wmo/11/codetables/8079.table\
+	bufr/tables/0/wmo/11/codetables/8080.table\
+	bufr/tables/0/wmo/11/codetables/8081.table\
+	bufr/tables/0/wmo/11/codetables/8082.table\
+	bufr/tables/0/wmo/11/codetables/8083.table\
+	bufr/tables/0/wmo/11/codetables/8085.table
+
+definitionsbufr_tables_0_wmo_12dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/12
+dist_definitionsbufr_tables_0_wmo_12_DATA = \
+	bufr/tables/0/wmo/12/element.table\
+	bufr/tables/0/wmo/12/sequence.def
+
+definitionsbufr_tables_0_wmo_12_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/12/codetables
+dist_definitionsbufr_tables_0_wmo_12_codetables_DATA = \
+	bufr/tables/0/wmo/12/codetables/1003.table\
+	bufr/tables/0/wmo/12/codetables/10063.table\
+	bufr/tables/0/wmo/12/codetables/10064.table\
+	bufr/tables/0/wmo/12/codetables/1007.table\
+	bufr/tables/0/wmo/12/codetables/1031.table\
+	bufr/tables/0/wmo/12/codetables/1032.table\
+	bufr/tables/0/wmo/12/codetables/1033.table\
+	bufr/tables/0/wmo/12/codetables/1035.table\
+	bufr/tables/0/wmo/12/codetables/1090.table\
+	bufr/tables/0/wmo/12/codetables/1092.table\
+	bufr/tables/0/wmo/12/codetables/11031.table\
+	bufr/tables/0/wmo/12/codetables/11037.table\
+	bufr/tables/0/wmo/12/codetables/11038.table\
+	bufr/tables/0/wmo/12/codetables/11039.table\
+	bufr/tables/0/wmo/12/codetables/13038.table\
+	bufr/tables/0/wmo/12/codetables/13039.table\
+	bufr/tables/0/wmo/12/codetables/13040.table\
+	bufr/tables/0/wmo/12/codetables/13041.table\
+	bufr/tables/0/wmo/12/codetables/13051.table\
+	bufr/tables/0/wmo/12/codetables/13056.table\
+	bufr/tables/0/wmo/12/codetables/13057.table\
+	bufr/tables/0/wmo/12/codetables/15025.table\
+	bufr/tables/0/wmo/12/codetables/19001.table\
+	bufr/tables/0/wmo/12/codetables/19008.table\
+	bufr/tables/0/wmo/12/codetables/19010.table\
+	bufr/tables/0/wmo/12/codetables/20003.table\
+	bufr/tables/0/wmo/12/codetables/20004.table\
+	bufr/tables/0/wmo/12/codetables/20005.table\
+	bufr/tables/0/wmo/12/codetables/20008.table\
+	bufr/tables/0/wmo/12/codetables/20009.table\
+	bufr/tables/0/wmo/12/codetables/2001.table\
+	bufr/tables/0/wmo/12/codetables/20011.table\
+	bufr/tables/0/wmo/12/codetables/20012.table\
+	bufr/tables/0/wmo/12/codetables/20017.table\
+	bufr/tables/0/wmo/12/codetables/20018.table\
+	bufr/tables/0/wmo/12/codetables/2002.table\
+	bufr/tables/0/wmo/12/codetables/20021.table\
+	bufr/tables/0/wmo/12/codetables/20022.table\
+	bufr/tables/0/wmo/12/codetables/20023.table\
+	bufr/tables/0/wmo/12/codetables/20024.table\
+	bufr/tables/0/wmo/12/codetables/20025.table\
+	bufr/tables/0/wmo/12/codetables/20026.table\
+	bufr/tables/0/wmo/12/codetables/20027.table\
+	bufr/tables/0/wmo/12/codetables/20029.table\
+	bufr/tables/0/wmo/12/codetables/2003.table\
+	bufr/tables/0/wmo/12/codetables/20032.table\
+	bufr/tables/0/wmo/12/codetables/20033.table\
+	bufr/tables/0/wmo/12/codetables/20034.table\
+	bufr/tables/0/wmo/12/codetables/20035.table\
+	bufr/tables/0/wmo/12/codetables/20036.table\
+	bufr/tables/0/wmo/12/codetables/20037.table\
+	bufr/tables/0/wmo/12/codetables/2004.table\
+	bufr/tables/0/wmo/12/codetables/20040.table\
+	bufr/tables/0/wmo/12/codetables/20041.table\
+	bufr/tables/0/wmo/12/codetables/20042.table\
+	bufr/tables/0/wmo/12/codetables/20045.table\
+	bufr/tables/0/wmo/12/codetables/20050.table\
+	bufr/tables/0/wmo/12/codetables/20055.table\
+	bufr/tables/0/wmo/12/codetables/20056.table\
+	bufr/tables/0/wmo/12/codetables/20062.table\
+	bufr/tables/0/wmo/12/codetables/20063.table\
+	bufr/tables/0/wmo/12/codetables/20071.table\
+	bufr/tables/0/wmo/12/codetables/20086.table\
+	bufr/tables/0/wmo/12/codetables/20090.table\
+	bufr/tables/0/wmo/12/codetables/20101.table\
+	bufr/tables/0/wmo/12/codetables/20102.table\
+	bufr/tables/0/wmo/12/codetables/2011.table\
+	bufr/tables/0/wmo/12/codetables/2012.table\
+	bufr/tables/0/wmo/12/codetables/2013.table\
+	bufr/tables/0/wmo/12/codetables/2014.table\
+	bufr/tables/0/wmo/12/codetables/2015.table\
+	bufr/tables/0/wmo/12/codetables/2016.table\
+	bufr/tables/0/wmo/12/codetables/2019.table\
+	bufr/tables/0/wmo/12/codetables/2020.table\
+	bufr/tables/0/wmo/12/codetables/2021.table\
+	bufr/tables/0/wmo/12/codetables/2022.table\
+	bufr/tables/0/wmo/12/codetables/2023.table\
+	bufr/tables/0/wmo/12/codetables/2024.table\
+	bufr/tables/0/wmo/12/codetables/2025.table\
+	bufr/tables/0/wmo/12/codetables/2030.table\
+	bufr/tables/0/wmo/12/codetables/2031.table\
+	bufr/tables/0/wmo/12/codetables/2032.table\
+	bufr/tables/0/wmo/12/codetables/2033.table\
+	bufr/tables/0/wmo/12/codetables/2034.table\
+	bufr/tables/0/wmo/12/codetables/2036.table\
+	bufr/tables/0/wmo/12/codetables/2037.table\
+	bufr/tables/0/wmo/12/codetables/2038.table\
+	bufr/tables/0/wmo/12/codetables/2039.table\
+	bufr/tables/0/wmo/12/codetables/2040.table\
+	bufr/tables/0/wmo/12/codetables/2041.table\
+	bufr/tables/0/wmo/12/codetables/2044.table\
+	bufr/tables/0/wmo/12/codetables/2045.table\
+	bufr/tables/0/wmo/12/codetables/2046.table\
+	bufr/tables/0/wmo/12/codetables/2048.table\
+	bufr/tables/0/wmo/12/codetables/2049.table\
+	bufr/tables/0/wmo/12/codetables/2050.table\
+	bufr/tables/0/wmo/12/codetables/2051.table\
+	bufr/tables/0/wmo/12/codetables/2052.table\
+	bufr/tables/0/wmo/12/codetables/2053.table\
+	bufr/tables/0/wmo/12/codetables/2054.table\
+	bufr/tables/0/wmo/12/codetables/2055.table\
+	bufr/tables/0/wmo/12/codetables/2056.table\
+	bufr/tables/0/wmo/12/codetables/2057.table\
+	bufr/tables/0/wmo/12/codetables/2058.table\
+	bufr/tables/0/wmo/12/codetables/2059.table\
+	bufr/tables/0/wmo/12/codetables/2060.table\
+	bufr/tables/0/wmo/12/codetables/2061.table\
+	bufr/tables/0/wmo/12/codetables/2062.table\
+	bufr/tables/0/wmo/12/codetables/2064.table\
+	bufr/tables/0/wmo/12/codetables/2066.table\
+	bufr/tables/0/wmo/12/codetables/2070.table\
+	bufr/tables/0/wmo/12/codetables/2080.table\
+	bufr/tables/0/wmo/12/codetables/2081.table\
+	bufr/tables/0/wmo/12/codetables/2083.table\
+	bufr/tables/0/wmo/12/codetables/2084.table\
+	bufr/tables/0/wmo/12/codetables/2095.table\
+	bufr/tables/0/wmo/12/codetables/2096.table\
+	bufr/tables/0/wmo/12/codetables/2097.table\
+	bufr/tables/0/wmo/12/codetables/2098.table\
+	bufr/tables/0/wmo/12/codetables/2101.table\
+	bufr/tables/0/wmo/12/codetables/2103.table\
+	bufr/tables/0/wmo/12/codetables/2104.table\
+	bufr/tables/0/wmo/12/codetables/21066.table\
+	bufr/tables/0/wmo/12/codetables/21067.table\
+	bufr/tables/0/wmo/12/codetables/21068.table\
+	bufr/tables/0/wmo/12/codetables/21069.table\
+	bufr/tables/0/wmo/12/codetables/21070.table\
+	bufr/tables/0/wmo/12/codetables/21072.table\
+	bufr/tables/0/wmo/12/codetables/21073.table\
+	bufr/tables/0/wmo/12/codetables/21076.table\
+	bufr/tables/0/wmo/12/codetables/21109.table\
+	bufr/tables/0/wmo/12/codetables/21115.table\
+	bufr/tables/0/wmo/12/codetables/21116.table\
+	bufr/tables/0/wmo/12/codetables/21119.table\
+	bufr/tables/0/wmo/12/codetables/21144.table\
+	bufr/tables/0/wmo/12/codetables/2115.table\
+	bufr/tables/0/wmo/12/codetables/21150.table\
+	bufr/tables/0/wmo/12/codetables/21155.table\
+	bufr/tables/0/wmo/12/codetables/21158.table\
+	bufr/tables/0/wmo/12/codetables/21159.table\
+	bufr/tables/0/wmo/12/codetables/21169.table\
+	bufr/tables/0/wmo/12/codetables/2119.table\
+	bufr/tables/0/wmo/12/codetables/2131.table\
+	bufr/tables/0/wmo/12/codetables/2143.table\
+	bufr/tables/0/wmo/12/codetables/2144.table\
+	bufr/tables/0/wmo/12/codetables/2145.table\
+	bufr/tables/0/wmo/12/codetables/2146.table\
+	bufr/tables/0/wmo/12/codetables/2148.table\
+	bufr/tables/0/wmo/12/codetables/2149.table\
+	bufr/tables/0/wmo/12/codetables/2150.table\
+	bufr/tables/0/wmo/12/codetables/2151.table\
+	bufr/tables/0/wmo/12/codetables/2152.table\
+	bufr/tables/0/wmo/12/codetables/2158.table\
+	bufr/tables/0/wmo/12/codetables/2159.table\
+	bufr/tables/0/wmo/12/codetables/2163.table\
+	bufr/tables/0/wmo/12/codetables/2164.table\
+	bufr/tables/0/wmo/12/codetables/2166.table\
+	bufr/tables/0/wmo/12/codetables/2167.table\
+	bufr/tables/0/wmo/12/codetables/2169.table\
+	bufr/tables/0/wmo/12/codetables/2172.table\
+	bufr/tables/0/wmo/12/codetables/2175.table\
+	bufr/tables/0/wmo/12/codetables/2176.table\
+	bufr/tables/0/wmo/12/codetables/2177.table\
+	bufr/tables/0/wmo/12/codetables/2178.table\
+	bufr/tables/0/wmo/12/codetables/2179.table\
+	bufr/tables/0/wmo/12/codetables/2180.table\
+	bufr/tables/0/wmo/12/codetables/2181.table\
+	bufr/tables/0/wmo/12/codetables/2182.table\
+	bufr/tables/0/wmo/12/codetables/2183.table\
+	bufr/tables/0/wmo/12/codetables/2184.table\
+	bufr/tables/0/wmo/12/codetables/2185.table\
+	bufr/tables/0/wmo/12/codetables/2186.table\
+	bufr/tables/0/wmo/12/codetables/2187.table\
+	bufr/tables/0/wmo/12/codetables/2188.table\
+	bufr/tables/0/wmo/12/codetables/2189.table\
+	bufr/tables/0/wmo/12/codetables/22056.table\
+	bufr/tables/0/wmo/12/codetables/22060.table\
+	bufr/tables/0/wmo/12/codetables/22061.table\
+	bufr/tables/0/wmo/12/codetables/22067.table\
+	bufr/tables/0/wmo/12/codetables/22068.table\
+	bufr/tables/0/wmo/12/codetables/22120.table\
+	bufr/tables/0/wmo/12/codetables/22121.table\
+	bufr/tables/0/wmo/12/codetables/22122.table\
+	bufr/tables/0/wmo/12/codetables/22123.table\
+	bufr/tables/0/wmo/12/codetables/23001.table\
+	bufr/tables/0/wmo/12/codetables/23002.table\
+	bufr/tables/0/wmo/12/codetables/23003.table\
+	bufr/tables/0/wmo/12/codetables/23004.table\
+	bufr/tables/0/wmo/12/codetables/23005.table\
+	bufr/tables/0/wmo/12/codetables/23006.table\
+	bufr/tables/0/wmo/12/codetables/23007.table\
+	bufr/tables/0/wmo/12/codetables/23008.table\
+	bufr/tables/0/wmo/12/codetables/23009.table\
+	bufr/tables/0/wmo/12/codetables/23016.table\
+	bufr/tables/0/wmo/12/codetables/23018.table\
+	bufr/tables/0/wmo/12/codetables/23031.table\
+	bufr/tables/0/wmo/12/codetables/23032.table\
+	bufr/tables/0/wmo/12/codetables/24003.table\
+	bufr/tables/0/wmo/12/codetables/25004.table\
+	bufr/tables/0/wmo/12/codetables/25005.table\
+	bufr/tables/0/wmo/12/codetables/25006.table\
+	bufr/tables/0/wmo/12/codetables/25009.table\
+	bufr/tables/0/wmo/12/codetables/25010.table\
+	bufr/tables/0/wmo/12/codetables/25011.table\
+	bufr/tables/0/wmo/12/codetables/25012.table\
+	bufr/tables/0/wmo/12/codetables/25013.table\
+	bufr/tables/0/wmo/12/codetables/25015.table\
+	bufr/tables/0/wmo/12/codetables/25017.table\
+	bufr/tables/0/wmo/12/codetables/25020.table\
+	bufr/tables/0/wmo/12/codetables/25021.table\
+	bufr/tables/0/wmo/12/codetables/25030.table\
+	bufr/tables/0/wmo/12/codetables/25032.table\
+	bufr/tables/0/wmo/12/codetables/25033.table\
+	bufr/tables/0/wmo/12/codetables/25034.table\
+	bufr/tables/0/wmo/12/codetables/25036.table\
+	bufr/tables/0/wmo/12/codetables/25040.table\
+	bufr/tables/0/wmo/12/codetables/25041.table\
+	bufr/tables/0/wmo/12/codetables/25042.table\
+	bufr/tables/0/wmo/12/codetables/25045.table\
+	bufr/tables/0/wmo/12/codetables/25046.table\
+	bufr/tables/0/wmo/12/codetables/25047.table\
+	bufr/tables/0/wmo/12/codetables/25048.table\
+	bufr/tables/0/wmo/12/codetables/25049.table\
+	bufr/tables/0/wmo/12/codetables/25051.table\
+	bufr/tables/0/wmo/12/codetables/25053.table\
+	bufr/tables/0/wmo/12/codetables/25069.table\
+	bufr/tables/0/wmo/12/codetables/25086.table\
+	bufr/tables/0/wmo/12/codetables/25093.table\
+	bufr/tables/0/wmo/12/codetables/25095.table\
+	bufr/tables/0/wmo/12/codetables/25096.table\
+	bufr/tables/0/wmo/12/codetables/25097.table\
+	bufr/tables/0/wmo/12/codetables/25098.table\
+	bufr/tables/0/wmo/12/codetables/25099.table\
+	bufr/tables/0/wmo/12/codetables/25110.table\
+	bufr/tables/0/wmo/12/codetables/25120.table\
+	bufr/tables/0/wmo/12/codetables/25122.table\
+	bufr/tables/0/wmo/12/codetables/25123.table\
+	bufr/tables/0/wmo/12/codetables/25124.table\
+	bufr/tables/0/wmo/12/codetables/26010.table\
+	bufr/tables/0/wmo/12/codetables/29001.table\
+	bufr/tables/0/wmo/12/codetables/29002.table\
+	bufr/tables/0/wmo/12/codetables/30031.table\
+	bufr/tables/0/wmo/12/codetables/30032.table\
+	bufr/tables/0/wmo/12/codetables/31021.table\
+	bufr/tables/0/wmo/12/codetables/31031.table\
+	bufr/tables/0/wmo/12/codetables/33002.table\
+	bufr/tables/0/wmo/12/codetables/33003.table\
+	bufr/tables/0/wmo/12/codetables/33005.table\
+	bufr/tables/0/wmo/12/codetables/33006.table\
+	bufr/tables/0/wmo/12/codetables/33015.table\
+	bufr/tables/0/wmo/12/codetables/33020.table\
+	bufr/tables/0/wmo/12/codetables/33021.table\
+	bufr/tables/0/wmo/12/codetables/33022.table\
+	bufr/tables/0/wmo/12/codetables/33023.table\
+	bufr/tables/0/wmo/12/codetables/33024.table\
+	bufr/tables/0/wmo/12/codetables/33025.table\
+	bufr/tables/0/wmo/12/codetables/33026.table\
+	bufr/tables/0/wmo/12/codetables/33027.table\
+	bufr/tables/0/wmo/12/codetables/33028.table\
+	bufr/tables/0/wmo/12/codetables/33030.table\
+	bufr/tables/0/wmo/12/codetables/33031.table\
+	bufr/tables/0/wmo/12/codetables/33032.table\
+	bufr/tables/0/wmo/12/codetables/33033.table\
+	bufr/tables/0/wmo/12/codetables/33035.table\
+	bufr/tables/0/wmo/12/codetables/33037.table\
+	bufr/tables/0/wmo/12/codetables/33038.table\
+	bufr/tables/0/wmo/12/codetables/33039.table\
+	bufr/tables/0/wmo/12/codetables/33041.table\
+	bufr/tables/0/wmo/12/codetables/33042.table\
+	bufr/tables/0/wmo/12/codetables/33043.table\
+	bufr/tables/0/wmo/12/codetables/33044.table\
+	bufr/tables/0/wmo/12/codetables/33047.table\
+	bufr/tables/0/wmo/12/codetables/33048.table\
+	bufr/tables/0/wmo/12/codetables/33049.table\
+	bufr/tables/0/wmo/12/codetables/33050.table\
+	bufr/tables/0/wmo/12/codetables/33052.table\
+	bufr/tables/0/wmo/12/codetables/33053.table\
+	bufr/tables/0/wmo/12/codetables/33060.table\
+	bufr/tables/0/wmo/12/codetables/35000.table\
+	bufr/tables/0/wmo/12/codetables/35001.table\
+	bufr/tables/0/wmo/12/codetables/35030.table\
+	bufr/tables/0/wmo/12/codetables/35031.table\
+	bufr/tables/0/wmo/12/codetables/35032.table\
+	bufr/tables/0/wmo/12/codetables/35033.table\
+	bufr/tables/0/wmo/12/codetables/35034.table\
+	bufr/tables/0/wmo/12/codetables/40011.table\
+	bufr/tables/0/wmo/12/codetables/40012.table\
+	bufr/tables/0/wmo/12/codetables/40013.table\
+	bufr/tables/0/wmo/12/codetables/4059.table\
+	bufr/tables/0/wmo/12/codetables/8001.table\
+	bufr/tables/0/wmo/12/codetables/8002.table\
+	bufr/tables/0/wmo/12/codetables/8003.table\
+	bufr/tables/0/wmo/12/codetables/8004.table\
+	bufr/tables/0/wmo/12/codetables/8005.table\
+	bufr/tables/0/wmo/12/codetables/8006.table\
+	bufr/tables/0/wmo/12/codetables/8007.table\
+	bufr/tables/0/wmo/12/codetables/8008.table\
+	bufr/tables/0/wmo/12/codetables/8009.table\
+	bufr/tables/0/wmo/12/codetables/8010.table\
+	bufr/tables/0/wmo/12/codetables/8011.table\
+	bufr/tables/0/wmo/12/codetables/8012.table\
+	bufr/tables/0/wmo/12/codetables/8013.table\
+	bufr/tables/0/wmo/12/codetables/8014.table\
+	bufr/tables/0/wmo/12/codetables/8016.table\
+	bufr/tables/0/wmo/12/codetables/8017.table\
+	bufr/tables/0/wmo/12/codetables/8018.table\
+	bufr/tables/0/wmo/12/codetables/8021.table\
+	bufr/tables/0/wmo/12/codetables/8023.table\
+	bufr/tables/0/wmo/12/codetables/8024.table\
+	bufr/tables/0/wmo/12/codetables/8025.table\
+	bufr/tables/0/wmo/12/codetables/8026.table\
+	bufr/tables/0/wmo/12/codetables/8029.table\
+	bufr/tables/0/wmo/12/codetables/8033.table\
+	bufr/tables/0/wmo/12/codetables/8035.table\
+	bufr/tables/0/wmo/12/codetables/8036.table\
+	bufr/tables/0/wmo/12/codetables/8039.table\
+	bufr/tables/0/wmo/12/codetables/8040.table\
+	bufr/tables/0/wmo/12/codetables/8041.table\
+	bufr/tables/0/wmo/12/codetables/8042.table\
+	bufr/tables/0/wmo/12/codetables/8043.table\
+	bufr/tables/0/wmo/12/codetables/8050.table\
+	bufr/tables/0/wmo/12/codetables/8051.table\
+	bufr/tables/0/wmo/12/codetables/8052.table\
+	bufr/tables/0/wmo/12/codetables/8053.table\
+	bufr/tables/0/wmo/12/codetables/8054.table\
+	bufr/tables/0/wmo/12/codetables/8060.table\
+	bufr/tables/0/wmo/12/codetables/8065.table\
+	bufr/tables/0/wmo/12/codetables/8066.table\
+	bufr/tables/0/wmo/12/codetables/8070.table\
+	bufr/tables/0/wmo/12/codetables/8072.table\
+	bufr/tables/0/wmo/12/codetables/8074.table\
+	bufr/tables/0/wmo/12/codetables/8075.table\
+	bufr/tables/0/wmo/12/codetables/8076.table\
+	bufr/tables/0/wmo/12/codetables/8077.table\
+	bufr/tables/0/wmo/12/codetables/8079.table\
+	bufr/tables/0/wmo/12/codetables/8080.table\
+	bufr/tables/0/wmo/12/codetables/8081.table\
+	bufr/tables/0/wmo/12/codetables/8082.table\
+	bufr/tables/0/wmo/12/codetables/8083.table\
+	bufr/tables/0/wmo/12/codetables/8085.table
+
 definitionsbufr_tables_0_wmo_13dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/13
 dist_definitionsbufr_tables_0_wmo_13_DATA = \
 	bufr/tables/0/wmo/13/element.table\
@@ -5252,6 +6413,881 @@ dist_definitionsbufr_tables_0_wmo_23_codetables_DATA = \
 	bufr/tables/0/wmo/23/codetables/8086.table\
 	bufr/tables/0/wmo/23/codetables/8087.table
 
+definitionsbufr_tables_0_wmo_24dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/24
+dist_definitionsbufr_tables_0_wmo_24_DATA = \
+	bufr/tables/0/wmo/24/element.table\
+	bufr/tables/0/wmo/24/sequence.def
+
+definitionsbufr_tables_0_wmo_24_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/24/codetables
+dist_definitionsbufr_tables_0_wmo_24_codetables_DATA = \
+	bufr/tables/0/wmo/24/codetables/1003.table\
+	bufr/tables/0/wmo/24/codetables/10063.table\
+	bufr/tables/0/wmo/24/codetables/10064.table\
+	bufr/tables/0/wmo/24/codetables/1007.table\
+	bufr/tables/0/wmo/24/codetables/1024.table\
+	bufr/tables/0/wmo/24/codetables/1028.table\
+	bufr/tables/0/wmo/24/codetables/1029.table\
+	bufr/tables/0/wmo/24/codetables/1033.table\
+	bufr/tables/0/wmo/24/codetables/1034.table\
+	bufr/tables/0/wmo/24/codetables/1036.table\
+	bufr/tables/0/wmo/24/codetables/1038.table\
+	bufr/tables/0/wmo/24/codetables/1052.table\
+	bufr/tables/0/wmo/24/codetables/1090.table\
+	bufr/tables/0/wmo/24/codetables/1092.table\
+	bufr/tables/0/wmo/24/codetables/1101.table\
+	bufr/tables/0/wmo/24/codetables/11030.table\
+	bufr/tables/0/wmo/24/codetables/11031.table\
+	bufr/tables/0/wmo/24/codetables/11037.table\
+	bufr/tables/0/wmo/24/codetables/11038.table\
+	bufr/tables/0/wmo/24/codetables/11039.table\
+	bufr/tables/0/wmo/24/codetables/13038.table\
+	bufr/tables/0/wmo/24/codetables/13039.table\
+	bufr/tables/0/wmo/24/codetables/13040.table\
+	bufr/tables/0/wmo/24/codetables/13041.table\
+	bufr/tables/0/wmo/24/codetables/13051.table\
+	bufr/tables/0/wmo/24/codetables/13056.table\
+	bufr/tables/0/wmo/24/codetables/13057.table\
+	bufr/tables/0/wmo/24/codetables/15025.table\
+	bufr/tables/0/wmo/24/codetables/19001.table\
+	bufr/tables/0/wmo/24/codetables/19008.table\
+	bufr/tables/0/wmo/24/codetables/19010.table\
+	bufr/tables/0/wmo/24/codetables/19100.table\
+	bufr/tables/0/wmo/24/codetables/19101.table\
+	bufr/tables/0/wmo/24/codetables/19102.table\
+	bufr/tables/0/wmo/24/codetables/19103.table\
+	bufr/tables/0/wmo/24/codetables/19104.table\
+	bufr/tables/0/wmo/24/codetables/19105.table\
+	bufr/tables/0/wmo/24/codetables/19107.table\
+	bufr/tables/0/wmo/24/codetables/19108.table\
+	bufr/tables/0/wmo/24/codetables/19109.table\
+	bufr/tables/0/wmo/24/codetables/19110.table\
+	bufr/tables/0/wmo/24/codetables/19113.table\
+	bufr/tables/0/wmo/24/codetables/19117.table\
+	bufr/tables/0/wmo/24/codetables/19119.table\
+	bufr/tables/0/wmo/24/codetables/20003.table\
+	bufr/tables/0/wmo/24/codetables/20004.table\
+	bufr/tables/0/wmo/24/codetables/20005.table\
+	bufr/tables/0/wmo/24/codetables/20006.table\
+	bufr/tables/0/wmo/24/codetables/20008.table\
+	bufr/tables/0/wmo/24/codetables/20009.table\
+	bufr/tables/0/wmo/24/codetables/2001.table\
+	bufr/tables/0/wmo/24/codetables/20011.table\
+	bufr/tables/0/wmo/24/codetables/20012.table\
+	bufr/tables/0/wmo/24/codetables/20017.table\
+	bufr/tables/0/wmo/24/codetables/20018.table\
+	bufr/tables/0/wmo/24/codetables/2002.table\
+	bufr/tables/0/wmo/24/codetables/20021.table\
+	bufr/tables/0/wmo/24/codetables/20022.table\
+	bufr/tables/0/wmo/24/codetables/20023.table\
+	bufr/tables/0/wmo/24/codetables/20024.table\
+	bufr/tables/0/wmo/24/codetables/20025.table\
+	bufr/tables/0/wmo/24/codetables/20026.table\
+	bufr/tables/0/wmo/24/codetables/20027.table\
+	bufr/tables/0/wmo/24/codetables/20028.table\
+	bufr/tables/0/wmo/24/codetables/20029.table\
+	bufr/tables/0/wmo/24/codetables/2003.table\
+	bufr/tables/0/wmo/24/codetables/20032.table\
+	bufr/tables/0/wmo/24/codetables/20033.table\
+	bufr/tables/0/wmo/24/codetables/20034.table\
+	bufr/tables/0/wmo/24/codetables/20035.table\
+	bufr/tables/0/wmo/24/codetables/20036.table\
+	bufr/tables/0/wmo/24/codetables/20037.table\
+	bufr/tables/0/wmo/24/codetables/2004.table\
+	bufr/tables/0/wmo/24/codetables/20040.table\
+	bufr/tables/0/wmo/24/codetables/20041.table\
+	bufr/tables/0/wmo/24/codetables/20042.table\
+	bufr/tables/0/wmo/24/codetables/20045.table\
+	bufr/tables/0/wmo/24/codetables/20048.table\
+	bufr/tables/0/wmo/24/codetables/20050.table\
+	bufr/tables/0/wmo/24/codetables/20055.table\
+	bufr/tables/0/wmo/24/codetables/20056.table\
+	bufr/tables/0/wmo/24/codetables/20062.table\
+	bufr/tables/0/wmo/24/codetables/20063.table\
+	bufr/tables/0/wmo/24/codetables/2007.table\
+	bufr/tables/0/wmo/24/codetables/20071.table\
+	bufr/tables/0/wmo/24/codetables/20085.table\
+	bufr/tables/0/wmo/24/codetables/20086.table\
+	bufr/tables/0/wmo/24/codetables/20087.table\
+	bufr/tables/0/wmo/24/codetables/20089.table\
+	bufr/tables/0/wmo/24/codetables/20090.table\
+	bufr/tables/0/wmo/24/codetables/20101.table\
+	bufr/tables/0/wmo/24/codetables/20102.table\
+	bufr/tables/0/wmo/24/codetables/20103.table\
+	bufr/tables/0/wmo/24/codetables/20104.table\
+	bufr/tables/0/wmo/24/codetables/20105.table\
+	bufr/tables/0/wmo/24/codetables/20106.table\
+	bufr/tables/0/wmo/24/codetables/20107.table\
+	bufr/tables/0/wmo/24/codetables/20108.table\
+	bufr/tables/0/wmo/24/codetables/2011.table\
+	bufr/tables/0/wmo/24/codetables/20119.table\
+	bufr/tables/0/wmo/24/codetables/20124.table\
+	bufr/tables/0/wmo/24/codetables/2013.table\
+	bufr/tables/0/wmo/24/codetables/20136.table\
+	bufr/tables/0/wmo/24/codetables/20137.table\
+	bufr/tables/0/wmo/24/codetables/2014.table\
+	bufr/tables/0/wmo/24/codetables/2015.table\
+	bufr/tables/0/wmo/24/codetables/2016.table\
+	bufr/tables/0/wmo/24/codetables/2017.table\
+	bufr/tables/0/wmo/24/codetables/2019.table\
+	bufr/tables/0/wmo/24/codetables/2020.table\
+	bufr/tables/0/wmo/24/codetables/2021.table\
+	bufr/tables/0/wmo/24/codetables/2022.table\
+	bufr/tables/0/wmo/24/codetables/2023.table\
+	bufr/tables/0/wmo/24/codetables/2024.table\
+	bufr/tables/0/wmo/24/codetables/2025.table\
+	bufr/tables/0/wmo/24/codetables/2030.table\
+	bufr/tables/0/wmo/24/codetables/2031.table\
+	bufr/tables/0/wmo/24/codetables/2032.table\
+	bufr/tables/0/wmo/24/codetables/2033.table\
+	bufr/tables/0/wmo/24/codetables/2034.table\
+	bufr/tables/0/wmo/24/codetables/2036.table\
+	bufr/tables/0/wmo/24/codetables/2037.table\
+	bufr/tables/0/wmo/24/codetables/2038.table\
+	bufr/tables/0/wmo/24/codetables/2039.table\
+	bufr/tables/0/wmo/24/codetables/2040.table\
+	bufr/tables/0/wmo/24/codetables/2041.table\
+	bufr/tables/0/wmo/24/codetables/2042.table\
+	bufr/tables/0/wmo/24/codetables/2044.table\
+	bufr/tables/0/wmo/24/codetables/2045.table\
+	bufr/tables/0/wmo/24/codetables/2046.table\
+	bufr/tables/0/wmo/24/codetables/2047.table\
+	bufr/tables/0/wmo/24/codetables/2048.table\
+	bufr/tables/0/wmo/24/codetables/2049.table\
+	bufr/tables/0/wmo/24/codetables/2050.table\
+	bufr/tables/0/wmo/24/codetables/2051.table\
+	bufr/tables/0/wmo/24/codetables/2052.table\
+	bufr/tables/0/wmo/24/codetables/2053.table\
+	bufr/tables/0/wmo/24/codetables/2054.table\
+	bufr/tables/0/wmo/24/codetables/2055.table\
+	bufr/tables/0/wmo/24/codetables/2056.table\
+	bufr/tables/0/wmo/24/codetables/2057.table\
+	bufr/tables/0/wmo/24/codetables/2058.table\
+	bufr/tables/0/wmo/24/codetables/2059.table\
+	bufr/tables/0/wmo/24/codetables/2060.table\
+	bufr/tables/0/wmo/24/codetables/2061.table\
+	bufr/tables/0/wmo/24/codetables/2062.table\
+	bufr/tables/0/wmo/24/codetables/2064.table\
+	bufr/tables/0/wmo/24/codetables/2066.table\
+	bufr/tables/0/wmo/24/codetables/2070.table\
+	bufr/tables/0/wmo/24/codetables/2080.table\
+	bufr/tables/0/wmo/24/codetables/2081.table\
+	bufr/tables/0/wmo/24/codetables/2083.table\
+	bufr/tables/0/wmo/24/codetables/2084.table\
+	bufr/tables/0/wmo/24/codetables/2095.table\
+	bufr/tables/0/wmo/24/codetables/2096.table\
+	bufr/tables/0/wmo/24/codetables/2097.table\
+	bufr/tables/0/wmo/24/codetables/2099.table\
+	bufr/tables/0/wmo/24/codetables/2101.table\
+	bufr/tables/0/wmo/24/codetables/2103.table\
+	bufr/tables/0/wmo/24/codetables/2104.table\
+	bufr/tables/0/wmo/24/codetables/21066.table\
+	bufr/tables/0/wmo/24/codetables/21067.table\
+	bufr/tables/0/wmo/24/codetables/21068.table\
+	bufr/tables/0/wmo/24/codetables/21069.table\
+	bufr/tables/0/wmo/24/codetables/21070.table\
+	bufr/tables/0/wmo/24/codetables/21072.table\
+	bufr/tables/0/wmo/24/codetables/21073.table\
+	bufr/tables/0/wmo/24/codetables/21076.table\
+	bufr/tables/0/wmo/24/codetables/21109.table\
+	bufr/tables/0/wmo/24/codetables/21115.table\
+	bufr/tables/0/wmo/24/codetables/21116.table\
+	bufr/tables/0/wmo/24/codetables/21119.table\
+	bufr/tables/0/wmo/24/codetables/21144.table\
+	bufr/tables/0/wmo/24/codetables/21148.table\
+	bufr/tables/0/wmo/24/codetables/2115.table\
+	bufr/tables/0/wmo/24/codetables/21150.table\
+	bufr/tables/0/wmo/24/codetables/21155.table\
+	bufr/tables/0/wmo/24/codetables/21158.table\
+	bufr/tables/0/wmo/24/codetables/21159.table\
+	bufr/tables/0/wmo/24/codetables/21169.table\
+	bufr/tables/0/wmo/24/codetables/2119.table\
+	bufr/tables/0/wmo/24/codetables/2131.table\
+	bufr/tables/0/wmo/24/codetables/2137.table\
+	bufr/tables/0/wmo/24/codetables/2138.table\
+	bufr/tables/0/wmo/24/codetables/2139.table\
+	bufr/tables/0/wmo/24/codetables/2143.table\
+	bufr/tables/0/wmo/24/codetables/2144.table\
+	bufr/tables/0/wmo/24/codetables/2145.table\
+	bufr/tables/0/wmo/24/codetables/2146.table\
+	bufr/tables/0/wmo/24/codetables/2147.table\
+	bufr/tables/0/wmo/24/codetables/2148.table\
+	bufr/tables/0/wmo/24/codetables/2149.table\
+	bufr/tables/0/wmo/24/codetables/2150.table\
+	bufr/tables/0/wmo/24/codetables/2151.table\
+	bufr/tables/0/wmo/24/codetables/2152.table\
+	bufr/tables/0/wmo/24/codetables/2158.table\
+	bufr/tables/0/wmo/24/codetables/2159.table\
+	bufr/tables/0/wmo/24/codetables/2160.table\
+	bufr/tables/0/wmo/24/codetables/2163.table\
+	bufr/tables/0/wmo/24/codetables/2164.table\
+	bufr/tables/0/wmo/24/codetables/2165.table\
+	bufr/tables/0/wmo/24/codetables/2166.table\
+	bufr/tables/0/wmo/24/codetables/2167.table\
+	bufr/tables/0/wmo/24/codetables/2169.table\
+	bufr/tables/0/wmo/24/codetables/2170.table\
+	bufr/tables/0/wmo/24/codetables/2172.table\
+	bufr/tables/0/wmo/24/codetables/2175.table\
+	bufr/tables/0/wmo/24/codetables/2176.table\
+	bufr/tables/0/wmo/24/codetables/2177.table\
+	bufr/tables/0/wmo/24/codetables/2178.table\
+	bufr/tables/0/wmo/24/codetables/2179.table\
+	bufr/tables/0/wmo/24/codetables/2180.table\
+	bufr/tables/0/wmo/24/codetables/2181.table\
+	bufr/tables/0/wmo/24/codetables/2182.table\
+	bufr/tables/0/wmo/24/codetables/2183.table\
+	bufr/tables/0/wmo/24/codetables/2184.table\
+	bufr/tables/0/wmo/24/codetables/2185.table\
+	bufr/tables/0/wmo/24/codetables/2186.table\
+	bufr/tables/0/wmo/24/codetables/2187.table\
+	bufr/tables/0/wmo/24/codetables/2188.table\
+	bufr/tables/0/wmo/24/codetables/2189.table\
+	bufr/tables/0/wmo/24/codetables/2191.table\
+	bufr/tables/0/wmo/24/codetables/22056.table\
+	bufr/tables/0/wmo/24/codetables/22060.table\
+	bufr/tables/0/wmo/24/codetables/22061.table\
+	bufr/tables/0/wmo/24/codetables/22067.table\
+	bufr/tables/0/wmo/24/codetables/22068.table\
+	bufr/tables/0/wmo/24/codetables/22120.table\
+	bufr/tables/0/wmo/24/codetables/22121.table\
+	bufr/tables/0/wmo/24/codetables/22122.table\
+	bufr/tables/0/wmo/24/codetables/22123.table\
+	bufr/tables/0/wmo/24/codetables/22178.table\
+	bufr/tables/0/wmo/24/codetables/23001.table\
+	bufr/tables/0/wmo/24/codetables/23002.table\
+	bufr/tables/0/wmo/24/codetables/23003.table\
+	bufr/tables/0/wmo/24/codetables/23004.table\
+	bufr/tables/0/wmo/24/codetables/23005.table\
+	bufr/tables/0/wmo/24/codetables/23006.table\
+	bufr/tables/0/wmo/24/codetables/23007.table\
+	bufr/tables/0/wmo/24/codetables/23008.table\
+	bufr/tables/0/wmo/24/codetables/23009.table\
+	bufr/tables/0/wmo/24/codetables/23016.table\
+	bufr/tables/0/wmo/24/codetables/23018.table\
+	bufr/tables/0/wmo/24/codetables/23031.table\
+	bufr/tables/0/wmo/24/codetables/23032.table\
+	bufr/tables/0/wmo/24/codetables/24003.table\
+	bufr/tables/0/wmo/24/codetables/25004.table\
+	bufr/tables/0/wmo/24/codetables/25005.table\
+	bufr/tables/0/wmo/24/codetables/25006.table\
+	bufr/tables/0/wmo/24/codetables/25009.table\
+	bufr/tables/0/wmo/24/codetables/25010.table\
+	bufr/tables/0/wmo/24/codetables/25011.table\
+	bufr/tables/0/wmo/24/codetables/25012.table\
+	bufr/tables/0/wmo/24/codetables/25013.table\
+	bufr/tables/0/wmo/24/codetables/25015.table\
+	bufr/tables/0/wmo/24/codetables/25017.table\
+	bufr/tables/0/wmo/24/codetables/25020.table\
+	bufr/tables/0/wmo/24/codetables/25021.table\
+	bufr/tables/0/wmo/24/codetables/25022.table\
+	bufr/tables/0/wmo/24/codetables/25023.table\
+	bufr/tables/0/wmo/24/codetables/25024.table\
+	bufr/tables/0/wmo/24/codetables/25029.table\
+	bufr/tables/0/wmo/24/codetables/25030.table\
+	bufr/tables/0/wmo/24/codetables/25031.table\
+	bufr/tables/0/wmo/24/codetables/25032.table\
+	bufr/tables/0/wmo/24/codetables/25033.table\
+	bufr/tables/0/wmo/24/codetables/25034.table\
+	bufr/tables/0/wmo/24/codetables/25035.table\
+	bufr/tables/0/wmo/24/codetables/25036.table\
+	bufr/tables/0/wmo/24/codetables/25040.table\
+	bufr/tables/0/wmo/24/codetables/25041.table\
+	bufr/tables/0/wmo/24/codetables/25042.table\
+	bufr/tables/0/wmo/24/codetables/25053.table\
+	bufr/tables/0/wmo/24/codetables/25063.table\
+	bufr/tables/0/wmo/24/codetables/25069.table\
+	bufr/tables/0/wmo/24/codetables/25086.table\
+	bufr/tables/0/wmo/24/codetables/25090.table\
+	bufr/tables/0/wmo/24/codetables/25093.table\
+	bufr/tables/0/wmo/24/codetables/25095.table\
+	bufr/tables/0/wmo/24/codetables/25096.table\
+	bufr/tables/0/wmo/24/codetables/25097.table\
+	bufr/tables/0/wmo/24/codetables/25098.table\
+	bufr/tables/0/wmo/24/codetables/25099.table\
+	bufr/tables/0/wmo/24/codetables/25110.table\
+	bufr/tables/0/wmo/24/codetables/25112.table\
+	bufr/tables/0/wmo/24/codetables/25113.table\
+	bufr/tables/0/wmo/24/codetables/25120.table\
+	bufr/tables/0/wmo/24/codetables/25122.table\
+	bufr/tables/0/wmo/24/codetables/25123.table\
+	bufr/tables/0/wmo/24/codetables/25124.table\
+	bufr/tables/0/wmo/24/codetables/25150.table\
+	bufr/tables/0/wmo/24/codetables/25174.table\
+	bufr/tables/0/wmo/24/codetables/25181.table\
+	bufr/tables/0/wmo/24/codetables/25182.table\
+	bufr/tables/0/wmo/24/codetables/25184.table\
+	bufr/tables/0/wmo/24/codetables/26010.table\
+	bufr/tables/0/wmo/24/codetables/29001.table\
+	bufr/tables/0/wmo/24/codetables/29002.table\
+	bufr/tables/0/wmo/24/codetables/30031.table\
+	bufr/tables/0/wmo/24/codetables/30032.table\
+	bufr/tables/0/wmo/24/codetables/3010.table\
+	bufr/tables/0/wmo/24/codetables/3011.table\
+	bufr/tables/0/wmo/24/codetables/3012.table\
+	bufr/tables/0/wmo/24/codetables/31021.table\
+	bufr/tables/0/wmo/24/codetables/31031.table\
+	bufr/tables/0/wmo/24/codetables/33002.table\
+	bufr/tables/0/wmo/24/codetables/33003.table\
+	bufr/tables/0/wmo/24/codetables/33005.table\
+	bufr/tables/0/wmo/24/codetables/33006.table\
+	bufr/tables/0/wmo/24/codetables/33015.table\
+	bufr/tables/0/wmo/24/codetables/33020.table\
+	bufr/tables/0/wmo/24/codetables/33021.table\
+	bufr/tables/0/wmo/24/codetables/33022.table\
+	bufr/tables/0/wmo/24/codetables/33023.table\
+	bufr/tables/0/wmo/24/codetables/33024.table\
+	bufr/tables/0/wmo/24/codetables/33025.table\
+	bufr/tables/0/wmo/24/codetables/33026.table\
+	bufr/tables/0/wmo/24/codetables/33027.table\
+	bufr/tables/0/wmo/24/codetables/33028.table\
+	bufr/tables/0/wmo/24/codetables/33030.table\
+	bufr/tables/0/wmo/24/codetables/33031.table\
+	bufr/tables/0/wmo/24/codetables/33032.table\
+	bufr/tables/0/wmo/24/codetables/33033.table\
+	bufr/tables/0/wmo/24/codetables/33035.table\
+	bufr/tables/0/wmo/24/codetables/33037.table\
+	bufr/tables/0/wmo/24/codetables/33038.table\
+	bufr/tables/0/wmo/24/codetables/33039.table\
+	bufr/tables/0/wmo/24/codetables/33041.table\
+	bufr/tables/0/wmo/24/codetables/33042.table\
+	bufr/tables/0/wmo/24/codetables/33043.table\
+	bufr/tables/0/wmo/24/codetables/33044.table\
+	bufr/tables/0/wmo/24/codetables/33047.table\
+	bufr/tables/0/wmo/24/codetables/33048.table\
+	bufr/tables/0/wmo/24/codetables/33049.table\
+	bufr/tables/0/wmo/24/codetables/33050.table\
+	bufr/tables/0/wmo/24/codetables/33060.table\
+	bufr/tables/0/wmo/24/codetables/33070.table\
+	bufr/tables/0/wmo/24/codetables/33071.table\
+	bufr/tables/0/wmo/24/codetables/33072.table\
+	bufr/tables/0/wmo/24/codetables/33075.table\
+	bufr/tables/0/wmo/24/codetables/33076.table\
+	bufr/tables/0/wmo/24/codetables/33077.table\
+	bufr/tables/0/wmo/24/codetables/33078.table\
+	bufr/tables/0/wmo/24/codetables/33079.table\
+	bufr/tables/0/wmo/24/codetables/33080.table\
+	bufr/tables/0/wmo/24/codetables/33081.table\
+	bufr/tables/0/wmo/24/codetables/33082.table\
+	bufr/tables/0/wmo/24/codetables/33083.table\
+	bufr/tables/0/wmo/24/codetables/33084.table\
+	bufr/tables/0/wmo/24/codetables/33085.table\
+	bufr/tables/0/wmo/24/codetables/33086.table\
+	bufr/tables/0/wmo/24/codetables/33087.table\
+	bufr/tables/0/wmo/24/codetables/33088.table\
+	bufr/tables/0/wmo/24/codetables/35000.table\
+	bufr/tables/0/wmo/24/codetables/35001.table\
+	bufr/tables/0/wmo/24/codetables/35030.table\
+	bufr/tables/0/wmo/24/codetables/35031.table\
+	bufr/tables/0/wmo/24/codetables/35032.table\
+	bufr/tables/0/wmo/24/codetables/35033.table\
+	bufr/tables/0/wmo/24/codetables/35034.table\
+	bufr/tables/0/wmo/24/codetables/35035.table\
+	bufr/tables/0/wmo/24/codetables/40005.table\
+	bufr/tables/0/wmo/24/codetables/40006.table\
+	bufr/tables/0/wmo/24/codetables/40011.table\
+	bufr/tables/0/wmo/24/codetables/40012.table\
+	bufr/tables/0/wmo/24/codetables/40013.table\
+	bufr/tables/0/wmo/24/codetables/40020.table\
+	bufr/tables/0/wmo/24/codetables/40023.table\
+	bufr/tables/0/wmo/24/codetables/40024.table\
+	bufr/tables/0/wmo/24/codetables/40025.table\
+	bufr/tables/0/wmo/24/codetables/4059.table\
+	bufr/tables/0/wmo/24/codetables/4080.table\
+	bufr/tables/0/wmo/24/codetables/8001.table\
+	bufr/tables/0/wmo/24/codetables/8002.table\
+	bufr/tables/0/wmo/24/codetables/8003.table\
+	bufr/tables/0/wmo/24/codetables/8004.table\
+	bufr/tables/0/wmo/24/codetables/8005.table\
+	bufr/tables/0/wmo/24/codetables/8006.table\
+	bufr/tables/0/wmo/24/codetables/8007.table\
+	bufr/tables/0/wmo/24/codetables/8008.table\
+	bufr/tables/0/wmo/24/codetables/8009.table\
+	bufr/tables/0/wmo/24/codetables/8010.table\
+	bufr/tables/0/wmo/24/codetables/8011.table\
+	bufr/tables/0/wmo/24/codetables/8012.table\
+	bufr/tables/0/wmo/24/codetables/8013.table\
+	bufr/tables/0/wmo/24/codetables/8014.table\
+	bufr/tables/0/wmo/24/codetables/8015.table\
+	bufr/tables/0/wmo/24/codetables/8016.table\
+	bufr/tables/0/wmo/24/codetables/8017.table\
+	bufr/tables/0/wmo/24/codetables/8018.table\
+	bufr/tables/0/wmo/24/codetables/8019.table\
+	bufr/tables/0/wmo/24/codetables/8021.table\
+	bufr/tables/0/wmo/24/codetables/8023.table\
+	bufr/tables/0/wmo/24/codetables/8024.table\
+	bufr/tables/0/wmo/24/codetables/8025.table\
+	bufr/tables/0/wmo/24/codetables/8026.table\
+	bufr/tables/0/wmo/24/codetables/8029.table\
+	bufr/tables/0/wmo/24/codetables/8032.table\
+	bufr/tables/0/wmo/24/codetables/8033.table\
+	bufr/tables/0/wmo/24/codetables/8035.table\
+	bufr/tables/0/wmo/24/codetables/8036.table\
+	bufr/tables/0/wmo/24/codetables/8039.table\
+	bufr/tables/0/wmo/24/codetables/8040.table\
+	bufr/tables/0/wmo/24/codetables/8041.table\
+	bufr/tables/0/wmo/24/codetables/8042.table\
+	bufr/tables/0/wmo/24/codetables/8043.table\
+	bufr/tables/0/wmo/24/codetables/8050.table\
+	bufr/tables/0/wmo/24/codetables/8051.table\
+	bufr/tables/0/wmo/24/codetables/8052.table\
+	bufr/tables/0/wmo/24/codetables/8053.table\
+	bufr/tables/0/wmo/24/codetables/8054.table\
+	bufr/tables/0/wmo/24/codetables/8060.table\
+	bufr/tables/0/wmo/24/codetables/8065.table\
+	bufr/tables/0/wmo/24/codetables/8066.table\
+	bufr/tables/0/wmo/24/codetables/8070.table\
+	bufr/tables/0/wmo/24/codetables/8072.table\
+	bufr/tables/0/wmo/24/codetables/8074.table\
+	bufr/tables/0/wmo/24/codetables/8075.table\
+	bufr/tables/0/wmo/24/codetables/8076.table\
+	bufr/tables/0/wmo/24/codetables/8077.table\
+	bufr/tables/0/wmo/24/codetables/8079.table\
+	bufr/tables/0/wmo/24/codetables/8080.table\
+	bufr/tables/0/wmo/24/codetables/8081.table\
+	bufr/tables/0/wmo/24/codetables/8082.table\
+	bufr/tables/0/wmo/24/codetables/8083.table\
+	bufr/tables/0/wmo/24/codetables/8085.table\
+	bufr/tables/0/wmo/24/codetables/8086.table\
+	bufr/tables/0/wmo/24/codetables/8087.table
+
+definitionsbufr_tables_0_wmo_25dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/25
+dist_definitionsbufr_tables_0_wmo_25_DATA = \
+	bufr/tables/0/wmo/25/element.table\
+	bufr/tables/0/wmo/25/sequence.def
+
+definitionsbufr_tables_0_wmo_25_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/25/codetables
+dist_definitionsbufr_tables_0_wmo_25_codetables_DATA = \
+	bufr/tables/0/wmo/25/codetables/1003.table\
+	bufr/tables/0/wmo/25/codetables/10063.table\
+	bufr/tables/0/wmo/25/codetables/10064.table\
+	bufr/tables/0/wmo/25/codetables/1007.table\
+	bufr/tables/0/wmo/25/codetables/1024.table\
+	bufr/tables/0/wmo/25/codetables/1028.table\
+	bufr/tables/0/wmo/25/codetables/1029.table\
+	bufr/tables/0/wmo/25/codetables/1033.table\
+	bufr/tables/0/wmo/25/codetables/1034.table\
+	bufr/tables/0/wmo/25/codetables/1036.table\
+	bufr/tables/0/wmo/25/codetables/1038.table\
+	bufr/tables/0/wmo/25/codetables/1052.table\
+	bufr/tables/0/wmo/25/codetables/1090.table\
+	bufr/tables/0/wmo/25/codetables/1092.table\
+	bufr/tables/0/wmo/25/codetables/1101.table\
+	bufr/tables/0/wmo/25/codetables/11030.table\
+	bufr/tables/0/wmo/25/codetables/11031.table\
+	bufr/tables/0/wmo/25/codetables/11037.table\
+	bufr/tables/0/wmo/25/codetables/11038.table\
+	bufr/tables/0/wmo/25/codetables/11039.table\
+	bufr/tables/0/wmo/25/codetables/13038.table\
+	bufr/tables/0/wmo/25/codetables/13039.table\
+	bufr/tables/0/wmo/25/codetables/13040.table\
+	bufr/tables/0/wmo/25/codetables/13041.table\
+	bufr/tables/0/wmo/25/codetables/13051.table\
+	bufr/tables/0/wmo/25/codetables/13056.table\
+	bufr/tables/0/wmo/25/codetables/13057.table\
+	bufr/tables/0/wmo/25/codetables/15025.table\
+	bufr/tables/0/wmo/25/codetables/19001.table\
+	bufr/tables/0/wmo/25/codetables/19008.table\
+	bufr/tables/0/wmo/25/codetables/19010.table\
+	bufr/tables/0/wmo/25/codetables/19100.table\
+	bufr/tables/0/wmo/25/codetables/19101.table\
+	bufr/tables/0/wmo/25/codetables/19102.table\
+	bufr/tables/0/wmo/25/codetables/19103.table\
+	bufr/tables/0/wmo/25/codetables/19104.table\
+	bufr/tables/0/wmo/25/codetables/19105.table\
+	bufr/tables/0/wmo/25/codetables/19107.table\
+	bufr/tables/0/wmo/25/codetables/19108.table\
+	bufr/tables/0/wmo/25/codetables/19109.table\
+	bufr/tables/0/wmo/25/codetables/19110.table\
+	bufr/tables/0/wmo/25/codetables/19113.table\
+	bufr/tables/0/wmo/25/codetables/19117.table\
+	bufr/tables/0/wmo/25/codetables/19119.table\
+	bufr/tables/0/wmo/25/codetables/20003.table\
+	bufr/tables/0/wmo/25/codetables/20004.table\
+	bufr/tables/0/wmo/25/codetables/20005.table\
+	bufr/tables/0/wmo/25/codetables/20006.table\
+	bufr/tables/0/wmo/25/codetables/20008.table\
+	bufr/tables/0/wmo/25/codetables/20009.table\
+	bufr/tables/0/wmo/25/codetables/2001.table\
+	bufr/tables/0/wmo/25/codetables/20011.table\
+	bufr/tables/0/wmo/25/codetables/20012.table\
+	bufr/tables/0/wmo/25/codetables/20017.table\
+	bufr/tables/0/wmo/25/codetables/20018.table\
+	bufr/tables/0/wmo/25/codetables/2002.table\
+	bufr/tables/0/wmo/25/codetables/20021.table\
+	bufr/tables/0/wmo/25/codetables/20022.table\
+	bufr/tables/0/wmo/25/codetables/20023.table\
+	bufr/tables/0/wmo/25/codetables/20024.table\
+	bufr/tables/0/wmo/25/codetables/20025.table\
+	bufr/tables/0/wmo/25/codetables/20026.table\
+	bufr/tables/0/wmo/25/codetables/20027.table\
+	bufr/tables/0/wmo/25/codetables/20028.table\
+	bufr/tables/0/wmo/25/codetables/20029.table\
+	bufr/tables/0/wmo/25/codetables/2003.table\
+	bufr/tables/0/wmo/25/codetables/20032.table\
+	bufr/tables/0/wmo/25/codetables/20033.table\
+	bufr/tables/0/wmo/25/codetables/20034.table\
+	bufr/tables/0/wmo/25/codetables/20035.table\
+	bufr/tables/0/wmo/25/codetables/20036.table\
+	bufr/tables/0/wmo/25/codetables/20037.table\
+	bufr/tables/0/wmo/25/codetables/2004.table\
+	bufr/tables/0/wmo/25/codetables/20040.table\
+	bufr/tables/0/wmo/25/codetables/20041.table\
+	bufr/tables/0/wmo/25/codetables/20042.table\
+	bufr/tables/0/wmo/25/codetables/20045.table\
+	bufr/tables/0/wmo/25/codetables/20048.table\
+	bufr/tables/0/wmo/25/codetables/20050.table\
+	bufr/tables/0/wmo/25/codetables/20055.table\
+	bufr/tables/0/wmo/25/codetables/20056.table\
+	bufr/tables/0/wmo/25/codetables/20062.table\
+	bufr/tables/0/wmo/25/codetables/20063.table\
+	bufr/tables/0/wmo/25/codetables/2007.table\
+	bufr/tables/0/wmo/25/codetables/20071.table\
+	bufr/tables/0/wmo/25/codetables/20085.table\
+	bufr/tables/0/wmo/25/codetables/20086.table\
+	bufr/tables/0/wmo/25/codetables/20087.table\
+	bufr/tables/0/wmo/25/codetables/20089.table\
+	bufr/tables/0/wmo/25/codetables/20090.table\
+	bufr/tables/0/wmo/25/codetables/20101.table\
+	bufr/tables/0/wmo/25/codetables/20102.table\
+	bufr/tables/0/wmo/25/codetables/20103.table\
+	bufr/tables/0/wmo/25/codetables/20104.table\
+	bufr/tables/0/wmo/25/codetables/20105.table\
+	bufr/tables/0/wmo/25/codetables/20106.table\
+	bufr/tables/0/wmo/25/codetables/20107.table\
+	bufr/tables/0/wmo/25/codetables/20108.table\
+	bufr/tables/0/wmo/25/codetables/2011.table\
+	bufr/tables/0/wmo/25/codetables/20119.table\
+	bufr/tables/0/wmo/25/codetables/20124.table\
+	bufr/tables/0/wmo/25/codetables/2013.table\
+	bufr/tables/0/wmo/25/codetables/20136.table\
+	bufr/tables/0/wmo/25/codetables/20137.table\
+	bufr/tables/0/wmo/25/codetables/2014.table\
+	bufr/tables/0/wmo/25/codetables/2015.table\
+	bufr/tables/0/wmo/25/codetables/2016.table\
+	bufr/tables/0/wmo/25/codetables/2017.table\
+	bufr/tables/0/wmo/25/codetables/2019.table\
+	bufr/tables/0/wmo/25/codetables/2020.table\
+	bufr/tables/0/wmo/25/codetables/2021.table\
+	bufr/tables/0/wmo/25/codetables/2022.table\
+	bufr/tables/0/wmo/25/codetables/2023.table\
+	bufr/tables/0/wmo/25/codetables/2024.table\
+	bufr/tables/0/wmo/25/codetables/2025.table\
+	bufr/tables/0/wmo/25/codetables/2030.table\
+	bufr/tables/0/wmo/25/codetables/2031.table\
+	bufr/tables/0/wmo/25/codetables/2032.table\
+	bufr/tables/0/wmo/25/codetables/2033.table\
+	bufr/tables/0/wmo/25/codetables/2034.table\
+	bufr/tables/0/wmo/25/codetables/2036.table\
+	bufr/tables/0/wmo/25/codetables/2037.table\
+	bufr/tables/0/wmo/25/codetables/2038.table\
+	bufr/tables/0/wmo/25/codetables/2039.table\
+	bufr/tables/0/wmo/25/codetables/2040.table\
+	bufr/tables/0/wmo/25/codetables/2041.table\
+	bufr/tables/0/wmo/25/codetables/2042.table\
+	bufr/tables/0/wmo/25/codetables/2044.table\
+	bufr/tables/0/wmo/25/codetables/2045.table\
+	bufr/tables/0/wmo/25/codetables/2046.table\
+	bufr/tables/0/wmo/25/codetables/2047.table\
+	bufr/tables/0/wmo/25/codetables/2048.table\
+	bufr/tables/0/wmo/25/codetables/2049.table\
+	bufr/tables/0/wmo/25/codetables/2050.table\
+	bufr/tables/0/wmo/25/codetables/2051.table\
+	bufr/tables/0/wmo/25/codetables/2052.table\
+	bufr/tables/0/wmo/25/codetables/2053.table\
+	bufr/tables/0/wmo/25/codetables/2054.table\
+	bufr/tables/0/wmo/25/codetables/2055.table\
+	bufr/tables/0/wmo/25/codetables/2056.table\
+	bufr/tables/0/wmo/25/codetables/2057.table\
+	bufr/tables/0/wmo/25/codetables/2058.table\
+	bufr/tables/0/wmo/25/codetables/2059.table\
+	bufr/tables/0/wmo/25/codetables/2060.table\
+	bufr/tables/0/wmo/25/codetables/2061.table\
+	bufr/tables/0/wmo/25/codetables/2062.table\
+	bufr/tables/0/wmo/25/codetables/2064.table\
+	bufr/tables/0/wmo/25/codetables/2066.table\
+	bufr/tables/0/wmo/25/codetables/2070.table\
+	bufr/tables/0/wmo/25/codetables/2080.table\
+	bufr/tables/0/wmo/25/codetables/2081.table\
+	bufr/tables/0/wmo/25/codetables/2083.table\
+	bufr/tables/0/wmo/25/codetables/2084.table\
+	bufr/tables/0/wmo/25/codetables/2095.table\
+	bufr/tables/0/wmo/25/codetables/2096.table\
+	bufr/tables/0/wmo/25/codetables/2097.table\
+	bufr/tables/0/wmo/25/codetables/2099.table\
+	bufr/tables/0/wmo/25/codetables/2101.table\
+	bufr/tables/0/wmo/25/codetables/2103.table\
+	bufr/tables/0/wmo/25/codetables/2104.table\
+	bufr/tables/0/wmo/25/codetables/21066.table\
+	bufr/tables/0/wmo/25/codetables/21067.table\
+	bufr/tables/0/wmo/25/codetables/21068.table\
+	bufr/tables/0/wmo/25/codetables/21069.table\
+	bufr/tables/0/wmo/25/codetables/21070.table\
+	bufr/tables/0/wmo/25/codetables/21072.table\
+	bufr/tables/0/wmo/25/codetables/21073.table\
+	bufr/tables/0/wmo/25/codetables/21076.table\
+	bufr/tables/0/wmo/25/codetables/21109.table\
+	bufr/tables/0/wmo/25/codetables/21115.table\
+	bufr/tables/0/wmo/25/codetables/21116.table\
+	bufr/tables/0/wmo/25/codetables/21119.table\
+	bufr/tables/0/wmo/25/codetables/21144.table\
+	bufr/tables/0/wmo/25/codetables/21148.table\
+	bufr/tables/0/wmo/25/codetables/2115.table\
+	bufr/tables/0/wmo/25/codetables/21150.table\
+	bufr/tables/0/wmo/25/codetables/21155.table\
+	bufr/tables/0/wmo/25/codetables/21158.table\
+	bufr/tables/0/wmo/25/codetables/21159.table\
+	bufr/tables/0/wmo/25/codetables/21169.table\
+	bufr/tables/0/wmo/25/codetables/2119.table\
+	bufr/tables/0/wmo/25/codetables/2131.table\
+	bufr/tables/0/wmo/25/codetables/2137.table\
+	bufr/tables/0/wmo/25/codetables/2138.table\
+	bufr/tables/0/wmo/25/codetables/2139.table\
+	bufr/tables/0/wmo/25/codetables/2143.table\
+	bufr/tables/0/wmo/25/codetables/2144.table\
+	bufr/tables/0/wmo/25/codetables/2145.table\
+	bufr/tables/0/wmo/25/codetables/2146.table\
+	bufr/tables/0/wmo/25/codetables/2147.table\
+	bufr/tables/0/wmo/25/codetables/2148.table\
+	bufr/tables/0/wmo/25/codetables/2149.table\
+	bufr/tables/0/wmo/25/codetables/2150.table\
+	bufr/tables/0/wmo/25/codetables/2151.table\
+	bufr/tables/0/wmo/25/codetables/2152.table\
+	bufr/tables/0/wmo/25/codetables/2158.table\
+	bufr/tables/0/wmo/25/codetables/2159.table\
+	bufr/tables/0/wmo/25/codetables/2160.table\
+	bufr/tables/0/wmo/25/codetables/2163.table\
+	bufr/tables/0/wmo/25/codetables/2164.table\
+	bufr/tables/0/wmo/25/codetables/2165.table\
+	bufr/tables/0/wmo/25/codetables/2166.table\
+	bufr/tables/0/wmo/25/codetables/2167.table\
+	bufr/tables/0/wmo/25/codetables/2169.table\
+	bufr/tables/0/wmo/25/codetables/2170.table\
+	bufr/tables/0/wmo/25/codetables/2172.table\
+	bufr/tables/0/wmo/25/codetables/2175.table\
+	bufr/tables/0/wmo/25/codetables/2176.table\
+	bufr/tables/0/wmo/25/codetables/2177.table\
+	bufr/tables/0/wmo/25/codetables/2178.table\
+	bufr/tables/0/wmo/25/codetables/2179.table\
+	bufr/tables/0/wmo/25/codetables/2180.table\
+	bufr/tables/0/wmo/25/codetables/2181.table\
+	bufr/tables/0/wmo/25/codetables/2182.table\
+	bufr/tables/0/wmo/25/codetables/2183.table\
+	bufr/tables/0/wmo/25/codetables/2184.table\
+	bufr/tables/0/wmo/25/codetables/2185.table\
+	bufr/tables/0/wmo/25/codetables/2186.table\
+	bufr/tables/0/wmo/25/codetables/2187.table\
+	bufr/tables/0/wmo/25/codetables/2188.table\
+	bufr/tables/0/wmo/25/codetables/2189.table\
+	bufr/tables/0/wmo/25/codetables/2191.table\
+	bufr/tables/0/wmo/25/codetables/22056.table\
+	bufr/tables/0/wmo/25/codetables/22060.table\
+	bufr/tables/0/wmo/25/codetables/22061.table\
+	bufr/tables/0/wmo/25/codetables/22067.table\
+	bufr/tables/0/wmo/25/codetables/22068.table\
+	bufr/tables/0/wmo/25/codetables/22120.table\
+	bufr/tables/0/wmo/25/codetables/22121.table\
+	bufr/tables/0/wmo/25/codetables/22122.table\
+	bufr/tables/0/wmo/25/codetables/22123.table\
+	bufr/tables/0/wmo/25/codetables/22178.table\
+	bufr/tables/0/wmo/25/codetables/23001.table\
+	bufr/tables/0/wmo/25/codetables/23002.table\
+	bufr/tables/0/wmo/25/codetables/23003.table\
+	bufr/tables/0/wmo/25/codetables/23004.table\
+	bufr/tables/0/wmo/25/codetables/23005.table\
+	bufr/tables/0/wmo/25/codetables/23006.table\
+	bufr/tables/0/wmo/25/codetables/23007.table\
+	bufr/tables/0/wmo/25/codetables/23008.table\
+	bufr/tables/0/wmo/25/codetables/23009.table\
+	bufr/tables/0/wmo/25/codetables/23016.table\
+	bufr/tables/0/wmo/25/codetables/23018.table\
+	bufr/tables/0/wmo/25/codetables/23031.table\
+	bufr/tables/0/wmo/25/codetables/23032.table\
+	bufr/tables/0/wmo/25/codetables/24003.table\
+	bufr/tables/0/wmo/25/codetables/25004.table\
+	bufr/tables/0/wmo/25/codetables/25005.table\
+	bufr/tables/0/wmo/25/codetables/25006.table\
+	bufr/tables/0/wmo/25/codetables/25009.table\
+	bufr/tables/0/wmo/25/codetables/25010.table\
+	bufr/tables/0/wmo/25/codetables/25011.table\
+	bufr/tables/0/wmo/25/codetables/25012.table\
+	bufr/tables/0/wmo/25/codetables/25013.table\
+	bufr/tables/0/wmo/25/codetables/25015.table\
+	bufr/tables/0/wmo/25/codetables/25017.table\
+	bufr/tables/0/wmo/25/codetables/25020.table\
+	bufr/tables/0/wmo/25/codetables/25021.table\
+	bufr/tables/0/wmo/25/codetables/25022.table\
+	bufr/tables/0/wmo/25/codetables/25023.table\
+	bufr/tables/0/wmo/25/codetables/25024.table\
+	bufr/tables/0/wmo/25/codetables/25029.table\
+	bufr/tables/0/wmo/25/codetables/25030.table\
+	bufr/tables/0/wmo/25/codetables/25031.table\
+	bufr/tables/0/wmo/25/codetables/25032.table\
+	bufr/tables/0/wmo/25/codetables/25033.table\
+	bufr/tables/0/wmo/25/codetables/25034.table\
+	bufr/tables/0/wmo/25/codetables/25035.table\
+	bufr/tables/0/wmo/25/codetables/25036.table\
+	bufr/tables/0/wmo/25/codetables/25040.table\
+	bufr/tables/0/wmo/25/codetables/25041.table\
+	bufr/tables/0/wmo/25/codetables/25042.table\
+	bufr/tables/0/wmo/25/codetables/25053.table\
+	bufr/tables/0/wmo/25/codetables/25063.table\
+	bufr/tables/0/wmo/25/codetables/25069.table\
+	bufr/tables/0/wmo/25/codetables/25086.table\
+	bufr/tables/0/wmo/25/codetables/25090.table\
+	bufr/tables/0/wmo/25/codetables/25093.table\
+	bufr/tables/0/wmo/25/codetables/25095.table\
+	bufr/tables/0/wmo/25/codetables/25096.table\
+	bufr/tables/0/wmo/25/codetables/25097.table\
+	bufr/tables/0/wmo/25/codetables/25098.table\
+	bufr/tables/0/wmo/25/codetables/25099.table\
+	bufr/tables/0/wmo/25/codetables/25110.table\
+	bufr/tables/0/wmo/25/codetables/25112.table\
+	bufr/tables/0/wmo/25/codetables/25113.table\
+	bufr/tables/0/wmo/25/codetables/25120.table\
+	bufr/tables/0/wmo/25/codetables/25122.table\
+	bufr/tables/0/wmo/25/codetables/25123.table\
+	bufr/tables/0/wmo/25/codetables/25124.table\
+	bufr/tables/0/wmo/25/codetables/25150.table\
+	bufr/tables/0/wmo/25/codetables/25174.table\
+	bufr/tables/0/wmo/25/codetables/25181.table\
+	bufr/tables/0/wmo/25/codetables/25182.table\
+	bufr/tables/0/wmo/25/codetables/25184.table\
+	bufr/tables/0/wmo/25/codetables/26010.table\
+	bufr/tables/0/wmo/25/codetables/29001.table\
+	bufr/tables/0/wmo/25/codetables/29002.table\
+	bufr/tables/0/wmo/25/codetables/30031.table\
+	bufr/tables/0/wmo/25/codetables/30032.table\
+	bufr/tables/0/wmo/25/codetables/3010.table\
+	bufr/tables/0/wmo/25/codetables/3011.table\
+	bufr/tables/0/wmo/25/codetables/3012.table\
+	bufr/tables/0/wmo/25/codetables/31021.table\
+	bufr/tables/0/wmo/25/codetables/31031.table\
+	bufr/tables/0/wmo/25/codetables/33002.table\
+	bufr/tables/0/wmo/25/codetables/33003.table\
+	bufr/tables/0/wmo/25/codetables/33005.table\
+	bufr/tables/0/wmo/25/codetables/33006.table\
+	bufr/tables/0/wmo/25/codetables/33015.table\
+	bufr/tables/0/wmo/25/codetables/33020.table\
+	bufr/tables/0/wmo/25/codetables/33021.table\
+	bufr/tables/0/wmo/25/codetables/33022.table\
+	bufr/tables/0/wmo/25/codetables/33023.table\
+	bufr/tables/0/wmo/25/codetables/33024.table\
+	bufr/tables/0/wmo/25/codetables/33025.table\
+	bufr/tables/0/wmo/25/codetables/33026.table\
+	bufr/tables/0/wmo/25/codetables/33027.table\
+	bufr/tables/0/wmo/25/codetables/33028.table\
+	bufr/tables/0/wmo/25/codetables/33030.table\
+	bufr/tables/0/wmo/25/codetables/33031.table\
+	bufr/tables/0/wmo/25/codetables/33032.table\
+	bufr/tables/0/wmo/25/codetables/33033.table\
+	bufr/tables/0/wmo/25/codetables/33035.table\
+	bufr/tables/0/wmo/25/codetables/33037.table\
+	bufr/tables/0/wmo/25/codetables/33038.table\
+	bufr/tables/0/wmo/25/codetables/33039.table\
+	bufr/tables/0/wmo/25/codetables/33041.table\
+	bufr/tables/0/wmo/25/codetables/33042.table\
+	bufr/tables/0/wmo/25/codetables/33043.table\
+	bufr/tables/0/wmo/25/codetables/33044.table\
+	bufr/tables/0/wmo/25/codetables/33047.table\
+	bufr/tables/0/wmo/25/codetables/33048.table\
+	bufr/tables/0/wmo/25/codetables/33049.table\
+	bufr/tables/0/wmo/25/codetables/33050.table\
+	bufr/tables/0/wmo/25/codetables/33060.table\
+	bufr/tables/0/wmo/25/codetables/33070.table\
+	bufr/tables/0/wmo/25/codetables/33071.table\
+	bufr/tables/0/wmo/25/codetables/33072.table\
+	bufr/tables/0/wmo/25/codetables/33075.table\
+	bufr/tables/0/wmo/25/codetables/33076.table\
+	bufr/tables/0/wmo/25/codetables/33077.table\
+	bufr/tables/0/wmo/25/codetables/33078.table\
+	bufr/tables/0/wmo/25/codetables/33079.table\
+	bufr/tables/0/wmo/25/codetables/33080.table\
+	bufr/tables/0/wmo/25/codetables/33081.table\
+	bufr/tables/0/wmo/25/codetables/33082.table\
+	bufr/tables/0/wmo/25/codetables/33083.table\
+	bufr/tables/0/wmo/25/codetables/33084.table\
+	bufr/tables/0/wmo/25/codetables/33085.table\
+	bufr/tables/0/wmo/25/codetables/33086.table\
+	bufr/tables/0/wmo/25/codetables/33087.table\
+	bufr/tables/0/wmo/25/codetables/33088.table\
+	bufr/tables/0/wmo/25/codetables/35000.table\
+	bufr/tables/0/wmo/25/codetables/35001.table\
+	bufr/tables/0/wmo/25/codetables/35030.table\
+	bufr/tables/0/wmo/25/codetables/35031.table\
+	bufr/tables/0/wmo/25/codetables/35032.table\
+	bufr/tables/0/wmo/25/codetables/35033.table\
+	bufr/tables/0/wmo/25/codetables/35034.table\
+	bufr/tables/0/wmo/25/codetables/35035.table\
+	bufr/tables/0/wmo/25/codetables/40005.table\
+	bufr/tables/0/wmo/25/codetables/40006.table\
+	bufr/tables/0/wmo/25/codetables/40011.table\
+	bufr/tables/0/wmo/25/codetables/40012.table\
+	bufr/tables/0/wmo/25/codetables/40013.table\
+	bufr/tables/0/wmo/25/codetables/40020.table\
+	bufr/tables/0/wmo/25/codetables/40023.table\
+	bufr/tables/0/wmo/25/codetables/40024.table\
+	bufr/tables/0/wmo/25/codetables/40025.table\
+	bufr/tables/0/wmo/25/codetables/40028.table\
+	bufr/tables/0/wmo/25/codetables/4059.table\
+	bufr/tables/0/wmo/25/codetables/4080.table\
+	bufr/tables/0/wmo/25/codetables/8001.table\
+	bufr/tables/0/wmo/25/codetables/8002.table\
+	bufr/tables/0/wmo/25/codetables/8003.table\
+	bufr/tables/0/wmo/25/codetables/8004.table\
+	bufr/tables/0/wmo/25/codetables/8005.table\
+	bufr/tables/0/wmo/25/codetables/8006.table\
+	bufr/tables/0/wmo/25/codetables/8007.table\
+	bufr/tables/0/wmo/25/codetables/8008.table\
+	bufr/tables/0/wmo/25/codetables/8009.table\
+	bufr/tables/0/wmo/25/codetables/8010.table\
+	bufr/tables/0/wmo/25/codetables/8011.table\
+	bufr/tables/0/wmo/25/codetables/8012.table\
+	bufr/tables/0/wmo/25/codetables/8013.table\
+	bufr/tables/0/wmo/25/codetables/8014.table\
+	bufr/tables/0/wmo/25/codetables/8015.table\
+	bufr/tables/0/wmo/25/codetables/8016.table\
+	bufr/tables/0/wmo/25/codetables/8017.table\
+	bufr/tables/0/wmo/25/codetables/8018.table\
+	bufr/tables/0/wmo/25/codetables/8019.table\
+	bufr/tables/0/wmo/25/codetables/8021.table\
+	bufr/tables/0/wmo/25/codetables/8023.table\
+	bufr/tables/0/wmo/25/codetables/8024.table\
+	bufr/tables/0/wmo/25/codetables/8025.table\
+	bufr/tables/0/wmo/25/codetables/8026.table\
+	bufr/tables/0/wmo/25/codetables/8029.table\
+	bufr/tables/0/wmo/25/codetables/8032.table\
+	bufr/tables/0/wmo/25/codetables/8033.table\
+	bufr/tables/0/wmo/25/codetables/8034.table\
+	bufr/tables/0/wmo/25/codetables/8035.table\
+	bufr/tables/0/wmo/25/codetables/8036.table\
+	bufr/tables/0/wmo/25/codetables/8039.table\
+	bufr/tables/0/wmo/25/codetables/8040.table\
+	bufr/tables/0/wmo/25/codetables/8041.table\
+	bufr/tables/0/wmo/25/codetables/8042.table\
+	bufr/tables/0/wmo/25/codetables/8043.table\
+	bufr/tables/0/wmo/25/codetables/8050.table\
+	bufr/tables/0/wmo/25/codetables/8051.table\
+	bufr/tables/0/wmo/25/codetables/8052.table\
+	bufr/tables/0/wmo/25/codetables/8053.table\
+	bufr/tables/0/wmo/25/codetables/8054.table\
+	bufr/tables/0/wmo/25/codetables/8060.table\
+	bufr/tables/0/wmo/25/codetables/8065.table\
+	bufr/tables/0/wmo/25/codetables/8066.table\
+	bufr/tables/0/wmo/25/codetables/8070.table\
+	bufr/tables/0/wmo/25/codetables/8072.table\
+	bufr/tables/0/wmo/25/codetables/8074.table\
+	bufr/tables/0/wmo/25/codetables/8075.table\
+	bufr/tables/0/wmo/25/codetables/8076.table\
+	bufr/tables/0/wmo/25/codetables/8077.table\
+	bufr/tables/0/wmo/25/codetables/8079.table\
+	bufr/tables/0/wmo/25/codetables/8080.table\
+	bufr/tables/0/wmo/25/codetables/8081.table\
+	bufr/tables/0/wmo/25/codetables/8082.table\
+	bufr/tables/0/wmo/25/codetables/8083.table\
+	bufr/tables/0/wmo/25/codetables/8085.table\
+	bufr/tables/0/wmo/25/codetables/8086.table\
+	bufr/tables/0/wmo/25/codetables/8087.table\
+	bufr/tables/0/wmo/25/codetables/8091.table
+
 definitionsbufr_tables_0_wmo_6dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/6
 dist_definitionsbufr_tables_0_wmo_6_DATA = \
 	bufr/tables/0/wmo/6/element.table\
@@ -5463,6 +7499,1050 @@ dist_definitionsbufr_tables_0_wmo_6_codetables_DATA = \
 	bufr/tables/0/wmo/6/codetables/8070.table\
 	bufr/tables/0/wmo/6/codetables/8072.table
 
+definitionsbufr_tables_0_wmo_7dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/7
+dist_definitionsbufr_tables_0_wmo_7_DATA = \
+	bufr/tables/0/wmo/7/element.table\
+	bufr/tables/0/wmo/7/sequence.def
+
+definitionsbufr_tables_0_wmo_7_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/7/codetables
+dist_definitionsbufr_tables_0_wmo_7_codetables_DATA = \
+	bufr/tables/0/wmo/7/codetables/1003.table\
+	bufr/tables/0/wmo/7/codetables/10063.table\
+	bufr/tables/0/wmo/7/codetables/10064.table\
+	bufr/tables/0/wmo/7/codetables/1007.table\
+	bufr/tables/0/wmo/7/codetables/1031.table\
+	bufr/tables/0/wmo/7/codetables/1032.table\
+	bufr/tables/0/wmo/7/codetables/1033.table\
+	bufr/tables/0/wmo/7/codetables/1035.table\
+	bufr/tables/0/wmo/7/codetables/1090.table\
+	bufr/tables/0/wmo/7/codetables/1092.table\
+	bufr/tables/0/wmo/7/codetables/11031.table\
+	bufr/tables/0/wmo/7/codetables/11037.table\
+	bufr/tables/0/wmo/7/codetables/11038.table\
+	bufr/tables/0/wmo/7/codetables/11039.table\
+	bufr/tables/0/wmo/7/codetables/13038.table\
+	bufr/tables/0/wmo/7/codetables/13039.table\
+	bufr/tables/0/wmo/7/codetables/13040.table\
+	bufr/tables/0/wmo/7/codetables/13041.table\
+	bufr/tables/0/wmo/7/codetables/13051.table\
+	bufr/tables/0/wmo/7/codetables/13056.table\
+	bufr/tables/0/wmo/7/codetables/13057.table\
+	bufr/tables/0/wmo/7/codetables/15025.table\
+	bufr/tables/0/wmo/7/codetables/19001.table\
+	bufr/tables/0/wmo/7/codetables/19008.table\
+	bufr/tables/0/wmo/7/codetables/19010.table\
+	bufr/tables/0/wmo/7/codetables/20003.table\
+	bufr/tables/0/wmo/7/codetables/20004.table\
+	bufr/tables/0/wmo/7/codetables/20005.table\
+	bufr/tables/0/wmo/7/codetables/20008.table\
+	bufr/tables/0/wmo/7/codetables/20009.table\
+	bufr/tables/0/wmo/7/codetables/2001.table\
+	bufr/tables/0/wmo/7/codetables/20011.table\
+	bufr/tables/0/wmo/7/codetables/20012.table\
+	bufr/tables/0/wmo/7/codetables/20017.table\
+	bufr/tables/0/wmo/7/codetables/20018.table\
+	bufr/tables/0/wmo/7/codetables/2002.table\
+	bufr/tables/0/wmo/7/codetables/20021.table\
+	bufr/tables/0/wmo/7/codetables/20022.table\
+	bufr/tables/0/wmo/7/codetables/20023.table\
+	bufr/tables/0/wmo/7/codetables/20024.table\
+	bufr/tables/0/wmo/7/codetables/20025.table\
+	bufr/tables/0/wmo/7/codetables/20026.table\
+	bufr/tables/0/wmo/7/codetables/20027.table\
+	bufr/tables/0/wmo/7/codetables/20029.table\
+	bufr/tables/0/wmo/7/codetables/2003.table\
+	bufr/tables/0/wmo/7/codetables/20032.table\
+	bufr/tables/0/wmo/7/codetables/20033.table\
+	bufr/tables/0/wmo/7/codetables/20034.table\
+	bufr/tables/0/wmo/7/codetables/20035.table\
+	bufr/tables/0/wmo/7/codetables/20036.table\
+	bufr/tables/0/wmo/7/codetables/20037.table\
+	bufr/tables/0/wmo/7/codetables/2004.table\
+	bufr/tables/0/wmo/7/codetables/20040.table\
+	bufr/tables/0/wmo/7/codetables/20041.table\
+	bufr/tables/0/wmo/7/codetables/20042.table\
+	bufr/tables/0/wmo/7/codetables/20045.table\
+	bufr/tables/0/wmo/7/codetables/20050.table\
+	bufr/tables/0/wmo/7/codetables/20055.table\
+	bufr/tables/0/wmo/7/codetables/20056.table\
+	bufr/tables/0/wmo/7/codetables/20062.table\
+	bufr/tables/0/wmo/7/codetables/20063.table\
+	bufr/tables/0/wmo/7/codetables/20071.table\
+	bufr/tables/0/wmo/7/codetables/20086.table\
+	bufr/tables/0/wmo/7/codetables/20090.table\
+	bufr/tables/0/wmo/7/codetables/20101.table\
+	bufr/tables/0/wmo/7/codetables/20102.table\
+	bufr/tables/0/wmo/7/codetables/2011.table\
+	bufr/tables/0/wmo/7/codetables/2012.table\
+	bufr/tables/0/wmo/7/codetables/2013.table\
+	bufr/tables/0/wmo/7/codetables/2014.table\
+	bufr/tables/0/wmo/7/codetables/2015.table\
+	bufr/tables/0/wmo/7/codetables/2016.table\
+	bufr/tables/0/wmo/7/codetables/2019.table\
+	bufr/tables/0/wmo/7/codetables/2020.table\
+	bufr/tables/0/wmo/7/codetables/2021.table\
+	bufr/tables/0/wmo/7/codetables/2022.table\
+	bufr/tables/0/wmo/7/codetables/2023.table\
+	bufr/tables/0/wmo/7/codetables/2024.table\
+	bufr/tables/0/wmo/7/codetables/2025.table\
+	bufr/tables/0/wmo/7/codetables/2030.table\
+	bufr/tables/0/wmo/7/codetables/2031.table\
+	bufr/tables/0/wmo/7/codetables/2032.table\
+	bufr/tables/0/wmo/7/codetables/2033.table\
+	bufr/tables/0/wmo/7/codetables/2034.table\
+	bufr/tables/0/wmo/7/codetables/2036.table\
+	bufr/tables/0/wmo/7/codetables/2037.table\
+	bufr/tables/0/wmo/7/codetables/2038.table\
+	bufr/tables/0/wmo/7/codetables/2039.table\
+	bufr/tables/0/wmo/7/codetables/2040.table\
+	bufr/tables/0/wmo/7/codetables/2041.table\
+	bufr/tables/0/wmo/7/codetables/2044.table\
+	bufr/tables/0/wmo/7/codetables/2045.table\
+	bufr/tables/0/wmo/7/codetables/2046.table\
+	bufr/tables/0/wmo/7/codetables/2048.table\
+	bufr/tables/0/wmo/7/codetables/2049.table\
+	bufr/tables/0/wmo/7/codetables/2050.table\
+	bufr/tables/0/wmo/7/codetables/2051.table\
+	bufr/tables/0/wmo/7/codetables/2052.table\
+	bufr/tables/0/wmo/7/codetables/2053.table\
+	bufr/tables/0/wmo/7/codetables/2054.table\
+	bufr/tables/0/wmo/7/codetables/2055.table\
+	bufr/tables/0/wmo/7/codetables/2056.table\
+	bufr/tables/0/wmo/7/codetables/2057.table\
+	bufr/tables/0/wmo/7/codetables/2058.table\
+	bufr/tables/0/wmo/7/codetables/2059.table\
+	bufr/tables/0/wmo/7/codetables/2060.table\
+	bufr/tables/0/wmo/7/codetables/2061.table\
+	bufr/tables/0/wmo/7/codetables/2062.table\
+	bufr/tables/0/wmo/7/codetables/2064.table\
+	bufr/tables/0/wmo/7/codetables/2066.table\
+	bufr/tables/0/wmo/7/codetables/2070.table\
+	bufr/tables/0/wmo/7/codetables/2080.table\
+	bufr/tables/0/wmo/7/codetables/2081.table\
+	bufr/tables/0/wmo/7/codetables/2083.table\
+	bufr/tables/0/wmo/7/codetables/2084.table\
+	bufr/tables/0/wmo/7/codetables/2095.table\
+	bufr/tables/0/wmo/7/codetables/2096.table\
+	bufr/tables/0/wmo/7/codetables/2097.table\
+	bufr/tables/0/wmo/7/codetables/2098.table\
+	bufr/tables/0/wmo/7/codetables/2101.table\
+	bufr/tables/0/wmo/7/codetables/2103.table\
+	bufr/tables/0/wmo/7/codetables/2104.table\
+	bufr/tables/0/wmo/7/codetables/21066.table\
+	bufr/tables/0/wmo/7/codetables/21067.table\
+	bufr/tables/0/wmo/7/codetables/21068.table\
+	bufr/tables/0/wmo/7/codetables/21069.table\
+	bufr/tables/0/wmo/7/codetables/21070.table\
+	bufr/tables/0/wmo/7/codetables/21072.table\
+	bufr/tables/0/wmo/7/codetables/21073.table\
+	bufr/tables/0/wmo/7/codetables/21076.table\
+	bufr/tables/0/wmo/7/codetables/21109.table\
+	bufr/tables/0/wmo/7/codetables/21115.table\
+	bufr/tables/0/wmo/7/codetables/21116.table\
+	bufr/tables/0/wmo/7/codetables/21119.table\
+	bufr/tables/0/wmo/7/codetables/21144.table\
+	bufr/tables/0/wmo/7/codetables/2115.table\
+	bufr/tables/0/wmo/7/codetables/21150.table\
+	bufr/tables/0/wmo/7/codetables/21155.table\
+	bufr/tables/0/wmo/7/codetables/21158.table\
+	bufr/tables/0/wmo/7/codetables/21159.table\
+	bufr/tables/0/wmo/7/codetables/21169.table\
+	bufr/tables/0/wmo/7/codetables/2119.table\
+	bufr/tables/0/wmo/7/codetables/2131.table\
+	bufr/tables/0/wmo/7/codetables/2143.table\
+	bufr/tables/0/wmo/7/codetables/2144.table\
+	bufr/tables/0/wmo/7/codetables/2145.table\
+	bufr/tables/0/wmo/7/codetables/2146.table\
+	bufr/tables/0/wmo/7/codetables/2148.table\
+	bufr/tables/0/wmo/7/codetables/2149.table\
+	bufr/tables/0/wmo/7/codetables/2150.table\
+	bufr/tables/0/wmo/7/codetables/2151.table\
+	bufr/tables/0/wmo/7/codetables/2152.table\
+	bufr/tables/0/wmo/7/codetables/2158.table\
+	bufr/tables/0/wmo/7/codetables/2159.table\
+	bufr/tables/0/wmo/7/codetables/2163.table\
+	bufr/tables/0/wmo/7/codetables/2164.table\
+	bufr/tables/0/wmo/7/codetables/2166.table\
+	bufr/tables/0/wmo/7/codetables/2167.table\
+	bufr/tables/0/wmo/7/codetables/2169.table\
+	bufr/tables/0/wmo/7/codetables/2172.table\
+	bufr/tables/0/wmo/7/codetables/2175.table\
+	bufr/tables/0/wmo/7/codetables/2176.table\
+	bufr/tables/0/wmo/7/codetables/2177.table\
+	bufr/tables/0/wmo/7/codetables/2178.table\
+	bufr/tables/0/wmo/7/codetables/2179.table\
+	bufr/tables/0/wmo/7/codetables/2180.table\
+	bufr/tables/0/wmo/7/codetables/2181.table\
+	bufr/tables/0/wmo/7/codetables/2182.table\
+	bufr/tables/0/wmo/7/codetables/2183.table\
+	bufr/tables/0/wmo/7/codetables/2184.table\
+	bufr/tables/0/wmo/7/codetables/2185.table\
+	bufr/tables/0/wmo/7/codetables/2186.table\
+	bufr/tables/0/wmo/7/codetables/2187.table\
+	bufr/tables/0/wmo/7/codetables/2188.table\
+	bufr/tables/0/wmo/7/codetables/2189.table\
+	bufr/tables/0/wmo/7/codetables/22056.table\
+	bufr/tables/0/wmo/7/codetables/22060.table\
+	bufr/tables/0/wmo/7/codetables/22061.table\
+	bufr/tables/0/wmo/7/codetables/22067.table\
+	bufr/tables/0/wmo/7/codetables/22068.table\
+	bufr/tables/0/wmo/7/codetables/22120.table\
+	bufr/tables/0/wmo/7/codetables/22121.table\
+	bufr/tables/0/wmo/7/codetables/22122.table\
+	bufr/tables/0/wmo/7/codetables/22123.table\
+	bufr/tables/0/wmo/7/codetables/23001.table\
+	bufr/tables/0/wmo/7/codetables/23002.table\
+	bufr/tables/0/wmo/7/codetables/23003.table\
+	bufr/tables/0/wmo/7/codetables/23004.table\
+	bufr/tables/0/wmo/7/codetables/23005.table\
+	bufr/tables/0/wmo/7/codetables/23006.table\
+	bufr/tables/0/wmo/7/codetables/23007.table\
+	bufr/tables/0/wmo/7/codetables/23008.table\
+	bufr/tables/0/wmo/7/codetables/23009.table\
+	bufr/tables/0/wmo/7/codetables/23016.table\
+	bufr/tables/0/wmo/7/codetables/23018.table\
+	bufr/tables/0/wmo/7/codetables/23031.table\
+	bufr/tables/0/wmo/7/codetables/23032.table\
+	bufr/tables/0/wmo/7/codetables/24003.table\
+	bufr/tables/0/wmo/7/codetables/25004.table\
+	bufr/tables/0/wmo/7/codetables/25005.table\
+	bufr/tables/0/wmo/7/codetables/25006.table\
+	bufr/tables/0/wmo/7/codetables/25009.table\
+	bufr/tables/0/wmo/7/codetables/25010.table\
+	bufr/tables/0/wmo/7/codetables/25011.table\
+	bufr/tables/0/wmo/7/codetables/25012.table\
+	bufr/tables/0/wmo/7/codetables/25013.table\
+	bufr/tables/0/wmo/7/codetables/25015.table\
+	bufr/tables/0/wmo/7/codetables/25017.table\
+	bufr/tables/0/wmo/7/codetables/25020.table\
+	bufr/tables/0/wmo/7/codetables/25021.table\
+	bufr/tables/0/wmo/7/codetables/25030.table\
+	bufr/tables/0/wmo/7/codetables/25032.table\
+	bufr/tables/0/wmo/7/codetables/25033.table\
+	bufr/tables/0/wmo/7/codetables/25034.table\
+	bufr/tables/0/wmo/7/codetables/25036.table\
+	bufr/tables/0/wmo/7/codetables/25040.table\
+	bufr/tables/0/wmo/7/codetables/25041.table\
+	bufr/tables/0/wmo/7/codetables/25042.table\
+	bufr/tables/0/wmo/7/codetables/25045.table\
+	bufr/tables/0/wmo/7/codetables/25046.table\
+	bufr/tables/0/wmo/7/codetables/25047.table\
+	bufr/tables/0/wmo/7/codetables/25048.table\
+	bufr/tables/0/wmo/7/codetables/25049.table\
+	bufr/tables/0/wmo/7/codetables/25051.table\
+	bufr/tables/0/wmo/7/codetables/25053.table\
+	bufr/tables/0/wmo/7/codetables/25069.table\
+	bufr/tables/0/wmo/7/codetables/25086.table\
+	bufr/tables/0/wmo/7/codetables/25093.table\
+	bufr/tables/0/wmo/7/codetables/25095.table\
+	bufr/tables/0/wmo/7/codetables/25096.table\
+	bufr/tables/0/wmo/7/codetables/25097.table\
+	bufr/tables/0/wmo/7/codetables/25098.table\
+	bufr/tables/0/wmo/7/codetables/25099.table\
+	bufr/tables/0/wmo/7/codetables/25110.table\
+	bufr/tables/0/wmo/7/codetables/25120.table\
+	bufr/tables/0/wmo/7/codetables/25122.table\
+	bufr/tables/0/wmo/7/codetables/25123.table\
+	bufr/tables/0/wmo/7/codetables/25124.table\
+	bufr/tables/0/wmo/7/codetables/26010.table\
+	bufr/tables/0/wmo/7/codetables/29001.table\
+	bufr/tables/0/wmo/7/codetables/29002.table\
+	bufr/tables/0/wmo/7/codetables/30031.table\
+	bufr/tables/0/wmo/7/codetables/30032.table\
+	bufr/tables/0/wmo/7/codetables/31021.table\
+	bufr/tables/0/wmo/7/codetables/31031.table\
+	bufr/tables/0/wmo/7/codetables/33002.table\
+	bufr/tables/0/wmo/7/codetables/33003.table\
+	bufr/tables/0/wmo/7/codetables/33005.table\
+	bufr/tables/0/wmo/7/codetables/33006.table\
+	bufr/tables/0/wmo/7/codetables/33015.table\
+	bufr/tables/0/wmo/7/codetables/33020.table\
+	bufr/tables/0/wmo/7/codetables/33021.table\
+	bufr/tables/0/wmo/7/codetables/33022.table\
+	bufr/tables/0/wmo/7/codetables/33023.table\
+	bufr/tables/0/wmo/7/codetables/33024.table\
+	bufr/tables/0/wmo/7/codetables/33025.table\
+	bufr/tables/0/wmo/7/codetables/33026.table\
+	bufr/tables/0/wmo/7/codetables/33027.table\
+	bufr/tables/0/wmo/7/codetables/33028.table\
+	bufr/tables/0/wmo/7/codetables/33030.table\
+	bufr/tables/0/wmo/7/codetables/33031.table\
+	bufr/tables/0/wmo/7/codetables/33032.table\
+	bufr/tables/0/wmo/7/codetables/33033.table\
+	bufr/tables/0/wmo/7/codetables/33035.table\
+	bufr/tables/0/wmo/7/codetables/33037.table\
+	bufr/tables/0/wmo/7/codetables/33038.table\
+	bufr/tables/0/wmo/7/codetables/33039.table\
+	bufr/tables/0/wmo/7/codetables/33041.table\
+	bufr/tables/0/wmo/7/codetables/33042.table\
+	bufr/tables/0/wmo/7/codetables/33043.table\
+	bufr/tables/0/wmo/7/codetables/33044.table\
+	bufr/tables/0/wmo/7/codetables/33047.table\
+	bufr/tables/0/wmo/7/codetables/33048.table\
+	bufr/tables/0/wmo/7/codetables/33049.table\
+	bufr/tables/0/wmo/7/codetables/33050.table\
+	bufr/tables/0/wmo/7/codetables/33052.table\
+	bufr/tables/0/wmo/7/codetables/33053.table\
+	bufr/tables/0/wmo/7/codetables/33060.table\
+	bufr/tables/0/wmo/7/codetables/35000.table\
+	bufr/tables/0/wmo/7/codetables/35001.table\
+	bufr/tables/0/wmo/7/codetables/35030.table\
+	bufr/tables/0/wmo/7/codetables/35031.table\
+	bufr/tables/0/wmo/7/codetables/35032.table\
+	bufr/tables/0/wmo/7/codetables/35033.table\
+	bufr/tables/0/wmo/7/codetables/35034.table\
+	bufr/tables/0/wmo/7/codetables/40011.table\
+	bufr/tables/0/wmo/7/codetables/40012.table\
+	bufr/tables/0/wmo/7/codetables/40013.table\
+	bufr/tables/0/wmo/7/codetables/4059.table\
+	bufr/tables/0/wmo/7/codetables/8001.table\
+	bufr/tables/0/wmo/7/codetables/8002.table\
+	bufr/tables/0/wmo/7/codetables/8003.table\
+	bufr/tables/0/wmo/7/codetables/8004.table\
+	bufr/tables/0/wmo/7/codetables/8005.table\
+	bufr/tables/0/wmo/7/codetables/8006.table\
+	bufr/tables/0/wmo/7/codetables/8007.table\
+	bufr/tables/0/wmo/7/codetables/8008.table\
+	bufr/tables/0/wmo/7/codetables/8009.table\
+	bufr/tables/0/wmo/7/codetables/8010.table\
+	bufr/tables/0/wmo/7/codetables/8011.table\
+	bufr/tables/0/wmo/7/codetables/8012.table\
+	bufr/tables/0/wmo/7/codetables/8013.table\
+	bufr/tables/0/wmo/7/codetables/8014.table\
+	bufr/tables/0/wmo/7/codetables/8016.table\
+	bufr/tables/0/wmo/7/codetables/8017.table\
+	bufr/tables/0/wmo/7/codetables/8018.table\
+	bufr/tables/0/wmo/7/codetables/8021.table\
+	bufr/tables/0/wmo/7/codetables/8023.table\
+	bufr/tables/0/wmo/7/codetables/8024.table\
+	bufr/tables/0/wmo/7/codetables/8025.table\
+	bufr/tables/0/wmo/7/codetables/8026.table\
+	bufr/tables/0/wmo/7/codetables/8029.table\
+	bufr/tables/0/wmo/7/codetables/8033.table\
+	bufr/tables/0/wmo/7/codetables/8035.table\
+	bufr/tables/0/wmo/7/codetables/8036.table\
+	bufr/tables/0/wmo/7/codetables/8039.table\
+	bufr/tables/0/wmo/7/codetables/8040.table\
+	bufr/tables/0/wmo/7/codetables/8041.table\
+	bufr/tables/0/wmo/7/codetables/8042.table\
+	bufr/tables/0/wmo/7/codetables/8043.table\
+	bufr/tables/0/wmo/7/codetables/8050.table\
+	bufr/tables/0/wmo/7/codetables/8051.table\
+	bufr/tables/0/wmo/7/codetables/8052.table\
+	bufr/tables/0/wmo/7/codetables/8053.table\
+	bufr/tables/0/wmo/7/codetables/8054.table\
+	bufr/tables/0/wmo/7/codetables/8060.table\
+	bufr/tables/0/wmo/7/codetables/8065.table\
+	bufr/tables/0/wmo/7/codetables/8066.table\
+	bufr/tables/0/wmo/7/codetables/8070.table\
+	bufr/tables/0/wmo/7/codetables/8072.table\
+	bufr/tables/0/wmo/7/codetables/8074.table\
+	bufr/tables/0/wmo/7/codetables/8075.table\
+	bufr/tables/0/wmo/7/codetables/8076.table\
+	bufr/tables/0/wmo/7/codetables/8077.table\
+	bufr/tables/0/wmo/7/codetables/8079.table\
+	bufr/tables/0/wmo/7/codetables/8080.table\
+	bufr/tables/0/wmo/7/codetables/8081.table\
+	bufr/tables/0/wmo/7/codetables/8082.table\
+	bufr/tables/0/wmo/7/codetables/8083.table\
+	bufr/tables/0/wmo/7/codetables/8085.table
+
+definitionsbufr_tables_0_wmo_8dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/8
+dist_definitionsbufr_tables_0_wmo_8_DATA = \
+	bufr/tables/0/wmo/8/element.table\
+	bufr/tables/0/wmo/8/sequence.def
+
+definitionsbufr_tables_0_wmo_8_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/8/codetables
+dist_definitionsbufr_tables_0_wmo_8_codetables_DATA = \
+	bufr/tables/0/wmo/8/codetables/1003.table\
+	bufr/tables/0/wmo/8/codetables/10063.table\
+	bufr/tables/0/wmo/8/codetables/10064.table\
+	bufr/tables/0/wmo/8/codetables/1007.table\
+	bufr/tables/0/wmo/8/codetables/1031.table\
+	bufr/tables/0/wmo/8/codetables/1032.table\
+	bufr/tables/0/wmo/8/codetables/1033.table\
+	bufr/tables/0/wmo/8/codetables/1035.table\
+	bufr/tables/0/wmo/8/codetables/1090.table\
+	bufr/tables/0/wmo/8/codetables/1092.table\
+	bufr/tables/0/wmo/8/codetables/11031.table\
+	bufr/tables/0/wmo/8/codetables/11037.table\
+	bufr/tables/0/wmo/8/codetables/11038.table\
+	bufr/tables/0/wmo/8/codetables/11039.table\
+	bufr/tables/0/wmo/8/codetables/13038.table\
+	bufr/tables/0/wmo/8/codetables/13039.table\
+	bufr/tables/0/wmo/8/codetables/13040.table\
+	bufr/tables/0/wmo/8/codetables/13041.table\
+	bufr/tables/0/wmo/8/codetables/13051.table\
+	bufr/tables/0/wmo/8/codetables/13056.table\
+	bufr/tables/0/wmo/8/codetables/13057.table\
+	bufr/tables/0/wmo/8/codetables/15025.table\
+	bufr/tables/0/wmo/8/codetables/19001.table\
+	bufr/tables/0/wmo/8/codetables/19008.table\
+	bufr/tables/0/wmo/8/codetables/19010.table\
+	bufr/tables/0/wmo/8/codetables/20003.table\
+	bufr/tables/0/wmo/8/codetables/20004.table\
+	bufr/tables/0/wmo/8/codetables/20005.table\
+	bufr/tables/0/wmo/8/codetables/20008.table\
+	bufr/tables/0/wmo/8/codetables/20009.table\
+	bufr/tables/0/wmo/8/codetables/2001.table\
+	bufr/tables/0/wmo/8/codetables/20011.table\
+	bufr/tables/0/wmo/8/codetables/20012.table\
+	bufr/tables/0/wmo/8/codetables/20017.table\
+	bufr/tables/0/wmo/8/codetables/20018.table\
+	bufr/tables/0/wmo/8/codetables/2002.table\
+	bufr/tables/0/wmo/8/codetables/20021.table\
+	bufr/tables/0/wmo/8/codetables/20022.table\
+	bufr/tables/0/wmo/8/codetables/20023.table\
+	bufr/tables/0/wmo/8/codetables/20024.table\
+	bufr/tables/0/wmo/8/codetables/20025.table\
+	bufr/tables/0/wmo/8/codetables/20026.table\
+	bufr/tables/0/wmo/8/codetables/20027.table\
+	bufr/tables/0/wmo/8/codetables/20029.table\
+	bufr/tables/0/wmo/8/codetables/2003.table\
+	bufr/tables/0/wmo/8/codetables/20032.table\
+	bufr/tables/0/wmo/8/codetables/20033.table\
+	bufr/tables/0/wmo/8/codetables/20034.table\
+	bufr/tables/0/wmo/8/codetables/20035.table\
+	bufr/tables/0/wmo/8/codetables/20036.table\
+	bufr/tables/0/wmo/8/codetables/20037.table\
+	bufr/tables/0/wmo/8/codetables/2004.table\
+	bufr/tables/0/wmo/8/codetables/20040.table\
+	bufr/tables/0/wmo/8/codetables/20041.table\
+	bufr/tables/0/wmo/8/codetables/20042.table\
+	bufr/tables/0/wmo/8/codetables/20045.table\
+	bufr/tables/0/wmo/8/codetables/20050.table\
+	bufr/tables/0/wmo/8/codetables/20055.table\
+	bufr/tables/0/wmo/8/codetables/20056.table\
+	bufr/tables/0/wmo/8/codetables/20062.table\
+	bufr/tables/0/wmo/8/codetables/20063.table\
+	bufr/tables/0/wmo/8/codetables/20071.table\
+	bufr/tables/0/wmo/8/codetables/20086.table\
+	bufr/tables/0/wmo/8/codetables/20090.table\
+	bufr/tables/0/wmo/8/codetables/20101.table\
+	bufr/tables/0/wmo/8/codetables/20102.table\
+	bufr/tables/0/wmo/8/codetables/2011.table\
+	bufr/tables/0/wmo/8/codetables/2012.table\
+	bufr/tables/0/wmo/8/codetables/2013.table\
+	bufr/tables/0/wmo/8/codetables/2014.table\
+	bufr/tables/0/wmo/8/codetables/2015.table\
+	bufr/tables/0/wmo/8/codetables/2016.table\
+	bufr/tables/0/wmo/8/codetables/2019.table\
+	bufr/tables/0/wmo/8/codetables/2020.table\
+	bufr/tables/0/wmo/8/codetables/2021.table\
+	bufr/tables/0/wmo/8/codetables/2022.table\
+	bufr/tables/0/wmo/8/codetables/2023.table\
+	bufr/tables/0/wmo/8/codetables/2024.table\
+	bufr/tables/0/wmo/8/codetables/2025.table\
+	bufr/tables/0/wmo/8/codetables/2030.table\
+	bufr/tables/0/wmo/8/codetables/2031.table\
+	bufr/tables/0/wmo/8/codetables/2032.table\
+	bufr/tables/0/wmo/8/codetables/2033.table\
+	bufr/tables/0/wmo/8/codetables/2034.table\
+	bufr/tables/0/wmo/8/codetables/2036.table\
+	bufr/tables/0/wmo/8/codetables/2037.table\
+	bufr/tables/0/wmo/8/codetables/2038.table\
+	bufr/tables/0/wmo/8/codetables/2039.table\
+	bufr/tables/0/wmo/8/codetables/2040.table\
+	bufr/tables/0/wmo/8/codetables/2041.table\
+	bufr/tables/0/wmo/8/codetables/2044.table\
+	bufr/tables/0/wmo/8/codetables/2045.table\
+	bufr/tables/0/wmo/8/codetables/2046.table\
+	bufr/tables/0/wmo/8/codetables/2048.table\
+	bufr/tables/0/wmo/8/codetables/2049.table\
+	bufr/tables/0/wmo/8/codetables/2050.table\
+	bufr/tables/0/wmo/8/codetables/2051.table\
+	bufr/tables/0/wmo/8/codetables/2052.table\
+	bufr/tables/0/wmo/8/codetables/2053.table\
+	bufr/tables/0/wmo/8/codetables/2054.table\
+	bufr/tables/0/wmo/8/codetables/2055.table\
+	bufr/tables/0/wmo/8/codetables/2056.table\
+	bufr/tables/0/wmo/8/codetables/2057.table\
+	bufr/tables/0/wmo/8/codetables/2058.table\
+	bufr/tables/0/wmo/8/codetables/2059.table\
+	bufr/tables/0/wmo/8/codetables/2060.table\
+	bufr/tables/0/wmo/8/codetables/2061.table\
+	bufr/tables/0/wmo/8/codetables/2062.table\
+	bufr/tables/0/wmo/8/codetables/2064.table\
+	bufr/tables/0/wmo/8/codetables/2066.table\
+	bufr/tables/0/wmo/8/codetables/2070.table\
+	bufr/tables/0/wmo/8/codetables/2080.table\
+	bufr/tables/0/wmo/8/codetables/2081.table\
+	bufr/tables/0/wmo/8/codetables/2083.table\
+	bufr/tables/0/wmo/8/codetables/2084.table\
+	bufr/tables/0/wmo/8/codetables/2095.table\
+	bufr/tables/0/wmo/8/codetables/2096.table\
+	bufr/tables/0/wmo/8/codetables/2097.table\
+	bufr/tables/0/wmo/8/codetables/2098.table\
+	bufr/tables/0/wmo/8/codetables/2101.table\
+	bufr/tables/0/wmo/8/codetables/2103.table\
+	bufr/tables/0/wmo/8/codetables/2104.table\
+	bufr/tables/0/wmo/8/codetables/21066.table\
+	bufr/tables/0/wmo/8/codetables/21067.table\
+	bufr/tables/0/wmo/8/codetables/21068.table\
+	bufr/tables/0/wmo/8/codetables/21069.table\
+	bufr/tables/0/wmo/8/codetables/21070.table\
+	bufr/tables/0/wmo/8/codetables/21072.table\
+	bufr/tables/0/wmo/8/codetables/21073.table\
+	bufr/tables/0/wmo/8/codetables/21076.table\
+	bufr/tables/0/wmo/8/codetables/21109.table\
+	bufr/tables/0/wmo/8/codetables/21115.table\
+	bufr/tables/0/wmo/8/codetables/21116.table\
+	bufr/tables/0/wmo/8/codetables/21119.table\
+	bufr/tables/0/wmo/8/codetables/21144.table\
+	bufr/tables/0/wmo/8/codetables/2115.table\
+	bufr/tables/0/wmo/8/codetables/21150.table\
+	bufr/tables/0/wmo/8/codetables/21155.table\
+	bufr/tables/0/wmo/8/codetables/21158.table\
+	bufr/tables/0/wmo/8/codetables/21159.table\
+	bufr/tables/0/wmo/8/codetables/21169.table\
+	bufr/tables/0/wmo/8/codetables/2119.table\
+	bufr/tables/0/wmo/8/codetables/2131.table\
+	bufr/tables/0/wmo/8/codetables/2143.table\
+	bufr/tables/0/wmo/8/codetables/2144.table\
+	bufr/tables/0/wmo/8/codetables/2145.table\
+	bufr/tables/0/wmo/8/codetables/2146.table\
+	bufr/tables/0/wmo/8/codetables/2148.table\
+	bufr/tables/0/wmo/8/codetables/2149.table\
+	bufr/tables/0/wmo/8/codetables/2150.table\
+	bufr/tables/0/wmo/8/codetables/2151.table\
+	bufr/tables/0/wmo/8/codetables/2152.table\
+	bufr/tables/0/wmo/8/codetables/2158.table\
+	bufr/tables/0/wmo/8/codetables/2159.table\
+	bufr/tables/0/wmo/8/codetables/2163.table\
+	bufr/tables/0/wmo/8/codetables/2164.table\
+	bufr/tables/0/wmo/8/codetables/2166.table\
+	bufr/tables/0/wmo/8/codetables/2167.table\
+	bufr/tables/0/wmo/8/codetables/2169.table\
+	bufr/tables/0/wmo/8/codetables/2172.table\
+	bufr/tables/0/wmo/8/codetables/2175.table\
+	bufr/tables/0/wmo/8/codetables/2176.table\
+	bufr/tables/0/wmo/8/codetables/2177.table\
+	bufr/tables/0/wmo/8/codetables/2178.table\
+	bufr/tables/0/wmo/8/codetables/2179.table\
+	bufr/tables/0/wmo/8/codetables/2180.table\
+	bufr/tables/0/wmo/8/codetables/2181.table\
+	bufr/tables/0/wmo/8/codetables/2182.table\
+	bufr/tables/0/wmo/8/codetables/2183.table\
+	bufr/tables/0/wmo/8/codetables/2184.table\
+	bufr/tables/0/wmo/8/codetables/2185.table\
+	bufr/tables/0/wmo/8/codetables/2186.table\
+	bufr/tables/0/wmo/8/codetables/2187.table\
+	bufr/tables/0/wmo/8/codetables/2188.table\
+	bufr/tables/0/wmo/8/codetables/2189.table\
+	bufr/tables/0/wmo/8/codetables/22056.table\
+	bufr/tables/0/wmo/8/codetables/22060.table\
+	bufr/tables/0/wmo/8/codetables/22061.table\
+	bufr/tables/0/wmo/8/codetables/22067.table\
+	bufr/tables/0/wmo/8/codetables/22068.table\
+	bufr/tables/0/wmo/8/codetables/22120.table\
+	bufr/tables/0/wmo/8/codetables/22121.table\
+	bufr/tables/0/wmo/8/codetables/22122.table\
+	bufr/tables/0/wmo/8/codetables/22123.table\
+	bufr/tables/0/wmo/8/codetables/23001.table\
+	bufr/tables/0/wmo/8/codetables/23002.table\
+	bufr/tables/0/wmo/8/codetables/23003.table\
+	bufr/tables/0/wmo/8/codetables/23004.table\
+	bufr/tables/0/wmo/8/codetables/23005.table\
+	bufr/tables/0/wmo/8/codetables/23006.table\
+	bufr/tables/0/wmo/8/codetables/23007.table\
+	bufr/tables/0/wmo/8/codetables/23008.table\
+	bufr/tables/0/wmo/8/codetables/23009.table\
+	bufr/tables/0/wmo/8/codetables/23016.table\
+	bufr/tables/0/wmo/8/codetables/23018.table\
+	bufr/tables/0/wmo/8/codetables/23031.table\
+	bufr/tables/0/wmo/8/codetables/23032.table\
+	bufr/tables/0/wmo/8/codetables/24003.table\
+	bufr/tables/0/wmo/8/codetables/25004.table\
+	bufr/tables/0/wmo/8/codetables/25005.table\
+	bufr/tables/0/wmo/8/codetables/25006.table\
+	bufr/tables/0/wmo/8/codetables/25009.table\
+	bufr/tables/0/wmo/8/codetables/25010.table\
+	bufr/tables/0/wmo/8/codetables/25011.table\
+	bufr/tables/0/wmo/8/codetables/25012.table\
+	bufr/tables/0/wmo/8/codetables/25013.table\
+	bufr/tables/0/wmo/8/codetables/25015.table\
+	bufr/tables/0/wmo/8/codetables/25017.table\
+	bufr/tables/0/wmo/8/codetables/25020.table\
+	bufr/tables/0/wmo/8/codetables/25021.table\
+	bufr/tables/0/wmo/8/codetables/25030.table\
+	bufr/tables/0/wmo/8/codetables/25032.table\
+	bufr/tables/0/wmo/8/codetables/25033.table\
+	bufr/tables/0/wmo/8/codetables/25034.table\
+	bufr/tables/0/wmo/8/codetables/25036.table\
+	bufr/tables/0/wmo/8/codetables/25040.table\
+	bufr/tables/0/wmo/8/codetables/25041.table\
+	bufr/tables/0/wmo/8/codetables/25042.table\
+	bufr/tables/0/wmo/8/codetables/25045.table\
+	bufr/tables/0/wmo/8/codetables/25046.table\
+	bufr/tables/0/wmo/8/codetables/25047.table\
+	bufr/tables/0/wmo/8/codetables/25048.table\
+	bufr/tables/0/wmo/8/codetables/25049.table\
+	bufr/tables/0/wmo/8/codetables/25051.table\
+	bufr/tables/0/wmo/8/codetables/25053.table\
+	bufr/tables/0/wmo/8/codetables/25069.table\
+	bufr/tables/0/wmo/8/codetables/25086.table\
+	bufr/tables/0/wmo/8/codetables/25093.table\
+	bufr/tables/0/wmo/8/codetables/25095.table\
+	bufr/tables/0/wmo/8/codetables/25096.table\
+	bufr/tables/0/wmo/8/codetables/25097.table\
+	bufr/tables/0/wmo/8/codetables/25098.table\
+	bufr/tables/0/wmo/8/codetables/25099.table\
+	bufr/tables/0/wmo/8/codetables/25110.table\
+	bufr/tables/0/wmo/8/codetables/25120.table\
+	bufr/tables/0/wmo/8/codetables/25122.table\
+	bufr/tables/0/wmo/8/codetables/25123.table\
+	bufr/tables/0/wmo/8/codetables/25124.table\
+	bufr/tables/0/wmo/8/codetables/26010.table\
+	bufr/tables/0/wmo/8/codetables/29001.table\
+	bufr/tables/0/wmo/8/codetables/29002.table\
+	bufr/tables/0/wmo/8/codetables/30031.table\
+	bufr/tables/0/wmo/8/codetables/30032.table\
+	bufr/tables/0/wmo/8/codetables/31021.table\
+	bufr/tables/0/wmo/8/codetables/31031.table\
+	bufr/tables/0/wmo/8/codetables/33002.table\
+	bufr/tables/0/wmo/8/codetables/33003.table\
+	bufr/tables/0/wmo/8/codetables/33005.table\
+	bufr/tables/0/wmo/8/codetables/33006.table\
+	bufr/tables/0/wmo/8/codetables/33015.table\
+	bufr/tables/0/wmo/8/codetables/33020.table\
+	bufr/tables/0/wmo/8/codetables/33021.table\
+	bufr/tables/0/wmo/8/codetables/33022.table\
+	bufr/tables/0/wmo/8/codetables/33023.table\
+	bufr/tables/0/wmo/8/codetables/33024.table\
+	bufr/tables/0/wmo/8/codetables/33025.table\
+	bufr/tables/0/wmo/8/codetables/33026.table\
+	bufr/tables/0/wmo/8/codetables/33027.table\
+	bufr/tables/0/wmo/8/codetables/33028.table\
+	bufr/tables/0/wmo/8/codetables/33030.table\
+	bufr/tables/0/wmo/8/codetables/33031.table\
+	bufr/tables/0/wmo/8/codetables/33032.table\
+	bufr/tables/0/wmo/8/codetables/33033.table\
+	bufr/tables/0/wmo/8/codetables/33035.table\
+	bufr/tables/0/wmo/8/codetables/33037.table\
+	bufr/tables/0/wmo/8/codetables/33038.table\
+	bufr/tables/0/wmo/8/codetables/33039.table\
+	bufr/tables/0/wmo/8/codetables/33041.table\
+	bufr/tables/0/wmo/8/codetables/33042.table\
+	bufr/tables/0/wmo/8/codetables/33043.table\
+	bufr/tables/0/wmo/8/codetables/33044.table\
+	bufr/tables/0/wmo/8/codetables/33047.table\
+	bufr/tables/0/wmo/8/codetables/33048.table\
+	bufr/tables/0/wmo/8/codetables/33049.table\
+	bufr/tables/0/wmo/8/codetables/33050.table\
+	bufr/tables/0/wmo/8/codetables/33052.table\
+	bufr/tables/0/wmo/8/codetables/33053.table\
+	bufr/tables/0/wmo/8/codetables/33060.table\
+	bufr/tables/0/wmo/8/codetables/35000.table\
+	bufr/tables/0/wmo/8/codetables/35001.table\
+	bufr/tables/0/wmo/8/codetables/35030.table\
+	bufr/tables/0/wmo/8/codetables/35031.table\
+	bufr/tables/0/wmo/8/codetables/35032.table\
+	bufr/tables/0/wmo/8/codetables/35033.table\
+	bufr/tables/0/wmo/8/codetables/35034.table\
+	bufr/tables/0/wmo/8/codetables/40011.table\
+	bufr/tables/0/wmo/8/codetables/40012.table\
+	bufr/tables/0/wmo/8/codetables/40013.table\
+	bufr/tables/0/wmo/8/codetables/4059.table\
+	bufr/tables/0/wmo/8/codetables/8001.table\
+	bufr/tables/0/wmo/8/codetables/8002.table\
+	bufr/tables/0/wmo/8/codetables/8003.table\
+	bufr/tables/0/wmo/8/codetables/8004.table\
+	bufr/tables/0/wmo/8/codetables/8005.table\
+	bufr/tables/0/wmo/8/codetables/8006.table\
+	bufr/tables/0/wmo/8/codetables/8007.table\
+	bufr/tables/0/wmo/8/codetables/8008.table\
+	bufr/tables/0/wmo/8/codetables/8009.table\
+	bufr/tables/0/wmo/8/codetables/8010.table\
+	bufr/tables/0/wmo/8/codetables/8011.table\
+	bufr/tables/0/wmo/8/codetables/8012.table\
+	bufr/tables/0/wmo/8/codetables/8013.table\
+	bufr/tables/0/wmo/8/codetables/8014.table\
+	bufr/tables/0/wmo/8/codetables/8016.table\
+	bufr/tables/0/wmo/8/codetables/8017.table\
+	bufr/tables/0/wmo/8/codetables/8018.table\
+	bufr/tables/0/wmo/8/codetables/8021.table\
+	bufr/tables/0/wmo/8/codetables/8023.table\
+	bufr/tables/0/wmo/8/codetables/8024.table\
+	bufr/tables/0/wmo/8/codetables/8025.table\
+	bufr/tables/0/wmo/8/codetables/8026.table\
+	bufr/tables/0/wmo/8/codetables/8029.table\
+	bufr/tables/0/wmo/8/codetables/8033.table\
+	bufr/tables/0/wmo/8/codetables/8035.table\
+	bufr/tables/0/wmo/8/codetables/8036.table\
+	bufr/tables/0/wmo/8/codetables/8039.table\
+	bufr/tables/0/wmo/8/codetables/8040.table\
+	bufr/tables/0/wmo/8/codetables/8041.table\
+	bufr/tables/0/wmo/8/codetables/8042.table\
+	bufr/tables/0/wmo/8/codetables/8043.table\
+	bufr/tables/0/wmo/8/codetables/8050.table\
+	bufr/tables/0/wmo/8/codetables/8051.table\
+	bufr/tables/0/wmo/8/codetables/8052.table\
+	bufr/tables/0/wmo/8/codetables/8053.table\
+	bufr/tables/0/wmo/8/codetables/8054.table\
+	bufr/tables/0/wmo/8/codetables/8060.table\
+	bufr/tables/0/wmo/8/codetables/8065.table\
+	bufr/tables/0/wmo/8/codetables/8066.table\
+	bufr/tables/0/wmo/8/codetables/8070.table\
+	bufr/tables/0/wmo/8/codetables/8072.table\
+	bufr/tables/0/wmo/8/codetables/8074.table\
+	bufr/tables/0/wmo/8/codetables/8075.table\
+	bufr/tables/0/wmo/8/codetables/8076.table\
+	bufr/tables/0/wmo/8/codetables/8077.table\
+	bufr/tables/0/wmo/8/codetables/8079.table\
+	bufr/tables/0/wmo/8/codetables/8080.table\
+	bufr/tables/0/wmo/8/codetables/8081.table\
+	bufr/tables/0/wmo/8/codetables/8082.table\
+	bufr/tables/0/wmo/8/codetables/8083.table\
+	bufr/tables/0/wmo/8/codetables/8085.table
+
+definitionsbufr_tables_0_wmo_9dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/9
+dist_definitionsbufr_tables_0_wmo_9_DATA = \
+	bufr/tables/0/wmo/9/element.table\
+	bufr/tables/0/wmo/9/sequence.def
+
+definitionsbufr_tables_0_wmo_9_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/9/codetables
+dist_definitionsbufr_tables_0_wmo_9_codetables_DATA = \
+	bufr/tables/0/wmo/9/codetables/1003.table\
+	bufr/tables/0/wmo/9/codetables/10063.table\
+	bufr/tables/0/wmo/9/codetables/10064.table\
+	bufr/tables/0/wmo/9/codetables/1007.table\
+	bufr/tables/0/wmo/9/codetables/1031.table\
+	bufr/tables/0/wmo/9/codetables/1032.table\
+	bufr/tables/0/wmo/9/codetables/1033.table\
+	bufr/tables/0/wmo/9/codetables/1035.table\
+	bufr/tables/0/wmo/9/codetables/1090.table\
+	bufr/tables/0/wmo/9/codetables/1092.table\
+	bufr/tables/0/wmo/9/codetables/11031.table\
+	bufr/tables/0/wmo/9/codetables/11037.table\
+	bufr/tables/0/wmo/9/codetables/11038.table\
+	bufr/tables/0/wmo/9/codetables/11039.table\
+	bufr/tables/0/wmo/9/codetables/13038.table\
+	bufr/tables/0/wmo/9/codetables/13039.table\
+	bufr/tables/0/wmo/9/codetables/13040.table\
+	bufr/tables/0/wmo/9/codetables/13041.table\
+	bufr/tables/0/wmo/9/codetables/13051.table\
+	bufr/tables/0/wmo/9/codetables/13056.table\
+	bufr/tables/0/wmo/9/codetables/13057.table\
+	bufr/tables/0/wmo/9/codetables/15025.table\
+	bufr/tables/0/wmo/9/codetables/19001.table\
+	bufr/tables/0/wmo/9/codetables/19008.table\
+	bufr/tables/0/wmo/9/codetables/19010.table\
+	bufr/tables/0/wmo/9/codetables/20003.table\
+	bufr/tables/0/wmo/9/codetables/20004.table\
+	bufr/tables/0/wmo/9/codetables/20005.table\
+	bufr/tables/0/wmo/9/codetables/20008.table\
+	bufr/tables/0/wmo/9/codetables/20009.table\
+	bufr/tables/0/wmo/9/codetables/2001.table\
+	bufr/tables/0/wmo/9/codetables/20011.table\
+	bufr/tables/0/wmo/9/codetables/20012.table\
+	bufr/tables/0/wmo/9/codetables/20017.table\
+	bufr/tables/0/wmo/9/codetables/20018.table\
+	bufr/tables/0/wmo/9/codetables/2002.table\
+	bufr/tables/0/wmo/9/codetables/20021.table\
+	bufr/tables/0/wmo/9/codetables/20022.table\
+	bufr/tables/0/wmo/9/codetables/20023.table\
+	bufr/tables/0/wmo/9/codetables/20024.table\
+	bufr/tables/0/wmo/9/codetables/20025.table\
+	bufr/tables/0/wmo/9/codetables/20026.table\
+	bufr/tables/0/wmo/9/codetables/20027.table\
+	bufr/tables/0/wmo/9/codetables/20029.table\
+	bufr/tables/0/wmo/9/codetables/2003.table\
+	bufr/tables/0/wmo/9/codetables/20032.table\
+	bufr/tables/0/wmo/9/codetables/20033.table\
+	bufr/tables/0/wmo/9/codetables/20034.table\
+	bufr/tables/0/wmo/9/codetables/20035.table\
+	bufr/tables/0/wmo/9/codetables/20036.table\
+	bufr/tables/0/wmo/9/codetables/20037.table\
+	bufr/tables/0/wmo/9/codetables/2004.table\
+	bufr/tables/0/wmo/9/codetables/20040.table\
+	bufr/tables/0/wmo/9/codetables/20041.table\
+	bufr/tables/0/wmo/9/codetables/20042.table\
+	bufr/tables/0/wmo/9/codetables/20045.table\
+	bufr/tables/0/wmo/9/codetables/20050.table\
+	bufr/tables/0/wmo/9/codetables/20055.table\
+	bufr/tables/0/wmo/9/codetables/20056.table\
+	bufr/tables/0/wmo/9/codetables/20062.table\
+	bufr/tables/0/wmo/9/codetables/20063.table\
+	bufr/tables/0/wmo/9/codetables/20071.table\
+	bufr/tables/0/wmo/9/codetables/20086.table\
+	bufr/tables/0/wmo/9/codetables/20090.table\
+	bufr/tables/0/wmo/9/codetables/20101.table\
+	bufr/tables/0/wmo/9/codetables/20102.table\
+	bufr/tables/0/wmo/9/codetables/2011.table\
+	bufr/tables/0/wmo/9/codetables/2012.table\
+	bufr/tables/0/wmo/9/codetables/2013.table\
+	bufr/tables/0/wmo/9/codetables/2014.table\
+	bufr/tables/0/wmo/9/codetables/2015.table\
+	bufr/tables/0/wmo/9/codetables/2016.table\
+	bufr/tables/0/wmo/9/codetables/2019.table\
+	bufr/tables/0/wmo/9/codetables/2020.table\
+	bufr/tables/0/wmo/9/codetables/2021.table\
+	bufr/tables/0/wmo/9/codetables/2022.table\
+	bufr/tables/0/wmo/9/codetables/2023.table\
+	bufr/tables/0/wmo/9/codetables/2024.table\
+	bufr/tables/0/wmo/9/codetables/2025.table\
+	bufr/tables/0/wmo/9/codetables/2030.table\
+	bufr/tables/0/wmo/9/codetables/2031.table\
+	bufr/tables/0/wmo/9/codetables/2032.table\
+	bufr/tables/0/wmo/9/codetables/2033.table\
+	bufr/tables/0/wmo/9/codetables/2034.table\
+	bufr/tables/0/wmo/9/codetables/2036.table\
+	bufr/tables/0/wmo/9/codetables/2037.table\
+	bufr/tables/0/wmo/9/codetables/2038.table\
+	bufr/tables/0/wmo/9/codetables/2039.table\
+	bufr/tables/0/wmo/9/codetables/2040.table\
+	bufr/tables/0/wmo/9/codetables/2041.table\
+	bufr/tables/0/wmo/9/codetables/2044.table\
+	bufr/tables/0/wmo/9/codetables/2045.table\
+	bufr/tables/0/wmo/9/codetables/2046.table\
+	bufr/tables/0/wmo/9/codetables/2048.table\
+	bufr/tables/0/wmo/9/codetables/2049.table\
+	bufr/tables/0/wmo/9/codetables/2050.table\
+	bufr/tables/0/wmo/9/codetables/2051.table\
+	bufr/tables/0/wmo/9/codetables/2052.table\
+	bufr/tables/0/wmo/9/codetables/2053.table\
+	bufr/tables/0/wmo/9/codetables/2054.table\
+	bufr/tables/0/wmo/9/codetables/2055.table\
+	bufr/tables/0/wmo/9/codetables/2056.table\
+	bufr/tables/0/wmo/9/codetables/2057.table\
+	bufr/tables/0/wmo/9/codetables/2058.table\
+	bufr/tables/0/wmo/9/codetables/2059.table\
+	bufr/tables/0/wmo/9/codetables/2060.table\
+	bufr/tables/0/wmo/9/codetables/2061.table\
+	bufr/tables/0/wmo/9/codetables/2062.table\
+	bufr/tables/0/wmo/9/codetables/2064.table\
+	bufr/tables/0/wmo/9/codetables/2066.table\
+	bufr/tables/0/wmo/9/codetables/2070.table\
+	bufr/tables/0/wmo/9/codetables/2080.table\
+	bufr/tables/0/wmo/9/codetables/2081.table\
+	bufr/tables/0/wmo/9/codetables/2083.table\
+	bufr/tables/0/wmo/9/codetables/2084.table\
+	bufr/tables/0/wmo/9/codetables/2095.table\
+	bufr/tables/0/wmo/9/codetables/2096.table\
+	bufr/tables/0/wmo/9/codetables/2097.table\
+	bufr/tables/0/wmo/9/codetables/2098.table\
+	bufr/tables/0/wmo/9/codetables/2101.table\
+	bufr/tables/0/wmo/9/codetables/2103.table\
+	bufr/tables/0/wmo/9/codetables/2104.table\
+	bufr/tables/0/wmo/9/codetables/21066.table\
+	bufr/tables/0/wmo/9/codetables/21067.table\
+	bufr/tables/0/wmo/9/codetables/21068.table\
+	bufr/tables/0/wmo/9/codetables/21069.table\
+	bufr/tables/0/wmo/9/codetables/21070.table\
+	bufr/tables/0/wmo/9/codetables/21072.table\
+	bufr/tables/0/wmo/9/codetables/21073.table\
+	bufr/tables/0/wmo/9/codetables/21076.table\
+	bufr/tables/0/wmo/9/codetables/21109.table\
+	bufr/tables/0/wmo/9/codetables/21115.table\
+	bufr/tables/0/wmo/9/codetables/21116.table\
+	bufr/tables/0/wmo/9/codetables/21119.table\
+	bufr/tables/0/wmo/9/codetables/21144.table\
+	bufr/tables/0/wmo/9/codetables/2115.table\
+	bufr/tables/0/wmo/9/codetables/21150.table\
+	bufr/tables/0/wmo/9/codetables/21155.table\
+	bufr/tables/0/wmo/9/codetables/21158.table\
+	bufr/tables/0/wmo/9/codetables/21159.table\
+	bufr/tables/0/wmo/9/codetables/21169.table\
+	bufr/tables/0/wmo/9/codetables/2119.table\
+	bufr/tables/0/wmo/9/codetables/2131.table\
+	bufr/tables/0/wmo/9/codetables/2143.table\
+	bufr/tables/0/wmo/9/codetables/2144.table\
+	bufr/tables/0/wmo/9/codetables/2145.table\
+	bufr/tables/0/wmo/9/codetables/2146.table\
+	bufr/tables/0/wmo/9/codetables/2148.table\
+	bufr/tables/0/wmo/9/codetables/2149.table\
+	bufr/tables/0/wmo/9/codetables/2150.table\
+	bufr/tables/0/wmo/9/codetables/2151.table\
+	bufr/tables/0/wmo/9/codetables/2152.table\
+	bufr/tables/0/wmo/9/codetables/2158.table\
+	bufr/tables/0/wmo/9/codetables/2159.table\
+	bufr/tables/0/wmo/9/codetables/2163.table\
+	bufr/tables/0/wmo/9/codetables/2164.table\
+	bufr/tables/0/wmo/9/codetables/2166.table\
+	bufr/tables/0/wmo/9/codetables/2167.table\
+	bufr/tables/0/wmo/9/codetables/2169.table\
+	bufr/tables/0/wmo/9/codetables/2172.table\
+	bufr/tables/0/wmo/9/codetables/2175.table\
+	bufr/tables/0/wmo/9/codetables/2176.table\
+	bufr/tables/0/wmo/9/codetables/2177.table\
+	bufr/tables/0/wmo/9/codetables/2178.table\
+	bufr/tables/0/wmo/9/codetables/2179.table\
+	bufr/tables/0/wmo/9/codetables/2180.table\
+	bufr/tables/0/wmo/9/codetables/2181.table\
+	bufr/tables/0/wmo/9/codetables/2182.table\
+	bufr/tables/0/wmo/9/codetables/2183.table\
+	bufr/tables/0/wmo/9/codetables/2184.table\
+	bufr/tables/0/wmo/9/codetables/2185.table\
+	bufr/tables/0/wmo/9/codetables/2186.table\
+	bufr/tables/0/wmo/9/codetables/2187.table\
+	bufr/tables/0/wmo/9/codetables/2188.table\
+	bufr/tables/0/wmo/9/codetables/2189.table\
+	bufr/tables/0/wmo/9/codetables/22056.table\
+	bufr/tables/0/wmo/9/codetables/22060.table\
+	bufr/tables/0/wmo/9/codetables/22061.table\
+	bufr/tables/0/wmo/9/codetables/22067.table\
+	bufr/tables/0/wmo/9/codetables/22068.table\
+	bufr/tables/0/wmo/9/codetables/22120.table\
+	bufr/tables/0/wmo/9/codetables/22121.table\
+	bufr/tables/0/wmo/9/codetables/22122.table\
+	bufr/tables/0/wmo/9/codetables/22123.table\
+	bufr/tables/0/wmo/9/codetables/23001.table\
+	bufr/tables/0/wmo/9/codetables/23002.table\
+	bufr/tables/0/wmo/9/codetables/23003.table\
+	bufr/tables/0/wmo/9/codetables/23004.table\
+	bufr/tables/0/wmo/9/codetables/23005.table\
+	bufr/tables/0/wmo/9/codetables/23006.table\
+	bufr/tables/0/wmo/9/codetables/23007.table\
+	bufr/tables/0/wmo/9/codetables/23008.table\
+	bufr/tables/0/wmo/9/codetables/23009.table\
+	bufr/tables/0/wmo/9/codetables/23016.table\
+	bufr/tables/0/wmo/9/codetables/23018.table\
+	bufr/tables/0/wmo/9/codetables/23031.table\
+	bufr/tables/0/wmo/9/codetables/23032.table\
+	bufr/tables/0/wmo/9/codetables/24003.table\
+	bufr/tables/0/wmo/9/codetables/25004.table\
+	bufr/tables/0/wmo/9/codetables/25005.table\
+	bufr/tables/0/wmo/9/codetables/25006.table\
+	bufr/tables/0/wmo/9/codetables/25009.table\
+	bufr/tables/0/wmo/9/codetables/25010.table\
+	bufr/tables/0/wmo/9/codetables/25011.table\
+	bufr/tables/0/wmo/9/codetables/25012.table\
+	bufr/tables/0/wmo/9/codetables/25013.table\
+	bufr/tables/0/wmo/9/codetables/25015.table\
+	bufr/tables/0/wmo/9/codetables/25017.table\
+	bufr/tables/0/wmo/9/codetables/25020.table\
+	bufr/tables/0/wmo/9/codetables/25021.table\
+	bufr/tables/0/wmo/9/codetables/25030.table\
+	bufr/tables/0/wmo/9/codetables/25032.table\
+	bufr/tables/0/wmo/9/codetables/25033.table\
+	bufr/tables/0/wmo/9/codetables/25034.table\
+	bufr/tables/0/wmo/9/codetables/25036.table\
+	bufr/tables/0/wmo/9/codetables/25040.table\
+	bufr/tables/0/wmo/9/codetables/25041.table\
+	bufr/tables/0/wmo/9/codetables/25042.table\
+	bufr/tables/0/wmo/9/codetables/25045.table\
+	bufr/tables/0/wmo/9/codetables/25046.table\
+	bufr/tables/0/wmo/9/codetables/25047.table\
+	bufr/tables/0/wmo/9/codetables/25048.table\
+	bufr/tables/0/wmo/9/codetables/25049.table\
+	bufr/tables/0/wmo/9/codetables/25051.table\
+	bufr/tables/0/wmo/9/codetables/25053.table\
+	bufr/tables/0/wmo/9/codetables/25069.table\
+	bufr/tables/0/wmo/9/codetables/25086.table\
+	bufr/tables/0/wmo/9/codetables/25093.table\
+	bufr/tables/0/wmo/9/codetables/25095.table\
+	bufr/tables/0/wmo/9/codetables/25096.table\
+	bufr/tables/0/wmo/9/codetables/25097.table\
+	bufr/tables/0/wmo/9/codetables/25098.table\
+	bufr/tables/0/wmo/9/codetables/25099.table\
+	bufr/tables/0/wmo/9/codetables/25110.table\
+	bufr/tables/0/wmo/9/codetables/25120.table\
+	bufr/tables/0/wmo/9/codetables/25122.table\
+	bufr/tables/0/wmo/9/codetables/25123.table\
+	bufr/tables/0/wmo/9/codetables/25124.table\
+	bufr/tables/0/wmo/9/codetables/26010.table\
+	bufr/tables/0/wmo/9/codetables/29001.table\
+	bufr/tables/0/wmo/9/codetables/29002.table\
+	bufr/tables/0/wmo/9/codetables/30031.table\
+	bufr/tables/0/wmo/9/codetables/30032.table\
+	bufr/tables/0/wmo/9/codetables/31021.table\
+	bufr/tables/0/wmo/9/codetables/31031.table\
+	bufr/tables/0/wmo/9/codetables/33002.table\
+	bufr/tables/0/wmo/9/codetables/33003.table\
+	bufr/tables/0/wmo/9/codetables/33005.table\
+	bufr/tables/0/wmo/9/codetables/33006.table\
+	bufr/tables/0/wmo/9/codetables/33015.table\
+	bufr/tables/0/wmo/9/codetables/33020.table\
+	bufr/tables/0/wmo/9/codetables/33021.table\
+	bufr/tables/0/wmo/9/codetables/33022.table\
+	bufr/tables/0/wmo/9/codetables/33023.table\
+	bufr/tables/0/wmo/9/codetables/33024.table\
+	bufr/tables/0/wmo/9/codetables/33025.table\
+	bufr/tables/0/wmo/9/codetables/33026.table\
+	bufr/tables/0/wmo/9/codetables/33027.table\
+	bufr/tables/0/wmo/9/codetables/33028.table\
+	bufr/tables/0/wmo/9/codetables/33030.table\
+	bufr/tables/0/wmo/9/codetables/33031.table\
+	bufr/tables/0/wmo/9/codetables/33032.table\
+	bufr/tables/0/wmo/9/codetables/33033.table\
+	bufr/tables/0/wmo/9/codetables/33035.table\
+	bufr/tables/0/wmo/9/codetables/33037.table\
+	bufr/tables/0/wmo/9/codetables/33038.table\
+	bufr/tables/0/wmo/9/codetables/33039.table\
+	bufr/tables/0/wmo/9/codetables/33041.table\
+	bufr/tables/0/wmo/9/codetables/33042.table\
+	bufr/tables/0/wmo/9/codetables/33043.table\
+	bufr/tables/0/wmo/9/codetables/33044.table\
+	bufr/tables/0/wmo/9/codetables/33047.table\
+	bufr/tables/0/wmo/9/codetables/33048.table\
+	bufr/tables/0/wmo/9/codetables/33049.table\
+	bufr/tables/0/wmo/9/codetables/33050.table\
+	bufr/tables/0/wmo/9/codetables/33052.table\
+	bufr/tables/0/wmo/9/codetables/33053.table\
+	bufr/tables/0/wmo/9/codetables/33060.table\
+	bufr/tables/0/wmo/9/codetables/35000.table\
+	bufr/tables/0/wmo/9/codetables/35001.table\
+	bufr/tables/0/wmo/9/codetables/35030.table\
+	bufr/tables/0/wmo/9/codetables/35031.table\
+	bufr/tables/0/wmo/9/codetables/35032.table\
+	bufr/tables/0/wmo/9/codetables/35033.table\
+	bufr/tables/0/wmo/9/codetables/35034.table\
+	bufr/tables/0/wmo/9/codetables/40011.table\
+	bufr/tables/0/wmo/9/codetables/40012.table\
+	bufr/tables/0/wmo/9/codetables/40013.table\
+	bufr/tables/0/wmo/9/codetables/4059.table\
+	bufr/tables/0/wmo/9/codetables/8001.table\
+	bufr/tables/0/wmo/9/codetables/8002.table\
+	bufr/tables/0/wmo/9/codetables/8003.table\
+	bufr/tables/0/wmo/9/codetables/8004.table\
+	bufr/tables/0/wmo/9/codetables/8005.table\
+	bufr/tables/0/wmo/9/codetables/8006.table\
+	bufr/tables/0/wmo/9/codetables/8007.table\
+	bufr/tables/0/wmo/9/codetables/8008.table\
+	bufr/tables/0/wmo/9/codetables/8009.table\
+	bufr/tables/0/wmo/9/codetables/8010.table\
+	bufr/tables/0/wmo/9/codetables/8011.table\
+	bufr/tables/0/wmo/9/codetables/8012.table\
+	bufr/tables/0/wmo/9/codetables/8013.table\
+	bufr/tables/0/wmo/9/codetables/8014.table\
+	bufr/tables/0/wmo/9/codetables/8016.table\
+	bufr/tables/0/wmo/9/codetables/8017.table\
+	bufr/tables/0/wmo/9/codetables/8018.table\
+	bufr/tables/0/wmo/9/codetables/8021.table\
+	bufr/tables/0/wmo/9/codetables/8023.table\
+	bufr/tables/0/wmo/9/codetables/8024.table\
+	bufr/tables/0/wmo/9/codetables/8025.table\
+	bufr/tables/0/wmo/9/codetables/8026.table\
+	bufr/tables/0/wmo/9/codetables/8029.table\
+	bufr/tables/0/wmo/9/codetables/8033.table\
+	bufr/tables/0/wmo/9/codetables/8035.table\
+	bufr/tables/0/wmo/9/codetables/8036.table\
+	bufr/tables/0/wmo/9/codetables/8039.table\
+	bufr/tables/0/wmo/9/codetables/8040.table\
+	bufr/tables/0/wmo/9/codetables/8041.table\
+	bufr/tables/0/wmo/9/codetables/8042.table\
+	bufr/tables/0/wmo/9/codetables/8043.table\
+	bufr/tables/0/wmo/9/codetables/8050.table\
+	bufr/tables/0/wmo/9/codetables/8051.table\
+	bufr/tables/0/wmo/9/codetables/8052.table\
+	bufr/tables/0/wmo/9/codetables/8053.table\
+	bufr/tables/0/wmo/9/codetables/8054.table\
+	bufr/tables/0/wmo/9/codetables/8060.table\
+	bufr/tables/0/wmo/9/codetables/8065.table\
+	bufr/tables/0/wmo/9/codetables/8066.table\
+	bufr/tables/0/wmo/9/codetables/8070.table\
+	bufr/tables/0/wmo/9/codetables/8072.table\
+	bufr/tables/0/wmo/9/codetables/8074.table\
+	bufr/tables/0/wmo/9/codetables/8075.table\
+	bufr/tables/0/wmo/9/codetables/8076.table\
+	bufr/tables/0/wmo/9/codetables/8077.table\
+	bufr/tables/0/wmo/9/codetables/8079.table\
+	bufr/tables/0/wmo/9/codetables/8080.table\
+	bufr/tables/0/wmo/9/codetables/8081.table\
+	bufr/tables/0/wmo/9/codetables/8082.table\
+	bufr/tables/0/wmo/9/codetables/8083.table\
+	bufr/tables/0/wmo/9/codetables/8085.table
+
 definitionsbufr_tables_3_local_1_98_0dir = @ECCODES_DEFINITION_PATH@/bufr/tables/3/local/1/98/0
 dist_definitionsbufr_tables_3_local_1_98_0_DATA = \
 	bufr/tables/3/local/1/98/0/element.table\
@@ -5478,6 +8558,14 @@ dist_definitionsbufr_tables_3_wmo_6_DATA = \
 	bufr/tables/3/wmo/6/element.table\
 	bufr/tables/3/wmo/6/sequence.def
 
+definitionsbufr_templatesdir = @ECCODES_DEFINITION_PATH@/bufr/templates
+dist_definitionsbufr_templates_DATA = \
+	bufr/templates/BufrTemplate.def
+
+definitionsbufr_templates_localdir = @ECCODES_DEFINITION_PATH@/bufr/templates/local
+dist_definitionsbufr_templates_local_DATA = \
+	bufr/templates/local/BufrTemplate.def
+
 definitionscdfdir = @ECCODES_DEFINITION_PATH@/cdf
 dist_definitionscdf_DATA = \
 	cdf/boot.def
@@ -5545,6 +8633,7 @@ dist_definitionsgrib1_DATA = \
 	grib1/2.98.220.table\
 	grib1/2.98.228.table\
 	grib1/2.98.230.table\
+	grib1/2.98.235.table\
 	grib1/2.table\
 	grib1/3.233.table\
 	grib1/3.82.table\
@@ -5722,7 +8811,6 @@ dist_definitionsgrib1_local_ecmf_DATA = \
 
 definitionsgrib1_local_edzwdir = @ECCODES_DEFINITION_PATH@/grib1/local/edzw
 dist_definitionsgrib1_local_edzw_DATA = \
-	grib1/local/edzw/3.table\
 	grib1/local/edzw/5.table
 
 definitionsgrib1_local_rjtddir = @ECCODES_DEFINITION_PATH@/grib1/local/rjtd
@@ -5764,6 +8852,14 @@ dist_definitionsgrib1_localConcepts_edzw_DATA = \
 	grib1/localConcepts/edzw/stepType.def\
 	grib1/localConcepts/edzw/units.def
 
+definitionsgrib1_localConcepts_efkldir = @ECCODES_DEFINITION_PATH@/grib1/localConcepts/efkl
+dist_definitionsgrib1_localConcepts_efkl_DATA = \
+	grib1/localConcepts/efkl/cfVarName.def\
+	grib1/localConcepts/efkl/name.def\
+	grib1/localConcepts/efkl/paramId.def\
+	grib1/localConcepts/efkl/shortName.def\
+	grib1/localConcepts/efkl/units.def
+
 definitionsgrib1_localConcepts_eidbdir = @ECCODES_DEFINITION_PATH@/grib1/localConcepts/eidb
 dist_definitionsgrib1_localConcepts_eidb_DATA = \
 	grib1/localConcepts/eidb/cfName.def\
@@ -5864,6 +8960,7 @@ dist_definitionsgrib2_DATA = \
 	grib2/local.98.15.def\
 	grib2/local.98.16.def\
 	grib2/local.98.18.def\
+	grib2/local.98.192.def\
 	grib2/local.98.20.def\
 	grib2/local.98.21.def\
 	grib2/local.98.24.def\
@@ -5885,6 +8982,7 @@ dist_definitionsgrib2_DATA = \
 	grib2/mars_labeling.82.def\
 	grib2/mars_labeling.def\
 	grib2/meta.def\
+	grib2/modelName.def\
 	grib2/name.def\
 	grib2/paramId.def\
 	grib2/parameters.def\
@@ -5994,6 +9092,8 @@ dist_definitionsgrib2_DATA = \
 	grib2/template.4.51.def\
 	grib2/template.4.53.def\
 	grib2/template.4.54.def\
+	grib2/template.4.55.def\
+	grib2/template.4.56.def\
 	grib2/template.4.6.def\
 	grib2/template.4.60.def\
 	grib2/template.4.61.def\
@@ -6012,6 +9112,7 @@ dist_definitionsgrib2_DATA = \
 	grib2/template.4.parameter_aerosol_optical.def\
 	grib2/template.4.parameter_chemical.def\
 	grib2/template.4.parameter_partition.def\
+	grib2/template.4.parameter_tile.def\
 	grib2/template.4.percentile.def\
 	grib2/template.4.point_in_time.def\
 	grib2/template.4.probability.def\
@@ -6077,6 +9178,7 @@ dist_definitionsgrib2_local_1098_DATA = \
 
 definitionsgrib2_localConcepts_cnmcdir = @ECCODES_DEFINITION_PATH@/grib2/localConcepts/cnmc
 dist_definitionsgrib2_localConcepts_cnmc_DATA = \
+	grib2/localConcepts/cnmc/modelName.def\
 	grib2/localConcepts/cnmc/name.def\
 	grib2/localConcepts/cnmc/paramId.def\
 	grib2/localConcepts/cnmc/shortName.def\
@@ -6093,11 +9195,19 @@ dist_definitionsgrib2_localConcepts_ecmf_DATA = \
 
 definitionsgrib2_localConcepts_edzwdir = @ECCODES_DEFINITION_PATH@/grib2/localConcepts/edzw
 dist_definitionsgrib2_localConcepts_edzw_DATA = \
+	grib2/localConcepts/edzw/modelName.def\
 	grib2/localConcepts/edzw/name.def\
 	grib2/localConcepts/edzw/paramId.def\
 	grib2/localConcepts/edzw/shortName.def\
 	grib2/localConcepts/edzw/units.def
 
+definitionsgrib2_localConcepts_efkldir = @ECCODES_DEFINITION_PATH@/grib2/localConcepts/efkl
+dist_definitionsgrib2_localConcepts_efkl_DATA = \
+	grib2/localConcepts/efkl/name.def\
+	grib2/localConcepts/efkl/paramId.def\
+	grib2/localConcepts/efkl/shortName.def\
+	grib2/localConcepts/efkl/units.def
+
 definitionsgrib2_localConcepts_egrrdir = @ECCODES_DEFINITION_PATH@/grib2/localConcepts/egrr
 dist_definitionsgrib2_localConcepts_egrr_DATA = \
 	grib2/localConcepts/egrr/name.def\
@@ -6140,6 +9250,10 @@ dist_definitionsgrib2_localConcepts_lfpw1_DATA = \
 	grib2/localConcepts/lfpw1/shortName.def\
 	grib2/localConcepts/lfpw1/units.def
 
+definitionsgrib2_localConcepts_lsswdir = @ECCODES_DEFINITION_PATH@/grib2/localConcepts/lssw
+dist_definitionsgrib2_localConcepts_lssw_DATA = \
+	grib2/localConcepts/lssw/modelName.def
+
 definitionsgrib2_tablesdir = @ECCODES_DEFINITION_PATH@/grib2/tables
 dist_definitionsgrib2_tables_DATA = \
 	grib2/tables/0.0.table\
@@ -6978,6 +10092,265 @@ dist_definitionsgrib2_tables_14_DATA = \
 	grib2/tables/14/6.0.table\
 	grib2/tables/14/stepType.table
 
+definitionsgrib2_tables_15dir = @ECCODES_DEFINITION_PATH@/grib2/tables/15
+dist_definitionsgrib2_tables_15_DATA = \
+	grib2/tables/15/0.0.table\
+	grib2/tables/15/1.0.table\
+	grib2/tables/15/1.1.table\
+	grib2/tables/15/1.2.table\
+	grib2/tables/15/1.3.table\
+	grib2/tables/15/1.4.table\
+	grib2/tables/15/1.5.table\
+	grib2/tables/15/1.6.table\
+	grib2/tables/15/3.0.table\
+	grib2/tables/15/3.1.table\
+	grib2/tables/15/3.10.table\
+	grib2/tables/15/3.11.table\
+	grib2/tables/15/3.15.table\
+	grib2/tables/15/3.2.table\
+	grib2/tables/15/3.20.table\
+	grib2/tables/15/3.21.table\
+	grib2/tables/15/3.3.table\
+	grib2/tables/15/3.4.table\
+	grib2/tables/15/3.5.table\
+	grib2/tables/15/3.6.table\
+	grib2/tables/15/3.7.table\
+	grib2/tables/15/3.8.table\
+	grib2/tables/15/3.9.table\
+	grib2/tables/15/4.0.table\
+	grib2/tables/15/4.1.0.table\
+	grib2/tables/15/4.1.1.table\
+	grib2/tables/15/4.1.10.table\
+	grib2/tables/15/4.1.192.table\
+	grib2/tables/15/4.1.2.table\
+	grib2/tables/15/4.1.3.table\
+	grib2/tables/15/4.10.table\
+	grib2/tables/15/4.11.table\
+	grib2/tables/15/4.12.table\
+	grib2/tables/15/4.13.table\
+	grib2/tables/15/4.14.table\
+	grib2/tables/15/4.15.table\
+	grib2/tables/15/4.192.table\
+	grib2/tables/15/4.2.0.0.table\
+	grib2/tables/15/4.2.0.1.table\
+	grib2/tables/15/4.2.0.13.table\
+	grib2/tables/15/4.2.0.14.table\
+	grib2/tables/15/4.2.0.15.table\
+	grib2/tables/15/4.2.0.16.table\
+	grib2/tables/15/4.2.0.17.table\
+	grib2/tables/15/4.2.0.18.table\
+	grib2/tables/15/4.2.0.19.table\
+	grib2/tables/15/4.2.0.190.table\
+	grib2/tables/15/4.2.0.191.table\
+	grib2/tables/15/4.2.0.2.table\
+	grib2/tables/15/4.2.0.20.table\
+	grib2/tables/15/4.2.0.3.table\
+	grib2/tables/15/4.2.0.4.table\
+	grib2/tables/15/4.2.0.5.table\
+	grib2/tables/15/4.2.0.6.table\
+	grib2/tables/15/4.2.0.7.table\
+	grib2/tables/15/4.2.1.0.table\
+	grib2/tables/15/4.2.1.1.table\
+	grib2/tables/15/4.2.1.2.table\
+	grib2/tables/15/4.2.10.0.table\
+	grib2/tables/15/4.2.10.1.table\
+	grib2/tables/15/4.2.10.191.table\
+	grib2/tables/15/4.2.10.2.table\
+	grib2/tables/15/4.2.10.3.table\
+	grib2/tables/15/4.2.10.4.table\
+	grib2/tables/15/4.2.2.0.table\
+	grib2/tables/15/4.2.2.3.table\
+	grib2/tables/15/4.2.2.4.table\
+	grib2/tables/15/4.2.2.5.table\
+	grib2/tables/15/4.2.3.0.table\
+	grib2/tables/15/4.2.3.1.table\
+	grib2/tables/15/4.201.table\
+	grib2/tables/15/4.202.table\
+	grib2/tables/15/4.203.table\
+	grib2/tables/15/4.204.table\
+	grib2/tables/15/4.205.table\
+	grib2/tables/15/4.206.table\
+	grib2/tables/15/4.207.table\
+	grib2/tables/15/4.208.table\
+	grib2/tables/15/4.209.table\
+	grib2/tables/15/4.210.table\
+	grib2/tables/15/4.211.table\
+	grib2/tables/15/4.212.table\
+	grib2/tables/15/4.213.table\
+	grib2/tables/15/4.215.table\
+	grib2/tables/15/4.216.table\
+	grib2/tables/15/4.217.table\
+	grib2/tables/15/4.218.table\
+	grib2/tables/15/4.219.table\
+	grib2/tables/15/4.220.table\
+	grib2/tables/15/4.221.table\
+	grib2/tables/15/4.222.table\
+	grib2/tables/15/4.223.table\
+	grib2/tables/15/4.224.table\
+	grib2/tables/15/4.225.table\
+	grib2/tables/15/4.227.table\
+	grib2/tables/15/4.230.table\
+	grib2/tables/15/4.233.table\
+	grib2/tables/15/4.234.table\
+	grib2/tables/15/4.236.table\
+	grib2/tables/15/4.240.table\
+	grib2/tables/15/4.241.table\
+	grib2/tables/15/4.242.table\
+	grib2/tables/15/4.243.table\
+	grib2/tables/15/4.3.table\
+	grib2/tables/15/4.4.table\
+	grib2/tables/15/4.5.table\
+	grib2/tables/15/4.6.table\
+	grib2/tables/15/4.7.table\
+	grib2/tables/15/4.8.table\
+	grib2/tables/15/4.9.table\
+	grib2/tables/15/4.91.table\
+	grib2/tables/15/5.0.table\
+	grib2/tables/15/5.1.table\
+	grib2/tables/15/5.2.table\
+	grib2/tables/15/5.3.table\
+	grib2/tables/15/5.4.table\
+	grib2/tables/15/5.40.table\
+	grib2/tables/15/5.40000.table\
+	grib2/tables/15/5.5.table\
+	grib2/tables/15/5.50002.table\
+	grib2/tables/15/5.6.table\
+	grib2/tables/15/5.7.table\
+	grib2/tables/15/6.0.table\
+	grib2/tables/15/stepType.table
+
+definitionsgrib2_tables_16dir = @ECCODES_DEFINITION_PATH@/grib2/tables/16
+dist_definitionsgrib2_tables_16_DATA = \
+	grib2/tables/16/0.0.table\
+	grib2/tables/16/1.0.table\
+	grib2/tables/16/1.1.table\
+	grib2/tables/16/1.2.table\
+	grib2/tables/16/1.3.table\
+	grib2/tables/16/1.4.table\
+	grib2/tables/16/1.5.table\
+	grib2/tables/16/1.6.table\
+	grib2/tables/16/3.0.table\
+	grib2/tables/16/3.1.table\
+	grib2/tables/16/3.10.table\
+	grib2/tables/16/3.11.table\
+	grib2/tables/16/3.15.table\
+	grib2/tables/16/3.2.table\
+	grib2/tables/16/3.20.table\
+	grib2/tables/16/3.21.table\
+	grib2/tables/16/3.3.table\
+	grib2/tables/16/3.4.table\
+	grib2/tables/16/3.5.table\
+	grib2/tables/16/3.6.table\
+	grib2/tables/16/3.7.table\
+	grib2/tables/16/3.8.table\
+	grib2/tables/16/3.9.table\
+	grib2/tables/16/4.0.table\
+	grib2/tables/16/4.1.0.table\
+	grib2/tables/16/4.1.1.table\
+	grib2/tables/16/4.1.10.table\
+	grib2/tables/16/4.1.192.table\
+	grib2/tables/16/4.1.2.table\
+	grib2/tables/16/4.1.3.table\
+	grib2/tables/16/4.10.table\
+	grib2/tables/16/4.11.table\
+	grib2/tables/16/4.12.table\
+	grib2/tables/16/4.13.table\
+	grib2/tables/16/4.14.table\
+	grib2/tables/16/4.15.table\
+	grib2/tables/16/4.192.table\
+	grib2/tables/16/4.2.0.0.table\
+	grib2/tables/16/4.2.0.1.table\
+	grib2/tables/16/4.2.0.13.table\
+	grib2/tables/16/4.2.0.14.table\
+	grib2/tables/16/4.2.0.15.table\
+	grib2/tables/16/4.2.0.16.table\
+	grib2/tables/16/4.2.0.17.table\
+	grib2/tables/16/4.2.0.18.table\
+	grib2/tables/16/4.2.0.19.table\
+	grib2/tables/16/4.2.0.190.table\
+	grib2/tables/16/4.2.0.191.table\
+	grib2/tables/16/4.2.0.2.table\
+	grib2/tables/16/4.2.0.20.table\
+	grib2/tables/16/4.2.0.3.table\
+	grib2/tables/16/4.2.0.4.table\
+	grib2/tables/16/4.2.0.5.table\
+	grib2/tables/16/4.2.0.6.table\
+	grib2/tables/16/4.2.0.7.table\
+	grib2/tables/16/4.2.1.0.table\
+	grib2/tables/16/4.2.1.1.table\
+	grib2/tables/16/4.2.1.2.table\
+	grib2/tables/16/4.2.10.0.table\
+	grib2/tables/16/4.2.10.1.table\
+	grib2/tables/16/4.2.10.191.table\
+	grib2/tables/16/4.2.10.2.table\
+	grib2/tables/16/4.2.10.3.table\
+	grib2/tables/16/4.2.10.4.table\
+	grib2/tables/16/4.2.2.0.table\
+	grib2/tables/16/4.2.2.3.table\
+	grib2/tables/16/4.2.2.4.table\
+	grib2/tables/16/4.2.2.5.table\
+	grib2/tables/16/4.2.3.0.table\
+	grib2/tables/16/4.2.3.1.table\
+	grib2/tables/16/4.2.3.2.table\
+	grib2/tables/16/4.2.3.3.table\
+	grib2/tables/16/4.2.3.4.table\
+	grib2/tables/16/4.2.3.5.table\
+	grib2/tables/16/4.2.3.6.table\
+	grib2/tables/16/4.201.table\
+	grib2/tables/16/4.202.table\
+	grib2/tables/16/4.203.table\
+	grib2/tables/16/4.204.table\
+	grib2/tables/16/4.205.table\
+	grib2/tables/16/4.206.table\
+	grib2/tables/16/4.207.table\
+	grib2/tables/16/4.208.table\
+	grib2/tables/16/4.209.table\
+	grib2/tables/16/4.210.table\
+	grib2/tables/16/4.211.table\
+	grib2/tables/16/4.212.table\
+	grib2/tables/16/4.213.table\
+	grib2/tables/16/4.215.table\
+	grib2/tables/16/4.216.table\
+	grib2/tables/16/4.217.table\
+	grib2/tables/16/4.218.table\
+	grib2/tables/16/4.219.table\
+	grib2/tables/16/4.220.table\
+	grib2/tables/16/4.221.table\
+	grib2/tables/16/4.222.table\
+	grib2/tables/16/4.223.table\
+	grib2/tables/16/4.224.table\
+	grib2/tables/16/4.225.table\
+	grib2/tables/16/4.227.table\
+	grib2/tables/16/4.230.table\
+	grib2/tables/16/4.233.table\
+	grib2/tables/16/4.234.table\
+	grib2/tables/16/4.236.table\
+	grib2/tables/16/4.240.table\
+	grib2/tables/16/4.241.table\
+	grib2/tables/16/4.242.table\
+	grib2/tables/16/4.243.table\
+	grib2/tables/16/4.3.table\
+	grib2/tables/16/4.4.table\
+	grib2/tables/16/4.5.table\
+	grib2/tables/16/4.6.table\
+	grib2/tables/16/4.7.table\
+	grib2/tables/16/4.8.table\
+	grib2/tables/16/4.9.table\
+	grib2/tables/16/4.91.table\
+	grib2/tables/16/5.0.table\
+	grib2/tables/16/5.1.table\
+	grib2/tables/16/5.2.table\
+	grib2/tables/16/5.3.table\
+	grib2/tables/16/5.4.table\
+	grib2/tables/16/5.40.table\
+	grib2/tables/16/5.40000.table\
+	grib2/tables/16/5.5.table\
+	grib2/tables/16/5.50002.table\
+	grib2/tables/16/5.6.table\
+	grib2/tables/16/5.7.table\
+	grib2/tables/16/6.0.table\
+	grib2/tables/16/stepType.table
+
 definitionsgrib2_tables_2dir = @ECCODES_DEFINITION_PATH@/grib2/tables/2
 dist_definitionsgrib2_tables_2_DATA = \
 	grib2/tables/2/0.0.table\
@@ -9466,305 +12839,306 @@ dist_definitionsmars_DATA = \
 	mars/default_labeling.def\
 	mars/domain.96.table\
 	mars/domain.table\
-	mars/grib1.amap.an.def\
-	mars/grib1.dacl.pb.def\
-	mars/grib1.dacw.pb.def\
-	mars/grib1.dcda.4i.def\
-	mars/grib1.dcda.me.def\
-	mars/grib1.dcda.sim.def\
-	mars/grib1.edmm.an.def\
-	mars/grib1.edmm.cl.def\
-	mars/grib1.edmm.fc.def\
-	mars/grib1.edmm.fg.def\
-	mars/grib1.edmm.ia.def\
-	mars/grib1.edmm.ssd.def\
-	mars/grib1.edmo.an.def\
-	mars/grib1.edmo.cl.def\
-	mars/grib1.edmo.fc.def\
-	mars/grib1.edmo.ssd.def\
-	mars/grib1.efhc.cf.def\
-	mars/grib1.efhc.icp.def\
-	mars/grib1.efhc.pf.def\
-	mars/grib1.efho.cf.def\
-	mars/grib1.efho.pf.def\
-	mars/grib1.efhs.cd.def\
-	mars/grib1.efhs.ed.def\
-	mars/grib1.efhs.em.def\
-	mars/grib1.efhs.es.def\
-	mars/grib1.efhs.taem.def\
-	mars/grib1.efhs.taes.def\
-	mars/grib1.efov.pf.def\
-	mars/grib1.ehmm.em.def\
-	mars/grib1.elda.4i.def\
-	mars/grib1.elda.4v.def\
-	mars/grib1.elda.an.def\
-	mars/grib1.elda.ea.def\
-	mars/grib1.elda.ef.def\
-	mars/grib1.elda.em.def\
-	mars/grib1.elda.es.def\
-	mars/grib1.elda.fc.def\
-	mars/grib1.elda.me.def\
-	mars/grib1.elda.ses.def\
-	mars/grib1.enda.4v.def\
-	mars/grib1.enda.an.def\
-	mars/grib1.enda.def\
-	mars/grib1.enda.ea.def\
-	mars/grib1.enda.ef.def\
-	mars/grib1.enda.em.def\
-	mars/grib1.enda.es.def\
-	mars/grib1.enda.fc.def\
-	mars/grib1.enda.ssd.def\
-	mars/grib1.enda.sv.def\
-	mars/grib1.enda.svar.def\
-	mars/grib1.enfh.cf.def\
-	mars/grib1.enfh.fcmax.def\
-	mars/grib1.enfh.fcmean.def\
-	mars/grib1.enfh.fcmin.def\
-	mars/grib1.enfh.fcstdev.def\
-	mars/grib1.enfh.ff.def\
-	mars/grib1.enfh.icp.def\
-	mars/grib1.enfh.pf.def\
-	mars/grib1.enfh.tims.def\
-	mars/grib1.enfo.cf.def\
-	mars/grib1.enfo.ci.def\
-	mars/grib1.enfo.cm.def\
-	mars/grib1.enfo.cr.def\
-	mars/grib1.enfo.cs.def\
-	mars/grib1.enfo.cv.def\
-	mars/grib1.enfo.ed.def\
-	mars/grib1.enfo.ef.def\
-	mars/grib1.enfo.efi.def\
-	mars/grib1.enfo.efic.def\
-	mars/grib1.enfo.em.def\
-	mars/grib1.enfo.ep.def\
-	mars/grib1.enfo.es.def\
-	mars/grib1.enfo.fc.def\
-	mars/grib1.enfo.fcmax.def\
-	mars/grib1.enfo.fcmean.def\
-	mars/grib1.enfo.fcmin.def\
-	mars/grib1.enfo.fcstdev.def\
-	mars/grib1.enfo.ff.def\
-	mars/grib1.enfo.fp.def\
-	mars/grib1.enfo.icp.def\
-	mars/grib1.enfo.pb.def\
-	mars/grib1.enfo.pd.def\
-	mars/grib1.enfo.pf.def\
-	mars/grib1.enfo.sot.def\
-	mars/grib1.enfo.sv.def\
-	mars/grib1.enfo.svar.def\
-	mars/grib1.enfo.taem.def\
-	mars/grib1.enfo.taes.def\
-	mars/grib1.enfo.tu.def\
-	mars/grib1.enwh.cf.def\
-	mars/grib1.enwh.fcmax.def\
-	mars/grib1.enwh.fcmean.def\
-	mars/grib1.enwh.fcmin.def\
-	mars/grib1.enwh.fcstdev.def\
-	mars/grib1.enwh.pf.def\
-	mars/grib1.esmm.em.def\
-	mars/grib1.espd.an.def\
-	mars/grib1.ewda.4v.def\
-	mars/grib1.ewda.an.def\
-	mars/grib1.ewda.def\
-	mars/grib1.ewda.fc.def\
-	mars/grib1.ewhc.cf.def\
-	mars/grib1.ewhc.pf.def\
-	mars/grib1.ewho.cf.def\
-	mars/grib1.ewho.pf.def\
-	mars/grib1.ewla.4v.def\
-	mars/grib1.ewla.an.def\
-	mars/grib1.ewla.fc.def\
-	mars/grib1.ewmm.an.def\
-	mars/grib1.ewmm.cl.def\
-	mars/grib1.ewmm.fc.def\
-	mars/grib1.ewmo.an.def\
-	mars/grib1.ewmo.cl.def\
-	mars/grib1.ewmo.def\
-	mars/grib1.ewmo.fc.def\
-	mars/grib1.gfas.ga.def\
-	mars/grib1.gfas.gsd.def\
-	mars/grib1.kwbc.pf.def\
-	mars/grib1.lwda.4i.def\
-	mars/grib1.lwda.4v.def\
-	mars/grib1.lwda.an.def\
-	mars/grib1.lwda.ea.def\
-	mars/grib1.lwda.ef.def\
-	mars/grib1.lwda.fc.def\
-	mars/grib1.lwda.me.def\
-	mars/grib1.lwwv.4v.def\
-	mars/grib1.lwwv.an.def\
-	mars/grib1.lwwv.fc.def\
-	mars/grib1.maed.an.def\
-	mars/grib1.maed.fc.def\
-	mars/grib1.mawv.fc.def\
-	mars/grib1.mdfa.fc.def\
-	mars/grib1.me.def\
-	mars/grib1.mfam.em.def\
-	mars/grib1.mfam.fcmean.def\
-	mars/grib1.mfam.fp.def\
-	mars/grib1.mfam.pb.def\
-	mars/grib1.mfam.pd.def\
-	mars/grib1.mfhm.em.def\
-	mars/grib1.mfhm.es.def\
-	mars/grib1.mfhm.fcmax.def\
-	mars/grib1.mfhm.fcmean.def\
-	mars/grib1.mfhm.fcmin.def\
-	mars/grib1.mfhm.fcstdev.def\
-	mars/grib1.mfhw.cf.def\
-	mars/grib1.mfhw.fc.def\
-	mars/grib1.mfwm.fcmax.def\
-	mars/grib1.mfwm.fcmean.def\
-	mars/grib1.mfwm.fcmin.def\
-	mars/grib1.mfwm.fcstdev.def\
-	mars/grib1.mhwm.fcmax.def\
-	mars/grib1.mhwm.fcmean.def\
-	mars/grib1.mhwm.fcmin.def\
-	mars/grib1.mhwm.fcstdev.def\
-	mars/grib1.mmaf.fc.def\
-	mars/grib1.mmaf.fcmean.def\
-	mars/grib1.mmam.fcmean.def\
-	mars/grib1.mmsa.em.def\
-	mars/grib1.mmsa.fcmean.def\
-	mars/grib1.mmsf.fc.def\
-	mars/grib1.mmsf.icp.def\
-	mars/grib1.mnfc.cf.def\
-	mars/grib1.mnfc.ed.def\
-	mars/grib1.mnfc.em.def\
-	mars/grib1.mnfc.es.def\
-	mars/grib1.mnfc.fc.def\
-	mars/grib1.mnfc.ff.def\
-	mars/grib1.mnfc.icp.def\
-	mars/grib1.mnfc.of.def\
-	mars/grib1.mnfh.cf.def\
-	mars/grib1.mnfh.ed.def\
-	mars/grib1.mnfh.em.def\
-	mars/grib1.mnfh.es.def\
-	mars/grib1.mnfh.fc.def\
-	mars/grib1.mnfh.icp.def\
-	mars/grib1.mnfm.em.def\
-	mars/grib1.mnfm.es.def\
-	mars/grib1.mnfm.fcmax.def\
-	mars/grib1.mnfm.fcmean.def\
-	mars/grib1.mnfm.fcmin.def\
-	mars/grib1.mnfm.fcstdev.def\
-	mars/grib1.mnfw.cf.def\
-	mars/grib1.mnfw.fc.def\
-	mars/grib1.mnth.an.def\
-	mars/grib1.mnth.cl.def\
-	mars/grib1.mnth.fc.def\
-	mars/grib1.mnth.fg.def\
-	mars/grib1.mnth.ia.def\
-	mars/grib1.mnth.ssd.def\
-	mars/grib1.moda.an.def\
-	mars/grib1.moda.cl.def\
-	mars/grib1.moda.fc.def\
-	mars/grib1.moda.ssd.def\
-	mars/grib1.mofc.cf.def\
-	mars/grib1.mofc.ed.def\
-	mars/grib1.mofc.em.def\
-	mars/grib1.mofc.es.def\
-	mars/grib1.mofc.fc.def\
-	mars/grib1.mofc.ff.def\
-	mars/grib1.mofc.of.def\
-	mars/grib1.mofm.fcmax.def\
-	mars/grib1.mofm.fcmean.def\
-	mars/grib1.mofm.fcmin.def\
-	mars/grib1.mofm.fcstdev.def\
-	mars/grib1.mpic.s3.def\
-	mars/grib1.msda.an.def\
-	mars/grib1.msdc.an.def\
-	mars/grib1.msdc.fc.def\
-	mars/grib1.msmm.em.def\
-	mars/grib1.msmm.fcmax.def\
-	mars/grib1.msmm.fcmean.def\
-	mars/grib1.msmm.fcmin.def\
-	mars/grib1.msmm.fcstdev.def\
-	mars/grib1.msmm.hcmean.def\
-	mars/grib1.ocea.an.def\
-	mars/grib1.ocea.ff.def\
-	mars/grib1.ocea.fx.def\
-	mars/grib1.ocea.of.def\
-	mars/grib1.ocea.or.def\
-	mars/grib1.oper.3v.def\
-	mars/grib1.oper.4i.def\
-	mars/grib1.oper.4v.def\
-	mars/grib1.oper.an.def\
-	mars/grib1.oper.ea.def\
-	mars/grib1.oper.ef.def\
-	mars/grib1.oper.fa.def\
-	mars/grib1.oper.fc.def\
-	mars/grib1.oper.fg.def\
-	mars/grib1.oper.go.def\
-	mars/grib1.oper.ia.def\
-	mars/grib1.oper.im.def\
-	mars/grib1.oper.me.def\
-	mars/grib1.oper.oi.def\
-	mars/grib1.oper.si.def\
-	mars/grib1.oper.sim.def\
-	mars/grib1.oper.ssd.def\
-	mars/grib1.scda.4i.def\
-	mars/grib1.scda.me.def\
-	mars/grib1.seap.an.def\
-	mars/grib1.seap.ef.def\
-	mars/grib1.seap.es.def\
-	mars/grib1.seap.fc.def\
-	mars/grib1.seap.sv.def\
-	mars/grib1.seap.svar.def\
-	mars/grib1.seas.an.def\
-	mars/grib1.seas.fc.def\
-	mars/grib1.seas.ff.def\
-	mars/grib1.seas.fx.def\
-	mars/grib1.seas.of.def\
-	mars/grib1.seas.or.def\
-	mars/grib1.sens.me.def\
-	mars/grib1.sens.sf.def\
-	mars/grib1.sens.sg.def\
-	mars/grib1.sfmm.em.def\
-	mars/grib1.sfmm.fcmax.def\
-	mars/grib1.sfmm.fcmean.def\
-	mars/grib1.sfmm.fcmin.def\
-	mars/grib1.sfmm.fcstdev.def\
-	mars/grib1.smma.em.def\
-	mars/grib1.smma.fcmean.def\
-	mars/grib1.supd.an.def\
-	mars/grib1.swmm.fcmax.def\
-	mars/grib1.swmm.fcmean.def\
-	mars/grib1.swmm.fcmin.def\
-	mars/grib1.swmm.fcstdev.def\
-	mars/grib1.ukmo.s3.def\
-	mars/grib1.waef.cv.def\
-	mars/grib1.waef.efi.def\
-	mars/grib1.waef.efic.def\
-	mars/grib1.waef.ep.def\
-	mars/grib1.waef.fcmax.def\
-	mars/grib1.waef.fcmean.def\
-	mars/grib1.waef.fcmin.def\
-	mars/grib1.waef.fcstdev.def\
-	mars/grib1.waef.fp.def\
-	mars/grib1.waef.pf.def\
-	mars/grib1.waef.sot.def\
-	mars/grib1.wamd.an.def\
-	mars/grib1.wamd.fc.def\
-	mars/grib1.wamf.cf.def\
-	mars/grib1.wamf.fc.def\
-	mars/grib1.wamo.an.def\
-	mars/grib1.wamo.cl.def\
-	mars/grib1.wamo.fc.def\
-	mars/grib1.wasf.fc.def\
-	mars/grib1.wave.4v.def\
-	mars/grib1.wave.an.def\
-	mars/grib1.wave.def\
-	mars/grib1.wave.fc.def\
-	mars/grib1.wave.fg.def\
-	mars/grib1.wehs.cd.def\
-	mars/grib1.wehs.ed.def\
-	mars/grib1.wehs.em.def\
-	mars/grib1.wehs.es.def\
-	mars/grib1.weov.pf.def\
-	mars/grib1.wmfm.fcmax.def\
-	mars/grib1.wmfm.fcmean.def\
-	mars/grib1.wmfm.fcmin.def\
-	mars/grib1.wmfm.fcstdev.def\
+	mars/grib.amap.an.def\
+	mars/grib.dacl.pb.def\
+	mars/grib.dacw.pb.def\
+	mars/grib.dcda.4i.def\
+	mars/grib.dcda.me.def\
+	mars/grib.dcda.sim.def\
+	mars/grib.edmm.an.def\
+	mars/grib.edmm.cl.def\
+	mars/grib.edmm.fc.def\
+	mars/grib.edmm.fg.def\
+	mars/grib.edmm.ia.def\
+	mars/grib.edmm.ssd.def\
+	mars/grib.edmo.an.def\
+	mars/grib.edmo.cl.def\
+	mars/grib.edmo.fc.def\
+	mars/grib.edmo.ssd.def\
+	mars/grib.efhc.cf.def\
+	mars/grib.efhc.icp.def\
+	mars/grib.efhc.pf.def\
+	mars/grib.efho.cf.def\
+	mars/grib.efho.pf.def\
+	mars/grib.efhs.cd.def\
+	mars/grib.efhs.ed.def\
+	mars/grib.efhs.em.def\
+	mars/grib.efhs.es.def\
+	mars/grib.efhs.taem.def\
+	mars/grib.efhs.taes.def\
+	mars/grib.efov.pf.def\
+	mars/grib.ehmm.em.def\
+	mars/grib.elda.4i.def\
+	mars/grib.elda.4v.def\
+	mars/grib.elda.an.def\
+	mars/grib.elda.ea.def\
+	mars/grib.elda.ef.def\
+	mars/grib.elda.em.def\
+	mars/grib.elda.es.def\
+	mars/grib.elda.fc.def\
+	mars/grib.elda.me.def\
+	mars/grib.elda.ses.def\
+	mars/grib.enda.4v.def\
+	mars/grib.enda.an.def\
+	mars/grib.enda.def\
+	mars/grib.enda.ea.def\
+	mars/grib.enda.ef.def\
+	mars/grib.enda.em.def\
+	mars/grib.enda.es.def\
+	mars/grib.enda.fc.def\
+	mars/grib.enda.ssd.def\
+	mars/grib.enda.sv.def\
+	mars/grib.enda.svar.def\
+	mars/grib.enfh.cf.def\
+	mars/grib.enfh.fcmax.def\
+	mars/grib.enfh.fcmean.def\
+	mars/grib.enfh.fcmin.def\
+	mars/grib.enfh.fcstdev.def\
+	mars/grib.enfh.ff.def\
+	mars/grib.enfh.icp.def\
+	mars/grib.enfh.pf.def\
+	mars/grib.enfh.tims.def\
+	mars/grib.enfo.cf.def\
+	mars/grib.enfo.ci.def\
+	mars/grib.enfo.cm.def\
+	mars/grib.enfo.cr.def\
+	mars/grib.enfo.cs.def\
+	mars/grib.enfo.cv.def\
+	mars/grib.enfo.ed.def\
+	mars/grib.enfo.ef.def\
+	mars/grib.enfo.efi.def\
+	mars/grib.enfo.efic.def\
+	mars/grib.enfo.em.def\
+	mars/grib.enfo.ep.def\
+	mars/grib.enfo.es.def\
+	mars/grib.enfo.fc.def\
+	mars/grib.enfo.fcmax.def\
+	mars/grib.enfo.fcmean.def\
+	mars/grib.enfo.fcmin.def\
+	mars/grib.enfo.fcstdev.def\
+	mars/grib.enfo.ff.def\
+	mars/grib.enfo.fp.def\
+	mars/grib.enfo.icp.def\
+	mars/grib.enfo.pb.def\
+	mars/grib.enfo.pd.def\
+	mars/grib.enfo.pf.def\
+	mars/grib.enfo.sot.def\
+	mars/grib.enfo.sv.def\
+	mars/grib.enfo.svar.def\
+	mars/grib.enfo.taem.def\
+	mars/grib.enfo.taes.def\
+	mars/grib.enfo.tu.def\
+	mars/grib.enwh.cf.def\
+	mars/grib.enwh.fcmax.def\
+	mars/grib.enwh.fcmean.def\
+	mars/grib.enwh.fcmin.def\
+	mars/grib.enwh.fcstdev.def\
+	mars/grib.enwh.pf.def\
+	mars/grib.esmm.em.def\
+	mars/grib.espd.an.def\
+	mars/grib.ewda.4v.def\
+	mars/grib.ewda.an.def\
+	mars/grib.ewda.def\
+	mars/grib.ewda.fc.def\
+	mars/grib.ewhc.cf.def\
+	mars/grib.ewhc.pf.def\
+	mars/grib.ewho.cf.def\
+	mars/grib.ewho.pf.def\
+	mars/grib.ewla.4v.def\
+	mars/grib.ewla.an.def\
+	mars/grib.ewla.fc.def\
+	mars/grib.ewmm.an.def\
+	mars/grib.ewmm.cl.def\
+	mars/grib.ewmm.fc.def\
+	mars/grib.ewmo.an.def\
+	mars/grib.ewmo.cl.def\
+	mars/grib.ewmo.def\
+	mars/grib.ewmo.fc.def\
+	mars/grib.gfas.ga.def\
+	mars/grib.gfas.gsd.def\
+	mars/grib.kwbc.pf.def\
+	mars/grib.lwda.4i.def\
+	mars/grib.lwda.4v.def\
+	mars/grib.lwda.an.def\
+	mars/grib.lwda.ea.def\
+	mars/grib.lwda.ef.def\
+	mars/grib.lwda.fc.def\
+	mars/grib.lwda.me.def\
+	mars/grib.lwda.ssd.def\
+	mars/grib.lwwv.4v.def\
+	mars/grib.lwwv.an.def\
+	mars/grib.lwwv.fc.def\
+	mars/grib.maed.an.def\
+	mars/grib.maed.fc.def\
+	mars/grib.mawv.fc.def\
+	mars/grib.mdfa.fc.def\
+	mars/grib.me.def\
+	mars/grib.mfam.em.def\
+	mars/grib.mfam.fcmean.def\
+	mars/grib.mfam.fp.def\
+	mars/grib.mfam.pb.def\
+	mars/grib.mfam.pd.def\
+	mars/grib.mfhm.em.def\
+	mars/grib.mfhm.es.def\
+	mars/grib.mfhm.fcmax.def\
+	mars/grib.mfhm.fcmean.def\
+	mars/grib.mfhm.fcmin.def\
+	mars/grib.mfhm.fcstdev.def\
+	mars/grib.mfhw.cf.def\
+	mars/grib.mfhw.fc.def\
+	mars/grib.mfwm.fcmax.def\
+	mars/grib.mfwm.fcmean.def\
+	mars/grib.mfwm.fcmin.def\
+	mars/grib.mfwm.fcstdev.def\
+	mars/grib.mhwm.fcmax.def\
+	mars/grib.mhwm.fcmean.def\
+	mars/grib.mhwm.fcmin.def\
+	mars/grib.mhwm.fcstdev.def\
+	mars/grib.mmaf.fc.def\
+	mars/grib.mmaf.fcmean.def\
+	mars/grib.mmam.fcmean.def\
+	mars/grib.mmsa.em.def\
+	mars/grib.mmsa.fcmean.def\
+	mars/grib.mmsf.fc.def\
+	mars/grib.mmsf.icp.def\
+	mars/grib.mnfc.cf.def\
+	mars/grib.mnfc.ed.def\
+	mars/grib.mnfc.em.def\
+	mars/grib.mnfc.es.def\
+	mars/grib.mnfc.fc.def\
+	mars/grib.mnfc.ff.def\
+	mars/grib.mnfc.icp.def\
+	mars/grib.mnfc.of.def\
+	mars/grib.mnfh.cf.def\
+	mars/grib.mnfh.ed.def\
+	mars/grib.mnfh.em.def\
+	mars/grib.mnfh.es.def\
+	mars/grib.mnfh.fc.def\
+	mars/grib.mnfh.icp.def\
+	mars/grib.mnfm.em.def\
+	mars/grib.mnfm.es.def\
+	mars/grib.mnfm.fcmax.def\
+	mars/grib.mnfm.fcmean.def\
+	mars/grib.mnfm.fcmin.def\
+	mars/grib.mnfm.fcstdev.def\
+	mars/grib.mnfw.cf.def\
+	mars/grib.mnfw.fc.def\
+	mars/grib.mnth.an.def\
+	mars/grib.mnth.cl.def\
+	mars/grib.mnth.fc.def\
+	mars/grib.mnth.fg.def\
+	mars/grib.mnth.ia.def\
+	mars/grib.mnth.ssd.def\
+	mars/grib.moda.an.def\
+	mars/grib.moda.cl.def\
+	mars/grib.moda.fc.def\
+	mars/grib.moda.ssd.def\
+	mars/grib.mofc.cf.def\
+	mars/grib.mofc.ed.def\
+	mars/grib.mofc.em.def\
+	mars/grib.mofc.es.def\
+	mars/grib.mofc.fc.def\
+	mars/grib.mofc.ff.def\
+	mars/grib.mofc.of.def\
+	mars/grib.mofm.fcmax.def\
+	mars/grib.mofm.fcmean.def\
+	mars/grib.mofm.fcmin.def\
+	mars/grib.mofm.fcstdev.def\
+	mars/grib.mpic.s3.def\
+	mars/grib.msda.an.def\
+	mars/grib.msdc.an.def\
+	mars/grib.msdc.fc.def\
+	mars/grib.msmm.em.def\
+	mars/grib.msmm.fcmax.def\
+	mars/grib.msmm.fcmean.def\
+	mars/grib.msmm.fcmin.def\
+	mars/grib.msmm.fcstdev.def\
+	mars/grib.msmm.hcmean.def\
+	mars/grib.ocea.an.def\
+	mars/grib.ocea.ff.def\
+	mars/grib.ocea.fx.def\
+	mars/grib.ocea.of.def\
+	mars/grib.ocea.or.def\
+	mars/grib.oper.3v.def\
+	mars/grib.oper.4i.def\
+	mars/grib.oper.4v.def\
+	mars/grib.oper.an.def\
+	mars/grib.oper.ea.def\
+	mars/grib.oper.ef.def\
+	mars/grib.oper.fa.def\
+	mars/grib.oper.fc.def\
+	mars/grib.oper.fg.def\
+	mars/grib.oper.go.def\
+	mars/grib.oper.ia.def\
+	mars/grib.oper.im.def\
+	mars/grib.oper.me.def\
+	mars/grib.oper.oi.def\
+	mars/grib.oper.si.def\
+	mars/grib.oper.sim.def\
+	mars/grib.oper.ssd.def\
+	mars/grib.scda.4i.def\
+	mars/grib.scda.me.def\
+	mars/grib.seap.an.def\
+	mars/grib.seap.ef.def\
+	mars/grib.seap.es.def\
+	mars/grib.seap.fc.def\
+	mars/grib.seap.sv.def\
+	mars/grib.seap.svar.def\
+	mars/grib.seas.an.def\
+	mars/grib.seas.fc.def\
+	mars/grib.seas.ff.def\
+	mars/grib.seas.fx.def\
+	mars/grib.seas.of.def\
+	mars/grib.seas.or.def\
+	mars/grib.sens.me.def\
+	mars/grib.sens.sf.def\
+	mars/grib.sens.sg.def\
+	mars/grib.sfmm.em.def\
+	mars/grib.sfmm.fcmax.def\
+	mars/grib.sfmm.fcmean.def\
+	mars/grib.sfmm.fcmin.def\
+	mars/grib.sfmm.fcstdev.def\
+	mars/grib.smma.em.def\
+	mars/grib.smma.fcmean.def\
+	mars/grib.supd.an.def\
+	mars/grib.swmm.fcmax.def\
+	mars/grib.swmm.fcmean.def\
+	mars/grib.swmm.fcmin.def\
+	mars/grib.swmm.fcstdev.def\
+	mars/grib.ukmo.s3.def\
+	mars/grib.waef.cv.def\
+	mars/grib.waef.efi.def\
+	mars/grib.waef.efic.def\
+	mars/grib.waef.ep.def\
+	mars/grib.waef.fcmax.def\
+	mars/grib.waef.fcmean.def\
+	mars/grib.waef.fcmin.def\
+	mars/grib.waef.fcstdev.def\
+	mars/grib.waef.fp.def\
+	mars/grib.waef.pf.def\
+	mars/grib.waef.sot.def\
+	mars/grib.wamd.an.def\
+	mars/grib.wamd.fc.def\
+	mars/grib.wamf.cf.def\
+	mars/grib.wamf.fc.def\
+	mars/grib.wamo.an.def\
+	mars/grib.wamo.cl.def\
+	mars/grib.wamo.fc.def\
+	mars/grib.wasf.fc.def\
+	mars/grib.wave.4v.def\
+	mars/grib.wave.an.def\
+	mars/grib.wave.def\
+	mars/grib.wave.fc.def\
+	mars/grib.wave.fg.def\
+	mars/grib.wehs.cd.def\
+	mars/grib.wehs.ed.def\
+	mars/grib.wehs.em.def\
+	mars/grib.wehs.es.def\
+	mars/grib.weov.pf.def\
+	mars/grib.wmfm.fcmax.def\
+	mars/grib.wmfm.fcmean.def\
+	mars/grib.wmfm.fcmin.def\
+	mars/grib.wmfm.fcstdev.def\
 	mars/make_type_switch_case.sh\
 	mars/marsTypeConcept.def\
 	mars/model.96.table\
@@ -9776,26 +13150,159 @@ definitionsmars_eswidir = @ECCODES_DEFINITION_PATH@/mars/eswi
 dist_definitionsmars_eswi_DATA = \
 	mars/eswi/aerosolPackingConcept.def\
 	mars/eswi/class.table\
-	mars/eswi/grib1.expr.3v.def\
-	mars/eswi/grib1.expr.4v.def\
-	mars/eswi/grib1.expr.an.def\
-	mars/eswi/grib1.expr.fc.def\
-	mars/eswi/grib1.expr.si.def\
-	mars/eswi/grib1.mdfa.fc.def\
-	mars/eswi/grib1.mnth.an.def\
-	mars/eswi/grib1.mnth.fc.def\
-	mars/eswi/grib1.moda.an.def\
-	mars/eswi/grib1.moda.fc.def\
-	mars/eswi/grib1.oper.3v.def\
-	mars/eswi/grib1.oper.4v.def\
-	mars/eswi/grib1.oper.an.def\
-	mars/eswi/grib1.oper.fc.def\
-	mars/eswi/grib1.oper.si.def\
+	mars/eswi/grib.expr.3v.def\
+	mars/eswi/grib.expr.4v.def\
+	mars/eswi/grib.expr.an.def\
+	mars/eswi/grib.expr.fc.def\
+	mars/eswi/grib.expr.si.def\
+	mars/eswi/grib.mdfa.fc.def\
+	mars/eswi/grib.mnth.an.def\
+	mars/eswi/grib.mnth.fc.def\
+	mars/eswi/grib.moda.an.def\
+	mars/eswi/grib.moda.fc.def\
+	mars/eswi/grib.oper.3v.def\
+	mars/eswi/grib.oper.4v.def\
+	mars/eswi/grib.oper.an.def\
+	mars/eswi/grib.oper.fc.def\
+	mars/eswi/grib.oper.si.def\
 	mars/eswi/model.table\
 	mars/eswi/stream.table\
 	mars/eswi/type.table\
 	mars/eswi/wave_domain.def
 
+definitionsmetardir = @ECCODES_DEFINITION_PATH@/metar
+dist_definitionsmetar_DATA = \
+	metar/CCCC.txt\
+	metar/boot.def\
+	metar/boot.flexible.def\
+	metar/cccc.def\
+	metar/clouds.def\
+	metar/clouds.table\
+	metar/clouds_Trend1.def\
+	metar/clouds_Trend2.def\
+	metar/clouds_Trend3.def\
+	metar/clouds_Trend4.def\
+	metar/colour.def\
+	metar/direction.table\
+	metar/horizontalVisibility.def\
+	metar/horizontalVisibility_Trend1.def\
+	metar/horizontalVisibility_Trend2.def\
+	metar/horizontalVisibility_Trend3.def\
+	metar/horizontalVisibility_Trend4.def\
+	metar/missing_field.def\
+	metar/nsd_cccc.txt\
+	metar/present_weather.def\
+	metar/present_weather.list\
+	metar/present_weather_Trend1.def\
+	metar/present_weather_Trend2.def\
+	metar/present_weather_Trend3.def\
+	metar/present_weather_Trend4.def\
+	metar/qnh.def\
+	metar/recent_weather.def\
+	metar/remark.def\
+	metar/runwayDepthOfDeposit.table\
+	metar/runwayFrictionCoefficient.table\
+	metar/runwayState.def\
+	metar/runwayState1.def\
+	metar/runwayState2.def\
+	metar/runwayState3.def\
+	metar/runwayState4.def\
+	metar/runwayStateDeposit.table\
+	metar/runwayStateExtentOfContamination.table\
+	metar/rvr1.def\
+	metar/rvr2.def\
+	metar/rvr3.def\
+	metar/rvr4.def\
+	metar/seaState.table\
+	metar/sea_state.def\
+	metar/temperature.def\
+	metar/temperature.list\
+	metar/trend1.def\
+	metar/trend2.def\
+	metar/trend3.def\
+	metar/trend4.def\
+	metar/weatherCodes-forecasters.txt\
+	metar/weatherCodes-full.txt\
+	metar/weatherCodes-metar-template.txt\
+	metar/weatherCodes-trend-template.txt\
+	metar/wind.def\
+	metar/wind_Trend1.def\
+	metar/wind_Trend2.def\
+	metar/wind_Trend3.def\
+	metar/wind_Trend4.def\
+	metar/wind_shear.def\
+	metar/wrong_delayed.def
+
+definitionsmetar_stationsdir = @ECCODES_DEFINITION_PATH@/metar/stations
+dist_definitionsmetar_stations_DATA = \
+	metar/stations/nsd_cccc.txt
+
+definitionstafdir = @ECCODES_DEFINITION_PATH@/taf
+dist_definitionstaf_DATA = \
+	taf/CCCC.txt\
+	taf/boot.def\
+	taf/cccc.def\
+	taf/clouds.def\
+	taf/clouds.table\
+	taf/clouds_Trend1.def\
+	taf/clouds_Trend2.def\
+	taf/clouds_Trend3.def\
+	taf/clouds_Trend4.def\
+	taf/colour.def\
+	taf/direction.table\
+	taf/horizontalVisibility.def\
+	taf/horizontalVisibility_Trend1.def\
+	taf/horizontalVisibility_Trend2.def\
+	taf/horizontalVisibility_Trend3.def\
+	taf/horizontalVisibility_Trend4.def\
+	taf/missing_field.def\
+	taf/nsd_cccc.txt\
+	taf/present_weather.def\
+	taf/present_weather.list\
+	taf/present_weather_Trend1.def\
+	taf/present_weather_Trend2.def\
+	taf/present_weather_Trend3.def\
+	taf/present_weather_Trend4.def\
+	taf/qnh.def\
+	taf/recent_weather.def\
+	taf/remark.def\
+	taf/runwayDepthOfDeposit.table\
+	taf/runwayFrictionCoefficient.table\
+	taf/runwayState.def\
+	taf/runwayState1.def\
+	taf/runwayState2.def\
+	taf/runwayState3.def\
+	taf/runwayState4.def\
+	taf/runwayStateDeposit.table\
+	taf/runwayStateExtentOfContamination.table\
+	taf/rvr1.def\
+	taf/rvr2.def\
+	taf/rvr3.def\
+	taf/rvr4.def\
+	taf/seaState.table\
+	taf/sea_state.def\
+	taf/temperature.def\
+	taf/temperature.list\
+	taf/trend1.def\
+	taf/trend2.def\
+	taf/trend3.def\
+	taf/trend4.def\
+	taf/weatherCodes-forecasters.txt\
+	taf/weatherCodes-full.txt\
+	taf/weatherCodes-metar-template.txt\
+	taf/weatherCodes-trend-template.txt\
+	taf/wind.def\
+	taf/wind_Trend1.def\
+	taf/wind_Trend2.def\
+	taf/wind_Trend3.def\
+	taf/wind_Trend4.def\
+	taf/wind_shear.def\
+	taf/wrong_delayed.def
+
+definitionstaf_stationsdir = @ECCODES_DEFINITION_PATH@/taf/stations
+dist_definitionstaf_stations_DATA = \
+	taf/stations/nsd_cccc.txt
+
 definitionstidedir = @ECCODES_DEFINITION_PATH@/tide
 dist_definitionstide_DATA = \
 	tide/boot.def\
@@ -10037,6 +13544,216 @@ uninstall-dist_definitionsbufr_tables_0_local_1_98_0_codetablesDATA:
 	@list='$(dist_definitionsbufr_tables_0_local_1_98_0_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
 	dir='$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsbufr_tables_0_local_2_98_0DATA: $(dist_definitionsbufr_tables_0_local_2_98_0_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsbufr_tables_0_local_2_98_0_DATA)'; test -n "$(definitionsbufr_tables_0_local_2_98_0dir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0dir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0dir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0dir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0dir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsbufr_tables_0_local_2_98_0DATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsbufr_tables_0_local_2_98_0_DATA)'; test -n "$(definitionsbufr_tables_0_local_2_98_0dir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0dir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsbufr_tables_0_local_2_98_0_codetablesDATA: $(dist_definitionsbufr_tables_0_local_2_98_0_codetables_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsbufr_tables_0_local_2_98_0_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_local_2_98_0_codetablesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0_codetablesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0_codetablesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0_codetablesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0_codetablesdir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsbufr_tables_0_local_2_98_0_codetablesDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsbufr_tables_0_local_2_98_0_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_local_2_98_0_codetablesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0_codetablesdir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsbufr_tables_0_local_3_98_0DATA: $(dist_definitionsbufr_tables_0_local_3_98_0_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsbufr_tables_0_local_3_98_0_DATA)'; test -n "$(definitionsbufr_tables_0_local_3_98_0dir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0dir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0dir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0dir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0dir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsbufr_tables_0_local_3_98_0DATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsbufr_tables_0_local_3_98_0_DATA)'; test -n "$(definitionsbufr_tables_0_local_3_98_0dir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0dir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsbufr_tables_0_local_3_98_0_codetablesDATA: $(dist_definitionsbufr_tables_0_local_3_98_0_codetables_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsbufr_tables_0_local_3_98_0_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_local_3_98_0_codetablesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0_codetablesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0_codetablesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0_codetablesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0_codetablesdir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsbufr_tables_0_local_3_98_0_codetablesDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsbufr_tables_0_local_3_98_0_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_local_3_98_0_codetablesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0_codetablesdir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsbufr_tables_0_wmo_10DATA: $(dist_definitionsbufr_tables_0_wmo_10_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_10_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_10dir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_10dir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_10dir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_10dir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_10dir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsbufr_tables_0_wmo_10DATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_10_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_10dir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_10dir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsbufr_tables_0_wmo_10_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_10_codetables_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_10_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_10_codetablesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_10_codetablesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_10_codetablesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_10_codetablesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_10_codetablesdir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsbufr_tables_0_wmo_10_codetablesDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_10_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_10_codetablesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_10_codetablesdir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsbufr_tables_0_wmo_11DATA: $(dist_definitionsbufr_tables_0_wmo_11_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_11_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_11dir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_11dir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_11dir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_11dir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_11dir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsbufr_tables_0_wmo_11DATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_11_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_11dir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_11dir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsbufr_tables_0_wmo_11_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_11_codetables_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_11_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_11_codetablesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_11_codetablesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_11_codetablesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_11_codetablesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_11_codetablesdir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsbufr_tables_0_wmo_11_codetablesDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_11_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_11_codetablesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_11_codetablesdir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsbufr_tables_0_wmo_12DATA: $(dist_definitionsbufr_tables_0_wmo_12_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_12_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_12dir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_12dir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_12dir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_12dir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_12dir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsbufr_tables_0_wmo_12DATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_12_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_12dir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_12dir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsbufr_tables_0_wmo_12_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_12_codetables_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_12_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_12_codetablesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_12_codetablesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_12_codetablesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_12_codetablesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_12_codetablesdir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsbufr_tables_0_wmo_12_codetablesDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_12_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_12_codetablesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_12_codetablesdir)'; $(am__uninstall_files_from_dir)
 install-dist_definitionsbufr_tables_0_wmo_13DATA: $(dist_definitionsbufr_tables_0_wmo_13_DATA)
 	@$(NORMAL_INSTALL)
 	@list='$(dist_definitionsbufr_tables_0_wmo_13_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_13dir)" || list=; \
@@ -10499,6 +14216,90 @@ uninstall-dist_definitionsbufr_tables_0_wmo_23_codetablesDATA:
 	@list='$(dist_definitionsbufr_tables_0_wmo_23_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_23_codetablesdir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
 	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_23_codetablesdir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsbufr_tables_0_wmo_24DATA: $(dist_definitionsbufr_tables_0_wmo_24_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_24_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_24dir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_24dir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_24dir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_24dir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_24dir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsbufr_tables_0_wmo_24DATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_24_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_24dir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_24dir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsbufr_tables_0_wmo_24_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_24_codetables_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_24_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_24_codetablesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_24_codetablesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_24_codetablesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_24_codetablesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_24_codetablesdir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsbufr_tables_0_wmo_24_codetablesDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_24_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_24_codetablesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_24_codetablesdir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsbufr_tables_0_wmo_25DATA: $(dist_definitionsbufr_tables_0_wmo_25_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_25_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_25dir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_25dir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_25dir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_25dir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_25dir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsbufr_tables_0_wmo_25DATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_25_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_25dir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_25dir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsbufr_tables_0_wmo_25_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_25_codetables_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_25_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_25_codetablesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_25_codetablesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_25_codetablesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_25_codetablesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_25_codetablesdir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsbufr_tables_0_wmo_25_codetablesDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_25_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_25_codetablesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_25_codetablesdir)'; $(am__uninstall_files_from_dir)
 install-dist_definitionsbufr_tables_0_wmo_6DATA: $(dist_definitionsbufr_tables_0_wmo_6_DATA)
 	@$(NORMAL_INSTALL)
 	@list='$(dist_definitionsbufr_tables_0_wmo_6_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_6dir)" || list=; \
@@ -10541,6 +14342,132 @@ uninstall-dist_definitionsbufr_tables_0_wmo_6_codetablesDATA:
 	@list='$(dist_definitionsbufr_tables_0_wmo_6_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_6_codetablesdir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
 	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_6_codetablesdir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsbufr_tables_0_wmo_7DATA: $(dist_definitionsbufr_tables_0_wmo_7_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_7_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_7dir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_7dir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_7dir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_7dir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_7dir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsbufr_tables_0_wmo_7DATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_7_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_7dir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_7dir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsbufr_tables_0_wmo_7_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_7_codetables_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_7_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_7_codetablesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_7_codetablesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_7_codetablesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_7_codetablesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_7_codetablesdir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsbufr_tables_0_wmo_7_codetablesDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_7_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_7_codetablesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_7_codetablesdir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsbufr_tables_0_wmo_8DATA: $(dist_definitionsbufr_tables_0_wmo_8_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_8_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_8dir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_8dir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_8dir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_8dir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_8dir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsbufr_tables_0_wmo_8DATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_8_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_8dir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_8dir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsbufr_tables_0_wmo_8_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_8_codetables_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_8_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_8_codetablesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_8_codetablesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_8_codetablesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_8_codetablesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_8_codetablesdir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsbufr_tables_0_wmo_8_codetablesDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_8_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_8_codetablesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_8_codetablesdir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsbufr_tables_0_wmo_9DATA: $(dist_definitionsbufr_tables_0_wmo_9_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_9_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_9dir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_9dir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_9dir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_9dir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_9dir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsbufr_tables_0_wmo_9DATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_9_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_9dir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_9dir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsbufr_tables_0_wmo_9_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_9_codetables_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_9_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_9_codetablesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_9_codetablesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_9_codetablesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_9_codetablesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_9_codetablesdir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsbufr_tables_0_wmo_9_codetablesDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsbufr_tables_0_wmo_9_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_9_codetablesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_9_codetablesdir)'; $(am__uninstall_files_from_dir)
 install-dist_definitionsbufr_tables_3_local_1_98_0DATA: $(dist_definitionsbufr_tables_3_local_1_98_0_DATA)
 	@$(NORMAL_INSTALL)
 	@list='$(dist_definitionsbufr_tables_3_local_1_98_0_DATA)'; test -n "$(definitionsbufr_tables_3_local_1_98_0dir)" || list=; \
@@ -10604,6 +14531,48 @@ uninstall-dist_definitionsbufr_tables_3_wmo_6DATA:
 	@list='$(dist_definitionsbufr_tables_3_wmo_6_DATA)'; test -n "$(definitionsbufr_tables_3_wmo_6dir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
 	dir='$(DESTDIR)$(definitionsbufr_tables_3_wmo_6dir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsbufr_templatesDATA: $(dist_definitionsbufr_templates_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsbufr_templates_DATA)'; test -n "$(definitionsbufr_templatesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_templatesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_templatesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_templatesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_templatesdir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsbufr_templatesDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsbufr_templates_DATA)'; test -n "$(definitionsbufr_templatesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsbufr_templatesdir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsbufr_templates_localDATA: $(dist_definitionsbufr_templates_local_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsbufr_templates_local_DATA)'; test -n "$(definitionsbufr_templates_localdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_templates_localdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_templates_localdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_templates_localdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_templates_localdir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsbufr_templates_localDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsbufr_templates_local_DATA)'; test -n "$(definitionsbufr_templates_localdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsbufr_templates_localdir)'; $(am__uninstall_files_from_dir)
 install-dist_definitionscdfDATA: $(dist_definitionscdf_DATA)
 	@$(NORMAL_INSTALL)
 	@list='$(dist_definitionscdf_DATA)'; test -n "$(definitionscdfdir)" || list=; \
@@ -10751,6 +14720,27 @@ uninstall-dist_definitionsgrib1_localConcepts_edzwDATA:
 	@list='$(dist_definitionsgrib1_localConcepts_edzw_DATA)'; test -n "$(definitionsgrib1_localConcepts_edzwdir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
 	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_edzwdir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsgrib1_localConcepts_efklDATA: $(dist_definitionsgrib1_localConcepts_efkl_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsgrib1_localConcepts_efkl_DATA)'; test -n "$(definitionsgrib1_localConcepts_efkldir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_efkldir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_efkldir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_efkldir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_efkldir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsgrib1_localConcepts_efklDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsgrib1_localConcepts_efkl_DATA)'; test -n "$(definitionsgrib1_localConcepts_efkldir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_efkldir)'; $(am__uninstall_files_from_dir)
 install-dist_definitionsgrib1_localConcepts_eidbDATA: $(dist_definitionsgrib1_localConcepts_eidb_DATA)
 	@$(NORMAL_INSTALL)
 	@list='$(dist_definitionsgrib1_localConcepts_eidb_DATA)'; test -n "$(definitionsgrib1_localConcepts_eidbdir)" || list=; \
@@ -11108,6 +15098,27 @@ uninstall-dist_definitionsgrib2_localConcepts_edzwDATA:
 	@list='$(dist_definitionsgrib2_localConcepts_edzw_DATA)'; test -n "$(definitionsgrib2_localConcepts_edzwdir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
 	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_edzwdir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsgrib2_localConcepts_efklDATA: $(dist_definitionsgrib2_localConcepts_efkl_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsgrib2_localConcepts_efkl_DATA)'; test -n "$(definitionsgrib2_localConcepts_efkldir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localConcepts_efkldir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localConcepts_efkldir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localConcepts_efkldir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localConcepts_efkldir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsgrib2_localConcepts_efklDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsgrib2_localConcepts_efkl_DATA)'; test -n "$(definitionsgrib2_localConcepts_efkldir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_efkldir)'; $(am__uninstall_files_from_dir)
 install-dist_definitionsgrib2_localConcepts_egrrDATA: $(dist_definitionsgrib2_localConcepts_egrr_DATA)
 	@$(NORMAL_INSTALL)
 	@list='$(dist_definitionsgrib2_localConcepts_egrr_DATA)'; test -n "$(definitionsgrib2_localConcepts_egrrdir)" || list=; \
@@ -11234,6 +15245,27 @@ uninstall-dist_definitionsgrib2_localConcepts_lfpw1DATA:
 	@list='$(dist_definitionsgrib2_localConcepts_lfpw1_DATA)'; test -n "$(definitionsgrib2_localConcepts_lfpw1dir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
 	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_lfpw1dir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsgrib2_localConcepts_lsswDATA: $(dist_definitionsgrib2_localConcepts_lssw_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsgrib2_localConcepts_lssw_DATA)'; test -n "$(definitionsgrib2_localConcepts_lsswdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localConcepts_lsswdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localConcepts_lsswdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localConcepts_lsswdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localConcepts_lsswdir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsgrib2_localConcepts_lsswDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsgrib2_localConcepts_lssw_DATA)'; test -n "$(definitionsgrib2_localConcepts_lsswdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_lsswdir)'; $(am__uninstall_files_from_dir)
 install-dist_definitionsgrib2_local_1098DATA: $(dist_definitionsgrib2_local_1098_DATA)
 	@$(NORMAL_INSTALL)
 	@list='$(dist_definitionsgrib2_local_1098_DATA)'; test -n "$(definitionsgrib2_local_1098dir)" || list=; \
@@ -11423,6 +15455,48 @@ uninstall-dist_definitionsgrib2_tables_14DATA:
 	@list='$(dist_definitionsgrib2_tables_14_DATA)'; test -n "$(definitionsgrib2_tables_14dir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
 	dir='$(DESTDIR)$(definitionsgrib2_tables_14dir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsgrib2_tables_15DATA: $(dist_definitionsgrib2_tables_15_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsgrib2_tables_15_DATA)'; test -n "$(definitionsgrib2_tables_15dir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_15dir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_15dir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_15dir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_15dir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsgrib2_tables_15DATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsgrib2_tables_15_DATA)'; test -n "$(definitionsgrib2_tables_15dir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsgrib2_tables_15dir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsgrib2_tables_16DATA: $(dist_definitionsgrib2_tables_16_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsgrib2_tables_16_DATA)'; test -n "$(definitionsgrib2_tables_16dir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_16dir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_16dir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_16dir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_16dir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsgrib2_tables_16DATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsgrib2_tables_16_DATA)'; test -n "$(definitionsgrib2_tables_16dir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsgrib2_tables_16dir)'; $(am__uninstall_files_from_dir)
 install-dist_definitionsgrib2_tables_2DATA: $(dist_definitionsgrib2_tables_2_DATA)
 	@$(NORMAL_INSTALL)
 	@list='$(dist_definitionsgrib2_tables_2_DATA)'; test -n "$(definitionsgrib2_tables_2dir)" || list=; \
@@ -11717,6 +15791,90 @@ uninstall-dist_definitionsmars_eswiDATA:
 	@list='$(dist_definitionsmars_eswi_DATA)'; test -n "$(definitionsmars_eswidir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
 	dir='$(DESTDIR)$(definitionsmars_eswidir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsmetarDATA: $(dist_definitionsmetar_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsmetar_DATA)'; test -n "$(definitionsmetardir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsmetardir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsmetardir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsmetardir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsmetardir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsmetarDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsmetar_DATA)'; test -n "$(definitionsmetardir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsmetardir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionsmetar_stationsDATA: $(dist_definitionsmetar_stations_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionsmetar_stations_DATA)'; test -n "$(definitionsmetar_stationsdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsmetar_stationsdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionsmetar_stationsdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsmetar_stationsdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsmetar_stationsdir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionsmetar_stationsDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionsmetar_stations_DATA)'; test -n "$(definitionsmetar_stationsdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionsmetar_stationsdir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionstafDATA: $(dist_definitionstaf_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionstaf_DATA)'; test -n "$(definitionstafdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionstafdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionstafdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionstafdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionstafdir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionstafDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionstaf_DATA)'; test -n "$(definitionstafdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionstafdir)'; $(am__uninstall_files_from_dir)
+install-dist_definitionstaf_stationsDATA: $(dist_definitionstaf_stations_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_definitionstaf_stations_DATA)'; test -n "$(definitionstaf_stationsdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionstaf_stationsdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(definitionstaf_stationsdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionstaf_stationsdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionstaf_stationsdir)" || exit $$?; \
+	done
+
+uninstall-dist_definitionstaf_stationsDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_definitionstaf_stations_DATA)'; test -n "$(definitionstaf_stationsdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(definitionstaf_stationsdir)'; $(am__uninstall_files_from_dir)
 install-dist_definitionstideDATA: $(dist_definitionstide_DATA)
 	@$(NORMAL_INSTALL)
 	@list='$(dist_definitionstide_DATA)'; test -n "$(definitionstidedir)" || list=; \
@@ -11800,7 +15958,7 @@ check-am: all-am
 check: check-am
 all-am: Makefile $(DATA)
 installdirs:
-	for dir in "$(DESTDIR)$(definitionsdir)" "$(DESTDIR)$(definitionsbudgdir)" "$(DESTDIR)$(definitionsbufrdir)" "$(DESTDIR)$(definitionsbufr_tablesdir)" "$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0dir)" "$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0_codetablesdir)" "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0dir)" "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_6dir)" "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)" "$(DESTDIR)$(definitionsbufr_tabl [...]
+	for dir in "$(DESTDIR)$(definitionsdir)" "$(DESTDIR)$(definitionsbudgdir)" "$(DESTDIR)$(definitionsbufrdir)" "$(DESTDIR)$(definitionsbufr_tablesdir)" "$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0dir)" "$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0_codetablesdir)" "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0dir)" "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_6dir)" "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)" "$(DESTDIR)$(definitionsbufr_tabl [...]
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: install-am
@@ -11862,6 +16020,16 @@ install-data-am: install-dist_definitionsDATA \
 	install-dist_definitionsbufr_tables_0_local_1_98_0DATA \
 	install-dist_definitionsbufr_tables_0_local_1_98_0_6DATA \
 	install-dist_definitionsbufr_tables_0_local_1_98_0_codetablesDATA \
+	install-dist_definitionsbufr_tables_0_local_2_98_0DATA \
+	install-dist_definitionsbufr_tables_0_local_2_98_0_codetablesDATA \
+	install-dist_definitionsbufr_tables_0_local_3_98_0DATA \
+	install-dist_definitionsbufr_tables_0_local_3_98_0_codetablesDATA \
+	install-dist_definitionsbufr_tables_0_wmo_10DATA \
+	install-dist_definitionsbufr_tables_0_wmo_10_codetablesDATA \
+	install-dist_definitionsbufr_tables_0_wmo_11DATA \
+	install-dist_definitionsbufr_tables_0_wmo_11_codetablesDATA \
+	install-dist_definitionsbufr_tables_0_wmo_12DATA \
+	install-dist_definitionsbufr_tables_0_wmo_12_codetablesDATA \
 	install-dist_definitionsbufr_tables_0_wmo_13DATA \
 	install-dist_definitionsbufr_tables_0_wmo_13_codetablesDATA \
 	install-dist_definitionsbufr_tables_0_wmo_14DATA \
@@ -11884,11 +16052,23 @@ install-data-am: install-dist_definitionsDATA \
 	install-dist_definitionsbufr_tables_0_wmo_22_codetablesDATA \
 	install-dist_definitionsbufr_tables_0_wmo_23DATA \
 	install-dist_definitionsbufr_tables_0_wmo_23_codetablesDATA \
+	install-dist_definitionsbufr_tables_0_wmo_24DATA \
+	install-dist_definitionsbufr_tables_0_wmo_24_codetablesDATA \
+	install-dist_definitionsbufr_tables_0_wmo_25DATA \
+	install-dist_definitionsbufr_tables_0_wmo_25_codetablesDATA \
 	install-dist_definitionsbufr_tables_0_wmo_6DATA \
 	install-dist_definitionsbufr_tables_0_wmo_6_codetablesDATA \
+	install-dist_definitionsbufr_tables_0_wmo_7DATA \
+	install-dist_definitionsbufr_tables_0_wmo_7_codetablesDATA \
+	install-dist_definitionsbufr_tables_0_wmo_8DATA \
+	install-dist_definitionsbufr_tables_0_wmo_8_codetablesDATA \
+	install-dist_definitionsbufr_tables_0_wmo_9DATA \
+	install-dist_definitionsbufr_tables_0_wmo_9_codetablesDATA \
 	install-dist_definitionsbufr_tables_3_local_1_98_0DATA \
 	install-dist_definitionsbufr_tables_3_wmo_11DATA \
 	install-dist_definitionsbufr_tables_3_wmo_6DATA \
+	install-dist_definitionsbufr_templatesDATA \
+	install-dist_definitionsbufr_templates_localDATA \
 	install-dist_definitionscdfDATA \
 	install-dist_definitionscommonDATA \
 	install-dist_definitionsgrib1DATA \
@@ -11896,6 +16076,7 @@ install-data-am: install-dist_definitionsDATA \
 	install-dist_definitionsgrib1_localConcepts_cnmcDATA \
 	install-dist_definitionsgrib1_localConcepts_ecmfDATA \
 	install-dist_definitionsgrib1_localConcepts_edzwDATA \
+	install-dist_definitionsgrib1_localConcepts_efklDATA \
 	install-dist_definitionsgrib1_localConcepts_eidbDATA \
 	install-dist_definitionsgrib1_localConcepts_ekmiDATA \
 	install-dist_definitionsgrib1_localConcepts_enmiDATA \
@@ -11912,12 +16093,14 @@ install-data-am: install-dist_definitionsDATA \
 	install-dist_definitionsgrib2_localConcepts_cnmcDATA \
 	install-dist_definitionsgrib2_localConcepts_ecmfDATA \
 	install-dist_definitionsgrib2_localConcepts_edzwDATA \
+	install-dist_definitionsgrib2_localConcepts_efklDATA \
 	install-dist_definitionsgrib2_localConcepts_egrrDATA \
 	install-dist_definitionsgrib2_localConcepts_ekmiDATA \
 	install-dist_definitionsgrib2_localConcepts_eswiDATA \
 	install-dist_definitionsgrib2_localConcepts_kwbcDATA \
 	install-dist_definitionsgrib2_localConcepts_lfpw1DATA \
 	install-dist_definitionsgrib2_localConcepts_lfpwDATA \
+	install-dist_definitionsgrib2_localConcepts_lsswDATA \
 	install-dist_definitionsgrib2_localDATA \
 	install-dist_definitionsgrib2_local_1098DATA \
 	install-dist_definitionsgrib2_tablesDATA \
@@ -11927,6 +16110,8 @@ install-data-am: install-dist_definitionsDATA \
 	install-dist_definitionsgrib2_tables_12DATA \
 	install-dist_definitionsgrib2_tables_13DATA \
 	install-dist_definitionsgrib2_tables_14DATA \
+	install-dist_definitionsgrib2_tables_15DATA \
+	install-dist_definitionsgrib2_tables_16DATA \
 	install-dist_definitionsgrib2_tables_1DATA \
 	install-dist_definitionsgrib2_tables_2DATA \
 	install-dist_definitionsgrib2_tables_3DATA \
@@ -11942,6 +16127,10 @@ install-data-am: install-dist_definitionsDATA \
 	install-dist_definitionshdf5DATA \
 	install-dist_definitionsmarsDATA \
 	install-dist_definitionsmars_eswiDATA \
+	install-dist_definitionsmetarDATA \
+	install-dist_definitionsmetar_stationsDATA \
+	install-dist_definitionstafDATA \
+	install-dist_definitionstaf_stationsDATA \
 	install-dist_definitionstideDATA \
 	install-dist_definitionswrapDATA
 
@@ -11996,6 +16185,16 @@ uninstall-am: uninstall-dist_definitionsDATA \
 	uninstall-dist_definitionsbufr_tables_0_local_1_98_0DATA \
 	uninstall-dist_definitionsbufr_tables_0_local_1_98_0_6DATA \
 	uninstall-dist_definitionsbufr_tables_0_local_1_98_0_codetablesDATA \
+	uninstall-dist_definitionsbufr_tables_0_local_2_98_0DATA \
+	uninstall-dist_definitionsbufr_tables_0_local_2_98_0_codetablesDATA \
+	uninstall-dist_definitionsbufr_tables_0_local_3_98_0DATA \
+	uninstall-dist_definitionsbufr_tables_0_local_3_98_0_codetablesDATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_10DATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_10_codetablesDATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_11DATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_11_codetablesDATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_12DATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_12_codetablesDATA \
 	uninstall-dist_definitionsbufr_tables_0_wmo_13DATA \
 	uninstall-dist_definitionsbufr_tables_0_wmo_13_codetablesDATA \
 	uninstall-dist_definitionsbufr_tables_0_wmo_14DATA \
@@ -12018,11 +16217,23 @@ uninstall-am: uninstall-dist_definitionsDATA \
 	uninstall-dist_definitionsbufr_tables_0_wmo_22_codetablesDATA \
 	uninstall-dist_definitionsbufr_tables_0_wmo_23DATA \
 	uninstall-dist_definitionsbufr_tables_0_wmo_23_codetablesDATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_24DATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_24_codetablesDATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_25DATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_25_codetablesDATA \
 	uninstall-dist_definitionsbufr_tables_0_wmo_6DATA \
 	uninstall-dist_definitionsbufr_tables_0_wmo_6_codetablesDATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_7DATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_7_codetablesDATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_8DATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_8_codetablesDATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_9DATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_9_codetablesDATA \
 	uninstall-dist_definitionsbufr_tables_3_local_1_98_0DATA \
 	uninstall-dist_definitionsbufr_tables_3_wmo_11DATA \
 	uninstall-dist_definitionsbufr_tables_3_wmo_6DATA \
+	uninstall-dist_definitionsbufr_templatesDATA \
+	uninstall-dist_definitionsbufr_templates_localDATA \
 	uninstall-dist_definitionscdfDATA \
 	uninstall-dist_definitionscommonDATA \
 	uninstall-dist_definitionsgrib1DATA \
@@ -12030,6 +16241,7 @@ uninstall-am: uninstall-dist_definitionsDATA \
 	uninstall-dist_definitionsgrib1_localConcepts_cnmcDATA \
 	uninstall-dist_definitionsgrib1_localConcepts_ecmfDATA \
 	uninstall-dist_definitionsgrib1_localConcepts_edzwDATA \
+	uninstall-dist_definitionsgrib1_localConcepts_efklDATA \
 	uninstall-dist_definitionsgrib1_localConcepts_eidbDATA \
 	uninstall-dist_definitionsgrib1_localConcepts_ekmiDATA \
 	uninstall-dist_definitionsgrib1_localConcepts_enmiDATA \
@@ -12046,12 +16258,14 @@ uninstall-am: uninstall-dist_definitionsDATA \
 	uninstall-dist_definitionsgrib2_localConcepts_cnmcDATA \
 	uninstall-dist_definitionsgrib2_localConcepts_ecmfDATA \
 	uninstall-dist_definitionsgrib2_localConcepts_edzwDATA \
+	uninstall-dist_definitionsgrib2_localConcepts_efklDATA \
 	uninstall-dist_definitionsgrib2_localConcepts_egrrDATA \
 	uninstall-dist_definitionsgrib2_localConcepts_ekmiDATA \
 	uninstall-dist_definitionsgrib2_localConcepts_eswiDATA \
 	uninstall-dist_definitionsgrib2_localConcepts_kwbcDATA \
 	uninstall-dist_definitionsgrib2_localConcepts_lfpw1DATA \
 	uninstall-dist_definitionsgrib2_localConcepts_lfpwDATA \
+	uninstall-dist_definitionsgrib2_localConcepts_lsswDATA \
 	uninstall-dist_definitionsgrib2_localDATA \
 	uninstall-dist_definitionsgrib2_local_1098DATA \
 	uninstall-dist_definitionsgrib2_tablesDATA \
@@ -12061,6 +16275,8 @@ uninstall-am: uninstall-dist_definitionsDATA \
 	uninstall-dist_definitionsgrib2_tables_12DATA \
 	uninstall-dist_definitionsgrib2_tables_13DATA \
 	uninstall-dist_definitionsgrib2_tables_14DATA \
+	uninstall-dist_definitionsgrib2_tables_15DATA \
+	uninstall-dist_definitionsgrib2_tables_16DATA \
 	uninstall-dist_definitionsgrib2_tables_1DATA \
 	uninstall-dist_definitionsgrib2_tables_2DATA \
 	uninstall-dist_definitionsgrib2_tables_3DATA \
@@ -12076,6 +16292,10 @@ uninstall-am: uninstall-dist_definitionsDATA \
 	uninstall-dist_definitionshdf5DATA \
 	uninstall-dist_definitionsmarsDATA \
 	uninstall-dist_definitionsmars_eswiDATA \
+	uninstall-dist_definitionsmetarDATA \
+	uninstall-dist_definitionsmetar_stationsDATA \
+	uninstall-dist_definitionstafDATA \
+	uninstall-dist_definitionstaf_stationsDATA \
 	uninstall-dist_definitionstideDATA \
 	uninstall-dist_definitionswrapDATA
 
@@ -12093,6 +16313,16 @@ uninstall-am: uninstall-dist_definitionsDATA \
 	install-dist_definitionsbufr_tables_0_local_1_98_0DATA \
 	install-dist_definitionsbufr_tables_0_local_1_98_0_6DATA \
 	install-dist_definitionsbufr_tables_0_local_1_98_0_codetablesDATA \
+	install-dist_definitionsbufr_tables_0_local_2_98_0DATA \
+	install-dist_definitionsbufr_tables_0_local_2_98_0_codetablesDATA \
+	install-dist_definitionsbufr_tables_0_local_3_98_0DATA \
+	install-dist_definitionsbufr_tables_0_local_3_98_0_codetablesDATA \
+	install-dist_definitionsbufr_tables_0_wmo_10DATA \
+	install-dist_definitionsbufr_tables_0_wmo_10_codetablesDATA \
+	install-dist_definitionsbufr_tables_0_wmo_11DATA \
+	install-dist_definitionsbufr_tables_0_wmo_11_codetablesDATA \
+	install-dist_definitionsbufr_tables_0_wmo_12DATA \
+	install-dist_definitionsbufr_tables_0_wmo_12_codetablesDATA \
 	install-dist_definitionsbufr_tables_0_wmo_13DATA \
 	install-dist_definitionsbufr_tables_0_wmo_13_codetablesDATA \
 	install-dist_definitionsbufr_tables_0_wmo_14DATA \
@@ -12115,11 +16345,23 @@ uninstall-am: uninstall-dist_definitionsDATA \
 	install-dist_definitionsbufr_tables_0_wmo_22_codetablesDATA \
 	install-dist_definitionsbufr_tables_0_wmo_23DATA \
 	install-dist_definitionsbufr_tables_0_wmo_23_codetablesDATA \
+	install-dist_definitionsbufr_tables_0_wmo_24DATA \
+	install-dist_definitionsbufr_tables_0_wmo_24_codetablesDATA \
+	install-dist_definitionsbufr_tables_0_wmo_25DATA \
+	install-dist_definitionsbufr_tables_0_wmo_25_codetablesDATA \
 	install-dist_definitionsbufr_tables_0_wmo_6DATA \
 	install-dist_definitionsbufr_tables_0_wmo_6_codetablesDATA \
+	install-dist_definitionsbufr_tables_0_wmo_7DATA \
+	install-dist_definitionsbufr_tables_0_wmo_7_codetablesDATA \
+	install-dist_definitionsbufr_tables_0_wmo_8DATA \
+	install-dist_definitionsbufr_tables_0_wmo_8_codetablesDATA \
+	install-dist_definitionsbufr_tables_0_wmo_9DATA \
+	install-dist_definitionsbufr_tables_0_wmo_9_codetablesDATA \
 	install-dist_definitionsbufr_tables_3_local_1_98_0DATA \
 	install-dist_definitionsbufr_tables_3_wmo_11DATA \
 	install-dist_definitionsbufr_tables_3_wmo_6DATA \
+	install-dist_definitionsbufr_templatesDATA \
+	install-dist_definitionsbufr_templates_localDATA \
 	install-dist_definitionscdfDATA \
 	install-dist_definitionscommonDATA \
 	install-dist_definitionsgrib1DATA \
@@ -12127,6 +16369,7 @@ uninstall-am: uninstall-dist_definitionsDATA \
 	install-dist_definitionsgrib1_localConcepts_cnmcDATA \
 	install-dist_definitionsgrib1_localConcepts_ecmfDATA \
 	install-dist_definitionsgrib1_localConcepts_edzwDATA \
+	install-dist_definitionsgrib1_localConcepts_efklDATA \
 	install-dist_definitionsgrib1_localConcepts_eidbDATA \
 	install-dist_definitionsgrib1_localConcepts_ekmiDATA \
 	install-dist_definitionsgrib1_localConcepts_enmiDATA \
@@ -12143,12 +16386,14 @@ uninstall-am: uninstall-dist_definitionsDATA \
 	install-dist_definitionsgrib2_localConcepts_cnmcDATA \
 	install-dist_definitionsgrib2_localConcepts_ecmfDATA \
 	install-dist_definitionsgrib2_localConcepts_edzwDATA \
+	install-dist_definitionsgrib2_localConcepts_efklDATA \
 	install-dist_definitionsgrib2_localConcepts_egrrDATA \
 	install-dist_definitionsgrib2_localConcepts_ekmiDATA \
 	install-dist_definitionsgrib2_localConcepts_eswiDATA \
 	install-dist_definitionsgrib2_localConcepts_kwbcDATA \
 	install-dist_definitionsgrib2_localConcepts_lfpw1DATA \
 	install-dist_definitionsgrib2_localConcepts_lfpwDATA \
+	install-dist_definitionsgrib2_localConcepts_lsswDATA \
 	install-dist_definitionsgrib2_localDATA \
 	install-dist_definitionsgrib2_local_1098DATA \
 	install-dist_definitionsgrib2_tablesDATA \
@@ -12158,6 +16403,8 @@ uninstall-am: uninstall-dist_definitionsDATA \
 	install-dist_definitionsgrib2_tables_12DATA \
 	install-dist_definitionsgrib2_tables_13DATA \
 	install-dist_definitionsgrib2_tables_14DATA \
+	install-dist_definitionsgrib2_tables_15DATA \
+	install-dist_definitionsgrib2_tables_16DATA \
 	install-dist_definitionsgrib2_tables_1DATA \
 	install-dist_definitionsgrib2_tables_2DATA \
 	install-dist_definitionsgrib2_tables_3DATA \
@@ -12173,6 +16420,10 @@ uninstall-am: uninstall-dist_definitionsDATA \
 	install-dist_definitionshdf5DATA \
 	install-dist_definitionsmarsDATA \
 	install-dist_definitionsmars_eswiDATA \
+	install-dist_definitionsmetarDATA \
+	install-dist_definitionsmetar_stationsDATA \
+	install-dist_definitionstafDATA \
+	install-dist_definitionstaf_stationsDATA \
 	install-dist_definitionstideDATA \
 	install-dist_definitionswrapDATA install-dvi install-dvi-am \
 	install-exec install-exec-am install-html install-html-am \
@@ -12190,6 +16441,16 @@ uninstall-am: uninstall-dist_definitionsDATA \
 	uninstall-dist_definitionsbufr_tables_0_local_1_98_0DATA \
 	uninstall-dist_definitionsbufr_tables_0_local_1_98_0_6DATA \
 	uninstall-dist_definitionsbufr_tables_0_local_1_98_0_codetablesDATA \
+	uninstall-dist_definitionsbufr_tables_0_local_2_98_0DATA \
+	uninstall-dist_definitionsbufr_tables_0_local_2_98_0_codetablesDATA \
+	uninstall-dist_definitionsbufr_tables_0_local_3_98_0DATA \
+	uninstall-dist_definitionsbufr_tables_0_local_3_98_0_codetablesDATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_10DATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_10_codetablesDATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_11DATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_11_codetablesDATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_12DATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_12_codetablesDATA \
 	uninstall-dist_definitionsbufr_tables_0_wmo_13DATA \
 	uninstall-dist_definitionsbufr_tables_0_wmo_13_codetablesDATA \
 	uninstall-dist_definitionsbufr_tables_0_wmo_14DATA \
@@ -12212,11 +16473,23 @@ uninstall-am: uninstall-dist_definitionsDATA \
 	uninstall-dist_definitionsbufr_tables_0_wmo_22_codetablesDATA \
 	uninstall-dist_definitionsbufr_tables_0_wmo_23DATA \
 	uninstall-dist_definitionsbufr_tables_0_wmo_23_codetablesDATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_24DATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_24_codetablesDATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_25DATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_25_codetablesDATA \
 	uninstall-dist_definitionsbufr_tables_0_wmo_6DATA \
 	uninstall-dist_definitionsbufr_tables_0_wmo_6_codetablesDATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_7DATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_7_codetablesDATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_8DATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_8_codetablesDATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_9DATA \
+	uninstall-dist_definitionsbufr_tables_0_wmo_9_codetablesDATA \
 	uninstall-dist_definitionsbufr_tables_3_local_1_98_0DATA \
 	uninstall-dist_definitionsbufr_tables_3_wmo_11DATA \
 	uninstall-dist_definitionsbufr_tables_3_wmo_6DATA \
+	uninstall-dist_definitionsbufr_templatesDATA \
+	uninstall-dist_definitionsbufr_templates_localDATA \
 	uninstall-dist_definitionscdfDATA \
 	uninstall-dist_definitionscommonDATA \
 	uninstall-dist_definitionsgrib1DATA \
@@ -12224,6 +16497,7 @@ uninstall-am: uninstall-dist_definitionsDATA \
 	uninstall-dist_definitionsgrib1_localConcepts_cnmcDATA \
 	uninstall-dist_definitionsgrib1_localConcepts_ecmfDATA \
 	uninstall-dist_definitionsgrib1_localConcepts_edzwDATA \
+	uninstall-dist_definitionsgrib1_localConcepts_efklDATA \
 	uninstall-dist_definitionsgrib1_localConcepts_eidbDATA \
 	uninstall-dist_definitionsgrib1_localConcepts_ekmiDATA \
 	uninstall-dist_definitionsgrib1_localConcepts_enmiDATA \
@@ -12240,12 +16514,14 @@ uninstall-am: uninstall-dist_definitionsDATA \
 	uninstall-dist_definitionsgrib2_localConcepts_cnmcDATA \
 	uninstall-dist_definitionsgrib2_localConcepts_ecmfDATA \
 	uninstall-dist_definitionsgrib2_localConcepts_edzwDATA \
+	uninstall-dist_definitionsgrib2_localConcepts_efklDATA \
 	uninstall-dist_definitionsgrib2_localConcepts_egrrDATA \
 	uninstall-dist_definitionsgrib2_localConcepts_ekmiDATA \
 	uninstall-dist_definitionsgrib2_localConcepts_eswiDATA \
 	uninstall-dist_definitionsgrib2_localConcepts_kwbcDATA \
 	uninstall-dist_definitionsgrib2_localConcepts_lfpw1DATA \
 	uninstall-dist_definitionsgrib2_localConcepts_lfpwDATA \
+	uninstall-dist_definitionsgrib2_localConcepts_lsswDATA \
 	uninstall-dist_definitionsgrib2_localDATA \
 	uninstall-dist_definitionsgrib2_local_1098DATA \
 	uninstall-dist_definitionsgrib2_tablesDATA \
@@ -12255,6 +16531,8 @@ uninstall-am: uninstall-dist_definitionsDATA \
 	uninstall-dist_definitionsgrib2_tables_12DATA \
 	uninstall-dist_definitionsgrib2_tables_13DATA \
 	uninstall-dist_definitionsgrib2_tables_14DATA \
+	uninstall-dist_definitionsgrib2_tables_15DATA \
+	uninstall-dist_definitionsgrib2_tables_16DATA \
 	uninstall-dist_definitionsgrib2_tables_1DATA \
 	uninstall-dist_definitionsgrib2_tables_2DATA \
 	uninstall-dist_definitionsgrib2_tables_3DATA \
@@ -12270,6 +16548,10 @@ uninstall-am: uninstall-dist_definitionsDATA \
 	uninstall-dist_definitionshdf5DATA \
 	uninstall-dist_definitionsmarsDATA \
 	uninstall-dist_definitionsmars_eswiDATA \
+	uninstall-dist_definitionsmetarDATA \
+	uninstall-dist_definitionsmetar_stationsDATA \
+	uninstall-dist_definitionstafDATA \
+	uninstall-dist_definitionstaf_stationsDATA \
 	uninstall-dist_definitionstideDATA \
 	uninstall-dist_definitionswrapDATA
 
diff --git a/definitions/boot.def b/definitions/boot.def
index f607cc8..8829089 100644
--- a/definitions/boot.def
+++ b/definitions/boot.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -8,9 +8,11 @@
 #
 include "parameters_version.def";
 constant definitionFilesVersion="2.0.0.0" : hidden;
-constant internalVersion=22 : hidden;
+constant internalVersion=30 : hidden;
+meta checkInternalVersion check_internal_version(internalVersion) : hidden;
+
+UseEcmfConventions = getenv("ECCODES_USE_ECMF_CONVENTIONS","1");
 
-constant UseEcmfConventions = 1: hidden;
 constant defaultTypeOfLevel="unknown" : hidden;
 
 # GRIBEX special boustrophedonic mode. See GRIB-472
@@ -57,6 +59,8 @@ transient unitsBias=0 : hidden;
 constant globalDomain = "g";
 transient timeRangeIndicatorFromStepRange=-1 : hidden;
 
+# GRIB-802
+transient override_large_constant_fields = 0 : hidden;
 
 meta libraryVersion library_version() : hidden;
 
@@ -98,7 +102,7 @@ if(kindOfProduct == 17632522 ){
 if(kindOfProduct == `META` ){
  template      METAR "metar/boot.def" ;
  constant METARstr="METAR";
- alias ls.identifier=METARstr;
+ alias identifier=METARstr;
 }
 
 if(kindOfProduct == `TAF ` ){
diff --git a/definitions/budg/boot.def b/definitions/budg/boot.def
index 1d6e48d..ecd5ba0 100644
--- a/definitions/budg/boot.def
+++ b/definitions/budg/boot.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/budg/mars_labeling.def b/definitions/budg/mars_labeling.def
index 7821c65..cb8fbae 100644
--- a/definitions/budg/mars_labeling.def
+++ b/definitions/budg/mars_labeling.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/budg/section.1.def b/definitions/budg/section.1.def
index 73e90e1..dcd03b2 100644
--- a/definitions/budg/section.1.def
+++ b/definitions/budg/section.1.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/budg/section.4.def b/definitions/budg/section.4.def
index d3cd105..3260d2e 100644
--- a/definitions/budg/section.4.def
+++ b/definitions/budg/section.4.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/bufr/boot.def b/definitions/bufr/boot.def
index 3cc2d9b..e387179 100644
--- a/definitions/bufr/boot.def
+++ b/definitions/bufr/boot.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -10,5 +10,21 @@
 lookup[1] ed       (7,editionNumber);
 transient missingValue=999999;
 
+#negative value=not used
+transient inputDelayedDescriptorReplicationFactor={-1};
+#negative value=not used
+transient inputExtendedDelayedDescriptorReplicationFactor={-1};
+#negative value=not used
+transient inputShortDelayedDescriptorReplicationFactor={-1};
+
+transient extractSubset=-1;
+transient extractSubset=-1;
+transient extractSubset=-1;
+transient extractSubsetIntervalStart=-1;
+transient extractSubsetIntervalEnd=-1;
+
+
+meta doExtractSubsets bufr_extract_subsets(numericValues,pack,numberOfSubsets,extractSubset,extractSubsetIntervalStart,extractSubsetIntervalEnd);
+
 template boot_edition "bufr/boot_edition_[ed:l].def";
 
diff --git a/definitions/bufr/boot_edition_1.def b/definitions/bufr/boot_edition_1.def
index f96b065..3e5d55b 100644
--- a/definitions/bufr/boot_edition_1.def
+++ b/definitions/bufr/boot_edition_1.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -12,7 +12,8 @@ alias identifier=identifier;
 
 unsigned[3] section1Length;
 
-unsigned[1] editionNumber = 2;
+unsigned[1] edition = 2;
+alias editionNumber=edition;
 
 template    section_1 "bufr/section.1.1.def"   ;
 
diff --git a/definitions/bufr/boot_edition_2.def b/definitions/bufr/boot_edition_2.def
index 710e7db..c8d14bf 100644
--- a/definitions/bufr/boot_edition_2.def
+++ b/definitions/bufr/boot_edition_2.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -13,7 +13,8 @@ alias identifier=identifier;
 
 unsigned[3]   totalLength ;
 
-unsigned[1] editionNumber = 2;
+unsigned[1] edition = 2;
+alias editionNumber=edition;
 
 template    section_1 "bufr/section.1.2.def"   ;
 
diff --git a/definitions/bufr/boot_edition_3.def b/definitions/bufr/boot_edition_3.def
index ffb3e7a..d9005fc 100644
--- a/definitions/bufr/boot_edition_3.def
+++ b/definitions/bufr/boot_edition_3.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -12,7 +12,8 @@ alias identifier=identifier;
 
 unsigned[3]   totalLength ;
 
-unsigned[1] editionNumber = 2;
+unsigned[1] edition = 2;
+alias editionNumber=edition;
 
 template    section_1 "bufr/section.1.3.def"   ;
 
diff --git a/definitions/bufr/boot_edition_4.def b/definitions/bufr/boot_edition_4.def
index 5aa6a3f..da577b4 100644
--- a/definitions/bufr/boot_edition_4.def
+++ b/definitions/bufr/boot_edition_4.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -10,9 +10,10 @@
 ascii[4] identifier  = "BUFR" : read_only,hidden;
 alias identifier=identifier;
 
-unsigned[3]   totalLength ;
+section_length[3]   totalLength ;
 
-unsigned[1] editionNumber = 4;
+unsigned[1] edition = 4;
+alias editionNumber=edition;
 
 template    section_1 "bufr/section.1.4.def"   ;
 
diff --git a/definitions/bufr/dataKeys.def b/definitions/bufr/dataKeys.def
new file mode 100644
index 0000000..8369c69
--- /dev/null
+++ b/definitions/bufr/dataKeys.def
@@ -0,0 +1,2 @@
+# data keys are virtual!
+label "dataKeys";
diff --git a/definitions/bufr/old_section.1.def b/definitions/bufr/old_section.1.def
index 19223cf..ba9a9c6 100644
--- a/definitions/bufr/old_section.1.def
+++ b/definitions/bufr/old_section.1.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/bufr/rdb_key.def b/definitions/bufr/rdb_key.def
index fad7df2..93d9929 100644
--- a/definitions/bufr/rdb_key.def
+++ b/definitions/bufr/rdb_key.def
@@ -6,16 +6,16 @@ alias ls.rdbSubtype=rdbSubtype;
 
 byte[13]      keyData : hidden; 
 
-meta localYear   bits(keyData,0,12) : long_type ;
-meta localMonth  bits(keyData,12,4) : long_type;
-meta localDay    bits(keyData,16,6) : long_type;
-meta localHour   bits(keyData,22,5) : long_type;
-meta localMinute bits(keyData,27,6) : long_type;
-meta localSecond bits(keyData,33,6) : long_type;
-meta spare  bits(keyData,39,1); # 40 bits = 10 bytes
+meta localYear   bits(keyData,0,12) : long_type,no_copy ;
+meta localMonth  bits(keyData,12,4) : long_type,no_copy;
+meta localDay    bits(keyData,16,6) : long_type,no_copy;
+meta localHour   bits(keyData,22,5) : long_type,no_copy;
+meta localMinute bits(keyData,27,6) : long_type,no_copy;
+meta localSecond bits(keyData,33,6) : long_type,no_copy;
+meta spare  bits(keyData,39,1) : no_copy; # 40 bits = 10 bytes
 
-meta ls.typicalDate sprintf("%.4d%.2d%.2d",localYear,localMonth,localDay) : dump;
-meta ls.typicalTime sprintf("%.2d%.2d%.2d",localHour,localMinute,localSecond) :dump;
+meta ls.typicalDate sprintf("%.4d%.2d%.2d",localYear,localMonth,localDay) : dump,no_copy;
+meta ls.typicalTime sprintf("%.2d%.2d%.2d",localHour,localMinute,localSecond) :dump,no_copy;
 
 # isSatellite and other stuff moved to section 3
 ascii[8]    keyMore : hidden; 
@@ -28,33 +28,33 @@ alias rdb.messageLength=messageLength;
 byte[3] rdbtime;
 alias ls.rdbtimeYear = localYear;
 alias ls.rdbtimeMonth = localMonth;
-meta rdbtimeDay     bits(rdbtime,0,6) : dump,long_type;
-meta rdbtimeHour    bits(rdbtime,6,5) : dump,long_type;
-meta rdbtimeMinute  bits(rdbtime,11,6) : dump,long_type;
-meta rdbtimeSecond  bits(rdbtime,17,6) : dump,long_type;
+meta rdbtimeDay     bits(rdbtime,0,6) : dump,long_type,no_copy;
+meta rdbtimeHour    bits(rdbtime,6,5) : dump,long_type,no_copy;
+meta rdbtimeMinute  bits(rdbtime,11,6) : dump,long_type,no_copy;
+meta rdbtimeSecond  bits(rdbtime,17,6) : dump,long_type,no_copy;
 
 byte[3] rectime;
-meta rectimeDay     bits(rectime,0,6) : dump,long_type;
-meta rectimeHour    bits(rectime,6,5) : dump,long_type;
-meta rectimeMinute  bits(rectime,11,6) : dump,long_type;
-meta rectimeSecond  bits(rectime,17,6) : dump,long_type;
+meta rectimeDay     bits(rectime,0,6) : dump,long_type,no_copy;
+meta rectimeHour    bits(rectime,6,5) : dump,long_type,no_copy;
+meta rectimeMinute  bits(rectime,11,6) : dump,long_type,no_copy;
+meta rectimeSecond  bits(rectime,17,6) : dump,long_type,no_copy;
 
 byte[1] corr1Data;
-meta correction1     bits(corr1Data,0,6) : dump,long_type;
-meta correction1Part bits(corr1Data,6,1) : dump,long_type;
+meta correction1     bits(corr1Data,0,6) : dump,long_type,no_copy;
+meta correction1Part bits(corr1Data,6,1) : dump,long_type,no_copy;
 
 byte[1] corr2Data;
-meta correction2     bits(corr2Data,0,6) : dump,long_type;
-meta correction2Part bits(corr2Data,6,1) : dump,long_type;
+meta correction2     bits(corr2Data,0,6) : dump,long_type,no_copy;
+meta correction2Part bits(corr2Data,6,1) : dump,long_type,no_copy;
 
 byte[1] corr3Data;
-meta correction3     bits(corr3Data,0,6) : dump,long_type;
-meta correction3Part bits(corr3Data,6,1) : dump,long_type;
+meta correction3     bits(corr3Data,0,6) : dump,long_type,no_copy;
+meta correction3Part bits(corr3Data,6,1) : dump,long_type,no_copy;
 
 byte[1] corr4Data;
-meta correction4     bits(corr4Data,0,6) : dump,long_type;
-meta correction4Part bits(corr4Data,6,1) : dump,long_type;
+meta correction4     bits(corr4Data,0,6) : dump,long_type,no_copy;
+meta correction4Part bits(corr4Data,6,1) : dump,long_type,no_copy;
 
 unsigned[1] qualityControl : dump,long_type;
 alias qualityControl=qualityControl;
-unsigned[3] spare;
+unsigned[3] spare1;
diff --git a/definitions/bufr/section.0.def b/definitions/bufr/section.0.def
index c826e71..f47c8e9 100644
--- a/definitions/bufr/section.0.def
+++ b/definitions/bufr/section.0.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/bufr/section.1.1.def b/definitions/bufr/section.1.1.def
index 0a8680e..d05c5a0 100644
--- a/definitions/bufr/section.1.1.def
+++ b/definitions/bufr/section.1.1.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/bufr/section.1.2.def b/definitions/bufr/section.1.2.def
index ad7c077..3777a38 100644
--- a/definitions/bufr/section.1.2.def
+++ b/definitions/bufr/section.1.2.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/bufr/section.1.3.def b/definitions/bufr/section.1.3.def
index 841fee4..b4ab000 100644
--- a/definitions/bufr/section.1.3.def
+++ b/definitions/bufr/section.1.3.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -25,13 +25,18 @@ unsigned[1] dataSubCategory : dump;
 unsigned[1] masterTablesVersionNumber : dump;
 unsigned[1] localTablesVersionNumber : dump;
 
+transient typicalCentury=21;
+
 unsigned[1] typicalYearOfCentury : dump;
+transient typicalYear = (typicalCentury - 1 )  *100  + typicalYearOfCentury  : no_copy;
+
 unsigned[1] typicalMonth : dump;
 unsigned[1] typicalDay : dump;
 unsigned[1] typicalHour : dump;
 unsigned[1] typicalMinute : dump;
 unsigned[1] spare; # ???
 
+alias ls.centre=bufrHeaderCentre;
 alias ls.masterTablesVersionNumber=masterTablesVersionNumber;
 alias ls.localTablesVersionNumber=localTablesVersionNumber;
 
diff --git a/definitions/bufr/section.1.4.def b/definitions/bufr/section.1.4.def
index 4a5e6cd..ff74402 100644
--- a/definitions/bufr/section.1.4.def
+++ b/definitions/bufr/section.1.4.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -22,12 +22,15 @@ unsigned[1]  updateSequenceNumber;
 flags[1]     section1Flags 'bufr/section1_flags.table' = 128 : hidden ; # = section 2 present
 
 unsigned[1] dataCategory : dump;
-unsigned[1] internationalDataSubCategory : dump;
+unsigned[1] internationalDataSubCategory = 255 : dump;
 unsigned[1] dataSubCategory : dump;
 unsigned[1] masterTablesVersionNumber : dump;
 unsigned[1] localTablesVersionNumber : dump;
 
 unsigned[2] typicalYear : dump;
+transient typicalYearOfCentury = typicalYear % 100;
+transient typicalCentury =  ( typicalYear - typicalYearOfCentury ) / 100 + 1 ;
+
 unsigned[1] typicalMonth : dump;
 unsigned[1] typicalDay : dump;
 unsigned[1] typicalHour : dump;
diff --git a/definitions/bufr/section.2.def b/definitions/bufr/section.2.def
index 7e0416d..52909db 100644
--- a/definitions/bufr/section.2.def
+++ b/definitions/bufr/section.2.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -8,9 +8,9 @@
 #
 
 section_length[3]       section2Length ;
-unsigned[1]     reserved = 0;
+unsigned[1]     reservedSection2 = 0;
 if(bufrHeaderCentre == 98) {
-  if (section2Length==52) {
+  if (section2Length==52 or new() ) {
 			template rdb_key "bufr/rdb_key.def";
 	}
 	if (section2Length==28) {
diff --git a/definitions/bufr/section.3.def b/definitions/bufr/section.3.def
index c119db6..06996e5 100644
--- a/definitions/bufr/section.3.def
+++ b/definitions/bufr/section.3.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -12,27 +12,33 @@ constant tablesMasterDir="bufr/tables/[masterTableNumber]/wmo/[masterTablesVersi
 constant tablesLocalDir="bufr/tables/[masterTableNumber]/local/[localTablesVersionNumber]/[bufrHeaderCentre:l]/[bufrHeaderSubCentre]" : hidden;
 constant rootTablesDir="bufr/tables" : hidden;
 
+# we should implement some table version dependency
+#constant templatesMasterDir="bufr/templates/[masterTableNumber]/[masterTablesVersionNumber]";
+#constant templatesLocalDir="bufr/templates/local/[masterTableNumber]/[bufrHeaderCentre:l]/[localTablesVersionNumber]";
+
+constant templatesMasterDir="bufr/templates/";
+constant templatesLocalDir="bufr/templates/local";
+
 transient tableNumber=0;
-codetable[24] codeTablesMaster '[tablesMasterDir]/codetables/[tableNumber].table' : string_type,transient;
-codetable[24] codeTablesLocal '[tablesLocalDir]/codetables/[tableNumber].table' : string_type,transient;
+#codetable[4] codeTablesMaster '[tablesMasterDir]/codetables/[tableNumber].table' : string_type,transient;
+#codetable[4] codeTablesLocal '[tablesLocalDir]/codetables/[tableNumber].table' : string_type,transient;
 
-hash_array sequences (defaultSequence,"sequence.def",tablesMasterDir,tablesLocalDir): long_type;
+hash_array sequences (defaultSequence,"sequence.def",tablesMasterDir,tablesLocalDir): long_type,no_copy;
 #smart_table codeFlags ("codeFlag.def",tablesMasterDir,tablesLocalDir,...);
 
 position offsetSection3;
-section_length[3]       section3Length ;
-unsigned[1]     reserved = 0;
+section_length[3]       section3Length = 9 ;
+unsigned[1]     reservedSection3 = 0;
 unsigned[2]     numberOfSubsets : dump;
 alias ls.numberOfSubsets=numberOfSubsets;
 
 if (section2Present && bufrHeaderCentre==98 && section2Length==52) {
 
-		concept isSatelliteType(zero) {
-			1 = {rdbType = 2;  }
-			1 = {rdbType = 3;  }
-			1 = {rdbType = 8;  }
-			1 = {rdbType = 12; }
-		}
+    if ( rdbType == 2 || rdbType == 3 || rdbType == 8 || rdbType == 12 ) {
+      transient isSatelliteType=1;
+    } else {
+      transient isSatelliteType=0;
+    }
 		if (isSatelliteType || numberOfSubsets>1) {
 				constant isSatellite=1;
 		} else {
@@ -40,65 +46,64 @@ if (section2Present && bufrHeaderCentre==98 && section2Length==52) {
 		}
     alias rdb.isSatellite=isSatellite;
 		if (isSatellite) {
-        meta localLongitude1 bits(keyData,40,26,-18000000,100000) : dump;
-        meta localLatitude1 bits(keyData,72,25,-9000000,100000) : dump;
-        meta localLongitude2 bits(keyMore,0,26,-18000000,100000) : dump;
-        meta localLatitude2 bits(keyMore,32,25,-9000000,100000) : dump;
+        meta localLongitude1 bits(keyData,40,26,-18000000,100000) : dump,no_copy;
+        meta localLatitude1 bits(keyData,72,25,-9000000,100000) : dump,no_copy;
+        meta localLongitude2 bits(keyMore,0,26,-18000000,100000) : dump,no_copy;
+        meta localLatitude2 bits(keyMore,32,25,-9000000,100000) : dump,no_copy;
 
 				if (numberOfSubsets>255 || 
 						( rdbSubtype>=121 && rdbSubtype <=130 ) || 
 						rdbSubtype==31) {
-						meta ls.numberOfObservations bits(keySat,0,16) : dump,long_type;
-						meta ls.satelliteID bits(keySat,16,16) : dump,long_type;
+						meta ls.numberOfObservations bits(keySat,0,16) : dump,long_type,no_copy;
+						meta ls.satelliteID bits(keySat,16,16) : dump,long_type,no_copy;
 				} else {
-						meta ls.numberOfObservations bits(keySat,0,8) : dump,long_type;
-						meta ls.satelliteID bits(keySat,8,16) : dump,long_type;
+						meta ls.numberOfObservations bits(keySat,0,8) : dump,long_type,no_copy;
+						meta ls.satelliteID bits(keySat,8,16) : dump,long_type,no_copy;
 				}
 		} else {
-        meta ls.localLatitude bits(keyData,72,25,-9000000,100000) : dump;
-        meta ls.localLongitude bits(keyData,40,26,-18000000,100000) : dump;
-        alias ls.ident=keyMore : dump,string_type;
+        meta ls.localLatitude bits(keyData,72,25,-9000000,100000) : dump,no_copy;
+        meta ls.localLongitude bits(keyData,40,26,-18000000,100000) : dump,no_copy;
+        alias ls.ident=keyMore : dump,string_type,no_copy;
     }
 }
 
 flags[1]        section3Flags 'bufr/section3_flags.table';
-flagbit observedData(section3Flags,7) : dump;
-flagbit compressedData(section3Flags,6) : dump;
+flagbit observedData(section3Flags,7) : dump,no_copy;
+flagbit compressedData(section3Flags,6) : dump,no_copy;
 position offsetDescriptors;
-meta numberOfUnexpandedDescriptors   evaluate( (section3Length - 7) / 2 ) ;
-meta unexpandedDescriptors unexpanded_descriptors(numberOfUnexpandedDescriptors) :dump;
-
-meta elementsTable bufr_elements_table("element.table",tablesMasterDir,tablesLocalDir) : hidden; 
-
-#transient elementCode="000000";
-#elementAbbreviation=dict_search("element.table",elementCode,1,tablesMasterDir,tablesLocalDir) : string_type,hidden ;
-#elementType=dict_search("element.table",elementCode,2,tablesMasterDir,tablesLocalDir) : string_type,hidden ;
-#elementName=dict_search("element.table",elementCode,3,tablesMasterDir,tablesLocalDir) : string_type,hidden ;
-#elementUnit=dict_search("element.table",elementCode,4,tablesMasterDir,tablesLocalDir) : string_type,hidden ;
-#elementScale=dict_search("element.table",elementCode,5,tablesMasterDir,tablesLocalDir) : string_type,hidden ;
-#elementReference=dict_search("element.table",elementCode,6,tablesMasterDir,tablesLocalDir) : string_type,hidden ;
-#elementWidth=dict_search("element.table",elementCode,7,tablesMasterDir,tablesLocalDir) : string_type,hidden ;
-
-meta expandedCodes      expanded_descriptors(elementsTable,expandedCodes,0,unexpandedDescriptors,sequences); 
-#meta expandedScales     expanded_descriptors(elemetsTable,expandedCodes,1);
+
+
+transient createNewData=1;
+meta numberOfUnexpandedDescriptors   evaluate( (section3Length - 7) / 2 ) : no_copy;
+
+meta unexpandedDescriptorsEncoded raw(totalLength,section3Length,7) : hidden;
+meta unexpandedDescriptors unexpanded_descriptors(unexpandedDescriptorsEncoded,createNewData) :dump,no_copy;
+
+concept BufrTemplate (unknown,"BufrTemplate.def",templatesMasterDir,templatesLocalDir) : no_copy;
+
+meta elementsTable bufr_elements_table("element.table",tablesMasterDir,tablesLocalDir) : hidden,no_copy; 
+
+
+meta expandedCodes      expanded_descriptors(elementsTable,expandedCodes,0,unexpandedDescriptors,sequences) : no_copy; 
+alias expandedDescriptors=expandedCodes;
 #meta expandedReferences expanded_descriptors(elemetsTable,expandedCodes,2);
 #meta expandedWidths     expanded_descriptors(elemetsTable,expandedCodes,3);
 #meta expandedType       expanded_descriptors(elemetsTable,expandedCodes,4);
 
-meta bufrdcExpandedDescriptors bufrdc_expanded_descriptors(expandedCodes);
+meta bufrdcExpandedDescriptors bufrdc_expanded_descriptors(expandedCodes) : no_copy;
 
 #smart_table NAME (VALUES,FILE_NAME,MASTER_DIRECTORY,LOCAL_DIRECTORY,WIDTH_OF_CODE_IN_BITS,EXTRA_DIRECTORY,EXTRA_FILE_NAME);
-smart_table expandedOriginalCodes (expandedCodes,"element.table",tablesMasterDir,tablesLocalDir,18,rootTablesDir,"operators.table") ;
-meta expandedAbbreviations 	      smart_table_column(expandedOriginalCodes,0,1) : string_type;
-meta expandedTypes 					      smart_table_column(expandedOriginalCodes,1,0) : string_type;
-meta expandedNames 					      smart_table_column(expandedOriginalCodes,2,0)	:	string_type;
-meta expandedUnits 					      smart_table_column(expandedOriginalCodes,3,0)	:	string_type;
-meta expandedOriginalScales 	    smart_table_column(expandedOriginalCodes,4,0)	:	long_type;
-meta expandedOriginalReferences 	smart_table_column(expandedOriginalCodes,5,0)	:	long_type;
-meta expandedOriginalWidths 			smart_table_column(expandedOriginalCodes,6,0)	:	long_type;
-meta expandedCrex_units 			    smart_table_column(expandedOriginalCodes,7,0)	:	long_type;
-meta expandedCrex_scales 		      smart_table_column(expandedOriginalCodes,8,0)	:	long_type;
-meta expandedCrex_widths 		      smart_table_column(expandedOriginalCodes,9,0)	:	long_type;
+smart_table expandedOriginalCodes (expandedCodes,"element.table",tablesMasterDir,tablesLocalDir,18,rootTablesDir,"operators.table") :no_copy;
+meta expandedAbbreviations 	      smart_table_column(expandedOriginalCodes,0,1) : string_type,no_copy;
+meta expandedTypes 					      smart_table_column(expandedOriginalCodes,1,0) : string_type,no_copy;
+meta expandedNames 					      smart_table_column(expandedOriginalCodes,2,0)	:	string_type,no_copy;
+meta expandedUnits 					      smart_table_column(expandedOriginalCodes,3,0)	:	string_type,no_copy;
+meta expandedOriginalScales 	    smart_table_column(expandedOriginalCodes,4,0)	:	long_type,no_copy;
+meta expandedOriginalReferences 	smart_table_column(expandedOriginalCodes,5,0)	:	long_type,no_copy;
+meta expandedOriginalWidths 			smart_table_column(expandedOriginalCodes,6,0)	:	long_type,no_copy;
+meta expandedCrex_units 			    smart_table_column(expandedOriginalCodes,7,0)	:	long_type,no_copy;
+meta expandedCrex_scales 		      smart_table_column(expandedOriginalCodes,8,0)	:	long_type,no_copy;
+meta expandedCrex_widths 		      smart_table_column(expandedOriginalCodes,9,0)	:	long_type,no_copy;
 
 position endDescriptors;
 section_padding section3Padding;
diff --git a/definitions/bufr/section.4.def b/definitions/bufr/section.4.def
index ea9d22a..d15d68e 100644
--- a/definitions/bufr/section.4.def
+++ b/definitions/bufr/section.4.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,23 +9,18 @@
 
 position offsetSection4;
 section_length[3]       section4Length ;
-unsigned[1]     reserved = 0;
+unsigned[1]     reservedSection4 = 0;
 position offsetBeforeData;
 
-#meta subsetNumber bufr_subset_number();
+meta bufrDataEncoded raw(totalLength,section4Length,4) : hidden;
 
-transient subsetNumber=0;
-if (compressedData) {
-  meta numericValues bufr_data_array(offsetSection4,offsetBeforeData,offsetEndSection4,section4Length,
-                        numberOfSubsets,subsetNumber,expandedCodes,expandedFlags,
-                        stringValues,elementsDescriptorsIndex,compressedData) : dump;
-} else {
-  meta numericValues bufr_data_array(offsetSection4,offsetBeforeData,offsetEndSection4,section4Length,
-                        numberOfSubsets,subsetNumber,expandedCodes,expandedFlags,
-                        stringValues,elementsDescriptorsIndex,compressedData) : dump;
-}
+template dataKeys "bufr/dataKeys.def";
 
-meta unpack unpack_bufr_values(numericValues) ;
+meta numericValues bufr_data_array(bufrDataEncoded, numberOfSubsets,expandedCodes,expandedFlags, elementsDescriptorsIndex,compressedData,dataKeys) : no_copy;
+meta stringValues bufr_string_values(numericValues) : no_copy;
+
+meta unpack unpack_bufr_values(numericValues)  : no_copy;
+meta pack pack_bufr_values(numericValues)  : no_copy;
 
 section_padding section4Padding;
 position offsetEndSection4;
diff --git a/definitions/bufr/section.5.def b/definitions/bufr/section.5.def
index e3a121b..c043a0a 100644
--- a/definitions/bufr/section.5.def
+++ b/definitions/bufr/section.5.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/bufr/tables/0/local/1/98/0/element.table b/definitions/bufr/tables/0/local/1/98/0/element.table
index 4c59cf2..13fd0d0 100644
--- a/definitions/bufr/tables/0/local/1/98/0/element.table
+++ b/definitions/bufr/tables/0/local/1/98/0/element.table
@@ -172,7 +172,7 @@
 021227|glareAngle|table|GLARE ANGLE|CODE TABLE|0|6|6|NA|0|0
 021230|numberOfVectorAmbiguities|long|NUMBER OF VECTOR AMBIGUITIES|Numeric|0|0|3|NA|0|0
 021231|indexOfSelectedWindVector|long|INDEX OF SELECTED WIND VECTOR|Numeric|0|0|3|NA|0|0
-021232|totalNmberOfSigma0Measurements|long|TOTAL NMBER OF SIGMA-0 MEASUREMENTS|Numeric|0|0|5|NA|0|0
+021232|totalNumberOfSigma0Measurements|long|TOTAL NMBER OF SIGMA-0 MEASUREMENTS|Numeric|0|0|5|NA|0|0
 021233|numberOfSigma0UsableForWind|long|NUMBER OF SIGMA-0 USABLE FOR WIND|Numeric|0|0|5|NA|0|0
 021234|likelihoodComputedForSolution|long|LIKELIHOOD COMPUTED FOR SOLUTION|Numeric|1|-10000|14|NA|0|0
 021235|windVectorCellQualityFlag|flag|WIND VECTOR CELL QUALITY FLAG|FLAG TABLE|0|0|3|NA|0|0
@@ -182,7 +182,7 @@
 021239|numberOfAftBeamSigma0|long|NUMBER OF AFT-BEAM SIGMA-0|Numeric|1|0|6|NA|0|0
 021240|normalizedRadarCrossSection|long|NORMALIZED RADAR CROSS SECTION|Numeric|2|-10000|14|NA|0|0
 021241|kpVarianceCoefficientAlpha|long|Kp VARIANCE COEFFICIENT (ALPHA)|Numeric|5|0|14|NA|0|0
-021242|kpVarianceCoefficientBetha|long|Kp VARIANCE COEFFICIENT (BETHA)|Numeric|6|0|16|NA|0|0
+021242|kpVarianceCoefficientBeta|long|Kp VARIANCE COEFFICIENT (BETHA)|Numeric|6|0|16|NA|0|0
 021243|kpVarianceCoefficientGamma|long|Kp VARIANCE COEFFICIENT (GAMMA)|Numeric|6|0|16|NA|0|0
 021244|sigma0QualityFlag|flag|SIGMA-0 QUALITY FLAG|FLAG TABLE|0|0|15|NA|0|0
 022192|spectralPeriod|double|SPECTRAL PERIOD|s|2|0|13|NA|0|0
diff --git a/definitions/bufr/tables/0/local/101/98/0/element.table b/definitions/bufr/tables/0/local/101/98/0/element.table
index 4d82b1e..88acb98 100644
--- a/definitions/bufr/tables/0/local/101/98/0/element.table
+++ b/definitions/bufr/tables/0/local/101/98/0/element.table
@@ -155,7 +155,7 @@
 021226|backscatterDistance|long|BACKSCATER DISTANCE|Numeric|1|-4096|13|NA|0|0
 021230|numberOfVectorAmbiguities|long|NUMBER OF VECTOR AMBIGUITIES|Numeric|0|0|3|NA|0|0
 021231|indexOfSelectedWindVector|long|INDEX OF SELECTED WIND VECTOR|Numeric|0|0|3|NA|0|0
-021232|totalNmberOfSigma0Measurements|long|TOTAL NMBER OF SIGMA-0 MEASUREMENTS|Numeric|0|0|5|NA|0|0
+021232|totalNumberOfSigma0Measurements|long|TOTAL NMBER OF SIGMA-0 MEASUREMENTS|Numeric|0|0|5|NA|0|0
 021233|numberOfSigma0UsableForWind|long|NUMBER OF SIGMA-0 USABLE FOR WIND|Numeric|0|0|5|NA|0|0
 021234|likelihoodComputedForSolution|long|LIKELIHOOD COMPUTED FOR SOLUTION|Numeric|1|-10000|14|NA|0|0
 021235|windVectorCellQualityFlag|flag|WIND VECTOR CELL QUALITY FLAG|FLAG TABLE|0|0|3|NA|0|0
@@ -165,7 +165,7 @@
 021239|numberOfAftBeamSigma0|long|NUMBER OF AFT-BEAM SIGMA-0|Numeric|1|0|6|NA|0|0
 021240|normalizedRadarCrossSection|long|NORMALIZED RADAR CROSS SECTION|Numeric|2|-10000|14|NA|0|0
 021241|kpVarianceCoefficientAlpha|long|Kp VARIANCE COEFFICIENT (ALPHA)|Numeric|5|0|14|NA|0|0
-021242|kpVarianceCoefficientBetha|long|Kp VARIANCE COEFFICIENT (BETHA)|Numeric|6|0|16|NA|0|0
+021242|kpVarianceCoefficientBeta|long|Kp VARIANCE COEFFICIENT (BETHA)|Numeric|6|0|16|NA|0|0
 021243|kpVarianceCoefficientGamma|long|Kp VARIANCE COEFFICIENT (GAMMA)|Numeric|6|0|16|NA|0|0
 021244|sigma0QualityFlag|flag|SIGMA-0 QUALITY FLAG|FLAG TABLE|0|0|15|NA|0|0
 022192|spectralPeriod|double|SPECTRAL PERIOD|s|2|0|13|NA|0|0
diff --git a/definitions/bufr/tables/0/local/2/98/0/codetables/25192.table b/definitions/bufr/tables/0/local/2/98/0/codetables/25192.table
new file mode 100644
index 0000000..53a7a4d
--- /dev/null
+++ b/definitions/bufr/tables/0/local/2/98/0/codetables/25192.table
@@ -0,0 +1,2 @@
+0 0 Valid
+1 1 Invalid
diff --git a/definitions/bufr/tables/0/local/2/98/0/codetables/40214.table b/definitions/bufr/tables/0/local/2/98/0/codetables/40214.table
new file mode 100644
index 0000000..6ada193
--- /dev/null
+++ b/definitions/bufr/tables/0/local/2/98/0/codetables/40214.table
@@ -0,0 +1,2 @@
+0 0 Clear
+1 1 Could
diff --git a/definitions/bufr/tables/0/local/2/98/0/codetables/5237.table b/definitions/bufr/tables/0/local/2/98/0/codetables/5237.table
new file mode 100644
index 0000000..23ae3c9
--- /dev/null
+++ b/definitions/bufr/tables/0/local/2/98/0/codetables/5237.table
@@ -0,0 +1,2 @@
+0 0 Mie
+1 1 Rayleigh
diff --git a/definitions/bufr/tables/0/local/2/98/0/codetables/8201.table b/definitions/bufr/tables/0/local/2/98/0/codetables/8201.table
new file mode 100644
index 0000000..456c27b
--- /dev/null
+++ b/definitions/bufr/tables/0/local/2/98/0/codetables/8201.table
@@ -0,0 +1,16 @@
+0 0 Satellite coordinates
+1 1 Observations coordinates
+2 2 Start of observation
+3 3 End of observation
+4 4 Centre of gravity of observation
+5 5 Top of the observation
+6 6 Bottom of the observation
+7 7 Vertical centre of gravity of the observation
+8 8 RESERVED
+9 9 RESERVED
+10 10 RESERVED
+11 11 RESERVED
+12 12 RESERVED
+13 13 RESERVED
+14 14 RESERVED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/local/2/98/0/element.table b/definitions/bufr/tables/0/local/2/98/0/element.table
new file mode 100644
index 0000000..226e615
--- /dev/null
+++ b/definitions/bufr/tables/0/local/2/98/0/element.table
@@ -0,0 +1,16 @@
+#code|abbreviation|type|name|unit|scale|reference|width|crex_unit|crex_scale|crex_width
+005234|profileNumber|long|PROFILE NUMBER|Numeric|0|0|32|NA|0|0
+005236|observationIdentifier|long|OBSERVATION IDENTIFIER|Numeric|0|0|32|NA|0|0
+005237|receiverChannel|table|RECEIVER CHANNEL|CODE TABLE|0|0|2|NA|0|0
+007200|height|double|HEIGHT (high resolution)|m|3|-10000000|26|NA|0|0
+008201|coordinatesSignificance|table|COORDINATES SIGNIFICANCE|CODE TABLE|0|0|4|NA|0|0
+025192|confidenceFlag|table|CONFIDENCE FLAG|CODE TABLE|0|0|4|NA|0|0
+040214|lidarL2bClassificationType|table|LIDAR L2B CLASSIFICATION TYPE|CODE TABLE|0|0|4|NA|0|0
+040215|satelliteRange|long|SATELLITE RANGE|m|0|380000|18|NA|0|0
+040216|horizontalObservationIntegrationLength|long|HORIZONTAL OBSERVATION INTEGRATION LENGTH|m|0|0|26|NA|0|0
+040217|horizontalLineOfSightWind|double|HORIZONTAL LINE OF SIGHT WIND|m/s|2|-32767|16|NA|0|0
+040218|errorEstimateOfHorizontalLineOfSightWind|double|ERROR ESTIMATE OF HORIZONTAL LINE OF SIGHT WIND|m/s|2|0|15|NA|0|0
+040219|backscatterRatio|double|BACKSCATTER RATIO|Numeric|3|500|20|NA|0|0
+040220|derivativeWindToPressure|double|DERIVATIVE WIND TO PRESSURE|m s-1 Pa-1|3|-100000|18|NA|0|0
+040221|derivativeWindToTemperature|double|DERIVATIVE WIND TO TEMPERATURE|m s-1 K-1|3|-100000|18|NA|0|0
+040222|derivativeWindToBackscatterRatio|double|DERIVATIVE WIND TO BACKSCATTER RATIO|m/s|3|-200000|19|NA|0|0
diff --git a/definitions/bufr/tables/0/local/2/98/0/sequence.def b/definitions/bufr/tables/0/local/2/98/0/sequence.def
new file mode 100644
index 0000000..434031a
--- /dev/null
+++ b/definitions/bufr/tables/0/local/2/98/0/sequence.def
@@ -0,0 +1,6 @@
+"340192" = [  001007, 002019, 001033, 001034, 004001, 004002, 004003, 004004, 004005, 004007,
+               005234, 005236, 005237, 040214, 008201, 005001, 006001, 004016, 008201, 005001,
+               006001, 004016, 008201, 005001, 006001, 004016, 008201, 007200, 005021, 007021,
+               040215, 008201, 007200, 005021, 007021, 040215, 008201, 007200, 005021, 007021,
+               040215, 040216, 040217, 040218, 025192, 010004, 012001, 040219, 040220, 040221,
+               040222 ]
diff --git a/definitions/bufr/tables/0/local/3/98/0/codetables/25192.table b/definitions/bufr/tables/0/local/3/98/0/codetables/25192.table
new file mode 100644
index 0000000..6060af6
--- /dev/null
+++ b/definitions/bufr/tables/0/local/3/98/0/codetables/25192.table
@@ -0,0 +1,16 @@
+0 0 Valid
+1 1 Invalid
+2 2 RESERVED
+3 3 RESERVED
+4 4 RESERVED
+5 5 RESERVED
+6 6 RESERVED
+7 7 RESERVED
+8 8 RESERVED
+9 9 RESERVED
+10 10 RESERVED
+11 11 RESERVED
+12 12 RESERVED
+13 13 RESERVED
+14 14 RESERVED
+15 15 MISSING
diff --git a/definitions/bufr/tables/0/local/3/98/0/codetables/40214.table b/definitions/bufr/tables/0/local/3/98/0/codetables/40214.table
new file mode 100644
index 0000000..8356f6e
--- /dev/null
+++ b/definitions/bufr/tables/0/local/3/98/0/codetables/40214.table
@@ -0,0 +1,16 @@
+0 0 Clear
+1 1 Cloud
+2 2 RESERVED
+3 3 RESERVED
+4 4 RESERVED
+5 5 RESERVED
+6 6 RESERVED
+7 7 RESERVED
+8 8 RESERVED
+9 9 RESERVED
+10 10 RESERVED
+11 11 RESERVED
+12 12 RESERVED
+13 13 RESERVED
+14 14 RESERVED
+15 15 RESERVED
diff --git a/definitions/bufr/tables/0/local/3/98/0/codetables/5237.table b/definitions/bufr/tables/0/local/3/98/0/codetables/5237.table
new file mode 100644
index 0000000..594c9a0
--- /dev/null
+++ b/definitions/bufr/tables/0/local/3/98/0/codetables/5237.table
@@ -0,0 +1,4 @@
+0 0 Mie
+1 1 Rayleigh
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/local/3/98/0/codetables/8201.table b/definitions/bufr/tables/0/local/3/98/0/codetables/8201.table
new file mode 100644
index 0000000..bc8e0fc
--- /dev/null
+++ b/definitions/bufr/tables/0/local/3/98/0/codetables/8201.table
@@ -0,0 +1,16 @@
+0 0 Satellite coordinates
+1 1 Observations coordinates
+2 2 Start of observation
+3 3 End of observation
+4 4 Horizontal centre of gravity of the observation
+5 5 Vertical centre of gravity of the observatio
+6 6 Top of the observation
+7 7 Bottom of the observation
+8 8 RESERVED
+9 9 RESERVED
+10 10 RESERVED
+11 11 RESERVED
+12 12 RESERVED
+13 13 RESERVED
+14 14 RESERVED
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/local/3/98/0/element.table b/definitions/bufr/tables/0/local/3/98/0/element.table
new file mode 100644
index 0000000..e0d7d49
--- /dev/null
+++ b/definitions/bufr/tables/0/local/3/98/0/element.table
@@ -0,0 +1,22 @@
+#code|abbreviation|type|name|unit|scale|reference|width|crex_unit|crex_scale|crex_width
+005234|profileNumber|long|PROFILE NUMBER|Numeric|0|0|16|NA|0|5
+005236|observationIdentifier|long|OBSERVATION IDENTIFIER|Numeric|0|0|30|NA|0|10
+005237|receiverChannel|table|RECEIVER CHANNEL|CODE TABLE|0|0|2|NA|0|1
+007200|height|double|HEIGHT (high resolution)|m|3|-10000000|26|NA|3|8
+008201|coordinatesSignificance|table|COORDINATES SIGNIFICANCE|CODE TABLE|0|0|8|NA|0|3
+025192|confidenceFlag|table|CONFIDENCE FLAG|CODE TABLE|0|0|4|NA|0|2
+033192|scanLineQualityFlagForSaphirOrMadras|table|SCAN LINE QUALITY FLAG FOR SAPHIR/MADRAS|FLAG TABLE|0|0|10|FLAG TABLE|0|4
+033193|payloadModeForSaphir|table|PAYLOAD MODE FOR SAPHIR|CODE TABLE|0|0|3|CODE TABLE|0|1
+033194|payloadModeForMadras|table|PAYLOAD MODE FOR MADRAS|CODE TABLE|0|0|3|CODE TABLE|0|1
+033195|satelliteModeForSaphirOrMadras|table|SATELLITE MODE FOR SAPHIR/MADRAS|CODE TABLE|0|0|4|CODE TABLE|0|2
+033196|channelQualityFlagForSaphirOrMadras|table|CHANNEL QUALITY FLAG FOR SAPHIR/MADRAS|FLAG TABLE|0|0|11|FLAG TABLE|0|4
+033197|calibrationFlagsForSaphirOrMadras|table|CALIBRATION FLAGS FOR SAPHIR/MADRAS|CODE TABLE|0|0|3|CODE TABLE|0|1
+040214|lidarL2bClassificationType|table|LIDAR L2B CLASSIFICATION TYPE|CODE TABLE|0|0|4|NA|0|1
+040215|satelliteRange|long|SATELLITE RANGE|m|0|380000|18|NA|0|6
+040216|horizontalObservationIntegrationLength|long|HORIZONTAL OBSERVATION INTEGRATION LENGTH|m|0|0|26|NA|0|8
+040217|horizontalLineOfSightWind|double|HORIZONTAL LINE OF SIGHT WIND|m/s|2|-32767|16|NA|2|5
+040218|errorEstimateOfHorizontalLineOfSightWind|double|ERROR ESTIMATE OF HORIZONTAL LINE OF SIGHT WIND|m/s|2|0|15|NA|2|5
+040219|backscatterRatio|double|BACKSCATTER RATIO|Numeric|3|500|20|NA|3|7
+040220|derivativeWindToPressure|double|DERIVATIVE WIND TO PRESSURE|m s-1 Pa-1|3|-100000|18|NA|3|6
+040221|derivativeWindToTemperature|double|DERIVATIVE WIND TO TEMPERATURE|m s-1 K-1|3|-100000|18|NA|3|6
+040222|derivativeWindToBackscatterRatio|double|DERIVATIVE WIND TO BACKSCATTER RATIO|m/s|3|-200000|19|NA|3|6
diff --git a/definitions/bufr/tables/0/local/3/98/0/sequence.def b/definitions/bufr/tables/0/local/3/98/0/sequence.def
new file mode 100644
index 0000000..ee1394e
--- /dev/null
+++ b/definitions/bufr/tables/0/local/3/98/0/sequence.def
@@ -0,0 +1,14 @@
+"310195" = [  310196, 101006, 310197 ]
+"310196" = [  008070, 001033, 001034, 008070, 001033, 001034, 001007, 002019, 005040, 025075,
+               201133, 005041, 201000, 005043, 025070, 033192, 033193, 004001, 004002, 004003,
+               004004, 004005, 202131, 201138, 004006, 201000, 202000, 005001, 006001, 202126,
+               007001, 202000, 007024, 005021, 007025, 005022, 025081, 033195, 002151, 012064,
+               002151, 012064, 002151, 012064, 002151, 012064 ]
+"310197" = [  002150, 025076, 025077, 025078, 033196, 033197, 008065, 013040, 201132, 202129,
+               012063, 202000, 201000 ]
+"340192" = [  001007, 002019, 001033, 001034, 004001, 004002, 004003, 004004, 004005, 004007,
+               005234, 005236, 005237, 040214, 008201, 005001, 006001, 004016, 008201, 005001,
+               006001, 004016, 008201, 005001, 006001, 004016, 008201, 007200, 005021, 007021,
+               040215, 008201, 007200, 005021, 007021, 040215, 008201, 007200, 005021, 007021,
+               040215, 040216, 040217, 040218, 025192, 010004, 012001, 040219, 040220, 040221,
+               040222 ]
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/1003.table b/definitions/bufr/tables/0/wmo/10/codetables/1003.table
new file mode 100644
index 0000000..ff4f928
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/1003.table
@@ -0,0 +1,8 @@
+0 0 ATARCTICA
+1 1 REGION I
+2 2 REGION II
+3 3 REGION III
+4 4 REGION IV
+5 5 REGION V
+6 6 REGION VI
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/10063.table b/definitions/bufr/tables/0/wmo/10/codetables/10063.table
new file mode 100644
index 0000000..13c6331
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/10063.table
@@ -0,0 +1,10 @@
+0 0 INCREASING, THEN DECREASING: ATMOSPHERIC PRESURE THE SAME OR"     HIGHER THAN 3 HOURS AGO (OR 24 HOURS AGO )
+1 1 INCREASING, THEN STEADY; OR INCREASING; THEN MORE SLOWLY
+2 2 INCREASING (STEADILY OR UNSTEADILY )
+3 3 DECREASING OR STEADY, THEN INCREASING; RAPIDLY
+4 4 STEADY; ATMOSPHERIC PRESSURE THE SAME AS 3 HOURS AGO (OR 24"    HOURS)
+5 5 DECREASING; THEN INCREASING; ATMOSPHERIC PRESSURE THE SAME O"    R LOWER THAN 3 HOURS AGO
+6 6 DECREASING, THEN STEADY; OR DECREASING, DECREASING MORE SLOW"    LY
+7 7 DECREASING (STEADILY OR UNSTEADELY )
+8 8 STEADY OR INCREASING, THEN DECREASING; OR DECREASING, THEN"    DECREASING MORE RAPIDLY
+15 15 MISSING
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/10064.table b/definitions/bufr/tables/0/wmo/10/codetables/10064.table
new file mode 100644
index 0000000..88ba38a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/10064.table
@@ -0,0 +1,4 @@
+0 0 SUBSONIC
+1 1 TRANSONIC
+2 2 SUPERSONIC
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/1007.table b/definitions/bufr/tables/0/wmo/10/codetables/1007.table
new file mode 100644
index 0000000..711e681
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/1007.table
@@ -0,0 +1,132 @@
+1 1 ERS 1
+2 2 ERS 2
+3 3 METOP-1
+4 4 METOP-2
+5 5 METOP-3
+20 20 SPOT1
+21 21 SPOT2
+22 22 SPOT3
+23 23 SPOT4
+40 40 OERSTED
+41 41 CHAMP
+42 42 TERRASAR-X
+50 50 METEOSAT 3
+51 51 METEOSAT 4
+52 52 METEOSAT 5
+53 53 METEOSAT 6
+54 54 METEOSAT 7
+55 55 METEOSAT 8
+56 56 METEOSAT 9
+57 57 METEOSAT 10
+58 58 METEOSAT 1
+59 59 METEOSAT 2
+60 60 ENVISAT
+70 70 METEOSAT 11
+120 120 ADEOS
+121 121 ADEOS II
+150 150 GMS 3
+151 151 GMS 4
+152 152 GMS 5
+171 171 MTSAT-1R
+172 172 MTSAT-2
+200 200 NOAA 8
+201 201 NOAA 9
+202 202 NOAA 10
+203 203 NOAA 11
+204 204 NOAA 12
+205 205 NOAA 14
+206 206 NOAA 15
+207 207 NOAA 16
+208 208 NOAA 17
+209 209 NOAA 18
+220 220 LANDSAT 5
+221 221 LANDSAT 4
+222 222 LANDSAT 7
+240 240 DMSP 7
+241 241 DMSP 8
+242 242 DMSP 9
+243 243 DMSP 10
+244 244 DMSP 11
+245 245 DMSP 12
+246 246 DMSP 13
+247 247 DMSP 14
+248 248 DMSP 15
+249 249 DMSP 16
+250 250 GOES 6
+251 251 GOES 7
+252 252 GOES 8
+253 253 GOES 9
+254 254 GOES 10
+255 255 GOES 11
+256 256 GOES 12
+257 257 GOES 13
+258 258 GOES 14
+259 259 GOES 15
+260 260 JASON-1
+261 261 JASON-2
+281 281 QUIKSCAT
+282 282 TRMM
+283 283 CORIOLIS
+285 285 DMSP17
+310 310 GOMS 1
+311 311 GOMS 2
+320 320 METEOR 2-21
+321 321 METEOR 3-5
+322 322 METEOR 3M-1
+323 323 METEOR 3M-2
+341 341 RESURS 01-4
+430 430 INSAT 1B
+431 431 INSAT 1C
+432 432 INSAT 1D
+450 450 INSAT 2A
+451 451 INSAT 2B
+452 452 INSAT 2E
+470 470 INSAT 3A
+471 471 INSAT 3D
+472 472 INSAT 3E
+500 500 FY-1C
+501 501 FY-1D
+510 510 FY-2
+512 512 FY-2B
+513 513 FY-2C
+514 514 FY-2D
+700 700 TIROS M (ITOS 1)
+701 701 NOAA 1
+702 702 NOAA 2
+703 703 NOAA 3
+704 704 NOAA 4
+705 705 NOAA 5
+706 706 NOAA 6
+707 707 NOAA 7
+708 708 TIROS-N
+710 710 GOES (SMS 1)
+711 711 GOES (SMS 2)
+720 720 TOPEX
+721 721 GFO (GEOSAT FOLLOW ON)
+722 722 GRACE A
+723 723 GRACE B
+731 731 GOES 1
+732 732 GOES 2
+733 733 GOES 3
+734 734 GOES 4
+735 735 GOES 5
+740 740 COSMIC-1
+741 741 COSMIC-2
+742 742 COSMIC-3
+743 743 COSMIC-4
+744 744 COSMIC-5
+745 745 COSMIC-6
+763 763 NIMBUS 3
+764 764 NIMBUS 4
+765 765 NIMBUS 5
+766 766 NIMBUS 6
+767 767 NIMBUS 7
+780 780 ERBS
+781 781 UARS
+782 782 EARTH PROBE
+783 783 TERRA
+784 784 AQUA
+785 785 AURA
+800 800 SUNSAT
+820 820 SAC-C
+1023 1023 MISSIN VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/1031.table b/definitions/bufr/tables/0/wmo/10/codetables/1031.table
new file mode 100644
index 0000000..c105793
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/1031.table
@@ -0,0 +1,219 @@
+0 0 WMO SECRETARIAT
+1 1 MELBOURNE
+2 2 MELBOURNE
+3 3 MELBOURNE
+4 4 MOSCOW
+5 5 MOSCOW
+6 6 MOSCOW
+7 7 US NATIONAL WEATHER SERVICE, NATIONAL CENTRES FOR ENVIRONMEN"    TAL PREDICTION(NCEP)
+8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONSGATEWAY (NWSTG"    )
+9 9 US NATIONAL WEATHER SERVICE - OTHER
+10 10 CAIRO (RSMC)
+11 11 CAIRO (RSMC)
+12 12 DAKAR (RSMC)
+13 13 DAKAR (RSMC)
+14 14 NAIROBI (RSMC)
+15 15 NAIROBI (RSMC)
+16 16 CASABLANCA (RSMC)
+17 17 TUNIS (RSMC)
+18 18 TUNIS CASABLANCA (RSMC)
+19 19 TUNIS CASABLANCA (RSMC)
+20 20 LAS PALMAS
+21 21 ALGIERS (RSMC)
+22 22 ACMAD
+23 23 MOZAMBIQUE NMC
+24 24 PRETORIA (RSMC)
+25 25 LA R?UNION (RSMC)
+26 26 KHABAROVSK (RSMC)
+27 27 KHABAROVSK (RSMC)
+28 28 NEW DELHI (RSMC)
+29 29 NEW DELHI (RSMC)
+30 30 NOVOSIBIRSK (RSMC)
+31 31 NOVOSIBIRSK (RSMC)
+32 32 TASHKENT (RSMC)
+33 33 JEDDAH (RSMC)
+34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+35 35 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+36 36 BANGKOK
+37 37 ULAN BATOR
+38 38 BEIJING (RSMC)
+39 39 BEIJING (RSMC)
+40 40 SEOUL
+41 41 BUENOS AIRES (RSMC)
+42 42 BUENOS AIRES (RSMC)
+43 43 BRASILIA (RSMC)
+44 44 BRASILIA (RSMC)
+45 45 SANTIAGO
+46 46 BRAZILIAN SPACE AGENCY - INPE
+47 47 COLOMBIA NMC
+48 48 ECUADOR NMC
+49 49 PERU NMC                  50
+50 50 VENEZUELA NMC
+51 51 MIAMI (RSMC)
+52 52 MIAMI RSMC, NATIONAL HURRICANE CENTER
+53 53 MONTREAL (RSMC)
+54 54 MONTREAL (RSMC)
+55 55 SAN FRANCISCO
+56 56 ARINC CENTRE
+57 57 U.S. AIR FORCE AIR FORCE GLOBAL WEATHER CENTRAL
+58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTERE"    Y, CA
+59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, USA
+60 60 UNITED STATES NATIONAL CENTRE FOR ATMOSPHERIC RESEARCH (NCAR"    )
+61 61 SERVICE ARGOS - LANDOVER
+62 62 U.S. NAVAL OCEANOGRAPHIC OFFICE
+63 63 IRI (INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIET"    Y)
+64 64 HONOLULU (RSMC)
+65 65 DARWIN (RSMC)
+66 66 DARWIN (RSMC)
+67 67 MELBOURNE (RSMC)
+69 69 WELLINGTON (RSMC)
+70 70 WELLINGTON (RSMC)
+71 71 NADI (RSMC)
+72 72 SINGAPORE
+73 73 MALAYSIA NMC
+74 74 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+75 75 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+76 76 MOSCOW (RSMC)
+78 78 OFFENBACH (RSMC)
+79 79 OFFENBACH (RSMC)
+80 80 ROME (RSMC)
+81 81 ROME (RSMC)
+82 82 NORRK?PING
+83 83 NORRK?PING
+84 84 TOULOUSE (RSMC)
+85 85 TOULOUSE (RSMC)
+86 86 HELSINKI
+87 87 BELGRADE
+88 88 OSLO
+89 89 PRAGUE
+90 90 EPISKOPI
+91 91 ANKARA
+92 92 FRANKFURT/MAIN)
+93 93 LONDON (WAFC)
+94 94 COPENHAGEN
+95 95 ROTA
+96 96 ATHENS
+97 97 EUROPEAN SPACE AGENCY (ESA)
+98 98 EUROPEAN CENTRE FOR MEDIUM-RANGE WEATHER FORECAST (ECMWF)
+99 99 DE BILT
+100 100 BRAZZAVILLE
+101 101 ABIDJAN
+102 102 LIBYAN ARAB JAMAHIRIYA NMC
+103 103 MADAGASCAR NMC
+104 104 MAURITIUS NMC
+105 105 NIGER NMC
+106 106 SEYCHELLES NMC
+107 107 UGANDA NMC
+108 108 TANZANIA NMC
+109 109 ZIMBABWE NMC
+110 110 HONG-KONG, CHINA
+111 111 AFGHANISTAN NMC          110
+112 112 BAHRAIN NMC
+113 113 BANGLADESH NMC
+114 114 BHUTAN NMC
+115 115 CAMBODIA NMC
+116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA NMC
+117 117 ISLAMIC REPUBLIC OF IRAN NMC
+118 118 IRAQ NMC
+119 119 KAZAKHSTAN NMC
+120 120 KUWAIT NMC
+121 121 KYRGYZ REPUBLIC NMC
+122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC NMC
+123 123 MACAO, CHINA
+124 124 MALDIVES NMC
+125 125 MYANMAR NMC
+126 126 NEPAL NMC
+127 127 OMAN NMC
+128 128 PAKISTAN NMC
+129 129 QATAR NMC
+130 130 REPUBLIC OF YEMEN NMC
+131 131 SRI LANKA NMC
+132 132 TAJIKISTAN NMC
+133 133 TURKMENISTAN NMC
+134 134 UNITED ARAB EMIRATES NMC
+135 135 UZBEKISTAN NMC
+136 136 SOCIALIST REPUBLIC OF VIET NAM NMC
+140 140 BOLIVIA NMC
+141 141 GUYANA NMC
+142 142 PARAGUAY NMC
+143 143 SURINAME NMC
+144 144 URUGUAY NMC                     140
+145 145 FRENCH GUYANA
+146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE
+150 150 ANTIGUA AND BARBUDA NMC
+151 151 BAHAMAS NMC
+152 152 BARBADOS NMC
+153 153 BELIZE NMC
+154 154 BRITISH CARIBBEAN TERRITORIES CENTRE
+155 155 SAN JOSE
+156 156 CUBA NMC
+157 157 DOMINICA NMC
+158 158 DOMINICAN REPUBLIC NMC
+159 159 EL SALVADOR NMC
+160 160 US NOAA/NESDIS
+161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH
+162 162 GUATEMALA NMC
+163 163 HAITI NMC
+164 164 HONDURAS NMC
+165 165 JAMAICA NMC
+166 166 MEXICO
+167 167 NETHERLANDS ANTILLES AND ARUBA NMC
+168 168 NICARAGUA NMC
+169 169 PANAMA NMC
+170 170 SAINT LUCIA NMC
+171 171 TRINIDAD AND TOBAGO NMC
+172 172 FRENCH DEPARTMENTS IN RA IV
+173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA)
+190 190 COOK ISLANDS NMC
+191 191 FRENCH POLYNESIA NMC
+192 192 TONGA NMC
+193 193 VANUATU NMC
+194 194 BRUNEI DARUSSALAM NMC
+195 195 INDONESIA NMC
+196 196 KIRIBATI NMC
+197 197 FEDERATED STATES OF MICRONESIA NMC
+198 198 NEW CALEDONIA NMC
+199 199 NIUE
+200 200 PAPUA NEW GUINEA NMC
+201 201 PHILIPPINES NMC
+202 202 SAMOA NMC
+203 203 SOLOMON ISLANDS NMC
+210 210 FRASCATI (ESA/ESRIN)
+211 211 LANNION
+212 212 LISBOA
+213 213 REYKJAVIK
+214 214 MADRID
+215 215 Z?RICH
+216 216 SERVICE ARGOS TOULOUSE
+217 217 BRATISLAVA
+218 218 BUDAPEST
+219 219 LJUBLJANA
+220 220 WARSAW
+221 221 ZAGREB
+222 222 ALBANIA NMC
+223 223 ARMENIA NMC
+224 224 AUSTRIA NMC
+225 225 AZERBAIJAN NMC
+226 226 BELARUS NMC
+227 227 BELGIUM NMC
+228 228 BOSNIA AND HERZEGOVINA NMC
+229 229 BULGARIA NMC
+230 230 CYPRUS NMC
+231 231 ESTONIA NMC
+232 232 GEORGIA NMC
+233 233 DUBLIN
+234 234 ISRAEL NMC
+235 235 JORDAN NMC
+236 236 LATVIA NMC
+237 237 LEBANON NMC
+238 238 LITHUANIA NMC
+239 239 LUXEMBOURG
+240 240 MALTA NMC
+241 241 MONACO
+242 242 ROMANIA NMC
+243 243 SYRIAN ARAB REPUBLIC NMC
+244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA NMC
+245 245 UKRAINE NMC
+246 246 REPUBLIC OF MOLDOVA NMC
+254 254 EUMETSAT OPERATION CENTRE
+255 255 MISSING VALUE               219
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/1032.table b/definitions/bufr/tables/0/wmo/10/codetables/1032.table
new file mode 100644
index 0000000..2bf1e24
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/1032.table
@@ -0,0 +1,41 @@
+1 1 PREPROCESSING CONSISTENCY CHECK
+10 10 BIAS CORRECTION
+20 20 BLACK LIST
+30 30 OI MASS AND WIND ANALYSIS, REPORT STATUS
+31 31 OI HUMIDITY ANALYSIS, REPORT STATUS
+32 32 OI ANALYSIS VARIABLES
+33 33 OI ANALYSIS, FIRST GUESS Q/C
+34 34 OI ANALYSIS, FINAL ANALYSIS Q/C
+35 35 OI ANALYSIS, EVENT FLAGS
+40 40 DYNAMIC INITIALISATION SCHEME
+41 41 NORMAL MODE INITIALISATION SCHEME
+50 50 SURFACE ANALYSIS, REPORT STATUS
+51 51 SURFACE ANALYSIS VARIABLES
+52 52 SURFACE ANALYSIS Q/C
+53 53 SURFACE ANALYSIS, EVENT FLAGS
+60 60 3D VAR REPORT STATUS
+61 61 3D VAR ANALYSIS VARIABLES
+62 62 3D VAR Q/C
+63 63 3D VAR EVENT FLAGS
+80 80 PRESAT FIRST GUESS
+81 81 PRESAT ERROR STANDARD DEVIATIONS
+82 82 PRESAT BIAS ESTIMATES
+83 83 PRESAT BRIGHTNESS TEMPERATURE QUALITY FLAGS
+84 84 PRESAT SAMARY FLAGS
+90 90 FIRST GUESS (6 HOUR FORECAST)
+91 91 FIRST GUESS (FGAT INTERPOLATED)
+100 100 PRESCAT AMBIGUITY REMOVAL
+110 110 WAM FIRST GUESS
+111 111 WAM ANALYSIS
+112 112 WAM FORECAST
+113 113 WAM Q/C
+201 201 COLLOCATION WITH SURFACE DATA
+202 202 COLLOCATION WITH TEMP/PILOT DATA
+203 203 COLLOCATION WITH AIREP DATA
+204 204 COLLOCATION WITH SATOB DATA
+205 205 COLLOCATION WITH TOVS DATA
+206 206 COLLOCATION WITH ERS1 SCATTEROMETER DATA
+207 207 COLLOCATION WITH ERS1 ALTIMETER DATA
+220 220 ERS1 SCATTEROMETER COLLOCATION BLACK LIST
+230 230 GAUSS ERROR
+231 231 GROSS ERROR
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/1033.table b/definitions/bufr/tables/0/wmo/10/codetables/1033.table
new file mode 100644
index 0000000..637e315
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/1033.table
@@ -0,0 +1,219 @@
+0 0 WMO SECRETARIAT
+1 1 MELBOURNE
+2 2 MELBOURNE
+3 3 MELBOURNE
+4 4 MOSCOW
+5 5 MOSCOW
+6 6 MOSCOW
+7 7 US NATIONAL WEATHER SERVICE, NATIONAL CENTRES FOR ENVIRONMEN"    TAL PREDICTION(NCEP)
+8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONSGATEWAY (NWSTG"    )
+9 9 US NATIONAL WEATHER SERVICE - OTHER
+10 10 CAIRO (RSMC)
+11 11 CAIRO (RSMC)
+12 12 DAKAR (RSMC)
+13 13 DAKAR (RSMC)
+14 14 NAIROBI (RSMC)
+15 15 NAIROBI (RSMC)
+16 16 CASABLANCA (RSMC)
+17 17 TUNIS (RSMC)
+18 18 TUNIS CASABLANCA (RSMC)
+19 19 TUNIS CASABLANCA (RSMC)
+20 20 LAS PALMAS
+21 21 ALGIERS (RSMC)
+22 22 ACMAD
+23 23 MOZAMBIQUE NMC
+24 24 PRETORIA (RSMC)
+25 25 LA R?UNION (RSMC)
+26 26 KHABAROVSK (RSMC)
+27 27 KHABAROVSK (RSMC)
+28 28 NEW DELHI (RSMC)
+29 29 NEW DELHI (RSMC)
+30 30 NOVOSIBIRSK (RSMC)
+31 31 NOVOSIBIRSK (RSMC)
+32 32 TASHKENT (RSMC)
+33 33 JEDDAH (RSMC)
+34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+35 35 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+36 36 BANGKOK
+37 37 ULAN BATOR
+38 38 BEIJING (RSMC)
+39 39 BEIJING (RSMC)
+40 40 SEOUL
+41 41 BUENOS AIRES (RSMC)
+42 42 BUENOS AIRES (RSMC)
+43 43 BRASILIA (RSMC)
+44 44 BRASILIA (RSMC)
+45 45 SANTIAGO
+46 46 BRAZILIAN SPACE AGENCY - INPE
+47 47 COLOMBIA NMC
+48 48 ECUADOR NMC
+49 49 PERU NMC                  50
+50 50 VENEZUELA NMC
+51 51 MIAMI (RSMC)
+52 52 MIAMI RSMC, NATIONAL HURRICANE CENTER
+53 53 MONTREAL (RSMC)
+54 54 MONTREAL (RSMC)
+55 55 SAN FRANCISCO
+56 56 ARINC CENTRE
+57 57 U.S. AIR FORCE AIR FORCE GLOBAL WEATHER CENTRAL
+58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTERE"    Y, CA
+59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, USA
+60 60 UNITED STATES NATIONAL CENTRE FOR ATMOSPHERIC RESEARCH (NCAR"    )
+61 61 SERVICE ARGOS - LANDOVER
+62 62 U.S. NAVAL OCEANOGRAPHIC OFFICE
+63 63 IRI (INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIET"    Y)
+64 64 HONOLULU (RSMC)
+65 65 DARWIN (RSMC)
+66 66 DARWIN (RSMC)
+67 67 MELBOURNE (RSMC)
+69 69 WELLINGTON (RSMC)
+70 70 WELLINGTON (RSMC)
+71 71 NADI (RSMC)
+72 72 SINGAPORE
+73 73 MALAYSIA NMC
+74 74 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+75 75 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+76 76 MOSCOW (RSMC)
+78 78 OFFENBACH (RSMC)
+79 79 OFFENBACH (RSMC)
+80 80 ROME (RSMC)
+81 81 ROME (RSMC)
+82 82 NORRK?PING
+83 83 NORRK?PING
+84 84 TOULOUSE (RSMC)
+85 85 TOULOUSE (RSMC)
+86 86 HELSINKI
+87 87 BELGRADE
+88 88 OSLO
+89 89 PRAGUE
+90 90 EPISKOPI
+91 91 ANKARA
+92 92 FRANKFURT/MAIN)
+93 93 LONDON (WAFC)
+94 94 COPENHAGEN
+95 95 ROTA
+96 96 ATHENS
+97 97 EUROPEAN SPACE AGENCY (ESA)
+98 98 EUROPEAN CENTRE FOR MEDIUM-RANGE WEATHER FORECAST (ECMWF)
+99 99 DE BILT
+100 100 BRAZZAVILLE
+101 101 ABIDJAN
+102 102 LIBYAN ARAB JAMAHIRIYA NMC
+103 103 MADAGASCAR NMC
+104 104 MAURITIUS NMC
+105 105 NIGER NMC
+106 106 SEYCHELLES NMC
+107 107 UGANDA NMC
+108 108 TANZANIA NMC
+109 109 ZIMBABWE NMC
+110 110 HONG-KONG, CHINA
+111 111 AFGHANISTAN NMC          110
+112 112 BAHRAIN NMC
+113 113 BANGLADESH NMC
+114 114 BHUTAN NMC
+115 115 CAMBODIA NMC
+116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA NMC
+117 117 ISLAMIC REPUBLIC OF IRAN NMC
+118 118 IRAQ NMC
+119 119 KAZAKHSTAN NMC
+120 120 KUWAIT NMC
+121 121 KYRGYZ REPUBLIC NMC
+122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC NMC
+123 123 MACAO, CHINA
+124 124 MALDIVES NMC
+125 125 MYANMAR NMC
+126 126 NEPAL NMC
+127 127 OMAN NMC
+128 128 PAKISTAN NMC
+129 129 QATAR NMC
+130 130 REPUBLIC OF YEMEN NMC
+131 131 SRI LANKA NMC
+132 132 TAJIKISTAN NMC
+133 133 TURKMENISTAN NMC
+134 134 UNITED ARAB EMIRATES NMC
+135 135 UZBEKISTAN NMC
+136 136 SOCIALIST REPUBLIC OF VIET NAM NMC
+140 140 BOLIVIA NMC
+141 141 GUYANA NMC
+142 142 PARAGUAY NMC
+143 143 SURINAME NMC
+144 144 URUGUAY NMC                     140
+145 145 FRENCH GUYANA
+146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE
+150 150 ANTIGUA AND BARBUDA NMC
+151 151 BAHAMAS NMC
+152 152 BARBADOS NMC
+153 153 BELIZE NMC
+154 154 BRITISH CARIBBEAN TERRITORIES CENTRE
+155 155 SAN JOSE
+156 156 CUBA NMC
+157 157 DOMINICA NMC
+158 158 DOMINICAN REPUBLIC NMC
+159 159 EL SALVADOR NMC
+160 160 US NOAA/NESDIS
+161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH
+162 162 GUATEMALA NMC
+163 163 HAITI NMC
+164 164 HONDURAS NMC
+165 165 JAMAICA NMC
+166 166 MEXICO
+167 167 NETHERLANDS ANTILLES AND ARUBA NMC
+168 168 NICARAGUA NMC
+169 169 PANAMA NMC
+170 170 SAINT LUCIA NMC
+171 171 TRINIDAD AND TOBAGO NMC
+172 172 FRENCH DEPARTMENTS IN RA IV
+173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA)
+190 190 COOK ISLANDS NMC
+191 191 FRENCH POLYNESIA NMC
+192 192 TONGA NMC
+193 193 VANUATU NMC
+194 194 BRUNEI DARUSSALAM NMC
+195 195 INDONESIA NMC
+196 196 KIRIBATI NMC
+197 197 FEDERATED STATES OF MICRONESIA NMC
+198 198 NEW CALEDONIA NMC
+199 199 NIUE
+200 200 PAPUA NEW GUINEA NMC
+201 201 PHILIPPINES NMC
+202 202 SAMOA NMC
+203 203 SOLOMON ISLANDS NMC
+210 210 FRASCATI (ESA/ESRIN)
+211 211 LANNION
+212 212 LISBOA
+213 213 REYKJAVIK
+214 214 MADRID
+215 215 Z?RICH
+216 216 SERVICE ARGOS TOULOUSE
+217 217 BRATISLAVA
+218 218 BUDAPEST
+219 219 LJUBLJANA            190
+220 220 WARSAW
+221 221 ZAGREB
+222 222 ALBANIA NMC
+223 223 ARMENIA NMC
+224 224 AUSTRIA NMC
+225 225 AZERBAIJAN NMC
+226 226 BELARUS NMC
+227 227 BELGIUM NMC
+228 228 BOSNIA AND HERZEGOVINA NMC
+229 229 BULGARIA NMC
+230 230 CYPRUS NMC
+231 231 ESTONIA NMC
+232 232 GEORGIA NMC
+233 233 DUBLIN
+234 234 ISRAEL NMC
+235 235 JORDAN NMC
+236 236 LATVIA NMC
+237 237 LEBANON NMC
+238 238 LITHUANIA NMC
+239 239 LUXEMBOURG
+240 240 MALTA NMC
+241 241 MONACO
+242 242 ROMANIA NMC
+243 243 SYRIAN ARAB REPUBLIC NMC
+244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA NMC
+245 245 UKRAINE NMC
+246 246 REPUBLIC OF MOLDOVA NMC
+254 254 EUMETSAT OPERATION CENTRE
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/1035.table b/definitions/bufr/tables/0/wmo/10/codetables/1035.table
new file mode 100644
index 0000000..734c534
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/1035.table
@@ -0,0 +1,219 @@
+0 0 WMO SECRETARIAT
+1 1 MELBOURNE
+2 2 MELBOURNE
+3 3 MELBOURNE
+4 4 MOSCOW
+5 5 MOSCOW
+6 6 MOSCOW
+7 7 US NATIONAL WEATHER SERVICE, NATIONAL CENTRES FOR ENVIRONMEN"    TAL PREDICTION(NCEP)
+8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONSGATEWAY (NWSTG"    )
+9 9 US NATIONAL WEATHER SERVICE - OTHER
+10 10 CAIRO (RSMC)
+11 11 CAIRO (RSMC)
+12 12 DAKAR (RSMC)
+13 13 DAKAR (RSMC)
+14 14 NAIROBI (RSMC)
+15 15 NAIROBI (RSMC)
+16 16 CASABLANCA (RSMC)
+17 17 TUNIS (RSMC)
+18 18 TUNIS CASABLANCA (RSMC)
+19 19 TUNIS CASABLANCA (RSMC)
+20 20 LAS PALMAS
+21 21 ALGIERS (RSMC)
+22 22 ACMAD
+23 23 MOZAMBIQUE NMC
+24 24 PRETORIA (RSMC)
+25 25 LA R?UNION (RSMC)
+26 26 KHABAROVSK (RSMC)
+27 27 KHABAROVSK (RSMC)
+28 28 NEW DELHI (RSMC)
+29 29 NEW DELHI (RSMC)
+30 30 NOVOSIBIRSK (RSMC)
+31 31 NOVOSIBIRSK (RSMC)
+32 32 TASHKENT (RSMC)
+33 33 JEDDAH (RSMC)
+34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+35 35 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+36 36 BANGKOK
+37 37 ULAN BATOR
+38 38 BEIJING (RSMC)
+39 39 BEIJING (RSMC)
+40 40 SEOUL
+41 41 BUENOS AIRES (RSMC)
+42 42 BUENOS AIRES (RSMC)
+43 43 BRASILIA (RSMC)
+44 44 BRASILIA (RSMC)
+45 45 SANTIAGO
+46 46 BRAZILIAN SPACE AGENCY - INPE
+47 47 COLOMBIA NMC
+48 48 ECUADOR NMC
+49 49 PERU NMC                  50
+50 50 VENEZUELA NMC
+51 51 MIAMI (RSMC)
+52 52 MIAMI RSMC, NATIONAL HURRICANE CENTER
+53 53 MONTREAL (RSMC)
+54 54 MONTREAL (RSMC)
+55 55 SAN FRANCISCO
+56 56 ARINC CENTRE
+57 57 U.S. AIR FORCE AIR FORCE GLOBAL WEATHER CENTRAL
+58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTERE"    Y, CA
+59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, USA
+60 60 UNITED STATES NATIONAL CENTRE FOR ATMOSPHERIC RESEARCH (NCAR"    )
+61 61 SERVICE ARGOS - LANDOVER
+62 62 U.S. NAVAL OCEANOGRAPHIC OFFICE
+63 63 IRI (INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIET"    Y)
+64 64 HONOLULU (RSMC)
+65 65 DARWIN (RSMC)
+66 66 DARWIN (RSMC)
+67 67 MELBOURNE (RSMC)
+69 69 WELLINGTON (RSMC)
+70 70 WELLINGTON (RSMC)
+71 71 NADI (RSMC)
+72 72 SINGAPORE
+73 73 MALAYSIA NMC
+74 74 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+75 75 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+76 76 MOSCOW (RSMC)
+78 78 OFFENBACH (RSMC)
+79 79 OFFENBACH (RSMC)
+80 80 ROME (RSMC)
+81 81 ROME (RSMC)
+82 82 NORRK?PING
+83 83 NORRK?PING
+84 84 TOULOUSE (RSMC)
+85 85 TOULOUSE (RSMC)
+86 86 HELSINKI
+87 87 BELGRADE
+88 88 OSLO
+89 89 PRAGUE
+90 90 EPISKOPI
+91 91 ANKARA
+92 92 FRANKFURT/MAIN)
+93 93 LONDON (WAFC)
+94 94 COPENHAGEN
+95 95 ROTA
+96 96 ATHENS
+97 97 EUROPEAN SPACE AGENCY (ESA)
+98 98 EUROPEAN CENTRE FOR MEDIUM-RANGE WEATHER FORECAST (ECMWF)
+99 99 DE BILT
+100 100 BRAZZAVILLE
+101 101 ABIDJAN
+102 102 LIBYAN ARAB JAMAHIRIYA NMC
+103 103 MADAGASCAR NMC
+104 104 MAURITIUS NMC
+105 105 NIGER NMC
+106 106 SEYCHELLES NMC
+107 107 UGANDA NMC
+108 108 TANZANIA NMC
+109 109 ZIMBABWE NMC
+110 110 HONG-KONG, CHINA
+111 111 AFGHANISTAN NMC          110
+112 112 BAHRAIN NMC
+113 113 BANGLADESH NMC
+114 114 BHUTAN NMC
+115 115 CAMBODIA NMC
+116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA NMC
+117 117 ISLAMIC REPUBLIC OF IRAN NMC
+118 118 IRAQ NMC
+119 119 KAZAKHSTAN NMC
+120 120 KUWAIT NMC
+121 121 KYRGYZ REPUBLIC NMC
+122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC NMC
+123 123 MACAO, CHINA
+124 124 MALDIVES NMC
+125 125 MYANMAR NMC
+126 126 NEPAL NMC
+127 127 OMAN NMC
+128 128 PAKISTAN NMC
+129 129 QATAR NMC
+130 130 REPUBLIC OF YEMEN NMC
+131 131 SRI LANKA NMC
+132 132 TAJIKISTAN NMC
+133 133 TURKMENISTAN NMC
+134 134 UNITED ARAB EMIRATES NMC
+135 135 UZBEKISTAN NMC
+136 136 SOCIALIST REPUBLIC OF VIET NAM NMC
+140 140 BOLIVIA NMC
+141 141 GUYANA NMC
+142 142 PARAGUAY NMC
+143 143 SURINAME NMC
+144 144 URUGUAY NMC                     140
+145 145 FRENCH GUYANA
+146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE
+150 150 ANTIGUA AND BARBUDA NMC
+151 151 BAHAMAS NMC
+152 152 BARBADOS NMC
+153 153 BELIZE NMC
+154 154 BRITISH CARIBBEAN TERRITORIES CENTRE
+155 155 SAN JOSE
+156 156 CUBA NMC
+157 157 DOMINICA NMC
+158 158 DOMINICAN REPUBLIC NMC
+159 159 EL SALVADOR NMC
+160 160 US NOAA/NESDIS
+161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH
+162 162 GUATEMALA NMC
+163 163 HAITI NMC
+164 164 HONDURAS NMC
+165 165 JAMAICA NMC
+166 166 MEXICO
+167 167 NETHERLANDS ANTILLES AND ARUBA NMC
+168 168 NICARAGUA NMC
+169 169 PANAMA NMC
+170 170 SAINT LUCIA NMC
+171 171 TRINIDAD AND TOBAGO NMC
+172 172 FRENCH DEPARTMENTS IN RA IV
+173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA)
+190 190 COOK ISLANDS NMC
+191 191 FRENCH POLYNESIA NMC
+192 192 TONGA NMC
+193 193 VANUATU NMC
+194 194 BRUNEI DARUSSALAM NMC
+195 195 INDONESIA NMC
+196 196 KIRIBATI NMC
+197 197 FEDERATED STATES OF MICRONESIA NMC
+198 198 NEW CALEDONIA NMC
+199 199 NIUE
+200 200 PAPUA NEW GUINEA NMC
+201 201 PHILIPPINES NMC
+202 202 SAMOA NMC
+203 203 SOLOMON ISLANDS NMC
+210 210 FRASCATI (ESA/ESRIN)
+211 211 LANNION
+212 212 LISBOA
+213 213 REYKJAVIK
+214 214 MADRID
+215 215 Z?RICH
+216 216 SERVICE ARGOS TOULOUSE
+217 217 BRATISLAVA
+218 218 BUDAPEST
+219 219 LJUBLJANA            190
+220 220 WARSAW
+221 221 ZAGREB
+222 222 ALBANIA NMC
+223 223 ARMENIA NMC
+224 224 AUSTRIA NMC
+225 225 AZERBAIJAN NMC
+226 226 BELARUS NMC
+227 227 BELGIUM NMC
+228 228 BOSNIA AND HERZEGOVINA NMC
+229 229 BULGARIA NMC
+230 230 CYPRUS NMC
+231 231 ESTONIA NMC
+232 232 GEORGIA NMC
+233 233 DUBLIN
+234 234 ISRAEL NMC
+235 235 JORDAN NMC
+236 236 LATVIA NMC
+237 237 LEBANON NMC
+238 238 LITHUANIA NMC
+239 239 LUXEMBOURG
+240 240 MALTA NMC
+241 241 MONACO
+242 242 ROMANIA NMC
+243 243 SYRIAN ARAB REPUBLIC NMC
+244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA NMC
+245 245 UKRAINE NMC
+246 246 REPUBLIC OF MOLDOVA NMC
+254 254 EUMETSAT OPERATION CENTRE
+255 255 MISSING VALUE               219
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/1090.table b/definitions/bufr/tables/0/wmo/10/codetables/1090.table
new file mode 100644
index 0000000..e1cf86c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/1090.table
@@ -0,0 +1,5 @@
+0 0 LAF (LAGGED-AVERAGE FORECASTING)
+1 1 BREEDING
+2 2 SINGULAR VECTOR
+3 3 MULTIPLE ANALYSIS CYCLE
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/1092.table b/definitions/bufr/tables/0/wmo/10/codetables/1092.table
new file mode 100644
index 0000000..dc9bf1c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/1092.table
@@ -0,0 +1,5 @@
+0 0 UNPERTURBED HIGH-RESOLUTION CONTROL FORECAST
+1 1 UNPERTURBED LOW-RESOLUTION CONTROL FORECAST
+2 2 NEGATIVELY PERTURBED FORECAST
+3 3 POSITIVELY PERTURBED FORECAST
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/11031.table b/definitions/bufr/tables/0/wmo/10/codetables/11031.table
new file mode 100644
index 0000000..fd7a8e0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/11031.table
@@ -0,0 +1,9 @@
+0 0 NIL           IN CLOUD
+1 1 SLIGHT        IN CLOUD
+2 2 MODERATE      IN CLOUD
+3 3 SEVERE        IN CLOUD
+4 4 NIL           IN CLEAR AIR
+5 5 SLIGHT        IN CLEAR AIR
+6 6 MODERATE      IN CLEAR AIR
+7 7 SEVERE        IN CLEAR AIR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/11037.table b/definitions/bufr/tables/0/wmo/10/codetables/11037.table
new file mode 100644
index 0000000..1fed72b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/11037.table
@@ -0,0 +1,30 @@
+0 0 AVE <0.1 PEAK <0.1
+1 1 AVE <0.1 0.1 <= PEAK <0.2
+2 2 0.1 <= AVE <0.2 0.1 <= PEAK <0.2
+3 3 AVE <0.1 0.2 <= PEAK <0.3
+4 4 0.1 <= AVE <0.2 0.2 <= PEAK <0.3
+5 5 0.2 <= AVE <0.3 0.2 <= PEAK <0.3
+6 6 AVE <0.1 0.3 <= PEAK <0.4
+7 7 0.1 <= AVE <0.2 0.3 <= PEAK <0.4
+8 8 0.2 <= AVE <0.3 0.3 <= PEAK <0.4
+9 9 0.3 <= AVE <0.4 0.3 <= PEAK <0.4
+10 10 AVE <0.1 0.4 <= PEAK <0.5
+11 11 0.1 <= AVE <0.2 0.4 <= PEAK <0.5
+12 12 0.2 <= AVE <0.3 0.4 <= PEAK <0.5
+13 13 0.3 <= AVE <0.4 0.4 <= PEAK <0.5
+14 14 0.4 <= AVE <0.5 0.4 <= PEAK <0.5
+15 15 AVE <0.1 0.5 <= PEAK <0.8
+16 16 0.1 <= AVE <0.2 0.5 <= PEAK <0.8
+17 17 0.2 <= AVE <0.3 0.5 <= PEAK <0.8
+18 18 0.3 <= AVE <0.4 0.5 <= PEAK <0.8
+19 19 0.4 <= AVE <0.5 0.5 <= PEAK <0.8
+20 20 0.5 <= AVE <0.8 0.5 <= PEAK <0.8
+21 21 AVE <0.1 0.8 <= PEAK
+22 22 0.1 <= AVE <0.2 0.8 <= PEAK
+23 23 0.2 <= AVE <0.3 0.8 <= PEAK
+24 24 0.3 <= AVE <0.4 0.8 <= PEAK
+25 25 0.4 <= AVE <0.5 0.8 <= PEAK
+26 26 0.5 <= AVE <0.8 0.8 <= PEAK
+27 27 0.8 <= AVE 0.8 <= PEAK
+28 28 NIL              NIL
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/11038.table b/definitions/bufr/tables/0/wmo/10/codetables/11038.table
new file mode 100644
index 0000000..f0c5cce
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/11038.table
@@ -0,0 +1,17 @@
+0 0 MIN < 1
+1 1 1 <= MIN < 2
+2 2 2 <= MIN < 3
+3 3 3 <= MIN < 4
+4 4 4 <= MIN < 5
+5 5 5 <= MIN < 6
+6 6 6 <= MIN < 7
+7 7 7 <= MIN < 8
+8 8 8 <= MIN < 9
+9 9 9 <= MIN < 10
+10 10 10 <= MIN < 11
+11 11 11 <= MIN < 12
+12 12 12 <= MIN < 13
+13 13 13 <= MIN < 14
+14 14 14 <= MIN < 15
+15 15 NO TIMING INFORMATION AVAILABLE
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/11039.table b/definitions/bufr/tables/0/wmo/10/codetables/11039.table
new file mode 100644
index 0000000..1bb26b7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/11039.table
@@ -0,0 +1,16 @@
+0 0 1 <= MIN < 2
+1 1 2 <= MIN < 3
+2 2 3 <= MIN < 4
+4 4 4 <= MIN < 5
+5 5 5 <= MIN < 6
+6 6 6 <= MIN < 7
+7 7 7 <= MIN < 8
+8 8 8 <= MIN < 9
+9 9 9 <= MIN < 10
+10 10 10 <= MIN < 11
+11 11 11 <= MIN < 12
+12 12 12 <= MIN < 13
+13 13 13 <= MIN < 14
+14 14 14 <= MIN < 15
+60 60 NO TIMING INFORMATION AVAILABLE
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/13038.table b/definitions/bufr/tables/0/wmo/10/codetables/13038.table
new file mode 100644
index 0000000..19bc422
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/13038.table
@@ -0,0 +1,4 @@
+0 0 NOT SUPERADIABATIC
+1 1 SUPERADIABATIC
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/13039.table b/definitions/bufr/tables/0/wmo/10/codetables/13039.table
new file mode 100644
index 0000000..c070b1d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/13039.table
@@ -0,0 +1,3 @@
+0 0 SEA ICE
+1 1 SNOW ON LAND
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/13040.table b/definitions/bufr/tables/0/wmo/10/codetables/13040.table
new file mode 100644
index 0000000..8e1dcfe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/13040.table
@@ -0,0 +1,9 @@
+0 0 LAND
+1 1 RESERVED
+2 2 NEAR COAST
+3 3 ICE
+4 4 POSSIBLE ICE
+5 5 OCEAN
+6 6 COAST
+7 7 DESERT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/13041.table b/definitions/bufr/tables/0/wmo/10/codetables/13041.table
new file mode 100644
index 0000000..d53bf87
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/13041.table
@@ -0,0 +1,10 @@
+1 1 A
+2 2 A-B
+3 3 B
+4 4 B-C
+5 5 C
+6 6 D
+7 7 E
+8 8 F
+9 9 G
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/13051.table b/definitions/bufr/tables/0/wmo/10/codetables/13051.table
new file mode 100644
index 0000000..70807eb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/13051.table
@@ -0,0 +1,8 @@
+0 0 SMALLER THAN ANY VALUE IN THE 30 YEARS PERIOD
+1 1 IN THE FIRST QUINTILE
+2 2 IN THE SECOND QUINTILE
+3 3 IN THE THIRD QUINTILE
+4 4 IN THE FOURTH QUINTILE
+5 5 IN THE FIFTH QUINTILE
+6 6 GREATER THAN ANY VALUE IN THE 30 YEAR PERIOD
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/13056.table b/definitions/bufr/tables/0/wmo/10/codetables/13056.table
new file mode 100644
index 0000000..02eeb56
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/13056.table
@@ -0,0 +1,10 @@
+0 0 NO PRECIPITATION
+1 1 LIGHT INTERMITTENT
+2 2 MODERATE INTERMITTENT
+3 3 HEAVY INTERMITTENT
+4 4 VERY HEAVY INTERMITTENT
+5 5 LIGHT CONTINUOUS
+6 6 MODERATE CONTINUOUS
+7 7 VERY HEAVY CONTINUOUS
+9 9 VARIABLE-ALTERNATIVELY LIGHT AND HEAVY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/13057.table b/definitions/bufr/tables/0/wmo/10/codetables/13057.table
new file mode 100644
index 0000000..9c8571c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/13057.table
@@ -0,0 +1,11 @@
+0 0 NO PRECIPITATION
+1 1 WITHIN THE LAST HOUR
+2 2 1 TO 2 HOURS AGO
+3 3 2 TO 3 HOURS AGO
+4 4 3 TO 4 HOURS AGO
+5 5 4 TO 5 HOURS AGO
+6 6 5 TO 6 HOURS AGO
+7 7 6 TO 8 HOURS AGO
+8 8 8 TO 10 HOURS AGO
+9 9 MORE THAN 10 HOURS AHO
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/15025.table b/definitions/bufr/tables/0/wmo/10/codetables/15025.table
new file mode 100644
index 0000000..acb0f2b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/15025.table
@@ -0,0 +1,2 @@
+0 0 OZONE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/19001.table b/definitions/bufr/tables/0/wmo/10/codetables/19001.table
new file mode 100644
index 0000000..2b92574
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/19001.table
@@ -0,0 +1,7 @@
+0 0 DEPRESSION OR LOW (EXTRATROPICAL)
+1 1 TROPICAL DEPRESSION
+2 2 TROPICAL STORM
+3 3 SEVERE TROPICAL STORM
+4 4 TYPHOON
+10 10 DUST/SANDSTORM
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/19008.table b/definitions/bufr/tables/0/wmo/10/codetables/19008.table
new file mode 100644
index 0000000..57395cd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/19008.table
@@ -0,0 +1,5 @@
+0 0 RESERVED
+1 1 SHALLOW (TOP OF CIRCULATION BELOW 700-HPA LEVEL
+2 2 MEDIUM(TOP BETWEEN 700-HPA AND 400-HPA)
+3 3 DEEP(TOP ABOVE 400-HPA LEVEL
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/19010.table b/definitions/bufr/tables/0/wmo/10/codetables/19010.table
new file mode 100644
index 0000000..03e331e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/19010.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 MINIMUM VALUE OF SEA LEVEL PRESSURE
+2 2 MAXIMUM VALUE OF 850 HPA RELATIVE VORTICITY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20003.table b/definitions/bufr/tables/0/wmo/10/codetables/20003.table
new file mode 100644
index 0000000..b6227bc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20003.table
@@ -0,0 +1,250 @@
+0 0 CLOUD DEVELOPMENT NOT OBSERVED OR NOT OBSERVABLE
+1 1 CLOUDS GENERALLY DISSOLVING OR BECOMING LESS DEVELOPED
+2 2 STATE OF SKY ON THE WHOLE UNCHANGED
+3 3 CLOUDS GENERALLY FORMING OR DEVELOPING
+4 4 VISIBILITY REDUCED BY SMOKE, E.G. VELDT OR FOREST FIRES, IN"    DUSTRIAL SMOKE OR VOLCANIC ASHES
+5 5 HAZE
+6 6 WIDESPREAD DUST IN SUSPENSION IN THE AIR, NOT RAISED BY WIND"     AT OR NEAR THE STATION AT THE TIME OF OBSERVATION
+7 7 DUST OR SEND RAISED BY WIND AT OR NEAR THE STATION AT THE TI"    ME OF OBSERVATION, BUT NO WELL-DEVELOPED DUST WHRIL(S) OR SA"    ND WHRIL(S), AND NO 
+8 8 WELL-DEVELOPED DUST WHRIL(S) OR SAND WHRILS SEEN AT OR NEAR"    THE STATION DURING THE PRECEDING HOUR OR AT THE SAME TIME OF"     OBSERVATION, BUT NO 
+9 9 DUSTSTORM OR SANDSTORM WITHIN SIGHT AT THE TIME OF OBSERVATI"    ON, OR AT THE STATION DURING THE PRECEDING HOR
+10 10 MIST
+11 11 PACHES SHALLOW FOG OR ICE AT THE STATION, WHETHER ON LAND OR"     SEA, NOT DEEPER THAN 2 METRES ON LAND OR 10 METRES AT SEA
+12 12 MORE OR LESS CONTINUOUS SHALLOW FOG OR ICE AT THE STATION,"    WHETHER ON LAND OR SEA, NOT DEEPER THAN 2 METRES ON LAND OR"    10 METRES AT SEA
+13 13 LIGHTNING VISIBLE, NO THUNDER HEARD
+14 14 PRECIPITATION WITHIN SIGHT, NOT REACHING THE GROUND OR THE"    SURFACE OF THE SEA
+15 15 PRECIPITATION WITHIN SIGHT, REACHING THE GROUND OR THE SURFA"    CE OF THE SEA, BUT DISTANT, I.E. ESTIMATED TO BE MORE THAN"    5 KM FROM THE STATION
+16 16 PRECIPITATION WITHIN SIGHT, REACHING THE GROUND OR THE SURFA"    CE OF THE SEA, NEAR TO, BUT NOT AT THE STATION
+17 17 THUNDERSTORM, BUT NO PRECIPITATION AT THE TIME OF OBSERVATIO"    N
+18 18 SQUALLS AT OR WITHIN SIGHT OF THE STATION DURING THE PRECEDI"    NG HOUR OR AT THE TIME OF OBSERVATION
+19 19 FUNNEL CLOUD(S) AT OR WITHIN SIGHT OF THE STATION DURING THE"     PRECEDING HOUR OR AT THE TIME OF OBSERVATION
+20 20 DRIZZEL (NOT FREEZING) OR SNOW GRAINS NOT FALLING AS SHOWERS"    ; DURING THE PRECEDING HOUR BUT NOT  AT THE TIME OF OBSERVAT"    IONS
+21 21 RAIN (NOT FREEZING) NOT FALLING AS SHOWER(S); DURING THE PRE"    ECEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+22 22 SNOW NOT FALLING AS SHOWER(S); DURING THE PRECEDING HOUR BUT"     NOT AT THE TIME OF OBSERVATION
+23 23 RAIN AND SNOW OR ICE PELLETS NOT FALLING AS SHOWER(S); DURIN"    G THE PRECEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+24 24 FREEZING DRIZZEL OR FREEZING RAIN NOT FALLING AS SHOWER(S);"    DURING THE PRECEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+25 25 SHOWER(S) OF RAIN; DURING THE PRECEDING HOUR BUT NOT AT THE"    TIME OF OBSERVATION
+26 26 SHOWER(S) OF SNOW, OR OF RAIN AND SNOW; DURING THE PRECEDING"     HOUR BUT NOT AT THE TIME OF OBSERVATION
+27 27 SHOWER(S) OF HAIL, OR OF RAIN AND HAIL; DURING THE PRECEDING"     HOUR BUT NOT AT THE TIME OF OBSERVATION
+28 28 FOG OR ICE FOG; DURING THE PRECEDING HOUR BUT NOT AT THE TIM"    E OF OBSERVATION
+29 29 THUNDERSTORM (WITH OR WITHOUT PRECIPITATION); DURING THE PRE"    CEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+30 30 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM HAS DECREASED DURI"    NG THE PRECEDING HOURS
+31 31 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM NO APPRECIABLE CHA"    NGE DURING THE PRECEDING HOUR
+32 32 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM HAS BEGUN OR HAS I"    NCEASED DURING THE PRECEDING HOUR
+33 33 SEVERE DUSTSTORM OR SANDSTORM  HAS DECREASED DURING THE PREC"    EDING HOURS
+34 34 SEVERE DUSTSTORM OR SANDSTORM NO APPRECIABLE CHANGE DURING T"    HE PRECEDING HOUR
+35 35 SEVERE DUSTSTORM OR SANDSTORM HAS BEGUN OR HAS INCREASED DUR"    ING THE PRECEDING HOUR
+36 36 SLIGHT OR MODERATE DRIFTING SNOW GENERALLY LOW (BELOW EYE LE"    VEL)
+37 37 HEAVY DRIFTING SNOW  GENERALY LOW (BELOW EYE LEVEL)
+38 38 SLIGHT OR MODERATE BLOWING SNOW GENERALLY HIGH (ABOVE EYE LE"    VEL)
+39 39 HEAVY BLOWING SNOW  GENERALY HIGH (ABOVE EYE LEVEL)
+40 40 FOG OR ICE FOG AT A DISTANCE AT THE TIME OF OBSERVATION, BUT"     NOT AT THE STATION DURING THE PRECEDING HOUR, THE FOG OR IC"    E FOG EXTENDING TO A
+41 41 FOG OR ICE FOG IN PATCHES
+42 42 FOG OR ICE FOG, SKY VISIBLE,HAS BECOME THINNER DURING THE PR"    ECEDING HOUR
+43 43 FOG OR ICE FOG, SKY INVISIBLE,HAS BECOME THINNER DURING THE"    PRECEDING HOUR
+44 44 FOG OR ICE FOG, SKY   VISIBLE,NO APPRECIABLE CHANGE DURING T"    HE PRECEDING HOUR
+45 45 FOG OR ICE FOG, SKY INVISIBLE,NO APPRECIABLE CHANGE DURING T"    HE PRECEDING HOUR
+46 46 FOG OR ICE FOG, SKY   VISIBLE,HAS BEGUN OR HAS BECOME THICKE"    R DURING THE PRECEDING HOUR
+47 47 FOG OR ICE FOG, SKY INVISIBLE,HAS BEGUN OR HAS BECOME THICKE"    R DURING THE PRECEDING HOUR
+48 48 FOG, DEPOSITING RIME, SKY VISIBLE
+49 49 FOG, DEPOSITING RIME, SKY INVISIBLE
+50 50 DRIZZLE, NOT FREEZING, INTERMITTENT;SLIGHT AT TIME OF OBSERV"    ATION
+51 51 DRIZZLE, NOT FREEZING, CONTINUOUS  ;SLIGHT AT TIME OF OBSERV"    ATION
+52 52 DRIZZLE, NOT FREEZING, INTERMITTENT;MODERATE AT TIME OF OBSE"    RVATION
+53 53 DRIZZLE, NOT FREEZING, CONTINUOUS  ;MODERATE AT TIME OF OBSE"    RVATION
+54 54 DRIZZLE, NOT FREEZING, INTERMITTENT;HEAVY (DENSE) AT THE TIM"    E OF OBSERVATION
+55 55 DRIZZLE, NOT FREEZING, CONTINUOUS  ;HEAVY (DENSE) AT THE TIM"    E OF OBSERVATION
+56 56 DRIZZLE, FREEZING, SLIGHT
+57 57 DRIZZLE, FREEZING, MODERATE OR HEAVY (DENSE)
+58 58 DRIZZLE AND RAIN, SLIGHT
+59 59 DRIZZLE AND RAIN, MODERATE OR HEAVY
+60 60 RAIN,NOT FREEZING,INTERMITTENT;SLIGHT AT TIME OF OBSERVATION
+61 61 RAIN,NOT FREEZING,CONTINUOUS  ;SLIGHT AT TIME OF OBSERVATION
+62 62 RAIN,NOT FREEZING,INTERMITTENT;MODERATE AT TIME OF OBSERVATI"    ON
+63 63 RAIN,NOT FREEZING,CONTINUOUS  ;MODERATE AT TIME OF OBSERVATI"    ON
+64 64 RAIN, NOT FREEZING, INTERMITTENT;HEAVY AT TIME OF OBSERVATIO"    ON
+65 65 RAIN, NOT FREEZING, CONTINUOUS;HEAVY AT TIME OF OBSERVATION
+66 66 RAIN, FREEZING, SLIGHT
+67 67 RAIN, FREEZING, MODERATE OR HEAVY
+68 68 RAIN OR DRIZZLE AND SNOW, LIGHT
+69 69 RAIN OR DRIZZLE AND SNOW, MODERATE OR HEAVY
+70 70 INTERMITTENT FALL OF SNOWFLAKES, SLIGHT AT TIME OF OBSERVATI"    ON
+71 71 CONTINUOUS   FALL OF SNOWFLAKES, SLIGHT AT TIME OF OBSERVATI"    ON
+72 72 INTERMITTENT FALL OF SNOWFLAKES, MODERATE AT TIME OF OBSERVA"    TION
+73 73 CONTINUOUS   FALL OF SNOWFLAKES, MODERATE AT TIME OF OBSERVA"    TION
+74 74 INTERMITTENT FALL OF SNOWFLAKES, HEAVY AT TIME OF OBSERVATIO"    ONS
+75 75 CONTINUOUS   FALL OF SNOWFLAKES, HEAVY AT TIME OF OBSERVATIO"    ONS
+76 76 DIAMOND DUST (WITH OR WITHOUT FOG)
+77 77 SNOW GRAINS (WITH OR WITHOUT FOG)
+78 78 ISOLATED STAR-LIKE SNOW CRYSTALS (WITH OR WITHOUT FOG)
+79 79 ICE PELLETS
+80 80 RAIN SHOWER(S), SLIGHT
+81 81 RAIN SHOWER(S), MODERATE OR HEAVY
+82 82 RAIN SHOWER(S), VIOLENT
+83 83 SHOWER(S) OF RAIN AND SNOW MIXED, SLIGHT
+84 84 SHOWER(S) OF RAIN AND SNOW MIXED, MODERATE OR HEAVY
+85 85 SNOW SHOWER(S), SLIGHT
+86 86 SNOW SHOWER(S), MODERATE OR HEAVY
+87 87 SHOWER(S) OF SNOW PELLETS OR SMALL HAIL, WITH OR WITHOUT RAI"    N OR RAIN AND SNOW MIXED, SLIGHT
+88 88 SHOWER(S) OF SNOW PELLETS OR SMALL HAIL, WITH OR WITHOUT RAI"    N OR RAIN AND SNOW MIXED, MODERATE OR HEAVY
+89 89 SHOWER(S) OF HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIX"    ED, NOT ASSOCIATED WITH THUNDER, SLIGHT
+90 90 SHOWER(S) OF HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIX"    ED, NOT ASSOCIATED WITH THUNDER, MODERATE OR HEAVY
+91 91 SLIGHT RAIN AT TIME OF OBSERVATION, THUNDERSTORM DURING THE"    PRECEDING HOUR BUT NOT AT TIME OF OBSERVATION
+92 92 MODERATE OR HEAVY RAIN AT TIME OF OBSERVATION, THUNDERSTORM"    DURING THE PRECEDING HOUR BUT NOT AT TIME OF OBSERVATION
+93 93 SLIGHT SNOW, OR RAIN AND SNOW MIXED OR HAIL AT TIME OF OBSER"    VATION, THUNDERSTORM DURING THE PRECEDING HOUR BUT NOT AT TI"    ME OF OBSERVATION
+94 94 MODERATE OR HEAVY SNOW, OR RAIN AND SNOW MIXED OR HAIL AT TI"    ME OF OBSERVATION, THUNDERSTORM DURING PRECEDING HOUR BUT NO"    T AT TIME OF OBSERVA
+95 95 THUNDERSTORM, SLIGHT OR MODERATE, WITHOUT HAIL, BUT WITH RAI"    N AND/OR SNOW AT TIME OF OBSERVATION, THUNDERSTORM DURING TH"    E PRECEDING HOUR BUT
+96 96 THUNDERSTORM, SLIGHT OR MODERATE,WITH HAIL AT TIME OF OBSERV"    ATION, THUNDERSTORM AT TIME OF OBSERVATION
+97 97 THUNDERSTORM, HEAVY, WITHOUT HAIL BUT WITH RAIN AND/OR SNOW"    AT TIME OF OBSERVATION, THUNDERSTORM AT TIME OF OBSERVATION
+98 98 THUNDERSTORM COMBINED WITH DUSTSTORM OR SANDSTORM AT TIME OF"     OBSERVATION, THUNDERSTORM AT TIME OF OBSERVATION
+99 99 THUNDERSTORM, HEAVY, WITH HAIL AT TIME OF OBSERVATION, THUND"    ERSTORM AT TIME OF OBSERVATION
+100 100 NO SIGNIFICANT WEATHER OBSERVED
+101 101 CLOUDS GENERALLY DISSOLVING OR BECOMING LESS DEVELOPED DURIN"    G THE PAST HOUR
+102 102 STATE OF SKY ON THE WHOLE UNCHANGED DURING THE PAST HOUR
+103 103 CLOUDS GENERALLY FORMING OR DEVELOPING DURING THE PAST HOUR
+104 104 HAZE OR SMOKE, OR DUST IN SUSPENSION IN THE AIR, VISIBILITY"    EQUAL TO, OR GREATER THAN 1KM
+105 105 HAZE OR SMOKE, OR DUST IN SUSPENSION IN THE AIR, VISIBILITY"    LESS THAN 1KM
+110 110 MIST
+111 111 DIAMOND DUST
+112 112 DISTANT LIGHTING
+118 118 SQUALLS
+120 120 FOG
+121 121 PRECIPITATION
+122 122 DRIZZLE (NOT FREEZING) OR SNOW GRAINS
+123 123 RAIN (NOT FREEZING)
+124 124 SNOW
+125 125 FREEZING DRIZZLE OR FREEZING RAIN
+126 126 THUNDERSTORM (WITH OR WITHOUT PRECIPITATION)
+127 127 BLOWING OR DRIFTING SNOW OR SAND
+128 128 BLOWING OR DRIFTING SNOW OR SAND, VISIBILITY EQUAL TO, OR GR"    ATER THAN, 1KM
+129 129 BLOWING OR DRIFTING SNOW OR SAND, VISIBILITY LESS THAN 1 KM
+130 130 FOG
+131 131 FOG OR ICE FOG, IN PATCHES
+132 132 FOG OR ICE FOG, HAS BECOME THINNER DURING PAST HOUR
+133 133 FOG OR ICE FOG, NO APPRECIABLE CHANGE DURING PAST HOUR
+134 134 FOG OR ICE FOG, HAS BECUNOR BECOME THICKER DURING PAST HOUR
+135 135 FOG, DEPOSITION RIME
+140 140 PRECIPITATION
+141 141 PRECIPITATION SLIGHT OR MODERATE
+142 142 PRECIPITATION, HEAVY
+143 143 LIQUID PRECIPITATION, SLIGHT OR MODERATE
+144 144 LIQUID PRECIPITATION, HEAVY
+145 145 SOLID PRECIPITATION, SLIGHT OR MODERATE
+146 146 SOLID PRECIPITATION, HEAVY
+147 147 FREEZING PRECIPITATION, SLIGHT OR MODERATE
+148 148 FREEZING PRECIPITATION, HEAVY
+150 150 DRIZZLE
+151 151 DRIZZLE, NOT FREEZING, SLIGHT
+152 152 DRIZZLE, NOT FREEZING, MODERATE
+153 153 DRIZZLE, NOT FREEZING, HEAVY
+154 154 DRIZZLE, FREEZING, SLIGHT
+155 155 DRIZZLE, FREEZING, MODERATE
+156 156 DRIZZLE, FREEZING, HEAVY
+157 157 DRIZZLE AND RAIN, SLIGHT
+158 158 DRIZZLE AND RAIN, MODERATE OR HEAVY
+160 160 RAIN
+161 161 RAIN, NOT FREEZING, SLIGHT
+162 162 RAIN, NOT FREEZING, MODERATE
+163 163 RAIN, NOT FREEZING, HEAVY
+164 164 RAIN, FREEZING, SLIGHT
+165 165 RAIN, FREEZING, MODERATE
+166 166 RAIN, FREEZING, HEAVY
+167 167 RAIN (OR DRIZZLE) AND SNOW, SLIGHT
+168 168 RAIN (OR DRIZZLE) AND SNOW, MODERATE AND HEAVY
+170 170 SNOW
+171 171 SNOW, SLIGHT
+172 172 SNOW, MODERATE
+173 173 SNOW, HEAVY
+174 174 ICE PELLETS, SLIGHT
+175 175 ICE PELLETS, MODERATE
+176 176 ICE PELLETS, HEAVY
+180 180 SHOWER(S) OR INTERMITTENT PRECIPITATION
+181 181 RAIN SHOWER(S) OR INTERMITTENT RAIN, SLIGHT
+182 182 RAIN SHOWER(S) OR INTERMITTENT RAIN, MODERATE
+183 183 RAIN SHOWER(S) OR INTERMITTENT RAIN, HEAVY
+184 184 RAIN SHOWER(S) OR INTERMITTENT RAIN, VIOLENT
+185 185 SNOW SHOWER(S) OR INTERMITTENT SNOW, SLIGHT
+186 186 SNOW SHOWER(S) OR INTERMITTENT SNOW, MODERATE
+187 187 SNOW SHOWER(S) OR INTERMITTENT SNOW, HEAVY
+190 190 THUNDERSTORM
+191 191 THUNDERSTORM, SLIGHT OR MODERATE, WITH NO PRECIPITATION
+192 192 THUNDERSTORM, SLIGHT OR MODERATE, WITH RAIN SHOWERS AND/OR S"    NOW SHOWERS
+193 193 THUNDERSTORM, SLIGHT OR MODERATE, WITH HAIL
+194 194 THUNDERSTORM, HEAVY, WITH NO PRECIPITATION
+195 195 THUNDERSTORM, HEAVY, WITH RAIN SHOWERS AND/OR SNOW SHOWERS
+196 196 THUNDERSTORM, HEAVY, WITH HAIL
+204 204 VOLCANIC ASH SUSPENDED IN THE AIR ALOFT
+206 206 THICK DUST HAZE, VISIBILITY LESS THAN 1 KM
+207 207 BLOWING SPRAY AT THE STATION
+208 208 DRIFTING DUST (SAND)
+209 209 WALL OF DUST OR SAND IN DISTANCE (LIKE HABOOB)
+210 210 SNOW HAZE
+211 211 WHITEOUT
+213 213 LIGHTING, CLOUD TO SURFACE
+217 217 DRY THUNDERSTORM
+219 219 TORNADO CLOUD (DESTRUCTIVE AT OR WITHIN SIGHT OF THE STATION"    DURING PRECEDING HOUR OR AT THE TIME OF OBSERVATION
+220 220 DEPOSITION OF VOLCANIC ASH
+221 221 DEPOSITION OF DUST OR SAND
+222 222 DEPOSITION OF DEW
+223 223 DEPOSITION OF WET SNOW
+224 224 DEPOSITION OF SOFT RIME
+225 225 DEPOSITION OF HARD RIME
+226 226 DEPOSITION OF HOAR FROST
+227 227 DEPOSITION OF GLAZE
+228 228 DEPOSITION OF ICE CRUST (ICE SLICK)
+230 230 DUSTSTORM OR SANDSTORM WITH TEMPERATURE BELOW 0 C DEGREES
+239 239 BLOWING SNOW, IMPOSSIBLE TO DETERMINE WHETHER SNOW IS FALLIN"    G OR NOT
+241 241 FOG ON SEA
+242 242 FOG IN VALLEYS
+243 243 ARCTIC OR ANTARCTIC SEA SMOKE
+244 244 STEAM FOG (SEA,LAKE OR RIVER)
+245 245 STEAM FOG (LAND)
+246 246 FOG OVER ICE OR SNOW COVER
+247 247 DENCE FOG VISIBILITY 60-90 M
+248 248 DENCE FOG VISIBILITY 30-60 M
+249 249 DENCE FOG VISIBILITY LESS THAN 30 M
+250 250 DRIZZLE, RATE OF FALL  LESS THAN 0.10 MM/H
+251 251 DRIZZLE, RATE OF FALL   0.10 -  .19  MM/H
+252 252 DRIZZLE, RATE OF FALL   0.20 -  .39  MM/H
+253 253 DRIZZLE, RATE OF FALL   0.40 -  .79  MM/H
+254 254 DRIZZLE, RATE OF FALL   0.80 - 1.59  MM/H
+255 255 DRIZZLE, RATE OF FALL   1.60 - 3.19  MM/H
+256 256 DRIZZLE, RATE OF FALL   3.20 - 6.39  MM/H
+257 257 DRIZZLE, RATE OF FALL   6.40 MM/H  OR MORE
+259 259 DRIZZLE AND SNOW
+260 260 RAIN, RATE OF FALL  LESS THAN 1.0 MM/H
+261 261 RAIN, RATE OF FALL   1.0  -  1.9   MM/H
+262 262 RAIN, RATE OF FALL   2.0  -  3.9   MM/H
+263 263 RAIN, RATE OF FALL   4.0  -  7.9   MM/H
+264 264 RAIN, RATE OF FALL   8.0  - 15.9   MM/H
+265 265 RAIN, RATE OF FALL  16.0  - 31.9   MM/H
+266 266 RAIN, RATE OF FALL  32.0  - 63.9   MM/H
+267 267 RAIN, RATE OF FALL  64.0  MM/H  OR MORE
+270 270 SNOW, RATE OF FALL  LESS THAN 1.0 CM/H
+271 271 SNOW, RATE OF FALL   1.0  -  1.9   CM/H
+272 272 SNOW, RATE OF FALL   2.0  -  3.9   CM/H
+273 273 SNOW, RATE OF FALL   4.0  -  7.9   CM/H
+274 274 SNOW, RATE OF FALL   8.0  - 15.9   CM/H
+275 275 SNOW, RATE OF FALL  16.0  - 31.9   CM/H
+276 276 SNOW, RATE OF FALL  32.0  - 63.9   CM/H
+277 277 SNOW, RATE OF FALL  64.0  CM/H  OR MORE
+278 278 SNOW OR ICE CRISTAL PRECIPITATION FROM A CLEAR SKY
+279 279 WET SNOW, FREEZING ON CONTACT
+280 280 PRECIPITATION OF RAIN (WW= 87-99)
+281 281 PRECIPITATION OF RAIN,FREEZING (WW= 80-82)
+282 282 PRECIPITATION OF RAIN AND SNOW MIXED
+283 283 PRECIPITATION OF SNOW
+284 284 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL
+285 285 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH RAIN
+286 286 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH RAIN AND S"    NOW MIXED
+287 287 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH SNOW
+288 288 PRECIPITATION OF HAIL
+289 289 PRECIPITATION OF HAIL, WITH RAIN
+290 290 PRECIPITATION OF HAIL, WITH RAIN AND SNOW MIXED
+291 291 PRECIPITATION OF HAIL, WITH SNOW
+292 292 SHOWER(S) OR THUNDERSTORM OVER SEA
+293 293 SHOWER(S) OR THUNDERSTORM OVER MOUNTAINS
+508 508 NO SIGNIFICANT PHENOMENA TO REPORT, PRESENT AND PAST WEATHER"     OMITTED
+509 509 NOT OBSERVED, NO DATA AVAILABLE, PRESENT AND PAST WEATHER OM"    ITTED
+510 510 PRESENT AND PAST WEATHER MISSING, BUT EXPECTED
+511 511 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20004.table b/definitions/bufr/tables/0/wmo/10/codetables/20004.table
new file mode 100644
index 0000000..bd060a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20004.table
@@ -0,0 +1,21 @@
+0 0 CLOUD COVERING 1/2 OR LESS OF THE SKY THROUGHOUT THE APPROPP"    RIATE PERIOD
+1 1 CLOUD COVERING MORE THAN 1/2 OF THE SKY DURING PART OF THE A"    PPROPRIATE PERIOD AND COVERING 1/2 OR LESS DURING PART OF TH"    E PERIOD
+2 2 CLOUD COVERING MORE THAN 1/2 OF THE SKY THROUGHOUT THE APPRP"    PRIATE PERIOD
+3 3 SANSTORM, DUSTSTORM OR BLOWING SNOW
+4 4 FOG OR ICE OR THICK HAZE
+5 5 DRIZZLE
+6 6 RAIN
+7 7 SNOW, OR RAIN AND SNOW MIXED
+8 8 SHOWER(S)
+9 9 THUNDERSTORM(S) WITH OR WITHOUT PRECIPITATION
+10 10 NO SIGNIFICANT WEATHER OBSERVED
+11 11 VISIBILITY REDUCED
+12 12 BLOWING PHENOMENA, VISIBILITY REDUCED
+13 13 FOG
+14 14 PRECIPITATION
+15 15 DRIZZLE
+16 16 RAIN
+17 17 SNOW OR ICE PELLETS
+18 18 SHOWERS OR INTERMITTENT PRECIPITATION
+19 19 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20005.table b/definitions/bufr/tables/0/wmo/10/codetables/20005.table
new file mode 100644
index 0000000..bd060a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20005.table
@@ -0,0 +1,21 @@
+0 0 CLOUD COVERING 1/2 OR LESS OF THE SKY THROUGHOUT THE APPROPP"    RIATE PERIOD
+1 1 CLOUD COVERING MORE THAN 1/2 OF THE SKY DURING PART OF THE A"    PPROPRIATE PERIOD AND COVERING 1/2 OR LESS DURING PART OF TH"    E PERIOD
+2 2 CLOUD COVERING MORE THAN 1/2 OF THE SKY THROUGHOUT THE APPRP"    PRIATE PERIOD
+3 3 SANSTORM, DUSTSTORM OR BLOWING SNOW
+4 4 FOG OR ICE OR THICK HAZE
+5 5 DRIZZLE
+6 6 RAIN
+7 7 SNOW, OR RAIN AND SNOW MIXED
+8 8 SHOWER(S)
+9 9 THUNDERSTORM(S) WITH OR WITHOUT PRECIPITATION
+10 10 NO SIGNIFICANT WEATHER OBSERVED
+11 11 VISIBILITY REDUCED
+12 12 BLOWING PHENOMENA, VISIBILITY REDUCED
+13 13 FOG
+14 14 PRECIPITATION
+15 15 DRIZZLE
+16 16 RAIN
+17 17 SNOW OR ICE PELLETS
+18 18 SHOWERS OR INTERMITTENT PRECIPITATION
+19 19 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20008.table b/definitions/bufr/tables/0/wmo/10/codetables/20008.table
new file mode 100644
index 0000000..646997b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20008.table
@@ -0,0 +1,19 @@
+0 0 SKY CLEAR
+1 1 FEW
+2 2 SCATTERED
+3 3 BROKEN
+4 4 OVERCAST
+5 5 RESERVED
+6 6 SCATTERED/BROKEN (MANY FORECASTS USE SCATTERED/BROKEN
+7 7 BROKEN/OVERCAST (BROKEN/OVERCAST FOLLOWED BY CLOUD TYPE(S))
+8 8 ISOLATED (USED ON AVIATION CHARTS TO DESCRIBE THE CLOUD TYPE"     CB)
+9 9 ISOLATED EMBEDDED (USED ON AVIATION CHARTS TO DESCRIBE THE C"    LOUD TYPE CB)
+10 10 OCCASIONAL (USED ON AVIATION CHARTS TO DESCRIBE THE CLOUD TY"    PE CB)
+11 11 OCCASIONAL EMBEDDED (USED ON AVIATION CHARTS TO DESCRIBE THE"     CLOUD TYPE CB)
+12 12 FREQUENT (USED ON AVIATION CHARTS TO DESCRIBE THE CLOUD TYPE"     CB)
+13 13 DENSE (USED ON AVIATION CHARTS TO DESCRIBE CLOUD THAT WOULD"    CAUSE SUDDEN CHANGES IN VISIBILITY (LESS THAN 1000M)
+14 14 LAYERS
+15 15 OBSCURED (OBSC)
+16 16 EMBEDDED (EMBD)
+17 17  FREQUENT EMBEDDED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20009.table b/definitions/bufr/tables/0/wmo/10/codetables/20009.table
new file mode 100644
index 0000000..084630c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20009.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 NSC MIL SIGNIFICANT CLOUD
+2 2 CAVOK
+3 3 SKC SKY CLEAR
+4 4 NSW NIL SIGNIFICANT WEATHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2001.table b/definitions/bufr/tables/0/wmo/10/codetables/2001.table
new file mode 100644
index 0000000..8259eeb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2001.table
@@ -0,0 +1,4 @@
+0 0 AUTOMATIC STATION
+1 1 MANNED STATION
+2 2 HYBRID, BOTH MANNED AND AUTOMATIC
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20011.table b/definitions/bufr/tables/0/wmo/10/codetables/20011.table
new file mode 100644
index 0000000..740be7b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20011.table
@@ -0,0 +1,11 @@
+0 0 0                              0
+1 1 1 OKTA OR LESS, BUT NOT ZERO   1/10 OR LESS, BUT NOT ZERO
+2 2 2 OKTAS                        2/10 - 3/10
+3 3 3 OKTAS                        4/10
+4 4 4 OKTAS                        5/10
+5 5 5 OKTAS                        6/10
+6 6 6 OKTAS                        7/10 - 8/10
+7 7 7 OKTAS OR MORE,BUT NOT 8 OKTAS9/10 OR MORE, BUT NOT 10/10
+8 8 8 OKTAS                        10/10
+9 9 SKY OBSCURED BY FOG AND OR OTHER METEOROLOGICAL PHENOMENA
+15 15 CLOUD COVE IS INDISCERNIBLE FOR REASONS OTHER THAN FOG OR OT"    HER METEOROLOGICAL PHENOMENA, OR OBSERVATION IS NOT MADE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20012.table b/definitions/bufr/tables/0/wmo/10/codetables/20012.table
new file mode 100644
index 0000000..ff14028
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20012.table
@@ -0,0 +1,45 @@
+0 0 CIRRUS (CI)...............CI
+1 1 CIRROCUMULUS (CC).........CC
+2 2 CIRROSTRATUS (CS).........CS
+3 3 ALTOCUMULUS  (AC).........AC
+4 4 ALTOSTRATUS  (AS).........AS
+5 5 NIMBOSTRATUS (NS).........NS
+6 6 STRATOCUMULUS(SC).........SC
+7 7 STRATUS      (ST).........ST
+8 8 CUMULUS      (CU).........CU
+9 9 CUMULONIMBUS (CB).........CB
+10 10 NO CH CLOUDS
+11 11 CIRRUS FIBRATUS, SOMETIMES UNCINUS, NOT PROGRESSIVELY INADIN"    G THE SKY
+12 12 CIRRUS SPISSATUS, IN PATCHES OR ENTANGLED SHEAVES, WHICH USU"    ALLY DO NOT INCREASE AND SOMETIMES SEEM TO BE THE REMAINS OF"     THE UPPER PART OF A
+13 13 CIRRUS SPISSATUS CUMULONIMBOGENITUS
+14 14 CIRRUS UNCINUS OR FIBRATUS,OR BOTH, PROGRESSIVELY INVADING T"    HE SKY ; THEY GENERALLY THICKEN AS A WHOLE
+15 15 CIRRUS (OFTEN IN BANDS) AND CIRROSTRATUS, OR CIRROSTRATUS AL"    ONE, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN"    ASA WHOLE, BUT THE CO
+16 16 CIRRUS (OFTEN IN BANDS) AND CIRROSTRATUS, OR CIRROSTRATUS AL"    ONE, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN"    ASA WHOLE, BUT THE CO
+17 17 CIRROSTRATUS COVERING THE WHOLE SKY
+18 18 CIRROSTRATUS NOT PROGRESSIVELY INVADING THE SKY AND NOT ENTI"    RELY COVERING IT
+19 19 CIRROCUMULUS ALONE, OR CIRROCUMULUS PREDOMINANT AMONG THE CH"     CLOUDS
+20 20 NO CM CLOUDS
+21 21 ALTOSTRATUS TRANSLUCIDUS
+22 22 ALTOSTRATUS OPACUS OR NIMBOSTRATUS
+23 23 ALTOCUMULUS TRANSLUCIDUS AT A SINGLE LEVEL
+24 24 PATCHES (OFTEN LENTICULARIS) OF ALTOCUMULUS TRANSLUCIDUS, CO"    NTINUALLY CHANGING AND OCCURING AT ONE OR MORE LEVELS
+25 25 ALTOCUMULUS TRANSLUCIDUS IN BANDS, OR ONE OR MORE LAYERS OF"    ALTOCUMULUS TRANSLUCIDUS OR OPACUS, PROGRESSIVELY INVADING T"    HE SKY; THESE ALTOCUM
+26 26 ALTOCUMULUS CUMULOGENITUS (OR CUMULONIMBOGENITUS)
+27 27 ALTOCUMULUS TRANSLUCIDUS OR OPACUS IN TWO OR MORE LAYERS, OR"     ALTOCUMULUS OPACUS IN A SINGLE LAYER, NOT PROGRESSIVELY INV"    ADING THE SKY, OR AL
+28 28 ALTOCUMULUS CASTELLANUS OR FLOCUS
+29 29 ALTOCUMULUS OF CHAOTIC SKY, GENERALLY AT SEVERAL LEVELS
+30 30 NO CL CLOUDS
+31 31 CUMULUS HUMILIS OR CUMULUS FRACTUS OTHER THAN OF BAD WEATHER"    , OR BOTH
+32 32 CUMULUS MEDIOCRIS OR CONGESTUS, WITH OR WITHOUT CUMULUS OF S"    PECIES FRACTUS OR HUMULIS OR STRATOCUMULUS, ALL HAVING THEIR"     BASES AT THE SAME L
+33 33 CUMULONIMBUS CALVUS, WITH OR WITHOUT CUMULUS, STRATOCUMULUS"    OR STRATUS
+34 34 STRATOCUMULUS CUMULOGENITUS
+35 35 STRATOCUMULUS OTHER THAN STRATOCUMULUS CUMULOGENITUS
+36 36 STRATUS NEBULOSUS OR STRATUS FRACTUS OTHER THAN OF BAD WEATH"    ER, OR BOTH
+37 37 STRATUS FRACTUS OR CUMULUS FRACTUS OF BAD WEATHER, OR BOTH"    (PANNUS), USUALLY BELOW ALTOSTRATUS OR NIMBOSTRATUS
+38 38 CUMULUS AND STRATOCUMULUS OTHER THAN STRATOCUMULUS CUMULOGEN"    ITUS, WITH BASES AT DIFFERENT LEVELS
+39 39 CUMULONIMBUS CAPILLATUS (OFTEN WITH AN ANVIL), WITH OR WITHO"    UT CUMULONIMBUS CALVUS, CUMULUS, STRATOCUMULUS, STRATUS OR P"    ANNUS
+59 59 CLOUD NOT VISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDSTO"    RM, OR OTHER ANALOGOUS PHENOMENA
+60 60 CH CLOUDS INVISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDS"    TORM, OR OTHER SIMILAR PHENOMENA, OR BECAUSE OF A CONTINUOUS"    LAYER OF LOWER CLOUD
+61 61 CM CLOUDS INVISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDS"    TORM, OR OTHER SIMILAR PHENOMENA, OR BECAUSE OF A CONTINUOUS"    LAYER OF LOWER CLOUD
+62 62 CL CLOUDS INVISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDS"    TORM, OR OTHER SIMILAR PHENOMENA
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20017.table b/definitions/bufr/tables/0/wmo/10/codetables/20017.table
new file mode 100644
index 0000000..48f9b49
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20017.table
@@ -0,0 +1,11 @@
+0 0 ISOLATED CLOUD OR FRAGMENTS OF CLOUD
+1 1 CONTINUOUS CLOUD
+2 2 BROKEN CLOUD - SMALL BREAKS, FLAT TOPS
+3 3 BROKEN CLOUD - LARGE BREAKS, FLAT TOPS
+4 4 CONTINUOUS CLOUD
+5 5 BROKEN CLOUD - SMALL BREAKS, UNDULATED TOPS
+6 6 BROKEN CLOUD - LARGE BREAKS, UNDULATED TOPS
+7 7 CONTINUOUS OR ALMOST CONTINUOUS WAVES WITH TOWERING CLOUDS A"    BOVE THE TOP OF THE LAYER
+8 8 GROUPS OF WAVES WITH TOWERING CLOUDS ABOVE THE TOP OF THE LA"    YER
+9 9 TWO OR MORE LAYERS AT DIFFERENT LEVELS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20018.table b/definitions/bufr/tables/0/wmo/10/codetables/20018.table
new file mode 100644
index 0000000..c0ffc36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20018.table
@@ -0,0 +1,4 @@
+0 0 INCREASING (U)
+1 1 DECREASING (D)
+2 2 NO DISTINCT CHANGE (N)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2002.table b/definitions/bufr/tables/0/wmo/10/codetables/2002.table
new file mode 100644
index 0000000..9b8469f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2002.table
@@ -0,0 +1,4 @@
+0 0 MEASURED IN M S-1 UNLESS OTHERWISE INDICATED
+1 1 CERTIFIED INSTRUMENTS
+2 2 ORIGINALY MEASURED IN KNOTS
+3 3 ORIGINALY MEASURED IN KM/H
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20021.table b/definitions/bufr/tables/0/wmo/10/codetables/20021.table
new file mode 100644
index 0000000..d9f7226
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20021.table
@@ -0,0 +1,24 @@
+1 1 PRECIPITATION-UNKNOWN TYPE
+2 2 LIQUID PRECIPITATION NOT FREEZING
+3 3 LIQUID FREEZING PRECIPITATION
+4 4 DRIZZLE
+5 5 RAIN
+6 6 SOLID PRECIPITATION
+7 7 SNOW
+8 8 SNOW GRAINS
+9 9 SNOW PELLETS
+10 10 ICE PELLETS
+11 11 ICE CRYSTALS
+12 12 DIAMOND DUST
+13 13 SMALL HAIL
+14 14 HAIL
+15 15 GLAZE
+16 16 RIME
+17 17 SOFT RIME
+18 18 HARD RIME
+19 19 CLEAR ICE
+20 20 WET SNOW
+21 21 HOAR FROST
+22 22 DEW
+23 23 WHITE DEW
+30 30 ALL 30 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20022.table b/definitions/bufr/tables/0/wmo/10/codetables/20022.table
new file mode 100644
index 0000000..a551aac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20022.table
@@ -0,0 +1,7 @@
+0 0 NO PRECIPITATION
+1 1 CONTINUOUS
+2 2 INTERMITTENT
+3 3 SHOWER
+4 4 NOT REACHING GROUND
+5 5 DEPOSITION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20023.table b/definitions/bufr/tables/0/wmo/10/codetables/20023.table
new file mode 100644
index 0000000..9e2093a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20023.table
@@ -0,0 +1,12 @@
+1 1 DUST/SAND WHIRL
+2 2 SQUALLS
+3 3 SAND STORM
+4 4 DUST STORM
+5 5 LIGHTNING - CLOUD TO SURFACE
+6 6 LIGHTNING - CLOUD TO CLOUD
+7 7 LIGHTNING - DISTANT
+8 8 THUNDERSTORM
+9 9 FUNNEL CLOUD NOT TOUCHING SURFACE
+10 10 FUNNEL CLOUD TOUCHING SURFACE
+11 11 SPRAY
+12 12 WATER-SPOUT
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20024.table b/definitions/bufr/tables/0/wmo/10/codetables/20024.table
new file mode 100644
index 0000000..d21d786
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20024.table
@@ -0,0 +1,7 @@
+0 0 NO PHENOMENA
+1 1 LIGHT
+2 2 MODERATE
+3 3 HEAVY
+4 4 VIOLENT
+5 5 SEVERE (VAL)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20025.table b/definitions/bufr/tables/0/wmo/10/codetables/20025.table
new file mode 100644
index 0000000..e05d542
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20025.table
@@ -0,0 +1,11 @@
+1 1 FOG
+2 2 ICE FOG
+3 3 STEAM FOG
+7 7 MIST
+8 8 HAZE
+9 9 SMOKE
+10 10 VOLCANIC ASH
+11 11 DUST
+12 12 SAND
+13 13 SNOW
+21 21 ALL 21 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20026.table b/definitions/bufr/tables/0/wmo/10/codetables/20026.table
new file mode 100644
index 0000000..541f94b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20026.table
@@ -0,0 +1,14 @@
+0 0 NO CHANGE
+1 1 SHALLOW
+2 2 PATCHES
+3 3 PARTIAL
+4 4 FREEZING
+5 5 LOW DRIFTING
+6 6 BLOWING
+7 7 INCREASING
+8 8 DECREASING
+9 9 IN SUSPENSION IN THE AIR
+10 10 WALL
+11 11 DENSE
+12 12 WHITEOUT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20027.table b/definitions/bufr/tables/0/wmo/10/codetables/20027.table
new file mode 100644
index 0000000..4d816ae
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20027.table
@@ -0,0 +1,7 @@
+1 1 AT TIME OF OBSERVATION
+2 2 IN PAST HOUR
+3 3 IN TIME PERIOD FOR PAST WEATHER W1W2
+4 4 IN TIME PERIOD SPECIFIED
+6 6 BELOW STATION LEVEL
+7 7 AT THE STATION
+8 8 IN THE VICINITY
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20029.table b/definitions/bufr/tables/0/wmo/10/codetables/20029.table
new file mode 100644
index 0000000..8b46da8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20029.table
@@ -0,0 +1,4 @@
+0 0 NO RAIN
+1 1 RAIN
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2003.table b/definitions/bufr/tables/0/wmo/10/codetables/2003.table
new file mode 100644
index 0000000..cdb2cb5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2003.table
@@ -0,0 +1,12 @@
+0 0 PRESSURE INSTRUMENT ASSOCIATED WITH WIND-MEASURING EQUIPMENT
+1 1 OPTICAL THEODOLITE
+2 2 RADIO THEODOLITE
+3 3 RADAR
+4 4 VLF-OMEGA
+5 5 LORAN C
+6 6 WIND PROFILER
+7 7 SATELLITE NAVIGATION
+8 8 RADIO-ACOUSTIC SOUNDING SYSTEM (RASS)
+9 9 SODAR
+14 14 PRESSURE INSTRUMENT ASSOCIATED WITH WIND MEASUREMENT EQUIPME"    NT BUT PRESSURE ELEMENT FAILED DURING ASCENT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20032.table b/definitions/bufr/tables/0/wmo/10/codetables/20032.table
new file mode 100644
index 0000000..87ac945
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20032.table
@@ -0,0 +1,6 @@
+0 0 ICE NOT BUILDING UP
+1 1 ICE BUILDING UP SLOWLY
+2 2 ICE BUILDING UP QUICKLY
+3 3 ICE MELTING OR BREAKING UP SLOWLY
+4 4 ICE MELTING OR BREAKING UP RAPIDLY
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20033.table b/definitions/bufr/tables/0/wmo/10/codetables/20033.table
new file mode 100644
index 0000000..6cc31fc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20033.table
@@ -0,0 +1,4 @@
+1 1 ICING FROM OCEAN SPRAY
+2 2 ICING FROM FOG
+3 3 ICING FROM RAIN
+4 4 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20034.table b/definitions/bufr/tables/0/wmo/10/codetables/20034.table
new file mode 100644
index 0000000..97199d8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20034.table
@@ -0,0 +1,12 @@
+0 0 NO SEA ICE IN SIGHT
+1 1 SHIP IN OPEN LEAD MORE THAN 1.0 NAUTICAL MILE WIDE, OR SHIP"    IN FAST ICE WITH BOUNDARY BEYOND LIMIT OF VISIBILITY
+2 2 SEA ICE PRESENT IN CONCETRATION LESS THAN 3/10 (3/8), OPEN W"    ATER OR VERY OPEN PACK ICE, SEA ICE CONCETRATION IS UNIFORM"    IN THE OBSERVATION AR
+3 3 4/10 TO 6/10 (3/8 TO LESS THAN 6/8) ,OPEN PACK ICE, SEA ICE"    CONCETRATION IS UNIFORM IN THE OBSERVATION AREA, SHIP IN ICE"     OR WITHIN 0.5 NAUTIC
+4 4 7/10 TO 8/10 (6/8 TO LESS THAN 7/8), CLOSE PACK ICE, SEA ICE"     CONCETRATION IS UNIFORM IN THE OBSERVATION AREA, SHIP IN IC"     E OR WITHIN 0.5 NAU
+5 5 9/10 OR MORE, BUT NOT 10/10 (7/8 TO LESS THAN 8/8), VERY CLO"    SE PACK ICE, SEA ICE CONCETRATION IS UNIFORM IN THE OBSERVAT"    ION AREA, SHIP IN IC
+6 6 STRIPS AND PATCHES OF PACK ICE WITH OPEN WATER BETWEEN, SEA"    ICE CONCENTRATION IS NOT UNIFORM IN THE OBSERVATION AREA, SH"    IP IN ICE OR WITHIN 0
+7 7 STRIPS AND PATCHES OF CLOSE OR VERY CLOSE PACK ICE WITH AREA"    S OF LESSER CONCENTRATION BETWEEN, SEA ICE CONCETRATION IS N"    OT UNIFORM IN THE OB
+8 8 FAST ICE WITH OPEN WATER,VERY OPEN OR OPEN PACK ICE TO SEAWA"    RD OF THE ICE BOUNDARY, SEA ICE CONCENTRATION IS NOT UNIFORM"     IN THE OBSERVATION 
+9 9 FAST ICE CLOSE OR VERY CLOSE PACK ICE TO SEAWARD OF THE ICE"    BOUNDARY, SEA ICE CONCETRATION IS NOT UNIFORM IN THE OBSERVA"    TION AREA, SHIP IN IC
+14 14 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY, O"    R BECAUSE SHIP IS MORE THAN 0.5 NAUTICAL MILE AWAY FROM ICE"    EDGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20035.table b/definitions/bufr/tables/0/wmo/10/codetables/20035.table
new file mode 100644
index 0000000..8229f90
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20035.table
@@ -0,0 +1,12 @@
+0 0 NO ICE OF LAND ORIGIN
+1 1 1-5 ICEBERGS, NO GROWLERS OR BERGY BITS
+2 2 6-10 ICEBERGS, NO GROWLERS OR BERGY BITS
+3 3 11-20 ICEBERGS, NO GROWLERS OR BERGY BITS
+4 4 UP TO AND INCLUDING 10 GROWLERS AND BERGY BITS - NO ICEBERGS
+5 5 MORE THAN 10 GROWLERS AND BERGY BITS - NO ICEBERGS
+6 6 1-5 ICEBERGS, WITH GROWLERS AND BERGY BITS
+7 7 6-10 ICEBERGS, WITH GROWLERS AND BERGY BITS
+8 8 11-20 ICEBERGS, WITH GROWLERS AND BERGY BITS
+9 9 MORE THAN 20 ICEBERGS,WITH GROWLERS AND BERGY BITS - A MAJOR"    HAZARD TO NAVIGATION
+14 14 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY OR"    BECAUSE ONLY SEA ICE IS VISIBLE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20036.table b/definitions/bufr/tables/0/wmo/10/codetables/20036.table
new file mode 100644
index 0000000..69c1c36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20036.table
@@ -0,0 +1,12 @@
+0 0 SHIP IN OPEN WATER WITH FLOATING ICE IN SIGHT
+1 1 SHIP IN EASILY PENETRABLE ICE; CONDITIONS IMPROVING
+2 2 SHIP IN EASILY PENETRABLE ICE; CONDITIONS NOT CHANGING
+3 3 SHIP IN EASILY PENETRABLE ICE; CONDITIONS WORSENING
+4 4 SHIP IN ICE DIFFICULT TO PENETRATE; CONDITIONS IMPROVING
+5 5 SHIP IN ICE DIFFICULT TO PENETRATE; CONDITIONS NOT CHANGING
+6 6 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."    ICE FORMING AND FLOES FREEZING TOGETHAR
+7 7 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."    ICE UNDER SLIGHT PRESSURE
+8 8 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."    ICE UNDER MODERATE OR SEVERE PRESSURE
+9 9 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."     SHIP BESET.
+30 30 UNABLE TO REPORT, BECAUSE OF DARKNESS OR LACK OF VISIBILITY
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20037.table b/definitions/bufr/tables/0/wmo/10/codetables/20037.table
new file mode 100644
index 0000000..ea3a1df
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20037.table
@@ -0,0 +1,12 @@
+0 0 NEW ICE ONLY (FRAZIL ICE, GREASE ICE, SLUSH, SHUGA)
+1 1 NILAS OR ICE RIND, LESS THAN 10 CM THICK
+2 2 YOUNG ICE(GREY ICE, GREY-WHITE ICE
+3 3 PREDOMINANTLY NEW AND/OR YOUNG ICE WITH SOME FIRST-YEAR ICE
+4 4 PREDOMINANTLY THIN FIRST-YEAR ICE WITH SOME NEW AND/OR YOUNG"     ICE
+5 5 ALL THIN FIRST-YEAR ICE (30-70 CM THICK)
+6 6 PREDOMINANTLY MEDIUM FIRST-YEAR ICE"    (70-120 CM THICK) AND THICK FIRST-YEAR ICE (>120 CM
+7 7 ALL MEDIUM AND THICK FIRST-YEAR ICE
+8 8 PREDOMINANTLY MEDIUM AND THICK FIRST-YEAR ICE WITH SOME"    OLD ICE (USUALLY MORE THAN 2 METRES THICK)
+9 9 PREDOMINANTLY OLD ICE
+30 30 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY OR"    BECAUSE ONLY ICE OF LAND ORIGIN IS VISIBLE OR BECAUSE SHIP I"    S MORE THAN 0.5 NAUT
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2004.table b/definitions/bufr/tables/0/wmo/10/codetables/2004.table
new file mode 100644
index 0000000..b83f216
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2004.table
@@ -0,0 +1,11 @@
+0 0 USA OPEN PAN EVAPORIMETER (WITHOUT COVER)
+1 1 USA OPEN PAN EVAPORIMETER (MESH COVERED)
+2 2 GGI-300 EVAPORIMETER (SUNKEN)
+3 3 20 M**2 TANK
+4 4 OTHERS
+5 5 RICE
+6 6 WHEAT
+7 7 MAIZE
+8 8 SORGHUM
+9 9 OTHER CROPS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20040.table b/definitions/bufr/tables/0/wmo/10/codetables/20040.table
new file mode 100644
index 0000000..32b4ebd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20040.table
@@ -0,0 +1,9 @@
+0 0 DRIFT SNOW ENDED BEFORE THE HOUR OF OBSERVATION
+1 1 INTENSITY DIMINISHING
+2 2 NO CHANGE
+3 3 INTENSITY INCREASING
+4 4 CONTINUES, APART FROM INTERRUPTION LASTING LESS THAN 30 MINU"    TES
+5 5 GENERAL DRIFT SNOW HAS BECOME DRIFT SNOW NEAR THE GROUND
+6 6 DRIFT SNOW NEAR THE GROUND HAS BECOME GENERAL DRIFT SNOW
+7 7 DRIFT SNOW HAS STARTED AGAIN AFTER AN INTERRUPTION OF MORE T"    HAN 30 MINUTES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20041.table b/definitions/bufr/tables/0/wmo/10/codetables/20041.table
new file mode 100644
index 0000000..5e5ee64
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20041.table
@@ -0,0 +1,11 @@
+0 0 NO ICING
+1 1 LIGHT ICING
+2 2 LIGHT ICING IN CLOUD
+3 3 LIGHT ICING IN PRECIPITATION
+4 4 MODERATE ICING
+5 5 MODERATE ICING IN CLOUD
+6 6 MODERATE ICING IN PRECIPITATION
+7 7 SEVERE ICING
+8 8 SEVERE ICING IN CLOUD
+9 9 SEVERE ICING IN PRECIPITATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20042.table b/definitions/bufr/tables/0/wmo/10/codetables/20042.table
new file mode 100644
index 0000000..2493af7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20042.table
@@ -0,0 +1,4 @@
+0 0 NO ICING
+1 1 ICING PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20045.table b/definitions/bufr/tables/0/wmo/10/codetables/20045.table
new file mode 100644
index 0000000..91ae63f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20045.table
@@ -0,0 +1,4 @@
+0 0 NO SLD CONDITIONS PRESENT
+1 1 SLD CONDITIONS PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20050.table b/definitions/bufr/tables/0/wmo/10/codetables/20050.table
new file mode 100644
index 0000000..3f8654e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20050.table
@@ -0,0 +1,10 @@
+0 0 RESERVED
+1 1 1ST LOW CLOUD
+2 2 2ND LOW CLOUD
+3 3 3RD LOW CLOUD
+4 4 1ST MEDIUM CLOUD
+5 5 2ND MEDIUM CLOUD
+6 6 3RD MEDIUM CLOUD
+7 7 1ST HIGH CLOUD
+8 8 2ND HIGH CLOUD
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20055.table b/definitions/bufr/tables/0/wmo/10/codetables/20055.table
new file mode 100644
index 0000000..cf3be5f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20055.table
@@ -0,0 +1,11 @@
+0 0 CUMULUS, IF ANY, ARE QUITE SMALL
+1 1 CUMULUS OF INTERMEDIATE SIZE
+2 2 SWELLING CUMULUS
+3 3 SWELLING CUMULUS WITH TOWERS
+4 4 SWELLING CUMULUS WITH TOWERS HAVING PRONOUNCED TILT
+5 5 TALL CUMULUS CONGESTUS
+6 6 ISOLATED CUMULONIMBUS
+7 7 NUMEROUS CUMULONIMBUS
+8 8 CONTINUOUS DENSE MIDDLE CLOUDS
+9 9 CONTINUOUS SHEETS OF MIDDLE CLOUDS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20056.table b/definitions/bufr/tables/0/wmo/10/codetables/20056.table
new file mode 100644
index 0000000..6598473
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20056.table
@@ -0,0 +1,5 @@
+0 0 UNKNOWN
+1 1 WATER
+2 2 ICE
+3 3 MIXED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20062.table b/definitions/bufr/tables/0/wmo/10/codetables/20062.table
new file mode 100644
index 0000000..aba68ad
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20062.table
@@ -0,0 +1,21 @@
+0 0 SURFACE OF GROUND DRY (WITHOUT CRACKS AND NO APPRECIABLE"    AMOUNT OF DUST OR LOOSE SAND)
+1 1 SURFACE OF GROUND MOIST
+2 2 SURFACE OF GROUND WET (STANDING WATER IN SMALL"    OR LARGE POOLS ON SURFACE)
+3 3 FLOODED WITHOUT SNOW
+4 4 SURFACE OF GROUND FROZEN MEASURABLE ICE
+5 5 GLAZE ON GROUND COVER
+6 6 LOOSE DRY DUST OR SAND NOT COVERING GROUND COMPLETELY
+7 7 THIN COVER OF LOOSE DRY DUST OR SAND COVERING GROUND COMPLET"    ELY
+8 8 MODERATE OR THICK COVER OF LOOSE DRY DUST OR SAND COVERING"    GROUND COMPLETELY
+9 9 EXTREMELY DRY WITH CRACKS
+10 10 GROUND PREDOMINANTLY COVERED BY ICE
+11 11 COMPACT OR WET SNOW (WITH OR WITHOUT ICE) COVERING LESS THAN"    ONE-HALF OF THE GROUND
+12 12 COMPACT OR WET SNOW (WITH OR WITHOUT ICE) COVERING AT LEAST"    ONE-HALF OF THE GROUND BUT GROUND NOT COMPLETELY COVERED
+13 13 EVEN LAYER OF COMPACT OR WET SNOW COVERING GROUND COMPLETELY
+14 14 UNEVEN LAYER OF COMPACT OR WET SNOW COVERING GROUND"    WITH SNOW OR COMPLETELY MEASURABLE ICE
+15 15 LOOSE DRY SNOW COVERING LESS THAN ONE-HALF OF THE GROUND COV"    ER
+16 16 LOOSE DRY SNOW COVERING AT LEAST ONE-HALF OF THE"    GROUND (BUT NOT COMPLETELY)
+17 17 EVEN LAYER OF LOOSE DRY SNOW COVERING GROUND COMPLETELY
+18 18 UNEVEN LAYER OF LOOSE DRY SNOW COVERING GROUND COMPLETELY
+19 19 SNOW COVERING GROUND COMPLETELY; DEEP DRIFTS
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20063.table b/definitions/bufr/tables/0/wmo/10/codetables/20063.table
new file mode 100644
index 0000000..71cb125
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20063.table
@@ -0,0 +1 @@
+0 0 TO BE DEVELOPED
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20071.table b/definitions/bufr/tables/0/wmo/10/codetables/20071.table
new file mode 100644
index 0000000..bc9d6f6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20071.table
@@ -0,0 +1,11 @@
+0 0 NO ASSESSMENT            NO ASSESSMENT
+1 1 LESS THAN 50 KM          LESS THAN 1 PER SECOND
+2 2 BETWEEN 50 AND 200 KM    LESS THAN 1 PER SECOND
+3 3 MORE THAN 200 KM         LESS THAN 1 PER SECOND
+4 4 LESS THAN 50 KM          1 OR MORE PER SECOND
+5 5 BETWEEN 50 AND 200 KM    1 OR MORE PER SECOND
+6 6 MORE THAN 200 KM         1 OR MORE PER SECOND
+7 7 LESS THANK 50 KM         RATE SO RAPID NUMBER CANNOT BE COUN"    TED
+8 8 BETWEEN 50 AND 200 KM    RATE SO RAPID NUMBER CANNOT BE COUN"    TED
+9 9 MORE THAN 200 KM         RATE SO RAPID NUMBER CANNOT BE COUN"    TED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20086.table b/definitions/bufr/tables/0/wmo/10/codetables/20086.table
new file mode 100644
index 0000000..c820dcb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20086.table
@@ -0,0 +1,8 @@
+0 0 CLEAR AND DRY
+1 1 DAMP
+5 5 WET SNOW
+6 6 SLUSH
+7 7 ICE
+8 8 COMPACTED OR ROLLED SNOW
+9 9 FROZEN RUTS OR RIDGES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20090.table b/definitions/bufr/tables/0/wmo/10/codetables/20090.table
new file mode 100644
index 0000000..a33a9d0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20090.table
@@ -0,0 +1,7 @@
+0 0 RESERVED
+1 1 NACREOUS CLOUDS
+2 2 NOCTILUCENT CLOUDS
+3 3 CLOUDS FROM WATERFALLS
+4 4 CLOUDS FROM FIRES
+5 5 CLOUDS FROM VULCANIC ERUPTIONS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20101.table b/definitions/bufr/tables/0/wmo/10/codetables/20101.table
new file mode 100644
index 0000000..7e2fa15
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20101.table
@@ -0,0 +1,10 @@
+1 1 SCHISTOCERCA GREGARIA
+2 2 LOCUSTA MIGRATORIA
+3 3 NOMADACRIS SEPTEMFASCIATA
+4 4 OEDALEUS SENAGALENSIS
+5 5 ANRACRIDIUM SPP
+6 6 OTHER LOCUST
+7 7 OTHER GRASSHOPPERS
+8 8 ITHER CRICKETS
+9 9 SPODOPTERA EXEMPTA
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/20102.table b/definitions/bufr/tables/0/wmo/10/codetables/20102.table
new file mode 100644
index 0000000..fae1feb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/20102.table
@@ -0,0 +1,11 @@
+0 0 GREEN
+1 1 GREEN AND BLACK
+2 2 BLACK
+3 3 YELLOW AND BLACK
+4 4 STRAW/GREY
+5 5 PINK
+6 6 DARK RED/BROWN
+7 7 MIXED RED AND YELLOW
+8 8 YELLOW
+9 9 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2011.table b/definitions/bufr/tables/0/wmo/10/codetables/2011.table
new file mode 100644
index 0000000..f794c4f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2011.table
@@ -0,0 +1,54 @@
+0 0 RESERVED
+1 1 RESERVED
+2 2 NO RADIOSONDE-PASSIVE TARGET(E.G.REFLECTOR)
+3 3 NO RADIOSONDE-ACTIVE TARGET(E.G.TRANSPONDER)
+4 4 NO RADIOSONDE-PASSIVE TEMPERATURE-HUMIDITY PROFILER
+5 5 NO RADIOSONDE-ACTIVE TEMPERATURE-HUMIDITY PROFILER
+6 6 NO RADIOSONDE-RADIO ACOUSTIC SOUNDER
+9 9 NO RADIOSONDE-SYSTEM UNKNOWN OR NOT SPECIFIED
+10 10 RS VIZ TYPE A (USA)
+11 11 RS VIZ TYPE B (USA)
+12 12 RS SDC (SPACE DATA CORPORATION-USA)
+13 13 ASTOR (NO LONGER MADE-AUSTRALIA)
+14 14 VIZ MARK I MICROSONDE(USA)
+15 15 EEC COMPANY TYPE 23 (USA)
+16 16 ELIN (AUSTRIA)
+17 17 GRAW G. (GERMANY)
+19 19 GRAW M60 (GERMANY)
+20 20 INDIAN MET SERVICE MK3 (INDIA)
+21 21 VIZ/JIN YANG MARK I MICROSONDE(SOUTH KOREA)
+22 22 MEISEI RS2-80 (JAPAN)
+23 23 MESURAL FMO 1950A (FRANCE)
+24 24 MESURAL FMO 19455A (FRANCE)
+25 25 MESURAL MH73A (FRANCE)
+26 26 METEOLABOR BASORA (SWITZERLAND)
+27 27 AVK-MRZ (USSR)
+28 28 METEORIT MARZ2-1 (USSR)
+29 29 METEIRIT MARZ2-2 (USSR)
+30 30 OKI RS2-80 (JAPAN)
+31 31 VIZ/VALCOM TYPE A PRESSURE-COMMUTATED(CANADA)
+32 32 SHANGAI RADIO (CHINA)
+33 33 UK MET OFFICE MK3( UK)
+34 34 VINOHRADY(CZECHOSLOVAKIA)
+35 35 VAISALA RS18 (FINLAND)
+36 36 VAISALA RS21 (FINLAND)
+37 37 VAISALA RS80 (FINLAND)
+38 38 VIZ LOCATE (LORAN-C)(USA)
+39 39 SPRENGER E076 (GERMANY)
+40 40 SPRENGER E084 (GERMANY)
+41 41 SPRENGER E085 (GERMANY)
+42 42 SPRENGER E086 (GERMANY)
+43 43 AIR IS -4A-1680 (UK)
+44 44 AIR IS -4A-1680 X (UK)
+45 45 RS MSS(USA)
+46 46 AIR IS -4A-403(USA)
+47 47 MEISLEI RS2-91(JAPAN)
+48 48 VALCOM(CANADA)
+49 49 VIZ MARK II(USA)
+60 60 VAISALA RS80/MICROCORA (FINLAND)
+61 61 VAISALA RS80/DIGCORA OR MARWIN (FINLAND)
+62 62 VAISALA RS80/PCCORA (FINLAND)
+63 63 VAISALA RS80/STAR (FINLAND)
+64 64 ORBITAL,SCIENCE CORPORATION,SPACE DATA DIVISION,TRANSPONDER"     RADIOSONDE,TYPE 909-11-XX,WHERE XX CORRECPOND TO THE MODEL"    OF THE INSTRUMENT
+65 65 VIZ TRANSPONDER RADIOSONDE,MODEL NUMBER 1499-520(USA)
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2012.table b/definitions/bufr/tables/0/wmo/10/codetables/2012.table
new file mode 100644
index 0000000..71cb125
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2012.table
@@ -0,0 +1 @@
+0 0 TO BE DEVELOPED
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2013.table b/definitions/bufr/tables/0/wmo/10/codetables/2013.table
new file mode 100644
index 0000000..a5df80f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2013.table
@@ -0,0 +1,9 @@
+0 0 NO CORRECTION
+1 1 CIMO SOLAR CORRECTED AND CIMO INFRARED CORRECTED
+2 2 CIMO SOLAR CORRECTED AND IFRARED CORRECTED
+3 3 CIMO SOLAR CORRECTED ONLY
+4 4 SOLAR AND INFRARED CORRECTED AUTOMATICALLY BY RADIOSONDE SY"    STEM
+5 5 SOLAR CORRECTED AUTOMATICALLY BY RADIOSONDE SYSTEM
+6 6 SOLAR AND INFRARED CORRECTED AS SPECIFIED BY COUNTRY
+7 7 SOLAR CORRECTED AS SPECIFIED BY COUNTRY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2014.table b/definitions/bufr/tables/0/wmo/10/codetables/2014.table
new file mode 100644
index 0000000..409caa4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2014.table
@@ -0,0 +1,50 @@
+0 0 NO WINDFINDING
+1 1 AUTOMATIC WITH AUXILIARY OPTICAL DIRECTION FINDING
+2 2 AUTOMATIC WITH AUXILIARY RADIO DIRECTION FINDING
+3 3 AUTOMATIC WITH AUXILIARY RANGING
+4 4 NOT USED
+5 5 AUTOMATIC WITH MULTIPLE VLF-OMEGA SIGNALS
+6 6 AUTOMATIC CROSS CHAIN LORAN-C
+7 7 AUTOMATIC WITH AUXILIARY WIND PROFILER
+8 8 AUTOMATIC SATELLITE NAVIGATION
+19 19 TRACKING TECHNIQUE NOT SPECIFIED
+20 20 VESSEL STOPPED
+21 21 VESSEL DIVERTED FROM ORIGINAL DESTINATION
+22 22 VESSEL'S ARRIVAL DELAYED
+23 23 CONTAINER DAMAGED
+24 24 POWER FAILURE TO CONTAINER
+29 29 OTHER PROBLEMS
+30 30 MAJOR POWER PROBLEMS
+31 31 UPS INOPERATIVE
+32 32 RECEIVER HARDWARE PROBLEMS
+33 33 RECEIVER SOFTWARE PROBLEMS
+34 34 PROCESSOR HARDWARE PROBLEMS
+35 35 PROCESSOR SOFTWARE PROBLEMS
+36 36 NAVAID SYSTEM DAMAGED
+37 37 SHORTAGE OF LIFTING GAS
+39 39 OTHER PROBLEMS
+40 40 MECHANICAL DEFECT
+41 41 MATERIAL DEFECT (HAND LAUNCHER)
+42 42 POWER FAILURE
+43 43 CONTROL FAILURE
+44 44 PNEUMATIC/HYDRAULIC FAILURE
+45 45 OTHER PROBLEMS
+46 46 COMPRESSOR PROBLEMS
+47 47 BALLOON PROBLEMS
+48 48 BALLOON RELEASE PROBLEMS
+49 49 LAUNCHER DAMAGED
+50 50 R/S RECEIVER ANTENNA DEFECT
+51 51 NAVAID ANTENNA DEFECT
+52 52 R/S RECEIVER CABLING (ANTENNA DEFECT)
+53 53 NAVAID ANTENNA CABLING DEFECT
+59 59 OTHER PROBLEMS
+60 60 ASAP COMMUNICATIONS DEFECT
+61 61 COMMUNICATIONS FACILITY REJECTED DATA
+62 62 NO POWER AT TRANSMITTINGANTENN
+63 63 ANTENNA CABLE BROKEN
+64 64 ANTENNA CABLE DEFECT
+65 65 MESSAGE TRANSMITTED POWER BELOW NORMAL
+69 69 OTHER PROBLEMS
+70 70 ALL SYSTEMS IN NORMAL OPERATION
+99 99 STATUS OF SYSTEM AND ITS COMPONENTS NOT SPECIFIED
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2015.table b/definitions/bufr/tables/0/wmo/10/codetables/2015.table
new file mode 100644
index 0000000..007a096
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2015.table
@@ -0,0 +1,6 @@
+1 1 PRESSURE ONLY RADIOSONDE
+2 2 PRESSURE ONLY RADIOSONDE PLUS TRANSPONDER
+3 3 PRESSURE ONLY RADIOSONDE PLUS RADAR REFLECTOR
+4 4 NO PRESSURE RADIOSONDE PLUS TRANSPONDER
+5 5 NO PRESSURE RADIOSONDE PLUS RADAR REFLECTOR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2016.table b/definitions/bufr/tables/0/wmo/10/codetables/2016.table
new file mode 100644
index 0000000..4a30226
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2016.table
@@ -0,0 +1,4 @@
+1 1 TRAIN REGULATOR
+2 2 LIGHT UNIT
+3 3 PARACHUTE
+4 4 ROOFTOP RELEASE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2019.table b/definitions/bufr/tables/0/wmo/10/codetables/2019.table
new file mode 100644
index 0000000..3ddc721
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2019.table
@@ -0,0 +1,296 @@
+10 10 BNSC    RADIOMETER      AATSR   ADVANCED ALONG TRACK SCANNIN"    G RADIOMETER
+11 11 BNSC    RADIOMETER      ATSR    ALONG TRACK SCANNING RADIOME"    TER
+12 12 BNSC    RADIOMETER      ATSR-2  ALONG TRACK SCANNING RADIOME"    TER  -2
+13 13 BNSC    RADIOMETER      MWR     MICROWAVE RADIOMETER
+30 30 CNES    COMMUNICATIONS  ARGOS
+40 40 CNES    LIDAR   LASER REFLECTORS
+41 41 CNES    LIDAR   DORIS   DOPPLER ORBITOGRAPHY AND RADIO-POSIT"    IONING INTEGRATED BY SATELLITE
+42 42 CNES    LIDAR   DORIS-NG        DOPPLER ORBITOGRAPHY AND RAD"    IO-POSITIONING INTEGRATED BY SATELLITE-NG
+47 47 CNES    RADAR ALTIMETERS        POSEIDON-1 (SSALT-1)    POSI"    TIONING OCEAN SOLID EARTH ICE DYNAMICS ORBITING NAVIGATOR (S"    INGLE FREQUENCY SOLI
+48 48  CNES    RADAR ALTIMETERS        POSEIDON-2 (SSALT-2)   POSI"    TIONING OCEAN SOLID EARTH ICE DYNAMICS ORBITING NAVIGATOR (D"    UAL FREQUENCY SOLID 
+50 50 CNES    IMAGER RADIOMETER       ATSR/M  ATSR/M
+51 51 CNES    HIGH RESOLUTION OPTICAL IMAGERS HRG
+52 52 CNES    RADIOMETER      HRV     HIGH RESOLUTION VISIBLE
+53 53 CNES    RADIOMETER      HRVIR   HIGH RESOLUTION VISIBLE AND"            INFRA-RED
+54 54 CNES    RADIOMETER      SCARAB/MV2      SCANNER FOR EARTH'S"            RADIATION BUDGET
+55 55 CNES    RADIOMETER      POLDER  POLDER
+60 60 CNES    SPECTROMETER    VEGETATION      VEGETATION
+61 61 CNES    SPECTROMETER    WINDII  WINDII
+80 80 CSA     COMMUNICATIONS  RADARSAT DTT
+81 81 CSA     COMMUNICATIONS  RADARSAT TTC
+85 85 CSA     RADAR   SAR (CSA)       SYNTHETIC APERTURE RADAR (CS"    A)
+90 90 CSA     RADIOMETER      MOPITT  MEASUREMENTS OF POLLUTION IN"     THE TROPOSPHERE
+91 91 CSA     CHEMISTRY INSTRUMENTS   OSIRIS  OPTICAL SPECTROGRAPH"     AND INFRA-RED IMAGING SYSTEM
+97 97 CSIRO   RADIOMETER      PANCHROMATIC IMAGER
+98 98 CRCSS   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   GPS"    RECEIVER
+102 102 DLR     RADIOMETER      CHAMP GPS SOUNDER       GPS TURBORO"    GUE SPACE RECEIVER (TRSR)
+103 103 UNKNOWN
+116 116 DLR MAGNETOMETER    IGOR CHAMP GRAVITY PACKAGE (ACCELEROMETE"    R+GPS)       INTEGRATED GPS AND OCCULTATION RECEIVER STAR AC"    CELEROMETER
+117 117 DLR     MAGNETOMETER    CHAMP MAGNETOMETRY PACKAGE (1 SCALAR"    +2 VECTOR MAGNETOMETER)     OVERHAUSER MAGNETOMETER (OVM) AN"    D FLUXGATE MAGNETOME
+120 120 ESA     COMMUNICATIONS  ENVISAT COMMS   COMMUNICATIONS PACKA"    GE ON ENVISAT
+121 121 ESA     COMMUNICATIONS  ERS COMMS       COMMUNICATION PACKAG"    E FOR ERS
+130 130 ESA     LIDARS  ALADIN  ATMOSPHERIC LASER DOPPLER INSTRUMENT
+131 131 ESA     LIDARS  ATLID   ATMOSPHERIC LIDAR
+140 140 ESA     RADAR   AMI/SAR/IMAGE   ACTIVE MICROWAVE INSTRUMENTA"    TION. IMAGE MODE
+141 141 ESA     RADAR   AMI/SAR/WAVE    ACTIVE MICROWAVE INSTRUMENTA"    TION. WAVE MODE
+142 142 ESA     RADAR   AMI/SCATTEROMETER       ACTIVE MICROWAVE INS"    TRUMENTATION. WIND MODE
+143 143 ESA     RADAR   ASAR    ASAR
+144 144 ESA     IMAGING MICROWAVE RADARS        ASAR    ADVANCED SYN"    TETIC APERTURA RADAR (IMAGE MODE)
+145 145 ESA     IMAGING MICROWAVE RADARS        ASAR    ADVANCED SYN"    TETIC APERTURA RADAR (WAVE MODE)
+146 146 ESA     CLOUD PROFILE AND RAIN RADARS   CPR     CLOUD RADAR
+147 147 ESA     RADAR   RA-2/MWR        RADAR ALTIMETER - 2
+148 148 ESA     RADAR   RA/MWR  RADAR ALTIMETER
+150 150 ESA     SCATTEROMETERS  SCATTEROMETER   SCATTEROMETER
+161 161 ESA     RADIOMETER      MIPAS   MICHELSON INTERFEROMETRIC PA"    SSIVE ATMOSPHERE SOUNDER
+162 162 ESA     IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E   MWR-2   MICROWAVE RADIOMETER-2
+163 163 ESA     ATMOSPHERIC CHEMISTRY INSTRUMENTS       SOPRANO SUB-"    MILIMETRE OBSERVATION OF PROCESSES IN THE ABSORPTION NOTEWOR"    THY FOR OZONE
+170 170 ESA     ATMOSPHERIC CHEMISTRY INSTRUMENTS       GOME I  GLOB"    AL OZONE MONITORING EXPERIMENT
+172 172 ESA     SPECTROMETER    GOMOS   GLOBAL OZONE MONITORING BY O"    CCULTATION OF STARS
+174 174 ESA     SPECTROMETER    MERIS   MEDIUM RESOLUTION IMAGING SP"    ECTROMETER
+175 175 ESA     SPECTROMETER    SCIAMACHY       SCANNING IMAGING ABS"    ORPTION SPECTROMETER FOR ATMOSPHERIC CARTOGRAPHY
+181 181 EUMETSAT        COMMUNICATIONS  METEOSAT COMMS  COMMUNICATIO"    NS PACKAGE FOR METEOSAT
+182 182 EUMETSAT        COMMUNICATIONS  MSG COMMS       COMMUNICATIO"    NS PACKAGE FOR MSG
+190 190 ESA/ EUMETSAT        SCATTEROMETERS  ASCAT   ADVANCED SCATTE"    ROMETER
+200 200 EUMETSAT        RADIOMETER      GERB    GEOSTATIONARY EARTH"    RADIATION BUDGET
+202 202 ESA/ EUMETSAT        RADIOMETER      GRAS    GNSS RECEIVER F"    OR ATMOSPHERIC SOUNDING
+203 203 EUMETSAT        RADIOMETER      MHS     MICROWAVE HUMIDITY S"    OUNDER
+205 205 EUMETSAT        RADIOMETER      MVIRI   METEOSAT VISIBLE AND"    INFRA-RED IMAGER
+207 207 EUMETSAT        RADIOMETER      SEVIRI  SPINNING ENHANCED VI"    SIBLE AND INFRARED IMAGER
+208 208 EUMETSAT        IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)"        VIRI    VIRI
+220 220 ESA/ EUMETSAT        SPECTROMETER    GOME-2  GLOBAL OZONE MO"    NITORING EXPERIMENT - 2
+221 221 CNES/ EUMETSAT        ATMOSPHERIC TEMPERATURE AND HUMIDITY S"    OUNDERS   IASI    INFRA-RED ATMOSPHERIC SOUNDING INTERFEROME"    TER
+240 240 CAST    COMMUNICATIONS  DCP     DATA COLLECTION PLATFORM TRA"    NSPONDER
+245 245 CAST    RADIOMETER      CCD     HIGH RESOLUTION CCD CAMERA
+246 246 INPE    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   HSB"        HUMIDITY SOUNDER/BRAZIL
+248 248 INPE    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     OBA"        OBSERVADOR BRASILEIRO DA AMAZONIA
+250 250 CAST    RADIOMETER      WFI     WIDE FIELD IMAGER
+255 255 CAST    SPECTROMETER    IRMSS   INFRA RED MULTI SPECTRAL SCA"    NNER
+260 260 ISRO    PRECISION ORBIT BSS & FSS TRANSPONDERS
+261 261 ISRO    PRECISION ORBIT DRT-S&R
+262 262 ISRO    COMMUNICATIONS  INSAT COMMS     COMMUNICATIONS PACKA"    GE FOR INSAT
+268 268 ISRO    HIGH RESOLUTION OPTICAL IMAGERS HR-PAN  HIGH RESOLUT"    ION PANCHROMATIC CAMERA
+269 269 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  MSMR    MULTIFREQUENCY SCANNING MICROWAVE RADIOMETER
+270 270 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VHRR"        VERY HIGH RESOLUTION RADIOMETER
+271 271 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     WIFS"        WIDE FIELD SENSOR
+275 275 ISRO    HIGH RESOLUTION OPTICAL IMAGERS AWIFS   ADVANCED WID"    E FIELD SENSOR
+276 276 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-I  LINEAR IMAGI"    NG SELF SCANNER - I
+277 277 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-II LINEAR IMAGI"    NG SELF SCANNER - II
+278 278 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-III        LINE"    AR IMAGING SELF SCANNER - III
+279 279 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-IV LINEAR IMAGI"    NG SELF SCANNER - IV
+284 284 ISRO    HIGH RESOLUTION OPTICAL IMAGERS PAN     PANCHROMATIC"     SENSOR
+285 285 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     MOS"        MODULAR OPTO-ELECTRONIC SCANNER
+286 286 ISRO    OCEAN COLOUR INSTRUMENTS        OCM     OCEAN COLOUR"     MONITOR
+290 290 JMA     COMMUNICATIONS  MTSAT COMMS     COMMUNICATIONS PACKA"    GE FOR MTSAT
+294 294 JMA     IMAGING MULTI-SPECTRAL RADIOMETERS      IMAGER/MTSAT"    -1R IMAGER/MTSAT
+295 295 JMA     IMAGING MULTI-SPECTRAL RADIOMETERS      IMAGER/MTSAT"        IMAGER/MTSAT
+296 296 JMA     IMAGING MULTI-SPECTRAL RADIOMETERS      VISSR (GMS4)"        VISIBLE AND INFRA-RED SPIN SCAN RADIOMETER (GMS4)
+300 300 NASA    LIDARS  GLAS    GEOSCIENCE LASER ALTIMETER SYSTEM
+301 301 NASA    PRECISION ORBIT LRA     LASER RETROREFLECTOR ARRAY
+302 302 NASA    LIDARS  MBLA    MULTI BEAM LASER ALTIMETER
+309 309 NASA    CLOUD PROFILE AND RAIN RADARS   CPR (CLOUDSAT)  CLOU"    D PROFILING RADAR
+312 312 NASA    RADAR   NSCAT   NASA SCATTEROMETER
+313 313 NASA    RADAR   SEAWINDS       ADEOS II - NASA SCATTEROMETER
+330 330 NASA    EARTH RADIATION BUDGET RADIOMETER       ACRIM   ACTI"    VE CAVITY RADIOMETER IRRADIANCE MONITOR
+334 334 NASA    TOTAL AND PROFILE OZONE BUV     BACKSCATTER ULTRAVIO"    LET INSTRUMENT
+336 336 NASA    HIGH RESOLUTION OPTICAL IMAGERS ALI     ADVANCED LAN"    D IMAGER
+347 347 NASA    HIGH RESOLUTION OPTICAL IMAGERS ASTER   ADVANCED SPA"    CEBORNE THERMAL EMISSION AND REFLECTION RADIOMETER
+348 348 NASA    EARTH RADIATION BUDGET RADIOMETER       CERES-2 CLOU"    D AND THE EARTH'S RADIANT ENERGY SYSTEM
+351 351 CONAE   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   GPSD"    R   GPS DEMONSTRATION RECEIVER
+353 353 NASA    TOTAL AND PROFILE OZONE HIRDLS  HIGH RESOLUTION DYNA"    MICS LIMB SOUNDER
+354 354 NASA    TOTAL AND PROFILE OZONE HRDI    HIGH RESOLUTION DOPP"    LER IMAGER
+356 356 NASA    RADIOMETER      LIS     LIGHTNING IMAGING SENSOR
+358 358 NASA    MAGNETIC FIELD, AUROAL IMAGERYSCINTILLATION BOUNDARY"        PEM     PARTICLE ENVIRONMENT MONITOR
+359 359 NASA    OCEAN COLOUR INSTRUMENTS        SEAWIFS SEA-VIEWING"    WIDE FIELD-OF-VIEW SENSOR
+360 360 NASA    EARTH RADIATION BUDGET RADIOMETER       SUSIM (UARS)"        SOLAR ULTRAVIOLET IRRADIANCE MONITOR
+363 363 NASA    TOTAL AND PROFILE OZONE SBUV/1  SOLAR BACKSCATTER UL"    TRAVIOLET 1 INSTRUMENT
+365 365 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  TMI     TRMM MICROWAVE IMAGER
+366 366 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  JMR     JASON-1 MICROWAVE RADIOMETER
+369 369 NASA    TOTAL AND PROFILE OZONE LIMS    LIMB INFRARED MONITO"    R OF THE STRATOSPHERE
+370 370 NASA    TOTAL AND PROFILE OZONE LRIR    LIMB RADIANCE INVERS"    ION RADIOMETER INSTRUMENT
+371 371 NASA    TOTAL AND PROFILE OZONE EPIC    EARTH POLYCHROMATIC"    IMAGING CAMERA
+372 372 NASA    EARTH RADIATION BUDGET RADIOMETER       NISTAR  NIST"     ADVANCED RADIOMETER
+373 373 NASA    MAGNETIC FIELD, AUROAL IMAGERY SCINTILLATION BOUNDAR"    Y   PLASMA-MAG
+374 374 NASA    OTHER   XPS     XUV PHOTOMETER SYSTEM
+375 375 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VIRS"        VISIBLE INFRA-RED SCANNER
+376 376 CNES    MULTIPLE DIRECTION/POLARISATION RADIOMETERS     POLD"    ER II       POLARIZATION AND DIRECTIONALITY OF THE EARTH'S R"    EFLECTANCE - II
+377 377 NASA    EARTH RADIATION BUDGET RADIOMETER       TIM     TOTA"    L IRRADIANCE MONITOR
+379 379 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     WFC"        WIDE FIELD CAMERA
+382 382 NASA    SPECTRO-RADIOMETER      CLAES   CRYOGENIC LIMB ARRAY"     ETALON SPECTROMETER
+383 383 NASA    SPECTRO-RADIOMETER      HALOE   HALOGEN OCCULTATION"    EXPERIMENT
+384 384 NASA    SPECTRO-RADIOMETER      ISAMS   IMPROVED STRATOSPHER"    IC AND MESOSPHERIC SOUNDER
+385 385 NASA    SPECTRO-RADIOMETER      MISR    MULTI-ANGLE IMAGING"    SPECTRORADIOMETER
+386 386 NASA    SPECTRO-RADIOMETER    MLS     MICROWAVE LIMB SOUNDER
+387 387 NASA    SPECTRO-RADIOMETER    MLS (EOS-AURA)  MICROWAVE LIMB"     SOUNDER (EOS-AURA)
+389 389 NASA    SPECTRO-RADIOMETER      MODIS   MODERATE-RESOLUTION"    IMAGING SPECTRORADIOMETER
+393 393 NASA    GRAVITY HAIRS   HIGH ACCURACY INTER-SATELLITE RANGIN"    G SYSTEM
+394 394 NASA    TOTAL AND PROFILE OZONE OMI     OZONE MEASURING INST"    RUMENT
+395 395 NASA    RADIOMETER      ATMOSPHERIC CORRECTOR   ATMOSPHERIC"    CORRECTOR
+396 396 NASA    RADIOMETER      HYPERION        HYPERSPECTRAL IMAGER
+399 399 NASA    SPECTRO-RADIOMETER      SAGE I  STRATOSPHERIC AEROSO"    L AND GAS EXPERIMENT-I
+400 400 NASA    SPECTRO-RADIOMETER      SAGE II STRATOSPHERIC AEROSO"    L AND GAS EXPERIMENT-II
+401 401 NASA    SPECTRO-RADIOMETER      SAGE III        STRATOSPHERI"    C AEROSOL AND GAS EXPERIMENT-III
+402 402 NASA    SPECTRO-RADIOMETER      SAMS    STRATOSPHERIC AND ME"    SOSPHERIC SOUNDER
+403 403 NASA    SPECTRO-RADIOMETER      SAM II  STRATOSPHERIC AEROSO"    L MEASUREMENT II
+404 404 NASA    SPECTRO-RADIOMETER      IRIS    INFRARED INTERFEROME"    TER SPECTROMETER
+405 405 NASA    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   GIFT"    S   GEOSYNCHRONOUS IMAGING FOURIER TRANSFORM SPECTROMETER
+420 420 NASA    SPECTROMETER    AIRS   ATMOSPHERIC INFRA-RED SOUNDER
+426 426 NASA    SPECTROMETER    SOLSTICE        SOLAR STELLAR IRRADI"    ANCE COMPARISON EXPERIMENT
+430 430 NASA    SPECTROMETER    TES     TROPOSHPERIC EMISSION SPECTR"    OMETER
+431 431 NASA    SPECTROMETER    TOMS    TOTAL OZONE MAPPING SPECTROM"    ETER
+450 450 JAXA    COMMUNICATIONS  ADEOS COMMS     COMMUNICATIONS PACKA"    GE FOR ADEOS
+451 451 JAXA    COMMUNICATIONS  DCS (JAXA)      DATA COLLECTION SYST"    EM (JAXA)
+453 453 JAXA    COMMUNICATIONS  GMS COMMS       COMMUNICATIONS PACKA"    GE ON GMS
+454 454 JAXA    COMMUNICATIONS  JERS-1 COMMS    COMMUNICATIONS PACKA"    GE FOR JERS-1
+460 460 JAXA    LIDAR   RIS     RETROREFLECTOR IN SPACE
+461 461 JAXA    RADAR   PR      PRECIPITATION RADAR
+462 462 JAXA    IMAGING MICROWAVE RADARS        SAR     SYNTETIC APE"    RTURE RADAR
+470 470 JAXA    IMAGING MICROWAVE RADARS        PALSAR  PHASED ARRAY"     TYPE L-BAND SYNTHETIC APERTURE RADAR
+479 479 JAXA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  AMSR-E  ADVANCED MICROWAVE SCANNING RADIOMETER-EOS
+480 480 JAXA    HIGH RESOLUTION OPTICAL IMAGERS PRISM (ALOS)    PANC"    HROMATIC REMOTE-SENSING INSTRUMENT FOR STEREO MAPPING
+481 481 JAXA    RADIOMETER      AMSR    ADVANCED MICROWAVE SCANNING"    RADIOMETER
+482 482 JAXA    HIGH RESOLUTION OPTICAL IMAGERS AVNIR   ADVANCED VIS"    IBLE AND NEAR INFRARED RADIOMETER
+483 483 JAXA    HIGH RESOLUTION OPTICAL IMAGERS AVNIR-2 ADVANCED VIS"    IBLE AND NEAR INFRA-RED RADIOMETER TYPE 2
+484 484 JAXA    IMAGER  GLI     GLOBAL IMAGER
+485 485 JAXA    RADIOMETER      MESSR   MULTISPECTRAL ELECTRONIC SEL"    F SCANNING RADIOMETER
+486 486 JAXA    RADIOMETER      MSR    MICROWAVE SCANNING RADIOMETER
+487 487 JAXA    RADIOMETER      OCTS   OCEAN COLOR AND TEMPERATURE S"    CANNER
+488 488 JAXA    RADIOMETER      OPS     OPTICAL SENSOR
+489 489 JAXA    SPECTRO-RADIOMETER      VISSR (GMS5)    VISIBLE AND"    INFRA-RED SPIN SCAN RADIOMETER (GMS5)
+490 490 JAXA    RADIOMETER      VTIR    VISIBLE AND THERMAL INFRA-RE"    D RADIOMETER
+510 510 JAXA    SPECTROMETER    ILAS-I  IMOROVED LIMB ATOMOSPHIRIC S"    PECTROMETER
+511 511 JAXA    SPECTROMETER    ILAS-II IMPROVED LIMB ATOMOSPHIRIC S"    PECTROMETER
+512 512 JAXA    SPECTROMETER    IMG     INFEROMETRIC MONITOR OF GREE"    NHOUSE GASES
+514 514 JAXA    SPACE ENVIRONMENT       SEM     SPACE ENVIRONMENT MO"    NITOR (JAXA)
+515 515 JAXA    TOTAL AND PROFILE OZONE SOFIS   SOLAR OCCULTATION FO"    URIER TRANSFORM SPECTROMETER FOR INCLINED ORBIT SATELLITE
+540 540 NOAA    COMMUNICATIONS  DCS (NOAA)      DATA COLLECTION SYST"    EM (NOAA)
+541 541 NOAA    COMMUNICATIONS  GOES COMMS      COMMUNICATIONS PACKA"    GE ON GOES
+542 542 NOAA    COMMUNICATIONS  LANDSAT COMMS   COMMUNICATIONS PACKA"    GE FOR LANDSAT
+543 543 NOAA    COMMUNICATIONS  NOAA COMMS      COMMUNICATIONS PACKA"    GE FOR NOAA
+544 544 NOAA    COMMUNICATIONS  S&R (GOES)      SEARCH AND RESCUE
+545 545 NOAA    COMMUNICATIONS  S&R (NOAA)      SEARCH AND RESCUE
+546 546 NOAA    COMMUNICATIONS  WEFAX   WEATHER FACSIMILE
+547 547 NOAA    SPECTROMETER    SEM(GOES)       SPACE ENVIRONMENT MO"    NITOR
+550 550 NOAA    MAGNETIC FIELD  SSM     SPECIAL SENSOR MAGNETOMETER
+551 551 NOAA    MAGNETIC FIELD  SSJ/4   SPECIAL SENSOR PRECIPITATING"     PLASMA MONITOR
+552 552 NOAA    SPACE ENVIRONMENT       SSIES-2 SPECIAL SENSOR IONOS"    PHERIC PLASMA DRIFT/SCINTILLATION METER
+553 553 NOAA    SPACE ENVIRONMENT       SSB/X-2 SPECIAL SENSOR GAMMA"     RAY PARTICLE DECTECTOR
+570 570 NOAA    RADIOMETER      AMSU-A  ADVANCED MICROWAVE SOUNDING"    UNIT-A
+574 574 NOAA    RADIOMETER      AMSU-B  ADVANCED MICROWAVE SOUNDING"    UNIT-B
+580 580 NOAA    RADIOMETER      ATOVS (HIRS/3 + AMSU + AVHRR/3) ADVA"    NCED TIROS OPERATIONAL VERTICAL SOUNDER
+590 590 NOAA    RADIOMETER      AVHRR/2 ADVANCED VERY HIGH RESOLUTIO"    N RADIOMETER/2
+591 591 NOAA    RADIOMETER      AVHRR/3 ADVANCED VERY HIGH RESOLUTIO"    N RADIOMETER/3
+592 592 NOAA    RADIOMETER      AVHRR/4 ADVANCED VERY HIGH RESOLUTIO"    N RADIOMETER/4
+600 600 NOAA    RADIOMETER      ERBE    EARTH'S RADIATION BUDGET EXP"    ERIMENT
+601 601 NOAA    RADIOMETER      ETM+    ENHANCED THEMATIC MAPPER
+605 605 NOAA    RADIOMETER      HIRS/2  HIGH RESOLUTION INFRA-RED SO"    UNDER/2
+606 606 NOAA    RADIOMETER      HIRS/3  HIGH RESOLUTION INFRA-RED SO"    UNDER/3
+607 607 NOAA    RADIOMETER      HIRS/4  HIGH RESOLUTION INFRA-RED SO"    UNDER/4
+615 615 NOAA    RADIOMETER      IMAGER  IMAGER
+616 616 NOAA    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VIIR"    S   VISIBLE/INFRARED IMAGER RADIOMETER SUITE
+620 620 NOAA    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   CRIR"    S/NP        CROSS TRACK INFRA-RED SOUNDER/NPOESS
+621 621 NOAA    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   ATMS"        ADVANCED TECHNOLOGY MICROWAVE SOUNDER
+622 622 NOAA    RADIOMETER      MSS    MULTISPECTRAL SCANNING SYSTEM
+623 623 NOAA    RADIOMETER      MSU     MICROWAVE SOUNDING UNIT
+624 624 NOAA    RADIOMETER      SBUV/2  SOLAR BACKSCATTTER ULTRA-VIO"    LET INSTRUMENT/2
+625 625 NOAA    RADIOMETER      SBUV/3  SOLAR BACKSCATTTER ULTRA-VIO"    LET INSTRUMENT/3
+626 626 NOAA    RADIOMETER      SOUNDER SOUNDER
+627 627 NOAA    RADIOMETER      SSU     STRATOSPHERIC SOUNDING UNIT
+628 628 NOAA    RADIOMETER      TM      THEMATIC MAPPER
+629 629 NOAA    RADIOMETER      TOVS (HIRS/2 + MSU + SSU)       TIRO"    S OPERATIONAL VERTICAL SOUNDER
+630 630 NOAA    RADIOMETER      VAS     VISSR ATMOSPHERIC SOUNDER
+631 631 NOAA    RADIOMETER      SSZ
+645 645 NOAA    SPECTROMETER    SEM     SPACE ENVIRONMENT MONITOR
+650 650 NRSCC   RADIOMETER      MVIRSR (10 CHANNEL)     MULTISPECTRA"    L VISIBLE AND INFRA-RED SCAN RADIOMETER
+651 651 NRSCC   RADIOMETER      MVIRSR (3 CHANNEL)      MULTISPECTRA"    L VISIBLE AND INFRA-RED SCAN RADIOMETER
+652 652 NRSCC   RADIOMETER      MVIRSR (5 CHANNEL)      MULTISPECTRA"    L VISIBLE AND INFRA-RED SCAN RADIOMETER
+670 670 NSAU    RADAR   RLSBO   SIDE LOOKING MICROWAVE RADAR
+680 680 NSAU    HIGH RESOLUTION OPTICAL IMAGERS MSU-EU  MULTI-SPECTR"    AL RADIOMETER WITH HIGH RESOLUTION
+681 681 NSAU    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     MSU-"    UM  VISIBLE MULTI-SPECTRAL RADIOMETER
+682 682 NSAU    RADIOMETER      RM-08   IMAGING MICROWAVE RADIOMETER
+683 683 NSAU    HIGH RESOLUTION OPTICAL IMAGERS SU-UMS  STEREO RADIO"    METER WITH HIGH RESOLUTION
+684 684 NSAU    HIGH RESOLUTION OPTICAL IMAGERS SU-VR   VISIBLE RADI"    OMETER WITH HIGH RESOLUTION
+685 685 NSAU    RADIOMETER      TRASSER
+700 700 ROSCOSMOS       COMMUNICATIONS  KONDOR-2        DATA COLLECT"    ION AND TRANSMISSION SYSTEM
+701 701 ROSCOSMOS       COMMUNICATIONS  BRK
+710 710 ROSCOSMOS       LIDAR   ALISSA  BACKSCATTER LIDAR
+712 712 ROSCOSMOS       LIDAR   BALKAN-2 LIDAR
+715 715 ROSCOSMOS       LIDAR   MK-4
+716 716 ROSCOSMOS       LIDAR   MK-4M
+730 730 ROSCOSMOS       RADAR   GREBEN  RADAR ALTIMETER
+731 731 ROSCOSMOS       RADAR   SAR-10  SYNTETIC APERTURE RADAR
+732 732 ROSCOSMOS       RADAR   SAR-3   SYNTETIC APERTURE RADAR
+733 733 ROSCOSMOS       RADAR   SAR-70  SYNTETIC APERTURE RADAR
+740 740 ROSCOSMOS       RADAR   SLR-3   SIDE LOOKING RADAR
+745 745 ROSCOSMOS       RADAR   TRAVERS SAR
+750 750 ROSCOSMOS       RADIOMETER      174-K   TEMPERATURE AND HUMI"    DITY PROFILER
+751 751 ROSCOSMOS       RADIOMETER      BTVK    SCANNING TELEVISION"    RADIOMETER
+752 752 ROSCOSMOS       RADIOMETER      CHAIKA  SCANNING IR RADIOMET"    ER
+753 753 ROSCOSMOS       RADIOMETER      DELTA-2 MULTISPECTRAL MICROW"    AVE SCANNER
+755 755 ROSCOSMOS       RADIOMETER      IKAR-D  MULTISPECTRAL MICROW"    AVE SCANNER
+756 756 ROSCOSMOS       RADIOMETER      IKAR-N  MULTISPECTRAL MICROW"    AVE SCANNER
+757 757 ROSCOSMOS       RADIOMETER      IKAR-P  MULTISPECTRAL MICROW"    AVE SCANNER
+760 760 ROSCOSMOS       RADIOMETER      ISP
+761 761 ROSCOSMOS       RADIOMETER      KFA-1000        PHOTOGRAPHIC"     CAMERA
+762 762 ROSCOSMOS       RADIOMETER      KFA-200 PHOTOGRAPHIC CAMERA
+763 763 ROSCOSMOS       RADIOMETER      KFA-3000        PHOTOGRAPHIC"     CAMERA
+770 770 ROSCOSMOS       RADIOMETER     KLIMAT SCANNING IR RADIOMETER
+771 771 ROSCOSMOS       RADIOMETER      KLIMAT-2        SCANNING IR"    RADIOMETER
+775 775 ROSCOSMOS       RADIOMETER      MIRAS
+776 776 ROSCOSMOS       RADIOMETER      MIVZA
+777 777 ROSCOSMOS       RADIOMETER      MIVZA-M MICROWAVE SCANNING R"    ADIOMETER
+780 780 ROSCOSMOS       RADIOMETER      MR-2000
+781 781 ROSCOSMOS       RADIOMETER      MR-2000M
+785 785 ROSCOSMOS       RADIOMETER      MR-900  SCANNING TELEPHOTOME"    TER
+786 786 ROSCOSMOS       RADIOMETER      MR-900B SCANNING VISUAL BAND"     TELEPHOTOMETER
+790 790 ROSCOSMOS       RADIOMETER      MSU-E   MULTISPECTRAL HIGH R"    ESOLUTION ELECTRONIC SCANNER
+791 791 ROSCOSMOS       RADIOMETER      MSU-E1  MULTISPECTRAL HIGH R"    ESOLUTION ELECTRONIC SCANNER
+792 792 ROSCOSMOS       RADIOMETER      MSU-E2  MULTISPECTRAL HIGH R"    ESOLUTION ELECTRONIC SCANNER
+793 793 ROSCOSMOS       RADIOMETER      MSU-M
+794 794 ROSCOSMOS       RADIOMETER      MSU-S   MULTISPECTRAL MEDIUM"     RESOLUTION SCANNER
+795 795 ROSCOSMOS       RADIOMETER      MSU-SK  MULTISPECTRAL MEDIUM"    RESOLUTION CONICAL SCANNER
+796 796 ROSCOSMOS       RADIOMETER      MSU-V   MULTISPECTRAL HIGH R"    ESOLUTION CONICAL SCANNER
+810 810 ROSCOSMOS       RADIOMETER      MTZA    SCANNING MICROWAVE R"    ADIOMETER
+815 815 ROSCOSMOS       IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE"    MICROWAVE)  MZOAS   SCANNING MICROWAVE RADIO"    METER
+820 820 ROSCOSMOS       IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE"    MICROWAVE)  R-225   SINGLE CHANNEL MICROWAVE"     RADIOMETER
+821 821 ROSCOSMOS       RADIOMETER      R-400
+822 822 ROSCOSMOS       RADIOMETER      R-600   SINGLE CHANNEL MICRO"    WAVE RADIOMETER
+830 830 ROSCOSMOS       RADIOMETER      RMS     RADIATION MEASUREMEN"    T SYSTEM
+835 835 ROSCOSMOS       RADIOMETER      TV CAMERA
+836 836 ROSCOSMOS       RADIOMETER      SILVA
+840 840 ROSCOSMOS       SPECTRO-RADIOMETER      SROSMO  SPECTRORADIO"    METER FOR OCEAN MONITORING
+850 850 ROSCOSMOS       SPECTROMETER    BUFS-2  BACKSCATTER SPECTROM"    ETER/2
+851 851 ROSCOSMOS       SPECTROMETER    BUFS-4  BACKSCATTER SPECTROM"    ETER/4
+855 855 ROSCOSMOS       SPECTROMETER    ISTOK-1 INFRA-RED SPECTROMET"    ER
+856 856 ROSCOSMOS       SPECTROMETER    SFM-2   SPECTROMETER TO MEAS"    URE DIRECT SOLAR RADIATION
+857 857 ROSCOSMOS       SPECTROMETER    DOPI
+858 858 ROSCOSMOS       SPECTROMETER    KGI-4
+859 859 ROSCOSMOS       SPECTROMETER    OZON-M
+860 860 ROSCOSMOS       SPECTROMETER    RMK-2
+900 900 NOAA    RADIOMETER      MAXIE   MAGNETOSPHERIC ATMOSPHERIC X"    -RAY IMAGING EXPERIMENT
+901 901 NOAA    RADIOMETER      OLS     OPERATIONAL LINESCAN SYSTEM
+905 905 NOAA    RADIOMETER      SSM/I   MISSION SENSOR MICROWAVE IMA"    GER
+906 906 NOAA    RADIOMETER      SSM/T-1 MISSION SENSOR MICROWAVE TEM"    PERATURE SOUNDER
+907 907 NOAA    RADIOMETER      SSM/T-2 MISSION SENSOR MICROWAVE WAT"    ER VAPOR SOUNDER
+908 908 NOAA    RADIOMETER      SSMIS   SPECIAL SENSOR MICROWAVE IMA"    GER SOUNDER
+910 910 NOAA    RADIOMETER      SXI     SOLAR X-RAY IMAGER
+930 930 NOAA    SPECTROMETER    EHIC    ENERGETIC HEAVY ION COMPOSIT"    ION EXPERIMENT
+931 931 NOAA    SPECTROMETER    X-RAY ASTRONOMY PAYLOAD
+932 932 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     IVIS"    SR (FY-2)   IMPROVED MULTISPECTRAL VISIBLE AND INFRA-RED SCA"    N RADIOMETER (5 CHAN
+933 933 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   IRAS"        INFRARED ATMOSPHERIC SOUNDER
+934 934 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   MWAS"        MICROWAVE ATMOSPHERIC SOUNDER
+935 935 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   IMWA"    S   IMPROVED MICROWAVE ATMOSPHERIC SOUNDER
+936 936 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   MWHS"        MICROWAVE HUMIDITY SOUNDER
+937 937 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     MVIR"    S   MODERATE RESOLUTION VISIBLE AND INFRARED IMAGING SPECTRO"    RADIOMETER
+938 938 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  MWRI    MICROWAVE RADIATION IMAGER
+940 940 ROSCOSMOS       ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDER"    S   MTVZA-OK        SCANNING MICROWAVE RADIOMETER
+941 941 CNES    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   SAPH"    IR
+944 944 NOAA    RADAR ALTIMETERS        ALT     ALTIMETER
+945 945 NOAA    EARTH RADIATION BUDGET RADIOMETER       TSIS    TOTA"    L SOLAR IRRADIANCE SENSOR
+946 946 NOAA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  CMIS    CONICAL-SCANNING MICROWAVE IMAGER/SOUNDER
+947 947 NOAA    TOTAL AND PROFILE OZONE OMPS    OZONE MAPPING AND PR"    OFILER SUITE
+948 948 NOAA    SPACE ENVIRONMENT ATMOSPHERIC TEMPERATURE AND HUMIDI"    TY SOUNDERS GPSOS   GLOBAL POSITIONING SYSTEM OCCULTATION SE"    NSOR
+949 949 NOAA    MAGNETIC FIELD, AUROAL IMAGERY SCINTILLATION BOUNDAR"    Y   SESS    SPACE ENVIRONMENTAL SENSOR SUITE
+950 950 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VIRR"        MULTISPECTRAL VISIBLE AND INFRA-RED SCAN RADIOMETER (10"    CHANNELS
+951 951 NRSCC   TOTAL AND PROFILE OZONE TOM     TOTAL OZONE MAPPER
+952 952 NRSCC   TOTAL AND PROFILE OZONE OP      OZONE PROFILER
+2047 2047 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2020.table b/definitions/bufr/tables/0/wmo/10/codetables/2020.table
new file mode 100644
index 0000000..637ea6a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2020.table
@@ -0,0 +1,24 @@
+0 0 NIMBUS
+1 1 VTPR
+2 2 TIROS 1 (TIROS, NOAA-6 TO NOAA-13)
+3 3 TIROS 2 (NOAA-14 ONWARDS)
+10 10 EOS
+31 31 DMSP
+61 61 EUMETSAT POLAR SYSTEM (EPS)
+91 91 ERS
+121 121 ADEOS
+241 241 GOES
+261 261 JASON
+271 271 GMS
+272 272 MTSAT
+301 301 INSAT
+331 331 METEOSAT OPERATIONAL PROGRAMME (MOP)
+332 332 METEOSAT TRANSITIONAL PROGRAMME (MTP)
+333 333 METEOSAT SECOND GENERATION PROGRAMME (MSG)
+351 351 GOMS
+380 380 FY-1
+381 381 FY-2
+401 401 GPS
+402 402 GLONASS
+403 403 GALILEO
+511 511 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2021.table b/definitions/bufr/tables/0/wmo/10/codetables/2021.table
new file mode 100644
index 0000000..4ebf429
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2021.table
@@ -0,0 +1,8 @@
+1 1 HIGH RESOLUTION INFRA RED SOUNDER (HIRS)
+2 2 MICROWAVE SOUNDING UNIT           (MSU )
+3 3 STRATOSPHERIC SOUNDING UNIT       (SSU)
+4 4 AMI WIND MODE
+5 5 AMI WAVE MODE
+6 6 AMI IMAGE MODE
+7 7 RADAR ALTIMETER
+8 8 ATSR
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2022.table b/definitions/bufr/tables/0/wmo/10/codetables/2022.table
new file mode 100644
index 0000000..5068e7f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2022.table
@@ -0,0 +1,5 @@
+1 1 PROCESSING TECHNIQUE NOT DEFINED
+2 2 AUTOMATED STATISTICAL REGRESSION
+3 3 CLEAR PATH
+4 4 PARTLY CLOUDY PATH
+5 5 CLOUDY PATH
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2023.table b/definitions/bufr/tables/0/wmo/10/codetables/2023.table
new file mode 100644
index 0000000..428ca3b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2023.table
@@ -0,0 +1,12 @@
+0 0 RESERVED
+1 1 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE INFRARED"    CHANNEL
+2 2 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE VISIBLE CHANNEL
+3 3 WIND DERIVED FROM CLOUD MOTION OBSERVED IN WATER VAPOUR CHANNEL
+4 4 WIND DERIVED FROM MOTION OBSERVED IN  COMBINATION OF SPECTRAL"    CHANNELS
+5 5 WIND DERIVED FROM MOTION OBSERVED IN THE WATER  VAPOUR CHANNEL"    IN CLEAR AIR
+6 6 WIND DERIVED FROM MOTION OBSERVED IN THE OZONE  CHANNEL
+7 7 WIND DERIVED FROM MOTION OBSERVED IN WATER VAPOUR CHANNEL"    (CLOUD OR CLEAR AIR NOT SPECIFIED)
+8 8 WIND DERIVED FROM ALTIMETER
+9 9 WIND DERIVED FROM RADIOMETER
+13 13 ROOT MEAN SQUARE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2024.table b/definitions/bufr/tables/0/wmo/10/codetables/2024.table
new file mode 100644
index 0000000..ba7498e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2024.table
@@ -0,0 +1,3 @@
+1 1 TABLE WITH FULL RANGE OF HUMIDITY VARIATION IN LAYER
+2 2 REGRESSION TECHNIQUE ON 2 HUMIDITY VALUES IN LAYER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2025.table b/definitions/bufr/tables/0/wmo/10/codetables/2025.table
new file mode 100644
index 0000000..6c8403c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2025.table
@@ -0,0 +1,16 @@
+1 1 RESERVED
+2 2 HIRS
+3 3 MSU
+6 6 HIRS
+7 7 MSU
+10 10 HIRS(1, 2, 3, 8,9, 16, 17)
+11 11 HIRS(1, 2, 3, 9, 17)
+12 12 MSU
+15 15 HIRS
+16 16 HIRS
+17 17 MSU
+18 18 SKINTK(OCEAN ONLY)
+21 21 HIRS
+22 22 SSU
+23 23 MSU (3 ,4)
+25 25 MISSING
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2030.table b/definitions/bufr/tables/0/wmo/10/codetables/2030.table
new file mode 100644
index 0000000..c58949d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2030.table
@@ -0,0 +1,7 @@
+1 1 ADCP (ACOUSTIC DOPPLER CURRENT PROFILER)
+2 2 GEK (GEOMAGNETIC ELECTRO KINETOGRAPH)
+3 3 SHIPS'S SET AND DRIFT DETERMINED BY FIXES 3-6 HOURS APART
+4 4 SHIPS'S SET AND DRIFT DETERMINED BY MORE THAN 6 HOURS BUT LE"    SS THAN 12 HOURS APART
+5 5 DRIFT OF BUOY
+6 6 ADCP (ACOUSTIC DOPPLER CURRENT PROFILER)
+7 7 MISSIN VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2031.table b/definitions/bufr/tables/0/wmo/10/codetables/2031.table
new file mode 100644
index 0000000..1c0f4b8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2031.table
@@ -0,0 +1,21 @@
+0 0 RESERVED
+1 1 INSTANTANEOUS
+2 2 AVERAGED OVER 3 MINUTES OR LESS
+3 3 AVERAGED OVER MORE THAN 3 MINUTES, BUT 6 AT THE MOST
+4 4 AVERAGED OVER MORE THAN 6 MINUTES, BUT 12 AT THE MOST
+5 5 INSTANTANEOUS
+6 6 AVERAGED OVER 3 MINUTES OR LESS
+7 7 AVERAGED OVER MORE THAN 3 MINUTES, BUT 6 AT THE MOST
+8 8 AVERAGED OVER MORE THAN 6 MINUTES, BUT 12 AT THE MOST
+9 9 VECTOR OR DOPPLER CURRENT PROFILLING METHOD NOT USED
+10 10 RESERVED
+11 11 1 HOUR OR LESS
+12 12 MORE THAN  1 HOUR BUT  2 AT THE MOST
+13 13 MORE THAN  2 HOUR BUT  4 AT THE MOST
+14 14 MORE THAN  4 HOUR BUT  8 AT THE MOST
+15 15 MORE THAN  8 HOUR BUT 12 AT THE MOST
+16 16 MORE THAN 12 HOUR BUT 18 AT THE MOST
+17 17 MORE THAN 18 HOUR BUT 24 AT THE MOST
+18 18 RESERVED
+19 19 DRIFT METHOD NOT USED
+31 31 MISSING
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2032.table b/definitions/bufr/tables/0/wmo/10/codetables/2032.table
new file mode 100644
index 0000000..8d60fe6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2032.table
@@ -0,0 +1,4 @@
+0 0 VALUES AT SELECTED DEPTHS (DATA POINTS FIXED BY THE INSTRUME"    NT OR SELECTED BY ANY OTHER METHOD)
+1 1 VALUES AT SIGNIFICANT DEPTHS (DATA POINTS TAKEN FROM TRACES"    AT SIGNIFICANT DEPTHS)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2033.table b/definitions/bufr/tables/0/wmo/10/codetables/2033.table
new file mode 100644
index 0000000..55ee821
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2033.table
@@ -0,0 +1,5 @@
+0 0 NO SALINITY MEASURED
+1 1 IN SITU SENSOR, ACCURACY BETTER THAN 0.02 %
+2 2 IN SITU SENSOR, ACCURACY LESS THAN 0.02 %
+3 3 SAMPLE ANALYSIS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2034.table b/definitions/bufr/tables/0/wmo/10/codetables/2034.table
new file mode 100644
index 0000000..06cdd52
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2034.table
@@ -0,0 +1,7 @@
+0 0 UNSPECIFIED DROGUE
+1 1 HOLEY SOCK
+2 2 TRISTAR
+3 3 WINDOW SHADE
+4 4 PARACHUTE
+5 5 NON-LAGRANGIAN SEA ANCHOR
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2036.table b/definitions/bufr/tables/0/wmo/10/codetables/2036.table
new file mode 100644
index 0000000..4e69a0c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2036.table
@@ -0,0 +1,4 @@
+0 0 DRIFTING BUOY
+1 1 FIXED BUOY
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2037.table b/definitions/bufr/tables/0/wmo/10/codetables/2037.table
new file mode 100644
index 0000000..67049ca
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2037.table
@@ -0,0 +1,7 @@
+0 0 REASERVED
+1 1 MANUAL READING FROM VERTICAL TIDE STAFF
+2 2 MANUAL READING FROM SINGLE AUTOMATIC RECORDER AT STATION
+3 3 MANUAL READING FROM MULTIPLE AUTOMATIC RECORDERS AT STATION
+4 4 AUTOMATIC READING FROM SINGLE AUTOMATIC RECORDER AT STATION"    WITHOUT LEVEL REFERENCE CHECK
+5 5 AUTOMATIC READING FROM SINGLE AUTOMATIC RECORDER AT STATION"    WITH LEVEL REFERENCE CHECK,OR MULTIPLE AUTOMATIC RECORDERS
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2038.table b/definitions/bufr/tables/0/wmo/10/codetables/2038.table
new file mode 100644
index 0000000..25c58c5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2038.table
@@ -0,0 +1,12 @@
+0 0 SHIP INTAKE
+1 1 BUCKET
+2 2 HULL CONTACT SENSOR
+3 3 REVERSING TERMOMETER
+4 4 STD/CTD SENSOR
+5 5 MECHANICAL BT
+6 6 EXPANDABLE BT
+7 7 DIGITAL BT
+8 8 THERMISTOR CHAIN
+9 9 INFRARED SCANNER
+10 10 MICROWAVE SCANNER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2039.table b/definitions/bufr/tables/0/wmo/10/codetables/2039.table
new file mode 100644
index 0000000..0a94982
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2039.table
@@ -0,0 +1,5 @@
+0 0 MEASURED WET-BULB TEMPERATURE
+1 1 ICED BULB MEASURED WET-BULB TEMPERATURE
+2 2 COMPUTED WET-BULB TEMPERATURE
+3 3 ICED BULB COMPUTED WET-BULB TEMPERATURE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2040.table b/definitions/bufr/tables/0/wmo/10/codetables/2040.table
new file mode 100644
index 0000000..5fcc074
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2040.table
@@ -0,0 +1,8 @@
+0 0 SHIPS MOTION REMOVED BY AVARAGING
+1 1 SHIPS MOTION REMOVED BY MOTION COMPENSATION
+2 2 SHIPS MOTION NOT REMOVED
+3 3 SHIPS MOTION REMOVED BY AVERAGING
+4 4 SHIPS MOTION REMOVED BY MOTION COMPENSATION
+5 5 SHIPS MOTION NOT REMOVED
+6 6 DOPPLER CURRENT PROFILING METHOD NOT USED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2041.table b/definitions/bufr/tables/0/wmo/10/codetables/2041.table
new file mode 100644
index 0000000..f479da9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2041.table
@@ -0,0 +1,6 @@
+0 0 INFORMATION BASED ON MANUAL ANALYSIS
+1 1 INFORMATION BASED ON COMPUTER ANALYSIS
+2 2 INFORMATION BASED ON DATA ASSIMILATION
+3 3 INFORMATION BASED ON COMPUTER ANALYSIS OR DATA ASSIMSILATIO"    N MANUALLY MODIFIED
+10 10 INFORMATION BASED ON THE NUMERICAL WEATHER PREDICTION
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2044.table b/definitions/bufr/tables/0/wmo/10/codetables/2044.table
new file mode 100644
index 0000000..80afaca
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2044.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 LONGUET-HIGGINS (1964)
+2 2 LONGUET-HIGGINS (F3 METHOS)
+3 3 MAXIMUM LIKELIHOOD METHOD
+4 4 MAXIMUM ENTROPY METHOD
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2045.table b/definitions/bufr/tables/0/wmo/10/codetables/2045.table
new file mode 100644
index 0000000..374e4f2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2045.table
@@ -0,0 +1,5 @@
+0 0 SEA STATION
+1 1 AUTOMATIC DATA BUOY
+2 2 AIRCRAFT
+3 3 SATELLITE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2046.table b/definitions/bufr/tables/0/wmo/10/codetables/2046.table
new file mode 100644
index 0000000..c4fb394
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2046.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 HEAVE SENSOR
+2 2 SLOPE SENSOR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2048.table b/definitions/bufr/tables/0/wmo/10/codetables/2048.table
new file mode 100644
index 0000000..69e2610
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2048.table
@@ -0,0 +1,12 @@
+0 0 HIRS
+1 1 MSU
+2 2 SSU
+3 3 AMSU-A
+4 4 AMSU-B
+5 5 AVHRR
+6 6 SSMI
+7 7 NSCAT
+8 8 SEA WINDS
+9 9 POSEIDON ALTIMETER
+10 10 JMR (JASON MICROWAVE RADIOMETER)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2049.table b/definitions/bufr/tables/0/wmo/10/codetables/2049.table
new file mode 100644
index 0000000..15b2ce5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2049.table
@@ -0,0 +1,4 @@
+1 1 PROCESSING TECHNIQUE NOT DEFINED
+2 2 SIMULTANIOUS PHISICAL RETRIEVAL
+3 3 CLEAR SOUNDING
+4 4 CLOUDY COUNDING
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2050.table b/definitions/bufr/tables/0/wmo/10/codetables/2050.table
new file mode 100644
index 0000000..c9688ef
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2050.table
@@ -0,0 +1,19 @@
+1 1 CHANNEL 1 14.71 MICROMETERS
+2 2 CHANNEL 2 14.37 MICROMETERS
+3 3 CHANNEL 3 14.06 MICROMETERS
+4 4 CHANNEL 4 13.64 MICROMETERS
+5 5 CHANNEL 5 13.37 MICROMETERS
+6 6 CHANNEL 6 12.66 MICROMETERS
+7 7 CHANNEL 7 12.02 MICROMETERS
+8 8 CHANNEL 8 11.03 MICROMETERS
+9 9 CHANNEL 9  9.71 MICROMETERS
+10 10 CHANNEL 10 7.43 MICROMETERS
+11 11 CHANNEL 11 7.02 MICROMETERS
+12 12 CHANNEL 12 6.51 MICROMETERS
+13 13 CHANNEL 13 4.57 MICROMETERS
+14 14 CHANNEL 14 4.52 MICROMETERS
+15 15 CHANNEL 15 4.45 MICROMETERS
+16 16 CHANNEL 16 4.13 MICROMETERS
+17 17 CHANNEL 17 3.98 MICROMETERS
+18 18 CHANNEL 18 3.74 MICROMETERS
+19 19 CHANNEL 19 0.969 MICROMETERS
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2051.table b/definitions/bufr/tables/0/wmo/10/codetables/2051.table
new file mode 100644
index 0000000..2f0ab22
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2051.table
@@ -0,0 +1,4 @@
+1 1 MAXIMUM/MINIMUM THERMOMETERS
+2 2 AUTOMATED INSTRUMENT
+3 3 THERMOGRAPH
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2052.table b/definitions/bufr/tables/0/wmo/10/codetables/2052.table
new file mode 100644
index 0000000..4b934ab
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2052.table
@@ -0,0 +1,5 @@
+1 1 CHANNEL 1 0.55-.75 MICROMETERS
+2 2 CHANNEL 2 3.9 MICROMETERS
+3 3 CHANNEL 3 6.7 MICROMETERS
+4 4 CHANNEL 4 10.7 MICROMETERS
+5 5 CHANNEL 5 12.0 MICROMETERS
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2053.table b/definitions/bufr/tables/0/wmo/10/codetables/2053.table
new file mode 100644
index 0000000..68c67fe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2053.table
@@ -0,0 +1,5 @@
+0 0 OBSERVED BRIGHTNESS TEMPERATURES
+1 1 BRIGHTNESS TEMPERATURE WITH BIAS CORRECTION APPLIED
+2 2 BRIGHTNESS TEMPERATURE CALCULATED FROM FIRST GUESS
+3 3 BRIGHTNESS TEMPERATURE CALCULATED FROM SOUNDING
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2054.table b/definitions/bufr/tables/0/wmo/10/codetables/2054.table
new file mode 100644
index 0000000..6260713
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2054.table
@@ -0,0 +1,6 @@
+0 0 PARAMETER DERIVED USING OBSERVED SOUNDER BRIGHTNESS TEMPERAT"    URES
+1 1 PARAMETER DERIVED USING OBSERVED IMAGER BRIGHTNESS TEMPERATU"    RES
+2 2 PARAMETER DERIVED USING FIRST GUESS INFORMATION
+3 3 PARAMETER DERIVED USING  NMC ANALYSIS INFORMATION
+4 4 PARAMETER DERIVED USING RADIOSONDE INFORMATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2055.table b/definitions/bufr/tables/0/wmo/10/codetables/2055.table
new file mode 100644
index 0000000..8c9fce2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2055.table
@@ -0,0 +1,9 @@
+0 0 STATISTICS GENERATED COMPARING RETRIEVAL VERSUS RADIOSONDE
+1 1 STATISTICS GENERATED COMPARING RETRIEVAL VERSUS FIRST GUESS
+2 2 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS FIRST GUESS
+3 3 STATISTICS GENERATED COMPARING OBSERVED VERSUS RETRIEVAL
+4 4 STATISTICS GENERATED COMPARING OBSERVED VERSUS FORST GUESS
+5 5 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS IMAGER
+6 6 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS SOUNDER
+7 7 STATISTICS GENERATED FOR RADIOSONDE
+8 8 STATISTICS GENERATED FOR FIRST GUESS
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2056.table b/definitions/bufr/tables/0/wmo/10/codetables/2056.table
new file mode 100644
index 0000000..3bdc910
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2056.table
@@ -0,0 +1,6 @@
+0 0 SUMS OF DIFFERENCE
+1 1 SUMS OF SQUARED DIFFERENCES
+2 2 SAMPLE SIZE
+3 3 MINIMUM DIFFERENCE
+4 4 MAXIMUM DIFFERENCE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2057.table b/definitions/bufr/tables/0/wmo/10/codetables/2057.table
new file mode 100644
index 0000000..a5cb21e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2057.table
@@ -0,0 +1,6 @@
+0 0 NESTED GRID MODEL (NMG)
+1 1 AVIATION MODEL(AVN)
+2 2 MEDIUM RANGE FORECAST (MRF) MODEL
+3 3 GLOBAL DATA ASSIMILATION SYSTEM (GDAS) FORECAST MODEL
+4 4 PRIOR SOUNDINGS (WITHIN 3 HOURS OF CURRENT TIME)
+5 5 CLIMATOLOGY
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2058.table b/definitions/bufr/tables/0/wmo/10/codetables/2058.table
new file mode 100644
index 0000000..258c4ad
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2058.table
@@ -0,0 +1,5 @@
+0 0 12 HOUR AND 18 HOUR
+1 1 18 HOUR AND 24 HOUR
+2 2  6 HOUR AND 12 HOUR
+3 3 GREATER THAN 24 HOUR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2059.table b/definitions/bufr/tables/0/wmo/10/codetables/2059.table
new file mode 100644
index 0000000..58f9c5c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2059.table
@@ -0,0 +1,5 @@
+0 0 NCEP NESTED GRID MODEL ANALYSIS
+1 1 NCEP AVIATION MODEL ANALYSIS
+2 2 NCEP MEDIUM RANGE FORECAST MODEL ANALYSIS
+3 3 NCEP GLOBAL DATA ASSIMILATION SYSTEM FORECAST MODEL ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2060.table b/definitions/bufr/tables/0/wmo/10/codetables/2060.table
new file mode 100644
index 0000000..84a612d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2060.table
@@ -0,0 +1,7 @@
+0 0 CURRENT SURFACE HOURLY REPORTS
+1 1 CURRENT SHIP REPORTS
+2 2 CURRENT BUOY REPORTS
+3 3 ONE HOUR OLD SURFACE HOURLY REPORTS
+4 4 ONE HOUR SHIP OLD REPORTS
+5 5 ONE HOUR BUOY OLD REPORTS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2061.table b/definitions/bufr/tables/0/wmo/10/codetables/2061.table
new file mode 100644
index 0000000..3298d90
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2061.table
@@ -0,0 +1,3 @@
+0 0 INERTIAL NAVIGATOR SYSTEM
+1 1 OMEGA
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2062.table b/definitions/bufr/tables/0/wmo/10/codetables/2062.table
new file mode 100644
index 0000000..7083db9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2062.table
@@ -0,0 +1,7 @@
+0 0 ASDAR
+1 1 ASDAR(ACARS ALSO AVAILABLE BUT NOT OPERATIVE)
+2 2 ASDAR(ACARS ALSO AVAILABLE AND OPERATIVE)
+3 3 ACARS
+4 4 ACARS(ASDAR ALSO AVALILABLE BUT NOT OPERATIVE)
+5 5 ACARS(ASDAR ALSO AVAILABLE AND OPERATIVE)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2064.table b/definitions/bufr/tables/0/wmo/10/codetables/2064.table
new file mode 100644
index 0000000..7414302
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2064.table
@@ -0,0 +1,4 @@
+0 0 GOOD
+1 1 BAD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2066.table b/definitions/bufr/tables/0/wmo/10/codetables/2066.table
new file mode 100644
index 0000000..b1778d1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2066.table
@@ -0,0 +1,4 @@
+0 0 TRS 2000
+1 1 IMS 1500C
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2070.table b/definitions/bufr/tables/0/wmo/10/codetables/2070.table
new file mode 100644
index 0000000..5f294e6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2070.table
@@ -0,0 +1,13 @@
+0 0 ACTUAL LOCATION IN SECONDS
+1 1 ACTUAL LOCATION IN MINUTES
+2 2 ACTUAL LOCATION IN DEGREES
+3 3 ACTUAL LOCATION IN DECIDEGREES
+4 4 ACTUAL LOCATION OM CENTIDEGREES
+5 5 REFERENCED TO CHECKPOINT IN SECONDS
+6 6 REFERENCED TO CHECKPOINT IN MINUTES
+7 7 REFERENCED TO CHECKPOINT IN DEGREES
+8 8 REFERENCED TO CHECKPOINT IN DECIDEGREES
+9 9 REFERENCED TO CHECKPOINT IN CENTIDEGREES
+10 10 ACTUAL LOCATION IN TENTHS OF A MINUTE
+11 11 REFERENCED TO CHECKPOINT IN TENTHS OF A MINUTE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2080.table b/definitions/bufr/tables/0/wmo/10/codetables/2080.table
new file mode 100644
index 0000000..b0eb6d2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2080.table
@@ -0,0 +1,5 @@
+0 0 KAYSAM
+1 1 TOTEX
+2 2 KKS
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2081.table b/definitions/bufr/tables/0/wmo/10/codetables/2081.table
new file mode 100644
index 0000000..4c0f1dc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2081.table
@@ -0,0 +1,9 @@
+0 0 GP26
+1 1 GP28
+2 2 GP30
+3 3 HM26
+4 4 HM28
+5 5 HM30
+6 6 SV16
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2083.table b/definitions/bufr/tables/0/wmo/10/codetables/2083.table
new file mode 100644
index 0000000..61c3e1e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2083.table
@@ -0,0 +1,6 @@
+0 0 HIGH BAY
+1 1 LOW BAY
+2 2 BALLOON INFLATION LAUNCH SYSTEM (BILS)
+3 3 ROOF-TOP BILS
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2084.table b/definitions/bufr/tables/0/wmo/10/codetables/2084.table
new file mode 100644
index 0000000..be6430a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2084.table
@@ -0,0 +1,5 @@
+0 0 HYDROGEN
+1 1 HELIUM
+2 2 NATURAL GAS
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2095.table b/definitions/bufr/tables/0/wmo/10/codetables/2095.table
new file mode 100644
index 0000000..79f4996
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2095.table
@@ -0,0 +1,5 @@
+0 0 CAPACITANCE ANEROID
+1 1 DERIVED FROM GPS
+2 2 RESISTIVE STRAIN GAUGE
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2096.table b/definitions/bufr/tables/0/wmo/10/codetables/2096.table
new file mode 100644
index 0000000..b856de9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2096.table
@@ -0,0 +1,5 @@
+0 0 ROD THERMISTOR
+1 1 BEAD THERMISTOR
+2 2 CAPACITANCE BEAD
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2097.table b/definitions/bufr/tables/0/wmo/10/codetables/2097.table
new file mode 100644
index 0000000..0e511a1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2097.table
@@ -0,0 +1,8 @@
+0 0 VIZ MARK II CARBON HYGRISTOR
+1 1 VIZ B2 HYGRISTOR
+2 2 VAISALA A-HUMICAP
+3 3 VAISALA H-HUMICAP
+4 4 CAPACITANCE SENSOR
+5 5 VAISALA RS90
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2098.table b/definitions/bufr/tables/0/wmo/10/codetables/2098.table
new file mode 100644
index 0000000..6eb06d4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2098.table
@@ -0,0 +1,5 @@
+0 0 HH POLARISATION
+1 1 VV POLARISATION
+2 2 HV POLARISATION REAL VALUED COMPONENT
+3 3 HV POLARISATION IMAGINARY VALUED COMPONENT
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2101.table b/definitions/bufr/tables/0/wmo/10/codetables/2101.table
new file mode 100644
index 0000000..efdb3ec
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2101.table
@@ -0,0 +1,10 @@
+0 0 CENTRE FRONT-FED PARABOLOID
+1 1 OFFSET FRONT-FED PARABOLOID
+2 2 CENTRE CASSEGRAIN PARABOLOID
+3 3 OFFSET CASSEGRAIN PARABOLOID
+4 4 PLANAR ARRAY
+5 5 COAXIAL-COLLINEAR ARRAY
+6 6 YAGI ELEMENTS ARRAY
+7 7 MICROSTRIP
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2103.table b/definitions/bufr/tables/0/wmo/10/codetables/2103.table
new file mode 100644
index 0000000..3b7ee27
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2103.table
@@ -0,0 +1,2 @@
+1 1 RADAR ANTENNA IS PROTECTED BY A RADOME
+2 2 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2104.table b/definitions/bufr/tables/0/wmo/10/codetables/2104.table
new file mode 100644
index 0000000..100081a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2104.table
@@ -0,0 +1,7 @@
+0 0 HORIZONTAL POLARISATION
+1 1 VERTICAL POLARISATION
+2 2 RIGHT CIRCULAR POLARISATION
+3 3 LEFT CIRCULAR POLARSZATION
+4 4 HORIZONTAL AND VERTICAL POLARISATION
+5 5 RIGHT AND LEFT CIRCULAR POLARISATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/21066.table b/definitions/bufr/tables/0/wmo/10/codetables/21066.table
new file mode 100644
index 0000000..a3fd93c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/21066.table
@@ -0,0 +1,11 @@
+1 1 PROCESSING EQUIPMENT NOT WORKING
+2 2 EQUIPMENT FAILED
+3 3 PRF CODE CHANGED DURING IMAGE GENERATION
+4 4 SAMPLINH WINDOW CHANGED DURING IMAGE GENERATION
+5 5 GAIN CHANGED DURING IMAGE GENERATION
+6 6 CHIRP REPLICA EXCEEDS SPECIFIC VALUE
+7 7 INPUT DATA MEAN AND STANDARD DEVIATION OF IN-PHASE AND"    QUADRATURE OUT OF RANGE
+8 8 DOPPLER CENTROID CONFIDENCE > MMCC VALUE
+9 9 DOPPLER CENTROID ABSOLUTE VALUE > PRF/2
+10 10 DOPPLER AMBIGUITY CONFIDENCE < MMCC VALUE
+11 11 OUTPUT DATA MEAN AND STANDARD DEVIATION =< MMCC VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/21067.table b/definitions/bufr/tables/0/wmo/10/codetables/21067.table
new file mode 100644
index 0000000..9d0c51b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/21067.table
@@ -0,0 +1,12 @@
+1 1 NO FOREBEAM CALCULATION
+2 2 NO MIDBEAM CALCULATION
+3 3 NO AFTBEAM CALCULATION
+4 4 FOREBEAM ARCING DETECTED
+5 5 MID ARCING DETECTED
+6 6 AFTBEAM ARCING DETECTED
+7 7 ANY BEAM NOISE CONTENT ABOVE OR EQUAL TO TRESHOLD
+8 8 LAND (ANY LAND IN CELL FOOTPRINT)
+9 9 AUTONOMOUS AMBIGUITY REMOVAL NOT USED
+10 10 METEOROLOGICAL BACKGROUND NOT USED
+11 11 MINIMUM RESIDUAL EXCEEDED TRESHOLD
+12 12 FRAME CHECKSUM ERROR DETECTED
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/21068.table b/definitions/bufr/tables/0/wmo/10/codetables/21068.table
new file mode 100644
index 0000000..8e8b38e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/21068.table
@@ -0,0 +1,7 @@
+1 1 STANDARD DEVIATION OF WIND SPEED OUTSIDE MMCC LIMIT
+2 2 STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT OUTSIDE MMCC L"    IMIT
+3 3 STANDARD DEVIATION OF ALTITUDE OUTSIDE MMCC LIMIT
+4 4 MEAN PEAKINESS OUTSIDE MMCC LIMIT
+5 5 FRAME CHECKSUM ERROR DETECTED
+6 6 HEIGHT-TIME LOOP TIME CONSTANT CORRECTION NOT PERFORMED
+7 7 NOT ENOUGH MEASUREMENTS ( N< 10)
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/21069.table b/definitions/bufr/tables/0/wmo/10/codetables/21069.table
new file mode 100644
index 0000000..c343130
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/21069.table
@@ -0,0 +1,9 @@
+1 1 12.0 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+2 2 11.0 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+3 3  3.7 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+4 4  1.6 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+5 5 CLOUD IDENTIFICATION USED 1.6 MICROMETERS"    HISTOGRAM REFLECTANCE CLOUD TEST
+6 6 1.6 MICROMETERS HISTOGRAM REFLECTANCE CLOUD"    TEST USED DYNAMIC TRESHOLD
+7 7 SUN GLINT DETECTED BY 1.6 MICROMETERS REFLECTANCE CLOUD TEST
+8 8 3.7 MICROMETERS USED IN SEA-SURFACE TEMPERATURE RETRIEVAL
+9 9 SEA-SURFACE TEMPERATURE DERIVATION USED DAYTIME DATA"    (NIGHT-TIME IF ZERO)
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/21070.table b/definitions/bufr/tables/0/wmo/10/codetables/21070.table
new file mode 100644
index 0000000..7849b6c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/21070.table
@@ -0,0 +1,23 @@
+1 1 CELL 1:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+2 2 CELL 2:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL CELL NUMB"    ERING
+3 3 CELL 3:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+4 4 CELL 4:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL NW NE
+5 5 CELL 5:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 7 8 9
+6 6 CELL 6:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 4 5 6
+7 7 CELL 7:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 1 2 3
+8 8 CELL 8:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL SW SE
+9 9 CELL 9:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+10 10 -18 DUAL VIEW SST RETRIEVAL USED 3.7 MICRON CHANNEL (ONE BIT"    PER 10-ARCMIN CELL)
+11 11 CELL 1:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+12 12 CELL 3:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+13 13 CELL 4:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL NW NE
+14 14 CELL 5:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 7 8 9
+15 15 CELL 6:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 4 5 6
+16 16 CELL 7:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 1 2 3
+17 17 CELL 8:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL SW SE
+18 18 CELL 9:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+19 19 NADIR VIEW CONTAINS DAY-TIME DATA (NIGHT IF ZERO)
+20 20 FORWARD VIEW CONTAINS DAY-TIME DATA (NIGHT IF ZERO)
+21 21 RECORD CONTAINS CONTRIBUTIONS FROM INSTRUMENT SCANS ACQUIRED"     WHEN ERS PLATFORM NOT IN YAW-STEERING MODE
+22 22 RECORD CONTAINS CONTRIBUTIONS FROM INSTRUMENT SCANS FOR WHIC"    H PRODUCT CONFIDENCE DATA SHOW QUALITY IS POOR OR UNKNOWN
+23 23 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/21072.table b/definitions/bufr/tables/0/wmo/10/codetables/21072.table
new file mode 100644
index 0000000..521f791
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/21072.table
@@ -0,0 +1,3 @@
+1 1 HEIGHT ERROR CORRECTION APPLIED INSTEAD OF OPEN LOOP CALIBRA"    TION
+2 2 MICROWAVE SOUNDER USED FOR TROPOSPHERE CORRECTION
+3 3 AGC OUTPUT CORRECTION APPLIED INSTED OF OPEN LOOP CALIBRATIO"    N
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/21073.table b/definitions/bufr/tables/0/wmo/10/codetables/21073.table
new file mode 100644
index 0000000..9538fa5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/21073.table
@@ -0,0 +1,8 @@
+1 1 BLANK DATA RECORD
+2 2 TEST
+3 3 CALIBRATION (CLOSED LOOP)
+4 4 BITE
+5 5 ACQUISITION ON ICE
+6 6 ACQUISITION ON OCEAN
+7 7 TRACKING ON ICE
+8 8 TRACKING ON OCEAN
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/21076.table b/definitions/bufr/tables/0/wmo/10/codetables/21076.table
new file mode 100644
index 0000000..bc52ac5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/21076.table
@@ -0,0 +1,4 @@
+0 0 LINEAR
+1 1 LOGARITHMIC (BASE E)
+2 2 LOGARITHMIC (BASE 10)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/21109.table b/definitions/bufr/tables/0/wmo/10/codetables/21109.table
new file mode 100644
index 0000000..0990694
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/21109.table
@@ -0,0 +1,8 @@
+1 1 NOT ENOUGH GOOD SIGMA-0 AVAILABLE FOR WIND RETRIEVAL
+2 2 POOR AZIMUTH DIVERSITY AMONG SIGMA0- FOR  WIND RETRIEVAL
+8 8 SOME PORTION OF WIND VECTOR CELL IS OVER LAND
+9 9 SOME PORTION OF WIND VECTOR CELL IS OVER ICE
+10 10 WIND RETRIEVAL NOT PERFORMED FOR WIND  VECTOR CELL
+11 11 REPORTED WIND SPEED IS GREATER THAN 30 M/S
+12 12 REPORTED WIND SPEED IS LESS THAN OR EQUAL TO 3 M/S
+17 17 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/21115.table b/definitions/bufr/tables/0/wmo/10/codetables/21115.table
new file mode 100644
index 0000000..3bdb683
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/21115.table
@@ -0,0 +1,11 @@
+1 1 SIGMA-0 MEASUREMENT IS NOT USABLE
+2 2 SIGNAL TO NOISE RATIO IS LOW
+3 3 SIGMA-0 IS NEGATIVE
+4 4 SIGMA-0 IS OUTSIDE OF ACCEPTABLE RANGE
+5 5 SCATTEROMETER PULSE QUALITY IS NOT ACCEPTABLE
+6 6 SIGMA-0 CELL LOCATION ALGORITHM DOES NOT CONVERGE
+7 7 FREQUENCY SHIFT LIES BEYOND THE RANGE OF THE X FACTOR TABLE
+8 8 SPACECRAFT TEMPERATURE IS BEYOND CALIBRATION COEFFICIENT RAN"    GE
+9 9 NO APPLICABLE ATTITUDE RECORDS WERE FOUND FOR THIS SIGMA-0
+10 10 INTERPOLATED EPHEMERIS DATA ARE NOT ACCEPTABLE FOR THIS SIGM"    A-0
+17 17 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/21116.table b/definitions/bufr/tables/0/wmo/10/codetables/21116.table
new file mode 100644
index 0000000..10b5c53
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/21116.table
@@ -0,0 +1,16 @@
+1 1 CALIBRATION/MEASUREMENT PULSE FLAG (1)
+2 2 CALIBRATION/MEASUREMENT PULSE FLAG (2)
+3 3 OUTER ANTENNA BEAM
+4 4 SIGMA-0 CELL IS AFT OF SPACECRAFT
+5 5 CURRENT MODE (1)
+6 6 CURRENT MODE (2)
+7 7 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (1)
+8 8 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (2)
+9 9 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (3)
+10 10 LOW RESOLUTION MODE - WHOLE PULSE DATA
+11 11 SCATTEROMETER ELECTRONIC SUBSYSTEM B
+12 12 ALTERNATE SPIN RATE - 19.8 RPM
+13 13 RECEIVER PROTECTION ON
+14 14 SLICES PER COMPOSITE FLAG (1)
+15 15 SLICES PER COMPOSITE FLAG (2)
+16 16 SLICES PER COMPOSITE FLAG (3)
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/21119.table b/definitions/bufr/tables/0/wmo/10/codetables/21119.table
new file mode 100644
index 0000000..d46b083
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/21119.table
@@ -0,0 +1,14 @@
+0 0 RESERVED
+1 1 SASS
+2 2 SASS2
+3 3 NSCAT0
+4 4 NSCAT1
+5 5 NSCAT2
+6 6 QSCAT0
+7 7 QSCAT1
+31 31 CMOD1
+32 32 CMOD2
+33 33 CMOD3
+34 34 CMOD4
+35 35 CMOD5
+64 64 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/21144.table b/definitions/bufr/tables/0/wmo/10/codetables/21144.table
new file mode 100644
index 0000000..1f082e6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/21144.table
@@ -0,0 +1 @@
+1 1 RAIN
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2115.table b/definitions/bufr/tables/0/wmo/10/codetables/2115.table
new file mode 100644
index 0000000..c7e866c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2115.table
@@ -0,0 +1,7 @@
+0 0 PDB
+1 1 RSOIS
+2 2 ASOS
+3 3 PSYCHROMETER
+4 4 F420
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/21150.table b/definitions/bufr/tables/0/wmo/10/codetables/21150.table
new file mode 100644
index 0000000..8510046
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/21150.table
@@ -0,0 +1,4 @@
+0 0 DATA FROM SINGLE GROUND STATION (NO CO-LOCATION)
+1 1 DATA FROM MULTIPLE GROUND STATION (CO-LOCATED DATA)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/21155.table b/definitions/bufr/tables/0/wmo/10/codetables/21155.table
new file mode 100644
index 0000000..27cc03d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/21155.table
@@ -0,0 +1,16 @@
+1 1 NOT ENOUGH GOOD SIGMA-0 AVAILABLE FOR WIND RETRIEVAL
+2 2 POOR AZIMUTH DIVERSITY AMONG SIGMA-0 FOR WIND RETRIEVAL
+3 3 ANY BEAM NOISE CONTENT ABOVE TRESHOLD
+4 4 PRODUCT MONITORING NOT USED
+5 5 PRODUCT MONITORING FLAG
+6 6 KNMI QUALITY CONTROL FAILS
+7 7 VARIATIONAL QUALITY CONTROL FAILS
+8 8 SOME PORTION OF WIND VECTOR CELL IS OVER LAND
+9 9 SOME PORTION OF WIND VECTOR CELL IS OVER ICE
+10 10 WIND RETRIEVAL NOT PERFORMED FOR WIND VECTOR CELL
+11 11 REPORTED WIND SPEED IS GREATER THAN 30 M/S
+12 12 REPORTED WIND SPEED IS LESS THAN OR EQUAL TO 3 M/S
+13 13 RAIN FLAG FOR THE WIND VECTOR CELL IS NOT USABLE
+14 14 RAIN FLAG ALGORITHM DETECTS RAIN
+15 15 NO METEOROLOGICAL BACKGROUND USED
+16 16 DATA ARE REDUNDANT
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/21158.table b/definitions/bufr/tables/0/wmo/10/codetables/21158.table
new file mode 100644
index 0000000..dd53c51
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/21158.table
@@ -0,0 +1,4 @@
+0 0 ACCEPTABLE
+1 1 NOT ACCEPTABLE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/21159.table b/definitions/bufr/tables/0/wmo/10/codetables/21159.table
new file mode 100644
index 0000000..1703f9b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/21159.table
@@ -0,0 +1,4 @@
+0 0 GOOD
+1 1 USABLE
+2 2 BAD
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/21169.table b/definitions/bufr/tables/0/wmo/10/codetables/21169.table
new file mode 100644
index 0000000..9b93444
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/21169.table
@@ -0,0 +1,4 @@
+0 0 NO ICE PRESENT
+1 1 ICE PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2119.table b/definitions/bufr/tables/0/wmo/10/codetables/2119.table
new file mode 100644
index 0000000..33ae089
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2119.table
@@ -0,0 +1,8 @@
+0 0 INTERMEDIATE FREQUENCY CALIBRATION MODE (IFCAL)
+1 1 BUILT-IN TEST EQUIPMENT DIGITAL (BITE DGT)
+2 2 BUILT-IN TEST EQUIPMENT RADIO FREQUENCY (BITE RF)
+3 3 PRESET TRACKING (PSET TRK)
+4 4 PRESET LOOP OUT
+5 5 ACQUISITION
+6 6 TRACKING
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2131.table b/definitions/bufr/tables/0/wmo/10/codetables/2131.table
new file mode 100644
index 0000000..f4336ef
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2131.table
@@ -0,0 +1 @@
+1 1 STC OPERATIONAL
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2143.table b/definitions/bufr/tables/0/wmo/10/codetables/2143.table
new file mode 100644
index 0000000..89bdc1b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2143.table
@@ -0,0 +1,21 @@
+0 0 RESERVED
+1 1 BREWER SPECTROPHOTOMETER
+2 2 CAVER TEICHERT
+3 3 DOBSON
+4 4 DOBSON (JAPAN)
+5 5 EHMET
+6 6 FECKER TELESCOPE
+7 7 HOELPER
+8 8 JODMETER
+9 9 FILTER OZONOMETER M-83
+10 10 MAST
+11 11 OXFORD
+12 12 PAETZOLD
+13 13 REGENER
+14 14 RESERVED FOR FUTURE USE
+15 15 VASSY FILTER OZONOMETER
+16 16 CARBON IODIDE
+17 17 SURFACE OZONE BUBLER
+18 18 FILTER OZONOMETER M-124
+19 19 ECC SONDE
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2144.table b/definitions/bufr/tables/0/wmo/10/codetables/2144.table
new file mode 100644
index 0000000..c245c49
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2144.table
@@ -0,0 +1,8 @@
+0 0 DIRECT SUN, ATTENUATOR #0
+1 1 DIRECT SUN, ATTENUATOR #1
+2 2 DIRECT SUN, ATTENUATOR #2
+3 3 FOCUSSED MOON
+4 4 FOCUSSED SUN
+5 5 FOCUSSED SUN CORRECTED WITH ADJACENT SKY MEASUREMENTS
+6 6 ZENITH SKY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2145.table b/definitions/bufr/tables/0/wmo/10/codetables/2145.table
new file mode 100644
index 0000000..63400b2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2145.table
@@ -0,0 +1,9 @@
+0 0 WAVELENGTH AD ORDINARY SETTING
+1 1 WAVELENGTH BD ORDINARY SETTING
+2 2 WAVELENGTH CD ORDINARY SETTING
+3 3 WAVELENGTH CC' ORDINARY SETTING
+4 4 WAVELENGTH AD FOCUSSING IMAGE
+5 5 WAVELENGTH BD FOCUSSING IMAGE
+6 6 WAVELENGTH CD FOCUSSING IMAGE
+7 7 WAVELENGTH CC' FOCUSSING IMAGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2146.table b/definitions/bufr/tables/0/wmo/10/codetables/2146.table
new file mode 100644
index 0000000..14655b9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2146.table
@@ -0,0 +1,11 @@
+0 0 ON DIRECT SUN
+1 1 ON DIRECT MOON
+2 2 ON BLUE ZENITH SKY
+3 3 ON ZENITH CLOUD (UNIFORM STRATIFIED LAYER OF SMALL OPACITY)
+4 4 ON ZENITH CLOUD (UNIFORM OR MODERATELY VARIABLE LAYER OF MED"    IUM OPACITY)
+5 5 ON ZENITH CLOUD (UNIFORM OR MODERATELY VARIABLE LAYER OF LAR"    GE OPACITY)
+6 6 ON ZENITH CLOUD (HIGHLY VARIABLE OPACITY, WITH OR WITOUT PRE"    CIPITATION)
+7 7 ON ZENITH CLOUD (FOG)
+8 8 ON ZENITH HAZE
+9 9 ON DIRECT SUN THROUGH THIN CLOUD, FOG OR HAZE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2148.table b/definitions/bufr/tables/0/wmo/10/codetables/2148.table
new file mode 100644
index 0000000..3e5d884
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2148.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 ARGOS
+2 2 GPS
+3 3 GOES DCP
+4 4 METEOSAT DCP
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2149.table b/definitions/bufr/tables/0/wmo/10/codetables/2149.table
new file mode 100644
index 0000000..7b179c6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2149.table
@@ -0,0 +1,22 @@
+0 0 UNSPECIFIED DRIFTING BUOY
+1 1 STANDARD LAGRANGIAN DRIFTER (GLOBAL DRIFTER PROGRAMME)
+2 2 STANDARD FGGE TYPE DRIFTING BUOY
+3 3 WIND MEASURING FGGE TYPE DRIFTING BUOY
+4 4 ICE FLOAT
+8 8 UNSPECIFIED SUB-SURFACE FLOAT
+9 9 SOFAR
+10 10 ALACE
+11 11 MARVOR
+12 12 RAFOS
+16 16 UNSPECIFIED MOORED BUOY
+17 17 NOMAD
+18 18 3-METRE DISCUS
+19 19 10-12-METRE DISCUS
+20 20 ODAS 30 SERIES
+21 21 ATLAS (E.G. TAO AREA)
+22 22 TRITON BUOY
+23 23 RESERVED
+24 24 OMNIDIRECTIONAL WAVERIDER
+25 25 DIRECTIONAL WAVERIDER
+26 26 SUB-SURFACE ARGO FLOAT
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2150.table b/definitions/bufr/tables/0/wmo/10/codetables/2150.table
new file mode 100644
index 0000000..b864835
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2150.table
@@ -0,0 +1,55 @@
+0 0 RESERVED
+1 1 HIRS 1
+2 2 HIRS 2
+3 3 HIRS 3
+4 4 HIRS 4
+5 5 HIRS 5
+6 6 HIRS 6
+7 7 HIRS 7
+8 8 HIRS 8
+9 9 HIRS 9
+10 10 HIRS 10
+11 11 HIRS 11
+12 12 HIRS 12
+13 13 HIRS 13
+14 14 HIRS 14
+15 15 HIRS 15
+16 16 HIRS 16
+17 17 HIRS 17
+18 18 HIRS 18
+19 19 HIRS 19
+20 20 HIRS 20
+21 21 MSU 1
+22 22 MSU 2
+23 23 MSU 3
+24 24 MSU 4
+25 25 SSU 1
+26 26 SSU 2
+27 27 SSU 3
+28 28 AMSU-A 1
+29 29 AMSU-A 2
+30 30 AMSU-A 3
+31 31 AMSU-A 4
+32 32 AMSU-A 5
+33 33 AMSU-A 6
+34 34 AMSU-A 7
+35 35 AMSU-A 8
+36 36 AMSU-A 9
+37 37 AMSU-A 10
+38 38 AMSU-A 11
+39 39 AMSU-A 12
+40 40 AMSU-A 13
+41 41 AMSU-A 14
+42 42 AMSU-A 15
+43 43 AMSU-B 1
+44 44 AMSU-B 2
+45 45 AMSU-B 3
+46 46 AMSU-B 4
+47 47 AMSU-B 5
+48 48 AVHRR 1
+49 49 AVHRR 2
+50 50 AVHRR 3A
+51 51 AVHRR 3B
+52 52 AVHRR 4
+53 53 AVHRR 5
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2151.table b/definitions/bufr/tables/0/wmo/10/codetables/2151.table
new file mode 100644
index 0000000..b1e62e6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2151.table
@@ -0,0 +1,9 @@
+0 0 HIRS
+1 1 MSU
+2 2 SSU
+3 3 AMSU-A1-1
+4 4 AMSU-A1-2
+5 5 AMSU-A2
+6 6 AMSU-B
+7 7 AVHRR
+2047 2047 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2152.table b/definitions/bufr/tables/0/wmo/10/codetables/2152.table
new file mode 100644
index 0000000..7c55d18
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2152.table
@@ -0,0 +1,11 @@
+1 1 HIGH-RESOLUTION INFRARED SOUNDER(HIRS)
+2 2 MICROWAVE SOUNDING UNIT (MSU)
+3 3 STRATOSPHERIC SOUNDING UNIT (SSU)
+4 4 AMI WIND MODE
+5 5 AMI WAVE MODE
+6 6 AMI IMAGE MODE
+7 7 RADAR ALTIMETER
+8 8 ATSR
+9 9 GEOSTATIONARY IMAGER
+10 10 GEOSTATIONARY SOUNDER
+11 11 GEOSTATIONARY EARTH RADIATION (GERB)
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2158.table b/definitions/bufr/tables/0/wmo/10/codetables/2158.table
new file mode 100644
index 0000000..97c4449
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2158.table
@@ -0,0 +1,8 @@
+1 1 MISMATCH IN RED VEC HPA
+2 2 MISMATCH IN RED VEC RFSS
+3 3 PTR CALIBRATION BAND 320 MHZ (KU)
+4 4 PTR CALIBRATION BAND 80 MHZ (KU)
+5 5 PTR CALIBRATION BAND 20 MHZ (KU)
+6 6 PTR CALIBRATION BAND 160 MHZ (S)
+7 7 KU FLIGHT CALIBRATION PARAMETERS AVAILABLE
+8 8 S FLIGHT CALIBRATION PARAMETERS AVAILABLE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2159.table b/definitions/bufr/tables/0/wmo/10/codetables/2159.table
new file mode 100644
index 0000000..d022cce
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2159.table
@@ -0,0 +1,5 @@
+1 1 TEMPERATURE INCONSISTENCY
+2 2 DATA IS MISSING
+3 3 REDUNDANCY CHANNEL
+4 4 POWER BUS PROTECTION
+5 5 OVERVOLTAGE/OVERLOAD PROTECTION
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2163.table b/definitions/bufr/tables/0/wmo/10/codetables/2163.table
new file mode 100644
index 0000000..4658f3d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2163.table
@@ -0,0 +1,15 @@
+0 0 AUTO EDITOR
+1 1 IRW HEIGHT ASSIGNMENT
+2 2 WV HEIGHT ASSIGNMENT
+3 3 H2O INTERCEPT HEIGHT ASSIGNMENT
+4 4 CO2 SLICING HEIGHT ASSIGNMENT
+5 5 LOW PIXEL MAX GRADIENT
+6 6 HIGHER PIXEL MAX GRADIENT
+7 7 PRIMARY HEIGHT ASSIGNMENT
+8 8 LAYER THICKNESS ASSIGNMENT
+9 9 CUMULATIVE CONTRIBUTION FUNCTION -10 PERCENT HEIGHT
+10 10 CUMULATIVE CONTRIBUTION FUNCTION -50 PERCENT HEIGHT
+11 11 CUMULATIVE CONTRIBUTION FUNCTION -90 PERCENT HEIGHT
+12 12 CUMULATIVE CONTRIBUTION FUNCTION - HEIGHT OF"    MAXIMUM GRADIENT
+14 14 COMPOSITE HEIGHT ASSIGNMENT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2164.table b/definitions/bufr/tables/0/wmo/10/codetables/2164.table
new file mode 100644
index 0000000..01dc970
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2164.table
@@ -0,0 +1,4 @@
+0 0 LP - NORMS LEAST SQUARE MINIMUM
+1 1 EN - EUCLIDEAN NORM WITH RADIANCE CORRELATION
+2 2 CC - CROSS CORRELATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2166.table b/definitions/bufr/tables/0/wmo/10/codetables/2166.table
new file mode 100644
index 0000000..efac38f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2166.table
@@ -0,0 +1,6 @@
+0 0 TYPE NOT DEFINED
+1 1 AUTOMATED STATISTICAL REGRESSION
+2 2 CLEAR PATH
+3 3 PARTLY CLOUDY PATH
+4 4 CLOUDY PATH
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2167.table b/definitions/bufr/tables/0/wmo/10/codetables/2167.table
new file mode 100644
index 0000000..bb0ad11
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2167.table
@@ -0,0 +1,4 @@
+0 0 METHOD NOT DEFINE
+1 1 1B RAW RADIANCE
+2 2 PROCESSED RADIANCE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2169.table b/definitions/bufr/tables/0/wmo/10/codetables/2169.table
new file mode 100644
index 0000000..6e70eb6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2169.table
@@ -0,0 +1,4 @@
+0 0 CUP ROTOR
+1 1 PROPELLER ROTOR
+2 2 WIND OBSERVATION THROUGH AMBIENT NOISE (WOTAN)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2172.table b/definitions/bufr/tables/0/wmo/10/codetables/2172.table
new file mode 100644
index 0000000..10b464d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2172.table
@@ -0,0 +1,3 @@
+1 1 RETRIEVAL FROM A NADIR SOUNDING
+2 2 RETRIEVAL FROM A LIMB SOUNDING
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2175.table b/definitions/bufr/tables/0/wmo/10/codetables/2175.table
new file mode 100644
index 0000000..e3df922
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2175.table
@@ -0,0 +1,9 @@
+0 0 MANUAL MEASUREMENT
+1 1 TIPPING BUCKET METHOD
+2 2 WEIGHING METHOD
+3 3 OPTICAL METHOD
+4 4 PRESSURE METHOD
+5 5 FLOAT METHOD
+6 6 DROP COUNTER METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2176.table b/definitions/bufr/tables/0/wmo/10/codetables/2176.table
new file mode 100644
index 0000000..a16cbc3
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2176.table
@@ -0,0 +1,6 @@
+0 0 MANUAL OBSERVATION
+1 1 VIDEO CAMERA METHOD
+2 2 INFRA-RED METHOD
+3 3 LASER METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2177.table b/definitions/bufr/tables/0/wmo/10/codetables/2177.table
new file mode 100644
index 0000000..b8492e5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2177.table
@@ -0,0 +1,5 @@
+0 0 MANUAL OBSERVATION
+1 1 ULTRASONIC METHOD
+2 2 VIDEO CAMERA METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2178.table b/definitions/bufr/tables/0/wmo/10/codetables/2178.table
new file mode 100644
index 0000000..8953eb7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2178.table
@@ -0,0 +1,5 @@
+0 0 MANUAL OBSERVATION
+1 1 OPTICAL METHOD
+2 2 CAPACITIVE METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2179.table b/definitions/bufr/tables/0/wmo/10/codetables/2179.table
new file mode 100644
index 0000000..a76b878
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2179.table
@@ -0,0 +1,6 @@
+0 0 MANUAL OBSERVATION
+1 1 VAISALA ALGORITHM
+2 2 ASOS (FAA) ALGORITHM
+3 3 AWOS (CANADA) ALGORITHM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2180.table b/definitions/bufr/tables/0/wmo/10/codetables/2180.table
new file mode 100644
index 0000000..f7ec83c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2180.table
@@ -0,0 +1,8 @@
+0 0 MANUAL OBSERVATION
+1 1 OPTICAL SCATTER SYSTEM COMBINED WITH PRECIPITATION"    OCCURRENCE SENSING SYSTEM
+2 2 FORWARD AND/OR BACK-SCATTER SYSTEM OF VISIBLE LIGHT
+3 3 FORWARD AND/OR BACK-SCATTER SYSTEM OF INFRARED LIGHT
+4 4 INFRARED LIGHT EMITTING DIODE (IRED) SYSTEM
+5 5 DOPPLER RADAR SYSTEM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2181.table b/definitions/bufr/tables/0/wmo/10/codetables/2181.table
new file mode 100644
index 0000000..8e6466b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2181.table
@@ -0,0 +1,5 @@
+1 1 RAIN DETECTOR
+2 2 FREEZING RAIN SENSOR
+3 3 ICE DETECTION SENSOR
+4 4 HAIL AND ICE PELLET SENSOR
+20 20 OTHER
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2182.table b/definitions/bufr/tables/0/wmo/10/codetables/2182.table
new file mode 100644
index 0000000..97ffc04
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2182.table
@@ -0,0 +1,7 @@
+0 0 MANUAL MEASUREMENT
+1 1 TRANSMISSOMETER SYSTEM (BASE > 25)
+2 2 TRANSMISSOMETER SYSTEM (BASE < 25 M)
+3 3 FORWARD SCATTER SYSTEM
+4 4 BACK SCATTER SYSTEM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2183.table b/definitions/bufr/tables/0/wmo/10/codetables/2183.table
new file mode 100644
index 0000000..943c327
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2183.table
@@ -0,0 +1,9 @@
+0 0 MANUAL OBSERVATION
+1 1 CEILOMETER SYSTEM
+2 2 INFRARED CAMERA SYSTEM
+3 3 MICROWAVE VISUAL CAMERA SYSTEM
+4 4 SKY IMAGER SYSTEM
+5 5 VIDEO TIME LAPSED CAMERA SYSTEM
+6 6 MICRO PULSE LIDAR (MPL) SYSTEM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2184.table b/definitions/bufr/tables/0/wmo/10/codetables/2184.table
new file mode 100644
index 0000000..5698dac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2184.table
@@ -0,0 +1,8 @@
+0 0 MANUAL OBSERVATION
+1 1 LIGHTNING IMAGING SENSOR
+2 2 ELECTRICAL STORM IDENTIFICATION SENSOR
+3 3 MAGNETIC FINDER SENSOR
+4 4 LIGHTNING STRIKE SENSOR
+5 5 FLASH COUNTER
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2185.table b/definitions/bufr/tables/0/wmo/10/codetables/2185.table
new file mode 100644
index 0000000..3253397
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2185.table
@@ -0,0 +1,7 @@
+0 0 MANUAL MEASUREMENT
+1 1 BALANCED FLOATING METHOD
+2 2 PRESSURE METHOD
+3 3 ULTRASONIC METHOD
+4 4 HYDRAULIC METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2186.table b/definitions/bufr/tables/0/wmo/10/codetables/2186.table
new file mode 100644
index 0000000..05e1a36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2186.table
@@ -0,0 +1,23 @@
+1 1 PRECIPITATION-UNKNOWN TYPE
+2 2 LIQUID PRECIPITATION NOT FREEZING
+3 3 LIQUID FREEZING PRECIPITATION
+4 4 DRIZZLE
+5 5 RAIN
+6 6 SOLID PRECIPITATION
+7 7 SNOW
+8 8 SNOW GRAINS
+9 9 SNOW PELLETS
+10 10 ICE PELLETS
+11 11 ICE CRYSTALS
+12 12 DIAMOND DUST
+13 13 SMALL HAIL
+14 14 HAIL
+15 15 GLAZE
+16 16 RIME
+17 17 SOFT RIME
+18 18 HARD RIME
+19 19 CLEAR ICE
+20 20 WET SNOW
+21 21 HOAR FROST
+22 22 DEW
+23 23 WHITE DEW
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2187.table b/definitions/bufr/tables/0/wmo/10/codetables/2187.table
new file mode 100644
index 0000000..def3d2f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2187.table
@@ -0,0 +1,11 @@
+1 1 DUST/SAND WHIRL
+2 2 SQUALLS
+3 3 SAND STORM
+4 4 DUST STORM
+5 5 LIGHTNING - CLOUD TO SURFACE
+6 6 LIGHTNING - CLOUD TO CLOUD
+7 7 LIGHTNING - DISTANT
+8 8 THUNDERSTORM
+9 9 FUNNEL CLOUD NOT TOUCHING SURFACE
+10 10 FUNNEL CLOUD TOUCHING SURFACE
+11 11 SPRAY
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2188.table b/definitions/bufr/tables/0/wmo/10/codetables/2188.table
new file mode 100644
index 0000000..bb8114c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2188.table
@@ -0,0 +1,10 @@
+1 1 FOG
+2 2 ICE FOG
+3 3 STEAM FOG
+7 7 MIST
+8 8 HAZE
+9 9 SMOKE
+10 10 VOLCANIC ASH
+11 11 DUST
+12 12 SAND
+13 13 SNOW
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/2189.table b/definitions/bufr/tables/0/wmo/10/codetables/2189.table
new file mode 100644
index 0000000..710032d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/2189.table
@@ -0,0 +1,4 @@
+1 1 MANUAL OBSERVATION
+2 2 ALL LIGHTNING STRIKES WITHOUT DISCRIMINATION
+3 3 LIGHTNING STRIKES CLOUD TO GROUND ONLY
+4 4 ALL LIGHTNING STRIKES WITH DISCRIMINATION BETWEEN"    CLOUD TO GROUND AND CLOUD TO CLOUD
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/22056.table b/definitions/bufr/tables/0/wmo/10/codetables/22056.table
new file mode 100644
index 0000000..28ddbf4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/22056.table
@@ -0,0 +1,4 @@
+0 0 UPWARDS PROFILE
+1 1 DOWNWARDS PROFILE
+2 2 HORIZONTAL
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/22060.table b/definitions/bufr/tables/0/wmo/10/codetables/22060.table
new file mode 100644
index 0000000..b73ad32
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/22060.table
@@ -0,0 +1,4 @@
+0 0 DROGUE IS DETACHED
+1 1 DROGUE IS ATTACHED
+2 2 DROGUE STATUS UNKNOWN
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/22061.table b/definitions/bufr/tables/0/wmo/10/codetables/22061.table
new file mode 100644
index 0000000..de55e38
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/22061.table
@@ -0,0 +1,11 @@
+0 0 CALM (GLASSY)            HEIGHT     0            M
+1 1 CALM (RIPPLED)           HEIGHT     0     - 0.1  M
+2 2 SMOOTH (WAVELETS)        HEIGHT     0.1   - 0.5  M
+3 3 SLIGHT                   HEIGHT     0.5   - 1.5  M
+4 4 MODERATE                 HEIGHT     1.25  - 2.5  M
+5 5 ROUGH                    HEIGHT     2.5   - 4    M
+6 6 VERY ROUGH               HEIGHT     4     - 6    M
+7 7 HIGH                     HEIGHT     6     - 9    M
+8 8 VERY HIGH                HEIGHT     9     -14    M
+9 9 PHENOMANAL               HEIGHT     OVER   14    M
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/22067.table b/definitions/bufr/tables/0/wmo/10/codetables/22067.table
new file mode 100644
index 0000000..1728310
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/22067.table
@@ -0,0 +1 @@
+0 0 SEE COMMON CODE TABLE C3
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/22068.table b/definitions/bufr/tables/0/wmo/10/codetables/22068.table
new file mode 100644
index 0000000..c11d658
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/22068.table
@@ -0,0 +1 @@
+0 0 SEE COMMON CODE TABLE C4
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/22120.table b/definitions/bufr/tables/0/wmo/10/codetables/22120.table
new file mode 100644
index 0000000..c485b9f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/22120.table
@@ -0,0 +1,13 @@
+0 0 GOOD DATA
+1 1 MAXIMUM (HIGH) WATER LEVEL LIMIT EXCEEDED
+2 2 MINIMUM (LOW) WATER LEVEL LIMIT EXCEEDED
+3 3 RATE OF CHANGE LIMIT FOR WATER LEVEL EXCEEDED
+4 4 FLAT LIMIT FOR WATER LEVEL EXCEEDED
+5 5 OBSERVED MINUS PREDICTED WATER LEVEL VALUE LIMIT EXCEEDED
+6 6 OBSERVED VALUE FROM PRIMARY WATER LEVEL SENSOR MINUS"    BACKUP WATER LEVEL SENSOR
+7 7 VALUE EXCEEDED SPECIFIED TOLERANCE FROM EXPECTED VALUE
+8 8 WATER LEVEL QA PARAMETER (SIGMAS AND/OR OUTLIERS) LIMITS EXC"    EEDED
+9 9 SEA TEMPERATURE OUTSIDE OF EXPECTED RANGE
+10 10 MULTIPLE QC CHECKS (ABOVE) FAILED
+11 11 NO AUTOMATED WATER LEVEL CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/22121.table b/definitions/bufr/tables/0/wmo/10/codetables/22121.table
new file mode 100644
index 0000000..4e4d870
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/22121.table
@@ -0,0 +1,9 @@
+0 0 OPERATIONAL
+1 1 POSSIBLE CLOGGING PROBLEM OR OTHERWISE DEGRADED WATE LEVEL D"    ATA
+2 2 POSSIBLE DATUM SHIFT
+3 3 UNKNOWN STATUS OF WATER LEVEL SENSOR
+4 4 SUSPECTED OR KNOWN SEA TEMPERATURE SENSOR PROBLEM
+5 5 MULTIPLE POSSIBLE PROBLEMS (ABOVE)
+6 6 BAD DATA- DO NOT DISSEMINATE
+7 7 NO MANUAL WATER LEVEL CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/22122.table b/definitions/bufr/tables/0/wmo/10/codetables/22122.table
new file mode 100644
index 0000000..1a5fe36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/22122.table
@@ -0,0 +1,8 @@
+0 0 GOOD DATA FROM ALL SENSORS
+1 1 WIND DIRECTION OUTSIDE OF ALLOWABLE RANGE
+2 2 WIND SPEED OUTSIDE OF EXPECTED RANGE
+3 3 BAROMETRIC PRESSURE OUTSIDE OF EXPECTED RANGE
+4 4 AIR TEMPERATURE OUTSIDE OF EXPECTED RANGE
+5 5 MULTIPLE SENSOR FAILED QC CHECKS
+6 6 NO AUTOMATED METEOROLOGICAL DATA CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/22123.table b/definitions/bufr/tables/0/wmo/10/codetables/22123.table
new file mode 100644
index 0000000..62b0186
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/22123.table
@@ -0,0 +1,9 @@
+0 0 OPERATIONAL
+1 1 SUSPECTED OR KNOWN PROBLEM WITH WIND SENSOR
+2 2 SUSPECTED OR KNOWN PROBLEM WITH BAROMETRIC PRESSURE SENSOR
+3 3 SUSPECTED OR KNOWN PROBLEM WITH AIR TEMPERATURE SENSOR
+4 4 UNKNOWN STATUS OF ALL SENSORS
+5 5 SUSPECTED OR KNOWN PROBLEMS WITH MULTIPLE SENSORS
+6 6 BAD DATA - DO NOT DISSEMINATE
+7 7 NO MANUAL METEOROLOGICAL DATA CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/23001.table b/definitions/bufr/tables/0/wmo/10/codetables/23001.table
new file mode 100644
index 0000000..92ac5de
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/23001.table
@@ -0,0 +1,5 @@
+0 0 RESERVED
+1 1 ARTICLES 1 AND 2
+2 2 ARTICLE 3
+3 3 ARTICLE 5.2
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/23002.table b/definitions/bufr/tables/0/wmo/10/codetables/23002.table
new file mode 100644
index 0000000..5070901
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/23002.table
@@ -0,0 +1,16 @@
+0 0 RESERVED
+1 1 NUCLEAR REACTOR ON GROUND
+2 2 NUCLEAR REACTOR ON SEA
+3 3 NUCLEAR REACTOR IN SPACE
+4 4 NUCLEAR FULE FACILITY
+5 5 RADIOACTIVE WASTE MANAGMENT FACITILY
+6 6 TRANSPORT OF NUCLEAR FUEL OR RADIOACTIVE WASTE
+7 7 STORAGE OF NUCLEAR FUEL OR RADIOACTIVE WASTE
+8 8 MANUFACTURE OF RADIO-ISOTOPES
+9 9 USE OF RADIO-ISOTOPES
+10 10 STORAGE OF RADIO-ISOTOPES
+11 11 DISPOSAL OF RADIO-ISOTOPS
+12 12 TRANSPORT OF RADIO-ISOTOPES
+13 13 USE OF RADIO-ISOTOPES FOR POWER GENERATION
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/23003.table b/definitions/bufr/tables/0/wmo/10/codetables/23003.table
new file mode 100644
index 0000000..e3e891f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/23003.table
@@ -0,0 +1,8 @@
+0 0 NO RELEASE
+1 1 RELEASE TO ATMOSPHERE
+2 2 RELEASE TO WATER
+3 3 RELEASE TO BOTH ATMOSPHERE AND WATER
+4 4 EXPECTED RELEASE TO ATMOSPHERE
+5 5 EXPECTED RELEASE TO WATER
+6 6 EXPECTED RELEASE TO BOTH ATMOSPHERE AND WATER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/23004.table b/definitions/bufr/tables/0/wmo/10/codetables/23004.table
new file mode 100644
index 0000000..804d1e1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/23004.table
@@ -0,0 +1,6 @@
+0 0 NO COUNTERMEASURE
+1 1 EVACUATION
+2 2 SHELTERING
+3 3 PROPHILAXIS
+4 4 WATER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/23005.table b/definitions/bufr/tables/0/wmo/10/codetables/23005.table
new file mode 100644
index 0000000..e22eb99
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/23005.table
@@ -0,0 +1,4 @@
+0 0 INCIDENT STAT DOES NOT UNDERSTAND WHAT HAPPENED
+1 1 INCIDENT STATE KNOWS THE CAUSE OF THE INCIDENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/23006.table b/definitions/bufr/tables/0/wmo/10/codetables/23006.table
new file mode 100644
index 0000000..fe7706a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/23006.table
@@ -0,0 +1,8 @@
+0 0 NO IMPROVEMENT
+1 1 UNSTABLE
+2 2 NO DETERIORATION
+3 3 IMPROVING
+4 4 STABLE
+5 5 DETERIORATING
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/23007.table b/definitions/bufr/tables/0/wmo/10/codetables/23007.table
new file mode 100644
index 0000000..59fc043
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/23007.table
@@ -0,0 +1,5 @@
+0 0 NO RELEASE
+1 1 RELEASE HAS STOPPED
+2 2 RELEASE
+3 3 RELEASE IS CONTINUING
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/23008.table b/definitions/bufr/tables/0/wmo/10/codetables/23008.table
new file mode 100644
index 0000000..b20991c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/23008.table
@@ -0,0 +1,4 @@
+0 0 GASEUS
+1 1 PARTICULATE
+2 2 MIXTURE OF GASEUS AND PARTICULATE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/23009.table b/definitions/bufr/tables/0/wmo/10/codetables/23009.table
new file mode 100644
index 0000000..b20991c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/23009.table
@@ -0,0 +1,4 @@
+0 0 GASEUS
+1 1 PARTICULATE
+2 2 MIXTURE OF GASEUS AND PARTICULATE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/23016.table b/definitions/bufr/tables/0/wmo/10/codetables/23016.table
new file mode 100644
index 0000000..57425e9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/23016.table
@@ -0,0 +1,4 @@
+0 0 NO SIGNIFICANT TOXIC HEALTH EFFECT
+1 1 SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT POSSIBLE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/23018.table b/definitions/bufr/tables/0/wmo/10/codetables/23018.table
new file mode 100644
index 0000000..ccdcc45
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/23018.table
@@ -0,0 +1,6 @@
+0 0 RELEASE NO LONGER OCCURRING
+1 1 RELEASE STILL OCCURRING
+2 2 RELEASE EXPECTED TO INCREASE IN NEXT SIX HOURS
+3 3 RELEASE EXPECTED TO REMAIN CONSTANT IN NEXT SIX HOURS
+4 4 RELEASE EXPECTED TO DECREASE IN NEXT SIX HOURS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/23031.table b/definitions/bufr/tables/0/wmo/10/codetables/23031.table
new file mode 100644
index 0000000..cf20e26
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/23031.table
@@ -0,0 +1,4 @@
+0 0 PLUME WILL NOT ENCOUNTER RAIN IN INCIDENT STATE
+1 1 PLUME WILL ENCOUNTER RAIN IN INCIDENT STATE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/23032.table b/definitions/bufr/tables/0/wmo/10/codetables/23032.table
new file mode 100644
index 0000000..18dea38
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/23032.table
@@ -0,0 +1,4 @@
+0 0 NO SIGNIFICANT CHANGE EXPECTED WITHIN NEXT SIX HOURS
+1 1 ANTICIPATED SIGNIFICANT CHANGE EXPECTED WITHIN NEXT SIX HOUR"    S
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/24003.table b/definitions/bufr/tables/0/wmo/10/codetables/24003.table
new file mode 100644
index 0000000..de7cf4e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/24003.table
@@ -0,0 +1,5 @@
+0 0 NOBLE GASES
+1 1 IODINES
+2 2 CAESIUM
+3 3 TRANSURANICS
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25004.table b/definitions/bufr/tables/0/wmo/10/codetables/25004.table
new file mode 100644
index 0000000..dfe4517
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25004.table
@@ -0,0 +1,4 @@
+0 0 INCOHERENT
+1 1 COHERENT (DOPPLER)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25005.table b/definitions/bufr/tables/0/wmo/10/codetables/25005.table
new file mode 100644
index 0000000..54954d6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25005.table
@@ -0,0 +1,4 @@
+0 0 LOGATITHM - 2.5 DB
+1 1 LINEAR
+2 2 SPECIAL
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25006.table b/definitions/bufr/tables/0/wmo/10/codetables/25006.table
new file mode 100644
index 0000000..35a61ac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25006.table
@@ -0,0 +1,5 @@
+0 0 ZH TO R CONVERSION
+1 1 (ZH, ZDR) TO (NO.DO) TO R
+2 2 (Z(F1),Z(F2)) TO ATTENUATION TO R
+6 6 OTHER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25009.table b/definitions/bufr/tables/0/wmo/10/codetables/25009.table
new file mode 100644
index 0000000..927847b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25009.table
@@ -0,0 +1,4 @@
+1 1 NONE
+2 2 CALIBRATION TARGET OR SIGNAL
+3 3 AGAINST RAINGAGES
+4 4 AGAINST OTHER INSTRUMENTS (DISTROMETER-ATTENUATION)
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25010.table b/definitions/bufr/tables/0/wmo/10/codetables/25010.table
new file mode 100644
index 0000000..70854d8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25010.table
@@ -0,0 +1,8 @@
+0 0 NONE
+1 1 MAP
+2 2 INSERTION OF HIGHER ELEVATION DATA AND MAP
+3 3 ANALYSIS OF FLUCTUATING LOGARITHM SIGNAL (CLUTTER DETECTION)
+4 4 EXTRACTION OF FLUCTUATING PART OF LINEAR SIGNAL (CLUTTER SUP"    PRESSION)
+5 5 CLUTTER SUPPRESSION DOPPLER
+6 6 MULTIPARAMETER ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25011.table b/definitions/bufr/tables/0/wmo/10/codetables/25011.table
new file mode 100644
index 0000000..f739498
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25011.table
@@ -0,0 +1,4 @@
+0 0 NONE
+1 1 MAP OF CORRECTION FACTORS
+2 2 INTERPOLATION (AZIMUTH OR ELEVATION)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25012.table b/definitions/bufr/tables/0/wmo/10/codetables/25012.table
new file mode 100644
index 0000000..c869a4a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25012.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE
+1 1 SOFTWARE
+2 2 HARDWARE AND SOFTWARE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25013.table b/definitions/bufr/tables/0/wmo/10/codetables/25013.table
new file mode 100644
index 0000000..4c13814
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25013.table
@@ -0,0 +1 @@
+1 1 BRIGHT BAND CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25015.table b/definitions/bufr/tables/0/wmo/10/codetables/25015.table
new file mode 100644
index 0000000..043e587
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25015.table
@@ -0,0 +1 @@
+1 1 RADOME ATTENUATION CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25017.table b/definitions/bufr/tables/0/wmo/10/codetables/25017.table
new file mode 100644
index 0000000..ed48487
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25017.table
@@ -0,0 +1 @@
+1 1 PRECIPITATION ATTENUATION CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25020.table b/definitions/bufr/tables/0/wmo/10/codetables/25020.table
new file mode 100644
index 0000000..ba9b528
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25020.table
@@ -0,0 +1,4 @@
+0 0 FTT (FAST FOURIER TRANSFORM
+1 1 PPP (PULSE PAIR PROCESSING
+2 2 VPC (VECTOR-PHASE CHANGE)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25021.table b/definitions/bufr/tables/0/wmo/10/codetables/25021.table
new file mode 100644
index 0000000..314716b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25021.table
@@ -0,0 +1,5 @@
+1 1 SIMPLE AVERAGE
+2 2 CONSENSUS AVERAGE
+3 3 MEDIAN CHECK
+4 4 VERTICAL CONSISTENCY CHECK
+5 5 OTHER
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25030.table b/definitions/bufr/tables/0/wmo/10/codetables/25030.table
new file mode 100644
index 0000000..aa78900
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25030.table
@@ -0,0 +1,4 @@
+0 0 RUNNING MEAN SEA-SURFACE TEMPERATURE NOT USED BECAUSE USAGE"     CRITERIA NOT MET
+1 1 RUNNING MEAN SEA-SURFACE TEMPERATURE NOT USED BECAUSE DATA N"    OT AVAILABLE
+2 2 RUNNING MEAN SEA-SURFACE TEMPERATURE USED AS PREDICTOR
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25032.table b/definitions/bufr/tables/0/wmo/10/codetables/25032.table
new file mode 100644
index 0000000..9b894f4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25032.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 DATA FROM LOW MODE
+2 2 DATA FROM HIGH MODE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25033.table b/definitions/bufr/tables/0/wmo/10/codetables/25033.table
new file mode 100644
index 0000000..e7141c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25033.table
@@ -0,0 +1,4 @@
+0 0 WIND PROFILER OPERATING IN SUBMODE A
+1 1 WIND PROFILER OPERATING IN SUBMODE B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25034.table b/definitions/bufr/tables/0/wmo/10/codetables/25034.table
new file mode 100644
index 0000000..473338a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25034.table
@@ -0,0 +1,3 @@
+1 1 TEST A PERFORMED AND FAILED
+2 2 TEST B PERFORMED AND FAILED
+3 3 TEST RESULTS INCONCLUSIVE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25036.table b/definitions/bufr/tables/0/wmo/10/codetables/25036.table
new file mode 100644
index 0000000..d71ffd1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25036.table
@@ -0,0 +1,4 @@
+0 0 NETWORK OF SEVERAL DIRECTION-FINDERS OPERATING ON"     THE SAME INDIVIDUAL ATMOSPHERICS
+1 1 NETWORK OF SEVERAL ARRIVAL-TIME STATIONS OPERATING ON"     THE SAME INDIVIDUAL ATMOSPHERICS
+6 6 SINGLE STATION RANGE BEARING TECHNIQUE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25040.table b/definitions/bufr/tables/0/wmo/10/codetables/25040.table
new file mode 100644
index 0000000..648a71b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25040.table
@@ -0,0 +1,10 @@
+0 0 NON-SPECIFIC MODE
+1 1 FIRST GUESS DATA
+2 2 CLOUD DATA
+3 3 AVERAGE VECTOR DATA
+4 4 PRIMARY DATA
+5 5 GUESS DATA
+6 6 VECTOR DATA
+7 7 TRACER DATA; THE IMAGE
+8 8 TRACER DATA TO NEXT IMAGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25041.table b/definitions/bufr/tables/0/wmo/10/codetables/25041.table
new file mode 100644
index 0000000..f388da0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25041.table
@@ -0,0 +1,4 @@
+0 0 DIRECTION ORIGINALLY REPORTED IN TRUE DEGREES
+1 1 DIRECTION ORIGINALLY REPORTED USING CODE TABLE 0700, FM 13
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25042.table b/definitions/bufr/tables/0/wmo/10/codetables/25042.table
new file mode 100644
index 0000000..314f464
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25042.table
@@ -0,0 +1,4 @@
+0 0 SPEED ORIGINALLY REPORTED IN METERS PER SECOND
+1 1 SPEED ORIGINALLY REPORTED USING CODE TABLE 2251, FM 13
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25045.table b/definitions/bufr/tables/0/wmo/10/codetables/25045.table
new file mode 100644
index 0000000..6a26361
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25045.table
@@ -0,0 +1,20 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
+6 6 CHANNEL  6 PRESENT - (SET TO 1 PRESENT)
+7 7 CHANNEL  7 PRESENT - (SET TO 1 PRESENT)
+8 8 CHANNEL  8 PRESENT - (SET TO 1 PRESENT)
+9 9 CHANNEL  9 PRESENT - (SET TO 1 PRESENT)
+10 10 CHANNEL 10 PRESENT - (SET TO 1 PRESENT)
+11 11 CHANNEL 11 PRESENT - (SET TO 1 PRESENT)
+12 12 CHANNEL 12 PRESENT - (SET TO 1 PRESENT)
+13 13 CHANNEL 13 PRESENT - (SET TO 1 PRESENT)
+14 14 CHANNEL 14 PRESENT - (SET TO 1 PRESENT)
+15 15 CHANNEL 15 PRESENT - (SET TO 1 PRESENT)
+16 16 CHANNEL 16 PRESENT - (SET TO 1 PRESENT)
+17 17 CHANNEL 17 PRESENT - (SET TO 1 PRESENT)
+18 18 CHANNEL 18 PRESENT - (SET TO 1 PRESENT)
+19 19 CHANNEL 19 PRESENT - (SET TO 1 PRESENT)
+20 20 CHANNEL 20 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25046.table b/definitions/bufr/tables/0/wmo/10/codetables/25046.table
new file mode 100644
index 0000000..0cda73b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25046.table
@@ -0,0 +1,4 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25047.table b/definitions/bufr/tables/0/wmo/10/codetables/25047.table
new file mode 100644
index 0000000..ad6fa18
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25047.table
@@ -0,0 +1,3 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25048.table b/definitions/bufr/tables/0/wmo/10/codetables/25048.table
new file mode 100644
index 0000000..a628567
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25048.table
@@ -0,0 +1,15 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
+6 6 CHANNEL  6 PRESENT - (SET TO 1 PRESENT)
+7 7 CHANNEL  7 PRESENT - (SET TO 1 PRESENT)
+8 8 CHANNEL  8 PRESENT - (SET TO 1 PRESENT)
+9 9 CHANNEL  9 PRESENT - (SET TO 1 PRESENT)
+10 10 CHANNEL 10 PRESENT - (SET TO 1 PRESENT)
+11 11 CHANNEL 11 PRESENT - (SET TO 1 PRESENT)
+12 12 CHANNEL 12 PRESENT - (SET TO 1 PRESENT)
+13 13 CHANNEL 13 PRESENT - (SET TO 1 PRESENT)
+14 14 CHANNEL 14 PRESENT - (SET TO 1 PRESENT)
+15 15 CHANNEL 15 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25049.table b/definitions/bufr/tables/0/wmo/10/codetables/25049.table
new file mode 100644
index 0000000..db2a09c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25049.table
@@ -0,0 +1,5 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25051.table b/definitions/bufr/tables/0/wmo/10/codetables/25051.table
new file mode 100644
index 0000000..3b3fbde
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25051.table
@@ -0,0 +1,6 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
+6 6 CHANNEL  6 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25053.table b/definitions/bufr/tables/0/wmo/10/codetables/25053.table
new file mode 100644
index 0000000..af34138
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25053.table
@@ -0,0 +1,6 @@
+1 1 GOOD
+2 2 REDUNDANT
+3 3 QUESTIONABLE
+4 4 BAD
+5 5 EXPERIMENTAL
+6 6 PRECIPITATING
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25069.table b/definitions/bufr/tables/0/wmo/10/codetables/25069.table
new file mode 100644
index 0000000..e627613
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25069.table
@@ -0,0 +1,7 @@
+1 1 SMOOTHED
+2 2 BASELINE ADJUSTED
+3 3 NORMALIZED TIME INTERVAL
+4 4 OUTLIER CHECKED
+5 5 PLAUSIBILITY CHECKED
+6 6 CONSISTENCY CHECKED
+7 7 INTERPOLATED
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25086.table b/definitions/bufr/tables/0/wmo/10/codetables/25086.table
new file mode 100644
index 0000000..294fa69
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25086.table
@@ -0,0 +1,4 @@
+0 0 DEPTHS ARE NOT CORRECTED
+1 1 DEPTHS ARE CORRECTED
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25093.table b/definitions/bufr/tables/0/wmo/10/codetables/25093.table
new file mode 100644
index 0000000..e547e6c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25093.table
@@ -0,0 +1,3 @@
+1 1 NO CORRECTION
+2 2 VERTICAL VELOCITY CORRECTION
+7 7 ALL CORRECTIONS
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25095.table b/definitions/bufr/tables/0/wmo/10/codetables/25095.table
new file mode 100644
index 0000000..a303e57
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25095.table
@@ -0,0 +1 @@
+1 1 ALTIMETER OPERATING (SET TO 0 IF NOMINAL, SET TO"     BACKUP)
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25096.table b/definitions/bufr/tables/0/wmo/10/codetables/25096.table
new file mode 100644
index 0000000..dcffa91
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25096.table
@@ -0,0 +1,4 @@
+1 1 MODE INDICATOR (0 IF MODE 2, 1 IF MODE 1)
+2 2 MODE 1 CALIBRATION SEQUENCE INDICATOR (0 IF NORMAL DATA TAKI"    NG EITHER MODE 1 OR 2, 1 IF MODE 1 CALIBRATION SEQUENCE) BIT"    S 3 AND 4 INDICATE A
+3 3 CHANNEL 2 (0 IF ON, 1 IF OFF)
+4 4 CHANNEL 3 (0 IF ON, 1 IF OFF)
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25097.table b/definitions/bufr/tables/0/wmo/10/codetables/25097.table
new file mode 100644
index 0000000..d4e1e46
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25097.table
@@ -0,0 +1,11 @@
+0 0 RANGES BETWEEN 0 AND 30 CM
+1 1 RANGES BETWEEN 30 AND 60 CM
+2 2 RANGES BETWEEN 60 AND 90 CM
+3 3 RANGES BETWEEN 90 AND 120 CM
+4 4 RANGES BETWEEN 120 AND 150 CM
+5 5 RANGES BETWEEN 150 AND 180 CM
+6 6 RANGES BETWEEN 180 AND 210 CM
+7 7 RANGES BETWEEN 210 AND 240 CM
+8 8 RANGES BETWEEN 240 AND 270 CM
+9 9 RANGES LARGER THAN 270 CM
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25098.table b/definitions/bufr/tables/0/wmo/10/codetables/25098.table
new file mode 100644
index 0000000..b49bdb5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25098.table
@@ -0,0 +1,8 @@
+1 1 KU BAND RANGE
+2 2 C BAND RANGE
+3 3 KU BAND SWH
+4 4 C BAND SWH
+5 5 KU BAND SCATTEROMETER COEFFICIENT
+6 6 C BAND SCATTEROMETER COEFFICIENT
+7 7 OFF NADIR ANGLE FROM KU BAND WVEFORM PARAMETERS
+8 8 OFF NADIR FROM PLATFORM
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25099.table b/definitions/bufr/tables/0/wmo/10/codetables/25099.table
new file mode 100644
index 0000000..c6cabcd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25099.table
@@ -0,0 +1,6 @@
+1 1 KU BAND RANGE INSTRUMENTAL CORRECTION
+2 2 C BAND RANGE INSTRUMENTAL CORRECTION
+3 3 KU BAND SWH INSTRUMENTAL CORRECTION
+4 4 C BAND SWH INSTRUMENTAL CORRECTION
+5 5 KU BAND SCATTEROMETER COEFFICIENT INSTRUMENTAL CORRECTION
+6 6 C BAND SCATTEROMETER COEFFICIENT INSTRUMENTAL CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25110.table b/definitions/bufr/tables/0/wmo/10/codetables/25110.table
new file mode 100644
index 0000000..c53002c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25110.table
@@ -0,0 +1,6 @@
+1 1 RAW DATA ANALYSIS USED FOR RAW DATA CORRECTION."    CORRECTION DONE USING DEFAULT PARAMETERS
+2 2 RAW DATA ANALYSIS USED FOR RAW DATA CORRECTION."    CORRECTION DONE USING RAW DATA ANALYSIS RESULTS
+3 3 ANTENNA ELEVATION PATTERN CORRECTION APPLIED
+4 4 NOMINAL CHIRP REPLICA USED
+5 5 RECONSTRUCTED CHIRP USED
+6 6 SLANT RANGE TO GROUND RANGE CONVERSION APPLIED
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25120.table b/definitions/bufr/tables/0/wmo/10/codetables/25120.table
new file mode 100644
index 0000000..026f109
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25120.table
@@ -0,0 +1,4 @@
+0 0 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"     2 PROCESSING IS GREATER THAN THE ACCEPTABLE THRESHOLD
+1 1 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"    2 PROCESSING IS LESS THAN THE ACCEPTABLE THRESHOLD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25122.table b/definitions/bufr/tables/0/wmo/10/codetables/25122.table
new file mode 100644
index 0000000..1085ef9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25122.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE CONFIGURATION FOR RF IS A
+1 1 HARDWARE CONFIGURATION FOR RF IS B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25123.table b/definitions/bufr/tables/0/wmo/10/codetables/25123.table
new file mode 100644
index 0000000..70f0670
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25123.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE CONFIGURATION FOR HPA IS A
+1 1 HARDWARE CONFIGURATION FOR HPA IS B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/25124.table b/definitions/bufr/tables/0/wmo/10/codetables/25124.table
new file mode 100644
index 0000000..e611ac0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/25124.table
@@ -0,0 +1,4 @@
+0 0 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"    2 PROCESSING IS GREATER THAN THE ACCEPTABLE THRESHOLD
+1 1 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"    2 PROCESSING IS LESS THAN THE ACCEPTABLE THRESHOLD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/26010.table b/definitions/bufr/tables/0/wmo/10/codetables/26010.table
new file mode 100644
index 0000000..f825040
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/26010.table
@@ -0,0 +1,25 @@
+1 1 0100 INCLUDED
+2 2 0200 INCLUDED
+3 3 0300 INCLUDED
+4 4 0400 INCLUDED
+5 5 0500 INCLUDED
+6 6 0600 INCLUDED
+7 7 0700 INCLUDED
+8 8 0800 INCLUDED
+9 9 0900 INCLUDED
+10 10 1000 INCLUDED
+11 11 1100 INCLUDED
+12 12 1200 INCLUDED
+13 13 1300 INCLUDED
+14 14 1400 INCLUDED
+15 15 1500 INCLUDED
+16 16 1600 INCLUDED
+17 17 1700 INCLUDED
+18 18 1800 INCLUDED
+19 19 1900 INCLUDED
+20 20 2000 INCLUDED
+21 21 2100 INCLUDED
+22 22 2200 INCLUDED
+23 23 2300 INCLUDED
+24 24 2400 INCLUDED
+25 25 UNKNOWN MIXTURE OF HOURS
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/29001.table b/definitions/bufr/tables/0/wmo/10/codetables/29001.table
new file mode 100644
index 0000000..beff485
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/29001.table
@@ -0,0 +1,6 @@
+0 0 GNOMONIC PROJECTION
+1 1 POLAR STEREOGRAPHIC PROJECTION
+2 2 LAMBERT'S CONFORMAL CONIC PROJECTION
+3 3 MERCATOR'S PROJECTION
+4 4 SCANNING CONE (RADAR)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/29002.table b/definitions/bufr/tables/0/wmo/10/codetables/29002.table
new file mode 100644
index 0000000..1d7efd0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/29002.table
@@ -0,0 +1,4 @@
+0 0 CARTESIAN
+1 1 POLAR
+2 2 OTHER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/30031.table b/definitions/bufr/tables/0/wmo/10/codetables/30031.table
new file mode 100644
index 0000000..12ddc7c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/30031.table
@@ -0,0 +1,13 @@
+0 0 PPI
+1 1 COMPOSITE
+2 2 CAPPI
+3 3 VERTICAL SECTION
+4 4 ALPHANUMERIC DATA
+5 5 MAP OF SUBJECT CLUTTER
+6 6 MAP
+7 7 TEST PICTURE
+8 8 COMMENTS
+9 9 MAP OF GROUND OCCULTATION
+10 10 MAP OF RADAR BEAM HEIGHT
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/30032.table b/definitions/bufr/tables/0/wmo/10/codetables/30032.table
new file mode 100644
index 0000000..942cb5d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/30032.table
@@ -0,0 +1,9 @@
+1 1 MAP
+2 2 SATELLITE IR
+3 3 SATELLITE VIS
+4 4 SATELLITE WV
+5 5 SATELLITE MULTISPECTRAL
+6 6 SYNOPTIC OBSERVATIONS
+7 7 FORECAST PARAMETERS
+8 8 LIGHTNING DATA
+15 15 OTHER DATA
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/31021.table b/definitions/bufr/tables/0/wmo/10/codetables/31021.table
new file mode 100644
index 0000000..de8d5a6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/31021.table
@@ -0,0 +1,4 @@
+1 1 1 BIT INDICATOR OF QUALITY, 0= GOOD; 1=SUSPECT OR BAD
+2 2 2 BIT INDICATOR OF QUALITY, 0= GOOD; 1= SLIGHTLY SUSPECTED;"    2= HIGHLY SUSPECTED; 3=BAD
+7 7 PERCENTAGE CONFIDENCE
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/31031.table b/definitions/bufr/tables/0/wmo/10/codetables/31031.table
new file mode 100644
index 0000000..4ce2df8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/31031.table
@@ -0,0 +1 @@
+1 1 DATA NOT PRESENT
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33002.table b/definitions/bufr/tables/0/wmo/10/codetables/33002.table
new file mode 100644
index 0000000..74fd2d6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33002.table
@@ -0,0 +1,4 @@
+0 0 DATA NOT SUSPECT
+1 1 DATA SUSPECT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33003.table b/definitions/bufr/tables/0/wmo/10/codetables/33003.table
new file mode 100644
index 0000000..1516d51
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33003.table
@@ -0,0 +1,5 @@
+0 0 DATA NOT SUSPECT
+1 1 DATA SLIGHTLY SUSPECT
+2 2 DATA HIGHTLY SUSPECT
+3 3 DATA CONSIDERED UNFIT FOR USE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33005.table b/definitions/bufr/tables/0/wmo/10/codetables/33005.table
new file mode 100644
index 0000000..880bae8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33005.table
@@ -0,0 +1,23 @@
+1 1 NO AUTOMATED METEOROLOGICAL DATA CHECKS PERFORMED
+2 2 PRESSURE DATA SUSPECT
+3 3 WIND DATA SUSPECT
+4 4 DRY-BULB TEMPERATURE DATA SUSPECT
+5 5 WET-BULB TEMPERATURE DATA SUSPECT
+6 6 HUMIDITY DATA SUSPECT
+7 7 GROUND TEMPERATURE DATA SUSPECT
+8 8 SOIL TEMPERATURE (DEPTH 1) DATA SUSPECT
+9 9 SOIL TEMPERATURE (DEPTH 2) DATA SUSPECT
+10 10 SOIL TEMPERATURE (DEPTH 3) DATA SUSPECT
+11 11 SOIL TEMPERATURE (DEPTH 4) DATA SUSPECT
+12 12 SOIL TEMPERATURE (DEPTH 5) DATA SUSPECT
+13 13 CLOUD DATA SUSPECT
+14 14 VISIBILITY DATA SUSPECT
+15 15 PRESENT WEATHER DATA SUSPECT
+16 16 LIGHTNING DATA SUSPECT
+17 17 ICE DEPOSIT DATA SUSPECT
+18 18 PRECIPITATION DATA SUSPECT
+19 19 STATE OF GROUND DATA SUSPECT
+20 20 SNOW DATA SUSPECT
+21 21 WATER CONTENT DATA SUSPECT
+22 22 EVAPORATION/EVAPOTRANSPIRATION DATA SUSPECT
+23 23 SUNSHINE DATA SUSPECT
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33006.table b/definitions/bufr/tables/0/wmo/10/codetables/33006.table
new file mode 100644
index 0000000..0ea44a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33006.table
@@ -0,0 +1,5 @@
+0 0 SELF-CHECK OK
+1 1 AT LEAST ONE WARNING ACTIVE, NO ALARMS
+2 2 AT LEAST ONE ALARM ACTIVE
+3 3 SENSOR FAILURE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33015.table b/definitions/bufr/tables/0/wmo/10/codetables/33015.table
new file mode 100644
index 0000000..dd633f1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33015.table
@@ -0,0 +1,16 @@
+0 0 PASSED ALL CHECKS
+1 1 MISSING-DATA CHECK
+2 2 DESCENDING/REASCENDING BALLOON CHECK
+3 3 DATA PLAUSIBILITY CHECK (ABOVE LIMITS)
+4 4 DATA PLAUSIBILITY CHECK (BELOW LIMITS)
+5 5 SUPERADIABATIC LAPSE RATE CHECK
+6 6 LIMITING ANGLES CHECK
+7 7 ASCENSION RATE CHECK
+8 8 EXCESSIVE CHANGE FROM PREVIOUS FLIGHT
+9 9 BALLOON OVERHEAD CHECK
+10 10 WIND SPEED CHECK
+11 11 WIND DIRECTION CHECK
+12 12 DEPENDENCY CHECK
+13 13 DATA VALID BUT MODIFIED
+14 14 DATA OUTLIER CHECK
+63 63 MISSING DATA
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33020.table b/definitions/bufr/tables/0/wmo/10/codetables/33020.table
new file mode 100644
index 0000000..023909a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33020.table
@@ -0,0 +1,8 @@
+0 0 GOOD
+1 1 INCONSISTENT
+2 2 DOUBTFUL
+3 3 WRONG
+4 4 NOT CHECKED
+5 5 HAS BEEN CHECKED
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33021.table b/definitions/bufr/tables/0/wmo/10/codetables/33021.table
new file mode 100644
index 0000000..e3e67ae
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33021.table
@@ -0,0 +1,4 @@
+0 0 WITHIN LIMITS
+1 1 OUTSIDE LIMITS
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33022.table b/definitions/bufr/tables/0/wmo/10/codetables/33022.table
new file mode 100644
index 0000000..692661f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33022.table
@@ -0,0 +1,4 @@
+0 0 GOOD (SEVERAL IDENTICAL REPORTS HAVE BEEN RECEIVED)
+1 1 DUBIOUS (NO IDENTICAL REPORT HAVE BEEN RECEIVED)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33023.table b/definitions/bufr/tables/0/wmo/10/codetables/33023.table
new file mode 100644
index 0000000..71ecd11
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33023.table
@@ -0,0 +1,4 @@
+0 0 RELIABLE (LOCATION WAS MADE OVER TWO SATELLITE PASSES)
+1 1 LATEST KNOWN (NO LOCATION OVER CORRESPONDING PASS)
+2 2 DUBIOUS
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33024.table b/definitions/bufr/tables/0/wmo/10/codetables/33024.table
new file mode 100644
index 0000000..e1e3b92
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33024.table
@@ -0,0 +1,10 @@
+0 0 RESERVED
+1 1 EXELLENT - WITHIN 3 METRES
+2 2 GOOD - WITHIN 10 METRES
+3 3 FAIR - WITHIN 20 METRES
+4 4 POOR - MORE THAN 20 METRES
+5 5 EXELLENT -WITHIN 10 FEET
+6 6 GOOD WITHIN-30 FEET
+7 7 FAIR WITHIN 60 FEET
+8 8 POOR - MORE THAN 60 FEET
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33025.table b/definitions/bufr/tables/0/wmo/10/codetables/33025.table
new file mode 100644
index 0000000..edcd4e3
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33025.table
@@ -0,0 +1,5 @@
+0 0 TIME INTERPOLATED, LATITUDE AND LONGITUDE REPORTED
+1 1 TIME REPORTED, LATITUDE AND LONGITUDE INTERPOLATED
+2 2 TIME, LATITUDE AND LONGITUDE INTERPOLATED
+3 3 TIME, LATITUDE AND LONGITUDE REPORTED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33026.table b/definitions/bufr/tables/0/wmo/10/codetables/33026.table
new file mode 100644
index 0000000..539a9fe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33026.table
@@ -0,0 +1,10 @@
+0 0 NORMAL OPERATIONS - MEASUREMENT MODE
+1 1 NORMAL OPERATIONS - NON-MEASUREMENT MODE
+2 2 SMALL RH
+3 3 HUMIDITY ELEMENT IS WET
+4 4 HUMIDITY ELEMENT IS CONTAMINATED
+5 5 HEATER FAIL
+6 6 HEATER FAIL AND WET/CONTAMINATED HUMIDITY ELEMENT
+7 7 SINGLE VALIDITY BAD
+8 8 NUMERIC ERROR
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33027.table b/definitions/bufr/tables/0/wmo/10/codetables/33027.table
new file mode 100644
index 0000000..30dcae8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33027.table
@@ -0,0 +1,5 @@
+0 0 RADIUS >= 1500 M
+1 1 500 M <= RADIUS < 1500 M
+2 2 250 M <= RADIUS < 500 M
+3 3 RADIUS < 250 M
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33028.table b/definitions/bufr/tables/0/wmo/10/codetables/33028.table
new file mode 100644
index 0000000..8a16e7a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33028.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 NOMINAL
+2 2 DEGRADED BY SW ERROR; ANY ERROR REPORTED BY THE ALGORITHMS
+3 3 DEGRADED BY INSTRUMENT ERROR
+4 4 DEGRADED BY CORRUPTED/MISSING ADF
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33030.table b/definitions/bufr/tables/0/wmo/10/codetables/33030.table
new file mode 100644
index 0000000..c9e36c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33030.table
@@ -0,0 +1,7 @@
+1 1 DO NOT USE SCAN FOR PRODUCT GENERATION
+2 2 TIME SEQUENCE ERROR DETECTED WITH THIS SCAN
+3 3 DATA GAP PRECEDES THIS SCAN
+4 4 NO CALIBRATION
+5 5 NO EARTH LOCATION
+6 6 FIRST GOOD TIME FOLLOWING A CLOCK UPDATE
+7 7 INSTRUMENT STATUS CHANGED WITH THIS SCAN
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33031.table b/definitions/bufr/tables/0/wmo/10/codetables/33031.table
new file mode 100644
index 0000000..857eece
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33031.table
@@ -0,0 +1,21 @@
+1 1 TIME FIELD IS BAD BUT CAN PROBABLY BE INFERRED FROM THE PREV"    IOUS GOOD TIME
+2 2 TIME FIELD IS BAD AND CAN?~@~YT BE INFERRED FROM THE PREVIOU"    S GOOD TIME
+3 3 THIS RECORD STARTS A SEQUENCE THAT IS INCONSISTENT WITH PREV"    IOUS TIMES (I.E. THERE IS A TIME DISCONTINUITY). THIS MAY OR"     MAY NOT BE ASSOCIAT
+4 4 START OF A SEQUENCE THAT APPARENTLY REPEATS SCAN TIMES THAT"    HAVE BEEN PREVIOUSLY ACCEPTED
+5 5 SCAN LINE WAS NOT CALIBRATED BECAUSE OF BAD TIME
+6 6 SCAN LINE WAS CALIBRATED USING FEWER THAN THE PREFERRED NUMB"    ER OF SCAN LINES BECAUSE OF PROXIMATY TO START OR END OF DAT"    A OR TO A DATA GAP
+7 7 SCAN LINE WAS NOT CALIBRATED BECAUSE OF BAD OR INSUFFICIENT"    PRT DATA
+8 8 SCAN LINE WAS CALIBRATED BUT WITH MARGINAL PRT DATA
+9 9 SOME UNCALIBRATED CHANNELS ON THIS SCAN
+10 10 UNCALIBRATED DUE TO INSTRUMENT MODE
+11 11 QUESTIONABLE CALIBRATION BECAUSE OF ANTENNA POSITION ERROR O"    F SPACE VIEW
+12 12 QUESTIONABLE CALIBRATION BECAUSE OF ANTENNA POSITION ERROR O"    F BLACK BODY
+13 13 NOT EARTH LOCATED BECAUSE OF BAD TIME
+14 14 EARTH LOCATION QUESTIONABLE BECAUSE OF"     QUESTIONABLE TIME CODE (SEE TIME PROBLEM"     CODE BITS)
+15 15 EARTH LOCATION QUESTIONABLE - ONLY MARGINAL AGREEMENT"     WITH REASONABLENESS CHECK
+16 16 EARTH LOCATION QUESTIONABLE - FAILS REASONABLENESS CHECK
+17 17 EARTH LOCATION QUESTIONABLE BECAUSE OF ANTENNA POSITION CHEC"    K
+18 18 SCAN LINE CALIBRATION COLD BLACK BODY
+19 19 SCAN LINE CALIBRATION WARM BLACK BODY
+20 20 SCAN LINE CALIBRATION SPACE VIEW
+21 21 EARTH VIEW
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33032.table b/definitions/bufr/tables/0/wmo/10/codetables/33032.table
new file mode 100644
index 0000000..45b284d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33032.table
@@ -0,0 +1,6 @@
+1 1 NO GOOD BLACKBODY COUNTS FOR SCAN LINE
+2 2 NO GOOD SPACE VIEW COUNTS FOR THIS LINE
+3 3 NO GOOD PRTS FOR THIS LINE
+4 4 SOME BAD BLACKBODY VIEW COUNTS FOR THIS LINE
+5 5 SOME BAD SPACE VIEW COUNTS FOR THIS LINE
+6 6 SOME BAD PRT TEMPS ON THIS LINE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33033.table b/definitions/bufr/tables/0/wmo/10/codetables/33033.table
new file mode 100644
index 0000000..803087f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33033.table
@@ -0,0 +1,23 @@
+1 1 SET IF SECONDARY CALIBRATION USED
+2 2 BRIGHTNESS TEMPERATURE IN CHANNEL 1 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+3 3 BRIGHTNESS TEMPERATURE IN CHANNEL 2 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+4 4 BRIGHTNESS TEMPERATURE IN CHANNEL 3 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+5 5 BRIGHTNESS TEMPERATURE IN CHANNEL 4 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+6 6 BRIGHTNESS TEMPERATURE IN CHANNEL 5 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+7 7 BRIGHTNESS TEMPERATURE IN CHANNEL 6 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+8 8 BRIGHTNESS TEMPERATURE IN CHANNEL 7 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+9 9 BRIGHTNESS TEMPERATURE IN CHANNEL 8 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+10 10 BRIGHTNESS TEMPERATURE IN CHANNEL 9 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+11 11 BRIGHTNESS TEMPERATURE IN CHANNEL 10 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+12 12 BRIGHTNESS TEMPERATURE IN CHANNEL 11 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+13 13 BRIGHTNESS TEMPERATURE IN CHANNEL 12 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+14 14 BRIGHTNESS TEMPERATURE IN CHANNEL 13 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+15 15 BRIGHTNESS TEMPERATURE IN CHANNEL 14 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+16 16 BRIGHTNESS TEMPERATURE IN CHANNEL 15 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+17 17 BRIGHTNESS TEMPERATURE IN CHANNEL 16 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+18 18 BRIGHTNESS TEMPERATURE IN CHANNEL 17 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+19 19 BRIGHTNESS TEMPERATURE IN CHANNEL 18 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+20 20 BRIGHTNESS TEMPERATURE IN CHANNEL 19 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+21 21 BRIGHTNESS TEMPERATURE IN CHANNEL 20 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+22 22 SET IF ALL CHANNELS ARE MISSING
+23 23 SUSPECT
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33035.table b/definitions/bufr/tables/0/wmo/10/codetables/33035.table
new file mode 100644
index 0000000..938a958
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33035.table
@@ -0,0 +1,15 @@
+0 0 AUTOMATIC QUALITY CONTROL PASSED AND NOT MANUALLY CHECKED
+1 1 AUTOMATIC QUALITY CONTROL PASSED AND MANUALLY CHECKED AND PA"    SSED
+2 2 AUTOMATIC QUALITY CONTROL PASSED AND MANUALLY CHECKED AND DE"    LETED
+3 3 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY NOT CHECKED
+4 4 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY CHECKED AND FA"    ILED
+5 5 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY CHECKED AND RE"    -INSERTED
+6 6 AUTOMATIC QUALITY CONTROL FLAGGED DATA AS QUESTIONABLE AND N"    OT MANUALLY CHECCKED
+7 7 AUTOMATIC QUALITY CONTROL FLAGGED DATA AS QUESTIONABLE"    AND MANUALLY CHECKED AND FAILED
+8 8 MANUALLY CHECKED AND FAILED
+9 9 EXCESSIVE MISSING DATA FRAMES
+10 10 RESERVED
+11 11 EXCESSIVE MISSING TEMPERATURE
+12 12 EXCESSIVE MISSING PRESSURE
+13 13 USER TERMINATED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33037.table b/definitions/bufr/tables/0/wmo/10/codetables/33037.table
new file mode 100644
index 0000000..81a7d01
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33037.table
@@ -0,0 +1,19 @@
+1 1 U DEPARTURE FROM GUESS
+2 2 V DEPARTURE FROM GUESS
+3 3 U & V DEPARTURE FROM GUESS
+4 4 U ACCELERATION
+5 5 V ACCELERATION
+6 6 U & V ACCELERATION
+7 7 POSSIBLE LAND FEATURE
+8 8 U ACCELERATION AND POSSIBLE LAND FEATURE
+9 9 V ACCELERATION AND POSSIBLE LAND FEATURE
+10 10 U & V ACCELERATION AND POSSIBLE LAND FEATURE
+11 11 BAD WIND GUESS
+12 12 CORRELATION FAILURE
+13 13 SEARCH BOX OFF EDGE OF AREA
+14 14 TARGET BOX OFF EDGE OF AREA
+15 15 PIXEL BRIGHTNESS OUT OF BOUNDS (NOISY LINE)
+16 16 TARGET OUTSIDE OF LAT/LONG BOX
+17 17 TARGET OUTSIDE OF PRESSURE MIN/MAX
+18 18 AUTOEDITOR FLAGGED SLOW VECTOR
+19 19 AUTOEDITOR FLAGGED VECTORS
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33038.table b/definitions/bufr/tables/0/wmo/10/codetables/33038.table
new file mode 100644
index 0000000..3dc1192
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33038.table
@@ -0,0 +1,9 @@
+1 1 TOTAL ZENITH DELAY QUALITY IS CONSIDERED POOR
+2 2 GALILEO SATELLITES USED
+3 3 GLONASS SATELLITES USED
+4 4 GPS SATELLITES USED
+5 5 METEOROLOGICAL DATA APPLIED
+6 6 ATMOSPHERIC LOADING CORRECTION APPLIED
+7 7 OCEAN TIDE LOADING APPLIED
+8 8 CLIMATE QUALITY DATA PROCESSING
+9 9 NEAR-REAL TIME DATA PROCESSING
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33039.table b/definitions/bufr/tables/0/wmo/10/codetables/33039.table
new file mode 100644
index 0000000..50ff126
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33039.table
@@ -0,0 +1,9 @@
+1 1 NON-NOMINAL QUALITY
+2 2 OFFLINE PRODUCT
+3 3 ASCENDING OCCULTATION FLAG
+4 4 EXCESS PHASE PROCESSING NON-NOMINAL
+5 5 BENDING ANGLE PROCESSING NON-NOMINAL
+6 6 REFRACTIVITY PROCESSING NON-NOMINAL
+7 7 METEOROLOGICAL PROCESSING NON-NOMINAL
+14 14 BACKGROUND PROFILE NON-NOMINAL
+15 15 BACKGROUND (I.E. NOT RETRIEVED) PROFILE PRESENT
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33041.table b/definitions/bufr/tables/0/wmo/10/codetables/33041.table
new file mode 100644
index 0000000..7da4cf8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33041.table
@@ -0,0 +1,4 @@
+0 0 THE FOLLOWING VALUE IS THE TRUE VALUE
+1 1 THE FOLLOWING VALUE IS HIGHER THAN THE TRUE VALUE"    (THE MEASUREMENT HIT THE LOWER LIMIT OF THE INSTRUMENT)
+2 2 THE FOLLOWING VALUE IS LOWER THAN THE TRUE VALUE"    (THE MEASUREMENT HIT THE HIGHER LIMIT OF THE INSTRUMENT)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33042.table b/definitions/bufr/tables/0/wmo/10/codetables/33042.table
new file mode 100644
index 0000000..b75447a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33042.table
@@ -0,0 +1,5 @@
+0 0 EXCLUSIVE LOWER LIMIT (>)
+1 1 INCLUSIVE LOWER LIMIT (>=)
+2 2 EXCLUSIVE UPPER LIMIT (<)
+3 3 INCLUSIVE UPPER LIMIT (=<)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33043.table b/definitions/bufr/tables/0/wmo/10/codetables/33043.table
new file mode 100644
index 0000000..f0626f5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33043.table
@@ -0,0 +1,4 @@
+1 1 SEA MDS. NADIR ONLY SST RETRIEVAL USED 3.7 MICRON"    CHANNEL. LAND MDS RESERVED
+2 2 SEA MDS. DUAL VIEW SST RETRIEVAL USED 3.7 MICRON"    CHANNEL. LAND MDS RESERVED.
+3 3 NADIR VIEW CONTAINS DAY TIME DATA
+4 4 FORWARD VIEW CONTAINS DAY TIME DATA
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33044.table b/definitions/bufr/tables/0/wmo/10/codetables/33044.table
new file mode 100644
index 0000000..a74a7c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33044.table
@@ -0,0 +1,14 @@
+1 1 INPUT DATA MEAN OUTSIDE NOMINAL RANGE FLAG
+2 2 INPUT DATA STANDARD DEVIATION OUTSIDE NOMINAL RANGE FLAG
+3 3 NUMBER OF INPUT DATA GAPS > THRESHOLD VALUE
+4 4 PERCENTAGE OF MISSING LINES > THRESHOLD VALUE
+5 5 DOPPLER CENTROID UNCERTAIN. CONFIDENCE MEASURE < SPECIFIC VA"    LUE
+6 6 DOPPLER AMBIGUITY ESTIMATE UNCERTAIN. CONFIDENCE MEASURE < S"    PECIFIC VALUE
+7 7 OUTPUT DATA MEAN OUTSIDE NOMINAL RANGE FLAG
+8 8 OUTPUT DATA STANDARD DEVIATION OUTSIDE NOMINAL RANGE FLAG
+9 9 CHIRP RECONSTRUCTION FAILED OR IS OF LOW QUALITY FLAG
+10 10 DATA SET MISSING
+11 11 INVALID DOWNLINK PARAMETERS
+12 12 AZIMUTH CUT-OFF ITERATION COUNT. THE AZIMUTH CUT-OFF FIT DID"     NOT CONVERGE WITHIN A MINIMUM NUMBER OF ITERATIONS
+13 13 AZIMUTH CUT-OFF FIT DID NOT CONVERGE WITHIN A MINIMUM"    NUMBER OF ITERATIONS
+14 14 PHASE INFORMATION CONFIDENCE MEASURE. THE IMAGINARY SPECTRAL"    PEAK IS LESS THAN A MINIMUM THRESHOLD, OR THE ZERO LAG SHIFT"    IS GREATER THAN A MI
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33047.table b/definitions/bufr/tables/0/wmo/10/codetables/33047.table
new file mode 100644
index 0000000..e91702b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33047.table
@@ -0,0 +1,26 @@
+1 1 ERROR DETECTED AND ATTEMPTS TO RECOVER MADE
+2 2 ANOMALY IN ON-BOARD DATA HANDLING (OBDH) VALUE DETECTED
+3 3 ANOMALY IN ULTRA STABLE OSCILLATOR PROCESSING (USOP) VALUE D"    ETECTED
+4 4 ERRORS DETECTED BY ON-BOARD COMPUTER
+5 5 AUTOMATIC GAIN CONTROL (AGC) OUT OF RANGE
+6 6 RX DELAY FAULT. RX DISTANCE OUT OF RANGE
+7 7 WAVE FORM SAMPLES FAULT IDENTIFIER. ERROR
+12 12 BRIGHTNESS TEMPERATURE (CHANNEL 1) OUT OF RANGE
+13 13 BRIGHTNESS TEMPERATURE (CHANNEL 2) OUT OF RANGE
+14 14 RESERVED
+15 15 KU OCEAN RETRACKING ERROR
+16 16 S OCEAN RETRACKING ERROR
+17 17 KU ICE 1 RETRACKING ERROR
+18 18 S ICE 1 RETRACKING ERROR
+19 19 KU ICE 2 RETRACKING ERROR
+20 20 S ICE 2 RETRACKING ERROR
+21 21 KU SEA ICE RETRACKING ERROR
+22 22 ARITHMETIC FAULT ERROR
+23 23 METEO DATA STATE. NO MAP
+24 24 METEO DATA STATE. 1 MAP
+25 25 METEO DATA STATE 2 MAPS DEGRADED
+26 26 METEO DATA STATE 2 MAPS NOMINAL
+27 27 ORBIT PROPAGATOR STATUS FOR PROPAGATION MODE, SEVERAL ERRORS
+28 28 ORBIT PROPAGATOR STATUS FOR PROPAGATION MODE, WARNING DETECT"    ED
+29 29 ORBIT PROPAGATOR STATUS FOR INITIALISATION MODE, SEVERAL ERR"    ORS
+30 30 ORBIT PROPAGATOR STATUS FOR INITIALISATION MODE, WARNING DET"    ECTED
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33048.table b/definitions/bufr/tables/0/wmo/10/codetables/33048.table
new file mode 100644
index 0000000..312ba40
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33048.table
@@ -0,0 +1,4 @@
+0 0 INVERSION SUCCESSFUL
+1 1 INVERSION NOT SUCCESSFUL
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33049.table b/definitions/bufr/tables/0/wmo/10/codetables/33049.table
new file mode 100644
index 0000000..bdde061
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33049.table
@@ -0,0 +1,4 @@
+0 0 EXTERNAL WIND DIRECTION USED DURING INVERSION
+1 1 EXTERNAL WIND DIRECTION NOT USED DURING INVERSION
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33050.table b/definitions/bufr/tables/0/wmo/10/codetables/33050.table
new file mode 100644
index 0000000..772ab4a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33050.table
@@ -0,0 +1,8 @@
+0 0 UNQUALIFIED
+1 1 CORRECT VALUE (ALL CHECKS PASSED)
+2 2 PROBABLY GOOD BUT VALUE INCONSISTENT WITH STATISTICS (DIFFER"     FROM CLIMATOLOGY)
+3 3 PROBABLY BAD (SPIKE, GRADIENT, ?~E IF OTHER TESTS PASSED)
+4 4 BAD VALUE, IMPOSSIBLE VALUE (OUT OF SCALE, VERTICAL"    INSTABILITY, CONSTANT PROFILE)
+5 5 VALUE MODIFIED DURING QUALITY CONTROL
+8 8 INTERPOLATED VALUE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33052.table b/definitions/bufr/tables/0/wmo/10/codetables/33052.table
new file mode 100644
index 0000000..42ae4d2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33052.table
@@ -0,0 +1,20 @@
+1 1 DATA BLOCK 1 INVALID (S BAND)
+2 2 DATA BLOCK 2 INVALID (S BAND)
+3 3 DATA BLOCK 3 INVALID (S BAND)
+4 4 DATA BLOCK 4 INVALID (S BAND)
+5 5 DATA BLOCK 5 INVALID (S BAND)
+6 6 DATA BLOCK 6 INVALID (S BAND)
+7 7 DATA BLOCK 7 INVALID (S BAND)
+8 8 DATA BLOCK 8 INVALID (S BAND)
+9 9 DATA BLOCK 9 INVALID (S BAND)
+10 10 DATA BLOCK 10 INVALID (S BAND)
+11 11 DATA BLOCK 11 INVALID (S BAND)
+12 12 DATA BLOCK 12 INVALID (S BAND)
+13 13 DATA BLOCK 13 INVALID (S BAND)
+14 14 DATA BLOCK 14 INVALID (S BAND)
+15 15 DATA BLOCK 15 INVALID (S BAND)
+16 16 DATA BLOCK 16 INVALID (S BAND)
+17 17 DATA BLOCK 17 INVALID (S BAND)
+18 18 DATA BLOCK 18 INVALID (S BAND)
+19 19 DATA BLOCK 19 INVALID (S BAND)
+20 20 DATA BLOCK 20 INVALID (S BAND)
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33053.table b/definitions/bufr/tables/0/wmo/10/codetables/33053.table
new file mode 100644
index 0000000..9170c54
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33053.table
@@ -0,0 +1,20 @@
+1 1 DATA BLOCK 1 INVALID (KU BAND)
+2 2 DATA BLOCK 2 INVALID (KU BAND)
+3 3 DATA BLOCK 3 INVALID (KU BAND)
+4 4 DATA BLOCK 4 INVALID (KU BAND)
+5 5 DATA BLOCK 5 INVALID (KU BAND)
+6 6 DATA BLOCK 6 INVALID (KU BAND)
+7 7 DATA BLOCK 7 INVALID (KU BAND)
+8 8 DATA BLOCK 8 INVALID (KU BAND)
+9 9 DATA BLOCK 9 INVALID (KU BAND)
+10 10 DATA BLOCK 10 INVALID (KU BAND)
+11 11 DATA BLOCK 11 INVALID (KU BAND)
+12 12 DATA BLOCK 12 INVALID (KU BAND)
+13 13 DATA BLOCK 13 INVALID (KU BAND)
+14 14 DATA BLOCK 14 INVALID (KU BAND)
+15 15 DATA BLOCK 15 INVALID (KU BAND)
+16 16 DATA BLOCK 16 INVALID (KU BAND)
+17 17 DATA BLOCK 17 INVALID (KU BAND)
+18 18 DATA BLOCK 18 INVALID (KU BAND)
+19 19 DATA BLOCK 19 INVALID (KU BAND)
+20 20 DATA BLOCK 20 INVALID (KU BAND)
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/33060.table b/definitions/bufr/tables/0/wmo/10/codetables/33060.table
new file mode 100644
index 0000000..0b85a8f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/33060.table
@@ -0,0 +1,4 @@
+0 0 PARAMETER=GOOD
+1 1 PARAMETER=BAD
+2 2 PARAMETER=RESERVED
+3 3 MISSING
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/35000.table b/definitions/bufr/tables/0/wmo/10/codetables/35000.table
new file mode 100644
index 0000000..c5e8846
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/35000.table
@@ -0,0 +1,11 @@
+1 1 100-199 RA I CODES
+2 2 200-299 RA II CODES
+3 3 300-399 RA III CODES
+4 4 400-499 RA IV CODES
+5 5 500-599 RA V CODES
+6 6 600-699 RA VI CODES
+7 7 700-799 ANTARCTIC CODES
+8 8 800-999 RESERVED
+9 9 1000-1022 NOT USED
+11 11 000-099 INTERNATIONAL FM CODES
+1023 1023 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/35001.table b/definitions/bufr/tables/0/wmo/10/codetables/35001.table
new file mode 100644
index 0000000..bba0c81
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/35001.table
@@ -0,0 +1,4 @@
+0 0 REAL TIME
+1 1 NEAR-REAL TIME
+2 2 NON-REAL TIME
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/35030.table b/definitions/bufr/tables/0/wmo/10/codetables/35030.table
new file mode 100644
index 0000000..a46775f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/35030.table
@@ -0,0 +1,10 @@
+0 0 NO DISCREPANCIES
+1 1 NON-COMPLIANCE WITH STANDARD AND RECOMMENDED PRACTICES"    AND PROCEDURES INCLUDINGTHOSE OF MONITORING
+2 2 CATALOGUES OF METEOROLOGICAL BULLETINS NOT UPDATED IN A TIME"    LY MANNER
+3 3 INCORRECT ROUTEING DIRECTORIES
+4 4 LACK OF FLEXIBILITY IN THE ROUTEING ARRANGEMENTS
+5 5 DEFICIENCIES IN THE OPERATION OF GTS CENTRES AND CIRCUITS
+6 6 LOSS OF DATA OR DELAYS IN RELAYING DATA ON THE GTS
+7 7 ROUTEING OF DATA DIFFERENT FROM THE ROUTEING PROVIDED IN THE"     PLAN
+8 8 VARIOUS MALPRACTICES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/35031.table b/definitions/bufr/tables/0/wmo/10/codetables/35031.table
new file mode 100644
index 0000000..8c95268
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/35031.table
@@ -0,0 +1,20 @@
+1 1 SUFFICIENT AND ALL OF ACCEPTABLE QUALITY
+2 2 SUFFICIENT BUT PARTLY OF ACCEPTABLE QUALITY
+3 3 INSUFFICIENT BUT ALL OF ACCEPTABLE QUALITY
+4 4 INSUFFICIENT AND OF UNACCEPTABLE QUALITY
+5 5 SOME MESSAGES NOT COMPLETE
+6 6 SUSPECT OR WRONGLY CODED GROUPS COULD NOT BE INTERPRETED CON"    FIDENTLY
+7 7 GROSS CODING ERRORS
+8 8 TRANSMISSION SEQUENTIAL ORDER NOT OBSERVED
+9 9 REPORT COMPLETELY GARBLED AND THUS DISCARDED
+10 10 DEFICIENCIES IDENTIFIED AND RECTIFIED
+11 11 DEFICIENCIES IDENTIFIED BUT NOT RECTIFIED
+12 12 DEFICIENCIES NOT IDENTIFIED
+13 13 MEASURING ERRORS
+14 14 MUTUAL INCONSISTENCY
+15 15 TEMPORAL INCONSISTENCY
+16 16 FORECAST ERROR
+17 17 BIAS
+18 18 IMPROVE SYSTEM OF QUALITY CONTROL
+19 19 EXPAND TRAINING PROGRAMMES
+123 123 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/35032.table b/definitions/bufr/tables/0/wmo/10/codetables/35032.table
new file mode 100644
index 0000000..7f53a05
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/35032.table
@@ -0,0 +1,10 @@
+1 1 DATA GROUPS MISSING DUE TO RADIO FADING
+2 2 DATA GROUPS MISSING DUE TO OUTAGE OF CENTRE
+3 3 DATA GROUPS MISSING DUE TO OUTAGE OF CIRCUIT
+4 4 NON-IMPLEMENTATION OR MAINTENANCE OF REQUIRED RBSN DENSITY
+5 5 SHORTAGE OF QUALIFIED STAFF TO MAN STATIONS
+6 6 LACK OF CONSUMABLES
+7 7 INSTRUMENT FAILURE
+8 8 NON-ADHERENCE TO TELECOMMUNICATION PROCEDURES
+9 9 SOME OBSERVING PROGRAMMES CEASED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/35033.table b/definitions/bufr/tables/0/wmo/10/codetables/35033.table
new file mode 100644
index 0000000..2a3e525
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/35033.table
@@ -0,0 +1,12 @@
+1 1 NO DEFICIENCY
+2 2 OBSERVATIONS NOT MADE REGULARLY
+3 3 OBSERVATIONS NOT MADE AT RIGHT TIME
+4 4 OBSERVATIONS MADE BUT NOT DISSEMINATED
+5 5 OBSERVATIONS MADE AND SENT TO INCORRECT USERS
+6 6 COLLECTION NOT RECEIVED
+7 7 COLLECTION TRANSMITTED LATE
+8 8 COLLECTION NOT TRANSMITTED
+9 9 DIFFICULTIES IN HF PROPAGATION AND SELECTION OF SUITABLE FRE"    QUENCY
+10 10 DIFFICULTIES IN MAINTENANCE OF COMMUNICATION EQUIPMENT AT RE"    MOTE STATIONS
+11 11 NO ALTERNATIVE ARRANGEMENT FOR ROUTEING METEOROLOGICAL OBSER"    VATION
+123 123 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/35034.table b/definitions/bufr/tables/0/wmo/10/codetables/35034.table
new file mode 100644
index 0000000..7297664
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/35034.table
@@ -0,0 +1,7 @@
+1 1 SLIGHT IMPROVEMENT
+2 2 SIGNIFICANT IMPROVEMENT
+3 3 MOST SIGNIFICANT IMPROVEMENT
+4 4 STEADY
+5 5 DECREASING
+6 6 EFFORTS REQUIRED TO IMPROVE NIGHT-TIME OBSERVATIONS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/40011.table b/definitions/bufr/tables/0/wmo/10/codetables/40011.table
new file mode 100644
index 0000000..d4284c9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/40011.table
@@ -0,0 +1,4 @@
+1 1 MEAN SEA SURFACE (MSS) INTERPOLATION FLAG
+2 2 OCEAN TIDE SOLUTION 1 INTERPOLATION FLAG (0= 4 POINTS OVER O"    CEAN, 1=LESS THAN 4 POINTS)
+3 3 OCEAN TIDE SOLUTION 2 INTERPOLATION FLAG (0= 4 POINTS OVER O"    CEAN, 1=LESS THAN 4 POINTS)
+4 4 METEOROLOGICAL DATA INTERPOLATION FLAG (0= 4 POINTS OVER OCE"    AN, 1=LESS THAN 4 POINTS)
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/40012.table b/definitions/bufr/tables/0/wmo/10/codetables/40012.table
new file mode 100644
index 0000000..d8ce14d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/40012.table
@@ -0,0 +1,3 @@
+1 1 18.7 GHZ BRIGHTNESS TEMPERATURE
+2 2 23.8 GHZ BRIGHTNESS TEMPERATURE
+3 3 34 GHZ BRIGHTNESS TEMPERATURE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/40013.table b/definitions/bufr/tables/0/wmo/10/codetables/40013.table
new file mode 100644
index 0000000..f9dfb9a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/40013.table
@@ -0,0 +1,5 @@
+0 0 INTERPOLATION WITH NO GAP BETWEEN JMR DATA
+1 1 INTERPOLATION WITH GAP BETWEEN JMR DATA
+2 2 EXTRAOLATION OF JMR DATA
+3 3 FAILURE OF EXTRAPOLATION AND INTERPOLATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/4059.table b/definitions/bufr/tables/0/wmo/10/codetables/4059.table
new file mode 100644
index 0000000..cee2528
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/4059.table
@@ -0,0 +1,5 @@
+1 1 00 UTC
+2 2 06 UTC
+3 3 12 UTC
+4 4 18 UTC
+5 5 OTHER HOURS
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8001.table b/definitions/bufr/tables/0/wmo/10/codetables/8001.table
new file mode 100644
index 0000000..ec028a1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8001.table
@@ -0,0 +1,7 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 MAXIMUM WIND LEVEL
+5 5 SIGNIFICANT LEVEL, TEMPERATURE AND/OR RELATIVE HUMIDITY
+6 6 SIGNIFICANT LEVEL, WIND
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8002.table b/definitions/bufr/tables/0/wmo/10/codetables/8002.table
new file mode 100644
index 0000000..d929f62
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8002.table
@@ -0,0 +1,13 @@
+0 0 OBSERVING RULES FOR BASE OF LOWEST CLOUD AND CLOUD TYPES OF"    FM 12-IX EXT. SYNOP AND FM 13-IX EXT. SHIP APPLY
+1 1 FIRST NON - CB SIGNIFICANT LAYER
+2 2 SECOND NON - CB SIGNIFICANT LAYER
+3 3 THIRD NON - CB SIGNIFICANT LAYER
+4 4 CUMULONIMBUS LAYER
+5 5 CEILING
+6 6 CLOUD NOT DETECTED BELOW THE FOLLOWING HEIGHT(S)
+7 7 LOW CLOUD
+8 8 MIDDLE CLOUD
+9 9 HIGH CLOUD
+10 10 CLOUD LAYER WITH BASE BELOW THE STATION LEVEL AND TOP"    ABOVE THE STATION LEVEL
+11 11 CLOUD LAYER WITH BASE AND TOP BELOW THE STATION LEVEL
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8003.table b/definitions/bufr/tables/0/wmo/10/codetables/8003.table
new file mode 100644
index 0000000..442be98
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8003.table
@@ -0,0 +1,9 @@
+0 0 SURFACE
+1 1 BASE OF SATELLITE SOUNDING
+2 2 CLOUD TOP
+3 3 TROPOPAUSE
+4 4 PRECIPITABLE WATER
+5 5 SOUNDING RADIANCES
+6 6 MEAN TEMPERATURES
+7 7 OZON
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8004.table b/definitions/bufr/tables/0/wmo/10/codetables/8004.table
new file mode 100644
index 0000000..348d3d1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8004.table
@@ -0,0 +1,6 @@
+2 2 UNSTEADY (UNS)
+3 3 LEVEL FLIGHT, ROUTINE OBSERVATION (LVR)
+4 4 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED (LVW)
+5 5 ASCENDING (ASC)
+6 6 DESCENDING(DES)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8005.table b/definitions/bufr/tables/0/wmo/10/codetables/8005.table
new file mode 100644
index 0000000..2313ea5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8005.table
@@ -0,0 +1,7 @@
+0 0 RESERVED
+1 1 STORM CENTRE
+2 2 OUTER LIMIT OR EDGE OF STORM
+3 3 LOCATION OF MAXIMUM WIND
+4 4 LOCATION OF STORM IN THE PERTURBED ANALYSIS
+5 5 LOCATION OF STORM IN THE ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8006.table b/definitions/bufr/tables/0/wmo/10/codetables/8006.table
new file mode 100644
index 0000000..9f56c62
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8006.table
@@ -0,0 +1,8 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 PROMINENT MAXIMUM LEVEL
+5 5 PROMINENT MINIMUM LEVEL
+6 6 MINIMUM PRESSURE LEVEL
+7 7 RESERVED
+8 8 LEVEL OF UNDETERMINED SIGNIFICANCE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8007.table b/definitions/bufr/tables/0/wmo/10/codetables/8007.table
new file mode 100644
index 0000000..3e4d2cc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8007.table
@@ -0,0 +1,5 @@
+0 0 POINT
+1 1 LINE
+2 2 AREA
+3 3 VOLUME
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8008.table b/definitions/bufr/tables/0/wmo/10/codetables/8008.table
new file mode 100644
index 0000000..2714b5a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8008.table
@@ -0,0 +1,8 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 LEVEL OF BETA RADIATION MAXIMUM
+5 5 LEVEL OF GAMMA RADIATION MAXIMUM
+6 6 MINIMUM PRESSURE LEVEL
+7 7 RESERVED
+8 8 LEVEL OF UNDETERMINED SIGNIFICANCE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8009.table b/definitions/bufr/tables/0/wmo/10/codetables/8009.table
new file mode 100644
index 0000000..153f92a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8009.table
@@ -0,0 +1,16 @@
+0 0 LEVEL FLIGHT, ROUTINE OBSERVATION, UNSTEADY
+1 1 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED, UNSTEADY
+2 2 UNSTEADY (UNS)
+3 3 LEVEL FLIGHT, ROUTINE OBSERVATION (LVR)
+4 4 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED (LVW)
+5 5 ASCENDING (ASC)
+6 6 DESCENDING (DES)
+7 7 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS
+8 8 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS, UNSTEADY
+9 9 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS
+10 10 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS, UNSTEADY
+11 11 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS
+12 12 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS, UNSTEADY
+13 13 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS
+14 14 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS, UNSTEADY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8010.table b/definitions/bufr/tables/0/wmo/10/codetables/8010.table
new file mode 100644
index 0000000..50e8c70
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8010.table
@@ -0,0 +1,13 @@
+0 0 RESERVED
+1 1 BARE SOIL
+2 2 BARE ROCK
+3 3 LAND GRASS COVER
+4 4 WATER (LAKE, SEA)
+5 5 FLOOD WATER UNDERNEATH
+6 6 SNOW
+7 7 ICE
+8 8 RUNWAY OR ROAD
+9 9 SHIP OR PLATFORM DECK IN STEEL
+10 10 SHIP OR PLATFORM DECK IN WOOD
+11 11 SHIP OR PLATFORM DECK PARTLY COVERED WITH RUBBER MAT
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8011.table b/definitions/bufr/tables/0/wmo/10/codetables/8011.table
new file mode 100644
index 0000000..c8ed7cb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8011.table
@@ -0,0 +1,26 @@
+0 0 QUASI-STATIONARY FRONT AT THE SURFACE
+1 1 QUASI-STATIONARY FRONT ABOVE THE SURFACE
+2 2 WARM FRONT AT THE SURFACE
+3 3 WARM FRONT ABOVE THE SURFACE
+4 4 COLD FRONT AT THE SURFACE
+5 5 COLD FRONT ABOVE THE SURFACE
+6 6 OCCLUSION
+7 7 INSTABILITY LINE
+8 8 INTERTROPICAL FRONT
+9 9 CONVERGENCE LINE
+10 10 JET STREAM
+11 11 CLOUD CLEAR
+12 12 CLOUD
+13 13 TURBULENCE
+14 14 STORM
+15 15 AIRFRAME ICING
+16 16 PHENOMENON
+17 17 VOLCANO
+18 18 ATMOSPHERICS
+20 20 SPECIAL CLOUDS
+21 21 THUNDERSTORM (VAL)
+22 22 TROPICAL CYCLONE (VAL)
+23 23 MOUNTAIN WAVE (VAL)
+24 24 DUSTSTORM (VAL)
+25 25 SANDSTORM (VAL)
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8012.table b/definitions/bufr/tables/0/wmo/10/codetables/8012.table
new file mode 100644
index 0000000..0cef734
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8012.table
@@ -0,0 +1,4 @@
+0 0 LAND
+1 1 SEA
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8013.table b/definitions/bufr/tables/0/wmo/10/codetables/8013.table
new file mode 100644
index 0000000..6ea96bf
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8013.table
@@ -0,0 +1,4 @@
+0 0 NIGHT
+1 1 DAY
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8014.table b/definitions/bufr/tables/0/wmo/10/codetables/8014.table
new file mode 100644
index 0000000..da6bb04
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8014.table
@@ -0,0 +1,10 @@
+0 0 10-MINUTE MEAN VALUE - NORMAL VALUE
+1 1 10-MINUTE MEAN VALUE - ABOVE THE UPPER LIMIT FOR ASSESSMENT"    OF RVR (P)
+2 2 10-MINUTE MEAN VALUE - BELOW LOWER LIMIT FOR ASSESSMENT OF R"    VR (M)
+3 3 ONE MINUTE MINIMUM VALUE - NORMAL VALUE
+4 4 ONE MINUTE MINIMUM VALUE - ABOVE THE UPPER LIMIT FOR ASSESSM"    ENT OF RVR (P)
+5 5 ONE MINUTE MINIMUM VALUE - BELOW LOWER LIMIT FOR ASSESSMENT"    OF RVR (M)
+6 6 ONE MINUTE MAXIMUM VALUE - NORMAL VALUE
+7 7 ONE MINUTE MAXIMUM VALUE - ABOVE THE UPPER LIMIT FOR ASSESS"    MENT OF RVR (P)
+8 8 ONE MINUTE MAXIMUM VALUE - BELOW LOWER LIMIT FOR ASSESSMENT"    OF RVR (M)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8016.table b/definitions/bufr/tables/0/wmo/10/codetables/8016.table
new file mode 100644
index 0000000..6b8a1fa
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8016.table
@@ -0,0 +1,5 @@
+0 0 NOSIG
+1 1 BECMG
+2 2 TEMPO
+3 3 FM
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8017.table b/definitions/bufr/tables/0/wmo/10/codetables/8017.table
new file mode 100644
index 0000000..b3156f8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8017.table
@@ -0,0 +1,4 @@
+0 0 FM
+1 1 TL
+2 2 AT
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8018.table b/definitions/bufr/tables/0/wmo/10/codetables/8018.table
new file mode 100644
index 0000000..e4078dc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8018.table
@@ -0,0 +1,5 @@
+1 1 LAND IS PRESENT
+2 2 SURFACE ICE MAP INDICATES ICE IS PRESENT
+11 11 ICE MAP DATA NOT AVAILABLE
+12 12 ATTENUATION MAP DATA NOT AVAILABLE
+17 17 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8021.table b/definitions/bufr/tables/0/wmo/10/codetables/8021.table
new file mode 100644
index 0000000..988dfd0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8021.table
@@ -0,0 +1,32 @@
+0 0 RESERVED
+1 1 TIME SERIES
+2 2 TIME AVERAGED
+3 3 ACCUMULATED
+4 4 FORECAST
+5 5 FORECAST TIME SERIES
+6 6 FORECAST TIME AVERAGED
+7 7 FORECAST ACCUMULATED
+8 8 ENSEMBLE MEAN
+9 9 ENSEMBLE MEAN TIME SERIES
+10 10 ENSEMBLE MEAN TIME AVERAGED
+11 11 ENSEMBLE MEAN ACCUMULATED
+12 12 ENSEMBLE MEAN FORECAST
+13 13 ENSEMBLE MEAN FORECAST TIME SERIES
+14 14 ENSEMBLE MEAN FORECAST AVERAGED
+15 15 ENSEMBLE MEAN FORECAST ACCUMULATED
+16 16 ANALYSIS
+17 17 START OF PHENOMENON
+18 18 RADIOSONDE LAUNCH TIME
+19 19 START OF ORBIT
+20 20 END OF ORBIT
+21 21 TIME OF ASCENDING NODE
+22 22 TIME OF OCCURENCE OF WIND SHIFT
+23 23 MONITORING PERIOD
+24 24 AGREED TIME LIMIT FOR REPORT RECEPTION
+25 25 NOMINAL REPORTING TIME
+26 26 TIME OF LAST KNOWN POSITION
+27 27 FIRST GUESS    --NOT WMO ENTRY
+28 28 START OF SCAN  --NOT WMO ENTRY
+29 29 END OF SCAN    --NOT WMO ENTRY
+30 30 RESERVED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8023.table b/definitions/bufr/tables/0/wmo/10/codetables/8023.table
new file mode 100644
index 0000000..d65ec12
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8023.table
@@ -0,0 +1,17 @@
+2 2 MAXIMUM VALUE
+3 3 MINIMUM VALUE
+4 4 MEAN VALUE
+5 5 MEDIAN VALUE
+6 6 MODAL VALUE
+7 7 MEAN ABSOLUTE ERROR
+9 9 BEST ESTIMATE OF STANDARD DEVIATION (N-1)
+10 10 STANDARD DEVIATION
+11 11 HARMONIC MEAN
+12 12 ROOT MEAN SQUARE VECTOR ERROR
+13 13 ROOT-MEAN-SQUARE
+32 32 PROBABILITY OF GROSS ERROR
+33 33 PRESCRIBED OBSERVATION ERROR
+34 34 PERSISTENCE OBSERVATION ERROR
+35 35 FINAL OBSERVATION ERROR
+36 36 REPRESENTATIVNESS OBSERVATION ERROR
+63 63 MISSING
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8024.table b/definitions/bufr/tables/0/wmo/10/codetables/8024.table
new file mode 100644
index 0000000..067e37d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8024.table
@@ -0,0 +1,15 @@
+2 2 OBSERVED MINUS MAXIMUM
+3 3 OBSERVED MINUS MINIMUM
+4 4 OBSERVED MINUS MEAN
+5 5 OBSERVED MINUS MEDIAN
+6 6 OBSERVED MINUS MODE
+11 11 OBSERVED MINUS CLIMATOLOGY (ANOMALY)
+12 12 OBSERVED MINUS ANALYZED VALUE
+13 13 OBSERVED MINUS INITIALISED ANALYZED VALUE
+14 14 OBSERVED MINUS FORECAST VALUE
+21 21 OBSERVED MINUS INTERPOLATED VALUE
+22 22 OBSERVED MINUS HYDROSTATICALLY CALCULATED VALUE
+32 32 OBSERVED MINUS FIRST GUESS
+33 33 OBSERVED MINUS ANALYSIS
+34 34 OBSERVED MINUS INITIALIZED ANALYSIS
+63 63 MISSING
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8025.table b/definitions/bufr/tables/0/wmo/10/codetables/8025.table
new file mode 100644
index 0000000..5405e33
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8025.table
@@ -0,0 +1,5 @@
+0 0 UNIVERSAL TIME COORDINATED (UTC) MINUS"    LOCAL STANDARD TIME (LST)
+1 1 LOCAL STANDARD TIME
+2 2 UNIVERSAL TIME COORDINATED (UTC) MINUS SATELLITE CLOCK
+5 5 TIME DIFFERENCE FROM EDGE OF PROCESSING SEGMENT
+15 15 MISSING
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8026.table b/definitions/bufr/tables/0/wmo/10/codetables/8026.table
new file mode 100644
index 0000000..d30bb03
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8026.table
@@ -0,0 +1,5 @@
+0 0 AVERAGING KERNEL MATRIX
+1 1 CORRELATION MATRIX
+2 2 LOWER TRIANGULAR CORRELATION MATRIX SQUARE ROOT (L FROM C=LL"    T)
+3 3 INVERSE LOWER TRIANGULAR CORRELATION MATRIX SQUARE ROOT (L**"    -1)
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8029.table b/definitions/bufr/tables/0/wmo/10/codetables/8029.table
new file mode 100644
index 0000000..28b071b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8029.table
@@ -0,0 +1,5 @@
+0 0 OPEN OCEAN OR SEMI-ENCLOSED SEA
+1 1 ENCLOSED SEA OR LAKE
+2 2 CONTINENTAL ICE
+3 3 LAND
+255 255 MISSING
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8033.table b/definitions/bufr/tables/0/wmo/10/codetables/8033.table
new file mode 100644
index 0000000..449fbd4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8033.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 PERCENTAGE CONFIDENCE CALCULATED USING CLOUD FRACTION
+2 2 PERCENTAGE CONFIDENCE CALCULATED USING STANDARD"    DEVIATION OF TEMPERATURE
+3 3 PERCENTAGE CONFIDENCE CALCULATED USING PROBABILITY OF"     THE CLOUD CONTAMINATION
+4 4 PERCENTAGE CONFIDENCE CALCULATED USING NORMALITY OF DISTRIBU"    TION
+127 127 MISSING
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8035.table b/definitions/bufr/tables/0/wmo/10/codetables/8035.table
new file mode 100644
index 0000000..d56a5d7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8035.table
@@ -0,0 +1,8 @@
+0 0 GLOBAL
+1 1 REGIONAL
+2 2 NATIONAL
+3 3 SPECIAL
+4 4 BILATERAL
+5 5 RESERVED
+6 6 RESERVED
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8036.table b/definitions/bufr/tables/0/wmo/10/codetables/8036.table
new file mode 100644
index 0000000..6cfeab5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8036.table
@@ -0,0 +1,8 @@
+0 0 WMO SECRETARIAT
+1 1 WMO
+2 2 RSMC
+3 3 NMC
+4 4 RTH
+5 5 OBSERVING SITE
+6 6 OTHER
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8039.table b/definitions/bufr/tables/0/wmo/10/codetables/8039.table
new file mode 100644
index 0000000..75f133d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8039.table
@@ -0,0 +1,8 @@
+0 0 ISSUE TIME OF FORECAST
+1 1 TIME OF COMMNENCEMENT OF PERIOD OF THE FORECAST
+2 2 TIME OF ENDING OF PERIOD OF THE FORECAST
+3 3 FORECSAT TIME OF MAXIMUM TEMPERATURE
+4 4 FORECSAT TIME OF MINIMUM TEMPERATURE
+5 5 TIME OF BEGINNING OF THE FORECAST
+6 6 TIME OF ENDING OF THE FORECAST
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8040.table b/definitions/bufr/tables/0/wmo/10/codetables/8040.table
new file mode 100644
index 0000000..7c2430e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8040.table
@@ -0,0 +1,43 @@
+0 0 HIGH RESOLUTION DATA SAMPLE
+1 1 WITHIN 20 HPA OF SURFACE
+2 2 PRESSURE LESS THAN 10 HPA (I.E., 9, 8, 7, ETC.)"    WHEN NO OTHER REASON APPLIES
+3 3 BASE PRESSURE LEVEL FOR STABILITY INDEX
+4 4 BEGIN DOUBTFUL TEMPERATURE, HEIGHT DATA
+5 5 BEGIN MISSING DATA (ALL ELEMENTS)
+6 6 BEGIN MISSING RH DATA
+7 7 BEGIN MISSING TEMPERATURE DATA
+8 8 HIGHEST LEVEL REACHED BEFORE BALLOON"    DESCENT BECAUSE OF ICING OR TURBULENCE
+9 9 END DOUBTFUL TEMPERATURE, HEIGHT DATA
+10 10 END MISSING DATA (ALL ELEMENTS)
+11 11 END MISSING RH DATA
+12 12 END MISSING TEMPERATURE DATA
+13 13 ZERO DEGREES C CROSSING(S) FOR RADAT
+14 14 STANDARD PRESSURE LEVEL
+15 15 OPERATOR ADDED LEVEL
+16 16 OPERATOR DELETED LEVEL
+17 17 BALLOON RE-ASCENDED BEYOND PREVIOUS HIGHEST ASCENT LEVEL
+18 18 SIGNIFICANT RH LEVEL
+19 19 RH LEVEL SELECTION TERMINATED
+20 20 SURFACE LEVEL
+21 21 SIGNIFICANT TEMPERATURE LEVEL
+22 22 MANDATORY TEMPERATURE LEVEL
+23 23 FLIGHT TERMINATION LEVEL
+24 24 TROPOPAUSE(S)
+25 25 AIRCRAFT REPORT
+26 26 INTERPOLATED (GENERATED) LEVEL
+27 27 MANDATORY WIND LEVEL
+28 28 SIGNIFICANT WIND LEVEL
+29 29 MAXIMUM WIND LEVEL
+30 30 INCREMENTAL WIND LEVEL (FIXED REGIONAL)
+31 31 INCREMENTAL HEIGHT LEVEL (GENERATED)
+32 32 WIND TERMINATION LEVEL
+33 33 PRESSURE 100 TO 110 HPA, WHEN NO OTHER REASON APPLIES
+40 40 SIGNIFICANT THERMODYNAMIC LEVEL (INVERSION)
+41 41 SIGNIFICANT RH LEVEL ( PER NCDC CRITERIA)
+42 42 SIGNIFICANT TEMPERATURE LEVEL (PER NCDC)
+43 43 BEGIN MISSING WIND DATA
+44 44 END MISSING WIND DATA
+60 60 LEVEL OF 80-KNOT ISOTACH ABOVE JET
+61 61 LEVEL OF 80-KNOT ISOTACH BELOW JET
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8041.table b/definitions/bufr/tables/0/wmo/10/codetables/8041.table
new file mode 100644
index 0000000..3596f95
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8041.table
@@ -0,0 +1,9 @@
+0 0 PARENT SITE
+1 1 OBSERVATION SITE
+2 2 BALLOON MANUFACTURE DATE
+3 3 BALLOON LAUNCH POINT
+4 4 SURFACE OBSERVATION
+5 5 SURFACE OBSERVATION DISPLACEMENT FROM LAUNCH POINT
+6 6 FLIGHT LEVEL OBSERVATION
+7 7 FLIGHT LEVEL TERMINATION POINT
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8042.table b/definitions/bufr/tables/0/wmo/10/codetables/8042.table
new file mode 100644
index 0000000..b98cece
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8042.table
@@ -0,0 +1,13 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 MAXIMUM WIND LEVEL
+5 5 SIGNIFICANT TEMPERATURE LEVEL
+6 6 SIGNIFICANT HUMIDITY LEVEL
+7 7 SIGNIFICANT WIND LEVEL
+8 8 BEGINNING OF MISSING TEMPERATURE DATA
+9 9 END OF MISSING TEMPERATURE DATA
+10 10 BEGINNING OF MISSING HUMIDITY DATA
+11 11 END OF MISSING HUMIDITY DATA
+12 12 BEGINNING OF MISSING WIND DATA
+13 13 END OF MISSING WIND DATA
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8043.table b/definitions/bufr/tables/0/wmo/10/codetables/8043.table
new file mode 100644
index 0000000..6bd94fe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8043.table
@@ -0,0 +1,21 @@
+0 0 OZONE, O3,10028-15-6
+1 1 WATER VAPOUR, H2O, 7732-18-5
+2 2 METHANE, CH4, 74-82-8
+3 3 CARBON DIOXIDE, CO2, 37210-16-5
+4 4 CARBON MONOXIDE, CO, 630-08-0
+5 5 NITROGEN DIOXIDE, NO2, 10102-44-0
+6 6 NITROUS OXIDE, N2O, 10024-97-2
+7 7 FORMALDEHYDE, HCHO, 50-00-0
+8 8 SULFUR DIOXIDE, SO2, 7446-09-5
+9 9 BROMINE OXIDE, BRO, 15656-19-6
+10 10 CHLORINE DIOXIDE, OCLO, 10049-04-4
+11 11 NITROGEN MONOXIDE, NO, 10102-43-9
+12 12 AMMONIA, NH3, 7664-41-7
+25 25 PARTICULATE MATTER < 1.0 MICRONS
+26 26 PARTICULATE MATTER < 2.5 MICRONS
+27 27 PARTICULATE MATTER < 10 MICRONS
+28 28 AEROSOLS GENERIC
+29 29 SMOKE GENERIC
+30 30 CRUSTAL MATERIAL (GENERIC DUST)
+31 31 VOLCANIC ASH
+255 255 MISSING
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8050.table b/definitions/bufr/tables/0/wmo/10/codetables/8050.table
new file mode 100644
index 0000000..4b401f1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8050.table
@@ -0,0 +1,11 @@
+0 0 RESERVED
+1 1 PRESSURE
+2 2 TEMPERATURE
+3 3 EXTREME TEMPERATURE
+4 4 VAPOUR PRESSURE
+5 5 PRECIPITATION
+6 6 SUNSHINE DURATION
+7 7 MAXIMUM TEMPERATURE
+8 8 MINIMUM TEMPERATURE
+9 9 WIND
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8051.table b/definitions/bufr/tables/0/wmo/10/codetables/8051.table
new file mode 100644
index 0000000..5249fe6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8051.table
@@ -0,0 +1,7 @@
+1 1 PRESSURE
+2 2 TEMPERATURE
+3 3 EXTREME TEMPERATURE
+4 4 VAPOUR PRESSURE
+5 5 PRECIPITATION
+6 6 SUNSHINE DURATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8052.table b/definitions/bufr/tables/0/wmo/10/codetables/8052.table
new file mode 100644
index 0000000..f6f02e9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8052.table
@@ -0,0 +1,26 @@
+0 0 MEAN WIND SPEED OVER 10-MINUTES PERIOD OBSERVED OR RECORDED"    EQUAL TO OR MORE THAN 10 M/S
+1 1 MEAN WIND SPEED OVER 10-MINUTES PERIOD OBSERVED OR RECORDED"    EQUAL TO OR MORE THAN 20 M/S
+2 2 MEAN WIND SPEED OVER 10-MINUTES PERIOD OBSERVED OR RECORDED"    EQUAL TO OR MORE THAN 30 M/S
+3 3 MAXIMUM TEMPERATURE LESS THAN 273.2 K
+4 4 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 298.2 K
+5 5 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 303.2 K
+6 6 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 308.2 K
+7 7 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 313.2 K
+8 8 MINIMUM TEMPERATURE LESS THAN 273.2 K
+9 9 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 273.2 K
+10 10 PRECIPITATION EQUAL TO OR MORE THAN   1.0 KG/M**2
+11 11 PRECIPITATION EQUAL TO OR MORE THAN   5.0 KG/M**2
+12 12 PRECIPITATION EQUAL TO OR MORE THAN  10.0 KG/M**2
+13 13 PRECIPITATION EQUAL TO OR MORE THAN  50.0 KG/M**2
+14 14 PRECIPITATION EQUAL TO OR MORE THAN 100.0 KG/M**2
+15 15 PRECIPITATION EQUAL TO OR MORE THAN 150.0 KG/M**2
+16 16 SNOW DEPTH MORE THAN 0.0 M
+17 17 SNOW DEPTH MORE THAN 0.01 M
+18 18 SNOW DEPTH MORE THAN 0.10 M
+19 19 SNOW DEPTH MORE THAN 0.50 M
+20 20 HORIZONTAL VISIBILITY LESS THAN   50 M
+21 21 HORIZONTAL VISIBILITY LESS THAN  100 M
+22 22 HORIZONTAL VISIBILITY LESS THAN 1000 M
+23 23 HAIL
+24 24 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8053.table b/definitions/bufr/tables/0/wmo/10/codetables/8053.table
new file mode 100644
index 0000000..e0c5039
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8053.table
@@ -0,0 +1,4 @@
+0 0 VALUE OCCURED ON ONLY ONE DAY IN THE MONTH
+1 1 VALUE OCCURED ON MORE THAN ONE DAY IN THE MONTH
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8054.table b/definitions/bufr/tables/0/wmo/10/codetables/8054.table
new file mode 100644
index 0000000..71afef9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8054.table
@@ -0,0 +1,3 @@
+0 0 WIND SPEED OR GUST IS AS REPORTED
+1 1 WIND SPEED IS GREATER THAN THAT REPRTED (P IN METAR/TAF/SPEC"    I)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8060.table b/definitions/bufr/tables/0/wmo/10/codetables/8060.table
new file mode 100644
index 0000000..2865fec
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8060.table
@@ -0,0 +1,8 @@
+0 0 RESERVED
+1 1 RANGE
+2 2 AZIMUTH
+3 3 HORIZONTAL
+4 4 VERTICAL
+5 5 NORTH/SOUTH
+6 6 EAST/WEST
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8065.table b/definitions/bufr/tables/0/wmo/10/codetables/8065.table
new file mode 100644
index 0000000..69b80ea
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8065.table
@@ -0,0 +1,4 @@
+0 0 NO SUN-GLINT
+1 1 SUN-GLINT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8066.table b/definitions/bufr/tables/0/wmo/10/codetables/8066.table
new file mode 100644
index 0000000..fcc0252
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8066.table
@@ -0,0 +1,4 @@
+0 0 OPAQUE
+1 1 SEMI-TRANSPARENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8070.table b/definitions/bufr/tables/0/wmo/10/codetables/8070.table
new file mode 100644
index 0000000..2df3629
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8070.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 RESERVED
+2 2 EARTH LOCATED INSTRUMENT COUNTS,"    CALIBRATION COEFFICIENTS AND HOUSEKEEPING (LEVEL 1B)
+3 3 EARTH LOCATED CALIBRATED RADIANCES (LEVEL 1C)
+4 4 MAPPED TO A COMMON FOOTPRINT, EARTH LOCATED"    CALIBRATED RADIANCES (LEVEL 1D)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8072.table b/definitions/bufr/tables/0/wmo/10/codetables/8072.table
new file mode 100644
index 0000000..bd831e1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8072.table
@@ -0,0 +1,4 @@
+0 0 MIXED
+1 1 CLEAR
+2 2 CLOUDY
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8074.table b/definitions/bufr/tables/0/wmo/10/codetables/8074.table
new file mode 100644
index 0000000..5778e65
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8074.table
@@ -0,0 +1,4 @@
+0 0 OPEN OCEAN OR SEMI-ENCLOSED SEA
+1 1 NON-OCEAN LIKE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8075.table b/definitions/bufr/tables/0/wmo/10/codetables/8075.table
new file mode 100644
index 0000000..5f5e3a2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8075.table
@@ -0,0 +1,4 @@
+0 0 ASCENDING ORBIT
+1 1 DESCENDING ORBIT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8076.table b/definitions/bufr/tables/0/wmo/10/codetables/8076.table
new file mode 100644
index 0000000..c63942f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8076.table
@@ -0,0 +1,3 @@
+0 0 KU
+1 1 C
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8077.table b/definitions/bufr/tables/0/wmo/10/codetables/8077.table
new file mode 100644
index 0000000..2c7902b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8077.table
@@ -0,0 +1,7 @@
+0 0 LAND
+1 1 SEA
+2 2 COASTAL
+3 3 OPEN OCEAN OR SEMI-ENCLOSED SEA
+4 4 ENCLOSED SEA OR LAKE
+5 5 CONTINENTAL ICE
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8079.table b/definitions/bufr/tables/0/wmo/10/codetables/8079.table
new file mode 100644
index 0000000..25fc9e1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8079.table
@@ -0,0 +1,9 @@
+0 0 NORMAL ISSUE
+1 1 CORRECTION TO A PREVIOUSLY ISSUED PRODUCT (COR)
+2 2 AMANDMENT TO A PREVIOUSLY ISSUED PRODUCT *AMD)
+3 3 CORRECTION TO A PREVIOUSLY ISSUED AMENDED PRODUCT (COR AMD)
+4 4 CANCELLATION OD A PREVIOUSLY ISSUED PRODUCT (CNL)
+5 5 NO PRODUCT AVAILABLE (NIL)
+6 6 SPECIAL REPORT ( SPECI)
+7 7 CORRECTED SPECIAL REPORT (SPECI COR)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8080.table b/definitions/bufr/tables/0/wmo/10/codetables/8080.table
new file mode 100644
index 0000000..8972f26
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8080.table
@@ -0,0 +1,9 @@
+0 0 TOTAL WATER PRESSURE PROFILE
+1 1 TOTAL WATER TEMPERATURE PROFILE
+2 2 TOTAL WATER SALINITY PROFILE
+3 3 TOTAL WATER CONDUCTIVITY PROFILE
+10 10 WATER PRESSURE AT A LEVEL
+11 11 WATER TEMPERATURE AT A LEVEL
+12 12 SALINITY AT A LEVEL
+20 20 POSITION
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8081.table b/definitions/bufr/tables/0/wmo/10/codetables/8081.table
new file mode 100644
index 0000000..75d2887
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8081.table
@@ -0,0 +1,5 @@
+0 0 SENSOR
+1 1 TRANSMITTER
+2 2 RECEIVER
+3 3 OBSERVING PLATFORM
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8082.table b/definitions/bufr/tables/0/wmo/10/codetables/8082.table
new file mode 100644
index 0000000..1f24db8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8082.table
@@ -0,0 +1,3 @@
+0 0 SENSOR HEIGHT IS NOT MODIFIED
+1 1 SENSOR HEIGHT IS MODIFIED TO STANDARD LEVEL
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8083.table b/definitions/bufr/tables/0/wmo/10/codetables/8083.table
new file mode 100644
index 0000000..b754702
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8083.table
@@ -0,0 +1,9 @@
+1 1 ADJUSTED WITH RESPECT TO REPRESENTATIVE HEIGHT OF SENSOR ABO"    VE LOCAL GROUND (OR DECK OF MARINE PLATFORM)
+2 2 ADJUSTED WITH RESPECT TO REPRESENTATIVE HEIGHT OF SENSOR ABO"    VE WATER SURFACE
+3 3 ADJUSTED WITH RESPECT TO STANDARD SURFACE ROUGHNESS
+4 4 ADJUSTED WITH RESPECT TO WIND SPEED
+5 5 ADJUSTED WITH RESPECT TO TEMPERATURE
+6 6 ADJUSTED WITH RESPECT TO PRESSURE
+7 7 ADJUSTED WITH RESPECT TO HUMIDITY
+8 8 ADJUSTED WITH RESPECT TO EVAPORATION
+9 9 ADJUSTED WITH RESPECT TO WETTING LOSSES
diff --git a/definitions/bufr/tables/0/wmo/10/codetables/8085.table b/definitions/bufr/tables/0/wmo/10/codetables/8085.table
new file mode 100644
index 0000000..de7bb90
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/codetables/8085.table
@@ -0,0 +1,8 @@
+0 0 FORE BEAM
+1 1 MID BEAM
+2 2 AFT BEAM
+3 3 RESERVED
+4 4 RESERVED
+5 5 RESERVED
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/10/element.table b/definitions/bufr/tables/0/wmo/10/element.table
new file mode 100644
index 0000000..cc9082d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/element.table
@@ -0,0 +1,1297 @@
+#code|abbreviation|type|name|unit|scale|reference|width|crex_unit|crex_scale|crex_width
+000001|tableAEntry|string|TABLE A: ENTRY|CCITT IA5|0|0|24|Character|0|3
+000002|tableALine1|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 1|CCITT IA5|0|0|256|Character|0|32
+000003|tableALine2|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 2|CCITT IA5|0|0|256|Character|0|32
+000004|masterTable|string|BUFR/CREX MASTER TABLE|CCITT IA5|0|0|16|Character|0|2
+000005|editionNumber|string|BUFR/CREX EDITION NUMBER|CCITT IA5|0|0|24|Character|0|3
+000006|bufrMasterTableVersionNumber|string|BUFR MASTER TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000007|crexMasterTableVersionNumber|string|CREX MASTER TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000008|bufrLocalTableVersionNumber|string|BUFR LOCAL TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000010|fDescriptorToBeAddedOrDefined|string|F DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|8|Character|0|1
+000011|xDescriptorToBeAddedOrDefined|string|X DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|16|Character|0|2
+000012|yDescriptorToBeAddedOrDefined|string|Y DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|24|Character|0|3
+000013|elementNameLine1|string|ELEMENT NAME, LINE 1|CCITT IA5|0|0|256|Character|0|32
+000014|elementNameLine2|string|ELEMENT NAME, LINE 2|CCITT IA5|0|0|256|Character|0|32
+000015|unitsName|string|UNITS NAME|CCITT IA5|0|0|192|Character|0|24
+000016|unitsScaleSign|string|UNITS SCALE SIGN|CCITT IA5|0|0|8|Character|0|1
+000017|unitsScale|string|UNITS SCALE|CCITT IA5|0|0|24|Character|0|3
+000018|unitsReferenceSign|string|UNITS REFERENCE SIGN|CCITT IA5|0|0|8|Character|0|1
+000019|unitsReferenceValue|string|UNITS REFERENCE VALUE|CCITT IA5|0|0|80|Character|0|10
+000020|elementDataWidth|string|ELEMENT DATA WIDTH|CCITT IA5|0|0|24|Character|0|3
+000030|descriptorDefiningSequence|string|DESCRIPTOR DEFINING SEQUENCE|CCITT IA5|0|0|48|Character|0|6
+001001|blockNumber|long|WMO BLOCK NUMBER|Numeric|0|0|7|Numeric|0|2
+001002|stationNumber|long|WMO STATION NUMBER|Numeric|0|0|10|Numeric|0|3
+001003|regionNumber|table|WMO REGION NUMBER/GEOGRAPHICAL AREA|CODE TABLE|0|0|3|CODE TABLE|0|1
+001004|wmoRegionSubArea|long|WMO REGION SUB-AREA (SEE NOTE 9)|Numeric|0|0|3|Numeric|0|1
+001005|buoyOrPlatformIdentifier|long|BUOY/PLATFORM IDENTIFIER|Numeric|0|0|17|Numeric|0|5
+001006|aircraftFlightNumber|string|AIRCRAFT FLIGHT NUMBER|CCITT IA5|0|0|64|Character|0|8
+001007|satelliteIdentifier|table|SATELLITE IDENTIFIER|CODE TABLE|0|0|10|CODE TABLE|0|4
+001008|aircraftRegistrationNumberOrOtherIdentification|string|AIRCRAFT REGISTRATION NUMBER OR OTHER IDENTIFICATION|CCITT IA5|0|0|64|Character|0|8
+001009|commercialAircraftType|string|TYPE OF COMMERCIAL AIRCRAFT|CCITT IA5|0|0|64|Character|0|8
+001010|stationaryBuoyPlatformIdentifierEGCManBuoys|string|STATIONARY BUOY PLATFORM IDENTIFIER; E.G. C-MAN BUOYS|CCITT IA5|0|0|64|Character|0|8
+001011|shipOrMobileLandStationIdentifier|string|SHIP OR MOBILE LAND STATION IDENTIFIER|CCITT IA5|0|0|72|Character|0|9
+001012|directionOfMotionOfMovingObservingPlatform|long|DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM**|deg|0|0|9|deg|0|3
+001013|movingObservingPlatformSpeed|long|SPEED OF MOTION OF MOVING OBSERVING PLATFORM*|m/s|0|0|10|m/s|0|3
+001014|platformDriftSpeed|double|PLATFORM DRIFT SPEED (HIGH PRECISION)|m/s|2|0|10|m/s|2|4
+001015|stationOrSiteName|string|STATION OR SITE NAME|CCITT IA5|0|0|160|Character|0|20
+001018|shortStationName|string|SHORT STATION OR SITE NAME|CCITT IA5|0|0|40|Character|0|5
+001019|longStationName|string|LONG STATION OR SITE NAME|CCITT IA5|0|0|256|Character|0|32
+001020|wmoRegionSubArea|long|WMO REGION SUB-AREA|Numeric|0|0|4|Numeric|0|2
+001021|synopticFeatureIdentifier|long|SYNOPTIC FEATURE IDENTIFIER|Numeric|0|0|14|Numeric|0|4
+001022|featureName|string|NAME OF FEATURE (SEE NOTE 11)|CCITT IA5|0|0|224|Character|0|28
+001023|observationSequenceNumber|long|OBSERVATION SEQUENCE NUMBER|Numeric|0|0|9|Numeric|0|3
+001025|stormIdentifier|string|STORM IDENTIFIER|CCITT IA5|0|0|24|Character|0|3
+001026|stormName|string|WMO STORM NAME|CCITT IA5|0|0|64|Character|0|8
+001027|longStormName|string|WMO LONG STORM NAME|CCITT IA5|0|0|80|Character|0|10
+001030|numericalModelIdentifier|string|NUMERICAL MODEL IDENTIFIER|CCITT IA5|0|0|128|Character|0|16
+001031|centre|table|IDENTIFICATION OF ORIGINATING/GENERATING CENTRE (SEE NOTE 10)|CODE TABLE|0|0|16|CODE TABLE|0|5
+001032|generatingApplication|table|GENERATING APPLICATION|CODE TABLE|0|0|8|CODE TABLE|0|3
+001033|centre|table|IDENTIFICATION OF ORIGINATING/GENERATING CENTRE|CODE TABLE|0|0|8|CODE TABLE|0|3
+001034|subCentre|table|IDENTIFICATION OF ORIGINATING/GENERATING SUB-CENTRE|CODE TABLE|0|0|8|CODE TABLE|0|3
+001035|centre|table|ORIGINATING CENTRE|Common CODE TABLE C-11|0|0|16|Common CODE TABLE C-11|0|5
+001036|agencyInChargeOfOperatingObservingPlatform|table|AGENCY IN CHARGE OF OPERATING THE OBSERVING PLATFORM|CODE TABLE|0|0|20|CODE TABLE|0|7
+001037|sigmetSequenceIdentifier|string|SIGMET SEQUENCE IDENTIFIER|CCITT IA5|0|0|24|Character|0|3
+001041|absolutePlatformVelocityFirstComponent|double|ABSOLUTE PLATFORM VELOCITY - FIRST COMPONENT (SEE NOTE 6)|m/s|5|-1073741824|31|m/s|5|10
+001042|absolutePlatformVelocitySecondComponent|double|ABSOLUTE PLATFORM VELOCITY - SECOND COMPONENT (SEE NOTE 6)|m/s|5|-1073741824|31|m/s|5|10
+001043|absolutePlatformVelocityThirdComponent|double|ABSOLUTE PLATFORM VELOCITY - THIRD COMPONENT (SEE NOTE 6)|m/s|5|-1073741824|31|m/s|5|10
+001050|platformTransmitterIdNumber|long|PLATFORM TRANSMITTER ID NUMBER|Numeric|0|0|17|Numeric|0|6
+001051|platformTransmitterIdNumber|string|PLATFORM TRANSMITTER ID NUMBER|CCITT IA5|0|0|96|Character|0|12
+001060|aircraftReportingPointBeaconIdentifier|string|AIRCRAFT REPORTING POINT (BEACON IDENTIFIER)|CCITT IA5|0|0|64|Character|0|8
+001062|shortIcaoLocationIndicator|string|SHORT ICAO LOCATION INDICATOR|CCITT IA5|0|0|32|Character|0|4
+001063|icaoLocationIndicator|string|ICAO LOCATION INDICATOR|CCITT IA5|0|0|64|Character|0|8
+001064|runwayDesignator|string|RUNWAY DESIGNATOR|CCITT IA5|0|0|32|Character|0|4
+001065|icaoRegionIdentifier|string|ICAO REGION IDENTIFIER|CCITT IA5|0|0|256|Character|0|32
+001075|tideStationIdentification|string|TIDE STATION IDENTIFICATION|CCITT IA5|0|0|40|Character|0|5
+001080|shipLineNumberAccordingToSoop|string|SHIP LINE NUMBER ACCORDING TO SOOP|CCITT IA5|0|0|32|Character|0|4
+001081|radiosondeSerialNumber|string|RADIOSONDE SERIAL NUMBER|CCITT IA5|0|0|160|Character|0|20
+001082|radiosondeAscensionNumber|long|RADIOSONDE ASCENSION NUMBER (SEE NOTE 12)|Numeric|0|0|14|Numeric|0|4
+001083|radiosondeReleaseNumber|long|RADIOSONDE RELEASE NUMBER (SEE NOTE 12)|Numeric|0|0|3|Numeric|0|1
+001085|observingPlatformManufacturerModel|string|OBSERVING PLATFORM MANUFACTURER'S MODEL|CCITT IA5|0|0|160|Character|0|20
+001086|observingPlatformManufacturerSerialNumber|string|OBSERVING PLATFORM MANUFACTURER'S SERIAL NUMBER|CCITT IA5|0|0|256|Character|0|32
+001087|marineObservingPlatformIdentifier|long|WMO MARINE OBSERVING PLATFORM EXTENDED IDENTIFIER|Numeric|0|0|23|Numeric|0|7
+001090|techniqueForMakingUpInitialPerturbations|table|TECHNIQUE FOR MAKING UP INITIAL PERTURBATIONS|CODE TABLE|0|0|8|CODE TABLE|0|3
+001091|ensembleMemberNumber|long|ENSEMBLE MEMBER NUMBER|Numeric|0|0|10|Numeric|0|4
+001092|ensembleForecastType|table|TYPE OF ENSEMBLE FORECAST|CODE TABLE|0|0|8|CODE TABLE|0|3
+001093|balloonLotNumber|string|BALLOON LOT NUMBER|CCITT IA5|0|0|96|Character|0|12
+001094|wbanNumber|long|WBAN NUMBER|Numeric|0|0|17|Numeric|0|5
+001095|observerIdentification|string|OBSERVER IDENTIFICATION|CCITT IA5|0|0|32|Character|0|4
+001096|stationAcquisition|string|STATION ACQUISITION|CCITT IA5|0|0|160|Character|0|20
+001101|stateIdentifier|table|STATE IDENTIFIER|CODE TABLE|0|0|10|CODE TABLE|0|3
+001102|stationNumber|long|NATIONAL STATION IDENTIFIER|Numeric|0|0|30|Numeric|0|9
+001124|gridPointIdentifier|long|GRID POINT IDENTIFIER|Numeric|0|0|24|Numeric|0|8
+001144|snapshotIdentifier|long|SNAPSHOT IDENTIFIER|Numeric|0|0|31|Numeric|0|10
+002001|stationType|table|TYPE OF STATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002002|instrumentationForWindMeasurement|flag|TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+002003|measuringEquipmentType|table|TYPE OF MEASURING EQUIPMENT USED|CODE TABLE|0|0|4|CODE TABLE|0|2
+002004|typeOfInstrumentationForEvaporationMeasurement|table|TYPE OF INSTRUMENTATION FOR EVAPORATION MEASUREMENT OR TYPE OF C|CODE TABLE|0|0|4|CODE TABLE|0|2
+002005|temperatureObservationPrecision|double|PRECISION OF TEMPERATURE OBSERVATION|K|2|0|7|K|2|3
+002011|radiosondeType|table|RADIOSONDE TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+002012|radiosondeComputationalMethod|table|RADIOSONDE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002013|solarAndInfraredRadiationCorrection|table|SOLAR AND INFRARED RADIATION CORRECTION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002014|trackingTechniqueOrStatusOfSystem|table|TRACKING TECHNIQUE/STATUS OF SYSTEM USED|CODE TABLE|0|0|7|CODE TABLE|0|3
+002015|radiosondeCompleteness|table|RADIOSONDE COMPLETENESS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002016|radiosondeConfiguration|flag|RADIOSONDE CONFIGURATION|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+002019|satelliteInstruments|table|SATELLITE INSTRUMENTS|CODE TABLE|0|0|11|CODE TABLE|0|4
+002020|satelliteClassification|table|SATELLITE CLASSIFICATION|CODE TABLE|0|0|9|CODE TABLE|0|3
+002021|satelliteInstrumentDataUsedInProcessing|flag|SATELLITE INSTRUMENT DATA USED IN PROCESSING|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+002022|satelliteDataProcessingTechnique|flag|SATELLITE DATA-PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002023|satelliteDerivedWindComputationMethod|table|SATELLITE DERIVED WIND COMPUTATION METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002024|meanHumidityComputationalMethod|table|INTEGRATED MEAN HUMIDITY COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002025|satelliteChannelsUsedInComputation|flag|SATELLITE CHANNEL(S) USED IN COMPUTATION|FLAG TABLE|0|0|25|FLAG TABLE|0|9
+002026|crossTrackResolution|double|CROSS TRACK RESOLUTION|m|2|0|12|m|2|4
+002027|alongTrackResolution|double|ALONG TRACK RESOLUTION|m|2|0|12|m|2|4
+002028|segmentSizeAtNadirInXDirection|long|SEGMENT SIZE AT NADIR IN X DIRECTION|m|0|0|18|m|0|6
+002029|segmentSizeAtNadirInYDirection|long|SEGMENT SIZE AT NADIR IN Y DIRECTION|m|0|0|18|m|0|6
+002030|methodOfCurrentMeasurement|table|METHOD OF CURRENT MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002031|durationAndTimeOfCurrentMeasurement|table|DURATION AND TIME OF CURRENT MEASUREMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+002032|indicatorForDigitization|table|INDICATOR FOR DIGITIZATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002033|methodOfSalinityOrDepthMeasurement|table|METHOD OF SALINITY/DEPTH MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002034|drogueType|table|DROGUE TYPE|CODE TABLE|0|0|5|CODE TABLE|0|2
+002035|cableLength|long|CABLE LENGTH|m|0|0|9|m|0|3
+002036|buoyType|table|BUOY TYPE|CODE TABLE|0|0|2|CODE TABLE|0|1
+002037|methodOfTidalObservation|table|METHOD OF TIDAL OBSERVATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+002038|methodOfWaterTemperatureAndOrOrSalinityMeasurement|table|METHOD OF WATER TEMPERATURE AND/OR SALINITY MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002039|methodOfWetBulbTemperatureMeasurement|table|METHOD OF WET-BULB TEMPERATURE MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002040|methodOfRemovingVelocityAndMotionOfPlatformFromCurrent|table|METHOD OF REMOVING VELOCITY AND MOTION OF PLATFORM FROM CURRENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002041|methodForEstimatingReportsRelatedToSynopticFeatures|table|METHOD FOR ESTIMATING REPORTS RELATED TO SYNOPTIC FEATURES|CODE TABLE|0|0|6|CODE TABLE|0|2
+002042|indicatorForSeaSurfaceCurrentSpeed|table|INDICATOR FOR SEA SURFACE CURRENT SPEED|CODE TABLE|0|0|2|CODE TABLE|0|1
+002044|indicatorForMethodOfCalculatingSpectralWaveData|table|INDICATOR FOR METHOD OF CALCULATING SPECTRAL WAVE DATA|CODE TABLE|0|0|4|CODE TABLE|0|2
+002045|platformType|table|INDICATOR FOR TYPE OF PLATFORM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002046|waveMeasurementInstrumentation|table|WAVE MEASUREMENT INSTRUMENTATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002048|satelliteSensorIndicator|table|SATELLITE SENSOR INDICATOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002049|geostationarySatelliteDataProcessingTechnique|flag|GEOSTATIONARY SATELLITE DATA-PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002050|geostationarySounderSatelliteChannels|flag|GEOSTATIONARY SOUNDER SATELLITE CHANNELS USED|FLAG TABLE|0|0|20|FLAG TABLE|0|7
+002051|indicatorToSpecifyObservingMethodForExtremeTemperatures|table|INDICATOR TO SPECIFY OBSERVING METHOD FOR EXTREME TEMPERATURES|CODE TABLE|0|0|4|CODE TABLE|0|2
+002052|geostationaryImagerSatelliteChannels|flag|GEOSTATIONARY IMAGER SATELLITE CHANNELS USED|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+002053|goesBrightnessTemperatureCharacteristics|table|GOES-I/M BRIGHTNESS TEMPERATURE CHARACTERISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002054|goesSoundingsParameter|table|GOES-I/M SOUNDINGS PARAMETER CHARACTERISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002055|geostationarySoundingsStatisticalParameters|table|GEOSTATIONARY SOUNDINGS STATISTICAL PARAMETERS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002056|geostationarySoundingsAccuracyStatistics|table|GEOSTATIONARY SOUNDINGS ACCURACY STATISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002057|originOfFirstGuessInformationForGoesIOrMSoundings|table|ORIGIN OF FIRST GUESS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002058|validTimesOfFirstGuessInformationForGoesIOrMSoundings|table|VALID TIMES OF FIRST GUESS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002059|originOfAnalysisInformationForGoesIOrMSoundings|table|ORIGIN OF ANALYSIS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002060|originOfSurfaceInformationForGoesIOrMSoundings|table|ORIGIN OF SURFACE INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002061|aircraftNavigationalSystem|table|AIRCRAFT NAVIGATIONAL SYSTEM|CODE TABLE|0|0|3|CODE TABLE|0|1
+002062|aircraftDataRelaySystemType|table|TYPE OF AIRCRAFT DATA RELAY SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002063|aircraftRollAngle|double|AIRCRAFT ROLL ANGLE|deg|2|-18000|16|deg|2|5
+002064|aircraftRollAngleQuality|table|AIRCRAFT ROLL ANGLE QUALITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+002065|acarsGroundReceivingStation|string|ACARS GROUND RECEIVING STATION|CCITT IA5|0|0|40|Character|0|5
+002066|radiosondeGroundReceivingSystem|table|RADIOSONDE GROUND RECEIVING SYSTEM|CODE TABLE|0|0|6|CODE TABLE|0|2
+002067|radiosondeOperatingFrequency|long|RADIOSONDE OPERATING FREQUENCY|Hz|-5|0|15|Hz|-5|5
+002070|originalSpecificationOfLatitudeOrLongitude|table|ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002071|spectrographicWavelength|double|SPECTROGRAPHIC WAVELENGTH|m|13|0|30|m|13|10
+002080|balloonManufacturer|table|BALLOON MANUFACTURER|CODE TABLE|0|0|6|CODE TABLE|0|2
+002081|balloonType|table|TYPE OF BALLOON|CODE TABLE|0|0|5|CODE TABLE|0|2
+002082|weightOfBalloon|double|WEIGHT OF BALLOON|kg|3|0|12|kg|3|4
+002083|balloonShelterType|table|TYPE OF BALLOON SHELTER|CODE TABLE|0|0|4|CODE TABLE|0|2
+002084|typeOfGasUsedInBalloon|table|TYPE OF GAS USED IN BALLOON|CODE TABLE|0|0|4|CODE TABLE|0|2
+002085|amountOfGasUsedInBalloon|double|AMOUNT OF GAS USED IN BALLOON|kg|3|0|13|kg|3|4
+002086|balloonFlightTrainLength|double|BALLOON FLIGHT TRAIN LENGTH|m|1|0|10|m|1|4
+002091|entrySensor4Or20Ma|double|ENTRY SENSOR 4/20 MA|A|4|0|10|A|4|3
+002095|pressureSensorType|table|TYPE OF PRESSURE SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002096|temperatureSensorType|table|TYPE OF TEMPERATURE SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002097|humiditySensorType|table|TYPE OF HUMIDITY SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002098|typeOfWaveSensor|table|TYPE OF WAVE SENSOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002099|polarization|table|POLARISATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+002100|radarConstant|double|RADAR CONSTANT|dB|1|0|12|dB|1|4
+002101|antennaType|table|TYPE OF ANTENNA|CODE TABLE|0|0|4|CODE TABLE|0|2
+002102|antennaHeightAboveTowerBase|long|ANTENNA HEIGHT ABOVE TOWER BASE|m|0|0|8|m|0|3
+002103|radome|flag|RADOME|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+002104|antennaPolarization|table|ANTENNA POLARISATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002105|maximumAntennaGain|long|MAXIMUM ANTENNA GAIN|dB|0|0|6|dB|0|2
+002106|3DbBeamwidth|double|3-DB BEAMWIDTH|deg|1|0|6|deg|1|2
+002107|sidelobeSuppression|long|SIDELOBE SUPPRESSION|dB|0|0|6|dB|0|2
+002108|crosspolDiscriminationOnAxis|long|CROSSPOL DISCRIMINATION (ON AXIS)|dB|0|0|6|dB|0|2
+002109|antennaSpeedAzimuth|double|ANTENNA SPEED (AZIMUTH)|deg/s|2|0|12|deg/s|2|4
+002110|antennaSpeedElevation|double|ANTENNA SPEED (ELEVATION)|deg/s|2|0|12|deg/s|2|4
+002111|radarIncidenceAngle|double|RADAR INCIDENCE ANGLE|deg|1|0|10|deg|1|4
+002112|radarLookAngle|double|RADAR LOOK ANGLE|deg|1|0|12|deg|1|4
+002113|numberOfAzimuthLooks|long|NUMBER OF AZIMUTH LOOKS|Numeric|0|0|4|Numeric|0|2
+002114|antennaEffectiveSurfaceArea|long|ANTENNA EFFECTIVE SURFACE AREA|m2|0|0|15|m2|0|5
+002115|surfaceObservingEquipmentType|table|TYPE OF SURFACE OBSERVING EQUIPMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+002116|percentageOf320MhzBandProcessed|long|PERCENTAGE OF 320 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002117|percentageOf80MhzBandProcessed|long|PERCENTAGE OF 80 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002118|percentageOf20MhzBandProcessed|long|PERCENTAGE OF 20 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002119|ra2InstrumentOperations|table|RA-2 INSTRUMENT OPERATIONS|CODE TABLE|0|0|3|CODE TABLE|0|1
+002120|oceanWaveFrequency|double|OCEAN WAVE FREQUENCY|Hz|3|0|10|Hz|3|4
+002121|meanFrequency|long|MEAN FREQUENCY|Hz|-8|0|7|Hz|-8|3
+002122|frequencyAgilityRange|long|FREQUENCY AGILITY RANGE|Hz|-6|-128|8|Hz|-6|3
+002123|peakPower|long|PEAK POWER|W|-4|0|7|W|-4|3
+002124|averagePower|long|AVERAGE POWER|W|-1|0|7|W|-1|3
+002125|pulseRepetitionFrequency|long|PULSE REPETITION FREQUENCY|Hz|-1|0|8|Hz|-1|3
+002126|pulseWidth|double|PULSE WIDTH|s|7|0|6|s|7|2
+002127|receiverIntermediateFrequency|long|RECEIVER INTERMEDIATE FREQUENCY|Hz|-6|0|7|Hz|-6|3
+002128|intermediateFrequencyBandwidth|long|INTERMEDIATE FREQUENCY BANDWIDTH|Hz|-5|0|6|Hz|-5|2
+002129|minimumDetectableSignal|long|MINIMUM DETECTABLE SIGNAL|dB|0|-150|5|dB|0|3
+002130|dynamicRange|long|DYNAMIC RANGE|dB|0|0|7|dB|0|3
+002131|sensitivityTimeControl|flag|SENSITIVITY TIME CONTROL (STC)|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+002132|azimuthPointingAccuracy|double|AZIMUTH POINTING ACCURACY|deg|2|0|6|deg|2|2
+002133|elevationPointingAccuracy|double|ELEVATION POINTING ACCURACY|deg|2|0|6|deg|2|2
+002134|antennaBeamAzimuth|double|ANTENNA BEAM AZIMUTH|deg|2|0|16|deg|2|5
+002135|antennaElevation|double|ANTENNA ELEVATION|deg|2|-9000|15|deg|2|5
+002136|rangeProcessedByRangeAttenuationCorrection|long|RANGE PROCESSED BY RANGE ATTENUATION CORRECTION|m|-3|0|16|m|-3|5
+002140|satelliteRadarBeamAzimuthAngle|long|SATELLITE RADAR BEAM AZIMUTH ANGLE|deg|0|0|9|deg|0|3
+002141|measurementType|string|MEASUREMENT TYPE|CCITT IA5|0|0|24|Character|0|3
+002142|ozoneInstrument|string|OZONE INSTRUMENT SERIAL NUMBER/ IDENTIFICATION|CCITT IA5|0|0|32|Character|0|4
+002143|ozoneInstrumentType|table|OZONE INSTRUMENT TYPE|CODE TABLE|0|0|7|CODE TABLE|0|3
+002144|lightSourceTypeForBrewerSpectrophotometer|table|LIGHT SOURCE TYPE FOR BREWER SPECTRO PHOTOMETER|CODE TABLE|0|0|4|CODE TABLE|0|2
+002145|wavelengthSettingForDobsonInstruments|table|WAVE LENGTH SETTING FOR DOBSON INSTRUMENTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002146|sourceConditionsForDobsonInstruments|table|SOURCE CONDITIONS FOR DOBSON INSTRUMENTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002148|dataCollectionLocationSystem|table|DATA COLLECTION AND/OR LOCATION SYSTEM|CODE TABLE|0|0|5|CODE TABLE|0|2
+002149|dataBuoyType|table|TYPE OF DATA BUOY|CODE TABLE|0|0|6|CODE TABLE|0|2
+002150|tovsOrAtovsOrAvhrrInstrumentationChannelNumber|table|TOVS/ATOVS/AVHRR INSTRUMENTATION CHANNEL NUMBER|CODE TABLE|0|0|6|CODE TABLE|0|2
+002151|radiometerIdentifier|table|RADIOMETER IDENTIFIER|CODE TABLE|0|0|11|CODE TABLE|0|4
+002152|satelliteInstrumentUsedInDataProcessing|flag|SATELLITE INSTRUMENT USED IN DATA PROCESSING(6)|FLAG TABLE|0|0|31|FLAG TABLE|0|10
+002153|satelliteChannelCentreFrequency|long|SATELLITE CHANNEL CENTRE FREQUENCY|Hz|-8|0|26|Hz|-8|8
+002154|satelliteChannelBandWidth|long|SATELLITE CHANNEL BAND WIDTH|Hz|-8|0|26|Hz|-8|8
+002156|percentageOfValidKuOceanRetrackerMeasurements|long|PERCENTAGE OF VALID KU OCEAN RETRACKER MEASUREMENTS|%|0|0|7|%|0|3
+002157|percentageOfValidSOceanRetrackerMeasurements|long|PERCENTAGE OF VALID S OCEAN RETRACKER MEASUREMENTS|%|0|0|7|%|0|3
+002158|ra2Instrument|flag|RA-2 INSTRUMENT|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+002159|mwrInstrument|flag|MWR INSTRUMENT|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002160|radarWaveLength|table|WAVE LENGTH OF THE RADAR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002163|heightAssignmentMethod|table|HEIGHT ASSIGNMENT METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002164|tracerCorrelationMethod|table|TRACER CORRELATION METHOD|CODE TABLE|0|0|3|CODE TABLE|0|1
+002166|radianceType|table|RADIANCE TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002167|radianceComputationalMethod|table|RADIANCE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002168|hydrostaticPressureOfLowerEndOfCableThermistorString|long|HYDROSTATIC PRESSURE OF LOWER END OF CABLE (THERMISTOR STRING)|Pa|-3|0|16|kPa|0|5
+002169|anemometerType|table|ANEMOMETER TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002172|productTypeForRetrievedAtmosphericGases|table|PRODUCT TYPE FOR RETRIEVED ATMOSPHERIC GASES|CODE TABLE|0|0|8|CODE TABLE|0|3
+002173|squareOfOffNadirAngle|double|SQUARE OF THE OFF NADIR ANGLE (7)|deg2|4|0|10|deg2|4|4
+002174|meanAcrossTrackPixelNumber|long|MEAN ACROSS TRACK PIXEL NUMBER|Numeric|0|0|9|Numeric|0|3
+002175|methodOfPrecipitationMeasurement|table|METHOD OF PRECIPITATION MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002176|methodOfStateOfGroundMeasurement|table|METHOD OF STATE OF GROUND MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002177|methodOfSnowDepthMeasurement|table|METHOD OF SNOW DEPTH MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002178|methodOfLiquidContentMeasurementOfPrecipitation|table|METHOD OF LIQUID CONTENT MEASUREMENT OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002179|skyConditionAlgorithmType|table|TYPE OF SKY CONDITION ALGORITHM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002180|mainPresentWeatherDetectingSystem|table|MAIN PRESENT WEATHER DETECTING SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002181|supplementaryPresentWeatherSensor|flag|SUPPLEMENTARY PRESENT WEATHER SENSOR|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+002182|visibilityMeasurementSystem|table|VISIBILITY MEASUREMENT SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002183|cloudDetectionSystem|table|CLOUD DETECTION SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002184|lightningDetectionSensorType|table|TYPE OF LIGHTNING DETECTION SENSOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002185|methodOfEvaporationMeasurement|table|METHOD OF EVAPORATION MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002186|capabilityToDetectPrecipitationPhenomena|flag|CAPABILITY TO DETECT PRECIPITATION PHENOMENA|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+002187|capabilityToDetectOtherWeatherPhenomena|flag|CAPABILITY TO DETECT OTHER WEATHER PHENOMENA|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+002188|capabilityToDetectObscuration|flag|CAPABILITY TO DETECT OBSCURATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+002189|capabilityToDiscriminateLightningStrikes|flag|CAPABILITY TO DISCRIMINATE LIGHTNING STRIKES|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+002190|lagrangianDrifterSubmergenceTimeSubmerged|long|LAGRANGIAN DRIFTER SUBMERGENCE (% TIME SUBMERGED)|%|0|0|7|%|0|3
+004001|year|long|YEAR|a|0|0|12|a|0|4
+004002|month|long|MONTH|mon|0|0|4|mon|0|2
+004003|day|long|DAY|d|0|0|6|d|0|2
+004004|hour|long|HOUR|h|0|0|5|h|0|2
+004005|minute|long|MINUTE|min|0|0|6|min|0|2
+004006|second|long|SECOND|s|0|0|6|s|0|2
+004007|secondsWithinAMinuteMicrosecond|double|SECONDS WITHIN A MINUTE (MICROSECOND ACCURACY)|s|6|0|26|s|6|8
+004011|timeIncrement|long|TIME INCREMENT|a|0|-1024|11|a|0|4
+004012|timeIncrement|long|TIME INCREMENT|mon|0|-1024|11|mon|0|4
+004013|timeIncrement|long|TIME INCREMENT|d|0|-1024|11|d|0|4
+004014|timeIncrement|long|TIME INCREMENT|h|0|-1024|11|h|0|4
+004015|timeIncrement|long|TIME INCREMENT|min|0|-2048|12|min|0|4
+004016|timeIncrement|long|TIME INCREMENT|s|0|-4096|13|s|0|4
+004017|referenceTimePeriodForAccumulatedOrExtremeData|long|REFERENCE TIME PERIOD FOR ACCUMULATED OR EXTREME DATA|min|0|-1440|12|min|0|4
+004021|timePeriod|long|TIME PERIOD OR DISPLACEMENT|a|0|-1024|11|a|0|4
+004022|timePeriod|long|TIME PERIOD OR DISPLACEMENT|mon|0|-1024|11|mon|0|4
+004023|timePeriod|long|TIME PERIOD OR DISPLACEMENT|d|0|-1024|11|d|0|4
+004024|timePeriod|long|TIME PERIOD OR DISPLACEMENT|h|0|-2048|12|h|0|4
+004025|timePeriod|long|TIME PERIOD OR DISPLACEMENT|min|0|-2048|12|min|0|4
+004026|timePeriod|long|TIME PERIOD OR DISPLACEMENT|s|0|-4096|13|s|0|4
+004031|durationOfTimeRelatingToFollowingValue|long|DURATION OF TIME RELATING TO FOLLOWING VALUE|h|0|0|8|h|0|3
+004032|durationOfTimeRelatingToFollowingValue|long|DURATION OF TIME RELATING TO FOLLOWING VALUE|min|0|0|6|min|0|2
+004041|timeDifferenceUtcLmt|long|TIME DIFFERENCE, UTC -LMT (SEE NOTE 6)|min|0|-1440|12|min|0|4
+004043|dayOfYear|long|DAY OF THE YEAR|d|0|0|9|d|0|3
+004051|principalTimeOfDailyReadingOfMaximumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MAXIMUM TEMPERATURE|h|0|0|5|h|0|2
+004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2
+004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2
+004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
+004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
+004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
+004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
+004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2
+004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
+005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005012|latitudeIncrement|double|LATITUDE INCREMENT (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005015|latitudeDisplacement|double|LATITUDE DISPLACEMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005016|latitudeDisplacement|double|LATITUDE DISPLACEMENT (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005021|bearingOrAzimuth|double|BEARING OR AZIMUTH|deg|2|0|16|deg|2|5
+005022|solarAzimuth|double|SOLAR AZIMUTH|deg|2|0|16|deg|2|5
+005023|sunToSatelliteAzimuthDifference|double|SUN TO SATELLITE AZIMUTH DIFFERENCE|deg|1|-1800|12|deg|1|4
+005030|directionSpectral|long|DIRECTION (SPECTRAL)|deg|0|0|12|deg|0|4
+005031|rowNumber|long|ROW NUMBER|Numeric|0|0|12|Numeric|0|4
+005033|pixelSizeOnHorizontal1|long|PIXEL SIZE ON HORIZONTAL - 1|m|-1|0|16|m|-1|5
+005034|alongTrackRowNumber|long|ALONG TRACK ROW NUMBER|Numeric|0|0|11|Numeric|0|4
+005036|shipTransectNumberAccordingToSoop|long|SHIP TRANSECT NUMBER ACCORDING TO SOOP|Numeric|0|0|7|Numeric|0|2
+005040|orbitNumber|long|ORBIT NUMBER|Numeric|0|0|24|Numeric|0|8
+005041|scanLineNumber|long|SCAN LINE NUMBER|Numeric|0|0|8|Numeric|0|3
+005042|channelNumber|long|CHANNEL NUMBER|Numeric|0|0|6|Numeric|0|2
+005043|fieldOfViewNumber|long|FIELD OF VIEW NUMBER|Numeric|0|0|8|Numeric|0|3
+005044|satelliteCycleNumber|long|SATELLITE CYCLE NUMBER|Numeric|0|0|11|Numeric|0|4
+005052|channelNumberIncrement|long|CHANNEL NUMBER INCREMENT|Numeric|0|0|5|Numeric|0|2
+005053|fieldOfViewNumberIncrement|long|FIELD OF VIEW NUMBER INCREMENT|Numeric|0|0|5|Numeric|0|2
+005060|yAngularPositionFromCentreOfGravity|double|Y ANGULAR POSITION FROM CENTRE OF GRAVITY|deg|6|-8000000|24|deg|6|8
+005061|zAngularPositionFromCentreOfGravity|double|Z ANGULAR POSITION FROM CENTRE OF GRAVITY|deg|6|-8000000|24|deg|6|8
+006001|longitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006002|longitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006011|longitudeIncrement|double|LONGITUDE INCREMENT (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006012|longitudeIncrement|double|LONGITUDE INCREMENT (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006015|longitudeDisplacement|double|LONGITUDE DISPLACEMENT (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006016|longitudeDisplacement|double|LONGITUDE DISPLACEMENT (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006021|distance|long|DISTANCE|m|-1|0|13|m|-1|4
+006030|waveNumberSpectral|double|WAVE NUMBER (SPECTRAL)|rad/m|5|0|13|rad/m|5|4
+006031|columnNumber|long|COLUMN NUMBER|Numeric|0|0|12|Numeric|0|4
+006033|pixelSizeOnHorizontal2|long|PIXEL SIZE ON HORIZONTAL - 2|m|-1|0|16|m|-1|5
+006034|crossTrackCellNumber|long|CROSS-TRACK CELL NUMBER|Numeric|0|0|7|Numeric|0|3
+006040|radiusOfConfidence|long|RADIUS OF CONFIDENCE|m|0|0|13|m|0|4
+007001|heightOfStation|long|HEIGHT OF STATION (SEE NOTE 1)|m|0|-400|15|m|0|5
+007002|height|long|HEIGHT OR ALTITUDE|m|-1|-40|16|m|-1|5
+007003|geopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|m2 s-2|-1|6
+007004|pressure|long|PRESSURE|Pa|-1|0|14|Pa|-1|5
+007005|heightIncrement|long|HEIGHT INCREMENT|m|0|-400|12|m|0|4
+007006|heightAboveStation|long|HEIGHT ABOVE STATION|m|0|0|15|m|0|5
+007007|height|long|HEIGHT|m|0|-1000|17|m|0|6
+007008|geopotential|long|GEOPOTENTIAL|m2 s-2|0|-10000|20|m2 s-2|0|7
+007009|geopotentialHeight|long|GEOPOTENTIAL HEIGHT|gpm|0|-1000|17|gpm|0|5
+007010|flightLevel|long|FLIGHT LEVEL|m|0|-1024|16|ft|-1|5
+007012|gridPointAltitude|double|GRID POINT ALTITUDE|m|2|-50000|20|m|2|7
+007021|elevation|double|ELEVATION (SEE NOTE 2)|deg|2|-9000|15|deg|2|5
+007022|solarElevation|double|SOLAR ELEVATION|deg|2|-9000|15|deg|2|5
+007024|satelliteZenithAngle|double|SATELLITE ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+007025|solarZenithAngle|double|SOLAR ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+007026|satelliteZenithAngle|double|SATELLITE ZENITH ANGLE|deg|4|-900000|21|deg|4|7
+007030|heightOfStationGroundAboveMeanSeaLevel|double|HEIGHT OF STATION GROUND ABOVE MEAN SEA LEVEL (SEE NOTE 3)|m|1|-4000|17|m|1|5
+007031|heightOfBarometerAboveMeanSeaLevel|double|HEIGHT OF BAROMETER ABOVE MEAN SEA LEVEL (SEE NOTE 4)|m|1|-4000|17|m|1|5
+007032|heightOfSensorAboveLocalGroundOrDeckOfMarinePlatform|double|HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM)|m|2|0|16|m|2|5
+007033|heightOfSensorAboveWaterSurface|double|HEIGHT OF SENSOR ABOVE WATER SURFACE (SEE NOTE 6)|m|1|0|12|m|1|4
+007040|impactParameter|double|IMPACT PARAMETER (SEE NOTE 8)|m|1|62000000|22|m|1|8
+007061|depthBelowLandSurface|double|DEPTH BELOW LAND SURFACE|m|2|0|14|m|2|5
+007062|depthBelowWaterSurface|double|DEPTH BELOW SEA/WATER SURFACE|m|1|0|17|m|1|6
+007063|depthBelowWaterSurface|double|DEPTH BELOW SEA/WATER SURFACE|m|2|0|20|m|2|7
+007064|representativeHeightOfSensorAboveStation|long|REPRESENTATIVE HEIGHT OF SENSOR ABOVE STATION (SEE NOTE 7)|m|0|0|4|m|0|2
+007065|waterPressure|long|WATER PRESSURE|Pa|-3|0|17|Pa|0|6
+007070|drogueDepth|long|DROGUE DEPTH|m|0|0|10|m|0|4
+008001|verticalSoundingSignificance|flag|VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|7|FLAG TABLE|0|3
+008002|verticalSignificanceSurfaceObservations|table|VERTICAL SIGNIFICANCE (SURFACE OBSERVATIONS)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008003|verticalSignificanceSatelliteObservations|table|VERTICAL SIGNIFICANCE (SATELLITE OBSERVATIONS)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008004|phaseOfAircraftFlight|table|PHASE OF AIRCRAFT FLIGHT|CODE TABLE|0|0|3|CODE TABLE|0|1
+008005|meteorologicalAttributeSignificance|table|METEOROLOGICAL ATTRIBUTE SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008006|ozoneVerticalSoundingSignificance|flag|OZONE VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+008007|dimensionalSignificance|table|DIMENSIONAL SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008008|radiationVerticalSoundingSignificance|flag|RADIATION VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+008009|detailedPhaseOfFlight|table|DETAILED PHASE OF FLIGHT|CODE TABLE|0|0|4|CODE TABLE|0|2
+008010|surfaceQualifierForTemperatureData|table|SURFACE QUALIFIER (TEMPERATURE DATA)|CODE TABLE|0|0|5|CODE TABLE|0|2
+008011|meteorologicalFeature|table|METEOROLOGICAL FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008012|landOrSeaQualifier|table|LAND/SEA QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008013|dayOrNightQualifier|table|DAY/NIGHT QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008014|qualifierForRunwayVisualRange|table|QUALIFIER FOR RUNWAY VISUAL RANGE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008016|changeQualifierOfATrendTypeForecastOrAnAerodromeForecast|table|CHANGE QUALIFIER OF A TREND-TYPE FORECAST OR AN AERODROME FORECA|CODE TABLE|0|0|3|CODE TABLE|0|1
+008017|qualifierOfTimeWhenForecastChangeExpected|table|QUALIFIER OF THE TIME WHEN THE FORECAST CHANGE IS EXPECTED|CODE TABLE|0|0|2|CODE TABLE|0|1
+008018|seawindsLandOrIceSurfaceType|flag|SEAWINDS LAND/ICE SURFACE TYPE|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+008019|qualifierForFollowingCentreIdentifier|table|QUALIFIER FOR FOLLOWING CENTRE IDENTIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008020|totalNumberOfMissingEntitiesWithRespectToAccumulationOrAverage|long|TOTAL NUMBER OF MISSING ENTITIES (WITH RESPECT TO ACCUMULATION O|Numeric|0|0|16|Numeric|0|5
+008021|timeSignificance|table|TIME SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+008022|totalNumberWithRespectToAccumulationOrAverage|long|TOTAL NUMBER (WITH RESPECT TO ACCUMULATION OR AVERAGE)|Numeric|0|0|16|Numeric|0|5
+008023|firstOrderStatistics|table|FIRST ORDER STATISTICS|CODE TABLE|0|0|6|CODE TABLE|0|2
+008024|differenceStatistics|table|DIFFERENCE STATISTICS|CODE TABLE|0|0|6|CODE TABLE|0|2
+008025|timeDifferenceQualifier|table|TIME DIFFERENCE QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008026|matrixSignificance|table|MATRIX SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008029|surfaceType|table|REMOTLY SENSED SURFACE TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+008030|manualOnCodesVolumeI1SectionCCodeTableFromWhichDataAreDerived|long|MANUAL ON CODES (VOLUME I.1, SECTION C) CODE TABLE FROM WHICH DA|Numeric|0|0|13|Numeric|0|4
+008031|dataCategoryCrexTableA|long|DATA CATEGORY CREX TABLE A|Numeric|0|0|8|Numeric|0|3
+008033|methodOfDerivationOfPercentageConfidence|table|METHOD OF DERIVATION OF PERCENTAGE CONFIDENCE|CODE TABLE|0|0|7|CODE TABLE|0|3
+008035|monitoringExerciseType|table|TYPE OF MONITORING EXERCISE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008036|typeOfCentreOrStationPerformingMonitoring|table|TYPE OF CENTRE OR STATION PERFORMING MONITORING|CODE TABLE|0|0|3|CODE TABLE|0|1
+008039|timeSignificanceAviationForecast|table|TIME SIGNIFICANCE ( AVIATION FORECAST)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008040|flightLevelSignificance|table|FLIGHT LEVEL SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008041|dataSignificance|table|DATA SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+008042|extendedVerticalSoundingSignificance|flag|EXTENDED VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+008043|atmosphericChemical|table|ATMOSPHERIC CHEMICAL OR PHISICAL CONSTITUENT TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+008044|casRegistryNumber|string|CAS REGISTRY NUMBER|CCITT IA5|0|0|88|Character|0|11
+008045|particulateMatterCharacterization|table|PARTICULATE MATTER CHARACTERIZATION|CODE TABLE|0|0|8|CODE TABLE|0|3
+008049|numberOfObservations|long|NUMBER OF OBSERVATIONS|Numeric|0|0|8|Numeric|0|3
+008050|qualifierForNumberOfMissingValuesInCalculationOfStatistic|table|QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATIST|CODE TABLE|0|0|4|CODE TABLE|0|2
+008051|qualifierForNumberOfMissingValuesInCalculationOfStatistic|table|QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATIST|CODE TABLE|0|0|3|CODE TABLE|0|1
+008052|conditionForWhichNumberOfDaysOfOccurrenceFollows|table|CONDITION FOR WHICH NUMBER OF DAYS OF OCCURRENCE FOLLOWS|CODE TABLE|0|0|5|CODE TABLE|0|2
+008053|dayOfOccurrenceQualifier|table|DAY OF OCCURRENCE QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008054|qualifierForWindSpeedOrWindGusts|table|QUALIFIER FOR WIND SPEED OR WIND GUST|CODE TABLE|0|0|3|CODE TABLE|0|1
+008060|sampleScanningModeSignificance|table|SAMPLE SCANNING MODE SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008065|sunGlintIndicator|table|SUN-GLINT INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+008066|semiTransparencyIndicator|table|SEMI-TRANSPARENCY INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+008070|tovsOrAtovsProductQualifier|table|TOVS/ATOVS PRODUCT QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008072|pixelType|table|PIXEL(S) TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008074|altimeterEchoType|table|ALTIMETER ECHO TYPE|CODE TABLE|0|0|2|CODE TABLE|0|1
+008075|orbitQualifier|table|ASCENDING/DESCENDING ORBIT QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008076|band|table|TYPE OF BAND|CODE TABLE|0|0|6|CODE TABLE|0|2
+008077|radiometerSensedSurfaceType|table|RADIOMETER SENSED SURFACE TYPE|CODE TABLE|0|0|7|CODE TABLE|0|3
+008079|productStatus|table|PRODUCT STATUS|CODE TABLE|0|0|4|CODE TABLE|0|2
+008080|qualifierForGtsppQualityFlag|table|QUALIFIER FOR GTSPP QUALITY FLAG|CODE TABLE|0|0|6|CODE TABLE|0|2
+008081|equipmentType|table|TYPE OF EQUIPMENT|CODE TABLE|0|0|6|CODE TABLE|0|2
+008082|modificationOfSensorHeightToAnotherValue|table|(CBS) ARTIFICIAL CORRECTION OF SENSOR HEIGHT TO ANOTHER VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008083|nominalValueIndicator|flag|NOMINAL VALUE INDICATOR|FLAG TABLE|0|0|15|FLAG TABLE|0|5
+008085|beamIdentifier|table|BEAM IDENTIFIER|CODE TABLE|0|0|3|CODE TABLE|0|1
+008090|decimalScaleOfFollowingSignificands|long|DECIMAL SCALE|Numeric|0|-127|8|Numeric|0|3
+010001|heightOfLandSurface|long|HEIGHT OF LAND SURFACE|m|0|-400|15|m|0|5
+010002|height|long|HEIGHT|m|-1|-40|16|m|-1|5
+010003|geopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|m2 s-2|-1|6
+010004|pressure|long|PRESSURE|Pa|-1|0|14|Pa|-1|5
+010007|height|long|HEIGHT|m|0|-1000|17|m|0|6
+010008|geopotential|long|GEOPOTENTIAL|m2 s-2|0|-10000|20|m2 s-2|0|7
+010009|geopotentialHeight|long|GEOPOTENTIAL HEIGHT|gpm|0|-1000|17|gpm|0|5
+010010|minimumPressureReducedToMeanSeaLevel|long|MINIMUM PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010011|maximumPressureReducedToMeanSeaLevel|long|MAXIMUM PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010031|DistanceFromEarthCentreInDirectionOfNorthPole|double|IN DIRECTION OF THE NORTH POLE, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10
+010032|satelliteDistanceToEarthCentre|double|SATELLITE DISTANCE TO EARTH'S CENTRE|m|1|0|27|m|2|9
+010033|altitudePlatformToEllipsoid|double|ALTITUDE (PLATFORM TO ELLIPSOID)|m|1|0|27|m|2|9
+010034|earthRadius|double|EARTH RADIUS|m|1|0|27|m|2|9
+010035|earthLocalRadiusOfCurvature|double|EARTH'S LOCAL RADIUS OF CURVATURE|m|1|62000000|22|m|1|8
+010036|geoidUndulation|double|GEOID UNDULATION (SEE NOTE 4)|m|2|-15000|15|m|2|6
+010040|numberOfRetrievedLayers|long|NUMBER OF RETRIEVED LAYERS|Numeric|0|0|10|Numeric|0|4
+010050|standardDeviationAltitude|double|STANDARD DEVIATION ALTITUDE|m|2|0|16|m|2|5
+010051|pressureReducedToMeanSeaLevel|long|PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010052|altimeterSettingQnh|long|ALTIMETER SETTING (QNH)|Pa|-1|0|14|Pa|-1|5
+010060|pressureChange|long|PRESSURE CHANGE|Pa|-1|-1024|11|Pa|-1|4
+010061|3HourPressureChange|long|3-HOUR PRESSURE CHANGE|Pa|-1|-500|10|Pa|-1|4
+010062|24HourPressureChange|long|24-HOUR PRESSURE CHANGE|Pa|-1|-1000|11|Pa|-1|4
+010063|characteristicOfPressureTendency|table|CHARACTERISTIC OF PRESSURE TENDENCY|CODE TABLE|0|0|4|CODE TABLE|0|2
+010064|sigmetCruisingLevel|table|SIGMET CRUISING LEVEL|CODE TABLE|0|0|3|CODE TABLE|0|1
+010070|indicatedAircraftAltitude|long|INDICATED AIRCRAFT ALTITUDE|m|0|-400|16|m|0|5
+010080|viewingZenithAngle|double|VIEWING ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+010081|cogAltitudeAboveReferenceEllipsoid|double|ALTITUDE OF COG ABOVE REFERENCE ELLIPSOID|m|3|0|31|m|3|10
+010082|instantaneousAltitudeRate|double|INSTANTANEOUS ALTITUDE RATE|m/s|3|-65536|17|m/s|3|6
+010083|squaredOffNadirAngleOfSatelliteFromPlatformData|double|SQUARED OFF NADIR ANGLE OF THE SATELLITE FROM PLATFORM DATA|deg2|2|0|16|deg2|2|5
+010084|squaredOffNadirAngleOfSatelliteFromWaveformData|double|SQUARED OFF NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA|deg2|2|0|16|deg2|2|5
+010085|meanSeaSurfaceHeight|double|MEAN SEA SURFACE HEIGHT|m|3|-131072|18|m|3|6
+010086|geoidHeight|double|GEOID'S HEIGHT|m|3|-131072|18|m|3|6
+010087|oceanDepthOrLandElevation|double|OCEAN DEPTH/LAND ELEVATION|m|1|-131072|18|m|3|6
+010088|totalGeocentricOceanTideHeightSolution1|double|TOTAL GEOCENTRIC OCEAN TIDE HEIGHT SOLUTION 1|m|3|-32768|16|m|3|5
+010089|totalGeocentricOceanTideHeightSolution2|double|TOTAL GEOCENTRIC OCEAN TIDE HEIGHT SOLUTION 2|m|3|-32768|16|m|3|5
+010090|longPeriodTideHeight|double|LONG PERIOD TIDE HEIGHT|m|3|-32768|16|m|3|5
+010091|tidalLoadingHeight|double|TIDAL LOADING HEIGHT|m|3|-32768|16|m|3|5
+010092|solidEarthTideHeight|double|SOLID EARTH TIDE HEIGHT|m|3|-32768|16|m|3|5
+010093|geocentricPoleTideHeight|double|GEOCENTRIC POLE TIDE HEIGHT|m|3|-32768|16|m|3|5
+010095|heightOfAtmosphere|long|HEIGHT OF ATMOSPHERE USED|m|0|0|16|m|0|5
+010096|meanDynamicTopography|double|MEAN DYNAMIC TOPOGRAPHY|m|3|-131072|18|NA|0|0
+010097|meanSeaSurfaceHeightFromAltimeterOnly|double|MEAN SEA SURFACE HEIGHT FROM ALTIMETER ONLY|m|3|-131072|18|NA|0|0
+010098|loadingTideHeightGeocentricOceanTideSolution1|double|LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 1|m|4|-2000|12|NA|0|0
+010099|loadingTideHeightGeocentricOceanTideSolution2|double|LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 2|m|4|-2000|12|NA|0|0
+010100|nonEquilibriumLongPeriodTideHeight|double|NON-EQUILIBRIUM LONG PERIOD TIDE HEIGHT|m|4|-2000|12|NA|0|0
+010101|squaredOffNadirAngleOfSatelliteFromWaveformData|double|SQUARED OFF NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA|deg2|2|-32768|16|deg2|2|5
+011001|windDirection|long|WIND DIRECTION|deg|0|0|9|deg|0|3
+011002|windSpeed|double|WIND SPEED|m/s|1|0|12|m/s|1|4
+011003|u|double|U-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011004|v|double|V-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011005|w|double|W-COMPONENT|Pa/s|1|-512|10|Pa/s|1|4
+011006|w|double|W-COMPONENT|m/s|2|-4096|13|m/s|2|4
+011010|windDirectionAssociatedWithWindSpeedWhichFollows|long|WIND DIRECTION ASSOCIATED WITH WIND SPEED WHICH FOLLOWS|deg|0|0|9|deg|0|3
+011011|windDirectionAt10M|long|WIND DIRECTION AT 10 M|deg|0|0|9|deg|0|3
+011012|windSpeedAt10M|double|WIND SPEED AT 10 M|m/s|1|0|12|m/s|1|4
+011013|windDirectionAt5M|long|WIND DIRECTION AT 5 M|deg|0|0|9|deg|0|3
+011014|windSpeedAt5M|double|WIND SPEED AT 5 M|m/s|1|0|12|m/s|1|4
+011016|extremeCounterclockwiseWindDirectionOfAVariableWind|long|EXTREME COUNTERCLOCKWISE WIND DIRECTION OF A VARIABLE WIND|deg|0|0|9|deg|0|3
+011017|extremeClockwiseWindDirectionOfAVariableWind|long|EXTREME CLOCKWISE WIND DIRECTION OF A VARIABLE WIND|deg|0|0|9|deg|0|3
+011019|steadinessOfWind|long|STEADINESS OF WIND (6)|%|0|0|7|%|0|3
+011021|relativeVorticity|double|RELATIVE VORTICITY|/s|9|-65536|17|/s|9|6
+011022|divergence|double|DIVERGENCE|/s|9|-65536|17|/s|9|6
+011023|velocityPotential|long|VELOCITY POTENTIAL|m2/s|-2|-65536|17|m2/s|-2|6
+011030|extendedDegreeOfTurbulence|table|EXTENDED DEGREE OF TURBULENCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+011031|degreeOfTurbulence|table|DEGREE OF TURBULENCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+011032|heightOfBaseOfTurbulence|long|HEIGHT OF BASE OF TURBULENCE|m|-1|-40|16|m|-1|5
+011033|heightOfTopOfTurbulence|long|HEIGHT OF TOP OF TURBULENCE|m|-1|-40|16|m|-1|5
+011034|verticalGustVelocity|double|VERTICAL GUST VELOCITY|m/s|1|-1024|11|m/s|1|4
+011035|verticalGustAcceleration|double|VERTICAL GUST ACCELERATION|m s-2|2|-8192|14|m s-2|2|5
+011036|maximumDerivedEquivalentVerticalGustSpeed|double|MAXIMUM DERIVED EQUIVALENT VERTICAL GUST SPEED|m/s|1|0|10|m/s|1|4
+011037|turbulenceIndex|table|TURBULENCE INDEX|CODE TABLE|0|0|6|CODE TABLE|0|2
+011038|timeOfOccurrenceOfPeakEddyDissipationRate|table|TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|5|CODE TABLE|0|2
+011039|extendedTimeOfOccurrenceOfPeakEddyDissipationRate|table|EXTENDED TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|6|CODE TABLE|0|2
+011040|maximumWindSpeedMeanWind|double|MAXIMUM WIND SPEED (MEAN WIND)|m/s|1|0|12|m/s|1|4
+011041|maximumWindGustSpeed|double|MAXIMUM WIND GUST SPEED|m/s|1|0|12|m/s|1|4
+011042|maximumWindSpeed10MinuteMeanWind|double|MAXIMUM WIND SPEED (10-MIN MEAN WIND)|m/s|1|0|12|m/s|1|4
+011043|maximumWindGustDirection|long|MAXIMUM WIND GUST DIRECTION|deg|0|0|9|deg|0|3
+011044|meanWindDirectionForSurfaceTo1500M|long|MEAN WIND DIRECTION FOR SURFACE - 1500 M (5000 FEET)|deg|0|0|9|deg|0|3
+011045|meanWindSpeedForSurfaceTo1500M|double|MEAN WIND SPEED FOR SURFACE - 1500 M (5000 FEET)|m/s|1|0|12|m/s|1|4
+011046|maximumInstantaneousWindSpeed|double|MAXIMUM INSTANTANEOUS WIND SPEED|m/s|1|0|12|m/s|1|4
+011047|maximumInstantaneousWindSpeedOver10Minutes|double|MAXIMUM INSTANTANEOUS WIND SPEED OVER 10 MINUTES|m/s|1|0|12|m/s|1|4
+011049|windDirectionStandardDeviation|long|STANDARD DEVIATION OF WIND DIRECTION|deg|0|0|9|deg|0|3
+011050|standardDeviationOfHorizontalWindSpeed|double|STANDARD DEVIATION OF HORIZONTAL WIND SPEED|m/s|1|0|12|m/s|1|4
+011051|standardDeviationOfVerticalWindSpeed|double|STANDARD DEVIATION OF VERTICAL WIND SPEED|m/s|1|0|8|m/s|1|3
+011052|formalUncertaintyInWindSpeed|double|FORMAL UNCERTAINTY IN WIND SPEED|m/s|2|0|13|m/s|2|5
+011053|formalUncertaintyInWindDirection|double|FORMAL UNCERTAINTY IN WIND DIRECTION|deg|2|0|15|deg|2|5
+011054|meanWindDirectionFor1500To3000M|long|MEAN WIND DIRECTION FOR 1500 M - 3000 M|deg|0|0|9|deg|0|3
+011055|meanWindSpeedFor1500To3000M|double|MEAN WIND SPEED FOR 1500 M - 3000 M|m/s|1|0|12|m/s|1|4
+011061|absoluteWindShearIn1KmLayerBelow|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW|m/s|1|0|12|m/s|1|4
+011062|absoluteWindShearIn1KmLayerAbove|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE|m/s|1|0|12|m/s|1|4
+011070|designatorOfRunwayAffectedByWindShearIncludingAll|string|DESIGNATOR OF THE RUNWAY AFFECTED BY WIND SHEAR (INCLUDING ALL)|CCITT IA5|0|0|32|Character|0|4
+011071|turbulentVerticalMomentumFlux|double|TURBULENT VERTICAL MOMENTUM FLUX|m2 s-2|3|-128|14|m2 s-2|3|5
+011072|turbulentVerticalBuoyancyFlux|double|TURBULENT VERTICAL BUOYANCY FLUX|K m s-1|3|-128|11|K m s-1|3|4
+011073|turbulentKineticEnergy|double|TURBULENT KINETIC ENERGY|m2 s-2|2|-1024|13|m2 s-2|2|4
+011074|dissipationEnergy|double|DISSIPATION ENERGY|m2 s-2|2|-1024|10|m2 s-2|2|4
+011075|meanTurbulenceIntensityEddyDissipationRate|double|MEAN TURBULENCE INTENSITY (EDDY DISSIPATION RATE)|m2/3 s-1|2|0|8|m2/3 s-1|2|3
+011076|peakTurbulenceIntensityEddyDissipationRate|double|PEAK TURBULENCE INTENSITY (EDDY DISSIPATION RATE)|m2/3 s-1|2|0|8|m2/3 s-1|2|3
+011077|reportingIntervalOrAveragingTimeForEddyDissipationRate|long|REPORTING INTERVAL OR AVERAGING TIME FOR EDDY DISSIPATION RATE|s|0|0|12|s|0|4
+011081|modelWindDirectionAt10M|double|MODEL WIND DIRECTION AT 10M|deg|2|0|16|deg|2|5
+011082|modelWindSpeedAt10M|double|MODEL WIND SPEED AT 10M|m/s|2|0|14|m/s|2|4
+011083|windSpeed|long|WIND SPEED|km/h|0|0|9|km/h|0|3
+011084|windSpeed|long|WIND SPEED|kt|0|0|8|kt|0|3
+011085|maximumWindGustSpeed|long|MAXIMUM WIND GUST SPEED|km/h|0|0|9|km/h|0|3
+011086|maximumWindGustSpeed|long|MAXIMUM WIND GUST SPEED|kt|0|0|8|kt|0|3
+011095|u|double|U COMPONENT OF THE MODEL WIND VECTOR|m/s|1|-4096|13|m/s|1|4
+011096|v|double|V COMPONENT OF THE MODEL WIND VECTOR|m/s|1|-4096|13|m/s|1|4
+011097|windSpeedFromAltimeter|double|WIND SPEED FROM ALTIMETER|m/s|2|0|12|NA|0|0
+011098|windSpeedFromRadiometer|double|WIND SPEED FROM RADIOMETER|m/s|2|0|12|NA|0|0
+012001|airTemperature|double|TEMPERATURE/DRY-BULB TEMPERATURE|K|1|0|12|C|1|3
+012002|wetBulbTemperature|double|WET-BULB TEMPERATURE|K|1|0|12|C|1|3
+012003|dewpointTemperature|double|DEW-POINT TEMPERATURE|K|1|0|12|C|1|3
+012004|airTemperatureAt2M|double|DRY-BULB TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012005|wetBulbTemperatureAt2M|double|WET-BULB TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012006|dewpointTemperatureAt2M|double|DEW-POINT TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012007|virtualTemperature|double|VIRTUAL TEMPERATURE|K|1|0|12|C|1|3
+012011|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|C|1|3
+012012|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|C|1|3
+012013|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE, PAST 12 HOURS|K|1|0|12|C|1|3
+012014|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|1|0|12|C|1|3
+012015|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|1|0|12|C|1|3
+012016|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|1|0|12|C|1|3
+012017|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|1|0|12|C|1|3
+012021|maximumTemperatureAt2M|double|MAXIMUM TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012022|minimumTemperatureAt2M|double|MINIMUM TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012023|temperature|long|TEMPERATURE|C|0|-99|8|C|0|2
+012024|dewpointTemperature|long|DEW POINT TEMPERATURE|C|0|-99|8|C|0|2
+012030|soilTemperature|double|SOIL TEMPERATURE|K|1|0|12|C|1|3
+012049|temperatureChangeOverSpecifiedPeriod|long|TEMPERATURE CHANGE OVER SPECIFIED PERIOD|K|0|-30|6|C|0|2
+012051|standardDeviationTemperature|double|STANDARD DEVIATION TEMPERATURE|K|1|0|10|C|1|3
+012052|highestDailyMeanTemperature|double|HIGHEST DAILY MEAN TEMPERATURE|K|1|0|12|C|1|3
+012053|lowestDailyMeanTemperature|double|LOWEST DAILY MEAN TEMPERATURE|K|1|0|12|C|1|3
+012061|skinTemperature|double|SKIN TEMPERATURE|K|1|0|12|C|1|3
+012062|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|1|0|12|C|1|3
+012063|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|1|0|12|C|1|3
+012064|instrumentTemperature|double|INSTRUMENT TEMPERATURE|K|1|0|12|K|1|4
+012065|standardDeviationBrightnessTemperature|double|STANDARD DEVIATION BRIGHTNESS TEMPERATURE|K|1|0|12|K|1|4
+012070|warmLoadTemperature|double|WARM LOAD TEMPERATURE|K|2|0|16|K|2|5
+012071|coldestClusterTemperature|double|COLDEST CLUSTER TEMPERATURE|K|1|0|12|K|1|4
+012072|radiance|double|RADIANCE|W m-2 sr-1|6|0|31|W m-2 sr-1|6|9
+012073|temperature|double|TEMPERATURE|K|2|0|16|K|1|4
+012075|spectralRadiance|long|SPECTRAL RADIANCE|W m-3 sr-1|-3|0|16|W m-3 sr-1|-3|5
+012076|radiance|double|RADIANCE|W m-2 sr-1|3|0|16|W m-2 sr-1|3|5
+012080|brightnessTemperatureRealPart|double|BRIGHTNESS TEMPERATURE REAL PART|K|2|-10000|16|K|2|5
+012081|brightnessTemperatureImaginaryPart|double|BRIGHTNESS TEMPERATURE IMAGINARY PART|K|2|-10000|16|K|2|5
+012082|pixelRadiometricAccuracy|double|PIXEL RADIOMETRIC ACCURACY|K|2|0|12|K|2|4
+012101|airTemperature|double|TEMPERATURE/DRY-BULB TEMPERATURE|K|2|0|16|C|2|4
+012102|wetBulbTemperature|double|WET-BULB TEMPERATURE|K|2|0|16|C|2|4
+012103|dewpointTemperature|double|DEW-POINT TEMPERATURE|K|2|0|16|C|2|4
+012104|airTemperatureAt2M|double|DRY-BULB TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012105|webBulbTemperatureAt2M|double|WEB-BULB TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012106|dewpointTemperatureAt2M|double|DEW-POINT TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012107|virtualTemperature|double|VIRTUAL TEMPERATURE|K|2|0|16|C|2|4
+012111|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|2|0|16|C|2|4
+012112|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|2|0|16|C|2|4
+012113|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE, PAST 12 HOURS|K|2|0|16|C|2|4
+012114|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2M, PAST 12 HOURS|K|2|0|16|C|2|4
+012115|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2M, PAST 12 HOURS|K|2|0|16|C|2|4
+012116|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2M, PAST 24 HOURS|K|2|0|16|C|2|4
+012117|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2M, PAST 24 HOURS|K|2|0|16|C|2|4
+012118|maximumTemperatureAtHeightSpecifiedPast24Hours|double|MAXIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS|K|2|0|16|C|2|4
+012119|minimumTemperatureAtHeightSpecifiedPast24Hours|double|MINIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS|K|2|0|16|C|2|4
+012121|groundMinimumTemperature|double|GROUND MINIMUM TEMPERATURE|K|2|0|16|C|2|4
+012122|groundMinimumTemperatureOfPrecedingNight|double|GROUND MINIMUM TEMPERATURE OF THE PRECEDING NIGHT|K|2|0|16|C|2|4
+012130|soilTemperature|double|SOIL TEMPERATURE|K|2|0|16|C|2|4
+012151|dailyMeanTemperatureStandardDeviation|double|STANDARD DEVIATION OF DAILY MEAN TEMPERATURE|K|2|0|12|C|2|4
+012152|highestDailyMeanTemperature|double|HIGHEST DAILY MEAN TEMPERATURE|K|2|0|16|C|2|4
+012153|lowestDailyMeanTemperature|double|LOWEST DAILY MEAN TEMPERATURE|K|2|0|16|C|2|4
+012161|skinTemperature|double|SKIN TEMPERATURE|K|2|0|16|C|2|4
+012162|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|2|0|16|C|2|4
+012163|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|2|0|16|C|2|4
+012164|instrumentTemperature|double|INSTRUMENT TEMPERATURE|K|2|0|16|K|2|5
+012165|directSunBrightnessTemperature|long|DIRECT SUN BRIGHTNESS TEMPERATURE|K|0|0|23|K|0|7
+012166|snapshotAccuracy|double|SNAPSHOT ACCURACY|K|1|-4000|13|K|1|4
+012167|radiometricAccuracyPurePolarization|double|RADIOMETRIC ACCURACY (PURE POLARISATION)|K|1|0|9|K|1|3
+012168|radiometricAccuracyCrossPolarization|double|RADIOMETRIC ACCURACY ( CRESS POLARISATION )|K|1|0|9|K|1|3
+012171|coldestClusterTemperature|double|COLDEST CLUSTER TEMPERATURE|K|2|0|16|K|2|5
+012180|averaged12MicronBtForAllClearPixelsAtNadir|double|AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012181|averaged11MicronBtForAllClearPixelsAtNadir|double|AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012182|averaged37MicronBtForAllClearPixelsAtNadir|double|AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012183|averaged12MicronBtForAllClearPixelsForwardView|double|AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012184|averaged11MicronBtForAllClearPixelsForwardView|double|AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012185|averaged37MicronBtForAllClearPixelsForwardView|double|AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012186|meanNadirSeaSurfaceTemperature|double|MEAN NADIR SEA SURFACE TEMPERATURE|K|2|0|16|K|2|5
+012187|meanDualViewSeaSurfaceTemperature|double|MEAN DUAL VIEW SEA SURFACE TEMPERATURE|K|2|0|16|K|2|5
+012188|interpolated238GhzBrightnessTFromMwr|double|INTERPOLATED 23.8 GHZ BRIGHTNESS T FROM MWR|K|2|0|16|K|2|5
+012189|interpolated365GhzBrightnessTFromMwr|double|INTERPOLATED 36.5 GHZ BRIGHTNESS T FROM MWR|K|2|0|16|K|2|5
+013001|specificHumidity|double|SPECIFIC HUMIDITY|kg/kg|5|0|14|kg/kg|5|5
+013002|mixingRatio|double|MIXING RATIO|kg/kg|5|0|14|kg/kg|5|5
+013003|relativeHumidity|long|RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013004|vapourPressure|long|VAPOUR PRESSURE|Pa|-1|0|10|Pa|-1|4
+013005|vapourDensity|double|VAPOUR DENSITY|kg m-3|3|0|7|kg m-3|3|3
+013006|mixingHeights|long|MIXING HEIGHTS|m|-1|-40|16|m|-1|5
+013007|minimumRelativeHumidity|long|MINIMUM RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013008|maximumRelativeHumidity|long|MAXIMUM RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013009|relativeHumidity|double|RELATIVE HUMIDITY|%|1|-1000|12|%|1|4
+013011|totalPrecipitationOrTotalWaterEquivalent|double|TOTAL PRECIPITATION/TOTAL WATER EQUIVALENT|kg m-2|1|-1|14|kg m-2|1|5
+013012|depthOfFreshSnow|double|DEPTH OF FRESH SNOW|m|2|-2|12|m|2|4
+013013|totalSnowDepth|double|TOTAL SNOW DEPTH|m|2|-2|16|m|2|5
+013014|rainfallOrWaterEquivalentOfSnowAveragedRate|double|RAINFALL/WATER EQUIVALENT OF SNOW (AVERAGED RATE)|kg m-2 s-1|4|0|12|kg m-2 s-1|4|4
+013015|snowfallAveragedRate|double|SNOWFALL (AVERAGED RATE)|m/s|7|0|12|m/s|7|4
+013016|precipitableWater|long|PRECIPITABLE WATER|kg m-2|0|0|7|kg m-2|0|3
+013019|totalPrecipitationPast1Hour|double|TOTAL PRECIPITATION PAST 1 HOUR|kg m-2|1|-1|14|kg m-2|1|4
+013020|totalPrecipitationPast3Hours|double|TOTAL PRECIPITATION PAST 3 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013021|totalPrecipitationPast6Hours|double|TOTAL PRECIPITATION PAST 6 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013022|totalPrecipitationPast12Hours|double|TOTAL PRECIPITATION PAST 12 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013023|totalPrecipitationPast24Hours|double|TOTAL PRECIPITATION PAST 24 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013031|evapotranspiration|long|EVAPOTRANSPIRATION|kg m-2|0|0|7|kg m-2|0|3
+013032|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|8|kg m-2|1|3
+013033|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|10|kg m-2|1|4
+013038|superadiabaticIndicator|table|SUPERADIABATIC INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+013039|terrainTypeIceOrSnow|table|TERRAIN TYPE (ICE/SNOW)|CODE TABLE|0|0|3|CODE TABLE|0|1
+013040|surfaceFlag|table|SURFACE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+013041|pasquillGiffordStabilityCategory|table|PASQUILL-GIFFORD STABILITY CATEGORY|CODE TABLE|0|0|4|CODE TABLE|0|2
+013042|parcelLiftedIndexTo500Hpa|long|PARCEL LIFTED INDEX (TO 500 HPA)|K|0|-20|6|K|0|2
+013043|bestLiftedIndexTo500Hpa|long|BEST LIFTED INDEX (TO 500 HPA)|K|0|-20|6|K|0|2
+013044|kIndex|long|K INDEX|K|0|-30|8|K|0|3
+013045|koIndex|long|KO INDEX|K|0|-30|8|K|0|3
+013046|maximumBuoyancy|long|MAXIMUM BUOYANCY|K|0|-30|8|K|0|3
+013047|modifiedShowalterStabilityIndex|long|MODIFIED SHOWALTER STABILITY INDEX|K|0|-60|6|C|0|2
+013048|waterFraction|double|WATER FRACTION|%|1|0|10|%|1|4
+013051|frequencyGroupPrecipitation|table|FREQUENCY GROUP, PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013052|highestDailyAmountOfPrecipitation|double|HIGHEST DAILY AMOUNT OF PRECIPITATION|kg m-2|1|-1|14|kg m-2|1|5
+013055|intensityOfPrecipitation|double|INTENSITY OF PRECIPITATION|kg m-2 s-1|4|0|8|mm/h|1|3
+013056|characterAndIntensityOfPrecipitation|table|CHARACTER AND INTENSITY OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013057|timeOfBeginningOrEndOfPrecipitation|table|TIME OF BEGINNING OR END OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013058|sizeOfPrecipitatingElement|double|SIZE OF PRECIPITATING ELEMENT|m|4|0|7|mm|1|3
+013059|numberOfFlashesThunderstorm|long|NUMBER OF FLASHES (THUNDERSTORM)|Numeric|0|0|7|Numeric|0|3
+013060|totalAccumulatedPrecipitation|double|TOTAL ACCUMULATED PRECIPITATION|kg m-2|1|-1|17|kg m-2|1|5
+013071|upstreamWaterLevel|double|UPSTREAM WATER LEVEL|m|2|0|14|m|2|5
+013072|downstreamWaterLevel|double|DOWNSTREAM WATER LEVEL|m|2|0|14|m|2|4
+013073|maximumWaterLevel|double|MAXIMUM WATER LEVEL|m|2|0|14|m|2|4
+013080|waterPh|double|WATER PH|pH unit|1|0|10|pH unit|1|3
+013081|waterConductivity|double|WATER CONDUCTIVITY|S/m|3|0|14|S/m|3|4
+013082|waterTemperature|double|WATER TEMPERATURE|K|1|0|12|K|1|4
+013083|dissolvedOxygen|double|DISSOLVED OXYGEN|kg m-3|6|0|15|kg m-3|6|5
+013084|turbidity|long|TURBIDITY|lm|0|0|14|lm|0|4
+013085|oxidationReductionPotential|double|OXYDATION REDUCTION POTENTIAL (ORP)|V|3|0|14|V|3|4
+013090|radiometerWaterVapourContent|double|RADIOMETER WATER VAPOUR CONTENT|kg m-2|1|0|10|kg m-2|1|4
+013091|radiometerLiquidContent|double|RADIOMETER LIQUID CONTENT|kg m-2|2|0|8|kg m-2|2|3
+013093|cloudOpticalThickness|long|CLOUD OPTICAL THICKNESS|Numeric|0|0|8|Numeric|0|3
+013095|totalColumnWaterVapour|double|TOTAL COLUMN WATER VAPOUR|kg m-2|4|0|19|kg m-2|4|6
+013096|mwrWaterVapourContent|double|MWR WATER VAPOUR CONTENT|kg m-2|2|0|14|kg m-2|2|4
+013097|mwrLiquidWaterContent|double|MWR LIQUID WATER CONTENT|kg m-2|2|0|14|kg m-2|2|4
+013098|integratedWaterVapourDensity|double|INTEGRATED WATER VAPOUR DENSITY|kg m-2|8|0|30|kg m-2|8|10
+014001|longWaveRadiationIntegratedOver24Hours|long|LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014002|longWaveRadiationIntegratedOverPeriodSpecified|long|LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014003|shortWaveRadiationIntegratedOver24Hours|long|SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014004|shortWaveRadiationIntegratedOverPeriodSpecified|long|SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014011|netLongWaveRadiationIntegratedOver24Hours|long|NET LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014012|netLongWaveRadiationIntegratedOverPeriodSpecified|long|NET LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014013|netShortWaveRadiation24Hours|long|NET SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014014|netShortWaveRadiationIntegratedOverPeriodSpecified|long|NET SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014015|netRadiationIntegratedOver24Hours|long|NET RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|-16384|15|J m-2|-4|5
+014016|netRadiationIntegratedOverPeriodSpecified|long|NET RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|-16384|15|J m-2|-4|5
+014017|instantaneousLongWaveRadiation|long|INSTANTANEOUS LONG-WAVE RADIATION (SEE NOTE 6)|W m-2|-3|-2048|12|W m-2|-3|4
+014018|instantaneousShortWaveRadiation|long|INSTANTANEOUS SHORT-WAVE RADIATION (SEE NOTE 6)|W m-2|-3|-2048|12|W m-2|-3|4
+014019|surfaceAlbedo|long|SURFACE ALBEDO|%|0|0|7|%|0|3
+014020|globalSolarRadiation24Hours|long|GLOBAL SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014021|globalSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014022|diffuseSolarRadiationIntegratedOver24Hours|long|DIFFUSE SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014023|diffuseSolarRadiationIntegratedOverPeriodSpecified|long|DIFFUSE SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014024|directSolarRadiationIntegratedOver24Hours|long|DIRECT SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014025|directSolarRadiationIntegratedOverPeriodSpecified|long|DIRECT SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014026|cloudTopAlbedo|long|ALBEDO AT THE TOP OF CLOUDS|%|0|0|7|%|0|3
+014027|albedo|long|ALBEDO|%|0|0|7|%|0|3
+014028|globalSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD S|J m-2|-2|0|16|J m-2|-2|5
+014029|diffuseSolarRadiationIntegratedOverPeriodSpecified|long|DIFFUSE SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD|J m-2|-2|0|16|J m-2|-2|5
+014030|directSolarRadiationIntegratedOverPeriodSpecified|long|DIRECT SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD S|J m-2|-2|0|16|J m-2|-2|5
+014031|totalSunshine|long|TOTAL SUNSHINE|min|0|0|11|min|0|4
+014032|totalSunshine|long|TOTAL SUNSHINE|h|0|0|10|h|0|4
+014033|totalSunshine|long|TOTAL SUNSHINE|%|0|0|9|%|0|3
+014034|sunshineOverPeriodSpecified|long|SUNSHINE OVER PERIOD SPECIFIED|min|0|0|11|min|0|4
+014042|bidirectionalReflectance|long|BI-DIRECTIONAL REFLECTANCE|%|0|0|7|%|0|3
+014045|channelRadiance|long|CHANNEL RADIANCE|W m-2 sr-1 cm|0|0|11|W m-2 sr-1 cm|0|4
+014046|scaledIasiRadiance|long|SCALED IASI RADIANCE|W m-2 sr-1 m|0|-5000|16|W m-2 sr-1 m|0|5
+014047|scaledMeanAvhrrRadiance|long|SCALED MEAN AVHRR RADIANCE|W m-2 sr-1 m|0|0|31|W m-2 sr-1 m|0|10
+014048|scaledStandardDeviationAvhrrRadiance|long|SCALED STANDARD DEVIATION RADIANCE|W m-2 sr-1 m|0|0|31|W m-2 sr-1 m|0|10
+014050|emissivity|double|EMISSIVITY (SEE NOTE 5)|%|1|0|10|%|1|4
+014051|directSolarRadiationIntegratedOverLastHour|long|DIRECT SOLAR RADIATION INTEGRATED OVER LAST HOUR|J m-2|-3|0|14|J m-2|-3|4
+014055|solarActivityIndex|long|SOLAR ACTIVITY INDEX|Numeric|0|-32768|16|Numeric|0|5
+014061|instantaneousLongWaveRadiation|long|(VAL) INSTANTANEOUS LONG-WAVE RADIATION|W m-2|0|-512|10|W m-2|0|4
+014062|instantaneousShortWaveRadiation|long|(VAL) INSTANTANEOUS SHORT-WAVE RADIATION|W m-2|0|-2048|12|W m-2|0|4
+015001|totalOzone|long|TOTAL OZONE|DU|0|0|10|DU|0|4
+015002|airMassSlantPathAt22Km|long|AIR MASS (SLANT PATH AT 22 KM)|Numeric|2|0|10|Numeric|2|3
+015003|measuredOzonePartialPressureSounding|double|MEASURED OZONE PARTIAL PRESSURE (SOUNDING)|Pa|4|0|9|nbar|0|3
+015004|ozoneSoundingCorrectionFactor|long|OZONE SOUNDING CORRECTION FACTOR|Numeric|3|0|11|Numeric|3|4
+015005|ozoneP|long|OZONE P|DU|0|0|10|DU|0|3
+015008|significandOfVolumetricMixingRatio|long|SCALED MIXING RATIO|Numeric|0|0|10|Numeric|0|4
+015011|log10IntegratedElectronDensity|double|LOG 10 OF INTEGRATED ELECTRON DENSITY|log (m-2)|3|14000|13|log (m-2)|3|4
+015012|totalElectronCountPerSquareMetre|long|TOTAL ELECTRON COUNT PER SQUARE METER|m-2|-16|0|6|m-2|-16|2
+015015|maxImageSpectralComponentBeforeNormalization|long|MAXIMUM IMAGE SPECTRAL COMPONENT BEFORE NORMALIZATION|Numeric|0|0|31|Numeric|0|10
+015020|integratedOzoneDensity|double|INTEGRATED 03 DENSITY|kg m-2|8|0|21|kg m-2|8|7
+015021|integratedMassDensity|double|INTEGRATED MASS DENSITY|kg m-2|11|0|31|kg m-2|11|10
+015024|opticalDepth|long|OPTICAL DEPTH|Numeric|4|0|24|Numeric|4|8
+015025|pollutantType|table|TYPE OF POLLUTANT|CODE TABLE|0|0|4|CODE TABLE|0|2
+015026|moleFractionOfPollutant|double|CONCENTRATION OF POLLUTANT|mol/mol|9|0|9|mol/mol|9|3
+015027|massConcentrationOfPollutant|double|CONCENTRATION OF POLLUTANT|kg m-3|9|0|10|kg m-3|9|4
+015030|aerosolContaminationIndex|long|AEROSOL CONTAMINATION INDEX|Numeric|2|-1000|12|Numeric|2|4
+015031|atmosphericPathDelayInSatelliteSignal|double|ATMOSPHERIC PATH DELAY IN SATELLITE SIGNAL|m|4|10000|15|m|4|5
+015032|estimatedErrorInAtmosphericPathDelay|double|ESTIMATED ERROR IN ATMOSPHERIC PATH DELAY|m|4|0|10|m|4|4
+015033|differenceInPathDelaysForLimbViewsAtExtremesOfScan|double|DIFFERENCE IN PATH DELAYS FOR LIMB VIEWS AT EXTREMES OF SCAN|m|5|-10000|15|m|5|5
+015034|estimatedErrorInPathDelayDifference|double|ESTIMATED ERROR IN PATH DELAY DIFFERENCE|m|5|0|14|m|5|5
+015035|componentOfZenithPathDelayDueToWaterVapour|double|COMPONENT OF ZENITH PATH DELAY DUE TO WATER VAPOUR|m|4|0|14|m|4|5
+015036|atmosphericRefractivity|double|ATMOSPHERIC REFRACTIVITY (SEE NOTE 5)|N units|3|0|19|N units|3|6
+015037|bendingAngle|double|BENDING ANGLE|rad|8|-100000|23|rad|8|7
+019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
+019002|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-2|0|12|m|-2|4
+019003|windSpeedThreshold|long|WIND SPEED THRESHOLD|m/s|0|0|8|m/s|0|3
+019004|effectiveRadiusWithRespectToWindSpeedsAboveThreshold|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD|m|-2|0|12|m|-2|4
+019005|featureDirectionOfMotion|long|DIRECTION OF MOTION OF FEATURE|deg|0|0|9|deg|0|3
+019006|speedOfMotionOfFeature|double|SPEED OF MOTION OF FEATURE|m/s|2|0|14|m/s|2|5
+019007|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-3|0|12|m|-3|4
+019008|verticalExtentOfCirculation|table|VERTICAL EXTENT OF CIRCULATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+019009|effectiveRadiusWithRespectToWindSpeedsAboveThresholdLargeStorms|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD (LA|m|-3|0|12|m|-3|4
+019010|methodForTrackingCentreOfSynopticFeature|table|METHOD FOR TRACKING THE CENTRE OF SYNOPTIC FEATURE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019100|timeIntervalToCalculateMovementOfTropicalCyclone|table|TIME INTERVAL TO CALCULATE THE MOVEMENT OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019101|accuracyOfPositionOfCentreOfTropicalCyclone|table|ACCURACY OF THE POSITION OF THE CENTRE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019102|shapeAndDefinitionOfEyeOfTropicalCyclone|table|SHAPE AND DEFINITION OF THE EYE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|3|CODE TABLE|0|1
+019103|diameterOfMajorAxisOfEyeOfTropicalCyclone|table|DIAMETER OF MAJOR AXIS OF THE EYE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019104|changeInCharacterOfEyeDuring30Minutes|table|CHANGE IN CHARACTER OF THE EYE DURING THE 30 MINUTES|CODE TABLE|0|0|4|CODE TABLE|0|2
+019105|distanceBetweenEndOfSpiralBandAndCentre|table|DISTANCE BETWEEN THE END OF SPIRAL BAND AND THE CENTRE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019106|identificationNumberOfTropicalCyclone|long|IDENTIFICATION NUMBER OF TROPICAL CYCLONE|Numeric|0|0|7|Numeric|0|3
+019107|timeIntervalOverWhichMovementOfTropicalCycloneHasBeenCalculated|table|TIME INTERVAL OF THE TROPICAL CYCLONE ANALYSIS|CODE TABLE|0|0|4|CODE TABLE|0|2
+019108|accuracyOfGeographicalPositionOfTropicalCyclone|table|ACCURACY OF GEOGRAPHICAL POSITION OF THE TROPICAL CYCLONE|CODE TABLE|0|0|3|CODE TABLE|0|1
+019109|meanDiameterOfOvercastCloudOfTropicalCyclone|table|MEAN DIAMETER OF THE OVERCAST CLOUD OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019110|apparent24HourChangeInIntensityOfTropicalCyclone|table|APPARENT 24-HOUR CHANGE IN INTENSITY OF TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019111|currentIntensityNumberOfTropicalCyclone|long|CURRENT INTENSITY (CI) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019112|dataTropicalNumberOfTropicalCyclone|long|DATA TROPICAL (DT) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019113|cloudPatternTypeOfDtNumber|table|CLOUD PATTERN TYPE OF THE DT- NUMBER|CODE TABLE|0|0|4|CODE TABLE|0|2
+019114|modelExpectedTropicalNumberOfTropicalCyclone|long|MODEL EXPECTED TROPICAL (MET) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019115|trendOfPast24HourChangeDevelopedWeakened|long|TREND OF PAST 24-HOUR CHANGE (+: DEVELOPED, -: WEAKENED)|Numeric|1|-30|6|Numeric|1|2
+019116|patternTropicalNumberOfTropicalCyclone|long|PATTERN TROPICAL (PT) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019117|cloudPictureTypeOfPtNumber|table|CLOUD PICTURE TYPE OF THE PT- NUMBER|CODE TABLE|0|0|3|CODE TABLE|0|1
+019118|finalTropicalNumberOfTropicalCyclone|long|FINAL TROPICAL (T) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019119|finalTNumberType|table|TYPE OF THE FINAL T-NUMBER|CODE TABLE|0|0|3|CODE TABLE|0|1
+019150|typhoonInternationalCommonNumberTyphoonCommittee|string|TYPHOON INTERNATIONAL COMMON NUMBER (TYPHOON COMMITTEE)|CCITT IA5|0|0|32|Character|0|4
+020001|horizontalVisibility|long|HORIZONTAL VISIBILITY|m|-1|0|13|m|-1|4
+020002|verticalVisibility|long|VERTICAL VISIBILITY|m|-1|0|7|m|-1|3
+020003|presentWeather|table|PRESENT WEATHER (SEE NOTE 1)|CODE TABLE|0|0|9|CODE TABLE|0|3
+020004|pastWeather1|table|PAST WEATHER (1) (SEE NOTE 2)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020005|pastWeather2|table|PAST WEATHER (2) (SEE NOTE 2)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020008|cloudDistributionForAviation|table|CLOUD DISTRIBUTION FOR AVIATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020009|generalWeatherIndicatorTafOrMetar|table|GENERAL WEATHER INDICATOR (TAF/METAR)|CODE TABLE|0|0|4|CODE TABLE|0|2
+020010|cloudCoverTotal|long|CLOUD COVER (TOTAL)|%|0|0|7|%|0|3
+020011|cloudAmount|table|CLOUD AMOUNT|CODE TABLE|0|0|4|CODE TABLE|0|2
+020012|cloudType|table|CLOUD TYPE|CODE TABLE|0|0|6|CODE TABLE|0|2
+020013|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|m|-1|-40|11|m|-1|4
+020014|heightOfTopOfCloud|long|HEIGHT OF TOP OF CLOUD|m|-1|-40|11|m|-1|4
+020015|pressureAtBaseOfCloud|long|PRESSURE AT BASE OF CLOUD|Pa|-1|0|14|Pa|-1|5
+020016|pressureAtTopOfCloud|long|PRESSURE AT TOP OF CLOUD|Pa|-1|0|14|Pa|-1|5
+020017|cloudTopDescription|table|CLOUD TOP DESCRIPTION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020018|tendencyOfRunwayVisualRange|table|TENDENCY OF RUNWAY VISUAL RANGE|CODE TABLE|0|0|2|CODE TABLE|0|1
+020019|significantWeather|string|SIGNIFICANT PRESENT OR FORECAST WEATHER|CCITT IA5|0|0|72|Character|0|9
+020020|significantRecentWeatherPhenomena|string|SIGNIFICANT RECENT WEATHER PHENOMENA|CCITT IA5|0|0|32|Character|0|4
+020021|precipitationType|flag|TYPE OF PRECIPITATION|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+020022|characterOfPrecipitation|table|CHARACTER OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020023|otherWeatherPhenomena|flag|OTHER WEATHER PHENOMENA|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+020024|intensityOfPhenomena|table|INTENSITY OF PHENOMENA|CODE TABLE|0|0|3|CODE TABLE|0|1
+020025|obscuration|flag|OBSCURATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+020026|characterOfObscuration|table|CHARACTER OF OBSCURATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020027|phenomenaOccurrence|flag|PHENOMENA OCCURRENCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+020028|expectedChangeInIntensity|table|EXPECTED CHANGE IN INTENSITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+020029|rainFlag|table|RAIN FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+020031|iceDepositThickness|double|ICE DEPOSIT (THICKNESS)|m|2|0|7|m|2|3
+020032|rateOfIceAccretionEstimated|table|RATE OF ICE ACCRETION|CODE TABLE|0|0|3|CODE TABLE|0|1
+020033|causeOfIceAccretion|flag|CAUSE OF ICE ACCRETION|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+020034|seaIceConcentration|table|SEA ICE CONCENTRATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020035|amountAndTypeOfIce|table|AMOUNT AND TYPE OF ICE|CODE TABLE|0|0|4|CODE TABLE|0|2
+020036|iceSituation|table|ICE SITUATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020037|iceDevelopment|table|ICE DEVELOPMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+020038|iceEdgeBearing|long|BEARING OF ICE EDGE (SEE NOTE 3)|deg|0|0|12|deg|0|3
+020039|iceDistance|long|ICE DISTANCE|m|-1|0|13|m|-1|4
+020040|evolutionOfDriftSnow|table|EVOLUTION OF DRIFT OF SNOW|CODE TABLE|0|0|4|CODE TABLE|0|2
+020041|airframeIcing|table|AIRFRAME ICING|CODE TABLE|0|0|4|CODE TABLE|0|2
+020042|airframeIcingPresent|table|AIRFRAME ICING PRESENT|CODE TABLE|0|0|2|CODE TABLE|0|1
+020043|peakLiquidWaterContent|double|PEAK LIQUID WATER CONTENT|kg m-3|4|0|7|kg m-3|4|2
+020044|averageLiquidWaterContent|double|AVERAGE LIQUID WATER CONTENT|kg m-3|4|0|7|kg m-3|4|2
+020045|supercooledLargeDropletConditions|table|SUPERCOOLED LARGE DROPLET (SLD) CONDITIONS|CODE TABLE|0|0|2|CODE TABLE|0|2
+020048|evolutionOfFeature|table|EVOLUTION OF FEATURE|CODE TABLE|0|0|4|CODE TABLE|2|2
+020050|cloudIndex|table|CLOUD INDEX|CODE TABLE|0|0|8|CODE TABLE|0|3
+020051|amountOfLowClouds|long|AMOUNT OF LOW CLOUDS|%|0|0|7|%|0|3
+020052|amountOfMiddleClouds|long|AMOUNT OF MIDDLE CLOUDS|%|0|0|7|%|0|3
+020053|amountOfHighClouds|long|AMOUNT OF HIGH CLOUDS|%|0|0|7|%|0|3
+020054|trueDirectionFromWhichAPhenomenonOrCloudsAreMovingOrInWhichTheyAreObserved|long|TRUE DIRECTION FROM WHICH CLOUDS ARE MOVING|deg|0|0|9|deg|0|3
+020055|stateOfSkyInTropics|table|STATE OF SKY IN TROPICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020056|cloudPhase|table|CLOUD PHASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+020059|minimumHorizontalVisibility|long|MINIMUM HORIZONTAL VISIBILITY|m|-1|0|9|m|-1|3
+020060|prevailingHorizontalVisibility|long|PREVAILING HORIZONTAL VISIBILITY|m|-1|0|10|m|-1|4
+020061|runwayVisualRangeRvr|long|RUNWAY VISUAL RANGE (RVR)|m|0|0|12|m|0|4
+020062|stateOfGround|table|STATE OF THE GROUND (WITH OR WITHOUT SNOW)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020063|specialPhenomena|table|SPECIAL PHENOMENA|CODE TABLE|0|0|10|CODE TABLE|0|4
+020065|snowCover|long|SNOW COVER (SEE NOTE 4)|%|0|0|7|%|0|3
+020066|maximumDiameterOfHailstones|double|MAXIMUM DIAMETER OF HAILSTONES|m|3|0|8|m|3|3
+020067|diameterOfDeposit|double|DIAMETER OF DEPOSIT|m|3|0|9|m|3|3
+020070|minimumNumberOfAtmospherics|long|MINIMUM NUMBER OF ATMOSPHERICS|Numeric|0|0|7|Numeric|0|3
+020071|accuracyOfFixAndRateOfAtmospherics|table|ACCURACY OF FIX AND RATE OF ATMOSPHERICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020081|cloudAmountInSegment|long|CLOUD AMOUNT IN SEGMENT|%|0|0|7|%|0|3
+020082|amountSegmentCloudFree|long|AMOUNT SEGMENT CLOUD FREE|%|0|0|7|%|0|3
+020083|amountOfSegmentCoveredByScene|long|AMOUNT OF SEGMENT COVERED BY SCENE|%|0|0|7|%|0|3
+020085|generalConditionOfRunway|table|GENERAL CONDITION OF RUNWAY|CODE TABLE|0|0|4|CODE TABLE|0|1
+020086|runwayDeposits|table|RANWAY DEPOSITS|CODE TABLE|0|0|4|CODE TABLE|0|1
+020087|runwayContamination|table|RUNWAY CONTAMINATION|CODE TABLE|0|0|4|CODE TABLE|0|1
+020088|depthOfRunwayDeposits|double|DEPTH OF RANWAY DEPOSITS|m|3|0|12|m|3|4
+020089|runwayFrictionCoefficient|table|RUNWAY FRICTION COEFICIENT|CODE TABLE|0|0|7|CODE TABLE|0|2
+020090|specialClouds|table|SPECIAL CLOUDS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020091|verticalVisibility|long|VERTICAL VISIBILITY|ft|-2|0|10|ft|-2|3
+020092|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|ft|-2|0|10|ft|-2|3
+020095|iceProbability|long|ICE PROBABILITY|Numeric|3|0|10|Numeric|3|4
+020096|iceAgeAParameter|double|ICE AGE ("A" PARAMETER)|dB|2|-4096|13|dB|2|4
+020101|locustAcridianName|table|LOCUST (ACRIDIAN) NAME|CODE TABLE|0|0|4|CODE TABLE|0|2
+020102|locustMaturityColour|table|LOCUST (MATURITY) COLOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+020103|stageOfDevelopmentOfLocusts|table|STAGE OF DEVELOPMENT OF LOCUSTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020104|organizationStateOfSwarm|table|ORGANIZATION STATE OF SWARM OR BAND OF LOCUSTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020105|sizeOfSwarmOrBandOfLocustsAndDurationOfPassageOfSwarm|table|SIZE OF SWARM OR BAND OF LOCUSTS AND DURATION OF PASSAGE OF SWAR|CODE TABLE|0|0|4|CODE TABLE|0|2
+020106|locustPopulationDensity|table|LOCUST POPULATION DENSITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+020107|directionOfMovementsOfLocustSwarm|table|DIRECTION OF MOVEMENTS OF LOCUST SWARM|CODE TABLE|0|0|4|CODE TABLE|0|2
+020108|extentOfVegetation|table|EXTENT OF VEGETATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+021001|horizontalReflectivity|long|HORIZONTAL REFLECTIVITY|dB|0|-64|7|dB|0|3
+021002|verticalReflectivity|long|VERTICAL REFLECTIVITY|dB|0|-64|7|dB|0|3
+021003|differentialReflectivity|double|DIFFERENTIAL REFLECTIVITY|dB|1|-5|7|dB|1|3
+021005|linearDepolarizationRatio|long|LINEAR DEPOLARISATION RATIO|dB|0|-65|6|dB|0|2
+021006|circularDepolarizationRatio|long|CIRCULAR DEPOLARISATION RATIO|dB|0|-65|6|dB|0|2
+021011|dopplerMeanVelocityXDirection|long|DOPPLER MEAN VELOCITY IN X-DIRECTION|m/s|0|-128|8|m/s|0|3
+021012|dopplerMeanVelocityYDirection|long|DOPPLER MEAN VELOCITY IN Y-DIRECTION|m/s|0|-128|8|m/s|0|3
+021013|dopplerMeanVelocityZDirection|long|DOPPLER MEAN VELOCITY IN Z-DIRECTION|m/s|0|-128|8|m/s|0|3
+021014|dopplerMeanVelocityRadial|double|DOPPLER MEAN VELOCITY (RADIAL)|m/s|1|-4096|13|m/s|1|4
+021017|dopplerVelocitySpectralWidth|double|DOPPLER VELOCITY SPECTRAL WIDTH|m/s|1|0|8|m/s|1|3
+021021|echoTops|long|ECHO TOPS|m|-3|0|4|m|-3|2
+021030|signalToNoiseRatio|long|SIGNAL TO NOISE RATIO|dB|0|-32|8|dB|0|3
+021031|verticallyIntegratedLiquidWaterContent|long|VERTICALLY INTEGRATED LIQUID-WATER CONTENT|kg m-2|0|0|7|kg m-2|0|3
+021036|radarRainfallIntensity|double|RADAR RAINFALL INTENSITY|m/s|7|0|12|m/s|7|4
+021041|brightBandHeight|long|BRIGHT-BAND HEIGHT|m|-2|0|8|m|-2|3
+021051|signalPowerAbove1Mw|long|SIGNAL POWER ABOVE 1 MW|dB|0|-256|8|dB|0|3
+021062|backscatter|double|BACKSCATTER|dB|2|-5000|13|dB|2|4
+021063|radiometricResolutionNoiseValue|double|RADIOMETRIC RESOLUTION (NOISE VALUE)|%|1|0|10|%|1|4
+021064|clutterNoiseEstimate|long|CLUTTER NOISE ESTIMATE|Numeric|0|0|8|Numeric|0|3
+021065|missingPacketCounter|long|MISSING PACKET COUNTER|Numeric|0|-127|8|Numeric|0|3
+021066|waveScatterometerProductConfidenceData|flag|WAVE SCATTEROMETER PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+021067|windProductConfidenceData|flag|WIND PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|13|FLAG TABLE|0|5
+021068|radarAltimeterProductConfidenceData|flag|RADAR ALTIMETER PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+021069|sstProductConfidenceData|flag|SST PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|10|FLAG TABLE|0|4
+021070|sstProductConfidenceDataSadist2|flag|SST PRODUCT CONFIDENCE DATA (SADIST-2)|FLAG TABLE|0|0|23|FLAG TABLE|0|6
+021071|peakiness|long|PEAKINESS|Numeric|0|0|16|Numeric|0|5
+021072|satelliteAltimeterCalibrationStatus|flag|SATELLITE ALTIMETER CALIBRATION STATUS|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+021073|satelliteAltimeterInstrumentMode|flag|SATELLLITE ALTIMETER INSTRUMENT MODE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+021075|imageSpectrumIntensity|long|IMAGE SPECTRUM INTENSITY|Numeric|0|0|8|Numeric|0|3
+021076|representationOfIntensities|table|REPRESENTATION OF INTENSITIES|CODE TABLE|0|0|3|CODE TABLE|0|1
+021077|altitudeCorrectionIonosphere|double|ALTITUDE CORRECTION (IONOSPHERE)|m|3|0|14|m|3|5
+021078|altitudeCorrectionDryTroposphere|double|ALTITUDE CORRECTION (DRY TROPOSPHERE)|m|3|0|9|m|3|3
+021079|altitudeCorrectionWetTroposphere|double|ALTITUDE CORRECTION (WET TROPOSPHERE)|m|3|2000|10|m|3|4
+021080|altitudeCorrectionCalibrationConstant|double|ALTITUDE CORRECTION (CALIBRATION CONSTANT)|m|3|0|11|m|3|4
+021081|openLoopCorrectionHeightTimeLoop|double|OPEN LOOP CORRECTION (HEIGHT-TIME LOOP)|m|3|0|10|m|3|4
+021082|openLoopCorrectionAutoGainControl|double|OPEN LOOP CORRECTION (AUTO GAIN CONTROL)|dB|3|-3000|14|dB|3|5
+021083|warmTargetCalibration|long|WARM TARGET CALIBRATION|Numeric|0|0|16|Numeric|0|5
+021084|coldTargetCalibration|long|COLD TARGET CALIBRATION|Numeric|0|0|16|Numeric|0|5
+021085|atsrSeaSurfaceTemperatureAcrossTrackBandNumber|long|ATSR SEA SURFACE TEMPERATURE ACROSS- TRACK BAND NUMBER|Numeric|0|0|4|Numeric|0|2
+021086|numberOfPixelsInNadirOnlyAverage|long|NUMBER OF PIXELS IN NADIR ONLY, AVERAGE|Numeric|0|0|9|Numeric|0|3
+021087|numberOfPixelsInDualViewAverage|long|NUMBER OF PIXELS IN DUAL VIEW, AVERAGE|Numeric|0|0|9|Numeric|0|3
+021088|wetBackscatter|double|WET BACKSCATTER|dB|2|-5000|13|dB|2|4
+021091|radarSignalDopplerSpectrum0thMoment|long|RADAR SIGNAL DOPPLER SPECTRUM 0TH MOMENT|dB|0|-100|8|dB|0|3
+021092|rassSignalDopplerSpectrum0thMomentReferringToRassSignal|long|RASS SIGNAL DOPPLER SPECTRUM 0TH MOMENT, REFERRING TO RASS SIGNA|dB|0|-100|8|dB|0|3
+021093|kuBandPeakiness|long|Ku BAND PEAKINESS|Numeric|3|0|16|Numeric|0|5
+021094|sBandPeakiness|long|S BAND PEAKINESS|Numeric|3|0|16|Numeric|0|5
+021101|numberOfVectorAmbiguities|long|NUMBER OF VECTOR AMBIGUITIES|Numeric|0|0|3|Numeric|0|1
+021102|indexOfSelectedWindVector|long|INDEX OF SELECTED WIND VECTOR|Numeric|0|0|3|Numeric|0|1
+021103|totalNumberOfSigma0Measurements|long|TOTAL NUMBER OF SIGMA-0 MEASUREMENTS|Numeric|0|0|5|Numeric|0|2
+021104|likelihoodComputedForSolution|long|LIKELIHOOD COMPUTED FOR SOLUTION|Numeric|3|-30000|15|Numeric|3|5
+021105|normalizedRadarCrossSection|double|NORMALIZED RADAR CROSS-SECTION|dB|2|-10000|14|dB|2|5
+021106|kpVarianceCoefficientAlpha|long|KP VARIANCE COEFFICIENT (ALPHA)|Numeric|3|0|14|Numeric|3|5
+021107|kpVarianceCoefficientBeta|long|KP VARIANCE COEFFICIENT (BETA)|Numeric|8|0|16|Numeric|8|5
+021109|seawindsWindVectorCellQuality|flag|SEAWINDS WIND VECTOR CELL QUALITY|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021110|numberOfInnerBeamSigma0ForwardOfSatellite|long|NUMBER OF INNER-BEAM SIGMA-0 (FORWARD OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021111|numberOfOuterBeamSigma0ForwardOfSatellite|long|NUMBER OF OUTER-BEAM SIGMA-0 (FORWARD OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021112|numberOfInnerBeamSigma0AftOfSatellite|long|NUMBER OF INNER-BEAM SIGMA-0 (AFT OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021113|numberOfOuterBeamSigma0AftOfSatellite|long|NUMBER OF OUTER-BEAM SIGMA-0 (AFT OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021114|kpVarianceCoefficientGamma|double|KP VARIANCE COEFFICENT (GAMMA)|dB|3|-140000|18|dB|3|6
+021115|seawindsSigma0Quality|flag|SEAWINDS SIGMA-0 QUALITY|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021116|seawindsSigma0Mode|flag|SEAWINDS SIGMA-0 MODE|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021117|sigma0VarianceQualityControl|long|SIGMA-0 VARIANCE QUALITY CONTROL|Numeric|2|0|16|Numeric|2|5
+021118|attenuationCorrectionOnSigma0|double|ATTENUATION CORRECTION ON SIGMA-0|dB|2|-10000|14|dB|2|5
+021119|windScatterometerGeophysicalModelFunction|table|WIND SCATTEROMETER GEOPHYSICAL MODEL FUNCTION|CODE TABLE|0|0|6|CODE TABLE|0|2
+021120|probabilityOfRain|long|PROBABILITY OF RAIN|Numeric|3|0|10|Numeric|3|4
+021121|seawindsNofRainIndex|long|SEAWINDS NOF* RAIN INDEX|Numeric|0|0|8|Numeric|0|3
+021122|attenuationCorrectionOnSigma0FromTb|double|ATTENUATION CORRECTION OF SIGMA-0 (FROM TB)|dB|2|-10000|14|dB|2|5
+021123|seawindsNormalizedRadarCrossSection|double|SEAWINDS NORMALIZED RADAR CROSS SECTION|dB|2|-30000|15|dB|2|5
+021128|numberOfValidPointsPerSecondUsedToDerivePreviousParameters|long|NUMBER OF VALID POINTS PER SECOND USED TO DERIVE PREVIOUS PARAME|Numeric|0|0|8|Numeric|0|3
+021130|spectrumTotalEnergy|long|SPECTRUM TOTAL ENERGY|Numeric|6|0|28|Numeric|6|9
+021131|spectrumMaxEnergy|long|SPECTRUM MAX ENERGY|Numeric|6|0|28|Numeric|6|9
+021132|directionOfSpectrumMaxOnHigherResolutionGrid|double|DIRECTION OF SPECTRUM MAX ON HIGHER RESOLUTION GRID|deg|3|0|19|deg|3|6
+021133|wavelengthOfSpectrumMaxOnHigherResolutionGrid|double|WAVE-LENGTH OF SPECTRUM MAX ON HIGHER RESOLUTION GRID|m|3|0|29|m|3|9
+021134|rangeResolutionOfCressCovarianceSpectrum|double|RANGE RESOLUTION OF CRESS COVARIANCE SPECTRUM|rad/m|3|0|19|rad/m|3|6
+021135|realPartOfCrossSpectraPolarGridNumberOfBins|long|REAL PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS|Numeric|3|-524288|20|Numeric|3|7
+021136|imaginaryPartOfCrossSpectraPolarGridNumberOfBins|long|IMAGINARY PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS|Numeric|3|-524288|20|Numeric|3|7
+021137|kuBandCorrectedOceanBackscatterCoefficient|double|KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021138|stdKuBandCorrectedOceanBackscatterCoefficient|double|STD KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021139|kuBandNetInstrumentalCorrectionForAgc|double|KU BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|dB|2|4
+021140|sBandCorrectedOceanBackscatterCoefficient|double|S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021141|stdSBandCorrectedOceanBackscatterCoefficient|double|STD S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021142|sBandNetInstrumentalCorrectionForAgc|double|S BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-1024|11|dB|2|4
+021143|kuBandRainAttenuation|double|KU BAND RAIN ATTENUATION|dB|2|-1073741824|31|dB|2|10
+021144|altimeterRainFlag|flag|ALTIMETER RAIN FLAG|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+021145|kuBandAutomaticGainControl|double|KU BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|NA|0|0
+021146|rmsKuBandAutomaticGainControl|double|RMS KU BAND AUTOMATIC GAIN CONTROL|dB|2|0|8|NA|0|0
+021147|numberOfValidPointsForKuBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR KU BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|5|NA|0|0
+021150|beamCollocation|table|BEAM COLLOCATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+021151|estimatedErrorInSigma0At40DegreesIncidenceAngle|double|ESTIMATED ERROR IN SIGMA0 AT 40DEG INCIDENCE ANGLE|dB|2|0|9|dB|2|3
+021152|slopeAt40DegreesIncidenceAngle|double|SLOPE AT 40DEG INCIDENCE ANGLE|dB/deg|2|-80|7|dB/deg|2|3
+021153|estimatedErrorInSlopeAt40DegreesIncidenceAngle|double|ESTIMATED ERROR IN SLOPE AT 40DEG INCIDENCE ANGLE|dB/deg|2|-40|6|dB/deg|2|3
+021154|soilMoistureSensitivity|double|SOIL MOISTURE SENSITIVITY|dB|2|0|12|dB|2|4
+021155|windVectorCellQuality|flag|WIND VECTOR CELL QUALITY|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+021156|backscatterDistance|long|BACKSCATTER DISTANCE|Numeric|1|-4096|13|Numeric|1|4
+021157|lossPerUnitLengthOfAtmosphere|double|LOSS PER UNIT LENGTH OF ATMOSPHERE USED|dB/m|10|0|22|dB/m|10|7
+021158|ascatKpEstimateQuality|table|ASCAT kp ESTIMATE QUALITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+021159|ascatSigma0Usability|table|ASCAT SIGMA-0 USABILITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+021160|ascatUseOfSyntheticData|long|ASCAT USE OF SYNTHETIC DATA|Numeric|3|0|10|Numeric|3|4
+021161|ascatSyntheticDataQuantity|long|ASCAT SYNTHETIC DATA QUALITY|Numeric|3|0|10|Numeric|3|4
+021162|ascatSatelliteOrbitAndAttitudeQuality|long|ASCAT SATELLITE ORBIT AND ATTITUDE QUALITY|Numeric|3|0|10|Numeric|3|4
+021163|ascatSolarArrayReflectionContamination|long|ASCAT SOLAR ARRAY REFLECTION CONTAMINATION|Numeric|3|0|10|Numeric|3|4
+021164|ascatTelemetryPresenceAndQuality|long|ASCAT TELEMETRY PRESENCE AND QUALITY|Numeric|3|0|10|Numeric|3|4
+021165|ascatExtrapolatedReferenceFunctionPresence|long|ASCAT EXTRAPOLATED REFERENCE FUNCTION PRESENCE|Numeric|3|0|10|Numeric|3|4
+021166|landFraction|long|ASCAT LAND FRACTION|Numeric|3|0|10|Numeric|3|4
+021169|icePresenceIndicator|table|ICE PRESENCE INDICATOR|CODE TABLE|0|0|2|NA|0|0
+021170|cBandCorrectedOceanBackscatterCoefficient|double|C BAND CORRECTED OCEAN BACKSCATTER COEFICIENT|dB|2|-32768|16|NA|0|0
+021171|rmsCBandCorrectedOceanBackscatterCoefficient|double|RMS C BAND CORRECTED OCEAN BACKSCATTER COEFICIENT|dB|2|-32768|16|NA|0|0
+021172|cBandNetInstrumentalCorrectionForAgc|double|C BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|NA|0|0
+021173|cBandAutomaticGainControl|double|C BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|NA|0|0
+021174|rmsCBandAutomaticGainControl|double|RMS C BAND AUTOMATIC GAIN CONTROL|dB|2|0|9|NA|0|0
+021175|numberOfValidPointsForCBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR C BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|10|NA|0|0
+022001|wavesDirection|long|DIRECTION OF WAVES|deg|0|0|9|deg|0|3
+022002|windWavesDirection|long|DIRECTION OF WIND WAVES|deg|0|0|9|deg|0|3
+022003|swellWavesDirection|long|DIRECTION OF SWELL WAVES|deg|0|0|9|deg|0|3
+022004|currentDirection|long|DIRECTION OF CURRENT|deg|0|0|9|deg|0|3
+022005|seaSurfaceCurrentDirection|long|DIRECTION OF SEA SURFACE CURRENT|deg|0|0|9|deg|0|3
+022011|periodOfWaves|long|PERIOD OF WAVES|s|0|0|6|s|0|2
+022012|periodOfWindWaves|long|PERIOD OF WIND WAVES|s|0|0|6|s|0|2
+022013|periodOfSwellWaves|long|PERIOD OF SWELL WAVES|s|0|0|6|s|0|2
+022021|heightOfWaves|double|HEIGHT OF WAVES|m|1|0|10|m|1|4
+022022|heightOfWindWaves|double|HEIGHT OF WIND WAVES|m|1|0|10|m|1|4
+022023|heightOfSwellWaves|double|HEIGHT OF SWELL WAVES|m|1|0|10|m|1|4
+022025|standardDeviationWaveHeight|double|STANDARD DEVIATION WAVE HEIGHT|m|2|0|10|m|2|4
+022026|standardDeviationOfSignificantWaveHeight|double|STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT|m|2|0|10|m|2|4
+022031|speedOfCurrent|double|SPEED OF CURRENT|m/s|2|0|13|m/s|2|4
+022032|speedOfSeaSurfaceCurrent|double|SPEED OF SEA SURFACE CURRENT|m/s|2|0|13|m/s|2|4
+022035|tidalElevationWithRespectToLocalChartDatum|double|TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM|m|2|0|14|m|2|4
+022036|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|2|0|14|m|2|4
+022037|tidalElevationWithRespectToNationalLandDatum|double|TIDAL ELEVATION WITH RESPECT TO NATIONAL LAND DATUM|m|3|-10000|15|m|3|5
+022038|tidalElevationWithRespectToLocalChartDatum|double|TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM|m|3|-10000|15|m|3|5
+022039|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|3|-5000|12|m|3|4
+022040|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|3|-5000|14|m|3|5
+022041|seaSurfaceTemperature15DayRunningMean|double|SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN)|K|1|0|12|K|1|4
+022042|waterTemperature|double|SEA/WATER TEMPERATURE|K|1|0|12|K|1|4
+022043|waterTemperature|double|SEA/WATER TEMPERATURE|K|2|0|15|K|2|5
+022044|soundVelocity|double|SOUND VELOCITY|m/s|1|0|14|m/s|1|5
+022045|waterTemperature|double|SEA/WATER TEMPERATURE|K|3|0|19|K|3|6
+022049|seaSurfaceTemperature|double|SEA SURFACE TEMPERATURE|K|2|0|15|K|2|5
+022050|standardDeviationSeaSurfaceTemperature|double|STANDARD DEVIATION SEA-SURFACE TEMPERATURE|K|2|0|8|K|2|3
+022055|floatCycleNumber|long|FLOAT CYCLE NUMBER|Numeric|0|0|10|Numeric|0|3
+022056|directionOfProfile|table|DIRECTION OF PROFILE|CODE TABLE|0|0|2|CODE TABLE|0|1
+022059|seaSurfaceSalinity|double|SEA SURFACE SALINITY|0/00|2|0|14|0/00|2|5
+022060|lagrangianDrifterDrogueStatus|table|LAGRANGIAN DRIFTER DROGUE STATUS|CODE TABLE|0|0|3|CODE TABLE|0|1
+022061|seaState|table|STATE OF THE SEA|CODE TABLE|0|0|4|CODE TABLE|0|2
+022062|salinity|double|SALINITY|0/00|2|0|14|0/00|2|5
+022063|totalWaterDepth|long|TOTAL WATER DEPTH|m|0|0|14|m|0|5
+022064|salinity|double|SALINITY|0/00|3|0|17|0/00|3|6
+022065|waterPressure|long|WATER PRESSURE|Pa|-3|0|17|Pa|-3|6
+022066|waterConductivity|double|WATER CONDUCTIVITY|S/m|6|0|26|S/m|6|8
+022067|instrumentTypeForWaterTemperatureOrSalinityProfileMeasurement|table|INSTRUMENT TYPE FOR WATER TEMPERATURE PROFILE MEASUREMENT|CODE TABLE|0|0|10|CODE TABLE|0|4
+022068|waterTemperatureProfileRecorderTypes|table|WATER TEMPERATURE PROFILE RECORDER TYPES|CODE TABLE|0|0|7|CODE TABLE|0|3
+022069|spectralWaveDensity|double|SPECTRAL WAVE DENSITY|m2/Hz|3|0|22|m2/Hz|3|7
+022070|significantWaveHeight|double|SIGNIFICANT WAVE HEIGHT|m|2|0|13|m|2|4
+022071|spectralPeakWavePeriod|double|SPECTRAL PEAK WAVE PERIOD|s|1|0|9|s|1|3
+022072|spectralPeakWaveLength|long|SPECTRAL PEAK WAVE LENGTH|m|0|0|13|m|0|4
+022073|maximumWaveHeight|double|MAXIMUM WAVE HEIGHT|m|2|0|13|m|2|4
+022074|averageWavePeriod|double|AVERAGE WAVE PERIOD|s|1|0|9|s|1|3
+022075|averageWaveLength|long|AVERAGE WAVE LENGTH|m|0|0|13|m|0|4
+022076|directionFromWhichDominantWavesAreComing|long|DIRECTION FROM WHICH DOMINANT WAVES ARE COMING|deg|0|0|9|deg|0|3
+022077|directionalSpreadOfDominantWave|long|DIRECTIONAL SPREAD OF DOMINANT WAVE|deg|0|0|9|deg|0|3
+022078|durationOfWaveRecord|long|DURATION OF WAVE RECORD|s|0|0|12|s|0|4
+022079|lengthOfWaveRecord|long|LENGTH OF WAVE RECORD|m|0|0|16|m|0|5
+022080|wavebandCentralFrequency|double|WAVEBAND CENTRAL FREQUENCY|Hz|3|0|10|Hz|3|4
+022081|wavebandCentralWaveNumber|double|WAVEBAND CENTRAL WAVE NUMBER|/m|5|0|13|/m|5|4
+022082|maximumNonDirectionalSpectralWaveDensity|double|MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY|m2 s|2|0|20|m2 s|2|7
+022083|maximumNonDirectionalSpectralWaveNumber|double|MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE NUMBER|m3|2|0|20|m3|2|7
+022084|bandContainingMaximumNonDirectionalSpectralWaveDensity|long|BAND CONTAINING MAXIMUM NON- DIRECTIONAL SPECTRAL WAVE DENSITY|Numeric|0|0|7|Numeric|0|3
+022085|spectralWaveDensityRatio|long|SPECTRAL WAVE DENSITY RATIO|Numeric|0|0|7|Numeric|0|3
+022086|meanDirectionFromWhichWavesAreComing|long|MEAN DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3
+022087|principalDirectionFromWhichWavesAreComing|long|PRINCIPAL DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3
+022088|firstNormalizedPolarCoordinateFromFourierCoefficients|long|FIRST NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS|Numeric|2|0|7|Numeric|2|3
+022089|secondNormalizedPolarCoordinateFromFourierCoefficients|long|SECOND NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS|Numeric|2|0|7|Numeric|2|3
+022090|nonDirectionalSpectralEstimateByWaveFrequency|double|NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY|m2 s|2|0|20|m2 s|2|7
+022091|nonDirectionalSpectralEstimateByWaveNumber|double|NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER|m3|2|0|20|m3|2|7
+022092|directionalSpectralEstimateByWaveFrequency|double|DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY|m2 rad-1 s|2|0|20|m2 rad-1 s|2|7
+022093|directionalSpectralEstimateByWaveNumber|double|DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER|m4|2|0|20|m4|2|7
+022094|totalNumberOfWaveBands|long|TOTAL NUMBER OF WAVE BANDS|Numeric|0|0|7|Numeric|0|3
+022095|directionalSpreadOfIndividualWaves|long|DIRECTIONAL SPREAD OF INDIVIDUAL WAVES|deg|0|0|8|deg|0|3
+022096|spectralBandWidth|double|SPECTRAL BAND WIDTH|/s|3|0|4|/s|3|2
+022097|meanWavelength731MOfImageSpectrumAtLowWaveNumbers|long|MEAN WAVELENGTH > 731 M OF IMAGE SPECTRUM AT LOW WAVE NUMBERS|m|0|0|14|m|0|5
+022098|wavelengthSpreadWavelength731MAtLowWaveNumbers|long|WAVELENGTH SPREAD (WAVELENGTH > 731 M) AT LOW WAVE NUMBERS|m|0|0|14|m|0|5
+022099|meanDirectionAtLowWaveNumbersWavelength731M|long|MEAN DIRECTION AT LOW WAVE NUMBERS (WAVELENGTH > 731 M)|deg|0|0|9|deg|0|3
+022100|directionSpreadAtLowWaveNumbersWavelength731M|long|DIRECTION SPREAD AT LOW WAVE NUMBERS(WAVELENGTH > 731 M)|deg|0|0|9|deg|0|3
+022101|totalEnergyWavelength731mAtLowWaveNumbers|long|TOTAL ENERGY (WAVELENGTH > 731M) AT LOW WAVE NUMBERS|Numeric|0|0|31|Numeric|0|10
+022120|tideStationAutomatedWaterLevelCheck|table|TIDE STATION AUTOMATED WATER LEVEL CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022121|tideStationManualWaterLevelCheck|table|TIDE STATION MANUAL WATER LEVEL CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022122|automatedMeteorologicalDataCheck|table|TIDE STATION AUTOMATED METEOROLOGICAL DATA CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022123|tideStationManualMeteorologicalDataCheck|table|TIDE STATION MANUAL METEOROLOGICAL DATA CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022141|seaSurfaceTemperature15DayRunningMean|double|SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN)|K|2|0|15|K|2|5
+022150|numberOf18HzValidPointsForKuBand|long|NUMBER OF 18 HZ VALID POINTS FOR KU BAND|Numeric|0|0|10|Numeric|0|4
+022151|kuBandOceanRange|double|KU BAND OCEAN RANGE|m|3|0|31|m|3|10
+022152|stdOf18HzKuBandOceanRange|double|STD OF 18 HZ KU BAND OCEAN RANGE|m|3|0|16|m|3|5
+022153|numberOf18HzValidPointsForSBand|long|NUMBER OF 18 HZ VALID POINTS FOR S BAND|Numeric|0|0|10|Numeric|0|4
+022154|sBandOceanRange|double|S BAND OCEAN RANGE|m|3|0|31|m|3|10
+022155|stdOf18HzSBandOceanRange|double|STD OF 18 HZ S BAND OCEAN RANGE|m|3|0|16|m|3|5
+022156|kuBandSignificantWaveHeight|double|KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022157|stdOf18HzKuBandOceanRange|double|STD 18HZ KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022158|sBandSignificantWaveHeight|double|S BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022159|stdOf18HzSBandSignificantWaveHeight|double|STD 18HZ S BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022160|normalizedInverseWaveAge|long|NORMALIZED INVERSE WAVE AGE|Numeric|6|0|21|Numeric|6|7
+022161|waveSpectra|double|WAVE SPECTRA|m4|4|0|27|m4|4|9
+022162|rmsOf20HzKuBandOceanRange|double|RMS OF 20Hz KU BAND OCEAN RANGE|m|3|0|16|NA|0|0
+022163|numberOf20HzValidPointsForKuBand|long|NUMBER OF 20Hz VALID POINTS FOR KU BAND|Numeric|0|0|10|NA|0|0
+022164|rms20HzKuBandSignificantWaveHeight|double|RMS 20Hz KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|NA|0|0
+022165|numberOf20HzValidPointsForKuBandSignificantWaveHeight|long|NUMBER OF 20Hz VALID POINTS FOR KU BAND SIGNIFICANT WAVE HEIGHT|Numeric|0|0|10|NA|0|0
+022166|kuBandNetInstrumentalCorrectionForSignificantWaveHeight|double|KU BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|NA|0|0
+022167|numberOfValidPointsForKuBandBackscatter|long|NUMBER OF VALID POINTS FOR KU BAND BACKSCATTER|Numeric|0|0|10|NA|0|0
+022168|cBandOceanRange|double|C BAND OCEAN RANGE|m|3|0|31|NA|0|0
+022169|rmsOfCBandOceanRange|double|RMS OF C BAND OCEAN RANGE|m|3|0|16|NA|0|0
+022170|numberOf20HzValidPointsForCBand|long|NUMBER OF 20Hz VALID POINTS FOR C BAND|Numeric|0|0|10|NA|0|0
+022171|cBandSignificantWaveHeight|double|C BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|NA|0|0
+022172|rms20HzCBandSignificantWaveHeight|double|RMS 20Hz C BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|NA|0|0
+022173|numberOf20HzValidPointsForCBandSignificantWaveHeight|long|NUMBER OF 20Hz VALID POINTS FOR C BAND|Numeric|0|0|10|NA|0|0
+022174|cBandNetInstrumentalCorrectionForSignificantWaveHeight|double|C BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|NA|0|0
+022175|numberOfValidPointsForCBandBackscatter|long|NUMBER OF VALID POINTS FOR C BAND BACKSCATTER|Numeric|0|0|10|NA|0|0
+022186|directionFromWhichWavesAreComing|long|DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|NA|0|0
+022187|directionalSpreadOfWaves|long|DIRECTIONAL SPREAD OF WAVES|deg|0|0|9|NA|0|0
+022191|spectralDensity|double|SPECTRAL DENSITY|m2 rad-1 s|2|0|20|NA|0|0
+023001|accidentEarlyNotificationArticleApplicable|table|ACCIDENT EARLY NOTIFICATION ARTICLE APPLICABLE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023002|facilityInvolvedInIncident|table|ACTIVITY OR FACILITY INVOLVED IN INCIDENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+023003|releaseType|table|TYPE OF RELEASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023004|countermeasuresTakenNearBorder|table|COUNTERMEASURES TAKEN NEAR BORDER|CODE TABLE|0|0|3|CODE TABLE|0|1
+023005|causeOfIncident|table|CAUSE OF INCIDENT|CODE TABLE|0|0|2|CODE TABLE|0|1
+023006|incidentSituation|table|INCIDENT SITUATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+023007|characteristicsOfRelease|table|CHARACTERISTICS OF RELEASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023008|stateOfCurrentRelease|table|STATE OF CURRENT RELEASE|CODE TABLE|0|0|2|CODE TABLE|0|1
+023009|stateOfExpectedRelease|table|STATE OF EXPECTED RELEASE|CODE TABLE|0|0|2|CODE TABLE|0|1
+023016|possibilityOfSignificantChemicalToxicHealthEffect|table|POSSIBILITY OF SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT|CODE TABLE|0|0|2|CODE TABLE|0|1
+023017|flowDischargeOfMajorRecipient|double|FLOW DISCHARGE OF MAJOR RECIPIENT|m3/s|6|0|20|m3/s|6|7
+023018|releaseBehaviourOverTime|table|RELEASE BEHAVIOUR OVER TIME|CODE TABLE|0|0|3|CODE TABLE|0|1
+023019|actualReleaseHeight|long|ACTUAL RELEASE HEIGHT|m|0|-15000|17|m|0|6
+023021|effectiveReleaseHeight|long|EFFECTIVE RELEASE HEIGHT|m|0|-15000|17|m|0|6
+023022|distanceOfReleasePointOrSiteOfIncident|long|DISTANCE OF RELEASE POINT OR SITE OF INCIDENT|m|0|0|24|m|0|8
+023023|mainTransportSpeedInAtmosphere|double|MAIN TRANSPORT SPEED IN THE ATMOSPHERE|m/s|1|0|12|m/s|1|4
+023024|mainTransportSpeedInWater|double|MAIN TRANSPORT SPEED IN WATER|m/s|2|0|13|m/s|2|4
+023025|mainTransportSpeedInGroundWater|double|MAIN TRANSPORT SPEED IN GROUND WATER|m/s|2|0|13|m/s|2|4
+023027|mainTransportDirectionInTheAtmosphere|long|MAIN TRANSPORT DIRECTION IN THE ATMOSPHERE|deg|0|0|9|deg|0|3
+023028|mainTransportDirectionInWater|long|MAIN TRANSPORT DIRECTION IN WATER|deg|0|0|9|deg|0|3
+023029|mainTransportDirectionInGroundWater|long|MAIN TRANSPORT DIRECTION IN GROUND WATER|deg|0|0|9|deg|0|3
+023031|possibilityPlume|table|POSSIBILITY THAT PLUME WILL ENCOUNTER PRECIPITATION IN STATE IN|CODE TABLE|0|0|2|CODE TABLE|0|1
+023032|plumeWillEncounterChangeInWindDirectionAndOrOrSpeedFlag|table|PLUME WILL ENCOUNTER CHANGE IN WIND DIRECTION AND/OR SPEED FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+024001|estimateOfAmountOfRadioactivityReleasedUpToSpecifiedTime|long|ESTIMATE OF AMOUNT OF RADIOACTIVITY RELEASED UP TO SPECIFIED TIM|Bq|-11|0|28|Bq|-11|9
+024002|estimatedMaximumPotentialRelease|long|ESTIMATED MAXIMUM POTENTIAL RELEASE|Bq|-11|0|28|Bq|-11|9
+024003|compositionOfRelease|table|COMPOSITION OF RELEASE|CODE TABLE|0|0|5|CODE TABLE|0|2
+024004|elementName|string|ELEMENT NAME|CCITT IA5|0|0|16|Character|0|2
+024005|isotopeMass|long|ISOTOPE MASS|Numeric|0|0|9|Numeric|0|3
+024011|dose|double|DOSE|mSv|2|0|32|mSv|2|10
+024012|trajectoryDoseDefinedLocationAndExpectedTimeOfArrival|double|TRAJECTORY DOSE (DEFINED LOCATION AND EXPECTED TIME OF ARRIVAL)|mSv|2|0|32|mSv|2|10
+024013|gammaDoseInAirAlongMainTransportPathDefinedLocationAndTimePeriod|double|GAMMA DOSE IN AIR ALONG THE MAIN TRANSPORT PATH (DEFINED LOCATIO|mSv|2|0|32|mSv|2|10
+024021|airConcentrationOfNamedIsotopeTypeIncludingGrossBeta|double|AIR CONCENTRATION (OF NAMED ISOTOPE TYPE INCLUDING GROSS BETA)|Bq m-3|2|0|32|Bq m-3|2|10
+024022|concentrationInPrecipitationOfNamedIsotopeType|double|CONCENTRATION IN PRECIPITATION (OF NAMES ISOTOPE TYPE)|Bq/l|2|0|32|Bq/l|2|10
+024023|pulseRateOfBetaRadiation|double|PULSE RATE OF BETA RADIATION|/s|1|0|14|/s|1|4
+024024|pulseRateOfGammaRadiation|double|PULSE RATE OF GAMMA RADIATION|/s|1|0|14|/s|1|4
+025001|rangeGateLength|long|RANGE-GATE LENGTH|m|-1|0|6|m|-1|2
+025002|numberOfGatesAveraged|long|NUMBER OF GATES AVERAGED|Numeric|0|0|4|Numeric|0|2
+025003|numberOfIntegratedPulses|long|NUMBER OF INTEGRATED PULSES|Numeric|0|0|8|Numeric|0|3
+025004|echoProcessing|table|ECHO PROCESSING|CODE TABLE|0|0|2|CODE TABLE|0|1
+025005|echoIntegration|table|ECHO INTEGRATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025006|zToRConversion|table|Z TO R CONVERSION|CODE TABLE|0|0|3|CODE TABLE|0|1
+025007|zToRConversionFactor|long|Z TO R CONVERSION FACTOR|Numeric|0|0|12|Numeric|0|4
+025008|zToRConversionExponent|long|Z TO R CONVERSION EXPONENT|Numeric|2|0|9|Numeric|2|3
+025009|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025010|clutterTreatment|table|CLUTTER TREATMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+025011|groundOccultationCorrectionScreening|table|GROUND OCCULTATION CORRECTION (SCREENING)|CODE TABLE|0|0|2|CODE TABLE|0|1
+025012|rangeAttenuationCorrection|table|RANGE ATTENUATION CORRECTION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025013|brightBandCorrection|flag|BRIGHT-BAND CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025014|azimuthClutterCutOff|long|AZIMUTH CLUTTER CUT-OFF (SEE NOTE 1)|Numeric|0|0|12|Numeric|0|4
+025015|radomeAttenuationCorrection|flag|RADOME ATTENUATION CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025016|clearAirAttenuationCorrection|double|CLEAR-AIR ATTENUATION CORRECTION|dB/m|5|0|6|dB/m|5|2
+025017|precipitationAttenuationCorrection|flag|PRECIPITATION ATTENUATION CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025018|aToZLawForAttenuationFactor|long|A TO Z LAW FOR ATTENUATION FACTOR|Numeric|7|0|6|Numeric|7|2
+025019|aToZLawForAttenuationExponent|long|A TO Z LAW FOR ATTENUATION EXPONENT|Numeric|2|0|7|Numeric|2|3
+025020|meanSpeedEstimation|table|MEAN SPEED ESTIMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025021|windComputationEnhancement|flag|WIND COMPUTATION ENHANCEMENT|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025025|batteryVoltage|double|BATTERY VOLTAGE|V|1|0|9|V|1|3
+025026|batteryVoltageLargeRange|double|BATTERY VOLTAGE (LARGE RANGE)|V|1|0|12|V|1|4
+025028|operatorOrManufacturerDefinedParameter|long|OPERATOR OR MANUFACTURER DEFINED PARAMETER|Numeric|1|-16384|15|Numeric|1|5
+025029|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+025030|runningMeanSeaSurfaceTemperatureUsage|table|RUNNING MEAN SEA-SURFACE TEMPERATURE USAGE|CODE TABLE|0|0|2|CODE TABLE|0|1
+025032|windProfilerModeInformation|table|WIND PROFILER MODE INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025033|windProfilerSubmodeInformation|table|WIND PROFILER SUBMODE INFORMATION*|CODE TABLE|0|0|2|CODE TABLE|0|1
+025034|windProfilerQualityControlTestResults|flag|WIND PROFILER QUALITY CONTROL TEST RESULTS*|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025036|atmosphericsLocationMethod|table|ATMOSPHERICS LOCATION METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+025040|co2WindProductDerivation|table|CO2 WIND PRODUCT DERIVATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+025041|movingPlatformDirectionReportingMethod|table|MOVING PLATFORM DIRECTION REPORTING METHOD|CODE TABLE|0|0|2|CODE TABLE|0|1
+025042|movingPlatformSpeedReportingMethod|table|MOVING PLATFORM SPEED REPORTING METHOD|CODE TABLE|0|0|2|CODE TABLE|0|1
+025043|waveSamplingIntervalTime|double|WAVE SAMPLING INTERVAL (TIME)|s|4|0|15|s|4|5
+025044|waveSamplingIntervalSpace|double|WAVE SAMPLING INTERVAL (SPACE)|m|2|0|14|m|2|5
+025045|hirsChannelCombination|flag|HIRS CHANNEL COMBINATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+025046|msuChannelCombination|flag|MSU CHANNEL COMBINATION|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+025047|ssuChannelCombination|flag|SSU CHANNEL COMBINATION|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025048|amsuAChannelCombination|flag|AMSU-A CHANNEL COMBINATION|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+025049|amsuBChannelCombination|flag|AMSU-B CHANNEL COMBINATION|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+025050|principalComponentScore|long|PRINCIPAL COMPONENT SCORE|Numeric|4|-131072|18|Numeric|4|6
+025051|avhrrChannelCombination|flag|AVHRR CHANNEL COMBINATION|FLAG TABLE|0|0|7|FLAG TABLE|0|3
+025052|log10OfPrincipalComponentsNormalizedFitToData|long|LOG-10 OF PRINCIPAL COMPONENTS NORMALIZED FIT TO DATA|Numeric|4|0|15|Numeric|4|5
+025053|observationQuality|flag|OBSERVATION QUALITY|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+025054|ssmisSubframeIdNumber|long|SSMIS SUBFRAME ID NEMBER|Numeric|0|0|5|Numeric|0|2
+025055|multiplexerHousekeeping|double|MULTIPLEXER HOUSEKEEPING|K|2|0|16|K|2|5
+025060|softwareIdentification|long|SOFTWARE IDENTIFICATION (SEE NOTE 2)|Numeric|0|0|14|Numeric|0|5
+025061|softwareVersionNumber|string|SOFTWARE IDENTIFICATION AND VERSION NUMBER|CCITT IA5|0|0|96|Character|0|12
+025062|databaseIdentification|long|DATABASE IDENTIFICATION|Numeric|0|0|14|Numeric|0|5
+025065|orientationCorrectionAzimuth|double|ORIENTATION CORRECTION (AZIMUTH)|deg|2|-1000|11|deg|2|4
+025066|orientationCorrectionElevation|double|ORIENTATION CORRECTION (ELEVATION)|deg|2|-1000|11|deg|2|4
+025067|radiosondeReleasePointPressureCorrection|long|RADIOSONDE RELEASE POINT PRESSURE CORRECTION|Pa|0|-8000|14|Pa|0|4
+025068|numberOfArchiveRecomputes|long|NUMBER OF ARCHIVE RECOMPUTES|Numeric|0|0|7|Numeric|0|3
+025069|flightLevelPressureCorrections|flag|FLIGHT LEVEL PRESSURE CORRECTIONS|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025070|majorFrameCount|long|MAJOR FRAME COUNT|Numeric|0|0|4|Numeric|0|2
+025071|frameCount|long|FRAME COUNT|Numeric|0|0|5|Numeric|0|2
+025075|satelliteAntennaCorrectionsVersionNumber|long|SATELLITE ANTENNA CORRECTIONS VERSION NUMBER|Numeric|0|0|5|Numeric|0|2
+025076|log10OfTemperatureRadianceCentralWaveNumberForAtovs|double|LOG-10 OF (TEMPERATURE-RADIANCE CENTRAL WAVENUMBER) FOR ATOVS|log (m-1)|8|0|30|log (m-1)|8|10
+025077|bandwidthCorrectionCoefficient1ForAtovs|long|BANDWIDTH CORRECTION COEFFICIENT 1 FOR ATOVS|Numeric|5|-100000|18|Numeric|5|7
+025078|bandwidthCorrectionCoefficient2ForAtovs|long|BANDWIDTH CORRECTION COEFFICIENT 2 FOR ATOVS|Numeric|5|0|17|Numeric|5|6
+025079|albedoRadianceSolarFilteredIrradianceForAtovs|double|ALBEDO-RADIANCE SOLAR FILTERED IRRADIANCE FOR ATOVS|W m-2|4|0|24|W m-2|4|8
+025080|albedoRadianceEquivalentFilterWidthForAtovs|double|ALBEDO-RADIANCE EQUIVALENT FILTER WIDTH FOR ATOVS|m|10|0|14|m|10|5
+025081|incidenceAngle|double|INCIDENCE ANGLE|deg|3|0|17|deg|3|6
+025082|azimuthAngle|double|AZIMUTH ANGLE|deg|3|0|19|deg|3|6
+025083|faradayRotationalAngle|double|FARADEY ROTATIONAL ANGLE|deg|3|0|19|deg|3|6
+025084|geometricRotationalAngle|double|GEOMETRIC ROTATIONAL ANGLE|deg|5|0|26|deg|5|8
+025085|fractionOfClearPixelsInHirsFov|long|FRACTION OF CLEAR PIXELS IN HIRS FOV|Numeric|0|0|7|Numeric|0|3
+025086|depthCorrectionIndicator|table|DEPTH CORRECTION INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+025090|orbitStateFlag|table|ORBIT STATE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+025091|structureConstantOfRefractionIndexCn2|double|STRUCTURE CONSTANT OF THE REFRACTION INDEX (CN2)|dB|3|-18192|13|dB|3|5
+025092|acousticPropagationVelocity|double|ACOUSTIC PROPAGATION VELOCITY|m/s|2|28000|14|m/s|2|5
+025093|rassComputationCorrection|flag|RASS COMPUTATION CORRECTION|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025095|altimeterStateFlag|flag|ALTIMETER STATE FLAG|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025096|radiometerStateFlag|flag|RADIOMETER STATE FLAG|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+025097|threeDimensionalErrorEstimateOfNavigatorOrbit|table|THREE DIMENSIONAL ERROR ESTIMATE OF THE NAVIGATOR ORBIT|CODE TABLE|0|0|4|CODE TABLE|0|2
+025098|altimeterDataQualityFlag|flag|ALTIMETER DATA QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025099|altimeterCorrectionQualityFlag|flag|ALTIMETER CORRECTION QUALITY|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025100|xbtOrXctdFallRateEquationCoefficientA|long|XBT/XCTD FALL RATE EQUATION COEFFICIENT A|Numeric|5|0|20|Numeric|5|6
+025101|xbtOrXctdFallRateEquationCoefficientB|long|XBT/XCTD FALL RATE EQUATION COEFFICIENT B|Numeric|5|-500000|21|Numeric|5|6
+025102|numberOfMissingLinesExcludingDataGaps|long|NUMBER OF MISSING LINES EXCLUDING DATA GAPS|Numeric|0|0|8|Numeric|0|3
+025103|numberOfDirectionalBins|long|NUMBER OF DIRECTIONAL BINS|Numeric|0|0|8|Numeric|0|3
+025104|numberOfWavelengthBins|long|NUMBER OF WAVE-LENGTH BINS|Numeric|0|0|8|Numeric|0|3
+025105|firstDirectionalBin|double|FIRST DIRECTIONAL BIN|deg|3|0|19|NA|0|0
+025106|directionalBinStep|double|DIRECTIONAL BIN STEP|deg|3|0|19|NA|0|0
+025107|firstWavelengthBin|double|FIRST WAVE-LENGTH BIN|m|3|0|29|m|3|9
+025108|lastWavelengthBin|double|LAST WAVE-LENGTH BIN|m|3|0|29|m|3|9
+025110|imageProcessingSummary|flag|IMAGE PROCESSING SUMMARY|FLAG TABLE|0|0|10|NA|0|0
+025111|numberOfInputDataGaps|long|NUMBER OF INPUT DATA GAPS|Numeric|0|0|8|Numeric|0|3
+025120|ra2L2ProcessingFlag|table|RA2-L2-PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025121|ra2L2ProcessingQuality|long|RA2-L2-PROCESSING QUALITY|%|0|0|7|%|0|3
+025122|hardwareConfigurationForRf|table|HARDWARE CONFIGURATION FOR RF|CODE TABLE|0|0|2|CODE TABLE|0|1
+025123|hardwareConfigurationForHpa|table|HARDWARE CONFIGURATION FOR HPA|CODE TABLE|0|0|2|CODE TABLE|0|1
+025124|mwrL2ProcessingFlag|table|MWR L2 PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025125|mwrL2ProcessingQuality|long|MWR L2-PROCESSING QUALITY|%|0|0|7|%|0|3
+025126|modelDryTroposphericCorrection|double|MODEL DRY TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025127|invertedBarometerCorrection|double|INVERTED BAROMETER CORRECTION|m|3|-32768|16|m|3|5
+025128|modelWetTroposphericCorrection|double|MODEL WET TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025129|mwrDerivedWetTroposphericCorrection|double|MWR DERIVED WET TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025130|ra2IonosphericCorrectionOnKuBand|double|RA2 IONOSPHERIC CORRECTION ON KU BAND|m|3|-32768|16|m|3|5
+025131|ionosphericCorrectionFromDorisOnKuBand|double|IONOSPHERIC CORRECTION FROM DORIS ON KU BAND|m|3|-32768|16|m|3|5
+025132|ionosphericCorrectionFromModelOnKuBand|double|IONOSPHERIC CORRECTION FROM MODEL ON KU BAND|m|3|-32768|16|m|3|5
+025133|seaStateBiasCorrectionOnKuBand|double|SEA STATE BIAS CORRECTION ON KU BAND|m|3|-32768|16|m|3|5
+025134|ra2IonosphericCorrectionOnSBand|double|RA2 IONOSPHERIC CORRECTION ON S BAND|m|3|-32768|16|m|3|5
+025135|ionosphericCorrectionFromDorisOnSBand|double|IONOSPHERIC CORRECTION FROM DORIS ON S BAND|m|3|-32768|16|m|3|5
+025136|ionosphericCorrectionFromModelOnSBand|double|IONOSPHERIC CORRECTION FROM MODEL ON S BAND|m|3|-32768|16|m|3|5
+025137|seaStateBiasCorrectionOnSBand|double|SEA STATE BIAS CORRECTION ON S BAND|m|3|-32768|16|m|3|5
+025138|averageSignalToNoiseRatio|long|AVERAGE SIGNAL TO NOISE RATION|Numeric|0|-2048|12|Numeric|0|4
+025140|startChannel|long|START CHANNEL|Numeric|0|0|14|Numeric|0|5
+025141|endChannel|long|END CHANNEL|Numeric|0|0|14|Numeric|0|5
+025142|channelScaleFactor|long|CHANNEL SCALE FACTOR|Numeric|0|0|6|Numeric|0|2
+025143|linearCoefficient|long|LINEAR COEFFICIENT|Numeric|6|-5000000|24|Numeric|6|8
+025150|methodOfTropicalCycloneIntensityAnalysisUsingSatelliteData|table|SATELLITE INTENSITY ANALYSIS METHOD OF TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|2|2
+025160|kuBandNetInstrumentalCorrection|double|KU BAND INSTRUMENTAL CORRECTION|m|4|-120000|18|NA|0|0
+025161|cBandNetInstrumentalCorrection|double|C BAND INSTRUMENTAL CORRECTION|m|4|-120000|18|NA|0|0
+025162|seaStateBiasCorrectionOnCBand|double|SEA STATE BIAS CORRECTION ON C BAND|m|4|-6000|13|NA|0|0
+025163|altimeterIonosphericCorrectionOnKuBand|double|ALTIMETER IONOSPHERIC CORRECTION ON KU BAND|m|3|-32768|16|NA|0|0
+025164|radiometerWetTroposphericCorrection|double|RADIOMETER WET|m|4|-5000|13|NA|0|0
+025174|smosInformationFlag|flag|SMOS INFORMATION FLAG|FLAG TABLE|0|0|14|FLAG TABLE|0|5
+026001|principalTimeOfDailyReadingInUtcOfMaximumTemperature|double|PRINCIPAL TIME OF DAILY READING IN UTC OF MAXIMUM TEMPERATURE|h|1|0|12|h|1|3
+026002|principalTimeOfDailyReadingInUtcOfMinimumTemperature|double|PRINCIPAL TIME OF DAILY READING IN UTC OF MINIMUM TEMPERATURE|h|1|0|12|h|1|3
+026003|timeDifference|long|TIME DIFFERENCE|min|0|-1440|12|min|0|4
+026010|hoursIncluded|flag|HOURS INCLUDED|FLAG TABLE|0|0|26|FLAG TABLE|0|9
+026020|durationOfPrecipitation|long|DURATION OF PRECIPITATION|min|0|0|11|min|0|4
+027001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+027002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+027003|alternateLatitude|double|ALTERNATE LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+027004|alternateLatitude|double|ALTERNATE LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+027010|footprintAxis1|long|FOOTPRINT AXIS 1|m|-1|0|14|m|-1|5
+027020|satelliteLocationCounter|long|SATELLITE LOCATION COUNTER|Numeric|0|0|16|Numeric|0|5
+027021|satelliteSublocationDimension|long|SATELLITE SUBLOCATION DIMENSION|Numeric|0|0|16|Numeric|0|5
+027031|DistanceFromEarthCentreInDirectionOf0DegreesLongitude|double|IN DIRECTION OF 0 DEGREES LONGITUDE, DISTANCE FROM THE EARTH'S C|m|2|-1073741824|31|m|2|10
+027080|viewingAzimuthAngle|double|VIEWING AZIMUTH ANGLE|deg|2|0|16|deg|0|5
+028001|longitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+028002|longitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+028003|alternateLongitude|double|ALTERNATE LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+028004|alternateLongitude|double|ALTERNATE LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+028010|footprintAxis2|long|FOOTPRINT AXIS 2|m|-1|0|14|m|-1|5
+028031|DistanceFromEarthCentreInDirection90DegreesEast|double|IN DIRECTION 90 DEGREES EAST, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10
+029001|projectionType|table|PROJECTION TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+029002|coordinateGridType|table|CO-ORDINATE GRID TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+030001|pixelValue4Bits|long|PIXEL VALUE (4 BITS)|Numeric|0|0|4|Numeric|0|2
+030002|pixelValue8Bits|long|PIXEL VALUE (8 BITS)|Numeric|0|0|8|Numeric|0|3
+030004|pixelValue16Bits|long|PIXEL VALUE (16 BITS)|Numeric|0|0|16|Numeric|0|5
+030010|numberOfGridPoints|long|NUMBER OF GRID POINTS|Numeric|0|0|13|Numeric|0|4
+030021|numberOfPixelsPerRow|long|NUMBER OF PIXELS PER ROW|Numeric|0|0|12|Numeric|0|4
+030022|numberOfPixelsPerColumn|long|NUMBER OF PIXELS PER COLUMN|Numeric|0|0|12|Numeric|0|4
+030031|pictureType|table|PICTURE TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+030032|combinationWithOtherData|flag|COMBINATION WITH OTHER DATA|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+031000|shortDelayedDescriptorReplicationFactor|long|SHORT DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|1|Numeric|0|1
+031001|delayedDescriptorReplicationFactor|long|DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|8|Numeric|0|3
+031002|extendedDelayedDescriptorReplicationFactor|long|EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|16|Numeric|0|5
+031011|delayedDescriptorAndDataRepetitionFactor|long|DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|8|Numeric|0|3
+031012|extendedDelayedDescriptorAndDataRepetitionFactor|long|EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|16|Numeric|0|5
+031021|associatedFieldSignificance|table|ASSOCIATED FIELD SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+031031|dataPresentIndicator|flag|DATA PRESENT INDICATOR|FLAG TABLE|0|0|1|FLAG TABLE|0|1
+033002|qualityInformation|table|QUALITY INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033003|qualityInformation|table|QUALITY INFORMATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+033005|qualityInformationAwsData|flag|QUALITY INFORMATION (AWS DATA)|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+033006|internalMeasurementStatusInformationAws|table|INTERNAL MEASUREMENT STATUS INFORMATION (AWS)|CODE TABLE|0|0|3|CODE TABLE|0|1
+033007|percentConfidence|long|PER CENT CONFIDENCE|%|0|0|7|%|0|3
+033009|relativeError|double|RELATIVE ERROR|%|6|0|20|%|0|7
+033015|dataQualityCheckIndicator|table|DATA QUALITY CHECK INDICATOR|CODE TABLE|0|0|6|CODE TABLE|0|2
+033020|qualityControlIndicationOfFollowingValue|table|QUALITY CONTROL INDICATION OF FOLLOWING VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+033021|qualityOfFollowingValue|table|QUALITY OF FOLLOWING VALUE|CODE TABLE|0|0|2|CODE TABLE|0|1
+033022|qualityOfBuoySatelliteTransmission|table|QUALITY OF BUOY SATELLITE TRANSMISSION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033023|qualityOfBuoyLocation|table|QUALITY OF BUOY LOCATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033024|stationElevationQualityMarkForMobileStations|table|STATION ELEVATION QUALITY MARK (FOR MOBILE STATIONS)|CODE TABLE|0|0|4|CODE TABLE|0|2
+033025|acarsInterpolatedValuesIndicator|table|ACARS INTERPOLATED VALUES|CODE TABLE|0|0|3|CODE TABLE|0|1
+033026|moistureQuality|table|MOISTURE QUALITY|CODE TABLE|0|0|6|CODE TABLE|0|2
+033027|locationQualityClassRangeOfRadiusOf66Confidence|table|LOCATION QUALITY CLASS (RANGE OF RADIUS OF 66 % CONFIDENCE)|CODE TABLE|0|0|3|CODE TABLE|0|1
+033028|snapshotOverallQuality|table|SNAPSHOT OVERALL QUALITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+033030|scanLineStatusFlagsForAtovs|flag|SCAN LINE STATUS FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033031|scanLineQualityFlagsForAtovs|flag|SCAN LINE QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033032|channelQualityFlagsForAtovs|flag|CHANNEL QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033033|fieldOfViewQualityFlagsForAtovs|flag|FIELD OF VIEW QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033035|qualityControl|table|MANUAL/AUTOMATIC QUALITY CONTROL|CODE TABLE|0|0|4|CODE TABLE|0|2
+033036|nominalConfidenceThreshold|long|NOMINAL CONFIDENCE THRESHOLD|%|0|0|7|%|0|3
+033037|windCorrelationError|flag|WIND CORRELATION ERROR|FLAG TABLE|0|0|20|FLAG TABLE|0|7
+033038|qualityFlagsForGroundBasedGnssData|flag|QUALITY FLAGS FOR GROUND-BASED GNSS DATA|FLAG TABLE|0|0|10|FLAG TABLE|0|4
+033039|radioOccultationDataQualityFlags|flag|QUALITY FLAGS FOR RADIO OCCULTATION DATA|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+033040|confidenceInterval|long|CONFIDENCE INTERVAL|%|0|0|7|%|0|3
+033041|attributeOfFollowingValue|table|ATTRIBUTE OF FOLLOWING VALUE|CODE TABLE|0|0|2|CODE TABLE|0|1
+033042|typeOfLimitRepresentedByFollowingValue|table|TYPE OF LIMIT REPRESENTED BY FOLLOWING VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+033043|astConfidence|flag|AST CONFIDENCE|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+033044|asarQualityInformation|flag|ASAR QUALITY INFORMATION|FLAG TABLE|0|0|15|FLAG TABLE|0|5
+033045|probabilityOfFollowingEvent|long|PROBABILITY OF FOLLOWING EVENT|%|0|0|7|%|0|3
+033046|conditionalProbability|long|CONDITIONAL PROBABILITY OF FOLLOWING EVENT WITH RESPECT TO SPECI|%|0|0|7|%|0|3
+033047|measurementConfidenceData|flag|MEASUREMENT CONFIDENCE DATA|FLAG TABLE|0|0|31|FLAG TABLE|0|11
+033048|confidenceMeasureOfSarInversion|table|CONFIDENCE MEASURE OF SAR INVERSION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033049|confidenceMeasureOfWindRetrieval|table|CONFIDENCE MEASURE OF WIND RETRIEVAL|CODE TABLE|0|0|2|CODE TABLE|0|1
+033050|globalGtsppQualityFlag|table|GLOBAL GTSPP QUALITY FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+033052|sBandOceanRetrackingQuality|flag|S BAND OCEAN RETRACKING QUALITY|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+033053|kuBandOceanRetrackingQuality|flag|KU BAND OCEAN RETRACKING QUALITY|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+033060|gqisFlagQual|table|GQISFLAGQUAL-INDIVIDUAL IASI-SYSTEM QUALITY FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+033061|gqisQualIndex|long|GQISQUALINDEX - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE|%|0|0|7|%|0|3
+033062|gqisQualIndexLoc|long|GQISQUALINDEXLOC - INDICATOR FOR GEOMETRIC QUALITY INDEX|%|0|0|7|%|0|3
+033063|gqisQualIndexRad|long|GQISQUALINDEXRAD - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE|%|0|0|7|%|0|3
+033064|gqisQualIndexSpect|long|GQISQUALINDEXSPECT - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE|%|0|0|7|%|0|3
+033065|gqisSysTecQual|long|GQISSYSTECSONDQUAL - OUTPUT OF SYSTEM TEC QUALITY FUNCTION|Numeric|0|0|24|Numeric|0|24
+033066|sbuvTotalOzoneQuality|table|SBUV TOTAL OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033067|sbuvProfileOzoneQuality|table|SBUV PROFILE OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033070|totalOzoneQuality|table|TOTAL OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033071|profileOzoneQuality|table|PROFILE OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+035000|fmAndRegionalCodeNumber|table|FM AND REGIONAL CODE NUMBER|CODE TABLE|0|0|10|CODE TABLE|0|3
+035001|timeFrameForMonitoring|table|TIME-FRAME FOR MONITORING|CODE TABLE|0|0|3|CODE TABLE|0|1
+035011|numberOfReportsActuallyReceived|long|NUMBER OF REPORTS ACTUALLY RECEIVED|Numeric|0|0|14|Numeric|0|4
+035021|bulletinBeingMonitoredTtaaii|string|BULLETIN BEING MONITORED (TTAAII)|CCITT IA5|0|0|48|Character|0|6
+035022|bulletinBeingMonitoredYygggg|string|BULLETIN BEING MONITORED (YYGGGG)|CCITT IA5|0|0|48|Character|0|6
+035023|bulletinBeingMonitoredCccc|string|BULLETIN BEING MONITORED (CCCC)|CCITT IA5|0|0|32|Character|0|4
+035024|bulletinBeingMonitoredBbb|string|BULLETIN BEING MONITORED (BBB)|CCITT IA5|0|0|24|Character|0|3
+035030|discrepanciesInAvailabilityOfExpectedData|table|DISCREPANCIES IN THE AVAILABILITY OF EXPECTED DATA|CODE TABLE|0|0|4|CODE TABLE|0|1
+035031|qualifierOnMonitoringResults|table|QUALIFIER ON MONITORING RESULTS|CODE TABLE|0|0|7|CODE TABLE|0|2
+035032|causeOfMissingData|table|CAUSE OF MISSING DATA|CODE TABLE|0|0|4|CODE TABLE|0|1
+035033|observationAndCollectionDeficiencies|table|OBSERVATION AND COLLECTION DEFICIENCIES|CODE TABLE|0|0|7|CODE TABLE|0|2
+035034|statisticalTrendsForAvailabilityOfDataDuringSurveyPeriods|table|STATISTICAL TRENDS FOR AVAILABILITY OF DATA (DURING THE SURVEY P|CODE TABLE|0|0|3|CODE TABLE|0|1
+035035|reasonForTermination|table|REASON FOR TERMINATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+040001|surfaceSoilMoisture|double|SURFACE SOIL MOISTURE (MS)|%|1|0|10|%|1|4
+040002|estimatedErrorInSurfaceSoilMoisture|double|ESTIMATED ERROR IN SURFACE SOIL MOISTURE|%|1|0|10|%|1|4
+040003|meanSurfaceSoilMoisture|long|MEAN SURFACE SOIL MOISTURE|Numeric|3|0|10|Numeric|3|4
+040004|rainFallDetection|long|RAIN FALL DETECTION|Numeric|3|0|10|Numeric|3|4
+040005|soilMoistureCorrectionFlag|flag|SOIL MOISTURE CORRECTION FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040006|soilMoistureProcessingFlag|flag|SOIL MOISTURE PROCESSING FLAG|FLAG TABLE|0|0|16|FLAG TABLE|0|5
+040007|soilMoistureQuality|double|SOIL MOISTURE QUALITY|%|1|0|10|%|1|4
+040008|frozenLandSurfaceFraction|double|FROZEN LAND SURFACE FRACTION|%|1|0|10|%|1|4
+040009|inundationAndWetlandFraction|double|INUNDATION AND WETLAND FRACTION|%|1|0|10|%|1|4
+040010|topographicComplexity|double|TOPOGRAPHIC COMPLEXITY|%|1|0|10|%|1|4
+040011|interpolationFlag|flag|INTERPOLATION FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040012|radiometerDataQualityFlag|flag|RADIOMETER DATA QUALITY FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040013|radiometerBrightnessTemperatureInterpretationFlag|table|RADIOMETER BRIGHTNESS TEMPERATURE INTERPOLATION FLAG|CODE TABLE|0|0|3|NA|0|0
+040014|highFrequencyFluctuationsOfSeaSurfaceTopographyCorrection|double|HIGH FREQUENCY FLUCTUATIONS OF THE SEA SURFACE TOPOGRAPHY CORREC|m|4|-3000|13|NA|0|0
+040018|averageOfImagerMeasurements|double|GLACAVGLMAGLLS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|NA|0|0
+040019|giacvarimagiisVarianceOfImagerMeasurements|double|GLACVARLMAGLLS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|NA|0|0
+040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|NA|0|0
+040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH SNOW/I|%|0|0|7|NA|0|0
+040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|NA|0|0
diff --git a/definitions/bufr/tables/0/wmo/10/sequence.def b/definitions/bufr/tables/0/wmo/10/sequence.def
new file mode 100644
index 0000000..037fc3a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/10/sequence.def
@@ -0,0 +1,678 @@
+"300002" = [  000002, 000003 ]
+"300003" = [  000010, 000011, 000012 ]
+"300004" = [  300003, 000013, 000014, 000015, 000016, 000017, 000018, 000019, 000020 ]
+"300010" = [  300003, 101000, 031001, 000030 ]
+"301001" = [  001001, 001002 ]
+"301002" = [  001003, 001004, 001005 ]
+"301003" = [  001011, 001012, 001013 ]
+"301004" = [  001001, 001002, 001015, 002001 ]
+"301005" = [  001035, 001034 ]
+"301011" = [  004001, 004002, 004003 ]
+"301012" = [  004004, 004005 ]
+"301013" = [  004004, 004005, 004006 ]
+"301014" = [  102002, 301011, 301012 ]
+"301021" = [  005001, 006001 ]
+"301022" = [  005001, 006001, 007001 ]
+"301023" = [  005002, 006002 ]
+"301024" = [  005002, 006002, 007001 ]
+"301025" = [  301023, 004003, 301012 ]
+"301026" = [  301021, 004003, 004003, 004004, 004004, 004005, 004005 ]
+"301027" = [  008007, 101000, 031001, 301028, 008007 ]
+"301028" = [  008040, 033042, 007010, 101000, 031002, 301023, 019007, 008040 ]
+"301031" = [  301001, 002001, 301011, 301012, 301022 ]
+"301032" = [  301001, 002001, 301011, 301012, 301024 ]
+"301033" = [  001005, 002001, 301011, 301012, 301021 ]
+"301034" = [  001005, 002001, 301011, 301012, 301023 ]
+"301035" = [  001005, 001012, 001013, 002001, 301011, 301012, 301023 ]
+"301036" = [  301003, 002001, 301011, 301012, 301023 ]
+"301037" = [  301001, 002011, 002012, 301011, 301012, 301022 ]
+"301038" = [  301001, 002011, 002012, 301011, 301012, 301024 ]
+"301039" = [  301003, 002011, 002012, 301011, 301012, 301023 ]
+"301040" = [  301003, 002011, 002012, 301011, 301012, 301024 ]
+"301041" = [  001007, 002021, 002022, 301011, 301012 ]
+"301042" = [  301041, 301021 ]
+"301043" = [  001007, 002023, 301011, 301013, 301021 ]
+"301044" = [  001007, 002024, 301011, 301013, 301021 ]
+"301045" = [  301011, 301012, 201138, 202131, 004006, 201000, 202000, 304030, 304031 ]
+"301046" = [  001007, 001012, 002048, 021119, 025060, 202124, 002026, 002027, 202000, 005040
+               ]
+"301047" = [  001007, 025060, 001033, 001034, 001012, 301045, 002021, 301011, 301012, 201138,
+               202131, 004006, 201000, 202000, 301023 ]
+"301048" = [  002104, 002121, 002113, 002026, 002027, 002111, 002140, 202127, 001013, 202126,
+               007001, 202000, 025010, 021064 ]
+"301049" = [  002111, 002112, 021062, 021063, 021065 ]
+"301051" = [  001006, 002061, 301011, 301012, 301021, 008004 ]
+"301055" = [  001005, 002001, 301011, 301012, 301021, 001012, 001014 ]
+"301062" = [  101000, 031001, 301001 ]
+"301065" = [  001006, 001008, 002001, 002002, 002005, 002062, 002070, 002065 ]
+"301066" = [  301011, 301013, 301023, 007004, 002064, 008004 ]
+"301070" = [  002143, 002142, 002144 ]
+"301071" = [  001007, 001031, 002020, 002028, 002029 ]
+"301072" = [  301071, 301011, 301013, 301021 ]
+"301074" = [  002143, 002142, 002145, 002146 ]
+"301075" = [  301001, 001015, 301024, 008021, 301011, 301012 ]
+"301076" = [  002011, 002143, 002142 ]
+"301089" = [  001101, 001102 ]
+"301090" = [  301004, 301011, 301012, 301021, 007030, 007031 ]
+"301091" = [  002180, 002181, 002182, 002183, 002184, 002179, 002186, 002187, 002188, 002189
+               ]
+"301092" = [  001011, 001003, 002001, 301011, 301012, 301021, 007030, 007031, 033024 ]
+"301093" = [  301036, 007030, 007031 ]
+"301110" = [  301001, 001011, 002011, 002014, 002003 ]
+"301111" = [  301001, 001011, 002011, 002013, 002014, 002003 ]
+"301112" = [  001006, 002011, 002013, 002014, 002003 ]
+"301113" = [  008021, 301011, 301013 ]
+"301114" = [  301021, 007030, 007031, 007007, 033024 ]
+"301120" = [  301001, 001094, 002011, 301121 ]
+"301121" = [  008041, 301122, 301021, 007031, 007007 ]
+"301122" = [  301011, 301012, 201135, 202130, 004006, 202000, 201000 ]
+"301123" = [  102002, 008041, 001062, 301001, 001094, 002011, 001018, 001095, 025061, 025068,
+               001082, 001083, 001081, 002067, 002066, 002014, 025067, 025065, 025066, 002095,
+               002096, 002097, 002016, 002083, 002080, 002081, 001093, 002084, 002085, 002086,
+               002082, 008041, 301011 ]
+"301125" = [  001033, 001034, 025060, 001007, 002019, 001012 ]
+"302001" = [  010004, 010051, 010061, 010063 ]
+"302002" = [  010004, 007004, 010003, 010061, 010063 ]
+"302003" = [  011011, 011012, 012004, 012006, 013003, 020001, 020003, 020004, 020005 ]
+"302004" = [  020010, 008002, 020011, 020013, 020012, 020012, 020012 ]
+"302005" = [  008002, 020011, 020012, 020013 ]
+"302006" = [  010004, 010051, 010062, 010063 ]
+"302011" = [  302001, 302003, 302004 ]
+"302012" = [  302002, 302003, 302004 ]
+"302013" = [  302006, 302003, 101000, 031001, 302005 ]
+"302021" = [  022001, 022011, 022021 ]
+"302022" = [  022002, 022012, 022022 ]
+"302023" = [  022003, 022013, 022023 ]
+"302024" = [  302022, 101002, 302023 ]
+"302031" = [  302001, 010062, 007004, 010009 ]
+"302032" = [  007032, 012101, 012103, 013003 ]
+"302033" = [  007032, 020001 ]
+"302034" = [  007032, 013023 ]
+"302035" = [  302032, 302033, 302034, 007032, 302004, 101000, 031001, 302005 ]
+"302036" = [  105000, 031001, 008002, 020011, 020012, 020014, 020017 ]
+"302037" = [  020062, 013013, 012113 ]
+"302038" = [  020003, 004024, 020004, 020005 ]
+"302039" = [  004024, 014031 ]
+"302040" = [  007032, 102002, 004024, 013011 ]
+"302041" = [  007032, 004024, 004024, 012111, 004024, 004024, 012112 ]
+"302042" = [  007032, 002002, 008021, 004025, 011001, 011002, 008021, 103002, 004025, 011043,
+               011041 ]
+"302043" = [  302038, 101002, 302039, 302040, 302041, 302042, 007032 ]
+"302044" = [  004024, 002004, 013033 ]
+"302045" = [  004024, 014002, 014004, 014016, 014028, 014029, 014030 ]
+"302046" = [  004024, 004024, 012049 ]
+"302047" = [  102003, 008002, 020054 ]
+"302048" = [  005021, 007021, 020012, 005021, 007021 ]
+"302049" = [  008002, 020011, 020013, 020012, 020012, 020012, 008002 ]
+"302050" = [  008041, 005021, 007005, 202130, 006021, 202000, 008041, 201131, 202129, 002115,
+               010004, 002115, 013003, 202000, 201000, 002115, 011001, 011002, 002115, 102002,
+               012101, 004024, 002115, 012103, 012102, 101003, 020012, 020011, 020013, 101002,
+               020003 ]
+"302051" = [  010004, 010051, 007004, 010003, 012004, 012051, 012016, 012017, 013004, 102004,
+               008051, 008020 ]
+"302052" = [  007032, 007033, 012101, 002039, 012102, 012103, 013003 ]
+"302053" = [  007032, 007033, 020001 ]
+"302054" = [  302052, 302053, 007033, 302034, 007032, 302004, 101000, 031001, 302005 ]
+"302055" = [  020031, 020032, 020033, 020034, 020035, 020036, 020037, 020038 ]
+"302056" = [  002038, 007063, 022043, 007063 ]
+"302057" = [  302056, 302021, 302024 ]
+"302058" = [  007032, 007033, 004024, 004024, 012111, 004024, 004024, 012112 ]
+"302059" = [  007032, 007033, 002002, 008021, 004025, 011001, 011002, 008021, 103002, 004025,
+               011043, 011041 ]
+"302060" = [  302038, 302040, 302058, 302059 ]
+"302062" = [  302001, 302052, 302053, 007033, 101000, 031000, 302034, 007032, 101000, 031001,
+               302005, 008002, 101000, 031000, 302055, 101000, 031000, 302056, 101000, 031000,
+               302021, 101000, 031000, 302024 ]
+"302063" = [  302038, 101000, 031000, 302040, 101000, 031000, 302058, 302059 ]
+"302066" = [  020023, 020024, 020027, 020054, 020023, 020027, 020054, 020025, 020026, 020027,
+               020040, 020066, 020027, 020021, 020067, 020027 ]
+"302069" = [  007032, 007033, 033041, 020001 ]
+"302070" = [  007032, 007033, 011001, 011002, 011043, 011041, 011016, 011017 ]
+"302071" = [  007032, 007033, 008021, 004025, 011001, 011002, 008021, 103002, 004025, 011043,
+               011041, 004025, 011016, 011017 ]
+"302072" = [  007032, 007033, 012101, 012103, 013003 ]
+"302073" = [  020010, 105004, 008002, 020011, 020012, 033041, 020013 ]
+"302074" = [  020003, 004025, 020004, 020005 ]
+"302075" = [  008021, 004025, 013055, 013058, 008021 ]
+"302076" = [  020021, 020022, 026020, 020023, 020024, 020025, 020026 ]
+"302077" = [  007032, 007033, 004025, 012111, 012112, 007032, 004025, 012112 ]
+"302078" = [  002176, 020062, 002177, 013013 ]
+"302079" = [  007032, 002175, 002178, 004025, 013011 ]
+"302080" = [  002185, 004025, 013033 ]
+"302081" = [  004025, 014031 ]
+"302082" = [  004025, 014002, 014004, 014016, 014028, 014029, 014030 ]
+"302083" = [  004025, 008023, 010004, 011001, 011002, 012101, 013003, 008023 ]
+"303001" = [  007003, 011001, 011002 ]
+"303002" = [  007004, 011001, 011002 ]
+"303003" = [  007004, 010003, 012001, 012003 ]
+"303004" = [  007004, 010003, 012001, 012003, 011001, 011002 ]
+"303011" = [  007003, 008001, 011001, 011002 ]
+"303012" = [  007004, 008001, 011001, 011002 ]
+"303013" = [  007004, 008001, 010003, 012001, 013003, 011001, 011002 ]
+"303014" = [  007004, 008001, 010003, 012001, 012003, 011001, 011002 ]
+"303021" = [  007004, 007004, 204007, 031021 ]
+"303022" = [  303021, 010003, 204000 ]
+"303023" = [  303021, 012001, 204000 ]
+"303024" = [  303021, 013016, 204000 ]
+"303025" = [  002025, 204007, 031021, 012063, 204000 ]
+"303026" = [  007004, 008003, 204007, 031021, 012001, 204000 ]
+"303027" = [  007004, 204007, 031021, 010003, 204000 ]
+"303031" = [  007004, 008003, 007021, 007022, 008012, 012061 ]
+"303032" = [  020011, 020016 ]
+"303033" = [  020010, 020016 ]
+"303040" = [  008041, 004025, 004026, 301021, 301122, 201131, 202129, 025069, 007004, 013003,
+               202000, 201000, 002013, 012101, 010009, 102002, 008040, 035035 ]
+"303041" = [  002152, 002023, 007004, 011001, 011002, 002153, 002154, 012071 ]
+"303050" = [  004086, 008042, 007004, 005015, 006015, 011001, 011002 ]
+"303051" = [  004086, 008042, 007004, 005015, 006015, 011061, 011062 ]
+"303052" = [  004086, 008042, 007009, 005015, 006015, 011001, 011002 ]
+"303053" = [  004086, 008042, 007009, 005015, 006015, 011061, 011062 ]
+"303054" = [  004086, 008042, 007004, 010009, 005015, 006015, 012101, 012103, 011001, 011002
+               ]
+"304001" = [  008003, 010004, 012001, 011001, 011002 ]
+"304002" = [  008003, 010004, 011001, 011002 ]
+"304003" = [  008003, 012001 ]
+"304004" = [  008003, 010004, 020010, 012001 ]
+"304005" = [  002024, 007004, 007004, 013003 ]
+"304006" = [  014001, 014001, 014003 ]
+"304011" = [  002163, 002164, 008012, 007024, 002057, 008021, 004001, 004002, 004003, 004004,
+               008021, 004024, 110004, 008021, 004004, 004005, 004006, 008021, 004004, 004005,
+               004006, 011001, 011002, 103010, 002163, 007004, 012001 ]
+"304030" = [  027031, 028031, 010031 ]
+"304031" = [  001041, 001042, 001043 ]
+"304032" = [  002153, 002154, 020081, 020082, 020012 ]
+"304033" = [  002152, 002166, 002167, 002153, 002154, 012075, 012076, 012063 ]
+"304034" = [  102004, 027001, 028001, 007022, 005043, 020010, 020016, 033003, 010040 ]
+"304035" = [  002153, 002154, 012063, 008001, 012063, 008001, 012063, 008001, 008003, 012063,
+               008003, 012063, 008003, 012063, 008003 ]
+"304036" = [  020082, 008012, 020082, 008012, 020081, 008003, 020081, 008003, 020081, 008003,
+               020081, 008003 ]
+"304037" = [  002153, 002154, 012063, 008011, 012063, 008011, 012063, 008011, 008003, 012063,
+               008003, 012063, 008003, 012063, 008003 ]
+"305003" = [  301012, 004065, 101000, 031001, 305001 ]
+"305006" = [  013072, 013082, 013019, 012001, 013073, 013060 ]
+"305007" = [  301029, 301012, 004065, 101000, 031001, 305006 ]
+"305008" = [  305006, 012030 ]
+"305009" = [  301029, 301012, 004065, 101000, 031001, 305008 ]
+"305011" = [  301029, 301012, 004065, 101000, 031001, 305010 ]
+"305018" = [  301029, 301012, 004065, 103000, 031001, 305008, 305016, 305017 ]
+"306001" = [  002032, 102000, 031001, 007062, 022042 ]
+"306002" = [  002031, 022004, 022031 ]
+"306003" = [  002002, 011011, 011012, 012004 ]
+"306004" = [  002032, 002033, 103000, 031001, 007062, 022043, 022062 ]
+"306005" = [  002031, 103000, 031001, 007062, 022004, 022031 ]
+"306006" = [  306003, 306002, 022063 ]
+"306007" = [  001012, 001014, 306008, 004024, 027003, 028003 ]
+"306008" = [  002034, 002035, 002036 ]
+"306019" = [  001075, 301011, 301012, 022042, 022120, 022121, 004015, 004065 ]
+"306020" = [  306024, 102006, 022038, 022039 ]
+"306021" = [  001075, 301011, 301012, 022122, 022123, 012001, 303002 ]
+"306022" = [  001075, 301011, 301012, 022038, 022039 ]
+"306023" = [  001015, 301023, 301011, 301012, 022038, 022039, 022120, 022121 ]
+"306024" = [  001075, 301011, 301012, 022042, 022120, 022121, 004025, 004015 ]
+"306025" = [  306019, 102006, 022038, 022039 ]
+"307001" = [  301031, 302011 ]
+"307002" = [  301032, 302011 ]
+"307003" = [  307001, 101000, 031001, 302005 ]
+"307004" = [  307002, 101000, 031001, 302005 ]
+"307005" = [  307001, 101004, 302005 ]
+"307006" = [  307002, 101004, 302005 ]
+"307007" = [  301031, 302012 ]
+"307008" = [  301032, 302012 ]
+"307009" = [  301031, 302013 ]
+"307011" = [  001063, 002001, 301011, 301012, 301024, 007006, 011001, 011016, 011017, 011002,
+               011041, 007006, 012001, 012003, 010052, 020009 ]
+"307012" = [  103000, 031001, 008023, 005021, 020001 ]
+"307013" = [  106000, 031001, 001064, 008014, 020061, 008014, 020061, 020018 ]
+"307014" = [  101000, 031001, 020019 ]
+"307015" = [  101000, 031001, 302005, 020002 ]
+"307016" = [  101000, 031001, 020020 ]
+"307017" = [  101000, 031001, 011070 ]
+"307018" = [  008016, 102000, 031001, 008017, 301012, 104000, 031001, 007006, 011001, 011002,
+               011041, 020009, 101000, 031001, 020001, 307014 ]
+"307020" = [  307011, 307014, 307016 ]
+"307021" = [  307011, 307012, 307013, 307014, 307015, 307016, 307017, 307018, 307015 ]
+"307022" = [  001015, 301011, 301012, 301022, 008021, 004025, 010004, 012001, 013003, 033038,
+               008022, 106025, 002020, 001050, 005021, 007021, 015031, 015032, 008060, 015033,
+               015034, 008060, 015033, 015034, 015035, 201131, 202129, 013016, 202000, 201000,
+               015011 ]
+"307030" = [  015001, 015002 ]
+"307031" = [  008022, 008023, 015001, 008023, 015001, 008023, 015002 ]
+"307041" = [  301001, 001015, 301022, 301011, 301012, 301070, 307030 ]
+"307042" = [  301001, 001015, 301022, 301011, 301012, 008021, 004025, 301070, 307031 ]
+"307043" = [  301001, 001015, 301024, 301011, 301012, 301074, 307030 ]
+"307045" = [  001063, 008079, 002001, 301011, 301012, 301024, 007032, 011001, 011016, 011017,
+               008054, 011083, 011084, 011002, 008054, 011085, 011086, 011041, 008054, 007032,
+               012023, 012024, 007032, 010052, 020009 ]
+"307046" = [  020060, 102000, 031001, 005021, 020059 ]
+"307047" = [  105000, 031001, 008002, 020011, 020012, 020013, 020092, 020002, 020091 ]
+"307048" = [  008016, 102000, 031001, 008017, 301012, 112000, 031000, 007032, 011001, 008054,
+               011083, 011084, 011002, 008054, 011085, 011086, 011041, 008054, 007032, 020009,
+               101000, 031000, 020060, 307014, 307047 ]
+"307049" = [  102000, 031000, 022043, 022021 ]
+"307050" = [  101000, 031000, 020085, 102000, 031001, 001064, 020085, 105000, 031001, 001064,
+               020086, 020087, 020088, 020089 ]
+"307052" = [  001063, 008039, 301011, 301012, 008079, 008039, 301011, 301012, 008039, 301011,
+               301012, 301024 ]
+"307053" = [  007032, 011001, 008054, 011083, 011084, 011002, 008054, 011085, 011086, 011041,
+               008054, 007032, 020009, 020060, 307014, 307047 ]
+"307054" = [  007032, 008039, 004003, 004004, 008023, 012023, 008039, 004003, 004004, 008023,
+               012023, 008023, 007032 ]
+"307055" = [  033045, 008016, 008039, 004003, 301012, 008039, 004003, 301012, 307053 ]
+"307056" = [  307052, 307053, 307054, 101000, 031001, 307055 ]
+"307059" = [  307045, 307046, 307013, 307014, 307047, 307016, 307017, 307049, 307050, 101000,
+               031001, 307048 ]
+"307060" = [  007061, 012030 ]
+"307061" = [  301031, 101005, 307060 ]
+"307062" = [  301032, 101005, 307060 ]
+"307063" = [  007061, 012130 ]
+"307071" = [  301090, 004074, 004023, 008023, 010004, 010051, 007004, 010009, 007032, 012101,
+               002051, 004051, 012118, 004052, 012119, 013004, 008023, 012151, 007032, 102005,
+               008050, 008020, 014032, 014033, 008050, 008020, 102018, 008052, 008022, 007032,
+               008053, 004003, 012152, 008053, 004003, 012153, 008053, 004003, 008023, 012101,
+               008053, 004003, 008023, 012101, 008023, 007032, 002002, 008053, 004003, 011046,
+               008053, 004003, 004004, 004023, 007032, 013060, 013051, 004053, 008050, 008020,
+               102006, 008052, 008022, 008053, 004003, 013052, 007032 ]
+"307072" = [  004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010004, 010051,
+               007004, 010009, 007032, 012101, 002051, 004051, 012118, 004052, 012119, 013004,
+               012151, 007032, 014032, 008023, 004001, 004001, 004002, 004003, 004004, 004022,
+               007032, 008023, 013060, 004053, 008023, 102008, 008050, 008020 ]
+"307073" = [  307071, 307072 ]
+"307080" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 302043, 302044,
+               101002, 302045, 302046 ]
+"307081" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012122, 013056,
+               013057, 020101, 020102, 020103, 020104, 020105, 020106, 020107, 020108, 302043,
+               302044, 101002, 302045, 302046 ]
+"307082" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012121, 012122,
+               302043, 302044, 101002, 302045, 302046 ]
+"307083" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012122, 302043,
+               302044, 101002, 302045, 302046 ]
+"307084" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 020055, 101000,
+               031001, 205001, 302043, 302044, 101002, 302045, 302046 ]
+"307086" = [  301090, 302031, 302035, 302036, 008002, 302037, 302066, 302043, 302044, 101002,
+               302045 ]
+"307090" = [  301092, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 302043, 302044,
+               101002, 302045, 302046 ]
+"307091" = [  301089, 301090, 008010, 301091, 302001, 007004, 010009, 302072, 103000, 031000,
+               101005, 307063, 007061, 101000, 031000, 302069, 007032, 007033, 105000, 031000,
+               020031, 020032, 002038, 022043, 302021, 101000, 031000, 302078, 101000, 031000,
+               302073, 101000, 031000, 302074, 101000, 031000, 302075, 102000, 031000, 004025,
+               302076, 302071, 302077, 007033, 101000, 031000, 302079, 007032, 101000, 031000,
+               302080, 101000, 031000, 302081, 101000, 031000, 302082, 102000, 031000, 004025,
+               013059, 101000, 031000, 302083, 033005, 033006 ]
+"308001" = [  301033, 302011, 022042 ]
+"308002" = [  301034, 302011, 022042 ]
+"308003" = [  301035, 302011, 022042 ]
+"308004" = [  301036, 302011, 022042 ]
+"308005" = [  308004, 302024 ]
+"308006" = [  010004, 010061, 010063, 011001, 011002, 012004, 013003, 022042 ]
+"308007" = [  301055, 302011, 007062, 022042 ]
+"308008" = [  001003, 001020, 001005, 002001, 002036, 002149, 301011, 301012, 008021, 301011,
+               301012, 008021, 301021, 027004, 028004, 007030, 001051, 002148, 001012, 001014,
+               002040, 033022, 033023, 033027, 022063, 302021, 302022, 302023, 008081, 025026,
+               008081, 025026, 008081, 025026, 008081, 002034, 022060, 007070, 002190, 025086,
+               002035, 002168, 020031, 002038, 306004, 002030, 306005, 007031, 008081, 012064,
+               302001, 008081, 007032, 007033, 012101, 012103, 013003, 007032, 007033, 008082,
+               007033, 002169, 002002, 008021, 004025, 011001, 011002, 008021, 004025, 011043,
+               011041, 008082, 007033, 007032, 004024, 013011, 007032, 008021, 004024, 014021,
+               008021, 025028, 025028, 025028 ]
+"308009" = [  301093, 302001, 302054, 008002, 302055, 302057, 302060 ]
+"308010" = [  001011, 113000, 031001, 301011, 301012, 301021, 004080, 022049, 004080, 022059,
+               004080, 022005, 002042, 022032, 002042, 004080 ]
+"308011" = [  001011, 002001, 301011, 301012, 301023, 007030, 007031, 004074, 004023, 008023,
+               010051, 007032, 007033, 012101, 013004, 007032, 007033, 302056, 008023, 004003,
+               004004, 004023, 007032, 013060, 013051, 004053, 007032 ]
+"308012" = [  004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010051, 007032,
+               007033, 012101, 013002, 007032, 007033, 302056, 008023, 004001, 004001, 004002,
+               004003, 004004, 004022, 007032, 008023, 013060, 004053, 008023 ]
+"308013" = [  308011, 308012 ]
+"308015" = [  001003, 001020, 001005, 001011, 001205, 001001, 001002, 002044, 002045, 301011,
+               301012, 301021, 022063, 105002, 002098, 022070, 022071, 022073, 022074, 002098,
+               022076, 022077, 022094, 025043, 022078, 121000, 031001, 002098, 022082, 022084,
+               116000, 031001, 022080, 022085, 022086, 022087, 022088, 022089, 103000, 031001,
+               022090, 022186, 022187, 103000, 031001, 022092, 022186, 022187, 002098 ]
+"308016" = [  001003, 001020, 001005, 001011, 001205, 001001, 001002, 002044, 002045, 301011,
+               301012, 301021, 022063, 105002, 002098, 022070, 022072, 022073, 022075, 002098,
+               022076, 022077, 022094, 025044, 022079, 121000, 031001, 002098, 022083, 022084,
+               116000, 031001, 022081, 022085, 022086, 022087, 022088, 022089, 103000, 031001,
+               022091, 022186, 022187, 103000, 031001, 022093, 022186, 022187, 002098 ]
+"309001" = [  301037, 101000, 031001, 303011 ]
+"309002" = [  301038, 101000, 031001, 303011 ]
+"309003" = [  301037, 101000, 031001, 303012 ]
+"309004" = [  301038, 101000, 031001, 303012 ]
+"309005" = [  301037, 302004, 101000, 031001, 303013 ]
+"309006" = [  301038, 302004, 101000, 031001, 303013 ]
+"309007" = [  301037, 302004, 101000, 031001, 303014 ]
+"309008" = [  301038, 302004, 101000, 031001, 303014 ]
+"309011" = [  301039, 101000, 031001, 303011 ]
+"309012" = [  301039, 101000, 031001, 303012 ]
+"309013" = [  301039, 302004, 101000, 031001, 303013 ]
+"309014" = [  301039, 302004, 101000, 031001, 303014 ]
+"309015" = [  301040, 101000, 031001, 303011 ]
+"309016" = [  301040, 101000, 031001, 303012 ]
+"309017" = [  301040, 302004, 101000, 031001, 303013 ]
+"309018" = [  301040, 302004, 101000, 031001, 303014 ]
+"309019" = [  301031, 002003, 101000, 031001, 303011 ]
+"309020" = [  301031, 002003, 104000, 031001, 007003, 011003, 011004, 011005 ]
+"309030" = [  015004, 015005, 104000, 031001, 004015, 008006, 007004, 015003 ]
+"309031" = [  015004, 015005, 104000, 031001, 004025, 008006, 007004, 015003 ]
+"309040" = [  301075, 301076, 309030 ]
+"309042" = [  307042, 301075, 301076, 309030 ]
+"309050" = [  301110, 301113, 301114, 101000, 031002, 303050, 101000, 031001, 303051 ]
+"309051" = [  301110, 301113, 301114, 101000, 031002, 303052, 101000, 031001, 303053 ]
+"309052" = [  301111, 301113, 301114, 302049, 022043, 101000, 031002, 303054, 101000, 031001,
+               303051 ]
+"309053" = [  301112, 301113, 301114, 101000, 031002, 303054, 101000, 031001, 303051 ]
+"309054" = [  301001, 001011, 301011, 301012, 301021, 007030, 007031, 007007, 004023, 004059,
+               115000, 031001, 008001, 008023, 007004, 010009, 012101, 012103, 008023, 011001,
+               011002, 008023, 011019, 008050, 008020, 008050, 008020 ]
+"309060" = [  301123, 301121, 302050, 303040 ]
+"309061" = [  301120, 008041, 301122, 201131, 202129, 025069, 007004, 202000, 201000, 033007,
+               033035, 033015, 013009, 033007, 033035, 033015, 002013, 012101, 033007, 033035,
+               033015 ]
+"309062" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015, 033007 ]
+"309063" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015, 033007 ]
+"309064" = [  301120, 008041, 301122, 201131, 202129, 104002, 025069, 007004, 033035, 033015,
+               013003, 033035, 033015, 202000, 201000, 104002, 002013, 012101, 033035, 033015,
+               012103, 033035, 033015, 010009, 033035, 033015 ]
+"309065" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015 ]
+"309066" = [  301120, 008041, 301122, 008040, 201131, 202129, 025069, 007004, 013003, 202000,
+               201000, 002013, 012101, 012103, 010009, 010007, 011002, 011001 ]
+"310001" = [  301042, 303031, 303032, 101026, 303025 ]
+"310002" = [  301042, 303031, 303032, 101009, 303023 ]
+"310003" = [  301042, 303031, 303032, 101006, 303023 ]
+"310004" = [  301042, 303031, 303032, 101003, 303024 ]
+"310005" = [  301042, 303031, 303033, 101000, 031001, 303025 ]
+"310006" = [  301042, 303031, 303033, 101000, 031001, 303023 ]
+"310007" = [  301042, 303031, 303033, 101000, 031001, 303024 ]
+"310008" = [  310011, 101019, 310012, 002150, 025079, 025080, 033032, 014045 ]
+"310009" = [  310011, 101015, 310012 ]
+"310010" = [  310011, 101005, 310012 ]
+"310011" = [  008070, 001033, 001034, 008070, 001033, 001034, 001007, 002048, 005040, 025075,
+               201133, 005041, 201000, 005043, 025070, 033030, 033031, 004001, 004002, 004003,
+               004004, 004005, 202131, 201138, 004006, 201000, 202000, 005001, 006001, 202126,
+               007001, 202000, 007024, 005021, 007025, 005022, 033033, 002151, 012064, 002151,
+               012064, 002151, 012064, 002151, 012064 ]
+"310012" = [  002150, 025076, 025077, 025078, 033032, 201132, 202129, 012063, 202000, 201000
+               ]
+"310013" = [  001007, 005040, 004001, 004002, 004003, 004004, 004005, 004006, 005001, 006001,
+               007025, 005043, 025085, 201131, 202129, 002150, 008023, 008072, 014027, 008072,
+               014027, 002150, 008023, 008072, 014027, 008072, 014027, 002150, 008023, 008072,
+               014027, 008072, 014027, 202000, 201000, 201132, 202129, 002150, 008023, 008072,
+               012063, 008072, 012063, 002150, 008023, 008072, 012063, 008072, 012063, 008023,
+               008072, 012063, 008072, 012063, 002150, 008023, 008072, 012063, 008072, 012063,
+               202000, 201000 ]
+"310014" = [  301072, 303041, 304011 ]
+"310015" = [  301072, 007024, 010002, 303041, 101003, 304032, 002152, 002024, 007004, 007004,
+               013003, 101003, 304033 ]
+"310016" = [  301072, 007024, 010002, 303041, 101012, 304032, 002152, 002024, 007004, 007004,
+               013003, 101012, 304033 ]
+"310019" = [  001007, 002019, 301011, 301013, 301023, 007025, 008021, 007025, 008021, 007025,
+               008021, 008029, 005040, 008075, 008003, 010004, 008003, 207002, 015001, 207000,
+               033070, 015030, 207002, 020081, 207000, 008003, 033042, 007004, 207002, 015001,
+               207000, 008003, 113021, 007004, 007004, 207002, 008021, 015005, 008021, 015005,
+               033007, 207000, 008026, 101020, 025143, 008026, 008043, 109015, 007004, 008090,
+               207006, 015008, 207000, 008090, 207002, 033007, 207000, 008043, 033071, 108008,
+               202124, 201107, 002071, 201000, 202000, 207002, 020081, 207000 ]
+"310020" = [  310022, 301011, 301013, 301021, 304034, 310021 ]
+"310021" = [  108000, 031001, 201131, 202129, 007004, 007004, 202000, 201000, 015020, 010002
+               ]
+"310022" = [  001007, 002019, 001033, 002172 ]
+"310023" = [  301072, 030021, 030022, 008012, 007024, 007025, 010002, 101012, 304032, 105002,
+               002152, 002024, 007004, 007004, 013003, 101012, 304033 ]
+"310024" = [  301072, 030021, 030022, 008012, 007024, 007025, 010002, 101003, 304032, 105002,
+               002152, 002024, 007004, 007004, 013003, 101003, 304033 ]
+"310025" = [  001007, 008021, 004001, 004002, 004003, 004004, 004005, 201138, 202131, 004006,
+               202000, 201000, 201132, 005041, 201000, 201129, 005043, 201000, 005002, 006002,
+               013040, 020029, 104024, 005042, 012163, 021083, 021084, 115003, 004001, 004002,
+               004003, 201142, 202131, 004026, 202000, 201000, 005001, 006001, 201138, 202129,
+               007001, 202000, 201000, 008021, 004001, 004002, 004003, 004004, 004005, 005040,
+               101003, 012070, 025054, 101004, 025055, 008007, 104028, 005002, 006002, 002111,
+               005021 ]
+"310026" = [  310022, 025060, 008021, 301011, 301012, 201138, 202131, 004006, 202000, 201000,
+               033039, 033007, 304030, 304031, 002020, 001050, 202127, 304030, 202000, 304031,
+               201133, 202131, 004016, 202000, 201000, 301021, 304030, 010035, 005021, 010036,
+               113000, 031002, 301021, 005021, 108000, 031001, 002121, 007040, 015037, 008023,
+               201125, 015037, 201000, 008023, 033007, 108000, 031002, 007007, 015036, 008023,
+               201123, 015036, 201000, 008023, 033007, 116000, 031002, 007009, 010004, 012001,
+               013001, 008023, 201120, 010004, 201000, 201122, 012001, 201000, 201123, 013001,
+               201000, 008023, 033007, 008003, 007009, 010004, 008023, 201120, 010004, 201000,
+               008023, 033007 ]
+"310027" = [  301071, 301011, 301013, 301021, 030021, 030022, 010002, 304036, 002152, 002167,
+               101011, 304035 ]
+"310028" = [  301071, 301011, 301013, 301021, 030021, 030022, 010002, 304036, 002152, 002167,
+               101011, 304037 ]
+"310029" = [  110000, 031001, 201138, 202130, 007004, 007004, 202000, 201000, 015020, 010002,
+               012101, 013098 ]
+"310030" = [  310022, 301011, 301013, 301021, 304034, 310029 ]
+"310050" = [  310051, 310052, 101000, 031002, 310053, 101004, 310054, 020010, 310052, 101015,
+               310053, 310052, 101005, 310053 ]
+"310051" = [  001007, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 007025, 005022, 102009, 002151, 012064 ]
+"310052" = [  002019, 301011, 301012, 202131, 201138, 004006, 201000, 202000, 301021, 007024,
+               005021, 005043 ]
+"310053" = [  201134, 005042, 201000, 025076, 033032, 012163 ]
+"310054" = [  201134, 005042, 201000, 025076, 033032, 201131, 202129, 102002, 008023, 014027,
+               008023, 202000, 201000 ]
+"310055" = [  310051, 310052, 102020, 025076, 025052, 101000, 031002, 025050 ]
+"311001" = [  301051, 007002, 012001, 011001, 011002, 011031, 011032, 011033, 020041 ]
+"311002" = [  301065, 301066, 311003, 311004 ]
+"311003" = [  010070, 011001, 011002, 012001, 013002 ]
+"311004" = [  101000, 031000, 011034, 101000, 031000, 011035, 101000, 031000, 011075, 101000,
+               031000, 011076, 101000, 031000, 033025, 101000, 031000, 033026 ]
+"311005" = [  001008, 001023, 301021, 301011, 301013, 007010, 008009, 011001, 011002, 011031,
+               011036, 012101, 033025 ]
+"311006" = [  007010, 011001, 011002, 002064, 012101, 012103 ]
+"311007" = [  007010, 301021, 011001, 011002, 002064, 012101, 012103 ]
+"311008" = [  001008, 301011, 301013, 301021, 008004, 101000, 031001, 311006 ]
+"311009" = [  001008, 301011, 301013, 301021, 008004, 101000, 031001, 311007 ]
+"312001" = [  301043, 304001 ]
+"312002" = [  301043, 304002 ]
+"312003" = [  301042, 304003 ]
+"312004" = [  301042, 304004 ]
+"312005" = [  301042, 020014 ]
+"312006" = [  301044, 304005 ]
+"312007" = [  301042, 304006 ]
+"312010" = [  001007, 005040, 002021, 005041, 004001, 004043 ]
+"312011" = [  202131, 201149, 004006, 201000, 202126, 010002, 202000, 005043, 005053 ]
+"312012" = [  202129, 201132, 101019, 012063, 201000, 202000 ]
+"312013" = [  005042, 202129, 201135, 012063, 201000, 202000 ]
+"312014" = [  312010, 312011, 105056, 301023, 005042, 005052, 312012, 312013 ]
+"312015" = [  109011, 301023, 005042, 005052, 202129, 201132, 101004, 012063, 202000, 201000
+               ]
+"312016" = [  312010, 312011, 312015 ]
+"312017" = [  109008, 301023, 005042, 005052, 202129, 201132, 101003, 012063, 202000, 201000
+               ]
+"312018" = [  312010, 312011, 312017 ]
+"312019" = [  301047, 301048, 015015, 029002, 021076, 106012, 201129, 006030, 201000, 102012,
+               005030, 021075, 021066 ]
+"312020" = [  301047, 301048, 015015, 029002, 021076, 104012, 006030, 102012, 005030, 021075,
+               021066 ]
+"312021" = [  301047, 101003, 301049, 011012, 011011, 021067 ]
+"312022" = [  301047, 008022, 011012, 011050, 022070, 022026, 312041, 010050, 021068, 021071,
+               021072, 021073, 312042, 021062, 015011 ]
+"312023" = [  301047, 103003, 008022, 012061, 022050, 021069, 021085 ]
+"312024" = [  312020, 008060, 008022, 008060, 008022, 025014, 022101, 022097, 022098, 022099,
+               022100 ]
+"312025" = [  312019, 008060, 008022, 008060, 008022, 025014, 022101, 022097, 022098, 022099,
+               022100 ]
+"312026" = [  301046, 301011, 301013, 301023, 312031, 101004, 312030, 021110, 301023, 321027,
+               021111, 301023, 321027, 021112, 301023, 321027, 021113, 301023, 321027 ]
+"312027" = [  301047, 105009, 301023, 007021, 012061, 007021, 012061, 021085, 021070 ]
+"312028" = [  301046, 301011, 301013, 301023, 008025, 201136, 004006, 201000, 312031, 312032,
+               101004, 312030, 101002, 312033, 021110, 301023, 321028, 021111, 301023, 321028,
+               021112, 301023, 321028, 021113, 301023, 321028 ]
+"312030" = [  201130, 202129, 011012, 202000, 201000, 011052, 201135, 202130, 011011, 202000,
+               201000, 011053, 021104 ]
+"312031" = [  005034, 006034, 021109, 011081, 011082, 021101, 021102, 021103 ]
+"312032" = [  021120, 021121, 013055, 021122 ]
+"312033" = [  002104, 008022, 012063, 012065 ]
+"312041" = [  201141, 202130, 007001, 201000, 202000 ]
+"312042" = [  021077, 021078, 021079, 021080, 021081, 021082 ]
+"312045" = [  001007, 002019, 001096, 025061, 005040, 301011, 301013, 301021, 007002, 012180,
+               012181, 012182, 012183, 012184, 012185, 002174, 021086, 012186, 021087, 012187,
+               033043 ]
+"312050" = [  001007, 002019, 001096, 025061, 005040, 301011, 301013, 301021, 007025, 005022,
+               010080, 027080, 008003, 007004, 013093, 008003, 201131, 202129, 007004, 007004,
+               202000, 201000, 013095 ]
+"312051" = [  001007, 002019, 001096, 025061, 005040, 008075, 301011, 301013, 301021, 001012,
+               201131, 001013, 201000, 010032, 010033, 010034, 007002, 008012, 025110, 025111,
+               025102, 002104, 025103, 025104, 025105, 025106, 025107, 025108, 002111, 002121,
+               002026, 002027, 021130, 021131, 021132, 021133, 021064, 025014, 021134, 107018,
+               005030, 105024, 201130, 006030, 201000, 021135, 021136, 033044 ]
+"312052" = [  001007, 002019, 001096, 025061, 005040, 025120, 025121, 025124, 025125, 025122,
+               025123, 301011, 301013, 301021, 007002, 002119, 033047, 010081, 010082, 010083,
+               010084, 002116, 002117, 002118, 002156, 002157, 014055, 022150, 022151, 022152,
+               022153, 022154, 022155, 022156, 022157, 022158, 022159, 021137, 021138, 021139,
+               021140, 021141, 021142, 010085, 010086, 010087, 010088, 010089, 010090, 010091,
+               010092, 010093, 011002, 025126, 025127, 025128, 025129, 025130, 025131, 025132,
+               025133, 025134, 025135, 025136, 025137, 013096, 013097, 011095, 011096, 012188,
+               012189, 002158, 002159, 033052, 033053, 021143, 021144 ]
+"312053" = [  001007, 002019, 001096, 025061, 005040, 008075, 301011, 301013, 301021, 001012,
+               201131, 001013, 201000, 010032, 010033, 010034, 007002, 008012, 025110, 025111,
+               025102, 002104, 025103, 025104, 025105, 025106, 025107, 025108, 011001, 011002,
+               022160, 025138, 201130, 202129, 022021, 202000, 201000, 033048, 033049, 002026,
+               002027, 021130, 021131, 021132, 021133, 025014, 106036, 005030, 104024, 201130,
+               006030, 201000, 022161, 033044 ]
+"312055" = [  005033, 005040, 006034, 010095, 021157 ]
+"312056" = [  025060, 001032, 011082, 011081, 020095, 020096, 021155, 201133, 021101, 021102,
+               201000 ]
+"312057" = [  201130, 202129, 011012, 202000, 201000, 201131, 202129, 011011, 202000, 201000,
+               021156, 021104 ]
+"312058" = [  301125, 301011, 301013, 301021, 312055, 021150, 101003, 321030 ]
+"312059" = [  312056, 101000, 031001, 312057 ]
+"312060" = [  025060, 025062, 040001, 040002, 021062, 021151, 021152, 021153, 021154, 021062,
+               021062, 040003, 040004, 040005, 040006, 040007, 020065, 040008, 040009, 040010
+               ]
+"312061" = [  312058, 312060, 312059 ]
+"312070" = [  001007, 002019, 001144, 001124, 030010, 301011, 301013, 301021, 007012, 015012,
+               012165, 012166, 012167, 012168, 027010, 028010, 002099, 013048, 025081, 025082,
+               025083, 025084, 012080, 012081, 012082, 025174, 033028 ]
+"313009" = [  021001, 101000, 031001, 021001 ]
+"313010" = [  021036, 101000, 031001, 021036 ]
+"313031" = [  006002, 006012, 101000, 031002, 030001 ]
+"313032" = [  005002, 005012, 101000, 031002, 313031 ]
+"313041" = [  006002, 110000, 031001, 104000, 031001, 006012, 101000, 031012, 030001, 006012,
+               101000, 031001, 030001 ]
+"313042" = [  005002, 005012, 101000, 031002, 313041 ]
+"313043" = [  006002, 005002, 005012, 112000, 031001, 110000, 031001, 104000, 031001, 006012,
+               101000, 031011, 030001, 006012, 101000, 031001, 030001 ]
+"315001" = [  001011, 301011, 301012, 301023, 306001 ]
+"315002" = [  001011, 301011, 301012, 301023, 306004 ]
+"315003" = [  001087, 001085, 001086, 002036, 002148, 002149, 022055, 022056, 022067, 301011,
+               301012, 301021, 008080, 033050, 109000, 031002, 007065, 008080, 033050, 022045,
+               008080, 033050, 022064, 008080, 033050 ]
+"316001" = [  301011, 004004, 301023, 001021, 002041, 019001, 010051, 019002, 019003, 019004
+               ]
+"316002" = [  008021, 004001, 004002, 004003, 004004, 004005, 001033, 008021, 004001, 004002,
+               004003, 004004, 004005, 007002, 007002 ]
+"316003" = [  110000, 031001, 008011, 008007, 104000, 031001, 005002, 006002, 010002, 011002,
+               008007, 008011 ]
+"316004" = [  111000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               011031, 008007, 008011 ]
+"316005" = [  108000, 031001, 008005, 008007, 005002, 006002, 001026, 019001, 008007, 008005
+               ]
+"316006" = [  112000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               020011, 020012, 008007, 008011 ]
+"316007" = [  110000, 031001, 008011, 008007, 104000, 031001, 005002, 006002, 019005, 019006,
+               008007, 008011 ]
+"316008" = [  111000, 031001, 008001, 008007, 008023, 103000, 031001, 005002, 006002, 010002,
+               008023, 008007, 008001 ]
+"316009" = [  111000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               020041, 008007, 008011 ]
+"316010" = [  107000, 031001, 008011, 008007, 001022, 005002, 006002, 008007, 008011 ]
+"316011" = [  117000, 031001, 008011, 001022, 008007, 102000, 031001, 005002, 006002, 008021,
+               004001, 004002, 004003, 004004, 004005, 020090, 008021, 008007, 008011 ]
+"316020" = [  001023, 001025, 001027, 301011, 301012 ]
+"316021" = [  301023, 002041, 019001, 019007, 019005, 019006, 019008, 008005, 010004, 008005,
+               010004, 019007, 008005, 008021, 004075, 011040, 019007, 105004, 005021, 005021,
+               102002, 019003, 019004 ]
+"316022" = [  001032, 002041, 019001, 019010, 118000, 031001, 008021, 004014, 008005, 301023,
+               019005, 019006, 010004, 011041, 008021, 004075, 011040, 019008, 105004, 005021,
+               005021, 102002, 019003, 019004 ]
+"316026" = [  316020, 316021 ]
+"316030" = [  301014, 001037, 010064, 008019, 001062, 008019, 001065, 008019, 001062, 008019
+               ]
+"316031" = [  008021, 301011, 301012, 301027, 019005, 019006, 020028, 008021 ]
+"316032" = [  008021, 301011, 301012, 301027, 008021 ]
+"316033" = [  008021, 301011, 301012, 101000, 031001, 301027, 008021 ]
+"316034" = [  008079, 316030, 008011, 001022, 008007, 301023, 008007, 020090, 316031, 101000,
+               031000, 316032, 101000, 031001, 316033, 008011, 008079 ]
+"316035" = [  008079, 316030, 008011, 020023, 020021, 020008, 316031, 008011, 008079 ]
+"316036" = [  008079, 316030, 008011, 001027, 316031, 101000, 031000, 316032, 101000, 031001,
+               316033, 008011, 008079 ]
+"316037" = [  008079, 316030, 008011, 011031, 316031, 008011, 008079 ]
+"316038" = [  008079, 316030, 008011, 020041, 020021, 316031, 008011, 008079 ]
+"316039" = [  008079, 316030, 008011, 020024, 316031, 008011, 008079 ]
+"316040" = [  316030, 008079, 301014, 001037, 010064, 008079 ]
+"316050" = [  301001, 301011, 301012, 002160, 008005, 005002, 006002, 008005, 019100, 019005,
+               019006, 019101, 019102, 019103, 019104, 019105 ]
+"316052" = [  301005, 301011, 301012, 001007, 025150, 122000, 031001, 001027, 019150, 019106,
+               008005, 005002, 006002, 008005, 019107, 019005, 019006, 019108, 019109, 019110,
+               019111, 019112, 019113, 019114, 019115, 019116, 019117, 019118, 019119 ]
+"318001" = [  301025, 024011 ]
+"318003" = [  301026, 024005, 024004, 024021 ]
+"318004" = [  301025, 004023, 013011, 024005, 024004, 024022 ]
+"321001" = [  002101, 002114, 002105, 002106, 002107, 002121 ]
+"321003" = [  021051, 021014, 021017, 021030 ]
+"321004" = [  301031, 002003, 101000, 031001, 321003 ]
+"321005" = [  025004, 002121, 002122, 002123, 002124, 002125, 002126, 002127, 002128, 002129,
+               002130, 002131 ]
+"321006" = [  025001, 025002, 025003, 025005 ]
+"321007" = [  025009, 025010, 025011, 025012, 025013, 025015, 025016, 025017 ]
+"321008" = [  025006, 025007, 025008 ]
+"321009" = [  025018, 025019 ]
+"321010" = [  002101, 007002, 002102, 002103, 002104, 002105, 002106, 002107, 002108, 002109,
+               002110, 002132, 002133 ]
+"321011" = [  030031, 030032, 029002 ]
+"321012" = [  101000, 031001, 002135 ]
+"321021" = [  002003, 002101, 201130, 002106, 201000, 201132, 202130, 002121, 202000, 201000,
+               201133, 202129, 025001, 202000, 201000 ]
+"321022" = [  007007, 204001, 031021, 011001, 204000, 011002, 204001, 031021, 011006, 204000,
+               021030 ]
+"321023" = [  007007, 021091, 021030, 202129, 021014, 201129, 021017, 202000, 201000 ]
+"321024" = [  007007, 204001, 031021, 012007, 011006, 204000, 021030 ]
+"321025" = [  007007, 021091, 021030, 202129, 021014, 201129, 021017, 202000, 201000, 021092,
+               021030, 025092, 201129, 202129, 021017, 202000, 201000 ]
+"321026" = [  007007, 204001, 031021, 012007, 025091, 011071, 011072, 011073, 011074, 204000
+               ]
+"321027" = [  021118, 202129, 201132, 002112, 201000, 201131, 002111, 201000, 202000, 002104,
+               021105, 021106, 021107, 021114, 021115, 021116, 008018, 021117 ]
+"321028" = [  021118, 202129, 201132, 002112, 201000, 201131, 002111, 201000, 202000, 002104,
+               021123, 021106, 021107, 021114, 021115, 021116, 008018, 021117 ]
+"321030" = [  008085, 202129, 201131, 002111, 201000, 202000, 002134, 021062, 021063, 021158,
+               021159, 021160, 021161, 021162, 021163, 021164, 021165, 021166 ]
+"340001" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 033060, 033061, 033062, 033063, 033064, 033065, 101010, 340002, 101087,
+               340003, 002019, 025051, 101007, 340004 ]
+"340002" = [  025140, 025141, 025142 ]
+"340003" = [  104100, 201136, 005042, 201000, 014046 ]
+"340004" = [  005060, 005061, 025085, 105006, 005042, 025142, 014047, 025142, 014048 ]
+"340005" = [  001007, 002019, 001096, 025061, 005044, 005040, 001030, 301011, 301012, 004007,
+               005001, 006001, 008029, 008074, 008077, 040011, 025097, 025095, 025098, 025099,
+               021144, 025096, 040012, 040013, 021169, 022151, 022162, 022163, 025160, 025133,
+               022156, 022164, 022165, 022166, 021137, 021138, 022167, 021139, 021118, 021145,
+               021146, 021147, 022168, 022169, 022170, 025161, 025162, 022171, 022172, 022173,
+               022174, 021170, 021171, 022175, 021172, 021118, 021173, 021174, 021175, 102003,
+               002153, 012063, 013090, 013091, 007002, 011097, 011098, 007002, 011095, 011096,
+               010096, 010081, 010082, 010083, 010101, 025132, 025163, 025126, 025128, 025164,
+               010085, 010097, 010086, 010087, 010092, 010088, 010089, 010098, 010099, 010090,
+               010100, 010093, 025127, 040014 ]
+"340007" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 103003, 025140, 025141, 033060, 033061, 033062, 033063, 033064, 033065,
+               040020, 101010, 340002, 101087, 340003, 002019, 025051, 101007, 340004, 020081,
+               008029, 020083, 008029, 040018, 040019, 040021, 040022 ]
+"340008" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 103003, 025140, 025141, 033060, 033061, 033062, 033063, 033064, 033065,
+               040020, 101010, 340002, 104000, 031002, 201136, 005042, 201000, 014046, 002019,
+               025051, 101007, 340004, 020081, 008029, 020083, 008029, 040018, 040019, 040021,
+               040022 ]
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/1003.table b/definitions/bufr/tables/0/wmo/11/codetables/1003.table
new file mode 100644
index 0000000..ff4f928
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/1003.table
@@ -0,0 +1,8 @@
+0 0 ATARCTICA
+1 1 REGION I
+2 2 REGION II
+3 3 REGION III
+4 4 REGION IV
+5 5 REGION V
+6 6 REGION VI
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/10063.table b/definitions/bufr/tables/0/wmo/11/codetables/10063.table
new file mode 100644
index 0000000..13c6331
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/10063.table
@@ -0,0 +1,10 @@
+0 0 INCREASING, THEN DECREASING: ATMOSPHERIC PRESURE THE SAME OR"     HIGHER THAN 3 HOURS AGO (OR 24 HOURS AGO )
+1 1 INCREASING, THEN STEADY; OR INCREASING; THEN MORE SLOWLY
+2 2 INCREASING (STEADILY OR UNSTEADILY )
+3 3 DECREASING OR STEADY, THEN INCREASING; RAPIDLY
+4 4 STEADY; ATMOSPHERIC PRESSURE THE SAME AS 3 HOURS AGO (OR 24"    HOURS)
+5 5 DECREASING; THEN INCREASING; ATMOSPHERIC PRESSURE THE SAME O"    R LOWER THAN 3 HOURS AGO
+6 6 DECREASING, THEN STEADY; OR DECREASING, DECREASING MORE SLOW"    LY
+7 7 DECREASING (STEADILY OR UNSTEADELY )
+8 8 STEADY OR INCREASING, THEN DECREASING; OR DECREASING, THEN"    DECREASING MORE RAPIDLY
+15 15 MISSING
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/10064.table b/definitions/bufr/tables/0/wmo/11/codetables/10064.table
new file mode 100644
index 0000000..88ba38a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/10064.table
@@ -0,0 +1,4 @@
+0 0 SUBSONIC
+1 1 TRANSONIC
+2 2 SUPERSONIC
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/1007.table b/definitions/bufr/tables/0/wmo/11/codetables/1007.table
new file mode 100644
index 0000000..711e681
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/1007.table
@@ -0,0 +1,132 @@
+1 1 ERS 1
+2 2 ERS 2
+3 3 METOP-1
+4 4 METOP-2
+5 5 METOP-3
+20 20 SPOT1
+21 21 SPOT2
+22 22 SPOT3
+23 23 SPOT4
+40 40 OERSTED
+41 41 CHAMP
+42 42 TERRASAR-X
+50 50 METEOSAT 3
+51 51 METEOSAT 4
+52 52 METEOSAT 5
+53 53 METEOSAT 6
+54 54 METEOSAT 7
+55 55 METEOSAT 8
+56 56 METEOSAT 9
+57 57 METEOSAT 10
+58 58 METEOSAT 1
+59 59 METEOSAT 2
+60 60 ENVISAT
+70 70 METEOSAT 11
+120 120 ADEOS
+121 121 ADEOS II
+150 150 GMS 3
+151 151 GMS 4
+152 152 GMS 5
+171 171 MTSAT-1R
+172 172 MTSAT-2
+200 200 NOAA 8
+201 201 NOAA 9
+202 202 NOAA 10
+203 203 NOAA 11
+204 204 NOAA 12
+205 205 NOAA 14
+206 206 NOAA 15
+207 207 NOAA 16
+208 208 NOAA 17
+209 209 NOAA 18
+220 220 LANDSAT 5
+221 221 LANDSAT 4
+222 222 LANDSAT 7
+240 240 DMSP 7
+241 241 DMSP 8
+242 242 DMSP 9
+243 243 DMSP 10
+244 244 DMSP 11
+245 245 DMSP 12
+246 246 DMSP 13
+247 247 DMSP 14
+248 248 DMSP 15
+249 249 DMSP 16
+250 250 GOES 6
+251 251 GOES 7
+252 252 GOES 8
+253 253 GOES 9
+254 254 GOES 10
+255 255 GOES 11
+256 256 GOES 12
+257 257 GOES 13
+258 258 GOES 14
+259 259 GOES 15
+260 260 JASON-1
+261 261 JASON-2
+281 281 QUIKSCAT
+282 282 TRMM
+283 283 CORIOLIS
+285 285 DMSP17
+310 310 GOMS 1
+311 311 GOMS 2
+320 320 METEOR 2-21
+321 321 METEOR 3-5
+322 322 METEOR 3M-1
+323 323 METEOR 3M-2
+341 341 RESURS 01-4
+430 430 INSAT 1B
+431 431 INSAT 1C
+432 432 INSAT 1D
+450 450 INSAT 2A
+451 451 INSAT 2B
+452 452 INSAT 2E
+470 470 INSAT 3A
+471 471 INSAT 3D
+472 472 INSAT 3E
+500 500 FY-1C
+501 501 FY-1D
+510 510 FY-2
+512 512 FY-2B
+513 513 FY-2C
+514 514 FY-2D
+700 700 TIROS M (ITOS 1)
+701 701 NOAA 1
+702 702 NOAA 2
+703 703 NOAA 3
+704 704 NOAA 4
+705 705 NOAA 5
+706 706 NOAA 6
+707 707 NOAA 7
+708 708 TIROS-N
+710 710 GOES (SMS 1)
+711 711 GOES (SMS 2)
+720 720 TOPEX
+721 721 GFO (GEOSAT FOLLOW ON)
+722 722 GRACE A
+723 723 GRACE B
+731 731 GOES 1
+732 732 GOES 2
+733 733 GOES 3
+734 734 GOES 4
+735 735 GOES 5
+740 740 COSMIC-1
+741 741 COSMIC-2
+742 742 COSMIC-3
+743 743 COSMIC-4
+744 744 COSMIC-5
+745 745 COSMIC-6
+763 763 NIMBUS 3
+764 764 NIMBUS 4
+765 765 NIMBUS 5
+766 766 NIMBUS 6
+767 767 NIMBUS 7
+780 780 ERBS
+781 781 UARS
+782 782 EARTH PROBE
+783 783 TERRA
+784 784 AQUA
+785 785 AURA
+800 800 SUNSAT
+820 820 SAC-C
+1023 1023 MISSIN VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/1031.table b/definitions/bufr/tables/0/wmo/11/codetables/1031.table
new file mode 100644
index 0000000..c105793
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/1031.table
@@ -0,0 +1,219 @@
+0 0 WMO SECRETARIAT
+1 1 MELBOURNE
+2 2 MELBOURNE
+3 3 MELBOURNE
+4 4 MOSCOW
+5 5 MOSCOW
+6 6 MOSCOW
+7 7 US NATIONAL WEATHER SERVICE, NATIONAL CENTRES FOR ENVIRONMEN"    TAL PREDICTION(NCEP)
+8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONSGATEWAY (NWSTG"    )
+9 9 US NATIONAL WEATHER SERVICE - OTHER
+10 10 CAIRO (RSMC)
+11 11 CAIRO (RSMC)
+12 12 DAKAR (RSMC)
+13 13 DAKAR (RSMC)
+14 14 NAIROBI (RSMC)
+15 15 NAIROBI (RSMC)
+16 16 CASABLANCA (RSMC)
+17 17 TUNIS (RSMC)
+18 18 TUNIS CASABLANCA (RSMC)
+19 19 TUNIS CASABLANCA (RSMC)
+20 20 LAS PALMAS
+21 21 ALGIERS (RSMC)
+22 22 ACMAD
+23 23 MOZAMBIQUE NMC
+24 24 PRETORIA (RSMC)
+25 25 LA R?UNION (RSMC)
+26 26 KHABAROVSK (RSMC)
+27 27 KHABAROVSK (RSMC)
+28 28 NEW DELHI (RSMC)
+29 29 NEW DELHI (RSMC)
+30 30 NOVOSIBIRSK (RSMC)
+31 31 NOVOSIBIRSK (RSMC)
+32 32 TASHKENT (RSMC)
+33 33 JEDDAH (RSMC)
+34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+35 35 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+36 36 BANGKOK
+37 37 ULAN BATOR
+38 38 BEIJING (RSMC)
+39 39 BEIJING (RSMC)
+40 40 SEOUL
+41 41 BUENOS AIRES (RSMC)
+42 42 BUENOS AIRES (RSMC)
+43 43 BRASILIA (RSMC)
+44 44 BRASILIA (RSMC)
+45 45 SANTIAGO
+46 46 BRAZILIAN SPACE AGENCY - INPE
+47 47 COLOMBIA NMC
+48 48 ECUADOR NMC
+49 49 PERU NMC                  50
+50 50 VENEZUELA NMC
+51 51 MIAMI (RSMC)
+52 52 MIAMI RSMC, NATIONAL HURRICANE CENTER
+53 53 MONTREAL (RSMC)
+54 54 MONTREAL (RSMC)
+55 55 SAN FRANCISCO
+56 56 ARINC CENTRE
+57 57 U.S. AIR FORCE AIR FORCE GLOBAL WEATHER CENTRAL
+58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTERE"    Y, CA
+59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, USA
+60 60 UNITED STATES NATIONAL CENTRE FOR ATMOSPHERIC RESEARCH (NCAR"    )
+61 61 SERVICE ARGOS - LANDOVER
+62 62 U.S. NAVAL OCEANOGRAPHIC OFFICE
+63 63 IRI (INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIET"    Y)
+64 64 HONOLULU (RSMC)
+65 65 DARWIN (RSMC)
+66 66 DARWIN (RSMC)
+67 67 MELBOURNE (RSMC)
+69 69 WELLINGTON (RSMC)
+70 70 WELLINGTON (RSMC)
+71 71 NADI (RSMC)
+72 72 SINGAPORE
+73 73 MALAYSIA NMC
+74 74 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+75 75 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+76 76 MOSCOW (RSMC)
+78 78 OFFENBACH (RSMC)
+79 79 OFFENBACH (RSMC)
+80 80 ROME (RSMC)
+81 81 ROME (RSMC)
+82 82 NORRK?PING
+83 83 NORRK?PING
+84 84 TOULOUSE (RSMC)
+85 85 TOULOUSE (RSMC)
+86 86 HELSINKI
+87 87 BELGRADE
+88 88 OSLO
+89 89 PRAGUE
+90 90 EPISKOPI
+91 91 ANKARA
+92 92 FRANKFURT/MAIN)
+93 93 LONDON (WAFC)
+94 94 COPENHAGEN
+95 95 ROTA
+96 96 ATHENS
+97 97 EUROPEAN SPACE AGENCY (ESA)
+98 98 EUROPEAN CENTRE FOR MEDIUM-RANGE WEATHER FORECAST (ECMWF)
+99 99 DE BILT
+100 100 BRAZZAVILLE
+101 101 ABIDJAN
+102 102 LIBYAN ARAB JAMAHIRIYA NMC
+103 103 MADAGASCAR NMC
+104 104 MAURITIUS NMC
+105 105 NIGER NMC
+106 106 SEYCHELLES NMC
+107 107 UGANDA NMC
+108 108 TANZANIA NMC
+109 109 ZIMBABWE NMC
+110 110 HONG-KONG, CHINA
+111 111 AFGHANISTAN NMC          110
+112 112 BAHRAIN NMC
+113 113 BANGLADESH NMC
+114 114 BHUTAN NMC
+115 115 CAMBODIA NMC
+116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA NMC
+117 117 ISLAMIC REPUBLIC OF IRAN NMC
+118 118 IRAQ NMC
+119 119 KAZAKHSTAN NMC
+120 120 KUWAIT NMC
+121 121 KYRGYZ REPUBLIC NMC
+122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC NMC
+123 123 MACAO, CHINA
+124 124 MALDIVES NMC
+125 125 MYANMAR NMC
+126 126 NEPAL NMC
+127 127 OMAN NMC
+128 128 PAKISTAN NMC
+129 129 QATAR NMC
+130 130 REPUBLIC OF YEMEN NMC
+131 131 SRI LANKA NMC
+132 132 TAJIKISTAN NMC
+133 133 TURKMENISTAN NMC
+134 134 UNITED ARAB EMIRATES NMC
+135 135 UZBEKISTAN NMC
+136 136 SOCIALIST REPUBLIC OF VIET NAM NMC
+140 140 BOLIVIA NMC
+141 141 GUYANA NMC
+142 142 PARAGUAY NMC
+143 143 SURINAME NMC
+144 144 URUGUAY NMC                     140
+145 145 FRENCH GUYANA
+146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE
+150 150 ANTIGUA AND BARBUDA NMC
+151 151 BAHAMAS NMC
+152 152 BARBADOS NMC
+153 153 BELIZE NMC
+154 154 BRITISH CARIBBEAN TERRITORIES CENTRE
+155 155 SAN JOSE
+156 156 CUBA NMC
+157 157 DOMINICA NMC
+158 158 DOMINICAN REPUBLIC NMC
+159 159 EL SALVADOR NMC
+160 160 US NOAA/NESDIS
+161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH
+162 162 GUATEMALA NMC
+163 163 HAITI NMC
+164 164 HONDURAS NMC
+165 165 JAMAICA NMC
+166 166 MEXICO
+167 167 NETHERLANDS ANTILLES AND ARUBA NMC
+168 168 NICARAGUA NMC
+169 169 PANAMA NMC
+170 170 SAINT LUCIA NMC
+171 171 TRINIDAD AND TOBAGO NMC
+172 172 FRENCH DEPARTMENTS IN RA IV
+173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA)
+190 190 COOK ISLANDS NMC
+191 191 FRENCH POLYNESIA NMC
+192 192 TONGA NMC
+193 193 VANUATU NMC
+194 194 BRUNEI DARUSSALAM NMC
+195 195 INDONESIA NMC
+196 196 KIRIBATI NMC
+197 197 FEDERATED STATES OF MICRONESIA NMC
+198 198 NEW CALEDONIA NMC
+199 199 NIUE
+200 200 PAPUA NEW GUINEA NMC
+201 201 PHILIPPINES NMC
+202 202 SAMOA NMC
+203 203 SOLOMON ISLANDS NMC
+210 210 FRASCATI (ESA/ESRIN)
+211 211 LANNION
+212 212 LISBOA
+213 213 REYKJAVIK
+214 214 MADRID
+215 215 Z?RICH
+216 216 SERVICE ARGOS TOULOUSE
+217 217 BRATISLAVA
+218 218 BUDAPEST
+219 219 LJUBLJANA
+220 220 WARSAW
+221 221 ZAGREB
+222 222 ALBANIA NMC
+223 223 ARMENIA NMC
+224 224 AUSTRIA NMC
+225 225 AZERBAIJAN NMC
+226 226 BELARUS NMC
+227 227 BELGIUM NMC
+228 228 BOSNIA AND HERZEGOVINA NMC
+229 229 BULGARIA NMC
+230 230 CYPRUS NMC
+231 231 ESTONIA NMC
+232 232 GEORGIA NMC
+233 233 DUBLIN
+234 234 ISRAEL NMC
+235 235 JORDAN NMC
+236 236 LATVIA NMC
+237 237 LEBANON NMC
+238 238 LITHUANIA NMC
+239 239 LUXEMBOURG
+240 240 MALTA NMC
+241 241 MONACO
+242 242 ROMANIA NMC
+243 243 SYRIAN ARAB REPUBLIC NMC
+244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA NMC
+245 245 UKRAINE NMC
+246 246 REPUBLIC OF MOLDOVA NMC
+254 254 EUMETSAT OPERATION CENTRE
+255 255 MISSING VALUE               219
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/1032.table b/definitions/bufr/tables/0/wmo/11/codetables/1032.table
new file mode 100644
index 0000000..2bf1e24
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/1032.table
@@ -0,0 +1,41 @@
+1 1 PREPROCESSING CONSISTENCY CHECK
+10 10 BIAS CORRECTION
+20 20 BLACK LIST
+30 30 OI MASS AND WIND ANALYSIS, REPORT STATUS
+31 31 OI HUMIDITY ANALYSIS, REPORT STATUS
+32 32 OI ANALYSIS VARIABLES
+33 33 OI ANALYSIS, FIRST GUESS Q/C
+34 34 OI ANALYSIS, FINAL ANALYSIS Q/C
+35 35 OI ANALYSIS, EVENT FLAGS
+40 40 DYNAMIC INITIALISATION SCHEME
+41 41 NORMAL MODE INITIALISATION SCHEME
+50 50 SURFACE ANALYSIS, REPORT STATUS
+51 51 SURFACE ANALYSIS VARIABLES
+52 52 SURFACE ANALYSIS Q/C
+53 53 SURFACE ANALYSIS, EVENT FLAGS
+60 60 3D VAR REPORT STATUS
+61 61 3D VAR ANALYSIS VARIABLES
+62 62 3D VAR Q/C
+63 63 3D VAR EVENT FLAGS
+80 80 PRESAT FIRST GUESS
+81 81 PRESAT ERROR STANDARD DEVIATIONS
+82 82 PRESAT BIAS ESTIMATES
+83 83 PRESAT BRIGHTNESS TEMPERATURE QUALITY FLAGS
+84 84 PRESAT SAMARY FLAGS
+90 90 FIRST GUESS (6 HOUR FORECAST)
+91 91 FIRST GUESS (FGAT INTERPOLATED)
+100 100 PRESCAT AMBIGUITY REMOVAL
+110 110 WAM FIRST GUESS
+111 111 WAM ANALYSIS
+112 112 WAM FORECAST
+113 113 WAM Q/C
+201 201 COLLOCATION WITH SURFACE DATA
+202 202 COLLOCATION WITH TEMP/PILOT DATA
+203 203 COLLOCATION WITH AIREP DATA
+204 204 COLLOCATION WITH SATOB DATA
+205 205 COLLOCATION WITH TOVS DATA
+206 206 COLLOCATION WITH ERS1 SCATTEROMETER DATA
+207 207 COLLOCATION WITH ERS1 ALTIMETER DATA
+220 220 ERS1 SCATTEROMETER COLLOCATION BLACK LIST
+230 230 GAUSS ERROR
+231 231 GROSS ERROR
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/1033.table b/definitions/bufr/tables/0/wmo/11/codetables/1033.table
new file mode 100644
index 0000000..637e315
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/1033.table
@@ -0,0 +1,219 @@
+0 0 WMO SECRETARIAT
+1 1 MELBOURNE
+2 2 MELBOURNE
+3 3 MELBOURNE
+4 4 MOSCOW
+5 5 MOSCOW
+6 6 MOSCOW
+7 7 US NATIONAL WEATHER SERVICE, NATIONAL CENTRES FOR ENVIRONMEN"    TAL PREDICTION(NCEP)
+8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONSGATEWAY (NWSTG"    )
+9 9 US NATIONAL WEATHER SERVICE - OTHER
+10 10 CAIRO (RSMC)
+11 11 CAIRO (RSMC)
+12 12 DAKAR (RSMC)
+13 13 DAKAR (RSMC)
+14 14 NAIROBI (RSMC)
+15 15 NAIROBI (RSMC)
+16 16 CASABLANCA (RSMC)
+17 17 TUNIS (RSMC)
+18 18 TUNIS CASABLANCA (RSMC)
+19 19 TUNIS CASABLANCA (RSMC)
+20 20 LAS PALMAS
+21 21 ALGIERS (RSMC)
+22 22 ACMAD
+23 23 MOZAMBIQUE NMC
+24 24 PRETORIA (RSMC)
+25 25 LA R?UNION (RSMC)
+26 26 KHABAROVSK (RSMC)
+27 27 KHABAROVSK (RSMC)
+28 28 NEW DELHI (RSMC)
+29 29 NEW DELHI (RSMC)
+30 30 NOVOSIBIRSK (RSMC)
+31 31 NOVOSIBIRSK (RSMC)
+32 32 TASHKENT (RSMC)
+33 33 JEDDAH (RSMC)
+34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+35 35 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+36 36 BANGKOK
+37 37 ULAN BATOR
+38 38 BEIJING (RSMC)
+39 39 BEIJING (RSMC)
+40 40 SEOUL
+41 41 BUENOS AIRES (RSMC)
+42 42 BUENOS AIRES (RSMC)
+43 43 BRASILIA (RSMC)
+44 44 BRASILIA (RSMC)
+45 45 SANTIAGO
+46 46 BRAZILIAN SPACE AGENCY - INPE
+47 47 COLOMBIA NMC
+48 48 ECUADOR NMC
+49 49 PERU NMC                  50
+50 50 VENEZUELA NMC
+51 51 MIAMI (RSMC)
+52 52 MIAMI RSMC, NATIONAL HURRICANE CENTER
+53 53 MONTREAL (RSMC)
+54 54 MONTREAL (RSMC)
+55 55 SAN FRANCISCO
+56 56 ARINC CENTRE
+57 57 U.S. AIR FORCE AIR FORCE GLOBAL WEATHER CENTRAL
+58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTERE"    Y, CA
+59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, USA
+60 60 UNITED STATES NATIONAL CENTRE FOR ATMOSPHERIC RESEARCH (NCAR"    )
+61 61 SERVICE ARGOS - LANDOVER
+62 62 U.S. NAVAL OCEANOGRAPHIC OFFICE
+63 63 IRI (INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIET"    Y)
+64 64 HONOLULU (RSMC)
+65 65 DARWIN (RSMC)
+66 66 DARWIN (RSMC)
+67 67 MELBOURNE (RSMC)
+69 69 WELLINGTON (RSMC)
+70 70 WELLINGTON (RSMC)
+71 71 NADI (RSMC)
+72 72 SINGAPORE
+73 73 MALAYSIA NMC
+74 74 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+75 75 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+76 76 MOSCOW (RSMC)
+78 78 OFFENBACH (RSMC)
+79 79 OFFENBACH (RSMC)
+80 80 ROME (RSMC)
+81 81 ROME (RSMC)
+82 82 NORRK?PING
+83 83 NORRK?PING
+84 84 TOULOUSE (RSMC)
+85 85 TOULOUSE (RSMC)
+86 86 HELSINKI
+87 87 BELGRADE
+88 88 OSLO
+89 89 PRAGUE
+90 90 EPISKOPI
+91 91 ANKARA
+92 92 FRANKFURT/MAIN)
+93 93 LONDON (WAFC)
+94 94 COPENHAGEN
+95 95 ROTA
+96 96 ATHENS
+97 97 EUROPEAN SPACE AGENCY (ESA)
+98 98 EUROPEAN CENTRE FOR MEDIUM-RANGE WEATHER FORECAST (ECMWF)
+99 99 DE BILT
+100 100 BRAZZAVILLE
+101 101 ABIDJAN
+102 102 LIBYAN ARAB JAMAHIRIYA NMC
+103 103 MADAGASCAR NMC
+104 104 MAURITIUS NMC
+105 105 NIGER NMC
+106 106 SEYCHELLES NMC
+107 107 UGANDA NMC
+108 108 TANZANIA NMC
+109 109 ZIMBABWE NMC
+110 110 HONG-KONG, CHINA
+111 111 AFGHANISTAN NMC          110
+112 112 BAHRAIN NMC
+113 113 BANGLADESH NMC
+114 114 BHUTAN NMC
+115 115 CAMBODIA NMC
+116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA NMC
+117 117 ISLAMIC REPUBLIC OF IRAN NMC
+118 118 IRAQ NMC
+119 119 KAZAKHSTAN NMC
+120 120 KUWAIT NMC
+121 121 KYRGYZ REPUBLIC NMC
+122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC NMC
+123 123 MACAO, CHINA
+124 124 MALDIVES NMC
+125 125 MYANMAR NMC
+126 126 NEPAL NMC
+127 127 OMAN NMC
+128 128 PAKISTAN NMC
+129 129 QATAR NMC
+130 130 REPUBLIC OF YEMEN NMC
+131 131 SRI LANKA NMC
+132 132 TAJIKISTAN NMC
+133 133 TURKMENISTAN NMC
+134 134 UNITED ARAB EMIRATES NMC
+135 135 UZBEKISTAN NMC
+136 136 SOCIALIST REPUBLIC OF VIET NAM NMC
+140 140 BOLIVIA NMC
+141 141 GUYANA NMC
+142 142 PARAGUAY NMC
+143 143 SURINAME NMC
+144 144 URUGUAY NMC                     140
+145 145 FRENCH GUYANA
+146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE
+150 150 ANTIGUA AND BARBUDA NMC
+151 151 BAHAMAS NMC
+152 152 BARBADOS NMC
+153 153 BELIZE NMC
+154 154 BRITISH CARIBBEAN TERRITORIES CENTRE
+155 155 SAN JOSE
+156 156 CUBA NMC
+157 157 DOMINICA NMC
+158 158 DOMINICAN REPUBLIC NMC
+159 159 EL SALVADOR NMC
+160 160 US NOAA/NESDIS
+161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH
+162 162 GUATEMALA NMC
+163 163 HAITI NMC
+164 164 HONDURAS NMC
+165 165 JAMAICA NMC
+166 166 MEXICO
+167 167 NETHERLANDS ANTILLES AND ARUBA NMC
+168 168 NICARAGUA NMC
+169 169 PANAMA NMC
+170 170 SAINT LUCIA NMC
+171 171 TRINIDAD AND TOBAGO NMC
+172 172 FRENCH DEPARTMENTS IN RA IV
+173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA)
+190 190 COOK ISLANDS NMC
+191 191 FRENCH POLYNESIA NMC
+192 192 TONGA NMC
+193 193 VANUATU NMC
+194 194 BRUNEI DARUSSALAM NMC
+195 195 INDONESIA NMC
+196 196 KIRIBATI NMC
+197 197 FEDERATED STATES OF MICRONESIA NMC
+198 198 NEW CALEDONIA NMC
+199 199 NIUE
+200 200 PAPUA NEW GUINEA NMC
+201 201 PHILIPPINES NMC
+202 202 SAMOA NMC
+203 203 SOLOMON ISLANDS NMC
+210 210 FRASCATI (ESA/ESRIN)
+211 211 LANNION
+212 212 LISBOA
+213 213 REYKJAVIK
+214 214 MADRID
+215 215 Z?RICH
+216 216 SERVICE ARGOS TOULOUSE
+217 217 BRATISLAVA
+218 218 BUDAPEST
+219 219 LJUBLJANA            190
+220 220 WARSAW
+221 221 ZAGREB
+222 222 ALBANIA NMC
+223 223 ARMENIA NMC
+224 224 AUSTRIA NMC
+225 225 AZERBAIJAN NMC
+226 226 BELARUS NMC
+227 227 BELGIUM NMC
+228 228 BOSNIA AND HERZEGOVINA NMC
+229 229 BULGARIA NMC
+230 230 CYPRUS NMC
+231 231 ESTONIA NMC
+232 232 GEORGIA NMC
+233 233 DUBLIN
+234 234 ISRAEL NMC
+235 235 JORDAN NMC
+236 236 LATVIA NMC
+237 237 LEBANON NMC
+238 238 LITHUANIA NMC
+239 239 LUXEMBOURG
+240 240 MALTA NMC
+241 241 MONACO
+242 242 ROMANIA NMC
+243 243 SYRIAN ARAB REPUBLIC NMC
+244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA NMC
+245 245 UKRAINE NMC
+246 246 REPUBLIC OF MOLDOVA NMC
+254 254 EUMETSAT OPERATION CENTRE
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/1035.table b/definitions/bufr/tables/0/wmo/11/codetables/1035.table
new file mode 100644
index 0000000..734c534
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/1035.table
@@ -0,0 +1,219 @@
+0 0 WMO SECRETARIAT
+1 1 MELBOURNE
+2 2 MELBOURNE
+3 3 MELBOURNE
+4 4 MOSCOW
+5 5 MOSCOW
+6 6 MOSCOW
+7 7 US NATIONAL WEATHER SERVICE, NATIONAL CENTRES FOR ENVIRONMEN"    TAL PREDICTION(NCEP)
+8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONSGATEWAY (NWSTG"    )
+9 9 US NATIONAL WEATHER SERVICE - OTHER
+10 10 CAIRO (RSMC)
+11 11 CAIRO (RSMC)
+12 12 DAKAR (RSMC)
+13 13 DAKAR (RSMC)
+14 14 NAIROBI (RSMC)
+15 15 NAIROBI (RSMC)
+16 16 CASABLANCA (RSMC)
+17 17 TUNIS (RSMC)
+18 18 TUNIS CASABLANCA (RSMC)
+19 19 TUNIS CASABLANCA (RSMC)
+20 20 LAS PALMAS
+21 21 ALGIERS (RSMC)
+22 22 ACMAD
+23 23 MOZAMBIQUE NMC
+24 24 PRETORIA (RSMC)
+25 25 LA R?UNION (RSMC)
+26 26 KHABAROVSK (RSMC)
+27 27 KHABAROVSK (RSMC)
+28 28 NEW DELHI (RSMC)
+29 29 NEW DELHI (RSMC)
+30 30 NOVOSIBIRSK (RSMC)
+31 31 NOVOSIBIRSK (RSMC)
+32 32 TASHKENT (RSMC)
+33 33 JEDDAH (RSMC)
+34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+35 35 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+36 36 BANGKOK
+37 37 ULAN BATOR
+38 38 BEIJING (RSMC)
+39 39 BEIJING (RSMC)
+40 40 SEOUL
+41 41 BUENOS AIRES (RSMC)
+42 42 BUENOS AIRES (RSMC)
+43 43 BRASILIA (RSMC)
+44 44 BRASILIA (RSMC)
+45 45 SANTIAGO
+46 46 BRAZILIAN SPACE AGENCY - INPE
+47 47 COLOMBIA NMC
+48 48 ECUADOR NMC
+49 49 PERU NMC                  50
+50 50 VENEZUELA NMC
+51 51 MIAMI (RSMC)
+52 52 MIAMI RSMC, NATIONAL HURRICANE CENTER
+53 53 MONTREAL (RSMC)
+54 54 MONTREAL (RSMC)
+55 55 SAN FRANCISCO
+56 56 ARINC CENTRE
+57 57 U.S. AIR FORCE AIR FORCE GLOBAL WEATHER CENTRAL
+58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTERE"    Y, CA
+59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, USA
+60 60 UNITED STATES NATIONAL CENTRE FOR ATMOSPHERIC RESEARCH (NCAR"    )
+61 61 SERVICE ARGOS - LANDOVER
+62 62 U.S. NAVAL OCEANOGRAPHIC OFFICE
+63 63 IRI (INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIET"    Y)
+64 64 HONOLULU (RSMC)
+65 65 DARWIN (RSMC)
+66 66 DARWIN (RSMC)
+67 67 MELBOURNE (RSMC)
+69 69 WELLINGTON (RSMC)
+70 70 WELLINGTON (RSMC)
+71 71 NADI (RSMC)
+72 72 SINGAPORE
+73 73 MALAYSIA NMC
+74 74 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+75 75 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+76 76 MOSCOW (RSMC)
+78 78 OFFENBACH (RSMC)
+79 79 OFFENBACH (RSMC)
+80 80 ROME (RSMC)
+81 81 ROME (RSMC)
+82 82 NORRK?PING
+83 83 NORRK?PING
+84 84 TOULOUSE (RSMC)
+85 85 TOULOUSE (RSMC)
+86 86 HELSINKI
+87 87 BELGRADE
+88 88 OSLO
+89 89 PRAGUE
+90 90 EPISKOPI
+91 91 ANKARA
+92 92 FRANKFURT/MAIN)
+93 93 LONDON (WAFC)
+94 94 COPENHAGEN
+95 95 ROTA
+96 96 ATHENS
+97 97 EUROPEAN SPACE AGENCY (ESA)
+98 98 EUROPEAN CENTRE FOR MEDIUM-RANGE WEATHER FORECAST (ECMWF)
+99 99 DE BILT
+100 100 BRAZZAVILLE
+101 101 ABIDJAN
+102 102 LIBYAN ARAB JAMAHIRIYA NMC
+103 103 MADAGASCAR NMC
+104 104 MAURITIUS NMC
+105 105 NIGER NMC
+106 106 SEYCHELLES NMC
+107 107 UGANDA NMC
+108 108 TANZANIA NMC
+109 109 ZIMBABWE NMC
+110 110 HONG-KONG, CHINA
+111 111 AFGHANISTAN NMC          110
+112 112 BAHRAIN NMC
+113 113 BANGLADESH NMC
+114 114 BHUTAN NMC
+115 115 CAMBODIA NMC
+116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA NMC
+117 117 ISLAMIC REPUBLIC OF IRAN NMC
+118 118 IRAQ NMC
+119 119 KAZAKHSTAN NMC
+120 120 KUWAIT NMC
+121 121 KYRGYZ REPUBLIC NMC
+122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC NMC
+123 123 MACAO, CHINA
+124 124 MALDIVES NMC
+125 125 MYANMAR NMC
+126 126 NEPAL NMC
+127 127 OMAN NMC
+128 128 PAKISTAN NMC
+129 129 QATAR NMC
+130 130 REPUBLIC OF YEMEN NMC
+131 131 SRI LANKA NMC
+132 132 TAJIKISTAN NMC
+133 133 TURKMENISTAN NMC
+134 134 UNITED ARAB EMIRATES NMC
+135 135 UZBEKISTAN NMC
+136 136 SOCIALIST REPUBLIC OF VIET NAM NMC
+140 140 BOLIVIA NMC
+141 141 GUYANA NMC
+142 142 PARAGUAY NMC
+143 143 SURINAME NMC
+144 144 URUGUAY NMC                     140
+145 145 FRENCH GUYANA
+146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE
+150 150 ANTIGUA AND BARBUDA NMC
+151 151 BAHAMAS NMC
+152 152 BARBADOS NMC
+153 153 BELIZE NMC
+154 154 BRITISH CARIBBEAN TERRITORIES CENTRE
+155 155 SAN JOSE
+156 156 CUBA NMC
+157 157 DOMINICA NMC
+158 158 DOMINICAN REPUBLIC NMC
+159 159 EL SALVADOR NMC
+160 160 US NOAA/NESDIS
+161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH
+162 162 GUATEMALA NMC
+163 163 HAITI NMC
+164 164 HONDURAS NMC
+165 165 JAMAICA NMC
+166 166 MEXICO
+167 167 NETHERLANDS ANTILLES AND ARUBA NMC
+168 168 NICARAGUA NMC
+169 169 PANAMA NMC
+170 170 SAINT LUCIA NMC
+171 171 TRINIDAD AND TOBAGO NMC
+172 172 FRENCH DEPARTMENTS IN RA IV
+173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA)
+190 190 COOK ISLANDS NMC
+191 191 FRENCH POLYNESIA NMC
+192 192 TONGA NMC
+193 193 VANUATU NMC
+194 194 BRUNEI DARUSSALAM NMC
+195 195 INDONESIA NMC
+196 196 KIRIBATI NMC
+197 197 FEDERATED STATES OF MICRONESIA NMC
+198 198 NEW CALEDONIA NMC
+199 199 NIUE
+200 200 PAPUA NEW GUINEA NMC
+201 201 PHILIPPINES NMC
+202 202 SAMOA NMC
+203 203 SOLOMON ISLANDS NMC
+210 210 FRASCATI (ESA/ESRIN)
+211 211 LANNION
+212 212 LISBOA
+213 213 REYKJAVIK
+214 214 MADRID
+215 215 Z?RICH
+216 216 SERVICE ARGOS TOULOUSE
+217 217 BRATISLAVA
+218 218 BUDAPEST
+219 219 LJUBLJANA            190
+220 220 WARSAW
+221 221 ZAGREB
+222 222 ALBANIA NMC
+223 223 ARMENIA NMC
+224 224 AUSTRIA NMC
+225 225 AZERBAIJAN NMC
+226 226 BELARUS NMC
+227 227 BELGIUM NMC
+228 228 BOSNIA AND HERZEGOVINA NMC
+229 229 BULGARIA NMC
+230 230 CYPRUS NMC
+231 231 ESTONIA NMC
+232 232 GEORGIA NMC
+233 233 DUBLIN
+234 234 ISRAEL NMC
+235 235 JORDAN NMC
+236 236 LATVIA NMC
+237 237 LEBANON NMC
+238 238 LITHUANIA NMC
+239 239 LUXEMBOURG
+240 240 MALTA NMC
+241 241 MONACO
+242 242 ROMANIA NMC
+243 243 SYRIAN ARAB REPUBLIC NMC
+244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA NMC
+245 245 UKRAINE NMC
+246 246 REPUBLIC OF MOLDOVA NMC
+254 254 EUMETSAT OPERATION CENTRE
+255 255 MISSING VALUE               219
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/1090.table b/definitions/bufr/tables/0/wmo/11/codetables/1090.table
new file mode 100644
index 0000000..e1cf86c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/1090.table
@@ -0,0 +1,5 @@
+0 0 LAF (LAGGED-AVERAGE FORECASTING)
+1 1 BREEDING
+2 2 SINGULAR VECTOR
+3 3 MULTIPLE ANALYSIS CYCLE
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/1092.table b/definitions/bufr/tables/0/wmo/11/codetables/1092.table
new file mode 100644
index 0000000..dc9bf1c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/1092.table
@@ -0,0 +1,5 @@
+0 0 UNPERTURBED HIGH-RESOLUTION CONTROL FORECAST
+1 1 UNPERTURBED LOW-RESOLUTION CONTROL FORECAST
+2 2 NEGATIVELY PERTURBED FORECAST
+3 3 POSITIVELY PERTURBED FORECAST
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/11031.table b/definitions/bufr/tables/0/wmo/11/codetables/11031.table
new file mode 100644
index 0000000..fd7a8e0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/11031.table
@@ -0,0 +1,9 @@
+0 0 NIL           IN CLOUD
+1 1 SLIGHT        IN CLOUD
+2 2 MODERATE      IN CLOUD
+3 3 SEVERE        IN CLOUD
+4 4 NIL           IN CLEAR AIR
+5 5 SLIGHT        IN CLEAR AIR
+6 6 MODERATE      IN CLEAR AIR
+7 7 SEVERE        IN CLEAR AIR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/11037.table b/definitions/bufr/tables/0/wmo/11/codetables/11037.table
new file mode 100644
index 0000000..1fed72b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/11037.table
@@ -0,0 +1,30 @@
+0 0 AVE <0.1 PEAK <0.1
+1 1 AVE <0.1 0.1 <= PEAK <0.2
+2 2 0.1 <= AVE <0.2 0.1 <= PEAK <0.2
+3 3 AVE <0.1 0.2 <= PEAK <0.3
+4 4 0.1 <= AVE <0.2 0.2 <= PEAK <0.3
+5 5 0.2 <= AVE <0.3 0.2 <= PEAK <0.3
+6 6 AVE <0.1 0.3 <= PEAK <0.4
+7 7 0.1 <= AVE <0.2 0.3 <= PEAK <0.4
+8 8 0.2 <= AVE <0.3 0.3 <= PEAK <0.4
+9 9 0.3 <= AVE <0.4 0.3 <= PEAK <0.4
+10 10 AVE <0.1 0.4 <= PEAK <0.5
+11 11 0.1 <= AVE <0.2 0.4 <= PEAK <0.5
+12 12 0.2 <= AVE <0.3 0.4 <= PEAK <0.5
+13 13 0.3 <= AVE <0.4 0.4 <= PEAK <0.5
+14 14 0.4 <= AVE <0.5 0.4 <= PEAK <0.5
+15 15 AVE <0.1 0.5 <= PEAK <0.8
+16 16 0.1 <= AVE <0.2 0.5 <= PEAK <0.8
+17 17 0.2 <= AVE <0.3 0.5 <= PEAK <0.8
+18 18 0.3 <= AVE <0.4 0.5 <= PEAK <0.8
+19 19 0.4 <= AVE <0.5 0.5 <= PEAK <0.8
+20 20 0.5 <= AVE <0.8 0.5 <= PEAK <0.8
+21 21 AVE <0.1 0.8 <= PEAK
+22 22 0.1 <= AVE <0.2 0.8 <= PEAK
+23 23 0.2 <= AVE <0.3 0.8 <= PEAK
+24 24 0.3 <= AVE <0.4 0.8 <= PEAK
+25 25 0.4 <= AVE <0.5 0.8 <= PEAK
+26 26 0.5 <= AVE <0.8 0.8 <= PEAK
+27 27 0.8 <= AVE 0.8 <= PEAK
+28 28 NIL              NIL
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/11038.table b/definitions/bufr/tables/0/wmo/11/codetables/11038.table
new file mode 100644
index 0000000..f0c5cce
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/11038.table
@@ -0,0 +1,17 @@
+0 0 MIN < 1
+1 1 1 <= MIN < 2
+2 2 2 <= MIN < 3
+3 3 3 <= MIN < 4
+4 4 4 <= MIN < 5
+5 5 5 <= MIN < 6
+6 6 6 <= MIN < 7
+7 7 7 <= MIN < 8
+8 8 8 <= MIN < 9
+9 9 9 <= MIN < 10
+10 10 10 <= MIN < 11
+11 11 11 <= MIN < 12
+12 12 12 <= MIN < 13
+13 13 13 <= MIN < 14
+14 14 14 <= MIN < 15
+15 15 NO TIMING INFORMATION AVAILABLE
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/11039.table b/definitions/bufr/tables/0/wmo/11/codetables/11039.table
new file mode 100644
index 0000000..1bb26b7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/11039.table
@@ -0,0 +1,16 @@
+0 0 1 <= MIN < 2
+1 1 2 <= MIN < 3
+2 2 3 <= MIN < 4
+4 4 4 <= MIN < 5
+5 5 5 <= MIN < 6
+6 6 6 <= MIN < 7
+7 7 7 <= MIN < 8
+8 8 8 <= MIN < 9
+9 9 9 <= MIN < 10
+10 10 10 <= MIN < 11
+11 11 11 <= MIN < 12
+12 12 12 <= MIN < 13
+13 13 13 <= MIN < 14
+14 14 14 <= MIN < 15
+60 60 NO TIMING INFORMATION AVAILABLE
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/13038.table b/definitions/bufr/tables/0/wmo/11/codetables/13038.table
new file mode 100644
index 0000000..19bc422
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/13038.table
@@ -0,0 +1,4 @@
+0 0 NOT SUPERADIABATIC
+1 1 SUPERADIABATIC
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/13039.table b/definitions/bufr/tables/0/wmo/11/codetables/13039.table
new file mode 100644
index 0000000..c070b1d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/13039.table
@@ -0,0 +1,3 @@
+0 0 SEA ICE
+1 1 SNOW ON LAND
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/13040.table b/definitions/bufr/tables/0/wmo/11/codetables/13040.table
new file mode 100644
index 0000000..8e1dcfe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/13040.table
@@ -0,0 +1,9 @@
+0 0 LAND
+1 1 RESERVED
+2 2 NEAR COAST
+3 3 ICE
+4 4 POSSIBLE ICE
+5 5 OCEAN
+6 6 COAST
+7 7 DESERT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/13041.table b/definitions/bufr/tables/0/wmo/11/codetables/13041.table
new file mode 100644
index 0000000..d53bf87
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/13041.table
@@ -0,0 +1,10 @@
+1 1 A
+2 2 A-B
+3 3 B
+4 4 B-C
+5 5 C
+6 6 D
+7 7 E
+8 8 F
+9 9 G
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/13051.table b/definitions/bufr/tables/0/wmo/11/codetables/13051.table
new file mode 100644
index 0000000..70807eb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/13051.table
@@ -0,0 +1,8 @@
+0 0 SMALLER THAN ANY VALUE IN THE 30 YEARS PERIOD
+1 1 IN THE FIRST QUINTILE
+2 2 IN THE SECOND QUINTILE
+3 3 IN THE THIRD QUINTILE
+4 4 IN THE FOURTH QUINTILE
+5 5 IN THE FIFTH QUINTILE
+6 6 GREATER THAN ANY VALUE IN THE 30 YEAR PERIOD
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/13056.table b/definitions/bufr/tables/0/wmo/11/codetables/13056.table
new file mode 100644
index 0000000..02eeb56
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/13056.table
@@ -0,0 +1,10 @@
+0 0 NO PRECIPITATION
+1 1 LIGHT INTERMITTENT
+2 2 MODERATE INTERMITTENT
+3 3 HEAVY INTERMITTENT
+4 4 VERY HEAVY INTERMITTENT
+5 5 LIGHT CONTINUOUS
+6 6 MODERATE CONTINUOUS
+7 7 VERY HEAVY CONTINUOUS
+9 9 VARIABLE-ALTERNATIVELY LIGHT AND HEAVY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/13057.table b/definitions/bufr/tables/0/wmo/11/codetables/13057.table
new file mode 100644
index 0000000..9c8571c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/13057.table
@@ -0,0 +1,11 @@
+0 0 NO PRECIPITATION
+1 1 WITHIN THE LAST HOUR
+2 2 1 TO 2 HOURS AGO
+3 3 2 TO 3 HOURS AGO
+4 4 3 TO 4 HOURS AGO
+5 5 4 TO 5 HOURS AGO
+6 6 5 TO 6 HOURS AGO
+7 7 6 TO 8 HOURS AGO
+8 8 8 TO 10 HOURS AGO
+9 9 MORE THAN 10 HOURS AHO
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/15025.table b/definitions/bufr/tables/0/wmo/11/codetables/15025.table
new file mode 100644
index 0000000..acb0f2b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/15025.table
@@ -0,0 +1,2 @@
+0 0 OZONE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/19001.table b/definitions/bufr/tables/0/wmo/11/codetables/19001.table
new file mode 100644
index 0000000..2b92574
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/19001.table
@@ -0,0 +1,7 @@
+0 0 DEPRESSION OR LOW (EXTRATROPICAL)
+1 1 TROPICAL DEPRESSION
+2 2 TROPICAL STORM
+3 3 SEVERE TROPICAL STORM
+4 4 TYPHOON
+10 10 DUST/SANDSTORM
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/19008.table b/definitions/bufr/tables/0/wmo/11/codetables/19008.table
new file mode 100644
index 0000000..57395cd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/19008.table
@@ -0,0 +1,5 @@
+0 0 RESERVED
+1 1 SHALLOW (TOP OF CIRCULATION BELOW 700-HPA LEVEL
+2 2 MEDIUM(TOP BETWEEN 700-HPA AND 400-HPA)
+3 3 DEEP(TOP ABOVE 400-HPA LEVEL
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/19010.table b/definitions/bufr/tables/0/wmo/11/codetables/19010.table
new file mode 100644
index 0000000..03e331e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/19010.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 MINIMUM VALUE OF SEA LEVEL PRESSURE
+2 2 MAXIMUM VALUE OF 850 HPA RELATIVE VORTICITY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20003.table b/definitions/bufr/tables/0/wmo/11/codetables/20003.table
new file mode 100644
index 0000000..b6227bc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20003.table
@@ -0,0 +1,250 @@
+0 0 CLOUD DEVELOPMENT NOT OBSERVED OR NOT OBSERVABLE
+1 1 CLOUDS GENERALLY DISSOLVING OR BECOMING LESS DEVELOPED
+2 2 STATE OF SKY ON THE WHOLE UNCHANGED
+3 3 CLOUDS GENERALLY FORMING OR DEVELOPING
+4 4 VISIBILITY REDUCED BY SMOKE, E.G. VELDT OR FOREST FIRES, IN"    DUSTRIAL SMOKE OR VOLCANIC ASHES
+5 5 HAZE
+6 6 WIDESPREAD DUST IN SUSPENSION IN THE AIR, NOT RAISED BY WIND"     AT OR NEAR THE STATION AT THE TIME OF OBSERVATION
+7 7 DUST OR SEND RAISED BY WIND AT OR NEAR THE STATION AT THE TI"    ME OF OBSERVATION, BUT NO WELL-DEVELOPED DUST WHRIL(S) OR SA"    ND WHRIL(S), AND NO 
+8 8 WELL-DEVELOPED DUST WHRIL(S) OR SAND WHRILS SEEN AT OR NEAR"    THE STATION DURING THE PRECEDING HOUR OR AT THE SAME TIME OF"     OBSERVATION, BUT NO 
+9 9 DUSTSTORM OR SANDSTORM WITHIN SIGHT AT THE TIME OF OBSERVATI"    ON, OR AT THE STATION DURING THE PRECEDING HOR
+10 10 MIST
+11 11 PACHES SHALLOW FOG OR ICE AT THE STATION, WHETHER ON LAND OR"     SEA, NOT DEEPER THAN 2 METRES ON LAND OR 10 METRES AT SEA
+12 12 MORE OR LESS CONTINUOUS SHALLOW FOG OR ICE AT THE STATION,"    WHETHER ON LAND OR SEA, NOT DEEPER THAN 2 METRES ON LAND OR"    10 METRES AT SEA
+13 13 LIGHTNING VISIBLE, NO THUNDER HEARD
+14 14 PRECIPITATION WITHIN SIGHT, NOT REACHING THE GROUND OR THE"    SURFACE OF THE SEA
+15 15 PRECIPITATION WITHIN SIGHT, REACHING THE GROUND OR THE SURFA"    CE OF THE SEA, BUT DISTANT, I.E. ESTIMATED TO BE MORE THAN"    5 KM FROM THE STATION
+16 16 PRECIPITATION WITHIN SIGHT, REACHING THE GROUND OR THE SURFA"    CE OF THE SEA, NEAR TO, BUT NOT AT THE STATION
+17 17 THUNDERSTORM, BUT NO PRECIPITATION AT THE TIME OF OBSERVATIO"    N
+18 18 SQUALLS AT OR WITHIN SIGHT OF THE STATION DURING THE PRECEDI"    NG HOUR OR AT THE TIME OF OBSERVATION
+19 19 FUNNEL CLOUD(S) AT OR WITHIN SIGHT OF THE STATION DURING THE"     PRECEDING HOUR OR AT THE TIME OF OBSERVATION
+20 20 DRIZZEL (NOT FREEZING) OR SNOW GRAINS NOT FALLING AS SHOWERS"    ; DURING THE PRECEDING HOUR BUT NOT  AT THE TIME OF OBSERVAT"    IONS
+21 21 RAIN (NOT FREEZING) NOT FALLING AS SHOWER(S); DURING THE PRE"    ECEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+22 22 SNOW NOT FALLING AS SHOWER(S); DURING THE PRECEDING HOUR BUT"     NOT AT THE TIME OF OBSERVATION
+23 23 RAIN AND SNOW OR ICE PELLETS NOT FALLING AS SHOWER(S); DURIN"    G THE PRECEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+24 24 FREEZING DRIZZEL OR FREEZING RAIN NOT FALLING AS SHOWER(S);"    DURING THE PRECEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+25 25 SHOWER(S) OF RAIN; DURING THE PRECEDING HOUR BUT NOT AT THE"    TIME OF OBSERVATION
+26 26 SHOWER(S) OF SNOW, OR OF RAIN AND SNOW; DURING THE PRECEDING"     HOUR BUT NOT AT THE TIME OF OBSERVATION
+27 27 SHOWER(S) OF HAIL, OR OF RAIN AND HAIL; DURING THE PRECEDING"     HOUR BUT NOT AT THE TIME OF OBSERVATION
+28 28 FOG OR ICE FOG; DURING THE PRECEDING HOUR BUT NOT AT THE TIM"    E OF OBSERVATION
+29 29 THUNDERSTORM (WITH OR WITHOUT PRECIPITATION); DURING THE PRE"    CEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+30 30 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM HAS DECREASED DURI"    NG THE PRECEDING HOURS
+31 31 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM NO APPRECIABLE CHA"    NGE DURING THE PRECEDING HOUR
+32 32 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM HAS BEGUN OR HAS I"    NCEASED DURING THE PRECEDING HOUR
+33 33 SEVERE DUSTSTORM OR SANDSTORM  HAS DECREASED DURING THE PREC"    EDING HOURS
+34 34 SEVERE DUSTSTORM OR SANDSTORM NO APPRECIABLE CHANGE DURING T"    HE PRECEDING HOUR
+35 35 SEVERE DUSTSTORM OR SANDSTORM HAS BEGUN OR HAS INCREASED DUR"    ING THE PRECEDING HOUR
+36 36 SLIGHT OR MODERATE DRIFTING SNOW GENERALLY LOW (BELOW EYE LE"    VEL)
+37 37 HEAVY DRIFTING SNOW  GENERALY LOW (BELOW EYE LEVEL)
+38 38 SLIGHT OR MODERATE BLOWING SNOW GENERALLY HIGH (ABOVE EYE LE"    VEL)
+39 39 HEAVY BLOWING SNOW  GENERALY HIGH (ABOVE EYE LEVEL)
+40 40 FOG OR ICE FOG AT A DISTANCE AT THE TIME OF OBSERVATION, BUT"     NOT AT THE STATION DURING THE PRECEDING HOUR, THE FOG OR IC"    E FOG EXTENDING TO A
+41 41 FOG OR ICE FOG IN PATCHES
+42 42 FOG OR ICE FOG, SKY VISIBLE,HAS BECOME THINNER DURING THE PR"    ECEDING HOUR
+43 43 FOG OR ICE FOG, SKY INVISIBLE,HAS BECOME THINNER DURING THE"    PRECEDING HOUR
+44 44 FOG OR ICE FOG, SKY   VISIBLE,NO APPRECIABLE CHANGE DURING T"    HE PRECEDING HOUR
+45 45 FOG OR ICE FOG, SKY INVISIBLE,NO APPRECIABLE CHANGE DURING T"    HE PRECEDING HOUR
+46 46 FOG OR ICE FOG, SKY   VISIBLE,HAS BEGUN OR HAS BECOME THICKE"    R DURING THE PRECEDING HOUR
+47 47 FOG OR ICE FOG, SKY INVISIBLE,HAS BEGUN OR HAS BECOME THICKE"    R DURING THE PRECEDING HOUR
+48 48 FOG, DEPOSITING RIME, SKY VISIBLE
+49 49 FOG, DEPOSITING RIME, SKY INVISIBLE
+50 50 DRIZZLE, NOT FREEZING, INTERMITTENT;SLIGHT AT TIME OF OBSERV"    ATION
+51 51 DRIZZLE, NOT FREEZING, CONTINUOUS  ;SLIGHT AT TIME OF OBSERV"    ATION
+52 52 DRIZZLE, NOT FREEZING, INTERMITTENT;MODERATE AT TIME OF OBSE"    RVATION
+53 53 DRIZZLE, NOT FREEZING, CONTINUOUS  ;MODERATE AT TIME OF OBSE"    RVATION
+54 54 DRIZZLE, NOT FREEZING, INTERMITTENT;HEAVY (DENSE) AT THE TIM"    E OF OBSERVATION
+55 55 DRIZZLE, NOT FREEZING, CONTINUOUS  ;HEAVY (DENSE) AT THE TIM"    E OF OBSERVATION
+56 56 DRIZZLE, FREEZING, SLIGHT
+57 57 DRIZZLE, FREEZING, MODERATE OR HEAVY (DENSE)
+58 58 DRIZZLE AND RAIN, SLIGHT
+59 59 DRIZZLE AND RAIN, MODERATE OR HEAVY
+60 60 RAIN,NOT FREEZING,INTERMITTENT;SLIGHT AT TIME OF OBSERVATION
+61 61 RAIN,NOT FREEZING,CONTINUOUS  ;SLIGHT AT TIME OF OBSERVATION
+62 62 RAIN,NOT FREEZING,INTERMITTENT;MODERATE AT TIME OF OBSERVATI"    ON
+63 63 RAIN,NOT FREEZING,CONTINUOUS  ;MODERATE AT TIME OF OBSERVATI"    ON
+64 64 RAIN, NOT FREEZING, INTERMITTENT;HEAVY AT TIME OF OBSERVATIO"    ON
+65 65 RAIN, NOT FREEZING, CONTINUOUS;HEAVY AT TIME OF OBSERVATION
+66 66 RAIN, FREEZING, SLIGHT
+67 67 RAIN, FREEZING, MODERATE OR HEAVY
+68 68 RAIN OR DRIZZLE AND SNOW, LIGHT
+69 69 RAIN OR DRIZZLE AND SNOW, MODERATE OR HEAVY
+70 70 INTERMITTENT FALL OF SNOWFLAKES, SLIGHT AT TIME OF OBSERVATI"    ON
+71 71 CONTINUOUS   FALL OF SNOWFLAKES, SLIGHT AT TIME OF OBSERVATI"    ON
+72 72 INTERMITTENT FALL OF SNOWFLAKES, MODERATE AT TIME OF OBSERVA"    TION
+73 73 CONTINUOUS   FALL OF SNOWFLAKES, MODERATE AT TIME OF OBSERVA"    TION
+74 74 INTERMITTENT FALL OF SNOWFLAKES, HEAVY AT TIME OF OBSERVATIO"    ONS
+75 75 CONTINUOUS   FALL OF SNOWFLAKES, HEAVY AT TIME OF OBSERVATIO"    ONS
+76 76 DIAMOND DUST (WITH OR WITHOUT FOG)
+77 77 SNOW GRAINS (WITH OR WITHOUT FOG)
+78 78 ISOLATED STAR-LIKE SNOW CRYSTALS (WITH OR WITHOUT FOG)
+79 79 ICE PELLETS
+80 80 RAIN SHOWER(S), SLIGHT
+81 81 RAIN SHOWER(S), MODERATE OR HEAVY
+82 82 RAIN SHOWER(S), VIOLENT
+83 83 SHOWER(S) OF RAIN AND SNOW MIXED, SLIGHT
+84 84 SHOWER(S) OF RAIN AND SNOW MIXED, MODERATE OR HEAVY
+85 85 SNOW SHOWER(S), SLIGHT
+86 86 SNOW SHOWER(S), MODERATE OR HEAVY
+87 87 SHOWER(S) OF SNOW PELLETS OR SMALL HAIL, WITH OR WITHOUT RAI"    N OR RAIN AND SNOW MIXED, SLIGHT
+88 88 SHOWER(S) OF SNOW PELLETS OR SMALL HAIL, WITH OR WITHOUT RAI"    N OR RAIN AND SNOW MIXED, MODERATE OR HEAVY
+89 89 SHOWER(S) OF HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIX"    ED, NOT ASSOCIATED WITH THUNDER, SLIGHT
+90 90 SHOWER(S) OF HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIX"    ED, NOT ASSOCIATED WITH THUNDER, MODERATE OR HEAVY
+91 91 SLIGHT RAIN AT TIME OF OBSERVATION, THUNDERSTORM DURING THE"    PRECEDING HOUR BUT NOT AT TIME OF OBSERVATION
+92 92 MODERATE OR HEAVY RAIN AT TIME OF OBSERVATION, THUNDERSTORM"    DURING THE PRECEDING HOUR BUT NOT AT TIME OF OBSERVATION
+93 93 SLIGHT SNOW, OR RAIN AND SNOW MIXED OR HAIL AT TIME OF OBSER"    VATION, THUNDERSTORM DURING THE PRECEDING HOUR BUT NOT AT TI"    ME OF OBSERVATION
+94 94 MODERATE OR HEAVY SNOW, OR RAIN AND SNOW MIXED OR HAIL AT TI"    ME OF OBSERVATION, THUNDERSTORM DURING PRECEDING HOUR BUT NO"    T AT TIME OF OBSERVA
+95 95 THUNDERSTORM, SLIGHT OR MODERATE, WITHOUT HAIL, BUT WITH RAI"    N AND/OR SNOW AT TIME OF OBSERVATION, THUNDERSTORM DURING TH"    E PRECEDING HOUR BUT
+96 96 THUNDERSTORM, SLIGHT OR MODERATE,WITH HAIL AT TIME OF OBSERV"    ATION, THUNDERSTORM AT TIME OF OBSERVATION
+97 97 THUNDERSTORM, HEAVY, WITHOUT HAIL BUT WITH RAIN AND/OR SNOW"    AT TIME OF OBSERVATION, THUNDERSTORM AT TIME OF OBSERVATION
+98 98 THUNDERSTORM COMBINED WITH DUSTSTORM OR SANDSTORM AT TIME OF"     OBSERVATION, THUNDERSTORM AT TIME OF OBSERVATION
+99 99 THUNDERSTORM, HEAVY, WITH HAIL AT TIME OF OBSERVATION, THUND"    ERSTORM AT TIME OF OBSERVATION
+100 100 NO SIGNIFICANT WEATHER OBSERVED
+101 101 CLOUDS GENERALLY DISSOLVING OR BECOMING LESS DEVELOPED DURIN"    G THE PAST HOUR
+102 102 STATE OF SKY ON THE WHOLE UNCHANGED DURING THE PAST HOUR
+103 103 CLOUDS GENERALLY FORMING OR DEVELOPING DURING THE PAST HOUR
+104 104 HAZE OR SMOKE, OR DUST IN SUSPENSION IN THE AIR, VISIBILITY"    EQUAL TO, OR GREATER THAN 1KM
+105 105 HAZE OR SMOKE, OR DUST IN SUSPENSION IN THE AIR, VISIBILITY"    LESS THAN 1KM
+110 110 MIST
+111 111 DIAMOND DUST
+112 112 DISTANT LIGHTING
+118 118 SQUALLS
+120 120 FOG
+121 121 PRECIPITATION
+122 122 DRIZZLE (NOT FREEZING) OR SNOW GRAINS
+123 123 RAIN (NOT FREEZING)
+124 124 SNOW
+125 125 FREEZING DRIZZLE OR FREEZING RAIN
+126 126 THUNDERSTORM (WITH OR WITHOUT PRECIPITATION)
+127 127 BLOWING OR DRIFTING SNOW OR SAND
+128 128 BLOWING OR DRIFTING SNOW OR SAND, VISIBILITY EQUAL TO, OR GR"    ATER THAN, 1KM
+129 129 BLOWING OR DRIFTING SNOW OR SAND, VISIBILITY LESS THAN 1 KM
+130 130 FOG
+131 131 FOG OR ICE FOG, IN PATCHES
+132 132 FOG OR ICE FOG, HAS BECOME THINNER DURING PAST HOUR
+133 133 FOG OR ICE FOG, NO APPRECIABLE CHANGE DURING PAST HOUR
+134 134 FOG OR ICE FOG, HAS BECUNOR BECOME THICKER DURING PAST HOUR
+135 135 FOG, DEPOSITION RIME
+140 140 PRECIPITATION
+141 141 PRECIPITATION SLIGHT OR MODERATE
+142 142 PRECIPITATION, HEAVY
+143 143 LIQUID PRECIPITATION, SLIGHT OR MODERATE
+144 144 LIQUID PRECIPITATION, HEAVY
+145 145 SOLID PRECIPITATION, SLIGHT OR MODERATE
+146 146 SOLID PRECIPITATION, HEAVY
+147 147 FREEZING PRECIPITATION, SLIGHT OR MODERATE
+148 148 FREEZING PRECIPITATION, HEAVY
+150 150 DRIZZLE
+151 151 DRIZZLE, NOT FREEZING, SLIGHT
+152 152 DRIZZLE, NOT FREEZING, MODERATE
+153 153 DRIZZLE, NOT FREEZING, HEAVY
+154 154 DRIZZLE, FREEZING, SLIGHT
+155 155 DRIZZLE, FREEZING, MODERATE
+156 156 DRIZZLE, FREEZING, HEAVY
+157 157 DRIZZLE AND RAIN, SLIGHT
+158 158 DRIZZLE AND RAIN, MODERATE OR HEAVY
+160 160 RAIN
+161 161 RAIN, NOT FREEZING, SLIGHT
+162 162 RAIN, NOT FREEZING, MODERATE
+163 163 RAIN, NOT FREEZING, HEAVY
+164 164 RAIN, FREEZING, SLIGHT
+165 165 RAIN, FREEZING, MODERATE
+166 166 RAIN, FREEZING, HEAVY
+167 167 RAIN (OR DRIZZLE) AND SNOW, SLIGHT
+168 168 RAIN (OR DRIZZLE) AND SNOW, MODERATE AND HEAVY
+170 170 SNOW
+171 171 SNOW, SLIGHT
+172 172 SNOW, MODERATE
+173 173 SNOW, HEAVY
+174 174 ICE PELLETS, SLIGHT
+175 175 ICE PELLETS, MODERATE
+176 176 ICE PELLETS, HEAVY
+180 180 SHOWER(S) OR INTERMITTENT PRECIPITATION
+181 181 RAIN SHOWER(S) OR INTERMITTENT RAIN, SLIGHT
+182 182 RAIN SHOWER(S) OR INTERMITTENT RAIN, MODERATE
+183 183 RAIN SHOWER(S) OR INTERMITTENT RAIN, HEAVY
+184 184 RAIN SHOWER(S) OR INTERMITTENT RAIN, VIOLENT
+185 185 SNOW SHOWER(S) OR INTERMITTENT SNOW, SLIGHT
+186 186 SNOW SHOWER(S) OR INTERMITTENT SNOW, MODERATE
+187 187 SNOW SHOWER(S) OR INTERMITTENT SNOW, HEAVY
+190 190 THUNDERSTORM
+191 191 THUNDERSTORM, SLIGHT OR MODERATE, WITH NO PRECIPITATION
+192 192 THUNDERSTORM, SLIGHT OR MODERATE, WITH RAIN SHOWERS AND/OR S"    NOW SHOWERS
+193 193 THUNDERSTORM, SLIGHT OR MODERATE, WITH HAIL
+194 194 THUNDERSTORM, HEAVY, WITH NO PRECIPITATION
+195 195 THUNDERSTORM, HEAVY, WITH RAIN SHOWERS AND/OR SNOW SHOWERS
+196 196 THUNDERSTORM, HEAVY, WITH HAIL
+204 204 VOLCANIC ASH SUSPENDED IN THE AIR ALOFT
+206 206 THICK DUST HAZE, VISIBILITY LESS THAN 1 KM
+207 207 BLOWING SPRAY AT THE STATION
+208 208 DRIFTING DUST (SAND)
+209 209 WALL OF DUST OR SAND IN DISTANCE (LIKE HABOOB)
+210 210 SNOW HAZE
+211 211 WHITEOUT
+213 213 LIGHTING, CLOUD TO SURFACE
+217 217 DRY THUNDERSTORM
+219 219 TORNADO CLOUD (DESTRUCTIVE AT OR WITHIN SIGHT OF THE STATION"    DURING PRECEDING HOUR OR AT THE TIME OF OBSERVATION
+220 220 DEPOSITION OF VOLCANIC ASH
+221 221 DEPOSITION OF DUST OR SAND
+222 222 DEPOSITION OF DEW
+223 223 DEPOSITION OF WET SNOW
+224 224 DEPOSITION OF SOFT RIME
+225 225 DEPOSITION OF HARD RIME
+226 226 DEPOSITION OF HOAR FROST
+227 227 DEPOSITION OF GLAZE
+228 228 DEPOSITION OF ICE CRUST (ICE SLICK)
+230 230 DUSTSTORM OR SANDSTORM WITH TEMPERATURE BELOW 0 C DEGREES
+239 239 BLOWING SNOW, IMPOSSIBLE TO DETERMINE WHETHER SNOW IS FALLIN"    G OR NOT
+241 241 FOG ON SEA
+242 242 FOG IN VALLEYS
+243 243 ARCTIC OR ANTARCTIC SEA SMOKE
+244 244 STEAM FOG (SEA,LAKE OR RIVER)
+245 245 STEAM FOG (LAND)
+246 246 FOG OVER ICE OR SNOW COVER
+247 247 DENCE FOG VISIBILITY 60-90 M
+248 248 DENCE FOG VISIBILITY 30-60 M
+249 249 DENCE FOG VISIBILITY LESS THAN 30 M
+250 250 DRIZZLE, RATE OF FALL  LESS THAN 0.10 MM/H
+251 251 DRIZZLE, RATE OF FALL   0.10 -  .19  MM/H
+252 252 DRIZZLE, RATE OF FALL   0.20 -  .39  MM/H
+253 253 DRIZZLE, RATE OF FALL   0.40 -  .79  MM/H
+254 254 DRIZZLE, RATE OF FALL   0.80 - 1.59  MM/H
+255 255 DRIZZLE, RATE OF FALL   1.60 - 3.19  MM/H
+256 256 DRIZZLE, RATE OF FALL   3.20 - 6.39  MM/H
+257 257 DRIZZLE, RATE OF FALL   6.40 MM/H  OR MORE
+259 259 DRIZZLE AND SNOW
+260 260 RAIN, RATE OF FALL  LESS THAN 1.0 MM/H
+261 261 RAIN, RATE OF FALL   1.0  -  1.9   MM/H
+262 262 RAIN, RATE OF FALL   2.0  -  3.9   MM/H
+263 263 RAIN, RATE OF FALL   4.0  -  7.9   MM/H
+264 264 RAIN, RATE OF FALL   8.0  - 15.9   MM/H
+265 265 RAIN, RATE OF FALL  16.0  - 31.9   MM/H
+266 266 RAIN, RATE OF FALL  32.0  - 63.9   MM/H
+267 267 RAIN, RATE OF FALL  64.0  MM/H  OR MORE
+270 270 SNOW, RATE OF FALL  LESS THAN 1.0 CM/H
+271 271 SNOW, RATE OF FALL   1.0  -  1.9   CM/H
+272 272 SNOW, RATE OF FALL   2.0  -  3.9   CM/H
+273 273 SNOW, RATE OF FALL   4.0  -  7.9   CM/H
+274 274 SNOW, RATE OF FALL   8.0  - 15.9   CM/H
+275 275 SNOW, RATE OF FALL  16.0  - 31.9   CM/H
+276 276 SNOW, RATE OF FALL  32.0  - 63.9   CM/H
+277 277 SNOW, RATE OF FALL  64.0  CM/H  OR MORE
+278 278 SNOW OR ICE CRISTAL PRECIPITATION FROM A CLEAR SKY
+279 279 WET SNOW, FREEZING ON CONTACT
+280 280 PRECIPITATION OF RAIN (WW= 87-99)
+281 281 PRECIPITATION OF RAIN,FREEZING (WW= 80-82)
+282 282 PRECIPITATION OF RAIN AND SNOW MIXED
+283 283 PRECIPITATION OF SNOW
+284 284 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL
+285 285 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH RAIN
+286 286 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH RAIN AND S"    NOW MIXED
+287 287 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH SNOW
+288 288 PRECIPITATION OF HAIL
+289 289 PRECIPITATION OF HAIL, WITH RAIN
+290 290 PRECIPITATION OF HAIL, WITH RAIN AND SNOW MIXED
+291 291 PRECIPITATION OF HAIL, WITH SNOW
+292 292 SHOWER(S) OR THUNDERSTORM OVER SEA
+293 293 SHOWER(S) OR THUNDERSTORM OVER MOUNTAINS
+508 508 NO SIGNIFICANT PHENOMENA TO REPORT, PRESENT AND PAST WEATHER"     OMITTED
+509 509 NOT OBSERVED, NO DATA AVAILABLE, PRESENT AND PAST WEATHER OM"    ITTED
+510 510 PRESENT AND PAST WEATHER MISSING, BUT EXPECTED
+511 511 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20004.table b/definitions/bufr/tables/0/wmo/11/codetables/20004.table
new file mode 100644
index 0000000..bd060a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20004.table
@@ -0,0 +1,21 @@
+0 0 CLOUD COVERING 1/2 OR LESS OF THE SKY THROUGHOUT THE APPROPP"    RIATE PERIOD
+1 1 CLOUD COVERING MORE THAN 1/2 OF THE SKY DURING PART OF THE A"    PPROPRIATE PERIOD AND COVERING 1/2 OR LESS DURING PART OF TH"    E PERIOD
+2 2 CLOUD COVERING MORE THAN 1/2 OF THE SKY THROUGHOUT THE APPRP"    PRIATE PERIOD
+3 3 SANSTORM, DUSTSTORM OR BLOWING SNOW
+4 4 FOG OR ICE OR THICK HAZE
+5 5 DRIZZLE
+6 6 RAIN
+7 7 SNOW, OR RAIN AND SNOW MIXED
+8 8 SHOWER(S)
+9 9 THUNDERSTORM(S) WITH OR WITHOUT PRECIPITATION
+10 10 NO SIGNIFICANT WEATHER OBSERVED
+11 11 VISIBILITY REDUCED
+12 12 BLOWING PHENOMENA, VISIBILITY REDUCED
+13 13 FOG
+14 14 PRECIPITATION
+15 15 DRIZZLE
+16 16 RAIN
+17 17 SNOW OR ICE PELLETS
+18 18 SHOWERS OR INTERMITTENT PRECIPITATION
+19 19 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20005.table b/definitions/bufr/tables/0/wmo/11/codetables/20005.table
new file mode 100644
index 0000000..bd060a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20005.table
@@ -0,0 +1,21 @@
+0 0 CLOUD COVERING 1/2 OR LESS OF THE SKY THROUGHOUT THE APPROPP"    RIATE PERIOD
+1 1 CLOUD COVERING MORE THAN 1/2 OF THE SKY DURING PART OF THE A"    PPROPRIATE PERIOD AND COVERING 1/2 OR LESS DURING PART OF TH"    E PERIOD
+2 2 CLOUD COVERING MORE THAN 1/2 OF THE SKY THROUGHOUT THE APPRP"    PRIATE PERIOD
+3 3 SANSTORM, DUSTSTORM OR BLOWING SNOW
+4 4 FOG OR ICE OR THICK HAZE
+5 5 DRIZZLE
+6 6 RAIN
+7 7 SNOW, OR RAIN AND SNOW MIXED
+8 8 SHOWER(S)
+9 9 THUNDERSTORM(S) WITH OR WITHOUT PRECIPITATION
+10 10 NO SIGNIFICANT WEATHER OBSERVED
+11 11 VISIBILITY REDUCED
+12 12 BLOWING PHENOMENA, VISIBILITY REDUCED
+13 13 FOG
+14 14 PRECIPITATION
+15 15 DRIZZLE
+16 16 RAIN
+17 17 SNOW OR ICE PELLETS
+18 18 SHOWERS OR INTERMITTENT PRECIPITATION
+19 19 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20008.table b/definitions/bufr/tables/0/wmo/11/codetables/20008.table
new file mode 100644
index 0000000..646997b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20008.table
@@ -0,0 +1,19 @@
+0 0 SKY CLEAR
+1 1 FEW
+2 2 SCATTERED
+3 3 BROKEN
+4 4 OVERCAST
+5 5 RESERVED
+6 6 SCATTERED/BROKEN (MANY FORECASTS USE SCATTERED/BROKEN
+7 7 BROKEN/OVERCAST (BROKEN/OVERCAST FOLLOWED BY CLOUD TYPE(S))
+8 8 ISOLATED (USED ON AVIATION CHARTS TO DESCRIBE THE CLOUD TYPE"     CB)
+9 9 ISOLATED EMBEDDED (USED ON AVIATION CHARTS TO DESCRIBE THE C"    LOUD TYPE CB)
+10 10 OCCASIONAL (USED ON AVIATION CHARTS TO DESCRIBE THE CLOUD TY"    PE CB)
+11 11 OCCASIONAL EMBEDDED (USED ON AVIATION CHARTS TO DESCRIBE THE"     CLOUD TYPE CB)
+12 12 FREQUENT (USED ON AVIATION CHARTS TO DESCRIBE THE CLOUD TYPE"     CB)
+13 13 DENSE (USED ON AVIATION CHARTS TO DESCRIBE CLOUD THAT WOULD"    CAUSE SUDDEN CHANGES IN VISIBILITY (LESS THAN 1000M)
+14 14 LAYERS
+15 15 OBSCURED (OBSC)
+16 16 EMBEDDED (EMBD)
+17 17  FREQUENT EMBEDDED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20009.table b/definitions/bufr/tables/0/wmo/11/codetables/20009.table
new file mode 100644
index 0000000..084630c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20009.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 NSC MIL SIGNIFICANT CLOUD
+2 2 CAVOK
+3 3 SKC SKY CLEAR
+4 4 NSW NIL SIGNIFICANT WEATHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2001.table b/definitions/bufr/tables/0/wmo/11/codetables/2001.table
new file mode 100644
index 0000000..8259eeb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2001.table
@@ -0,0 +1,4 @@
+0 0 AUTOMATIC STATION
+1 1 MANNED STATION
+2 2 HYBRID, BOTH MANNED AND AUTOMATIC
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20011.table b/definitions/bufr/tables/0/wmo/11/codetables/20011.table
new file mode 100644
index 0000000..740be7b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20011.table
@@ -0,0 +1,11 @@
+0 0 0                              0
+1 1 1 OKTA OR LESS, BUT NOT ZERO   1/10 OR LESS, BUT NOT ZERO
+2 2 2 OKTAS                        2/10 - 3/10
+3 3 3 OKTAS                        4/10
+4 4 4 OKTAS                        5/10
+5 5 5 OKTAS                        6/10
+6 6 6 OKTAS                        7/10 - 8/10
+7 7 7 OKTAS OR MORE,BUT NOT 8 OKTAS9/10 OR MORE, BUT NOT 10/10
+8 8 8 OKTAS                        10/10
+9 9 SKY OBSCURED BY FOG AND OR OTHER METEOROLOGICAL PHENOMENA
+15 15 CLOUD COVE IS INDISCERNIBLE FOR REASONS OTHER THAN FOG OR OT"    HER METEOROLOGICAL PHENOMENA, OR OBSERVATION IS NOT MADE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20012.table b/definitions/bufr/tables/0/wmo/11/codetables/20012.table
new file mode 100644
index 0000000..ff14028
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20012.table
@@ -0,0 +1,45 @@
+0 0 CIRRUS (CI)...............CI
+1 1 CIRROCUMULUS (CC).........CC
+2 2 CIRROSTRATUS (CS).........CS
+3 3 ALTOCUMULUS  (AC).........AC
+4 4 ALTOSTRATUS  (AS).........AS
+5 5 NIMBOSTRATUS (NS).........NS
+6 6 STRATOCUMULUS(SC).........SC
+7 7 STRATUS      (ST).........ST
+8 8 CUMULUS      (CU).........CU
+9 9 CUMULONIMBUS (CB).........CB
+10 10 NO CH CLOUDS
+11 11 CIRRUS FIBRATUS, SOMETIMES UNCINUS, NOT PROGRESSIVELY INADIN"    G THE SKY
+12 12 CIRRUS SPISSATUS, IN PATCHES OR ENTANGLED SHEAVES, WHICH USU"    ALLY DO NOT INCREASE AND SOMETIMES SEEM TO BE THE REMAINS OF"     THE UPPER PART OF A
+13 13 CIRRUS SPISSATUS CUMULONIMBOGENITUS
+14 14 CIRRUS UNCINUS OR FIBRATUS,OR BOTH, PROGRESSIVELY INVADING T"    HE SKY ; THEY GENERALLY THICKEN AS A WHOLE
+15 15 CIRRUS (OFTEN IN BANDS) AND CIRROSTRATUS, OR CIRROSTRATUS AL"    ONE, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN"    ASA WHOLE, BUT THE CO
+16 16 CIRRUS (OFTEN IN BANDS) AND CIRROSTRATUS, OR CIRROSTRATUS AL"    ONE, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN"    ASA WHOLE, BUT THE CO
+17 17 CIRROSTRATUS COVERING THE WHOLE SKY
+18 18 CIRROSTRATUS NOT PROGRESSIVELY INVADING THE SKY AND NOT ENTI"    RELY COVERING IT
+19 19 CIRROCUMULUS ALONE, OR CIRROCUMULUS PREDOMINANT AMONG THE CH"     CLOUDS
+20 20 NO CM CLOUDS
+21 21 ALTOSTRATUS TRANSLUCIDUS
+22 22 ALTOSTRATUS OPACUS OR NIMBOSTRATUS
+23 23 ALTOCUMULUS TRANSLUCIDUS AT A SINGLE LEVEL
+24 24 PATCHES (OFTEN LENTICULARIS) OF ALTOCUMULUS TRANSLUCIDUS, CO"    NTINUALLY CHANGING AND OCCURING AT ONE OR MORE LEVELS
+25 25 ALTOCUMULUS TRANSLUCIDUS IN BANDS, OR ONE OR MORE LAYERS OF"    ALTOCUMULUS TRANSLUCIDUS OR OPACUS, PROGRESSIVELY INVADING T"    HE SKY; THESE ALTOCUM
+26 26 ALTOCUMULUS CUMULOGENITUS (OR CUMULONIMBOGENITUS)
+27 27 ALTOCUMULUS TRANSLUCIDUS OR OPACUS IN TWO OR MORE LAYERS, OR"     ALTOCUMULUS OPACUS IN A SINGLE LAYER, NOT PROGRESSIVELY INV"    ADING THE SKY, OR AL
+28 28 ALTOCUMULUS CASTELLANUS OR FLOCUS
+29 29 ALTOCUMULUS OF CHAOTIC SKY, GENERALLY AT SEVERAL LEVELS
+30 30 NO CL CLOUDS
+31 31 CUMULUS HUMILIS OR CUMULUS FRACTUS OTHER THAN OF BAD WEATHER"    , OR BOTH
+32 32 CUMULUS MEDIOCRIS OR CONGESTUS, WITH OR WITHOUT CUMULUS OF S"    PECIES FRACTUS OR HUMULIS OR STRATOCUMULUS, ALL HAVING THEIR"     BASES AT THE SAME L
+33 33 CUMULONIMBUS CALVUS, WITH OR WITHOUT CUMULUS, STRATOCUMULUS"    OR STRATUS
+34 34 STRATOCUMULUS CUMULOGENITUS
+35 35 STRATOCUMULUS OTHER THAN STRATOCUMULUS CUMULOGENITUS
+36 36 STRATUS NEBULOSUS OR STRATUS FRACTUS OTHER THAN OF BAD WEATH"    ER, OR BOTH
+37 37 STRATUS FRACTUS OR CUMULUS FRACTUS OF BAD WEATHER, OR BOTH"    (PANNUS), USUALLY BELOW ALTOSTRATUS OR NIMBOSTRATUS
+38 38 CUMULUS AND STRATOCUMULUS OTHER THAN STRATOCUMULUS CUMULOGEN"    ITUS, WITH BASES AT DIFFERENT LEVELS
+39 39 CUMULONIMBUS CAPILLATUS (OFTEN WITH AN ANVIL), WITH OR WITHO"    UT CUMULONIMBUS CALVUS, CUMULUS, STRATOCUMULUS, STRATUS OR P"    ANNUS
+59 59 CLOUD NOT VISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDSTO"    RM, OR OTHER ANALOGOUS PHENOMENA
+60 60 CH CLOUDS INVISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDS"    TORM, OR OTHER SIMILAR PHENOMENA, OR BECAUSE OF A CONTINUOUS"    LAYER OF LOWER CLOUD
+61 61 CM CLOUDS INVISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDS"    TORM, OR OTHER SIMILAR PHENOMENA, OR BECAUSE OF A CONTINUOUS"    LAYER OF LOWER CLOUD
+62 62 CL CLOUDS INVISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDS"    TORM, OR OTHER SIMILAR PHENOMENA
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20017.table b/definitions/bufr/tables/0/wmo/11/codetables/20017.table
new file mode 100644
index 0000000..48f9b49
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20017.table
@@ -0,0 +1,11 @@
+0 0 ISOLATED CLOUD OR FRAGMENTS OF CLOUD
+1 1 CONTINUOUS CLOUD
+2 2 BROKEN CLOUD - SMALL BREAKS, FLAT TOPS
+3 3 BROKEN CLOUD - LARGE BREAKS, FLAT TOPS
+4 4 CONTINUOUS CLOUD
+5 5 BROKEN CLOUD - SMALL BREAKS, UNDULATED TOPS
+6 6 BROKEN CLOUD - LARGE BREAKS, UNDULATED TOPS
+7 7 CONTINUOUS OR ALMOST CONTINUOUS WAVES WITH TOWERING CLOUDS A"    BOVE THE TOP OF THE LAYER
+8 8 GROUPS OF WAVES WITH TOWERING CLOUDS ABOVE THE TOP OF THE LA"    YER
+9 9 TWO OR MORE LAYERS AT DIFFERENT LEVELS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20018.table b/definitions/bufr/tables/0/wmo/11/codetables/20018.table
new file mode 100644
index 0000000..c0ffc36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20018.table
@@ -0,0 +1,4 @@
+0 0 INCREASING (U)
+1 1 DECREASING (D)
+2 2 NO DISTINCT CHANGE (N)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2002.table b/definitions/bufr/tables/0/wmo/11/codetables/2002.table
new file mode 100644
index 0000000..9b8469f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2002.table
@@ -0,0 +1,4 @@
+0 0 MEASURED IN M S-1 UNLESS OTHERWISE INDICATED
+1 1 CERTIFIED INSTRUMENTS
+2 2 ORIGINALY MEASURED IN KNOTS
+3 3 ORIGINALY MEASURED IN KM/H
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20021.table b/definitions/bufr/tables/0/wmo/11/codetables/20021.table
new file mode 100644
index 0000000..d9f7226
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20021.table
@@ -0,0 +1,24 @@
+1 1 PRECIPITATION-UNKNOWN TYPE
+2 2 LIQUID PRECIPITATION NOT FREEZING
+3 3 LIQUID FREEZING PRECIPITATION
+4 4 DRIZZLE
+5 5 RAIN
+6 6 SOLID PRECIPITATION
+7 7 SNOW
+8 8 SNOW GRAINS
+9 9 SNOW PELLETS
+10 10 ICE PELLETS
+11 11 ICE CRYSTALS
+12 12 DIAMOND DUST
+13 13 SMALL HAIL
+14 14 HAIL
+15 15 GLAZE
+16 16 RIME
+17 17 SOFT RIME
+18 18 HARD RIME
+19 19 CLEAR ICE
+20 20 WET SNOW
+21 21 HOAR FROST
+22 22 DEW
+23 23 WHITE DEW
+30 30 ALL 30 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20022.table b/definitions/bufr/tables/0/wmo/11/codetables/20022.table
new file mode 100644
index 0000000..a551aac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20022.table
@@ -0,0 +1,7 @@
+0 0 NO PRECIPITATION
+1 1 CONTINUOUS
+2 2 INTERMITTENT
+3 3 SHOWER
+4 4 NOT REACHING GROUND
+5 5 DEPOSITION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20023.table b/definitions/bufr/tables/0/wmo/11/codetables/20023.table
new file mode 100644
index 0000000..9e2093a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20023.table
@@ -0,0 +1,12 @@
+1 1 DUST/SAND WHIRL
+2 2 SQUALLS
+3 3 SAND STORM
+4 4 DUST STORM
+5 5 LIGHTNING - CLOUD TO SURFACE
+6 6 LIGHTNING - CLOUD TO CLOUD
+7 7 LIGHTNING - DISTANT
+8 8 THUNDERSTORM
+9 9 FUNNEL CLOUD NOT TOUCHING SURFACE
+10 10 FUNNEL CLOUD TOUCHING SURFACE
+11 11 SPRAY
+12 12 WATER-SPOUT
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20024.table b/definitions/bufr/tables/0/wmo/11/codetables/20024.table
new file mode 100644
index 0000000..d21d786
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20024.table
@@ -0,0 +1,7 @@
+0 0 NO PHENOMENA
+1 1 LIGHT
+2 2 MODERATE
+3 3 HEAVY
+4 4 VIOLENT
+5 5 SEVERE (VAL)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20025.table b/definitions/bufr/tables/0/wmo/11/codetables/20025.table
new file mode 100644
index 0000000..e05d542
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20025.table
@@ -0,0 +1,11 @@
+1 1 FOG
+2 2 ICE FOG
+3 3 STEAM FOG
+7 7 MIST
+8 8 HAZE
+9 9 SMOKE
+10 10 VOLCANIC ASH
+11 11 DUST
+12 12 SAND
+13 13 SNOW
+21 21 ALL 21 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20026.table b/definitions/bufr/tables/0/wmo/11/codetables/20026.table
new file mode 100644
index 0000000..541f94b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20026.table
@@ -0,0 +1,14 @@
+0 0 NO CHANGE
+1 1 SHALLOW
+2 2 PATCHES
+3 3 PARTIAL
+4 4 FREEZING
+5 5 LOW DRIFTING
+6 6 BLOWING
+7 7 INCREASING
+8 8 DECREASING
+9 9 IN SUSPENSION IN THE AIR
+10 10 WALL
+11 11 DENSE
+12 12 WHITEOUT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20027.table b/definitions/bufr/tables/0/wmo/11/codetables/20027.table
new file mode 100644
index 0000000..4d816ae
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20027.table
@@ -0,0 +1,7 @@
+1 1 AT TIME OF OBSERVATION
+2 2 IN PAST HOUR
+3 3 IN TIME PERIOD FOR PAST WEATHER W1W2
+4 4 IN TIME PERIOD SPECIFIED
+6 6 BELOW STATION LEVEL
+7 7 AT THE STATION
+8 8 IN THE VICINITY
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20029.table b/definitions/bufr/tables/0/wmo/11/codetables/20029.table
new file mode 100644
index 0000000..8b46da8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20029.table
@@ -0,0 +1,4 @@
+0 0 NO RAIN
+1 1 RAIN
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2003.table b/definitions/bufr/tables/0/wmo/11/codetables/2003.table
new file mode 100644
index 0000000..cdb2cb5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2003.table
@@ -0,0 +1,12 @@
+0 0 PRESSURE INSTRUMENT ASSOCIATED WITH WIND-MEASURING EQUIPMENT
+1 1 OPTICAL THEODOLITE
+2 2 RADIO THEODOLITE
+3 3 RADAR
+4 4 VLF-OMEGA
+5 5 LORAN C
+6 6 WIND PROFILER
+7 7 SATELLITE NAVIGATION
+8 8 RADIO-ACOUSTIC SOUNDING SYSTEM (RASS)
+9 9 SODAR
+14 14 PRESSURE INSTRUMENT ASSOCIATED WITH WIND MEASUREMENT EQUIPME"    NT BUT PRESSURE ELEMENT FAILED DURING ASCENT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20032.table b/definitions/bufr/tables/0/wmo/11/codetables/20032.table
new file mode 100644
index 0000000..87ac945
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20032.table
@@ -0,0 +1,6 @@
+0 0 ICE NOT BUILDING UP
+1 1 ICE BUILDING UP SLOWLY
+2 2 ICE BUILDING UP QUICKLY
+3 3 ICE MELTING OR BREAKING UP SLOWLY
+4 4 ICE MELTING OR BREAKING UP RAPIDLY
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20033.table b/definitions/bufr/tables/0/wmo/11/codetables/20033.table
new file mode 100644
index 0000000..6cc31fc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20033.table
@@ -0,0 +1,4 @@
+1 1 ICING FROM OCEAN SPRAY
+2 2 ICING FROM FOG
+3 3 ICING FROM RAIN
+4 4 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20034.table b/definitions/bufr/tables/0/wmo/11/codetables/20034.table
new file mode 100644
index 0000000..97199d8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20034.table
@@ -0,0 +1,12 @@
+0 0 NO SEA ICE IN SIGHT
+1 1 SHIP IN OPEN LEAD MORE THAN 1.0 NAUTICAL MILE WIDE, OR SHIP"    IN FAST ICE WITH BOUNDARY BEYOND LIMIT OF VISIBILITY
+2 2 SEA ICE PRESENT IN CONCETRATION LESS THAN 3/10 (3/8), OPEN W"    ATER OR VERY OPEN PACK ICE, SEA ICE CONCETRATION IS UNIFORM"    IN THE OBSERVATION AR
+3 3 4/10 TO 6/10 (3/8 TO LESS THAN 6/8) ,OPEN PACK ICE, SEA ICE"    CONCETRATION IS UNIFORM IN THE OBSERVATION AREA, SHIP IN ICE"     OR WITHIN 0.5 NAUTIC
+4 4 7/10 TO 8/10 (6/8 TO LESS THAN 7/8), CLOSE PACK ICE, SEA ICE"     CONCETRATION IS UNIFORM IN THE OBSERVATION AREA, SHIP IN IC"     E OR WITHIN 0.5 NAU
+5 5 9/10 OR MORE, BUT NOT 10/10 (7/8 TO LESS THAN 8/8), VERY CLO"    SE PACK ICE, SEA ICE CONCETRATION IS UNIFORM IN THE OBSERVAT"    ION AREA, SHIP IN IC
+6 6 STRIPS AND PATCHES OF PACK ICE WITH OPEN WATER BETWEEN, SEA"    ICE CONCENTRATION IS NOT UNIFORM IN THE OBSERVATION AREA, SH"    IP IN ICE OR WITHIN 0
+7 7 STRIPS AND PATCHES OF CLOSE OR VERY CLOSE PACK ICE WITH AREA"    S OF LESSER CONCENTRATION BETWEEN, SEA ICE CONCETRATION IS N"    OT UNIFORM IN THE OB
+8 8 FAST ICE WITH OPEN WATER,VERY OPEN OR OPEN PACK ICE TO SEAWA"    RD OF THE ICE BOUNDARY, SEA ICE CONCENTRATION IS NOT UNIFORM"     IN THE OBSERVATION 
+9 9 FAST ICE CLOSE OR VERY CLOSE PACK ICE TO SEAWARD OF THE ICE"    BOUNDARY, SEA ICE CONCETRATION IS NOT UNIFORM IN THE OBSERVA"    TION AREA, SHIP IN IC
+14 14 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY, O"    R BECAUSE SHIP IS MORE THAN 0.5 NAUTICAL MILE AWAY FROM ICE"    EDGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20035.table b/definitions/bufr/tables/0/wmo/11/codetables/20035.table
new file mode 100644
index 0000000..8229f90
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20035.table
@@ -0,0 +1,12 @@
+0 0 NO ICE OF LAND ORIGIN
+1 1 1-5 ICEBERGS, NO GROWLERS OR BERGY BITS
+2 2 6-10 ICEBERGS, NO GROWLERS OR BERGY BITS
+3 3 11-20 ICEBERGS, NO GROWLERS OR BERGY BITS
+4 4 UP TO AND INCLUDING 10 GROWLERS AND BERGY BITS - NO ICEBERGS
+5 5 MORE THAN 10 GROWLERS AND BERGY BITS - NO ICEBERGS
+6 6 1-5 ICEBERGS, WITH GROWLERS AND BERGY BITS
+7 7 6-10 ICEBERGS, WITH GROWLERS AND BERGY BITS
+8 8 11-20 ICEBERGS, WITH GROWLERS AND BERGY BITS
+9 9 MORE THAN 20 ICEBERGS,WITH GROWLERS AND BERGY BITS - A MAJOR"    HAZARD TO NAVIGATION
+14 14 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY OR"    BECAUSE ONLY SEA ICE IS VISIBLE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20036.table b/definitions/bufr/tables/0/wmo/11/codetables/20036.table
new file mode 100644
index 0000000..69c1c36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20036.table
@@ -0,0 +1,12 @@
+0 0 SHIP IN OPEN WATER WITH FLOATING ICE IN SIGHT
+1 1 SHIP IN EASILY PENETRABLE ICE; CONDITIONS IMPROVING
+2 2 SHIP IN EASILY PENETRABLE ICE; CONDITIONS NOT CHANGING
+3 3 SHIP IN EASILY PENETRABLE ICE; CONDITIONS WORSENING
+4 4 SHIP IN ICE DIFFICULT TO PENETRATE; CONDITIONS IMPROVING
+5 5 SHIP IN ICE DIFFICULT TO PENETRATE; CONDITIONS NOT CHANGING
+6 6 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."    ICE FORMING AND FLOES FREEZING TOGETHAR
+7 7 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."    ICE UNDER SLIGHT PRESSURE
+8 8 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."    ICE UNDER MODERATE OR SEVERE PRESSURE
+9 9 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."     SHIP BESET.
+30 30 UNABLE TO REPORT, BECAUSE OF DARKNESS OR LACK OF VISIBILITY
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20037.table b/definitions/bufr/tables/0/wmo/11/codetables/20037.table
new file mode 100644
index 0000000..ea3a1df
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20037.table
@@ -0,0 +1,12 @@
+0 0 NEW ICE ONLY (FRAZIL ICE, GREASE ICE, SLUSH, SHUGA)
+1 1 NILAS OR ICE RIND, LESS THAN 10 CM THICK
+2 2 YOUNG ICE(GREY ICE, GREY-WHITE ICE
+3 3 PREDOMINANTLY NEW AND/OR YOUNG ICE WITH SOME FIRST-YEAR ICE
+4 4 PREDOMINANTLY THIN FIRST-YEAR ICE WITH SOME NEW AND/OR YOUNG"     ICE
+5 5 ALL THIN FIRST-YEAR ICE (30-70 CM THICK)
+6 6 PREDOMINANTLY MEDIUM FIRST-YEAR ICE"    (70-120 CM THICK) AND THICK FIRST-YEAR ICE (>120 CM
+7 7 ALL MEDIUM AND THICK FIRST-YEAR ICE
+8 8 PREDOMINANTLY MEDIUM AND THICK FIRST-YEAR ICE WITH SOME"    OLD ICE (USUALLY MORE THAN 2 METRES THICK)
+9 9 PREDOMINANTLY OLD ICE
+30 30 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY OR"    BECAUSE ONLY ICE OF LAND ORIGIN IS VISIBLE OR BECAUSE SHIP I"    S MORE THAN 0.5 NAUT
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2004.table b/definitions/bufr/tables/0/wmo/11/codetables/2004.table
new file mode 100644
index 0000000..b83f216
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2004.table
@@ -0,0 +1,11 @@
+0 0 USA OPEN PAN EVAPORIMETER (WITHOUT COVER)
+1 1 USA OPEN PAN EVAPORIMETER (MESH COVERED)
+2 2 GGI-300 EVAPORIMETER (SUNKEN)
+3 3 20 M**2 TANK
+4 4 OTHERS
+5 5 RICE
+6 6 WHEAT
+7 7 MAIZE
+8 8 SORGHUM
+9 9 OTHER CROPS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20040.table b/definitions/bufr/tables/0/wmo/11/codetables/20040.table
new file mode 100644
index 0000000..32b4ebd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20040.table
@@ -0,0 +1,9 @@
+0 0 DRIFT SNOW ENDED BEFORE THE HOUR OF OBSERVATION
+1 1 INTENSITY DIMINISHING
+2 2 NO CHANGE
+3 3 INTENSITY INCREASING
+4 4 CONTINUES, APART FROM INTERRUPTION LASTING LESS THAN 30 MINU"    TES
+5 5 GENERAL DRIFT SNOW HAS BECOME DRIFT SNOW NEAR THE GROUND
+6 6 DRIFT SNOW NEAR THE GROUND HAS BECOME GENERAL DRIFT SNOW
+7 7 DRIFT SNOW HAS STARTED AGAIN AFTER AN INTERRUPTION OF MORE T"    HAN 30 MINUTES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20041.table b/definitions/bufr/tables/0/wmo/11/codetables/20041.table
new file mode 100644
index 0000000..5e5ee64
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20041.table
@@ -0,0 +1,11 @@
+0 0 NO ICING
+1 1 LIGHT ICING
+2 2 LIGHT ICING IN CLOUD
+3 3 LIGHT ICING IN PRECIPITATION
+4 4 MODERATE ICING
+5 5 MODERATE ICING IN CLOUD
+6 6 MODERATE ICING IN PRECIPITATION
+7 7 SEVERE ICING
+8 8 SEVERE ICING IN CLOUD
+9 9 SEVERE ICING IN PRECIPITATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20042.table b/definitions/bufr/tables/0/wmo/11/codetables/20042.table
new file mode 100644
index 0000000..2493af7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20042.table
@@ -0,0 +1,4 @@
+0 0 NO ICING
+1 1 ICING PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20045.table b/definitions/bufr/tables/0/wmo/11/codetables/20045.table
new file mode 100644
index 0000000..91ae63f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20045.table
@@ -0,0 +1,4 @@
+0 0 NO SLD CONDITIONS PRESENT
+1 1 SLD CONDITIONS PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20050.table b/definitions/bufr/tables/0/wmo/11/codetables/20050.table
new file mode 100644
index 0000000..3f8654e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20050.table
@@ -0,0 +1,10 @@
+0 0 RESERVED
+1 1 1ST LOW CLOUD
+2 2 2ND LOW CLOUD
+3 3 3RD LOW CLOUD
+4 4 1ST MEDIUM CLOUD
+5 5 2ND MEDIUM CLOUD
+6 6 3RD MEDIUM CLOUD
+7 7 1ST HIGH CLOUD
+8 8 2ND HIGH CLOUD
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20055.table b/definitions/bufr/tables/0/wmo/11/codetables/20055.table
new file mode 100644
index 0000000..cf3be5f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20055.table
@@ -0,0 +1,11 @@
+0 0 CUMULUS, IF ANY, ARE QUITE SMALL
+1 1 CUMULUS OF INTERMEDIATE SIZE
+2 2 SWELLING CUMULUS
+3 3 SWELLING CUMULUS WITH TOWERS
+4 4 SWELLING CUMULUS WITH TOWERS HAVING PRONOUNCED TILT
+5 5 TALL CUMULUS CONGESTUS
+6 6 ISOLATED CUMULONIMBUS
+7 7 NUMEROUS CUMULONIMBUS
+8 8 CONTINUOUS DENSE MIDDLE CLOUDS
+9 9 CONTINUOUS SHEETS OF MIDDLE CLOUDS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20056.table b/definitions/bufr/tables/0/wmo/11/codetables/20056.table
new file mode 100644
index 0000000..6598473
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20056.table
@@ -0,0 +1,5 @@
+0 0 UNKNOWN
+1 1 WATER
+2 2 ICE
+3 3 MIXED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20062.table b/definitions/bufr/tables/0/wmo/11/codetables/20062.table
new file mode 100644
index 0000000..aba68ad
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20062.table
@@ -0,0 +1,21 @@
+0 0 SURFACE OF GROUND DRY (WITHOUT CRACKS AND NO APPRECIABLE"    AMOUNT OF DUST OR LOOSE SAND)
+1 1 SURFACE OF GROUND MOIST
+2 2 SURFACE OF GROUND WET (STANDING WATER IN SMALL"    OR LARGE POOLS ON SURFACE)
+3 3 FLOODED WITHOUT SNOW
+4 4 SURFACE OF GROUND FROZEN MEASURABLE ICE
+5 5 GLAZE ON GROUND COVER
+6 6 LOOSE DRY DUST OR SAND NOT COVERING GROUND COMPLETELY
+7 7 THIN COVER OF LOOSE DRY DUST OR SAND COVERING GROUND COMPLET"    ELY
+8 8 MODERATE OR THICK COVER OF LOOSE DRY DUST OR SAND COVERING"    GROUND COMPLETELY
+9 9 EXTREMELY DRY WITH CRACKS
+10 10 GROUND PREDOMINANTLY COVERED BY ICE
+11 11 COMPACT OR WET SNOW (WITH OR WITHOUT ICE) COVERING LESS THAN"    ONE-HALF OF THE GROUND
+12 12 COMPACT OR WET SNOW (WITH OR WITHOUT ICE) COVERING AT LEAST"    ONE-HALF OF THE GROUND BUT GROUND NOT COMPLETELY COVERED
+13 13 EVEN LAYER OF COMPACT OR WET SNOW COVERING GROUND COMPLETELY
+14 14 UNEVEN LAYER OF COMPACT OR WET SNOW COVERING GROUND"    WITH SNOW OR COMPLETELY MEASURABLE ICE
+15 15 LOOSE DRY SNOW COVERING LESS THAN ONE-HALF OF THE GROUND COV"    ER
+16 16 LOOSE DRY SNOW COVERING AT LEAST ONE-HALF OF THE"    GROUND (BUT NOT COMPLETELY)
+17 17 EVEN LAYER OF LOOSE DRY SNOW COVERING GROUND COMPLETELY
+18 18 UNEVEN LAYER OF LOOSE DRY SNOW COVERING GROUND COMPLETELY
+19 19 SNOW COVERING GROUND COMPLETELY; DEEP DRIFTS
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20063.table b/definitions/bufr/tables/0/wmo/11/codetables/20063.table
new file mode 100644
index 0000000..71cb125
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20063.table
@@ -0,0 +1 @@
+0 0 TO BE DEVELOPED
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20071.table b/definitions/bufr/tables/0/wmo/11/codetables/20071.table
new file mode 100644
index 0000000..bc9d6f6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20071.table
@@ -0,0 +1,11 @@
+0 0 NO ASSESSMENT            NO ASSESSMENT
+1 1 LESS THAN 50 KM          LESS THAN 1 PER SECOND
+2 2 BETWEEN 50 AND 200 KM    LESS THAN 1 PER SECOND
+3 3 MORE THAN 200 KM         LESS THAN 1 PER SECOND
+4 4 LESS THAN 50 KM          1 OR MORE PER SECOND
+5 5 BETWEEN 50 AND 200 KM    1 OR MORE PER SECOND
+6 6 MORE THAN 200 KM         1 OR MORE PER SECOND
+7 7 LESS THANK 50 KM         RATE SO RAPID NUMBER CANNOT BE COUN"    TED
+8 8 BETWEEN 50 AND 200 KM    RATE SO RAPID NUMBER CANNOT BE COUN"    TED
+9 9 MORE THAN 200 KM         RATE SO RAPID NUMBER CANNOT BE COUN"    TED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20086.table b/definitions/bufr/tables/0/wmo/11/codetables/20086.table
new file mode 100644
index 0000000..c820dcb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20086.table
@@ -0,0 +1,8 @@
+0 0 CLEAR AND DRY
+1 1 DAMP
+5 5 WET SNOW
+6 6 SLUSH
+7 7 ICE
+8 8 COMPACTED OR ROLLED SNOW
+9 9 FROZEN RUTS OR RIDGES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20090.table b/definitions/bufr/tables/0/wmo/11/codetables/20090.table
new file mode 100644
index 0000000..a33a9d0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20090.table
@@ -0,0 +1,7 @@
+0 0 RESERVED
+1 1 NACREOUS CLOUDS
+2 2 NOCTILUCENT CLOUDS
+3 3 CLOUDS FROM WATERFALLS
+4 4 CLOUDS FROM FIRES
+5 5 CLOUDS FROM VULCANIC ERUPTIONS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20101.table b/definitions/bufr/tables/0/wmo/11/codetables/20101.table
new file mode 100644
index 0000000..7e2fa15
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20101.table
@@ -0,0 +1,10 @@
+1 1 SCHISTOCERCA GREGARIA
+2 2 LOCUSTA MIGRATORIA
+3 3 NOMADACRIS SEPTEMFASCIATA
+4 4 OEDALEUS SENAGALENSIS
+5 5 ANRACRIDIUM SPP
+6 6 OTHER LOCUST
+7 7 OTHER GRASSHOPPERS
+8 8 ITHER CRICKETS
+9 9 SPODOPTERA EXEMPTA
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/20102.table b/definitions/bufr/tables/0/wmo/11/codetables/20102.table
new file mode 100644
index 0000000..fae1feb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/20102.table
@@ -0,0 +1,11 @@
+0 0 GREEN
+1 1 GREEN AND BLACK
+2 2 BLACK
+3 3 YELLOW AND BLACK
+4 4 STRAW/GREY
+5 5 PINK
+6 6 DARK RED/BROWN
+7 7 MIXED RED AND YELLOW
+8 8 YELLOW
+9 9 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2011.table b/definitions/bufr/tables/0/wmo/11/codetables/2011.table
new file mode 100644
index 0000000..f794c4f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2011.table
@@ -0,0 +1,54 @@
+0 0 RESERVED
+1 1 RESERVED
+2 2 NO RADIOSONDE-PASSIVE TARGET(E.G.REFLECTOR)
+3 3 NO RADIOSONDE-ACTIVE TARGET(E.G.TRANSPONDER)
+4 4 NO RADIOSONDE-PASSIVE TEMPERATURE-HUMIDITY PROFILER
+5 5 NO RADIOSONDE-ACTIVE TEMPERATURE-HUMIDITY PROFILER
+6 6 NO RADIOSONDE-RADIO ACOUSTIC SOUNDER
+9 9 NO RADIOSONDE-SYSTEM UNKNOWN OR NOT SPECIFIED
+10 10 RS VIZ TYPE A (USA)
+11 11 RS VIZ TYPE B (USA)
+12 12 RS SDC (SPACE DATA CORPORATION-USA)
+13 13 ASTOR (NO LONGER MADE-AUSTRALIA)
+14 14 VIZ MARK I MICROSONDE(USA)
+15 15 EEC COMPANY TYPE 23 (USA)
+16 16 ELIN (AUSTRIA)
+17 17 GRAW G. (GERMANY)
+19 19 GRAW M60 (GERMANY)
+20 20 INDIAN MET SERVICE MK3 (INDIA)
+21 21 VIZ/JIN YANG MARK I MICROSONDE(SOUTH KOREA)
+22 22 MEISEI RS2-80 (JAPAN)
+23 23 MESURAL FMO 1950A (FRANCE)
+24 24 MESURAL FMO 19455A (FRANCE)
+25 25 MESURAL MH73A (FRANCE)
+26 26 METEOLABOR BASORA (SWITZERLAND)
+27 27 AVK-MRZ (USSR)
+28 28 METEORIT MARZ2-1 (USSR)
+29 29 METEIRIT MARZ2-2 (USSR)
+30 30 OKI RS2-80 (JAPAN)
+31 31 VIZ/VALCOM TYPE A PRESSURE-COMMUTATED(CANADA)
+32 32 SHANGAI RADIO (CHINA)
+33 33 UK MET OFFICE MK3( UK)
+34 34 VINOHRADY(CZECHOSLOVAKIA)
+35 35 VAISALA RS18 (FINLAND)
+36 36 VAISALA RS21 (FINLAND)
+37 37 VAISALA RS80 (FINLAND)
+38 38 VIZ LOCATE (LORAN-C)(USA)
+39 39 SPRENGER E076 (GERMANY)
+40 40 SPRENGER E084 (GERMANY)
+41 41 SPRENGER E085 (GERMANY)
+42 42 SPRENGER E086 (GERMANY)
+43 43 AIR IS -4A-1680 (UK)
+44 44 AIR IS -4A-1680 X (UK)
+45 45 RS MSS(USA)
+46 46 AIR IS -4A-403(USA)
+47 47 MEISLEI RS2-91(JAPAN)
+48 48 VALCOM(CANADA)
+49 49 VIZ MARK II(USA)
+60 60 VAISALA RS80/MICROCORA (FINLAND)
+61 61 VAISALA RS80/DIGCORA OR MARWIN (FINLAND)
+62 62 VAISALA RS80/PCCORA (FINLAND)
+63 63 VAISALA RS80/STAR (FINLAND)
+64 64 ORBITAL,SCIENCE CORPORATION,SPACE DATA DIVISION,TRANSPONDER"     RADIOSONDE,TYPE 909-11-XX,WHERE XX CORRECPOND TO THE MODEL"    OF THE INSTRUMENT
+65 65 VIZ TRANSPONDER RADIOSONDE,MODEL NUMBER 1499-520(USA)
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2012.table b/definitions/bufr/tables/0/wmo/11/codetables/2012.table
new file mode 100644
index 0000000..71cb125
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2012.table
@@ -0,0 +1 @@
+0 0 TO BE DEVELOPED
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2013.table b/definitions/bufr/tables/0/wmo/11/codetables/2013.table
new file mode 100644
index 0000000..a5df80f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2013.table
@@ -0,0 +1,9 @@
+0 0 NO CORRECTION
+1 1 CIMO SOLAR CORRECTED AND CIMO INFRARED CORRECTED
+2 2 CIMO SOLAR CORRECTED AND IFRARED CORRECTED
+3 3 CIMO SOLAR CORRECTED ONLY
+4 4 SOLAR AND INFRARED CORRECTED AUTOMATICALLY BY RADIOSONDE SY"    STEM
+5 5 SOLAR CORRECTED AUTOMATICALLY BY RADIOSONDE SYSTEM
+6 6 SOLAR AND INFRARED CORRECTED AS SPECIFIED BY COUNTRY
+7 7 SOLAR CORRECTED AS SPECIFIED BY COUNTRY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2014.table b/definitions/bufr/tables/0/wmo/11/codetables/2014.table
new file mode 100644
index 0000000..409caa4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2014.table
@@ -0,0 +1,50 @@
+0 0 NO WINDFINDING
+1 1 AUTOMATIC WITH AUXILIARY OPTICAL DIRECTION FINDING
+2 2 AUTOMATIC WITH AUXILIARY RADIO DIRECTION FINDING
+3 3 AUTOMATIC WITH AUXILIARY RANGING
+4 4 NOT USED
+5 5 AUTOMATIC WITH MULTIPLE VLF-OMEGA SIGNALS
+6 6 AUTOMATIC CROSS CHAIN LORAN-C
+7 7 AUTOMATIC WITH AUXILIARY WIND PROFILER
+8 8 AUTOMATIC SATELLITE NAVIGATION
+19 19 TRACKING TECHNIQUE NOT SPECIFIED
+20 20 VESSEL STOPPED
+21 21 VESSEL DIVERTED FROM ORIGINAL DESTINATION
+22 22 VESSEL'S ARRIVAL DELAYED
+23 23 CONTAINER DAMAGED
+24 24 POWER FAILURE TO CONTAINER
+29 29 OTHER PROBLEMS
+30 30 MAJOR POWER PROBLEMS
+31 31 UPS INOPERATIVE
+32 32 RECEIVER HARDWARE PROBLEMS
+33 33 RECEIVER SOFTWARE PROBLEMS
+34 34 PROCESSOR HARDWARE PROBLEMS
+35 35 PROCESSOR SOFTWARE PROBLEMS
+36 36 NAVAID SYSTEM DAMAGED
+37 37 SHORTAGE OF LIFTING GAS
+39 39 OTHER PROBLEMS
+40 40 MECHANICAL DEFECT
+41 41 MATERIAL DEFECT (HAND LAUNCHER)
+42 42 POWER FAILURE
+43 43 CONTROL FAILURE
+44 44 PNEUMATIC/HYDRAULIC FAILURE
+45 45 OTHER PROBLEMS
+46 46 COMPRESSOR PROBLEMS
+47 47 BALLOON PROBLEMS
+48 48 BALLOON RELEASE PROBLEMS
+49 49 LAUNCHER DAMAGED
+50 50 R/S RECEIVER ANTENNA DEFECT
+51 51 NAVAID ANTENNA DEFECT
+52 52 R/S RECEIVER CABLING (ANTENNA DEFECT)
+53 53 NAVAID ANTENNA CABLING DEFECT
+59 59 OTHER PROBLEMS
+60 60 ASAP COMMUNICATIONS DEFECT
+61 61 COMMUNICATIONS FACILITY REJECTED DATA
+62 62 NO POWER AT TRANSMITTINGANTENN
+63 63 ANTENNA CABLE BROKEN
+64 64 ANTENNA CABLE DEFECT
+65 65 MESSAGE TRANSMITTED POWER BELOW NORMAL
+69 69 OTHER PROBLEMS
+70 70 ALL SYSTEMS IN NORMAL OPERATION
+99 99 STATUS OF SYSTEM AND ITS COMPONENTS NOT SPECIFIED
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2015.table b/definitions/bufr/tables/0/wmo/11/codetables/2015.table
new file mode 100644
index 0000000..007a096
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2015.table
@@ -0,0 +1,6 @@
+1 1 PRESSURE ONLY RADIOSONDE
+2 2 PRESSURE ONLY RADIOSONDE PLUS TRANSPONDER
+3 3 PRESSURE ONLY RADIOSONDE PLUS RADAR REFLECTOR
+4 4 NO PRESSURE RADIOSONDE PLUS TRANSPONDER
+5 5 NO PRESSURE RADIOSONDE PLUS RADAR REFLECTOR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2016.table b/definitions/bufr/tables/0/wmo/11/codetables/2016.table
new file mode 100644
index 0000000..4a30226
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2016.table
@@ -0,0 +1,4 @@
+1 1 TRAIN REGULATOR
+2 2 LIGHT UNIT
+3 3 PARACHUTE
+4 4 ROOFTOP RELEASE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2019.table b/definitions/bufr/tables/0/wmo/11/codetables/2019.table
new file mode 100644
index 0000000..3ddc721
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2019.table
@@ -0,0 +1,296 @@
+10 10 BNSC    RADIOMETER      AATSR   ADVANCED ALONG TRACK SCANNIN"    G RADIOMETER
+11 11 BNSC    RADIOMETER      ATSR    ALONG TRACK SCANNING RADIOME"    TER
+12 12 BNSC    RADIOMETER      ATSR-2  ALONG TRACK SCANNING RADIOME"    TER  -2
+13 13 BNSC    RADIOMETER      MWR     MICROWAVE RADIOMETER
+30 30 CNES    COMMUNICATIONS  ARGOS
+40 40 CNES    LIDAR   LASER REFLECTORS
+41 41 CNES    LIDAR   DORIS   DOPPLER ORBITOGRAPHY AND RADIO-POSIT"    IONING INTEGRATED BY SATELLITE
+42 42 CNES    LIDAR   DORIS-NG        DOPPLER ORBITOGRAPHY AND RAD"    IO-POSITIONING INTEGRATED BY SATELLITE-NG
+47 47 CNES    RADAR ALTIMETERS        POSEIDON-1 (SSALT-1)    POSI"    TIONING OCEAN SOLID EARTH ICE DYNAMICS ORBITING NAVIGATOR (S"    INGLE FREQUENCY SOLI
+48 48  CNES    RADAR ALTIMETERS        POSEIDON-2 (SSALT-2)   POSI"    TIONING OCEAN SOLID EARTH ICE DYNAMICS ORBITING NAVIGATOR (D"    UAL FREQUENCY SOLID 
+50 50 CNES    IMAGER RADIOMETER       ATSR/M  ATSR/M
+51 51 CNES    HIGH RESOLUTION OPTICAL IMAGERS HRG
+52 52 CNES    RADIOMETER      HRV     HIGH RESOLUTION VISIBLE
+53 53 CNES    RADIOMETER      HRVIR   HIGH RESOLUTION VISIBLE AND"            INFRA-RED
+54 54 CNES    RADIOMETER      SCARAB/MV2      SCANNER FOR EARTH'S"            RADIATION BUDGET
+55 55 CNES    RADIOMETER      POLDER  POLDER
+60 60 CNES    SPECTROMETER    VEGETATION      VEGETATION
+61 61 CNES    SPECTROMETER    WINDII  WINDII
+80 80 CSA     COMMUNICATIONS  RADARSAT DTT
+81 81 CSA     COMMUNICATIONS  RADARSAT TTC
+85 85 CSA     RADAR   SAR (CSA)       SYNTHETIC APERTURE RADAR (CS"    A)
+90 90 CSA     RADIOMETER      MOPITT  MEASUREMENTS OF POLLUTION IN"     THE TROPOSPHERE
+91 91 CSA     CHEMISTRY INSTRUMENTS   OSIRIS  OPTICAL SPECTROGRAPH"     AND INFRA-RED IMAGING SYSTEM
+97 97 CSIRO   RADIOMETER      PANCHROMATIC IMAGER
+98 98 CRCSS   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   GPS"    RECEIVER
+102 102 DLR     RADIOMETER      CHAMP GPS SOUNDER       GPS TURBORO"    GUE SPACE RECEIVER (TRSR)
+103 103 UNKNOWN
+116 116 DLR MAGNETOMETER    IGOR CHAMP GRAVITY PACKAGE (ACCELEROMETE"    R+GPS)       INTEGRATED GPS AND OCCULTATION RECEIVER STAR AC"    CELEROMETER
+117 117 DLR     MAGNETOMETER    CHAMP MAGNETOMETRY PACKAGE (1 SCALAR"    +2 VECTOR MAGNETOMETER)     OVERHAUSER MAGNETOMETER (OVM) AN"    D FLUXGATE MAGNETOME
+120 120 ESA     COMMUNICATIONS  ENVISAT COMMS   COMMUNICATIONS PACKA"    GE ON ENVISAT
+121 121 ESA     COMMUNICATIONS  ERS COMMS       COMMUNICATION PACKAG"    E FOR ERS
+130 130 ESA     LIDARS  ALADIN  ATMOSPHERIC LASER DOPPLER INSTRUMENT
+131 131 ESA     LIDARS  ATLID   ATMOSPHERIC LIDAR
+140 140 ESA     RADAR   AMI/SAR/IMAGE   ACTIVE MICROWAVE INSTRUMENTA"    TION. IMAGE MODE
+141 141 ESA     RADAR   AMI/SAR/WAVE    ACTIVE MICROWAVE INSTRUMENTA"    TION. WAVE MODE
+142 142 ESA     RADAR   AMI/SCATTEROMETER       ACTIVE MICROWAVE INS"    TRUMENTATION. WIND MODE
+143 143 ESA     RADAR   ASAR    ASAR
+144 144 ESA     IMAGING MICROWAVE RADARS        ASAR    ADVANCED SYN"    TETIC APERTURA RADAR (IMAGE MODE)
+145 145 ESA     IMAGING MICROWAVE RADARS        ASAR    ADVANCED SYN"    TETIC APERTURA RADAR (WAVE MODE)
+146 146 ESA     CLOUD PROFILE AND RAIN RADARS   CPR     CLOUD RADAR
+147 147 ESA     RADAR   RA-2/MWR        RADAR ALTIMETER - 2
+148 148 ESA     RADAR   RA/MWR  RADAR ALTIMETER
+150 150 ESA     SCATTEROMETERS  SCATTEROMETER   SCATTEROMETER
+161 161 ESA     RADIOMETER      MIPAS   MICHELSON INTERFEROMETRIC PA"    SSIVE ATMOSPHERE SOUNDER
+162 162 ESA     IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E   MWR-2   MICROWAVE RADIOMETER-2
+163 163 ESA     ATMOSPHERIC CHEMISTRY INSTRUMENTS       SOPRANO SUB-"    MILIMETRE OBSERVATION OF PROCESSES IN THE ABSORPTION NOTEWOR"    THY FOR OZONE
+170 170 ESA     ATMOSPHERIC CHEMISTRY INSTRUMENTS       GOME I  GLOB"    AL OZONE MONITORING EXPERIMENT
+172 172 ESA     SPECTROMETER    GOMOS   GLOBAL OZONE MONITORING BY O"    CCULTATION OF STARS
+174 174 ESA     SPECTROMETER    MERIS   MEDIUM RESOLUTION IMAGING SP"    ECTROMETER
+175 175 ESA     SPECTROMETER    SCIAMACHY       SCANNING IMAGING ABS"    ORPTION SPECTROMETER FOR ATMOSPHERIC CARTOGRAPHY
+181 181 EUMETSAT        COMMUNICATIONS  METEOSAT COMMS  COMMUNICATIO"    NS PACKAGE FOR METEOSAT
+182 182 EUMETSAT        COMMUNICATIONS  MSG COMMS       COMMUNICATIO"    NS PACKAGE FOR MSG
+190 190 ESA/ EUMETSAT        SCATTEROMETERS  ASCAT   ADVANCED SCATTE"    ROMETER
+200 200 EUMETSAT        RADIOMETER      GERB    GEOSTATIONARY EARTH"    RADIATION BUDGET
+202 202 ESA/ EUMETSAT        RADIOMETER      GRAS    GNSS RECEIVER F"    OR ATMOSPHERIC SOUNDING
+203 203 EUMETSAT        RADIOMETER      MHS     MICROWAVE HUMIDITY S"    OUNDER
+205 205 EUMETSAT        RADIOMETER      MVIRI   METEOSAT VISIBLE AND"    INFRA-RED IMAGER
+207 207 EUMETSAT        RADIOMETER      SEVIRI  SPINNING ENHANCED VI"    SIBLE AND INFRARED IMAGER
+208 208 EUMETSAT        IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)"        VIRI    VIRI
+220 220 ESA/ EUMETSAT        SPECTROMETER    GOME-2  GLOBAL OZONE MO"    NITORING EXPERIMENT - 2
+221 221 CNES/ EUMETSAT        ATMOSPHERIC TEMPERATURE AND HUMIDITY S"    OUNDERS   IASI    INFRA-RED ATMOSPHERIC SOUNDING INTERFEROME"    TER
+240 240 CAST    COMMUNICATIONS  DCP     DATA COLLECTION PLATFORM TRA"    NSPONDER
+245 245 CAST    RADIOMETER      CCD     HIGH RESOLUTION CCD CAMERA
+246 246 INPE    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   HSB"        HUMIDITY SOUNDER/BRAZIL
+248 248 INPE    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     OBA"        OBSERVADOR BRASILEIRO DA AMAZONIA
+250 250 CAST    RADIOMETER      WFI     WIDE FIELD IMAGER
+255 255 CAST    SPECTROMETER    IRMSS   INFRA RED MULTI SPECTRAL SCA"    NNER
+260 260 ISRO    PRECISION ORBIT BSS & FSS TRANSPONDERS
+261 261 ISRO    PRECISION ORBIT DRT-S&R
+262 262 ISRO    COMMUNICATIONS  INSAT COMMS     COMMUNICATIONS PACKA"    GE FOR INSAT
+268 268 ISRO    HIGH RESOLUTION OPTICAL IMAGERS HR-PAN  HIGH RESOLUT"    ION PANCHROMATIC CAMERA
+269 269 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  MSMR    MULTIFREQUENCY SCANNING MICROWAVE RADIOMETER
+270 270 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VHRR"        VERY HIGH RESOLUTION RADIOMETER
+271 271 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     WIFS"        WIDE FIELD SENSOR
+275 275 ISRO    HIGH RESOLUTION OPTICAL IMAGERS AWIFS   ADVANCED WID"    E FIELD SENSOR
+276 276 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-I  LINEAR IMAGI"    NG SELF SCANNER - I
+277 277 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-II LINEAR IMAGI"    NG SELF SCANNER - II
+278 278 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-III        LINE"    AR IMAGING SELF SCANNER - III
+279 279 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-IV LINEAR IMAGI"    NG SELF SCANNER - IV
+284 284 ISRO    HIGH RESOLUTION OPTICAL IMAGERS PAN     PANCHROMATIC"     SENSOR
+285 285 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     MOS"        MODULAR OPTO-ELECTRONIC SCANNER
+286 286 ISRO    OCEAN COLOUR INSTRUMENTS        OCM     OCEAN COLOUR"     MONITOR
+290 290 JMA     COMMUNICATIONS  MTSAT COMMS     COMMUNICATIONS PACKA"    GE FOR MTSAT
+294 294 JMA     IMAGING MULTI-SPECTRAL RADIOMETERS      IMAGER/MTSAT"    -1R IMAGER/MTSAT
+295 295 JMA     IMAGING MULTI-SPECTRAL RADIOMETERS      IMAGER/MTSAT"        IMAGER/MTSAT
+296 296 JMA     IMAGING MULTI-SPECTRAL RADIOMETERS      VISSR (GMS4)"        VISIBLE AND INFRA-RED SPIN SCAN RADIOMETER (GMS4)
+300 300 NASA    LIDARS  GLAS    GEOSCIENCE LASER ALTIMETER SYSTEM
+301 301 NASA    PRECISION ORBIT LRA     LASER RETROREFLECTOR ARRAY
+302 302 NASA    LIDARS  MBLA    MULTI BEAM LASER ALTIMETER
+309 309 NASA    CLOUD PROFILE AND RAIN RADARS   CPR (CLOUDSAT)  CLOU"    D PROFILING RADAR
+312 312 NASA    RADAR   NSCAT   NASA SCATTEROMETER
+313 313 NASA    RADAR   SEAWINDS       ADEOS II - NASA SCATTEROMETER
+330 330 NASA    EARTH RADIATION BUDGET RADIOMETER       ACRIM   ACTI"    VE CAVITY RADIOMETER IRRADIANCE MONITOR
+334 334 NASA    TOTAL AND PROFILE OZONE BUV     BACKSCATTER ULTRAVIO"    LET INSTRUMENT
+336 336 NASA    HIGH RESOLUTION OPTICAL IMAGERS ALI     ADVANCED LAN"    D IMAGER
+347 347 NASA    HIGH RESOLUTION OPTICAL IMAGERS ASTER   ADVANCED SPA"    CEBORNE THERMAL EMISSION AND REFLECTION RADIOMETER
+348 348 NASA    EARTH RADIATION BUDGET RADIOMETER       CERES-2 CLOU"    D AND THE EARTH'S RADIANT ENERGY SYSTEM
+351 351 CONAE   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   GPSD"    R   GPS DEMONSTRATION RECEIVER
+353 353 NASA    TOTAL AND PROFILE OZONE HIRDLS  HIGH RESOLUTION DYNA"    MICS LIMB SOUNDER
+354 354 NASA    TOTAL AND PROFILE OZONE HRDI    HIGH RESOLUTION DOPP"    LER IMAGER
+356 356 NASA    RADIOMETER      LIS     LIGHTNING IMAGING SENSOR
+358 358 NASA    MAGNETIC FIELD, AUROAL IMAGERYSCINTILLATION BOUNDARY"        PEM     PARTICLE ENVIRONMENT MONITOR
+359 359 NASA    OCEAN COLOUR INSTRUMENTS        SEAWIFS SEA-VIEWING"    WIDE FIELD-OF-VIEW SENSOR
+360 360 NASA    EARTH RADIATION BUDGET RADIOMETER       SUSIM (UARS)"        SOLAR ULTRAVIOLET IRRADIANCE MONITOR
+363 363 NASA    TOTAL AND PROFILE OZONE SBUV/1  SOLAR BACKSCATTER UL"    TRAVIOLET 1 INSTRUMENT
+365 365 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  TMI     TRMM MICROWAVE IMAGER
+366 366 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  JMR     JASON-1 MICROWAVE RADIOMETER
+369 369 NASA    TOTAL AND PROFILE OZONE LIMS    LIMB INFRARED MONITO"    R OF THE STRATOSPHERE
+370 370 NASA    TOTAL AND PROFILE OZONE LRIR    LIMB RADIANCE INVERS"    ION RADIOMETER INSTRUMENT
+371 371 NASA    TOTAL AND PROFILE OZONE EPIC    EARTH POLYCHROMATIC"    IMAGING CAMERA
+372 372 NASA    EARTH RADIATION BUDGET RADIOMETER       NISTAR  NIST"     ADVANCED RADIOMETER
+373 373 NASA    MAGNETIC FIELD, AUROAL IMAGERY SCINTILLATION BOUNDAR"    Y   PLASMA-MAG
+374 374 NASA    OTHER   XPS     XUV PHOTOMETER SYSTEM
+375 375 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VIRS"        VISIBLE INFRA-RED SCANNER
+376 376 CNES    MULTIPLE DIRECTION/POLARISATION RADIOMETERS     POLD"    ER II       POLARIZATION AND DIRECTIONALITY OF THE EARTH'S R"    EFLECTANCE - II
+377 377 NASA    EARTH RADIATION BUDGET RADIOMETER       TIM     TOTA"    L IRRADIANCE MONITOR
+379 379 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     WFC"        WIDE FIELD CAMERA
+382 382 NASA    SPECTRO-RADIOMETER      CLAES   CRYOGENIC LIMB ARRAY"     ETALON SPECTROMETER
+383 383 NASA    SPECTRO-RADIOMETER      HALOE   HALOGEN OCCULTATION"    EXPERIMENT
+384 384 NASA    SPECTRO-RADIOMETER      ISAMS   IMPROVED STRATOSPHER"    IC AND MESOSPHERIC SOUNDER
+385 385 NASA    SPECTRO-RADIOMETER      MISR    MULTI-ANGLE IMAGING"    SPECTRORADIOMETER
+386 386 NASA    SPECTRO-RADIOMETER    MLS     MICROWAVE LIMB SOUNDER
+387 387 NASA    SPECTRO-RADIOMETER    MLS (EOS-AURA)  MICROWAVE LIMB"     SOUNDER (EOS-AURA)
+389 389 NASA    SPECTRO-RADIOMETER      MODIS   MODERATE-RESOLUTION"    IMAGING SPECTRORADIOMETER
+393 393 NASA    GRAVITY HAIRS   HIGH ACCURACY INTER-SATELLITE RANGIN"    G SYSTEM
+394 394 NASA    TOTAL AND PROFILE OZONE OMI     OZONE MEASURING INST"    RUMENT
+395 395 NASA    RADIOMETER      ATMOSPHERIC CORRECTOR   ATMOSPHERIC"    CORRECTOR
+396 396 NASA    RADIOMETER      HYPERION        HYPERSPECTRAL IMAGER
+399 399 NASA    SPECTRO-RADIOMETER      SAGE I  STRATOSPHERIC AEROSO"    L AND GAS EXPERIMENT-I
+400 400 NASA    SPECTRO-RADIOMETER      SAGE II STRATOSPHERIC AEROSO"    L AND GAS EXPERIMENT-II
+401 401 NASA    SPECTRO-RADIOMETER      SAGE III        STRATOSPHERI"    C AEROSOL AND GAS EXPERIMENT-III
+402 402 NASA    SPECTRO-RADIOMETER      SAMS    STRATOSPHERIC AND ME"    SOSPHERIC SOUNDER
+403 403 NASA    SPECTRO-RADIOMETER      SAM II  STRATOSPHERIC AEROSO"    L MEASUREMENT II
+404 404 NASA    SPECTRO-RADIOMETER      IRIS    INFRARED INTERFEROME"    TER SPECTROMETER
+405 405 NASA    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   GIFT"    S   GEOSYNCHRONOUS IMAGING FOURIER TRANSFORM SPECTROMETER
+420 420 NASA    SPECTROMETER    AIRS   ATMOSPHERIC INFRA-RED SOUNDER
+426 426 NASA    SPECTROMETER    SOLSTICE        SOLAR STELLAR IRRADI"    ANCE COMPARISON EXPERIMENT
+430 430 NASA    SPECTROMETER    TES     TROPOSHPERIC EMISSION SPECTR"    OMETER
+431 431 NASA    SPECTROMETER    TOMS    TOTAL OZONE MAPPING SPECTROM"    ETER
+450 450 JAXA    COMMUNICATIONS  ADEOS COMMS     COMMUNICATIONS PACKA"    GE FOR ADEOS
+451 451 JAXA    COMMUNICATIONS  DCS (JAXA)      DATA COLLECTION SYST"    EM (JAXA)
+453 453 JAXA    COMMUNICATIONS  GMS COMMS       COMMUNICATIONS PACKA"    GE ON GMS
+454 454 JAXA    COMMUNICATIONS  JERS-1 COMMS    COMMUNICATIONS PACKA"    GE FOR JERS-1
+460 460 JAXA    LIDAR   RIS     RETROREFLECTOR IN SPACE
+461 461 JAXA    RADAR   PR      PRECIPITATION RADAR
+462 462 JAXA    IMAGING MICROWAVE RADARS        SAR     SYNTETIC APE"    RTURE RADAR
+470 470 JAXA    IMAGING MICROWAVE RADARS        PALSAR  PHASED ARRAY"     TYPE L-BAND SYNTHETIC APERTURE RADAR
+479 479 JAXA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  AMSR-E  ADVANCED MICROWAVE SCANNING RADIOMETER-EOS
+480 480 JAXA    HIGH RESOLUTION OPTICAL IMAGERS PRISM (ALOS)    PANC"    HROMATIC REMOTE-SENSING INSTRUMENT FOR STEREO MAPPING
+481 481 JAXA    RADIOMETER      AMSR    ADVANCED MICROWAVE SCANNING"    RADIOMETER
+482 482 JAXA    HIGH RESOLUTION OPTICAL IMAGERS AVNIR   ADVANCED VIS"    IBLE AND NEAR INFRARED RADIOMETER
+483 483 JAXA    HIGH RESOLUTION OPTICAL IMAGERS AVNIR-2 ADVANCED VIS"    IBLE AND NEAR INFRA-RED RADIOMETER TYPE 2
+484 484 JAXA    IMAGER  GLI     GLOBAL IMAGER
+485 485 JAXA    RADIOMETER      MESSR   MULTISPECTRAL ELECTRONIC SEL"    F SCANNING RADIOMETER
+486 486 JAXA    RADIOMETER      MSR    MICROWAVE SCANNING RADIOMETER
+487 487 JAXA    RADIOMETER      OCTS   OCEAN COLOR AND TEMPERATURE S"    CANNER
+488 488 JAXA    RADIOMETER      OPS     OPTICAL SENSOR
+489 489 JAXA    SPECTRO-RADIOMETER      VISSR (GMS5)    VISIBLE AND"    INFRA-RED SPIN SCAN RADIOMETER (GMS5)
+490 490 JAXA    RADIOMETER      VTIR    VISIBLE AND THERMAL INFRA-RE"    D RADIOMETER
+510 510 JAXA    SPECTROMETER    ILAS-I  IMOROVED LIMB ATOMOSPHIRIC S"    PECTROMETER
+511 511 JAXA    SPECTROMETER    ILAS-II IMPROVED LIMB ATOMOSPHIRIC S"    PECTROMETER
+512 512 JAXA    SPECTROMETER    IMG     INFEROMETRIC MONITOR OF GREE"    NHOUSE GASES
+514 514 JAXA    SPACE ENVIRONMENT       SEM     SPACE ENVIRONMENT MO"    NITOR (JAXA)
+515 515 JAXA    TOTAL AND PROFILE OZONE SOFIS   SOLAR OCCULTATION FO"    URIER TRANSFORM SPECTROMETER FOR INCLINED ORBIT SATELLITE
+540 540 NOAA    COMMUNICATIONS  DCS (NOAA)      DATA COLLECTION SYST"    EM (NOAA)
+541 541 NOAA    COMMUNICATIONS  GOES COMMS      COMMUNICATIONS PACKA"    GE ON GOES
+542 542 NOAA    COMMUNICATIONS  LANDSAT COMMS   COMMUNICATIONS PACKA"    GE FOR LANDSAT
+543 543 NOAA    COMMUNICATIONS  NOAA COMMS      COMMUNICATIONS PACKA"    GE FOR NOAA
+544 544 NOAA    COMMUNICATIONS  S&R (GOES)      SEARCH AND RESCUE
+545 545 NOAA    COMMUNICATIONS  S&R (NOAA)      SEARCH AND RESCUE
+546 546 NOAA    COMMUNICATIONS  WEFAX   WEATHER FACSIMILE
+547 547 NOAA    SPECTROMETER    SEM(GOES)       SPACE ENVIRONMENT MO"    NITOR
+550 550 NOAA    MAGNETIC FIELD  SSM     SPECIAL SENSOR MAGNETOMETER
+551 551 NOAA    MAGNETIC FIELD  SSJ/4   SPECIAL SENSOR PRECIPITATING"     PLASMA MONITOR
+552 552 NOAA    SPACE ENVIRONMENT       SSIES-2 SPECIAL SENSOR IONOS"    PHERIC PLASMA DRIFT/SCINTILLATION METER
+553 553 NOAA    SPACE ENVIRONMENT       SSB/X-2 SPECIAL SENSOR GAMMA"     RAY PARTICLE DECTECTOR
+570 570 NOAA    RADIOMETER      AMSU-A  ADVANCED MICROWAVE SOUNDING"    UNIT-A
+574 574 NOAA    RADIOMETER      AMSU-B  ADVANCED MICROWAVE SOUNDING"    UNIT-B
+580 580 NOAA    RADIOMETER      ATOVS (HIRS/3 + AMSU + AVHRR/3) ADVA"    NCED TIROS OPERATIONAL VERTICAL SOUNDER
+590 590 NOAA    RADIOMETER      AVHRR/2 ADVANCED VERY HIGH RESOLUTIO"    N RADIOMETER/2
+591 591 NOAA    RADIOMETER      AVHRR/3 ADVANCED VERY HIGH RESOLUTIO"    N RADIOMETER/3
+592 592 NOAA    RADIOMETER      AVHRR/4 ADVANCED VERY HIGH RESOLUTIO"    N RADIOMETER/4
+600 600 NOAA    RADIOMETER      ERBE    EARTH'S RADIATION BUDGET EXP"    ERIMENT
+601 601 NOAA    RADIOMETER      ETM+    ENHANCED THEMATIC MAPPER
+605 605 NOAA    RADIOMETER      HIRS/2  HIGH RESOLUTION INFRA-RED SO"    UNDER/2
+606 606 NOAA    RADIOMETER      HIRS/3  HIGH RESOLUTION INFRA-RED SO"    UNDER/3
+607 607 NOAA    RADIOMETER      HIRS/4  HIGH RESOLUTION INFRA-RED SO"    UNDER/4
+615 615 NOAA    RADIOMETER      IMAGER  IMAGER
+616 616 NOAA    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VIIR"    S   VISIBLE/INFRARED IMAGER RADIOMETER SUITE
+620 620 NOAA    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   CRIR"    S/NP        CROSS TRACK INFRA-RED SOUNDER/NPOESS
+621 621 NOAA    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   ATMS"        ADVANCED TECHNOLOGY MICROWAVE SOUNDER
+622 622 NOAA    RADIOMETER      MSS    MULTISPECTRAL SCANNING SYSTEM
+623 623 NOAA    RADIOMETER      MSU     MICROWAVE SOUNDING UNIT
+624 624 NOAA    RADIOMETER      SBUV/2  SOLAR BACKSCATTTER ULTRA-VIO"    LET INSTRUMENT/2
+625 625 NOAA    RADIOMETER      SBUV/3  SOLAR BACKSCATTTER ULTRA-VIO"    LET INSTRUMENT/3
+626 626 NOAA    RADIOMETER      SOUNDER SOUNDER
+627 627 NOAA    RADIOMETER      SSU     STRATOSPHERIC SOUNDING UNIT
+628 628 NOAA    RADIOMETER      TM      THEMATIC MAPPER
+629 629 NOAA    RADIOMETER      TOVS (HIRS/2 + MSU + SSU)       TIRO"    S OPERATIONAL VERTICAL SOUNDER
+630 630 NOAA    RADIOMETER      VAS     VISSR ATMOSPHERIC SOUNDER
+631 631 NOAA    RADIOMETER      SSZ
+645 645 NOAA    SPECTROMETER    SEM     SPACE ENVIRONMENT MONITOR
+650 650 NRSCC   RADIOMETER      MVIRSR (10 CHANNEL)     MULTISPECTRA"    L VISIBLE AND INFRA-RED SCAN RADIOMETER
+651 651 NRSCC   RADIOMETER      MVIRSR (3 CHANNEL)      MULTISPECTRA"    L VISIBLE AND INFRA-RED SCAN RADIOMETER
+652 652 NRSCC   RADIOMETER      MVIRSR (5 CHANNEL)      MULTISPECTRA"    L VISIBLE AND INFRA-RED SCAN RADIOMETER
+670 670 NSAU    RADAR   RLSBO   SIDE LOOKING MICROWAVE RADAR
+680 680 NSAU    HIGH RESOLUTION OPTICAL IMAGERS MSU-EU  MULTI-SPECTR"    AL RADIOMETER WITH HIGH RESOLUTION
+681 681 NSAU    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     MSU-"    UM  VISIBLE MULTI-SPECTRAL RADIOMETER
+682 682 NSAU    RADIOMETER      RM-08   IMAGING MICROWAVE RADIOMETER
+683 683 NSAU    HIGH RESOLUTION OPTICAL IMAGERS SU-UMS  STEREO RADIO"    METER WITH HIGH RESOLUTION
+684 684 NSAU    HIGH RESOLUTION OPTICAL IMAGERS SU-VR   VISIBLE RADI"    OMETER WITH HIGH RESOLUTION
+685 685 NSAU    RADIOMETER      TRASSER
+700 700 ROSCOSMOS       COMMUNICATIONS  KONDOR-2        DATA COLLECT"    ION AND TRANSMISSION SYSTEM
+701 701 ROSCOSMOS       COMMUNICATIONS  BRK
+710 710 ROSCOSMOS       LIDAR   ALISSA  BACKSCATTER LIDAR
+712 712 ROSCOSMOS       LIDAR   BALKAN-2 LIDAR
+715 715 ROSCOSMOS       LIDAR   MK-4
+716 716 ROSCOSMOS       LIDAR   MK-4M
+730 730 ROSCOSMOS       RADAR   GREBEN  RADAR ALTIMETER
+731 731 ROSCOSMOS       RADAR   SAR-10  SYNTETIC APERTURE RADAR
+732 732 ROSCOSMOS       RADAR   SAR-3   SYNTETIC APERTURE RADAR
+733 733 ROSCOSMOS       RADAR   SAR-70  SYNTETIC APERTURE RADAR
+740 740 ROSCOSMOS       RADAR   SLR-3   SIDE LOOKING RADAR
+745 745 ROSCOSMOS       RADAR   TRAVERS SAR
+750 750 ROSCOSMOS       RADIOMETER      174-K   TEMPERATURE AND HUMI"    DITY PROFILER
+751 751 ROSCOSMOS       RADIOMETER      BTVK    SCANNING TELEVISION"    RADIOMETER
+752 752 ROSCOSMOS       RADIOMETER      CHAIKA  SCANNING IR RADIOMET"    ER
+753 753 ROSCOSMOS       RADIOMETER      DELTA-2 MULTISPECTRAL MICROW"    AVE SCANNER
+755 755 ROSCOSMOS       RADIOMETER      IKAR-D  MULTISPECTRAL MICROW"    AVE SCANNER
+756 756 ROSCOSMOS       RADIOMETER      IKAR-N  MULTISPECTRAL MICROW"    AVE SCANNER
+757 757 ROSCOSMOS       RADIOMETER      IKAR-P  MULTISPECTRAL MICROW"    AVE SCANNER
+760 760 ROSCOSMOS       RADIOMETER      ISP
+761 761 ROSCOSMOS       RADIOMETER      KFA-1000        PHOTOGRAPHIC"     CAMERA
+762 762 ROSCOSMOS       RADIOMETER      KFA-200 PHOTOGRAPHIC CAMERA
+763 763 ROSCOSMOS       RADIOMETER      KFA-3000        PHOTOGRAPHIC"     CAMERA
+770 770 ROSCOSMOS       RADIOMETER     KLIMAT SCANNING IR RADIOMETER
+771 771 ROSCOSMOS       RADIOMETER      KLIMAT-2        SCANNING IR"    RADIOMETER
+775 775 ROSCOSMOS       RADIOMETER      MIRAS
+776 776 ROSCOSMOS       RADIOMETER      MIVZA
+777 777 ROSCOSMOS       RADIOMETER      MIVZA-M MICROWAVE SCANNING R"    ADIOMETER
+780 780 ROSCOSMOS       RADIOMETER      MR-2000
+781 781 ROSCOSMOS       RADIOMETER      MR-2000M
+785 785 ROSCOSMOS       RADIOMETER      MR-900  SCANNING TELEPHOTOME"    TER
+786 786 ROSCOSMOS       RADIOMETER      MR-900B SCANNING VISUAL BAND"     TELEPHOTOMETER
+790 790 ROSCOSMOS       RADIOMETER      MSU-E   MULTISPECTRAL HIGH R"    ESOLUTION ELECTRONIC SCANNER
+791 791 ROSCOSMOS       RADIOMETER      MSU-E1  MULTISPECTRAL HIGH R"    ESOLUTION ELECTRONIC SCANNER
+792 792 ROSCOSMOS       RADIOMETER      MSU-E2  MULTISPECTRAL HIGH R"    ESOLUTION ELECTRONIC SCANNER
+793 793 ROSCOSMOS       RADIOMETER      MSU-M
+794 794 ROSCOSMOS       RADIOMETER      MSU-S   MULTISPECTRAL MEDIUM"     RESOLUTION SCANNER
+795 795 ROSCOSMOS       RADIOMETER      MSU-SK  MULTISPECTRAL MEDIUM"    RESOLUTION CONICAL SCANNER
+796 796 ROSCOSMOS       RADIOMETER      MSU-V   MULTISPECTRAL HIGH R"    ESOLUTION CONICAL SCANNER
+810 810 ROSCOSMOS       RADIOMETER      MTZA    SCANNING MICROWAVE R"    ADIOMETER
+815 815 ROSCOSMOS       IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE"    MICROWAVE)  MZOAS   SCANNING MICROWAVE RADIO"    METER
+820 820 ROSCOSMOS       IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE"    MICROWAVE)  R-225   SINGLE CHANNEL MICROWAVE"     RADIOMETER
+821 821 ROSCOSMOS       RADIOMETER      R-400
+822 822 ROSCOSMOS       RADIOMETER      R-600   SINGLE CHANNEL MICRO"    WAVE RADIOMETER
+830 830 ROSCOSMOS       RADIOMETER      RMS     RADIATION MEASUREMEN"    T SYSTEM
+835 835 ROSCOSMOS       RADIOMETER      TV CAMERA
+836 836 ROSCOSMOS       RADIOMETER      SILVA
+840 840 ROSCOSMOS       SPECTRO-RADIOMETER      SROSMO  SPECTRORADIO"    METER FOR OCEAN MONITORING
+850 850 ROSCOSMOS       SPECTROMETER    BUFS-2  BACKSCATTER SPECTROM"    ETER/2
+851 851 ROSCOSMOS       SPECTROMETER    BUFS-4  BACKSCATTER SPECTROM"    ETER/4
+855 855 ROSCOSMOS       SPECTROMETER    ISTOK-1 INFRA-RED SPECTROMET"    ER
+856 856 ROSCOSMOS       SPECTROMETER    SFM-2   SPECTROMETER TO MEAS"    URE DIRECT SOLAR RADIATION
+857 857 ROSCOSMOS       SPECTROMETER    DOPI
+858 858 ROSCOSMOS       SPECTROMETER    KGI-4
+859 859 ROSCOSMOS       SPECTROMETER    OZON-M
+860 860 ROSCOSMOS       SPECTROMETER    RMK-2
+900 900 NOAA    RADIOMETER      MAXIE   MAGNETOSPHERIC ATMOSPHERIC X"    -RAY IMAGING EXPERIMENT
+901 901 NOAA    RADIOMETER      OLS     OPERATIONAL LINESCAN SYSTEM
+905 905 NOAA    RADIOMETER      SSM/I   MISSION SENSOR MICROWAVE IMA"    GER
+906 906 NOAA    RADIOMETER      SSM/T-1 MISSION SENSOR MICROWAVE TEM"    PERATURE SOUNDER
+907 907 NOAA    RADIOMETER      SSM/T-2 MISSION SENSOR MICROWAVE WAT"    ER VAPOR SOUNDER
+908 908 NOAA    RADIOMETER      SSMIS   SPECIAL SENSOR MICROWAVE IMA"    GER SOUNDER
+910 910 NOAA    RADIOMETER      SXI     SOLAR X-RAY IMAGER
+930 930 NOAA    SPECTROMETER    EHIC    ENERGETIC HEAVY ION COMPOSIT"    ION EXPERIMENT
+931 931 NOAA    SPECTROMETER    X-RAY ASTRONOMY PAYLOAD
+932 932 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     IVIS"    SR (FY-2)   IMPROVED MULTISPECTRAL VISIBLE AND INFRA-RED SCA"    N RADIOMETER (5 CHAN
+933 933 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   IRAS"        INFRARED ATMOSPHERIC SOUNDER
+934 934 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   MWAS"        MICROWAVE ATMOSPHERIC SOUNDER
+935 935 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   IMWA"    S   IMPROVED MICROWAVE ATMOSPHERIC SOUNDER
+936 936 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   MWHS"        MICROWAVE HUMIDITY SOUNDER
+937 937 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     MVIR"    S   MODERATE RESOLUTION VISIBLE AND INFRARED IMAGING SPECTRO"    RADIOMETER
+938 938 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  MWRI    MICROWAVE RADIATION IMAGER
+940 940 ROSCOSMOS       ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDER"    S   MTVZA-OK        SCANNING MICROWAVE RADIOMETER
+941 941 CNES    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   SAPH"    IR
+944 944 NOAA    RADAR ALTIMETERS        ALT     ALTIMETER
+945 945 NOAA    EARTH RADIATION BUDGET RADIOMETER       TSIS    TOTA"    L SOLAR IRRADIANCE SENSOR
+946 946 NOAA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  CMIS    CONICAL-SCANNING MICROWAVE IMAGER/SOUNDER
+947 947 NOAA    TOTAL AND PROFILE OZONE OMPS    OZONE MAPPING AND PR"    OFILER SUITE
+948 948 NOAA    SPACE ENVIRONMENT ATMOSPHERIC TEMPERATURE AND HUMIDI"    TY SOUNDERS GPSOS   GLOBAL POSITIONING SYSTEM OCCULTATION SE"    NSOR
+949 949 NOAA    MAGNETIC FIELD, AUROAL IMAGERY SCINTILLATION BOUNDAR"    Y   SESS    SPACE ENVIRONMENTAL SENSOR SUITE
+950 950 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VIRR"        MULTISPECTRAL VISIBLE AND INFRA-RED SCAN RADIOMETER (10"    CHANNELS
+951 951 NRSCC   TOTAL AND PROFILE OZONE TOM     TOTAL OZONE MAPPER
+952 952 NRSCC   TOTAL AND PROFILE OZONE OP      OZONE PROFILER
+2047 2047 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2020.table b/definitions/bufr/tables/0/wmo/11/codetables/2020.table
new file mode 100644
index 0000000..637ea6a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2020.table
@@ -0,0 +1,24 @@
+0 0 NIMBUS
+1 1 VTPR
+2 2 TIROS 1 (TIROS, NOAA-6 TO NOAA-13)
+3 3 TIROS 2 (NOAA-14 ONWARDS)
+10 10 EOS
+31 31 DMSP
+61 61 EUMETSAT POLAR SYSTEM (EPS)
+91 91 ERS
+121 121 ADEOS
+241 241 GOES
+261 261 JASON
+271 271 GMS
+272 272 MTSAT
+301 301 INSAT
+331 331 METEOSAT OPERATIONAL PROGRAMME (MOP)
+332 332 METEOSAT TRANSITIONAL PROGRAMME (MTP)
+333 333 METEOSAT SECOND GENERATION PROGRAMME (MSG)
+351 351 GOMS
+380 380 FY-1
+381 381 FY-2
+401 401 GPS
+402 402 GLONASS
+403 403 GALILEO
+511 511 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2021.table b/definitions/bufr/tables/0/wmo/11/codetables/2021.table
new file mode 100644
index 0000000..4ebf429
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2021.table
@@ -0,0 +1,8 @@
+1 1 HIGH RESOLUTION INFRA RED SOUNDER (HIRS)
+2 2 MICROWAVE SOUNDING UNIT           (MSU )
+3 3 STRATOSPHERIC SOUNDING UNIT       (SSU)
+4 4 AMI WIND MODE
+5 5 AMI WAVE MODE
+6 6 AMI IMAGE MODE
+7 7 RADAR ALTIMETER
+8 8 ATSR
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2022.table b/definitions/bufr/tables/0/wmo/11/codetables/2022.table
new file mode 100644
index 0000000..5068e7f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2022.table
@@ -0,0 +1,5 @@
+1 1 PROCESSING TECHNIQUE NOT DEFINED
+2 2 AUTOMATED STATISTICAL REGRESSION
+3 3 CLEAR PATH
+4 4 PARTLY CLOUDY PATH
+5 5 CLOUDY PATH
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2023.table b/definitions/bufr/tables/0/wmo/11/codetables/2023.table
new file mode 100644
index 0000000..428ca3b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2023.table
@@ -0,0 +1,12 @@
+0 0 RESERVED
+1 1 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE INFRARED"    CHANNEL
+2 2 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE VISIBLE CHANNEL
+3 3 WIND DERIVED FROM CLOUD MOTION OBSERVED IN WATER VAPOUR CHANNEL
+4 4 WIND DERIVED FROM MOTION OBSERVED IN  COMBINATION OF SPECTRAL"    CHANNELS
+5 5 WIND DERIVED FROM MOTION OBSERVED IN THE WATER  VAPOUR CHANNEL"    IN CLEAR AIR
+6 6 WIND DERIVED FROM MOTION OBSERVED IN THE OZONE  CHANNEL
+7 7 WIND DERIVED FROM MOTION OBSERVED IN WATER VAPOUR CHANNEL"    (CLOUD OR CLEAR AIR NOT SPECIFIED)
+8 8 WIND DERIVED FROM ALTIMETER
+9 9 WIND DERIVED FROM RADIOMETER
+13 13 ROOT MEAN SQUARE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2024.table b/definitions/bufr/tables/0/wmo/11/codetables/2024.table
new file mode 100644
index 0000000..ba7498e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2024.table
@@ -0,0 +1,3 @@
+1 1 TABLE WITH FULL RANGE OF HUMIDITY VARIATION IN LAYER
+2 2 REGRESSION TECHNIQUE ON 2 HUMIDITY VALUES IN LAYER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2025.table b/definitions/bufr/tables/0/wmo/11/codetables/2025.table
new file mode 100644
index 0000000..6c8403c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2025.table
@@ -0,0 +1,16 @@
+1 1 RESERVED
+2 2 HIRS
+3 3 MSU
+6 6 HIRS
+7 7 MSU
+10 10 HIRS(1, 2, 3, 8,9, 16, 17)
+11 11 HIRS(1, 2, 3, 9, 17)
+12 12 MSU
+15 15 HIRS
+16 16 HIRS
+17 17 MSU
+18 18 SKINTK(OCEAN ONLY)
+21 21 HIRS
+22 22 SSU
+23 23 MSU (3 ,4)
+25 25 MISSING
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2030.table b/definitions/bufr/tables/0/wmo/11/codetables/2030.table
new file mode 100644
index 0000000..c58949d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2030.table
@@ -0,0 +1,7 @@
+1 1 ADCP (ACOUSTIC DOPPLER CURRENT PROFILER)
+2 2 GEK (GEOMAGNETIC ELECTRO KINETOGRAPH)
+3 3 SHIPS'S SET AND DRIFT DETERMINED BY FIXES 3-6 HOURS APART
+4 4 SHIPS'S SET AND DRIFT DETERMINED BY MORE THAN 6 HOURS BUT LE"    SS THAN 12 HOURS APART
+5 5 DRIFT OF BUOY
+6 6 ADCP (ACOUSTIC DOPPLER CURRENT PROFILER)
+7 7 MISSIN VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2031.table b/definitions/bufr/tables/0/wmo/11/codetables/2031.table
new file mode 100644
index 0000000..1c0f4b8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2031.table
@@ -0,0 +1,21 @@
+0 0 RESERVED
+1 1 INSTANTANEOUS
+2 2 AVERAGED OVER 3 MINUTES OR LESS
+3 3 AVERAGED OVER MORE THAN 3 MINUTES, BUT 6 AT THE MOST
+4 4 AVERAGED OVER MORE THAN 6 MINUTES, BUT 12 AT THE MOST
+5 5 INSTANTANEOUS
+6 6 AVERAGED OVER 3 MINUTES OR LESS
+7 7 AVERAGED OVER MORE THAN 3 MINUTES, BUT 6 AT THE MOST
+8 8 AVERAGED OVER MORE THAN 6 MINUTES, BUT 12 AT THE MOST
+9 9 VECTOR OR DOPPLER CURRENT PROFILLING METHOD NOT USED
+10 10 RESERVED
+11 11 1 HOUR OR LESS
+12 12 MORE THAN  1 HOUR BUT  2 AT THE MOST
+13 13 MORE THAN  2 HOUR BUT  4 AT THE MOST
+14 14 MORE THAN  4 HOUR BUT  8 AT THE MOST
+15 15 MORE THAN  8 HOUR BUT 12 AT THE MOST
+16 16 MORE THAN 12 HOUR BUT 18 AT THE MOST
+17 17 MORE THAN 18 HOUR BUT 24 AT THE MOST
+18 18 RESERVED
+19 19 DRIFT METHOD NOT USED
+31 31 MISSING
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2032.table b/definitions/bufr/tables/0/wmo/11/codetables/2032.table
new file mode 100644
index 0000000..8d60fe6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2032.table
@@ -0,0 +1,4 @@
+0 0 VALUES AT SELECTED DEPTHS (DATA POINTS FIXED BY THE INSTRUME"    NT OR SELECTED BY ANY OTHER METHOD)
+1 1 VALUES AT SIGNIFICANT DEPTHS (DATA POINTS TAKEN FROM TRACES"    AT SIGNIFICANT DEPTHS)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2033.table b/definitions/bufr/tables/0/wmo/11/codetables/2033.table
new file mode 100644
index 0000000..55ee821
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2033.table
@@ -0,0 +1,5 @@
+0 0 NO SALINITY MEASURED
+1 1 IN SITU SENSOR, ACCURACY BETTER THAN 0.02 %
+2 2 IN SITU SENSOR, ACCURACY LESS THAN 0.02 %
+3 3 SAMPLE ANALYSIS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2034.table b/definitions/bufr/tables/0/wmo/11/codetables/2034.table
new file mode 100644
index 0000000..06cdd52
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2034.table
@@ -0,0 +1,7 @@
+0 0 UNSPECIFIED DROGUE
+1 1 HOLEY SOCK
+2 2 TRISTAR
+3 3 WINDOW SHADE
+4 4 PARACHUTE
+5 5 NON-LAGRANGIAN SEA ANCHOR
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2036.table b/definitions/bufr/tables/0/wmo/11/codetables/2036.table
new file mode 100644
index 0000000..4e69a0c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2036.table
@@ -0,0 +1,4 @@
+0 0 DRIFTING BUOY
+1 1 FIXED BUOY
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2037.table b/definitions/bufr/tables/0/wmo/11/codetables/2037.table
new file mode 100644
index 0000000..67049ca
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2037.table
@@ -0,0 +1,7 @@
+0 0 REASERVED
+1 1 MANUAL READING FROM VERTICAL TIDE STAFF
+2 2 MANUAL READING FROM SINGLE AUTOMATIC RECORDER AT STATION
+3 3 MANUAL READING FROM MULTIPLE AUTOMATIC RECORDERS AT STATION
+4 4 AUTOMATIC READING FROM SINGLE AUTOMATIC RECORDER AT STATION"    WITHOUT LEVEL REFERENCE CHECK
+5 5 AUTOMATIC READING FROM SINGLE AUTOMATIC RECORDER AT STATION"    WITH LEVEL REFERENCE CHECK,OR MULTIPLE AUTOMATIC RECORDERS
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2038.table b/definitions/bufr/tables/0/wmo/11/codetables/2038.table
new file mode 100644
index 0000000..25c58c5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2038.table
@@ -0,0 +1,12 @@
+0 0 SHIP INTAKE
+1 1 BUCKET
+2 2 HULL CONTACT SENSOR
+3 3 REVERSING TERMOMETER
+4 4 STD/CTD SENSOR
+5 5 MECHANICAL BT
+6 6 EXPANDABLE BT
+7 7 DIGITAL BT
+8 8 THERMISTOR CHAIN
+9 9 INFRARED SCANNER
+10 10 MICROWAVE SCANNER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2039.table b/definitions/bufr/tables/0/wmo/11/codetables/2039.table
new file mode 100644
index 0000000..0a94982
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2039.table
@@ -0,0 +1,5 @@
+0 0 MEASURED WET-BULB TEMPERATURE
+1 1 ICED BULB MEASURED WET-BULB TEMPERATURE
+2 2 COMPUTED WET-BULB TEMPERATURE
+3 3 ICED BULB COMPUTED WET-BULB TEMPERATURE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2040.table b/definitions/bufr/tables/0/wmo/11/codetables/2040.table
new file mode 100644
index 0000000..5fcc074
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2040.table
@@ -0,0 +1,8 @@
+0 0 SHIPS MOTION REMOVED BY AVARAGING
+1 1 SHIPS MOTION REMOVED BY MOTION COMPENSATION
+2 2 SHIPS MOTION NOT REMOVED
+3 3 SHIPS MOTION REMOVED BY AVERAGING
+4 4 SHIPS MOTION REMOVED BY MOTION COMPENSATION
+5 5 SHIPS MOTION NOT REMOVED
+6 6 DOPPLER CURRENT PROFILING METHOD NOT USED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2041.table b/definitions/bufr/tables/0/wmo/11/codetables/2041.table
new file mode 100644
index 0000000..f479da9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2041.table
@@ -0,0 +1,6 @@
+0 0 INFORMATION BASED ON MANUAL ANALYSIS
+1 1 INFORMATION BASED ON COMPUTER ANALYSIS
+2 2 INFORMATION BASED ON DATA ASSIMILATION
+3 3 INFORMATION BASED ON COMPUTER ANALYSIS OR DATA ASSIMSILATIO"    N MANUALLY MODIFIED
+10 10 INFORMATION BASED ON THE NUMERICAL WEATHER PREDICTION
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2044.table b/definitions/bufr/tables/0/wmo/11/codetables/2044.table
new file mode 100644
index 0000000..80afaca
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2044.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 LONGUET-HIGGINS (1964)
+2 2 LONGUET-HIGGINS (F3 METHOS)
+3 3 MAXIMUM LIKELIHOOD METHOD
+4 4 MAXIMUM ENTROPY METHOD
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2045.table b/definitions/bufr/tables/0/wmo/11/codetables/2045.table
new file mode 100644
index 0000000..374e4f2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2045.table
@@ -0,0 +1,5 @@
+0 0 SEA STATION
+1 1 AUTOMATIC DATA BUOY
+2 2 AIRCRAFT
+3 3 SATELLITE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2046.table b/definitions/bufr/tables/0/wmo/11/codetables/2046.table
new file mode 100644
index 0000000..c4fb394
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2046.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 HEAVE SENSOR
+2 2 SLOPE SENSOR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2048.table b/definitions/bufr/tables/0/wmo/11/codetables/2048.table
new file mode 100644
index 0000000..69e2610
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2048.table
@@ -0,0 +1,12 @@
+0 0 HIRS
+1 1 MSU
+2 2 SSU
+3 3 AMSU-A
+4 4 AMSU-B
+5 5 AVHRR
+6 6 SSMI
+7 7 NSCAT
+8 8 SEA WINDS
+9 9 POSEIDON ALTIMETER
+10 10 JMR (JASON MICROWAVE RADIOMETER)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2049.table b/definitions/bufr/tables/0/wmo/11/codetables/2049.table
new file mode 100644
index 0000000..15b2ce5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2049.table
@@ -0,0 +1,4 @@
+1 1 PROCESSING TECHNIQUE NOT DEFINED
+2 2 SIMULTANIOUS PHISICAL RETRIEVAL
+3 3 CLEAR SOUNDING
+4 4 CLOUDY COUNDING
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2050.table b/definitions/bufr/tables/0/wmo/11/codetables/2050.table
new file mode 100644
index 0000000..c9688ef
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2050.table
@@ -0,0 +1,19 @@
+1 1 CHANNEL 1 14.71 MICROMETERS
+2 2 CHANNEL 2 14.37 MICROMETERS
+3 3 CHANNEL 3 14.06 MICROMETERS
+4 4 CHANNEL 4 13.64 MICROMETERS
+5 5 CHANNEL 5 13.37 MICROMETERS
+6 6 CHANNEL 6 12.66 MICROMETERS
+7 7 CHANNEL 7 12.02 MICROMETERS
+8 8 CHANNEL 8 11.03 MICROMETERS
+9 9 CHANNEL 9  9.71 MICROMETERS
+10 10 CHANNEL 10 7.43 MICROMETERS
+11 11 CHANNEL 11 7.02 MICROMETERS
+12 12 CHANNEL 12 6.51 MICROMETERS
+13 13 CHANNEL 13 4.57 MICROMETERS
+14 14 CHANNEL 14 4.52 MICROMETERS
+15 15 CHANNEL 15 4.45 MICROMETERS
+16 16 CHANNEL 16 4.13 MICROMETERS
+17 17 CHANNEL 17 3.98 MICROMETERS
+18 18 CHANNEL 18 3.74 MICROMETERS
+19 19 CHANNEL 19 0.969 MICROMETERS
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2051.table b/definitions/bufr/tables/0/wmo/11/codetables/2051.table
new file mode 100644
index 0000000..2f0ab22
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2051.table
@@ -0,0 +1,4 @@
+1 1 MAXIMUM/MINIMUM THERMOMETERS
+2 2 AUTOMATED INSTRUMENT
+3 3 THERMOGRAPH
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2052.table b/definitions/bufr/tables/0/wmo/11/codetables/2052.table
new file mode 100644
index 0000000..4b934ab
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2052.table
@@ -0,0 +1,5 @@
+1 1 CHANNEL 1 0.55-.75 MICROMETERS
+2 2 CHANNEL 2 3.9 MICROMETERS
+3 3 CHANNEL 3 6.7 MICROMETERS
+4 4 CHANNEL 4 10.7 MICROMETERS
+5 5 CHANNEL 5 12.0 MICROMETERS
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2053.table b/definitions/bufr/tables/0/wmo/11/codetables/2053.table
new file mode 100644
index 0000000..68c67fe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2053.table
@@ -0,0 +1,5 @@
+0 0 OBSERVED BRIGHTNESS TEMPERATURES
+1 1 BRIGHTNESS TEMPERATURE WITH BIAS CORRECTION APPLIED
+2 2 BRIGHTNESS TEMPERATURE CALCULATED FROM FIRST GUESS
+3 3 BRIGHTNESS TEMPERATURE CALCULATED FROM SOUNDING
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2054.table b/definitions/bufr/tables/0/wmo/11/codetables/2054.table
new file mode 100644
index 0000000..6260713
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2054.table
@@ -0,0 +1,6 @@
+0 0 PARAMETER DERIVED USING OBSERVED SOUNDER BRIGHTNESS TEMPERAT"    URES
+1 1 PARAMETER DERIVED USING OBSERVED IMAGER BRIGHTNESS TEMPERATU"    RES
+2 2 PARAMETER DERIVED USING FIRST GUESS INFORMATION
+3 3 PARAMETER DERIVED USING  NMC ANALYSIS INFORMATION
+4 4 PARAMETER DERIVED USING RADIOSONDE INFORMATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2055.table b/definitions/bufr/tables/0/wmo/11/codetables/2055.table
new file mode 100644
index 0000000..8c9fce2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2055.table
@@ -0,0 +1,9 @@
+0 0 STATISTICS GENERATED COMPARING RETRIEVAL VERSUS RADIOSONDE
+1 1 STATISTICS GENERATED COMPARING RETRIEVAL VERSUS FIRST GUESS
+2 2 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS FIRST GUESS
+3 3 STATISTICS GENERATED COMPARING OBSERVED VERSUS RETRIEVAL
+4 4 STATISTICS GENERATED COMPARING OBSERVED VERSUS FORST GUESS
+5 5 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS IMAGER
+6 6 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS SOUNDER
+7 7 STATISTICS GENERATED FOR RADIOSONDE
+8 8 STATISTICS GENERATED FOR FIRST GUESS
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2056.table b/definitions/bufr/tables/0/wmo/11/codetables/2056.table
new file mode 100644
index 0000000..3bdc910
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2056.table
@@ -0,0 +1,6 @@
+0 0 SUMS OF DIFFERENCE
+1 1 SUMS OF SQUARED DIFFERENCES
+2 2 SAMPLE SIZE
+3 3 MINIMUM DIFFERENCE
+4 4 MAXIMUM DIFFERENCE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2057.table b/definitions/bufr/tables/0/wmo/11/codetables/2057.table
new file mode 100644
index 0000000..a5cb21e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2057.table
@@ -0,0 +1,6 @@
+0 0 NESTED GRID MODEL (NMG)
+1 1 AVIATION MODEL(AVN)
+2 2 MEDIUM RANGE FORECAST (MRF) MODEL
+3 3 GLOBAL DATA ASSIMILATION SYSTEM (GDAS) FORECAST MODEL
+4 4 PRIOR SOUNDINGS (WITHIN 3 HOURS OF CURRENT TIME)
+5 5 CLIMATOLOGY
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2058.table b/definitions/bufr/tables/0/wmo/11/codetables/2058.table
new file mode 100644
index 0000000..258c4ad
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2058.table
@@ -0,0 +1,5 @@
+0 0 12 HOUR AND 18 HOUR
+1 1 18 HOUR AND 24 HOUR
+2 2  6 HOUR AND 12 HOUR
+3 3 GREATER THAN 24 HOUR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2059.table b/definitions/bufr/tables/0/wmo/11/codetables/2059.table
new file mode 100644
index 0000000..58f9c5c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2059.table
@@ -0,0 +1,5 @@
+0 0 NCEP NESTED GRID MODEL ANALYSIS
+1 1 NCEP AVIATION MODEL ANALYSIS
+2 2 NCEP MEDIUM RANGE FORECAST MODEL ANALYSIS
+3 3 NCEP GLOBAL DATA ASSIMILATION SYSTEM FORECAST MODEL ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2060.table b/definitions/bufr/tables/0/wmo/11/codetables/2060.table
new file mode 100644
index 0000000..84a612d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2060.table
@@ -0,0 +1,7 @@
+0 0 CURRENT SURFACE HOURLY REPORTS
+1 1 CURRENT SHIP REPORTS
+2 2 CURRENT BUOY REPORTS
+3 3 ONE HOUR OLD SURFACE HOURLY REPORTS
+4 4 ONE HOUR SHIP OLD REPORTS
+5 5 ONE HOUR BUOY OLD REPORTS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2061.table b/definitions/bufr/tables/0/wmo/11/codetables/2061.table
new file mode 100644
index 0000000..3298d90
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2061.table
@@ -0,0 +1,3 @@
+0 0 INERTIAL NAVIGATOR SYSTEM
+1 1 OMEGA
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2062.table b/definitions/bufr/tables/0/wmo/11/codetables/2062.table
new file mode 100644
index 0000000..7083db9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2062.table
@@ -0,0 +1,7 @@
+0 0 ASDAR
+1 1 ASDAR(ACARS ALSO AVAILABLE BUT NOT OPERATIVE)
+2 2 ASDAR(ACARS ALSO AVAILABLE AND OPERATIVE)
+3 3 ACARS
+4 4 ACARS(ASDAR ALSO AVALILABLE BUT NOT OPERATIVE)
+5 5 ACARS(ASDAR ALSO AVAILABLE AND OPERATIVE)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2064.table b/definitions/bufr/tables/0/wmo/11/codetables/2064.table
new file mode 100644
index 0000000..7414302
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2064.table
@@ -0,0 +1,4 @@
+0 0 GOOD
+1 1 BAD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2066.table b/definitions/bufr/tables/0/wmo/11/codetables/2066.table
new file mode 100644
index 0000000..b1778d1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2066.table
@@ -0,0 +1,4 @@
+0 0 TRS 2000
+1 1 IMS 1500C
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2070.table b/definitions/bufr/tables/0/wmo/11/codetables/2070.table
new file mode 100644
index 0000000..5f294e6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2070.table
@@ -0,0 +1,13 @@
+0 0 ACTUAL LOCATION IN SECONDS
+1 1 ACTUAL LOCATION IN MINUTES
+2 2 ACTUAL LOCATION IN DEGREES
+3 3 ACTUAL LOCATION IN DECIDEGREES
+4 4 ACTUAL LOCATION OM CENTIDEGREES
+5 5 REFERENCED TO CHECKPOINT IN SECONDS
+6 6 REFERENCED TO CHECKPOINT IN MINUTES
+7 7 REFERENCED TO CHECKPOINT IN DEGREES
+8 8 REFERENCED TO CHECKPOINT IN DECIDEGREES
+9 9 REFERENCED TO CHECKPOINT IN CENTIDEGREES
+10 10 ACTUAL LOCATION IN TENTHS OF A MINUTE
+11 11 REFERENCED TO CHECKPOINT IN TENTHS OF A MINUTE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2080.table b/definitions/bufr/tables/0/wmo/11/codetables/2080.table
new file mode 100644
index 0000000..b0eb6d2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2080.table
@@ -0,0 +1,5 @@
+0 0 KAYSAM
+1 1 TOTEX
+2 2 KKS
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2081.table b/definitions/bufr/tables/0/wmo/11/codetables/2081.table
new file mode 100644
index 0000000..4c0f1dc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2081.table
@@ -0,0 +1,9 @@
+0 0 GP26
+1 1 GP28
+2 2 GP30
+3 3 HM26
+4 4 HM28
+5 5 HM30
+6 6 SV16
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2083.table b/definitions/bufr/tables/0/wmo/11/codetables/2083.table
new file mode 100644
index 0000000..61c3e1e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2083.table
@@ -0,0 +1,6 @@
+0 0 HIGH BAY
+1 1 LOW BAY
+2 2 BALLOON INFLATION LAUNCH SYSTEM (BILS)
+3 3 ROOF-TOP BILS
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2084.table b/definitions/bufr/tables/0/wmo/11/codetables/2084.table
new file mode 100644
index 0000000..be6430a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2084.table
@@ -0,0 +1,5 @@
+0 0 HYDROGEN
+1 1 HELIUM
+2 2 NATURAL GAS
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2095.table b/definitions/bufr/tables/0/wmo/11/codetables/2095.table
new file mode 100644
index 0000000..79f4996
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2095.table
@@ -0,0 +1,5 @@
+0 0 CAPACITANCE ANEROID
+1 1 DERIVED FROM GPS
+2 2 RESISTIVE STRAIN GAUGE
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2096.table b/definitions/bufr/tables/0/wmo/11/codetables/2096.table
new file mode 100644
index 0000000..b856de9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2096.table
@@ -0,0 +1,5 @@
+0 0 ROD THERMISTOR
+1 1 BEAD THERMISTOR
+2 2 CAPACITANCE BEAD
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2097.table b/definitions/bufr/tables/0/wmo/11/codetables/2097.table
new file mode 100644
index 0000000..0e511a1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2097.table
@@ -0,0 +1,8 @@
+0 0 VIZ MARK II CARBON HYGRISTOR
+1 1 VIZ B2 HYGRISTOR
+2 2 VAISALA A-HUMICAP
+3 3 VAISALA H-HUMICAP
+4 4 CAPACITANCE SENSOR
+5 5 VAISALA RS90
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2098.table b/definitions/bufr/tables/0/wmo/11/codetables/2098.table
new file mode 100644
index 0000000..6eb06d4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2098.table
@@ -0,0 +1,5 @@
+0 0 HH POLARISATION
+1 1 VV POLARISATION
+2 2 HV POLARISATION REAL VALUED COMPONENT
+3 3 HV POLARISATION IMAGINARY VALUED COMPONENT
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2101.table b/definitions/bufr/tables/0/wmo/11/codetables/2101.table
new file mode 100644
index 0000000..efdb3ec
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2101.table
@@ -0,0 +1,10 @@
+0 0 CENTRE FRONT-FED PARABOLOID
+1 1 OFFSET FRONT-FED PARABOLOID
+2 2 CENTRE CASSEGRAIN PARABOLOID
+3 3 OFFSET CASSEGRAIN PARABOLOID
+4 4 PLANAR ARRAY
+5 5 COAXIAL-COLLINEAR ARRAY
+6 6 YAGI ELEMENTS ARRAY
+7 7 MICROSTRIP
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2103.table b/definitions/bufr/tables/0/wmo/11/codetables/2103.table
new file mode 100644
index 0000000..3b7ee27
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2103.table
@@ -0,0 +1,2 @@
+1 1 RADAR ANTENNA IS PROTECTED BY A RADOME
+2 2 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2104.table b/definitions/bufr/tables/0/wmo/11/codetables/2104.table
new file mode 100644
index 0000000..100081a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2104.table
@@ -0,0 +1,7 @@
+0 0 HORIZONTAL POLARISATION
+1 1 VERTICAL POLARISATION
+2 2 RIGHT CIRCULAR POLARISATION
+3 3 LEFT CIRCULAR POLARSZATION
+4 4 HORIZONTAL AND VERTICAL POLARISATION
+5 5 RIGHT AND LEFT CIRCULAR POLARISATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/21066.table b/definitions/bufr/tables/0/wmo/11/codetables/21066.table
new file mode 100644
index 0000000..a3fd93c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/21066.table
@@ -0,0 +1,11 @@
+1 1 PROCESSING EQUIPMENT NOT WORKING
+2 2 EQUIPMENT FAILED
+3 3 PRF CODE CHANGED DURING IMAGE GENERATION
+4 4 SAMPLINH WINDOW CHANGED DURING IMAGE GENERATION
+5 5 GAIN CHANGED DURING IMAGE GENERATION
+6 6 CHIRP REPLICA EXCEEDS SPECIFIC VALUE
+7 7 INPUT DATA MEAN AND STANDARD DEVIATION OF IN-PHASE AND"    QUADRATURE OUT OF RANGE
+8 8 DOPPLER CENTROID CONFIDENCE > MMCC VALUE
+9 9 DOPPLER CENTROID ABSOLUTE VALUE > PRF/2
+10 10 DOPPLER AMBIGUITY CONFIDENCE < MMCC VALUE
+11 11 OUTPUT DATA MEAN AND STANDARD DEVIATION =< MMCC VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/21067.table b/definitions/bufr/tables/0/wmo/11/codetables/21067.table
new file mode 100644
index 0000000..9d0c51b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/21067.table
@@ -0,0 +1,12 @@
+1 1 NO FOREBEAM CALCULATION
+2 2 NO MIDBEAM CALCULATION
+3 3 NO AFTBEAM CALCULATION
+4 4 FOREBEAM ARCING DETECTED
+5 5 MID ARCING DETECTED
+6 6 AFTBEAM ARCING DETECTED
+7 7 ANY BEAM NOISE CONTENT ABOVE OR EQUAL TO TRESHOLD
+8 8 LAND (ANY LAND IN CELL FOOTPRINT)
+9 9 AUTONOMOUS AMBIGUITY REMOVAL NOT USED
+10 10 METEOROLOGICAL BACKGROUND NOT USED
+11 11 MINIMUM RESIDUAL EXCEEDED TRESHOLD
+12 12 FRAME CHECKSUM ERROR DETECTED
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/21068.table b/definitions/bufr/tables/0/wmo/11/codetables/21068.table
new file mode 100644
index 0000000..8e8b38e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/21068.table
@@ -0,0 +1,7 @@
+1 1 STANDARD DEVIATION OF WIND SPEED OUTSIDE MMCC LIMIT
+2 2 STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT OUTSIDE MMCC L"    IMIT
+3 3 STANDARD DEVIATION OF ALTITUDE OUTSIDE MMCC LIMIT
+4 4 MEAN PEAKINESS OUTSIDE MMCC LIMIT
+5 5 FRAME CHECKSUM ERROR DETECTED
+6 6 HEIGHT-TIME LOOP TIME CONSTANT CORRECTION NOT PERFORMED
+7 7 NOT ENOUGH MEASUREMENTS ( N< 10)
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/21069.table b/definitions/bufr/tables/0/wmo/11/codetables/21069.table
new file mode 100644
index 0000000..c343130
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/21069.table
@@ -0,0 +1,9 @@
+1 1 12.0 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+2 2 11.0 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+3 3  3.7 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+4 4  1.6 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+5 5 CLOUD IDENTIFICATION USED 1.6 MICROMETERS"    HISTOGRAM REFLECTANCE CLOUD TEST
+6 6 1.6 MICROMETERS HISTOGRAM REFLECTANCE CLOUD"    TEST USED DYNAMIC TRESHOLD
+7 7 SUN GLINT DETECTED BY 1.6 MICROMETERS REFLECTANCE CLOUD TEST
+8 8 3.7 MICROMETERS USED IN SEA-SURFACE TEMPERATURE RETRIEVAL
+9 9 SEA-SURFACE TEMPERATURE DERIVATION USED DAYTIME DATA"    (NIGHT-TIME IF ZERO)
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/21070.table b/definitions/bufr/tables/0/wmo/11/codetables/21070.table
new file mode 100644
index 0000000..7849b6c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/21070.table
@@ -0,0 +1,23 @@
+1 1 CELL 1:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+2 2 CELL 2:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL CELL NUMB"    ERING
+3 3 CELL 3:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+4 4 CELL 4:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL NW NE
+5 5 CELL 5:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 7 8 9
+6 6 CELL 6:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 4 5 6
+7 7 CELL 7:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 1 2 3
+8 8 CELL 8:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL SW SE
+9 9 CELL 9:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+10 10 -18 DUAL VIEW SST RETRIEVAL USED 3.7 MICRON CHANNEL (ONE BIT"    PER 10-ARCMIN CELL)
+11 11 CELL 1:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+12 12 CELL 3:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+13 13 CELL 4:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL NW NE
+14 14 CELL 5:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 7 8 9
+15 15 CELL 6:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 4 5 6
+16 16 CELL 7:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 1 2 3
+17 17 CELL 8:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL SW SE
+18 18 CELL 9:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+19 19 NADIR VIEW CONTAINS DAY-TIME DATA (NIGHT IF ZERO)
+20 20 FORWARD VIEW CONTAINS DAY-TIME DATA (NIGHT IF ZERO)
+21 21 RECORD CONTAINS CONTRIBUTIONS FROM INSTRUMENT SCANS ACQUIRED"     WHEN ERS PLATFORM NOT IN YAW-STEERING MODE
+22 22 RECORD CONTAINS CONTRIBUTIONS FROM INSTRUMENT SCANS FOR WHIC"    H PRODUCT CONFIDENCE DATA SHOW QUALITY IS POOR OR UNKNOWN
+23 23 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/21072.table b/definitions/bufr/tables/0/wmo/11/codetables/21072.table
new file mode 100644
index 0000000..521f791
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/21072.table
@@ -0,0 +1,3 @@
+1 1 HEIGHT ERROR CORRECTION APPLIED INSTEAD OF OPEN LOOP CALIBRA"    TION
+2 2 MICROWAVE SOUNDER USED FOR TROPOSPHERE CORRECTION
+3 3 AGC OUTPUT CORRECTION APPLIED INSTED OF OPEN LOOP CALIBRATIO"    N
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/21073.table b/definitions/bufr/tables/0/wmo/11/codetables/21073.table
new file mode 100644
index 0000000..9538fa5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/21073.table
@@ -0,0 +1,8 @@
+1 1 BLANK DATA RECORD
+2 2 TEST
+3 3 CALIBRATION (CLOSED LOOP)
+4 4 BITE
+5 5 ACQUISITION ON ICE
+6 6 ACQUISITION ON OCEAN
+7 7 TRACKING ON ICE
+8 8 TRACKING ON OCEAN
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/21076.table b/definitions/bufr/tables/0/wmo/11/codetables/21076.table
new file mode 100644
index 0000000..bc52ac5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/21076.table
@@ -0,0 +1,4 @@
+0 0 LINEAR
+1 1 LOGARITHMIC (BASE E)
+2 2 LOGARITHMIC (BASE 10)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/21109.table b/definitions/bufr/tables/0/wmo/11/codetables/21109.table
new file mode 100644
index 0000000..0990694
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/21109.table
@@ -0,0 +1,8 @@
+1 1 NOT ENOUGH GOOD SIGMA-0 AVAILABLE FOR WIND RETRIEVAL
+2 2 POOR AZIMUTH DIVERSITY AMONG SIGMA0- FOR  WIND RETRIEVAL
+8 8 SOME PORTION OF WIND VECTOR CELL IS OVER LAND
+9 9 SOME PORTION OF WIND VECTOR CELL IS OVER ICE
+10 10 WIND RETRIEVAL NOT PERFORMED FOR WIND  VECTOR CELL
+11 11 REPORTED WIND SPEED IS GREATER THAN 30 M/S
+12 12 REPORTED WIND SPEED IS LESS THAN OR EQUAL TO 3 M/S
+17 17 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/21115.table b/definitions/bufr/tables/0/wmo/11/codetables/21115.table
new file mode 100644
index 0000000..3bdb683
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/21115.table
@@ -0,0 +1,11 @@
+1 1 SIGMA-0 MEASUREMENT IS NOT USABLE
+2 2 SIGNAL TO NOISE RATIO IS LOW
+3 3 SIGMA-0 IS NEGATIVE
+4 4 SIGMA-0 IS OUTSIDE OF ACCEPTABLE RANGE
+5 5 SCATTEROMETER PULSE QUALITY IS NOT ACCEPTABLE
+6 6 SIGMA-0 CELL LOCATION ALGORITHM DOES NOT CONVERGE
+7 7 FREQUENCY SHIFT LIES BEYOND THE RANGE OF THE X FACTOR TABLE
+8 8 SPACECRAFT TEMPERATURE IS BEYOND CALIBRATION COEFFICIENT RAN"    GE
+9 9 NO APPLICABLE ATTITUDE RECORDS WERE FOUND FOR THIS SIGMA-0
+10 10 INTERPOLATED EPHEMERIS DATA ARE NOT ACCEPTABLE FOR THIS SIGM"    A-0
+17 17 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/21116.table b/definitions/bufr/tables/0/wmo/11/codetables/21116.table
new file mode 100644
index 0000000..10b5c53
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/21116.table
@@ -0,0 +1,16 @@
+1 1 CALIBRATION/MEASUREMENT PULSE FLAG (1)
+2 2 CALIBRATION/MEASUREMENT PULSE FLAG (2)
+3 3 OUTER ANTENNA BEAM
+4 4 SIGMA-0 CELL IS AFT OF SPACECRAFT
+5 5 CURRENT MODE (1)
+6 6 CURRENT MODE (2)
+7 7 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (1)
+8 8 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (2)
+9 9 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (3)
+10 10 LOW RESOLUTION MODE - WHOLE PULSE DATA
+11 11 SCATTEROMETER ELECTRONIC SUBSYSTEM B
+12 12 ALTERNATE SPIN RATE - 19.8 RPM
+13 13 RECEIVER PROTECTION ON
+14 14 SLICES PER COMPOSITE FLAG (1)
+15 15 SLICES PER COMPOSITE FLAG (2)
+16 16 SLICES PER COMPOSITE FLAG (3)
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/21119.table b/definitions/bufr/tables/0/wmo/11/codetables/21119.table
new file mode 100644
index 0000000..d46b083
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/21119.table
@@ -0,0 +1,14 @@
+0 0 RESERVED
+1 1 SASS
+2 2 SASS2
+3 3 NSCAT0
+4 4 NSCAT1
+5 5 NSCAT2
+6 6 QSCAT0
+7 7 QSCAT1
+31 31 CMOD1
+32 32 CMOD2
+33 33 CMOD3
+34 34 CMOD4
+35 35 CMOD5
+64 64 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/21144.table b/definitions/bufr/tables/0/wmo/11/codetables/21144.table
new file mode 100644
index 0000000..1f082e6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/21144.table
@@ -0,0 +1 @@
+1 1 RAIN
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2115.table b/definitions/bufr/tables/0/wmo/11/codetables/2115.table
new file mode 100644
index 0000000..c7e866c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2115.table
@@ -0,0 +1,7 @@
+0 0 PDB
+1 1 RSOIS
+2 2 ASOS
+3 3 PSYCHROMETER
+4 4 F420
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/21150.table b/definitions/bufr/tables/0/wmo/11/codetables/21150.table
new file mode 100644
index 0000000..8510046
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/21150.table
@@ -0,0 +1,4 @@
+0 0 DATA FROM SINGLE GROUND STATION (NO CO-LOCATION)
+1 1 DATA FROM MULTIPLE GROUND STATION (CO-LOCATED DATA)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/21155.table b/definitions/bufr/tables/0/wmo/11/codetables/21155.table
new file mode 100644
index 0000000..27cc03d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/21155.table
@@ -0,0 +1,16 @@
+1 1 NOT ENOUGH GOOD SIGMA-0 AVAILABLE FOR WIND RETRIEVAL
+2 2 POOR AZIMUTH DIVERSITY AMONG SIGMA-0 FOR WIND RETRIEVAL
+3 3 ANY BEAM NOISE CONTENT ABOVE TRESHOLD
+4 4 PRODUCT MONITORING NOT USED
+5 5 PRODUCT MONITORING FLAG
+6 6 KNMI QUALITY CONTROL FAILS
+7 7 VARIATIONAL QUALITY CONTROL FAILS
+8 8 SOME PORTION OF WIND VECTOR CELL IS OVER LAND
+9 9 SOME PORTION OF WIND VECTOR CELL IS OVER ICE
+10 10 WIND RETRIEVAL NOT PERFORMED FOR WIND VECTOR CELL
+11 11 REPORTED WIND SPEED IS GREATER THAN 30 M/S
+12 12 REPORTED WIND SPEED IS LESS THAN OR EQUAL TO 3 M/S
+13 13 RAIN FLAG FOR THE WIND VECTOR CELL IS NOT USABLE
+14 14 RAIN FLAG ALGORITHM DETECTS RAIN
+15 15 NO METEOROLOGICAL BACKGROUND USED
+16 16 DATA ARE REDUNDANT
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/21158.table b/definitions/bufr/tables/0/wmo/11/codetables/21158.table
new file mode 100644
index 0000000..dd53c51
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/21158.table
@@ -0,0 +1,4 @@
+0 0 ACCEPTABLE
+1 1 NOT ACCEPTABLE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/21159.table b/definitions/bufr/tables/0/wmo/11/codetables/21159.table
new file mode 100644
index 0000000..1703f9b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/21159.table
@@ -0,0 +1,4 @@
+0 0 GOOD
+1 1 USABLE
+2 2 BAD
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/21169.table b/definitions/bufr/tables/0/wmo/11/codetables/21169.table
new file mode 100644
index 0000000..9b93444
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/21169.table
@@ -0,0 +1,4 @@
+0 0 NO ICE PRESENT
+1 1 ICE PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2119.table b/definitions/bufr/tables/0/wmo/11/codetables/2119.table
new file mode 100644
index 0000000..33ae089
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2119.table
@@ -0,0 +1,8 @@
+0 0 INTERMEDIATE FREQUENCY CALIBRATION MODE (IFCAL)
+1 1 BUILT-IN TEST EQUIPMENT DIGITAL (BITE DGT)
+2 2 BUILT-IN TEST EQUIPMENT RADIO FREQUENCY (BITE RF)
+3 3 PRESET TRACKING (PSET TRK)
+4 4 PRESET LOOP OUT
+5 5 ACQUISITION
+6 6 TRACKING
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2131.table b/definitions/bufr/tables/0/wmo/11/codetables/2131.table
new file mode 100644
index 0000000..f4336ef
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2131.table
@@ -0,0 +1 @@
+1 1 STC OPERATIONAL
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2143.table b/definitions/bufr/tables/0/wmo/11/codetables/2143.table
new file mode 100644
index 0000000..89bdc1b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2143.table
@@ -0,0 +1,21 @@
+0 0 RESERVED
+1 1 BREWER SPECTROPHOTOMETER
+2 2 CAVER TEICHERT
+3 3 DOBSON
+4 4 DOBSON (JAPAN)
+5 5 EHMET
+6 6 FECKER TELESCOPE
+7 7 HOELPER
+8 8 JODMETER
+9 9 FILTER OZONOMETER M-83
+10 10 MAST
+11 11 OXFORD
+12 12 PAETZOLD
+13 13 REGENER
+14 14 RESERVED FOR FUTURE USE
+15 15 VASSY FILTER OZONOMETER
+16 16 CARBON IODIDE
+17 17 SURFACE OZONE BUBLER
+18 18 FILTER OZONOMETER M-124
+19 19 ECC SONDE
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2144.table b/definitions/bufr/tables/0/wmo/11/codetables/2144.table
new file mode 100644
index 0000000..c245c49
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2144.table
@@ -0,0 +1,8 @@
+0 0 DIRECT SUN, ATTENUATOR #0
+1 1 DIRECT SUN, ATTENUATOR #1
+2 2 DIRECT SUN, ATTENUATOR #2
+3 3 FOCUSSED MOON
+4 4 FOCUSSED SUN
+5 5 FOCUSSED SUN CORRECTED WITH ADJACENT SKY MEASUREMENTS
+6 6 ZENITH SKY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2145.table b/definitions/bufr/tables/0/wmo/11/codetables/2145.table
new file mode 100644
index 0000000..63400b2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2145.table
@@ -0,0 +1,9 @@
+0 0 WAVELENGTH AD ORDINARY SETTING
+1 1 WAVELENGTH BD ORDINARY SETTING
+2 2 WAVELENGTH CD ORDINARY SETTING
+3 3 WAVELENGTH CC' ORDINARY SETTING
+4 4 WAVELENGTH AD FOCUSSING IMAGE
+5 5 WAVELENGTH BD FOCUSSING IMAGE
+6 6 WAVELENGTH CD FOCUSSING IMAGE
+7 7 WAVELENGTH CC' FOCUSSING IMAGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2146.table b/definitions/bufr/tables/0/wmo/11/codetables/2146.table
new file mode 100644
index 0000000..14655b9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2146.table
@@ -0,0 +1,11 @@
+0 0 ON DIRECT SUN
+1 1 ON DIRECT MOON
+2 2 ON BLUE ZENITH SKY
+3 3 ON ZENITH CLOUD (UNIFORM STRATIFIED LAYER OF SMALL OPACITY)
+4 4 ON ZENITH CLOUD (UNIFORM OR MODERATELY VARIABLE LAYER OF MED"    IUM OPACITY)
+5 5 ON ZENITH CLOUD (UNIFORM OR MODERATELY VARIABLE LAYER OF LAR"    GE OPACITY)
+6 6 ON ZENITH CLOUD (HIGHLY VARIABLE OPACITY, WITH OR WITOUT PRE"    CIPITATION)
+7 7 ON ZENITH CLOUD (FOG)
+8 8 ON ZENITH HAZE
+9 9 ON DIRECT SUN THROUGH THIN CLOUD, FOG OR HAZE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2148.table b/definitions/bufr/tables/0/wmo/11/codetables/2148.table
new file mode 100644
index 0000000..3e5d884
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2148.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 ARGOS
+2 2 GPS
+3 3 GOES DCP
+4 4 METEOSAT DCP
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2149.table b/definitions/bufr/tables/0/wmo/11/codetables/2149.table
new file mode 100644
index 0000000..7b179c6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2149.table
@@ -0,0 +1,22 @@
+0 0 UNSPECIFIED DRIFTING BUOY
+1 1 STANDARD LAGRANGIAN DRIFTER (GLOBAL DRIFTER PROGRAMME)
+2 2 STANDARD FGGE TYPE DRIFTING BUOY
+3 3 WIND MEASURING FGGE TYPE DRIFTING BUOY
+4 4 ICE FLOAT
+8 8 UNSPECIFIED SUB-SURFACE FLOAT
+9 9 SOFAR
+10 10 ALACE
+11 11 MARVOR
+12 12 RAFOS
+16 16 UNSPECIFIED MOORED BUOY
+17 17 NOMAD
+18 18 3-METRE DISCUS
+19 19 10-12-METRE DISCUS
+20 20 ODAS 30 SERIES
+21 21 ATLAS (E.G. TAO AREA)
+22 22 TRITON BUOY
+23 23 RESERVED
+24 24 OMNIDIRECTIONAL WAVERIDER
+25 25 DIRECTIONAL WAVERIDER
+26 26 SUB-SURFACE ARGO FLOAT
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2150.table b/definitions/bufr/tables/0/wmo/11/codetables/2150.table
new file mode 100644
index 0000000..b864835
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2150.table
@@ -0,0 +1,55 @@
+0 0 RESERVED
+1 1 HIRS 1
+2 2 HIRS 2
+3 3 HIRS 3
+4 4 HIRS 4
+5 5 HIRS 5
+6 6 HIRS 6
+7 7 HIRS 7
+8 8 HIRS 8
+9 9 HIRS 9
+10 10 HIRS 10
+11 11 HIRS 11
+12 12 HIRS 12
+13 13 HIRS 13
+14 14 HIRS 14
+15 15 HIRS 15
+16 16 HIRS 16
+17 17 HIRS 17
+18 18 HIRS 18
+19 19 HIRS 19
+20 20 HIRS 20
+21 21 MSU 1
+22 22 MSU 2
+23 23 MSU 3
+24 24 MSU 4
+25 25 SSU 1
+26 26 SSU 2
+27 27 SSU 3
+28 28 AMSU-A 1
+29 29 AMSU-A 2
+30 30 AMSU-A 3
+31 31 AMSU-A 4
+32 32 AMSU-A 5
+33 33 AMSU-A 6
+34 34 AMSU-A 7
+35 35 AMSU-A 8
+36 36 AMSU-A 9
+37 37 AMSU-A 10
+38 38 AMSU-A 11
+39 39 AMSU-A 12
+40 40 AMSU-A 13
+41 41 AMSU-A 14
+42 42 AMSU-A 15
+43 43 AMSU-B 1
+44 44 AMSU-B 2
+45 45 AMSU-B 3
+46 46 AMSU-B 4
+47 47 AMSU-B 5
+48 48 AVHRR 1
+49 49 AVHRR 2
+50 50 AVHRR 3A
+51 51 AVHRR 3B
+52 52 AVHRR 4
+53 53 AVHRR 5
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2151.table b/definitions/bufr/tables/0/wmo/11/codetables/2151.table
new file mode 100644
index 0000000..b1e62e6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2151.table
@@ -0,0 +1,9 @@
+0 0 HIRS
+1 1 MSU
+2 2 SSU
+3 3 AMSU-A1-1
+4 4 AMSU-A1-2
+5 5 AMSU-A2
+6 6 AMSU-B
+7 7 AVHRR
+2047 2047 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2152.table b/definitions/bufr/tables/0/wmo/11/codetables/2152.table
new file mode 100644
index 0000000..7c55d18
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2152.table
@@ -0,0 +1,11 @@
+1 1 HIGH-RESOLUTION INFRARED SOUNDER(HIRS)
+2 2 MICROWAVE SOUNDING UNIT (MSU)
+3 3 STRATOSPHERIC SOUNDING UNIT (SSU)
+4 4 AMI WIND MODE
+5 5 AMI WAVE MODE
+6 6 AMI IMAGE MODE
+7 7 RADAR ALTIMETER
+8 8 ATSR
+9 9 GEOSTATIONARY IMAGER
+10 10 GEOSTATIONARY SOUNDER
+11 11 GEOSTATIONARY EARTH RADIATION (GERB)
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2158.table b/definitions/bufr/tables/0/wmo/11/codetables/2158.table
new file mode 100644
index 0000000..97c4449
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2158.table
@@ -0,0 +1,8 @@
+1 1 MISMATCH IN RED VEC HPA
+2 2 MISMATCH IN RED VEC RFSS
+3 3 PTR CALIBRATION BAND 320 MHZ (KU)
+4 4 PTR CALIBRATION BAND 80 MHZ (KU)
+5 5 PTR CALIBRATION BAND 20 MHZ (KU)
+6 6 PTR CALIBRATION BAND 160 MHZ (S)
+7 7 KU FLIGHT CALIBRATION PARAMETERS AVAILABLE
+8 8 S FLIGHT CALIBRATION PARAMETERS AVAILABLE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2159.table b/definitions/bufr/tables/0/wmo/11/codetables/2159.table
new file mode 100644
index 0000000..d022cce
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2159.table
@@ -0,0 +1,5 @@
+1 1 TEMPERATURE INCONSISTENCY
+2 2 DATA IS MISSING
+3 3 REDUNDANCY CHANNEL
+4 4 POWER BUS PROTECTION
+5 5 OVERVOLTAGE/OVERLOAD PROTECTION
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2163.table b/definitions/bufr/tables/0/wmo/11/codetables/2163.table
new file mode 100644
index 0000000..4658f3d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2163.table
@@ -0,0 +1,15 @@
+0 0 AUTO EDITOR
+1 1 IRW HEIGHT ASSIGNMENT
+2 2 WV HEIGHT ASSIGNMENT
+3 3 H2O INTERCEPT HEIGHT ASSIGNMENT
+4 4 CO2 SLICING HEIGHT ASSIGNMENT
+5 5 LOW PIXEL MAX GRADIENT
+6 6 HIGHER PIXEL MAX GRADIENT
+7 7 PRIMARY HEIGHT ASSIGNMENT
+8 8 LAYER THICKNESS ASSIGNMENT
+9 9 CUMULATIVE CONTRIBUTION FUNCTION -10 PERCENT HEIGHT
+10 10 CUMULATIVE CONTRIBUTION FUNCTION -50 PERCENT HEIGHT
+11 11 CUMULATIVE CONTRIBUTION FUNCTION -90 PERCENT HEIGHT
+12 12 CUMULATIVE CONTRIBUTION FUNCTION - HEIGHT OF"    MAXIMUM GRADIENT
+14 14 COMPOSITE HEIGHT ASSIGNMENT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2164.table b/definitions/bufr/tables/0/wmo/11/codetables/2164.table
new file mode 100644
index 0000000..01dc970
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2164.table
@@ -0,0 +1,4 @@
+0 0 LP - NORMS LEAST SQUARE MINIMUM
+1 1 EN - EUCLIDEAN NORM WITH RADIANCE CORRELATION
+2 2 CC - CROSS CORRELATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2166.table b/definitions/bufr/tables/0/wmo/11/codetables/2166.table
new file mode 100644
index 0000000..efac38f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2166.table
@@ -0,0 +1,6 @@
+0 0 TYPE NOT DEFINED
+1 1 AUTOMATED STATISTICAL REGRESSION
+2 2 CLEAR PATH
+3 3 PARTLY CLOUDY PATH
+4 4 CLOUDY PATH
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2167.table b/definitions/bufr/tables/0/wmo/11/codetables/2167.table
new file mode 100644
index 0000000..bb0ad11
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2167.table
@@ -0,0 +1,4 @@
+0 0 METHOD NOT DEFINE
+1 1 1B RAW RADIANCE
+2 2 PROCESSED RADIANCE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2169.table b/definitions/bufr/tables/0/wmo/11/codetables/2169.table
new file mode 100644
index 0000000..6e70eb6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2169.table
@@ -0,0 +1,4 @@
+0 0 CUP ROTOR
+1 1 PROPELLER ROTOR
+2 2 WIND OBSERVATION THROUGH AMBIENT NOISE (WOTAN)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2172.table b/definitions/bufr/tables/0/wmo/11/codetables/2172.table
new file mode 100644
index 0000000..10b464d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2172.table
@@ -0,0 +1,3 @@
+1 1 RETRIEVAL FROM A NADIR SOUNDING
+2 2 RETRIEVAL FROM A LIMB SOUNDING
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2175.table b/definitions/bufr/tables/0/wmo/11/codetables/2175.table
new file mode 100644
index 0000000..e3df922
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2175.table
@@ -0,0 +1,9 @@
+0 0 MANUAL MEASUREMENT
+1 1 TIPPING BUCKET METHOD
+2 2 WEIGHING METHOD
+3 3 OPTICAL METHOD
+4 4 PRESSURE METHOD
+5 5 FLOAT METHOD
+6 6 DROP COUNTER METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2176.table b/definitions/bufr/tables/0/wmo/11/codetables/2176.table
new file mode 100644
index 0000000..a16cbc3
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2176.table
@@ -0,0 +1,6 @@
+0 0 MANUAL OBSERVATION
+1 1 VIDEO CAMERA METHOD
+2 2 INFRA-RED METHOD
+3 3 LASER METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2177.table b/definitions/bufr/tables/0/wmo/11/codetables/2177.table
new file mode 100644
index 0000000..b8492e5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2177.table
@@ -0,0 +1,5 @@
+0 0 MANUAL OBSERVATION
+1 1 ULTRASONIC METHOD
+2 2 VIDEO CAMERA METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2178.table b/definitions/bufr/tables/0/wmo/11/codetables/2178.table
new file mode 100644
index 0000000..8953eb7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2178.table
@@ -0,0 +1,5 @@
+0 0 MANUAL OBSERVATION
+1 1 OPTICAL METHOD
+2 2 CAPACITIVE METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2179.table b/definitions/bufr/tables/0/wmo/11/codetables/2179.table
new file mode 100644
index 0000000..a76b878
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2179.table
@@ -0,0 +1,6 @@
+0 0 MANUAL OBSERVATION
+1 1 VAISALA ALGORITHM
+2 2 ASOS (FAA) ALGORITHM
+3 3 AWOS (CANADA) ALGORITHM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2180.table b/definitions/bufr/tables/0/wmo/11/codetables/2180.table
new file mode 100644
index 0000000..f7ec83c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2180.table
@@ -0,0 +1,8 @@
+0 0 MANUAL OBSERVATION
+1 1 OPTICAL SCATTER SYSTEM COMBINED WITH PRECIPITATION"    OCCURRENCE SENSING SYSTEM
+2 2 FORWARD AND/OR BACK-SCATTER SYSTEM OF VISIBLE LIGHT
+3 3 FORWARD AND/OR BACK-SCATTER SYSTEM OF INFRARED LIGHT
+4 4 INFRARED LIGHT EMITTING DIODE (IRED) SYSTEM
+5 5 DOPPLER RADAR SYSTEM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2181.table b/definitions/bufr/tables/0/wmo/11/codetables/2181.table
new file mode 100644
index 0000000..8e6466b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2181.table
@@ -0,0 +1,5 @@
+1 1 RAIN DETECTOR
+2 2 FREEZING RAIN SENSOR
+3 3 ICE DETECTION SENSOR
+4 4 HAIL AND ICE PELLET SENSOR
+20 20 OTHER
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2182.table b/definitions/bufr/tables/0/wmo/11/codetables/2182.table
new file mode 100644
index 0000000..97ffc04
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2182.table
@@ -0,0 +1,7 @@
+0 0 MANUAL MEASUREMENT
+1 1 TRANSMISSOMETER SYSTEM (BASE > 25)
+2 2 TRANSMISSOMETER SYSTEM (BASE < 25 M)
+3 3 FORWARD SCATTER SYSTEM
+4 4 BACK SCATTER SYSTEM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2183.table b/definitions/bufr/tables/0/wmo/11/codetables/2183.table
new file mode 100644
index 0000000..943c327
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2183.table
@@ -0,0 +1,9 @@
+0 0 MANUAL OBSERVATION
+1 1 CEILOMETER SYSTEM
+2 2 INFRARED CAMERA SYSTEM
+3 3 MICROWAVE VISUAL CAMERA SYSTEM
+4 4 SKY IMAGER SYSTEM
+5 5 VIDEO TIME LAPSED CAMERA SYSTEM
+6 6 MICRO PULSE LIDAR (MPL) SYSTEM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2184.table b/definitions/bufr/tables/0/wmo/11/codetables/2184.table
new file mode 100644
index 0000000..5698dac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2184.table
@@ -0,0 +1,8 @@
+0 0 MANUAL OBSERVATION
+1 1 LIGHTNING IMAGING SENSOR
+2 2 ELECTRICAL STORM IDENTIFICATION SENSOR
+3 3 MAGNETIC FINDER SENSOR
+4 4 LIGHTNING STRIKE SENSOR
+5 5 FLASH COUNTER
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2185.table b/definitions/bufr/tables/0/wmo/11/codetables/2185.table
new file mode 100644
index 0000000..3253397
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2185.table
@@ -0,0 +1,7 @@
+0 0 MANUAL MEASUREMENT
+1 1 BALANCED FLOATING METHOD
+2 2 PRESSURE METHOD
+3 3 ULTRASONIC METHOD
+4 4 HYDRAULIC METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2186.table b/definitions/bufr/tables/0/wmo/11/codetables/2186.table
new file mode 100644
index 0000000..05e1a36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2186.table
@@ -0,0 +1,23 @@
+1 1 PRECIPITATION-UNKNOWN TYPE
+2 2 LIQUID PRECIPITATION NOT FREEZING
+3 3 LIQUID FREEZING PRECIPITATION
+4 4 DRIZZLE
+5 5 RAIN
+6 6 SOLID PRECIPITATION
+7 7 SNOW
+8 8 SNOW GRAINS
+9 9 SNOW PELLETS
+10 10 ICE PELLETS
+11 11 ICE CRYSTALS
+12 12 DIAMOND DUST
+13 13 SMALL HAIL
+14 14 HAIL
+15 15 GLAZE
+16 16 RIME
+17 17 SOFT RIME
+18 18 HARD RIME
+19 19 CLEAR ICE
+20 20 WET SNOW
+21 21 HOAR FROST
+22 22 DEW
+23 23 WHITE DEW
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2187.table b/definitions/bufr/tables/0/wmo/11/codetables/2187.table
new file mode 100644
index 0000000..def3d2f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2187.table
@@ -0,0 +1,11 @@
+1 1 DUST/SAND WHIRL
+2 2 SQUALLS
+3 3 SAND STORM
+4 4 DUST STORM
+5 5 LIGHTNING - CLOUD TO SURFACE
+6 6 LIGHTNING - CLOUD TO CLOUD
+7 7 LIGHTNING - DISTANT
+8 8 THUNDERSTORM
+9 9 FUNNEL CLOUD NOT TOUCHING SURFACE
+10 10 FUNNEL CLOUD TOUCHING SURFACE
+11 11 SPRAY
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2188.table b/definitions/bufr/tables/0/wmo/11/codetables/2188.table
new file mode 100644
index 0000000..bb8114c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2188.table
@@ -0,0 +1,10 @@
+1 1 FOG
+2 2 ICE FOG
+3 3 STEAM FOG
+7 7 MIST
+8 8 HAZE
+9 9 SMOKE
+10 10 VOLCANIC ASH
+11 11 DUST
+12 12 SAND
+13 13 SNOW
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/2189.table b/definitions/bufr/tables/0/wmo/11/codetables/2189.table
new file mode 100644
index 0000000..710032d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/2189.table
@@ -0,0 +1,4 @@
+1 1 MANUAL OBSERVATION
+2 2 ALL LIGHTNING STRIKES WITHOUT DISCRIMINATION
+3 3 LIGHTNING STRIKES CLOUD TO GROUND ONLY
+4 4 ALL LIGHTNING STRIKES WITH DISCRIMINATION BETWEEN"    CLOUD TO GROUND AND CLOUD TO CLOUD
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/22056.table b/definitions/bufr/tables/0/wmo/11/codetables/22056.table
new file mode 100644
index 0000000..28ddbf4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/22056.table
@@ -0,0 +1,4 @@
+0 0 UPWARDS PROFILE
+1 1 DOWNWARDS PROFILE
+2 2 HORIZONTAL
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/22060.table b/definitions/bufr/tables/0/wmo/11/codetables/22060.table
new file mode 100644
index 0000000..b73ad32
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/22060.table
@@ -0,0 +1,4 @@
+0 0 DROGUE IS DETACHED
+1 1 DROGUE IS ATTACHED
+2 2 DROGUE STATUS UNKNOWN
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/22061.table b/definitions/bufr/tables/0/wmo/11/codetables/22061.table
new file mode 100644
index 0000000..de55e38
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/22061.table
@@ -0,0 +1,11 @@
+0 0 CALM (GLASSY)            HEIGHT     0            M
+1 1 CALM (RIPPLED)           HEIGHT     0     - 0.1  M
+2 2 SMOOTH (WAVELETS)        HEIGHT     0.1   - 0.5  M
+3 3 SLIGHT                   HEIGHT     0.5   - 1.5  M
+4 4 MODERATE                 HEIGHT     1.25  - 2.5  M
+5 5 ROUGH                    HEIGHT     2.5   - 4    M
+6 6 VERY ROUGH               HEIGHT     4     - 6    M
+7 7 HIGH                     HEIGHT     6     - 9    M
+8 8 VERY HIGH                HEIGHT     9     -14    M
+9 9 PHENOMANAL               HEIGHT     OVER   14    M
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/22067.table b/definitions/bufr/tables/0/wmo/11/codetables/22067.table
new file mode 100644
index 0000000..1728310
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/22067.table
@@ -0,0 +1 @@
+0 0 SEE COMMON CODE TABLE C3
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/22068.table b/definitions/bufr/tables/0/wmo/11/codetables/22068.table
new file mode 100644
index 0000000..c11d658
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/22068.table
@@ -0,0 +1 @@
+0 0 SEE COMMON CODE TABLE C4
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/22120.table b/definitions/bufr/tables/0/wmo/11/codetables/22120.table
new file mode 100644
index 0000000..c485b9f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/22120.table
@@ -0,0 +1,13 @@
+0 0 GOOD DATA
+1 1 MAXIMUM (HIGH) WATER LEVEL LIMIT EXCEEDED
+2 2 MINIMUM (LOW) WATER LEVEL LIMIT EXCEEDED
+3 3 RATE OF CHANGE LIMIT FOR WATER LEVEL EXCEEDED
+4 4 FLAT LIMIT FOR WATER LEVEL EXCEEDED
+5 5 OBSERVED MINUS PREDICTED WATER LEVEL VALUE LIMIT EXCEEDED
+6 6 OBSERVED VALUE FROM PRIMARY WATER LEVEL SENSOR MINUS"    BACKUP WATER LEVEL SENSOR
+7 7 VALUE EXCEEDED SPECIFIED TOLERANCE FROM EXPECTED VALUE
+8 8 WATER LEVEL QA PARAMETER (SIGMAS AND/OR OUTLIERS) LIMITS EXC"    EEDED
+9 9 SEA TEMPERATURE OUTSIDE OF EXPECTED RANGE
+10 10 MULTIPLE QC CHECKS (ABOVE) FAILED
+11 11 NO AUTOMATED WATER LEVEL CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/22121.table b/definitions/bufr/tables/0/wmo/11/codetables/22121.table
new file mode 100644
index 0000000..4e4d870
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/22121.table
@@ -0,0 +1,9 @@
+0 0 OPERATIONAL
+1 1 POSSIBLE CLOGGING PROBLEM OR OTHERWISE DEGRADED WATE LEVEL D"    ATA
+2 2 POSSIBLE DATUM SHIFT
+3 3 UNKNOWN STATUS OF WATER LEVEL SENSOR
+4 4 SUSPECTED OR KNOWN SEA TEMPERATURE SENSOR PROBLEM
+5 5 MULTIPLE POSSIBLE PROBLEMS (ABOVE)
+6 6 BAD DATA- DO NOT DISSEMINATE
+7 7 NO MANUAL WATER LEVEL CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/22122.table b/definitions/bufr/tables/0/wmo/11/codetables/22122.table
new file mode 100644
index 0000000..1a5fe36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/22122.table
@@ -0,0 +1,8 @@
+0 0 GOOD DATA FROM ALL SENSORS
+1 1 WIND DIRECTION OUTSIDE OF ALLOWABLE RANGE
+2 2 WIND SPEED OUTSIDE OF EXPECTED RANGE
+3 3 BAROMETRIC PRESSURE OUTSIDE OF EXPECTED RANGE
+4 4 AIR TEMPERATURE OUTSIDE OF EXPECTED RANGE
+5 5 MULTIPLE SENSOR FAILED QC CHECKS
+6 6 NO AUTOMATED METEOROLOGICAL DATA CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/22123.table b/definitions/bufr/tables/0/wmo/11/codetables/22123.table
new file mode 100644
index 0000000..62b0186
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/22123.table
@@ -0,0 +1,9 @@
+0 0 OPERATIONAL
+1 1 SUSPECTED OR KNOWN PROBLEM WITH WIND SENSOR
+2 2 SUSPECTED OR KNOWN PROBLEM WITH BAROMETRIC PRESSURE SENSOR
+3 3 SUSPECTED OR KNOWN PROBLEM WITH AIR TEMPERATURE SENSOR
+4 4 UNKNOWN STATUS OF ALL SENSORS
+5 5 SUSPECTED OR KNOWN PROBLEMS WITH MULTIPLE SENSORS
+6 6 BAD DATA - DO NOT DISSEMINATE
+7 7 NO MANUAL METEOROLOGICAL DATA CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/23001.table b/definitions/bufr/tables/0/wmo/11/codetables/23001.table
new file mode 100644
index 0000000..92ac5de
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/23001.table
@@ -0,0 +1,5 @@
+0 0 RESERVED
+1 1 ARTICLES 1 AND 2
+2 2 ARTICLE 3
+3 3 ARTICLE 5.2
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/23002.table b/definitions/bufr/tables/0/wmo/11/codetables/23002.table
new file mode 100644
index 0000000..5070901
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/23002.table
@@ -0,0 +1,16 @@
+0 0 RESERVED
+1 1 NUCLEAR REACTOR ON GROUND
+2 2 NUCLEAR REACTOR ON SEA
+3 3 NUCLEAR REACTOR IN SPACE
+4 4 NUCLEAR FULE FACILITY
+5 5 RADIOACTIVE WASTE MANAGMENT FACITILY
+6 6 TRANSPORT OF NUCLEAR FUEL OR RADIOACTIVE WASTE
+7 7 STORAGE OF NUCLEAR FUEL OR RADIOACTIVE WASTE
+8 8 MANUFACTURE OF RADIO-ISOTOPES
+9 9 USE OF RADIO-ISOTOPES
+10 10 STORAGE OF RADIO-ISOTOPES
+11 11 DISPOSAL OF RADIO-ISOTOPS
+12 12 TRANSPORT OF RADIO-ISOTOPES
+13 13 USE OF RADIO-ISOTOPES FOR POWER GENERATION
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/23003.table b/definitions/bufr/tables/0/wmo/11/codetables/23003.table
new file mode 100644
index 0000000..e3e891f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/23003.table
@@ -0,0 +1,8 @@
+0 0 NO RELEASE
+1 1 RELEASE TO ATMOSPHERE
+2 2 RELEASE TO WATER
+3 3 RELEASE TO BOTH ATMOSPHERE AND WATER
+4 4 EXPECTED RELEASE TO ATMOSPHERE
+5 5 EXPECTED RELEASE TO WATER
+6 6 EXPECTED RELEASE TO BOTH ATMOSPHERE AND WATER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/23004.table b/definitions/bufr/tables/0/wmo/11/codetables/23004.table
new file mode 100644
index 0000000..804d1e1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/23004.table
@@ -0,0 +1,6 @@
+0 0 NO COUNTERMEASURE
+1 1 EVACUATION
+2 2 SHELTERING
+3 3 PROPHILAXIS
+4 4 WATER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/23005.table b/definitions/bufr/tables/0/wmo/11/codetables/23005.table
new file mode 100644
index 0000000..e22eb99
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/23005.table
@@ -0,0 +1,4 @@
+0 0 INCIDENT STAT DOES NOT UNDERSTAND WHAT HAPPENED
+1 1 INCIDENT STATE KNOWS THE CAUSE OF THE INCIDENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/23006.table b/definitions/bufr/tables/0/wmo/11/codetables/23006.table
new file mode 100644
index 0000000..fe7706a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/23006.table
@@ -0,0 +1,8 @@
+0 0 NO IMPROVEMENT
+1 1 UNSTABLE
+2 2 NO DETERIORATION
+3 3 IMPROVING
+4 4 STABLE
+5 5 DETERIORATING
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/23007.table b/definitions/bufr/tables/0/wmo/11/codetables/23007.table
new file mode 100644
index 0000000..59fc043
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/23007.table
@@ -0,0 +1,5 @@
+0 0 NO RELEASE
+1 1 RELEASE HAS STOPPED
+2 2 RELEASE
+3 3 RELEASE IS CONTINUING
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/23008.table b/definitions/bufr/tables/0/wmo/11/codetables/23008.table
new file mode 100644
index 0000000..b20991c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/23008.table
@@ -0,0 +1,4 @@
+0 0 GASEUS
+1 1 PARTICULATE
+2 2 MIXTURE OF GASEUS AND PARTICULATE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/23009.table b/definitions/bufr/tables/0/wmo/11/codetables/23009.table
new file mode 100644
index 0000000..b20991c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/23009.table
@@ -0,0 +1,4 @@
+0 0 GASEUS
+1 1 PARTICULATE
+2 2 MIXTURE OF GASEUS AND PARTICULATE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/23016.table b/definitions/bufr/tables/0/wmo/11/codetables/23016.table
new file mode 100644
index 0000000..57425e9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/23016.table
@@ -0,0 +1,4 @@
+0 0 NO SIGNIFICANT TOXIC HEALTH EFFECT
+1 1 SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT POSSIBLE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/23018.table b/definitions/bufr/tables/0/wmo/11/codetables/23018.table
new file mode 100644
index 0000000..ccdcc45
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/23018.table
@@ -0,0 +1,6 @@
+0 0 RELEASE NO LONGER OCCURRING
+1 1 RELEASE STILL OCCURRING
+2 2 RELEASE EXPECTED TO INCREASE IN NEXT SIX HOURS
+3 3 RELEASE EXPECTED TO REMAIN CONSTANT IN NEXT SIX HOURS
+4 4 RELEASE EXPECTED TO DECREASE IN NEXT SIX HOURS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/23031.table b/definitions/bufr/tables/0/wmo/11/codetables/23031.table
new file mode 100644
index 0000000..cf20e26
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/23031.table
@@ -0,0 +1,4 @@
+0 0 PLUME WILL NOT ENCOUNTER RAIN IN INCIDENT STATE
+1 1 PLUME WILL ENCOUNTER RAIN IN INCIDENT STATE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/23032.table b/definitions/bufr/tables/0/wmo/11/codetables/23032.table
new file mode 100644
index 0000000..18dea38
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/23032.table
@@ -0,0 +1,4 @@
+0 0 NO SIGNIFICANT CHANGE EXPECTED WITHIN NEXT SIX HOURS
+1 1 ANTICIPATED SIGNIFICANT CHANGE EXPECTED WITHIN NEXT SIX HOUR"    S
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/24003.table b/definitions/bufr/tables/0/wmo/11/codetables/24003.table
new file mode 100644
index 0000000..de7cf4e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/24003.table
@@ -0,0 +1,5 @@
+0 0 NOBLE GASES
+1 1 IODINES
+2 2 CAESIUM
+3 3 TRANSURANICS
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25004.table b/definitions/bufr/tables/0/wmo/11/codetables/25004.table
new file mode 100644
index 0000000..dfe4517
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25004.table
@@ -0,0 +1,4 @@
+0 0 INCOHERENT
+1 1 COHERENT (DOPPLER)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25005.table b/definitions/bufr/tables/0/wmo/11/codetables/25005.table
new file mode 100644
index 0000000..54954d6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25005.table
@@ -0,0 +1,4 @@
+0 0 LOGATITHM - 2.5 DB
+1 1 LINEAR
+2 2 SPECIAL
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25006.table b/definitions/bufr/tables/0/wmo/11/codetables/25006.table
new file mode 100644
index 0000000..35a61ac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25006.table
@@ -0,0 +1,5 @@
+0 0 ZH TO R CONVERSION
+1 1 (ZH, ZDR) TO (NO.DO) TO R
+2 2 (Z(F1),Z(F2)) TO ATTENUATION TO R
+6 6 OTHER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25009.table b/definitions/bufr/tables/0/wmo/11/codetables/25009.table
new file mode 100644
index 0000000..927847b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25009.table
@@ -0,0 +1,4 @@
+1 1 NONE
+2 2 CALIBRATION TARGET OR SIGNAL
+3 3 AGAINST RAINGAGES
+4 4 AGAINST OTHER INSTRUMENTS (DISTROMETER-ATTENUATION)
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25010.table b/definitions/bufr/tables/0/wmo/11/codetables/25010.table
new file mode 100644
index 0000000..70854d8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25010.table
@@ -0,0 +1,8 @@
+0 0 NONE
+1 1 MAP
+2 2 INSERTION OF HIGHER ELEVATION DATA AND MAP
+3 3 ANALYSIS OF FLUCTUATING LOGARITHM SIGNAL (CLUTTER DETECTION)
+4 4 EXTRACTION OF FLUCTUATING PART OF LINEAR SIGNAL (CLUTTER SUP"    PRESSION)
+5 5 CLUTTER SUPPRESSION DOPPLER
+6 6 MULTIPARAMETER ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25011.table b/definitions/bufr/tables/0/wmo/11/codetables/25011.table
new file mode 100644
index 0000000..f739498
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25011.table
@@ -0,0 +1,4 @@
+0 0 NONE
+1 1 MAP OF CORRECTION FACTORS
+2 2 INTERPOLATION (AZIMUTH OR ELEVATION)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25012.table b/definitions/bufr/tables/0/wmo/11/codetables/25012.table
new file mode 100644
index 0000000..c869a4a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25012.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE
+1 1 SOFTWARE
+2 2 HARDWARE AND SOFTWARE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25013.table b/definitions/bufr/tables/0/wmo/11/codetables/25013.table
new file mode 100644
index 0000000..4c13814
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25013.table
@@ -0,0 +1 @@
+1 1 BRIGHT BAND CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25015.table b/definitions/bufr/tables/0/wmo/11/codetables/25015.table
new file mode 100644
index 0000000..043e587
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25015.table
@@ -0,0 +1 @@
+1 1 RADOME ATTENUATION CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25017.table b/definitions/bufr/tables/0/wmo/11/codetables/25017.table
new file mode 100644
index 0000000..ed48487
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25017.table
@@ -0,0 +1 @@
+1 1 PRECIPITATION ATTENUATION CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25020.table b/definitions/bufr/tables/0/wmo/11/codetables/25020.table
new file mode 100644
index 0000000..ba9b528
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25020.table
@@ -0,0 +1,4 @@
+0 0 FTT (FAST FOURIER TRANSFORM
+1 1 PPP (PULSE PAIR PROCESSING
+2 2 VPC (VECTOR-PHASE CHANGE)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25021.table b/definitions/bufr/tables/0/wmo/11/codetables/25021.table
new file mode 100644
index 0000000..314716b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25021.table
@@ -0,0 +1,5 @@
+1 1 SIMPLE AVERAGE
+2 2 CONSENSUS AVERAGE
+3 3 MEDIAN CHECK
+4 4 VERTICAL CONSISTENCY CHECK
+5 5 OTHER
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25030.table b/definitions/bufr/tables/0/wmo/11/codetables/25030.table
new file mode 100644
index 0000000..aa78900
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25030.table
@@ -0,0 +1,4 @@
+0 0 RUNNING MEAN SEA-SURFACE TEMPERATURE NOT USED BECAUSE USAGE"     CRITERIA NOT MET
+1 1 RUNNING MEAN SEA-SURFACE TEMPERATURE NOT USED BECAUSE DATA N"    OT AVAILABLE
+2 2 RUNNING MEAN SEA-SURFACE TEMPERATURE USED AS PREDICTOR
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25032.table b/definitions/bufr/tables/0/wmo/11/codetables/25032.table
new file mode 100644
index 0000000..9b894f4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25032.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 DATA FROM LOW MODE
+2 2 DATA FROM HIGH MODE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25033.table b/definitions/bufr/tables/0/wmo/11/codetables/25033.table
new file mode 100644
index 0000000..e7141c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25033.table
@@ -0,0 +1,4 @@
+0 0 WIND PROFILER OPERATING IN SUBMODE A
+1 1 WIND PROFILER OPERATING IN SUBMODE B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25034.table b/definitions/bufr/tables/0/wmo/11/codetables/25034.table
new file mode 100644
index 0000000..473338a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25034.table
@@ -0,0 +1,3 @@
+1 1 TEST A PERFORMED AND FAILED
+2 2 TEST B PERFORMED AND FAILED
+3 3 TEST RESULTS INCONCLUSIVE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25036.table b/definitions/bufr/tables/0/wmo/11/codetables/25036.table
new file mode 100644
index 0000000..d71ffd1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25036.table
@@ -0,0 +1,4 @@
+0 0 NETWORK OF SEVERAL DIRECTION-FINDERS OPERATING ON"     THE SAME INDIVIDUAL ATMOSPHERICS
+1 1 NETWORK OF SEVERAL ARRIVAL-TIME STATIONS OPERATING ON"     THE SAME INDIVIDUAL ATMOSPHERICS
+6 6 SINGLE STATION RANGE BEARING TECHNIQUE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25040.table b/definitions/bufr/tables/0/wmo/11/codetables/25040.table
new file mode 100644
index 0000000..648a71b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25040.table
@@ -0,0 +1,10 @@
+0 0 NON-SPECIFIC MODE
+1 1 FIRST GUESS DATA
+2 2 CLOUD DATA
+3 3 AVERAGE VECTOR DATA
+4 4 PRIMARY DATA
+5 5 GUESS DATA
+6 6 VECTOR DATA
+7 7 TRACER DATA; THE IMAGE
+8 8 TRACER DATA TO NEXT IMAGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25041.table b/definitions/bufr/tables/0/wmo/11/codetables/25041.table
new file mode 100644
index 0000000..f388da0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25041.table
@@ -0,0 +1,4 @@
+0 0 DIRECTION ORIGINALLY REPORTED IN TRUE DEGREES
+1 1 DIRECTION ORIGINALLY REPORTED USING CODE TABLE 0700, FM 13
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25042.table b/definitions/bufr/tables/0/wmo/11/codetables/25042.table
new file mode 100644
index 0000000..314f464
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25042.table
@@ -0,0 +1,4 @@
+0 0 SPEED ORIGINALLY REPORTED IN METERS PER SECOND
+1 1 SPEED ORIGINALLY REPORTED USING CODE TABLE 2251, FM 13
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25045.table b/definitions/bufr/tables/0/wmo/11/codetables/25045.table
new file mode 100644
index 0000000..6a26361
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25045.table
@@ -0,0 +1,20 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
+6 6 CHANNEL  6 PRESENT - (SET TO 1 PRESENT)
+7 7 CHANNEL  7 PRESENT - (SET TO 1 PRESENT)
+8 8 CHANNEL  8 PRESENT - (SET TO 1 PRESENT)
+9 9 CHANNEL  9 PRESENT - (SET TO 1 PRESENT)
+10 10 CHANNEL 10 PRESENT - (SET TO 1 PRESENT)
+11 11 CHANNEL 11 PRESENT - (SET TO 1 PRESENT)
+12 12 CHANNEL 12 PRESENT - (SET TO 1 PRESENT)
+13 13 CHANNEL 13 PRESENT - (SET TO 1 PRESENT)
+14 14 CHANNEL 14 PRESENT - (SET TO 1 PRESENT)
+15 15 CHANNEL 15 PRESENT - (SET TO 1 PRESENT)
+16 16 CHANNEL 16 PRESENT - (SET TO 1 PRESENT)
+17 17 CHANNEL 17 PRESENT - (SET TO 1 PRESENT)
+18 18 CHANNEL 18 PRESENT - (SET TO 1 PRESENT)
+19 19 CHANNEL 19 PRESENT - (SET TO 1 PRESENT)
+20 20 CHANNEL 20 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25046.table b/definitions/bufr/tables/0/wmo/11/codetables/25046.table
new file mode 100644
index 0000000..0cda73b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25046.table
@@ -0,0 +1,4 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25047.table b/definitions/bufr/tables/0/wmo/11/codetables/25047.table
new file mode 100644
index 0000000..ad6fa18
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25047.table
@@ -0,0 +1,3 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25048.table b/definitions/bufr/tables/0/wmo/11/codetables/25048.table
new file mode 100644
index 0000000..a628567
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25048.table
@@ -0,0 +1,15 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
+6 6 CHANNEL  6 PRESENT - (SET TO 1 PRESENT)
+7 7 CHANNEL  7 PRESENT - (SET TO 1 PRESENT)
+8 8 CHANNEL  8 PRESENT - (SET TO 1 PRESENT)
+9 9 CHANNEL  9 PRESENT - (SET TO 1 PRESENT)
+10 10 CHANNEL 10 PRESENT - (SET TO 1 PRESENT)
+11 11 CHANNEL 11 PRESENT - (SET TO 1 PRESENT)
+12 12 CHANNEL 12 PRESENT - (SET TO 1 PRESENT)
+13 13 CHANNEL 13 PRESENT - (SET TO 1 PRESENT)
+14 14 CHANNEL 14 PRESENT - (SET TO 1 PRESENT)
+15 15 CHANNEL 15 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25049.table b/definitions/bufr/tables/0/wmo/11/codetables/25049.table
new file mode 100644
index 0000000..db2a09c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25049.table
@@ -0,0 +1,5 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25051.table b/definitions/bufr/tables/0/wmo/11/codetables/25051.table
new file mode 100644
index 0000000..3b3fbde
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25051.table
@@ -0,0 +1,6 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
+6 6 CHANNEL  6 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25053.table b/definitions/bufr/tables/0/wmo/11/codetables/25053.table
new file mode 100644
index 0000000..af34138
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25053.table
@@ -0,0 +1,6 @@
+1 1 GOOD
+2 2 REDUNDANT
+3 3 QUESTIONABLE
+4 4 BAD
+5 5 EXPERIMENTAL
+6 6 PRECIPITATING
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25069.table b/definitions/bufr/tables/0/wmo/11/codetables/25069.table
new file mode 100644
index 0000000..e627613
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25069.table
@@ -0,0 +1,7 @@
+1 1 SMOOTHED
+2 2 BASELINE ADJUSTED
+3 3 NORMALIZED TIME INTERVAL
+4 4 OUTLIER CHECKED
+5 5 PLAUSIBILITY CHECKED
+6 6 CONSISTENCY CHECKED
+7 7 INTERPOLATED
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25086.table b/definitions/bufr/tables/0/wmo/11/codetables/25086.table
new file mode 100644
index 0000000..294fa69
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25086.table
@@ -0,0 +1,4 @@
+0 0 DEPTHS ARE NOT CORRECTED
+1 1 DEPTHS ARE CORRECTED
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25093.table b/definitions/bufr/tables/0/wmo/11/codetables/25093.table
new file mode 100644
index 0000000..e547e6c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25093.table
@@ -0,0 +1,3 @@
+1 1 NO CORRECTION
+2 2 VERTICAL VELOCITY CORRECTION
+7 7 ALL CORRECTIONS
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25095.table b/definitions/bufr/tables/0/wmo/11/codetables/25095.table
new file mode 100644
index 0000000..a303e57
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25095.table
@@ -0,0 +1 @@
+1 1 ALTIMETER OPERATING (SET TO 0 IF NOMINAL, SET TO"     BACKUP)
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25096.table b/definitions/bufr/tables/0/wmo/11/codetables/25096.table
new file mode 100644
index 0000000..dcffa91
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25096.table
@@ -0,0 +1,4 @@
+1 1 MODE INDICATOR (0 IF MODE 2, 1 IF MODE 1)
+2 2 MODE 1 CALIBRATION SEQUENCE INDICATOR (0 IF NORMAL DATA TAKI"    NG EITHER MODE 1 OR 2, 1 IF MODE 1 CALIBRATION SEQUENCE) BIT"    S 3 AND 4 INDICATE A
+3 3 CHANNEL 2 (0 IF ON, 1 IF OFF)
+4 4 CHANNEL 3 (0 IF ON, 1 IF OFF)
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25097.table b/definitions/bufr/tables/0/wmo/11/codetables/25097.table
new file mode 100644
index 0000000..d4e1e46
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25097.table
@@ -0,0 +1,11 @@
+0 0 RANGES BETWEEN 0 AND 30 CM
+1 1 RANGES BETWEEN 30 AND 60 CM
+2 2 RANGES BETWEEN 60 AND 90 CM
+3 3 RANGES BETWEEN 90 AND 120 CM
+4 4 RANGES BETWEEN 120 AND 150 CM
+5 5 RANGES BETWEEN 150 AND 180 CM
+6 6 RANGES BETWEEN 180 AND 210 CM
+7 7 RANGES BETWEEN 210 AND 240 CM
+8 8 RANGES BETWEEN 240 AND 270 CM
+9 9 RANGES LARGER THAN 270 CM
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25098.table b/definitions/bufr/tables/0/wmo/11/codetables/25098.table
new file mode 100644
index 0000000..b49bdb5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25098.table
@@ -0,0 +1,8 @@
+1 1 KU BAND RANGE
+2 2 C BAND RANGE
+3 3 KU BAND SWH
+4 4 C BAND SWH
+5 5 KU BAND SCATTEROMETER COEFFICIENT
+6 6 C BAND SCATTEROMETER COEFFICIENT
+7 7 OFF NADIR ANGLE FROM KU BAND WVEFORM PARAMETERS
+8 8 OFF NADIR FROM PLATFORM
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25099.table b/definitions/bufr/tables/0/wmo/11/codetables/25099.table
new file mode 100644
index 0000000..c6cabcd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25099.table
@@ -0,0 +1,6 @@
+1 1 KU BAND RANGE INSTRUMENTAL CORRECTION
+2 2 C BAND RANGE INSTRUMENTAL CORRECTION
+3 3 KU BAND SWH INSTRUMENTAL CORRECTION
+4 4 C BAND SWH INSTRUMENTAL CORRECTION
+5 5 KU BAND SCATTEROMETER COEFFICIENT INSTRUMENTAL CORRECTION
+6 6 C BAND SCATTEROMETER COEFFICIENT INSTRUMENTAL CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25110.table b/definitions/bufr/tables/0/wmo/11/codetables/25110.table
new file mode 100644
index 0000000..c53002c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25110.table
@@ -0,0 +1,6 @@
+1 1 RAW DATA ANALYSIS USED FOR RAW DATA CORRECTION."    CORRECTION DONE USING DEFAULT PARAMETERS
+2 2 RAW DATA ANALYSIS USED FOR RAW DATA CORRECTION."    CORRECTION DONE USING RAW DATA ANALYSIS RESULTS
+3 3 ANTENNA ELEVATION PATTERN CORRECTION APPLIED
+4 4 NOMINAL CHIRP REPLICA USED
+5 5 RECONSTRUCTED CHIRP USED
+6 6 SLANT RANGE TO GROUND RANGE CONVERSION APPLIED
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25120.table b/definitions/bufr/tables/0/wmo/11/codetables/25120.table
new file mode 100644
index 0000000..026f109
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25120.table
@@ -0,0 +1,4 @@
+0 0 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"     2 PROCESSING IS GREATER THAN THE ACCEPTABLE THRESHOLD
+1 1 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"    2 PROCESSING IS LESS THAN THE ACCEPTABLE THRESHOLD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25122.table b/definitions/bufr/tables/0/wmo/11/codetables/25122.table
new file mode 100644
index 0000000..1085ef9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25122.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE CONFIGURATION FOR RF IS A
+1 1 HARDWARE CONFIGURATION FOR RF IS B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25123.table b/definitions/bufr/tables/0/wmo/11/codetables/25123.table
new file mode 100644
index 0000000..70f0670
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25123.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE CONFIGURATION FOR HPA IS A
+1 1 HARDWARE CONFIGURATION FOR HPA IS B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/25124.table b/definitions/bufr/tables/0/wmo/11/codetables/25124.table
new file mode 100644
index 0000000..e611ac0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/25124.table
@@ -0,0 +1,4 @@
+0 0 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"    2 PROCESSING IS GREATER THAN THE ACCEPTABLE THRESHOLD
+1 1 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"    2 PROCESSING IS LESS THAN THE ACCEPTABLE THRESHOLD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/26010.table b/definitions/bufr/tables/0/wmo/11/codetables/26010.table
new file mode 100644
index 0000000..f825040
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/26010.table
@@ -0,0 +1,25 @@
+1 1 0100 INCLUDED
+2 2 0200 INCLUDED
+3 3 0300 INCLUDED
+4 4 0400 INCLUDED
+5 5 0500 INCLUDED
+6 6 0600 INCLUDED
+7 7 0700 INCLUDED
+8 8 0800 INCLUDED
+9 9 0900 INCLUDED
+10 10 1000 INCLUDED
+11 11 1100 INCLUDED
+12 12 1200 INCLUDED
+13 13 1300 INCLUDED
+14 14 1400 INCLUDED
+15 15 1500 INCLUDED
+16 16 1600 INCLUDED
+17 17 1700 INCLUDED
+18 18 1800 INCLUDED
+19 19 1900 INCLUDED
+20 20 2000 INCLUDED
+21 21 2100 INCLUDED
+22 22 2200 INCLUDED
+23 23 2300 INCLUDED
+24 24 2400 INCLUDED
+25 25 UNKNOWN MIXTURE OF HOURS
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/29001.table b/definitions/bufr/tables/0/wmo/11/codetables/29001.table
new file mode 100644
index 0000000..beff485
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/29001.table
@@ -0,0 +1,6 @@
+0 0 GNOMONIC PROJECTION
+1 1 POLAR STEREOGRAPHIC PROJECTION
+2 2 LAMBERT'S CONFORMAL CONIC PROJECTION
+3 3 MERCATOR'S PROJECTION
+4 4 SCANNING CONE (RADAR)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/29002.table b/definitions/bufr/tables/0/wmo/11/codetables/29002.table
new file mode 100644
index 0000000..1d7efd0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/29002.table
@@ -0,0 +1,4 @@
+0 0 CARTESIAN
+1 1 POLAR
+2 2 OTHER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/30031.table b/definitions/bufr/tables/0/wmo/11/codetables/30031.table
new file mode 100644
index 0000000..12ddc7c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/30031.table
@@ -0,0 +1,13 @@
+0 0 PPI
+1 1 COMPOSITE
+2 2 CAPPI
+3 3 VERTICAL SECTION
+4 4 ALPHANUMERIC DATA
+5 5 MAP OF SUBJECT CLUTTER
+6 6 MAP
+7 7 TEST PICTURE
+8 8 COMMENTS
+9 9 MAP OF GROUND OCCULTATION
+10 10 MAP OF RADAR BEAM HEIGHT
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/30032.table b/definitions/bufr/tables/0/wmo/11/codetables/30032.table
new file mode 100644
index 0000000..942cb5d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/30032.table
@@ -0,0 +1,9 @@
+1 1 MAP
+2 2 SATELLITE IR
+3 3 SATELLITE VIS
+4 4 SATELLITE WV
+5 5 SATELLITE MULTISPECTRAL
+6 6 SYNOPTIC OBSERVATIONS
+7 7 FORECAST PARAMETERS
+8 8 LIGHTNING DATA
+15 15 OTHER DATA
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/31021.table b/definitions/bufr/tables/0/wmo/11/codetables/31021.table
new file mode 100644
index 0000000..de8d5a6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/31021.table
@@ -0,0 +1,4 @@
+1 1 1 BIT INDICATOR OF QUALITY, 0= GOOD; 1=SUSPECT OR BAD
+2 2 2 BIT INDICATOR OF QUALITY, 0= GOOD; 1= SLIGHTLY SUSPECTED;"    2= HIGHLY SUSPECTED; 3=BAD
+7 7 PERCENTAGE CONFIDENCE
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/31031.table b/definitions/bufr/tables/0/wmo/11/codetables/31031.table
new file mode 100644
index 0000000..4ce2df8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/31031.table
@@ -0,0 +1 @@
+1 1 DATA NOT PRESENT
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33002.table b/definitions/bufr/tables/0/wmo/11/codetables/33002.table
new file mode 100644
index 0000000..74fd2d6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33002.table
@@ -0,0 +1,4 @@
+0 0 DATA NOT SUSPECT
+1 1 DATA SUSPECT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33003.table b/definitions/bufr/tables/0/wmo/11/codetables/33003.table
new file mode 100644
index 0000000..1516d51
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33003.table
@@ -0,0 +1,5 @@
+0 0 DATA NOT SUSPECT
+1 1 DATA SLIGHTLY SUSPECT
+2 2 DATA HIGHTLY SUSPECT
+3 3 DATA CONSIDERED UNFIT FOR USE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33005.table b/definitions/bufr/tables/0/wmo/11/codetables/33005.table
new file mode 100644
index 0000000..880bae8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33005.table
@@ -0,0 +1,23 @@
+1 1 NO AUTOMATED METEOROLOGICAL DATA CHECKS PERFORMED
+2 2 PRESSURE DATA SUSPECT
+3 3 WIND DATA SUSPECT
+4 4 DRY-BULB TEMPERATURE DATA SUSPECT
+5 5 WET-BULB TEMPERATURE DATA SUSPECT
+6 6 HUMIDITY DATA SUSPECT
+7 7 GROUND TEMPERATURE DATA SUSPECT
+8 8 SOIL TEMPERATURE (DEPTH 1) DATA SUSPECT
+9 9 SOIL TEMPERATURE (DEPTH 2) DATA SUSPECT
+10 10 SOIL TEMPERATURE (DEPTH 3) DATA SUSPECT
+11 11 SOIL TEMPERATURE (DEPTH 4) DATA SUSPECT
+12 12 SOIL TEMPERATURE (DEPTH 5) DATA SUSPECT
+13 13 CLOUD DATA SUSPECT
+14 14 VISIBILITY DATA SUSPECT
+15 15 PRESENT WEATHER DATA SUSPECT
+16 16 LIGHTNING DATA SUSPECT
+17 17 ICE DEPOSIT DATA SUSPECT
+18 18 PRECIPITATION DATA SUSPECT
+19 19 STATE OF GROUND DATA SUSPECT
+20 20 SNOW DATA SUSPECT
+21 21 WATER CONTENT DATA SUSPECT
+22 22 EVAPORATION/EVAPOTRANSPIRATION DATA SUSPECT
+23 23 SUNSHINE DATA SUSPECT
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33006.table b/definitions/bufr/tables/0/wmo/11/codetables/33006.table
new file mode 100644
index 0000000..0ea44a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33006.table
@@ -0,0 +1,5 @@
+0 0 SELF-CHECK OK
+1 1 AT LEAST ONE WARNING ACTIVE, NO ALARMS
+2 2 AT LEAST ONE ALARM ACTIVE
+3 3 SENSOR FAILURE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33015.table b/definitions/bufr/tables/0/wmo/11/codetables/33015.table
new file mode 100644
index 0000000..dd633f1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33015.table
@@ -0,0 +1,16 @@
+0 0 PASSED ALL CHECKS
+1 1 MISSING-DATA CHECK
+2 2 DESCENDING/REASCENDING BALLOON CHECK
+3 3 DATA PLAUSIBILITY CHECK (ABOVE LIMITS)
+4 4 DATA PLAUSIBILITY CHECK (BELOW LIMITS)
+5 5 SUPERADIABATIC LAPSE RATE CHECK
+6 6 LIMITING ANGLES CHECK
+7 7 ASCENSION RATE CHECK
+8 8 EXCESSIVE CHANGE FROM PREVIOUS FLIGHT
+9 9 BALLOON OVERHEAD CHECK
+10 10 WIND SPEED CHECK
+11 11 WIND DIRECTION CHECK
+12 12 DEPENDENCY CHECK
+13 13 DATA VALID BUT MODIFIED
+14 14 DATA OUTLIER CHECK
+63 63 MISSING DATA
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33020.table b/definitions/bufr/tables/0/wmo/11/codetables/33020.table
new file mode 100644
index 0000000..023909a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33020.table
@@ -0,0 +1,8 @@
+0 0 GOOD
+1 1 INCONSISTENT
+2 2 DOUBTFUL
+3 3 WRONG
+4 4 NOT CHECKED
+5 5 HAS BEEN CHECKED
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33021.table b/definitions/bufr/tables/0/wmo/11/codetables/33021.table
new file mode 100644
index 0000000..e3e67ae
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33021.table
@@ -0,0 +1,4 @@
+0 0 WITHIN LIMITS
+1 1 OUTSIDE LIMITS
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33022.table b/definitions/bufr/tables/0/wmo/11/codetables/33022.table
new file mode 100644
index 0000000..692661f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33022.table
@@ -0,0 +1,4 @@
+0 0 GOOD (SEVERAL IDENTICAL REPORTS HAVE BEEN RECEIVED)
+1 1 DUBIOUS (NO IDENTICAL REPORT HAVE BEEN RECEIVED)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33023.table b/definitions/bufr/tables/0/wmo/11/codetables/33023.table
new file mode 100644
index 0000000..71ecd11
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33023.table
@@ -0,0 +1,4 @@
+0 0 RELIABLE (LOCATION WAS MADE OVER TWO SATELLITE PASSES)
+1 1 LATEST KNOWN (NO LOCATION OVER CORRESPONDING PASS)
+2 2 DUBIOUS
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33024.table b/definitions/bufr/tables/0/wmo/11/codetables/33024.table
new file mode 100644
index 0000000..e1e3b92
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33024.table
@@ -0,0 +1,10 @@
+0 0 RESERVED
+1 1 EXELLENT - WITHIN 3 METRES
+2 2 GOOD - WITHIN 10 METRES
+3 3 FAIR - WITHIN 20 METRES
+4 4 POOR - MORE THAN 20 METRES
+5 5 EXELLENT -WITHIN 10 FEET
+6 6 GOOD WITHIN-30 FEET
+7 7 FAIR WITHIN 60 FEET
+8 8 POOR - MORE THAN 60 FEET
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33025.table b/definitions/bufr/tables/0/wmo/11/codetables/33025.table
new file mode 100644
index 0000000..edcd4e3
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33025.table
@@ -0,0 +1,5 @@
+0 0 TIME INTERPOLATED, LATITUDE AND LONGITUDE REPORTED
+1 1 TIME REPORTED, LATITUDE AND LONGITUDE INTERPOLATED
+2 2 TIME, LATITUDE AND LONGITUDE INTERPOLATED
+3 3 TIME, LATITUDE AND LONGITUDE REPORTED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33026.table b/definitions/bufr/tables/0/wmo/11/codetables/33026.table
new file mode 100644
index 0000000..539a9fe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33026.table
@@ -0,0 +1,10 @@
+0 0 NORMAL OPERATIONS - MEASUREMENT MODE
+1 1 NORMAL OPERATIONS - NON-MEASUREMENT MODE
+2 2 SMALL RH
+3 3 HUMIDITY ELEMENT IS WET
+4 4 HUMIDITY ELEMENT IS CONTAMINATED
+5 5 HEATER FAIL
+6 6 HEATER FAIL AND WET/CONTAMINATED HUMIDITY ELEMENT
+7 7 SINGLE VALIDITY BAD
+8 8 NUMERIC ERROR
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33027.table b/definitions/bufr/tables/0/wmo/11/codetables/33027.table
new file mode 100644
index 0000000..30dcae8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33027.table
@@ -0,0 +1,5 @@
+0 0 RADIUS >= 1500 M
+1 1 500 M <= RADIUS < 1500 M
+2 2 250 M <= RADIUS < 500 M
+3 3 RADIUS < 250 M
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33028.table b/definitions/bufr/tables/0/wmo/11/codetables/33028.table
new file mode 100644
index 0000000..8a16e7a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33028.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 NOMINAL
+2 2 DEGRADED BY SW ERROR; ANY ERROR REPORTED BY THE ALGORITHMS
+3 3 DEGRADED BY INSTRUMENT ERROR
+4 4 DEGRADED BY CORRUPTED/MISSING ADF
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33030.table b/definitions/bufr/tables/0/wmo/11/codetables/33030.table
new file mode 100644
index 0000000..c9e36c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33030.table
@@ -0,0 +1,7 @@
+1 1 DO NOT USE SCAN FOR PRODUCT GENERATION
+2 2 TIME SEQUENCE ERROR DETECTED WITH THIS SCAN
+3 3 DATA GAP PRECEDES THIS SCAN
+4 4 NO CALIBRATION
+5 5 NO EARTH LOCATION
+6 6 FIRST GOOD TIME FOLLOWING A CLOCK UPDATE
+7 7 INSTRUMENT STATUS CHANGED WITH THIS SCAN
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33031.table b/definitions/bufr/tables/0/wmo/11/codetables/33031.table
new file mode 100644
index 0000000..857eece
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33031.table
@@ -0,0 +1,21 @@
+1 1 TIME FIELD IS BAD BUT CAN PROBABLY BE INFERRED FROM THE PREV"    IOUS GOOD TIME
+2 2 TIME FIELD IS BAD AND CAN?~@~YT BE INFERRED FROM THE PREVIOU"    S GOOD TIME
+3 3 THIS RECORD STARTS A SEQUENCE THAT IS INCONSISTENT WITH PREV"    IOUS TIMES (I.E. THERE IS A TIME DISCONTINUITY). THIS MAY OR"     MAY NOT BE ASSOCIAT
+4 4 START OF A SEQUENCE THAT APPARENTLY REPEATS SCAN TIMES THAT"    HAVE BEEN PREVIOUSLY ACCEPTED
+5 5 SCAN LINE WAS NOT CALIBRATED BECAUSE OF BAD TIME
+6 6 SCAN LINE WAS CALIBRATED USING FEWER THAN THE PREFERRED NUMB"    ER OF SCAN LINES BECAUSE OF PROXIMATY TO START OR END OF DAT"    A OR TO A DATA GAP
+7 7 SCAN LINE WAS NOT CALIBRATED BECAUSE OF BAD OR INSUFFICIENT"    PRT DATA
+8 8 SCAN LINE WAS CALIBRATED BUT WITH MARGINAL PRT DATA
+9 9 SOME UNCALIBRATED CHANNELS ON THIS SCAN
+10 10 UNCALIBRATED DUE TO INSTRUMENT MODE
+11 11 QUESTIONABLE CALIBRATION BECAUSE OF ANTENNA POSITION ERROR O"    F SPACE VIEW
+12 12 QUESTIONABLE CALIBRATION BECAUSE OF ANTENNA POSITION ERROR O"    F BLACK BODY
+13 13 NOT EARTH LOCATED BECAUSE OF BAD TIME
+14 14 EARTH LOCATION QUESTIONABLE BECAUSE OF"     QUESTIONABLE TIME CODE (SEE TIME PROBLEM"     CODE BITS)
+15 15 EARTH LOCATION QUESTIONABLE - ONLY MARGINAL AGREEMENT"     WITH REASONABLENESS CHECK
+16 16 EARTH LOCATION QUESTIONABLE - FAILS REASONABLENESS CHECK
+17 17 EARTH LOCATION QUESTIONABLE BECAUSE OF ANTENNA POSITION CHEC"    K
+18 18 SCAN LINE CALIBRATION COLD BLACK BODY
+19 19 SCAN LINE CALIBRATION WARM BLACK BODY
+20 20 SCAN LINE CALIBRATION SPACE VIEW
+21 21 EARTH VIEW
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33032.table b/definitions/bufr/tables/0/wmo/11/codetables/33032.table
new file mode 100644
index 0000000..45b284d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33032.table
@@ -0,0 +1,6 @@
+1 1 NO GOOD BLACKBODY COUNTS FOR SCAN LINE
+2 2 NO GOOD SPACE VIEW COUNTS FOR THIS LINE
+3 3 NO GOOD PRTS FOR THIS LINE
+4 4 SOME BAD BLACKBODY VIEW COUNTS FOR THIS LINE
+5 5 SOME BAD SPACE VIEW COUNTS FOR THIS LINE
+6 6 SOME BAD PRT TEMPS ON THIS LINE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33033.table b/definitions/bufr/tables/0/wmo/11/codetables/33033.table
new file mode 100644
index 0000000..803087f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33033.table
@@ -0,0 +1,23 @@
+1 1 SET IF SECONDARY CALIBRATION USED
+2 2 BRIGHTNESS TEMPERATURE IN CHANNEL 1 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+3 3 BRIGHTNESS TEMPERATURE IN CHANNEL 2 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+4 4 BRIGHTNESS TEMPERATURE IN CHANNEL 3 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+5 5 BRIGHTNESS TEMPERATURE IN CHANNEL 4 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+6 6 BRIGHTNESS TEMPERATURE IN CHANNEL 5 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+7 7 BRIGHTNESS TEMPERATURE IN CHANNEL 6 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+8 8 BRIGHTNESS TEMPERATURE IN CHANNEL 7 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+9 9 BRIGHTNESS TEMPERATURE IN CHANNEL 8 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+10 10 BRIGHTNESS TEMPERATURE IN CHANNEL 9 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+11 11 BRIGHTNESS TEMPERATURE IN CHANNEL 10 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+12 12 BRIGHTNESS TEMPERATURE IN CHANNEL 11 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+13 13 BRIGHTNESS TEMPERATURE IN CHANNEL 12 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+14 14 BRIGHTNESS TEMPERATURE IN CHANNEL 13 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+15 15 BRIGHTNESS TEMPERATURE IN CHANNEL 14 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+16 16 BRIGHTNESS TEMPERATURE IN CHANNEL 15 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+17 17 BRIGHTNESS TEMPERATURE IN CHANNEL 16 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+18 18 BRIGHTNESS TEMPERATURE IN CHANNEL 17 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+19 19 BRIGHTNESS TEMPERATURE IN CHANNEL 18 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+20 20 BRIGHTNESS TEMPERATURE IN CHANNEL 19 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+21 21 BRIGHTNESS TEMPERATURE IN CHANNEL 20 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+22 22 SET IF ALL CHANNELS ARE MISSING
+23 23 SUSPECT
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33035.table b/definitions/bufr/tables/0/wmo/11/codetables/33035.table
new file mode 100644
index 0000000..938a958
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33035.table
@@ -0,0 +1,15 @@
+0 0 AUTOMATIC QUALITY CONTROL PASSED AND NOT MANUALLY CHECKED
+1 1 AUTOMATIC QUALITY CONTROL PASSED AND MANUALLY CHECKED AND PA"    SSED
+2 2 AUTOMATIC QUALITY CONTROL PASSED AND MANUALLY CHECKED AND DE"    LETED
+3 3 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY NOT CHECKED
+4 4 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY CHECKED AND FA"    ILED
+5 5 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY CHECKED AND RE"    -INSERTED
+6 6 AUTOMATIC QUALITY CONTROL FLAGGED DATA AS QUESTIONABLE AND N"    OT MANUALLY CHECCKED
+7 7 AUTOMATIC QUALITY CONTROL FLAGGED DATA AS QUESTIONABLE"    AND MANUALLY CHECKED AND FAILED
+8 8 MANUALLY CHECKED AND FAILED
+9 9 EXCESSIVE MISSING DATA FRAMES
+10 10 RESERVED
+11 11 EXCESSIVE MISSING TEMPERATURE
+12 12 EXCESSIVE MISSING PRESSURE
+13 13 USER TERMINATED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33037.table b/definitions/bufr/tables/0/wmo/11/codetables/33037.table
new file mode 100644
index 0000000..81a7d01
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33037.table
@@ -0,0 +1,19 @@
+1 1 U DEPARTURE FROM GUESS
+2 2 V DEPARTURE FROM GUESS
+3 3 U & V DEPARTURE FROM GUESS
+4 4 U ACCELERATION
+5 5 V ACCELERATION
+6 6 U & V ACCELERATION
+7 7 POSSIBLE LAND FEATURE
+8 8 U ACCELERATION AND POSSIBLE LAND FEATURE
+9 9 V ACCELERATION AND POSSIBLE LAND FEATURE
+10 10 U & V ACCELERATION AND POSSIBLE LAND FEATURE
+11 11 BAD WIND GUESS
+12 12 CORRELATION FAILURE
+13 13 SEARCH BOX OFF EDGE OF AREA
+14 14 TARGET BOX OFF EDGE OF AREA
+15 15 PIXEL BRIGHTNESS OUT OF BOUNDS (NOISY LINE)
+16 16 TARGET OUTSIDE OF LAT/LONG BOX
+17 17 TARGET OUTSIDE OF PRESSURE MIN/MAX
+18 18 AUTOEDITOR FLAGGED SLOW VECTOR
+19 19 AUTOEDITOR FLAGGED VECTORS
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33038.table b/definitions/bufr/tables/0/wmo/11/codetables/33038.table
new file mode 100644
index 0000000..3dc1192
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33038.table
@@ -0,0 +1,9 @@
+1 1 TOTAL ZENITH DELAY QUALITY IS CONSIDERED POOR
+2 2 GALILEO SATELLITES USED
+3 3 GLONASS SATELLITES USED
+4 4 GPS SATELLITES USED
+5 5 METEOROLOGICAL DATA APPLIED
+6 6 ATMOSPHERIC LOADING CORRECTION APPLIED
+7 7 OCEAN TIDE LOADING APPLIED
+8 8 CLIMATE QUALITY DATA PROCESSING
+9 9 NEAR-REAL TIME DATA PROCESSING
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33039.table b/definitions/bufr/tables/0/wmo/11/codetables/33039.table
new file mode 100644
index 0000000..50ff126
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33039.table
@@ -0,0 +1,9 @@
+1 1 NON-NOMINAL QUALITY
+2 2 OFFLINE PRODUCT
+3 3 ASCENDING OCCULTATION FLAG
+4 4 EXCESS PHASE PROCESSING NON-NOMINAL
+5 5 BENDING ANGLE PROCESSING NON-NOMINAL
+6 6 REFRACTIVITY PROCESSING NON-NOMINAL
+7 7 METEOROLOGICAL PROCESSING NON-NOMINAL
+14 14 BACKGROUND PROFILE NON-NOMINAL
+15 15 BACKGROUND (I.E. NOT RETRIEVED) PROFILE PRESENT
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33041.table b/definitions/bufr/tables/0/wmo/11/codetables/33041.table
new file mode 100644
index 0000000..7da4cf8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33041.table
@@ -0,0 +1,4 @@
+0 0 THE FOLLOWING VALUE IS THE TRUE VALUE
+1 1 THE FOLLOWING VALUE IS HIGHER THAN THE TRUE VALUE"    (THE MEASUREMENT HIT THE LOWER LIMIT OF THE INSTRUMENT)
+2 2 THE FOLLOWING VALUE IS LOWER THAN THE TRUE VALUE"    (THE MEASUREMENT HIT THE HIGHER LIMIT OF THE INSTRUMENT)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33042.table b/definitions/bufr/tables/0/wmo/11/codetables/33042.table
new file mode 100644
index 0000000..b75447a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33042.table
@@ -0,0 +1,5 @@
+0 0 EXCLUSIVE LOWER LIMIT (>)
+1 1 INCLUSIVE LOWER LIMIT (>=)
+2 2 EXCLUSIVE UPPER LIMIT (<)
+3 3 INCLUSIVE UPPER LIMIT (=<)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33043.table b/definitions/bufr/tables/0/wmo/11/codetables/33043.table
new file mode 100644
index 0000000..f0626f5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33043.table
@@ -0,0 +1,4 @@
+1 1 SEA MDS. NADIR ONLY SST RETRIEVAL USED 3.7 MICRON"    CHANNEL. LAND MDS RESERVED
+2 2 SEA MDS. DUAL VIEW SST RETRIEVAL USED 3.7 MICRON"    CHANNEL. LAND MDS RESERVED.
+3 3 NADIR VIEW CONTAINS DAY TIME DATA
+4 4 FORWARD VIEW CONTAINS DAY TIME DATA
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33044.table b/definitions/bufr/tables/0/wmo/11/codetables/33044.table
new file mode 100644
index 0000000..a74a7c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33044.table
@@ -0,0 +1,14 @@
+1 1 INPUT DATA MEAN OUTSIDE NOMINAL RANGE FLAG
+2 2 INPUT DATA STANDARD DEVIATION OUTSIDE NOMINAL RANGE FLAG
+3 3 NUMBER OF INPUT DATA GAPS > THRESHOLD VALUE
+4 4 PERCENTAGE OF MISSING LINES > THRESHOLD VALUE
+5 5 DOPPLER CENTROID UNCERTAIN. CONFIDENCE MEASURE < SPECIFIC VA"    LUE
+6 6 DOPPLER AMBIGUITY ESTIMATE UNCERTAIN. CONFIDENCE MEASURE < S"    PECIFIC VALUE
+7 7 OUTPUT DATA MEAN OUTSIDE NOMINAL RANGE FLAG
+8 8 OUTPUT DATA STANDARD DEVIATION OUTSIDE NOMINAL RANGE FLAG
+9 9 CHIRP RECONSTRUCTION FAILED OR IS OF LOW QUALITY FLAG
+10 10 DATA SET MISSING
+11 11 INVALID DOWNLINK PARAMETERS
+12 12 AZIMUTH CUT-OFF ITERATION COUNT. THE AZIMUTH CUT-OFF FIT DID"     NOT CONVERGE WITHIN A MINIMUM NUMBER OF ITERATIONS
+13 13 AZIMUTH CUT-OFF FIT DID NOT CONVERGE WITHIN A MINIMUM"    NUMBER OF ITERATIONS
+14 14 PHASE INFORMATION CONFIDENCE MEASURE. THE IMAGINARY SPECTRAL"    PEAK IS LESS THAN A MINIMUM THRESHOLD, OR THE ZERO LAG SHIFT"    IS GREATER THAN A MI
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33047.table b/definitions/bufr/tables/0/wmo/11/codetables/33047.table
new file mode 100644
index 0000000..e91702b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33047.table
@@ -0,0 +1,26 @@
+1 1 ERROR DETECTED AND ATTEMPTS TO RECOVER MADE
+2 2 ANOMALY IN ON-BOARD DATA HANDLING (OBDH) VALUE DETECTED
+3 3 ANOMALY IN ULTRA STABLE OSCILLATOR PROCESSING (USOP) VALUE D"    ETECTED
+4 4 ERRORS DETECTED BY ON-BOARD COMPUTER
+5 5 AUTOMATIC GAIN CONTROL (AGC) OUT OF RANGE
+6 6 RX DELAY FAULT. RX DISTANCE OUT OF RANGE
+7 7 WAVE FORM SAMPLES FAULT IDENTIFIER. ERROR
+12 12 BRIGHTNESS TEMPERATURE (CHANNEL 1) OUT OF RANGE
+13 13 BRIGHTNESS TEMPERATURE (CHANNEL 2) OUT OF RANGE
+14 14 RESERVED
+15 15 KU OCEAN RETRACKING ERROR
+16 16 S OCEAN RETRACKING ERROR
+17 17 KU ICE 1 RETRACKING ERROR
+18 18 S ICE 1 RETRACKING ERROR
+19 19 KU ICE 2 RETRACKING ERROR
+20 20 S ICE 2 RETRACKING ERROR
+21 21 KU SEA ICE RETRACKING ERROR
+22 22 ARITHMETIC FAULT ERROR
+23 23 METEO DATA STATE. NO MAP
+24 24 METEO DATA STATE. 1 MAP
+25 25 METEO DATA STATE 2 MAPS DEGRADED
+26 26 METEO DATA STATE 2 MAPS NOMINAL
+27 27 ORBIT PROPAGATOR STATUS FOR PROPAGATION MODE, SEVERAL ERRORS
+28 28 ORBIT PROPAGATOR STATUS FOR PROPAGATION MODE, WARNING DETECT"    ED
+29 29 ORBIT PROPAGATOR STATUS FOR INITIALISATION MODE, SEVERAL ERR"    ORS
+30 30 ORBIT PROPAGATOR STATUS FOR INITIALISATION MODE, WARNING DET"    ECTED
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33048.table b/definitions/bufr/tables/0/wmo/11/codetables/33048.table
new file mode 100644
index 0000000..312ba40
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33048.table
@@ -0,0 +1,4 @@
+0 0 INVERSION SUCCESSFUL
+1 1 INVERSION NOT SUCCESSFUL
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33049.table b/definitions/bufr/tables/0/wmo/11/codetables/33049.table
new file mode 100644
index 0000000..bdde061
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33049.table
@@ -0,0 +1,4 @@
+0 0 EXTERNAL WIND DIRECTION USED DURING INVERSION
+1 1 EXTERNAL WIND DIRECTION NOT USED DURING INVERSION
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33050.table b/definitions/bufr/tables/0/wmo/11/codetables/33050.table
new file mode 100644
index 0000000..772ab4a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33050.table
@@ -0,0 +1,8 @@
+0 0 UNQUALIFIED
+1 1 CORRECT VALUE (ALL CHECKS PASSED)
+2 2 PROBABLY GOOD BUT VALUE INCONSISTENT WITH STATISTICS (DIFFER"     FROM CLIMATOLOGY)
+3 3 PROBABLY BAD (SPIKE, GRADIENT, ?~E IF OTHER TESTS PASSED)
+4 4 BAD VALUE, IMPOSSIBLE VALUE (OUT OF SCALE, VERTICAL"    INSTABILITY, CONSTANT PROFILE)
+5 5 VALUE MODIFIED DURING QUALITY CONTROL
+8 8 INTERPOLATED VALUE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33052.table b/definitions/bufr/tables/0/wmo/11/codetables/33052.table
new file mode 100644
index 0000000..42ae4d2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33052.table
@@ -0,0 +1,20 @@
+1 1 DATA BLOCK 1 INVALID (S BAND)
+2 2 DATA BLOCK 2 INVALID (S BAND)
+3 3 DATA BLOCK 3 INVALID (S BAND)
+4 4 DATA BLOCK 4 INVALID (S BAND)
+5 5 DATA BLOCK 5 INVALID (S BAND)
+6 6 DATA BLOCK 6 INVALID (S BAND)
+7 7 DATA BLOCK 7 INVALID (S BAND)
+8 8 DATA BLOCK 8 INVALID (S BAND)
+9 9 DATA BLOCK 9 INVALID (S BAND)
+10 10 DATA BLOCK 10 INVALID (S BAND)
+11 11 DATA BLOCK 11 INVALID (S BAND)
+12 12 DATA BLOCK 12 INVALID (S BAND)
+13 13 DATA BLOCK 13 INVALID (S BAND)
+14 14 DATA BLOCK 14 INVALID (S BAND)
+15 15 DATA BLOCK 15 INVALID (S BAND)
+16 16 DATA BLOCK 16 INVALID (S BAND)
+17 17 DATA BLOCK 17 INVALID (S BAND)
+18 18 DATA BLOCK 18 INVALID (S BAND)
+19 19 DATA BLOCK 19 INVALID (S BAND)
+20 20 DATA BLOCK 20 INVALID (S BAND)
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33053.table b/definitions/bufr/tables/0/wmo/11/codetables/33053.table
new file mode 100644
index 0000000..9170c54
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33053.table
@@ -0,0 +1,20 @@
+1 1 DATA BLOCK 1 INVALID (KU BAND)
+2 2 DATA BLOCK 2 INVALID (KU BAND)
+3 3 DATA BLOCK 3 INVALID (KU BAND)
+4 4 DATA BLOCK 4 INVALID (KU BAND)
+5 5 DATA BLOCK 5 INVALID (KU BAND)
+6 6 DATA BLOCK 6 INVALID (KU BAND)
+7 7 DATA BLOCK 7 INVALID (KU BAND)
+8 8 DATA BLOCK 8 INVALID (KU BAND)
+9 9 DATA BLOCK 9 INVALID (KU BAND)
+10 10 DATA BLOCK 10 INVALID (KU BAND)
+11 11 DATA BLOCK 11 INVALID (KU BAND)
+12 12 DATA BLOCK 12 INVALID (KU BAND)
+13 13 DATA BLOCK 13 INVALID (KU BAND)
+14 14 DATA BLOCK 14 INVALID (KU BAND)
+15 15 DATA BLOCK 15 INVALID (KU BAND)
+16 16 DATA BLOCK 16 INVALID (KU BAND)
+17 17 DATA BLOCK 17 INVALID (KU BAND)
+18 18 DATA BLOCK 18 INVALID (KU BAND)
+19 19 DATA BLOCK 19 INVALID (KU BAND)
+20 20 DATA BLOCK 20 INVALID (KU BAND)
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/33060.table b/definitions/bufr/tables/0/wmo/11/codetables/33060.table
new file mode 100644
index 0000000..0b85a8f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/33060.table
@@ -0,0 +1,4 @@
+0 0 PARAMETER=GOOD
+1 1 PARAMETER=BAD
+2 2 PARAMETER=RESERVED
+3 3 MISSING
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/35000.table b/definitions/bufr/tables/0/wmo/11/codetables/35000.table
new file mode 100644
index 0000000..c5e8846
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/35000.table
@@ -0,0 +1,11 @@
+1 1 100-199 RA I CODES
+2 2 200-299 RA II CODES
+3 3 300-399 RA III CODES
+4 4 400-499 RA IV CODES
+5 5 500-599 RA V CODES
+6 6 600-699 RA VI CODES
+7 7 700-799 ANTARCTIC CODES
+8 8 800-999 RESERVED
+9 9 1000-1022 NOT USED
+11 11 000-099 INTERNATIONAL FM CODES
+1023 1023 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/35001.table b/definitions/bufr/tables/0/wmo/11/codetables/35001.table
new file mode 100644
index 0000000..bba0c81
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/35001.table
@@ -0,0 +1,4 @@
+0 0 REAL TIME
+1 1 NEAR-REAL TIME
+2 2 NON-REAL TIME
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/35030.table b/definitions/bufr/tables/0/wmo/11/codetables/35030.table
new file mode 100644
index 0000000..a46775f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/35030.table
@@ -0,0 +1,10 @@
+0 0 NO DISCREPANCIES
+1 1 NON-COMPLIANCE WITH STANDARD AND RECOMMENDED PRACTICES"    AND PROCEDURES INCLUDINGTHOSE OF MONITORING
+2 2 CATALOGUES OF METEOROLOGICAL BULLETINS NOT UPDATED IN A TIME"    LY MANNER
+3 3 INCORRECT ROUTEING DIRECTORIES
+4 4 LACK OF FLEXIBILITY IN THE ROUTEING ARRANGEMENTS
+5 5 DEFICIENCIES IN THE OPERATION OF GTS CENTRES AND CIRCUITS
+6 6 LOSS OF DATA OR DELAYS IN RELAYING DATA ON THE GTS
+7 7 ROUTEING OF DATA DIFFERENT FROM THE ROUTEING PROVIDED IN THE"     PLAN
+8 8 VARIOUS MALPRACTICES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/35031.table b/definitions/bufr/tables/0/wmo/11/codetables/35031.table
new file mode 100644
index 0000000..8c95268
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/35031.table
@@ -0,0 +1,20 @@
+1 1 SUFFICIENT AND ALL OF ACCEPTABLE QUALITY
+2 2 SUFFICIENT BUT PARTLY OF ACCEPTABLE QUALITY
+3 3 INSUFFICIENT BUT ALL OF ACCEPTABLE QUALITY
+4 4 INSUFFICIENT AND OF UNACCEPTABLE QUALITY
+5 5 SOME MESSAGES NOT COMPLETE
+6 6 SUSPECT OR WRONGLY CODED GROUPS COULD NOT BE INTERPRETED CON"    FIDENTLY
+7 7 GROSS CODING ERRORS
+8 8 TRANSMISSION SEQUENTIAL ORDER NOT OBSERVED
+9 9 REPORT COMPLETELY GARBLED AND THUS DISCARDED
+10 10 DEFICIENCIES IDENTIFIED AND RECTIFIED
+11 11 DEFICIENCIES IDENTIFIED BUT NOT RECTIFIED
+12 12 DEFICIENCIES NOT IDENTIFIED
+13 13 MEASURING ERRORS
+14 14 MUTUAL INCONSISTENCY
+15 15 TEMPORAL INCONSISTENCY
+16 16 FORECAST ERROR
+17 17 BIAS
+18 18 IMPROVE SYSTEM OF QUALITY CONTROL
+19 19 EXPAND TRAINING PROGRAMMES
+123 123 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/35032.table b/definitions/bufr/tables/0/wmo/11/codetables/35032.table
new file mode 100644
index 0000000..7f53a05
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/35032.table
@@ -0,0 +1,10 @@
+1 1 DATA GROUPS MISSING DUE TO RADIO FADING
+2 2 DATA GROUPS MISSING DUE TO OUTAGE OF CENTRE
+3 3 DATA GROUPS MISSING DUE TO OUTAGE OF CIRCUIT
+4 4 NON-IMPLEMENTATION OR MAINTENANCE OF REQUIRED RBSN DENSITY
+5 5 SHORTAGE OF QUALIFIED STAFF TO MAN STATIONS
+6 6 LACK OF CONSUMABLES
+7 7 INSTRUMENT FAILURE
+8 8 NON-ADHERENCE TO TELECOMMUNICATION PROCEDURES
+9 9 SOME OBSERVING PROGRAMMES CEASED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/35033.table b/definitions/bufr/tables/0/wmo/11/codetables/35033.table
new file mode 100644
index 0000000..2a3e525
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/35033.table
@@ -0,0 +1,12 @@
+1 1 NO DEFICIENCY
+2 2 OBSERVATIONS NOT MADE REGULARLY
+3 3 OBSERVATIONS NOT MADE AT RIGHT TIME
+4 4 OBSERVATIONS MADE BUT NOT DISSEMINATED
+5 5 OBSERVATIONS MADE AND SENT TO INCORRECT USERS
+6 6 COLLECTION NOT RECEIVED
+7 7 COLLECTION TRANSMITTED LATE
+8 8 COLLECTION NOT TRANSMITTED
+9 9 DIFFICULTIES IN HF PROPAGATION AND SELECTION OF SUITABLE FRE"    QUENCY
+10 10 DIFFICULTIES IN MAINTENANCE OF COMMUNICATION EQUIPMENT AT RE"    MOTE STATIONS
+11 11 NO ALTERNATIVE ARRANGEMENT FOR ROUTEING METEOROLOGICAL OBSER"    VATION
+123 123 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/35034.table b/definitions/bufr/tables/0/wmo/11/codetables/35034.table
new file mode 100644
index 0000000..7297664
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/35034.table
@@ -0,0 +1,7 @@
+1 1 SLIGHT IMPROVEMENT
+2 2 SIGNIFICANT IMPROVEMENT
+3 3 MOST SIGNIFICANT IMPROVEMENT
+4 4 STEADY
+5 5 DECREASING
+6 6 EFFORTS REQUIRED TO IMPROVE NIGHT-TIME OBSERVATIONS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/40011.table b/definitions/bufr/tables/0/wmo/11/codetables/40011.table
new file mode 100644
index 0000000..d4284c9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/40011.table
@@ -0,0 +1,4 @@
+1 1 MEAN SEA SURFACE (MSS) INTERPOLATION FLAG
+2 2 OCEAN TIDE SOLUTION 1 INTERPOLATION FLAG (0= 4 POINTS OVER O"    CEAN, 1=LESS THAN 4 POINTS)
+3 3 OCEAN TIDE SOLUTION 2 INTERPOLATION FLAG (0= 4 POINTS OVER O"    CEAN, 1=LESS THAN 4 POINTS)
+4 4 METEOROLOGICAL DATA INTERPOLATION FLAG (0= 4 POINTS OVER OCE"    AN, 1=LESS THAN 4 POINTS)
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/40012.table b/definitions/bufr/tables/0/wmo/11/codetables/40012.table
new file mode 100644
index 0000000..d8ce14d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/40012.table
@@ -0,0 +1,3 @@
+1 1 18.7 GHZ BRIGHTNESS TEMPERATURE
+2 2 23.8 GHZ BRIGHTNESS TEMPERATURE
+3 3 34 GHZ BRIGHTNESS TEMPERATURE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/40013.table b/definitions/bufr/tables/0/wmo/11/codetables/40013.table
new file mode 100644
index 0000000..f9dfb9a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/40013.table
@@ -0,0 +1,5 @@
+0 0 INTERPOLATION WITH NO GAP BETWEEN JMR DATA
+1 1 INTERPOLATION WITH GAP BETWEEN JMR DATA
+2 2 EXTRAOLATION OF JMR DATA
+3 3 FAILURE OF EXTRAPOLATION AND INTERPOLATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/4059.table b/definitions/bufr/tables/0/wmo/11/codetables/4059.table
new file mode 100644
index 0000000..cee2528
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/4059.table
@@ -0,0 +1,5 @@
+1 1 00 UTC
+2 2 06 UTC
+3 3 12 UTC
+4 4 18 UTC
+5 5 OTHER HOURS
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8001.table b/definitions/bufr/tables/0/wmo/11/codetables/8001.table
new file mode 100644
index 0000000..ec028a1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8001.table
@@ -0,0 +1,7 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 MAXIMUM WIND LEVEL
+5 5 SIGNIFICANT LEVEL, TEMPERATURE AND/OR RELATIVE HUMIDITY
+6 6 SIGNIFICANT LEVEL, WIND
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8002.table b/definitions/bufr/tables/0/wmo/11/codetables/8002.table
new file mode 100644
index 0000000..d929f62
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8002.table
@@ -0,0 +1,13 @@
+0 0 OBSERVING RULES FOR BASE OF LOWEST CLOUD AND CLOUD TYPES OF"    FM 12-IX EXT. SYNOP AND FM 13-IX EXT. SHIP APPLY
+1 1 FIRST NON - CB SIGNIFICANT LAYER
+2 2 SECOND NON - CB SIGNIFICANT LAYER
+3 3 THIRD NON - CB SIGNIFICANT LAYER
+4 4 CUMULONIMBUS LAYER
+5 5 CEILING
+6 6 CLOUD NOT DETECTED BELOW THE FOLLOWING HEIGHT(S)
+7 7 LOW CLOUD
+8 8 MIDDLE CLOUD
+9 9 HIGH CLOUD
+10 10 CLOUD LAYER WITH BASE BELOW THE STATION LEVEL AND TOP"    ABOVE THE STATION LEVEL
+11 11 CLOUD LAYER WITH BASE AND TOP BELOW THE STATION LEVEL
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8003.table b/definitions/bufr/tables/0/wmo/11/codetables/8003.table
new file mode 100644
index 0000000..442be98
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8003.table
@@ -0,0 +1,9 @@
+0 0 SURFACE
+1 1 BASE OF SATELLITE SOUNDING
+2 2 CLOUD TOP
+3 3 TROPOPAUSE
+4 4 PRECIPITABLE WATER
+5 5 SOUNDING RADIANCES
+6 6 MEAN TEMPERATURES
+7 7 OZON
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8004.table b/definitions/bufr/tables/0/wmo/11/codetables/8004.table
new file mode 100644
index 0000000..348d3d1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8004.table
@@ -0,0 +1,6 @@
+2 2 UNSTEADY (UNS)
+3 3 LEVEL FLIGHT, ROUTINE OBSERVATION (LVR)
+4 4 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED (LVW)
+5 5 ASCENDING (ASC)
+6 6 DESCENDING(DES)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8005.table b/definitions/bufr/tables/0/wmo/11/codetables/8005.table
new file mode 100644
index 0000000..2313ea5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8005.table
@@ -0,0 +1,7 @@
+0 0 RESERVED
+1 1 STORM CENTRE
+2 2 OUTER LIMIT OR EDGE OF STORM
+3 3 LOCATION OF MAXIMUM WIND
+4 4 LOCATION OF STORM IN THE PERTURBED ANALYSIS
+5 5 LOCATION OF STORM IN THE ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8006.table b/definitions/bufr/tables/0/wmo/11/codetables/8006.table
new file mode 100644
index 0000000..9f56c62
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8006.table
@@ -0,0 +1,8 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 PROMINENT MAXIMUM LEVEL
+5 5 PROMINENT MINIMUM LEVEL
+6 6 MINIMUM PRESSURE LEVEL
+7 7 RESERVED
+8 8 LEVEL OF UNDETERMINED SIGNIFICANCE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8007.table b/definitions/bufr/tables/0/wmo/11/codetables/8007.table
new file mode 100644
index 0000000..3e4d2cc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8007.table
@@ -0,0 +1,5 @@
+0 0 POINT
+1 1 LINE
+2 2 AREA
+3 3 VOLUME
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8008.table b/definitions/bufr/tables/0/wmo/11/codetables/8008.table
new file mode 100644
index 0000000..2714b5a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8008.table
@@ -0,0 +1,8 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 LEVEL OF BETA RADIATION MAXIMUM
+5 5 LEVEL OF GAMMA RADIATION MAXIMUM
+6 6 MINIMUM PRESSURE LEVEL
+7 7 RESERVED
+8 8 LEVEL OF UNDETERMINED SIGNIFICANCE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8009.table b/definitions/bufr/tables/0/wmo/11/codetables/8009.table
new file mode 100644
index 0000000..153f92a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8009.table
@@ -0,0 +1,16 @@
+0 0 LEVEL FLIGHT, ROUTINE OBSERVATION, UNSTEADY
+1 1 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED, UNSTEADY
+2 2 UNSTEADY (UNS)
+3 3 LEVEL FLIGHT, ROUTINE OBSERVATION (LVR)
+4 4 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED (LVW)
+5 5 ASCENDING (ASC)
+6 6 DESCENDING (DES)
+7 7 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS
+8 8 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS, UNSTEADY
+9 9 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS
+10 10 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS, UNSTEADY
+11 11 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS
+12 12 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS, UNSTEADY
+13 13 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS
+14 14 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS, UNSTEADY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8010.table b/definitions/bufr/tables/0/wmo/11/codetables/8010.table
new file mode 100644
index 0000000..50e8c70
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8010.table
@@ -0,0 +1,13 @@
+0 0 RESERVED
+1 1 BARE SOIL
+2 2 BARE ROCK
+3 3 LAND GRASS COVER
+4 4 WATER (LAKE, SEA)
+5 5 FLOOD WATER UNDERNEATH
+6 6 SNOW
+7 7 ICE
+8 8 RUNWAY OR ROAD
+9 9 SHIP OR PLATFORM DECK IN STEEL
+10 10 SHIP OR PLATFORM DECK IN WOOD
+11 11 SHIP OR PLATFORM DECK PARTLY COVERED WITH RUBBER MAT
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8011.table b/definitions/bufr/tables/0/wmo/11/codetables/8011.table
new file mode 100644
index 0000000..c8ed7cb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8011.table
@@ -0,0 +1,26 @@
+0 0 QUASI-STATIONARY FRONT AT THE SURFACE
+1 1 QUASI-STATIONARY FRONT ABOVE THE SURFACE
+2 2 WARM FRONT AT THE SURFACE
+3 3 WARM FRONT ABOVE THE SURFACE
+4 4 COLD FRONT AT THE SURFACE
+5 5 COLD FRONT ABOVE THE SURFACE
+6 6 OCCLUSION
+7 7 INSTABILITY LINE
+8 8 INTERTROPICAL FRONT
+9 9 CONVERGENCE LINE
+10 10 JET STREAM
+11 11 CLOUD CLEAR
+12 12 CLOUD
+13 13 TURBULENCE
+14 14 STORM
+15 15 AIRFRAME ICING
+16 16 PHENOMENON
+17 17 VOLCANO
+18 18 ATMOSPHERICS
+20 20 SPECIAL CLOUDS
+21 21 THUNDERSTORM (VAL)
+22 22 TROPICAL CYCLONE (VAL)
+23 23 MOUNTAIN WAVE (VAL)
+24 24 DUSTSTORM (VAL)
+25 25 SANDSTORM (VAL)
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8012.table b/definitions/bufr/tables/0/wmo/11/codetables/8012.table
new file mode 100644
index 0000000..0cef734
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8012.table
@@ -0,0 +1,4 @@
+0 0 LAND
+1 1 SEA
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8013.table b/definitions/bufr/tables/0/wmo/11/codetables/8013.table
new file mode 100644
index 0000000..6ea96bf
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8013.table
@@ -0,0 +1,4 @@
+0 0 NIGHT
+1 1 DAY
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8014.table b/definitions/bufr/tables/0/wmo/11/codetables/8014.table
new file mode 100644
index 0000000..da6bb04
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8014.table
@@ -0,0 +1,10 @@
+0 0 10-MINUTE MEAN VALUE - NORMAL VALUE
+1 1 10-MINUTE MEAN VALUE - ABOVE THE UPPER LIMIT FOR ASSESSMENT"    OF RVR (P)
+2 2 10-MINUTE MEAN VALUE - BELOW LOWER LIMIT FOR ASSESSMENT OF R"    VR (M)
+3 3 ONE MINUTE MINIMUM VALUE - NORMAL VALUE
+4 4 ONE MINUTE MINIMUM VALUE - ABOVE THE UPPER LIMIT FOR ASSESSM"    ENT OF RVR (P)
+5 5 ONE MINUTE MINIMUM VALUE - BELOW LOWER LIMIT FOR ASSESSMENT"    OF RVR (M)
+6 6 ONE MINUTE MAXIMUM VALUE - NORMAL VALUE
+7 7 ONE MINUTE MAXIMUM VALUE - ABOVE THE UPPER LIMIT FOR ASSESS"    MENT OF RVR (P)
+8 8 ONE MINUTE MAXIMUM VALUE - BELOW LOWER LIMIT FOR ASSESSMENT"    OF RVR (M)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8016.table b/definitions/bufr/tables/0/wmo/11/codetables/8016.table
new file mode 100644
index 0000000..6b8a1fa
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8016.table
@@ -0,0 +1,5 @@
+0 0 NOSIG
+1 1 BECMG
+2 2 TEMPO
+3 3 FM
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8017.table b/definitions/bufr/tables/0/wmo/11/codetables/8017.table
new file mode 100644
index 0000000..b3156f8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8017.table
@@ -0,0 +1,4 @@
+0 0 FM
+1 1 TL
+2 2 AT
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8018.table b/definitions/bufr/tables/0/wmo/11/codetables/8018.table
new file mode 100644
index 0000000..e4078dc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8018.table
@@ -0,0 +1,5 @@
+1 1 LAND IS PRESENT
+2 2 SURFACE ICE MAP INDICATES ICE IS PRESENT
+11 11 ICE MAP DATA NOT AVAILABLE
+12 12 ATTENUATION MAP DATA NOT AVAILABLE
+17 17 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8021.table b/definitions/bufr/tables/0/wmo/11/codetables/8021.table
new file mode 100644
index 0000000..988dfd0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8021.table
@@ -0,0 +1,32 @@
+0 0 RESERVED
+1 1 TIME SERIES
+2 2 TIME AVERAGED
+3 3 ACCUMULATED
+4 4 FORECAST
+5 5 FORECAST TIME SERIES
+6 6 FORECAST TIME AVERAGED
+7 7 FORECAST ACCUMULATED
+8 8 ENSEMBLE MEAN
+9 9 ENSEMBLE MEAN TIME SERIES
+10 10 ENSEMBLE MEAN TIME AVERAGED
+11 11 ENSEMBLE MEAN ACCUMULATED
+12 12 ENSEMBLE MEAN FORECAST
+13 13 ENSEMBLE MEAN FORECAST TIME SERIES
+14 14 ENSEMBLE MEAN FORECAST AVERAGED
+15 15 ENSEMBLE MEAN FORECAST ACCUMULATED
+16 16 ANALYSIS
+17 17 START OF PHENOMENON
+18 18 RADIOSONDE LAUNCH TIME
+19 19 START OF ORBIT
+20 20 END OF ORBIT
+21 21 TIME OF ASCENDING NODE
+22 22 TIME OF OCCURENCE OF WIND SHIFT
+23 23 MONITORING PERIOD
+24 24 AGREED TIME LIMIT FOR REPORT RECEPTION
+25 25 NOMINAL REPORTING TIME
+26 26 TIME OF LAST KNOWN POSITION
+27 27 FIRST GUESS    --NOT WMO ENTRY
+28 28 START OF SCAN  --NOT WMO ENTRY
+29 29 END OF SCAN    --NOT WMO ENTRY
+30 30 RESERVED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8023.table b/definitions/bufr/tables/0/wmo/11/codetables/8023.table
new file mode 100644
index 0000000..d65ec12
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8023.table
@@ -0,0 +1,17 @@
+2 2 MAXIMUM VALUE
+3 3 MINIMUM VALUE
+4 4 MEAN VALUE
+5 5 MEDIAN VALUE
+6 6 MODAL VALUE
+7 7 MEAN ABSOLUTE ERROR
+9 9 BEST ESTIMATE OF STANDARD DEVIATION (N-1)
+10 10 STANDARD DEVIATION
+11 11 HARMONIC MEAN
+12 12 ROOT MEAN SQUARE VECTOR ERROR
+13 13 ROOT-MEAN-SQUARE
+32 32 PROBABILITY OF GROSS ERROR
+33 33 PRESCRIBED OBSERVATION ERROR
+34 34 PERSISTENCE OBSERVATION ERROR
+35 35 FINAL OBSERVATION ERROR
+36 36 REPRESENTATIVNESS OBSERVATION ERROR
+63 63 MISSING
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8024.table b/definitions/bufr/tables/0/wmo/11/codetables/8024.table
new file mode 100644
index 0000000..067e37d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8024.table
@@ -0,0 +1,15 @@
+2 2 OBSERVED MINUS MAXIMUM
+3 3 OBSERVED MINUS MINIMUM
+4 4 OBSERVED MINUS MEAN
+5 5 OBSERVED MINUS MEDIAN
+6 6 OBSERVED MINUS MODE
+11 11 OBSERVED MINUS CLIMATOLOGY (ANOMALY)
+12 12 OBSERVED MINUS ANALYZED VALUE
+13 13 OBSERVED MINUS INITIALISED ANALYZED VALUE
+14 14 OBSERVED MINUS FORECAST VALUE
+21 21 OBSERVED MINUS INTERPOLATED VALUE
+22 22 OBSERVED MINUS HYDROSTATICALLY CALCULATED VALUE
+32 32 OBSERVED MINUS FIRST GUESS
+33 33 OBSERVED MINUS ANALYSIS
+34 34 OBSERVED MINUS INITIALIZED ANALYSIS
+63 63 MISSING
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8025.table b/definitions/bufr/tables/0/wmo/11/codetables/8025.table
new file mode 100644
index 0000000..5405e33
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8025.table
@@ -0,0 +1,5 @@
+0 0 UNIVERSAL TIME COORDINATED (UTC) MINUS"    LOCAL STANDARD TIME (LST)
+1 1 LOCAL STANDARD TIME
+2 2 UNIVERSAL TIME COORDINATED (UTC) MINUS SATELLITE CLOCK
+5 5 TIME DIFFERENCE FROM EDGE OF PROCESSING SEGMENT
+15 15 MISSING
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8026.table b/definitions/bufr/tables/0/wmo/11/codetables/8026.table
new file mode 100644
index 0000000..d30bb03
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8026.table
@@ -0,0 +1,5 @@
+0 0 AVERAGING KERNEL MATRIX
+1 1 CORRELATION MATRIX
+2 2 LOWER TRIANGULAR CORRELATION MATRIX SQUARE ROOT (L FROM C=LL"    T)
+3 3 INVERSE LOWER TRIANGULAR CORRELATION MATRIX SQUARE ROOT (L**"    -1)
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8029.table b/definitions/bufr/tables/0/wmo/11/codetables/8029.table
new file mode 100644
index 0000000..28b071b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8029.table
@@ -0,0 +1,5 @@
+0 0 OPEN OCEAN OR SEMI-ENCLOSED SEA
+1 1 ENCLOSED SEA OR LAKE
+2 2 CONTINENTAL ICE
+3 3 LAND
+255 255 MISSING
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8033.table b/definitions/bufr/tables/0/wmo/11/codetables/8033.table
new file mode 100644
index 0000000..449fbd4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8033.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 PERCENTAGE CONFIDENCE CALCULATED USING CLOUD FRACTION
+2 2 PERCENTAGE CONFIDENCE CALCULATED USING STANDARD"    DEVIATION OF TEMPERATURE
+3 3 PERCENTAGE CONFIDENCE CALCULATED USING PROBABILITY OF"     THE CLOUD CONTAMINATION
+4 4 PERCENTAGE CONFIDENCE CALCULATED USING NORMALITY OF DISTRIBU"    TION
+127 127 MISSING
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8035.table b/definitions/bufr/tables/0/wmo/11/codetables/8035.table
new file mode 100644
index 0000000..d56a5d7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8035.table
@@ -0,0 +1,8 @@
+0 0 GLOBAL
+1 1 REGIONAL
+2 2 NATIONAL
+3 3 SPECIAL
+4 4 BILATERAL
+5 5 RESERVED
+6 6 RESERVED
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8036.table b/definitions/bufr/tables/0/wmo/11/codetables/8036.table
new file mode 100644
index 0000000..6cfeab5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8036.table
@@ -0,0 +1,8 @@
+0 0 WMO SECRETARIAT
+1 1 WMO
+2 2 RSMC
+3 3 NMC
+4 4 RTH
+5 5 OBSERVING SITE
+6 6 OTHER
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8039.table b/definitions/bufr/tables/0/wmo/11/codetables/8039.table
new file mode 100644
index 0000000..75f133d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8039.table
@@ -0,0 +1,8 @@
+0 0 ISSUE TIME OF FORECAST
+1 1 TIME OF COMMNENCEMENT OF PERIOD OF THE FORECAST
+2 2 TIME OF ENDING OF PERIOD OF THE FORECAST
+3 3 FORECSAT TIME OF MAXIMUM TEMPERATURE
+4 4 FORECSAT TIME OF MINIMUM TEMPERATURE
+5 5 TIME OF BEGINNING OF THE FORECAST
+6 6 TIME OF ENDING OF THE FORECAST
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8040.table b/definitions/bufr/tables/0/wmo/11/codetables/8040.table
new file mode 100644
index 0000000..7c2430e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8040.table
@@ -0,0 +1,43 @@
+0 0 HIGH RESOLUTION DATA SAMPLE
+1 1 WITHIN 20 HPA OF SURFACE
+2 2 PRESSURE LESS THAN 10 HPA (I.E., 9, 8, 7, ETC.)"    WHEN NO OTHER REASON APPLIES
+3 3 BASE PRESSURE LEVEL FOR STABILITY INDEX
+4 4 BEGIN DOUBTFUL TEMPERATURE, HEIGHT DATA
+5 5 BEGIN MISSING DATA (ALL ELEMENTS)
+6 6 BEGIN MISSING RH DATA
+7 7 BEGIN MISSING TEMPERATURE DATA
+8 8 HIGHEST LEVEL REACHED BEFORE BALLOON"    DESCENT BECAUSE OF ICING OR TURBULENCE
+9 9 END DOUBTFUL TEMPERATURE, HEIGHT DATA
+10 10 END MISSING DATA (ALL ELEMENTS)
+11 11 END MISSING RH DATA
+12 12 END MISSING TEMPERATURE DATA
+13 13 ZERO DEGREES C CROSSING(S) FOR RADAT
+14 14 STANDARD PRESSURE LEVEL
+15 15 OPERATOR ADDED LEVEL
+16 16 OPERATOR DELETED LEVEL
+17 17 BALLOON RE-ASCENDED BEYOND PREVIOUS HIGHEST ASCENT LEVEL
+18 18 SIGNIFICANT RH LEVEL
+19 19 RH LEVEL SELECTION TERMINATED
+20 20 SURFACE LEVEL
+21 21 SIGNIFICANT TEMPERATURE LEVEL
+22 22 MANDATORY TEMPERATURE LEVEL
+23 23 FLIGHT TERMINATION LEVEL
+24 24 TROPOPAUSE(S)
+25 25 AIRCRAFT REPORT
+26 26 INTERPOLATED (GENERATED) LEVEL
+27 27 MANDATORY WIND LEVEL
+28 28 SIGNIFICANT WIND LEVEL
+29 29 MAXIMUM WIND LEVEL
+30 30 INCREMENTAL WIND LEVEL (FIXED REGIONAL)
+31 31 INCREMENTAL HEIGHT LEVEL (GENERATED)
+32 32 WIND TERMINATION LEVEL
+33 33 PRESSURE 100 TO 110 HPA, WHEN NO OTHER REASON APPLIES
+40 40 SIGNIFICANT THERMODYNAMIC LEVEL (INVERSION)
+41 41 SIGNIFICANT RH LEVEL ( PER NCDC CRITERIA)
+42 42 SIGNIFICANT TEMPERATURE LEVEL (PER NCDC)
+43 43 BEGIN MISSING WIND DATA
+44 44 END MISSING WIND DATA
+60 60 LEVEL OF 80-KNOT ISOTACH ABOVE JET
+61 61 LEVEL OF 80-KNOT ISOTACH BELOW JET
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8041.table b/definitions/bufr/tables/0/wmo/11/codetables/8041.table
new file mode 100644
index 0000000..3596f95
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8041.table
@@ -0,0 +1,9 @@
+0 0 PARENT SITE
+1 1 OBSERVATION SITE
+2 2 BALLOON MANUFACTURE DATE
+3 3 BALLOON LAUNCH POINT
+4 4 SURFACE OBSERVATION
+5 5 SURFACE OBSERVATION DISPLACEMENT FROM LAUNCH POINT
+6 6 FLIGHT LEVEL OBSERVATION
+7 7 FLIGHT LEVEL TERMINATION POINT
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8042.table b/definitions/bufr/tables/0/wmo/11/codetables/8042.table
new file mode 100644
index 0000000..b98cece
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8042.table
@@ -0,0 +1,13 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 MAXIMUM WIND LEVEL
+5 5 SIGNIFICANT TEMPERATURE LEVEL
+6 6 SIGNIFICANT HUMIDITY LEVEL
+7 7 SIGNIFICANT WIND LEVEL
+8 8 BEGINNING OF MISSING TEMPERATURE DATA
+9 9 END OF MISSING TEMPERATURE DATA
+10 10 BEGINNING OF MISSING HUMIDITY DATA
+11 11 END OF MISSING HUMIDITY DATA
+12 12 BEGINNING OF MISSING WIND DATA
+13 13 END OF MISSING WIND DATA
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8043.table b/definitions/bufr/tables/0/wmo/11/codetables/8043.table
new file mode 100644
index 0000000..6bd94fe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8043.table
@@ -0,0 +1,21 @@
+0 0 OZONE, O3,10028-15-6
+1 1 WATER VAPOUR, H2O, 7732-18-5
+2 2 METHANE, CH4, 74-82-8
+3 3 CARBON DIOXIDE, CO2, 37210-16-5
+4 4 CARBON MONOXIDE, CO, 630-08-0
+5 5 NITROGEN DIOXIDE, NO2, 10102-44-0
+6 6 NITROUS OXIDE, N2O, 10024-97-2
+7 7 FORMALDEHYDE, HCHO, 50-00-0
+8 8 SULFUR DIOXIDE, SO2, 7446-09-5
+9 9 BROMINE OXIDE, BRO, 15656-19-6
+10 10 CHLORINE DIOXIDE, OCLO, 10049-04-4
+11 11 NITROGEN MONOXIDE, NO, 10102-43-9
+12 12 AMMONIA, NH3, 7664-41-7
+25 25 PARTICULATE MATTER < 1.0 MICRONS
+26 26 PARTICULATE MATTER < 2.5 MICRONS
+27 27 PARTICULATE MATTER < 10 MICRONS
+28 28 AEROSOLS GENERIC
+29 29 SMOKE GENERIC
+30 30 CRUSTAL MATERIAL (GENERIC DUST)
+31 31 VOLCANIC ASH
+255 255 MISSING
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8050.table b/definitions/bufr/tables/0/wmo/11/codetables/8050.table
new file mode 100644
index 0000000..4b401f1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8050.table
@@ -0,0 +1,11 @@
+0 0 RESERVED
+1 1 PRESSURE
+2 2 TEMPERATURE
+3 3 EXTREME TEMPERATURE
+4 4 VAPOUR PRESSURE
+5 5 PRECIPITATION
+6 6 SUNSHINE DURATION
+7 7 MAXIMUM TEMPERATURE
+8 8 MINIMUM TEMPERATURE
+9 9 WIND
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8051.table b/definitions/bufr/tables/0/wmo/11/codetables/8051.table
new file mode 100644
index 0000000..5249fe6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8051.table
@@ -0,0 +1,7 @@
+1 1 PRESSURE
+2 2 TEMPERATURE
+3 3 EXTREME TEMPERATURE
+4 4 VAPOUR PRESSURE
+5 5 PRECIPITATION
+6 6 SUNSHINE DURATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8052.table b/definitions/bufr/tables/0/wmo/11/codetables/8052.table
new file mode 100644
index 0000000..f6f02e9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8052.table
@@ -0,0 +1,26 @@
+0 0 MEAN WIND SPEED OVER 10-MINUTES PERIOD OBSERVED OR RECORDED"    EQUAL TO OR MORE THAN 10 M/S
+1 1 MEAN WIND SPEED OVER 10-MINUTES PERIOD OBSERVED OR RECORDED"    EQUAL TO OR MORE THAN 20 M/S
+2 2 MEAN WIND SPEED OVER 10-MINUTES PERIOD OBSERVED OR RECORDED"    EQUAL TO OR MORE THAN 30 M/S
+3 3 MAXIMUM TEMPERATURE LESS THAN 273.2 K
+4 4 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 298.2 K
+5 5 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 303.2 K
+6 6 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 308.2 K
+7 7 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 313.2 K
+8 8 MINIMUM TEMPERATURE LESS THAN 273.2 K
+9 9 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 273.2 K
+10 10 PRECIPITATION EQUAL TO OR MORE THAN   1.0 KG/M**2
+11 11 PRECIPITATION EQUAL TO OR MORE THAN   5.0 KG/M**2
+12 12 PRECIPITATION EQUAL TO OR MORE THAN  10.0 KG/M**2
+13 13 PRECIPITATION EQUAL TO OR MORE THAN  50.0 KG/M**2
+14 14 PRECIPITATION EQUAL TO OR MORE THAN 100.0 KG/M**2
+15 15 PRECIPITATION EQUAL TO OR MORE THAN 150.0 KG/M**2
+16 16 SNOW DEPTH MORE THAN 0.0 M
+17 17 SNOW DEPTH MORE THAN 0.01 M
+18 18 SNOW DEPTH MORE THAN 0.10 M
+19 19 SNOW DEPTH MORE THAN 0.50 M
+20 20 HORIZONTAL VISIBILITY LESS THAN   50 M
+21 21 HORIZONTAL VISIBILITY LESS THAN  100 M
+22 22 HORIZONTAL VISIBILITY LESS THAN 1000 M
+23 23 HAIL
+24 24 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8053.table b/definitions/bufr/tables/0/wmo/11/codetables/8053.table
new file mode 100644
index 0000000..e0c5039
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8053.table
@@ -0,0 +1,4 @@
+0 0 VALUE OCCURED ON ONLY ONE DAY IN THE MONTH
+1 1 VALUE OCCURED ON MORE THAN ONE DAY IN THE MONTH
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8054.table b/definitions/bufr/tables/0/wmo/11/codetables/8054.table
new file mode 100644
index 0000000..71afef9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8054.table
@@ -0,0 +1,3 @@
+0 0 WIND SPEED OR GUST IS AS REPORTED
+1 1 WIND SPEED IS GREATER THAN THAT REPRTED (P IN METAR/TAF/SPEC"    I)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8060.table b/definitions/bufr/tables/0/wmo/11/codetables/8060.table
new file mode 100644
index 0000000..2865fec
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8060.table
@@ -0,0 +1,8 @@
+0 0 RESERVED
+1 1 RANGE
+2 2 AZIMUTH
+3 3 HORIZONTAL
+4 4 VERTICAL
+5 5 NORTH/SOUTH
+6 6 EAST/WEST
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8065.table b/definitions/bufr/tables/0/wmo/11/codetables/8065.table
new file mode 100644
index 0000000..69b80ea
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8065.table
@@ -0,0 +1,4 @@
+0 0 NO SUN-GLINT
+1 1 SUN-GLINT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8066.table b/definitions/bufr/tables/0/wmo/11/codetables/8066.table
new file mode 100644
index 0000000..fcc0252
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8066.table
@@ -0,0 +1,4 @@
+0 0 OPAQUE
+1 1 SEMI-TRANSPARENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8070.table b/definitions/bufr/tables/0/wmo/11/codetables/8070.table
new file mode 100644
index 0000000..2df3629
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8070.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 RESERVED
+2 2 EARTH LOCATED INSTRUMENT COUNTS,"    CALIBRATION COEFFICIENTS AND HOUSEKEEPING (LEVEL 1B)
+3 3 EARTH LOCATED CALIBRATED RADIANCES (LEVEL 1C)
+4 4 MAPPED TO A COMMON FOOTPRINT, EARTH LOCATED"    CALIBRATED RADIANCES (LEVEL 1D)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8072.table b/definitions/bufr/tables/0/wmo/11/codetables/8072.table
new file mode 100644
index 0000000..bd831e1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8072.table
@@ -0,0 +1,4 @@
+0 0 MIXED
+1 1 CLEAR
+2 2 CLOUDY
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8074.table b/definitions/bufr/tables/0/wmo/11/codetables/8074.table
new file mode 100644
index 0000000..5778e65
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8074.table
@@ -0,0 +1,4 @@
+0 0 OPEN OCEAN OR SEMI-ENCLOSED SEA
+1 1 NON-OCEAN LIKE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8075.table b/definitions/bufr/tables/0/wmo/11/codetables/8075.table
new file mode 100644
index 0000000..5f5e3a2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8075.table
@@ -0,0 +1,4 @@
+0 0 ASCENDING ORBIT
+1 1 DESCENDING ORBIT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8076.table b/definitions/bufr/tables/0/wmo/11/codetables/8076.table
new file mode 100644
index 0000000..c63942f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8076.table
@@ -0,0 +1,3 @@
+0 0 KU
+1 1 C
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8077.table b/definitions/bufr/tables/0/wmo/11/codetables/8077.table
new file mode 100644
index 0000000..2c7902b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8077.table
@@ -0,0 +1,7 @@
+0 0 LAND
+1 1 SEA
+2 2 COASTAL
+3 3 OPEN OCEAN OR SEMI-ENCLOSED SEA
+4 4 ENCLOSED SEA OR LAKE
+5 5 CONTINENTAL ICE
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8079.table b/definitions/bufr/tables/0/wmo/11/codetables/8079.table
new file mode 100644
index 0000000..25fc9e1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8079.table
@@ -0,0 +1,9 @@
+0 0 NORMAL ISSUE
+1 1 CORRECTION TO A PREVIOUSLY ISSUED PRODUCT (COR)
+2 2 AMANDMENT TO A PREVIOUSLY ISSUED PRODUCT *AMD)
+3 3 CORRECTION TO A PREVIOUSLY ISSUED AMENDED PRODUCT (COR AMD)
+4 4 CANCELLATION OD A PREVIOUSLY ISSUED PRODUCT (CNL)
+5 5 NO PRODUCT AVAILABLE (NIL)
+6 6 SPECIAL REPORT ( SPECI)
+7 7 CORRECTED SPECIAL REPORT (SPECI COR)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8080.table b/definitions/bufr/tables/0/wmo/11/codetables/8080.table
new file mode 100644
index 0000000..8972f26
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8080.table
@@ -0,0 +1,9 @@
+0 0 TOTAL WATER PRESSURE PROFILE
+1 1 TOTAL WATER TEMPERATURE PROFILE
+2 2 TOTAL WATER SALINITY PROFILE
+3 3 TOTAL WATER CONDUCTIVITY PROFILE
+10 10 WATER PRESSURE AT A LEVEL
+11 11 WATER TEMPERATURE AT A LEVEL
+12 12 SALINITY AT A LEVEL
+20 20 POSITION
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8081.table b/definitions/bufr/tables/0/wmo/11/codetables/8081.table
new file mode 100644
index 0000000..75d2887
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8081.table
@@ -0,0 +1,5 @@
+0 0 SENSOR
+1 1 TRANSMITTER
+2 2 RECEIVER
+3 3 OBSERVING PLATFORM
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8082.table b/definitions/bufr/tables/0/wmo/11/codetables/8082.table
new file mode 100644
index 0000000..1f24db8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8082.table
@@ -0,0 +1,3 @@
+0 0 SENSOR HEIGHT IS NOT MODIFIED
+1 1 SENSOR HEIGHT IS MODIFIED TO STANDARD LEVEL
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8083.table b/definitions/bufr/tables/0/wmo/11/codetables/8083.table
new file mode 100644
index 0000000..b754702
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8083.table
@@ -0,0 +1,9 @@
+1 1 ADJUSTED WITH RESPECT TO REPRESENTATIVE HEIGHT OF SENSOR ABO"    VE LOCAL GROUND (OR DECK OF MARINE PLATFORM)
+2 2 ADJUSTED WITH RESPECT TO REPRESENTATIVE HEIGHT OF SENSOR ABO"    VE WATER SURFACE
+3 3 ADJUSTED WITH RESPECT TO STANDARD SURFACE ROUGHNESS
+4 4 ADJUSTED WITH RESPECT TO WIND SPEED
+5 5 ADJUSTED WITH RESPECT TO TEMPERATURE
+6 6 ADJUSTED WITH RESPECT TO PRESSURE
+7 7 ADJUSTED WITH RESPECT TO HUMIDITY
+8 8 ADJUSTED WITH RESPECT TO EVAPORATION
+9 9 ADJUSTED WITH RESPECT TO WETTING LOSSES
diff --git a/definitions/bufr/tables/0/wmo/11/codetables/8085.table b/definitions/bufr/tables/0/wmo/11/codetables/8085.table
new file mode 100644
index 0000000..de7bb90
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/codetables/8085.table
@@ -0,0 +1,8 @@
+0 0 FORE BEAM
+1 1 MID BEAM
+2 2 AFT BEAM
+3 3 RESERVED
+4 4 RESERVED
+5 5 RESERVED
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/11/element.table b/definitions/bufr/tables/0/wmo/11/element.table
new file mode 100644
index 0000000..cc9082d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/element.table
@@ -0,0 +1,1297 @@
+#code|abbreviation|type|name|unit|scale|reference|width|crex_unit|crex_scale|crex_width
+000001|tableAEntry|string|TABLE A: ENTRY|CCITT IA5|0|0|24|Character|0|3
+000002|tableALine1|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 1|CCITT IA5|0|0|256|Character|0|32
+000003|tableALine2|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 2|CCITT IA5|0|0|256|Character|0|32
+000004|masterTable|string|BUFR/CREX MASTER TABLE|CCITT IA5|0|0|16|Character|0|2
+000005|editionNumber|string|BUFR/CREX EDITION NUMBER|CCITT IA5|0|0|24|Character|0|3
+000006|bufrMasterTableVersionNumber|string|BUFR MASTER TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000007|crexMasterTableVersionNumber|string|CREX MASTER TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000008|bufrLocalTableVersionNumber|string|BUFR LOCAL TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000010|fDescriptorToBeAddedOrDefined|string|F DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|8|Character|0|1
+000011|xDescriptorToBeAddedOrDefined|string|X DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|16|Character|0|2
+000012|yDescriptorToBeAddedOrDefined|string|Y DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|24|Character|0|3
+000013|elementNameLine1|string|ELEMENT NAME, LINE 1|CCITT IA5|0|0|256|Character|0|32
+000014|elementNameLine2|string|ELEMENT NAME, LINE 2|CCITT IA5|0|0|256|Character|0|32
+000015|unitsName|string|UNITS NAME|CCITT IA5|0|0|192|Character|0|24
+000016|unitsScaleSign|string|UNITS SCALE SIGN|CCITT IA5|0|0|8|Character|0|1
+000017|unitsScale|string|UNITS SCALE|CCITT IA5|0|0|24|Character|0|3
+000018|unitsReferenceSign|string|UNITS REFERENCE SIGN|CCITT IA5|0|0|8|Character|0|1
+000019|unitsReferenceValue|string|UNITS REFERENCE VALUE|CCITT IA5|0|0|80|Character|0|10
+000020|elementDataWidth|string|ELEMENT DATA WIDTH|CCITT IA5|0|0|24|Character|0|3
+000030|descriptorDefiningSequence|string|DESCRIPTOR DEFINING SEQUENCE|CCITT IA5|0|0|48|Character|0|6
+001001|blockNumber|long|WMO BLOCK NUMBER|Numeric|0|0|7|Numeric|0|2
+001002|stationNumber|long|WMO STATION NUMBER|Numeric|0|0|10|Numeric|0|3
+001003|regionNumber|table|WMO REGION NUMBER/GEOGRAPHICAL AREA|CODE TABLE|0|0|3|CODE TABLE|0|1
+001004|wmoRegionSubArea|long|WMO REGION SUB-AREA (SEE NOTE 9)|Numeric|0|0|3|Numeric|0|1
+001005|buoyOrPlatformIdentifier|long|BUOY/PLATFORM IDENTIFIER|Numeric|0|0|17|Numeric|0|5
+001006|aircraftFlightNumber|string|AIRCRAFT FLIGHT NUMBER|CCITT IA5|0|0|64|Character|0|8
+001007|satelliteIdentifier|table|SATELLITE IDENTIFIER|CODE TABLE|0|0|10|CODE TABLE|0|4
+001008|aircraftRegistrationNumberOrOtherIdentification|string|AIRCRAFT REGISTRATION NUMBER OR OTHER IDENTIFICATION|CCITT IA5|0|0|64|Character|0|8
+001009|commercialAircraftType|string|TYPE OF COMMERCIAL AIRCRAFT|CCITT IA5|0|0|64|Character|0|8
+001010|stationaryBuoyPlatformIdentifierEGCManBuoys|string|STATIONARY BUOY PLATFORM IDENTIFIER; E.G. C-MAN BUOYS|CCITT IA5|0|0|64|Character|0|8
+001011|shipOrMobileLandStationIdentifier|string|SHIP OR MOBILE LAND STATION IDENTIFIER|CCITT IA5|0|0|72|Character|0|9
+001012|directionOfMotionOfMovingObservingPlatform|long|DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM**|deg|0|0|9|deg|0|3
+001013|movingObservingPlatformSpeed|long|SPEED OF MOTION OF MOVING OBSERVING PLATFORM*|m/s|0|0|10|m/s|0|3
+001014|platformDriftSpeed|double|PLATFORM DRIFT SPEED (HIGH PRECISION)|m/s|2|0|10|m/s|2|4
+001015|stationOrSiteName|string|STATION OR SITE NAME|CCITT IA5|0|0|160|Character|0|20
+001018|shortStationName|string|SHORT STATION OR SITE NAME|CCITT IA5|0|0|40|Character|0|5
+001019|longStationName|string|LONG STATION OR SITE NAME|CCITT IA5|0|0|256|Character|0|32
+001020|wmoRegionSubArea|long|WMO REGION SUB-AREA|Numeric|0|0|4|Numeric|0|2
+001021|synopticFeatureIdentifier|long|SYNOPTIC FEATURE IDENTIFIER|Numeric|0|0|14|Numeric|0|4
+001022|featureName|string|NAME OF FEATURE (SEE NOTE 11)|CCITT IA5|0|0|224|Character|0|28
+001023|observationSequenceNumber|long|OBSERVATION SEQUENCE NUMBER|Numeric|0|0|9|Numeric|0|3
+001025|stormIdentifier|string|STORM IDENTIFIER|CCITT IA5|0|0|24|Character|0|3
+001026|stormName|string|WMO STORM NAME|CCITT IA5|0|0|64|Character|0|8
+001027|longStormName|string|WMO LONG STORM NAME|CCITT IA5|0|0|80|Character|0|10
+001030|numericalModelIdentifier|string|NUMERICAL MODEL IDENTIFIER|CCITT IA5|0|0|128|Character|0|16
+001031|centre|table|IDENTIFICATION OF ORIGINATING/GENERATING CENTRE (SEE NOTE 10)|CODE TABLE|0|0|16|CODE TABLE|0|5
+001032|generatingApplication|table|GENERATING APPLICATION|CODE TABLE|0|0|8|CODE TABLE|0|3
+001033|centre|table|IDENTIFICATION OF ORIGINATING/GENERATING CENTRE|CODE TABLE|0|0|8|CODE TABLE|0|3
+001034|subCentre|table|IDENTIFICATION OF ORIGINATING/GENERATING SUB-CENTRE|CODE TABLE|0|0|8|CODE TABLE|0|3
+001035|centre|table|ORIGINATING CENTRE|Common CODE TABLE C-11|0|0|16|Common CODE TABLE C-11|0|5
+001036|agencyInChargeOfOperatingObservingPlatform|table|AGENCY IN CHARGE OF OPERATING THE OBSERVING PLATFORM|CODE TABLE|0|0|20|CODE TABLE|0|7
+001037|sigmetSequenceIdentifier|string|SIGMET SEQUENCE IDENTIFIER|CCITT IA5|0|0|24|Character|0|3
+001041|absolutePlatformVelocityFirstComponent|double|ABSOLUTE PLATFORM VELOCITY - FIRST COMPONENT (SEE NOTE 6)|m/s|5|-1073741824|31|m/s|5|10
+001042|absolutePlatformVelocitySecondComponent|double|ABSOLUTE PLATFORM VELOCITY - SECOND COMPONENT (SEE NOTE 6)|m/s|5|-1073741824|31|m/s|5|10
+001043|absolutePlatformVelocityThirdComponent|double|ABSOLUTE PLATFORM VELOCITY - THIRD COMPONENT (SEE NOTE 6)|m/s|5|-1073741824|31|m/s|5|10
+001050|platformTransmitterIdNumber|long|PLATFORM TRANSMITTER ID NUMBER|Numeric|0|0|17|Numeric|0|6
+001051|platformTransmitterIdNumber|string|PLATFORM TRANSMITTER ID NUMBER|CCITT IA5|0|0|96|Character|0|12
+001060|aircraftReportingPointBeaconIdentifier|string|AIRCRAFT REPORTING POINT (BEACON IDENTIFIER)|CCITT IA5|0|0|64|Character|0|8
+001062|shortIcaoLocationIndicator|string|SHORT ICAO LOCATION INDICATOR|CCITT IA5|0|0|32|Character|0|4
+001063|icaoLocationIndicator|string|ICAO LOCATION INDICATOR|CCITT IA5|0|0|64|Character|0|8
+001064|runwayDesignator|string|RUNWAY DESIGNATOR|CCITT IA5|0|0|32|Character|0|4
+001065|icaoRegionIdentifier|string|ICAO REGION IDENTIFIER|CCITT IA5|0|0|256|Character|0|32
+001075|tideStationIdentification|string|TIDE STATION IDENTIFICATION|CCITT IA5|0|0|40|Character|0|5
+001080|shipLineNumberAccordingToSoop|string|SHIP LINE NUMBER ACCORDING TO SOOP|CCITT IA5|0|0|32|Character|0|4
+001081|radiosondeSerialNumber|string|RADIOSONDE SERIAL NUMBER|CCITT IA5|0|0|160|Character|0|20
+001082|radiosondeAscensionNumber|long|RADIOSONDE ASCENSION NUMBER (SEE NOTE 12)|Numeric|0|0|14|Numeric|0|4
+001083|radiosondeReleaseNumber|long|RADIOSONDE RELEASE NUMBER (SEE NOTE 12)|Numeric|0|0|3|Numeric|0|1
+001085|observingPlatformManufacturerModel|string|OBSERVING PLATFORM MANUFACTURER'S MODEL|CCITT IA5|0|0|160|Character|0|20
+001086|observingPlatformManufacturerSerialNumber|string|OBSERVING PLATFORM MANUFACTURER'S SERIAL NUMBER|CCITT IA5|0|0|256|Character|0|32
+001087|marineObservingPlatformIdentifier|long|WMO MARINE OBSERVING PLATFORM EXTENDED IDENTIFIER|Numeric|0|0|23|Numeric|0|7
+001090|techniqueForMakingUpInitialPerturbations|table|TECHNIQUE FOR MAKING UP INITIAL PERTURBATIONS|CODE TABLE|0|0|8|CODE TABLE|0|3
+001091|ensembleMemberNumber|long|ENSEMBLE MEMBER NUMBER|Numeric|0|0|10|Numeric|0|4
+001092|ensembleForecastType|table|TYPE OF ENSEMBLE FORECAST|CODE TABLE|0|0|8|CODE TABLE|0|3
+001093|balloonLotNumber|string|BALLOON LOT NUMBER|CCITT IA5|0|0|96|Character|0|12
+001094|wbanNumber|long|WBAN NUMBER|Numeric|0|0|17|Numeric|0|5
+001095|observerIdentification|string|OBSERVER IDENTIFICATION|CCITT IA5|0|0|32|Character|0|4
+001096|stationAcquisition|string|STATION ACQUISITION|CCITT IA5|0|0|160|Character|0|20
+001101|stateIdentifier|table|STATE IDENTIFIER|CODE TABLE|0|0|10|CODE TABLE|0|3
+001102|stationNumber|long|NATIONAL STATION IDENTIFIER|Numeric|0|0|30|Numeric|0|9
+001124|gridPointIdentifier|long|GRID POINT IDENTIFIER|Numeric|0|0|24|Numeric|0|8
+001144|snapshotIdentifier|long|SNAPSHOT IDENTIFIER|Numeric|0|0|31|Numeric|0|10
+002001|stationType|table|TYPE OF STATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002002|instrumentationForWindMeasurement|flag|TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+002003|measuringEquipmentType|table|TYPE OF MEASURING EQUIPMENT USED|CODE TABLE|0|0|4|CODE TABLE|0|2
+002004|typeOfInstrumentationForEvaporationMeasurement|table|TYPE OF INSTRUMENTATION FOR EVAPORATION MEASUREMENT OR TYPE OF C|CODE TABLE|0|0|4|CODE TABLE|0|2
+002005|temperatureObservationPrecision|double|PRECISION OF TEMPERATURE OBSERVATION|K|2|0|7|K|2|3
+002011|radiosondeType|table|RADIOSONDE TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+002012|radiosondeComputationalMethod|table|RADIOSONDE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002013|solarAndInfraredRadiationCorrection|table|SOLAR AND INFRARED RADIATION CORRECTION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002014|trackingTechniqueOrStatusOfSystem|table|TRACKING TECHNIQUE/STATUS OF SYSTEM USED|CODE TABLE|0|0|7|CODE TABLE|0|3
+002015|radiosondeCompleteness|table|RADIOSONDE COMPLETENESS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002016|radiosondeConfiguration|flag|RADIOSONDE CONFIGURATION|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+002019|satelliteInstruments|table|SATELLITE INSTRUMENTS|CODE TABLE|0|0|11|CODE TABLE|0|4
+002020|satelliteClassification|table|SATELLITE CLASSIFICATION|CODE TABLE|0|0|9|CODE TABLE|0|3
+002021|satelliteInstrumentDataUsedInProcessing|flag|SATELLITE INSTRUMENT DATA USED IN PROCESSING|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+002022|satelliteDataProcessingTechnique|flag|SATELLITE DATA-PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002023|satelliteDerivedWindComputationMethod|table|SATELLITE DERIVED WIND COMPUTATION METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002024|meanHumidityComputationalMethod|table|INTEGRATED MEAN HUMIDITY COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002025|satelliteChannelsUsedInComputation|flag|SATELLITE CHANNEL(S) USED IN COMPUTATION|FLAG TABLE|0|0|25|FLAG TABLE|0|9
+002026|crossTrackResolution|double|CROSS TRACK RESOLUTION|m|2|0|12|m|2|4
+002027|alongTrackResolution|double|ALONG TRACK RESOLUTION|m|2|0|12|m|2|4
+002028|segmentSizeAtNadirInXDirection|long|SEGMENT SIZE AT NADIR IN X DIRECTION|m|0|0|18|m|0|6
+002029|segmentSizeAtNadirInYDirection|long|SEGMENT SIZE AT NADIR IN Y DIRECTION|m|0|0|18|m|0|6
+002030|methodOfCurrentMeasurement|table|METHOD OF CURRENT MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002031|durationAndTimeOfCurrentMeasurement|table|DURATION AND TIME OF CURRENT MEASUREMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+002032|indicatorForDigitization|table|INDICATOR FOR DIGITIZATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002033|methodOfSalinityOrDepthMeasurement|table|METHOD OF SALINITY/DEPTH MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002034|drogueType|table|DROGUE TYPE|CODE TABLE|0|0|5|CODE TABLE|0|2
+002035|cableLength|long|CABLE LENGTH|m|0|0|9|m|0|3
+002036|buoyType|table|BUOY TYPE|CODE TABLE|0|0|2|CODE TABLE|0|1
+002037|methodOfTidalObservation|table|METHOD OF TIDAL OBSERVATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+002038|methodOfWaterTemperatureAndOrOrSalinityMeasurement|table|METHOD OF WATER TEMPERATURE AND/OR SALINITY MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002039|methodOfWetBulbTemperatureMeasurement|table|METHOD OF WET-BULB TEMPERATURE MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002040|methodOfRemovingVelocityAndMotionOfPlatformFromCurrent|table|METHOD OF REMOVING VELOCITY AND MOTION OF PLATFORM FROM CURRENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002041|methodForEstimatingReportsRelatedToSynopticFeatures|table|METHOD FOR ESTIMATING REPORTS RELATED TO SYNOPTIC FEATURES|CODE TABLE|0|0|6|CODE TABLE|0|2
+002042|indicatorForSeaSurfaceCurrentSpeed|table|INDICATOR FOR SEA SURFACE CURRENT SPEED|CODE TABLE|0|0|2|CODE TABLE|0|1
+002044|indicatorForMethodOfCalculatingSpectralWaveData|table|INDICATOR FOR METHOD OF CALCULATING SPECTRAL WAVE DATA|CODE TABLE|0|0|4|CODE TABLE|0|2
+002045|platformType|table|INDICATOR FOR TYPE OF PLATFORM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002046|waveMeasurementInstrumentation|table|WAVE MEASUREMENT INSTRUMENTATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002048|satelliteSensorIndicator|table|SATELLITE SENSOR INDICATOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002049|geostationarySatelliteDataProcessingTechnique|flag|GEOSTATIONARY SATELLITE DATA-PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002050|geostationarySounderSatelliteChannels|flag|GEOSTATIONARY SOUNDER SATELLITE CHANNELS USED|FLAG TABLE|0|0|20|FLAG TABLE|0|7
+002051|indicatorToSpecifyObservingMethodForExtremeTemperatures|table|INDICATOR TO SPECIFY OBSERVING METHOD FOR EXTREME TEMPERATURES|CODE TABLE|0|0|4|CODE TABLE|0|2
+002052|geostationaryImagerSatelliteChannels|flag|GEOSTATIONARY IMAGER SATELLITE CHANNELS USED|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+002053|goesBrightnessTemperatureCharacteristics|table|GOES-I/M BRIGHTNESS TEMPERATURE CHARACTERISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002054|goesSoundingsParameter|table|GOES-I/M SOUNDINGS PARAMETER CHARACTERISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002055|geostationarySoundingsStatisticalParameters|table|GEOSTATIONARY SOUNDINGS STATISTICAL PARAMETERS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002056|geostationarySoundingsAccuracyStatistics|table|GEOSTATIONARY SOUNDINGS ACCURACY STATISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002057|originOfFirstGuessInformationForGoesIOrMSoundings|table|ORIGIN OF FIRST GUESS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002058|validTimesOfFirstGuessInformationForGoesIOrMSoundings|table|VALID TIMES OF FIRST GUESS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002059|originOfAnalysisInformationForGoesIOrMSoundings|table|ORIGIN OF ANALYSIS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002060|originOfSurfaceInformationForGoesIOrMSoundings|table|ORIGIN OF SURFACE INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002061|aircraftNavigationalSystem|table|AIRCRAFT NAVIGATIONAL SYSTEM|CODE TABLE|0|0|3|CODE TABLE|0|1
+002062|aircraftDataRelaySystemType|table|TYPE OF AIRCRAFT DATA RELAY SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002063|aircraftRollAngle|double|AIRCRAFT ROLL ANGLE|deg|2|-18000|16|deg|2|5
+002064|aircraftRollAngleQuality|table|AIRCRAFT ROLL ANGLE QUALITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+002065|acarsGroundReceivingStation|string|ACARS GROUND RECEIVING STATION|CCITT IA5|0|0|40|Character|0|5
+002066|radiosondeGroundReceivingSystem|table|RADIOSONDE GROUND RECEIVING SYSTEM|CODE TABLE|0|0|6|CODE TABLE|0|2
+002067|radiosondeOperatingFrequency|long|RADIOSONDE OPERATING FREQUENCY|Hz|-5|0|15|Hz|-5|5
+002070|originalSpecificationOfLatitudeOrLongitude|table|ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002071|spectrographicWavelength|double|SPECTROGRAPHIC WAVELENGTH|m|13|0|30|m|13|10
+002080|balloonManufacturer|table|BALLOON MANUFACTURER|CODE TABLE|0|0|6|CODE TABLE|0|2
+002081|balloonType|table|TYPE OF BALLOON|CODE TABLE|0|0|5|CODE TABLE|0|2
+002082|weightOfBalloon|double|WEIGHT OF BALLOON|kg|3|0|12|kg|3|4
+002083|balloonShelterType|table|TYPE OF BALLOON SHELTER|CODE TABLE|0|0|4|CODE TABLE|0|2
+002084|typeOfGasUsedInBalloon|table|TYPE OF GAS USED IN BALLOON|CODE TABLE|0|0|4|CODE TABLE|0|2
+002085|amountOfGasUsedInBalloon|double|AMOUNT OF GAS USED IN BALLOON|kg|3|0|13|kg|3|4
+002086|balloonFlightTrainLength|double|BALLOON FLIGHT TRAIN LENGTH|m|1|0|10|m|1|4
+002091|entrySensor4Or20Ma|double|ENTRY SENSOR 4/20 MA|A|4|0|10|A|4|3
+002095|pressureSensorType|table|TYPE OF PRESSURE SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002096|temperatureSensorType|table|TYPE OF TEMPERATURE SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002097|humiditySensorType|table|TYPE OF HUMIDITY SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002098|typeOfWaveSensor|table|TYPE OF WAVE SENSOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002099|polarization|table|POLARISATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+002100|radarConstant|double|RADAR CONSTANT|dB|1|0|12|dB|1|4
+002101|antennaType|table|TYPE OF ANTENNA|CODE TABLE|0|0|4|CODE TABLE|0|2
+002102|antennaHeightAboveTowerBase|long|ANTENNA HEIGHT ABOVE TOWER BASE|m|0|0|8|m|0|3
+002103|radome|flag|RADOME|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+002104|antennaPolarization|table|ANTENNA POLARISATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002105|maximumAntennaGain|long|MAXIMUM ANTENNA GAIN|dB|0|0|6|dB|0|2
+002106|3DbBeamwidth|double|3-DB BEAMWIDTH|deg|1|0|6|deg|1|2
+002107|sidelobeSuppression|long|SIDELOBE SUPPRESSION|dB|0|0|6|dB|0|2
+002108|crosspolDiscriminationOnAxis|long|CROSSPOL DISCRIMINATION (ON AXIS)|dB|0|0|6|dB|0|2
+002109|antennaSpeedAzimuth|double|ANTENNA SPEED (AZIMUTH)|deg/s|2|0|12|deg/s|2|4
+002110|antennaSpeedElevation|double|ANTENNA SPEED (ELEVATION)|deg/s|2|0|12|deg/s|2|4
+002111|radarIncidenceAngle|double|RADAR INCIDENCE ANGLE|deg|1|0|10|deg|1|4
+002112|radarLookAngle|double|RADAR LOOK ANGLE|deg|1|0|12|deg|1|4
+002113|numberOfAzimuthLooks|long|NUMBER OF AZIMUTH LOOKS|Numeric|0|0|4|Numeric|0|2
+002114|antennaEffectiveSurfaceArea|long|ANTENNA EFFECTIVE SURFACE AREA|m2|0|0|15|m2|0|5
+002115|surfaceObservingEquipmentType|table|TYPE OF SURFACE OBSERVING EQUIPMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+002116|percentageOf320MhzBandProcessed|long|PERCENTAGE OF 320 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002117|percentageOf80MhzBandProcessed|long|PERCENTAGE OF 80 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002118|percentageOf20MhzBandProcessed|long|PERCENTAGE OF 20 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002119|ra2InstrumentOperations|table|RA-2 INSTRUMENT OPERATIONS|CODE TABLE|0|0|3|CODE TABLE|0|1
+002120|oceanWaveFrequency|double|OCEAN WAVE FREQUENCY|Hz|3|0|10|Hz|3|4
+002121|meanFrequency|long|MEAN FREQUENCY|Hz|-8|0|7|Hz|-8|3
+002122|frequencyAgilityRange|long|FREQUENCY AGILITY RANGE|Hz|-6|-128|8|Hz|-6|3
+002123|peakPower|long|PEAK POWER|W|-4|0|7|W|-4|3
+002124|averagePower|long|AVERAGE POWER|W|-1|0|7|W|-1|3
+002125|pulseRepetitionFrequency|long|PULSE REPETITION FREQUENCY|Hz|-1|0|8|Hz|-1|3
+002126|pulseWidth|double|PULSE WIDTH|s|7|0|6|s|7|2
+002127|receiverIntermediateFrequency|long|RECEIVER INTERMEDIATE FREQUENCY|Hz|-6|0|7|Hz|-6|3
+002128|intermediateFrequencyBandwidth|long|INTERMEDIATE FREQUENCY BANDWIDTH|Hz|-5|0|6|Hz|-5|2
+002129|minimumDetectableSignal|long|MINIMUM DETECTABLE SIGNAL|dB|0|-150|5|dB|0|3
+002130|dynamicRange|long|DYNAMIC RANGE|dB|0|0|7|dB|0|3
+002131|sensitivityTimeControl|flag|SENSITIVITY TIME CONTROL (STC)|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+002132|azimuthPointingAccuracy|double|AZIMUTH POINTING ACCURACY|deg|2|0|6|deg|2|2
+002133|elevationPointingAccuracy|double|ELEVATION POINTING ACCURACY|deg|2|0|6|deg|2|2
+002134|antennaBeamAzimuth|double|ANTENNA BEAM AZIMUTH|deg|2|0|16|deg|2|5
+002135|antennaElevation|double|ANTENNA ELEVATION|deg|2|-9000|15|deg|2|5
+002136|rangeProcessedByRangeAttenuationCorrection|long|RANGE PROCESSED BY RANGE ATTENUATION CORRECTION|m|-3|0|16|m|-3|5
+002140|satelliteRadarBeamAzimuthAngle|long|SATELLITE RADAR BEAM AZIMUTH ANGLE|deg|0|0|9|deg|0|3
+002141|measurementType|string|MEASUREMENT TYPE|CCITT IA5|0|0|24|Character|0|3
+002142|ozoneInstrument|string|OZONE INSTRUMENT SERIAL NUMBER/ IDENTIFICATION|CCITT IA5|0|0|32|Character|0|4
+002143|ozoneInstrumentType|table|OZONE INSTRUMENT TYPE|CODE TABLE|0|0|7|CODE TABLE|0|3
+002144|lightSourceTypeForBrewerSpectrophotometer|table|LIGHT SOURCE TYPE FOR BREWER SPECTRO PHOTOMETER|CODE TABLE|0|0|4|CODE TABLE|0|2
+002145|wavelengthSettingForDobsonInstruments|table|WAVE LENGTH SETTING FOR DOBSON INSTRUMENTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002146|sourceConditionsForDobsonInstruments|table|SOURCE CONDITIONS FOR DOBSON INSTRUMENTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002148|dataCollectionLocationSystem|table|DATA COLLECTION AND/OR LOCATION SYSTEM|CODE TABLE|0|0|5|CODE TABLE|0|2
+002149|dataBuoyType|table|TYPE OF DATA BUOY|CODE TABLE|0|0|6|CODE TABLE|0|2
+002150|tovsOrAtovsOrAvhrrInstrumentationChannelNumber|table|TOVS/ATOVS/AVHRR INSTRUMENTATION CHANNEL NUMBER|CODE TABLE|0|0|6|CODE TABLE|0|2
+002151|radiometerIdentifier|table|RADIOMETER IDENTIFIER|CODE TABLE|0|0|11|CODE TABLE|0|4
+002152|satelliteInstrumentUsedInDataProcessing|flag|SATELLITE INSTRUMENT USED IN DATA PROCESSING(6)|FLAG TABLE|0|0|31|FLAG TABLE|0|10
+002153|satelliteChannelCentreFrequency|long|SATELLITE CHANNEL CENTRE FREQUENCY|Hz|-8|0|26|Hz|-8|8
+002154|satelliteChannelBandWidth|long|SATELLITE CHANNEL BAND WIDTH|Hz|-8|0|26|Hz|-8|8
+002156|percentageOfValidKuOceanRetrackerMeasurements|long|PERCENTAGE OF VALID KU OCEAN RETRACKER MEASUREMENTS|%|0|0|7|%|0|3
+002157|percentageOfValidSOceanRetrackerMeasurements|long|PERCENTAGE OF VALID S OCEAN RETRACKER MEASUREMENTS|%|0|0|7|%|0|3
+002158|ra2Instrument|flag|RA-2 INSTRUMENT|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+002159|mwrInstrument|flag|MWR INSTRUMENT|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002160|radarWaveLength|table|WAVE LENGTH OF THE RADAR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002163|heightAssignmentMethod|table|HEIGHT ASSIGNMENT METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002164|tracerCorrelationMethod|table|TRACER CORRELATION METHOD|CODE TABLE|0|0|3|CODE TABLE|0|1
+002166|radianceType|table|RADIANCE TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002167|radianceComputationalMethod|table|RADIANCE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002168|hydrostaticPressureOfLowerEndOfCableThermistorString|long|HYDROSTATIC PRESSURE OF LOWER END OF CABLE (THERMISTOR STRING)|Pa|-3|0|16|kPa|0|5
+002169|anemometerType|table|ANEMOMETER TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002172|productTypeForRetrievedAtmosphericGases|table|PRODUCT TYPE FOR RETRIEVED ATMOSPHERIC GASES|CODE TABLE|0|0|8|CODE TABLE|0|3
+002173|squareOfOffNadirAngle|double|SQUARE OF THE OFF NADIR ANGLE (7)|deg2|4|0|10|deg2|4|4
+002174|meanAcrossTrackPixelNumber|long|MEAN ACROSS TRACK PIXEL NUMBER|Numeric|0|0|9|Numeric|0|3
+002175|methodOfPrecipitationMeasurement|table|METHOD OF PRECIPITATION MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002176|methodOfStateOfGroundMeasurement|table|METHOD OF STATE OF GROUND MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002177|methodOfSnowDepthMeasurement|table|METHOD OF SNOW DEPTH MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002178|methodOfLiquidContentMeasurementOfPrecipitation|table|METHOD OF LIQUID CONTENT MEASUREMENT OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002179|skyConditionAlgorithmType|table|TYPE OF SKY CONDITION ALGORITHM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002180|mainPresentWeatherDetectingSystem|table|MAIN PRESENT WEATHER DETECTING SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002181|supplementaryPresentWeatherSensor|flag|SUPPLEMENTARY PRESENT WEATHER SENSOR|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+002182|visibilityMeasurementSystem|table|VISIBILITY MEASUREMENT SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002183|cloudDetectionSystem|table|CLOUD DETECTION SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002184|lightningDetectionSensorType|table|TYPE OF LIGHTNING DETECTION SENSOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002185|methodOfEvaporationMeasurement|table|METHOD OF EVAPORATION MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002186|capabilityToDetectPrecipitationPhenomena|flag|CAPABILITY TO DETECT PRECIPITATION PHENOMENA|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+002187|capabilityToDetectOtherWeatherPhenomena|flag|CAPABILITY TO DETECT OTHER WEATHER PHENOMENA|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+002188|capabilityToDetectObscuration|flag|CAPABILITY TO DETECT OBSCURATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+002189|capabilityToDiscriminateLightningStrikes|flag|CAPABILITY TO DISCRIMINATE LIGHTNING STRIKES|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+002190|lagrangianDrifterSubmergenceTimeSubmerged|long|LAGRANGIAN DRIFTER SUBMERGENCE (% TIME SUBMERGED)|%|0|0|7|%|0|3
+004001|year|long|YEAR|a|0|0|12|a|0|4
+004002|month|long|MONTH|mon|0|0|4|mon|0|2
+004003|day|long|DAY|d|0|0|6|d|0|2
+004004|hour|long|HOUR|h|0|0|5|h|0|2
+004005|minute|long|MINUTE|min|0|0|6|min|0|2
+004006|second|long|SECOND|s|0|0|6|s|0|2
+004007|secondsWithinAMinuteMicrosecond|double|SECONDS WITHIN A MINUTE (MICROSECOND ACCURACY)|s|6|0|26|s|6|8
+004011|timeIncrement|long|TIME INCREMENT|a|0|-1024|11|a|0|4
+004012|timeIncrement|long|TIME INCREMENT|mon|0|-1024|11|mon|0|4
+004013|timeIncrement|long|TIME INCREMENT|d|0|-1024|11|d|0|4
+004014|timeIncrement|long|TIME INCREMENT|h|0|-1024|11|h|0|4
+004015|timeIncrement|long|TIME INCREMENT|min|0|-2048|12|min|0|4
+004016|timeIncrement|long|TIME INCREMENT|s|0|-4096|13|s|0|4
+004017|referenceTimePeriodForAccumulatedOrExtremeData|long|REFERENCE TIME PERIOD FOR ACCUMULATED OR EXTREME DATA|min|0|-1440|12|min|0|4
+004021|timePeriod|long|TIME PERIOD OR DISPLACEMENT|a|0|-1024|11|a|0|4
+004022|timePeriod|long|TIME PERIOD OR DISPLACEMENT|mon|0|-1024|11|mon|0|4
+004023|timePeriod|long|TIME PERIOD OR DISPLACEMENT|d|0|-1024|11|d|0|4
+004024|timePeriod|long|TIME PERIOD OR DISPLACEMENT|h|0|-2048|12|h|0|4
+004025|timePeriod|long|TIME PERIOD OR DISPLACEMENT|min|0|-2048|12|min|0|4
+004026|timePeriod|long|TIME PERIOD OR DISPLACEMENT|s|0|-4096|13|s|0|4
+004031|durationOfTimeRelatingToFollowingValue|long|DURATION OF TIME RELATING TO FOLLOWING VALUE|h|0|0|8|h|0|3
+004032|durationOfTimeRelatingToFollowingValue|long|DURATION OF TIME RELATING TO FOLLOWING VALUE|min|0|0|6|min|0|2
+004041|timeDifferenceUtcLmt|long|TIME DIFFERENCE, UTC -LMT (SEE NOTE 6)|min|0|-1440|12|min|0|4
+004043|dayOfYear|long|DAY OF THE YEAR|d|0|0|9|d|0|3
+004051|principalTimeOfDailyReadingOfMaximumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MAXIMUM TEMPERATURE|h|0|0|5|h|0|2
+004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2
+004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2
+004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
+004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
+004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
+004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
+004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2
+004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
+005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005012|latitudeIncrement|double|LATITUDE INCREMENT (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005015|latitudeDisplacement|double|LATITUDE DISPLACEMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005016|latitudeDisplacement|double|LATITUDE DISPLACEMENT (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005021|bearingOrAzimuth|double|BEARING OR AZIMUTH|deg|2|0|16|deg|2|5
+005022|solarAzimuth|double|SOLAR AZIMUTH|deg|2|0|16|deg|2|5
+005023|sunToSatelliteAzimuthDifference|double|SUN TO SATELLITE AZIMUTH DIFFERENCE|deg|1|-1800|12|deg|1|4
+005030|directionSpectral|long|DIRECTION (SPECTRAL)|deg|0|0|12|deg|0|4
+005031|rowNumber|long|ROW NUMBER|Numeric|0|0|12|Numeric|0|4
+005033|pixelSizeOnHorizontal1|long|PIXEL SIZE ON HORIZONTAL - 1|m|-1|0|16|m|-1|5
+005034|alongTrackRowNumber|long|ALONG TRACK ROW NUMBER|Numeric|0|0|11|Numeric|0|4
+005036|shipTransectNumberAccordingToSoop|long|SHIP TRANSECT NUMBER ACCORDING TO SOOP|Numeric|0|0|7|Numeric|0|2
+005040|orbitNumber|long|ORBIT NUMBER|Numeric|0|0|24|Numeric|0|8
+005041|scanLineNumber|long|SCAN LINE NUMBER|Numeric|0|0|8|Numeric|0|3
+005042|channelNumber|long|CHANNEL NUMBER|Numeric|0|0|6|Numeric|0|2
+005043|fieldOfViewNumber|long|FIELD OF VIEW NUMBER|Numeric|0|0|8|Numeric|0|3
+005044|satelliteCycleNumber|long|SATELLITE CYCLE NUMBER|Numeric|0|0|11|Numeric|0|4
+005052|channelNumberIncrement|long|CHANNEL NUMBER INCREMENT|Numeric|0|0|5|Numeric|0|2
+005053|fieldOfViewNumberIncrement|long|FIELD OF VIEW NUMBER INCREMENT|Numeric|0|0|5|Numeric|0|2
+005060|yAngularPositionFromCentreOfGravity|double|Y ANGULAR POSITION FROM CENTRE OF GRAVITY|deg|6|-8000000|24|deg|6|8
+005061|zAngularPositionFromCentreOfGravity|double|Z ANGULAR POSITION FROM CENTRE OF GRAVITY|deg|6|-8000000|24|deg|6|8
+006001|longitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006002|longitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006011|longitudeIncrement|double|LONGITUDE INCREMENT (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006012|longitudeIncrement|double|LONGITUDE INCREMENT (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006015|longitudeDisplacement|double|LONGITUDE DISPLACEMENT (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006016|longitudeDisplacement|double|LONGITUDE DISPLACEMENT (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006021|distance|long|DISTANCE|m|-1|0|13|m|-1|4
+006030|waveNumberSpectral|double|WAVE NUMBER (SPECTRAL)|rad/m|5|0|13|rad/m|5|4
+006031|columnNumber|long|COLUMN NUMBER|Numeric|0|0|12|Numeric|0|4
+006033|pixelSizeOnHorizontal2|long|PIXEL SIZE ON HORIZONTAL - 2|m|-1|0|16|m|-1|5
+006034|crossTrackCellNumber|long|CROSS-TRACK CELL NUMBER|Numeric|0|0|7|Numeric|0|3
+006040|radiusOfConfidence|long|RADIUS OF CONFIDENCE|m|0|0|13|m|0|4
+007001|heightOfStation|long|HEIGHT OF STATION (SEE NOTE 1)|m|0|-400|15|m|0|5
+007002|height|long|HEIGHT OR ALTITUDE|m|-1|-40|16|m|-1|5
+007003|geopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|m2 s-2|-1|6
+007004|pressure|long|PRESSURE|Pa|-1|0|14|Pa|-1|5
+007005|heightIncrement|long|HEIGHT INCREMENT|m|0|-400|12|m|0|4
+007006|heightAboveStation|long|HEIGHT ABOVE STATION|m|0|0|15|m|0|5
+007007|height|long|HEIGHT|m|0|-1000|17|m|0|6
+007008|geopotential|long|GEOPOTENTIAL|m2 s-2|0|-10000|20|m2 s-2|0|7
+007009|geopotentialHeight|long|GEOPOTENTIAL HEIGHT|gpm|0|-1000|17|gpm|0|5
+007010|flightLevel|long|FLIGHT LEVEL|m|0|-1024|16|ft|-1|5
+007012|gridPointAltitude|double|GRID POINT ALTITUDE|m|2|-50000|20|m|2|7
+007021|elevation|double|ELEVATION (SEE NOTE 2)|deg|2|-9000|15|deg|2|5
+007022|solarElevation|double|SOLAR ELEVATION|deg|2|-9000|15|deg|2|5
+007024|satelliteZenithAngle|double|SATELLITE ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+007025|solarZenithAngle|double|SOLAR ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+007026|satelliteZenithAngle|double|SATELLITE ZENITH ANGLE|deg|4|-900000|21|deg|4|7
+007030|heightOfStationGroundAboveMeanSeaLevel|double|HEIGHT OF STATION GROUND ABOVE MEAN SEA LEVEL (SEE NOTE 3)|m|1|-4000|17|m|1|5
+007031|heightOfBarometerAboveMeanSeaLevel|double|HEIGHT OF BAROMETER ABOVE MEAN SEA LEVEL (SEE NOTE 4)|m|1|-4000|17|m|1|5
+007032|heightOfSensorAboveLocalGroundOrDeckOfMarinePlatform|double|HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM)|m|2|0|16|m|2|5
+007033|heightOfSensorAboveWaterSurface|double|HEIGHT OF SENSOR ABOVE WATER SURFACE (SEE NOTE 6)|m|1|0|12|m|1|4
+007040|impactParameter|double|IMPACT PARAMETER (SEE NOTE 8)|m|1|62000000|22|m|1|8
+007061|depthBelowLandSurface|double|DEPTH BELOW LAND SURFACE|m|2|0|14|m|2|5
+007062|depthBelowWaterSurface|double|DEPTH BELOW SEA/WATER SURFACE|m|1|0|17|m|1|6
+007063|depthBelowWaterSurface|double|DEPTH BELOW SEA/WATER SURFACE|m|2|0|20|m|2|7
+007064|representativeHeightOfSensorAboveStation|long|REPRESENTATIVE HEIGHT OF SENSOR ABOVE STATION (SEE NOTE 7)|m|0|0|4|m|0|2
+007065|waterPressure|long|WATER PRESSURE|Pa|-3|0|17|Pa|0|6
+007070|drogueDepth|long|DROGUE DEPTH|m|0|0|10|m|0|4
+008001|verticalSoundingSignificance|flag|VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|7|FLAG TABLE|0|3
+008002|verticalSignificanceSurfaceObservations|table|VERTICAL SIGNIFICANCE (SURFACE OBSERVATIONS)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008003|verticalSignificanceSatelliteObservations|table|VERTICAL SIGNIFICANCE (SATELLITE OBSERVATIONS)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008004|phaseOfAircraftFlight|table|PHASE OF AIRCRAFT FLIGHT|CODE TABLE|0|0|3|CODE TABLE|0|1
+008005|meteorologicalAttributeSignificance|table|METEOROLOGICAL ATTRIBUTE SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008006|ozoneVerticalSoundingSignificance|flag|OZONE VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+008007|dimensionalSignificance|table|DIMENSIONAL SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008008|radiationVerticalSoundingSignificance|flag|RADIATION VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+008009|detailedPhaseOfFlight|table|DETAILED PHASE OF FLIGHT|CODE TABLE|0|0|4|CODE TABLE|0|2
+008010|surfaceQualifierForTemperatureData|table|SURFACE QUALIFIER (TEMPERATURE DATA)|CODE TABLE|0|0|5|CODE TABLE|0|2
+008011|meteorologicalFeature|table|METEOROLOGICAL FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008012|landOrSeaQualifier|table|LAND/SEA QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008013|dayOrNightQualifier|table|DAY/NIGHT QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008014|qualifierForRunwayVisualRange|table|QUALIFIER FOR RUNWAY VISUAL RANGE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008016|changeQualifierOfATrendTypeForecastOrAnAerodromeForecast|table|CHANGE QUALIFIER OF A TREND-TYPE FORECAST OR AN AERODROME FORECA|CODE TABLE|0|0|3|CODE TABLE|0|1
+008017|qualifierOfTimeWhenForecastChangeExpected|table|QUALIFIER OF THE TIME WHEN THE FORECAST CHANGE IS EXPECTED|CODE TABLE|0|0|2|CODE TABLE|0|1
+008018|seawindsLandOrIceSurfaceType|flag|SEAWINDS LAND/ICE SURFACE TYPE|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+008019|qualifierForFollowingCentreIdentifier|table|QUALIFIER FOR FOLLOWING CENTRE IDENTIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008020|totalNumberOfMissingEntitiesWithRespectToAccumulationOrAverage|long|TOTAL NUMBER OF MISSING ENTITIES (WITH RESPECT TO ACCUMULATION O|Numeric|0|0|16|Numeric|0|5
+008021|timeSignificance|table|TIME SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+008022|totalNumberWithRespectToAccumulationOrAverage|long|TOTAL NUMBER (WITH RESPECT TO ACCUMULATION OR AVERAGE)|Numeric|0|0|16|Numeric|0|5
+008023|firstOrderStatistics|table|FIRST ORDER STATISTICS|CODE TABLE|0|0|6|CODE TABLE|0|2
+008024|differenceStatistics|table|DIFFERENCE STATISTICS|CODE TABLE|0|0|6|CODE TABLE|0|2
+008025|timeDifferenceQualifier|table|TIME DIFFERENCE QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008026|matrixSignificance|table|MATRIX SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008029|surfaceType|table|REMOTLY SENSED SURFACE TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+008030|manualOnCodesVolumeI1SectionCCodeTableFromWhichDataAreDerived|long|MANUAL ON CODES (VOLUME I.1, SECTION C) CODE TABLE FROM WHICH DA|Numeric|0|0|13|Numeric|0|4
+008031|dataCategoryCrexTableA|long|DATA CATEGORY CREX TABLE A|Numeric|0|0|8|Numeric|0|3
+008033|methodOfDerivationOfPercentageConfidence|table|METHOD OF DERIVATION OF PERCENTAGE CONFIDENCE|CODE TABLE|0|0|7|CODE TABLE|0|3
+008035|monitoringExerciseType|table|TYPE OF MONITORING EXERCISE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008036|typeOfCentreOrStationPerformingMonitoring|table|TYPE OF CENTRE OR STATION PERFORMING MONITORING|CODE TABLE|0|0|3|CODE TABLE|0|1
+008039|timeSignificanceAviationForecast|table|TIME SIGNIFICANCE ( AVIATION FORECAST)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008040|flightLevelSignificance|table|FLIGHT LEVEL SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008041|dataSignificance|table|DATA SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+008042|extendedVerticalSoundingSignificance|flag|EXTENDED VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+008043|atmosphericChemical|table|ATMOSPHERIC CHEMICAL OR PHISICAL CONSTITUENT TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+008044|casRegistryNumber|string|CAS REGISTRY NUMBER|CCITT IA5|0|0|88|Character|0|11
+008045|particulateMatterCharacterization|table|PARTICULATE MATTER CHARACTERIZATION|CODE TABLE|0|0|8|CODE TABLE|0|3
+008049|numberOfObservations|long|NUMBER OF OBSERVATIONS|Numeric|0|0|8|Numeric|0|3
+008050|qualifierForNumberOfMissingValuesInCalculationOfStatistic|table|QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATIST|CODE TABLE|0|0|4|CODE TABLE|0|2
+008051|qualifierForNumberOfMissingValuesInCalculationOfStatistic|table|QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATIST|CODE TABLE|0|0|3|CODE TABLE|0|1
+008052|conditionForWhichNumberOfDaysOfOccurrenceFollows|table|CONDITION FOR WHICH NUMBER OF DAYS OF OCCURRENCE FOLLOWS|CODE TABLE|0|0|5|CODE TABLE|0|2
+008053|dayOfOccurrenceQualifier|table|DAY OF OCCURRENCE QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008054|qualifierForWindSpeedOrWindGusts|table|QUALIFIER FOR WIND SPEED OR WIND GUST|CODE TABLE|0|0|3|CODE TABLE|0|1
+008060|sampleScanningModeSignificance|table|SAMPLE SCANNING MODE SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008065|sunGlintIndicator|table|SUN-GLINT INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+008066|semiTransparencyIndicator|table|SEMI-TRANSPARENCY INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+008070|tovsOrAtovsProductQualifier|table|TOVS/ATOVS PRODUCT QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008072|pixelType|table|PIXEL(S) TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008074|altimeterEchoType|table|ALTIMETER ECHO TYPE|CODE TABLE|0|0|2|CODE TABLE|0|1
+008075|orbitQualifier|table|ASCENDING/DESCENDING ORBIT QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008076|band|table|TYPE OF BAND|CODE TABLE|0|0|6|CODE TABLE|0|2
+008077|radiometerSensedSurfaceType|table|RADIOMETER SENSED SURFACE TYPE|CODE TABLE|0|0|7|CODE TABLE|0|3
+008079|productStatus|table|PRODUCT STATUS|CODE TABLE|0|0|4|CODE TABLE|0|2
+008080|qualifierForGtsppQualityFlag|table|QUALIFIER FOR GTSPP QUALITY FLAG|CODE TABLE|0|0|6|CODE TABLE|0|2
+008081|equipmentType|table|TYPE OF EQUIPMENT|CODE TABLE|0|0|6|CODE TABLE|0|2
+008082|modificationOfSensorHeightToAnotherValue|table|(CBS) ARTIFICIAL CORRECTION OF SENSOR HEIGHT TO ANOTHER VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008083|nominalValueIndicator|flag|NOMINAL VALUE INDICATOR|FLAG TABLE|0|0|15|FLAG TABLE|0|5
+008085|beamIdentifier|table|BEAM IDENTIFIER|CODE TABLE|0|0|3|CODE TABLE|0|1
+008090|decimalScaleOfFollowingSignificands|long|DECIMAL SCALE|Numeric|0|-127|8|Numeric|0|3
+010001|heightOfLandSurface|long|HEIGHT OF LAND SURFACE|m|0|-400|15|m|0|5
+010002|height|long|HEIGHT|m|-1|-40|16|m|-1|5
+010003|geopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|m2 s-2|-1|6
+010004|pressure|long|PRESSURE|Pa|-1|0|14|Pa|-1|5
+010007|height|long|HEIGHT|m|0|-1000|17|m|0|6
+010008|geopotential|long|GEOPOTENTIAL|m2 s-2|0|-10000|20|m2 s-2|0|7
+010009|geopotentialHeight|long|GEOPOTENTIAL HEIGHT|gpm|0|-1000|17|gpm|0|5
+010010|minimumPressureReducedToMeanSeaLevel|long|MINIMUM PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010011|maximumPressureReducedToMeanSeaLevel|long|MAXIMUM PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010031|DistanceFromEarthCentreInDirectionOfNorthPole|double|IN DIRECTION OF THE NORTH POLE, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10
+010032|satelliteDistanceToEarthCentre|double|SATELLITE DISTANCE TO EARTH'S CENTRE|m|1|0|27|m|2|9
+010033|altitudePlatformToEllipsoid|double|ALTITUDE (PLATFORM TO ELLIPSOID)|m|1|0|27|m|2|9
+010034|earthRadius|double|EARTH RADIUS|m|1|0|27|m|2|9
+010035|earthLocalRadiusOfCurvature|double|EARTH'S LOCAL RADIUS OF CURVATURE|m|1|62000000|22|m|1|8
+010036|geoidUndulation|double|GEOID UNDULATION (SEE NOTE 4)|m|2|-15000|15|m|2|6
+010040|numberOfRetrievedLayers|long|NUMBER OF RETRIEVED LAYERS|Numeric|0|0|10|Numeric|0|4
+010050|standardDeviationAltitude|double|STANDARD DEVIATION ALTITUDE|m|2|0|16|m|2|5
+010051|pressureReducedToMeanSeaLevel|long|PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010052|altimeterSettingQnh|long|ALTIMETER SETTING (QNH)|Pa|-1|0|14|Pa|-1|5
+010060|pressureChange|long|PRESSURE CHANGE|Pa|-1|-1024|11|Pa|-1|4
+010061|3HourPressureChange|long|3-HOUR PRESSURE CHANGE|Pa|-1|-500|10|Pa|-1|4
+010062|24HourPressureChange|long|24-HOUR PRESSURE CHANGE|Pa|-1|-1000|11|Pa|-1|4
+010063|characteristicOfPressureTendency|table|CHARACTERISTIC OF PRESSURE TENDENCY|CODE TABLE|0|0|4|CODE TABLE|0|2
+010064|sigmetCruisingLevel|table|SIGMET CRUISING LEVEL|CODE TABLE|0|0|3|CODE TABLE|0|1
+010070|indicatedAircraftAltitude|long|INDICATED AIRCRAFT ALTITUDE|m|0|-400|16|m|0|5
+010080|viewingZenithAngle|double|VIEWING ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+010081|cogAltitudeAboveReferenceEllipsoid|double|ALTITUDE OF COG ABOVE REFERENCE ELLIPSOID|m|3|0|31|m|3|10
+010082|instantaneousAltitudeRate|double|INSTANTANEOUS ALTITUDE RATE|m/s|3|-65536|17|m/s|3|6
+010083|squaredOffNadirAngleOfSatelliteFromPlatformData|double|SQUARED OFF NADIR ANGLE OF THE SATELLITE FROM PLATFORM DATA|deg2|2|0|16|deg2|2|5
+010084|squaredOffNadirAngleOfSatelliteFromWaveformData|double|SQUARED OFF NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA|deg2|2|0|16|deg2|2|5
+010085|meanSeaSurfaceHeight|double|MEAN SEA SURFACE HEIGHT|m|3|-131072|18|m|3|6
+010086|geoidHeight|double|GEOID'S HEIGHT|m|3|-131072|18|m|3|6
+010087|oceanDepthOrLandElevation|double|OCEAN DEPTH/LAND ELEVATION|m|1|-131072|18|m|3|6
+010088|totalGeocentricOceanTideHeightSolution1|double|TOTAL GEOCENTRIC OCEAN TIDE HEIGHT SOLUTION 1|m|3|-32768|16|m|3|5
+010089|totalGeocentricOceanTideHeightSolution2|double|TOTAL GEOCENTRIC OCEAN TIDE HEIGHT SOLUTION 2|m|3|-32768|16|m|3|5
+010090|longPeriodTideHeight|double|LONG PERIOD TIDE HEIGHT|m|3|-32768|16|m|3|5
+010091|tidalLoadingHeight|double|TIDAL LOADING HEIGHT|m|3|-32768|16|m|3|5
+010092|solidEarthTideHeight|double|SOLID EARTH TIDE HEIGHT|m|3|-32768|16|m|3|5
+010093|geocentricPoleTideHeight|double|GEOCENTRIC POLE TIDE HEIGHT|m|3|-32768|16|m|3|5
+010095|heightOfAtmosphere|long|HEIGHT OF ATMOSPHERE USED|m|0|0|16|m|0|5
+010096|meanDynamicTopography|double|MEAN DYNAMIC TOPOGRAPHY|m|3|-131072|18|NA|0|0
+010097|meanSeaSurfaceHeightFromAltimeterOnly|double|MEAN SEA SURFACE HEIGHT FROM ALTIMETER ONLY|m|3|-131072|18|NA|0|0
+010098|loadingTideHeightGeocentricOceanTideSolution1|double|LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 1|m|4|-2000|12|NA|0|0
+010099|loadingTideHeightGeocentricOceanTideSolution2|double|LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 2|m|4|-2000|12|NA|0|0
+010100|nonEquilibriumLongPeriodTideHeight|double|NON-EQUILIBRIUM LONG PERIOD TIDE HEIGHT|m|4|-2000|12|NA|0|0
+010101|squaredOffNadirAngleOfSatelliteFromWaveformData|double|SQUARED OFF NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA|deg2|2|-32768|16|deg2|2|5
+011001|windDirection|long|WIND DIRECTION|deg|0|0|9|deg|0|3
+011002|windSpeed|double|WIND SPEED|m/s|1|0|12|m/s|1|4
+011003|u|double|U-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011004|v|double|V-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011005|w|double|W-COMPONENT|Pa/s|1|-512|10|Pa/s|1|4
+011006|w|double|W-COMPONENT|m/s|2|-4096|13|m/s|2|4
+011010|windDirectionAssociatedWithWindSpeedWhichFollows|long|WIND DIRECTION ASSOCIATED WITH WIND SPEED WHICH FOLLOWS|deg|0|0|9|deg|0|3
+011011|windDirectionAt10M|long|WIND DIRECTION AT 10 M|deg|0|0|9|deg|0|3
+011012|windSpeedAt10M|double|WIND SPEED AT 10 M|m/s|1|0|12|m/s|1|4
+011013|windDirectionAt5M|long|WIND DIRECTION AT 5 M|deg|0|0|9|deg|0|3
+011014|windSpeedAt5M|double|WIND SPEED AT 5 M|m/s|1|0|12|m/s|1|4
+011016|extremeCounterclockwiseWindDirectionOfAVariableWind|long|EXTREME COUNTERCLOCKWISE WIND DIRECTION OF A VARIABLE WIND|deg|0|0|9|deg|0|3
+011017|extremeClockwiseWindDirectionOfAVariableWind|long|EXTREME CLOCKWISE WIND DIRECTION OF A VARIABLE WIND|deg|0|0|9|deg|0|3
+011019|steadinessOfWind|long|STEADINESS OF WIND (6)|%|0|0|7|%|0|3
+011021|relativeVorticity|double|RELATIVE VORTICITY|/s|9|-65536|17|/s|9|6
+011022|divergence|double|DIVERGENCE|/s|9|-65536|17|/s|9|6
+011023|velocityPotential|long|VELOCITY POTENTIAL|m2/s|-2|-65536|17|m2/s|-2|6
+011030|extendedDegreeOfTurbulence|table|EXTENDED DEGREE OF TURBULENCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+011031|degreeOfTurbulence|table|DEGREE OF TURBULENCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+011032|heightOfBaseOfTurbulence|long|HEIGHT OF BASE OF TURBULENCE|m|-1|-40|16|m|-1|5
+011033|heightOfTopOfTurbulence|long|HEIGHT OF TOP OF TURBULENCE|m|-1|-40|16|m|-1|5
+011034|verticalGustVelocity|double|VERTICAL GUST VELOCITY|m/s|1|-1024|11|m/s|1|4
+011035|verticalGustAcceleration|double|VERTICAL GUST ACCELERATION|m s-2|2|-8192|14|m s-2|2|5
+011036|maximumDerivedEquivalentVerticalGustSpeed|double|MAXIMUM DERIVED EQUIVALENT VERTICAL GUST SPEED|m/s|1|0|10|m/s|1|4
+011037|turbulenceIndex|table|TURBULENCE INDEX|CODE TABLE|0|0|6|CODE TABLE|0|2
+011038|timeOfOccurrenceOfPeakEddyDissipationRate|table|TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|5|CODE TABLE|0|2
+011039|extendedTimeOfOccurrenceOfPeakEddyDissipationRate|table|EXTENDED TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|6|CODE TABLE|0|2
+011040|maximumWindSpeedMeanWind|double|MAXIMUM WIND SPEED (MEAN WIND)|m/s|1|0|12|m/s|1|4
+011041|maximumWindGustSpeed|double|MAXIMUM WIND GUST SPEED|m/s|1|0|12|m/s|1|4
+011042|maximumWindSpeed10MinuteMeanWind|double|MAXIMUM WIND SPEED (10-MIN MEAN WIND)|m/s|1|0|12|m/s|1|4
+011043|maximumWindGustDirection|long|MAXIMUM WIND GUST DIRECTION|deg|0|0|9|deg|0|3
+011044|meanWindDirectionForSurfaceTo1500M|long|MEAN WIND DIRECTION FOR SURFACE - 1500 M (5000 FEET)|deg|0|0|9|deg|0|3
+011045|meanWindSpeedForSurfaceTo1500M|double|MEAN WIND SPEED FOR SURFACE - 1500 M (5000 FEET)|m/s|1|0|12|m/s|1|4
+011046|maximumInstantaneousWindSpeed|double|MAXIMUM INSTANTANEOUS WIND SPEED|m/s|1|0|12|m/s|1|4
+011047|maximumInstantaneousWindSpeedOver10Minutes|double|MAXIMUM INSTANTANEOUS WIND SPEED OVER 10 MINUTES|m/s|1|0|12|m/s|1|4
+011049|windDirectionStandardDeviation|long|STANDARD DEVIATION OF WIND DIRECTION|deg|0|0|9|deg|0|3
+011050|standardDeviationOfHorizontalWindSpeed|double|STANDARD DEVIATION OF HORIZONTAL WIND SPEED|m/s|1|0|12|m/s|1|4
+011051|standardDeviationOfVerticalWindSpeed|double|STANDARD DEVIATION OF VERTICAL WIND SPEED|m/s|1|0|8|m/s|1|3
+011052|formalUncertaintyInWindSpeed|double|FORMAL UNCERTAINTY IN WIND SPEED|m/s|2|0|13|m/s|2|5
+011053|formalUncertaintyInWindDirection|double|FORMAL UNCERTAINTY IN WIND DIRECTION|deg|2|0|15|deg|2|5
+011054|meanWindDirectionFor1500To3000M|long|MEAN WIND DIRECTION FOR 1500 M - 3000 M|deg|0|0|9|deg|0|3
+011055|meanWindSpeedFor1500To3000M|double|MEAN WIND SPEED FOR 1500 M - 3000 M|m/s|1|0|12|m/s|1|4
+011061|absoluteWindShearIn1KmLayerBelow|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW|m/s|1|0|12|m/s|1|4
+011062|absoluteWindShearIn1KmLayerAbove|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE|m/s|1|0|12|m/s|1|4
+011070|designatorOfRunwayAffectedByWindShearIncludingAll|string|DESIGNATOR OF THE RUNWAY AFFECTED BY WIND SHEAR (INCLUDING ALL)|CCITT IA5|0|0|32|Character|0|4
+011071|turbulentVerticalMomentumFlux|double|TURBULENT VERTICAL MOMENTUM FLUX|m2 s-2|3|-128|14|m2 s-2|3|5
+011072|turbulentVerticalBuoyancyFlux|double|TURBULENT VERTICAL BUOYANCY FLUX|K m s-1|3|-128|11|K m s-1|3|4
+011073|turbulentKineticEnergy|double|TURBULENT KINETIC ENERGY|m2 s-2|2|-1024|13|m2 s-2|2|4
+011074|dissipationEnergy|double|DISSIPATION ENERGY|m2 s-2|2|-1024|10|m2 s-2|2|4
+011075|meanTurbulenceIntensityEddyDissipationRate|double|MEAN TURBULENCE INTENSITY (EDDY DISSIPATION RATE)|m2/3 s-1|2|0|8|m2/3 s-1|2|3
+011076|peakTurbulenceIntensityEddyDissipationRate|double|PEAK TURBULENCE INTENSITY (EDDY DISSIPATION RATE)|m2/3 s-1|2|0|8|m2/3 s-1|2|3
+011077|reportingIntervalOrAveragingTimeForEddyDissipationRate|long|REPORTING INTERVAL OR AVERAGING TIME FOR EDDY DISSIPATION RATE|s|0|0|12|s|0|4
+011081|modelWindDirectionAt10M|double|MODEL WIND DIRECTION AT 10M|deg|2|0|16|deg|2|5
+011082|modelWindSpeedAt10M|double|MODEL WIND SPEED AT 10M|m/s|2|0|14|m/s|2|4
+011083|windSpeed|long|WIND SPEED|km/h|0|0|9|km/h|0|3
+011084|windSpeed|long|WIND SPEED|kt|0|0|8|kt|0|3
+011085|maximumWindGustSpeed|long|MAXIMUM WIND GUST SPEED|km/h|0|0|9|km/h|0|3
+011086|maximumWindGustSpeed|long|MAXIMUM WIND GUST SPEED|kt|0|0|8|kt|0|3
+011095|u|double|U COMPONENT OF THE MODEL WIND VECTOR|m/s|1|-4096|13|m/s|1|4
+011096|v|double|V COMPONENT OF THE MODEL WIND VECTOR|m/s|1|-4096|13|m/s|1|4
+011097|windSpeedFromAltimeter|double|WIND SPEED FROM ALTIMETER|m/s|2|0|12|NA|0|0
+011098|windSpeedFromRadiometer|double|WIND SPEED FROM RADIOMETER|m/s|2|0|12|NA|0|0
+012001|airTemperature|double|TEMPERATURE/DRY-BULB TEMPERATURE|K|1|0|12|C|1|3
+012002|wetBulbTemperature|double|WET-BULB TEMPERATURE|K|1|0|12|C|1|3
+012003|dewpointTemperature|double|DEW-POINT TEMPERATURE|K|1|0|12|C|1|3
+012004|airTemperatureAt2M|double|DRY-BULB TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012005|wetBulbTemperatureAt2M|double|WET-BULB TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012006|dewpointTemperatureAt2M|double|DEW-POINT TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012007|virtualTemperature|double|VIRTUAL TEMPERATURE|K|1|0|12|C|1|3
+012011|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|C|1|3
+012012|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|C|1|3
+012013|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE, PAST 12 HOURS|K|1|0|12|C|1|3
+012014|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|1|0|12|C|1|3
+012015|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|1|0|12|C|1|3
+012016|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|1|0|12|C|1|3
+012017|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|1|0|12|C|1|3
+012021|maximumTemperatureAt2M|double|MAXIMUM TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012022|minimumTemperatureAt2M|double|MINIMUM TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012023|temperature|long|TEMPERATURE|C|0|-99|8|C|0|2
+012024|dewpointTemperature|long|DEW POINT TEMPERATURE|C|0|-99|8|C|0|2
+012030|soilTemperature|double|SOIL TEMPERATURE|K|1|0|12|C|1|3
+012049|temperatureChangeOverSpecifiedPeriod|long|TEMPERATURE CHANGE OVER SPECIFIED PERIOD|K|0|-30|6|C|0|2
+012051|standardDeviationTemperature|double|STANDARD DEVIATION TEMPERATURE|K|1|0|10|C|1|3
+012052|highestDailyMeanTemperature|double|HIGHEST DAILY MEAN TEMPERATURE|K|1|0|12|C|1|3
+012053|lowestDailyMeanTemperature|double|LOWEST DAILY MEAN TEMPERATURE|K|1|0|12|C|1|3
+012061|skinTemperature|double|SKIN TEMPERATURE|K|1|0|12|C|1|3
+012062|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|1|0|12|C|1|3
+012063|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|1|0|12|C|1|3
+012064|instrumentTemperature|double|INSTRUMENT TEMPERATURE|K|1|0|12|K|1|4
+012065|standardDeviationBrightnessTemperature|double|STANDARD DEVIATION BRIGHTNESS TEMPERATURE|K|1|0|12|K|1|4
+012070|warmLoadTemperature|double|WARM LOAD TEMPERATURE|K|2|0|16|K|2|5
+012071|coldestClusterTemperature|double|COLDEST CLUSTER TEMPERATURE|K|1|0|12|K|1|4
+012072|radiance|double|RADIANCE|W m-2 sr-1|6|0|31|W m-2 sr-1|6|9
+012073|temperature|double|TEMPERATURE|K|2|0|16|K|1|4
+012075|spectralRadiance|long|SPECTRAL RADIANCE|W m-3 sr-1|-3|0|16|W m-3 sr-1|-3|5
+012076|radiance|double|RADIANCE|W m-2 sr-1|3|0|16|W m-2 sr-1|3|5
+012080|brightnessTemperatureRealPart|double|BRIGHTNESS TEMPERATURE REAL PART|K|2|-10000|16|K|2|5
+012081|brightnessTemperatureImaginaryPart|double|BRIGHTNESS TEMPERATURE IMAGINARY PART|K|2|-10000|16|K|2|5
+012082|pixelRadiometricAccuracy|double|PIXEL RADIOMETRIC ACCURACY|K|2|0|12|K|2|4
+012101|airTemperature|double|TEMPERATURE/DRY-BULB TEMPERATURE|K|2|0|16|C|2|4
+012102|wetBulbTemperature|double|WET-BULB TEMPERATURE|K|2|0|16|C|2|4
+012103|dewpointTemperature|double|DEW-POINT TEMPERATURE|K|2|0|16|C|2|4
+012104|airTemperatureAt2M|double|DRY-BULB TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012105|webBulbTemperatureAt2M|double|WEB-BULB TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012106|dewpointTemperatureAt2M|double|DEW-POINT TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012107|virtualTemperature|double|VIRTUAL TEMPERATURE|K|2|0|16|C|2|4
+012111|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|2|0|16|C|2|4
+012112|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|2|0|16|C|2|4
+012113|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE, PAST 12 HOURS|K|2|0|16|C|2|4
+012114|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2M, PAST 12 HOURS|K|2|0|16|C|2|4
+012115|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2M, PAST 12 HOURS|K|2|0|16|C|2|4
+012116|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2M, PAST 24 HOURS|K|2|0|16|C|2|4
+012117|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2M, PAST 24 HOURS|K|2|0|16|C|2|4
+012118|maximumTemperatureAtHeightSpecifiedPast24Hours|double|MAXIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS|K|2|0|16|C|2|4
+012119|minimumTemperatureAtHeightSpecifiedPast24Hours|double|MINIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS|K|2|0|16|C|2|4
+012121|groundMinimumTemperature|double|GROUND MINIMUM TEMPERATURE|K|2|0|16|C|2|4
+012122|groundMinimumTemperatureOfPrecedingNight|double|GROUND MINIMUM TEMPERATURE OF THE PRECEDING NIGHT|K|2|0|16|C|2|4
+012130|soilTemperature|double|SOIL TEMPERATURE|K|2|0|16|C|2|4
+012151|dailyMeanTemperatureStandardDeviation|double|STANDARD DEVIATION OF DAILY MEAN TEMPERATURE|K|2|0|12|C|2|4
+012152|highestDailyMeanTemperature|double|HIGHEST DAILY MEAN TEMPERATURE|K|2|0|16|C|2|4
+012153|lowestDailyMeanTemperature|double|LOWEST DAILY MEAN TEMPERATURE|K|2|0|16|C|2|4
+012161|skinTemperature|double|SKIN TEMPERATURE|K|2|0|16|C|2|4
+012162|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|2|0|16|C|2|4
+012163|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|2|0|16|C|2|4
+012164|instrumentTemperature|double|INSTRUMENT TEMPERATURE|K|2|0|16|K|2|5
+012165|directSunBrightnessTemperature|long|DIRECT SUN BRIGHTNESS TEMPERATURE|K|0|0|23|K|0|7
+012166|snapshotAccuracy|double|SNAPSHOT ACCURACY|K|1|-4000|13|K|1|4
+012167|radiometricAccuracyPurePolarization|double|RADIOMETRIC ACCURACY (PURE POLARISATION)|K|1|0|9|K|1|3
+012168|radiometricAccuracyCrossPolarization|double|RADIOMETRIC ACCURACY ( CRESS POLARISATION )|K|1|0|9|K|1|3
+012171|coldestClusterTemperature|double|COLDEST CLUSTER TEMPERATURE|K|2|0|16|K|2|5
+012180|averaged12MicronBtForAllClearPixelsAtNadir|double|AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012181|averaged11MicronBtForAllClearPixelsAtNadir|double|AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012182|averaged37MicronBtForAllClearPixelsAtNadir|double|AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012183|averaged12MicronBtForAllClearPixelsForwardView|double|AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012184|averaged11MicronBtForAllClearPixelsForwardView|double|AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012185|averaged37MicronBtForAllClearPixelsForwardView|double|AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012186|meanNadirSeaSurfaceTemperature|double|MEAN NADIR SEA SURFACE TEMPERATURE|K|2|0|16|K|2|5
+012187|meanDualViewSeaSurfaceTemperature|double|MEAN DUAL VIEW SEA SURFACE TEMPERATURE|K|2|0|16|K|2|5
+012188|interpolated238GhzBrightnessTFromMwr|double|INTERPOLATED 23.8 GHZ BRIGHTNESS T FROM MWR|K|2|0|16|K|2|5
+012189|interpolated365GhzBrightnessTFromMwr|double|INTERPOLATED 36.5 GHZ BRIGHTNESS T FROM MWR|K|2|0|16|K|2|5
+013001|specificHumidity|double|SPECIFIC HUMIDITY|kg/kg|5|0|14|kg/kg|5|5
+013002|mixingRatio|double|MIXING RATIO|kg/kg|5|0|14|kg/kg|5|5
+013003|relativeHumidity|long|RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013004|vapourPressure|long|VAPOUR PRESSURE|Pa|-1|0|10|Pa|-1|4
+013005|vapourDensity|double|VAPOUR DENSITY|kg m-3|3|0|7|kg m-3|3|3
+013006|mixingHeights|long|MIXING HEIGHTS|m|-1|-40|16|m|-1|5
+013007|minimumRelativeHumidity|long|MINIMUM RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013008|maximumRelativeHumidity|long|MAXIMUM RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013009|relativeHumidity|double|RELATIVE HUMIDITY|%|1|-1000|12|%|1|4
+013011|totalPrecipitationOrTotalWaterEquivalent|double|TOTAL PRECIPITATION/TOTAL WATER EQUIVALENT|kg m-2|1|-1|14|kg m-2|1|5
+013012|depthOfFreshSnow|double|DEPTH OF FRESH SNOW|m|2|-2|12|m|2|4
+013013|totalSnowDepth|double|TOTAL SNOW DEPTH|m|2|-2|16|m|2|5
+013014|rainfallOrWaterEquivalentOfSnowAveragedRate|double|RAINFALL/WATER EQUIVALENT OF SNOW (AVERAGED RATE)|kg m-2 s-1|4|0|12|kg m-2 s-1|4|4
+013015|snowfallAveragedRate|double|SNOWFALL (AVERAGED RATE)|m/s|7|0|12|m/s|7|4
+013016|precipitableWater|long|PRECIPITABLE WATER|kg m-2|0|0|7|kg m-2|0|3
+013019|totalPrecipitationPast1Hour|double|TOTAL PRECIPITATION PAST 1 HOUR|kg m-2|1|-1|14|kg m-2|1|4
+013020|totalPrecipitationPast3Hours|double|TOTAL PRECIPITATION PAST 3 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013021|totalPrecipitationPast6Hours|double|TOTAL PRECIPITATION PAST 6 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013022|totalPrecipitationPast12Hours|double|TOTAL PRECIPITATION PAST 12 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013023|totalPrecipitationPast24Hours|double|TOTAL PRECIPITATION PAST 24 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013031|evapotranspiration|long|EVAPOTRANSPIRATION|kg m-2|0|0|7|kg m-2|0|3
+013032|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|8|kg m-2|1|3
+013033|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|10|kg m-2|1|4
+013038|superadiabaticIndicator|table|SUPERADIABATIC INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+013039|terrainTypeIceOrSnow|table|TERRAIN TYPE (ICE/SNOW)|CODE TABLE|0|0|3|CODE TABLE|0|1
+013040|surfaceFlag|table|SURFACE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+013041|pasquillGiffordStabilityCategory|table|PASQUILL-GIFFORD STABILITY CATEGORY|CODE TABLE|0|0|4|CODE TABLE|0|2
+013042|parcelLiftedIndexTo500Hpa|long|PARCEL LIFTED INDEX (TO 500 HPA)|K|0|-20|6|K|0|2
+013043|bestLiftedIndexTo500Hpa|long|BEST LIFTED INDEX (TO 500 HPA)|K|0|-20|6|K|0|2
+013044|kIndex|long|K INDEX|K|0|-30|8|K|0|3
+013045|koIndex|long|KO INDEX|K|0|-30|8|K|0|3
+013046|maximumBuoyancy|long|MAXIMUM BUOYANCY|K|0|-30|8|K|0|3
+013047|modifiedShowalterStabilityIndex|long|MODIFIED SHOWALTER STABILITY INDEX|K|0|-60|6|C|0|2
+013048|waterFraction|double|WATER FRACTION|%|1|0|10|%|1|4
+013051|frequencyGroupPrecipitation|table|FREQUENCY GROUP, PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013052|highestDailyAmountOfPrecipitation|double|HIGHEST DAILY AMOUNT OF PRECIPITATION|kg m-2|1|-1|14|kg m-2|1|5
+013055|intensityOfPrecipitation|double|INTENSITY OF PRECIPITATION|kg m-2 s-1|4|0|8|mm/h|1|3
+013056|characterAndIntensityOfPrecipitation|table|CHARACTER AND INTENSITY OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013057|timeOfBeginningOrEndOfPrecipitation|table|TIME OF BEGINNING OR END OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013058|sizeOfPrecipitatingElement|double|SIZE OF PRECIPITATING ELEMENT|m|4|0|7|mm|1|3
+013059|numberOfFlashesThunderstorm|long|NUMBER OF FLASHES (THUNDERSTORM)|Numeric|0|0|7|Numeric|0|3
+013060|totalAccumulatedPrecipitation|double|TOTAL ACCUMULATED PRECIPITATION|kg m-2|1|-1|17|kg m-2|1|5
+013071|upstreamWaterLevel|double|UPSTREAM WATER LEVEL|m|2|0|14|m|2|5
+013072|downstreamWaterLevel|double|DOWNSTREAM WATER LEVEL|m|2|0|14|m|2|4
+013073|maximumWaterLevel|double|MAXIMUM WATER LEVEL|m|2|0|14|m|2|4
+013080|waterPh|double|WATER PH|pH unit|1|0|10|pH unit|1|3
+013081|waterConductivity|double|WATER CONDUCTIVITY|S/m|3|0|14|S/m|3|4
+013082|waterTemperature|double|WATER TEMPERATURE|K|1|0|12|K|1|4
+013083|dissolvedOxygen|double|DISSOLVED OXYGEN|kg m-3|6|0|15|kg m-3|6|5
+013084|turbidity|long|TURBIDITY|lm|0|0|14|lm|0|4
+013085|oxidationReductionPotential|double|OXYDATION REDUCTION POTENTIAL (ORP)|V|3|0|14|V|3|4
+013090|radiometerWaterVapourContent|double|RADIOMETER WATER VAPOUR CONTENT|kg m-2|1|0|10|kg m-2|1|4
+013091|radiometerLiquidContent|double|RADIOMETER LIQUID CONTENT|kg m-2|2|0|8|kg m-2|2|3
+013093|cloudOpticalThickness|long|CLOUD OPTICAL THICKNESS|Numeric|0|0|8|Numeric|0|3
+013095|totalColumnWaterVapour|double|TOTAL COLUMN WATER VAPOUR|kg m-2|4|0|19|kg m-2|4|6
+013096|mwrWaterVapourContent|double|MWR WATER VAPOUR CONTENT|kg m-2|2|0|14|kg m-2|2|4
+013097|mwrLiquidWaterContent|double|MWR LIQUID WATER CONTENT|kg m-2|2|0|14|kg m-2|2|4
+013098|integratedWaterVapourDensity|double|INTEGRATED WATER VAPOUR DENSITY|kg m-2|8|0|30|kg m-2|8|10
+014001|longWaveRadiationIntegratedOver24Hours|long|LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014002|longWaveRadiationIntegratedOverPeriodSpecified|long|LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014003|shortWaveRadiationIntegratedOver24Hours|long|SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014004|shortWaveRadiationIntegratedOverPeriodSpecified|long|SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014011|netLongWaveRadiationIntegratedOver24Hours|long|NET LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014012|netLongWaveRadiationIntegratedOverPeriodSpecified|long|NET LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014013|netShortWaveRadiation24Hours|long|NET SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014014|netShortWaveRadiationIntegratedOverPeriodSpecified|long|NET SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014015|netRadiationIntegratedOver24Hours|long|NET RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|-16384|15|J m-2|-4|5
+014016|netRadiationIntegratedOverPeriodSpecified|long|NET RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|-16384|15|J m-2|-4|5
+014017|instantaneousLongWaveRadiation|long|INSTANTANEOUS LONG-WAVE RADIATION (SEE NOTE 6)|W m-2|-3|-2048|12|W m-2|-3|4
+014018|instantaneousShortWaveRadiation|long|INSTANTANEOUS SHORT-WAVE RADIATION (SEE NOTE 6)|W m-2|-3|-2048|12|W m-2|-3|4
+014019|surfaceAlbedo|long|SURFACE ALBEDO|%|0|0|7|%|0|3
+014020|globalSolarRadiation24Hours|long|GLOBAL SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014021|globalSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014022|diffuseSolarRadiationIntegratedOver24Hours|long|DIFFUSE SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014023|diffuseSolarRadiationIntegratedOverPeriodSpecified|long|DIFFUSE SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014024|directSolarRadiationIntegratedOver24Hours|long|DIRECT SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014025|directSolarRadiationIntegratedOverPeriodSpecified|long|DIRECT SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014026|cloudTopAlbedo|long|ALBEDO AT THE TOP OF CLOUDS|%|0|0|7|%|0|3
+014027|albedo|long|ALBEDO|%|0|0|7|%|0|3
+014028|globalSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD S|J m-2|-2|0|16|J m-2|-2|5
+014029|diffuseSolarRadiationIntegratedOverPeriodSpecified|long|DIFFUSE SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD|J m-2|-2|0|16|J m-2|-2|5
+014030|directSolarRadiationIntegratedOverPeriodSpecified|long|DIRECT SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD S|J m-2|-2|0|16|J m-2|-2|5
+014031|totalSunshine|long|TOTAL SUNSHINE|min|0|0|11|min|0|4
+014032|totalSunshine|long|TOTAL SUNSHINE|h|0|0|10|h|0|4
+014033|totalSunshine|long|TOTAL SUNSHINE|%|0|0|9|%|0|3
+014034|sunshineOverPeriodSpecified|long|SUNSHINE OVER PERIOD SPECIFIED|min|0|0|11|min|0|4
+014042|bidirectionalReflectance|long|BI-DIRECTIONAL REFLECTANCE|%|0|0|7|%|0|3
+014045|channelRadiance|long|CHANNEL RADIANCE|W m-2 sr-1 cm|0|0|11|W m-2 sr-1 cm|0|4
+014046|scaledIasiRadiance|long|SCALED IASI RADIANCE|W m-2 sr-1 m|0|-5000|16|W m-2 sr-1 m|0|5
+014047|scaledMeanAvhrrRadiance|long|SCALED MEAN AVHRR RADIANCE|W m-2 sr-1 m|0|0|31|W m-2 sr-1 m|0|10
+014048|scaledStandardDeviationAvhrrRadiance|long|SCALED STANDARD DEVIATION RADIANCE|W m-2 sr-1 m|0|0|31|W m-2 sr-1 m|0|10
+014050|emissivity|double|EMISSIVITY (SEE NOTE 5)|%|1|0|10|%|1|4
+014051|directSolarRadiationIntegratedOverLastHour|long|DIRECT SOLAR RADIATION INTEGRATED OVER LAST HOUR|J m-2|-3|0|14|J m-2|-3|4
+014055|solarActivityIndex|long|SOLAR ACTIVITY INDEX|Numeric|0|-32768|16|Numeric|0|5
+014061|instantaneousLongWaveRadiation|long|(VAL) INSTANTANEOUS LONG-WAVE RADIATION|W m-2|0|-512|10|W m-2|0|4
+014062|instantaneousShortWaveRadiation|long|(VAL) INSTANTANEOUS SHORT-WAVE RADIATION|W m-2|0|-2048|12|W m-2|0|4
+015001|totalOzone|long|TOTAL OZONE|DU|0|0|10|DU|0|4
+015002|airMassSlantPathAt22Km|long|AIR MASS (SLANT PATH AT 22 KM)|Numeric|2|0|10|Numeric|2|3
+015003|measuredOzonePartialPressureSounding|double|MEASURED OZONE PARTIAL PRESSURE (SOUNDING)|Pa|4|0|9|nbar|0|3
+015004|ozoneSoundingCorrectionFactor|long|OZONE SOUNDING CORRECTION FACTOR|Numeric|3|0|11|Numeric|3|4
+015005|ozoneP|long|OZONE P|DU|0|0|10|DU|0|3
+015008|significandOfVolumetricMixingRatio|long|SCALED MIXING RATIO|Numeric|0|0|10|Numeric|0|4
+015011|log10IntegratedElectronDensity|double|LOG 10 OF INTEGRATED ELECTRON DENSITY|log (m-2)|3|14000|13|log (m-2)|3|4
+015012|totalElectronCountPerSquareMetre|long|TOTAL ELECTRON COUNT PER SQUARE METER|m-2|-16|0|6|m-2|-16|2
+015015|maxImageSpectralComponentBeforeNormalization|long|MAXIMUM IMAGE SPECTRAL COMPONENT BEFORE NORMALIZATION|Numeric|0|0|31|Numeric|0|10
+015020|integratedOzoneDensity|double|INTEGRATED 03 DENSITY|kg m-2|8|0|21|kg m-2|8|7
+015021|integratedMassDensity|double|INTEGRATED MASS DENSITY|kg m-2|11|0|31|kg m-2|11|10
+015024|opticalDepth|long|OPTICAL DEPTH|Numeric|4|0|24|Numeric|4|8
+015025|pollutantType|table|TYPE OF POLLUTANT|CODE TABLE|0|0|4|CODE TABLE|0|2
+015026|moleFractionOfPollutant|double|CONCENTRATION OF POLLUTANT|mol/mol|9|0|9|mol/mol|9|3
+015027|massConcentrationOfPollutant|double|CONCENTRATION OF POLLUTANT|kg m-3|9|0|10|kg m-3|9|4
+015030|aerosolContaminationIndex|long|AEROSOL CONTAMINATION INDEX|Numeric|2|-1000|12|Numeric|2|4
+015031|atmosphericPathDelayInSatelliteSignal|double|ATMOSPHERIC PATH DELAY IN SATELLITE SIGNAL|m|4|10000|15|m|4|5
+015032|estimatedErrorInAtmosphericPathDelay|double|ESTIMATED ERROR IN ATMOSPHERIC PATH DELAY|m|4|0|10|m|4|4
+015033|differenceInPathDelaysForLimbViewsAtExtremesOfScan|double|DIFFERENCE IN PATH DELAYS FOR LIMB VIEWS AT EXTREMES OF SCAN|m|5|-10000|15|m|5|5
+015034|estimatedErrorInPathDelayDifference|double|ESTIMATED ERROR IN PATH DELAY DIFFERENCE|m|5|0|14|m|5|5
+015035|componentOfZenithPathDelayDueToWaterVapour|double|COMPONENT OF ZENITH PATH DELAY DUE TO WATER VAPOUR|m|4|0|14|m|4|5
+015036|atmosphericRefractivity|double|ATMOSPHERIC REFRACTIVITY (SEE NOTE 5)|N units|3|0|19|N units|3|6
+015037|bendingAngle|double|BENDING ANGLE|rad|8|-100000|23|rad|8|7
+019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
+019002|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-2|0|12|m|-2|4
+019003|windSpeedThreshold|long|WIND SPEED THRESHOLD|m/s|0|0|8|m/s|0|3
+019004|effectiveRadiusWithRespectToWindSpeedsAboveThreshold|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD|m|-2|0|12|m|-2|4
+019005|featureDirectionOfMotion|long|DIRECTION OF MOTION OF FEATURE|deg|0|0|9|deg|0|3
+019006|speedOfMotionOfFeature|double|SPEED OF MOTION OF FEATURE|m/s|2|0|14|m/s|2|5
+019007|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-3|0|12|m|-3|4
+019008|verticalExtentOfCirculation|table|VERTICAL EXTENT OF CIRCULATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+019009|effectiveRadiusWithRespectToWindSpeedsAboveThresholdLargeStorms|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD (LA|m|-3|0|12|m|-3|4
+019010|methodForTrackingCentreOfSynopticFeature|table|METHOD FOR TRACKING THE CENTRE OF SYNOPTIC FEATURE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019100|timeIntervalToCalculateMovementOfTropicalCyclone|table|TIME INTERVAL TO CALCULATE THE MOVEMENT OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019101|accuracyOfPositionOfCentreOfTropicalCyclone|table|ACCURACY OF THE POSITION OF THE CENTRE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019102|shapeAndDefinitionOfEyeOfTropicalCyclone|table|SHAPE AND DEFINITION OF THE EYE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|3|CODE TABLE|0|1
+019103|diameterOfMajorAxisOfEyeOfTropicalCyclone|table|DIAMETER OF MAJOR AXIS OF THE EYE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019104|changeInCharacterOfEyeDuring30Minutes|table|CHANGE IN CHARACTER OF THE EYE DURING THE 30 MINUTES|CODE TABLE|0|0|4|CODE TABLE|0|2
+019105|distanceBetweenEndOfSpiralBandAndCentre|table|DISTANCE BETWEEN THE END OF SPIRAL BAND AND THE CENTRE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019106|identificationNumberOfTropicalCyclone|long|IDENTIFICATION NUMBER OF TROPICAL CYCLONE|Numeric|0|0|7|Numeric|0|3
+019107|timeIntervalOverWhichMovementOfTropicalCycloneHasBeenCalculated|table|TIME INTERVAL OF THE TROPICAL CYCLONE ANALYSIS|CODE TABLE|0|0|4|CODE TABLE|0|2
+019108|accuracyOfGeographicalPositionOfTropicalCyclone|table|ACCURACY OF GEOGRAPHICAL POSITION OF THE TROPICAL CYCLONE|CODE TABLE|0|0|3|CODE TABLE|0|1
+019109|meanDiameterOfOvercastCloudOfTropicalCyclone|table|MEAN DIAMETER OF THE OVERCAST CLOUD OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019110|apparent24HourChangeInIntensityOfTropicalCyclone|table|APPARENT 24-HOUR CHANGE IN INTENSITY OF TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019111|currentIntensityNumberOfTropicalCyclone|long|CURRENT INTENSITY (CI) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019112|dataTropicalNumberOfTropicalCyclone|long|DATA TROPICAL (DT) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019113|cloudPatternTypeOfDtNumber|table|CLOUD PATTERN TYPE OF THE DT- NUMBER|CODE TABLE|0|0|4|CODE TABLE|0|2
+019114|modelExpectedTropicalNumberOfTropicalCyclone|long|MODEL EXPECTED TROPICAL (MET) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019115|trendOfPast24HourChangeDevelopedWeakened|long|TREND OF PAST 24-HOUR CHANGE (+: DEVELOPED, -: WEAKENED)|Numeric|1|-30|6|Numeric|1|2
+019116|patternTropicalNumberOfTropicalCyclone|long|PATTERN TROPICAL (PT) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019117|cloudPictureTypeOfPtNumber|table|CLOUD PICTURE TYPE OF THE PT- NUMBER|CODE TABLE|0|0|3|CODE TABLE|0|1
+019118|finalTropicalNumberOfTropicalCyclone|long|FINAL TROPICAL (T) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019119|finalTNumberType|table|TYPE OF THE FINAL T-NUMBER|CODE TABLE|0|0|3|CODE TABLE|0|1
+019150|typhoonInternationalCommonNumberTyphoonCommittee|string|TYPHOON INTERNATIONAL COMMON NUMBER (TYPHOON COMMITTEE)|CCITT IA5|0|0|32|Character|0|4
+020001|horizontalVisibility|long|HORIZONTAL VISIBILITY|m|-1|0|13|m|-1|4
+020002|verticalVisibility|long|VERTICAL VISIBILITY|m|-1|0|7|m|-1|3
+020003|presentWeather|table|PRESENT WEATHER (SEE NOTE 1)|CODE TABLE|0|0|9|CODE TABLE|0|3
+020004|pastWeather1|table|PAST WEATHER (1) (SEE NOTE 2)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020005|pastWeather2|table|PAST WEATHER (2) (SEE NOTE 2)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020008|cloudDistributionForAviation|table|CLOUD DISTRIBUTION FOR AVIATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020009|generalWeatherIndicatorTafOrMetar|table|GENERAL WEATHER INDICATOR (TAF/METAR)|CODE TABLE|0|0|4|CODE TABLE|0|2
+020010|cloudCoverTotal|long|CLOUD COVER (TOTAL)|%|0|0|7|%|0|3
+020011|cloudAmount|table|CLOUD AMOUNT|CODE TABLE|0|0|4|CODE TABLE|0|2
+020012|cloudType|table|CLOUD TYPE|CODE TABLE|0|0|6|CODE TABLE|0|2
+020013|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|m|-1|-40|11|m|-1|4
+020014|heightOfTopOfCloud|long|HEIGHT OF TOP OF CLOUD|m|-1|-40|11|m|-1|4
+020015|pressureAtBaseOfCloud|long|PRESSURE AT BASE OF CLOUD|Pa|-1|0|14|Pa|-1|5
+020016|pressureAtTopOfCloud|long|PRESSURE AT TOP OF CLOUD|Pa|-1|0|14|Pa|-1|5
+020017|cloudTopDescription|table|CLOUD TOP DESCRIPTION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020018|tendencyOfRunwayVisualRange|table|TENDENCY OF RUNWAY VISUAL RANGE|CODE TABLE|0|0|2|CODE TABLE|0|1
+020019|significantWeather|string|SIGNIFICANT PRESENT OR FORECAST WEATHER|CCITT IA5|0|0|72|Character|0|9
+020020|significantRecentWeatherPhenomena|string|SIGNIFICANT RECENT WEATHER PHENOMENA|CCITT IA5|0|0|32|Character|0|4
+020021|precipitationType|flag|TYPE OF PRECIPITATION|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+020022|characterOfPrecipitation|table|CHARACTER OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020023|otherWeatherPhenomena|flag|OTHER WEATHER PHENOMENA|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+020024|intensityOfPhenomena|table|INTENSITY OF PHENOMENA|CODE TABLE|0|0|3|CODE TABLE|0|1
+020025|obscuration|flag|OBSCURATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+020026|characterOfObscuration|table|CHARACTER OF OBSCURATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020027|phenomenaOccurrence|flag|PHENOMENA OCCURRENCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+020028|expectedChangeInIntensity|table|EXPECTED CHANGE IN INTENSITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+020029|rainFlag|table|RAIN FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+020031|iceDepositThickness|double|ICE DEPOSIT (THICKNESS)|m|2|0|7|m|2|3
+020032|rateOfIceAccretionEstimated|table|RATE OF ICE ACCRETION|CODE TABLE|0|0|3|CODE TABLE|0|1
+020033|causeOfIceAccretion|flag|CAUSE OF ICE ACCRETION|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+020034|seaIceConcentration|table|SEA ICE CONCENTRATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020035|amountAndTypeOfIce|table|AMOUNT AND TYPE OF ICE|CODE TABLE|0|0|4|CODE TABLE|0|2
+020036|iceSituation|table|ICE SITUATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020037|iceDevelopment|table|ICE DEVELOPMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+020038|iceEdgeBearing|long|BEARING OF ICE EDGE (SEE NOTE 3)|deg|0|0|12|deg|0|3
+020039|iceDistance|long|ICE DISTANCE|m|-1|0|13|m|-1|4
+020040|evolutionOfDriftSnow|table|EVOLUTION OF DRIFT OF SNOW|CODE TABLE|0|0|4|CODE TABLE|0|2
+020041|airframeIcing|table|AIRFRAME ICING|CODE TABLE|0|0|4|CODE TABLE|0|2
+020042|airframeIcingPresent|table|AIRFRAME ICING PRESENT|CODE TABLE|0|0|2|CODE TABLE|0|1
+020043|peakLiquidWaterContent|double|PEAK LIQUID WATER CONTENT|kg m-3|4|0|7|kg m-3|4|2
+020044|averageLiquidWaterContent|double|AVERAGE LIQUID WATER CONTENT|kg m-3|4|0|7|kg m-3|4|2
+020045|supercooledLargeDropletConditions|table|SUPERCOOLED LARGE DROPLET (SLD) CONDITIONS|CODE TABLE|0|0|2|CODE TABLE|0|2
+020048|evolutionOfFeature|table|EVOLUTION OF FEATURE|CODE TABLE|0|0|4|CODE TABLE|2|2
+020050|cloudIndex|table|CLOUD INDEX|CODE TABLE|0|0|8|CODE TABLE|0|3
+020051|amountOfLowClouds|long|AMOUNT OF LOW CLOUDS|%|0|0|7|%|0|3
+020052|amountOfMiddleClouds|long|AMOUNT OF MIDDLE CLOUDS|%|0|0|7|%|0|3
+020053|amountOfHighClouds|long|AMOUNT OF HIGH CLOUDS|%|0|0|7|%|0|3
+020054|trueDirectionFromWhichAPhenomenonOrCloudsAreMovingOrInWhichTheyAreObserved|long|TRUE DIRECTION FROM WHICH CLOUDS ARE MOVING|deg|0|0|9|deg|0|3
+020055|stateOfSkyInTropics|table|STATE OF SKY IN TROPICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020056|cloudPhase|table|CLOUD PHASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+020059|minimumHorizontalVisibility|long|MINIMUM HORIZONTAL VISIBILITY|m|-1|0|9|m|-1|3
+020060|prevailingHorizontalVisibility|long|PREVAILING HORIZONTAL VISIBILITY|m|-1|0|10|m|-1|4
+020061|runwayVisualRangeRvr|long|RUNWAY VISUAL RANGE (RVR)|m|0|0|12|m|0|4
+020062|stateOfGround|table|STATE OF THE GROUND (WITH OR WITHOUT SNOW)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020063|specialPhenomena|table|SPECIAL PHENOMENA|CODE TABLE|0|0|10|CODE TABLE|0|4
+020065|snowCover|long|SNOW COVER (SEE NOTE 4)|%|0|0|7|%|0|3
+020066|maximumDiameterOfHailstones|double|MAXIMUM DIAMETER OF HAILSTONES|m|3|0|8|m|3|3
+020067|diameterOfDeposit|double|DIAMETER OF DEPOSIT|m|3|0|9|m|3|3
+020070|minimumNumberOfAtmospherics|long|MINIMUM NUMBER OF ATMOSPHERICS|Numeric|0|0|7|Numeric|0|3
+020071|accuracyOfFixAndRateOfAtmospherics|table|ACCURACY OF FIX AND RATE OF ATMOSPHERICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020081|cloudAmountInSegment|long|CLOUD AMOUNT IN SEGMENT|%|0|0|7|%|0|3
+020082|amountSegmentCloudFree|long|AMOUNT SEGMENT CLOUD FREE|%|0|0|7|%|0|3
+020083|amountOfSegmentCoveredByScene|long|AMOUNT OF SEGMENT COVERED BY SCENE|%|0|0|7|%|0|3
+020085|generalConditionOfRunway|table|GENERAL CONDITION OF RUNWAY|CODE TABLE|0|0|4|CODE TABLE|0|1
+020086|runwayDeposits|table|RANWAY DEPOSITS|CODE TABLE|0|0|4|CODE TABLE|0|1
+020087|runwayContamination|table|RUNWAY CONTAMINATION|CODE TABLE|0|0|4|CODE TABLE|0|1
+020088|depthOfRunwayDeposits|double|DEPTH OF RANWAY DEPOSITS|m|3|0|12|m|3|4
+020089|runwayFrictionCoefficient|table|RUNWAY FRICTION COEFICIENT|CODE TABLE|0|0|7|CODE TABLE|0|2
+020090|specialClouds|table|SPECIAL CLOUDS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020091|verticalVisibility|long|VERTICAL VISIBILITY|ft|-2|0|10|ft|-2|3
+020092|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|ft|-2|0|10|ft|-2|3
+020095|iceProbability|long|ICE PROBABILITY|Numeric|3|0|10|Numeric|3|4
+020096|iceAgeAParameter|double|ICE AGE ("A" PARAMETER)|dB|2|-4096|13|dB|2|4
+020101|locustAcridianName|table|LOCUST (ACRIDIAN) NAME|CODE TABLE|0|0|4|CODE TABLE|0|2
+020102|locustMaturityColour|table|LOCUST (MATURITY) COLOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+020103|stageOfDevelopmentOfLocusts|table|STAGE OF DEVELOPMENT OF LOCUSTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020104|organizationStateOfSwarm|table|ORGANIZATION STATE OF SWARM OR BAND OF LOCUSTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020105|sizeOfSwarmOrBandOfLocustsAndDurationOfPassageOfSwarm|table|SIZE OF SWARM OR BAND OF LOCUSTS AND DURATION OF PASSAGE OF SWAR|CODE TABLE|0|0|4|CODE TABLE|0|2
+020106|locustPopulationDensity|table|LOCUST POPULATION DENSITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+020107|directionOfMovementsOfLocustSwarm|table|DIRECTION OF MOVEMENTS OF LOCUST SWARM|CODE TABLE|0|0|4|CODE TABLE|0|2
+020108|extentOfVegetation|table|EXTENT OF VEGETATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+021001|horizontalReflectivity|long|HORIZONTAL REFLECTIVITY|dB|0|-64|7|dB|0|3
+021002|verticalReflectivity|long|VERTICAL REFLECTIVITY|dB|0|-64|7|dB|0|3
+021003|differentialReflectivity|double|DIFFERENTIAL REFLECTIVITY|dB|1|-5|7|dB|1|3
+021005|linearDepolarizationRatio|long|LINEAR DEPOLARISATION RATIO|dB|0|-65|6|dB|0|2
+021006|circularDepolarizationRatio|long|CIRCULAR DEPOLARISATION RATIO|dB|0|-65|6|dB|0|2
+021011|dopplerMeanVelocityXDirection|long|DOPPLER MEAN VELOCITY IN X-DIRECTION|m/s|0|-128|8|m/s|0|3
+021012|dopplerMeanVelocityYDirection|long|DOPPLER MEAN VELOCITY IN Y-DIRECTION|m/s|0|-128|8|m/s|0|3
+021013|dopplerMeanVelocityZDirection|long|DOPPLER MEAN VELOCITY IN Z-DIRECTION|m/s|0|-128|8|m/s|0|3
+021014|dopplerMeanVelocityRadial|double|DOPPLER MEAN VELOCITY (RADIAL)|m/s|1|-4096|13|m/s|1|4
+021017|dopplerVelocitySpectralWidth|double|DOPPLER VELOCITY SPECTRAL WIDTH|m/s|1|0|8|m/s|1|3
+021021|echoTops|long|ECHO TOPS|m|-3|0|4|m|-3|2
+021030|signalToNoiseRatio|long|SIGNAL TO NOISE RATIO|dB|0|-32|8|dB|0|3
+021031|verticallyIntegratedLiquidWaterContent|long|VERTICALLY INTEGRATED LIQUID-WATER CONTENT|kg m-2|0|0|7|kg m-2|0|3
+021036|radarRainfallIntensity|double|RADAR RAINFALL INTENSITY|m/s|7|0|12|m/s|7|4
+021041|brightBandHeight|long|BRIGHT-BAND HEIGHT|m|-2|0|8|m|-2|3
+021051|signalPowerAbove1Mw|long|SIGNAL POWER ABOVE 1 MW|dB|0|-256|8|dB|0|3
+021062|backscatter|double|BACKSCATTER|dB|2|-5000|13|dB|2|4
+021063|radiometricResolutionNoiseValue|double|RADIOMETRIC RESOLUTION (NOISE VALUE)|%|1|0|10|%|1|4
+021064|clutterNoiseEstimate|long|CLUTTER NOISE ESTIMATE|Numeric|0|0|8|Numeric|0|3
+021065|missingPacketCounter|long|MISSING PACKET COUNTER|Numeric|0|-127|8|Numeric|0|3
+021066|waveScatterometerProductConfidenceData|flag|WAVE SCATTEROMETER PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+021067|windProductConfidenceData|flag|WIND PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|13|FLAG TABLE|0|5
+021068|radarAltimeterProductConfidenceData|flag|RADAR ALTIMETER PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+021069|sstProductConfidenceData|flag|SST PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|10|FLAG TABLE|0|4
+021070|sstProductConfidenceDataSadist2|flag|SST PRODUCT CONFIDENCE DATA (SADIST-2)|FLAG TABLE|0|0|23|FLAG TABLE|0|6
+021071|peakiness|long|PEAKINESS|Numeric|0|0|16|Numeric|0|5
+021072|satelliteAltimeterCalibrationStatus|flag|SATELLITE ALTIMETER CALIBRATION STATUS|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+021073|satelliteAltimeterInstrumentMode|flag|SATELLLITE ALTIMETER INSTRUMENT MODE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+021075|imageSpectrumIntensity|long|IMAGE SPECTRUM INTENSITY|Numeric|0|0|8|Numeric|0|3
+021076|representationOfIntensities|table|REPRESENTATION OF INTENSITIES|CODE TABLE|0|0|3|CODE TABLE|0|1
+021077|altitudeCorrectionIonosphere|double|ALTITUDE CORRECTION (IONOSPHERE)|m|3|0|14|m|3|5
+021078|altitudeCorrectionDryTroposphere|double|ALTITUDE CORRECTION (DRY TROPOSPHERE)|m|3|0|9|m|3|3
+021079|altitudeCorrectionWetTroposphere|double|ALTITUDE CORRECTION (WET TROPOSPHERE)|m|3|2000|10|m|3|4
+021080|altitudeCorrectionCalibrationConstant|double|ALTITUDE CORRECTION (CALIBRATION CONSTANT)|m|3|0|11|m|3|4
+021081|openLoopCorrectionHeightTimeLoop|double|OPEN LOOP CORRECTION (HEIGHT-TIME LOOP)|m|3|0|10|m|3|4
+021082|openLoopCorrectionAutoGainControl|double|OPEN LOOP CORRECTION (AUTO GAIN CONTROL)|dB|3|-3000|14|dB|3|5
+021083|warmTargetCalibration|long|WARM TARGET CALIBRATION|Numeric|0|0|16|Numeric|0|5
+021084|coldTargetCalibration|long|COLD TARGET CALIBRATION|Numeric|0|0|16|Numeric|0|5
+021085|atsrSeaSurfaceTemperatureAcrossTrackBandNumber|long|ATSR SEA SURFACE TEMPERATURE ACROSS- TRACK BAND NUMBER|Numeric|0|0|4|Numeric|0|2
+021086|numberOfPixelsInNadirOnlyAverage|long|NUMBER OF PIXELS IN NADIR ONLY, AVERAGE|Numeric|0|0|9|Numeric|0|3
+021087|numberOfPixelsInDualViewAverage|long|NUMBER OF PIXELS IN DUAL VIEW, AVERAGE|Numeric|0|0|9|Numeric|0|3
+021088|wetBackscatter|double|WET BACKSCATTER|dB|2|-5000|13|dB|2|4
+021091|radarSignalDopplerSpectrum0thMoment|long|RADAR SIGNAL DOPPLER SPECTRUM 0TH MOMENT|dB|0|-100|8|dB|0|3
+021092|rassSignalDopplerSpectrum0thMomentReferringToRassSignal|long|RASS SIGNAL DOPPLER SPECTRUM 0TH MOMENT, REFERRING TO RASS SIGNA|dB|0|-100|8|dB|0|3
+021093|kuBandPeakiness|long|Ku BAND PEAKINESS|Numeric|3|0|16|Numeric|0|5
+021094|sBandPeakiness|long|S BAND PEAKINESS|Numeric|3|0|16|Numeric|0|5
+021101|numberOfVectorAmbiguities|long|NUMBER OF VECTOR AMBIGUITIES|Numeric|0|0|3|Numeric|0|1
+021102|indexOfSelectedWindVector|long|INDEX OF SELECTED WIND VECTOR|Numeric|0|0|3|Numeric|0|1
+021103|totalNumberOfSigma0Measurements|long|TOTAL NUMBER OF SIGMA-0 MEASUREMENTS|Numeric|0|0|5|Numeric|0|2
+021104|likelihoodComputedForSolution|long|LIKELIHOOD COMPUTED FOR SOLUTION|Numeric|3|-30000|15|Numeric|3|5
+021105|normalizedRadarCrossSection|double|NORMALIZED RADAR CROSS-SECTION|dB|2|-10000|14|dB|2|5
+021106|kpVarianceCoefficientAlpha|long|KP VARIANCE COEFFICIENT (ALPHA)|Numeric|3|0|14|Numeric|3|5
+021107|kpVarianceCoefficientBeta|long|KP VARIANCE COEFFICIENT (BETA)|Numeric|8|0|16|Numeric|8|5
+021109|seawindsWindVectorCellQuality|flag|SEAWINDS WIND VECTOR CELL QUALITY|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021110|numberOfInnerBeamSigma0ForwardOfSatellite|long|NUMBER OF INNER-BEAM SIGMA-0 (FORWARD OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021111|numberOfOuterBeamSigma0ForwardOfSatellite|long|NUMBER OF OUTER-BEAM SIGMA-0 (FORWARD OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021112|numberOfInnerBeamSigma0AftOfSatellite|long|NUMBER OF INNER-BEAM SIGMA-0 (AFT OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021113|numberOfOuterBeamSigma0AftOfSatellite|long|NUMBER OF OUTER-BEAM SIGMA-0 (AFT OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021114|kpVarianceCoefficientGamma|double|KP VARIANCE COEFFICENT (GAMMA)|dB|3|-140000|18|dB|3|6
+021115|seawindsSigma0Quality|flag|SEAWINDS SIGMA-0 QUALITY|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021116|seawindsSigma0Mode|flag|SEAWINDS SIGMA-0 MODE|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021117|sigma0VarianceQualityControl|long|SIGMA-0 VARIANCE QUALITY CONTROL|Numeric|2|0|16|Numeric|2|5
+021118|attenuationCorrectionOnSigma0|double|ATTENUATION CORRECTION ON SIGMA-0|dB|2|-10000|14|dB|2|5
+021119|windScatterometerGeophysicalModelFunction|table|WIND SCATTEROMETER GEOPHYSICAL MODEL FUNCTION|CODE TABLE|0|0|6|CODE TABLE|0|2
+021120|probabilityOfRain|long|PROBABILITY OF RAIN|Numeric|3|0|10|Numeric|3|4
+021121|seawindsNofRainIndex|long|SEAWINDS NOF* RAIN INDEX|Numeric|0|0|8|Numeric|0|3
+021122|attenuationCorrectionOnSigma0FromTb|double|ATTENUATION CORRECTION OF SIGMA-0 (FROM TB)|dB|2|-10000|14|dB|2|5
+021123|seawindsNormalizedRadarCrossSection|double|SEAWINDS NORMALIZED RADAR CROSS SECTION|dB|2|-30000|15|dB|2|5
+021128|numberOfValidPointsPerSecondUsedToDerivePreviousParameters|long|NUMBER OF VALID POINTS PER SECOND USED TO DERIVE PREVIOUS PARAME|Numeric|0|0|8|Numeric|0|3
+021130|spectrumTotalEnergy|long|SPECTRUM TOTAL ENERGY|Numeric|6|0|28|Numeric|6|9
+021131|spectrumMaxEnergy|long|SPECTRUM MAX ENERGY|Numeric|6|0|28|Numeric|6|9
+021132|directionOfSpectrumMaxOnHigherResolutionGrid|double|DIRECTION OF SPECTRUM MAX ON HIGHER RESOLUTION GRID|deg|3|0|19|deg|3|6
+021133|wavelengthOfSpectrumMaxOnHigherResolutionGrid|double|WAVE-LENGTH OF SPECTRUM MAX ON HIGHER RESOLUTION GRID|m|3|0|29|m|3|9
+021134|rangeResolutionOfCressCovarianceSpectrum|double|RANGE RESOLUTION OF CRESS COVARIANCE SPECTRUM|rad/m|3|0|19|rad/m|3|6
+021135|realPartOfCrossSpectraPolarGridNumberOfBins|long|REAL PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS|Numeric|3|-524288|20|Numeric|3|7
+021136|imaginaryPartOfCrossSpectraPolarGridNumberOfBins|long|IMAGINARY PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS|Numeric|3|-524288|20|Numeric|3|7
+021137|kuBandCorrectedOceanBackscatterCoefficient|double|KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021138|stdKuBandCorrectedOceanBackscatterCoefficient|double|STD KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021139|kuBandNetInstrumentalCorrectionForAgc|double|KU BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|dB|2|4
+021140|sBandCorrectedOceanBackscatterCoefficient|double|S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021141|stdSBandCorrectedOceanBackscatterCoefficient|double|STD S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021142|sBandNetInstrumentalCorrectionForAgc|double|S BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-1024|11|dB|2|4
+021143|kuBandRainAttenuation|double|KU BAND RAIN ATTENUATION|dB|2|-1073741824|31|dB|2|10
+021144|altimeterRainFlag|flag|ALTIMETER RAIN FLAG|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+021145|kuBandAutomaticGainControl|double|KU BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|NA|0|0
+021146|rmsKuBandAutomaticGainControl|double|RMS KU BAND AUTOMATIC GAIN CONTROL|dB|2|0|8|NA|0|0
+021147|numberOfValidPointsForKuBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR KU BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|5|NA|0|0
+021150|beamCollocation|table|BEAM COLLOCATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+021151|estimatedErrorInSigma0At40DegreesIncidenceAngle|double|ESTIMATED ERROR IN SIGMA0 AT 40DEG INCIDENCE ANGLE|dB|2|0|9|dB|2|3
+021152|slopeAt40DegreesIncidenceAngle|double|SLOPE AT 40DEG INCIDENCE ANGLE|dB/deg|2|-80|7|dB/deg|2|3
+021153|estimatedErrorInSlopeAt40DegreesIncidenceAngle|double|ESTIMATED ERROR IN SLOPE AT 40DEG INCIDENCE ANGLE|dB/deg|2|-40|6|dB/deg|2|3
+021154|soilMoistureSensitivity|double|SOIL MOISTURE SENSITIVITY|dB|2|0|12|dB|2|4
+021155|windVectorCellQuality|flag|WIND VECTOR CELL QUALITY|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+021156|backscatterDistance|long|BACKSCATTER DISTANCE|Numeric|1|-4096|13|Numeric|1|4
+021157|lossPerUnitLengthOfAtmosphere|double|LOSS PER UNIT LENGTH OF ATMOSPHERE USED|dB/m|10|0|22|dB/m|10|7
+021158|ascatKpEstimateQuality|table|ASCAT kp ESTIMATE QUALITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+021159|ascatSigma0Usability|table|ASCAT SIGMA-0 USABILITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+021160|ascatUseOfSyntheticData|long|ASCAT USE OF SYNTHETIC DATA|Numeric|3|0|10|Numeric|3|4
+021161|ascatSyntheticDataQuantity|long|ASCAT SYNTHETIC DATA QUALITY|Numeric|3|0|10|Numeric|3|4
+021162|ascatSatelliteOrbitAndAttitudeQuality|long|ASCAT SATELLITE ORBIT AND ATTITUDE QUALITY|Numeric|3|0|10|Numeric|3|4
+021163|ascatSolarArrayReflectionContamination|long|ASCAT SOLAR ARRAY REFLECTION CONTAMINATION|Numeric|3|0|10|Numeric|3|4
+021164|ascatTelemetryPresenceAndQuality|long|ASCAT TELEMETRY PRESENCE AND QUALITY|Numeric|3|0|10|Numeric|3|4
+021165|ascatExtrapolatedReferenceFunctionPresence|long|ASCAT EXTRAPOLATED REFERENCE FUNCTION PRESENCE|Numeric|3|0|10|Numeric|3|4
+021166|landFraction|long|ASCAT LAND FRACTION|Numeric|3|0|10|Numeric|3|4
+021169|icePresenceIndicator|table|ICE PRESENCE INDICATOR|CODE TABLE|0|0|2|NA|0|0
+021170|cBandCorrectedOceanBackscatterCoefficient|double|C BAND CORRECTED OCEAN BACKSCATTER COEFICIENT|dB|2|-32768|16|NA|0|0
+021171|rmsCBandCorrectedOceanBackscatterCoefficient|double|RMS C BAND CORRECTED OCEAN BACKSCATTER COEFICIENT|dB|2|-32768|16|NA|0|0
+021172|cBandNetInstrumentalCorrectionForAgc|double|C BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|NA|0|0
+021173|cBandAutomaticGainControl|double|C BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|NA|0|0
+021174|rmsCBandAutomaticGainControl|double|RMS C BAND AUTOMATIC GAIN CONTROL|dB|2|0|9|NA|0|0
+021175|numberOfValidPointsForCBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR C BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|10|NA|0|0
+022001|wavesDirection|long|DIRECTION OF WAVES|deg|0|0|9|deg|0|3
+022002|windWavesDirection|long|DIRECTION OF WIND WAVES|deg|0|0|9|deg|0|3
+022003|swellWavesDirection|long|DIRECTION OF SWELL WAVES|deg|0|0|9|deg|0|3
+022004|currentDirection|long|DIRECTION OF CURRENT|deg|0|0|9|deg|0|3
+022005|seaSurfaceCurrentDirection|long|DIRECTION OF SEA SURFACE CURRENT|deg|0|0|9|deg|0|3
+022011|periodOfWaves|long|PERIOD OF WAVES|s|0|0|6|s|0|2
+022012|periodOfWindWaves|long|PERIOD OF WIND WAVES|s|0|0|6|s|0|2
+022013|periodOfSwellWaves|long|PERIOD OF SWELL WAVES|s|0|0|6|s|0|2
+022021|heightOfWaves|double|HEIGHT OF WAVES|m|1|0|10|m|1|4
+022022|heightOfWindWaves|double|HEIGHT OF WIND WAVES|m|1|0|10|m|1|4
+022023|heightOfSwellWaves|double|HEIGHT OF SWELL WAVES|m|1|0|10|m|1|4
+022025|standardDeviationWaveHeight|double|STANDARD DEVIATION WAVE HEIGHT|m|2|0|10|m|2|4
+022026|standardDeviationOfSignificantWaveHeight|double|STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT|m|2|0|10|m|2|4
+022031|speedOfCurrent|double|SPEED OF CURRENT|m/s|2|0|13|m/s|2|4
+022032|speedOfSeaSurfaceCurrent|double|SPEED OF SEA SURFACE CURRENT|m/s|2|0|13|m/s|2|4
+022035|tidalElevationWithRespectToLocalChartDatum|double|TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM|m|2|0|14|m|2|4
+022036|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|2|0|14|m|2|4
+022037|tidalElevationWithRespectToNationalLandDatum|double|TIDAL ELEVATION WITH RESPECT TO NATIONAL LAND DATUM|m|3|-10000|15|m|3|5
+022038|tidalElevationWithRespectToLocalChartDatum|double|TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM|m|3|-10000|15|m|3|5
+022039|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|3|-5000|12|m|3|4
+022040|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|3|-5000|14|m|3|5
+022041|seaSurfaceTemperature15DayRunningMean|double|SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN)|K|1|0|12|K|1|4
+022042|waterTemperature|double|SEA/WATER TEMPERATURE|K|1|0|12|K|1|4
+022043|waterTemperature|double|SEA/WATER TEMPERATURE|K|2|0|15|K|2|5
+022044|soundVelocity|double|SOUND VELOCITY|m/s|1|0|14|m/s|1|5
+022045|waterTemperature|double|SEA/WATER TEMPERATURE|K|3|0|19|K|3|6
+022049|seaSurfaceTemperature|double|SEA SURFACE TEMPERATURE|K|2|0|15|K|2|5
+022050|standardDeviationSeaSurfaceTemperature|double|STANDARD DEVIATION SEA-SURFACE TEMPERATURE|K|2|0|8|K|2|3
+022055|floatCycleNumber|long|FLOAT CYCLE NUMBER|Numeric|0|0|10|Numeric|0|3
+022056|directionOfProfile|table|DIRECTION OF PROFILE|CODE TABLE|0|0|2|CODE TABLE|0|1
+022059|seaSurfaceSalinity|double|SEA SURFACE SALINITY|0/00|2|0|14|0/00|2|5
+022060|lagrangianDrifterDrogueStatus|table|LAGRANGIAN DRIFTER DROGUE STATUS|CODE TABLE|0|0|3|CODE TABLE|0|1
+022061|seaState|table|STATE OF THE SEA|CODE TABLE|0|0|4|CODE TABLE|0|2
+022062|salinity|double|SALINITY|0/00|2|0|14|0/00|2|5
+022063|totalWaterDepth|long|TOTAL WATER DEPTH|m|0|0|14|m|0|5
+022064|salinity|double|SALINITY|0/00|3|0|17|0/00|3|6
+022065|waterPressure|long|WATER PRESSURE|Pa|-3|0|17|Pa|-3|6
+022066|waterConductivity|double|WATER CONDUCTIVITY|S/m|6|0|26|S/m|6|8
+022067|instrumentTypeForWaterTemperatureOrSalinityProfileMeasurement|table|INSTRUMENT TYPE FOR WATER TEMPERATURE PROFILE MEASUREMENT|CODE TABLE|0|0|10|CODE TABLE|0|4
+022068|waterTemperatureProfileRecorderTypes|table|WATER TEMPERATURE PROFILE RECORDER TYPES|CODE TABLE|0|0|7|CODE TABLE|0|3
+022069|spectralWaveDensity|double|SPECTRAL WAVE DENSITY|m2/Hz|3|0|22|m2/Hz|3|7
+022070|significantWaveHeight|double|SIGNIFICANT WAVE HEIGHT|m|2|0|13|m|2|4
+022071|spectralPeakWavePeriod|double|SPECTRAL PEAK WAVE PERIOD|s|1|0|9|s|1|3
+022072|spectralPeakWaveLength|long|SPECTRAL PEAK WAVE LENGTH|m|0|0|13|m|0|4
+022073|maximumWaveHeight|double|MAXIMUM WAVE HEIGHT|m|2|0|13|m|2|4
+022074|averageWavePeriod|double|AVERAGE WAVE PERIOD|s|1|0|9|s|1|3
+022075|averageWaveLength|long|AVERAGE WAVE LENGTH|m|0|0|13|m|0|4
+022076|directionFromWhichDominantWavesAreComing|long|DIRECTION FROM WHICH DOMINANT WAVES ARE COMING|deg|0|0|9|deg|0|3
+022077|directionalSpreadOfDominantWave|long|DIRECTIONAL SPREAD OF DOMINANT WAVE|deg|0|0|9|deg|0|3
+022078|durationOfWaveRecord|long|DURATION OF WAVE RECORD|s|0|0|12|s|0|4
+022079|lengthOfWaveRecord|long|LENGTH OF WAVE RECORD|m|0|0|16|m|0|5
+022080|wavebandCentralFrequency|double|WAVEBAND CENTRAL FREQUENCY|Hz|3|0|10|Hz|3|4
+022081|wavebandCentralWaveNumber|double|WAVEBAND CENTRAL WAVE NUMBER|/m|5|0|13|/m|5|4
+022082|maximumNonDirectionalSpectralWaveDensity|double|MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY|m2 s|2|0|20|m2 s|2|7
+022083|maximumNonDirectionalSpectralWaveNumber|double|MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE NUMBER|m3|2|0|20|m3|2|7
+022084|bandContainingMaximumNonDirectionalSpectralWaveDensity|long|BAND CONTAINING MAXIMUM NON- DIRECTIONAL SPECTRAL WAVE DENSITY|Numeric|0|0|7|Numeric|0|3
+022085|spectralWaveDensityRatio|long|SPECTRAL WAVE DENSITY RATIO|Numeric|0|0|7|Numeric|0|3
+022086|meanDirectionFromWhichWavesAreComing|long|MEAN DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3
+022087|principalDirectionFromWhichWavesAreComing|long|PRINCIPAL DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3
+022088|firstNormalizedPolarCoordinateFromFourierCoefficients|long|FIRST NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS|Numeric|2|0|7|Numeric|2|3
+022089|secondNormalizedPolarCoordinateFromFourierCoefficients|long|SECOND NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS|Numeric|2|0|7|Numeric|2|3
+022090|nonDirectionalSpectralEstimateByWaveFrequency|double|NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY|m2 s|2|0|20|m2 s|2|7
+022091|nonDirectionalSpectralEstimateByWaveNumber|double|NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER|m3|2|0|20|m3|2|7
+022092|directionalSpectralEstimateByWaveFrequency|double|DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY|m2 rad-1 s|2|0|20|m2 rad-1 s|2|7
+022093|directionalSpectralEstimateByWaveNumber|double|DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER|m4|2|0|20|m4|2|7
+022094|totalNumberOfWaveBands|long|TOTAL NUMBER OF WAVE BANDS|Numeric|0|0|7|Numeric|0|3
+022095|directionalSpreadOfIndividualWaves|long|DIRECTIONAL SPREAD OF INDIVIDUAL WAVES|deg|0|0|8|deg|0|3
+022096|spectralBandWidth|double|SPECTRAL BAND WIDTH|/s|3|0|4|/s|3|2
+022097|meanWavelength731MOfImageSpectrumAtLowWaveNumbers|long|MEAN WAVELENGTH > 731 M OF IMAGE SPECTRUM AT LOW WAVE NUMBERS|m|0|0|14|m|0|5
+022098|wavelengthSpreadWavelength731MAtLowWaveNumbers|long|WAVELENGTH SPREAD (WAVELENGTH > 731 M) AT LOW WAVE NUMBERS|m|0|0|14|m|0|5
+022099|meanDirectionAtLowWaveNumbersWavelength731M|long|MEAN DIRECTION AT LOW WAVE NUMBERS (WAVELENGTH > 731 M)|deg|0|0|9|deg|0|3
+022100|directionSpreadAtLowWaveNumbersWavelength731M|long|DIRECTION SPREAD AT LOW WAVE NUMBERS(WAVELENGTH > 731 M)|deg|0|0|9|deg|0|3
+022101|totalEnergyWavelength731mAtLowWaveNumbers|long|TOTAL ENERGY (WAVELENGTH > 731M) AT LOW WAVE NUMBERS|Numeric|0|0|31|Numeric|0|10
+022120|tideStationAutomatedWaterLevelCheck|table|TIDE STATION AUTOMATED WATER LEVEL CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022121|tideStationManualWaterLevelCheck|table|TIDE STATION MANUAL WATER LEVEL CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022122|automatedMeteorologicalDataCheck|table|TIDE STATION AUTOMATED METEOROLOGICAL DATA CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022123|tideStationManualMeteorologicalDataCheck|table|TIDE STATION MANUAL METEOROLOGICAL DATA CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022141|seaSurfaceTemperature15DayRunningMean|double|SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN)|K|2|0|15|K|2|5
+022150|numberOf18HzValidPointsForKuBand|long|NUMBER OF 18 HZ VALID POINTS FOR KU BAND|Numeric|0|0|10|Numeric|0|4
+022151|kuBandOceanRange|double|KU BAND OCEAN RANGE|m|3|0|31|m|3|10
+022152|stdOf18HzKuBandOceanRange|double|STD OF 18 HZ KU BAND OCEAN RANGE|m|3|0|16|m|3|5
+022153|numberOf18HzValidPointsForSBand|long|NUMBER OF 18 HZ VALID POINTS FOR S BAND|Numeric|0|0|10|Numeric|0|4
+022154|sBandOceanRange|double|S BAND OCEAN RANGE|m|3|0|31|m|3|10
+022155|stdOf18HzSBandOceanRange|double|STD OF 18 HZ S BAND OCEAN RANGE|m|3|0|16|m|3|5
+022156|kuBandSignificantWaveHeight|double|KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022157|stdOf18HzKuBandOceanRange|double|STD 18HZ KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022158|sBandSignificantWaveHeight|double|S BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022159|stdOf18HzSBandSignificantWaveHeight|double|STD 18HZ S BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022160|normalizedInverseWaveAge|long|NORMALIZED INVERSE WAVE AGE|Numeric|6|0|21|Numeric|6|7
+022161|waveSpectra|double|WAVE SPECTRA|m4|4|0|27|m4|4|9
+022162|rmsOf20HzKuBandOceanRange|double|RMS OF 20Hz KU BAND OCEAN RANGE|m|3|0|16|NA|0|0
+022163|numberOf20HzValidPointsForKuBand|long|NUMBER OF 20Hz VALID POINTS FOR KU BAND|Numeric|0|0|10|NA|0|0
+022164|rms20HzKuBandSignificantWaveHeight|double|RMS 20Hz KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|NA|0|0
+022165|numberOf20HzValidPointsForKuBandSignificantWaveHeight|long|NUMBER OF 20Hz VALID POINTS FOR KU BAND SIGNIFICANT WAVE HEIGHT|Numeric|0|0|10|NA|0|0
+022166|kuBandNetInstrumentalCorrectionForSignificantWaveHeight|double|KU BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|NA|0|0
+022167|numberOfValidPointsForKuBandBackscatter|long|NUMBER OF VALID POINTS FOR KU BAND BACKSCATTER|Numeric|0|0|10|NA|0|0
+022168|cBandOceanRange|double|C BAND OCEAN RANGE|m|3|0|31|NA|0|0
+022169|rmsOfCBandOceanRange|double|RMS OF C BAND OCEAN RANGE|m|3|0|16|NA|0|0
+022170|numberOf20HzValidPointsForCBand|long|NUMBER OF 20Hz VALID POINTS FOR C BAND|Numeric|0|0|10|NA|0|0
+022171|cBandSignificantWaveHeight|double|C BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|NA|0|0
+022172|rms20HzCBandSignificantWaveHeight|double|RMS 20Hz C BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|NA|0|0
+022173|numberOf20HzValidPointsForCBandSignificantWaveHeight|long|NUMBER OF 20Hz VALID POINTS FOR C BAND|Numeric|0|0|10|NA|0|0
+022174|cBandNetInstrumentalCorrectionForSignificantWaveHeight|double|C BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|NA|0|0
+022175|numberOfValidPointsForCBandBackscatter|long|NUMBER OF VALID POINTS FOR C BAND BACKSCATTER|Numeric|0|0|10|NA|0|0
+022186|directionFromWhichWavesAreComing|long|DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|NA|0|0
+022187|directionalSpreadOfWaves|long|DIRECTIONAL SPREAD OF WAVES|deg|0|0|9|NA|0|0
+022191|spectralDensity|double|SPECTRAL DENSITY|m2 rad-1 s|2|0|20|NA|0|0
+023001|accidentEarlyNotificationArticleApplicable|table|ACCIDENT EARLY NOTIFICATION ARTICLE APPLICABLE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023002|facilityInvolvedInIncident|table|ACTIVITY OR FACILITY INVOLVED IN INCIDENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+023003|releaseType|table|TYPE OF RELEASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023004|countermeasuresTakenNearBorder|table|COUNTERMEASURES TAKEN NEAR BORDER|CODE TABLE|0|0|3|CODE TABLE|0|1
+023005|causeOfIncident|table|CAUSE OF INCIDENT|CODE TABLE|0|0|2|CODE TABLE|0|1
+023006|incidentSituation|table|INCIDENT SITUATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+023007|characteristicsOfRelease|table|CHARACTERISTICS OF RELEASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023008|stateOfCurrentRelease|table|STATE OF CURRENT RELEASE|CODE TABLE|0|0|2|CODE TABLE|0|1
+023009|stateOfExpectedRelease|table|STATE OF EXPECTED RELEASE|CODE TABLE|0|0|2|CODE TABLE|0|1
+023016|possibilityOfSignificantChemicalToxicHealthEffect|table|POSSIBILITY OF SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT|CODE TABLE|0|0|2|CODE TABLE|0|1
+023017|flowDischargeOfMajorRecipient|double|FLOW DISCHARGE OF MAJOR RECIPIENT|m3/s|6|0|20|m3/s|6|7
+023018|releaseBehaviourOverTime|table|RELEASE BEHAVIOUR OVER TIME|CODE TABLE|0|0|3|CODE TABLE|0|1
+023019|actualReleaseHeight|long|ACTUAL RELEASE HEIGHT|m|0|-15000|17|m|0|6
+023021|effectiveReleaseHeight|long|EFFECTIVE RELEASE HEIGHT|m|0|-15000|17|m|0|6
+023022|distanceOfReleasePointOrSiteOfIncident|long|DISTANCE OF RELEASE POINT OR SITE OF INCIDENT|m|0|0|24|m|0|8
+023023|mainTransportSpeedInAtmosphere|double|MAIN TRANSPORT SPEED IN THE ATMOSPHERE|m/s|1|0|12|m/s|1|4
+023024|mainTransportSpeedInWater|double|MAIN TRANSPORT SPEED IN WATER|m/s|2|0|13|m/s|2|4
+023025|mainTransportSpeedInGroundWater|double|MAIN TRANSPORT SPEED IN GROUND WATER|m/s|2|0|13|m/s|2|4
+023027|mainTransportDirectionInTheAtmosphere|long|MAIN TRANSPORT DIRECTION IN THE ATMOSPHERE|deg|0|0|9|deg|0|3
+023028|mainTransportDirectionInWater|long|MAIN TRANSPORT DIRECTION IN WATER|deg|0|0|9|deg|0|3
+023029|mainTransportDirectionInGroundWater|long|MAIN TRANSPORT DIRECTION IN GROUND WATER|deg|0|0|9|deg|0|3
+023031|possibilityPlume|table|POSSIBILITY THAT PLUME WILL ENCOUNTER PRECIPITATION IN STATE IN|CODE TABLE|0|0|2|CODE TABLE|0|1
+023032|plumeWillEncounterChangeInWindDirectionAndOrOrSpeedFlag|table|PLUME WILL ENCOUNTER CHANGE IN WIND DIRECTION AND/OR SPEED FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+024001|estimateOfAmountOfRadioactivityReleasedUpToSpecifiedTime|long|ESTIMATE OF AMOUNT OF RADIOACTIVITY RELEASED UP TO SPECIFIED TIM|Bq|-11|0|28|Bq|-11|9
+024002|estimatedMaximumPotentialRelease|long|ESTIMATED MAXIMUM POTENTIAL RELEASE|Bq|-11|0|28|Bq|-11|9
+024003|compositionOfRelease|table|COMPOSITION OF RELEASE|CODE TABLE|0|0|5|CODE TABLE|0|2
+024004|elementName|string|ELEMENT NAME|CCITT IA5|0|0|16|Character|0|2
+024005|isotopeMass|long|ISOTOPE MASS|Numeric|0|0|9|Numeric|0|3
+024011|dose|double|DOSE|mSv|2|0|32|mSv|2|10
+024012|trajectoryDoseDefinedLocationAndExpectedTimeOfArrival|double|TRAJECTORY DOSE (DEFINED LOCATION AND EXPECTED TIME OF ARRIVAL)|mSv|2|0|32|mSv|2|10
+024013|gammaDoseInAirAlongMainTransportPathDefinedLocationAndTimePeriod|double|GAMMA DOSE IN AIR ALONG THE MAIN TRANSPORT PATH (DEFINED LOCATIO|mSv|2|0|32|mSv|2|10
+024021|airConcentrationOfNamedIsotopeTypeIncludingGrossBeta|double|AIR CONCENTRATION (OF NAMED ISOTOPE TYPE INCLUDING GROSS BETA)|Bq m-3|2|0|32|Bq m-3|2|10
+024022|concentrationInPrecipitationOfNamedIsotopeType|double|CONCENTRATION IN PRECIPITATION (OF NAMES ISOTOPE TYPE)|Bq/l|2|0|32|Bq/l|2|10
+024023|pulseRateOfBetaRadiation|double|PULSE RATE OF BETA RADIATION|/s|1|0|14|/s|1|4
+024024|pulseRateOfGammaRadiation|double|PULSE RATE OF GAMMA RADIATION|/s|1|0|14|/s|1|4
+025001|rangeGateLength|long|RANGE-GATE LENGTH|m|-1|0|6|m|-1|2
+025002|numberOfGatesAveraged|long|NUMBER OF GATES AVERAGED|Numeric|0|0|4|Numeric|0|2
+025003|numberOfIntegratedPulses|long|NUMBER OF INTEGRATED PULSES|Numeric|0|0|8|Numeric|0|3
+025004|echoProcessing|table|ECHO PROCESSING|CODE TABLE|0|0|2|CODE TABLE|0|1
+025005|echoIntegration|table|ECHO INTEGRATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025006|zToRConversion|table|Z TO R CONVERSION|CODE TABLE|0|0|3|CODE TABLE|0|1
+025007|zToRConversionFactor|long|Z TO R CONVERSION FACTOR|Numeric|0|0|12|Numeric|0|4
+025008|zToRConversionExponent|long|Z TO R CONVERSION EXPONENT|Numeric|2|0|9|Numeric|2|3
+025009|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025010|clutterTreatment|table|CLUTTER TREATMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+025011|groundOccultationCorrectionScreening|table|GROUND OCCULTATION CORRECTION (SCREENING)|CODE TABLE|0|0|2|CODE TABLE|0|1
+025012|rangeAttenuationCorrection|table|RANGE ATTENUATION CORRECTION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025013|brightBandCorrection|flag|BRIGHT-BAND CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025014|azimuthClutterCutOff|long|AZIMUTH CLUTTER CUT-OFF (SEE NOTE 1)|Numeric|0|0|12|Numeric|0|4
+025015|radomeAttenuationCorrection|flag|RADOME ATTENUATION CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025016|clearAirAttenuationCorrection|double|CLEAR-AIR ATTENUATION CORRECTION|dB/m|5|0|6|dB/m|5|2
+025017|precipitationAttenuationCorrection|flag|PRECIPITATION ATTENUATION CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025018|aToZLawForAttenuationFactor|long|A TO Z LAW FOR ATTENUATION FACTOR|Numeric|7|0|6|Numeric|7|2
+025019|aToZLawForAttenuationExponent|long|A TO Z LAW FOR ATTENUATION EXPONENT|Numeric|2|0|7|Numeric|2|3
+025020|meanSpeedEstimation|table|MEAN SPEED ESTIMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025021|windComputationEnhancement|flag|WIND COMPUTATION ENHANCEMENT|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025025|batteryVoltage|double|BATTERY VOLTAGE|V|1|0|9|V|1|3
+025026|batteryVoltageLargeRange|double|BATTERY VOLTAGE (LARGE RANGE)|V|1|0|12|V|1|4
+025028|operatorOrManufacturerDefinedParameter|long|OPERATOR OR MANUFACTURER DEFINED PARAMETER|Numeric|1|-16384|15|Numeric|1|5
+025029|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+025030|runningMeanSeaSurfaceTemperatureUsage|table|RUNNING MEAN SEA-SURFACE TEMPERATURE USAGE|CODE TABLE|0|0|2|CODE TABLE|0|1
+025032|windProfilerModeInformation|table|WIND PROFILER MODE INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025033|windProfilerSubmodeInformation|table|WIND PROFILER SUBMODE INFORMATION*|CODE TABLE|0|0|2|CODE TABLE|0|1
+025034|windProfilerQualityControlTestResults|flag|WIND PROFILER QUALITY CONTROL TEST RESULTS*|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025036|atmosphericsLocationMethod|table|ATMOSPHERICS LOCATION METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+025040|co2WindProductDerivation|table|CO2 WIND PRODUCT DERIVATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+025041|movingPlatformDirectionReportingMethod|table|MOVING PLATFORM DIRECTION REPORTING METHOD|CODE TABLE|0|0|2|CODE TABLE|0|1
+025042|movingPlatformSpeedReportingMethod|table|MOVING PLATFORM SPEED REPORTING METHOD|CODE TABLE|0|0|2|CODE TABLE|0|1
+025043|waveSamplingIntervalTime|double|WAVE SAMPLING INTERVAL (TIME)|s|4|0|15|s|4|5
+025044|waveSamplingIntervalSpace|double|WAVE SAMPLING INTERVAL (SPACE)|m|2|0|14|m|2|5
+025045|hirsChannelCombination|flag|HIRS CHANNEL COMBINATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+025046|msuChannelCombination|flag|MSU CHANNEL COMBINATION|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+025047|ssuChannelCombination|flag|SSU CHANNEL COMBINATION|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025048|amsuAChannelCombination|flag|AMSU-A CHANNEL COMBINATION|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+025049|amsuBChannelCombination|flag|AMSU-B CHANNEL COMBINATION|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+025050|principalComponentScore|long|PRINCIPAL COMPONENT SCORE|Numeric|4|-131072|18|Numeric|4|6
+025051|avhrrChannelCombination|flag|AVHRR CHANNEL COMBINATION|FLAG TABLE|0|0|7|FLAG TABLE|0|3
+025052|log10OfPrincipalComponentsNormalizedFitToData|long|LOG-10 OF PRINCIPAL COMPONENTS NORMALIZED FIT TO DATA|Numeric|4|0|15|Numeric|4|5
+025053|observationQuality|flag|OBSERVATION QUALITY|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+025054|ssmisSubframeIdNumber|long|SSMIS SUBFRAME ID NEMBER|Numeric|0|0|5|Numeric|0|2
+025055|multiplexerHousekeeping|double|MULTIPLEXER HOUSEKEEPING|K|2|0|16|K|2|5
+025060|softwareIdentification|long|SOFTWARE IDENTIFICATION (SEE NOTE 2)|Numeric|0|0|14|Numeric|0|5
+025061|softwareVersionNumber|string|SOFTWARE IDENTIFICATION AND VERSION NUMBER|CCITT IA5|0|0|96|Character|0|12
+025062|databaseIdentification|long|DATABASE IDENTIFICATION|Numeric|0|0|14|Numeric|0|5
+025065|orientationCorrectionAzimuth|double|ORIENTATION CORRECTION (AZIMUTH)|deg|2|-1000|11|deg|2|4
+025066|orientationCorrectionElevation|double|ORIENTATION CORRECTION (ELEVATION)|deg|2|-1000|11|deg|2|4
+025067|radiosondeReleasePointPressureCorrection|long|RADIOSONDE RELEASE POINT PRESSURE CORRECTION|Pa|0|-8000|14|Pa|0|4
+025068|numberOfArchiveRecomputes|long|NUMBER OF ARCHIVE RECOMPUTES|Numeric|0|0|7|Numeric|0|3
+025069|flightLevelPressureCorrections|flag|FLIGHT LEVEL PRESSURE CORRECTIONS|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025070|majorFrameCount|long|MAJOR FRAME COUNT|Numeric|0|0|4|Numeric|0|2
+025071|frameCount|long|FRAME COUNT|Numeric|0|0|5|Numeric|0|2
+025075|satelliteAntennaCorrectionsVersionNumber|long|SATELLITE ANTENNA CORRECTIONS VERSION NUMBER|Numeric|0|0|5|Numeric|0|2
+025076|log10OfTemperatureRadianceCentralWaveNumberForAtovs|double|LOG-10 OF (TEMPERATURE-RADIANCE CENTRAL WAVENUMBER) FOR ATOVS|log (m-1)|8|0|30|log (m-1)|8|10
+025077|bandwidthCorrectionCoefficient1ForAtovs|long|BANDWIDTH CORRECTION COEFFICIENT 1 FOR ATOVS|Numeric|5|-100000|18|Numeric|5|7
+025078|bandwidthCorrectionCoefficient2ForAtovs|long|BANDWIDTH CORRECTION COEFFICIENT 2 FOR ATOVS|Numeric|5|0|17|Numeric|5|6
+025079|albedoRadianceSolarFilteredIrradianceForAtovs|double|ALBEDO-RADIANCE SOLAR FILTERED IRRADIANCE FOR ATOVS|W m-2|4|0|24|W m-2|4|8
+025080|albedoRadianceEquivalentFilterWidthForAtovs|double|ALBEDO-RADIANCE EQUIVALENT FILTER WIDTH FOR ATOVS|m|10|0|14|m|10|5
+025081|incidenceAngle|double|INCIDENCE ANGLE|deg|3|0|17|deg|3|6
+025082|azimuthAngle|double|AZIMUTH ANGLE|deg|3|0|19|deg|3|6
+025083|faradayRotationalAngle|double|FARADEY ROTATIONAL ANGLE|deg|3|0|19|deg|3|6
+025084|geometricRotationalAngle|double|GEOMETRIC ROTATIONAL ANGLE|deg|5|0|26|deg|5|8
+025085|fractionOfClearPixelsInHirsFov|long|FRACTION OF CLEAR PIXELS IN HIRS FOV|Numeric|0|0|7|Numeric|0|3
+025086|depthCorrectionIndicator|table|DEPTH CORRECTION INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+025090|orbitStateFlag|table|ORBIT STATE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+025091|structureConstantOfRefractionIndexCn2|double|STRUCTURE CONSTANT OF THE REFRACTION INDEX (CN2)|dB|3|-18192|13|dB|3|5
+025092|acousticPropagationVelocity|double|ACOUSTIC PROPAGATION VELOCITY|m/s|2|28000|14|m/s|2|5
+025093|rassComputationCorrection|flag|RASS COMPUTATION CORRECTION|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025095|altimeterStateFlag|flag|ALTIMETER STATE FLAG|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025096|radiometerStateFlag|flag|RADIOMETER STATE FLAG|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+025097|threeDimensionalErrorEstimateOfNavigatorOrbit|table|THREE DIMENSIONAL ERROR ESTIMATE OF THE NAVIGATOR ORBIT|CODE TABLE|0|0|4|CODE TABLE|0|2
+025098|altimeterDataQualityFlag|flag|ALTIMETER DATA QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025099|altimeterCorrectionQualityFlag|flag|ALTIMETER CORRECTION QUALITY|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025100|xbtOrXctdFallRateEquationCoefficientA|long|XBT/XCTD FALL RATE EQUATION COEFFICIENT A|Numeric|5|0|20|Numeric|5|6
+025101|xbtOrXctdFallRateEquationCoefficientB|long|XBT/XCTD FALL RATE EQUATION COEFFICIENT B|Numeric|5|-500000|21|Numeric|5|6
+025102|numberOfMissingLinesExcludingDataGaps|long|NUMBER OF MISSING LINES EXCLUDING DATA GAPS|Numeric|0|0|8|Numeric|0|3
+025103|numberOfDirectionalBins|long|NUMBER OF DIRECTIONAL BINS|Numeric|0|0|8|Numeric|0|3
+025104|numberOfWavelengthBins|long|NUMBER OF WAVE-LENGTH BINS|Numeric|0|0|8|Numeric|0|3
+025105|firstDirectionalBin|double|FIRST DIRECTIONAL BIN|deg|3|0|19|NA|0|0
+025106|directionalBinStep|double|DIRECTIONAL BIN STEP|deg|3|0|19|NA|0|0
+025107|firstWavelengthBin|double|FIRST WAVE-LENGTH BIN|m|3|0|29|m|3|9
+025108|lastWavelengthBin|double|LAST WAVE-LENGTH BIN|m|3|0|29|m|3|9
+025110|imageProcessingSummary|flag|IMAGE PROCESSING SUMMARY|FLAG TABLE|0|0|10|NA|0|0
+025111|numberOfInputDataGaps|long|NUMBER OF INPUT DATA GAPS|Numeric|0|0|8|Numeric|0|3
+025120|ra2L2ProcessingFlag|table|RA2-L2-PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025121|ra2L2ProcessingQuality|long|RA2-L2-PROCESSING QUALITY|%|0|0|7|%|0|3
+025122|hardwareConfigurationForRf|table|HARDWARE CONFIGURATION FOR RF|CODE TABLE|0|0|2|CODE TABLE|0|1
+025123|hardwareConfigurationForHpa|table|HARDWARE CONFIGURATION FOR HPA|CODE TABLE|0|0|2|CODE TABLE|0|1
+025124|mwrL2ProcessingFlag|table|MWR L2 PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025125|mwrL2ProcessingQuality|long|MWR L2-PROCESSING QUALITY|%|0|0|7|%|0|3
+025126|modelDryTroposphericCorrection|double|MODEL DRY TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025127|invertedBarometerCorrection|double|INVERTED BAROMETER CORRECTION|m|3|-32768|16|m|3|5
+025128|modelWetTroposphericCorrection|double|MODEL WET TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025129|mwrDerivedWetTroposphericCorrection|double|MWR DERIVED WET TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025130|ra2IonosphericCorrectionOnKuBand|double|RA2 IONOSPHERIC CORRECTION ON KU BAND|m|3|-32768|16|m|3|5
+025131|ionosphericCorrectionFromDorisOnKuBand|double|IONOSPHERIC CORRECTION FROM DORIS ON KU BAND|m|3|-32768|16|m|3|5
+025132|ionosphericCorrectionFromModelOnKuBand|double|IONOSPHERIC CORRECTION FROM MODEL ON KU BAND|m|3|-32768|16|m|3|5
+025133|seaStateBiasCorrectionOnKuBand|double|SEA STATE BIAS CORRECTION ON KU BAND|m|3|-32768|16|m|3|5
+025134|ra2IonosphericCorrectionOnSBand|double|RA2 IONOSPHERIC CORRECTION ON S BAND|m|3|-32768|16|m|3|5
+025135|ionosphericCorrectionFromDorisOnSBand|double|IONOSPHERIC CORRECTION FROM DORIS ON S BAND|m|3|-32768|16|m|3|5
+025136|ionosphericCorrectionFromModelOnSBand|double|IONOSPHERIC CORRECTION FROM MODEL ON S BAND|m|3|-32768|16|m|3|5
+025137|seaStateBiasCorrectionOnSBand|double|SEA STATE BIAS CORRECTION ON S BAND|m|3|-32768|16|m|3|5
+025138|averageSignalToNoiseRatio|long|AVERAGE SIGNAL TO NOISE RATION|Numeric|0|-2048|12|Numeric|0|4
+025140|startChannel|long|START CHANNEL|Numeric|0|0|14|Numeric|0|5
+025141|endChannel|long|END CHANNEL|Numeric|0|0|14|Numeric|0|5
+025142|channelScaleFactor|long|CHANNEL SCALE FACTOR|Numeric|0|0|6|Numeric|0|2
+025143|linearCoefficient|long|LINEAR COEFFICIENT|Numeric|6|-5000000|24|Numeric|6|8
+025150|methodOfTropicalCycloneIntensityAnalysisUsingSatelliteData|table|SATELLITE INTENSITY ANALYSIS METHOD OF TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|2|2
+025160|kuBandNetInstrumentalCorrection|double|KU BAND INSTRUMENTAL CORRECTION|m|4|-120000|18|NA|0|0
+025161|cBandNetInstrumentalCorrection|double|C BAND INSTRUMENTAL CORRECTION|m|4|-120000|18|NA|0|0
+025162|seaStateBiasCorrectionOnCBand|double|SEA STATE BIAS CORRECTION ON C BAND|m|4|-6000|13|NA|0|0
+025163|altimeterIonosphericCorrectionOnKuBand|double|ALTIMETER IONOSPHERIC CORRECTION ON KU BAND|m|3|-32768|16|NA|0|0
+025164|radiometerWetTroposphericCorrection|double|RADIOMETER WET|m|4|-5000|13|NA|0|0
+025174|smosInformationFlag|flag|SMOS INFORMATION FLAG|FLAG TABLE|0|0|14|FLAG TABLE|0|5
+026001|principalTimeOfDailyReadingInUtcOfMaximumTemperature|double|PRINCIPAL TIME OF DAILY READING IN UTC OF MAXIMUM TEMPERATURE|h|1|0|12|h|1|3
+026002|principalTimeOfDailyReadingInUtcOfMinimumTemperature|double|PRINCIPAL TIME OF DAILY READING IN UTC OF MINIMUM TEMPERATURE|h|1|0|12|h|1|3
+026003|timeDifference|long|TIME DIFFERENCE|min|0|-1440|12|min|0|4
+026010|hoursIncluded|flag|HOURS INCLUDED|FLAG TABLE|0|0|26|FLAG TABLE|0|9
+026020|durationOfPrecipitation|long|DURATION OF PRECIPITATION|min|0|0|11|min|0|4
+027001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+027002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+027003|alternateLatitude|double|ALTERNATE LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+027004|alternateLatitude|double|ALTERNATE LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+027010|footprintAxis1|long|FOOTPRINT AXIS 1|m|-1|0|14|m|-1|5
+027020|satelliteLocationCounter|long|SATELLITE LOCATION COUNTER|Numeric|0|0|16|Numeric|0|5
+027021|satelliteSublocationDimension|long|SATELLITE SUBLOCATION DIMENSION|Numeric|0|0|16|Numeric|0|5
+027031|DistanceFromEarthCentreInDirectionOf0DegreesLongitude|double|IN DIRECTION OF 0 DEGREES LONGITUDE, DISTANCE FROM THE EARTH'S C|m|2|-1073741824|31|m|2|10
+027080|viewingAzimuthAngle|double|VIEWING AZIMUTH ANGLE|deg|2|0|16|deg|0|5
+028001|longitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+028002|longitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+028003|alternateLongitude|double|ALTERNATE LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+028004|alternateLongitude|double|ALTERNATE LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+028010|footprintAxis2|long|FOOTPRINT AXIS 2|m|-1|0|14|m|-1|5
+028031|DistanceFromEarthCentreInDirection90DegreesEast|double|IN DIRECTION 90 DEGREES EAST, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10
+029001|projectionType|table|PROJECTION TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+029002|coordinateGridType|table|CO-ORDINATE GRID TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+030001|pixelValue4Bits|long|PIXEL VALUE (4 BITS)|Numeric|0|0|4|Numeric|0|2
+030002|pixelValue8Bits|long|PIXEL VALUE (8 BITS)|Numeric|0|0|8|Numeric|0|3
+030004|pixelValue16Bits|long|PIXEL VALUE (16 BITS)|Numeric|0|0|16|Numeric|0|5
+030010|numberOfGridPoints|long|NUMBER OF GRID POINTS|Numeric|0|0|13|Numeric|0|4
+030021|numberOfPixelsPerRow|long|NUMBER OF PIXELS PER ROW|Numeric|0|0|12|Numeric|0|4
+030022|numberOfPixelsPerColumn|long|NUMBER OF PIXELS PER COLUMN|Numeric|0|0|12|Numeric|0|4
+030031|pictureType|table|PICTURE TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+030032|combinationWithOtherData|flag|COMBINATION WITH OTHER DATA|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+031000|shortDelayedDescriptorReplicationFactor|long|SHORT DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|1|Numeric|0|1
+031001|delayedDescriptorReplicationFactor|long|DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|8|Numeric|0|3
+031002|extendedDelayedDescriptorReplicationFactor|long|EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|16|Numeric|0|5
+031011|delayedDescriptorAndDataRepetitionFactor|long|DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|8|Numeric|0|3
+031012|extendedDelayedDescriptorAndDataRepetitionFactor|long|EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|16|Numeric|0|5
+031021|associatedFieldSignificance|table|ASSOCIATED FIELD SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+031031|dataPresentIndicator|flag|DATA PRESENT INDICATOR|FLAG TABLE|0|0|1|FLAG TABLE|0|1
+033002|qualityInformation|table|QUALITY INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033003|qualityInformation|table|QUALITY INFORMATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+033005|qualityInformationAwsData|flag|QUALITY INFORMATION (AWS DATA)|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+033006|internalMeasurementStatusInformationAws|table|INTERNAL MEASUREMENT STATUS INFORMATION (AWS)|CODE TABLE|0|0|3|CODE TABLE|0|1
+033007|percentConfidence|long|PER CENT CONFIDENCE|%|0|0|7|%|0|3
+033009|relativeError|double|RELATIVE ERROR|%|6|0|20|%|0|7
+033015|dataQualityCheckIndicator|table|DATA QUALITY CHECK INDICATOR|CODE TABLE|0|0|6|CODE TABLE|0|2
+033020|qualityControlIndicationOfFollowingValue|table|QUALITY CONTROL INDICATION OF FOLLOWING VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+033021|qualityOfFollowingValue|table|QUALITY OF FOLLOWING VALUE|CODE TABLE|0|0|2|CODE TABLE|0|1
+033022|qualityOfBuoySatelliteTransmission|table|QUALITY OF BUOY SATELLITE TRANSMISSION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033023|qualityOfBuoyLocation|table|QUALITY OF BUOY LOCATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033024|stationElevationQualityMarkForMobileStations|table|STATION ELEVATION QUALITY MARK (FOR MOBILE STATIONS)|CODE TABLE|0|0|4|CODE TABLE|0|2
+033025|acarsInterpolatedValuesIndicator|table|ACARS INTERPOLATED VALUES|CODE TABLE|0|0|3|CODE TABLE|0|1
+033026|moistureQuality|table|MOISTURE QUALITY|CODE TABLE|0|0|6|CODE TABLE|0|2
+033027|locationQualityClassRangeOfRadiusOf66Confidence|table|LOCATION QUALITY CLASS (RANGE OF RADIUS OF 66 % CONFIDENCE)|CODE TABLE|0|0|3|CODE TABLE|0|1
+033028|snapshotOverallQuality|table|SNAPSHOT OVERALL QUALITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+033030|scanLineStatusFlagsForAtovs|flag|SCAN LINE STATUS FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033031|scanLineQualityFlagsForAtovs|flag|SCAN LINE QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033032|channelQualityFlagsForAtovs|flag|CHANNEL QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033033|fieldOfViewQualityFlagsForAtovs|flag|FIELD OF VIEW QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033035|qualityControl|table|MANUAL/AUTOMATIC QUALITY CONTROL|CODE TABLE|0|0|4|CODE TABLE|0|2
+033036|nominalConfidenceThreshold|long|NOMINAL CONFIDENCE THRESHOLD|%|0|0|7|%|0|3
+033037|windCorrelationError|flag|WIND CORRELATION ERROR|FLAG TABLE|0|0|20|FLAG TABLE|0|7
+033038|qualityFlagsForGroundBasedGnssData|flag|QUALITY FLAGS FOR GROUND-BASED GNSS DATA|FLAG TABLE|0|0|10|FLAG TABLE|0|4
+033039|radioOccultationDataQualityFlags|flag|QUALITY FLAGS FOR RADIO OCCULTATION DATA|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+033040|confidenceInterval|long|CONFIDENCE INTERVAL|%|0|0|7|%|0|3
+033041|attributeOfFollowingValue|table|ATTRIBUTE OF FOLLOWING VALUE|CODE TABLE|0|0|2|CODE TABLE|0|1
+033042|typeOfLimitRepresentedByFollowingValue|table|TYPE OF LIMIT REPRESENTED BY FOLLOWING VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+033043|astConfidence|flag|AST CONFIDENCE|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+033044|asarQualityInformation|flag|ASAR QUALITY INFORMATION|FLAG TABLE|0|0|15|FLAG TABLE|0|5
+033045|probabilityOfFollowingEvent|long|PROBABILITY OF FOLLOWING EVENT|%|0|0|7|%|0|3
+033046|conditionalProbability|long|CONDITIONAL PROBABILITY OF FOLLOWING EVENT WITH RESPECT TO SPECI|%|0|0|7|%|0|3
+033047|measurementConfidenceData|flag|MEASUREMENT CONFIDENCE DATA|FLAG TABLE|0|0|31|FLAG TABLE|0|11
+033048|confidenceMeasureOfSarInversion|table|CONFIDENCE MEASURE OF SAR INVERSION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033049|confidenceMeasureOfWindRetrieval|table|CONFIDENCE MEASURE OF WIND RETRIEVAL|CODE TABLE|0|0|2|CODE TABLE|0|1
+033050|globalGtsppQualityFlag|table|GLOBAL GTSPP QUALITY FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+033052|sBandOceanRetrackingQuality|flag|S BAND OCEAN RETRACKING QUALITY|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+033053|kuBandOceanRetrackingQuality|flag|KU BAND OCEAN RETRACKING QUALITY|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+033060|gqisFlagQual|table|GQISFLAGQUAL-INDIVIDUAL IASI-SYSTEM QUALITY FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+033061|gqisQualIndex|long|GQISQUALINDEX - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE|%|0|0|7|%|0|3
+033062|gqisQualIndexLoc|long|GQISQUALINDEXLOC - INDICATOR FOR GEOMETRIC QUALITY INDEX|%|0|0|7|%|0|3
+033063|gqisQualIndexRad|long|GQISQUALINDEXRAD - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE|%|0|0|7|%|0|3
+033064|gqisQualIndexSpect|long|GQISQUALINDEXSPECT - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE|%|0|0|7|%|0|3
+033065|gqisSysTecQual|long|GQISSYSTECSONDQUAL - OUTPUT OF SYSTEM TEC QUALITY FUNCTION|Numeric|0|0|24|Numeric|0|24
+033066|sbuvTotalOzoneQuality|table|SBUV TOTAL OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033067|sbuvProfileOzoneQuality|table|SBUV PROFILE OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033070|totalOzoneQuality|table|TOTAL OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033071|profileOzoneQuality|table|PROFILE OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+035000|fmAndRegionalCodeNumber|table|FM AND REGIONAL CODE NUMBER|CODE TABLE|0|0|10|CODE TABLE|0|3
+035001|timeFrameForMonitoring|table|TIME-FRAME FOR MONITORING|CODE TABLE|0|0|3|CODE TABLE|0|1
+035011|numberOfReportsActuallyReceived|long|NUMBER OF REPORTS ACTUALLY RECEIVED|Numeric|0|0|14|Numeric|0|4
+035021|bulletinBeingMonitoredTtaaii|string|BULLETIN BEING MONITORED (TTAAII)|CCITT IA5|0|0|48|Character|0|6
+035022|bulletinBeingMonitoredYygggg|string|BULLETIN BEING MONITORED (YYGGGG)|CCITT IA5|0|0|48|Character|0|6
+035023|bulletinBeingMonitoredCccc|string|BULLETIN BEING MONITORED (CCCC)|CCITT IA5|0|0|32|Character|0|4
+035024|bulletinBeingMonitoredBbb|string|BULLETIN BEING MONITORED (BBB)|CCITT IA5|0|0|24|Character|0|3
+035030|discrepanciesInAvailabilityOfExpectedData|table|DISCREPANCIES IN THE AVAILABILITY OF EXPECTED DATA|CODE TABLE|0|0|4|CODE TABLE|0|1
+035031|qualifierOnMonitoringResults|table|QUALIFIER ON MONITORING RESULTS|CODE TABLE|0|0|7|CODE TABLE|0|2
+035032|causeOfMissingData|table|CAUSE OF MISSING DATA|CODE TABLE|0|0|4|CODE TABLE|0|1
+035033|observationAndCollectionDeficiencies|table|OBSERVATION AND COLLECTION DEFICIENCIES|CODE TABLE|0|0|7|CODE TABLE|0|2
+035034|statisticalTrendsForAvailabilityOfDataDuringSurveyPeriods|table|STATISTICAL TRENDS FOR AVAILABILITY OF DATA (DURING THE SURVEY P|CODE TABLE|0|0|3|CODE TABLE|0|1
+035035|reasonForTermination|table|REASON FOR TERMINATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+040001|surfaceSoilMoisture|double|SURFACE SOIL MOISTURE (MS)|%|1|0|10|%|1|4
+040002|estimatedErrorInSurfaceSoilMoisture|double|ESTIMATED ERROR IN SURFACE SOIL MOISTURE|%|1|0|10|%|1|4
+040003|meanSurfaceSoilMoisture|long|MEAN SURFACE SOIL MOISTURE|Numeric|3|0|10|Numeric|3|4
+040004|rainFallDetection|long|RAIN FALL DETECTION|Numeric|3|0|10|Numeric|3|4
+040005|soilMoistureCorrectionFlag|flag|SOIL MOISTURE CORRECTION FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040006|soilMoistureProcessingFlag|flag|SOIL MOISTURE PROCESSING FLAG|FLAG TABLE|0|0|16|FLAG TABLE|0|5
+040007|soilMoistureQuality|double|SOIL MOISTURE QUALITY|%|1|0|10|%|1|4
+040008|frozenLandSurfaceFraction|double|FROZEN LAND SURFACE FRACTION|%|1|0|10|%|1|4
+040009|inundationAndWetlandFraction|double|INUNDATION AND WETLAND FRACTION|%|1|0|10|%|1|4
+040010|topographicComplexity|double|TOPOGRAPHIC COMPLEXITY|%|1|0|10|%|1|4
+040011|interpolationFlag|flag|INTERPOLATION FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040012|radiometerDataQualityFlag|flag|RADIOMETER DATA QUALITY FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040013|radiometerBrightnessTemperatureInterpretationFlag|table|RADIOMETER BRIGHTNESS TEMPERATURE INTERPOLATION FLAG|CODE TABLE|0|0|3|NA|0|0
+040014|highFrequencyFluctuationsOfSeaSurfaceTopographyCorrection|double|HIGH FREQUENCY FLUCTUATIONS OF THE SEA SURFACE TOPOGRAPHY CORREC|m|4|-3000|13|NA|0|0
+040018|averageOfImagerMeasurements|double|GLACAVGLMAGLLS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|NA|0|0
+040019|giacvarimagiisVarianceOfImagerMeasurements|double|GLACVARLMAGLLS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|NA|0|0
+040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|NA|0|0
+040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH SNOW/I|%|0|0|7|NA|0|0
+040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|NA|0|0
diff --git a/definitions/bufr/tables/0/wmo/11/sequence.def b/definitions/bufr/tables/0/wmo/11/sequence.def
new file mode 100644
index 0000000..037fc3a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/11/sequence.def
@@ -0,0 +1,678 @@
+"300002" = [  000002, 000003 ]
+"300003" = [  000010, 000011, 000012 ]
+"300004" = [  300003, 000013, 000014, 000015, 000016, 000017, 000018, 000019, 000020 ]
+"300010" = [  300003, 101000, 031001, 000030 ]
+"301001" = [  001001, 001002 ]
+"301002" = [  001003, 001004, 001005 ]
+"301003" = [  001011, 001012, 001013 ]
+"301004" = [  001001, 001002, 001015, 002001 ]
+"301005" = [  001035, 001034 ]
+"301011" = [  004001, 004002, 004003 ]
+"301012" = [  004004, 004005 ]
+"301013" = [  004004, 004005, 004006 ]
+"301014" = [  102002, 301011, 301012 ]
+"301021" = [  005001, 006001 ]
+"301022" = [  005001, 006001, 007001 ]
+"301023" = [  005002, 006002 ]
+"301024" = [  005002, 006002, 007001 ]
+"301025" = [  301023, 004003, 301012 ]
+"301026" = [  301021, 004003, 004003, 004004, 004004, 004005, 004005 ]
+"301027" = [  008007, 101000, 031001, 301028, 008007 ]
+"301028" = [  008040, 033042, 007010, 101000, 031002, 301023, 019007, 008040 ]
+"301031" = [  301001, 002001, 301011, 301012, 301022 ]
+"301032" = [  301001, 002001, 301011, 301012, 301024 ]
+"301033" = [  001005, 002001, 301011, 301012, 301021 ]
+"301034" = [  001005, 002001, 301011, 301012, 301023 ]
+"301035" = [  001005, 001012, 001013, 002001, 301011, 301012, 301023 ]
+"301036" = [  301003, 002001, 301011, 301012, 301023 ]
+"301037" = [  301001, 002011, 002012, 301011, 301012, 301022 ]
+"301038" = [  301001, 002011, 002012, 301011, 301012, 301024 ]
+"301039" = [  301003, 002011, 002012, 301011, 301012, 301023 ]
+"301040" = [  301003, 002011, 002012, 301011, 301012, 301024 ]
+"301041" = [  001007, 002021, 002022, 301011, 301012 ]
+"301042" = [  301041, 301021 ]
+"301043" = [  001007, 002023, 301011, 301013, 301021 ]
+"301044" = [  001007, 002024, 301011, 301013, 301021 ]
+"301045" = [  301011, 301012, 201138, 202131, 004006, 201000, 202000, 304030, 304031 ]
+"301046" = [  001007, 001012, 002048, 021119, 025060, 202124, 002026, 002027, 202000, 005040
+               ]
+"301047" = [  001007, 025060, 001033, 001034, 001012, 301045, 002021, 301011, 301012, 201138,
+               202131, 004006, 201000, 202000, 301023 ]
+"301048" = [  002104, 002121, 002113, 002026, 002027, 002111, 002140, 202127, 001013, 202126,
+               007001, 202000, 025010, 021064 ]
+"301049" = [  002111, 002112, 021062, 021063, 021065 ]
+"301051" = [  001006, 002061, 301011, 301012, 301021, 008004 ]
+"301055" = [  001005, 002001, 301011, 301012, 301021, 001012, 001014 ]
+"301062" = [  101000, 031001, 301001 ]
+"301065" = [  001006, 001008, 002001, 002002, 002005, 002062, 002070, 002065 ]
+"301066" = [  301011, 301013, 301023, 007004, 002064, 008004 ]
+"301070" = [  002143, 002142, 002144 ]
+"301071" = [  001007, 001031, 002020, 002028, 002029 ]
+"301072" = [  301071, 301011, 301013, 301021 ]
+"301074" = [  002143, 002142, 002145, 002146 ]
+"301075" = [  301001, 001015, 301024, 008021, 301011, 301012 ]
+"301076" = [  002011, 002143, 002142 ]
+"301089" = [  001101, 001102 ]
+"301090" = [  301004, 301011, 301012, 301021, 007030, 007031 ]
+"301091" = [  002180, 002181, 002182, 002183, 002184, 002179, 002186, 002187, 002188, 002189
+               ]
+"301092" = [  001011, 001003, 002001, 301011, 301012, 301021, 007030, 007031, 033024 ]
+"301093" = [  301036, 007030, 007031 ]
+"301110" = [  301001, 001011, 002011, 002014, 002003 ]
+"301111" = [  301001, 001011, 002011, 002013, 002014, 002003 ]
+"301112" = [  001006, 002011, 002013, 002014, 002003 ]
+"301113" = [  008021, 301011, 301013 ]
+"301114" = [  301021, 007030, 007031, 007007, 033024 ]
+"301120" = [  301001, 001094, 002011, 301121 ]
+"301121" = [  008041, 301122, 301021, 007031, 007007 ]
+"301122" = [  301011, 301012, 201135, 202130, 004006, 202000, 201000 ]
+"301123" = [  102002, 008041, 001062, 301001, 001094, 002011, 001018, 001095, 025061, 025068,
+               001082, 001083, 001081, 002067, 002066, 002014, 025067, 025065, 025066, 002095,
+               002096, 002097, 002016, 002083, 002080, 002081, 001093, 002084, 002085, 002086,
+               002082, 008041, 301011 ]
+"301125" = [  001033, 001034, 025060, 001007, 002019, 001012 ]
+"302001" = [  010004, 010051, 010061, 010063 ]
+"302002" = [  010004, 007004, 010003, 010061, 010063 ]
+"302003" = [  011011, 011012, 012004, 012006, 013003, 020001, 020003, 020004, 020005 ]
+"302004" = [  020010, 008002, 020011, 020013, 020012, 020012, 020012 ]
+"302005" = [  008002, 020011, 020012, 020013 ]
+"302006" = [  010004, 010051, 010062, 010063 ]
+"302011" = [  302001, 302003, 302004 ]
+"302012" = [  302002, 302003, 302004 ]
+"302013" = [  302006, 302003, 101000, 031001, 302005 ]
+"302021" = [  022001, 022011, 022021 ]
+"302022" = [  022002, 022012, 022022 ]
+"302023" = [  022003, 022013, 022023 ]
+"302024" = [  302022, 101002, 302023 ]
+"302031" = [  302001, 010062, 007004, 010009 ]
+"302032" = [  007032, 012101, 012103, 013003 ]
+"302033" = [  007032, 020001 ]
+"302034" = [  007032, 013023 ]
+"302035" = [  302032, 302033, 302034, 007032, 302004, 101000, 031001, 302005 ]
+"302036" = [  105000, 031001, 008002, 020011, 020012, 020014, 020017 ]
+"302037" = [  020062, 013013, 012113 ]
+"302038" = [  020003, 004024, 020004, 020005 ]
+"302039" = [  004024, 014031 ]
+"302040" = [  007032, 102002, 004024, 013011 ]
+"302041" = [  007032, 004024, 004024, 012111, 004024, 004024, 012112 ]
+"302042" = [  007032, 002002, 008021, 004025, 011001, 011002, 008021, 103002, 004025, 011043,
+               011041 ]
+"302043" = [  302038, 101002, 302039, 302040, 302041, 302042, 007032 ]
+"302044" = [  004024, 002004, 013033 ]
+"302045" = [  004024, 014002, 014004, 014016, 014028, 014029, 014030 ]
+"302046" = [  004024, 004024, 012049 ]
+"302047" = [  102003, 008002, 020054 ]
+"302048" = [  005021, 007021, 020012, 005021, 007021 ]
+"302049" = [  008002, 020011, 020013, 020012, 020012, 020012, 008002 ]
+"302050" = [  008041, 005021, 007005, 202130, 006021, 202000, 008041, 201131, 202129, 002115,
+               010004, 002115, 013003, 202000, 201000, 002115, 011001, 011002, 002115, 102002,
+               012101, 004024, 002115, 012103, 012102, 101003, 020012, 020011, 020013, 101002,
+               020003 ]
+"302051" = [  010004, 010051, 007004, 010003, 012004, 012051, 012016, 012017, 013004, 102004,
+               008051, 008020 ]
+"302052" = [  007032, 007033, 012101, 002039, 012102, 012103, 013003 ]
+"302053" = [  007032, 007033, 020001 ]
+"302054" = [  302052, 302053, 007033, 302034, 007032, 302004, 101000, 031001, 302005 ]
+"302055" = [  020031, 020032, 020033, 020034, 020035, 020036, 020037, 020038 ]
+"302056" = [  002038, 007063, 022043, 007063 ]
+"302057" = [  302056, 302021, 302024 ]
+"302058" = [  007032, 007033, 004024, 004024, 012111, 004024, 004024, 012112 ]
+"302059" = [  007032, 007033, 002002, 008021, 004025, 011001, 011002, 008021, 103002, 004025,
+               011043, 011041 ]
+"302060" = [  302038, 302040, 302058, 302059 ]
+"302062" = [  302001, 302052, 302053, 007033, 101000, 031000, 302034, 007032, 101000, 031001,
+               302005, 008002, 101000, 031000, 302055, 101000, 031000, 302056, 101000, 031000,
+               302021, 101000, 031000, 302024 ]
+"302063" = [  302038, 101000, 031000, 302040, 101000, 031000, 302058, 302059 ]
+"302066" = [  020023, 020024, 020027, 020054, 020023, 020027, 020054, 020025, 020026, 020027,
+               020040, 020066, 020027, 020021, 020067, 020027 ]
+"302069" = [  007032, 007033, 033041, 020001 ]
+"302070" = [  007032, 007033, 011001, 011002, 011043, 011041, 011016, 011017 ]
+"302071" = [  007032, 007033, 008021, 004025, 011001, 011002, 008021, 103002, 004025, 011043,
+               011041, 004025, 011016, 011017 ]
+"302072" = [  007032, 007033, 012101, 012103, 013003 ]
+"302073" = [  020010, 105004, 008002, 020011, 020012, 033041, 020013 ]
+"302074" = [  020003, 004025, 020004, 020005 ]
+"302075" = [  008021, 004025, 013055, 013058, 008021 ]
+"302076" = [  020021, 020022, 026020, 020023, 020024, 020025, 020026 ]
+"302077" = [  007032, 007033, 004025, 012111, 012112, 007032, 004025, 012112 ]
+"302078" = [  002176, 020062, 002177, 013013 ]
+"302079" = [  007032, 002175, 002178, 004025, 013011 ]
+"302080" = [  002185, 004025, 013033 ]
+"302081" = [  004025, 014031 ]
+"302082" = [  004025, 014002, 014004, 014016, 014028, 014029, 014030 ]
+"302083" = [  004025, 008023, 010004, 011001, 011002, 012101, 013003, 008023 ]
+"303001" = [  007003, 011001, 011002 ]
+"303002" = [  007004, 011001, 011002 ]
+"303003" = [  007004, 010003, 012001, 012003 ]
+"303004" = [  007004, 010003, 012001, 012003, 011001, 011002 ]
+"303011" = [  007003, 008001, 011001, 011002 ]
+"303012" = [  007004, 008001, 011001, 011002 ]
+"303013" = [  007004, 008001, 010003, 012001, 013003, 011001, 011002 ]
+"303014" = [  007004, 008001, 010003, 012001, 012003, 011001, 011002 ]
+"303021" = [  007004, 007004, 204007, 031021 ]
+"303022" = [  303021, 010003, 204000 ]
+"303023" = [  303021, 012001, 204000 ]
+"303024" = [  303021, 013016, 204000 ]
+"303025" = [  002025, 204007, 031021, 012063, 204000 ]
+"303026" = [  007004, 008003, 204007, 031021, 012001, 204000 ]
+"303027" = [  007004, 204007, 031021, 010003, 204000 ]
+"303031" = [  007004, 008003, 007021, 007022, 008012, 012061 ]
+"303032" = [  020011, 020016 ]
+"303033" = [  020010, 020016 ]
+"303040" = [  008041, 004025, 004026, 301021, 301122, 201131, 202129, 025069, 007004, 013003,
+               202000, 201000, 002013, 012101, 010009, 102002, 008040, 035035 ]
+"303041" = [  002152, 002023, 007004, 011001, 011002, 002153, 002154, 012071 ]
+"303050" = [  004086, 008042, 007004, 005015, 006015, 011001, 011002 ]
+"303051" = [  004086, 008042, 007004, 005015, 006015, 011061, 011062 ]
+"303052" = [  004086, 008042, 007009, 005015, 006015, 011001, 011002 ]
+"303053" = [  004086, 008042, 007009, 005015, 006015, 011061, 011062 ]
+"303054" = [  004086, 008042, 007004, 010009, 005015, 006015, 012101, 012103, 011001, 011002
+               ]
+"304001" = [  008003, 010004, 012001, 011001, 011002 ]
+"304002" = [  008003, 010004, 011001, 011002 ]
+"304003" = [  008003, 012001 ]
+"304004" = [  008003, 010004, 020010, 012001 ]
+"304005" = [  002024, 007004, 007004, 013003 ]
+"304006" = [  014001, 014001, 014003 ]
+"304011" = [  002163, 002164, 008012, 007024, 002057, 008021, 004001, 004002, 004003, 004004,
+               008021, 004024, 110004, 008021, 004004, 004005, 004006, 008021, 004004, 004005,
+               004006, 011001, 011002, 103010, 002163, 007004, 012001 ]
+"304030" = [  027031, 028031, 010031 ]
+"304031" = [  001041, 001042, 001043 ]
+"304032" = [  002153, 002154, 020081, 020082, 020012 ]
+"304033" = [  002152, 002166, 002167, 002153, 002154, 012075, 012076, 012063 ]
+"304034" = [  102004, 027001, 028001, 007022, 005043, 020010, 020016, 033003, 010040 ]
+"304035" = [  002153, 002154, 012063, 008001, 012063, 008001, 012063, 008001, 008003, 012063,
+               008003, 012063, 008003, 012063, 008003 ]
+"304036" = [  020082, 008012, 020082, 008012, 020081, 008003, 020081, 008003, 020081, 008003,
+               020081, 008003 ]
+"304037" = [  002153, 002154, 012063, 008011, 012063, 008011, 012063, 008011, 008003, 012063,
+               008003, 012063, 008003, 012063, 008003 ]
+"305003" = [  301012, 004065, 101000, 031001, 305001 ]
+"305006" = [  013072, 013082, 013019, 012001, 013073, 013060 ]
+"305007" = [  301029, 301012, 004065, 101000, 031001, 305006 ]
+"305008" = [  305006, 012030 ]
+"305009" = [  301029, 301012, 004065, 101000, 031001, 305008 ]
+"305011" = [  301029, 301012, 004065, 101000, 031001, 305010 ]
+"305018" = [  301029, 301012, 004065, 103000, 031001, 305008, 305016, 305017 ]
+"306001" = [  002032, 102000, 031001, 007062, 022042 ]
+"306002" = [  002031, 022004, 022031 ]
+"306003" = [  002002, 011011, 011012, 012004 ]
+"306004" = [  002032, 002033, 103000, 031001, 007062, 022043, 022062 ]
+"306005" = [  002031, 103000, 031001, 007062, 022004, 022031 ]
+"306006" = [  306003, 306002, 022063 ]
+"306007" = [  001012, 001014, 306008, 004024, 027003, 028003 ]
+"306008" = [  002034, 002035, 002036 ]
+"306019" = [  001075, 301011, 301012, 022042, 022120, 022121, 004015, 004065 ]
+"306020" = [  306024, 102006, 022038, 022039 ]
+"306021" = [  001075, 301011, 301012, 022122, 022123, 012001, 303002 ]
+"306022" = [  001075, 301011, 301012, 022038, 022039 ]
+"306023" = [  001015, 301023, 301011, 301012, 022038, 022039, 022120, 022121 ]
+"306024" = [  001075, 301011, 301012, 022042, 022120, 022121, 004025, 004015 ]
+"306025" = [  306019, 102006, 022038, 022039 ]
+"307001" = [  301031, 302011 ]
+"307002" = [  301032, 302011 ]
+"307003" = [  307001, 101000, 031001, 302005 ]
+"307004" = [  307002, 101000, 031001, 302005 ]
+"307005" = [  307001, 101004, 302005 ]
+"307006" = [  307002, 101004, 302005 ]
+"307007" = [  301031, 302012 ]
+"307008" = [  301032, 302012 ]
+"307009" = [  301031, 302013 ]
+"307011" = [  001063, 002001, 301011, 301012, 301024, 007006, 011001, 011016, 011017, 011002,
+               011041, 007006, 012001, 012003, 010052, 020009 ]
+"307012" = [  103000, 031001, 008023, 005021, 020001 ]
+"307013" = [  106000, 031001, 001064, 008014, 020061, 008014, 020061, 020018 ]
+"307014" = [  101000, 031001, 020019 ]
+"307015" = [  101000, 031001, 302005, 020002 ]
+"307016" = [  101000, 031001, 020020 ]
+"307017" = [  101000, 031001, 011070 ]
+"307018" = [  008016, 102000, 031001, 008017, 301012, 104000, 031001, 007006, 011001, 011002,
+               011041, 020009, 101000, 031001, 020001, 307014 ]
+"307020" = [  307011, 307014, 307016 ]
+"307021" = [  307011, 307012, 307013, 307014, 307015, 307016, 307017, 307018, 307015 ]
+"307022" = [  001015, 301011, 301012, 301022, 008021, 004025, 010004, 012001, 013003, 033038,
+               008022, 106025, 002020, 001050, 005021, 007021, 015031, 015032, 008060, 015033,
+               015034, 008060, 015033, 015034, 015035, 201131, 202129, 013016, 202000, 201000,
+               015011 ]
+"307030" = [  015001, 015002 ]
+"307031" = [  008022, 008023, 015001, 008023, 015001, 008023, 015002 ]
+"307041" = [  301001, 001015, 301022, 301011, 301012, 301070, 307030 ]
+"307042" = [  301001, 001015, 301022, 301011, 301012, 008021, 004025, 301070, 307031 ]
+"307043" = [  301001, 001015, 301024, 301011, 301012, 301074, 307030 ]
+"307045" = [  001063, 008079, 002001, 301011, 301012, 301024, 007032, 011001, 011016, 011017,
+               008054, 011083, 011084, 011002, 008054, 011085, 011086, 011041, 008054, 007032,
+               012023, 012024, 007032, 010052, 020009 ]
+"307046" = [  020060, 102000, 031001, 005021, 020059 ]
+"307047" = [  105000, 031001, 008002, 020011, 020012, 020013, 020092, 020002, 020091 ]
+"307048" = [  008016, 102000, 031001, 008017, 301012, 112000, 031000, 007032, 011001, 008054,
+               011083, 011084, 011002, 008054, 011085, 011086, 011041, 008054, 007032, 020009,
+               101000, 031000, 020060, 307014, 307047 ]
+"307049" = [  102000, 031000, 022043, 022021 ]
+"307050" = [  101000, 031000, 020085, 102000, 031001, 001064, 020085, 105000, 031001, 001064,
+               020086, 020087, 020088, 020089 ]
+"307052" = [  001063, 008039, 301011, 301012, 008079, 008039, 301011, 301012, 008039, 301011,
+               301012, 301024 ]
+"307053" = [  007032, 011001, 008054, 011083, 011084, 011002, 008054, 011085, 011086, 011041,
+               008054, 007032, 020009, 020060, 307014, 307047 ]
+"307054" = [  007032, 008039, 004003, 004004, 008023, 012023, 008039, 004003, 004004, 008023,
+               012023, 008023, 007032 ]
+"307055" = [  033045, 008016, 008039, 004003, 301012, 008039, 004003, 301012, 307053 ]
+"307056" = [  307052, 307053, 307054, 101000, 031001, 307055 ]
+"307059" = [  307045, 307046, 307013, 307014, 307047, 307016, 307017, 307049, 307050, 101000,
+               031001, 307048 ]
+"307060" = [  007061, 012030 ]
+"307061" = [  301031, 101005, 307060 ]
+"307062" = [  301032, 101005, 307060 ]
+"307063" = [  007061, 012130 ]
+"307071" = [  301090, 004074, 004023, 008023, 010004, 010051, 007004, 010009, 007032, 012101,
+               002051, 004051, 012118, 004052, 012119, 013004, 008023, 012151, 007032, 102005,
+               008050, 008020, 014032, 014033, 008050, 008020, 102018, 008052, 008022, 007032,
+               008053, 004003, 012152, 008053, 004003, 012153, 008053, 004003, 008023, 012101,
+               008053, 004003, 008023, 012101, 008023, 007032, 002002, 008053, 004003, 011046,
+               008053, 004003, 004004, 004023, 007032, 013060, 013051, 004053, 008050, 008020,
+               102006, 008052, 008022, 008053, 004003, 013052, 007032 ]
+"307072" = [  004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010004, 010051,
+               007004, 010009, 007032, 012101, 002051, 004051, 012118, 004052, 012119, 013004,
+               012151, 007032, 014032, 008023, 004001, 004001, 004002, 004003, 004004, 004022,
+               007032, 008023, 013060, 004053, 008023, 102008, 008050, 008020 ]
+"307073" = [  307071, 307072 ]
+"307080" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 302043, 302044,
+               101002, 302045, 302046 ]
+"307081" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012122, 013056,
+               013057, 020101, 020102, 020103, 020104, 020105, 020106, 020107, 020108, 302043,
+               302044, 101002, 302045, 302046 ]
+"307082" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012121, 012122,
+               302043, 302044, 101002, 302045, 302046 ]
+"307083" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012122, 302043,
+               302044, 101002, 302045, 302046 ]
+"307084" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 020055, 101000,
+               031001, 205001, 302043, 302044, 101002, 302045, 302046 ]
+"307086" = [  301090, 302031, 302035, 302036, 008002, 302037, 302066, 302043, 302044, 101002,
+               302045 ]
+"307090" = [  301092, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 302043, 302044,
+               101002, 302045, 302046 ]
+"307091" = [  301089, 301090, 008010, 301091, 302001, 007004, 010009, 302072, 103000, 031000,
+               101005, 307063, 007061, 101000, 031000, 302069, 007032, 007033, 105000, 031000,
+               020031, 020032, 002038, 022043, 302021, 101000, 031000, 302078, 101000, 031000,
+               302073, 101000, 031000, 302074, 101000, 031000, 302075, 102000, 031000, 004025,
+               302076, 302071, 302077, 007033, 101000, 031000, 302079, 007032, 101000, 031000,
+               302080, 101000, 031000, 302081, 101000, 031000, 302082, 102000, 031000, 004025,
+               013059, 101000, 031000, 302083, 033005, 033006 ]
+"308001" = [  301033, 302011, 022042 ]
+"308002" = [  301034, 302011, 022042 ]
+"308003" = [  301035, 302011, 022042 ]
+"308004" = [  301036, 302011, 022042 ]
+"308005" = [  308004, 302024 ]
+"308006" = [  010004, 010061, 010063, 011001, 011002, 012004, 013003, 022042 ]
+"308007" = [  301055, 302011, 007062, 022042 ]
+"308008" = [  001003, 001020, 001005, 002001, 002036, 002149, 301011, 301012, 008021, 301011,
+               301012, 008021, 301021, 027004, 028004, 007030, 001051, 002148, 001012, 001014,
+               002040, 033022, 033023, 033027, 022063, 302021, 302022, 302023, 008081, 025026,
+               008081, 025026, 008081, 025026, 008081, 002034, 022060, 007070, 002190, 025086,
+               002035, 002168, 020031, 002038, 306004, 002030, 306005, 007031, 008081, 012064,
+               302001, 008081, 007032, 007033, 012101, 012103, 013003, 007032, 007033, 008082,
+               007033, 002169, 002002, 008021, 004025, 011001, 011002, 008021, 004025, 011043,
+               011041, 008082, 007033, 007032, 004024, 013011, 007032, 008021, 004024, 014021,
+               008021, 025028, 025028, 025028 ]
+"308009" = [  301093, 302001, 302054, 008002, 302055, 302057, 302060 ]
+"308010" = [  001011, 113000, 031001, 301011, 301012, 301021, 004080, 022049, 004080, 022059,
+               004080, 022005, 002042, 022032, 002042, 004080 ]
+"308011" = [  001011, 002001, 301011, 301012, 301023, 007030, 007031, 004074, 004023, 008023,
+               010051, 007032, 007033, 012101, 013004, 007032, 007033, 302056, 008023, 004003,
+               004004, 004023, 007032, 013060, 013051, 004053, 007032 ]
+"308012" = [  004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010051, 007032,
+               007033, 012101, 013002, 007032, 007033, 302056, 008023, 004001, 004001, 004002,
+               004003, 004004, 004022, 007032, 008023, 013060, 004053, 008023 ]
+"308013" = [  308011, 308012 ]
+"308015" = [  001003, 001020, 001005, 001011, 001205, 001001, 001002, 002044, 002045, 301011,
+               301012, 301021, 022063, 105002, 002098, 022070, 022071, 022073, 022074, 002098,
+               022076, 022077, 022094, 025043, 022078, 121000, 031001, 002098, 022082, 022084,
+               116000, 031001, 022080, 022085, 022086, 022087, 022088, 022089, 103000, 031001,
+               022090, 022186, 022187, 103000, 031001, 022092, 022186, 022187, 002098 ]
+"308016" = [  001003, 001020, 001005, 001011, 001205, 001001, 001002, 002044, 002045, 301011,
+               301012, 301021, 022063, 105002, 002098, 022070, 022072, 022073, 022075, 002098,
+               022076, 022077, 022094, 025044, 022079, 121000, 031001, 002098, 022083, 022084,
+               116000, 031001, 022081, 022085, 022086, 022087, 022088, 022089, 103000, 031001,
+               022091, 022186, 022187, 103000, 031001, 022093, 022186, 022187, 002098 ]
+"309001" = [  301037, 101000, 031001, 303011 ]
+"309002" = [  301038, 101000, 031001, 303011 ]
+"309003" = [  301037, 101000, 031001, 303012 ]
+"309004" = [  301038, 101000, 031001, 303012 ]
+"309005" = [  301037, 302004, 101000, 031001, 303013 ]
+"309006" = [  301038, 302004, 101000, 031001, 303013 ]
+"309007" = [  301037, 302004, 101000, 031001, 303014 ]
+"309008" = [  301038, 302004, 101000, 031001, 303014 ]
+"309011" = [  301039, 101000, 031001, 303011 ]
+"309012" = [  301039, 101000, 031001, 303012 ]
+"309013" = [  301039, 302004, 101000, 031001, 303013 ]
+"309014" = [  301039, 302004, 101000, 031001, 303014 ]
+"309015" = [  301040, 101000, 031001, 303011 ]
+"309016" = [  301040, 101000, 031001, 303012 ]
+"309017" = [  301040, 302004, 101000, 031001, 303013 ]
+"309018" = [  301040, 302004, 101000, 031001, 303014 ]
+"309019" = [  301031, 002003, 101000, 031001, 303011 ]
+"309020" = [  301031, 002003, 104000, 031001, 007003, 011003, 011004, 011005 ]
+"309030" = [  015004, 015005, 104000, 031001, 004015, 008006, 007004, 015003 ]
+"309031" = [  015004, 015005, 104000, 031001, 004025, 008006, 007004, 015003 ]
+"309040" = [  301075, 301076, 309030 ]
+"309042" = [  307042, 301075, 301076, 309030 ]
+"309050" = [  301110, 301113, 301114, 101000, 031002, 303050, 101000, 031001, 303051 ]
+"309051" = [  301110, 301113, 301114, 101000, 031002, 303052, 101000, 031001, 303053 ]
+"309052" = [  301111, 301113, 301114, 302049, 022043, 101000, 031002, 303054, 101000, 031001,
+               303051 ]
+"309053" = [  301112, 301113, 301114, 101000, 031002, 303054, 101000, 031001, 303051 ]
+"309054" = [  301001, 001011, 301011, 301012, 301021, 007030, 007031, 007007, 004023, 004059,
+               115000, 031001, 008001, 008023, 007004, 010009, 012101, 012103, 008023, 011001,
+               011002, 008023, 011019, 008050, 008020, 008050, 008020 ]
+"309060" = [  301123, 301121, 302050, 303040 ]
+"309061" = [  301120, 008041, 301122, 201131, 202129, 025069, 007004, 202000, 201000, 033007,
+               033035, 033015, 013009, 033007, 033035, 033015, 002013, 012101, 033007, 033035,
+               033015 ]
+"309062" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015, 033007 ]
+"309063" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015, 033007 ]
+"309064" = [  301120, 008041, 301122, 201131, 202129, 104002, 025069, 007004, 033035, 033015,
+               013003, 033035, 033015, 202000, 201000, 104002, 002013, 012101, 033035, 033015,
+               012103, 033035, 033015, 010009, 033035, 033015 ]
+"309065" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015 ]
+"309066" = [  301120, 008041, 301122, 008040, 201131, 202129, 025069, 007004, 013003, 202000,
+               201000, 002013, 012101, 012103, 010009, 010007, 011002, 011001 ]
+"310001" = [  301042, 303031, 303032, 101026, 303025 ]
+"310002" = [  301042, 303031, 303032, 101009, 303023 ]
+"310003" = [  301042, 303031, 303032, 101006, 303023 ]
+"310004" = [  301042, 303031, 303032, 101003, 303024 ]
+"310005" = [  301042, 303031, 303033, 101000, 031001, 303025 ]
+"310006" = [  301042, 303031, 303033, 101000, 031001, 303023 ]
+"310007" = [  301042, 303031, 303033, 101000, 031001, 303024 ]
+"310008" = [  310011, 101019, 310012, 002150, 025079, 025080, 033032, 014045 ]
+"310009" = [  310011, 101015, 310012 ]
+"310010" = [  310011, 101005, 310012 ]
+"310011" = [  008070, 001033, 001034, 008070, 001033, 001034, 001007, 002048, 005040, 025075,
+               201133, 005041, 201000, 005043, 025070, 033030, 033031, 004001, 004002, 004003,
+               004004, 004005, 202131, 201138, 004006, 201000, 202000, 005001, 006001, 202126,
+               007001, 202000, 007024, 005021, 007025, 005022, 033033, 002151, 012064, 002151,
+               012064, 002151, 012064, 002151, 012064 ]
+"310012" = [  002150, 025076, 025077, 025078, 033032, 201132, 202129, 012063, 202000, 201000
+               ]
+"310013" = [  001007, 005040, 004001, 004002, 004003, 004004, 004005, 004006, 005001, 006001,
+               007025, 005043, 025085, 201131, 202129, 002150, 008023, 008072, 014027, 008072,
+               014027, 002150, 008023, 008072, 014027, 008072, 014027, 002150, 008023, 008072,
+               014027, 008072, 014027, 202000, 201000, 201132, 202129, 002150, 008023, 008072,
+               012063, 008072, 012063, 002150, 008023, 008072, 012063, 008072, 012063, 008023,
+               008072, 012063, 008072, 012063, 002150, 008023, 008072, 012063, 008072, 012063,
+               202000, 201000 ]
+"310014" = [  301072, 303041, 304011 ]
+"310015" = [  301072, 007024, 010002, 303041, 101003, 304032, 002152, 002024, 007004, 007004,
+               013003, 101003, 304033 ]
+"310016" = [  301072, 007024, 010002, 303041, 101012, 304032, 002152, 002024, 007004, 007004,
+               013003, 101012, 304033 ]
+"310019" = [  001007, 002019, 301011, 301013, 301023, 007025, 008021, 007025, 008021, 007025,
+               008021, 008029, 005040, 008075, 008003, 010004, 008003, 207002, 015001, 207000,
+               033070, 015030, 207002, 020081, 207000, 008003, 033042, 007004, 207002, 015001,
+               207000, 008003, 113021, 007004, 007004, 207002, 008021, 015005, 008021, 015005,
+               033007, 207000, 008026, 101020, 025143, 008026, 008043, 109015, 007004, 008090,
+               207006, 015008, 207000, 008090, 207002, 033007, 207000, 008043, 033071, 108008,
+               202124, 201107, 002071, 201000, 202000, 207002, 020081, 207000 ]
+"310020" = [  310022, 301011, 301013, 301021, 304034, 310021 ]
+"310021" = [  108000, 031001, 201131, 202129, 007004, 007004, 202000, 201000, 015020, 010002
+               ]
+"310022" = [  001007, 002019, 001033, 002172 ]
+"310023" = [  301072, 030021, 030022, 008012, 007024, 007025, 010002, 101012, 304032, 105002,
+               002152, 002024, 007004, 007004, 013003, 101012, 304033 ]
+"310024" = [  301072, 030021, 030022, 008012, 007024, 007025, 010002, 101003, 304032, 105002,
+               002152, 002024, 007004, 007004, 013003, 101003, 304033 ]
+"310025" = [  001007, 008021, 004001, 004002, 004003, 004004, 004005, 201138, 202131, 004006,
+               202000, 201000, 201132, 005041, 201000, 201129, 005043, 201000, 005002, 006002,
+               013040, 020029, 104024, 005042, 012163, 021083, 021084, 115003, 004001, 004002,
+               004003, 201142, 202131, 004026, 202000, 201000, 005001, 006001, 201138, 202129,
+               007001, 202000, 201000, 008021, 004001, 004002, 004003, 004004, 004005, 005040,
+               101003, 012070, 025054, 101004, 025055, 008007, 104028, 005002, 006002, 002111,
+               005021 ]
+"310026" = [  310022, 025060, 008021, 301011, 301012, 201138, 202131, 004006, 202000, 201000,
+               033039, 033007, 304030, 304031, 002020, 001050, 202127, 304030, 202000, 304031,
+               201133, 202131, 004016, 202000, 201000, 301021, 304030, 010035, 005021, 010036,
+               113000, 031002, 301021, 005021, 108000, 031001, 002121, 007040, 015037, 008023,
+               201125, 015037, 201000, 008023, 033007, 108000, 031002, 007007, 015036, 008023,
+               201123, 015036, 201000, 008023, 033007, 116000, 031002, 007009, 010004, 012001,
+               013001, 008023, 201120, 010004, 201000, 201122, 012001, 201000, 201123, 013001,
+               201000, 008023, 033007, 008003, 007009, 010004, 008023, 201120, 010004, 201000,
+               008023, 033007 ]
+"310027" = [  301071, 301011, 301013, 301021, 030021, 030022, 010002, 304036, 002152, 002167,
+               101011, 304035 ]
+"310028" = [  301071, 301011, 301013, 301021, 030021, 030022, 010002, 304036, 002152, 002167,
+               101011, 304037 ]
+"310029" = [  110000, 031001, 201138, 202130, 007004, 007004, 202000, 201000, 015020, 010002,
+               012101, 013098 ]
+"310030" = [  310022, 301011, 301013, 301021, 304034, 310029 ]
+"310050" = [  310051, 310052, 101000, 031002, 310053, 101004, 310054, 020010, 310052, 101015,
+               310053, 310052, 101005, 310053 ]
+"310051" = [  001007, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 007025, 005022, 102009, 002151, 012064 ]
+"310052" = [  002019, 301011, 301012, 202131, 201138, 004006, 201000, 202000, 301021, 007024,
+               005021, 005043 ]
+"310053" = [  201134, 005042, 201000, 025076, 033032, 012163 ]
+"310054" = [  201134, 005042, 201000, 025076, 033032, 201131, 202129, 102002, 008023, 014027,
+               008023, 202000, 201000 ]
+"310055" = [  310051, 310052, 102020, 025076, 025052, 101000, 031002, 025050 ]
+"311001" = [  301051, 007002, 012001, 011001, 011002, 011031, 011032, 011033, 020041 ]
+"311002" = [  301065, 301066, 311003, 311004 ]
+"311003" = [  010070, 011001, 011002, 012001, 013002 ]
+"311004" = [  101000, 031000, 011034, 101000, 031000, 011035, 101000, 031000, 011075, 101000,
+               031000, 011076, 101000, 031000, 033025, 101000, 031000, 033026 ]
+"311005" = [  001008, 001023, 301021, 301011, 301013, 007010, 008009, 011001, 011002, 011031,
+               011036, 012101, 033025 ]
+"311006" = [  007010, 011001, 011002, 002064, 012101, 012103 ]
+"311007" = [  007010, 301021, 011001, 011002, 002064, 012101, 012103 ]
+"311008" = [  001008, 301011, 301013, 301021, 008004, 101000, 031001, 311006 ]
+"311009" = [  001008, 301011, 301013, 301021, 008004, 101000, 031001, 311007 ]
+"312001" = [  301043, 304001 ]
+"312002" = [  301043, 304002 ]
+"312003" = [  301042, 304003 ]
+"312004" = [  301042, 304004 ]
+"312005" = [  301042, 020014 ]
+"312006" = [  301044, 304005 ]
+"312007" = [  301042, 304006 ]
+"312010" = [  001007, 005040, 002021, 005041, 004001, 004043 ]
+"312011" = [  202131, 201149, 004006, 201000, 202126, 010002, 202000, 005043, 005053 ]
+"312012" = [  202129, 201132, 101019, 012063, 201000, 202000 ]
+"312013" = [  005042, 202129, 201135, 012063, 201000, 202000 ]
+"312014" = [  312010, 312011, 105056, 301023, 005042, 005052, 312012, 312013 ]
+"312015" = [  109011, 301023, 005042, 005052, 202129, 201132, 101004, 012063, 202000, 201000
+               ]
+"312016" = [  312010, 312011, 312015 ]
+"312017" = [  109008, 301023, 005042, 005052, 202129, 201132, 101003, 012063, 202000, 201000
+               ]
+"312018" = [  312010, 312011, 312017 ]
+"312019" = [  301047, 301048, 015015, 029002, 021076, 106012, 201129, 006030, 201000, 102012,
+               005030, 021075, 021066 ]
+"312020" = [  301047, 301048, 015015, 029002, 021076, 104012, 006030, 102012, 005030, 021075,
+               021066 ]
+"312021" = [  301047, 101003, 301049, 011012, 011011, 021067 ]
+"312022" = [  301047, 008022, 011012, 011050, 022070, 022026, 312041, 010050, 021068, 021071,
+               021072, 021073, 312042, 021062, 015011 ]
+"312023" = [  301047, 103003, 008022, 012061, 022050, 021069, 021085 ]
+"312024" = [  312020, 008060, 008022, 008060, 008022, 025014, 022101, 022097, 022098, 022099,
+               022100 ]
+"312025" = [  312019, 008060, 008022, 008060, 008022, 025014, 022101, 022097, 022098, 022099,
+               022100 ]
+"312026" = [  301046, 301011, 301013, 301023, 312031, 101004, 312030, 021110, 301023, 321027,
+               021111, 301023, 321027, 021112, 301023, 321027, 021113, 301023, 321027 ]
+"312027" = [  301047, 105009, 301023, 007021, 012061, 007021, 012061, 021085, 021070 ]
+"312028" = [  301046, 301011, 301013, 301023, 008025, 201136, 004006, 201000, 312031, 312032,
+               101004, 312030, 101002, 312033, 021110, 301023, 321028, 021111, 301023, 321028,
+               021112, 301023, 321028, 021113, 301023, 321028 ]
+"312030" = [  201130, 202129, 011012, 202000, 201000, 011052, 201135, 202130, 011011, 202000,
+               201000, 011053, 021104 ]
+"312031" = [  005034, 006034, 021109, 011081, 011082, 021101, 021102, 021103 ]
+"312032" = [  021120, 021121, 013055, 021122 ]
+"312033" = [  002104, 008022, 012063, 012065 ]
+"312041" = [  201141, 202130, 007001, 201000, 202000 ]
+"312042" = [  021077, 021078, 021079, 021080, 021081, 021082 ]
+"312045" = [  001007, 002019, 001096, 025061, 005040, 301011, 301013, 301021, 007002, 012180,
+               012181, 012182, 012183, 012184, 012185, 002174, 021086, 012186, 021087, 012187,
+               033043 ]
+"312050" = [  001007, 002019, 001096, 025061, 005040, 301011, 301013, 301021, 007025, 005022,
+               010080, 027080, 008003, 007004, 013093, 008003, 201131, 202129, 007004, 007004,
+               202000, 201000, 013095 ]
+"312051" = [  001007, 002019, 001096, 025061, 005040, 008075, 301011, 301013, 301021, 001012,
+               201131, 001013, 201000, 010032, 010033, 010034, 007002, 008012, 025110, 025111,
+               025102, 002104, 025103, 025104, 025105, 025106, 025107, 025108, 002111, 002121,
+               002026, 002027, 021130, 021131, 021132, 021133, 021064, 025014, 021134, 107018,
+               005030, 105024, 201130, 006030, 201000, 021135, 021136, 033044 ]
+"312052" = [  001007, 002019, 001096, 025061, 005040, 025120, 025121, 025124, 025125, 025122,
+               025123, 301011, 301013, 301021, 007002, 002119, 033047, 010081, 010082, 010083,
+               010084, 002116, 002117, 002118, 002156, 002157, 014055, 022150, 022151, 022152,
+               022153, 022154, 022155, 022156, 022157, 022158, 022159, 021137, 021138, 021139,
+               021140, 021141, 021142, 010085, 010086, 010087, 010088, 010089, 010090, 010091,
+               010092, 010093, 011002, 025126, 025127, 025128, 025129, 025130, 025131, 025132,
+               025133, 025134, 025135, 025136, 025137, 013096, 013097, 011095, 011096, 012188,
+               012189, 002158, 002159, 033052, 033053, 021143, 021144 ]
+"312053" = [  001007, 002019, 001096, 025061, 005040, 008075, 301011, 301013, 301021, 001012,
+               201131, 001013, 201000, 010032, 010033, 010034, 007002, 008012, 025110, 025111,
+               025102, 002104, 025103, 025104, 025105, 025106, 025107, 025108, 011001, 011002,
+               022160, 025138, 201130, 202129, 022021, 202000, 201000, 033048, 033049, 002026,
+               002027, 021130, 021131, 021132, 021133, 025014, 106036, 005030, 104024, 201130,
+               006030, 201000, 022161, 033044 ]
+"312055" = [  005033, 005040, 006034, 010095, 021157 ]
+"312056" = [  025060, 001032, 011082, 011081, 020095, 020096, 021155, 201133, 021101, 021102,
+               201000 ]
+"312057" = [  201130, 202129, 011012, 202000, 201000, 201131, 202129, 011011, 202000, 201000,
+               021156, 021104 ]
+"312058" = [  301125, 301011, 301013, 301021, 312055, 021150, 101003, 321030 ]
+"312059" = [  312056, 101000, 031001, 312057 ]
+"312060" = [  025060, 025062, 040001, 040002, 021062, 021151, 021152, 021153, 021154, 021062,
+               021062, 040003, 040004, 040005, 040006, 040007, 020065, 040008, 040009, 040010
+               ]
+"312061" = [  312058, 312060, 312059 ]
+"312070" = [  001007, 002019, 001144, 001124, 030010, 301011, 301013, 301021, 007012, 015012,
+               012165, 012166, 012167, 012168, 027010, 028010, 002099, 013048, 025081, 025082,
+               025083, 025084, 012080, 012081, 012082, 025174, 033028 ]
+"313009" = [  021001, 101000, 031001, 021001 ]
+"313010" = [  021036, 101000, 031001, 021036 ]
+"313031" = [  006002, 006012, 101000, 031002, 030001 ]
+"313032" = [  005002, 005012, 101000, 031002, 313031 ]
+"313041" = [  006002, 110000, 031001, 104000, 031001, 006012, 101000, 031012, 030001, 006012,
+               101000, 031001, 030001 ]
+"313042" = [  005002, 005012, 101000, 031002, 313041 ]
+"313043" = [  006002, 005002, 005012, 112000, 031001, 110000, 031001, 104000, 031001, 006012,
+               101000, 031011, 030001, 006012, 101000, 031001, 030001 ]
+"315001" = [  001011, 301011, 301012, 301023, 306001 ]
+"315002" = [  001011, 301011, 301012, 301023, 306004 ]
+"315003" = [  001087, 001085, 001086, 002036, 002148, 002149, 022055, 022056, 022067, 301011,
+               301012, 301021, 008080, 033050, 109000, 031002, 007065, 008080, 033050, 022045,
+               008080, 033050, 022064, 008080, 033050 ]
+"316001" = [  301011, 004004, 301023, 001021, 002041, 019001, 010051, 019002, 019003, 019004
+               ]
+"316002" = [  008021, 004001, 004002, 004003, 004004, 004005, 001033, 008021, 004001, 004002,
+               004003, 004004, 004005, 007002, 007002 ]
+"316003" = [  110000, 031001, 008011, 008007, 104000, 031001, 005002, 006002, 010002, 011002,
+               008007, 008011 ]
+"316004" = [  111000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               011031, 008007, 008011 ]
+"316005" = [  108000, 031001, 008005, 008007, 005002, 006002, 001026, 019001, 008007, 008005
+               ]
+"316006" = [  112000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               020011, 020012, 008007, 008011 ]
+"316007" = [  110000, 031001, 008011, 008007, 104000, 031001, 005002, 006002, 019005, 019006,
+               008007, 008011 ]
+"316008" = [  111000, 031001, 008001, 008007, 008023, 103000, 031001, 005002, 006002, 010002,
+               008023, 008007, 008001 ]
+"316009" = [  111000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               020041, 008007, 008011 ]
+"316010" = [  107000, 031001, 008011, 008007, 001022, 005002, 006002, 008007, 008011 ]
+"316011" = [  117000, 031001, 008011, 001022, 008007, 102000, 031001, 005002, 006002, 008021,
+               004001, 004002, 004003, 004004, 004005, 020090, 008021, 008007, 008011 ]
+"316020" = [  001023, 001025, 001027, 301011, 301012 ]
+"316021" = [  301023, 002041, 019001, 019007, 019005, 019006, 019008, 008005, 010004, 008005,
+               010004, 019007, 008005, 008021, 004075, 011040, 019007, 105004, 005021, 005021,
+               102002, 019003, 019004 ]
+"316022" = [  001032, 002041, 019001, 019010, 118000, 031001, 008021, 004014, 008005, 301023,
+               019005, 019006, 010004, 011041, 008021, 004075, 011040, 019008, 105004, 005021,
+               005021, 102002, 019003, 019004 ]
+"316026" = [  316020, 316021 ]
+"316030" = [  301014, 001037, 010064, 008019, 001062, 008019, 001065, 008019, 001062, 008019
+               ]
+"316031" = [  008021, 301011, 301012, 301027, 019005, 019006, 020028, 008021 ]
+"316032" = [  008021, 301011, 301012, 301027, 008021 ]
+"316033" = [  008021, 301011, 301012, 101000, 031001, 301027, 008021 ]
+"316034" = [  008079, 316030, 008011, 001022, 008007, 301023, 008007, 020090, 316031, 101000,
+               031000, 316032, 101000, 031001, 316033, 008011, 008079 ]
+"316035" = [  008079, 316030, 008011, 020023, 020021, 020008, 316031, 008011, 008079 ]
+"316036" = [  008079, 316030, 008011, 001027, 316031, 101000, 031000, 316032, 101000, 031001,
+               316033, 008011, 008079 ]
+"316037" = [  008079, 316030, 008011, 011031, 316031, 008011, 008079 ]
+"316038" = [  008079, 316030, 008011, 020041, 020021, 316031, 008011, 008079 ]
+"316039" = [  008079, 316030, 008011, 020024, 316031, 008011, 008079 ]
+"316040" = [  316030, 008079, 301014, 001037, 010064, 008079 ]
+"316050" = [  301001, 301011, 301012, 002160, 008005, 005002, 006002, 008005, 019100, 019005,
+               019006, 019101, 019102, 019103, 019104, 019105 ]
+"316052" = [  301005, 301011, 301012, 001007, 025150, 122000, 031001, 001027, 019150, 019106,
+               008005, 005002, 006002, 008005, 019107, 019005, 019006, 019108, 019109, 019110,
+               019111, 019112, 019113, 019114, 019115, 019116, 019117, 019118, 019119 ]
+"318001" = [  301025, 024011 ]
+"318003" = [  301026, 024005, 024004, 024021 ]
+"318004" = [  301025, 004023, 013011, 024005, 024004, 024022 ]
+"321001" = [  002101, 002114, 002105, 002106, 002107, 002121 ]
+"321003" = [  021051, 021014, 021017, 021030 ]
+"321004" = [  301031, 002003, 101000, 031001, 321003 ]
+"321005" = [  025004, 002121, 002122, 002123, 002124, 002125, 002126, 002127, 002128, 002129,
+               002130, 002131 ]
+"321006" = [  025001, 025002, 025003, 025005 ]
+"321007" = [  025009, 025010, 025011, 025012, 025013, 025015, 025016, 025017 ]
+"321008" = [  025006, 025007, 025008 ]
+"321009" = [  025018, 025019 ]
+"321010" = [  002101, 007002, 002102, 002103, 002104, 002105, 002106, 002107, 002108, 002109,
+               002110, 002132, 002133 ]
+"321011" = [  030031, 030032, 029002 ]
+"321012" = [  101000, 031001, 002135 ]
+"321021" = [  002003, 002101, 201130, 002106, 201000, 201132, 202130, 002121, 202000, 201000,
+               201133, 202129, 025001, 202000, 201000 ]
+"321022" = [  007007, 204001, 031021, 011001, 204000, 011002, 204001, 031021, 011006, 204000,
+               021030 ]
+"321023" = [  007007, 021091, 021030, 202129, 021014, 201129, 021017, 202000, 201000 ]
+"321024" = [  007007, 204001, 031021, 012007, 011006, 204000, 021030 ]
+"321025" = [  007007, 021091, 021030, 202129, 021014, 201129, 021017, 202000, 201000, 021092,
+               021030, 025092, 201129, 202129, 021017, 202000, 201000 ]
+"321026" = [  007007, 204001, 031021, 012007, 025091, 011071, 011072, 011073, 011074, 204000
+               ]
+"321027" = [  021118, 202129, 201132, 002112, 201000, 201131, 002111, 201000, 202000, 002104,
+               021105, 021106, 021107, 021114, 021115, 021116, 008018, 021117 ]
+"321028" = [  021118, 202129, 201132, 002112, 201000, 201131, 002111, 201000, 202000, 002104,
+               021123, 021106, 021107, 021114, 021115, 021116, 008018, 021117 ]
+"321030" = [  008085, 202129, 201131, 002111, 201000, 202000, 002134, 021062, 021063, 021158,
+               021159, 021160, 021161, 021162, 021163, 021164, 021165, 021166 ]
+"340001" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 033060, 033061, 033062, 033063, 033064, 033065, 101010, 340002, 101087,
+               340003, 002019, 025051, 101007, 340004 ]
+"340002" = [  025140, 025141, 025142 ]
+"340003" = [  104100, 201136, 005042, 201000, 014046 ]
+"340004" = [  005060, 005061, 025085, 105006, 005042, 025142, 014047, 025142, 014048 ]
+"340005" = [  001007, 002019, 001096, 025061, 005044, 005040, 001030, 301011, 301012, 004007,
+               005001, 006001, 008029, 008074, 008077, 040011, 025097, 025095, 025098, 025099,
+               021144, 025096, 040012, 040013, 021169, 022151, 022162, 022163, 025160, 025133,
+               022156, 022164, 022165, 022166, 021137, 021138, 022167, 021139, 021118, 021145,
+               021146, 021147, 022168, 022169, 022170, 025161, 025162, 022171, 022172, 022173,
+               022174, 021170, 021171, 022175, 021172, 021118, 021173, 021174, 021175, 102003,
+               002153, 012063, 013090, 013091, 007002, 011097, 011098, 007002, 011095, 011096,
+               010096, 010081, 010082, 010083, 010101, 025132, 025163, 025126, 025128, 025164,
+               010085, 010097, 010086, 010087, 010092, 010088, 010089, 010098, 010099, 010090,
+               010100, 010093, 025127, 040014 ]
+"340007" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 103003, 025140, 025141, 033060, 033061, 033062, 033063, 033064, 033065,
+               040020, 101010, 340002, 101087, 340003, 002019, 025051, 101007, 340004, 020081,
+               008029, 020083, 008029, 040018, 040019, 040021, 040022 ]
+"340008" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 103003, 025140, 025141, 033060, 033061, 033062, 033063, 033064, 033065,
+               040020, 101010, 340002, 104000, 031002, 201136, 005042, 201000, 014046, 002019,
+               025051, 101007, 340004, 020081, 008029, 020083, 008029, 040018, 040019, 040021,
+               040022 ]
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/1003.table b/definitions/bufr/tables/0/wmo/12/codetables/1003.table
new file mode 100644
index 0000000..ff4f928
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/1003.table
@@ -0,0 +1,8 @@
+0 0 ATARCTICA
+1 1 REGION I
+2 2 REGION II
+3 3 REGION III
+4 4 REGION IV
+5 5 REGION V
+6 6 REGION VI
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/10063.table b/definitions/bufr/tables/0/wmo/12/codetables/10063.table
new file mode 100644
index 0000000..13c6331
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/10063.table
@@ -0,0 +1,10 @@
+0 0 INCREASING, THEN DECREASING: ATMOSPHERIC PRESURE THE SAME OR"     HIGHER THAN 3 HOURS AGO (OR 24 HOURS AGO )
+1 1 INCREASING, THEN STEADY; OR INCREASING; THEN MORE SLOWLY
+2 2 INCREASING (STEADILY OR UNSTEADILY )
+3 3 DECREASING OR STEADY, THEN INCREASING; RAPIDLY
+4 4 STEADY; ATMOSPHERIC PRESSURE THE SAME AS 3 HOURS AGO (OR 24"    HOURS)
+5 5 DECREASING; THEN INCREASING; ATMOSPHERIC PRESSURE THE SAME O"    R LOWER THAN 3 HOURS AGO
+6 6 DECREASING, THEN STEADY; OR DECREASING, DECREASING MORE SLOW"    LY
+7 7 DECREASING (STEADILY OR UNSTEADELY )
+8 8 STEADY OR INCREASING, THEN DECREASING; OR DECREASING, THEN"    DECREASING MORE RAPIDLY
+15 15 MISSING
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/10064.table b/definitions/bufr/tables/0/wmo/12/codetables/10064.table
new file mode 100644
index 0000000..88ba38a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/10064.table
@@ -0,0 +1,4 @@
+0 0 SUBSONIC
+1 1 TRANSONIC
+2 2 SUPERSONIC
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/1007.table b/definitions/bufr/tables/0/wmo/12/codetables/1007.table
new file mode 100644
index 0000000..711e681
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/1007.table
@@ -0,0 +1,132 @@
+1 1 ERS 1
+2 2 ERS 2
+3 3 METOP-1
+4 4 METOP-2
+5 5 METOP-3
+20 20 SPOT1
+21 21 SPOT2
+22 22 SPOT3
+23 23 SPOT4
+40 40 OERSTED
+41 41 CHAMP
+42 42 TERRASAR-X
+50 50 METEOSAT 3
+51 51 METEOSAT 4
+52 52 METEOSAT 5
+53 53 METEOSAT 6
+54 54 METEOSAT 7
+55 55 METEOSAT 8
+56 56 METEOSAT 9
+57 57 METEOSAT 10
+58 58 METEOSAT 1
+59 59 METEOSAT 2
+60 60 ENVISAT
+70 70 METEOSAT 11
+120 120 ADEOS
+121 121 ADEOS II
+150 150 GMS 3
+151 151 GMS 4
+152 152 GMS 5
+171 171 MTSAT-1R
+172 172 MTSAT-2
+200 200 NOAA 8
+201 201 NOAA 9
+202 202 NOAA 10
+203 203 NOAA 11
+204 204 NOAA 12
+205 205 NOAA 14
+206 206 NOAA 15
+207 207 NOAA 16
+208 208 NOAA 17
+209 209 NOAA 18
+220 220 LANDSAT 5
+221 221 LANDSAT 4
+222 222 LANDSAT 7
+240 240 DMSP 7
+241 241 DMSP 8
+242 242 DMSP 9
+243 243 DMSP 10
+244 244 DMSP 11
+245 245 DMSP 12
+246 246 DMSP 13
+247 247 DMSP 14
+248 248 DMSP 15
+249 249 DMSP 16
+250 250 GOES 6
+251 251 GOES 7
+252 252 GOES 8
+253 253 GOES 9
+254 254 GOES 10
+255 255 GOES 11
+256 256 GOES 12
+257 257 GOES 13
+258 258 GOES 14
+259 259 GOES 15
+260 260 JASON-1
+261 261 JASON-2
+281 281 QUIKSCAT
+282 282 TRMM
+283 283 CORIOLIS
+285 285 DMSP17
+310 310 GOMS 1
+311 311 GOMS 2
+320 320 METEOR 2-21
+321 321 METEOR 3-5
+322 322 METEOR 3M-1
+323 323 METEOR 3M-2
+341 341 RESURS 01-4
+430 430 INSAT 1B
+431 431 INSAT 1C
+432 432 INSAT 1D
+450 450 INSAT 2A
+451 451 INSAT 2B
+452 452 INSAT 2E
+470 470 INSAT 3A
+471 471 INSAT 3D
+472 472 INSAT 3E
+500 500 FY-1C
+501 501 FY-1D
+510 510 FY-2
+512 512 FY-2B
+513 513 FY-2C
+514 514 FY-2D
+700 700 TIROS M (ITOS 1)
+701 701 NOAA 1
+702 702 NOAA 2
+703 703 NOAA 3
+704 704 NOAA 4
+705 705 NOAA 5
+706 706 NOAA 6
+707 707 NOAA 7
+708 708 TIROS-N
+710 710 GOES (SMS 1)
+711 711 GOES (SMS 2)
+720 720 TOPEX
+721 721 GFO (GEOSAT FOLLOW ON)
+722 722 GRACE A
+723 723 GRACE B
+731 731 GOES 1
+732 732 GOES 2
+733 733 GOES 3
+734 734 GOES 4
+735 735 GOES 5
+740 740 COSMIC-1
+741 741 COSMIC-2
+742 742 COSMIC-3
+743 743 COSMIC-4
+744 744 COSMIC-5
+745 745 COSMIC-6
+763 763 NIMBUS 3
+764 764 NIMBUS 4
+765 765 NIMBUS 5
+766 766 NIMBUS 6
+767 767 NIMBUS 7
+780 780 ERBS
+781 781 UARS
+782 782 EARTH PROBE
+783 783 TERRA
+784 784 AQUA
+785 785 AURA
+800 800 SUNSAT
+820 820 SAC-C
+1023 1023 MISSIN VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/1031.table b/definitions/bufr/tables/0/wmo/12/codetables/1031.table
new file mode 100644
index 0000000..c105793
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/1031.table
@@ -0,0 +1,219 @@
+0 0 WMO SECRETARIAT
+1 1 MELBOURNE
+2 2 MELBOURNE
+3 3 MELBOURNE
+4 4 MOSCOW
+5 5 MOSCOW
+6 6 MOSCOW
+7 7 US NATIONAL WEATHER SERVICE, NATIONAL CENTRES FOR ENVIRONMEN"    TAL PREDICTION(NCEP)
+8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONSGATEWAY (NWSTG"    )
+9 9 US NATIONAL WEATHER SERVICE - OTHER
+10 10 CAIRO (RSMC)
+11 11 CAIRO (RSMC)
+12 12 DAKAR (RSMC)
+13 13 DAKAR (RSMC)
+14 14 NAIROBI (RSMC)
+15 15 NAIROBI (RSMC)
+16 16 CASABLANCA (RSMC)
+17 17 TUNIS (RSMC)
+18 18 TUNIS CASABLANCA (RSMC)
+19 19 TUNIS CASABLANCA (RSMC)
+20 20 LAS PALMAS
+21 21 ALGIERS (RSMC)
+22 22 ACMAD
+23 23 MOZAMBIQUE NMC
+24 24 PRETORIA (RSMC)
+25 25 LA R?UNION (RSMC)
+26 26 KHABAROVSK (RSMC)
+27 27 KHABAROVSK (RSMC)
+28 28 NEW DELHI (RSMC)
+29 29 NEW DELHI (RSMC)
+30 30 NOVOSIBIRSK (RSMC)
+31 31 NOVOSIBIRSK (RSMC)
+32 32 TASHKENT (RSMC)
+33 33 JEDDAH (RSMC)
+34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+35 35 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+36 36 BANGKOK
+37 37 ULAN BATOR
+38 38 BEIJING (RSMC)
+39 39 BEIJING (RSMC)
+40 40 SEOUL
+41 41 BUENOS AIRES (RSMC)
+42 42 BUENOS AIRES (RSMC)
+43 43 BRASILIA (RSMC)
+44 44 BRASILIA (RSMC)
+45 45 SANTIAGO
+46 46 BRAZILIAN SPACE AGENCY - INPE
+47 47 COLOMBIA NMC
+48 48 ECUADOR NMC
+49 49 PERU NMC                  50
+50 50 VENEZUELA NMC
+51 51 MIAMI (RSMC)
+52 52 MIAMI RSMC, NATIONAL HURRICANE CENTER
+53 53 MONTREAL (RSMC)
+54 54 MONTREAL (RSMC)
+55 55 SAN FRANCISCO
+56 56 ARINC CENTRE
+57 57 U.S. AIR FORCE AIR FORCE GLOBAL WEATHER CENTRAL
+58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTERE"    Y, CA
+59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, USA
+60 60 UNITED STATES NATIONAL CENTRE FOR ATMOSPHERIC RESEARCH (NCAR"    )
+61 61 SERVICE ARGOS - LANDOVER
+62 62 U.S. NAVAL OCEANOGRAPHIC OFFICE
+63 63 IRI (INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIET"    Y)
+64 64 HONOLULU (RSMC)
+65 65 DARWIN (RSMC)
+66 66 DARWIN (RSMC)
+67 67 MELBOURNE (RSMC)
+69 69 WELLINGTON (RSMC)
+70 70 WELLINGTON (RSMC)
+71 71 NADI (RSMC)
+72 72 SINGAPORE
+73 73 MALAYSIA NMC
+74 74 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+75 75 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+76 76 MOSCOW (RSMC)
+78 78 OFFENBACH (RSMC)
+79 79 OFFENBACH (RSMC)
+80 80 ROME (RSMC)
+81 81 ROME (RSMC)
+82 82 NORRK?PING
+83 83 NORRK?PING
+84 84 TOULOUSE (RSMC)
+85 85 TOULOUSE (RSMC)
+86 86 HELSINKI
+87 87 BELGRADE
+88 88 OSLO
+89 89 PRAGUE
+90 90 EPISKOPI
+91 91 ANKARA
+92 92 FRANKFURT/MAIN)
+93 93 LONDON (WAFC)
+94 94 COPENHAGEN
+95 95 ROTA
+96 96 ATHENS
+97 97 EUROPEAN SPACE AGENCY (ESA)
+98 98 EUROPEAN CENTRE FOR MEDIUM-RANGE WEATHER FORECAST (ECMWF)
+99 99 DE BILT
+100 100 BRAZZAVILLE
+101 101 ABIDJAN
+102 102 LIBYAN ARAB JAMAHIRIYA NMC
+103 103 MADAGASCAR NMC
+104 104 MAURITIUS NMC
+105 105 NIGER NMC
+106 106 SEYCHELLES NMC
+107 107 UGANDA NMC
+108 108 TANZANIA NMC
+109 109 ZIMBABWE NMC
+110 110 HONG-KONG, CHINA
+111 111 AFGHANISTAN NMC          110
+112 112 BAHRAIN NMC
+113 113 BANGLADESH NMC
+114 114 BHUTAN NMC
+115 115 CAMBODIA NMC
+116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA NMC
+117 117 ISLAMIC REPUBLIC OF IRAN NMC
+118 118 IRAQ NMC
+119 119 KAZAKHSTAN NMC
+120 120 KUWAIT NMC
+121 121 KYRGYZ REPUBLIC NMC
+122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC NMC
+123 123 MACAO, CHINA
+124 124 MALDIVES NMC
+125 125 MYANMAR NMC
+126 126 NEPAL NMC
+127 127 OMAN NMC
+128 128 PAKISTAN NMC
+129 129 QATAR NMC
+130 130 REPUBLIC OF YEMEN NMC
+131 131 SRI LANKA NMC
+132 132 TAJIKISTAN NMC
+133 133 TURKMENISTAN NMC
+134 134 UNITED ARAB EMIRATES NMC
+135 135 UZBEKISTAN NMC
+136 136 SOCIALIST REPUBLIC OF VIET NAM NMC
+140 140 BOLIVIA NMC
+141 141 GUYANA NMC
+142 142 PARAGUAY NMC
+143 143 SURINAME NMC
+144 144 URUGUAY NMC                     140
+145 145 FRENCH GUYANA
+146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE
+150 150 ANTIGUA AND BARBUDA NMC
+151 151 BAHAMAS NMC
+152 152 BARBADOS NMC
+153 153 BELIZE NMC
+154 154 BRITISH CARIBBEAN TERRITORIES CENTRE
+155 155 SAN JOSE
+156 156 CUBA NMC
+157 157 DOMINICA NMC
+158 158 DOMINICAN REPUBLIC NMC
+159 159 EL SALVADOR NMC
+160 160 US NOAA/NESDIS
+161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH
+162 162 GUATEMALA NMC
+163 163 HAITI NMC
+164 164 HONDURAS NMC
+165 165 JAMAICA NMC
+166 166 MEXICO
+167 167 NETHERLANDS ANTILLES AND ARUBA NMC
+168 168 NICARAGUA NMC
+169 169 PANAMA NMC
+170 170 SAINT LUCIA NMC
+171 171 TRINIDAD AND TOBAGO NMC
+172 172 FRENCH DEPARTMENTS IN RA IV
+173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA)
+190 190 COOK ISLANDS NMC
+191 191 FRENCH POLYNESIA NMC
+192 192 TONGA NMC
+193 193 VANUATU NMC
+194 194 BRUNEI DARUSSALAM NMC
+195 195 INDONESIA NMC
+196 196 KIRIBATI NMC
+197 197 FEDERATED STATES OF MICRONESIA NMC
+198 198 NEW CALEDONIA NMC
+199 199 NIUE
+200 200 PAPUA NEW GUINEA NMC
+201 201 PHILIPPINES NMC
+202 202 SAMOA NMC
+203 203 SOLOMON ISLANDS NMC
+210 210 FRASCATI (ESA/ESRIN)
+211 211 LANNION
+212 212 LISBOA
+213 213 REYKJAVIK
+214 214 MADRID
+215 215 Z?RICH
+216 216 SERVICE ARGOS TOULOUSE
+217 217 BRATISLAVA
+218 218 BUDAPEST
+219 219 LJUBLJANA
+220 220 WARSAW
+221 221 ZAGREB
+222 222 ALBANIA NMC
+223 223 ARMENIA NMC
+224 224 AUSTRIA NMC
+225 225 AZERBAIJAN NMC
+226 226 BELARUS NMC
+227 227 BELGIUM NMC
+228 228 BOSNIA AND HERZEGOVINA NMC
+229 229 BULGARIA NMC
+230 230 CYPRUS NMC
+231 231 ESTONIA NMC
+232 232 GEORGIA NMC
+233 233 DUBLIN
+234 234 ISRAEL NMC
+235 235 JORDAN NMC
+236 236 LATVIA NMC
+237 237 LEBANON NMC
+238 238 LITHUANIA NMC
+239 239 LUXEMBOURG
+240 240 MALTA NMC
+241 241 MONACO
+242 242 ROMANIA NMC
+243 243 SYRIAN ARAB REPUBLIC NMC
+244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA NMC
+245 245 UKRAINE NMC
+246 246 REPUBLIC OF MOLDOVA NMC
+254 254 EUMETSAT OPERATION CENTRE
+255 255 MISSING VALUE               219
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/1032.table b/definitions/bufr/tables/0/wmo/12/codetables/1032.table
new file mode 100644
index 0000000..2bf1e24
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/1032.table
@@ -0,0 +1,41 @@
+1 1 PREPROCESSING CONSISTENCY CHECK
+10 10 BIAS CORRECTION
+20 20 BLACK LIST
+30 30 OI MASS AND WIND ANALYSIS, REPORT STATUS
+31 31 OI HUMIDITY ANALYSIS, REPORT STATUS
+32 32 OI ANALYSIS VARIABLES
+33 33 OI ANALYSIS, FIRST GUESS Q/C
+34 34 OI ANALYSIS, FINAL ANALYSIS Q/C
+35 35 OI ANALYSIS, EVENT FLAGS
+40 40 DYNAMIC INITIALISATION SCHEME
+41 41 NORMAL MODE INITIALISATION SCHEME
+50 50 SURFACE ANALYSIS, REPORT STATUS
+51 51 SURFACE ANALYSIS VARIABLES
+52 52 SURFACE ANALYSIS Q/C
+53 53 SURFACE ANALYSIS, EVENT FLAGS
+60 60 3D VAR REPORT STATUS
+61 61 3D VAR ANALYSIS VARIABLES
+62 62 3D VAR Q/C
+63 63 3D VAR EVENT FLAGS
+80 80 PRESAT FIRST GUESS
+81 81 PRESAT ERROR STANDARD DEVIATIONS
+82 82 PRESAT BIAS ESTIMATES
+83 83 PRESAT BRIGHTNESS TEMPERATURE QUALITY FLAGS
+84 84 PRESAT SAMARY FLAGS
+90 90 FIRST GUESS (6 HOUR FORECAST)
+91 91 FIRST GUESS (FGAT INTERPOLATED)
+100 100 PRESCAT AMBIGUITY REMOVAL
+110 110 WAM FIRST GUESS
+111 111 WAM ANALYSIS
+112 112 WAM FORECAST
+113 113 WAM Q/C
+201 201 COLLOCATION WITH SURFACE DATA
+202 202 COLLOCATION WITH TEMP/PILOT DATA
+203 203 COLLOCATION WITH AIREP DATA
+204 204 COLLOCATION WITH SATOB DATA
+205 205 COLLOCATION WITH TOVS DATA
+206 206 COLLOCATION WITH ERS1 SCATTEROMETER DATA
+207 207 COLLOCATION WITH ERS1 ALTIMETER DATA
+220 220 ERS1 SCATTEROMETER COLLOCATION BLACK LIST
+230 230 GAUSS ERROR
+231 231 GROSS ERROR
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/1033.table b/definitions/bufr/tables/0/wmo/12/codetables/1033.table
new file mode 100644
index 0000000..637e315
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/1033.table
@@ -0,0 +1,219 @@
+0 0 WMO SECRETARIAT
+1 1 MELBOURNE
+2 2 MELBOURNE
+3 3 MELBOURNE
+4 4 MOSCOW
+5 5 MOSCOW
+6 6 MOSCOW
+7 7 US NATIONAL WEATHER SERVICE, NATIONAL CENTRES FOR ENVIRONMEN"    TAL PREDICTION(NCEP)
+8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONSGATEWAY (NWSTG"    )
+9 9 US NATIONAL WEATHER SERVICE - OTHER
+10 10 CAIRO (RSMC)
+11 11 CAIRO (RSMC)
+12 12 DAKAR (RSMC)
+13 13 DAKAR (RSMC)
+14 14 NAIROBI (RSMC)
+15 15 NAIROBI (RSMC)
+16 16 CASABLANCA (RSMC)
+17 17 TUNIS (RSMC)
+18 18 TUNIS CASABLANCA (RSMC)
+19 19 TUNIS CASABLANCA (RSMC)
+20 20 LAS PALMAS
+21 21 ALGIERS (RSMC)
+22 22 ACMAD
+23 23 MOZAMBIQUE NMC
+24 24 PRETORIA (RSMC)
+25 25 LA R?UNION (RSMC)
+26 26 KHABAROVSK (RSMC)
+27 27 KHABAROVSK (RSMC)
+28 28 NEW DELHI (RSMC)
+29 29 NEW DELHI (RSMC)
+30 30 NOVOSIBIRSK (RSMC)
+31 31 NOVOSIBIRSK (RSMC)
+32 32 TASHKENT (RSMC)
+33 33 JEDDAH (RSMC)
+34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+35 35 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+36 36 BANGKOK
+37 37 ULAN BATOR
+38 38 BEIJING (RSMC)
+39 39 BEIJING (RSMC)
+40 40 SEOUL
+41 41 BUENOS AIRES (RSMC)
+42 42 BUENOS AIRES (RSMC)
+43 43 BRASILIA (RSMC)
+44 44 BRASILIA (RSMC)
+45 45 SANTIAGO
+46 46 BRAZILIAN SPACE AGENCY - INPE
+47 47 COLOMBIA NMC
+48 48 ECUADOR NMC
+49 49 PERU NMC                  50
+50 50 VENEZUELA NMC
+51 51 MIAMI (RSMC)
+52 52 MIAMI RSMC, NATIONAL HURRICANE CENTER
+53 53 MONTREAL (RSMC)
+54 54 MONTREAL (RSMC)
+55 55 SAN FRANCISCO
+56 56 ARINC CENTRE
+57 57 U.S. AIR FORCE AIR FORCE GLOBAL WEATHER CENTRAL
+58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTERE"    Y, CA
+59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, USA
+60 60 UNITED STATES NATIONAL CENTRE FOR ATMOSPHERIC RESEARCH (NCAR"    )
+61 61 SERVICE ARGOS - LANDOVER
+62 62 U.S. NAVAL OCEANOGRAPHIC OFFICE
+63 63 IRI (INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIET"    Y)
+64 64 HONOLULU (RSMC)
+65 65 DARWIN (RSMC)
+66 66 DARWIN (RSMC)
+67 67 MELBOURNE (RSMC)
+69 69 WELLINGTON (RSMC)
+70 70 WELLINGTON (RSMC)
+71 71 NADI (RSMC)
+72 72 SINGAPORE
+73 73 MALAYSIA NMC
+74 74 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+75 75 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+76 76 MOSCOW (RSMC)
+78 78 OFFENBACH (RSMC)
+79 79 OFFENBACH (RSMC)
+80 80 ROME (RSMC)
+81 81 ROME (RSMC)
+82 82 NORRK?PING
+83 83 NORRK?PING
+84 84 TOULOUSE (RSMC)
+85 85 TOULOUSE (RSMC)
+86 86 HELSINKI
+87 87 BELGRADE
+88 88 OSLO
+89 89 PRAGUE
+90 90 EPISKOPI
+91 91 ANKARA
+92 92 FRANKFURT/MAIN)
+93 93 LONDON (WAFC)
+94 94 COPENHAGEN
+95 95 ROTA
+96 96 ATHENS
+97 97 EUROPEAN SPACE AGENCY (ESA)
+98 98 EUROPEAN CENTRE FOR MEDIUM-RANGE WEATHER FORECAST (ECMWF)
+99 99 DE BILT
+100 100 BRAZZAVILLE
+101 101 ABIDJAN
+102 102 LIBYAN ARAB JAMAHIRIYA NMC
+103 103 MADAGASCAR NMC
+104 104 MAURITIUS NMC
+105 105 NIGER NMC
+106 106 SEYCHELLES NMC
+107 107 UGANDA NMC
+108 108 TANZANIA NMC
+109 109 ZIMBABWE NMC
+110 110 HONG-KONG, CHINA
+111 111 AFGHANISTAN NMC          110
+112 112 BAHRAIN NMC
+113 113 BANGLADESH NMC
+114 114 BHUTAN NMC
+115 115 CAMBODIA NMC
+116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA NMC
+117 117 ISLAMIC REPUBLIC OF IRAN NMC
+118 118 IRAQ NMC
+119 119 KAZAKHSTAN NMC
+120 120 KUWAIT NMC
+121 121 KYRGYZ REPUBLIC NMC
+122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC NMC
+123 123 MACAO, CHINA
+124 124 MALDIVES NMC
+125 125 MYANMAR NMC
+126 126 NEPAL NMC
+127 127 OMAN NMC
+128 128 PAKISTAN NMC
+129 129 QATAR NMC
+130 130 REPUBLIC OF YEMEN NMC
+131 131 SRI LANKA NMC
+132 132 TAJIKISTAN NMC
+133 133 TURKMENISTAN NMC
+134 134 UNITED ARAB EMIRATES NMC
+135 135 UZBEKISTAN NMC
+136 136 SOCIALIST REPUBLIC OF VIET NAM NMC
+140 140 BOLIVIA NMC
+141 141 GUYANA NMC
+142 142 PARAGUAY NMC
+143 143 SURINAME NMC
+144 144 URUGUAY NMC                     140
+145 145 FRENCH GUYANA
+146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE
+150 150 ANTIGUA AND BARBUDA NMC
+151 151 BAHAMAS NMC
+152 152 BARBADOS NMC
+153 153 BELIZE NMC
+154 154 BRITISH CARIBBEAN TERRITORIES CENTRE
+155 155 SAN JOSE
+156 156 CUBA NMC
+157 157 DOMINICA NMC
+158 158 DOMINICAN REPUBLIC NMC
+159 159 EL SALVADOR NMC
+160 160 US NOAA/NESDIS
+161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH
+162 162 GUATEMALA NMC
+163 163 HAITI NMC
+164 164 HONDURAS NMC
+165 165 JAMAICA NMC
+166 166 MEXICO
+167 167 NETHERLANDS ANTILLES AND ARUBA NMC
+168 168 NICARAGUA NMC
+169 169 PANAMA NMC
+170 170 SAINT LUCIA NMC
+171 171 TRINIDAD AND TOBAGO NMC
+172 172 FRENCH DEPARTMENTS IN RA IV
+173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA)
+190 190 COOK ISLANDS NMC
+191 191 FRENCH POLYNESIA NMC
+192 192 TONGA NMC
+193 193 VANUATU NMC
+194 194 BRUNEI DARUSSALAM NMC
+195 195 INDONESIA NMC
+196 196 KIRIBATI NMC
+197 197 FEDERATED STATES OF MICRONESIA NMC
+198 198 NEW CALEDONIA NMC
+199 199 NIUE
+200 200 PAPUA NEW GUINEA NMC
+201 201 PHILIPPINES NMC
+202 202 SAMOA NMC
+203 203 SOLOMON ISLANDS NMC
+210 210 FRASCATI (ESA/ESRIN)
+211 211 LANNION
+212 212 LISBOA
+213 213 REYKJAVIK
+214 214 MADRID
+215 215 Z?RICH
+216 216 SERVICE ARGOS TOULOUSE
+217 217 BRATISLAVA
+218 218 BUDAPEST
+219 219 LJUBLJANA            190
+220 220 WARSAW
+221 221 ZAGREB
+222 222 ALBANIA NMC
+223 223 ARMENIA NMC
+224 224 AUSTRIA NMC
+225 225 AZERBAIJAN NMC
+226 226 BELARUS NMC
+227 227 BELGIUM NMC
+228 228 BOSNIA AND HERZEGOVINA NMC
+229 229 BULGARIA NMC
+230 230 CYPRUS NMC
+231 231 ESTONIA NMC
+232 232 GEORGIA NMC
+233 233 DUBLIN
+234 234 ISRAEL NMC
+235 235 JORDAN NMC
+236 236 LATVIA NMC
+237 237 LEBANON NMC
+238 238 LITHUANIA NMC
+239 239 LUXEMBOURG
+240 240 MALTA NMC
+241 241 MONACO
+242 242 ROMANIA NMC
+243 243 SYRIAN ARAB REPUBLIC NMC
+244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA NMC
+245 245 UKRAINE NMC
+246 246 REPUBLIC OF MOLDOVA NMC
+254 254 EUMETSAT OPERATION CENTRE
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/1035.table b/definitions/bufr/tables/0/wmo/12/codetables/1035.table
new file mode 100644
index 0000000..734c534
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/1035.table
@@ -0,0 +1,219 @@
+0 0 WMO SECRETARIAT
+1 1 MELBOURNE
+2 2 MELBOURNE
+3 3 MELBOURNE
+4 4 MOSCOW
+5 5 MOSCOW
+6 6 MOSCOW
+7 7 US NATIONAL WEATHER SERVICE, NATIONAL CENTRES FOR ENVIRONMEN"    TAL PREDICTION(NCEP)
+8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONSGATEWAY (NWSTG"    )
+9 9 US NATIONAL WEATHER SERVICE - OTHER
+10 10 CAIRO (RSMC)
+11 11 CAIRO (RSMC)
+12 12 DAKAR (RSMC)
+13 13 DAKAR (RSMC)
+14 14 NAIROBI (RSMC)
+15 15 NAIROBI (RSMC)
+16 16 CASABLANCA (RSMC)
+17 17 TUNIS (RSMC)
+18 18 TUNIS CASABLANCA (RSMC)
+19 19 TUNIS CASABLANCA (RSMC)
+20 20 LAS PALMAS
+21 21 ALGIERS (RSMC)
+22 22 ACMAD
+23 23 MOZAMBIQUE NMC
+24 24 PRETORIA (RSMC)
+25 25 LA R?UNION (RSMC)
+26 26 KHABAROVSK (RSMC)
+27 27 KHABAROVSK (RSMC)
+28 28 NEW DELHI (RSMC)
+29 29 NEW DELHI (RSMC)
+30 30 NOVOSIBIRSK (RSMC)
+31 31 NOVOSIBIRSK (RSMC)
+32 32 TASHKENT (RSMC)
+33 33 JEDDAH (RSMC)
+34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+35 35 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+36 36 BANGKOK
+37 37 ULAN BATOR
+38 38 BEIJING (RSMC)
+39 39 BEIJING (RSMC)
+40 40 SEOUL
+41 41 BUENOS AIRES (RSMC)
+42 42 BUENOS AIRES (RSMC)
+43 43 BRASILIA (RSMC)
+44 44 BRASILIA (RSMC)
+45 45 SANTIAGO
+46 46 BRAZILIAN SPACE AGENCY - INPE
+47 47 COLOMBIA NMC
+48 48 ECUADOR NMC
+49 49 PERU NMC                  50
+50 50 VENEZUELA NMC
+51 51 MIAMI (RSMC)
+52 52 MIAMI RSMC, NATIONAL HURRICANE CENTER
+53 53 MONTREAL (RSMC)
+54 54 MONTREAL (RSMC)
+55 55 SAN FRANCISCO
+56 56 ARINC CENTRE
+57 57 U.S. AIR FORCE AIR FORCE GLOBAL WEATHER CENTRAL
+58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTERE"    Y, CA
+59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, USA
+60 60 UNITED STATES NATIONAL CENTRE FOR ATMOSPHERIC RESEARCH (NCAR"    )
+61 61 SERVICE ARGOS - LANDOVER
+62 62 U.S. NAVAL OCEANOGRAPHIC OFFICE
+63 63 IRI (INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIET"    Y)
+64 64 HONOLULU (RSMC)
+65 65 DARWIN (RSMC)
+66 66 DARWIN (RSMC)
+67 67 MELBOURNE (RSMC)
+69 69 WELLINGTON (RSMC)
+70 70 WELLINGTON (RSMC)
+71 71 NADI (RSMC)
+72 72 SINGAPORE
+73 73 MALAYSIA NMC
+74 74 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+75 75 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+76 76 MOSCOW (RSMC)
+78 78 OFFENBACH (RSMC)
+79 79 OFFENBACH (RSMC)
+80 80 ROME (RSMC)
+81 81 ROME (RSMC)
+82 82 NORRK?PING
+83 83 NORRK?PING
+84 84 TOULOUSE (RSMC)
+85 85 TOULOUSE (RSMC)
+86 86 HELSINKI
+87 87 BELGRADE
+88 88 OSLO
+89 89 PRAGUE
+90 90 EPISKOPI
+91 91 ANKARA
+92 92 FRANKFURT/MAIN)
+93 93 LONDON (WAFC)
+94 94 COPENHAGEN
+95 95 ROTA
+96 96 ATHENS
+97 97 EUROPEAN SPACE AGENCY (ESA)
+98 98 EUROPEAN CENTRE FOR MEDIUM-RANGE WEATHER FORECAST (ECMWF)
+99 99 DE BILT
+100 100 BRAZZAVILLE
+101 101 ABIDJAN
+102 102 LIBYAN ARAB JAMAHIRIYA NMC
+103 103 MADAGASCAR NMC
+104 104 MAURITIUS NMC
+105 105 NIGER NMC
+106 106 SEYCHELLES NMC
+107 107 UGANDA NMC
+108 108 TANZANIA NMC
+109 109 ZIMBABWE NMC
+110 110 HONG-KONG, CHINA
+111 111 AFGHANISTAN NMC          110
+112 112 BAHRAIN NMC
+113 113 BANGLADESH NMC
+114 114 BHUTAN NMC
+115 115 CAMBODIA NMC
+116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA NMC
+117 117 ISLAMIC REPUBLIC OF IRAN NMC
+118 118 IRAQ NMC
+119 119 KAZAKHSTAN NMC
+120 120 KUWAIT NMC
+121 121 KYRGYZ REPUBLIC NMC
+122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC NMC
+123 123 MACAO, CHINA
+124 124 MALDIVES NMC
+125 125 MYANMAR NMC
+126 126 NEPAL NMC
+127 127 OMAN NMC
+128 128 PAKISTAN NMC
+129 129 QATAR NMC
+130 130 REPUBLIC OF YEMEN NMC
+131 131 SRI LANKA NMC
+132 132 TAJIKISTAN NMC
+133 133 TURKMENISTAN NMC
+134 134 UNITED ARAB EMIRATES NMC
+135 135 UZBEKISTAN NMC
+136 136 SOCIALIST REPUBLIC OF VIET NAM NMC
+140 140 BOLIVIA NMC
+141 141 GUYANA NMC
+142 142 PARAGUAY NMC
+143 143 SURINAME NMC
+144 144 URUGUAY NMC                     140
+145 145 FRENCH GUYANA
+146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE
+150 150 ANTIGUA AND BARBUDA NMC
+151 151 BAHAMAS NMC
+152 152 BARBADOS NMC
+153 153 BELIZE NMC
+154 154 BRITISH CARIBBEAN TERRITORIES CENTRE
+155 155 SAN JOSE
+156 156 CUBA NMC
+157 157 DOMINICA NMC
+158 158 DOMINICAN REPUBLIC NMC
+159 159 EL SALVADOR NMC
+160 160 US NOAA/NESDIS
+161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH
+162 162 GUATEMALA NMC
+163 163 HAITI NMC
+164 164 HONDURAS NMC
+165 165 JAMAICA NMC
+166 166 MEXICO
+167 167 NETHERLANDS ANTILLES AND ARUBA NMC
+168 168 NICARAGUA NMC
+169 169 PANAMA NMC
+170 170 SAINT LUCIA NMC
+171 171 TRINIDAD AND TOBAGO NMC
+172 172 FRENCH DEPARTMENTS IN RA IV
+173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA)
+190 190 COOK ISLANDS NMC
+191 191 FRENCH POLYNESIA NMC
+192 192 TONGA NMC
+193 193 VANUATU NMC
+194 194 BRUNEI DARUSSALAM NMC
+195 195 INDONESIA NMC
+196 196 KIRIBATI NMC
+197 197 FEDERATED STATES OF MICRONESIA NMC
+198 198 NEW CALEDONIA NMC
+199 199 NIUE
+200 200 PAPUA NEW GUINEA NMC
+201 201 PHILIPPINES NMC
+202 202 SAMOA NMC
+203 203 SOLOMON ISLANDS NMC
+210 210 FRASCATI (ESA/ESRIN)
+211 211 LANNION
+212 212 LISBOA
+213 213 REYKJAVIK
+214 214 MADRID
+215 215 Z?RICH
+216 216 SERVICE ARGOS TOULOUSE
+217 217 BRATISLAVA
+218 218 BUDAPEST
+219 219 LJUBLJANA            190
+220 220 WARSAW
+221 221 ZAGREB
+222 222 ALBANIA NMC
+223 223 ARMENIA NMC
+224 224 AUSTRIA NMC
+225 225 AZERBAIJAN NMC
+226 226 BELARUS NMC
+227 227 BELGIUM NMC
+228 228 BOSNIA AND HERZEGOVINA NMC
+229 229 BULGARIA NMC
+230 230 CYPRUS NMC
+231 231 ESTONIA NMC
+232 232 GEORGIA NMC
+233 233 DUBLIN
+234 234 ISRAEL NMC
+235 235 JORDAN NMC
+236 236 LATVIA NMC
+237 237 LEBANON NMC
+238 238 LITHUANIA NMC
+239 239 LUXEMBOURG
+240 240 MALTA NMC
+241 241 MONACO
+242 242 ROMANIA NMC
+243 243 SYRIAN ARAB REPUBLIC NMC
+244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA NMC
+245 245 UKRAINE NMC
+246 246 REPUBLIC OF MOLDOVA NMC
+254 254 EUMETSAT OPERATION CENTRE
+255 255 MISSING VALUE               219
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/1090.table b/definitions/bufr/tables/0/wmo/12/codetables/1090.table
new file mode 100644
index 0000000..e1cf86c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/1090.table
@@ -0,0 +1,5 @@
+0 0 LAF (LAGGED-AVERAGE FORECASTING)
+1 1 BREEDING
+2 2 SINGULAR VECTOR
+3 3 MULTIPLE ANALYSIS CYCLE
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/1092.table b/definitions/bufr/tables/0/wmo/12/codetables/1092.table
new file mode 100644
index 0000000..dc9bf1c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/1092.table
@@ -0,0 +1,5 @@
+0 0 UNPERTURBED HIGH-RESOLUTION CONTROL FORECAST
+1 1 UNPERTURBED LOW-RESOLUTION CONTROL FORECAST
+2 2 NEGATIVELY PERTURBED FORECAST
+3 3 POSITIVELY PERTURBED FORECAST
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/11031.table b/definitions/bufr/tables/0/wmo/12/codetables/11031.table
new file mode 100644
index 0000000..fd7a8e0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/11031.table
@@ -0,0 +1,9 @@
+0 0 NIL           IN CLOUD
+1 1 SLIGHT        IN CLOUD
+2 2 MODERATE      IN CLOUD
+3 3 SEVERE        IN CLOUD
+4 4 NIL           IN CLEAR AIR
+5 5 SLIGHT        IN CLEAR AIR
+6 6 MODERATE      IN CLEAR AIR
+7 7 SEVERE        IN CLEAR AIR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/11037.table b/definitions/bufr/tables/0/wmo/12/codetables/11037.table
new file mode 100644
index 0000000..1fed72b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/11037.table
@@ -0,0 +1,30 @@
+0 0 AVE <0.1 PEAK <0.1
+1 1 AVE <0.1 0.1 <= PEAK <0.2
+2 2 0.1 <= AVE <0.2 0.1 <= PEAK <0.2
+3 3 AVE <0.1 0.2 <= PEAK <0.3
+4 4 0.1 <= AVE <0.2 0.2 <= PEAK <0.3
+5 5 0.2 <= AVE <0.3 0.2 <= PEAK <0.3
+6 6 AVE <0.1 0.3 <= PEAK <0.4
+7 7 0.1 <= AVE <0.2 0.3 <= PEAK <0.4
+8 8 0.2 <= AVE <0.3 0.3 <= PEAK <0.4
+9 9 0.3 <= AVE <0.4 0.3 <= PEAK <0.4
+10 10 AVE <0.1 0.4 <= PEAK <0.5
+11 11 0.1 <= AVE <0.2 0.4 <= PEAK <0.5
+12 12 0.2 <= AVE <0.3 0.4 <= PEAK <0.5
+13 13 0.3 <= AVE <0.4 0.4 <= PEAK <0.5
+14 14 0.4 <= AVE <0.5 0.4 <= PEAK <0.5
+15 15 AVE <0.1 0.5 <= PEAK <0.8
+16 16 0.1 <= AVE <0.2 0.5 <= PEAK <0.8
+17 17 0.2 <= AVE <0.3 0.5 <= PEAK <0.8
+18 18 0.3 <= AVE <0.4 0.5 <= PEAK <0.8
+19 19 0.4 <= AVE <0.5 0.5 <= PEAK <0.8
+20 20 0.5 <= AVE <0.8 0.5 <= PEAK <0.8
+21 21 AVE <0.1 0.8 <= PEAK
+22 22 0.1 <= AVE <0.2 0.8 <= PEAK
+23 23 0.2 <= AVE <0.3 0.8 <= PEAK
+24 24 0.3 <= AVE <0.4 0.8 <= PEAK
+25 25 0.4 <= AVE <0.5 0.8 <= PEAK
+26 26 0.5 <= AVE <0.8 0.8 <= PEAK
+27 27 0.8 <= AVE 0.8 <= PEAK
+28 28 NIL              NIL
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/11038.table b/definitions/bufr/tables/0/wmo/12/codetables/11038.table
new file mode 100644
index 0000000..f0c5cce
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/11038.table
@@ -0,0 +1,17 @@
+0 0 MIN < 1
+1 1 1 <= MIN < 2
+2 2 2 <= MIN < 3
+3 3 3 <= MIN < 4
+4 4 4 <= MIN < 5
+5 5 5 <= MIN < 6
+6 6 6 <= MIN < 7
+7 7 7 <= MIN < 8
+8 8 8 <= MIN < 9
+9 9 9 <= MIN < 10
+10 10 10 <= MIN < 11
+11 11 11 <= MIN < 12
+12 12 12 <= MIN < 13
+13 13 13 <= MIN < 14
+14 14 14 <= MIN < 15
+15 15 NO TIMING INFORMATION AVAILABLE
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/11039.table b/definitions/bufr/tables/0/wmo/12/codetables/11039.table
new file mode 100644
index 0000000..1bb26b7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/11039.table
@@ -0,0 +1,16 @@
+0 0 1 <= MIN < 2
+1 1 2 <= MIN < 3
+2 2 3 <= MIN < 4
+4 4 4 <= MIN < 5
+5 5 5 <= MIN < 6
+6 6 6 <= MIN < 7
+7 7 7 <= MIN < 8
+8 8 8 <= MIN < 9
+9 9 9 <= MIN < 10
+10 10 10 <= MIN < 11
+11 11 11 <= MIN < 12
+12 12 12 <= MIN < 13
+13 13 13 <= MIN < 14
+14 14 14 <= MIN < 15
+60 60 NO TIMING INFORMATION AVAILABLE
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/13038.table b/definitions/bufr/tables/0/wmo/12/codetables/13038.table
new file mode 100644
index 0000000..19bc422
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/13038.table
@@ -0,0 +1,4 @@
+0 0 NOT SUPERADIABATIC
+1 1 SUPERADIABATIC
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/13039.table b/definitions/bufr/tables/0/wmo/12/codetables/13039.table
new file mode 100644
index 0000000..c070b1d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/13039.table
@@ -0,0 +1,3 @@
+0 0 SEA ICE
+1 1 SNOW ON LAND
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/13040.table b/definitions/bufr/tables/0/wmo/12/codetables/13040.table
new file mode 100644
index 0000000..8e1dcfe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/13040.table
@@ -0,0 +1,9 @@
+0 0 LAND
+1 1 RESERVED
+2 2 NEAR COAST
+3 3 ICE
+4 4 POSSIBLE ICE
+5 5 OCEAN
+6 6 COAST
+7 7 DESERT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/13041.table b/definitions/bufr/tables/0/wmo/12/codetables/13041.table
new file mode 100644
index 0000000..d53bf87
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/13041.table
@@ -0,0 +1,10 @@
+1 1 A
+2 2 A-B
+3 3 B
+4 4 B-C
+5 5 C
+6 6 D
+7 7 E
+8 8 F
+9 9 G
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/13051.table b/definitions/bufr/tables/0/wmo/12/codetables/13051.table
new file mode 100644
index 0000000..70807eb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/13051.table
@@ -0,0 +1,8 @@
+0 0 SMALLER THAN ANY VALUE IN THE 30 YEARS PERIOD
+1 1 IN THE FIRST QUINTILE
+2 2 IN THE SECOND QUINTILE
+3 3 IN THE THIRD QUINTILE
+4 4 IN THE FOURTH QUINTILE
+5 5 IN THE FIFTH QUINTILE
+6 6 GREATER THAN ANY VALUE IN THE 30 YEAR PERIOD
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/13056.table b/definitions/bufr/tables/0/wmo/12/codetables/13056.table
new file mode 100644
index 0000000..02eeb56
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/13056.table
@@ -0,0 +1,10 @@
+0 0 NO PRECIPITATION
+1 1 LIGHT INTERMITTENT
+2 2 MODERATE INTERMITTENT
+3 3 HEAVY INTERMITTENT
+4 4 VERY HEAVY INTERMITTENT
+5 5 LIGHT CONTINUOUS
+6 6 MODERATE CONTINUOUS
+7 7 VERY HEAVY CONTINUOUS
+9 9 VARIABLE-ALTERNATIVELY LIGHT AND HEAVY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/13057.table b/definitions/bufr/tables/0/wmo/12/codetables/13057.table
new file mode 100644
index 0000000..9c8571c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/13057.table
@@ -0,0 +1,11 @@
+0 0 NO PRECIPITATION
+1 1 WITHIN THE LAST HOUR
+2 2 1 TO 2 HOURS AGO
+3 3 2 TO 3 HOURS AGO
+4 4 3 TO 4 HOURS AGO
+5 5 4 TO 5 HOURS AGO
+6 6 5 TO 6 HOURS AGO
+7 7 6 TO 8 HOURS AGO
+8 8 8 TO 10 HOURS AGO
+9 9 MORE THAN 10 HOURS AHO
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/15025.table b/definitions/bufr/tables/0/wmo/12/codetables/15025.table
new file mode 100644
index 0000000..acb0f2b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/15025.table
@@ -0,0 +1,2 @@
+0 0 OZONE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/19001.table b/definitions/bufr/tables/0/wmo/12/codetables/19001.table
new file mode 100644
index 0000000..2b92574
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/19001.table
@@ -0,0 +1,7 @@
+0 0 DEPRESSION OR LOW (EXTRATROPICAL)
+1 1 TROPICAL DEPRESSION
+2 2 TROPICAL STORM
+3 3 SEVERE TROPICAL STORM
+4 4 TYPHOON
+10 10 DUST/SANDSTORM
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/19008.table b/definitions/bufr/tables/0/wmo/12/codetables/19008.table
new file mode 100644
index 0000000..57395cd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/19008.table
@@ -0,0 +1,5 @@
+0 0 RESERVED
+1 1 SHALLOW (TOP OF CIRCULATION BELOW 700-HPA LEVEL
+2 2 MEDIUM(TOP BETWEEN 700-HPA AND 400-HPA)
+3 3 DEEP(TOP ABOVE 400-HPA LEVEL
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/19010.table b/definitions/bufr/tables/0/wmo/12/codetables/19010.table
new file mode 100644
index 0000000..03e331e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/19010.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 MINIMUM VALUE OF SEA LEVEL PRESSURE
+2 2 MAXIMUM VALUE OF 850 HPA RELATIVE VORTICITY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20003.table b/definitions/bufr/tables/0/wmo/12/codetables/20003.table
new file mode 100644
index 0000000..b6227bc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20003.table
@@ -0,0 +1,250 @@
+0 0 CLOUD DEVELOPMENT NOT OBSERVED OR NOT OBSERVABLE
+1 1 CLOUDS GENERALLY DISSOLVING OR BECOMING LESS DEVELOPED
+2 2 STATE OF SKY ON THE WHOLE UNCHANGED
+3 3 CLOUDS GENERALLY FORMING OR DEVELOPING
+4 4 VISIBILITY REDUCED BY SMOKE, E.G. VELDT OR FOREST FIRES, IN"    DUSTRIAL SMOKE OR VOLCANIC ASHES
+5 5 HAZE
+6 6 WIDESPREAD DUST IN SUSPENSION IN THE AIR, NOT RAISED BY WIND"     AT OR NEAR THE STATION AT THE TIME OF OBSERVATION
+7 7 DUST OR SEND RAISED BY WIND AT OR NEAR THE STATION AT THE TI"    ME OF OBSERVATION, BUT NO WELL-DEVELOPED DUST WHRIL(S) OR SA"    ND WHRIL(S), AND NO 
+8 8 WELL-DEVELOPED DUST WHRIL(S) OR SAND WHRILS SEEN AT OR NEAR"    THE STATION DURING THE PRECEDING HOUR OR AT THE SAME TIME OF"     OBSERVATION, BUT NO 
+9 9 DUSTSTORM OR SANDSTORM WITHIN SIGHT AT THE TIME OF OBSERVATI"    ON, OR AT THE STATION DURING THE PRECEDING HOR
+10 10 MIST
+11 11 PACHES SHALLOW FOG OR ICE AT THE STATION, WHETHER ON LAND OR"     SEA, NOT DEEPER THAN 2 METRES ON LAND OR 10 METRES AT SEA
+12 12 MORE OR LESS CONTINUOUS SHALLOW FOG OR ICE AT THE STATION,"    WHETHER ON LAND OR SEA, NOT DEEPER THAN 2 METRES ON LAND OR"    10 METRES AT SEA
+13 13 LIGHTNING VISIBLE, NO THUNDER HEARD
+14 14 PRECIPITATION WITHIN SIGHT, NOT REACHING THE GROUND OR THE"    SURFACE OF THE SEA
+15 15 PRECIPITATION WITHIN SIGHT, REACHING THE GROUND OR THE SURFA"    CE OF THE SEA, BUT DISTANT, I.E. ESTIMATED TO BE MORE THAN"    5 KM FROM THE STATION
+16 16 PRECIPITATION WITHIN SIGHT, REACHING THE GROUND OR THE SURFA"    CE OF THE SEA, NEAR TO, BUT NOT AT THE STATION
+17 17 THUNDERSTORM, BUT NO PRECIPITATION AT THE TIME OF OBSERVATIO"    N
+18 18 SQUALLS AT OR WITHIN SIGHT OF THE STATION DURING THE PRECEDI"    NG HOUR OR AT THE TIME OF OBSERVATION
+19 19 FUNNEL CLOUD(S) AT OR WITHIN SIGHT OF THE STATION DURING THE"     PRECEDING HOUR OR AT THE TIME OF OBSERVATION
+20 20 DRIZZEL (NOT FREEZING) OR SNOW GRAINS NOT FALLING AS SHOWERS"    ; DURING THE PRECEDING HOUR BUT NOT  AT THE TIME OF OBSERVAT"    IONS
+21 21 RAIN (NOT FREEZING) NOT FALLING AS SHOWER(S); DURING THE PRE"    ECEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+22 22 SNOW NOT FALLING AS SHOWER(S); DURING THE PRECEDING HOUR BUT"     NOT AT THE TIME OF OBSERVATION
+23 23 RAIN AND SNOW OR ICE PELLETS NOT FALLING AS SHOWER(S); DURIN"    G THE PRECEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+24 24 FREEZING DRIZZEL OR FREEZING RAIN NOT FALLING AS SHOWER(S);"    DURING THE PRECEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+25 25 SHOWER(S) OF RAIN; DURING THE PRECEDING HOUR BUT NOT AT THE"    TIME OF OBSERVATION
+26 26 SHOWER(S) OF SNOW, OR OF RAIN AND SNOW; DURING THE PRECEDING"     HOUR BUT NOT AT THE TIME OF OBSERVATION
+27 27 SHOWER(S) OF HAIL, OR OF RAIN AND HAIL; DURING THE PRECEDING"     HOUR BUT NOT AT THE TIME OF OBSERVATION
+28 28 FOG OR ICE FOG; DURING THE PRECEDING HOUR BUT NOT AT THE TIM"    E OF OBSERVATION
+29 29 THUNDERSTORM (WITH OR WITHOUT PRECIPITATION); DURING THE PRE"    CEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+30 30 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM HAS DECREASED DURI"    NG THE PRECEDING HOURS
+31 31 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM NO APPRECIABLE CHA"    NGE DURING THE PRECEDING HOUR
+32 32 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM HAS BEGUN OR HAS I"    NCEASED DURING THE PRECEDING HOUR
+33 33 SEVERE DUSTSTORM OR SANDSTORM  HAS DECREASED DURING THE PREC"    EDING HOURS
+34 34 SEVERE DUSTSTORM OR SANDSTORM NO APPRECIABLE CHANGE DURING T"    HE PRECEDING HOUR
+35 35 SEVERE DUSTSTORM OR SANDSTORM HAS BEGUN OR HAS INCREASED DUR"    ING THE PRECEDING HOUR
+36 36 SLIGHT OR MODERATE DRIFTING SNOW GENERALLY LOW (BELOW EYE LE"    VEL)
+37 37 HEAVY DRIFTING SNOW  GENERALY LOW (BELOW EYE LEVEL)
+38 38 SLIGHT OR MODERATE BLOWING SNOW GENERALLY HIGH (ABOVE EYE LE"    VEL)
+39 39 HEAVY BLOWING SNOW  GENERALY HIGH (ABOVE EYE LEVEL)
+40 40 FOG OR ICE FOG AT A DISTANCE AT THE TIME OF OBSERVATION, BUT"     NOT AT THE STATION DURING THE PRECEDING HOUR, THE FOG OR IC"    E FOG EXTENDING TO A
+41 41 FOG OR ICE FOG IN PATCHES
+42 42 FOG OR ICE FOG, SKY VISIBLE,HAS BECOME THINNER DURING THE PR"    ECEDING HOUR
+43 43 FOG OR ICE FOG, SKY INVISIBLE,HAS BECOME THINNER DURING THE"    PRECEDING HOUR
+44 44 FOG OR ICE FOG, SKY   VISIBLE,NO APPRECIABLE CHANGE DURING T"    HE PRECEDING HOUR
+45 45 FOG OR ICE FOG, SKY INVISIBLE,NO APPRECIABLE CHANGE DURING T"    HE PRECEDING HOUR
+46 46 FOG OR ICE FOG, SKY   VISIBLE,HAS BEGUN OR HAS BECOME THICKE"    R DURING THE PRECEDING HOUR
+47 47 FOG OR ICE FOG, SKY INVISIBLE,HAS BEGUN OR HAS BECOME THICKE"    R DURING THE PRECEDING HOUR
+48 48 FOG, DEPOSITING RIME, SKY VISIBLE
+49 49 FOG, DEPOSITING RIME, SKY INVISIBLE
+50 50 DRIZZLE, NOT FREEZING, INTERMITTENT;SLIGHT AT TIME OF OBSERV"    ATION
+51 51 DRIZZLE, NOT FREEZING, CONTINUOUS  ;SLIGHT AT TIME OF OBSERV"    ATION
+52 52 DRIZZLE, NOT FREEZING, INTERMITTENT;MODERATE AT TIME OF OBSE"    RVATION
+53 53 DRIZZLE, NOT FREEZING, CONTINUOUS  ;MODERATE AT TIME OF OBSE"    RVATION
+54 54 DRIZZLE, NOT FREEZING, INTERMITTENT;HEAVY (DENSE) AT THE TIM"    E OF OBSERVATION
+55 55 DRIZZLE, NOT FREEZING, CONTINUOUS  ;HEAVY (DENSE) AT THE TIM"    E OF OBSERVATION
+56 56 DRIZZLE, FREEZING, SLIGHT
+57 57 DRIZZLE, FREEZING, MODERATE OR HEAVY (DENSE)
+58 58 DRIZZLE AND RAIN, SLIGHT
+59 59 DRIZZLE AND RAIN, MODERATE OR HEAVY
+60 60 RAIN,NOT FREEZING,INTERMITTENT;SLIGHT AT TIME OF OBSERVATION
+61 61 RAIN,NOT FREEZING,CONTINUOUS  ;SLIGHT AT TIME OF OBSERVATION
+62 62 RAIN,NOT FREEZING,INTERMITTENT;MODERATE AT TIME OF OBSERVATI"    ON
+63 63 RAIN,NOT FREEZING,CONTINUOUS  ;MODERATE AT TIME OF OBSERVATI"    ON
+64 64 RAIN, NOT FREEZING, INTERMITTENT;HEAVY AT TIME OF OBSERVATIO"    ON
+65 65 RAIN, NOT FREEZING, CONTINUOUS;HEAVY AT TIME OF OBSERVATION
+66 66 RAIN, FREEZING, SLIGHT
+67 67 RAIN, FREEZING, MODERATE OR HEAVY
+68 68 RAIN OR DRIZZLE AND SNOW, LIGHT
+69 69 RAIN OR DRIZZLE AND SNOW, MODERATE OR HEAVY
+70 70 INTERMITTENT FALL OF SNOWFLAKES, SLIGHT AT TIME OF OBSERVATI"    ON
+71 71 CONTINUOUS   FALL OF SNOWFLAKES, SLIGHT AT TIME OF OBSERVATI"    ON
+72 72 INTERMITTENT FALL OF SNOWFLAKES, MODERATE AT TIME OF OBSERVA"    TION
+73 73 CONTINUOUS   FALL OF SNOWFLAKES, MODERATE AT TIME OF OBSERVA"    TION
+74 74 INTERMITTENT FALL OF SNOWFLAKES, HEAVY AT TIME OF OBSERVATIO"    ONS
+75 75 CONTINUOUS   FALL OF SNOWFLAKES, HEAVY AT TIME OF OBSERVATIO"    ONS
+76 76 DIAMOND DUST (WITH OR WITHOUT FOG)
+77 77 SNOW GRAINS (WITH OR WITHOUT FOG)
+78 78 ISOLATED STAR-LIKE SNOW CRYSTALS (WITH OR WITHOUT FOG)
+79 79 ICE PELLETS
+80 80 RAIN SHOWER(S), SLIGHT
+81 81 RAIN SHOWER(S), MODERATE OR HEAVY
+82 82 RAIN SHOWER(S), VIOLENT
+83 83 SHOWER(S) OF RAIN AND SNOW MIXED, SLIGHT
+84 84 SHOWER(S) OF RAIN AND SNOW MIXED, MODERATE OR HEAVY
+85 85 SNOW SHOWER(S), SLIGHT
+86 86 SNOW SHOWER(S), MODERATE OR HEAVY
+87 87 SHOWER(S) OF SNOW PELLETS OR SMALL HAIL, WITH OR WITHOUT RAI"    N OR RAIN AND SNOW MIXED, SLIGHT
+88 88 SHOWER(S) OF SNOW PELLETS OR SMALL HAIL, WITH OR WITHOUT RAI"    N OR RAIN AND SNOW MIXED, MODERATE OR HEAVY
+89 89 SHOWER(S) OF HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIX"    ED, NOT ASSOCIATED WITH THUNDER, SLIGHT
+90 90 SHOWER(S) OF HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIX"    ED, NOT ASSOCIATED WITH THUNDER, MODERATE OR HEAVY
+91 91 SLIGHT RAIN AT TIME OF OBSERVATION, THUNDERSTORM DURING THE"    PRECEDING HOUR BUT NOT AT TIME OF OBSERVATION
+92 92 MODERATE OR HEAVY RAIN AT TIME OF OBSERVATION, THUNDERSTORM"    DURING THE PRECEDING HOUR BUT NOT AT TIME OF OBSERVATION
+93 93 SLIGHT SNOW, OR RAIN AND SNOW MIXED OR HAIL AT TIME OF OBSER"    VATION, THUNDERSTORM DURING THE PRECEDING HOUR BUT NOT AT TI"    ME OF OBSERVATION
+94 94 MODERATE OR HEAVY SNOW, OR RAIN AND SNOW MIXED OR HAIL AT TI"    ME OF OBSERVATION, THUNDERSTORM DURING PRECEDING HOUR BUT NO"    T AT TIME OF OBSERVA
+95 95 THUNDERSTORM, SLIGHT OR MODERATE, WITHOUT HAIL, BUT WITH RAI"    N AND/OR SNOW AT TIME OF OBSERVATION, THUNDERSTORM DURING TH"    E PRECEDING HOUR BUT
+96 96 THUNDERSTORM, SLIGHT OR MODERATE,WITH HAIL AT TIME OF OBSERV"    ATION, THUNDERSTORM AT TIME OF OBSERVATION
+97 97 THUNDERSTORM, HEAVY, WITHOUT HAIL BUT WITH RAIN AND/OR SNOW"    AT TIME OF OBSERVATION, THUNDERSTORM AT TIME OF OBSERVATION
+98 98 THUNDERSTORM COMBINED WITH DUSTSTORM OR SANDSTORM AT TIME OF"     OBSERVATION, THUNDERSTORM AT TIME OF OBSERVATION
+99 99 THUNDERSTORM, HEAVY, WITH HAIL AT TIME OF OBSERVATION, THUND"    ERSTORM AT TIME OF OBSERVATION
+100 100 NO SIGNIFICANT WEATHER OBSERVED
+101 101 CLOUDS GENERALLY DISSOLVING OR BECOMING LESS DEVELOPED DURIN"    G THE PAST HOUR
+102 102 STATE OF SKY ON THE WHOLE UNCHANGED DURING THE PAST HOUR
+103 103 CLOUDS GENERALLY FORMING OR DEVELOPING DURING THE PAST HOUR
+104 104 HAZE OR SMOKE, OR DUST IN SUSPENSION IN THE AIR, VISIBILITY"    EQUAL TO, OR GREATER THAN 1KM
+105 105 HAZE OR SMOKE, OR DUST IN SUSPENSION IN THE AIR, VISIBILITY"    LESS THAN 1KM
+110 110 MIST
+111 111 DIAMOND DUST
+112 112 DISTANT LIGHTING
+118 118 SQUALLS
+120 120 FOG
+121 121 PRECIPITATION
+122 122 DRIZZLE (NOT FREEZING) OR SNOW GRAINS
+123 123 RAIN (NOT FREEZING)
+124 124 SNOW
+125 125 FREEZING DRIZZLE OR FREEZING RAIN
+126 126 THUNDERSTORM (WITH OR WITHOUT PRECIPITATION)
+127 127 BLOWING OR DRIFTING SNOW OR SAND
+128 128 BLOWING OR DRIFTING SNOW OR SAND, VISIBILITY EQUAL TO, OR GR"    ATER THAN, 1KM
+129 129 BLOWING OR DRIFTING SNOW OR SAND, VISIBILITY LESS THAN 1 KM
+130 130 FOG
+131 131 FOG OR ICE FOG, IN PATCHES
+132 132 FOG OR ICE FOG, HAS BECOME THINNER DURING PAST HOUR
+133 133 FOG OR ICE FOG, NO APPRECIABLE CHANGE DURING PAST HOUR
+134 134 FOG OR ICE FOG, HAS BECUNOR BECOME THICKER DURING PAST HOUR
+135 135 FOG, DEPOSITION RIME
+140 140 PRECIPITATION
+141 141 PRECIPITATION SLIGHT OR MODERATE
+142 142 PRECIPITATION, HEAVY
+143 143 LIQUID PRECIPITATION, SLIGHT OR MODERATE
+144 144 LIQUID PRECIPITATION, HEAVY
+145 145 SOLID PRECIPITATION, SLIGHT OR MODERATE
+146 146 SOLID PRECIPITATION, HEAVY
+147 147 FREEZING PRECIPITATION, SLIGHT OR MODERATE
+148 148 FREEZING PRECIPITATION, HEAVY
+150 150 DRIZZLE
+151 151 DRIZZLE, NOT FREEZING, SLIGHT
+152 152 DRIZZLE, NOT FREEZING, MODERATE
+153 153 DRIZZLE, NOT FREEZING, HEAVY
+154 154 DRIZZLE, FREEZING, SLIGHT
+155 155 DRIZZLE, FREEZING, MODERATE
+156 156 DRIZZLE, FREEZING, HEAVY
+157 157 DRIZZLE AND RAIN, SLIGHT
+158 158 DRIZZLE AND RAIN, MODERATE OR HEAVY
+160 160 RAIN
+161 161 RAIN, NOT FREEZING, SLIGHT
+162 162 RAIN, NOT FREEZING, MODERATE
+163 163 RAIN, NOT FREEZING, HEAVY
+164 164 RAIN, FREEZING, SLIGHT
+165 165 RAIN, FREEZING, MODERATE
+166 166 RAIN, FREEZING, HEAVY
+167 167 RAIN (OR DRIZZLE) AND SNOW, SLIGHT
+168 168 RAIN (OR DRIZZLE) AND SNOW, MODERATE AND HEAVY
+170 170 SNOW
+171 171 SNOW, SLIGHT
+172 172 SNOW, MODERATE
+173 173 SNOW, HEAVY
+174 174 ICE PELLETS, SLIGHT
+175 175 ICE PELLETS, MODERATE
+176 176 ICE PELLETS, HEAVY
+180 180 SHOWER(S) OR INTERMITTENT PRECIPITATION
+181 181 RAIN SHOWER(S) OR INTERMITTENT RAIN, SLIGHT
+182 182 RAIN SHOWER(S) OR INTERMITTENT RAIN, MODERATE
+183 183 RAIN SHOWER(S) OR INTERMITTENT RAIN, HEAVY
+184 184 RAIN SHOWER(S) OR INTERMITTENT RAIN, VIOLENT
+185 185 SNOW SHOWER(S) OR INTERMITTENT SNOW, SLIGHT
+186 186 SNOW SHOWER(S) OR INTERMITTENT SNOW, MODERATE
+187 187 SNOW SHOWER(S) OR INTERMITTENT SNOW, HEAVY
+190 190 THUNDERSTORM
+191 191 THUNDERSTORM, SLIGHT OR MODERATE, WITH NO PRECIPITATION
+192 192 THUNDERSTORM, SLIGHT OR MODERATE, WITH RAIN SHOWERS AND/OR S"    NOW SHOWERS
+193 193 THUNDERSTORM, SLIGHT OR MODERATE, WITH HAIL
+194 194 THUNDERSTORM, HEAVY, WITH NO PRECIPITATION
+195 195 THUNDERSTORM, HEAVY, WITH RAIN SHOWERS AND/OR SNOW SHOWERS
+196 196 THUNDERSTORM, HEAVY, WITH HAIL
+204 204 VOLCANIC ASH SUSPENDED IN THE AIR ALOFT
+206 206 THICK DUST HAZE, VISIBILITY LESS THAN 1 KM
+207 207 BLOWING SPRAY AT THE STATION
+208 208 DRIFTING DUST (SAND)
+209 209 WALL OF DUST OR SAND IN DISTANCE (LIKE HABOOB)
+210 210 SNOW HAZE
+211 211 WHITEOUT
+213 213 LIGHTING, CLOUD TO SURFACE
+217 217 DRY THUNDERSTORM
+219 219 TORNADO CLOUD (DESTRUCTIVE AT OR WITHIN SIGHT OF THE STATION"    DURING PRECEDING HOUR OR AT THE TIME OF OBSERVATION
+220 220 DEPOSITION OF VOLCANIC ASH
+221 221 DEPOSITION OF DUST OR SAND
+222 222 DEPOSITION OF DEW
+223 223 DEPOSITION OF WET SNOW
+224 224 DEPOSITION OF SOFT RIME
+225 225 DEPOSITION OF HARD RIME
+226 226 DEPOSITION OF HOAR FROST
+227 227 DEPOSITION OF GLAZE
+228 228 DEPOSITION OF ICE CRUST (ICE SLICK)
+230 230 DUSTSTORM OR SANDSTORM WITH TEMPERATURE BELOW 0 C DEGREES
+239 239 BLOWING SNOW, IMPOSSIBLE TO DETERMINE WHETHER SNOW IS FALLIN"    G OR NOT
+241 241 FOG ON SEA
+242 242 FOG IN VALLEYS
+243 243 ARCTIC OR ANTARCTIC SEA SMOKE
+244 244 STEAM FOG (SEA,LAKE OR RIVER)
+245 245 STEAM FOG (LAND)
+246 246 FOG OVER ICE OR SNOW COVER
+247 247 DENCE FOG VISIBILITY 60-90 M
+248 248 DENCE FOG VISIBILITY 30-60 M
+249 249 DENCE FOG VISIBILITY LESS THAN 30 M
+250 250 DRIZZLE, RATE OF FALL  LESS THAN 0.10 MM/H
+251 251 DRIZZLE, RATE OF FALL   0.10 -  .19  MM/H
+252 252 DRIZZLE, RATE OF FALL   0.20 -  .39  MM/H
+253 253 DRIZZLE, RATE OF FALL   0.40 -  .79  MM/H
+254 254 DRIZZLE, RATE OF FALL   0.80 - 1.59  MM/H
+255 255 DRIZZLE, RATE OF FALL   1.60 - 3.19  MM/H
+256 256 DRIZZLE, RATE OF FALL   3.20 - 6.39  MM/H
+257 257 DRIZZLE, RATE OF FALL   6.40 MM/H  OR MORE
+259 259 DRIZZLE AND SNOW
+260 260 RAIN, RATE OF FALL  LESS THAN 1.0 MM/H
+261 261 RAIN, RATE OF FALL   1.0  -  1.9   MM/H
+262 262 RAIN, RATE OF FALL   2.0  -  3.9   MM/H
+263 263 RAIN, RATE OF FALL   4.0  -  7.9   MM/H
+264 264 RAIN, RATE OF FALL   8.0  - 15.9   MM/H
+265 265 RAIN, RATE OF FALL  16.0  - 31.9   MM/H
+266 266 RAIN, RATE OF FALL  32.0  - 63.9   MM/H
+267 267 RAIN, RATE OF FALL  64.0  MM/H  OR MORE
+270 270 SNOW, RATE OF FALL  LESS THAN 1.0 CM/H
+271 271 SNOW, RATE OF FALL   1.0  -  1.9   CM/H
+272 272 SNOW, RATE OF FALL   2.0  -  3.9   CM/H
+273 273 SNOW, RATE OF FALL   4.0  -  7.9   CM/H
+274 274 SNOW, RATE OF FALL   8.0  - 15.9   CM/H
+275 275 SNOW, RATE OF FALL  16.0  - 31.9   CM/H
+276 276 SNOW, RATE OF FALL  32.0  - 63.9   CM/H
+277 277 SNOW, RATE OF FALL  64.0  CM/H  OR MORE
+278 278 SNOW OR ICE CRISTAL PRECIPITATION FROM A CLEAR SKY
+279 279 WET SNOW, FREEZING ON CONTACT
+280 280 PRECIPITATION OF RAIN (WW= 87-99)
+281 281 PRECIPITATION OF RAIN,FREEZING (WW= 80-82)
+282 282 PRECIPITATION OF RAIN AND SNOW MIXED
+283 283 PRECIPITATION OF SNOW
+284 284 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL
+285 285 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH RAIN
+286 286 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH RAIN AND S"    NOW MIXED
+287 287 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH SNOW
+288 288 PRECIPITATION OF HAIL
+289 289 PRECIPITATION OF HAIL, WITH RAIN
+290 290 PRECIPITATION OF HAIL, WITH RAIN AND SNOW MIXED
+291 291 PRECIPITATION OF HAIL, WITH SNOW
+292 292 SHOWER(S) OR THUNDERSTORM OVER SEA
+293 293 SHOWER(S) OR THUNDERSTORM OVER MOUNTAINS
+508 508 NO SIGNIFICANT PHENOMENA TO REPORT, PRESENT AND PAST WEATHER"     OMITTED
+509 509 NOT OBSERVED, NO DATA AVAILABLE, PRESENT AND PAST WEATHER OM"    ITTED
+510 510 PRESENT AND PAST WEATHER MISSING, BUT EXPECTED
+511 511 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20004.table b/definitions/bufr/tables/0/wmo/12/codetables/20004.table
new file mode 100644
index 0000000..bd060a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20004.table
@@ -0,0 +1,21 @@
+0 0 CLOUD COVERING 1/2 OR LESS OF THE SKY THROUGHOUT THE APPROPP"    RIATE PERIOD
+1 1 CLOUD COVERING MORE THAN 1/2 OF THE SKY DURING PART OF THE A"    PPROPRIATE PERIOD AND COVERING 1/2 OR LESS DURING PART OF TH"    E PERIOD
+2 2 CLOUD COVERING MORE THAN 1/2 OF THE SKY THROUGHOUT THE APPRP"    PRIATE PERIOD
+3 3 SANSTORM, DUSTSTORM OR BLOWING SNOW
+4 4 FOG OR ICE OR THICK HAZE
+5 5 DRIZZLE
+6 6 RAIN
+7 7 SNOW, OR RAIN AND SNOW MIXED
+8 8 SHOWER(S)
+9 9 THUNDERSTORM(S) WITH OR WITHOUT PRECIPITATION
+10 10 NO SIGNIFICANT WEATHER OBSERVED
+11 11 VISIBILITY REDUCED
+12 12 BLOWING PHENOMENA, VISIBILITY REDUCED
+13 13 FOG
+14 14 PRECIPITATION
+15 15 DRIZZLE
+16 16 RAIN
+17 17 SNOW OR ICE PELLETS
+18 18 SHOWERS OR INTERMITTENT PRECIPITATION
+19 19 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20005.table b/definitions/bufr/tables/0/wmo/12/codetables/20005.table
new file mode 100644
index 0000000..bd060a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20005.table
@@ -0,0 +1,21 @@
+0 0 CLOUD COVERING 1/2 OR LESS OF THE SKY THROUGHOUT THE APPROPP"    RIATE PERIOD
+1 1 CLOUD COVERING MORE THAN 1/2 OF THE SKY DURING PART OF THE A"    PPROPRIATE PERIOD AND COVERING 1/2 OR LESS DURING PART OF TH"    E PERIOD
+2 2 CLOUD COVERING MORE THAN 1/2 OF THE SKY THROUGHOUT THE APPRP"    PRIATE PERIOD
+3 3 SANSTORM, DUSTSTORM OR BLOWING SNOW
+4 4 FOG OR ICE OR THICK HAZE
+5 5 DRIZZLE
+6 6 RAIN
+7 7 SNOW, OR RAIN AND SNOW MIXED
+8 8 SHOWER(S)
+9 9 THUNDERSTORM(S) WITH OR WITHOUT PRECIPITATION
+10 10 NO SIGNIFICANT WEATHER OBSERVED
+11 11 VISIBILITY REDUCED
+12 12 BLOWING PHENOMENA, VISIBILITY REDUCED
+13 13 FOG
+14 14 PRECIPITATION
+15 15 DRIZZLE
+16 16 RAIN
+17 17 SNOW OR ICE PELLETS
+18 18 SHOWERS OR INTERMITTENT PRECIPITATION
+19 19 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20008.table b/definitions/bufr/tables/0/wmo/12/codetables/20008.table
new file mode 100644
index 0000000..646997b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20008.table
@@ -0,0 +1,19 @@
+0 0 SKY CLEAR
+1 1 FEW
+2 2 SCATTERED
+3 3 BROKEN
+4 4 OVERCAST
+5 5 RESERVED
+6 6 SCATTERED/BROKEN (MANY FORECASTS USE SCATTERED/BROKEN
+7 7 BROKEN/OVERCAST (BROKEN/OVERCAST FOLLOWED BY CLOUD TYPE(S))
+8 8 ISOLATED (USED ON AVIATION CHARTS TO DESCRIBE THE CLOUD TYPE"     CB)
+9 9 ISOLATED EMBEDDED (USED ON AVIATION CHARTS TO DESCRIBE THE C"    LOUD TYPE CB)
+10 10 OCCASIONAL (USED ON AVIATION CHARTS TO DESCRIBE THE CLOUD TY"    PE CB)
+11 11 OCCASIONAL EMBEDDED (USED ON AVIATION CHARTS TO DESCRIBE THE"     CLOUD TYPE CB)
+12 12 FREQUENT (USED ON AVIATION CHARTS TO DESCRIBE THE CLOUD TYPE"     CB)
+13 13 DENSE (USED ON AVIATION CHARTS TO DESCRIBE CLOUD THAT WOULD"    CAUSE SUDDEN CHANGES IN VISIBILITY (LESS THAN 1000M)
+14 14 LAYERS
+15 15 OBSCURED (OBSC)
+16 16 EMBEDDED (EMBD)
+17 17  FREQUENT EMBEDDED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20009.table b/definitions/bufr/tables/0/wmo/12/codetables/20009.table
new file mode 100644
index 0000000..084630c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20009.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 NSC MIL SIGNIFICANT CLOUD
+2 2 CAVOK
+3 3 SKC SKY CLEAR
+4 4 NSW NIL SIGNIFICANT WEATHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2001.table b/definitions/bufr/tables/0/wmo/12/codetables/2001.table
new file mode 100644
index 0000000..8259eeb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2001.table
@@ -0,0 +1,4 @@
+0 0 AUTOMATIC STATION
+1 1 MANNED STATION
+2 2 HYBRID, BOTH MANNED AND AUTOMATIC
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20011.table b/definitions/bufr/tables/0/wmo/12/codetables/20011.table
new file mode 100644
index 0000000..740be7b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20011.table
@@ -0,0 +1,11 @@
+0 0 0                              0
+1 1 1 OKTA OR LESS, BUT NOT ZERO   1/10 OR LESS, BUT NOT ZERO
+2 2 2 OKTAS                        2/10 - 3/10
+3 3 3 OKTAS                        4/10
+4 4 4 OKTAS                        5/10
+5 5 5 OKTAS                        6/10
+6 6 6 OKTAS                        7/10 - 8/10
+7 7 7 OKTAS OR MORE,BUT NOT 8 OKTAS9/10 OR MORE, BUT NOT 10/10
+8 8 8 OKTAS                        10/10
+9 9 SKY OBSCURED BY FOG AND OR OTHER METEOROLOGICAL PHENOMENA
+15 15 CLOUD COVE IS INDISCERNIBLE FOR REASONS OTHER THAN FOG OR OT"    HER METEOROLOGICAL PHENOMENA, OR OBSERVATION IS NOT MADE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20012.table b/definitions/bufr/tables/0/wmo/12/codetables/20012.table
new file mode 100644
index 0000000..ff14028
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20012.table
@@ -0,0 +1,45 @@
+0 0 CIRRUS (CI)...............CI
+1 1 CIRROCUMULUS (CC).........CC
+2 2 CIRROSTRATUS (CS).........CS
+3 3 ALTOCUMULUS  (AC).........AC
+4 4 ALTOSTRATUS  (AS).........AS
+5 5 NIMBOSTRATUS (NS).........NS
+6 6 STRATOCUMULUS(SC).........SC
+7 7 STRATUS      (ST).........ST
+8 8 CUMULUS      (CU).........CU
+9 9 CUMULONIMBUS (CB).........CB
+10 10 NO CH CLOUDS
+11 11 CIRRUS FIBRATUS, SOMETIMES UNCINUS, NOT PROGRESSIVELY INADIN"    G THE SKY
+12 12 CIRRUS SPISSATUS, IN PATCHES OR ENTANGLED SHEAVES, WHICH USU"    ALLY DO NOT INCREASE AND SOMETIMES SEEM TO BE THE REMAINS OF"     THE UPPER PART OF A
+13 13 CIRRUS SPISSATUS CUMULONIMBOGENITUS
+14 14 CIRRUS UNCINUS OR FIBRATUS,OR BOTH, PROGRESSIVELY INVADING T"    HE SKY ; THEY GENERALLY THICKEN AS A WHOLE
+15 15 CIRRUS (OFTEN IN BANDS) AND CIRROSTRATUS, OR CIRROSTRATUS AL"    ONE, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN"    ASA WHOLE, BUT THE CO
+16 16 CIRRUS (OFTEN IN BANDS) AND CIRROSTRATUS, OR CIRROSTRATUS AL"    ONE, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN"    ASA WHOLE, BUT THE CO
+17 17 CIRROSTRATUS COVERING THE WHOLE SKY
+18 18 CIRROSTRATUS NOT PROGRESSIVELY INVADING THE SKY AND NOT ENTI"    RELY COVERING IT
+19 19 CIRROCUMULUS ALONE, OR CIRROCUMULUS PREDOMINANT AMONG THE CH"     CLOUDS
+20 20 NO CM CLOUDS
+21 21 ALTOSTRATUS TRANSLUCIDUS
+22 22 ALTOSTRATUS OPACUS OR NIMBOSTRATUS
+23 23 ALTOCUMULUS TRANSLUCIDUS AT A SINGLE LEVEL
+24 24 PATCHES (OFTEN LENTICULARIS) OF ALTOCUMULUS TRANSLUCIDUS, CO"    NTINUALLY CHANGING AND OCCURING AT ONE OR MORE LEVELS
+25 25 ALTOCUMULUS TRANSLUCIDUS IN BANDS, OR ONE OR MORE LAYERS OF"    ALTOCUMULUS TRANSLUCIDUS OR OPACUS, PROGRESSIVELY INVADING T"    HE SKY; THESE ALTOCUM
+26 26 ALTOCUMULUS CUMULOGENITUS (OR CUMULONIMBOGENITUS)
+27 27 ALTOCUMULUS TRANSLUCIDUS OR OPACUS IN TWO OR MORE LAYERS, OR"     ALTOCUMULUS OPACUS IN A SINGLE LAYER, NOT PROGRESSIVELY INV"    ADING THE SKY, OR AL
+28 28 ALTOCUMULUS CASTELLANUS OR FLOCUS
+29 29 ALTOCUMULUS OF CHAOTIC SKY, GENERALLY AT SEVERAL LEVELS
+30 30 NO CL CLOUDS
+31 31 CUMULUS HUMILIS OR CUMULUS FRACTUS OTHER THAN OF BAD WEATHER"    , OR BOTH
+32 32 CUMULUS MEDIOCRIS OR CONGESTUS, WITH OR WITHOUT CUMULUS OF S"    PECIES FRACTUS OR HUMULIS OR STRATOCUMULUS, ALL HAVING THEIR"     BASES AT THE SAME L
+33 33 CUMULONIMBUS CALVUS, WITH OR WITHOUT CUMULUS, STRATOCUMULUS"    OR STRATUS
+34 34 STRATOCUMULUS CUMULOGENITUS
+35 35 STRATOCUMULUS OTHER THAN STRATOCUMULUS CUMULOGENITUS
+36 36 STRATUS NEBULOSUS OR STRATUS FRACTUS OTHER THAN OF BAD WEATH"    ER, OR BOTH
+37 37 STRATUS FRACTUS OR CUMULUS FRACTUS OF BAD WEATHER, OR BOTH"    (PANNUS), USUALLY BELOW ALTOSTRATUS OR NIMBOSTRATUS
+38 38 CUMULUS AND STRATOCUMULUS OTHER THAN STRATOCUMULUS CUMULOGEN"    ITUS, WITH BASES AT DIFFERENT LEVELS
+39 39 CUMULONIMBUS CAPILLATUS (OFTEN WITH AN ANVIL), WITH OR WITHO"    UT CUMULONIMBUS CALVUS, CUMULUS, STRATOCUMULUS, STRATUS OR P"    ANNUS
+59 59 CLOUD NOT VISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDSTO"    RM, OR OTHER ANALOGOUS PHENOMENA
+60 60 CH CLOUDS INVISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDS"    TORM, OR OTHER SIMILAR PHENOMENA, OR BECAUSE OF A CONTINUOUS"    LAYER OF LOWER CLOUD
+61 61 CM CLOUDS INVISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDS"    TORM, OR OTHER SIMILAR PHENOMENA, OR BECAUSE OF A CONTINUOUS"    LAYER OF LOWER CLOUD
+62 62 CL CLOUDS INVISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDS"    TORM, OR OTHER SIMILAR PHENOMENA
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20017.table b/definitions/bufr/tables/0/wmo/12/codetables/20017.table
new file mode 100644
index 0000000..48f9b49
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20017.table
@@ -0,0 +1,11 @@
+0 0 ISOLATED CLOUD OR FRAGMENTS OF CLOUD
+1 1 CONTINUOUS CLOUD
+2 2 BROKEN CLOUD - SMALL BREAKS, FLAT TOPS
+3 3 BROKEN CLOUD - LARGE BREAKS, FLAT TOPS
+4 4 CONTINUOUS CLOUD
+5 5 BROKEN CLOUD - SMALL BREAKS, UNDULATED TOPS
+6 6 BROKEN CLOUD - LARGE BREAKS, UNDULATED TOPS
+7 7 CONTINUOUS OR ALMOST CONTINUOUS WAVES WITH TOWERING CLOUDS A"    BOVE THE TOP OF THE LAYER
+8 8 GROUPS OF WAVES WITH TOWERING CLOUDS ABOVE THE TOP OF THE LA"    YER
+9 9 TWO OR MORE LAYERS AT DIFFERENT LEVELS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20018.table b/definitions/bufr/tables/0/wmo/12/codetables/20018.table
new file mode 100644
index 0000000..c0ffc36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20018.table
@@ -0,0 +1,4 @@
+0 0 INCREASING (U)
+1 1 DECREASING (D)
+2 2 NO DISTINCT CHANGE (N)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2002.table b/definitions/bufr/tables/0/wmo/12/codetables/2002.table
new file mode 100644
index 0000000..9b8469f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2002.table
@@ -0,0 +1,4 @@
+0 0 MEASURED IN M S-1 UNLESS OTHERWISE INDICATED
+1 1 CERTIFIED INSTRUMENTS
+2 2 ORIGINALY MEASURED IN KNOTS
+3 3 ORIGINALY MEASURED IN KM/H
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20021.table b/definitions/bufr/tables/0/wmo/12/codetables/20021.table
new file mode 100644
index 0000000..d9f7226
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20021.table
@@ -0,0 +1,24 @@
+1 1 PRECIPITATION-UNKNOWN TYPE
+2 2 LIQUID PRECIPITATION NOT FREEZING
+3 3 LIQUID FREEZING PRECIPITATION
+4 4 DRIZZLE
+5 5 RAIN
+6 6 SOLID PRECIPITATION
+7 7 SNOW
+8 8 SNOW GRAINS
+9 9 SNOW PELLETS
+10 10 ICE PELLETS
+11 11 ICE CRYSTALS
+12 12 DIAMOND DUST
+13 13 SMALL HAIL
+14 14 HAIL
+15 15 GLAZE
+16 16 RIME
+17 17 SOFT RIME
+18 18 HARD RIME
+19 19 CLEAR ICE
+20 20 WET SNOW
+21 21 HOAR FROST
+22 22 DEW
+23 23 WHITE DEW
+30 30 ALL 30 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20022.table b/definitions/bufr/tables/0/wmo/12/codetables/20022.table
new file mode 100644
index 0000000..a551aac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20022.table
@@ -0,0 +1,7 @@
+0 0 NO PRECIPITATION
+1 1 CONTINUOUS
+2 2 INTERMITTENT
+3 3 SHOWER
+4 4 NOT REACHING GROUND
+5 5 DEPOSITION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20023.table b/definitions/bufr/tables/0/wmo/12/codetables/20023.table
new file mode 100644
index 0000000..9e2093a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20023.table
@@ -0,0 +1,12 @@
+1 1 DUST/SAND WHIRL
+2 2 SQUALLS
+3 3 SAND STORM
+4 4 DUST STORM
+5 5 LIGHTNING - CLOUD TO SURFACE
+6 6 LIGHTNING - CLOUD TO CLOUD
+7 7 LIGHTNING - DISTANT
+8 8 THUNDERSTORM
+9 9 FUNNEL CLOUD NOT TOUCHING SURFACE
+10 10 FUNNEL CLOUD TOUCHING SURFACE
+11 11 SPRAY
+12 12 WATER-SPOUT
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20024.table b/definitions/bufr/tables/0/wmo/12/codetables/20024.table
new file mode 100644
index 0000000..d21d786
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20024.table
@@ -0,0 +1,7 @@
+0 0 NO PHENOMENA
+1 1 LIGHT
+2 2 MODERATE
+3 3 HEAVY
+4 4 VIOLENT
+5 5 SEVERE (VAL)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20025.table b/definitions/bufr/tables/0/wmo/12/codetables/20025.table
new file mode 100644
index 0000000..e05d542
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20025.table
@@ -0,0 +1,11 @@
+1 1 FOG
+2 2 ICE FOG
+3 3 STEAM FOG
+7 7 MIST
+8 8 HAZE
+9 9 SMOKE
+10 10 VOLCANIC ASH
+11 11 DUST
+12 12 SAND
+13 13 SNOW
+21 21 ALL 21 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20026.table b/definitions/bufr/tables/0/wmo/12/codetables/20026.table
new file mode 100644
index 0000000..541f94b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20026.table
@@ -0,0 +1,14 @@
+0 0 NO CHANGE
+1 1 SHALLOW
+2 2 PATCHES
+3 3 PARTIAL
+4 4 FREEZING
+5 5 LOW DRIFTING
+6 6 BLOWING
+7 7 INCREASING
+8 8 DECREASING
+9 9 IN SUSPENSION IN THE AIR
+10 10 WALL
+11 11 DENSE
+12 12 WHITEOUT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20027.table b/definitions/bufr/tables/0/wmo/12/codetables/20027.table
new file mode 100644
index 0000000..4d816ae
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20027.table
@@ -0,0 +1,7 @@
+1 1 AT TIME OF OBSERVATION
+2 2 IN PAST HOUR
+3 3 IN TIME PERIOD FOR PAST WEATHER W1W2
+4 4 IN TIME PERIOD SPECIFIED
+6 6 BELOW STATION LEVEL
+7 7 AT THE STATION
+8 8 IN THE VICINITY
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20029.table b/definitions/bufr/tables/0/wmo/12/codetables/20029.table
new file mode 100644
index 0000000..8b46da8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20029.table
@@ -0,0 +1,4 @@
+0 0 NO RAIN
+1 1 RAIN
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2003.table b/definitions/bufr/tables/0/wmo/12/codetables/2003.table
new file mode 100644
index 0000000..cdb2cb5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2003.table
@@ -0,0 +1,12 @@
+0 0 PRESSURE INSTRUMENT ASSOCIATED WITH WIND-MEASURING EQUIPMENT
+1 1 OPTICAL THEODOLITE
+2 2 RADIO THEODOLITE
+3 3 RADAR
+4 4 VLF-OMEGA
+5 5 LORAN C
+6 6 WIND PROFILER
+7 7 SATELLITE NAVIGATION
+8 8 RADIO-ACOUSTIC SOUNDING SYSTEM (RASS)
+9 9 SODAR
+14 14 PRESSURE INSTRUMENT ASSOCIATED WITH WIND MEASUREMENT EQUIPME"    NT BUT PRESSURE ELEMENT FAILED DURING ASCENT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20032.table b/definitions/bufr/tables/0/wmo/12/codetables/20032.table
new file mode 100644
index 0000000..87ac945
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20032.table
@@ -0,0 +1,6 @@
+0 0 ICE NOT BUILDING UP
+1 1 ICE BUILDING UP SLOWLY
+2 2 ICE BUILDING UP QUICKLY
+3 3 ICE MELTING OR BREAKING UP SLOWLY
+4 4 ICE MELTING OR BREAKING UP RAPIDLY
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20033.table b/definitions/bufr/tables/0/wmo/12/codetables/20033.table
new file mode 100644
index 0000000..6cc31fc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20033.table
@@ -0,0 +1,4 @@
+1 1 ICING FROM OCEAN SPRAY
+2 2 ICING FROM FOG
+3 3 ICING FROM RAIN
+4 4 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20034.table b/definitions/bufr/tables/0/wmo/12/codetables/20034.table
new file mode 100644
index 0000000..97199d8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20034.table
@@ -0,0 +1,12 @@
+0 0 NO SEA ICE IN SIGHT
+1 1 SHIP IN OPEN LEAD MORE THAN 1.0 NAUTICAL MILE WIDE, OR SHIP"    IN FAST ICE WITH BOUNDARY BEYOND LIMIT OF VISIBILITY
+2 2 SEA ICE PRESENT IN CONCETRATION LESS THAN 3/10 (3/8), OPEN W"    ATER OR VERY OPEN PACK ICE, SEA ICE CONCETRATION IS UNIFORM"    IN THE OBSERVATION AR
+3 3 4/10 TO 6/10 (3/8 TO LESS THAN 6/8) ,OPEN PACK ICE, SEA ICE"    CONCETRATION IS UNIFORM IN THE OBSERVATION AREA, SHIP IN ICE"     OR WITHIN 0.5 NAUTIC
+4 4 7/10 TO 8/10 (6/8 TO LESS THAN 7/8), CLOSE PACK ICE, SEA ICE"     CONCETRATION IS UNIFORM IN THE OBSERVATION AREA, SHIP IN IC"     E OR WITHIN 0.5 NAU
+5 5 9/10 OR MORE, BUT NOT 10/10 (7/8 TO LESS THAN 8/8), VERY CLO"    SE PACK ICE, SEA ICE CONCETRATION IS UNIFORM IN THE OBSERVAT"    ION AREA, SHIP IN IC
+6 6 STRIPS AND PATCHES OF PACK ICE WITH OPEN WATER BETWEEN, SEA"    ICE CONCENTRATION IS NOT UNIFORM IN THE OBSERVATION AREA, SH"    IP IN ICE OR WITHIN 0
+7 7 STRIPS AND PATCHES OF CLOSE OR VERY CLOSE PACK ICE WITH AREA"    S OF LESSER CONCENTRATION BETWEEN, SEA ICE CONCETRATION IS N"    OT UNIFORM IN THE OB
+8 8 FAST ICE WITH OPEN WATER,VERY OPEN OR OPEN PACK ICE TO SEAWA"    RD OF THE ICE BOUNDARY, SEA ICE CONCENTRATION IS NOT UNIFORM"     IN THE OBSERVATION 
+9 9 FAST ICE CLOSE OR VERY CLOSE PACK ICE TO SEAWARD OF THE ICE"    BOUNDARY, SEA ICE CONCETRATION IS NOT UNIFORM IN THE OBSERVA"    TION AREA, SHIP IN IC
+14 14 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY, O"    R BECAUSE SHIP IS MORE THAN 0.5 NAUTICAL MILE AWAY FROM ICE"    EDGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20035.table b/definitions/bufr/tables/0/wmo/12/codetables/20035.table
new file mode 100644
index 0000000..8229f90
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20035.table
@@ -0,0 +1,12 @@
+0 0 NO ICE OF LAND ORIGIN
+1 1 1-5 ICEBERGS, NO GROWLERS OR BERGY BITS
+2 2 6-10 ICEBERGS, NO GROWLERS OR BERGY BITS
+3 3 11-20 ICEBERGS, NO GROWLERS OR BERGY BITS
+4 4 UP TO AND INCLUDING 10 GROWLERS AND BERGY BITS - NO ICEBERGS
+5 5 MORE THAN 10 GROWLERS AND BERGY BITS - NO ICEBERGS
+6 6 1-5 ICEBERGS, WITH GROWLERS AND BERGY BITS
+7 7 6-10 ICEBERGS, WITH GROWLERS AND BERGY BITS
+8 8 11-20 ICEBERGS, WITH GROWLERS AND BERGY BITS
+9 9 MORE THAN 20 ICEBERGS,WITH GROWLERS AND BERGY BITS - A MAJOR"    HAZARD TO NAVIGATION
+14 14 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY OR"    BECAUSE ONLY SEA ICE IS VISIBLE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20036.table b/definitions/bufr/tables/0/wmo/12/codetables/20036.table
new file mode 100644
index 0000000..69c1c36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20036.table
@@ -0,0 +1,12 @@
+0 0 SHIP IN OPEN WATER WITH FLOATING ICE IN SIGHT
+1 1 SHIP IN EASILY PENETRABLE ICE; CONDITIONS IMPROVING
+2 2 SHIP IN EASILY PENETRABLE ICE; CONDITIONS NOT CHANGING
+3 3 SHIP IN EASILY PENETRABLE ICE; CONDITIONS WORSENING
+4 4 SHIP IN ICE DIFFICULT TO PENETRATE; CONDITIONS IMPROVING
+5 5 SHIP IN ICE DIFFICULT TO PENETRATE; CONDITIONS NOT CHANGING
+6 6 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."    ICE FORMING AND FLOES FREEZING TOGETHAR
+7 7 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."    ICE UNDER SLIGHT PRESSURE
+8 8 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."    ICE UNDER MODERATE OR SEVERE PRESSURE
+9 9 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."     SHIP BESET.
+30 30 UNABLE TO REPORT, BECAUSE OF DARKNESS OR LACK OF VISIBILITY
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20037.table b/definitions/bufr/tables/0/wmo/12/codetables/20037.table
new file mode 100644
index 0000000..ea3a1df
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20037.table
@@ -0,0 +1,12 @@
+0 0 NEW ICE ONLY (FRAZIL ICE, GREASE ICE, SLUSH, SHUGA)
+1 1 NILAS OR ICE RIND, LESS THAN 10 CM THICK
+2 2 YOUNG ICE(GREY ICE, GREY-WHITE ICE
+3 3 PREDOMINANTLY NEW AND/OR YOUNG ICE WITH SOME FIRST-YEAR ICE
+4 4 PREDOMINANTLY THIN FIRST-YEAR ICE WITH SOME NEW AND/OR YOUNG"     ICE
+5 5 ALL THIN FIRST-YEAR ICE (30-70 CM THICK)
+6 6 PREDOMINANTLY MEDIUM FIRST-YEAR ICE"    (70-120 CM THICK) AND THICK FIRST-YEAR ICE (>120 CM
+7 7 ALL MEDIUM AND THICK FIRST-YEAR ICE
+8 8 PREDOMINANTLY MEDIUM AND THICK FIRST-YEAR ICE WITH SOME"    OLD ICE (USUALLY MORE THAN 2 METRES THICK)
+9 9 PREDOMINANTLY OLD ICE
+30 30 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY OR"    BECAUSE ONLY ICE OF LAND ORIGIN IS VISIBLE OR BECAUSE SHIP I"    S MORE THAN 0.5 NAUT
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2004.table b/definitions/bufr/tables/0/wmo/12/codetables/2004.table
new file mode 100644
index 0000000..b83f216
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2004.table
@@ -0,0 +1,11 @@
+0 0 USA OPEN PAN EVAPORIMETER (WITHOUT COVER)
+1 1 USA OPEN PAN EVAPORIMETER (MESH COVERED)
+2 2 GGI-300 EVAPORIMETER (SUNKEN)
+3 3 20 M**2 TANK
+4 4 OTHERS
+5 5 RICE
+6 6 WHEAT
+7 7 MAIZE
+8 8 SORGHUM
+9 9 OTHER CROPS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20040.table b/definitions/bufr/tables/0/wmo/12/codetables/20040.table
new file mode 100644
index 0000000..32b4ebd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20040.table
@@ -0,0 +1,9 @@
+0 0 DRIFT SNOW ENDED BEFORE THE HOUR OF OBSERVATION
+1 1 INTENSITY DIMINISHING
+2 2 NO CHANGE
+3 3 INTENSITY INCREASING
+4 4 CONTINUES, APART FROM INTERRUPTION LASTING LESS THAN 30 MINU"    TES
+5 5 GENERAL DRIFT SNOW HAS BECOME DRIFT SNOW NEAR THE GROUND
+6 6 DRIFT SNOW NEAR THE GROUND HAS BECOME GENERAL DRIFT SNOW
+7 7 DRIFT SNOW HAS STARTED AGAIN AFTER AN INTERRUPTION OF MORE T"    HAN 30 MINUTES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20041.table b/definitions/bufr/tables/0/wmo/12/codetables/20041.table
new file mode 100644
index 0000000..5e5ee64
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20041.table
@@ -0,0 +1,11 @@
+0 0 NO ICING
+1 1 LIGHT ICING
+2 2 LIGHT ICING IN CLOUD
+3 3 LIGHT ICING IN PRECIPITATION
+4 4 MODERATE ICING
+5 5 MODERATE ICING IN CLOUD
+6 6 MODERATE ICING IN PRECIPITATION
+7 7 SEVERE ICING
+8 8 SEVERE ICING IN CLOUD
+9 9 SEVERE ICING IN PRECIPITATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20042.table b/definitions/bufr/tables/0/wmo/12/codetables/20042.table
new file mode 100644
index 0000000..2493af7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20042.table
@@ -0,0 +1,4 @@
+0 0 NO ICING
+1 1 ICING PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20045.table b/definitions/bufr/tables/0/wmo/12/codetables/20045.table
new file mode 100644
index 0000000..91ae63f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20045.table
@@ -0,0 +1,4 @@
+0 0 NO SLD CONDITIONS PRESENT
+1 1 SLD CONDITIONS PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20050.table b/definitions/bufr/tables/0/wmo/12/codetables/20050.table
new file mode 100644
index 0000000..3f8654e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20050.table
@@ -0,0 +1,10 @@
+0 0 RESERVED
+1 1 1ST LOW CLOUD
+2 2 2ND LOW CLOUD
+3 3 3RD LOW CLOUD
+4 4 1ST MEDIUM CLOUD
+5 5 2ND MEDIUM CLOUD
+6 6 3RD MEDIUM CLOUD
+7 7 1ST HIGH CLOUD
+8 8 2ND HIGH CLOUD
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20055.table b/definitions/bufr/tables/0/wmo/12/codetables/20055.table
new file mode 100644
index 0000000..cf3be5f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20055.table
@@ -0,0 +1,11 @@
+0 0 CUMULUS, IF ANY, ARE QUITE SMALL
+1 1 CUMULUS OF INTERMEDIATE SIZE
+2 2 SWELLING CUMULUS
+3 3 SWELLING CUMULUS WITH TOWERS
+4 4 SWELLING CUMULUS WITH TOWERS HAVING PRONOUNCED TILT
+5 5 TALL CUMULUS CONGESTUS
+6 6 ISOLATED CUMULONIMBUS
+7 7 NUMEROUS CUMULONIMBUS
+8 8 CONTINUOUS DENSE MIDDLE CLOUDS
+9 9 CONTINUOUS SHEETS OF MIDDLE CLOUDS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20056.table b/definitions/bufr/tables/0/wmo/12/codetables/20056.table
new file mode 100644
index 0000000..6598473
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20056.table
@@ -0,0 +1,5 @@
+0 0 UNKNOWN
+1 1 WATER
+2 2 ICE
+3 3 MIXED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20062.table b/definitions/bufr/tables/0/wmo/12/codetables/20062.table
new file mode 100644
index 0000000..aba68ad
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20062.table
@@ -0,0 +1,21 @@
+0 0 SURFACE OF GROUND DRY (WITHOUT CRACKS AND NO APPRECIABLE"    AMOUNT OF DUST OR LOOSE SAND)
+1 1 SURFACE OF GROUND MOIST
+2 2 SURFACE OF GROUND WET (STANDING WATER IN SMALL"    OR LARGE POOLS ON SURFACE)
+3 3 FLOODED WITHOUT SNOW
+4 4 SURFACE OF GROUND FROZEN MEASURABLE ICE
+5 5 GLAZE ON GROUND COVER
+6 6 LOOSE DRY DUST OR SAND NOT COVERING GROUND COMPLETELY
+7 7 THIN COVER OF LOOSE DRY DUST OR SAND COVERING GROUND COMPLET"    ELY
+8 8 MODERATE OR THICK COVER OF LOOSE DRY DUST OR SAND COVERING"    GROUND COMPLETELY
+9 9 EXTREMELY DRY WITH CRACKS
+10 10 GROUND PREDOMINANTLY COVERED BY ICE
+11 11 COMPACT OR WET SNOW (WITH OR WITHOUT ICE) COVERING LESS THAN"    ONE-HALF OF THE GROUND
+12 12 COMPACT OR WET SNOW (WITH OR WITHOUT ICE) COVERING AT LEAST"    ONE-HALF OF THE GROUND BUT GROUND NOT COMPLETELY COVERED
+13 13 EVEN LAYER OF COMPACT OR WET SNOW COVERING GROUND COMPLETELY
+14 14 UNEVEN LAYER OF COMPACT OR WET SNOW COVERING GROUND"    WITH SNOW OR COMPLETELY MEASURABLE ICE
+15 15 LOOSE DRY SNOW COVERING LESS THAN ONE-HALF OF THE GROUND COV"    ER
+16 16 LOOSE DRY SNOW COVERING AT LEAST ONE-HALF OF THE"    GROUND (BUT NOT COMPLETELY)
+17 17 EVEN LAYER OF LOOSE DRY SNOW COVERING GROUND COMPLETELY
+18 18 UNEVEN LAYER OF LOOSE DRY SNOW COVERING GROUND COMPLETELY
+19 19 SNOW COVERING GROUND COMPLETELY; DEEP DRIFTS
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20063.table b/definitions/bufr/tables/0/wmo/12/codetables/20063.table
new file mode 100644
index 0000000..71cb125
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20063.table
@@ -0,0 +1 @@
+0 0 TO BE DEVELOPED
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20071.table b/definitions/bufr/tables/0/wmo/12/codetables/20071.table
new file mode 100644
index 0000000..bc9d6f6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20071.table
@@ -0,0 +1,11 @@
+0 0 NO ASSESSMENT            NO ASSESSMENT
+1 1 LESS THAN 50 KM          LESS THAN 1 PER SECOND
+2 2 BETWEEN 50 AND 200 KM    LESS THAN 1 PER SECOND
+3 3 MORE THAN 200 KM         LESS THAN 1 PER SECOND
+4 4 LESS THAN 50 KM          1 OR MORE PER SECOND
+5 5 BETWEEN 50 AND 200 KM    1 OR MORE PER SECOND
+6 6 MORE THAN 200 KM         1 OR MORE PER SECOND
+7 7 LESS THANK 50 KM         RATE SO RAPID NUMBER CANNOT BE COUN"    TED
+8 8 BETWEEN 50 AND 200 KM    RATE SO RAPID NUMBER CANNOT BE COUN"    TED
+9 9 MORE THAN 200 KM         RATE SO RAPID NUMBER CANNOT BE COUN"    TED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20086.table b/definitions/bufr/tables/0/wmo/12/codetables/20086.table
new file mode 100644
index 0000000..c820dcb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20086.table
@@ -0,0 +1,8 @@
+0 0 CLEAR AND DRY
+1 1 DAMP
+5 5 WET SNOW
+6 6 SLUSH
+7 7 ICE
+8 8 COMPACTED OR ROLLED SNOW
+9 9 FROZEN RUTS OR RIDGES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20090.table b/definitions/bufr/tables/0/wmo/12/codetables/20090.table
new file mode 100644
index 0000000..a33a9d0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20090.table
@@ -0,0 +1,7 @@
+0 0 RESERVED
+1 1 NACREOUS CLOUDS
+2 2 NOCTILUCENT CLOUDS
+3 3 CLOUDS FROM WATERFALLS
+4 4 CLOUDS FROM FIRES
+5 5 CLOUDS FROM VULCANIC ERUPTIONS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20101.table b/definitions/bufr/tables/0/wmo/12/codetables/20101.table
new file mode 100644
index 0000000..7e2fa15
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20101.table
@@ -0,0 +1,10 @@
+1 1 SCHISTOCERCA GREGARIA
+2 2 LOCUSTA MIGRATORIA
+3 3 NOMADACRIS SEPTEMFASCIATA
+4 4 OEDALEUS SENAGALENSIS
+5 5 ANRACRIDIUM SPP
+6 6 OTHER LOCUST
+7 7 OTHER GRASSHOPPERS
+8 8 ITHER CRICKETS
+9 9 SPODOPTERA EXEMPTA
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/20102.table b/definitions/bufr/tables/0/wmo/12/codetables/20102.table
new file mode 100644
index 0000000..fae1feb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/20102.table
@@ -0,0 +1,11 @@
+0 0 GREEN
+1 1 GREEN AND BLACK
+2 2 BLACK
+3 3 YELLOW AND BLACK
+4 4 STRAW/GREY
+5 5 PINK
+6 6 DARK RED/BROWN
+7 7 MIXED RED AND YELLOW
+8 8 YELLOW
+9 9 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2011.table b/definitions/bufr/tables/0/wmo/12/codetables/2011.table
new file mode 100644
index 0000000..f794c4f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2011.table
@@ -0,0 +1,54 @@
+0 0 RESERVED
+1 1 RESERVED
+2 2 NO RADIOSONDE-PASSIVE TARGET(E.G.REFLECTOR)
+3 3 NO RADIOSONDE-ACTIVE TARGET(E.G.TRANSPONDER)
+4 4 NO RADIOSONDE-PASSIVE TEMPERATURE-HUMIDITY PROFILER
+5 5 NO RADIOSONDE-ACTIVE TEMPERATURE-HUMIDITY PROFILER
+6 6 NO RADIOSONDE-RADIO ACOUSTIC SOUNDER
+9 9 NO RADIOSONDE-SYSTEM UNKNOWN OR NOT SPECIFIED
+10 10 RS VIZ TYPE A (USA)
+11 11 RS VIZ TYPE B (USA)
+12 12 RS SDC (SPACE DATA CORPORATION-USA)
+13 13 ASTOR (NO LONGER MADE-AUSTRALIA)
+14 14 VIZ MARK I MICROSONDE(USA)
+15 15 EEC COMPANY TYPE 23 (USA)
+16 16 ELIN (AUSTRIA)
+17 17 GRAW G. (GERMANY)
+19 19 GRAW M60 (GERMANY)
+20 20 INDIAN MET SERVICE MK3 (INDIA)
+21 21 VIZ/JIN YANG MARK I MICROSONDE(SOUTH KOREA)
+22 22 MEISEI RS2-80 (JAPAN)
+23 23 MESURAL FMO 1950A (FRANCE)
+24 24 MESURAL FMO 19455A (FRANCE)
+25 25 MESURAL MH73A (FRANCE)
+26 26 METEOLABOR BASORA (SWITZERLAND)
+27 27 AVK-MRZ (USSR)
+28 28 METEORIT MARZ2-1 (USSR)
+29 29 METEIRIT MARZ2-2 (USSR)
+30 30 OKI RS2-80 (JAPAN)
+31 31 VIZ/VALCOM TYPE A PRESSURE-COMMUTATED(CANADA)
+32 32 SHANGAI RADIO (CHINA)
+33 33 UK MET OFFICE MK3( UK)
+34 34 VINOHRADY(CZECHOSLOVAKIA)
+35 35 VAISALA RS18 (FINLAND)
+36 36 VAISALA RS21 (FINLAND)
+37 37 VAISALA RS80 (FINLAND)
+38 38 VIZ LOCATE (LORAN-C)(USA)
+39 39 SPRENGER E076 (GERMANY)
+40 40 SPRENGER E084 (GERMANY)
+41 41 SPRENGER E085 (GERMANY)
+42 42 SPRENGER E086 (GERMANY)
+43 43 AIR IS -4A-1680 (UK)
+44 44 AIR IS -4A-1680 X (UK)
+45 45 RS MSS(USA)
+46 46 AIR IS -4A-403(USA)
+47 47 MEISLEI RS2-91(JAPAN)
+48 48 VALCOM(CANADA)
+49 49 VIZ MARK II(USA)
+60 60 VAISALA RS80/MICROCORA (FINLAND)
+61 61 VAISALA RS80/DIGCORA OR MARWIN (FINLAND)
+62 62 VAISALA RS80/PCCORA (FINLAND)
+63 63 VAISALA RS80/STAR (FINLAND)
+64 64 ORBITAL,SCIENCE CORPORATION,SPACE DATA DIVISION,TRANSPONDER"     RADIOSONDE,TYPE 909-11-XX,WHERE XX CORRECPOND TO THE MODEL"    OF THE INSTRUMENT
+65 65 VIZ TRANSPONDER RADIOSONDE,MODEL NUMBER 1499-520(USA)
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2012.table b/definitions/bufr/tables/0/wmo/12/codetables/2012.table
new file mode 100644
index 0000000..71cb125
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2012.table
@@ -0,0 +1 @@
+0 0 TO BE DEVELOPED
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2013.table b/definitions/bufr/tables/0/wmo/12/codetables/2013.table
new file mode 100644
index 0000000..a5df80f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2013.table
@@ -0,0 +1,9 @@
+0 0 NO CORRECTION
+1 1 CIMO SOLAR CORRECTED AND CIMO INFRARED CORRECTED
+2 2 CIMO SOLAR CORRECTED AND IFRARED CORRECTED
+3 3 CIMO SOLAR CORRECTED ONLY
+4 4 SOLAR AND INFRARED CORRECTED AUTOMATICALLY BY RADIOSONDE SY"    STEM
+5 5 SOLAR CORRECTED AUTOMATICALLY BY RADIOSONDE SYSTEM
+6 6 SOLAR AND INFRARED CORRECTED AS SPECIFIED BY COUNTRY
+7 7 SOLAR CORRECTED AS SPECIFIED BY COUNTRY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2014.table b/definitions/bufr/tables/0/wmo/12/codetables/2014.table
new file mode 100644
index 0000000..409caa4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2014.table
@@ -0,0 +1,50 @@
+0 0 NO WINDFINDING
+1 1 AUTOMATIC WITH AUXILIARY OPTICAL DIRECTION FINDING
+2 2 AUTOMATIC WITH AUXILIARY RADIO DIRECTION FINDING
+3 3 AUTOMATIC WITH AUXILIARY RANGING
+4 4 NOT USED
+5 5 AUTOMATIC WITH MULTIPLE VLF-OMEGA SIGNALS
+6 6 AUTOMATIC CROSS CHAIN LORAN-C
+7 7 AUTOMATIC WITH AUXILIARY WIND PROFILER
+8 8 AUTOMATIC SATELLITE NAVIGATION
+19 19 TRACKING TECHNIQUE NOT SPECIFIED
+20 20 VESSEL STOPPED
+21 21 VESSEL DIVERTED FROM ORIGINAL DESTINATION
+22 22 VESSEL'S ARRIVAL DELAYED
+23 23 CONTAINER DAMAGED
+24 24 POWER FAILURE TO CONTAINER
+29 29 OTHER PROBLEMS
+30 30 MAJOR POWER PROBLEMS
+31 31 UPS INOPERATIVE
+32 32 RECEIVER HARDWARE PROBLEMS
+33 33 RECEIVER SOFTWARE PROBLEMS
+34 34 PROCESSOR HARDWARE PROBLEMS
+35 35 PROCESSOR SOFTWARE PROBLEMS
+36 36 NAVAID SYSTEM DAMAGED
+37 37 SHORTAGE OF LIFTING GAS
+39 39 OTHER PROBLEMS
+40 40 MECHANICAL DEFECT
+41 41 MATERIAL DEFECT (HAND LAUNCHER)
+42 42 POWER FAILURE
+43 43 CONTROL FAILURE
+44 44 PNEUMATIC/HYDRAULIC FAILURE
+45 45 OTHER PROBLEMS
+46 46 COMPRESSOR PROBLEMS
+47 47 BALLOON PROBLEMS
+48 48 BALLOON RELEASE PROBLEMS
+49 49 LAUNCHER DAMAGED
+50 50 R/S RECEIVER ANTENNA DEFECT
+51 51 NAVAID ANTENNA DEFECT
+52 52 R/S RECEIVER CABLING (ANTENNA DEFECT)
+53 53 NAVAID ANTENNA CABLING DEFECT
+59 59 OTHER PROBLEMS
+60 60 ASAP COMMUNICATIONS DEFECT
+61 61 COMMUNICATIONS FACILITY REJECTED DATA
+62 62 NO POWER AT TRANSMITTINGANTENN
+63 63 ANTENNA CABLE BROKEN
+64 64 ANTENNA CABLE DEFECT
+65 65 MESSAGE TRANSMITTED POWER BELOW NORMAL
+69 69 OTHER PROBLEMS
+70 70 ALL SYSTEMS IN NORMAL OPERATION
+99 99 STATUS OF SYSTEM AND ITS COMPONENTS NOT SPECIFIED
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2015.table b/definitions/bufr/tables/0/wmo/12/codetables/2015.table
new file mode 100644
index 0000000..007a096
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2015.table
@@ -0,0 +1,6 @@
+1 1 PRESSURE ONLY RADIOSONDE
+2 2 PRESSURE ONLY RADIOSONDE PLUS TRANSPONDER
+3 3 PRESSURE ONLY RADIOSONDE PLUS RADAR REFLECTOR
+4 4 NO PRESSURE RADIOSONDE PLUS TRANSPONDER
+5 5 NO PRESSURE RADIOSONDE PLUS RADAR REFLECTOR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2016.table b/definitions/bufr/tables/0/wmo/12/codetables/2016.table
new file mode 100644
index 0000000..4a30226
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2016.table
@@ -0,0 +1,4 @@
+1 1 TRAIN REGULATOR
+2 2 LIGHT UNIT
+3 3 PARACHUTE
+4 4 ROOFTOP RELEASE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2019.table b/definitions/bufr/tables/0/wmo/12/codetables/2019.table
new file mode 100644
index 0000000..3ddc721
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2019.table
@@ -0,0 +1,296 @@
+10 10 BNSC    RADIOMETER      AATSR   ADVANCED ALONG TRACK SCANNIN"    G RADIOMETER
+11 11 BNSC    RADIOMETER      ATSR    ALONG TRACK SCANNING RADIOME"    TER
+12 12 BNSC    RADIOMETER      ATSR-2  ALONG TRACK SCANNING RADIOME"    TER  -2
+13 13 BNSC    RADIOMETER      MWR     MICROWAVE RADIOMETER
+30 30 CNES    COMMUNICATIONS  ARGOS
+40 40 CNES    LIDAR   LASER REFLECTORS
+41 41 CNES    LIDAR   DORIS   DOPPLER ORBITOGRAPHY AND RADIO-POSIT"    IONING INTEGRATED BY SATELLITE
+42 42 CNES    LIDAR   DORIS-NG        DOPPLER ORBITOGRAPHY AND RAD"    IO-POSITIONING INTEGRATED BY SATELLITE-NG
+47 47 CNES    RADAR ALTIMETERS        POSEIDON-1 (SSALT-1)    POSI"    TIONING OCEAN SOLID EARTH ICE DYNAMICS ORBITING NAVIGATOR (S"    INGLE FREQUENCY SOLI
+48 48  CNES    RADAR ALTIMETERS        POSEIDON-2 (SSALT-2)   POSI"    TIONING OCEAN SOLID EARTH ICE DYNAMICS ORBITING NAVIGATOR (D"    UAL FREQUENCY SOLID 
+50 50 CNES    IMAGER RADIOMETER       ATSR/M  ATSR/M
+51 51 CNES    HIGH RESOLUTION OPTICAL IMAGERS HRG
+52 52 CNES    RADIOMETER      HRV     HIGH RESOLUTION VISIBLE
+53 53 CNES    RADIOMETER      HRVIR   HIGH RESOLUTION VISIBLE AND"            INFRA-RED
+54 54 CNES    RADIOMETER      SCARAB/MV2      SCANNER FOR EARTH'S"            RADIATION BUDGET
+55 55 CNES    RADIOMETER      POLDER  POLDER
+60 60 CNES    SPECTROMETER    VEGETATION      VEGETATION
+61 61 CNES    SPECTROMETER    WINDII  WINDII
+80 80 CSA     COMMUNICATIONS  RADARSAT DTT
+81 81 CSA     COMMUNICATIONS  RADARSAT TTC
+85 85 CSA     RADAR   SAR (CSA)       SYNTHETIC APERTURE RADAR (CS"    A)
+90 90 CSA     RADIOMETER      MOPITT  MEASUREMENTS OF POLLUTION IN"     THE TROPOSPHERE
+91 91 CSA     CHEMISTRY INSTRUMENTS   OSIRIS  OPTICAL SPECTROGRAPH"     AND INFRA-RED IMAGING SYSTEM
+97 97 CSIRO   RADIOMETER      PANCHROMATIC IMAGER
+98 98 CRCSS   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   GPS"    RECEIVER
+102 102 DLR     RADIOMETER      CHAMP GPS SOUNDER       GPS TURBORO"    GUE SPACE RECEIVER (TRSR)
+103 103 UNKNOWN
+116 116 DLR MAGNETOMETER    IGOR CHAMP GRAVITY PACKAGE (ACCELEROMETE"    R+GPS)       INTEGRATED GPS AND OCCULTATION RECEIVER STAR AC"    CELEROMETER
+117 117 DLR     MAGNETOMETER    CHAMP MAGNETOMETRY PACKAGE (1 SCALAR"    +2 VECTOR MAGNETOMETER)     OVERHAUSER MAGNETOMETER (OVM) AN"    D FLUXGATE MAGNETOME
+120 120 ESA     COMMUNICATIONS  ENVISAT COMMS   COMMUNICATIONS PACKA"    GE ON ENVISAT
+121 121 ESA     COMMUNICATIONS  ERS COMMS       COMMUNICATION PACKAG"    E FOR ERS
+130 130 ESA     LIDARS  ALADIN  ATMOSPHERIC LASER DOPPLER INSTRUMENT
+131 131 ESA     LIDARS  ATLID   ATMOSPHERIC LIDAR
+140 140 ESA     RADAR   AMI/SAR/IMAGE   ACTIVE MICROWAVE INSTRUMENTA"    TION. IMAGE MODE
+141 141 ESA     RADAR   AMI/SAR/WAVE    ACTIVE MICROWAVE INSTRUMENTA"    TION. WAVE MODE
+142 142 ESA     RADAR   AMI/SCATTEROMETER       ACTIVE MICROWAVE INS"    TRUMENTATION. WIND MODE
+143 143 ESA     RADAR   ASAR    ASAR
+144 144 ESA     IMAGING MICROWAVE RADARS        ASAR    ADVANCED SYN"    TETIC APERTURA RADAR (IMAGE MODE)
+145 145 ESA     IMAGING MICROWAVE RADARS        ASAR    ADVANCED SYN"    TETIC APERTURA RADAR (WAVE MODE)
+146 146 ESA     CLOUD PROFILE AND RAIN RADARS   CPR     CLOUD RADAR
+147 147 ESA     RADAR   RA-2/MWR        RADAR ALTIMETER - 2
+148 148 ESA     RADAR   RA/MWR  RADAR ALTIMETER
+150 150 ESA     SCATTEROMETERS  SCATTEROMETER   SCATTEROMETER
+161 161 ESA     RADIOMETER      MIPAS   MICHELSON INTERFEROMETRIC PA"    SSIVE ATMOSPHERE SOUNDER
+162 162 ESA     IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E   MWR-2   MICROWAVE RADIOMETER-2
+163 163 ESA     ATMOSPHERIC CHEMISTRY INSTRUMENTS       SOPRANO SUB-"    MILIMETRE OBSERVATION OF PROCESSES IN THE ABSORPTION NOTEWOR"    THY FOR OZONE
+170 170 ESA     ATMOSPHERIC CHEMISTRY INSTRUMENTS       GOME I  GLOB"    AL OZONE MONITORING EXPERIMENT
+172 172 ESA     SPECTROMETER    GOMOS   GLOBAL OZONE MONITORING BY O"    CCULTATION OF STARS
+174 174 ESA     SPECTROMETER    MERIS   MEDIUM RESOLUTION IMAGING SP"    ECTROMETER
+175 175 ESA     SPECTROMETER    SCIAMACHY       SCANNING IMAGING ABS"    ORPTION SPECTROMETER FOR ATMOSPHERIC CARTOGRAPHY
+181 181 EUMETSAT        COMMUNICATIONS  METEOSAT COMMS  COMMUNICATIO"    NS PACKAGE FOR METEOSAT
+182 182 EUMETSAT        COMMUNICATIONS  MSG COMMS       COMMUNICATIO"    NS PACKAGE FOR MSG
+190 190 ESA/ EUMETSAT        SCATTEROMETERS  ASCAT   ADVANCED SCATTE"    ROMETER
+200 200 EUMETSAT        RADIOMETER      GERB    GEOSTATIONARY EARTH"    RADIATION BUDGET
+202 202 ESA/ EUMETSAT        RADIOMETER      GRAS    GNSS RECEIVER F"    OR ATMOSPHERIC SOUNDING
+203 203 EUMETSAT        RADIOMETER      MHS     MICROWAVE HUMIDITY S"    OUNDER
+205 205 EUMETSAT        RADIOMETER      MVIRI   METEOSAT VISIBLE AND"    INFRA-RED IMAGER
+207 207 EUMETSAT        RADIOMETER      SEVIRI  SPINNING ENHANCED VI"    SIBLE AND INFRARED IMAGER
+208 208 EUMETSAT        IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)"        VIRI    VIRI
+220 220 ESA/ EUMETSAT        SPECTROMETER    GOME-2  GLOBAL OZONE MO"    NITORING EXPERIMENT - 2
+221 221 CNES/ EUMETSAT        ATMOSPHERIC TEMPERATURE AND HUMIDITY S"    OUNDERS   IASI    INFRA-RED ATMOSPHERIC SOUNDING INTERFEROME"    TER
+240 240 CAST    COMMUNICATIONS  DCP     DATA COLLECTION PLATFORM TRA"    NSPONDER
+245 245 CAST    RADIOMETER      CCD     HIGH RESOLUTION CCD CAMERA
+246 246 INPE    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   HSB"        HUMIDITY SOUNDER/BRAZIL
+248 248 INPE    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     OBA"        OBSERVADOR BRASILEIRO DA AMAZONIA
+250 250 CAST    RADIOMETER      WFI     WIDE FIELD IMAGER
+255 255 CAST    SPECTROMETER    IRMSS   INFRA RED MULTI SPECTRAL SCA"    NNER
+260 260 ISRO    PRECISION ORBIT BSS & FSS TRANSPONDERS
+261 261 ISRO    PRECISION ORBIT DRT-S&R
+262 262 ISRO    COMMUNICATIONS  INSAT COMMS     COMMUNICATIONS PACKA"    GE FOR INSAT
+268 268 ISRO    HIGH RESOLUTION OPTICAL IMAGERS HR-PAN  HIGH RESOLUT"    ION PANCHROMATIC CAMERA
+269 269 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  MSMR    MULTIFREQUENCY SCANNING MICROWAVE RADIOMETER
+270 270 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VHRR"        VERY HIGH RESOLUTION RADIOMETER
+271 271 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     WIFS"        WIDE FIELD SENSOR
+275 275 ISRO    HIGH RESOLUTION OPTICAL IMAGERS AWIFS   ADVANCED WID"    E FIELD SENSOR
+276 276 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-I  LINEAR IMAGI"    NG SELF SCANNER - I
+277 277 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-II LINEAR IMAGI"    NG SELF SCANNER - II
+278 278 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-III        LINE"    AR IMAGING SELF SCANNER - III
+279 279 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-IV LINEAR IMAGI"    NG SELF SCANNER - IV
+284 284 ISRO    HIGH RESOLUTION OPTICAL IMAGERS PAN     PANCHROMATIC"     SENSOR
+285 285 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     MOS"        MODULAR OPTO-ELECTRONIC SCANNER
+286 286 ISRO    OCEAN COLOUR INSTRUMENTS        OCM     OCEAN COLOUR"     MONITOR
+290 290 JMA     COMMUNICATIONS  MTSAT COMMS     COMMUNICATIONS PACKA"    GE FOR MTSAT
+294 294 JMA     IMAGING MULTI-SPECTRAL RADIOMETERS      IMAGER/MTSAT"    -1R IMAGER/MTSAT
+295 295 JMA     IMAGING MULTI-SPECTRAL RADIOMETERS      IMAGER/MTSAT"        IMAGER/MTSAT
+296 296 JMA     IMAGING MULTI-SPECTRAL RADIOMETERS      VISSR (GMS4)"        VISIBLE AND INFRA-RED SPIN SCAN RADIOMETER (GMS4)
+300 300 NASA    LIDARS  GLAS    GEOSCIENCE LASER ALTIMETER SYSTEM
+301 301 NASA    PRECISION ORBIT LRA     LASER RETROREFLECTOR ARRAY
+302 302 NASA    LIDARS  MBLA    MULTI BEAM LASER ALTIMETER
+309 309 NASA    CLOUD PROFILE AND RAIN RADARS   CPR (CLOUDSAT)  CLOU"    D PROFILING RADAR
+312 312 NASA    RADAR   NSCAT   NASA SCATTEROMETER
+313 313 NASA    RADAR   SEAWINDS       ADEOS II - NASA SCATTEROMETER
+330 330 NASA    EARTH RADIATION BUDGET RADIOMETER       ACRIM   ACTI"    VE CAVITY RADIOMETER IRRADIANCE MONITOR
+334 334 NASA    TOTAL AND PROFILE OZONE BUV     BACKSCATTER ULTRAVIO"    LET INSTRUMENT
+336 336 NASA    HIGH RESOLUTION OPTICAL IMAGERS ALI     ADVANCED LAN"    D IMAGER
+347 347 NASA    HIGH RESOLUTION OPTICAL IMAGERS ASTER   ADVANCED SPA"    CEBORNE THERMAL EMISSION AND REFLECTION RADIOMETER
+348 348 NASA    EARTH RADIATION BUDGET RADIOMETER       CERES-2 CLOU"    D AND THE EARTH'S RADIANT ENERGY SYSTEM
+351 351 CONAE   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   GPSD"    R   GPS DEMONSTRATION RECEIVER
+353 353 NASA    TOTAL AND PROFILE OZONE HIRDLS  HIGH RESOLUTION DYNA"    MICS LIMB SOUNDER
+354 354 NASA    TOTAL AND PROFILE OZONE HRDI    HIGH RESOLUTION DOPP"    LER IMAGER
+356 356 NASA    RADIOMETER      LIS     LIGHTNING IMAGING SENSOR
+358 358 NASA    MAGNETIC FIELD, AUROAL IMAGERYSCINTILLATION BOUNDARY"        PEM     PARTICLE ENVIRONMENT MONITOR
+359 359 NASA    OCEAN COLOUR INSTRUMENTS        SEAWIFS SEA-VIEWING"    WIDE FIELD-OF-VIEW SENSOR
+360 360 NASA    EARTH RADIATION BUDGET RADIOMETER       SUSIM (UARS)"        SOLAR ULTRAVIOLET IRRADIANCE MONITOR
+363 363 NASA    TOTAL AND PROFILE OZONE SBUV/1  SOLAR BACKSCATTER UL"    TRAVIOLET 1 INSTRUMENT
+365 365 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  TMI     TRMM MICROWAVE IMAGER
+366 366 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  JMR     JASON-1 MICROWAVE RADIOMETER
+369 369 NASA    TOTAL AND PROFILE OZONE LIMS    LIMB INFRARED MONITO"    R OF THE STRATOSPHERE
+370 370 NASA    TOTAL AND PROFILE OZONE LRIR    LIMB RADIANCE INVERS"    ION RADIOMETER INSTRUMENT
+371 371 NASA    TOTAL AND PROFILE OZONE EPIC    EARTH POLYCHROMATIC"    IMAGING CAMERA
+372 372 NASA    EARTH RADIATION BUDGET RADIOMETER       NISTAR  NIST"     ADVANCED RADIOMETER
+373 373 NASA    MAGNETIC FIELD, AUROAL IMAGERY SCINTILLATION BOUNDAR"    Y   PLASMA-MAG
+374 374 NASA    OTHER   XPS     XUV PHOTOMETER SYSTEM
+375 375 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VIRS"        VISIBLE INFRA-RED SCANNER
+376 376 CNES    MULTIPLE DIRECTION/POLARISATION RADIOMETERS     POLD"    ER II       POLARIZATION AND DIRECTIONALITY OF THE EARTH'S R"    EFLECTANCE - II
+377 377 NASA    EARTH RADIATION BUDGET RADIOMETER       TIM     TOTA"    L IRRADIANCE MONITOR
+379 379 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     WFC"        WIDE FIELD CAMERA
+382 382 NASA    SPECTRO-RADIOMETER      CLAES   CRYOGENIC LIMB ARRAY"     ETALON SPECTROMETER
+383 383 NASA    SPECTRO-RADIOMETER      HALOE   HALOGEN OCCULTATION"    EXPERIMENT
+384 384 NASA    SPECTRO-RADIOMETER      ISAMS   IMPROVED STRATOSPHER"    IC AND MESOSPHERIC SOUNDER
+385 385 NASA    SPECTRO-RADIOMETER      MISR    MULTI-ANGLE IMAGING"    SPECTRORADIOMETER
+386 386 NASA    SPECTRO-RADIOMETER    MLS     MICROWAVE LIMB SOUNDER
+387 387 NASA    SPECTRO-RADIOMETER    MLS (EOS-AURA)  MICROWAVE LIMB"     SOUNDER (EOS-AURA)
+389 389 NASA    SPECTRO-RADIOMETER      MODIS   MODERATE-RESOLUTION"    IMAGING SPECTRORADIOMETER
+393 393 NASA    GRAVITY HAIRS   HIGH ACCURACY INTER-SATELLITE RANGIN"    G SYSTEM
+394 394 NASA    TOTAL AND PROFILE OZONE OMI     OZONE MEASURING INST"    RUMENT
+395 395 NASA    RADIOMETER      ATMOSPHERIC CORRECTOR   ATMOSPHERIC"    CORRECTOR
+396 396 NASA    RADIOMETER      HYPERION        HYPERSPECTRAL IMAGER
+399 399 NASA    SPECTRO-RADIOMETER      SAGE I  STRATOSPHERIC AEROSO"    L AND GAS EXPERIMENT-I
+400 400 NASA    SPECTRO-RADIOMETER      SAGE II STRATOSPHERIC AEROSO"    L AND GAS EXPERIMENT-II
+401 401 NASA    SPECTRO-RADIOMETER      SAGE III        STRATOSPHERI"    C AEROSOL AND GAS EXPERIMENT-III
+402 402 NASA    SPECTRO-RADIOMETER      SAMS    STRATOSPHERIC AND ME"    SOSPHERIC SOUNDER
+403 403 NASA    SPECTRO-RADIOMETER      SAM II  STRATOSPHERIC AEROSO"    L MEASUREMENT II
+404 404 NASA    SPECTRO-RADIOMETER      IRIS    INFRARED INTERFEROME"    TER SPECTROMETER
+405 405 NASA    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   GIFT"    S   GEOSYNCHRONOUS IMAGING FOURIER TRANSFORM SPECTROMETER
+420 420 NASA    SPECTROMETER    AIRS   ATMOSPHERIC INFRA-RED SOUNDER
+426 426 NASA    SPECTROMETER    SOLSTICE        SOLAR STELLAR IRRADI"    ANCE COMPARISON EXPERIMENT
+430 430 NASA    SPECTROMETER    TES     TROPOSHPERIC EMISSION SPECTR"    OMETER
+431 431 NASA    SPECTROMETER    TOMS    TOTAL OZONE MAPPING SPECTROM"    ETER
+450 450 JAXA    COMMUNICATIONS  ADEOS COMMS     COMMUNICATIONS PACKA"    GE FOR ADEOS
+451 451 JAXA    COMMUNICATIONS  DCS (JAXA)      DATA COLLECTION SYST"    EM (JAXA)
+453 453 JAXA    COMMUNICATIONS  GMS COMMS       COMMUNICATIONS PACKA"    GE ON GMS
+454 454 JAXA    COMMUNICATIONS  JERS-1 COMMS    COMMUNICATIONS PACKA"    GE FOR JERS-1
+460 460 JAXA    LIDAR   RIS     RETROREFLECTOR IN SPACE
+461 461 JAXA    RADAR   PR      PRECIPITATION RADAR
+462 462 JAXA    IMAGING MICROWAVE RADARS        SAR     SYNTETIC APE"    RTURE RADAR
+470 470 JAXA    IMAGING MICROWAVE RADARS        PALSAR  PHASED ARRAY"     TYPE L-BAND SYNTHETIC APERTURE RADAR
+479 479 JAXA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  AMSR-E  ADVANCED MICROWAVE SCANNING RADIOMETER-EOS
+480 480 JAXA    HIGH RESOLUTION OPTICAL IMAGERS PRISM (ALOS)    PANC"    HROMATIC REMOTE-SENSING INSTRUMENT FOR STEREO MAPPING
+481 481 JAXA    RADIOMETER      AMSR    ADVANCED MICROWAVE SCANNING"    RADIOMETER
+482 482 JAXA    HIGH RESOLUTION OPTICAL IMAGERS AVNIR   ADVANCED VIS"    IBLE AND NEAR INFRARED RADIOMETER
+483 483 JAXA    HIGH RESOLUTION OPTICAL IMAGERS AVNIR-2 ADVANCED VIS"    IBLE AND NEAR INFRA-RED RADIOMETER TYPE 2
+484 484 JAXA    IMAGER  GLI     GLOBAL IMAGER
+485 485 JAXA    RADIOMETER      MESSR   MULTISPECTRAL ELECTRONIC SEL"    F SCANNING RADIOMETER
+486 486 JAXA    RADIOMETER      MSR    MICROWAVE SCANNING RADIOMETER
+487 487 JAXA    RADIOMETER      OCTS   OCEAN COLOR AND TEMPERATURE S"    CANNER
+488 488 JAXA    RADIOMETER      OPS     OPTICAL SENSOR
+489 489 JAXA    SPECTRO-RADIOMETER      VISSR (GMS5)    VISIBLE AND"    INFRA-RED SPIN SCAN RADIOMETER (GMS5)
+490 490 JAXA    RADIOMETER      VTIR    VISIBLE AND THERMAL INFRA-RE"    D RADIOMETER
+510 510 JAXA    SPECTROMETER    ILAS-I  IMOROVED LIMB ATOMOSPHIRIC S"    PECTROMETER
+511 511 JAXA    SPECTROMETER    ILAS-II IMPROVED LIMB ATOMOSPHIRIC S"    PECTROMETER
+512 512 JAXA    SPECTROMETER    IMG     INFEROMETRIC MONITOR OF GREE"    NHOUSE GASES
+514 514 JAXA    SPACE ENVIRONMENT       SEM     SPACE ENVIRONMENT MO"    NITOR (JAXA)
+515 515 JAXA    TOTAL AND PROFILE OZONE SOFIS   SOLAR OCCULTATION FO"    URIER TRANSFORM SPECTROMETER FOR INCLINED ORBIT SATELLITE
+540 540 NOAA    COMMUNICATIONS  DCS (NOAA)      DATA COLLECTION SYST"    EM (NOAA)
+541 541 NOAA    COMMUNICATIONS  GOES COMMS      COMMUNICATIONS PACKA"    GE ON GOES
+542 542 NOAA    COMMUNICATIONS  LANDSAT COMMS   COMMUNICATIONS PACKA"    GE FOR LANDSAT
+543 543 NOAA    COMMUNICATIONS  NOAA COMMS      COMMUNICATIONS PACKA"    GE FOR NOAA
+544 544 NOAA    COMMUNICATIONS  S&R (GOES)      SEARCH AND RESCUE
+545 545 NOAA    COMMUNICATIONS  S&R (NOAA)      SEARCH AND RESCUE
+546 546 NOAA    COMMUNICATIONS  WEFAX   WEATHER FACSIMILE
+547 547 NOAA    SPECTROMETER    SEM(GOES)       SPACE ENVIRONMENT MO"    NITOR
+550 550 NOAA    MAGNETIC FIELD  SSM     SPECIAL SENSOR MAGNETOMETER
+551 551 NOAA    MAGNETIC FIELD  SSJ/4   SPECIAL SENSOR PRECIPITATING"     PLASMA MONITOR
+552 552 NOAA    SPACE ENVIRONMENT       SSIES-2 SPECIAL SENSOR IONOS"    PHERIC PLASMA DRIFT/SCINTILLATION METER
+553 553 NOAA    SPACE ENVIRONMENT       SSB/X-2 SPECIAL SENSOR GAMMA"     RAY PARTICLE DECTECTOR
+570 570 NOAA    RADIOMETER      AMSU-A  ADVANCED MICROWAVE SOUNDING"    UNIT-A
+574 574 NOAA    RADIOMETER      AMSU-B  ADVANCED MICROWAVE SOUNDING"    UNIT-B
+580 580 NOAA    RADIOMETER      ATOVS (HIRS/3 + AMSU + AVHRR/3) ADVA"    NCED TIROS OPERATIONAL VERTICAL SOUNDER
+590 590 NOAA    RADIOMETER      AVHRR/2 ADVANCED VERY HIGH RESOLUTIO"    N RADIOMETER/2
+591 591 NOAA    RADIOMETER      AVHRR/3 ADVANCED VERY HIGH RESOLUTIO"    N RADIOMETER/3
+592 592 NOAA    RADIOMETER      AVHRR/4 ADVANCED VERY HIGH RESOLUTIO"    N RADIOMETER/4
+600 600 NOAA    RADIOMETER      ERBE    EARTH'S RADIATION BUDGET EXP"    ERIMENT
+601 601 NOAA    RADIOMETER      ETM+    ENHANCED THEMATIC MAPPER
+605 605 NOAA    RADIOMETER      HIRS/2  HIGH RESOLUTION INFRA-RED SO"    UNDER/2
+606 606 NOAA    RADIOMETER      HIRS/3  HIGH RESOLUTION INFRA-RED SO"    UNDER/3
+607 607 NOAA    RADIOMETER      HIRS/4  HIGH RESOLUTION INFRA-RED SO"    UNDER/4
+615 615 NOAA    RADIOMETER      IMAGER  IMAGER
+616 616 NOAA    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VIIR"    S   VISIBLE/INFRARED IMAGER RADIOMETER SUITE
+620 620 NOAA    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   CRIR"    S/NP        CROSS TRACK INFRA-RED SOUNDER/NPOESS
+621 621 NOAA    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   ATMS"        ADVANCED TECHNOLOGY MICROWAVE SOUNDER
+622 622 NOAA    RADIOMETER      MSS    MULTISPECTRAL SCANNING SYSTEM
+623 623 NOAA    RADIOMETER      MSU     MICROWAVE SOUNDING UNIT
+624 624 NOAA    RADIOMETER      SBUV/2  SOLAR BACKSCATTTER ULTRA-VIO"    LET INSTRUMENT/2
+625 625 NOAA    RADIOMETER      SBUV/3  SOLAR BACKSCATTTER ULTRA-VIO"    LET INSTRUMENT/3
+626 626 NOAA    RADIOMETER      SOUNDER SOUNDER
+627 627 NOAA    RADIOMETER      SSU     STRATOSPHERIC SOUNDING UNIT
+628 628 NOAA    RADIOMETER      TM      THEMATIC MAPPER
+629 629 NOAA    RADIOMETER      TOVS (HIRS/2 + MSU + SSU)       TIRO"    S OPERATIONAL VERTICAL SOUNDER
+630 630 NOAA    RADIOMETER      VAS     VISSR ATMOSPHERIC SOUNDER
+631 631 NOAA    RADIOMETER      SSZ
+645 645 NOAA    SPECTROMETER    SEM     SPACE ENVIRONMENT MONITOR
+650 650 NRSCC   RADIOMETER      MVIRSR (10 CHANNEL)     MULTISPECTRA"    L VISIBLE AND INFRA-RED SCAN RADIOMETER
+651 651 NRSCC   RADIOMETER      MVIRSR (3 CHANNEL)      MULTISPECTRA"    L VISIBLE AND INFRA-RED SCAN RADIOMETER
+652 652 NRSCC   RADIOMETER      MVIRSR (5 CHANNEL)      MULTISPECTRA"    L VISIBLE AND INFRA-RED SCAN RADIOMETER
+670 670 NSAU    RADAR   RLSBO   SIDE LOOKING MICROWAVE RADAR
+680 680 NSAU    HIGH RESOLUTION OPTICAL IMAGERS MSU-EU  MULTI-SPECTR"    AL RADIOMETER WITH HIGH RESOLUTION
+681 681 NSAU    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     MSU-"    UM  VISIBLE MULTI-SPECTRAL RADIOMETER
+682 682 NSAU    RADIOMETER      RM-08   IMAGING MICROWAVE RADIOMETER
+683 683 NSAU    HIGH RESOLUTION OPTICAL IMAGERS SU-UMS  STEREO RADIO"    METER WITH HIGH RESOLUTION
+684 684 NSAU    HIGH RESOLUTION OPTICAL IMAGERS SU-VR   VISIBLE RADI"    OMETER WITH HIGH RESOLUTION
+685 685 NSAU    RADIOMETER      TRASSER
+700 700 ROSCOSMOS       COMMUNICATIONS  KONDOR-2        DATA COLLECT"    ION AND TRANSMISSION SYSTEM
+701 701 ROSCOSMOS       COMMUNICATIONS  BRK
+710 710 ROSCOSMOS       LIDAR   ALISSA  BACKSCATTER LIDAR
+712 712 ROSCOSMOS       LIDAR   BALKAN-2 LIDAR
+715 715 ROSCOSMOS       LIDAR   MK-4
+716 716 ROSCOSMOS       LIDAR   MK-4M
+730 730 ROSCOSMOS       RADAR   GREBEN  RADAR ALTIMETER
+731 731 ROSCOSMOS       RADAR   SAR-10  SYNTETIC APERTURE RADAR
+732 732 ROSCOSMOS       RADAR   SAR-3   SYNTETIC APERTURE RADAR
+733 733 ROSCOSMOS       RADAR   SAR-70  SYNTETIC APERTURE RADAR
+740 740 ROSCOSMOS       RADAR   SLR-3   SIDE LOOKING RADAR
+745 745 ROSCOSMOS       RADAR   TRAVERS SAR
+750 750 ROSCOSMOS       RADIOMETER      174-K   TEMPERATURE AND HUMI"    DITY PROFILER
+751 751 ROSCOSMOS       RADIOMETER      BTVK    SCANNING TELEVISION"    RADIOMETER
+752 752 ROSCOSMOS       RADIOMETER      CHAIKA  SCANNING IR RADIOMET"    ER
+753 753 ROSCOSMOS       RADIOMETER      DELTA-2 MULTISPECTRAL MICROW"    AVE SCANNER
+755 755 ROSCOSMOS       RADIOMETER      IKAR-D  MULTISPECTRAL MICROW"    AVE SCANNER
+756 756 ROSCOSMOS       RADIOMETER      IKAR-N  MULTISPECTRAL MICROW"    AVE SCANNER
+757 757 ROSCOSMOS       RADIOMETER      IKAR-P  MULTISPECTRAL MICROW"    AVE SCANNER
+760 760 ROSCOSMOS       RADIOMETER      ISP
+761 761 ROSCOSMOS       RADIOMETER      KFA-1000        PHOTOGRAPHIC"     CAMERA
+762 762 ROSCOSMOS       RADIOMETER      KFA-200 PHOTOGRAPHIC CAMERA
+763 763 ROSCOSMOS       RADIOMETER      KFA-3000        PHOTOGRAPHIC"     CAMERA
+770 770 ROSCOSMOS       RADIOMETER     KLIMAT SCANNING IR RADIOMETER
+771 771 ROSCOSMOS       RADIOMETER      KLIMAT-2        SCANNING IR"    RADIOMETER
+775 775 ROSCOSMOS       RADIOMETER      MIRAS
+776 776 ROSCOSMOS       RADIOMETER      MIVZA
+777 777 ROSCOSMOS       RADIOMETER      MIVZA-M MICROWAVE SCANNING R"    ADIOMETER
+780 780 ROSCOSMOS       RADIOMETER      MR-2000
+781 781 ROSCOSMOS       RADIOMETER      MR-2000M
+785 785 ROSCOSMOS       RADIOMETER      MR-900  SCANNING TELEPHOTOME"    TER
+786 786 ROSCOSMOS       RADIOMETER      MR-900B SCANNING VISUAL BAND"     TELEPHOTOMETER
+790 790 ROSCOSMOS       RADIOMETER      MSU-E   MULTISPECTRAL HIGH R"    ESOLUTION ELECTRONIC SCANNER
+791 791 ROSCOSMOS       RADIOMETER      MSU-E1  MULTISPECTRAL HIGH R"    ESOLUTION ELECTRONIC SCANNER
+792 792 ROSCOSMOS       RADIOMETER      MSU-E2  MULTISPECTRAL HIGH R"    ESOLUTION ELECTRONIC SCANNER
+793 793 ROSCOSMOS       RADIOMETER      MSU-M
+794 794 ROSCOSMOS       RADIOMETER      MSU-S   MULTISPECTRAL MEDIUM"     RESOLUTION SCANNER
+795 795 ROSCOSMOS       RADIOMETER      MSU-SK  MULTISPECTRAL MEDIUM"    RESOLUTION CONICAL SCANNER
+796 796 ROSCOSMOS       RADIOMETER      MSU-V   MULTISPECTRAL HIGH R"    ESOLUTION CONICAL SCANNER
+810 810 ROSCOSMOS       RADIOMETER      MTZA    SCANNING MICROWAVE R"    ADIOMETER
+815 815 ROSCOSMOS       IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE"    MICROWAVE)  MZOAS   SCANNING MICROWAVE RADIO"    METER
+820 820 ROSCOSMOS       IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE"    MICROWAVE)  R-225   SINGLE CHANNEL MICROWAVE"     RADIOMETER
+821 821 ROSCOSMOS       RADIOMETER      R-400
+822 822 ROSCOSMOS       RADIOMETER      R-600   SINGLE CHANNEL MICRO"    WAVE RADIOMETER
+830 830 ROSCOSMOS       RADIOMETER      RMS     RADIATION MEASUREMEN"    T SYSTEM
+835 835 ROSCOSMOS       RADIOMETER      TV CAMERA
+836 836 ROSCOSMOS       RADIOMETER      SILVA
+840 840 ROSCOSMOS       SPECTRO-RADIOMETER      SROSMO  SPECTRORADIO"    METER FOR OCEAN MONITORING
+850 850 ROSCOSMOS       SPECTROMETER    BUFS-2  BACKSCATTER SPECTROM"    ETER/2
+851 851 ROSCOSMOS       SPECTROMETER    BUFS-4  BACKSCATTER SPECTROM"    ETER/4
+855 855 ROSCOSMOS       SPECTROMETER    ISTOK-1 INFRA-RED SPECTROMET"    ER
+856 856 ROSCOSMOS       SPECTROMETER    SFM-2   SPECTROMETER TO MEAS"    URE DIRECT SOLAR RADIATION
+857 857 ROSCOSMOS       SPECTROMETER    DOPI
+858 858 ROSCOSMOS       SPECTROMETER    KGI-4
+859 859 ROSCOSMOS       SPECTROMETER    OZON-M
+860 860 ROSCOSMOS       SPECTROMETER    RMK-2
+900 900 NOAA    RADIOMETER      MAXIE   MAGNETOSPHERIC ATMOSPHERIC X"    -RAY IMAGING EXPERIMENT
+901 901 NOAA    RADIOMETER      OLS     OPERATIONAL LINESCAN SYSTEM
+905 905 NOAA    RADIOMETER      SSM/I   MISSION SENSOR MICROWAVE IMA"    GER
+906 906 NOAA    RADIOMETER      SSM/T-1 MISSION SENSOR MICROWAVE TEM"    PERATURE SOUNDER
+907 907 NOAA    RADIOMETER      SSM/T-2 MISSION SENSOR MICROWAVE WAT"    ER VAPOR SOUNDER
+908 908 NOAA    RADIOMETER      SSMIS   SPECIAL SENSOR MICROWAVE IMA"    GER SOUNDER
+910 910 NOAA    RADIOMETER      SXI     SOLAR X-RAY IMAGER
+930 930 NOAA    SPECTROMETER    EHIC    ENERGETIC HEAVY ION COMPOSIT"    ION EXPERIMENT
+931 931 NOAA    SPECTROMETER    X-RAY ASTRONOMY PAYLOAD
+932 932 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     IVIS"    SR (FY-2)   IMPROVED MULTISPECTRAL VISIBLE AND INFRA-RED SCA"    N RADIOMETER (5 CHAN
+933 933 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   IRAS"        INFRARED ATMOSPHERIC SOUNDER
+934 934 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   MWAS"        MICROWAVE ATMOSPHERIC SOUNDER
+935 935 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   IMWA"    S   IMPROVED MICROWAVE ATMOSPHERIC SOUNDER
+936 936 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   MWHS"        MICROWAVE HUMIDITY SOUNDER
+937 937 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     MVIR"    S   MODERATE RESOLUTION VISIBLE AND INFRARED IMAGING SPECTRO"    RADIOMETER
+938 938 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  MWRI    MICROWAVE RADIATION IMAGER
+940 940 ROSCOSMOS       ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDER"    S   MTVZA-OK        SCANNING MICROWAVE RADIOMETER
+941 941 CNES    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   SAPH"    IR
+944 944 NOAA    RADAR ALTIMETERS        ALT     ALTIMETER
+945 945 NOAA    EARTH RADIATION BUDGET RADIOMETER       TSIS    TOTA"    L SOLAR IRRADIANCE SENSOR
+946 946 NOAA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  CMIS    CONICAL-SCANNING MICROWAVE IMAGER/SOUNDER
+947 947 NOAA    TOTAL AND PROFILE OZONE OMPS    OZONE MAPPING AND PR"    OFILER SUITE
+948 948 NOAA    SPACE ENVIRONMENT ATMOSPHERIC TEMPERATURE AND HUMIDI"    TY SOUNDERS GPSOS   GLOBAL POSITIONING SYSTEM OCCULTATION SE"    NSOR
+949 949 NOAA    MAGNETIC FIELD, AUROAL IMAGERY SCINTILLATION BOUNDAR"    Y   SESS    SPACE ENVIRONMENTAL SENSOR SUITE
+950 950 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VIRR"        MULTISPECTRAL VISIBLE AND INFRA-RED SCAN RADIOMETER (10"    CHANNELS
+951 951 NRSCC   TOTAL AND PROFILE OZONE TOM     TOTAL OZONE MAPPER
+952 952 NRSCC   TOTAL AND PROFILE OZONE OP      OZONE PROFILER
+2047 2047 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2020.table b/definitions/bufr/tables/0/wmo/12/codetables/2020.table
new file mode 100644
index 0000000..637ea6a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2020.table
@@ -0,0 +1,24 @@
+0 0 NIMBUS
+1 1 VTPR
+2 2 TIROS 1 (TIROS, NOAA-6 TO NOAA-13)
+3 3 TIROS 2 (NOAA-14 ONWARDS)
+10 10 EOS
+31 31 DMSP
+61 61 EUMETSAT POLAR SYSTEM (EPS)
+91 91 ERS
+121 121 ADEOS
+241 241 GOES
+261 261 JASON
+271 271 GMS
+272 272 MTSAT
+301 301 INSAT
+331 331 METEOSAT OPERATIONAL PROGRAMME (MOP)
+332 332 METEOSAT TRANSITIONAL PROGRAMME (MTP)
+333 333 METEOSAT SECOND GENERATION PROGRAMME (MSG)
+351 351 GOMS
+380 380 FY-1
+381 381 FY-2
+401 401 GPS
+402 402 GLONASS
+403 403 GALILEO
+511 511 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2021.table b/definitions/bufr/tables/0/wmo/12/codetables/2021.table
new file mode 100644
index 0000000..4ebf429
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2021.table
@@ -0,0 +1,8 @@
+1 1 HIGH RESOLUTION INFRA RED SOUNDER (HIRS)
+2 2 MICROWAVE SOUNDING UNIT           (MSU )
+3 3 STRATOSPHERIC SOUNDING UNIT       (SSU)
+4 4 AMI WIND MODE
+5 5 AMI WAVE MODE
+6 6 AMI IMAGE MODE
+7 7 RADAR ALTIMETER
+8 8 ATSR
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2022.table b/definitions/bufr/tables/0/wmo/12/codetables/2022.table
new file mode 100644
index 0000000..5068e7f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2022.table
@@ -0,0 +1,5 @@
+1 1 PROCESSING TECHNIQUE NOT DEFINED
+2 2 AUTOMATED STATISTICAL REGRESSION
+3 3 CLEAR PATH
+4 4 PARTLY CLOUDY PATH
+5 5 CLOUDY PATH
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2023.table b/definitions/bufr/tables/0/wmo/12/codetables/2023.table
new file mode 100644
index 0000000..428ca3b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2023.table
@@ -0,0 +1,12 @@
+0 0 RESERVED
+1 1 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE INFRARED"    CHANNEL
+2 2 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE VISIBLE CHANNEL
+3 3 WIND DERIVED FROM CLOUD MOTION OBSERVED IN WATER VAPOUR CHANNEL
+4 4 WIND DERIVED FROM MOTION OBSERVED IN  COMBINATION OF SPECTRAL"    CHANNELS
+5 5 WIND DERIVED FROM MOTION OBSERVED IN THE WATER  VAPOUR CHANNEL"    IN CLEAR AIR
+6 6 WIND DERIVED FROM MOTION OBSERVED IN THE OZONE  CHANNEL
+7 7 WIND DERIVED FROM MOTION OBSERVED IN WATER VAPOUR CHANNEL"    (CLOUD OR CLEAR AIR NOT SPECIFIED)
+8 8 WIND DERIVED FROM ALTIMETER
+9 9 WIND DERIVED FROM RADIOMETER
+13 13 ROOT MEAN SQUARE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2024.table b/definitions/bufr/tables/0/wmo/12/codetables/2024.table
new file mode 100644
index 0000000..ba7498e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2024.table
@@ -0,0 +1,3 @@
+1 1 TABLE WITH FULL RANGE OF HUMIDITY VARIATION IN LAYER
+2 2 REGRESSION TECHNIQUE ON 2 HUMIDITY VALUES IN LAYER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2025.table b/definitions/bufr/tables/0/wmo/12/codetables/2025.table
new file mode 100644
index 0000000..6c8403c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2025.table
@@ -0,0 +1,16 @@
+1 1 RESERVED
+2 2 HIRS
+3 3 MSU
+6 6 HIRS
+7 7 MSU
+10 10 HIRS(1, 2, 3, 8,9, 16, 17)
+11 11 HIRS(1, 2, 3, 9, 17)
+12 12 MSU
+15 15 HIRS
+16 16 HIRS
+17 17 MSU
+18 18 SKINTK(OCEAN ONLY)
+21 21 HIRS
+22 22 SSU
+23 23 MSU (3 ,4)
+25 25 MISSING
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2030.table b/definitions/bufr/tables/0/wmo/12/codetables/2030.table
new file mode 100644
index 0000000..c58949d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2030.table
@@ -0,0 +1,7 @@
+1 1 ADCP (ACOUSTIC DOPPLER CURRENT PROFILER)
+2 2 GEK (GEOMAGNETIC ELECTRO KINETOGRAPH)
+3 3 SHIPS'S SET AND DRIFT DETERMINED BY FIXES 3-6 HOURS APART
+4 4 SHIPS'S SET AND DRIFT DETERMINED BY MORE THAN 6 HOURS BUT LE"    SS THAN 12 HOURS APART
+5 5 DRIFT OF BUOY
+6 6 ADCP (ACOUSTIC DOPPLER CURRENT PROFILER)
+7 7 MISSIN VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2031.table b/definitions/bufr/tables/0/wmo/12/codetables/2031.table
new file mode 100644
index 0000000..1c0f4b8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2031.table
@@ -0,0 +1,21 @@
+0 0 RESERVED
+1 1 INSTANTANEOUS
+2 2 AVERAGED OVER 3 MINUTES OR LESS
+3 3 AVERAGED OVER MORE THAN 3 MINUTES, BUT 6 AT THE MOST
+4 4 AVERAGED OVER MORE THAN 6 MINUTES, BUT 12 AT THE MOST
+5 5 INSTANTANEOUS
+6 6 AVERAGED OVER 3 MINUTES OR LESS
+7 7 AVERAGED OVER MORE THAN 3 MINUTES, BUT 6 AT THE MOST
+8 8 AVERAGED OVER MORE THAN 6 MINUTES, BUT 12 AT THE MOST
+9 9 VECTOR OR DOPPLER CURRENT PROFILLING METHOD NOT USED
+10 10 RESERVED
+11 11 1 HOUR OR LESS
+12 12 MORE THAN  1 HOUR BUT  2 AT THE MOST
+13 13 MORE THAN  2 HOUR BUT  4 AT THE MOST
+14 14 MORE THAN  4 HOUR BUT  8 AT THE MOST
+15 15 MORE THAN  8 HOUR BUT 12 AT THE MOST
+16 16 MORE THAN 12 HOUR BUT 18 AT THE MOST
+17 17 MORE THAN 18 HOUR BUT 24 AT THE MOST
+18 18 RESERVED
+19 19 DRIFT METHOD NOT USED
+31 31 MISSING
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2032.table b/definitions/bufr/tables/0/wmo/12/codetables/2032.table
new file mode 100644
index 0000000..8d60fe6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2032.table
@@ -0,0 +1,4 @@
+0 0 VALUES AT SELECTED DEPTHS (DATA POINTS FIXED BY THE INSTRUME"    NT OR SELECTED BY ANY OTHER METHOD)
+1 1 VALUES AT SIGNIFICANT DEPTHS (DATA POINTS TAKEN FROM TRACES"    AT SIGNIFICANT DEPTHS)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2033.table b/definitions/bufr/tables/0/wmo/12/codetables/2033.table
new file mode 100644
index 0000000..55ee821
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2033.table
@@ -0,0 +1,5 @@
+0 0 NO SALINITY MEASURED
+1 1 IN SITU SENSOR, ACCURACY BETTER THAN 0.02 %
+2 2 IN SITU SENSOR, ACCURACY LESS THAN 0.02 %
+3 3 SAMPLE ANALYSIS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2034.table b/definitions/bufr/tables/0/wmo/12/codetables/2034.table
new file mode 100644
index 0000000..06cdd52
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2034.table
@@ -0,0 +1,7 @@
+0 0 UNSPECIFIED DROGUE
+1 1 HOLEY SOCK
+2 2 TRISTAR
+3 3 WINDOW SHADE
+4 4 PARACHUTE
+5 5 NON-LAGRANGIAN SEA ANCHOR
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2036.table b/definitions/bufr/tables/0/wmo/12/codetables/2036.table
new file mode 100644
index 0000000..4e69a0c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2036.table
@@ -0,0 +1,4 @@
+0 0 DRIFTING BUOY
+1 1 FIXED BUOY
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2037.table b/definitions/bufr/tables/0/wmo/12/codetables/2037.table
new file mode 100644
index 0000000..67049ca
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2037.table
@@ -0,0 +1,7 @@
+0 0 REASERVED
+1 1 MANUAL READING FROM VERTICAL TIDE STAFF
+2 2 MANUAL READING FROM SINGLE AUTOMATIC RECORDER AT STATION
+3 3 MANUAL READING FROM MULTIPLE AUTOMATIC RECORDERS AT STATION
+4 4 AUTOMATIC READING FROM SINGLE AUTOMATIC RECORDER AT STATION"    WITHOUT LEVEL REFERENCE CHECK
+5 5 AUTOMATIC READING FROM SINGLE AUTOMATIC RECORDER AT STATION"    WITH LEVEL REFERENCE CHECK,OR MULTIPLE AUTOMATIC RECORDERS
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2038.table b/definitions/bufr/tables/0/wmo/12/codetables/2038.table
new file mode 100644
index 0000000..25c58c5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2038.table
@@ -0,0 +1,12 @@
+0 0 SHIP INTAKE
+1 1 BUCKET
+2 2 HULL CONTACT SENSOR
+3 3 REVERSING TERMOMETER
+4 4 STD/CTD SENSOR
+5 5 MECHANICAL BT
+6 6 EXPANDABLE BT
+7 7 DIGITAL BT
+8 8 THERMISTOR CHAIN
+9 9 INFRARED SCANNER
+10 10 MICROWAVE SCANNER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2039.table b/definitions/bufr/tables/0/wmo/12/codetables/2039.table
new file mode 100644
index 0000000..0a94982
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2039.table
@@ -0,0 +1,5 @@
+0 0 MEASURED WET-BULB TEMPERATURE
+1 1 ICED BULB MEASURED WET-BULB TEMPERATURE
+2 2 COMPUTED WET-BULB TEMPERATURE
+3 3 ICED BULB COMPUTED WET-BULB TEMPERATURE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2040.table b/definitions/bufr/tables/0/wmo/12/codetables/2040.table
new file mode 100644
index 0000000..5fcc074
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2040.table
@@ -0,0 +1,8 @@
+0 0 SHIPS MOTION REMOVED BY AVARAGING
+1 1 SHIPS MOTION REMOVED BY MOTION COMPENSATION
+2 2 SHIPS MOTION NOT REMOVED
+3 3 SHIPS MOTION REMOVED BY AVERAGING
+4 4 SHIPS MOTION REMOVED BY MOTION COMPENSATION
+5 5 SHIPS MOTION NOT REMOVED
+6 6 DOPPLER CURRENT PROFILING METHOD NOT USED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2041.table b/definitions/bufr/tables/0/wmo/12/codetables/2041.table
new file mode 100644
index 0000000..f479da9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2041.table
@@ -0,0 +1,6 @@
+0 0 INFORMATION BASED ON MANUAL ANALYSIS
+1 1 INFORMATION BASED ON COMPUTER ANALYSIS
+2 2 INFORMATION BASED ON DATA ASSIMILATION
+3 3 INFORMATION BASED ON COMPUTER ANALYSIS OR DATA ASSIMSILATIO"    N MANUALLY MODIFIED
+10 10 INFORMATION BASED ON THE NUMERICAL WEATHER PREDICTION
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2044.table b/definitions/bufr/tables/0/wmo/12/codetables/2044.table
new file mode 100644
index 0000000..80afaca
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2044.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 LONGUET-HIGGINS (1964)
+2 2 LONGUET-HIGGINS (F3 METHOS)
+3 3 MAXIMUM LIKELIHOOD METHOD
+4 4 MAXIMUM ENTROPY METHOD
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2045.table b/definitions/bufr/tables/0/wmo/12/codetables/2045.table
new file mode 100644
index 0000000..374e4f2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2045.table
@@ -0,0 +1,5 @@
+0 0 SEA STATION
+1 1 AUTOMATIC DATA BUOY
+2 2 AIRCRAFT
+3 3 SATELLITE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2046.table b/definitions/bufr/tables/0/wmo/12/codetables/2046.table
new file mode 100644
index 0000000..c4fb394
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2046.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 HEAVE SENSOR
+2 2 SLOPE SENSOR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2048.table b/definitions/bufr/tables/0/wmo/12/codetables/2048.table
new file mode 100644
index 0000000..69e2610
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2048.table
@@ -0,0 +1,12 @@
+0 0 HIRS
+1 1 MSU
+2 2 SSU
+3 3 AMSU-A
+4 4 AMSU-B
+5 5 AVHRR
+6 6 SSMI
+7 7 NSCAT
+8 8 SEA WINDS
+9 9 POSEIDON ALTIMETER
+10 10 JMR (JASON MICROWAVE RADIOMETER)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2049.table b/definitions/bufr/tables/0/wmo/12/codetables/2049.table
new file mode 100644
index 0000000..15b2ce5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2049.table
@@ -0,0 +1,4 @@
+1 1 PROCESSING TECHNIQUE NOT DEFINED
+2 2 SIMULTANIOUS PHISICAL RETRIEVAL
+3 3 CLEAR SOUNDING
+4 4 CLOUDY COUNDING
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2050.table b/definitions/bufr/tables/0/wmo/12/codetables/2050.table
new file mode 100644
index 0000000..c9688ef
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2050.table
@@ -0,0 +1,19 @@
+1 1 CHANNEL 1 14.71 MICROMETERS
+2 2 CHANNEL 2 14.37 MICROMETERS
+3 3 CHANNEL 3 14.06 MICROMETERS
+4 4 CHANNEL 4 13.64 MICROMETERS
+5 5 CHANNEL 5 13.37 MICROMETERS
+6 6 CHANNEL 6 12.66 MICROMETERS
+7 7 CHANNEL 7 12.02 MICROMETERS
+8 8 CHANNEL 8 11.03 MICROMETERS
+9 9 CHANNEL 9  9.71 MICROMETERS
+10 10 CHANNEL 10 7.43 MICROMETERS
+11 11 CHANNEL 11 7.02 MICROMETERS
+12 12 CHANNEL 12 6.51 MICROMETERS
+13 13 CHANNEL 13 4.57 MICROMETERS
+14 14 CHANNEL 14 4.52 MICROMETERS
+15 15 CHANNEL 15 4.45 MICROMETERS
+16 16 CHANNEL 16 4.13 MICROMETERS
+17 17 CHANNEL 17 3.98 MICROMETERS
+18 18 CHANNEL 18 3.74 MICROMETERS
+19 19 CHANNEL 19 0.969 MICROMETERS
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2051.table b/definitions/bufr/tables/0/wmo/12/codetables/2051.table
new file mode 100644
index 0000000..2f0ab22
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2051.table
@@ -0,0 +1,4 @@
+1 1 MAXIMUM/MINIMUM THERMOMETERS
+2 2 AUTOMATED INSTRUMENT
+3 3 THERMOGRAPH
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2052.table b/definitions/bufr/tables/0/wmo/12/codetables/2052.table
new file mode 100644
index 0000000..4b934ab
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2052.table
@@ -0,0 +1,5 @@
+1 1 CHANNEL 1 0.55-.75 MICROMETERS
+2 2 CHANNEL 2 3.9 MICROMETERS
+3 3 CHANNEL 3 6.7 MICROMETERS
+4 4 CHANNEL 4 10.7 MICROMETERS
+5 5 CHANNEL 5 12.0 MICROMETERS
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2053.table b/definitions/bufr/tables/0/wmo/12/codetables/2053.table
new file mode 100644
index 0000000..68c67fe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2053.table
@@ -0,0 +1,5 @@
+0 0 OBSERVED BRIGHTNESS TEMPERATURES
+1 1 BRIGHTNESS TEMPERATURE WITH BIAS CORRECTION APPLIED
+2 2 BRIGHTNESS TEMPERATURE CALCULATED FROM FIRST GUESS
+3 3 BRIGHTNESS TEMPERATURE CALCULATED FROM SOUNDING
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2054.table b/definitions/bufr/tables/0/wmo/12/codetables/2054.table
new file mode 100644
index 0000000..6260713
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2054.table
@@ -0,0 +1,6 @@
+0 0 PARAMETER DERIVED USING OBSERVED SOUNDER BRIGHTNESS TEMPERAT"    URES
+1 1 PARAMETER DERIVED USING OBSERVED IMAGER BRIGHTNESS TEMPERATU"    RES
+2 2 PARAMETER DERIVED USING FIRST GUESS INFORMATION
+3 3 PARAMETER DERIVED USING  NMC ANALYSIS INFORMATION
+4 4 PARAMETER DERIVED USING RADIOSONDE INFORMATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2055.table b/definitions/bufr/tables/0/wmo/12/codetables/2055.table
new file mode 100644
index 0000000..8c9fce2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2055.table
@@ -0,0 +1,9 @@
+0 0 STATISTICS GENERATED COMPARING RETRIEVAL VERSUS RADIOSONDE
+1 1 STATISTICS GENERATED COMPARING RETRIEVAL VERSUS FIRST GUESS
+2 2 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS FIRST GUESS
+3 3 STATISTICS GENERATED COMPARING OBSERVED VERSUS RETRIEVAL
+4 4 STATISTICS GENERATED COMPARING OBSERVED VERSUS FORST GUESS
+5 5 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS IMAGER
+6 6 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS SOUNDER
+7 7 STATISTICS GENERATED FOR RADIOSONDE
+8 8 STATISTICS GENERATED FOR FIRST GUESS
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2056.table b/definitions/bufr/tables/0/wmo/12/codetables/2056.table
new file mode 100644
index 0000000..3bdc910
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2056.table
@@ -0,0 +1,6 @@
+0 0 SUMS OF DIFFERENCE
+1 1 SUMS OF SQUARED DIFFERENCES
+2 2 SAMPLE SIZE
+3 3 MINIMUM DIFFERENCE
+4 4 MAXIMUM DIFFERENCE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2057.table b/definitions/bufr/tables/0/wmo/12/codetables/2057.table
new file mode 100644
index 0000000..a5cb21e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2057.table
@@ -0,0 +1,6 @@
+0 0 NESTED GRID MODEL (NMG)
+1 1 AVIATION MODEL(AVN)
+2 2 MEDIUM RANGE FORECAST (MRF) MODEL
+3 3 GLOBAL DATA ASSIMILATION SYSTEM (GDAS) FORECAST MODEL
+4 4 PRIOR SOUNDINGS (WITHIN 3 HOURS OF CURRENT TIME)
+5 5 CLIMATOLOGY
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2058.table b/definitions/bufr/tables/0/wmo/12/codetables/2058.table
new file mode 100644
index 0000000..258c4ad
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2058.table
@@ -0,0 +1,5 @@
+0 0 12 HOUR AND 18 HOUR
+1 1 18 HOUR AND 24 HOUR
+2 2  6 HOUR AND 12 HOUR
+3 3 GREATER THAN 24 HOUR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2059.table b/definitions/bufr/tables/0/wmo/12/codetables/2059.table
new file mode 100644
index 0000000..58f9c5c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2059.table
@@ -0,0 +1,5 @@
+0 0 NCEP NESTED GRID MODEL ANALYSIS
+1 1 NCEP AVIATION MODEL ANALYSIS
+2 2 NCEP MEDIUM RANGE FORECAST MODEL ANALYSIS
+3 3 NCEP GLOBAL DATA ASSIMILATION SYSTEM FORECAST MODEL ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2060.table b/definitions/bufr/tables/0/wmo/12/codetables/2060.table
new file mode 100644
index 0000000..84a612d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2060.table
@@ -0,0 +1,7 @@
+0 0 CURRENT SURFACE HOURLY REPORTS
+1 1 CURRENT SHIP REPORTS
+2 2 CURRENT BUOY REPORTS
+3 3 ONE HOUR OLD SURFACE HOURLY REPORTS
+4 4 ONE HOUR SHIP OLD REPORTS
+5 5 ONE HOUR BUOY OLD REPORTS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2061.table b/definitions/bufr/tables/0/wmo/12/codetables/2061.table
new file mode 100644
index 0000000..3298d90
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2061.table
@@ -0,0 +1,3 @@
+0 0 INERTIAL NAVIGATOR SYSTEM
+1 1 OMEGA
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2062.table b/definitions/bufr/tables/0/wmo/12/codetables/2062.table
new file mode 100644
index 0000000..7083db9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2062.table
@@ -0,0 +1,7 @@
+0 0 ASDAR
+1 1 ASDAR(ACARS ALSO AVAILABLE BUT NOT OPERATIVE)
+2 2 ASDAR(ACARS ALSO AVAILABLE AND OPERATIVE)
+3 3 ACARS
+4 4 ACARS(ASDAR ALSO AVALILABLE BUT NOT OPERATIVE)
+5 5 ACARS(ASDAR ALSO AVAILABLE AND OPERATIVE)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2064.table b/definitions/bufr/tables/0/wmo/12/codetables/2064.table
new file mode 100644
index 0000000..7414302
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2064.table
@@ -0,0 +1,4 @@
+0 0 GOOD
+1 1 BAD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2066.table b/definitions/bufr/tables/0/wmo/12/codetables/2066.table
new file mode 100644
index 0000000..b1778d1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2066.table
@@ -0,0 +1,4 @@
+0 0 TRS 2000
+1 1 IMS 1500C
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2070.table b/definitions/bufr/tables/0/wmo/12/codetables/2070.table
new file mode 100644
index 0000000..5f294e6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2070.table
@@ -0,0 +1,13 @@
+0 0 ACTUAL LOCATION IN SECONDS
+1 1 ACTUAL LOCATION IN MINUTES
+2 2 ACTUAL LOCATION IN DEGREES
+3 3 ACTUAL LOCATION IN DECIDEGREES
+4 4 ACTUAL LOCATION OM CENTIDEGREES
+5 5 REFERENCED TO CHECKPOINT IN SECONDS
+6 6 REFERENCED TO CHECKPOINT IN MINUTES
+7 7 REFERENCED TO CHECKPOINT IN DEGREES
+8 8 REFERENCED TO CHECKPOINT IN DECIDEGREES
+9 9 REFERENCED TO CHECKPOINT IN CENTIDEGREES
+10 10 ACTUAL LOCATION IN TENTHS OF A MINUTE
+11 11 REFERENCED TO CHECKPOINT IN TENTHS OF A MINUTE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2080.table b/definitions/bufr/tables/0/wmo/12/codetables/2080.table
new file mode 100644
index 0000000..b0eb6d2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2080.table
@@ -0,0 +1,5 @@
+0 0 KAYSAM
+1 1 TOTEX
+2 2 KKS
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2081.table b/definitions/bufr/tables/0/wmo/12/codetables/2081.table
new file mode 100644
index 0000000..4c0f1dc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2081.table
@@ -0,0 +1,9 @@
+0 0 GP26
+1 1 GP28
+2 2 GP30
+3 3 HM26
+4 4 HM28
+5 5 HM30
+6 6 SV16
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2083.table b/definitions/bufr/tables/0/wmo/12/codetables/2083.table
new file mode 100644
index 0000000..61c3e1e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2083.table
@@ -0,0 +1,6 @@
+0 0 HIGH BAY
+1 1 LOW BAY
+2 2 BALLOON INFLATION LAUNCH SYSTEM (BILS)
+3 3 ROOF-TOP BILS
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2084.table b/definitions/bufr/tables/0/wmo/12/codetables/2084.table
new file mode 100644
index 0000000..be6430a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2084.table
@@ -0,0 +1,5 @@
+0 0 HYDROGEN
+1 1 HELIUM
+2 2 NATURAL GAS
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2095.table b/definitions/bufr/tables/0/wmo/12/codetables/2095.table
new file mode 100644
index 0000000..79f4996
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2095.table
@@ -0,0 +1,5 @@
+0 0 CAPACITANCE ANEROID
+1 1 DERIVED FROM GPS
+2 2 RESISTIVE STRAIN GAUGE
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2096.table b/definitions/bufr/tables/0/wmo/12/codetables/2096.table
new file mode 100644
index 0000000..b856de9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2096.table
@@ -0,0 +1,5 @@
+0 0 ROD THERMISTOR
+1 1 BEAD THERMISTOR
+2 2 CAPACITANCE BEAD
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2097.table b/definitions/bufr/tables/0/wmo/12/codetables/2097.table
new file mode 100644
index 0000000..0e511a1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2097.table
@@ -0,0 +1,8 @@
+0 0 VIZ MARK II CARBON HYGRISTOR
+1 1 VIZ B2 HYGRISTOR
+2 2 VAISALA A-HUMICAP
+3 3 VAISALA H-HUMICAP
+4 4 CAPACITANCE SENSOR
+5 5 VAISALA RS90
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2098.table b/definitions/bufr/tables/0/wmo/12/codetables/2098.table
new file mode 100644
index 0000000..6eb06d4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2098.table
@@ -0,0 +1,5 @@
+0 0 HH POLARISATION
+1 1 VV POLARISATION
+2 2 HV POLARISATION REAL VALUED COMPONENT
+3 3 HV POLARISATION IMAGINARY VALUED COMPONENT
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2101.table b/definitions/bufr/tables/0/wmo/12/codetables/2101.table
new file mode 100644
index 0000000..efdb3ec
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2101.table
@@ -0,0 +1,10 @@
+0 0 CENTRE FRONT-FED PARABOLOID
+1 1 OFFSET FRONT-FED PARABOLOID
+2 2 CENTRE CASSEGRAIN PARABOLOID
+3 3 OFFSET CASSEGRAIN PARABOLOID
+4 4 PLANAR ARRAY
+5 5 COAXIAL-COLLINEAR ARRAY
+6 6 YAGI ELEMENTS ARRAY
+7 7 MICROSTRIP
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2103.table b/definitions/bufr/tables/0/wmo/12/codetables/2103.table
new file mode 100644
index 0000000..3b7ee27
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2103.table
@@ -0,0 +1,2 @@
+1 1 RADAR ANTENNA IS PROTECTED BY A RADOME
+2 2 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2104.table b/definitions/bufr/tables/0/wmo/12/codetables/2104.table
new file mode 100644
index 0000000..100081a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2104.table
@@ -0,0 +1,7 @@
+0 0 HORIZONTAL POLARISATION
+1 1 VERTICAL POLARISATION
+2 2 RIGHT CIRCULAR POLARISATION
+3 3 LEFT CIRCULAR POLARSZATION
+4 4 HORIZONTAL AND VERTICAL POLARISATION
+5 5 RIGHT AND LEFT CIRCULAR POLARISATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/21066.table b/definitions/bufr/tables/0/wmo/12/codetables/21066.table
new file mode 100644
index 0000000..a3fd93c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/21066.table
@@ -0,0 +1,11 @@
+1 1 PROCESSING EQUIPMENT NOT WORKING
+2 2 EQUIPMENT FAILED
+3 3 PRF CODE CHANGED DURING IMAGE GENERATION
+4 4 SAMPLINH WINDOW CHANGED DURING IMAGE GENERATION
+5 5 GAIN CHANGED DURING IMAGE GENERATION
+6 6 CHIRP REPLICA EXCEEDS SPECIFIC VALUE
+7 7 INPUT DATA MEAN AND STANDARD DEVIATION OF IN-PHASE AND"    QUADRATURE OUT OF RANGE
+8 8 DOPPLER CENTROID CONFIDENCE > MMCC VALUE
+9 9 DOPPLER CENTROID ABSOLUTE VALUE > PRF/2
+10 10 DOPPLER AMBIGUITY CONFIDENCE < MMCC VALUE
+11 11 OUTPUT DATA MEAN AND STANDARD DEVIATION =< MMCC VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/21067.table b/definitions/bufr/tables/0/wmo/12/codetables/21067.table
new file mode 100644
index 0000000..9d0c51b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/21067.table
@@ -0,0 +1,12 @@
+1 1 NO FOREBEAM CALCULATION
+2 2 NO MIDBEAM CALCULATION
+3 3 NO AFTBEAM CALCULATION
+4 4 FOREBEAM ARCING DETECTED
+5 5 MID ARCING DETECTED
+6 6 AFTBEAM ARCING DETECTED
+7 7 ANY BEAM NOISE CONTENT ABOVE OR EQUAL TO TRESHOLD
+8 8 LAND (ANY LAND IN CELL FOOTPRINT)
+9 9 AUTONOMOUS AMBIGUITY REMOVAL NOT USED
+10 10 METEOROLOGICAL BACKGROUND NOT USED
+11 11 MINIMUM RESIDUAL EXCEEDED TRESHOLD
+12 12 FRAME CHECKSUM ERROR DETECTED
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/21068.table b/definitions/bufr/tables/0/wmo/12/codetables/21068.table
new file mode 100644
index 0000000..8e8b38e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/21068.table
@@ -0,0 +1,7 @@
+1 1 STANDARD DEVIATION OF WIND SPEED OUTSIDE MMCC LIMIT
+2 2 STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT OUTSIDE MMCC L"    IMIT
+3 3 STANDARD DEVIATION OF ALTITUDE OUTSIDE MMCC LIMIT
+4 4 MEAN PEAKINESS OUTSIDE MMCC LIMIT
+5 5 FRAME CHECKSUM ERROR DETECTED
+6 6 HEIGHT-TIME LOOP TIME CONSTANT CORRECTION NOT PERFORMED
+7 7 NOT ENOUGH MEASUREMENTS ( N< 10)
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/21069.table b/definitions/bufr/tables/0/wmo/12/codetables/21069.table
new file mode 100644
index 0000000..c343130
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/21069.table
@@ -0,0 +1,9 @@
+1 1 12.0 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+2 2 11.0 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+3 3  3.7 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+4 4  1.6 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+5 5 CLOUD IDENTIFICATION USED 1.6 MICROMETERS"    HISTOGRAM REFLECTANCE CLOUD TEST
+6 6 1.6 MICROMETERS HISTOGRAM REFLECTANCE CLOUD"    TEST USED DYNAMIC TRESHOLD
+7 7 SUN GLINT DETECTED BY 1.6 MICROMETERS REFLECTANCE CLOUD TEST
+8 8 3.7 MICROMETERS USED IN SEA-SURFACE TEMPERATURE RETRIEVAL
+9 9 SEA-SURFACE TEMPERATURE DERIVATION USED DAYTIME DATA"    (NIGHT-TIME IF ZERO)
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/21070.table b/definitions/bufr/tables/0/wmo/12/codetables/21070.table
new file mode 100644
index 0000000..7849b6c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/21070.table
@@ -0,0 +1,23 @@
+1 1 CELL 1:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+2 2 CELL 2:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL CELL NUMB"    ERING
+3 3 CELL 3:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+4 4 CELL 4:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL NW NE
+5 5 CELL 5:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 7 8 9
+6 6 CELL 6:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 4 5 6
+7 7 CELL 7:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 1 2 3
+8 8 CELL 8:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL SW SE
+9 9 CELL 9:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+10 10 -18 DUAL VIEW SST RETRIEVAL USED 3.7 MICRON CHANNEL (ONE BIT"    PER 10-ARCMIN CELL)
+11 11 CELL 1:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+12 12 CELL 3:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+13 13 CELL 4:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL NW NE
+14 14 CELL 5:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 7 8 9
+15 15 CELL 6:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 4 5 6
+16 16 CELL 7:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 1 2 3
+17 17 CELL 8:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL SW SE
+18 18 CELL 9:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+19 19 NADIR VIEW CONTAINS DAY-TIME DATA (NIGHT IF ZERO)
+20 20 FORWARD VIEW CONTAINS DAY-TIME DATA (NIGHT IF ZERO)
+21 21 RECORD CONTAINS CONTRIBUTIONS FROM INSTRUMENT SCANS ACQUIRED"     WHEN ERS PLATFORM NOT IN YAW-STEERING MODE
+22 22 RECORD CONTAINS CONTRIBUTIONS FROM INSTRUMENT SCANS FOR WHIC"    H PRODUCT CONFIDENCE DATA SHOW QUALITY IS POOR OR UNKNOWN
+23 23 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/21072.table b/definitions/bufr/tables/0/wmo/12/codetables/21072.table
new file mode 100644
index 0000000..521f791
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/21072.table
@@ -0,0 +1,3 @@
+1 1 HEIGHT ERROR CORRECTION APPLIED INSTEAD OF OPEN LOOP CALIBRA"    TION
+2 2 MICROWAVE SOUNDER USED FOR TROPOSPHERE CORRECTION
+3 3 AGC OUTPUT CORRECTION APPLIED INSTED OF OPEN LOOP CALIBRATIO"    N
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/21073.table b/definitions/bufr/tables/0/wmo/12/codetables/21073.table
new file mode 100644
index 0000000..9538fa5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/21073.table
@@ -0,0 +1,8 @@
+1 1 BLANK DATA RECORD
+2 2 TEST
+3 3 CALIBRATION (CLOSED LOOP)
+4 4 BITE
+5 5 ACQUISITION ON ICE
+6 6 ACQUISITION ON OCEAN
+7 7 TRACKING ON ICE
+8 8 TRACKING ON OCEAN
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/21076.table b/definitions/bufr/tables/0/wmo/12/codetables/21076.table
new file mode 100644
index 0000000..bc52ac5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/21076.table
@@ -0,0 +1,4 @@
+0 0 LINEAR
+1 1 LOGARITHMIC (BASE E)
+2 2 LOGARITHMIC (BASE 10)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/21109.table b/definitions/bufr/tables/0/wmo/12/codetables/21109.table
new file mode 100644
index 0000000..0990694
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/21109.table
@@ -0,0 +1,8 @@
+1 1 NOT ENOUGH GOOD SIGMA-0 AVAILABLE FOR WIND RETRIEVAL
+2 2 POOR AZIMUTH DIVERSITY AMONG SIGMA0- FOR  WIND RETRIEVAL
+8 8 SOME PORTION OF WIND VECTOR CELL IS OVER LAND
+9 9 SOME PORTION OF WIND VECTOR CELL IS OVER ICE
+10 10 WIND RETRIEVAL NOT PERFORMED FOR WIND  VECTOR CELL
+11 11 REPORTED WIND SPEED IS GREATER THAN 30 M/S
+12 12 REPORTED WIND SPEED IS LESS THAN OR EQUAL TO 3 M/S
+17 17 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/21115.table b/definitions/bufr/tables/0/wmo/12/codetables/21115.table
new file mode 100644
index 0000000..3bdb683
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/21115.table
@@ -0,0 +1,11 @@
+1 1 SIGMA-0 MEASUREMENT IS NOT USABLE
+2 2 SIGNAL TO NOISE RATIO IS LOW
+3 3 SIGMA-0 IS NEGATIVE
+4 4 SIGMA-0 IS OUTSIDE OF ACCEPTABLE RANGE
+5 5 SCATTEROMETER PULSE QUALITY IS NOT ACCEPTABLE
+6 6 SIGMA-0 CELL LOCATION ALGORITHM DOES NOT CONVERGE
+7 7 FREQUENCY SHIFT LIES BEYOND THE RANGE OF THE X FACTOR TABLE
+8 8 SPACECRAFT TEMPERATURE IS BEYOND CALIBRATION COEFFICIENT RAN"    GE
+9 9 NO APPLICABLE ATTITUDE RECORDS WERE FOUND FOR THIS SIGMA-0
+10 10 INTERPOLATED EPHEMERIS DATA ARE NOT ACCEPTABLE FOR THIS SIGM"    A-0
+17 17 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/21116.table b/definitions/bufr/tables/0/wmo/12/codetables/21116.table
new file mode 100644
index 0000000..10b5c53
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/21116.table
@@ -0,0 +1,16 @@
+1 1 CALIBRATION/MEASUREMENT PULSE FLAG (1)
+2 2 CALIBRATION/MEASUREMENT PULSE FLAG (2)
+3 3 OUTER ANTENNA BEAM
+4 4 SIGMA-0 CELL IS AFT OF SPACECRAFT
+5 5 CURRENT MODE (1)
+6 6 CURRENT MODE (2)
+7 7 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (1)
+8 8 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (2)
+9 9 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (3)
+10 10 LOW RESOLUTION MODE - WHOLE PULSE DATA
+11 11 SCATTEROMETER ELECTRONIC SUBSYSTEM B
+12 12 ALTERNATE SPIN RATE - 19.8 RPM
+13 13 RECEIVER PROTECTION ON
+14 14 SLICES PER COMPOSITE FLAG (1)
+15 15 SLICES PER COMPOSITE FLAG (2)
+16 16 SLICES PER COMPOSITE FLAG (3)
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/21119.table b/definitions/bufr/tables/0/wmo/12/codetables/21119.table
new file mode 100644
index 0000000..d46b083
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/21119.table
@@ -0,0 +1,14 @@
+0 0 RESERVED
+1 1 SASS
+2 2 SASS2
+3 3 NSCAT0
+4 4 NSCAT1
+5 5 NSCAT2
+6 6 QSCAT0
+7 7 QSCAT1
+31 31 CMOD1
+32 32 CMOD2
+33 33 CMOD3
+34 34 CMOD4
+35 35 CMOD5
+64 64 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/21144.table b/definitions/bufr/tables/0/wmo/12/codetables/21144.table
new file mode 100644
index 0000000..1f082e6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/21144.table
@@ -0,0 +1 @@
+1 1 RAIN
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2115.table b/definitions/bufr/tables/0/wmo/12/codetables/2115.table
new file mode 100644
index 0000000..c7e866c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2115.table
@@ -0,0 +1,7 @@
+0 0 PDB
+1 1 RSOIS
+2 2 ASOS
+3 3 PSYCHROMETER
+4 4 F420
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/21150.table b/definitions/bufr/tables/0/wmo/12/codetables/21150.table
new file mode 100644
index 0000000..8510046
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/21150.table
@@ -0,0 +1,4 @@
+0 0 DATA FROM SINGLE GROUND STATION (NO CO-LOCATION)
+1 1 DATA FROM MULTIPLE GROUND STATION (CO-LOCATED DATA)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/21155.table b/definitions/bufr/tables/0/wmo/12/codetables/21155.table
new file mode 100644
index 0000000..27cc03d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/21155.table
@@ -0,0 +1,16 @@
+1 1 NOT ENOUGH GOOD SIGMA-0 AVAILABLE FOR WIND RETRIEVAL
+2 2 POOR AZIMUTH DIVERSITY AMONG SIGMA-0 FOR WIND RETRIEVAL
+3 3 ANY BEAM NOISE CONTENT ABOVE TRESHOLD
+4 4 PRODUCT MONITORING NOT USED
+5 5 PRODUCT MONITORING FLAG
+6 6 KNMI QUALITY CONTROL FAILS
+7 7 VARIATIONAL QUALITY CONTROL FAILS
+8 8 SOME PORTION OF WIND VECTOR CELL IS OVER LAND
+9 9 SOME PORTION OF WIND VECTOR CELL IS OVER ICE
+10 10 WIND RETRIEVAL NOT PERFORMED FOR WIND VECTOR CELL
+11 11 REPORTED WIND SPEED IS GREATER THAN 30 M/S
+12 12 REPORTED WIND SPEED IS LESS THAN OR EQUAL TO 3 M/S
+13 13 RAIN FLAG FOR THE WIND VECTOR CELL IS NOT USABLE
+14 14 RAIN FLAG ALGORITHM DETECTS RAIN
+15 15 NO METEOROLOGICAL BACKGROUND USED
+16 16 DATA ARE REDUNDANT
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/21158.table b/definitions/bufr/tables/0/wmo/12/codetables/21158.table
new file mode 100644
index 0000000..dd53c51
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/21158.table
@@ -0,0 +1,4 @@
+0 0 ACCEPTABLE
+1 1 NOT ACCEPTABLE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/21159.table b/definitions/bufr/tables/0/wmo/12/codetables/21159.table
new file mode 100644
index 0000000..1703f9b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/21159.table
@@ -0,0 +1,4 @@
+0 0 GOOD
+1 1 USABLE
+2 2 BAD
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/21169.table b/definitions/bufr/tables/0/wmo/12/codetables/21169.table
new file mode 100644
index 0000000..9b93444
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/21169.table
@@ -0,0 +1,4 @@
+0 0 NO ICE PRESENT
+1 1 ICE PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2119.table b/definitions/bufr/tables/0/wmo/12/codetables/2119.table
new file mode 100644
index 0000000..33ae089
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2119.table
@@ -0,0 +1,8 @@
+0 0 INTERMEDIATE FREQUENCY CALIBRATION MODE (IFCAL)
+1 1 BUILT-IN TEST EQUIPMENT DIGITAL (BITE DGT)
+2 2 BUILT-IN TEST EQUIPMENT RADIO FREQUENCY (BITE RF)
+3 3 PRESET TRACKING (PSET TRK)
+4 4 PRESET LOOP OUT
+5 5 ACQUISITION
+6 6 TRACKING
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2131.table b/definitions/bufr/tables/0/wmo/12/codetables/2131.table
new file mode 100644
index 0000000..f4336ef
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2131.table
@@ -0,0 +1 @@
+1 1 STC OPERATIONAL
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2143.table b/definitions/bufr/tables/0/wmo/12/codetables/2143.table
new file mode 100644
index 0000000..89bdc1b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2143.table
@@ -0,0 +1,21 @@
+0 0 RESERVED
+1 1 BREWER SPECTROPHOTOMETER
+2 2 CAVER TEICHERT
+3 3 DOBSON
+4 4 DOBSON (JAPAN)
+5 5 EHMET
+6 6 FECKER TELESCOPE
+7 7 HOELPER
+8 8 JODMETER
+9 9 FILTER OZONOMETER M-83
+10 10 MAST
+11 11 OXFORD
+12 12 PAETZOLD
+13 13 REGENER
+14 14 RESERVED FOR FUTURE USE
+15 15 VASSY FILTER OZONOMETER
+16 16 CARBON IODIDE
+17 17 SURFACE OZONE BUBLER
+18 18 FILTER OZONOMETER M-124
+19 19 ECC SONDE
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2144.table b/definitions/bufr/tables/0/wmo/12/codetables/2144.table
new file mode 100644
index 0000000..c245c49
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2144.table
@@ -0,0 +1,8 @@
+0 0 DIRECT SUN, ATTENUATOR #0
+1 1 DIRECT SUN, ATTENUATOR #1
+2 2 DIRECT SUN, ATTENUATOR #2
+3 3 FOCUSSED MOON
+4 4 FOCUSSED SUN
+5 5 FOCUSSED SUN CORRECTED WITH ADJACENT SKY MEASUREMENTS
+6 6 ZENITH SKY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2145.table b/definitions/bufr/tables/0/wmo/12/codetables/2145.table
new file mode 100644
index 0000000..63400b2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2145.table
@@ -0,0 +1,9 @@
+0 0 WAVELENGTH AD ORDINARY SETTING
+1 1 WAVELENGTH BD ORDINARY SETTING
+2 2 WAVELENGTH CD ORDINARY SETTING
+3 3 WAVELENGTH CC' ORDINARY SETTING
+4 4 WAVELENGTH AD FOCUSSING IMAGE
+5 5 WAVELENGTH BD FOCUSSING IMAGE
+6 6 WAVELENGTH CD FOCUSSING IMAGE
+7 7 WAVELENGTH CC' FOCUSSING IMAGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2146.table b/definitions/bufr/tables/0/wmo/12/codetables/2146.table
new file mode 100644
index 0000000..14655b9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2146.table
@@ -0,0 +1,11 @@
+0 0 ON DIRECT SUN
+1 1 ON DIRECT MOON
+2 2 ON BLUE ZENITH SKY
+3 3 ON ZENITH CLOUD (UNIFORM STRATIFIED LAYER OF SMALL OPACITY)
+4 4 ON ZENITH CLOUD (UNIFORM OR MODERATELY VARIABLE LAYER OF MED"    IUM OPACITY)
+5 5 ON ZENITH CLOUD (UNIFORM OR MODERATELY VARIABLE LAYER OF LAR"    GE OPACITY)
+6 6 ON ZENITH CLOUD (HIGHLY VARIABLE OPACITY, WITH OR WITOUT PRE"    CIPITATION)
+7 7 ON ZENITH CLOUD (FOG)
+8 8 ON ZENITH HAZE
+9 9 ON DIRECT SUN THROUGH THIN CLOUD, FOG OR HAZE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2148.table b/definitions/bufr/tables/0/wmo/12/codetables/2148.table
new file mode 100644
index 0000000..3e5d884
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2148.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 ARGOS
+2 2 GPS
+3 3 GOES DCP
+4 4 METEOSAT DCP
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2149.table b/definitions/bufr/tables/0/wmo/12/codetables/2149.table
new file mode 100644
index 0000000..7b179c6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2149.table
@@ -0,0 +1,22 @@
+0 0 UNSPECIFIED DRIFTING BUOY
+1 1 STANDARD LAGRANGIAN DRIFTER (GLOBAL DRIFTER PROGRAMME)
+2 2 STANDARD FGGE TYPE DRIFTING BUOY
+3 3 WIND MEASURING FGGE TYPE DRIFTING BUOY
+4 4 ICE FLOAT
+8 8 UNSPECIFIED SUB-SURFACE FLOAT
+9 9 SOFAR
+10 10 ALACE
+11 11 MARVOR
+12 12 RAFOS
+16 16 UNSPECIFIED MOORED BUOY
+17 17 NOMAD
+18 18 3-METRE DISCUS
+19 19 10-12-METRE DISCUS
+20 20 ODAS 30 SERIES
+21 21 ATLAS (E.G. TAO AREA)
+22 22 TRITON BUOY
+23 23 RESERVED
+24 24 OMNIDIRECTIONAL WAVERIDER
+25 25 DIRECTIONAL WAVERIDER
+26 26 SUB-SURFACE ARGO FLOAT
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2150.table b/definitions/bufr/tables/0/wmo/12/codetables/2150.table
new file mode 100644
index 0000000..b864835
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2150.table
@@ -0,0 +1,55 @@
+0 0 RESERVED
+1 1 HIRS 1
+2 2 HIRS 2
+3 3 HIRS 3
+4 4 HIRS 4
+5 5 HIRS 5
+6 6 HIRS 6
+7 7 HIRS 7
+8 8 HIRS 8
+9 9 HIRS 9
+10 10 HIRS 10
+11 11 HIRS 11
+12 12 HIRS 12
+13 13 HIRS 13
+14 14 HIRS 14
+15 15 HIRS 15
+16 16 HIRS 16
+17 17 HIRS 17
+18 18 HIRS 18
+19 19 HIRS 19
+20 20 HIRS 20
+21 21 MSU 1
+22 22 MSU 2
+23 23 MSU 3
+24 24 MSU 4
+25 25 SSU 1
+26 26 SSU 2
+27 27 SSU 3
+28 28 AMSU-A 1
+29 29 AMSU-A 2
+30 30 AMSU-A 3
+31 31 AMSU-A 4
+32 32 AMSU-A 5
+33 33 AMSU-A 6
+34 34 AMSU-A 7
+35 35 AMSU-A 8
+36 36 AMSU-A 9
+37 37 AMSU-A 10
+38 38 AMSU-A 11
+39 39 AMSU-A 12
+40 40 AMSU-A 13
+41 41 AMSU-A 14
+42 42 AMSU-A 15
+43 43 AMSU-B 1
+44 44 AMSU-B 2
+45 45 AMSU-B 3
+46 46 AMSU-B 4
+47 47 AMSU-B 5
+48 48 AVHRR 1
+49 49 AVHRR 2
+50 50 AVHRR 3A
+51 51 AVHRR 3B
+52 52 AVHRR 4
+53 53 AVHRR 5
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2151.table b/definitions/bufr/tables/0/wmo/12/codetables/2151.table
new file mode 100644
index 0000000..b1e62e6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2151.table
@@ -0,0 +1,9 @@
+0 0 HIRS
+1 1 MSU
+2 2 SSU
+3 3 AMSU-A1-1
+4 4 AMSU-A1-2
+5 5 AMSU-A2
+6 6 AMSU-B
+7 7 AVHRR
+2047 2047 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2152.table b/definitions/bufr/tables/0/wmo/12/codetables/2152.table
new file mode 100644
index 0000000..7c55d18
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2152.table
@@ -0,0 +1,11 @@
+1 1 HIGH-RESOLUTION INFRARED SOUNDER(HIRS)
+2 2 MICROWAVE SOUNDING UNIT (MSU)
+3 3 STRATOSPHERIC SOUNDING UNIT (SSU)
+4 4 AMI WIND MODE
+5 5 AMI WAVE MODE
+6 6 AMI IMAGE MODE
+7 7 RADAR ALTIMETER
+8 8 ATSR
+9 9 GEOSTATIONARY IMAGER
+10 10 GEOSTATIONARY SOUNDER
+11 11 GEOSTATIONARY EARTH RADIATION (GERB)
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2158.table b/definitions/bufr/tables/0/wmo/12/codetables/2158.table
new file mode 100644
index 0000000..97c4449
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2158.table
@@ -0,0 +1,8 @@
+1 1 MISMATCH IN RED VEC HPA
+2 2 MISMATCH IN RED VEC RFSS
+3 3 PTR CALIBRATION BAND 320 MHZ (KU)
+4 4 PTR CALIBRATION BAND 80 MHZ (KU)
+5 5 PTR CALIBRATION BAND 20 MHZ (KU)
+6 6 PTR CALIBRATION BAND 160 MHZ (S)
+7 7 KU FLIGHT CALIBRATION PARAMETERS AVAILABLE
+8 8 S FLIGHT CALIBRATION PARAMETERS AVAILABLE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2159.table b/definitions/bufr/tables/0/wmo/12/codetables/2159.table
new file mode 100644
index 0000000..d022cce
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2159.table
@@ -0,0 +1,5 @@
+1 1 TEMPERATURE INCONSISTENCY
+2 2 DATA IS MISSING
+3 3 REDUNDANCY CHANNEL
+4 4 POWER BUS PROTECTION
+5 5 OVERVOLTAGE/OVERLOAD PROTECTION
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2163.table b/definitions/bufr/tables/0/wmo/12/codetables/2163.table
new file mode 100644
index 0000000..4658f3d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2163.table
@@ -0,0 +1,15 @@
+0 0 AUTO EDITOR
+1 1 IRW HEIGHT ASSIGNMENT
+2 2 WV HEIGHT ASSIGNMENT
+3 3 H2O INTERCEPT HEIGHT ASSIGNMENT
+4 4 CO2 SLICING HEIGHT ASSIGNMENT
+5 5 LOW PIXEL MAX GRADIENT
+6 6 HIGHER PIXEL MAX GRADIENT
+7 7 PRIMARY HEIGHT ASSIGNMENT
+8 8 LAYER THICKNESS ASSIGNMENT
+9 9 CUMULATIVE CONTRIBUTION FUNCTION -10 PERCENT HEIGHT
+10 10 CUMULATIVE CONTRIBUTION FUNCTION -50 PERCENT HEIGHT
+11 11 CUMULATIVE CONTRIBUTION FUNCTION -90 PERCENT HEIGHT
+12 12 CUMULATIVE CONTRIBUTION FUNCTION - HEIGHT OF"    MAXIMUM GRADIENT
+14 14 COMPOSITE HEIGHT ASSIGNMENT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2164.table b/definitions/bufr/tables/0/wmo/12/codetables/2164.table
new file mode 100644
index 0000000..01dc970
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2164.table
@@ -0,0 +1,4 @@
+0 0 LP - NORMS LEAST SQUARE MINIMUM
+1 1 EN - EUCLIDEAN NORM WITH RADIANCE CORRELATION
+2 2 CC - CROSS CORRELATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2166.table b/definitions/bufr/tables/0/wmo/12/codetables/2166.table
new file mode 100644
index 0000000..efac38f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2166.table
@@ -0,0 +1,6 @@
+0 0 TYPE NOT DEFINED
+1 1 AUTOMATED STATISTICAL REGRESSION
+2 2 CLEAR PATH
+3 3 PARTLY CLOUDY PATH
+4 4 CLOUDY PATH
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2167.table b/definitions/bufr/tables/0/wmo/12/codetables/2167.table
new file mode 100644
index 0000000..bb0ad11
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2167.table
@@ -0,0 +1,4 @@
+0 0 METHOD NOT DEFINE
+1 1 1B RAW RADIANCE
+2 2 PROCESSED RADIANCE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2169.table b/definitions/bufr/tables/0/wmo/12/codetables/2169.table
new file mode 100644
index 0000000..6e70eb6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2169.table
@@ -0,0 +1,4 @@
+0 0 CUP ROTOR
+1 1 PROPELLER ROTOR
+2 2 WIND OBSERVATION THROUGH AMBIENT NOISE (WOTAN)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2172.table b/definitions/bufr/tables/0/wmo/12/codetables/2172.table
new file mode 100644
index 0000000..10b464d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2172.table
@@ -0,0 +1,3 @@
+1 1 RETRIEVAL FROM A NADIR SOUNDING
+2 2 RETRIEVAL FROM A LIMB SOUNDING
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2175.table b/definitions/bufr/tables/0/wmo/12/codetables/2175.table
new file mode 100644
index 0000000..e3df922
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2175.table
@@ -0,0 +1,9 @@
+0 0 MANUAL MEASUREMENT
+1 1 TIPPING BUCKET METHOD
+2 2 WEIGHING METHOD
+3 3 OPTICAL METHOD
+4 4 PRESSURE METHOD
+5 5 FLOAT METHOD
+6 6 DROP COUNTER METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2176.table b/definitions/bufr/tables/0/wmo/12/codetables/2176.table
new file mode 100644
index 0000000..a16cbc3
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2176.table
@@ -0,0 +1,6 @@
+0 0 MANUAL OBSERVATION
+1 1 VIDEO CAMERA METHOD
+2 2 INFRA-RED METHOD
+3 3 LASER METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2177.table b/definitions/bufr/tables/0/wmo/12/codetables/2177.table
new file mode 100644
index 0000000..b8492e5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2177.table
@@ -0,0 +1,5 @@
+0 0 MANUAL OBSERVATION
+1 1 ULTRASONIC METHOD
+2 2 VIDEO CAMERA METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2178.table b/definitions/bufr/tables/0/wmo/12/codetables/2178.table
new file mode 100644
index 0000000..8953eb7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2178.table
@@ -0,0 +1,5 @@
+0 0 MANUAL OBSERVATION
+1 1 OPTICAL METHOD
+2 2 CAPACITIVE METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2179.table b/definitions/bufr/tables/0/wmo/12/codetables/2179.table
new file mode 100644
index 0000000..a76b878
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2179.table
@@ -0,0 +1,6 @@
+0 0 MANUAL OBSERVATION
+1 1 VAISALA ALGORITHM
+2 2 ASOS (FAA) ALGORITHM
+3 3 AWOS (CANADA) ALGORITHM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2180.table b/definitions/bufr/tables/0/wmo/12/codetables/2180.table
new file mode 100644
index 0000000..f7ec83c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2180.table
@@ -0,0 +1,8 @@
+0 0 MANUAL OBSERVATION
+1 1 OPTICAL SCATTER SYSTEM COMBINED WITH PRECIPITATION"    OCCURRENCE SENSING SYSTEM
+2 2 FORWARD AND/OR BACK-SCATTER SYSTEM OF VISIBLE LIGHT
+3 3 FORWARD AND/OR BACK-SCATTER SYSTEM OF INFRARED LIGHT
+4 4 INFRARED LIGHT EMITTING DIODE (IRED) SYSTEM
+5 5 DOPPLER RADAR SYSTEM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2181.table b/definitions/bufr/tables/0/wmo/12/codetables/2181.table
new file mode 100644
index 0000000..8e6466b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2181.table
@@ -0,0 +1,5 @@
+1 1 RAIN DETECTOR
+2 2 FREEZING RAIN SENSOR
+3 3 ICE DETECTION SENSOR
+4 4 HAIL AND ICE PELLET SENSOR
+20 20 OTHER
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2182.table b/definitions/bufr/tables/0/wmo/12/codetables/2182.table
new file mode 100644
index 0000000..97ffc04
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2182.table
@@ -0,0 +1,7 @@
+0 0 MANUAL MEASUREMENT
+1 1 TRANSMISSOMETER SYSTEM (BASE > 25)
+2 2 TRANSMISSOMETER SYSTEM (BASE < 25 M)
+3 3 FORWARD SCATTER SYSTEM
+4 4 BACK SCATTER SYSTEM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2183.table b/definitions/bufr/tables/0/wmo/12/codetables/2183.table
new file mode 100644
index 0000000..943c327
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2183.table
@@ -0,0 +1,9 @@
+0 0 MANUAL OBSERVATION
+1 1 CEILOMETER SYSTEM
+2 2 INFRARED CAMERA SYSTEM
+3 3 MICROWAVE VISUAL CAMERA SYSTEM
+4 4 SKY IMAGER SYSTEM
+5 5 VIDEO TIME LAPSED CAMERA SYSTEM
+6 6 MICRO PULSE LIDAR (MPL) SYSTEM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2184.table b/definitions/bufr/tables/0/wmo/12/codetables/2184.table
new file mode 100644
index 0000000..5698dac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2184.table
@@ -0,0 +1,8 @@
+0 0 MANUAL OBSERVATION
+1 1 LIGHTNING IMAGING SENSOR
+2 2 ELECTRICAL STORM IDENTIFICATION SENSOR
+3 3 MAGNETIC FINDER SENSOR
+4 4 LIGHTNING STRIKE SENSOR
+5 5 FLASH COUNTER
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2185.table b/definitions/bufr/tables/0/wmo/12/codetables/2185.table
new file mode 100644
index 0000000..3253397
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2185.table
@@ -0,0 +1,7 @@
+0 0 MANUAL MEASUREMENT
+1 1 BALANCED FLOATING METHOD
+2 2 PRESSURE METHOD
+3 3 ULTRASONIC METHOD
+4 4 HYDRAULIC METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2186.table b/definitions/bufr/tables/0/wmo/12/codetables/2186.table
new file mode 100644
index 0000000..05e1a36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2186.table
@@ -0,0 +1,23 @@
+1 1 PRECIPITATION-UNKNOWN TYPE
+2 2 LIQUID PRECIPITATION NOT FREEZING
+3 3 LIQUID FREEZING PRECIPITATION
+4 4 DRIZZLE
+5 5 RAIN
+6 6 SOLID PRECIPITATION
+7 7 SNOW
+8 8 SNOW GRAINS
+9 9 SNOW PELLETS
+10 10 ICE PELLETS
+11 11 ICE CRYSTALS
+12 12 DIAMOND DUST
+13 13 SMALL HAIL
+14 14 HAIL
+15 15 GLAZE
+16 16 RIME
+17 17 SOFT RIME
+18 18 HARD RIME
+19 19 CLEAR ICE
+20 20 WET SNOW
+21 21 HOAR FROST
+22 22 DEW
+23 23 WHITE DEW
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2187.table b/definitions/bufr/tables/0/wmo/12/codetables/2187.table
new file mode 100644
index 0000000..def3d2f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2187.table
@@ -0,0 +1,11 @@
+1 1 DUST/SAND WHIRL
+2 2 SQUALLS
+3 3 SAND STORM
+4 4 DUST STORM
+5 5 LIGHTNING - CLOUD TO SURFACE
+6 6 LIGHTNING - CLOUD TO CLOUD
+7 7 LIGHTNING - DISTANT
+8 8 THUNDERSTORM
+9 9 FUNNEL CLOUD NOT TOUCHING SURFACE
+10 10 FUNNEL CLOUD TOUCHING SURFACE
+11 11 SPRAY
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2188.table b/definitions/bufr/tables/0/wmo/12/codetables/2188.table
new file mode 100644
index 0000000..bb8114c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2188.table
@@ -0,0 +1,10 @@
+1 1 FOG
+2 2 ICE FOG
+3 3 STEAM FOG
+7 7 MIST
+8 8 HAZE
+9 9 SMOKE
+10 10 VOLCANIC ASH
+11 11 DUST
+12 12 SAND
+13 13 SNOW
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/2189.table b/definitions/bufr/tables/0/wmo/12/codetables/2189.table
new file mode 100644
index 0000000..710032d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/2189.table
@@ -0,0 +1,4 @@
+1 1 MANUAL OBSERVATION
+2 2 ALL LIGHTNING STRIKES WITHOUT DISCRIMINATION
+3 3 LIGHTNING STRIKES CLOUD TO GROUND ONLY
+4 4 ALL LIGHTNING STRIKES WITH DISCRIMINATION BETWEEN"    CLOUD TO GROUND AND CLOUD TO CLOUD
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/22056.table b/definitions/bufr/tables/0/wmo/12/codetables/22056.table
new file mode 100644
index 0000000..28ddbf4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/22056.table
@@ -0,0 +1,4 @@
+0 0 UPWARDS PROFILE
+1 1 DOWNWARDS PROFILE
+2 2 HORIZONTAL
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/22060.table b/definitions/bufr/tables/0/wmo/12/codetables/22060.table
new file mode 100644
index 0000000..b73ad32
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/22060.table
@@ -0,0 +1,4 @@
+0 0 DROGUE IS DETACHED
+1 1 DROGUE IS ATTACHED
+2 2 DROGUE STATUS UNKNOWN
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/22061.table b/definitions/bufr/tables/0/wmo/12/codetables/22061.table
new file mode 100644
index 0000000..de55e38
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/22061.table
@@ -0,0 +1,11 @@
+0 0 CALM (GLASSY)            HEIGHT     0            M
+1 1 CALM (RIPPLED)           HEIGHT     0     - 0.1  M
+2 2 SMOOTH (WAVELETS)        HEIGHT     0.1   - 0.5  M
+3 3 SLIGHT                   HEIGHT     0.5   - 1.5  M
+4 4 MODERATE                 HEIGHT     1.25  - 2.5  M
+5 5 ROUGH                    HEIGHT     2.5   - 4    M
+6 6 VERY ROUGH               HEIGHT     4     - 6    M
+7 7 HIGH                     HEIGHT     6     - 9    M
+8 8 VERY HIGH                HEIGHT     9     -14    M
+9 9 PHENOMANAL               HEIGHT     OVER   14    M
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/22067.table b/definitions/bufr/tables/0/wmo/12/codetables/22067.table
new file mode 100644
index 0000000..1728310
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/22067.table
@@ -0,0 +1 @@
+0 0 SEE COMMON CODE TABLE C3
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/22068.table b/definitions/bufr/tables/0/wmo/12/codetables/22068.table
new file mode 100644
index 0000000..c11d658
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/22068.table
@@ -0,0 +1 @@
+0 0 SEE COMMON CODE TABLE C4
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/22120.table b/definitions/bufr/tables/0/wmo/12/codetables/22120.table
new file mode 100644
index 0000000..c485b9f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/22120.table
@@ -0,0 +1,13 @@
+0 0 GOOD DATA
+1 1 MAXIMUM (HIGH) WATER LEVEL LIMIT EXCEEDED
+2 2 MINIMUM (LOW) WATER LEVEL LIMIT EXCEEDED
+3 3 RATE OF CHANGE LIMIT FOR WATER LEVEL EXCEEDED
+4 4 FLAT LIMIT FOR WATER LEVEL EXCEEDED
+5 5 OBSERVED MINUS PREDICTED WATER LEVEL VALUE LIMIT EXCEEDED
+6 6 OBSERVED VALUE FROM PRIMARY WATER LEVEL SENSOR MINUS"    BACKUP WATER LEVEL SENSOR
+7 7 VALUE EXCEEDED SPECIFIED TOLERANCE FROM EXPECTED VALUE
+8 8 WATER LEVEL QA PARAMETER (SIGMAS AND/OR OUTLIERS) LIMITS EXC"    EEDED
+9 9 SEA TEMPERATURE OUTSIDE OF EXPECTED RANGE
+10 10 MULTIPLE QC CHECKS (ABOVE) FAILED
+11 11 NO AUTOMATED WATER LEVEL CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/22121.table b/definitions/bufr/tables/0/wmo/12/codetables/22121.table
new file mode 100644
index 0000000..4e4d870
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/22121.table
@@ -0,0 +1,9 @@
+0 0 OPERATIONAL
+1 1 POSSIBLE CLOGGING PROBLEM OR OTHERWISE DEGRADED WATE LEVEL D"    ATA
+2 2 POSSIBLE DATUM SHIFT
+3 3 UNKNOWN STATUS OF WATER LEVEL SENSOR
+4 4 SUSPECTED OR KNOWN SEA TEMPERATURE SENSOR PROBLEM
+5 5 MULTIPLE POSSIBLE PROBLEMS (ABOVE)
+6 6 BAD DATA- DO NOT DISSEMINATE
+7 7 NO MANUAL WATER LEVEL CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/22122.table b/definitions/bufr/tables/0/wmo/12/codetables/22122.table
new file mode 100644
index 0000000..1a5fe36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/22122.table
@@ -0,0 +1,8 @@
+0 0 GOOD DATA FROM ALL SENSORS
+1 1 WIND DIRECTION OUTSIDE OF ALLOWABLE RANGE
+2 2 WIND SPEED OUTSIDE OF EXPECTED RANGE
+3 3 BAROMETRIC PRESSURE OUTSIDE OF EXPECTED RANGE
+4 4 AIR TEMPERATURE OUTSIDE OF EXPECTED RANGE
+5 5 MULTIPLE SENSOR FAILED QC CHECKS
+6 6 NO AUTOMATED METEOROLOGICAL DATA CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/22123.table b/definitions/bufr/tables/0/wmo/12/codetables/22123.table
new file mode 100644
index 0000000..62b0186
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/22123.table
@@ -0,0 +1,9 @@
+0 0 OPERATIONAL
+1 1 SUSPECTED OR KNOWN PROBLEM WITH WIND SENSOR
+2 2 SUSPECTED OR KNOWN PROBLEM WITH BAROMETRIC PRESSURE SENSOR
+3 3 SUSPECTED OR KNOWN PROBLEM WITH AIR TEMPERATURE SENSOR
+4 4 UNKNOWN STATUS OF ALL SENSORS
+5 5 SUSPECTED OR KNOWN PROBLEMS WITH MULTIPLE SENSORS
+6 6 BAD DATA - DO NOT DISSEMINATE
+7 7 NO MANUAL METEOROLOGICAL DATA CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/23001.table b/definitions/bufr/tables/0/wmo/12/codetables/23001.table
new file mode 100644
index 0000000..92ac5de
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/23001.table
@@ -0,0 +1,5 @@
+0 0 RESERVED
+1 1 ARTICLES 1 AND 2
+2 2 ARTICLE 3
+3 3 ARTICLE 5.2
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/23002.table b/definitions/bufr/tables/0/wmo/12/codetables/23002.table
new file mode 100644
index 0000000..5070901
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/23002.table
@@ -0,0 +1,16 @@
+0 0 RESERVED
+1 1 NUCLEAR REACTOR ON GROUND
+2 2 NUCLEAR REACTOR ON SEA
+3 3 NUCLEAR REACTOR IN SPACE
+4 4 NUCLEAR FULE FACILITY
+5 5 RADIOACTIVE WASTE MANAGMENT FACITILY
+6 6 TRANSPORT OF NUCLEAR FUEL OR RADIOACTIVE WASTE
+7 7 STORAGE OF NUCLEAR FUEL OR RADIOACTIVE WASTE
+8 8 MANUFACTURE OF RADIO-ISOTOPES
+9 9 USE OF RADIO-ISOTOPES
+10 10 STORAGE OF RADIO-ISOTOPES
+11 11 DISPOSAL OF RADIO-ISOTOPS
+12 12 TRANSPORT OF RADIO-ISOTOPES
+13 13 USE OF RADIO-ISOTOPES FOR POWER GENERATION
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/23003.table b/definitions/bufr/tables/0/wmo/12/codetables/23003.table
new file mode 100644
index 0000000..e3e891f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/23003.table
@@ -0,0 +1,8 @@
+0 0 NO RELEASE
+1 1 RELEASE TO ATMOSPHERE
+2 2 RELEASE TO WATER
+3 3 RELEASE TO BOTH ATMOSPHERE AND WATER
+4 4 EXPECTED RELEASE TO ATMOSPHERE
+5 5 EXPECTED RELEASE TO WATER
+6 6 EXPECTED RELEASE TO BOTH ATMOSPHERE AND WATER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/23004.table b/definitions/bufr/tables/0/wmo/12/codetables/23004.table
new file mode 100644
index 0000000..804d1e1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/23004.table
@@ -0,0 +1,6 @@
+0 0 NO COUNTERMEASURE
+1 1 EVACUATION
+2 2 SHELTERING
+3 3 PROPHILAXIS
+4 4 WATER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/23005.table b/definitions/bufr/tables/0/wmo/12/codetables/23005.table
new file mode 100644
index 0000000..e22eb99
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/23005.table
@@ -0,0 +1,4 @@
+0 0 INCIDENT STAT DOES NOT UNDERSTAND WHAT HAPPENED
+1 1 INCIDENT STATE KNOWS THE CAUSE OF THE INCIDENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/23006.table b/definitions/bufr/tables/0/wmo/12/codetables/23006.table
new file mode 100644
index 0000000..fe7706a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/23006.table
@@ -0,0 +1,8 @@
+0 0 NO IMPROVEMENT
+1 1 UNSTABLE
+2 2 NO DETERIORATION
+3 3 IMPROVING
+4 4 STABLE
+5 5 DETERIORATING
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/23007.table b/definitions/bufr/tables/0/wmo/12/codetables/23007.table
new file mode 100644
index 0000000..59fc043
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/23007.table
@@ -0,0 +1,5 @@
+0 0 NO RELEASE
+1 1 RELEASE HAS STOPPED
+2 2 RELEASE
+3 3 RELEASE IS CONTINUING
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/23008.table b/definitions/bufr/tables/0/wmo/12/codetables/23008.table
new file mode 100644
index 0000000..b20991c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/23008.table
@@ -0,0 +1,4 @@
+0 0 GASEUS
+1 1 PARTICULATE
+2 2 MIXTURE OF GASEUS AND PARTICULATE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/23009.table b/definitions/bufr/tables/0/wmo/12/codetables/23009.table
new file mode 100644
index 0000000..b20991c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/23009.table
@@ -0,0 +1,4 @@
+0 0 GASEUS
+1 1 PARTICULATE
+2 2 MIXTURE OF GASEUS AND PARTICULATE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/23016.table b/definitions/bufr/tables/0/wmo/12/codetables/23016.table
new file mode 100644
index 0000000..57425e9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/23016.table
@@ -0,0 +1,4 @@
+0 0 NO SIGNIFICANT TOXIC HEALTH EFFECT
+1 1 SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT POSSIBLE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/23018.table b/definitions/bufr/tables/0/wmo/12/codetables/23018.table
new file mode 100644
index 0000000..ccdcc45
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/23018.table
@@ -0,0 +1,6 @@
+0 0 RELEASE NO LONGER OCCURRING
+1 1 RELEASE STILL OCCURRING
+2 2 RELEASE EXPECTED TO INCREASE IN NEXT SIX HOURS
+3 3 RELEASE EXPECTED TO REMAIN CONSTANT IN NEXT SIX HOURS
+4 4 RELEASE EXPECTED TO DECREASE IN NEXT SIX HOURS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/23031.table b/definitions/bufr/tables/0/wmo/12/codetables/23031.table
new file mode 100644
index 0000000..cf20e26
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/23031.table
@@ -0,0 +1,4 @@
+0 0 PLUME WILL NOT ENCOUNTER RAIN IN INCIDENT STATE
+1 1 PLUME WILL ENCOUNTER RAIN IN INCIDENT STATE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/23032.table b/definitions/bufr/tables/0/wmo/12/codetables/23032.table
new file mode 100644
index 0000000..18dea38
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/23032.table
@@ -0,0 +1,4 @@
+0 0 NO SIGNIFICANT CHANGE EXPECTED WITHIN NEXT SIX HOURS
+1 1 ANTICIPATED SIGNIFICANT CHANGE EXPECTED WITHIN NEXT SIX HOUR"    S
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/24003.table b/definitions/bufr/tables/0/wmo/12/codetables/24003.table
new file mode 100644
index 0000000..de7cf4e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/24003.table
@@ -0,0 +1,5 @@
+0 0 NOBLE GASES
+1 1 IODINES
+2 2 CAESIUM
+3 3 TRANSURANICS
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25004.table b/definitions/bufr/tables/0/wmo/12/codetables/25004.table
new file mode 100644
index 0000000..dfe4517
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25004.table
@@ -0,0 +1,4 @@
+0 0 INCOHERENT
+1 1 COHERENT (DOPPLER)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25005.table b/definitions/bufr/tables/0/wmo/12/codetables/25005.table
new file mode 100644
index 0000000..54954d6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25005.table
@@ -0,0 +1,4 @@
+0 0 LOGATITHM - 2.5 DB
+1 1 LINEAR
+2 2 SPECIAL
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25006.table b/definitions/bufr/tables/0/wmo/12/codetables/25006.table
new file mode 100644
index 0000000..35a61ac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25006.table
@@ -0,0 +1,5 @@
+0 0 ZH TO R CONVERSION
+1 1 (ZH, ZDR) TO (NO.DO) TO R
+2 2 (Z(F1),Z(F2)) TO ATTENUATION TO R
+6 6 OTHER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25009.table b/definitions/bufr/tables/0/wmo/12/codetables/25009.table
new file mode 100644
index 0000000..927847b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25009.table
@@ -0,0 +1,4 @@
+1 1 NONE
+2 2 CALIBRATION TARGET OR SIGNAL
+3 3 AGAINST RAINGAGES
+4 4 AGAINST OTHER INSTRUMENTS (DISTROMETER-ATTENUATION)
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25010.table b/definitions/bufr/tables/0/wmo/12/codetables/25010.table
new file mode 100644
index 0000000..70854d8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25010.table
@@ -0,0 +1,8 @@
+0 0 NONE
+1 1 MAP
+2 2 INSERTION OF HIGHER ELEVATION DATA AND MAP
+3 3 ANALYSIS OF FLUCTUATING LOGARITHM SIGNAL (CLUTTER DETECTION)
+4 4 EXTRACTION OF FLUCTUATING PART OF LINEAR SIGNAL (CLUTTER SUP"    PRESSION)
+5 5 CLUTTER SUPPRESSION DOPPLER
+6 6 MULTIPARAMETER ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25011.table b/definitions/bufr/tables/0/wmo/12/codetables/25011.table
new file mode 100644
index 0000000..f739498
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25011.table
@@ -0,0 +1,4 @@
+0 0 NONE
+1 1 MAP OF CORRECTION FACTORS
+2 2 INTERPOLATION (AZIMUTH OR ELEVATION)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25012.table b/definitions/bufr/tables/0/wmo/12/codetables/25012.table
new file mode 100644
index 0000000..c869a4a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25012.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE
+1 1 SOFTWARE
+2 2 HARDWARE AND SOFTWARE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25013.table b/definitions/bufr/tables/0/wmo/12/codetables/25013.table
new file mode 100644
index 0000000..4c13814
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25013.table
@@ -0,0 +1 @@
+1 1 BRIGHT BAND CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25015.table b/definitions/bufr/tables/0/wmo/12/codetables/25015.table
new file mode 100644
index 0000000..043e587
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25015.table
@@ -0,0 +1 @@
+1 1 RADOME ATTENUATION CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25017.table b/definitions/bufr/tables/0/wmo/12/codetables/25017.table
new file mode 100644
index 0000000..ed48487
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25017.table
@@ -0,0 +1 @@
+1 1 PRECIPITATION ATTENUATION CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25020.table b/definitions/bufr/tables/0/wmo/12/codetables/25020.table
new file mode 100644
index 0000000..ba9b528
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25020.table
@@ -0,0 +1,4 @@
+0 0 FTT (FAST FOURIER TRANSFORM
+1 1 PPP (PULSE PAIR PROCESSING
+2 2 VPC (VECTOR-PHASE CHANGE)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25021.table b/definitions/bufr/tables/0/wmo/12/codetables/25021.table
new file mode 100644
index 0000000..314716b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25021.table
@@ -0,0 +1,5 @@
+1 1 SIMPLE AVERAGE
+2 2 CONSENSUS AVERAGE
+3 3 MEDIAN CHECK
+4 4 VERTICAL CONSISTENCY CHECK
+5 5 OTHER
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25030.table b/definitions/bufr/tables/0/wmo/12/codetables/25030.table
new file mode 100644
index 0000000..aa78900
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25030.table
@@ -0,0 +1,4 @@
+0 0 RUNNING MEAN SEA-SURFACE TEMPERATURE NOT USED BECAUSE USAGE"     CRITERIA NOT MET
+1 1 RUNNING MEAN SEA-SURFACE TEMPERATURE NOT USED BECAUSE DATA N"    OT AVAILABLE
+2 2 RUNNING MEAN SEA-SURFACE TEMPERATURE USED AS PREDICTOR
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25032.table b/definitions/bufr/tables/0/wmo/12/codetables/25032.table
new file mode 100644
index 0000000..9b894f4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25032.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 DATA FROM LOW MODE
+2 2 DATA FROM HIGH MODE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25033.table b/definitions/bufr/tables/0/wmo/12/codetables/25033.table
new file mode 100644
index 0000000..e7141c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25033.table
@@ -0,0 +1,4 @@
+0 0 WIND PROFILER OPERATING IN SUBMODE A
+1 1 WIND PROFILER OPERATING IN SUBMODE B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25034.table b/definitions/bufr/tables/0/wmo/12/codetables/25034.table
new file mode 100644
index 0000000..473338a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25034.table
@@ -0,0 +1,3 @@
+1 1 TEST A PERFORMED AND FAILED
+2 2 TEST B PERFORMED AND FAILED
+3 3 TEST RESULTS INCONCLUSIVE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25036.table b/definitions/bufr/tables/0/wmo/12/codetables/25036.table
new file mode 100644
index 0000000..d71ffd1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25036.table
@@ -0,0 +1,4 @@
+0 0 NETWORK OF SEVERAL DIRECTION-FINDERS OPERATING ON"     THE SAME INDIVIDUAL ATMOSPHERICS
+1 1 NETWORK OF SEVERAL ARRIVAL-TIME STATIONS OPERATING ON"     THE SAME INDIVIDUAL ATMOSPHERICS
+6 6 SINGLE STATION RANGE BEARING TECHNIQUE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25040.table b/definitions/bufr/tables/0/wmo/12/codetables/25040.table
new file mode 100644
index 0000000..648a71b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25040.table
@@ -0,0 +1,10 @@
+0 0 NON-SPECIFIC MODE
+1 1 FIRST GUESS DATA
+2 2 CLOUD DATA
+3 3 AVERAGE VECTOR DATA
+4 4 PRIMARY DATA
+5 5 GUESS DATA
+6 6 VECTOR DATA
+7 7 TRACER DATA; THE IMAGE
+8 8 TRACER DATA TO NEXT IMAGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25041.table b/definitions/bufr/tables/0/wmo/12/codetables/25041.table
new file mode 100644
index 0000000..f388da0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25041.table
@@ -0,0 +1,4 @@
+0 0 DIRECTION ORIGINALLY REPORTED IN TRUE DEGREES
+1 1 DIRECTION ORIGINALLY REPORTED USING CODE TABLE 0700, FM 13
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25042.table b/definitions/bufr/tables/0/wmo/12/codetables/25042.table
new file mode 100644
index 0000000..314f464
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25042.table
@@ -0,0 +1,4 @@
+0 0 SPEED ORIGINALLY REPORTED IN METERS PER SECOND
+1 1 SPEED ORIGINALLY REPORTED USING CODE TABLE 2251, FM 13
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25045.table b/definitions/bufr/tables/0/wmo/12/codetables/25045.table
new file mode 100644
index 0000000..6a26361
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25045.table
@@ -0,0 +1,20 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
+6 6 CHANNEL  6 PRESENT - (SET TO 1 PRESENT)
+7 7 CHANNEL  7 PRESENT - (SET TO 1 PRESENT)
+8 8 CHANNEL  8 PRESENT - (SET TO 1 PRESENT)
+9 9 CHANNEL  9 PRESENT - (SET TO 1 PRESENT)
+10 10 CHANNEL 10 PRESENT - (SET TO 1 PRESENT)
+11 11 CHANNEL 11 PRESENT - (SET TO 1 PRESENT)
+12 12 CHANNEL 12 PRESENT - (SET TO 1 PRESENT)
+13 13 CHANNEL 13 PRESENT - (SET TO 1 PRESENT)
+14 14 CHANNEL 14 PRESENT - (SET TO 1 PRESENT)
+15 15 CHANNEL 15 PRESENT - (SET TO 1 PRESENT)
+16 16 CHANNEL 16 PRESENT - (SET TO 1 PRESENT)
+17 17 CHANNEL 17 PRESENT - (SET TO 1 PRESENT)
+18 18 CHANNEL 18 PRESENT - (SET TO 1 PRESENT)
+19 19 CHANNEL 19 PRESENT - (SET TO 1 PRESENT)
+20 20 CHANNEL 20 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25046.table b/definitions/bufr/tables/0/wmo/12/codetables/25046.table
new file mode 100644
index 0000000..0cda73b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25046.table
@@ -0,0 +1,4 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25047.table b/definitions/bufr/tables/0/wmo/12/codetables/25047.table
new file mode 100644
index 0000000..ad6fa18
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25047.table
@@ -0,0 +1,3 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25048.table b/definitions/bufr/tables/0/wmo/12/codetables/25048.table
new file mode 100644
index 0000000..a628567
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25048.table
@@ -0,0 +1,15 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
+6 6 CHANNEL  6 PRESENT - (SET TO 1 PRESENT)
+7 7 CHANNEL  7 PRESENT - (SET TO 1 PRESENT)
+8 8 CHANNEL  8 PRESENT - (SET TO 1 PRESENT)
+9 9 CHANNEL  9 PRESENT - (SET TO 1 PRESENT)
+10 10 CHANNEL 10 PRESENT - (SET TO 1 PRESENT)
+11 11 CHANNEL 11 PRESENT - (SET TO 1 PRESENT)
+12 12 CHANNEL 12 PRESENT - (SET TO 1 PRESENT)
+13 13 CHANNEL 13 PRESENT - (SET TO 1 PRESENT)
+14 14 CHANNEL 14 PRESENT - (SET TO 1 PRESENT)
+15 15 CHANNEL 15 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25049.table b/definitions/bufr/tables/0/wmo/12/codetables/25049.table
new file mode 100644
index 0000000..db2a09c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25049.table
@@ -0,0 +1,5 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25051.table b/definitions/bufr/tables/0/wmo/12/codetables/25051.table
new file mode 100644
index 0000000..3b3fbde
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25051.table
@@ -0,0 +1,6 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
+6 6 CHANNEL  6 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25053.table b/definitions/bufr/tables/0/wmo/12/codetables/25053.table
new file mode 100644
index 0000000..af34138
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25053.table
@@ -0,0 +1,6 @@
+1 1 GOOD
+2 2 REDUNDANT
+3 3 QUESTIONABLE
+4 4 BAD
+5 5 EXPERIMENTAL
+6 6 PRECIPITATING
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25069.table b/definitions/bufr/tables/0/wmo/12/codetables/25069.table
new file mode 100644
index 0000000..e627613
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25069.table
@@ -0,0 +1,7 @@
+1 1 SMOOTHED
+2 2 BASELINE ADJUSTED
+3 3 NORMALIZED TIME INTERVAL
+4 4 OUTLIER CHECKED
+5 5 PLAUSIBILITY CHECKED
+6 6 CONSISTENCY CHECKED
+7 7 INTERPOLATED
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25086.table b/definitions/bufr/tables/0/wmo/12/codetables/25086.table
new file mode 100644
index 0000000..294fa69
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25086.table
@@ -0,0 +1,4 @@
+0 0 DEPTHS ARE NOT CORRECTED
+1 1 DEPTHS ARE CORRECTED
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25093.table b/definitions/bufr/tables/0/wmo/12/codetables/25093.table
new file mode 100644
index 0000000..e547e6c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25093.table
@@ -0,0 +1,3 @@
+1 1 NO CORRECTION
+2 2 VERTICAL VELOCITY CORRECTION
+7 7 ALL CORRECTIONS
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25095.table b/definitions/bufr/tables/0/wmo/12/codetables/25095.table
new file mode 100644
index 0000000..a303e57
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25095.table
@@ -0,0 +1 @@
+1 1 ALTIMETER OPERATING (SET TO 0 IF NOMINAL, SET TO"     BACKUP)
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25096.table b/definitions/bufr/tables/0/wmo/12/codetables/25096.table
new file mode 100644
index 0000000..dcffa91
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25096.table
@@ -0,0 +1,4 @@
+1 1 MODE INDICATOR (0 IF MODE 2, 1 IF MODE 1)
+2 2 MODE 1 CALIBRATION SEQUENCE INDICATOR (0 IF NORMAL DATA TAKI"    NG EITHER MODE 1 OR 2, 1 IF MODE 1 CALIBRATION SEQUENCE) BIT"    S 3 AND 4 INDICATE A
+3 3 CHANNEL 2 (0 IF ON, 1 IF OFF)
+4 4 CHANNEL 3 (0 IF ON, 1 IF OFF)
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25097.table b/definitions/bufr/tables/0/wmo/12/codetables/25097.table
new file mode 100644
index 0000000..d4e1e46
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25097.table
@@ -0,0 +1,11 @@
+0 0 RANGES BETWEEN 0 AND 30 CM
+1 1 RANGES BETWEEN 30 AND 60 CM
+2 2 RANGES BETWEEN 60 AND 90 CM
+3 3 RANGES BETWEEN 90 AND 120 CM
+4 4 RANGES BETWEEN 120 AND 150 CM
+5 5 RANGES BETWEEN 150 AND 180 CM
+6 6 RANGES BETWEEN 180 AND 210 CM
+7 7 RANGES BETWEEN 210 AND 240 CM
+8 8 RANGES BETWEEN 240 AND 270 CM
+9 9 RANGES LARGER THAN 270 CM
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25098.table b/definitions/bufr/tables/0/wmo/12/codetables/25098.table
new file mode 100644
index 0000000..b49bdb5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25098.table
@@ -0,0 +1,8 @@
+1 1 KU BAND RANGE
+2 2 C BAND RANGE
+3 3 KU BAND SWH
+4 4 C BAND SWH
+5 5 KU BAND SCATTEROMETER COEFFICIENT
+6 6 C BAND SCATTEROMETER COEFFICIENT
+7 7 OFF NADIR ANGLE FROM KU BAND WVEFORM PARAMETERS
+8 8 OFF NADIR FROM PLATFORM
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25099.table b/definitions/bufr/tables/0/wmo/12/codetables/25099.table
new file mode 100644
index 0000000..c6cabcd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25099.table
@@ -0,0 +1,6 @@
+1 1 KU BAND RANGE INSTRUMENTAL CORRECTION
+2 2 C BAND RANGE INSTRUMENTAL CORRECTION
+3 3 KU BAND SWH INSTRUMENTAL CORRECTION
+4 4 C BAND SWH INSTRUMENTAL CORRECTION
+5 5 KU BAND SCATTEROMETER COEFFICIENT INSTRUMENTAL CORRECTION
+6 6 C BAND SCATTEROMETER COEFFICIENT INSTRUMENTAL CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25110.table b/definitions/bufr/tables/0/wmo/12/codetables/25110.table
new file mode 100644
index 0000000..c53002c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25110.table
@@ -0,0 +1,6 @@
+1 1 RAW DATA ANALYSIS USED FOR RAW DATA CORRECTION."    CORRECTION DONE USING DEFAULT PARAMETERS
+2 2 RAW DATA ANALYSIS USED FOR RAW DATA CORRECTION."    CORRECTION DONE USING RAW DATA ANALYSIS RESULTS
+3 3 ANTENNA ELEVATION PATTERN CORRECTION APPLIED
+4 4 NOMINAL CHIRP REPLICA USED
+5 5 RECONSTRUCTED CHIRP USED
+6 6 SLANT RANGE TO GROUND RANGE CONVERSION APPLIED
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25120.table b/definitions/bufr/tables/0/wmo/12/codetables/25120.table
new file mode 100644
index 0000000..026f109
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25120.table
@@ -0,0 +1,4 @@
+0 0 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"     2 PROCESSING IS GREATER THAN THE ACCEPTABLE THRESHOLD
+1 1 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"    2 PROCESSING IS LESS THAN THE ACCEPTABLE THRESHOLD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25122.table b/definitions/bufr/tables/0/wmo/12/codetables/25122.table
new file mode 100644
index 0000000..1085ef9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25122.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE CONFIGURATION FOR RF IS A
+1 1 HARDWARE CONFIGURATION FOR RF IS B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25123.table b/definitions/bufr/tables/0/wmo/12/codetables/25123.table
new file mode 100644
index 0000000..70f0670
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25123.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE CONFIGURATION FOR HPA IS A
+1 1 HARDWARE CONFIGURATION FOR HPA IS B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/25124.table b/definitions/bufr/tables/0/wmo/12/codetables/25124.table
new file mode 100644
index 0000000..e611ac0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/25124.table
@@ -0,0 +1,4 @@
+0 0 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"    2 PROCESSING IS GREATER THAN THE ACCEPTABLE THRESHOLD
+1 1 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"    2 PROCESSING IS LESS THAN THE ACCEPTABLE THRESHOLD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/26010.table b/definitions/bufr/tables/0/wmo/12/codetables/26010.table
new file mode 100644
index 0000000..f825040
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/26010.table
@@ -0,0 +1,25 @@
+1 1 0100 INCLUDED
+2 2 0200 INCLUDED
+3 3 0300 INCLUDED
+4 4 0400 INCLUDED
+5 5 0500 INCLUDED
+6 6 0600 INCLUDED
+7 7 0700 INCLUDED
+8 8 0800 INCLUDED
+9 9 0900 INCLUDED
+10 10 1000 INCLUDED
+11 11 1100 INCLUDED
+12 12 1200 INCLUDED
+13 13 1300 INCLUDED
+14 14 1400 INCLUDED
+15 15 1500 INCLUDED
+16 16 1600 INCLUDED
+17 17 1700 INCLUDED
+18 18 1800 INCLUDED
+19 19 1900 INCLUDED
+20 20 2000 INCLUDED
+21 21 2100 INCLUDED
+22 22 2200 INCLUDED
+23 23 2300 INCLUDED
+24 24 2400 INCLUDED
+25 25 UNKNOWN MIXTURE OF HOURS
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/29001.table b/definitions/bufr/tables/0/wmo/12/codetables/29001.table
new file mode 100644
index 0000000..beff485
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/29001.table
@@ -0,0 +1,6 @@
+0 0 GNOMONIC PROJECTION
+1 1 POLAR STEREOGRAPHIC PROJECTION
+2 2 LAMBERT'S CONFORMAL CONIC PROJECTION
+3 3 MERCATOR'S PROJECTION
+4 4 SCANNING CONE (RADAR)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/29002.table b/definitions/bufr/tables/0/wmo/12/codetables/29002.table
new file mode 100644
index 0000000..1d7efd0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/29002.table
@@ -0,0 +1,4 @@
+0 0 CARTESIAN
+1 1 POLAR
+2 2 OTHER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/30031.table b/definitions/bufr/tables/0/wmo/12/codetables/30031.table
new file mode 100644
index 0000000..12ddc7c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/30031.table
@@ -0,0 +1,13 @@
+0 0 PPI
+1 1 COMPOSITE
+2 2 CAPPI
+3 3 VERTICAL SECTION
+4 4 ALPHANUMERIC DATA
+5 5 MAP OF SUBJECT CLUTTER
+6 6 MAP
+7 7 TEST PICTURE
+8 8 COMMENTS
+9 9 MAP OF GROUND OCCULTATION
+10 10 MAP OF RADAR BEAM HEIGHT
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/30032.table b/definitions/bufr/tables/0/wmo/12/codetables/30032.table
new file mode 100644
index 0000000..942cb5d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/30032.table
@@ -0,0 +1,9 @@
+1 1 MAP
+2 2 SATELLITE IR
+3 3 SATELLITE VIS
+4 4 SATELLITE WV
+5 5 SATELLITE MULTISPECTRAL
+6 6 SYNOPTIC OBSERVATIONS
+7 7 FORECAST PARAMETERS
+8 8 LIGHTNING DATA
+15 15 OTHER DATA
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/31021.table b/definitions/bufr/tables/0/wmo/12/codetables/31021.table
new file mode 100644
index 0000000..de8d5a6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/31021.table
@@ -0,0 +1,4 @@
+1 1 1 BIT INDICATOR OF QUALITY, 0= GOOD; 1=SUSPECT OR BAD
+2 2 2 BIT INDICATOR OF QUALITY, 0= GOOD; 1= SLIGHTLY SUSPECTED;"    2= HIGHLY SUSPECTED; 3=BAD
+7 7 PERCENTAGE CONFIDENCE
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/31031.table b/definitions/bufr/tables/0/wmo/12/codetables/31031.table
new file mode 100644
index 0000000..4ce2df8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/31031.table
@@ -0,0 +1 @@
+1 1 DATA NOT PRESENT
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33002.table b/definitions/bufr/tables/0/wmo/12/codetables/33002.table
new file mode 100644
index 0000000..74fd2d6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33002.table
@@ -0,0 +1,4 @@
+0 0 DATA NOT SUSPECT
+1 1 DATA SUSPECT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33003.table b/definitions/bufr/tables/0/wmo/12/codetables/33003.table
new file mode 100644
index 0000000..1516d51
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33003.table
@@ -0,0 +1,5 @@
+0 0 DATA NOT SUSPECT
+1 1 DATA SLIGHTLY SUSPECT
+2 2 DATA HIGHTLY SUSPECT
+3 3 DATA CONSIDERED UNFIT FOR USE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33005.table b/definitions/bufr/tables/0/wmo/12/codetables/33005.table
new file mode 100644
index 0000000..880bae8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33005.table
@@ -0,0 +1,23 @@
+1 1 NO AUTOMATED METEOROLOGICAL DATA CHECKS PERFORMED
+2 2 PRESSURE DATA SUSPECT
+3 3 WIND DATA SUSPECT
+4 4 DRY-BULB TEMPERATURE DATA SUSPECT
+5 5 WET-BULB TEMPERATURE DATA SUSPECT
+6 6 HUMIDITY DATA SUSPECT
+7 7 GROUND TEMPERATURE DATA SUSPECT
+8 8 SOIL TEMPERATURE (DEPTH 1) DATA SUSPECT
+9 9 SOIL TEMPERATURE (DEPTH 2) DATA SUSPECT
+10 10 SOIL TEMPERATURE (DEPTH 3) DATA SUSPECT
+11 11 SOIL TEMPERATURE (DEPTH 4) DATA SUSPECT
+12 12 SOIL TEMPERATURE (DEPTH 5) DATA SUSPECT
+13 13 CLOUD DATA SUSPECT
+14 14 VISIBILITY DATA SUSPECT
+15 15 PRESENT WEATHER DATA SUSPECT
+16 16 LIGHTNING DATA SUSPECT
+17 17 ICE DEPOSIT DATA SUSPECT
+18 18 PRECIPITATION DATA SUSPECT
+19 19 STATE OF GROUND DATA SUSPECT
+20 20 SNOW DATA SUSPECT
+21 21 WATER CONTENT DATA SUSPECT
+22 22 EVAPORATION/EVAPOTRANSPIRATION DATA SUSPECT
+23 23 SUNSHINE DATA SUSPECT
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33006.table b/definitions/bufr/tables/0/wmo/12/codetables/33006.table
new file mode 100644
index 0000000..0ea44a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33006.table
@@ -0,0 +1,5 @@
+0 0 SELF-CHECK OK
+1 1 AT LEAST ONE WARNING ACTIVE, NO ALARMS
+2 2 AT LEAST ONE ALARM ACTIVE
+3 3 SENSOR FAILURE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33015.table b/definitions/bufr/tables/0/wmo/12/codetables/33015.table
new file mode 100644
index 0000000..dd633f1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33015.table
@@ -0,0 +1,16 @@
+0 0 PASSED ALL CHECKS
+1 1 MISSING-DATA CHECK
+2 2 DESCENDING/REASCENDING BALLOON CHECK
+3 3 DATA PLAUSIBILITY CHECK (ABOVE LIMITS)
+4 4 DATA PLAUSIBILITY CHECK (BELOW LIMITS)
+5 5 SUPERADIABATIC LAPSE RATE CHECK
+6 6 LIMITING ANGLES CHECK
+7 7 ASCENSION RATE CHECK
+8 8 EXCESSIVE CHANGE FROM PREVIOUS FLIGHT
+9 9 BALLOON OVERHEAD CHECK
+10 10 WIND SPEED CHECK
+11 11 WIND DIRECTION CHECK
+12 12 DEPENDENCY CHECK
+13 13 DATA VALID BUT MODIFIED
+14 14 DATA OUTLIER CHECK
+63 63 MISSING DATA
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33020.table b/definitions/bufr/tables/0/wmo/12/codetables/33020.table
new file mode 100644
index 0000000..023909a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33020.table
@@ -0,0 +1,8 @@
+0 0 GOOD
+1 1 INCONSISTENT
+2 2 DOUBTFUL
+3 3 WRONG
+4 4 NOT CHECKED
+5 5 HAS BEEN CHECKED
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33021.table b/definitions/bufr/tables/0/wmo/12/codetables/33021.table
new file mode 100644
index 0000000..e3e67ae
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33021.table
@@ -0,0 +1,4 @@
+0 0 WITHIN LIMITS
+1 1 OUTSIDE LIMITS
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33022.table b/definitions/bufr/tables/0/wmo/12/codetables/33022.table
new file mode 100644
index 0000000..692661f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33022.table
@@ -0,0 +1,4 @@
+0 0 GOOD (SEVERAL IDENTICAL REPORTS HAVE BEEN RECEIVED)
+1 1 DUBIOUS (NO IDENTICAL REPORT HAVE BEEN RECEIVED)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33023.table b/definitions/bufr/tables/0/wmo/12/codetables/33023.table
new file mode 100644
index 0000000..71ecd11
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33023.table
@@ -0,0 +1,4 @@
+0 0 RELIABLE (LOCATION WAS MADE OVER TWO SATELLITE PASSES)
+1 1 LATEST KNOWN (NO LOCATION OVER CORRESPONDING PASS)
+2 2 DUBIOUS
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33024.table b/definitions/bufr/tables/0/wmo/12/codetables/33024.table
new file mode 100644
index 0000000..e1e3b92
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33024.table
@@ -0,0 +1,10 @@
+0 0 RESERVED
+1 1 EXELLENT - WITHIN 3 METRES
+2 2 GOOD - WITHIN 10 METRES
+3 3 FAIR - WITHIN 20 METRES
+4 4 POOR - MORE THAN 20 METRES
+5 5 EXELLENT -WITHIN 10 FEET
+6 6 GOOD WITHIN-30 FEET
+7 7 FAIR WITHIN 60 FEET
+8 8 POOR - MORE THAN 60 FEET
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33025.table b/definitions/bufr/tables/0/wmo/12/codetables/33025.table
new file mode 100644
index 0000000..edcd4e3
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33025.table
@@ -0,0 +1,5 @@
+0 0 TIME INTERPOLATED, LATITUDE AND LONGITUDE REPORTED
+1 1 TIME REPORTED, LATITUDE AND LONGITUDE INTERPOLATED
+2 2 TIME, LATITUDE AND LONGITUDE INTERPOLATED
+3 3 TIME, LATITUDE AND LONGITUDE REPORTED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33026.table b/definitions/bufr/tables/0/wmo/12/codetables/33026.table
new file mode 100644
index 0000000..539a9fe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33026.table
@@ -0,0 +1,10 @@
+0 0 NORMAL OPERATIONS - MEASUREMENT MODE
+1 1 NORMAL OPERATIONS - NON-MEASUREMENT MODE
+2 2 SMALL RH
+3 3 HUMIDITY ELEMENT IS WET
+4 4 HUMIDITY ELEMENT IS CONTAMINATED
+5 5 HEATER FAIL
+6 6 HEATER FAIL AND WET/CONTAMINATED HUMIDITY ELEMENT
+7 7 SINGLE VALIDITY BAD
+8 8 NUMERIC ERROR
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33027.table b/definitions/bufr/tables/0/wmo/12/codetables/33027.table
new file mode 100644
index 0000000..30dcae8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33027.table
@@ -0,0 +1,5 @@
+0 0 RADIUS >= 1500 M
+1 1 500 M <= RADIUS < 1500 M
+2 2 250 M <= RADIUS < 500 M
+3 3 RADIUS < 250 M
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33028.table b/definitions/bufr/tables/0/wmo/12/codetables/33028.table
new file mode 100644
index 0000000..8a16e7a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33028.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 NOMINAL
+2 2 DEGRADED BY SW ERROR; ANY ERROR REPORTED BY THE ALGORITHMS
+3 3 DEGRADED BY INSTRUMENT ERROR
+4 4 DEGRADED BY CORRUPTED/MISSING ADF
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33030.table b/definitions/bufr/tables/0/wmo/12/codetables/33030.table
new file mode 100644
index 0000000..c9e36c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33030.table
@@ -0,0 +1,7 @@
+1 1 DO NOT USE SCAN FOR PRODUCT GENERATION
+2 2 TIME SEQUENCE ERROR DETECTED WITH THIS SCAN
+3 3 DATA GAP PRECEDES THIS SCAN
+4 4 NO CALIBRATION
+5 5 NO EARTH LOCATION
+6 6 FIRST GOOD TIME FOLLOWING A CLOCK UPDATE
+7 7 INSTRUMENT STATUS CHANGED WITH THIS SCAN
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33031.table b/definitions/bufr/tables/0/wmo/12/codetables/33031.table
new file mode 100644
index 0000000..857eece
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33031.table
@@ -0,0 +1,21 @@
+1 1 TIME FIELD IS BAD BUT CAN PROBABLY BE INFERRED FROM THE PREV"    IOUS GOOD TIME
+2 2 TIME FIELD IS BAD AND CAN?~@~YT BE INFERRED FROM THE PREVIOU"    S GOOD TIME
+3 3 THIS RECORD STARTS A SEQUENCE THAT IS INCONSISTENT WITH PREV"    IOUS TIMES (I.E. THERE IS A TIME DISCONTINUITY). THIS MAY OR"     MAY NOT BE ASSOCIAT
+4 4 START OF A SEQUENCE THAT APPARENTLY REPEATS SCAN TIMES THAT"    HAVE BEEN PREVIOUSLY ACCEPTED
+5 5 SCAN LINE WAS NOT CALIBRATED BECAUSE OF BAD TIME
+6 6 SCAN LINE WAS CALIBRATED USING FEWER THAN THE PREFERRED NUMB"    ER OF SCAN LINES BECAUSE OF PROXIMATY TO START OR END OF DAT"    A OR TO A DATA GAP
+7 7 SCAN LINE WAS NOT CALIBRATED BECAUSE OF BAD OR INSUFFICIENT"    PRT DATA
+8 8 SCAN LINE WAS CALIBRATED BUT WITH MARGINAL PRT DATA
+9 9 SOME UNCALIBRATED CHANNELS ON THIS SCAN
+10 10 UNCALIBRATED DUE TO INSTRUMENT MODE
+11 11 QUESTIONABLE CALIBRATION BECAUSE OF ANTENNA POSITION ERROR O"    F SPACE VIEW
+12 12 QUESTIONABLE CALIBRATION BECAUSE OF ANTENNA POSITION ERROR O"    F BLACK BODY
+13 13 NOT EARTH LOCATED BECAUSE OF BAD TIME
+14 14 EARTH LOCATION QUESTIONABLE BECAUSE OF"     QUESTIONABLE TIME CODE (SEE TIME PROBLEM"     CODE BITS)
+15 15 EARTH LOCATION QUESTIONABLE - ONLY MARGINAL AGREEMENT"     WITH REASONABLENESS CHECK
+16 16 EARTH LOCATION QUESTIONABLE - FAILS REASONABLENESS CHECK
+17 17 EARTH LOCATION QUESTIONABLE BECAUSE OF ANTENNA POSITION CHEC"    K
+18 18 SCAN LINE CALIBRATION COLD BLACK BODY
+19 19 SCAN LINE CALIBRATION WARM BLACK BODY
+20 20 SCAN LINE CALIBRATION SPACE VIEW
+21 21 EARTH VIEW
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33032.table b/definitions/bufr/tables/0/wmo/12/codetables/33032.table
new file mode 100644
index 0000000..45b284d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33032.table
@@ -0,0 +1,6 @@
+1 1 NO GOOD BLACKBODY COUNTS FOR SCAN LINE
+2 2 NO GOOD SPACE VIEW COUNTS FOR THIS LINE
+3 3 NO GOOD PRTS FOR THIS LINE
+4 4 SOME BAD BLACKBODY VIEW COUNTS FOR THIS LINE
+5 5 SOME BAD SPACE VIEW COUNTS FOR THIS LINE
+6 6 SOME BAD PRT TEMPS ON THIS LINE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33033.table b/definitions/bufr/tables/0/wmo/12/codetables/33033.table
new file mode 100644
index 0000000..803087f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33033.table
@@ -0,0 +1,23 @@
+1 1 SET IF SECONDARY CALIBRATION USED
+2 2 BRIGHTNESS TEMPERATURE IN CHANNEL 1 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+3 3 BRIGHTNESS TEMPERATURE IN CHANNEL 2 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+4 4 BRIGHTNESS TEMPERATURE IN CHANNEL 3 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+5 5 BRIGHTNESS TEMPERATURE IN CHANNEL 4 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+6 6 BRIGHTNESS TEMPERATURE IN CHANNEL 5 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+7 7 BRIGHTNESS TEMPERATURE IN CHANNEL 6 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+8 8 BRIGHTNESS TEMPERATURE IN CHANNEL 7 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+9 9 BRIGHTNESS TEMPERATURE IN CHANNEL 8 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+10 10 BRIGHTNESS TEMPERATURE IN CHANNEL 9 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+11 11 BRIGHTNESS TEMPERATURE IN CHANNEL 10 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+12 12 BRIGHTNESS TEMPERATURE IN CHANNEL 11 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+13 13 BRIGHTNESS TEMPERATURE IN CHANNEL 12 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+14 14 BRIGHTNESS TEMPERATURE IN CHANNEL 13 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+15 15 BRIGHTNESS TEMPERATURE IN CHANNEL 14 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+16 16 BRIGHTNESS TEMPERATURE IN CHANNEL 15 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+17 17 BRIGHTNESS TEMPERATURE IN CHANNEL 16 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+18 18 BRIGHTNESS TEMPERATURE IN CHANNEL 17 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+19 19 BRIGHTNESS TEMPERATURE IN CHANNEL 18 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+20 20 BRIGHTNESS TEMPERATURE IN CHANNEL 19 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+21 21 BRIGHTNESS TEMPERATURE IN CHANNEL 20 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+22 22 SET IF ALL CHANNELS ARE MISSING
+23 23 SUSPECT
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33035.table b/definitions/bufr/tables/0/wmo/12/codetables/33035.table
new file mode 100644
index 0000000..938a958
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33035.table
@@ -0,0 +1,15 @@
+0 0 AUTOMATIC QUALITY CONTROL PASSED AND NOT MANUALLY CHECKED
+1 1 AUTOMATIC QUALITY CONTROL PASSED AND MANUALLY CHECKED AND PA"    SSED
+2 2 AUTOMATIC QUALITY CONTROL PASSED AND MANUALLY CHECKED AND DE"    LETED
+3 3 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY NOT CHECKED
+4 4 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY CHECKED AND FA"    ILED
+5 5 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY CHECKED AND RE"    -INSERTED
+6 6 AUTOMATIC QUALITY CONTROL FLAGGED DATA AS QUESTIONABLE AND N"    OT MANUALLY CHECCKED
+7 7 AUTOMATIC QUALITY CONTROL FLAGGED DATA AS QUESTIONABLE"    AND MANUALLY CHECKED AND FAILED
+8 8 MANUALLY CHECKED AND FAILED
+9 9 EXCESSIVE MISSING DATA FRAMES
+10 10 RESERVED
+11 11 EXCESSIVE MISSING TEMPERATURE
+12 12 EXCESSIVE MISSING PRESSURE
+13 13 USER TERMINATED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33037.table b/definitions/bufr/tables/0/wmo/12/codetables/33037.table
new file mode 100644
index 0000000..81a7d01
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33037.table
@@ -0,0 +1,19 @@
+1 1 U DEPARTURE FROM GUESS
+2 2 V DEPARTURE FROM GUESS
+3 3 U & V DEPARTURE FROM GUESS
+4 4 U ACCELERATION
+5 5 V ACCELERATION
+6 6 U & V ACCELERATION
+7 7 POSSIBLE LAND FEATURE
+8 8 U ACCELERATION AND POSSIBLE LAND FEATURE
+9 9 V ACCELERATION AND POSSIBLE LAND FEATURE
+10 10 U & V ACCELERATION AND POSSIBLE LAND FEATURE
+11 11 BAD WIND GUESS
+12 12 CORRELATION FAILURE
+13 13 SEARCH BOX OFF EDGE OF AREA
+14 14 TARGET BOX OFF EDGE OF AREA
+15 15 PIXEL BRIGHTNESS OUT OF BOUNDS (NOISY LINE)
+16 16 TARGET OUTSIDE OF LAT/LONG BOX
+17 17 TARGET OUTSIDE OF PRESSURE MIN/MAX
+18 18 AUTOEDITOR FLAGGED SLOW VECTOR
+19 19 AUTOEDITOR FLAGGED VECTORS
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33038.table b/definitions/bufr/tables/0/wmo/12/codetables/33038.table
new file mode 100644
index 0000000..3dc1192
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33038.table
@@ -0,0 +1,9 @@
+1 1 TOTAL ZENITH DELAY QUALITY IS CONSIDERED POOR
+2 2 GALILEO SATELLITES USED
+3 3 GLONASS SATELLITES USED
+4 4 GPS SATELLITES USED
+5 5 METEOROLOGICAL DATA APPLIED
+6 6 ATMOSPHERIC LOADING CORRECTION APPLIED
+7 7 OCEAN TIDE LOADING APPLIED
+8 8 CLIMATE QUALITY DATA PROCESSING
+9 9 NEAR-REAL TIME DATA PROCESSING
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33039.table b/definitions/bufr/tables/0/wmo/12/codetables/33039.table
new file mode 100644
index 0000000..50ff126
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33039.table
@@ -0,0 +1,9 @@
+1 1 NON-NOMINAL QUALITY
+2 2 OFFLINE PRODUCT
+3 3 ASCENDING OCCULTATION FLAG
+4 4 EXCESS PHASE PROCESSING NON-NOMINAL
+5 5 BENDING ANGLE PROCESSING NON-NOMINAL
+6 6 REFRACTIVITY PROCESSING NON-NOMINAL
+7 7 METEOROLOGICAL PROCESSING NON-NOMINAL
+14 14 BACKGROUND PROFILE NON-NOMINAL
+15 15 BACKGROUND (I.E. NOT RETRIEVED) PROFILE PRESENT
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33041.table b/definitions/bufr/tables/0/wmo/12/codetables/33041.table
new file mode 100644
index 0000000..7da4cf8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33041.table
@@ -0,0 +1,4 @@
+0 0 THE FOLLOWING VALUE IS THE TRUE VALUE
+1 1 THE FOLLOWING VALUE IS HIGHER THAN THE TRUE VALUE"    (THE MEASUREMENT HIT THE LOWER LIMIT OF THE INSTRUMENT)
+2 2 THE FOLLOWING VALUE IS LOWER THAN THE TRUE VALUE"    (THE MEASUREMENT HIT THE HIGHER LIMIT OF THE INSTRUMENT)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33042.table b/definitions/bufr/tables/0/wmo/12/codetables/33042.table
new file mode 100644
index 0000000..b75447a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33042.table
@@ -0,0 +1,5 @@
+0 0 EXCLUSIVE LOWER LIMIT (>)
+1 1 INCLUSIVE LOWER LIMIT (>=)
+2 2 EXCLUSIVE UPPER LIMIT (<)
+3 3 INCLUSIVE UPPER LIMIT (=<)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33043.table b/definitions/bufr/tables/0/wmo/12/codetables/33043.table
new file mode 100644
index 0000000..f0626f5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33043.table
@@ -0,0 +1,4 @@
+1 1 SEA MDS. NADIR ONLY SST RETRIEVAL USED 3.7 MICRON"    CHANNEL. LAND MDS RESERVED
+2 2 SEA MDS. DUAL VIEW SST RETRIEVAL USED 3.7 MICRON"    CHANNEL. LAND MDS RESERVED.
+3 3 NADIR VIEW CONTAINS DAY TIME DATA
+4 4 FORWARD VIEW CONTAINS DAY TIME DATA
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33044.table b/definitions/bufr/tables/0/wmo/12/codetables/33044.table
new file mode 100644
index 0000000..a74a7c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33044.table
@@ -0,0 +1,14 @@
+1 1 INPUT DATA MEAN OUTSIDE NOMINAL RANGE FLAG
+2 2 INPUT DATA STANDARD DEVIATION OUTSIDE NOMINAL RANGE FLAG
+3 3 NUMBER OF INPUT DATA GAPS > THRESHOLD VALUE
+4 4 PERCENTAGE OF MISSING LINES > THRESHOLD VALUE
+5 5 DOPPLER CENTROID UNCERTAIN. CONFIDENCE MEASURE < SPECIFIC VA"    LUE
+6 6 DOPPLER AMBIGUITY ESTIMATE UNCERTAIN. CONFIDENCE MEASURE < S"    PECIFIC VALUE
+7 7 OUTPUT DATA MEAN OUTSIDE NOMINAL RANGE FLAG
+8 8 OUTPUT DATA STANDARD DEVIATION OUTSIDE NOMINAL RANGE FLAG
+9 9 CHIRP RECONSTRUCTION FAILED OR IS OF LOW QUALITY FLAG
+10 10 DATA SET MISSING
+11 11 INVALID DOWNLINK PARAMETERS
+12 12 AZIMUTH CUT-OFF ITERATION COUNT. THE AZIMUTH CUT-OFF FIT DID"     NOT CONVERGE WITHIN A MINIMUM NUMBER OF ITERATIONS
+13 13 AZIMUTH CUT-OFF FIT DID NOT CONVERGE WITHIN A MINIMUM"    NUMBER OF ITERATIONS
+14 14 PHASE INFORMATION CONFIDENCE MEASURE. THE IMAGINARY SPECTRAL"    PEAK IS LESS THAN A MINIMUM THRESHOLD, OR THE ZERO LAG SHIFT"    IS GREATER THAN A MI
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33047.table b/definitions/bufr/tables/0/wmo/12/codetables/33047.table
new file mode 100644
index 0000000..e91702b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33047.table
@@ -0,0 +1,26 @@
+1 1 ERROR DETECTED AND ATTEMPTS TO RECOVER MADE
+2 2 ANOMALY IN ON-BOARD DATA HANDLING (OBDH) VALUE DETECTED
+3 3 ANOMALY IN ULTRA STABLE OSCILLATOR PROCESSING (USOP) VALUE D"    ETECTED
+4 4 ERRORS DETECTED BY ON-BOARD COMPUTER
+5 5 AUTOMATIC GAIN CONTROL (AGC) OUT OF RANGE
+6 6 RX DELAY FAULT. RX DISTANCE OUT OF RANGE
+7 7 WAVE FORM SAMPLES FAULT IDENTIFIER. ERROR
+12 12 BRIGHTNESS TEMPERATURE (CHANNEL 1) OUT OF RANGE
+13 13 BRIGHTNESS TEMPERATURE (CHANNEL 2) OUT OF RANGE
+14 14 RESERVED
+15 15 KU OCEAN RETRACKING ERROR
+16 16 S OCEAN RETRACKING ERROR
+17 17 KU ICE 1 RETRACKING ERROR
+18 18 S ICE 1 RETRACKING ERROR
+19 19 KU ICE 2 RETRACKING ERROR
+20 20 S ICE 2 RETRACKING ERROR
+21 21 KU SEA ICE RETRACKING ERROR
+22 22 ARITHMETIC FAULT ERROR
+23 23 METEO DATA STATE. NO MAP
+24 24 METEO DATA STATE. 1 MAP
+25 25 METEO DATA STATE 2 MAPS DEGRADED
+26 26 METEO DATA STATE 2 MAPS NOMINAL
+27 27 ORBIT PROPAGATOR STATUS FOR PROPAGATION MODE, SEVERAL ERRORS
+28 28 ORBIT PROPAGATOR STATUS FOR PROPAGATION MODE, WARNING DETECT"    ED
+29 29 ORBIT PROPAGATOR STATUS FOR INITIALISATION MODE, SEVERAL ERR"    ORS
+30 30 ORBIT PROPAGATOR STATUS FOR INITIALISATION MODE, WARNING DET"    ECTED
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33048.table b/definitions/bufr/tables/0/wmo/12/codetables/33048.table
new file mode 100644
index 0000000..312ba40
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33048.table
@@ -0,0 +1,4 @@
+0 0 INVERSION SUCCESSFUL
+1 1 INVERSION NOT SUCCESSFUL
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33049.table b/definitions/bufr/tables/0/wmo/12/codetables/33049.table
new file mode 100644
index 0000000..bdde061
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33049.table
@@ -0,0 +1,4 @@
+0 0 EXTERNAL WIND DIRECTION USED DURING INVERSION
+1 1 EXTERNAL WIND DIRECTION NOT USED DURING INVERSION
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33050.table b/definitions/bufr/tables/0/wmo/12/codetables/33050.table
new file mode 100644
index 0000000..772ab4a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33050.table
@@ -0,0 +1,8 @@
+0 0 UNQUALIFIED
+1 1 CORRECT VALUE (ALL CHECKS PASSED)
+2 2 PROBABLY GOOD BUT VALUE INCONSISTENT WITH STATISTICS (DIFFER"     FROM CLIMATOLOGY)
+3 3 PROBABLY BAD (SPIKE, GRADIENT, ?~E IF OTHER TESTS PASSED)
+4 4 BAD VALUE, IMPOSSIBLE VALUE (OUT OF SCALE, VERTICAL"    INSTABILITY, CONSTANT PROFILE)
+5 5 VALUE MODIFIED DURING QUALITY CONTROL
+8 8 INTERPOLATED VALUE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33052.table b/definitions/bufr/tables/0/wmo/12/codetables/33052.table
new file mode 100644
index 0000000..42ae4d2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33052.table
@@ -0,0 +1,20 @@
+1 1 DATA BLOCK 1 INVALID (S BAND)
+2 2 DATA BLOCK 2 INVALID (S BAND)
+3 3 DATA BLOCK 3 INVALID (S BAND)
+4 4 DATA BLOCK 4 INVALID (S BAND)
+5 5 DATA BLOCK 5 INVALID (S BAND)
+6 6 DATA BLOCK 6 INVALID (S BAND)
+7 7 DATA BLOCK 7 INVALID (S BAND)
+8 8 DATA BLOCK 8 INVALID (S BAND)
+9 9 DATA BLOCK 9 INVALID (S BAND)
+10 10 DATA BLOCK 10 INVALID (S BAND)
+11 11 DATA BLOCK 11 INVALID (S BAND)
+12 12 DATA BLOCK 12 INVALID (S BAND)
+13 13 DATA BLOCK 13 INVALID (S BAND)
+14 14 DATA BLOCK 14 INVALID (S BAND)
+15 15 DATA BLOCK 15 INVALID (S BAND)
+16 16 DATA BLOCK 16 INVALID (S BAND)
+17 17 DATA BLOCK 17 INVALID (S BAND)
+18 18 DATA BLOCK 18 INVALID (S BAND)
+19 19 DATA BLOCK 19 INVALID (S BAND)
+20 20 DATA BLOCK 20 INVALID (S BAND)
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33053.table b/definitions/bufr/tables/0/wmo/12/codetables/33053.table
new file mode 100644
index 0000000..9170c54
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33053.table
@@ -0,0 +1,20 @@
+1 1 DATA BLOCK 1 INVALID (KU BAND)
+2 2 DATA BLOCK 2 INVALID (KU BAND)
+3 3 DATA BLOCK 3 INVALID (KU BAND)
+4 4 DATA BLOCK 4 INVALID (KU BAND)
+5 5 DATA BLOCK 5 INVALID (KU BAND)
+6 6 DATA BLOCK 6 INVALID (KU BAND)
+7 7 DATA BLOCK 7 INVALID (KU BAND)
+8 8 DATA BLOCK 8 INVALID (KU BAND)
+9 9 DATA BLOCK 9 INVALID (KU BAND)
+10 10 DATA BLOCK 10 INVALID (KU BAND)
+11 11 DATA BLOCK 11 INVALID (KU BAND)
+12 12 DATA BLOCK 12 INVALID (KU BAND)
+13 13 DATA BLOCK 13 INVALID (KU BAND)
+14 14 DATA BLOCK 14 INVALID (KU BAND)
+15 15 DATA BLOCK 15 INVALID (KU BAND)
+16 16 DATA BLOCK 16 INVALID (KU BAND)
+17 17 DATA BLOCK 17 INVALID (KU BAND)
+18 18 DATA BLOCK 18 INVALID (KU BAND)
+19 19 DATA BLOCK 19 INVALID (KU BAND)
+20 20 DATA BLOCK 20 INVALID (KU BAND)
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/33060.table b/definitions/bufr/tables/0/wmo/12/codetables/33060.table
new file mode 100644
index 0000000..0b85a8f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/33060.table
@@ -0,0 +1,4 @@
+0 0 PARAMETER=GOOD
+1 1 PARAMETER=BAD
+2 2 PARAMETER=RESERVED
+3 3 MISSING
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/35000.table b/definitions/bufr/tables/0/wmo/12/codetables/35000.table
new file mode 100644
index 0000000..c5e8846
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/35000.table
@@ -0,0 +1,11 @@
+1 1 100-199 RA I CODES
+2 2 200-299 RA II CODES
+3 3 300-399 RA III CODES
+4 4 400-499 RA IV CODES
+5 5 500-599 RA V CODES
+6 6 600-699 RA VI CODES
+7 7 700-799 ANTARCTIC CODES
+8 8 800-999 RESERVED
+9 9 1000-1022 NOT USED
+11 11 000-099 INTERNATIONAL FM CODES
+1023 1023 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/35001.table b/definitions/bufr/tables/0/wmo/12/codetables/35001.table
new file mode 100644
index 0000000..bba0c81
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/35001.table
@@ -0,0 +1,4 @@
+0 0 REAL TIME
+1 1 NEAR-REAL TIME
+2 2 NON-REAL TIME
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/35030.table b/definitions/bufr/tables/0/wmo/12/codetables/35030.table
new file mode 100644
index 0000000..a46775f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/35030.table
@@ -0,0 +1,10 @@
+0 0 NO DISCREPANCIES
+1 1 NON-COMPLIANCE WITH STANDARD AND RECOMMENDED PRACTICES"    AND PROCEDURES INCLUDINGTHOSE OF MONITORING
+2 2 CATALOGUES OF METEOROLOGICAL BULLETINS NOT UPDATED IN A TIME"    LY MANNER
+3 3 INCORRECT ROUTEING DIRECTORIES
+4 4 LACK OF FLEXIBILITY IN THE ROUTEING ARRANGEMENTS
+5 5 DEFICIENCIES IN THE OPERATION OF GTS CENTRES AND CIRCUITS
+6 6 LOSS OF DATA OR DELAYS IN RELAYING DATA ON THE GTS
+7 7 ROUTEING OF DATA DIFFERENT FROM THE ROUTEING PROVIDED IN THE"     PLAN
+8 8 VARIOUS MALPRACTICES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/35031.table b/definitions/bufr/tables/0/wmo/12/codetables/35031.table
new file mode 100644
index 0000000..8c95268
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/35031.table
@@ -0,0 +1,20 @@
+1 1 SUFFICIENT AND ALL OF ACCEPTABLE QUALITY
+2 2 SUFFICIENT BUT PARTLY OF ACCEPTABLE QUALITY
+3 3 INSUFFICIENT BUT ALL OF ACCEPTABLE QUALITY
+4 4 INSUFFICIENT AND OF UNACCEPTABLE QUALITY
+5 5 SOME MESSAGES NOT COMPLETE
+6 6 SUSPECT OR WRONGLY CODED GROUPS COULD NOT BE INTERPRETED CON"    FIDENTLY
+7 7 GROSS CODING ERRORS
+8 8 TRANSMISSION SEQUENTIAL ORDER NOT OBSERVED
+9 9 REPORT COMPLETELY GARBLED AND THUS DISCARDED
+10 10 DEFICIENCIES IDENTIFIED AND RECTIFIED
+11 11 DEFICIENCIES IDENTIFIED BUT NOT RECTIFIED
+12 12 DEFICIENCIES NOT IDENTIFIED
+13 13 MEASURING ERRORS
+14 14 MUTUAL INCONSISTENCY
+15 15 TEMPORAL INCONSISTENCY
+16 16 FORECAST ERROR
+17 17 BIAS
+18 18 IMPROVE SYSTEM OF QUALITY CONTROL
+19 19 EXPAND TRAINING PROGRAMMES
+123 123 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/35032.table b/definitions/bufr/tables/0/wmo/12/codetables/35032.table
new file mode 100644
index 0000000..7f53a05
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/35032.table
@@ -0,0 +1,10 @@
+1 1 DATA GROUPS MISSING DUE TO RADIO FADING
+2 2 DATA GROUPS MISSING DUE TO OUTAGE OF CENTRE
+3 3 DATA GROUPS MISSING DUE TO OUTAGE OF CIRCUIT
+4 4 NON-IMPLEMENTATION OR MAINTENANCE OF REQUIRED RBSN DENSITY
+5 5 SHORTAGE OF QUALIFIED STAFF TO MAN STATIONS
+6 6 LACK OF CONSUMABLES
+7 7 INSTRUMENT FAILURE
+8 8 NON-ADHERENCE TO TELECOMMUNICATION PROCEDURES
+9 9 SOME OBSERVING PROGRAMMES CEASED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/35033.table b/definitions/bufr/tables/0/wmo/12/codetables/35033.table
new file mode 100644
index 0000000..2a3e525
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/35033.table
@@ -0,0 +1,12 @@
+1 1 NO DEFICIENCY
+2 2 OBSERVATIONS NOT MADE REGULARLY
+3 3 OBSERVATIONS NOT MADE AT RIGHT TIME
+4 4 OBSERVATIONS MADE BUT NOT DISSEMINATED
+5 5 OBSERVATIONS MADE AND SENT TO INCORRECT USERS
+6 6 COLLECTION NOT RECEIVED
+7 7 COLLECTION TRANSMITTED LATE
+8 8 COLLECTION NOT TRANSMITTED
+9 9 DIFFICULTIES IN HF PROPAGATION AND SELECTION OF SUITABLE FRE"    QUENCY
+10 10 DIFFICULTIES IN MAINTENANCE OF COMMUNICATION EQUIPMENT AT RE"    MOTE STATIONS
+11 11 NO ALTERNATIVE ARRANGEMENT FOR ROUTEING METEOROLOGICAL OBSER"    VATION
+123 123 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/35034.table b/definitions/bufr/tables/0/wmo/12/codetables/35034.table
new file mode 100644
index 0000000..7297664
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/35034.table
@@ -0,0 +1,7 @@
+1 1 SLIGHT IMPROVEMENT
+2 2 SIGNIFICANT IMPROVEMENT
+3 3 MOST SIGNIFICANT IMPROVEMENT
+4 4 STEADY
+5 5 DECREASING
+6 6 EFFORTS REQUIRED TO IMPROVE NIGHT-TIME OBSERVATIONS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/40011.table b/definitions/bufr/tables/0/wmo/12/codetables/40011.table
new file mode 100644
index 0000000..d4284c9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/40011.table
@@ -0,0 +1,4 @@
+1 1 MEAN SEA SURFACE (MSS) INTERPOLATION FLAG
+2 2 OCEAN TIDE SOLUTION 1 INTERPOLATION FLAG (0= 4 POINTS OVER O"    CEAN, 1=LESS THAN 4 POINTS)
+3 3 OCEAN TIDE SOLUTION 2 INTERPOLATION FLAG (0= 4 POINTS OVER O"    CEAN, 1=LESS THAN 4 POINTS)
+4 4 METEOROLOGICAL DATA INTERPOLATION FLAG (0= 4 POINTS OVER OCE"    AN, 1=LESS THAN 4 POINTS)
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/40012.table b/definitions/bufr/tables/0/wmo/12/codetables/40012.table
new file mode 100644
index 0000000..d8ce14d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/40012.table
@@ -0,0 +1,3 @@
+1 1 18.7 GHZ BRIGHTNESS TEMPERATURE
+2 2 23.8 GHZ BRIGHTNESS TEMPERATURE
+3 3 34 GHZ BRIGHTNESS TEMPERATURE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/40013.table b/definitions/bufr/tables/0/wmo/12/codetables/40013.table
new file mode 100644
index 0000000..f9dfb9a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/40013.table
@@ -0,0 +1,5 @@
+0 0 INTERPOLATION WITH NO GAP BETWEEN JMR DATA
+1 1 INTERPOLATION WITH GAP BETWEEN JMR DATA
+2 2 EXTRAOLATION OF JMR DATA
+3 3 FAILURE OF EXTRAPOLATION AND INTERPOLATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/4059.table b/definitions/bufr/tables/0/wmo/12/codetables/4059.table
new file mode 100644
index 0000000..cee2528
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/4059.table
@@ -0,0 +1,5 @@
+1 1 00 UTC
+2 2 06 UTC
+3 3 12 UTC
+4 4 18 UTC
+5 5 OTHER HOURS
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8001.table b/definitions/bufr/tables/0/wmo/12/codetables/8001.table
new file mode 100644
index 0000000..ec028a1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8001.table
@@ -0,0 +1,7 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 MAXIMUM WIND LEVEL
+5 5 SIGNIFICANT LEVEL, TEMPERATURE AND/OR RELATIVE HUMIDITY
+6 6 SIGNIFICANT LEVEL, WIND
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8002.table b/definitions/bufr/tables/0/wmo/12/codetables/8002.table
new file mode 100644
index 0000000..d929f62
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8002.table
@@ -0,0 +1,13 @@
+0 0 OBSERVING RULES FOR BASE OF LOWEST CLOUD AND CLOUD TYPES OF"    FM 12-IX EXT. SYNOP AND FM 13-IX EXT. SHIP APPLY
+1 1 FIRST NON - CB SIGNIFICANT LAYER
+2 2 SECOND NON - CB SIGNIFICANT LAYER
+3 3 THIRD NON - CB SIGNIFICANT LAYER
+4 4 CUMULONIMBUS LAYER
+5 5 CEILING
+6 6 CLOUD NOT DETECTED BELOW THE FOLLOWING HEIGHT(S)
+7 7 LOW CLOUD
+8 8 MIDDLE CLOUD
+9 9 HIGH CLOUD
+10 10 CLOUD LAYER WITH BASE BELOW THE STATION LEVEL AND TOP"    ABOVE THE STATION LEVEL
+11 11 CLOUD LAYER WITH BASE AND TOP BELOW THE STATION LEVEL
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8003.table b/definitions/bufr/tables/0/wmo/12/codetables/8003.table
new file mode 100644
index 0000000..442be98
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8003.table
@@ -0,0 +1,9 @@
+0 0 SURFACE
+1 1 BASE OF SATELLITE SOUNDING
+2 2 CLOUD TOP
+3 3 TROPOPAUSE
+4 4 PRECIPITABLE WATER
+5 5 SOUNDING RADIANCES
+6 6 MEAN TEMPERATURES
+7 7 OZON
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8004.table b/definitions/bufr/tables/0/wmo/12/codetables/8004.table
new file mode 100644
index 0000000..348d3d1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8004.table
@@ -0,0 +1,6 @@
+2 2 UNSTEADY (UNS)
+3 3 LEVEL FLIGHT, ROUTINE OBSERVATION (LVR)
+4 4 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED (LVW)
+5 5 ASCENDING (ASC)
+6 6 DESCENDING(DES)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8005.table b/definitions/bufr/tables/0/wmo/12/codetables/8005.table
new file mode 100644
index 0000000..2313ea5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8005.table
@@ -0,0 +1,7 @@
+0 0 RESERVED
+1 1 STORM CENTRE
+2 2 OUTER LIMIT OR EDGE OF STORM
+3 3 LOCATION OF MAXIMUM WIND
+4 4 LOCATION OF STORM IN THE PERTURBED ANALYSIS
+5 5 LOCATION OF STORM IN THE ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8006.table b/definitions/bufr/tables/0/wmo/12/codetables/8006.table
new file mode 100644
index 0000000..9f56c62
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8006.table
@@ -0,0 +1,8 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 PROMINENT MAXIMUM LEVEL
+5 5 PROMINENT MINIMUM LEVEL
+6 6 MINIMUM PRESSURE LEVEL
+7 7 RESERVED
+8 8 LEVEL OF UNDETERMINED SIGNIFICANCE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8007.table b/definitions/bufr/tables/0/wmo/12/codetables/8007.table
new file mode 100644
index 0000000..3e4d2cc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8007.table
@@ -0,0 +1,5 @@
+0 0 POINT
+1 1 LINE
+2 2 AREA
+3 3 VOLUME
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8008.table b/definitions/bufr/tables/0/wmo/12/codetables/8008.table
new file mode 100644
index 0000000..2714b5a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8008.table
@@ -0,0 +1,8 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 LEVEL OF BETA RADIATION MAXIMUM
+5 5 LEVEL OF GAMMA RADIATION MAXIMUM
+6 6 MINIMUM PRESSURE LEVEL
+7 7 RESERVED
+8 8 LEVEL OF UNDETERMINED SIGNIFICANCE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8009.table b/definitions/bufr/tables/0/wmo/12/codetables/8009.table
new file mode 100644
index 0000000..153f92a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8009.table
@@ -0,0 +1,16 @@
+0 0 LEVEL FLIGHT, ROUTINE OBSERVATION, UNSTEADY
+1 1 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED, UNSTEADY
+2 2 UNSTEADY (UNS)
+3 3 LEVEL FLIGHT, ROUTINE OBSERVATION (LVR)
+4 4 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED (LVW)
+5 5 ASCENDING (ASC)
+6 6 DESCENDING (DES)
+7 7 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS
+8 8 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS, UNSTEADY
+9 9 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS
+10 10 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS, UNSTEADY
+11 11 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS
+12 12 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS, UNSTEADY
+13 13 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS
+14 14 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS, UNSTEADY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8010.table b/definitions/bufr/tables/0/wmo/12/codetables/8010.table
new file mode 100644
index 0000000..50e8c70
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8010.table
@@ -0,0 +1,13 @@
+0 0 RESERVED
+1 1 BARE SOIL
+2 2 BARE ROCK
+3 3 LAND GRASS COVER
+4 4 WATER (LAKE, SEA)
+5 5 FLOOD WATER UNDERNEATH
+6 6 SNOW
+7 7 ICE
+8 8 RUNWAY OR ROAD
+9 9 SHIP OR PLATFORM DECK IN STEEL
+10 10 SHIP OR PLATFORM DECK IN WOOD
+11 11 SHIP OR PLATFORM DECK PARTLY COVERED WITH RUBBER MAT
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8011.table b/definitions/bufr/tables/0/wmo/12/codetables/8011.table
new file mode 100644
index 0000000..c8ed7cb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8011.table
@@ -0,0 +1,26 @@
+0 0 QUASI-STATIONARY FRONT AT THE SURFACE
+1 1 QUASI-STATIONARY FRONT ABOVE THE SURFACE
+2 2 WARM FRONT AT THE SURFACE
+3 3 WARM FRONT ABOVE THE SURFACE
+4 4 COLD FRONT AT THE SURFACE
+5 5 COLD FRONT ABOVE THE SURFACE
+6 6 OCCLUSION
+7 7 INSTABILITY LINE
+8 8 INTERTROPICAL FRONT
+9 9 CONVERGENCE LINE
+10 10 JET STREAM
+11 11 CLOUD CLEAR
+12 12 CLOUD
+13 13 TURBULENCE
+14 14 STORM
+15 15 AIRFRAME ICING
+16 16 PHENOMENON
+17 17 VOLCANO
+18 18 ATMOSPHERICS
+20 20 SPECIAL CLOUDS
+21 21 THUNDERSTORM (VAL)
+22 22 TROPICAL CYCLONE (VAL)
+23 23 MOUNTAIN WAVE (VAL)
+24 24 DUSTSTORM (VAL)
+25 25 SANDSTORM (VAL)
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8012.table b/definitions/bufr/tables/0/wmo/12/codetables/8012.table
new file mode 100644
index 0000000..0cef734
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8012.table
@@ -0,0 +1,4 @@
+0 0 LAND
+1 1 SEA
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8013.table b/definitions/bufr/tables/0/wmo/12/codetables/8013.table
new file mode 100644
index 0000000..6ea96bf
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8013.table
@@ -0,0 +1,4 @@
+0 0 NIGHT
+1 1 DAY
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8014.table b/definitions/bufr/tables/0/wmo/12/codetables/8014.table
new file mode 100644
index 0000000..da6bb04
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8014.table
@@ -0,0 +1,10 @@
+0 0 10-MINUTE MEAN VALUE - NORMAL VALUE
+1 1 10-MINUTE MEAN VALUE - ABOVE THE UPPER LIMIT FOR ASSESSMENT"    OF RVR (P)
+2 2 10-MINUTE MEAN VALUE - BELOW LOWER LIMIT FOR ASSESSMENT OF R"    VR (M)
+3 3 ONE MINUTE MINIMUM VALUE - NORMAL VALUE
+4 4 ONE MINUTE MINIMUM VALUE - ABOVE THE UPPER LIMIT FOR ASSESSM"    ENT OF RVR (P)
+5 5 ONE MINUTE MINIMUM VALUE - BELOW LOWER LIMIT FOR ASSESSMENT"    OF RVR (M)
+6 6 ONE MINUTE MAXIMUM VALUE - NORMAL VALUE
+7 7 ONE MINUTE MAXIMUM VALUE - ABOVE THE UPPER LIMIT FOR ASSESS"    MENT OF RVR (P)
+8 8 ONE MINUTE MAXIMUM VALUE - BELOW LOWER LIMIT FOR ASSESSMENT"    OF RVR (M)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8016.table b/definitions/bufr/tables/0/wmo/12/codetables/8016.table
new file mode 100644
index 0000000..6b8a1fa
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8016.table
@@ -0,0 +1,5 @@
+0 0 NOSIG
+1 1 BECMG
+2 2 TEMPO
+3 3 FM
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8017.table b/definitions/bufr/tables/0/wmo/12/codetables/8017.table
new file mode 100644
index 0000000..b3156f8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8017.table
@@ -0,0 +1,4 @@
+0 0 FM
+1 1 TL
+2 2 AT
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8018.table b/definitions/bufr/tables/0/wmo/12/codetables/8018.table
new file mode 100644
index 0000000..e4078dc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8018.table
@@ -0,0 +1,5 @@
+1 1 LAND IS PRESENT
+2 2 SURFACE ICE MAP INDICATES ICE IS PRESENT
+11 11 ICE MAP DATA NOT AVAILABLE
+12 12 ATTENUATION MAP DATA NOT AVAILABLE
+17 17 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8021.table b/definitions/bufr/tables/0/wmo/12/codetables/8021.table
new file mode 100644
index 0000000..988dfd0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8021.table
@@ -0,0 +1,32 @@
+0 0 RESERVED
+1 1 TIME SERIES
+2 2 TIME AVERAGED
+3 3 ACCUMULATED
+4 4 FORECAST
+5 5 FORECAST TIME SERIES
+6 6 FORECAST TIME AVERAGED
+7 7 FORECAST ACCUMULATED
+8 8 ENSEMBLE MEAN
+9 9 ENSEMBLE MEAN TIME SERIES
+10 10 ENSEMBLE MEAN TIME AVERAGED
+11 11 ENSEMBLE MEAN ACCUMULATED
+12 12 ENSEMBLE MEAN FORECAST
+13 13 ENSEMBLE MEAN FORECAST TIME SERIES
+14 14 ENSEMBLE MEAN FORECAST AVERAGED
+15 15 ENSEMBLE MEAN FORECAST ACCUMULATED
+16 16 ANALYSIS
+17 17 START OF PHENOMENON
+18 18 RADIOSONDE LAUNCH TIME
+19 19 START OF ORBIT
+20 20 END OF ORBIT
+21 21 TIME OF ASCENDING NODE
+22 22 TIME OF OCCURENCE OF WIND SHIFT
+23 23 MONITORING PERIOD
+24 24 AGREED TIME LIMIT FOR REPORT RECEPTION
+25 25 NOMINAL REPORTING TIME
+26 26 TIME OF LAST KNOWN POSITION
+27 27 FIRST GUESS    --NOT WMO ENTRY
+28 28 START OF SCAN  --NOT WMO ENTRY
+29 29 END OF SCAN    --NOT WMO ENTRY
+30 30 RESERVED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8023.table b/definitions/bufr/tables/0/wmo/12/codetables/8023.table
new file mode 100644
index 0000000..d65ec12
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8023.table
@@ -0,0 +1,17 @@
+2 2 MAXIMUM VALUE
+3 3 MINIMUM VALUE
+4 4 MEAN VALUE
+5 5 MEDIAN VALUE
+6 6 MODAL VALUE
+7 7 MEAN ABSOLUTE ERROR
+9 9 BEST ESTIMATE OF STANDARD DEVIATION (N-1)
+10 10 STANDARD DEVIATION
+11 11 HARMONIC MEAN
+12 12 ROOT MEAN SQUARE VECTOR ERROR
+13 13 ROOT-MEAN-SQUARE
+32 32 PROBABILITY OF GROSS ERROR
+33 33 PRESCRIBED OBSERVATION ERROR
+34 34 PERSISTENCE OBSERVATION ERROR
+35 35 FINAL OBSERVATION ERROR
+36 36 REPRESENTATIVNESS OBSERVATION ERROR
+63 63 MISSING
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8024.table b/definitions/bufr/tables/0/wmo/12/codetables/8024.table
new file mode 100644
index 0000000..067e37d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8024.table
@@ -0,0 +1,15 @@
+2 2 OBSERVED MINUS MAXIMUM
+3 3 OBSERVED MINUS MINIMUM
+4 4 OBSERVED MINUS MEAN
+5 5 OBSERVED MINUS MEDIAN
+6 6 OBSERVED MINUS MODE
+11 11 OBSERVED MINUS CLIMATOLOGY (ANOMALY)
+12 12 OBSERVED MINUS ANALYZED VALUE
+13 13 OBSERVED MINUS INITIALISED ANALYZED VALUE
+14 14 OBSERVED MINUS FORECAST VALUE
+21 21 OBSERVED MINUS INTERPOLATED VALUE
+22 22 OBSERVED MINUS HYDROSTATICALLY CALCULATED VALUE
+32 32 OBSERVED MINUS FIRST GUESS
+33 33 OBSERVED MINUS ANALYSIS
+34 34 OBSERVED MINUS INITIALIZED ANALYSIS
+63 63 MISSING
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8025.table b/definitions/bufr/tables/0/wmo/12/codetables/8025.table
new file mode 100644
index 0000000..5405e33
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8025.table
@@ -0,0 +1,5 @@
+0 0 UNIVERSAL TIME COORDINATED (UTC) MINUS"    LOCAL STANDARD TIME (LST)
+1 1 LOCAL STANDARD TIME
+2 2 UNIVERSAL TIME COORDINATED (UTC) MINUS SATELLITE CLOCK
+5 5 TIME DIFFERENCE FROM EDGE OF PROCESSING SEGMENT
+15 15 MISSING
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8026.table b/definitions/bufr/tables/0/wmo/12/codetables/8026.table
new file mode 100644
index 0000000..d30bb03
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8026.table
@@ -0,0 +1,5 @@
+0 0 AVERAGING KERNEL MATRIX
+1 1 CORRELATION MATRIX
+2 2 LOWER TRIANGULAR CORRELATION MATRIX SQUARE ROOT (L FROM C=LL"    T)
+3 3 INVERSE LOWER TRIANGULAR CORRELATION MATRIX SQUARE ROOT (L**"    -1)
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8029.table b/definitions/bufr/tables/0/wmo/12/codetables/8029.table
new file mode 100644
index 0000000..28b071b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8029.table
@@ -0,0 +1,5 @@
+0 0 OPEN OCEAN OR SEMI-ENCLOSED SEA
+1 1 ENCLOSED SEA OR LAKE
+2 2 CONTINENTAL ICE
+3 3 LAND
+255 255 MISSING
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8033.table b/definitions/bufr/tables/0/wmo/12/codetables/8033.table
new file mode 100644
index 0000000..449fbd4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8033.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 PERCENTAGE CONFIDENCE CALCULATED USING CLOUD FRACTION
+2 2 PERCENTAGE CONFIDENCE CALCULATED USING STANDARD"    DEVIATION OF TEMPERATURE
+3 3 PERCENTAGE CONFIDENCE CALCULATED USING PROBABILITY OF"     THE CLOUD CONTAMINATION
+4 4 PERCENTAGE CONFIDENCE CALCULATED USING NORMALITY OF DISTRIBU"    TION
+127 127 MISSING
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8035.table b/definitions/bufr/tables/0/wmo/12/codetables/8035.table
new file mode 100644
index 0000000..d56a5d7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8035.table
@@ -0,0 +1,8 @@
+0 0 GLOBAL
+1 1 REGIONAL
+2 2 NATIONAL
+3 3 SPECIAL
+4 4 BILATERAL
+5 5 RESERVED
+6 6 RESERVED
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8036.table b/definitions/bufr/tables/0/wmo/12/codetables/8036.table
new file mode 100644
index 0000000..6cfeab5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8036.table
@@ -0,0 +1,8 @@
+0 0 WMO SECRETARIAT
+1 1 WMO
+2 2 RSMC
+3 3 NMC
+4 4 RTH
+5 5 OBSERVING SITE
+6 6 OTHER
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8039.table b/definitions/bufr/tables/0/wmo/12/codetables/8039.table
new file mode 100644
index 0000000..75f133d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8039.table
@@ -0,0 +1,8 @@
+0 0 ISSUE TIME OF FORECAST
+1 1 TIME OF COMMNENCEMENT OF PERIOD OF THE FORECAST
+2 2 TIME OF ENDING OF PERIOD OF THE FORECAST
+3 3 FORECSAT TIME OF MAXIMUM TEMPERATURE
+4 4 FORECSAT TIME OF MINIMUM TEMPERATURE
+5 5 TIME OF BEGINNING OF THE FORECAST
+6 6 TIME OF ENDING OF THE FORECAST
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8040.table b/definitions/bufr/tables/0/wmo/12/codetables/8040.table
new file mode 100644
index 0000000..7c2430e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8040.table
@@ -0,0 +1,43 @@
+0 0 HIGH RESOLUTION DATA SAMPLE
+1 1 WITHIN 20 HPA OF SURFACE
+2 2 PRESSURE LESS THAN 10 HPA (I.E., 9, 8, 7, ETC.)"    WHEN NO OTHER REASON APPLIES
+3 3 BASE PRESSURE LEVEL FOR STABILITY INDEX
+4 4 BEGIN DOUBTFUL TEMPERATURE, HEIGHT DATA
+5 5 BEGIN MISSING DATA (ALL ELEMENTS)
+6 6 BEGIN MISSING RH DATA
+7 7 BEGIN MISSING TEMPERATURE DATA
+8 8 HIGHEST LEVEL REACHED BEFORE BALLOON"    DESCENT BECAUSE OF ICING OR TURBULENCE
+9 9 END DOUBTFUL TEMPERATURE, HEIGHT DATA
+10 10 END MISSING DATA (ALL ELEMENTS)
+11 11 END MISSING RH DATA
+12 12 END MISSING TEMPERATURE DATA
+13 13 ZERO DEGREES C CROSSING(S) FOR RADAT
+14 14 STANDARD PRESSURE LEVEL
+15 15 OPERATOR ADDED LEVEL
+16 16 OPERATOR DELETED LEVEL
+17 17 BALLOON RE-ASCENDED BEYOND PREVIOUS HIGHEST ASCENT LEVEL
+18 18 SIGNIFICANT RH LEVEL
+19 19 RH LEVEL SELECTION TERMINATED
+20 20 SURFACE LEVEL
+21 21 SIGNIFICANT TEMPERATURE LEVEL
+22 22 MANDATORY TEMPERATURE LEVEL
+23 23 FLIGHT TERMINATION LEVEL
+24 24 TROPOPAUSE(S)
+25 25 AIRCRAFT REPORT
+26 26 INTERPOLATED (GENERATED) LEVEL
+27 27 MANDATORY WIND LEVEL
+28 28 SIGNIFICANT WIND LEVEL
+29 29 MAXIMUM WIND LEVEL
+30 30 INCREMENTAL WIND LEVEL (FIXED REGIONAL)
+31 31 INCREMENTAL HEIGHT LEVEL (GENERATED)
+32 32 WIND TERMINATION LEVEL
+33 33 PRESSURE 100 TO 110 HPA, WHEN NO OTHER REASON APPLIES
+40 40 SIGNIFICANT THERMODYNAMIC LEVEL (INVERSION)
+41 41 SIGNIFICANT RH LEVEL ( PER NCDC CRITERIA)
+42 42 SIGNIFICANT TEMPERATURE LEVEL (PER NCDC)
+43 43 BEGIN MISSING WIND DATA
+44 44 END MISSING WIND DATA
+60 60 LEVEL OF 80-KNOT ISOTACH ABOVE JET
+61 61 LEVEL OF 80-KNOT ISOTACH BELOW JET
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8041.table b/definitions/bufr/tables/0/wmo/12/codetables/8041.table
new file mode 100644
index 0000000..3596f95
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8041.table
@@ -0,0 +1,9 @@
+0 0 PARENT SITE
+1 1 OBSERVATION SITE
+2 2 BALLOON MANUFACTURE DATE
+3 3 BALLOON LAUNCH POINT
+4 4 SURFACE OBSERVATION
+5 5 SURFACE OBSERVATION DISPLACEMENT FROM LAUNCH POINT
+6 6 FLIGHT LEVEL OBSERVATION
+7 7 FLIGHT LEVEL TERMINATION POINT
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8042.table b/definitions/bufr/tables/0/wmo/12/codetables/8042.table
new file mode 100644
index 0000000..b98cece
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8042.table
@@ -0,0 +1,13 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 MAXIMUM WIND LEVEL
+5 5 SIGNIFICANT TEMPERATURE LEVEL
+6 6 SIGNIFICANT HUMIDITY LEVEL
+7 7 SIGNIFICANT WIND LEVEL
+8 8 BEGINNING OF MISSING TEMPERATURE DATA
+9 9 END OF MISSING TEMPERATURE DATA
+10 10 BEGINNING OF MISSING HUMIDITY DATA
+11 11 END OF MISSING HUMIDITY DATA
+12 12 BEGINNING OF MISSING WIND DATA
+13 13 END OF MISSING WIND DATA
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8043.table b/definitions/bufr/tables/0/wmo/12/codetables/8043.table
new file mode 100644
index 0000000..6bd94fe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8043.table
@@ -0,0 +1,21 @@
+0 0 OZONE, O3,10028-15-6
+1 1 WATER VAPOUR, H2O, 7732-18-5
+2 2 METHANE, CH4, 74-82-8
+3 3 CARBON DIOXIDE, CO2, 37210-16-5
+4 4 CARBON MONOXIDE, CO, 630-08-0
+5 5 NITROGEN DIOXIDE, NO2, 10102-44-0
+6 6 NITROUS OXIDE, N2O, 10024-97-2
+7 7 FORMALDEHYDE, HCHO, 50-00-0
+8 8 SULFUR DIOXIDE, SO2, 7446-09-5
+9 9 BROMINE OXIDE, BRO, 15656-19-6
+10 10 CHLORINE DIOXIDE, OCLO, 10049-04-4
+11 11 NITROGEN MONOXIDE, NO, 10102-43-9
+12 12 AMMONIA, NH3, 7664-41-7
+25 25 PARTICULATE MATTER < 1.0 MICRONS
+26 26 PARTICULATE MATTER < 2.5 MICRONS
+27 27 PARTICULATE MATTER < 10 MICRONS
+28 28 AEROSOLS GENERIC
+29 29 SMOKE GENERIC
+30 30 CRUSTAL MATERIAL (GENERIC DUST)
+31 31 VOLCANIC ASH
+255 255 MISSING
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8050.table b/definitions/bufr/tables/0/wmo/12/codetables/8050.table
new file mode 100644
index 0000000..4b401f1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8050.table
@@ -0,0 +1,11 @@
+0 0 RESERVED
+1 1 PRESSURE
+2 2 TEMPERATURE
+3 3 EXTREME TEMPERATURE
+4 4 VAPOUR PRESSURE
+5 5 PRECIPITATION
+6 6 SUNSHINE DURATION
+7 7 MAXIMUM TEMPERATURE
+8 8 MINIMUM TEMPERATURE
+9 9 WIND
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8051.table b/definitions/bufr/tables/0/wmo/12/codetables/8051.table
new file mode 100644
index 0000000..5249fe6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8051.table
@@ -0,0 +1,7 @@
+1 1 PRESSURE
+2 2 TEMPERATURE
+3 3 EXTREME TEMPERATURE
+4 4 VAPOUR PRESSURE
+5 5 PRECIPITATION
+6 6 SUNSHINE DURATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8052.table b/definitions/bufr/tables/0/wmo/12/codetables/8052.table
new file mode 100644
index 0000000..f6f02e9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8052.table
@@ -0,0 +1,26 @@
+0 0 MEAN WIND SPEED OVER 10-MINUTES PERIOD OBSERVED OR RECORDED"    EQUAL TO OR MORE THAN 10 M/S
+1 1 MEAN WIND SPEED OVER 10-MINUTES PERIOD OBSERVED OR RECORDED"    EQUAL TO OR MORE THAN 20 M/S
+2 2 MEAN WIND SPEED OVER 10-MINUTES PERIOD OBSERVED OR RECORDED"    EQUAL TO OR MORE THAN 30 M/S
+3 3 MAXIMUM TEMPERATURE LESS THAN 273.2 K
+4 4 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 298.2 K
+5 5 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 303.2 K
+6 6 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 308.2 K
+7 7 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 313.2 K
+8 8 MINIMUM TEMPERATURE LESS THAN 273.2 K
+9 9 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 273.2 K
+10 10 PRECIPITATION EQUAL TO OR MORE THAN   1.0 KG/M**2
+11 11 PRECIPITATION EQUAL TO OR MORE THAN   5.0 KG/M**2
+12 12 PRECIPITATION EQUAL TO OR MORE THAN  10.0 KG/M**2
+13 13 PRECIPITATION EQUAL TO OR MORE THAN  50.0 KG/M**2
+14 14 PRECIPITATION EQUAL TO OR MORE THAN 100.0 KG/M**2
+15 15 PRECIPITATION EQUAL TO OR MORE THAN 150.0 KG/M**2
+16 16 SNOW DEPTH MORE THAN 0.0 M
+17 17 SNOW DEPTH MORE THAN 0.01 M
+18 18 SNOW DEPTH MORE THAN 0.10 M
+19 19 SNOW DEPTH MORE THAN 0.50 M
+20 20 HORIZONTAL VISIBILITY LESS THAN   50 M
+21 21 HORIZONTAL VISIBILITY LESS THAN  100 M
+22 22 HORIZONTAL VISIBILITY LESS THAN 1000 M
+23 23 HAIL
+24 24 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8053.table b/definitions/bufr/tables/0/wmo/12/codetables/8053.table
new file mode 100644
index 0000000..e0c5039
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8053.table
@@ -0,0 +1,4 @@
+0 0 VALUE OCCURED ON ONLY ONE DAY IN THE MONTH
+1 1 VALUE OCCURED ON MORE THAN ONE DAY IN THE MONTH
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8054.table b/definitions/bufr/tables/0/wmo/12/codetables/8054.table
new file mode 100644
index 0000000..71afef9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8054.table
@@ -0,0 +1,3 @@
+0 0 WIND SPEED OR GUST IS AS REPORTED
+1 1 WIND SPEED IS GREATER THAN THAT REPRTED (P IN METAR/TAF/SPEC"    I)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8060.table b/definitions/bufr/tables/0/wmo/12/codetables/8060.table
new file mode 100644
index 0000000..2865fec
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8060.table
@@ -0,0 +1,8 @@
+0 0 RESERVED
+1 1 RANGE
+2 2 AZIMUTH
+3 3 HORIZONTAL
+4 4 VERTICAL
+5 5 NORTH/SOUTH
+6 6 EAST/WEST
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8065.table b/definitions/bufr/tables/0/wmo/12/codetables/8065.table
new file mode 100644
index 0000000..69b80ea
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8065.table
@@ -0,0 +1,4 @@
+0 0 NO SUN-GLINT
+1 1 SUN-GLINT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8066.table b/definitions/bufr/tables/0/wmo/12/codetables/8066.table
new file mode 100644
index 0000000..fcc0252
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8066.table
@@ -0,0 +1,4 @@
+0 0 OPAQUE
+1 1 SEMI-TRANSPARENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8070.table b/definitions/bufr/tables/0/wmo/12/codetables/8070.table
new file mode 100644
index 0000000..2df3629
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8070.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 RESERVED
+2 2 EARTH LOCATED INSTRUMENT COUNTS,"    CALIBRATION COEFFICIENTS AND HOUSEKEEPING (LEVEL 1B)
+3 3 EARTH LOCATED CALIBRATED RADIANCES (LEVEL 1C)
+4 4 MAPPED TO A COMMON FOOTPRINT, EARTH LOCATED"    CALIBRATED RADIANCES (LEVEL 1D)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8072.table b/definitions/bufr/tables/0/wmo/12/codetables/8072.table
new file mode 100644
index 0000000..bd831e1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8072.table
@@ -0,0 +1,4 @@
+0 0 MIXED
+1 1 CLEAR
+2 2 CLOUDY
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8074.table b/definitions/bufr/tables/0/wmo/12/codetables/8074.table
new file mode 100644
index 0000000..5778e65
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8074.table
@@ -0,0 +1,4 @@
+0 0 OPEN OCEAN OR SEMI-ENCLOSED SEA
+1 1 NON-OCEAN LIKE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8075.table b/definitions/bufr/tables/0/wmo/12/codetables/8075.table
new file mode 100644
index 0000000..5f5e3a2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8075.table
@@ -0,0 +1,4 @@
+0 0 ASCENDING ORBIT
+1 1 DESCENDING ORBIT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8076.table b/definitions/bufr/tables/0/wmo/12/codetables/8076.table
new file mode 100644
index 0000000..c63942f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8076.table
@@ -0,0 +1,3 @@
+0 0 KU
+1 1 C
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8077.table b/definitions/bufr/tables/0/wmo/12/codetables/8077.table
new file mode 100644
index 0000000..2c7902b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8077.table
@@ -0,0 +1,7 @@
+0 0 LAND
+1 1 SEA
+2 2 COASTAL
+3 3 OPEN OCEAN OR SEMI-ENCLOSED SEA
+4 4 ENCLOSED SEA OR LAKE
+5 5 CONTINENTAL ICE
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8079.table b/definitions/bufr/tables/0/wmo/12/codetables/8079.table
new file mode 100644
index 0000000..25fc9e1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8079.table
@@ -0,0 +1,9 @@
+0 0 NORMAL ISSUE
+1 1 CORRECTION TO A PREVIOUSLY ISSUED PRODUCT (COR)
+2 2 AMANDMENT TO A PREVIOUSLY ISSUED PRODUCT *AMD)
+3 3 CORRECTION TO A PREVIOUSLY ISSUED AMENDED PRODUCT (COR AMD)
+4 4 CANCELLATION OD A PREVIOUSLY ISSUED PRODUCT (CNL)
+5 5 NO PRODUCT AVAILABLE (NIL)
+6 6 SPECIAL REPORT ( SPECI)
+7 7 CORRECTED SPECIAL REPORT (SPECI COR)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8080.table b/definitions/bufr/tables/0/wmo/12/codetables/8080.table
new file mode 100644
index 0000000..8972f26
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8080.table
@@ -0,0 +1,9 @@
+0 0 TOTAL WATER PRESSURE PROFILE
+1 1 TOTAL WATER TEMPERATURE PROFILE
+2 2 TOTAL WATER SALINITY PROFILE
+3 3 TOTAL WATER CONDUCTIVITY PROFILE
+10 10 WATER PRESSURE AT A LEVEL
+11 11 WATER TEMPERATURE AT A LEVEL
+12 12 SALINITY AT A LEVEL
+20 20 POSITION
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8081.table b/definitions/bufr/tables/0/wmo/12/codetables/8081.table
new file mode 100644
index 0000000..75d2887
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8081.table
@@ -0,0 +1,5 @@
+0 0 SENSOR
+1 1 TRANSMITTER
+2 2 RECEIVER
+3 3 OBSERVING PLATFORM
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8082.table b/definitions/bufr/tables/0/wmo/12/codetables/8082.table
new file mode 100644
index 0000000..1f24db8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8082.table
@@ -0,0 +1,3 @@
+0 0 SENSOR HEIGHT IS NOT MODIFIED
+1 1 SENSOR HEIGHT IS MODIFIED TO STANDARD LEVEL
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8083.table b/definitions/bufr/tables/0/wmo/12/codetables/8083.table
new file mode 100644
index 0000000..b754702
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8083.table
@@ -0,0 +1,9 @@
+1 1 ADJUSTED WITH RESPECT TO REPRESENTATIVE HEIGHT OF SENSOR ABO"    VE LOCAL GROUND (OR DECK OF MARINE PLATFORM)
+2 2 ADJUSTED WITH RESPECT TO REPRESENTATIVE HEIGHT OF SENSOR ABO"    VE WATER SURFACE
+3 3 ADJUSTED WITH RESPECT TO STANDARD SURFACE ROUGHNESS
+4 4 ADJUSTED WITH RESPECT TO WIND SPEED
+5 5 ADJUSTED WITH RESPECT TO TEMPERATURE
+6 6 ADJUSTED WITH RESPECT TO PRESSURE
+7 7 ADJUSTED WITH RESPECT TO HUMIDITY
+8 8 ADJUSTED WITH RESPECT TO EVAPORATION
+9 9 ADJUSTED WITH RESPECT TO WETTING LOSSES
diff --git a/definitions/bufr/tables/0/wmo/12/codetables/8085.table b/definitions/bufr/tables/0/wmo/12/codetables/8085.table
new file mode 100644
index 0000000..de7bb90
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/codetables/8085.table
@@ -0,0 +1,8 @@
+0 0 FORE BEAM
+1 1 MID BEAM
+2 2 AFT BEAM
+3 3 RESERVED
+4 4 RESERVED
+5 5 RESERVED
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/12/element.table b/definitions/bufr/tables/0/wmo/12/element.table
new file mode 100644
index 0000000..cc9082d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/element.table
@@ -0,0 +1,1297 @@
+#code|abbreviation|type|name|unit|scale|reference|width|crex_unit|crex_scale|crex_width
+000001|tableAEntry|string|TABLE A: ENTRY|CCITT IA5|0|0|24|Character|0|3
+000002|tableALine1|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 1|CCITT IA5|0|0|256|Character|0|32
+000003|tableALine2|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 2|CCITT IA5|0|0|256|Character|0|32
+000004|masterTable|string|BUFR/CREX MASTER TABLE|CCITT IA5|0|0|16|Character|0|2
+000005|editionNumber|string|BUFR/CREX EDITION NUMBER|CCITT IA5|0|0|24|Character|0|3
+000006|bufrMasterTableVersionNumber|string|BUFR MASTER TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000007|crexMasterTableVersionNumber|string|CREX MASTER TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000008|bufrLocalTableVersionNumber|string|BUFR LOCAL TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000010|fDescriptorToBeAddedOrDefined|string|F DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|8|Character|0|1
+000011|xDescriptorToBeAddedOrDefined|string|X DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|16|Character|0|2
+000012|yDescriptorToBeAddedOrDefined|string|Y DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|24|Character|0|3
+000013|elementNameLine1|string|ELEMENT NAME, LINE 1|CCITT IA5|0|0|256|Character|0|32
+000014|elementNameLine2|string|ELEMENT NAME, LINE 2|CCITT IA5|0|0|256|Character|0|32
+000015|unitsName|string|UNITS NAME|CCITT IA5|0|0|192|Character|0|24
+000016|unitsScaleSign|string|UNITS SCALE SIGN|CCITT IA5|0|0|8|Character|0|1
+000017|unitsScale|string|UNITS SCALE|CCITT IA5|0|0|24|Character|0|3
+000018|unitsReferenceSign|string|UNITS REFERENCE SIGN|CCITT IA5|0|0|8|Character|0|1
+000019|unitsReferenceValue|string|UNITS REFERENCE VALUE|CCITT IA5|0|0|80|Character|0|10
+000020|elementDataWidth|string|ELEMENT DATA WIDTH|CCITT IA5|0|0|24|Character|0|3
+000030|descriptorDefiningSequence|string|DESCRIPTOR DEFINING SEQUENCE|CCITT IA5|0|0|48|Character|0|6
+001001|blockNumber|long|WMO BLOCK NUMBER|Numeric|0|0|7|Numeric|0|2
+001002|stationNumber|long|WMO STATION NUMBER|Numeric|0|0|10|Numeric|0|3
+001003|regionNumber|table|WMO REGION NUMBER/GEOGRAPHICAL AREA|CODE TABLE|0|0|3|CODE TABLE|0|1
+001004|wmoRegionSubArea|long|WMO REGION SUB-AREA (SEE NOTE 9)|Numeric|0|0|3|Numeric|0|1
+001005|buoyOrPlatformIdentifier|long|BUOY/PLATFORM IDENTIFIER|Numeric|0|0|17|Numeric|0|5
+001006|aircraftFlightNumber|string|AIRCRAFT FLIGHT NUMBER|CCITT IA5|0|0|64|Character|0|8
+001007|satelliteIdentifier|table|SATELLITE IDENTIFIER|CODE TABLE|0|0|10|CODE TABLE|0|4
+001008|aircraftRegistrationNumberOrOtherIdentification|string|AIRCRAFT REGISTRATION NUMBER OR OTHER IDENTIFICATION|CCITT IA5|0|0|64|Character|0|8
+001009|commercialAircraftType|string|TYPE OF COMMERCIAL AIRCRAFT|CCITT IA5|0|0|64|Character|0|8
+001010|stationaryBuoyPlatformIdentifierEGCManBuoys|string|STATIONARY BUOY PLATFORM IDENTIFIER; E.G. C-MAN BUOYS|CCITT IA5|0|0|64|Character|0|8
+001011|shipOrMobileLandStationIdentifier|string|SHIP OR MOBILE LAND STATION IDENTIFIER|CCITT IA5|0|0|72|Character|0|9
+001012|directionOfMotionOfMovingObservingPlatform|long|DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM**|deg|0|0|9|deg|0|3
+001013|movingObservingPlatformSpeed|long|SPEED OF MOTION OF MOVING OBSERVING PLATFORM*|m/s|0|0|10|m/s|0|3
+001014|platformDriftSpeed|double|PLATFORM DRIFT SPEED (HIGH PRECISION)|m/s|2|0|10|m/s|2|4
+001015|stationOrSiteName|string|STATION OR SITE NAME|CCITT IA5|0|0|160|Character|0|20
+001018|shortStationName|string|SHORT STATION OR SITE NAME|CCITT IA5|0|0|40|Character|0|5
+001019|longStationName|string|LONG STATION OR SITE NAME|CCITT IA5|0|0|256|Character|0|32
+001020|wmoRegionSubArea|long|WMO REGION SUB-AREA|Numeric|0|0|4|Numeric|0|2
+001021|synopticFeatureIdentifier|long|SYNOPTIC FEATURE IDENTIFIER|Numeric|0|0|14|Numeric|0|4
+001022|featureName|string|NAME OF FEATURE (SEE NOTE 11)|CCITT IA5|0|0|224|Character|0|28
+001023|observationSequenceNumber|long|OBSERVATION SEQUENCE NUMBER|Numeric|0|0|9|Numeric|0|3
+001025|stormIdentifier|string|STORM IDENTIFIER|CCITT IA5|0|0|24|Character|0|3
+001026|stormName|string|WMO STORM NAME|CCITT IA5|0|0|64|Character|0|8
+001027|longStormName|string|WMO LONG STORM NAME|CCITT IA5|0|0|80|Character|0|10
+001030|numericalModelIdentifier|string|NUMERICAL MODEL IDENTIFIER|CCITT IA5|0|0|128|Character|0|16
+001031|centre|table|IDENTIFICATION OF ORIGINATING/GENERATING CENTRE (SEE NOTE 10)|CODE TABLE|0|0|16|CODE TABLE|0|5
+001032|generatingApplication|table|GENERATING APPLICATION|CODE TABLE|0|0|8|CODE TABLE|0|3
+001033|centre|table|IDENTIFICATION OF ORIGINATING/GENERATING CENTRE|CODE TABLE|0|0|8|CODE TABLE|0|3
+001034|subCentre|table|IDENTIFICATION OF ORIGINATING/GENERATING SUB-CENTRE|CODE TABLE|0|0|8|CODE TABLE|0|3
+001035|centre|table|ORIGINATING CENTRE|Common CODE TABLE C-11|0|0|16|Common CODE TABLE C-11|0|5
+001036|agencyInChargeOfOperatingObservingPlatform|table|AGENCY IN CHARGE OF OPERATING THE OBSERVING PLATFORM|CODE TABLE|0|0|20|CODE TABLE|0|7
+001037|sigmetSequenceIdentifier|string|SIGMET SEQUENCE IDENTIFIER|CCITT IA5|0|0|24|Character|0|3
+001041|absolutePlatformVelocityFirstComponent|double|ABSOLUTE PLATFORM VELOCITY - FIRST COMPONENT (SEE NOTE 6)|m/s|5|-1073741824|31|m/s|5|10
+001042|absolutePlatformVelocitySecondComponent|double|ABSOLUTE PLATFORM VELOCITY - SECOND COMPONENT (SEE NOTE 6)|m/s|5|-1073741824|31|m/s|5|10
+001043|absolutePlatformVelocityThirdComponent|double|ABSOLUTE PLATFORM VELOCITY - THIRD COMPONENT (SEE NOTE 6)|m/s|5|-1073741824|31|m/s|5|10
+001050|platformTransmitterIdNumber|long|PLATFORM TRANSMITTER ID NUMBER|Numeric|0|0|17|Numeric|0|6
+001051|platformTransmitterIdNumber|string|PLATFORM TRANSMITTER ID NUMBER|CCITT IA5|0|0|96|Character|0|12
+001060|aircraftReportingPointBeaconIdentifier|string|AIRCRAFT REPORTING POINT (BEACON IDENTIFIER)|CCITT IA5|0|0|64|Character|0|8
+001062|shortIcaoLocationIndicator|string|SHORT ICAO LOCATION INDICATOR|CCITT IA5|0|0|32|Character|0|4
+001063|icaoLocationIndicator|string|ICAO LOCATION INDICATOR|CCITT IA5|0|0|64|Character|0|8
+001064|runwayDesignator|string|RUNWAY DESIGNATOR|CCITT IA5|0|0|32|Character|0|4
+001065|icaoRegionIdentifier|string|ICAO REGION IDENTIFIER|CCITT IA5|0|0|256|Character|0|32
+001075|tideStationIdentification|string|TIDE STATION IDENTIFICATION|CCITT IA5|0|0|40|Character|0|5
+001080|shipLineNumberAccordingToSoop|string|SHIP LINE NUMBER ACCORDING TO SOOP|CCITT IA5|0|0|32|Character|0|4
+001081|radiosondeSerialNumber|string|RADIOSONDE SERIAL NUMBER|CCITT IA5|0|0|160|Character|0|20
+001082|radiosondeAscensionNumber|long|RADIOSONDE ASCENSION NUMBER (SEE NOTE 12)|Numeric|0|0|14|Numeric|0|4
+001083|radiosondeReleaseNumber|long|RADIOSONDE RELEASE NUMBER (SEE NOTE 12)|Numeric|0|0|3|Numeric|0|1
+001085|observingPlatformManufacturerModel|string|OBSERVING PLATFORM MANUFACTURER'S MODEL|CCITT IA5|0|0|160|Character|0|20
+001086|observingPlatformManufacturerSerialNumber|string|OBSERVING PLATFORM MANUFACTURER'S SERIAL NUMBER|CCITT IA5|0|0|256|Character|0|32
+001087|marineObservingPlatformIdentifier|long|WMO MARINE OBSERVING PLATFORM EXTENDED IDENTIFIER|Numeric|0|0|23|Numeric|0|7
+001090|techniqueForMakingUpInitialPerturbations|table|TECHNIQUE FOR MAKING UP INITIAL PERTURBATIONS|CODE TABLE|0|0|8|CODE TABLE|0|3
+001091|ensembleMemberNumber|long|ENSEMBLE MEMBER NUMBER|Numeric|0|0|10|Numeric|0|4
+001092|ensembleForecastType|table|TYPE OF ENSEMBLE FORECAST|CODE TABLE|0|0|8|CODE TABLE|0|3
+001093|balloonLotNumber|string|BALLOON LOT NUMBER|CCITT IA5|0|0|96|Character|0|12
+001094|wbanNumber|long|WBAN NUMBER|Numeric|0|0|17|Numeric|0|5
+001095|observerIdentification|string|OBSERVER IDENTIFICATION|CCITT IA5|0|0|32|Character|0|4
+001096|stationAcquisition|string|STATION ACQUISITION|CCITT IA5|0|0|160|Character|0|20
+001101|stateIdentifier|table|STATE IDENTIFIER|CODE TABLE|0|0|10|CODE TABLE|0|3
+001102|stationNumber|long|NATIONAL STATION IDENTIFIER|Numeric|0|0|30|Numeric|0|9
+001124|gridPointIdentifier|long|GRID POINT IDENTIFIER|Numeric|0|0|24|Numeric|0|8
+001144|snapshotIdentifier|long|SNAPSHOT IDENTIFIER|Numeric|0|0|31|Numeric|0|10
+002001|stationType|table|TYPE OF STATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002002|instrumentationForWindMeasurement|flag|TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+002003|measuringEquipmentType|table|TYPE OF MEASURING EQUIPMENT USED|CODE TABLE|0|0|4|CODE TABLE|0|2
+002004|typeOfInstrumentationForEvaporationMeasurement|table|TYPE OF INSTRUMENTATION FOR EVAPORATION MEASUREMENT OR TYPE OF C|CODE TABLE|0|0|4|CODE TABLE|0|2
+002005|temperatureObservationPrecision|double|PRECISION OF TEMPERATURE OBSERVATION|K|2|0|7|K|2|3
+002011|radiosondeType|table|RADIOSONDE TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+002012|radiosondeComputationalMethod|table|RADIOSONDE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002013|solarAndInfraredRadiationCorrection|table|SOLAR AND INFRARED RADIATION CORRECTION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002014|trackingTechniqueOrStatusOfSystem|table|TRACKING TECHNIQUE/STATUS OF SYSTEM USED|CODE TABLE|0|0|7|CODE TABLE|0|3
+002015|radiosondeCompleteness|table|RADIOSONDE COMPLETENESS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002016|radiosondeConfiguration|flag|RADIOSONDE CONFIGURATION|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+002019|satelliteInstruments|table|SATELLITE INSTRUMENTS|CODE TABLE|0|0|11|CODE TABLE|0|4
+002020|satelliteClassification|table|SATELLITE CLASSIFICATION|CODE TABLE|0|0|9|CODE TABLE|0|3
+002021|satelliteInstrumentDataUsedInProcessing|flag|SATELLITE INSTRUMENT DATA USED IN PROCESSING|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+002022|satelliteDataProcessingTechnique|flag|SATELLITE DATA-PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002023|satelliteDerivedWindComputationMethod|table|SATELLITE DERIVED WIND COMPUTATION METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002024|meanHumidityComputationalMethod|table|INTEGRATED MEAN HUMIDITY COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002025|satelliteChannelsUsedInComputation|flag|SATELLITE CHANNEL(S) USED IN COMPUTATION|FLAG TABLE|0|0|25|FLAG TABLE|0|9
+002026|crossTrackResolution|double|CROSS TRACK RESOLUTION|m|2|0|12|m|2|4
+002027|alongTrackResolution|double|ALONG TRACK RESOLUTION|m|2|0|12|m|2|4
+002028|segmentSizeAtNadirInXDirection|long|SEGMENT SIZE AT NADIR IN X DIRECTION|m|0|0|18|m|0|6
+002029|segmentSizeAtNadirInYDirection|long|SEGMENT SIZE AT NADIR IN Y DIRECTION|m|0|0|18|m|0|6
+002030|methodOfCurrentMeasurement|table|METHOD OF CURRENT MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002031|durationAndTimeOfCurrentMeasurement|table|DURATION AND TIME OF CURRENT MEASUREMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+002032|indicatorForDigitization|table|INDICATOR FOR DIGITIZATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002033|methodOfSalinityOrDepthMeasurement|table|METHOD OF SALINITY/DEPTH MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002034|drogueType|table|DROGUE TYPE|CODE TABLE|0|0|5|CODE TABLE|0|2
+002035|cableLength|long|CABLE LENGTH|m|0|0|9|m|0|3
+002036|buoyType|table|BUOY TYPE|CODE TABLE|0|0|2|CODE TABLE|0|1
+002037|methodOfTidalObservation|table|METHOD OF TIDAL OBSERVATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+002038|methodOfWaterTemperatureAndOrOrSalinityMeasurement|table|METHOD OF WATER TEMPERATURE AND/OR SALINITY MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002039|methodOfWetBulbTemperatureMeasurement|table|METHOD OF WET-BULB TEMPERATURE MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002040|methodOfRemovingVelocityAndMotionOfPlatformFromCurrent|table|METHOD OF REMOVING VELOCITY AND MOTION OF PLATFORM FROM CURRENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002041|methodForEstimatingReportsRelatedToSynopticFeatures|table|METHOD FOR ESTIMATING REPORTS RELATED TO SYNOPTIC FEATURES|CODE TABLE|0|0|6|CODE TABLE|0|2
+002042|indicatorForSeaSurfaceCurrentSpeed|table|INDICATOR FOR SEA SURFACE CURRENT SPEED|CODE TABLE|0|0|2|CODE TABLE|0|1
+002044|indicatorForMethodOfCalculatingSpectralWaveData|table|INDICATOR FOR METHOD OF CALCULATING SPECTRAL WAVE DATA|CODE TABLE|0|0|4|CODE TABLE|0|2
+002045|platformType|table|INDICATOR FOR TYPE OF PLATFORM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002046|waveMeasurementInstrumentation|table|WAVE MEASUREMENT INSTRUMENTATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002048|satelliteSensorIndicator|table|SATELLITE SENSOR INDICATOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002049|geostationarySatelliteDataProcessingTechnique|flag|GEOSTATIONARY SATELLITE DATA-PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002050|geostationarySounderSatelliteChannels|flag|GEOSTATIONARY SOUNDER SATELLITE CHANNELS USED|FLAG TABLE|0|0|20|FLAG TABLE|0|7
+002051|indicatorToSpecifyObservingMethodForExtremeTemperatures|table|INDICATOR TO SPECIFY OBSERVING METHOD FOR EXTREME TEMPERATURES|CODE TABLE|0|0|4|CODE TABLE|0|2
+002052|geostationaryImagerSatelliteChannels|flag|GEOSTATIONARY IMAGER SATELLITE CHANNELS USED|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+002053|goesBrightnessTemperatureCharacteristics|table|GOES-I/M BRIGHTNESS TEMPERATURE CHARACTERISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002054|goesSoundingsParameter|table|GOES-I/M SOUNDINGS PARAMETER CHARACTERISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002055|geostationarySoundingsStatisticalParameters|table|GEOSTATIONARY SOUNDINGS STATISTICAL PARAMETERS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002056|geostationarySoundingsAccuracyStatistics|table|GEOSTATIONARY SOUNDINGS ACCURACY STATISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002057|originOfFirstGuessInformationForGoesIOrMSoundings|table|ORIGIN OF FIRST GUESS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002058|validTimesOfFirstGuessInformationForGoesIOrMSoundings|table|VALID TIMES OF FIRST GUESS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002059|originOfAnalysisInformationForGoesIOrMSoundings|table|ORIGIN OF ANALYSIS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002060|originOfSurfaceInformationForGoesIOrMSoundings|table|ORIGIN OF SURFACE INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002061|aircraftNavigationalSystem|table|AIRCRAFT NAVIGATIONAL SYSTEM|CODE TABLE|0|0|3|CODE TABLE|0|1
+002062|aircraftDataRelaySystemType|table|TYPE OF AIRCRAFT DATA RELAY SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002063|aircraftRollAngle|double|AIRCRAFT ROLL ANGLE|deg|2|-18000|16|deg|2|5
+002064|aircraftRollAngleQuality|table|AIRCRAFT ROLL ANGLE QUALITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+002065|acarsGroundReceivingStation|string|ACARS GROUND RECEIVING STATION|CCITT IA5|0|0|40|Character|0|5
+002066|radiosondeGroundReceivingSystem|table|RADIOSONDE GROUND RECEIVING SYSTEM|CODE TABLE|0|0|6|CODE TABLE|0|2
+002067|radiosondeOperatingFrequency|long|RADIOSONDE OPERATING FREQUENCY|Hz|-5|0|15|Hz|-5|5
+002070|originalSpecificationOfLatitudeOrLongitude|table|ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002071|spectrographicWavelength|double|SPECTROGRAPHIC WAVELENGTH|m|13|0|30|m|13|10
+002080|balloonManufacturer|table|BALLOON MANUFACTURER|CODE TABLE|0|0|6|CODE TABLE|0|2
+002081|balloonType|table|TYPE OF BALLOON|CODE TABLE|0|0|5|CODE TABLE|0|2
+002082|weightOfBalloon|double|WEIGHT OF BALLOON|kg|3|0|12|kg|3|4
+002083|balloonShelterType|table|TYPE OF BALLOON SHELTER|CODE TABLE|0|0|4|CODE TABLE|0|2
+002084|typeOfGasUsedInBalloon|table|TYPE OF GAS USED IN BALLOON|CODE TABLE|0|0|4|CODE TABLE|0|2
+002085|amountOfGasUsedInBalloon|double|AMOUNT OF GAS USED IN BALLOON|kg|3|0|13|kg|3|4
+002086|balloonFlightTrainLength|double|BALLOON FLIGHT TRAIN LENGTH|m|1|0|10|m|1|4
+002091|entrySensor4Or20Ma|double|ENTRY SENSOR 4/20 MA|A|4|0|10|A|4|3
+002095|pressureSensorType|table|TYPE OF PRESSURE SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002096|temperatureSensorType|table|TYPE OF TEMPERATURE SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002097|humiditySensorType|table|TYPE OF HUMIDITY SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002098|typeOfWaveSensor|table|TYPE OF WAVE SENSOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002099|polarization|table|POLARISATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+002100|radarConstant|double|RADAR CONSTANT|dB|1|0|12|dB|1|4
+002101|antennaType|table|TYPE OF ANTENNA|CODE TABLE|0|0|4|CODE TABLE|0|2
+002102|antennaHeightAboveTowerBase|long|ANTENNA HEIGHT ABOVE TOWER BASE|m|0|0|8|m|0|3
+002103|radome|flag|RADOME|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+002104|antennaPolarization|table|ANTENNA POLARISATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002105|maximumAntennaGain|long|MAXIMUM ANTENNA GAIN|dB|0|0|6|dB|0|2
+002106|3DbBeamwidth|double|3-DB BEAMWIDTH|deg|1|0|6|deg|1|2
+002107|sidelobeSuppression|long|SIDELOBE SUPPRESSION|dB|0|0|6|dB|0|2
+002108|crosspolDiscriminationOnAxis|long|CROSSPOL DISCRIMINATION (ON AXIS)|dB|0|0|6|dB|0|2
+002109|antennaSpeedAzimuth|double|ANTENNA SPEED (AZIMUTH)|deg/s|2|0|12|deg/s|2|4
+002110|antennaSpeedElevation|double|ANTENNA SPEED (ELEVATION)|deg/s|2|0|12|deg/s|2|4
+002111|radarIncidenceAngle|double|RADAR INCIDENCE ANGLE|deg|1|0|10|deg|1|4
+002112|radarLookAngle|double|RADAR LOOK ANGLE|deg|1|0|12|deg|1|4
+002113|numberOfAzimuthLooks|long|NUMBER OF AZIMUTH LOOKS|Numeric|0|0|4|Numeric|0|2
+002114|antennaEffectiveSurfaceArea|long|ANTENNA EFFECTIVE SURFACE AREA|m2|0|0|15|m2|0|5
+002115|surfaceObservingEquipmentType|table|TYPE OF SURFACE OBSERVING EQUIPMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+002116|percentageOf320MhzBandProcessed|long|PERCENTAGE OF 320 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002117|percentageOf80MhzBandProcessed|long|PERCENTAGE OF 80 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002118|percentageOf20MhzBandProcessed|long|PERCENTAGE OF 20 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002119|ra2InstrumentOperations|table|RA-2 INSTRUMENT OPERATIONS|CODE TABLE|0|0|3|CODE TABLE|0|1
+002120|oceanWaveFrequency|double|OCEAN WAVE FREQUENCY|Hz|3|0|10|Hz|3|4
+002121|meanFrequency|long|MEAN FREQUENCY|Hz|-8|0|7|Hz|-8|3
+002122|frequencyAgilityRange|long|FREQUENCY AGILITY RANGE|Hz|-6|-128|8|Hz|-6|3
+002123|peakPower|long|PEAK POWER|W|-4|0|7|W|-4|3
+002124|averagePower|long|AVERAGE POWER|W|-1|0|7|W|-1|3
+002125|pulseRepetitionFrequency|long|PULSE REPETITION FREQUENCY|Hz|-1|0|8|Hz|-1|3
+002126|pulseWidth|double|PULSE WIDTH|s|7|0|6|s|7|2
+002127|receiverIntermediateFrequency|long|RECEIVER INTERMEDIATE FREQUENCY|Hz|-6|0|7|Hz|-6|3
+002128|intermediateFrequencyBandwidth|long|INTERMEDIATE FREQUENCY BANDWIDTH|Hz|-5|0|6|Hz|-5|2
+002129|minimumDetectableSignal|long|MINIMUM DETECTABLE SIGNAL|dB|0|-150|5|dB|0|3
+002130|dynamicRange|long|DYNAMIC RANGE|dB|0|0|7|dB|0|3
+002131|sensitivityTimeControl|flag|SENSITIVITY TIME CONTROL (STC)|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+002132|azimuthPointingAccuracy|double|AZIMUTH POINTING ACCURACY|deg|2|0|6|deg|2|2
+002133|elevationPointingAccuracy|double|ELEVATION POINTING ACCURACY|deg|2|0|6|deg|2|2
+002134|antennaBeamAzimuth|double|ANTENNA BEAM AZIMUTH|deg|2|0|16|deg|2|5
+002135|antennaElevation|double|ANTENNA ELEVATION|deg|2|-9000|15|deg|2|5
+002136|rangeProcessedByRangeAttenuationCorrection|long|RANGE PROCESSED BY RANGE ATTENUATION CORRECTION|m|-3|0|16|m|-3|5
+002140|satelliteRadarBeamAzimuthAngle|long|SATELLITE RADAR BEAM AZIMUTH ANGLE|deg|0|0|9|deg|0|3
+002141|measurementType|string|MEASUREMENT TYPE|CCITT IA5|0|0|24|Character|0|3
+002142|ozoneInstrument|string|OZONE INSTRUMENT SERIAL NUMBER/ IDENTIFICATION|CCITT IA5|0|0|32|Character|0|4
+002143|ozoneInstrumentType|table|OZONE INSTRUMENT TYPE|CODE TABLE|0|0|7|CODE TABLE|0|3
+002144|lightSourceTypeForBrewerSpectrophotometer|table|LIGHT SOURCE TYPE FOR BREWER SPECTRO PHOTOMETER|CODE TABLE|0|0|4|CODE TABLE|0|2
+002145|wavelengthSettingForDobsonInstruments|table|WAVE LENGTH SETTING FOR DOBSON INSTRUMENTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002146|sourceConditionsForDobsonInstruments|table|SOURCE CONDITIONS FOR DOBSON INSTRUMENTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002148|dataCollectionLocationSystem|table|DATA COLLECTION AND/OR LOCATION SYSTEM|CODE TABLE|0|0|5|CODE TABLE|0|2
+002149|dataBuoyType|table|TYPE OF DATA BUOY|CODE TABLE|0|0|6|CODE TABLE|0|2
+002150|tovsOrAtovsOrAvhrrInstrumentationChannelNumber|table|TOVS/ATOVS/AVHRR INSTRUMENTATION CHANNEL NUMBER|CODE TABLE|0|0|6|CODE TABLE|0|2
+002151|radiometerIdentifier|table|RADIOMETER IDENTIFIER|CODE TABLE|0|0|11|CODE TABLE|0|4
+002152|satelliteInstrumentUsedInDataProcessing|flag|SATELLITE INSTRUMENT USED IN DATA PROCESSING(6)|FLAG TABLE|0|0|31|FLAG TABLE|0|10
+002153|satelliteChannelCentreFrequency|long|SATELLITE CHANNEL CENTRE FREQUENCY|Hz|-8|0|26|Hz|-8|8
+002154|satelliteChannelBandWidth|long|SATELLITE CHANNEL BAND WIDTH|Hz|-8|0|26|Hz|-8|8
+002156|percentageOfValidKuOceanRetrackerMeasurements|long|PERCENTAGE OF VALID KU OCEAN RETRACKER MEASUREMENTS|%|0|0|7|%|0|3
+002157|percentageOfValidSOceanRetrackerMeasurements|long|PERCENTAGE OF VALID S OCEAN RETRACKER MEASUREMENTS|%|0|0|7|%|0|3
+002158|ra2Instrument|flag|RA-2 INSTRUMENT|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+002159|mwrInstrument|flag|MWR INSTRUMENT|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002160|radarWaveLength|table|WAVE LENGTH OF THE RADAR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002163|heightAssignmentMethod|table|HEIGHT ASSIGNMENT METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002164|tracerCorrelationMethod|table|TRACER CORRELATION METHOD|CODE TABLE|0|0|3|CODE TABLE|0|1
+002166|radianceType|table|RADIANCE TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002167|radianceComputationalMethod|table|RADIANCE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002168|hydrostaticPressureOfLowerEndOfCableThermistorString|long|HYDROSTATIC PRESSURE OF LOWER END OF CABLE (THERMISTOR STRING)|Pa|-3|0|16|kPa|0|5
+002169|anemometerType|table|ANEMOMETER TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002172|productTypeForRetrievedAtmosphericGases|table|PRODUCT TYPE FOR RETRIEVED ATMOSPHERIC GASES|CODE TABLE|0|0|8|CODE TABLE|0|3
+002173|squareOfOffNadirAngle|double|SQUARE OF THE OFF NADIR ANGLE (7)|deg2|4|0|10|deg2|4|4
+002174|meanAcrossTrackPixelNumber|long|MEAN ACROSS TRACK PIXEL NUMBER|Numeric|0|0|9|Numeric|0|3
+002175|methodOfPrecipitationMeasurement|table|METHOD OF PRECIPITATION MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002176|methodOfStateOfGroundMeasurement|table|METHOD OF STATE OF GROUND MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002177|methodOfSnowDepthMeasurement|table|METHOD OF SNOW DEPTH MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002178|methodOfLiquidContentMeasurementOfPrecipitation|table|METHOD OF LIQUID CONTENT MEASUREMENT OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002179|skyConditionAlgorithmType|table|TYPE OF SKY CONDITION ALGORITHM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002180|mainPresentWeatherDetectingSystem|table|MAIN PRESENT WEATHER DETECTING SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002181|supplementaryPresentWeatherSensor|flag|SUPPLEMENTARY PRESENT WEATHER SENSOR|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+002182|visibilityMeasurementSystem|table|VISIBILITY MEASUREMENT SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002183|cloudDetectionSystem|table|CLOUD DETECTION SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002184|lightningDetectionSensorType|table|TYPE OF LIGHTNING DETECTION SENSOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002185|methodOfEvaporationMeasurement|table|METHOD OF EVAPORATION MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002186|capabilityToDetectPrecipitationPhenomena|flag|CAPABILITY TO DETECT PRECIPITATION PHENOMENA|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+002187|capabilityToDetectOtherWeatherPhenomena|flag|CAPABILITY TO DETECT OTHER WEATHER PHENOMENA|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+002188|capabilityToDetectObscuration|flag|CAPABILITY TO DETECT OBSCURATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+002189|capabilityToDiscriminateLightningStrikes|flag|CAPABILITY TO DISCRIMINATE LIGHTNING STRIKES|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+002190|lagrangianDrifterSubmergenceTimeSubmerged|long|LAGRANGIAN DRIFTER SUBMERGENCE (% TIME SUBMERGED)|%|0|0|7|%|0|3
+004001|year|long|YEAR|a|0|0|12|a|0|4
+004002|month|long|MONTH|mon|0|0|4|mon|0|2
+004003|day|long|DAY|d|0|0|6|d|0|2
+004004|hour|long|HOUR|h|0|0|5|h|0|2
+004005|minute|long|MINUTE|min|0|0|6|min|0|2
+004006|second|long|SECOND|s|0|0|6|s|0|2
+004007|secondsWithinAMinuteMicrosecond|double|SECONDS WITHIN A MINUTE (MICROSECOND ACCURACY)|s|6|0|26|s|6|8
+004011|timeIncrement|long|TIME INCREMENT|a|0|-1024|11|a|0|4
+004012|timeIncrement|long|TIME INCREMENT|mon|0|-1024|11|mon|0|4
+004013|timeIncrement|long|TIME INCREMENT|d|0|-1024|11|d|0|4
+004014|timeIncrement|long|TIME INCREMENT|h|0|-1024|11|h|0|4
+004015|timeIncrement|long|TIME INCREMENT|min|0|-2048|12|min|0|4
+004016|timeIncrement|long|TIME INCREMENT|s|0|-4096|13|s|0|4
+004017|referenceTimePeriodForAccumulatedOrExtremeData|long|REFERENCE TIME PERIOD FOR ACCUMULATED OR EXTREME DATA|min|0|-1440|12|min|0|4
+004021|timePeriod|long|TIME PERIOD OR DISPLACEMENT|a|0|-1024|11|a|0|4
+004022|timePeriod|long|TIME PERIOD OR DISPLACEMENT|mon|0|-1024|11|mon|0|4
+004023|timePeriod|long|TIME PERIOD OR DISPLACEMENT|d|0|-1024|11|d|0|4
+004024|timePeriod|long|TIME PERIOD OR DISPLACEMENT|h|0|-2048|12|h|0|4
+004025|timePeriod|long|TIME PERIOD OR DISPLACEMENT|min|0|-2048|12|min|0|4
+004026|timePeriod|long|TIME PERIOD OR DISPLACEMENT|s|0|-4096|13|s|0|4
+004031|durationOfTimeRelatingToFollowingValue|long|DURATION OF TIME RELATING TO FOLLOWING VALUE|h|0|0|8|h|0|3
+004032|durationOfTimeRelatingToFollowingValue|long|DURATION OF TIME RELATING TO FOLLOWING VALUE|min|0|0|6|min|0|2
+004041|timeDifferenceUtcLmt|long|TIME DIFFERENCE, UTC -LMT (SEE NOTE 6)|min|0|-1440|12|min|0|4
+004043|dayOfYear|long|DAY OF THE YEAR|d|0|0|9|d|0|3
+004051|principalTimeOfDailyReadingOfMaximumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MAXIMUM TEMPERATURE|h|0|0|5|h|0|2
+004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2
+004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2
+004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
+004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
+004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
+004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
+004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2
+004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
+005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005012|latitudeIncrement|double|LATITUDE INCREMENT (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005015|latitudeDisplacement|double|LATITUDE DISPLACEMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005016|latitudeDisplacement|double|LATITUDE DISPLACEMENT (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005021|bearingOrAzimuth|double|BEARING OR AZIMUTH|deg|2|0|16|deg|2|5
+005022|solarAzimuth|double|SOLAR AZIMUTH|deg|2|0|16|deg|2|5
+005023|sunToSatelliteAzimuthDifference|double|SUN TO SATELLITE AZIMUTH DIFFERENCE|deg|1|-1800|12|deg|1|4
+005030|directionSpectral|long|DIRECTION (SPECTRAL)|deg|0|0|12|deg|0|4
+005031|rowNumber|long|ROW NUMBER|Numeric|0|0|12|Numeric|0|4
+005033|pixelSizeOnHorizontal1|long|PIXEL SIZE ON HORIZONTAL - 1|m|-1|0|16|m|-1|5
+005034|alongTrackRowNumber|long|ALONG TRACK ROW NUMBER|Numeric|0|0|11|Numeric|0|4
+005036|shipTransectNumberAccordingToSoop|long|SHIP TRANSECT NUMBER ACCORDING TO SOOP|Numeric|0|0|7|Numeric|0|2
+005040|orbitNumber|long|ORBIT NUMBER|Numeric|0|0|24|Numeric|0|8
+005041|scanLineNumber|long|SCAN LINE NUMBER|Numeric|0|0|8|Numeric|0|3
+005042|channelNumber|long|CHANNEL NUMBER|Numeric|0|0|6|Numeric|0|2
+005043|fieldOfViewNumber|long|FIELD OF VIEW NUMBER|Numeric|0|0|8|Numeric|0|3
+005044|satelliteCycleNumber|long|SATELLITE CYCLE NUMBER|Numeric|0|0|11|Numeric|0|4
+005052|channelNumberIncrement|long|CHANNEL NUMBER INCREMENT|Numeric|0|0|5|Numeric|0|2
+005053|fieldOfViewNumberIncrement|long|FIELD OF VIEW NUMBER INCREMENT|Numeric|0|0|5|Numeric|0|2
+005060|yAngularPositionFromCentreOfGravity|double|Y ANGULAR POSITION FROM CENTRE OF GRAVITY|deg|6|-8000000|24|deg|6|8
+005061|zAngularPositionFromCentreOfGravity|double|Z ANGULAR POSITION FROM CENTRE OF GRAVITY|deg|6|-8000000|24|deg|6|8
+006001|longitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006002|longitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006011|longitudeIncrement|double|LONGITUDE INCREMENT (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006012|longitudeIncrement|double|LONGITUDE INCREMENT (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006015|longitudeDisplacement|double|LONGITUDE DISPLACEMENT (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006016|longitudeDisplacement|double|LONGITUDE DISPLACEMENT (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006021|distance|long|DISTANCE|m|-1|0|13|m|-1|4
+006030|waveNumberSpectral|double|WAVE NUMBER (SPECTRAL)|rad/m|5|0|13|rad/m|5|4
+006031|columnNumber|long|COLUMN NUMBER|Numeric|0|0|12|Numeric|0|4
+006033|pixelSizeOnHorizontal2|long|PIXEL SIZE ON HORIZONTAL - 2|m|-1|0|16|m|-1|5
+006034|crossTrackCellNumber|long|CROSS-TRACK CELL NUMBER|Numeric|0|0|7|Numeric|0|3
+006040|radiusOfConfidence|long|RADIUS OF CONFIDENCE|m|0|0|13|m|0|4
+007001|heightOfStation|long|HEIGHT OF STATION (SEE NOTE 1)|m|0|-400|15|m|0|5
+007002|height|long|HEIGHT OR ALTITUDE|m|-1|-40|16|m|-1|5
+007003|geopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|m2 s-2|-1|6
+007004|pressure|long|PRESSURE|Pa|-1|0|14|Pa|-1|5
+007005|heightIncrement|long|HEIGHT INCREMENT|m|0|-400|12|m|0|4
+007006|heightAboveStation|long|HEIGHT ABOVE STATION|m|0|0|15|m|0|5
+007007|height|long|HEIGHT|m|0|-1000|17|m|0|6
+007008|geopotential|long|GEOPOTENTIAL|m2 s-2|0|-10000|20|m2 s-2|0|7
+007009|geopotentialHeight|long|GEOPOTENTIAL HEIGHT|gpm|0|-1000|17|gpm|0|5
+007010|flightLevel|long|FLIGHT LEVEL|m|0|-1024|16|ft|-1|5
+007012|gridPointAltitude|double|GRID POINT ALTITUDE|m|2|-50000|20|m|2|7
+007021|elevation|double|ELEVATION (SEE NOTE 2)|deg|2|-9000|15|deg|2|5
+007022|solarElevation|double|SOLAR ELEVATION|deg|2|-9000|15|deg|2|5
+007024|satelliteZenithAngle|double|SATELLITE ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+007025|solarZenithAngle|double|SOLAR ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+007026|satelliteZenithAngle|double|SATELLITE ZENITH ANGLE|deg|4|-900000|21|deg|4|7
+007030|heightOfStationGroundAboveMeanSeaLevel|double|HEIGHT OF STATION GROUND ABOVE MEAN SEA LEVEL (SEE NOTE 3)|m|1|-4000|17|m|1|5
+007031|heightOfBarometerAboveMeanSeaLevel|double|HEIGHT OF BAROMETER ABOVE MEAN SEA LEVEL (SEE NOTE 4)|m|1|-4000|17|m|1|5
+007032|heightOfSensorAboveLocalGroundOrDeckOfMarinePlatform|double|HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM)|m|2|0|16|m|2|5
+007033|heightOfSensorAboveWaterSurface|double|HEIGHT OF SENSOR ABOVE WATER SURFACE (SEE NOTE 6)|m|1|0|12|m|1|4
+007040|impactParameter|double|IMPACT PARAMETER (SEE NOTE 8)|m|1|62000000|22|m|1|8
+007061|depthBelowLandSurface|double|DEPTH BELOW LAND SURFACE|m|2|0|14|m|2|5
+007062|depthBelowWaterSurface|double|DEPTH BELOW SEA/WATER SURFACE|m|1|0|17|m|1|6
+007063|depthBelowWaterSurface|double|DEPTH BELOW SEA/WATER SURFACE|m|2|0|20|m|2|7
+007064|representativeHeightOfSensorAboveStation|long|REPRESENTATIVE HEIGHT OF SENSOR ABOVE STATION (SEE NOTE 7)|m|0|0|4|m|0|2
+007065|waterPressure|long|WATER PRESSURE|Pa|-3|0|17|Pa|0|6
+007070|drogueDepth|long|DROGUE DEPTH|m|0|0|10|m|0|4
+008001|verticalSoundingSignificance|flag|VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|7|FLAG TABLE|0|3
+008002|verticalSignificanceSurfaceObservations|table|VERTICAL SIGNIFICANCE (SURFACE OBSERVATIONS)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008003|verticalSignificanceSatelliteObservations|table|VERTICAL SIGNIFICANCE (SATELLITE OBSERVATIONS)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008004|phaseOfAircraftFlight|table|PHASE OF AIRCRAFT FLIGHT|CODE TABLE|0|0|3|CODE TABLE|0|1
+008005|meteorologicalAttributeSignificance|table|METEOROLOGICAL ATTRIBUTE SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008006|ozoneVerticalSoundingSignificance|flag|OZONE VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+008007|dimensionalSignificance|table|DIMENSIONAL SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008008|radiationVerticalSoundingSignificance|flag|RADIATION VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+008009|detailedPhaseOfFlight|table|DETAILED PHASE OF FLIGHT|CODE TABLE|0|0|4|CODE TABLE|0|2
+008010|surfaceQualifierForTemperatureData|table|SURFACE QUALIFIER (TEMPERATURE DATA)|CODE TABLE|0|0|5|CODE TABLE|0|2
+008011|meteorologicalFeature|table|METEOROLOGICAL FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008012|landOrSeaQualifier|table|LAND/SEA QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008013|dayOrNightQualifier|table|DAY/NIGHT QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008014|qualifierForRunwayVisualRange|table|QUALIFIER FOR RUNWAY VISUAL RANGE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008016|changeQualifierOfATrendTypeForecastOrAnAerodromeForecast|table|CHANGE QUALIFIER OF A TREND-TYPE FORECAST OR AN AERODROME FORECA|CODE TABLE|0|0|3|CODE TABLE|0|1
+008017|qualifierOfTimeWhenForecastChangeExpected|table|QUALIFIER OF THE TIME WHEN THE FORECAST CHANGE IS EXPECTED|CODE TABLE|0|0|2|CODE TABLE|0|1
+008018|seawindsLandOrIceSurfaceType|flag|SEAWINDS LAND/ICE SURFACE TYPE|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+008019|qualifierForFollowingCentreIdentifier|table|QUALIFIER FOR FOLLOWING CENTRE IDENTIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008020|totalNumberOfMissingEntitiesWithRespectToAccumulationOrAverage|long|TOTAL NUMBER OF MISSING ENTITIES (WITH RESPECT TO ACCUMULATION O|Numeric|0|0|16|Numeric|0|5
+008021|timeSignificance|table|TIME SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+008022|totalNumberWithRespectToAccumulationOrAverage|long|TOTAL NUMBER (WITH RESPECT TO ACCUMULATION OR AVERAGE)|Numeric|0|0|16|Numeric|0|5
+008023|firstOrderStatistics|table|FIRST ORDER STATISTICS|CODE TABLE|0|0|6|CODE TABLE|0|2
+008024|differenceStatistics|table|DIFFERENCE STATISTICS|CODE TABLE|0|0|6|CODE TABLE|0|2
+008025|timeDifferenceQualifier|table|TIME DIFFERENCE QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008026|matrixSignificance|table|MATRIX SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008029|surfaceType|table|REMOTLY SENSED SURFACE TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+008030|manualOnCodesVolumeI1SectionCCodeTableFromWhichDataAreDerived|long|MANUAL ON CODES (VOLUME I.1, SECTION C) CODE TABLE FROM WHICH DA|Numeric|0|0|13|Numeric|0|4
+008031|dataCategoryCrexTableA|long|DATA CATEGORY CREX TABLE A|Numeric|0|0|8|Numeric|0|3
+008033|methodOfDerivationOfPercentageConfidence|table|METHOD OF DERIVATION OF PERCENTAGE CONFIDENCE|CODE TABLE|0|0|7|CODE TABLE|0|3
+008035|monitoringExerciseType|table|TYPE OF MONITORING EXERCISE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008036|typeOfCentreOrStationPerformingMonitoring|table|TYPE OF CENTRE OR STATION PERFORMING MONITORING|CODE TABLE|0|0|3|CODE TABLE|0|1
+008039|timeSignificanceAviationForecast|table|TIME SIGNIFICANCE ( AVIATION FORECAST)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008040|flightLevelSignificance|table|FLIGHT LEVEL SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008041|dataSignificance|table|DATA SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+008042|extendedVerticalSoundingSignificance|flag|EXTENDED VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+008043|atmosphericChemical|table|ATMOSPHERIC CHEMICAL OR PHISICAL CONSTITUENT TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+008044|casRegistryNumber|string|CAS REGISTRY NUMBER|CCITT IA5|0|0|88|Character|0|11
+008045|particulateMatterCharacterization|table|PARTICULATE MATTER CHARACTERIZATION|CODE TABLE|0|0|8|CODE TABLE|0|3
+008049|numberOfObservations|long|NUMBER OF OBSERVATIONS|Numeric|0|0|8|Numeric|0|3
+008050|qualifierForNumberOfMissingValuesInCalculationOfStatistic|table|QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATIST|CODE TABLE|0|0|4|CODE TABLE|0|2
+008051|qualifierForNumberOfMissingValuesInCalculationOfStatistic|table|QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATIST|CODE TABLE|0|0|3|CODE TABLE|0|1
+008052|conditionForWhichNumberOfDaysOfOccurrenceFollows|table|CONDITION FOR WHICH NUMBER OF DAYS OF OCCURRENCE FOLLOWS|CODE TABLE|0|0|5|CODE TABLE|0|2
+008053|dayOfOccurrenceQualifier|table|DAY OF OCCURRENCE QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008054|qualifierForWindSpeedOrWindGusts|table|QUALIFIER FOR WIND SPEED OR WIND GUST|CODE TABLE|0|0|3|CODE TABLE|0|1
+008060|sampleScanningModeSignificance|table|SAMPLE SCANNING MODE SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008065|sunGlintIndicator|table|SUN-GLINT INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+008066|semiTransparencyIndicator|table|SEMI-TRANSPARENCY INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+008070|tovsOrAtovsProductQualifier|table|TOVS/ATOVS PRODUCT QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008072|pixelType|table|PIXEL(S) TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008074|altimeterEchoType|table|ALTIMETER ECHO TYPE|CODE TABLE|0|0|2|CODE TABLE|0|1
+008075|orbitQualifier|table|ASCENDING/DESCENDING ORBIT QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008076|band|table|TYPE OF BAND|CODE TABLE|0|0|6|CODE TABLE|0|2
+008077|radiometerSensedSurfaceType|table|RADIOMETER SENSED SURFACE TYPE|CODE TABLE|0|0|7|CODE TABLE|0|3
+008079|productStatus|table|PRODUCT STATUS|CODE TABLE|0|0|4|CODE TABLE|0|2
+008080|qualifierForGtsppQualityFlag|table|QUALIFIER FOR GTSPP QUALITY FLAG|CODE TABLE|0|0|6|CODE TABLE|0|2
+008081|equipmentType|table|TYPE OF EQUIPMENT|CODE TABLE|0|0|6|CODE TABLE|0|2
+008082|modificationOfSensorHeightToAnotherValue|table|(CBS) ARTIFICIAL CORRECTION OF SENSOR HEIGHT TO ANOTHER VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008083|nominalValueIndicator|flag|NOMINAL VALUE INDICATOR|FLAG TABLE|0|0|15|FLAG TABLE|0|5
+008085|beamIdentifier|table|BEAM IDENTIFIER|CODE TABLE|0|0|3|CODE TABLE|0|1
+008090|decimalScaleOfFollowingSignificands|long|DECIMAL SCALE|Numeric|0|-127|8|Numeric|0|3
+010001|heightOfLandSurface|long|HEIGHT OF LAND SURFACE|m|0|-400|15|m|0|5
+010002|height|long|HEIGHT|m|-1|-40|16|m|-1|5
+010003|geopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|m2 s-2|-1|6
+010004|pressure|long|PRESSURE|Pa|-1|0|14|Pa|-1|5
+010007|height|long|HEIGHT|m|0|-1000|17|m|0|6
+010008|geopotential|long|GEOPOTENTIAL|m2 s-2|0|-10000|20|m2 s-2|0|7
+010009|geopotentialHeight|long|GEOPOTENTIAL HEIGHT|gpm|0|-1000|17|gpm|0|5
+010010|minimumPressureReducedToMeanSeaLevel|long|MINIMUM PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010011|maximumPressureReducedToMeanSeaLevel|long|MAXIMUM PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010031|DistanceFromEarthCentreInDirectionOfNorthPole|double|IN DIRECTION OF THE NORTH POLE, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10
+010032|satelliteDistanceToEarthCentre|double|SATELLITE DISTANCE TO EARTH'S CENTRE|m|1|0|27|m|2|9
+010033|altitudePlatformToEllipsoid|double|ALTITUDE (PLATFORM TO ELLIPSOID)|m|1|0|27|m|2|9
+010034|earthRadius|double|EARTH RADIUS|m|1|0|27|m|2|9
+010035|earthLocalRadiusOfCurvature|double|EARTH'S LOCAL RADIUS OF CURVATURE|m|1|62000000|22|m|1|8
+010036|geoidUndulation|double|GEOID UNDULATION (SEE NOTE 4)|m|2|-15000|15|m|2|6
+010040|numberOfRetrievedLayers|long|NUMBER OF RETRIEVED LAYERS|Numeric|0|0|10|Numeric|0|4
+010050|standardDeviationAltitude|double|STANDARD DEVIATION ALTITUDE|m|2|0|16|m|2|5
+010051|pressureReducedToMeanSeaLevel|long|PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010052|altimeterSettingQnh|long|ALTIMETER SETTING (QNH)|Pa|-1|0|14|Pa|-1|5
+010060|pressureChange|long|PRESSURE CHANGE|Pa|-1|-1024|11|Pa|-1|4
+010061|3HourPressureChange|long|3-HOUR PRESSURE CHANGE|Pa|-1|-500|10|Pa|-1|4
+010062|24HourPressureChange|long|24-HOUR PRESSURE CHANGE|Pa|-1|-1000|11|Pa|-1|4
+010063|characteristicOfPressureTendency|table|CHARACTERISTIC OF PRESSURE TENDENCY|CODE TABLE|0|0|4|CODE TABLE|0|2
+010064|sigmetCruisingLevel|table|SIGMET CRUISING LEVEL|CODE TABLE|0|0|3|CODE TABLE|0|1
+010070|indicatedAircraftAltitude|long|INDICATED AIRCRAFT ALTITUDE|m|0|-400|16|m|0|5
+010080|viewingZenithAngle|double|VIEWING ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+010081|cogAltitudeAboveReferenceEllipsoid|double|ALTITUDE OF COG ABOVE REFERENCE ELLIPSOID|m|3|0|31|m|3|10
+010082|instantaneousAltitudeRate|double|INSTANTANEOUS ALTITUDE RATE|m/s|3|-65536|17|m/s|3|6
+010083|squaredOffNadirAngleOfSatelliteFromPlatformData|double|SQUARED OFF NADIR ANGLE OF THE SATELLITE FROM PLATFORM DATA|deg2|2|0|16|deg2|2|5
+010084|squaredOffNadirAngleOfSatelliteFromWaveformData|double|SQUARED OFF NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA|deg2|2|0|16|deg2|2|5
+010085|meanSeaSurfaceHeight|double|MEAN SEA SURFACE HEIGHT|m|3|-131072|18|m|3|6
+010086|geoidHeight|double|GEOID'S HEIGHT|m|3|-131072|18|m|3|6
+010087|oceanDepthOrLandElevation|double|OCEAN DEPTH/LAND ELEVATION|m|1|-131072|18|m|3|6
+010088|totalGeocentricOceanTideHeightSolution1|double|TOTAL GEOCENTRIC OCEAN TIDE HEIGHT SOLUTION 1|m|3|-32768|16|m|3|5
+010089|totalGeocentricOceanTideHeightSolution2|double|TOTAL GEOCENTRIC OCEAN TIDE HEIGHT SOLUTION 2|m|3|-32768|16|m|3|5
+010090|longPeriodTideHeight|double|LONG PERIOD TIDE HEIGHT|m|3|-32768|16|m|3|5
+010091|tidalLoadingHeight|double|TIDAL LOADING HEIGHT|m|3|-32768|16|m|3|5
+010092|solidEarthTideHeight|double|SOLID EARTH TIDE HEIGHT|m|3|-32768|16|m|3|5
+010093|geocentricPoleTideHeight|double|GEOCENTRIC POLE TIDE HEIGHT|m|3|-32768|16|m|3|5
+010095|heightOfAtmosphere|long|HEIGHT OF ATMOSPHERE USED|m|0|0|16|m|0|5
+010096|meanDynamicTopography|double|MEAN DYNAMIC TOPOGRAPHY|m|3|-131072|18|NA|0|0
+010097|meanSeaSurfaceHeightFromAltimeterOnly|double|MEAN SEA SURFACE HEIGHT FROM ALTIMETER ONLY|m|3|-131072|18|NA|0|0
+010098|loadingTideHeightGeocentricOceanTideSolution1|double|LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 1|m|4|-2000|12|NA|0|0
+010099|loadingTideHeightGeocentricOceanTideSolution2|double|LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 2|m|4|-2000|12|NA|0|0
+010100|nonEquilibriumLongPeriodTideHeight|double|NON-EQUILIBRIUM LONG PERIOD TIDE HEIGHT|m|4|-2000|12|NA|0|0
+010101|squaredOffNadirAngleOfSatelliteFromWaveformData|double|SQUARED OFF NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA|deg2|2|-32768|16|deg2|2|5
+011001|windDirection|long|WIND DIRECTION|deg|0|0|9|deg|0|3
+011002|windSpeed|double|WIND SPEED|m/s|1|0|12|m/s|1|4
+011003|u|double|U-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011004|v|double|V-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011005|w|double|W-COMPONENT|Pa/s|1|-512|10|Pa/s|1|4
+011006|w|double|W-COMPONENT|m/s|2|-4096|13|m/s|2|4
+011010|windDirectionAssociatedWithWindSpeedWhichFollows|long|WIND DIRECTION ASSOCIATED WITH WIND SPEED WHICH FOLLOWS|deg|0|0|9|deg|0|3
+011011|windDirectionAt10M|long|WIND DIRECTION AT 10 M|deg|0|0|9|deg|0|3
+011012|windSpeedAt10M|double|WIND SPEED AT 10 M|m/s|1|0|12|m/s|1|4
+011013|windDirectionAt5M|long|WIND DIRECTION AT 5 M|deg|0|0|9|deg|0|3
+011014|windSpeedAt5M|double|WIND SPEED AT 5 M|m/s|1|0|12|m/s|1|4
+011016|extremeCounterclockwiseWindDirectionOfAVariableWind|long|EXTREME COUNTERCLOCKWISE WIND DIRECTION OF A VARIABLE WIND|deg|0|0|9|deg|0|3
+011017|extremeClockwiseWindDirectionOfAVariableWind|long|EXTREME CLOCKWISE WIND DIRECTION OF A VARIABLE WIND|deg|0|0|9|deg|0|3
+011019|steadinessOfWind|long|STEADINESS OF WIND (6)|%|0|0|7|%|0|3
+011021|relativeVorticity|double|RELATIVE VORTICITY|/s|9|-65536|17|/s|9|6
+011022|divergence|double|DIVERGENCE|/s|9|-65536|17|/s|9|6
+011023|velocityPotential|long|VELOCITY POTENTIAL|m2/s|-2|-65536|17|m2/s|-2|6
+011030|extendedDegreeOfTurbulence|table|EXTENDED DEGREE OF TURBULENCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+011031|degreeOfTurbulence|table|DEGREE OF TURBULENCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+011032|heightOfBaseOfTurbulence|long|HEIGHT OF BASE OF TURBULENCE|m|-1|-40|16|m|-1|5
+011033|heightOfTopOfTurbulence|long|HEIGHT OF TOP OF TURBULENCE|m|-1|-40|16|m|-1|5
+011034|verticalGustVelocity|double|VERTICAL GUST VELOCITY|m/s|1|-1024|11|m/s|1|4
+011035|verticalGustAcceleration|double|VERTICAL GUST ACCELERATION|m s-2|2|-8192|14|m s-2|2|5
+011036|maximumDerivedEquivalentVerticalGustSpeed|double|MAXIMUM DERIVED EQUIVALENT VERTICAL GUST SPEED|m/s|1|0|10|m/s|1|4
+011037|turbulenceIndex|table|TURBULENCE INDEX|CODE TABLE|0|0|6|CODE TABLE|0|2
+011038|timeOfOccurrenceOfPeakEddyDissipationRate|table|TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|5|CODE TABLE|0|2
+011039|extendedTimeOfOccurrenceOfPeakEddyDissipationRate|table|EXTENDED TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|6|CODE TABLE|0|2
+011040|maximumWindSpeedMeanWind|double|MAXIMUM WIND SPEED (MEAN WIND)|m/s|1|0|12|m/s|1|4
+011041|maximumWindGustSpeed|double|MAXIMUM WIND GUST SPEED|m/s|1|0|12|m/s|1|4
+011042|maximumWindSpeed10MinuteMeanWind|double|MAXIMUM WIND SPEED (10-MIN MEAN WIND)|m/s|1|0|12|m/s|1|4
+011043|maximumWindGustDirection|long|MAXIMUM WIND GUST DIRECTION|deg|0|0|9|deg|0|3
+011044|meanWindDirectionForSurfaceTo1500M|long|MEAN WIND DIRECTION FOR SURFACE - 1500 M (5000 FEET)|deg|0|0|9|deg|0|3
+011045|meanWindSpeedForSurfaceTo1500M|double|MEAN WIND SPEED FOR SURFACE - 1500 M (5000 FEET)|m/s|1|0|12|m/s|1|4
+011046|maximumInstantaneousWindSpeed|double|MAXIMUM INSTANTANEOUS WIND SPEED|m/s|1|0|12|m/s|1|4
+011047|maximumInstantaneousWindSpeedOver10Minutes|double|MAXIMUM INSTANTANEOUS WIND SPEED OVER 10 MINUTES|m/s|1|0|12|m/s|1|4
+011049|windDirectionStandardDeviation|long|STANDARD DEVIATION OF WIND DIRECTION|deg|0|0|9|deg|0|3
+011050|standardDeviationOfHorizontalWindSpeed|double|STANDARD DEVIATION OF HORIZONTAL WIND SPEED|m/s|1|0|12|m/s|1|4
+011051|standardDeviationOfVerticalWindSpeed|double|STANDARD DEVIATION OF VERTICAL WIND SPEED|m/s|1|0|8|m/s|1|3
+011052|formalUncertaintyInWindSpeed|double|FORMAL UNCERTAINTY IN WIND SPEED|m/s|2|0|13|m/s|2|5
+011053|formalUncertaintyInWindDirection|double|FORMAL UNCERTAINTY IN WIND DIRECTION|deg|2|0|15|deg|2|5
+011054|meanWindDirectionFor1500To3000M|long|MEAN WIND DIRECTION FOR 1500 M - 3000 M|deg|0|0|9|deg|0|3
+011055|meanWindSpeedFor1500To3000M|double|MEAN WIND SPEED FOR 1500 M - 3000 M|m/s|1|0|12|m/s|1|4
+011061|absoluteWindShearIn1KmLayerBelow|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW|m/s|1|0|12|m/s|1|4
+011062|absoluteWindShearIn1KmLayerAbove|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE|m/s|1|0|12|m/s|1|4
+011070|designatorOfRunwayAffectedByWindShearIncludingAll|string|DESIGNATOR OF THE RUNWAY AFFECTED BY WIND SHEAR (INCLUDING ALL)|CCITT IA5|0|0|32|Character|0|4
+011071|turbulentVerticalMomentumFlux|double|TURBULENT VERTICAL MOMENTUM FLUX|m2 s-2|3|-128|14|m2 s-2|3|5
+011072|turbulentVerticalBuoyancyFlux|double|TURBULENT VERTICAL BUOYANCY FLUX|K m s-1|3|-128|11|K m s-1|3|4
+011073|turbulentKineticEnergy|double|TURBULENT KINETIC ENERGY|m2 s-2|2|-1024|13|m2 s-2|2|4
+011074|dissipationEnergy|double|DISSIPATION ENERGY|m2 s-2|2|-1024|10|m2 s-2|2|4
+011075|meanTurbulenceIntensityEddyDissipationRate|double|MEAN TURBULENCE INTENSITY (EDDY DISSIPATION RATE)|m2/3 s-1|2|0|8|m2/3 s-1|2|3
+011076|peakTurbulenceIntensityEddyDissipationRate|double|PEAK TURBULENCE INTENSITY (EDDY DISSIPATION RATE)|m2/3 s-1|2|0|8|m2/3 s-1|2|3
+011077|reportingIntervalOrAveragingTimeForEddyDissipationRate|long|REPORTING INTERVAL OR AVERAGING TIME FOR EDDY DISSIPATION RATE|s|0|0|12|s|0|4
+011081|modelWindDirectionAt10M|double|MODEL WIND DIRECTION AT 10M|deg|2|0|16|deg|2|5
+011082|modelWindSpeedAt10M|double|MODEL WIND SPEED AT 10M|m/s|2|0|14|m/s|2|4
+011083|windSpeed|long|WIND SPEED|km/h|0|0|9|km/h|0|3
+011084|windSpeed|long|WIND SPEED|kt|0|0|8|kt|0|3
+011085|maximumWindGustSpeed|long|MAXIMUM WIND GUST SPEED|km/h|0|0|9|km/h|0|3
+011086|maximumWindGustSpeed|long|MAXIMUM WIND GUST SPEED|kt|0|0|8|kt|0|3
+011095|u|double|U COMPONENT OF THE MODEL WIND VECTOR|m/s|1|-4096|13|m/s|1|4
+011096|v|double|V COMPONENT OF THE MODEL WIND VECTOR|m/s|1|-4096|13|m/s|1|4
+011097|windSpeedFromAltimeter|double|WIND SPEED FROM ALTIMETER|m/s|2|0|12|NA|0|0
+011098|windSpeedFromRadiometer|double|WIND SPEED FROM RADIOMETER|m/s|2|0|12|NA|0|0
+012001|airTemperature|double|TEMPERATURE/DRY-BULB TEMPERATURE|K|1|0|12|C|1|3
+012002|wetBulbTemperature|double|WET-BULB TEMPERATURE|K|1|0|12|C|1|3
+012003|dewpointTemperature|double|DEW-POINT TEMPERATURE|K|1|0|12|C|1|3
+012004|airTemperatureAt2M|double|DRY-BULB TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012005|wetBulbTemperatureAt2M|double|WET-BULB TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012006|dewpointTemperatureAt2M|double|DEW-POINT TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012007|virtualTemperature|double|VIRTUAL TEMPERATURE|K|1|0|12|C|1|3
+012011|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|C|1|3
+012012|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|C|1|3
+012013|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE, PAST 12 HOURS|K|1|0|12|C|1|3
+012014|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|1|0|12|C|1|3
+012015|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|1|0|12|C|1|3
+012016|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|1|0|12|C|1|3
+012017|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|1|0|12|C|1|3
+012021|maximumTemperatureAt2M|double|MAXIMUM TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012022|minimumTemperatureAt2M|double|MINIMUM TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012023|temperature|long|TEMPERATURE|C|0|-99|8|C|0|2
+012024|dewpointTemperature|long|DEW POINT TEMPERATURE|C|0|-99|8|C|0|2
+012030|soilTemperature|double|SOIL TEMPERATURE|K|1|0|12|C|1|3
+012049|temperatureChangeOverSpecifiedPeriod|long|TEMPERATURE CHANGE OVER SPECIFIED PERIOD|K|0|-30|6|C|0|2
+012051|standardDeviationTemperature|double|STANDARD DEVIATION TEMPERATURE|K|1|0|10|C|1|3
+012052|highestDailyMeanTemperature|double|HIGHEST DAILY MEAN TEMPERATURE|K|1|0|12|C|1|3
+012053|lowestDailyMeanTemperature|double|LOWEST DAILY MEAN TEMPERATURE|K|1|0|12|C|1|3
+012061|skinTemperature|double|SKIN TEMPERATURE|K|1|0|12|C|1|3
+012062|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|1|0|12|C|1|3
+012063|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|1|0|12|C|1|3
+012064|instrumentTemperature|double|INSTRUMENT TEMPERATURE|K|1|0|12|K|1|4
+012065|standardDeviationBrightnessTemperature|double|STANDARD DEVIATION BRIGHTNESS TEMPERATURE|K|1|0|12|K|1|4
+012070|warmLoadTemperature|double|WARM LOAD TEMPERATURE|K|2|0|16|K|2|5
+012071|coldestClusterTemperature|double|COLDEST CLUSTER TEMPERATURE|K|1|0|12|K|1|4
+012072|radiance|double|RADIANCE|W m-2 sr-1|6|0|31|W m-2 sr-1|6|9
+012073|temperature|double|TEMPERATURE|K|2|0|16|K|1|4
+012075|spectralRadiance|long|SPECTRAL RADIANCE|W m-3 sr-1|-3|0|16|W m-3 sr-1|-3|5
+012076|radiance|double|RADIANCE|W m-2 sr-1|3|0|16|W m-2 sr-1|3|5
+012080|brightnessTemperatureRealPart|double|BRIGHTNESS TEMPERATURE REAL PART|K|2|-10000|16|K|2|5
+012081|brightnessTemperatureImaginaryPart|double|BRIGHTNESS TEMPERATURE IMAGINARY PART|K|2|-10000|16|K|2|5
+012082|pixelRadiometricAccuracy|double|PIXEL RADIOMETRIC ACCURACY|K|2|0|12|K|2|4
+012101|airTemperature|double|TEMPERATURE/DRY-BULB TEMPERATURE|K|2|0|16|C|2|4
+012102|wetBulbTemperature|double|WET-BULB TEMPERATURE|K|2|0|16|C|2|4
+012103|dewpointTemperature|double|DEW-POINT TEMPERATURE|K|2|0|16|C|2|4
+012104|airTemperatureAt2M|double|DRY-BULB TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012105|webBulbTemperatureAt2M|double|WEB-BULB TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012106|dewpointTemperatureAt2M|double|DEW-POINT TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012107|virtualTemperature|double|VIRTUAL TEMPERATURE|K|2|0|16|C|2|4
+012111|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|2|0|16|C|2|4
+012112|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|2|0|16|C|2|4
+012113|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE, PAST 12 HOURS|K|2|0|16|C|2|4
+012114|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2M, PAST 12 HOURS|K|2|0|16|C|2|4
+012115|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2M, PAST 12 HOURS|K|2|0|16|C|2|4
+012116|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2M, PAST 24 HOURS|K|2|0|16|C|2|4
+012117|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2M, PAST 24 HOURS|K|2|0|16|C|2|4
+012118|maximumTemperatureAtHeightSpecifiedPast24Hours|double|MAXIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS|K|2|0|16|C|2|4
+012119|minimumTemperatureAtHeightSpecifiedPast24Hours|double|MINIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS|K|2|0|16|C|2|4
+012121|groundMinimumTemperature|double|GROUND MINIMUM TEMPERATURE|K|2|0|16|C|2|4
+012122|groundMinimumTemperatureOfPrecedingNight|double|GROUND MINIMUM TEMPERATURE OF THE PRECEDING NIGHT|K|2|0|16|C|2|4
+012130|soilTemperature|double|SOIL TEMPERATURE|K|2|0|16|C|2|4
+012151|dailyMeanTemperatureStandardDeviation|double|STANDARD DEVIATION OF DAILY MEAN TEMPERATURE|K|2|0|12|C|2|4
+012152|highestDailyMeanTemperature|double|HIGHEST DAILY MEAN TEMPERATURE|K|2|0|16|C|2|4
+012153|lowestDailyMeanTemperature|double|LOWEST DAILY MEAN TEMPERATURE|K|2|0|16|C|2|4
+012161|skinTemperature|double|SKIN TEMPERATURE|K|2|0|16|C|2|4
+012162|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|2|0|16|C|2|4
+012163|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|2|0|16|C|2|4
+012164|instrumentTemperature|double|INSTRUMENT TEMPERATURE|K|2|0|16|K|2|5
+012165|directSunBrightnessTemperature|long|DIRECT SUN BRIGHTNESS TEMPERATURE|K|0|0|23|K|0|7
+012166|snapshotAccuracy|double|SNAPSHOT ACCURACY|K|1|-4000|13|K|1|4
+012167|radiometricAccuracyPurePolarization|double|RADIOMETRIC ACCURACY (PURE POLARISATION)|K|1|0|9|K|1|3
+012168|radiometricAccuracyCrossPolarization|double|RADIOMETRIC ACCURACY ( CRESS POLARISATION )|K|1|0|9|K|1|3
+012171|coldestClusterTemperature|double|COLDEST CLUSTER TEMPERATURE|K|2|0|16|K|2|5
+012180|averaged12MicronBtForAllClearPixelsAtNadir|double|AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012181|averaged11MicronBtForAllClearPixelsAtNadir|double|AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012182|averaged37MicronBtForAllClearPixelsAtNadir|double|AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012183|averaged12MicronBtForAllClearPixelsForwardView|double|AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012184|averaged11MicronBtForAllClearPixelsForwardView|double|AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012185|averaged37MicronBtForAllClearPixelsForwardView|double|AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012186|meanNadirSeaSurfaceTemperature|double|MEAN NADIR SEA SURFACE TEMPERATURE|K|2|0|16|K|2|5
+012187|meanDualViewSeaSurfaceTemperature|double|MEAN DUAL VIEW SEA SURFACE TEMPERATURE|K|2|0|16|K|2|5
+012188|interpolated238GhzBrightnessTFromMwr|double|INTERPOLATED 23.8 GHZ BRIGHTNESS T FROM MWR|K|2|0|16|K|2|5
+012189|interpolated365GhzBrightnessTFromMwr|double|INTERPOLATED 36.5 GHZ BRIGHTNESS T FROM MWR|K|2|0|16|K|2|5
+013001|specificHumidity|double|SPECIFIC HUMIDITY|kg/kg|5|0|14|kg/kg|5|5
+013002|mixingRatio|double|MIXING RATIO|kg/kg|5|0|14|kg/kg|5|5
+013003|relativeHumidity|long|RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013004|vapourPressure|long|VAPOUR PRESSURE|Pa|-1|0|10|Pa|-1|4
+013005|vapourDensity|double|VAPOUR DENSITY|kg m-3|3|0|7|kg m-3|3|3
+013006|mixingHeights|long|MIXING HEIGHTS|m|-1|-40|16|m|-1|5
+013007|minimumRelativeHumidity|long|MINIMUM RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013008|maximumRelativeHumidity|long|MAXIMUM RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013009|relativeHumidity|double|RELATIVE HUMIDITY|%|1|-1000|12|%|1|4
+013011|totalPrecipitationOrTotalWaterEquivalent|double|TOTAL PRECIPITATION/TOTAL WATER EQUIVALENT|kg m-2|1|-1|14|kg m-2|1|5
+013012|depthOfFreshSnow|double|DEPTH OF FRESH SNOW|m|2|-2|12|m|2|4
+013013|totalSnowDepth|double|TOTAL SNOW DEPTH|m|2|-2|16|m|2|5
+013014|rainfallOrWaterEquivalentOfSnowAveragedRate|double|RAINFALL/WATER EQUIVALENT OF SNOW (AVERAGED RATE)|kg m-2 s-1|4|0|12|kg m-2 s-1|4|4
+013015|snowfallAveragedRate|double|SNOWFALL (AVERAGED RATE)|m/s|7|0|12|m/s|7|4
+013016|precipitableWater|long|PRECIPITABLE WATER|kg m-2|0|0|7|kg m-2|0|3
+013019|totalPrecipitationPast1Hour|double|TOTAL PRECIPITATION PAST 1 HOUR|kg m-2|1|-1|14|kg m-2|1|4
+013020|totalPrecipitationPast3Hours|double|TOTAL PRECIPITATION PAST 3 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013021|totalPrecipitationPast6Hours|double|TOTAL PRECIPITATION PAST 6 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013022|totalPrecipitationPast12Hours|double|TOTAL PRECIPITATION PAST 12 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013023|totalPrecipitationPast24Hours|double|TOTAL PRECIPITATION PAST 24 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013031|evapotranspiration|long|EVAPOTRANSPIRATION|kg m-2|0|0|7|kg m-2|0|3
+013032|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|8|kg m-2|1|3
+013033|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|10|kg m-2|1|4
+013038|superadiabaticIndicator|table|SUPERADIABATIC INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+013039|terrainTypeIceOrSnow|table|TERRAIN TYPE (ICE/SNOW)|CODE TABLE|0|0|3|CODE TABLE|0|1
+013040|surfaceFlag|table|SURFACE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+013041|pasquillGiffordStabilityCategory|table|PASQUILL-GIFFORD STABILITY CATEGORY|CODE TABLE|0|0|4|CODE TABLE|0|2
+013042|parcelLiftedIndexTo500Hpa|long|PARCEL LIFTED INDEX (TO 500 HPA)|K|0|-20|6|K|0|2
+013043|bestLiftedIndexTo500Hpa|long|BEST LIFTED INDEX (TO 500 HPA)|K|0|-20|6|K|0|2
+013044|kIndex|long|K INDEX|K|0|-30|8|K|0|3
+013045|koIndex|long|KO INDEX|K|0|-30|8|K|0|3
+013046|maximumBuoyancy|long|MAXIMUM BUOYANCY|K|0|-30|8|K|0|3
+013047|modifiedShowalterStabilityIndex|long|MODIFIED SHOWALTER STABILITY INDEX|K|0|-60|6|C|0|2
+013048|waterFraction|double|WATER FRACTION|%|1|0|10|%|1|4
+013051|frequencyGroupPrecipitation|table|FREQUENCY GROUP, PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013052|highestDailyAmountOfPrecipitation|double|HIGHEST DAILY AMOUNT OF PRECIPITATION|kg m-2|1|-1|14|kg m-2|1|5
+013055|intensityOfPrecipitation|double|INTENSITY OF PRECIPITATION|kg m-2 s-1|4|0|8|mm/h|1|3
+013056|characterAndIntensityOfPrecipitation|table|CHARACTER AND INTENSITY OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013057|timeOfBeginningOrEndOfPrecipitation|table|TIME OF BEGINNING OR END OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013058|sizeOfPrecipitatingElement|double|SIZE OF PRECIPITATING ELEMENT|m|4|0|7|mm|1|3
+013059|numberOfFlashesThunderstorm|long|NUMBER OF FLASHES (THUNDERSTORM)|Numeric|0|0|7|Numeric|0|3
+013060|totalAccumulatedPrecipitation|double|TOTAL ACCUMULATED PRECIPITATION|kg m-2|1|-1|17|kg m-2|1|5
+013071|upstreamWaterLevel|double|UPSTREAM WATER LEVEL|m|2|0|14|m|2|5
+013072|downstreamWaterLevel|double|DOWNSTREAM WATER LEVEL|m|2|0|14|m|2|4
+013073|maximumWaterLevel|double|MAXIMUM WATER LEVEL|m|2|0|14|m|2|4
+013080|waterPh|double|WATER PH|pH unit|1|0|10|pH unit|1|3
+013081|waterConductivity|double|WATER CONDUCTIVITY|S/m|3|0|14|S/m|3|4
+013082|waterTemperature|double|WATER TEMPERATURE|K|1|0|12|K|1|4
+013083|dissolvedOxygen|double|DISSOLVED OXYGEN|kg m-3|6|0|15|kg m-3|6|5
+013084|turbidity|long|TURBIDITY|lm|0|0|14|lm|0|4
+013085|oxidationReductionPotential|double|OXYDATION REDUCTION POTENTIAL (ORP)|V|3|0|14|V|3|4
+013090|radiometerWaterVapourContent|double|RADIOMETER WATER VAPOUR CONTENT|kg m-2|1|0|10|kg m-2|1|4
+013091|radiometerLiquidContent|double|RADIOMETER LIQUID CONTENT|kg m-2|2|0|8|kg m-2|2|3
+013093|cloudOpticalThickness|long|CLOUD OPTICAL THICKNESS|Numeric|0|0|8|Numeric|0|3
+013095|totalColumnWaterVapour|double|TOTAL COLUMN WATER VAPOUR|kg m-2|4|0|19|kg m-2|4|6
+013096|mwrWaterVapourContent|double|MWR WATER VAPOUR CONTENT|kg m-2|2|0|14|kg m-2|2|4
+013097|mwrLiquidWaterContent|double|MWR LIQUID WATER CONTENT|kg m-2|2|0|14|kg m-2|2|4
+013098|integratedWaterVapourDensity|double|INTEGRATED WATER VAPOUR DENSITY|kg m-2|8|0|30|kg m-2|8|10
+014001|longWaveRadiationIntegratedOver24Hours|long|LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014002|longWaveRadiationIntegratedOverPeriodSpecified|long|LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014003|shortWaveRadiationIntegratedOver24Hours|long|SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014004|shortWaveRadiationIntegratedOverPeriodSpecified|long|SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014011|netLongWaveRadiationIntegratedOver24Hours|long|NET LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014012|netLongWaveRadiationIntegratedOverPeriodSpecified|long|NET LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014013|netShortWaveRadiation24Hours|long|NET SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014014|netShortWaveRadiationIntegratedOverPeriodSpecified|long|NET SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014015|netRadiationIntegratedOver24Hours|long|NET RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|-16384|15|J m-2|-4|5
+014016|netRadiationIntegratedOverPeriodSpecified|long|NET RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|-16384|15|J m-2|-4|5
+014017|instantaneousLongWaveRadiation|long|INSTANTANEOUS LONG-WAVE RADIATION (SEE NOTE 6)|W m-2|-3|-2048|12|W m-2|-3|4
+014018|instantaneousShortWaveRadiation|long|INSTANTANEOUS SHORT-WAVE RADIATION (SEE NOTE 6)|W m-2|-3|-2048|12|W m-2|-3|4
+014019|surfaceAlbedo|long|SURFACE ALBEDO|%|0|0|7|%|0|3
+014020|globalSolarRadiation24Hours|long|GLOBAL SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014021|globalSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014022|diffuseSolarRadiationIntegratedOver24Hours|long|DIFFUSE SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014023|diffuseSolarRadiationIntegratedOverPeriodSpecified|long|DIFFUSE SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014024|directSolarRadiationIntegratedOver24Hours|long|DIRECT SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014025|directSolarRadiationIntegratedOverPeriodSpecified|long|DIRECT SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014026|cloudTopAlbedo|long|ALBEDO AT THE TOP OF CLOUDS|%|0|0|7|%|0|3
+014027|albedo|long|ALBEDO|%|0|0|7|%|0|3
+014028|globalSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD S|J m-2|-2|0|16|J m-2|-2|5
+014029|diffuseSolarRadiationIntegratedOverPeriodSpecified|long|DIFFUSE SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD|J m-2|-2|0|16|J m-2|-2|5
+014030|directSolarRadiationIntegratedOverPeriodSpecified|long|DIRECT SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD S|J m-2|-2|0|16|J m-2|-2|5
+014031|totalSunshine|long|TOTAL SUNSHINE|min|0|0|11|min|0|4
+014032|totalSunshine|long|TOTAL SUNSHINE|h|0|0|10|h|0|4
+014033|totalSunshine|long|TOTAL SUNSHINE|%|0|0|9|%|0|3
+014034|sunshineOverPeriodSpecified|long|SUNSHINE OVER PERIOD SPECIFIED|min|0|0|11|min|0|4
+014042|bidirectionalReflectance|long|BI-DIRECTIONAL REFLECTANCE|%|0|0|7|%|0|3
+014045|channelRadiance|long|CHANNEL RADIANCE|W m-2 sr-1 cm|0|0|11|W m-2 sr-1 cm|0|4
+014046|scaledIasiRadiance|long|SCALED IASI RADIANCE|W m-2 sr-1 m|0|-5000|16|W m-2 sr-1 m|0|5
+014047|scaledMeanAvhrrRadiance|long|SCALED MEAN AVHRR RADIANCE|W m-2 sr-1 m|0|0|31|W m-2 sr-1 m|0|10
+014048|scaledStandardDeviationAvhrrRadiance|long|SCALED STANDARD DEVIATION RADIANCE|W m-2 sr-1 m|0|0|31|W m-2 sr-1 m|0|10
+014050|emissivity|double|EMISSIVITY (SEE NOTE 5)|%|1|0|10|%|1|4
+014051|directSolarRadiationIntegratedOverLastHour|long|DIRECT SOLAR RADIATION INTEGRATED OVER LAST HOUR|J m-2|-3|0|14|J m-2|-3|4
+014055|solarActivityIndex|long|SOLAR ACTIVITY INDEX|Numeric|0|-32768|16|Numeric|0|5
+014061|instantaneousLongWaveRadiation|long|(VAL) INSTANTANEOUS LONG-WAVE RADIATION|W m-2|0|-512|10|W m-2|0|4
+014062|instantaneousShortWaveRadiation|long|(VAL) INSTANTANEOUS SHORT-WAVE RADIATION|W m-2|0|-2048|12|W m-2|0|4
+015001|totalOzone|long|TOTAL OZONE|DU|0|0|10|DU|0|4
+015002|airMassSlantPathAt22Km|long|AIR MASS (SLANT PATH AT 22 KM)|Numeric|2|0|10|Numeric|2|3
+015003|measuredOzonePartialPressureSounding|double|MEASURED OZONE PARTIAL PRESSURE (SOUNDING)|Pa|4|0|9|nbar|0|3
+015004|ozoneSoundingCorrectionFactor|long|OZONE SOUNDING CORRECTION FACTOR|Numeric|3|0|11|Numeric|3|4
+015005|ozoneP|long|OZONE P|DU|0|0|10|DU|0|3
+015008|significandOfVolumetricMixingRatio|long|SCALED MIXING RATIO|Numeric|0|0|10|Numeric|0|4
+015011|log10IntegratedElectronDensity|double|LOG 10 OF INTEGRATED ELECTRON DENSITY|log (m-2)|3|14000|13|log (m-2)|3|4
+015012|totalElectronCountPerSquareMetre|long|TOTAL ELECTRON COUNT PER SQUARE METER|m-2|-16|0|6|m-2|-16|2
+015015|maxImageSpectralComponentBeforeNormalization|long|MAXIMUM IMAGE SPECTRAL COMPONENT BEFORE NORMALIZATION|Numeric|0|0|31|Numeric|0|10
+015020|integratedOzoneDensity|double|INTEGRATED 03 DENSITY|kg m-2|8|0|21|kg m-2|8|7
+015021|integratedMassDensity|double|INTEGRATED MASS DENSITY|kg m-2|11|0|31|kg m-2|11|10
+015024|opticalDepth|long|OPTICAL DEPTH|Numeric|4|0|24|Numeric|4|8
+015025|pollutantType|table|TYPE OF POLLUTANT|CODE TABLE|0|0|4|CODE TABLE|0|2
+015026|moleFractionOfPollutant|double|CONCENTRATION OF POLLUTANT|mol/mol|9|0|9|mol/mol|9|3
+015027|massConcentrationOfPollutant|double|CONCENTRATION OF POLLUTANT|kg m-3|9|0|10|kg m-3|9|4
+015030|aerosolContaminationIndex|long|AEROSOL CONTAMINATION INDEX|Numeric|2|-1000|12|Numeric|2|4
+015031|atmosphericPathDelayInSatelliteSignal|double|ATMOSPHERIC PATH DELAY IN SATELLITE SIGNAL|m|4|10000|15|m|4|5
+015032|estimatedErrorInAtmosphericPathDelay|double|ESTIMATED ERROR IN ATMOSPHERIC PATH DELAY|m|4|0|10|m|4|4
+015033|differenceInPathDelaysForLimbViewsAtExtremesOfScan|double|DIFFERENCE IN PATH DELAYS FOR LIMB VIEWS AT EXTREMES OF SCAN|m|5|-10000|15|m|5|5
+015034|estimatedErrorInPathDelayDifference|double|ESTIMATED ERROR IN PATH DELAY DIFFERENCE|m|5|0|14|m|5|5
+015035|componentOfZenithPathDelayDueToWaterVapour|double|COMPONENT OF ZENITH PATH DELAY DUE TO WATER VAPOUR|m|4|0|14|m|4|5
+015036|atmosphericRefractivity|double|ATMOSPHERIC REFRACTIVITY (SEE NOTE 5)|N units|3|0|19|N units|3|6
+015037|bendingAngle|double|BENDING ANGLE|rad|8|-100000|23|rad|8|7
+019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
+019002|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-2|0|12|m|-2|4
+019003|windSpeedThreshold|long|WIND SPEED THRESHOLD|m/s|0|0|8|m/s|0|3
+019004|effectiveRadiusWithRespectToWindSpeedsAboveThreshold|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD|m|-2|0|12|m|-2|4
+019005|featureDirectionOfMotion|long|DIRECTION OF MOTION OF FEATURE|deg|0|0|9|deg|0|3
+019006|speedOfMotionOfFeature|double|SPEED OF MOTION OF FEATURE|m/s|2|0|14|m/s|2|5
+019007|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-3|0|12|m|-3|4
+019008|verticalExtentOfCirculation|table|VERTICAL EXTENT OF CIRCULATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+019009|effectiveRadiusWithRespectToWindSpeedsAboveThresholdLargeStorms|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD (LA|m|-3|0|12|m|-3|4
+019010|methodForTrackingCentreOfSynopticFeature|table|METHOD FOR TRACKING THE CENTRE OF SYNOPTIC FEATURE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019100|timeIntervalToCalculateMovementOfTropicalCyclone|table|TIME INTERVAL TO CALCULATE THE MOVEMENT OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019101|accuracyOfPositionOfCentreOfTropicalCyclone|table|ACCURACY OF THE POSITION OF THE CENTRE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019102|shapeAndDefinitionOfEyeOfTropicalCyclone|table|SHAPE AND DEFINITION OF THE EYE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|3|CODE TABLE|0|1
+019103|diameterOfMajorAxisOfEyeOfTropicalCyclone|table|DIAMETER OF MAJOR AXIS OF THE EYE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019104|changeInCharacterOfEyeDuring30Minutes|table|CHANGE IN CHARACTER OF THE EYE DURING THE 30 MINUTES|CODE TABLE|0|0|4|CODE TABLE|0|2
+019105|distanceBetweenEndOfSpiralBandAndCentre|table|DISTANCE BETWEEN THE END OF SPIRAL BAND AND THE CENTRE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019106|identificationNumberOfTropicalCyclone|long|IDENTIFICATION NUMBER OF TROPICAL CYCLONE|Numeric|0|0|7|Numeric|0|3
+019107|timeIntervalOverWhichMovementOfTropicalCycloneHasBeenCalculated|table|TIME INTERVAL OF THE TROPICAL CYCLONE ANALYSIS|CODE TABLE|0|0|4|CODE TABLE|0|2
+019108|accuracyOfGeographicalPositionOfTropicalCyclone|table|ACCURACY OF GEOGRAPHICAL POSITION OF THE TROPICAL CYCLONE|CODE TABLE|0|0|3|CODE TABLE|0|1
+019109|meanDiameterOfOvercastCloudOfTropicalCyclone|table|MEAN DIAMETER OF THE OVERCAST CLOUD OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019110|apparent24HourChangeInIntensityOfTropicalCyclone|table|APPARENT 24-HOUR CHANGE IN INTENSITY OF TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019111|currentIntensityNumberOfTropicalCyclone|long|CURRENT INTENSITY (CI) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019112|dataTropicalNumberOfTropicalCyclone|long|DATA TROPICAL (DT) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019113|cloudPatternTypeOfDtNumber|table|CLOUD PATTERN TYPE OF THE DT- NUMBER|CODE TABLE|0|0|4|CODE TABLE|0|2
+019114|modelExpectedTropicalNumberOfTropicalCyclone|long|MODEL EXPECTED TROPICAL (MET) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019115|trendOfPast24HourChangeDevelopedWeakened|long|TREND OF PAST 24-HOUR CHANGE (+: DEVELOPED, -: WEAKENED)|Numeric|1|-30|6|Numeric|1|2
+019116|patternTropicalNumberOfTropicalCyclone|long|PATTERN TROPICAL (PT) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019117|cloudPictureTypeOfPtNumber|table|CLOUD PICTURE TYPE OF THE PT- NUMBER|CODE TABLE|0|0|3|CODE TABLE|0|1
+019118|finalTropicalNumberOfTropicalCyclone|long|FINAL TROPICAL (T) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019119|finalTNumberType|table|TYPE OF THE FINAL T-NUMBER|CODE TABLE|0|0|3|CODE TABLE|0|1
+019150|typhoonInternationalCommonNumberTyphoonCommittee|string|TYPHOON INTERNATIONAL COMMON NUMBER (TYPHOON COMMITTEE)|CCITT IA5|0|0|32|Character|0|4
+020001|horizontalVisibility|long|HORIZONTAL VISIBILITY|m|-1|0|13|m|-1|4
+020002|verticalVisibility|long|VERTICAL VISIBILITY|m|-1|0|7|m|-1|3
+020003|presentWeather|table|PRESENT WEATHER (SEE NOTE 1)|CODE TABLE|0|0|9|CODE TABLE|0|3
+020004|pastWeather1|table|PAST WEATHER (1) (SEE NOTE 2)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020005|pastWeather2|table|PAST WEATHER (2) (SEE NOTE 2)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020008|cloudDistributionForAviation|table|CLOUD DISTRIBUTION FOR AVIATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020009|generalWeatherIndicatorTafOrMetar|table|GENERAL WEATHER INDICATOR (TAF/METAR)|CODE TABLE|0|0|4|CODE TABLE|0|2
+020010|cloudCoverTotal|long|CLOUD COVER (TOTAL)|%|0|0|7|%|0|3
+020011|cloudAmount|table|CLOUD AMOUNT|CODE TABLE|0|0|4|CODE TABLE|0|2
+020012|cloudType|table|CLOUD TYPE|CODE TABLE|0|0|6|CODE TABLE|0|2
+020013|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|m|-1|-40|11|m|-1|4
+020014|heightOfTopOfCloud|long|HEIGHT OF TOP OF CLOUD|m|-1|-40|11|m|-1|4
+020015|pressureAtBaseOfCloud|long|PRESSURE AT BASE OF CLOUD|Pa|-1|0|14|Pa|-1|5
+020016|pressureAtTopOfCloud|long|PRESSURE AT TOP OF CLOUD|Pa|-1|0|14|Pa|-1|5
+020017|cloudTopDescription|table|CLOUD TOP DESCRIPTION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020018|tendencyOfRunwayVisualRange|table|TENDENCY OF RUNWAY VISUAL RANGE|CODE TABLE|0|0|2|CODE TABLE|0|1
+020019|significantWeather|string|SIGNIFICANT PRESENT OR FORECAST WEATHER|CCITT IA5|0|0|72|Character|0|9
+020020|significantRecentWeatherPhenomena|string|SIGNIFICANT RECENT WEATHER PHENOMENA|CCITT IA5|0|0|32|Character|0|4
+020021|precipitationType|flag|TYPE OF PRECIPITATION|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+020022|characterOfPrecipitation|table|CHARACTER OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020023|otherWeatherPhenomena|flag|OTHER WEATHER PHENOMENA|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+020024|intensityOfPhenomena|table|INTENSITY OF PHENOMENA|CODE TABLE|0|0|3|CODE TABLE|0|1
+020025|obscuration|flag|OBSCURATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+020026|characterOfObscuration|table|CHARACTER OF OBSCURATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020027|phenomenaOccurrence|flag|PHENOMENA OCCURRENCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+020028|expectedChangeInIntensity|table|EXPECTED CHANGE IN INTENSITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+020029|rainFlag|table|RAIN FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+020031|iceDepositThickness|double|ICE DEPOSIT (THICKNESS)|m|2|0|7|m|2|3
+020032|rateOfIceAccretionEstimated|table|RATE OF ICE ACCRETION|CODE TABLE|0|0|3|CODE TABLE|0|1
+020033|causeOfIceAccretion|flag|CAUSE OF ICE ACCRETION|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+020034|seaIceConcentration|table|SEA ICE CONCENTRATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020035|amountAndTypeOfIce|table|AMOUNT AND TYPE OF ICE|CODE TABLE|0|0|4|CODE TABLE|0|2
+020036|iceSituation|table|ICE SITUATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020037|iceDevelopment|table|ICE DEVELOPMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+020038|iceEdgeBearing|long|BEARING OF ICE EDGE (SEE NOTE 3)|deg|0|0|12|deg|0|3
+020039|iceDistance|long|ICE DISTANCE|m|-1|0|13|m|-1|4
+020040|evolutionOfDriftSnow|table|EVOLUTION OF DRIFT OF SNOW|CODE TABLE|0|0|4|CODE TABLE|0|2
+020041|airframeIcing|table|AIRFRAME ICING|CODE TABLE|0|0|4|CODE TABLE|0|2
+020042|airframeIcingPresent|table|AIRFRAME ICING PRESENT|CODE TABLE|0|0|2|CODE TABLE|0|1
+020043|peakLiquidWaterContent|double|PEAK LIQUID WATER CONTENT|kg m-3|4|0|7|kg m-3|4|2
+020044|averageLiquidWaterContent|double|AVERAGE LIQUID WATER CONTENT|kg m-3|4|0|7|kg m-3|4|2
+020045|supercooledLargeDropletConditions|table|SUPERCOOLED LARGE DROPLET (SLD) CONDITIONS|CODE TABLE|0|0|2|CODE TABLE|0|2
+020048|evolutionOfFeature|table|EVOLUTION OF FEATURE|CODE TABLE|0|0|4|CODE TABLE|2|2
+020050|cloudIndex|table|CLOUD INDEX|CODE TABLE|0|0|8|CODE TABLE|0|3
+020051|amountOfLowClouds|long|AMOUNT OF LOW CLOUDS|%|0|0|7|%|0|3
+020052|amountOfMiddleClouds|long|AMOUNT OF MIDDLE CLOUDS|%|0|0|7|%|0|3
+020053|amountOfHighClouds|long|AMOUNT OF HIGH CLOUDS|%|0|0|7|%|0|3
+020054|trueDirectionFromWhichAPhenomenonOrCloudsAreMovingOrInWhichTheyAreObserved|long|TRUE DIRECTION FROM WHICH CLOUDS ARE MOVING|deg|0|0|9|deg|0|3
+020055|stateOfSkyInTropics|table|STATE OF SKY IN TROPICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020056|cloudPhase|table|CLOUD PHASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+020059|minimumHorizontalVisibility|long|MINIMUM HORIZONTAL VISIBILITY|m|-1|0|9|m|-1|3
+020060|prevailingHorizontalVisibility|long|PREVAILING HORIZONTAL VISIBILITY|m|-1|0|10|m|-1|4
+020061|runwayVisualRangeRvr|long|RUNWAY VISUAL RANGE (RVR)|m|0|0|12|m|0|4
+020062|stateOfGround|table|STATE OF THE GROUND (WITH OR WITHOUT SNOW)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020063|specialPhenomena|table|SPECIAL PHENOMENA|CODE TABLE|0|0|10|CODE TABLE|0|4
+020065|snowCover|long|SNOW COVER (SEE NOTE 4)|%|0|0|7|%|0|3
+020066|maximumDiameterOfHailstones|double|MAXIMUM DIAMETER OF HAILSTONES|m|3|0|8|m|3|3
+020067|diameterOfDeposit|double|DIAMETER OF DEPOSIT|m|3|0|9|m|3|3
+020070|minimumNumberOfAtmospherics|long|MINIMUM NUMBER OF ATMOSPHERICS|Numeric|0|0|7|Numeric|0|3
+020071|accuracyOfFixAndRateOfAtmospherics|table|ACCURACY OF FIX AND RATE OF ATMOSPHERICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020081|cloudAmountInSegment|long|CLOUD AMOUNT IN SEGMENT|%|0|0|7|%|0|3
+020082|amountSegmentCloudFree|long|AMOUNT SEGMENT CLOUD FREE|%|0|0|7|%|0|3
+020083|amountOfSegmentCoveredByScene|long|AMOUNT OF SEGMENT COVERED BY SCENE|%|0|0|7|%|0|3
+020085|generalConditionOfRunway|table|GENERAL CONDITION OF RUNWAY|CODE TABLE|0|0|4|CODE TABLE|0|1
+020086|runwayDeposits|table|RANWAY DEPOSITS|CODE TABLE|0|0|4|CODE TABLE|0|1
+020087|runwayContamination|table|RUNWAY CONTAMINATION|CODE TABLE|0|0|4|CODE TABLE|0|1
+020088|depthOfRunwayDeposits|double|DEPTH OF RANWAY DEPOSITS|m|3|0|12|m|3|4
+020089|runwayFrictionCoefficient|table|RUNWAY FRICTION COEFICIENT|CODE TABLE|0|0|7|CODE TABLE|0|2
+020090|specialClouds|table|SPECIAL CLOUDS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020091|verticalVisibility|long|VERTICAL VISIBILITY|ft|-2|0|10|ft|-2|3
+020092|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|ft|-2|0|10|ft|-2|3
+020095|iceProbability|long|ICE PROBABILITY|Numeric|3|0|10|Numeric|3|4
+020096|iceAgeAParameter|double|ICE AGE ("A" PARAMETER)|dB|2|-4096|13|dB|2|4
+020101|locustAcridianName|table|LOCUST (ACRIDIAN) NAME|CODE TABLE|0|0|4|CODE TABLE|0|2
+020102|locustMaturityColour|table|LOCUST (MATURITY) COLOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+020103|stageOfDevelopmentOfLocusts|table|STAGE OF DEVELOPMENT OF LOCUSTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020104|organizationStateOfSwarm|table|ORGANIZATION STATE OF SWARM OR BAND OF LOCUSTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020105|sizeOfSwarmOrBandOfLocustsAndDurationOfPassageOfSwarm|table|SIZE OF SWARM OR BAND OF LOCUSTS AND DURATION OF PASSAGE OF SWAR|CODE TABLE|0|0|4|CODE TABLE|0|2
+020106|locustPopulationDensity|table|LOCUST POPULATION DENSITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+020107|directionOfMovementsOfLocustSwarm|table|DIRECTION OF MOVEMENTS OF LOCUST SWARM|CODE TABLE|0|0|4|CODE TABLE|0|2
+020108|extentOfVegetation|table|EXTENT OF VEGETATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+021001|horizontalReflectivity|long|HORIZONTAL REFLECTIVITY|dB|0|-64|7|dB|0|3
+021002|verticalReflectivity|long|VERTICAL REFLECTIVITY|dB|0|-64|7|dB|0|3
+021003|differentialReflectivity|double|DIFFERENTIAL REFLECTIVITY|dB|1|-5|7|dB|1|3
+021005|linearDepolarizationRatio|long|LINEAR DEPOLARISATION RATIO|dB|0|-65|6|dB|0|2
+021006|circularDepolarizationRatio|long|CIRCULAR DEPOLARISATION RATIO|dB|0|-65|6|dB|0|2
+021011|dopplerMeanVelocityXDirection|long|DOPPLER MEAN VELOCITY IN X-DIRECTION|m/s|0|-128|8|m/s|0|3
+021012|dopplerMeanVelocityYDirection|long|DOPPLER MEAN VELOCITY IN Y-DIRECTION|m/s|0|-128|8|m/s|0|3
+021013|dopplerMeanVelocityZDirection|long|DOPPLER MEAN VELOCITY IN Z-DIRECTION|m/s|0|-128|8|m/s|0|3
+021014|dopplerMeanVelocityRadial|double|DOPPLER MEAN VELOCITY (RADIAL)|m/s|1|-4096|13|m/s|1|4
+021017|dopplerVelocitySpectralWidth|double|DOPPLER VELOCITY SPECTRAL WIDTH|m/s|1|0|8|m/s|1|3
+021021|echoTops|long|ECHO TOPS|m|-3|0|4|m|-3|2
+021030|signalToNoiseRatio|long|SIGNAL TO NOISE RATIO|dB|0|-32|8|dB|0|3
+021031|verticallyIntegratedLiquidWaterContent|long|VERTICALLY INTEGRATED LIQUID-WATER CONTENT|kg m-2|0|0|7|kg m-2|0|3
+021036|radarRainfallIntensity|double|RADAR RAINFALL INTENSITY|m/s|7|0|12|m/s|7|4
+021041|brightBandHeight|long|BRIGHT-BAND HEIGHT|m|-2|0|8|m|-2|3
+021051|signalPowerAbove1Mw|long|SIGNAL POWER ABOVE 1 MW|dB|0|-256|8|dB|0|3
+021062|backscatter|double|BACKSCATTER|dB|2|-5000|13|dB|2|4
+021063|radiometricResolutionNoiseValue|double|RADIOMETRIC RESOLUTION (NOISE VALUE)|%|1|0|10|%|1|4
+021064|clutterNoiseEstimate|long|CLUTTER NOISE ESTIMATE|Numeric|0|0|8|Numeric|0|3
+021065|missingPacketCounter|long|MISSING PACKET COUNTER|Numeric|0|-127|8|Numeric|0|3
+021066|waveScatterometerProductConfidenceData|flag|WAVE SCATTEROMETER PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+021067|windProductConfidenceData|flag|WIND PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|13|FLAG TABLE|0|5
+021068|radarAltimeterProductConfidenceData|flag|RADAR ALTIMETER PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+021069|sstProductConfidenceData|flag|SST PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|10|FLAG TABLE|0|4
+021070|sstProductConfidenceDataSadist2|flag|SST PRODUCT CONFIDENCE DATA (SADIST-2)|FLAG TABLE|0|0|23|FLAG TABLE|0|6
+021071|peakiness|long|PEAKINESS|Numeric|0|0|16|Numeric|0|5
+021072|satelliteAltimeterCalibrationStatus|flag|SATELLITE ALTIMETER CALIBRATION STATUS|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+021073|satelliteAltimeterInstrumentMode|flag|SATELLLITE ALTIMETER INSTRUMENT MODE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+021075|imageSpectrumIntensity|long|IMAGE SPECTRUM INTENSITY|Numeric|0|0|8|Numeric|0|3
+021076|representationOfIntensities|table|REPRESENTATION OF INTENSITIES|CODE TABLE|0|0|3|CODE TABLE|0|1
+021077|altitudeCorrectionIonosphere|double|ALTITUDE CORRECTION (IONOSPHERE)|m|3|0|14|m|3|5
+021078|altitudeCorrectionDryTroposphere|double|ALTITUDE CORRECTION (DRY TROPOSPHERE)|m|3|0|9|m|3|3
+021079|altitudeCorrectionWetTroposphere|double|ALTITUDE CORRECTION (WET TROPOSPHERE)|m|3|2000|10|m|3|4
+021080|altitudeCorrectionCalibrationConstant|double|ALTITUDE CORRECTION (CALIBRATION CONSTANT)|m|3|0|11|m|3|4
+021081|openLoopCorrectionHeightTimeLoop|double|OPEN LOOP CORRECTION (HEIGHT-TIME LOOP)|m|3|0|10|m|3|4
+021082|openLoopCorrectionAutoGainControl|double|OPEN LOOP CORRECTION (AUTO GAIN CONTROL)|dB|3|-3000|14|dB|3|5
+021083|warmTargetCalibration|long|WARM TARGET CALIBRATION|Numeric|0|0|16|Numeric|0|5
+021084|coldTargetCalibration|long|COLD TARGET CALIBRATION|Numeric|0|0|16|Numeric|0|5
+021085|atsrSeaSurfaceTemperatureAcrossTrackBandNumber|long|ATSR SEA SURFACE TEMPERATURE ACROSS- TRACK BAND NUMBER|Numeric|0|0|4|Numeric|0|2
+021086|numberOfPixelsInNadirOnlyAverage|long|NUMBER OF PIXELS IN NADIR ONLY, AVERAGE|Numeric|0|0|9|Numeric|0|3
+021087|numberOfPixelsInDualViewAverage|long|NUMBER OF PIXELS IN DUAL VIEW, AVERAGE|Numeric|0|0|9|Numeric|0|3
+021088|wetBackscatter|double|WET BACKSCATTER|dB|2|-5000|13|dB|2|4
+021091|radarSignalDopplerSpectrum0thMoment|long|RADAR SIGNAL DOPPLER SPECTRUM 0TH MOMENT|dB|0|-100|8|dB|0|3
+021092|rassSignalDopplerSpectrum0thMomentReferringToRassSignal|long|RASS SIGNAL DOPPLER SPECTRUM 0TH MOMENT, REFERRING TO RASS SIGNA|dB|0|-100|8|dB|0|3
+021093|kuBandPeakiness|long|Ku BAND PEAKINESS|Numeric|3|0|16|Numeric|0|5
+021094|sBandPeakiness|long|S BAND PEAKINESS|Numeric|3|0|16|Numeric|0|5
+021101|numberOfVectorAmbiguities|long|NUMBER OF VECTOR AMBIGUITIES|Numeric|0|0|3|Numeric|0|1
+021102|indexOfSelectedWindVector|long|INDEX OF SELECTED WIND VECTOR|Numeric|0|0|3|Numeric|0|1
+021103|totalNumberOfSigma0Measurements|long|TOTAL NUMBER OF SIGMA-0 MEASUREMENTS|Numeric|0|0|5|Numeric|0|2
+021104|likelihoodComputedForSolution|long|LIKELIHOOD COMPUTED FOR SOLUTION|Numeric|3|-30000|15|Numeric|3|5
+021105|normalizedRadarCrossSection|double|NORMALIZED RADAR CROSS-SECTION|dB|2|-10000|14|dB|2|5
+021106|kpVarianceCoefficientAlpha|long|KP VARIANCE COEFFICIENT (ALPHA)|Numeric|3|0|14|Numeric|3|5
+021107|kpVarianceCoefficientBeta|long|KP VARIANCE COEFFICIENT (BETA)|Numeric|8|0|16|Numeric|8|5
+021109|seawindsWindVectorCellQuality|flag|SEAWINDS WIND VECTOR CELL QUALITY|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021110|numberOfInnerBeamSigma0ForwardOfSatellite|long|NUMBER OF INNER-BEAM SIGMA-0 (FORWARD OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021111|numberOfOuterBeamSigma0ForwardOfSatellite|long|NUMBER OF OUTER-BEAM SIGMA-0 (FORWARD OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021112|numberOfInnerBeamSigma0AftOfSatellite|long|NUMBER OF INNER-BEAM SIGMA-0 (AFT OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021113|numberOfOuterBeamSigma0AftOfSatellite|long|NUMBER OF OUTER-BEAM SIGMA-0 (AFT OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021114|kpVarianceCoefficientGamma|double|KP VARIANCE COEFFICENT (GAMMA)|dB|3|-140000|18|dB|3|6
+021115|seawindsSigma0Quality|flag|SEAWINDS SIGMA-0 QUALITY|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021116|seawindsSigma0Mode|flag|SEAWINDS SIGMA-0 MODE|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021117|sigma0VarianceQualityControl|long|SIGMA-0 VARIANCE QUALITY CONTROL|Numeric|2|0|16|Numeric|2|5
+021118|attenuationCorrectionOnSigma0|double|ATTENUATION CORRECTION ON SIGMA-0|dB|2|-10000|14|dB|2|5
+021119|windScatterometerGeophysicalModelFunction|table|WIND SCATTEROMETER GEOPHYSICAL MODEL FUNCTION|CODE TABLE|0|0|6|CODE TABLE|0|2
+021120|probabilityOfRain|long|PROBABILITY OF RAIN|Numeric|3|0|10|Numeric|3|4
+021121|seawindsNofRainIndex|long|SEAWINDS NOF* RAIN INDEX|Numeric|0|0|8|Numeric|0|3
+021122|attenuationCorrectionOnSigma0FromTb|double|ATTENUATION CORRECTION OF SIGMA-0 (FROM TB)|dB|2|-10000|14|dB|2|5
+021123|seawindsNormalizedRadarCrossSection|double|SEAWINDS NORMALIZED RADAR CROSS SECTION|dB|2|-30000|15|dB|2|5
+021128|numberOfValidPointsPerSecondUsedToDerivePreviousParameters|long|NUMBER OF VALID POINTS PER SECOND USED TO DERIVE PREVIOUS PARAME|Numeric|0|0|8|Numeric|0|3
+021130|spectrumTotalEnergy|long|SPECTRUM TOTAL ENERGY|Numeric|6|0|28|Numeric|6|9
+021131|spectrumMaxEnergy|long|SPECTRUM MAX ENERGY|Numeric|6|0|28|Numeric|6|9
+021132|directionOfSpectrumMaxOnHigherResolutionGrid|double|DIRECTION OF SPECTRUM MAX ON HIGHER RESOLUTION GRID|deg|3|0|19|deg|3|6
+021133|wavelengthOfSpectrumMaxOnHigherResolutionGrid|double|WAVE-LENGTH OF SPECTRUM MAX ON HIGHER RESOLUTION GRID|m|3|0|29|m|3|9
+021134|rangeResolutionOfCressCovarianceSpectrum|double|RANGE RESOLUTION OF CRESS COVARIANCE SPECTRUM|rad/m|3|0|19|rad/m|3|6
+021135|realPartOfCrossSpectraPolarGridNumberOfBins|long|REAL PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS|Numeric|3|-524288|20|Numeric|3|7
+021136|imaginaryPartOfCrossSpectraPolarGridNumberOfBins|long|IMAGINARY PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS|Numeric|3|-524288|20|Numeric|3|7
+021137|kuBandCorrectedOceanBackscatterCoefficient|double|KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021138|stdKuBandCorrectedOceanBackscatterCoefficient|double|STD KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021139|kuBandNetInstrumentalCorrectionForAgc|double|KU BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|dB|2|4
+021140|sBandCorrectedOceanBackscatterCoefficient|double|S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021141|stdSBandCorrectedOceanBackscatterCoefficient|double|STD S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021142|sBandNetInstrumentalCorrectionForAgc|double|S BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-1024|11|dB|2|4
+021143|kuBandRainAttenuation|double|KU BAND RAIN ATTENUATION|dB|2|-1073741824|31|dB|2|10
+021144|altimeterRainFlag|flag|ALTIMETER RAIN FLAG|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+021145|kuBandAutomaticGainControl|double|KU BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|NA|0|0
+021146|rmsKuBandAutomaticGainControl|double|RMS KU BAND AUTOMATIC GAIN CONTROL|dB|2|0|8|NA|0|0
+021147|numberOfValidPointsForKuBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR KU BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|5|NA|0|0
+021150|beamCollocation|table|BEAM COLLOCATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+021151|estimatedErrorInSigma0At40DegreesIncidenceAngle|double|ESTIMATED ERROR IN SIGMA0 AT 40DEG INCIDENCE ANGLE|dB|2|0|9|dB|2|3
+021152|slopeAt40DegreesIncidenceAngle|double|SLOPE AT 40DEG INCIDENCE ANGLE|dB/deg|2|-80|7|dB/deg|2|3
+021153|estimatedErrorInSlopeAt40DegreesIncidenceAngle|double|ESTIMATED ERROR IN SLOPE AT 40DEG INCIDENCE ANGLE|dB/deg|2|-40|6|dB/deg|2|3
+021154|soilMoistureSensitivity|double|SOIL MOISTURE SENSITIVITY|dB|2|0|12|dB|2|4
+021155|windVectorCellQuality|flag|WIND VECTOR CELL QUALITY|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+021156|backscatterDistance|long|BACKSCATTER DISTANCE|Numeric|1|-4096|13|Numeric|1|4
+021157|lossPerUnitLengthOfAtmosphere|double|LOSS PER UNIT LENGTH OF ATMOSPHERE USED|dB/m|10|0|22|dB/m|10|7
+021158|ascatKpEstimateQuality|table|ASCAT kp ESTIMATE QUALITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+021159|ascatSigma0Usability|table|ASCAT SIGMA-0 USABILITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+021160|ascatUseOfSyntheticData|long|ASCAT USE OF SYNTHETIC DATA|Numeric|3|0|10|Numeric|3|4
+021161|ascatSyntheticDataQuantity|long|ASCAT SYNTHETIC DATA QUALITY|Numeric|3|0|10|Numeric|3|4
+021162|ascatSatelliteOrbitAndAttitudeQuality|long|ASCAT SATELLITE ORBIT AND ATTITUDE QUALITY|Numeric|3|0|10|Numeric|3|4
+021163|ascatSolarArrayReflectionContamination|long|ASCAT SOLAR ARRAY REFLECTION CONTAMINATION|Numeric|3|0|10|Numeric|3|4
+021164|ascatTelemetryPresenceAndQuality|long|ASCAT TELEMETRY PRESENCE AND QUALITY|Numeric|3|0|10|Numeric|3|4
+021165|ascatExtrapolatedReferenceFunctionPresence|long|ASCAT EXTRAPOLATED REFERENCE FUNCTION PRESENCE|Numeric|3|0|10|Numeric|3|4
+021166|landFraction|long|ASCAT LAND FRACTION|Numeric|3|0|10|Numeric|3|4
+021169|icePresenceIndicator|table|ICE PRESENCE INDICATOR|CODE TABLE|0|0|2|NA|0|0
+021170|cBandCorrectedOceanBackscatterCoefficient|double|C BAND CORRECTED OCEAN BACKSCATTER COEFICIENT|dB|2|-32768|16|NA|0|0
+021171|rmsCBandCorrectedOceanBackscatterCoefficient|double|RMS C BAND CORRECTED OCEAN BACKSCATTER COEFICIENT|dB|2|-32768|16|NA|0|0
+021172|cBandNetInstrumentalCorrectionForAgc|double|C BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|NA|0|0
+021173|cBandAutomaticGainControl|double|C BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|NA|0|0
+021174|rmsCBandAutomaticGainControl|double|RMS C BAND AUTOMATIC GAIN CONTROL|dB|2|0|9|NA|0|0
+021175|numberOfValidPointsForCBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR C BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|10|NA|0|0
+022001|wavesDirection|long|DIRECTION OF WAVES|deg|0|0|9|deg|0|3
+022002|windWavesDirection|long|DIRECTION OF WIND WAVES|deg|0|0|9|deg|0|3
+022003|swellWavesDirection|long|DIRECTION OF SWELL WAVES|deg|0|0|9|deg|0|3
+022004|currentDirection|long|DIRECTION OF CURRENT|deg|0|0|9|deg|0|3
+022005|seaSurfaceCurrentDirection|long|DIRECTION OF SEA SURFACE CURRENT|deg|0|0|9|deg|0|3
+022011|periodOfWaves|long|PERIOD OF WAVES|s|0|0|6|s|0|2
+022012|periodOfWindWaves|long|PERIOD OF WIND WAVES|s|0|0|6|s|0|2
+022013|periodOfSwellWaves|long|PERIOD OF SWELL WAVES|s|0|0|6|s|0|2
+022021|heightOfWaves|double|HEIGHT OF WAVES|m|1|0|10|m|1|4
+022022|heightOfWindWaves|double|HEIGHT OF WIND WAVES|m|1|0|10|m|1|4
+022023|heightOfSwellWaves|double|HEIGHT OF SWELL WAVES|m|1|0|10|m|1|4
+022025|standardDeviationWaveHeight|double|STANDARD DEVIATION WAVE HEIGHT|m|2|0|10|m|2|4
+022026|standardDeviationOfSignificantWaveHeight|double|STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT|m|2|0|10|m|2|4
+022031|speedOfCurrent|double|SPEED OF CURRENT|m/s|2|0|13|m/s|2|4
+022032|speedOfSeaSurfaceCurrent|double|SPEED OF SEA SURFACE CURRENT|m/s|2|0|13|m/s|2|4
+022035|tidalElevationWithRespectToLocalChartDatum|double|TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM|m|2|0|14|m|2|4
+022036|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|2|0|14|m|2|4
+022037|tidalElevationWithRespectToNationalLandDatum|double|TIDAL ELEVATION WITH RESPECT TO NATIONAL LAND DATUM|m|3|-10000|15|m|3|5
+022038|tidalElevationWithRespectToLocalChartDatum|double|TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM|m|3|-10000|15|m|3|5
+022039|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|3|-5000|12|m|3|4
+022040|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|3|-5000|14|m|3|5
+022041|seaSurfaceTemperature15DayRunningMean|double|SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN)|K|1|0|12|K|1|4
+022042|waterTemperature|double|SEA/WATER TEMPERATURE|K|1|0|12|K|1|4
+022043|waterTemperature|double|SEA/WATER TEMPERATURE|K|2|0|15|K|2|5
+022044|soundVelocity|double|SOUND VELOCITY|m/s|1|0|14|m/s|1|5
+022045|waterTemperature|double|SEA/WATER TEMPERATURE|K|3|0|19|K|3|6
+022049|seaSurfaceTemperature|double|SEA SURFACE TEMPERATURE|K|2|0|15|K|2|5
+022050|standardDeviationSeaSurfaceTemperature|double|STANDARD DEVIATION SEA-SURFACE TEMPERATURE|K|2|0|8|K|2|3
+022055|floatCycleNumber|long|FLOAT CYCLE NUMBER|Numeric|0|0|10|Numeric|0|3
+022056|directionOfProfile|table|DIRECTION OF PROFILE|CODE TABLE|0|0|2|CODE TABLE|0|1
+022059|seaSurfaceSalinity|double|SEA SURFACE SALINITY|0/00|2|0|14|0/00|2|5
+022060|lagrangianDrifterDrogueStatus|table|LAGRANGIAN DRIFTER DROGUE STATUS|CODE TABLE|0|0|3|CODE TABLE|0|1
+022061|seaState|table|STATE OF THE SEA|CODE TABLE|0|0|4|CODE TABLE|0|2
+022062|salinity|double|SALINITY|0/00|2|0|14|0/00|2|5
+022063|totalWaterDepth|long|TOTAL WATER DEPTH|m|0|0|14|m|0|5
+022064|salinity|double|SALINITY|0/00|3|0|17|0/00|3|6
+022065|waterPressure|long|WATER PRESSURE|Pa|-3|0|17|Pa|-3|6
+022066|waterConductivity|double|WATER CONDUCTIVITY|S/m|6|0|26|S/m|6|8
+022067|instrumentTypeForWaterTemperatureOrSalinityProfileMeasurement|table|INSTRUMENT TYPE FOR WATER TEMPERATURE PROFILE MEASUREMENT|CODE TABLE|0|0|10|CODE TABLE|0|4
+022068|waterTemperatureProfileRecorderTypes|table|WATER TEMPERATURE PROFILE RECORDER TYPES|CODE TABLE|0|0|7|CODE TABLE|0|3
+022069|spectralWaveDensity|double|SPECTRAL WAVE DENSITY|m2/Hz|3|0|22|m2/Hz|3|7
+022070|significantWaveHeight|double|SIGNIFICANT WAVE HEIGHT|m|2|0|13|m|2|4
+022071|spectralPeakWavePeriod|double|SPECTRAL PEAK WAVE PERIOD|s|1|0|9|s|1|3
+022072|spectralPeakWaveLength|long|SPECTRAL PEAK WAVE LENGTH|m|0|0|13|m|0|4
+022073|maximumWaveHeight|double|MAXIMUM WAVE HEIGHT|m|2|0|13|m|2|4
+022074|averageWavePeriod|double|AVERAGE WAVE PERIOD|s|1|0|9|s|1|3
+022075|averageWaveLength|long|AVERAGE WAVE LENGTH|m|0|0|13|m|0|4
+022076|directionFromWhichDominantWavesAreComing|long|DIRECTION FROM WHICH DOMINANT WAVES ARE COMING|deg|0|0|9|deg|0|3
+022077|directionalSpreadOfDominantWave|long|DIRECTIONAL SPREAD OF DOMINANT WAVE|deg|0|0|9|deg|0|3
+022078|durationOfWaveRecord|long|DURATION OF WAVE RECORD|s|0|0|12|s|0|4
+022079|lengthOfWaveRecord|long|LENGTH OF WAVE RECORD|m|0|0|16|m|0|5
+022080|wavebandCentralFrequency|double|WAVEBAND CENTRAL FREQUENCY|Hz|3|0|10|Hz|3|4
+022081|wavebandCentralWaveNumber|double|WAVEBAND CENTRAL WAVE NUMBER|/m|5|0|13|/m|5|4
+022082|maximumNonDirectionalSpectralWaveDensity|double|MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY|m2 s|2|0|20|m2 s|2|7
+022083|maximumNonDirectionalSpectralWaveNumber|double|MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE NUMBER|m3|2|0|20|m3|2|7
+022084|bandContainingMaximumNonDirectionalSpectralWaveDensity|long|BAND CONTAINING MAXIMUM NON- DIRECTIONAL SPECTRAL WAVE DENSITY|Numeric|0|0|7|Numeric|0|3
+022085|spectralWaveDensityRatio|long|SPECTRAL WAVE DENSITY RATIO|Numeric|0|0|7|Numeric|0|3
+022086|meanDirectionFromWhichWavesAreComing|long|MEAN DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3
+022087|principalDirectionFromWhichWavesAreComing|long|PRINCIPAL DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3
+022088|firstNormalizedPolarCoordinateFromFourierCoefficients|long|FIRST NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS|Numeric|2|0|7|Numeric|2|3
+022089|secondNormalizedPolarCoordinateFromFourierCoefficients|long|SECOND NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS|Numeric|2|0|7|Numeric|2|3
+022090|nonDirectionalSpectralEstimateByWaveFrequency|double|NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY|m2 s|2|0|20|m2 s|2|7
+022091|nonDirectionalSpectralEstimateByWaveNumber|double|NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER|m3|2|0|20|m3|2|7
+022092|directionalSpectralEstimateByWaveFrequency|double|DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY|m2 rad-1 s|2|0|20|m2 rad-1 s|2|7
+022093|directionalSpectralEstimateByWaveNumber|double|DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER|m4|2|0|20|m4|2|7
+022094|totalNumberOfWaveBands|long|TOTAL NUMBER OF WAVE BANDS|Numeric|0|0|7|Numeric|0|3
+022095|directionalSpreadOfIndividualWaves|long|DIRECTIONAL SPREAD OF INDIVIDUAL WAVES|deg|0|0|8|deg|0|3
+022096|spectralBandWidth|double|SPECTRAL BAND WIDTH|/s|3|0|4|/s|3|2
+022097|meanWavelength731MOfImageSpectrumAtLowWaveNumbers|long|MEAN WAVELENGTH > 731 M OF IMAGE SPECTRUM AT LOW WAVE NUMBERS|m|0|0|14|m|0|5
+022098|wavelengthSpreadWavelength731MAtLowWaveNumbers|long|WAVELENGTH SPREAD (WAVELENGTH > 731 M) AT LOW WAVE NUMBERS|m|0|0|14|m|0|5
+022099|meanDirectionAtLowWaveNumbersWavelength731M|long|MEAN DIRECTION AT LOW WAVE NUMBERS (WAVELENGTH > 731 M)|deg|0|0|9|deg|0|3
+022100|directionSpreadAtLowWaveNumbersWavelength731M|long|DIRECTION SPREAD AT LOW WAVE NUMBERS(WAVELENGTH > 731 M)|deg|0|0|9|deg|0|3
+022101|totalEnergyWavelength731mAtLowWaveNumbers|long|TOTAL ENERGY (WAVELENGTH > 731M) AT LOW WAVE NUMBERS|Numeric|0|0|31|Numeric|0|10
+022120|tideStationAutomatedWaterLevelCheck|table|TIDE STATION AUTOMATED WATER LEVEL CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022121|tideStationManualWaterLevelCheck|table|TIDE STATION MANUAL WATER LEVEL CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022122|automatedMeteorologicalDataCheck|table|TIDE STATION AUTOMATED METEOROLOGICAL DATA CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022123|tideStationManualMeteorologicalDataCheck|table|TIDE STATION MANUAL METEOROLOGICAL DATA CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022141|seaSurfaceTemperature15DayRunningMean|double|SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN)|K|2|0|15|K|2|5
+022150|numberOf18HzValidPointsForKuBand|long|NUMBER OF 18 HZ VALID POINTS FOR KU BAND|Numeric|0|0|10|Numeric|0|4
+022151|kuBandOceanRange|double|KU BAND OCEAN RANGE|m|3|0|31|m|3|10
+022152|stdOf18HzKuBandOceanRange|double|STD OF 18 HZ KU BAND OCEAN RANGE|m|3|0|16|m|3|5
+022153|numberOf18HzValidPointsForSBand|long|NUMBER OF 18 HZ VALID POINTS FOR S BAND|Numeric|0|0|10|Numeric|0|4
+022154|sBandOceanRange|double|S BAND OCEAN RANGE|m|3|0|31|m|3|10
+022155|stdOf18HzSBandOceanRange|double|STD OF 18 HZ S BAND OCEAN RANGE|m|3|0|16|m|3|5
+022156|kuBandSignificantWaveHeight|double|KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022157|stdOf18HzKuBandOceanRange|double|STD 18HZ KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022158|sBandSignificantWaveHeight|double|S BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022159|stdOf18HzSBandSignificantWaveHeight|double|STD 18HZ S BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022160|normalizedInverseWaveAge|long|NORMALIZED INVERSE WAVE AGE|Numeric|6|0|21|Numeric|6|7
+022161|waveSpectra|double|WAVE SPECTRA|m4|4|0|27|m4|4|9
+022162|rmsOf20HzKuBandOceanRange|double|RMS OF 20Hz KU BAND OCEAN RANGE|m|3|0|16|NA|0|0
+022163|numberOf20HzValidPointsForKuBand|long|NUMBER OF 20Hz VALID POINTS FOR KU BAND|Numeric|0|0|10|NA|0|0
+022164|rms20HzKuBandSignificantWaveHeight|double|RMS 20Hz KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|NA|0|0
+022165|numberOf20HzValidPointsForKuBandSignificantWaveHeight|long|NUMBER OF 20Hz VALID POINTS FOR KU BAND SIGNIFICANT WAVE HEIGHT|Numeric|0|0|10|NA|0|0
+022166|kuBandNetInstrumentalCorrectionForSignificantWaveHeight|double|KU BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|NA|0|0
+022167|numberOfValidPointsForKuBandBackscatter|long|NUMBER OF VALID POINTS FOR KU BAND BACKSCATTER|Numeric|0|0|10|NA|0|0
+022168|cBandOceanRange|double|C BAND OCEAN RANGE|m|3|0|31|NA|0|0
+022169|rmsOfCBandOceanRange|double|RMS OF C BAND OCEAN RANGE|m|3|0|16|NA|0|0
+022170|numberOf20HzValidPointsForCBand|long|NUMBER OF 20Hz VALID POINTS FOR C BAND|Numeric|0|0|10|NA|0|0
+022171|cBandSignificantWaveHeight|double|C BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|NA|0|0
+022172|rms20HzCBandSignificantWaveHeight|double|RMS 20Hz C BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|NA|0|0
+022173|numberOf20HzValidPointsForCBandSignificantWaveHeight|long|NUMBER OF 20Hz VALID POINTS FOR C BAND|Numeric|0|0|10|NA|0|0
+022174|cBandNetInstrumentalCorrectionForSignificantWaveHeight|double|C BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|NA|0|0
+022175|numberOfValidPointsForCBandBackscatter|long|NUMBER OF VALID POINTS FOR C BAND BACKSCATTER|Numeric|0|0|10|NA|0|0
+022186|directionFromWhichWavesAreComing|long|DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|NA|0|0
+022187|directionalSpreadOfWaves|long|DIRECTIONAL SPREAD OF WAVES|deg|0|0|9|NA|0|0
+022191|spectralDensity|double|SPECTRAL DENSITY|m2 rad-1 s|2|0|20|NA|0|0
+023001|accidentEarlyNotificationArticleApplicable|table|ACCIDENT EARLY NOTIFICATION ARTICLE APPLICABLE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023002|facilityInvolvedInIncident|table|ACTIVITY OR FACILITY INVOLVED IN INCIDENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+023003|releaseType|table|TYPE OF RELEASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023004|countermeasuresTakenNearBorder|table|COUNTERMEASURES TAKEN NEAR BORDER|CODE TABLE|0|0|3|CODE TABLE|0|1
+023005|causeOfIncident|table|CAUSE OF INCIDENT|CODE TABLE|0|0|2|CODE TABLE|0|1
+023006|incidentSituation|table|INCIDENT SITUATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+023007|characteristicsOfRelease|table|CHARACTERISTICS OF RELEASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023008|stateOfCurrentRelease|table|STATE OF CURRENT RELEASE|CODE TABLE|0|0|2|CODE TABLE|0|1
+023009|stateOfExpectedRelease|table|STATE OF EXPECTED RELEASE|CODE TABLE|0|0|2|CODE TABLE|0|1
+023016|possibilityOfSignificantChemicalToxicHealthEffect|table|POSSIBILITY OF SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT|CODE TABLE|0|0|2|CODE TABLE|0|1
+023017|flowDischargeOfMajorRecipient|double|FLOW DISCHARGE OF MAJOR RECIPIENT|m3/s|6|0|20|m3/s|6|7
+023018|releaseBehaviourOverTime|table|RELEASE BEHAVIOUR OVER TIME|CODE TABLE|0|0|3|CODE TABLE|0|1
+023019|actualReleaseHeight|long|ACTUAL RELEASE HEIGHT|m|0|-15000|17|m|0|6
+023021|effectiveReleaseHeight|long|EFFECTIVE RELEASE HEIGHT|m|0|-15000|17|m|0|6
+023022|distanceOfReleasePointOrSiteOfIncident|long|DISTANCE OF RELEASE POINT OR SITE OF INCIDENT|m|0|0|24|m|0|8
+023023|mainTransportSpeedInAtmosphere|double|MAIN TRANSPORT SPEED IN THE ATMOSPHERE|m/s|1|0|12|m/s|1|4
+023024|mainTransportSpeedInWater|double|MAIN TRANSPORT SPEED IN WATER|m/s|2|0|13|m/s|2|4
+023025|mainTransportSpeedInGroundWater|double|MAIN TRANSPORT SPEED IN GROUND WATER|m/s|2|0|13|m/s|2|4
+023027|mainTransportDirectionInTheAtmosphere|long|MAIN TRANSPORT DIRECTION IN THE ATMOSPHERE|deg|0|0|9|deg|0|3
+023028|mainTransportDirectionInWater|long|MAIN TRANSPORT DIRECTION IN WATER|deg|0|0|9|deg|0|3
+023029|mainTransportDirectionInGroundWater|long|MAIN TRANSPORT DIRECTION IN GROUND WATER|deg|0|0|9|deg|0|3
+023031|possibilityPlume|table|POSSIBILITY THAT PLUME WILL ENCOUNTER PRECIPITATION IN STATE IN|CODE TABLE|0|0|2|CODE TABLE|0|1
+023032|plumeWillEncounterChangeInWindDirectionAndOrOrSpeedFlag|table|PLUME WILL ENCOUNTER CHANGE IN WIND DIRECTION AND/OR SPEED FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+024001|estimateOfAmountOfRadioactivityReleasedUpToSpecifiedTime|long|ESTIMATE OF AMOUNT OF RADIOACTIVITY RELEASED UP TO SPECIFIED TIM|Bq|-11|0|28|Bq|-11|9
+024002|estimatedMaximumPotentialRelease|long|ESTIMATED MAXIMUM POTENTIAL RELEASE|Bq|-11|0|28|Bq|-11|9
+024003|compositionOfRelease|table|COMPOSITION OF RELEASE|CODE TABLE|0|0|5|CODE TABLE|0|2
+024004|elementName|string|ELEMENT NAME|CCITT IA5|0|0|16|Character|0|2
+024005|isotopeMass|long|ISOTOPE MASS|Numeric|0|0|9|Numeric|0|3
+024011|dose|double|DOSE|mSv|2|0|32|mSv|2|10
+024012|trajectoryDoseDefinedLocationAndExpectedTimeOfArrival|double|TRAJECTORY DOSE (DEFINED LOCATION AND EXPECTED TIME OF ARRIVAL)|mSv|2|0|32|mSv|2|10
+024013|gammaDoseInAirAlongMainTransportPathDefinedLocationAndTimePeriod|double|GAMMA DOSE IN AIR ALONG THE MAIN TRANSPORT PATH (DEFINED LOCATIO|mSv|2|0|32|mSv|2|10
+024021|airConcentrationOfNamedIsotopeTypeIncludingGrossBeta|double|AIR CONCENTRATION (OF NAMED ISOTOPE TYPE INCLUDING GROSS BETA)|Bq m-3|2|0|32|Bq m-3|2|10
+024022|concentrationInPrecipitationOfNamedIsotopeType|double|CONCENTRATION IN PRECIPITATION (OF NAMES ISOTOPE TYPE)|Bq/l|2|0|32|Bq/l|2|10
+024023|pulseRateOfBetaRadiation|double|PULSE RATE OF BETA RADIATION|/s|1|0|14|/s|1|4
+024024|pulseRateOfGammaRadiation|double|PULSE RATE OF GAMMA RADIATION|/s|1|0|14|/s|1|4
+025001|rangeGateLength|long|RANGE-GATE LENGTH|m|-1|0|6|m|-1|2
+025002|numberOfGatesAveraged|long|NUMBER OF GATES AVERAGED|Numeric|0|0|4|Numeric|0|2
+025003|numberOfIntegratedPulses|long|NUMBER OF INTEGRATED PULSES|Numeric|0|0|8|Numeric|0|3
+025004|echoProcessing|table|ECHO PROCESSING|CODE TABLE|0|0|2|CODE TABLE|0|1
+025005|echoIntegration|table|ECHO INTEGRATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025006|zToRConversion|table|Z TO R CONVERSION|CODE TABLE|0|0|3|CODE TABLE|0|1
+025007|zToRConversionFactor|long|Z TO R CONVERSION FACTOR|Numeric|0|0|12|Numeric|0|4
+025008|zToRConversionExponent|long|Z TO R CONVERSION EXPONENT|Numeric|2|0|9|Numeric|2|3
+025009|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025010|clutterTreatment|table|CLUTTER TREATMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+025011|groundOccultationCorrectionScreening|table|GROUND OCCULTATION CORRECTION (SCREENING)|CODE TABLE|0|0|2|CODE TABLE|0|1
+025012|rangeAttenuationCorrection|table|RANGE ATTENUATION CORRECTION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025013|brightBandCorrection|flag|BRIGHT-BAND CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025014|azimuthClutterCutOff|long|AZIMUTH CLUTTER CUT-OFF (SEE NOTE 1)|Numeric|0|0|12|Numeric|0|4
+025015|radomeAttenuationCorrection|flag|RADOME ATTENUATION CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025016|clearAirAttenuationCorrection|double|CLEAR-AIR ATTENUATION CORRECTION|dB/m|5|0|6|dB/m|5|2
+025017|precipitationAttenuationCorrection|flag|PRECIPITATION ATTENUATION CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025018|aToZLawForAttenuationFactor|long|A TO Z LAW FOR ATTENUATION FACTOR|Numeric|7|0|6|Numeric|7|2
+025019|aToZLawForAttenuationExponent|long|A TO Z LAW FOR ATTENUATION EXPONENT|Numeric|2|0|7|Numeric|2|3
+025020|meanSpeedEstimation|table|MEAN SPEED ESTIMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025021|windComputationEnhancement|flag|WIND COMPUTATION ENHANCEMENT|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025025|batteryVoltage|double|BATTERY VOLTAGE|V|1|0|9|V|1|3
+025026|batteryVoltageLargeRange|double|BATTERY VOLTAGE (LARGE RANGE)|V|1|0|12|V|1|4
+025028|operatorOrManufacturerDefinedParameter|long|OPERATOR OR MANUFACTURER DEFINED PARAMETER|Numeric|1|-16384|15|Numeric|1|5
+025029|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+025030|runningMeanSeaSurfaceTemperatureUsage|table|RUNNING MEAN SEA-SURFACE TEMPERATURE USAGE|CODE TABLE|0|0|2|CODE TABLE|0|1
+025032|windProfilerModeInformation|table|WIND PROFILER MODE INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025033|windProfilerSubmodeInformation|table|WIND PROFILER SUBMODE INFORMATION*|CODE TABLE|0|0|2|CODE TABLE|0|1
+025034|windProfilerQualityControlTestResults|flag|WIND PROFILER QUALITY CONTROL TEST RESULTS*|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025036|atmosphericsLocationMethod|table|ATMOSPHERICS LOCATION METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+025040|co2WindProductDerivation|table|CO2 WIND PRODUCT DERIVATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+025041|movingPlatformDirectionReportingMethod|table|MOVING PLATFORM DIRECTION REPORTING METHOD|CODE TABLE|0|0|2|CODE TABLE|0|1
+025042|movingPlatformSpeedReportingMethod|table|MOVING PLATFORM SPEED REPORTING METHOD|CODE TABLE|0|0|2|CODE TABLE|0|1
+025043|waveSamplingIntervalTime|double|WAVE SAMPLING INTERVAL (TIME)|s|4|0|15|s|4|5
+025044|waveSamplingIntervalSpace|double|WAVE SAMPLING INTERVAL (SPACE)|m|2|0|14|m|2|5
+025045|hirsChannelCombination|flag|HIRS CHANNEL COMBINATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+025046|msuChannelCombination|flag|MSU CHANNEL COMBINATION|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+025047|ssuChannelCombination|flag|SSU CHANNEL COMBINATION|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025048|amsuAChannelCombination|flag|AMSU-A CHANNEL COMBINATION|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+025049|amsuBChannelCombination|flag|AMSU-B CHANNEL COMBINATION|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+025050|principalComponentScore|long|PRINCIPAL COMPONENT SCORE|Numeric|4|-131072|18|Numeric|4|6
+025051|avhrrChannelCombination|flag|AVHRR CHANNEL COMBINATION|FLAG TABLE|0|0|7|FLAG TABLE|0|3
+025052|log10OfPrincipalComponentsNormalizedFitToData|long|LOG-10 OF PRINCIPAL COMPONENTS NORMALIZED FIT TO DATA|Numeric|4|0|15|Numeric|4|5
+025053|observationQuality|flag|OBSERVATION QUALITY|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+025054|ssmisSubframeIdNumber|long|SSMIS SUBFRAME ID NEMBER|Numeric|0|0|5|Numeric|0|2
+025055|multiplexerHousekeeping|double|MULTIPLEXER HOUSEKEEPING|K|2|0|16|K|2|5
+025060|softwareIdentification|long|SOFTWARE IDENTIFICATION (SEE NOTE 2)|Numeric|0|0|14|Numeric|0|5
+025061|softwareVersionNumber|string|SOFTWARE IDENTIFICATION AND VERSION NUMBER|CCITT IA5|0|0|96|Character|0|12
+025062|databaseIdentification|long|DATABASE IDENTIFICATION|Numeric|0|0|14|Numeric|0|5
+025065|orientationCorrectionAzimuth|double|ORIENTATION CORRECTION (AZIMUTH)|deg|2|-1000|11|deg|2|4
+025066|orientationCorrectionElevation|double|ORIENTATION CORRECTION (ELEVATION)|deg|2|-1000|11|deg|2|4
+025067|radiosondeReleasePointPressureCorrection|long|RADIOSONDE RELEASE POINT PRESSURE CORRECTION|Pa|0|-8000|14|Pa|0|4
+025068|numberOfArchiveRecomputes|long|NUMBER OF ARCHIVE RECOMPUTES|Numeric|0|0|7|Numeric|0|3
+025069|flightLevelPressureCorrections|flag|FLIGHT LEVEL PRESSURE CORRECTIONS|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025070|majorFrameCount|long|MAJOR FRAME COUNT|Numeric|0|0|4|Numeric|0|2
+025071|frameCount|long|FRAME COUNT|Numeric|0|0|5|Numeric|0|2
+025075|satelliteAntennaCorrectionsVersionNumber|long|SATELLITE ANTENNA CORRECTIONS VERSION NUMBER|Numeric|0|0|5|Numeric|0|2
+025076|log10OfTemperatureRadianceCentralWaveNumberForAtovs|double|LOG-10 OF (TEMPERATURE-RADIANCE CENTRAL WAVENUMBER) FOR ATOVS|log (m-1)|8|0|30|log (m-1)|8|10
+025077|bandwidthCorrectionCoefficient1ForAtovs|long|BANDWIDTH CORRECTION COEFFICIENT 1 FOR ATOVS|Numeric|5|-100000|18|Numeric|5|7
+025078|bandwidthCorrectionCoefficient2ForAtovs|long|BANDWIDTH CORRECTION COEFFICIENT 2 FOR ATOVS|Numeric|5|0|17|Numeric|5|6
+025079|albedoRadianceSolarFilteredIrradianceForAtovs|double|ALBEDO-RADIANCE SOLAR FILTERED IRRADIANCE FOR ATOVS|W m-2|4|0|24|W m-2|4|8
+025080|albedoRadianceEquivalentFilterWidthForAtovs|double|ALBEDO-RADIANCE EQUIVALENT FILTER WIDTH FOR ATOVS|m|10|0|14|m|10|5
+025081|incidenceAngle|double|INCIDENCE ANGLE|deg|3|0|17|deg|3|6
+025082|azimuthAngle|double|AZIMUTH ANGLE|deg|3|0|19|deg|3|6
+025083|faradayRotationalAngle|double|FARADEY ROTATIONAL ANGLE|deg|3|0|19|deg|3|6
+025084|geometricRotationalAngle|double|GEOMETRIC ROTATIONAL ANGLE|deg|5|0|26|deg|5|8
+025085|fractionOfClearPixelsInHirsFov|long|FRACTION OF CLEAR PIXELS IN HIRS FOV|Numeric|0|0|7|Numeric|0|3
+025086|depthCorrectionIndicator|table|DEPTH CORRECTION INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+025090|orbitStateFlag|table|ORBIT STATE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+025091|structureConstantOfRefractionIndexCn2|double|STRUCTURE CONSTANT OF THE REFRACTION INDEX (CN2)|dB|3|-18192|13|dB|3|5
+025092|acousticPropagationVelocity|double|ACOUSTIC PROPAGATION VELOCITY|m/s|2|28000|14|m/s|2|5
+025093|rassComputationCorrection|flag|RASS COMPUTATION CORRECTION|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025095|altimeterStateFlag|flag|ALTIMETER STATE FLAG|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025096|radiometerStateFlag|flag|RADIOMETER STATE FLAG|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+025097|threeDimensionalErrorEstimateOfNavigatorOrbit|table|THREE DIMENSIONAL ERROR ESTIMATE OF THE NAVIGATOR ORBIT|CODE TABLE|0|0|4|CODE TABLE|0|2
+025098|altimeterDataQualityFlag|flag|ALTIMETER DATA QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025099|altimeterCorrectionQualityFlag|flag|ALTIMETER CORRECTION QUALITY|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025100|xbtOrXctdFallRateEquationCoefficientA|long|XBT/XCTD FALL RATE EQUATION COEFFICIENT A|Numeric|5|0|20|Numeric|5|6
+025101|xbtOrXctdFallRateEquationCoefficientB|long|XBT/XCTD FALL RATE EQUATION COEFFICIENT B|Numeric|5|-500000|21|Numeric|5|6
+025102|numberOfMissingLinesExcludingDataGaps|long|NUMBER OF MISSING LINES EXCLUDING DATA GAPS|Numeric|0|0|8|Numeric|0|3
+025103|numberOfDirectionalBins|long|NUMBER OF DIRECTIONAL BINS|Numeric|0|0|8|Numeric|0|3
+025104|numberOfWavelengthBins|long|NUMBER OF WAVE-LENGTH BINS|Numeric|0|0|8|Numeric|0|3
+025105|firstDirectionalBin|double|FIRST DIRECTIONAL BIN|deg|3|0|19|NA|0|0
+025106|directionalBinStep|double|DIRECTIONAL BIN STEP|deg|3|0|19|NA|0|0
+025107|firstWavelengthBin|double|FIRST WAVE-LENGTH BIN|m|3|0|29|m|3|9
+025108|lastWavelengthBin|double|LAST WAVE-LENGTH BIN|m|3|0|29|m|3|9
+025110|imageProcessingSummary|flag|IMAGE PROCESSING SUMMARY|FLAG TABLE|0|0|10|NA|0|0
+025111|numberOfInputDataGaps|long|NUMBER OF INPUT DATA GAPS|Numeric|0|0|8|Numeric|0|3
+025120|ra2L2ProcessingFlag|table|RA2-L2-PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025121|ra2L2ProcessingQuality|long|RA2-L2-PROCESSING QUALITY|%|0|0|7|%|0|3
+025122|hardwareConfigurationForRf|table|HARDWARE CONFIGURATION FOR RF|CODE TABLE|0|0|2|CODE TABLE|0|1
+025123|hardwareConfigurationForHpa|table|HARDWARE CONFIGURATION FOR HPA|CODE TABLE|0|0|2|CODE TABLE|0|1
+025124|mwrL2ProcessingFlag|table|MWR L2 PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025125|mwrL2ProcessingQuality|long|MWR L2-PROCESSING QUALITY|%|0|0|7|%|0|3
+025126|modelDryTroposphericCorrection|double|MODEL DRY TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025127|invertedBarometerCorrection|double|INVERTED BAROMETER CORRECTION|m|3|-32768|16|m|3|5
+025128|modelWetTroposphericCorrection|double|MODEL WET TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025129|mwrDerivedWetTroposphericCorrection|double|MWR DERIVED WET TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025130|ra2IonosphericCorrectionOnKuBand|double|RA2 IONOSPHERIC CORRECTION ON KU BAND|m|3|-32768|16|m|3|5
+025131|ionosphericCorrectionFromDorisOnKuBand|double|IONOSPHERIC CORRECTION FROM DORIS ON KU BAND|m|3|-32768|16|m|3|5
+025132|ionosphericCorrectionFromModelOnKuBand|double|IONOSPHERIC CORRECTION FROM MODEL ON KU BAND|m|3|-32768|16|m|3|5
+025133|seaStateBiasCorrectionOnKuBand|double|SEA STATE BIAS CORRECTION ON KU BAND|m|3|-32768|16|m|3|5
+025134|ra2IonosphericCorrectionOnSBand|double|RA2 IONOSPHERIC CORRECTION ON S BAND|m|3|-32768|16|m|3|5
+025135|ionosphericCorrectionFromDorisOnSBand|double|IONOSPHERIC CORRECTION FROM DORIS ON S BAND|m|3|-32768|16|m|3|5
+025136|ionosphericCorrectionFromModelOnSBand|double|IONOSPHERIC CORRECTION FROM MODEL ON S BAND|m|3|-32768|16|m|3|5
+025137|seaStateBiasCorrectionOnSBand|double|SEA STATE BIAS CORRECTION ON S BAND|m|3|-32768|16|m|3|5
+025138|averageSignalToNoiseRatio|long|AVERAGE SIGNAL TO NOISE RATION|Numeric|0|-2048|12|Numeric|0|4
+025140|startChannel|long|START CHANNEL|Numeric|0|0|14|Numeric|0|5
+025141|endChannel|long|END CHANNEL|Numeric|0|0|14|Numeric|0|5
+025142|channelScaleFactor|long|CHANNEL SCALE FACTOR|Numeric|0|0|6|Numeric|0|2
+025143|linearCoefficient|long|LINEAR COEFFICIENT|Numeric|6|-5000000|24|Numeric|6|8
+025150|methodOfTropicalCycloneIntensityAnalysisUsingSatelliteData|table|SATELLITE INTENSITY ANALYSIS METHOD OF TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|2|2
+025160|kuBandNetInstrumentalCorrection|double|KU BAND INSTRUMENTAL CORRECTION|m|4|-120000|18|NA|0|0
+025161|cBandNetInstrumentalCorrection|double|C BAND INSTRUMENTAL CORRECTION|m|4|-120000|18|NA|0|0
+025162|seaStateBiasCorrectionOnCBand|double|SEA STATE BIAS CORRECTION ON C BAND|m|4|-6000|13|NA|0|0
+025163|altimeterIonosphericCorrectionOnKuBand|double|ALTIMETER IONOSPHERIC CORRECTION ON KU BAND|m|3|-32768|16|NA|0|0
+025164|radiometerWetTroposphericCorrection|double|RADIOMETER WET|m|4|-5000|13|NA|0|0
+025174|smosInformationFlag|flag|SMOS INFORMATION FLAG|FLAG TABLE|0|0|14|FLAG TABLE|0|5
+026001|principalTimeOfDailyReadingInUtcOfMaximumTemperature|double|PRINCIPAL TIME OF DAILY READING IN UTC OF MAXIMUM TEMPERATURE|h|1|0|12|h|1|3
+026002|principalTimeOfDailyReadingInUtcOfMinimumTemperature|double|PRINCIPAL TIME OF DAILY READING IN UTC OF MINIMUM TEMPERATURE|h|1|0|12|h|1|3
+026003|timeDifference|long|TIME DIFFERENCE|min|0|-1440|12|min|0|4
+026010|hoursIncluded|flag|HOURS INCLUDED|FLAG TABLE|0|0|26|FLAG TABLE|0|9
+026020|durationOfPrecipitation|long|DURATION OF PRECIPITATION|min|0|0|11|min|0|4
+027001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+027002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+027003|alternateLatitude|double|ALTERNATE LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+027004|alternateLatitude|double|ALTERNATE LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+027010|footprintAxis1|long|FOOTPRINT AXIS 1|m|-1|0|14|m|-1|5
+027020|satelliteLocationCounter|long|SATELLITE LOCATION COUNTER|Numeric|0|0|16|Numeric|0|5
+027021|satelliteSublocationDimension|long|SATELLITE SUBLOCATION DIMENSION|Numeric|0|0|16|Numeric|0|5
+027031|DistanceFromEarthCentreInDirectionOf0DegreesLongitude|double|IN DIRECTION OF 0 DEGREES LONGITUDE, DISTANCE FROM THE EARTH'S C|m|2|-1073741824|31|m|2|10
+027080|viewingAzimuthAngle|double|VIEWING AZIMUTH ANGLE|deg|2|0|16|deg|0|5
+028001|longitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+028002|longitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+028003|alternateLongitude|double|ALTERNATE LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+028004|alternateLongitude|double|ALTERNATE LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+028010|footprintAxis2|long|FOOTPRINT AXIS 2|m|-1|0|14|m|-1|5
+028031|DistanceFromEarthCentreInDirection90DegreesEast|double|IN DIRECTION 90 DEGREES EAST, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10
+029001|projectionType|table|PROJECTION TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+029002|coordinateGridType|table|CO-ORDINATE GRID TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+030001|pixelValue4Bits|long|PIXEL VALUE (4 BITS)|Numeric|0|0|4|Numeric|0|2
+030002|pixelValue8Bits|long|PIXEL VALUE (8 BITS)|Numeric|0|0|8|Numeric|0|3
+030004|pixelValue16Bits|long|PIXEL VALUE (16 BITS)|Numeric|0|0|16|Numeric|0|5
+030010|numberOfGridPoints|long|NUMBER OF GRID POINTS|Numeric|0|0|13|Numeric|0|4
+030021|numberOfPixelsPerRow|long|NUMBER OF PIXELS PER ROW|Numeric|0|0|12|Numeric|0|4
+030022|numberOfPixelsPerColumn|long|NUMBER OF PIXELS PER COLUMN|Numeric|0|0|12|Numeric|0|4
+030031|pictureType|table|PICTURE TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+030032|combinationWithOtherData|flag|COMBINATION WITH OTHER DATA|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+031000|shortDelayedDescriptorReplicationFactor|long|SHORT DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|1|Numeric|0|1
+031001|delayedDescriptorReplicationFactor|long|DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|8|Numeric|0|3
+031002|extendedDelayedDescriptorReplicationFactor|long|EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|16|Numeric|0|5
+031011|delayedDescriptorAndDataRepetitionFactor|long|DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|8|Numeric|0|3
+031012|extendedDelayedDescriptorAndDataRepetitionFactor|long|EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|16|Numeric|0|5
+031021|associatedFieldSignificance|table|ASSOCIATED FIELD SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+031031|dataPresentIndicator|flag|DATA PRESENT INDICATOR|FLAG TABLE|0|0|1|FLAG TABLE|0|1
+033002|qualityInformation|table|QUALITY INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033003|qualityInformation|table|QUALITY INFORMATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+033005|qualityInformationAwsData|flag|QUALITY INFORMATION (AWS DATA)|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+033006|internalMeasurementStatusInformationAws|table|INTERNAL MEASUREMENT STATUS INFORMATION (AWS)|CODE TABLE|0|0|3|CODE TABLE|0|1
+033007|percentConfidence|long|PER CENT CONFIDENCE|%|0|0|7|%|0|3
+033009|relativeError|double|RELATIVE ERROR|%|6|0|20|%|0|7
+033015|dataQualityCheckIndicator|table|DATA QUALITY CHECK INDICATOR|CODE TABLE|0|0|6|CODE TABLE|0|2
+033020|qualityControlIndicationOfFollowingValue|table|QUALITY CONTROL INDICATION OF FOLLOWING VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+033021|qualityOfFollowingValue|table|QUALITY OF FOLLOWING VALUE|CODE TABLE|0|0|2|CODE TABLE|0|1
+033022|qualityOfBuoySatelliteTransmission|table|QUALITY OF BUOY SATELLITE TRANSMISSION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033023|qualityOfBuoyLocation|table|QUALITY OF BUOY LOCATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033024|stationElevationQualityMarkForMobileStations|table|STATION ELEVATION QUALITY MARK (FOR MOBILE STATIONS)|CODE TABLE|0|0|4|CODE TABLE|0|2
+033025|acarsInterpolatedValuesIndicator|table|ACARS INTERPOLATED VALUES|CODE TABLE|0|0|3|CODE TABLE|0|1
+033026|moistureQuality|table|MOISTURE QUALITY|CODE TABLE|0|0|6|CODE TABLE|0|2
+033027|locationQualityClassRangeOfRadiusOf66Confidence|table|LOCATION QUALITY CLASS (RANGE OF RADIUS OF 66 % CONFIDENCE)|CODE TABLE|0|0|3|CODE TABLE|0|1
+033028|snapshotOverallQuality|table|SNAPSHOT OVERALL QUALITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+033030|scanLineStatusFlagsForAtovs|flag|SCAN LINE STATUS FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033031|scanLineQualityFlagsForAtovs|flag|SCAN LINE QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033032|channelQualityFlagsForAtovs|flag|CHANNEL QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033033|fieldOfViewQualityFlagsForAtovs|flag|FIELD OF VIEW QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033035|qualityControl|table|MANUAL/AUTOMATIC QUALITY CONTROL|CODE TABLE|0|0|4|CODE TABLE|0|2
+033036|nominalConfidenceThreshold|long|NOMINAL CONFIDENCE THRESHOLD|%|0|0|7|%|0|3
+033037|windCorrelationError|flag|WIND CORRELATION ERROR|FLAG TABLE|0|0|20|FLAG TABLE|0|7
+033038|qualityFlagsForGroundBasedGnssData|flag|QUALITY FLAGS FOR GROUND-BASED GNSS DATA|FLAG TABLE|0|0|10|FLAG TABLE|0|4
+033039|radioOccultationDataQualityFlags|flag|QUALITY FLAGS FOR RADIO OCCULTATION DATA|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+033040|confidenceInterval|long|CONFIDENCE INTERVAL|%|0|0|7|%|0|3
+033041|attributeOfFollowingValue|table|ATTRIBUTE OF FOLLOWING VALUE|CODE TABLE|0|0|2|CODE TABLE|0|1
+033042|typeOfLimitRepresentedByFollowingValue|table|TYPE OF LIMIT REPRESENTED BY FOLLOWING VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+033043|astConfidence|flag|AST CONFIDENCE|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+033044|asarQualityInformation|flag|ASAR QUALITY INFORMATION|FLAG TABLE|0|0|15|FLAG TABLE|0|5
+033045|probabilityOfFollowingEvent|long|PROBABILITY OF FOLLOWING EVENT|%|0|0|7|%|0|3
+033046|conditionalProbability|long|CONDITIONAL PROBABILITY OF FOLLOWING EVENT WITH RESPECT TO SPECI|%|0|0|7|%|0|3
+033047|measurementConfidenceData|flag|MEASUREMENT CONFIDENCE DATA|FLAG TABLE|0|0|31|FLAG TABLE|0|11
+033048|confidenceMeasureOfSarInversion|table|CONFIDENCE MEASURE OF SAR INVERSION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033049|confidenceMeasureOfWindRetrieval|table|CONFIDENCE MEASURE OF WIND RETRIEVAL|CODE TABLE|0|0|2|CODE TABLE|0|1
+033050|globalGtsppQualityFlag|table|GLOBAL GTSPP QUALITY FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+033052|sBandOceanRetrackingQuality|flag|S BAND OCEAN RETRACKING QUALITY|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+033053|kuBandOceanRetrackingQuality|flag|KU BAND OCEAN RETRACKING QUALITY|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+033060|gqisFlagQual|table|GQISFLAGQUAL-INDIVIDUAL IASI-SYSTEM QUALITY FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+033061|gqisQualIndex|long|GQISQUALINDEX - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE|%|0|0|7|%|0|3
+033062|gqisQualIndexLoc|long|GQISQUALINDEXLOC - INDICATOR FOR GEOMETRIC QUALITY INDEX|%|0|0|7|%|0|3
+033063|gqisQualIndexRad|long|GQISQUALINDEXRAD - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE|%|0|0|7|%|0|3
+033064|gqisQualIndexSpect|long|GQISQUALINDEXSPECT - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE|%|0|0|7|%|0|3
+033065|gqisSysTecQual|long|GQISSYSTECSONDQUAL - OUTPUT OF SYSTEM TEC QUALITY FUNCTION|Numeric|0|0|24|Numeric|0|24
+033066|sbuvTotalOzoneQuality|table|SBUV TOTAL OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033067|sbuvProfileOzoneQuality|table|SBUV PROFILE OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033070|totalOzoneQuality|table|TOTAL OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033071|profileOzoneQuality|table|PROFILE OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+035000|fmAndRegionalCodeNumber|table|FM AND REGIONAL CODE NUMBER|CODE TABLE|0|0|10|CODE TABLE|0|3
+035001|timeFrameForMonitoring|table|TIME-FRAME FOR MONITORING|CODE TABLE|0|0|3|CODE TABLE|0|1
+035011|numberOfReportsActuallyReceived|long|NUMBER OF REPORTS ACTUALLY RECEIVED|Numeric|0|0|14|Numeric|0|4
+035021|bulletinBeingMonitoredTtaaii|string|BULLETIN BEING MONITORED (TTAAII)|CCITT IA5|0|0|48|Character|0|6
+035022|bulletinBeingMonitoredYygggg|string|BULLETIN BEING MONITORED (YYGGGG)|CCITT IA5|0|0|48|Character|0|6
+035023|bulletinBeingMonitoredCccc|string|BULLETIN BEING MONITORED (CCCC)|CCITT IA5|0|0|32|Character|0|4
+035024|bulletinBeingMonitoredBbb|string|BULLETIN BEING MONITORED (BBB)|CCITT IA5|0|0|24|Character|0|3
+035030|discrepanciesInAvailabilityOfExpectedData|table|DISCREPANCIES IN THE AVAILABILITY OF EXPECTED DATA|CODE TABLE|0|0|4|CODE TABLE|0|1
+035031|qualifierOnMonitoringResults|table|QUALIFIER ON MONITORING RESULTS|CODE TABLE|0|0|7|CODE TABLE|0|2
+035032|causeOfMissingData|table|CAUSE OF MISSING DATA|CODE TABLE|0|0|4|CODE TABLE|0|1
+035033|observationAndCollectionDeficiencies|table|OBSERVATION AND COLLECTION DEFICIENCIES|CODE TABLE|0|0|7|CODE TABLE|0|2
+035034|statisticalTrendsForAvailabilityOfDataDuringSurveyPeriods|table|STATISTICAL TRENDS FOR AVAILABILITY OF DATA (DURING THE SURVEY P|CODE TABLE|0|0|3|CODE TABLE|0|1
+035035|reasonForTermination|table|REASON FOR TERMINATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+040001|surfaceSoilMoisture|double|SURFACE SOIL MOISTURE (MS)|%|1|0|10|%|1|4
+040002|estimatedErrorInSurfaceSoilMoisture|double|ESTIMATED ERROR IN SURFACE SOIL MOISTURE|%|1|0|10|%|1|4
+040003|meanSurfaceSoilMoisture|long|MEAN SURFACE SOIL MOISTURE|Numeric|3|0|10|Numeric|3|4
+040004|rainFallDetection|long|RAIN FALL DETECTION|Numeric|3|0|10|Numeric|3|4
+040005|soilMoistureCorrectionFlag|flag|SOIL MOISTURE CORRECTION FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040006|soilMoistureProcessingFlag|flag|SOIL MOISTURE PROCESSING FLAG|FLAG TABLE|0|0|16|FLAG TABLE|0|5
+040007|soilMoistureQuality|double|SOIL MOISTURE QUALITY|%|1|0|10|%|1|4
+040008|frozenLandSurfaceFraction|double|FROZEN LAND SURFACE FRACTION|%|1|0|10|%|1|4
+040009|inundationAndWetlandFraction|double|INUNDATION AND WETLAND FRACTION|%|1|0|10|%|1|4
+040010|topographicComplexity|double|TOPOGRAPHIC COMPLEXITY|%|1|0|10|%|1|4
+040011|interpolationFlag|flag|INTERPOLATION FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040012|radiometerDataQualityFlag|flag|RADIOMETER DATA QUALITY FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040013|radiometerBrightnessTemperatureInterpretationFlag|table|RADIOMETER BRIGHTNESS TEMPERATURE INTERPOLATION FLAG|CODE TABLE|0|0|3|NA|0|0
+040014|highFrequencyFluctuationsOfSeaSurfaceTopographyCorrection|double|HIGH FREQUENCY FLUCTUATIONS OF THE SEA SURFACE TOPOGRAPHY CORREC|m|4|-3000|13|NA|0|0
+040018|averageOfImagerMeasurements|double|GLACAVGLMAGLLS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|NA|0|0
+040019|giacvarimagiisVarianceOfImagerMeasurements|double|GLACVARLMAGLLS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|NA|0|0
+040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|NA|0|0
+040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH SNOW/I|%|0|0|7|NA|0|0
+040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|NA|0|0
diff --git a/definitions/bufr/tables/0/wmo/12/sequence.def b/definitions/bufr/tables/0/wmo/12/sequence.def
new file mode 100644
index 0000000..037fc3a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/12/sequence.def
@@ -0,0 +1,678 @@
+"300002" = [  000002, 000003 ]
+"300003" = [  000010, 000011, 000012 ]
+"300004" = [  300003, 000013, 000014, 000015, 000016, 000017, 000018, 000019, 000020 ]
+"300010" = [  300003, 101000, 031001, 000030 ]
+"301001" = [  001001, 001002 ]
+"301002" = [  001003, 001004, 001005 ]
+"301003" = [  001011, 001012, 001013 ]
+"301004" = [  001001, 001002, 001015, 002001 ]
+"301005" = [  001035, 001034 ]
+"301011" = [  004001, 004002, 004003 ]
+"301012" = [  004004, 004005 ]
+"301013" = [  004004, 004005, 004006 ]
+"301014" = [  102002, 301011, 301012 ]
+"301021" = [  005001, 006001 ]
+"301022" = [  005001, 006001, 007001 ]
+"301023" = [  005002, 006002 ]
+"301024" = [  005002, 006002, 007001 ]
+"301025" = [  301023, 004003, 301012 ]
+"301026" = [  301021, 004003, 004003, 004004, 004004, 004005, 004005 ]
+"301027" = [  008007, 101000, 031001, 301028, 008007 ]
+"301028" = [  008040, 033042, 007010, 101000, 031002, 301023, 019007, 008040 ]
+"301031" = [  301001, 002001, 301011, 301012, 301022 ]
+"301032" = [  301001, 002001, 301011, 301012, 301024 ]
+"301033" = [  001005, 002001, 301011, 301012, 301021 ]
+"301034" = [  001005, 002001, 301011, 301012, 301023 ]
+"301035" = [  001005, 001012, 001013, 002001, 301011, 301012, 301023 ]
+"301036" = [  301003, 002001, 301011, 301012, 301023 ]
+"301037" = [  301001, 002011, 002012, 301011, 301012, 301022 ]
+"301038" = [  301001, 002011, 002012, 301011, 301012, 301024 ]
+"301039" = [  301003, 002011, 002012, 301011, 301012, 301023 ]
+"301040" = [  301003, 002011, 002012, 301011, 301012, 301024 ]
+"301041" = [  001007, 002021, 002022, 301011, 301012 ]
+"301042" = [  301041, 301021 ]
+"301043" = [  001007, 002023, 301011, 301013, 301021 ]
+"301044" = [  001007, 002024, 301011, 301013, 301021 ]
+"301045" = [  301011, 301012, 201138, 202131, 004006, 201000, 202000, 304030, 304031 ]
+"301046" = [  001007, 001012, 002048, 021119, 025060, 202124, 002026, 002027, 202000, 005040
+               ]
+"301047" = [  001007, 025060, 001033, 001034, 001012, 301045, 002021, 301011, 301012, 201138,
+               202131, 004006, 201000, 202000, 301023 ]
+"301048" = [  002104, 002121, 002113, 002026, 002027, 002111, 002140, 202127, 001013, 202126,
+               007001, 202000, 025010, 021064 ]
+"301049" = [  002111, 002112, 021062, 021063, 021065 ]
+"301051" = [  001006, 002061, 301011, 301012, 301021, 008004 ]
+"301055" = [  001005, 002001, 301011, 301012, 301021, 001012, 001014 ]
+"301062" = [  101000, 031001, 301001 ]
+"301065" = [  001006, 001008, 002001, 002002, 002005, 002062, 002070, 002065 ]
+"301066" = [  301011, 301013, 301023, 007004, 002064, 008004 ]
+"301070" = [  002143, 002142, 002144 ]
+"301071" = [  001007, 001031, 002020, 002028, 002029 ]
+"301072" = [  301071, 301011, 301013, 301021 ]
+"301074" = [  002143, 002142, 002145, 002146 ]
+"301075" = [  301001, 001015, 301024, 008021, 301011, 301012 ]
+"301076" = [  002011, 002143, 002142 ]
+"301089" = [  001101, 001102 ]
+"301090" = [  301004, 301011, 301012, 301021, 007030, 007031 ]
+"301091" = [  002180, 002181, 002182, 002183, 002184, 002179, 002186, 002187, 002188, 002189
+               ]
+"301092" = [  001011, 001003, 002001, 301011, 301012, 301021, 007030, 007031, 033024 ]
+"301093" = [  301036, 007030, 007031 ]
+"301110" = [  301001, 001011, 002011, 002014, 002003 ]
+"301111" = [  301001, 001011, 002011, 002013, 002014, 002003 ]
+"301112" = [  001006, 002011, 002013, 002014, 002003 ]
+"301113" = [  008021, 301011, 301013 ]
+"301114" = [  301021, 007030, 007031, 007007, 033024 ]
+"301120" = [  301001, 001094, 002011, 301121 ]
+"301121" = [  008041, 301122, 301021, 007031, 007007 ]
+"301122" = [  301011, 301012, 201135, 202130, 004006, 202000, 201000 ]
+"301123" = [  102002, 008041, 001062, 301001, 001094, 002011, 001018, 001095, 025061, 025068,
+               001082, 001083, 001081, 002067, 002066, 002014, 025067, 025065, 025066, 002095,
+               002096, 002097, 002016, 002083, 002080, 002081, 001093, 002084, 002085, 002086,
+               002082, 008041, 301011 ]
+"301125" = [  001033, 001034, 025060, 001007, 002019, 001012 ]
+"302001" = [  010004, 010051, 010061, 010063 ]
+"302002" = [  010004, 007004, 010003, 010061, 010063 ]
+"302003" = [  011011, 011012, 012004, 012006, 013003, 020001, 020003, 020004, 020005 ]
+"302004" = [  020010, 008002, 020011, 020013, 020012, 020012, 020012 ]
+"302005" = [  008002, 020011, 020012, 020013 ]
+"302006" = [  010004, 010051, 010062, 010063 ]
+"302011" = [  302001, 302003, 302004 ]
+"302012" = [  302002, 302003, 302004 ]
+"302013" = [  302006, 302003, 101000, 031001, 302005 ]
+"302021" = [  022001, 022011, 022021 ]
+"302022" = [  022002, 022012, 022022 ]
+"302023" = [  022003, 022013, 022023 ]
+"302024" = [  302022, 101002, 302023 ]
+"302031" = [  302001, 010062, 007004, 010009 ]
+"302032" = [  007032, 012101, 012103, 013003 ]
+"302033" = [  007032, 020001 ]
+"302034" = [  007032, 013023 ]
+"302035" = [  302032, 302033, 302034, 007032, 302004, 101000, 031001, 302005 ]
+"302036" = [  105000, 031001, 008002, 020011, 020012, 020014, 020017 ]
+"302037" = [  020062, 013013, 012113 ]
+"302038" = [  020003, 004024, 020004, 020005 ]
+"302039" = [  004024, 014031 ]
+"302040" = [  007032, 102002, 004024, 013011 ]
+"302041" = [  007032, 004024, 004024, 012111, 004024, 004024, 012112 ]
+"302042" = [  007032, 002002, 008021, 004025, 011001, 011002, 008021, 103002, 004025, 011043,
+               011041 ]
+"302043" = [  302038, 101002, 302039, 302040, 302041, 302042, 007032 ]
+"302044" = [  004024, 002004, 013033 ]
+"302045" = [  004024, 014002, 014004, 014016, 014028, 014029, 014030 ]
+"302046" = [  004024, 004024, 012049 ]
+"302047" = [  102003, 008002, 020054 ]
+"302048" = [  005021, 007021, 020012, 005021, 007021 ]
+"302049" = [  008002, 020011, 020013, 020012, 020012, 020012, 008002 ]
+"302050" = [  008041, 005021, 007005, 202130, 006021, 202000, 008041, 201131, 202129, 002115,
+               010004, 002115, 013003, 202000, 201000, 002115, 011001, 011002, 002115, 102002,
+               012101, 004024, 002115, 012103, 012102, 101003, 020012, 020011, 020013, 101002,
+               020003 ]
+"302051" = [  010004, 010051, 007004, 010003, 012004, 012051, 012016, 012017, 013004, 102004,
+               008051, 008020 ]
+"302052" = [  007032, 007033, 012101, 002039, 012102, 012103, 013003 ]
+"302053" = [  007032, 007033, 020001 ]
+"302054" = [  302052, 302053, 007033, 302034, 007032, 302004, 101000, 031001, 302005 ]
+"302055" = [  020031, 020032, 020033, 020034, 020035, 020036, 020037, 020038 ]
+"302056" = [  002038, 007063, 022043, 007063 ]
+"302057" = [  302056, 302021, 302024 ]
+"302058" = [  007032, 007033, 004024, 004024, 012111, 004024, 004024, 012112 ]
+"302059" = [  007032, 007033, 002002, 008021, 004025, 011001, 011002, 008021, 103002, 004025,
+               011043, 011041 ]
+"302060" = [  302038, 302040, 302058, 302059 ]
+"302062" = [  302001, 302052, 302053, 007033, 101000, 031000, 302034, 007032, 101000, 031001,
+               302005, 008002, 101000, 031000, 302055, 101000, 031000, 302056, 101000, 031000,
+               302021, 101000, 031000, 302024 ]
+"302063" = [  302038, 101000, 031000, 302040, 101000, 031000, 302058, 302059 ]
+"302066" = [  020023, 020024, 020027, 020054, 020023, 020027, 020054, 020025, 020026, 020027,
+               020040, 020066, 020027, 020021, 020067, 020027 ]
+"302069" = [  007032, 007033, 033041, 020001 ]
+"302070" = [  007032, 007033, 011001, 011002, 011043, 011041, 011016, 011017 ]
+"302071" = [  007032, 007033, 008021, 004025, 011001, 011002, 008021, 103002, 004025, 011043,
+               011041, 004025, 011016, 011017 ]
+"302072" = [  007032, 007033, 012101, 012103, 013003 ]
+"302073" = [  020010, 105004, 008002, 020011, 020012, 033041, 020013 ]
+"302074" = [  020003, 004025, 020004, 020005 ]
+"302075" = [  008021, 004025, 013055, 013058, 008021 ]
+"302076" = [  020021, 020022, 026020, 020023, 020024, 020025, 020026 ]
+"302077" = [  007032, 007033, 004025, 012111, 012112, 007032, 004025, 012112 ]
+"302078" = [  002176, 020062, 002177, 013013 ]
+"302079" = [  007032, 002175, 002178, 004025, 013011 ]
+"302080" = [  002185, 004025, 013033 ]
+"302081" = [  004025, 014031 ]
+"302082" = [  004025, 014002, 014004, 014016, 014028, 014029, 014030 ]
+"302083" = [  004025, 008023, 010004, 011001, 011002, 012101, 013003, 008023 ]
+"303001" = [  007003, 011001, 011002 ]
+"303002" = [  007004, 011001, 011002 ]
+"303003" = [  007004, 010003, 012001, 012003 ]
+"303004" = [  007004, 010003, 012001, 012003, 011001, 011002 ]
+"303011" = [  007003, 008001, 011001, 011002 ]
+"303012" = [  007004, 008001, 011001, 011002 ]
+"303013" = [  007004, 008001, 010003, 012001, 013003, 011001, 011002 ]
+"303014" = [  007004, 008001, 010003, 012001, 012003, 011001, 011002 ]
+"303021" = [  007004, 007004, 204007, 031021 ]
+"303022" = [  303021, 010003, 204000 ]
+"303023" = [  303021, 012001, 204000 ]
+"303024" = [  303021, 013016, 204000 ]
+"303025" = [  002025, 204007, 031021, 012063, 204000 ]
+"303026" = [  007004, 008003, 204007, 031021, 012001, 204000 ]
+"303027" = [  007004, 204007, 031021, 010003, 204000 ]
+"303031" = [  007004, 008003, 007021, 007022, 008012, 012061 ]
+"303032" = [  020011, 020016 ]
+"303033" = [  020010, 020016 ]
+"303040" = [  008041, 004025, 004026, 301021, 301122, 201131, 202129, 025069, 007004, 013003,
+               202000, 201000, 002013, 012101, 010009, 102002, 008040, 035035 ]
+"303041" = [  002152, 002023, 007004, 011001, 011002, 002153, 002154, 012071 ]
+"303050" = [  004086, 008042, 007004, 005015, 006015, 011001, 011002 ]
+"303051" = [  004086, 008042, 007004, 005015, 006015, 011061, 011062 ]
+"303052" = [  004086, 008042, 007009, 005015, 006015, 011001, 011002 ]
+"303053" = [  004086, 008042, 007009, 005015, 006015, 011061, 011062 ]
+"303054" = [  004086, 008042, 007004, 010009, 005015, 006015, 012101, 012103, 011001, 011002
+               ]
+"304001" = [  008003, 010004, 012001, 011001, 011002 ]
+"304002" = [  008003, 010004, 011001, 011002 ]
+"304003" = [  008003, 012001 ]
+"304004" = [  008003, 010004, 020010, 012001 ]
+"304005" = [  002024, 007004, 007004, 013003 ]
+"304006" = [  014001, 014001, 014003 ]
+"304011" = [  002163, 002164, 008012, 007024, 002057, 008021, 004001, 004002, 004003, 004004,
+               008021, 004024, 110004, 008021, 004004, 004005, 004006, 008021, 004004, 004005,
+               004006, 011001, 011002, 103010, 002163, 007004, 012001 ]
+"304030" = [  027031, 028031, 010031 ]
+"304031" = [  001041, 001042, 001043 ]
+"304032" = [  002153, 002154, 020081, 020082, 020012 ]
+"304033" = [  002152, 002166, 002167, 002153, 002154, 012075, 012076, 012063 ]
+"304034" = [  102004, 027001, 028001, 007022, 005043, 020010, 020016, 033003, 010040 ]
+"304035" = [  002153, 002154, 012063, 008001, 012063, 008001, 012063, 008001, 008003, 012063,
+               008003, 012063, 008003, 012063, 008003 ]
+"304036" = [  020082, 008012, 020082, 008012, 020081, 008003, 020081, 008003, 020081, 008003,
+               020081, 008003 ]
+"304037" = [  002153, 002154, 012063, 008011, 012063, 008011, 012063, 008011, 008003, 012063,
+               008003, 012063, 008003, 012063, 008003 ]
+"305003" = [  301012, 004065, 101000, 031001, 305001 ]
+"305006" = [  013072, 013082, 013019, 012001, 013073, 013060 ]
+"305007" = [  301029, 301012, 004065, 101000, 031001, 305006 ]
+"305008" = [  305006, 012030 ]
+"305009" = [  301029, 301012, 004065, 101000, 031001, 305008 ]
+"305011" = [  301029, 301012, 004065, 101000, 031001, 305010 ]
+"305018" = [  301029, 301012, 004065, 103000, 031001, 305008, 305016, 305017 ]
+"306001" = [  002032, 102000, 031001, 007062, 022042 ]
+"306002" = [  002031, 022004, 022031 ]
+"306003" = [  002002, 011011, 011012, 012004 ]
+"306004" = [  002032, 002033, 103000, 031001, 007062, 022043, 022062 ]
+"306005" = [  002031, 103000, 031001, 007062, 022004, 022031 ]
+"306006" = [  306003, 306002, 022063 ]
+"306007" = [  001012, 001014, 306008, 004024, 027003, 028003 ]
+"306008" = [  002034, 002035, 002036 ]
+"306019" = [  001075, 301011, 301012, 022042, 022120, 022121, 004015, 004065 ]
+"306020" = [  306024, 102006, 022038, 022039 ]
+"306021" = [  001075, 301011, 301012, 022122, 022123, 012001, 303002 ]
+"306022" = [  001075, 301011, 301012, 022038, 022039 ]
+"306023" = [  001015, 301023, 301011, 301012, 022038, 022039, 022120, 022121 ]
+"306024" = [  001075, 301011, 301012, 022042, 022120, 022121, 004025, 004015 ]
+"306025" = [  306019, 102006, 022038, 022039 ]
+"307001" = [  301031, 302011 ]
+"307002" = [  301032, 302011 ]
+"307003" = [  307001, 101000, 031001, 302005 ]
+"307004" = [  307002, 101000, 031001, 302005 ]
+"307005" = [  307001, 101004, 302005 ]
+"307006" = [  307002, 101004, 302005 ]
+"307007" = [  301031, 302012 ]
+"307008" = [  301032, 302012 ]
+"307009" = [  301031, 302013 ]
+"307011" = [  001063, 002001, 301011, 301012, 301024, 007006, 011001, 011016, 011017, 011002,
+               011041, 007006, 012001, 012003, 010052, 020009 ]
+"307012" = [  103000, 031001, 008023, 005021, 020001 ]
+"307013" = [  106000, 031001, 001064, 008014, 020061, 008014, 020061, 020018 ]
+"307014" = [  101000, 031001, 020019 ]
+"307015" = [  101000, 031001, 302005, 020002 ]
+"307016" = [  101000, 031001, 020020 ]
+"307017" = [  101000, 031001, 011070 ]
+"307018" = [  008016, 102000, 031001, 008017, 301012, 104000, 031001, 007006, 011001, 011002,
+               011041, 020009, 101000, 031001, 020001, 307014 ]
+"307020" = [  307011, 307014, 307016 ]
+"307021" = [  307011, 307012, 307013, 307014, 307015, 307016, 307017, 307018, 307015 ]
+"307022" = [  001015, 301011, 301012, 301022, 008021, 004025, 010004, 012001, 013003, 033038,
+               008022, 106025, 002020, 001050, 005021, 007021, 015031, 015032, 008060, 015033,
+               015034, 008060, 015033, 015034, 015035, 201131, 202129, 013016, 202000, 201000,
+               015011 ]
+"307030" = [  015001, 015002 ]
+"307031" = [  008022, 008023, 015001, 008023, 015001, 008023, 015002 ]
+"307041" = [  301001, 001015, 301022, 301011, 301012, 301070, 307030 ]
+"307042" = [  301001, 001015, 301022, 301011, 301012, 008021, 004025, 301070, 307031 ]
+"307043" = [  301001, 001015, 301024, 301011, 301012, 301074, 307030 ]
+"307045" = [  001063, 008079, 002001, 301011, 301012, 301024, 007032, 011001, 011016, 011017,
+               008054, 011083, 011084, 011002, 008054, 011085, 011086, 011041, 008054, 007032,
+               012023, 012024, 007032, 010052, 020009 ]
+"307046" = [  020060, 102000, 031001, 005021, 020059 ]
+"307047" = [  105000, 031001, 008002, 020011, 020012, 020013, 020092, 020002, 020091 ]
+"307048" = [  008016, 102000, 031001, 008017, 301012, 112000, 031000, 007032, 011001, 008054,
+               011083, 011084, 011002, 008054, 011085, 011086, 011041, 008054, 007032, 020009,
+               101000, 031000, 020060, 307014, 307047 ]
+"307049" = [  102000, 031000, 022043, 022021 ]
+"307050" = [  101000, 031000, 020085, 102000, 031001, 001064, 020085, 105000, 031001, 001064,
+               020086, 020087, 020088, 020089 ]
+"307052" = [  001063, 008039, 301011, 301012, 008079, 008039, 301011, 301012, 008039, 301011,
+               301012, 301024 ]
+"307053" = [  007032, 011001, 008054, 011083, 011084, 011002, 008054, 011085, 011086, 011041,
+               008054, 007032, 020009, 020060, 307014, 307047 ]
+"307054" = [  007032, 008039, 004003, 004004, 008023, 012023, 008039, 004003, 004004, 008023,
+               012023, 008023, 007032 ]
+"307055" = [  033045, 008016, 008039, 004003, 301012, 008039, 004003, 301012, 307053 ]
+"307056" = [  307052, 307053, 307054, 101000, 031001, 307055 ]
+"307059" = [  307045, 307046, 307013, 307014, 307047, 307016, 307017, 307049, 307050, 101000,
+               031001, 307048 ]
+"307060" = [  007061, 012030 ]
+"307061" = [  301031, 101005, 307060 ]
+"307062" = [  301032, 101005, 307060 ]
+"307063" = [  007061, 012130 ]
+"307071" = [  301090, 004074, 004023, 008023, 010004, 010051, 007004, 010009, 007032, 012101,
+               002051, 004051, 012118, 004052, 012119, 013004, 008023, 012151, 007032, 102005,
+               008050, 008020, 014032, 014033, 008050, 008020, 102018, 008052, 008022, 007032,
+               008053, 004003, 012152, 008053, 004003, 012153, 008053, 004003, 008023, 012101,
+               008053, 004003, 008023, 012101, 008023, 007032, 002002, 008053, 004003, 011046,
+               008053, 004003, 004004, 004023, 007032, 013060, 013051, 004053, 008050, 008020,
+               102006, 008052, 008022, 008053, 004003, 013052, 007032 ]
+"307072" = [  004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010004, 010051,
+               007004, 010009, 007032, 012101, 002051, 004051, 012118, 004052, 012119, 013004,
+               012151, 007032, 014032, 008023, 004001, 004001, 004002, 004003, 004004, 004022,
+               007032, 008023, 013060, 004053, 008023, 102008, 008050, 008020 ]
+"307073" = [  307071, 307072 ]
+"307080" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 302043, 302044,
+               101002, 302045, 302046 ]
+"307081" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012122, 013056,
+               013057, 020101, 020102, 020103, 020104, 020105, 020106, 020107, 020108, 302043,
+               302044, 101002, 302045, 302046 ]
+"307082" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012121, 012122,
+               302043, 302044, 101002, 302045, 302046 ]
+"307083" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012122, 302043,
+               302044, 101002, 302045, 302046 ]
+"307084" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 020055, 101000,
+               031001, 205001, 302043, 302044, 101002, 302045, 302046 ]
+"307086" = [  301090, 302031, 302035, 302036, 008002, 302037, 302066, 302043, 302044, 101002,
+               302045 ]
+"307090" = [  301092, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 302043, 302044,
+               101002, 302045, 302046 ]
+"307091" = [  301089, 301090, 008010, 301091, 302001, 007004, 010009, 302072, 103000, 031000,
+               101005, 307063, 007061, 101000, 031000, 302069, 007032, 007033, 105000, 031000,
+               020031, 020032, 002038, 022043, 302021, 101000, 031000, 302078, 101000, 031000,
+               302073, 101000, 031000, 302074, 101000, 031000, 302075, 102000, 031000, 004025,
+               302076, 302071, 302077, 007033, 101000, 031000, 302079, 007032, 101000, 031000,
+               302080, 101000, 031000, 302081, 101000, 031000, 302082, 102000, 031000, 004025,
+               013059, 101000, 031000, 302083, 033005, 033006 ]
+"308001" = [  301033, 302011, 022042 ]
+"308002" = [  301034, 302011, 022042 ]
+"308003" = [  301035, 302011, 022042 ]
+"308004" = [  301036, 302011, 022042 ]
+"308005" = [  308004, 302024 ]
+"308006" = [  010004, 010061, 010063, 011001, 011002, 012004, 013003, 022042 ]
+"308007" = [  301055, 302011, 007062, 022042 ]
+"308008" = [  001003, 001020, 001005, 002001, 002036, 002149, 301011, 301012, 008021, 301011,
+               301012, 008021, 301021, 027004, 028004, 007030, 001051, 002148, 001012, 001014,
+               002040, 033022, 033023, 033027, 022063, 302021, 302022, 302023, 008081, 025026,
+               008081, 025026, 008081, 025026, 008081, 002034, 022060, 007070, 002190, 025086,
+               002035, 002168, 020031, 002038, 306004, 002030, 306005, 007031, 008081, 012064,
+               302001, 008081, 007032, 007033, 012101, 012103, 013003, 007032, 007033, 008082,
+               007033, 002169, 002002, 008021, 004025, 011001, 011002, 008021, 004025, 011043,
+               011041, 008082, 007033, 007032, 004024, 013011, 007032, 008021, 004024, 014021,
+               008021, 025028, 025028, 025028 ]
+"308009" = [  301093, 302001, 302054, 008002, 302055, 302057, 302060 ]
+"308010" = [  001011, 113000, 031001, 301011, 301012, 301021, 004080, 022049, 004080, 022059,
+               004080, 022005, 002042, 022032, 002042, 004080 ]
+"308011" = [  001011, 002001, 301011, 301012, 301023, 007030, 007031, 004074, 004023, 008023,
+               010051, 007032, 007033, 012101, 013004, 007032, 007033, 302056, 008023, 004003,
+               004004, 004023, 007032, 013060, 013051, 004053, 007032 ]
+"308012" = [  004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010051, 007032,
+               007033, 012101, 013002, 007032, 007033, 302056, 008023, 004001, 004001, 004002,
+               004003, 004004, 004022, 007032, 008023, 013060, 004053, 008023 ]
+"308013" = [  308011, 308012 ]
+"308015" = [  001003, 001020, 001005, 001011, 001205, 001001, 001002, 002044, 002045, 301011,
+               301012, 301021, 022063, 105002, 002098, 022070, 022071, 022073, 022074, 002098,
+               022076, 022077, 022094, 025043, 022078, 121000, 031001, 002098, 022082, 022084,
+               116000, 031001, 022080, 022085, 022086, 022087, 022088, 022089, 103000, 031001,
+               022090, 022186, 022187, 103000, 031001, 022092, 022186, 022187, 002098 ]
+"308016" = [  001003, 001020, 001005, 001011, 001205, 001001, 001002, 002044, 002045, 301011,
+               301012, 301021, 022063, 105002, 002098, 022070, 022072, 022073, 022075, 002098,
+               022076, 022077, 022094, 025044, 022079, 121000, 031001, 002098, 022083, 022084,
+               116000, 031001, 022081, 022085, 022086, 022087, 022088, 022089, 103000, 031001,
+               022091, 022186, 022187, 103000, 031001, 022093, 022186, 022187, 002098 ]
+"309001" = [  301037, 101000, 031001, 303011 ]
+"309002" = [  301038, 101000, 031001, 303011 ]
+"309003" = [  301037, 101000, 031001, 303012 ]
+"309004" = [  301038, 101000, 031001, 303012 ]
+"309005" = [  301037, 302004, 101000, 031001, 303013 ]
+"309006" = [  301038, 302004, 101000, 031001, 303013 ]
+"309007" = [  301037, 302004, 101000, 031001, 303014 ]
+"309008" = [  301038, 302004, 101000, 031001, 303014 ]
+"309011" = [  301039, 101000, 031001, 303011 ]
+"309012" = [  301039, 101000, 031001, 303012 ]
+"309013" = [  301039, 302004, 101000, 031001, 303013 ]
+"309014" = [  301039, 302004, 101000, 031001, 303014 ]
+"309015" = [  301040, 101000, 031001, 303011 ]
+"309016" = [  301040, 101000, 031001, 303012 ]
+"309017" = [  301040, 302004, 101000, 031001, 303013 ]
+"309018" = [  301040, 302004, 101000, 031001, 303014 ]
+"309019" = [  301031, 002003, 101000, 031001, 303011 ]
+"309020" = [  301031, 002003, 104000, 031001, 007003, 011003, 011004, 011005 ]
+"309030" = [  015004, 015005, 104000, 031001, 004015, 008006, 007004, 015003 ]
+"309031" = [  015004, 015005, 104000, 031001, 004025, 008006, 007004, 015003 ]
+"309040" = [  301075, 301076, 309030 ]
+"309042" = [  307042, 301075, 301076, 309030 ]
+"309050" = [  301110, 301113, 301114, 101000, 031002, 303050, 101000, 031001, 303051 ]
+"309051" = [  301110, 301113, 301114, 101000, 031002, 303052, 101000, 031001, 303053 ]
+"309052" = [  301111, 301113, 301114, 302049, 022043, 101000, 031002, 303054, 101000, 031001,
+               303051 ]
+"309053" = [  301112, 301113, 301114, 101000, 031002, 303054, 101000, 031001, 303051 ]
+"309054" = [  301001, 001011, 301011, 301012, 301021, 007030, 007031, 007007, 004023, 004059,
+               115000, 031001, 008001, 008023, 007004, 010009, 012101, 012103, 008023, 011001,
+               011002, 008023, 011019, 008050, 008020, 008050, 008020 ]
+"309060" = [  301123, 301121, 302050, 303040 ]
+"309061" = [  301120, 008041, 301122, 201131, 202129, 025069, 007004, 202000, 201000, 033007,
+               033035, 033015, 013009, 033007, 033035, 033015, 002013, 012101, 033007, 033035,
+               033015 ]
+"309062" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015, 033007 ]
+"309063" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015, 033007 ]
+"309064" = [  301120, 008041, 301122, 201131, 202129, 104002, 025069, 007004, 033035, 033015,
+               013003, 033035, 033015, 202000, 201000, 104002, 002013, 012101, 033035, 033015,
+               012103, 033035, 033015, 010009, 033035, 033015 ]
+"309065" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015 ]
+"309066" = [  301120, 008041, 301122, 008040, 201131, 202129, 025069, 007004, 013003, 202000,
+               201000, 002013, 012101, 012103, 010009, 010007, 011002, 011001 ]
+"310001" = [  301042, 303031, 303032, 101026, 303025 ]
+"310002" = [  301042, 303031, 303032, 101009, 303023 ]
+"310003" = [  301042, 303031, 303032, 101006, 303023 ]
+"310004" = [  301042, 303031, 303032, 101003, 303024 ]
+"310005" = [  301042, 303031, 303033, 101000, 031001, 303025 ]
+"310006" = [  301042, 303031, 303033, 101000, 031001, 303023 ]
+"310007" = [  301042, 303031, 303033, 101000, 031001, 303024 ]
+"310008" = [  310011, 101019, 310012, 002150, 025079, 025080, 033032, 014045 ]
+"310009" = [  310011, 101015, 310012 ]
+"310010" = [  310011, 101005, 310012 ]
+"310011" = [  008070, 001033, 001034, 008070, 001033, 001034, 001007, 002048, 005040, 025075,
+               201133, 005041, 201000, 005043, 025070, 033030, 033031, 004001, 004002, 004003,
+               004004, 004005, 202131, 201138, 004006, 201000, 202000, 005001, 006001, 202126,
+               007001, 202000, 007024, 005021, 007025, 005022, 033033, 002151, 012064, 002151,
+               012064, 002151, 012064, 002151, 012064 ]
+"310012" = [  002150, 025076, 025077, 025078, 033032, 201132, 202129, 012063, 202000, 201000
+               ]
+"310013" = [  001007, 005040, 004001, 004002, 004003, 004004, 004005, 004006, 005001, 006001,
+               007025, 005043, 025085, 201131, 202129, 002150, 008023, 008072, 014027, 008072,
+               014027, 002150, 008023, 008072, 014027, 008072, 014027, 002150, 008023, 008072,
+               014027, 008072, 014027, 202000, 201000, 201132, 202129, 002150, 008023, 008072,
+               012063, 008072, 012063, 002150, 008023, 008072, 012063, 008072, 012063, 008023,
+               008072, 012063, 008072, 012063, 002150, 008023, 008072, 012063, 008072, 012063,
+               202000, 201000 ]
+"310014" = [  301072, 303041, 304011 ]
+"310015" = [  301072, 007024, 010002, 303041, 101003, 304032, 002152, 002024, 007004, 007004,
+               013003, 101003, 304033 ]
+"310016" = [  301072, 007024, 010002, 303041, 101012, 304032, 002152, 002024, 007004, 007004,
+               013003, 101012, 304033 ]
+"310019" = [  001007, 002019, 301011, 301013, 301023, 007025, 008021, 007025, 008021, 007025,
+               008021, 008029, 005040, 008075, 008003, 010004, 008003, 207002, 015001, 207000,
+               033070, 015030, 207002, 020081, 207000, 008003, 033042, 007004, 207002, 015001,
+               207000, 008003, 113021, 007004, 007004, 207002, 008021, 015005, 008021, 015005,
+               033007, 207000, 008026, 101020, 025143, 008026, 008043, 109015, 007004, 008090,
+               207006, 015008, 207000, 008090, 207002, 033007, 207000, 008043, 033071, 108008,
+               202124, 201107, 002071, 201000, 202000, 207002, 020081, 207000 ]
+"310020" = [  310022, 301011, 301013, 301021, 304034, 310021 ]
+"310021" = [  108000, 031001, 201131, 202129, 007004, 007004, 202000, 201000, 015020, 010002
+               ]
+"310022" = [  001007, 002019, 001033, 002172 ]
+"310023" = [  301072, 030021, 030022, 008012, 007024, 007025, 010002, 101012, 304032, 105002,
+               002152, 002024, 007004, 007004, 013003, 101012, 304033 ]
+"310024" = [  301072, 030021, 030022, 008012, 007024, 007025, 010002, 101003, 304032, 105002,
+               002152, 002024, 007004, 007004, 013003, 101003, 304033 ]
+"310025" = [  001007, 008021, 004001, 004002, 004003, 004004, 004005, 201138, 202131, 004006,
+               202000, 201000, 201132, 005041, 201000, 201129, 005043, 201000, 005002, 006002,
+               013040, 020029, 104024, 005042, 012163, 021083, 021084, 115003, 004001, 004002,
+               004003, 201142, 202131, 004026, 202000, 201000, 005001, 006001, 201138, 202129,
+               007001, 202000, 201000, 008021, 004001, 004002, 004003, 004004, 004005, 005040,
+               101003, 012070, 025054, 101004, 025055, 008007, 104028, 005002, 006002, 002111,
+               005021 ]
+"310026" = [  310022, 025060, 008021, 301011, 301012, 201138, 202131, 004006, 202000, 201000,
+               033039, 033007, 304030, 304031, 002020, 001050, 202127, 304030, 202000, 304031,
+               201133, 202131, 004016, 202000, 201000, 301021, 304030, 010035, 005021, 010036,
+               113000, 031002, 301021, 005021, 108000, 031001, 002121, 007040, 015037, 008023,
+               201125, 015037, 201000, 008023, 033007, 108000, 031002, 007007, 015036, 008023,
+               201123, 015036, 201000, 008023, 033007, 116000, 031002, 007009, 010004, 012001,
+               013001, 008023, 201120, 010004, 201000, 201122, 012001, 201000, 201123, 013001,
+               201000, 008023, 033007, 008003, 007009, 010004, 008023, 201120, 010004, 201000,
+               008023, 033007 ]
+"310027" = [  301071, 301011, 301013, 301021, 030021, 030022, 010002, 304036, 002152, 002167,
+               101011, 304035 ]
+"310028" = [  301071, 301011, 301013, 301021, 030021, 030022, 010002, 304036, 002152, 002167,
+               101011, 304037 ]
+"310029" = [  110000, 031001, 201138, 202130, 007004, 007004, 202000, 201000, 015020, 010002,
+               012101, 013098 ]
+"310030" = [  310022, 301011, 301013, 301021, 304034, 310029 ]
+"310050" = [  310051, 310052, 101000, 031002, 310053, 101004, 310054, 020010, 310052, 101015,
+               310053, 310052, 101005, 310053 ]
+"310051" = [  001007, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 007025, 005022, 102009, 002151, 012064 ]
+"310052" = [  002019, 301011, 301012, 202131, 201138, 004006, 201000, 202000, 301021, 007024,
+               005021, 005043 ]
+"310053" = [  201134, 005042, 201000, 025076, 033032, 012163 ]
+"310054" = [  201134, 005042, 201000, 025076, 033032, 201131, 202129, 102002, 008023, 014027,
+               008023, 202000, 201000 ]
+"310055" = [  310051, 310052, 102020, 025076, 025052, 101000, 031002, 025050 ]
+"311001" = [  301051, 007002, 012001, 011001, 011002, 011031, 011032, 011033, 020041 ]
+"311002" = [  301065, 301066, 311003, 311004 ]
+"311003" = [  010070, 011001, 011002, 012001, 013002 ]
+"311004" = [  101000, 031000, 011034, 101000, 031000, 011035, 101000, 031000, 011075, 101000,
+               031000, 011076, 101000, 031000, 033025, 101000, 031000, 033026 ]
+"311005" = [  001008, 001023, 301021, 301011, 301013, 007010, 008009, 011001, 011002, 011031,
+               011036, 012101, 033025 ]
+"311006" = [  007010, 011001, 011002, 002064, 012101, 012103 ]
+"311007" = [  007010, 301021, 011001, 011002, 002064, 012101, 012103 ]
+"311008" = [  001008, 301011, 301013, 301021, 008004, 101000, 031001, 311006 ]
+"311009" = [  001008, 301011, 301013, 301021, 008004, 101000, 031001, 311007 ]
+"312001" = [  301043, 304001 ]
+"312002" = [  301043, 304002 ]
+"312003" = [  301042, 304003 ]
+"312004" = [  301042, 304004 ]
+"312005" = [  301042, 020014 ]
+"312006" = [  301044, 304005 ]
+"312007" = [  301042, 304006 ]
+"312010" = [  001007, 005040, 002021, 005041, 004001, 004043 ]
+"312011" = [  202131, 201149, 004006, 201000, 202126, 010002, 202000, 005043, 005053 ]
+"312012" = [  202129, 201132, 101019, 012063, 201000, 202000 ]
+"312013" = [  005042, 202129, 201135, 012063, 201000, 202000 ]
+"312014" = [  312010, 312011, 105056, 301023, 005042, 005052, 312012, 312013 ]
+"312015" = [  109011, 301023, 005042, 005052, 202129, 201132, 101004, 012063, 202000, 201000
+               ]
+"312016" = [  312010, 312011, 312015 ]
+"312017" = [  109008, 301023, 005042, 005052, 202129, 201132, 101003, 012063, 202000, 201000
+               ]
+"312018" = [  312010, 312011, 312017 ]
+"312019" = [  301047, 301048, 015015, 029002, 021076, 106012, 201129, 006030, 201000, 102012,
+               005030, 021075, 021066 ]
+"312020" = [  301047, 301048, 015015, 029002, 021076, 104012, 006030, 102012, 005030, 021075,
+               021066 ]
+"312021" = [  301047, 101003, 301049, 011012, 011011, 021067 ]
+"312022" = [  301047, 008022, 011012, 011050, 022070, 022026, 312041, 010050, 021068, 021071,
+               021072, 021073, 312042, 021062, 015011 ]
+"312023" = [  301047, 103003, 008022, 012061, 022050, 021069, 021085 ]
+"312024" = [  312020, 008060, 008022, 008060, 008022, 025014, 022101, 022097, 022098, 022099,
+               022100 ]
+"312025" = [  312019, 008060, 008022, 008060, 008022, 025014, 022101, 022097, 022098, 022099,
+               022100 ]
+"312026" = [  301046, 301011, 301013, 301023, 312031, 101004, 312030, 021110, 301023, 321027,
+               021111, 301023, 321027, 021112, 301023, 321027, 021113, 301023, 321027 ]
+"312027" = [  301047, 105009, 301023, 007021, 012061, 007021, 012061, 021085, 021070 ]
+"312028" = [  301046, 301011, 301013, 301023, 008025, 201136, 004006, 201000, 312031, 312032,
+               101004, 312030, 101002, 312033, 021110, 301023, 321028, 021111, 301023, 321028,
+               021112, 301023, 321028, 021113, 301023, 321028 ]
+"312030" = [  201130, 202129, 011012, 202000, 201000, 011052, 201135, 202130, 011011, 202000,
+               201000, 011053, 021104 ]
+"312031" = [  005034, 006034, 021109, 011081, 011082, 021101, 021102, 021103 ]
+"312032" = [  021120, 021121, 013055, 021122 ]
+"312033" = [  002104, 008022, 012063, 012065 ]
+"312041" = [  201141, 202130, 007001, 201000, 202000 ]
+"312042" = [  021077, 021078, 021079, 021080, 021081, 021082 ]
+"312045" = [  001007, 002019, 001096, 025061, 005040, 301011, 301013, 301021, 007002, 012180,
+               012181, 012182, 012183, 012184, 012185, 002174, 021086, 012186, 021087, 012187,
+               033043 ]
+"312050" = [  001007, 002019, 001096, 025061, 005040, 301011, 301013, 301021, 007025, 005022,
+               010080, 027080, 008003, 007004, 013093, 008003, 201131, 202129, 007004, 007004,
+               202000, 201000, 013095 ]
+"312051" = [  001007, 002019, 001096, 025061, 005040, 008075, 301011, 301013, 301021, 001012,
+               201131, 001013, 201000, 010032, 010033, 010034, 007002, 008012, 025110, 025111,
+               025102, 002104, 025103, 025104, 025105, 025106, 025107, 025108, 002111, 002121,
+               002026, 002027, 021130, 021131, 021132, 021133, 021064, 025014, 021134, 107018,
+               005030, 105024, 201130, 006030, 201000, 021135, 021136, 033044 ]
+"312052" = [  001007, 002019, 001096, 025061, 005040, 025120, 025121, 025124, 025125, 025122,
+               025123, 301011, 301013, 301021, 007002, 002119, 033047, 010081, 010082, 010083,
+               010084, 002116, 002117, 002118, 002156, 002157, 014055, 022150, 022151, 022152,
+               022153, 022154, 022155, 022156, 022157, 022158, 022159, 021137, 021138, 021139,
+               021140, 021141, 021142, 010085, 010086, 010087, 010088, 010089, 010090, 010091,
+               010092, 010093, 011002, 025126, 025127, 025128, 025129, 025130, 025131, 025132,
+               025133, 025134, 025135, 025136, 025137, 013096, 013097, 011095, 011096, 012188,
+               012189, 002158, 002159, 033052, 033053, 021143, 021144 ]
+"312053" = [  001007, 002019, 001096, 025061, 005040, 008075, 301011, 301013, 301021, 001012,
+               201131, 001013, 201000, 010032, 010033, 010034, 007002, 008012, 025110, 025111,
+               025102, 002104, 025103, 025104, 025105, 025106, 025107, 025108, 011001, 011002,
+               022160, 025138, 201130, 202129, 022021, 202000, 201000, 033048, 033049, 002026,
+               002027, 021130, 021131, 021132, 021133, 025014, 106036, 005030, 104024, 201130,
+               006030, 201000, 022161, 033044 ]
+"312055" = [  005033, 005040, 006034, 010095, 021157 ]
+"312056" = [  025060, 001032, 011082, 011081, 020095, 020096, 021155, 201133, 021101, 021102,
+               201000 ]
+"312057" = [  201130, 202129, 011012, 202000, 201000, 201131, 202129, 011011, 202000, 201000,
+               021156, 021104 ]
+"312058" = [  301125, 301011, 301013, 301021, 312055, 021150, 101003, 321030 ]
+"312059" = [  312056, 101000, 031001, 312057 ]
+"312060" = [  025060, 025062, 040001, 040002, 021062, 021151, 021152, 021153, 021154, 021062,
+               021062, 040003, 040004, 040005, 040006, 040007, 020065, 040008, 040009, 040010
+               ]
+"312061" = [  312058, 312060, 312059 ]
+"312070" = [  001007, 002019, 001144, 001124, 030010, 301011, 301013, 301021, 007012, 015012,
+               012165, 012166, 012167, 012168, 027010, 028010, 002099, 013048, 025081, 025082,
+               025083, 025084, 012080, 012081, 012082, 025174, 033028 ]
+"313009" = [  021001, 101000, 031001, 021001 ]
+"313010" = [  021036, 101000, 031001, 021036 ]
+"313031" = [  006002, 006012, 101000, 031002, 030001 ]
+"313032" = [  005002, 005012, 101000, 031002, 313031 ]
+"313041" = [  006002, 110000, 031001, 104000, 031001, 006012, 101000, 031012, 030001, 006012,
+               101000, 031001, 030001 ]
+"313042" = [  005002, 005012, 101000, 031002, 313041 ]
+"313043" = [  006002, 005002, 005012, 112000, 031001, 110000, 031001, 104000, 031001, 006012,
+               101000, 031011, 030001, 006012, 101000, 031001, 030001 ]
+"315001" = [  001011, 301011, 301012, 301023, 306001 ]
+"315002" = [  001011, 301011, 301012, 301023, 306004 ]
+"315003" = [  001087, 001085, 001086, 002036, 002148, 002149, 022055, 022056, 022067, 301011,
+               301012, 301021, 008080, 033050, 109000, 031002, 007065, 008080, 033050, 022045,
+               008080, 033050, 022064, 008080, 033050 ]
+"316001" = [  301011, 004004, 301023, 001021, 002041, 019001, 010051, 019002, 019003, 019004
+               ]
+"316002" = [  008021, 004001, 004002, 004003, 004004, 004005, 001033, 008021, 004001, 004002,
+               004003, 004004, 004005, 007002, 007002 ]
+"316003" = [  110000, 031001, 008011, 008007, 104000, 031001, 005002, 006002, 010002, 011002,
+               008007, 008011 ]
+"316004" = [  111000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               011031, 008007, 008011 ]
+"316005" = [  108000, 031001, 008005, 008007, 005002, 006002, 001026, 019001, 008007, 008005
+               ]
+"316006" = [  112000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               020011, 020012, 008007, 008011 ]
+"316007" = [  110000, 031001, 008011, 008007, 104000, 031001, 005002, 006002, 019005, 019006,
+               008007, 008011 ]
+"316008" = [  111000, 031001, 008001, 008007, 008023, 103000, 031001, 005002, 006002, 010002,
+               008023, 008007, 008001 ]
+"316009" = [  111000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               020041, 008007, 008011 ]
+"316010" = [  107000, 031001, 008011, 008007, 001022, 005002, 006002, 008007, 008011 ]
+"316011" = [  117000, 031001, 008011, 001022, 008007, 102000, 031001, 005002, 006002, 008021,
+               004001, 004002, 004003, 004004, 004005, 020090, 008021, 008007, 008011 ]
+"316020" = [  001023, 001025, 001027, 301011, 301012 ]
+"316021" = [  301023, 002041, 019001, 019007, 019005, 019006, 019008, 008005, 010004, 008005,
+               010004, 019007, 008005, 008021, 004075, 011040, 019007, 105004, 005021, 005021,
+               102002, 019003, 019004 ]
+"316022" = [  001032, 002041, 019001, 019010, 118000, 031001, 008021, 004014, 008005, 301023,
+               019005, 019006, 010004, 011041, 008021, 004075, 011040, 019008, 105004, 005021,
+               005021, 102002, 019003, 019004 ]
+"316026" = [  316020, 316021 ]
+"316030" = [  301014, 001037, 010064, 008019, 001062, 008019, 001065, 008019, 001062, 008019
+               ]
+"316031" = [  008021, 301011, 301012, 301027, 019005, 019006, 020028, 008021 ]
+"316032" = [  008021, 301011, 301012, 301027, 008021 ]
+"316033" = [  008021, 301011, 301012, 101000, 031001, 301027, 008021 ]
+"316034" = [  008079, 316030, 008011, 001022, 008007, 301023, 008007, 020090, 316031, 101000,
+               031000, 316032, 101000, 031001, 316033, 008011, 008079 ]
+"316035" = [  008079, 316030, 008011, 020023, 020021, 020008, 316031, 008011, 008079 ]
+"316036" = [  008079, 316030, 008011, 001027, 316031, 101000, 031000, 316032, 101000, 031001,
+               316033, 008011, 008079 ]
+"316037" = [  008079, 316030, 008011, 011031, 316031, 008011, 008079 ]
+"316038" = [  008079, 316030, 008011, 020041, 020021, 316031, 008011, 008079 ]
+"316039" = [  008079, 316030, 008011, 020024, 316031, 008011, 008079 ]
+"316040" = [  316030, 008079, 301014, 001037, 010064, 008079 ]
+"316050" = [  301001, 301011, 301012, 002160, 008005, 005002, 006002, 008005, 019100, 019005,
+               019006, 019101, 019102, 019103, 019104, 019105 ]
+"316052" = [  301005, 301011, 301012, 001007, 025150, 122000, 031001, 001027, 019150, 019106,
+               008005, 005002, 006002, 008005, 019107, 019005, 019006, 019108, 019109, 019110,
+               019111, 019112, 019113, 019114, 019115, 019116, 019117, 019118, 019119 ]
+"318001" = [  301025, 024011 ]
+"318003" = [  301026, 024005, 024004, 024021 ]
+"318004" = [  301025, 004023, 013011, 024005, 024004, 024022 ]
+"321001" = [  002101, 002114, 002105, 002106, 002107, 002121 ]
+"321003" = [  021051, 021014, 021017, 021030 ]
+"321004" = [  301031, 002003, 101000, 031001, 321003 ]
+"321005" = [  025004, 002121, 002122, 002123, 002124, 002125, 002126, 002127, 002128, 002129,
+               002130, 002131 ]
+"321006" = [  025001, 025002, 025003, 025005 ]
+"321007" = [  025009, 025010, 025011, 025012, 025013, 025015, 025016, 025017 ]
+"321008" = [  025006, 025007, 025008 ]
+"321009" = [  025018, 025019 ]
+"321010" = [  002101, 007002, 002102, 002103, 002104, 002105, 002106, 002107, 002108, 002109,
+               002110, 002132, 002133 ]
+"321011" = [  030031, 030032, 029002 ]
+"321012" = [  101000, 031001, 002135 ]
+"321021" = [  002003, 002101, 201130, 002106, 201000, 201132, 202130, 002121, 202000, 201000,
+               201133, 202129, 025001, 202000, 201000 ]
+"321022" = [  007007, 204001, 031021, 011001, 204000, 011002, 204001, 031021, 011006, 204000,
+               021030 ]
+"321023" = [  007007, 021091, 021030, 202129, 021014, 201129, 021017, 202000, 201000 ]
+"321024" = [  007007, 204001, 031021, 012007, 011006, 204000, 021030 ]
+"321025" = [  007007, 021091, 021030, 202129, 021014, 201129, 021017, 202000, 201000, 021092,
+               021030, 025092, 201129, 202129, 021017, 202000, 201000 ]
+"321026" = [  007007, 204001, 031021, 012007, 025091, 011071, 011072, 011073, 011074, 204000
+               ]
+"321027" = [  021118, 202129, 201132, 002112, 201000, 201131, 002111, 201000, 202000, 002104,
+               021105, 021106, 021107, 021114, 021115, 021116, 008018, 021117 ]
+"321028" = [  021118, 202129, 201132, 002112, 201000, 201131, 002111, 201000, 202000, 002104,
+               021123, 021106, 021107, 021114, 021115, 021116, 008018, 021117 ]
+"321030" = [  008085, 202129, 201131, 002111, 201000, 202000, 002134, 021062, 021063, 021158,
+               021159, 021160, 021161, 021162, 021163, 021164, 021165, 021166 ]
+"340001" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 033060, 033061, 033062, 033063, 033064, 033065, 101010, 340002, 101087,
+               340003, 002019, 025051, 101007, 340004 ]
+"340002" = [  025140, 025141, 025142 ]
+"340003" = [  104100, 201136, 005042, 201000, 014046 ]
+"340004" = [  005060, 005061, 025085, 105006, 005042, 025142, 014047, 025142, 014048 ]
+"340005" = [  001007, 002019, 001096, 025061, 005044, 005040, 001030, 301011, 301012, 004007,
+               005001, 006001, 008029, 008074, 008077, 040011, 025097, 025095, 025098, 025099,
+               021144, 025096, 040012, 040013, 021169, 022151, 022162, 022163, 025160, 025133,
+               022156, 022164, 022165, 022166, 021137, 021138, 022167, 021139, 021118, 021145,
+               021146, 021147, 022168, 022169, 022170, 025161, 025162, 022171, 022172, 022173,
+               022174, 021170, 021171, 022175, 021172, 021118, 021173, 021174, 021175, 102003,
+               002153, 012063, 013090, 013091, 007002, 011097, 011098, 007002, 011095, 011096,
+               010096, 010081, 010082, 010083, 010101, 025132, 025163, 025126, 025128, 025164,
+               010085, 010097, 010086, 010087, 010092, 010088, 010089, 010098, 010099, 010090,
+               010100, 010093, 025127, 040014 ]
+"340007" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 103003, 025140, 025141, 033060, 033061, 033062, 033063, 033064, 033065,
+               040020, 101010, 340002, 101087, 340003, 002019, 025051, 101007, 340004, 020081,
+               008029, 020083, 008029, 040018, 040019, 040021, 040022 ]
+"340008" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 103003, 025140, 025141, 033060, 033061, 033062, 033063, 033064, 033065,
+               040020, 101010, 340002, 104000, 031002, 201136, 005042, 201000, 014046, 002019,
+               025051, 101007, 340004, 020081, 008029, 020083, 008029, 040018, 040019, 040021,
+               040022 ]
diff --git a/definitions/bufr/tables/0/wmo/13/element.table b/definitions/bufr/tables/0/wmo/13/element.table
index 69bdaaa..cc9082d 100644
--- a/definitions/bufr/tables/0/wmo/13/element.table
+++ b/definitions/bufr/tables/0/wmo/13/element.table
@@ -262,12 +262,12 @@
 004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2
 004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2
 004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2
-004065|shortTimeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
-004073|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
-004074|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
-004075|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
+004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
+004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
+004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
+004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
 004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2
-004086|longTimePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
+004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
 005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
 005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
 005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
@@ -1292,6 +1292,6 @@
 040014|highFrequencyFluctuationsOfSeaSurfaceTopographyCorrection|double|HIGH FREQUENCY FLUCTUATIONS OF THE SEA SURFACE TOPOGRAPHY CORREC|m|4|-3000|13|NA|0|0
 040018|averageOfImagerMeasurements|double|GLACAVGLMAGLLS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|NA|0|0
 040019|giacvarimagiisVarianceOfImagerMeasurements|double|GLACVARLMAGLLS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|NA|0|0
-040020|gqisflagqualdetailedQualityFlagForSystem|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|NA|0|0
+040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|NA|0|0
 040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH SNOW/I|%|0|0|7|NA|0|0
 040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|NA|0|0
diff --git a/definitions/bufr/tables/0/wmo/14/element.table b/definitions/bufr/tables/0/wmo/14/element.table
index 2c36594..fe23b67 100644
--- a/definitions/bufr/tables/0/wmo/14/element.table
+++ b/definitions/bufr/tables/0/wmo/14/element.table
@@ -285,13 +285,13 @@
 004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2
 004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2
 004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2
-004065|shortTimeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
-004066|shortTimeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
-004073|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
-004074|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
-004075|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
+004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
+004066|timeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
+004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
+004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
+004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
 004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2
-004086|longTimePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
+004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
 005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
 005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
 005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
@@ -1452,7 +1452,7 @@
 040017|nonNormalizedPrincipalComponentScore|long|NON-NORMALISED PRINCIPAL COMPONENT SCORE|Numeric|0|-1073741824|31|NA|0|0
 040018|averageOfImagerMeasurements|double|GLACAVGIMAGIIS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|NA|0|0
 040019|giacvarimagiisVarianceOfImagerMeasurements|double|GLACVARIMAGIIS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|NA|0|0
-040020|gqisflagqualdetailedQualityFlagForSystem|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|NA|0|0
+040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|NA|0|0
 040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH ICE|%|0|0|7|NA|0|0
 040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|NA|0|0
 040023|auxiliaryAltimeterStateFlags|flag|AUXILIARY ALTIMETER STATE FLAG|FLAG TABLE|0|0|5|NA|0|0
diff --git a/definitions/bufr/tables/0/wmo/15/element.table b/definitions/bufr/tables/0/wmo/15/element.table
index c1b2e5d..b18640f 100644
--- a/definitions/bufr/tables/0/wmo/15/element.table
+++ b/definitions/bufr/tables/0/wmo/15/element.table
@@ -292,13 +292,13 @@
 004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2
 004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2
 004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2
-004065|shortTimeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
-004066|shortTimeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
-004073|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
-004074|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
-004075|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
+004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
+004066|timeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
+004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
+004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
+004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
 004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2
-004086|longTimePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
+004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
 005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
 005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
 005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
@@ -1468,7 +1468,7 @@
 040017|nonNormalizedPrincipalComponentScore|long|NON-NORMALISED PRINCIPAL COMPONENT SCORE|Numeric|0|-1073741824|31|NA|0|0
 040018|averageOfImagerMeasurements|double|GLACAVGIMAGIIS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|NA|0|0
 040019|giacvarimagiisVarianceOfImagerMeasurements|double|GLACVARIMAGIIS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|NA|0|0
-040020|gqisflagqualdetailedQualityFlagForSystem|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|NA|0|0
+040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|NA|0|0
 040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH ICE|%|0|0|7|NA|0|0
 040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|NA|0|0
 040023|auxiliaryAltimeterStateFlags|flag|AUXILIARY ALTIMETER STATE FLAG|FLAG TABLE|0|0|5|NA|0|0
diff --git a/definitions/bufr/tables/0/wmo/16/element.table b/definitions/bufr/tables/0/wmo/16/element.table
index 1c8e61b..751427d 100644
--- a/definitions/bufr/tables/0/wmo/16/element.table
+++ b/definitions/bufr/tables/0/wmo/16/element.table
@@ -292,13 +292,13 @@
 004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2
 004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2
 004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2
-004065|shortTimeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
-004066|shortTimeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
-004073|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
-004074|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
-004075|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
+004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
+004066|timeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
+004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
+004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
+004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
 004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2
-004086|longTimePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
+004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
 005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
 005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
 005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
@@ -1462,7 +1462,7 @@
 040017|nonNormalizedPrincipalComponentScore|long|NON-NORMALISED PRINCIPAL COMPONENT SCORE|Numeric|0|-1073741824|31|Numeric|0|10
 040018|averageOfImagerMeasurements|double|GIACAVGIMAGIIS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8
 040019|giacvarimagiisVarianceOfImagerMeasurements|double|GIACVARIMAGIIS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8
-040020|gqisflagqualdetailedQualityFlagForSystem|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|FLAG TABLE|0|6
 040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH SNOW/I|%|0|0|7|%|0|3
 040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|Numeric|0|3
 040023|auxiliaryAltimeterStateFlags|flag|AUXILIARY ALTIMETER STATE FLAGS|FLAG TABLE|0|0|5|FLAG TABLE|0|2
diff --git a/definitions/bufr/tables/0/wmo/17/element.table b/definitions/bufr/tables/0/wmo/17/element.table
index ac5f62b..b938b78 100644
--- a/definitions/bufr/tables/0/wmo/17/element.table
+++ b/definitions/bufr/tables/0/wmo/17/element.table
@@ -292,13 +292,13 @@
 004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2
 004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2
 004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2
-004065|shortTimeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
-004066|shortTimeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
-004073|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
-004074|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
-004075|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
+004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
+004066|timeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
+004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
+004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
+004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
 004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2
-004086|longTimePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
+004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
 005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
 005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
 005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
@@ -1462,7 +1462,7 @@
 040017|nonNormalizedPrincipalComponentScore|long|NON-NORMALISED PRINCIPAL COMPONENT SCORE|Numeric|0|-1073741824|31|Numeric|0|10
 040018|averageOfImagerMeasurements|double|GIACAVGIMAGIIS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8
 040019|giacvarimagiisVarianceOfImagerMeasurements|double|GIACVARIMAGIIS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8
-040020|gqisflagqualdetailedQualityFlagForSystem|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|FLAG TABLE|0|6
 040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH SNOW/I|%|0|0|7|%|0|3
 040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|Numeric|0|3
 040023|auxiliaryAltimeterStateFlags|flag|AUXILIARY ALTIMETER STATE FLAGS|FLAG TABLE|0|0|5|FLAG TABLE|0|2
diff --git a/definitions/bufr/tables/0/wmo/18/element.table b/definitions/bufr/tables/0/wmo/18/element.table
index e00bd64..a055194 100644
--- a/definitions/bufr/tables/0/wmo/18/element.table
+++ b/definitions/bufr/tables/0/wmo/18/element.table
@@ -294,13 +294,13 @@
 004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2
 004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2
 004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2
-004065|shortTimeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
-004066|shortTimeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
-004073|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
-004074|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
-004075|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
+004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
+004066|timeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
+004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
+004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
+004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
 004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2
-004086|longTimePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
+004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
 005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
 005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
 005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
@@ -794,7 +794,7 @@
 015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6
 015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG_10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3
 015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG_10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4
-015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween025And25M|double|LOG_10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4
+015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG_10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4
 015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3
 019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
 019002|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-2|0|12|m|-2|4
@@ -1472,7 +1472,7 @@
 040017|nonNormalizedPrincipalComponentScore|long|NON-NORMALIZED PRINCIPAL COMPONENT SCORE|Numeric|0|-1073741824|31|Numeric|0|10
 040018|averageOfImagerMeasurements|double|GIACAVGIMAGIIS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8
 040019|giacvarimagiisVarianceOfImagerMeasurements|double|GIACVARIMAGIIS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8
-040020|gqisflagqualdetailedQualityFlagForSystem|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|FLAG TABLE|0|6
 040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH SNOW/ICE|%|0|0|7|%|0|3
 040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|Numeric|0|3
 040023|auxiliaryAltimeterStateFlags|flag|AUXILIARY ALTIMETER STATE FLAGS|FLAG TABLE|0|0|5|FLAG TABLE|0|2
diff --git a/definitions/bufr/tables/0/wmo/19/element.table b/definitions/bufr/tables/0/wmo/19/element.table
index 2ada6f3..d2cb2a4 100644
--- a/definitions/bufr/tables/0/wmo/19/element.table
+++ b/definitions/bufr/tables/0/wmo/19/element.table
@@ -290,13 +290,13 @@
 004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2
 004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2
 004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2
-004065|shortTimeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
-004066|shortTimeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
-004073|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
-004074|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
-004075|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
+004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
+004066|timeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
+004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
+004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
+004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
 004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2
-004086|longTimePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
+004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
 005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
 005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
 005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
@@ -773,7 +773,7 @@
 015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6
 015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG_10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3
 015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG_10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4
-015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween025And25M|double|LOG_10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 ?M|log (m-3)|2|550|9|log (m-3)|2|4
+015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG_10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 ?M|log (m-3)|2|550|9|log (m-3)|2|4
 015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3
 019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
 019002|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-2|0|12|m|-2|4
@@ -1459,7 +1459,7 @@
 040017|nonNormalizedPrincipalComponentScore|long|NON-NORMALIZED PRINCIPAL COMPONENT SCORE|Numeric|0|-1073741824|31|Numeric|0|10
 040018|averageOfImagerMeasurements|double|GIACAVGIMAGIIS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8
 040019|giacvarimagiisVarianceOfImagerMeasurements|double|GIACVARIMAGIIS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8
-040020|gqisflagqualdetailedQualityFlagForSystem|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|FLAG TABLE|0|6
 040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH SNOW/ICE|%|0|0|7|%|0|3
 040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|Numeric|0|3
 040023|auxiliaryAltimeterStateFlags|flag|AUXILIARY ALTIMETER STATE FLAGS|FLAG TABLE|0|0|5|FLAG TABLE|0|2
diff --git a/definitions/bufr/tables/0/wmo/20/element.table b/definitions/bufr/tables/0/wmo/20/element.table
index 6ccef81..6c0d8d7 100644
--- a/definitions/bufr/tables/0/wmo/20/element.table
+++ b/definitions/bufr/tables/0/wmo/20/element.table
@@ -290,13 +290,13 @@
 004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2
 004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2
 004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2
-004065|shortTimeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
-004066|shortTimeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
-004073|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
-004074|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
-004075|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
+004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
+004066|timeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
+004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
+004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
+004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
 004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2
-004086|longTimePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
+004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
 005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
 005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
 005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
@@ -773,7 +773,7 @@
 015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6
 015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3
 015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4
-015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween025And25M|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 ?M|log (m-3)|2|550|9|log (m-3)|2|4
+015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 ?M|log (m-3)|2|550|9|log (m-3)|2|4
 015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3
 019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
 019002|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-2|0|12|m|-2|4
@@ -1459,7 +1459,7 @@
 040017|nonNormalizedPrincipalComponentScore|long|NON-NORMALIZED PRINCIPAL COMPONENT SCORE|Numeric|0|-1073741824|31|Numeric|0|10
 040018|averageOfImagerMeasurements|double|GIACAVGIMAGIIS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8
 040019|giacvarimagiisVarianceOfImagerMeasurements|double|GIACVARIMAGIIS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8
-040020|gqisflagqualdetailedQualityFlagForSystem|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|FLAG TABLE|0|6
 040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH SNOW/ICE|%|0|0|7|%|0|3
 040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|Numeric|0|3
 040023|auxiliaryAltimeterStateFlags|flag|AUXILIARY ALTIMETER STATE FLAGS|FLAG TABLE|0|0|5|FLAG TABLE|0|2
diff --git a/definitions/bufr/tables/0/wmo/21/element.table b/definitions/bufr/tables/0/wmo/21/element.table
index f717093..53e9062 100644
--- a/definitions/bufr/tables/0/wmo/21/element.table
+++ b/definitions/bufr/tables/0/wmo/21/element.table
@@ -291,13 +291,13 @@
 004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2
 004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2
 004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2
-004065|shortTimeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
-004066|shortTimeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
-004073|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
-004074|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
-004075|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
+004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
+004066|timeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
+004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
+004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
+004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
 004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2
-004086|longTimePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
+004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
 005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
 005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
 005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
@@ -778,7 +778,7 @@
 015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6
 015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3
 015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4
-015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween025And25M|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 ?M|log (m-3)|2|550|9|log (m-3)|2|4
+015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 ?M|log (m-3)|2|550|9|log (m-3)|2|4
 015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3
 015062|aerosolOpticalThickness|long|AEROSOL OPTICAL THICKNESS|Numeric|3|-1000|14|Numeric|3|5
 019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
@@ -1469,7 +1469,7 @@
 040017|nonNormalizedPrincipalComponentScore|long|NON-NORMALIZED PRINCIPAL COMPONENT SCORE|Numeric|0|-1073741824|31|Numeric|0|10
 040018|averageOfImagerMeasurements|double|GIACAVGIMAGIIS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8
 040019|giacvarimagiisVarianceOfImagerMeasurements|double|GIACVARIMAGIIS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8
-040020|gqisflagqualdetailedQualityFlagForSystem|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|FLAG TABLE|0|6
 040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH SNOW/ICE|%|0|0|7|%|0|3
 040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|Numeric|0|3
 040023|auxiliaryAltimeterStateFlags|flag|AUXILIARY ALTIMETER STATE FLAGS|FLAG TABLE|0|0|5|FLAG TABLE|0|2
diff --git a/definitions/bufr/tables/0/wmo/22/element.table b/definitions/bufr/tables/0/wmo/22/element.table
index 42cb0fb..0987d33 100644
--- a/definitions/bufr/tables/0/wmo/22/element.table
+++ b/definitions/bufr/tables/0/wmo/22/element.table
@@ -297,13 +297,13 @@
 004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2
 004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2
 004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2
-004065|shortTimeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
-004066|shortTimeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
-004073|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
-004074|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
-004075|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
+004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
+004066|timeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
+004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
+004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
+004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
 004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2
-004086|longTimePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
+004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
 005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
 005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
 005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
@@ -787,7 +787,7 @@
 015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6
 015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3
 015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4
-015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween025And25M|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4
+015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4
 015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3
 015062|aerosolOpticalThickness|long|AEROSOL OPTICAL THICKNESS|Numeric|3|-1000|14|Numeric|3|5
 019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
@@ -1479,7 +1479,7 @@
 040017|nonNormalizedPrincipalComponentScore|long|NON-NORMALIZED PRINCIPAL COMPONENT SCORE|Numeric|0|-1073741824|31|Numeric|0|10
 040018|averageOfImagerMeasurements|double|GIACAVGIMAGIIS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8
 040019|giacvarimagiisVarianceOfImagerMeasurements|double|GIACVARIMAGIIS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8
-040020|gqisflagqualdetailedQualityFlagForSystem|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|FLAG TABLE|0|6
 040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH SNOW/ICE|%|0|0|7|%|0|3
 040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|Numeric|0|3
 040023|auxiliaryAltimeterStateFlags|flag|AUXILIARY ALTIMETER STATE FLAGS|FLAG TABLE|0|0|5|FLAG TABLE|0|2
diff --git a/definitions/bufr/tables/0/wmo/23/element.table b/definitions/bufr/tables/0/wmo/23/element.table
index 799a1cc..a5ef802 100644
--- a/definitions/bufr/tables/0/wmo/23/element.table
+++ b/definitions/bufr/tables/0/wmo/23/element.table
@@ -297,13 +297,13 @@
 004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2
 004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2
 004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2
-004065|shortTimeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
-004066|shortTimeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
-004073|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
-004074|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
-004075|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
+004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
+004066|timeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
+004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
+004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
+004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
 004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2
-004086|longTimePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
+004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
 005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
 005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
 005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
@@ -789,7 +789,7 @@
 015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6
 015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3
 015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4
-015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween025And25M|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4
+015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4
 015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3
 015062|aerosolOpticalThickness|long|AEROSOL OPTICAL THICKNESS|Numeric|3|-1000|14|Numeric|3|5
 019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
@@ -1501,7 +1501,7 @@
 040017|nonNormalizedPrincipalComponentScore|long|NON-NORMALIZED PRINCIPAL COMPONENT SCORE|Numeric|0|-1073741824|31|Numeric|0|10
 040018|averageOfImagerMeasurements|double|GIACAVGIMAGIIS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8
 040019|giacvarimagiisVarianceOfImagerMeasurements|double|GIACVARIMAGIIS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8
-040020|gqisflagqualdetailedQualityFlagForSystem|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|FLAG TABLE|0|6
 040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH SNOW/ICE|%|0|0|7|%|0|3
 040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|Numeric|0|3
 040023|auxiliaryAltimeterStateFlags|flag|AUXILIARY ALTIMETER STATE FLAGS|FLAG TABLE|0|0|5|FLAG TABLE|0|2
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/1003.table b/definitions/bufr/tables/0/wmo/24/codetables/1003.table
new file mode 100644
index 0000000..a0c90ee
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/1003.table
@@ -0,0 +1,8 @@
+0 0 ANTARCTICA
+1 1 REGION I
+2 2 REGION II
+3 3 REGION III
+4 4 REGION IV
+5 5 REGION V
+6 6 REGION VI
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/10063.table b/definitions/bufr/tables/0/wmo/24/codetables/10063.table
new file mode 100644
index 0000000..5097874
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/10063.table
@@ -0,0 +1,10 @@
+0 0 INCREASING, THEN DECREASING; ATMOSPHERIC PRESSURE THE SAME OR HIGHER THAN THREE HOURS AGO
+1 1 INCREASING, THEN STEADY; OR INCREASING, THEN INCREASING MORE SLOWLY
+2 2 INCREASING (STEADILY OR UNSTEADILY)
+3 3 DECREASING OR STEADY, THEN INCREASING; OR INCREASING, THEN INCREASING MORE RAPIDLY
+4 4 STEADY; ATMOSPHERIC PRESSURE THE SAME AS THREE HOURS AGO
+5 5 DECREASING, THEN INCREASING; ATMOSPHERIC PRESSURE THE SAME OR LOWER THAN THREE HOURS AGO
+6 6 DECREASING, THEN STEADY; OR DECREASING, THEN DECREASING MORE SLOWLY
+7 7 DECREASING (STEADILY OR UNSTEADILY)
+8 8 STEADY OR INCREASING, THEN DECREASING; OR DECREASING, THEN DECREASING MORE RAPIDLY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/10064.table b/definitions/bufr/tables/0/wmo/24/codetables/10064.table
new file mode 100644
index 0000000..88ba38a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/10064.table
@@ -0,0 +1,4 @@
+0 0 SUBSONIC
+1 1 TRANSONIC
+2 2 SUPERSONIC
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/1007.table b/definitions/bufr/tables/0/wmo/24/codetables/1007.table
new file mode 100644
index 0000000..f33c2b9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/1007.table
@@ -0,0 +1,187 @@
+0 0 RESERVED
+1 1 ERS 1
+2 2 ERS 2
+3 3 METOP-1 (METOP-B)
+4 4 METOP-2 (METOP-A)
+5 5 METOP-3 (METOP-C)
+20 20 SPOT1
+21 21 SPOT2
+22 22 SPOT3
+23 23 SPOT4
+40 40 OERSTED
+41 41 CHAMP
+42 42 TERRASAR-X
+43 43 TANDEM-X
+44 44 PAZ
+46 46 SMOS
+47 47 CRYOSAT-2
+48 48 AEOLUS
+50 50 METEOSAT 3
+51 51 METEOSAT 4
+52 52 METEOSAT 5
+53 53 METEOSAT 6
+54 54 METEOSAT 7
+55 55 METEOSAT 8
+56 56 METEOSAT 9
+57 57 METEOSAT 10
+58 58 METEOSAT 1
+59 59 METEOSAT 2
+60 60 ENVISAT
+61 61 SENTINEL 3A
+70 70 METEOSAT 11
+120 120 ADEOS
+121 121 ADEOS II
+122 122 GCOM-W1
+140 140 GOSAT
+150 150 GMS 3
+151 151 GMS 4
+152 152 GMS 5
+153 153 GMS
+154 154 GMS 2
+171 171 MTSAT-1R
+172 172 MTSAT-2
+173 173 HIMAWARI-8
+174 174 HIMAWARI-9
+200 200 NOAA 8
+201 201 NOAA 9
+202 202 NOAA 10
+203 203 NOAA 11
+204 204 NOAA 12
+205 205 NOAA 14
+206 206 NOAA 15
+207 207 NOAA 16
+208 208 NOAA 17
+209 209 NOAA 18
+220 220 LANDSAT 5
+221 221 LANDSAT 4
+222 222 LANDSAT 7
+223 223 NOAA 19
+224 224 NPP
+240 240 DMSP 7
+241 241 DMSP 8
+242 242 DMSP 9
+243 243 DMSP 10
+244 244 DMSP 11
+245 245 DMSP 12
+246 246 DMSP 13
+247 247 DMSP 14
+248 248 DMSP 15
+249 249 DMSP 16
+250 250 GOES 6
+251 251 GOES 7
+252 252 GOES 8
+253 253 GOES 9
+254 254 GOES 10
+255 255 GOES 11
+256 256 GOES 12
+257 257 GOES 13
+258 258 GOES 14
+259 259 GOES 15
+260 260 JASON 1
+261 261 JASON 2
+281 281 QUIKSCAT
+282 282 TRMM
+283 283 CORIOLIS
+285 285 DMSP 17
+286 286 DMSP 18
+287 287 DMSP 19
+288 288 GPM-CORE
+289 289 ORBITING CARBON OBSERVATORY - 2 (OCO-2, NASA)
+310 310 GOMS 1
+311 311 GOMS 2
+320 320 METEOR 2-21
+321 321 METEOR 3-5
+322 322 METEOR 3M-1
+323 323 METEOR 3M-2
+341 341 RESURS 01-4
+410 410 KALPANA-1
+421 421 OCEANSAT-2
+430 430 INSAT 1B
+431 431 INSAT 1C
+432 432 INSAT 1D
+440 440 MEGHA-TROPIQUES
+441 441 SARAL
+450 450 INSAT 2A
+451 451 INSAT 2B
+452 452 INSAT 2E
+470 470 INSAT 3A
+471 471 INSAT 3D
+472 472 INSAT 3E
+500 500 FY-1C
+501 501 FY-1D
+502 502 HAI YANG 2A (HY-2A, SOA/NSOAS CHINA)
+510 510 FY-2
+512 512 FY-2B
+513 513 FY-2C
+514 514 FY-2D
+515 515 FY-2E
+516 516 FY-2F
+517 517 FY-2G
+520 520 FY-3A
+521 521 FY-3B
+522 522 FY-3C
+700 700 TIROS M (ITOS 1)
+701 701 NOAA 1
+702 702 NOAA 2
+703 703 NOAA 3
+704 704 NOAA 4
+705 705 NOAA 5
+706 706 NOAA 6
+707 707 NOAA 7
+708 708 TIROS-N
+710 710 GOES (SMS 1)
+711 711 GOES (SMS 2)
+720 720 TOPEX
+721 721 GFO (GEOSAT FOLLOW ON)
+722 722 GRACE A
+723 723 GRACE B
+724 724 COSMIC-2 P1
+725 725 COSMIC-2 P2
+726 726 COSMIC-2 P3
+727 727 COSMIC-2 P4
+728 728 COSMIC-2 P5
+729 729 COSMIC-2 P6
+731 731 GOES 1
+732 732 GOES 2
+733 733 GOES 3
+734 734 GOES 4
+735 735 GOES 5
+740 740 COSMIC-1
+741 741 COSMIC-2
+742 742 COSMIC-3
+743 743 COSMIC-4
+744 744 COSMIC-5
+745 745 COSMIC-6
+750 750 COSMIC-2 E1
+751 751 COSMIC-2 E2
+752 752 COSMIC-2 E3
+753 753 COSMIC-2 E4
+754 754 COSMIC-2 E5
+755 755 COSMIC-2 E6
+763 763 NIMBUS 3
+764 764 NIMBUS 4
+765 765 NIMBUS 5
+766 766 NIMBUS 6
+767 767 NIMBUS 7
+780 780 ERBS
+781 781 UARS
+782 782 EARTH PROBE
+783 783 TERRA
+784 784 AQUA
+785 785 AURA
+786 786 C/NOFS
+787 787 CALIPSO
+788 788 CLOUDSAT
+800 800 SUNSAT
+801 801 INTERNATIONAL SPACE STATION (ISS)
+810 810 COMS-1
+811 811 COMS-2
+820 820 SAC-C
+821 821 SAC-D
+825 825 KOMPSAT-5
+850 850 COMBINATION OF TERRA AND AQUA
+851 851 COMBINATION OF NOAA 16 TO NOAA 19
+852 852 COMBINATION OF METOP-1 TO METOP-3
+853 853 COMBINATION OF METEOSAT AND DMSP
+854 854 NON-SPECIFIC MIXTURE OF GEOSTATIONARY AND LOW EARTH-ORBITING SATELLITES
+1023 1023 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/1024.table b/definitions/bufr/tables/0/wmo/24/codetables/1024.table
new file mode 100644
index 0000000..cdc9e24
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/1024.table
@@ -0,0 +1,9 @@
+0 0 NO WIND SPEED DATA AVAILABLE
+1 1 AMSR-E DATA
+2 2 TMI DATA
+3 3 NWP: ECMWF
+4 4 NWP: UK MET OFFICE
+5 5 NWP: NCEP
+6 6 REFERENCE CLIMATOLOGY
+7 7 ERS_SCATTEROMETER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/1028.table b/definitions/bufr/tables/0/wmo/24/codetables/1028.table
new file mode 100644
index 0000000..18f8206
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/1028.table
@@ -0,0 +1,7 @@
+0 0 NO AOD DATA AVAILABLE
+1 1 NESDIS
+2 2 NAVOCEANO
+3 3 NAAPS
+4 4 MERIS
+5 5 AATSR
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/1029.table b/definitions/bufr/tables/0/wmo/24/codetables/1029.table
new file mode 100644
index 0000000..d63d07e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/1029.table
@@ -0,0 +1,8 @@
+0 0 NO SSI DATA AVAILABLE
+1 1 MSG_SEVIRI
+2 2 GOES EAST
+3 3 GOES WEST
+4 4 ECMWF
+5 5 NCEP
+6 6 UK MET OFFICE
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/1033.table b/definitions/bufr/tables/0/wmo/24/codetables/1033.table
new file mode 100644
index 0000000..c696b37
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/1033.table
@@ -0,0 +1,234 @@
+0 0 WMO SECRETARIAT
+1 1 MELBOURNE
+2 2 MELBOURNE
+3 3 )
+4 4 MOSCOW
+5 5 MOSCOW
+6 6 )
+7 7 US NATIONAL WEATHER SERVICE - NATIONAL CENTRES FOR ENVIRONMENTAL PREDICTION (NCEP)
+8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONS GATEWAY (NWSTG)
+9 9 US NATIONAL WEATHER SERVICE - OTHER
+10 10 CAIRO (RSMC)
+11 11 )
+12 12 DAKAR (RSMC)
+13 13 )
+14 14 NAIROBI (RSMC)
+15 15 )
+16 16 CASABLANCA (RSMC)
+17 17 TUNIS (RSMC)
+18 18 TUNIS - CASABLANCA (RSMC)
+19 19 )
+20 20 LAS PALMAS
+21 21 ALGIERS (RSMC)
+22 22 ACMAD
+23 23 MOZAMBIQUE (NMC)
+24 24 PRETORIA (RSMC)
+25 25 LA RéUNION (RSMC)
+26 26 KHABAROVSK (RSMC)
+27 27 )
+28 28 NEW DELHI (RSMC)
+29 29 )
+30 30 NOVOSIBIRSK (RSMC)
+31 31 )
+32 32 TASHKENT (RSMC)
+33 33 JEDDAH (RSMC)
+34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+35 35 )
+36 36 BANGKOK
+37 37 ULAANBAATAR
+38 38 BEIJING (RSMC)
+39 39 )
+40 40 SEOUL
+41 41 BUENOS AIRES (RSMC)
+42 42 )
+43 43 BRASILIA (RSMC)
+44 44 )
+45 45 SANTIAGO
+46 46 BRAZILIAN SPACE AGENCY ­ INPE
+47 47 COLOMBIA (NMC)
+48 48 ECUADOR (NMC)
+49 49 PERU (NMC)
+50 50 VENEZUELA (BOLIVARIAN REPUBLIC OF) (NMC)
+51 51 MIAMI (RSMC)
+52 52 MIAMI (RSMC), NATIONAL HURRICANE CENTRE
+53 53 MSC MONITORING
+54 54 MONTREAL RSMC
+55 55 SAN FRANCISCO
+56 56 ARINC CENTRE
+57 57 US AIR FORCE - AIR FORCE GLOBAL WEATHER CENTRAL
+58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTEREY, CA, UNITED STATES
+59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, UNITED STATES
+60 60 UNITED STATES NATIONAL CENTER FOR ATMOSPHERIC RESEARCH (NCAR)
+61 61 SERVICE ARGOS - LANDOVER
+62 62 US NAVAL OCEANOGRAPHIC OFFICE
+63 63 INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIETY (IRI)
+64 64 HONOLULU (RSMC)
+65 65 DARWIN (RSMC)
+66 66 )
+67 67 MELBOURNE (RSMC)
+68 68 RESERVED
+69 69 WELLINGTON (RSMC)
+70 70 )
+71 71 NADI (RSMC)
+72 72 SINGAPORE
+73 73 MALAYSIA (NMC)
+74 74 UK METEOROLOGICAL OFFICE ­ EXETER (RSMC)
+75 75 )
+76 76 MOSCOW (RSMC)
+77 77 RESERVED
+78 78 OFFENBACH (RSMC)
+79 79 )
+80 80 ROME (RSMC)
+81 81 )
+82 82 NORRKöPING
+83 83 )
+84 84 TOULOUSE (RSMC)
+85 85 TOULOUSE (RSMC)
+86 86 HELSINKI
+87 87 BELGRADE
+88 88 OSLO
+89 89 PRAGUE
+90 90 EPISKOPI
+91 91 ANKARA
+92 92 FRANKFURT/MAIN
+93 93 LONDON (WAFC)
+94 94 COPENHAGEN
+95 95 ROTA
+96 96 ATHENS
+97 97 EUROPEAN SPACE AGENCY (ESA)
+98 98 EUROPEAN CENTRE FOR MEDIUM-RANGE WEATHER FORECASTS (ECMWF) (RSMC)
+99 99 DE BILT
+100 100 BRAZZAVILLE
+101 101 ABIDJAN
+102 102 LIBYA (NMC)
+103 103 MADAGASCAR (NMC)
+104 104 MAURITIUS (NMC)
+105 105 NIGER (NMC)
+106 106 SEYCHELLES (NMC)
+107 107 UGANDA (NMC)
+108 108 UNITED REPUBLIC OF TANZANIA (NMC)
+109 109 ZIMBABWE (NMC)
+110 110 HONG-KONG, CHINA
+111 111 AFGHANISTAN (NMC)
+112 112 BAHRAIN (NMC)
+113 113 BANGLADESH (NMC)
+114 114 BHUTAN (NMC)
+115 115 CAMBODIA (NMC)
+116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA (NMC)
+117 117 ISLAMIC REPUBLIC OF IRAN (NMC)
+118 118 IRAQ (NMC)
+119 119 KAZAKHSTAN (NMC)
+120 120 KUWAIT (NMC)
+121 121 KYRGYZSTAN (NMC)
+122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC (NMC)
+123 123 MACAO, CHINA
+124 124 MALDIVES (NMC)
+125 125 MYANMAR (NMC)
+126 126 NEPAL (NMC)
+127 127 OMAN (NMC)
+128 128 PAKISTAN (NMC)
+129 129 QATAR (NMC)
+130 130 YEMEN (NMC)
+131 131 SRI LANKA (NMC)
+132 132 TAJIKISTAN (NMC)
+133 133 TURKMENISTAN (NMC)
+134 134 UNITED ARAB EMIRATES (NMC)
+135 135 UZBEKISTAN (NMC)
+136 136 VIET NAM (NMC)
+140 140 BOLIVIA (PLURINATIONAL STATE OF) (NMC)
+141 141 GUYANA (NMC)
+142 142 PARAGUAY (NMC)
+143 143 SURINAME (NMC)
+144 144 URUGUAY (NMC)
+145 145 FRENCH GUIANA
+146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE
+147 147 NATIONAL COMMISSION ON SPACE ACTIVITIES (CONAE) - ARGENTINA
+150 150 ANTIGUA AND BARBUDA (NMC)
+151 151 BAHAMAS (NMC)
+152 152 BARBADOS (NMC)
+153 153 BELIZE (NMC)
+154 154 BRITISH CARIBBEAN TERRITORIES CENTRE
+155 155 SAN JOSé
+156 156 CUBA (NMC)
+157 157 DOMINICA (NMC)
+158 158 DOMINICAN REPUBLIC (NMC)
+159 159 EL SALVADOR (NMC)
+160 160 US NOAA/NESDIS
+161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH
+162 162 GUATEMALA (NMC)
+163 163 HAITI (NMC)
+164 164 HONDURAS (NMC)
+165 165 JAMAICA (NMC)
+166 166 MEXICO CITY
+167 167 CURAçAO AND SINT MAARTEN (NMC)
+168 168 NICARAGUA (NMC)
+169 169 PANAMA (NMC)
+170 170 SAINT LUCIA (NMC)
+171 171 TRINIDAD AND TOBAGO (NMC)
+172 172 FRENCH DEPARTMENTS IN RA IV
+173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA)
+174 174 INTEGRATED SCIENCE DATA MANAGEMENT/MARINE ENVIRONMENTAL DATA SERVICE (ISDM/MEDS) - CANADA
+175 175 UNIVERSITY CORPORATION FOR ATMOSPHERIC RESEARCH (UCAR) - UNITED STATES
+176 176 COOPERATIVE INSTITUTE FOR METEOROLOGICAL SATELLITE STUDIES (CIMSS) - UNITED STATES
+177 177 NOAA NATIONAL OCEAN SERVICE - UNITED STATES
+190 190 COOK ISLANDS (NMC)
+191 191 FRENCH POLYNESIA (NMC)
+192 192 TONGA (NMC)
+193 193 VANUATU (NMC)
+194 194 BRUNEI DARUSSALAM (NMC)
+195 195 INDONESIA (NMC)
+196 196 KIRIBATI (NMC)
+197 197 FEDERATED STATES OF MICRONESIA (NMC)
+198 198 NEW CALEDONIA (NMC)
+199 199 NIUE
+200 200 PAPUA NEW GUINEA (NMC)
+201 201 PHILIPPINES (NMC)
+202 202 SAMOA (NMC)
+203 203 SOLOMON ISLANDS (NMC)
+204 204 NATIONAL INSTITUTE OF WATER AND ATMOSPHERIC RESEARCH (NIWA - NEW ZEALAND)
+210 210 FRASCATI (ESA/ESRIN)
+211 211 LANNION
+212 212 LISBON
+213 213 REYKJAVIK
+214 214 MADRID
+215 215 ZURICH
+216 216 SERVICE ARGOS - TOULOUSE
+217 217 BRATISLAVA
+218 218 BUDAPEST
+219 219 LJUBLJANA
+220 220 WARSAW
+221 221 ZAGREB
+222 222 ALBANIA (NMC)
+223 223 ARMENIA (NMC)
+224 224 AUSTRIA (NMC)
+225 225 AZERBAIJAN (NMC)
+226 226 BELARUS (NMC)
+227 227 BELGIUM (NMC)
+228 228 BOSNIA AND HERZEGOVINA (NMC)
+229 229 BULGARIA (NMC)
+230 230 CYPRUS (NMC)
+231 231 ESTONIA (NMC)
+232 232 GEORGIA (NMC)
+233 233 DUBLIN
+234 234 ISRAEL (NMC)
+235 235 JORDAN (NMC)
+236 236 LATVIA (NMC)
+237 237 LEBANON (NMC)
+238 238 LITHUANIA (NMC)
+239 239 LUXEMBOURG
+240 240 MALTA (NMC)
+241 241 MONACO
+242 242 ROMANIA (NMC)
+243 243 SYRIAN ARAB REPUBLIC (NMC)
+244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA (NMC)
+245 245 UKRAINE (NMC)
+246 246 REPUBLIC OF MOLDOVA (NMC)
+247 247 OPERATIONAL PROGRAMME FOR THE EXCHANGE OF WEATHER RADAR INFORMATION (OPERA) - EUMETNET
+248 248 MONTENEGRO (NMC)
+249 249 BARCELONA DUST FORECAST CENTER
+250 250 CONSORTIUM FOR SMALL SCALE MODELLING  (COSMO)
+251 251 METEOROLOGICAL COOPERATION ON OPERATIONAL NWP (METCOOP)
+252 252 MAX PLANCK INSTITUTE FOR METEOROLOGY (MPI-M)
+253 253 RESERVED FOR OTHER CENTRES
+254 254 EUMETSAT OPERATION CENTRE
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/1034.table b/definitions/bufr/tables/0/wmo/24/codetables/1034.table
new file mode 100644
index 0000000..4a3bf8b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/1034.table
@@ -0,0 +1,100 @@
+0 0 NO SUB-CENTRE
+1 1 LUXEMBOURG (NMC)
+2 2 FUCINO
+3 3 GATINEAU
+4 4 MASPALOMAS (SPAIN)
+5 5 ESA ERS CENTRAL FACILITY
+6 6 PRINCE ALBERT
+7 7 WEST FREUGH
+8 8 LANGLEY RESEARCH CENTER
+9 9 MARSHALL SPACE FLIGHT CENTER
+10 10 TROMSO (NORWAY)
+11 11 MCMURDO (ANTARCTICA)
+12 12 SODANKYLA (FINLAND)
+13 13 TROMSO
+14 14 BARROW (UNITED STATES)
+15 15 ROTHERA (ANTARCTICA)
+16 16 SPACE WEATHER PREDICTION CENTER
+17 17 ESRL GLOBAL SYSTEMS DIVISION
+20 20 MASPALOMAS (SPAIN)
+21 21 AGENZIA SPAZIALE ITALIANA (ITALY)
+22 22 CENTRE NATIONAL DE LA RECHERCHE SCIENTIFIQUE (FRANCE)
+23 23 GEOFORSCHUNGS ZENTRUM (GERMANY)
+24 24 GEODETIC OBSERVATORY PECNY (CZECH REPUBLIC)
+25 25 INSTITUT D'ESTUDIS ESPACIALS DE CATALUNYA (SPAIN)
+26 26 FEDERAL OFFICE OF TOPOGRAPHY (SWITZERLAND)
+27 27 NORDIC COMMISSION OF GEODESY (NORWAY)
+28 28 NORDIC COMMISSION OF GEODESY (SWEDEN)
+29 29 INSTITUTE GéOGRAPHIQUE NATIONAL (FRANCE) - SERVICE DE GéODéSIE
+30 30 KANGERLUSSUAQ (GREENLAND)
+31 31 INSTITUTE OF ENGINEERING SATELLITE SURVEYING AND GEODESY (UNITED KINGDOM)
+32 32 JOINT OPERATIONAL METEOROLOGY AND OCEANOGRAPHY CENTRE (JOMOC)
+33 33 KONINKLIJK NEDERLANDS METEOROLOGISCH INSTITUT (NETHERLANDS)
+34 34 NORDIC GPS ATMOSPHERIC ANALYSIS CENTRE (SWEDEN)
+35 35 INSTITUTO GEOGRAFICO NACIONAL DE ESPAñA (SPAIN)
+36 36 MET ÉIREANN (IRELAND)
+37 37 ROYAL OBSERVATORY OF BELGIUM (BELGIUM)
+40 40 EDMONTON (CANADA)
+50 50 BEDFORD (CANADA)
+60 60 GANDER (CANADA)
+64 64 BUNDESWEHR GEOINFORMATION OFFICE (BGIO)
+70 70 MONTEREY (UNITED STATES)
+76 76 ROSHYDROMET (RUSSIAN FEDERATION)
+78 78 DEUTSCHER WETTERDIENST (GERMANY)
+80 80 WALLOPS ISLAND (UNITED STATES)
+90 90 GILMOR CREEK (UNITED STATES)
+96 96 HELLENIC NATIONAL METEOROLOGICAL SERVICE (GREECE)
+100 100 ATHENS (GREECE)
+101 101 ALBANIA (NMC)
+102 102 LAUDER
+110 110 NOWCAST MOBILE (LIGHTNING DATA)
+120 120 EWA BEACH, HAWAII
+130 130 MIAMI, FLORIDA
+140 140 LANNION (FRANCE)
+150 150 SVALBARD (NORWAY)
+170 170 ST DENIS (LA RéUNION)
+180 180 MOSCOW
+190 190 MUSCAT
+200 200 KHABAROVSK
+201 201 RHEINISCHES INSTITUT FüR UMWELTFORSCHUNG AN DER UNIVERSITäT ZU KöLN E.V. (GERMANY)
+203 203 DAVIS
+204 204 NATIONAL INSTITUTE OF WATER AND ATMOSPHERIC RESEARCH (NIWA - NEW ZEALAND)
+205 205 NIUE
+206 206 RAROTONGA (COOK ISLANDS)
+207 207 APIA (SAMOA)
+208 208 TONGA
+209 209 TUVALU
+210 210 NOVOSIBIRSK
+211 211 TOKELAU
+214 214 DARWIN
+215 215 METEOSWISS (SWITZERLAND)
+217 217 PERTH
+219 219 TOWNSVILLE
+220 220 INSTITUTE OF METEOROLOGY AND WATER MANAGEMENT (POLAND)
+221 221 SCHLESWIG-HOLSTEIN, TRAFFIC OPERATIONS COMPUTING CENTRE (TOCC) KIEL/NEUMüNSTER
+222 222 HAMBURG, TOCC HAMBURG
+223 223 NIEDERSACHSEN, TOCC HANNOVER
+224 224 AUSTRIA (NMC)
+225 225 NORDRHEIN-WESTFALEN, TOCC KAMEN LEVERKUSEN
+226 226 HESSEN, TOCC RüSSELSHEIM
+227 227 RHEINLAND-PFALZ, TOCC KOBLENZ
+228 228 BADEN-WüRTTEMBERG, TOCC LUDWIGSBURG
+229 229 BAYERN, TOCC FREIMANN
+230 230 SAARLAND, TOCC ROHRBACH
+231 231 BAYERN, AUTOBAHN DIRECTORATE NORDBAYERN
+232 232 BRANDENBURG, TOCC STOLPE
+233 233 MECKLENBURG-VORPOMMERN, TOCC MALCHOW
+234 234 SACHSEN, TOCC DRESDEN
+235 235 SACHSEN-ANHALT, TOCC HALLE
+236 236 THüRINGEN, TOCC ERFURT
+237 237 EASYWAY - METEOTRANS
+240 240 KIYOSE
+241 241 REANALYSIS PROJECT
+242 242 NATIONAL METEOROLOGICAL ADMINISTRATION (ROMANIA)
+243 243 KELBURN
+245 245 JINCHEON
+249 249 SINGAPORE
+250 250 VLADIVOSTOCK
+251 251 GUAM
+252 252 HONOLULU
+254 254 EUMETSAT
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/1036.table b/definitions/bufr/tables/0/wmo/24/codetables/1036.table
new file mode 100644
index 0000000..0af7f2e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/1036.table
@@ -0,0 +1,38 @@
+36001 36001 AUSTRALIA, BUREAU OF METEOROLOGY (BOM)
+36002 36002 AUSTRALIA, JOINT AUSTRALIAN FACILITY FOR OCEAN OBSERVING SYSTEMS (JAFOOS)
+36003 36003 AUSTRALIA, THE COMMONWEALTH SCIENTIFIC AND INDUSTRIAL RESEARCH ORGANIZATION (CSIRO)
+124001 124001 CANADA, MARINE ENVIRONMENTAL DATA SERVICE (MEDS)
+124002 124002 CANADA, INSTITUTE OF OCEAN SCIENCES (IOS)
+124173 124173 CANADA, ENVIRONMENT CANADA
+124174 124174 CANADA, DEPARTMENT OF NATIONAL DEFENSE
+124175 124175 CANADA, NAV CANADA
+156001 156001 CHINA, THE STATE OCEANIC ADMINISTRATION
+156002 156002 CHINA, SECOND INSTITUTE OF OCEANOGRAPHY, STATE OCEANIC ADMINISTRATION
+156003 156003 CHINA, INSTITUTE OF OCEAN TECHNOLOGY
+250001 250001 FRANCE, INSTITUT DE RECHERCHE POUR LE DéVELOPPEMENT (IRD)
+250002 250002 FRANCE, INSTITUT FRANçAIS DE RECHERCHE POUR L'EXPLOITATION DE LA MER (IFREMER)
+276001 276001 GERMANY, BUNDESAMT FUER SEESCHIFFAHRT UND HYDROGRAPHIE (BSH)
+276002 276002 GERMANY, INSTITUT FUER MEERESKUNDE, KIEL
+356001 356001 INDIA, NATIONAL INSTITUTE OF OCEANOGRAPHY (NIO)
+356002 356002 INDIA, NATIONAL INSTITUTE FOR OCEAN TECHNOLOGY (NIOT)
+356003 356003 INDIA, NATIONAL CENTRE FOR OCEAN INFORMATION SERVICE
+392001 392001 JAPAN, JAPAN METEOROLOGICAL AGENCY (JMA)
+392002 392002 JAPAN, FRONTIER OBSERVATIONAL RESEARCH SYSTEM FOR GLOBAL CHANGE
+392003 392003 JAPAN, JAPAN MARINE SCIENCE AND TECHNOLOGY CENTRE (JAMSTEC)
+410001 410001 REPUBLIC OF KOREA, SEOUL NATIONAL UNIVERSITY
+410002 410002 REPUBLIC OF KOREA, KOREA OCEAN RESEARCH AND DEVELOPMENT INSTITUTE  (KORDI)
+410003 410003 REPUBLIC OF KOREA, METEOROLOGICAL RESEARCH INSTITUTE
+540001 540001 NEW CALEDONIA, INSTITUT DE RECHERCHE POUR LE DéVELOPPEMENT (IRD)
+554001 554001 NEW ZEALAND, NATIONAL INSTITUTE OF WATER AND ATMOSPHERIC RESEARCH (NIWA)
+643001 643001 RUSSIAN FEDERATION, STATE OCEANOGRAPHIC INSTITUTE OF ROSHYDROMET
+643002 643002 RUSSIAN FEDERATION, FEDERAL SERVICE FOR HYDROMETEOROLOGY AND ENVIRONMENTAL MONITORING
+724001 724001 SPAIN, INSTITUTO ESPAñOL DE OCEANOGRAFIA
+826001 826001 UNITED KINGDOM, HYDROGRAPHIC OFFICE
+826002 826002 UNITED KINGDOM, SOUTHAMPTON OCEANOGRAPHY CENTRE (SOC)
+840001 840001 USA, NOAA ATLANTIC OCEANOGRAPHIC AND METEOROLOGICAL LABORATORIES (AOML)
+840002 840002 USA, NOAA PACIFIC MARINE ENVIRONMENTAL LABORATORIES (PMEL)
+840003 840003 USA, SCRIPPS INSTITUTION OF OCEANOGRAPHY (SIO)
+840004 840004 USA, WOODS HOLE OCEANOGRAPHIC INSTITUTION (WHOI)
+840005 840005 USA, UNIVERSITY OF WASHINGTON
+840006 840006 USA, NAVAL OCEANOGRAPHIC OFFICE
+1048575 1048575 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/1038.table b/definitions/bufr/tables/0/wmo/24/codetables/1038.table
new file mode 100644
index 0000000..2eee38b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/1038.table
@@ -0,0 +1,7 @@
+0 0 NO SEA ICE SET
+1 1 NSIDC SSM/I CAVALIERI ET AL (1992)
+2 2 AMSR-E
+3 3 ECMWF
+4 4 CMS (FRANCE) CLOUD MASK USED BY MEDSPIRATION
+5 5 EUMETSAT OSI-SAF
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/1052.table b/definitions/bufr/tables/0/wmo/24/codetables/1052.table
new file mode 100644
index 0000000..b8e14ed
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/1052.table
@@ -0,0 +1,4 @@
+0 0 PRIMARY
+1 1 SECONDARY
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/1090.table b/definitions/bufr/tables/0/wmo/24/codetables/1090.table
new file mode 100644
index 0000000..55f7ca2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/1090.table
@@ -0,0 +1,5 @@
+0 0 LAGGED-AVERAGE FORECASTING (LAF)
+1 1 BREEDING
+2 2 SINGULAR VECTORS
+3 3 MULTIPLE ANALYSIS CYCLES
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/1092.table b/definitions/bufr/tables/0/wmo/24/codetables/1092.table
new file mode 100644
index 0000000..dc9bf1c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/1092.table
@@ -0,0 +1,5 @@
+0 0 UNPERTURBED HIGH-RESOLUTION CONTROL FORECAST
+1 1 UNPERTURBED LOW-RESOLUTION CONTROL FORECAST
+2 2 NEGATIVELY PERTURBED FORECAST
+3 3 POSITIVELY PERTURBED FORECAST
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/1101.table b/definitions/bufr/tables/0/wmo/24/codetables/1101.table
new file mode 100644
index 0000000..21e0cf5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/1101.table
@@ -0,0 +1,202 @@
+100 100 ALGERIA
+101 101 ANGOLA
+102 102 BENIN
+103 103 BOTSWANA
+104 104 BURKINA FASO
+105 105 BURUNDI
+106 106 CAMEROON
+107 107 CABO VERDE
+108 108 CENTRAL AFRICAN REPUBLIC
+109 109 CHAD
+110 110 COMOROS
+111 111 CONGO
+112 112 CôTE D'IVOIRE
+113 113 DEMOCRATIC REPUBLIC OF THE CONGO
+114 114 DJIBOUTI
+115 115 EGYPT
+116 116 ERITREA
+117 117 ETHIOPIA
+118 118 FRANCE (RA I)
+119 119 GABON
+120 120 GAMBIA
+121 121 GHANA
+122 122 GUINEA
+123 123 GUINEA-BISSAU
+124 124 KENYA
+125 125 LESOTHO
+126 126 LIBERIA
+127 127 LIBYA
+128 128 MADAGASCAR
+129 129 MALAWI
+130 130 MALI
+131 131 MAURITANIA
+132 132 MAURITIUS
+133 133 MOROCCO
+134 134 MOZAMBIQUE
+135 135 NAMIBIA
+136 136 NIGER
+137 137 NIGERIA
+138 138 PORTUGAL (RA I)
+139 139 RWANDA
+140 140 SAO TOME AND PRINCIPE
+141 141 SENEGAL
+142 142 SEYCHELLES
+143 143 SIERRA LEONE
+144 144 SOMALIA
+145 145 SOUTH AFRICA
+146 146 SPAIN (RA I)
+147 147 SUDAN
+148 148 SWAZILAND
+149 149 TOGO
+150 150 TUNISIA
+151 151 UGANDA
+152 152 UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (RA I)
+153 153 UNITED REPUBLIC OF TANZANIA
+154 154 ZAMBIA
+155 155 ZIMBABWE
+200 200 AFGHANISTAN
+201 201 BAHRAIN
+202 202 BANGLADESH
+203 203 BHUTAN
+204 204 CAMBODIA
+205 205 CHINA
+206 206 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA
+207 207 HONG KONG, CHINA
+208 208 INDIA
+209 209 IRAN, ISLAMIC REPUBLIC OF
+210 210 IRAQ
+211 211 JAPAN
+212 212 KAZAKHSTAN
+213 213 KUWAIT
+214 214 KYRGYZSTAN
+215 215 LAO PEOPLE'S DEMOCRATIC REPUBLIC
+216 216 MACAO, CHINA
+217 217 MALDIVES
+218 218 MONGOLIA
+219 219 MYANMAR
+220 220 NEPAL
+221 221 OMAN
+222 222 PAKISTAN
+223 223 QATAR
+224 224 REPUBLIC OF KOREA
+225 225 YEMEN
+226 226 RUSSIAN FEDERATION (RA II)
+227 227 SAUDI ARABIA
+228 228 SRI LANKA
+229 229 TAJIKISTAN
+230 230 THAILAND
+231 231 TURKMENISTAN
+232 232 UNITED ARAB EMIRATES
+233 233 UZBEKISTAN
+234 234 VIET NAM
+300 300 ARGENTINA
+301 301 BOLIVIA (PLURINATIONAL STATE OF)
+302 302 BRAZIL
+303 303 CHILE
+304 304 COLOMBIA
+305 305 ECUADOR
+306 306 FRANCE (RA III)
+307 307 GUYANA
+308 308 PARAGUAY
+309 309 PERU
+310 310 SURINAME
+311 311 URUGUAY
+312 312 VENEZUELA (BOLIVARIAN REPUBLIC OF)
+400 400 ANTIGUA AND BARBUDA
+401 401 BAHAMAS
+402 402 BARBADOS
+403 403 BELIZE
+404 404 BRITISH CARIBBEAN TERRITORIES
+405 405 CANADA
+406 406 COLOMBIA
+407 407 COSTA RICA
+408 408 CUBA
+409 409 DOMINICA
+410 410 DOMINICAN REPUBLIC
+411 411 EL SALVADOR
+412 412 FRANCE (RA IV)
+413 413 GUATEMALA
+414 414 HAITI
+415 415 HONDURAS
+416 416 JAMAICA
+417 417 MEXICO
+418 418 CURAçAO AND SINT MAARTEN
+419 419 NICARAGUA
+420 420 PANAMA
+421 421 SAINT LUCIA
+422 422 TRINIDAD AND TOBAGO
+423 423 UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (RA IV)
+424 424 UNITED STATES OF AMERICA (RA IV)
+425 425 VENEZUELA (BOLIVARIAN REPUBLIC OF)
+500 500 AUSTRALIA
+501 501 BRUNEI DARUSSALAM
+502 502 COOK ISLANDS
+503 503 FIJI
+504 504 FRENCH POLYNESIA
+505 505 INDONESIA
+506 506 KIRIBATI
+507 507 MALAYSIA
+508 508 MICRONESIA, FEDERATED STATES OF
+509 509 NEW CALEDONIA
+510 510 NEW ZEALAND
+511 511 NIUE
+512 512 PAPUA NEW GUINEA
+513 513 PHILIPPINES
+514 514 SAMOA
+515 515 SINGAPORE
+516 516 SOLOMON ISLANDS
+517 517 TONGA
+518 518 UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (RA V)
+519 519 UNITED STATES OF AMERICA (RA V)
+520 520 VANUATU
+600 600 ALBANIA
+601 601 ARMENIA
+602 602 AUSTRIA
+603 603 AZERBAIJAN
+604 604 BELARUS
+605 605 BELGIUM
+606 606 BOSNIA AND HERZEGOVINA
+607 607 BULGARIA
+608 608 CROATIA
+609 609 CYPRUS
+610 610 CZECH REPUBLIC
+611 611 DENMARK
+612 612 ESTONIA
+613 613 FINLAND
+614 614 FRANCE (RA VI)
+615 615 GEORGIA
+616 616 GERMANY
+617 617 GREECE
+618 618 HUNGARY
+619 619 ICELAND
+620 620 IRELAND
+621 621 ISRAEL
+622 622 ITALY
+623 623 JORDAN
+624 624 KAZAKHSTAN
+625 625 LATVIA
+626 626 LEBANON
+627 627 LITHUANIA
+628 628 LUXEMBOURG
+629 629 MALTA
+630 630 MONACO
+631 631 MONTENEGRO
+632 632 NETHERLANDS
+633 633 NORWAY
+634 634 POLAND
+635 635 PORTUGAL (RA VI)
+636 636 REPUBLIC OF MOLDOVA
+637 637 ROMANIA
+638 638 RUSSIAN FEDERATION (RA VI)
+639 639 SERBIA
+640 640 SLOVAKIA
+641 641 SLOVENIA
+642 642 SPAIN (RA VI)
+643 643 SWEDEN
+644 644 SWITZERLAND
+645 645 SYRIAN ARAB REPUBLIC
+646 646 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA
+647 647 TURKEY
+648 648 UKRAINE
+649 649 UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (RA VI)
+1023 1023 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/11030.table b/definitions/bufr/tables/0/wmo/24/codetables/11030.table
new file mode 100644
index 0000000..253b8fc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/11030.table
@@ -0,0 +1,25 @@
+0 0 NIL
+1 1 LIGHT
+2 2 MODERATE
+3 3 SEVERE
+4 4 NIL
+5 5 LIGHT
+6 6 MODERATE
+7 7 SEVERE
+8 8 NIL
+9 9 LIGHT
+10 10 MODERATE
+11 11 SEVERE
+12 12 EXTREME, IN CLEAR AIR
+13 13 EXTREME, IN CLOUD
+14 14 EXTREME, CLOUD/CLEAR AIR NOT SPECIFIED
+15 15 LIGHT, ISOLATED MODERATE
+16 16 LIGHT, OCCASIONAL MODERATE
+17 17 LIGHT, FREQUENTLY MODERATE
+18 18 MODERATE, ISOLATED SEVERE
+19 19 MODERATE, OCCASIONAL SEVERE
+20 20 MODERATE, FREQUENTLY SEVERE
+21 21 SEVERE, ISOLATED EXTREME
+22 22 SEVERE, OCCASIONAL EXTREME
+23 23 SEVERE, FREQUENTLY EXTREME
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/11031.table b/definitions/bufr/tables/0/wmo/24/codetables/11031.table
new file mode 100644
index 0000000..7bece1c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/11031.table
@@ -0,0 +1,16 @@
+0 0 NIL
+1 1 LIGHT
+2 2 MODERATE
+3 3 SEVERE
+4 4 NIL
+5 5 LIGHT
+6 6 MODERATE
+7 7 SEVERE
+8 8 NIL
+9 9 LIGHT
+10 10 MODERATE
+11 11 SEVERE
+12 12 EXTREME, IN CLEAR AIR
+13 13 EXTREME, IN CLOUD
+14 14 EXTREME, CLOUD/CLEAR AIR NOT SPECIFIED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/11037.table b/definitions/bufr/tables/0/wmo/24/codetables/11037.table
new file mode 100644
index 0000000..423eef7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/11037.table
@@ -0,0 +1,30 @@
+0 0 AVE < 0.1
+1 1 AVE < 0.1
+2 2 0.1 <= AVE < 0.2
+3 3 AVE <0.1
+4 4 0.1 <= AVE < 0.2
+5 5 0.2 <= AVE < 0.3
+6 6 AVE < 0.1
+7 7 0.1 <= AVE < 0.2
+8 8 0.2 <= AVE < 0.3
+9 9 0.3 <= AVE < 0.4
+10 10 AVE < 0.1
+11 11 0.1 <= AVE < 0.2
+12 12 0.2 <= AVE < 0.3
+13 13 0.3 <= AVE < 0.4
+14 14 0.4 <= AVE < 0.5
+15 15 AVE < 0.1
+16 16 0.1 <= AVE < 0.2
+17 17 0.2 <= AVE < 0.3
+18 18 0.3 <= AVE < 0.4
+19 19 0.4 <= AVE < 0.5
+20 20 0.5 <= AVE < 0.8
+21 21 AVE < 0.1
+22 22 0.1 <= AVE < 0.2
+23 23 0.2 <= AVE < 0.3
+24 24 0.3 <= AVE < 0.4
+25 25 0.4 <= AVE < 0.5
+26 26 0.5 <= AVE < 0.8
+27 27 0.8 <= AVE
+28 28 NIL
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/11038.table b/definitions/bufr/tables/0/wmo/24/codetables/11038.table
new file mode 100644
index 0000000..f0c5cce
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/11038.table
@@ -0,0 +1,17 @@
+0 0 MIN < 1
+1 1 1 <= MIN < 2
+2 2 2 <= MIN < 3
+3 3 3 <= MIN < 4
+4 4 4 <= MIN < 5
+5 5 5 <= MIN < 6
+6 6 6 <= MIN < 7
+7 7 7 <= MIN < 8
+8 8 8 <= MIN < 9
+9 9 9 <= MIN < 10
+10 10 10 <= MIN < 11
+11 11 11 <= MIN < 12
+12 12 12 <= MIN < 13
+13 13 13 <= MIN < 14
+14 14 14 <= MIN < 15
+15 15 NO TIMING INFORMATION AVAILABLE
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/11039.table b/definitions/bufr/tables/0/wmo/24/codetables/11039.table
new file mode 100644
index 0000000..c2abbda
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/11039.table
@@ -0,0 +1,17 @@
+0 0 MIN < 1
+1 1 1 <= MIN < 2
+2 2 2 <= MIN < 3
+3 3 3 <= MIN < 4
+4 4 4 <= MIN < 5
+5 5 5 <= MIN < 6
+6 6 6 <= MIN < 7
+7 7 7 <= MIN < 8
+8 8 8 <= MIN < 9
+9 9 9 <= MIN < 10
+10 10 10 <= MIN < 11
+11 11 11 <= MIN < 12
+12 12 12 <= MIN < 13
+13 13 13 <= MIN < 14
+14 14 14 <= MIN < 15
+60 60 NO TIMING INFORMATION AVAILABLE
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/13038.table b/definitions/bufr/tables/0/wmo/24/codetables/13038.table
new file mode 100644
index 0000000..19bc422
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/13038.table
@@ -0,0 +1,4 @@
+0 0 NOT SUPERADIABATIC
+1 1 SUPERADIABATIC
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/13039.table b/definitions/bufr/tables/0/wmo/24/codetables/13039.table
new file mode 100644
index 0000000..c070b1d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/13039.table
@@ -0,0 +1,3 @@
+0 0 SEA ICE
+1 1 SNOW ON LAND
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/13040.table b/definitions/bufr/tables/0/wmo/24/codetables/13040.table
new file mode 100644
index 0000000..30c08bd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/13040.table
@@ -0,0 +1,8 @@
+0 0 LAND
+1 1 RESERVED
+2 2 NEAR COAST
+3 3 ICE
+4 4 POSSIBLE ICE
+5 5 OCEAN
+6 6 COAST
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/13041.table b/definitions/bufr/tables/0/wmo/24/codetables/13041.table
new file mode 100644
index 0000000..9e77b64
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/13041.table
@@ -0,0 +1,10 @@
+1 1 A
+2 2 A - B
+3 3 B
+4 4 B - C
+5 5 C
+6 6 D
+7 7 E
+8 8 F
+9 9 G
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/13051.table b/definitions/bufr/tables/0/wmo/24/codetables/13051.table
new file mode 100644
index 0000000..4bdb73e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/13051.table
@@ -0,0 +1,8 @@
+0 0 SMALLER THAN ANY VALUE IN THE 30-YEAR PERIOD
+1 1 IN THE FIRST QUINTILE
+2 2 IN THE SECOND QUINTILE
+3 3 IN THE THIRD QUINTILE
+4 4 IN THE FOURTH QUINTILE
+5 5 IN THE FIFTH QUINTILE
+6 6 GREATER THAN ANY VALUE IN THE 30-YEAR PERIOD
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/13056.table b/definitions/bufr/tables/0/wmo/24/codetables/13056.table
new file mode 100644
index 0000000..448c269
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/13056.table
@@ -0,0 +1,11 @@
+0 0 NO PRECIPITATION
+1 1 LIGHT INTERMITTENT
+2 2 MODERATE INTERMITTENT
+3 3 HEAVY INTERMITTENT
+4 4 VERY HEAVY INTERMITTENT
+5 5 LIGHT CONTINUOUS
+6 6 MODERATE CONTINUOUS
+7 7 HEAVY CONTINUOUS
+8 8 VERY HEAVY CONTINUOUS
+9 9 VARIABLE - ALTERNATIVELY LIGHT AND HEAVY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/13057.table b/definitions/bufr/tables/0/wmo/24/codetables/13057.table
new file mode 100644
index 0000000..6dfa18d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/13057.table
@@ -0,0 +1,11 @@
+0 0 NO PRECIPITATION
+1 1 WITHIN THE LAST HOUR
+2 2 1 TO 2 HOURS AGO
+3 3 2 TO 3 HOURS AGO
+4 4 3 TO 4 HOURS AGO
+5 5 4 TO 5 HOURS AGO
+6 6 5 TO 6 HOURS AGO
+7 7 6 TO 8 HOURS AGO
+8 8 8 TO 10 HOURS AGO
+9 9 MORE THAN 10 HOURS AGO
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/15025.table b/definitions/bufr/tables/0/wmo/24/codetables/15025.table
new file mode 100644
index 0000000..6bb6ed5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/15025.table
@@ -0,0 +1,4 @@
+0 0 OZONE
+11 11 FINE PARTICULATE MATTER (DIAMETER < 2.5 MICRONS)
+12 12 FINE PARTICULATE MATTER (DIAMETER < 10 MICRONS)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/19001.table b/definitions/bufr/tables/0/wmo/24/codetables/19001.table
new file mode 100644
index 0000000..af893eb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/19001.table
@@ -0,0 +1,7 @@
+0 0 DEPRESSION OR LOW (EXTRATROPLCAL)
+1 1 TROPICAL DEPRESSION
+2 2 TROPICAL STORM
+3 3 SEVERE TROPICAL STORM
+4 4 TYPHOON
+10 10 DUST/SANDSTORM
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/19008.table b/definitions/bufr/tables/0/wmo/24/codetables/19008.table
new file mode 100644
index 0000000..3bcb519
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/19008.table
@@ -0,0 +1,5 @@
+0 0 RESERVED
+1 1 SHALLOW (TOP OF CIRCULATION BELOW 700-HPA LEVEL)
+2 2 MEDIUM (TOP BETWEEN 700-HPA AND 400-HPA LEVEL)
+3 3 DEEP (TOP ABOVE 400-HPA LEVEL)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/19010.table b/definitions/bufr/tables/0/wmo/24/codetables/19010.table
new file mode 100644
index 0000000..b091d96
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/19010.table
@@ -0,0 +1,3 @@
+1 1 MINIMUM VALUE OF SEA LEVEL PRESSURE
+2 2 MAXIMUM VALUE OF 850 HPA RELATIVE VORTICITY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/19100.table b/definitions/bufr/tables/0/wmo/24/codetables/19100.table
new file mode 100644
index 0000000..1f03a6f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/19100.table
@@ -0,0 +1,9 @@
+3 3 DURING THE PRECEDING 15 MINUTES
+4 4 DURING THE PRECEDING 30 MINUTES
+5 5 DURING THE PRECEDING 1 HOUR
+6 6 DURING THE PRECEDING 2 HOURS
+7 7 DURING THE PRECEDING 3 HOURS
+8 8 DURING THE PRECEDING 6 HOURS
+9 9 DURING A PERIOD OF MORE THAN 6 HOURS
+10 10 UNDETERMINED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/19101.table b/definitions/bufr/tables/0/wmo/24/codetables/19101.table
new file mode 100644
index 0000000..0cd1ff4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/19101.table
@@ -0,0 +1,10 @@
+0 0 RESERVED
+1 1 EYE VISIBLE ON RADAR SCOPE, ACCURACY GOOD (WITHIN 10 KM)
+2 2 EYE VISIBLE ON RADAR SCOPE, ACCURACY FAIR (WITHIN 30 KM)
+3 3 EYE VISIBLE ON RADAR SCOPE, ACCURACY POOR (WITHIN 50 KM)
+4 4 POSITION OF THE CENTRE WITHIN THE AREA COVERED BY THE RADAR SCOPE, DETERMINATION BY MEANS OF THE SPIRAL-BAND OVERLAY, ACCURACY GOOD (WITHIN 10 KM)
+5 5 POSITION OF THE CENTRE WITHIN THE AREA COVERED BY THE RADAR SCOPE, DETERMINATION BY MEANS OF THE SPIRAL-BAND OVERLAY, ACCURACY FAIR (WITHIN 30 KM)
+6 6 POSITION OF THE CENTRE WITHIN THE AREA COVERED BY THE RADAR SCOPE, DETERMINATION BY MEANS OF THE SPIRAL-BAND OVERLAY, ACCURACY POOR (WITHIN 50 KM)
+7 7 POSITION OF THE CENTRE OUTSIDE THE AREA COVERED BY THE RADAR SCOPE, EXTRAPOLATION BY MEANS OF THE SPIRAL-BAND OVERLAY
+10 10 ACCURACY UNDETERMINED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/19102.table b/definitions/bufr/tables/0/wmo/24/codetables/19102.table
new file mode 100644
index 0000000..21ab775
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/19102.table
@@ -0,0 +1,8 @@
+0 0 CIRCULAR
+1 1 ELLIPTICAL - THE MINOR AXIS IS AT LEAST 3/4 THE LENGTH OF THE MAJOR AXIS
+2 2 ELLIPTICAL - THE MINOR AXIS IS LESS THAN 3/4 THE LENGTH OF THE MAJOR AXIS
+3 3 APPARENT DOUBLE EYE
+4 4 OTHER SHAPE
+5 5 ILL DEFINED
+6 6 UNDETERMINED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/19103.table b/definitions/bufr/tables/0/wmo/24/codetables/19103.table
new file mode 100644
index 0000000..3abb184
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/19103.table
@@ -0,0 +1,12 @@
+0 0 LESS THAN 5 KM
+1 1 5 TO LESS THAN 10 KM
+2 2 10 TO LESS THAN 15 KM
+3 3 15 TO LESS THAN 20 KM
+4 4 20 TO LESS THAN 25 KM
+5 5 25 TO LESS THAN 30 KM
+6 6 30 TO LESS THAN 35 KM
+7 7 35 TO LESS THAN 40 KM
+8 8 40 TO LESS THAN 50 KM
+9 9 50 KM AND GREATER
+10 10 UNDETERMINED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/19104.table b/definitions/bufr/tables/0/wmo/24/codetables/19104.table
new file mode 100644
index 0000000..67ae474
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/19104.table
@@ -0,0 +1,12 @@
+0 0 EYE HAS FIRST BECOME VISIBLE DURING THE PAST 30 MINUTES
+1 1 NO SIGNIFICANT CHANGE IN THE CHARACTERISTICS OR SIZE OF THE EYE
+2 2 EYE HAS BECOME SMALLER WITH NO OTHER SIGNIFICANT CHANGE IN CHARACTERISTICS
+3 3 EYE HAS BECOME LARGER WITH NO OTHER SIGNIFICANT CHANGE IN CHARACTERISTICS
+4 4 EYE HAS BECOME LESS DISTINCT WITH NO SIGNIFICANT CHANGE IN SIZE
+5 5 EYE HAS BECOME LESS DISTINCT AND DECREASED IN SIZE
+6 6 EYE HAS BECOME LESS DISTINCT AND INCREASED IN SIZE
+7 7 EYE HAS BECOME MORE DISTINCT WITH NO SIGNIFICANT CHANGE IN SIZE
+8 8 EYE HAS BECOME MORE DISTINCT AND DECREASED IN SIZE
+9 9 EYE HAS BECOME MORE DISTINCT AND INCREASED IN SIZE
+10 10 CHANGE IN CHARACTER AND SIZE OF EYE CANNOT BE DETERMINED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/19105.table b/definitions/bufr/tables/0/wmo/24/codetables/19105.table
new file mode 100644
index 0000000..becfcee
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/19105.table
@@ -0,0 +1,10 @@
+0 0 0 TO LESS THAN 100 KM
+1 1 100 TO LESS THAN 200 KM
+2 2 200 TO LESS THAN 300 KM
+3 3 300 TO LESS THAN 400 KM
+4 4 400 TO LESS THAN 500 KM
+5 5 500 TO LESS THAN 600 KM
+6 6 600 TO LESS THAN 800 KM
+7 7 800 KM OR MORE
+10 10 DOUBTFUL OR UNDETERMINED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/19107.table b/definitions/bufr/tables/0/wmo/24/codetables/19107.table
new file mode 100644
index 0000000..ed6b79c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/19107.table
@@ -0,0 +1,11 @@
+0 0 LESS THAN 1 HOUR
+1 1 1 TO LESS THAN 2 HOURS
+2 2 2 TO LESS THAN 3 HOURS
+3 3 3 TO LESS THAN 6 HOURS
+4 4 6 TO LESS THAN 9 HOURS
+5 5 9 TO LESS THAN 12 HOURS
+6 6 12 TO LESS THAN 15 HOURS
+7 7 15 TO LESS THAN 18 HOURS
+8 8 18 TO LESS THAN 21 HOURS
+9 9 21 TO LESS THAN 30 HOURS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/19108.table b/definitions/bufr/tables/0/wmo/24/codetables/19108.table
new file mode 100644
index 0000000..9350bc2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/19108.table
@@ -0,0 +1,8 @@
+0 0 CYCLONE CENTRE WITHIN 10 KM OF THE TRANSMITTED POSITION
+1 1 CYCLONE CENTRE WITHIN 20 KM OF THE TRANSMITTED POSITION
+2 2 CYCLONE CENTRE WITHIN 50 KM OF THE TRANSMITTED POSITION
+3 3 CYCLONE CENTRE WITHIN 100 KM OF THE TRANSMITTED POSITION
+4 4 CYCLONE CENTRE WITHIN 200 KM OF THE TRANSMITTED POSITION
+5 5 CYCLONE CENTRE WITHIN 300 KM OF THE TRANSMITTED POSITION
+6 6 CYCLONE CENTRE UNDETERMINED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/19109.table b/definitions/bufr/tables/0/wmo/24/codetables/19109.table
new file mode 100644
index 0000000..e3c9c05
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/19109.table
@@ -0,0 +1,12 @@
+0 0 LESS THAN 1° OF LATITUDE
+1 1 1° TO LESS THAN 2° OF LATITUDE
+2 2 2° TO LESS THAN 3° OF LATITUDE
+3 3 3° TO LESS THAN 4° OF LATITUDE
+4 4 4° TO LESS THAN 5° OF LATITUDE
+5 5 5° TO LESS THAN 6° OF LATITUDE
+6 6 6° TO LESS THAN 7° OF LATITUDE
+7 7 7° TO LESS THAN 8° OF LATITUDE
+8 8 8° TO LESS THAN 9° OF LATITUDE
+9 9 9° OF LATITUDE OR MORE
+10 10 UNDETERMINED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/19110.table b/definitions/bufr/tables/0/wmo/24/codetables/19110.table
new file mode 100644
index 0000000..81f4f59
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/19110.table
@@ -0,0 +1,8 @@
+0 0 MUCH WEAKENING
+1 1 WEAKENING
+2 2 NO CHANGE
+3 3 INTENSIFICATION
+4 4 STRONG INTENSIFICATION
+9 9 NOT OBSERVED PREVIOUSLY
+10 10 UNDETERMINED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/19113.table b/definitions/bufr/tables/0/wmo/24/codetables/19113.table
new file mode 100644
index 0000000..ba46dca
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/19113.table
@@ -0,0 +1,8 @@
+1 1 CURVED BAND
+2 2 SHEAR
+3 3 EYE
+4 4 BANDING EYE
+5 5 CENTRAL DENSE OVERCAST (CDO)
+6 6 EMBEDDED CENTRE
+7 7 CENTRE COLD COVER (CCC)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/19117.table b/definitions/bufr/tables/0/wmo/24/codetables/19117.table
new file mode 100644
index 0000000..b623197
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/19117.table
@@ -0,0 +1,4 @@
+1 1 A (CURVED BAND)
+2 2 B (CDO)
+3 3 C (SHEAR)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/19119.table b/definitions/bufr/tables/0/wmo/24/codetables/19119.table
new file mode 100644
index 0000000..8329a8a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/19119.table
@@ -0,0 +1,4 @@
+1 1 DT-NUMBER
+2 2 PT-NUMBER
+3 3 MET-NUMBER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20003.table b/definitions/bufr/tables/0/wmo/24/codetables/20003.table
new file mode 100644
index 0000000..0ebc7c7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20003.table
@@ -0,0 +1,266 @@
+0 0 CLOUD DEVELOPMENT NOT OBSERVED OR NOT OBSERVABLE
+1 1 CLOUDS GENERALLY DISSOLVING OR BECOMING LESS DEVELOPED
+2 2 STATE OF SKY ON THE WHOLE UNCHANGED
+3 3 CLOUDS GENERALLY FORMING OR DEVELOPING
+4 4 VISIBILITY REDUCED BY SMOKE, E.G. VELDT OR FOREST FIRES, INDUSTRIAL SMOKE OR VOLCANIC ASHES
+5 5 HAZE
+6 6 WIDESPREAD DUST IN SUSPENSION IN THE AIR, NOT RAISED BY WIND AT OR NEAR THE STATION AT THE TIME OF OBSERVATION
+7 7 DUST OR SAND RAISED BY WIND AT OR NEAR THE STATION AT THE TIME OF OBSERVATION, BUT NO WELL-DEVELOPED DUST WHIRL(S) OR SAND WHIRL(S), AND NO DUSTSTORM OR SANDSTORM SEEN; OR, IN THE CASE OF SEA STATIONS AND COASTAL STATIONS, BLOWING SPRAY AT THE STATION
+8 8 WELL-DEVELOPED DUST WHIRL(S) OR SAND WHIRL(S) SEEN AT OR NEAR THE STATION DURING THE PRECEDING HOUR OR AT THE SAME TIME OF OBSERVATION, BUT NO DUSTSTORM OR SANDSTORM
+9 9 DUSTSTORM OR SANDSTORM WITHIN SIGHT AT THE TIME OF OBSERVATION, OR AT THE STATION DURING THE PRECEDING HOUR
+10 10 MIST
+11 11 PATCHES
+12 12 MORE OR LESS CONTINUOUS
+13 13 LIGHTNING VISIBLE, NO THUNDER HEARD
+14 14 PRECIPITATION WITHIN SIGHT, NOT REACHING THE GROUND OR THE SURFACE OF THE SEA
+15 15 PRECIPITATION WITHIN SIGHT, REACHING THE GROUND OR THE SURFACE OF THE SEA, BUT DISTANT, I.E. ESTIMATED TO BE MORE THAN 5 KM FROM THE STATION
+16 16 PRECIPITATION WITHIN SIGHT, REACHING THE GROUND OR THE SURFACE OF THE SEA, NEAR TO, BUT NOT AT THE STATION
+17 17 THUNDERSTORM, BUT NO PRECIPITATION AT THE TIME OF OBSERVATION
+18 18 SQUALLS
+19 19 FUNNEL CLOUD(S)
+20 20 DRIZZLE (NOT FREEZING) OR SNOW GRAINS
+21 21 RAIN (NOT FREEZING)
+22 22 SNOW
+23 23 RAIN AND SNOW OR ICE PELLETS
+24 24 FREEZING DRIZZLE OR FREEZING RAIN
+25 25 SHOWER(S) OF RAIN
+26 26 SHOWER(S) OF SNOW, OR OF RAIN AND SNOW
+27 27 SHOWER(S) OF HAIL*, OR OF RAIN AND HAIL*
+28 28 FOG OR ICE FOG
+29 29 THUNDERSTORM (WITH OR WITHOUT PRECIPITATION)
+30 30 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM
+31 31 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM
+32 32 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM
+33 33 SEVERE DUSTSTORM OR SANDSTORM
+34 34 SEVERE DUSTSTORM OR SANDSTORM
+35 35 SEVERE DUSTSTORM OR SANDSTORM
+36 36 SLIGHT OR MODERATE DRIFTING SNOW
+37 37 HEAVY DRIFTING SNOW
+38 38 SLIGHT OR MODERATE BLOWING SNOW
+39 39 HEAVY BLOWING SNOW
+40 40 FOG OR ICE FOG AT A DISTANCE AT THE TIME OF OBSERVATION, BUT NOT AT THE STATION DURING THE PRECEDING HOUR, THE FOG OR ICE FOG EXTENDING TO A LEVEL ABOVE THAT OF THE OBSERVER
+41 41 FOG OR ICE FOG IN PATCHES
+42 42 FOG OR ICE FOG, SKY VISIBLE
+43 43 FOG OR ICE FOG, SKY INVISIBLE
+44 44 FOG OR ICE FOG, SKY VISIBLE
+45 45 FOG OR ICE FOG, SKY INVISIBLE
+46 46 FOG OR ICE FOG, SKY VISIBLE
+47 47 FOG OR ICE FOG, SKY INVISIBLE
+48 48 FOG, DEPOSITING RIME, SKY VISIBLE
+49 49 FOG, DEPOSITING RIME, SKY INVISIBLE
+50 50 DRIZZLE, NOT FREEZING, INTERMITTENT
+51 51 DRIZZLE, NOT FREEZING, CONTINUOUS
+52 52 DRIZZLE, NOT FREEZING, INTERMITTENT
+53 53 DRIZZLE, NOT FREEZING, CONTINUOUS
+54 54 DRIZZLE, NOT FREEZING, INTERMITTENT
+55 55 DRIZZLE, NOT FREEZING, CONTINUOUS
+56 56 DRIZZLE, FREEZING, SLIGHT
+57 57 DRIZZLE, FREEZING, MODERATE OR HEAVY (DENSE)
+58 58 DRIZZLE AND RAIN, SLIGHT
+59 59 DRIZZLE AND RAIN, MODERATE OR HEAVY
+60 60 RAIN, NOT FREEZING, INTERMITTENT
+61 61 RAIN, NOT FREEZING, CONTINUOUS
+62 62 RAIN, NOT FREEZING, INTERMITTENT
+63 63 RAIN, NOT FREEZING, CONTINUOUS
+64 64 RAIN, NOT FREEZING, INTERMITTENT
+65 65 RAIN, NOT FREEZING, CONTINUOUS
+66 66 RAIN, FREEZING, SLIGHT
+67 67 RAIN, FREEZING, MODERATE OR HEAVY
+68 68 RAIN OR DRIZZLE AND SNOW, SLIGHT
+69 69 RAIN OR DRIZZLE AND SNOW, MODERATE OR HEAVY
+70 70 INTERMITTENT FALL OF SNOWFLAKES
+71 71 CONTINUOUS FALL OF SNOWFLAKES
+72 72 INTERMITTENT FALL OF SNOWFLAKES
+73 73 CONTINUOUS FALL OF SNOWFLAKES
+74 74 INTERMITTENT FALL OF SNOWFLAKES
+75 75 CONTINUOUS FALL OF SNOWFLAKES
+76 76 DIAMOND DUST (WITH OR WITHOUT FOG)
+77 77 SNOW GRAINS (WITH OR WITHOUT FOG)
+78 78 ISOLATED STAR-LIKE SNOW CRYSTALS (WITH OR WITHOUT FOG)
+79 79 ICE PELLETS
+80 80 RAIN SHOWER(S), SLIGHT
+81 81 RAIN SHOWER(S), MODERATE OR HEAVY
+82 82 RAIN SHOWER(S), VIOLENT
+83 83 SHOWER(S) OF RAIN AND SNOW MIXED, SLIGHT
+84 84 SHOWER(S) OF RAIN AND SNOW MIXED, MODERATE OR HEAVY
+85 85 SNOW SHOWER(S), SLIGHT
+86 86 SNOW SHOWER(S), MODERATE OR HEAVY
+87 87 SHOWER(S) OF SNOW PELLETS OR SMALL HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIXED
+88 88 SHOWER(S) OF SNOW PELLETS OR SMALL HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIXED
+89 89 SHOWER(S) OF HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIXED, NOT ASSOCIATED WITH THUNDER
+90 90 SHOWER(S) OF HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIXED, NOT ASSOCIATED WITH THUNDER
+91 91 SLIGHT RAIN AT TIME OF OBSERVATION
+92 92 MODERATE OR HEAVY RAIN AT TIME OF OBSERVATION
+93 93 SLIGHT SNOW, OR RAIN AND SNOW MIXED OR HAIL* AT TIME OF OBSERVATION
+94 94 MODERATE OR HEAVY SNOW, OR RAIN AND SNOW MIXED OR HAIL* AT TIME OF OBSERVATION
+95 95 THUNDERSTORM, SLIGHT OR MODERATE, WITHOUT HAIL*, BUT WITH RAIN AND/OR SNOW AT TIME OF OBSERVATION
+96 96 THUNDERSTORM, SLIGHT OR MODERATE, WITH HAIL* AT TIME OF OBSERVATION
+97 97 THUNDERSTORM, HEAVY, WITHOUT HAIL*, BUT WITH RAIN AND/OR SNOW AT TIME OF OBSERVATION
+98 98 THUNDERSTORM COMBINED WITH DUSTSTORM OR SANDSTORM AT TIME OF OBSERVATION
+99 99 THUNDERSTORM, HEAVY, WITH HAIL* AT TIME OF OBSERVATION
+100 100 NO SIGNIFICANT WEATHER OBSERVED
+101 101 CLOUDS GENERALLY DISSOLVING OR BECOMING LESS DEVELOPED DURING THE PAST HOUR
+102 102 STATE OF SKY ON THE WHOLE UNCHANGED DURING THE PAST HOUR
+103 103 CLOUDS GENERALLY FORMING OR DEVELOPING DURING THE PAST HOUR
+104 104 HAZE OR SMOKE, OR DUST IN SUSPENSION IN THE AIR, VISIBILITY EQUAL TO, OR GREATER THAN, 1 KM
+105 105 HAZE OR SMOKE, OR DUST IN SUSPENSION IN THE AIR, VISIBILITY LESS THAN 1 KM
+110 110 MIST
+111 111 DIAMOND DUST
+112 112 DISTANT LIGHTNING
+118 118 SQUALLS
+119 119 RESERVED
+120 120 FOG
+121 121 PRECIPITATION
+122 122 DRIZZLE (NOT FREEZING) OR SNOW GRAINS
+123 123 RAIN (NOT FREEZING)
+124 124 SNOW
+125 125 FREEZING DRIZZLE OR FREEZING RAIN
+126 126 THUNDERSTORM (WITH OR WITHOUT PRECIPITATION)
+127 127 BLOWING OR DRIFTING SNOW OR SAND
+128 128 BLOWING OR DRIFTING SNOW OR SAND, VISIBILITY EQUAL TO, OR GREATER THAN, 1 KM
+129 129 BLOWING OR DRIFTING SNOW OR SAND, VISIBILITY LESS THAN 1 KM
+130 130 FOG
+131 131 FOG OR ICE FOG IN PATCHES
+132 132 FOG OR ICE FOG, HAS BECOME THINNER DURING THE PAST HOUR
+133 133 FOG OR ICE FOG, NO APPRECIABLE CHANGE DURING THE PAST HOUR
+134 134 FOG OR ICE FOG, HAS BEGUN OR BECOME THICKER DURING THE PAST HOUR
+135 135 FOG, DEPOSITING RIME
+140 140 PRECIPITATION
+141 141 PRECIPITATION, SLIGHT OR MODERATE
+142 142 PRECIPITATION, HEAVY
+143 143 LIQUID PRECIPITATION, SLIGHT OR MODERATE
+144 144 LIQUID PRECIPITATION, HEAVY
+145 145 SOLID PRECIPITATION, SLIGHT OR MODERATE
+146 146 SOLID PRECIPITATION, HEAVY
+147 147 FREEZING PRECIPITATION, SLIGHT OR MODERATE
+148 148 FREEZING PRECIPITATION, HEAVY
+149 149 RESERVED
+150 150 DRIZZLE
+151 151 DRIZZLE, NOT FREEZING, SLIGHT
+152 152 DRIZZLE, NOT FREEZING, MODERATE
+153 153 DRIZZLE, NOT FREEZING, HEAVY
+154 154 DRIZZLE, FREEZING, SLIGHT
+155 155 DRIZZLE, FREEZING, MODERATE
+156 156 DRIZZLE, FREEZING, HEAVY
+157 157 DRIZZLE AND RAIN, SLIGHT
+158 158 DRIZZLE AND RAIN, MODERATE OR HEAVY
+159 159 RESERVED
+160 160 RAIN
+161 161 RAIN, NOT FREEZING, SLIGHT
+162 162 RAIN, NOT FREEZING, MODERATE
+163 163 RAIN, NOT FREEZING, HEAVY
+164 164 RAIN, FREEZING, SLIGHT
+165 165 RAIN, FREEZING, MODERATE
+166 166 RAIN, FREEZING, HEAVY
+167 167 RAIN (OR DRIZZLE) AND SNOW, SLIGHT
+168 168 RAIN (OR DRIZZLE) AND SNOW, MODERATE OR HEAVY
+169 169 RESERVED
+170 170 SNOW
+171 171 SNOW, SLIGHT
+172 172 SNOW, MODERATE
+173 173 SNOW, HEAVY
+174 174 ICE PELLETS, SLIGHT
+175 175 ICE PELLETS, MODERATE
+176 176 ICE PELLETS, HEAVY
+177 177 SNOW GRAINS
+178 178 ICE CRYSTALS
+179 179 RESERVED
+180 180 SHOWER(S) OR INTERMITTENT PRECIPITATION
+181 181 RAIN SHOWER(S) OR INTERMITTENT RAIN, SLIGHT
+182 182 RAIN SHOWER(S) OR INTERMITTENT RAIN, MODERATE
+183 183 RAIN SHOWER(S) OR INTERMITTENT RAIN, HEAVY
+184 184 RAIN SHOWER(S) OR INTERMITTENT RAIN, VIOLENT
+185 185 SNOW SHOWER(S) OR INTERMITTENT SNOW, SLIGHT
+186 186 SNOW SHOWER(S) OR INTERMITTENT SNOW, MODERATE
+187 187 SNOW SHOWER(S) OR INTERMITTENT SNOW, HEAVY
+188 188 RESERVED
+189 189 HAIL
+190 190 THUNDERSTORM
+191 191 THUNDERSTORM, SLIGHT OR MODERATE, WITH NO PRECIPITATION
+192 192 THUNDERSTORM, SLIGHT OR MODERATE, WITH RAIN SHOWERS AND/OR SNOW SHOWERS
+193 193 THUNDERSTORM, SLIGHT OR MODERATE, WITH HAIL
+194 194 THUNDERSTORM, HEAVY, WITH NO PRECIPITATION
+195 195 THUNDERSTORM, HEAVY, WITH RAIN SHOWERS AND/OR SNOW SHOWERS
+196 196 THUNDERSTORM, HEAVY, WITH HAIL
+199 199 TORNADO
+204 204 VOLCANIC ASH SUSPENDED IN THE AIR ALOFT
+205 205 NOT USED
+206 206 THICK DUST HAZE, VISIBILITY LESS THAN 1 KM
+207 207 BLOWING SPRAY AT THE STATION
+208 208 DRIFTING DUST (SAND)
+209 209 WALL OF DUST OR SAND IN DISTANCE (LIKE HABOOB)
+210 210 SNOW HAZE
+211 211 WHITEOUT
+212 212 NOT USED
+213 213 LIGHTNING, CLOUD TO SURFACE
+217 217 DRY THUNDERSTORM
+218 218 NOT USED
+219 219 TORNADO CLOUD (DESTRUCTIVE) AT OR WITHIN SIGHT OF THE STATION DURING PRECEDING HOUR OR AT THE TIME OF OBSERVATION
+220 220 DEPOSITION OF VOLCANIC ASH
+221 221 DEPOSITION OF DUST OR SAND
+222 222 DEPOSITION OF DEW
+223 223 DEPOSITION OF WET SNOW
+224 224 DEPOSITION OF SOFT RIME
+225 225 DEPOSITION OF HARD RIME
+226 226 DEPOSITION OF HOAR FROST
+227 227 DEPOSITION OF GLAZE
+228 228 DEPOSITION OF ICE CRUST (ICE SLICK)
+229 229 NOT USED
+230 230 DUSTSTORM OR SANDSTORM WITH TEMPERATURE BELOW 0 °C
+239 239 BLOWING SNOW, IMPOSSIBLE TO DETERMINE WHETHER SNOW IS FALLING OR NOT
+240 240 NOT USED
+241 241 FOG ON SEA
+242 242 FOG IN VALLEYS
+243 243 ARCTIC OR ANTARCTIC SEA SMOKE
+244 244 STEAM FOG (SEA, LAKE OR RIVER)
+245 245 STEAM LOG (LAND)
+246 246 FOG OVER ICE OR SNOW COVER
+247 247 DENSE FOG, VISIBILITY 60-90 M
+248 248 DENSE FOG, VISIBILITY 30-60 M
+249 249 DENSE FOG, VISIBILITY LESS THAN 30 M
+250 250 DRIZZLE, RATE OF FALL - LESS THAN 0.10 MM H-1
+251 251 DRIZZLE, RATE OF FALL - 0.10-0.19 MM H-1
+252 252 DRIZZLE, RATE OF FALL - 0.20-0.39 MM H-1
+253 253 DRIZZLE, RATE OF FALL - 0.40-0.79 MM H-1
+254 254 DRIZZLE, RATE OF FALL - 0.80-1.59 MM H-1
+255 255 DRIZZLE, RATE OF FALL - 1.60-3.19 MM H-1
+256 256 DRIZZLE, RATE OF FALL - 3.20-6.39 MM H-1
+257 257 DRIZZLE, RATE OF FALL - 6.4 MM H-1 OR MORE
+258 258 NOT USED
+259 259 DRIZZLE AND SNOW
+260 260 RAIN, RATE OF FALL - LESS THAN 1.0 MM H-1
+261 261 RAIN, RATE OF FALL - 1.0-1.9 MM H-1
+262 262 RAIN, RATE OF FALL - 2.0-3.9 MM H-1
+263 263 RAIN, RATE OF FALL - 4.0-7.9 MM H-1
+264 264 RAIN, RATE OF FALL - 8.0-15.9 MM H-1
+265 265 RAIN, RATE OF FALL - 16.0-31.9 MM H-1
+266 266 RAIN, RATE OF FALL - 32.0-63.9 MM H-1
+267 267 RAIN, RATE OF FALL - 64.0 MM H-1 OR MORE
+270 270 SNOW, RATE OF FALL - LESS THAN 1.0 CM H-1
+271 271 SNOW, RATE OF FALL - 1.0-1.9 CM H-1
+272 272 SNOW, RATE OF FALL - 2.0-3.9 CM H-1
+273 273 SNOW, RATE OF FALL - 4.0-7.9 CM H-1
+274 274 SNOW, RATE OF FALL - 8.0-15.9 CM H-1
+275 275 SNOW, RATE OF FALL - 16.0-31.9 CM H-1
+276 276 SNOW, RATE OF FALL - 32.0-63.9 CM H-1
+277 277 SNOW, RATE OF FALL - 64.0 CM H-1 OR MORE
+278 278 SNOW OR ICE CRYSTAL PRECIPITATION FROM A CLEAR SKY
+279 279 WET SNOW, FREEZING ON CONTACT
+280 280 PRECIPITATION OF RAIN
+281 281 PRECIPITATION OF RAIN, FREEZING
+282 282 PRECIPITATION OF RAIN AND SNOW MIXED
+283 283 PRECIPITATION OF SNOW
+284 284 PRECIPITATION OF SNOW PELLETS OR SMALL HALL
+285 285 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH RAIN
+286 286 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH RAIN AND SNOW MIXED
+287 287 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH SNOW
+288 288 PRECIPITATION OF HAIL
+289 289 PRECIPITATION OF HAIL, WITH RAIN
+290 290 PRECIPITATION OF HALL, WITH RAIN AND SNOW MIXED
+291 291 PRECIPITATION OF HAIL, WITH SNOW
+292 292 SHOWER(S) OR THUNDERSTORM OVER SEA
+293 293 SHOWER(S) OR THUNDERSTORM OVER MOUNTAINS
+508 508 NO SIGNIFICANT PHENOMENON TO REPORT, PRESENT AND PAST WEATHER OMITTED
+509 509 NO OBSERVATION, DATA NOT AVAILABLE, PRESENT AND PAST WEATHER OMITTED
+510 510 PRESENT AND PAST WEATHER MISSING, BUT EXPECTED
+511 511 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20004.table b/definitions/bufr/tables/0/wmo/24/codetables/20004.table
new file mode 100644
index 0000000..6d6e7da
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20004.table
@@ -0,0 +1,21 @@
+0 0 CLOUD COVERING 1/2 OR LESS OF THE SKY THROUGHOUT THE APPROPRIATE PERIOD
+1 1 CLOUD COVERING MORE THAN 1/2 OF THE SKY DURING PART OF THE APPROPRIATE PERIOD AND COVERING 1/2 OR LESS DURING PART OF THE PERIOD
+2 2 CLOUD COVERING MORE THAN 1/2 OF THE SKY THROUGHOUT THE APPROPRIATE PERIOD
+3 3 SANDSTORM, DUSTSTORM OR BLOWING SNOW
+4 4 FOG OR ICE FOG OR THICK HAZE
+5 5 DRIZZLE
+6 6 RAIN
+7 7 SNOW, OR RAIN AND SNOW MIXED
+8 8 SHOWER(S)
+9 9 THUNDERSTORM(S) WITH OR WITHOUT PRECIPITATION
+10 10 NO SIGNIFICANT WEATHER OBSERVED
+11 11 VISIBILITY REDUCED (SEE NOTE)
+12 12 BLOWING PHENOMENA, VISIBILITY REDUCED
+13 13 FOG (SEE NOTE)
+14 14 PRECIPITATION (SEE NOTE)
+15 15 DRIZZLE
+16 16 RAIN
+17 17 SNOW OR ICE PELLETS
+18 18 SHOWERS OR INTERMITTENT PRECIPITATION
+19 19 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20005.table b/definitions/bufr/tables/0/wmo/24/codetables/20005.table
new file mode 100644
index 0000000..6d6e7da
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20005.table
@@ -0,0 +1,21 @@
+0 0 CLOUD COVERING 1/2 OR LESS OF THE SKY THROUGHOUT THE APPROPRIATE PERIOD
+1 1 CLOUD COVERING MORE THAN 1/2 OF THE SKY DURING PART OF THE APPROPRIATE PERIOD AND COVERING 1/2 OR LESS DURING PART OF THE PERIOD
+2 2 CLOUD COVERING MORE THAN 1/2 OF THE SKY THROUGHOUT THE APPROPRIATE PERIOD
+3 3 SANDSTORM, DUSTSTORM OR BLOWING SNOW
+4 4 FOG OR ICE FOG OR THICK HAZE
+5 5 DRIZZLE
+6 6 RAIN
+7 7 SNOW, OR RAIN AND SNOW MIXED
+8 8 SHOWER(S)
+9 9 THUNDERSTORM(S) WITH OR WITHOUT PRECIPITATION
+10 10 NO SIGNIFICANT WEATHER OBSERVED
+11 11 VISIBILITY REDUCED (SEE NOTE)
+12 12 BLOWING PHENOMENA, VISIBILITY REDUCED
+13 13 FOG (SEE NOTE)
+14 14 PRECIPITATION (SEE NOTE)
+15 15 DRIZZLE
+16 16 RAIN
+17 17 SNOW OR ICE PELLETS
+18 18 SHOWERS OR INTERMITTENT PRECIPITATION
+19 19 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20006.table b/definitions/bufr/tables/0/wmo/24/codetables/20006.table
new file mode 100644
index 0000000..a250af9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20006.table
@@ -0,0 +1,5 @@
+0 0 LOW INSTRUMENT FLIGHT RULES - CEILING < 500 FEET AND/OR VISIBILITY < 1 MILE
+1 1 INSTRUMENT FLIGHT RULES - CEILING < 1000 FEET AND/OR VISIBILITY < 3 MILES
+2 2 MARGINAL VISUAL FLIGHT RULES - 1000 FEET <= CEILING < 3000 FEET AND/OR 3 MILES <= VISIBILITY < 5 MILES
+3 3 VISUAL FLIGHT RULES - CEILING => 3000 FEET AND/OR VISIBILITY => 5 MILES
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20008.table b/definitions/bufr/tables/0/wmo/24/codetables/20008.table
new file mode 100644
index 0000000..966bcc2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20008.table
@@ -0,0 +1,19 @@
+0 0 SKY CLEAR
+1 1 FEW
+2 2 SCATTERED
+3 3 BROKEN
+4 4 OVERCAST
+5 5 RESERVED
+6 6 SCATTERED/BROKEN
+7 7 BROKEN/OVERCAST
+8 8 ISOLATED
+9 9 ISOLATED EMBEDDED
+10 10 OCCASIONAL
+11 11 OCCASIONAL EMBEDDED
+12 12 FREQUENT
+13 13 DENSE
+14 14 LAYERS
+15 15 OBSCURED (OBSC)
+16 16 EMBEDDED (EMBD)
+17 17 FREQUENT EMBEDDED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20009.table b/definitions/bufr/tables/0/wmo/24/codetables/20009.table
new file mode 100644
index 0000000..f0119eb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20009.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 NSC NIL SIGNIFICANT CLOUD
+2 2 CAVOK
+3 3 SKC SKY CLEAR
+4 4 NSW NIL SIGNIFICANT WEATHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2001.table b/definitions/bufr/tables/0/wmo/24/codetables/2001.table
new file mode 100644
index 0000000..470fccc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2001.table
@@ -0,0 +1,4 @@
+0 0 AUTOMATIC
+1 1 MANNED
+2 2 HYBRID: BOTH MANNED AND AUTOMATIC
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20011.table b/definitions/bufr/tables/0/wmo/24/codetables/20011.table
new file mode 100644
index 0000000..06c6e10
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20011.table
@@ -0,0 +1,16 @@
+0 0 0
+1 1 1 OKTA OR LESS, BUT NOT ZERO
+2 2 2 OKTAS
+3 3 3 OKTAS
+4 4 4 OKTAS
+5 5 5 OKTAS
+6 6 6 OKTAS
+7 7 7 OKTAS OR MORE, BUT NOT 8 OKTAS
+8 8 8 OKTAS
+9 9 SKY OBSCURED BY FOG AND/OR OTHER METEOROLOGICAL PHENOMENA
+10 10 SKY PARTIALLY OBSCURED BY FOG AND/OR OTHER METEOROLOGICAL PHENOMENA
+11 11 SCATTERED
+12 12 BROKEN
+13 13 FEW
+14 14 RESERVED
+15 15 CLOUD COVER IS INDISCERNIBLE FOR REASONS OTHER THAN FOG OR OTHER METEOROLOGICAL PHENOMENA, OR OBSERVATION IS NOT MADE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20012.table b/definitions/bufr/tables/0/wmo/24/codetables/20012.table
new file mode 100644
index 0000000..99bdc17
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20012.table
@@ -0,0 +1,48 @@
+0 0 CIRRUS (CI)
+1 1 CIRROCUMULUS (CC)
+2 2 CIRROSTRATUS (CS)
+3 3 ALTOCUMULUS (AC)
+4 4 ALTOSTRATUS (AS)
+5 5 NIMBOSTRATUS (NS)
+6 6 STRATOCUMULUS (SC)
+7 7 STRATUS (ST)
+8 8 CUMULUS (CU)
+9 9 CUMULONIMBUS (CB)
+10 10 NO CH CLOUDS
+11 11 CIRRUS FIBRATUS, SOMETIMES UNCINUS, NOT PROGRESSIVELY INVADING THE SKY
+12 12 CIRRUS SPISSATUS, IN PATCHES OR ENTANGLED SHEAVES, WHICH USUALLY DO NOT INCREASE AND SOMETIMES SEEM TO BE THE REMAINS OF THE UPPER PART OF A CUMULONIMBUS; OR CIRRUS CASTELLANUS OR FLOCCUS
+13 13 CIRRUS SPISSATUS CUMULONIMBOGENITUS
+14 14 CIRRUS UNCINUS OR FIBRATUS, OR BOTH, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN AS A WHOLE
+15 15 CIRRUS (OFTEN IN BANDS) AND CIRROSTRATUS, OR CIRROSTRATUS ALONE, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN AS A WHOLE, BUT THE CONTINUOUS VEIL DOES NOT REACH 45 DEGREES ABOVE THE HORIZON
+16 16 CIRRUS (OFTEN IN BANDS) AND CIRROSTRATUS, OR CIRROSTRATUS ALONE, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN AS A WHOLE; THE CONTINUOUS VEIL EXTENDS MORE THAN 45 DEGREES ABOVE THE HORIZON, WITHOUT THE SKY BEING TOTALLY COVERED
+17 17 CIRROSTRATUS COVERING THE WHOLE SKY
+18 18 CIRROSTRATUS NOT PROGRESSIVELY INVADING THE SKY AND NOT ENTIRELY COVERING IT
+19 19 CIRROCUMULUS ALONE, OR CIRROCUMULUS PREDOMINANT AMONG THE CH CLOUDS
+20 20 NO CM CLOUDS
+21 21 ALTOSTRATUS TRANSLUCIDUS
+22 22 ALTOSTRATUS OPACUS OR NIMBOSTRATUS
+23 23 ALTOCUMULUS TRANSLUCIDUS AT A SINGLE LEVEL
+24 24 PATCHES (OFTEN LENTICULAR) OF ALTOCUMULUS TRANSLUCIDUS, CONTINUALLY CHANGING AND OCCURRING AT ONE OR MORE LEVELS
+25 25 ALTOCUMULUS TRANSLUCIDUS IN BANDS, OR ONE OR MORE LAYERS OF ALTOCUMULUS TRANSLUCIDUS OR OPACUS, PROGRESSIVELY INVADING THE SKY; THESE ALTOCUMULUS CLOUDS GENERALLY THICKEN AS A WHOLE
+26 26 ALTOCUMULUS CUMULOGENITUS (OR CUMULONIMBOGENITUS)
+27 27 ALTOCUMULUS TRANSLUCIDUS OR OPACUS IN TWO OR MORE LAYERS, OR ALTOCUMULUS OPACUS IN A SINGLE LAYER, NOT PROGRESSIVELY INVADING THE SKY, OR ALTOCUMULUS WITH ALTOSTRATUS OR NIMBOSTRATUS
+28 28 ALTOCUMULUS CASTELLANUS OR FLOCCUS
+29 29 ALTOCUMULUS OF A CHAOTIC SKY, GENERALLY AT SEVERAL LEVELS
+30 30 NO CL CLOUDS
+31 31 CUMULUS HUMILIS OR CUMULUS FRACTUS OTHER THAN OF BAD WEATHER,* OR BOTH
+32 32 CUMULUS MEDIOCRIS OR CONGESTUS, TOWERING CUMULUS (TCU), WITH OR WITHOUT CUMULUS OF SPECIES FRACTUS OR HUMILIS OR STRATOCUMULUS, ALL HAVING THEIR BASES AT THE SAME LEVEL
+33 33 CUMULONIMBUS CALVUS, WITH OR WITHOUT CUMULUS, STRATOCUMULUS OR STRATUS
+34 34 STRATOCUMULUS CUMULOGENITUS
+35 35 STRATOCUMULUS OTHER THAN STRATOCUMULUS CUMULOGENITUS
+36 36 STRATUS NEBULOSUS OR STRATUS FRACTUS OTHER THAN OF BAD WEATHER,* OR BOTH
+37 37 STRATUS FRACTUS OR CUMULUS FRACTUS OF BAD WEATHER,* OR BOTH (PANNUS), USUALLY BELOW ALTOSTRATUS OR NIMBOSTRATUS
+38 38 CUMULUS AND STRATOCUMULUS OTHER THAN STRATOCUMULUS CUMULOGENITUS, WITH BASES AT DIFFERENT LEVELS
+39 39 CUMULONIMBUS CAPILLATUS (OFTEN WITH AN ANVIL), WITH OR WITHOUT CUMULONIMBUS CALVUS, CUMULUS, STRATOCUMULUS, STRATUS OR PANNUS
+40 40 CH
+41 41 CM
+42 42 CL
+59 59 CLOUD NOT VISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDSTORM, OR OTHER ANALOGOUS PHENOMENA
+60 60 CH CLOUDS INVISIBLE OWING TO DARKNESS, FOG, BLOWING DUST OR SAND, OR OTHER SIMILAR PHENOMENA, OR BECAUSE OF A CONTINUOUS LAYER OF LOWER CLOUDS
+61 61 CM CLOUDS INVISIBLE OWING TO DARKNESS, FOG, BLOWING DUST OR SAND, OR OTHER SIMILAR PHENOMENA, OR BECAUSE OF CONTINUOUS LAYER OF LOWER CLOUDS
+62 62 CL CLOUDS INVISIBLE OWING TO DARKNESS, FOG, BLOWING DUST OR SAND, OR OTHER SIMILAR PHENOMENA
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20017.table b/definitions/bufr/tables/0/wmo/24/codetables/20017.table
new file mode 100644
index 0000000..5ec10bd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20017.table
@@ -0,0 +1,11 @@
+0 0 ISOLATED CLOUD FRAGMENTS OF CLOUDS
+1 1 CONTINUOUS CLOUD
+2 2 BROKEN CLOUD - SMALL BREAKS
+3 3 BROKEN CLOUD - LARGE BREAKS
+4 4 CONTINUOUS CLOUD
+5 5 BROKEN CLOUD - SMALL BREAKS
+6 6 BROKEN CLOUD - LARGE BREAKS
+7 7 CONTINUOUS OR ALMOST CONTINUOUS WAVES WITH TOWERING CLOUDS ABOVE THE TOP OF THE LAYER
+8 8 GROUPS OF WAVES WITH TOWERING CLOUDS ABOVE THE TOP OF THE LAYER
+9 9 TWO OR MORE LAYERS AT DIFFERENT LEVELS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20018.table b/definitions/bufr/tables/0/wmo/24/codetables/20018.table
new file mode 100644
index 0000000..c0ffc36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20018.table
@@ -0,0 +1,4 @@
+0 0 INCREASING (U)
+1 1 DECREASING (D)
+2 2 NO DISTINCT CHANGE (N)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2002.table b/definitions/bufr/tables/0/wmo/24/codetables/2002.table
new file mode 100644
index 0000000..a701e1e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2002.table
@@ -0,0 +1,3 @@
+1 1 CERTIFIED INSTRUMENTS
+2 2 ORIGINALLY MEASURED IN KNOTS
+3 3 ORIGINALLY MEASURED IN KM H-1
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20021.table b/definitions/bufr/tables/0/wmo/24/codetables/20021.table
new file mode 100644
index 0000000..747a759
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20021.table
@@ -0,0 +1,23 @@
+1 1 PRECIPITATION - UNKNOWN TYPE
+2 2 LIQUID PRECIPITATION NOT FREEZING
+3 3 LIQUID FREEZING PRECIPITATION
+4 4 DRIZZLE
+5 5 RAIN
+6 6 SOLID PRECIPITATION
+7 7 SNOW
+8 8 SNOW GRAINS
+9 9 SNOW PELLETS
+10 10 ICE PELLETS
+11 11 ICE CRYSTALS
+12 12 DIAMOND DUST
+13 13 SMALL HAIL
+14 14 HAIL
+15 15 GLAZE
+16 16 RIME
+17 17 SOFT RIME
+18 18 HARD RIME
+19 19 CLEAR ICE
+20 20 WET SNOW
+21 21 HOAR FROST
+22 22 DEW
+23 23 WHITE DEW
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20022.table b/definitions/bufr/tables/0/wmo/24/codetables/20022.table
new file mode 100644
index 0000000..a551aac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20022.table
@@ -0,0 +1,7 @@
+0 0 NO PRECIPITATION
+1 1 CONTINUOUS
+2 2 INTERMITTENT
+3 3 SHOWER
+4 4 NOT REACHING GROUND
+5 5 DEPOSITION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20023.table b/definitions/bufr/tables/0/wmo/24/codetables/20023.table
new file mode 100644
index 0000000..97670df
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20023.table
@@ -0,0 +1,14 @@
+1 1 DUST/SAND WHIRL
+2 2 SQUALLS
+3 3 SANDSTORM
+4 4 DUSTSTORM
+5 5 LIGHTNING - CLOUD TO SURFACE
+6 6 LIGHTNING - CLOUD TO CLOUD
+7 7 LIGHTNING - DISTANT
+8 8 THUNDERSTORM
+9 9 FUNNEL CLOUD NOT TOUCHING SURFACE
+10 10 FUNNEL CLOUD TOUCHING SURFACE
+11 11 SPRAY
+12 12 WATERSPOUT
+13 13 WIND SHEAR
+14 14 DUST DEVILS
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20024.table b/definitions/bufr/tables/0/wmo/24/codetables/20024.table
new file mode 100644
index 0000000..13aba87
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20024.table
@@ -0,0 +1,8 @@
+0 0 NO PHENOMENA
+1 1 LIGHT
+2 2 MODERATE
+3 3 HEAVY
+4 4 VIOLENT
+5 5 SEVERE
+6 6 VERY SEVERE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20025.table b/definitions/bufr/tables/0/wmo/24/codetables/20025.table
new file mode 100644
index 0000000..4d70e33
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20025.table
@@ -0,0 +1,13 @@
+1 1 FOG
+2 2 ICE FOG
+3 3 STEAM FOG
+7 7 MIST
+8 8 HAZE
+9 9 SMOKE
+10 10 VOLCANIC ASH
+11 11 DUST
+12 12 SAND
+13 13 SNOW
+14 14 CLOUD
+15 15 PRECIPITATION
+16 16 IMPOSSIBLE TO DETERMINE WHETHER SNOW IS FALLING OR NOT
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20026.table b/definitions/bufr/tables/0/wmo/24/codetables/20026.table
new file mode 100644
index 0000000..2852094
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20026.table
@@ -0,0 +1,16 @@
+0 0 NO CHANGE
+1 1 SHALLOW
+2 2 PATCHES
+3 3 PARTIAL
+4 4 FREEZING
+5 5 LOW DRIFTING
+6 6 BLOWING
+7 7 INCREASING
+8 8 DECREASING
+9 9 IN SUSPENSION IN THE AIR
+10 10 WALL
+11 11 DENSE
+12 12 WHITEOUT
+13 13 DRIFTING AND BLOWING
+14 14 RESERVED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20027.table b/definitions/bufr/tables/0/wmo/24/codetables/20027.table
new file mode 100644
index 0000000..c337f16
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20027.table
@@ -0,0 +1,8 @@
+1 1 AT TIME OF OBSERVATION
+2 2 IN PAST HOUR
+3 3 IN TIME PERIOD FOR PAST WEATHER W1W2
+4 4 IN TIME PERIOD SPECIFIED
+5 5 RESERVED
+6 6 BELOW STATION LEVEL
+7 7 AT THE STATION
+8 8 IN THE VICINITY
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20028.table b/definitions/bufr/tables/0/wmo/24/codetables/20028.table
new file mode 100644
index 0000000..6b701a2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20028.table
@@ -0,0 +1,4 @@
+0 0 NO CHANGE (NC)
+1 1 FORECAST TO WEAKEN (WKN)
+2 2 FORECAST TO INTENSIFY (INTSF)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20029.table b/definitions/bufr/tables/0/wmo/24/codetables/20029.table
new file mode 100644
index 0000000..8b46da8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20029.table
@@ -0,0 +1,4 @@
+0 0 NO RAIN
+1 1 RAIN
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2003.table b/definitions/bufr/tables/0/wmo/24/codetables/2003.table
new file mode 100644
index 0000000..e0aa923
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2003.table
@@ -0,0 +1,12 @@
+0 0 PRESSURE INSTRUMENT ASSOCIATED WITH WIND MEASURING EQUIPMENT
+1 1 OPTICAL THEODOLITE
+2 2 RADIO THEODOLITE
+3 3 RADAR
+4 4 VLF-OMEGA
+5 5 LORAN C
+6 6 WIND PROFILER
+7 7 SATELLITE NAVIGATION
+8 8 RADIO-ACOUSTIC SOUNDING SYSTEM (RASS)
+9 9 SODAR
+14 14 PRESSURE INSTRUMENT ASSOCIATED WITH WIND MEASURING EQUIPMENT BUT PRESSURE ELEMENT FAILED DURING ASCENT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20032.table b/definitions/bufr/tables/0/wmo/24/codetables/20032.table
new file mode 100644
index 0000000..fd37c1e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20032.table
@@ -0,0 +1,6 @@
+0 0 ICE NOT BUILDING UP
+1 1 ICE BUILDING UP SLOWLY
+2 2 ICE BUILDING UP RAPIDLY
+3 3 ICE MELTING OR BREAKING UP SLOWLY
+4 4 ICE MELTING OR BREAKING UP RAPIDLY
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20033.table b/definitions/bufr/tables/0/wmo/24/codetables/20033.table
new file mode 100644
index 0000000..8178733
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20033.table
@@ -0,0 +1,3 @@
+1 1 ICING FROM OCEAN SPRAY
+2 2 ICING FROM FOG
+3 3 ICING FROM RAIN
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20034.table b/definitions/bufr/tables/0/wmo/24/codetables/20034.table
new file mode 100644
index 0000000..668e916
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20034.table
@@ -0,0 +1,12 @@
+0 0 NO SEA ICE IN SIGHT
+1 1 SHIP IN OPEN LEAD MORE THAN 1.0 NAUTICAL MILE WIDE, OR SHIP IN FAST ICE WITH BOUNDARY BEYOND LIMIT OF VISIBILITY
+2 2 SEA ICE PRESENT IN CONCENTRATIONS LESS THAN 3/10 (3/8), OPEN WATER OR VERY OPEN PACK ICE
+3 3 4/10 TO 6/10 (3/8 TO LESS THAN 6/8), OPEN PACK ICE
+4 4 7/10 TO 8/10 (6/8 TO LESS THAN 7/8), CLOSE PACK ICE
+5 5 9/10 OR MORE, BUT NOT 10/10 (7/8 TO LESS THAN 8/8), VERY CLOSE PACK ICE
+6 6 STRIPS AND PATCHES OF PACK ICE WITH OPEN WATER BETWEEN
+7 7 STRIPS AND PATCHES OF CLOSE OR VERY CLOSE PACK ICE WITH AREAS OF LESSER CONCENTRATION BETWEEN
+8 8 FAST ICE WITH OPEN WATER, VERY OPEN OR OPEN PACK ICE TO SEAWARD OF THE ICE BOUNDARY
+9 9 FAST ICE WITH CLOSE OR VERY CLOSE PACK ICE TO SEAWARD OF THE BOUNDARY
+14 14 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY, OR BECAUSE SHIP IS MORE THAN 0.5 NAUTICAL MILE AWAY FROM ICE EDGE
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20035.table b/definitions/bufr/tables/0/wmo/24/codetables/20035.table
new file mode 100644
index 0000000..07a4a02
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20035.table
@@ -0,0 +1,12 @@
+0 0 NO ICE OF LAND ORIGIN
+1 1 1-5 ICEBERGS, NO GROWLERS OR BERGY BITS
+2 2 6-10 ICEBERGS, NO GROWLERS OR BERGY BITS
+3 3 11-20 ICEBERGS, NO GROWLERS OR BERGY BITS
+4 4 UP TO AND INCLUDING 10 GROWLERS AND BERGY BITS - NO ICEBERGS
+5 5 MORE THAN 10 GROWLERS AND BERGY BITS - NO ICEBERGS
+6 6 1-5 ICEBERGS, WITH GROWLERS AND BERGY BITS
+7 7 6-10 ICEBERGS, WITH GROWLERS AND BERGY BITS
+8 8 11-20 ICEBERGS, WITH GROWLERS AND BERGY BITS
+9 9 MORE THAN 20 ICEBERGS, WITH GROWLERS AND BERGY BITS - A MAJOR HAZARD TO NAVIGATION
+14 14 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY OR BECAUSE ONLY SEA ICE IS VISIBLE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20036.table b/definitions/bufr/tables/0/wmo/24/codetables/20036.table
new file mode 100644
index 0000000..b4cc874
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20036.table
@@ -0,0 +1,12 @@
+0 0 SHIP IN OPEN WATER WITH FLOATING ICE IN SIGHT
+1 1 SHIP IN EASILY PENETRABLE ICE; CONDITIONS IMPROVING
+2 2 SHIP IN EASILY PENETRABLE ICE; CONDITIONS NOT CHANGING
+3 3 SHIP IN EASILY PENETRABLE ICE; CONDITIONS WORSENING
+4 4 SHIP IN ICE DIFFICULT TO PENETRATE; CONDITIONS IMPROVING
+5 5 SHIP IN ICE DIFFICULT TO PENETRATE; CONDITIONS NOT CHANGING
+6 6 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING. ICE FORMING AND FLOES FREEZING TOGETHER
+7 7 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING. ICE UNDER SLIGHT PRESSURE
+8 8 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING. ICE UNDER MODERATE OR SEVERE PRESSURE
+9 9 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING. SHIP BESET
+30 30 UNABLE TO REPORT, BECAUSE OF DARKNESS OR LACK OF VISIBILITY
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20037.table b/definitions/bufr/tables/0/wmo/24/codetables/20037.table
new file mode 100644
index 0000000..474eeaa
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20037.table
@@ -0,0 +1,12 @@
+0 0 NEW ICE ONLY (FRAZIL ICE, GREASE ICE, SLUSH, SHUGA)
+1 1 NILAS OR ICE RIND, LESS THAN 10 CM THICK
+2 2 YOUNG ICE (GREY ICE, GREY-WHITE ICE), 10-30 CM THICK
+3 3 PREDOMINANTLY NEW AND/OR YOUNG ICE WITH SOME FIRST-YEAR ICE
+4 4 PREDOMINANTLY THIN FIRST-YEAR ICE WITH SOME NEW AND/OR YOUNG ICE
+5 5 ALL THIN FIRST-YEAR ICE (30-70 CM THICK)
+6 6 PREDOMINANTLY MEDIUM FIRST-YEAR ICE (70-120 CM THICK) AND THICK FIRST-YEAR ICE (>120 CM THICK) WITH SOME THINNER (YOUNGER) FIRST-YEAR ICE
+7 7 ALL MEDIUM AND THICK FIRST-YEAR ICE
+8 8 PREDOMINANTLY MEDIUM AND THICK FIRST-YEAR ICE WITH SOME OLD ICE (USUALLY MORE THAN 2 METRES THICK)
+9 9 PREDOMINANTLY OLD ICE
+30 30 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY OR BECAUSE ONLY ICE OF LAND ORIGIN IS VISIBLE OR BECAUSE SHIP IS MORE THAN 0.5 NAUTICAL MILE AWAY FROM ICE EDGE
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2004.table b/definitions/bufr/tables/0/wmo/24/codetables/2004.table
new file mode 100644
index 0000000..a55de6c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2004.table
@@ -0,0 +1,11 @@
+0 0 USA OPEN PAN EVAPORIMETER (WITHOUT COVER)
+1 1 USA OPEN PAN EVAPORIMETER (MESH COVERED)
+2 2 GGI-3000 EVAPORIMETER (SUNKEN)
+3 3 20 M2 TANK
+4 4 OTHERS
+5 5 RICE
+6 6 WHEAT
+7 7 MAIZE
+8 8 SORGHUM
+9 9 OTHER CROPS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20040.table b/definitions/bufr/tables/0/wmo/24/codetables/20040.table
new file mode 100644
index 0000000..889393b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20040.table
@@ -0,0 +1,9 @@
+0 0 DRIFT SNOW ENDED BEFORE THE HOUR OF OBSERVATION
+1 1 INTENSITY DIMINISHING
+2 2 NO CHANGE
+3 3 INTENSITY INCREASING
+4 4 CONTINUES, APART FROM INTERRUPTION LASTING LESS THAN 30 MINUTES
+5 5 GENERAL DRIFT SNOW HAS BECOME DRIFT SNOW NEAR THE GROUND
+6 6 DRIFT SNOW NEAR THE GROUND HAS BECOME GENERAL DRIFT SNOW
+7 7 DRIFT SNOW HAS STARTED AGAIN AFTER AN INTERRUPTION OF MORE THAN 30 MINUTES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20041.table b/definitions/bufr/tables/0/wmo/24/codetables/20041.table
new file mode 100644
index 0000000..fc57120
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20041.table
@@ -0,0 +1,14 @@
+0 0 NO ICING
+1 1 LIGHT ICING
+2 2 LIGHT ICING IN CLOUD
+3 3 LIGHT ICING IN PRECIPITATION
+4 4 MODERATE ICING
+5 5 MODERATE ICING IN CLOUD
+6 6 MODERATE ICING IN PRECIPITATION
+7 7 SEVERE ICING
+8 8 SEVERE ICING IN CLOUD
+9 9 SEVERE ICING IN PRECIPITATION
+10 10 TRACE OF ICING
+11 11 TRACE OF ICING IN CLOUD
+12 12 TRACE OF ICING IN PRECIPITATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20042.table b/definitions/bufr/tables/0/wmo/24/codetables/20042.table
new file mode 100644
index 0000000..2493af7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20042.table
@@ -0,0 +1,4 @@
+0 0 NO ICING
+1 1 ICING PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20045.table b/definitions/bufr/tables/0/wmo/24/codetables/20045.table
new file mode 100644
index 0000000..91ae63f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20045.table
@@ -0,0 +1,4 @@
+0 0 NO SLD CONDITIONS PRESENT
+1 1 SLD CONDITIONS PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20048.table b/definitions/bufr/tables/0/wmo/24/codetables/20048.table
new file mode 100644
index 0000000..4a54882
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20048.table
@@ -0,0 +1,5 @@
+0 0 STABILITY
+1 1 DIMINUTION
+2 2 INTENSIFICATION
+3 3 UNKNOWN
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20050.table b/definitions/bufr/tables/0/wmo/24/codetables/20050.table
new file mode 100644
index 0000000..3f8654e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20050.table
@@ -0,0 +1,10 @@
+0 0 RESERVED
+1 1 1ST LOW CLOUD
+2 2 2ND LOW CLOUD
+3 3 3RD LOW CLOUD
+4 4 1ST MEDIUM CLOUD
+5 5 2ND MEDIUM CLOUD
+6 6 3RD MEDIUM CLOUD
+7 7 1ST HIGH CLOUD
+8 8 2ND HIGH CLOUD
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20055.table b/definitions/bufr/tables/0/wmo/24/codetables/20055.table
new file mode 100644
index 0000000..ea06427
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20055.table
@@ -0,0 +1,12 @@
+0 0 CUMULUS, IF ANY, ARE QUITE SMALL; GENERALLY LESS THAN 2/8 COVERAGE, EXCEPT ON WINDWARD SLOPES OF ELEVATED TERRAIN; AVERAGE WIDTH OF CLOUD IS AT LEAST AS GREAT AS ITS VERTICAL THICKNESS
+1 1 CUMULUS OF INTERMEDIATE SIZE WITH CLOUD COVER LESS THAN 5/8; AVERAGE CLOUD WIDTH IS MORE THAN ITS VERTICAL THICKNESS; TOWERS ARE VERTICAL WITH LITTLE OR NO EVIDENCE OF PRECIPITATION, EXCEPT ALONG SLOPES OF ELEVATED TERRAIN; A GENERAL ABSENCE OF MIDDLE AND UPPER CLOUDS
+2 2 SWELLING CUMULUS WITH RAPIDLY GROWING TALL TURRETS WHICH DECREASE IN SIZE WITH HEIGHT AND WHOSE TOPS TEND TO SEPARATE FROM THE LONGER CLOUD BODY AND EVAPORATE WITHIN MINUTES OF THE SEPARATION
+3 3 SWELLING CUMULUS WITH TOWERS HAVING A PRONOUNCED TILT IN A DOWNWIND DIRECTION; VERTICAL CLOUD THICKNESS IS MORE THAN ONE AND A HALF TIMES THAT OF ITS AVERAGE WIDTH
+4 4 SWELLING CUMULUS WITH TOWERS HAVING A PRONOUNCED TILT IN AN UPWIND DIRECTION; VERTICAL CLOUD THICKNESS IS MORE THAN ONE AND A HALF TIMES THAT OF ITS AVERAGE WIDTH
+5 5 TALL CUMULUS CONGESTUS WITH VERTICAL THICKNESS MORE THAN TWICE THE AVERAGE WIDTH; NOT ORGANIZED IN CLUSTERS OR LINES; ONE OR MORE LAYERS OF CLOUDS EXTEND OUT FROM THE CLOUD TOWERS, ALTHOUGH NO CONTINUOUS CLOUD LAYERS EXIST
+6 6 ISOLATED CUMULONIMBUS OR LARGE CLUSTERS OF CUMULUS TURRETS SEPARATED BY WIDE AREAS IN WHICH CLOUDS ARE ABSENT; CLOUD BASES ARE GENERALLY DARK WITH SHOWERS OBSERVED IN MOST CELLS; SOME SCATTERED MIDDLE AND UPPER CLOUDS MAY BE PRESENT; INDIVIDUAL CUMULUS CELLS ARE ONE TO TWO TIMES HIGHER THAN THEY ARE WIDE
+7 7 NUMEROUS CUMULUS EXTENDING THROUGH THE MIDDLE TROPOSPHERE WITH BROKEN TO OVERCAST SHEETS OF MIDDLE CLOUDS AND/OR CIRROSTRATUS; CUMULUS TOWERS DO NOT DECREASE GENERALLY IN SIZE WITH HEIGHT; RAGGED DARK CLOUD BASES WITH SOME SHOWERS PRESENT
+8 8 CONTINUOUS DENSE MIDDLE CLOUDS AND/OR CIRROSTRATUS CLOUD SHEETS WITH SOME LARGE ISOLATED CUMULONIMBUS OR CUMULUS CONGESTUS CLOUDS PENETRATING THESE SHEETS; LIGHT RAIN OCCASIONALLY OBSERVED FROM THE ALTOSTRATUS; CUMULONIMBUS BASES RAGGED AND DARK WITH SHOWERS VISIBLE
+9 9 CONTINUOUS SHEETS OF MIDDLE CLOUDS AND/OR CIRROSTRATUS WITH CUMULONIMBUS AND CUMULUS CONGESTUS IN ORGANIZED LINES OR CLOUD BANDS; RAIN IS GENERALLY OBSERVED FROM ALTOSTRATUS SHEETS AND HEAVY SHOWERS FROM CUMULONIMBUS; WIND HAS A SQUALLY CHARACTER
+10 10 STATE OF SKY UNKNOWN OR NOT DESCRIBED BY ANY OF THE ABOVE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20056.table b/definitions/bufr/tables/0/wmo/24/codetables/20056.table
new file mode 100644
index 0000000..d493792
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20056.table
@@ -0,0 +1,6 @@
+0 0 UNKNOWN
+1 1 WATER
+2 2 ICE
+3 3 MIXED
+4 4 CLEAR
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20062.table b/definitions/bufr/tables/0/wmo/24/codetables/20062.table
new file mode 100644
index 0000000..24d96c4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20062.table
@@ -0,0 +1,21 @@
+0 0 SURFACE OF GROUND DRY (WITHOUT CRACKS AND NO APPRECIABLE AMOUNT OF DUST OR LOOSE SAND)
+1 1 SURFACE OF GROUND MOIST
+2 2 SURFACE OF GROUND WET (STANDING WATER IN SMALL OR LARGE POOLS ON SURFACE)
+3 3 FLOODED
+4 4 SURFACE OF GROUND FROZEN
+5 5 GLAZE ON GROUND
+6 6 LOOSE DRY DUST OR SAND NOT COVERING GROUND COMPLETELY
+7 7 THIN COVER OF LOOSE DRY DUST OR SAND COVERING GROUND COMPLETELY
+8 8 MODERATE OR THICK COVER OF LOOSE DRY DUST OR SAND COVERING GROUND COMPLETELY
+9 9 EXTREMELY DRY WITH CRACKS
+10 10 GROUND PREDOMINANTLY COVERED BY ICE
+11 11 COMPACT OR WET SNOW (WITH OR WITHOUT ICE) COVERING LESS THAN ONE HALF OF THE GROUND
+12 12 COMPACT OR WET SNOW (WITH OR WITHOUT ICE) COVERING AT LEAST ONE HALF OF THE GROUND BUT GROUND NOT COMPLETELY COVERED
+13 13 EVEN LAYER OF COMPACT OR WET SNOW COVERING GROUND COMPLETELY
+14 14 UNEVEN LAYER OF COMPACT OR WET SNOW COVERING GROUND COMPLETELY
+15 15 LOOSE DRY SNOW COVERING LESS THAN ONE HALF OF THE GROUND
+16 16 LOOSE DRY SNOW COVERING AT LEAST ONE HALF OF THE GROUND BUT GROUND NOT COMPLETELY COVERED
+17 17 EVEN LAYER OF LOOSE DRY SNOW COVERING GROUND COMPLETELY
+18 18 UNEVEN LAYER OF LOOSE DRY SNOW COVERING GROUND COMPLETELY
+19 19 SNOW COVERING GROUND COMPLETELY; DEEP DRIFTS
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20063.table b/definitions/bufr/tables/0/wmo/24/codetables/20063.table
new file mode 100644
index 0000000..90ce1c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20063.table
@@ -0,0 +1,71 @@
+0 0 RESERVED
+1 1 HIGHEST WIND SPEED GUSTS GREATER THAN 11.5 M/S
+2 2 HIGHEST MEAN WIND SPEED GREATER THAN 17.5 M/S
+7 7 VISIBILITY GREATER THAN 100 000 M
+10 10 MIRAGE - NO SPECIFICATION
+11 11 MIRAGE - IMAGE OF DISTANT OBJECT RAISED (LOOMING)
+13 13 MIRAGE - INVERTED IMAGE OF DISTANT OBJECT
+14 14 MIRAGE - COMPLEX, MULTIPLE IMAGES OF DISTANT OBJECT (IMAGES NOT INVERTED)
+15 15 MIRAGE - COMPLEX, MULTIPLE IMAGES OF DISTANT OBJECT (SOME IMAGES BEING INVERTED)
+16 16 MIRAGE - SUN OR MOON SEEN APPRECIABLY DISTORTED
+17 17 MIRAGE - SUN VISIBLE, ALTHOUGH ASTRONOMICALLY BELOW THE HORIZON
+18 18 MIRAGE - MOON VISIBLE, ALTHOUGH ASTRONOMICALLY BELOW THE HORIZON
+19 19 RESERVED
+20 20 DAY DARKNESS, BAD, WORST IN DIRECTION SPECIFIED
+21 21 DAY DARKNESS, VERY BAD, WORST IN DIRECTION SPECIFIED
+22 22 DAY DARKNESS, BLACK, WORST IN DIRECTION SPECIFIED
+31 31 SLIGHT COLORATION OF CLOUDS AT SUNRISE ASSOCIATED WITH A TROPICAL DISTURBANCE
+32 32 DEEP-RED COLORATION OF CLOUDS AT SUNRISE ASSOCIATED WITH A TROPICAL DISTURBANCE
+33 33 SLIGHT COLORATION OF CLOUDS AT SUNSET ASSOCIATED WITH A TROPICAL DISTURBANCE
+34 34 DEEP-RED COLORATION OF CLOUDS AT SUNSET ASSOCIATED WITH A TROPICAL DISTURBANCE
+35 35 CONVERGENCE OF CH CLOUDS AT A POINT BELOW 45° FORMING OR INCREASING AND ASSOCIATED WITH A TROPICAL DISTURBANCE
+36 36 CONVERGENCE OF CH CLOUDS AT A POINT ABOVE 45° ASSOCIATED WITH A TROPICAL DISTURBANCE
+37 37 CONVERGENCE OF CH CLOUDS AT A POINT BELOW 45° DISSOLVING OR DIMINISHING AND ASSOCIATED WITH A TROPICAL DISTURBANCE
+38 38 CONVERGENCE OF CH CLOUDS AT A POINT ABOVE 45° ASSOCIATED WITH A TROPICAL DISTURBANCE
+39 39 RESERVED
+40 40 HOAR FROST ON HORIZONTAL SURFACES
+41 41 HOAR FROST ON HORIZONTAL AND VERTICAL SURFACES
+42 42 PRECIPITATION CONTAINING SAND OR DESERT DUST
+43 43 PRECIPITATION CONTAINING VOLCANIC ASH
+50 50 CALM OR LIGHT WIND FOLLOWED BY A SQUALL
+51 51 CALM OR LIGHT WIND FOLLOWED BY A SUCCESSION OF SQUALLS
+52 52 GUSTY WEATHER FOLLOWED BY A SQUALL
+53 53 GUSTY WEATHER FOLLOWED BY A SUCCESSION OF SQUALLS
+54 54 SQUALL FOLLOWED BY GUSTY WEATHER
+55 55 GENERAL GUSTY WEATHER WITH SQUALL AT INTERVALS
+56 56 SQUALL APPROACHING STATION
+57 57 LINE SQUALL
+58 58 SQUALL WITH DRIFTING OR BLOWING DUST OR SAND
+59 59 LINE SQUALL WITH DRIFTING OR BLOWING DUST OR SAND
+60 60 TEMPERATURE STEADY
+61 61 TEMPERATURE FALLING, WITHOUT GOING BELOW 0°C
+62 62 TEMPERATURE RISING, WITHOUT GOING ABOVE 0°C
+63 63 TEMPERATURE FALLING TO A VALUE BELOW 0°C
+64 64 TEMPERATURE RISING TO A VALUE ABOVE 0°C
+65 65 IRREGULAR VARIATION, OSCILLATIONS OF TEMPERATURE PASSING THROUGH 0°C
+66 66 IRREGULAR VARIATION, OSCILLATIONS OF TEMPERATURE NOT PASSING THROUGH 0°C
+67 67 VARIATION OF TEMPERATURE NOT OBSERVED
+68 68 NOT ALLOCATED
+69 69 VARIATION OF TEMPERATURE UNKNOWN OWING TO LACK OF THERMOGRAPH
+70 70 VISIBILITY HAS NOT VARIED (SUN* VISIBLE) TOWARDS DIRECTION SPECIFIED
+71 71 VISIBILITY HAS NOT VARIED (SUN* INVISIBLE) TOWARDS DIRECTION SPECIFIED
+72 72 VISIBILITY HAS INCREASED (SUN* VISIBLE) TOWARDS DIRECTION SPECIFIED
+73 73 VISIBILITY HAS INCREASED (SUN* INVISIBLE) TOWARDS DIRECTION SPECIFIED
+74 74 VISIBILITY HAS DECREASED (SUN* VISIBLE) TOWARDS DIRECTION SPECIFIED
+75 75 VISIBILITY HAS DECREASED (SUN* INVISIBLE) TOWARDS DIRECTION SPECIFIED
+76 76 FOG COMING FROM DIRECTION SPECIFIED
+77 77 FOG HAS LIFTED, WITHOUT DISSIPATING
+78 78 FOG HAS DISPERSED WITHOUT REGARD TO DIRECTION
+79 79 MOVING PATCHES OR BANKS OF FOG
+80 80 BROCKEN SPECTRE
+81 81 RAINBOW
+82 82 SOLAR OR LUNAR HALO
+83 83 PARHELIA OR ANTHELIA
+84 84 SUN PILLAR
+85 85 CORONA
+86 86 TWILIGHT GLOW
+87 87 TWILIGHT GLOW ON THE MOUNTAINS (ALPENGLüHEN)
+88 88 MIRAGE
+89 89 ZODIACAL LIGHT
+90 90 ST ELMO'S FIRE
+1023 1023 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2007.table b/definitions/bufr/tables/0/wmo/24/codetables/2007.table
new file mode 100644
index 0000000..05b4c6b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2007.table
@@ -0,0 +1,11 @@
+0 0 RESERVED
+1 1 SHAFT ENCODER FLOAT SYSTEM
+2 2 ULTRASONIC
+3 3 RADAR
+4 4 PRESSURE (SINGLE TRANSDUCER)
+5 5 PRESSURE (MULTIPLE TRANSDUCER)
+6 6 PRESSURE (IN STILLING WELL)
+7 7 BUBBLER PRESSURE
+8 8 ACOUSTIC (WITH SOUNDING TUBE)
+9 9 ACOUSTIC (IN OPEN AIR)
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20071.table b/definitions/bufr/tables/0/wmo/24/codetables/20071.table
new file mode 100644
index 0000000..c26664d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20071.table
@@ -0,0 +1,11 @@
+0 0 NO ASSESSMENT
+1 1 LESS THAN 50 KM
+2 2 BETWEEN 50 AND 200 KM
+3 3 MORE THAN 200 KM
+4 4 LESS THAN 50 KM
+5 5 BETWEEN 50 AND 200 KM
+6 6 MORE THAN 200 KM
+7 7 LESS THANK 50 KM
+8 8 BETWEEN 50 AND 200 KM
+9 9 MORE THAN 200 KM
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20085.table b/definitions/bufr/tables/0/wmo/24/codetables/20085.table
new file mode 100644
index 0000000..f929e87
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20085.table
@@ -0,0 +1,3 @@
+0 0 CLEARED (CLRD//)
+1 1 ALL RUNWAYS CLOSED (SNOCLO)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20086.table b/definitions/bufr/tables/0/wmo/24/codetables/20086.table
new file mode 100644
index 0000000..b543330
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20086.table
@@ -0,0 +1,11 @@
+0 0 CLEAR AND DRY
+1 1 DAMP
+2 2 WET WITH WATER PATCHES
+3 3 RIME AND FROST COVERED (DEPTH NORMALLY LESS THAN 1 MM)
+4 4 DRY SNOW
+5 5 WET SNOW
+6 6 SLUSH
+7 7 ICE
+8 8 COMPACTED OR ROLLED SNOW
+9 9 FROZEN RUTS OR RIDGES
+15 15 MISSING OR NOT REPORTED (E.G. DUE TO RUNWAY CLEARANCE IN PROGRESS)
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20087.table b/definitions/bufr/tables/0/wmo/24/codetables/20087.table
new file mode 100644
index 0000000..b2e33aa
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20087.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 LESS THAN 10% OF RUNWAY COVERED
+2 2 11% TO 25% OF RUNWAY COVERED
+5 5 25% TO 50% OF RUNWAY COVERED
+9 9 51% TO 100% OF RUNWAY COVERED
+15 15 MISSING OR NOT REPORTED (E.G. DUE TO RUNWAY CLEARANCE IN PROGRESS)
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20089.table b/definitions/bufr/tables/0/wmo/24/codetables/20089.table
new file mode 100644
index 0000000..f616c62
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20089.table
@@ -0,0 +1,11 @@
+0 0 0.00
+1 1 0.01
+89 89 0.89
+90 90 0.90
+91 91 BRAKING ACTION POOR
+92 92 BRAKING ACTION MEDIUM TO POOR
+93 93 BRAKING ACTION MEDIUM
+94 94 BRAKING ACTION MEDIUM TO GOOD
+95 95 BRAKING ACTION GOOD
+99 99 UNRELIABLE
+127 127 MISSING, NOT REPORTED AND/OR RUNWAY NOT OPERATIONAL
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20090.table b/definitions/bufr/tables/0/wmo/24/codetables/20090.table
new file mode 100644
index 0000000..d13502e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20090.table
@@ -0,0 +1,7 @@
+0 0 RESERVED
+1 1 NACREOUS CLOUDS
+2 2 NOCTILUCENT CLOUDS
+3 3 CLOUDS FROM WATERFALLS
+4 4 CLOUDS FROM FIRES
+5 5 CLOUDS FROM VOLCANIC ERUPTIONS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20101.table b/definitions/bufr/tables/0/wmo/24/codetables/20101.table
new file mode 100644
index 0000000..abe89f5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20101.table
@@ -0,0 +1,11 @@
+0 0 RESERVED
+1 1 SCHISTOCERCA GREGARIA
+2 2 LOCUSTA MIGRATORIA
+3 3 NOMADACRIS SEPTEMFASCIATA
+4 4 OEDALEUS SENEGALENSIS
+5 5 ANRACRIDIUM SPP
+6 6 OTHER LOCUSTS
+7 7 OTHER GRASSHOPPERS
+8 8 OTHER CRICKETS
+9 9 SPODOPTERA EXEMPTA
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20102.table b/definitions/bufr/tables/0/wmo/24/codetables/20102.table
new file mode 100644
index 0000000..6a53039
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20102.table
@@ -0,0 +1,11 @@
+0 0 GREEN
+1 1 GREEN OR BLACK
+2 2 BLACK
+3 3 YELLOW AND BLACK
+4 4 STRAW/GREY
+5 5 PINK
+6 6 DARK RED/BROWN
+7 7 MIXED RED AND YELLOW
+8 8 YELLOW
+9 9 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20103.table b/definitions/bufr/tables/0/wmo/24/codetables/20103.table
new file mode 100644
index 0000000..9c4f689
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20103.table
@@ -0,0 +1,11 @@
+0 0 HOPPERS (NYMPHS, LARVAE), STAGE 1
+1 1 HOPPERS (NYMPHS, LARVAE), STAGE 2 OR MIXED 1, 2 INSTARS (STAGES)
+2 2 HOPPERS (NYMPHS, LARVAE), STAGE 3 OR MIXED 2, 3 INSTARS
+3 3 HOPPERS (NYMPHS, LARVAE), STAGE 4 OR MIXED 3, 4 INSTARS
+4 4 HOPPERS (NYMPHS, LARVAE), STAGE 5 OR MIXED 4, 5 INSTARS
+5 5 HOPPERS (NYMPHS, LARVAE), STAGE MIXED, ALL OR MANY INSTARS
+6 6 FLEDGLINGS (WINGS TOO SOFT FOR SUSTAINED FLIGHT)
+7 7 IMMATURE ADULTS
+8 8 MIXED MATURITY ADULTS
+9 9 MATURE ADULTS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20104.table b/definitions/bufr/tables/0/wmo/24/codetables/20104.table
new file mode 100644
index 0000000..15ca8ac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20104.table
@@ -0,0 +1,11 @@
+0 0 HOPPERS ONLY, MAINLY IN BANDS OR CLUSTERS
+1 1 WINGED ADULTS IN THE VICINITY MORE THAN 10 KILOMETRES FROM POINT OF OBSERVATION
+2 2 LOCUSTS IN FLIGHT, A FEW SEEN AT THE STATION
+3 3 LOCUSTS AT THE STATION, MOST OF THEM ON THE GROUND
+4 4 LOCUSTS, SOME ON GROUND AND OTHERS IN FLIGHT AT A HEIGHT LESS THAN 10 METRES
+5 5 LOCUSTS, SOME ON GROUND AND OTHERS IN FLIGHT AT A HEIGHT GREATER THAN 10 METRES
+6 6 LOCUSTS, MOST IN FLIGHT AT A HEIGHT LESS THAN 10 METRES
+7 7 LOCUSTS, MOST IN FLIGHT AT A HEIGHT GREATER THAN 10 METRES
+8 8 LOCUSTS, ALL OVER INFLICTING SEVERE DAMAGE TO VEGETATION, NO EXTERMINATION OPERATION
+9 9 LOCUSTS, ALL OVER INFLICTING SEVERE DAMAGE TO VEGETATION, EXTERMINATION OPERATION IN PROGRESS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20105.table b/definitions/bufr/tables/0/wmo/24/codetables/20105.table
new file mode 100644
index 0000000..b7406c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20105.table
@@ -0,0 +1,12 @@
+0 0 SMALL SWARM LESS THAN 1 KM2 OR ADULTS IN GROUND, TENS OR HUNDREDS OF INDIVIDUALS VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE LESS THAN 1 HOUR AGO
+1 1 SMALL SWARM LESS THAN 1 KM2 OR ADULTS IN GROUND, TENS OR HUNDREDS OF INDIVIDUALS VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE 1 TO 6 HOURS AGO
+2 2 SMALL SWARM LESS THAN 1 KM2 OR ADULTS IN GROUND, TENS OR HUNDREDS OF INDIVIDUALS VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE OVER 6 HOURS AGO
+3 3 MEDIUM SWARM OR SCATTERED ADULTS, SEVERAL VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE LESS THAN 1 HOUR AGO
+4 4 MEDIUM SWARM OR SCATTERED ADULTS, SEVERAL VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE 1 TO 6 HOURS AGO
+5 5 MEDIUM SWARM OR SCATTERED ADULTS, SEVERAL VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE OVER 6 HOURS AGO
+6 6 LARGE SWARM OR ISOLATED ADULTS, SEEN SINGLY, DURATION OF PASSAGE LESS THAN 1 HOUR AGO
+7 7 LARGE SWARM OR ISOLATED ADULTS, SEEN SINGLY, DURATION OF PASSAGE 1 TO 6 HOURS AGO
+8 8 LARGE SWARM OR ISOLATED ADULTS, SEEN SINGLY, DURATION OF PASSAGE OVER 6 HOURS AGO
+9 9 MORE THAN ONE SWARM OF LOCUSTS
+10 10 SIZE OF SWARM AND/OR DURATION OF PASSAGE NOT DETERMINED OWING TO DARKNESS OR SIMILAR PHENOMENA
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20106.table b/definitions/bufr/tables/0/wmo/24/codetables/20106.table
new file mode 100644
index 0000000..2a8c4a0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20106.table
@@ -0,0 +1,7 @@
+0 0 RESERVED
+1 1 THIN DENSITY SWARM (SWARM VISIBLE ONLY WHEN NEAR ENOUGH FOR INDIVIDUAL LOCUSTS TO BE DISCERNED)
+2 2 MEDIUM DENSITY SWARM
+3 3 DENSE SWARM (OBSCURING NEARBY FEATURES, E.G. TREES)
+4 4 ISOLATED HOPPERS SEEN SINGLY
+5 5 SCATTERED HOPPERS, SEVERAL VISIBLE SIMULTANEOUSLY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20107.table b/definitions/bufr/tables/0/wmo/24/codetables/20107.table
new file mode 100644
index 0000000..0bea30a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20107.table
@@ -0,0 +1,11 @@
+0 0 RESERVED
+1 1 GENERALLY IN THE DIRECTION NE
+2 2 GENERALLY IN THE DIRECTION E
+3 3 GENERALLY IN THE DIRECTION SE
+4 4 GENERALLY IN THE DIRECTION S
+5 5 GENERALLY IN THE DIRECTION SW
+6 6 GENERALLY IN THE DIRECTION W
+7 7 GENERALLY IN THE DIRECTION NW
+8 8 GENERALLY IN THE DIRECTION N
+9 9 SPECIFIC DIRECTION INDETERMINABLE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20108.table b/definitions/bufr/tables/0/wmo/24/codetables/20108.table
new file mode 100644
index 0000000..4404614
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20108.table
@@ -0,0 +1,9 @@
+0 0 BARE GROUND
+1 1 DRY, PRESENCE OF FEW AND ISOLATED SHRUBS
+2 2 SPARSE VEGETATION (SPROUTING)
+3 3 DENSE VEGETATION (SPROUTING)
+4 4 SPARSE VEGETATION (GROWING)
+5 5 DENSE VEGETATION (GROWING)
+6 6 SPARSE VEGETATION IN FLOWER
+7 7 DENSE VEGETATION IN FLOWER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2011.table b/definitions/bufr/tables/0/wmo/24/codetables/2011.table
new file mode 100644
index 0000000..fbf81b0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2011.table
@@ -0,0 +1,100 @@
+0 0 RESERVED
+1 1 NOT VACANT
+2 2 NO RADIOSONDE - PASSIVE TARGET (E.G. REFLECTOR)
+3 3 NO RADIOSONDE - ACTIVE TARGET (E.G. TRANSPONDER)
+4 4 NO RADIOSONDE - PASSIVE TEMPERATURE-HUMIDITY PROFILER
+5 5 NO RADIOSONDE - ACTIVE TEMPERATURE-HUMIDITY PROFILER
+6 6 NO RADIOSONDE - RADIO-ACOUSTIC SOUNDER
+7 7 NOT VACANT
+8 8 NO RADIOSONDE -... (RESERVED)
+9 9 NO RADIOSONDE - SYSTEM UNKNOWN OR NOT SPECIFIED
+10 10 SIPPICAN LMS5 W/CHIP THERMISTOR, DUCT MOUNTED CAPACITANCE RELATIVE HUMIDITY SENSOR AND DERIVED PRESSURE FROM GPS HEIGHT
+11 11 SIPPICAN LMS6 W/CHIP THERMISTOR, EXTERNAL BOOM MOUNTED CAPACITANCE RELATIVE HUMIDITY SENSOR, AND DERIVED PRESSURE FROM GPS HEIGHT
+12 12 JIN YANG RSG-20A WITH DERIVED PRESSURE FROM GPS HEIGHT/GL-5000P (REPUBLIC OF KOREA)
+13 13 VAISALA RS92/MARWIN MW32 (FINLAND)
+14 14 VAISALA RS92/DIGICORA MW41 (FINLAND)
+15 15 PAZA-12M/RADIOTHEODOLITE-UL (UKRAINE)
+16 16 PAZA-22/AVK-1 (UKRAINE)
+17 17 GRAW DFM-09 (GERMANY)
+18 18 NOT VACANT
+19 19 VACANT
+20 20 NOT VACANT
+21 21 JIN YANG 1524LA LORAN-C/GL5000 (REPUBLIC OF KOREA)
+22 22 MEISEI RS-11G GPS RADIOSONDE W/THERMISTOR, CAPACITANCE RELATIVE HUMIDITY SENSOR, AND DERIVED PRESSURE FROM GPS HEIGHT (JAPAN)
+23 23 VAISALA RS41/DIGICORA MW41 (FINLAND)
+24 24 VAISALA RS41/AUTOSONDE (FINLAND)
+25 25 VAISALA RS41/MARWIN MW32 (FINLAND)
+26 26 METEOLABOR SRS-C34/ARGUS 37 (SWITZERLAND)
+27 27 NOT VACANT
+28 28 AVK - AK2-02 (RUSSIAN FEDERATION)
+29 29 MARL-A OR VEKTOR-M - AK2-02 (RUSSIAN FEDERATION)
+30 30 MEISEI RS-06G (JAPAN)
+31 31 TAIYUAN GTS1-1/GFE(L) (CHINA )
+32 32 SHANGHAI GTS1/GFE(L) (CHINA)
+33 33 NANJING GTS1-2/GFE(L) (CHINA)
+34 34 VACANT
+35 35 MEISEI IMS-100 GPS RADIOSONDE W/THERMISTOR SENSOR, CAPACITANCE RELATIVE HUMIDITY SENSOR, AND DERIVED PRESSURE FROM GPS HEIGHT (JAPAN)
+36 36 VACANT
+37 37 NOT VACANT
+38 38 VIZ LOCATE LORAN-C (UNITED STATES)
+39 39 SPRENGER E076 (GERMANY)
+40 40 SPRENGER E084 (GERMANY)
+41 41 VAISALA RS41 WITH PRESSURE DERIVED FROM GPS HEIGHT/DIGICORA MW41 (FINLAND)
+42 42 VAISALA RS41 WITH PRESSURE DERIVED FROM GPS HEIGHT/AUTOSONDE (FINLAND)
+43 43 NANJING DAQIAO XGP-3G (CHINA)*
+44 44 TIANJIN HUAYUNTIANYI GTS(U)1 (CHINA)*
+45 45 BEIJING CHANGFENG CF-06 (CHINA)*
+46 46 SHANGHAI CHANGWANG GTS3 (CHINA)*
+47 47 NOT VACANT
+48 48 PAZA-22M/MARL-A
+49 49 NOT VACANT
+50 50 VACANT
+51 51 NOT VACANT
+52 52 VAISALA RS92-NGP/INTERMET IMS-2000 (UNITED STATES)
+53 53 AVK - I-2012 (RUSSIAN FEDERATION)
+54 54 GRAW DFM-97 (GERMANY)
+55 55 MEISEI RS-01G (JAPAN)
+56 56 M2K2 (FRANCE)
+57 57 MODEM M2K2-DC (FRANCE)
+58 58 AVK-BAR (RUSSIAN FEDERATION)
+59 59 MODEM M2K2-R 1680 MHZ RDF RADIOSONDE WITH PRESSURE SENSOR CHIP (FRANCE)
+60 60 MARL-A OR VEKTOR-M - I-2012 (RUSSIAN FEDERATION)
+61 61 NOT VACANT
+62 62 MARL-A OR VEKTOR-M - MRZ-3MK (RUSSIAN FEDERATION)
+63 63 VAISALA RS80/STAR (FINLAND)
+64 64 ORBITAL SCIENCES CORPORATION, SPACE DATA DIVISION, TRANSPONDER RADIOSONDE, TYPE 909-11-XX, WHERE XX CORRESPONDS TO THE MODEL OF THE INSTRUMENT (UNITED STATES)
+65 65 VIZ TRANSPONDER RADIOSONDE, MODEL NUMBER 1499–520 (UNITED STATES)
+66 66 VAISALA RS80 /AUTOSONDE (FINLAND)
+67 67 VAISALA RS80/DIGICORA III (FINLAND)
+68 68 AVK-RZM-2 (RUSSIAN FEDERATION)
+69 69 MARL-A OR VEKTOR-M-RZM-2 (RUSSIAN FEDERATION)
+70 70 VAISALA RS92/STAR (FINLAND)
+71 71 VAISALA RS90/LORAN/DIGICORA I, II OR MARWIN (FINLAND)
+72 72 VAISALA RS90/PC-CORA (FINLAND)
+73 73 VACANT
+74 74 VAISALA RS90/STAR (FINLAND)
+75 75 AVK-MRZ-ARMA (RUSSIAN FEDERATION)
+76 76 AVK-RF95-ARMA (RUSSIAN FEDERATION)
+77 77 MODEM GPSONDE M10 (FRANCE)
+78 78 VAISALA RS90/DIGICORA III (FINLAND)
+79 79 VAISALA RS92/DIGICORA I,II OR MARWIN (FINLAND)
+80 80 VAISALA RS92/DIGICORA III (FINLAND)
+81 81 VAISALA RS92/AUTOSONDE (FINLAND)
+82 82 LOCKHEED MARTIN LMS-6 W/CHIP THERMISTOR; EXTERNAL BOOM MOUNTED POLYMER CAPACITIVE RELATIVE HUMIDITY SENSOR; CAPACITIVE PRESSURE SENSOR AND GPS WIND
+83 83 VAISALA RS92-D/INTERMET IMS 1500 W/SILICON CAPACITIVE PRESSURE SENSOR, CAPACITIVE WIRE TEMPERATURE SENSOR, TWIN THIN-FILM HEATED POLYMER CAPACITIVE RELATIVE HUMIDITY SENSOR AND RDF WIND
+84 84 VACANT
+85 85 SIPPICAN MARK IIA WITH CHIP THERMISTOR, CARBON ELEMENT AND DERIVED PRESSURE FROM GPS HEIGHT
+86 86 SIPPICAN MARK II WITH CHIP THERMISTOR, PRESSURE AND CARBON ELEMENT
+87 87 SIPPICAN MARK IIA WITH CHIP THERMISTOR, PRESSURE AND CARBON ELEMENT
+88 88 MARL-A OR VEKTOR-M-MRZ (RUSSIAN FEDERATION)
+89 89 MARL-A OR VEKTOR-M-BAR (RUSSIAN FEDERATION)
+90 90 RADIOSONDE NOT SPECIFIED OR UNKNOWN
+91 91 PRESSURE ONLY RADIOSONDE
+92 92 PRESSURE ONLY RADIOSONDE PLUS TRANSPONDER
+93 93 PRESSURE ONLY RADIOSONDE PLUS RADAR REFLECTOR
+94 94 NO PRESSURE RADIOSONDE PLUS TRANSPONDER
+95 95 NO PRESSURE RADIOSONDE PLUS RADAR REFLECTOR
+96 96 DESCENDING RADIOSONDE
+97 97 BAT-16P (SOUTH AFRICA)
+98 98 BAT-16G (SOUTH AFRICA)
+99 99 BAT-4G (SOUTH AFRICA)
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20119.table b/definitions/bufr/tables/0/wmo/24/codetables/20119.table
new file mode 100644
index 0000000..4a4b40f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20119.table
@@ -0,0 +1,4 @@
+0 0 NOT DEFINED
+1 1 POSITIVE
+2 2 NEGATIVE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20124.table b/definitions/bufr/tables/0/wmo/24/codetables/20124.table
new file mode 100644
index 0000000..f78eacb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20124.table
@@ -0,0 +1,4 @@
+0 0 NOT DEFINED
+1 1 LIGHTNING STROKE
+2 2 LIGHTNING FLASH, BY MANUAL OBSERVATION, OR IF EQUIPMENT INSENSITIVE TO STROKE RESOLUTION
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2013.table b/definitions/bufr/tables/0/wmo/24/codetables/2013.table
new file mode 100644
index 0000000..9d042d0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2013.table
@@ -0,0 +1,9 @@
+0 0 NO CORRECTION
+1 1 CIMO SOLAR CORRECTED AND CIMO INFRARED CORRECTED
+2 2 CIMO SOLAR CORRECTED AND INFRARED CORRECTED
+3 3 CIMO SOLAR CORRECTED ONLY
+4 4 SOLAR AND INFRARED CORRECTED AUTOMATICALLY BY RADIOSONDE SYSTEM
+5 5 SOLAR CORRECTED AUTOMATICALLY BY RADIOSONDE SYSTEM
+6 6 SOLAR AND INFRARED CORRECTED AS SPECIFIED BY COUNTRY
+7 7 SOLAR CORRECTED AS SPECIFIED BY COUNTRY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20136.table b/definitions/bufr/tables/0/wmo/24/codetables/20136.table
new file mode 100644
index 0000000..0369f5d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20136.table
@@ -0,0 +1,44 @@
+0 0 ISOLATED CUMULUS HUMILIS AND/OR CUMULUS MEDIOCRIS OF VERTICAL DEVELOPMENT
+1 1 NUMEROUS CUMULUS HUMILIS AND/OR CUMULUS MEDIOCRIS OF VERTICAL DEVELOPMENT
+2 2 ISOLATED CUMULUS CONGESTUS OF VERTICAL DEVELOPMENT
+3 3 NUMEROUS CUMULUS CONGESTUS OF VERTICAL DEVELOPMENT
+4 4 ISOLATED CUMULONIMBUS OF VERTICAL DEVELOPMENT
+5 5 NUMEROUS CUMULONIMBUS OF VERTICAL DEVELOPMENT
+6 6 ISOLATED CUMULUS AND CUMULONIMBUS OF VERTICAL DEVELOPMENT
+7 7 NUMEROUS CUMULUS AND CUMULONIMBUS OF VERTICAL DEVELOPMENT
+10 10 RESERVED
+11 11 ISOLATED OROGRAPHIC CLOUDS, PILEUS, INCUS, FORMING
+12 12 ISOLATED OROGRAPHIC CLOUDS, PILEUS, INCUS, NOT CHANGING
+13 13 ISOLATED OROGRAPHIC CLOUDS, PILEUS, INCUS, DISSOLVING
+14 14 IRREGULAR BANKS OF OROGRAPHIC CLOUD, FöHN BANK, ETC., FORMING
+15 15 IRREGULAR BANKS OF OROGRAPHIC CLOUD, FöHN BANK, ETC., NOT CHANGING
+16 16 IRREGULAR BANKS OF OROGRAPHIC CLOUD, FöHN BANK, ETC., DISSOLVING
+17 17 COMPACT LAYER OF OROGRAPHIC CLOUD, FöHN BANK, ETC., FORMING
+18 18 COMPACT LAYER OF OROGRAPHIC CLOUD, FöHN BANK, ETC., NOT CHANGING
+19 19 COMPACT LAYER OF OROGRAPHIC CLOUD, FöHN BANK, ETC., DISSOLVING
+20 20 ALL MOUNTAINS OPEN, ONLY SMALL AMOUNTS OF CLOUD PRESENT
+21 21 MOUNTAINS PARTLY COVERED WITH DETACHED CLOUDS (NOT MORE THAN HALF THE PEAKS CAN BE SEEN)
+22 22 ALL MOUNTAIN SLOPES COVERED, PEAKS AND PASSES FREE
+23 23 MOUNTAINS OPEN ON OBSERVER’S SIDE (ONLY SMALL AMOUNTS OF CLOUD PRESENT), BUT A CONTINUOUS WALL OF CLOUD ON THE OTHER SIDE
+24 24 CLOUDS LOW ABOVE THE MOUNTAINS, BUT ALL SLOPES AND MOUNTAINS OPEN (ONLY SMALL AMOUNTS OF CLOUD ON THE SLOPES)
+25 25 CLOUDS LOW ABOVE THE MOUNTAINS, PEAKS PARTLY COVERED BY PRECIPITATION TRAILS OR CLOUDS
+26 26 ALL PEAKS COVERED BUT PASSES OPEN, SLOPES EITHER OPEN OR COVERED
+27 27 MOUNTAINS GENERALLY COVERED BUT SOME PEAKS FREE, SLOPES WHOLLY OR PARTIALLY COVERED
+28 28 ALL PEAKS, PASSES AND SLOPES COVERED
+29 29 MOUNTAINS CANNOT BE SEEN OWING TO DARKNESS, FOG, SNOWSTORM, PRECIPITATION, ETC.
+35 35 NON-PERSISTENT CONDENSATION TRAILS
+36 36 PERSISTENT CONDENSATION TRAILS COVERING LESS THAN 1/8 OF THE SKY
+37 37 PERSISTENT CONDENSATION TRAILS COVERING 1/8 OF THE SKY
+38 38 PERSISTENT CONDENSATION TRAILS COVERING 2/8 OF THE SKY
+39 39 PERSISTENT CONDENSATION TRAILS COVERING 3/8 OR MORE OF THE SKY
+40 40 NO CLOUD OR MIST OBSERVED FROM A HIGHER LEVEL
+41 41 MIST, CLEAR ABOVE OBSERVED FROM A HIGHER LEVEL
+42 42 FOG PATCHES OBSERVED FROM A HIGHER LEVEL
+43 43 LAYER OF SLIGHT FOG OBSERVED FROM A HIGHER LEVEL
+44 44 LAYER OF THICK FOG OBSERVED FROM A HIGHER LEVEL
+45 45 SOME ISOLATED CLOUDS OBSERVED FROM A HIGHER LEVEL
+46 46 ISOLATED CLOUDS AND FOG BELOW OBSERVED FROM A HIGHER LEVEL
+47 47 MANY ISOLATED CLOUDS OBSERVED FROM A HIGHER LEVEL
+48 48 SEA OF CLOUDS OBSERVED FROM A HIGHER LEVEL
+49 49 BAD VISIBILITY OBSCURING THE DOWNWARD VIEW OBSERVED FROM A HIGHER LEVEL
+511 511 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/20137.table b/definitions/bufr/tables/0/wmo/24/codetables/20137.table
new file mode 100644
index 0000000..adda880
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/20137.table
@@ -0,0 +1,11 @@
+0 0 NO CHANGE
+1 1 CUMULIFICATION
+2 2 SLOW ELEVATION
+3 3 RAPID ELEVATION
+4 4 ELEVATION AND STRATIFICATION
+5 5 SLOW LOWERING
+6 6 RAPID LOWERING
+7 7 STRATIFICATION
+8 8 STRATIFICATION AND LOWERING
+9 9 RAPID CHANGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2014.table b/definitions/bufr/tables/0/wmo/24/codetables/2014.table
new file mode 100644
index 0000000..bc5c5fc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2014.table
@@ -0,0 +1,51 @@
+0 0 NO WIND FINDING
+1 1 AUTOMATIC WITH AUXILIARY OPTICAL DIRECTION FINDING
+2 2 AUTOMATIC WITH AUXILIARY RADIO DIRECTION FINDING
+3 3 AUTOMATIC WITH AUXILIARY RANGING
+4 4 NOT USED
+5 5 AUTOMATIC WITH MULTIPLE VLF-OMEGA SIGNALS
+6 6 AUTOMATIC CROSS CHAIN LORAN-C
+7 7 AUTOMATIC WITH AUXILIARY WIND PROFILER
+8 8 AUTOMATIC SATELLITE NAVIGATION
+19 19 TRACKING TECHNIQUE NOT SPECIFIED
+20 20 VESSEL STOPPED
+21 21 VESSEL DIVERTED FROM ORIGINAL DESTINATION
+22 22 VESSEL'S ARRIVAL DELAYED
+23 23 CONTAINER DAMAGED
+24 24 POWER FAILURE TO CONTAINER
+29 29 OTHER PROBLEMS
+30 30 MAJOR POWER PROBLEMS
+31 31 UPS INOPERATIVE
+32 32 RECEIVER HARDWARE PROBLEMS
+33 33 RECEIVER SOFTWARE PROBLEMS
+34 34 PROCESSOR HARDWARE PROBLEMS
+35 35 PROCESSOR SOFTWARE PROBLEMS
+36 36 NAVAID SYSTEM DAMAGED
+37 37 SHORTAGE OF LIFTING GAS
+38 38 RESERVED
+39 39 OTHER PROBLEMS
+40 40 MECHANICAL DEFECT
+41 41 MATERIAL DEFECT (HAND LAUNCHER)
+42 42 POWER FAILURE
+43 43 CONTROL FAILURE
+44 44 PNEUMATIC/HYDRAULIC FAILURE
+45 45 OTHER PROBLEMS
+46 46 COMPRESSOR PROBLEMS
+47 47 BALLOON PROBLEMS
+48 48 BALLOON RELEASE PROBLEMS
+49 49 LAUNCHER DAMAGED
+50 50 R/S RECEIVER ANTENNA DEFECT
+51 51 NAVAID ANTENNA DEFECT
+52 52 R/S RECEIVER CABLING (ANTENNA) DEFECT
+53 53 NAVAID ANTENNA CABLING DEFECT
+59 59 OTHER PROBLEMS
+60 60 ASAP COMMUNICATIONS DEFECT
+61 61 COMMUNICATIONS FACILITY REJECTED DATA
+62 62 NO POWER AT TRANSMITTING ANTENNA
+63 63 ANTENNA CABLE BROKEN
+64 64 ANTENNA CABLE DEFECT
+65 65 MESSAGE TRANSMITTED POWER BELOW NORMAL
+69 69 OTHER PROBLEMS
+70 70 ALL SYSTEMS IN NORMAL OPERATION
+99 99 STATUS OF SYSTEM AND ITS COMPONENTS NOT SPECIFIED
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2015.table b/definitions/bufr/tables/0/wmo/24/codetables/2015.table
new file mode 100644
index 0000000..7b0ccaf
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2015.table
@@ -0,0 +1,7 @@
+0 0 RESERVED
+1 1 PRESSURE ONLY RADIOSONDE
+2 2 PRESSURE ONLY RADIOSONDE PLUS TRANSPONDER
+3 3 PRESSURE ONLY RADIOSONDE PLUS RADAR REFLECTOR
+4 4 NO-PRESSURE RADIOSONDE PLUS TRANSPONDER
+5 5 NO-PRESSURE RADIOSONDE PLUS RADAR REFLECTOR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2016.table b/definitions/bufr/tables/0/wmo/24/codetables/2016.table
new file mode 100644
index 0000000..4a30226
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2016.table
@@ -0,0 +1,4 @@
+1 1 TRAIN REGULATOR
+2 2 LIGHT UNIT
+3 3 PARACHUTE
+4 4 ROOFTOP RELEASE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2017.table b/definitions/bufr/tables/0/wmo/24/codetables/2017.table
new file mode 100644
index 0000000..79a09f6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2017.table
@@ -0,0 +1,5 @@
+0 0 NO CORRECTIONS
+1 1 TIME LAG CORRECTION PROVIDED BY THE MANUFACTURER
+2 2 SOLAR RADIATION CORRECTION PROVIDED BY THE MANUFACTURER
+3 3 SOLAR RADIATION AND TIME LAG CORRECTION PROVIDED BY THE MANUFACTURER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2019.table b/definitions/bufr/tables/0/wmo/24/codetables/2019.table
new file mode 100644
index 0000000..ae63c61
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2019.table
@@ -0,0 +1,326 @@
+10 10 AATSR
+11 11 ATSR
+12 12 ATSR-2
+13 13 MWR
+30 30 ARGOS
+40 40 LASER REFLECTORS
+41 41 DORIS
+42 42 DORIS-NG
+47 47 POSEIDON-1 (SSALT1)
+48 48 POSEIDON-2 (SSALT2)
+49 49 POSEIDON-3 (SSALT3)
+50 50 ATSR/M
+51 51 HRG
+52 52 HRV
+53 53 HRVIR
+54 54 SCARAB/MV2
+55 55 POLDER
+56 56 IIR
+60 60 VEGETATION
+61 61 WINDII
+62 62 ALTIKA
+80 80 RADARSAT DTT
+81 81 RADARSAT TTC
+85 85 SAR (CSA)
+90 90 MOPITT
+91 91 OSIRIS
+97 97 PANCHROMATIC IMAGER
+98 98 GPS RECEIVER
+102 102 CHAMP GPS SOUNDER
+103 103 IGOR
+116 116 CHAMP GRAVITY PACKAGE (ACCELEROMETER+GPS)
+117 117 CHAMP MAGNETOMETRY PACKAGE (1 SCALAR+2 VECTOR MAGNETOMETER)
+120 120 ENVISAT COMMS
+121 121 ERS COMMS
+130 130 ALADIN
+131 131 ATLID
+140 140 AMI/SAR/IMAGE
+141 141 AMI/SAR/WAVE
+142 142 AMI/SCATTEROMETER
+143 143 ASAR
+144 144 ASAR
+145 145 ASAR
+146 146 CPR
+147 147 RA-2/MWR
+148 148 RA/MWR
+150 150 SCATTEROMETER
+161 161 MIPAS
+162 162 MWR-2
+163 163 SOPRANO
+170 170 GOME
+172 172 GOMOS
+174 174 MERIS
+175 175 SCIAMACHY
+176 176 MIRAS
+177 177 SIRAL
+178 178 SRAL
+179 179 OLCI
+180 180 SLSTR
+181 181 METEOSAT COMMS
+182 182 MSG COMMS
+190 190 ASCAT
+200 200 GERB
+202 202 GRAS
+203 203 MHS
+205 205 MVIRI
+207 207 SEVIRI
+208 208 VIRI
+220 220 GOME-2
+221 221 IASI
+240 240 DCP
+245 245 CCD
+246 246 HSB
+248 248 OBA
+250 250 WFI
+255 255 IRMSS
+260 260 BSS & FSS TRANSPONDERS
+261 261 DRT-S&R
+262 262 INSAT COMMS
+268 268 HR-PAN
+269 269 MSMR
+270 270 VHRR
+271 271 WIFS
+275 275 AWIFS
+276 276 LISS-I
+277 277 LISS-II
+278 278 LISS-III
+279 279 LISS-IV
+284 284 PAN
+285 285 MOS
+286 286 OCM
+287 287 ROSA
+288 288 SCAT
+290 290 MTSAT COMMS
+291 291 HIMAWARI COMMS
+294 294 JAMI
+295 295 IMAGER/MTSAT-2
+296 296 VISSR
+297 297 AHI
+300 300 GLAS
+301 301 LRA
+302 302 MBLA
+303 303 CALIOP
+309 309 CPR (CLOUDSAT)
+312 312 NSCAT
+313 313 SEAWINDS
+314 314 RAPIDSCAT
+330 330 ACRIM
+334 334 BUV
+336 336 ALI
+347 347 ASTER
+348 348 CERES-2
+351 351 GPSDR
+353 353 HIRDLS
+354 354 HRDI
+356 356 LIS
+358 358 PEM
+359 359 SEAWIFS
+360 360 SUSIM (UARS)
+363 363 SBUV/1
+365 365 TMI
+366 366 JMR
+367 367 AMR
+369 369 LIMS
+370 370 LRIR
+371 371 EPIC
+372 372 NISTAR
+373 373 PLASMA-MAG
+374 374 XPS
+375 375 VIRS
+376 376 POLDER II
+377 377 TIM
+379 379 WFC
+382 382 CLAES
+383 383 HALOE
+384 384 ISAMS
+385 385 MISR
+386 386 MLS
+387 387 MLS (EOS-AURA)
+389 389 MODIS
+393 393 HAIRS
+394 394 OMI
+395 395 ATMOSPHERIC CORRECTOR
+396 396 HYPERION
+399 399 SAGE I
+400 400 SAGE II
+401 401 SAGE III
+402 402 SAMS
+403 403 SAM-II
+404 404 IRIS
+405 405 GIFTS
+420 420 AIRS
+426 426 SOLSTICE
+430 430 TES
+431 431 TOMS
+432 432 OCO
+450 450 ADEOS COMMS
+451 451 DCS (JAXA)
+453 453 GMS COMMS
+454 454 JERS-1 COMMS
+460 460 RIS
+461 461 PR
+462 462 SAR
+470 470 PALSAR
+478 478 AMSR2
+479 479 AMSR-E
+480 480 PRISM (ALOS)
+481 481 AMSR
+482 482 AVNIR
+483 483 AVNIR-2
+484 484 GLI
+485 485 MESSR
+486 486 MSR
+487 487 OCTS
+488 488 OPS
+489 489 VISSR (GMS-5)
+490 490 VTIR
+510 510 ILAS-I
+511 511 ILAS-II
+512 512 IMG
+514 514 SEM
+515 515 SOFIS
+516 516 TANSO-FTS
+517 517 TANSO-CAI
+518 518 DPR
+519 519 GMI
+540 540 DCS (NOAA)
+541 541 GOES COMMS
+542 542 LANDSAT COMMS
+543 543 NOAA COMMS
+544 544 S&R (GOES)
+545 545 S&R (NOAA)
+546 546 WEFAX
+547 547 SEM (GOES)
+550 550 SSM
+551 551 SSJ/4
+552 552 SSIES-2
+553 553 SSB/X-2
+570 570 AMSU-A
+574 574 AMSU-B
+580 580 ATOVS (HIRS/3 + AMSU + AVHRR/3)
+590 590 AVHRR/2
+591 591 AVHRR/3
+592 592 AVHRR/4
+600 600 ERBE
+601 601 ETM+
+605 605 HIRS/2
+606 606 HIRS/3
+607 607 HIRS/4
+615 615 IMAGER
+616 616 VIIRS
+620 620 CRIRS/NP
+621 621 ATMS
+622 622 MSS
+623 623 MSU
+624 624 SBUV/2
+625 625 SBUV/3
+626 626 SOUNDER
+627 627 SSU
+628 628 TM
+629 629 TOVS (HIRS/2 + MSU + SSU)
+630 630 VAS
+631 631 SSZ
+645 645 SEM
+650 650 MVIRSR (10 CHANNEL)
+651 651 MVIRSR (3 CHANNEL)
+652 652 MVIRSR (5 CHANNEL)
+670 670 RLSBO
+680 680 MSU-EU
+681 681 MSU-UM
+682 682 RM-08
+683 683 SU-UMS
+684 684 SU-VR
+685 685 TRASSER
+686 686 SCAT
+687 687 ALT
+688 688 MWI
+700 700 KONDOR-2
+701 701 BRK
+710 710 ALISSA
+712 712 BALKAN-2 LIDAR
+715 715 MK-4
+716 716 MK-4M
+730 730 GREBEN
+731 731 SAR-10
+732 732 SAR-3
+733 733 SAR-70
+740 740 SLR-3
+745 745 TRAVERS SAR
+750 750 174-K
+751 751 BTVK
+752 752 CHAIKA
+753 753 DELTA-2
+755 755 IKAR-D
+756 756 IKAR-N
+757 757 IKAR-P
+760 760 ISP
+761 761 KFA-1000
+762 762 KFA-200
+763 763 KFA-3000
+770 770 KLIMAT
+771 771 KLIMAT-2
+775 775 MIRAS
+776 776 MIVZA
+777 777 MIVZA-M
+780 780 MR-2000
+781 781 MR-2000M
+785 785 MR-900
+786 786 MR-900B
+790 790 MSU-E
+791 791 MSU-E1
+792 792 MSU-E2
+793 793 MSU-M
+794 794 MSU-S
+795 795 MSU-SK
+796 796 MSU-V
+810 810 MTZA
+815 815 MZOAS
+820 820 R-225
+821 821 R-400
+822 822 R-600
+830 830 RMS
+835 835 TV CAMERA
+836 836 SILVA
+840 840 SROSMO
+850 850 BUFS-2
+851 851 BUFS-4
+855 855 ISTOK-1
+856 856 SFM-2
+857 857 DOPI
+858 858 KGI-4
+859 859 OZON-M
+860 860 RMK-2
+900 900 MAXIE
+901 901 OLS
+905 905 SSM/I
+906 906 SSM/T-1
+907 907 SSM/T-2
+908 908 SSMIS
+910 910 SXI
+930 930 EHIC
+931 931 X-RAY ASTRONOMY PAYLOAD
+932 932 IVISSR (FY-2)
+933 933 IRAS
+934 934 MWAS
+935 935 IMWAS
+936 936 MWHS
+937 937 MVIRS
+938 938 MWRI
+940 940 MTVZA-OK
+941 941 SAPHIR
+942 942 MADRAS
+944 944 ALT
+945 945 TSIS
+946 946 CMIS
+947 947 OMPS
+948 948 GPSOS
+949 949 SESS
+950 950 VIRR
+951 951 TOM
+952 952 OP
+953 953 MWHS-2
+954 954 MWTS-2
+955 955 HIRAS
+956 956 SBUS
+957 957 TOU
+2047 2047 
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2020.table b/definitions/bufr/tables/0/wmo/24/codetables/2020.table
new file mode 100644
index 0000000..5d70a38
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2020.table
@@ -0,0 +1,30 @@
+0 0 NIMBUS
+1 1 VTPR
+2 2 TIROS 1 (TIROS, NOAA-6 TO NOAA-13)
+3 3 TIROS 2 (NOAA-14 ONWARDS)
+10 10 EOS
+20 20 GPM-CORE
+31 31 DMSP
+61 61 EUMETSAT POLAR SYSTEM (EPS)
+91 91 ERS
+92 92 SENTINEL-3
+121 121 ADEOS
+122 122 GCOM
+241 241 GOES
+261 261 JASON
+271 271 GMS
+272 272 MTSAT
+273 273 HIMAWARI
+281 281 COMS
+301 301 INSAT
+331 331 METEOSAT OPERATIONAL PROGRAMME (MOP)
+332 332 METEOSAT TRANSITIONAL PROGRAMME (MTP)
+333 333 METEOSAT SECOND GENERATION PROGRAMME (MSG)
+351 351 GOMS
+380 380 FY-1
+381 381 FY-2
+382 382 FY-3
+401 401 GPS
+402 402 GLONASS
+403 403 GALILEO
+511 511 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2021.table b/definitions/bufr/tables/0/wmo/24/codetables/2021.table
new file mode 100644
index 0000000..b95fdc9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2021.table
@@ -0,0 +1,8 @@
+1 1 HIGH-RESOLUTION INFRARED SOUNDER (HIRS)
+2 2 MICROWAVE SOUNDING UNIT (MSU)
+3 3 STRATOSPHERIC SOUNDING UNIT (SSU)
+4 4 AMI (ADVANCED MICROWAVE INSTRUMENT) WIND MODE
+5 5 AMI (ADVANCED MICROWAVE INSTRUMENT) WAVE MODE
+6 6 AMI (ADVANCED MICROWAVE INSTRUMENT) IMAGE MODE
+7 7 RADAR ALTIMETER
+8 8 ATSR (ALONG-TRACK SCANNING RADIOMETER)
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2022.table b/definitions/bufr/tables/0/wmo/24/codetables/2022.table
new file mode 100644
index 0000000..5068e7f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2022.table
@@ -0,0 +1,5 @@
+1 1 PROCESSING TECHNIQUE NOT DEFINED
+2 2 AUTOMATED STATISTICAL REGRESSION
+3 3 CLEAR PATH
+4 4 PARTLY CLOUDY PATH
+5 5 CLOUDY PATH
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2023.table b/definitions/bufr/tables/0/wmo/24/codetables/2023.table
new file mode 100644
index 0000000..be7eb84
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2023.table
@@ -0,0 +1,11 @@
+0 0 RESERVED
+1 1 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE INFRARED CHANNEL
+2 2 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE VISIBLE CHANNEL
+3 3 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE WATER VAPOUR CHANNEL
+4 4 WIND DERIVED FROM MOTION OBSERVED IN A COMBINATION OF SPECTRAL CHANNELS
+5 5 WIND DERIVED FROM MOTION OBSERVED IN THE WATER VAPOUR CHANNEL IN CLEAR AIR
+6 6 WIND DERIVED FROM MOTION OBSERVED IN THE OZONE CHANNEL
+7 7 WIND DERIVED FROM MOTION OBSERVED IN WATER VAPOUR CHANNEL (CLOUD OR CLEAR AIR NOT SPECIFIED)
+13 13 ROOT-MEAN-SQUARE
+14 14 RESERVED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2024.table b/definitions/bufr/tables/0/wmo/24/codetables/2024.table
new file mode 100644
index 0000000..00ec80e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2024.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 TABLE WITH FULL RANGE OF HUMIDITY VARIATION IN LAYER
+2 2 REGRESSION TECHNIQUE ON 2 HUMIDITY VALUES IN LAYER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2025.table b/definitions/bufr/tables/0/wmo/24/codetables/2025.table
new file mode 100644
index 0000000..64dc018
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2025.table
@@ -0,0 +1,16 @@
+1 1 RESERVED
+2 2 HIRS
+3 3 MSU
+6 6 HIRS
+7 7 MSU
+10 10 HIRS (1, 2, 3, 8, 9, 16, 17)
+11 11 HIRS (1, 2, 3, 9, 17)
+12 12 MSU
+15 15 HIRS
+16 16 HIRS
+17 17 MSU
+18 18 SKINTK (OCEAN ONLY)
+21 21 HIRS
+22 22 SSU
+23 23 MSU (3, 4)
+24 24 RESERVED
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2030.table b/definitions/bufr/tables/0/wmo/24/codetables/2030.table
new file mode 100644
index 0000000..2777bbc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2030.table
@@ -0,0 +1,8 @@
+0 0 RESERVED
+1 1 ADCP (ACOUSTIC DOPPLER CURRENT PROFILER)
+2 2 GEK (GEOMAGNETIC ELECTROKINETOGRAPH)
+3 3 SHIP'S SET AND DRIFT DETERMINED BY FIXES 3-6 HOURS APART
+4 4 SHIP'S SET AND DRIFT DETERMINED BY FIXES MORE THAN 6 HOURS BUT LESS THAN 12 HOURS APART
+5 5 DRIFT OF BUOY
+6 6 ADCP (ACOUSTIC DOPPLER CURRENT PROFILER)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2031.table b/definitions/bufr/tables/0/wmo/24/codetables/2031.table
new file mode 100644
index 0000000..a96b857
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2031.table
@@ -0,0 +1,21 @@
+0 0 RESERVED
+1 1 INSTANTANEOUS
+2 2 AVERAGED OVER 3 MINUTES OR LESS
+3 3 AVERAGED OVER MORE THAN 3 MINUTES, BUT 6 AT THE MOST
+4 4 AVERAGED OVER MORE THAN 6 MINUTES, BUT 12 AT THE MOST
+5 5 INSTANTANEOUS
+6 6 AVERAGED OVER 3 MINUTES OR LESS
+7 7 AVERAGED OVER MORE THAN 3 MINUTES, BUT 6 AT THE MOST
+8 8 AVERAGED OVER MORE THAN 6 MINUTES, BUT 12 AT THE MOST
+9 9 VECTOR OR DOPPLER CURRENT PROFILING METHOD NOT USED
+10 10 RESERVED
+11 11 1 HOUR OR LESS
+12 12 MORE THAN 1 HOUR BUT 2 AT THE MOST
+13 13 MORE THAN 2 HOURS BUT 4 AT THE MOST
+14 14 MORE THAN 4 HOURS BUT 8 AT THE MOST
+15 15 MORE THAN 8 HOURS BUT 12 AT THE MOST
+16 16 MORE THAN 12 HOURS BUT 18 AT THE MOST
+17 17 MORE THAN 18 HOURS BUT 24 AT THE MOST
+18 18 RESERVED
+19 19 DRIFT METHOD NOT USED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2032.table b/definitions/bufr/tables/0/wmo/24/codetables/2032.table
new file mode 100644
index 0000000..7e9310d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2032.table
@@ -0,0 +1,4 @@
+0 0 VALUES AT SELECTED DEPTHS (DATA POINTS FIXED BY THE INSTRUMENT OR SELECTED BY ANY OTHER METHOD)
+1 1 VALUES AT SELECTED DEPTHS (DATA POINTS TAKEN FROM TRACES AT SIGNIFICANT DEPTHS)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2033.table b/definitions/bufr/tables/0/wmo/24/codetables/2033.table
new file mode 100644
index 0000000..8215be0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2033.table
@@ -0,0 +1,5 @@
+0 0 NO SALINITY MEASURED
+1 1 IN SITU SENSOR, ACCURACY BETTER THAN 0.02 ‰
+2 2 IN SITU SENSOR, ACCURACY LESS THAN 0.02 ‰
+3 3 SAMPLE ANALYSIS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2034.table b/definitions/bufr/tables/0/wmo/24/codetables/2034.table
new file mode 100644
index 0000000..06cdd52
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2034.table
@@ -0,0 +1,7 @@
+0 0 UNSPECIFIED DROGUE
+1 1 HOLEY SOCK
+2 2 TRISTAR
+3 3 WINDOW SHADE
+4 4 PARACHUTE
+5 5 NON-LAGRANGIAN SEA ANCHOR
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2036.table b/definitions/bufr/tables/0/wmo/24/codetables/2036.table
new file mode 100644
index 0000000..7782d30
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2036.table
@@ -0,0 +1,4 @@
+0 0 DRIFTING BUOY
+1 1 FIXED BUOY
+2 2 SUBSURFACE FLOAT (MOVING)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2037.table b/definitions/bufr/tables/0/wmo/24/codetables/2037.table
new file mode 100644
index 0000000..729c40e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2037.table
@@ -0,0 +1,8 @@
+0 0 RESERVED
+1 1 MANUAL READING FROM VERTICAL TIDE STAFF
+2 2 MANUAL READING FROM SINGLE AUTOMATIC RECORDER AT STATION
+3 3 MANUAL READING FROM MULTIPLE AUTOMATIC RECORDERS AT STATION
+4 4 AUTOMATIC READING FROM SINGLE AUTOMATIC RECORDER AT STATION WITHOUT LEVEL REFERENCE CHECK
+5 5 AUTOMATIC READING FROM SINGLE AUTOMATIC RECORDER AT STATION WITH LEVEL REFERENCE CHECK, OR FROM MULTIPLE AUTOMATIC RECORDERS
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2038.table b/definitions/bufr/tables/0/wmo/24/codetables/2038.table
new file mode 100644
index 0000000..458f141
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2038.table
@@ -0,0 +1,16 @@
+0 0 SHIP INTAKE
+1 1 BUCKET
+2 2 HULL CONTACT SENSOR
+3 3 REVERSING THERMOMETER
+4 4 STD/CTD SENSOR
+5 5 MECHANICAL BT
+6 6 EXPENDABLE BT
+7 7 DIGITAL BT
+8 8 THERMISTOR CHAIN
+9 9 INFRARED SCANNER
+10 10 MICROWAVE SCANNER
+11 11 INFRARED RADIOMETER
+12 12 IN-LINE THERMOSALINOGRAPH
+13 13 TOWED BODY
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2039.table b/definitions/bufr/tables/0/wmo/24/codetables/2039.table
new file mode 100644
index 0000000..0a94982
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2039.table
@@ -0,0 +1,5 @@
+0 0 MEASURED WET-BULB TEMPERATURE
+1 1 ICED BULB MEASURED WET-BULB TEMPERATURE
+2 2 COMPUTED WET-BULB TEMPERATURE
+3 3 ICED BULB COMPUTED WET-BULB TEMPERATURE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2040.table b/definitions/bufr/tables/0/wmo/24/codetables/2040.table
new file mode 100644
index 0000000..78b2917
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2040.table
@@ -0,0 +1,8 @@
+0 0 SHIP'S MOTION REMOVED BY AVERAGING
+1 1 SHIP'S MOTION REMOVED BY MOTION COMPENSATION
+2 2 SHIP'S MOTION NOT REMOVED
+3 3 SHIP'S MOTION REMOVED BY AVERAGING
+4 4 SHIP'S MOTION REMOVED BY MOTION COMPENSATION
+5 5 SHIP'S MOTION NOT REMOVED
+6 6 DOPPLER CURRENT PROFILING METHOD NOT USED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2041.table b/definitions/bufr/tables/0/wmo/24/codetables/2041.table
new file mode 100644
index 0000000..ef5bf86
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2041.table
@@ -0,0 +1,6 @@
+0 0 INFORMATION BASED ON MANUAL ANALYSIS
+1 1 INFORMATION BASED ON COMPUTER ANALYSIS
+2 2 INFORMATION BASED ON DATA ASSIMILATION
+3 3 INFORMATION BASED ON COMPUTER ANALYSIS OR DATA ASSIMILATION MANUALLY MODIFIED
+10 10 INFORMATION BASED ON THE NUMERICAL WEATHER PREDICTION
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2042.table b/definitions/bufr/tables/0/wmo/24/codetables/2042.table
new file mode 100644
index 0000000..eb2445b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2042.table
@@ -0,0 +1,4 @@
+0 0 VALUE ORIGINALLY REPORTED IN M/S
+1 1 VALUE ORIGINALLY REPORTED IN KNOTS
+2 2 NO SEA CURRENT DATA AVAILABLE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2044.table b/definitions/bufr/tables/0/wmo/24/codetables/2044.table
new file mode 100644
index 0000000..0e10ed8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2044.table
@@ -0,0 +1,6 @@
+0 0 RESERVED FOR FUTURE USE
+1 1 LONGUET-HIGGINS (1964)
+2 2 LONGUET-HIGGINS (F3 METHOD)
+3 3 MAXIMUM LIKELIHOOD METHOD
+4 4 MAXIMUM ENTROPY METHOD
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2045.table b/definitions/bufr/tables/0/wmo/24/codetables/2045.table
new file mode 100644
index 0000000..374e4f2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2045.table
@@ -0,0 +1,5 @@
+0 0 SEA STATION
+1 1 AUTOMATIC DATA BUOY
+2 2 AIRCRAFT
+3 3 SATELLITE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2046.table b/definitions/bufr/tables/0/wmo/24/codetables/2046.table
new file mode 100644
index 0000000..57fb9d6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2046.table
@@ -0,0 +1,4 @@
+0 0 RESERVED FOR FUTURE USE
+1 1 HEAVE SENSOR
+2 2 SLOPE SENSOR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2047.table b/definitions/bufr/tables/0/wmo/24/codetables/2047.table
new file mode 100644
index 0000000..8213931
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2047.table
@@ -0,0 +1,9 @@
+0 0 RESERVED
+1 1 DART II (PMEL)
+2 2 DART ETD
+3 3 SAIC TSUNAMI BUOY (STB)
+4 4 GFZ - POTSDAM
+5 5 INCOIS (INDIA)
+6 6 INABUOY (INDONESIA)
+7 7 ENVIRTECH
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2048.table b/definitions/bufr/tables/0/wmo/24/codetables/2048.table
new file mode 100644
index 0000000..d7cb2ef
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2048.table
@@ -0,0 +1,14 @@
+0 0 HIRS
+1 1 MSU
+2 2 SSU
+3 3 AMSU-A
+4 4 AMSU-B
+5 5 AVHRR
+6 6 SSMI
+7 7 NSCAT
+8 8 SEAWINDS
+9 9 POSEIDON ALTIMETER
+10 10 JMR (JASON MICROWAVE RADIOMETER)
+11 11 MHS
+12 12 ASCAT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2049.table b/definitions/bufr/tables/0/wmo/24/codetables/2049.table
new file mode 100644
index 0000000..ade5cac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2049.table
@@ -0,0 +1,4 @@
+1 1 PROCESSING TECHNIQUE NOT DEFINED
+2 2 SIMULTANEOUS PHYSICAL RETRIEVAL
+3 3 CLEAR SOUNDING
+4 4 CLOUDY SOUNDING
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2050.table b/definitions/bufr/tables/0/wmo/24/codetables/2050.table
new file mode 100644
index 0000000..fbcce61
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2050.table
@@ -0,0 +1,19 @@
+1 1 1
+2 2 2
+3 3 3
+4 4 4
+5 5 5
+6 6 6
+7 7 7
+8 8 8
+9 9 9
+10 10 10
+11 11 11
+12 12 12
+13 13 13
+14 14 14
+15 15 15
+16 16 16
+17 17 17
+18 18 18
+19 19 19
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2051.table b/definitions/bufr/tables/0/wmo/24/codetables/2051.table
new file mode 100644
index 0000000..3524ae7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2051.table
@@ -0,0 +1,5 @@
+0 0 RESERVED
+1 1 MAXIMUM/MINIMUM THERMOMETERS
+2 2 AUTOMATED INSTRUMENTS
+3 3 THERMOGRAPH
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2052.table b/definitions/bufr/tables/0/wmo/24/codetables/2052.table
new file mode 100644
index 0000000..8b6262c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2052.table
@@ -0,0 +1,5 @@
+1 1 1
+2 2 2
+3 3 3
+4 4 4
+5 5 5
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2053.table b/definitions/bufr/tables/0/wmo/24/codetables/2053.table
new file mode 100644
index 0000000..03e5e29
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2053.table
@@ -0,0 +1,5 @@
+0 0 OBSERVED BRIGHTNESS TEMPERATURE
+1 1 BRIGHTNESS TEMPERATURE WITH BIAS CORRECTION APPLIED
+2 2 BRIGHTNESS TEMPERATURE CALCULATED FROM FIRST GUESS
+3 3 BRIGHTNESS TEMPERATURE CALCULATED FROM SOUNDING
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2054.table b/definitions/bufr/tables/0/wmo/24/codetables/2054.table
new file mode 100644
index 0000000..0995688
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2054.table
@@ -0,0 +1,6 @@
+0 0 PARAMETER DERIVED USING OBSERVED SOUNDER BRIGHTNESS TEMPERATURES
+1 1 PARAMETER DERIVED USING OBSERVED IMAGER BRIGHTNESS TEMPERATURES
+2 2 PARAMETER DERIVED USING FIRST GUESS INFORMATION
+3 3 PARAMETER DERIVED USING NMC ANALYSIS INFORMATION
+4 4 PARAMETER DERIVED USING RADIOSONDE INFORMATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2055.table b/definitions/bufr/tables/0/wmo/24/codetables/2055.table
new file mode 100644
index 0000000..ce06f00
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2055.table
@@ -0,0 +1,10 @@
+0 0 STATISTICS GENERATED COMPARING RETRIEVAL VERSUS RADIOSONDE
+1 1 STATISTICS GENERATED COMPARING RETRIEVAL VERSUS FIRST GUESS
+2 2 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS FIRST GUESS
+3 3 STATISTICS GENERATED COMPARING OBSERVED VERSUS RETRIEVAL
+4 4 STATISTICS GENERATED COMPARING OBSERVED VERSUS FIRST GUESS
+5 5 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS IMAGER
+6 6 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS SOUNDER
+7 7 STATISTICS GENERATED FOR RADIOSONDE
+8 8 STATISTICS GENERATED FOR FIRST GUESS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2056.table b/definitions/bufr/tables/0/wmo/24/codetables/2056.table
new file mode 100644
index 0000000..86eb983
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2056.table
@@ -0,0 +1,6 @@
+0 0 SUMS OF DIFFERENCES
+1 1 SUMS OF SQUARED DIFFERENCES
+2 2 SAMPLE SIZE
+3 3 MINIMUM DIFFERENCE
+4 4 MAXIMUM DIFFERENCE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2057.table b/definitions/bufr/tables/0/wmo/24/codetables/2057.table
new file mode 100644
index 0000000..681e6bd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2057.table
@@ -0,0 +1,7 @@
+0 0 NESTED GRID MODEL (NGM)
+1 1 AVIATION MODEL (AVN)
+2 2 MEDIUM RANGE FORECAST (MRF) MODEL
+3 3 GLOBAL DATA ASSIMILATION SYSTEM (GDAS) FORECAST MODEL
+4 4 PRIOR SOUNDINGS (WITHIN 3 HOURS OF CURRENT TIME)
+5 5 CLIMATOLOGY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2058.table b/definitions/bufr/tables/0/wmo/24/codetables/2058.table
new file mode 100644
index 0000000..6c45eda
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2058.table
@@ -0,0 +1,5 @@
+0 0 12 HOUR AND 18 HOUR
+1 1 18 HOUR AND 24 HOUR
+2 2 6 HOUR AND 12 HOUR
+3 3 GREATER THAN 24 HOURS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2059.table b/definitions/bufr/tables/0/wmo/24/codetables/2059.table
new file mode 100644
index 0000000..8f089d3
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2059.table
@@ -0,0 +1,5 @@
+0 0 NCEP NESTED GRID MODEL (NGM) ANALYSIS
+1 1 NCEP AVIATION MODEL (AVN) ANALYSIS
+2 2 NCEP MEDIUM RANGE FORECAST (MRF) MODEL ANALYSIS
+3 3 NCEP GLOBAL DATA ASSIMILATION SYSTEM (GDAS) FORECAST MODEL ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2060.table b/definitions/bufr/tables/0/wmo/24/codetables/2060.table
new file mode 100644
index 0000000..6f84698
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2060.table
@@ -0,0 +1,7 @@
+0 0 CURRENT SURFACE HOURLY REPORTS
+1 1 CURRENT SHIP REPORTS
+2 2 CURRENT BUOY REPORTS
+3 3 ONE HOUR OLD SURFACE HOURLY REPORTS
+4 4 ONE HOUR OLD SHIP REPORTS
+5 5 ONE HOUR OLD BUOY REPORTS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2061.table b/definitions/bufr/tables/0/wmo/24/codetables/2061.table
new file mode 100644
index 0000000..592d51e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2061.table
@@ -0,0 +1,3 @@
+0 0 INERTIAL NAVIGATION SYSTEM
+1 1 OMEGA
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2062.table b/definitions/bufr/tables/0/wmo/24/codetables/2062.table
new file mode 100644
index 0000000..2d0f4e2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2062.table
@@ -0,0 +1,7 @@
+0 0 ASDAR
+1 1 ASDAR (ACARS ALSO AVAILABLE BUT NOT OPERATIVE)
+2 2 ASDAR (ACARS ALSO AVAILABLE AND OPERATIVE)
+3 3 ACARS
+4 4 ACARS (ASDAR ALSO AVAILABLE BUT NOT OPERATIVE)
+5 5 ACARS (ASDAR ALSO AVAILABLE AND OPERATIVE)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2064.table b/definitions/bufr/tables/0/wmo/24/codetables/2064.table
new file mode 100644
index 0000000..7414302
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2064.table
@@ -0,0 +1,4 @@
+0 0 GOOD
+1 1 BAD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2066.table b/definitions/bufr/tables/0/wmo/24/codetables/2066.table
new file mode 100644
index 0000000..c4b5eef
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2066.table
@@ -0,0 +1,4 @@
+0 0 INTERMET IMS 2000
+1 1 INTERMET IMS 1500C
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2070.table b/definitions/bufr/tables/0/wmo/24/codetables/2070.table
new file mode 100644
index 0000000..5a098ea
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2070.table
@@ -0,0 +1,13 @@
+0 0 ACTUAL LOCATION IN SECONDS
+1 1 ACTUAL LOCATION IN MINUTES
+2 2 ACTUAL LOCATION IN DEGREES
+3 3 ACTUAL LOCATION IN DECIDEGREES
+4 4 ACTUAL LOCATION IN CENTIDEGREES
+5 5 REFERENCED TO CHECKPOINT IN SECONDS
+6 6 REFERENCED TO CHECKPOINT IN MINUTES
+7 7 REFERENCED TO CHECKPOINT IN DEGREES
+8 8 REFERENCED TO CHECKPOINT IN DECIDEGREES
+9 9 REFERENCED TO CHECKPOINT IN CENTIDEGREES
+10 10 ACTUAL LOCATION IN TENTHS OF A MINUTE
+11 11 REFERENCED TO CHECKPOINT IN TENTHS OF A MINUTE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2080.table b/definitions/bufr/tables/0/wmo/24/codetables/2080.table
new file mode 100644
index 0000000..c68a39d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2080.table
@@ -0,0 +1,7 @@
+0 0 KAYSAM
+1 1 TOTEX
+2 2 KKS
+3 3 GUANGZHOU SHUANGYI (CHINA)
+4 4 CHEMCHINA ZHUZHOU (CHINA)
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2081.table b/definitions/bufr/tables/0/wmo/24/codetables/2081.table
new file mode 100644
index 0000000..4c0f1dc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2081.table
@@ -0,0 +1,9 @@
+0 0 GP26
+1 1 GP28
+2 2 GP30
+3 3 HM26
+4 4 HM28
+5 5 HM30
+6 6 SV16
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2083.table b/definitions/bufr/tables/0/wmo/24/codetables/2083.table
new file mode 100644
index 0000000..bac421f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2083.table
@@ -0,0 +1,6 @@
+0 0 HIGH BAY
+1 1 LOW BAY
+2 2 BALLOON-INFLATED LAUNCH SYSTEM (BILS)
+3 3 ROOF-TOP BILS
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2084.table b/definitions/bufr/tables/0/wmo/24/codetables/2084.table
new file mode 100644
index 0000000..be6430a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2084.table
@@ -0,0 +1,5 @@
+0 0 HYDROGEN
+1 1 HELIUM
+2 2 NATURAL GAS
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2095.table b/definitions/bufr/tables/0/wmo/24/codetables/2095.table
new file mode 100644
index 0000000..580fe93
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2095.table
@@ -0,0 +1,7 @@
+0 0 CAPACITANCE ANEROID
+1 1 DERIVED FROM GPS
+2 2 RESISTIVE STRAIN GAUGE
+3 3 SILICON CAPACITOR
+4 4 DERIVED FROM RADAR HEIGHT
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2096.table b/definitions/bufr/tables/0/wmo/24/codetables/2096.table
new file mode 100644
index 0000000..e0e1815
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2096.table
@@ -0,0 +1,8 @@
+0 0 ROD THERMISTOR
+1 1 BEAD THERMISTOR
+2 2 CAPACITANCE BEAD
+3 3 CAPACITANCE WIRE
+4 4 RESISTIVE SENSOR
+5 5 CHIP THERMISTOR
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2097.table b/definitions/bufr/tables/0/wmo/24/codetables/2097.table
new file mode 100644
index 0000000..10a0c1a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2097.table
@@ -0,0 +1,11 @@
+0 0 VIZ MARK II CARBON HYGRISTOR
+1 1 VIZ B2 HYGRISTOR
+2 2 VAISALA A-HUMICAP
+3 3 VAISALA H-HUMICAP
+4 4 CAPACITANCE SENSOR
+5 5 VAISALA RS90
+6 6 SIPPICAN MARK IIA CARBON HYGRISTOR
+7 7 TWIN ALTERNATIVELY HEATED HUMICAP CAPACITANCE SENSOR
+8 8 HUMICAP CAPACITANCE SENSOR WITH ACTIVE DE-ICING METHOD
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2099.table b/definitions/bufr/tables/0/wmo/24/codetables/2099.table
new file mode 100644
index 0000000..74cb817
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2099.table
@@ -0,0 +1,5 @@
+0 0 HH POLARIZATION
+1 1 VV POLARIZATION
+2 2 HV POLARIZATION REAL VALUED COMPONENT
+3 3 HV POLARIZATION IMAGINARY VALUED COMPONENT
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2101.table b/definitions/bufr/tables/0/wmo/24/codetables/2101.table
new file mode 100644
index 0000000..efdb3ec
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2101.table
@@ -0,0 +1,10 @@
+0 0 CENTRE FRONT-FED PARABOLOID
+1 1 OFFSET FRONT-FED PARABOLOID
+2 2 CENTRE CASSEGRAIN PARABOLOID
+3 3 OFFSET CASSEGRAIN PARABOLOID
+4 4 PLANAR ARRAY
+5 5 COAXIAL-COLLINEAR ARRAY
+6 6 YAGI ELEMENTS ARRAY
+7 7 MICROSTRIP
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2103.table b/definitions/bufr/tables/0/wmo/24/codetables/2103.table
new file mode 100644
index 0000000..417d2c9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2103.table
@@ -0,0 +1 @@
+1 1 RADAR ANTENNA IS PROTECTED BY A RADOME
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2104.table b/definitions/bufr/tables/0/wmo/24/codetables/2104.table
new file mode 100644
index 0000000..e39a153
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2104.table
@@ -0,0 +1,9 @@
+0 0 HORIZONTAL POLARIZATION
+1 1 VERTICAL POLARIZATION
+2 2 RIGHT CIRCULAR POLARIZATION
+3 3 LEFT CIRCULAR POLARIZATION
+4 4 HORIZONTAL AND VERTICAL POLARIZATION
+5 5 RIGHT AND LEFT CIRCULAR POLARIZATION
+6 6 QUASI-HORIZONTAL POLARIZATION
+7 7 QUASI-VERTICAL POLARIZATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/21066.table b/definitions/bufr/tables/0/wmo/24/codetables/21066.table
new file mode 100644
index 0000000..9bcafea
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/21066.table
@@ -0,0 +1,11 @@
+1 1 PROCESSING EQUIPMENT NOT WORKING
+2 2 EQUIPMENT FAILED
+3 3 PRF CODE CHANGED DURING IMAGE GENERATION
+4 4 SAMPLING WINDOW CHANGED DURING IMAGE GENERATION
+5 5 GAIN CHANGED DURING IMAGE GENERATION
+6 6 CHIRP REPLICA EXCEEDS SPECIFIED VALUE
+7 7 INPUT DATA MEAN AND STANDARD DEVIATION OF IN-PHASE AND QUADRATURE OUT OF RANGE
+8 8 DOPPLER CENTROID CONFIDENCE > MMCC VALUE
+9 9 DOPPLER CENTROID ABSOLUTE VALUE > PRF/2
+10 10 DOPPLER AMBIGUITY CONFIDENCE < MMCC VALUE
+11 11 OUTPUT DATA MEAN AND STANDARD DEVIATION =< MMCC VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/21067.table b/definitions/bufr/tables/0/wmo/24/codetables/21067.table
new file mode 100644
index 0000000..a0ed399
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/21067.table
@@ -0,0 +1,12 @@
+1 1 NO FOREBEAM CALCULATION
+2 2 NO MIDBEAM CALCULATION
+3 3 NO AFTBEAM CALCULATION
+4 4 FOREBEAM ARCING DETECTED
+5 5 MIDBEAM ARCING DETECTED
+6 6 AFTBEAM ARCING DETECTED
+7 7 ANY BEAM NOISE CONTENT ABOVE OR EQUAL TO THRESHOLD
+8 8 LAND (ANY LAND IN CELL FOOTPRINT)
+9 9 AUTONOMOUS AMBIGUITY REMOVAL NOT USED
+10 10 METEOROLOGICAL BACKGROUND NOT USED
+11 11 MINIMUM RESIDUAL EXCEEDED THRESHOLD
+12 12 FRAME CHECKSUM ERROR DETECTED
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/21068.table b/definitions/bufr/tables/0/wmo/24/codetables/21068.table
new file mode 100644
index 0000000..102171f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/21068.table
@@ -0,0 +1,7 @@
+1 1 STANDARD DEVIATION OF WIND SPEED OUTSIDE MMCC LIMIT
+2 2 STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT OUTSIDE MMCC LIMIT
+3 3 STANDARD DEVIATION OF ALTITUDE OUTSIDE MMCC LIMIT
+4 4 MEAN PEAKINESS OUTSIDE MMCC LIMIT
+5 5 FRAME CHECKSUM ERROR DETECTED
+6 6 HEIGHT-TIME LOOP TIME CONSTANT CORRECTION NOT PERFORMED
+7 7 NOT ENOUGH MEASUREMENTS (N < 10)
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/21069.table b/definitions/bufr/tables/0/wmo/24/codetables/21069.table
new file mode 100644
index 0000000..320890a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/21069.table
@@ -0,0 +1,9 @@
+1 1 12.0 µM CHANNEL PRESENT IN SOURCE DATA
+2 2 11.0 µM CHANNEL PRESENT IN SOURCE DATA
+3 3 3.7 µM CHANNEL PRESENT IN SOURCE DATA
+4 4 1.6 µM CHANNEL PRESENT IN SOURCE DATA
+5 5 CLOUD IDENTIFICATION USED 1.6 µM HISTOGRAM REFLECTANCE CLOUD TEST
+6 6 1.6 µM HISTOGRAM REFLECTANCE CLOUD TEST USED DYNAMIC THRESHOLD
+7 7 SUN GLINT DETECTED BY 1.6 µM REFLECTANCE CLOUD TEST
+8 8 3.7 µM CHANNEL USED IN SEA-SURFACE TEMPERATURE RETRIEVAL
+9 9 SEA-SURFACE TEMPERATURE DERIVATION USED DAYTIME DATA (NIGHT-TIME IF ZERO)
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/21070.table b/definitions/bufr/tables/0/wmo/24/codetables/21070.table
new file mode 100644
index 0000000..669655f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/21070.table
@@ -0,0 +1,22 @@
+1 1 CELL 1: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+2 2 CELL 2: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+3 3 CELL 3: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+4 4 CELL 4: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+5 5 CELL 5: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+6 6 CELL 6: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+7 7 CELL 7: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+8 8 CELL 8: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+9 9 CELL 9: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+10 10 CELL 1: DUAL VIEW SST USED 3.7 MICRON CHANNEL
+11 11 CELL 2: DUAL VIEW SST USED 3.7 MICRON CHANNEL
+12 12 CELL 3: DUAL VIEW SST USED 3.7 MICRON CHANNEL
+13 13 CELL 4: DUAL VIEW SST USED 3.7 MICRON CHANNEL
+14 14 CELL 5: DUAL VIEW SST USED 3.7 MICRON CHANNEL
+15 15 CELL 6: DUAL VIEW SST USED 3.7 MICRON CHANNEL
+16 16 CELL 7: DUAL VIEW SST USED 3.7 MICRON CHANNEL
+17 17 CELL 8: DUAL VIEW SST USED 3.7 MICRON CHANNEL
+18 18 CELL 9: DUAL VIEW SST USED 3.7 MICRON CHANNEL
+19 19 NADIR VIEW CONTAINS DAY-TIME DATA (NIGHT IF ZERO)
+20 20 FORWARD VIEW CONTAINS DAY-TIME DATA (NIGHT IF ZERO)
+21 21 RECORD CONTAINS CONTRIBUTIONS FROM INSTRUMENT SCANS ACQUIRED WHEN ERS PLATFORM NOT IN YAW-STEERING MODE
+22 22 RECORD CONTAINS CONTRIBUTIONS FROM INSTRUMENT SCANS FOR WHICH PRODUCT CONFIDENCE DATA SHOW QUALITY IS POOR OR UNKNOWN
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/21072.table b/definitions/bufr/tables/0/wmo/24/codetables/21072.table
new file mode 100644
index 0000000..99e4b1c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/21072.table
@@ -0,0 +1,3 @@
+1 1 HEIGHT ERROR CORRECTION APPLIED INSTEAD OF OPEN LOOP CALIBRATION
+2 2 MICROWAVE SOUNDER USED FOR TROPOSPHERE CORRECTION
+3 3 AGC OUTPUT CORRECTION APPLIED INSTEAD OF OPEN LOOP CALIBRATION
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/21073.table b/definitions/bufr/tables/0/wmo/24/codetables/21073.table
new file mode 100644
index 0000000..9538fa5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/21073.table
@@ -0,0 +1,8 @@
+1 1 BLANK DATA RECORD
+2 2 TEST
+3 3 CALIBRATION (CLOSED LOOP)
+4 4 BITE
+5 5 ACQUISITION ON ICE
+6 6 ACQUISITION ON OCEAN
+7 7 TRACKING ON ICE
+8 8 TRACKING ON OCEAN
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/21076.table b/definitions/bufr/tables/0/wmo/24/codetables/21076.table
new file mode 100644
index 0000000..bc52ac5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/21076.table
@@ -0,0 +1,4 @@
+0 0 LINEAR
+1 1 LOGARITHMIC (BASE E)
+2 2 LOGARITHMIC (BASE 10)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/21109.table b/definitions/bufr/tables/0/wmo/24/codetables/21109.table
new file mode 100644
index 0000000..deb577a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/21109.table
@@ -0,0 +1,7 @@
+1 1 NOT ENOUGH GOOD SIGMA-0 AVAILABLE FOR WIND RETRIEVAL
+2 2 POOR AZIMUTH DIVERSITY AMONG SIGMA-0 FOR WIND RETRIEVAL
+8 8 SOME PORTION OF WIND VECTOR CELL IS OVER LAND
+9 9 SOME PORTION OF WIND VECTOR CELL IS OVER ICE
+10 10 WIND RETRIEVAL NOT PERFORMED FOR WIND VECTOR CELL
+11 11 REPORTED WIND SPEED IS GREATER THAN 30 M S-1
+12 12 REPORTED WIND SPEED IS LESS THAN OR EQUAL TO 3 M S-1
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/21115.table b/definitions/bufr/tables/0/wmo/24/codetables/21115.table
new file mode 100644
index 0000000..9e90133
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/21115.table
@@ -0,0 +1,10 @@
+1 1 SIGMA-0 MEASUREMENT IS NOT USABLE
+2 2 SIGNAL TO NOISE RATIO IS LOW
+3 3 SIGMA-0 IS NEGATIVE
+4 4 SIGMA-0 IS OUTSIDE OF ACCEPTABLE RANGE
+5 5 SCATTEROMETER PULSE QUALITY IS NOT ACCEPTABLE
+6 6 SIGMA-0 CELL LOCATION ALGORITHM DOES NOT CONVERGE
+7 7 FREQUENCY SHIFT LIES BEYOND THE RANGE OF THE X FACTOR TABLE
+8 8 SPACECRAFT TEMPERATURE IS BEYOND CALIBRATION COEFFICIENT RANGE
+9 9 NO APPLICABLE ALTITUDE RECORDS WERE FOUND FOR THIS SIGMA-0
+10 10 INTERPOLATED EPHEMERIS DATA ARE NOT ACCEPTABLE FOR THIS SIGMA-0
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/21116.table b/definitions/bufr/tables/0/wmo/24/codetables/21116.table
new file mode 100644
index 0000000..10b5c53
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/21116.table
@@ -0,0 +1,16 @@
+1 1 CALIBRATION/MEASUREMENT PULSE FLAG (1)
+2 2 CALIBRATION/MEASUREMENT PULSE FLAG (2)
+3 3 OUTER ANTENNA BEAM
+4 4 SIGMA-0 CELL IS AFT OF SPACECRAFT
+5 5 CURRENT MODE (1)
+6 6 CURRENT MODE (2)
+7 7 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (1)
+8 8 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (2)
+9 9 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (3)
+10 10 LOW RESOLUTION MODE - WHOLE PULSE DATA
+11 11 SCATTEROMETER ELECTRONIC SUBSYSTEM B
+12 12 ALTERNATE SPIN RATE - 19.8 RPM
+13 13 RECEIVER PROTECTION ON
+14 14 SLICES PER COMPOSITE FLAG (1)
+15 15 SLICES PER COMPOSITE FLAG (2)
+16 16 SLICES PER COMPOSITE FLAG (3)
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/21119.table b/definitions/bufr/tables/0/wmo/24/codetables/21119.table
new file mode 100644
index 0000000..e17e3c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/21119.table
@@ -0,0 +1,14 @@
+0 0 RESERVED
+1 1 SASS
+2 2 SASS2
+3 3 NSCAT0
+4 4 NSCAT1
+5 5 NSCAT2
+6 6 QSCAT0
+7 7 QSCAT1
+31 31 CMOD1
+32 32 CMOD2
+33 33 CMOD3
+34 34 CMOD4
+35 35 CMOD5
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/21144.table b/definitions/bufr/tables/0/wmo/24/codetables/21144.table
new file mode 100644
index 0000000..1f082e6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/21144.table
@@ -0,0 +1 @@
+1 1 RAIN
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/21148.table b/definitions/bufr/tables/0/wmo/24/codetables/21148.table
new file mode 100644
index 0000000..11413ed
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/21148.table
@@ -0,0 +1,2 @@
+1 1 NON SHORT SCALE VARIATION
+2 2 SHORT SCALE VARIATION
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2115.table b/definitions/bufr/tables/0/wmo/24/codetables/2115.table
new file mode 100644
index 0000000..c7e866c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2115.table
@@ -0,0 +1,7 @@
+0 0 PDB
+1 1 RSOIS
+2 2 ASOS
+3 3 PSYCHROMETER
+4 4 F420
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/21150.table b/definitions/bufr/tables/0/wmo/24/codetables/21150.table
new file mode 100644
index 0000000..8510046
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/21150.table
@@ -0,0 +1,4 @@
+0 0 DATA FROM SINGLE GROUND STATION (NO CO-LOCATION)
+1 1 DATA FROM MULTIPLE GROUND STATION (CO-LOCATED DATA)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/21155.table b/definitions/bufr/tables/0/wmo/24/codetables/21155.table
new file mode 100644
index 0000000..a7837cf
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/21155.table
@@ -0,0 +1,16 @@
+1 1 NOT ENOUGH GOOD SIGMA-0 AVAILABLE FOR WIND RETRIEVAL
+2 2 POOR AZIMUTH DIVERSITY AMONG SIGMA-0 FOR WIND RETRIEVAL
+3 3 ANY BEAM NOISE CONTENT ABOVE THRESHOLD
+4 4 PRODUCT MONITORING NOT USED
+5 5 PRODUCT MONITORING FLAG
+6 6 KNMI QUALITY CONTROL FAILS
+7 7 VARIATIONAL QUALITY CONTROL FAILS
+8 8 SOME PORTION OF WIND VECTOR CELL IS OVER LAND
+9 9 SOME PORTION OF WIND VECTOR CELL IS OVER ICE
+10 10 WIND RETRIEVAL NOT PERFORMED FOR WIND VECTOR CELL
+11 11 REPORTED WIND SPEED IS GREATER THAN 30 M/S
+12 12 REPORTED WIND SPEED IS LESS THAN OR EQUAL TO 3 M/S
+13 13 RAIN FLAG FOR THE WIND VECTOR CELL IS NOT USABLE
+14 14 RAIN FLAG ALGORITHM DETECTS RAIN
+15 15 NO METEOROLOGICAL BACKGROUND USED
+16 16 DATA ARE REDUNDANT
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/21158.table b/definitions/bufr/tables/0/wmo/24/codetables/21158.table
new file mode 100644
index 0000000..dd53c51
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/21158.table
@@ -0,0 +1,4 @@
+0 0 ACCEPTABLE
+1 1 NOT ACCEPTABLE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/21159.table b/definitions/bufr/tables/0/wmo/24/codetables/21159.table
new file mode 100644
index 0000000..1703f9b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/21159.table
@@ -0,0 +1,4 @@
+0 0 GOOD
+1 1 USABLE
+2 2 BAD
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/21169.table b/definitions/bufr/tables/0/wmo/24/codetables/21169.table
new file mode 100644
index 0000000..9b93444
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/21169.table
@@ -0,0 +1,4 @@
+0 0 NO ICE PRESENT
+1 1 ICE PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2119.table b/definitions/bufr/tables/0/wmo/24/codetables/2119.table
new file mode 100644
index 0000000..0640af6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2119.table
@@ -0,0 +1,8 @@
+0 0 INTERMEDIATE FREQUENCY CALIBRATION MODE (IF CAL)
+1 1 BUILT-IN TEST EQUIPMENT DIGITAL (BITE DGT)
+2 2 BUILT-IN TEST EQUIPMENT RADIO FREQUENCY (BITE RF)
+3 3 PRESET TRACKING (PSET TRK)
+4 4 PRESET LOOP OUT
+5 5 ACQUISITION
+6 6 TRACKING
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2131.table b/definitions/bufr/tables/0/wmo/24/codetables/2131.table
new file mode 100644
index 0000000..f4336ef
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2131.table
@@ -0,0 +1 @@
+1 1 STC OPERATIONAL
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2137.table b/definitions/bufr/tables/0/wmo/24/codetables/2137.table
new file mode 100644
index 0000000..40d33fd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2137.table
@@ -0,0 +1,4 @@
+1 1 3:2
+2 2 4:3
+3 3 5:4
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2138.table b/definitions/bufr/tables/0/wmo/24/codetables/2138.table
new file mode 100644
index 0000000..a574506
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2138.table
@@ -0,0 +1,3 @@
+1 1 CLOCKWISE ROTATION
+2 2 COUNTERCLOCKWISE ROTATION
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2139.table b/definitions/bufr/tables/0/wmo/24/codetables/2139.table
new file mode 100644
index 0000000..f6cf802
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2139.table
@@ -0,0 +1,3 @@
+0 0 SIRAL NOMINAL
+1 1 SIRAL REDUNDANT
+2 2 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2143.table b/definitions/bufr/tables/0/wmo/24/codetables/2143.table
new file mode 100644
index 0000000..975d068
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2143.table
@@ -0,0 +1,21 @@
+0 0 RESERVED
+1 1 BREWER SPECTROPHOTOMETER
+2 2 CAVER TEICHERT
+3 3 DOBSON
+4 4 DOBSON (JAPAN)
+5 5 EHMET
+6 6 FECKER TELESCOPE
+7 7 HOELPER
+8 8 JODMETER
+9 9 FILTER OZONOMETER M-83
+10 10 MAST
+11 11 OXFORD
+12 12 PAETZOLD
+13 13 REGENER
+14 14 RESERVED FOR FUTURE USE
+15 15 VASSY FILTER OZONOMETER
+16 16 CARBON IODIDE
+17 17 SURFACE OZONE BUBBLER
+18 18 FILTER OZONOMETER M-124
+19 19 ECC SONDE
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2144.table b/definitions/bufr/tables/0/wmo/24/codetables/2144.table
new file mode 100644
index 0000000..5b0f37b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2144.table
@@ -0,0 +1,8 @@
+0 0 DIRECT SUN
+1 1 DIRECT SUN, ATTENUATOR #1
+2 2 DIRECT SUN, ATTENUATOR #2
+3 3 FOCUSED MOON
+4 4 FOCUSED SUN
+5 5 FOCUSED SUN CORRECTED WITH ADJACENT SKY MEASUREMENTS
+6 6 ZENITH SKY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2145.table b/definitions/bufr/tables/0/wmo/24/codetables/2145.table
new file mode 100644
index 0000000..1944e69
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2145.table
@@ -0,0 +1,9 @@
+0 0 WAVELENGTHS AD ORDINARY SETTING
+1 1 WAVELENGTHS BD ORDINARY SETTING
+2 2 WAVELENGTHS CD ORDINARY SETTING
+3 3 WAVELENGTHS CC' ORDINARY SETTING
+4 4 WAVELENGTHS AD FOCUSED IMAGE
+5 5 WAVELENGTHS BD FOCUSED IMAGE
+6 6 WAVELENGTHS CD FOCUSED IMAGE
+7 7 WAVELENGTHS CC' FOCUSED IMAGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2146.table b/definitions/bufr/tables/0/wmo/24/codetables/2146.table
new file mode 100644
index 0000000..871b357
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2146.table
@@ -0,0 +1,11 @@
+0 0 ON DIRECT SUN
+1 1 ON DIRECT MOON
+2 2 ON BLUE ZENITH SKY
+3 3 ON ZENITH CLOUD (UNIFORM STRATIFIED LAYER OF SMALL OPACITY)
+4 4 ON ZENITH CLOUD (UNIFORM OR MODERATELY VARIABLE LAYER OF MEDIUM OPACITY)
+5 5 ON ZENITH CLOUD (UNIFORM OR MODERATELY VARIABLE LAYER OF LARGE OPACITY)
+6 6 ON ZENITH CLOUD (HIGHLY VARIABLE OPACITY, WITH OR WITHOUT PRECIPITATION)
+7 7 ON ZENITH CLOUD (FOG)
+8 8 ON ZENITH HAZE
+9 9 ON DIRECT SUN THROUGH THIN CLOUD, FOG OR HAZE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2147.table b/definitions/bufr/tables/0/wmo/24/codetables/2147.table
new file mode 100644
index 0000000..4ff1c92
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2147.table
@@ -0,0 +1,11 @@
+0 0 RESERVED
+1 1 DIRECT LEASED CIRCUIT
+2 2 DIALLED UP CONNECTION
+3 3 INTERNET ISP
+4 4 DCP VIA SATELLITE (MTSAT, METEOSAT, ETC.)
+5 5 VSAT
+6 6 GAN,* BGAN**
+7 7 THISS TERMINAL
+8 8 IRIDIUM SATELLITES
+9 9 MOBILE TELEPHONY
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2148.table b/definitions/bufr/tables/0/wmo/24/codetables/2148.table
new file mode 100644
index 0000000..7d8ca51
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2148.table
@@ -0,0 +1,12 @@
+0 0 RESERVED
+1 1 ARGOS
+2 2 GPS
+3 3 GOES DCP
+4 4 METEOSAT DCP
+5 5 ORBCOMM
+6 6 INMARSAT
+7 7 IRIDIUM
+8 8 IRIDIUM AND GPS
+9 9 ARGOS-3
+10 10 ARGOS-4
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2149.table b/definitions/bufr/tables/0/wmo/24/codetables/2149.table
new file mode 100644
index 0000000..04638d2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2149.table
@@ -0,0 +1,38 @@
+0 0 UNSPECIFIED DRIFTING BUOY
+1 1 STANDARD LAGRANGIAN DRIFTER (GLOBAL DRIFTER PROGRAMME)
+2 2 STANDARD FGGE TYPE DRIFTING BUOY (NON-LAGRANGIAN METEOROLOGICAL DRIFTING BUOY)
+3 3 WIND MEASURING FGGE TYPE DRIFTING BUOY (NON-LAGRANGIAN METEOROLOGICAL DRIFTING BUOY)
+4 4 ICE DRIFTER
+5 5 SVPG STANDARD LAGRANGIAN DRIFTER WITH GPS
+6 6 SVP-HR DRIFTER WITH HIGH-RESOLUTION TEMPERATURE OR THERMISTOR STRING
+7 7 RESERVED
+8 8 UNSPECIFIED SUBSURFACE FLOAT
+9 9 SOFAR
+10 10 ALACE
+11 11 MARVOR
+12 12 RAFOS
+13 13 PROVOR
+14 14 SOLO
+15 15 APEX
+16 16 UNSPECIFIED MOORED BUOY
+17 17 NOMAD
+18 18 3-METRE DISCUS
+19 19 10-12-METRE DISCUS
+20 20 ODAS 30 SERIES
+21 21 ATLAS (E.G. TAO AREA)
+22 22 TRITON BUOY
+23 23 FLEX MOORING (E.G. TIP AREA)
+24 24 OMNIDIRECTIONAL WAVERIDER
+25 25 DIRECTIONAL WAVERIDER
+26 26 SUBSURFACE ARGO FLOAT
+27 27 PALACE
+28 28 NEMO
+29 29 NINJA
+30 30 ICE BUOY/FLOAT (POPS OR ITP)
+34 34 MOORING OCEANOGRAPHIC
+35 35 MOORING METEOROLOGICAL
+36 36 MOORING MULTIDISCIPLINARY (OCEANSITES)
+37 37 MOORING TIDE GAUGE OR TSUNAMI BUOY
+38 38 ICE BEACON
+39 39 ICE MASS BALANCE BUOY
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2150.table b/definitions/bufr/tables/0/wmo/24/codetables/2150.table
new file mode 100644
index 0000000..8193b57
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2150.table
@@ -0,0 +1,55 @@
+0 0 RESERVED
+1 1 HIRS 1
+2 2 HIRS 2
+3 3 HIRS 3
+4 4 HIRS 4
+5 5 HIRS 5
+6 6 HIRS 6
+7 7 HIRS 7
+8 8 HIRS 8
+9 9 HIRS 9
+10 10 HIRS 10
+11 11 HIRS 11
+12 12 HIRS 12
+13 13 HIRS 13
+14 14 HIRS 14
+15 15 HIRS 15
+16 16 HIRS 16
+17 17 HIRS 17
+18 18 HIRS 18
+19 19 HIRS 19
+20 20 HIRS 20
+21 21 MSU 1
+22 22 MSU 2
+23 23 MSU 3
+24 24 MSU 4
+25 25 SSU 1
+26 26 SSU 2
+27 27 SSU 3
+28 28 AMSU-A 1
+29 29 AMSU-A 2
+30 30 AMSU-A 3
+31 31 AMSU-A 4
+32 32 AMSU-A 5
+33 33 AMSU-A 6
+34 34 AMSU-A 7
+35 35 AMSU-A 8
+36 36 AMSU-A 9
+37 37 AMSU-A 10
+38 38 AMSU-A 11
+39 39 AMSU-A 12
+40 40 AMSU-A 13
+41 41 AMSU-A 14
+42 42 AMSU-A 15
+43 43 AMSU-B 1 / MHS 1
+44 44 AMSU-B 2 / MHS 2
+45 45 AMSU-B 3 / MHS 3
+46 46 AMSU-B 4 / MHS 4
+47 47 AMSU-B 5 / MHS 5
+48 48 AVHRR 1
+49 49 AVHRR 2
+50 50 AVHRR 3A
+51 51 AVHRR 3B
+52 52 AVHRR 4
+53 53 AVHRR 5
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2151.table b/definitions/bufr/tables/0/wmo/24/codetables/2151.table
new file mode 100644
index 0000000..45c80df
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2151.table
@@ -0,0 +1,11 @@
+0 0 HIRS
+1 1 MSU
+2 2 SSU
+3 3 AMSU-A1-1
+4 4 AMSU-A1-2
+5 5 AMSU-A2
+6 6 AMSU-B
+7 7 AVHRR
+8 8 RESERVED
+9 9 MHS
+2047 2047 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2152.table b/definitions/bufr/tables/0/wmo/24/codetables/2152.table
new file mode 100644
index 0000000..880c384
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2152.table
@@ -0,0 +1,13 @@
+1 1 HIGH-RESOLUTION INFRARED SOUNDER (HIRS)
+2 2 MICROWAVE SOUNDING UNIT (MSU)
+3 3 STRATOSPHERIC SOUNDING UNIT (SSU)
+4 4 AMI WIND MODE
+5 5 AMI WAVE MODE
+6 6 AMI IMAGE MODE
+7 7 RADAR ALTIMETER
+8 8 ATSR
+9 9 GEOSTATIONARY IMAGER
+10 10 GEOSTATIONARY SOUNDER
+11 11 GEOSTATIONARY EARTH RADIATION (GERB)
+12 12 MULTI-CHANNEL SCANNING RADIOMETER
+13 13 POLAR-ORBITING IMAGER
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2158.table b/definitions/bufr/tables/0/wmo/24/codetables/2158.table
new file mode 100644
index 0000000..97c4449
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2158.table
@@ -0,0 +1,8 @@
+1 1 MISMATCH IN RED VEC HPA
+2 2 MISMATCH IN RED VEC RFSS
+3 3 PTR CALIBRATION BAND 320 MHZ (KU)
+4 4 PTR CALIBRATION BAND 80 MHZ (KU)
+5 5 PTR CALIBRATION BAND 20 MHZ (KU)
+6 6 PTR CALIBRATION BAND 160 MHZ (S)
+7 7 KU FLIGHT CALIBRATION PARAMETERS AVAILABLE
+8 8 S FLIGHT CALIBRATION PARAMETERS AVAILABLE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2159.table b/definitions/bufr/tables/0/wmo/24/codetables/2159.table
new file mode 100644
index 0000000..63cb87c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2159.table
@@ -0,0 +1,7 @@
+1 1 TEMPERATURE INCONSISTENCY
+2 2 DATA IS MISSING
+3 3 REDUNDANCY CHANNEL
+4 4 POWER BUS PROTECTION
+5 5 OVERVOLTAGE/OVERLOAD PROTECTION
+6 6 RESERVED
+7 7 RESERVED
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2160.table b/definitions/bufr/tables/0/wmo/24/codetables/2160.table
new file mode 100644
index 0000000..fd7f372
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2160.table
@@ -0,0 +1,11 @@
+0 0 RESERVED
+1 1 10 TO LESS THAN 20 MM
+2 2 RESERVED
+3 3 20 TO LESS THAN 40 MM
+4 4 RESERVED
+5 5 40 TO LESS THAN 60 MM
+6 6 RESERVED
+7 7 60 TO LESS THAN 90 MM
+8 8 90 TO LESS THAN 110 MM
+9 9 110 MM AND GREATER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2163.table b/definitions/bufr/tables/0/wmo/24/codetables/2163.table
new file mode 100644
index 0000000..8cac631
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2163.table
@@ -0,0 +1,16 @@
+0 0 AUTO EDITOR
+1 1 IRW HEIGHT ASSIGNMENT
+2 2 WV HEIGHT ASSIGNMENT
+3 3 H2O INTERCEPT HEIGHT ASSIGNMENT
+4 4 CO2 SLICING HEIGHT ASSIGNMENT
+5 5 LOW PIXEL MAX GRADIENT
+6 6 HIGHER PIXEL MAX GRADIENT
+7 7 PRIMARY HEIGHT ASSIGNMENT
+8 8 LAYER THICKNESS ASSIGNMENT
+9 9 CUMULATIVE CONTRIBUTION FUNCTION - 10 PER CENT HEIGHT
+10 10 CUMULATIVE CONTRIBUTION FUNCTION - 50 PER CENT HEIGHT
+11 11 CUMULATIVE CONTRIBUTION FUNCTION - 90 PER CENT HEIGHT
+12 12 CUMULATIVE CONTRIBUTION FUNCTION - HEIGHT OF MAXIMUM GRADIENT
+13 13 IR / TWO WV CHANNEL RATIOING METHOD
+14 14 COMPOSITE HEIGHT ASSIGNMENT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2164.table b/definitions/bufr/tables/0/wmo/24/codetables/2164.table
new file mode 100644
index 0000000..01dc970
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2164.table
@@ -0,0 +1,4 @@
+0 0 LP - NORMS LEAST SQUARE MINIMUM
+1 1 EN - EUCLIDEAN NORM WITH RADIANCE CORRELATION
+2 2 CC - CROSS CORRELATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2165.table b/definitions/bufr/tables/0/wmo/24/codetables/2165.table
new file mode 100644
index 0000000..628be0e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2165.table
@@ -0,0 +1,7 @@
+1 1 CLEAR PATH
+2 2 PARTLY CLOUDY PATH
+3 3 CLOUDY PATH
+4 4 APODIZED
+5 5 UNAPODIZED
+6 6 RECONSTRUCTED
+7 7 CLOUD CLEARED
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2166.table b/definitions/bufr/tables/0/wmo/24/codetables/2166.table
new file mode 100644
index 0000000..efac38f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2166.table
@@ -0,0 +1,6 @@
+0 0 TYPE NOT DEFINED
+1 1 AUTOMATED STATISTICAL REGRESSION
+2 2 CLEAR PATH
+3 3 PARTLY CLOUDY PATH
+4 4 CLOUDY PATH
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2167.table b/definitions/bufr/tables/0/wmo/24/codetables/2167.table
new file mode 100644
index 0000000..acb2f9d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2167.table
@@ -0,0 +1,4 @@
+0 0 METHOD NOT DEFINED
+1 1 1B RAW RADIANCE
+2 2 PROCESSED RADIANCE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2169.table b/definitions/bufr/tables/0/wmo/24/codetables/2169.table
new file mode 100644
index 0000000..bd31667
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2169.table
@@ -0,0 +1,5 @@
+0 0 CUP ROTOR
+1 1 PROPELLER ROTOR
+2 2 WIND OBSERVATION THROUGH AMBIENT NOISE (WOTAN)
+3 3 SONIC
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2170.table b/definitions/bufr/tables/0/wmo/24/codetables/2170.table
new file mode 100644
index 0000000..05bab00
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2170.table
@@ -0,0 +1,5 @@
+0 0 SPECTRASENSORS WVSS-II, VERSION 1
+1 1 SPECTRASENSORS WVSS-II, VERSION 2
+2 2 SPECTRASENSORS WVSS-II, VERSION 3
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2172.table b/definitions/bufr/tables/0/wmo/24/codetables/2172.table
new file mode 100644
index 0000000..3c3641a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2172.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 RETRIEVAL FROM A NADIR SOUNDING
+2 2 RETRIEVAL FROM A LIMB SOUNDING
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2175.table b/definitions/bufr/tables/0/wmo/24/codetables/2175.table
new file mode 100644
index 0000000..2cf2a3d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2175.table
@@ -0,0 +1,9 @@
+0 0 MANUAL MEASUREMENT
+1 1 TIPPING BUCKET METHOD
+2 2 WEIGHING METHOD
+3 3 OPTICAL METHOD
+4 4 PRESSURE METHOD
+5 5 FLOAT METHOD
+6 6 DROP COUNTER METHOD
+14 14 OTHERS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2176.table b/definitions/bufr/tables/0/wmo/24/codetables/2176.table
new file mode 100644
index 0000000..2c27a6f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2176.table
@@ -0,0 +1,6 @@
+0 0 MANUAL OBSERVATION
+1 1 VIDEO CAMERA METHOD
+2 2 INFRARED METHOD
+3 3 LASER METHOD
+14 14 OTHERS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2177.table b/definitions/bufr/tables/0/wmo/24/codetables/2177.table
new file mode 100644
index 0000000..e7bb67a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2177.table
@@ -0,0 +1,6 @@
+0 0 MANUAL OBSERVATION
+1 1 ULTRASONIC METHOD
+2 2 VIDEO CAMERA METHOD
+3 3 LASER METHOD
+14 14 OTHERS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2178.table b/definitions/bufr/tables/0/wmo/24/codetables/2178.table
new file mode 100644
index 0000000..f4f8b59
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2178.table
@@ -0,0 +1,5 @@
+0 0 MANUAL OBSERVATION
+1 1 OPTICAL METHOD
+2 2 CAPACITIVE METHOD
+14 14 OTHERS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2179.table b/definitions/bufr/tables/0/wmo/24/codetables/2179.table
new file mode 100644
index 0000000..9e9ba18
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2179.table
@@ -0,0 +1,6 @@
+0 0 MANUAL OBSERVATION
+1 1 VAISALA ALGORITHM
+2 2 ASOS (FAA) ALGORITHM
+3 3 AWOS (CANADA) ALGORITHM
+14 14 OTHERS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2180.table b/definitions/bufr/tables/0/wmo/24/codetables/2180.table
new file mode 100644
index 0000000..0b21b2c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2180.table
@@ -0,0 +1,8 @@
+0 0 MANUAL OBSERVATION
+1 1 OPTICAL SCATTER SYSTEM COMBINED WITH PRECIPITATION OCCURRENCE SENSING SYSTEM
+2 2 FORWARD AND/OR BACKSCATTER SYSTEM OF VISIBLE LIGHT
+3 3 FORWARD AND/OR BACKSCATTER SYSTEM OF INFRARED LIGHT
+4 4 INFRARED LIGHT EMITTING DIODE (IRED) SYSTEM
+5 5 DOPPLER RADAR SYSTEM
+14 14 OTHERS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2181.table b/definitions/bufr/tables/0/wmo/24/codetables/2181.table
new file mode 100644
index 0000000..5096dc4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2181.table
@@ -0,0 +1,5 @@
+1 1 RAIN DETECTOR
+2 2 FREEZING RAIN SENSOR
+3 3 ICE DETECTION SENSOR
+4 4 HAIL AND ICE PELLET SENSOR
+20 20 OTHERS
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2182.table b/definitions/bufr/tables/0/wmo/24/codetables/2182.table
new file mode 100644
index 0000000..4ffab26
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2182.table
@@ -0,0 +1,7 @@
+0 0 MANUAL MEASUREMENT
+1 1 TRANSMISSOMETER SYSTEM (BASE > 25 M)
+2 2 TRANSMISSOMETER SYSTEM (BASE < 25 M)
+3 3 FORWARD SCATTER SYSTEM
+4 4 BACKSCATTER SYSTEM
+14 14 OTHERS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2183.table b/definitions/bufr/tables/0/wmo/24/codetables/2183.table
new file mode 100644
index 0000000..a804ea1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2183.table
@@ -0,0 +1,9 @@
+0 0 MANUAL OBSERVATION
+1 1 CEILOMETER SYSTEM
+2 2 INFRARED CAMERA SYSTEM
+3 3 MICROWAVE VISUAL CAMERA SYSTEM
+4 4 SKY IMAGER SYSTEM
+5 5 VIDEO TIME-LAPSED CAMERA SYSTEM
+6 6 MICROPULSE LIDAR (MPL) SYSTEM
+14 14 OTHERS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2184.table b/definitions/bufr/tables/0/wmo/24/codetables/2184.table
new file mode 100644
index 0000000..cf5ee84
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2184.table
@@ -0,0 +1,9 @@
+0 0 MANUAL OBSERVATION
+1 1 LIGHTNING IMAGING SENSOR
+2 2 ELECTRICAL STORM IDENTIFICATION SENSOR
+3 3 MAGNETIC FINDER SENSOR
+4 4 LIGHTNING STRIKE SENSOR
+5 5 FLASH COUNTER
+6 6 ATDNET VLF WAVEFORM CORRELATED SENSOR
+14 14 OTHERS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2185.table b/definitions/bufr/tables/0/wmo/24/codetables/2185.table
new file mode 100644
index 0000000..45b0810
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2185.table
@@ -0,0 +1,7 @@
+0 0 MANUAL MEASUREMENT
+1 1 BALANCED FLOATING METHOD
+2 2 PRESSURE METHOD
+3 3 ULTRASONIC METHOD
+4 4 HYDRAULIC METHOD
+14 14 OTHERS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2186.table b/definitions/bufr/tables/0/wmo/24/codetables/2186.table
new file mode 100644
index 0000000..05e1a36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2186.table
@@ -0,0 +1,23 @@
+1 1 PRECIPITATION-UNKNOWN TYPE
+2 2 LIQUID PRECIPITATION NOT FREEZING
+3 3 LIQUID FREEZING PRECIPITATION
+4 4 DRIZZLE
+5 5 RAIN
+6 6 SOLID PRECIPITATION
+7 7 SNOW
+8 8 SNOW GRAINS
+9 9 SNOW PELLETS
+10 10 ICE PELLETS
+11 11 ICE CRYSTALS
+12 12 DIAMOND DUST
+13 13 SMALL HAIL
+14 14 HAIL
+15 15 GLAZE
+16 16 RIME
+17 17 SOFT RIME
+18 18 HARD RIME
+19 19 CLEAR ICE
+20 20 WET SNOW
+21 21 HOAR FROST
+22 22 DEW
+23 23 WHITE DEW
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2187.table b/definitions/bufr/tables/0/wmo/24/codetables/2187.table
new file mode 100644
index 0000000..def3d2f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2187.table
@@ -0,0 +1,11 @@
+1 1 DUST/SAND WHIRL
+2 2 SQUALLS
+3 3 SAND STORM
+4 4 DUST STORM
+5 5 LIGHTNING - CLOUD TO SURFACE
+6 6 LIGHTNING - CLOUD TO CLOUD
+7 7 LIGHTNING - DISTANT
+8 8 THUNDERSTORM
+9 9 FUNNEL CLOUD NOT TOUCHING SURFACE
+10 10 FUNNEL CLOUD TOUCHING SURFACE
+11 11 SPRAY
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2188.table b/definitions/bufr/tables/0/wmo/24/codetables/2188.table
new file mode 100644
index 0000000..bb8114c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2188.table
@@ -0,0 +1,10 @@
+1 1 FOG
+2 2 ICE FOG
+3 3 STEAM FOG
+7 7 MIST
+8 8 HAZE
+9 9 SMOKE
+10 10 VOLCANIC ASH
+11 11 DUST
+12 12 SAND
+13 13 SNOW
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2189.table b/definitions/bufr/tables/0/wmo/24/codetables/2189.table
new file mode 100644
index 0000000..61ac9e3
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2189.table
@@ -0,0 +1,4 @@
+1 1 MANUAL OBSERVATION
+2 2 ALL LIGHTNING STRIKES WITHOUT DISCRIMINATION
+3 3 LIGHTNING STRIKES CLOUD TO GROUND ONLY
+4 4 ALL LIGHTNING STRIKES WITH DISCRIMINATION BETWEEN CLOUD TO GROUND AND CLOUD TO CLOUD
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/2191.table b/definitions/bufr/tables/0/wmo/24/codetables/2191.table
new file mode 100644
index 0000000..2e96256
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/2191.table
@@ -0,0 +1,4 @@
+0 0 GEOPOTENTIAL HEIGHT CALCULATED FROM PRESSURE
+1 1 GEOPOTENTIAL HEIGHT CALCULATED FROM GPS HEIGHT
+2 2 GEOPOTENTIAL HEIGHT CALCULATED FROM RADAR HEIGHT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/22056.table b/definitions/bufr/tables/0/wmo/24/codetables/22056.table
new file mode 100644
index 0000000..28ddbf4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/22056.table
@@ -0,0 +1,4 @@
+0 0 UPWARDS PROFILE
+1 1 DOWNWARDS PROFILE
+2 2 HORIZONTAL
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/22060.table b/definitions/bufr/tables/0/wmo/24/codetables/22060.table
new file mode 100644
index 0000000..b73ad32
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/22060.table
@@ -0,0 +1,4 @@
+0 0 DROGUE IS DETACHED
+1 1 DROGUE IS ATTACHED
+2 2 DROGUE STATUS UNKNOWN
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/22061.table b/definitions/bufr/tables/0/wmo/24/codetables/22061.table
new file mode 100644
index 0000000..aa8c62b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/22061.table
@@ -0,0 +1,11 @@
+0 0 CALM (GLASSY)
+1 1 CALM (RIPPLED)
+2 2 SMOOTH (WAVELETS)
+3 3 SLIGHT
+4 4 MODERATE
+5 5 ROUGH
+6 6 VERY ROUGH
+7 7 HIGH
+8 8 VERY HIGH
+9 9 PHENOMENAL
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/22067.table b/definitions/bufr/tables/0/wmo/24/codetables/22067.table
new file mode 100644
index 0000000..621b7a4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/22067.table
@@ -0,0 +1,101 @@
+1 1 SIPPICAN T-4
+2 2 SIPPICAN T-4
+11 11 SIPPICAN T-5
+21 21 SIPPICAN FAST DEEP
+31 31 SIPPICAN T-6
+32 32 SIPPICAN T-6
+41 41 SIPPICAN T-7
+42 42 SIPPICAN T-7
+51 51 SIPPICAN DEEP BLUE
+52 52 SIPPICAN DEEP BLUE
+61 61 SIPPICAN T-10
+71 71 SIPPICAN T-11
+81 81 SIPPICAN AXBT (300 M PROBES)
+201 201 TSK T-4
+202 202 TSK T-4
+211 211 TSK T-6
+212 212 TSK T-6
+221 221 TSK T-7
+222 222 TSK T-7
+231 231 TSK T-5
+241 241 TSK T-10
+251 251 TSK DEEP BLUE
+252 252 TSK DEEP BLUE
+261 261 TSK AXBT
+401 401 SPARTON XBT-1
+411 411 SPARTON XBT-3
+421 421 SPARTON XBT-4
+431 431 SPARTON XBT-5
+441 441 SPARTON XBT-5DB
+451 451 SPARTON XBT-6
+461 461 SPARTON XBT-7
+462 462 SPARTON XBT-7
+471 471 SPARTON XBT-7DB
+481 481 SPARTON XBT-10
+491 491 SPARTON XBT-20
+501 501 SPARTON XBT-20DB
+510 510 SPARTON 536 AXBT
+700 700 SIPPICAN XCTD STANDARD
+710 710 SIPPICAN XCTD DEEP
+720 720 SIPPICAN AXCTD
+730 730 SIPPICAN SXCTD
+741 741 TSK XCTD/XCTD-1
+742 742 TSK XCTD-2
+743 743 TSK XCTD-2F
+744 744 TSK XCTD-3
+745 745 TSK XCTD-4
+751 751 TSK AXCTD
+780 780 SEA-BIRD SBE21 SEACAT THERMOSALINOGRAPH
+781 781 SEA-BIRD SBE45 MICROTSG THERMOSALINOGRAPH
+800 800 MECHANICAL BT
+810 810 HYDROCAST
+820 820 THERMISTOR CHAIN
+825 825 TEMPERATURE (SONIC) AND PRESSURE PROBES
+830 830 CTD
+831 831 CTD-P-ALACE FLOAT
+837 837 ARVOR_C, SBE CONDUCTIVITY SENSOR
+838 838 ARVOR_D, SBE CONDUCTIVITY SENSOR
+839 839 PROVOR–II, SBE CONDUCTIVITY SENSOR
+840 840 PROVOR, NO CONDUCTIVITY SENSOR
+841 841 PROVOR, SEA-BIRD CONDUCTIVITY SENSOR
+842 842 PROVOR, FSI CONDUCTIVITY SENSOR
+843 843 POLAR OCEAN PROFILING SYSTEM (POPS), PROVOR, SBE CTD
+844 844 PROFILING FLOAT, ARVOR, SEA-BIRD CONDUCTIVITY SENSOR
+845 845 WEBB RESEARCH, NO CONDUCTIVITY SENSOR
+846 846 WEBB RESEARCH, SEA-BIRD CONDUCTIVITY SENSOR
+847 847 WEBB RESEARCH, FSI CONDUCTIVITY SENSOR
+848 848 APEX–EM, SBE CONDUCTIVITY SENSOR
+849 849 APEX_D, SBE CONDUCTIVITY SENSOR
+850 850 SOLO, NO CONDUCTIVITY SENSOR
+851 851 SOLO, SEA-BIRD CONDUCTIVITY SENSOR
+852 852 SOLO, FSI CONDUCTIVITY SENSOR
+853 853 PROFILING FLOAT, SOLO2 (SCRIPPS), SEA-BIRD CONDUCTIVITY SENSOR
+854 854 S2A, SBE CONDUCTIVITY SENSOR
+855 855 PROFILING FLOAT, NINJA, NO CONDUCTIVITY SENSOR
+856 856 PROFILING FLOAT, NINJA, SBE CONDUCTIVITY SENSOR
+857 857 PROFILING FLOAT, NINJA, FSI CONDUCTIVITY SENSOR
+858 858 PROFILING FLOAT, NINJA, TSK CONDUCTIVITY SENSOR
+859 859 PROFILING FLOAT, NEMO, NO CONDUCTIVITY SENSOR
+860 860 PROFILING FLOAT, NEMO, SBE CONDUCTIVITY SENSOR
+861 861 PROFILING FLOAT, NEMO, FSI CONDUCTIVITY SENSOR
+862 862 SOLO_D, SBE CONDUCTIVITY SENSOR
+863 863 NAVIS–A, SBE CONDUCTIVITY SENSOR
+864 864 NINJA_D, SBE CONDUCTIVITY SENSOR
+865 865 NOVA, SBE CONDUCTIVITY SENSOR
+866 866 ALAMO, NO CONDUCTIVITY SENSOR
+867 867 ALAMO, RBR CONDUCTIVITY SENSOR
+868 868 ALAMO, SBE CONDUCTIVITY SENSOR
+900 900 SIPPICAN LMP-5 XBT
+901 901 ICE-TETHERED PROFILER (ITP), SBE CTD
+902 902 BROOKE OCEAN MOVING VESSEL PROFILER (MVP)
+903 903 SEA-BIRD CTD
+904 904 AML OCEANOGRAPHIC CTD
+905 905 FALMOUTH SCIENTIFIC CTD
+906 906 OCEAN SENSORS CTD
+907 907 VALEPORT CTD
+908 908 OCEANSCIENCE MVP
+909 909 IDRONAUT CTD
+910 910 SEA-BIRD SBE 38
+995 995 INSTRUMENT ATTACHED TO MARINE MAMMALS
+996 996 INSTRUMENT ATTACHED TO ANIMALS OTHER THAN MARINE MAMMALS
+1023 1023 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/22068.table b/definitions/bufr/tables/0/wmo/24/codetables/22068.table
new file mode 100644
index 0000000..f6ddeb2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/22068.table
@@ -0,0 +1,43 @@
+1 1 SIPPICAN STRIP CHART RECORDER
+2 2 SIPPICAN MK2A/SSQ-61
+3 3 SIPPICAN MK-9
+4 4 SIPPICAN AN/BHQ-7/MK8
+5 5 SIPPICAN MK-12
+6 6 SIPPICAN MK-21
+7 7 SIPPICAN MK-8 LINEAR RECORDER
+8 8 SIPPICAN MK-10
+10 10 SPARTON SOC BT/SV PROCESSOR MODEL 100
+11 11 LOCKHEED-SANDERS MODEL OL5005
+20 20 ARGOS XBT-ST
+21 21 CLS-ARGOS/PROTECNO XBT-ST MODEL-1
+22 22 CLS-ARGOS/PROTECNO XBT-ST MODEL-2
+30 30 BATHY SYSTEMS SA-810
+31 31 SCRIPPS METROBYTE CONTROLLER
+32 32 MURAYAMA DENKI Z-60-16 III
+33 33 MURAYAMA DENKI Z-60-16 II
+34 34 PROTECNO ETSM2
+35 35 NAUTILUS MARINE SERVICE NMS-XBT
+40 40 TSK MK-2A
+41 41 TSK MK-2S
+42 42 TSK MK-30
+43 43 TSK MK-30N
+45 45 TSK MK-100
+46 46 TSK MK-130 COMPATIBLE RECORDER FOR BOTH XBT AND XCTD
+47 47 TSK MK-130A XCTD RECORDER
+48 48 TSK AXBT RECEIVER MK-300
+49 49 TSK MK-150/MK-150N COMPATIBLE RECORDER FOR BOTH XBT AND XCTD
+50 50 JMA ASTOS
+60 60 ARGOS COMMUNICATIONS, SAMPLING ON UP TRANSIT
+61 61 ARGOS COMMUNICATIONS, SAMPLING ON DOWN TRANSIT
+62 62 ORBCOMM COMMUNICATIONS, SAMPLING ON UP TRANSIT
+63 63 ORBCOMM COMMUNICATIONS, SAMPLING ON DOWN TRANSIT
+64 64 IRIDIUM COMMUNICATIONS, SAMPLING ON UP TRANSIT
+65 65 IRIDIUM COMMUNICATIONS, SAMPLING ON DOWN TRANSIT
+70 70 CSIRO DEVIL-1 XBT ACQUISITION SYSTEM
+71 71 CSIRO DEVIL-2 XBT ACQUISITION SYSTEM
+72 72 TURO/CSIRO QUOLL XBT ACQUISITION SYSTEM
+80 80 APPLIED MICROSYSTEMS LTD., MICRO-SVT&P
+81 81 SEA MAMMAL RESEARCH UNIT, UNIV. ST. ANDREWS, UK, UNCORRECTED SALINITY FROM A SEA MAMMAL MOUNTED INSTRUMENT
+82 82 SEA MAMMAL RESEARCH UNIT, UNIV. ST. ANDREWS, UK, CORRECTED SALINITY FROM A SEA MAMMAL MOUNTED INSTRUMENT
+99 99 UNKNOWN
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/22120.table b/definitions/bufr/tables/0/wmo/24/codetables/22120.table
new file mode 100644
index 0000000..8c747ce
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/22120.table
@@ -0,0 +1,13 @@
+0 0 GOOD DATA
+1 1 MAXIMUM (HIGH) WATER LEVEL LIMIT EXCEEDED
+2 2 MINIMUM (LOW) WATER LEVEL LIMIT EXCEEDED
+3 3 RATE OF CHANGE LIMIT FOR WATER LEVEL EXCEEDED
+4 4 FLAT LIMIT FOR WATER LEVEL EXCEEDED
+5 5 OBSERVED MINUS PREDICTED WATER LEVEL VALUE LIMIT EXCEEDED
+6 6 OBSERVED VALUE FROM PRIMARY WATER LEVEL SENSOR MINUS BACKUP WATER LEVEL SENSOR
+7 7 VALUE EXCEEDED SPECIFIED TOLERANCE FROM EXPECTED VALUE
+8 8 WATER LEVEL QA PARAMETER (SIGMAS AND/OR OUTLIERS) LIMITS EXCEEDED
+9 9 SEA TEMPERATURE OUTSIDE OF EXPECTED RANGE
+10 10 MULTIPLE QC CHECKS (ABOVE) FAILED
+11 11 NO AUTOMATED WATER LEVEL CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/22121.table b/definitions/bufr/tables/0/wmo/24/codetables/22121.table
new file mode 100644
index 0000000..7d4dfa8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/22121.table
@@ -0,0 +1,9 @@
+0 0 OPERATIONAL
+1 1 POSSIBLE CLOGGING PROBLEM OR OTHERWISE DEGRADED WATER LEVEL DATA
+2 2 POSSIBLE DATUM SHIFT
+3 3 UNKNOWN STATUS OF WATER LEVEL SENSOR
+4 4 SUSPECTED OR KNOWN SEA TEMPERATURE SENSOR PROBLEM
+5 5 MULTIPLE POSSIBLE PROBLEMS (ABOVE)
+6 6 BAD DATA - DO NOT DISSEMINATE!
+7 7 NO MANUAL WATER LEVEL CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/22122.table b/definitions/bufr/tables/0/wmo/24/codetables/22122.table
new file mode 100644
index 0000000..aa9d5eb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/22122.table
@@ -0,0 +1,8 @@
+0 0 GOOD DATA FROM ALL SENSORS
+1 1 WIND DIRECTION OUTSIDE OF ALLOWABLE RANGE
+2 2 WIND SPEED OUTSIDE OF EXPECTED RANGE
+3 3 BAROMETRIC PRESSURE OUTSIDE OF EXPECTED RANGE
+4 4 AIR TEMPERATURE OUTSIDE OF EXPECTED RANGE
+5 5 MULTIPLE SENSORS FAILED QC CHECKS
+6 6 NO AUTOMATED METEOROLOGICAL DATA CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/22123.table b/definitions/bufr/tables/0/wmo/24/codetables/22123.table
new file mode 100644
index 0000000..acfb616
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/22123.table
@@ -0,0 +1,9 @@
+0 0 OPERATIONAL
+1 1 SUSPECTED OR KNOWN PROBLEM WITH WIND SENSOR
+2 2 SUSPECTED OR KNOWN PROBLEM WITH BAROMETRIC PRESSURE SENSOR
+3 3 SUSPECTED OR KNOWN PROBLEM WITH AIR TEMPERATURE SENSOR
+4 4 UNKNOWN STATUS OF ALL SENSORS
+5 5 SUSPECTED OR KNOWN PROBLEMS WITH MULTIPLE SENSORS
+6 6 BAD DATA - DO NOT DISSEMINATE!
+7 7 NO MANUAL METEOROLOGICAL DATA CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/22178.table b/definitions/bufr/tables/0/wmo/24/codetables/22178.table
new file mode 100644
index 0000000..355848c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/22178.table
@@ -0,0 +1,12 @@
+0 0 UNKNOWN
+1 1 LM-2A DECK-MOUNTED
+2 2 LM-3A HAND-HELD
+3 3 LM-4A THRU-HULL
+10 10 AL-12 TSK AUTOLAUNCHER (UP TO 12 PROBES)
+20 20 SIO XBT AUTOLAUNCHER (UP TO 6 PROBES)
+30 30 AOML XBT V6 AUTOLAUNCHER (UP TO 6 DEEP BLUE PROBES)
+31 31 AOML XBT V8.0 AUTOLAUNCHER (UP TO 8 DEEP BLUE PROBES)
+32 32 AOML XBT V8.1 AUTOLAUNCHER (UP TO 8 DEEP BLUE AND FAST DEEP PROBES)
+90 90 CSIRO DEVIL AUTOLAUNCHER
+100 100 MFSTEP AUTOLAUNCHER (MEDITERRANEAN)
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/23001.table b/definitions/bufr/tables/0/wmo/24/codetables/23001.table
new file mode 100644
index 0000000..92ac5de
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/23001.table
@@ -0,0 +1,5 @@
+0 0 RESERVED
+1 1 ARTICLES 1 AND 2
+2 2 ARTICLE 3
+3 3 ARTICLE 5.2
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/23002.table b/definitions/bufr/tables/0/wmo/24/codetables/23002.table
new file mode 100644
index 0000000..12815c6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/23002.table
@@ -0,0 +1,16 @@
+0 0 RESERVED
+1 1 NUCLEAR REACTOR ON GROUND
+2 2 NUCLEAR REACTOR AT SEA
+3 3 NUCLEAR REACTOR IN SPACE
+4 4 NUCLEAR FUEL FACILITY
+5 5 RADIOACTIVE WASTE MANAGEMENT FACILITY
+6 6 TRANSPORT OF NUCLEAR FUEL OR RADIOACTIVE WASTE
+7 7 STORAGE OF NUCLEAR FUEL OR RADIOACTIVE WASTE
+8 8 MANUFACTURE OF RADIO-ISOTOPES
+9 9 USE OF RADIO-ISOTOPES
+10 10 STORAGE OF RADIO-ISOTOPES
+11 11 DISPOSAL OF RADIO-ISOTOPES
+12 12 TRANSPORT OF RADIO-ISOTOPES
+13 13 USE OF RADIO-ISOTOPES FOR POWER GENERATION
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/23003.table b/definitions/bufr/tables/0/wmo/24/codetables/23003.table
new file mode 100644
index 0000000..e3e891f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/23003.table
@@ -0,0 +1,8 @@
+0 0 NO RELEASE
+1 1 RELEASE TO ATMOSPHERE
+2 2 RELEASE TO WATER
+3 3 RELEASE TO BOTH ATMOSPHERE AND WATER
+4 4 EXPECTED RELEASE TO ATMOSPHERE
+5 5 EXPECTED RELEASE TO WATER
+6 6 EXPECTED RELEASE TO BOTH ATMOSPHERE AND WATER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/23004.table b/definitions/bufr/tables/0/wmo/24/codetables/23004.table
new file mode 100644
index 0000000..383731c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/23004.table
@@ -0,0 +1,6 @@
+0 0 NO COUNTERMEASURES
+1 1 EVACUATION
+2 2 SHELTERING
+3 3 PROPHYLAXIS
+4 4 WATER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/23005.table b/definitions/bufr/tables/0/wmo/24/codetables/23005.table
new file mode 100644
index 0000000..c5ff5ae
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/23005.table
@@ -0,0 +1,4 @@
+0 0 INCIDENT STATE DOES NOT UNDERSTAND WHAT HAPPENED
+1 1 INCIDENT STATE KNOWS THE CAUSE OF THE INCIDENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/23006.table b/definitions/bufr/tables/0/wmo/24/codetables/23006.table
new file mode 100644
index 0000000..fe7706a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/23006.table
@@ -0,0 +1,8 @@
+0 0 NO IMPROVEMENT
+1 1 UNSTABLE
+2 2 NO DETERIORATION
+3 3 IMPROVING
+4 4 STABLE
+5 5 DETERIORATING
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/23007.table b/definitions/bufr/tables/0/wmo/24/codetables/23007.table
new file mode 100644
index 0000000..59fc043
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/23007.table
@@ -0,0 +1,5 @@
+0 0 NO RELEASE
+1 1 RELEASE HAS STOPPED
+2 2 RELEASE
+3 3 RELEASE IS CONTINUING
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/23008.table b/definitions/bufr/tables/0/wmo/24/codetables/23008.table
new file mode 100644
index 0000000..4ac5c58
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/23008.table
@@ -0,0 +1,4 @@
+0 0 GASEOUS
+1 1 PARTICULATE
+2 2 MIXTURE OF GASEOUS AND PARTICULATE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/23009.table b/definitions/bufr/tables/0/wmo/24/codetables/23009.table
new file mode 100644
index 0000000..4ac5c58
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/23009.table
@@ -0,0 +1,4 @@
+0 0 GASEOUS
+1 1 PARTICULATE
+2 2 MIXTURE OF GASEOUS AND PARTICULATE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/23016.table b/definitions/bufr/tables/0/wmo/24/codetables/23016.table
new file mode 100644
index 0000000..ae84bae
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/23016.table
@@ -0,0 +1,4 @@
+0 0 NO SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT
+1 1 SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT POSSIBLE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/23018.table b/definitions/bufr/tables/0/wmo/24/codetables/23018.table
new file mode 100644
index 0000000..ccdcc45
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/23018.table
@@ -0,0 +1,6 @@
+0 0 RELEASE NO LONGER OCCURRING
+1 1 RELEASE STILL OCCURRING
+2 2 RELEASE EXPECTED TO INCREASE IN NEXT SIX HOURS
+3 3 RELEASE EXPECTED TO REMAIN CONSTANT IN NEXT SIX HOURS
+4 4 RELEASE EXPECTED TO DECREASE IN NEXT SIX HOURS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/23031.table b/definitions/bufr/tables/0/wmo/24/codetables/23031.table
new file mode 100644
index 0000000..cf20e26
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/23031.table
@@ -0,0 +1,4 @@
+0 0 PLUME WILL NOT ENCOUNTER RAIN IN INCIDENT STATE
+1 1 PLUME WILL ENCOUNTER RAIN IN INCIDENT STATE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/23032.table b/definitions/bufr/tables/0/wmo/24/codetables/23032.table
new file mode 100644
index 0000000..0f439b7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/23032.table
@@ -0,0 +1,4 @@
+0 0 NO SIGNIFICANT CHANGE EXPECTED WITHIN THE NEXT SIX HOURS
+1 1 ANTICIPATED SIGNIFICANT CHANGE EXPECTED WITHIN THE NEXT SIX HOURS
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/24003.table b/definitions/bufr/tables/0/wmo/24/codetables/24003.table
new file mode 100644
index 0000000..2daa810
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/24003.table
@@ -0,0 +1,5 @@
+0 0 NOBLE GASES
+1 1 IODINES
+2 2 CAESIUMS
+3 3 TRANSURANICS
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25004.table b/definitions/bufr/tables/0/wmo/24/codetables/25004.table
new file mode 100644
index 0000000..dfe4517
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25004.table
@@ -0,0 +1,4 @@
+0 0 INCOHERENT
+1 1 COHERENT (DOPPLER)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25005.table b/definitions/bufr/tables/0/wmo/24/codetables/25005.table
new file mode 100644
index 0000000..bc693a7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25005.table
@@ -0,0 +1,4 @@
+0 0 LOGARITHM - 2.5 DB
+1 1 LINEAR
+2 2 SPECIAL
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25006.table b/definitions/bufr/tables/0/wmo/24/codetables/25006.table
new file mode 100644
index 0000000..bf9d1f5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25006.table
@@ -0,0 +1,5 @@
+0 0 ZH TO R CONVERSION
+1 1 (ZH, ZDR) TO (NO, DO) TO R
+2 2 (Z (F1), Z (F2)) TO ATTENUATION TO R
+6 6 OTHER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25009.table b/definitions/bufr/tables/0/wmo/24/codetables/25009.table
new file mode 100644
index 0000000..bf34fb2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25009.table
@@ -0,0 +1,4 @@
+1 1 NONE
+2 2 CALIBRATION TARGET OR SIGNAL
+3 3 AGAINST RAINGAUGES
+4 4 AGAINST OTHER INSTRUMENTS (DISDROMETER - ATTENUATION)
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25010.table b/definitions/bufr/tables/0/wmo/24/codetables/25010.table
new file mode 100644
index 0000000..e88b3ca
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25010.table
@@ -0,0 +1,8 @@
+0 0 NONE
+1 1 MAP
+2 2 INSERTION OF HIGHER ELEVATION DATA AND MAP
+3 3 ANALYSIS OF THE FLUCTUATING LOGARITHM SIGNAL (CLUTTER DETECTION)
+4 4 EXTRACTION OF THE FLUCTUATING PART OF LINEAR SIGNAL (CLUTTER SUPPRESSION)
+5 5 CLUTTER SUPPRESSION - DOPPLER
+6 6 MULTIPARAMETER ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25011.table b/definitions/bufr/tables/0/wmo/24/codetables/25011.table
new file mode 100644
index 0000000..f739498
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25011.table
@@ -0,0 +1,4 @@
+0 0 NONE
+1 1 MAP OF CORRECTION FACTORS
+2 2 INTERPOLATION (AZIMUTH OR ELEVATION)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25012.table b/definitions/bufr/tables/0/wmo/24/codetables/25012.table
new file mode 100644
index 0000000..c869a4a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25012.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE
+1 1 SOFTWARE
+2 2 HARDWARE AND SOFTWARE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25013.table b/definitions/bufr/tables/0/wmo/24/codetables/25013.table
new file mode 100644
index 0000000..b91ea71
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25013.table
@@ -0,0 +1 @@
+1 1 BRIGHT-BAND CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25015.table b/definitions/bufr/tables/0/wmo/24/codetables/25015.table
new file mode 100644
index 0000000..043e587
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25015.table
@@ -0,0 +1 @@
+1 1 RADOME ATTENUATION CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25017.table b/definitions/bufr/tables/0/wmo/24/codetables/25017.table
new file mode 100644
index 0000000..ed48487
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25017.table
@@ -0,0 +1 @@
+1 1 PRECIPITATION ATTENUATION CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25020.table b/definitions/bufr/tables/0/wmo/24/codetables/25020.table
new file mode 100644
index 0000000..6133da3
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25020.table
@@ -0,0 +1,4 @@
+0 0 FFT (FAST FOURIER TRANSFORM)
+1 1 PPP (PULSE-PAIR PROCESSING)
+2 2 VPC (VECTOR-PHASE CHANGE)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25021.table b/definitions/bufr/tables/0/wmo/24/codetables/25021.table
new file mode 100644
index 0000000..314716b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25021.table
@@ -0,0 +1,5 @@
+1 1 SIMPLE AVERAGE
+2 2 CONSENSUS AVERAGE
+3 3 MEDIAN CHECK
+4 4 VERTICAL CONSISTENCY CHECK
+5 5 OTHER
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25022.table b/definitions/bufr/tables/0/wmo/24/codetables/25022.table
new file mode 100644
index 0000000..9584878
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25022.table
@@ -0,0 +1,8 @@
+1 1 UNPROCESSED
+2 2 LAND SUSPECTED
+3 3 WIND SPEED TOO LARGE
+4 4 ICE DETECTED
+5 5 RAIN DETECTED (MICROWAVE RETRIEVALS ONLY)
+6 6 CLOUDY DETECTED (INFRA-RED RETRIEVALS ONLY)
+7 7 COSMETIC VALUE
+8 8 SST OUT OF RANGE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25023.table b/definitions/bufr/tables/0/wmo/24/codetables/25023.table
new file mode 100644
index 0000000..e4840dc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25023.table
@@ -0,0 +1,8 @@
+1 1 DEFAULT CONFIDENCE VALUE HAS BEEN USED
+2 2 DEFAULT BIAS AND STANDARD DEVIATION HAVE BEEN USED
+3 3 SUN GLINT SUSPECTED
+4 4 SEA ICE RETRIEVAL FOR MICROWAVE DATA
+5 5 HIGH WIND SPEED RETRIEVAL
+6 6 INACCURATE SST DUE TO LOW SST (< 285K) (ONLY APPLIES TO THE TMI INSTRUMENT)
+7 7 RELAXED RAIN CONTAMINATION SUSPECTED
+8 8 POTENTIAL SIDE LOBE CONTAMINATION
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25024.table b/definitions/bufr/tables/0/wmo/24/codetables/25024.table
new file mode 100644
index 0000000..81b2638
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25024.table
@@ -0,0 +1,13 @@
+0 0 UNPROCESSED INFRARED RETRIEVAL
+1 1 CLOUDY RETRIEVALS
+2 2 BAD: DATA THAT ARE PROBABLY CONTAMINATED BY CLOUD
+3 3 SUSPECT DATA
+4 4 ACCEPTABLE DATA
+5 5 EXCELLENT DATA
+6 6 COOL SKIN SUSPECTED
+10 10 UNPROCESSED MICROWAVE RETRIEVAL
+11 11 QUESTIONABLE MICROWAVE RETRIEVAL THAT MAY BE CONTAMINATED
+12 12 ACCEPTABLE MICROWAVE RETRIEVAL
+13 13 HIGH PROBABILITY OF DIURNAL VARIABILITY
+14 14 RESERVED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25029.table b/definitions/bufr/tables/0/wmo/24/codetables/25029.table
new file mode 100644
index 0000000..fb00d01
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25029.table
@@ -0,0 +1,5 @@
+1 1 RESERVED
+2 2 CALIBRATION TARGET OR SIGNAL
+3 3 AGAINST RAINGAUGES
+4 4 AGAINST OTHER INSTRUMENTS (DISDROMETER - ATTENUATION)
+5 5 RESERVED
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25030.table b/definitions/bufr/tables/0/wmo/24/codetables/25030.table
new file mode 100644
index 0000000..c3235d6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25030.table
@@ -0,0 +1,4 @@
+0 0 RUNNING MEAN SEA-SURFACE TEMPERATURE NOT USED BECAUSE USAGE CRITERIA NOT MET
+1 1 RUNNING MEAN SEA-SURFACE TEMPERATURE NOT USED BECAUSE DATA NOT AVAILABLE
+2 2 RUNNING MEAN SEA-SURFACE TEMPERATURE USED AS PREDICTOR
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25031.table b/definitions/bufr/tables/0/wmo/24/codetables/25031.table
new file mode 100644
index 0000000..16ff950
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25031.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 NO THINNING APPLIED (ALL NATIVE MODEL LEVELS ARE INCLUDED FROM BASE TO TOP OF PSEUDO-SOUNDING)
+2 2 NATIVE MODEL LEVELS ARE PRESENT ONLY IF THEY ARE SIGNIFICANT LEVELS AS PER REGULATIONS B/C 25 FOR CONVENTIONAL TEMP SOUNDINGS
+3 3 A PREDEFINED SUBSET OF NATIVE MODEL LEVELS IS PRESENT
+4 4 NO NATIVE MODEL LEVELS ARE PRESENT.  ALL PROFILE LEVELS ARE INTERPOLATED TO A PREDEFINED SET OF PRESSURE COORDINATE LEVELS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25032.table b/definitions/bufr/tables/0/wmo/24/codetables/25032.table
new file mode 100644
index 0000000..9b894f4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25032.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 DATA FROM LOW MODE
+2 2 DATA FROM HIGH MODE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25033.table b/definitions/bufr/tables/0/wmo/24/codetables/25033.table
new file mode 100644
index 0000000..e7141c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25033.table
@@ -0,0 +1,4 @@
+0 0 WIND PROFILER OPERATING IN SUBMODE A
+1 1 WIND PROFILER OPERATING IN SUBMODE B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25034.table b/definitions/bufr/tables/0/wmo/24/codetables/25034.table
new file mode 100644
index 0000000..473338a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25034.table
@@ -0,0 +1,3 @@
+1 1 TEST A PERFORMED AND FAILED
+2 2 TEST B PERFORMED AND FAILED
+3 3 TEST RESULTS INCONCLUSIVE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25035.table b/definitions/bufr/tables/0/wmo/24/codetables/25035.table
new file mode 100644
index 0000000..a0c8faa
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25035.table
@@ -0,0 +1,8 @@
+0 0 NOT DEFINED
+1 1 INDIVIDUAL VOLTAGE DEFLECTION
+2 2 CURRENT BASED, ABOVE A THRESHOLD
+3 3 VOLTAGE BASED, ABOVE A THRESHOLD
+4 4 CONSENSUS OF SENSORS, CURRENT ABOVE A THRESHOLD
+5 5 CONSENSUS OF SENSORS, VOLTAGE ABOVE A THRESHOLD
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25036.table b/definitions/bufr/tables/0/wmo/24/codetables/25036.table
new file mode 100644
index 0000000..79ebd88
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25036.table
@@ -0,0 +1,4 @@
+0 0 NETWORK OF SEVERAL DIRECTION-FINDERS OPERATING ON THE SAME INDIVIDUAL ATMOSPHERICS
+1 1 NETWORK OF SEVERAL ARRIVAL-TIME STATIONS OPERATING ON THE SAME INDIVIDUAL ATMOSPHERICS
+6 6 SINGLE STATION RANGE BEARING TECHNIQUE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25040.table b/definitions/bufr/tables/0/wmo/24/codetables/25040.table
new file mode 100644
index 0000000..3ddf12e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25040.table
@@ -0,0 +1,10 @@
+0 0 NON-SPECIFIC MODE
+1 1 FIRST GUESS DATA
+2 2 CLOUD DATA
+3 3 AVERAGE VECTOR DATA
+4 4 PRIMARY DATA
+5 5 GUESS DATA
+6 6 VECTOR DATA
+7 7 TRACER DATA; THIS IMAGE
+8 8 TRACER DATA TO NEXT IMAGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25041.table b/definitions/bufr/tables/0/wmo/24/codetables/25041.table
new file mode 100644
index 0000000..f388da0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25041.table
@@ -0,0 +1,4 @@
+0 0 DIRECTION ORIGINALLY REPORTED IN TRUE DEGREES
+1 1 DIRECTION ORIGINALLY REPORTED USING CODE TABLE 0700, FM 13
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25042.table b/definitions/bufr/tables/0/wmo/24/codetables/25042.table
new file mode 100644
index 0000000..f3cf059
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25042.table
@@ -0,0 +1,4 @@
+0 0 SPEED ORIGINALLY REPORTED IN METRES PER SECOND
+1 1 SPEED ORIGINALLY REPORTED USING CODE TABLE 4451, FM 13
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25053.table b/definitions/bufr/tables/0/wmo/24/codetables/25053.table
new file mode 100644
index 0000000..af34138
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25053.table
@@ -0,0 +1,6 @@
+1 1 GOOD
+2 2 REDUNDANT
+3 3 QUESTIONABLE
+4 4 BAD
+5 5 EXPERIMENTAL
+6 6 PRECIPITATING
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25063.table b/definitions/bufr/tables/0/wmo/24/codetables/25063.table
new file mode 100644
index 0000000..a8970ea
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25063.table
@@ -0,0 +1,4 @@
+0 0 NOT DEFINED
+1 1 MAIN PROCESSOR
+2 2 BACKUP PROCESSOR
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25069.table b/definitions/bufr/tables/0/wmo/24/codetables/25069.table
new file mode 100644
index 0000000..e627613
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25069.table
@@ -0,0 +1,7 @@
+1 1 SMOOTHED
+2 2 BASELINE ADJUSTED
+3 3 NORMALIZED TIME INTERVAL
+4 4 OUTLIER CHECKED
+5 5 PLAUSIBILITY CHECKED
+6 6 CONSISTENCY CHECKED
+7 7 INTERPOLATED
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25086.table b/definitions/bufr/tables/0/wmo/24/codetables/25086.table
new file mode 100644
index 0000000..294fa69
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25086.table
@@ -0,0 +1,4 @@
+0 0 DEPTHS ARE NOT CORRECTED
+1 1 DEPTHS ARE CORRECTED
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25090.table b/definitions/bufr/tables/0/wmo/24/codetables/25090.table
new file mode 100644
index 0000000..309fefc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25090.table
@@ -0,0 +1,11 @@
+0 0 ORBIT COMPUTED DURING A MANOEUVRE
+1 1 ADJUSTED MISSION OPERATIONS ORBIT
+2 2 EXTRAPOLATED MISSION OPERATIONS ORBIT
+3 3 ADJUSTED (PRELIMINARY/PRECISE) ORBIT
+4 4 (PRELIMINARY/PRECISE) ORBIT IS ESTIMATED DURING A MANOEUVRE PERIOD
+5 5 (PRELIMINARY/PRECISE) ORBIT IS INTERPOLATED OVER A TRACKING DATA GAP
+6 6 (PRELIMINARY/PRECISE) ORBIT IS EXTRAPOLATED FOR A DURATION LESS THAN 1 DAY
+7 7 (PRELIMINARY/PRECISE) ORBIT IS EXTRAPOLATED FOR A DURATION THAT RANGES FROM 1 DAY TO 2 DAYS
+8 8 (PRELIMINARY/PRECISE) ORBIT IS EXTRAPOLATED FOR A DURATION LARGER THAN 2 DAYS, OR THAT THE ORBIT IS EXTRAPOLATED JUST AFTER A MANOEUVRE
+9 9 DORIS* DIODE** NAVIGATOR ORBIT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25093.table b/definitions/bufr/tables/0/wmo/24/codetables/25093.table
new file mode 100644
index 0000000..e547e6c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25093.table
@@ -0,0 +1,3 @@
+1 1 NO CORRECTION
+2 2 VERTICAL VELOCITY CORRECTION
+7 7 ALL CORRECTIONS
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25095.table b/definitions/bufr/tables/0/wmo/24/codetables/25095.table
new file mode 100644
index 0000000..c446a50
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25095.table
@@ -0,0 +1 @@
+1 1 ALTIMETER OPERATING (0 IF NOMINAL, 1 IF BACKUP)
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25096.table b/definitions/bufr/tables/0/wmo/24/codetables/25096.table
new file mode 100644
index 0000000..89dcc39
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25096.table
@@ -0,0 +1,4 @@
+1 1 MODE INDICATOR (0 IF MODE 2, 1 IF MODE 1)
+2 2 MODE 1 CALIBRATION SEQUENCE INDICATOR (0 IF NORMAL DATA TAKING EITHER MODE 1 OR 2, 1 IF MODE 1 CALIBRATION SEQUENCE)  BITS 3 AND 4 INDICATE ACTIVE 23.8 GHZ CHANNEL(S):
+3 3 CHANNEL 2 (0 IF ON, 1 IF OFF)
+4 4 CHANNEL 3 (0 IF ON, 1 IF OFF)
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25097.table b/definitions/bufr/tables/0/wmo/24/codetables/25097.table
new file mode 100644
index 0000000..d4e1e46
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25097.table
@@ -0,0 +1,11 @@
+0 0 RANGES BETWEEN 0 AND 30 CM
+1 1 RANGES BETWEEN 30 AND 60 CM
+2 2 RANGES BETWEEN 60 AND 90 CM
+3 3 RANGES BETWEEN 90 AND 120 CM
+4 4 RANGES BETWEEN 120 AND 150 CM
+5 5 RANGES BETWEEN 150 AND 180 CM
+6 6 RANGES BETWEEN 180 AND 210 CM
+7 7 RANGES BETWEEN 210 AND 240 CM
+8 8 RANGES BETWEEN 240 AND 270 CM
+9 9 RANGES LARGER THAN 270 CM
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25098.table b/definitions/bufr/tables/0/wmo/24/codetables/25098.table
new file mode 100644
index 0000000..9d505a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25098.table
@@ -0,0 +1,8 @@
+1 1 KU BAND RANGE
+2 2 C BAND RANGE
+3 3 KU BAND SWH*
+4 4 C BAND SWH*
+5 5 KU BAND BACKSCATTER COEFFICIENT
+6 6 C BAND BACKSCATTER COEFFICIENT
+7 7 OFF NADIR ANGLE FROM KU BAND WAVEFORM PARAMETERS
+8 8 OFF NADIR ANGLE FROM PLATFORM
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25099.table b/definitions/bufr/tables/0/wmo/24/codetables/25099.table
new file mode 100644
index 0000000..40f35b1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25099.table
@@ -0,0 +1,6 @@
+1 1 KU BAND RANGE INSTRUMENTAL CORRECTION
+2 2 C BAND RANGE INSTRUMENTAL CORRECTION
+3 3 KU BAND SWH* INSTRUMENTAL CORRECTION
+4 4 C BAND SWH* INSTRUMENTAL CORRECTION
+5 5 KU BAND BACKSCATTER COEFFICIENT INSTRUMENTAL CORRECTION
+6 6 C BAND BACKSCATTER COEFFICIENT INSTRUMENTAL CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25110.table b/definitions/bufr/tables/0/wmo/24/codetables/25110.table
new file mode 100644
index 0000000..912e01f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25110.table
@@ -0,0 +1,6 @@
+1 1 RAW DATA ANALYSIS USED FOR RAW DATA CORRECTION. CORRECTION DONE USING DEFAULT PARAMETERS
+2 2 RAW DATA ANALYSIS USED FOR RAW DATA CORRECTION. CORRECTION DONE USING RAW DATA ANALYSIS RESULTS
+3 3 ANTENNA ELEVATION PATTERN CORRECTION APPLIED
+4 4 NOMINAL CHIRP REPLICA USED
+5 5 RECONSTRUCTED CHIRP USED
+6 6 SLANT RANGE TO GROUND RANGE CONVERSION APPLIED
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25112.table b/definitions/bufr/tables/0/wmo/24/codetables/25112.table
new file mode 100644
index 0000000..a2a4ec9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25112.table
@@ -0,0 +1,5 @@
+1 1 BAND SPECIFIC RANGE
+2 2 BAND SPECIFIC SIGNIFICANT WAVE HEIGHT
+3 3 BAND SPECIFIC BACKSCATTER COEFFICIENT
+4 4 OFF NADIR ANGLE FROM BAND SPECIFIC WAVEFORM PARAMETERS
+5 5 OFF NADIR ANGLE FROM PLATFORM
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25113.table b/definitions/bufr/tables/0/wmo/24/codetables/25113.table
new file mode 100644
index 0000000..ef394b6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25113.table
@@ -0,0 +1,3 @@
+1 1 BAND SPECIFIC RANGE INSTRUMENTAL CORRECTION
+2 2 BAND SPECIFIC SIGNIFICANT WAVE HEIGHT INSTRUMENTAL CORRECTION
+3 3 BAND SPECIFIC BACKSCATTER COEFFICIENT INSTRUMENTAL CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25120.table b/definitions/bufr/tables/0/wmo/24/codetables/25120.table
new file mode 100644
index 0000000..bdb9f96
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25120.table
@@ -0,0 +1,4 @@
+0 0 PERCENTAGE OF DSRS* FREE OF PROCESSING ERRORS DURING LEVEL 2 PROCESSING IS GREATER THAN THE ACCEPTABLE THRESHOLD
+1 1 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL 2 PROCESSING IS LESS THAN THE ACCEPTABLE THRESHOLD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25122.table b/definitions/bufr/tables/0/wmo/24/codetables/25122.table
new file mode 100644
index 0000000..1085ef9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25122.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE CONFIGURATION FOR RF IS A
+1 1 HARDWARE CONFIGURATION FOR RF IS B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25123.table b/definitions/bufr/tables/0/wmo/24/codetables/25123.table
new file mode 100644
index 0000000..70f0670
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25123.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE CONFIGURATION FOR HPA IS A
+1 1 HARDWARE CONFIGURATION FOR HPA IS B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25124.table b/definitions/bufr/tables/0/wmo/24/codetables/25124.table
new file mode 100644
index 0000000..dce5b04
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25124.table
@@ -0,0 +1,4 @@
+0 0 PERCENTAGE OF DSRS** FREE OF PROCESSING ERRORS DURING LEVEL 2 PROCESSING IS GREATER THAN THE ACCEPTABLE THRESHOLD
+1 1 PERCENTAGE OF DSRS** FREE OF PROCESSING ERRORS DURING LEVEL 2 PROCESSING IS LESS THAN THE ACCEPTABLE THRESHOLD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25150.table b/definitions/bufr/tables/0/wmo/24/codetables/25150.table
new file mode 100644
index 0000000..7b452c3
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25150.table
@@ -0,0 +1,3 @@
+1 1 THE DVORAK'S VIS (VISUAL IMAGERY) INTENSITY ANALYSIS
+2 2 THE DVORAK'S EIR (ENHANCED INFRARED IMAGERY) INTENSITY ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25174.table b/definitions/bufr/tables/0/wmo/24/codetables/25174.table
new file mode 100644
index 0000000..c8a11b6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25174.table
@@ -0,0 +1,13 @@
+1 1 PIXEL IS AFFECTED BY RFI EFFECTS
+2 2 PIXEL IS LOCATED IN THE HEXAGONAL ALIAS DIRECTION CENTRED ON SUN ALIAS
+3 3 PIXEL IS CLOSE TO THE BORDER DELIMITING THE EXTENDED ALIAS FREE ZONE
+4 4 PIXEL IS INSIDE THE EXTENDED ALIAS FREE ZONE
+5 5 PIXEL IS INSIDE THE EXCLUSIVE OF ALIAS FREE ZONE
+6 6 PIXEL IS LOCATED IN A ZONE WHERE A MOON ALIAS WAS RECONSTRUCTED
+7 7 PIXEL IS LOCATED IN A ZONE WHERE SUN REFLECTION HAS BEEN DETECTED
+8 8 PIXEL IS LOCATED IN A ZONE WHERE SUN ALIAS WAS RECONSTRUCTED
+9 9 FLAT TARGET TRANSFORMATION HAS BEEN PERFORMED DURING IMAGE RECONSTRUCTION OF THIS PIXEL
+10 10 SCENE HAS BEEN COMBINED WITH AN ADJUSTMENT SCENE IN OPPOSITE POLARIZATION DURING IMAGE RECONSTRUCTION TO ACCOUNT FOR CROSS-POLARIZATION LEAKAGE
+11 11 DIRECT MOON CORRECTION HAS BEEN PERFORMED DURING IMAGE RECONSTRUCTION OF THIS PIXEL
+12 12 REFLECTED SUN CORRECTION HAS BEEN PERFORMED DURING IMAGE RECONSTRUCTION OF THIS PIXEL
+13 13 DIRECT SUN CORRECTION HAS BEEN PERFORMED DURING IMAGE RECONSTRUCTION OF THIS IMAGE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25181.table b/definitions/bufr/tables/0/wmo/24/codetables/25181.table
new file mode 100644
index 0000000..2c1eabf
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25181.table
@@ -0,0 +1,3 @@
+0 0 OK
+1 1 PERCENTAGE OF L2B RECORDS FREE OF PROCESSING ERRORS IS LESS THAN ACCEPTABLE THRESHOLD
+2 2 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25182.table b/definitions/bufr/tables/0/wmo/24/codetables/25182.table
new file mode 100644
index 0000000..9827b1d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25182.table
@@ -0,0 +1,3 @@
+0 0 OK
+1 1 PERCENTAGE OF L1B RECORDS FREE OF PROCESSING ERRORS IS LESS THAN ACCEPTABLE THRESHOLD
+2 2 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/25184.table b/definitions/bufr/tables/0/wmo/24/codetables/25184.table
new file mode 100644
index 0000000..29005c1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/25184.table
@@ -0,0 +1,3 @@
+0 0 OK
+1 1 PRODUCT AS A DURATION SHORTER THAN THE INPUT PRODUCT
+2 2 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/26010.table b/definitions/bufr/tables/0/wmo/24/codetables/26010.table
new file mode 100644
index 0000000..f825040
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/26010.table
@@ -0,0 +1,25 @@
+1 1 0100 INCLUDED
+2 2 0200 INCLUDED
+3 3 0300 INCLUDED
+4 4 0400 INCLUDED
+5 5 0500 INCLUDED
+6 6 0600 INCLUDED
+7 7 0700 INCLUDED
+8 8 0800 INCLUDED
+9 9 0900 INCLUDED
+10 10 1000 INCLUDED
+11 11 1100 INCLUDED
+12 12 1200 INCLUDED
+13 13 1300 INCLUDED
+14 14 1400 INCLUDED
+15 15 1500 INCLUDED
+16 16 1600 INCLUDED
+17 17 1700 INCLUDED
+18 18 1800 INCLUDED
+19 19 1900 INCLUDED
+20 20 2000 INCLUDED
+21 21 2100 INCLUDED
+22 22 2200 INCLUDED
+23 23 2300 INCLUDED
+24 24 2400 INCLUDED
+25 25 UNKNOWN MIXTURE OF HOURS
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/29001.table b/definitions/bufr/tables/0/wmo/24/codetables/29001.table
new file mode 100644
index 0000000..1481243
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/29001.table
@@ -0,0 +1,8 @@
+0 0 GNOMONIC PROJECTION
+1 1 POLAR STEREOGRAPHIC PROJECTION
+2 2 LAMBERT'S CONFORMAL CONIC PROJECTION
+3 3 MERCATOR'S PROJECTION
+4 4 SCANNING CONE (RADAR)*
+5 5 RESERVED
+6 6 NO PROJECTION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/29002.table b/definitions/bufr/tables/0/wmo/24/codetables/29002.table
new file mode 100644
index 0000000..1d7efd0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/29002.table
@@ -0,0 +1,4 @@
+0 0 CARTESIAN
+1 1 POLAR
+2 2 OTHER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/30031.table b/definitions/bufr/tables/0/wmo/24/codetables/30031.table
new file mode 100644
index 0000000..80cce26
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/30031.table
@@ -0,0 +1,13 @@
+0 0 PPI
+1 1 COMPOSITE
+2 2 CAPPL
+3 3 VERTICAL SECTION
+4 4 ALPHANUMERIC DATA
+5 5 MAP OF SUBJECT CLUTTER
+6 6 MAP
+7 7 TEST PICTURE
+8 8 COMMENTS
+9 9 MAP OF GROUND OCCULTATION
+10 10 MAP OF RADAR BEAM HEIGHT
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/30032.table b/definitions/bufr/tables/0/wmo/24/codetables/30032.table
new file mode 100644
index 0000000..942cb5d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/30032.table
@@ -0,0 +1,9 @@
+1 1 MAP
+2 2 SATELLITE IR
+3 3 SATELLITE VIS
+4 4 SATELLITE WV
+5 5 SATELLITE MULTISPECTRAL
+6 6 SYNOPTIC OBSERVATIONS
+7 7 FORECAST PARAMETERS
+8 8 LIGHTNING DATA
+15 15 OTHER DATA
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/3010.table b/definitions/bufr/tables/0/wmo/24/codetables/3010.table
new file mode 100644
index 0000000..75746a1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/3010.table
@@ -0,0 +1,12 @@
+0 0 RESERVED
+1 1 ADCP
+2 2 GEK (GEOMAGNETIC ELECTROKINETOGRAPH)
+3 3 SHIP'S SET AND DRIFT DETERMINED BY FIXES 3-6 HOURS APART
+4 4 SHIP'S SET AND DRIFT DETERMINED BY FIXES MORE THAN 6 HOURS BUT LESS THAN 12 HOURS APART
+5 5 DRIFT OF BUOY
+6 6 ADCP
+7 7 ADCP BOTTOM TRACKING MODE
+8 8 ELECTROMAGNETIC SENSOR
+9 9 ROTOR AND VANE
+10 10 LOWERED ADCP
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/3011.table b/definitions/bufr/tables/0/wmo/24/codetables/3011.table
new file mode 100644
index 0000000..7488268
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/3011.table
@@ -0,0 +1,4 @@
+0 0 DEPTH CALCULATED USING FALL RATE EQUATION
+1 1 DEPTH CALCULATED FROM WATER PRESSURE/EQUATION OF STATE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/3012.table b/definitions/bufr/tables/0/wmo/24/codetables/3012.table
new file mode 100644
index 0000000..35bdead
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/3012.table
@@ -0,0 +1,3 @@
+0 0 ANDERRAA OXYGEN OPTODE
+1 1 WINKLER BOTTLE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/31021.table b/definitions/bufr/tables/0/wmo/24/codetables/31021.table
new file mode 100644
index 0000000..fb70e1c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/31021.table
@@ -0,0 +1,8 @@
+0 0 RESERVED
+1 1 1-BIT INDICATOR OF QUALITY
+2 2 2-BIT INDICATOR OF QUALITY
+6 6 4-BIT INDICATOR OF QUALITY CONTROL CLASS ACCORDING TO GTSPP
+7 7 PERCENTAGE CONFIDENCE
+8 8 0 = NOT SUSPECTED, 1 = SUSPECTED, 2 = RESERVED, 3 = INFORMATION NOT REQUIRED
+21 21 1-BIT INDICATOR OF CORRECTION
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/31031.table b/definitions/bufr/tables/0/wmo/24/codetables/31031.table
new file mode 100644
index 0000000..1f27429
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/31031.table
@@ -0,0 +1 @@
+1 1 
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33002.table b/definitions/bufr/tables/0/wmo/24/codetables/33002.table
new file mode 100644
index 0000000..4177c05
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33002.table
@@ -0,0 +1,4 @@
+0 0 DATA NOT SUSPECT
+1 1 DATA SUSPECT
+2 2 RESERVED
+3 3 QUALITY INFORMATION NOT GIVEN
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33003.table b/definitions/bufr/tables/0/wmo/24/codetables/33003.table
new file mode 100644
index 0000000..7577129
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33003.table
@@ -0,0 +1,5 @@
+0 0 DATA NOT SUSPECT
+1 1 DATA SLIGHTLY SUSPECT
+2 2 DATA HIGHLY SUSPECT
+3 3 DATA CONSIDERED UNFIT FOR USE
+7 7 QUALITY INFORMATION NOT GIVEN
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33005.table b/definitions/bufr/tables/0/wmo/24/codetables/33005.table
new file mode 100644
index 0000000..8d7569a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33005.table
@@ -0,0 +1,23 @@
+1 1 NO AUTOMATED METEOROLOGICAL DATA CHECKS PERFORMED
+2 2 PRESSURE DATA SUSPECT
+3 3 WIND DATA SUSPECT
+4 4 AIR TEMPERATURE DATA SUSPECT
+5 5 WET-BULB TEMPERATURE DATA SUSPECT
+6 6 HUMIDITY DATA SUSPECT
+7 7 GROUND TEMPERATURE DATA SUSPECT
+8 8 SOIL TEMPERATURE (DEPTH 1) DATA SUSPECT
+9 9 SOIL TEMPERATURE (DEPTH 2) DATA SUSPECT
+10 10 SOIL TEMPERATURE (DEPTH 3) DATA SUSPECT
+11 11 SOIL TEMPERATURE (DEPTH 4) DATA SUSPECT
+12 12 SOIL TEMPERATURE (DEPTH 5) DATA SUSPECT
+13 13 CLOUD DATA SUSPECT
+14 14 VISIBILITY DATA SUSPECT
+15 15 PRESENT WEATHER DATA SUSPECT
+16 16 LIGHTNING DATA SUSPECT
+17 17 ICE DEPOSIT DATA SUSPECT
+18 18 PRECIPITATION DATA SUSPECT
+19 19 STATE OF GROUND DATA SUSPECT
+20 20 SNOW DATA SUSPECT
+21 21 WATER CONTENT DATA SUSPECT
+22 22 EVAPORATION/EVAPOTRANSPIRATION DATA SUSPECT
+23 23 SUNSHINE DATA SUSPECT
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33006.table b/definitions/bufr/tables/0/wmo/24/codetables/33006.table
new file mode 100644
index 0000000..0ea44a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33006.table
@@ -0,0 +1,5 @@
+0 0 SELF-CHECK OK
+1 1 AT LEAST ONE WARNING ACTIVE, NO ALARMS
+2 2 AT LEAST ONE ALARM ACTIVE
+3 3 SENSOR FAILURE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33015.table b/definitions/bufr/tables/0/wmo/24/codetables/33015.table
new file mode 100644
index 0000000..f585808
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33015.table
@@ -0,0 +1,16 @@
+0 0 PASSED ALL CHECKS
+1 1 MISSING DATA CHECK
+2 2 DESCENDING/REASCENDING BALLOON CHECK
+3 3 DATA PLAUSIBILITY CHECK (ABOVE LIMITS)
+4 4 DATA PLAUSIBILITY CHECK (BELOW LIMITS)
+5 5 SUPERADIABATIC LAPSE RATE CHECK
+6 6 LIMITING ANGLES CHECK
+7 7 ASCENSION RATE CHECK
+8 8 EXCESSIVE CHANGE FROM PREVIOUS FLIGHT
+9 9 BALLOON OVERHEAD CHECK
+10 10 WIND SPEED CHECK
+11 11 WIND DIRECTION CHECK
+12 12 DEPENDENCY CHECK
+13 13 DATA VALID BUT MODIFIED
+14 14 DATA OUTLIER CHECK
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33020.table b/definitions/bufr/tables/0/wmo/24/codetables/33020.table
new file mode 100644
index 0000000..ba7a4d4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33020.table
@@ -0,0 +1,8 @@
+0 0 GOOD
+1 1 INCONSISTENT
+2 2 DOUBTFUL
+3 3 WRONG
+4 4 NOT CHECKED
+5 5 HAS BEEN CHANGED
+6 6 ESTIMATED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33021.table b/definitions/bufr/tables/0/wmo/24/codetables/33021.table
new file mode 100644
index 0000000..e3e67ae
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33021.table
@@ -0,0 +1,4 @@
+0 0 WITHIN LIMITS
+1 1 OUTSIDE LIMITS
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33022.table b/definitions/bufr/tables/0/wmo/24/codetables/33022.table
new file mode 100644
index 0000000..50ef65f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33022.table
@@ -0,0 +1,4 @@
+0 0 GOOD (SEVERAL IDENTICAL REPORTS HAVE BEEN RECEIVED)
+1 1 DUBIOUS (NO IDENTICAL REPORTS HAVE BEEN RECEIVED)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33023.table b/definitions/bufr/tables/0/wmo/24/codetables/33023.table
new file mode 100644
index 0000000..896c816
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33023.table
@@ -0,0 +1,4 @@
+0 0 RELIABLE (LOCATION WAS MADE OVER TWO SATELLITE PASSES)
+1 1 LATEST KNOWN (NO LOCATION OVER THE CORRESPONDING PASS)
+2 2 DUBIOUS (LOCATION MADE OVER ONE PASS ONLY; A SECOND SOLUTION IS POSSIBLE IN 5 PER CENT OF THE CASES)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33024.table b/definitions/bufr/tables/0/wmo/24/codetables/33024.table
new file mode 100644
index 0000000..771e04b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33024.table
@@ -0,0 +1,10 @@
+0 0 RESERVED
+1 1 EXCELLENT - WITHIN 3 METRES
+2 2 GOOD - WITHIN 10 METRES
+3 3 FAIR - WITHIN 20 METRES
+4 4 POOR - MORE THAN 20 METRES
+5 5 EXCELLENT - WITHIN 10 FEET
+6 6 GOOD - WITHIN 30 FEET
+7 7 FAIR - WITHIN 60 FEET
+8 8 POOR - MORE THAN 60 FEET
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33025.table b/definitions/bufr/tables/0/wmo/24/codetables/33025.table
new file mode 100644
index 0000000..4da695a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33025.table
@@ -0,0 +1,5 @@
+0 0 TIME INTERPOLATED, LATITUDE AND LONGITUDE REPORTED
+1 1 TIME REPORTED, LATITUDE AND LONGITUDE INTERPOLATED
+2 2 TIME, LATITUDE, AND LONGITUDE INTERPOLATED
+3 3 TIME, LATITUDE, AND LONGITUDE REPORTED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33026.table b/definitions/bufr/tables/0/wmo/24/codetables/33026.table
new file mode 100644
index 0000000..08c6125
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33026.table
@@ -0,0 +1,17 @@
+0 0 NORMAL OPERATIONS - MEASUREMENT MODE
+1 1 NORMAL OPERATIONS - NON-MEASUREMENT MODE
+2 2 SMALL RH
+3 3 HUMIDITY ELEMENT IS WET
+4 4 HUMIDITY ELEMENT CONTAMINATED
+5 5 HEATER FAIL
+6 6 HEATER FAIL AND WET/CONTAMINATED HUMIDITY ELEMENT
+7 7 AT LEAST ONE OF THE INPUT PARAMETERS USED IN THE CALCULATION OF MIXING RATIO IS INVALID
+8 8 NUMERIC ERROR
+9 9 SENSOR NOT INSTALLED
+10 10 CALCULATED RH > 100%
+11 11 INPUT LASER POWER TOO LOW
+12 12 PROBE WV TEMPERATURE OUT OF RANGE
+13 13 PROBE WV PRESSURE OUT OF RANGE
+14 14 SPECTRAL LINE OUT OF RANGE
+15 15 NO LASER OUTPUT
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33027.table b/definitions/bufr/tables/0/wmo/24/codetables/33027.table
new file mode 100644
index 0000000..8997392
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33027.table
@@ -0,0 +1,6 @@
+0 0 RADIUS >= 1500 M
+1 1 500 M =< RADIUS <1500 M
+2 2 250 M =< RADIUS < 500 M
+3 3 RADIUS < 250 M
+4 4 <= 100 M
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33028.table b/definitions/bufr/tables/0/wmo/24/codetables/33028.table
new file mode 100644
index 0000000..84bd666
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33028.table
@@ -0,0 +1,5 @@
+1 1 NOMINAL
+2 2 DEGRADED BY SW ERROR; ANY ERROR REPORTED BY THE ALGORITHMS
+3 3 DEGRADED BY INSTRUMENT ERROR
+4 4 DEGRADED BY CORRUPTED /MISSING ADF
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33030.table b/definitions/bufr/tables/0/wmo/24/codetables/33030.table
new file mode 100644
index 0000000..c9e36c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33030.table
@@ -0,0 +1,7 @@
+1 1 DO NOT USE SCAN FOR PRODUCT GENERATION
+2 2 TIME SEQUENCE ERROR DETECTED WITH THIS SCAN
+3 3 DATA GAP PRECEDES THIS SCAN
+4 4 NO CALIBRATION
+5 5 NO EARTH LOCATION
+6 6 FIRST GOOD TIME FOLLOWING A CLOCK UPDATE
+7 7 INSTRUMENT STATUS CHANGED WITH THIS SCAN
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33031.table b/definitions/bufr/tables/0/wmo/24/codetables/33031.table
new file mode 100644
index 0000000..c11fd4a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33031.table
@@ -0,0 +1,21 @@
+1 1 TIME FIELD IS BAD BUT CAN PROBABLY BE INFERRED FROM THE PREVIOUS GOOD TIME
+2 2 TIME FIELD IS BAD AND CANNOT BE INFERRED FROM THE PREVIOUS GOOD TIME
+3 3 THIS RECORD STARTS A SEQUENCE THAT IS INCONSISTENT WITH PREVIOUS TIMES (I.E. THERE IS A TIME DISCONTINUITY). THIS MAY OR MAY NOT BE ASSOCIATED WITH A SPACECRAFT CLOCK UPDATE (SEE SCAN LINE STATUS FLAGS FOR ATOVS)
+4 4 START OF A SEQUENCE THAT APPARENTLY REPEATS SCAN TIMES THAT HAVE BEEN PREVIOUSLY ACCEPTED
+5 5 SCAN LINE WAS NOT CALIBRATED BECAUSE OF BAD TIME
+6 6 SCAN LINE WAS CALIBRATED USING FEWER THAN THE PREFERRED NUMBER OF SCAN LINES BECAUSE OF PROXIMITY TO START OR END OF DATA OR TO A DATA GAP
+7 7 SCAN LINE WAS NOT CALIBRATED BECAUSE OF BAD OR INSUFFICIENT PRT DATA
+8 8 SCAN LINE WAS CALIBRATED BUT WITH MARGINAL PRT DATA
+9 9 SOME UNCALIBRATED CHANNELS ON THIS SCAN
+10 10 UNCALIBRATED DUE TO INSTRUMENT MODE
+11 11 QUESTIONABLE CALIBRATION BECAUSE OF ANTENNA POSITION ERROR OF SPACE VIEW
+12 12 QUESTIONABLE CALIBRATION BECAUSE OF ANTENNA POSITION ERROR OF BLACK BODY
+13 13 NOT EARTH LOCATED BECAUSE OF BAD TIME
+14 14 EARTH LOCATION QUESTIONABLE BECAUSE OF QUESTIONABLE TIME CODE (SEE TIME PROBLEM CODE BITS)
+15 15 EARTH LOCATION QUESTIONABLE - ONLY MARGINAL AGREEMENT WITH REASONABLENESS CHECK
+16 16 EARTH LOCATION QUESTIONABLE - FAILS REASONABLENESS CHECK
+17 17 EARTH LOCATION QUESTIONABLE BECAUSE OF ANTENNA POSITION CHECK
+18 18 SCAN LINE CALIBRATION COLD BLACK BODY
+19 19 SCAN LINE CALIBRATION WARM BLACK BODY
+20 20 SCAN LINE CALIBRATION SPACE VIEW
+21 21 EARTH VIEW
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33032.table b/definitions/bufr/tables/0/wmo/24/codetables/33032.table
new file mode 100644
index 0000000..33307f5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33032.table
@@ -0,0 +1,7 @@
+1 1 NO GOOD BLACKBODY COUNTS FOR SCAN LINE
+2 2 NO GOOD SPACE VIEW COUNTS FOR THIS LINE
+3 3 NO GOOD PRTS FOR THIS LINE
+4 4 SOME BAD BLACKBODY VIEW COUNTS FOR THIS LINE
+5 5 SOME BAD SPACE VIEW COUNTS FOR THIS LINE
+6 6 SOME BAD PRT TEMPS ON THIS LINE
+7 7 QUALITY FOR THIS SCAN IS REDUCED
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33033.table b/definitions/bufr/tables/0/wmo/24/codetables/33033.table
new file mode 100644
index 0000000..6fd3205
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33033.table
@@ -0,0 +1,3 @@
+1 1 SET IF SECONDARY CALIBRATION USED
+22 22 SET IF ALL THE CHANNELS ARE MISSING
+23 23 SUSPECT
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33035.table b/definitions/bufr/tables/0/wmo/24/codetables/33035.table
new file mode 100644
index 0000000..01996ba
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33035.table
@@ -0,0 +1,10 @@
+0 0 AUTOMATIC QUALITY CONTROL PASSED AND NOT MANUALLY CHECKED
+1 1 AUTOMATIC QUALITY CONTROL PASSED AND MANUALLY CHECKED AND PASSED
+2 2 AUTOMATIC QUALITY CONTROL PASSED AND MANUALLY CHECKED AND DELETED
+3 3 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY NOT CHECKED
+4 4 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY CHECKED AND FAILED
+5 5 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY CHECKED AND RE-INSERTED
+6 6 AUTOMATIC QUALITY CONTROL FLAGGED DATA AS QUESTIONABLE AND NOT MANUALLY CHECKED
+7 7 AUTOMATIC QUALITY CONTROL FLAGGED DATA AS QUESTIONABLE AND MANUALLY CHECKED AND FAILED
+8 8 MANUALLY CHECKED AND FAILED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33037.table b/definitions/bufr/tables/0/wmo/24/codetables/33037.table
new file mode 100644
index 0000000..9f26652
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33037.table
@@ -0,0 +1,19 @@
+1 1 U DEPARTURE FROM GUESS
+2 2 V DEPARTURE FROM GUESS
+3 3 U AND V DEPARTURE FROM GUESS
+4 4 U ACCELERATION
+5 5 V ACCELERATION
+6 6 U AND V ACCELERATION
+7 7 POSSIBLE LAND FEATURE
+8 8 U ACCELERATION AND POSSIBLE LAND FEATURE
+9 9 V ACCELERATION AND POSSIBLE LAND FEATURE
+10 10 U AND V ACCELERATION AND POSSIBLE LAND FEATURE
+11 11 BAD WIND GUESS
+12 12 CORRELATION FAILURE
+13 13 SEARCH BOX OFF EDGE OF AREA
+14 14 TARGET BOX OFF EDGE OF AREA
+15 15 PIXEL BRIGHTNESS OUT OF BOUNDS (NOISY LINE)
+16 16 TARGET OUTSIDE OF LATITUDE/LONGITUDE BOX
+17 17 TARGET OUTSIDE OF PRESSURE MINIMUM/MAXIMUM
+18 18 AUTOEDITOR FLAGGED SLOW VECTOR
+19 19 AUTOEDITOR FLAGGED VECTORS
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33038.table b/definitions/bufr/tables/0/wmo/24/codetables/33038.table
new file mode 100644
index 0000000..3dc1192
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33038.table
@@ -0,0 +1,9 @@
+1 1 TOTAL ZENITH DELAY QUALITY IS CONSIDERED POOR
+2 2 GALILEO SATELLITES USED
+3 3 GLONASS SATELLITES USED
+4 4 GPS SATELLITES USED
+5 5 METEOROLOGICAL DATA APPLIED
+6 6 ATMOSPHERIC LOADING CORRECTION APPLIED
+7 7 OCEAN TIDE LOADING APPLIED
+8 8 CLIMATE QUALITY DATA PROCESSING
+9 9 NEAR-REAL TIME DATA PROCESSING
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33039.table b/definitions/bufr/tables/0/wmo/24/codetables/33039.table
new file mode 100644
index 0000000..50ff126
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33039.table
@@ -0,0 +1,9 @@
+1 1 NON-NOMINAL QUALITY
+2 2 OFFLINE PRODUCT
+3 3 ASCENDING OCCULTATION FLAG
+4 4 EXCESS PHASE PROCESSING NON-NOMINAL
+5 5 BENDING ANGLE PROCESSING NON-NOMINAL
+6 6 REFRACTIVITY PROCESSING NON-NOMINAL
+7 7 METEOROLOGICAL PROCESSING NON-NOMINAL
+14 14 BACKGROUND PROFILE NON-NOMINAL
+15 15 BACKGROUND (I.E. NOT RETRIEVED) PROFILE PRESENT
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33041.table b/definitions/bufr/tables/0/wmo/24/codetables/33041.table
new file mode 100644
index 0000000..8bbdba9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33041.table
@@ -0,0 +1,4 @@
+0 0 THE FOLLOWING VALUE IS THE TRUE VALUE
+1 1 THE FOLLOWING VALUE IS HIGHER THAN THE TRUE VALUE (THE MEASUREMENT HIT THE LOWER LIMIT OF THE INSTRUMENT)
+2 2 THE FOLLOWING VALUE IS LOWER THAN THE TRUE VALUE (THE MEASUREMENT HIT THE HIGHER LIMIT OF THE INSTRUMENT)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33042.table b/definitions/bufr/tables/0/wmo/24/codetables/33042.table
new file mode 100644
index 0000000..b75447a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33042.table
@@ -0,0 +1,5 @@
+0 0 EXCLUSIVE LOWER LIMIT (>)
+1 1 INCLUSIVE LOWER LIMIT (>=)
+2 2 EXCLUSIVE UPPER LIMIT (<)
+3 3 INCLUSIVE UPPER LIMIT (=<)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33043.table b/definitions/bufr/tables/0/wmo/24/codetables/33043.table
new file mode 100644
index 0000000..398d9ab
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33043.table
@@ -0,0 +1,4 @@
+1 1 SEA MDS.  NADIR ONLY SST RETRIEVAL USED 3.7 MICRON CHANNEL.  LAND MDS RESERVED
+2 2 SEA MDS.  DUAL VIEW SST RETRIEVAL USED 3.7 MICRON CHANNEL.  LAND MDS RESERVED
+3 3 NADIR VIEW CONTAINS DAY TIME DATA
+4 4 FORWARD VIEW CONTAINS DAY TIME DATA
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33044.table b/definitions/bufr/tables/0/wmo/24/codetables/33044.table
new file mode 100644
index 0000000..01746c7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33044.table
@@ -0,0 +1,14 @@
+1 1 INPUT DATA MEAN OUTSIDE NOMINAL RANGE FLAG
+2 2 INPUT DATA STANDARD DEVIATION OUTSIDE NOMINAL RANGE FLAG
+3 3 NUMBER OF INPUT DATA GAPS > THRESHOLD VALUE
+4 4 PERCENTAGE OF MISSING LINES > THRESHOLD VALUE
+5 5 DOPPLER CENTROID UNCERTAIN. CONFIDENCE MEASURE < SPECIFIC VALUE
+6 6 DOPPLER AMBIGUITY ESTIMATE UNCERTAIN. CONFIDENCE MEASURE < SPECIFIC VALUE
+7 7 OUTPUT DATA MEAN OUTSIDE NOMINAL RANGE FLAG
+8 8 OUTPUT DATA STANDARD DEVIATION OUTSIDE NOMINAL RANGE FLAG
+9 9 CHIRP RECONSTRUCTION FAILED OR IS OF LOW QUALITY FLAG
+10 10 DATA SET MISSING
+11 11 INVALID DOWNLINK PARAMETERS
+12 12 AZIMUTH CUT-OFF ITERATION COUNT. THE AZIMUTH CUT-OFF FIT DID NOT CONVERGE WITHIN A MINIMUM NUMBER OF ITERATIONS
+13 13 AZIMUTH CUT-OFF FIT DID NOT CONVERGE WITHIN A MINIMUM NUMBER OF ITERATIONS
+14 14 PHASE INFORMATION CONFIDENCE MEASURE. THE IMAGINARY SPECTRAL PEAK IS LESS THAN A MINIMUM THRESHOLD, OR THE ZERO LAG SHIFT IS GREATER THAN A MINIMUM THRESHOLD
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33047.table b/definitions/bufr/tables/0/wmo/24/codetables/33047.table
new file mode 100644
index 0000000..f69b56e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33047.table
@@ -0,0 +1,27 @@
+1 1 ERROR DETECTED AND ATTEMPTS TO RECOVER MADE
+2 2 ANOMALY IN ON-BOARD DATA HANDLING (OBDH) VALUE DETECTED
+3 3 ANOMALY IN ULTRA STABLE OSCILLATOR PROCESSING (USOP) VALUE DETECTED
+4 4 ERRORS DETECTED BY ON-BOARD COMPUTER
+5 5 AUTOMATIC GAIN CONTROL (AGC) OUT OF RANGE
+6 6 RECEPTION (RX) DELAY FAULT.  RX DISTANCE OUT OF RANGE
+7 7 WAVE FORM SAMPLES FAULT IDENTIFIER. ERROR
+8 8 S BAND ANOMALY/ERROR DETECTED
+12 12 BRIGHTNESS TEMPERATURE (CHANNEL 1) OUT OF RANGE
+13 13 BRIGHTNESS TEMPERATURE (CHANNEL 2) OUT OF RANGE
+14 14 RESERVED
+15 15 KU BAND OCEAN RETRACKING ERROR
+16 16 S BAND OCEAN RETRACKING ERROR
+17 17 KU BAND ICE 1 RETRACKING ERROR
+18 18 S BAND ICE 1 RETRACKING ERROR
+19 19 KU BAND ICE 2 RETRACKING ERROR
+20 20 S BAND ICE 2 RETRACKING ERROR
+21 21 KU BAND SEA ICE RETRACKING ERROR
+22 22 ARITHMETIC FAULT ERROR
+23 23 METEO DATA STATE. NO MAP
+24 24 METEO DATA STATE. 1 MAP
+25 25 METEO DATA STATE. 2 MAPS DEGRADED
+26 26 METEO DATA STATE. 2 MAPS NOMINAL
+27 27 ORBIT PROPAGATOR STATUS FOR PROPAGATION MODE, SEVERAL ERRORS
+28 28 ORBIT PROPAGATOR STATUS FOR PROPAGATION MODE, WARNING DETECTED
+29 29 ORBIT PROPAGATOR STATUS FOR INITIALIZATION MODE, SEVERAL ERRORS
+30 30 ORBIT PROPAGATOR STATUS FOR INITIALIZATION MODE, WARNING DETECTED
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33048.table b/definitions/bufr/tables/0/wmo/24/codetables/33048.table
new file mode 100644
index 0000000..312ba40
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33048.table
@@ -0,0 +1,4 @@
+0 0 INVERSION SUCCESSFUL
+1 1 INVERSION NOT SUCCESSFUL
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33049.table b/definitions/bufr/tables/0/wmo/24/codetables/33049.table
new file mode 100644
index 0000000..bdde061
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33049.table
@@ -0,0 +1,4 @@
+0 0 EXTERNAL WIND DIRECTION USED DURING INVERSION
+1 1 EXTERNAL WIND DIRECTION NOT USED DURING INVERSION
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33050.table b/definitions/bufr/tables/0/wmo/24/codetables/33050.table
new file mode 100644
index 0000000..ee7bb6d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33050.table
@@ -0,0 +1,9 @@
+0 0 UNQUALIFIED
+1 1 CORRECT VALUE (ALL CHECKS PASSED)
+2 2 PROBABLY GOOD BUT VALUE INCONSISTENT WITH STATISTICS (DIFFER FROM CLIMATOLOGY)
+3 3 PROBABLY BAD (SPIKE, GRADIENT, ETC., IF OTHER TESTS PASSED)
+4 4 BAD VALUE, IMPOSSIBLE VALUE (OUT OF SCALE, VERTICAL INSTABILITY, CONSTANT PROFILE)
+5 5 VALUE MODIFIED DURING QUALITY CONTROL
+8 8 INTERPOLATED VALUE
+9 9 GOOD FOR OPERATIONAL USE; CAUTION; CHECK LITERATURE FOR OTHER USES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33060.table b/definitions/bufr/tables/0/wmo/24/codetables/33060.table
new file mode 100644
index 0000000..7414302
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33060.table
@@ -0,0 +1,4 @@
+0 0 GOOD
+1 1 BAD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33070.table b/definitions/bufr/tables/0/wmo/24/codetables/33070.table
new file mode 100644
index 0000000..8a0467b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33070.table
@@ -0,0 +1,14 @@
+0 0 GOOD RETRIEVAL
+1 1 BAD AEROSOL INFORMATION FLAG OR NOAA-16 RADIANCE ANOMALY
+2 2 SOLAR ZENITH ANGLE GREATER THAN 84 DEGREES
+3 3 380 NM RESIDUE GREATER THAN LIMIT
+4 4 OZONE INCONSISTENCY
+5 5 DIFFERENCE BETWEEN PROFILE OZONE AND STEP 3 TOTAL OZONE EXCEEDS THRESHOLD (SET TO 25 DU)
+6 6 STEP 1 OZONE ITERATION DID NOT CONVERGE
+7 7 ANY CHANNEL RESIDUE GREATER THAN 16 OR BAD RADIANCE
+8 8 INSUFFICIENT PIXELS - NOT PROCESSED
+9 9 FIRST GUESS GOOD - OZONE FORECAST DATA USED
+10 10 HIGH CLOUD IN PIXEL - NOT PROCESSED
+11 11 SUCCESSFUL OZONE RETRIEVAL
+12 12 UNSUCCESSFUL OZONE RETRIEVAL
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33071.table b/definitions/bufr/tables/0/wmo/24/codetables/33071.table
new file mode 100644
index 0000000..8c9d4de
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33071.table
@@ -0,0 +1,10 @@
+0 0 GOOD RETRIEVAL
+1 1 SOLAR ZENITH ANGLE GREATER THAN 84 DEGREES
+2 2 DIFFERENCE BETWEEN STEP 3 AND PROFILE TOTAL OZONE GREATER THAN LIMIT (25 DU)
+3 3 AVERAGE FINAL RESIDUE FOR WAVELENGTHS USED IN RETRIEVAL GREATER THAN THRESHOLD
+4 4 FINAL RESIDUE GREATER THAN 3 TIMES A PRIORI ERROR
+5 5 DIFFERENCE BETWEEN RETRIEVED AND A PRIORI GREATER THAN 3 TIMES A PRIORI ERROR
+6 6 NON-CONVERGENT SOLUTION
+7 7 UPPER LEVEL PROFILE ANOMALY OR STRAY LIGHT ANOMALY
+8 8 INITIAL RESIDUE GREATER THAN 18.0 N-VALUE UNITS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33072.table b/definitions/bufr/tables/0/wmo/24/codetables/33072.table
new file mode 100644
index 0000000..fcc7f09
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33072.table
@@ -0,0 +1,18 @@
+0 0 GOOD RETRIEVAL
+1 1 REFLECTIVITY OUT OF RANGE
+2 2 LARGER PIXELS (NUMBER OF CROSS-TRACK PIXELS LESS THAN 32) OR BACKWARD SCANS ERROR
+3 3 SOLAR ZENITH ANGLE GREATER THAN 88 DEGREES
+4 4 LATITUDE/LONGITUDE OUT OF RANGE
+5 5 VIEWING ZENITH ANGLE OR SOLAR ZENITH ANGLE OUT OF RANGE
+6 6 STEP-ONE PROCESS FAILED IN GENERAL
+7 7 FIRST GUESS OZONE OUT OF RANGE
+8 8 TOO MANY ITERATIONS (EXCEED 8)
+9 9 STEP-ONE RESIDUE CALCULATION FAILED
+10 10 STEP-TWO PROCESS FAILED IN GENERAL
+11 11 FIRST GUESS OZONE PROFILE OUT OF RANGE
+12 12 STEP-TWO OZONE VALUE OUT OF RANGE
+13 13 STEP-TWO RESIDUE CALCULATION FAILED
+14 14 STEP-THREE PROCESS FAILED IN GENERAL
+15 15 POLARIZATION CORRECTION ACCURACY ALERT
+16 16 RADIANCE OR IRRADIANCE LESS OR EQUAL TO ZERO
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33075.table b/definitions/bufr/tables/0/wmo/24/codetables/33075.table
new file mode 100644
index 0000000..23edae6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33075.table
@@ -0,0 +1,5 @@
+1 1 GAP IN RAW DATA RECORD (RDR) DATA DETECTED (I.E., MISSING SCAN(S) PRECEDING THE CURRENT SCAN)
+2 2 RECORDED TIME IS NOT IN SEQUENCE (I.E., THE SCAN START TIME IS OUT OF SEQUENCE)
+3 3 LAMBDA MONITORED CALCULATION CANNOT BE UPDATED
+4 4 THE MEASURED TEMPERATURES OF ANY INSTRUMENT COMPONENTS (E.G., BEAM-SPLITTER, SCAN MIRROR, SCAN BAFFLE) ARE OUTSIDE THE ALLOWABLE RANGES
+5 5 AT LEAST ONE OF THE MONITORED INSTRUMENT TEMPERATURES HAS DRIFTED MORE THAN A SPECIFIED TOLERANCE VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33076.table b/definitions/bufr/tables/0/wmo/24/codetables/33076.table
new file mode 100644
index 0000000..7100c4a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33076.table
@@ -0,0 +1,2 @@
+1 1 LUNAR INTRUSION ON FIRST DEEP SPACE VIEW
+2 2 LUNAR INTRUSION ON SECOND DEEP SPACE VIEW
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33077.table b/definitions/bufr/tables/0/wmo/24/codetables/33077.table
new file mode 100644
index 0000000..742c83c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33077.table
@@ -0,0 +1,12 @@
+1 1 DEGRADED SDR* QUALITY
+2 2 INVALID SDR* QUALITY
+3 3 INVALID SDR* GEOLOCATION INFORMATION
+4 4 DEGRADED RADIOMETRIC CALIBRATION
+5 5 INVALID RADIOMETRIC CALIBRATION
+6 6 DEGRADED SPECTRAL CALIBRATION
+7 7 INVALID SPECTRAL CALIBRATION
+8 8 FRINGE COUNT ERROR DETECTED AND CORRECTED
+9 9 DAY/NIGHT INDICATOR
+10 10 INVALID RDR** DATA
+11 11 SIGNIFICANT FRINGE COUNT ERROR DETECTED
+12 12 BIT TRIM FAILED
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33078.table b/definitions/bufr/tables/0/wmo/24/codetables/33078.table
new file mode 100644
index 0000000..f3a2180
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33078.table
@@ -0,0 +1,5 @@
+0 0 NOMINAL - ALTITUDE AND EPHEMERIS DATA AVAILABLE
+1 1 MISSING AT MOST A SMALL GAP OF ALTITUDE AND EPHEMERIS DATA
+2 2 MISSING MORE THAN A SMALL GAP OF ALTITUDE AND EPHEMERIS DATA, BUT NO MORE THAN A GRANULE BOUNDARY
+3 3 MISSING MORE THAN A GRANULE BOUNDARY OF ALTITUDE AND EPHEMERIS DATA
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33079.table b/definitions/bufr/tables/0/wmo/24/codetables/33079.table
new file mode 100644
index 0000000..0875143
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33079.table
@@ -0,0 +1,10 @@
+6 6 THE NO. 1-NO. 7 HEALTH CHECKS FAILED
+7 7 THE NO. 8-NO. 15 HEALTH CHECKS FAILED
+8 8 THE NO. 16-NO. 23 HEALTH CHECKS FAILED
+9 9 THE NO. 24-NO. 31 HEALTH CHECKS FAILED
+10 10 THE NO. 32-NO. 39 HEALTH CHECKS FAILED
+11 11 THE NO. 40-NO. 47 HEALTH CHECKS FAILED
+12 12 THE NO. 48-NO. 55 HEALTH CHECKS FAILED
+13 13 THE NO. 56-NO. 63 HEALTH CHECKS FAILED
+14 14 THE NO. 64-NO. 70 HEALTH CHECKS FAILED
+15 15 QUADRATIC CORRECTION APPLIED TO THE RADIOMETRIC TRANSFER FUNCTION FOR NON-LINEARITY CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33080.table b/definitions/bufr/tables/0/wmo/24/codetables/33080.table
new file mode 100644
index 0000000..a39dd47
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33080.table
@@ -0,0 +1,13 @@
+7 7 DIVIDE-BY-ZERO CONDITION OR COMPUTATION LOOP FAILED TO CONVERGE IN THE K/KA AND V (KAV) BAND PRT
+8 8 DIVIDE-BY-ZERO CONDITION OR COMPUTATION LOOP FAILED TO CONVERGE IN THE WG BAND PRT
+9 9 DIVIDE-BY-ZERO CONDITION OR COMPUTATION LOOP FAILED TO CONVERGE IN THE K/KA, V, W, G BAND RECEIVER SHELF PRT K TEMPERATURE COMPUTATION
+10 10 OUT OF RANGE CONDITION FOR THE K/KA AND V BAND PRT
+11 11 OUT OF RANGE CONDITION FOR THE WG BAND PRT
+12 12 KAV PRT TEMPERATURE INCONSISTENCY
+13 13 WG PRT TEMPERATURE INCONSISTENCY
+14 14 TIME SEQUENCE ERROR
+15 15 DATA GAP - MISSING SCAN(S) PRECEDING THE CURRENT SCAN
+16 16 KAV PRT SUFFICIENCY - INSUFFICIENT KAV PRT DATA ARE AVAILABLE
+17 17 WG PRT SUFFICIENCY - INSUFFICIENT WG PRT DATA ARE AVAILABLE
+18 18 SPACE VIEW ANTENNA POSITION ERROR
+19 19 BLACKBODY ANTENNA POSITION ERROR
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33081.table b/definitions/bufr/tables/0/wmo/24/codetables/33081.table
new file mode 100644
index 0000000..f8759e0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33081.table
@@ -0,0 +1,9 @@
+3 3 MOON IN SPACE VIEW
+4 4 GAIN ERROR - THE LOWEST BLACKBODY COUNT IS SMALLER THAN OR EQUAL TO THE HIGHEST SPACE VIEW COUNT IN A SCAN
+5 5 CALIBRATION WITH FEWER THAN PREFERRED SAMPLES
+6 6 SPACE VIEW DATA SUFFICIENCY CHECK - INSUFFICIENT SPACE VIEW SAMPLES ARE AVAILABLE
+7 7 BLACKBODY VIEW DATA SUFFICIENCY CHECK - INSUFFICIENT BLACKBODY VIEW SAMPLES ARE AVAILABLE
+8 8 OUT OF RANGE CONDITION FOR THE SPACE VIEW
+9 9 OUT OF RANGE CONDITION FOR THE BLACKBODY VIEW
+10 10 SPACE VIEW INCONSISTENCY
+11 11 BLACKBODY VIEW INCONSISTENCY
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33082.table b/definitions/bufr/tables/0/wmo/24/codetables/33082.table
new file mode 100644
index 0000000..4671574
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33082.table
@@ -0,0 +1,10 @@
+6 6 WITHIN SOUTH ATLANTIC ANOMALY
+7 7 INVALID INPUT DATA (INDICATES THAT ANY OF THE SPACECRAFT EPHEMERIS OR ATTITUDE DATA ARE INVALID)
+8 8 BAD POINTING (INDICATES THAT THE SENSOR LOS DOES NOT INTERSECT THE GEOID, IS NEAR THE LIMB, HAS INVALID SENSOR ANGLES OR OTHER SIMILAR CONDITION)
+9 9 BAD TERRAIN (INDICATES THAT THE ALGORITHM COULD NOT OBTAIN A VALID TERRAIN VALUE)
+10 10 INVALID SOLAR ANGLES
+11 11 MISSING AT MOST A SMALL GAP OF ALTITUDE AND EPHEMERIS DATA
+12 12 MISSING MORE THAN A SMALL GAP OF ALTITUDE AND EPHEMERIS DATA, BUT NO MORE THAN A GRANULE BOUNDARY
+13 13 MISSING MORE THAN A GRANULE BOUNDARY OF ALTITUDE AND EPHEMERIS DATA
+14 14 THE NUMBER OF ENCODER PULSE VALUES PER DELTA TIME IS NOT AS EXPECTED
+15 15 SOLAR ECLIPSE DURING EARTH VIEW SCAN
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33083.table b/definitions/bufr/tables/0/wmo/24/codetables/33083.table
new file mode 100644
index 0000000..6fe63f6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33083.table
@@ -0,0 +1,10 @@
+6 6 PIXEL IS AFFECTED BY RADIO-FREQUENCY INTERFERENCE
+7 7 POOR CALIBRATION QUALITY DUE TO BAD SPACE VIEW OFFSETS, OBC * VIEW OFFSETS, ETC. OR USE OF A PREVIOUS CALIBRATION VIEW
+8 8 SATURATED PIXEL
+9 9 MISSING DATA -DATA REQUIRED FOR CALIBRATION PROCESSING ARE NOT AVAILABLE FOR PROCESSING
+10 10 CALIBRATED PIXEL RADIANCE OUT OF RANGE
+11 11 CALIBRATED PIXEL REFLECTANCE OR EBBT OUT OF RANGE
+12 12 THE MOON HAS CORRUPTED THE SPACE VIEW
+13 13 SCAN DATA IS NOT PRESENT (NO VALID DATA)
+14 14 QUALITY FOR THIS SCAN-LINE IS REDUCED. THE VALUE IS DETERMINED BY THE COMBINED NUMBER OF STEPS REQUIRED TO FIND A REPLACEMENT FOR THERMISTOR OR CALIBRATION SOURCE DATA
+15 15 BAD DETECTOR
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33084.table b/definitions/bufr/tables/0/wmo/24/codetables/33084.table
new file mode 100644
index 0000000..accb209
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33084.table
@@ -0,0 +1,10 @@
+6 6 BULK SST OUTSIDE OF VALIDATION RANGE
+7 7 SKIN SST OUTSIDE OF VALIDATION RANGE
+8 8 SENSOR ZENITH ANGLE > 40 DEGREES (PIXEL IS NOT WITHIN 40 DEGREES OF NADIR AND THEREFORE IS NOT OF HIGH QUALITY)
+9 9 DEGRADATION - HORIZONTAL CELL SIZE (HCS) > 1.3 KM (HCS > 1.3 KM, SWATH WIDTH > 1 700 KM, SENSOR ZENITH ANGLE > 50.3 DEGREES)
+10 10 EXCLUSION: NO OCEAN IN PIXEL
+11 11 DEGRADATION: AEROSOL OPTICAL THICKNESS (AOT) > 0.6 (AOT IN HORIZONTAL CELL > 0.6 ON THE SLANT PATH (AOT @550 NM))
+12 12 EXCLUSION: AOT > 1.0 (AOT IN HORIZONTAL CELL > 1.0 ON THE SLANT PATH (AOT @550 NM))
+13 13 SUN GLINT PRESENT IN PIXEL
+14 14 ICE CONCENTRATION THRESHOLD EXCEEDED (SST NOT RETRIEVED DUE TO ICE CONCENTRATION EXCEEDING THRESHOLD IN SYSTEM SPEC)
+15 15 THIN CIRRUS DETECTED IN PIXEL
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33085.table b/definitions/bufr/tables/0/wmo/24/codetables/33085.table
new file mode 100644
index 0000000..7962ec5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33085.table
@@ -0,0 +1,14 @@
+4 4 ANGSTROM EXPONENT IS OUTSIDE OF THE SYSTEM SPECIFICATION RANGE
+5 5 EXCLUDED, ANGSTROM EXPONENT FOR AOT* AT 550 NM < 0.15
+6 6 BRIGHT SURFACE IN CELL (IF OVER LAND), OR SHALLOW OR TURBID WATER IN CELL (IF OVER OCEAN)
+7 7 LOW SUN, EXCLUDED, SOLAR ZENITH ANGLE > 80 DEGREES
+8 8 LOW SUN, DEGRADED, 65 DEGREES < SOLAR ZENITH ANGLE <= 80 DEGREES
+9 9 FIRE DETECTED IN CELL
+10 10 SNOW/ICE IN CELL
+11 11 CLOUD SHADOW IN CELL
+12 12 SUN GLINT IN CELL
+13 13 BAD SDR** DATA PRESENT IN HORIZONTAL CELL (QUALITY OF AOT/APSP*** DEGRADED OR AOT/APSP NOT RETRIEVED DUE TO BAD SDR DATA IN HORIZONTAL CELL)
+14 14 CIRRUS CONTAMINATION IN CELL
+15 15 CLOUD ADJACENT TO CELL
+16 16 CLOUD CONTAMINATION IN CELL
+17 17 AOT IS OUTSIDE OF THE SYSTEM SPECIFICATION RANGE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33086.table b/definitions/bufr/tables/0/wmo/24/codetables/33086.table
new file mode 100644
index 0000000..b7cda32
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33086.table
@@ -0,0 +1,5 @@
+0 0 NOT RETRIEVED
+1 1 EXCLUDED
+2 2 DEGRADED
+3 3 HIGH QUALITY
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33087.table b/definitions/bufr/tables/0/wmo/24/codetables/33087.table
new file mode 100644
index 0000000..f3000e2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33087.table
@@ -0,0 +1,10 @@
+0 0 LESS THAN OR EQUAL TO 10%
+1 1 GREATER THAN 10% BUT LESS THAN OR EQUAL TO 20%
+2 2 GREATER THAN 20% BUT LESS THAN OR EQUAL TO 30%
+3 3 GREATER THAN 30% BUT LESS THAN OR EQUAL TO 40%
+4 4 GREATER THAN 40% BUT LESS THAN OR EQUAL TO 50%
+5 5 GREATER THAN 50% BUT LESS THAN OR EQUAL TO 60%
+6 6 GREATER THAN 60% BUT LESS THAN OR EQUAL TO 70%
+7 7 GREATER THAN 70% BUT LESS THAN OR EQUAL TO 80%
+8 8 GREATER THAN 80%
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/33088.table b/definitions/bufr/tables/0/wmo/24/codetables/33088.table
new file mode 100644
index 0000000..8f7b539
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/33088.table
@@ -0,0 +1,12 @@
+6 6 SURFACE REFLECTIVITY OUT OF RANGE
+7 7 RESIDUAL TOO LARGE
+8 8 AEROSOL INDEX LIMIT EXCEEDED
+9 9 SOLAR ECLIPSE PRESENT (ALL OR PART OF THE IFOV* IS AFFECTED BY A SOLAR ECLIPSE, UMBRA OR PENUMBRA VIEWING)
+10 10 SUN GLINT PRESENT WITHIN IFOV
+11 11 SNOW OR ICE SURFACE IS WITHIN THE IFOV
+12 12 SOLAR ZENITH ANGLE IN EXCLUDED (NIGHT) CONDITION (SOLAR ZENITH ANGLE >= 88 DEGREES)
+13 13 SOLAR ZENITH ANGLE IN DEGRADED CONDITION (80 DEGREES <= SOLAR ZENITH ANGLE < 88 DEGREES)
+14 14 SO2 INDEX > 6 DU (DEGRADED CONDITION)
+15 15 RESIDUES ARE NOT CONSISTENT (INDICATES WHETHER THE RESIDUES FROM THE 22 WAVELENGTHS ARE CONSISTENT)
+16 16 O3 TRIPLET SELECTION IS NOT CONSISTENT WITHIN RETRIEVAL (OZONE TRIPLET CONSISTENCY)
+17 17 INPUT DATA QUALITY IS NOT GOOD
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/35000.table b/definitions/bufr/tables/0/wmo/24/codetables/35000.table
new file mode 100644
index 0000000..8c57023
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/35000.table
@@ -0,0 +1 @@
+1023 1023 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/35001.table b/definitions/bufr/tables/0/wmo/24/codetables/35001.table
new file mode 100644
index 0000000..bba0c81
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/35001.table
@@ -0,0 +1,4 @@
+0 0 REAL TIME
+1 1 NEAR-REAL TIME
+2 2 NON-REAL TIME
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/35030.table b/definitions/bufr/tables/0/wmo/24/codetables/35030.table
new file mode 100644
index 0000000..5b83f8b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/35030.table
@@ -0,0 +1,10 @@
+0 0 NO DISCREPANCIES
+1 1 NON-COMPLIANCE WITH STANDARD AND RECOMMENDED PRACTICES AND PROCEDURES INCLUDING THOSE OF MONITORING
+2 2 CATALOGUES OF METEOROLOGICAL BULLETINS NOT UPDATED IN A TIMELY MANNER
+3 3 INCORRECT ROUTING DIRECTORIES
+4 4 LACK OF FLEXIBILITY IN THE ROUTING ARRANGEMENTS
+5 5 DEFICIENCIES IN THE OPERATION OF GTS CENTRES AND CIRCUITS
+6 6 LOSS OF DATA OR DELAYS IN RELAYING DATA ON THE GTS
+7 7 ROUTING OF DATA DIFFERENT FROM THE ROUTING PROVIDED IN THE PLAN
+8 8 VARIOUS MALPRACTICES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/35031.table b/definitions/bufr/tables/0/wmo/24/codetables/35031.table
new file mode 100644
index 0000000..bdd705d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/35031.table
@@ -0,0 +1,20 @@
+1 1 SUFFICIENT AND ALL OF ACCEPTABLE QUALITY
+2 2 SUFFICIENT BUT PARTLY OF ACCEPTABLE QUALITY
+3 3 INSUFFICIENT BUT ALL OF ACCEPTABLE QUALITY
+4 4 INSUFFICIENT AND OF UNACCEPTABLE QUALITY
+5 5 SOME MESSAGES NOT COMPLETE
+6 6 SUSPECT OR WRONGLY CODED GROUPS COULD NOT BE INTERPRETED CONFIDENTLY
+7 7 GROSS CODING ERRORS
+8 8 TRANSMISSION SEQUENTIAL ORDER NOT OBSERVED
+9 9 REPORT COMPLETELY GARBLED AND THUS DISCARDED
+10 10 DEFICIENCIES IDENTIFIED AND RECTIFIED
+11 11 DEFICIENCIES IDENTIFIED BUT NOT RECTIFIED
+12 12 DEFICIENCIES NOT IDENTIFIED
+13 13 MEASURING ERRORS
+14 14 MUTUAL INCONSISTENCY
+15 15 TEMPORAL INCONSISTENCY
+16 16 FORECAST ERROR
+17 17 BIAS
+18 18 IMPROVE SYSTEM OF QUALITY CONTROL
+19 19 EXPAND TRAINING PROGRAMMES
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/35032.table b/definitions/bufr/tables/0/wmo/24/codetables/35032.table
new file mode 100644
index 0000000..7f53a05
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/35032.table
@@ -0,0 +1,10 @@
+1 1 DATA GROUPS MISSING DUE TO RADIO FADING
+2 2 DATA GROUPS MISSING DUE TO OUTAGE OF CENTRE
+3 3 DATA GROUPS MISSING DUE TO OUTAGE OF CIRCUIT
+4 4 NON-IMPLEMENTATION OR MAINTENANCE OF REQUIRED RBSN DENSITY
+5 5 SHORTAGE OF QUALIFIED STAFF TO MAN STATIONS
+6 6 LACK OF CONSUMABLES
+7 7 INSTRUMENT FAILURE
+8 8 NON-ADHERENCE TO TELECOMMUNICATION PROCEDURES
+9 9 SOME OBSERVING PROGRAMMES CEASED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/35033.table b/definitions/bufr/tables/0/wmo/24/codetables/35033.table
new file mode 100644
index 0000000..86e9592
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/35033.table
@@ -0,0 +1,12 @@
+1 1 NO DEFICIENCY
+2 2 OBSERVATIONS NOT MADE REGULARLY
+3 3 OBSERVATIONS NOT MADE AT RIGHT TIME
+4 4 OBSERVATIONS MADE BUT NOT DISSEMINATED
+5 5 OBSERVATIONS MADE AND SENT TO INCORRECT USERS
+6 6 COLLECTION NOT RECEIVED
+7 7 COLLECTION TRANSMITTED LATE
+8 8 COLLECTION NOT TRANSMITTED
+9 9 DIFFICULTIES IN HF PROPAGATION AND SELECTION OF SUITABLE FREQUENCY
+10 10 DIFFICULTIES IN MAINTENANCE OF COMMUNICATION EQUIPMENT AT REMOTE STATIONS
+11 11 NO ALTERNATIVE ARRANGEMENT FOR ROUTING METEOROLOGICAL OBSERVATION
+123 123 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/35034.table b/definitions/bufr/tables/0/wmo/24/codetables/35034.table
new file mode 100644
index 0000000..7297664
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/35034.table
@@ -0,0 +1,7 @@
+1 1 SLIGHT IMPROVEMENT
+2 2 SIGNIFICANT IMPROVEMENT
+3 3 MOST SIGNIFICANT IMPROVEMENT
+4 4 STEADY
+5 5 DECREASING
+6 6 EFFORTS REQUIRED TO IMPROVE NIGHT-TIME OBSERVATIONS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/35035.table b/definitions/bufr/tables/0/wmo/24/codetables/35035.table
new file mode 100644
index 0000000..23c166b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/35035.table
@@ -0,0 +1,16 @@
+0 0 RESERVED
+1 1 BALLOON BURST
+2 2 BALLOON FORCED DOWN BY ICING
+3 3 LEAKING OR FLOATING BALLOON
+4 4 WEAK OR FADING SIGNAL
+5 5 BATTERY FAILURE
+6 6 GROUND EQUIPMENT FAILURE
+7 7 SIGNAL INTERFERENCE
+8 8 RADIOSONDE FAILURE
+9 9 EXCESSIVE MISSING DATA FRAMES
+10 10 RESERVED
+11 11 EXCESSIVE MISSING TEMPERATURE
+12 12 EXCESSIVE MISSING PRESSURE
+13 13 USER TERMINATED
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/40005.table b/definitions/bufr/tables/0/wmo/24/codetables/40005.table
new file mode 100644
index 0000000..045a4f1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/40005.table
@@ -0,0 +1,5 @@
+1 1 SOIL MOISTURE BETWEEN -20% AND 0%
+2 2 SOIL MOISTURE BETWEEN 100% AND 120%
+3 3 CORRECTION OF WET BACKSCATTER REFERENCE
+4 4 CORRECTION OF DRY BACKSCATTER REFERENCE
+5 5 CORRECTION OF VOLUME SCATTERING IN SAND
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/40006.table b/definitions/bufr/tables/0/wmo/24/codetables/40006.table
new file mode 100644
index 0000000..d53382e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/40006.table
@@ -0,0 +1,8 @@
+1 1 NOT SOIL
+2 2 SENSITIVITY TO SOIL MOISTURE BELOW LIMIT
+3 3 AZIMUTHAL NOISE ABOVE LIMIT
+4 4 BACKSCATTER FORE-AFT BEAM OUT OF RANGE
+5 5 SLOPE MID-FORE BEAM OUT OF RANGE
+6 6 SLOPE MID-AFT BEAM OUT OF RANGE
+7 7 SOIL MOISTURE BELOW -20%
+8 8 SOIL MOISTURE ABOVE 120%
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/40011.table b/definitions/bufr/tables/0/wmo/24/codetables/40011.table
new file mode 100644
index 0000000..ddc7e86
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/40011.table
@@ -0,0 +1,4 @@
+1 1 MEAN SEA-SURFACE (MSS) INTERPOLATION FLAG
+2 2 OCEAN TIDE SOLUTION 1 INTERPOLATION FLAG (0 = 4 POINTS OVER OCEAN, 1 = LESS THAN 4 POINTS)
+3 3 OCEAN TIDE SOLUTION 2 INTERPOLATION FLAG (0 = 4 POINTS OVER OCEAN, 1 = LESS THAN 4 POINTS)
+4 4 METEOROLOGICAL DATA INTERPOLATION FLAG (0 = 4 POINTS OVER OCEAN, 1 = LESS THAN 4 POINTS)
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/40012.table b/definitions/bufr/tables/0/wmo/24/codetables/40012.table
new file mode 100644
index 0000000..d8ce14d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/40012.table
@@ -0,0 +1,3 @@
+1 1 18.7 GHZ BRIGHTNESS TEMPERATURE
+2 2 23.8 GHZ BRIGHTNESS TEMPERATURE
+3 3 34 GHZ BRIGHTNESS TEMPERATURE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/40013.table b/definitions/bufr/tables/0/wmo/24/codetables/40013.table
new file mode 100644
index 0000000..79b991a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/40013.table
@@ -0,0 +1,5 @@
+0 0 INTERPOLATION WITH NO GAP BETWEEN JMR* DATA
+1 1 INTERPOLATION WITH GAPS BETWEEN JMR* DATA
+2 2 EXTRAPOLATION OF JMR* DATA
+3 3 FAILURE OF EXTRAPOLATION AND INTERPOLATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/40020.table b/definitions/bufr/tables/0/wmo/24/codetables/40020.table
new file mode 100644
index 0000000..fa1d1f5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/40020.table
@@ -0,0 +1,16 @@
+1 1 NZPD AND COMPLEX CALIBRATION ERROR
+2 2 BAND 3 AFFECTED BY SPIKE
+3 3 BAND 3 AFFECTED BY SATURATION
+4 4 BAND 2 AFFECTED BY SPIKE
+5 5 BAND 1 AFFECTED BY SPIKE
+6 6 OVERFLOW/UNDER FLOW
+7 7 ON-BOARD PROCESSING ERROR
+8 8 SPECTRAL CALIBRATION ERROR
+9 9 RADIOMETRIC CALIBRATION ERROR
+10 10 MISSING AVHRR DATA
+11 11 MISSING IIS DATA
+12 12 MISSING SOUNDER DATA
+13 13 GQISFLAGQUAL SUMMARY FLAG FOR ALL BANDS
+14 14 ON-GROUND PROCESSING ERROR
+15 15 INTER-CALIBRATION ERROR IASI/AVHRR
+16 16 SPARE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/40023.table b/definitions/bufr/tables/0/wmo/24/codetables/40023.table
new file mode 100644
index 0000000..2e4cbfb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/40023.table
@@ -0,0 +1,4 @@
+1 1 BAND SEQUENCE (0 = 3KU_1C_3KU, 1 = 2KU_1C_2KU)
+2 2 C BAND FREQUENCY (0 = 320 MHZ, 1 = 100 MHZ)
+3 3 C BAND STATUS (0 = ON, 1 = OFF)
+4 4 KU BAND STATUS (0 = ON, 1 = OFF)
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/40024.table b/definitions/bufr/tables/0/wmo/24/codetables/40024.table
new file mode 100644
index 0000000..c8421e5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/40024.table
@@ -0,0 +1,5 @@
+0 0 2 MAPS AVAILABLE (6 HOURS APART)
+1 1 2 MAPS AVAILABLE (> 6 HOURS APART)
+2 2 1 MAP AVAILABLE; DATA EXTRAPOLATED
+3 3 NO MAPS USED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/40025.table b/definitions/bufr/tables/0/wmo/24/codetables/40025.table
new file mode 100644
index 0000000..7414302
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/40025.table
@@ -0,0 +1,4 @@
+0 0 GOOD
+1 1 BAD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/4059.table b/definitions/bufr/tables/0/wmo/24/codetables/4059.table
new file mode 100644
index 0000000..91fc6f4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/4059.table
@@ -0,0 +1,5 @@
+1 1 0000 UTC
+2 2 0600 UTC
+3 3 1200 UTC
+4 4 1800 UTC
+5 5 OTHER HOURS
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/4080.table b/definitions/bufr/tables/0/wmo/24/codetables/4080.table
new file mode 100644
index 0000000..84caf21
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/4080.table
@@ -0,0 +1,6 @@
+0 0 SPOT VALUES
+1 1 LESS THAN 15 MINUTES
+2 2 FROM 15 TO 45 MINUTES
+3 3 MORE THAN 45 MINUTES
+9 9 DATA NOT AVAILABLE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8001.table b/definitions/bufr/tables/0/wmo/24/codetables/8001.table
new file mode 100644
index 0000000..6210da3
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8001.table
@@ -0,0 +1,6 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 MAXIMUM WIND LEVEL
+5 5 SIGNIFICANT LEVEL, TEMPERATURE AND/OR RELATIVE HUMIDITY
+6 6 SIGNIFICANT LEVEL, WIND
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8002.table b/definitions/bufr/tables/0/wmo/24/codetables/8002.table
new file mode 100644
index 0000000..6ab4fd7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8002.table
@@ -0,0 +1,19 @@
+0 0 OBSERVING RULES FOR BASE OF LOWEST CLOUD AND CLOUD TYPES OF FM 12 SYNOP AND FM 13 SHIP APPLY
+1 1 FIRST NON-CUMULONIMBUS SIGNIFICANT LAYER
+2 2 SECOND NON-CUMULONIMBUS SIGNIFICANT LAYER
+3 3 THIRD NON-CUMULONIMBUS SIGNIFICANT LAYER
+4 4 CUMULONIMBUS LAYER
+5 5 CEILING
+6 6 CLOUDS NOT DETECTED BELOW THE FOLLOWING HEIGHT(S)
+7 7 LOW CLOUD
+8 8 MIDDLE CLOUD
+9 9 HIGH CLOUD
+10 10 CLOUD LAYER WITH BASE BELOW AND TOP ABOVE THE STATION
+11 11 CLOUD LAYER WITH BASE AND TOP BELOW THE STATION LEVEL
+20 20 NO CLOUDS DETECTED BY THE CLOUD DETECTION SYSTEM
+21 21 FIRST INSTRUMENT DETECTED CLOUD LAYER
+22 22 SECOND INSTRUMENT DETECTED CLOUD LAYER
+23 23 THIRD INSTRUMENT DETECTED CLOUD LAYER
+24 24 FOURTH INSTRUMENT DETECTED CLOUD LAYER
+62 62 VALUE NOT APPLICABLE
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8003.table b/definitions/bufr/tables/0/wmo/24/codetables/8003.table
new file mode 100644
index 0000000..3731351
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8003.table
@@ -0,0 +1,12 @@
+0 0 SURFACE
+1 1 BASE OF SATELLITE SOUNDING
+2 2 CLOUD TOP
+3 3 TROPOPAUSE
+4 4 PRECIPITABLE WATER
+5 5 SOUNDING RADIANCES
+6 6 MEAN TEMPERATURES
+7 7 OZONE
+8 8 LOW CLOUD
+9 9 MED CLOUD
+10 10 HIGH CLOUD
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8004.table b/definitions/bufr/tables/0/wmo/24/codetables/8004.table
new file mode 100644
index 0000000..2a8925e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8004.table
@@ -0,0 +1,6 @@
+2 2 UNSTEADY (UNS)
+3 3 LEVEL FLIGHT, ROUTINE OBSERVATION (LVR)
+4 4 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED (LVW)
+5 5 ASCENDING (ASC)
+6 6 DESCENDING (DES)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8005.table b/definitions/bufr/tables/0/wmo/24/codetables/8005.table
new file mode 100644
index 0000000..587ea99
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8005.table
@@ -0,0 +1,7 @@
+0 0 RESERVED
+1 1 STORM CENTRE
+2 2 OUTER LIMIT OR EDGE OF STORM
+3 3 LOCATION OF MAXIMUM WIND
+4 4 LOCATION OF THE STORM IN THE PERTURBED ANALYSIS
+5 5 LOCATION OF THE STORM IN THE ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8006.table b/definitions/bufr/tables/0/wmo/24/codetables/8006.table
new file mode 100644
index 0000000..9f56c62
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8006.table
@@ -0,0 +1,8 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 PROMINENT MAXIMUM LEVEL
+5 5 PROMINENT MINIMUM LEVEL
+6 6 MINIMUM PRESSURE LEVEL
+7 7 RESERVED
+8 8 LEVEL OF UNDETERMINED SIGNIFICANCE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8007.table b/definitions/bufr/tables/0/wmo/24/codetables/8007.table
new file mode 100644
index 0000000..3e4d2cc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8007.table
@@ -0,0 +1,5 @@
+0 0 POINT
+1 1 LINE
+2 2 AREA
+3 3 VOLUME
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8008.table b/definitions/bufr/tables/0/wmo/24/codetables/8008.table
new file mode 100644
index 0000000..2714b5a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8008.table
@@ -0,0 +1,8 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 LEVEL OF BETA RADIATION MAXIMUM
+5 5 LEVEL OF GAMMA RADIATION MAXIMUM
+6 6 MINIMUM PRESSURE LEVEL
+7 7 RESERVED
+8 8 LEVEL OF UNDETERMINED SIGNIFICANCE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8009.table b/definitions/bufr/tables/0/wmo/24/codetables/8009.table
new file mode 100644
index 0000000..b033982
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8009.table
@@ -0,0 +1,16 @@
+0 0 LEVEL FLIGHT, ROUTINE OBSERVATION, UNSTEADY
+1 1 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED, UNSTEADY
+2 2 UNSTEADY (UNS)
+3 3 LEVEL FLIGHT, ROUTINE OBSERVATION (LVR)
+4 4 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED (LVW)
+5 5 ASCENDING (ASC)
+6 6 DESCENDING (DES)
+7 7 ASCENDING, OBSERVATION INTERVALS SELECTED BY TIME INCREMENTS
+8 8 ASCENDING, OBSERVATION INTERVALS SELECTED BY TIME INCREMENTS, UNSTEADY
+9 9 ASCENDING, OBSERVATION INTERVALS SELECTED BY PRESSURE INCREMENTS
+10 10 ASCENDING, OBSERVATION INTERVALS SELECTED BY PRESSURE INCREMENTS, UNSTEADY
+11 11 DESCENDING, OBSERVATION INTERVALS SELECTED BY TIME INCREMENTS
+12 12 DESCENDING, OBSERVATION INTERVALS SELECTED BY TIME INCREMENTS, UNSTEADY
+13 13 DESCENDING, OBSERVATION INTERVALS SELECTED BY PRESSURE INCREMENTS
+14 14 DESCENDING, OBSERVATION INTERVALS SELECTED BY PRESSURE INCREMENTS, UNSTEADY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8010.table b/definitions/bufr/tables/0/wmo/24/codetables/8010.table
new file mode 100644
index 0000000..50e8c70
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8010.table
@@ -0,0 +1,13 @@
+0 0 RESERVED
+1 1 BARE SOIL
+2 2 BARE ROCK
+3 3 LAND GRASS COVER
+4 4 WATER (LAKE, SEA)
+5 5 FLOOD WATER UNDERNEATH
+6 6 SNOW
+7 7 ICE
+8 8 RUNWAY OR ROAD
+9 9 SHIP OR PLATFORM DECK IN STEEL
+10 10 SHIP OR PLATFORM DECK IN WOOD
+11 11 SHIP OR PLATFORM DECK PARTLY COVERED WITH RUBBER MAT
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8011.table b/definitions/bufr/tables/0/wmo/24/codetables/8011.table
new file mode 100644
index 0000000..e7a8221
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8011.table
@@ -0,0 +1,27 @@
+0 0 QUASI-STATIONARY FRONT AT THE SURFACE
+1 1 QUASI-STATIONARY FRONT ABOVE THE SURFACE
+2 2 WARM FRONT AT THE SURFACE
+3 3 WARM FRONT ABOVE THE SURFACE
+4 4 COLD FRONT AT THE SURFACE
+5 5 COLD FRONT ABOVE THE SURFACE
+6 6 OCCLUSION
+7 7 INSTABILITY LINE
+8 8 INTERTROPICAL FRONT
+9 9 CONVERGENCE LINE
+10 10 JET STREAM
+11 11 CLOUD CLEAR
+12 12 CLOUD
+13 13 TURBULENCE
+14 14 STORM
+15 15 AIRFRAME ICING
+16 16 PHENOMENON
+17 17 VOLCANO
+18 18 ATMOSPHERICS
+19 19 RESERVED
+20 20 SPECIAL CLOUDS
+21 21 THUNDERSTORM
+22 22 TROPICAL CYCLONE
+23 23 MOUNTAIN WAVE
+24 24 DUSTSTORM
+25 25 SANDSTORM
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8012.table b/definitions/bufr/tables/0/wmo/24/codetables/8012.table
new file mode 100644
index 0000000..769bc0b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8012.table
@@ -0,0 +1,4 @@
+0 0 LAND
+1 1 SEA
+2 2 COAST
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8013.table b/definitions/bufr/tables/0/wmo/24/codetables/8013.table
new file mode 100644
index 0000000..e18d295
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8013.table
@@ -0,0 +1,4 @@
+0 0 NIGHT
+1 1 DAY
+2 2 TWILIGHT
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8014.table b/definitions/bufr/tables/0/wmo/24/codetables/8014.table
new file mode 100644
index 0000000..e6f2e46
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8014.table
@@ -0,0 +1,10 @@
+0 0 10-MINUTE MEAN VALUE - NORMAL VALUE
+1 1 10-MINUTE MEAN VALUE - ABOVE THE UPPER LIMIT FOR ASSESSMENTS OF RVR (P)
+2 2 10-MINUTE MEAN VALUE - BELOW THE LOWER LIMIT FOR ASSESSMENTS OF RVR (M)
+3 3 ONE-MINUTE MINIMUM VALUE - NORMAL VALUE
+4 4 ONE-MINUTE MINIMUM VALUE - ABOVE THE UPPER LIMIT FOR ASSESSMENTS OF RVR (P)
+5 5 ONE-MINUTE MINIMUM VALUE - BELOW THE LOWER LIMIT FOR ASSESSMENTS OF RVR (M)
+6 6 ONE-MINUTE MAXIMUM VALUE - NORMAL VALUE
+7 7 ONE-MINUTE MAXIMUM VALUE - ABOVE THE UPPER LIMIT FOR ASSESSMENTS OF RVR (P)
+8 8 ONE-MINUTE MAXIMUM VALUE - BELOW THE LOWER LIMIT FOR ASSESSMENTS OF RVR (M)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8015.table b/definitions/bufr/tables/0/wmo/24/codetables/8015.table
new file mode 100644
index 0000000..6830b95
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8015.table
@@ -0,0 +1,4 @@
+0 0 SINGLE SENSOR
+1 1 PRIMARY SENSOR
+2 2 SECONDARY SENSOR (BACKUP)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8016.table b/definitions/bufr/tables/0/wmo/24/codetables/8016.table
new file mode 100644
index 0000000..6b8a1fa
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8016.table
@@ -0,0 +1,5 @@
+0 0 NOSIG
+1 1 BECMG
+2 2 TEMPO
+3 3 FM
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8017.table b/definitions/bufr/tables/0/wmo/24/codetables/8017.table
new file mode 100644
index 0000000..b3156f8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8017.table
@@ -0,0 +1,4 @@
+0 0 FM
+1 1 TL
+2 2 AT
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8018.table b/definitions/bufr/tables/0/wmo/24/codetables/8018.table
new file mode 100644
index 0000000..f91e554
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8018.table
@@ -0,0 +1,4 @@
+1 1 LAND IS PRESENT
+2 2 SURFACE ICE MAP INDICATES ICE IS PRESENT
+11 11 ICE MAP DATA NOT AVAILABLE
+12 12 ATTENUATION MAP DATA NOT AVAILABLE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8019.table b/definitions/bufr/tables/0/wmo/24/codetables/8019.table
new file mode 100644
index 0000000..4ed4133
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8019.table
@@ -0,0 +1,8 @@
+0 0 RESERVED
+1 1 ATS (AIR TRAFFIC SERVICE) UNIT SERVING FIR (FLIGHT INFORMATION REGION)
+2 2 FIR (FLIGHT INFORMATION REGION)
+3 3 UIR (UPPER FLIGHT INFORMATION REGION)
+4 4 CTA (CONTROL AREA)
+5 5 VAAC (VOLCANIC ASH ADVISORY CENTRE)
+6 6 MWO (METEOROLOGICAL WATCH OFFICE) ISSUING SIGMET
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8021.table b/definitions/bufr/tables/0/wmo/24/codetables/8021.table
new file mode 100644
index 0000000..20fd793
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8021.table
@@ -0,0 +1,32 @@
+0 0 RESERVED
+1 1 TIME SERIES
+2 2 TIME AVERAGED (SEE NOTE 1)
+3 3 ACCUMULATED
+4 4 FORECAST
+5 5 FORECAST TIME SERIES
+6 6 FORECAST TIME AVERAGED
+7 7 FORECAST ACCUMULATED
+8 8 ENSEMBLE MEAN (SEE NOTE 2)
+9 9 ENSEMBLE MEAN TIME SERIES
+10 10 ENSEMBLE MEAN TIME AVERAGED
+11 11 ENSEMBLE MEAN ACCUMULATED
+12 12 ENSEMBLE MEAN FORECAST
+13 13 ENSEMBLE MEAN FORECAST TIME SERIES
+14 14 ENSEMBLE MEAN FORECAST TIME AVERAGED
+15 15 ENSEMBLE MEAN FORECAST ACCUMULATED
+16 16 ANALYSIS
+17 17 START OF PHENOMENON
+18 18 RADIOSONDE LAUNCH TIME
+19 19 START OF ORBIT
+20 20 END OF ORBIT
+21 21 TIME OF ASCENDING NODE
+22 22 TIME OF OCCURRENCE OF WIND SHIFT
+23 23 MONITORING PERIOD
+24 24 AGREED TIME LIMIT FOR REPORT RECEPTION
+25 25 NOMINAL REPORTING TIME
+26 26 TIME OF LAST KNOWN POSITION
+27 27 FIRST GUESS
+28 28 START OF SCAN
+29 29 END OF SCAN OR TIME OF ENDING
+30 30 TIME OF OCCURRENCE
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8023.table b/definitions/bufr/tables/0/wmo/24/codetables/8023.table
new file mode 100644
index 0000000..2125e23
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8023.table
@@ -0,0 +1,14 @@
+2 2 MAXIMUM VALUE
+3 3 MINIMUM VALUE
+4 4 MEAN VALUE
+5 5 MEDIAN VALUE
+6 6 MODAL VALUE
+7 7 MEAN ABSOLUTE ERROR
+8 8 RESERVED
+9 9 BEST ESTIMATE OF STANDARD DEVIATION (N-1)
+10 10 STANDARD DEVIATION (N)
+11 11 HARMONIC MEAN
+12 12 ROOT-MEAN-SQUARE VECTOR ERROR
+13 13 ROOT-MEAN-SQUARE
+32 32 VECTOR MEAN
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8024.table b/definitions/bufr/tables/0/wmo/24/codetables/8024.table
new file mode 100644
index 0000000..377858b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8024.table
@@ -0,0 +1,12 @@
+2 2 OBSERVED MINUS MAXIMUM
+3 3 OBSERVED MINUS MINIMUM
+4 4 OBSERVED MINUS MEAN
+5 5 OBSERVED MINUS MEDIAN
+6 6 OBSERVED MINUS MODE
+11 11 OBSERVED MINUS CLIMATOLOGY (ANOMALY)
+12 12 OBSERVED MINUS ANALYSED VALUE
+13 13 OBSERVED MINUS INITIALIZED ANALYSED VALUE
+14 14 OBSERVED MINUS FORECAST VALUE
+21 21 OBSERVED MINUS INTERPOLATED VALUE
+22 22 OBSERVED MINUS HYDROSTATICALLY CALCULATED VALUE
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8025.table b/definitions/bufr/tables/0/wmo/24/codetables/8025.table
new file mode 100644
index 0000000..1d88fa5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8025.table
@@ -0,0 +1,5 @@
+0 0 UNIVERSAL TIME COORDINATED (UTC) MINUS LOCAL STANDARD TIME (LST)
+1 1 LOCAL STANDARD TIME
+2 2 UNIVERSAL TIME COORDINATED (UTC) MINUS SATELLITE CLOCK
+5 5 TIME DIFFERENCE FROM EDGE OF PROCESSING SEGMENT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8026.table b/definitions/bufr/tables/0/wmo/24/codetables/8026.table
new file mode 100644
index 0000000..9bcef78
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8026.table
@@ -0,0 +1,5 @@
+0 0 AVERAGING KERNEL MATRIX
+1 1 CORRELATION MATRIX (C)
+2 2 LOWER TRIANGULAR CORRELATION MATRIX SQUARE ROOT (L FROM C=LLT)
+3 3 INVERSE OF LOWER TRIANGULAR CORRELATION MATRIX SQUARE ROOT (L-1)
+63 63 MISSING OR UNDEFINED SIGNIFICANCE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8029.table b/definitions/bufr/tables/0/wmo/24/codetables/8029.table
new file mode 100644
index 0000000..d0eae5a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8029.table
@@ -0,0 +1,16 @@
+0 0 OPEN OCEAN OR SEMI-ENCLOSED SEA
+1 1 ENCLOSED SEA OR LAKE
+2 2 CONTINENTAL ICE
+3 3 LAND
+4 4 LOW INLAND (BELOW SEA LEVEL)
+5 5 MIX OF LAND AND WATER
+6 6 MIX OF LAND AND LOW INLAND
+11 11 RIVER
+12 12 LAKE
+13 13 SEA
+14 14 GLACIER
+15 15 URBAN LAND
+16 16 RURAL LAND
+17 17 SUBURBAN LAND
+18 18 SEA ICE
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8032.table b/definitions/bufr/tables/0/wmo/24/codetables/8032.table
new file mode 100644
index 0000000..712400d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8032.table
@@ -0,0 +1,7 @@
+0 0 ROUTINE OPERATION
+1 1 EVENT TRIGGERED BY STORM SURGE
+2 2 EVENT TRIGGERED BY TSUNAMI
+3 3 EVENT TRIGGERED MANUALLY
+4 4 INSTALLATION TESTING
+5 5 MAINTENANCE TESTING
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8033.table b/definitions/bufr/tables/0/wmo/24/codetables/8033.table
new file mode 100644
index 0000000..1c69537
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8033.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 PERCENTAGE CONFIDENCE CALCULATED USING CLOUD FRACTION
+2 2 PERCENTAGE CONFIDENCE CALCULATED USING STANDARD DEVIATION OF TEMPERATURE
+3 3 PERCENTAGE CONFIDENCE CALCULATED USING PROBABILITY OF CLOUD CONTAMINATION
+4 4 PERCENTAGE CONFIDENCE CALCULATED USING NORMALITY OF DISTRIBUTION
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8035.table b/definitions/bufr/tables/0/wmo/24/codetables/8035.table
new file mode 100644
index 0000000..3d641fd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8035.table
@@ -0,0 +1,8 @@
+0 0 GLOBAL
+1 1 REGIONAL
+2 2 NATIONAL
+3 3 SPECIAL
+4 4 BILATERAL
+5 5 RESERVED
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8036.table b/definitions/bufr/tables/0/wmo/24/codetables/8036.table
new file mode 100644
index 0000000..6436989
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8036.table
@@ -0,0 +1,8 @@
+0 0 WMO SECRETARIAT
+1 1 WMO
+2 2 RSMC
+3 3 NMC
+4 4 RTH
+5 5 OBSERVING SITE
+6 6 OTHER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8039.table b/definitions/bufr/tables/0/wmo/24/codetables/8039.table
new file mode 100644
index 0000000..f4403c6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8039.table
@@ -0,0 +1,8 @@
+0 0 ISSUE TIME OF FORECAST
+1 1 TIME OF COMMENCEMENT OF PERIOD OF THE FORECAST
+2 2 TIME OF ENDING OF PERIOD OF THE FORECAST
+3 3 FORECAST TIME OF MAXIMUM TEMPERATURE
+4 4 FORECAST TIME OF MINIMUM TEMPERATURE
+5 5 TIME OF BEGINNING OF THE FORECAST CHANGE
+6 6 TIME OF ENDING OF THE FORECAST CHANGE
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8040.table b/definitions/bufr/tables/0/wmo/24/codetables/8040.table
new file mode 100644
index 0000000..662f93a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8040.table
@@ -0,0 +1,47 @@
+0 0 HIGH-RESOLUTION DATA SAMPLE
+1 1 WITHIN 20 HPA OF SURFACE
+2 2 PRESSURE LESS THAN 10 HPA (I.E., 9, 8, 7, ETC.) WHEN NO OTHER REASON APPLIES
+3 3 BASE PRESSURE LEVEL FOR STABILITY INDEX
+4 4 BEGIN DOUBTFUL TEMPERATURE, HEIGHT DATA
+5 5 BEGIN MISSING DATA (ALL ELEMENTS)
+6 6 BEGIN MISSING RELATIVE HUMIDITY DATA
+7 7 BEGIN MISSING TEMPERATURE DATA
+8 8 HIGHEST LEVEL REACHED BEFORE BALLOON DESCENT BECAUSE OF ICING OR TURBULENCE
+9 9 END DOUBTFUL TEMPERATURE, HEIGHT DATA
+10 10 END MISSING DATA (ALL ELEMENTS)
+11 11 END MISSING RELATIVE HUMIDITY DATA
+12 12 END MISSING TEMPERATURE DATA
+13 13 ZERO DEGREES CELSIUS CROSSING(S) FOR RADAT
+14 14 STANDARD PRESSURE LEVEL
+15 15 OPERATOR-ADDED LEVEL
+16 16 OPERATOR-DELETED LEVEL
+17 17 BALLOON RE-ASCENDED BEYOND PREVIOUS HIGHEST ASCENT LEVEL
+18 18 SIGNIFICANT RELATIVE HUMIDITY LEVEL
+19 19 RELATIVE HUMIDITY LEVEL SELECTION TERMINATED
+20 20 SURFACE LEVEL
+21 21 SIGNIFICANT TEMPERATURE LEVEL
+22 22 MANDATORY TEMPERATURE LEVEL
+23 23 FLIGHT TERMINATION LEVEL
+24 24 TROPOPAUSE(S)
+25 25 AIRCRAFT REPORT
+26 26 INTERPOLATED (GENERATED) LEVEL
+27 27 MANDATORY WIND LEVEL
+28 28 SIGNIFICANT WIND LEVEL
+29 29 MAXIMUM WIND LEVEL
+30 30 INCREMENTAL WIND LEVEL (FIXED REGIONAL)
+31 31 INCREMENTAL HEIGHT LEVEL (GENERATED)
+32 32 WIND TERMINATION LEVEL
+33 33 PRESSURE 100 TO 110 HPA, WHEN NO OTHER REASON APPLIES
+34 34 FREEZING LEVEL BASE
+35 35 FREEZING LEVEL TOP
+36 36 FLIGHT LEVEL BASE
+37 37 FLIGHT LEVEL TOP
+40 40 SIGNIFICANT THERMODYNAMIC LEVEL (INVERSION)
+41 41 SIGNIFICANT RELATIVE HUMIDITY LEVEL (ACCORDING TO NCDC CRITERIA)
+42 42 SIGNIFICANT TEMPERATURE LEVEL (ACCORDING TO NCDC)
+43 43 BEGIN MISSING WIND DATA
+44 44 END MISSING WIND DATA
+60 60 LEVEL OF 80-KNOT ISOTACH ABOVE JET
+61 61 LEVEL OF 80-KNOT ISOTACH BELOW JET
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8041.table b/definitions/bufr/tables/0/wmo/24/codetables/8041.table
new file mode 100644
index 0000000..1f48fbe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8041.table
@@ -0,0 +1,15 @@
+0 0 PARENT SITE
+1 1 OBSERVATION SITE
+2 2 BALLOON MANUFACTURE DATE
+3 3 BALLOON LAUNCH POINT
+4 4 SURFACE OBSERVATION
+5 5 SURFACE OBSERVATION DISPLACEMENT FROM LAUNCH POINT
+6 6 FLIGHT LEVEL OBSERVATION
+7 7 FLIGHT LEVEL TERMINATION POINT
+8 8 IFR CEILING AND VISIBILITY
+9 9 MOUNTAIN OBSCURATION
+10 10 STRONG SURFACE WIND
+11 11 FREEZING LEVEL
+12 12 MULTIPLE FREEZING LEVEL
+13 13 INSTRUMENT MANUFACTURE DATE
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8042.table b/definitions/bufr/tables/0/wmo/24/codetables/8042.table
new file mode 100644
index 0000000..e11b884
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8042.table
@@ -0,0 +1,17 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 MAXIMUM WIND LEVEL
+5 5 SIGNIFICANT TEMPERATURE LEVEL
+6 6 SIGNIFICANT HUMIDITY LEVEL
+7 7 SIGNIFICANT WIND LEVEL
+8 8 BEGINNING OF MISSING TEMPERATURE DATA
+9 9 END OF MISSING TEMPERATURE DATA
+10 10 BEGINNING OF MISSING HUMIDITY DATA
+11 11 END OF MISSING HUMIDITY DATA
+12 12 BEGINNING OF MISSING WIND DATA
+13 13 END OF MISSING WIND DATA
+14 14 TOP OF WIND SOUNDING
+15 15 LEVEL DETERMINED BY REGIONAL DECISION
+16 16 RESERVED
+17 17 PRESSURE LEVEL ORIGINALLY INDICATED BY HEIGHT AS THE VERTICAL COORDINATE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8043.table b/definitions/bufr/tables/0/wmo/24/codetables/8043.table
new file mode 100644
index 0000000..249fd0e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8043.table
@@ -0,0 +1,17 @@
+0 0 OZONE
+1 1 WATER VAPOUR
+2 2 METHANE
+3 3 CARBON DIOXIDE
+4 4 CARBON MONOXIDE
+5 5 NITROGEN DIOXIDE
+6 6 NITROUS OXIDE
+7 7 FORMALDEHYDE
+8 8 SULPHUR DIOXIDE
+25 25 PARTICULATE MATTER < 1.0 MICRONS
+26 26 PARTICULATE MATTER < 2.5 MICRONS
+27 27 PARTICULATE MATTER < 10 MICRONS
+28 28 AEROSOLS (GENERIC)
+29 29 SMOKE (GENERIC)
+30 30 CRUSTAL MATERIAL (GENERIC DUST)
+31 31 VOLCANIC ASH
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8050.table b/definitions/bufr/tables/0/wmo/24/codetables/8050.table
new file mode 100644
index 0000000..4b401f1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8050.table
@@ -0,0 +1,11 @@
+0 0 RESERVED
+1 1 PRESSURE
+2 2 TEMPERATURE
+3 3 EXTREME TEMPERATURE
+4 4 VAPOUR PRESSURE
+5 5 PRECIPITATION
+6 6 SUNSHINE DURATION
+7 7 MAXIMUM TEMPERATURE
+8 8 MINIMUM TEMPERATURE
+9 9 WIND
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8051.table b/definitions/bufr/tables/0/wmo/24/codetables/8051.table
new file mode 100644
index 0000000..5249fe6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8051.table
@@ -0,0 +1,7 @@
+1 1 PRESSURE
+2 2 TEMPERATURE
+3 3 EXTREME TEMPERATURE
+4 4 VAPOUR PRESSURE
+5 5 PRECIPITATION
+6 6 SUNSHINE DURATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8052.table b/definitions/bufr/tables/0/wmo/24/codetables/8052.table
new file mode 100644
index 0000000..46dcbbe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8052.table
@@ -0,0 +1,26 @@
+0 0 MEAN WIND SPEED OVER A 10-MINUTE PERIOD OBSERVED OR RECORDED EQUAL TO OR MORE THAN 10 M S-1 OR 20 KNOTS
+1 1 MEAN WIND SPEED OVER A 10-MINUTE PERIOD OBSERVED OR RECORDED EQUAL TO OR MORE THAN 20 M S-1 OR 40 KNOTS
+2 2 MEAN WIND SPEED OVER A 10-MINUTE PERIOD OBSERVED OR RECORDED EQUAL TO OR MORE THAN 30 M S-1 OR 60 KNOTS
+3 3 MAXIMUM TEMPERATURE LESS THAN 273.15 K
+4 4 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 298.15 K
+5 5 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 303.15 K
+6 6 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 308.15 K
+7 7 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 313.15 K
+8 8 MINIMUM TEMPERATURE LESS THAN 273.15 K
+9 9 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 273.15 K
+10 10 PRECIPITATION EQUAL TO OR MORE THAN 1.0 KG M-2
+11 11 PRECIPITATION EQUAL TO OR MORE THAN 5.0 KG M-2
+12 12 PRECIPITATION EQUAL TO OR MORE THAN 10.0 KG M-2
+13 13 PRECIPITATION EQUAL TO OR MORE THAN 50.0 KG M-2
+14 14 PRECIPITATION EQUAL TO OR MORE THAN 100.0 KG M-2
+15 15 PRECIPITATION EQUAL TO OR MORE THAN 150.0 KG M-2
+16 16 SNOW DEPTH MORE THAN 0.00 M
+17 17 SNOW DEPTH MORE THAN 0.01 M
+18 18 SNOW DEPTH MORE THAN 0.10 M
+19 19 SNOW DEPTH MORE THAN 0.50 M
+20 20 HORIZONTAL VISIBILITY LESS THAN 50 M
+21 21 HORIZONTAL VISIBILITY LESS THAN 100 M
+22 22 HORIZONTAL VISIBILITY LESS THAN 1000 M
+23 23 HAIL
+24 24 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8053.table b/definitions/bufr/tables/0/wmo/24/codetables/8053.table
new file mode 100644
index 0000000..cbc11c9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8053.table
@@ -0,0 +1,4 @@
+0 0 VALUE OCCURRED ON ONLY ONE DAY IN THE MONTH
+1 1 VALUE OCCURRED ON MORE THAN ONE DAY IN THE MONTH
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8054.table b/definitions/bufr/tables/0/wmo/24/codetables/8054.table
new file mode 100644
index 0000000..51b908e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8054.table
@@ -0,0 +1,3 @@
+0 0 WIND SPEED OR GUST IS AS REPORTED
+1 1 WIND SPEED IS GREATER THAN THAT REPORTED (P IN METAR/TAF/SPECI)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8060.table b/definitions/bufr/tables/0/wmo/24/codetables/8060.table
new file mode 100644
index 0000000..2865fec
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8060.table
@@ -0,0 +1,8 @@
+0 0 RESERVED
+1 1 RANGE
+2 2 AZIMUTH
+3 3 HORIZONTAL
+4 4 VERTICAL
+5 5 NORTH/SOUTH
+6 6 EAST/WEST
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8065.table b/definitions/bufr/tables/0/wmo/24/codetables/8065.table
new file mode 100644
index 0000000..69b80ea
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8065.table
@@ -0,0 +1,4 @@
+0 0 NO SUN-GLINT
+1 1 SUN-GLINT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8066.table b/definitions/bufr/tables/0/wmo/24/codetables/8066.table
new file mode 100644
index 0000000..fcc0252
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8066.table
@@ -0,0 +1,4 @@
+0 0 OPAQUE
+1 1 SEMI-TRANSPARENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8070.table b/definitions/bufr/tables/0/wmo/24/codetables/8070.table
new file mode 100644
index 0000000..f580617
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8070.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 RESERVED
+2 2 EARTH LOCATED INSTRUMENT COUNTS, CALIBRATION COEFFICIENTS AND HOUSEKEEPING (LEVEL 1B)
+3 3 EARTH LOCATED CALIBRATED RADIANCES (LEVEL 1C)
+4 4 MAPPED TO A COMMON FOOTPRINT, EARTH LOCATED CALIBRATED RADIANCES (LEVEL 1D)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8072.table b/definitions/bufr/tables/0/wmo/24/codetables/8072.table
new file mode 100644
index 0000000..7dcd961
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8072.table
@@ -0,0 +1,6 @@
+0 0 MIXED
+1 1 CLEAR
+2 2 CLOUDY
+3 3 PROBABLY CLEAR
+4 4 PROBABLY CLOUDY
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8074.table b/definitions/bufr/tables/0/wmo/24/codetables/8074.table
new file mode 100644
index 0000000..5778e65
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8074.table
@@ -0,0 +1,4 @@
+0 0 OPEN OCEAN OR SEMI-ENCLOSED SEA
+1 1 NON-OCEAN LIKE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8075.table b/definitions/bufr/tables/0/wmo/24/codetables/8075.table
new file mode 100644
index 0000000..5f5e3a2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8075.table
@@ -0,0 +1,4 @@
+0 0 ASCENDING ORBIT
+1 1 DESCENDING ORBIT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8076.table b/definitions/bufr/tables/0/wmo/24/codetables/8076.table
new file mode 100644
index 0000000..431496f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8076.table
@@ -0,0 +1,9 @@
+0 0 KU
+1 1 C
+2 2 LONG-WAVE INFRARED
+3 3 MEDIUM-WAVE INFRARED
+4 4 SHORT-WAVE INFRARED
+5 5 M
+6 6 I
+7 7 DAY/NIGHT
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8077.table b/definitions/bufr/tables/0/wmo/24/codetables/8077.table
new file mode 100644
index 0000000..2c7902b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8077.table
@@ -0,0 +1,7 @@
+0 0 LAND
+1 1 SEA
+2 2 COASTAL
+3 3 OPEN OCEAN OR SEMI-ENCLOSED SEA
+4 4 ENCLOSED SEA OR LAKE
+5 5 CONTINENTAL ICE
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8079.table b/definitions/bufr/tables/0/wmo/24/codetables/8079.table
new file mode 100644
index 0000000..735a09c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8079.table
@@ -0,0 +1,9 @@
+0 0 NORMAL ISSUE
+1 1 CORRECTION TO A PREVIOUSLY ISSUED PRODUCT (COR)
+2 2 AMENDMENT TO A PREVIOUSLY ISSUED PRODUCT (AMD)
+3 3 CORRECTION TO A PREVIOUSLY ISSUED AMENDED PRODUCT (COR AMD)
+4 4 CANCELLATION OF A PREVIOUSLY ISSUED PRODUCT (CNL)
+5 5 NO PRODUCT AVAILABLE (NIL)
+6 6 SPECIAL REPORT (SPECI)
+7 7 CORRECTED SPECIAL REPORT (SPECI COR)
+15 15 MISSING OR NOT APPLICABLE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8080.table b/definitions/bufr/tables/0/wmo/24/codetables/8080.table
new file mode 100644
index 0000000..1a0f3a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8080.table
@@ -0,0 +1,14 @@
+0 0 TOTAL WATER PRESSURE PROFILE
+1 1 TOTAL WATER TEMPERATURE PROFILE
+2 2 TOTAL WATER SALINITY PROFILE
+3 3 TOTAL WATER CONDUCTIVITY PROFILE
+4 4 TOTAL WATER DEPTH
+10 10 WATER PRESSURE AT A LEVEL
+11 11 WATER TEMPERATURE AT A LEVEL
+12 12 SALINITY AT A LEVEL
+13 13 WATER DEPTH AT A LEVEL
+14 14 SEA/WATER CURRENT SPEED AT A LEVEL
+15 15 SEA/WATER CURRENT DIRECTION AT A LEVEL
+16 16 DISSOLVED OXYGEN AT A LEVEL
+20 20 POSITION
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8081.table b/definitions/bufr/tables/0/wmo/24/codetables/8081.table
new file mode 100644
index 0000000..75d2887
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8081.table
@@ -0,0 +1,5 @@
+0 0 SENSOR
+1 1 TRANSMITTER
+2 2 RECEIVER
+3 3 OBSERVING PLATFORM
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8082.table b/definitions/bufr/tables/0/wmo/24/codetables/8082.table
new file mode 100644
index 0000000..1f24db8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8082.table
@@ -0,0 +1,3 @@
+0 0 SENSOR HEIGHT IS NOT MODIFIED
+1 1 SENSOR HEIGHT IS MODIFIED TO STANDARD LEVEL
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8083.table b/definitions/bufr/tables/0/wmo/24/codetables/8083.table
new file mode 100644
index 0000000..174ef34
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8083.table
@@ -0,0 +1,9 @@
+1 1 ADJUSTED TO OR WITH RESPECT TO REPRESENTATIVE HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM)
+2 2 ADJUSTED TO OR WITH RESPECT TO REPRESENTATIVE HEIGHT OF SENSOR ABOVE WATER SURFACE
+3 3 ADJUSTED WITH RESPECT TO STANDARD SURFACE ROUGHNESS
+4 4 ADJUSTED WITH RESPECT TO WIND SPEED
+5 5 ADJUSTED WITH RESPECT TO TEMPERATURE
+6 6 ADJUSTED WITH RESPECT TO PRESSURE
+7 7 ADJUSTED WITH RESPECT TO HUMIDITY
+8 8 ADJUSTED WITH RESPECT TO EVAPORATION
+9 9 ADJUSTED WITH RESPECT TO WETTING LOSSES
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8085.table b/definitions/bufr/tables/0/wmo/24/codetables/8085.table
new file mode 100644
index 0000000..79e1a3d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8085.table
@@ -0,0 +1,4 @@
+0 0 FORE BEAM
+1 1 MID BEAM
+2 2 AFT BEAM
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8086.table b/definitions/bufr/tables/0/wmo/24/codetables/8086.table
new file mode 100644
index 0000000..47665e9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8086.table
@@ -0,0 +1,9 @@
+1 1 MODEL GROUND SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 MAXIMUM WIND LEVEL
+5 5 SIGNIFICANT TEMPERATURE LEVEL
+6 6 SIGNIFICANT HUMIDITY LEVEL
+7 7 SIGNIFICANT WIND LEVEL
+8 8 VERTICALLY INTERPOLATED LEVEL (THIS SHOULD BE SET TO 1 FOR POINTS ON THE VERTICAL PROFILE THAT FALL BETWEEN THE MODEL'S NATIVE VERTICAL LEVELS.)
+9 9 VIRTUAL STATION HEIGHT
diff --git a/definitions/bufr/tables/0/wmo/24/codetables/8087.table b/definitions/bufr/tables/0/wmo/24/codetables/8087.table
new file mode 100644
index 0000000..d556c98
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/codetables/8087.table
@@ -0,0 +1,5 @@
+0 0 UPPER LEFT
+1 1 UPPER RIGHT
+2 2 LOWER RIGHT
+3 3 LOWER LEFT
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/24/element.table b/definitions/bufr/tables/0/wmo/24/element.table
new file mode 100644
index 0000000..948e13c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/element.table
@@ -0,0 +1,1510 @@
+#code|abbreviation|type|name|unit|scale|reference|width|crex_unit|crex_scale|crex_width
+000001|tableAEntry|string|TABLE A: ENTRY|CCITT IA5|0|0|24|Character|0|3
+000002|tableALine1|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 1|CCITT IA5|0|0|256|Character|0|32
+000003|tableALine2|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 2|CCITT IA5|0|0|256|Character|0|32
+000004|masterTable|string|BUFR/CREX MASTER TABLE|CCITT IA5|0|0|16|Character|0|2
+000005|editionNumber|string|BUFR/CREX EDITION NUMBER|CCITT IA5|0|0|24|Character|0|3
+000006|bufrMasterTableVersionNumber|string|BUFR MASTER TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000007|crexMasterTableVersionNumber|string|CREX MASTER TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000008|bufrLocalTableVersionNumber|string|BUFR LOCAL TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000010|fDescriptorToBeAddedOrDefined|string|F DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|8|Character|0|1
+000011|xDescriptorToBeAddedOrDefined|string|X DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|16|Character|0|2
+000012|yDescriptorToBeAddedOrDefined|string|Y DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|24|Character|0|3
+000013|elementNameLine1|string|ELEMENT NAME, LINE 1|CCITT IA5|0|0|256|Character|0|32
+000014|elementNameLine2|string|ELEMENT NAME, LINE 2|CCITT IA5|0|0|256|Character|0|32
+000015|unitsName|string|UNITS NAME|CCITT IA5|0|0|192|Character|0|24
+000016|unitsScaleSign|string|UNITS SCALE SIGN|CCITT IA5|0|0|8|Character|0|1
+000017|unitsScale|string|UNITS SCALE|CCITT IA5|0|0|24|Character|0|3
+000018|unitsReferenceSign|string|UNITS REFERENCE SIGN|CCITT IA5|0|0|8|Character|0|1
+000019|unitsReferenceValue|string|UNITS REFERENCE VALUE|CCITT IA5|0|0|80|Character|0|10
+000020|elementDataWidth|string|ELEMENT DATA WIDTH|CCITT IA5|0|0|24|Character|0|3
+000024|codeFigure|string|CODE FIGURE|CCITT IA5|0|0|64|Character|0|8
+000025|codeFigureMeaning|string|CODE FIGURE MEANING|CCITT IA5|0|0|496|Character|0|62
+000026|bitNumber|string|BIT NUMBER|CCITT IA5|0|0|48|Character|0|6
+000027|bitNumberMeaning|string|BIT NUMBER MEANING|CCITT IA5|0|0|496|Character|0|62
+000030|descriptorDefiningSequence|string|DESCRIPTOR DEFINING SEQUENCE|CCITT IA5|0|0|48|Character|0|6
+001001|blockNumber|long|WMO BLOCK NUMBER|Numeric|0|0|7|Numeric|0|2
+001002|stationNumber|long|WMO STATION NUMBER|Numeric|0|0|10|Numeric|0|3
+001003|regionNumber|table|WMO REGION NUMBER/GEOGRAPHICAL AREA|CODE TABLE|0|0|3|CODE TABLE|0|1
+001004|wmoRegionSubArea|long|WMO REGION SUB-AREA|Numeric|0|0|3|Numeric|0|1
+001005|buoyOrPlatformIdentifier|long|BUOY/PLATFORM IDENTIFIER|Numeric|0|0|17|Numeric|0|5
+001006|aircraftFlightNumber|string|AIRCRAFT FLIGHT NUMBER|CCITT IA5|0|0|64|Character|0|8
+001007|satelliteIdentifier|table|SATELLITE IDENTIFIER|CODE TABLE|0|0|10|CODE TABLE|0|4
+001008|aircraftRegistrationNumberOrOtherIdentification|string|AIRCRAFT REGISTRATION NUMBER OR OTHER IDENTIFICATION|CCITT IA5|0|0|64|Character|0|8
+001009|commercialAircraftType|string|TYPE OF COMMERCIAL AIRCRAFT|CCITT IA5|0|0|64|Character|0|8
+001010|stationaryBuoyPlatformIdentifierEGCManBuoys|string|STATIONARY BUOY PLATFORM IDENTIFIER; E.G. C-MAN BUOYS|CCITT IA5|0|0|64|Character|0|8
+001011|shipOrMobileLandStationIdentifier|string|SHIP OR MOBILE LAND STATION IDENTIFIER|CCITT IA5|0|0|72|Character|0|9
+001012|directionOfMotionOfMovingObservingPlatform|long|DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM|deg|0|0|9|deg|0|3
+001013|movingObservingPlatformSpeed|long|SPEED OF MOTION OF MOVING OBSERVING PLATFORM|m/s|0|0|10|m/s|0|3
+001014|platformDriftSpeed|double|PLATFORM DRIFT SPEED (HIGH PRECISION)|m/s|2|0|10|m/s|2|4
+001015|stationOrSiteName|string|STATION OR SITE NAME|CCITT IA5|0|0|160|Character|0|20
+001018|shortStationName|string|SHORT STATION OR SITE NAME|CCITT IA5|0|0|40|Character|0|5
+001019|longStationName|string|LONG STATION OR SITE NAME|CCITT IA5|0|0|256|Character|0|32
+001020|wmoRegionSubArea|long|WMO REGION SUB-AREA|Numeric|0|0|4|Numeric|0|2
+001021|synopticFeatureIdentifier|long|SYNOPTIC FEATURE IDENTIFIER|Numeric|0|0|14|Numeric|0|4
+001022|featureName|string|NAME OF FEATURE|CCITT IA5|0|0|224|Character|0|28
+001023|observationSequenceNumber|long|OBSERVATION SEQUENCE NUMBER|Numeric|0|0|9|Numeric|0|3
+001024|windSpeedSource|table|WIND SPEED SOURCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+001025|stormIdentifier|string|STORM IDENTIFIER|CCITT IA5|0|0|24|Character|0|3
+001026|stormName|string|WMO STORM NAME|CCITT IA5|0|0|64|Character|0|8
+001027|longStormName|string|WMO LONG STORM NAME|CCITT IA5|0|0|80|Character|0|10
+001028|aerosolOpticalDepthSource|table|AEROSOL OPTICAL DEPTH (AOD) SOURCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+001029|ssiSource|table|SSI SOURCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+001030|numericalModelIdentifier|string|NUMERICAL MODEL IDENTIFIER|CCITT IA5|0|0|128|Character|0|16
+001031|centre|table|IDENTIFICATION OF ORIGINATING/GENERATING CENTRE|CODE TABLE|0|0|16|CODE TABLE|0|5
+001032|generatingApplication|table|GENERATING APPLICATION|CODE TABLE defined by originating/generating centre|0|0|8|CODE TABLE|0|3
+001033|centre|table|IDENTIFICATION OF ORIGINATING/GENERATING CENTRE|Common CODE TABLE C-1|0|0|8|Common CODE TABLE C-1|0|3
+001034|subCentre|table|IDENTIFICATION OF ORIGINATING/GENERATING SUB-CENTRE|Common CODE TABLE C-12|0|0|8|Common CODE TABLE C-12|0|3
+001035|centre|table|ORIGINATING CENTRE|Common CODE TABLE C-11|0|0|16|Common CODE TABLE C-11|0|5
+001036|agencyInChargeOfOperatingObservingPlatform|table|AGENCY IN CHARGE OF OPERATING THE OBSERVING PLATFORM|CODE TABLE|0|0|20|CODE TABLE|0|7
+001037|sigmetSequenceIdentifier|string|SIGMET SEQUENCE IDENTIFIER|CCITT IA5|0|0|24|Character|0|3
+001038|sourceOfSeaIceFraction|table|SOURCE OF SEA ICE FRACTION|CODE TABLE|0|0|5|CODE TABLE|0|2
+001039|graphicalAreaForecastSequenceIdentifier|string|GRAPHICAL AREA FORECAST (GFA) SEQUENCE IDENTIFIER|CCITT IA5|0|0|40|Character|0|5
+001040|processingCentreIdCode|string|PROCESSING CENTRE ID CODE|CCITT IA5|0|0|48|Character|0|6
+001041|absolutePlatformVelocityFirstComponent|double|ABSOLUTE PLATFORM VELOCITY - FIRST COMPONENT|m/s|5|-1073741824|31|m/s|5|10
+001042|absolutePlatformVelocitySecondComponent|double|ABSOLUTE PLATFORM VELOCITY - SECOND COMPONENT|m/s|5|-1073741824|31|m/s|5|10
+001043|absolutePlatformVelocityThirdComponent|double|ABSOLUTE PLATFORM VELOCITY - THIRD COMPONENT|m/s|5|-1073741824|31|m/s|5|10
+001050|platformTransmitterIdNumber|long|PLATFORM TRANSMITTER ID NUMBER|Numeric|0|0|17|Numeric|0|6
+001051|platformTransmitterIdNumber|string|PLATFORM TRANSMITTER ID NUMBER|CCITT IA5|0|0|96|Character|0|12
+001052|platformTransmitterId|table|PLATFORM TRANSMITTER ID|CODE TABLE|0|0|3|CODE TABLE|0|1
+001053|tsunameterReportSequenceNumber|long|TSUNAMETER REPORT SEQUENCE NUMBER TRIGGERED BY A TSUNAMI EVENT|Numeric|0|0|7|Numeric|0|2
+001060|aircraftReportingPointBeaconIdentifier|string|AIRCRAFT REPORTING POINT (BEACON IDENTIFIER)|CCITT IA5|0|0|64|Character|0|8
+001062|shortIcaoLocationIndicator|string|SHORT ICAO LOCATION INDICATOR|CCITT IA5|0|0|32|Character|0|4
+001063|icaoLocationIndicator|string|ICAO LOCATION INDICATOR|CCITT IA5|0|0|64|Character|0|8
+001064|runwayDesignator|string|RUNWAY DESIGNATOR|CCITT IA5|0|0|32|Character|0|4
+001065|icaoRegionIdentifier|string|ICAO REGION IDENTIFIER|CCITT IA5|0|0|256|Character|0|32
+001075|tideStationIdentification|string|TIDE STATION IDENTIFICATION|CCITT IA5|0|0|40|Character|0|5
+001079|uniqueIdentifierForProfile|string|UNIQUE IDENTIFIER FOR THE PROFILE|CCITT IA5|0|0|64|Character|0|8
+001080|shipLineNumberAccordingToSoop|string|SHIP LINE NUMBER ACCORDING TO SOOP|CCITT IA5|0|0|32|Character|0|4
+001081|radiosondeSerialNumber|string|RADIOSONDE SERIAL NUMBER|CCITT IA5|0|0|160|Character|0|20
+001082|radiosondeAscensionNumber|long|RADIOSONDE ASCENSION NUMBER|Numeric|0|0|14|Numeric|0|4
+001083|radiosondeReleaseNumber|long|RADIOSONDE RELEASE NUMBER|Numeric|0|0|3|Numeric|0|1
+001085|observingPlatformManufacturerModel|string|OBSERVING PLATFORM MANUFACTURER'S MODEL|CCITT IA5|0|0|160|Character|0|20
+001086|observingPlatformManufacturerSerialNumber|string|OBSERVING PLATFORM MANUFACTURER'S SERIAL NUMBER|CCITT IA5|0|0|256|Character|0|32
+001087|marineObservingPlatformIdentifier|long|WMO MARINE OBSERVING PLATFORM EXTENDED IDENTIFIER|Numeric|0|0|23|Numeric|0|7
+001090|techniqueForMakingUpInitialPerturbations|table|TECHNIQUE FOR MAKING UP INITIAL PERTURBATIONS|CODE TABLE|0|0|8|CODE TABLE|0|3
+001091|ensembleMemberNumber|long|ENSEMBLE MEMBER NUMBER|Numeric|0|0|10|Numeric|0|4
+001092|ensembleForecastType|table|TYPE OF ENSEMBLE FORECAST|CODE TABLE|0|0|8|CODE TABLE|0|3
+001093|balloonLotNumber|string|BALLOON LOT NUMBER|CCITT IA5|0|0|96|Character|0|12
+001094|wbanNumber|long|WBAN NUMBER|Numeric|0|0|17|Numeric|0|5
+001095|observerIdentification|string|OBSERVER IDENTIFICATION|CCITT IA5|0|0|32|Character|0|4
+001096|stationAcquisition|string|STATION ACQUISITION|CCITT IA5|0|0|160|Character|0|20
+001099|uniqueProductDefinition|string|UNIQUE PRODUCT DEFINITION|CCITT IA5|0|0|248|Character|0|31
+001101|stateIdentifier|table|STATE IDENTIFIER|CODE TABLE|0|0|10|CODE TABLE|0|3
+001102|stationNumber|long|NATIONAL STATION NUMBER|Numeric|0|0|30|Numeric|0|9
+001103|imoNumber|long|IMO NUMBER. UNIQUE LLOYD'S REGISTER|Numeric|0|0|24|Numeric|0|7
+001110|aircraftTailNumber|string|AIRCRAFT TAIL NUMBER|CCITT IA5|0|0|48|Character|0|6
+001111|originationAirport|string|ORIGINATION AIRPORT|CCITT IA5|0|0|24|Character|0|3
+001112|destinationAirport|string|DESTINATION AIRPORT|CCITT IA5|0|0|24|Character|0|3
+001113|templateVersionNumberDefinedByOriginatingCentre|long|TEMPLATE VERSION NUMBER DEFINED BY ORIGINATING CENTRE|Numeric|1|0|9|Numeric|1|3
+001115|identifierOfTheCruiseOrMission|string|IDENTIFIER OF THE CRUISE OR MISSION UNDER WHICH THE DATA WERE COLLECTED|CCITT IA5|0|0|160|Character|0|20
+001124|gridPointIdentifier|long|GRID POINT IDENTIFIER|Numeric|0|0|24|Numeric|0|8
+001144|snapshotIdentifier|long|SNAPSHOT IDENTIFIER|Numeric|0|0|31|Numeric|0|10
+002001|stationType|table|TYPE OF STATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002002|instrumentationForWindMeasurement|flag|TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+002003|measuringEquipmentType|table|TYPE OF MEASURING EQUIPMENT USED|CODE TABLE|0|0|4|CODE TABLE|0|2
+002004|typeOfInstrumentationForEvaporationMeasurement|table|TYPE OF INSTRUMENTATION FOR EVAPORATION MEASUREMENT OR TYPE OF CROP FOR WHICH EVAPOTRANSPIRATION IS REPORTED|CODE TABLE|0|0|4|CODE TABLE|0|2
+002005|temperatureObservationPrecision|double|PRECISION OF TEMPERATURE OBSERVATION|K|2|0|7|K|2|3
+002007|sensorForWaterLevelMeasuringInstrumentType|table|TYPE OF SENSOR FOR WATER LEVEL MEASURING INSTRUMENT|CODE TABLE|0|0|6|CODE TABLE|0|2
+002011|radiosondeType|table|RADIOSONDE TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+002012|radiosondeComputationalMethod|table|RADIOSONDE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002013|solarAndInfraredRadiationCorrection|table|SOLAR AND INFRARED RADIATION CORRECTION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002014|trackingTechniqueOrStatusOfSystem|table|TRACKING TECHNIQUE/STATUS OF SYSTEM USED|CODE TABLE|0|0|7|CODE TABLE|0|3
+002015|radiosondeCompleteness|table|RADIOSONDE COMPLETENESS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002016|radiosondeConfiguration|flag|RADIOSONDE CONFIGURATION|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+002017|correctionAlgorithmsForHumidityMeasurements|table|CORRECTION ALGORITHMS FOR HUMIDITY MEASUREMENTS|CODE TABLE|0|0|5|CODE TABLE|0|2
+002019|satelliteInstruments|table|SATELLITE INSTRUMENTS|CODE TABLE|0|0|11|CODE TABLE|0|4
+002020|satelliteClassification|table|SATELLITE CLASSIFICATION|CODE TABLE|0|0|9|CODE TABLE|0|3
+002021|satelliteInstrumentDataUsedInProcessing|flag|SATELLITE INSTRUMENT DATA USED IN PROCESSING|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+002022|satelliteDataProcessingTechnique|flag|SATELLITE DATA-PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002023|satelliteDerivedWindComputationMethod|table|SATELLITE-DERIVED WIND COMPUTATION METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002024|meanHumidityComputationalMethod|table|INTEGRATED MEAN HUMIDITY COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002025|satelliteChannelsUsedInComputation|flag|SATELLITE CHANNEL(S) USED IN COMPUTATION|FLAG TABLE|0|0|25|FLAG TABLE|0|9
+002026|crossTrackResolution|double|CROSS-TRACK RESOLUTION|m|2|0|12|m|2|4
+002027|alongTrackResolution|double|ALONG-TRACK RESOLUTION|m|2|0|12|m|2|4
+002028|segmentSizeAtNadirInXDirection|long|SEGMENT SIZE AT NADIR IN X-DIRECTION|m|0|0|18|m|0|6
+002029|segmentSizeAtNadirInYDirection|long|SEGMENT SIZE AT NADIR IN Y-DIRECTION|m|0|0|18|m|0|6
+002030|methodOfCurrentMeasurement|table|METHOD OF CURRENT MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002031|durationAndTimeOfCurrentMeasurement|table|DURATION AND TIME OF CURRENT MEASUREMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+002032|indicatorForDigitization|table|INDICATOR FOR DIGITIZATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002033|methodOfSalinityOrDepthMeasurement|table|METHOD OF SALINITY/DEPTH MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002034|drogueType|table|DROGUE TYPE|CODE TABLE|0|0|5|CODE TABLE|0|2
+002035|cableLength|long|CABLE LENGTH|m|0|0|9|m|0|3
+002036|buoyType|table|BUOY TYPE|CODE TABLE|0|0|2|CODE TABLE|0|1
+002037|methodOfTidalObservation|table|METHOD OF TIDAL OBSERVATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+002038|methodOfWaterTemperatureAndOrOrSalinityMeasurement|table|METHOD OF WATER TEMPERATURE AND/OR SALINITY MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002039|methodOfWetBulbTemperatureMeasurement|table|METHOD OF WET-BULB TEMPERATURE MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002040|methodOfRemovingVelocityAndMotionOfPlatformFromCurrent|table|METHOD OF REMOVING VELOCITY AND MOTION OF PLATFORM FROM CURRENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002041|methodForEstimatingReportsRelatedToSynopticFeatures|table|METHOD FOR ESTIMATING REPORTS RELATED TO SYNOPTIC FEATURES|CODE TABLE|0|0|6|CODE TABLE|0|2
+002042|indicatorForSeaSurfaceCurrentSpeed|table|INDICATOR FOR SEA-SURFACE CURRENT SPEED|CODE TABLE|0|0|2|CODE TABLE|0|1
+002044|indicatorForMethodOfCalculatingSpectralWaveData|table|INDICATOR FOR METHOD OF CALCULATING SPECTRAL WAVE DATA|CODE TABLE|0|0|4|CODE TABLE|0|2
+002045|platformType|table|INDICATOR FOR TYPE OF PLATFORM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002046|waveMeasurementInstrumentation|table|WAVE MEASUREMENT INSTRUMENTATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002047|deepOceanTsunameterType|table|DEEP-OCEAN TSUNAMETER TYPE|CODE TABLE|0|0|7|CODE TABLE|0|2
+002048|satelliteSensorIndicator|table|SATELLITE SENSOR INDICATOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002049|geostationarySatelliteDataProcessingTechnique|flag|GEOSTATIONARY SATELLITE DATA-PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002050|geostationarySounderSatelliteChannels|flag|GEOSTATIONARY SOUNDER SATELLITE CHANNELS USED|FLAG TABLE|0|0|20|FLAG TABLE|0|7
+002051|indicatorToSpecifyObservingMethodForExtremeTemperatures|table|INDICATOR TO SPECIFY OBSERVING METHOD FOR EXTREME TEMPERATURES|CODE TABLE|0|0|4|CODE TABLE|0|2
+002052|geostationaryImagerSatelliteChannels|flag|GEOSTATIONARY IMAGER SATELLITE CHANNELS USED|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+002053|goesBrightnessTemperatureCharacteristics|table|GOES-I/M BRIGHTNESS TEMPERATURE CHARACTERISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002054|goesSoundingsParameter|table|GOES-I/M SOUNDINGS PARAMETER CHARACTERISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002055|geostationarySoundingsStatisticalParameters|table|GEOSTATIONARY SOUNDINGS STATISTICAL PARAMETERS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002056|geostationarySoundingsAccuracyStatistics|table|GEOSTATIONARY SOUNDINGS ACCURACY STATISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002057|originOfFirstGuessInformationForGoesIOrMSoundings|table|ORIGIN OF FIRST-GUESS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002058|validTimesOfFirstGuessInformationForGoesIOrMSoundings|table|VALID TIMES OF FIRST-GUESS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002059|originOfAnalysisInformationForGoesIOrMSoundings|table|ORIGIN OF ANALYSIS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002060|originOfSurfaceInformationForGoesIOrMSoundings|table|ORIGIN OF SURFACE INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002061|aircraftNavigationalSystem|table|AIRCRAFT NAVIGATIONAL SYSTEM|CODE TABLE|0|0|3|CODE TABLE|0|1
+002062|aircraftDataRelaySystemType|table|TYPE OF AIRCRAFT DATA RELAY SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002063|aircraftRollAngle|double|AIRCRAFT ROLL ANGLE|deg|2|-18000|16|deg|2|5
+002064|aircraftRollAngleQuality|table|AIRCRAFT ROLL ANGLE QUALITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+002065|acarsGroundReceivingStation|string|ACARS GROUND-RECEIVING STATION|CCITT IA5|0|0|40|Character|0|5
+002066|radiosondeGroundReceivingSystem|table|RADIOSONDE GROUND RECEIVING SYSTEM|CODE TABLE|0|0|6|CODE TABLE|0|2
+002067|radiosondeOperatingFrequency|long|RADIOSONDE OPERATING FREQUENCY|Hz|-5|0|15|Hz|-5|5
+002070|originalSpecificationOfLatitudeOrLongitude|table|ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002071|spectrographicWavelength|double|SPECTROGRAPHIC WAVELENGTH|m|13|0|30|m|13|10
+002072|spectrographicWidth|double|SPECTROGRAPHIC WIDTH|m|13|0|30|m|13|10
+002080|balloonManufacturer|table|BALLOON MANUFACTURER|CODE TABLE|0|0|6|CODE TABLE|0|2
+002081|balloonType|table|TYPE OF BALLOON|CODE TABLE|0|0|5|CODE TABLE|0|2
+002082|weightOfBalloon|double|WEIGHT OF BALLOON|kg|3|0|12|kg|3|4
+002083|balloonShelterType|table|TYPE OF BALLOON SHELTER|CODE TABLE|0|0|4|CODE TABLE|0|2
+002084|typeOfGasUsedInBalloon|table|TYPE OF GAS USED IN BALLOON|CODE TABLE|0|0|4|CODE TABLE|0|2
+002085|amountOfGasUsedInBalloon|double|AMOUNT OF GAS USED IN BALLOON|kg|3|0|13|kg|3|4
+002086|balloonFlightTrainLength|double|BALLOON FLIGHT TRAIN LENGTH|m|1|0|10|m|1|4
+002091|entrySensor4Or20Ma|double|ENTRY SENSOR 4/20 MA|A|4|0|10|A|4|3
+002095|pressureSensorType|table|TYPE OF PRESSURE SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002096|temperatureSensorType|table|TYPE OF TEMPERATURE SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002097|humiditySensorType|table|TYPE OF HUMIDITY SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002099|polarization|table|POLARIZATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+002100|radarConstant|double|RADAR CONSTANT|dB|1|0|12|dB|1|4
+002101|antennaType|table|TYPE OF ANTENNA|CODE TABLE|0|0|4|CODE TABLE|0|2
+002102|antennaHeightAboveTowerBase|long|ANTENNA HEIGHT ABOVE TOWER BASE|m|0|0|8|m|0|3
+002103|radome|flag|RADOME|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+002104|antennaPolarization|table|ANTENNA POLARIZATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002105|maximumAntennaGain|long|MAXIMUM ANTENNA GAIN|dB|0|0|6|dB|0|2
+002106|3DbBeamwidth|double|3-DB BEAMWIDTH|deg|1|0|6|deg|1|2
+002107|sidelobeSuppression|long|SIDELOBE SUPPRESSION|dB|0|0|6|dB|0|2
+002108|crosspolDiscriminationOnAxis|long|CROSSPOL DISCRIMINATION (ON AXIS)|dB|0|0|6|dB|0|2
+002109|antennaSpeedAzimuth|double|ANTENNA SPEED (AZIMUTH)|deg/s|2|0|12|deg/s|2|4
+002110|antennaSpeedElevation|double|ANTENNA SPEED (ELEVATION)|deg/s|2|0|12|deg/s|2|4
+002111|radarIncidenceAngle|double|RADAR INCIDENCE ANGLE|deg|1|0|10|deg|1|4
+002112|radarLookAngle|double|RADAR LOOK ANGLE|deg|1|0|12|deg|1|4
+002113|numberOfAzimuthLooks|long|NUMBER OF AZIMUTH LOOKS|Numeric|0|0|4|Numeric|0|2
+002114|antennaEffectiveSurfaceArea|long|ANTENNA EFFECTIVE SURFACE AREA|m2|0|0|15|m2|0|5
+002115|surfaceObservingEquipmentType|table|TYPE OF SURFACE OBSERVING EQUIPMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+002116|percentageOf320MhzBandProcessed|long|PERCENTAGE OF 320 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002117|percentageOf80MhzBandProcessed|long|PERCENTAGE OF 80 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002118|percentageOf20MhzBandProcessed|long|PERCENTAGE OF 20 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002119|ra2InstrumentOperations|table|RA-2 INSTRUMENT OPERATIONS|CODE TABLE|0|0|3|CODE TABLE|0|1
+002120|oceanWaveFrequency|double|OCEAN WAVE FREQUENCY|Hz|3|0|10|Hz|3|4
+002121|meanFrequency|long|MEAN FREQUENCY|Hz|-8|0|7|Hz|-8|3
+002122|frequencyAgilityRange|long|FREQUENCY AGILITY RANGE|Hz|-6|-128|8|Hz|-6|3
+002123|peakPower|long|PEAK POWER|W|-4|0|7|W|-4|3
+002124|averagePower|long|AVERAGE POWER|W|-1|0|7|W|-1|3
+002125|pulseRepetitionFrequency|long|PULSE REPETITION FREQUENCY|Hz|-1|0|8|Hz|-1|3
+002126|pulseWidth|double|PULSE WIDTH|s|7|0|6|s|7|2
+002127|receiverIntermediateFrequency|long|RECEIVER INTERMEDIATE FREQUENCY|Hz|-6|0|7|Hz|-6|3
+002128|intermediateFrequencyBandwidth|long|INTERMEDIATE FREQUENCY BANDWIDTH|Hz|-5|0|6|Hz|-5|2
+002129|minimumDetectableSignal|long|MINIMUM DETECTABLE SIGNAL|dB|0|-150|5|dB|0|3
+002130|dynamicRange|long|DYNAMIC RANGE|dB|0|0|7|dB|0|3
+002131|sensitivityTimeControl|flag|SENSITIVITY TIME CONTROL (STC)|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+002132|azimuthPointingAccuracy|double|AZIMUTH POINTING ACCURACY|deg|2|0|6|deg|2|2
+002133|elevationPointingAccuracy|double|ELEVATION POINTING ACCURACY|deg|2|0|6|deg|2|2
+002134|antennaBeamAzimuth|double|ANTENNA BEAM AZIMUTH|deg|2|0|16|deg|2|5
+002135|antennaElevation|double|ANTENNA ELEVATION|deg|2|-9000|15|deg|2|5
+002136|rangeProcessedByRangeAttenuationCorrection|long|RANGE PROCESSED BY RANGE ATTENUATION CORRECTION|m|-3|0|16|m|-3|5
+002137|radarDualPrfRatio|table|RADAR DUAL PRF RATIO|CODE TABLE|0|0|4|CODE TABLE|0|2
+002138|antennaRotationDirection|table|ANTENNA ROTATION DIRECTION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002139|siralInstrumentConfiguration|table|SIRAL INSTRUMENT CONFIGURATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002140|satelliteRadarBeamAzimuthAngle|long|SATELLITE RADAR BEAM AZIMUTH ANGLE|deg|0|0|9|deg|0|3
+002141|measurementType|string|MEASUREMENT TYPE|CCITT IA5|0|0|24|Character|0|3
+002142|ozoneInstrument|string|OZONE INSTRUMENT SERIAL NUMBER/IDENTIFICATION|CCITT IA5|0|0|32|Character|0|4
+002143|ozoneInstrumentType|table|OZONE INSTRUMENT TYPE|CODE TABLE|0|0|7|CODE TABLE|0|3
+002144|lightSourceTypeForBrewerSpectrophotometer|table|LIGHT SOURCE TYPE FOR BREWER SPECTROPHOTOMETER|CODE TABLE|0|0|4|CODE TABLE|0|2
+002145|wavelengthSettingForDobsonInstruments|table|WAVELENGTH SETTING FOR DOBSON INSTRUMENTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002146|sourceConditionsForDobsonInstruments|table|SOURCE CONDITIONS FOR DOBSON INSTRUMENTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002147|methodOfTransmissionToCollectionCentre|table|METHOD OF TRANSMISSION TO COLLECTION CENTRE|CODE TABLE|0|0|6|CODE TABLE|0|2
+002148|dataCollectionLocationSystem|table|DATA COLLECTION AND/OR LOCATION SYSTEM|CODE TABLE|0|0|5|CODE TABLE|0|2
+002149|dataBuoyType|table|TYPE OF DATA BUOY|CODE TABLE|0|0|6|CODE TABLE|0|2
+002150|tovsOrAtovsOrAvhrrInstrumentationChannelNumber|table|TOVS/ATOVS/AVHRR INSTRUMENTATION CHANNEL NUMBER|CODE TABLE|0|0|6|CODE TABLE|0|2
+002151|radiometerIdentifier|table|RADIOMETER IDENTIFIER|CODE TABLE|0|0|11|CODE TABLE|0|4
+002152|satelliteInstrumentUsedInDataProcessing|flag|SATELLITE INSTRUMENT USED IN DATA PROCESSING|FLAG TABLE|0|0|31|FLAG TABLE|0|10
+002153|satelliteChannelCentreFrequency|long|SATELLITE CHANNEL CENTRE FREQUENCY|Hz|-8|0|26|Hz|-8|8
+002154|satelliteChannelBandWidth|long|SATELLITE CHANNEL BAND WIDTH|Hz|-8|0|26|Hz|-8|8
+002155|satelliteChannelWavelength|double|SATELLITE CHANNEL WAVELENGTH|m|9|0|16|m|9|5
+002156|percentageOfValidKuOceanRetrackerMeasurements|long|PERCENTAGE OF VALID KU OCEAN RETRACKER MEASUREMENTS|%|0|0|7|%|0|3
+002157|percentageOfValidSOceanRetrackerMeasurements|long|PERCENTAGE OF VALID S OCEAN RETRACKER MEASUREMENTS|%|0|0|7|%|0|3
+002158|ra2Instrument|flag|RA-2 INSTRUMENT|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+002159|mwrInstrument|flag|MWR INSTRUMENT|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002160|radarWaveLength|table|WAVE LENGTH OF THE RADAR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002163|heightAssignmentMethod|table|HEIGHT ASSIGNMENT METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002164|tracerCorrelationMethod|table|TRACER CORRELATION METHOD|CODE TABLE|0|0|3|CODE TABLE|0|1
+002165|radianceTypeFlags|flag|RADIANCE TYPE FLAGS|FLAG TABLE|0|0|15|FLAG TABLE|0|5
+002166|radianceType|table|RADIANCE TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002167|radianceComputationalMethod|table|RADIANCE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002168|hydrostaticPressureOfLowerEndOfCableThermistorString|long|HYDROSTATIC PRESSURE OF LOWER END OF CABLE (THERMISTOR STRING)|Pa|-3|0|16|kPa|0|5
+002169|anemometerType|table|ANEMOMETER TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002170|aircraftHumiditySensors|table|AIRCRAFT HUMIDITY SENSORS|CODE TABLE|0|0|6|CODE TABLE|0|2
+002171|instrumentSerialNumberForWaterTemperatureProfile|string|INSTRUMENT SERIAL NUMBER FOR WATER TEMPERATURE PROFILE MEASUREMENT|CCITT IA5|0|0|64|Character|0|8
+002172|productTypeForRetrievedAtmosphericGases|table|PRODUCT TYPE FOR RETRIEVED ATMOSPHERIC GASES|CODE TABLE|0|0|8|CODE TABLE|0|3
+002173|squareOfOffNadirAngle|double|SQUARE OF THE OFF-NADIR ANGLE|deg2|4|0|10|deg2|4|4
+002174|meanAcrossTrackPixelNumber|long|MEAN ACROSS TRACK PIXEL NUMBER|Numeric|0|0|9|Numeric|0|3
+002175|methodOfPrecipitationMeasurement|table|METHOD OF PRECIPITATION MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002176|methodOfStateOfGroundMeasurement|table|METHOD OF STATE OF GROUND MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002177|methodOfSnowDepthMeasurement|table|METHOD OF SNOW DEPTH MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002178|methodOfLiquidContentMeasurementOfPrecipitation|table|METHOD OF LIQUID CONTENT MEASUREMENT OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002179|skyConditionAlgorithmType|table|TYPE OF SKY CONDITION ALGORITHM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002180|mainPresentWeatherDetectingSystem|table|MAIN PRESENT WEATHER DETECTING SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002181|supplementaryPresentWeatherSensor|flag|SUPPLEMENTARY PRESENT WEATHER SENSOR|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+002182|visibilityMeasurementSystem|table|VISIBILITY MEASUREMENT SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002183|cloudDetectionSystem|table|CLOUD DETECTION SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002184|lightningDetectionSensorType|table|TYPE OF LIGHTNING DETECTION SENSOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002185|methodOfEvaporationMeasurement|table|METHOD OF EVAPORATION MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002186|capabilityToDetectPrecipitationPhenomena|flag|CAPABILITY TO DETECT PRECIPITATION PHENOMENA|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+002187|capabilityToDetectOtherWeatherPhenomena|flag|CAPABILITY TO DETECT OTHER WEATHER PHENOMENA|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+002188|capabilityToDetectObscuration|flag|CAPABILITY TO DETECT OBSCURATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+002189|capabilityToDiscriminateLightningStrikes|flag|CAPABILITY TO DISCRIMINATE LIGHTNING STRIKES|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+002190|lagrangianDrifterSubmergenceTimeSubmerged|long|LAGRANGIAN DRIFTER SUBMERGENCE (% TIME SUBMERGED)|%|0|0|7|%|0|3
+002191|geopotentialHeightCalculation|table|GEOPOTENTIAL HEIGHT CALCULATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+003010|methodOfSeaOrWaterCurrentMeasurement|table|METHOD OF SEA/WATER CURRENT MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+003011|methodOfDepthCalculation|table|METHOD OF DEPTH CALCULATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+003012|instrumentTypeOrSensorForDissolvedOxygenMeasurement|table|INSTRUMENT TYPE/SENSOR FOR DISSOLVED OXYGEN MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+004001|year|long|YEAR|a|0|0|12|a|0|4
+004002|month|long|MONTH|mon|0|0|4|mon|0|2
+004003|day|long|DAY|d|0|0|6|d|0|2
+004004|hour|long|HOUR|h|0|0|5|h|0|2
+004005|minute|long|MINUTE|min|0|0|6|min|0|2
+004006|second|long|SECOND|s|0|0|6|s|0|2
+004007|secondsWithinAMinuteMicrosecond|double|SECONDS WITHIN A MINUTE (MICROSECOND ACCURACY)|s|6|0|26|s|6|8
+004011|timeIncrement|long|TIME INCREMENT|a|0|-1024|11|a|0|4
+004012|timeIncrement|long|TIME INCREMENT|mon|0|-1024|11|mon|0|4
+004013|timeIncrement|long|TIME INCREMENT|d|0|-1024|11|d|0|4
+004014|timeIncrement|long|TIME INCREMENT|h|0|-1024|11|h|0|4
+004015|timeIncrement|long|TIME INCREMENT|min|0|-2048|12|min|0|4
+004016|timeIncrement|long|TIME INCREMENT|s|0|-4096|13|s|0|4
+004017|referenceTimePeriodForAccumulatedOrExtremeData|long|REFERENCE TIME PERIOD FOR ACCUMULATED OR EXTREME DATA|min|0|-1440|12|min|0|4
+004021|timePeriod|long|TIME PERIOD OR DISPLACEMENT|a|0|-1024|11|a|0|4
+004022|timePeriod|long|TIME PERIOD OR DISPLACEMENT|mon|0|-1024|11|mon|0|4
+004023|timePeriod|long|TIME PERIOD OR DISPLACEMENT|d|0|-1024|11|d|0|4
+004024|timePeriod|long|TIME PERIOD OR DISPLACEMENT|h|0|-2048|12|h|0|4
+004025|timePeriod|long|TIME PERIOD OR DISPLACEMENT|min|0|-2048|12|min|0|4
+004026|timePeriod|long|TIME PERIOD OR DISPLACEMENT|s|0|-4096|13|s|0|4
+004031|durationOfTimeRelatingToFollowingValue|long|DURATION OF TIME RELATING TO FOLLOWING VALUE|h|0|0|8|h|0|3
+004032|durationOfTimeRelatingToFollowingValue|long|DURATION OF TIME RELATING TO FOLLOWING VALUE|min|0|0|6|min|0|2
+004041|timeDifferenceUtcLmt|long|TIME DIFFERENCE, UTC - LMT|min|0|-1440|12|min|0|4
+004043|dayOfYear|long|DAY OF THE YEAR|d|0|0|9|d|0|3
+004051|principalTimeOfDailyReadingOfMaximumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MAXIMUM TEMPERATURE|h|0|0|5|h|0|2
+004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2
+004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2
+004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
+004066|timeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
+004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
+004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
+004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
+004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2
+004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
+005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005012|latitudeIncrement|double|LATITUDE INCREMENT (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005015|latitudeDisplacement|double|LATITUDE DISPLACEMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005016|latitudeDisplacement|double|LATITUDE DISPLACEMENT (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005021|bearingOrAzimuth|double|BEARING OR AZIMUTH|deg|2|0|16|deg|2|5
+005022|solarAzimuth|double|SOLAR AZIMUTH|deg|2|0|16|deg|2|5
+005023|sunToSatelliteAzimuthDifference|double|SUN TO SATELLITE AZIMUTH DIFFERENCE|deg|1|-1800|12|deg|1|4
+005030|directionSpectral|long|DIRECTION (SPECTRAL)|deg|0|0|12|deg|0|4
+005031|rowNumber|long|ROW NUMBER|Numeric|0|0|12|Numeric|0|4
+005033|pixelSizeOnHorizontal1|long|PIXEL SIZE ON HORIZONTAL - 1|m|-1|0|16|m|-1|5
+005034|alongTrackRowNumber|long|ALONG TRACK ROW NUMBER|Numeric|0|0|11|Numeric|0|4
+005035|xDimensionMaximumSize|long|MAXIMUM SIZE OF X-DIMENSION|Numeric|0|0|12|Numeric|0|4
+005036|shipTransectNumberAccordingToSoop|long|SHIP TRANSECT NUMBER ACCORDING TO SOOP|Numeric|0|0|7|Numeric|0|2
+005040|orbitNumber|long|ORBIT NUMBER|Numeric|0|0|24|Numeric|0|8
+005041|scanLineNumber|long|SCAN LINE NUMBER|Numeric|0|0|8|Numeric|0|3
+005042|channelNumber|long|CHANNEL NUMBER|Numeric|0|0|6|Numeric|0|2
+005043|fieldOfViewNumber|long|FIELD OF VIEW NUMBER|Numeric|0|0|8|Numeric|0|3
+005044|satelliteCycleNumber|long|SATELLITE CYCLE NUMBER|Numeric|0|0|11|Numeric|0|4
+005045|fieldOfRegardNumber|long|FIELD OF REGARD NUMBER|Numeric|0|0|8|Numeric|0|3
+005052|channelNumberIncrement|long|CHANNEL NUMBER INCREMENT|Numeric|0|0|5|Numeric|0|2
+005053|fieldOfViewNumberIncrement|long|FIELD OF VIEW NUMBER INCREMENT|Numeric|0|0|5|Numeric|0|2
+005060|yAngularPositionFromCentreOfGravity|double|Y ANGULAR POSITION FROM CENTRE OF GRAVITY|deg|6|-8000000|24|deg|6|8
+005061|zAngularPositionFromCentreOfGravity|double|Z ANGULAR POSITION FROM CENTRE OF GRAVITY|deg|6|-8000000|24|deg|6|8
+006001|longitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006002|longitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006011|longitudeIncrement|double|LONGITUDE INCREMENT (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006012|longitudeIncrement|double|LONGITUDE INCREMENT (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006015|longitudeDisplacement|double|LONGITUDE DISPLACEMENT (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006016|longitudeDisplacement|double|LONGITUDE DISPLACEMENT (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006021|distance|long|DISTANCE|m|-1|0|13|m|-1|4
+006029|waveNumber|double|WAVE NUMBER|/m|1|0|22|/m|1|7
+006030|waveNumberSpectral|double|WAVE NUMBER (SPECTRAL)|rad/m|5|0|13|rad/m|5|4
+006031|columnNumber|long|COLUMN NUMBER|Numeric|0|0|12|Numeric|0|4
+006033|pixelSizeOnHorizontal2|long|PIXEL SIZE ON HORIZONTAL - 2|m|-1|0|16|m|-1|5
+006034|crossTrackCellNumber|long|CROSS-TRACK CELL NUMBER|Numeric|0|0|7|Numeric|0|3
+006035|yDimensionMaximumSize|long|MAXIMUM SIZE OF Y-DIMENSION|Numeric|0|0|12|Numeric|0|4
+006040|radiusOfConfidence|long|RADIUS OF CONFIDENCE|m|0|0|13|m|0|4
+007001|heightOfStation|long|HEIGHT OF STATION|m|0|-400|15|m|0|5
+007002|height|long|HEIGHT OR ALTITUDE|m|-1|-40|16|m|-1|5
+007003|geopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|m2 s-2|-1|6
+007004|pressure|long|PRESSURE|Pa|-1|0|14|Pa|-1|5
+007005|heightIncrement|long|HEIGHT INCREMENT|m|0|-400|12|m|0|4
+007006|heightAboveStation|long|HEIGHT ABOVE STATION|m|0|0|15|m|0|5
+007007|height|long|HEIGHT|m|0|-1000|17|m|0|6
+007008|geopotential|long|GEOPOTENTIAL|m2 s-2|0|-10000|20|m2 s-2|0|7
+007009|geopotentialHeight|long|GEOPOTENTIAL HEIGHT|gpm|0|-1000|17|gpm|0|5
+007010|flightLevel|long|FLIGHT LEVEL|m|0|-1024|16|ft|-1|5
+007012|gridPointAltitude|double|GRID POINT ALTITUDE|m|2|-50000|20|m|2|7
+007021|elevation|double|ELEVATION|deg|2|-9000|15|deg|2|5
+007022|solarElevation|double|SOLAR ELEVATION|deg|2|-9000|15|deg|2|5
+007024|satelliteZenithAngle|double|SATELLITE ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+007025|solarZenithAngle|double|SOLAR ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+007026|satelliteZenithAngle|double|SATELLITE ZENITH ANGLE|deg|4|-900000|21|deg|4|7
+007030|heightOfStationGroundAboveMeanSeaLevel|double|HEIGHT OF STATION GROUND ABOVE MEAN SEA LEVEL|m|1|-4000|17|m|1|5
+007031|heightOfBarometerAboveMeanSeaLevel|double|HEIGHT OF BAROMETER ABOVE MEAN SEA LEVEL|m|1|-4000|17|m|1|5
+007032|heightOfSensorAboveLocalGroundOrDeckOfMarinePlatform|double|HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM)|m|2|0|16|m|2|5
+007033|heightOfSensorAboveWaterSurface|double|HEIGHT OF SENSOR ABOVE WATER SURFACE|m|1|0|12|m|1|4
+007035|zDimensionMaximumSize|long|MAXIMUM SIZE OF Z-DIMENSION|Numeric|0|0|12|Numeric|0|4
+007036|levelIndexOfZ|long|LEVEL INDEX OF Z|Numeric|0|0|12|Numeric|0|4
+007040|impactParameter|double|IMPACT PARAMETER|m|1|62000000|22|m|1|8
+007061|depthBelowLandSurface|double|DEPTH BELOW LAND SURFACE|m|2|0|14|m|2|5
+007062|depthBelowWaterSurface|double|DEPTH BELOW SEA/WATER SURFACE|m|1|0|17|m|1|6
+007063|depthBelowWaterSurface|double|DEPTH BELOW SEA/WATER SURFACE (CM)|m|2|0|20|m|2|7
+007064|representativeHeightOfSensorAboveStation|long|REPRESENTATIVE HEIGHT OF SENSOR ABOVE STATION|m|0|0|4|m|0|2
+007065|waterPressure|long|WATER PRESSURE|Pa|-3|0|17|Pa|-3|6
+007070|drogueDepth|long|DROGUE DEPTH|m|0|0|10|m|0|4
+008001|verticalSoundingSignificance|flag|VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|7|FLAG TABLE|0|3
+008002|verticalSignificanceSurfaceObservations|table|VERTICAL SIGNIFICANCE (SURFACE OBSERVATIONS)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008003|verticalSignificanceSatelliteObservations|table|VERTICAL SIGNIFICANCE (SATELLITE OBSERVATIONS)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008004|phaseOfAircraftFlight|table|PHASE OF AIRCRAFT FLIGHT|CODE TABLE|0|0|3|CODE TABLE|0|1
+008005|meteorologicalAttributeSignificance|table|METEOROLOGICAL ATTRIBUTE SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008006|ozoneVerticalSoundingSignificance|flag|OZONE VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+008007|dimensionalSignificance|table|DIMENSIONAL SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008008|radiationVerticalSoundingSignificance|flag|RADIATION VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+008009|detailedPhaseOfFlight|table|DETAILED PHASE OF FLIGHT|CODE TABLE|0|0|4|CODE TABLE|0|2
+008010|surfaceQualifierForTemperatureData|table|SURFACE QUALIFIER (TEMPERATURE DATA)|CODE TABLE|0|0|5|CODE TABLE|0|2
+008011|meteorologicalFeature|table|METEOROLOGICAL FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008012|landOrSeaQualifier|table|LAND/SEA QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008013|dayOrNightQualifier|table|DAY/NIGHT QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008014|qualifierForRunwayVisualRange|table|QUALIFIER FOR RUNWAY VISUAL RANGE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008015|significantQualifierForSensor|table|SIGNIFICANT QUALIFIER FOR SENSOR|CODE TABLE|0|0|3|CODE TABLE|0|1
+008016|changeQualifierOfATrendTypeForecastOrAnAerodromeForecast|table|CHANGE QUALIFIER OF A TREND-TYPE FORECAST OR AN AERODROME FORECAST|CODE TABLE|0|0|3|CODE TABLE|0|1
+008017|qualifierOfTimeWhenForecastChangeExpected|table|QUALIFIER OF THE TIME WHEN THE FORECAST CHANGE IS EXPECTED|CODE TABLE|0|0|2|CODE TABLE|0|1
+008018|seawindsLandOrIceSurfaceType|flag|SEAWINDS LAND/ICE SURFACE TYPE|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+008019|qualifierForFollowingCentreIdentifier|table|QUALIFIER FOR FOLLOWING CENTRE IDENTIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008020|totalNumberOfMissingEntitiesWithRespectToAccumulationOrAverage|long|TOTAL NUMBER OF MISSING ENTITIES (WITH RESPECT TO ACCUMULATION OR AVERAGE)|Numeric|0|0|16|Numeric|0|5
+008021|timeSignificance|table|TIME SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+008022|totalNumberWithRespectToAccumulationOrAverage|long|TOTAL NUMBER (WITH RESPECT TO ACCUMULATION OR AVERAGE)|Numeric|0|0|16|Numeric|0|5
+008023|firstOrderStatistics|table|FIRST-ORDER STATISTICS|CODE TABLE|0|0|6|CODE TABLE|0|2
+008024|differenceStatistics|table|DIFFERENCE STATISTICS|CODE TABLE|0|0|6|CODE TABLE|0|2
+008025|timeDifferenceQualifier|table|TIME DIFFERENCE QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008026|matrixSignificance|table|MATRIX SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008029|surfaceType|table|SURFACE TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+008030|manualOnCodesVolumeI1SectionCCodeTableFromWhichDataAreDerived|long|MANUAL ON CODES (VOLUME I.1, SECTION C) CODE TABLE FROM WHICH DATA ARE DERIVED|Numeric|0|0|13|Numeric|0|4
+008031|dataCategoryCrexTableA|long|DATA CATEGORY - CREX TABLE A|Numeric|0|0|8|Numeric|0|3
+008032|statusOfOperation|table|STATUS OF OPERATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+008033|methodOfDerivationOfPercentageConfidence|table|METHOD OF DERIVATION OF PERCENTAGE CONFIDENCE|CODE TABLE|0|0|7|CODE TABLE|0|3
+008035|monitoringExerciseType|table|TYPE OF MONITORING EXERCISE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008036|typeOfCentreOrStationPerformingMonitoring|table|TYPE OF CENTRE OR STATION PERFORMING MONITORING|CODE TABLE|0|0|3|CODE TABLE|0|1
+008039|timeSignificanceAviationForecast|table|TIME SIGNIFICANCE (AVIATION FORECAST)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008040|flightLevelSignificance|table|FLIGHT LEVEL SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008041|dataSignificance|table|DATA SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+008042|extendedVerticalSoundingSignificance|flag|EXTENDED VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+008043|atmosphericChemical|table|ATMOSPHERIC CHEMICAL OR PHYSICAL CONSTITUENT TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+008044|casRegistryNumber|string|CAS REGISTRY NUMBER|CCITT IA5|0|0|88|Character|0|11
+008046|atmosphericChemical|table|ATMOSPHERIC CHEMICAL OR PHYSICAL CONSTITUENT TYPE|Common CODE TABLE C-14|0|0|16|Common CODE TABLE C-14|0|5
+008049|numberOfObservations|long|NUMBER OF OBSERVATIONS|Numeric|0|0|8|Numeric|0|3
+008050|qualifierForNumberOfMissingValuesInCalculationOfStatistic|table|QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATISTIC|CODE TABLE|0|0|4|CODE TABLE|0|2
+008051|qualifierForNumberOfMissingValuesInCalculationOfStatistic|table|QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATISTIC|CODE TABLE|0|0|3|CODE TABLE|0|1
+008052|conditionForWhichNumberOfDaysOfOccurrenceFollows|table|CONDITION FOR WHICH NUMBER OF DAYS OF OCCURRENCE FOLLOWS|CODE TABLE|0|0|5|CODE TABLE|0|2
+008053|dayOfOccurrenceQualifier|table|DAY OF OCCURRENCE QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008054|qualifierForWindSpeedOrWindGusts|table|QUALIFIER FOR WIND SPEED OR WIND GUSTS|CODE TABLE|0|0|3|CODE TABLE|0|1
+008060|sampleScanningModeSignificance|table|SAMPLE SCANNING MODE SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008065|sunGlintIndicator|table|SUN-GLINT INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+008066|semiTransparencyIndicator|table|SEMI-TRANSPARENCY INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+008070|tovsOrAtovsProductQualifier|table|TOVS/ATOVS PRODUCT QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008072|pixelType|table|PIXEL(S) TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008074|altimeterEchoType|table|ALTIMETER ECHO TYPE|CODE TABLE|0|0|2|CODE TABLE|0|1
+008075|orbitQualifier|table|ASCENDING/DESCENDING ORBIT QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008076|band|table|TYPE OF BAND|CODE TABLE|0|0|6|CODE TABLE|0|2
+008077|radiometerSensedSurfaceType|table|RADIOMETER SENSED SURFACE TYPE|CODE TABLE|0|0|7|CODE TABLE|0|3
+008079|productStatus|table|PRODUCT STATUS|CODE TABLE|0|0|4|CODE TABLE|0|2
+008080|qualifierForGtsppQualityFlag|table|QUALIFIER FOR GTSPP QUALITY FLAG|CODE TABLE|0|0|6|CODE TABLE|0|2
+008081|equipmentType|table|TYPE OF EQUIPMENT|CODE TABLE|0|0|6|CODE TABLE|0|2
+008082|modificationOfSensorHeightToAnotherValue|table|MODIFICATION OF SENSOR HEIGHT TO ANOTHER VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008083|nominalValueIndicator|flag|NOMINAL VALUE INDICATOR|FLAG TABLE|0|0|15|FLAG TABLE|0|5
+008085|beamIdentifier|table|BEAM IDENTIFIER|CODE TABLE|0|0|3|CODE TABLE|0|1
+008086|verticalSignificanceForNwp|flag|VERTICAL SIGNIFICANCE FOR NWP|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+008087|cornerPositionOfObservation|table|CORNER POSITION OF OBSERVATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+008090|decimalScaleOfFollowingSignificands|long|DECIMAL SCALE OF FOLLOWING SIGNIFICANDS|Numeric|0|-127|8|Numeric|0|3
+010001|heightOfLandSurface|long|HEIGHT OF LAND SURFACE|m|0|-400|15|m|0|5
+010002|height|long|HEIGHT|m|-1|-40|16|m|-1|5
+010003|geopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|m2 s-2|-1|6
+010004|pressure|long|PRESSURE|Pa|-1|0|14|Pa|-1|5
+010007|height|long|HEIGHT|m|0|-1000|17|m|0|6
+010008|geopotential|long|GEOPOTENTIAL|m2 s-2|0|-10000|20|m2 s-2|0|7
+010009|geopotentialHeight|long|GEOPOTENTIAL HEIGHT|gpm|0|-1000|17|gpm|0|5
+010010|minimumPressureReducedToMeanSeaLevel|long|MINIMUM PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010011|maximumPressureReducedToMeanSeaLevel|long|MAXIMUM PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010031|DistanceFromEarthCentreInDirectionOfNorthPole|double|IN DIRECTION OF THE NORTH POLE, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10
+010032|satelliteDistanceToEarthCentre|double|SATELLITE DISTANCE TO EARTH'S CENTRE|m|1|0|27|m|2|9
+010033|altitudePlatformToEllipsoid|double|ALTITUDE (PLATFORM TO ELLIPSOID)|m|1|0|27|m|2|9
+010034|earthRadius|double|EARTH'S RADIUS|m|1|0|27|m|2|9
+010035|earthLocalRadiusOfCurvature|double|EARTH'S LOCAL RADIUS OF CURVATURE|m|1|62000000|22|m|1|8
+010036|geoidUndulation|double|GEOID UNDULATION|m|2|-15000|15|m|2|6
+010040|numberOfRetrievedLayers|long|NUMBER OF RETRIEVED LAYERS|Numeric|0|0|10|Numeric|0|4
+010050|standardDeviationAltitude|double|STANDARD DEVIATION ALTITUDE|m|2|0|16|m|2|5
+010051|pressureReducedToMeanSeaLevel|long|PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010052|altimeterSettingQnh|long|ALTIMETER SETTING (QNH)|Pa|-1|0|14|Pa|-1|5
+010053|globalNavigationSatelliteSystemAltitude|long|GLOBAL NAVIGATION SATELLITE SYSTEM ALTITUDE|m|0|-1000|17|m|0|5
+010060|pressureChange|long|PRESSURE CHANGE|Pa|-1|-1024|11|Pa|-1|4
+010061|3HourPressureChange|long|3-HOUR PRESSURE CHANGE|Pa|-1|-500|10|Pa|-1|4
+010062|24HourPressureChange|long|24-HOUR PRESSURE CHANGE|Pa|-1|-1000|11|Pa|-1|4
+010063|characteristicOfPressureTendency|table|CHARACTERISTIC OF PRESSURE TENDENCY|CODE TABLE|0|0|4|CODE TABLE|0|2
+010064|sigmetCruisingLevel|table|SIGMET CRUISING LEVEL|CODE TABLE|0|0|3|CODE TABLE|0|1
+010070|indicatedAircraftAltitude|long|INDICATED AIRCRAFT ALTITUDE|m|0|-400|16|m|0|5
+010079|offNadirAngleOfTheSatelliteFromPlatformData|double|OFF-NADIR ANGLE OF THE SATELLITE FROM PLATFORM DATA|deg|4|0|16|deg|4|5
+010080|viewingZenithAngle|double|VIEWING ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+010081|cogAltitudeAboveReferenceEllipsoid|double|ALTITUDE OF COG ABOVE REFERENCE ELLIPSOID|m|3|0|31|m|3|10
+010082|instantaneousAltitudeRate|double|INSTANTANEOUS ALTITUDE RATE|m/s|3|-65536|17|m/s|3|6
+010083|squaredOffNadirAngleOfSatelliteFromPlatformData|double|SQUARED OFF-NADIR ANGLE OF THE SATELLITE FROM PLATFORM DATA|deg2|2|0|16|deg2|2|5
+010084|squaredOffNadirAngleOfSatelliteFromWaveformData|double|SQUARED OFF-NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA|deg2|2|0|16|deg2|2|5
+010085|meanSeaSurfaceHeight|double|MEAN SEA-SURFACE HEIGHT|m|3|-131072|18|m|3|6
+010086|geoidHeight|double|GEOID'S HEIGHT|m|3|-131072|18|m|3|6
+010087|oceanDepthOrLandElevation|double|OCEAN DEPTH/LAND ELEVATION|m|1|-131072|18|m|1|6
+010088|totalGeocentricOceanTideHeightSolution1|double|TOTAL GEOCENTRIC OCEAN TIDE HEIGHT (SOLUTION 1)|m|3|-32768|16|m|3|5
+010089|totalGeocentricOceanTideHeightSolution2|double|TOTAL GEOCENTRIC OCEAN TIDE HEIGHT (SOLUTION 2)|m|3|-32768|16|m|3|5
+010090|longPeriodTideHeight|double|LONG PERIOD TIDE HEIGHT|m|3|-32768|16|m|3|5
+010091|tidalLoadingHeight|double|TIDAL LOADING HEIGHT|m|3|-32768|16|m|3|5
+010092|solidEarthTideHeight|double|SOLID EARTH TIDE HEIGHT|m|3|-32768|16|m|3|5
+010093|geocentricPoleTideHeight|double|GEOCENTRIC POLE TIDE HEIGHT|m|3|-32768|16|m|3|5
+010095|heightOfAtmosphere|long|HEIGHT OF ATMOSPHERE USED|m|0|0|16|m|0|5
+010096|meanDynamicTopography|double|MEAN DYNAMIC TOPOGRAPHY|m|3|-131072|18|m|3|6
+010097|meanSeaSurfaceHeightFromAltimeterOnly|double|MEAN SEA-SURFACE HEIGHT FROM ALTIMETER ONLY|m|3|-131072|18|m|3|6
+010098|loadingTideHeightGeocentricOceanTideSolution1|double|LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 1|m|4|-2000|12|m|4|4
+010099|loadingTideHeightGeocentricOceanTideSolution2|double|LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 2|m|4|-2000|12|m|4|4
+010100|nonEquilibriumLongPeriodTideHeight|double|NON-EQUILIBRIUM LONG PERIOD TIDE HEIGHT|m|4|-2000|12|m|4|4
+010101|squaredOffNadirAngleOfSatelliteFromWaveformData|double|SQUARED OFF-NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA|deg2|2|-32768|16|deg2|2|5
+010102|seaSurfaceHeightAnomaly|double|SEA-SURFACE HEIGHT ANOMALY|m|3|-32768|16|m|3|5
+011001|windDirection|long|WIND DIRECTION|deg|0|0|9|deg|0|3
+011002|windSpeed|double|WIND SPEED|m/s|1|0|12|m/s|1|4
+011003|u|double|U-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011004|v|double|V-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011005|w|double|W-COMPONENT|Pa/s|1|-512|10|Pa/s|1|4
+011006|w|double|W-COMPONENT|m/s|2|-4096|13|m/s|2|4
+011010|windDirectionAssociatedWithWindSpeedWhichFollows|long|WIND DIRECTION ASSOCIATED WITH WIND SPEED WHICH FOLLOWS|deg|0|0|9|deg|0|3
+011011|windDirectionAt10M|long|WIND DIRECTION AT 10 M|deg|0|0|9|deg|0|3
+011012|windSpeedAt10M|double|WIND SPEED AT 10 M|m/s|1|0|12|m/s|1|4
+011013|windDirectionAt5M|long|WIND DIRECTION AT 5 M|deg|0|0|9|deg|0|3
+011014|windSpeedAt5M|double|WIND SPEED AT 5 M|m/s|1|0|12|m/s|1|4
+011016|extremeCounterclockwiseWindDirectionOfAVariableWind|long|EXTREME COUNTERCLOCKWISE WIND DIRECTION OF A VARIABLE WIND|deg|0|0|9|deg|0|3
+011017|extremeClockwiseWindDirectionOfAVariableWind|long|EXTREME CLOCKWISE WIND DIRECTION OF A VARIABLE WIND|deg|0|0|9|deg|0|3
+011019|steadinessOfWind|long|STEADINESS OF WIND|%|0|0|7|%|0|3
+011021|relativeVorticity|double|RELATIVE VORTICITY|/s|9|-65536|17|/s|9|6
+011022|divergence|double|DIVERGENCE|/s|9|-65536|17|/s|9|6
+011023|velocityPotential|long|VELOCITY POTENTIAL|m2/s|-2|-65536|17|m2/s|-2|6
+011030|extendedDegreeOfTurbulence|table|EXTENDED DEGREE OF TURBULENCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+011031|degreeOfTurbulence|table|DEGREE OF TURBULENCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+011032|heightOfBaseOfTurbulence|long|HEIGHT OF BASE OF TURBULENCE|m|-1|-40|16|m|-1|5
+011033|heightOfTopOfTurbulence|long|HEIGHT OF TOP OF TURBULENCE|m|-1|-40|16|m|-1|5
+011034|verticalGustVelocity|double|VERTICAL GUST VELOCITY|m/s|1|-1024|11|m/s|1|4
+011035|verticalGustAcceleration|double|VERTICAL GUST ACCELERATION|m s-2|2|-8192|14|m s-2|2|5
+011036|maximumDerivedEquivalentVerticalGustSpeed|double|MAXIMUM DERIVED EQUIVALENT VERTICAL GUST SPEED|m/s|1|0|10|m/s|1|4
+011037|turbulenceIndex|table|TURBULENCE INDEX|CODE TABLE|0|0|6|CODE TABLE|0|2
+011038|timeOfOccurrenceOfPeakEddyDissipationRate|table|TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|5|CODE TABLE|0|2
+011039|extendedTimeOfOccurrenceOfPeakEddyDissipationRate|table|EXTENDED TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|6|CODE TABLE|0|2
+011040|maximumWindSpeedMeanWind|double|MAXIMUM WIND SPEED (MEAN WIND)|m/s|1|0|12|m/s|1|4
+011041|maximumWindGustSpeed|double|MAXIMUM WIND GUST SPEED|m/s|1|0|12|m/s|1|4
+011042|maximumWindSpeed10MinuteMeanWind|double|MAXIMUM WIND SPEED (10-MINUTE MEAN WIND)|m/s|1|0|12|m/s|1|4
+011043|maximumWindGustDirection|long|MAXIMUM WIND GUST DIRECTION|deg|0|0|9|deg|0|3
+011044|meanWindDirectionForSurfaceTo1500M|long|MEAN WIND DIRECTION FOR SURFACE - 1 500 M (5 000 FEET)|deg|0|0|9|deg|0|3
+011045|meanWindSpeedForSurfaceTo1500M|double|MEAN WIND SPEED FOR SURFACE - 1 500 M (5 000 FEET)|m/s|1|0|12|m/s|1|4
+011046|maximumInstantaneousWindSpeed|double|MAXIMUM INSTANTANEOUS WIND SPEED|m/s|1|0|12|m/s|1|4
+011047|maximumInstantaneousWindSpeedOver10Minutes|double|MAXIMUM INSTANTANEOUS WIND SPEED OVER 10 MINUTES|m/s|1|0|12|m/s|1|4
+011049|windDirectionStandardDeviation|long|STANDARD DEVIATION OF WIND DIRECTION|deg|0|0|9|deg|0|3
+011050|standardDeviationOfHorizontalWindSpeed|double|STANDARD DEVIATION OF HORIZONTAL WIND SPEED|m/s|1|0|12|m/s|1|4
+011051|standardDeviationOfVerticalWindSpeed|double|STANDARD DEVIATION OF VERTICAL WIND SPEED|m/s|1|0|8|m/s|1|3
+011052|formalUncertaintyInWindSpeed|double|FORMAL UNCERTAINTY IN WIND SPEED|m/s|2|0|13|m/s|2|5
+011053|formalUncertaintyInWindDirection|double|FORMAL UNCERTAINTY IN WIND DIRECTION|deg|2|0|15|deg|2|5
+011054|meanWindDirectionFor1500To3000M|long|MEAN WIND DIRECTION FOR 1 500 - 3 000 M|deg|0|0|9|deg|0|3
+011055|meanWindSpeedFor1500To3000M|double|MEAN WIND SPEED FOR 1 500 - 3 000 M|m/s|1|0|12|m/s|1|4
+011061|absoluteWindShearIn1KmLayerBelow|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW|m/s|1|0|12|m/s|1|4
+011062|absoluteWindShearIn1KmLayerAbove|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE|m/s|1|0|12|m/s|1|4
+011070|designatorOfRunwayAffectedByWindShearIncludingAll|string|DESIGNATOR OF THE RUNWAY AFFECTED BY WIND SHEAR (INCLUDING ALL)|CCITT IA5|0|0|32|Character|0|4
+011071|turbulentVerticalMomentumFlux|double|TURBULENT VERTICAL MOMENTUM FLUX|m2 s-2|3|-128|14|m2 s-2|3|5
+011072|turbulentVerticalBuoyancyFlux|double|TURBULENT VERTICAL BUOYANCY FLUX|K m s-1|3|-128|11|K m s-1|3|4
+011073|turbulentKineticEnergy|double|TURBULENT KINETIC ENERGY|m2 s-2|2|-1024|13|m2 s-2|2|4
+011074|dissipationEnergy|double|DISSIPATION ENERGY|m2 s-2|2|-1024|10|m2 s-2|2|4
+011075|meanTurbulenceIntensityEddyDissipationRate|double|MEAN TURBULENCE INTENSITY (EDDY DISSIPATION RATE)|m2/3 s-1|2|0|8|m2/3 s-1|2|3
+011076|peakTurbulenceIntensityEddyDissipationRate|double|PEAK TURBULENCE INTENSITY (EDDY DISSIPATION RATE)|m2/3 s-1|2|0|8|m2/3 s-1|2|3
+011077|reportingIntervalOrAveragingTimeForEddyDissipationRate|long|REPORTING INTERVAL OR AVERAGING TIME FOR EDDY DISSIPATION RATE|s|0|0|12|s|0|4
+011081|modelWindDirectionAt10M|double|MODEL WIND DIRECTION AT 10 M|deg|2|0|16|deg|2|5
+011082|modelWindSpeedAt10M|double|MODEL WIND SPEED AT 10 M|m/s|2|0|14|m/s|2|4
+011083|windSpeed|long|WIND SPEED|km/h|0|0|9|km/h|0|3
+011084|windSpeed|long|WIND SPEED|kt|0|0|8|kt|0|3
+011085|maximumWindGustSpeed|long|MAXIMUM WIND GUST SPEED|km/h|0|0|9|km/h|0|3
+011086|maximumWindGustSpeed|long|MAXIMUM WIND GUST SPEED|kt|0|0|8|kt|0|3
+011095|u|double|U-COMPONENT OF THE MODEL WIND VECTOR|m/s|1|-4096|13|m/s|1|4
+011096|v|double|V-COMPONENT OF THE MODEL WIND VECTOR|m/s|1|-4096|13|m/s|1|4
+011097|windSpeedFromAltimeter|double|WIND SPEED FROM ALTIMETER|m/s|2|0|12|m/s|2|4
+011098|windSpeedFromRadiometer|double|WIND SPEED FROM RADIOMETER|m/s|2|0|12|m/s|2|4
+011100|aircraftTrueAirspeed|double|AIRCRAFT TRUE AIRSPEED|m/s|1|0|12|m/s|1|4
+011101|aircraftGroundSpeedUComponent|double|AIRCRAFT GROUND SPEED U-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011102|aircraftGroundSpeedVComponent|double|AIRCRAFT GROUND SPEED V-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011103|aircraftGroundSpeedWComponent|double|AIRCRAFT GROUND SPEED W-COMPONENT|m/s|1|-512|10|m/s|1|3
+011104|aircraftTrueHeading|long|AIRCRAFT TRUE HEADING|deg|0|0|9|deg|0|3
+011105|edrAlgorithmVersion|long|EDR ALGORITHM VERSION|Numeric|0|0|6|Numeric|0|2
+011106|runningMinimumConfidence|long|RUNNING MINIMUM CONFIDENCE|Numeric|1|0|4|Numeric|1|2
+011107|maximumNumberBadInputs|long|MAXIMUM NUMBER BAD INPUTS|Numeric|0|0|5|Numeric|0|2
+011108|peakLocation|long|PEAK LOCATION|Numeric|1|0|4|Numeric|1|2
+011109|numberOfGoodEdr|long|NUMBER OF GOOD EDR|Numeric|0|0|4|Numeric|0|2
+012001|airTemperature|double|TEMPERATURE/AIR TEMPERATURE|K|1|0|12|C|1|3
+012002|wetBulbTemperature|double|WET-BULB TEMPERATURE|K|1|0|12|C|1|3
+012003|dewpointTemperature|double|DEWPOINT TEMPERATURE|K|1|0|12|C|1|3
+012004|airTemperatureAt2M|double|AIR TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012005|wetBulbTemperatureAt2M|double|WET-BULB TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012006|dewpointTemperatureAt2M|double|DEWPOINT TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012007|virtualTemperature|double|VIRTUAL TEMPERATURE|K|1|0|12|C|1|3
+012011|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|C|1|3
+012012|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|C|1|3
+012013|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE, PAST 12 HOURS|K|1|0|12|C|1|3
+012014|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|1|0|12|C|1|3
+012015|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|1|0|12|C|1|3
+012016|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|1|0|12|C|1|3
+012017|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|1|0|12|C|1|3
+012021|maximumTemperatureAt2M|double|MAXIMUM TEMPERATURE AT 2 M|K|2|0|16|C|2|4
+012022|minimumTemperatureAt2M|double|MINIMUM TEMPERATURE AT 2 M|K|2|0|16|C|2|4
+012023|temperature|long|TEMPERATURE|C|0|-99|8|C|0|2
+012024|dewpointTemperature|long|DEWPOINT TEMPERATURE|C|0|-99|8|C|0|2
+012030|soilTemperature|double|SOIL TEMPERATURE|K|1|0|12|C|1|3
+012049|temperatureChangeOverSpecifiedPeriod|long|TEMPERATURE CHANGE OVER SPECIFIED PERIOD|K|0|-30|6|C|0|2
+012051|standardDeviationTemperature|double|STANDARD DEVIATION TEMPERATURE|K|1|0|10|C|1|3
+012052|highestDailyMeanTemperature|double|HIGHEST DAILY MEAN TEMPERATURE|K|1|0|12|C|1|3
+012053|lowestDailyMeanTemperature|double|LOWEST DAILY MEAN TEMPERATURE|K|1|0|12|C|1|3
+012060|awsEnclosureInternalTemperature|double|AWS ENCLOSURE INTERNAL TEMPERATURE|K|1|0|12|C|1|3
+012061|skinTemperature|double|SKIN TEMPERATURE|K|1|0|12|C|1|3
+012062|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|1|0|12|C|1|3
+012063|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|1|0|12|C|1|3
+012064|instrumentTemperature|double|INSTRUMENT TEMPERATURE|K|1|0|12|K|1|4
+012065|standardDeviationBrightnessTemperature|double|STANDARD DEVIATION BRIGHTNESS TEMPERATURE|K|1|0|12|K|1|4
+012066|antennaTemperature|double|ANTENNA TEMPERATURE|K|2|0|16|C|2|5
+012070|warmLoadTemperature|double|WARM LOAD TEMPERATURE|K|2|0|16|K|2|5
+012071|coldestClusterTemperature|double|COLDEST CLUSTER TEMPERATURE|K|1|0|12|K|1|4
+012072|radiance|double|RADIANCE|W m-2 sr-1|6|0|31|W m-2 sr-1|6|9
+012075|spectralRadiance|long|SPECTRAL RADIANCE|W m-3 sr-1|-3|0|16|W m-3 sr-1|-3|5
+012076|radiance|double|RADIANCE|W m-2 sr-1|3|0|16|W m-2 sr-1|3|5
+012080|brightnessTemperatureRealPart|double|BRIGHTNESS TEMPERATURE REAL PART|K|2|-10000|16|K|2|5
+012081|brightnessTemperatureImaginaryPart|double|BRIGHTNESS TEMPERATURE IMAGINARY PART|K|2|-10000|16|K|2|5
+012082|pixelRadiometricAccuracy|double|PIXEL RADIOMETRIC ACCURACY|K|2|0|12|K|2|4
+012101|airTemperature|double|TEMPERATURE/AIR TEMPERATURE|K|2|0|16|C|2|4
+012102|wetBulbTemperature|double|WET-BULB TEMPERATURE|K|2|0|16|C|2|4
+012103|dewpointTemperature|double|DEWPOINT TEMPERATURE|K|2|0|16|C|2|4
+012104|airTemperatureAt2M|double|AIR TEMPERATURE AT 2 M|K|2|0|16|C|2|4
+012105|webBulbTemperatureAt2M|double|WEB-BULB TEMPERATURE AT 2 M|K|2|0|16|C|2|4
+012106|dewpointTemperatureAt2M|double|DEWPOINT TEMPERATURE AT 2 M|K|2|0|16|C|2|4
+012107|virtualTemperature|double|VIRTUAL TEMPERATURE|K|2|0|16|C|2|4
+012111|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|2|0|16|C|2|4
+012112|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|2|0|16|C|2|4
+012113|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE, PAST 12 HOURS|K|2|0|16|C|2|4
+012114|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|2|0|16|C|2|4
+012115|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|2|0|16|C|2|4
+012116|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|2|0|16|C|2|4
+012117|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|2|0|16|C|2|4
+012118|maximumTemperatureAtHeightSpecifiedPast24Hours|double|MAXIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS|K|2|0|16|C|2|4
+012119|minimumTemperatureAtHeightSpecifiedPast24Hours|double|MINIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS|K|2|0|16|C|2|4
+012120|groundTemperature|double|GROUND TEMPERATURE|K|2|0|16|C|2|4
+012121|groundMinimumTemperature|double|GROUND MINIMUM TEMPERATURE|K|2|0|16|C|2|4
+012122|groundMinimumTemperatureOfPrecedingNight|double|GROUND MINIMUM TEMPERATURE OF THE PRECEDING NIGHT|K|2|0|16|C|2|4
+012130|soilTemperature|double|SOIL TEMPERATURE|K|2|0|16|C|2|4
+012131|snowTemperature|double|SNOW TEMPERATURE|K|2|0|16|C|2|4
+012132|iceSurfaceTemperature|double|ICE SURFACE TEMPERATURE|K|2|0|16|C|2|4
+012151|dailyMeanTemperatureStandardDeviation|double|STANDARD DEVIATION OF DAILY MEAN TEMPERATURE|K|2|0|12|C|2|4
+012152|highestDailyMeanTemperature|double|HIGHEST DAILY MEAN TEMPERATURE|K|2|0|16|C|2|4
+012153|lowestDailyMeanTemperature|double|LOWEST DAILY MEAN TEMPERATURE|K|2|0|16|C|2|4
+012158|noiseEquivalentDeltaTemperatureWhileViewingColdTarget|double|NOISE-EQUIVALENT DELTA TEMPERATURE WHILE VIEWING COLD TARGET|K|2|0|12|C|2|4
+012159|noiseEquivalentDeltaTemperatureWhileViewingWarmTarget|double|NOISE-EQUIVALENT DELTA TEMPERATURE WHILE VIEWING WARM TARGET|K|2|0|12|C|2|4
+012161|skinTemperature|double|SKIN TEMPERATURE|K|2|0|16|C|2|4
+012162|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|2|0|16|C|2|4
+012163|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|2|0|16|C|2|4
+012164|instrumentTemperature|double|INSTRUMENT TEMPERATURE|K|2|0|16|K|2|5
+012165|directSunBrightnessTemperature|long|DIRECT SUN BRIGHTNESS TEMPERATURE|K|0|0|23|K|0|7
+012166|snapshotAccuracy|double|SNAPSHOT ACCURACY|K|1|-4000|13|K|1|4
+012167|radiometricAccuracyPurePolarization|double|RADIOMETRIC ACCURACY (PURE POLARIZATION)|K|1|0|9|K|1|3
+012168|radiometricAccuracyCrossPolarization|double|RADIOMETRIC ACCURACY (CROSS POLARIZATION)|K|1|0|9|K|1|3
+012171|coldestClusterTemperature|double|COLDEST CLUSTER TEMPERATURE|K|2|0|16|K|2|5
+012180|averaged12MicronBtForAllClearPixelsAtNadir|double|AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012181|averaged11MicronBtForAllClearPixelsAtNadir|double|AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012182|averaged37MicronBtForAllClearPixelsAtNadir|double|AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012183|averaged12MicronBtForAllClearPixelsForwardView|double|AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012184|averaged11MicronBtForAllClearPixelsForwardView|double|AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012185|averaged37MicronBtForAllClearPixelsForwardView|double|AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012186|meanNadirSeaSurfaceTemperature|double|MEAN NADIR SEA-SURFACE TEMPERATURE|K|2|0|16|K|2|5
+012187|meanDualViewSeaSurfaceTemperature|double|MEAN DUAL VIEW SEA-SURFACE TEMPERATURE|K|2|0|16|K|2|5
+012188|interpolated238GhzBrightnessTFromMwr|double|INTERPOLATED 23.8 GHZ BRIGHTNESS T FROM MWR|K|2|0|16|K|2|5
+012189|interpolated365GhzBrightnessTFromMwr|double|INTERPOLATED 36.5 GHZ BRIGHTNESS T FROM MWR|K|2|0|16|K|2|5
+013001|specificHumidity|double|SPECIFIC HUMIDITY|kg/kg|5|0|14|kg/kg|5|5
+013002|mixingRatio|double|MIXING RATIO|kg/kg|5|0|14|kg/kg|5|5
+013003|relativeHumidity|long|RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013004|vapourPressure|long|VAPOUR PRESSURE|Pa|-1|0|10|Pa|-1|4
+013005|vapourDensity|double|VAPOUR DENSITY|kg m-3|3|0|7|kg m-3|3|3
+013006|mixingHeights|long|MIXING HEIGHTS|m|-1|-40|16|m|-1|5
+013007|minimumRelativeHumidity|long|MINIMUM RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013008|maximumRelativeHumidity|long|MAXIMUM RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013009|relativeHumidity|double|RELATIVE HUMIDITY|%|1|-1000|12|%|1|4
+013011|totalPrecipitationOrTotalWaterEquivalent|double|TOTAL PRECIPITATION/TOTAL WATER EQUIVALENT|kg m-2|1|-1|14|kg m-2|1|5
+013012|depthOfFreshSnow|double|DEPTH OF FRESH SNOW|m|2|-2|12|m|2|4
+013013|totalSnowDepth|double|TOTAL SNOW DEPTH|m|2|-2|16|m|2|5
+013014|rainfallOrWaterEquivalentOfSnowAveragedRate|double|RAINFALL/WATER EQUIVALENT OF SNOW (AVERAGED RATE)|kg m-2 s-1|4|0|12|kg m-2 s-1|4|4
+013015|snowfallAveragedRate|double|SNOWFALL (AVERAGED RATE)|m/s|7|0|12|m/s|7|4
+013016|precipitableWater|long|PRECIPITABLE WATER|kg m-2|0|0|7|kg m-2|0|3
+013019|totalPrecipitationPast1Hour|double|TOTAL PRECIPITATION PAST 1 HOUR|kg m-2|1|-1|14|kg m-2|1|4
+013020|totalPrecipitationPast3Hours|double|TOTAL PRECIPITATION PAST 3 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013021|totalPrecipitationPast6Hours|double|TOTAL PRECIPITATION PAST 6 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013022|totalPrecipitationPast12Hours|double|TOTAL PRECIPITATION PAST 12 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013023|totalPrecipitationPast24Hours|double|TOTAL PRECIPITATION PAST 24 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013031|evapotranspiration|long|EVAPOTRANSPIRATION|kg m-2|0|0|7|kg m-2|0|3
+013032|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|8|kg m-2|1|3
+013033|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|10|kg m-2|1|4
+013038|superadiabaticIndicator|table|SUPERADIABATIC INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+013039|terrainTypeIceOrSnow|table|TERRAIN TYPE (ICE/SNOW)|CODE TABLE|0|0|3|CODE TABLE|0|1
+013040|surfaceFlag|table|SURFACE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+013041|pasquillGiffordStabilityCategory|table|PASQUILL-GIFFORD STABILITY CATEGORY|CODE TABLE|0|0|4|CODE TABLE|0|2
+013042|parcelLiftedIndexTo500Hpa|long|PARCEL LIFTED INDEX (TO 500 HPA)|K|0|-20|6|K|0|2
+013043|bestLiftedIndexTo500Hpa|long|BEST LIFTED INDEX (TO 500 HPA)|K|0|-20|6|K|0|2
+013044|kIndex|long|K INDEX|K|0|-30|8|K|0|3
+013045|koIndex|long|KO INDEX|K|0|-30|8|K|0|3
+013046|maximumBuoyancy|long|MAXIMUM BUOYANCY|K|0|-30|8|K|0|3
+013047|modifiedShowalterStabilityIndex|long|MODIFIED SHOWALTER STABILITY INDEX|K|0|-60|6|C|0|2
+013048|waterFraction|double|WATER FRACTION|%|1|0|10|%|1|4
+013051|frequencyGroupPrecipitation|table|FREQUENCY GROUP, PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013052|highestDailyAmountOfPrecipitation|double|HIGHEST DAILY AMOUNT OF PRECIPITATION|kg m-2|1|-1|14|kg m-2|1|5
+013055|intensityOfPrecipitation|double|INTENSITY OF PRECIPITATION|kg m-2 s-1|4|0|8|mm/h|1|4
+013056|characterAndIntensityOfPrecipitation|table|CHARACTER AND INTENSITY OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013057|timeOfBeginningOrEndOfPrecipitation|table|TIME OF BEGINNING OR END OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013058|sizeOfPrecipitatingElement|double|SIZE OF PRECIPITATING ELEMENT|m|4|0|7|mm|1|3
+013059|numberOfFlashesThunderstorm|long|NUMBER OF FLASHES (THUNDERSTORM)|Numeric|0|0|7|Numeric|0|3
+013060|totalAccumulatedPrecipitation|double|TOTAL ACCUMULATED PRECIPITATION|kg m-2|1|-1|17|kg m-2|1|5
+013071|upstreamWaterLevel|double|UPSTREAM WATER LEVEL|m|2|0|14|m|2|4
+013072|downstreamWaterLevel|double|DOWNSTREAM WATER LEVEL|m|2|0|14|m|2|4
+013073|maximumWaterLevel|double|MAXIMUM WATER LEVEL|m|2|0|14|m|2|4
+013074|groundWaterLevel|double|GROUND WATER LEVEL|m|2|0|18|m|2|6
+013080|waterPh|double|WATER PH|pH unit|1|0|10|pH unit|1|3
+013081|waterConductivity|double|WATER CONDUCTIVITY|S/m|3|0|14|S/m|3|4
+013082|waterTemperature|double|WATER TEMPERATURE|K|1|0|12|K|1|4
+013083|dissolvedOxygen|double|DISSOLVED OXYGEN|kg m-3|6|0|15|kg m-3|6|5
+013084|turbidity|long|TURBIDITY|lm|0|0|14|lm|0|4
+013085|oxidationReductionPotential|double|OXIDATION REDUCTION POTENTIAL (ORP)|V|3|0|14|V|3|4
+013090|radiometerWaterVapourContent|double|RADIOMETER WATER VAPOUR CONTENT|kg m-2|1|0|10|kg m-2|1|4
+013091|radiometerLiquidContent|double|RADIOMETER LIQUID CONTENT|kg m-2|2|0|8|kg m-2|2|3
+013093|cloudOpticalThickness|long|CLOUD OPTICAL THICKNESS|Numeric|0|0|8|Numeric|0|3
+013095|totalColumnWaterVapour|double|TOTAL COLUMN WATER VAPOUR|kg m-2|4|0|19|kg m-2|4|6
+013096|mwrWaterVapourContent|double|MWR WATER VAPOUR CONTENT|kg m-2|2|0|14|kg m-2|2|5
+013097|mwrLiquidWaterContent|double|MWR LIQUID WATER CONTENT|kg m-2|2|0|14|kg m-2|2|5
+013098|integratedWaterVapourDensity|double|INTEGRATED WATER VAPOUR DENSITY|kg m-2|8|0|30|kg m-2|8|10
+013099|log10OfIntegratedCloudParticleDensity|double|LOG10 OF INTEGRATED CLOUD PARTICLE DENSITY|log (m-2)|1|0|7|log (m-2)|1|3
+013100|log10OfIntegratedCloudParticleArea|double|LOG10 OF INTEGRATED CLOUD PARTICLE AREA|log (m2 m-2)|1|-70|7|log (m2 m-2)|1|2
+013101|log10OfIntegratedCloudParticleVolume|double|LOG10 OF INTEGRATED CLOUD PARTICLE VOLUME|log (m3 m-2)|1|-140|7|log (m3 m-2)|1|3
+013110|massMixingRatio|long|MASS MIXING RATIO|%|0|0|7|%|0|3
+013111|soilMoisture|long|SOIL MOISTURE|g/kg|0|0|10|g/kg|0|4
+013112|objectWetnessDuration|long|OBJECT WETNESS DURATION|s|0|0|17|s|0|5
+013114|rateOfIceAccretion|double|RATE OF ICE ACCRETION|kg m-2 h-1|1|0|11|kg m-2 h-1|1|4
+013115|iceThickness|double|ICE THICKNESS|m|2|0|19|m|2|6
+013117|snowDensityLiquidWaterContent|long|SNOW DENSITY (LIQUID WATER CONTENT)|kg m-3|0|0|10|kg m-3|0|3
+013118|freshSnowDepth|double|DEPTH OF FRESH SNOW (HIGH ACCURACY)|m|3|-2|14|m|3|5
+013155|precipitationIntensityHighAccuracy|double|INTENSITY OF PRECIPITATION (HIGH ACCURACY)|kg m-2 s-1|5|-1|16|mm/h|2|5
+013160|radiometerLiquidContent|double|RADIOMETER LIQUID CONTENT|kg m-2|2|-350|10|kg m-2|2|3
+014001|longWaveRadiationIntegratedOver24Hours|long|LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-65536|17|J m-2|-3|5
+014002|longWaveRadiationIntegratedOverPeriodSpecified|long|LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-65536|17|J m-2|-3|5
+014003|shortWaveRadiationIntegratedOver24Hours|long|SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-65536|17|J m-2|-3|5
+014004|shortWaveRadiationIntegratedOverPeriodSpecified|long|SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-65536|17|J m-2|-3|5
+014011|netLongWaveRadiationIntegratedOver24Hours|long|NET LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-65536|17|J m-2|-3|5
+014012|netLongWaveRadiationIntegratedOverPeriodSpecified|long|NET LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-65536|17|J m-2|-3|5
+014013|netShortWaveRadiation24Hours|long|NET SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-65536|17|J m-2|-3|5
+014014|netShortWaveRadiationIntegratedOverPeriodSpecified|long|NET SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-65536|17|J m-2|-3|5
+014015|netRadiationIntegratedOver24Hours|long|NET RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|-16384|15|J m-2|-4|5
+014016|netRadiationIntegratedOverPeriodSpecified|long|NET RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|-16384|15|J m-2|-4|5
+014017|instantaneousLongWaveRadiation|long|INSTANTANEOUS LONG-WAVE RADIATION|W m-2|0|-512|10|W m-2|0|4
+014018|instantaneousShortWaveRadiation|long|INSTANTANEOUS SHORT-WAVE RADIATION|W m-2|0|-2048|12|W m-2|0|4
+014019|surfaceAlbedo|long|SURFACE ALBEDO|%|0|0|7|%|0|3
+014020|globalSolarRadiation24Hours|long|GLOBAL SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014021|globalSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014022|diffuseSolarRadiationIntegratedOver24Hours|long|DIFFUSE SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014023|diffuseSolarRadiationIntegratedOverPeriodSpecified|long|DIFFUSE SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014024|directSolarRadiationIntegratedOver24Hours|long|DIRECT SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014025|directSolarRadiationIntegratedOverPeriodSpecified|long|DIRECT SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014026|cloudTopAlbedo|long|ALBEDO AT THE TOP OF CLOUDS|%|0|0|7|%|0|3
+014027|albedo|long|ALBEDO|%|0|0|7|%|0|3
+014028|globalSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|0|20|J m-2|-2|6
+014029|diffuseSolarRadiationIntegratedOverPeriodSpecified|long|DIFFUSE SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|0|20|J m-2|-2|6
+014030|directSolarRadiationIntegratedOverPeriodSpecified|long|DIRECT SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|0|20|J m-2|-2|6
+014031|totalSunshine|long|TOTAL SUNSHINE|min|0|0|11|min|0|4
+014032|totalSunshine|long|TOTAL SUNSHINE|h|0|0|10|h|0|4
+014033|totalSunshine|long|TOTAL SUNSHINE|%|0|0|9|%|0|3
+014034|sunshineOverPeriodSpecified|long|SUNSHINE OVER PERIOD SPECIFIED|min|0|0|11|min|0|4
+014035|solarRadiationFlux|double|SOLAR RADIATION FLUX|W m-2|1|0|14|W m-2|1|5
+014042|bidirectionalReflectance|long|BIDIRECTIONAL REFLECTANCE|%|0|0|7|%|0|3
+014043|channelRadiance|double|CHANNEL RADIANCE|W m-2 sr-1 um-1|4|0|23|W m-2 sr-1 um-1|4|7
+014044|channelRadiance|double|CHANNEL RADIANCE|W m-2 sr-1 cm|7|-100000|22|W m-2 sr-1 cm|7|7
+014045|channelRadiance|long|CHANNEL RADIANCE|W m-2 sr-1 cm|0|0|11|W m-2 sr-1 cm|0|4
+014046|scaledIasiRadiance|long|SCALED IASI RADIANCE|W m-2 sr-1 m|0|-5000|16|W m-2 sr-1 m|0|5
+014047|scaledMeanAvhrrRadiance|long|SCALED MEAN AVHRR RADIANCE|W m-2 sr-1 m|0|0|31|W m-2 sr-1 m|0|10
+014048|scaledStandardDeviationAvhrrRadiance|long|SCALED STANDARD DEVIATION AVHRR RADIANCE|W m-2 sr-1 m|0|0|31|W m-2 sr-1 m|0|10
+014050|emissivity|double|EMISSIVITY|%|1|0|10|%|1|4
+014051|directSolarRadiationIntegratedOverLastHour|long|DIRECT SOLAR RADIATION INTEGRATED OVER LAST HOUR|J m-2|-3|0|14|J m-2|-3|4
+014052|globalUpwardSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL UPWARD SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|-1048574|20|J m-2|-2|7
+014053|netRadiationIntegratedOverPeriodSpecified|long|NET RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|-1048574|21|J m-2|-2|7
+014054|photosyntheticallyActiveRadiationIntegratedOverPeriodSpecified|long|PHOTOSYNTHETICALLY ACTIVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|0|16|J m-2|-3|5
+014055|solarActivityIndex|long|SOLAR ACTIVITY INDEX|Numeric|0|-32768|16|Numeric|0|5
+014056|backgroundLuminance|long|BACKGROUND LUMINANCE|cd m-2|0|0|18|cd m-2|0|6
+014057|soilHeatFlux|long|SOIL HEAT FLUX|J m-2|-2|-1048574|21|J m-2|-2|7
+014072|globalUvIrradiation|long|GLOBAL UV IRRADIATION|J m-2|0|-4000000|23|J m-2|0|7
+015001|totalOzone|long|TOTAL OZONE|DU|0|0|10|DU|0|4
+015002|airMassSlantPathAt22Km|long|AIR MASS (SLANT PATH AT 22 KM)|Numeric|2|0|10|Numeric|2|3
+015003|measuredOzonePartialPressureSounding|double|MEASURED OZONE PARTIAL PRESSURE (SOUNDING)|Pa|4|0|9|nbar|0|3
+015004|ozoneSoundingCorrectionFactor|long|OZONE SOUNDING CORRECTION FACTOR (CF)|Numeric|3|0|11|Numeric|3|4
+015005|ozoneP|long|OZONE P|DU|0|0|10|DU|0|3
+015008|significandOfVolumetricMixingRatio|long|SIGNIFICAND OF VOLUMETRIC MIXING RATIO|Numeric|0|0|10|Numeric|0|4
+015011|log10IntegratedElectronDensity|double|LOG10 OF INTEGRATED ELECTRON DENSITY|log (m-2)|3|14000|13|log (m-2)|3|4
+015012|totalElectronCountPerSquareMetre|long|TOTAL ELECTRON COUNT PER SQUARE METRE|m-2|-16|0|6|m-2|-16|2
+015015|maxImageSpectralComponentBeforeNormalization|long|MAXIMUM IMAGE SPECTRAL COMPONENT BEFORE NORMALIZATION|Numeric|0|0|31|Numeric|0|10
+015020|integratedOzoneDensity|double|INTEGRATED OZONE DENSITY|kg m-2|8|0|21|kg m-2|8|7
+015021|integratedMassDensity|double|INTEGRATED MASS DENSITY|kg m-2|11|0|31|kg m-2|11|10
+015024|opticalDepth|long|OPTICAL DEPTH|Numeric|4|0|24|Numeric|4|8
+015025|pollutantType|table|TYPE OF POLLUTANT|CODE TABLE|0|0|4|CODE TABLE|0|2
+015026|moleFractionOfPollutant|double|CONCENTRATION OF POLLUTANT (MOL MOL-1)|mol/mol|9|0|9|mol/mol|9|3
+015027|massConcentrationOfPollutant|double|CONCENTRATION OF POLLUTANT (KG M-3)|kg m-3|9|0|10|kg m-3|9|4
+015029|extinctionCoefficient|double|EXTINCTION COEFFICIENT|/m|9|0|30|/m|9|10
+015030|aerosolContaminationIndex|long|AEROSOL CONTAMINATION INDEX|Numeric|2|-1000|12|Numeric|2|4
+015031|atmosphericPathDelayInSatelliteSignal|double|ATMOSPHERIC PATH DELAY IN SATELLITE SIGNAL|m|4|10000|15|m|4|5
+015032|estimatedErrorInAtmosphericPathDelay|double|ESTIMATED ERROR IN ATMOSPHERIC PATH DELAY|m|4|0|10|m|4|4
+015033|differenceInPathDelaysForLimbViewsAtExtremesOfScan|double|DIFFERENCE IN PATH DELAYS FOR LIMB VIEWS AT EXTREMES OF SCAN|m|5|-10000|15|m|5|5
+015034|estimatedErrorInPathDelayDifference|double|ESTIMATED ERROR IN PATH DELAY DIFFERENCE|m|5|0|14|m|5|5
+015035|componentOfZenithPathDelayDueToWaterVapour|double|COMPONENT OF ZENITH PATH DELAY DUE TO WATER VAPOUR|m|4|0|14|m|4|5
+015036|atmosphericRefractivity|double|ATMOSPHERIC REFRACTIVITY|N units|3|0|19|N units|3|6
+015037|bendingAngle|double|BENDING ANGLE|rad|8|-100000|23|rad|8|7
+015041|sulphurDioxideIndex|long|SULPHUR DIOXIDE INDEX|Numeric|2|-1200|14|Numeric|2|4
+015042|reflectance|double|REFLECTANCE|%|2|0|14|%|2|5
+015045|sulphurDioxide|double|SULPHUR DIOXIDE|DU|2|-2000|15|DU|2|5
+015046|volcanoContaminationIndex|long|VOLCANO CONTAMINATION INDEX|Numeric|2|-1000|11|Numeric|2|4
+015049|aerosolAngstromWavelengthExponent|long|AEROSOL ANGSTROM WAVELENGTH EXPONENT|Numeric|3|-2000|14|Numeric|3|5
+015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6
+015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3
+015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4
+015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween0p25And2p5|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4
+015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3
+015062|aerosolOpticalThickness|long|AEROSOL OPTICAL THICKNESS|Numeric|3|-1000|14|Numeric|3|5
+019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
+019002|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-2|0|12|m|-2|4
+019003|windSpeedThreshold|long|WIND SPEED THRESHOLD|m/s|0|0|8|m/s|0|3
+019004|effectiveRadiusWithRespectToWindSpeedsAboveThreshold|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD|m|-2|0|12|m|-2|4
+019005|featureDirectionOfMotion|long|DIRECTION OF MOTION OF FEATURE|deg|0|0|9|deg|0|3
+019006|speedOfMotionOfFeature|double|SPEED OF MOTION OF FEATURE|m/s|2|0|14|m/s|2|5
+019007|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-3|0|12|m|-3|4
+019008|verticalExtentOfCirculation|table|VERTICAL EXTENT OF CIRCULATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+019009|effectiveRadiusWithRespectToWindSpeedsAboveThresholdLargeStorms|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD (LARGE STORMS)|m|-3|0|12|m|-3|4
+019010|methodForTrackingCentreOfSynopticFeature|table|METHOD FOR TRACKING THE CENTRE OF SYNOPTIC FEATURE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019100|timeIntervalToCalculateMovementOfTropicalCyclone|table|TIME INTERVAL TO CALCULATE THE MOVEMENT OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019101|accuracyOfPositionOfCentreOfTropicalCyclone|table|ACCURACY OF THE POSITION OF THE CENTRE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019102|shapeAndDefinitionOfEyeOfTropicalCyclone|table|SHAPE AND DEFINITION OF THE EYE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|3|CODE TABLE|0|1
+019103|diameterOfMajorAxisOfEyeOfTropicalCyclone|table|DIAMETER OF MAJOR AXIS OF THE EYE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019104|changeInCharacterOfEyeDuring30Minutes|table|CHANGE IN CHARACTER OF THE EYE DURING THE 30 MINUTES|CODE TABLE|0|0|4|CODE TABLE|0|2
+019105|distanceBetweenEndOfSpiralBandAndCentre|table|DISTANCE BETWEEN THE END OF SPIRAL BAND AND THE CENTRE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019106|identificationNumberOfTropicalCyclone|long|IDENTIFICATION NUMBER OF TROPICAL CYCLONE|Numeric|0|0|7|Numeric|0|3
+019107|timeIntervalOverWhichMovementOfTropicalCycloneHasBeenCalculated|table|TIME INTERVAL OVER WHICH THE MOVEMENT OF THE TROPICAL CYCLONE HAS BEEN CALCULATED|CODE TABLE|0|0|4|CODE TABLE|0|2
+019108|accuracyOfGeographicalPositionOfTropicalCyclone|table|ACCURACY OF GEOGRAPHICAL POSITION OF THE TROPICAL CYCLONE|CODE TABLE|0|0|3|CODE TABLE|0|1
+019109|meanDiameterOfOvercastCloudOfTropicalCyclone|table|MEAN DIAMETER OF THE OVERCAST CLOUD OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019110|apparent24HourChangeInIntensityOfTropicalCyclone|table|APPARENT 24-HOUR CHANGE IN INTENSITY OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019111|currentIntensityNumberOfTropicalCyclone|long|CURRENT INTENSITY (CI) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019112|dataTropicalNumberOfTropicalCyclone|long|DATA TROPICAL (DT) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019113|cloudPatternTypeOfDtNumber|table|CLOUD PATTERN TYPE OF THE DT-NUMBER|CODE TABLE|0|0|4|CODE TABLE|0|2
+019114|modelExpectedTropicalNumberOfTropicalCyclone|long|MODEL EXPECTED TROPICAL (MET) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019115|trendOfPast24HourChangeDevelopedWeakened|long|TREND OF THE PAST 24-HOUR CHANGE (+: DEVELOPED, -: WEAKENED)|Numeric|1|-30|6|Numeric|1|2
+019116|patternTropicalNumberOfTropicalCyclone|long|PATTERN TROPICAL (PT) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019117|cloudPictureTypeOfPtNumber|table|CLOUD PICTURE TYPE OF THE PT-NUMBER|CODE TABLE|0|0|3|CODE TABLE|0|1
+019118|finalTropicalNumberOfTropicalCyclone|long|FINAL TROPICAL (T) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019119|finalTNumberType|table|TYPE OF THE FINAL T-NUMBER|CODE TABLE|0|0|3|CODE TABLE|0|1
+019150|typhoonInternationalCommonNumberTyphoonCommittee|string|TYPHOON INTERNATIONAL COMMON NUMBER (TYPHOON COMMITTEE)|CCITT IA5|0|0|32|Character|0|4
+020001|horizontalVisibility|long|HORIZONTAL VISIBILITY|m|-1|0|13|m|-1|4
+020002|verticalVisibility|long|VERTICAL VISIBILITY|m|-1|0|7|m|-1|3
+020003|presentWeather|table|PRESENT WEATHER|CODE TABLE|0|0|9|CODE TABLE|0|3
+020004|pastWeather1|table|PAST WEATHER (1)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020005|pastWeather2|table|PAST WEATHER (2)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020006|flightRules|table|FLIGHT RULES|CODE TABLE|0|0|3|CODE TABLE|0|1
+020008|cloudDistributionForAviation|table|CLOUD DISTRIBUTION FOR AVIATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020009|generalWeatherIndicatorTafOrMetar|table|GENERAL WEATHER INDICATOR (TAF/METAR)|CODE TABLE|0|0|4|CODE TABLE|0|2
+020010|cloudCoverTotal|long|CLOUD COVER (TOTAL)|%|0|0|7|%|0|3
+020011|cloudAmount|table|CLOUD AMOUNT|CODE TABLE|0|0|4|CODE TABLE|0|2
+020012|cloudType|table|CLOUD TYPE|CODE TABLE|0|0|6|CODE TABLE|0|2
+020013|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|m|-1|-40|11|m|-1|4
+020014|heightOfTopOfCloud|long|HEIGHT OF TOP OF CLOUD|m|-1|-40|11|m|-1|4
+020015|pressureAtBaseOfCloud|long|PRESSURE AT BASE OF CLOUD|Pa|-1|0|14|Pa|-1|5
+020016|pressureAtTopOfCloud|long|PRESSURE AT TOP OF CLOUD|Pa|-1|0|14|Pa|-1|5
+020017|cloudTopDescription|table|CLOUD TOP DESCRIPTION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020018|tendencyOfRunwayVisualRange|table|TENDENCY OF RUNWAY VISUAL RANGE|CODE TABLE|0|0|2|CODE TABLE|0|1
+020019|significantWeather|string|SIGNIFICANT PRESENT OR FORECAST WEATHER|CCITT IA5|0|0|72|Character|0|9
+020020|significantRecentWeatherPhenomena|string|SIGNIFICANT RECENT WEATHER PHENOMENA|CCITT IA5|0|0|32|Character|0|4
+020021|precipitationType|flag|TYPE OF PRECIPITATION|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+020022|characterOfPrecipitation|table|CHARACTER OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020023|otherWeatherPhenomena|flag|OTHER WEATHER PHENOMENA|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+020024|intensityOfPhenomena|table|INTENSITY OF PHENOMENA|CODE TABLE|0|0|3|CODE TABLE|0|1
+020025|obscuration|flag|OBSCURATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+020026|characterOfObscuration|table|CHARACTER OF OBSCURATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020027|phenomenaOccurrence|flag|PHENOMENA OCCURRENCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+020028|expectedChangeInIntensity|table|EXPECTED CHANGE IN INTENSITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+020029|rainFlag|table|RAIN FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+020031|iceDepositThickness|double|ICE DEPOSIT (THICKNESS)|m|2|0|7|m|2|3
+020032|rateOfIceAccretionEstimated|table|RATE OF ICE ACCRETION (ESTIMATED)|CODE TABLE|0|0|3|CODE TABLE|0|1
+020033|causeOfIceAccretion|flag|CAUSE OF ICE ACCRETION|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+020034|seaIceConcentration|table|SEA ICE CONCENTRATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020035|amountAndTypeOfIce|table|AMOUNT AND TYPE OF ICE|CODE TABLE|0|0|4|CODE TABLE|0|2
+020036|iceSituation|table|ICE SITUATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020037|iceDevelopment|table|ICE DEVELOPMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+020038|iceEdgeBearing|long|BEARING OF ICE EDGE|deg|0|0|12|deg|0|3
+020039|iceDistance|long|ICE DISTANCE|m|-1|0|13|m|-1|4
+020040|evolutionOfDriftSnow|table|EVOLUTION OF DRIFT SNOW|CODE TABLE|0|0|4|CODE TABLE|0|2
+020041|airframeIcing|table|AIRFRAME ICING|CODE TABLE|0|0|4|CODE TABLE|0|2
+020042|airframeIcingPresent|table|AIRFRAME ICING PRESENT|CODE TABLE|0|0|2|CODE TABLE|0|1
+020043|peakLiquidWaterContent|double|PEAK LIQUID WATER CONTENT|kg m-3|4|0|7|kg m-3|4|2
+020044|averageLiquidWaterContent|double|AVERAGE LIQUID WATER CONTENT|kg m-3|4|0|7|kg m-3|4|2
+020045|supercooledLargeDropletConditions|table|SUPERCOOLED LARGE DROPLET (SLD) CONDITIONS|CODE TABLE|0|0|2|CODE TABLE|0|1
+020048|evolutionOfFeature|table|EVOLUTION OF FEATURE|CODE TABLE|0|0|4|CODE TABLE|0|2
+020050|cloudIndex|table|CLOUD INDEX|CODE TABLE|0|0|8|CODE TABLE|0|3
+020051|amountOfLowClouds|long|AMOUNT OF LOW CLOUDS|%|0|0|7|%|0|3
+020052|amountOfMiddleClouds|long|AMOUNT OF MIDDLE CLOUDS|%|0|0|7|%|0|3
+020053|amountOfHighClouds|long|AMOUNT OF HIGH CLOUDS|%|0|0|7|%|0|3
+020054|trueDirectionFromWhichAPhenomenonOrCloudsAreMovingOrInWhichTheyAreObserved|long|TRUE DIRECTION FROM WHICH A PHENOMENON OR CLOUDS ARE MOVING OR IN WHICH THEY ARE OBSERVED|deg|0|0|9|deg|0|3
+020055|stateOfSkyInTropics|table|STATE OF SKY IN THE TROPICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020056|cloudPhase|table|CLOUD PHASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+020058|visibilitySeawardsFromACoastalStation|long|VISIBILITY SEAWARDS FROM A COASTAL STATION|m|-1|0|13|m|-1|4
+020059|minimumHorizontalVisibility|long|MINIMUM HORIZONTAL VISIBILITY|m|-1|0|9|m|-1|3
+020060|prevailingHorizontalVisibility|long|PREVAILING HORIZONTAL VISIBILITY|m|-1|0|10|m|-1|4
+020061|runwayVisualRangeRvr|long|RUNWAY VISUAL RANGE (RVR)|m|0|0|12|m|0|4
+020062|stateOfGround|table|STATE OF THE GROUND (WITH OR WITHOUT SNOW)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020063|specialPhenomena|table|SPECIAL PHENOMENA|CODE TABLE|0|0|10|CODE TABLE|0|4
+020065|snowCover|long|SNOW COVER|%|0|0|7|%|0|3
+020066|maximumDiameterOfHailstones|double|MAXIMUM DIAMETER OF HAILSTONES|m|3|0|8|m|3|3
+020067|diameterOfDeposit|double|DIAMETER OF DEPOSIT|m|3|0|9|m|3|3
+020070|minimumNumberOfAtmospherics|long|MINIMUM NUMBER OF ATMOSPHERICS|Numeric|0|0|7|Numeric|0|3
+020071|accuracyOfFixAndRateOfAtmospherics|table|ACCURACY OF FIX AND RATE OF ATMOSPHERICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020081|cloudAmountInSegment|long|CLOUD AMOUNT IN SEGMENT|%|0|0|7|%|0|3
+020082|amountSegmentCloudFree|long|AMOUNT SEGMENT CLOUD FREE|%|0|0|7|%|0|3
+020083|amountOfSegmentCoveredByScene|long|AMOUNT OF SEGMENT COVERED BY SCENE|%|0|0|7|%|0|3
+020085|generalConditionOfRunway|table|GENERAL CONDITION OF RUNWAY|CODE TABLE|0|0|4|CODE TABLE|0|1
+020086|runwayDeposits|table|RUNWAY DEPOSITS|CODE TABLE|0|0|4|CODE TABLE|0|1
+020087|runwayContamination|table|RUNWAY CONTAMINATION|CODE TABLE|0|0|4|CODE TABLE|0|1
+020088|depthOfRunwayDeposits|double|DEPTH OF RUNWAY DEPOSITS|m|3|0|12|m|0|4
+020089|runwayFrictionCoefficient|table|RUNWAY FRICTION COEFFICIENT|CODE TABLE|0|0|7|CODE TABLE|0|2
+020090|specialClouds|table|SPECIAL CLOUDS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020091|verticalVisibility|long|VERTICAL VISIBILITY|ft|-2|0|10|ft|-2|3
+020092|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|ft|-2|0|10|ft|-2|3
+020093|heightOfInversion|long|HEIGHT OF INVERSION|m|-1|0|8|m|-1|3
+020095|iceProbability|long|ICE PROBABILITY|Numeric|3|0|10|Numeric|3|4
+020096|iceAgeAParameter|double|ICE AGE (A PARAMETER)|dB|2|-4096|13|dB|2|4
+020101|locustAcridianName|table|LOCUST (ACRIDIAN) NAME|CODE TABLE|0|0|4|CODE TABLE|0|2
+020102|locustMaturityColour|table|LOCUST (MATURITY) COLOUR|CODE TABLE|0|0|4|CODE TABLE|0|2
+020103|stageOfDevelopmentOfLocusts|table|STAGE OF DEVELOPMENT OF LOCUSTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020104|organizationStateOfSwarm|table|ORGANIZATION STATE OF SWARM OR BAND OF LOCUSTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020105|sizeOfSwarmOrBandOfLocustsAndDurationOfPassageOfSwarm|table|SIZE OF SWARM OR BAND OF LOCUSTS AND DURATION OF PASSAGE OF SWARM|CODE TABLE|0|0|4|CODE TABLE|0|2
+020106|locustPopulationDensity|table|LOCUST POPULATION DENSITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+020107|directionOfMovementsOfLocustSwarm|table|DIRECTION OF MOVEMENTS OF LOCUST SWARM|CODE TABLE|0|0|4|CODE TABLE|0|2
+020108|extentOfVegetation|table|EXTENT OF VEGETATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020111|xAxisErrorEllipseMajorComponent|long|X-AXIS ERROR ELLIPSE MAJOR COMPONENT|m|-1|0|17|m|-1|6
+020112|yAxisErrorEllipseMinorComponent|long|Y-AXIS ERROR ELLIPSE MINOR COMPONENT|m|-1|0|17|m|-1|6
+020113|zAxisErrorEllipseComponent|long|Z-AXIS ERROR ELLIPSE COMPONENT|m|-1|0|17|m|-1|6
+020114|angleOfXAxisInErrorEllipse|double|ANGLE OF X-AXIS IN ERROR ELLIPSE|deg|2|-18000|16|deg|2|5
+020115|angleOfZAxisInErrorEllipse|double|ANGLE OF Z-AXIS IN ERROR ELLIPSE|deg|2|-18000|16|deg|2|5
+020116|emissionHeightOfCloudStroke|long|EMISSION HEIGHT OF CLOUD STROKE|m|0|0|16|m|0|5
+020117|amplitudeOfLightningStrike|long|AMPLITUDE OF LIGHTNING STRIKE|A|-1|-32000|16|A|-1|5
+020118|lightningDetectionError|long|LIGHTNING DETECTION ERROR|m|0|0|19|m|0|6
+020119|lightningDischargePolarity|table|LIGHTNING DISCHARGE POLARITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+020121|thresholdValueForPolarityDecision|double|THRESHOLD VALUE FOR POLARITY DECISION|V|3|0|16|V|3|5
+020122|thresholdValueForPolarityDecision|long|THRESHOLD VALUE FOR POLARITY DECISION|A|0|0|16|A|0|5
+020123|minimumDirectionThreshold|double|MINIMUM THRESHOLD FOR DETECTION|V/m|3|0|16|V/m|3|5
+020124|lightningStrokeOrFlash|table|LIGHTNING STROKE OR FLASH|CODE TABLE|0|0|2|CODE TABLE|0|1
+020126|lightningRateOfDischarge|long|LIGHTNING RATE OF DISCHARGE|/h|0|0|23|/h|0|7
+020127|lightningDistanceFromStation|long|LIGHTNING - DISTANCE FROM STATION|m|-3|0|8|m|-3|3
+020128|lightningDirectionFromStation|double|LIGHTNING - DIRECTION FROM STATION|deg|1|0|12|deg|1|4
+020130|cloudHydrometeorConcentration|long|CLOUD HYDROMETEOR CONCENTRATION|Numeric|0|0|10|Numeric|0|3
+020131|effectiveRadiusOfCloudHydrometeors|double|EFFECTIVE RADIUS OF CLOUD HYDROMETEORS|m|5|0|6|m|5|2
+020132|cloudLiquidWaterContent|double|CLOUD LIQUID WATER CONTENT|kg m-3|5|0|11|kg m-3|5|4
+020133|hydrometeorRadius|double|HYDROMETEOR RADIUS|m|5|0|6|m|5|2
+020135|iceMassOnARod|double|ICE MASS (ON A ROD)|kg/m|1|0|10|kg/m|1|3
+020136|supplementaryCloudType|table|SUPPLEMENTARY CLOUD TYPE|CODE TABLE|0|0|9|CODE TABLE|0|3
+020137|evolutionOfClouds|table|EVOLUTION OF CLOUDS|CODE TABLE|0|0|4|CODE TABLE|0|2
+021001|horizontalReflectivity|long|HORIZONTAL REFLECTIVITY|dB|0|-64|7|dB|0|3
+021002|verticalReflectivity|long|VERTICAL REFLECTIVITY|dB|0|-64|7|dB|0|3
+021003|differentialReflectivity|double|DIFFERENTIAL REFLECTIVITY|dB|1|-5|7|dB|1|3
+021005|linearDepolarizationRatio|long|LINEAR DEPOLARIZATION RATIO|dB|0|-65|6|dB|0|2
+021006|circularDepolarizationRatio|long|CIRCULAR DEPOLARIZATION RATIO|dB|0|-65|6|dB|0|2
+021011|dopplerMeanVelocityXDirection|long|DOPPLER MEAN VELOCITY IN X-DIRECTION|m/s|0|-128|8|m/s|0|3
+021012|dopplerMeanVelocityYDirection|long|DOPPLER MEAN VELOCITY IN Y-DIRECTION|m/s|0|-128|8|m/s|0|3
+021013|dopplerMeanVelocityZDirection|long|DOPPLER MEAN VELOCITY IN Z-DIRECTION|m/s|0|-128|8|m/s|0|3
+021014|dopplerMeanVelocityRadial|double|DOPPLER MEAN VELOCITY (RADIAL)|m/s|1|-4096|13|m/s|1|4
+021017|dopplerVelocitySpectralWidth|double|DOPPLER VELOCITY SPECTRAL WIDTH|m/s|1|0|8|m/s|1|3
+021018|extendedNyquistVelocity|double|EXTENDED NYQUIST VELOCITY|m/s|1|0|10|m/s|1|4
+021019|highNyquistVelocity|double|HIGH NYQUIST VELOCITY|m/s|1|0|10|m/s|1|3
+021021|echoTops|long|ECHO TOPS|m|-3|0|4|m|-3|2
+021022|rangeBinOffset|double|RANGE BIN OFFSET|m|1|0|14|m|1|5
+021023|rangeBinSize|long|RANGE BIN SIZE|m|0|0|14|m|0|5
+021024|azimuthOffset|double|AZIMUTH OFFSET|deg|1|0|12|deg|1|4
+021025|azimuthalResolution|double|AZIMUTHAL RESOLUTION|deg|1|0|8|deg|1|3
+021030|signalToNoiseRatio|long|SIGNAL TO NOISE RATIO|dB|0|-32|8|dB|0|3
+021031|verticallyIntegratedLiquidWaterContent|long|VERTICALLY INTEGRATED LIQUID-WATER CONTENT|kg m-2|0|0|7|kg m-2|0|3
+021036|radarRainfallIntensity|double|RADAR RAINFALL INTENSITY|m/s|7|0|12|m/s|7|4
+021041|brightBandHeight|long|BRIGHT-BAND HEIGHT|m|-2|0|8|m|-2|3
+021051|signalPowerAbove1Mw|long|SIGNAL POWER ABOVE 1 MW|dB|0|-256|8|dB|0|3
+021062|backscatter|double|BACKSCATTER|dB|2|-5000|13|dB|2|4
+021063|radiometricResolutionNoiseValue|double|RADIOMETRIC RESOLUTION (NOISE VALUE)|%|1|0|10|%|1|4
+021064|clutterNoiseEstimate|long|CLUTTER NOISE ESTIMATE|Numeric|0|0|8|Numeric|0|3
+021065|missingPacketCounter|long|MISSING PACKET COUNTER|Numeric|0|-127|8|Numeric|0|3
+021066|waveScatterometerProductConfidenceData|flag|WAVE SCATTEROMETER PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+021067|windProductConfidenceData|flag|WIND PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|13|FLAG TABLE|0|5
+021068|radarAltimeterProductConfidenceData|flag|RADAR ALTIMETER PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+021069|sstProductConfidenceData|flag|SST PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|10|FLAG TABLE|0|4
+021070|sstProductConfidenceDataSadist2|flag|SST PRODUCT CONFIDENCE DATA (SADIST-2)|FLAG TABLE|0|0|23|FLAG TABLE|0|6
+021071|peakiness|long|PEAKINESS|Numeric|0|0|16|Numeric|0|5
+021072|satelliteAltimeterCalibrationStatus|flag|SATELLITE ALTIMETER CALIBRATION STATUS|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+021073|satelliteAltimeterInstrumentMode|flag|SATELLITE ALTIMETER INSTRUMENT MODE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+021075|imageSpectrumIntensity|long|IMAGE SPECTRUM INTENSITY|Numeric|0|0|8|Numeric|0|3
+021076|representationOfIntensities|table|REPRESENTATION OF INTENSITIES|CODE TABLE|0|0|3|CODE TABLE|0|1
+021077|altitudeCorrectionIonosphere|double|ALTITUDE CORRECTION (IONOSPHERE)|m|3|0|14|m|3|5
+021078|altitudeCorrectionDryTroposphere|double|ALTITUDE CORRECTION (DRY TROPOSPHERE)|m|3|0|9|m|3|3
+021079|altitudeCorrectionWetTroposphere|double|ALTITUDE CORRECTION (WET TROPOSPHERE)|m|3|2000|10|m|3|4
+021080|altitudeCorrectionCalibrationConstant|double|ALTITUDE CORRECTION (CALIBRATION CONSTANT)|m|3|0|11|m|3|4
+021081|openLoopCorrectionHeightTimeLoop|double|OPEN LOOP CORRECTION (HEIGHT-TIME LOOP)|m|3|0|10|m|3|4
+021082|openLoopCorrectionAutoGainControl|double|OPEN LOOP CORRECTION (AUTO GAIN CONTROL)|dB|3|-3000|14|dB|3|5
+021083|warmTargetCalibration|long|WARM TARGET CALIBRATION|Numeric|0|0|16|Numeric|0|5
+021084|coldTargetCalibration|long|COLD TARGET CALIBRATION|Numeric|0|0|16|Numeric|0|5
+021085|atsrSeaSurfaceTemperatureAcrossTrackBandNumber|long|ATSR SEA-SURFACE TEMPERATURE ACROSS-TRACK BAND NUMBER|Numeric|0|0|4|Numeric|0|2
+021086|numberOfPixelsInNadirOnlyAverage|long|NUMBER OF PIXELS IN NADIR ONLY, AVERAGE|Numeric|0|0|9|Numeric|0|3
+021087|numberOfPixelsInDualViewAverage|long|NUMBER OF PIXELS IN DUAL VIEW, AVERAGE|Numeric|0|0|9|Numeric|0|3
+021088|wetBackscatter|double|WET BACKSCATTER|dB|2|-5000|13|dB|2|4
+021091|radarSignalDopplerSpectrum0thMoment|long|RADAR SIGNAL DOPPLER SPECTRUM 0TH MOMENT|dB|0|-100|8|dB|0|3
+021092|rassSignalDopplerSpectrum0thMomentReferringToRassSignal|long|RASS SIGNAL DOPPLER SPECTRUM 0TH MOMENT, REFERRING TO RASS SIGNAL|dB|0|-100|8|dB|0|3
+021093|kuBandPeakiness|long|KU BAND PEAKINESS|Numeric|3|0|16|Numeric|3|5
+021094|sBandPeakiness|long|S BAND PEAKINESS|Numeric|3|0|16|Numeric|3|5
+021101|numberOfVectorAmbiguities|long|NUMBER OF VECTOR AMBIGUITIES|Numeric|0|0|3|Numeric|0|1
+021102|indexOfSelectedWindVector|long|INDEX OF SELECTED WIND VECTOR|Numeric|0|0|3|Numeric|0|1
+021103|totalNumberOfSigma0Measurements|long|TOTAL NUMBER OF SIGMA-0 MEASUREMENTS|Numeric|0|0|5|Numeric|0|2
+021104|likelihoodComputedForSolution|long|LIKELIHOOD COMPUTED FOR SOLUTION|Numeric|3|-30000|15|Numeric|3|5
+021105|normalizedRadarCrossSection|double|NORMALIZED RADAR CROSS-SECTION|dB|2|-10000|14|dB|2|5
+021106|kpVarianceCoefficientAlpha|long|KP VARIANCE COEFFICIENT (ALPHA)|Numeric|3|0|14|Numeric|3|5
+021107|kpVarianceCoefficientBeta|long|KP VARIANCE COEFFICIENT (BETA)|Numeric|8|0|16|Numeric|8|5
+021109|seawindsWindVectorCellQuality|flag|SEAWINDS WIND VECTOR CELL QUALITY|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021110|numberOfInnerBeamSigma0ForwardOfSatellite|long|NUMBER OF INNER-BEAM SIGMA-0 (FORWARD OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021111|numberOfOuterBeamSigma0ForwardOfSatellite|long|NUMBER OF OUTER-BEAM SIGMA-0 (FORWARD OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021112|numberOfInnerBeamSigma0AftOfSatellite|long|NUMBER OF INNER-BEAM SIGMA-0 (AFT OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021113|numberOfOuterBeamSigma0AftOfSatellite|long|NUMBER OF OUTER-BEAM SIGMA-0 (AFT OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021114|kpVarianceCoefficientGamma|double|KP VARIANCE COEFFICIENT (GAMMA)|dB|3|-140000|18|dB|3|6
+021115|seawindsSigma0Quality|flag|SEAWINDS SIGMA-0 QUALITY|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021116|seawindsSigma0Mode|flag|SEAWINDS SIGMA-0 MODE|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021117|sigma0VarianceQualityControl|long|SIGMA-0 VARIANCE QUALITY CONTROL|Numeric|2|0|16|Numeric|2|5
+021118|attenuationCorrectionOnSigma0|double|ATTENUATION CORRECTION ON SIGMA-0|dB|2|-10000|14|dB|2|5
+021119|windScatterometerGeophysicalModelFunction|table|WIND SCATTEROMETER GEOPHYSICAL MODEL FUNCTION|CODE TABLE|0|0|6|CODE TABLE|0|2
+021120|probabilityOfRain|long|PROBABILITY OF RAIN|Numeric|3|0|10|Numeric|3|4
+021121|seawindsNofRainIndex|long|SEAWINDS NOF* RAIN INDEX|Numeric|0|0|8|Numeric|0|3
+021122|attenuationCorrectionOnSigma0FromTb|double|ATTENUATION CORRECTION ON SIGMA-0 (FROM TB)|dB|2|-10000|14|dB|2|5
+021123|seawindsNormalizedRadarCrossSection|double|SEAWINDS NORMALIZED RADAR CROSS-SECTION|dB|2|-30000|15|dB|2|5
+021128|numberOfValidPointsPerSecondUsedToDerivePreviousParameters|long|NUMBER OF VALID POINTS PER SECOND USED TO DERIVE PREVIOUS PARAMETERS|Numeric|0|0|8|Numeric|0|3
+021130|spectrumTotalEnergy|long|SPECTRUM TOTAL ENERGY|Numeric|6|0|28|Numeric|6|9
+021131|spectrumMaxEnergy|long|SPECTRUM MAX ENERGY|Numeric|6|0|28|Numeric|6|9
+021132|directionOfSpectrumMaxOnHigherResolutionGrid|double|DIRECTION OF SPECTRUM MAX ON HIGHER RESOLUTION GRID|deg|3|0|19|deg|3|6
+021133|wavelengthOfSpectrumMaxOnHigherResolutionGrid|double|WAVELENGTH OF SPECTRUM MAX ON HIGHER RESOLUTION GRID|m|3|0|29|m|3|9
+021134|rangeResolutionOfCressCovarianceSpectrum|double|RANGE RESOLUTION OF CRESS COVARIANCE SPECTRUM|rad/m|3|0|19|rad/m|3|6
+021135|realPartOfCrossSpectraPolarGridNumberOfBins|long|REAL PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS|Numeric|3|-524288|20|Numeric|3|7
+021136|imaginaryPartOfCrossSpectraPolarGridNumberOfBins|long|IMAGINARY PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS|Numeric|3|-524288|20|Numeric|3|7
+021137|kuBandCorrectedOceanBackscatterCoefficient|double|KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021138|stdKuBandCorrectedOceanBackscatterCoefficient|double|STD KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021139|kuBandNetInstrumentalCorrectionForAgc|double|KU BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|dB|2|4
+021140|sBandCorrectedOceanBackscatterCoefficient|double|S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021141|stdSBandCorrectedOceanBackscatterCoefficient|double|STD S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021142|sBandNetInstrumentalCorrectionForAgc|double|S BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-1024|11|dB|2|4
+021143|kuBandRainAttenuation|double|KU BAND RAIN ATTENUATION|dB|2|-1073741824|31|dB|2|10
+021144|altimeterRainFlag|flag|ALTIMETER RAIN FLAG|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+021145|kuBandAutomaticGainControl|double|KU BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|dB|2|4
+021146|rmsKuBandAutomaticGainControl|double|RMS KU BAND AUTOMATIC GAIN CONTROL|dB|2|0|8|dB|2|3
+021147|numberOfValidPointsForKuBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR KU BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|5|Numeric|0|2
+021148|trailingEdgeVariationFlag|flag|TRAILING EDGE VARIATION FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+021150|beamCollocation|table|BEAM COLLOCATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+021151|estimatedErrorInSigma0At40DegreesIncidenceAngle|double|ESTIMATED ERROR IN SIGMA-0 AT 40 DEGREES INCIDENCE ANGLE|dB|2|0|9|dB|2|3
+021152|slopeAt40DegreesIncidenceAngle|double|SLOPE AT 40 DEGREES INCIDENCE ANGLE|dB/deg|2|-80|7|dB/deg|2|2
+021153|estimatedErrorInSlopeAt40DegreesIncidenceAngle|double|ESTIMATED ERROR IN SLOPE AT 40 DEGREES INCIDENCE ANGLE|dB/deg|2|-40|6|dB/deg|2|2
+021154|soilMoistureSensitivity|double|SOIL MOISTURE SENSITIVITY|dB|2|0|12|dB|2|4
+021155|windVectorCellQuality|flag|WIND VECTOR CELL QUALITY|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+021156|backscatterDistance|long|BACKSCATTER DISTANCE|Numeric|1|-4096|13|Numeric|1|4
+021157|lossPerUnitLengthOfAtmosphere|double|LOSS PER UNIT LENGTH OF ATMOSPHERE USED|dB/m|10|0|22|dB/m|10|7
+021158|ascatKpEstimateQuality|table|ASCAT KP ESTIMATE QUALITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+021159|ascatSigma0Usability|table|ASCAT SIGMA-0 USABILITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+021160|ascatUseOfSyntheticData|long|ASCAT USE OF SYNTHETIC DATA|Numeric|3|0|10|Numeric|3|4
+021161|ascatSyntheticDataQuantity|long|ASCAT SYNTHETIC DATA QUANTITY|Numeric|3|0|10|Numeric|3|4
+021162|ascatSatelliteOrbitAndAttitudeQuality|long|ASCAT SATELLITE ORBIT AND ATTITUDE QUALITY|Numeric|3|0|10|Numeric|3|4
+021163|ascatSolarArrayReflectionContamination|long|ASCAT SOLAR ARRAY REFLECTION CONTAMINATION|Numeric|3|0|10|Numeric|3|4
+021164|ascatTelemetryPresenceAndQuality|long|ASCAT TELEMETRY PRESENCE AND QUALITY|Numeric|3|0|10|Numeric|3|4
+021165|ascatExtrapolatedReferenceFunctionPresence|long|ASCAT EXTRAPOLATED REFERENCE FUNCTION PRESENCE|Numeric|3|0|10|Numeric|3|4
+021166|landFraction|long|LAND FRACTION|Numeric|3|0|10|Numeric|3|4
+021169|icePresenceIndicator|table|ICE PRESENCE INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+021170|cBandCorrectedOceanBackscatterCoefficient|double|C BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021171|rmsCBandCorrectedOceanBackscatterCoefficient|double|RMS C BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021172|cBandNetInstrumentalCorrectionForAgc|double|C BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|dB|2|4
+021173|cBandAutomaticGainControl|double|C BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|dB|2|4
+021174|rmsCBandAutomaticGainControl|double|RMS C BAND AUTOMATIC GAIN CONTROL|dB|2|0|9|dB|2|3
+021175|numberOfValidPointsForCBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR C BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|10|Numeric|0|4
+021176|highFrequencyVariabilityCorrection|double|HIGH FREQUENCY VARIABILITY CORRECTION|m|3|0|16|m|3|5
+021177|correctedOcogBackscatterCoefficient|double|CORRECTED OCOG* BACKSCATTER COEFFICIENT|dB|2|0|16|dB|2|5
+021178|stdOf20HzOcogBackscatterCoefficient|double|STD OF 20 HZ OCOG BACKSCATTER COEFFICIENT|dB|2|0|16|dB|2|5
+021179|numberOf20HzValidPointsForOcogBackscatterCoefficient|long|NUMBER OF 20 HZ VALID POINTS FOR OCOG BACKSCATTER COEFFICIENT|Numeric|0|0|16|Numeric|0|5
+021180|numberOf20HzValidPointsForOceanBackscatterCoefficient|long|NUMBER OF 20 HZ VALID POINTS FOR OCEAN BACKSCATTER COEFFICIENT|Numeric|0|0|8|Numeric|0|3
+021181|20HzOceanBackscatterCoefficient|double|20 HZ OCEAN BACKSCATTER COEFFICIENT|dB|2|0|16|dB|2|5
+021182|20HzKuBandPeakiness|long|20 HZ KU BAND PEAKINESS|Numeric|3|0|16|Numeric|3|5
+021183|specificBandCorrectedOceanBackscatterCoefficient|double|SPECIFIC BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021184|stdSpecificBandCorrectedOceanBackscatterCoefficient|double|STD SPECIFIC BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021185|specificBandNetInstrumentalCorrectionForAgc|double|SPECIFIC BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|dB|2|4
+021186|specificBandAutomaticGainControl|double|SPECIFIC BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|dB|2|4
+021187|rmsSpecificBandAutomaticGainControl|double|RMS SPECIFIC BAND AUTOMATIC GAIN CONTROL|dB|2|0|8|dB|2|3
+021188|numberOfValidPointsForSpecificBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR SPECIFIC BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|7|Numeric|0|3
+022001|wavesDirection|long|DIRECTION OF WAVES|deg|0|0|9|deg|0|3
+022002|windWavesDirection|long|DIRECTION OF WIND WAVES|deg|0|0|9|deg|0|3
+022003|swellWavesDirection|long|DIRECTION OF SWELL WAVES|deg|0|0|9|deg|0|3
+022004|currentDirection|long|DIRECTION OF CURRENT|deg|0|0|9|deg|0|3
+022005|seaSurfaceCurrentDirection|long|DIRECTION OF SEA-SURFACE CURRENT|deg|0|0|9|deg|0|3
+022011|periodOfWaves|long|PERIOD OF WAVES|s|0|0|6|s|0|2
+022012|periodOfWindWaves|long|PERIOD OF WIND WAVES|s|0|0|6|s|0|2
+022013|periodOfSwellWaves|long|PERIOD OF SWELL WAVES|s|0|0|6|s|0|2
+022021|heightOfWaves|double|HEIGHT OF WAVES|m|1|0|10|m|1|4
+022022|heightOfWindWaves|double|HEIGHT OF WIND WAVES|m|1|0|10|m|1|4
+022023|heightOfSwellWaves|double|HEIGHT OF SWELL WAVES|m|1|0|10|m|1|4
+022025|standardDeviationWaveHeight|double|STANDARD DEVIATION WAVE HEIGHT|m|2|0|10|m|2|4
+022026|standardDeviationOfSignificantWaveHeight|double|STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT|m|2|0|10|m|2|4
+022031|speedOfCurrent|double|SPEED OF CURRENT|m/s|2|0|13|m/s|2|4
+022032|speedOfSeaSurfaceCurrent|double|SPEED OF SEA-SURFACE CURRENT|m/s|2|0|13|m/s|2|4
+022035|tidalElevationWithRespectToLocalChartDatum|double|TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM|m|2|0|14|m|2|4
+022036|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|2|0|14|m|2|4
+022037|tidalElevationWithRespectToNationalLandDatum|double|TIDAL ELEVATION WITH RESPECT TO NATIONAL LAND DATUM|m|3|-10000|15|m|3|5
+022038|tidalElevationWithRespectToLocalChartDatum|double|TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM|m|3|-10000|15|m|3|5
+022039|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|3|-5000|13|m|3|4
+022040|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|3|-5000|14|m|3|5
+022041|seaSurfaceTemperature15DayRunningMean|double|SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN)|K|1|0|12|K|1|4
+022042|waterTemperature|double|SEA/WATER TEMPERATURE|K|1|0|12|K|1|4
+022043|waterTemperature|double|SEA/WATER TEMPERATURE|K|2|0|15|K|2|5
+022044|soundVelocity|double|SOUND VELOCITY|m/s|1|0|14|m/s|1|5
+022045|waterTemperature|double|SEA/WATER TEMPERATURE|K|3|0|19|K|3|6
+022046|seaIceFraction|long|SEA ICE FRACTION|Numeric|2|0|7|Numeric|2|3
+022049|seaSurfaceTemperature|double|SEA-SURFACE TEMPERATURE|K|2|0|15|K|2|5
+022050|standardDeviationSeaSurfaceTemperature|double|STANDARD DEVIATION SEA-SURFACE TEMPERATURE|K|2|0|8|K|2|3
+022055|floatCycleNumber|long|FLOAT CYCLE NUMBER|Numeric|0|0|10|Numeric|0|3
+022056|directionOfProfile|table|DIRECTION OF PROFILE|CODE TABLE|0|0|2|CODE TABLE|0|1
+022059|seaSurfaceSalinity|double|SEA-SURFACE SALINITY|0/00|2|0|14|0/00|2|5
+022060|lagrangianDrifterDrogueStatus|table|LAGRANGIAN DRIFTER DROGUE STATUS|CODE TABLE|0|0|3|CODE TABLE|0|1
+022061|seaState|table|STATE OF THE SEA|CODE TABLE|0|0|4|CODE TABLE|0|2
+022062|salinity|double|SALINITY|0/00|2|0|14|0/00|2|5
+022063|totalWaterDepth|long|TOTAL WATER DEPTH|m|0|0|14|m|0|5
+022064|salinity|double|SALINITY|0/00|3|0|17|0/00|3|6
+022065|waterPressure|long|WATER PRESSURE|Pa|-3|0|17|Pa|-3|6
+022066|waterConductivity|double|WATER CONDUCTIVITY|S/m|6|0|26|S/m|6|8
+022067|instrumentTypeForWaterTemperatureOrSalinityProfileMeasurement|table|INSTRUMENT TYPE FOR WATER TEMPERATURE/SALINITY PROFILE MEASUREMENT|CODE TABLE|0|0|10|CODE TABLE|0|4
+022068|waterTemperatureProfileRecorderTypes|table|WATER TEMPERATURE PROFILE RECORDER TYPES|CODE TABLE|0|0|7|CODE TABLE|0|3
+022069|spectralWaveDensity|double|SPECTRAL WAVE DENSITY|m2/Hz|3|0|22|m2/Hz|3|7
+022070|significantWaveHeight|double|SIGNIFICANT WAVE HEIGHT|m|2|0|13|m|2|4
+022071|spectralPeakWavePeriod|double|SPECTRAL PEAK WAVE PERIOD|s|1|0|9|s|1|3
+022072|spectralPeakWaveLength|long|SPECTRAL PEAK WAVE LENGTH|m|0|0|13|m|0|4
+022073|maximumWaveHeight|double|MAXIMUM WAVE HEIGHT|m|2|0|13|m|2|4
+022074|averageWavePeriod|double|AVERAGE WAVE PERIOD|s|1|0|9|s|1|3
+022075|averageWaveLength|long|AVERAGE WAVE LENGTH|m|0|0|13|m|0|4
+022076|directionFromWhichDominantWavesAreComing|long|DIRECTION FROM WHICH DOMINANT WAVES ARE COMING|deg|0|0|9|deg|0|3
+022077|directionalSpreadOfDominantWave|long|DIRECTIONAL SPREAD OF DOMINANT WAVE|deg|0|0|9|deg|0|3
+022078|durationOfWaveRecord|long|DURATION OF WAVE RECORD|s|0|0|12|s|0|4
+022079|lengthOfWaveRecord|long|LENGTH OF WAVE RECORD|m|0|0|16|m|0|5
+022080|wavebandCentralFrequency|double|WAVEBAND CENTRAL FREQUENCY|Hz|3|0|10|Hz|3|4
+022081|wavebandCentralWaveNumber|double|WAVEBAND CENTRAL WAVE NUMBER|/m|5|0|13|/m|5|4
+022082|maximumNonDirectionalSpectralWaveDensity|double|MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY|m2 s|2|0|20|m2 s|2|7
+022083|maximumNonDirectionalSpectralWaveNumber|double|MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE NUMBER|m3|2|0|20|m3|2|7
+022084|bandContainingMaximumNonDirectionalSpectralWaveDensity|long|BAND CONTAINING MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY|Numeric|0|0|7|Numeric|0|3
+022085|spectralWaveDensityRatio|long|SPECTRAL WAVE DENSITY RATIO|Numeric|0|0|7|Numeric|0|3
+022086|meanDirectionFromWhichWavesAreComing|long|MEAN DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3
+022087|principalDirectionFromWhichWavesAreComing|long|PRINCIPAL DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3
+022088|firstNormalizedPolarCoordinateFromFourierCoefficients|long|FIRST NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS|Numeric|2|0|7|Numeric|2|3
+022089|secondNormalizedPolarCoordinateFromFourierCoefficients|long|SECOND NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS|Numeric|2|0|7|Numeric|2|3
+022090|nonDirectionalSpectralEstimateByWaveFrequency|double|NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY|m2 s|2|0|20|m2 s|2|7
+022091|nonDirectionalSpectralEstimateByWaveNumber|double|NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER|m3|2|0|20|m3|2|7
+022092|directionalSpectralEstimateByWaveFrequency|double|DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY|m2 rad-1 s|2|0|20|m2 rad-1 s|2|7
+022093|directionalSpectralEstimateByWaveNumber|double|DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER|m4|2|0|20|m4|2|7
+022094|totalNumberOfWaveBands|long|TOTAL NUMBER OF WAVE BANDS|Numeric|0|0|7|Numeric|0|3
+022095|directionalSpreadOfIndividualWaves|long|DIRECTIONAL SPREAD OF INDIVIDUAL WAVES|deg|0|0|8|deg|0|3
+022096|spectralBandWidth|double|SPECTRAL BAND WIDTH|/s|3|0|4|/s|3|2
+022097|meanWavelength731MOfImageSpectrumAtLowWaveNumbers|long|MEAN WAVELENGTH > 731 M OF IMAGE SPECTRUM AT LOW WAVE NUMBERS|m|0|0|14|m|0|5
+022098|wavelengthSpreadWavelength731MAtLowWaveNumbers|long|WAVELENGTH SPREAD (WAVELENGTH > 731 M) AT LOW WAVE NUMBERS|m|0|0|14|m|0|5
+022099|meanDirectionAtLowWaveNumbersWavelength731M|long|MEAN DIRECTION AT LOW WAVE NUMBERS (WAVELENGTH > 731 M)|deg|0|0|9|deg|0|3
+022100|directionSpreadAtLowWaveNumbersWavelength731M|long|DIRECTION SPREAD AT LOW WAVE NUMBERS (WAVELENGTH > 731 M)|deg|0|0|9|deg|0|3
+022101|totalEnergyWavelength731mAtLowWaveNumbers|long|TOTAL ENERGY (WAVELENGTH > 731M) AT LOW WAVE NUMBERS|Numeric|0|0|31|Numeric|0|10
+022120|tideStationAutomatedWaterLevelCheck|table|TIDE STATION AUTOMATED WATER LEVEL CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022121|tideStationManualWaterLevelCheck|table|TIDE STATION MANUAL WATER LEVEL CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022122|automatedMeteorologicalDataCheck|table|TIDE STATION AUTOMATED METEOROLOGICAL DATA CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022123|tideStationManualMeteorologicalDataCheck|table|TIDE STATION MANUAL METEOROLOGICAL DATA CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022130|numberOfValidPointsForSpecificBand|long|NUMBER OF VALID POINTS FOR SPECIFIC BAND|Numeric|0|0|10|Numeric|0|4
+022131|rmsSpecificBandSignificantWaveHeight|double|RMS SPECIFIC BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022132|numberOfValidPointsForSpecificBandSignificantWaveHeight|long|NUMBER OF VALID POINTS FOR SPECIFIC BAND SIGNIFICANT WAVE HEIGHT|Numeric|0|0|10|Numeric|0|4
+022133|specificBandNetInstrumentCorrectionForSignificantWaveHeight|double|SPECIFIC BAND NET INSTRUMENT CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|m|3|4
+022134|numberOfValidPointsForSpecificBandBackscatter|long|NUMBER OF VALID POINTS FOR SPECIFIC BAND BACKSCATTER|Numeric|0|0|10|Numeric|0|4
+022141|seaSurfaceTemperature15DayRunningMean|double|SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN)|K|2|0|15|K|2|5
+022142|squareOfSignificantWaveHeight|double|SQUARE OF SIGNIFICANT WAVE HEIGHT|m2|3|-33554432|26|m2|3|8
+022143|stdOf20HzSwhSquared|double|STD OF 20 HZ SWH SQUARED|m2|3|-8388608|24|m2|3|8
+022144|numberOf20HzValidPointsForSwhSquared|long|NUMBER OF 20 HZ VALID POINTS FOR SWH SQUARED|Numeric|0|0|9|Numeric|0|3
+022145|stdOf20HzOceanRange|double|STD OF 20 HZ OCEAN RANGE|m|3|-33554432|31|m|3|10
+022146|ocogRange|double|OCOG RANGE|m|3|0|31|m|3|10
+022147|stdOf20HzOcogRange|double|STD OF 20 HZ OCOG RANGE|m|3|-8388608|31|m|3|10
+022148|numberOf20HzValidPointsForOceanRange|long|NUMBER OF 20 HZ VALID POINTS FOR OCEAN RANGE|Numeric|0|0|9|Numeric|0|3
+022149|20HzSignificantWaveHeightSquared|double|20 HZ SIGNIFICANT WAVE HEIGHT SQUARED|m2|3|-33554432|26|m2|3|8
+022150|numberOf18HzValidPointsForKuBand|long|NUMBER OF 18 HZ VALID POINTS FOR KU BAND|Numeric|0|0|10|Numeric|0|4
+022151|kuBandOceanRange|double|KU BAND OCEAN RANGE|m|3|0|31|m|3|10
+022152|stdOf18HzKuBandOceanRange|double|STD OF 18 HZ KU BAND OCEAN RANGE|m|3|0|16|m|3|5
+022153|numberOf18HzValidPointsForSBand|long|NUMBER OF 18 HZ VALID POINTS FOR S BAND|Numeric|0|0|10|Numeric|0|4
+022154|sBandOceanRange|double|S BAND OCEAN RANGE|m|3|0|31|m|3|10
+022155|stdOf18HzSBandOceanRange|double|STD OF 18 HZ S BAND OCEAN RANGE|m|3|0|16|m|3|5
+022156|kuBandSignificantWaveHeight|double|KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022157|stdOf18HzKuBandOceanRange|double|STD OF 18 HZ KU BAND OCEAN RANGE|m|3|0|16|m|3|5
+022158|sBandSignificantWaveHeight|double|S BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022159|stdOf18HzSBandSignificantWaveHeight|double|STD OF 18 HZ S BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022160|normalizedInverseWaveAge|long|NORMALIZED INVERSE WAVE AGE|Numeric|6|0|21|Numeric|6|7
+022161|waveSpectra|double|WAVE SPECTRA|m4|4|0|27|m4|4|9
+022162|rmsOf20HzKuBandOceanRange|double|RMS OF 20 HZ KU BAND OCEAN RANGE|m|3|0|16|m|3|5
+022163|numberOf20HzValidPointsForKuBand|long|NUMBER OF 20HZ VALID POINTS FOR KU BAND|Numeric|0|0|10|Numeric|0|4
+022164|rms20HzKuBandSignificantWaveHeight|double|RMS 20 HZ KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022165|numberOf20HzValidPointsForKuBandSignificantWaveHeight|long|NUMBER OF 20 HZ VALID POINTS FOR KU BAND SIGNIFICANT WAVE HEIGHT|Numeric|0|0|10|Numeric|0|4
+022166|kuBandNetInstrumentalCorrectionForSignificantWaveHeight|double|KU BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|m|3|4
+022167|numberOfValidPointsForKuBandBackscatter|long|NUMBER OF VALID POINTS FOR KU BAND BACKSCATTER|Numeric|0|0|10|Numeric|0|4
+022168|cBandOceanRange|double|C BAND OCEAN RANGE|m|3|0|31|m|3|10
+022169|rmsOfCBandOceanRange|double|RMS OF C BAND OCEAN RANGE|m|3|0|16|m|3|5
+022170|numberOf20HzValidPointsForCBand|long|NUMBER OF 20 HZ VALID POINTS FOR C BAND|Numeric|0|0|10|Numeric|0|4
+022171|cBandSignificantWaveHeight|double|C BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022172|rms20HzCBandSignificantWaveHeight|double|RMS 20 HZ C BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022173|numberOf20HzValidPointsForCBandSignificantWaveHeight|long|NUMBER OF 20 HZ VALID POINTS FOR C BAND SIGNIFICANT WAVE HEIGHT|Numeric|0|0|10|Numeric|0|4
+022174|cBandNetInstrumentalCorrectionForSignificantWaveHeight|double|C BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|m|3|4
+022175|numberOfValidPointsForCBandBackscatter|long|NUMBER OF VALID POINTS FOR C BAND BACKSCATTER|Numeric|0|0|10|Numeric|0|4
+022177|heightOfXbtOrXctdLauncher|long|HEIGHT OF XBT/XCTD LAUNCHER|m|0|0|6|m|0|3
+022178|xbtOrXctdLauncherType|table|XBT/XCTD LAUNCHER TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+022182|waterColumnHeight|double|WATER COLUMN HEIGHT|m|3|0|23|m|3|7
+022184|waterColumnHeightDeviationFromReferenceValue|double|WATER COLUMN HEIGHT DEVIATION FROM THE REFERENCE VALUE|m|3|-2000|12|m|3|4
+022185|bprTransmissionCount|long|BPR TRANSMISSION COUNT|Numeric|0|0|10|Numeric|0|3
+022188|dissolvedOxygen|double|DISSOLVED OXYGEN|umol/kg|3|0|19|umol/kg|3|6
+022189|specificBandOceanRange|double|SPECIFIC BAND OCEAN RANGE|m|3|0|31|m|3|10
+022190|specificBandSignificantWaveHeight|double|SPECIFIC BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022191|rmsOfSpecificBandOceanRange|double|RMS OF SPECIFIC BAND OCEAN RANGE|m|4|0|16|m|4|5
+023001|accidentEarlyNotificationArticleApplicable|table|ACCIDENT EARLY NOTIFICATION - ARTICLE APPLICABLE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023002|facilityInvolvedInIncident|table|ACTIVITY OR FACILITY INVOLVED IN INCIDENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+023003|releaseType|table|TYPE OF RELEASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023004|countermeasuresTakenNearBorder|table|COUNTERMEASURES TAKEN NEAR BORDER|CODE TABLE|0|0|3|CODE TABLE|0|1
+023005|causeOfIncident|table|CAUSE OF INCIDENT|CODE TABLE|0|0|2|CODE TABLE|0|1
+023006|incidentSituation|table|INCIDENT SITUATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+023007|characteristicsOfRelease|table|CHARACTERISTICS OF RELEASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023008|stateOfCurrentRelease|table|STATE OF CURRENT RELEASE|CODE TABLE|0|0|2|CODE TABLE|0|1
+023009|stateOfExpectedRelease|table|STATE OF EXPECTED RELEASE|CODE TABLE|0|0|2|CODE TABLE|0|1
+023016|possibilityOfSignificantChemicalToxicHealthEffect|table|POSSIBILITY OF SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT|CODE TABLE|0|0|2|CODE TABLE|0|1
+023017|flowDischargeOfMajorRecipient|double|FLOW DISCHARGE OF MAJOR RECIPIENT|m3/s|6|0|20|m3/s|6|7
+023018|releaseBehaviourOverTime|table|RELEASE BEHAVIOUR OVER TIME|CODE TABLE|0|0|3|CODE TABLE|0|1
+023019|actualReleaseHeight|long|ACTUAL RELEASE HEIGHT|m|0|-15000|17|m|0|6
+023021|effectiveReleaseHeight|long|EFFECTIVE RELEASE HEIGHT|m|0|-15000|17|m|0|6
+023022|distanceOfReleasePointOrSiteOfIncident|long|DISTANCE OF RELEASE POINT OR SITE OF INCIDENT|m|0|0|24|m|0|8
+023023|mainTransportSpeedInAtmosphere|double|MAIN TRANSPORT SPEED IN THE ATMOSPHERE|m/s|1|0|12|m/s|1|4
+023024|mainTransportSpeedInWater|double|MAIN TRANSPORT SPEED IN WATER|m/s|2|0|13|m/s|2|4
+023025|mainTransportSpeedInGroundWater|double|MAIN TRANSPORT SPEED IN GROUND WATER|m/s|2|0|13|m/s|2|4
+023027|mainTransportDirectionInTheAtmosphere|long|MAIN TRANSPORT DIRECTION IN THE ATMOSPHERE|deg|0|0|9|deg|0|3
+023028|mainTransportDirectionInWater|long|MAIN TRANSPORT DIRECTION IN WATER|deg|0|0|9|deg|0|3
+023029|mainTransportDirectionInGroundWater|long|MAIN TRANSPORT DIRECTION IN GROUND WATER|deg|0|0|9|deg|0|3
+023031|possibilityPlume|table|POSSIBILITY THAT PLUME WILL ENCOUNTER PRECIPITATION IN STATE IN WHICH INCIDENT OCCURRED|CODE TABLE|0|0|2|CODE TABLE|0|1
+023032|plumeWillEncounterChangeInWindDirectionAndOrOrSpeedFlag|table|PLUME WILL ENCOUNTER CHANGE IN WIND DIRECTION AND/OR SPEED FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+023040|flowDischargeRiver|double|FLOW DISCHARGE - RIVER|m3/s|1|0|22|m3/s|1|7
+023041|flowDischargeWell|double|FLOW DISCHARGE - WELL|m3/s|3|0|16|m3/s|3|5
+024001|estimateOfAmountOfRadioactivityReleasedUpToSpecifiedTime|long|ESTIMATE OF AMOUNT OF RADIOACTIVITY RELEASED UP TO SPECIFIED TIME|Bq|-11|0|28|Bq|-11|9
+024002|estimatedMaximumPotentialRelease|long|ESTIMATED MAXIMUM POTENTIAL RELEASE|Bq|-11|0|28|Bq|-11|9
+024003|compositionOfRelease|table|COMPOSITION OF RELEASE|CODE TABLE|0|0|5|CODE TABLE|0|2
+024004|elementName|string|ELEMENT NAME|CCITT IA5|0|0|16|Character|0|2
+024005|isotopeMass|long|ISOTOPE MASS|Numeric|0|0|9|Numeric|0|3
+024011|dose|double|DOSE|mSv|2|0|32|mSv|2|10
+024012|trajectoryDoseDefinedLocationAndExpectedTimeOfArrival|double|TRAJECTORY DOSE (DEFINED LOCATION AND EXPECTED TIME OF ARRIVAL)|mSv|2|0|32|mSv|2|10
+024013|gammaDoseInAirAlongMainTransportPathDefinedLocationAndTimePeriod|double|GAMMA DOSE IN AIR ALONG THE MAIN TRANSPORT PATH (DEFINED LOCATION AND TIME PERIOD)|mSv|2|0|32|mSv|2|10
+024014|gammaRadiationDoseRate|double|GAMMA RADIATION DOSE RATE|nSv/h|1|0|14|nSv/h|1|4
+024021|airConcentrationOfNamedIsotopeTypeIncludingGrossBeta|double|AIR CONCENTRATION (OF NAMED ISOTOPE TYPE INCLUDING GROSS BETA)|Bq m-3|2|0|32|Bq m-3|2|10
+024022|concentrationInPrecipitationOfNamedIsotopeType|double|CONCENTRATION IN PRECIPITATION (OF NAMED ISOTOPE TYPE)|Bq/l|2|0|32|Bq/l|2|10
+024023|pulseRateOfBetaRadiation|double|PULSE RATE OF BETA RADIATION|/s|1|0|14|/s|1|4
+024024|pulseRateOfGammaRadiation|double|PULSE RATE OF GAMMA RADIATION|/s|1|0|14|/s|1|4
+025001|rangeGateLength|long|RANGE-GATE LENGTH|m|-1|0|6|m|-1|2
+025002|numberOfGatesAveraged|long|NUMBER OF GATES AVERAGED|Numeric|0|0|4|Numeric|0|2
+025003|numberOfIntegratedPulses|long|NUMBER OF INTEGRATED PULSES|Numeric|0|0|8|Numeric|0|3
+025004|echoProcessing|table|ECHO PROCESSING|CODE TABLE|0|0|2|CODE TABLE|0|1
+025005|echoIntegration|table|ECHO INTEGRATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025006|zToRConversion|table|Z TO R CONVERSION|CODE TABLE|0|0|3|CODE TABLE|0|1
+025007|zToRConversionFactor|long|Z TO R CONVERSION FACTOR|Numeric|0|0|12|Numeric|0|4
+025008|zToRConversionExponent|long|Z TO R CONVERSION EXPONENT|Numeric|2|0|9|Numeric|2|3
+025009|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025010|clutterTreatment|table|CLUTTER TREATMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+025011|groundOccultationCorrectionScreening|table|GROUND OCCULTATION CORRECTION (SCREENING)|CODE TABLE|0|0|2|CODE TABLE|0|1
+025012|rangeAttenuationCorrection|table|RANGE ATTENUATION CORRECTION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025013|brightBandCorrection|flag|BRIGHT-BAND CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025014|azimuthClutterCutOff|long|AZIMUTH CLUTTER CUT-OFF|Numeric|0|0|12|Numeric|0|4
+025015|radomeAttenuationCorrection|flag|RADOME ATTENUATION CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025016|clearAirAttenuationCorrection|double|CLEAR-AIR ATTENUATION CORRECTION|dB/m|5|0|6|dB/m|5|2
+025017|precipitationAttenuationCorrection|flag|PRECIPITATION ATTENUATION CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025018|aToZLawForAttenuationFactor|long|A TO Z LAW FOR ATTENUATION FACTOR|Numeric|7|0|6|Numeric|7|2
+025019|aToZLawForAttenuationExponent|long|A TO Z LAW FOR ATTENUATION EXPONENT|Numeric|2|0|7|Numeric|2|3
+025020|meanSpeedEstimation|table|MEAN SPEED ESTIMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025021|windComputationEnhancement|flag|WIND COMPUTATION ENHANCEMENT|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025022|ghrsstRejectionFlag|flag|GHRSST* REJECTION FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025023|ghrsstConfidenceFlag|flag|GHRSST CONFIDENCE FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025024|ghrsstDataQuality|table|GHRSST DATA QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+025025|batteryVoltage|double|BATTERY VOLTAGE|V|1|0|9|V|1|3
+025026|batteryVoltageLargeRange|double|BATTERY VOLTAGE (LARGE RANGE)|V|1|0|12|V|1|4
+025028|operatorOrManufacturerDefinedParameter|long|OPERATOR OR MANUFACTURER DEFINED PARAMETER|Numeric|1|-16384|15|Numeric|1|5
+025029|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+025030|runningMeanSeaSurfaceTemperatureUsage|table|RUNNING MEAN SEA-SURFACE TEMPERATURE USAGE|CODE TABLE|0|0|2|CODE TABLE|0|1
+025031|nwpGeneratedVerticalProfileThinningMethod|table|NWP-GENERATED VERTICAL PROFILE THINNING METHOD|CODE TABLE|0|0|3|CODE TABLE|0|1
+025032|windProfilerModeInformation|table|WIND PROFILER MODE INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025033|windProfilerSubmodeInformation|table|WIND PROFILER SUBMODE INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025034|windProfilerQualityControlTestResults|flag|WIND PROFILER QUALITY CONTROL TEST RESULTS|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025035|decisionMethodForPolarity|table|DECISION METHOD FOR POLARITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+025036|atmosphericsLocationMethod|table|ATMOSPHERICS LOCATION METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+025037|sstBias|double|SST BIAS|K|2|-127|8|K|2|3
+025038|differenceBetweenSstAndAnalysis|double|DIFFERENCE BETWEEN SST AND ANALYSIS|K|1|-127|8|K|1|3
+025040|co2WindProductDerivation|table|CO2 WIND PRODUCT DERIVATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+025041|movingPlatformDirectionReportingMethod|table|MOVING PLATFORM DIRECTION REPORTING METHOD|CODE TABLE|0|0|2|CODE TABLE|0|1
+025042|movingPlatformSpeedReportingMethod|table|MOVING PLATFORM SPEED REPORTING METHOD|CODE TABLE|0|0|2|CODE TABLE|0|1
+025043|waveSamplingIntervalTime|double|WAVE SAMPLING INTERVAL (TIME)|s|4|0|15|s|4|5
+025044|waveSamplingIntervalSpace|double|WAVE SAMPLING INTERVAL (SPACE)|m|2|0|14|m|2|5
+025045|hirsChannelCombination|flag|HIRS CHANNEL COMBINATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+025046|msuChannelCombination|flag|MSU CHANNEL COMBINATION|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+025047|ssuChannelCombination|flag|SSU CHANNEL COMBINATION|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025048|amsuAChannelCombination|flag|AMSU-A CHANNEL COMBINATION|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+025049|amsuBChannelCombination|flag|AMSU-B CHANNEL COMBINATION|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+025050|principalComponentScore|long|PRINCIPAL COMPONENT SCORE|Numeric|4|-131072|18|Numeric|4|6
+025051|avhrrChannelCombination|flag|AVHRR CHANNEL COMBINATION|FLAG TABLE|0|0|7|FLAG TABLE|0|3
+025052|log10OfPrincipalComponentsNormalizedFitToData|long|LOG10 OF PRINCIPAL COMPONENTS NORMALIZED FIT TO DATA|Numeric|4|0|15|Numeric|4|5
+025053|observationQuality|flag|OBSERVATION QUALITY|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+025054|ssmisSubframeIdNumber|long|SSMIS SUBFRAME ID NUMBER|Numeric|0|0|5|Numeric|0|2
+025055|multiplexerHousekeeping|double|MULTIPLEXER HOUSEKEEPING|K|2|0|16|K|2|5
+025060|softwareIdentification|long|SOFTWARE IDENTIFICATION|Numeric|0|0|14|Numeric|0|5
+025061|softwareVersionNumber|string|SOFTWARE IDENTIFICATION AND VERSION NUMBER|CCITT IA5|0|0|96|Character|0|12
+025062|databaseIdentification|long|DATABASE IDENTIFICATION|Numeric|0|0|14|Numeric|0|5
+025063|SystemIdentifier|table|CENTRAL PROCESSOR OR SYSTEM IDENTIFIER|CODE TABLE|0|0|8|CODE TABLE|0|3
+025065|orientationCorrectionAzimuth|double|ORIENTATION CORRECTION (AZIMUTH)|deg|2|-1000|11|deg|2|4
+025066|orientationCorrectionElevation|double|ORIENTATION CORRECTION (ELEVATION)|deg|2|-1000|11|deg|2|4
+025067|radiosondeReleasePointPressureCorrection|long|RADIOSONDE RELEASE POINT PRESSURE CORRECTION|Pa|0|-8000|14|Pa|0|4
+025068|numberOfArchiveRecomputes|long|NUMBER OF ARCHIVE RECOMPUTES|Numeric|0|0|7|Numeric|0|3
+025069|flightLevelPressureCorrections|flag|FLIGHT LEVEL PRESSURE CORRECTIONS|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025070|majorFrameCount|long|MAJOR FRAME COUNT|Numeric|0|0|4|Numeric|0|2
+025071|frameCount|long|FRAME COUNT|Numeric|0|0|5|Numeric|0|2
+025075|satelliteAntennaCorrectionsVersionNumber|long|SATELLITE ANTENNA CORRECTIONS VERSION NUMBER|Numeric|0|0|5|Numeric|0|2
+025076|log10OfTemperatureRadianceCentralWaveNumberForAtovs|double|LOG10 OF (TEMPERATURE-RADIANCE CENTRAL WAVE NUMBER) FOR ATOVS|log (m-1)|8|0|30|log (m-1)|8|10
+025077|bandwidthCorrectionCoefficient1ForAtovs|long|BANDWIDTH CORRECTION COEFFICIENT 1 FOR ATOVS|Numeric|5|-100000|18|Numeric|5|7
+025078|bandwidthCorrectionCoefficient2ForAtovs|long|BANDWIDTH CORRECTION COEFFICIENT 2 FOR ATOVS|Numeric|5|0|17|Numeric|5|6
+025079|albedoRadianceSolarFilteredIrradianceForAtovs|double|ALBEDO-RADIANCE SOLAR FILTERED IRRADIANCE FOR ATOVS|W m-2|4|0|24|W m-2|4|8
+025080|albedoRadianceEquivalentFilterWidthForAtovs|double|ALBEDO-RADIANCE EQUIVALENT FILTER WIDTH FOR ATOVS|m|10|0|14|m|10|5
+025081|incidenceAngle|double|INCIDENCE ANGLE|deg|3|0|17|deg|3|6
+025082|azimuthAngle|double|AZIMUTH ANGLE|deg|3|0|19|deg|3|6
+025083|faradayRotationalAngle|double|FARADAY ROTATIONAL ANGLE|deg|3|0|19|deg|3|6
+025084|geometricRotationalAngle|double|GEOMETRIC ROTATIONAL ANGLE|deg|5|0|26|deg|5|8
+025085|fractionOfClearPixelsInHirsFov|long|FRACTION OF CLEAR PIXELS IN HIRS FOV|Numeric|0|0|7|Numeric|0|3
+025086|depthCorrectionIndicator|table|DEPTH CORRECTION INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+025090|orbitStateFlag|table|ORBIT STATE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+025091|structureConstantOfRefractionIndexCn2|double|STRUCTURE CONSTANT OF THE REFRACTION INDEX (CN2)|dB|3|-18192|13|dB|3|5
+025092|acousticPropagationVelocity|double|ACOUSTIC PROPAGATION VELOCITY|m/s|2|28000|14|m/s|2|5
+025093|rassComputationCorrection|flag|RASS COMPUTATION CORRECTION|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025095|altimeterStateFlag|flag|ALTIMETER STATE FLAG|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025096|radiometerStateFlag|flag|RADIOMETER STATE FLAG|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+025097|threeDimensionalErrorEstimateOfNavigatorOrbit|table|THREE-DIMENSIONAL ERROR ESTIMATE OF THE NAVIGATOR ORBIT|CODE TABLE|0|0|4|CODE TABLE|0|2
+025098|altimeterDataQualityFlag|flag|ALTIMETER DATA QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025099|altimeterCorrectionQualityFlag|flag|ALTIMETER CORRECTION QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025100|xbtOrXctdFallRateEquationCoefficientA|long|XBT/XCTD FALL RATE EQUATION COEFFICIENT A|Numeric|5|0|20|Numeric|5|6
+025101|xbtOrXctdFallRateEquationCoefficientB|long|XBT/XCTD FALL RATE EQUATION COEFFICIENT B|Numeric|5|-500000|21|Numeric|5|6
+025102|numberOfMissingLinesExcludingDataGaps|long|NUMBER OF MISSING LINES EXCLUDING DATA GAPS|Numeric|0|0|8|Numeric|0|3
+025103|numberOfDirectionalBins|long|NUMBER OF DIRECTIONAL BINS|Numeric|0|0|8|Numeric|0|3
+025104|numberOfWavelengthBins|long|NUMBER OF WAVELENGTH BINS|Numeric|0|0|8|Numeric|0|3
+025105|firstDirectionalBin|double|FIRST DIRECTIONAL BIN|deg|3|0|19|deg|3|6
+025106|directionalBinStep|double|DIRECTIONAL BIN STEP|deg|3|0|19|deg|3|6
+025107|firstWavelengthBin|double|FIRST WAVELENGTH BIN|m|3|0|29|m|3|9
+025108|lastWavelengthBin|double|LAST WAVELENGTH BIN|m|3|0|29|m|3|9
+025110|imageProcessingSummary|flag|IMAGE PROCESSING SUMMARY|FLAG TABLE|0|0|10|FLAG TABLE|0|4
+025111|numberOfInputDataGaps|long|NUMBER OF INPUT DATA GAPS|Numeric|0|0|8|Numeric|0|3
+025112|bandSpecificAltimeterDataQualityFlag|flag|BAND SPECIFIC ALTIMETER DATA QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025113|bandSpecificAltimeterCorrectionQualityFlag|flag|BAND SPECIFIC ALTIMETER CORRECTION QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025120|ra2L2ProcessingFlag|table|RA2-L2-PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025121|ra2L2ProcessingQuality|long|RA2-L2-PROCESSING QUALITY|%|0|0|7|%|0|3
+025122|hardwareConfigurationForRf|table|HARDWARE CONFIGURATION FOR RF|CODE TABLE|0|0|2|CODE TABLE|0|1
+025123|hardwareConfigurationForHpa|table|HARDWARE CONFIGURATION FOR HPA|CODE TABLE|0|0|2|CODE TABLE|0|1
+025124|mwrL2ProcessingFlag|table|MWR-L2-PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025125|mwrL2ProcessingQuality|long|MWR-L2-PROCESSING QUALITY|%|0|0|7|%|0|3
+025126|modelDryTroposphericCorrection|double|MODEL DRY TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025127|invertedBarometerCorrection|double|INVERTED BAROMETER CORRECTION|m|3|-32768|16|m|3|5
+025128|modelWetTroposphericCorrection|double|MODEL WET TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025129|mwrDerivedWetTroposphericCorrection|double|MWR DERIVED WET TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025130|ra2IonosphericCorrectionOnKuBand|double|RA2 IONOSPHERIC CORRECTION ON KU BAND|m|3|-32768|16|m|3|5
+025131|ionosphericCorrectionFromDorisOnKuBand|double|IONOSPHERIC CORRECTION FROM DORIS ON KU BAND|m|3|-32768|16|m|3|5
+025132|ionosphericCorrectionFromModelOnKuBand|double|IONOSPHERIC CORRECTION FROM MODEL ON KU BAND|m|3|-32768|16|m|3|5
+025133|seaStateBiasCorrectionOnKuBand|double|SEA STATE BIAS CORRECTION ON KU BAND|m|3|-32768|16|m|3|5
+025134|ra2IonosphericCorrectionOnSBand|double|RA2 IONOSPHERIC CORRECTION ON S BAND|m|3|-32768|16|m|3|5
+025135|ionosphericCorrectionFromDorisOnSBand|double|IONOSPHERIC CORRECTION FROM DORIS ON S BAND|m|3|-32768|16|m|3|5
+025136|ionosphericCorrectionFromModelOnSBand|double|IONOSPHERIC CORRECTION FROM MODEL ON S BAND|m|3|-32768|16|m|3|5
+025137|seaStateBiasCorrectionOnSBand|double|SEA STATE BIAS CORRECTION ON S BAND|m|3|-32768|16|m|3|5
+025138|averageSignalToNoiseRatio|long|AVERAGE SIGNAL-TO-NOISE RATIO|Numeric|0|-2048|12|Numeric|0|4
+025140|startChannel|long|START CHANNEL|Numeric|0|0|14|Numeric|0|5
+025141|endChannel|long|END CHANNEL|Numeric|0|0|14|Numeric|0|5
+025142|channelScaleFactor|long|CHANNEL SCALE FACTOR|Numeric|0|0|6|Numeric|0|2
+025143|linearCoefficient|long|LINEAR COEFFICIENT|Numeric|6|-5000000|24|Numeric|6|8
+025150|methodOfTropicalCycloneIntensityAnalysisUsingSatelliteData|table|METHOD OF TROPICAL CYCLONE INTENSITY ANALYSIS USING SATELLITE DATA|CODE TABLE|0|0|4|CODE TABLE|0|2
+025160|kuBandNetInstrumentalCorrection|double|KU BAND NET INSTRUMENTAL CORRECTION|m|4|-120000|18|m|4|6
+025161|cBandNetInstrumentalCorrection|double|C BAND NET INSTRUMENTAL CORRECTION|m|4|-120000|18|m|4|6
+025162|seaStateBiasCorrectionOnCBand|double|SEA STATE BIAS CORRECTION ON C BAND|m|4|-6000|13|m|4|4
+025163|altimeterIonosphericCorrectionOnKuBand|double|ALTIMETER IONOSPHERIC CORRECTION ON KU BAND|m|3|-32768|16|m|3|5
+025164|radiometerWetTroposphericCorrection|double|RADIOMETER WET TROPOSPHERIC CORRECTION|m|4|-5000|13|m|4|4
+025165|ionosphericCorrectionFromModelOnSpecificBand|double|IONOSPHERIC CORRECTION FROM MODEL ON SPECIFIC BAND|m|4|-32768|16|m|4|5
+025166|seaStateBiasCorrectionOnSpecificBand|double|SEA STATE BIAS CORRECTION ON SPECIFIC BAND|m|4|-32768|16|m|4|5
+025167|specificBandNetInstrumentalCorrection|double|SPECIFIC BAND NET INSTRUMENTAL CORRECTION|m|4|-120000|18|m|4|6
+025170|samplingIntervalTime|long|SAMPLING INTERVAL (TIME)|s|0|0|10|s|0|4
+025171|sampleAveragingPeriod|long|SAMPLE AVERAGING PERIOD|s|0|0|10|s|0|4
+025172|numberOfSamples|long|NUMBER OF SAMPLES|Numeric|0|0|10|Numeric|0|4
+025174|smosInformationFlag|flag|SMOS INFORMATION FLAG|FLAG TABLE|0|0|14|FLAG TABLE|0|5
+025175|modifiedResidual|long|MODIFIED RESIDUAL|Numeric|2|0|13|Numeric|2|4
+025180|lrmPercent|double|LRM* PER CENT|%|2|0|16|%|2|5
+025181|l2ProcessingFlag|table|L2 PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025182|l1ProcessingFlag|table|L1 PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025183|l1ProcessingQuality|double|L1 PROCESSING QUALITY|%|2|0|14|%|2|5
+025184|l2ProductStatus|table|L2 PRODUCT STATUS|CODE TABLE|0|0|2|CODE TABLE|0|1
+026001|principalTimeOfDailyReadingInUtcOfMaximumTemperature|double|PRINCIPAL TIME OF DAILY READING IN UTC OF MAXIMUM TEMPERATURE|h|1|0|12|h|1|3
+026002|principalTimeOfDailyReadingInUtcOfMinimumTemperature|double|PRINCIPAL TIME OF DAILY READING IN UTC OF MINIMUM TEMPERATURE|h|1|0|12|h|1|3
+026003|timeDifference|long|TIME DIFFERENCE|min|0|-1440|12|min|0|4
+026010|hoursIncluded|flag|HOURS INCLUDED|FLAG TABLE|0|0|26|FLAG TABLE|0|9
+026020|durationOfPrecipitation|long|DURATION OF PRECIPITATION|min|0|0|11|min|0|4
+026021|year|long|YEAR|a|0|0|12|a|0|4
+026022|month|long|MONTH|mon|0|0|4|mon|0|2
+026023|day|long|DAY|d|0|0|6|d|0|2
+026030|measurementIntegrationTime|double|MEASUREMENT INTEGRATION TIME|s|2|0|8|s|2|3
+027001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+027002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+027003|alternateLatitude|double|ALTERNATE LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+027004|alternateLatitude|double|ALTERNATE LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+027010|footprintAxis1|long|FOOTPRINT AXIS 1|m|-1|0|14|m|-1|5
+027020|satelliteLocationCounter|long|SATELLITE LOCATION COUNTER|Numeric|0|0|16|Numeric|0|5
+027021|satelliteSublocationDimension|long|SATELLITE SUBLOCATION DIMENSION|Numeric|0|0|16|Numeric|0|5
+027031|DistanceFromEarthCentreInDirectionOf0DegreesLongitude|double|IN DIRECTION OF 0 DEGREES LONGITUDE, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10
+027080|viewingAzimuthAngle|double|VIEWING AZIMUTH ANGLE|deg|2|0|16|deg|0|5
+028001|longitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+028002|longitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+028003|alternateLongitude|double|ALTERNATE LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+028004|alternateLongitude|double|ALTERNATE LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+028010|footprintAxis2|long|FOOTPRINT AXIS 2|m|-1|0|14|m|-1|5
+028031|DistanceFromEarthCentreInDirection90DegreesEast|double|IN DIRECTION 90 DEGREES EAST, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10
+029001|projectionType|table|PROJECTION TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+029002|coordinateGridType|table|COORDINATE GRID TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+030001|pixelValue4Bits|long|PIXEL VALUE (4 BITS)|Numeric|0|0|4|Numeric|0|2
+030002|pixelValue8Bits|long|PIXEL VALUE (8 BITS)|Numeric|0|0|8|Numeric|0|3
+030004|pixelValue16Bits|long|PIXEL VALUE (16 BITS)|Numeric|0|0|16|Numeric|0|5
+030010|numberOfGridPoints|long|NUMBER OF GRID POINTS|Numeric|0|0|13|Numeric|0|4
+030021|numberOfPixelsPerRow|long|NUMBER OF PIXELS PER ROW|Numeric|0|0|12|Numeric|0|4
+030022|numberOfPixelsPerColumn|long|NUMBER OF PIXELS PER COLUMN|Numeric|0|0|12|Numeric|0|4
+030031|pictureType|table|PICTURE TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+030032|combinationWithOtherData|flag|COMBINATION WITH OTHER DATA|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+030033|numberOfBinsAlongRadial|long|NUMBER OF BINS ALONG THE RADIAL|Numeric|0|0|12|Numeric|0|4
+030034|numberOfAzimuths|long|NUMBER OF AZIMUTHS|Numeric|0|0|12|Numeric|0|4
+031000|shortDelayedDescriptorReplicationFactor|long|SHORT DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|1|NA|0|0
+031001|delayedDescriptorReplicationFactor|long|DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|8|NA|0|0
+031002|extendedDelayedDescriptorReplicationFactor|long|EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|16|NA|0|0
+031011|delayedDescriptorAndDataRepetitionFactor|long|DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|8|NA|0|0
+031012|extendedDelayedDescriptorAndDataRepetitionFactor|long|EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|16|NA|0|0
+031021|associatedFieldSignificance|table|ASSOCIATED FIELD SIGNIFICANCE|CODE TABLE|0|0|6|NA|0|0
+031031|dataPresentIndicator|flag|DATA PRESENT INDICATOR|FLAG TABLE|0|0|1|NA|0|0
+033002|qualityInformation|table|QUALITY INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033003|qualityInformation|table|QUALITY INFORMATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+033005|qualityInformationAwsData|flag|QUALITY INFORMATION (AWS DATA)|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+033006|internalMeasurementStatusInformationAws|table|INTERNAL MEASUREMENT STATUS INFORMATION (AWS)|CODE TABLE|0|0|3|CODE TABLE|0|1
+033007|percentConfidence|long|PER CENT CONFIDENCE|%|0|0|7|%|0|3
+033015|dataQualityCheckIndicator|table|DATA QUALITY CHECK INDICATOR|CODE TABLE|0|0|6|CODE TABLE|0|2
+033020|qualityControlIndicationOfFollowingValue|table|QUALITY CONTROL INDICATION OF FOLLOWING VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+033021|qualityOfFollowingValue|table|QUALITY OF FOLLOWING VALUE|CODE TABLE|0|0|2|CODE TABLE|0|1
+033022|qualityOfBuoySatelliteTransmission|table|QUALITY OF BUOY SATELLITE TRANSMISSION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033023|qualityOfBuoyLocation|table|QUALITY OF BUOY LOCATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033024|stationElevationQualityMarkForMobileStations|table|STATION ELEVATION QUALITY MARK (FOR MOBILE STATIONS)|CODE TABLE|0|0|4|CODE TABLE|0|2
+033025|acarsInterpolatedValuesIndicator|table|ACARS INTERPOLATED VALUES INDICATOR|CODE TABLE|0|0|3|CODE TABLE|0|1
+033026|moistureQuality|table|MOISTURE QUALITY|CODE TABLE|0|0|6|CODE TABLE|0|2
+033027|locationQualityClassRangeOfRadiusOf66Confidence|table|LOCATION QUALITY CLASS (RANGE OF RADIUS OF 66 % CONFIDENCE)|CODE TABLE|0|0|3|CODE TABLE|0|1
+033028|snapshotOverallQuality|table|SNAPSHOT OVERALL QUALITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+033030|scanLineStatusFlagsForAtovs|flag|SCAN LINE STATUS FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033031|scanLineQualityFlagsForAtovs|flag|SCAN LINE QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033032|channelQualityFlagsForAtovs|flag|CHANNEL QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033033|fieldOfViewQualityFlagsForAtovs|flag|FIELD OF VIEW QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033035|qualityControl|table|MANUAL/AUTOMATIC QUALITY CONTROL|CODE TABLE|0|0|4|CODE TABLE|0|2
+033036|nominalConfidenceThreshold|long|NOMINAL CONFIDENCE THRESHOLD|%|0|0|7|%|0|3
+033037|windCorrelationError|flag|WIND CORRELATION ERROR|FLAG TABLE|0|0|20|FLAG TABLE|0|7
+033038|qualityFlagsForGroundBasedGnssData|flag|QUALITY FLAGS FOR GROUND-BASED GNSS DATA|FLAG TABLE|0|0|10|FLAG TABLE|0|4
+033039|radioOccultationDataQualityFlags|flag|QUALITY FLAGS FOR RADIO OCCULTATION DATA|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+033040|confidenceInterval|long|CONFIDENCE INTERVAL|%|0|0|7|%|0|3
+033041|attributeOfFollowingValue|table|ATTRIBUTE OF FOLLOWING VALUE|CODE TABLE|0|0|2|CODE TABLE|0|1
+033042|typeOfLimitRepresentedByFollowingValue|table|TYPE OF LIMIT REPRESENTED BY FOLLOWING VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+033043|astConfidence|flag|AST CONFIDENCE|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+033044|asarQualityInformation|flag|ASAR QUALITY INFORMATION|FLAG TABLE|0|0|15|FLAG TABLE|0|5
+033045|probabilityOfFollowingEvent|long|PROBABILITY OF FOLLOWING EVENT|%|0|0|7|%|0|3
+033046|conditionalProbability|long|CONDITIONAL PROBABILITY OF FOLLOWING EVENT WITH RESPECT TO SPECIFIED CONDITIONING EVENT|%|0|0|7|%|0|3
+033047|measurementConfidenceData|flag|MEASUREMENT CONFIDENCE DATA|FLAG TABLE|0|0|31|FLAG TABLE|0|11
+033048|confidenceMeasureOfSarInversion|table|CONFIDENCE MEASURE OF SAR INVERSION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033049|confidenceMeasureOfWindRetrieval|table|CONFIDENCE MEASURE OF WIND RETRIEVAL|CODE TABLE|0|0|2|CODE TABLE|0|1
+033050|globalGtsppQualityFlag|table|GLOBAL GTSPP QUALITY FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+033052|sBandOceanRetrackingQuality|flag|S BAND OCEAN RETRACKING QUALITY|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+033053|kuBandOceanRetrackingQuality|flag|KU BAND OCEAN RETRACKING QUALITY|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+033060|gqisFlagQual|table|GQISFLAGQUAL - INDIVIDUAL IASI-SYSTEM QUALITY FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+033061|gqisQualIndex|long|GQISQUALINDEX - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE (CONTRIBUTIONS FROM SPECTRAL AND RADIOMETRIC CALIBRATION)|%|0|0|7|%|0|3
+033062|gqisQualIndexLoc|long|GQISQUALINDEXLOC - INDICATOR FOR GEOMETRIC QUALITY INDEX|%|0|0|7|%|0|3
+033063|gqisQualIndexRad|long|GQISQUALINDEXRAD - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE (CONTRIBUTIONS FROM RADIOMETRIC CALIBRATION)|%|0|0|7|%|0|3
+033064|gqisQualIndexSpect|long|GQISQUALINDEXSPECT - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE (CONTRIBUTIONS FROM SPECTRAL CALIBRATION)|%|0|0|7|%|0|3
+033065|gqisSysTecQual|long|GQISSYSTECSONDQUAL - OUTPUT OF SYSTEM TEC (TECHNICAL EXPERTISE CENTRE) QUALITY FUNCTION|Numeric|0|0|24|Numeric|0|8
+033070|totalOzoneQuality|table|TOTAL OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033071|profileOzoneQuality|table|PROFILE OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033072|ozoneError|table|OZONE ERROR|CODE TABLE|0|0|5|CODE TABLE|0|2
+033075|scanLevelQualityFlags|flag|SCAN-LEVEL QUALITY FLAGS|FLAG TABLE|0|0|13|FLAG TABLE|0|5
+033076|calibrationQualityFlags|flag|CALIBRATION QUALITY FLAGS|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+033077|fieldOfViewQualityFlags|flag|FIELD-OF-VIEW QUALITY FLAGS|FLAG TABLE|0|0|19|FLAG TABLE|0|7
+033078|geolocationQuality|table|GEOLOCATION QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033079|granuleLevelQualityFlags|flag|GRANULE LEVEL QUALITY FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+033080|scanLevelQualityFlags|flag|SCAN LEVEL QUALITY FLAGS|FLAG TABLE|0|0|20|FLAG TABLE|0|7
+033081|channelDataQualityFlags|flag|CHANNEL DATA QUALITY FLAGS|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+033082|geolocationQualityFlags|flag|GEOLOCATION QUALITY FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+033083|radianceDataQualityFlags|flag|RADIANCE DATA QUALITY FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+033084|pixelLevelQualityFlags|flag|PIXEL LEVEL QUALITY FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+033085|aerosolOpticalThicknessQualityFlags|flag|AEROSOL OPTICAL THICKNESS QUALITY FLAGS|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+033086|qualityOfPixelLevelRetrieval|table|QUALITY OF PIXEL LEVEL RETRIEVAL|CODE TABLE|0|0|3|CODE TABLE|0|1
+033087|extentOfSatelliteWithinSouthAtlanticAnomalyBasedOnClimatologicalData|table|EXTENT OF SATELLITE WITHIN SOUTH ATLANTIC ANOMALY (BASED ON CLIMATOLOGICAL DATA)|CODE TABLE|0|0|4|CODE TABLE|0|1
+033088|ozoneTotalColumnQualityFlag|flag|OZONE TOTAL COLUMN QUALITY FLAG|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+035000|fmAndRegionalCodeNumber|table|FM AND REGIONAL CODE NUMBER|CODE TABLE|0|0|10|CODE TABLE|0|3
+035001|timeFrameForMonitoring|table|TIME FRAME FOR MONITORING|CODE TABLE|0|0|3|CODE TABLE|0|1
+035011|numberOfReportsActuallyReceived|long|NUMBER OF REPORTS ACTUALLY RECEIVED|Numeric|0|0|14|Numeric|0|4
+035021|bulletinBeingMonitoredTtaaii|string|BULLETIN BEING MONITORED (TTAAII)|CCITT IA5|0|0|48|Character|0|6
+035022|bulletinBeingMonitoredYygggg|string|BULLETIN BEING MONITORED (YYGGGG)|CCITT IA5|0|0|48|Character|0|6
+035023|bulletinBeingMonitoredCccc|string|BULLETIN BEING MONITORED (CCCC)|CCITT IA5|0|0|32|Character|0|4
+035024|bulletinBeingMonitoredBbb|string|BULLETIN BEING MONITORED (BBB)|CCITT IA5|0|0|24|Character|0|3
+035030|discrepanciesInAvailabilityOfExpectedData|table|DISCREPANCIES IN THE AVAILABILITY OF EXPECTED DATA|CODE TABLE|0|0|4|CODE TABLE|0|1
+035031|qualifierOnMonitoringResults|table|QUALIFIER ON MONITORING RESULTS|CODE TABLE|0|0|7|CODE TABLE|0|2
+035032|causeOfMissingData|table|CAUSE OF MISSING DATA|CODE TABLE|0|0|4|CODE TABLE|0|1
+035033|observationAndCollectionDeficiencies|table|OBSERVATION AND COLLECTION DEFICIENCIES|CODE TABLE|0|0|7|CODE TABLE|0|2
+035034|statisticalTrendsForAvailabilityOfDataDuringSurveyPeriods|table|STATISTICAL TRENDS FOR AVAILABILITY OF DATA (DURING THE SURVEY PERIOD(S))|CODE TABLE|0|0|3|CODE TABLE|0|1
+035035|reasonForTermination|table|REASON FOR TERMINATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+040001|surfaceSoilMoisture|double|SURFACE SOIL MOISTURE (MS)|%|1|0|10|%|1|4
+040002|estimatedErrorInSurfaceSoilMoisture|double|ESTIMATED ERROR IN SURFACE SOIL MOISTURE|%|1|0|10|%|1|4
+040003|meanSurfaceSoilMoisture|long|MEAN SURFACE SOIL MOISTURE|Numeric|3|0|10|Numeric|3|4
+040004|rainFallDetection|long|RAIN FALL DETECTION|Numeric|3|0|10|Numeric|3|4
+040005|soilMoistureCorrectionFlag|flag|SOIL MOISTURE CORRECTION FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040006|soilMoistureProcessingFlag|flag|SOIL MOISTURE PROCESSING FLAG|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+040007|soilMoistureQuality|double|SOIL MOISTURE QUALITY|%|1|0|10|%|1|4
+040008|frozenLandSurfaceFraction|double|FROZEN LAND SURFACE FRACTION|%|1|0|10|%|1|4
+040009|inundationAndWetlandFraction|double|INUNDATION AND WETLAND FRACTION|%|1|0|10|%|1|4
+040010|topographicComplexity|double|TOPOGRAPHIC COMPLEXITY|%|1|0|10|%|1|4
+040011|interpolationFlag|flag|INTERPOLATION FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040012|radiometerDataQualityFlag|flag|RADIOMETER DATA QUALITY FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040013|radiometerBrightnessTemperatureInterpretationFlag|table|RADIOMETER BRIGHTNESS TEMPERATURE INTERPRETATION FLAG|CODE TABLE|0|0|3|CODE TABLE|0|1
+040014|highFrequencyFluctuationsOfSeaSurfaceTopographyCorrection|double|HIGH-FREQUENCY FLUCTUATIONS OF THE SEA-SURFACE TOPOGRAPHY CORRECTION|m|4|-3000|13|m|4|4
+040015|normalizedDifferentialVegetationIndex|long|NORMALIZED DIFFERENTIAL VEGETATION INDEX (NDVI)|Numeric|2|-100|8|Numeric|2|3
+040016|residualRmsInBand|long|RESIDUAL RMS IN BAND|Numeric|3|0|14|Numeric|3|5
+040017|nonNormalizedPrincipalComponentScore|long|NON-NORMALIZED PRINCIPAL COMPONENT SCORE|Numeric|0|-1073741824|31|Numeric|0|10
+040018|averageOfImagerMeasurements|double|GIACAVGIMAGIIS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8
+040019|giacvarimagiisVarianceOfImagerMeasurements|double|GIACVARIMAGIIS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8
+040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH SNOW/ICE|%|0|0|7|%|0|3
+040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|Numeric|0|3
+040023|auxiliaryAltimeterStateFlags|flag|AUXILIARY ALTIMETER STATE FLAGS|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+040024|meteorologicalMapAvailability|table|METEOROLOGICAL MAP AVAILABILITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+040025|interpolationFlagForMeanDiurnalTide|table|INTERPOLATION FLAG FOR MEAN DIURNAL TIDE|CODE TABLE|0|0|2|CODE TABLE|0|1
+040026|scoreQuantizationFactor|long|SCORE QUANTIZATION FACTOR|Numeric|2|0|16|Numeric|2|5
diff --git a/definitions/bufr/tables/0/wmo/24/sequence.def b/definitions/bufr/tables/0/wmo/24/sequence.def
new file mode 100644
index 0000000..0bcd485
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/24/sequence.def
@@ -0,0 +1,902 @@
+"300002" = [  000002, 000003 ]
+"300003" = [  000010, 000011, 000012 ]
+"300004" = [  300003, 000013, 000014, 000015, 000016, 000017, 000018, 000019, 000020 ]
+"300010" = [  300003, 101000, 031001, 000030 ]
+"300015" = [  000030, 102000, 031002, 000024, 000025 ]
+"300016" = [  000030, 102000, 031001, 000026, 000027 ]
+"301001" = [  001001, 001002 ]
+"301002" = [  001003, 001004, 001005 ]
+"301003" = [  001011, 001012, 001013 ]
+"301004" = [  001001, 001002, 001015, 002001 ]
+"301005" = [  001035, 001034 ]
+"301011" = [  004001, 004002, 004003 ]
+"301012" = [  004004, 004005 ]
+"301013" = [  004004, 004005, 004006 ]
+"301014" = [  102002, 301011, 301012 ]
+"301021" = [  005001, 006001 ]
+"301022" = [  005001, 006001, 007001 ]
+"301023" = [  005002, 006002 ]
+"301024" = [  005002, 006002, 007001 ]
+"301025" = [  301023, 004003, 301012 ]
+"301026" = [  301021, 004003, 004003, 004004, 004004, 004005, 004005 ]
+"301027" = [  008007, 101000, 031001, 301028, 008007 ]
+"301028" = [  008040, 033042, 007010, 101000, 031002, 301023, 019007, 008040 ]
+"301029" = [  001018, 002001, 301011 ]
+"301030" = [  001018, 002001, 301011, 301024 ]
+"301031" = [  301001, 002001, 301011, 301012, 301022 ]
+"301032" = [  301001, 002001, 301011, 301012, 301024 ]
+"301033" = [  001005, 002001, 301011, 301012, 301021 ]
+"301034" = [  001005, 002001, 301011, 301012, 301023 ]
+"301035" = [  001005, 001012, 001013, 002001, 301011, 301012, 301023 ]
+"301036" = [  301003, 002001, 301011, 301012, 301023 ]
+"301037" = [  301001, 002011, 002012, 301011, 301012, 301022 ]
+"301038" = [  301001, 002011, 002012, 301011, 301012, 301024 ]
+"301039" = [  301003, 002011, 002012, 301011, 301012, 301023 ]
+"301040" = [  301003, 002011, 002012, 301011, 301012, 301024 ]
+"301041" = [  001007, 002021, 002022, 301011, 301012 ]
+"301042" = [  301041, 301021 ]
+"301043" = [  001007, 002023, 301011, 301013, 301021 ]
+"301044" = [  001007, 002024, 301011, 301013, 301021 ]
+"301045" = [  301011, 301012, 201138, 202131, 004006, 201000, 202000, 304030, 304031 ]
+"301046" = [  001007, 001012, 002048, 021119, 025060, 202124, 002026, 002027, 202000, 005040
+               ]
+"301047" = [  001007, 025060, 001033, 001034, 001012, 301045, 002021, 301011, 301012, 201138,
+               202131, 004006, 201000, 202000, 301023 ]
+"301048" = [  002104, 002121, 002113, 002026, 002027, 002111, 002140, 202127, 001013, 202126,
+               007001, 202000, 025010, 021064 ]
+"301049" = [  002111, 002112, 021062, 021063, 021065 ]
+"301051" = [  001006, 002061, 301011, 301012, 301021, 008004 ]
+"301055" = [  001005, 002001, 301011, 301012, 301021, 001012, 001014 ]
+"301058" = [  301011, 301012, 201152, 202135, 004006, 202000, 201000, 301021, 020111, 020112,
+               020113, 020114, 020115, 020116, 020117, 020118, 020119, 025035, 020121, 020122,
+               020123, 020124, 025175, 020023, 025063, 202136, 201136, 002121, 201000, 202000,
+               025061, 002184, 002189, 025036, 101000, 031002, 301059 ]
+"301059" = [  301021, 007030, 007032 ]
+"301062" = [  101000, 031001, 301001 ]
+"301065" = [  001006, 001008, 002001, 002002, 002005, 002062, 002070, 002065 ]
+"301066" = [  301011, 301013, 301023, 007004, 002064, 008004 ]
+"301070" = [  002143, 002142, 002144 ]
+"301071" = [  001007, 001031, 002020, 002028, 002029 ]
+"301072" = [  301071, 301011, 301013, 301021 ]
+"301074" = [  002143, 002142, 002145, 002146 ]
+"301075" = [  301001, 001015, 301024, 008021, 301011, 301012 ]
+"301076" = [  002011, 002143, 002142 ]
+"301089" = [  001101, 001102 ]
+"301090" = [  301004, 301011, 301012, 301021, 007030, 007031 ]
+"301091" = [  002180, 002181, 002182, 002183, 002184, 002179, 002186, 002187, 002188, 002189
+               ]
+"301092" = [  001011, 001003, 002001, 301011, 301012, 301021, 007030, 007031, 033024 ]
+"301093" = [  301036, 007030, 007031 ]
+"301110" = [  301001, 001011, 002011, 002014, 002003 ]
+"301111" = [  301001, 001011, 002011, 002013, 002014, 002003 ]
+"301112" = [  001006, 002011, 002013, 002014, 002003 ]
+"301113" = [  008021, 301011, 301013 ]
+"301114" = [  301021, 007030, 007031, 007007, 033024 ]
+"301120" = [  301001, 001094, 002011, 301121 ]
+"301121" = [  008041, 301122, 301021, 007031, 007007 ]
+"301122" = [  301011, 301012, 201135, 202130, 004006, 202000, 201000 ]
+"301123" = [  102002, 008041, 001062, 301001, 001094, 002011, 001018, 001095, 025061, 025068,
+               001082, 001083, 001081, 002067, 002066, 002014, 025067, 025065, 025066, 002095,
+               002096, 002097, 002016, 002083, 002080, 002081, 001093, 002084, 002085, 002086,
+               002082, 008041, 301011 ]
+"301125" = [  001033, 001034, 025060, 001007, 002019, 001012 ]
+"301126" = [  001087, 001015, 002149, 301011, 301012, 301021 ]
+"302001" = [  010004, 010051, 010061, 010063 ]
+"302002" = [  010004, 007004, 010003, 010061, 010063 ]
+"302003" = [  011011, 011012, 012004, 012006, 013003, 020001, 020003, 020004, 020005 ]
+"302004" = [  020010, 008002, 020011, 020013, 020012, 020012, 020012 ]
+"302005" = [  008002, 020011, 020012, 020013 ]
+"302006" = [  010004, 010051, 010062, 010063 ]
+"302011" = [  302001, 302003, 302004 ]
+"302012" = [  302002, 302003, 302004 ]
+"302013" = [  302006, 302003, 101000, 031001, 302005 ]
+"302021" = [  022001, 022011, 022021 ]
+"302022" = [  022002, 022012, 022022 ]
+"302023" = [  022003, 022013, 022023 ]
+"302024" = [  302022, 101002, 302023 ]
+"302031" = [  302001, 010062, 007004, 010009 ]
+"302032" = [  007032, 012101, 012103, 013003 ]
+"302033" = [  007032, 020001 ]
+"302034" = [  007032, 013023 ]
+"302035" = [  302032, 302033, 302034, 007032, 302004, 101000, 031001, 302005 ]
+"302036" = [  105000, 031001, 008002, 020011, 020012, 020014, 020017 ]
+"302037" = [  020062, 013013, 012113 ]
+"302038" = [  020003, 004024, 020004, 020005 ]
+"302039" = [  004024, 014031 ]
+"302040" = [  007032, 102002, 004024, 013011 ]
+"302041" = [  007032, 004024, 004024, 012111, 004024, 004024, 012112 ]
+"302042" = [  007032, 002002, 008021, 004025, 011001, 011002, 008021, 103002, 004025, 011043,
+               011041 ]
+"302043" = [  302038, 101002, 302039, 302040, 302041, 302042, 007032 ]
+"302044" = [  004024, 002004, 013033 ]
+"302045" = [  004024, 014002, 014004, 014016, 014028, 014029, 014030 ]
+"302046" = [  004024, 004024, 012049 ]
+"302047" = [  102003, 008002, 020054 ]
+"302048" = [  005021, 007021, 020012, 005021, 007021 ]
+"302049" = [  008002, 020011, 020013, 020012, 020012, 020012, 008002 ]
+"302050" = [  008041, 005021, 007005, 202130, 006021, 202000, 008041, 201131, 202129, 002115,
+               010004, 002115, 013003, 202000, 201000, 002115, 011001, 011002, 002115, 102002,
+               012101, 004024, 002115, 012103, 012102, 101003, 020012, 020011, 020013, 101002,
+               020003 ]
+"302051" = [  010004, 010051, 007004, 010003, 012004, 012051, 012016, 012017, 013004, 102004,
+               008051, 008020 ]
+"302052" = [  007032, 007033, 012101, 002039, 012102, 012103, 013003 ]
+"302053" = [  007032, 007033, 020001 ]
+"302054" = [  302052, 302053, 007033, 302034, 007032, 302004, 101000, 031001, 302005 ]
+"302055" = [  020031, 020032, 020033, 020034, 020035, 020036, 020037, 020038 ]
+"302056" = [  002038, 007063, 022043, 007063 ]
+"302057" = [  302056, 302021, 302024 ]
+"302058" = [  007032, 007033, 004024, 004024, 012111, 004024, 004024, 012112 ]
+"302059" = [  007032, 007033, 002002, 008021, 004025, 011001, 011002, 008021, 103002, 004025,
+               011043, 011041 ]
+"302060" = [  302038, 302040, 302058, 302059 ]
+"302066" = [  020023, 020024, 020027, 020054, 020023, 020027, 020054, 020025, 020026, 020027,
+               020040, 020066, 020027, 020021, 020067, 020027 ]
+"302069" = [  007032, 007033, 033041, 020001 ]
+"302070" = [  007032, 007033, 011001, 011002, 011043, 011041, 011016, 011017 ]
+"302071" = [  007032, 007033, 008021, 004025, 011001, 011002, 008021, 103002, 004025, 011043,
+               011041, 004025, 011016, 011017 ]
+"302072" = [  007032, 007033, 012101, 012103, 013003 ]
+"302073" = [  020010, 105004, 008002, 020011, 020012, 033041, 020013 ]
+"302074" = [  020003, 004025, 020004, 020005 ]
+"302075" = [  008021, 004025, 013055, 013058, 008021 ]
+"302076" = [  020021, 020022, 026020, 020023, 020024, 020025, 020026 ]
+"302077" = [  007032, 007033, 004025, 012111, 012112, 007032, 004025, 012112 ]
+"302078" = [  002176, 020062, 002177, 013013 ]
+"302079" = [  007032, 002175, 002178, 004025, 013011 ]
+"302080" = [  002185, 004025, 013033 ]
+"302081" = [  004025, 014031 ]
+"302082" = [  004025, 014002, 014004, 014016, 014028, 014029, 014030 ]
+"302083" = [  004025, 008023, 010004, 011001, 011002, 012101, 013003, 008023 ]
+"302084" = [  302031, 302072, 103000, 031000, 101005, 307063, 007061, 101000, 031000, 302069,
+               007032, 007033, 105000, 031000, 020031, 020032, 002038, 022043, 302021, 101000,
+               031000, 302078, 012113, 101000, 031000, 302004, 105000, 031001, 008002, 020011,
+               020012, 033041, 020013, 302036, 101000, 031000, 302047, 008002, 101000, 031000,
+               302048 ]
+"302085" = [  105000, 031000, 020003, 103002, 004024, 020004, 020005, 101000, 031000, 302175,
+               102000, 031000, 004025, 302076, 102000, 031000, 004025, 013059, 007032, 007033,
+               008021, 004025, 011001, 011002, 008021, 103003, 004025, 011043, 011041, 004025,
+               011016, 011017, 302077, 007033, 302041, 106000, 031000, 007032, 002175, 002178,
+               102005, 004024, 013011, 007032, 103000, 031000, 002185, 101002, 302044, 102000,
+               031000, 101002, 302039, 102000, 031000, 101002, 302045, 101000, 031000, 302046,
+               101000, 031000, 302083 ]
+"302089" = [  020101, 020102, 020103, 020104, 020105, 020106, 020107, 020108 ]
+"302090" = [  002038, 007063, 022045 ]
+"302091" = [  020001, 004024, 013011 ]
+"302175" = [  008021, 004025, 013155, 013058, 008021 ]
+"303001" = [  007003, 011001, 011002 ]
+"303002" = [  007004, 011001, 011002 ]
+"303003" = [  007004, 010003, 012001, 012003 ]
+"303004" = [  007004, 010003, 012001, 012003, 011001, 011002 ]
+"303011" = [  007003, 008001, 011001, 011002 ]
+"303012" = [  007004, 008001, 011001, 011002 ]
+"303013" = [  007004, 008001, 010003, 012001, 013003, 011001, 011002 ]
+"303014" = [  007004, 008001, 010003, 012001, 012003, 011001, 011002 ]
+"303021" = [  007004, 007004, 204007, 031021 ]
+"303022" = [  303021, 010003, 204000 ]
+"303023" = [  303021, 012001, 204000 ]
+"303024" = [  303021, 013016, 204000 ]
+"303025" = [  002025, 204007, 031021, 012063, 204000 ]
+"303026" = [  007004, 008003, 204007, 031021, 012001, 204000 ]
+"303027" = [  007004, 204007, 031021, 010003, 204000 ]
+"303031" = [  007004, 008003, 007021, 007022, 008012, 012061 ]
+"303032" = [  020011, 020016 ]
+"303033" = [  020010, 020016 ]
+"303040" = [  008041, 004025, 004026, 301021, 301122, 201131, 202129, 025069, 007004, 013003,
+               202000, 201000, 002013, 012101, 010009, 102002, 008040, 035035 ]
+"303041" = [  002152, 002023, 007004, 011001, 011002, 002153, 002154, 012071 ]
+"303050" = [  004086, 008042, 007004, 005015, 006015, 011001, 011002 ]
+"303051" = [  004086, 008042, 007004, 005015, 006015, 011061, 011062 ]
+"303052" = [  004086, 008042, 007009, 005015, 006015, 011001, 011002 ]
+"303053" = [  004086, 008042, 007009, 005015, 006015, 011061, 011062 ]
+"303054" = [  004086, 008042, 007004, 010009, 005015, 006015, 012101, 012103, 011001, 011002
+               ]
+"303055" = [  004086, 008042, 007009, 005015, 006015, 012101, 013009, 012103, 011001, 011002
+               ]
+"304001" = [  008003, 010004, 012001, 011001, 011002 ]
+"304002" = [  008003, 010004, 011001, 011002 ]
+"304003" = [  008003, 012001 ]
+"304004" = [  008003, 010004, 020010, 012001 ]
+"304005" = [  002024, 007004, 007004, 013003 ]
+"304006" = [  014001, 014001, 014003 ]
+"304011" = [  002163, 002164, 008012, 007024, 002057, 008021, 004001, 004002, 004003, 004004,
+               008021, 004024, 110004, 008021, 004004, 004005, 004006, 008021, 004004, 004005,
+               004006, 011001, 011002, 103010, 002163, 007004, 012001 ]
+"304030" = [  027031, 028031, 010031 ]
+"304031" = [  001041, 001042, 001043 ]
+"304032" = [  002153, 002154, 020081, 020082, 020012 ]
+"304033" = [  002152, 002166, 002167, 002153, 002154, 012075, 012076, 012063 ]
+"304034" = [  102004, 027001, 028001, 007022, 005043, 020010, 020016, 033003, 010040 ]
+"304035" = [  002153, 002154, 012063, 008001, 012063, 008001, 012063, 008001, 008003, 012063,
+               008003, 012063, 008003, 012063, 008003 ]
+"304036" = [  020082, 008012, 020082, 008012, 020081, 008003, 020081, 008003, 020081, 008003,
+               020081, 008003 ]
+"304037" = [  002153, 002154, 012063, 008011, 012063, 008011, 012063, 008011, 008003, 012063,
+               008003, 012063, 008003, 012063 ]
+"305001" = [  011001, 011002, 013060, 013071 ]
+"305002" = [  301012, 012001, 013003, 014051, 013060, 013072, 013080, 013081, 013082, 013083,
+               013084 ]
+"305003" = [  301012, 004065, 101000, 031001, 305001 ]
+"305004" = [  301030, 305002, 305003 ]
+"305006" = [  013072, 013082, 013019, 012001, 013073, 013060 ]
+"305007" = [  301029, 301012, 004065, 101000, 031001, 305006 ]
+"305008" = [  305006, 012030 ]
+"305009" = [  301029, 301012, 004065, 101000, 031001, 305008 ]
+"305010" = [  305008, 002091, 002091 ]
+"305011" = [  301029, 301012, 004065, 101000, 031001, 305010 ]
+"305016" = [  014021, 007004, 013003, 011002, 011001, 011041, 011043 ]
+"305017" = [  013080, 013081, 013083, 013085, 013084 ]
+"305018" = [  301029, 301012, 004065, 103000, 031001, 305008, 305016, 305017 ]
+"306001" = [  002032, 102000, 031001, 007062, 022042 ]
+"306002" = [  002031, 022004, 022031 ]
+"306003" = [  002002, 011011, 011012, 012004 ]
+"306004" = [  002032, 002033, 103000, 031001, 007062, 022043, 022062 ]
+"306005" = [  002031, 103000, 031001, 007062, 022004, 022031 ]
+"306006" = [  306003, 306002, 022063 ]
+"306007" = [  001012, 001014, 306008, 004024, 027003, 028003 ]
+"306008" = [  002034, 002035, 002036 ]
+"306011" = [  301021, 001075, 002147, 301011, 301013 ]
+"306012" = [  002007, 008015, 008032, 306029 ]
+"306013" = [  306012, 301011, 301013, 022120, 022121, 004015, 004065, 102000, 031001, 022038,
+               022040 ]
+"306014" = [  306012, 301011, 301013, 022120, 022121, 004015, 004065, 101000, 031001, 022038
+               ]
+"306016" = [  301011, 301013, 010004, 010051, 302032, 007032, 002002, 008021, 004025, 011001,
+               011002, 004025, 011043, 011041, 025026, 012060 ]
+"306019" = [  001075, 301011, 301012, 022042, 022120, 022121, 004015, 004065 ]
+"306020" = [  001075, 301011, 301012, 022042, 022120, 022121, 004075, 004065 ]
+"306021" = [  001075, 301011, 301012, 022122, 022123, 012001, 303002 ]
+"306022" = [  001075, 301011, 301012, 022038, 022039 ]
+"306023" = [  001015, 301023, 301011, 301012, 022038, 022039, 022120, 022121 ]
+"306024" = [  306020, 102006, 022038, 022039 ]
+"306025" = [  306019, 102006, 022038, 022039 ]
+"306027" = [  001005, 001052, 002047, 301011, 301013 ]
+"306028" = [  306027, 301011, 301013, 301021 ]
+"306029" = [  025170, 025171, 025172 ]
+"306030" = [  306027, 306029, 111000, 031001, 033002, 301011, 301013, 025025, 025025, 025026,
+               022185, 004015, 004065, 101004, 022182 ]
+"306031" = [  306027, 306029, 001053, 033002, 301011, 301013, 301011, 301013, 022185, 022182,
+               004016, 004066, 101000, 031001, 022184 ]
+"306033" = [  002033, 007063, 022064 ]
+"306034" = [  002031, 003010, 002040, 022005, 022032 ]
+"306035" = [  112000, 031002, 007062, 008080, 033050, 007065, 008080, 033050, 022043, 008080,
+               033050, 022064, 008080, 033050 ]
+"306036" = [  112000, 031002, 007062, 008080, 033050, 007065, 008080, 033050, 022031, 008080,
+               033050, 022004, 008080, 033050 ]
+"306037" = [  109000, 031002, 007062, 008080, 033050, 007065, 008080, 033050, 022188, 008080,
+               033050 ]
+"306038" = [  010004, 010051, 007033, 012101, 012103, 013003, 007033, 008021, 004025, 011001,
+               011002, 008021, 004025, 011041, 004025, 007033, 002005, 007063, 022049 ]
+"306039" = [  022078, 022070, 022073, 022074, 022071, 022076, 022077 ]
+"306040" = [  022078, 022082, 106000, 031001, 022080, 022069, 022086, 022087, 022088, 022089
+               ]
+"306041" = [  002032, 102000, 031001, 007062, 022043 ]
+"306042" = [  002169, 007033, 008021, 004025, 011001, 011002 ]
+"307001" = [  301031, 302011 ]
+"307002" = [  301032, 302011 ]
+"307003" = [  307001, 101000, 031001, 302005 ]
+"307004" = [  307002, 101000, 031001, 302005 ]
+"307005" = [  307001, 101004, 302005 ]
+"307006" = [  307002, 101004, 302005 ]
+"307007" = [  301031, 302012 ]
+"307008" = [  301032, 302012 ]
+"307009" = [  301031, 302013 ]
+"307011" = [  001063, 002001, 301011, 301012, 301024, 007006, 011001, 011016, 011017, 011002,
+               011041, 007006, 012001, 012003, 010052, 020009 ]
+"307012" = [  103000, 031001, 008023, 005021, 020001 ]
+"307013" = [  106000, 031001, 001064, 008014, 020061, 008014, 020061, 020018 ]
+"307014" = [  101000, 031001, 020019 ]
+"307015" = [  101000, 031001, 302005, 020002 ]
+"307016" = [  101000, 031001, 020020 ]
+"307017" = [  101000, 031001, 011070 ]
+"307018" = [  008016, 102000, 031001, 008017, 301012, 104000, 031001, 007006, 011001, 011002,
+               011041, 020009, 101000, 031001, 020001, 307014 ]
+"307020" = [  307011, 307014, 307016 ]
+"307021" = [  307011, 307012, 307013, 307014, 307015, 307016, 307017, 307018, 307015 ]
+"307022" = [  001015, 301011, 301012, 301022, 008021, 004025, 010004, 012001, 013003, 033038,
+               008022, 106025, 002020, 001050, 005021, 007021, 015031, 015032, 008060, 015033,
+               015034, 008060, 015033, 015034, 015035, 201131, 202129, 013016, 202000, 201000,
+               015011 ]
+"307030" = [  015001, 015002 ]
+"307031" = [  008022, 008023, 015001, 008023, 015001, 008023, 015002 ]
+"307041" = [  301001, 001015, 301024, 301011, 301012, 301070, 307030 ]
+"307042" = [  301001, 001015, 301024, 301011, 301012, 008021, 004025, 301070, 307031 ]
+"307043" = [  301001, 001015, 301024, 301011, 301012, 301074, 307030 ]
+"307044" = [  301001, 001015, 301024, 301011, 301012, 008021, 004025, 301074, 307031 ]
+"307045" = [  001063, 008079, 002001, 301011, 301012, 301023, 007030, 007031, 007032, 011001,
+               011016, 011017, 008054, 011083, 011084, 011002, 008054, 011085, 011086, 011041,
+               008054, 007032, 012023, 012024, 007032, 010052, 020009 ]
+"307046" = [  020060, 102000, 031001, 005021, 020059 ]
+"307047" = [  105000, 031001, 008002, 020011, 020012, 020013, 020092, 020002, 020091 ]
+"307048" = [  008016, 102000, 031001, 008017, 301012, 112000, 031000, 007032, 011001, 008054,
+               011083, 011084, 011002, 008054, 011085, 011086, 011041, 008054, 007032, 020009,
+               101000, 031000, 020060, 307014, 307047 ]
+"307049" = [  102000, 031000, 022043, 022021 ]
+"307050" = [  101000, 031000, 020085, 102000, 031001, 001064, 020085, 105000, 031001, 001064,
+               020086, 020087, 020088, 020089 ]
+"307051" = [  307045, 307046, 307013, 307014, 307047, 307016, 307017, 307049, 307050, 101000,
+               031001, 307048 ]
+"307052" = [  001063, 008039, 301011, 301012, 008079, 008039, 301011, 301012, 008039, 301011,
+               301012, 301023, 007030, 007031 ]
+"307053" = [  007032, 011001, 008054, 011083, 011084, 011002, 008054, 011085, 011086, 011041,
+               008054, 007032, 020009, 020060, 307014, 307047 ]
+"307054" = [  007032, 008039, 004003, 004004, 008023, 012023, 008039, 004003, 004004, 008023,
+               012023, 008023, 007032 ]
+"307055" = [  033045, 008016, 008039, 004003, 301012, 008039, 004003, 301012, 307053 ]
+"307056" = [  307052, 307053, 307054, 101000, 031001, 307055 ]
+"307060" = [  007061, 012030 ]
+"307061" = [  301031, 101005, 307060 ]
+"307062" = [  301032, 101005, 307060 ]
+"307063" = [  007061, 012130 ]
+"307071" = [  301090, 004074, 004023, 008023, 010004, 010051, 007004, 010009, 007032, 012101,
+               002051, 004051, 012118, 004052, 012119, 013004, 008023, 012151, 007032, 102005,
+               008050, 008020, 014032, 014033, 008050, 008020, 102018, 008052, 008022, 007032,
+               008053, 004003, 012152, 008053, 004003, 012153, 008053, 004003, 008023, 012101,
+               008053, 004003, 008023, 012101, 008023, 007032, 002002, 008053, 004003, 011046,
+               008053, 004003, 004004, 004023, 007032, 013060, 013051, 004053, 008050, 008020,
+               102006, 008052, 008022, 008053, 004003, 013052, 007032 ]
+"307072" = [  004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010004, 010051,
+               007004, 010009, 007032, 012101, 002051, 004051, 012118, 004052, 012119, 013004,
+               012151, 007032, 014032, 008023, 004001, 004001, 004002, 004003, 004004, 004022,
+               007032, 008023, 013060, 004053, 008023, 102008, 008050, 008020 ]
+"307073" = [  307071, 307072 ]
+"307074" = [  301001, 004001, 004002, 301021, 007030, 007032, 112000, 031001, 004003, 004004,
+               004024, 102003, 008023, 012101, 008023, 004004, 004024, 013060, 013012, 013013
+               ]
+"307076" = [  301090, 004074, 004023, 008023, 010004, 010051, 007004, 010009, 007032, 012101,
+               002051, 004051, 012118, 004052, 012119, 013004, 008023, 012151, 007032, 102005,
+               008050, 008020, 014032, 014033, 008050, 008020, 102018, 008052, 008022, 007032,
+               008053, 004003, 012152, 008053, 004003, 012153, 008053, 004003, 008023, 012101,
+               008053, 004003, 008023, 012101, 008023, 007032, 002002, 008053, 004003, 011046,
+               008053, 004003, 004004, 004074, 004023, 007032, 013060, 013051, 004053, 008050,
+               008020, 102006, 008052, 008022, 008053, 004003, 013052, 007032 ]
+"307077" = [  004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010004, 010051,
+               007004, 010009, 007032, 012101, 002051, 004051, 012118, 004052, 012119, 013004,
+               012151, 007032, 014032, 008023, 004001, 004001, 004002, 004003, 004004, 004074,
+               004022, 007032, 008023, 013060, 004053, 008023, 102008, 008050, 008020 ]
+"307078" = [  307076, 307077 ]
+"307079" = [  301090, 302031, 302035, 302036, 101000, 031000, 302047, 008002, 101000, 031000,
+               302048, 302037, 102000, 031000, 022061, 020058, 101000, 031000, 302056, 101000,
+               031000, 302055, 302043, 302044, 101000, 031001, 302045, 101000, 031000, 302046
+               ]
+"307080" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 302043, 302044,
+               101002, 302045, 302046 ]
+"307081" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012122, 013056,
+               013057, 020101, 020102, 020103, 020104, 020105, 020106, 020107, 020108, 302043,
+               302044, 101002, 302045, 302046 ]
+"307082" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012121, 012122,
+               302043, 302044, 101002, 302045, 302046 ]
+"307083" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012122, 302043,
+               302044, 101002, 302045, 302046 ]
+"307084" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 020055, 101000,
+               031001, 205001, 302043, 302044, 101002, 302045, 302046 ]
+"307086" = [  301090, 302031, 302035, 302036, 008002, 302037, 302066, 302043, 302044, 101002,
+               302045 ]
+"307087" = [  301001, 002001, 301011, 301012, 301023, 007030, 007031, 302001, 010062, 007004,
+               010009, 007032, 012101, 012103, 013003, 007032, 020001, 302004, 101000, 031001,
+               302005 ]
+"307088" = [  020003, 004024, 020004, 020005, 004024, 002004, 013033, 102002, 004024, 014031,
+               102002, 004024, 013011, 007032, 004024, 012111, 004024, 012112, 007032, 002002,
+               008021, 004025, 011001, 011002, 008021 ]
+"307089" = [  307087, 307088 ]
+"307090" = [  301092, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 302043, 302044,
+               101002, 302045, 302046 ]
+"307091" = [  301089, 301090, 008010, 301091, 302001, 007004, 010009, 302072, 103000, 031000,
+               101005, 307063, 007061, 101000, 031000, 302069, 007032, 007033, 105000, 031000,
+               020031, 020032, 002038, 022043, 302021, 101000, 031000, 302078, 101000, 031000,
+               302073, 101000, 031000, 302074, 101000, 031000, 302175, 102000, 031000, 004025,
+               302076, 302071, 302077, 007033, 101000, 031000, 302079, 007032, 101000, 031000,
+               302080, 101000, 031000, 302081, 101000, 031000, 302082, 102000, 031000, 004025,
+               013059, 101000, 031000, 302083, 033005, 033006 ]
+"307096" = [  301090, 301089, 008010, 301091, 302084, 302085, 033005, 033006 ]
+"307101" = [  301089, 001019, 002001, 301011, 301012, 301021, 007030, 007032, 012101, 007032,
+               002177, 020062, 013013 ]
+"307182" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012120, 012122,
+               302043, 302044, 101002, 302045, 302046 ]
+"308001" = [  301033, 302011, 022042 ]
+"308002" = [  301034, 302011, 022042 ]
+"308003" = [  301035, 302011, 022042 ]
+"308004" = [  301036, 302011, 022042 ]
+"308005" = [  308004, 302024 ]
+"308006" = [  010004, 010061, 010063, 011001, 011002, 012004, 013003, 022042 ]
+"308007" = [  301055, 302011, 007062, 022042 ]
+"308009" = [  301093, 302001, 302054, 008002, 302055, 302057, 302060 ]
+"308010" = [  001011, 113000, 031001, 301011, 301012, 301021, 004080, 022049, 004080, 022059,
+               004080, 022005, 002042, 022032, 002042, 004080 ]
+"308011" = [  001011, 002001, 301011, 301012, 301023, 007030, 007031, 004074, 004023, 008023,
+               010051, 007032, 007033, 012101, 013004, 007032, 007033, 302056, 008023, 004003,
+               004004, 004023, 007032, 013060, 013051, 004053, 007032 ]
+"308012" = [  004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010051, 007032,
+               007033, 012101, 013004, 007032, 007033, 302056, 008023, 004001, 004001, 004002,
+               004003, 004004, 004022, 007032, 008023, 013060, 004053, 008023 ]
+"308013" = [  308011, 308012 ]
+"308021" = [  001011, 002001, 301011, 301012, 301023, 007030, 007031, 004074, 004023, 008023,
+               010051, 007032, 007033, 012101, 013004, 007032, 007033, 302056, 008023, 004003,
+               004004, 004074, 004023, 007032, 013060, 013051, 004053, 007032 ]
+"308022" = [  004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010051, 007032,
+               007033, 012101, 013004, 007032, 007033, 302056, 008023, 004001, 004001, 004002,
+               004003, 004004, 004074, 004022, 007032, 008023, 013060, 004053, 008023 ]
+"308023" = [  308021, 308022 ]
+"309001" = [  301037, 101000, 031001, 303011 ]
+"309002" = [  301038, 101000, 031001, 303011 ]
+"309003" = [  301037, 101000, 031001, 303012 ]
+"309004" = [  301038, 101000, 031001, 303012 ]
+"309005" = [  301037, 302004, 101000, 031001, 303013 ]
+"309006" = [  301038, 302004, 101000, 031001, 303013 ]
+"309007" = [  301037, 302004, 101000, 031001, 303014 ]
+"309008" = [  301038, 302004, 101000, 031001, 303014 ]
+"309011" = [  301039, 101000, 031001, 303011 ]
+"309012" = [  301039, 101000, 031001, 303012 ]
+"309013" = [  301039, 302004, 101000, 031001, 303013 ]
+"309014" = [  301039, 302004, 101000, 031001, 303014 ]
+"309015" = [  301040, 101000, 031001, 303011 ]
+"309016" = [  301040, 101000, 031001, 303012 ]
+"309017" = [  301040, 302004, 101000, 031001, 303013 ]
+"309018" = [  301040, 302004, 101000, 031001, 303014 ]
+"309019" = [  301031, 002003, 101000, 031001, 303011 ]
+"309020" = [  301031, 002003, 104000, 031001, 007003, 011003, 011004, 011005 ]
+"309030" = [  015004, 015005, 104000, 031001, 004015, 008006, 007004, 015003 ]
+"309031" = [  015004, 015005, 104000, 031001, 004025, 008006, 007004, 015003 ]
+"309040" = [  301075, 301076, 309030 ]
+"309041" = [  307041, 301075, 301076, 309030 ]
+"309042" = [  307042, 301075, 301076, 309030 ]
+"309043" = [  307043, 301075, 301076, 309030 ]
+"309044" = [  307044, 301075, 301076, 309030 ]
+"309045" = [  301075, 301076, 309031 ]
+"309046" = [  307041, 301075, 301076, 309031 ]
+"309047" = [  307042, 301075, 301076, 309031 ]
+"309048" = [  307043, 301075, 301076, 309031 ]
+"309049" = [  307044, 301075, 301076, 309031 ]
+"309050" = [  301110, 301113, 301114, 101000, 031002, 303050, 101000, 031001, 303051 ]
+"309051" = [  301110, 301113, 301114, 101000, 031002, 303052, 101000, 031001, 303053 ]
+"309052" = [  301111, 301113, 301114, 302049, 022043, 101000, 031002, 303054, 101000, 031001,
+               303051 ]
+"309053" = [  301112, 301113, 301114, 101000, 031002, 303054, 101000, 031001, 303051 ]
+"309054" = [  301001, 001011, 301011, 301012, 301021, 007030, 007031, 007007, 004023, 004059,
+               115000, 031001, 008001, 008023, 007004, 010009, 012101, 012103, 008023, 011001,
+               011002, 008023, 011019, 008050, 008020, 008050, 008020 ]
+"309055" = [  301111, 025061, 001081, 001082, 002067, 002095, 002096, 002097, 002081, 002082,
+               002084, 002191, 301113, 301114, 010004, 302032, 007032, 002002, 011001, 011002,
+               007032, 020003, 302049, 022043, 101000, 031002, 303055 ]
+"309060" = [  301123, 301121, 302050, 303040 ]
+"309061" = [  301120, 008041, 301122, 201131, 202129, 025069, 007004, 202000, 201000, 033007,
+               033035, 033015, 013009, 033007, 033035, 033015, 002013, 012101, 033007, 033035,
+               033015 ]
+"309062" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015, 033007 ]
+"309063" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015, 033007 ]
+"309064" = [  301120, 008041, 301122, 201131, 202129, 104002, 025069, 007004, 033035, 033015,
+               013003, 033035, 033015, 202000, 201000, 104002, 002013, 012101, 033035, 033015,
+               012103, 033035, 033015, 010009, 033035, 033015 ]
+"309065" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015 ]
+"309066" = [  301120, 008041, 301122, 008040, 201131, 202129, 025069, 007004, 013003, 202000,
+               201000, 002013, 012101, 012103, 010009, 010007, 011002, 011001 ]
+"309070" = [  001035, 001032, 001015, 001063, 301001, 301011, 301012, 301021, 207001, 010001,
+               207000, 008086, 007030, 025031, 008021, 004014, 010004, 010051, 010009, 020010,
+               013095, 128000, 031002, 113000, 031000, 008086, 007004, 011001, 011002, 012101,
+               012102, 012103, 010009, 103000, 031000, 011021, 011022, 011005, 104000, 031000,
+               008086, 007006, 011001, 011002, 105000, 031000, 008086, 007006, 012101, 012102,
+               012103 ]
+"309071" = [  301001, 002014, 002003, 301113, 301114, 301023, 007030, 007007, 103000, 031001,
+               007009, 011001, 011002 ]
+"310001" = [  301042, 303031, 303032, 101026, 303025 ]
+"310002" = [  301042, 303031, 303032, 101009, 303023 ]
+"310003" = [  301042, 303031, 303032, 101006, 303023 ]
+"310004" = [  301042, 303031, 303032, 101003, 303024 ]
+"310005" = [  301042, 303031, 303033, 101000, 031001, 303025 ]
+"310006" = [  301042, 303031, 303033, 101000, 031001, 303023 ]
+"310007" = [  301042, 303031, 303033, 101000, 031001, 303024 ]
+"310008" = [  310011, 101019, 310012, 002150, 025079, 025080, 033032, 014045 ]
+"310009" = [  310011, 101015, 310012 ]
+"310010" = [  310011, 101005, 310012 ]
+"310011" = [  008070, 001033, 001034, 008070, 001033, 001034, 001007, 002048, 005040, 025075,
+               201133, 005041, 201000, 005043, 025070, 033030, 033031, 004001, 004002, 004003,
+               004004, 004005, 202131, 201138, 004006, 201000, 202000, 005001, 006001, 202126,
+               007001, 202000, 007024, 005021, 007025, 005022, 033033, 002151, 012064, 002151,
+               012064, 002151, 012064, 002151, 012064 ]
+"310012" = [  002150, 025076, 025077, 025078, 033032, 201132, 202129, 012063, 202000, 201000
+               ]
+"310013" = [  001007, 005040, 004001, 004002, 004003, 004004, 004005, 004006, 005001, 006001,
+               007025, 005043, 025085, 201131, 202129, 002150, 008023, 008072, 014027, 008072,
+               014027, 002150, 008023, 008072, 014027, 008072, 014027, 002150, 008023, 008072,
+               014027, 008072, 014027, 202000, 201000, 201132, 202129, 002150, 008023, 008072,
+               012063, 008072, 012063, 002150, 008023, 008072, 012063, 008072, 012063, 008023,
+               008072, 012063, 008072, 012063, 002150, 008023, 008072, 012063, 008072, 012063,
+               202000, 201000 ]
+"310014" = [  301072, 303041, 304011 ]
+"310015" = [  301072, 007024, 010002, 303041, 101003, 304032, 002152, 002024, 007004, 007004,
+               013003, 101003, 304033 ]
+"310016" = [  301072, 007024, 010002, 303041, 101012, 304032, 002152, 002024, 007004, 007004,
+               013003, 101012, 304033 ]
+"310018" = [  001007, 005040, 004001, 004043, 004004, 004005, 004006, 207002, 026030, 207000,
+               005002, 006002, 033072, 007025, 005022, 207002, 015001, 207000, 008003, 207001,
+               010004, 207000, 008003, 008003, 033042, 207001, 007004, 207000, 207002, 015001,
+               207000, 008003, 207002, 020081, 207000, 020065, 008029, 207004, 015030, 207000,
+               008075 ]
+"310019" = [  001007, 002019, 301011, 301013, 301023, 007025, 008021, 007025, 008021, 007025,
+               008021, 008029, 005040, 008075, 008003, 010004, 008003, 207002, 015001, 207000,
+               033070, 015030, 207002, 020081, 207000, 008003, 033042, 007004, 207002, 015001,
+               207000, 008003, 113021, 007004, 007004, 207002, 008021, 015005, 008021, 015005,
+               033007, 207000, 008026, 101020, 025143, 008026, 008043, 109015, 007004, 008090,
+               207006, 015008, 207000, 008090, 207002, 033007, 207000, 008043, 033071, 108008,
+               202124, 201107, 002071, 201000, 202000, 207002, 020081, 207000 ]
+"310020" = [  310022, 301011, 301013, 301021, 304034, 310021 ]
+"310021" = [  108000, 031001, 201131, 202129, 007004, 007004, 202000, 201000, 015020, 010002
+               ]
+"310022" = [  001007, 002019, 001033, 002172 ]
+"310023" = [  301072, 030021, 030022, 008012, 007024, 007025, 010002, 101012, 304032, 105002,
+               002152, 002024, 007004, 007004, 013003, 101012, 304033 ]
+"310024" = [  301072, 030021, 030022, 008012, 007024, 007025, 010002, 101003, 304032, 105002,
+               002152, 002024, 007004, 007004, 013003, 101003, 304033 ]
+"310025" = [  001007, 008021, 004001, 004002, 004003, 004004, 004005, 201138, 202131, 004006,
+               202000, 201000, 201132, 005041, 201000, 201129, 005043, 201000, 005002, 006002,
+               013040, 020029, 104024, 005042, 012163, 021083, 021084, 115003, 004001, 004002,
+               004003, 201142, 202131, 004026, 202000, 201000, 005001, 006001, 201138, 202129,
+               007001, 202000, 201000, 008021, 004001, 004002, 004003, 004004, 004005, 005040,
+               101003, 012070, 025054, 101004, 025055, 008007, 104028, 005002, 006002, 002111,
+               005021 ]
+"310026" = [  310022, 025060, 008021, 301011, 301012, 201138, 202131, 004006, 202000, 201000,
+               033039, 033007, 304030, 304031, 002020, 001050, 202127, 304030, 202000, 304031,
+               201133, 202131, 004016, 202000, 201000, 301021, 304030, 010035, 005021, 010036,
+               113000, 031002, 301021, 005021, 108000, 031001, 002121, 007040, 015037, 008023,
+               201125, 015037, 201000, 008023, 033007, 108000, 031002, 007007, 015036, 008023,
+               201123, 015036, 201000, 008023, 033007, 116000, 031002, 007009, 010004, 012001,
+               013001, 008023, 201120, 010004, 201000, 201122, 012001, 201000, 201123, 013001,
+               201000, 008023, 033007, 008003, 007009, 010004, 008023, 201120, 010004, 201000,
+               008023, 033007 ]
+"310027" = [  301071, 301011, 301013, 301021, 030021, 030022, 010002, 304036, 002152, 002167,
+               101011, 304035 ]
+"310028" = [  301071, 301011, 301013, 301021, 030021, 030022, 010002, 304036, 002152, 002167,
+               101011, 304037 ]
+"310029" = [  110000, 031001, 201138, 202130, 007004, 007004, 202000, 201000, 015020, 010002,
+               012101, 013098 ]
+"310030" = [  310022, 301011, 301013, 301021, 304034, 310029 ]
+"310050" = [  310051, 310052, 101000, 031002, 310053, 101004, 310054, 020010, 310052, 101015,
+               310053, 310052, 101005, 310053 ]
+"310051" = [  001007, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 007025, 005022, 102009, 002151, 012064 ]
+"310052" = [  002019, 301011, 301012, 202131, 201138, 004006, 201000, 202000, 301021, 007024,
+               005021, 005043 ]
+"310053" = [  201134, 005042, 201000, 025076, 033032, 012163 ]
+"310054" = [  201134, 005042, 201000, 025076, 033032, 201131, 202129, 102002, 008023, 014027,
+               008023, 202000, 201000 ]
+"310055" = [  310051, 310052, 102020, 025076, 025052, 101000, 031002, 025050 ]
+"310060" = [  001007, 001033, 002019, 002020, 301011, 301012, 207003, 004006, 207000, 304030,
+               301021, 007024, 005021, 007025, 005022, 008075, 201133, 005041, 201000, 005045,
+               005043, 005040, 010001, 201129, 007002, 201000, 202127, 201125, 021166, 201000,
+               202000, 008012, 020010, 020014, 002165, 033075, 107003, 008076, 006029, 006029,
+               025140, 025141, 033076, 033077, 008076, 033078, 033003, 104000, 031002, 201133,
+               005042, 201000, 014044 ]
+"310061" = [  001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000,
+               005040, 005041, 005043, 033079, 033080, 033078, 301021, 201129, 007002, 201000,
+               007024, 005021, 007025, 005022, 025075, 111000, 031002, 005042, 202131, 002153,
+               002154, 202000, 002104, 012066, 012163, 012158, 012159, 033081 ]
+"310062" = [  001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000,
+               005040, 201133, 005041, 005043, 201000, 008076, 033082, 301021, 201129, 007002,
+               201000, 007024, 005021, 007025, 005022, 008072, 008029, 105000, 031002, 005042,
+               002155, 033083, 014043, 015042 ]
+"310063" = [  001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000,
+               005040, 201133, 005041, 005043, 201000, 033082, 301021, 201129, 007002, 201000,
+               007024, 005021, 007025, 005022, 008075, 008013, 008072, 033084, 007062, 033086,
+               022043, 007062, 007062, 033086, 022043 ]
+"310064" = [  001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000,
+               005040, 201133, 005041, 005043, 201000, 033082, 301021, 201129, 007002, 201000,
+               007024, 005021, 007025, 005022, 008075, 008029, 008046, 033085, 033086, 015049,
+               033086, 102011, 002155, 015062 ]
+"310065" = [  001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000,
+               005040, 033082, 301021, 201129, 007002, 201000, 007024, 005021, 007025, 005022,
+               008075, 033071, 033070, 020021, 015045, 015046, 008065, 033087, 008003, 010004,
+               008003, 207002, 015001, 207000, 105012, 010040, 010004, 207003, 015005, 207000,
+               008046, 107019, 010040, 010004, 008090, 207006, 015008, 207000, 008090 ]
+"310066" = [  001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000,
+               005040, 033082, 301021, 201129, 007002, 201000, 007024, 005021, 007025, 005022,
+               008075, 020081, 207004, 015030, 207000, 020065, 015041, 033086, 033087, 033088,
+               008003, 207001, 007004, 207000, 008003, 207002, 015001, 207000, 008003, 033042,
+               207001, 007004, 207000, 207002, 015001, 207000, 008003, 001032, 207002, 015001,
+               207000 ]
+"311001" = [  301051, 007002, 012001, 011001, 011002, 011031, 011032, 011033, 020041 ]
+"311002" = [  301065, 301066, 311003, 311004 ]
+"311003" = [  010070, 011001, 011002, 012001, 013002 ]
+"311004" = [  101000, 031000, 011034, 101000, 031000, 011035, 101000, 031000, 011075, 101000,
+               031000, 011076, 101000, 031000, 033025, 101000, 031000, 033026 ]
+"311005" = [  001008, 001023, 301021, 301011, 301013, 007010, 008009, 011001, 011002, 011031,
+               011036, 012101, 033025 ]
+"311006" = [  007010, 011001, 011002, 002064, 012101, 012103 ]
+"311007" = [  007010, 301021, 011001, 011002, 002064, 012101, 012103 ]
+"311008" = [  001008, 301011, 301013, 301021, 008004, 101000, 031001, 311006 ]
+"311009" = [  001008, 301011, 301013, 301021, 008004, 101000, 031001, 311007 ]
+"311010" = [  001008, 001023, 001006, 001110, 001111, 001112, 204002, 031021, 301011, 301013,
+               301021, 007010, 010053, 008009, 011001, 011002, 002064, 011100, 011101, 011102,
+               011103, 011104, 012101, 002170, 201144, 202133, 013002, 202000, 201000, 201135,
+               202130, 013003, 202000, 201000, 101000, 031000, 012103, 033026, 101000, 031000,
+               020042, 103000, 031000, 020043, 020044, 020045, 101000, 031000, 033025, 103000,
+               031001, 011075, 011076, 011039, 102000, 031000, 011037, 011077, 103000, 031000,
+               011034, 011035, 011036, 204000, 119000, 031001, 301011, 301013, 301021, 007007,
+               011105, 204007, 031021, 011076, 011075, 204000, 011106, 011107, 011108, 011109,
+               012101, 011001, 201130, 011084, 201000 ]
+"311011" = [  001023, 008004, 301011, 301013, 005002, 006002, 007004, 011001, 011002, 012101,
+               106000, 031001, 008046, 201139, 202126, 015026, 202000, 201000, 106000, 031001,
+               008046, 201138, 202130, 015026, 202000, 201000, 015052, 015053, 015054, 015055,
+               007004, 007004, 013099, 013100, 013101 ]
+"312001" = [  301043, 304001 ]
+"312002" = [  301043, 304002 ]
+"312003" = [  301042, 304003 ]
+"312004" = [  301042, 304004 ]
+"312005" = [  301042, 020014 ]
+"312006" = [  301044, 304005 ]
+"312007" = [  301042, 304006 ]
+"312010" = [  001007, 005040, 002021, 005041, 004001, 004043 ]
+"312011" = [  202131, 201149, 004006, 201000, 202126, 010002, 202000, 005043, 005053 ]
+"312012" = [  202129, 201132, 101019, 012063, 201000, 202000 ]
+"312013" = [  005042, 202129, 201135, 012063, 201000, 202000 ]
+"312014" = [  312010, 312011, 105056, 301023, 005042, 005052, 312012, 312013 ]
+"312015" = [  109011, 301023, 005042, 005052, 202129, 201132, 101004, 012063, 202000, 201000
+               ]
+"312016" = [  312010, 312011, 312015 ]
+"312017" = [  109008, 301023, 005042, 005052, 202129, 201132, 101003, 012063, 202000, 201000
+               ]
+"312018" = [  312010, 312011, 312017 ]
+"312019" = [  301047, 301048, 015015, 029002, 021076, 106012, 201129, 006030, 201000, 102012,
+               005030, 021075, 021066 ]
+"312020" = [  301047, 301048, 015015, 029002, 021076, 104012, 006030, 102012, 005030, 021075,
+               021066 ]
+"312021" = [  301047, 101003, 301049, 011012, 011011, 021067 ]
+"312022" = [  301047, 008022, 011012, 011050, 022070, 022026, 312041, 010050, 021068, 021071,
+               021072, 021073, 312042, 021062, 015011 ]
+"312023" = [  301047, 103003, 008022, 012061, 022050, 021069, 021085 ]
+"312024" = [  312020, 008060, 008022, 008060, 008022, 025014, 022101, 022097, 022098, 022099,
+               022100 ]
+"312025" = [  312019, 008060, 008022, 008060, 008022, 025014, 022101, 022097, 022098, 022099,
+               022100 ]
+"312026" = [  301046, 301011, 301013, 301023, 312031, 101004, 312030, 021110, 301023, 321027,
+               021111, 301023, 321027, 021112, 301023, 321027, 021113, 301023, 321027 ]
+"312027" = [  301047, 105009, 301023, 007021, 012061, 007021, 012061, 021085, 021070 ]
+"312028" = [  301046, 301011, 301013, 301023, 008025, 201136, 004006, 201000, 312031, 312032,
+               101004, 312030, 101002, 312033, 021110, 301023, 321028, 021111, 301023, 321028,
+               021112, 301023, 321028, 021113, 301023, 321028 ]
+"312030" = [  201130, 202129, 011012, 202000, 201000, 011052, 201135, 202130, 011011, 202000,
+               201000, 011053, 021104 ]
+"312031" = [  005034, 006034, 021109, 011081, 011082, 021101, 021102, 021103 ]
+"312032" = [  021120, 021121, 013055, 021122 ]
+"312033" = [  002104, 008022, 012063, 012065 ]
+"312041" = [  201141, 202130, 007001, 201000, 202000 ]
+"312042" = [  021077, 021078, 021079, 021080, 021081, 021082 ]
+"312045" = [  001007, 002019, 001096, 025061, 005040, 301011, 301013, 301021, 007002, 012180,
+               012181, 012182, 012183, 012184, 012185, 002174, 021086, 012186, 021087, 012187,
+               033043 ]
+"312050" = [  001007, 002019, 001096, 025061, 005040, 301011, 301013, 301021, 007025, 005022,
+               010080, 027080, 008003, 007004, 013093, 008003, 201131, 202129, 007004, 007004,
+               202000, 201000, 013095 ]
+"312051" = [  001007, 002019, 001096, 025061, 005040, 008075, 301011, 301013, 301021, 001012,
+               201131, 001013, 201000, 010032, 010033, 010034, 007002, 008012, 025110, 025111,
+               025102, 002104, 025103, 025104, 025105, 025106, 025107, 025108, 002111, 002121,
+               002026, 002027, 021130, 021131, 021132, 021133, 021064, 025014, 021134, 107018,
+               005030, 105024, 201130, 006030, 201000, 021135, 021136, 033044 ]
+"312052" = [  001007, 002019, 001096, 025061, 005040, 025120, 025121, 025124, 025125, 025122,
+               025123, 301011, 301013, 301021, 007002, 002119, 033047, 010081, 010082, 010083,
+               010084, 002116, 002117, 002118, 002156, 002157, 014055, 022150, 022151, 022152,
+               022153, 022154, 022155, 022156, 022157, 022158, 022159, 021137, 021138, 021139,
+               021140, 021141, 021142, 010085, 010086, 010087, 010088, 010089, 010090, 010091,
+               010092, 010093, 011002, 025126, 025127, 025128, 025129, 025130, 025131, 025132,
+               025133, 025134, 025135, 025136, 025137, 013096, 013097, 011095, 011096, 012188,
+               012189, 002158, 002159, 033052, 033053, 021143, 021144 ]
+"312053" = [  001007, 002019, 001096, 025061, 005040, 008075, 301011, 301013, 301021, 001012,
+               201131, 001013, 201000, 010032, 010033, 010034, 007002, 008012, 025110, 025111,
+               025102, 002104, 025103, 025104, 025105, 025106, 025107, 025108, 011001, 011002,
+               022160, 025138, 201130, 202129, 022021, 202000, 201000, 033048, 033049, 002026,
+               002027, 021130, 021131, 021132, 021133, 025014, 106036, 005030, 104024, 201130,
+               006030, 201000, 022161, 033044 ]
+"312055" = [  005033, 005040, 006034, 010095, 021157 ]
+"312056" = [  025060, 001032, 011082, 011081, 020095, 020096, 021155, 201133, 021101, 021102,
+               201000 ]
+"312057" = [  201130, 202129, 011012, 202000, 201000, 201131, 202129, 011011, 202000, 201000,
+               021156, 021104 ]
+"312058" = [  301125, 301011, 301013, 301021, 312055, 021150, 101003, 321030 ]
+"312059" = [  312056, 101000, 031001, 312057 ]
+"312060" = [  025060, 025062, 040001, 040002, 021062, 021151, 021152, 021153, 021154, 021062,
+               021088, 040003, 040004, 040005, 040006, 040007, 020065, 040008, 040009, 040010
+               ]
+"312061" = [  312058, 312060, 312059 ]
+"312070" = [  001007, 002019, 001144, 001124, 030010, 301011, 301013, 301021, 007012, 015012,
+               012165, 012166, 012167, 012168, 027010, 028010, 002099, 013048, 025081, 025082,
+               025083, 025084, 012080, 012081, 012082, 025174, 033028 ]
+"312071" = [  001007, 002019, 002139, 001096, 001040, 025061, 005040, 005044, 008075, 008077,
+               004001, 004002, 004003, 004004, 004005, 004006, 005001, 006001, 010081, 022156,
+               022142, 101020, 022149, 022143, 022144, 021137, 101020, 021181, 021138, 021180,
+               021177, 021178, 021179, 010079, 010085, 010086, 010087, 010089, 010090, 010091,
+               010092, 010093, 011097, 021093, 101020, 021182, 033053, 022151, 022145, 022148,
+               022146, 022147, 025126, 025128, 025127, 021176, 025132, 025133, 025182, 025183,
+               025180, 025184, 025181, 033080 ]
+"313009" = [  021001, 101000, 031001, 021001 ]
+"313010" = [  021036, 101000, 031001, 021036 ]
+"313031" = [  006002, 006012, 101000, 031002, 030001 ]
+"313032" = [  005002, 005012, 101000, 031002, 313031 ]
+"313041" = [  006002, 110000, 031001, 104000, 031001, 006012, 101000, 031012, 030001, 006012,
+               101000, 031001, 030001 ]
+"313042" = [  005002, 005012, 101000, 031002, 313041 ]
+"313043" = [  006002, 005002, 005012, 112000, 031001, 110000, 031001, 104000, 031001, 006012,
+               101000, 031011, 030001, 006012, 101000, 031001, 030001 ]
+"315001" = [  001011, 301011, 301012, 301023, 306001 ]
+"315002" = [  001011, 301011, 301012, 301023, 306004 ]
+"315003" = [  001087, 001085, 001086, 002036, 002148, 002149, 022055, 022056, 022067, 301011,
+               301012, 301021, 008080, 033050, 109000, 031002, 007065, 008080, 033050, 022045,
+               008080, 033050, 022064, 008080, 033050 ]
+"315004" = [  001079, 001011, 001103, 001087, 001019, 001080, 005036, 001036, 001013, 001012,
+               301011, 301012, 301021, 007032, 007033, 002002, 011002, 011001, 007032, 007033,
+               012101, 012103, 007032, 007033, 302021, 002031, 002030, 022005, 022032, 022063,
+               008080, 033050, 022178, 022177, 022067, 008041, 026021, 026022, 026023, 022068,
+               025061, 008041, 008080, 002171, 302090, 002171, 002032, 315005 ]
+"315005" = [  106000, 031002, 007063, 008080, 033050, 022043, 008080, 033050 ]
+"315007" = [  301003, 001019, 001103, 001087, 001036, 001115, 001080, 005036, 301011, 301012,
+               301021, 001079, 001023, 022063, 101000, 031000, 302001, 101000, 031000, 302021,
+               101000, 031000, 302052, 101000, 031000, 302059, 022067, 002171, 302090, 306033,
+               306034, 002171, 022067, 002038, 022067, 022068, 002171, 002033, 002032, 022056,
+               003011, 306035, 107000, 031000, 002032, 003010, 002031, 002040, 022056, 003011,
+               306036, 104000, 031000, 002032, 003012, 003011, 306037 ]
+"315008" = [  301126, 306038, 101000, 031000, 302091, 101000, 031000, 302082, 101000, 031000,
+               306039, 101000, 031000, 306040, 102000, 031000, 002005, 306041, 102000, 031000,
+               002005, 306004, 101000, 031000, 306005 ]
+"315009" = [  001087, 001019, 002149, 008021, 301011, 301012, 301021, 208016, 001051, 208000,
+               002148, 001012, 001014, 033022, 033023, 033027, 025026, 002034, 022060, 007070,
+               002190, 008021, 301011, 301012, 002005, 022043, 002033, 022059, 008029, 013115,
+               103000, 031000, 002005, 306004, 002005, 010004, 010051, 102000, 031000, 007033,
+               012101, 101000, 031000, 306042, 101000, 031000, 306039 ]
+"316001" = [  301011, 004004, 301023, 001021, 002041, 019001, 010051, 019002, 019003, 019004
+               ]
+"316002" = [  008021, 004001, 004002, 004003, 004004, 004005, 001033, 008021, 004001, 004002,
+               004003, 004004, 004005, 007002, 007002 ]
+"316003" = [  110000, 031001, 008011, 008007, 104000, 031001, 005002, 006002, 010002, 011002,
+               008007, 008011 ]
+"316004" = [  111000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               011031, 008007, 008011 ]
+"316005" = [  108000, 031001, 008005, 008007, 005002, 006002, 001026, 019001, 008007, 008005
+               ]
+"316006" = [  112000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               020011, 020012, 008007, 008011 ]
+"316007" = [  110000, 031001, 008011, 008007, 104000, 031001, 005002, 006002, 019005, 019006,
+               008007, 008011 ]
+"316008" = [  111000, 031001, 008001, 008007, 008023, 103000, 031001, 005002, 006002, 010002,
+               008023, 008007, 008001 ]
+"316009" = [  111000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               020041, 008007, 008011 ]
+"316010" = [  107000, 031001, 008011, 008007, 001022, 005002, 006002, 008007, 008011 ]
+"316011" = [  117000, 031001, 008011, 001022, 008007, 102000, 031001, 005002, 006002, 008021,
+               004001, 004002, 004003, 004004, 004005, 020090, 008021, 008007, 008011 ]
+"316020" = [  001033, 001025, 001027, 301011, 301012 ]
+"316021" = [  301023, 002041, 019001, 019007, 019005, 019006, 019008, 008005, 010004, 008005,
+               010004, 019007, 008005, 008021, 004075, 011040, 019007, 105004, 005021, 005021,
+               102002, 019003, 019004 ]
+"316022" = [  001032, 002041, 019001, 019010, 118000, 031001, 008021, 004014, 008005, 301023,
+               019005, 019006, 010004, 011041, 008021, 004075, 011040, 019008, 105004, 005021,
+               005021, 102002, 019003, 019004 ]
+"316026" = [  316020, 316021 ]
+"316027" = [  316020, 316022 ]
+"316030" = [  301014, 001037, 010064, 008019, 001062, 008019, 001065, 008019, 001062, 008019
+               ]
+"316031" = [  008021, 301011, 301012, 301027, 019005, 019006, 020028, 008021 ]
+"316032" = [  008021, 301011, 301012, 301027, 008021 ]
+"316033" = [  008021, 301011, 301012, 101000, 031001, 301027, 008021 ]
+"316034" = [  008079, 316030, 008011, 001022, 008007, 301023, 008007, 020090, 316031, 101000,
+               031000, 316032, 101000, 031001, 316033, 008011, 008079 ]
+"316035" = [  008079, 316030, 008011, 020023, 020021, 020008, 316031, 008011, 008079 ]
+"316036" = [  008079, 316030, 008011, 001027, 316031, 101000, 031000, 316032, 101000, 031001,
+               316033, 008011, 008079 ]
+"316037" = [  008079, 316030, 008011, 011031, 316031, 008011, 008079 ]
+"316038" = [  008079, 316030, 008011, 020041, 020021, 316031, 008011, 008079 ]
+"316039" = [  008079, 316030, 008011, 020024, 316031, 008011, 008079 ]
+"316040" = [  316030, 008079, 301014, 001037, 010064, 008079 ]
+"316050" = [  301001, 301011, 301012, 002160, 008005, 005002, 006002, 008005, 019100, 019005,
+               019006, 019101, 019102, 019103, 019104, 019105 ]
+"316052" = [  301005, 301011, 301012, 001007, 025150, 122000, 031001, 001027, 019150, 019106,
+               008005, 005002, 006002, 008005, 019107, 019005, 019006, 019108, 019109, 019110,
+               019111, 019112, 019113, 019114, 019115, 019116, 019117, 019118, 019119 ]
+"316060" = [  301011, 301012, 005002, 006002, 019005, 019006, 005002, 006002, 005002, 006002,
+               004074, 020048, 011041, 013055 ]
+"316061" = [  301011, 301012, 005002, 006002, 019005, 019006, 102000, 031001, 005002, 006002,
+               102000, 031001, 005002, 006002, 004074, 020048, 011041, 013055 ]
+"316071" = [  301014, 101000, 031002, 316075, 101000, 031002, 316076 ]
+"316072" = [  301014, 101000, 031002, 316077, 101000, 031002, 316078, 101000, 031002, 316079
+               ]
+"316073" = [  301014, 101000, 031002, 316080, 101000, 031002, 316081 ]
+"316074" = [  001039, 008021, 301014, 301027, 008021 ]
+"316075" = [  008079, 008041, 316074, 020006, 033042, 020013, 033042, 020001, 020025, 020026,
+               008041, 008079 ]
+"316076" = [  008079, 008041, 316074, 020006, 020025, 020026, 008041, 008079 ]
+"316077" = [  008079, 008011, 316074, 011031, 008011, 008079 ]
+"316078" = [  008079, 008041, 316074, 033042, 011012, 008041, 008079 ]
+"316079" = [  008079, 008011, 316074, 020023, 020024, 008011, 008079 ]
+"316080" = [  008079, 008011, 316074, 020041, 008011, 008079 ]
+"316081" = [  008079, 008041, 316074, 008041, 008079 ]
+"318001" = [  301025, 024011 ]
+"318003" = [  301026, 024005, 024004, 024021 ]
+"318004" = [  301025, 004023, 013011, 024005, 024004, 024022 ]
+"321001" = [  002101, 002114, 002105, 002106, 002107, 002121 ]
+"321003" = [  021051, 021014, 021017, 021030 ]
+"321004" = [  301031, 002003, 101000, 031001, 321003 ]
+"321005" = [  025004, 002121, 002122, 002123, 002124, 002125, 002126, 002127, 002128, 002129,
+               002130, 002131 ]
+"321006" = [  025001, 025002, 025003, 025005 ]
+"321007" = [  025009, 025010, 025011, 025012, 025013, 025015, 025016, 025017 ]
+"321008" = [  025006, 025007, 025008 ]
+"321009" = [  025018, 025019 ]
+"321010" = [  002101, 007002, 002102, 002103, 002104, 002105, 002106, 002107, 002108, 002109,
+               002110, 002132, 002133 ]
+"321011" = [  030031, 030032, 029002 ]
+"321012" = [  101000, 031001, 002135 ]
+"321021" = [  002003, 002101, 201130, 002106, 201000, 201132, 202130, 002121, 202000, 201000,
+               201133, 202129, 025001, 202000, 201000 ]
+"321022" = [  007007, 204001, 031021, 011001, 204000, 011002, 204001, 031021, 011006, 204000,
+               021030 ]
+"321023" = [  007007, 021091, 021030, 202129, 021014, 201129, 021017, 202000, 201000 ]
+"321024" = [  007007, 204001, 031021, 012007, 011006, 204000, 021030 ]
+"321025" = [  007007, 021091, 021030, 202129, 021014, 201129, 021017, 202000, 201000, 021092,
+               021030, 025092, 201129, 202129, 021017, 202000, 201000 ]
+"321026" = [  007007, 204001, 031021, 012007, 025091, 011071, 011072, 011073, 011074, 204000
+               ]
+"321027" = [  021118, 202129, 201132, 002112, 201000, 201131, 002111, 201000, 202000, 002104,
+               021105, 021106, 021107, 021114, 021115, 021116, 008018, 021117 ]
+"321028" = [  021118, 202129, 201132, 002112, 201000, 201131, 002111, 201000, 202000, 002104,
+               021123, 021106, 021107, 021114, 021115, 021116, 008018, 021117 ]
+"321030" = [  008085, 202129, 201131, 002111, 201000, 202000, 002134, 021062, 021063, 021158,
+               021159, 021160, 021161, 021162, 021163, 021164, 021165, 021166 ]
+"322028" = [  001007, 002019, 004001, 004002, 004003, 004004, 004005, 004006, 005001, 006001,
+               027001, 028001, 027001, 028001, 027001, 028001, 027001, 028001, 010001, 014019,
+               007025, 010080, 005023, 020010, 008003, 007004, 014026, 020014, 013093, 105000,
+               031001, 007004, 007004, 008043, 008044, 015021 ]
+"340001" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 033060, 033061, 033062, 033063, 033064, 033065, 101010, 340002, 101087,
+               340003, 002019, 025051, 101007, 340004 ]
+"340002" = [  025140, 025141, 025142 ]
+"340003" = [  104100, 201136, 005042, 201000, 014046 ]
+"340004" = [  005060, 005061, 025085, 105006, 005042, 025142, 014047, 025142, 014048 ]
+"340005" = [  001007, 002019, 001096, 025061, 005044, 005040, 001030, 004001, 004002, 004003,
+               004004, 004005, 004007, 005001, 006001, 008029, 008074, 008077, 040011, 025097,
+               025095, 025098, 025099, 021144, 025096, 040012, 040013, 021169, 022151, 022162,
+               022163, 025160, 025133, 022156, 022164, 022165, 022166, 021137, 021138, 022167,
+               021139, 021118, 021145, 021146, 021147, 022168, 022169, 022170, 025161, 025162,
+               022171, 022172, 022173, 022174, 021170, 021171, 022175, 021172, 021118, 021173,
+               021174, 021175, 002153, 012063, 002153, 012063, 002153, 012063, 013090, 013091,
+               007002, 011097, 011098, 007002, 011095, 011096, 010096, 010081, 010082, 010083,
+               010101, 025132, 025163, 025126, 025128, 025164, 010085, 010097, 010086, 010087,
+               010092, 010088, 010089, 010098, 010099, 010090, 010100, 010093, 025127, 040014
+               ]
+"340007" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 103003, 025140, 025141, 033060, 033061, 033062, 033063, 033064, 033065,
+               040020, 101010, 340002, 101087, 340003, 002019, 025051, 101007, 340004, 020081,
+               008029, 020083, 008029, 040018, 040019, 040021, 040022 ]
+"340008" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 103003, 025140, 025141, 033060, 033061, 033062, 033063, 033064, 033065,
+               040020, 101010, 340002, 104000, 031002, 201136, 005042, 201000, 014046, 108003,
+               025140, 025141, 040026, 040016, 025062, 101000, 031002, 040017, 002019, 025051,
+               101007, 340004, 020081, 008029, 020083, 008029, 040018, 040019, 040021, 040022
+               ]
+"340009" = [  001007, 001031, 002019, 002020, 301011, 301013, 005040, 201136, 005041, 201000,
+               025071, 005001, 005001, 006001, 006001, 107064, 106032, 008012, 008013, 008065,
+               008072, 013039, 040015 ]
+"340010" = [  001007, 002019, 001096, 025061, 005044, 005040, 001030, 004001, 004002, 004003,
+               004004, 004005, 004007, 005001, 006001, 008029, 008074, 008077, 040011, 025097,
+               025095, 025098, 025099, 021144, 025096, 040012, 040013, 021169, 040023, 040024,
+               040025, 022151, 022162, 022163, 025160, 025133, 022156, 022164, 022165, 022166,
+               021137, 021138, 022167, 021139, 021118, 021145, 021146, 021147, 022168, 022169,
+               022170, 025161, 025162, 022171, 022172, 022173, 022174, 021170, 021171, 022175,
+               021172, 021118, 021173, 021174, 021175, 002153, 012063, 002153, 012063, 002153,
+               012063, 013090, 013091, 007002, 011097, 011098, 007002, 011095, 011096, 010096,
+               010081, 010082, 010083, 010101, 025132, 025163, 025126, 025128, 025164, 010085,
+               010097, 010086, 010087, 010092, 010088, 010089, 010098, 010099, 010090, 010100,
+               010093, 025127, 040014, 010102 ]
+"340011" = [  001007, 002019, 001096, 025061, 005044, 005040, 001030, 004001, 004002, 004003,
+               004004, 004005, 004007, 005001, 006001, 008029, 008077, 040011, 025097, 025112,
+               025113, 021148, 021169, 040024, 040025, 002153, 022189, 022191, 022130, 025167,
+               025166, 022190, 022131, 022132, 022133, 021183, 021184, 022134, 021185, 021118,
+               021186, 021187, 021188, 002153, 012063, 002153, 012063, 013090, 013160, 007002,
+               011097, 007002, 011095, 011096, 010096, 010081, 010082, 010083, 010101, 002153,
+               025165, 025126, 025128, 025164, 010085, 010086, 010087, 010092, 010088, 010089,
+               010098, 010099, 010090, 010100, 010093, 025127, 040014, 010102 ]
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/1003.table b/definitions/bufr/tables/0/wmo/25/codetables/1003.table
new file mode 100644
index 0000000..a0c90ee
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/1003.table
@@ -0,0 +1,8 @@
+0 0 ANTARCTICA
+1 1 REGION I
+2 2 REGION II
+3 3 REGION III
+4 4 REGION IV
+5 5 REGION V
+6 6 REGION VI
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/10063.table b/definitions/bufr/tables/0/wmo/25/codetables/10063.table
new file mode 100644
index 0000000..5097874
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/10063.table
@@ -0,0 +1,10 @@
+0 0 INCREASING, THEN DECREASING; ATMOSPHERIC PRESSURE THE SAME OR HIGHER THAN THREE HOURS AGO
+1 1 INCREASING, THEN STEADY; OR INCREASING, THEN INCREASING MORE SLOWLY
+2 2 INCREASING (STEADILY OR UNSTEADILY)
+3 3 DECREASING OR STEADY, THEN INCREASING; OR INCREASING, THEN INCREASING MORE RAPIDLY
+4 4 STEADY; ATMOSPHERIC PRESSURE THE SAME AS THREE HOURS AGO
+5 5 DECREASING, THEN INCREASING; ATMOSPHERIC PRESSURE THE SAME OR LOWER THAN THREE HOURS AGO
+6 6 DECREASING, THEN STEADY; OR DECREASING, THEN DECREASING MORE SLOWLY
+7 7 DECREASING (STEADILY OR UNSTEADILY)
+8 8 STEADY OR INCREASING, THEN DECREASING; OR DECREASING, THEN DECREASING MORE RAPIDLY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/10064.table b/definitions/bufr/tables/0/wmo/25/codetables/10064.table
new file mode 100644
index 0000000..88ba38a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/10064.table
@@ -0,0 +1,4 @@
+0 0 SUBSONIC
+1 1 TRANSONIC
+2 2 SUPERSONIC
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/1007.table b/definitions/bufr/tables/0/wmo/25/codetables/1007.table
new file mode 100644
index 0000000..92b7532
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/1007.table
@@ -0,0 +1,188 @@
+0 0 RESERVED
+1 1 ERS 1
+2 2 ERS 2
+3 3 METOP-1 (METOP-B)
+4 4 METOP-2 (METOP-A)
+5 5 METOP-3 (METOP-C)
+20 20 SPOT1
+21 21 SPOT2
+22 22 SPOT3
+23 23 SPOT4
+40 40 OERSTED
+41 41 CHAMP
+42 42 TERRASAR-X
+43 43 TANDEM-X
+44 44 PAZ
+46 46 SMOS
+47 47 CRYOSAT-2
+48 48 AEOLUS
+50 50 METEOSAT 3
+51 51 METEOSAT 4
+52 52 METEOSAT 5
+53 53 METEOSAT 6
+54 54 METEOSAT 7
+55 55 METEOSAT 8
+56 56 METEOSAT 9
+57 57 METEOSAT 10
+58 58 METEOSAT 1
+59 59 METEOSAT 2
+60 60 ENVISAT
+61 61 SENTINEL 3A
+70 70 METEOSAT 11
+120 120 ADEOS
+121 121 ADEOS II
+122 122 GCOM-W1
+140 140 GOSAT
+150 150 GMS 3
+151 151 GMS 4
+152 152 GMS 5
+153 153 GMS
+154 154 GMS 2
+171 171 MTSAT-1R
+172 172 MTSAT-2
+173 173 HIMAWARI-8
+174 174 HIMAWARI-9
+200 200 NOAA 8
+201 201 NOAA 9
+202 202 NOAA 10
+203 203 NOAA 11
+204 204 NOAA 12
+205 205 NOAA 14
+206 206 NOAA 15
+207 207 NOAA 16
+208 208 NOAA 17
+209 209 NOAA 18
+220 220 LANDSAT 5
+221 221 LANDSAT 4
+222 222 LANDSAT 7
+223 223 NOAA 19
+224 224 NPP
+240 240 DMSP 7
+241 241 DMSP 8
+242 242 DMSP 9
+243 243 DMSP 10
+244 244 DMSP 11
+245 245 DMSP 12
+246 246 DMSP 13
+247 247 DMSP 14
+248 248 DMSP 15
+249 249 DMSP 16
+250 250 GOES 6
+251 251 GOES 7
+252 252 GOES 8
+253 253 GOES 9
+254 254 GOES 10
+255 255 GOES 11
+256 256 GOES 12
+257 257 GOES 13
+258 258 GOES 14
+259 259 GOES 15
+260 260 JASON 1
+261 261 JASON 2
+262 262 JASON 3
+281 281 QUIKSCAT
+282 282 TRMM
+283 283 CORIOLIS
+285 285 DMSP 17
+286 286 DMSP 18
+287 287 DMSP 19
+288 288 GPM-CORE
+289 289 ORBITING CARBON OBSERVATORY - 2 (OCO-2, NASA)
+310 310 GOMS 1
+311 311 GOMS 2
+320 320 METEOR 2-21
+321 321 METEOR 3-5
+322 322 METEOR 3M-1
+323 323 METEOR 3M-2
+341 341 RESURS 01-4
+410 410 KALPANA-1
+421 421 OCEANSAT-2
+430 430 INSAT 1B
+431 431 INSAT 1C
+432 432 INSAT 1D
+440 440 MEGHA-TROPIQUES
+441 441 SARAL
+450 450 INSAT 2A
+451 451 INSAT 2B
+452 452 INSAT 2E
+470 470 INSAT 3A
+471 471 INSAT 3D
+472 472 INSAT 3E
+500 500 FY-1C
+501 501 FY-1D
+502 502 HAI YANG 2A (HY-2A, SOA/NSOAS CHINA)
+510 510 FY-2
+512 512 FY-2B
+513 513 FY-2C
+514 514 FY-2D
+515 515 FY-2E
+516 516 FY-2F
+517 517 FY-2G
+520 520 FY-3A
+521 521 FY-3B
+522 522 FY-3C
+700 700 TIROS M (ITOS 1)
+701 701 NOAA 1
+702 702 NOAA 2
+703 703 NOAA 3
+704 704 NOAA 4
+705 705 NOAA 5
+706 706 NOAA 6
+707 707 NOAA 7
+708 708 TIROS-N
+710 710 GOES (SMS 1)
+711 711 GOES (SMS 2)
+720 720 TOPEX
+721 721 GFO (GEOSAT FOLLOW ON)
+722 722 GRACE A
+723 723 GRACE B
+724 724 COSMIC-2 P1
+725 725 COSMIC-2 P2
+726 726 COSMIC-2 P3
+727 727 COSMIC-2 P4
+728 728 COSMIC-2 P5
+729 729 COSMIC-2 P6
+731 731 GOES 1
+732 732 GOES 2
+733 733 GOES 3
+734 734 GOES 4
+735 735 GOES 5
+740 740 COSMIC-1
+741 741 COSMIC-2
+742 742 COSMIC-3
+743 743 COSMIC-4
+744 744 COSMIC-5
+745 745 COSMIC-6
+750 750 COSMIC-2 E1
+751 751 COSMIC-2 E2
+752 752 COSMIC-2 E3
+753 753 COSMIC-2 E4
+754 754 COSMIC-2 E5
+755 755 COSMIC-2 E6
+763 763 NIMBUS 3
+764 764 NIMBUS 4
+765 765 NIMBUS 5
+766 766 NIMBUS 6
+767 767 NIMBUS 7
+780 780 ERBS
+781 781 UARS
+782 782 EARTH PROBE
+783 783 TERRA
+784 784 AQUA
+785 785 AURA
+786 786 C/NOFS
+787 787 CALIPSO
+788 788 CLOUDSAT
+800 800 SUNSAT
+801 801 INTERNATIONAL SPACE STATION (ISS)
+810 810 COMS-1
+811 811 COMS-2
+820 820 SAC-C
+821 821 SAC-D
+825 825 KOMPSAT-5
+850 850 COMBINATION OF TERRA AND AQUA
+851 851 COMBINATION OF NOAA 16 TO NOAA 19
+852 852 COMBINATION OF METOP-1 TO METOP-3
+853 853 COMBINATION OF METEOSAT AND DMSP
+854 854 NON-SPECIFIC MIXTURE OF GEOSTATIONARY AND LOW EARTH-ORBITING SATELLITES
+1023 1023 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/1024.table b/definitions/bufr/tables/0/wmo/25/codetables/1024.table
new file mode 100644
index 0000000..cdc9e24
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/1024.table
@@ -0,0 +1,9 @@
+0 0 NO WIND SPEED DATA AVAILABLE
+1 1 AMSR-E DATA
+2 2 TMI DATA
+3 3 NWP: ECMWF
+4 4 NWP: UK MET OFFICE
+5 5 NWP: NCEP
+6 6 REFERENCE CLIMATOLOGY
+7 7 ERS_SCATTEROMETER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/1028.table b/definitions/bufr/tables/0/wmo/25/codetables/1028.table
new file mode 100644
index 0000000..18f8206
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/1028.table
@@ -0,0 +1,7 @@
+0 0 NO AOD DATA AVAILABLE
+1 1 NESDIS
+2 2 NAVOCEANO
+3 3 NAAPS
+4 4 MERIS
+5 5 AATSR
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/1029.table b/definitions/bufr/tables/0/wmo/25/codetables/1029.table
new file mode 100644
index 0000000..d63d07e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/1029.table
@@ -0,0 +1,8 @@
+0 0 NO SSI DATA AVAILABLE
+1 1 MSG_SEVIRI
+2 2 GOES EAST
+3 3 GOES WEST
+4 4 ECMWF
+5 5 NCEP
+6 6 UK MET OFFICE
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/1033.table b/definitions/bufr/tables/0/wmo/25/codetables/1033.table
new file mode 100644
index 0000000..6006582
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/1033.table
@@ -0,0 +1,234 @@
+0 0 WMO SECRETARIAT
+1 1 MELBOURNE
+2 2 MELBOURNE
+3 3 )
+4 4 MOSCOW
+5 5 MOSCOW
+6 6 )
+7 7 US NATIONAL WEATHER SERVICE - NATIONAL CENTRES FOR ENVIRONMENTAL PREDICTION (NCEP)
+8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONS GATEWAY (NWSTG)
+9 9 US NATIONAL WEATHER SERVICE - OTHER
+10 10 CAIRO (RSMC)
+11 11 )
+12 12 DAKAR (RSMC)
+13 13 )
+14 14 NAIROBI (RSMC)
+15 15 )
+16 16 CASABLANCA (RSMC)
+17 17 TUNIS (RSMC)
+18 18 TUNIS - CASABLANCA (RSMC)
+19 19 )
+20 20 LAS PALMAS
+21 21 ALGIERS (RSMC)
+22 22 ACMAD
+23 23 MOZAMBIQUE (NMC)
+24 24 PRETORIA (RSMC)
+25 25 LA RéUNION (RSMC)
+26 26 KHABAROVSK (RSMC)
+27 27 )
+28 28 NEW DELHI (RSMC)
+29 29 )
+30 30 NOVOSIBIRSK (RSMC)
+31 31 )
+32 32 TASHKENT (RSMC)
+33 33 JEDDAH (RSMC)
+34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+35 35 )
+36 36 BANGKOK
+37 37 ULAANBAATAR
+38 38 BEIJING (RSMC)
+39 39 )
+40 40 SEOUL
+41 41 BUENOS AIRES (RSMC)
+42 42 )
+43 43 BRASILIA (RSMC)
+44 44 )
+45 45 SANTIAGO
+46 46 BRAZILIAN SPACE AGENCY ­ INPE
+47 47 COLOMBIA (NMC)
+48 48 ECUADOR (NMC)
+49 49 PERU (NMC)
+50 50 VENEZUELA (BOLIVARIAN REPUBLIC OF) (NMC)
+51 51 MIAMI (RSMC)
+52 52 MIAMI (RSMC), NATIONAL HURRICANE CENTRE
+53 53 MSC MONITORING
+54 54 MONTREAL (RSMC)
+55 55 SAN FRANCISCO
+56 56 ARINC CENTRE
+57 57 US AIR FORCE - AIR FORCE GLOBAL WEATHER CENTRAL
+58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTEREY, CA, UNITED STATES
+59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, UNITED STATES
+60 60 UNITED STATES NATIONAL CENTER FOR ATMOSPHERIC RESEARCH (NCAR)
+61 61 SERVICE ARGOS - LANDOVER
+62 62 US NAVAL OCEANOGRAPHIC OFFICE
+63 63 INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIETY (IRI)
+64 64 HONOLULU (RSMC)
+65 65 DARWIN (RSMC)
+66 66 )
+67 67 MELBOURNE (RSMC)
+68 68 RESERVED
+69 69 WELLINGTON (RSMC)
+70 70 )
+71 71 NADI (RSMC)
+72 72 SINGAPORE
+73 73 MALAYSIA (NMC)
+74 74 UK METEOROLOGICAL OFFICE ­ EXETER (RSMC)
+75 75 )
+76 76 MOSCOW (RSMC)
+77 77 RESERVED
+78 78 OFFENBACH (RSMC)
+79 79 )
+80 80 ROME (RSMC)
+81 81 )
+82 82 NORRKöPING
+83 83 )
+84 84 TOULOUSE (RSMC)
+85 85 TOULOUSE (RSMC)
+86 86 HELSINKI
+87 87 BELGRADE
+88 88 OSLO
+89 89 PRAGUE
+90 90 EPISKOPI
+91 91 ANKARA
+92 92 FRANKFURT/MAIN
+93 93 LONDON (WAFC)
+94 94 COPENHAGEN
+95 95 ROTA
+96 96 ATHENS
+97 97 EUROPEAN SPACE AGENCY (ESA)
+98 98 EUROPEAN CENTRE FOR MEDIUM-RANGE WEATHER FORECASTS (ECMWF) (RSMC)
+99 99 DE BILT
+100 100 BRAZZAVILLE
+101 101 ABIDJAN
+102 102 LIBYA (NMC)
+103 103 MADAGASCAR (NMC)
+104 104 MAURITIUS (NMC)
+105 105 NIGER (NMC)
+106 106 SEYCHELLES (NMC)
+107 107 UGANDA (NMC)
+108 108 UNITED REPUBLIC OF TANZANIA (NMC)
+109 109 ZIMBABWE (NMC)
+110 110 HONG-KONG, CHINA
+111 111 AFGHANISTAN (NMC)
+112 112 BAHRAIN (NMC)
+113 113 BANGLADESH (NMC)
+114 114 BHUTAN (NMC)
+115 115 CAMBODIA (NMC)
+116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA (NMC)
+117 117 ISLAMIC REPUBLIC OF IRAN (NMC)
+118 118 IRAQ (NMC)
+119 119 KAZAKHSTAN (NMC)
+120 120 KUWAIT (NMC)
+121 121 KYRGYZSTAN (NMC)
+122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC (NMC)
+123 123 MACAO, CHINA
+124 124 MALDIVES (NMC)
+125 125 MYANMAR (NMC)
+126 126 NEPAL (NMC)
+127 127 OMAN (NMC)
+128 128 PAKISTAN (NMC)
+129 129 QATAR (NMC)
+130 130 YEMEN (NMC)
+131 131 SRI LANKA (NMC)
+132 132 TAJIKISTAN (NMC)
+133 133 TURKMENISTAN (NMC)
+134 134 UNITED ARAB EMIRATES (NMC)
+135 135 UZBEKISTAN (NMC)
+136 136 VIET NAM (NMC)
+140 140 BOLIVIA (PLURINATIONAL STATE OF) (NMC)
+141 141 GUYANA (NMC)
+142 142 PARAGUAY (NMC)
+143 143 SURINAME (NMC)
+144 144 URUGUAY (NMC)
+145 145 FRENCH GUIANA
+146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE
+147 147 NATIONAL COMMISSION ON SPACE ACTIVITIES (CONAE) - ARGENTINA
+150 150 ANTIGUA AND BARBUDA (NMC)
+151 151 BAHAMAS (NMC)
+152 152 BARBADOS (NMC)
+153 153 BELIZE (NMC)
+154 154 BRITISH CARIBBEAN TERRITORIES CENTRE
+155 155 SAN JOSé
+156 156 CUBA (NMC)
+157 157 DOMINICA (NMC)
+158 158 DOMINICAN REPUBLIC (NMC)
+159 159 EL SALVADOR (NMC)
+160 160 US NOAA/NESDIS
+161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH
+162 162 GUATEMALA (NMC)
+163 163 HAITI (NMC)
+164 164 HONDURAS (NMC)
+165 165 JAMAICA (NMC)
+166 166 MEXICO CITY
+167 167 CURAçAO AND SINT MAARTEN (NMC)
+168 168 NICARAGUA (NMC)
+169 169 PANAMA (NMC)
+170 170 SAINT LUCIA (NMC)
+171 171 TRINIDAD AND TOBAGO (NMC)
+172 172 FRENCH DEPARTMENTS IN RA IV
+173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA)
+174 174 INTEGRATED SCIENCE DATA MANAGEMENT/MARINE ENVIRONMENTAL DATA SERVICE (ISDM/MEDS) - CANADA
+175 175 UNIVERSITY CORPORATION FOR ATMOSPHERIC RESEARCH (UCAR) - UNITED STATES
+176 176 COOPERATIVE INSTITUTE FOR METEOROLOGICAL SATELLITE STUDIES (CIMSS) - UNITED STATES
+177 177 NOAA NATIONAL OCEAN SERVICE - UNITED STATES
+190 190 COOK ISLANDS (NMC)
+191 191 FRENCH POLYNESIA (NMC)
+192 192 TONGA (NMC)
+193 193 VANUATU (NMC)
+194 194 BRUNEI DARUSSALAM (NMC)
+195 195 INDONESIA (NMC)
+196 196 KIRIBATI (NMC)
+197 197 FEDERATED STATES OF MICRONESIA (NMC)
+198 198 NEW CALEDONIA (NMC)
+199 199 NIUE
+200 200 PAPUA NEW GUINEA (NMC)
+201 201 PHILIPPINES (NMC)
+202 202 SAMOA (NMC)
+203 203 SOLOMON ISLANDS (NMC)
+204 204 NATIONAL INSTITUTE OF WATER AND ATMOSPHERIC RESEARCH (NIWA - NEW ZEALAND)
+210 210 FRASCATI (ESA/ESRIN)
+211 211 LANNION
+212 212 LISBON
+213 213 REYKJAVIK
+214 214 MADRID
+215 215 ZURICH
+216 216 SERVICE ARGOS - TOULOUSE
+217 217 BRATISLAVA
+218 218 BUDAPEST
+219 219 LJUBLJANA
+220 220 WARSAW
+221 221 ZAGREB
+222 222 ALBANIA (NMC)
+223 223 ARMENIA (NMC)
+224 224 AUSTRIA (NMC)
+225 225 AZERBAIJAN (NMC)
+226 226 BELARUS (NMC)
+227 227 BELGIUM (NMC)
+228 228 BOSNIA AND HERZEGOVINA (NMC)
+229 229 BULGARIA (NMC)
+230 230 CYPRUS (NMC)
+231 231 ESTONIA (NMC)
+232 232 GEORGIA (NMC)
+233 233 DUBLIN
+234 234 ISRAEL (NMC)
+235 235 JORDAN (NMC)
+236 236 LATVIA (NMC)
+237 237 LEBANON (NMC)
+238 238 LITHUANIA (NMC)
+239 239 LUXEMBOURG
+240 240 MALTA (NMC)
+241 241 MONACO
+242 242 ROMANIA (NMC)
+243 243 SYRIAN ARAB REPUBLIC (NMC)
+244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA (NMC)
+245 245 UKRAINE (NMC)
+246 246 REPUBLIC OF MOLDOVA (NMC)
+247 247 OPERATIONAL PROGRAMME FOR THE EXCHANGE OF WEATHER RADAR INFORMATION (OPERA) - EUMETNET
+248 248 MONTENEGRO (NMC)
+249 249 BARCELONA DUST FORECAST CENTER
+250 250 CONSORTIUM FOR SMALL SCALE MODELLING  (COSMO)
+251 251 METEOROLOGICAL COOPERATION ON OPERATIONAL NWP (METCOOP)
+252 252 MAX PLANCK INSTITUTE FOR METEOROLOGY (MPI-M)
+253 253 RESERVED FOR OTHER CENTRES
+254 254 EUMETSAT OPERATION CENTRE
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/1034.table b/definitions/bufr/tables/0/wmo/25/codetables/1034.table
new file mode 100644
index 0000000..fface93
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/1034.table
@@ -0,0 +1,100 @@
+0 0 NO SUB-CENTRE
+1 1 LUXEMBOURG (NMC)
+2 2 FUCINO
+3 3 GATINEAU
+4 4 MASPALOMAS (SPAIN)
+5 5 ESA ERS CENTRAL FACILITY
+6 6 PRINCE ALBERT
+7 7 WEST FREUGH
+8 8 LANGLEY RESEARCH CENTER
+9 9 MARSHALL SPACE FLIGHT CENTER
+10 10 TROMSO (NORWAY)
+11 11 MCMURDO (ANTARCTICA)
+12 12 SODANKYLA (FINLAND)
+13 13 TROMSO
+14 14 BARROW (UNITED STATES)
+15 15 ROTHERA (ANTARCTICA)
+16 16 SPACE WEATHER PREDICTION CENTER
+17 17 ESRL GLOBAL SYSTEMS DIVISION
+20 20 MASPALOMAS (SPAIN)
+21 21 AGENZIA SPAZIALE ITALIANA (ITALY)
+22 22 CENTRE NATIONAL DE LA RECHERCHE SCIENTIFIQUE (FRANCE)
+23 23 GEOFORSCHUNGS ZENTRUM (GERMANY)
+24 24 GEODETIC OBSERVATORY PECNY (CZECH REPUBLIC)
+25 25 INSTITUT D'ESTUDIS ESPACIALS DE CATALUNYA (SPAIN)
+26 26 FEDERAL OFFICE OF TOPOGRAPHY (SWITZERLAND)
+27 27 NORDIC COMMISSION OF GEODESY (NORWAY)
+28 28 NORDIC COMMISSION OF GEODESY (SWEDEN)
+29 29 INSTITUTE GéOGRAPHIQUE NATIONAL (FRANCE) - SERVICE DE GéODéSIE
+30 30 KANGERLUSSUAQ (GREENLAND)
+31 31 INSTITUTE OF ENGINEERING SATELLITE SURVEYING AND GEODESY (UNITED KINGDOM)
+32 32 JOINT OPERATIONAL METEOROLOGY AND OCEANOGRAPHY CENTRE (JOMOC)
+33 33 KONINKLIJK NEDERLANDS METEOROLOGISCH INSTITUT (NETHERLANDS)
+34 34 NORDIC GPS ATMOSPHERIC ANALYSIS CENTRE (SWEDEN)
+35 35 INSTITUTO GEOGRAFICO NACIONAL DE ESPAñA (SPAIN)
+36 36 MET ÉIREANN (IRELAND)
+37 37 ROYAL OBSERVATORY OF BELGIUM (BELGIUM)
+40 40 EDMONTON (CANADA)
+50 50 BEDFORD (CANADA)
+60 60 GANDER (CANADA)
+64 64 BUNDESWEHR GEOINFORMATION OFFICE (BGIO)
+70 70 MONTEREY (UNITED STATES)
+76 76 ROSHYDROMET (RUSSIAN FEDERATION)
+78 78 DEUTSCHER WETTERDIENST (GERMANY)
+80 80 WALLOPS ISLAND (UNITED STATES)
+90 90 GILMOR CREEK (UNITED STATES)
+96 96 HELLENIC NATIONAL METEOROLOGICAL SERVICE (GREECE)
+100 100 ATHENS (GREECE)
+101 101 ALBANIA (NMC)
+102 102 NATIONAL RESEARCH COUNCIL/INSTITUTE OF ATMOSPHERIC SCIENCES AND CLIMATE (CNR-ISAC)
+110 110 NOWCAST MOBILE (LIGHTNING DATA)
+120 120 EWA BEACH, HAWAII
+130 130 MIAMI, FLORIDA
+140 140 LANNION (FRANCE)
+150 150 SVALBARD (NORWAY)
+170 170 ST DENIS (LA RéUNION)
+180 180 MOSCOW
+190 190 MUSCAT
+200 200 KHABAROVSK
+201 201 RHEINISCHES INSTITUT FüR UMWELTFORSCHUNG AN DER UNIVERSITäT ZU KöLN E.V. (GERMANY)
+203 203 DAVIS
+204 204 NATIONAL INSTITUTE OF WATER AND ATMOSPHERIC RESEARCH (NIWA - NEW ZEALAND)
+205 205 NIUE
+206 206 RAROTONGA (COOK ISLANDS)
+207 207 APIA (SAMOA)
+208 208 TONGA
+209 209 TUVALU
+210 210 NOVOSIBIRSK
+211 211 TOKELAU
+214 214 DARWIN
+215 215 METEOSWISS (SWITZERLAND)
+217 217 PERTH
+219 219 TOWNSVILLE
+220 220 INSTITUTE OF METEOROLOGY AND WATER MANAGEMENT (POLAND)
+221 221 SCHLESWIG-HOLSTEIN, TRAFFIC OPERATIONS COMPUTING CENTRE (TOCC) KIEL/NEUMüNSTER
+222 222 HAMBURG, TOCC HAMBURG
+223 223 NIEDERSACHSEN, TOCC HANNOVER
+224 224 AUSTRIA (NMC)
+225 225 NORDRHEIN-WESTFALEN, TOCC KAMEN LEVERKUSEN
+226 226 HESSEN, TOCC RüSSELSHEIM
+227 227 RHEINLAND-PFALZ, TOCC KOBLENZ
+228 228 BADEN-WüRTTEMBERG, TOCC LUDWIGSBURG
+229 229 BAYERN, TOCC FREIMANN
+230 230 SAARLAND, TOCC ROHRBACH
+231 231 BAYERN, AUTOBAHN DIRECTORATE NORDBAYERN
+232 232 BRANDENBURG, TOCC STOLPE
+233 233 MECKLENBURG-VORPOMMERN, TOCC MALCHOW
+234 234 SACHSEN, TOCC DRESDEN
+235 235 SACHSEN-ANHALT, TOCC HALLE
+236 236 THüRINGEN, TOCC ERFURT
+237 237 EASYWAY - METEOTRANS
+240 240 KIYOSE
+241 241 REANALYSIS PROJECT
+242 242 NATIONAL METEOROLOGICAL ADMINISTRATION (ROMANIA)
+243 243 KELBURN
+245 245 JINCHEON
+249 249 SINGAPORE
+250 250 VLADIVOSTOCK
+251 251 GUAM
+252 252 HONOLULU
+254 254 EUMETSAT
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/1036.table b/definitions/bufr/tables/0/wmo/25/codetables/1036.table
new file mode 100644
index 0000000..e7e4045
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/1036.table
@@ -0,0 +1,38 @@
+36001 36001 AUSTRALIA, BUREAU OF METEOROLOGY (BOM)
+36002 36002 AUSTRALIA, JOINT AUSTRALIAN FACILITY FOR OCEAN OBSERVING SYSTEMS (JAFOOS)
+36003 36003 AUSTRALIA, THE COMMONWEALTH SCIENTIFIC AND INDUSTRIAL RESEARCH ORGANIZATION (CSIRO)
+124001 124001 CANADA, MARINE ENVIRONMENTAL DATA SERVICE (MEDS)
+124002 124002 CANADA, INSTITUTE OF OCEAN SCIENCES (IOS)
+124173 124173 CANADA, ENVIRONMENT CANADA
+124174 124174 CANADA, DEPARTMENT OF NATIONAL DEFENCE
+124175 124175 CANADA, NAV CANADA
+156001 156001 CHINA, THE STATE OCEANIC ADMINISTRATION
+156002 156002 CHINA, SECOND INSTITUTE OF OCEANOGRAPHY, STATE OCEANIC ADMINISTRATION
+156003 156003 CHINA, INSTITUTE OF OCEAN TECHNOLOGY
+250001 250001 FRANCE, INSTITUT DE RECHERCHE POUR LE DéVELOPPEMENT (IRD)
+250002 250002 FRANCE, INSTITUT FRANçAIS DE RECHERCHE POUR L'EXPLOITATION DE LA MER (IFREMER)
+276001 276001 GERMANY, BUNDESAMT FUER SEESCHIFFAHRT UND HYDROGRAPHIE (BSH)
+276002 276002 GERMANY, INSTITUT FUER MEERESKUNDE, KIEL
+356001 356001 INDIA, NATIONAL INSTITUTE OF OCEANOGRAPHY (NIO)
+356002 356002 INDIA, NATIONAL INSTITUTE FOR OCEAN TECHNOLOGY (NIOT)
+356003 356003 INDIA, NATIONAL CENTRE FOR OCEAN INFORMATION SERVICE
+392001 392001 JAPAN, JAPAN METEOROLOGICAL AGENCY (JMA)
+392002 392002 JAPAN, FRONTIER OBSERVATIONAL RESEARCH SYSTEM FOR GLOBAL CHANGE
+392003 392003 JAPAN, JAPAN MARINE SCIENCE AND TECHNOLOGY CENTRE (JAMSTEC)
+410001 410001 REPUBLIC OF KOREA, SEOUL NATIONAL UNIVERSITY
+410002 410002 REPUBLIC OF KOREA, KOREA OCEAN RESEARCH AND DEVELOPMENT INSTITUTE  (KORDI)
+410003 410003 REPUBLIC OF KOREA, METEOROLOGICAL RESEARCH INSTITUTE
+540001 540001 NEW CALEDONIA, INSTITUT DE RECHERCHE POUR LE DéVELOPPEMENT (IRD)
+554001 554001 NEW ZEALAND, NATIONAL INSTITUTE OF WATER AND ATMOSPHERIC RESEARCH (NIWA)
+643001 643001 RUSSIAN FEDERATION, STATE OCEANOGRAPHIC INSTITUTE OF ROSHYDROMET
+643002 643002 RUSSIAN FEDERATION, FEDERAL SERVICE FOR HYDROMETEOROLOGY AND ENVIRONMENTAL MONITORING
+724001 724001 SPAIN, INSTITUTO ESPAñOL DE OCEANOGRAFIA
+826001 826001 UNITED KINGDOM, HYDROGRAPHIC OFFICE
+826002 826002 UNITED KINGDOM, SOUTHAMPTON OCEANOGRAPHY CENTRE (SOC)
+840001 840001 USA, NOAA ATLANTIC OCEANOGRAPHIC AND METEOROLOGICAL LABORATORIES (AOML)
+840002 840002 USA, NOAA PACIFIC MARINE ENVIRONMENTAL LABORATORIES (PMEL)
+840003 840003 USA, SCRIPPS INSTITUTION OF OCEANOGRAPHY (SIO)
+840004 840004 USA, WOODS HOLE OCEANOGRAPHIC INSTITUTION (WHOI)
+840005 840005 USA, UNIVERSITY OF WASHINGTON
+840006 840006 USA, NAVAL OCEANOGRAPHIC OFFICE
+1048575 1048575 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/1038.table b/definitions/bufr/tables/0/wmo/25/codetables/1038.table
new file mode 100644
index 0000000..2eee38b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/1038.table
@@ -0,0 +1,7 @@
+0 0 NO SEA ICE SET
+1 1 NSIDC SSM/I CAVALIERI ET AL (1992)
+2 2 AMSR-E
+3 3 ECMWF
+4 4 CMS (FRANCE) CLOUD MASK USED BY MEDSPIRATION
+5 5 EUMETSAT OSI-SAF
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/1052.table b/definitions/bufr/tables/0/wmo/25/codetables/1052.table
new file mode 100644
index 0000000..b8e14ed
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/1052.table
@@ -0,0 +1,4 @@
+0 0 PRIMARY
+1 1 SECONDARY
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/1090.table b/definitions/bufr/tables/0/wmo/25/codetables/1090.table
new file mode 100644
index 0000000..55f7ca2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/1090.table
@@ -0,0 +1,5 @@
+0 0 LAGGED-AVERAGE FORECASTING (LAF)
+1 1 BREEDING
+2 2 SINGULAR VECTORS
+3 3 MULTIPLE ANALYSIS CYCLES
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/1092.table b/definitions/bufr/tables/0/wmo/25/codetables/1092.table
new file mode 100644
index 0000000..dc9bf1c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/1092.table
@@ -0,0 +1,5 @@
+0 0 UNPERTURBED HIGH-RESOLUTION CONTROL FORECAST
+1 1 UNPERTURBED LOW-RESOLUTION CONTROL FORECAST
+2 2 NEGATIVELY PERTURBED FORECAST
+3 3 POSITIVELY PERTURBED FORECAST
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/1101.table b/definitions/bufr/tables/0/wmo/25/codetables/1101.table
new file mode 100644
index 0000000..21e0cf5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/1101.table
@@ -0,0 +1,202 @@
+100 100 ALGERIA
+101 101 ANGOLA
+102 102 BENIN
+103 103 BOTSWANA
+104 104 BURKINA FASO
+105 105 BURUNDI
+106 106 CAMEROON
+107 107 CABO VERDE
+108 108 CENTRAL AFRICAN REPUBLIC
+109 109 CHAD
+110 110 COMOROS
+111 111 CONGO
+112 112 CôTE D'IVOIRE
+113 113 DEMOCRATIC REPUBLIC OF THE CONGO
+114 114 DJIBOUTI
+115 115 EGYPT
+116 116 ERITREA
+117 117 ETHIOPIA
+118 118 FRANCE (RA I)
+119 119 GABON
+120 120 GAMBIA
+121 121 GHANA
+122 122 GUINEA
+123 123 GUINEA-BISSAU
+124 124 KENYA
+125 125 LESOTHO
+126 126 LIBERIA
+127 127 LIBYA
+128 128 MADAGASCAR
+129 129 MALAWI
+130 130 MALI
+131 131 MAURITANIA
+132 132 MAURITIUS
+133 133 MOROCCO
+134 134 MOZAMBIQUE
+135 135 NAMIBIA
+136 136 NIGER
+137 137 NIGERIA
+138 138 PORTUGAL (RA I)
+139 139 RWANDA
+140 140 SAO TOME AND PRINCIPE
+141 141 SENEGAL
+142 142 SEYCHELLES
+143 143 SIERRA LEONE
+144 144 SOMALIA
+145 145 SOUTH AFRICA
+146 146 SPAIN (RA I)
+147 147 SUDAN
+148 148 SWAZILAND
+149 149 TOGO
+150 150 TUNISIA
+151 151 UGANDA
+152 152 UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (RA I)
+153 153 UNITED REPUBLIC OF TANZANIA
+154 154 ZAMBIA
+155 155 ZIMBABWE
+200 200 AFGHANISTAN
+201 201 BAHRAIN
+202 202 BANGLADESH
+203 203 BHUTAN
+204 204 CAMBODIA
+205 205 CHINA
+206 206 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA
+207 207 HONG KONG, CHINA
+208 208 INDIA
+209 209 IRAN, ISLAMIC REPUBLIC OF
+210 210 IRAQ
+211 211 JAPAN
+212 212 KAZAKHSTAN
+213 213 KUWAIT
+214 214 KYRGYZSTAN
+215 215 LAO PEOPLE'S DEMOCRATIC REPUBLIC
+216 216 MACAO, CHINA
+217 217 MALDIVES
+218 218 MONGOLIA
+219 219 MYANMAR
+220 220 NEPAL
+221 221 OMAN
+222 222 PAKISTAN
+223 223 QATAR
+224 224 REPUBLIC OF KOREA
+225 225 YEMEN
+226 226 RUSSIAN FEDERATION (RA II)
+227 227 SAUDI ARABIA
+228 228 SRI LANKA
+229 229 TAJIKISTAN
+230 230 THAILAND
+231 231 TURKMENISTAN
+232 232 UNITED ARAB EMIRATES
+233 233 UZBEKISTAN
+234 234 VIET NAM
+300 300 ARGENTINA
+301 301 BOLIVIA (PLURINATIONAL STATE OF)
+302 302 BRAZIL
+303 303 CHILE
+304 304 COLOMBIA
+305 305 ECUADOR
+306 306 FRANCE (RA III)
+307 307 GUYANA
+308 308 PARAGUAY
+309 309 PERU
+310 310 SURINAME
+311 311 URUGUAY
+312 312 VENEZUELA (BOLIVARIAN REPUBLIC OF)
+400 400 ANTIGUA AND BARBUDA
+401 401 BAHAMAS
+402 402 BARBADOS
+403 403 BELIZE
+404 404 BRITISH CARIBBEAN TERRITORIES
+405 405 CANADA
+406 406 COLOMBIA
+407 407 COSTA RICA
+408 408 CUBA
+409 409 DOMINICA
+410 410 DOMINICAN REPUBLIC
+411 411 EL SALVADOR
+412 412 FRANCE (RA IV)
+413 413 GUATEMALA
+414 414 HAITI
+415 415 HONDURAS
+416 416 JAMAICA
+417 417 MEXICO
+418 418 CURAçAO AND SINT MAARTEN
+419 419 NICARAGUA
+420 420 PANAMA
+421 421 SAINT LUCIA
+422 422 TRINIDAD AND TOBAGO
+423 423 UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (RA IV)
+424 424 UNITED STATES OF AMERICA (RA IV)
+425 425 VENEZUELA (BOLIVARIAN REPUBLIC OF)
+500 500 AUSTRALIA
+501 501 BRUNEI DARUSSALAM
+502 502 COOK ISLANDS
+503 503 FIJI
+504 504 FRENCH POLYNESIA
+505 505 INDONESIA
+506 506 KIRIBATI
+507 507 MALAYSIA
+508 508 MICRONESIA, FEDERATED STATES OF
+509 509 NEW CALEDONIA
+510 510 NEW ZEALAND
+511 511 NIUE
+512 512 PAPUA NEW GUINEA
+513 513 PHILIPPINES
+514 514 SAMOA
+515 515 SINGAPORE
+516 516 SOLOMON ISLANDS
+517 517 TONGA
+518 518 UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (RA V)
+519 519 UNITED STATES OF AMERICA (RA V)
+520 520 VANUATU
+600 600 ALBANIA
+601 601 ARMENIA
+602 602 AUSTRIA
+603 603 AZERBAIJAN
+604 604 BELARUS
+605 605 BELGIUM
+606 606 BOSNIA AND HERZEGOVINA
+607 607 BULGARIA
+608 608 CROATIA
+609 609 CYPRUS
+610 610 CZECH REPUBLIC
+611 611 DENMARK
+612 612 ESTONIA
+613 613 FINLAND
+614 614 FRANCE (RA VI)
+615 615 GEORGIA
+616 616 GERMANY
+617 617 GREECE
+618 618 HUNGARY
+619 619 ICELAND
+620 620 IRELAND
+621 621 ISRAEL
+622 622 ITALY
+623 623 JORDAN
+624 624 KAZAKHSTAN
+625 625 LATVIA
+626 626 LEBANON
+627 627 LITHUANIA
+628 628 LUXEMBOURG
+629 629 MALTA
+630 630 MONACO
+631 631 MONTENEGRO
+632 632 NETHERLANDS
+633 633 NORWAY
+634 634 POLAND
+635 635 PORTUGAL (RA VI)
+636 636 REPUBLIC OF MOLDOVA
+637 637 ROMANIA
+638 638 RUSSIAN FEDERATION (RA VI)
+639 639 SERBIA
+640 640 SLOVAKIA
+641 641 SLOVENIA
+642 642 SPAIN (RA VI)
+643 643 SWEDEN
+644 644 SWITZERLAND
+645 645 SYRIAN ARAB REPUBLIC
+646 646 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA
+647 647 TURKEY
+648 648 UKRAINE
+649 649 UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (RA VI)
+1023 1023 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/11030.table b/definitions/bufr/tables/0/wmo/25/codetables/11030.table
new file mode 100644
index 0000000..253b8fc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/11030.table
@@ -0,0 +1,25 @@
+0 0 NIL
+1 1 LIGHT
+2 2 MODERATE
+3 3 SEVERE
+4 4 NIL
+5 5 LIGHT
+6 6 MODERATE
+7 7 SEVERE
+8 8 NIL
+9 9 LIGHT
+10 10 MODERATE
+11 11 SEVERE
+12 12 EXTREME, IN CLEAR AIR
+13 13 EXTREME, IN CLOUD
+14 14 EXTREME, CLOUD/CLEAR AIR NOT SPECIFIED
+15 15 LIGHT, ISOLATED MODERATE
+16 16 LIGHT, OCCASIONAL MODERATE
+17 17 LIGHT, FREQUENTLY MODERATE
+18 18 MODERATE, ISOLATED SEVERE
+19 19 MODERATE, OCCASIONAL SEVERE
+20 20 MODERATE, FREQUENTLY SEVERE
+21 21 SEVERE, ISOLATED EXTREME
+22 22 SEVERE, OCCASIONAL EXTREME
+23 23 SEVERE, FREQUENTLY EXTREME
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/11031.table b/definitions/bufr/tables/0/wmo/25/codetables/11031.table
new file mode 100644
index 0000000..7bece1c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/11031.table
@@ -0,0 +1,16 @@
+0 0 NIL
+1 1 LIGHT
+2 2 MODERATE
+3 3 SEVERE
+4 4 NIL
+5 5 LIGHT
+6 6 MODERATE
+7 7 SEVERE
+8 8 NIL
+9 9 LIGHT
+10 10 MODERATE
+11 11 SEVERE
+12 12 EXTREME, IN CLEAR AIR
+13 13 EXTREME, IN CLOUD
+14 14 EXTREME, CLOUD/CLEAR AIR NOT SPECIFIED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/11037.table b/definitions/bufr/tables/0/wmo/25/codetables/11037.table
new file mode 100644
index 0000000..423eef7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/11037.table
@@ -0,0 +1,30 @@
+0 0 AVE < 0.1
+1 1 AVE < 0.1
+2 2 0.1 <= AVE < 0.2
+3 3 AVE <0.1
+4 4 0.1 <= AVE < 0.2
+5 5 0.2 <= AVE < 0.3
+6 6 AVE < 0.1
+7 7 0.1 <= AVE < 0.2
+8 8 0.2 <= AVE < 0.3
+9 9 0.3 <= AVE < 0.4
+10 10 AVE < 0.1
+11 11 0.1 <= AVE < 0.2
+12 12 0.2 <= AVE < 0.3
+13 13 0.3 <= AVE < 0.4
+14 14 0.4 <= AVE < 0.5
+15 15 AVE < 0.1
+16 16 0.1 <= AVE < 0.2
+17 17 0.2 <= AVE < 0.3
+18 18 0.3 <= AVE < 0.4
+19 19 0.4 <= AVE < 0.5
+20 20 0.5 <= AVE < 0.8
+21 21 AVE < 0.1
+22 22 0.1 <= AVE < 0.2
+23 23 0.2 <= AVE < 0.3
+24 24 0.3 <= AVE < 0.4
+25 25 0.4 <= AVE < 0.5
+26 26 0.5 <= AVE < 0.8
+27 27 0.8 <= AVE
+28 28 NIL
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/11038.table b/definitions/bufr/tables/0/wmo/25/codetables/11038.table
new file mode 100644
index 0000000..f0c5cce
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/11038.table
@@ -0,0 +1,17 @@
+0 0 MIN < 1
+1 1 1 <= MIN < 2
+2 2 2 <= MIN < 3
+3 3 3 <= MIN < 4
+4 4 4 <= MIN < 5
+5 5 5 <= MIN < 6
+6 6 6 <= MIN < 7
+7 7 7 <= MIN < 8
+8 8 8 <= MIN < 9
+9 9 9 <= MIN < 10
+10 10 10 <= MIN < 11
+11 11 11 <= MIN < 12
+12 12 12 <= MIN < 13
+13 13 13 <= MIN < 14
+14 14 14 <= MIN < 15
+15 15 NO TIMING INFORMATION AVAILABLE
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/11039.table b/definitions/bufr/tables/0/wmo/25/codetables/11039.table
new file mode 100644
index 0000000..c2abbda
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/11039.table
@@ -0,0 +1,17 @@
+0 0 MIN < 1
+1 1 1 <= MIN < 2
+2 2 2 <= MIN < 3
+3 3 3 <= MIN < 4
+4 4 4 <= MIN < 5
+5 5 5 <= MIN < 6
+6 6 6 <= MIN < 7
+7 7 7 <= MIN < 8
+8 8 8 <= MIN < 9
+9 9 9 <= MIN < 10
+10 10 10 <= MIN < 11
+11 11 11 <= MIN < 12
+12 12 12 <= MIN < 13
+13 13 13 <= MIN < 14
+14 14 14 <= MIN < 15
+60 60 NO TIMING INFORMATION AVAILABLE
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/13038.table b/definitions/bufr/tables/0/wmo/25/codetables/13038.table
new file mode 100644
index 0000000..19bc422
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/13038.table
@@ -0,0 +1,4 @@
+0 0 NOT SUPERADIABATIC
+1 1 SUPERADIABATIC
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/13039.table b/definitions/bufr/tables/0/wmo/25/codetables/13039.table
new file mode 100644
index 0000000..c070b1d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/13039.table
@@ -0,0 +1,3 @@
+0 0 SEA ICE
+1 1 SNOW ON LAND
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/13040.table b/definitions/bufr/tables/0/wmo/25/codetables/13040.table
new file mode 100644
index 0000000..30c08bd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/13040.table
@@ -0,0 +1,8 @@
+0 0 LAND
+1 1 RESERVED
+2 2 NEAR COAST
+3 3 ICE
+4 4 POSSIBLE ICE
+5 5 OCEAN
+6 6 COAST
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/13041.table b/definitions/bufr/tables/0/wmo/25/codetables/13041.table
new file mode 100644
index 0000000..9e77b64
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/13041.table
@@ -0,0 +1,10 @@
+1 1 A
+2 2 A - B
+3 3 B
+4 4 B - C
+5 5 C
+6 6 D
+7 7 E
+8 8 F
+9 9 G
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/13051.table b/definitions/bufr/tables/0/wmo/25/codetables/13051.table
new file mode 100644
index 0000000..4bdb73e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/13051.table
@@ -0,0 +1,8 @@
+0 0 SMALLER THAN ANY VALUE IN THE 30-YEAR PERIOD
+1 1 IN THE FIRST QUINTILE
+2 2 IN THE SECOND QUINTILE
+3 3 IN THE THIRD QUINTILE
+4 4 IN THE FOURTH QUINTILE
+5 5 IN THE FIFTH QUINTILE
+6 6 GREATER THAN ANY VALUE IN THE 30-YEAR PERIOD
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/13056.table b/definitions/bufr/tables/0/wmo/25/codetables/13056.table
new file mode 100644
index 0000000..448c269
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/13056.table
@@ -0,0 +1,11 @@
+0 0 NO PRECIPITATION
+1 1 LIGHT INTERMITTENT
+2 2 MODERATE INTERMITTENT
+3 3 HEAVY INTERMITTENT
+4 4 VERY HEAVY INTERMITTENT
+5 5 LIGHT CONTINUOUS
+6 6 MODERATE CONTINUOUS
+7 7 HEAVY CONTINUOUS
+8 8 VERY HEAVY CONTINUOUS
+9 9 VARIABLE - ALTERNATIVELY LIGHT AND HEAVY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/13057.table b/definitions/bufr/tables/0/wmo/25/codetables/13057.table
new file mode 100644
index 0000000..6dfa18d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/13057.table
@@ -0,0 +1,11 @@
+0 0 NO PRECIPITATION
+1 1 WITHIN THE LAST HOUR
+2 2 1 TO 2 HOURS AGO
+3 3 2 TO 3 HOURS AGO
+4 4 3 TO 4 HOURS AGO
+5 5 4 TO 5 HOURS AGO
+6 6 5 TO 6 HOURS AGO
+7 7 6 TO 8 HOURS AGO
+8 8 8 TO 10 HOURS AGO
+9 9 MORE THAN 10 HOURS AGO
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/15025.table b/definitions/bufr/tables/0/wmo/25/codetables/15025.table
new file mode 100644
index 0000000..6bb6ed5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/15025.table
@@ -0,0 +1,4 @@
+0 0 OZONE
+11 11 FINE PARTICULATE MATTER (DIAMETER < 2.5 MICRONS)
+12 12 FINE PARTICULATE MATTER (DIAMETER < 10 MICRONS)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/19001.table b/definitions/bufr/tables/0/wmo/25/codetables/19001.table
new file mode 100644
index 0000000..af893eb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/19001.table
@@ -0,0 +1,7 @@
+0 0 DEPRESSION OR LOW (EXTRATROPLCAL)
+1 1 TROPICAL DEPRESSION
+2 2 TROPICAL STORM
+3 3 SEVERE TROPICAL STORM
+4 4 TYPHOON
+10 10 DUST/SANDSTORM
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/19008.table b/definitions/bufr/tables/0/wmo/25/codetables/19008.table
new file mode 100644
index 0000000..3bcb519
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/19008.table
@@ -0,0 +1,5 @@
+0 0 RESERVED
+1 1 SHALLOW (TOP OF CIRCULATION BELOW 700-HPA LEVEL)
+2 2 MEDIUM (TOP BETWEEN 700-HPA AND 400-HPA LEVEL)
+3 3 DEEP (TOP ABOVE 400-HPA LEVEL)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/19010.table b/definitions/bufr/tables/0/wmo/25/codetables/19010.table
new file mode 100644
index 0000000..b091d96
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/19010.table
@@ -0,0 +1,3 @@
+1 1 MINIMUM VALUE OF SEA LEVEL PRESSURE
+2 2 MAXIMUM VALUE OF 850 HPA RELATIVE VORTICITY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/19100.table b/definitions/bufr/tables/0/wmo/25/codetables/19100.table
new file mode 100644
index 0000000..1f03a6f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/19100.table
@@ -0,0 +1,9 @@
+3 3 DURING THE PRECEDING 15 MINUTES
+4 4 DURING THE PRECEDING 30 MINUTES
+5 5 DURING THE PRECEDING 1 HOUR
+6 6 DURING THE PRECEDING 2 HOURS
+7 7 DURING THE PRECEDING 3 HOURS
+8 8 DURING THE PRECEDING 6 HOURS
+9 9 DURING A PERIOD OF MORE THAN 6 HOURS
+10 10 UNDETERMINED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/19101.table b/definitions/bufr/tables/0/wmo/25/codetables/19101.table
new file mode 100644
index 0000000..0cd1ff4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/19101.table
@@ -0,0 +1,10 @@
+0 0 RESERVED
+1 1 EYE VISIBLE ON RADAR SCOPE, ACCURACY GOOD (WITHIN 10 KM)
+2 2 EYE VISIBLE ON RADAR SCOPE, ACCURACY FAIR (WITHIN 30 KM)
+3 3 EYE VISIBLE ON RADAR SCOPE, ACCURACY POOR (WITHIN 50 KM)
+4 4 POSITION OF THE CENTRE WITHIN THE AREA COVERED BY THE RADAR SCOPE, DETERMINATION BY MEANS OF THE SPIRAL-BAND OVERLAY, ACCURACY GOOD (WITHIN 10 KM)
+5 5 POSITION OF THE CENTRE WITHIN THE AREA COVERED BY THE RADAR SCOPE, DETERMINATION BY MEANS OF THE SPIRAL-BAND OVERLAY, ACCURACY FAIR (WITHIN 30 KM)
+6 6 POSITION OF THE CENTRE WITHIN THE AREA COVERED BY THE RADAR SCOPE, DETERMINATION BY MEANS OF THE SPIRAL-BAND OVERLAY, ACCURACY POOR (WITHIN 50 KM)
+7 7 POSITION OF THE CENTRE OUTSIDE THE AREA COVERED BY THE RADAR SCOPE, EXTRAPOLATION BY MEANS OF THE SPIRAL-BAND OVERLAY
+10 10 ACCURACY UNDETERMINED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/19102.table b/definitions/bufr/tables/0/wmo/25/codetables/19102.table
new file mode 100644
index 0000000..21ab775
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/19102.table
@@ -0,0 +1,8 @@
+0 0 CIRCULAR
+1 1 ELLIPTICAL - THE MINOR AXIS IS AT LEAST 3/4 THE LENGTH OF THE MAJOR AXIS
+2 2 ELLIPTICAL - THE MINOR AXIS IS LESS THAN 3/4 THE LENGTH OF THE MAJOR AXIS
+3 3 APPARENT DOUBLE EYE
+4 4 OTHER SHAPE
+5 5 ILL DEFINED
+6 6 UNDETERMINED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/19103.table b/definitions/bufr/tables/0/wmo/25/codetables/19103.table
new file mode 100644
index 0000000..3abb184
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/19103.table
@@ -0,0 +1,12 @@
+0 0 LESS THAN 5 KM
+1 1 5 TO LESS THAN 10 KM
+2 2 10 TO LESS THAN 15 KM
+3 3 15 TO LESS THAN 20 KM
+4 4 20 TO LESS THAN 25 KM
+5 5 25 TO LESS THAN 30 KM
+6 6 30 TO LESS THAN 35 KM
+7 7 35 TO LESS THAN 40 KM
+8 8 40 TO LESS THAN 50 KM
+9 9 50 KM AND GREATER
+10 10 UNDETERMINED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/19104.table b/definitions/bufr/tables/0/wmo/25/codetables/19104.table
new file mode 100644
index 0000000..67ae474
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/19104.table
@@ -0,0 +1,12 @@
+0 0 EYE HAS FIRST BECOME VISIBLE DURING THE PAST 30 MINUTES
+1 1 NO SIGNIFICANT CHANGE IN THE CHARACTERISTICS OR SIZE OF THE EYE
+2 2 EYE HAS BECOME SMALLER WITH NO OTHER SIGNIFICANT CHANGE IN CHARACTERISTICS
+3 3 EYE HAS BECOME LARGER WITH NO OTHER SIGNIFICANT CHANGE IN CHARACTERISTICS
+4 4 EYE HAS BECOME LESS DISTINCT WITH NO SIGNIFICANT CHANGE IN SIZE
+5 5 EYE HAS BECOME LESS DISTINCT AND DECREASED IN SIZE
+6 6 EYE HAS BECOME LESS DISTINCT AND INCREASED IN SIZE
+7 7 EYE HAS BECOME MORE DISTINCT WITH NO SIGNIFICANT CHANGE IN SIZE
+8 8 EYE HAS BECOME MORE DISTINCT AND DECREASED IN SIZE
+9 9 EYE HAS BECOME MORE DISTINCT AND INCREASED IN SIZE
+10 10 CHANGE IN CHARACTER AND SIZE OF EYE CANNOT BE DETERMINED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/19105.table b/definitions/bufr/tables/0/wmo/25/codetables/19105.table
new file mode 100644
index 0000000..becfcee
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/19105.table
@@ -0,0 +1,10 @@
+0 0 0 TO LESS THAN 100 KM
+1 1 100 TO LESS THAN 200 KM
+2 2 200 TO LESS THAN 300 KM
+3 3 300 TO LESS THAN 400 KM
+4 4 400 TO LESS THAN 500 KM
+5 5 500 TO LESS THAN 600 KM
+6 6 600 TO LESS THAN 800 KM
+7 7 800 KM OR MORE
+10 10 DOUBTFUL OR UNDETERMINED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/19107.table b/definitions/bufr/tables/0/wmo/25/codetables/19107.table
new file mode 100644
index 0000000..ed6b79c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/19107.table
@@ -0,0 +1,11 @@
+0 0 LESS THAN 1 HOUR
+1 1 1 TO LESS THAN 2 HOURS
+2 2 2 TO LESS THAN 3 HOURS
+3 3 3 TO LESS THAN 6 HOURS
+4 4 6 TO LESS THAN 9 HOURS
+5 5 9 TO LESS THAN 12 HOURS
+6 6 12 TO LESS THAN 15 HOURS
+7 7 15 TO LESS THAN 18 HOURS
+8 8 18 TO LESS THAN 21 HOURS
+9 9 21 TO LESS THAN 30 HOURS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/19108.table b/definitions/bufr/tables/0/wmo/25/codetables/19108.table
new file mode 100644
index 0000000..9350bc2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/19108.table
@@ -0,0 +1,8 @@
+0 0 CYCLONE CENTRE WITHIN 10 KM OF THE TRANSMITTED POSITION
+1 1 CYCLONE CENTRE WITHIN 20 KM OF THE TRANSMITTED POSITION
+2 2 CYCLONE CENTRE WITHIN 50 KM OF THE TRANSMITTED POSITION
+3 3 CYCLONE CENTRE WITHIN 100 KM OF THE TRANSMITTED POSITION
+4 4 CYCLONE CENTRE WITHIN 200 KM OF THE TRANSMITTED POSITION
+5 5 CYCLONE CENTRE WITHIN 300 KM OF THE TRANSMITTED POSITION
+6 6 CYCLONE CENTRE UNDETERMINED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/19109.table b/definitions/bufr/tables/0/wmo/25/codetables/19109.table
new file mode 100644
index 0000000..e3c9c05
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/19109.table
@@ -0,0 +1,12 @@
+0 0 LESS THAN 1° OF LATITUDE
+1 1 1° TO LESS THAN 2° OF LATITUDE
+2 2 2° TO LESS THAN 3° OF LATITUDE
+3 3 3° TO LESS THAN 4° OF LATITUDE
+4 4 4° TO LESS THAN 5° OF LATITUDE
+5 5 5° TO LESS THAN 6° OF LATITUDE
+6 6 6° TO LESS THAN 7° OF LATITUDE
+7 7 7° TO LESS THAN 8° OF LATITUDE
+8 8 8° TO LESS THAN 9° OF LATITUDE
+9 9 9° OF LATITUDE OR MORE
+10 10 UNDETERMINED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/19110.table b/definitions/bufr/tables/0/wmo/25/codetables/19110.table
new file mode 100644
index 0000000..81f4f59
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/19110.table
@@ -0,0 +1,8 @@
+0 0 MUCH WEAKENING
+1 1 WEAKENING
+2 2 NO CHANGE
+3 3 INTENSIFICATION
+4 4 STRONG INTENSIFICATION
+9 9 NOT OBSERVED PREVIOUSLY
+10 10 UNDETERMINED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/19113.table b/definitions/bufr/tables/0/wmo/25/codetables/19113.table
new file mode 100644
index 0000000..ba46dca
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/19113.table
@@ -0,0 +1,8 @@
+1 1 CURVED BAND
+2 2 SHEAR
+3 3 EYE
+4 4 BANDING EYE
+5 5 CENTRAL DENSE OVERCAST (CDO)
+6 6 EMBEDDED CENTRE
+7 7 CENTRE COLD COVER (CCC)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/19117.table b/definitions/bufr/tables/0/wmo/25/codetables/19117.table
new file mode 100644
index 0000000..b623197
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/19117.table
@@ -0,0 +1,4 @@
+1 1 A (CURVED BAND)
+2 2 B (CDO)
+3 3 C (SHEAR)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/19119.table b/definitions/bufr/tables/0/wmo/25/codetables/19119.table
new file mode 100644
index 0000000..8329a8a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/19119.table
@@ -0,0 +1,4 @@
+1 1 DT-NUMBER
+2 2 PT-NUMBER
+3 3 MET-NUMBER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20003.table b/definitions/bufr/tables/0/wmo/25/codetables/20003.table
new file mode 100644
index 0000000..0ebc7c7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20003.table
@@ -0,0 +1,266 @@
+0 0 CLOUD DEVELOPMENT NOT OBSERVED OR NOT OBSERVABLE
+1 1 CLOUDS GENERALLY DISSOLVING OR BECOMING LESS DEVELOPED
+2 2 STATE OF SKY ON THE WHOLE UNCHANGED
+3 3 CLOUDS GENERALLY FORMING OR DEVELOPING
+4 4 VISIBILITY REDUCED BY SMOKE, E.G. VELDT OR FOREST FIRES, INDUSTRIAL SMOKE OR VOLCANIC ASHES
+5 5 HAZE
+6 6 WIDESPREAD DUST IN SUSPENSION IN THE AIR, NOT RAISED BY WIND AT OR NEAR THE STATION AT THE TIME OF OBSERVATION
+7 7 DUST OR SAND RAISED BY WIND AT OR NEAR THE STATION AT THE TIME OF OBSERVATION, BUT NO WELL-DEVELOPED DUST WHIRL(S) OR SAND WHIRL(S), AND NO DUSTSTORM OR SANDSTORM SEEN; OR, IN THE CASE OF SEA STATIONS AND COASTAL STATIONS, BLOWING SPRAY AT THE STATION
+8 8 WELL-DEVELOPED DUST WHIRL(S) OR SAND WHIRL(S) SEEN AT OR NEAR THE STATION DURING THE PRECEDING HOUR OR AT THE SAME TIME OF OBSERVATION, BUT NO DUSTSTORM OR SANDSTORM
+9 9 DUSTSTORM OR SANDSTORM WITHIN SIGHT AT THE TIME OF OBSERVATION, OR AT THE STATION DURING THE PRECEDING HOUR
+10 10 MIST
+11 11 PATCHES
+12 12 MORE OR LESS CONTINUOUS
+13 13 LIGHTNING VISIBLE, NO THUNDER HEARD
+14 14 PRECIPITATION WITHIN SIGHT, NOT REACHING THE GROUND OR THE SURFACE OF THE SEA
+15 15 PRECIPITATION WITHIN SIGHT, REACHING THE GROUND OR THE SURFACE OF THE SEA, BUT DISTANT, I.E. ESTIMATED TO BE MORE THAN 5 KM FROM THE STATION
+16 16 PRECIPITATION WITHIN SIGHT, REACHING THE GROUND OR THE SURFACE OF THE SEA, NEAR TO, BUT NOT AT THE STATION
+17 17 THUNDERSTORM, BUT NO PRECIPITATION AT THE TIME OF OBSERVATION
+18 18 SQUALLS
+19 19 FUNNEL CLOUD(S)
+20 20 DRIZZLE (NOT FREEZING) OR SNOW GRAINS
+21 21 RAIN (NOT FREEZING)
+22 22 SNOW
+23 23 RAIN AND SNOW OR ICE PELLETS
+24 24 FREEZING DRIZZLE OR FREEZING RAIN
+25 25 SHOWER(S) OF RAIN
+26 26 SHOWER(S) OF SNOW, OR OF RAIN AND SNOW
+27 27 SHOWER(S) OF HAIL*, OR OF RAIN AND HAIL*
+28 28 FOG OR ICE FOG
+29 29 THUNDERSTORM (WITH OR WITHOUT PRECIPITATION)
+30 30 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM
+31 31 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM
+32 32 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM
+33 33 SEVERE DUSTSTORM OR SANDSTORM
+34 34 SEVERE DUSTSTORM OR SANDSTORM
+35 35 SEVERE DUSTSTORM OR SANDSTORM
+36 36 SLIGHT OR MODERATE DRIFTING SNOW
+37 37 HEAVY DRIFTING SNOW
+38 38 SLIGHT OR MODERATE BLOWING SNOW
+39 39 HEAVY BLOWING SNOW
+40 40 FOG OR ICE FOG AT A DISTANCE AT THE TIME OF OBSERVATION, BUT NOT AT THE STATION DURING THE PRECEDING HOUR, THE FOG OR ICE FOG EXTENDING TO A LEVEL ABOVE THAT OF THE OBSERVER
+41 41 FOG OR ICE FOG IN PATCHES
+42 42 FOG OR ICE FOG, SKY VISIBLE
+43 43 FOG OR ICE FOG, SKY INVISIBLE
+44 44 FOG OR ICE FOG, SKY VISIBLE
+45 45 FOG OR ICE FOG, SKY INVISIBLE
+46 46 FOG OR ICE FOG, SKY VISIBLE
+47 47 FOG OR ICE FOG, SKY INVISIBLE
+48 48 FOG, DEPOSITING RIME, SKY VISIBLE
+49 49 FOG, DEPOSITING RIME, SKY INVISIBLE
+50 50 DRIZZLE, NOT FREEZING, INTERMITTENT
+51 51 DRIZZLE, NOT FREEZING, CONTINUOUS
+52 52 DRIZZLE, NOT FREEZING, INTERMITTENT
+53 53 DRIZZLE, NOT FREEZING, CONTINUOUS
+54 54 DRIZZLE, NOT FREEZING, INTERMITTENT
+55 55 DRIZZLE, NOT FREEZING, CONTINUOUS
+56 56 DRIZZLE, FREEZING, SLIGHT
+57 57 DRIZZLE, FREEZING, MODERATE OR HEAVY (DENSE)
+58 58 DRIZZLE AND RAIN, SLIGHT
+59 59 DRIZZLE AND RAIN, MODERATE OR HEAVY
+60 60 RAIN, NOT FREEZING, INTERMITTENT
+61 61 RAIN, NOT FREEZING, CONTINUOUS
+62 62 RAIN, NOT FREEZING, INTERMITTENT
+63 63 RAIN, NOT FREEZING, CONTINUOUS
+64 64 RAIN, NOT FREEZING, INTERMITTENT
+65 65 RAIN, NOT FREEZING, CONTINUOUS
+66 66 RAIN, FREEZING, SLIGHT
+67 67 RAIN, FREEZING, MODERATE OR HEAVY
+68 68 RAIN OR DRIZZLE AND SNOW, SLIGHT
+69 69 RAIN OR DRIZZLE AND SNOW, MODERATE OR HEAVY
+70 70 INTERMITTENT FALL OF SNOWFLAKES
+71 71 CONTINUOUS FALL OF SNOWFLAKES
+72 72 INTERMITTENT FALL OF SNOWFLAKES
+73 73 CONTINUOUS FALL OF SNOWFLAKES
+74 74 INTERMITTENT FALL OF SNOWFLAKES
+75 75 CONTINUOUS FALL OF SNOWFLAKES
+76 76 DIAMOND DUST (WITH OR WITHOUT FOG)
+77 77 SNOW GRAINS (WITH OR WITHOUT FOG)
+78 78 ISOLATED STAR-LIKE SNOW CRYSTALS (WITH OR WITHOUT FOG)
+79 79 ICE PELLETS
+80 80 RAIN SHOWER(S), SLIGHT
+81 81 RAIN SHOWER(S), MODERATE OR HEAVY
+82 82 RAIN SHOWER(S), VIOLENT
+83 83 SHOWER(S) OF RAIN AND SNOW MIXED, SLIGHT
+84 84 SHOWER(S) OF RAIN AND SNOW MIXED, MODERATE OR HEAVY
+85 85 SNOW SHOWER(S), SLIGHT
+86 86 SNOW SHOWER(S), MODERATE OR HEAVY
+87 87 SHOWER(S) OF SNOW PELLETS OR SMALL HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIXED
+88 88 SHOWER(S) OF SNOW PELLETS OR SMALL HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIXED
+89 89 SHOWER(S) OF HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIXED, NOT ASSOCIATED WITH THUNDER
+90 90 SHOWER(S) OF HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIXED, NOT ASSOCIATED WITH THUNDER
+91 91 SLIGHT RAIN AT TIME OF OBSERVATION
+92 92 MODERATE OR HEAVY RAIN AT TIME OF OBSERVATION
+93 93 SLIGHT SNOW, OR RAIN AND SNOW MIXED OR HAIL* AT TIME OF OBSERVATION
+94 94 MODERATE OR HEAVY SNOW, OR RAIN AND SNOW MIXED OR HAIL* AT TIME OF OBSERVATION
+95 95 THUNDERSTORM, SLIGHT OR MODERATE, WITHOUT HAIL*, BUT WITH RAIN AND/OR SNOW AT TIME OF OBSERVATION
+96 96 THUNDERSTORM, SLIGHT OR MODERATE, WITH HAIL* AT TIME OF OBSERVATION
+97 97 THUNDERSTORM, HEAVY, WITHOUT HAIL*, BUT WITH RAIN AND/OR SNOW AT TIME OF OBSERVATION
+98 98 THUNDERSTORM COMBINED WITH DUSTSTORM OR SANDSTORM AT TIME OF OBSERVATION
+99 99 THUNDERSTORM, HEAVY, WITH HAIL* AT TIME OF OBSERVATION
+100 100 NO SIGNIFICANT WEATHER OBSERVED
+101 101 CLOUDS GENERALLY DISSOLVING OR BECOMING LESS DEVELOPED DURING THE PAST HOUR
+102 102 STATE OF SKY ON THE WHOLE UNCHANGED DURING THE PAST HOUR
+103 103 CLOUDS GENERALLY FORMING OR DEVELOPING DURING THE PAST HOUR
+104 104 HAZE OR SMOKE, OR DUST IN SUSPENSION IN THE AIR, VISIBILITY EQUAL TO, OR GREATER THAN, 1 KM
+105 105 HAZE OR SMOKE, OR DUST IN SUSPENSION IN THE AIR, VISIBILITY LESS THAN 1 KM
+110 110 MIST
+111 111 DIAMOND DUST
+112 112 DISTANT LIGHTNING
+118 118 SQUALLS
+119 119 RESERVED
+120 120 FOG
+121 121 PRECIPITATION
+122 122 DRIZZLE (NOT FREEZING) OR SNOW GRAINS
+123 123 RAIN (NOT FREEZING)
+124 124 SNOW
+125 125 FREEZING DRIZZLE OR FREEZING RAIN
+126 126 THUNDERSTORM (WITH OR WITHOUT PRECIPITATION)
+127 127 BLOWING OR DRIFTING SNOW OR SAND
+128 128 BLOWING OR DRIFTING SNOW OR SAND, VISIBILITY EQUAL TO, OR GREATER THAN, 1 KM
+129 129 BLOWING OR DRIFTING SNOW OR SAND, VISIBILITY LESS THAN 1 KM
+130 130 FOG
+131 131 FOG OR ICE FOG IN PATCHES
+132 132 FOG OR ICE FOG, HAS BECOME THINNER DURING THE PAST HOUR
+133 133 FOG OR ICE FOG, NO APPRECIABLE CHANGE DURING THE PAST HOUR
+134 134 FOG OR ICE FOG, HAS BEGUN OR BECOME THICKER DURING THE PAST HOUR
+135 135 FOG, DEPOSITING RIME
+140 140 PRECIPITATION
+141 141 PRECIPITATION, SLIGHT OR MODERATE
+142 142 PRECIPITATION, HEAVY
+143 143 LIQUID PRECIPITATION, SLIGHT OR MODERATE
+144 144 LIQUID PRECIPITATION, HEAVY
+145 145 SOLID PRECIPITATION, SLIGHT OR MODERATE
+146 146 SOLID PRECIPITATION, HEAVY
+147 147 FREEZING PRECIPITATION, SLIGHT OR MODERATE
+148 148 FREEZING PRECIPITATION, HEAVY
+149 149 RESERVED
+150 150 DRIZZLE
+151 151 DRIZZLE, NOT FREEZING, SLIGHT
+152 152 DRIZZLE, NOT FREEZING, MODERATE
+153 153 DRIZZLE, NOT FREEZING, HEAVY
+154 154 DRIZZLE, FREEZING, SLIGHT
+155 155 DRIZZLE, FREEZING, MODERATE
+156 156 DRIZZLE, FREEZING, HEAVY
+157 157 DRIZZLE AND RAIN, SLIGHT
+158 158 DRIZZLE AND RAIN, MODERATE OR HEAVY
+159 159 RESERVED
+160 160 RAIN
+161 161 RAIN, NOT FREEZING, SLIGHT
+162 162 RAIN, NOT FREEZING, MODERATE
+163 163 RAIN, NOT FREEZING, HEAVY
+164 164 RAIN, FREEZING, SLIGHT
+165 165 RAIN, FREEZING, MODERATE
+166 166 RAIN, FREEZING, HEAVY
+167 167 RAIN (OR DRIZZLE) AND SNOW, SLIGHT
+168 168 RAIN (OR DRIZZLE) AND SNOW, MODERATE OR HEAVY
+169 169 RESERVED
+170 170 SNOW
+171 171 SNOW, SLIGHT
+172 172 SNOW, MODERATE
+173 173 SNOW, HEAVY
+174 174 ICE PELLETS, SLIGHT
+175 175 ICE PELLETS, MODERATE
+176 176 ICE PELLETS, HEAVY
+177 177 SNOW GRAINS
+178 178 ICE CRYSTALS
+179 179 RESERVED
+180 180 SHOWER(S) OR INTERMITTENT PRECIPITATION
+181 181 RAIN SHOWER(S) OR INTERMITTENT RAIN, SLIGHT
+182 182 RAIN SHOWER(S) OR INTERMITTENT RAIN, MODERATE
+183 183 RAIN SHOWER(S) OR INTERMITTENT RAIN, HEAVY
+184 184 RAIN SHOWER(S) OR INTERMITTENT RAIN, VIOLENT
+185 185 SNOW SHOWER(S) OR INTERMITTENT SNOW, SLIGHT
+186 186 SNOW SHOWER(S) OR INTERMITTENT SNOW, MODERATE
+187 187 SNOW SHOWER(S) OR INTERMITTENT SNOW, HEAVY
+188 188 RESERVED
+189 189 HAIL
+190 190 THUNDERSTORM
+191 191 THUNDERSTORM, SLIGHT OR MODERATE, WITH NO PRECIPITATION
+192 192 THUNDERSTORM, SLIGHT OR MODERATE, WITH RAIN SHOWERS AND/OR SNOW SHOWERS
+193 193 THUNDERSTORM, SLIGHT OR MODERATE, WITH HAIL
+194 194 THUNDERSTORM, HEAVY, WITH NO PRECIPITATION
+195 195 THUNDERSTORM, HEAVY, WITH RAIN SHOWERS AND/OR SNOW SHOWERS
+196 196 THUNDERSTORM, HEAVY, WITH HAIL
+199 199 TORNADO
+204 204 VOLCANIC ASH SUSPENDED IN THE AIR ALOFT
+205 205 NOT USED
+206 206 THICK DUST HAZE, VISIBILITY LESS THAN 1 KM
+207 207 BLOWING SPRAY AT THE STATION
+208 208 DRIFTING DUST (SAND)
+209 209 WALL OF DUST OR SAND IN DISTANCE (LIKE HABOOB)
+210 210 SNOW HAZE
+211 211 WHITEOUT
+212 212 NOT USED
+213 213 LIGHTNING, CLOUD TO SURFACE
+217 217 DRY THUNDERSTORM
+218 218 NOT USED
+219 219 TORNADO CLOUD (DESTRUCTIVE) AT OR WITHIN SIGHT OF THE STATION DURING PRECEDING HOUR OR AT THE TIME OF OBSERVATION
+220 220 DEPOSITION OF VOLCANIC ASH
+221 221 DEPOSITION OF DUST OR SAND
+222 222 DEPOSITION OF DEW
+223 223 DEPOSITION OF WET SNOW
+224 224 DEPOSITION OF SOFT RIME
+225 225 DEPOSITION OF HARD RIME
+226 226 DEPOSITION OF HOAR FROST
+227 227 DEPOSITION OF GLAZE
+228 228 DEPOSITION OF ICE CRUST (ICE SLICK)
+229 229 NOT USED
+230 230 DUSTSTORM OR SANDSTORM WITH TEMPERATURE BELOW 0 °C
+239 239 BLOWING SNOW, IMPOSSIBLE TO DETERMINE WHETHER SNOW IS FALLING OR NOT
+240 240 NOT USED
+241 241 FOG ON SEA
+242 242 FOG IN VALLEYS
+243 243 ARCTIC OR ANTARCTIC SEA SMOKE
+244 244 STEAM FOG (SEA, LAKE OR RIVER)
+245 245 STEAM LOG (LAND)
+246 246 FOG OVER ICE OR SNOW COVER
+247 247 DENSE FOG, VISIBILITY 60-90 M
+248 248 DENSE FOG, VISIBILITY 30-60 M
+249 249 DENSE FOG, VISIBILITY LESS THAN 30 M
+250 250 DRIZZLE, RATE OF FALL - LESS THAN 0.10 MM H-1
+251 251 DRIZZLE, RATE OF FALL - 0.10-0.19 MM H-1
+252 252 DRIZZLE, RATE OF FALL - 0.20-0.39 MM H-1
+253 253 DRIZZLE, RATE OF FALL - 0.40-0.79 MM H-1
+254 254 DRIZZLE, RATE OF FALL - 0.80-1.59 MM H-1
+255 255 DRIZZLE, RATE OF FALL - 1.60-3.19 MM H-1
+256 256 DRIZZLE, RATE OF FALL - 3.20-6.39 MM H-1
+257 257 DRIZZLE, RATE OF FALL - 6.4 MM H-1 OR MORE
+258 258 NOT USED
+259 259 DRIZZLE AND SNOW
+260 260 RAIN, RATE OF FALL - LESS THAN 1.0 MM H-1
+261 261 RAIN, RATE OF FALL - 1.0-1.9 MM H-1
+262 262 RAIN, RATE OF FALL - 2.0-3.9 MM H-1
+263 263 RAIN, RATE OF FALL - 4.0-7.9 MM H-1
+264 264 RAIN, RATE OF FALL - 8.0-15.9 MM H-1
+265 265 RAIN, RATE OF FALL - 16.0-31.9 MM H-1
+266 266 RAIN, RATE OF FALL - 32.0-63.9 MM H-1
+267 267 RAIN, RATE OF FALL - 64.0 MM H-1 OR MORE
+270 270 SNOW, RATE OF FALL - LESS THAN 1.0 CM H-1
+271 271 SNOW, RATE OF FALL - 1.0-1.9 CM H-1
+272 272 SNOW, RATE OF FALL - 2.0-3.9 CM H-1
+273 273 SNOW, RATE OF FALL - 4.0-7.9 CM H-1
+274 274 SNOW, RATE OF FALL - 8.0-15.9 CM H-1
+275 275 SNOW, RATE OF FALL - 16.0-31.9 CM H-1
+276 276 SNOW, RATE OF FALL - 32.0-63.9 CM H-1
+277 277 SNOW, RATE OF FALL - 64.0 CM H-1 OR MORE
+278 278 SNOW OR ICE CRYSTAL PRECIPITATION FROM A CLEAR SKY
+279 279 WET SNOW, FREEZING ON CONTACT
+280 280 PRECIPITATION OF RAIN
+281 281 PRECIPITATION OF RAIN, FREEZING
+282 282 PRECIPITATION OF RAIN AND SNOW MIXED
+283 283 PRECIPITATION OF SNOW
+284 284 PRECIPITATION OF SNOW PELLETS OR SMALL HALL
+285 285 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH RAIN
+286 286 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH RAIN AND SNOW MIXED
+287 287 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH SNOW
+288 288 PRECIPITATION OF HAIL
+289 289 PRECIPITATION OF HAIL, WITH RAIN
+290 290 PRECIPITATION OF HALL, WITH RAIN AND SNOW MIXED
+291 291 PRECIPITATION OF HAIL, WITH SNOW
+292 292 SHOWER(S) OR THUNDERSTORM OVER SEA
+293 293 SHOWER(S) OR THUNDERSTORM OVER MOUNTAINS
+508 508 NO SIGNIFICANT PHENOMENON TO REPORT, PRESENT AND PAST WEATHER OMITTED
+509 509 NO OBSERVATION, DATA NOT AVAILABLE, PRESENT AND PAST WEATHER OMITTED
+510 510 PRESENT AND PAST WEATHER MISSING, BUT EXPECTED
+511 511 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20004.table b/definitions/bufr/tables/0/wmo/25/codetables/20004.table
new file mode 100644
index 0000000..6d6e7da
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20004.table
@@ -0,0 +1,21 @@
+0 0 CLOUD COVERING 1/2 OR LESS OF THE SKY THROUGHOUT THE APPROPRIATE PERIOD
+1 1 CLOUD COVERING MORE THAN 1/2 OF THE SKY DURING PART OF THE APPROPRIATE PERIOD AND COVERING 1/2 OR LESS DURING PART OF THE PERIOD
+2 2 CLOUD COVERING MORE THAN 1/2 OF THE SKY THROUGHOUT THE APPROPRIATE PERIOD
+3 3 SANDSTORM, DUSTSTORM OR BLOWING SNOW
+4 4 FOG OR ICE FOG OR THICK HAZE
+5 5 DRIZZLE
+6 6 RAIN
+7 7 SNOW, OR RAIN AND SNOW MIXED
+8 8 SHOWER(S)
+9 9 THUNDERSTORM(S) WITH OR WITHOUT PRECIPITATION
+10 10 NO SIGNIFICANT WEATHER OBSERVED
+11 11 VISIBILITY REDUCED (SEE NOTE)
+12 12 BLOWING PHENOMENA, VISIBILITY REDUCED
+13 13 FOG (SEE NOTE)
+14 14 PRECIPITATION (SEE NOTE)
+15 15 DRIZZLE
+16 16 RAIN
+17 17 SNOW OR ICE PELLETS
+18 18 SHOWERS OR INTERMITTENT PRECIPITATION
+19 19 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20005.table b/definitions/bufr/tables/0/wmo/25/codetables/20005.table
new file mode 100644
index 0000000..6d6e7da
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20005.table
@@ -0,0 +1,21 @@
+0 0 CLOUD COVERING 1/2 OR LESS OF THE SKY THROUGHOUT THE APPROPRIATE PERIOD
+1 1 CLOUD COVERING MORE THAN 1/2 OF THE SKY DURING PART OF THE APPROPRIATE PERIOD AND COVERING 1/2 OR LESS DURING PART OF THE PERIOD
+2 2 CLOUD COVERING MORE THAN 1/2 OF THE SKY THROUGHOUT THE APPROPRIATE PERIOD
+3 3 SANDSTORM, DUSTSTORM OR BLOWING SNOW
+4 4 FOG OR ICE FOG OR THICK HAZE
+5 5 DRIZZLE
+6 6 RAIN
+7 7 SNOW, OR RAIN AND SNOW MIXED
+8 8 SHOWER(S)
+9 9 THUNDERSTORM(S) WITH OR WITHOUT PRECIPITATION
+10 10 NO SIGNIFICANT WEATHER OBSERVED
+11 11 VISIBILITY REDUCED (SEE NOTE)
+12 12 BLOWING PHENOMENA, VISIBILITY REDUCED
+13 13 FOG (SEE NOTE)
+14 14 PRECIPITATION (SEE NOTE)
+15 15 DRIZZLE
+16 16 RAIN
+17 17 SNOW OR ICE PELLETS
+18 18 SHOWERS OR INTERMITTENT PRECIPITATION
+19 19 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20006.table b/definitions/bufr/tables/0/wmo/25/codetables/20006.table
new file mode 100644
index 0000000..a250af9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20006.table
@@ -0,0 +1,5 @@
+0 0 LOW INSTRUMENT FLIGHT RULES - CEILING < 500 FEET AND/OR VISIBILITY < 1 MILE
+1 1 INSTRUMENT FLIGHT RULES - CEILING < 1000 FEET AND/OR VISIBILITY < 3 MILES
+2 2 MARGINAL VISUAL FLIGHT RULES - 1000 FEET <= CEILING < 3000 FEET AND/OR 3 MILES <= VISIBILITY < 5 MILES
+3 3 VISUAL FLIGHT RULES - CEILING => 3000 FEET AND/OR VISIBILITY => 5 MILES
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20008.table b/definitions/bufr/tables/0/wmo/25/codetables/20008.table
new file mode 100644
index 0000000..966bcc2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20008.table
@@ -0,0 +1,19 @@
+0 0 SKY CLEAR
+1 1 FEW
+2 2 SCATTERED
+3 3 BROKEN
+4 4 OVERCAST
+5 5 RESERVED
+6 6 SCATTERED/BROKEN
+7 7 BROKEN/OVERCAST
+8 8 ISOLATED
+9 9 ISOLATED EMBEDDED
+10 10 OCCASIONAL
+11 11 OCCASIONAL EMBEDDED
+12 12 FREQUENT
+13 13 DENSE
+14 14 LAYERS
+15 15 OBSCURED (OBSC)
+16 16 EMBEDDED (EMBD)
+17 17 FREQUENT EMBEDDED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20009.table b/definitions/bufr/tables/0/wmo/25/codetables/20009.table
new file mode 100644
index 0000000..f0119eb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20009.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 NSC NIL SIGNIFICANT CLOUD
+2 2 CAVOK
+3 3 SKC SKY CLEAR
+4 4 NSW NIL SIGNIFICANT WEATHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2001.table b/definitions/bufr/tables/0/wmo/25/codetables/2001.table
new file mode 100644
index 0000000..470fccc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2001.table
@@ -0,0 +1,4 @@
+0 0 AUTOMATIC
+1 1 MANNED
+2 2 HYBRID: BOTH MANNED AND AUTOMATIC
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20011.table b/definitions/bufr/tables/0/wmo/25/codetables/20011.table
new file mode 100644
index 0000000..06c6e10
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20011.table
@@ -0,0 +1,16 @@
+0 0 0
+1 1 1 OKTA OR LESS, BUT NOT ZERO
+2 2 2 OKTAS
+3 3 3 OKTAS
+4 4 4 OKTAS
+5 5 5 OKTAS
+6 6 6 OKTAS
+7 7 7 OKTAS OR MORE, BUT NOT 8 OKTAS
+8 8 8 OKTAS
+9 9 SKY OBSCURED BY FOG AND/OR OTHER METEOROLOGICAL PHENOMENA
+10 10 SKY PARTIALLY OBSCURED BY FOG AND/OR OTHER METEOROLOGICAL PHENOMENA
+11 11 SCATTERED
+12 12 BROKEN
+13 13 FEW
+14 14 RESERVED
+15 15 CLOUD COVER IS INDISCERNIBLE FOR REASONS OTHER THAN FOG OR OTHER METEOROLOGICAL PHENOMENA, OR OBSERVATION IS NOT MADE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20012.table b/definitions/bufr/tables/0/wmo/25/codetables/20012.table
new file mode 100644
index 0000000..99bdc17
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20012.table
@@ -0,0 +1,48 @@
+0 0 CIRRUS (CI)
+1 1 CIRROCUMULUS (CC)
+2 2 CIRROSTRATUS (CS)
+3 3 ALTOCUMULUS (AC)
+4 4 ALTOSTRATUS (AS)
+5 5 NIMBOSTRATUS (NS)
+6 6 STRATOCUMULUS (SC)
+7 7 STRATUS (ST)
+8 8 CUMULUS (CU)
+9 9 CUMULONIMBUS (CB)
+10 10 NO CH CLOUDS
+11 11 CIRRUS FIBRATUS, SOMETIMES UNCINUS, NOT PROGRESSIVELY INVADING THE SKY
+12 12 CIRRUS SPISSATUS, IN PATCHES OR ENTANGLED SHEAVES, WHICH USUALLY DO NOT INCREASE AND SOMETIMES SEEM TO BE THE REMAINS OF THE UPPER PART OF A CUMULONIMBUS; OR CIRRUS CASTELLANUS OR FLOCCUS
+13 13 CIRRUS SPISSATUS CUMULONIMBOGENITUS
+14 14 CIRRUS UNCINUS OR FIBRATUS, OR BOTH, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN AS A WHOLE
+15 15 CIRRUS (OFTEN IN BANDS) AND CIRROSTRATUS, OR CIRROSTRATUS ALONE, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN AS A WHOLE, BUT THE CONTINUOUS VEIL DOES NOT REACH 45 DEGREES ABOVE THE HORIZON
+16 16 CIRRUS (OFTEN IN BANDS) AND CIRROSTRATUS, OR CIRROSTRATUS ALONE, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN AS A WHOLE; THE CONTINUOUS VEIL EXTENDS MORE THAN 45 DEGREES ABOVE THE HORIZON, WITHOUT THE SKY BEING TOTALLY COVERED
+17 17 CIRROSTRATUS COVERING THE WHOLE SKY
+18 18 CIRROSTRATUS NOT PROGRESSIVELY INVADING THE SKY AND NOT ENTIRELY COVERING IT
+19 19 CIRROCUMULUS ALONE, OR CIRROCUMULUS PREDOMINANT AMONG THE CH CLOUDS
+20 20 NO CM CLOUDS
+21 21 ALTOSTRATUS TRANSLUCIDUS
+22 22 ALTOSTRATUS OPACUS OR NIMBOSTRATUS
+23 23 ALTOCUMULUS TRANSLUCIDUS AT A SINGLE LEVEL
+24 24 PATCHES (OFTEN LENTICULAR) OF ALTOCUMULUS TRANSLUCIDUS, CONTINUALLY CHANGING AND OCCURRING AT ONE OR MORE LEVELS
+25 25 ALTOCUMULUS TRANSLUCIDUS IN BANDS, OR ONE OR MORE LAYERS OF ALTOCUMULUS TRANSLUCIDUS OR OPACUS, PROGRESSIVELY INVADING THE SKY; THESE ALTOCUMULUS CLOUDS GENERALLY THICKEN AS A WHOLE
+26 26 ALTOCUMULUS CUMULOGENITUS (OR CUMULONIMBOGENITUS)
+27 27 ALTOCUMULUS TRANSLUCIDUS OR OPACUS IN TWO OR MORE LAYERS, OR ALTOCUMULUS OPACUS IN A SINGLE LAYER, NOT PROGRESSIVELY INVADING THE SKY, OR ALTOCUMULUS WITH ALTOSTRATUS OR NIMBOSTRATUS
+28 28 ALTOCUMULUS CASTELLANUS OR FLOCCUS
+29 29 ALTOCUMULUS OF A CHAOTIC SKY, GENERALLY AT SEVERAL LEVELS
+30 30 NO CL CLOUDS
+31 31 CUMULUS HUMILIS OR CUMULUS FRACTUS OTHER THAN OF BAD WEATHER,* OR BOTH
+32 32 CUMULUS MEDIOCRIS OR CONGESTUS, TOWERING CUMULUS (TCU), WITH OR WITHOUT CUMULUS OF SPECIES FRACTUS OR HUMILIS OR STRATOCUMULUS, ALL HAVING THEIR BASES AT THE SAME LEVEL
+33 33 CUMULONIMBUS CALVUS, WITH OR WITHOUT CUMULUS, STRATOCUMULUS OR STRATUS
+34 34 STRATOCUMULUS CUMULOGENITUS
+35 35 STRATOCUMULUS OTHER THAN STRATOCUMULUS CUMULOGENITUS
+36 36 STRATUS NEBULOSUS OR STRATUS FRACTUS OTHER THAN OF BAD WEATHER,* OR BOTH
+37 37 STRATUS FRACTUS OR CUMULUS FRACTUS OF BAD WEATHER,* OR BOTH (PANNUS), USUALLY BELOW ALTOSTRATUS OR NIMBOSTRATUS
+38 38 CUMULUS AND STRATOCUMULUS OTHER THAN STRATOCUMULUS CUMULOGENITUS, WITH BASES AT DIFFERENT LEVELS
+39 39 CUMULONIMBUS CAPILLATUS (OFTEN WITH AN ANVIL), WITH OR WITHOUT CUMULONIMBUS CALVUS, CUMULUS, STRATOCUMULUS, STRATUS OR PANNUS
+40 40 CH
+41 41 CM
+42 42 CL
+59 59 CLOUD NOT VISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDSTORM, OR OTHER ANALOGOUS PHENOMENA
+60 60 CH CLOUDS INVISIBLE OWING TO DARKNESS, FOG, BLOWING DUST OR SAND, OR OTHER SIMILAR PHENOMENA, OR BECAUSE OF A CONTINUOUS LAYER OF LOWER CLOUDS
+61 61 CM CLOUDS INVISIBLE OWING TO DARKNESS, FOG, BLOWING DUST OR SAND, OR OTHER SIMILAR PHENOMENA, OR BECAUSE OF CONTINUOUS LAYER OF LOWER CLOUDS
+62 62 CL CLOUDS INVISIBLE OWING TO DARKNESS, FOG, BLOWING DUST OR SAND, OR OTHER SIMILAR PHENOMENA
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20017.table b/definitions/bufr/tables/0/wmo/25/codetables/20017.table
new file mode 100644
index 0000000..5ec10bd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20017.table
@@ -0,0 +1,11 @@
+0 0 ISOLATED CLOUD FRAGMENTS OF CLOUDS
+1 1 CONTINUOUS CLOUD
+2 2 BROKEN CLOUD - SMALL BREAKS
+3 3 BROKEN CLOUD - LARGE BREAKS
+4 4 CONTINUOUS CLOUD
+5 5 BROKEN CLOUD - SMALL BREAKS
+6 6 BROKEN CLOUD - LARGE BREAKS
+7 7 CONTINUOUS OR ALMOST CONTINUOUS WAVES WITH TOWERING CLOUDS ABOVE THE TOP OF THE LAYER
+8 8 GROUPS OF WAVES WITH TOWERING CLOUDS ABOVE THE TOP OF THE LAYER
+9 9 TWO OR MORE LAYERS AT DIFFERENT LEVELS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20018.table b/definitions/bufr/tables/0/wmo/25/codetables/20018.table
new file mode 100644
index 0000000..c0ffc36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20018.table
@@ -0,0 +1,4 @@
+0 0 INCREASING (U)
+1 1 DECREASING (D)
+2 2 NO DISTINCT CHANGE (N)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2002.table b/definitions/bufr/tables/0/wmo/25/codetables/2002.table
new file mode 100644
index 0000000..a701e1e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2002.table
@@ -0,0 +1,3 @@
+1 1 CERTIFIED INSTRUMENTS
+2 2 ORIGINALLY MEASURED IN KNOTS
+3 3 ORIGINALLY MEASURED IN KM H-1
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20021.table b/definitions/bufr/tables/0/wmo/25/codetables/20021.table
new file mode 100644
index 0000000..747a759
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20021.table
@@ -0,0 +1,23 @@
+1 1 PRECIPITATION - UNKNOWN TYPE
+2 2 LIQUID PRECIPITATION NOT FREEZING
+3 3 LIQUID FREEZING PRECIPITATION
+4 4 DRIZZLE
+5 5 RAIN
+6 6 SOLID PRECIPITATION
+7 7 SNOW
+8 8 SNOW GRAINS
+9 9 SNOW PELLETS
+10 10 ICE PELLETS
+11 11 ICE CRYSTALS
+12 12 DIAMOND DUST
+13 13 SMALL HAIL
+14 14 HAIL
+15 15 GLAZE
+16 16 RIME
+17 17 SOFT RIME
+18 18 HARD RIME
+19 19 CLEAR ICE
+20 20 WET SNOW
+21 21 HOAR FROST
+22 22 DEW
+23 23 WHITE DEW
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20022.table b/definitions/bufr/tables/0/wmo/25/codetables/20022.table
new file mode 100644
index 0000000..a551aac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20022.table
@@ -0,0 +1,7 @@
+0 0 NO PRECIPITATION
+1 1 CONTINUOUS
+2 2 INTERMITTENT
+3 3 SHOWER
+4 4 NOT REACHING GROUND
+5 5 DEPOSITION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20023.table b/definitions/bufr/tables/0/wmo/25/codetables/20023.table
new file mode 100644
index 0000000..97670df
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20023.table
@@ -0,0 +1,14 @@
+1 1 DUST/SAND WHIRL
+2 2 SQUALLS
+3 3 SANDSTORM
+4 4 DUSTSTORM
+5 5 LIGHTNING - CLOUD TO SURFACE
+6 6 LIGHTNING - CLOUD TO CLOUD
+7 7 LIGHTNING - DISTANT
+8 8 THUNDERSTORM
+9 9 FUNNEL CLOUD NOT TOUCHING SURFACE
+10 10 FUNNEL CLOUD TOUCHING SURFACE
+11 11 SPRAY
+12 12 WATERSPOUT
+13 13 WIND SHEAR
+14 14 DUST DEVILS
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20024.table b/definitions/bufr/tables/0/wmo/25/codetables/20024.table
new file mode 100644
index 0000000..13aba87
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20024.table
@@ -0,0 +1,8 @@
+0 0 NO PHENOMENA
+1 1 LIGHT
+2 2 MODERATE
+3 3 HEAVY
+4 4 VIOLENT
+5 5 SEVERE
+6 6 VERY SEVERE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20025.table b/definitions/bufr/tables/0/wmo/25/codetables/20025.table
new file mode 100644
index 0000000..4d70e33
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20025.table
@@ -0,0 +1,13 @@
+1 1 FOG
+2 2 ICE FOG
+3 3 STEAM FOG
+7 7 MIST
+8 8 HAZE
+9 9 SMOKE
+10 10 VOLCANIC ASH
+11 11 DUST
+12 12 SAND
+13 13 SNOW
+14 14 CLOUD
+15 15 PRECIPITATION
+16 16 IMPOSSIBLE TO DETERMINE WHETHER SNOW IS FALLING OR NOT
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20026.table b/definitions/bufr/tables/0/wmo/25/codetables/20026.table
new file mode 100644
index 0000000..2852094
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20026.table
@@ -0,0 +1,16 @@
+0 0 NO CHANGE
+1 1 SHALLOW
+2 2 PATCHES
+3 3 PARTIAL
+4 4 FREEZING
+5 5 LOW DRIFTING
+6 6 BLOWING
+7 7 INCREASING
+8 8 DECREASING
+9 9 IN SUSPENSION IN THE AIR
+10 10 WALL
+11 11 DENSE
+12 12 WHITEOUT
+13 13 DRIFTING AND BLOWING
+14 14 RESERVED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20027.table b/definitions/bufr/tables/0/wmo/25/codetables/20027.table
new file mode 100644
index 0000000..c337f16
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20027.table
@@ -0,0 +1,8 @@
+1 1 AT TIME OF OBSERVATION
+2 2 IN PAST HOUR
+3 3 IN TIME PERIOD FOR PAST WEATHER W1W2
+4 4 IN TIME PERIOD SPECIFIED
+5 5 RESERVED
+6 6 BELOW STATION LEVEL
+7 7 AT THE STATION
+8 8 IN THE VICINITY
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20028.table b/definitions/bufr/tables/0/wmo/25/codetables/20028.table
new file mode 100644
index 0000000..6b701a2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20028.table
@@ -0,0 +1,4 @@
+0 0 NO CHANGE (NC)
+1 1 FORECAST TO WEAKEN (WKN)
+2 2 FORECAST TO INTENSIFY (INTSF)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20029.table b/definitions/bufr/tables/0/wmo/25/codetables/20029.table
new file mode 100644
index 0000000..8b46da8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20029.table
@@ -0,0 +1,4 @@
+0 0 NO RAIN
+1 1 RAIN
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2003.table b/definitions/bufr/tables/0/wmo/25/codetables/2003.table
new file mode 100644
index 0000000..e0aa923
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2003.table
@@ -0,0 +1,12 @@
+0 0 PRESSURE INSTRUMENT ASSOCIATED WITH WIND MEASURING EQUIPMENT
+1 1 OPTICAL THEODOLITE
+2 2 RADIO THEODOLITE
+3 3 RADAR
+4 4 VLF-OMEGA
+5 5 LORAN C
+6 6 WIND PROFILER
+7 7 SATELLITE NAVIGATION
+8 8 RADIO-ACOUSTIC SOUNDING SYSTEM (RASS)
+9 9 SODAR
+14 14 PRESSURE INSTRUMENT ASSOCIATED WITH WIND MEASURING EQUIPMENT BUT PRESSURE ELEMENT FAILED DURING ASCENT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20032.table b/definitions/bufr/tables/0/wmo/25/codetables/20032.table
new file mode 100644
index 0000000..fd37c1e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20032.table
@@ -0,0 +1,6 @@
+0 0 ICE NOT BUILDING UP
+1 1 ICE BUILDING UP SLOWLY
+2 2 ICE BUILDING UP RAPIDLY
+3 3 ICE MELTING OR BREAKING UP SLOWLY
+4 4 ICE MELTING OR BREAKING UP RAPIDLY
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20033.table b/definitions/bufr/tables/0/wmo/25/codetables/20033.table
new file mode 100644
index 0000000..8178733
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20033.table
@@ -0,0 +1,3 @@
+1 1 ICING FROM OCEAN SPRAY
+2 2 ICING FROM FOG
+3 3 ICING FROM RAIN
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20034.table b/definitions/bufr/tables/0/wmo/25/codetables/20034.table
new file mode 100644
index 0000000..668e916
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20034.table
@@ -0,0 +1,12 @@
+0 0 NO SEA ICE IN SIGHT
+1 1 SHIP IN OPEN LEAD MORE THAN 1.0 NAUTICAL MILE WIDE, OR SHIP IN FAST ICE WITH BOUNDARY BEYOND LIMIT OF VISIBILITY
+2 2 SEA ICE PRESENT IN CONCENTRATIONS LESS THAN 3/10 (3/8), OPEN WATER OR VERY OPEN PACK ICE
+3 3 4/10 TO 6/10 (3/8 TO LESS THAN 6/8), OPEN PACK ICE
+4 4 7/10 TO 8/10 (6/8 TO LESS THAN 7/8), CLOSE PACK ICE
+5 5 9/10 OR MORE, BUT NOT 10/10 (7/8 TO LESS THAN 8/8), VERY CLOSE PACK ICE
+6 6 STRIPS AND PATCHES OF PACK ICE WITH OPEN WATER BETWEEN
+7 7 STRIPS AND PATCHES OF CLOSE OR VERY CLOSE PACK ICE WITH AREAS OF LESSER CONCENTRATION BETWEEN
+8 8 FAST ICE WITH OPEN WATER, VERY OPEN OR OPEN PACK ICE TO SEAWARD OF THE ICE BOUNDARY
+9 9 FAST ICE WITH CLOSE OR VERY CLOSE PACK ICE TO SEAWARD OF THE BOUNDARY
+14 14 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY, OR BECAUSE SHIP IS MORE THAN 0.5 NAUTICAL MILE AWAY FROM ICE EDGE
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20035.table b/definitions/bufr/tables/0/wmo/25/codetables/20035.table
new file mode 100644
index 0000000..07a4a02
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20035.table
@@ -0,0 +1,12 @@
+0 0 NO ICE OF LAND ORIGIN
+1 1 1-5 ICEBERGS, NO GROWLERS OR BERGY BITS
+2 2 6-10 ICEBERGS, NO GROWLERS OR BERGY BITS
+3 3 11-20 ICEBERGS, NO GROWLERS OR BERGY BITS
+4 4 UP TO AND INCLUDING 10 GROWLERS AND BERGY BITS - NO ICEBERGS
+5 5 MORE THAN 10 GROWLERS AND BERGY BITS - NO ICEBERGS
+6 6 1-5 ICEBERGS, WITH GROWLERS AND BERGY BITS
+7 7 6-10 ICEBERGS, WITH GROWLERS AND BERGY BITS
+8 8 11-20 ICEBERGS, WITH GROWLERS AND BERGY BITS
+9 9 MORE THAN 20 ICEBERGS, WITH GROWLERS AND BERGY BITS - A MAJOR HAZARD TO NAVIGATION
+14 14 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY OR BECAUSE ONLY SEA ICE IS VISIBLE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20036.table b/definitions/bufr/tables/0/wmo/25/codetables/20036.table
new file mode 100644
index 0000000..b4cc874
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20036.table
@@ -0,0 +1,12 @@
+0 0 SHIP IN OPEN WATER WITH FLOATING ICE IN SIGHT
+1 1 SHIP IN EASILY PENETRABLE ICE; CONDITIONS IMPROVING
+2 2 SHIP IN EASILY PENETRABLE ICE; CONDITIONS NOT CHANGING
+3 3 SHIP IN EASILY PENETRABLE ICE; CONDITIONS WORSENING
+4 4 SHIP IN ICE DIFFICULT TO PENETRATE; CONDITIONS IMPROVING
+5 5 SHIP IN ICE DIFFICULT TO PENETRATE; CONDITIONS NOT CHANGING
+6 6 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING. ICE FORMING AND FLOES FREEZING TOGETHER
+7 7 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING. ICE UNDER SLIGHT PRESSURE
+8 8 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING. ICE UNDER MODERATE OR SEVERE PRESSURE
+9 9 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING. SHIP BESET
+30 30 UNABLE TO REPORT, BECAUSE OF DARKNESS OR LACK OF VISIBILITY
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20037.table b/definitions/bufr/tables/0/wmo/25/codetables/20037.table
new file mode 100644
index 0000000..474eeaa
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20037.table
@@ -0,0 +1,12 @@
+0 0 NEW ICE ONLY (FRAZIL ICE, GREASE ICE, SLUSH, SHUGA)
+1 1 NILAS OR ICE RIND, LESS THAN 10 CM THICK
+2 2 YOUNG ICE (GREY ICE, GREY-WHITE ICE), 10-30 CM THICK
+3 3 PREDOMINANTLY NEW AND/OR YOUNG ICE WITH SOME FIRST-YEAR ICE
+4 4 PREDOMINANTLY THIN FIRST-YEAR ICE WITH SOME NEW AND/OR YOUNG ICE
+5 5 ALL THIN FIRST-YEAR ICE (30-70 CM THICK)
+6 6 PREDOMINANTLY MEDIUM FIRST-YEAR ICE (70-120 CM THICK) AND THICK FIRST-YEAR ICE (>120 CM THICK) WITH SOME THINNER (YOUNGER) FIRST-YEAR ICE
+7 7 ALL MEDIUM AND THICK FIRST-YEAR ICE
+8 8 PREDOMINANTLY MEDIUM AND THICK FIRST-YEAR ICE WITH SOME OLD ICE (USUALLY MORE THAN 2 METRES THICK)
+9 9 PREDOMINANTLY OLD ICE
+30 30 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY OR BECAUSE ONLY ICE OF LAND ORIGIN IS VISIBLE OR BECAUSE SHIP IS MORE THAN 0.5 NAUTICAL MILE AWAY FROM ICE EDGE
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2004.table b/definitions/bufr/tables/0/wmo/25/codetables/2004.table
new file mode 100644
index 0000000..a55de6c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2004.table
@@ -0,0 +1,11 @@
+0 0 USA OPEN PAN EVAPORIMETER (WITHOUT COVER)
+1 1 USA OPEN PAN EVAPORIMETER (MESH COVERED)
+2 2 GGI-3000 EVAPORIMETER (SUNKEN)
+3 3 20 M2 TANK
+4 4 OTHERS
+5 5 RICE
+6 6 WHEAT
+7 7 MAIZE
+8 8 SORGHUM
+9 9 OTHER CROPS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20040.table b/definitions/bufr/tables/0/wmo/25/codetables/20040.table
new file mode 100644
index 0000000..889393b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20040.table
@@ -0,0 +1,9 @@
+0 0 DRIFT SNOW ENDED BEFORE THE HOUR OF OBSERVATION
+1 1 INTENSITY DIMINISHING
+2 2 NO CHANGE
+3 3 INTENSITY INCREASING
+4 4 CONTINUES, APART FROM INTERRUPTION LASTING LESS THAN 30 MINUTES
+5 5 GENERAL DRIFT SNOW HAS BECOME DRIFT SNOW NEAR THE GROUND
+6 6 DRIFT SNOW NEAR THE GROUND HAS BECOME GENERAL DRIFT SNOW
+7 7 DRIFT SNOW HAS STARTED AGAIN AFTER AN INTERRUPTION OF MORE THAN 30 MINUTES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20041.table b/definitions/bufr/tables/0/wmo/25/codetables/20041.table
new file mode 100644
index 0000000..fc57120
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20041.table
@@ -0,0 +1,14 @@
+0 0 NO ICING
+1 1 LIGHT ICING
+2 2 LIGHT ICING IN CLOUD
+3 3 LIGHT ICING IN PRECIPITATION
+4 4 MODERATE ICING
+5 5 MODERATE ICING IN CLOUD
+6 6 MODERATE ICING IN PRECIPITATION
+7 7 SEVERE ICING
+8 8 SEVERE ICING IN CLOUD
+9 9 SEVERE ICING IN PRECIPITATION
+10 10 TRACE OF ICING
+11 11 TRACE OF ICING IN CLOUD
+12 12 TRACE OF ICING IN PRECIPITATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20042.table b/definitions/bufr/tables/0/wmo/25/codetables/20042.table
new file mode 100644
index 0000000..2493af7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20042.table
@@ -0,0 +1,4 @@
+0 0 NO ICING
+1 1 ICING PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20045.table b/definitions/bufr/tables/0/wmo/25/codetables/20045.table
new file mode 100644
index 0000000..91ae63f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20045.table
@@ -0,0 +1,4 @@
+0 0 NO SLD CONDITIONS PRESENT
+1 1 SLD CONDITIONS PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20048.table b/definitions/bufr/tables/0/wmo/25/codetables/20048.table
new file mode 100644
index 0000000..4a54882
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20048.table
@@ -0,0 +1,5 @@
+0 0 STABILITY
+1 1 DIMINUTION
+2 2 INTENSIFICATION
+3 3 UNKNOWN
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20050.table b/definitions/bufr/tables/0/wmo/25/codetables/20050.table
new file mode 100644
index 0000000..3f8654e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20050.table
@@ -0,0 +1,10 @@
+0 0 RESERVED
+1 1 1ST LOW CLOUD
+2 2 2ND LOW CLOUD
+3 3 3RD LOW CLOUD
+4 4 1ST MEDIUM CLOUD
+5 5 2ND MEDIUM CLOUD
+6 6 3RD MEDIUM CLOUD
+7 7 1ST HIGH CLOUD
+8 8 2ND HIGH CLOUD
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20055.table b/definitions/bufr/tables/0/wmo/25/codetables/20055.table
new file mode 100644
index 0000000..ea06427
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20055.table
@@ -0,0 +1,12 @@
+0 0 CUMULUS, IF ANY, ARE QUITE SMALL; GENERALLY LESS THAN 2/8 COVERAGE, EXCEPT ON WINDWARD SLOPES OF ELEVATED TERRAIN; AVERAGE WIDTH OF CLOUD IS AT LEAST AS GREAT AS ITS VERTICAL THICKNESS
+1 1 CUMULUS OF INTERMEDIATE SIZE WITH CLOUD COVER LESS THAN 5/8; AVERAGE CLOUD WIDTH IS MORE THAN ITS VERTICAL THICKNESS; TOWERS ARE VERTICAL WITH LITTLE OR NO EVIDENCE OF PRECIPITATION, EXCEPT ALONG SLOPES OF ELEVATED TERRAIN; A GENERAL ABSENCE OF MIDDLE AND UPPER CLOUDS
+2 2 SWELLING CUMULUS WITH RAPIDLY GROWING TALL TURRETS WHICH DECREASE IN SIZE WITH HEIGHT AND WHOSE TOPS TEND TO SEPARATE FROM THE LONGER CLOUD BODY AND EVAPORATE WITHIN MINUTES OF THE SEPARATION
+3 3 SWELLING CUMULUS WITH TOWERS HAVING A PRONOUNCED TILT IN A DOWNWIND DIRECTION; VERTICAL CLOUD THICKNESS IS MORE THAN ONE AND A HALF TIMES THAT OF ITS AVERAGE WIDTH
+4 4 SWELLING CUMULUS WITH TOWERS HAVING A PRONOUNCED TILT IN AN UPWIND DIRECTION; VERTICAL CLOUD THICKNESS IS MORE THAN ONE AND A HALF TIMES THAT OF ITS AVERAGE WIDTH
+5 5 TALL CUMULUS CONGESTUS WITH VERTICAL THICKNESS MORE THAN TWICE THE AVERAGE WIDTH; NOT ORGANIZED IN CLUSTERS OR LINES; ONE OR MORE LAYERS OF CLOUDS EXTEND OUT FROM THE CLOUD TOWERS, ALTHOUGH NO CONTINUOUS CLOUD LAYERS EXIST
+6 6 ISOLATED CUMULONIMBUS OR LARGE CLUSTERS OF CUMULUS TURRETS SEPARATED BY WIDE AREAS IN WHICH CLOUDS ARE ABSENT; CLOUD BASES ARE GENERALLY DARK WITH SHOWERS OBSERVED IN MOST CELLS; SOME SCATTERED MIDDLE AND UPPER CLOUDS MAY BE PRESENT; INDIVIDUAL CUMULUS CELLS ARE ONE TO TWO TIMES HIGHER THAN THEY ARE WIDE
+7 7 NUMEROUS CUMULUS EXTENDING THROUGH THE MIDDLE TROPOSPHERE WITH BROKEN TO OVERCAST SHEETS OF MIDDLE CLOUDS AND/OR CIRROSTRATUS; CUMULUS TOWERS DO NOT DECREASE GENERALLY IN SIZE WITH HEIGHT; RAGGED DARK CLOUD BASES WITH SOME SHOWERS PRESENT
+8 8 CONTINUOUS DENSE MIDDLE CLOUDS AND/OR CIRROSTRATUS CLOUD SHEETS WITH SOME LARGE ISOLATED CUMULONIMBUS OR CUMULUS CONGESTUS CLOUDS PENETRATING THESE SHEETS; LIGHT RAIN OCCASIONALLY OBSERVED FROM THE ALTOSTRATUS; CUMULONIMBUS BASES RAGGED AND DARK WITH SHOWERS VISIBLE
+9 9 CONTINUOUS SHEETS OF MIDDLE CLOUDS AND/OR CIRROSTRATUS WITH CUMULONIMBUS AND CUMULUS CONGESTUS IN ORGANIZED LINES OR CLOUD BANDS; RAIN IS GENERALLY OBSERVED FROM ALTOSTRATUS SHEETS AND HEAVY SHOWERS FROM CUMULONIMBUS; WIND HAS A SQUALLY CHARACTER
+10 10 STATE OF SKY UNKNOWN OR NOT DESCRIBED BY ANY OF THE ABOVE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20056.table b/definitions/bufr/tables/0/wmo/25/codetables/20056.table
new file mode 100644
index 0000000..d493792
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20056.table
@@ -0,0 +1,6 @@
+0 0 UNKNOWN
+1 1 WATER
+2 2 ICE
+3 3 MIXED
+4 4 CLEAR
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20062.table b/definitions/bufr/tables/0/wmo/25/codetables/20062.table
new file mode 100644
index 0000000..24d96c4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20062.table
@@ -0,0 +1,21 @@
+0 0 SURFACE OF GROUND DRY (WITHOUT CRACKS AND NO APPRECIABLE AMOUNT OF DUST OR LOOSE SAND)
+1 1 SURFACE OF GROUND MOIST
+2 2 SURFACE OF GROUND WET (STANDING WATER IN SMALL OR LARGE POOLS ON SURFACE)
+3 3 FLOODED
+4 4 SURFACE OF GROUND FROZEN
+5 5 GLAZE ON GROUND
+6 6 LOOSE DRY DUST OR SAND NOT COVERING GROUND COMPLETELY
+7 7 THIN COVER OF LOOSE DRY DUST OR SAND COVERING GROUND COMPLETELY
+8 8 MODERATE OR THICK COVER OF LOOSE DRY DUST OR SAND COVERING GROUND COMPLETELY
+9 9 EXTREMELY DRY WITH CRACKS
+10 10 GROUND PREDOMINANTLY COVERED BY ICE
+11 11 COMPACT OR WET SNOW (WITH OR WITHOUT ICE) COVERING LESS THAN ONE HALF OF THE GROUND
+12 12 COMPACT OR WET SNOW (WITH OR WITHOUT ICE) COVERING AT LEAST ONE HALF OF THE GROUND BUT GROUND NOT COMPLETELY COVERED
+13 13 EVEN LAYER OF COMPACT OR WET SNOW COVERING GROUND COMPLETELY
+14 14 UNEVEN LAYER OF COMPACT OR WET SNOW COVERING GROUND COMPLETELY
+15 15 LOOSE DRY SNOW COVERING LESS THAN ONE HALF OF THE GROUND
+16 16 LOOSE DRY SNOW COVERING AT LEAST ONE HALF OF THE GROUND BUT GROUND NOT COMPLETELY COVERED
+17 17 EVEN LAYER OF LOOSE DRY SNOW COVERING GROUND COMPLETELY
+18 18 UNEVEN LAYER OF LOOSE DRY SNOW COVERING GROUND COMPLETELY
+19 19 SNOW COVERING GROUND COMPLETELY; DEEP DRIFTS
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20063.table b/definitions/bufr/tables/0/wmo/25/codetables/20063.table
new file mode 100644
index 0000000..90ce1c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20063.table
@@ -0,0 +1,71 @@
+0 0 RESERVED
+1 1 HIGHEST WIND SPEED GUSTS GREATER THAN 11.5 M/S
+2 2 HIGHEST MEAN WIND SPEED GREATER THAN 17.5 M/S
+7 7 VISIBILITY GREATER THAN 100 000 M
+10 10 MIRAGE - NO SPECIFICATION
+11 11 MIRAGE - IMAGE OF DISTANT OBJECT RAISED (LOOMING)
+13 13 MIRAGE - INVERTED IMAGE OF DISTANT OBJECT
+14 14 MIRAGE - COMPLEX, MULTIPLE IMAGES OF DISTANT OBJECT (IMAGES NOT INVERTED)
+15 15 MIRAGE - COMPLEX, MULTIPLE IMAGES OF DISTANT OBJECT (SOME IMAGES BEING INVERTED)
+16 16 MIRAGE - SUN OR MOON SEEN APPRECIABLY DISTORTED
+17 17 MIRAGE - SUN VISIBLE, ALTHOUGH ASTRONOMICALLY BELOW THE HORIZON
+18 18 MIRAGE - MOON VISIBLE, ALTHOUGH ASTRONOMICALLY BELOW THE HORIZON
+19 19 RESERVED
+20 20 DAY DARKNESS, BAD, WORST IN DIRECTION SPECIFIED
+21 21 DAY DARKNESS, VERY BAD, WORST IN DIRECTION SPECIFIED
+22 22 DAY DARKNESS, BLACK, WORST IN DIRECTION SPECIFIED
+31 31 SLIGHT COLORATION OF CLOUDS AT SUNRISE ASSOCIATED WITH A TROPICAL DISTURBANCE
+32 32 DEEP-RED COLORATION OF CLOUDS AT SUNRISE ASSOCIATED WITH A TROPICAL DISTURBANCE
+33 33 SLIGHT COLORATION OF CLOUDS AT SUNSET ASSOCIATED WITH A TROPICAL DISTURBANCE
+34 34 DEEP-RED COLORATION OF CLOUDS AT SUNSET ASSOCIATED WITH A TROPICAL DISTURBANCE
+35 35 CONVERGENCE OF CH CLOUDS AT A POINT BELOW 45° FORMING OR INCREASING AND ASSOCIATED WITH A TROPICAL DISTURBANCE
+36 36 CONVERGENCE OF CH CLOUDS AT A POINT ABOVE 45° ASSOCIATED WITH A TROPICAL DISTURBANCE
+37 37 CONVERGENCE OF CH CLOUDS AT A POINT BELOW 45° DISSOLVING OR DIMINISHING AND ASSOCIATED WITH A TROPICAL DISTURBANCE
+38 38 CONVERGENCE OF CH CLOUDS AT A POINT ABOVE 45° ASSOCIATED WITH A TROPICAL DISTURBANCE
+39 39 RESERVED
+40 40 HOAR FROST ON HORIZONTAL SURFACES
+41 41 HOAR FROST ON HORIZONTAL AND VERTICAL SURFACES
+42 42 PRECIPITATION CONTAINING SAND OR DESERT DUST
+43 43 PRECIPITATION CONTAINING VOLCANIC ASH
+50 50 CALM OR LIGHT WIND FOLLOWED BY A SQUALL
+51 51 CALM OR LIGHT WIND FOLLOWED BY A SUCCESSION OF SQUALLS
+52 52 GUSTY WEATHER FOLLOWED BY A SQUALL
+53 53 GUSTY WEATHER FOLLOWED BY A SUCCESSION OF SQUALLS
+54 54 SQUALL FOLLOWED BY GUSTY WEATHER
+55 55 GENERAL GUSTY WEATHER WITH SQUALL AT INTERVALS
+56 56 SQUALL APPROACHING STATION
+57 57 LINE SQUALL
+58 58 SQUALL WITH DRIFTING OR BLOWING DUST OR SAND
+59 59 LINE SQUALL WITH DRIFTING OR BLOWING DUST OR SAND
+60 60 TEMPERATURE STEADY
+61 61 TEMPERATURE FALLING, WITHOUT GOING BELOW 0°C
+62 62 TEMPERATURE RISING, WITHOUT GOING ABOVE 0°C
+63 63 TEMPERATURE FALLING TO A VALUE BELOW 0°C
+64 64 TEMPERATURE RISING TO A VALUE ABOVE 0°C
+65 65 IRREGULAR VARIATION, OSCILLATIONS OF TEMPERATURE PASSING THROUGH 0°C
+66 66 IRREGULAR VARIATION, OSCILLATIONS OF TEMPERATURE NOT PASSING THROUGH 0°C
+67 67 VARIATION OF TEMPERATURE NOT OBSERVED
+68 68 NOT ALLOCATED
+69 69 VARIATION OF TEMPERATURE UNKNOWN OWING TO LACK OF THERMOGRAPH
+70 70 VISIBILITY HAS NOT VARIED (SUN* VISIBLE) TOWARDS DIRECTION SPECIFIED
+71 71 VISIBILITY HAS NOT VARIED (SUN* INVISIBLE) TOWARDS DIRECTION SPECIFIED
+72 72 VISIBILITY HAS INCREASED (SUN* VISIBLE) TOWARDS DIRECTION SPECIFIED
+73 73 VISIBILITY HAS INCREASED (SUN* INVISIBLE) TOWARDS DIRECTION SPECIFIED
+74 74 VISIBILITY HAS DECREASED (SUN* VISIBLE) TOWARDS DIRECTION SPECIFIED
+75 75 VISIBILITY HAS DECREASED (SUN* INVISIBLE) TOWARDS DIRECTION SPECIFIED
+76 76 FOG COMING FROM DIRECTION SPECIFIED
+77 77 FOG HAS LIFTED, WITHOUT DISSIPATING
+78 78 FOG HAS DISPERSED WITHOUT REGARD TO DIRECTION
+79 79 MOVING PATCHES OR BANKS OF FOG
+80 80 BROCKEN SPECTRE
+81 81 RAINBOW
+82 82 SOLAR OR LUNAR HALO
+83 83 PARHELIA OR ANTHELIA
+84 84 SUN PILLAR
+85 85 CORONA
+86 86 TWILIGHT GLOW
+87 87 TWILIGHT GLOW ON THE MOUNTAINS (ALPENGLüHEN)
+88 88 MIRAGE
+89 89 ZODIACAL LIGHT
+90 90 ST ELMO'S FIRE
+1023 1023 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2007.table b/definitions/bufr/tables/0/wmo/25/codetables/2007.table
new file mode 100644
index 0000000..05b4c6b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2007.table
@@ -0,0 +1,11 @@
+0 0 RESERVED
+1 1 SHAFT ENCODER FLOAT SYSTEM
+2 2 ULTRASONIC
+3 3 RADAR
+4 4 PRESSURE (SINGLE TRANSDUCER)
+5 5 PRESSURE (MULTIPLE TRANSDUCER)
+6 6 PRESSURE (IN STILLING WELL)
+7 7 BUBBLER PRESSURE
+8 8 ACOUSTIC (WITH SOUNDING TUBE)
+9 9 ACOUSTIC (IN OPEN AIR)
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20071.table b/definitions/bufr/tables/0/wmo/25/codetables/20071.table
new file mode 100644
index 0000000..72367bf
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20071.table
@@ -0,0 +1,11 @@
+0 0 NO ASSESSMENT
+1 1 LESS THAN 50 KM
+2 2 BETWEEN 50 AND 200 KM
+3 3 MORE THAN 200 KM
+4 4 LESS THAN 50 KM
+5 5 BETWEEN 50 AND 200 KM
+6 6 MORE THAN 200 KM
+7 7 LESS THAN 50 KM
+8 8 BETWEEN 50 AND 200 KM
+9 9 MORE THAN 200 KM
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20085.table b/definitions/bufr/tables/0/wmo/25/codetables/20085.table
new file mode 100644
index 0000000..f929e87
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20085.table
@@ -0,0 +1,3 @@
+0 0 CLEARED (CLRD//)
+1 1 ALL RUNWAYS CLOSED (SNOCLO)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20086.table b/definitions/bufr/tables/0/wmo/25/codetables/20086.table
new file mode 100644
index 0000000..b543330
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20086.table
@@ -0,0 +1,11 @@
+0 0 CLEAR AND DRY
+1 1 DAMP
+2 2 WET WITH WATER PATCHES
+3 3 RIME AND FROST COVERED (DEPTH NORMALLY LESS THAN 1 MM)
+4 4 DRY SNOW
+5 5 WET SNOW
+6 6 SLUSH
+7 7 ICE
+8 8 COMPACTED OR ROLLED SNOW
+9 9 FROZEN RUTS OR RIDGES
+15 15 MISSING OR NOT REPORTED (E.G. DUE TO RUNWAY CLEARANCE IN PROGRESS)
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20087.table b/definitions/bufr/tables/0/wmo/25/codetables/20087.table
new file mode 100644
index 0000000..b2e33aa
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20087.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 LESS THAN 10% OF RUNWAY COVERED
+2 2 11% TO 25% OF RUNWAY COVERED
+5 5 25% TO 50% OF RUNWAY COVERED
+9 9 51% TO 100% OF RUNWAY COVERED
+15 15 MISSING OR NOT REPORTED (E.G. DUE TO RUNWAY CLEARANCE IN PROGRESS)
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20089.table b/definitions/bufr/tables/0/wmo/25/codetables/20089.table
new file mode 100644
index 0000000..f616c62
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20089.table
@@ -0,0 +1,11 @@
+0 0 0.00
+1 1 0.01
+89 89 0.89
+90 90 0.90
+91 91 BRAKING ACTION POOR
+92 92 BRAKING ACTION MEDIUM TO POOR
+93 93 BRAKING ACTION MEDIUM
+94 94 BRAKING ACTION MEDIUM TO GOOD
+95 95 BRAKING ACTION GOOD
+99 99 UNRELIABLE
+127 127 MISSING, NOT REPORTED AND/OR RUNWAY NOT OPERATIONAL
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20090.table b/definitions/bufr/tables/0/wmo/25/codetables/20090.table
new file mode 100644
index 0000000..d13502e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20090.table
@@ -0,0 +1,7 @@
+0 0 RESERVED
+1 1 NACREOUS CLOUDS
+2 2 NOCTILUCENT CLOUDS
+3 3 CLOUDS FROM WATERFALLS
+4 4 CLOUDS FROM FIRES
+5 5 CLOUDS FROM VOLCANIC ERUPTIONS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20101.table b/definitions/bufr/tables/0/wmo/25/codetables/20101.table
new file mode 100644
index 0000000..abe89f5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20101.table
@@ -0,0 +1,11 @@
+0 0 RESERVED
+1 1 SCHISTOCERCA GREGARIA
+2 2 LOCUSTA MIGRATORIA
+3 3 NOMADACRIS SEPTEMFASCIATA
+4 4 OEDALEUS SENEGALENSIS
+5 5 ANRACRIDIUM SPP
+6 6 OTHER LOCUSTS
+7 7 OTHER GRASSHOPPERS
+8 8 OTHER CRICKETS
+9 9 SPODOPTERA EXEMPTA
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20102.table b/definitions/bufr/tables/0/wmo/25/codetables/20102.table
new file mode 100644
index 0000000..6a53039
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20102.table
@@ -0,0 +1,11 @@
+0 0 GREEN
+1 1 GREEN OR BLACK
+2 2 BLACK
+3 3 YELLOW AND BLACK
+4 4 STRAW/GREY
+5 5 PINK
+6 6 DARK RED/BROWN
+7 7 MIXED RED AND YELLOW
+8 8 YELLOW
+9 9 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20103.table b/definitions/bufr/tables/0/wmo/25/codetables/20103.table
new file mode 100644
index 0000000..9c4f689
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20103.table
@@ -0,0 +1,11 @@
+0 0 HOPPERS (NYMPHS, LARVAE), STAGE 1
+1 1 HOPPERS (NYMPHS, LARVAE), STAGE 2 OR MIXED 1, 2 INSTARS (STAGES)
+2 2 HOPPERS (NYMPHS, LARVAE), STAGE 3 OR MIXED 2, 3 INSTARS
+3 3 HOPPERS (NYMPHS, LARVAE), STAGE 4 OR MIXED 3, 4 INSTARS
+4 4 HOPPERS (NYMPHS, LARVAE), STAGE 5 OR MIXED 4, 5 INSTARS
+5 5 HOPPERS (NYMPHS, LARVAE), STAGE MIXED, ALL OR MANY INSTARS
+6 6 FLEDGLINGS (WINGS TOO SOFT FOR SUSTAINED FLIGHT)
+7 7 IMMATURE ADULTS
+8 8 MIXED MATURITY ADULTS
+9 9 MATURE ADULTS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20104.table b/definitions/bufr/tables/0/wmo/25/codetables/20104.table
new file mode 100644
index 0000000..15ca8ac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20104.table
@@ -0,0 +1,11 @@
+0 0 HOPPERS ONLY, MAINLY IN BANDS OR CLUSTERS
+1 1 WINGED ADULTS IN THE VICINITY MORE THAN 10 KILOMETRES FROM POINT OF OBSERVATION
+2 2 LOCUSTS IN FLIGHT, A FEW SEEN AT THE STATION
+3 3 LOCUSTS AT THE STATION, MOST OF THEM ON THE GROUND
+4 4 LOCUSTS, SOME ON GROUND AND OTHERS IN FLIGHT AT A HEIGHT LESS THAN 10 METRES
+5 5 LOCUSTS, SOME ON GROUND AND OTHERS IN FLIGHT AT A HEIGHT GREATER THAN 10 METRES
+6 6 LOCUSTS, MOST IN FLIGHT AT A HEIGHT LESS THAN 10 METRES
+7 7 LOCUSTS, MOST IN FLIGHT AT A HEIGHT GREATER THAN 10 METRES
+8 8 LOCUSTS, ALL OVER INFLICTING SEVERE DAMAGE TO VEGETATION, NO EXTERMINATION OPERATION
+9 9 LOCUSTS, ALL OVER INFLICTING SEVERE DAMAGE TO VEGETATION, EXTERMINATION OPERATION IN PROGRESS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20105.table b/definitions/bufr/tables/0/wmo/25/codetables/20105.table
new file mode 100644
index 0000000..b7406c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20105.table
@@ -0,0 +1,12 @@
+0 0 SMALL SWARM LESS THAN 1 KM2 OR ADULTS IN GROUND, TENS OR HUNDREDS OF INDIVIDUALS VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE LESS THAN 1 HOUR AGO
+1 1 SMALL SWARM LESS THAN 1 KM2 OR ADULTS IN GROUND, TENS OR HUNDREDS OF INDIVIDUALS VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE 1 TO 6 HOURS AGO
+2 2 SMALL SWARM LESS THAN 1 KM2 OR ADULTS IN GROUND, TENS OR HUNDREDS OF INDIVIDUALS VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE OVER 6 HOURS AGO
+3 3 MEDIUM SWARM OR SCATTERED ADULTS, SEVERAL VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE LESS THAN 1 HOUR AGO
+4 4 MEDIUM SWARM OR SCATTERED ADULTS, SEVERAL VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE 1 TO 6 HOURS AGO
+5 5 MEDIUM SWARM OR SCATTERED ADULTS, SEVERAL VISIBLE SIMULTANEOUSLY, DURATION OF PASSAGE OVER 6 HOURS AGO
+6 6 LARGE SWARM OR ISOLATED ADULTS, SEEN SINGLY, DURATION OF PASSAGE LESS THAN 1 HOUR AGO
+7 7 LARGE SWARM OR ISOLATED ADULTS, SEEN SINGLY, DURATION OF PASSAGE 1 TO 6 HOURS AGO
+8 8 LARGE SWARM OR ISOLATED ADULTS, SEEN SINGLY, DURATION OF PASSAGE OVER 6 HOURS AGO
+9 9 MORE THAN ONE SWARM OF LOCUSTS
+10 10 SIZE OF SWARM AND/OR DURATION OF PASSAGE NOT DETERMINED OWING TO DARKNESS OR SIMILAR PHENOMENA
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20106.table b/definitions/bufr/tables/0/wmo/25/codetables/20106.table
new file mode 100644
index 0000000..2a8c4a0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20106.table
@@ -0,0 +1,7 @@
+0 0 RESERVED
+1 1 THIN DENSITY SWARM (SWARM VISIBLE ONLY WHEN NEAR ENOUGH FOR INDIVIDUAL LOCUSTS TO BE DISCERNED)
+2 2 MEDIUM DENSITY SWARM
+3 3 DENSE SWARM (OBSCURING NEARBY FEATURES, E.G. TREES)
+4 4 ISOLATED HOPPERS SEEN SINGLY
+5 5 SCATTERED HOPPERS, SEVERAL VISIBLE SIMULTANEOUSLY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20107.table b/definitions/bufr/tables/0/wmo/25/codetables/20107.table
new file mode 100644
index 0000000..0bea30a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20107.table
@@ -0,0 +1,11 @@
+0 0 RESERVED
+1 1 GENERALLY IN THE DIRECTION NE
+2 2 GENERALLY IN THE DIRECTION E
+3 3 GENERALLY IN THE DIRECTION SE
+4 4 GENERALLY IN THE DIRECTION S
+5 5 GENERALLY IN THE DIRECTION SW
+6 6 GENERALLY IN THE DIRECTION W
+7 7 GENERALLY IN THE DIRECTION NW
+8 8 GENERALLY IN THE DIRECTION N
+9 9 SPECIFIC DIRECTION INDETERMINABLE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20108.table b/definitions/bufr/tables/0/wmo/25/codetables/20108.table
new file mode 100644
index 0000000..4404614
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20108.table
@@ -0,0 +1,9 @@
+0 0 BARE GROUND
+1 1 DRY, PRESENCE OF FEW AND ISOLATED SHRUBS
+2 2 SPARSE VEGETATION (SPROUTING)
+3 3 DENSE VEGETATION (SPROUTING)
+4 4 SPARSE VEGETATION (GROWING)
+5 5 DENSE VEGETATION (GROWING)
+6 6 SPARSE VEGETATION IN FLOWER
+7 7 DENSE VEGETATION IN FLOWER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2011.table b/definitions/bufr/tables/0/wmo/25/codetables/2011.table
new file mode 100644
index 0000000..fbf81b0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2011.table
@@ -0,0 +1,100 @@
+0 0 RESERVED
+1 1 NOT VACANT
+2 2 NO RADIOSONDE - PASSIVE TARGET (E.G. REFLECTOR)
+3 3 NO RADIOSONDE - ACTIVE TARGET (E.G. TRANSPONDER)
+4 4 NO RADIOSONDE - PASSIVE TEMPERATURE-HUMIDITY PROFILER
+5 5 NO RADIOSONDE - ACTIVE TEMPERATURE-HUMIDITY PROFILER
+6 6 NO RADIOSONDE - RADIO-ACOUSTIC SOUNDER
+7 7 NOT VACANT
+8 8 NO RADIOSONDE -... (RESERVED)
+9 9 NO RADIOSONDE - SYSTEM UNKNOWN OR NOT SPECIFIED
+10 10 SIPPICAN LMS5 W/CHIP THERMISTOR, DUCT MOUNTED CAPACITANCE RELATIVE HUMIDITY SENSOR AND DERIVED PRESSURE FROM GPS HEIGHT
+11 11 SIPPICAN LMS6 W/CHIP THERMISTOR, EXTERNAL BOOM MOUNTED CAPACITANCE RELATIVE HUMIDITY SENSOR, AND DERIVED PRESSURE FROM GPS HEIGHT
+12 12 JIN YANG RSG-20A WITH DERIVED PRESSURE FROM GPS HEIGHT/GL-5000P (REPUBLIC OF KOREA)
+13 13 VAISALA RS92/MARWIN MW32 (FINLAND)
+14 14 VAISALA RS92/DIGICORA MW41 (FINLAND)
+15 15 PAZA-12M/RADIOTHEODOLITE-UL (UKRAINE)
+16 16 PAZA-22/AVK-1 (UKRAINE)
+17 17 GRAW DFM-09 (GERMANY)
+18 18 NOT VACANT
+19 19 VACANT
+20 20 NOT VACANT
+21 21 JIN YANG 1524LA LORAN-C/GL5000 (REPUBLIC OF KOREA)
+22 22 MEISEI RS-11G GPS RADIOSONDE W/THERMISTOR, CAPACITANCE RELATIVE HUMIDITY SENSOR, AND DERIVED PRESSURE FROM GPS HEIGHT (JAPAN)
+23 23 VAISALA RS41/DIGICORA MW41 (FINLAND)
+24 24 VAISALA RS41/AUTOSONDE (FINLAND)
+25 25 VAISALA RS41/MARWIN MW32 (FINLAND)
+26 26 METEOLABOR SRS-C34/ARGUS 37 (SWITZERLAND)
+27 27 NOT VACANT
+28 28 AVK - AK2-02 (RUSSIAN FEDERATION)
+29 29 MARL-A OR VEKTOR-M - AK2-02 (RUSSIAN FEDERATION)
+30 30 MEISEI RS-06G (JAPAN)
+31 31 TAIYUAN GTS1-1/GFE(L) (CHINA )
+32 32 SHANGHAI GTS1/GFE(L) (CHINA)
+33 33 NANJING GTS1-2/GFE(L) (CHINA)
+34 34 VACANT
+35 35 MEISEI IMS-100 GPS RADIOSONDE W/THERMISTOR SENSOR, CAPACITANCE RELATIVE HUMIDITY SENSOR, AND DERIVED PRESSURE FROM GPS HEIGHT (JAPAN)
+36 36 VACANT
+37 37 NOT VACANT
+38 38 VIZ LOCATE LORAN-C (UNITED STATES)
+39 39 SPRENGER E076 (GERMANY)
+40 40 SPRENGER E084 (GERMANY)
+41 41 VAISALA RS41 WITH PRESSURE DERIVED FROM GPS HEIGHT/DIGICORA MW41 (FINLAND)
+42 42 VAISALA RS41 WITH PRESSURE DERIVED FROM GPS HEIGHT/AUTOSONDE (FINLAND)
+43 43 NANJING DAQIAO XGP-3G (CHINA)*
+44 44 TIANJIN HUAYUNTIANYI GTS(U)1 (CHINA)*
+45 45 BEIJING CHANGFENG CF-06 (CHINA)*
+46 46 SHANGHAI CHANGWANG GTS3 (CHINA)*
+47 47 NOT VACANT
+48 48 PAZA-22M/MARL-A
+49 49 NOT VACANT
+50 50 VACANT
+51 51 NOT VACANT
+52 52 VAISALA RS92-NGP/INTERMET IMS-2000 (UNITED STATES)
+53 53 AVK - I-2012 (RUSSIAN FEDERATION)
+54 54 GRAW DFM-97 (GERMANY)
+55 55 MEISEI RS-01G (JAPAN)
+56 56 M2K2 (FRANCE)
+57 57 MODEM M2K2-DC (FRANCE)
+58 58 AVK-BAR (RUSSIAN FEDERATION)
+59 59 MODEM M2K2-R 1680 MHZ RDF RADIOSONDE WITH PRESSURE SENSOR CHIP (FRANCE)
+60 60 MARL-A OR VEKTOR-M - I-2012 (RUSSIAN FEDERATION)
+61 61 NOT VACANT
+62 62 MARL-A OR VEKTOR-M - MRZ-3MK (RUSSIAN FEDERATION)
+63 63 VAISALA RS80/STAR (FINLAND)
+64 64 ORBITAL SCIENCES CORPORATION, SPACE DATA DIVISION, TRANSPONDER RADIOSONDE, TYPE 909-11-XX, WHERE XX CORRESPONDS TO THE MODEL OF THE INSTRUMENT (UNITED STATES)
+65 65 VIZ TRANSPONDER RADIOSONDE, MODEL NUMBER 1499–520 (UNITED STATES)
+66 66 VAISALA RS80 /AUTOSONDE (FINLAND)
+67 67 VAISALA RS80/DIGICORA III (FINLAND)
+68 68 AVK-RZM-2 (RUSSIAN FEDERATION)
+69 69 MARL-A OR VEKTOR-M-RZM-2 (RUSSIAN FEDERATION)
+70 70 VAISALA RS92/STAR (FINLAND)
+71 71 VAISALA RS90/LORAN/DIGICORA I, II OR MARWIN (FINLAND)
+72 72 VAISALA RS90/PC-CORA (FINLAND)
+73 73 VACANT
+74 74 VAISALA RS90/STAR (FINLAND)
+75 75 AVK-MRZ-ARMA (RUSSIAN FEDERATION)
+76 76 AVK-RF95-ARMA (RUSSIAN FEDERATION)
+77 77 MODEM GPSONDE M10 (FRANCE)
+78 78 VAISALA RS90/DIGICORA III (FINLAND)
+79 79 VAISALA RS92/DIGICORA I,II OR MARWIN (FINLAND)
+80 80 VAISALA RS92/DIGICORA III (FINLAND)
+81 81 VAISALA RS92/AUTOSONDE (FINLAND)
+82 82 LOCKHEED MARTIN LMS-6 W/CHIP THERMISTOR; EXTERNAL BOOM MOUNTED POLYMER CAPACITIVE RELATIVE HUMIDITY SENSOR; CAPACITIVE PRESSURE SENSOR AND GPS WIND
+83 83 VAISALA RS92-D/INTERMET IMS 1500 W/SILICON CAPACITIVE PRESSURE SENSOR, CAPACITIVE WIRE TEMPERATURE SENSOR, TWIN THIN-FILM HEATED POLYMER CAPACITIVE RELATIVE HUMIDITY SENSOR AND RDF WIND
+84 84 VACANT
+85 85 SIPPICAN MARK IIA WITH CHIP THERMISTOR, CARBON ELEMENT AND DERIVED PRESSURE FROM GPS HEIGHT
+86 86 SIPPICAN MARK II WITH CHIP THERMISTOR, PRESSURE AND CARBON ELEMENT
+87 87 SIPPICAN MARK IIA WITH CHIP THERMISTOR, PRESSURE AND CARBON ELEMENT
+88 88 MARL-A OR VEKTOR-M-MRZ (RUSSIAN FEDERATION)
+89 89 MARL-A OR VEKTOR-M-BAR (RUSSIAN FEDERATION)
+90 90 RADIOSONDE NOT SPECIFIED OR UNKNOWN
+91 91 PRESSURE ONLY RADIOSONDE
+92 92 PRESSURE ONLY RADIOSONDE PLUS TRANSPONDER
+93 93 PRESSURE ONLY RADIOSONDE PLUS RADAR REFLECTOR
+94 94 NO PRESSURE RADIOSONDE PLUS TRANSPONDER
+95 95 NO PRESSURE RADIOSONDE PLUS RADAR REFLECTOR
+96 96 DESCENDING RADIOSONDE
+97 97 BAT-16P (SOUTH AFRICA)
+98 98 BAT-16G (SOUTH AFRICA)
+99 99 BAT-4G (SOUTH AFRICA)
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20119.table b/definitions/bufr/tables/0/wmo/25/codetables/20119.table
new file mode 100644
index 0000000..4a4b40f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20119.table
@@ -0,0 +1,4 @@
+0 0 NOT DEFINED
+1 1 POSITIVE
+2 2 NEGATIVE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20124.table b/definitions/bufr/tables/0/wmo/25/codetables/20124.table
new file mode 100644
index 0000000..f78eacb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20124.table
@@ -0,0 +1,4 @@
+0 0 NOT DEFINED
+1 1 LIGHTNING STROKE
+2 2 LIGHTNING FLASH, BY MANUAL OBSERVATION, OR IF EQUIPMENT INSENSITIVE TO STROKE RESOLUTION
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2013.table b/definitions/bufr/tables/0/wmo/25/codetables/2013.table
new file mode 100644
index 0000000..9d042d0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2013.table
@@ -0,0 +1,9 @@
+0 0 NO CORRECTION
+1 1 CIMO SOLAR CORRECTED AND CIMO INFRARED CORRECTED
+2 2 CIMO SOLAR CORRECTED AND INFRARED CORRECTED
+3 3 CIMO SOLAR CORRECTED ONLY
+4 4 SOLAR AND INFRARED CORRECTED AUTOMATICALLY BY RADIOSONDE SYSTEM
+5 5 SOLAR CORRECTED AUTOMATICALLY BY RADIOSONDE SYSTEM
+6 6 SOLAR AND INFRARED CORRECTED AS SPECIFIED BY COUNTRY
+7 7 SOLAR CORRECTED AS SPECIFIED BY COUNTRY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20136.table b/definitions/bufr/tables/0/wmo/25/codetables/20136.table
new file mode 100644
index 0000000..0369f5d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20136.table
@@ -0,0 +1,44 @@
+0 0 ISOLATED CUMULUS HUMILIS AND/OR CUMULUS MEDIOCRIS OF VERTICAL DEVELOPMENT
+1 1 NUMEROUS CUMULUS HUMILIS AND/OR CUMULUS MEDIOCRIS OF VERTICAL DEVELOPMENT
+2 2 ISOLATED CUMULUS CONGESTUS OF VERTICAL DEVELOPMENT
+3 3 NUMEROUS CUMULUS CONGESTUS OF VERTICAL DEVELOPMENT
+4 4 ISOLATED CUMULONIMBUS OF VERTICAL DEVELOPMENT
+5 5 NUMEROUS CUMULONIMBUS OF VERTICAL DEVELOPMENT
+6 6 ISOLATED CUMULUS AND CUMULONIMBUS OF VERTICAL DEVELOPMENT
+7 7 NUMEROUS CUMULUS AND CUMULONIMBUS OF VERTICAL DEVELOPMENT
+10 10 RESERVED
+11 11 ISOLATED OROGRAPHIC CLOUDS, PILEUS, INCUS, FORMING
+12 12 ISOLATED OROGRAPHIC CLOUDS, PILEUS, INCUS, NOT CHANGING
+13 13 ISOLATED OROGRAPHIC CLOUDS, PILEUS, INCUS, DISSOLVING
+14 14 IRREGULAR BANKS OF OROGRAPHIC CLOUD, FöHN BANK, ETC., FORMING
+15 15 IRREGULAR BANKS OF OROGRAPHIC CLOUD, FöHN BANK, ETC., NOT CHANGING
+16 16 IRREGULAR BANKS OF OROGRAPHIC CLOUD, FöHN BANK, ETC., DISSOLVING
+17 17 COMPACT LAYER OF OROGRAPHIC CLOUD, FöHN BANK, ETC., FORMING
+18 18 COMPACT LAYER OF OROGRAPHIC CLOUD, FöHN BANK, ETC., NOT CHANGING
+19 19 COMPACT LAYER OF OROGRAPHIC CLOUD, FöHN BANK, ETC., DISSOLVING
+20 20 ALL MOUNTAINS OPEN, ONLY SMALL AMOUNTS OF CLOUD PRESENT
+21 21 MOUNTAINS PARTLY COVERED WITH DETACHED CLOUDS (NOT MORE THAN HALF THE PEAKS CAN BE SEEN)
+22 22 ALL MOUNTAIN SLOPES COVERED, PEAKS AND PASSES FREE
+23 23 MOUNTAINS OPEN ON OBSERVER’S SIDE (ONLY SMALL AMOUNTS OF CLOUD PRESENT), BUT A CONTINUOUS WALL OF CLOUD ON THE OTHER SIDE
+24 24 CLOUDS LOW ABOVE THE MOUNTAINS, BUT ALL SLOPES AND MOUNTAINS OPEN (ONLY SMALL AMOUNTS OF CLOUD ON THE SLOPES)
+25 25 CLOUDS LOW ABOVE THE MOUNTAINS, PEAKS PARTLY COVERED BY PRECIPITATION TRAILS OR CLOUDS
+26 26 ALL PEAKS COVERED BUT PASSES OPEN, SLOPES EITHER OPEN OR COVERED
+27 27 MOUNTAINS GENERALLY COVERED BUT SOME PEAKS FREE, SLOPES WHOLLY OR PARTIALLY COVERED
+28 28 ALL PEAKS, PASSES AND SLOPES COVERED
+29 29 MOUNTAINS CANNOT BE SEEN OWING TO DARKNESS, FOG, SNOWSTORM, PRECIPITATION, ETC.
+35 35 NON-PERSISTENT CONDENSATION TRAILS
+36 36 PERSISTENT CONDENSATION TRAILS COVERING LESS THAN 1/8 OF THE SKY
+37 37 PERSISTENT CONDENSATION TRAILS COVERING 1/8 OF THE SKY
+38 38 PERSISTENT CONDENSATION TRAILS COVERING 2/8 OF THE SKY
+39 39 PERSISTENT CONDENSATION TRAILS COVERING 3/8 OR MORE OF THE SKY
+40 40 NO CLOUD OR MIST OBSERVED FROM A HIGHER LEVEL
+41 41 MIST, CLEAR ABOVE OBSERVED FROM A HIGHER LEVEL
+42 42 FOG PATCHES OBSERVED FROM A HIGHER LEVEL
+43 43 LAYER OF SLIGHT FOG OBSERVED FROM A HIGHER LEVEL
+44 44 LAYER OF THICK FOG OBSERVED FROM A HIGHER LEVEL
+45 45 SOME ISOLATED CLOUDS OBSERVED FROM A HIGHER LEVEL
+46 46 ISOLATED CLOUDS AND FOG BELOW OBSERVED FROM A HIGHER LEVEL
+47 47 MANY ISOLATED CLOUDS OBSERVED FROM A HIGHER LEVEL
+48 48 SEA OF CLOUDS OBSERVED FROM A HIGHER LEVEL
+49 49 BAD VISIBILITY OBSCURING THE DOWNWARD VIEW OBSERVED FROM A HIGHER LEVEL
+511 511 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/20137.table b/definitions/bufr/tables/0/wmo/25/codetables/20137.table
new file mode 100644
index 0000000..adda880
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/20137.table
@@ -0,0 +1,11 @@
+0 0 NO CHANGE
+1 1 CUMULIFICATION
+2 2 SLOW ELEVATION
+3 3 RAPID ELEVATION
+4 4 ELEVATION AND STRATIFICATION
+5 5 SLOW LOWERING
+6 6 RAPID LOWERING
+7 7 STRATIFICATION
+8 8 STRATIFICATION AND LOWERING
+9 9 RAPID CHANGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2014.table b/definitions/bufr/tables/0/wmo/25/codetables/2014.table
new file mode 100644
index 0000000..bc5c5fc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2014.table
@@ -0,0 +1,51 @@
+0 0 NO WIND FINDING
+1 1 AUTOMATIC WITH AUXILIARY OPTICAL DIRECTION FINDING
+2 2 AUTOMATIC WITH AUXILIARY RADIO DIRECTION FINDING
+3 3 AUTOMATIC WITH AUXILIARY RANGING
+4 4 NOT USED
+5 5 AUTOMATIC WITH MULTIPLE VLF-OMEGA SIGNALS
+6 6 AUTOMATIC CROSS CHAIN LORAN-C
+7 7 AUTOMATIC WITH AUXILIARY WIND PROFILER
+8 8 AUTOMATIC SATELLITE NAVIGATION
+19 19 TRACKING TECHNIQUE NOT SPECIFIED
+20 20 VESSEL STOPPED
+21 21 VESSEL DIVERTED FROM ORIGINAL DESTINATION
+22 22 VESSEL'S ARRIVAL DELAYED
+23 23 CONTAINER DAMAGED
+24 24 POWER FAILURE TO CONTAINER
+29 29 OTHER PROBLEMS
+30 30 MAJOR POWER PROBLEMS
+31 31 UPS INOPERATIVE
+32 32 RECEIVER HARDWARE PROBLEMS
+33 33 RECEIVER SOFTWARE PROBLEMS
+34 34 PROCESSOR HARDWARE PROBLEMS
+35 35 PROCESSOR SOFTWARE PROBLEMS
+36 36 NAVAID SYSTEM DAMAGED
+37 37 SHORTAGE OF LIFTING GAS
+38 38 RESERVED
+39 39 OTHER PROBLEMS
+40 40 MECHANICAL DEFECT
+41 41 MATERIAL DEFECT (HAND LAUNCHER)
+42 42 POWER FAILURE
+43 43 CONTROL FAILURE
+44 44 PNEUMATIC/HYDRAULIC FAILURE
+45 45 OTHER PROBLEMS
+46 46 COMPRESSOR PROBLEMS
+47 47 BALLOON PROBLEMS
+48 48 BALLOON RELEASE PROBLEMS
+49 49 LAUNCHER DAMAGED
+50 50 R/S RECEIVER ANTENNA DEFECT
+51 51 NAVAID ANTENNA DEFECT
+52 52 R/S RECEIVER CABLING (ANTENNA) DEFECT
+53 53 NAVAID ANTENNA CABLING DEFECT
+59 59 OTHER PROBLEMS
+60 60 ASAP COMMUNICATIONS DEFECT
+61 61 COMMUNICATIONS FACILITY REJECTED DATA
+62 62 NO POWER AT TRANSMITTING ANTENNA
+63 63 ANTENNA CABLE BROKEN
+64 64 ANTENNA CABLE DEFECT
+65 65 MESSAGE TRANSMITTED POWER BELOW NORMAL
+69 69 OTHER PROBLEMS
+70 70 ALL SYSTEMS IN NORMAL OPERATION
+99 99 STATUS OF SYSTEM AND ITS COMPONENTS NOT SPECIFIED
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2015.table b/definitions/bufr/tables/0/wmo/25/codetables/2015.table
new file mode 100644
index 0000000..7b0ccaf
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2015.table
@@ -0,0 +1,7 @@
+0 0 RESERVED
+1 1 PRESSURE ONLY RADIOSONDE
+2 2 PRESSURE ONLY RADIOSONDE PLUS TRANSPONDER
+3 3 PRESSURE ONLY RADIOSONDE PLUS RADAR REFLECTOR
+4 4 NO-PRESSURE RADIOSONDE PLUS TRANSPONDER
+5 5 NO-PRESSURE RADIOSONDE PLUS RADAR REFLECTOR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2016.table b/definitions/bufr/tables/0/wmo/25/codetables/2016.table
new file mode 100644
index 0000000..4a30226
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2016.table
@@ -0,0 +1,4 @@
+1 1 TRAIN REGULATOR
+2 2 LIGHT UNIT
+3 3 PARACHUTE
+4 4 ROOFTOP RELEASE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2017.table b/definitions/bufr/tables/0/wmo/25/codetables/2017.table
new file mode 100644
index 0000000..79a09f6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2017.table
@@ -0,0 +1,5 @@
+0 0 NO CORRECTIONS
+1 1 TIME LAG CORRECTION PROVIDED BY THE MANUFACTURER
+2 2 SOLAR RADIATION CORRECTION PROVIDED BY THE MANUFACTURER
+3 3 SOLAR RADIATION AND TIME LAG CORRECTION PROVIDED BY THE MANUFACTURER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2019.table b/definitions/bufr/tables/0/wmo/25/codetables/2019.table
new file mode 100644
index 0000000..f36246e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2019.table
@@ -0,0 +1,327 @@
+10 10 AATSR
+11 11 ATSR
+12 12 ATSR-2
+13 13 MWR
+30 30 ARGOS
+40 40 LASER REFLECTORS
+41 41 DORIS
+42 42 DORIS-NG
+47 47 POSEIDON-1 (SSALT1)
+48 48 POSEIDON-2 (SSALT2)
+49 49 POSEIDON-3 (SSALT3)
+50 50 ATSR/M
+51 51 HRG
+52 52 HRV
+53 53 HRVIR
+54 54 SCARAB/MV2
+55 55 POLDER
+56 56 IIR
+60 60 VEGETATION
+61 61 WINDII
+62 62 ALTIKA
+80 80 RADARSAT DTT
+81 81 RADARSAT TTC
+85 85 SAR (CSA)
+90 90 MOPITT
+91 91 OSIRIS
+97 97 PANCHROMATIC IMAGER
+98 98 GPS RECEIVER
+102 102 CHAMP GPS SOUNDER
+103 103 IGOR
+116 116 CHAMP GRAVITY PACKAGE (ACCELEROMETER+GPS)
+117 117 CHAMP MAGNETOMETRY PACKAGE (1 SCALAR+2 VECTOR MAGNETOMETER)
+120 120 ENVISAT COMMS
+121 121 ERS COMMS
+130 130 ALADIN
+131 131 ATLID
+140 140 AMI/SAR/IMAGE
+141 141 AMI/SAR/WAVE
+142 142 AMI/SCATTEROMETER
+143 143 ASAR
+144 144 ASAR
+145 145 ASAR
+146 146 CPR
+147 147 RA-2/MWR
+148 148 RA/MWR
+150 150 SCATTEROMETER
+161 161 MIPAS
+162 162 MWR-2
+163 163 SOPRANO
+170 170 GOME
+172 172 GOMOS
+174 174 MERIS
+175 175 SCIAMACHY
+176 176 MIRAS
+177 177 SIRAL
+178 178 SRAL
+179 179 OLCI
+180 180 SLSTR
+181 181 METEOSAT COMMS
+182 182 MSG COMMS
+190 190 ASCAT
+200 200 GERB
+202 202 GRAS
+203 203 MHS
+205 205 MVIRI
+207 207 SEVIRI
+208 208 VIRI
+220 220 GOME-2
+221 221 IASI
+240 240 DCP
+245 245 CCD
+246 246 HSB
+248 248 OBA
+250 250 WFI
+255 255 IRMSS
+260 260 BSS & FSS TRANSPONDERS
+261 261 DRT-S&R
+262 262 INSAT COMMS
+268 268 HR-PAN
+269 269 MSMR
+270 270 VHRR
+271 271 WIFS
+275 275 AWIFS
+276 276 LISS-I
+277 277 LISS-II
+278 278 LISS-III
+279 279 LISS-IV
+284 284 PAN
+285 285 MOS
+286 286 OCM
+287 287 ROSA
+288 288 SCAT
+290 290 MTSAT COMMS
+291 291 HIMAWARI COMMS
+294 294 JAMI
+295 295 IMAGER/MTSAT-2
+296 296 VISSR
+297 297 AHI
+300 300 GLAS
+301 301 LRA
+302 302 MBLA
+303 303 CALIOP
+309 309 CPR (CLOUDSAT)
+312 312 NSCAT
+313 313 SEAWINDS
+314 314 RAPIDSCAT
+330 330 ACRIM
+334 334 BUV
+336 336 ALI
+347 347 ASTER
+348 348 CERES-2
+351 351 GPSDR
+353 353 HIRDLS
+354 354 HRDI
+356 356 LIS
+358 358 PEM
+359 359 SEAWIFS
+360 360 SUSIM (UARS)
+363 363 SBUV/1
+365 365 TMI
+366 366 JMR
+367 367 AMR
+369 369 LIMS
+370 370 LRIR
+371 371 EPIC
+372 372 NISTAR
+373 373 PLASMA-MAG
+374 374 XPS
+375 375 VIRS
+376 376 POLDER II
+377 377 TIM
+379 379 WFC
+382 382 CLAES
+383 383 HALOE
+384 384 ISAMS
+385 385 MISR
+386 386 MLS
+387 387 MLS (EOS-AURA)
+389 389 MODIS
+393 393 HAIRS
+394 394 OMI
+395 395 ATMOSPHERIC CORRECTOR
+396 396 HYPERION
+399 399 SAGE I
+400 400 SAGE II
+401 401 SAGE III
+402 402 SAMS
+403 403 SAM-II
+404 404 IRIS
+405 405 GIFTS
+420 420 AIRS
+426 426 SOLSTICE
+430 430 TES
+431 431 TOMS
+432 432 OCO
+450 450 ADEOS COMMS
+451 451 DCS (JAXA)
+453 453 GMS COMMS
+454 454 JERS-1 COMMS
+460 460 RIS
+461 461 PR
+462 462 SAR
+470 470 PALSAR
+478 478 AMSR2
+479 479 AMSR-E
+480 480 PRISM (ALOS)
+481 481 AMSR
+482 482 AVNIR
+483 483 AVNIR-2
+484 484 GLI
+485 485 MESSR
+486 486 MSR
+487 487 OCTS
+488 488 OPS
+489 489 VISSR (GMS-5)
+490 490 VTIR
+510 510 ILAS-I
+511 511 ILAS-II
+512 512 IMG
+514 514 SEM
+515 515 SOFIS
+516 516 TANSO-FTS
+517 517 TANSO-CAI
+518 518 DPR
+519 519 GMI
+540 540 DCS (NOAA)
+541 541 GOES COMMS
+542 542 LANDSAT COMMS
+543 543 NOAA COMMS
+544 544 S&R (GOES)
+545 545 S&R (NOAA)
+546 546 WEFAX
+547 547 SEM (GOES)
+550 550 SSM
+551 551 SSJ/4
+552 552 SSIES-2
+553 553 SSB/X-2
+570 570 AMSU-A
+574 574 AMSU-B
+580 580 ATOVS (HIRS/3 + AMSU + AVHRR/3)
+590 590 AVHRR/2
+591 591 AVHRR/3
+592 592 AVHRR/4
+600 600 ERBE
+601 601 ETM+
+605 605 HIRS/2
+606 606 HIRS/3
+607 607 HIRS/4
+615 615 IMAGER
+616 616 VIIRS
+620 620 CRIRS/NP
+621 621 ATMS
+622 622 MSS
+623 623 MSU
+624 624 SBUV/2
+625 625 SBUV/3
+626 626 SOUNDER
+627 627 SSU
+628 628 TM
+629 629 TOVS (HIRS/2 + MSU + SSU)
+630 630 VAS
+631 631 SSZ
+645 645 SEM
+650 650 MVIRSR (10 CHANNEL)
+651 651 MVIRSR (3 CHANNEL)
+652 652 MVIRSR (5 CHANNEL)
+670 670 RLSBO
+680 680 MSU-EU
+681 681 MSU-UM
+682 682 RM-08
+683 683 SU-UMS
+684 684 SU-VR
+685 685 TRASSER
+686 686 SCAT
+687 687 ALT
+688 688 MWI
+700 700 KONDOR-2
+701 701 BRK
+710 710 ALISSA
+712 712 BALKAN-2 LIDAR
+715 715 MK-4
+716 716 MK-4M
+730 730 GREBEN
+731 731 SAR-10
+732 732 SAR-3
+733 733 SAR-70
+740 740 SLR-3
+745 745 TRAVERS SAR
+750 750 174-K
+751 751 BTVK
+752 752 CHAIKA
+753 753 DELTA-2
+755 755 IKAR-D
+756 756 IKAR-N
+757 757 IKAR-P
+760 760 ISP
+761 761 KFA-1000
+762 762 KFA-200
+763 763 KFA-3000
+770 770 KLIMAT
+771 771 KLIMAT-2
+775 775 MIRAS
+776 776 MIVZA
+777 777 MIVZA-M
+780 780 MR-2000
+781 781 MR-2000M
+785 785 MR-900
+786 786 MR-900B
+790 790 MSU-E
+791 791 MSU-E1
+792 792 MSU-E2
+793 793 MSU-M
+794 794 MSU-S
+795 795 MSU-SK
+796 796 MSU-V
+810 810 MTZA
+815 815 MZOAS
+820 820 R-225
+821 821 R-400
+822 822 R-600
+830 830 RMS
+835 835 TV CAMERA
+836 836 SILVA
+840 840 SROSMO
+850 850 BUFS-2
+851 851 BUFS-4
+855 855 ISTOK-1
+856 856 SFM-2
+857 857 DOPI
+858 858 KGI-4
+859 859 OZON-M
+860 860 RMK-2
+900 900 MAXIE
+901 901 OLS
+905 905 SSM/I
+906 906 SSM/T-1
+907 907 SSM/T-2
+908 908 SSMIS
+910 910 SXI
+930 930 EHIC
+931 931 X-RAY ASTRONOMY PAYLOAD
+932 932 IVISSR (FY-2)
+933 933 IRAS
+934 934 MWAS
+935 935 IMWAS
+936 936 MWHS
+937 937 MVIRS
+938 938 MWRI
+940 940 MTVZA-OK
+941 941 SAPHIR
+942 942 MADRAS
+944 944 ALT
+945 945 TSIS
+946 946 CMIS
+947 947 OMPS
+948 948 GPSOS
+949 949 SESS
+950 950 VIRR
+951 951 TOM
+952 952 OP
+953 953 MWHS-2
+954 954 MWTS-2
+955 955 HIRAS
+956 956 SBUS
+957 957 TOU
+958 958 GNOS
+2047 2047 
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2020.table b/definitions/bufr/tables/0/wmo/25/codetables/2020.table
new file mode 100644
index 0000000..fc19e6d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2020.table
@@ -0,0 +1,31 @@
+0 0 NIMBUS
+1 1 VTPR
+2 2 TIROS 1 (TIROS, NOAA-6 TO NOAA-13)
+3 3 TIROS 2 (NOAA-14 ONWARDS)
+10 10 EOS
+20 20 GPM-CORE
+31 31 DMSP
+61 61 EUMETSAT POLAR SYSTEM (EPS)
+91 91 ERS
+92 92 SENTINEL-3
+121 121 ADEOS
+122 122 GCOM
+241 241 GOES
+261 261 JASON
+271 271 GMS
+272 272 MTSAT
+273 273 HIMAWARI
+281 281 COMS
+301 301 INSAT
+331 331 METEOSAT OPERATIONAL PROGRAMME (MOP)
+332 332 METEOSAT TRANSITIONAL PROGRAMME (MTP)
+333 333 METEOSAT SECOND GENERATION PROGRAMME (MSG)
+351 351 GOMS
+380 380 FY-1
+381 381 FY-2
+382 382 FY-3
+401 401 GPS
+402 402 GLONASS
+403 403 GALILEO
+404 404 BDS (BEIDOU NAVIGATION SATELLITE SYSTEM)
+511 511 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2021.table b/definitions/bufr/tables/0/wmo/25/codetables/2021.table
new file mode 100644
index 0000000..b95fdc9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2021.table
@@ -0,0 +1,8 @@
+1 1 HIGH-RESOLUTION INFRARED SOUNDER (HIRS)
+2 2 MICROWAVE SOUNDING UNIT (MSU)
+3 3 STRATOSPHERIC SOUNDING UNIT (SSU)
+4 4 AMI (ADVANCED MICROWAVE INSTRUMENT) WIND MODE
+5 5 AMI (ADVANCED MICROWAVE INSTRUMENT) WAVE MODE
+6 6 AMI (ADVANCED MICROWAVE INSTRUMENT) IMAGE MODE
+7 7 RADAR ALTIMETER
+8 8 ATSR (ALONG-TRACK SCANNING RADIOMETER)
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2022.table b/definitions/bufr/tables/0/wmo/25/codetables/2022.table
new file mode 100644
index 0000000..5068e7f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2022.table
@@ -0,0 +1,5 @@
+1 1 PROCESSING TECHNIQUE NOT DEFINED
+2 2 AUTOMATED STATISTICAL REGRESSION
+3 3 CLEAR PATH
+4 4 PARTLY CLOUDY PATH
+5 5 CLOUDY PATH
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2023.table b/definitions/bufr/tables/0/wmo/25/codetables/2023.table
new file mode 100644
index 0000000..be7eb84
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2023.table
@@ -0,0 +1,11 @@
+0 0 RESERVED
+1 1 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE INFRARED CHANNEL
+2 2 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE VISIBLE CHANNEL
+3 3 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE WATER VAPOUR CHANNEL
+4 4 WIND DERIVED FROM MOTION OBSERVED IN A COMBINATION OF SPECTRAL CHANNELS
+5 5 WIND DERIVED FROM MOTION OBSERVED IN THE WATER VAPOUR CHANNEL IN CLEAR AIR
+6 6 WIND DERIVED FROM MOTION OBSERVED IN THE OZONE CHANNEL
+7 7 WIND DERIVED FROM MOTION OBSERVED IN WATER VAPOUR CHANNEL (CLOUD OR CLEAR AIR NOT SPECIFIED)
+13 13 ROOT-MEAN-SQUARE
+14 14 RESERVED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2024.table b/definitions/bufr/tables/0/wmo/25/codetables/2024.table
new file mode 100644
index 0000000..00ec80e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2024.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 TABLE WITH FULL RANGE OF HUMIDITY VARIATION IN LAYER
+2 2 REGRESSION TECHNIQUE ON 2 HUMIDITY VALUES IN LAYER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2025.table b/definitions/bufr/tables/0/wmo/25/codetables/2025.table
new file mode 100644
index 0000000..64dc018
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2025.table
@@ -0,0 +1,16 @@
+1 1 RESERVED
+2 2 HIRS
+3 3 MSU
+6 6 HIRS
+7 7 MSU
+10 10 HIRS (1, 2, 3, 8, 9, 16, 17)
+11 11 HIRS (1, 2, 3, 9, 17)
+12 12 MSU
+15 15 HIRS
+16 16 HIRS
+17 17 MSU
+18 18 SKINTK (OCEAN ONLY)
+21 21 HIRS
+22 22 SSU
+23 23 MSU (3, 4)
+24 24 RESERVED
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2030.table b/definitions/bufr/tables/0/wmo/25/codetables/2030.table
new file mode 100644
index 0000000..2777bbc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2030.table
@@ -0,0 +1,8 @@
+0 0 RESERVED
+1 1 ADCP (ACOUSTIC DOPPLER CURRENT PROFILER)
+2 2 GEK (GEOMAGNETIC ELECTROKINETOGRAPH)
+3 3 SHIP'S SET AND DRIFT DETERMINED BY FIXES 3-6 HOURS APART
+4 4 SHIP'S SET AND DRIFT DETERMINED BY FIXES MORE THAN 6 HOURS BUT LESS THAN 12 HOURS APART
+5 5 DRIFT OF BUOY
+6 6 ADCP (ACOUSTIC DOPPLER CURRENT PROFILER)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2031.table b/definitions/bufr/tables/0/wmo/25/codetables/2031.table
new file mode 100644
index 0000000..a96b857
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2031.table
@@ -0,0 +1,21 @@
+0 0 RESERVED
+1 1 INSTANTANEOUS
+2 2 AVERAGED OVER 3 MINUTES OR LESS
+3 3 AVERAGED OVER MORE THAN 3 MINUTES, BUT 6 AT THE MOST
+4 4 AVERAGED OVER MORE THAN 6 MINUTES, BUT 12 AT THE MOST
+5 5 INSTANTANEOUS
+6 6 AVERAGED OVER 3 MINUTES OR LESS
+7 7 AVERAGED OVER MORE THAN 3 MINUTES, BUT 6 AT THE MOST
+8 8 AVERAGED OVER MORE THAN 6 MINUTES, BUT 12 AT THE MOST
+9 9 VECTOR OR DOPPLER CURRENT PROFILING METHOD NOT USED
+10 10 RESERVED
+11 11 1 HOUR OR LESS
+12 12 MORE THAN 1 HOUR BUT 2 AT THE MOST
+13 13 MORE THAN 2 HOURS BUT 4 AT THE MOST
+14 14 MORE THAN 4 HOURS BUT 8 AT THE MOST
+15 15 MORE THAN 8 HOURS BUT 12 AT THE MOST
+16 16 MORE THAN 12 HOURS BUT 18 AT THE MOST
+17 17 MORE THAN 18 HOURS BUT 24 AT THE MOST
+18 18 RESERVED
+19 19 DRIFT METHOD NOT USED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2032.table b/definitions/bufr/tables/0/wmo/25/codetables/2032.table
new file mode 100644
index 0000000..7e9310d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2032.table
@@ -0,0 +1,4 @@
+0 0 VALUES AT SELECTED DEPTHS (DATA POINTS FIXED BY THE INSTRUMENT OR SELECTED BY ANY OTHER METHOD)
+1 1 VALUES AT SELECTED DEPTHS (DATA POINTS TAKEN FROM TRACES AT SIGNIFICANT DEPTHS)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2033.table b/definitions/bufr/tables/0/wmo/25/codetables/2033.table
new file mode 100644
index 0000000..8215be0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2033.table
@@ -0,0 +1,5 @@
+0 0 NO SALINITY MEASURED
+1 1 IN SITU SENSOR, ACCURACY BETTER THAN 0.02 ‰
+2 2 IN SITU SENSOR, ACCURACY LESS THAN 0.02 ‰
+3 3 SAMPLE ANALYSIS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2034.table b/definitions/bufr/tables/0/wmo/25/codetables/2034.table
new file mode 100644
index 0000000..06cdd52
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2034.table
@@ -0,0 +1,7 @@
+0 0 UNSPECIFIED DROGUE
+1 1 HOLEY SOCK
+2 2 TRISTAR
+3 3 WINDOW SHADE
+4 4 PARACHUTE
+5 5 NON-LAGRANGIAN SEA ANCHOR
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2036.table b/definitions/bufr/tables/0/wmo/25/codetables/2036.table
new file mode 100644
index 0000000..7782d30
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2036.table
@@ -0,0 +1,4 @@
+0 0 DRIFTING BUOY
+1 1 FIXED BUOY
+2 2 SUBSURFACE FLOAT (MOVING)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2037.table b/definitions/bufr/tables/0/wmo/25/codetables/2037.table
new file mode 100644
index 0000000..729c40e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2037.table
@@ -0,0 +1,8 @@
+0 0 RESERVED
+1 1 MANUAL READING FROM VERTICAL TIDE STAFF
+2 2 MANUAL READING FROM SINGLE AUTOMATIC RECORDER AT STATION
+3 3 MANUAL READING FROM MULTIPLE AUTOMATIC RECORDERS AT STATION
+4 4 AUTOMATIC READING FROM SINGLE AUTOMATIC RECORDER AT STATION WITHOUT LEVEL REFERENCE CHECK
+5 5 AUTOMATIC READING FROM SINGLE AUTOMATIC RECORDER AT STATION WITH LEVEL REFERENCE CHECK, OR FROM MULTIPLE AUTOMATIC RECORDERS
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2038.table b/definitions/bufr/tables/0/wmo/25/codetables/2038.table
new file mode 100644
index 0000000..458f141
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2038.table
@@ -0,0 +1,16 @@
+0 0 SHIP INTAKE
+1 1 BUCKET
+2 2 HULL CONTACT SENSOR
+3 3 REVERSING THERMOMETER
+4 4 STD/CTD SENSOR
+5 5 MECHANICAL BT
+6 6 EXPENDABLE BT
+7 7 DIGITAL BT
+8 8 THERMISTOR CHAIN
+9 9 INFRARED SCANNER
+10 10 MICROWAVE SCANNER
+11 11 INFRARED RADIOMETER
+12 12 IN-LINE THERMOSALINOGRAPH
+13 13 TOWED BODY
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2039.table b/definitions/bufr/tables/0/wmo/25/codetables/2039.table
new file mode 100644
index 0000000..0a94982
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2039.table
@@ -0,0 +1,5 @@
+0 0 MEASURED WET-BULB TEMPERATURE
+1 1 ICED BULB MEASURED WET-BULB TEMPERATURE
+2 2 COMPUTED WET-BULB TEMPERATURE
+3 3 ICED BULB COMPUTED WET-BULB TEMPERATURE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2040.table b/definitions/bufr/tables/0/wmo/25/codetables/2040.table
new file mode 100644
index 0000000..78b2917
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2040.table
@@ -0,0 +1,8 @@
+0 0 SHIP'S MOTION REMOVED BY AVERAGING
+1 1 SHIP'S MOTION REMOVED BY MOTION COMPENSATION
+2 2 SHIP'S MOTION NOT REMOVED
+3 3 SHIP'S MOTION REMOVED BY AVERAGING
+4 4 SHIP'S MOTION REMOVED BY MOTION COMPENSATION
+5 5 SHIP'S MOTION NOT REMOVED
+6 6 DOPPLER CURRENT PROFILING METHOD NOT USED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2041.table b/definitions/bufr/tables/0/wmo/25/codetables/2041.table
new file mode 100644
index 0000000..ef5bf86
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2041.table
@@ -0,0 +1,6 @@
+0 0 INFORMATION BASED ON MANUAL ANALYSIS
+1 1 INFORMATION BASED ON COMPUTER ANALYSIS
+2 2 INFORMATION BASED ON DATA ASSIMILATION
+3 3 INFORMATION BASED ON COMPUTER ANALYSIS OR DATA ASSIMILATION MANUALLY MODIFIED
+10 10 INFORMATION BASED ON THE NUMERICAL WEATHER PREDICTION
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2042.table b/definitions/bufr/tables/0/wmo/25/codetables/2042.table
new file mode 100644
index 0000000..eb2445b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2042.table
@@ -0,0 +1,4 @@
+0 0 VALUE ORIGINALLY REPORTED IN M/S
+1 1 VALUE ORIGINALLY REPORTED IN KNOTS
+2 2 NO SEA CURRENT DATA AVAILABLE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2044.table b/definitions/bufr/tables/0/wmo/25/codetables/2044.table
new file mode 100644
index 0000000..0e10ed8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2044.table
@@ -0,0 +1,6 @@
+0 0 RESERVED FOR FUTURE USE
+1 1 LONGUET-HIGGINS (1964)
+2 2 LONGUET-HIGGINS (F3 METHOD)
+3 3 MAXIMUM LIKELIHOOD METHOD
+4 4 MAXIMUM ENTROPY METHOD
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2045.table b/definitions/bufr/tables/0/wmo/25/codetables/2045.table
new file mode 100644
index 0000000..374e4f2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2045.table
@@ -0,0 +1,5 @@
+0 0 SEA STATION
+1 1 AUTOMATIC DATA BUOY
+2 2 AIRCRAFT
+3 3 SATELLITE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2046.table b/definitions/bufr/tables/0/wmo/25/codetables/2046.table
new file mode 100644
index 0000000..57fb9d6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2046.table
@@ -0,0 +1,4 @@
+0 0 RESERVED FOR FUTURE USE
+1 1 HEAVE SENSOR
+2 2 SLOPE SENSOR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2047.table b/definitions/bufr/tables/0/wmo/25/codetables/2047.table
new file mode 100644
index 0000000..8213931
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2047.table
@@ -0,0 +1,9 @@
+0 0 RESERVED
+1 1 DART II (PMEL)
+2 2 DART ETD
+3 3 SAIC TSUNAMI BUOY (STB)
+4 4 GFZ - POTSDAM
+5 5 INCOIS (INDIA)
+6 6 INABUOY (INDONESIA)
+7 7 ENVIRTECH
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2048.table b/definitions/bufr/tables/0/wmo/25/codetables/2048.table
new file mode 100644
index 0000000..d7cb2ef
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2048.table
@@ -0,0 +1,14 @@
+0 0 HIRS
+1 1 MSU
+2 2 SSU
+3 3 AMSU-A
+4 4 AMSU-B
+5 5 AVHRR
+6 6 SSMI
+7 7 NSCAT
+8 8 SEAWINDS
+9 9 POSEIDON ALTIMETER
+10 10 JMR (JASON MICROWAVE RADIOMETER)
+11 11 MHS
+12 12 ASCAT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2049.table b/definitions/bufr/tables/0/wmo/25/codetables/2049.table
new file mode 100644
index 0000000..ade5cac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2049.table
@@ -0,0 +1,4 @@
+1 1 PROCESSING TECHNIQUE NOT DEFINED
+2 2 SIMULTANEOUS PHYSICAL RETRIEVAL
+3 3 CLEAR SOUNDING
+4 4 CLOUDY SOUNDING
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2050.table b/definitions/bufr/tables/0/wmo/25/codetables/2050.table
new file mode 100644
index 0000000..fbcce61
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2050.table
@@ -0,0 +1,19 @@
+1 1 1
+2 2 2
+3 3 3
+4 4 4
+5 5 5
+6 6 6
+7 7 7
+8 8 8
+9 9 9
+10 10 10
+11 11 11
+12 12 12
+13 13 13
+14 14 14
+15 15 15
+16 16 16
+17 17 17
+18 18 18
+19 19 19
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2051.table b/definitions/bufr/tables/0/wmo/25/codetables/2051.table
new file mode 100644
index 0000000..3524ae7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2051.table
@@ -0,0 +1,5 @@
+0 0 RESERVED
+1 1 MAXIMUM/MINIMUM THERMOMETERS
+2 2 AUTOMATED INSTRUMENTS
+3 3 THERMOGRAPH
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2052.table b/definitions/bufr/tables/0/wmo/25/codetables/2052.table
new file mode 100644
index 0000000..8b6262c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2052.table
@@ -0,0 +1,5 @@
+1 1 1
+2 2 2
+3 3 3
+4 4 4
+5 5 5
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2053.table b/definitions/bufr/tables/0/wmo/25/codetables/2053.table
new file mode 100644
index 0000000..03e5e29
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2053.table
@@ -0,0 +1,5 @@
+0 0 OBSERVED BRIGHTNESS TEMPERATURE
+1 1 BRIGHTNESS TEMPERATURE WITH BIAS CORRECTION APPLIED
+2 2 BRIGHTNESS TEMPERATURE CALCULATED FROM FIRST GUESS
+3 3 BRIGHTNESS TEMPERATURE CALCULATED FROM SOUNDING
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2054.table b/definitions/bufr/tables/0/wmo/25/codetables/2054.table
new file mode 100644
index 0000000..0995688
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2054.table
@@ -0,0 +1,6 @@
+0 0 PARAMETER DERIVED USING OBSERVED SOUNDER BRIGHTNESS TEMPERATURES
+1 1 PARAMETER DERIVED USING OBSERVED IMAGER BRIGHTNESS TEMPERATURES
+2 2 PARAMETER DERIVED USING FIRST GUESS INFORMATION
+3 3 PARAMETER DERIVED USING NMC ANALYSIS INFORMATION
+4 4 PARAMETER DERIVED USING RADIOSONDE INFORMATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2055.table b/definitions/bufr/tables/0/wmo/25/codetables/2055.table
new file mode 100644
index 0000000..ce06f00
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2055.table
@@ -0,0 +1,10 @@
+0 0 STATISTICS GENERATED COMPARING RETRIEVAL VERSUS RADIOSONDE
+1 1 STATISTICS GENERATED COMPARING RETRIEVAL VERSUS FIRST GUESS
+2 2 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS FIRST GUESS
+3 3 STATISTICS GENERATED COMPARING OBSERVED VERSUS RETRIEVAL
+4 4 STATISTICS GENERATED COMPARING OBSERVED VERSUS FIRST GUESS
+5 5 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS IMAGER
+6 6 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS SOUNDER
+7 7 STATISTICS GENERATED FOR RADIOSONDE
+8 8 STATISTICS GENERATED FOR FIRST GUESS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2056.table b/definitions/bufr/tables/0/wmo/25/codetables/2056.table
new file mode 100644
index 0000000..86eb983
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2056.table
@@ -0,0 +1,6 @@
+0 0 SUMS OF DIFFERENCES
+1 1 SUMS OF SQUARED DIFFERENCES
+2 2 SAMPLE SIZE
+3 3 MINIMUM DIFFERENCE
+4 4 MAXIMUM DIFFERENCE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2057.table b/definitions/bufr/tables/0/wmo/25/codetables/2057.table
new file mode 100644
index 0000000..681e6bd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2057.table
@@ -0,0 +1,7 @@
+0 0 NESTED GRID MODEL (NGM)
+1 1 AVIATION MODEL (AVN)
+2 2 MEDIUM RANGE FORECAST (MRF) MODEL
+3 3 GLOBAL DATA ASSIMILATION SYSTEM (GDAS) FORECAST MODEL
+4 4 PRIOR SOUNDINGS (WITHIN 3 HOURS OF CURRENT TIME)
+5 5 CLIMATOLOGY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2058.table b/definitions/bufr/tables/0/wmo/25/codetables/2058.table
new file mode 100644
index 0000000..6c45eda
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2058.table
@@ -0,0 +1,5 @@
+0 0 12 HOUR AND 18 HOUR
+1 1 18 HOUR AND 24 HOUR
+2 2 6 HOUR AND 12 HOUR
+3 3 GREATER THAN 24 HOURS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2059.table b/definitions/bufr/tables/0/wmo/25/codetables/2059.table
new file mode 100644
index 0000000..8f089d3
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2059.table
@@ -0,0 +1,5 @@
+0 0 NCEP NESTED GRID MODEL (NGM) ANALYSIS
+1 1 NCEP AVIATION MODEL (AVN) ANALYSIS
+2 2 NCEP MEDIUM RANGE FORECAST (MRF) MODEL ANALYSIS
+3 3 NCEP GLOBAL DATA ASSIMILATION SYSTEM (GDAS) FORECAST MODEL ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2060.table b/definitions/bufr/tables/0/wmo/25/codetables/2060.table
new file mode 100644
index 0000000..6f84698
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2060.table
@@ -0,0 +1,7 @@
+0 0 CURRENT SURFACE HOURLY REPORTS
+1 1 CURRENT SHIP REPORTS
+2 2 CURRENT BUOY REPORTS
+3 3 ONE HOUR OLD SURFACE HOURLY REPORTS
+4 4 ONE HOUR OLD SHIP REPORTS
+5 5 ONE HOUR OLD BUOY REPORTS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2061.table b/definitions/bufr/tables/0/wmo/25/codetables/2061.table
new file mode 100644
index 0000000..592d51e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2061.table
@@ -0,0 +1,3 @@
+0 0 INERTIAL NAVIGATION SYSTEM
+1 1 OMEGA
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2062.table b/definitions/bufr/tables/0/wmo/25/codetables/2062.table
new file mode 100644
index 0000000..2d0f4e2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2062.table
@@ -0,0 +1,7 @@
+0 0 ASDAR
+1 1 ASDAR (ACARS ALSO AVAILABLE BUT NOT OPERATIVE)
+2 2 ASDAR (ACARS ALSO AVAILABLE AND OPERATIVE)
+3 3 ACARS
+4 4 ACARS (ASDAR ALSO AVAILABLE BUT NOT OPERATIVE)
+5 5 ACARS (ASDAR ALSO AVAILABLE AND OPERATIVE)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2064.table b/definitions/bufr/tables/0/wmo/25/codetables/2064.table
new file mode 100644
index 0000000..7414302
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2064.table
@@ -0,0 +1,4 @@
+0 0 GOOD
+1 1 BAD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2066.table b/definitions/bufr/tables/0/wmo/25/codetables/2066.table
new file mode 100644
index 0000000..a3865dc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2066.table
@@ -0,0 +1,9 @@
+0 0 INTERMET IMS 2000
+1 1 INTERMET IMS 1500C
+2 2 SHANGHAI GTC1
+3 3 NANJING GTC2
+4 4 NANJING GFE(L)1
+5 5 MARL-A RADAR
+6 6 VEKTOR-M RADAR
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2070.table b/definitions/bufr/tables/0/wmo/25/codetables/2070.table
new file mode 100644
index 0000000..5a098ea
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2070.table
@@ -0,0 +1,13 @@
+0 0 ACTUAL LOCATION IN SECONDS
+1 1 ACTUAL LOCATION IN MINUTES
+2 2 ACTUAL LOCATION IN DEGREES
+3 3 ACTUAL LOCATION IN DECIDEGREES
+4 4 ACTUAL LOCATION IN CENTIDEGREES
+5 5 REFERENCED TO CHECKPOINT IN SECONDS
+6 6 REFERENCED TO CHECKPOINT IN MINUTES
+7 7 REFERENCED TO CHECKPOINT IN DEGREES
+8 8 REFERENCED TO CHECKPOINT IN DECIDEGREES
+9 9 REFERENCED TO CHECKPOINT IN CENTIDEGREES
+10 10 ACTUAL LOCATION IN TENTHS OF A MINUTE
+11 11 REFERENCED TO CHECKPOINT IN TENTHS OF A MINUTE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2080.table b/definitions/bufr/tables/0/wmo/25/codetables/2080.table
new file mode 100644
index 0000000..c68a39d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2080.table
@@ -0,0 +1,7 @@
+0 0 KAYSAM
+1 1 TOTEX
+2 2 KKS
+3 3 GUANGZHOU SHUANGYI (CHINA)
+4 4 CHEMCHINA ZHUZHOU (CHINA)
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2081.table b/definitions/bufr/tables/0/wmo/25/codetables/2081.table
new file mode 100644
index 0000000..4c0f1dc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2081.table
@@ -0,0 +1,9 @@
+0 0 GP26
+1 1 GP28
+2 2 GP30
+3 3 HM26
+4 4 HM28
+5 5 HM30
+6 6 SV16
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2083.table b/definitions/bufr/tables/0/wmo/25/codetables/2083.table
new file mode 100644
index 0000000..bac421f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2083.table
@@ -0,0 +1,6 @@
+0 0 HIGH BAY
+1 1 LOW BAY
+2 2 BALLOON-INFLATED LAUNCH SYSTEM (BILS)
+3 3 ROOF-TOP BILS
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2084.table b/definitions/bufr/tables/0/wmo/25/codetables/2084.table
new file mode 100644
index 0000000..be6430a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2084.table
@@ -0,0 +1,5 @@
+0 0 HYDROGEN
+1 1 HELIUM
+2 2 NATURAL GAS
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2095.table b/definitions/bufr/tables/0/wmo/25/codetables/2095.table
new file mode 100644
index 0000000..580fe93
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2095.table
@@ -0,0 +1,7 @@
+0 0 CAPACITANCE ANEROID
+1 1 DERIVED FROM GPS
+2 2 RESISTIVE STRAIN GAUGE
+3 3 SILICON CAPACITOR
+4 4 DERIVED FROM RADAR HEIGHT
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2096.table b/definitions/bufr/tables/0/wmo/25/codetables/2096.table
new file mode 100644
index 0000000..e0e1815
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2096.table
@@ -0,0 +1,8 @@
+0 0 ROD THERMISTOR
+1 1 BEAD THERMISTOR
+2 2 CAPACITANCE BEAD
+3 3 CAPACITANCE WIRE
+4 4 RESISTIVE SENSOR
+5 5 CHIP THERMISTOR
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2097.table b/definitions/bufr/tables/0/wmo/25/codetables/2097.table
new file mode 100644
index 0000000..23661d5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2097.table
@@ -0,0 +1,12 @@
+0 0 VIZ MARK II CARBON HYGRISTOR
+1 1 VIZ B2 HYGRISTOR
+2 2 VAISALA A-HUMICAP
+3 3 VAISALA H-HUMICAP
+4 4 CAPACITANCE SENSOR
+5 5 VAISALA RS90
+6 6 SIPPICAN MARK IIA CARBON HYGRISTOR
+7 7 TWIN ALTERNATIVELY HEATED HUMICAP CAPACITANCE SENSOR
+8 8 HUMICAP CAPACITANCE SENSOR WITH ACTIVE DE-ICING METHOD
+9 9 CARBON HYGRISTOR
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2099.table b/definitions/bufr/tables/0/wmo/25/codetables/2099.table
new file mode 100644
index 0000000..74cb817
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2099.table
@@ -0,0 +1,5 @@
+0 0 HH POLARIZATION
+1 1 VV POLARIZATION
+2 2 HV POLARIZATION REAL VALUED COMPONENT
+3 3 HV POLARIZATION IMAGINARY VALUED COMPONENT
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2101.table b/definitions/bufr/tables/0/wmo/25/codetables/2101.table
new file mode 100644
index 0000000..efdb3ec
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2101.table
@@ -0,0 +1,10 @@
+0 0 CENTRE FRONT-FED PARABOLOID
+1 1 OFFSET FRONT-FED PARABOLOID
+2 2 CENTRE CASSEGRAIN PARABOLOID
+3 3 OFFSET CASSEGRAIN PARABOLOID
+4 4 PLANAR ARRAY
+5 5 COAXIAL-COLLINEAR ARRAY
+6 6 YAGI ELEMENTS ARRAY
+7 7 MICROSTRIP
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2103.table b/definitions/bufr/tables/0/wmo/25/codetables/2103.table
new file mode 100644
index 0000000..417d2c9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2103.table
@@ -0,0 +1 @@
+1 1 RADAR ANTENNA IS PROTECTED BY A RADOME
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2104.table b/definitions/bufr/tables/0/wmo/25/codetables/2104.table
new file mode 100644
index 0000000..e39a153
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2104.table
@@ -0,0 +1,9 @@
+0 0 HORIZONTAL POLARIZATION
+1 1 VERTICAL POLARIZATION
+2 2 RIGHT CIRCULAR POLARIZATION
+3 3 LEFT CIRCULAR POLARIZATION
+4 4 HORIZONTAL AND VERTICAL POLARIZATION
+5 5 RIGHT AND LEFT CIRCULAR POLARIZATION
+6 6 QUASI-HORIZONTAL POLARIZATION
+7 7 QUASI-VERTICAL POLARIZATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/21066.table b/definitions/bufr/tables/0/wmo/25/codetables/21066.table
new file mode 100644
index 0000000..9bcafea
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/21066.table
@@ -0,0 +1,11 @@
+1 1 PROCESSING EQUIPMENT NOT WORKING
+2 2 EQUIPMENT FAILED
+3 3 PRF CODE CHANGED DURING IMAGE GENERATION
+4 4 SAMPLING WINDOW CHANGED DURING IMAGE GENERATION
+5 5 GAIN CHANGED DURING IMAGE GENERATION
+6 6 CHIRP REPLICA EXCEEDS SPECIFIED VALUE
+7 7 INPUT DATA MEAN AND STANDARD DEVIATION OF IN-PHASE AND QUADRATURE OUT OF RANGE
+8 8 DOPPLER CENTROID CONFIDENCE > MMCC VALUE
+9 9 DOPPLER CENTROID ABSOLUTE VALUE > PRF/2
+10 10 DOPPLER AMBIGUITY CONFIDENCE < MMCC VALUE
+11 11 OUTPUT DATA MEAN AND STANDARD DEVIATION =< MMCC VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/21067.table b/definitions/bufr/tables/0/wmo/25/codetables/21067.table
new file mode 100644
index 0000000..a0ed399
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/21067.table
@@ -0,0 +1,12 @@
+1 1 NO FOREBEAM CALCULATION
+2 2 NO MIDBEAM CALCULATION
+3 3 NO AFTBEAM CALCULATION
+4 4 FOREBEAM ARCING DETECTED
+5 5 MIDBEAM ARCING DETECTED
+6 6 AFTBEAM ARCING DETECTED
+7 7 ANY BEAM NOISE CONTENT ABOVE OR EQUAL TO THRESHOLD
+8 8 LAND (ANY LAND IN CELL FOOTPRINT)
+9 9 AUTONOMOUS AMBIGUITY REMOVAL NOT USED
+10 10 METEOROLOGICAL BACKGROUND NOT USED
+11 11 MINIMUM RESIDUAL EXCEEDED THRESHOLD
+12 12 FRAME CHECKSUM ERROR DETECTED
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/21068.table b/definitions/bufr/tables/0/wmo/25/codetables/21068.table
new file mode 100644
index 0000000..102171f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/21068.table
@@ -0,0 +1,7 @@
+1 1 STANDARD DEVIATION OF WIND SPEED OUTSIDE MMCC LIMIT
+2 2 STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT OUTSIDE MMCC LIMIT
+3 3 STANDARD DEVIATION OF ALTITUDE OUTSIDE MMCC LIMIT
+4 4 MEAN PEAKINESS OUTSIDE MMCC LIMIT
+5 5 FRAME CHECKSUM ERROR DETECTED
+6 6 HEIGHT-TIME LOOP TIME CONSTANT CORRECTION NOT PERFORMED
+7 7 NOT ENOUGH MEASUREMENTS (N < 10)
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/21069.table b/definitions/bufr/tables/0/wmo/25/codetables/21069.table
new file mode 100644
index 0000000..320890a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/21069.table
@@ -0,0 +1,9 @@
+1 1 12.0 µM CHANNEL PRESENT IN SOURCE DATA
+2 2 11.0 µM CHANNEL PRESENT IN SOURCE DATA
+3 3 3.7 µM CHANNEL PRESENT IN SOURCE DATA
+4 4 1.6 µM CHANNEL PRESENT IN SOURCE DATA
+5 5 CLOUD IDENTIFICATION USED 1.6 µM HISTOGRAM REFLECTANCE CLOUD TEST
+6 6 1.6 µM HISTOGRAM REFLECTANCE CLOUD TEST USED DYNAMIC THRESHOLD
+7 7 SUN GLINT DETECTED BY 1.6 µM REFLECTANCE CLOUD TEST
+8 8 3.7 µM CHANNEL USED IN SEA-SURFACE TEMPERATURE RETRIEVAL
+9 9 SEA-SURFACE TEMPERATURE DERIVATION USED DAYTIME DATA (NIGHT-TIME IF ZERO)
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/21070.table b/definitions/bufr/tables/0/wmo/25/codetables/21070.table
new file mode 100644
index 0000000..669655f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/21070.table
@@ -0,0 +1,22 @@
+1 1 CELL 1: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+2 2 CELL 2: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+3 3 CELL 3: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+4 4 CELL 4: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+5 5 CELL 5: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+6 6 CELL 6: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+7 7 CELL 7: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+8 8 CELL 8: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+9 9 CELL 9: NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+10 10 CELL 1: DUAL VIEW SST USED 3.7 MICRON CHANNEL
+11 11 CELL 2: DUAL VIEW SST USED 3.7 MICRON CHANNEL
+12 12 CELL 3: DUAL VIEW SST USED 3.7 MICRON CHANNEL
+13 13 CELL 4: DUAL VIEW SST USED 3.7 MICRON CHANNEL
+14 14 CELL 5: DUAL VIEW SST USED 3.7 MICRON CHANNEL
+15 15 CELL 6: DUAL VIEW SST USED 3.7 MICRON CHANNEL
+16 16 CELL 7: DUAL VIEW SST USED 3.7 MICRON CHANNEL
+17 17 CELL 8: DUAL VIEW SST USED 3.7 MICRON CHANNEL
+18 18 CELL 9: DUAL VIEW SST USED 3.7 MICRON CHANNEL
+19 19 NADIR VIEW CONTAINS DAY-TIME DATA (NIGHT IF ZERO)
+20 20 FORWARD VIEW CONTAINS DAY-TIME DATA (NIGHT IF ZERO)
+21 21 RECORD CONTAINS CONTRIBUTIONS FROM INSTRUMENT SCANS ACQUIRED WHEN ERS PLATFORM NOT IN YAW-STEERING MODE
+22 22 RECORD CONTAINS CONTRIBUTIONS FROM INSTRUMENT SCANS FOR WHICH PRODUCT CONFIDENCE DATA SHOW QUALITY IS POOR OR UNKNOWN
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/21072.table b/definitions/bufr/tables/0/wmo/25/codetables/21072.table
new file mode 100644
index 0000000..99e4b1c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/21072.table
@@ -0,0 +1,3 @@
+1 1 HEIGHT ERROR CORRECTION APPLIED INSTEAD OF OPEN LOOP CALIBRATION
+2 2 MICROWAVE SOUNDER USED FOR TROPOSPHERE CORRECTION
+3 3 AGC OUTPUT CORRECTION APPLIED INSTEAD OF OPEN LOOP CALIBRATION
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/21073.table b/definitions/bufr/tables/0/wmo/25/codetables/21073.table
new file mode 100644
index 0000000..9538fa5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/21073.table
@@ -0,0 +1,8 @@
+1 1 BLANK DATA RECORD
+2 2 TEST
+3 3 CALIBRATION (CLOSED LOOP)
+4 4 BITE
+5 5 ACQUISITION ON ICE
+6 6 ACQUISITION ON OCEAN
+7 7 TRACKING ON ICE
+8 8 TRACKING ON OCEAN
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/21076.table b/definitions/bufr/tables/0/wmo/25/codetables/21076.table
new file mode 100644
index 0000000..bc52ac5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/21076.table
@@ -0,0 +1,4 @@
+0 0 LINEAR
+1 1 LOGARITHMIC (BASE E)
+2 2 LOGARITHMIC (BASE 10)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/21109.table b/definitions/bufr/tables/0/wmo/25/codetables/21109.table
new file mode 100644
index 0000000..deb577a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/21109.table
@@ -0,0 +1,7 @@
+1 1 NOT ENOUGH GOOD SIGMA-0 AVAILABLE FOR WIND RETRIEVAL
+2 2 POOR AZIMUTH DIVERSITY AMONG SIGMA-0 FOR WIND RETRIEVAL
+8 8 SOME PORTION OF WIND VECTOR CELL IS OVER LAND
+9 9 SOME PORTION OF WIND VECTOR CELL IS OVER ICE
+10 10 WIND RETRIEVAL NOT PERFORMED FOR WIND VECTOR CELL
+11 11 REPORTED WIND SPEED IS GREATER THAN 30 M S-1
+12 12 REPORTED WIND SPEED IS LESS THAN OR EQUAL TO 3 M S-1
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/21115.table b/definitions/bufr/tables/0/wmo/25/codetables/21115.table
new file mode 100644
index 0000000..9e90133
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/21115.table
@@ -0,0 +1,10 @@
+1 1 SIGMA-0 MEASUREMENT IS NOT USABLE
+2 2 SIGNAL TO NOISE RATIO IS LOW
+3 3 SIGMA-0 IS NEGATIVE
+4 4 SIGMA-0 IS OUTSIDE OF ACCEPTABLE RANGE
+5 5 SCATTEROMETER PULSE QUALITY IS NOT ACCEPTABLE
+6 6 SIGMA-0 CELL LOCATION ALGORITHM DOES NOT CONVERGE
+7 7 FREQUENCY SHIFT LIES BEYOND THE RANGE OF THE X FACTOR TABLE
+8 8 SPACECRAFT TEMPERATURE IS BEYOND CALIBRATION COEFFICIENT RANGE
+9 9 NO APPLICABLE ALTITUDE RECORDS WERE FOUND FOR THIS SIGMA-0
+10 10 INTERPOLATED EPHEMERIS DATA ARE NOT ACCEPTABLE FOR THIS SIGMA-0
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/21116.table b/definitions/bufr/tables/0/wmo/25/codetables/21116.table
new file mode 100644
index 0000000..10b5c53
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/21116.table
@@ -0,0 +1,16 @@
+1 1 CALIBRATION/MEASUREMENT PULSE FLAG (1)
+2 2 CALIBRATION/MEASUREMENT PULSE FLAG (2)
+3 3 OUTER ANTENNA BEAM
+4 4 SIGMA-0 CELL IS AFT OF SPACECRAFT
+5 5 CURRENT MODE (1)
+6 6 CURRENT MODE (2)
+7 7 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (1)
+8 8 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (2)
+9 9 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (3)
+10 10 LOW RESOLUTION MODE - WHOLE PULSE DATA
+11 11 SCATTEROMETER ELECTRONIC SUBSYSTEM B
+12 12 ALTERNATE SPIN RATE - 19.8 RPM
+13 13 RECEIVER PROTECTION ON
+14 14 SLICES PER COMPOSITE FLAG (1)
+15 15 SLICES PER COMPOSITE FLAG (2)
+16 16 SLICES PER COMPOSITE FLAG (3)
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/21119.table b/definitions/bufr/tables/0/wmo/25/codetables/21119.table
new file mode 100644
index 0000000..e17e3c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/21119.table
@@ -0,0 +1,14 @@
+0 0 RESERVED
+1 1 SASS
+2 2 SASS2
+3 3 NSCAT0
+4 4 NSCAT1
+5 5 NSCAT2
+6 6 QSCAT0
+7 7 QSCAT1
+31 31 CMOD1
+32 32 CMOD2
+33 33 CMOD3
+34 34 CMOD4
+35 35 CMOD5
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/21144.table b/definitions/bufr/tables/0/wmo/25/codetables/21144.table
new file mode 100644
index 0000000..1f082e6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/21144.table
@@ -0,0 +1 @@
+1 1 RAIN
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/21148.table b/definitions/bufr/tables/0/wmo/25/codetables/21148.table
new file mode 100644
index 0000000..11413ed
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/21148.table
@@ -0,0 +1,2 @@
+1 1 NON SHORT SCALE VARIATION
+2 2 SHORT SCALE VARIATION
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2115.table b/definitions/bufr/tables/0/wmo/25/codetables/2115.table
new file mode 100644
index 0000000..c7e866c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2115.table
@@ -0,0 +1,7 @@
+0 0 PDB
+1 1 RSOIS
+2 2 ASOS
+3 3 PSYCHROMETER
+4 4 F420
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/21150.table b/definitions/bufr/tables/0/wmo/25/codetables/21150.table
new file mode 100644
index 0000000..8510046
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/21150.table
@@ -0,0 +1,4 @@
+0 0 DATA FROM SINGLE GROUND STATION (NO CO-LOCATION)
+1 1 DATA FROM MULTIPLE GROUND STATION (CO-LOCATED DATA)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/21155.table b/definitions/bufr/tables/0/wmo/25/codetables/21155.table
new file mode 100644
index 0000000..a7837cf
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/21155.table
@@ -0,0 +1,16 @@
+1 1 NOT ENOUGH GOOD SIGMA-0 AVAILABLE FOR WIND RETRIEVAL
+2 2 POOR AZIMUTH DIVERSITY AMONG SIGMA-0 FOR WIND RETRIEVAL
+3 3 ANY BEAM NOISE CONTENT ABOVE THRESHOLD
+4 4 PRODUCT MONITORING NOT USED
+5 5 PRODUCT MONITORING FLAG
+6 6 KNMI QUALITY CONTROL FAILS
+7 7 VARIATIONAL QUALITY CONTROL FAILS
+8 8 SOME PORTION OF WIND VECTOR CELL IS OVER LAND
+9 9 SOME PORTION OF WIND VECTOR CELL IS OVER ICE
+10 10 WIND RETRIEVAL NOT PERFORMED FOR WIND VECTOR CELL
+11 11 REPORTED WIND SPEED IS GREATER THAN 30 M/S
+12 12 REPORTED WIND SPEED IS LESS THAN OR EQUAL TO 3 M/S
+13 13 RAIN FLAG FOR THE WIND VECTOR CELL IS NOT USABLE
+14 14 RAIN FLAG ALGORITHM DETECTS RAIN
+15 15 NO METEOROLOGICAL BACKGROUND USED
+16 16 DATA ARE REDUNDANT
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/21158.table b/definitions/bufr/tables/0/wmo/25/codetables/21158.table
new file mode 100644
index 0000000..dd53c51
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/21158.table
@@ -0,0 +1,4 @@
+0 0 ACCEPTABLE
+1 1 NOT ACCEPTABLE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/21159.table b/definitions/bufr/tables/0/wmo/25/codetables/21159.table
new file mode 100644
index 0000000..1703f9b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/21159.table
@@ -0,0 +1,4 @@
+0 0 GOOD
+1 1 USABLE
+2 2 BAD
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/21169.table b/definitions/bufr/tables/0/wmo/25/codetables/21169.table
new file mode 100644
index 0000000..9b93444
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/21169.table
@@ -0,0 +1,4 @@
+0 0 NO ICE PRESENT
+1 1 ICE PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2119.table b/definitions/bufr/tables/0/wmo/25/codetables/2119.table
new file mode 100644
index 0000000..0640af6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2119.table
@@ -0,0 +1,8 @@
+0 0 INTERMEDIATE FREQUENCY CALIBRATION MODE (IF CAL)
+1 1 BUILT-IN TEST EQUIPMENT DIGITAL (BITE DGT)
+2 2 BUILT-IN TEST EQUIPMENT RADIO FREQUENCY (BITE RF)
+3 3 PRESET TRACKING (PSET TRK)
+4 4 PRESET LOOP OUT
+5 5 ACQUISITION
+6 6 TRACKING
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2131.table b/definitions/bufr/tables/0/wmo/25/codetables/2131.table
new file mode 100644
index 0000000..f4336ef
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2131.table
@@ -0,0 +1 @@
+1 1 STC OPERATIONAL
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2137.table b/definitions/bufr/tables/0/wmo/25/codetables/2137.table
new file mode 100644
index 0000000..40d33fd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2137.table
@@ -0,0 +1,4 @@
+1 1 3:2
+2 2 4:3
+3 3 5:4
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2138.table b/definitions/bufr/tables/0/wmo/25/codetables/2138.table
new file mode 100644
index 0000000..a574506
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2138.table
@@ -0,0 +1,3 @@
+1 1 CLOCKWISE ROTATION
+2 2 COUNTERCLOCKWISE ROTATION
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2139.table b/definitions/bufr/tables/0/wmo/25/codetables/2139.table
new file mode 100644
index 0000000..f6cf802
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2139.table
@@ -0,0 +1,3 @@
+0 0 SIRAL NOMINAL
+1 1 SIRAL REDUNDANT
+2 2 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2143.table b/definitions/bufr/tables/0/wmo/25/codetables/2143.table
new file mode 100644
index 0000000..975d068
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2143.table
@@ -0,0 +1,21 @@
+0 0 RESERVED
+1 1 BREWER SPECTROPHOTOMETER
+2 2 CAVER TEICHERT
+3 3 DOBSON
+4 4 DOBSON (JAPAN)
+5 5 EHMET
+6 6 FECKER TELESCOPE
+7 7 HOELPER
+8 8 JODMETER
+9 9 FILTER OZONOMETER M-83
+10 10 MAST
+11 11 OXFORD
+12 12 PAETZOLD
+13 13 REGENER
+14 14 RESERVED FOR FUTURE USE
+15 15 VASSY FILTER OZONOMETER
+16 16 CARBON IODIDE
+17 17 SURFACE OZONE BUBBLER
+18 18 FILTER OZONOMETER M-124
+19 19 ECC SONDE
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2144.table b/definitions/bufr/tables/0/wmo/25/codetables/2144.table
new file mode 100644
index 0000000..5b0f37b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2144.table
@@ -0,0 +1,8 @@
+0 0 DIRECT SUN
+1 1 DIRECT SUN, ATTENUATOR #1
+2 2 DIRECT SUN, ATTENUATOR #2
+3 3 FOCUSED MOON
+4 4 FOCUSED SUN
+5 5 FOCUSED SUN CORRECTED WITH ADJACENT SKY MEASUREMENTS
+6 6 ZENITH SKY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2145.table b/definitions/bufr/tables/0/wmo/25/codetables/2145.table
new file mode 100644
index 0000000..1944e69
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2145.table
@@ -0,0 +1,9 @@
+0 0 WAVELENGTHS AD ORDINARY SETTING
+1 1 WAVELENGTHS BD ORDINARY SETTING
+2 2 WAVELENGTHS CD ORDINARY SETTING
+3 3 WAVELENGTHS CC' ORDINARY SETTING
+4 4 WAVELENGTHS AD FOCUSED IMAGE
+5 5 WAVELENGTHS BD FOCUSED IMAGE
+6 6 WAVELENGTHS CD FOCUSED IMAGE
+7 7 WAVELENGTHS CC' FOCUSED IMAGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2146.table b/definitions/bufr/tables/0/wmo/25/codetables/2146.table
new file mode 100644
index 0000000..871b357
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2146.table
@@ -0,0 +1,11 @@
+0 0 ON DIRECT SUN
+1 1 ON DIRECT MOON
+2 2 ON BLUE ZENITH SKY
+3 3 ON ZENITH CLOUD (UNIFORM STRATIFIED LAYER OF SMALL OPACITY)
+4 4 ON ZENITH CLOUD (UNIFORM OR MODERATELY VARIABLE LAYER OF MEDIUM OPACITY)
+5 5 ON ZENITH CLOUD (UNIFORM OR MODERATELY VARIABLE LAYER OF LARGE OPACITY)
+6 6 ON ZENITH CLOUD (HIGHLY VARIABLE OPACITY, WITH OR WITHOUT PRECIPITATION)
+7 7 ON ZENITH CLOUD (FOG)
+8 8 ON ZENITH HAZE
+9 9 ON DIRECT SUN THROUGH THIN CLOUD, FOG OR HAZE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2147.table b/definitions/bufr/tables/0/wmo/25/codetables/2147.table
new file mode 100644
index 0000000..4ff1c92
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2147.table
@@ -0,0 +1,11 @@
+0 0 RESERVED
+1 1 DIRECT LEASED CIRCUIT
+2 2 DIALLED UP CONNECTION
+3 3 INTERNET ISP
+4 4 DCP VIA SATELLITE (MTSAT, METEOSAT, ETC.)
+5 5 VSAT
+6 6 GAN,* BGAN**
+7 7 THISS TERMINAL
+8 8 IRIDIUM SATELLITES
+9 9 MOBILE TELEPHONY
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2148.table b/definitions/bufr/tables/0/wmo/25/codetables/2148.table
new file mode 100644
index 0000000..7d8ca51
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2148.table
@@ -0,0 +1,12 @@
+0 0 RESERVED
+1 1 ARGOS
+2 2 GPS
+3 3 GOES DCP
+4 4 METEOSAT DCP
+5 5 ORBCOMM
+6 6 INMARSAT
+7 7 IRIDIUM
+8 8 IRIDIUM AND GPS
+9 9 ARGOS-3
+10 10 ARGOS-4
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2149.table b/definitions/bufr/tables/0/wmo/25/codetables/2149.table
new file mode 100644
index 0000000..04638d2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2149.table
@@ -0,0 +1,38 @@
+0 0 UNSPECIFIED DRIFTING BUOY
+1 1 STANDARD LAGRANGIAN DRIFTER (GLOBAL DRIFTER PROGRAMME)
+2 2 STANDARD FGGE TYPE DRIFTING BUOY (NON-LAGRANGIAN METEOROLOGICAL DRIFTING BUOY)
+3 3 WIND MEASURING FGGE TYPE DRIFTING BUOY (NON-LAGRANGIAN METEOROLOGICAL DRIFTING BUOY)
+4 4 ICE DRIFTER
+5 5 SVPG STANDARD LAGRANGIAN DRIFTER WITH GPS
+6 6 SVP-HR DRIFTER WITH HIGH-RESOLUTION TEMPERATURE OR THERMISTOR STRING
+7 7 RESERVED
+8 8 UNSPECIFIED SUBSURFACE FLOAT
+9 9 SOFAR
+10 10 ALACE
+11 11 MARVOR
+12 12 RAFOS
+13 13 PROVOR
+14 14 SOLO
+15 15 APEX
+16 16 UNSPECIFIED MOORED BUOY
+17 17 NOMAD
+18 18 3-METRE DISCUS
+19 19 10-12-METRE DISCUS
+20 20 ODAS 30 SERIES
+21 21 ATLAS (E.G. TAO AREA)
+22 22 TRITON BUOY
+23 23 FLEX MOORING (E.G. TIP AREA)
+24 24 OMNIDIRECTIONAL WAVERIDER
+25 25 DIRECTIONAL WAVERIDER
+26 26 SUBSURFACE ARGO FLOAT
+27 27 PALACE
+28 28 NEMO
+29 29 NINJA
+30 30 ICE BUOY/FLOAT (POPS OR ITP)
+34 34 MOORING OCEANOGRAPHIC
+35 35 MOORING METEOROLOGICAL
+36 36 MOORING MULTIDISCIPLINARY (OCEANSITES)
+37 37 MOORING TIDE GAUGE OR TSUNAMI BUOY
+38 38 ICE BEACON
+39 39 ICE MASS BALANCE BUOY
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2150.table b/definitions/bufr/tables/0/wmo/25/codetables/2150.table
new file mode 100644
index 0000000..8193b57
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2150.table
@@ -0,0 +1,55 @@
+0 0 RESERVED
+1 1 HIRS 1
+2 2 HIRS 2
+3 3 HIRS 3
+4 4 HIRS 4
+5 5 HIRS 5
+6 6 HIRS 6
+7 7 HIRS 7
+8 8 HIRS 8
+9 9 HIRS 9
+10 10 HIRS 10
+11 11 HIRS 11
+12 12 HIRS 12
+13 13 HIRS 13
+14 14 HIRS 14
+15 15 HIRS 15
+16 16 HIRS 16
+17 17 HIRS 17
+18 18 HIRS 18
+19 19 HIRS 19
+20 20 HIRS 20
+21 21 MSU 1
+22 22 MSU 2
+23 23 MSU 3
+24 24 MSU 4
+25 25 SSU 1
+26 26 SSU 2
+27 27 SSU 3
+28 28 AMSU-A 1
+29 29 AMSU-A 2
+30 30 AMSU-A 3
+31 31 AMSU-A 4
+32 32 AMSU-A 5
+33 33 AMSU-A 6
+34 34 AMSU-A 7
+35 35 AMSU-A 8
+36 36 AMSU-A 9
+37 37 AMSU-A 10
+38 38 AMSU-A 11
+39 39 AMSU-A 12
+40 40 AMSU-A 13
+41 41 AMSU-A 14
+42 42 AMSU-A 15
+43 43 AMSU-B 1 / MHS 1
+44 44 AMSU-B 2 / MHS 2
+45 45 AMSU-B 3 / MHS 3
+46 46 AMSU-B 4 / MHS 4
+47 47 AMSU-B 5 / MHS 5
+48 48 AVHRR 1
+49 49 AVHRR 2
+50 50 AVHRR 3A
+51 51 AVHRR 3B
+52 52 AVHRR 4
+53 53 AVHRR 5
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2151.table b/definitions/bufr/tables/0/wmo/25/codetables/2151.table
new file mode 100644
index 0000000..45c80df
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2151.table
@@ -0,0 +1,11 @@
+0 0 HIRS
+1 1 MSU
+2 2 SSU
+3 3 AMSU-A1-1
+4 4 AMSU-A1-2
+5 5 AMSU-A2
+6 6 AMSU-B
+7 7 AVHRR
+8 8 RESERVED
+9 9 MHS
+2047 2047 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2152.table b/definitions/bufr/tables/0/wmo/25/codetables/2152.table
new file mode 100644
index 0000000..880c384
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2152.table
@@ -0,0 +1,13 @@
+1 1 HIGH-RESOLUTION INFRARED SOUNDER (HIRS)
+2 2 MICROWAVE SOUNDING UNIT (MSU)
+3 3 STRATOSPHERIC SOUNDING UNIT (SSU)
+4 4 AMI WIND MODE
+5 5 AMI WAVE MODE
+6 6 AMI IMAGE MODE
+7 7 RADAR ALTIMETER
+8 8 ATSR
+9 9 GEOSTATIONARY IMAGER
+10 10 GEOSTATIONARY SOUNDER
+11 11 GEOSTATIONARY EARTH RADIATION (GERB)
+12 12 MULTI-CHANNEL SCANNING RADIOMETER
+13 13 POLAR-ORBITING IMAGER
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2158.table b/definitions/bufr/tables/0/wmo/25/codetables/2158.table
new file mode 100644
index 0000000..97c4449
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2158.table
@@ -0,0 +1,8 @@
+1 1 MISMATCH IN RED VEC HPA
+2 2 MISMATCH IN RED VEC RFSS
+3 3 PTR CALIBRATION BAND 320 MHZ (KU)
+4 4 PTR CALIBRATION BAND 80 MHZ (KU)
+5 5 PTR CALIBRATION BAND 20 MHZ (KU)
+6 6 PTR CALIBRATION BAND 160 MHZ (S)
+7 7 KU FLIGHT CALIBRATION PARAMETERS AVAILABLE
+8 8 S FLIGHT CALIBRATION PARAMETERS AVAILABLE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2159.table b/definitions/bufr/tables/0/wmo/25/codetables/2159.table
new file mode 100644
index 0000000..63cb87c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2159.table
@@ -0,0 +1,7 @@
+1 1 TEMPERATURE INCONSISTENCY
+2 2 DATA IS MISSING
+3 3 REDUNDANCY CHANNEL
+4 4 POWER BUS PROTECTION
+5 5 OVERVOLTAGE/OVERLOAD PROTECTION
+6 6 RESERVED
+7 7 RESERVED
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2160.table b/definitions/bufr/tables/0/wmo/25/codetables/2160.table
new file mode 100644
index 0000000..fd7f372
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2160.table
@@ -0,0 +1,11 @@
+0 0 RESERVED
+1 1 10 TO LESS THAN 20 MM
+2 2 RESERVED
+3 3 20 TO LESS THAN 40 MM
+4 4 RESERVED
+5 5 40 TO LESS THAN 60 MM
+6 6 RESERVED
+7 7 60 TO LESS THAN 90 MM
+8 8 90 TO LESS THAN 110 MM
+9 9 110 MM AND GREATER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2163.table b/definitions/bufr/tables/0/wmo/25/codetables/2163.table
new file mode 100644
index 0000000..8cac631
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2163.table
@@ -0,0 +1,16 @@
+0 0 AUTO EDITOR
+1 1 IRW HEIGHT ASSIGNMENT
+2 2 WV HEIGHT ASSIGNMENT
+3 3 H2O INTERCEPT HEIGHT ASSIGNMENT
+4 4 CO2 SLICING HEIGHT ASSIGNMENT
+5 5 LOW PIXEL MAX GRADIENT
+6 6 HIGHER PIXEL MAX GRADIENT
+7 7 PRIMARY HEIGHT ASSIGNMENT
+8 8 LAYER THICKNESS ASSIGNMENT
+9 9 CUMULATIVE CONTRIBUTION FUNCTION - 10 PER CENT HEIGHT
+10 10 CUMULATIVE CONTRIBUTION FUNCTION - 50 PER CENT HEIGHT
+11 11 CUMULATIVE CONTRIBUTION FUNCTION - 90 PER CENT HEIGHT
+12 12 CUMULATIVE CONTRIBUTION FUNCTION - HEIGHT OF MAXIMUM GRADIENT
+13 13 IR / TWO WV CHANNEL RATIOING METHOD
+14 14 COMPOSITE HEIGHT ASSIGNMENT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2164.table b/definitions/bufr/tables/0/wmo/25/codetables/2164.table
new file mode 100644
index 0000000..01dc970
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2164.table
@@ -0,0 +1,4 @@
+0 0 LP - NORMS LEAST SQUARE MINIMUM
+1 1 EN - EUCLIDEAN NORM WITH RADIANCE CORRELATION
+2 2 CC - CROSS CORRELATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2165.table b/definitions/bufr/tables/0/wmo/25/codetables/2165.table
new file mode 100644
index 0000000..628be0e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2165.table
@@ -0,0 +1,7 @@
+1 1 CLEAR PATH
+2 2 PARTLY CLOUDY PATH
+3 3 CLOUDY PATH
+4 4 APODIZED
+5 5 UNAPODIZED
+6 6 RECONSTRUCTED
+7 7 CLOUD CLEARED
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2166.table b/definitions/bufr/tables/0/wmo/25/codetables/2166.table
new file mode 100644
index 0000000..efac38f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2166.table
@@ -0,0 +1,6 @@
+0 0 TYPE NOT DEFINED
+1 1 AUTOMATED STATISTICAL REGRESSION
+2 2 CLEAR PATH
+3 3 PARTLY CLOUDY PATH
+4 4 CLOUDY PATH
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2167.table b/definitions/bufr/tables/0/wmo/25/codetables/2167.table
new file mode 100644
index 0000000..acb2f9d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2167.table
@@ -0,0 +1,4 @@
+0 0 METHOD NOT DEFINED
+1 1 1B RAW RADIANCE
+2 2 PROCESSED RADIANCE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2169.table b/definitions/bufr/tables/0/wmo/25/codetables/2169.table
new file mode 100644
index 0000000..bd31667
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2169.table
@@ -0,0 +1,5 @@
+0 0 CUP ROTOR
+1 1 PROPELLER ROTOR
+2 2 WIND OBSERVATION THROUGH AMBIENT NOISE (WOTAN)
+3 3 SONIC
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2170.table b/definitions/bufr/tables/0/wmo/25/codetables/2170.table
new file mode 100644
index 0000000..05bab00
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2170.table
@@ -0,0 +1,5 @@
+0 0 SPECTRASENSORS WVSS-II, VERSION 1
+1 1 SPECTRASENSORS WVSS-II, VERSION 2
+2 2 SPECTRASENSORS WVSS-II, VERSION 3
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2172.table b/definitions/bufr/tables/0/wmo/25/codetables/2172.table
new file mode 100644
index 0000000..3c3641a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2172.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 RETRIEVAL FROM A NADIR SOUNDING
+2 2 RETRIEVAL FROM A LIMB SOUNDING
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2175.table b/definitions/bufr/tables/0/wmo/25/codetables/2175.table
new file mode 100644
index 0000000..2cf2a3d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2175.table
@@ -0,0 +1,9 @@
+0 0 MANUAL MEASUREMENT
+1 1 TIPPING BUCKET METHOD
+2 2 WEIGHING METHOD
+3 3 OPTICAL METHOD
+4 4 PRESSURE METHOD
+5 5 FLOAT METHOD
+6 6 DROP COUNTER METHOD
+14 14 OTHERS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2176.table b/definitions/bufr/tables/0/wmo/25/codetables/2176.table
new file mode 100644
index 0000000..2c27a6f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2176.table
@@ -0,0 +1,6 @@
+0 0 MANUAL OBSERVATION
+1 1 VIDEO CAMERA METHOD
+2 2 INFRARED METHOD
+3 3 LASER METHOD
+14 14 OTHERS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2177.table b/definitions/bufr/tables/0/wmo/25/codetables/2177.table
new file mode 100644
index 0000000..e7bb67a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2177.table
@@ -0,0 +1,6 @@
+0 0 MANUAL OBSERVATION
+1 1 ULTRASONIC METHOD
+2 2 VIDEO CAMERA METHOD
+3 3 LASER METHOD
+14 14 OTHERS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2178.table b/definitions/bufr/tables/0/wmo/25/codetables/2178.table
new file mode 100644
index 0000000..f4f8b59
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2178.table
@@ -0,0 +1,5 @@
+0 0 MANUAL OBSERVATION
+1 1 OPTICAL METHOD
+2 2 CAPACITIVE METHOD
+14 14 OTHERS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2179.table b/definitions/bufr/tables/0/wmo/25/codetables/2179.table
new file mode 100644
index 0000000..9e9ba18
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2179.table
@@ -0,0 +1,6 @@
+0 0 MANUAL OBSERVATION
+1 1 VAISALA ALGORITHM
+2 2 ASOS (FAA) ALGORITHM
+3 3 AWOS (CANADA) ALGORITHM
+14 14 OTHERS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2180.table b/definitions/bufr/tables/0/wmo/25/codetables/2180.table
new file mode 100644
index 0000000..0b21b2c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2180.table
@@ -0,0 +1,8 @@
+0 0 MANUAL OBSERVATION
+1 1 OPTICAL SCATTER SYSTEM COMBINED WITH PRECIPITATION OCCURRENCE SENSING SYSTEM
+2 2 FORWARD AND/OR BACKSCATTER SYSTEM OF VISIBLE LIGHT
+3 3 FORWARD AND/OR BACKSCATTER SYSTEM OF INFRARED LIGHT
+4 4 INFRARED LIGHT EMITTING DIODE (IRED) SYSTEM
+5 5 DOPPLER RADAR SYSTEM
+14 14 OTHERS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2181.table b/definitions/bufr/tables/0/wmo/25/codetables/2181.table
new file mode 100644
index 0000000..5096dc4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2181.table
@@ -0,0 +1,5 @@
+1 1 RAIN DETECTOR
+2 2 FREEZING RAIN SENSOR
+3 3 ICE DETECTION SENSOR
+4 4 HAIL AND ICE PELLET SENSOR
+20 20 OTHERS
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2182.table b/definitions/bufr/tables/0/wmo/25/codetables/2182.table
new file mode 100644
index 0000000..4ffab26
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2182.table
@@ -0,0 +1,7 @@
+0 0 MANUAL MEASUREMENT
+1 1 TRANSMISSOMETER SYSTEM (BASE > 25 M)
+2 2 TRANSMISSOMETER SYSTEM (BASE < 25 M)
+3 3 FORWARD SCATTER SYSTEM
+4 4 BACKSCATTER SYSTEM
+14 14 OTHERS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2183.table b/definitions/bufr/tables/0/wmo/25/codetables/2183.table
new file mode 100644
index 0000000..a804ea1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2183.table
@@ -0,0 +1,9 @@
+0 0 MANUAL OBSERVATION
+1 1 CEILOMETER SYSTEM
+2 2 INFRARED CAMERA SYSTEM
+3 3 MICROWAVE VISUAL CAMERA SYSTEM
+4 4 SKY IMAGER SYSTEM
+5 5 VIDEO TIME-LAPSED CAMERA SYSTEM
+6 6 MICROPULSE LIDAR (MPL) SYSTEM
+14 14 OTHERS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2184.table b/definitions/bufr/tables/0/wmo/25/codetables/2184.table
new file mode 100644
index 0000000..cf5ee84
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2184.table
@@ -0,0 +1,9 @@
+0 0 MANUAL OBSERVATION
+1 1 LIGHTNING IMAGING SENSOR
+2 2 ELECTRICAL STORM IDENTIFICATION SENSOR
+3 3 MAGNETIC FINDER SENSOR
+4 4 LIGHTNING STRIKE SENSOR
+5 5 FLASH COUNTER
+6 6 ATDNET VLF WAVEFORM CORRELATED SENSOR
+14 14 OTHERS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2185.table b/definitions/bufr/tables/0/wmo/25/codetables/2185.table
new file mode 100644
index 0000000..45b0810
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2185.table
@@ -0,0 +1,7 @@
+0 0 MANUAL MEASUREMENT
+1 1 BALANCED FLOATING METHOD
+2 2 PRESSURE METHOD
+3 3 ULTRASONIC METHOD
+4 4 HYDRAULIC METHOD
+14 14 OTHERS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2186.table b/definitions/bufr/tables/0/wmo/25/codetables/2186.table
new file mode 100644
index 0000000..05e1a36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2186.table
@@ -0,0 +1,23 @@
+1 1 PRECIPITATION-UNKNOWN TYPE
+2 2 LIQUID PRECIPITATION NOT FREEZING
+3 3 LIQUID FREEZING PRECIPITATION
+4 4 DRIZZLE
+5 5 RAIN
+6 6 SOLID PRECIPITATION
+7 7 SNOW
+8 8 SNOW GRAINS
+9 9 SNOW PELLETS
+10 10 ICE PELLETS
+11 11 ICE CRYSTALS
+12 12 DIAMOND DUST
+13 13 SMALL HAIL
+14 14 HAIL
+15 15 GLAZE
+16 16 RIME
+17 17 SOFT RIME
+18 18 HARD RIME
+19 19 CLEAR ICE
+20 20 WET SNOW
+21 21 HOAR FROST
+22 22 DEW
+23 23 WHITE DEW
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2187.table b/definitions/bufr/tables/0/wmo/25/codetables/2187.table
new file mode 100644
index 0000000..def3d2f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2187.table
@@ -0,0 +1,11 @@
+1 1 DUST/SAND WHIRL
+2 2 SQUALLS
+3 3 SAND STORM
+4 4 DUST STORM
+5 5 LIGHTNING - CLOUD TO SURFACE
+6 6 LIGHTNING - CLOUD TO CLOUD
+7 7 LIGHTNING - DISTANT
+8 8 THUNDERSTORM
+9 9 FUNNEL CLOUD NOT TOUCHING SURFACE
+10 10 FUNNEL CLOUD TOUCHING SURFACE
+11 11 SPRAY
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2188.table b/definitions/bufr/tables/0/wmo/25/codetables/2188.table
new file mode 100644
index 0000000..bb8114c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2188.table
@@ -0,0 +1,10 @@
+1 1 FOG
+2 2 ICE FOG
+3 3 STEAM FOG
+7 7 MIST
+8 8 HAZE
+9 9 SMOKE
+10 10 VOLCANIC ASH
+11 11 DUST
+12 12 SAND
+13 13 SNOW
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2189.table b/definitions/bufr/tables/0/wmo/25/codetables/2189.table
new file mode 100644
index 0000000..61ac9e3
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2189.table
@@ -0,0 +1,4 @@
+1 1 MANUAL OBSERVATION
+2 2 ALL LIGHTNING STRIKES WITHOUT DISCRIMINATION
+3 3 LIGHTNING STRIKES CLOUD TO GROUND ONLY
+4 4 ALL LIGHTNING STRIKES WITH DISCRIMINATION BETWEEN CLOUD TO GROUND AND CLOUD TO CLOUD
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/2191.table b/definitions/bufr/tables/0/wmo/25/codetables/2191.table
new file mode 100644
index 0000000..2e96256
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/2191.table
@@ -0,0 +1,4 @@
+0 0 GEOPOTENTIAL HEIGHT CALCULATED FROM PRESSURE
+1 1 GEOPOTENTIAL HEIGHT CALCULATED FROM GPS HEIGHT
+2 2 GEOPOTENTIAL HEIGHT CALCULATED FROM RADAR HEIGHT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/22056.table b/definitions/bufr/tables/0/wmo/25/codetables/22056.table
new file mode 100644
index 0000000..28ddbf4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/22056.table
@@ -0,0 +1,4 @@
+0 0 UPWARDS PROFILE
+1 1 DOWNWARDS PROFILE
+2 2 HORIZONTAL
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/22060.table b/definitions/bufr/tables/0/wmo/25/codetables/22060.table
new file mode 100644
index 0000000..b73ad32
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/22060.table
@@ -0,0 +1,4 @@
+0 0 DROGUE IS DETACHED
+1 1 DROGUE IS ATTACHED
+2 2 DROGUE STATUS UNKNOWN
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/22061.table b/definitions/bufr/tables/0/wmo/25/codetables/22061.table
new file mode 100644
index 0000000..aa8c62b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/22061.table
@@ -0,0 +1,11 @@
+0 0 CALM (GLASSY)
+1 1 CALM (RIPPLED)
+2 2 SMOOTH (WAVELETS)
+3 3 SLIGHT
+4 4 MODERATE
+5 5 ROUGH
+6 6 VERY ROUGH
+7 7 HIGH
+8 8 VERY HIGH
+9 9 PHENOMENAL
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/22067.table b/definitions/bufr/tables/0/wmo/25/codetables/22067.table
new file mode 100644
index 0000000..621b7a4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/22067.table
@@ -0,0 +1,101 @@
+1 1 SIPPICAN T-4
+2 2 SIPPICAN T-4
+11 11 SIPPICAN T-5
+21 21 SIPPICAN FAST DEEP
+31 31 SIPPICAN T-6
+32 32 SIPPICAN T-6
+41 41 SIPPICAN T-7
+42 42 SIPPICAN T-7
+51 51 SIPPICAN DEEP BLUE
+52 52 SIPPICAN DEEP BLUE
+61 61 SIPPICAN T-10
+71 71 SIPPICAN T-11
+81 81 SIPPICAN AXBT (300 M PROBES)
+201 201 TSK T-4
+202 202 TSK T-4
+211 211 TSK T-6
+212 212 TSK T-6
+221 221 TSK T-7
+222 222 TSK T-7
+231 231 TSK T-5
+241 241 TSK T-10
+251 251 TSK DEEP BLUE
+252 252 TSK DEEP BLUE
+261 261 TSK AXBT
+401 401 SPARTON XBT-1
+411 411 SPARTON XBT-3
+421 421 SPARTON XBT-4
+431 431 SPARTON XBT-5
+441 441 SPARTON XBT-5DB
+451 451 SPARTON XBT-6
+461 461 SPARTON XBT-7
+462 462 SPARTON XBT-7
+471 471 SPARTON XBT-7DB
+481 481 SPARTON XBT-10
+491 491 SPARTON XBT-20
+501 501 SPARTON XBT-20DB
+510 510 SPARTON 536 AXBT
+700 700 SIPPICAN XCTD STANDARD
+710 710 SIPPICAN XCTD DEEP
+720 720 SIPPICAN AXCTD
+730 730 SIPPICAN SXCTD
+741 741 TSK XCTD/XCTD-1
+742 742 TSK XCTD-2
+743 743 TSK XCTD-2F
+744 744 TSK XCTD-3
+745 745 TSK XCTD-4
+751 751 TSK AXCTD
+780 780 SEA-BIRD SBE21 SEACAT THERMOSALINOGRAPH
+781 781 SEA-BIRD SBE45 MICROTSG THERMOSALINOGRAPH
+800 800 MECHANICAL BT
+810 810 HYDROCAST
+820 820 THERMISTOR CHAIN
+825 825 TEMPERATURE (SONIC) AND PRESSURE PROBES
+830 830 CTD
+831 831 CTD-P-ALACE FLOAT
+837 837 ARVOR_C, SBE CONDUCTIVITY SENSOR
+838 838 ARVOR_D, SBE CONDUCTIVITY SENSOR
+839 839 PROVOR–II, SBE CONDUCTIVITY SENSOR
+840 840 PROVOR, NO CONDUCTIVITY SENSOR
+841 841 PROVOR, SEA-BIRD CONDUCTIVITY SENSOR
+842 842 PROVOR, FSI CONDUCTIVITY SENSOR
+843 843 POLAR OCEAN PROFILING SYSTEM (POPS), PROVOR, SBE CTD
+844 844 PROFILING FLOAT, ARVOR, SEA-BIRD CONDUCTIVITY SENSOR
+845 845 WEBB RESEARCH, NO CONDUCTIVITY SENSOR
+846 846 WEBB RESEARCH, SEA-BIRD CONDUCTIVITY SENSOR
+847 847 WEBB RESEARCH, FSI CONDUCTIVITY SENSOR
+848 848 APEX–EM, SBE CONDUCTIVITY SENSOR
+849 849 APEX_D, SBE CONDUCTIVITY SENSOR
+850 850 SOLO, NO CONDUCTIVITY SENSOR
+851 851 SOLO, SEA-BIRD CONDUCTIVITY SENSOR
+852 852 SOLO, FSI CONDUCTIVITY SENSOR
+853 853 PROFILING FLOAT, SOLO2 (SCRIPPS), SEA-BIRD CONDUCTIVITY SENSOR
+854 854 S2A, SBE CONDUCTIVITY SENSOR
+855 855 PROFILING FLOAT, NINJA, NO CONDUCTIVITY SENSOR
+856 856 PROFILING FLOAT, NINJA, SBE CONDUCTIVITY SENSOR
+857 857 PROFILING FLOAT, NINJA, FSI CONDUCTIVITY SENSOR
+858 858 PROFILING FLOAT, NINJA, TSK CONDUCTIVITY SENSOR
+859 859 PROFILING FLOAT, NEMO, NO CONDUCTIVITY SENSOR
+860 860 PROFILING FLOAT, NEMO, SBE CONDUCTIVITY SENSOR
+861 861 PROFILING FLOAT, NEMO, FSI CONDUCTIVITY SENSOR
+862 862 SOLO_D, SBE CONDUCTIVITY SENSOR
+863 863 NAVIS–A, SBE CONDUCTIVITY SENSOR
+864 864 NINJA_D, SBE CONDUCTIVITY SENSOR
+865 865 NOVA, SBE CONDUCTIVITY SENSOR
+866 866 ALAMO, NO CONDUCTIVITY SENSOR
+867 867 ALAMO, RBR CONDUCTIVITY SENSOR
+868 868 ALAMO, SBE CONDUCTIVITY SENSOR
+900 900 SIPPICAN LMP-5 XBT
+901 901 ICE-TETHERED PROFILER (ITP), SBE CTD
+902 902 BROOKE OCEAN MOVING VESSEL PROFILER (MVP)
+903 903 SEA-BIRD CTD
+904 904 AML OCEANOGRAPHIC CTD
+905 905 FALMOUTH SCIENTIFIC CTD
+906 906 OCEAN SENSORS CTD
+907 907 VALEPORT CTD
+908 908 OCEANSCIENCE MVP
+909 909 IDRONAUT CTD
+910 910 SEA-BIRD SBE 38
+995 995 INSTRUMENT ATTACHED TO MARINE MAMMALS
+996 996 INSTRUMENT ATTACHED TO ANIMALS OTHER THAN MARINE MAMMALS
+1023 1023 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/22068.table b/definitions/bufr/tables/0/wmo/25/codetables/22068.table
new file mode 100644
index 0000000..f6ddeb2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/22068.table
@@ -0,0 +1,43 @@
+1 1 SIPPICAN STRIP CHART RECORDER
+2 2 SIPPICAN MK2A/SSQ-61
+3 3 SIPPICAN MK-9
+4 4 SIPPICAN AN/BHQ-7/MK8
+5 5 SIPPICAN MK-12
+6 6 SIPPICAN MK-21
+7 7 SIPPICAN MK-8 LINEAR RECORDER
+8 8 SIPPICAN MK-10
+10 10 SPARTON SOC BT/SV PROCESSOR MODEL 100
+11 11 LOCKHEED-SANDERS MODEL OL5005
+20 20 ARGOS XBT-ST
+21 21 CLS-ARGOS/PROTECNO XBT-ST MODEL-1
+22 22 CLS-ARGOS/PROTECNO XBT-ST MODEL-2
+30 30 BATHY SYSTEMS SA-810
+31 31 SCRIPPS METROBYTE CONTROLLER
+32 32 MURAYAMA DENKI Z-60-16 III
+33 33 MURAYAMA DENKI Z-60-16 II
+34 34 PROTECNO ETSM2
+35 35 NAUTILUS MARINE SERVICE NMS-XBT
+40 40 TSK MK-2A
+41 41 TSK MK-2S
+42 42 TSK MK-30
+43 43 TSK MK-30N
+45 45 TSK MK-100
+46 46 TSK MK-130 COMPATIBLE RECORDER FOR BOTH XBT AND XCTD
+47 47 TSK MK-130A XCTD RECORDER
+48 48 TSK AXBT RECEIVER MK-300
+49 49 TSK MK-150/MK-150N COMPATIBLE RECORDER FOR BOTH XBT AND XCTD
+50 50 JMA ASTOS
+60 60 ARGOS COMMUNICATIONS, SAMPLING ON UP TRANSIT
+61 61 ARGOS COMMUNICATIONS, SAMPLING ON DOWN TRANSIT
+62 62 ORBCOMM COMMUNICATIONS, SAMPLING ON UP TRANSIT
+63 63 ORBCOMM COMMUNICATIONS, SAMPLING ON DOWN TRANSIT
+64 64 IRIDIUM COMMUNICATIONS, SAMPLING ON UP TRANSIT
+65 65 IRIDIUM COMMUNICATIONS, SAMPLING ON DOWN TRANSIT
+70 70 CSIRO DEVIL-1 XBT ACQUISITION SYSTEM
+71 71 CSIRO DEVIL-2 XBT ACQUISITION SYSTEM
+72 72 TURO/CSIRO QUOLL XBT ACQUISITION SYSTEM
+80 80 APPLIED MICROSYSTEMS LTD., MICRO-SVT&P
+81 81 SEA MAMMAL RESEARCH UNIT, UNIV. ST. ANDREWS, UK, UNCORRECTED SALINITY FROM A SEA MAMMAL MOUNTED INSTRUMENT
+82 82 SEA MAMMAL RESEARCH UNIT, UNIV. ST. ANDREWS, UK, CORRECTED SALINITY FROM A SEA MAMMAL MOUNTED INSTRUMENT
+99 99 UNKNOWN
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/22120.table b/definitions/bufr/tables/0/wmo/25/codetables/22120.table
new file mode 100644
index 0000000..8c747ce
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/22120.table
@@ -0,0 +1,13 @@
+0 0 GOOD DATA
+1 1 MAXIMUM (HIGH) WATER LEVEL LIMIT EXCEEDED
+2 2 MINIMUM (LOW) WATER LEVEL LIMIT EXCEEDED
+3 3 RATE OF CHANGE LIMIT FOR WATER LEVEL EXCEEDED
+4 4 FLAT LIMIT FOR WATER LEVEL EXCEEDED
+5 5 OBSERVED MINUS PREDICTED WATER LEVEL VALUE LIMIT EXCEEDED
+6 6 OBSERVED VALUE FROM PRIMARY WATER LEVEL SENSOR MINUS BACKUP WATER LEVEL SENSOR
+7 7 VALUE EXCEEDED SPECIFIED TOLERANCE FROM EXPECTED VALUE
+8 8 WATER LEVEL QA PARAMETER (SIGMAS AND/OR OUTLIERS) LIMITS EXCEEDED
+9 9 SEA TEMPERATURE OUTSIDE OF EXPECTED RANGE
+10 10 MULTIPLE QC CHECKS (ABOVE) FAILED
+11 11 NO AUTOMATED WATER LEVEL CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/22121.table b/definitions/bufr/tables/0/wmo/25/codetables/22121.table
new file mode 100644
index 0000000..7d4dfa8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/22121.table
@@ -0,0 +1,9 @@
+0 0 OPERATIONAL
+1 1 POSSIBLE CLOGGING PROBLEM OR OTHERWISE DEGRADED WATER LEVEL DATA
+2 2 POSSIBLE DATUM SHIFT
+3 3 UNKNOWN STATUS OF WATER LEVEL SENSOR
+4 4 SUSPECTED OR KNOWN SEA TEMPERATURE SENSOR PROBLEM
+5 5 MULTIPLE POSSIBLE PROBLEMS (ABOVE)
+6 6 BAD DATA - DO NOT DISSEMINATE!
+7 7 NO MANUAL WATER LEVEL CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/22122.table b/definitions/bufr/tables/0/wmo/25/codetables/22122.table
new file mode 100644
index 0000000..aa9d5eb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/22122.table
@@ -0,0 +1,8 @@
+0 0 GOOD DATA FROM ALL SENSORS
+1 1 WIND DIRECTION OUTSIDE OF ALLOWABLE RANGE
+2 2 WIND SPEED OUTSIDE OF EXPECTED RANGE
+3 3 BAROMETRIC PRESSURE OUTSIDE OF EXPECTED RANGE
+4 4 AIR TEMPERATURE OUTSIDE OF EXPECTED RANGE
+5 5 MULTIPLE SENSORS FAILED QC CHECKS
+6 6 NO AUTOMATED METEOROLOGICAL DATA CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/22123.table b/definitions/bufr/tables/0/wmo/25/codetables/22123.table
new file mode 100644
index 0000000..acfb616
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/22123.table
@@ -0,0 +1,9 @@
+0 0 OPERATIONAL
+1 1 SUSPECTED OR KNOWN PROBLEM WITH WIND SENSOR
+2 2 SUSPECTED OR KNOWN PROBLEM WITH BAROMETRIC PRESSURE SENSOR
+3 3 SUSPECTED OR KNOWN PROBLEM WITH AIR TEMPERATURE SENSOR
+4 4 UNKNOWN STATUS OF ALL SENSORS
+5 5 SUSPECTED OR KNOWN PROBLEMS WITH MULTIPLE SENSORS
+6 6 BAD DATA - DO NOT DISSEMINATE!
+7 7 NO MANUAL METEOROLOGICAL DATA CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/22178.table b/definitions/bufr/tables/0/wmo/25/codetables/22178.table
new file mode 100644
index 0000000..355848c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/22178.table
@@ -0,0 +1,12 @@
+0 0 UNKNOWN
+1 1 LM-2A DECK-MOUNTED
+2 2 LM-3A HAND-HELD
+3 3 LM-4A THRU-HULL
+10 10 AL-12 TSK AUTOLAUNCHER (UP TO 12 PROBES)
+20 20 SIO XBT AUTOLAUNCHER (UP TO 6 PROBES)
+30 30 AOML XBT V6 AUTOLAUNCHER (UP TO 6 DEEP BLUE PROBES)
+31 31 AOML XBT V8.0 AUTOLAUNCHER (UP TO 8 DEEP BLUE PROBES)
+32 32 AOML XBT V8.1 AUTOLAUNCHER (UP TO 8 DEEP BLUE AND FAST DEEP PROBES)
+90 90 CSIRO DEVIL AUTOLAUNCHER
+100 100 MFSTEP AUTOLAUNCHER (MEDITERRANEAN)
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/23001.table b/definitions/bufr/tables/0/wmo/25/codetables/23001.table
new file mode 100644
index 0000000..92ac5de
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/23001.table
@@ -0,0 +1,5 @@
+0 0 RESERVED
+1 1 ARTICLES 1 AND 2
+2 2 ARTICLE 3
+3 3 ARTICLE 5.2
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/23002.table b/definitions/bufr/tables/0/wmo/25/codetables/23002.table
new file mode 100644
index 0000000..12815c6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/23002.table
@@ -0,0 +1,16 @@
+0 0 RESERVED
+1 1 NUCLEAR REACTOR ON GROUND
+2 2 NUCLEAR REACTOR AT SEA
+3 3 NUCLEAR REACTOR IN SPACE
+4 4 NUCLEAR FUEL FACILITY
+5 5 RADIOACTIVE WASTE MANAGEMENT FACILITY
+6 6 TRANSPORT OF NUCLEAR FUEL OR RADIOACTIVE WASTE
+7 7 STORAGE OF NUCLEAR FUEL OR RADIOACTIVE WASTE
+8 8 MANUFACTURE OF RADIO-ISOTOPES
+9 9 USE OF RADIO-ISOTOPES
+10 10 STORAGE OF RADIO-ISOTOPES
+11 11 DISPOSAL OF RADIO-ISOTOPES
+12 12 TRANSPORT OF RADIO-ISOTOPES
+13 13 USE OF RADIO-ISOTOPES FOR POWER GENERATION
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/23003.table b/definitions/bufr/tables/0/wmo/25/codetables/23003.table
new file mode 100644
index 0000000..e3e891f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/23003.table
@@ -0,0 +1,8 @@
+0 0 NO RELEASE
+1 1 RELEASE TO ATMOSPHERE
+2 2 RELEASE TO WATER
+3 3 RELEASE TO BOTH ATMOSPHERE AND WATER
+4 4 EXPECTED RELEASE TO ATMOSPHERE
+5 5 EXPECTED RELEASE TO WATER
+6 6 EXPECTED RELEASE TO BOTH ATMOSPHERE AND WATER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/23004.table b/definitions/bufr/tables/0/wmo/25/codetables/23004.table
new file mode 100644
index 0000000..383731c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/23004.table
@@ -0,0 +1,6 @@
+0 0 NO COUNTERMEASURES
+1 1 EVACUATION
+2 2 SHELTERING
+3 3 PROPHYLAXIS
+4 4 WATER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/23005.table b/definitions/bufr/tables/0/wmo/25/codetables/23005.table
new file mode 100644
index 0000000..c5ff5ae
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/23005.table
@@ -0,0 +1,4 @@
+0 0 INCIDENT STATE DOES NOT UNDERSTAND WHAT HAPPENED
+1 1 INCIDENT STATE KNOWS THE CAUSE OF THE INCIDENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/23006.table b/definitions/bufr/tables/0/wmo/25/codetables/23006.table
new file mode 100644
index 0000000..fe7706a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/23006.table
@@ -0,0 +1,8 @@
+0 0 NO IMPROVEMENT
+1 1 UNSTABLE
+2 2 NO DETERIORATION
+3 3 IMPROVING
+4 4 STABLE
+5 5 DETERIORATING
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/23007.table b/definitions/bufr/tables/0/wmo/25/codetables/23007.table
new file mode 100644
index 0000000..59fc043
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/23007.table
@@ -0,0 +1,5 @@
+0 0 NO RELEASE
+1 1 RELEASE HAS STOPPED
+2 2 RELEASE
+3 3 RELEASE IS CONTINUING
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/23008.table b/definitions/bufr/tables/0/wmo/25/codetables/23008.table
new file mode 100644
index 0000000..4ac5c58
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/23008.table
@@ -0,0 +1,4 @@
+0 0 GASEOUS
+1 1 PARTICULATE
+2 2 MIXTURE OF GASEOUS AND PARTICULATE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/23009.table b/definitions/bufr/tables/0/wmo/25/codetables/23009.table
new file mode 100644
index 0000000..4ac5c58
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/23009.table
@@ -0,0 +1,4 @@
+0 0 GASEOUS
+1 1 PARTICULATE
+2 2 MIXTURE OF GASEOUS AND PARTICULATE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/23016.table b/definitions/bufr/tables/0/wmo/25/codetables/23016.table
new file mode 100644
index 0000000..ae84bae
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/23016.table
@@ -0,0 +1,4 @@
+0 0 NO SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT
+1 1 SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT POSSIBLE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/23018.table b/definitions/bufr/tables/0/wmo/25/codetables/23018.table
new file mode 100644
index 0000000..ccdcc45
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/23018.table
@@ -0,0 +1,6 @@
+0 0 RELEASE NO LONGER OCCURRING
+1 1 RELEASE STILL OCCURRING
+2 2 RELEASE EXPECTED TO INCREASE IN NEXT SIX HOURS
+3 3 RELEASE EXPECTED TO REMAIN CONSTANT IN NEXT SIX HOURS
+4 4 RELEASE EXPECTED TO DECREASE IN NEXT SIX HOURS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/23031.table b/definitions/bufr/tables/0/wmo/25/codetables/23031.table
new file mode 100644
index 0000000..cf20e26
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/23031.table
@@ -0,0 +1,4 @@
+0 0 PLUME WILL NOT ENCOUNTER RAIN IN INCIDENT STATE
+1 1 PLUME WILL ENCOUNTER RAIN IN INCIDENT STATE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/23032.table b/definitions/bufr/tables/0/wmo/25/codetables/23032.table
new file mode 100644
index 0000000..0f439b7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/23032.table
@@ -0,0 +1,4 @@
+0 0 NO SIGNIFICANT CHANGE EXPECTED WITHIN THE NEXT SIX HOURS
+1 1 ANTICIPATED SIGNIFICANT CHANGE EXPECTED WITHIN THE NEXT SIX HOURS
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/24003.table b/definitions/bufr/tables/0/wmo/25/codetables/24003.table
new file mode 100644
index 0000000..2daa810
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/24003.table
@@ -0,0 +1,5 @@
+0 0 NOBLE GASES
+1 1 IODINES
+2 2 CAESIUMS
+3 3 TRANSURANICS
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25004.table b/definitions/bufr/tables/0/wmo/25/codetables/25004.table
new file mode 100644
index 0000000..dfe4517
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25004.table
@@ -0,0 +1,4 @@
+0 0 INCOHERENT
+1 1 COHERENT (DOPPLER)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25005.table b/definitions/bufr/tables/0/wmo/25/codetables/25005.table
new file mode 100644
index 0000000..bc693a7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25005.table
@@ -0,0 +1,4 @@
+0 0 LOGARITHM - 2.5 DB
+1 1 LINEAR
+2 2 SPECIAL
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25006.table b/definitions/bufr/tables/0/wmo/25/codetables/25006.table
new file mode 100644
index 0000000..bf9d1f5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25006.table
@@ -0,0 +1,5 @@
+0 0 ZH TO R CONVERSION
+1 1 (ZH, ZDR) TO (NO, DO) TO R
+2 2 (Z (F1), Z (F2)) TO ATTENUATION TO R
+6 6 OTHER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25009.table b/definitions/bufr/tables/0/wmo/25/codetables/25009.table
new file mode 100644
index 0000000..bf34fb2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25009.table
@@ -0,0 +1,4 @@
+1 1 NONE
+2 2 CALIBRATION TARGET OR SIGNAL
+3 3 AGAINST RAINGAUGES
+4 4 AGAINST OTHER INSTRUMENTS (DISDROMETER - ATTENUATION)
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25010.table b/definitions/bufr/tables/0/wmo/25/codetables/25010.table
new file mode 100644
index 0000000..e88b3ca
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25010.table
@@ -0,0 +1,8 @@
+0 0 NONE
+1 1 MAP
+2 2 INSERTION OF HIGHER ELEVATION DATA AND MAP
+3 3 ANALYSIS OF THE FLUCTUATING LOGARITHM SIGNAL (CLUTTER DETECTION)
+4 4 EXTRACTION OF THE FLUCTUATING PART OF LINEAR SIGNAL (CLUTTER SUPPRESSION)
+5 5 CLUTTER SUPPRESSION - DOPPLER
+6 6 MULTIPARAMETER ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25011.table b/definitions/bufr/tables/0/wmo/25/codetables/25011.table
new file mode 100644
index 0000000..f739498
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25011.table
@@ -0,0 +1,4 @@
+0 0 NONE
+1 1 MAP OF CORRECTION FACTORS
+2 2 INTERPOLATION (AZIMUTH OR ELEVATION)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25012.table b/definitions/bufr/tables/0/wmo/25/codetables/25012.table
new file mode 100644
index 0000000..c869a4a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25012.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE
+1 1 SOFTWARE
+2 2 HARDWARE AND SOFTWARE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25013.table b/definitions/bufr/tables/0/wmo/25/codetables/25013.table
new file mode 100644
index 0000000..b91ea71
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25013.table
@@ -0,0 +1 @@
+1 1 BRIGHT-BAND CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25015.table b/definitions/bufr/tables/0/wmo/25/codetables/25015.table
new file mode 100644
index 0000000..043e587
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25015.table
@@ -0,0 +1 @@
+1 1 RADOME ATTENUATION CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25017.table b/definitions/bufr/tables/0/wmo/25/codetables/25017.table
new file mode 100644
index 0000000..ed48487
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25017.table
@@ -0,0 +1 @@
+1 1 PRECIPITATION ATTENUATION CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25020.table b/definitions/bufr/tables/0/wmo/25/codetables/25020.table
new file mode 100644
index 0000000..6133da3
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25020.table
@@ -0,0 +1,4 @@
+0 0 FFT (FAST FOURIER TRANSFORM)
+1 1 PPP (PULSE-PAIR PROCESSING)
+2 2 VPC (VECTOR-PHASE CHANGE)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25021.table b/definitions/bufr/tables/0/wmo/25/codetables/25021.table
new file mode 100644
index 0000000..314716b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25021.table
@@ -0,0 +1,5 @@
+1 1 SIMPLE AVERAGE
+2 2 CONSENSUS AVERAGE
+3 3 MEDIAN CHECK
+4 4 VERTICAL CONSISTENCY CHECK
+5 5 OTHER
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25022.table b/definitions/bufr/tables/0/wmo/25/codetables/25022.table
new file mode 100644
index 0000000..9584878
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25022.table
@@ -0,0 +1,8 @@
+1 1 UNPROCESSED
+2 2 LAND SUSPECTED
+3 3 WIND SPEED TOO LARGE
+4 4 ICE DETECTED
+5 5 RAIN DETECTED (MICROWAVE RETRIEVALS ONLY)
+6 6 CLOUDY DETECTED (INFRA-RED RETRIEVALS ONLY)
+7 7 COSMETIC VALUE
+8 8 SST OUT OF RANGE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25023.table b/definitions/bufr/tables/0/wmo/25/codetables/25023.table
new file mode 100644
index 0000000..e4840dc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25023.table
@@ -0,0 +1,8 @@
+1 1 DEFAULT CONFIDENCE VALUE HAS BEEN USED
+2 2 DEFAULT BIAS AND STANDARD DEVIATION HAVE BEEN USED
+3 3 SUN GLINT SUSPECTED
+4 4 SEA ICE RETRIEVAL FOR MICROWAVE DATA
+5 5 HIGH WIND SPEED RETRIEVAL
+6 6 INACCURATE SST DUE TO LOW SST (< 285K) (ONLY APPLIES TO THE TMI INSTRUMENT)
+7 7 RELAXED RAIN CONTAMINATION SUSPECTED
+8 8 POTENTIAL SIDE LOBE CONTAMINATION
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25024.table b/definitions/bufr/tables/0/wmo/25/codetables/25024.table
new file mode 100644
index 0000000..81b2638
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25024.table
@@ -0,0 +1,13 @@
+0 0 UNPROCESSED INFRARED RETRIEVAL
+1 1 CLOUDY RETRIEVALS
+2 2 BAD: DATA THAT ARE PROBABLY CONTAMINATED BY CLOUD
+3 3 SUSPECT DATA
+4 4 ACCEPTABLE DATA
+5 5 EXCELLENT DATA
+6 6 COOL SKIN SUSPECTED
+10 10 UNPROCESSED MICROWAVE RETRIEVAL
+11 11 QUESTIONABLE MICROWAVE RETRIEVAL THAT MAY BE CONTAMINATED
+12 12 ACCEPTABLE MICROWAVE RETRIEVAL
+13 13 HIGH PROBABILITY OF DIURNAL VARIABILITY
+14 14 RESERVED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25029.table b/definitions/bufr/tables/0/wmo/25/codetables/25029.table
new file mode 100644
index 0000000..fb00d01
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25029.table
@@ -0,0 +1,5 @@
+1 1 RESERVED
+2 2 CALIBRATION TARGET OR SIGNAL
+3 3 AGAINST RAINGAUGES
+4 4 AGAINST OTHER INSTRUMENTS (DISDROMETER - ATTENUATION)
+5 5 RESERVED
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25030.table b/definitions/bufr/tables/0/wmo/25/codetables/25030.table
new file mode 100644
index 0000000..c3235d6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25030.table
@@ -0,0 +1,4 @@
+0 0 RUNNING MEAN SEA-SURFACE TEMPERATURE NOT USED BECAUSE USAGE CRITERIA NOT MET
+1 1 RUNNING MEAN SEA-SURFACE TEMPERATURE NOT USED BECAUSE DATA NOT AVAILABLE
+2 2 RUNNING MEAN SEA-SURFACE TEMPERATURE USED AS PREDICTOR
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25031.table b/definitions/bufr/tables/0/wmo/25/codetables/25031.table
new file mode 100644
index 0000000..16ff950
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25031.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 NO THINNING APPLIED (ALL NATIVE MODEL LEVELS ARE INCLUDED FROM BASE TO TOP OF PSEUDO-SOUNDING)
+2 2 NATIVE MODEL LEVELS ARE PRESENT ONLY IF THEY ARE SIGNIFICANT LEVELS AS PER REGULATIONS B/C 25 FOR CONVENTIONAL TEMP SOUNDINGS
+3 3 A PREDEFINED SUBSET OF NATIVE MODEL LEVELS IS PRESENT
+4 4 NO NATIVE MODEL LEVELS ARE PRESENT.  ALL PROFILE LEVELS ARE INTERPOLATED TO A PREDEFINED SET OF PRESSURE COORDINATE LEVELS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25032.table b/definitions/bufr/tables/0/wmo/25/codetables/25032.table
new file mode 100644
index 0000000..9b894f4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25032.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 DATA FROM LOW MODE
+2 2 DATA FROM HIGH MODE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25033.table b/definitions/bufr/tables/0/wmo/25/codetables/25033.table
new file mode 100644
index 0000000..e7141c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25033.table
@@ -0,0 +1,4 @@
+0 0 WIND PROFILER OPERATING IN SUBMODE A
+1 1 WIND PROFILER OPERATING IN SUBMODE B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25034.table b/definitions/bufr/tables/0/wmo/25/codetables/25034.table
new file mode 100644
index 0000000..473338a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25034.table
@@ -0,0 +1,3 @@
+1 1 TEST A PERFORMED AND FAILED
+2 2 TEST B PERFORMED AND FAILED
+3 3 TEST RESULTS INCONCLUSIVE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25035.table b/definitions/bufr/tables/0/wmo/25/codetables/25035.table
new file mode 100644
index 0000000..a0c8faa
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25035.table
@@ -0,0 +1,8 @@
+0 0 NOT DEFINED
+1 1 INDIVIDUAL VOLTAGE DEFLECTION
+2 2 CURRENT BASED, ABOVE A THRESHOLD
+3 3 VOLTAGE BASED, ABOVE A THRESHOLD
+4 4 CONSENSUS OF SENSORS, CURRENT ABOVE A THRESHOLD
+5 5 CONSENSUS OF SENSORS, VOLTAGE ABOVE A THRESHOLD
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25036.table b/definitions/bufr/tables/0/wmo/25/codetables/25036.table
new file mode 100644
index 0000000..79ebd88
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25036.table
@@ -0,0 +1,4 @@
+0 0 NETWORK OF SEVERAL DIRECTION-FINDERS OPERATING ON THE SAME INDIVIDUAL ATMOSPHERICS
+1 1 NETWORK OF SEVERAL ARRIVAL-TIME STATIONS OPERATING ON THE SAME INDIVIDUAL ATMOSPHERICS
+6 6 SINGLE STATION RANGE BEARING TECHNIQUE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25040.table b/definitions/bufr/tables/0/wmo/25/codetables/25040.table
new file mode 100644
index 0000000..3ddf12e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25040.table
@@ -0,0 +1,10 @@
+0 0 NON-SPECIFIC MODE
+1 1 FIRST GUESS DATA
+2 2 CLOUD DATA
+3 3 AVERAGE VECTOR DATA
+4 4 PRIMARY DATA
+5 5 GUESS DATA
+6 6 VECTOR DATA
+7 7 TRACER DATA; THIS IMAGE
+8 8 TRACER DATA TO NEXT IMAGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25041.table b/definitions/bufr/tables/0/wmo/25/codetables/25041.table
new file mode 100644
index 0000000..f388da0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25041.table
@@ -0,0 +1,4 @@
+0 0 DIRECTION ORIGINALLY REPORTED IN TRUE DEGREES
+1 1 DIRECTION ORIGINALLY REPORTED USING CODE TABLE 0700, FM 13
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25042.table b/definitions/bufr/tables/0/wmo/25/codetables/25042.table
new file mode 100644
index 0000000..f3cf059
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25042.table
@@ -0,0 +1,4 @@
+0 0 SPEED ORIGINALLY REPORTED IN METRES PER SECOND
+1 1 SPEED ORIGINALLY REPORTED USING CODE TABLE 4451, FM 13
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25053.table b/definitions/bufr/tables/0/wmo/25/codetables/25053.table
new file mode 100644
index 0000000..af34138
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25053.table
@@ -0,0 +1,6 @@
+1 1 GOOD
+2 2 REDUNDANT
+3 3 QUESTIONABLE
+4 4 BAD
+5 5 EXPERIMENTAL
+6 6 PRECIPITATING
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25063.table b/definitions/bufr/tables/0/wmo/25/codetables/25063.table
new file mode 100644
index 0000000..a8970ea
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25063.table
@@ -0,0 +1,4 @@
+0 0 NOT DEFINED
+1 1 MAIN PROCESSOR
+2 2 BACKUP PROCESSOR
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25069.table b/definitions/bufr/tables/0/wmo/25/codetables/25069.table
new file mode 100644
index 0000000..e627613
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25069.table
@@ -0,0 +1,7 @@
+1 1 SMOOTHED
+2 2 BASELINE ADJUSTED
+3 3 NORMALIZED TIME INTERVAL
+4 4 OUTLIER CHECKED
+5 5 PLAUSIBILITY CHECKED
+6 6 CONSISTENCY CHECKED
+7 7 INTERPOLATED
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25086.table b/definitions/bufr/tables/0/wmo/25/codetables/25086.table
new file mode 100644
index 0000000..294fa69
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25086.table
@@ -0,0 +1,4 @@
+0 0 DEPTHS ARE NOT CORRECTED
+1 1 DEPTHS ARE CORRECTED
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25090.table b/definitions/bufr/tables/0/wmo/25/codetables/25090.table
new file mode 100644
index 0000000..309fefc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25090.table
@@ -0,0 +1,11 @@
+0 0 ORBIT COMPUTED DURING A MANOEUVRE
+1 1 ADJUSTED MISSION OPERATIONS ORBIT
+2 2 EXTRAPOLATED MISSION OPERATIONS ORBIT
+3 3 ADJUSTED (PRELIMINARY/PRECISE) ORBIT
+4 4 (PRELIMINARY/PRECISE) ORBIT IS ESTIMATED DURING A MANOEUVRE PERIOD
+5 5 (PRELIMINARY/PRECISE) ORBIT IS INTERPOLATED OVER A TRACKING DATA GAP
+6 6 (PRELIMINARY/PRECISE) ORBIT IS EXTRAPOLATED FOR A DURATION LESS THAN 1 DAY
+7 7 (PRELIMINARY/PRECISE) ORBIT IS EXTRAPOLATED FOR A DURATION THAT RANGES FROM 1 DAY TO 2 DAYS
+8 8 (PRELIMINARY/PRECISE) ORBIT IS EXTRAPOLATED FOR A DURATION LARGER THAN 2 DAYS, OR THAT THE ORBIT IS EXTRAPOLATED JUST AFTER A MANOEUVRE
+9 9 DORIS* DIODE** NAVIGATOR ORBIT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25093.table b/definitions/bufr/tables/0/wmo/25/codetables/25093.table
new file mode 100644
index 0000000..e547e6c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25093.table
@@ -0,0 +1,3 @@
+1 1 NO CORRECTION
+2 2 VERTICAL VELOCITY CORRECTION
+7 7 ALL CORRECTIONS
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25095.table b/definitions/bufr/tables/0/wmo/25/codetables/25095.table
new file mode 100644
index 0000000..c446a50
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25095.table
@@ -0,0 +1 @@
+1 1 ALTIMETER OPERATING (0 IF NOMINAL, 1 IF BACKUP)
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25096.table b/definitions/bufr/tables/0/wmo/25/codetables/25096.table
new file mode 100644
index 0000000..89dcc39
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25096.table
@@ -0,0 +1,4 @@
+1 1 MODE INDICATOR (0 IF MODE 2, 1 IF MODE 1)
+2 2 MODE 1 CALIBRATION SEQUENCE INDICATOR (0 IF NORMAL DATA TAKING EITHER MODE 1 OR 2, 1 IF MODE 1 CALIBRATION SEQUENCE)  BITS 3 AND 4 INDICATE ACTIVE 23.8 GHZ CHANNEL(S):
+3 3 CHANNEL 2 (0 IF ON, 1 IF OFF)
+4 4 CHANNEL 3 (0 IF ON, 1 IF OFF)
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25097.table b/definitions/bufr/tables/0/wmo/25/codetables/25097.table
new file mode 100644
index 0000000..d4e1e46
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25097.table
@@ -0,0 +1,11 @@
+0 0 RANGES BETWEEN 0 AND 30 CM
+1 1 RANGES BETWEEN 30 AND 60 CM
+2 2 RANGES BETWEEN 60 AND 90 CM
+3 3 RANGES BETWEEN 90 AND 120 CM
+4 4 RANGES BETWEEN 120 AND 150 CM
+5 5 RANGES BETWEEN 150 AND 180 CM
+6 6 RANGES BETWEEN 180 AND 210 CM
+7 7 RANGES BETWEEN 210 AND 240 CM
+8 8 RANGES BETWEEN 240 AND 270 CM
+9 9 RANGES LARGER THAN 270 CM
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25098.table b/definitions/bufr/tables/0/wmo/25/codetables/25098.table
new file mode 100644
index 0000000..9d505a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25098.table
@@ -0,0 +1,8 @@
+1 1 KU BAND RANGE
+2 2 C BAND RANGE
+3 3 KU BAND SWH*
+4 4 C BAND SWH*
+5 5 KU BAND BACKSCATTER COEFFICIENT
+6 6 C BAND BACKSCATTER COEFFICIENT
+7 7 OFF NADIR ANGLE FROM KU BAND WAVEFORM PARAMETERS
+8 8 OFF NADIR ANGLE FROM PLATFORM
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25099.table b/definitions/bufr/tables/0/wmo/25/codetables/25099.table
new file mode 100644
index 0000000..40f35b1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25099.table
@@ -0,0 +1,6 @@
+1 1 KU BAND RANGE INSTRUMENTAL CORRECTION
+2 2 C BAND RANGE INSTRUMENTAL CORRECTION
+3 3 KU BAND SWH* INSTRUMENTAL CORRECTION
+4 4 C BAND SWH* INSTRUMENTAL CORRECTION
+5 5 KU BAND BACKSCATTER COEFFICIENT INSTRUMENTAL CORRECTION
+6 6 C BAND BACKSCATTER COEFFICIENT INSTRUMENTAL CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25110.table b/definitions/bufr/tables/0/wmo/25/codetables/25110.table
new file mode 100644
index 0000000..912e01f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25110.table
@@ -0,0 +1,6 @@
+1 1 RAW DATA ANALYSIS USED FOR RAW DATA CORRECTION. CORRECTION DONE USING DEFAULT PARAMETERS
+2 2 RAW DATA ANALYSIS USED FOR RAW DATA CORRECTION. CORRECTION DONE USING RAW DATA ANALYSIS RESULTS
+3 3 ANTENNA ELEVATION PATTERN CORRECTION APPLIED
+4 4 NOMINAL CHIRP REPLICA USED
+5 5 RECONSTRUCTED CHIRP USED
+6 6 SLANT RANGE TO GROUND RANGE CONVERSION APPLIED
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25112.table b/definitions/bufr/tables/0/wmo/25/codetables/25112.table
new file mode 100644
index 0000000..a2a4ec9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25112.table
@@ -0,0 +1,5 @@
+1 1 BAND SPECIFIC RANGE
+2 2 BAND SPECIFIC SIGNIFICANT WAVE HEIGHT
+3 3 BAND SPECIFIC BACKSCATTER COEFFICIENT
+4 4 OFF NADIR ANGLE FROM BAND SPECIFIC WAVEFORM PARAMETERS
+5 5 OFF NADIR ANGLE FROM PLATFORM
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25113.table b/definitions/bufr/tables/0/wmo/25/codetables/25113.table
new file mode 100644
index 0000000..ef394b6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25113.table
@@ -0,0 +1,3 @@
+1 1 BAND SPECIFIC RANGE INSTRUMENTAL CORRECTION
+2 2 BAND SPECIFIC SIGNIFICANT WAVE HEIGHT INSTRUMENTAL CORRECTION
+3 3 BAND SPECIFIC BACKSCATTER COEFFICIENT INSTRUMENTAL CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25120.table b/definitions/bufr/tables/0/wmo/25/codetables/25120.table
new file mode 100644
index 0000000..bdb9f96
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25120.table
@@ -0,0 +1,4 @@
+0 0 PERCENTAGE OF DSRS* FREE OF PROCESSING ERRORS DURING LEVEL 2 PROCESSING IS GREATER THAN THE ACCEPTABLE THRESHOLD
+1 1 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL 2 PROCESSING IS LESS THAN THE ACCEPTABLE THRESHOLD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25122.table b/definitions/bufr/tables/0/wmo/25/codetables/25122.table
new file mode 100644
index 0000000..1085ef9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25122.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE CONFIGURATION FOR RF IS A
+1 1 HARDWARE CONFIGURATION FOR RF IS B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25123.table b/definitions/bufr/tables/0/wmo/25/codetables/25123.table
new file mode 100644
index 0000000..70f0670
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25123.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE CONFIGURATION FOR HPA IS A
+1 1 HARDWARE CONFIGURATION FOR HPA IS B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25124.table b/definitions/bufr/tables/0/wmo/25/codetables/25124.table
new file mode 100644
index 0000000..dce5b04
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25124.table
@@ -0,0 +1,4 @@
+0 0 PERCENTAGE OF DSRS** FREE OF PROCESSING ERRORS DURING LEVEL 2 PROCESSING IS GREATER THAN THE ACCEPTABLE THRESHOLD
+1 1 PERCENTAGE OF DSRS** FREE OF PROCESSING ERRORS DURING LEVEL 2 PROCESSING IS LESS THAN THE ACCEPTABLE THRESHOLD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25150.table b/definitions/bufr/tables/0/wmo/25/codetables/25150.table
new file mode 100644
index 0000000..7b452c3
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25150.table
@@ -0,0 +1,3 @@
+1 1 THE DVORAK'S VIS (VISUAL IMAGERY) INTENSITY ANALYSIS
+2 2 THE DVORAK'S EIR (ENHANCED INFRARED IMAGERY) INTENSITY ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25174.table b/definitions/bufr/tables/0/wmo/25/codetables/25174.table
new file mode 100644
index 0000000..c8a11b6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25174.table
@@ -0,0 +1,13 @@
+1 1 PIXEL IS AFFECTED BY RFI EFFECTS
+2 2 PIXEL IS LOCATED IN THE HEXAGONAL ALIAS DIRECTION CENTRED ON SUN ALIAS
+3 3 PIXEL IS CLOSE TO THE BORDER DELIMITING THE EXTENDED ALIAS FREE ZONE
+4 4 PIXEL IS INSIDE THE EXTENDED ALIAS FREE ZONE
+5 5 PIXEL IS INSIDE THE EXCLUSIVE OF ALIAS FREE ZONE
+6 6 PIXEL IS LOCATED IN A ZONE WHERE A MOON ALIAS WAS RECONSTRUCTED
+7 7 PIXEL IS LOCATED IN A ZONE WHERE SUN REFLECTION HAS BEEN DETECTED
+8 8 PIXEL IS LOCATED IN A ZONE WHERE SUN ALIAS WAS RECONSTRUCTED
+9 9 FLAT TARGET TRANSFORMATION HAS BEEN PERFORMED DURING IMAGE RECONSTRUCTION OF THIS PIXEL
+10 10 SCENE HAS BEEN COMBINED WITH AN ADJUSTMENT SCENE IN OPPOSITE POLARIZATION DURING IMAGE RECONSTRUCTION TO ACCOUNT FOR CROSS-POLARIZATION LEAKAGE
+11 11 DIRECT MOON CORRECTION HAS BEEN PERFORMED DURING IMAGE RECONSTRUCTION OF THIS PIXEL
+12 12 REFLECTED SUN CORRECTION HAS BEEN PERFORMED DURING IMAGE RECONSTRUCTION OF THIS PIXEL
+13 13 DIRECT SUN CORRECTION HAS BEEN PERFORMED DURING IMAGE RECONSTRUCTION OF THIS IMAGE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25181.table b/definitions/bufr/tables/0/wmo/25/codetables/25181.table
new file mode 100644
index 0000000..2c1eabf
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25181.table
@@ -0,0 +1,3 @@
+0 0 OK
+1 1 PERCENTAGE OF L2B RECORDS FREE OF PROCESSING ERRORS IS LESS THAN ACCEPTABLE THRESHOLD
+2 2 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25182.table b/definitions/bufr/tables/0/wmo/25/codetables/25182.table
new file mode 100644
index 0000000..9827b1d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25182.table
@@ -0,0 +1,3 @@
+0 0 OK
+1 1 PERCENTAGE OF L1B RECORDS FREE OF PROCESSING ERRORS IS LESS THAN ACCEPTABLE THRESHOLD
+2 2 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/25184.table b/definitions/bufr/tables/0/wmo/25/codetables/25184.table
new file mode 100644
index 0000000..29005c1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/25184.table
@@ -0,0 +1,3 @@
+0 0 OK
+1 1 PRODUCT AS A DURATION SHORTER THAN THE INPUT PRODUCT
+2 2 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/26010.table b/definitions/bufr/tables/0/wmo/25/codetables/26010.table
new file mode 100644
index 0000000..f825040
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/26010.table
@@ -0,0 +1,25 @@
+1 1 0100 INCLUDED
+2 2 0200 INCLUDED
+3 3 0300 INCLUDED
+4 4 0400 INCLUDED
+5 5 0500 INCLUDED
+6 6 0600 INCLUDED
+7 7 0700 INCLUDED
+8 8 0800 INCLUDED
+9 9 0900 INCLUDED
+10 10 1000 INCLUDED
+11 11 1100 INCLUDED
+12 12 1200 INCLUDED
+13 13 1300 INCLUDED
+14 14 1400 INCLUDED
+15 15 1500 INCLUDED
+16 16 1600 INCLUDED
+17 17 1700 INCLUDED
+18 18 1800 INCLUDED
+19 19 1900 INCLUDED
+20 20 2000 INCLUDED
+21 21 2100 INCLUDED
+22 22 2200 INCLUDED
+23 23 2300 INCLUDED
+24 24 2400 INCLUDED
+25 25 UNKNOWN MIXTURE OF HOURS
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/29001.table b/definitions/bufr/tables/0/wmo/25/codetables/29001.table
new file mode 100644
index 0000000..1481243
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/29001.table
@@ -0,0 +1,8 @@
+0 0 GNOMONIC PROJECTION
+1 1 POLAR STEREOGRAPHIC PROJECTION
+2 2 LAMBERT'S CONFORMAL CONIC PROJECTION
+3 3 MERCATOR'S PROJECTION
+4 4 SCANNING CONE (RADAR)*
+5 5 RESERVED
+6 6 NO PROJECTION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/29002.table b/definitions/bufr/tables/0/wmo/25/codetables/29002.table
new file mode 100644
index 0000000..1d7efd0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/29002.table
@@ -0,0 +1,4 @@
+0 0 CARTESIAN
+1 1 POLAR
+2 2 OTHER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/30031.table b/definitions/bufr/tables/0/wmo/25/codetables/30031.table
new file mode 100644
index 0000000..80cce26
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/30031.table
@@ -0,0 +1,13 @@
+0 0 PPI
+1 1 COMPOSITE
+2 2 CAPPL
+3 3 VERTICAL SECTION
+4 4 ALPHANUMERIC DATA
+5 5 MAP OF SUBJECT CLUTTER
+6 6 MAP
+7 7 TEST PICTURE
+8 8 COMMENTS
+9 9 MAP OF GROUND OCCULTATION
+10 10 MAP OF RADAR BEAM HEIGHT
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/30032.table b/definitions/bufr/tables/0/wmo/25/codetables/30032.table
new file mode 100644
index 0000000..942cb5d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/30032.table
@@ -0,0 +1,9 @@
+1 1 MAP
+2 2 SATELLITE IR
+3 3 SATELLITE VIS
+4 4 SATELLITE WV
+5 5 SATELLITE MULTISPECTRAL
+6 6 SYNOPTIC OBSERVATIONS
+7 7 FORECAST PARAMETERS
+8 8 LIGHTNING DATA
+15 15 OTHER DATA
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/3010.table b/definitions/bufr/tables/0/wmo/25/codetables/3010.table
new file mode 100644
index 0000000..75746a1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/3010.table
@@ -0,0 +1,12 @@
+0 0 RESERVED
+1 1 ADCP
+2 2 GEK (GEOMAGNETIC ELECTROKINETOGRAPH)
+3 3 SHIP'S SET AND DRIFT DETERMINED BY FIXES 3-6 HOURS APART
+4 4 SHIP'S SET AND DRIFT DETERMINED BY FIXES MORE THAN 6 HOURS BUT LESS THAN 12 HOURS APART
+5 5 DRIFT OF BUOY
+6 6 ADCP
+7 7 ADCP BOTTOM TRACKING MODE
+8 8 ELECTROMAGNETIC SENSOR
+9 9 ROTOR AND VANE
+10 10 LOWERED ADCP
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/3011.table b/definitions/bufr/tables/0/wmo/25/codetables/3011.table
new file mode 100644
index 0000000..7488268
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/3011.table
@@ -0,0 +1,4 @@
+0 0 DEPTH CALCULATED USING FALL RATE EQUATION
+1 1 DEPTH CALCULATED FROM WATER PRESSURE/EQUATION OF STATE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/3012.table b/definitions/bufr/tables/0/wmo/25/codetables/3012.table
new file mode 100644
index 0000000..35bdead
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/3012.table
@@ -0,0 +1,3 @@
+0 0 ANDERRAA OXYGEN OPTODE
+1 1 WINKLER BOTTLE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/31021.table b/definitions/bufr/tables/0/wmo/25/codetables/31021.table
new file mode 100644
index 0000000..fb70e1c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/31021.table
@@ -0,0 +1,8 @@
+0 0 RESERVED
+1 1 1-BIT INDICATOR OF QUALITY
+2 2 2-BIT INDICATOR OF QUALITY
+6 6 4-BIT INDICATOR OF QUALITY CONTROL CLASS ACCORDING TO GTSPP
+7 7 PERCENTAGE CONFIDENCE
+8 8 0 = NOT SUSPECTED, 1 = SUSPECTED, 2 = RESERVED, 3 = INFORMATION NOT REQUIRED
+21 21 1-BIT INDICATOR OF CORRECTION
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/31031.table b/definitions/bufr/tables/0/wmo/25/codetables/31031.table
new file mode 100644
index 0000000..1f27429
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/31031.table
@@ -0,0 +1 @@
+1 1 
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33002.table b/definitions/bufr/tables/0/wmo/25/codetables/33002.table
new file mode 100644
index 0000000..4177c05
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33002.table
@@ -0,0 +1,4 @@
+0 0 DATA NOT SUSPECT
+1 1 DATA SUSPECT
+2 2 RESERVED
+3 3 QUALITY INFORMATION NOT GIVEN
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33003.table b/definitions/bufr/tables/0/wmo/25/codetables/33003.table
new file mode 100644
index 0000000..7577129
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33003.table
@@ -0,0 +1,5 @@
+0 0 DATA NOT SUSPECT
+1 1 DATA SLIGHTLY SUSPECT
+2 2 DATA HIGHLY SUSPECT
+3 3 DATA CONSIDERED UNFIT FOR USE
+7 7 QUALITY INFORMATION NOT GIVEN
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33005.table b/definitions/bufr/tables/0/wmo/25/codetables/33005.table
new file mode 100644
index 0000000..8d7569a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33005.table
@@ -0,0 +1,23 @@
+1 1 NO AUTOMATED METEOROLOGICAL DATA CHECKS PERFORMED
+2 2 PRESSURE DATA SUSPECT
+3 3 WIND DATA SUSPECT
+4 4 AIR TEMPERATURE DATA SUSPECT
+5 5 WET-BULB TEMPERATURE DATA SUSPECT
+6 6 HUMIDITY DATA SUSPECT
+7 7 GROUND TEMPERATURE DATA SUSPECT
+8 8 SOIL TEMPERATURE (DEPTH 1) DATA SUSPECT
+9 9 SOIL TEMPERATURE (DEPTH 2) DATA SUSPECT
+10 10 SOIL TEMPERATURE (DEPTH 3) DATA SUSPECT
+11 11 SOIL TEMPERATURE (DEPTH 4) DATA SUSPECT
+12 12 SOIL TEMPERATURE (DEPTH 5) DATA SUSPECT
+13 13 CLOUD DATA SUSPECT
+14 14 VISIBILITY DATA SUSPECT
+15 15 PRESENT WEATHER DATA SUSPECT
+16 16 LIGHTNING DATA SUSPECT
+17 17 ICE DEPOSIT DATA SUSPECT
+18 18 PRECIPITATION DATA SUSPECT
+19 19 STATE OF GROUND DATA SUSPECT
+20 20 SNOW DATA SUSPECT
+21 21 WATER CONTENT DATA SUSPECT
+22 22 EVAPORATION/EVAPOTRANSPIRATION DATA SUSPECT
+23 23 SUNSHINE DATA SUSPECT
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33006.table b/definitions/bufr/tables/0/wmo/25/codetables/33006.table
new file mode 100644
index 0000000..0ea44a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33006.table
@@ -0,0 +1,5 @@
+0 0 SELF-CHECK OK
+1 1 AT LEAST ONE WARNING ACTIVE, NO ALARMS
+2 2 AT LEAST ONE ALARM ACTIVE
+3 3 SENSOR FAILURE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33015.table b/definitions/bufr/tables/0/wmo/25/codetables/33015.table
new file mode 100644
index 0000000..f585808
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33015.table
@@ -0,0 +1,16 @@
+0 0 PASSED ALL CHECKS
+1 1 MISSING DATA CHECK
+2 2 DESCENDING/REASCENDING BALLOON CHECK
+3 3 DATA PLAUSIBILITY CHECK (ABOVE LIMITS)
+4 4 DATA PLAUSIBILITY CHECK (BELOW LIMITS)
+5 5 SUPERADIABATIC LAPSE RATE CHECK
+6 6 LIMITING ANGLES CHECK
+7 7 ASCENSION RATE CHECK
+8 8 EXCESSIVE CHANGE FROM PREVIOUS FLIGHT
+9 9 BALLOON OVERHEAD CHECK
+10 10 WIND SPEED CHECK
+11 11 WIND DIRECTION CHECK
+12 12 DEPENDENCY CHECK
+13 13 DATA VALID BUT MODIFIED
+14 14 DATA OUTLIER CHECK
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33020.table b/definitions/bufr/tables/0/wmo/25/codetables/33020.table
new file mode 100644
index 0000000..ba7a4d4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33020.table
@@ -0,0 +1,8 @@
+0 0 GOOD
+1 1 INCONSISTENT
+2 2 DOUBTFUL
+3 3 WRONG
+4 4 NOT CHECKED
+5 5 HAS BEEN CHANGED
+6 6 ESTIMATED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33021.table b/definitions/bufr/tables/0/wmo/25/codetables/33021.table
new file mode 100644
index 0000000..e3e67ae
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33021.table
@@ -0,0 +1,4 @@
+0 0 WITHIN LIMITS
+1 1 OUTSIDE LIMITS
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33022.table b/definitions/bufr/tables/0/wmo/25/codetables/33022.table
new file mode 100644
index 0000000..50ef65f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33022.table
@@ -0,0 +1,4 @@
+0 0 GOOD (SEVERAL IDENTICAL REPORTS HAVE BEEN RECEIVED)
+1 1 DUBIOUS (NO IDENTICAL REPORTS HAVE BEEN RECEIVED)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33023.table b/definitions/bufr/tables/0/wmo/25/codetables/33023.table
new file mode 100644
index 0000000..896c816
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33023.table
@@ -0,0 +1,4 @@
+0 0 RELIABLE (LOCATION WAS MADE OVER TWO SATELLITE PASSES)
+1 1 LATEST KNOWN (NO LOCATION OVER THE CORRESPONDING PASS)
+2 2 DUBIOUS (LOCATION MADE OVER ONE PASS ONLY; A SECOND SOLUTION IS POSSIBLE IN 5 PER CENT OF THE CASES)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33024.table b/definitions/bufr/tables/0/wmo/25/codetables/33024.table
new file mode 100644
index 0000000..771e04b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33024.table
@@ -0,0 +1,10 @@
+0 0 RESERVED
+1 1 EXCELLENT - WITHIN 3 METRES
+2 2 GOOD - WITHIN 10 METRES
+3 3 FAIR - WITHIN 20 METRES
+4 4 POOR - MORE THAN 20 METRES
+5 5 EXCELLENT - WITHIN 10 FEET
+6 6 GOOD - WITHIN 30 FEET
+7 7 FAIR - WITHIN 60 FEET
+8 8 POOR - MORE THAN 60 FEET
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33025.table b/definitions/bufr/tables/0/wmo/25/codetables/33025.table
new file mode 100644
index 0000000..4da695a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33025.table
@@ -0,0 +1,5 @@
+0 0 TIME INTERPOLATED, LATITUDE AND LONGITUDE REPORTED
+1 1 TIME REPORTED, LATITUDE AND LONGITUDE INTERPOLATED
+2 2 TIME, LATITUDE, AND LONGITUDE INTERPOLATED
+3 3 TIME, LATITUDE, AND LONGITUDE REPORTED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33026.table b/definitions/bufr/tables/0/wmo/25/codetables/33026.table
new file mode 100644
index 0000000..08c6125
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33026.table
@@ -0,0 +1,17 @@
+0 0 NORMAL OPERATIONS - MEASUREMENT MODE
+1 1 NORMAL OPERATIONS - NON-MEASUREMENT MODE
+2 2 SMALL RH
+3 3 HUMIDITY ELEMENT IS WET
+4 4 HUMIDITY ELEMENT CONTAMINATED
+5 5 HEATER FAIL
+6 6 HEATER FAIL AND WET/CONTAMINATED HUMIDITY ELEMENT
+7 7 AT LEAST ONE OF THE INPUT PARAMETERS USED IN THE CALCULATION OF MIXING RATIO IS INVALID
+8 8 NUMERIC ERROR
+9 9 SENSOR NOT INSTALLED
+10 10 CALCULATED RH > 100%
+11 11 INPUT LASER POWER TOO LOW
+12 12 PROBE WV TEMPERATURE OUT OF RANGE
+13 13 PROBE WV PRESSURE OUT OF RANGE
+14 14 SPECTRAL LINE OUT OF RANGE
+15 15 NO LASER OUTPUT
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33027.table b/definitions/bufr/tables/0/wmo/25/codetables/33027.table
new file mode 100644
index 0000000..8997392
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33027.table
@@ -0,0 +1,6 @@
+0 0 RADIUS >= 1500 M
+1 1 500 M =< RADIUS <1500 M
+2 2 250 M =< RADIUS < 500 M
+3 3 RADIUS < 250 M
+4 4 <= 100 M
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33028.table b/definitions/bufr/tables/0/wmo/25/codetables/33028.table
new file mode 100644
index 0000000..84bd666
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33028.table
@@ -0,0 +1,5 @@
+1 1 NOMINAL
+2 2 DEGRADED BY SW ERROR; ANY ERROR REPORTED BY THE ALGORITHMS
+3 3 DEGRADED BY INSTRUMENT ERROR
+4 4 DEGRADED BY CORRUPTED /MISSING ADF
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33030.table b/definitions/bufr/tables/0/wmo/25/codetables/33030.table
new file mode 100644
index 0000000..c9e36c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33030.table
@@ -0,0 +1,7 @@
+1 1 DO NOT USE SCAN FOR PRODUCT GENERATION
+2 2 TIME SEQUENCE ERROR DETECTED WITH THIS SCAN
+3 3 DATA GAP PRECEDES THIS SCAN
+4 4 NO CALIBRATION
+5 5 NO EARTH LOCATION
+6 6 FIRST GOOD TIME FOLLOWING A CLOCK UPDATE
+7 7 INSTRUMENT STATUS CHANGED WITH THIS SCAN
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33031.table b/definitions/bufr/tables/0/wmo/25/codetables/33031.table
new file mode 100644
index 0000000..c11fd4a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33031.table
@@ -0,0 +1,21 @@
+1 1 TIME FIELD IS BAD BUT CAN PROBABLY BE INFERRED FROM THE PREVIOUS GOOD TIME
+2 2 TIME FIELD IS BAD AND CANNOT BE INFERRED FROM THE PREVIOUS GOOD TIME
+3 3 THIS RECORD STARTS A SEQUENCE THAT IS INCONSISTENT WITH PREVIOUS TIMES (I.E. THERE IS A TIME DISCONTINUITY). THIS MAY OR MAY NOT BE ASSOCIATED WITH A SPACECRAFT CLOCK UPDATE (SEE SCAN LINE STATUS FLAGS FOR ATOVS)
+4 4 START OF A SEQUENCE THAT APPARENTLY REPEATS SCAN TIMES THAT HAVE BEEN PREVIOUSLY ACCEPTED
+5 5 SCAN LINE WAS NOT CALIBRATED BECAUSE OF BAD TIME
+6 6 SCAN LINE WAS CALIBRATED USING FEWER THAN THE PREFERRED NUMBER OF SCAN LINES BECAUSE OF PROXIMITY TO START OR END OF DATA OR TO A DATA GAP
+7 7 SCAN LINE WAS NOT CALIBRATED BECAUSE OF BAD OR INSUFFICIENT PRT DATA
+8 8 SCAN LINE WAS CALIBRATED BUT WITH MARGINAL PRT DATA
+9 9 SOME UNCALIBRATED CHANNELS ON THIS SCAN
+10 10 UNCALIBRATED DUE TO INSTRUMENT MODE
+11 11 QUESTIONABLE CALIBRATION BECAUSE OF ANTENNA POSITION ERROR OF SPACE VIEW
+12 12 QUESTIONABLE CALIBRATION BECAUSE OF ANTENNA POSITION ERROR OF BLACK BODY
+13 13 NOT EARTH LOCATED BECAUSE OF BAD TIME
+14 14 EARTH LOCATION QUESTIONABLE BECAUSE OF QUESTIONABLE TIME CODE (SEE TIME PROBLEM CODE BITS)
+15 15 EARTH LOCATION QUESTIONABLE - ONLY MARGINAL AGREEMENT WITH REASONABLENESS CHECK
+16 16 EARTH LOCATION QUESTIONABLE - FAILS REASONABLENESS CHECK
+17 17 EARTH LOCATION QUESTIONABLE BECAUSE OF ANTENNA POSITION CHECK
+18 18 SCAN LINE CALIBRATION COLD BLACK BODY
+19 19 SCAN LINE CALIBRATION WARM BLACK BODY
+20 20 SCAN LINE CALIBRATION SPACE VIEW
+21 21 EARTH VIEW
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33032.table b/definitions/bufr/tables/0/wmo/25/codetables/33032.table
new file mode 100644
index 0000000..33307f5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33032.table
@@ -0,0 +1,7 @@
+1 1 NO GOOD BLACKBODY COUNTS FOR SCAN LINE
+2 2 NO GOOD SPACE VIEW COUNTS FOR THIS LINE
+3 3 NO GOOD PRTS FOR THIS LINE
+4 4 SOME BAD BLACKBODY VIEW COUNTS FOR THIS LINE
+5 5 SOME BAD SPACE VIEW COUNTS FOR THIS LINE
+6 6 SOME BAD PRT TEMPS ON THIS LINE
+7 7 QUALITY FOR THIS SCAN IS REDUCED
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33033.table b/definitions/bufr/tables/0/wmo/25/codetables/33033.table
new file mode 100644
index 0000000..6fd3205
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33033.table
@@ -0,0 +1,3 @@
+1 1 SET IF SECONDARY CALIBRATION USED
+22 22 SET IF ALL THE CHANNELS ARE MISSING
+23 23 SUSPECT
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33035.table b/definitions/bufr/tables/0/wmo/25/codetables/33035.table
new file mode 100644
index 0000000..01996ba
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33035.table
@@ -0,0 +1,10 @@
+0 0 AUTOMATIC QUALITY CONTROL PASSED AND NOT MANUALLY CHECKED
+1 1 AUTOMATIC QUALITY CONTROL PASSED AND MANUALLY CHECKED AND PASSED
+2 2 AUTOMATIC QUALITY CONTROL PASSED AND MANUALLY CHECKED AND DELETED
+3 3 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY NOT CHECKED
+4 4 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY CHECKED AND FAILED
+5 5 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY CHECKED AND RE-INSERTED
+6 6 AUTOMATIC QUALITY CONTROL FLAGGED DATA AS QUESTIONABLE AND NOT MANUALLY CHECKED
+7 7 AUTOMATIC QUALITY CONTROL FLAGGED DATA AS QUESTIONABLE AND MANUALLY CHECKED AND FAILED
+8 8 MANUALLY CHECKED AND FAILED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33037.table b/definitions/bufr/tables/0/wmo/25/codetables/33037.table
new file mode 100644
index 0000000..9f26652
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33037.table
@@ -0,0 +1,19 @@
+1 1 U DEPARTURE FROM GUESS
+2 2 V DEPARTURE FROM GUESS
+3 3 U AND V DEPARTURE FROM GUESS
+4 4 U ACCELERATION
+5 5 V ACCELERATION
+6 6 U AND V ACCELERATION
+7 7 POSSIBLE LAND FEATURE
+8 8 U ACCELERATION AND POSSIBLE LAND FEATURE
+9 9 V ACCELERATION AND POSSIBLE LAND FEATURE
+10 10 U AND V ACCELERATION AND POSSIBLE LAND FEATURE
+11 11 BAD WIND GUESS
+12 12 CORRELATION FAILURE
+13 13 SEARCH BOX OFF EDGE OF AREA
+14 14 TARGET BOX OFF EDGE OF AREA
+15 15 PIXEL BRIGHTNESS OUT OF BOUNDS (NOISY LINE)
+16 16 TARGET OUTSIDE OF LATITUDE/LONGITUDE BOX
+17 17 TARGET OUTSIDE OF PRESSURE MINIMUM/MAXIMUM
+18 18 AUTOEDITOR FLAGGED SLOW VECTOR
+19 19 AUTOEDITOR FLAGGED VECTORS
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33038.table b/definitions/bufr/tables/0/wmo/25/codetables/33038.table
new file mode 100644
index 0000000..3dc1192
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33038.table
@@ -0,0 +1,9 @@
+1 1 TOTAL ZENITH DELAY QUALITY IS CONSIDERED POOR
+2 2 GALILEO SATELLITES USED
+3 3 GLONASS SATELLITES USED
+4 4 GPS SATELLITES USED
+5 5 METEOROLOGICAL DATA APPLIED
+6 6 ATMOSPHERIC LOADING CORRECTION APPLIED
+7 7 OCEAN TIDE LOADING APPLIED
+8 8 CLIMATE QUALITY DATA PROCESSING
+9 9 NEAR-REAL TIME DATA PROCESSING
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33039.table b/definitions/bufr/tables/0/wmo/25/codetables/33039.table
new file mode 100644
index 0000000..50ff126
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33039.table
@@ -0,0 +1,9 @@
+1 1 NON-NOMINAL QUALITY
+2 2 OFFLINE PRODUCT
+3 3 ASCENDING OCCULTATION FLAG
+4 4 EXCESS PHASE PROCESSING NON-NOMINAL
+5 5 BENDING ANGLE PROCESSING NON-NOMINAL
+6 6 REFRACTIVITY PROCESSING NON-NOMINAL
+7 7 METEOROLOGICAL PROCESSING NON-NOMINAL
+14 14 BACKGROUND PROFILE NON-NOMINAL
+15 15 BACKGROUND (I.E. NOT RETRIEVED) PROFILE PRESENT
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33041.table b/definitions/bufr/tables/0/wmo/25/codetables/33041.table
new file mode 100644
index 0000000..8bbdba9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33041.table
@@ -0,0 +1,4 @@
+0 0 THE FOLLOWING VALUE IS THE TRUE VALUE
+1 1 THE FOLLOWING VALUE IS HIGHER THAN THE TRUE VALUE (THE MEASUREMENT HIT THE LOWER LIMIT OF THE INSTRUMENT)
+2 2 THE FOLLOWING VALUE IS LOWER THAN THE TRUE VALUE (THE MEASUREMENT HIT THE HIGHER LIMIT OF THE INSTRUMENT)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33042.table b/definitions/bufr/tables/0/wmo/25/codetables/33042.table
new file mode 100644
index 0000000..b75447a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33042.table
@@ -0,0 +1,5 @@
+0 0 EXCLUSIVE LOWER LIMIT (>)
+1 1 INCLUSIVE LOWER LIMIT (>=)
+2 2 EXCLUSIVE UPPER LIMIT (<)
+3 3 INCLUSIVE UPPER LIMIT (=<)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33043.table b/definitions/bufr/tables/0/wmo/25/codetables/33043.table
new file mode 100644
index 0000000..398d9ab
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33043.table
@@ -0,0 +1,4 @@
+1 1 SEA MDS.  NADIR ONLY SST RETRIEVAL USED 3.7 MICRON CHANNEL.  LAND MDS RESERVED
+2 2 SEA MDS.  DUAL VIEW SST RETRIEVAL USED 3.7 MICRON CHANNEL.  LAND MDS RESERVED
+3 3 NADIR VIEW CONTAINS DAY TIME DATA
+4 4 FORWARD VIEW CONTAINS DAY TIME DATA
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33044.table b/definitions/bufr/tables/0/wmo/25/codetables/33044.table
new file mode 100644
index 0000000..01746c7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33044.table
@@ -0,0 +1,14 @@
+1 1 INPUT DATA MEAN OUTSIDE NOMINAL RANGE FLAG
+2 2 INPUT DATA STANDARD DEVIATION OUTSIDE NOMINAL RANGE FLAG
+3 3 NUMBER OF INPUT DATA GAPS > THRESHOLD VALUE
+4 4 PERCENTAGE OF MISSING LINES > THRESHOLD VALUE
+5 5 DOPPLER CENTROID UNCERTAIN. CONFIDENCE MEASURE < SPECIFIC VALUE
+6 6 DOPPLER AMBIGUITY ESTIMATE UNCERTAIN. CONFIDENCE MEASURE < SPECIFIC VALUE
+7 7 OUTPUT DATA MEAN OUTSIDE NOMINAL RANGE FLAG
+8 8 OUTPUT DATA STANDARD DEVIATION OUTSIDE NOMINAL RANGE FLAG
+9 9 CHIRP RECONSTRUCTION FAILED OR IS OF LOW QUALITY FLAG
+10 10 DATA SET MISSING
+11 11 INVALID DOWNLINK PARAMETERS
+12 12 AZIMUTH CUT-OFF ITERATION COUNT. THE AZIMUTH CUT-OFF FIT DID NOT CONVERGE WITHIN A MINIMUM NUMBER OF ITERATIONS
+13 13 AZIMUTH CUT-OFF FIT DID NOT CONVERGE WITHIN A MINIMUM NUMBER OF ITERATIONS
+14 14 PHASE INFORMATION CONFIDENCE MEASURE. THE IMAGINARY SPECTRAL PEAK IS LESS THAN A MINIMUM THRESHOLD, OR THE ZERO LAG SHIFT IS GREATER THAN A MINIMUM THRESHOLD
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33047.table b/definitions/bufr/tables/0/wmo/25/codetables/33047.table
new file mode 100644
index 0000000..f69b56e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33047.table
@@ -0,0 +1,27 @@
+1 1 ERROR DETECTED AND ATTEMPTS TO RECOVER MADE
+2 2 ANOMALY IN ON-BOARD DATA HANDLING (OBDH) VALUE DETECTED
+3 3 ANOMALY IN ULTRA STABLE OSCILLATOR PROCESSING (USOP) VALUE DETECTED
+4 4 ERRORS DETECTED BY ON-BOARD COMPUTER
+5 5 AUTOMATIC GAIN CONTROL (AGC) OUT OF RANGE
+6 6 RECEPTION (RX) DELAY FAULT.  RX DISTANCE OUT OF RANGE
+7 7 WAVE FORM SAMPLES FAULT IDENTIFIER. ERROR
+8 8 S BAND ANOMALY/ERROR DETECTED
+12 12 BRIGHTNESS TEMPERATURE (CHANNEL 1) OUT OF RANGE
+13 13 BRIGHTNESS TEMPERATURE (CHANNEL 2) OUT OF RANGE
+14 14 RESERVED
+15 15 KU BAND OCEAN RETRACKING ERROR
+16 16 S BAND OCEAN RETRACKING ERROR
+17 17 KU BAND ICE 1 RETRACKING ERROR
+18 18 S BAND ICE 1 RETRACKING ERROR
+19 19 KU BAND ICE 2 RETRACKING ERROR
+20 20 S BAND ICE 2 RETRACKING ERROR
+21 21 KU BAND SEA ICE RETRACKING ERROR
+22 22 ARITHMETIC FAULT ERROR
+23 23 METEO DATA STATE. NO MAP
+24 24 METEO DATA STATE. 1 MAP
+25 25 METEO DATA STATE. 2 MAPS DEGRADED
+26 26 METEO DATA STATE. 2 MAPS NOMINAL
+27 27 ORBIT PROPAGATOR STATUS FOR PROPAGATION MODE, SEVERAL ERRORS
+28 28 ORBIT PROPAGATOR STATUS FOR PROPAGATION MODE, WARNING DETECTED
+29 29 ORBIT PROPAGATOR STATUS FOR INITIALIZATION MODE, SEVERAL ERRORS
+30 30 ORBIT PROPAGATOR STATUS FOR INITIALIZATION MODE, WARNING DETECTED
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33048.table b/definitions/bufr/tables/0/wmo/25/codetables/33048.table
new file mode 100644
index 0000000..312ba40
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33048.table
@@ -0,0 +1,4 @@
+0 0 INVERSION SUCCESSFUL
+1 1 INVERSION NOT SUCCESSFUL
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33049.table b/definitions/bufr/tables/0/wmo/25/codetables/33049.table
new file mode 100644
index 0000000..bdde061
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33049.table
@@ -0,0 +1,4 @@
+0 0 EXTERNAL WIND DIRECTION USED DURING INVERSION
+1 1 EXTERNAL WIND DIRECTION NOT USED DURING INVERSION
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33050.table b/definitions/bufr/tables/0/wmo/25/codetables/33050.table
new file mode 100644
index 0000000..ee7bb6d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33050.table
@@ -0,0 +1,9 @@
+0 0 UNQUALIFIED
+1 1 CORRECT VALUE (ALL CHECKS PASSED)
+2 2 PROBABLY GOOD BUT VALUE INCONSISTENT WITH STATISTICS (DIFFER FROM CLIMATOLOGY)
+3 3 PROBABLY BAD (SPIKE, GRADIENT, ETC., IF OTHER TESTS PASSED)
+4 4 BAD VALUE, IMPOSSIBLE VALUE (OUT OF SCALE, VERTICAL INSTABILITY, CONSTANT PROFILE)
+5 5 VALUE MODIFIED DURING QUALITY CONTROL
+8 8 INTERPOLATED VALUE
+9 9 GOOD FOR OPERATIONAL USE; CAUTION; CHECK LITERATURE FOR OTHER USES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33060.table b/definitions/bufr/tables/0/wmo/25/codetables/33060.table
new file mode 100644
index 0000000..7414302
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33060.table
@@ -0,0 +1,4 @@
+0 0 GOOD
+1 1 BAD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33070.table b/definitions/bufr/tables/0/wmo/25/codetables/33070.table
new file mode 100644
index 0000000..8a0467b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33070.table
@@ -0,0 +1,14 @@
+0 0 GOOD RETRIEVAL
+1 1 BAD AEROSOL INFORMATION FLAG OR NOAA-16 RADIANCE ANOMALY
+2 2 SOLAR ZENITH ANGLE GREATER THAN 84 DEGREES
+3 3 380 NM RESIDUE GREATER THAN LIMIT
+4 4 OZONE INCONSISTENCY
+5 5 DIFFERENCE BETWEEN PROFILE OZONE AND STEP 3 TOTAL OZONE EXCEEDS THRESHOLD (SET TO 25 DU)
+6 6 STEP 1 OZONE ITERATION DID NOT CONVERGE
+7 7 ANY CHANNEL RESIDUE GREATER THAN 16 OR BAD RADIANCE
+8 8 INSUFFICIENT PIXELS - NOT PROCESSED
+9 9 FIRST GUESS GOOD - OZONE FORECAST DATA USED
+10 10 HIGH CLOUD IN PIXEL - NOT PROCESSED
+11 11 SUCCESSFUL OZONE RETRIEVAL
+12 12 UNSUCCESSFUL OZONE RETRIEVAL
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33071.table b/definitions/bufr/tables/0/wmo/25/codetables/33071.table
new file mode 100644
index 0000000..8c9d4de
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33071.table
@@ -0,0 +1,10 @@
+0 0 GOOD RETRIEVAL
+1 1 SOLAR ZENITH ANGLE GREATER THAN 84 DEGREES
+2 2 DIFFERENCE BETWEEN STEP 3 AND PROFILE TOTAL OZONE GREATER THAN LIMIT (25 DU)
+3 3 AVERAGE FINAL RESIDUE FOR WAVELENGTHS USED IN RETRIEVAL GREATER THAN THRESHOLD
+4 4 FINAL RESIDUE GREATER THAN 3 TIMES A PRIORI ERROR
+5 5 DIFFERENCE BETWEEN RETRIEVED AND A PRIORI GREATER THAN 3 TIMES A PRIORI ERROR
+6 6 NON-CONVERGENT SOLUTION
+7 7 UPPER LEVEL PROFILE ANOMALY OR STRAY LIGHT ANOMALY
+8 8 INITIAL RESIDUE GREATER THAN 18.0 N-VALUE UNITS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33072.table b/definitions/bufr/tables/0/wmo/25/codetables/33072.table
new file mode 100644
index 0000000..fcc7f09
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33072.table
@@ -0,0 +1,18 @@
+0 0 GOOD RETRIEVAL
+1 1 REFLECTIVITY OUT OF RANGE
+2 2 LARGER PIXELS (NUMBER OF CROSS-TRACK PIXELS LESS THAN 32) OR BACKWARD SCANS ERROR
+3 3 SOLAR ZENITH ANGLE GREATER THAN 88 DEGREES
+4 4 LATITUDE/LONGITUDE OUT OF RANGE
+5 5 VIEWING ZENITH ANGLE OR SOLAR ZENITH ANGLE OUT OF RANGE
+6 6 STEP-ONE PROCESS FAILED IN GENERAL
+7 7 FIRST GUESS OZONE OUT OF RANGE
+8 8 TOO MANY ITERATIONS (EXCEED 8)
+9 9 STEP-ONE RESIDUE CALCULATION FAILED
+10 10 STEP-TWO PROCESS FAILED IN GENERAL
+11 11 FIRST GUESS OZONE PROFILE OUT OF RANGE
+12 12 STEP-TWO OZONE VALUE OUT OF RANGE
+13 13 STEP-TWO RESIDUE CALCULATION FAILED
+14 14 STEP-THREE PROCESS FAILED IN GENERAL
+15 15 POLARIZATION CORRECTION ACCURACY ALERT
+16 16 RADIANCE OR IRRADIANCE LESS OR EQUAL TO ZERO
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33075.table b/definitions/bufr/tables/0/wmo/25/codetables/33075.table
new file mode 100644
index 0000000..23edae6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33075.table
@@ -0,0 +1,5 @@
+1 1 GAP IN RAW DATA RECORD (RDR) DATA DETECTED (I.E., MISSING SCAN(S) PRECEDING THE CURRENT SCAN)
+2 2 RECORDED TIME IS NOT IN SEQUENCE (I.E., THE SCAN START TIME IS OUT OF SEQUENCE)
+3 3 LAMBDA MONITORED CALCULATION CANNOT BE UPDATED
+4 4 THE MEASURED TEMPERATURES OF ANY INSTRUMENT COMPONENTS (E.G., BEAM-SPLITTER, SCAN MIRROR, SCAN BAFFLE) ARE OUTSIDE THE ALLOWABLE RANGES
+5 5 AT LEAST ONE OF THE MONITORED INSTRUMENT TEMPERATURES HAS DRIFTED MORE THAN A SPECIFIED TOLERANCE VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33076.table b/definitions/bufr/tables/0/wmo/25/codetables/33076.table
new file mode 100644
index 0000000..7100c4a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33076.table
@@ -0,0 +1,2 @@
+1 1 LUNAR INTRUSION ON FIRST DEEP SPACE VIEW
+2 2 LUNAR INTRUSION ON SECOND DEEP SPACE VIEW
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33077.table b/definitions/bufr/tables/0/wmo/25/codetables/33077.table
new file mode 100644
index 0000000..742c83c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33077.table
@@ -0,0 +1,12 @@
+1 1 DEGRADED SDR* QUALITY
+2 2 INVALID SDR* QUALITY
+3 3 INVALID SDR* GEOLOCATION INFORMATION
+4 4 DEGRADED RADIOMETRIC CALIBRATION
+5 5 INVALID RADIOMETRIC CALIBRATION
+6 6 DEGRADED SPECTRAL CALIBRATION
+7 7 INVALID SPECTRAL CALIBRATION
+8 8 FRINGE COUNT ERROR DETECTED AND CORRECTED
+9 9 DAY/NIGHT INDICATOR
+10 10 INVALID RDR** DATA
+11 11 SIGNIFICANT FRINGE COUNT ERROR DETECTED
+12 12 BIT TRIM FAILED
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33078.table b/definitions/bufr/tables/0/wmo/25/codetables/33078.table
new file mode 100644
index 0000000..f3a2180
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33078.table
@@ -0,0 +1,5 @@
+0 0 NOMINAL - ALTITUDE AND EPHEMERIS DATA AVAILABLE
+1 1 MISSING AT MOST A SMALL GAP OF ALTITUDE AND EPHEMERIS DATA
+2 2 MISSING MORE THAN A SMALL GAP OF ALTITUDE AND EPHEMERIS DATA, BUT NO MORE THAN A GRANULE BOUNDARY
+3 3 MISSING MORE THAN A GRANULE BOUNDARY OF ALTITUDE AND EPHEMERIS DATA
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33079.table b/definitions/bufr/tables/0/wmo/25/codetables/33079.table
new file mode 100644
index 0000000..0875143
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33079.table
@@ -0,0 +1,10 @@
+6 6 THE NO. 1-NO. 7 HEALTH CHECKS FAILED
+7 7 THE NO. 8-NO. 15 HEALTH CHECKS FAILED
+8 8 THE NO. 16-NO. 23 HEALTH CHECKS FAILED
+9 9 THE NO. 24-NO. 31 HEALTH CHECKS FAILED
+10 10 THE NO. 32-NO. 39 HEALTH CHECKS FAILED
+11 11 THE NO. 40-NO. 47 HEALTH CHECKS FAILED
+12 12 THE NO. 48-NO. 55 HEALTH CHECKS FAILED
+13 13 THE NO. 56-NO. 63 HEALTH CHECKS FAILED
+14 14 THE NO. 64-NO. 70 HEALTH CHECKS FAILED
+15 15 QUADRATIC CORRECTION APPLIED TO THE RADIOMETRIC TRANSFER FUNCTION FOR NON-LINEARITY CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33080.table b/definitions/bufr/tables/0/wmo/25/codetables/33080.table
new file mode 100644
index 0000000..a39dd47
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33080.table
@@ -0,0 +1,13 @@
+7 7 DIVIDE-BY-ZERO CONDITION OR COMPUTATION LOOP FAILED TO CONVERGE IN THE K/KA AND V (KAV) BAND PRT
+8 8 DIVIDE-BY-ZERO CONDITION OR COMPUTATION LOOP FAILED TO CONVERGE IN THE WG BAND PRT
+9 9 DIVIDE-BY-ZERO CONDITION OR COMPUTATION LOOP FAILED TO CONVERGE IN THE K/KA, V, W, G BAND RECEIVER SHELF PRT K TEMPERATURE COMPUTATION
+10 10 OUT OF RANGE CONDITION FOR THE K/KA AND V BAND PRT
+11 11 OUT OF RANGE CONDITION FOR THE WG BAND PRT
+12 12 KAV PRT TEMPERATURE INCONSISTENCY
+13 13 WG PRT TEMPERATURE INCONSISTENCY
+14 14 TIME SEQUENCE ERROR
+15 15 DATA GAP - MISSING SCAN(S) PRECEDING THE CURRENT SCAN
+16 16 KAV PRT SUFFICIENCY - INSUFFICIENT KAV PRT DATA ARE AVAILABLE
+17 17 WG PRT SUFFICIENCY - INSUFFICIENT WG PRT DATA ARE AVAILABLE
+18 18 SPACE VIEW ANTENNA POSITION ERROR
+19 19 BLACKBODY ANTENNA POSITION ERROR
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33081.table b/definitions/bufr/tables/0/wmo/25/codetables/33081.table
new file mode 100644
index 0000000..f8759e0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33081.table
@@ -0,0 +1,9 @@
+3 3 MOON IN SPACE VIEW
+4 4 GAIN ERROR - THE LOWEST BLACKBODY COUNT IS SMALLER THAN OR EQUAL TO THE HIGHEST SPACE VIEW COUNT IN A SCAN
+5 5 CALIBRATION WITH FEWER THAN PREFERRED SAMPLES
+6 6 SPACE VIEW DATA SUFFICIENCY CHECK - INSUFFICIENT SPACE VIEW SAMPLES ARE AVAILABLE
+7 7 BLACKBODY VIEW DATA SUFFICIENCY CHECK - INSUFFICIENT BLACKBODY VIEW SAMPLES ARE AVAILABLE
+8 8 OUT OF RANGE CONDITION FOR THE SPACE VIEW
+9 9 OUT OF RANGE CONDITION FOR THE BLACKBODY VIEW
+10 10 SPACE VIEW INCONSISTENCY
+11 11 BLACKBODY VIEW INCONSISTENCY
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33082.table b/definitions/bufr/tables/0/wmo/25/codetables/33082.table
new file mode 100644
index 0000000..4671574
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33082.table
@@ -0,0 +1,10 @@
+6 6 WITHIN SOUTH ATLANTIC ANOMALY
+7 7 INVALID INPUT DATA (INDICATES THAT ANY OF THE SPACECRAFT EPHEMERIS OR ATTITUDE DATA ARE INVALID)
+8 8 BAD POINTING (INDICATES THAT THE SENSOR LOS DOES NOT INTERSECT THE GEOID, IS NEAR THE LIMB, HAS INVALID SENSOR ANGLES OR OTHER SIMILAR CONDITION)
+9 9 BAD TERRAIN (INDICATES THAT THE ALGORITHM COULD NOT OBTAIN A VALID TERRAIN VALUE)
+10 10 INVALID SOLAR ANGLES
+11 11 MISSING AT MOST A SMALL GAP OF ALTITUDE AND EPHEMERIS DATA
+12 12 MISSING MORE THAN A SMALL GAP OF ALTITUDE AND EPHEMERIS DATA, BUT NO MORE THAN A GRANULE BOUNDARY
+13 13 MISSING MORE THAN A GRANULE BOUNDARY OF ALTITUDE AND EPHEMERIS DATA
+14 14 THE NUMBER OF ENCODER PULSE VALUES PER DELTA TIME IS NOT AS EXPECTED
+15 15 SOLAR ECLIPSE DURING EARTH VIEW SCAN
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33083.table b/definitions/bufr/tables/0/wmo/25/codetables/33083.table
new file mode 100644
index 0000000..6fe63f6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33083.table
@@ -0,0 +1,10 @@
+6 6 PIXEL IS AFFECTED BY RADIO-FREQUENCY INTERFERENCE
+7 7 POOR CALIBRATION QUALITY DUE TO BAD SPACE VIEW OFFSETS, OBC * VIEW OFFSETS, ETC. OR USE OF A PREVIOUS CALIBRATION VIEW
+8 8 SATURATED PIXEL
+9 9 MISSING DATA -DATA REQUIRED FOR CALIBRATION PROCESSING ARE NOT AVAILABLE FOR PROCESSING
+10 10 CALIBRATED PIXEL RADIANCE OUT OF RANGE
+11 11 CALIBRATED PIXEL REFLECTANCE OR EBBT OUT OF RANGE
+12 12 THE MOON HAS CORRUPTED THE SPACE VIEW
+13 13 SCAN DATA IS NOT PRESENT (NO VALID DATA)
+14 14 QUALITY FOR THIS SCAN-LINE IS REDUCED. THE VALUE IS DETERMINED BY THE COMBINED NUMBER OF STEPS REQUIRED TO FIND A REPLACEMENT FOR THERMISTOR OR CALIBRATION SOURCE DATA
+15 15 BAD DETECTOR
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33084.table b/definitions/bufr/tables/0/wmo/25/codetables/33084.table
new file mode 100644
index 0000000..accb209
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33084.table
@@ -0,0 +1,10 @@
+6 6 BULK SST OUTSIDE OF VALIDATION RANGE
+7 7 SKIN SST OUTSIDE OF VALIDATION RANGE
+8 8 SENSOR ZENITH ANGLE > 40 DEGREES (PIXEL IS NOT WITHIN 40 DEGREES OF NADIR AND THEREFORE IS NOT OF HIGH QUALITY)
+9 9 DEGRADATION - HORIZONTAL CELL SIZE (HCS) > 1.3 KM (HCS > 1.3 KM, SWATH WIDTH > 1 700 KM, SENSOR ZENITH ANGLE > 50.3 DEGREES)
+10 10 EXCLUSION: NO OCEAN IN PIXEL
+11 11 DEGRADATION: AEROSOL OPTICAL THICKNESS (AOT) > 0.6 (AOT IN HORIZONTAL CELL > 0.6 ON THE SLANT PATH (AOT @550 NM))
+12 12 EXCLUSION: AOT > 1.0 (AOT IN HORIZONTAL CELL > 1.0 ON THE SLANT PATH (AOT @550 NM))
+13 13 SUN GLINT PRESENT IN PIXEL
+14 14 ICE CONCENTRATION THRESHOLD EXCEEDED (SST NOT RETRIEVED DUE TO ICE CONCENTRATION EXCEEDING THRESHOLD IN SYSTEM SPEC)
+15 15 THIN CIRRUS DETECTED IN PIXEL
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33085.table b/definitions/bufr/tables/0/wmo/25/codetables/33085.table
new file mode 100644
index 0000000..7962ec5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33085.table
@@ -0,0 +1,14 @@
+4 4 ANGSTROM EXPONENT IS OUTSIDE OF THE SYSTEM SPECIFICATION RANGE
+5 5 EXCLUDED, ANGSTROM EXPONENT FOR AOT* AT 550 NM < 0.15
+6 6 BRIGHT SURFACE IN CELL (IF OVER LAND), OR SHALLOW OR TURBID WATER IN CELL (IF OVER OCEAN)
+7 7 LOW SUN, EXCLUDED, SOLAR ZENITH ANGLE > 80 DEGREES
+8 8 LOW SUN, DEGRADED, 65 DEGREES < SOLAR ZENITH ANGLE <= 80 DEGREES
+9 9 FIRE DETECTED IN CELL
+10 10 SNOW/ICE IN CELL
+11 11 CLOUD SHADOW IN CELL
+12 12 SUN GLINT IN CELL
+13 13 BAD SDR** DATA PRESENT IN HORIZONTAL CELL (QUALITY OF AOT/APSP*** DEGRADED OR AOT/APSP NOT RETRIEVED DUE TO BAD SDR DATA IN HORIZONTAL CELL)
+14 14 CIRRUS CONTAMINATION IN CELL
+15 15 CLOUD ADJACENT TO CELL
+16 16 CLOUD CONTAMINATION IN CELL
+17 17 AOT IS OUTSIDE OF THE SYSTEM SPECIFICATION RANGE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33086.table b/definitions/bufr/tables/0/wmo/25/codetables/33086.table
new file mode 100644
index 0000000..b7cda32
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33086.table
@@ -0,0 +1,5 @@
+0 0 NOT RETRIEVED
+1 1 EXCLUDED
+2 2 DEGRADED
+3 3 HIGH QUALITY
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33087.table b/definitions/bufr/tables/0/wmo/25/codetables/33087.table
new file mode 100644
index 0000000..f3000e2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33087.table
@@ -0,0 +1,10 @@
+0 0 LESS THAN OR EQUAL TO 10%
+1 1 GREATER THAN 10% BUT LESS THAN OR EQUAL TO 20%
+2 2 GREATER THAN 20% BUT LESS THAN OR EQUAL TO 30%
+3 3 GREATER THAN 30% BUT LESS THAN OR EQUAL TO 40%
+4 4 GREATER THAN 40% BUT LESS THAN OR EQUAL TO 50%
+5 5 GREATER THAN 50% BUT LESS THAN OR EQUAL TO 60%
+6 6 GREATER THAN 60% BUT LESS THAN OR EQUAL TO 70%
+7 7 GREATER THAN 70% BUT LESS THAN OR EQUAL TO 80%
+8 8 GREATER THAN 80%
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/33088.table b/definitions/bufr/tables/0/wmo/25/codetables/33088.table
new file mode 100644
index 0000000..8f7b539
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/33088.table
@@ -0,0 +1,12 @@
+6 6 SURFACE REFLECTIVITY OUT OF RANGE
+7 7 RESIDUAL TOO LARGE
+8 8 AEROSOL INDEX LIMIT EXCEEDED
+9 9 SOLAR ECLIPSE PRESENT (ALL OR PART OF THE IFOV* IS AFFECTED BY A SOLAR ECLIPSE, UMBRA OR PENUMBRA VIEWING)
+10 10 SUN GLINT PRESENT WITHIN IFOV
+11 11 SNOW OR ICE SURFACE IS WITHIN THE IFOV
+12 12 SOLAR ZENITH ANGLE IN EXCLUDED (NIGHT) CONDITION (SOLAR ZENITH ANGLE >= 88 DEGREES)
+13 13 SOLAR ZENITH ANGLE IN DEGRADED CONDITION (80 DEGREES <= SOLAR ZENITH ANGLE < 88 DEGREES)
+14 14 SO2 INDEX > 6 DU (DEGRADED CONDITION)
+15 15 RESIDUES ARE NOT CONSISTENT (INDICATES WHETHER THE RESIDUES FROM THE 22 WAVELENGTHS ARE CONSISTENT)
+16 16 O3 TRIPLET SELECTION IS NOT CONSISTENT WITHIN RETRIEVAL (OZONE TRIPLET CONSISTENCY)
+17 17 INPUT DATA QUALITY IS NOT GOOD
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/35000.table b/definitions/bufr/tables/0/wmo/25/codetables/35000.table
new file mode 100644
index 0000000..8c57023
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/35000.table
@@ -0,0 +1 @@
+1023 1023 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/35001.table b/definitions/bufr/tables/0/wmo/25/codetables/35001.table
new file mode 100644
index 0000000..bba0c81
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/35001.table
@@ -0,0 +1,4 @@
+0 0 REAL TIME
+1 1 NEAR-REAL TIME
+2 2 NON-REAL TIME
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/35030.table b/definitions/bufr/tables/0/wmo/25/codetables/35030.table
new file mode 100644
index 0000000..5b83f8b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/35030.table
@@ -0,0 +1,10 @@
+0 0 NO DISCREPANCIES
+1 1 NON-COMPLIANCE WITH STANDARD AND RECOMMENDED PRACTICES AND PROCEDURES INCLUDING THOSE OF MONITORING
+2 2 CATALOGUES OF METEOROLOGICAL BULLETINS NOT UPDATED IN A TIMELY MANNER
+3 3 INCORRECT ROUTING DIRECTORIES
+4 4 LACK OF FLEXIBILITY IN THE ROUTING ARRANGEMENTS
+5 5 DEFICIENCIES IN THE OPERATION OF GTS CENTRES AND CIRCUITS
+6 6 LOSS OF DATA OR DELAYS IN RELAYING DATA ON THE GTS
+7 7 ROUTING OF DATA DIFFERENT FROM THE ROUTING PROVIDED IN THE PLAN
+8 8 VARIOUS MALPRACTICES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/35031.table b/definitions/bufr/tables/0/wmo/25/codetables/35031.table
new file mode 100644
index 0000000..bdd705d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/35031.table
@@ -0,0 +1,20 @@
+1 1 SUFFICIENT AND ALL OF ACCEPTABLE QUALITY
+2 2 SUFFICIENT BUT PARTLY OF ACCEPTABLE QUALITY
+3 3 INSUFFICIENT BUT ALL OF ACCEPTABLE QUALITY
+4 4 INSUFFICIENT AND OF UNACCEPTABLE QUALITY
+5 5 SOME MESSAGES NOT COMPLETE
+6 6 SUSPECT OR WRONGLY CODED GROUPS COULD NOT BE INTERPRETED CONFIDENTLY
+7 7 GROSS CODING ERRORS
+8 8 TRANSMISSION SEQUENTIAL ORDER NOT OBSERVED
+9 9 REPORT COMPLETELY GARBLED AND THUS DISCARDED
+10 10 DEFICIENCIES IDENTIFIED AND RECTIFIED
+11 11 DEFICIENCIES IDENTIFIED BUT NOT RECTIFIED
+12 12 DEFICIENCIES NOT IDENTIFIED
+13 13 MEASURING ERRORS
+14 14 MUTUAL INCONSISTENCY
+15 15 TEMPORAL INCONSISTENCY
+16 16 FORECAST ERROR
+17 17 BIAS
+18 18 IMPROVE SYSTEM OF QUALITY CONTROL
+19 19 EXPAND TRAINING PROGRAMMES
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/35032.table b/definitions/bufr/tables/0/wmo/25/codetables/35032.table
new file mode 100644
index 0000000..7f53a05
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/35032.table
@@ -0,0 +1,10 @@
+1 1 DATA GROUPS MISSING DUE TO RADIO FADING
+2 2 DATA GROUPS MISSING DUE TO OUTAGE OF CENTRE
+3 3 DATA GROUPS MISSING DUE TO OUTAGE OF CIRCUIT
+4 4 NON-IMPLEMENTATION OR MAINTENANCE OF REQUIRED RBSN DENSITY
+5 5 SHORTAGE OF QUALIFIED STAFF TO MAN STATIONS
+6 6 LACK OF CONSUMABLES
+7 7 INSTRUMENT FAILURE
+8 8 NON-ADHERENCE TO TELECOMMUNICATION PROCEDURES
+9 9 SOME OBSERVING PROGRAMMES CEASED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/35033.table b/definitions/bufr/tables/0/wmo/25/codetables/35033.table
new file mode 100644
index 0000000..86e9592
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/35033.table
@@ -0,0 +1,12 @@
+1 1 NO DEFICIENCY
+2 2 OBSERVATIONS NOT MADE REGULARLY
+3 3 OBSERVATIONS NOT MADE AT RIGHT TIME
+4 4 OBSERVATIONS MADE BUT NOT DISSEMINATED
+5 5 OBSERVATIONS MADE AND SENT TO INCORRECT USERS
+6 6 COLLECTION NOT RECEIVED
+7 7 COLLECTION TRANSMITTED LATE
+8 8 COLLECTION NOT TRANSMITTED
+9 9 DIFFICULTIES IN HF PROPAGATION AND SELECTION OF SUITABLE FREQUENCY
+10 10 DIFFICULTIES IN MAINTENANCE OF COMMUNICATION EQUIPMENT AT REMOTE STATIONS
+11 11 NO ALTERNATIVE ARRANGEMENT FOR ROUTING METEOROLOGICAL OBSERVATION
+123 123 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/35034.table b/definitions/bufr/tables/0/wmo/25/codetables/35034.table
new file mode 100644
index 0000000..7297664
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/35034.table
@@ -0,0 +1,7 @@
+1 1 SLIGHT IMPROVEMENT
+2 2 SIGNIFICANT IMPROVEMENT
+3 3 MOST SIGNIFICANT IMPROVEMENT
+4 4 STEADY
+5 5 DECREASING
+6 6 EFFORTS REQUIRED TO IMPROVE NIGHT-TIME OBSERVATIONS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/35035.table b/definitions/bufr/tables/0/wmo/25/codetables/35035.table
new file mode 100644
index 0000000..8dd391d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/35035.table
@@ -0,0 +1,18 @@
+0 0 RESERVED
+1 1 BALLOON BURST
+2 2 BALLOON FORCED DOWN BY ICING
+3 3 LEAKING OR FLOATING BALLOON
+4 4 WEAK OR FADING SIGNAL
+5 5 BATTERY FAILURE
+6 6 GROUND EQUIPMENT FAILURE
+7 7 SIGNAL INTERFERENCE
+8 8 RADIOSONDE FAILURE
+9 9 EXCESSIVE MISSING DATA FRAMES
+10 10 RESERVED
+11 11 EXCESSIVE MISSING TEMPERATURE
+12 12 EXCESSIVE MISSING PRESSURE
+13 13 USER TERMINATED
+14 14 SUDDEN LOST OF SIGNAL
+15 15 TRACKING LOST
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/40005.table b/definitions/bufr/tables/0/wmo/25/codetables/40005.table
new file mode 100644
index 0000000..045a4f1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/40005.table
@@ -0,0 +1,5 @@
+1 1 SOIL MOISTURE BETWEEN -20% AND 0%
+2 2 SOIL MOISTURE BETWEEN 100% AND 120%
+3 3 CORRECTION OF WET BACKSCATTER REFERENCE
+4 4 CORRECTION OF DRY BACKSCATTER REFERENCE
+5 5 CORRECTION OF VOLUME SCATTERING IN SAND
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/40006.table b/definitions/bufr/tables/0/wmo/25/codetables/40006.table
new file mode 100644
index 0000000..d53382e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/40006.table
@@ -0,0 +1,8 @@
+1 1 NOT SOIL
+2 2 SENSITIVITY TO SOIL MOISTURE BELOW LIMIT
+3 3 AZIMUTHAL NOISE ABOVE LIMIT
+4 4 BACKSCATTER FORE-AFT BEAM OUT OF RANGE
+5 5 SLOPE MID-FORE BEAM OUT OF RANGE
+6 6 SLOPE MID-AFT BEAM OUT OF RANGE
+7 7 SOIL MOISTURE BELOW -20%
+8 8 SOIL MOISTURE ABOVE 120%
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/40011.table b/definitions/bufr/tables/0/wmo/25/codetables/40011.table
new file mode 100644
index 0000000..ddc7e86
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/40011.table
@@ -0,0 +1,4 @@
+1 1 MEAN SEA-SURFACE (MSS) INTERPOLATION FLAG
+2 2 OCEAN TIDE SOLUTION 1 INTERPOLATION FLAG (0 = 4 POINTS OVER OCEAN, 1 = LESS THAN 4 POINTS)
+3 3 OCEAN TIDE SOLUTION 2 INTERPOLATION FLAG (0 = 4 POINTS OVER OCEAN, 1 = LESS THAN 4 POINTS)
+4 4 METEOROLOGICAL DATA INTERPOLATION FLAG (0 = 4 POINTS OVER OCEAN, 1 = LESS THAN 4 POINTS)
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/40012.table b/definitions/bufr/tables/0/wmo/25/codetables/40012.table
new file mode 100644
index 0000000..d8ce14d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/40012.table
@@ -0,0 +1,3 @@
+1 1 18.7 GHZ BRIGHTNESS TEMPERATURE
+2 2 23.8 GHZ BRIGHTNESS TEMPERATURE
+3 3 34 GHZ BRIGHTNESS TEMPERATURE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/40013.table b/definitions/bufr/tables/0/wmo/25/codetables/40013.table
new file mode 100644
index 0000000..79b991a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/40013.table
@@ -0,0 +1,5 @@
+0 0 INTERPOLATION WITH NO GAP BETWEEN JMR* DATA
+1 1 INTERPOLATION WITH GAPS BETWEEN JMR* DATA
+2 2 EXTRAPOLATION OF JMR* DATA
+3 3 FAILURE OF EXTRAPOLATION AND INTERPOLATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/40020.table b/definitions/bufr/tables/0/wmo/25/codetables/40020.table
new file mode 100644
index 0000000..fa1d1f5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/40020.table
@@ -0,0 +1,16 @@
+1 1 NZPD AND COMPLEX CALIBRATION ERROR
+2 2 BAND 3 AFFECTED BY SPIKE
+3 3 BAND 3 AFFECTED BY SATURATION
+4 4 BAND 2 AFFECTED BY SPIKE
+5 5 BAND 1 AFFECTED BY SPIKE
+6 6 OVERFLOW/UNDER FLOW
+7 7 ON-BOARD PROCESSING ERROR
+8 8 SPECTRAL CALIBRATION ERROR
+9 9 RADIOMETRIC CALIBRATION ERROR
+10 10 MISSING AVHRR DATA
+11 11 MISSING IIS DATA
+12 12 MISSING SOUNDER DATA
+13 13 GQISFLAGQUAL SUMMARY FLAG FOR ALL BANDS
+14 14 ON-GROUND PROCESSING ERROR
+15 15 INTER-CALIBRATION ERROR IASI/AVHRR
+16 16 SPARE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/40023.table b/definitions/bufr/tables/0/wmo/25/codetables/40023.table
new file mode 100644
index 0000000..2e4cbfb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/40023.table
@@ -0,0 +1,4 @@
+1 1 BAND SEQUENCE (0 = 3KU_1C_3KU, 1 = 2KU_1C_2KU)
+2 2 C BAND FREQUENCY (0 = 320 MHZ, 1 = 100 MHZ)
+3 3 C BAND STATUS (0 = ON, 1 = OFF)
+4 4 KU BAND STATUS (0 = ON, 1 = OFF)
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/40024.table b/definitions/bufr/tables/0/wmo/25/codetables/40024.table
new file mode 100644
index 0000000..c8421e5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/40024.table
@@ -0,0 +1,5 @@
+0 0 2 MAPS AVAILABLE (6 HOURS APART)
+1 1 2 MAPS AVAILABLE (> 6 HOURS APART)
+2 2 1 MAP AVAILABLE; DATA EXTRAPOLATED
+3 3 NO MAPS USED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/40025.table b/definitions/bufr/tables/0/wmo/25/codetables/40025.table
new file mode 100644
index 0000000..7414302
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/40025.table
@@ -0,0 +1,4 @@
+0 0 GOOD
+1 1 BAD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/40028.table b/definitions/bufr/tables/0/wmo/25/codetables/40028.table
new file mode 100644
index 0000000..d2814d9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/40028.table
@@ -0,0 +1,16 @@
+0 0 GOOD DATA
+1 1 POSSIBLE SUN GLINT
+2 2 POSSIBLE RADIO FREQUENCY INTERFERENCE
+3 3 DEGRADED GEOLOCATION DATA
+4 4 DATA CORRECTED FOR WARM LOAD INTRUSION
+5 5 SCAN BLANKING ON
+6 6 DATA IS MISSING FROM FILE OR UNREADABLE
+7 7 UNPHYSICAL BRIGHTNESS TEMPERATURE
+8 8 ERROR IN GEOLOCATION DATA
+9 9 DATA MISSING IN ONE CHANNEL
+10 10 DATA MISSING IN MULTIPLE CHANNELS
+11 11 LAT/LON VALUES ARE OUT OF RANGE
+12 12 NON-NORMAL STATUS MODES
+13 13 DISTANCE TO CORRESPONDING LF PIXEL > 7 KM
+14 14 RESERVED
+15 15 MISSING VALUE (NO QUALITY INFORMATION AVAILABLE)
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/4059.table b/definitions/bufr/tables/0/wmo/25/codetables/4059.table
new file mode 100644
index 0000000..91fc6f4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/4059.table
@@ -0,0 +1,5 @@
+1 1 0000 UTC
+2 2 0600 UTC
+3 3 1200 UTC
+4 4 1800 UTC
+5 5 OTHER HOURS
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/4080.table b/definitions/bufr/tables/0/wmo/25/codetables/4080.table
new file mode 100644
index 0000000..84caf21
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/4080.table
@@ -0,0 +1,6 @@
+0 0 SPOT VALUES
+1 1 LESS THAN 15 MINUTES
+2 2 FROM 15 TO 45 MINUTES
+3 3 MORE THAN 45 MINUTES
+9 9 DATA NOT AVAILABLE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8001.table b/definitions/bufr/tables/0/wmo/25/codetables/8001.table
new file mode 100644
index 0000000..6210da3
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8001.table
@@ -0,0 +1,6 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 MAXIMUM WIND LEVEL
+5 5 SIGNIFICANT LEVEL, TEMPERATURE AND/OR RELATIVE HUMIDITY
+6 6 SIGNIFICANT LEVEL, WIND
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8002.table b/definitions/bufr/tables/0/wmo/25/codetables/8002.table
new file mode 100644
index 0000000..6ab4fd7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8002.table
@@ -0,0 +1,19 @@
+0 0 OBSERVING RULES FOR BASE OF LOWEST CLOUD AND CLOUD TYPES OF FM 12 SYNOP AND FM 13 SHIP APPLY
+1 1 FIRST NON-CUMULONIMBUS SIGNIFICANT LAYER
+2 2 SECOND NON-CUMULONIMBUS SIGNIFICANT LAYER
+3 3 THIRD NON-CUMULONIMBUS SIGNIFICANT LAYER
+4 4 CUMULONIMBUS LAYER
+5 5 CEILING
+6 6 CLOUDS NOT DETECTED BELOW THE FOLLOWING HEIGHT(S)
+7 7 LOW CLOUD
+8 8 MIDDLE CLOUD
+9 9 HIGH CLOUD
+10 10 CLOUD LAYER WITH BASE BELOW AND TOP ABOVE THE STATION
+11 11 CLOUD LAYER WITH BASE AND TOP BELOW THE STATION LEVEL
+20 20 NO CLOUDS DETECTED BY THE CLOUD DETECTION SYSTEM
+21 21 FIRST INSTRUMENT DETECTED CLOUD LAYER
+22 22 SECOND INSTRUMENT DETECTED CLOUD LAYER
+23 23 THIRD INSTRUMENT DETECTED CLOUD LAYER
+24 24 FOURTH INSTRUMENT DETECTED CLOUD LAYER
+62 62 VALUE NOT APPLICABLE
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8003.table b/definitions/bufr/tables/0/wmo/25/codetables/8003.table
new file mode 100644
index 0000000..3731351
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8003.table
@@ -0,0 +1,12 @@
+0 0 SURFACE
+1 1 BASE OF SATELLITE SOUNDING
+2 2 CLOUD TOP
+3 3 TROPOPAUSE
+4 4 PRECIPITABLE WATER
+5 5 SOUNDING RADIANCES
+6 6 MEAN TEMPERATURES
+7 7 OZONE
+8 8 LOW CLOUD
+9 9 MED CLOUD
+10 10 HIGH CLOUD
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8004.table b/definitions/bufr/tables/0/wmo/25/codetables/8004.table
new file mode 100644
index 0000000..2a8925e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8004.table
@@ -0,0 +1,6 @@
+2 2 UNSTEADY (UNS)
+3 3 LEVEL FLIGHT, ROUTINE OBSERVATION (LVR)
+4 4 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED (LVW)
+5 5 ASCENDING (ASC)
+6 6 DESCENDING (DES)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8005.table b/definitions/bufr/tables/0/wmo/25/codetables/8005.table
new file mode 100644
index 0000000..587ea99
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8005.table
@@ -0,0 +1,7 @@
+0 0 RESERVED
+1 1 STORM CENTRE
+2 2 OUTER LIMIT OR EDGE OF STORM
+3 3 LOCATION OF MAXIMUM WIND
+4 4 LOCATION OF THE STORM IN THE PERTURBED ANALYSIS
+5 5 LOCATION OF THE STORM IN THE ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8006.table b/definitions/bufr/tables/0/wmo/25/codetables/8006.table
new file mode 100644
index 0000000..9f56c62
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8006.table
@@ -0,0 +1,8 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 PROMINENT MAXIMUM LEVEL
+5 5 PROMINENT MINIMUM LEVEL
+6 6 MINIMUM PRESSURE LEVEL
+7 7 RESERVED
+8 8 LEVEL OF UNDETERMINED SIGNIFICANCE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8007.table b/definitions/bufr/tables/0/wmo/25/codetables/8007.table
new file mode 100644
index 0000000..3e4d2cc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8007.table
@@ -0,0 +1,5 @@
+0 0 POINT
+1 1 LINE
+2 2 AREA
+3 3 VOLUME
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8008.table b/definitions/bufr/tables/0/wmo/25/codetables/8008.table
new file mode 100644
index 0000000..2714b5a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8008.table
@@ -0,0 +1,8 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 LEVEL OF BETA RADIATION MAXIMUM
+5 5 LEVEL OF GAMMA RADIATION MAXIMUM
+6 6 MINIMUM PRESSURE LEVEL
+7 7 RESERVED
+8 8 LEVEL OF UNDETERMINED SIGNIFICANCE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8009.table b/definitions/bufr/tables/0/wmo/25/codetables/8009.table
new file mode 100644
index 0000000..b033982
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8009.table
@@ -0,0 +1,16 @@
+0 0 LEVEL FLIGHT, ROUTINE OBSERVATION, UNSTEADY
+1 1 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED, UNSTEADY
+2 2 UNSTEADY (UNS)
+3 3 LEVEL FLIGHT, ROUTINE OBSERVATION (LVR)
+4 4 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED (LVW)
+5 5 ASCENDING (ASC)
+6 6 DESCENDING (DES)
+7 7 ASCENDING, OBSERVATION INTERVALS SELECTED BY TIME INCREMENTS
+8 8 ASCENDING, OBSERVATION INTERVALS SELECTED BY TIME INCREMENTS, UNSTEADY
+9 9 ASCENDING, OBSERVATION INTERVALS SELECTED BY PRESSURE INCREMENTS
+10 10 ASCENDING, OBSERVATION INTERVALS SELECTED BY PRESSURE INCREMENTS, UNSTEADY
+11 11 DESCENDING, OBSERVATION INTERVALS SELECTED BY TIME INCREMENTS
+12 12 DESCENDING, OBSERVATION INTERVALS SELECTED BY TIME INCREMENTS, UNSTEADY
+13 13 DESCENDING, OBSERVATION INTERVALS SELECTED BY PRESSURE INCREMENTS
+14 14 DESCENDING, OBSERVATION INTERVALS SELECTED BY PRESSURE INCREMENTS, UNSTEADY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8010.table b/definitions/bufr/tables/0/wmo/25/codetables/8010.table
new file mode 100644
index 0000000..3c5fe71
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8010.table
@@ -0,0 +1,14 @@
+0 0 RESERVED
+1 1 BARE SOIL
+2 2 BARE ROCK
+3 3 LAND GRASS COVER
+4 4 WATER (LAKE, SEA)
+5 5 FLOOD WATER UNDERNEATH
+6 6 SNOW
+7 7 ICE
+8 8 RUNWAY OR ROAD
+9 9 SHIP OR PLATFORM DECK IN STEEL
+10 10 SHIP OR PLATFORM DECK IN WOOD
+11 11 SHIP OR PLATFORM DECK PARTLY COVERED WITH RUBBER MAT
+12 12 BUILDING ROOF
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8011.table b/definitions/bufr/tables/0/wmo/25/codetables/8011.table
new file mode 100644
index 0000000..e7a8221
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8011.table
@@ -0,0 +1,27 @@
+0 0 QUASI-STATIONARY FRONT AT THE SURFACE
+1 1 QUASI-STATIONARY FRONT ABOVE THE SURFACE
+2 2 WARM FRONT AT THE SURFACE
+3 3 WARM FRONT ABOVE THE SURFACE
+4 4 COLD FRONT AT THE SURFACE
+5 5 COLD FRONT ABOVE THE SURFACE
+6 6 OCCLUSION
+7 7 INSTABILITY LINE
+8 8 INTERTROPICAL FRONT
+9 9 CONVERGENCE LINE
+10 10 JET STREAM
+11 11 CLOUD CLEAR
+12 12 CLOUD
+13 13 TURBULENCE
+14 14 STORM
+15 15 AIRFRAME ICING
+16 16 PHENOMENON
+17 17 VOLCANO
+18 18 ATMOSPHERICS
+19 19 RESERVED
+20 20 SPECIAL CLOUDS
+21 21 THUNDERSTORM
+22 22 TROPICAL CYCLONE
+23 23 MOUNTAIN WAVE
+24 24 DUSTSTORM
+25 25 SANDSTORM
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8012.table b/definitions/bufr/tables/0/wmo/25/codetables/8012.table
new file mode 100644
index 0000000..769bc0b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8012.table
@@ -0,0 +1,4 @@
+0 0 LAND
+1 1 SEA
+2 2 COAST
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8013.table b/definitions/bufr/tables/0/wmo/25/codetables/8013.table
new file mode 100644
index 0000000..e18d295
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8013.table
@@ -0,0 +1,4 @@
+0 0 NIGHT
+1 1 DAY
+2 2 TWILIGHT
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8014.table b/definitions/bufr/tables/0/wmo/25/codetables/8014.table
new file mode 100644
index 0000000..e6f2e46
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8014.table
@@ -0,0 +1,10 @@
+0 0 10-MINUTE MEAN VALUE - NORMAL VALUE
+1 1 10-MINUTE MEAN VALUE - ABOVE THE UPPER LIMIT FOR ASSESSMENTS OF RVR (P)
+2 2 10-MINUTE MEAN VALUE - BELOW THE LOWER LIMIT FOR ASSESSMENTS OF RVR (M)
+3 3 ONE-MINUTE MINIMUM VALUE - NORMAL VALUE
+4 4 ONE-MINUTE MINIMUM VALUE - ABOVE THE UPPER LIMIT FOR ASSESSMENTS OF RVR (P)
+5 5 ONE-MINUTE MINIMUM VALUE - BELOW THE LOWER LIMIT FOR ASSESSMENTS OF RVR (M)
+6 6 ONE-MINUTE MAXIMUM VALUE - NORMAL VALUE
+7 7 ONE-MINUTE MAXIMUM VALUE - ABOVE THE UPPER LIMIT FOR ASSESSMENTS OF RVR (P)
+8 8 ONE-MINUTE MAXIMUM VALUE - BELOW THE LOWER LIMIT FOR ASSESSMENTS OF RVR (M)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8015.table b/definitions/bufr/tables/0/wmo/25/codetables/8015.table
new file mode 100644
index 0000000..6830b95
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8015.table
@@ -0,0 +1,4 @@
+0 0 SINGLE SENSOR
+1 1 PRIMARY SENSOR
+2 2 SECONDARY SENSOR (BACKUP)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8016.table b/definitions/bufr/tables/0/wmo/25/codetables/8016.table
new file mode 100644
index 0000000..6b8a1fa
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8016.table
@@ -0,0 +1,5 @@
+0 0 NOSIG
+1 1 BECMG
+2 2 TEMPO
+3 3 FM
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8017.table b/definitions/bufr/tables/0/wmo/25/codetables/8017.table
new file mode 100644
index 0000000..b3156f8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8017.table
@@ -0,0 +1,4 @@
+0 0 FM
+1 1 TL
+2 2 AT
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8018.table b/definitions/bufr/tables/0/wmo/25/codetables/8018.table
new file mode 100644
index 0000000..f91e554
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8018.table
@@ -0,0 +1,4 @@
+1 1 LAND IS PRESENT
+2 2 SURFACE ICE MAP INDICATES ICE IS PRESENT
+11 11 ICE MAP DATA NOT AVAILABLE
+12 12 ATTENUATION MAP DATA NOT AVAILABLE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8019.table b/definitions/bufr/tables/0/wmo/25/codetables/8019.table
new file mode 100644
index 0000000..4ed4133
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8019.table
@@ -0,0 +1,8 @@
+0 0 RESERVED
+1 1 ATS (AIR TRAFFIC SERVICE) UNIT SERVING FIR (FLIGHT INFORMATION REGION)
+2 2 FIR (FLIGHT INFORMATION REGION)
+3 3 UIR (UPPER FLIGHT INFORMATION REGION)
+4 4 CTA (CONTROL AREA)
+5 5 VAAC (VOLCANIC ASH ADVISORY CENTRE)
+6 6 MWO (METEOROLOGICAL WATCH OFFICE) ISSUING SIGMET
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8021.table b/definitions/bufr/tables/0/wmo/25/codetables/8021.table
new file mode 100644
index 0000000..20fd793
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8021.table
@@ -0,0 +1,32 @@
+0 0 RESERVED
+1 1 TIME SERIES
+2 2 TIME AVERAGED (SEE NOTE 1)
+3 3 ACCUMULATED
+4 4 FORECAST
+5 5 FORECAST TIME SERIES
+6 6 FORECAST TIME AVERAGED
+7 7 FORECAST ACCUMULATED
+8 8 ENSEMBLE MEAN (SEE NOTE 2)
+9 9 ENSEMBLE MEAN TIME SERIES
+10 10 ENSEMBLE MEAN TIME AVERAGED
+11 11 ENSEMBLE MEAN ACCUMULATED
+12 12 ENSEMBLE MEAN FORECAST
+13 13 ENSEMBLE MEAN FORECAST TIME SERIES
+14 14 ENSEMBLE MEAN FORECAST TIME AVERAGED
+15 15 ENSEMBLE MEAN FORECAST ACCUMULATED
+16 16 ANALYSIS
+17 17 START OF PHENOMENON
+18 18 RADIOSONDE LAUNCH TIME
+19 19 START OF ORBIT
+20 20 END OF ORBIT
+21 21 TIME OF ASCENDING NODE
+22 22 TIME OF OCCURRENCE OF WIND SHIFT
+23 23 MONITORING PERIOD
+24 24 AGREED TIME LIMIT FOR REPORT RECEPTION
+25 25 NOMINAL REPORTING TIME
+26 26 TIME OF LAST KNOWN POSITION
+27 27 FIRST GUESS
+28 28 START OF SCAN
+29 29 END OF SCAN OR TIME OF ENDING
+30 30 TIME OF OCCURRENCE
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8023.table b/definitions/bufr/tables/0/wmo/25/codetables/8023.table
new file mode 100644
index 0000000..2125e23
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8023.table
@@ -0,0 +1,14 @@
+2 2 MAXIMUM VALUE
+3 3 MINIMUM VALUE
+4 4 MEAN VALUE
+5 5 MEDIAN VALUE
+6 6 MODAL VALUE
+7 7 MEAN ABSOLUTE ERROR
+8 8 RESERVED
+9 9 BEST ESTIMATE OF STANDARD DEVIATION (N-1)
+10 10 STANDARD DEVIATION (N)
+11 11 HARMONIC MEAN
+12 12 ROOT-MEAN-SQUARE VECTOR ERROR
+13 13 ROOT-MEAN-SQUARE
+32 32 VECTOR MEAN
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8024.table b/definitions/bufr/tables/0/wmo/25/codetables/8024.table
new file mode 100644
index 0000000..377858b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8024.table
@@ -0,0 +1,12 @@
+2 2 OBSERVED MINUS MAXIMUM
+3 3 OBSERVED MINUS MINIMUM
+4 4 OBSERVED MINUS MEAN
+5 5 OBSERVED MINUS MEDIAN
+6 6 OBSERVED MINUS MODE
+11 11 OBSERVED MINUS CLIMATOLOGY (ANOMALY)
+12 12 OBSERVED MINUS ANALYSED VALUE
+13 13 OBSERVED MINUS INITIALIZED ANALYSED VALUE
+14 14 OBSERVED MINUS FORECAST VALUE
+21 21 OBSERVED MINUS INTERPOLATED VALUE
+22 22 OBSERVED MINUS HYDROSTATICALLY CALCULATED VALUE
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8025.table b/definitions/bufr/tables/0/wmo/25/codetables/8025.table
new file mode 100644
index 0000000..1d88fa5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8025.table
@@ -0,0 +1,5 @@
+0 0 UNIVERSAL TIME COORDINATED (UTC) MINUS LOCAL STANDARD TIME (LST)
+1 1 LOCAL STANDARD TIME
+2 2 UNIVERSAL TIME COORDINATED (UTC) MINUS SATELLITE CLOCK
+5 5 TIME DIFFERENCE FROM EDGE OF PROCESSING SEGMENT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8026.table b/definitions/bufr/tables/0/wmo/25/codetables/8026.table
new file mode 100644
index 0000000..9bcef78
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8026.table
@@ -0,0 +1,5 @@
+0 0 AVERAGING KERNEL MATRIX
+1 1 CORRELATION MATRIX (C)
+2 2 LOWER TRIANGULAR CORRELATION MATRIX SQUARE ROOT (L FROM C=LLT)
+3 3 INVERSE OF LOWER TRIANGULAR CORRELATION MATRIX SQUARE ROOT (L-1)
+63 63 MISSING OR UNDEFINED SIGNIFICANCE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8029.table b/definitions/bufr/tables/0/wmo/25/codetables/8029.table
new file mode 100644
index 0000000..d0eae5a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8029.table
@@ -0,0 +1,16 @@
+0 0 OPEN OCEAN OR SEMI-ENCLOSED SEA
+1 1 ENCLOSED SEA OR LAKE
+2 2 CONTINENTAL ICE
+3 3 LAND
+4 4 LOW INLAND (BELOW SEA LEVEL)
+5 5 MIX OF LAND AND WATER
+6 6 MIX OF LAND AND LOW INLAND
+11 11 RIVER
+12 12 LAKE
+13 13 SEA
+14 14 GLACIER
+15 15 URBAN LAND
+16 16 RURAL LAND
+17 17 SUBURBAN LAND
+18 18 SEA ICE
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8032.table b/definitions/bufr/tables/0/wmo/25/codetables/8032.table
new file mode 100644
index 0000000..712400d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8032.table
@@ -0,0 +1,7 @@
+0 0 ROUTINE OPERATION
+1 1 EVENT TRIGGERED BY STORM SURGE
+2 2 EVENT TRIGGERED BY TSUNAMI
+3 3 EVENT TRIGGERED MANUALLY
+4 4 INSTALLATION TESTING
+5 5 MAINTENANCE TESTING
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8033.table b/definitions/bufr/tables/0/wmo/25/codetables/8033.table
new file mode 100644
index 0000000..1c69537
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8033.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 PERCENTAGE CONFIDENCE CALCULATED USING CLOUD FRACTION
+2 2 PERCENTAGE CONFIDENCE CALCULATED USING STANDARD DEVIATION OF TEMPERATURE
+3 3 PERCENTAGE CONFIDENCE CALCULATED USING PROBABILITY OF CLOUD CONTAMINATION
+4 4 PERCENTAGE CONFIDENCE CALCULATED USING NORMALITY OF DISTRIBUTION
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8034.table b/definitions/bufr/tables/0/wmo/25/codetables/8034.table
new file mode 100644
index 0000000..3723a74
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8034.table
@@ -0,0 +1,10 @@
+0 0 SECONDARY SAMPLING: AVERAGED
+1 1 SECONDARY SAMPLING: DISCRETE
+2 2 SECONDARY SAMPLING: MIXED
+3 3 NEAR-SURFACE SAMPLING: AVERAGED, PUMPED
+4 4 NEAR-SURFACE SAMPLING: AVERAGED, UN-PUMPED
+5 5 NEAR-SURFACE SAMPLING: DISCRETE, PUMPED
+6 6 NEAR-SURFACE SAMPLING: DISCRETE, UN-PUMPED
+7 7 NEAR-SURFACE SAMPLING: MIXED, PUMPED
+8 8 NEAR-SURFACE SAMPLING: MIXED, UN-PUMPED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8035.table b/definitions/bufr/tables/0/wmo/25/codetables/8035.table
new file mode 100644
index 0000000..3d641fd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8035.table
@@ -0,0 +1,8 @@
+0 0 GLOBAL
+1 1 REGIONAL
+2 2 NATIONAL
+3 3 SPECIAL
+4 4 BILATERAL
+5 5 RESERVED
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8036.table b/definitions/bufr/tables/0/wmo/25/codetables/8036.table
new file mode 100644
index 0000000..6436989
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8036.table
@@ -0,0 +1,8 @@
+0 0 WMO SECRETARIAT
+1 1 WMO
+2 2 RSMC
+3 3 NMC
+4 4 RTH
+5 5 OBSERVING SITE
+6 6 OTHER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8039.table b/definitions/bufr/tables/0/wmo/25/codetables/8039.table
new file mode 100644
index 0000000..f4403c6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8039.table
@@ -0,0 +1,8 @@
+0 0 ISSUE TIME OF FORECAST
+1 1 TIME OF COMMENCEMENT OF PERIOD OF THE FORECAST
+2 2 TIME OF ENDING OF PERIOD OF THE FORECAST
+3 3 FORECAST TIME OF MAXIMUM TEMPERATURE
+4 4 FORECAST TIME OF MINIMUM TEMPERATURE
+5 5 TIME OF BEGINNING OF THE FORECAST CHANGE
+6 6 TIME OF ENDING OF THE FORECAST CHANGE
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8040.table b/definitions/bufr/tables/0/wmo/25/codetables/8040.table
new file mode 100644
index 0000000..42c5af0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8040.table
@@ -0,0 +1,49 @@
+0 0 HIGH-RESOLUTION DATA SAMPLE
+1 1 WITHIN 20 HPA OF SURFACE
+2 2 PRESSURE LESS THAN 10 HPA (I.E., 9, 8, 7, ETC.) WHEN NO OTHER REASON APPLIES
+3 3 BASE PRESSURE LEVEL FOR STABILITY INDEX
+4 4 BEGIN DOUBTFUL TEMPERATURE, HEIGHT DATA
+5 5 BEGIN MISSING DATA (ALL ELEMENTS)
+6 6 BEGIN MISSING RELATIVE HUMIDITY DATA
+7 7 BEGIN MISSING TEMPERATURE DATA
+8 8 HIGHEST LEVEL REACHED BEFORE BALLOON DESCENT BECAUSE OF ICING OR TURBULENCE
+9 9 END DOUBTFUL TEMPERATURE, HEIGHT DATA
+10 10 END MISSING DATA (ALL ELEMENTS)
+11 11 END MISSING RELATIVE HUMIDITY DATA
+12 12 END MISSING TEMPERATURE DATA
+13 13 ZERO DEGREES CELSIUS CROSSING(S) FOR RADAT
+14 14 STANDARD PRESSURE LEVEL
+15 15 OPERATOR-ADDED LEVEL
+16 16 OPERATOR-DELETED LEVEL
+17 17 BALLOON RE-ASCENDED BEYOND PREVIOUS HIGHEST ASCENT LEVEL
+18 18 SIGNIFICANT RELATIVE HUMIDITY LEVEL
+19 19 RELATIVE HUMIDITY LEVEL SELECTION TERMINATED
+20 20 SURFACE LEVEL
+21 21 SIGNIFICANT TEMPERATURE LEVEL
+22 22 MANDATORY TEMPERATURE LEVEL
+23 23 FLIGHT TERMINATION LEVEL
+24 24 TROPOPAUSE(S)
+25 25 AIRCRAFT REPORT
+26 26 INTERPOLATED (GENERATED) LEVEL
+27 27 MANDATORY WIND LEVEL
+28 28 SIGNIFICANT WIND LEVEL
+29 29 MAXIMUM WIND LEVEL
+30 30 INCREMENTAL WIND LEVEL (FIXED REGIONAL)
+31 31 INCREMENTAL HEIGHT LEVEL (GENERATED)
+32 32 WIND TERMINATION LEVEL
+33 33 PRESSURE 100 TO 110 HPA, WHEN NO OTHER REASON APPLIES
+34 34 FREEZING LEVEL BASE
+35 35 FREEZING LEVEL TOP
+36 36 FLIGHT LEVEL BASE
+37 37 FLIGHT LEVEL TOP
+38 38 TOP OF WIND SOUNDING
+39 39 BOTTOM OF WIND SOUNDING
+40 40 SIGNIFICANT THERMODYNAMIC LEVEL (INVERSION)
+41 41 SIGNIFICANT RELATIVE HUMIDITY LEVEL (ACCORDING TO NCDC CRITERIA)
+42 42 SIGNIFICANT TEMPERATURE LEVEL (ACCORDING TO NCDC)
+43 43 BEGIN MISSING WIND DATA
+44 44 END MISSING WIND DATA
+60 60 LEVEL OF 80-KNOT ISOTACH ABOVE JET
+61 61 LEVEL OF 80-KNOT ISOTACH BELOW JET
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8041.table b/definitions/bufr/tables/0/wmo/25/codetables/8041.table
new file mode 100644
index 0000000..1f48fbe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8041.table
@@ -0,0 +1,15 @@
+0 0 PARENT SITE
+1 1 OBSERVATION SITE
+2 2 BALLOON MANUFACTURE DATE
+3 3 BALLOON LAUNCH POINT
+4 4 SURFACE OBSERVATION
+5 5 SURFACE OBSERVATION DISPLACEMENT FROM LAUNCH POINT
+6 6 FLIGHT LEVEL OBSERVATION
+7 7 FLIGHT LEVEL TERMINATION POINT
+8 8 IFR CEILING AND VISIBILITY
+9 9 MOUNTAIN OBSCURATION
+10 10 STRONG SURFACE WIND
+11 11 FREEZING LEVEL
+12 12 MULTIPLE FREEZING LEVEL
+13 13 INSTRUMENT MANUFACTURE DATE
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8042.table b/definitions/bufr/tables/0/wmo/25/codetables/8042.table
new file mode 100644
index 0000000..c71709a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8042.table
@@ -0,0 +1,17 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 MAXIMUM WIND LEVEL
+5 5 SIGNIFICANT TEMPERATURE LEVEL
+6 6 SIGNIFICANT HUMIDITY LEVEL
+7 7 SIGNIFICANT WIND LEVEL
+8 8 BEGINNING OF MISSING TEMPERATURE DATA
+9 9 END OF MISSING TEMPERATURE DATA
+10 10 BEGINNING OF MISSING HUMIDITY DATA
+11 11 END OF MISSING HUMIDITY DATA
+12 12 BEGINNING OF MISSING WIND DATA
+13 13 END OF MISSING WIND DATA
+14 14 TOP OF WIND SOUNDING
+15 15 LEVEL DETERMINED BY REGIONAL DECISION
+16 16 FREEZING LEVEL
+17 17 PRESSURE LEVEL ORIGINALLY INDICATED BY HEIGHT AS THE VERTICAL COORDINATE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8043.table b/definitions/bufr/tables/0/wmo/25/codetables/8043.table
new file mode 100644
index 0000000..249fd0e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8043.table
@@ -0,0 +1,17 @@
+0 0 OZONE
+1 1 WATER VAPOUR
+2 2 METHANE
+3 3 CARBON DIOXIDE
+4 4 CARBON MONOXIDE
+5 5 NITROGEN DIOXIDE
+6 6 NITROUS OXIDE
+7 7 FORMALDEHYDE
+8 8 SULPHUR DIOXIDE
+25 25 PARTICULATE MATTER < 1.0 MICRONS
+26 26 PARTICULATE MATTER < 2.5 MICRONS
+27 27 PARTICULATE MATTER < 10 MICRONS
+28 28 AEROSOLS (GENERIC)
+29 29 SMOKE (GENERIC)
+30 30 CRUSTAL MATERIAL (GENERIC DUST)
+31 31 VOLCANIC ASH
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8050.table b/definitions/bufr/tables/0/wmo/25/codetables/8050.table
new file mode 100644
index 0000000..4b401f1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8050.table
@@ -0,0 +1,11 @@
+0 0 RESERVED
+1 1 PRESSURE
+2 2 TEMPERATURE
+3 3 EXTREME TEMPERATURE
+4 4 VAPOUR PRESSURE
+5 5 PRECIPITATION
+6 6 SUNSHINE DURATION
+7 7 MAXIMUM TEMPERATURE
+8 8 MINIMUM TEMPERATURE
+9 9 WIND
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8051.table b/definitions/bufr/tables/0/wmo/25/codetables/8051.table
new file mode 100644
index 0000000..5249fe6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8051.table
@@ -0,0 +1,7 @@
+1 1 PRESSURE
+2 2 TEMPERATURE
+3 3 EXTREME TEMPERATURE
+4 4 VAPOUR PRESSURE
+5 5 PRECIPITATION
+6 6 SUNSHINE DURATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8052.table b/definitions/bufr/tables/0/wmo/25/codetables/8052.table
new file mode 100644
index 0000000..46dcbbe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8052.table
@@ -0,0 +1,26 @@
+0 0 MEAN WIND SPEED OVER A 10-MINUTE PERIOD OBSERVED OR RECORDED EQUAL TO OR MORE THAN 10 M S-1 OR 20 KNOTS
+1 1 MEAN WIND SPEED OVER A 10-MINUTE PERIOD OBSERVED OR RECORDED EQUAL TO OR MORE THAN 20 M S-1 OR 40 KNOTS
+2 2 MEAN WIND SPEED OVER A 10-MINUTE PERIOD OBSERVED OR RECORDED EQUAL TO OR MORE THAN 30 M S-1 OR 60 KNOTS
+3 3 MAXIMUM TEMPERATURE LESS THAN 273.15 K
+4 4 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 298.15 K
+5 5 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 303.15 K
+6 6 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 308.15 K
+7 7 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 313.15 K
+8 8 MINIMUM TEMPERATURE LESS THAN 273.15 K
+9 9 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 273.15 K
+10 10 PRECIPITATION EQUAL TO OR MORE THAN 1.0 KG M-2
+11 11 PRECIPITATION EQUAL TO OR MORE THAN 5.0 KG M-2
+12 12 PRECIPITATION EQUAL TO OR MORE THAN 10.0 KG M-2
+13 13 PRECIPITATION EQUAL TO OR MORE THAN 50.0 KG M-2
+14 14 PRECIPITATION EQUAL TO OR MORE THAN 100.0 KG M-2
+15 15 PRECIPITATION EQUAL TO OR MORE THAN 150.0 KG M-2
+16 16 SNOW DEPTH MORE THAN 0.00 M
+17 17 SNOW DEPTH MORE THAN 0.01 M
+18 18 SNOW DEPTH MORE THAN 0.10 M
+19 19 SNOW DEPTH MORE THAN 0.50 M
+20 20 HORIZONTAL VISIBILITY LESS THAN 50 M
+21 21 HORIZONTAL VISIBILITY LESS THAN 100 M
+22 22 HORIZONTAL VISIBILITY LESS THAN 1000 M
+23 23 HAIL
+24 24 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8053.table b/definitions/bufr/tables/0/wmo/25/codetables/8053.table
new file mode 100644
index 0000000..cbc11c9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8053.table
@@ -0,0 +1,4 @@
+0 0 VALUE OCCURRED ON ONLY ONE DAY IN THE MONTH
+1 1 VALUE OCCURRED ON MORE THAN ONE DAY IN THE MONTH
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8054.table b/definitions/bufr/tables/0/wmo/25/codetables/8054.table
new file mode 100644
index 0000000..51b908e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8054.table
@@ -0,0 +1,3 @@
+0 0 WIND SPEED OR GUST IS AS REPORTED
+1 1 WIND SPEED IS GREATER THAN THAT REPORTED (P IN METAR/TAF/SPECI)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8060.table b/definitions/bufr/tables/0/wmo/25/codetables/8060.table
new file mode 100644
index 0000000..2865fec
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8060.table
@@ -0,0 +1,8 @@
+0 0 RESERVED
+1 1 RANGE
+2 2 AZIMUTH
+3 3 HORIZONTAL
+4 4 VERTICAL
+5 5 NORTH/SOUTH
+6 6 EAST/WEST
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8065.table b/definitions/bufr/tables/0/wmo/25/codetables/8065.table
new file mode 100644
index 0000000..69b80ea
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8065.table
@@ -0,0 +1,4 @@
+0 0 NO SUN-GLINT
+1 1 SUN-GLINT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8066.table b/definitions/bufr/tables/0/wmo/25/codetables/8066.table
new file mode 100644
index 0000000..fcc0252
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8066.table
@@ -0,0 +1,4 @@
+0 0 OPAQUE
+1 1 SEMI-TRANSPARENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8070.table b/definitions/bufr/tables/0/wmo/25/codetables/8070.table
new file mode 100644
index 0000000..f580617
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8070.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 RESERVED
+2 2 EARTH LOCATED INSTRUMENT COUNTS, CALIBRATION COEFFICIENTS AND HOUSEKEEPING (LEVEL 1B)
+3 3 EARTH LOCATED CALIBRATED RADIANCES (LEVEL 1C)
+4 4 MAPPED TO A COMMON FOOTPRINT, EARTH LOCATED CALIBRATED RADIANCES (LEVEL 1D)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8072.table b/definitions/bufr/tables/0/wmo/25/codetables/8072.table
new file mode 100644
index 0000000..7dcd961
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8072.table
@@ -0,0 +1,6 @@
+0 0 MIXED
+1 1 CLEAR
+2 2 CLOUDY
+3 3 PROBABLY CLEAR
+4 4 PROBABLY CLOUDY
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8074.table b/definitions/bufr/tables/0/wmo/25/codetables/8074.table
new file mode 100644
index 0000000..5778e65
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8074.table
@@ -0,0 +1,4 @@
+0 0 OPEN OCEAN OR SEMI-ENCLOSED SEA
+1 1 NON-OCEAN LIKE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8075.table b/definitions/bufr/tables/0/wmo/25/codetables/8075.table
new file mode 100644
index 0000000..5f5e3a2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8075.table
@@ -0,0 +1,4 @@
+0 0 ASCENDING ORBIT
+1 1 DESCENDING ORBIT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8076.table b/definitions/bufr/tables/0/wmo/25/codetables/8076.table
new file mode 100644
index 0000000..431496f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8076.table
@@ -0,0 +1,9 @@
+0 0 KU
+1 1 C
+2 2 LONG-WAVE INFRARED
+3 3 MEDIUM-WAVE INFRARED
+4 4 SHORT-WAVE INFRARED
+5 5 M
+6 6 I
+7 7 DAY/NIGHT
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8077.table b/definitions/bufr/tables/0/wmo/25/codetables/8077.table
new file mode 100644
index 0000000..2c7902b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8077.table
@@ -0,0 +1,7 @@
+0 0 LAND
+1 1 SEA
+2 2 COASTAL
+3 3 OPEN OCEAN OR SEMI-ENCLOSED SEA
+4 4 ENCLOSED SEA OR LAKE
+5 5 CONTINENTAL ICE
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8079.table b/definitions/bufr/tables/0/wmo/25/codetables/8079.table
new file mode 100644
index 0000000..735a09c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8079.table
@@ -0,0 +1,9 @@
+0 0 NORMAL ISSUE
+1 1 CORRECTION TO A PREVIOUSLY ISSUED PRODUCT (COR)
+2 2 AMENDMENT TO A PREVIOUSLY ISSUED PRODUCT (AMD)
+3 3 CORRECTION TO A PREVIOUSLY ISSUED AMENDED PRODUCT (COR AMD)
+4 4 CANCELLATION OF A PREVIOUSLY ISSUED PRODUCT (CNL)
+5 5 NO PRODUCT AVAILABLE (NIL)
+6 6 SPECIAL REPORT (SPECI)
+7 7 CORRECTED SPECIAL REPORT (SPECI COR)
+15 15 MISSING OR NOT APPLICABLE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8080.table b/definitions/bufr/tables/0/wmo/25/codetables/8080.table
new file mode 100644
index 0000000..1a0f3a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8080.table
@@ -0,0 +1,14 @@
+0 0 TOTAL WATER PRESSURE PROFILE
+1 1 TOTAL WATER TEMPERATURE PROFILE
+2 2 TOTAL WATER SALINITY PROFILE
+3 3 TOTAL WATER CONDUCTIVITY PROFILE
+4 4 TOTAL WATER DEPTH
+10 10 WATER PRESSURE AT A LEVEL
+11 11 WATER TEMPERATURE AT A LEVEL
+12 12 SALINITY AT A LEVEL
+13 13 WATER DEPTH AT A LEVEL
+14 14 SEA/WATER CURRENT SPEED AT A LEVEL
+15 15 SEA/WATER CURRENT DIRECTION AT A LEVEL
+16 16 DISSOLVED OXYGEN AT A LEVEL
+20 20 POSITION
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8081.table b/definitions/bufr/tables/0/wmo/25/codetables/8081.table
new file mode 100644
index 0000000..75d2887
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8081.table
@@ -0,0 +1,5 @@
+0 0 SENSOR
+1 1 TRANSMITTER
+2 2 RECEIVER
+3 3 OBSERVING PLATFORM
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8082.table b/definitions/bufr/tables/0/wmo/25/codetables/8082.table
new file mode 100644
index 0000000..1f24db8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8082.table
@@ -0,0 +1,3 @@
+0 0 SENSOR HEIGHT IS NOT MODIFIED
+1 1 SENSOR HEIGHT IS MODIFIED TO STANDARD LEVEL
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8083.table b/definitions/bufr/tables/0/wmo/25/codetables/8083.table
new file mode 100644
index 0000000..174ef34
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8083.table
@@ -0,0 +1,9 @@
+1 1 ADJUSTED TO OR WITH RESPECT TO REPRESENTATIVE HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM)
+2 2 ADJUSTED TO OR WITH RESPECT TO REPRESENTATIVE HEIGHT OF SENSOR ABOVE WATER SURFACE
+3 3 ADJUSTED WITH RESPECT TO STANDARD SURFACE ROUGHNESS
+4 4 ADJUSTED WITH RESPECT TO WIND SPEED
+5 5 ADJUSTED WITH RESPECT TO TEMPERATURE
+6 6 ADJUSTED WITH RESPECT TO PRESSURE
+7 7 ADJUSTED WITH RESPECT TO HUMIDITY
+8 8 ADJUSTED WITH RESPECT TO EVAPORATION
+9 9 ADJUSTED WITH RESPECT TO WETTING LOSSES
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8085.table b/definitions/bufr/tables/0/wmo/25/codetables/8085.table
new file mode 100644
index 0000000..79e1a3d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8085.table
@@ -0,0 +1,4 @@
+0 0 FORE BEAM
+1 1 MID BEAM
+2 2 AFT BEAM
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8086.table b/definitions/bufr/tables/0/wmo/25/codetables/8086.table
new file mode 100644
index 0000000..47665e9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8086.table
@@ -0,0 +1,9 @@
+1 1 MODEL GROUND SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 MAXIMUM WIND LEVEL
+5 5 SIGNIFICANT TEMPERATURE LEVEL
+6 6 SIGNIFICANT HUMIDITY LEVEL
+7 7 SIGNIFICANT WIND LEVEL
+8 8 VERTICALLY INTERPOLATED LEVEL (THIS SHOULD BE SET TO 1 FOR POINTS ON THE VERTICAL PROFILE THAT FALL BETWEEN THE MODEL'S NATIVE VERTICAL LEVELS.)
+9 9 VIRTUAL STATION HEIGHT
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8087.table b/definitions/bufr/tables/0/wmo/25/codetables/8087.table
new file mode 100644
index 0000000..d556c98
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8087.table
@@ -0,0 +1,5 @@
+0 0 UPPER LEFT
+1 1 UPPER RIGHT
+2 2 LOWER RIGHT
+3 3 LOWER LEFT
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/codetables/8091.table b/definitions/bufr/tables/0/wmo/25/codetables/8091.table
new file mode 100644
index 0000000..23e8402
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/codetables/8091.table
@@ -0,0 +1,9 @@
+0 0 SATELLITE COORDINATES
+1 1 OBSERVATIONS COORDINATES
+2 2 START OF OBSERVATION
+3 3 END OF OBSERVATION
+4 4 HORIZONTAL CENTRE OF GRAVITY OF THE OBSERVATION
+5 5 VERTICAL CENTRE OF GRAVITY OF THE OBSERVATION
+6 6 TOP OF THE OBSERVATION
+7 7 BOTTOM OF THE OBSERVATION
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/25/element.table b/definitions/bufr/tables/0/wmo/25/element.table
new file mode 100644
index 0000000..3044b5d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/element.table
@@ -0,0 +1,1524 @@
+#code|abbreviation|type|name|unit|scale|reference|width|crex_unit|crex_scale|crex_width
+000001|tableAEntry|string|TABLE A: ENTRY|CCITT IA5|0|0|24|Character|0|3
+000002|tableALine1|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 1|CCITT IA5|0|0|256|Character|0|32
+000003|tableALine2|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 2|CCITT IA5|0|0|256|Character|0|32
+000004|masterTable|string|BUFR/CREX MASTER TABLE|CCITT IA5|0|0|16|Character|0|2
+000005|editionNumber|string|BUFR/CREX EDITION NUMBER|CCITT IA5|0|0|24|Character|0|3
+000006|bufrMasterTableVersionNumber|string|BUFR MASTER TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000007|crexMasterTableVersionNumber|string|CREX MASTER TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000008|bufrLocalTableVersionNumber|string|BUFR LOCAL TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000010|fDescriptorToBeAddedOrDefined|string|F DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|8|Character|0|1
+000011|xDescriptorToBeAddedOrDefined|string|X DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|16|Character|0|2
+000012|yDescriptorToBeAddedOrDefined|string|Y DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|24|Character|0|3
+000013|elementNameLine1|string|ELEMENT NAME, LINE 1|CCITT IA5|0|0|256|Character|0|32
+000014|elementNameLine2|string|ELEMENT NAME, LINE 2|CCITT IA5|0|0|256|Character|0|32
+000015|unitsName|string|UNITS NAME|CCITT IA5|0|0|192|Character|0|24
+000016|unitsScaleSign|string|UNITS SCALE SIGN|CCITT IA5|0|0|8|Character|0|1
+000017|unitsScale|string|UNITS SCALE|CCITT IA5|0|0|24|Character|0|3
+000018|unitsReferenceSign|string|UNITS REFERENCE SIGN|CCITT IA5|0|0|8|Character|0|1
+000019|unitsReferenceValue|string|UNITS REFERENCE VALUE|CCITT IA5|0|0|80|Character|0|10
+000020|elementDataWidth|string|ELEMENT DATA WIDTH|CCITT IA5|0|0|24|Character|0|3
+000024|codeFigure|string|CODE FIGURE|CCITT IA5|0|0|64|Character|0|8
+000025|codeFigureMeaning|string|CODE FIGURE MEANING|CCITT IA5|0|0|496|Character|0|62
+000026|bitNumber|string|BIT NUMBER|CCITT IA5|0|0|48|Character|0|6
+000027|bitNumberMeaning|string|BIT NUMBER MEANING|CCITT IA5|0|0|496|Character|0|62
+000030|descriptorDefiningSequence|string|DESCRIPTOR DEFINING SEQUENCE|CCITT IA5|0|0|48|Character|0|6
+001001|blockNumber|long|WMO BLOCK NUMBER|Numeric|0|0|7|Numeric|0|2
+001002|stationNumber|long|WMO STATION NUMBER|Numeric|0|0|10|Numeric|0|3
+001003|regionNumber|table|WMO REGION NUMBER/GEOGRAPHICAL AREA|CODE TABLE|0|0|3|CODE TABLE|0|1
+001004|wmoRegionSubArea|long|WMO REGION SUB-AREA|Numeric|0|0|3|Numeric|0|1
+001005|buoyOrPlatformIdentifier|long|BUOY/PLATFORM IDENTIFIER|Numeric|0|0|17|Numeric|0|5
+001006|aircraftFlightNumber|string|AIRCRAFT FLIGHT NUMBER|CCITT IA5|0|0|64|Character|0|8
+001007|satelliteIdentifier|table|SATELLITE IDENTIFIER|CODE TABLE|0|0|10|CODE TABLE|0|4
+001008|aircraftRegistrationNumberOrOtherIdentification|string|AIRCRAFT REGISTRATION NUMBER OR OTHER IDENTIFICATION|CCITT IA5|0|0|64|Character|0|8
+001009|commercialAircraftType|string|TYPE OF COMMERCIAL AIRCRAFT|CCITT IA5|0|0|64|Character|0|8
+001010|stationaryBuoyPlatformIdentifierEGCManBuoys|string|STATIONARY BUOY PLATFORM IDENTIFIER; E.G. C-MAN BUOYS|CCITT IA5|0|0|64|Character|0|8
+001011|shipOrMobileLandStationIdentifier|string|SHIP OR MOBILE LAND STATION IDENTIFIER|CCITT IA5|0|0|72|Character|0|9
+001012|directionOfMotionOfMovingObservingPlatform|long|DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM|deg|0|0|9|deg|0|3
+001013|movingObservingPlatformSpeed|long|SPEED OF MOTION OF MOVING OBSERVING PLATFORM|m/s|0|0|10|m/s|0|3
+001014|platformDriftSpeed|double|PLATFORM DRIFT SPEED (HIGH PRECISION)|m/s|2|0|10|m/s|2|4
+001015|stationOrSiteName|string|STATION OR SITE NAME|CCITT IA5|0|0|160|Character|0|20
+001018|shortStationName|string|SHORT STATION OR SITE NAME|CCITT IA5|0|0|40|Character|0|5
+001019|longStationName|string|LONG STATION OR SITE NAME|CCITT IA5|0|0|256|Character|0|32
+001020|wmoRegionSubArea|long|WMO REGION SUB-AREA|Numeric|0|0|4|Numeric|0|2
+001021|synopticFeatureIdentifier|long|SYNOPTIC FEATURE IDENTIFIER|Numeric|0|0|14|Numeric|0|4
+001022|featureName|string|NAME OF FEATURE|CCITT IA5|0|0|224|Character|0|28
+001023|observationSequenceNumber|long|OBSERVATION SEQUENCE NUMBER|Numeric|0|0|9|Numeric|0|3
+001024|windSpeedSource|table|WIND SPEED SOURCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+001025|stormIdentifier|string|STORM IDENTIFIER|CCITT IA5|0|0|24|Character|0|3
+001026|stormName|string|WMO STORM NAME|CCITT IA5|0|0|64|Character|0|8
+001027|longStormName|string|WMO LONG STORM NAME|CCITT IA5|0|0|80|Character|0|10
+001028|aerosolOpticalDepthSource|table|AEROSOL OPTICAL DEPTH (AOD) SOURCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+001029|ssiSource|table|SSI SOURCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+001030|numericalModelIdentifier|string|NUMERICAL MODEL IDENTIFIER|CCITT IA5|0|0|128|Character|0|16
+001031|centre|table|IDENTIFICATION OF ORIGINATING/GENERATING CENTRE|CODE TABLE|0|0|16|CODE TABLE|0|5
+001032|generatingApplication|table|GENERATING APPLICATION|CODE TABLE defined by originating/generating centre|0|0|8|CODE TABLE|0|3
+001033|centre|table|IDENTIFICATION OF ORIGINATING/GENERATING CENTRE|Common CODE TABLE C-1|0|0|8|Common CODE TABLE C-1|0|3
+001034|subCentre|table|IDENTIFICATION OF ORIGINATING/GENERATING SUB-CENTRE|Common CODE TABLE C-12|0|0|8|Common CODE TABLE C-12|0|3
+001035|centre|table|ORIGINATING CENTRE|Common CODE TABLE C-11|0|0|16|Common CODE TABLE C-11|0|5
+001036|agencyInChargeOfOperatingObservingPlatform|table|AGENCY IN CHARGE OF OPERATING THE OBSERVING PLATFORM|CODE TABLE|0|0|20|CODE TABLE|0|7
+001037|sigmetSequenceIdentifier|string|SIGMET SEQUENCE IDENTIFIER|CCITT IA5|0|0|24|Character|0|3
+001038|sourceOfSeaIceFraction|table|SOURCE OF SEA ICE FRACTION|CODE TABLE|0|0|5|CODE TABLE|0|2
+001039|graphicalAreaForecastSequenceIdentifier|string|GRAPHICAL AREA FORECAST (GFA) SEQUENCE IDENTIFIER|CCITT IA5|0|0|40|Character|0|5
+001040|processingCentreIdCode|string|PROCESSING CENTRE ID CODE|CCITT IA5|0|0|48|Character|0|6
+001041|absolutePlatformVelocityFirstComponent|double|ABSOLUTE PLATFORM VELOCITY - FIRST COMPONENT|m/s|5|-1073741824|31|m/s|5|10
+001042|absolutePlatformVelocitySecondComponent|double|ABSOLUTE PLATFORM VELOCITY - SECOND COMPONENT|m/s|5|-1073741824|31|m/s|5|10
+001043|absolutePlatformVelocityThirdComponent|double|ABSOLUTE PLATFORM VELOCITY - THIRD COMPONENT|m/s|5|-1073741824|31|m/s|5|10
+001050|platformTransmitterIdNumber|long|PLATFORM TRANSMITTER ID NUMBER|Numeric|0|0|17|Numeric|0|6
+001051|platformTransmitterIdNumber|string|PLATFORM TRANSMITTER ID NUMBER|CCITT IA5|0|0|96|Character|0|12
+001052|platformTransmitterId|table|PLATFORM TRANSMITTER ID|CODE TABLE|0|0|3|CODE TABLE|0|1
+001053|tsunameterReportSequenceNumber|long|TSUNAMETER REPORT SEQUENCE NUMBER TRIGGERED BY A TSUNAMI EVENT|Numeric|0|0|7|Numeric|0|2
+001060|aircraftReportingPointBeaconIdentifier|string|AIRCRAFT REPORTING POINT (BEACON IDENTIFIER)|CCITT IA5|0|0|64|Character|0|8
+001062|shortIcaoLocationIndicator|string|SHORT ICAO LOCATION INDICATOR|CCITT IA5|0|0|32|Character|0|4
+001063|icaoLocationIndicator|string|ICAO LOCATION INDICATOR|CCITT IA5|0|0|64|Character|0|8
+001064|runwayDesignator|string|RUNWAY DESIGNATOR|CCITT IA5|0|0|32|Character|0|4
+001065|icaoRegionIdentifier|string|ICAO REGION IDENTIFIER|CCITT IA5|0|0|256|Character|0|32
+001075|tideStationIdentification|string|TIDE STATION IDENTIFICATION|CCITT IA5|0|0|40|Character|0|5
+001079|uniqueIdentifierForProfile|string|UNIQUE IDENTIFIER FOR THE PROFILE|CCITT IA5|0|0|64|Character|0|8
+001080|shipLineNumberAccordingToSoop|string|SHIP LINE NUMBER ACCORDING TO SOOP|CCITT IA5|0|0|32|Character|0|4
+001081|radiosondeSerialNumber|string|RADIOSONDE SERIAL NUMBER|CCITT IA5|0|0|160|Character|0|20
+001082|radiosondeAscensionNumber|long|RADIOSONDE ASCENSION NUMBER|Numeric|0|0|14|Numeric|0|4
+001083|radiosondeReleaseNumber|long|RADIOSONDE RELEASE NUMBER|Numeric|0|0|3|Numeric|0|1
+001085|observingPlatformManufacturerModel|string|OBSERVING PLATFORM MANUFACTURER'S MODEL|CCITT IA5|0|0|160|Character|0|20
+001086|observingPlatformManufacturerSerialNumber|string|OBSERVING PLATFORM MANUFACTURER'S SERIAL NUMBER|CCITT IA5|0|0|256|Character|0|32
+001087|marineObservingPlatformIdentifier|long|WMO MARINE OBSERVING PLATFORM EXTENDED IDENTIFIER|Numeric|0|0|23|Numeric|0|7
+001090|techniqueForMakingUpInitialPerturbations|table|TECHNIQUE FOR MAKING UP INITIAL PERTURBATIONS|CODE TABLE|0|0|8|CODE TABLE|0|3
+001091|ensembleMemberNumber|long|ENSEMBLE MEMBER NUMBER|Numeric|0|0|10|Numeric|0|4
+001092|ensembleForecastType|table|TYPE OF ENSEMBLE FORECAST|CODE TABLE|0|0|8|CODE TABLE|0|3
+001093|balloonLotNumber|string|BALLOON LOT NUMBER|CCITT IA5|0|0|96|Character|0|12
+001094|wbanNumber|long|WBAN NUMBER|Numeric|0|0|17|Numeric|0|5
+001095|observerIdentification|string|OBSERVER IDENTIFICATION|CCITT IA5|0|0|32|Character|0|4
+001096|stationAcquisition|string|STATION ACQUISITION|CCITT IA5|0|0|160|Character|0|20
+001099|uniqueProductDefinition|string|UNIQUE PRODUCT DEFINITION|CCITT IA5|0|0|248|Character|0|31
+001101|stateIdentifier|table|STATE IDENTIFIER|CODE TABLE|0|0|10|CODE TABLE|0|3
+001102|stationNumber|long|NATIONAL STATION NUMBER|Numeric|0|0|30|Numeric|0|9
+001103|imoNumber|long|IMO NUMBER. UNIQUE LLOYD'S REGISTER|Numeric|0|0|24|Numeric|0|7
+001110|aircraftTailNumber|string|AIRCRAFT TAIL NUMBER|CCITT IA5|0|0|48|Character|0|6
+001111|originationAirport|string|ORIGINATION AIRPORT|CCITT IA5|0|0|24|Character|0|3
+001112|destinationAirport|string|DESTINATION AIRPORT|CCITT IA5|0|0|24|Character|0|3
+001113|templateVersionNumberDefinedByOriginatingCentre|long|TEMPLATE VERSION NUMBER DEFINED BY ORIGINATING CENTRE|Numeric|1|0|9|Numeric|1|3
+001115|identifierOfTheCruiseOrMission|string|IDENTIFIER OF THE CRUISE OR MISSION UNDER WHICH THE DATA WERE COLLECTED|CCITT IA5|0|0|160|Character|0|20
+001124|gridPointIdentifier|long|GRID POINT IDENTIFIER|Numeric|0|0|24|Numeric|0|8
+001144|snapshotIdentifier|long|SNAPSHOT IDENTIFIER|Numeric|0|0|31|Numeric|0|10
+002001|stationType|table|TYPE OF STATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002002|instrumentationForWindMeasurement|flag|TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+002003|measuringEquipmentType|table|TYPE OF MEASURING EQUIPMENT USED|CODE TABLE|0|0|4|CODE TABLE|0|2
+002004|typeOfInstrumentationForEvaporationMeasurement|table|TYPE OF INSTRUMENTATION FOR EVAPORATION MEASUREMENT OR TYPE OF CROP FOR WHICH EVAPOTRANSPIRATION IS REPORTED|CODE TABLE|0|0|4|CODE TABLE|0|2
+002005|temperatureObservationPrecision|double|PRECISION OF TEMPERATURE OBSERVATION|K|2|0|7|K|2|3
+002007|sensorForWaterLevelMeasuringInstrumentType|table|TYPE OF SENSOR FOR WATER LEVEL MEASURING INSTRUMENT|CODE TABLE|0|0|6|CODE TABLE|0|2
+002011|radiosondeType|table|RADIOSONDE TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+002012|radiosondeComputationalMethod|table|RADIOSONDE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002013|solarAndInfraredRadiationCorrection|table|SOLAR AND INFRARED RADIATION CORRECTION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002014|trackingTechniqueOrStatusOfSystem|table|TRACKING TECHNIQUE/STATUS OF SYSTEM USED|CODE TABLE|0|0|7|CODE TABLE|0|3
+002015|radiosondeCompleteness|table|RADIOSONDE COMPLETENESS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002016|radiosondeConfiguration|flag|RADIOSONDE CONFIGURATION|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+002017|correctionAlgorithmsForHumidityMeasurements|table|CORRECTION ALGORITHMS FOR HUMIDITY MEASUREMENTS|CODE TABLE|0|0|5|CODE TABLE|0|2
+002019|satelliteInstruments|table|SATELLITE INSTRUMENTS|CODE TABLE|0|0|11|CODE TABLE|0|4
+002020|satelliteClassification|table|SATELLITE CLASSIFICATION|CODE TABLE|0|0|9|CODE TABLE|0|3
+002021|satelliteInstrumentDataUsedInProcessing|flag|SATELLITE INSTRUMENT DATA USED IN PROCESSING|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+002022|satelliteDataProcessingTechnique|flag|SATELLITE DATA-PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002023|satelliteDerivedWindComputationMethod|table|SATELLITE-DERIVED WIND COMPUTATION METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002024|meanHumidityComputationalMethod|table|INTEGRATED MEAN HUMIDITY COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002025|satelliteChannelsUsedInComputation|flag|SATELLITE CHANNEL(S) USED IN COMPUTATION|FLAG TABLE|0|0|25|FLAG TABLE|0|9
+002026|crossTrackResolution|double|CROSS-TRACK RESOLUTION|m|2|0|12|m|2|4
+002027|alongTrackResolution|double|ALONG-TRACK RESOLUTION|m|2|0|12|m|2|4
+002028|segmentSizeAtNadirInXDirection|long|SEGMENT SIZE AT NADIR IN X-DIRECTION|m|0|0|18|m|0|6
+002029|segmentSizeAtNadirInYDirection|long|SEGMENT SIZE AT NADIR IN Y-DIRECTION|m|0|0|18|m|0|6
+002030|methodOfCurrentMeasurement|table|METHOD OF CURRENT MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002031|durationAndTimeOfCurrentMeasurement|table|DURATION AND TIME OF CURRENT MEASUREMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+002032|indicatorForDigitization|table|INDICATOR FOR DIGITIZATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002033|methodOfSalinityOrDepthMeasurement|table|METHOD OF SALINITY/DEPTH MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002034|drogueType|table|DROGUE TYPE|CODE TABLE|0|0|5|CODE TABLE|0|2
+002035|cableLength|long|CABLE LENGTH|m|0|0|9|m|0|3
+002036|buoyType|table|BUOY TYPE|CODE TABLE|0|0|2|CODE TABLE|0|1
+002037|methodOfTidalObservation|table|METHOD OF TIDAL OBSERVATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+002038|methodOfWaterTemperatureAndOrOrSalinityMeasurement|table|METHOD OF WATER TEMPERATURE AND/OR SALINITY MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002039|methodOfWetBulbTemperatureMeasurement|table|METHOD OF WET-BULB TEMPERATURE MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002040|methodOfRemovingVelocityAndMotionOfPlatformFromCurrent|table|METHOD OF REMOVING VELOCITY AND MOTION OF PLATFORM FROM CURRENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002041|methodForEstimatingReportsRelatedToSynopticFeatures|table|METHOD FOR ESTIMATING REPORTS RELATED TO SYNOPTIC FEATURES|CODE TABLE|0|0|6|CODE TABLE|0|2
+002042|indicatorForSeaSurfaceCurrentSpeed|table|INDICATOR FOR SEA-SURFACE CURRENT SPEED|CODE TABLE|0|0|2|CODE TABLE|0|1
+002044|indicatorForMethodOfCalculatingSpectralWaveData|table|INDICATOR FOR METHOD OF CALCULATING SPECTRAL WAVE DATA|CODE TABLE|0|0|4|CODE TABLE|0|2
+002045|platformType|table|INDICATOR FOR TYPE OF PLATFORM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002046|waveMeasurementInstrumentation|table|WAVE MEASUREMENT INSTRUMENTATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002047|deepOceanTsunameterType|table|DEEP-OCEAN TSUNAMETER TYPE|CODE TABLE|0|0|7|CODE TABLE|0|2
+002048|satelliteSensorIndicator|table|SATELLITE SENSOR INDICATOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002049|geostationarySatelliteDataProcessingTechnique|flag|GEOSTATIONARY SATELLITE DATA-PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002050|geostationarySounderSatelliteChannels|flag|GEOSTATIONARY SOUNDER SATELLITE CHANNELS USED|FLAG TABLE|0|0|20|FLAG TABLE|0|7
+002051|indicatorToSpecifyObservingMethodForExtremeTemperatures|table|INDICATOR TO SPECIFY OBSERVING METHOD FOR EXTREME TEMPERATURES|CODE TABLE|0|0|4|CODE TABLE|0|2
+002052|geostationaryImagerSatelliteChannels|flag|GEOSTATIONARY IMAGER SATELLITE CHANNELS USED|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+002053|goesBrightnessTemperatureCharacteristics|table|GOES-I/M BRIGHTNESS TEMPERATURE CHARACTERISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002054|goesSoundingsParameter|table|GOES-I/M SOUNDINGS PARAMETER CHARACTERISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002055|geostationarySoundingsStatisticalParameters|table|GEOSTATIONARY SOUNDINGS STATISTICAL PARAMETERS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002056|geostationarySoundingsAccuracyStatistics|table|GEOSTATIONARY SOUNDINGS ACCURACY STATISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002057|originOfFirstGuessInformationForGoesIOrMSoundings|table|ORIGIN OF FIRST-GUESS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002058|validTimesOfFirstGuessInformationForGoesIOrMSoundings|table|VALID TIMES OF FIRST-GUESS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002059|originOfAnalysisInformationForGoesIOrMSoundings|table|ORIGIN OF ANALYSIS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002060|originOfSurfaceInformationForGoesIOrMSoundings|table|ORIGIN OF SURFACE INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002061|aircraftNavigationalSystem|table|AIRCRAFT NAVIGATIONAL SYSTEM|CODE TABLE|0|0|3|CODE TABLE|0|1
+002062|aircraftDataRelaySystemType|table|TYPE OF AIRCRAFT DATA RELAY SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002063|aircraftRollAngle|double|AIRCRAFT ROLL ANGLE|deg|2|-18000|16|deg|2|5
+002064|aircraftRollAngleQuality|table|AIRCRAFT ROLL ANGLE QUALITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+002065|acarsGroundReceivingStation|string|ACARS GROUND-RECEIVING STATION|CCITT IA5|0|0|40|Character|0|5
+002066|radiosondeGroundReceivingSystem|table|RADIOSONDE GROUND RECEIVING SYSTEM|CODE TABLE|0|0|6|CODE TABLE|0|2
+002067|radiosondeOperatingFrequency|long|RADIOSONDE OPERATING FREQUENCY|Hz|-5|0|15|Hz|-5|5
+002070|originalSpecificationOfLatitudeOrLongitude|table|ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002071|spectrographicWavelength|double|SPECTROGRAPHIC WAVELENGTH|m|13|0|30|m|13|10
+002072|spectrographicWidth|double|SPECTROGRAPHIC WIDTH|m|13|0|30|m|13|10
+002080|balloonManufacturer|table|BALLOON MANUFACTURER|CODE TABLE|0|0|6|CODE TABLE|0|2
+002081|balloonType|table|TYPE OF BALLOON|CODE TABLE|0|0|5|CODE TABLE|0|2
+002082|weightOfBalloon|double|WEIGHT OF BALLOON|kg|3|0|12|kg|3|4
+002083|balloonShelterType|table|TYPE OF BALLOON SHELTER|CODE TABLE|0|0|4|CODE TABLE|0|2
+002084|typeOfGasUsedInBalloon|table|TYPE OF GAS USED IN BALLOON|CODE TABLE|0|0|4|CODE TABLE|0|2
+002085|amountOfGasUsedInBalloon|double|AMOUNT OF GAS USED IN BALLOON|kg|3|0|13|kg|3|4
+002086|balloonFlightTrainLength|double|BALLOON FLIGHT TRAIN LENGTH|m|1|0|10|m|1|4
+002091|entrySensor4Or20Ma|double|ENTRY SENSOR 4/20 MA|A|4|0|10|A|4|3
+002095|pressureSensorType|table|TYPE OF PRESSURE SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002096|temperatureSensorType|table|TYPE OF TEMPERATURE SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002097|humiditySensorType|table|TYPE OF HUMIDITY SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002099|polarization|table|POLARIZATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+002100|radarConstant|double|RADAR CONSTANT|dB|1|0|12|dB|1|4
+002101|antennaType|table|TYPE OF ANTENNA|CODE TABLE|0|0|4|CODE TABLE|0|2
+002102|antennaHeightAboveTowerBase|long|ANTENNA HEIGHT ABOVE TOWER BASE|m|0|0|8|m|0|3
+002103|radome|flag|RADOME|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+002104|antennaPolarization|table|ANTENNA POLARIZATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002105|maximumAntennaGain|long|MAXIMUM ANTENNA GAIN|dB|0|0|6|dB|0|2
+002106|3DbBeamwidth|double|3-DB BEAMWIDTH|deg|1|0|6|deg|1|2
+002107|sidelobeSuppression|long|SIDELOBE SUPPRESSION|dB|0|0|6|dB|0|2
+002108|crosspolDiscriminationOnAxis|long|CROSSPOL DISCRIMINATION (ON AXIS)|dB|0|0|6|dB|0|2
+002109|antennaSpeedAzimuth|double|ANTENNA SPEED (AZIMUTH)|deg/s|2|0|12|deg/s|2|4
+002110|antennaSpeedElevation|double|ANTENNA SPEED (ELEVATION)|deg/s|2|0|12|deg/s|2|4
+002111|radarIncidenceAngle|double|RADAR INCIDENCE ANGLE|deg|1|0|10|deg|1|4
+002112|radarLookAngle|double|RADAR LOOK ANGLE|deg|1|0|12|deg|1|4
+002113|numberOfAzimuthLooks|long|NUMBER OF AZIMUTH LOOKS|Numeric|0|0|4|Numeric|0|2
+002114|antennaEffectiveSurfaceArea|long|ANTENNA EFFECTIVE SURFACE AREA|m2|0|0|15|m2|0|5
+002115|surfaceObservingEquipmentType|table|TYPE OF SURFACE OBSERVING EQUIPMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+002116|percentageOf320MhzBandProcessed|long|PERCENTAGE OF 320 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002117|percentageOf80MhzBandProcessed|long|PERCENTAGE OF 80 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002118|percentageOf20MhzBandProcessed|long|PERCENTAGE OF 20 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002119|ra2InstrumentOperations|table|RA-2 INSTRUMENT OPERATIONS|CODE TABLE|0|0|3|CODE TABLE|0|1
+002120|oceanWaveFrequency|double|OCEAN WAVE FREQUENCY|Hz|3|0|10|Hz|3|4
+002121|meanFrequency|long|MEAN FREQUENCY|Hz|-8|0|7|Hz|-8|3
+002122|frequencyAgilityRange|long|FREQUENCY AGILITY RANGE|Hz|-6|-128|8|Hz|-6|3
+002123|peakPower|long|PEAK POWER|W|-4|0|7|W|-4|3
+002124|averagePower|long|AVERAGE POWER|W|-1|0|7|W|-1|3
+002125|pulseRepetitionFrequency|long|PULSE REPETITION FREQUENCY|Hz|-1|0|8|Hz|-1|3
+002126|pulseWidth|double|PULSE WIDTH|s|7|0|6|s|7|2
+002127|receiverIntermediateFrequency|long|RECEIVER INTERMEDIATE FREQUENCY|Hz|-6|0|7|Hz|-6|3
+002128|intermediateFrequencyBandwidth|long|INTERMEDIATE FREQUENCY BANDWIDTH|Hz|-5|0|6|Hz|-5|2
+002129|minimumDetectableSignal|long|MINIMUM DETECTABLE SIGNAL|dB|0|-150|5|dB|0|3
+002130|dynamicRange|long|DYNAMIC RANGE|dB|0|0|7|dB|0|3
+002131|sensitivityTimeControl|flag|SENSITIVITY TIME CONTROL (STC)|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+002132|azimuthPointingAccuracy|double|AZIMUTH POINTING ACCURACY|deg|2|0|6|deg|2|2
+002133|elevationPointingAccuracy|double|ELEVATION POINTING ACCURACY|deg|2|0|6|deg|2|2
+002134|antennaBeamAzimuth|double|ANTENNA BEAM AZIMUTH|deg|2|0|16|deg|2|5
+002135|antennaElevation|double|ANTENNA ELEVATION|deg|2|-9000|15|deg|2|5
+002136|rangeProcessedByRangeAttenuationCorrection|long|RANGE PROCESSED BY RANGE ATTENUATION CORRECTION|m|-3|0|16|m|-3|5
+002137|radarDualPrfRatio|table|RADAR DUAL PRF RATIO|CODE TABLE|0|0|4|CODE TABLE|0|2
+002138|antennaRotationDirection|table|ANTENNA ROTATION DIRECTION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002139|siralInstrumentConfiguration|table|SIRAL INSTRUMENT CONFIGURATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002140|satelliteRadarBeamAzimuthAngle|long|SATELLITE RADAR BEAM AZIMUTH ANGLE|deg|0|0|9|deg|0|3
+002141|measurementType|string|MEASUREMENT TYPE|CCITT IA5|0|0|24|Character|0|3
+002142|ozoneInstrument|string|OZONE INSTRUMENT SERIAL NUMBER/IDENTIFICATION|CCITT IA5|0|0|32|Character|0|4
+002143|ozoneInstrumentType|table|OZONE INSTRUMENT TYPE|CODE TABLE|0|0|7|CODE TABLE|0|3
+002144|lightSourceTypeForBrewerSpectrophotometer|table|LIGHT SOURCE TYPE FOR BREWER SPECTROPHOTOMETER|CODE TABLE|0|0|4|CODE TABLE|0|2
+002145|wavelengthSettingForDobsonInstruments|table|WAVELENGTH SETTING FOR DOBSON INSTRUMENTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002146|sourceConditionsForDobsonInstruments|table|SOURCE CONDITIONS FOR DOBSON INSTRUMENTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002147|methodOfTransmissionToCollectionCentre|table|METHOD OF TRANSMISSION TO COLLECTION CENTRE|CODE TABLE|0|0|6|CODE TABLE|0|2
+002148|dataCollectionLocationSystem|table|DATA COLLECTION AND/OR LOCATION SYSTEM|CODE TABLE|0|0|5|CODE TABLE|0|2
+002149|dataBuoyType|table|TYPE OF DATA BUOY|CODE TABLE|0|0|6|CODE TABLE|0|2
+002150|tovsOrAtovsOrAvhrrInstrumentationChannelNumber|table|TOVS/ATOVS/AVHRR INSTRUMENTATION CHANNEL NUMBER|CODE TABLE|0|0|6|CODE TABLE|0|2
+002151|radiometerIdentifier|table|RADIOMETER IDENTIFIER|CODE TABLE|0|0|11|CODE TABLE|0|4
+002152|satelliteInstrumentUsedInDataProcessing|flag|SATELLITE INSTRUMENT USED IN DATA PROCESSING|FLAG TABLE|0|0|31|FLAG TABLE|0|10
+002153|satelliteChannelCentreFrequency|long|SATELLITE CHANNEL CENTRE FREQUENCY|Hz|-8|0|26|Hz|-8|8
+002154|satelliteChannelBandWidth|long|SATELLITE CHANNEL BAND WIDTH|Hz|-8|0|26|Hz|-8|8
+002155|satelliteChannelWavelength|double|SATELLITE CHANNEL WAVELENGTH|m|9|0|16|m|9|5
+002156|percentageOfValidKuOceanRetrackerMeasurements|long|PERCENTAGE OF VALID KU OCEAN RETRACKER MEASUREMENTS|%|0|0|7|%|0|3
+002157|percentageOfValidSOceanRetrackerMeasurements|long|PERCENTAGE OF VALID S OCEAN RETRACKER MEASUREMENTS|%|0|0|7|%|0|3
+002158|ra2Instrument|flag|RA-2 INSTRUMENT|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+002159|mwrInstrument|flag|MWR INSTRUMENT|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002160|radarWaveLength|table|WAVE LENGTH OF THE RADAR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002163|heightAssignmentMethod|table|HEIGHT ASSIGNMENT METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002164|tracerCorrelationMethod|table|TRACER CORRELATION METHOD|CODE TABLE|0|0|3|CODE TABLE|0|1
+002165|radianceTypeFlags|flag|RADIANCE TYPE FLAGS|FLAG TABLE|0|0|15|FLAG TABLE|0|5
+002166|radianceType|table|RADIANCE TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002167|radianceComputationalMethod|table|RADIANCE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002168|hydrostaticPressureOfLowerEndOfCableThermistorString|long|HYDROSTATIC PRESSURE OF LOWER END OF CABLE (THERMISTOR STRING)|Pa|-3|0|16|kPa|0|5
+002169|anemometerType|table|ANEMOMETER TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002170|aircraftHumiditySensors|table|AIRCRAFT HUMIDITY SENSORS|CODE TABLE|0|0|6|CODE TABLE|0|2
+002171|instrumentSerialNumberForWaterTemperatureProfile|string|INSTRUMENT SERIAL NUMBER FOR WATER TEMPERATURE PROFILE MEASUREMENT|CCITT IA5|0|0|64|Character|0|8
+002172|productTypeForRetrievedAtmosphericGases|table|PRODUCT TYPE FOR RETRIEVED ATMOSPHERIC GASES|CODE TABLE|0|0|8|CODE TABLE|0|3
+002173|squareOfOffNadirAngle|double|SQUARE OF THE OFF-NADIR ANGLE|deg2|4|0|10|deg2|4|4
+002174|meanAcrossTrackPixelNumber|long|MEAN ACROSS TRACK PIXEL NUMBER|Numeric|0|0|9|Numeric|0|3
+002175|methodOfPrecipitationMeasurement|table|METHOD OF PRECIPITATION MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002176|methodOfStateOfGroundMeasurement|table|METHOD OF STATE OF GROUND MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002177|methodOfSnowDepthMeasurement|table|METHOD OF SNOW DEPTH MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002178|methodOfLiquidContentMeasurementOfPrecipitation|table|METHOD OF LIQUID CONTENT MEASUREMENT OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002179|skyConditionAlgorithmType|table|TYPE OF SKY CONDITION ALGORITHM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002180|mainPresentWeatherDetectingSystem|table|MAIN PRESENT WEATHER DETECTING SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002181|supplementaryPresentWeatherSensor|flag|SUPPLEMENTARY PRESENT WEATHER SENSOR|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+002182|visibilityMeasurementSystem|table|VISIBILITY MEASUREMENT SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002183|cloudDetectionSystem|table|CLOUD DETECTION SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002184|lightningDetectionSensorType|table|TYPE OF LIGHTNING DETECTION SENSOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002185|methodOfEvaporationMeasurement|table|METHOD OF EVAPORATION MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002186|capabilityToDetectPrecipitationPhenomena|flag|CAPABILITY TO DETECT PRECIPITATION PHENOMENA|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+002187|capabilityToDetectOtherWeatherPhenomena|flag|CAPABILITY TO DETECT OTHER WEATHER PHENOMENA|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+002188|capabilityToDetectObscuration|flag|CAPABILITY TO DETECT OBSCURATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+002189|capabilityToDiscriminateLightningStrikes|flag|CAPABILITY TO DISCRIMINATE LIGHTNING STRIKES|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+002190|lagrangianDrifterSubmergenceTimeSubmerged|long|LAGRANGIAN DRIFTER SUBMERGENCE (% TIME SUBMERGED)|%|0|0|7|%|0|3
+002191|geopotentialHeightCalculation|table|GEOPOTENTIAL HEIGHT CALCULATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+003010|methodOfSeaOrWaterCurrentMeasurement|table|METHOD OF SEA/WATER CURRENT MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+003011|methodOfDepthCalculation|table|METHOD OF DEPTH CALCULATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+003012|instrumentTypeOrSensorForDissolvedOxygenMeasurement|table|INSTRUMENT TYPE/SENSOR FOR DISSOLVED OXYGEN MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+004001|year|long|YEAR|a|0|0|12|a|0|4
+004002|month|long|MONTH|mon|0|0|4|mon|0|2
+004003|day|long|DAY|d|0|0|6|d|0|2
+004004|hour|long|HOUR|h|0|0|5|h|0|2
+004005|minute|long|MINUTE|min|0|0|6|min|0|2
+004006|second|long|SECOND|s|0|0|6|s|0|2
+004007|secondsWithinAMinuteMicrosecond|double|SECONDS WITHIN A MINUTE (MICROSECOND ACCURACY)|s|6|0|26|s|6|8
+004011|timeIncrement|long|TIME INCREMENT|a|0|-1024|11|a|0|4
+004012|timeIncrement|long|TIME INCREMENT|mon|0|-1024|11|mon|0|4
+004013|timeIncrement|long|TIME INCREMENT|d|0|-1024|11|d|0|4
+004014|timeIncrement|long|TIME INCREMENT|h|0|-1024|11|h|0|4
+004015|timeIncrement|long|TIME INCREMENT|min|0|-2048|12|min|0|4
+004016|timeIncrement|long|TIME INCREMENT|s|0|-4096|13|s|0|4
+004017|referenceTimePeriodForAccumulatedOrExtremeData|long|REFERENCE TIME PERIOD FOR ACCUMULATED OR EXTREME DATA|min|0|-1440|12|min|0|4
+004021|timePeriod|long|TIME PERIOD OR DISPLACEMENT|a|0|-1024|11|a|0|4
+004022|timePeriod|long|TIME PERIOD OR DISPLACEMENT|mon|0|-1024|11|mon|0|4
+004023|timePeriod|long|TIME PERIOD OR DISPLACEMENT|d|0|-1024|11|d|0|4
+004024|timePeriod|long|TIME PERIOD OR DISPLACEMENT|h|0|-2048|12|h|0|4
+004025|timePeriod|long|TIME PERIOD OR DISPLACEMENT|min|0|-2048|12|min|0|4
+004026|timePeriod|long|TIME PERIOD OR DISPLACEMENT|s|0|-4096|13|s|0|4
+004031|durationOfTimeRelatingToFollowingValue|long|DURATION OF TIME RELATING TO FOLLOWING VALUE|h|0|0|8|h|0|3
+004032|durationOfTimeRelatingToFollowingValue|long|DURATION OF TIME RELATING TO FOLLOWING VALUE|min|0|0|6|min|0|2
+004041|timeDifferenceUtcLmt|long|TIME DIFFERENCE, UTC - LMT|min|0|-1440|12|min|0|4
+004043|dayOfYear|long|DAY OF THE YEAR|d|0|0|9|d|0|3
+004051|principalTimeOfDailyReadingOfMaximumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MAXIMUM TEMPERATURE|h|0|0|5|h|0|2
+004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2
+004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2
+004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
+004066|timeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
+004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
+004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
+004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
+004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2
+004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
+005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005012|latitudeIncrement|double|LATITUDE INCREMENT (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005015|latitudeDisplacement|double|LATITUDE DISPLACEMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005016|latitudeDisplacement|double|LATITUDE DISPLACEMENT (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005021|bearingOrAzimuth|double|BEARING OR AZIMUTH|deg|2|0|16|deg|2|5
+005022|solarAzimuth|double|SOLAR AZIMUTH|deg|2|0|16|deg|2|5
+005023|sunToSatelliteAzimuthDifference|double|SUN TO SATELLITE AZIMUTH DIFFERENCE|deg|1|-1800|12|deg|1|4
+005030|directionSpectral|long|DIRECTION (SPECTRAL)|deg|0|0|12|deg|0|4
+005031|rowNumber|long|ROW NUMBER|Numeric|0|0|12|Numeric|0|4
+005033|pixelSizeOnHorizontal1|long|PIXEL SIZE ON HORIZONTAL - 1|m|-1|0|16|m|-1|5
+005034|alongTrackRowNumber|long|ALONG TRACK ROW NUMBER|Numeric|0|0|11|Numeric|0|4
+005035|xDimensionMaximumSize|long|MAXIMUM SIZE OF X-DIMENSION|Numeric|0|0|12|Numeric|0|4
+005036|shipTransectNumberAccordingToSoop|long|SHIP TRANSECT NUMBER ACCORDING TO SOOP|Numeric|0|0|7|Numeric|0|2
+005040|orbitNumber|long|ORBIT NUMBER|Numeric|0|0|24|Numeric|0|8
+005041|scanLineNumber|long|SCAN LINE NUMBER|Numeric|0|0|8|Numeric|0|3
+005042|channelNumber|long|CHANNEL NUMBER|Numeric|0|0|6|Numeric|0|2
+005043|fieldOfViewNumber|long|FIELD OF VIEW NUMBER|Numeric|0|0|8|Numeric|0|3
+005044|satelliteCycleNumber|long|SATELLITE CYCLE NUMBER|Numeric|0|0|11|Numeric|0|4
+005045|fieldOfRegardNumber|long|FIELD OF REGARD NUMBER|Numeric|0|0|8|Numeric|0|3
+005052|channelNumberIncrement|long|CHANNEL NUMBER INCREMENT|Numeric|0|0|5|Numeric|0|2
+005053|fieldOfViewNumberIncrement|long|FIELD OF VIEW NUMBER INCREMENT|Numeric|0|0|5|Numeric|0|2
+005060|yAngularPositionFromCentreOfGravity|double|Y ANGULAR POSITION FROM CENTRE OF GRAVITY|deg|6|-8000000|24|deg|6|8
+005061|zAngularPositionFromCentreOfGravity|double|Z ANGULAR POSITION FROM CENTRE OF GRAVITY|deg|6|-8000000|24|deg|6|8
+005063|spacecraftRoll|double|SPACECRAFT ROLL|deg|2|0|16|deg|2|5
+005064|spacecraftPitch|double|SPACECRAFT PITCH|deg|2|0|16|deg|2|5
+005066|spacecraftYaw|double|SPACECRAFT YAW|deg|2|0|16|deg|2|5
+005067|numberOfScanLines|long|NUMBER OF SCAN LINES|Numeric|0|0|8|Numeric|0|3
+006001|longitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006002|longitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006011|longitudeIncrement|double|LONGITUDE INCREMENT (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006012|longitudeIncrement|double|LONGITUDE INCREMENT (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006015|longitudeDisplacement|double|LONGITUDE DISPLACEMENT (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006016|longitudeDisplacement|double|LONGITUDE DISPLACEMENT (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006021|distance|long|DISTANCE|m|-1|0|13|m|-1|4
+006029|waveNumber|double|WAVE NUMBER|/m|1|0|22|/m|1|7
+006030|waveNumberSpectral|double|WAVE NUMBER (SPECTRAL)|rad/m|5|0|13|rad/m|5|4
+006031|columnNumber|long|COLUMN NUMBER|Numeric|0|0|12|Numeric|0|4
+006033|pixelSizeOnHorizontal2|long|PIXEL SIZE ON HORIZONTAL - 2|m|-1|0|16|m|-1|5
+006034|crossTrackCellNumber|long|CROSS-TRACK CELL NUMBER|Numeric|0|0|7|Numeric|0|3
+006035|yDimensionMaximumSize|long|MAXIMUM SIZE OF Y-DIMENSION|Numeric|0|0|12|Numeric|0|4
+006040|radiusOfConfidence|long|RADIUS OF CONFIDENCE|m|0|0|13|m|0|4
+007001|heightOfStation|long|HEIGHT OF STATION|m|0|-400|15|m|0|5
+007002|height|long|HEIGHT OR ALTITUDE|m|-1|-40|16|m|-1|5
+007003|geopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|m2 s-2|-1|6
+007004|pressure|long|PRESSURE|Pa|-1|0|14|Pa|-1|5
+007005|heightIncrement|long|HEIGHT INCREMENT|m|0|-400|12|m|0|4
+007006|heightAboveStation|long|HEIGHT ABOVE STATION|m|0|0|15|m|0|5
+007007|height|long|HEIGHT|m|0|-1000|17|m|0|6
+007008|geopotential|long|GEOPOTENTIAL|m2 s-2|0|-10000|20|m2 s-2|0|7
+007009|geopotentialHeight|long|GEOPOTENTIAL HEIGHT|gpm|0|-1000|17|gpm|0|5
+007010|flightLevel|long|FLIGHT LEVEL|m|0|-1024|16|ft|-1|5
+007012|gridPointAltitude|double|GRID POINT ALTITUDE|m|2|-50000|20|m|2|7
+007021|elevation|double|ELEVATION|deg|2|-9000|15|deg|2|5
+007022|solarElevation|double|SOLAR ELEVATION|deg|2|-9000|15|deg|2|5
+007024|satelliteZenithAngle|double|SATELLITE ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+007025|solarZenithAngle|double|SOLAR ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+007026|satelliteZenithAngle|double|SATELLITE ZENITH ANGLE|deg|4|-900000|21|deg|4|7
+007030|heightOfStationGroundAboveMeanSeaLevel|double|HEIGHT OF STATION GROUND ABOVE MEAN SEA LEVEL|m|1|-4000|17|m|1|5
+007031|heightOfBarometerAboveMeanSeaLevel|double|HEIGHT OF BAROMETER ABOVE MEAN SEA LEVEL|m|1|-4000|17|m|1|5
+007032|heightOfSensorAboveLocalGroundOrDeckOfMarinePlatform|double|HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM)|m|2|0|16|m|2|5
+007033|heightOfSensorAboveWaterSurface|double|HEIGHT OF SENSOR ABOVE WATER SURFACE|m|1|0|12|m|1|4
+007035|zDimensionMaximumSize|long|MAXIMUM SIZE OF Z-DIMENSION|Numeric|0|0|12|Numeric|0|4
+007036|levelIndexOfZ|long|LEVEL INDEX OF Z|Numeric|0|0|12|Numeric|0|4
+007040|impactParameter|double|IMPACT PARAMETER|m|1|62000000|22|m|1|8
+007061|depthBelowLandSurface|double|DEPTH BELOW LAND SURFACE|m|2|0|14|m|2|5
+007062|depthBelowWaterSurface|double|DEPTH BELOW SEA/WATER SURFACE|m|1|0|17|m|1|6
+007063|depthBelowWaterSurface|double|DEPTH BELOW SEA/WATER SURFACE (CM)|m|2|0|20|m|2|7
+007064|representativeHeightOfSensorAboveStation|long|REPRESENTATIVE HEIGHT OF SENSOR ABOVE STATION|m|0|0|4|m|0|2
+007065|waterPressure|long|WATER PRESSURE|Pa|-3|0|17|Pa|-3|6
+007070|drogueDepth|long|DROGUE DEPTH|m|0|0|10|m|0|4
+008001|verticalSoundingSignificance|flag|VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|7|FLAG TABLE|0|3
+008002|verticalSignificanceSurfaceObservations|table|VERTICAL SIGNIFICANCE (SURFACE OBSERVATIONS)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008003|verticalSignificanceSatelliteObservations|table|VERTICAL SIGNIFICANCE (SATELLITE OBSERVATIONS)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008004|phaseOfAircraftFlight|table|PHASE OF AIRCRAFT FLIGHT|CODE TABLE|0|0|3|CODE TABLE|0|1
+008005|meteorologicalAttributeSignificance|table|METEOROLOGICAL ATTRIBUTE SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008006|ozoneVerticalSoundingSignificance|flag|OZONE VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+008007|dimensionalSignificance|table|DIMENSIONAL SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008008|radiationVerticalSoundingSignificance|flag|RADIATION VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+008009|detailedPhaseOfFlight|table|DETAILED PHASE OF FLIGHT|CODE TABLE|0|0|4|CODE TABLE|0|2
+008010|surfaceQualifierForTemperatureData|table|SURFACE QUALIFIER (FOR TEMPERATURE DATA)|CODE TABLE|0|0|5|CODE TABLE|0|2
+008011|meteorologicalFeature|table|METEOROLOGICAL FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008012|landOrSeaQualifier|table|LAND/SEA QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008013|dayOrNightQualifier|table|DAY/NIGHT QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008014|qualifierForRunwayVisualRange|table|QUALIFIER FOR RUNWAY VISUAL RANGE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008015|significantQualifierForSensor|table|SIGNIFICANT QUALIFIER FOR SENSOR|CODE TABLE|0|0|3|CODE TABLE|0|1
+008016|changeQualifierOfATrendTypeForecastOrAnAerodromeForecast|table|CHANGE QUALIFIER OF A TREND-TYPE FORECAST OR AN AERODROME FORECAST|CODE TABLE|0|0|3|CODE TABLE|0|1
+008017|qualifierOfTimeWhenForecastChangeExpected|table|QUALIFIER OF THE TIME WHEN THE FORECAST CHANGE IS EXPECTED|CODE TABLE|0|0|2|CODE TABLE|0|1
+008018|seawindsLandOrIceSurfaceType|flag|SEAWINDS LAND/ICE SURFACE TYPE|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+008019|qualifierForFollowingCentreIdentifier|table|QUALIFIER FOR FOLLOWING CENTRE IDENTIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008020|totalNumberOfMissingEntitiesWithRespectToAccumulationOrAverage|long|TOTAL NUMBER OF MISSING ENTITIES (WITH RESPECT TO ACCUMULATION OR AVERAGE)|Numeric|0|0|16|Numeric|0|5
+008021|timeSignificance|table|TIME SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+008022|totalNumberWithRespectToAccumulationOrAverage|long|TOTAL NUMBER (WITH RESPECT TO ACCUMULATION OR AVERAGE)|Numeric|0|0|16|Numeric|0|5
+008023|firstOrderStatistics|table|FIRST-ORDER STATISTICS|CODE TABLE|0|0|6|CODE TABLE|0|2
+008024|differenceStatistics|table|DIFFERENCE STATISTICS|CODE TABLE|0|0|6|CODE TABLE|0|2
+008025|timeDifferenceQualifier|table|TIME DIFFERENCE QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008026|matrixSignificance|table|MATRIX SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008029|surfaceType|table|SURFACE TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+008030|manualOnCodesVolumeI1SectionCCodeTableFromWhichDataAreDerived|long|MANUAL ON CODES (VOLUME I.1, SECTION C) CODE TABLE FROM WHICH DATA ARE DERIVED|Numeric|0|0|13|Numeric|0|4
+008031|dataCategoryCrexTableA|long|DATA CATEGORY - CREX TABLE A|Numeric|0|0|8|Numeric|0|3
+008032|statusOfOperation|table|STATUS OF OPERATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+008033|methodOfDerivationOfPercentageConfidence|table|METHOD OF DERIVATION OF PERCENTAGE CONFIDENCE|CODE TABLE|0|0|7|CODE TABLE|0|3
+008034|temperatureOrSalinityMeasurementQualifier|table|TEMPERATURE/SALINITY MEASUREMENT QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008035|monitoringExerciseType|table|TYPE OF MONITORING EXERCISE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008036|typeOfCentreOrStationPerformingMonitoring|table|TYPE OF CENTRE OR STATION PERFORMING MONITORING|CODE TABLE|0|0|3|CODE TABLE|0|1
+008039|timeSignificanceAviationForecast|table|TIME SIGNIFICANCE (AVIATION FORECAST)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008040|flightLevelSignificance|table|FLIGHT LEVEL SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008041|dataSignificance|table|DATA SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+008042|extendedVerticalSoundingSignificance|flag|EXTENDED VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+008043|atmosphericChemical|table|ATMOSPHERIC CHEMICAL OR PHYSICAL CONSTITUENT TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+008044|casRegistryNumber|string|CAS REGISTRY NUMBER|CCITT IA5|0|0|88|Character|0|11
+008046|atmosphericChemical|table|ATMOSPHERIC CHEMICAL OR PHYSICAL CONSTITUENT TYPE|Common CODE TABLE C-14|0|0|16|Common CODE TABLE C-14|0|5
+008049|numberOfObservations|long|NUMBER OF OBSERVATIONS|Numeric|0|0|8|Numeric|0|3
+008050|qualifierForNumberOfMissingValuesInCalculationOfStatistic|table|QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATISTIC|CODE TABLE|0|0|4|CODE TABLE|0|2
+008051|qualifierForNumberOfMissingValuesInCalculationOfStatistic|table|QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATISTIC|CODE TABLE|0|0|3|CODE TABLE|0|1
+008052|conditionForWhichNumberOfDaysOfOccurrenceFollows|table|CONDITION FOR WHICH NUMBER OF DAYS OF OCCURRENCE FOLLOWS|CODE TABLE|0|0|5|CODE TABLE|0|2
+008053|dayOfOccurrenceQualifier|table|DAY OF OCCURRENCE QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008054|qualifierForWindSpeedOrWindGusts|table|QUALIFIER FOR WIND SPEED OR WIND GUSTS|CODE TABLE|0|0|3|CODE TABLE|0|1
+008060|sampleScanningModeSignificance|table|SAMPLE SCANNING MODE SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008065|sunGlintIndicator|table|SUN-GLINT INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+008066|semiTransparencyIndicator|table|SEMI-TRANSPARENCY INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+008070|tovsOrAtovsProductQualifier|table|TOVS/ATOVS PRODUCT QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008072|pixelType|table|PIXEL(S) TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008074|altimeterEchoType|table|ALTIMETER ECHO TYPE|CODE TABLE|0|0|2|CODE TABLE|0|1
+008075|orbitQualifier|table|ASCENDING/DESCENDING ORBIT QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008076|band|table|TYPE OF BAND|CODE TABLE|0|0|6|CODE TABLE|0|2
+008077|radiometerSensedSurfaceType|table|RADIOMETER SENSED SURFACE TYPE|CODE TABLE|0|0|7|CODE TABLE|0|3
+008079|productStatus|table|PRODUCT STATUS|CODE TABLE|0|0|4|CODE TABLE|0|2
+008080|qualifierForGtsppQualityFlag|table|QUALIFIER FOR GTSPP QUALITY FLAG|CODE TABLE|0|0|6|CODE TABLE|0|2
+008081|equipmentType|table|TYPE OF EQUIPMENT|CODE TABLE|0|0|6|CODE TABLE|0|2
+008082|modificationOfSensorHeightToAnotherValue|table|MODIFICATION OF SENSOR HEIGHT TO ANOTHER VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008083|nominalValueIndicator|flag|NOMINAL VALUE INDICATOR|FLAG TABLE|0|0|15|FLAG TABLE|0|5
+008085|beamIdentifier|table|BEAM IDENTIFIER|CODE TABLE|0|0|3|CODE TABLE|0|1
+008086|verticalSignificanceForNwp|flag|VERTICAL SIGNIFICANCE FOR NWP|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+008087|cornerPositionOfObservation|table|CORNER POSITION OF OBSERVATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+008090|decimalScaleOfFollowingSignificands|long|DECIMAL SCALE OF FOLLOWING SIGNIFICANDS|Numeric|0|-127|8|Numeric|0|3
+008091|coordinatesSignificance|table|COORDINATES SIGNIFICANCE|CODE TABLE|0|0|8|CODE TABLE|0|3
+010001|heightOfLandSurface|long|HEIGHT OF LAND SURFACE|m|0|-400|15|m|0|5
+010002|height|long|HEIGHT|m|-1|-40|16|m|-1|5
+010003|geopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|m2 s-2|-1|6
+010004|pressure|long|PRESSURE|Pa|-1|0|14|Pa|-1|5
+010007|height|long|HEIGHT|m|0|-1000|17|m|0|6
+010008|geopotential|long|GEOPOTENTIAL|m2 s-2|0|-10000|20|m2 s-2|0|7
+010009|geopotentialHeight|long|GEOPOTENTIAL HEIGHT|gpm|0|-1000|17|gpm|0|5
+010010|minimumPressureReducedToMeanSeaLevel|long|MINIMUM PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010011|maximumPressureReducedToMeanSeaLevel|long|MAXIMUM PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010031|DistanceFromEarthCentreInDirectionOfNorthPole|double|IN DIRECTION OF THE NORTH POLE, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10
+010032|satelliteDistanceToEarthCentre|double|SATELLITE DISTANCE TO EARTH'S CENTRE|m|1|0|27|m|2|9
+010033|altitudePlatformToEllipsoid|double|ALTITUDE (PLATFORM TO ELLIPSOID)|m|1|0|27|m|2|9
+010034|earthRadius|double|EARTH'S RADIUS|m|1|0|27|m|2|9
+010035|earthLocalRadiusOfCurvature|double|EARTH'S LOCAL RADIUS OF CURVATURE|m|1|62000000|22|m|1|8
+010036|geoidUndulation|double|GEOID UNDULATION|m|2|-15000|15|m|2|6
+010040|numberOfRetrievedLayers|long|NUMBER OF RETRIEVED LAYERS|Numeric|0|0|10|Numeric|0|4
+010050|standardDeviationAltitude|double|STANDARD DEVIATION ALTITUDE|m|2|0|16|m|2|5
+010051|pressureReducedToMeanSeaLevel|long|PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010052|altimeterSettingQnh|long|ALTIMETER SETTING (QNH)|Pa|-1|0|14|Pa|-1|5
+010053|globalNavigationSatelliteSystemAltitude|long|GLOBAL NAVIGATION SATELLITE SYSTEM ALTITUDE|m|0|-1000|17|m|0|5
+010060|pressureChange|long|PRESSURE CHANGE|Pa|-1|-1024|11|Pa|-1|4
+010061|3HourPressureChange|long|3-HOUR PRESSURE CHANGE|Pa|-1|-500|10|Pa|-1|4
+010062|24HourPressureChange|long|24-HOUR PRESSURE CHANGE|Pa|-1|-1000|11|Pa|-1|4
+010063|characteristicOfPressureTendency|table|CHARACTERISTIC OF PRESSURE TENDENCY|CODE TABLE|0|0|4|CODE TABLE|0|2
+010064|sigmetCruisingLevel|table|SIGMET CRUISING LEVEL|CODE TABLE|0|0|3|CODE TABLE|0|1
+010070|indicatedAircraftAltitude|long|INDICATED AIRCRAFT ALTITUDE|m|0|-400|16|m|0|5
+010079|offNadirAngleOfTheSatelliteFromPlatformData|double|OFF-NADIR ANGLE OF THE SATELLITE FROM PLATFORM DATA|deg|4|0|16|deg|4|5
+010080|viewingZenithAngle|double|VIEWING ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+010081|cogAltitudeAboveReferenceEllipsoid|double|ALTITUDE OF COG ABOVE REFERENCE ELLIPSOID|m|3|0|31|m|3|10
+010082|instantaneousAltitudeRate|double|INSTANTANEOUS ALTITUDE RATE|m/s|3|-65536|17|m/s|3|6
+010083|squaredOffNadirAngleOfSatelliteFromPlatformData|double|SQUARED OFF-NADIR ANGLE OF THE SATELLITE FROM PLATFORM DATA|deg2|2|0|16|deg2|2|5
+010084|squaredOffNadirAngleOfSatelliteFromWaveformData|double|SQUARED OFF-NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA|deg2|2|0|16|deg2|2|5
+010085|meanSeaSurfaceHeight|double|MEAN SEA-SURFACE HEIGHT|m|3|-131072|18|m|3|6
+010086|geoidHeight|double|GEOID'S HEIGHT|m|3|-131072|18|m|3|6
+010087|oceanDepthOrLandElevation|double|OCEAN DEPTH/LAND ELEVATION|m|1|-131072|18|m|1|6
+010088|totalGeocentricOceanTideHeightSolution1|double|TOTAL GEOCENTRIC OCEAN TIDE HEIGHT (SOLUTION 1)|m|3|-32768|16|m|3|5
+010089|totalGeocentricOceanTideHeightSolution2|double|TOTAL GEOCENTRIC OCEAN TIDE HEIGHT (SOLUTION 2)|m|3|-32768|16|m|3|5
+010090|longPeriodTideHeight|double|LONG PERIOD TIDE HEIGHT|m|3|-32768|16|m|3|5
+010091|tidalLoadingHeight|double|TIDAL LOADING HEIGHT|m|3|-32768|16|m|3|5
+010092|solidEarthTideHeight|double|SOLID EARTH TIDE HEIGHT|m|3|-32768|16|m|3|5
+010093|geocentricPoleTideHeight|double|GEOCENTRIC POLE TIDE HEIGHT|m|3|-32768|16|m|3|5
+010095|heightOfAtmosphere|long|HEIGHT OF ATMOSPHERE USED|m|0|0|16|m|0|5
+010096|meanDynamicTopography|double|MEAN DYNAMIC TOPOGRAPHY|m|3|-131072|18|m|3|6
+010097|meanSeaSurfaceHeightFromAltimeterOnly|double|MEAN SEA-SURFACE HEIGHT FROM ALTIMETER ONLY|m|3|-131072|18|m|3|6
+010098|loadingTideHeightGeocentricOceanTideSolution1|double|LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 1|m|4|-2000|12|m|4|4
+010099|loadingTideHeightGeocentricOceanTideSolution2|double|LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 2|m|4|-2000|12|m|4|4
+010100|nonEquilibriumLongPeriodTideHeight|double|NON-EQUILIBRIUM LONG PERIOD TIDE HEIGHT|m|4|-2000|12|m|4|4
+010101|squaredOffNadirAngleOfSatelliteFromWaveformData|double|SQUARED OFF-NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA|deg2|2|-32768|16|deg2|2|5
+010102|seaSurfaceHeightAnomaly|double|SEA-SURFACE HEIGHT ANOMALY|m|3|-32768|16|m|3|5
+011001|windDirection|long|WIND DIRECTION|deg|0|0|9|deg|0|3
+011002|windSpeed|double|WIND SPEED|m/s|1|0|12|m/s|1|4
+011003|u|double|U-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011004|v|double|V-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011005|w|double|W-COMPONENT|Pa/s|1|-512|10|Pa/s|1|4
+011006|w|double|W-COMPONENT|m/s|2|-4096|13|m/s|2|4
+011010|windDirectionAssociatedWithWindSpeedWhichFollows|long|WIND DIRECTION ASSOCIATED WITH WIND SPEED WHICH FOLLOWS|deg|0|0|9|deg|0|3
+011011|windDirectionAt10M|long|WIND DIRECTION AT 10 M|deg|0|0|9|deg|0|3
+011012|windSpeedAt10M|double|WIND SPEED AT 10 M|m/s|1|0|12|m/s|1|4
+011013|windDirectionAt5M|long|WIND DIRECTION AT 5 M|deg|0|0|9|deg|0|3
+011014|windSpeedAt5M|double|WIND SPEED AT 5 M|m/s|1|0|12|m/s|1|4
+011016|extremeCounterclockwiseWindDirectionOfAVariableWind|long|EXTREME COUNTERCLOCKWISE WIND DIRECTION OF A VARIABLE WIND|deg|0|0|9|deg|0|3
+011017|extremeClockwiseWindDirectionOfAVariableWind|long|EXTREME CLOCKWISE WIND DIRECTION OF A VARIABLE WIND|deg|0|0|9|deg|0|3
+011019|steadinessOfWind|long|STEADINESS OF WIND|%|0|0|7|%|0|3
+011021|relativeVorticity|double|RELATIVE VORTICITY|/s|9|-65536|17|/s|9|6
+011022|divergence|double|DIVERGENCE|/s|9|-65536|17|/s|9|6
+011023|velocityPotential|long|VELOCITY POTENTIAL|m2/s|-2|-65536|17|m2/s|-2|6
+011030|extendedDegreeOfTurbulence|table|EXTENDED DEGREE OF TURBULENCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+011031|degreeOfTurbulence|table|DEGREE OF TURBULENCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+011032|heightOfBaseOfTurbulence|long|HEIGHT OF BASE OF TURBULENCE|m|-1|-40|16|m|-1|5
+011033|heightOfTopOfTurbulence|long|HEIGHT OF TOP OF TURBULENCE|m|-1|-40|16|m|-1|5
+011034|verticalGustVelocity|double|VERTICAL GUST VELOCITY|m/s|1|-1024|11|m/s|1|4
+011035|verticalGustAcceleration|double|VERTICAL GUST ACCELERATION|m s-2|2|-8192|14|m s-2|2|5
+011036|maximumDerivedEquivalentVerticalGustSpeed|double|MAXIMUM DERIVED EQUIVALENT VERTICAL GUST SPEED|m/s|1|0|10|m/s|1|4
+011037|turbulenceIndex|table|TURBULENCE INDEX|CODE TABLE|0|0|6|CODE TABLE|0|2
+011038|timeOfOccurrenceOfPeakEddyDissipationRate|table|TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|5|CODE TABLE|0|2
+011039|extendedTimeOfOccurrenceOfPeakEddyDissipationRate|table|EXTENDED TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|6|CODE TABLE|0|2
+011040|maximumWindSpeedMeanWind|double|MAXIMUM WIND SPEED (MEAN WIND)|m/s|1|0|12|m/s|1|4
+011041|maximumWindGustSpeed|double|MAXIMUM WIND GUST SPEED|m/s|1|0|12|m/s|1|4
+011042|maximumWindSpeed10MinuteMeanWind|double|MAXIMUM WIND SPEED (10-MINUTE MEAN WIND)|m/s|1|0|12|m/s|1|4
+011043|maximumWindGustDirection|long|MAXIMUM WIND GUST DIRECTION|deg|0|0|9|deg|0|3
+011044|meanWindDirectionForSurfaceTo1500M|long|MEAN WIND DIRECTION FOR SURFACE - 1 500 M (5 000 FEET)|deg|0|0|9|deg|0|3
+011045|meanWindSpeedForSurfaceTo1500M|double|MEAN WIND SPEED FOR SURFACE - 1 500 M (5 000 FEET)|m/s|1|0|12|m/s|1|4
+011046|maximumInstantaneousWindSpeed|double|MAXIMUM INSTANTANEOUS WIND SPEED|m/s|1|0|12|m/s|1|4
+011047|maximumInstantaneousWindSpeedOver10Minutes|double|MAXIMUM INSTANTANEOUS WIND SPEED OVER 10 MINUTES|m/s|1|0|12|m/s|1|4
+011049|windDirectionStandardDeviation|long|STANDARD DEVIATION OF WIND DIRECTION|deg|0|0|9|deg|0|3
+011050|standardDeviationOfHorizontalWindSpeed|double|STANDARD DEVIATION OF HORIZONTAL WIND SPEED|m/s|1|0|12|m/s|1|4
+011051|standardDeviationOfVerticalWindSpeed|double|STANDARD DEVIATION OF VERTICAL WIND SPEED|m/s|1|0|8|m/s|1|3
+011052|formalUncertaintyInWindSpeed|double|FORMAL UNCERTAINTY IN WIND SPEED|m/s|2|0|13|m/s|2|5
+011053|formalUncertaintyInWindDirection|double|FORMAL UNCERTAINTY IN WIND DIRECTION|deg|2|0|15|deg|2|5
+011054|meanWindDirectionFor1500To3000M|long|MEAN WIND DIRECTION FOR 1 500 - 3 000 M|deg|0|0|9|deg|0|3
+011055|meanWindSpeedFor1500To3000M|double|MEAN WIND SPEED FOR 1 500 - 3 000 M|m/s|1|0|12|m/s|1|4
+011061|absoluteWindShearIn1KmLayerBelow|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW|m/s|1|0|12|m/s|1|4
+011062|absoluteWindShearIn1KmLayerAbove|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE|m/s|1|0|12|m/s|1|4
+011070|designatorOfRunwayAffectedByWindShearIncludingAll|string|DESIGNATOR OF THE RUNWAY AFFECTED BY WIND SHEAR (INCLUDING ALL)|CCITT IA5|0|0|32|Character|0|4
+011071|turbulentVerticalMomentumFlux|double|TURBULENT VERTICAL MOMENTUM FLUX|m2 s-2|3|-128|14|m2 s-2|3|5
+011072|turbulentVerticalBuoyancyFlux|double|TURBULENT VERTICAL BUOYANCY FLUX|K m s-1|3|-128|11|K m s-1|3|4
+011073|turbulentKineticEnergy|double|TURBULENT KINETIC ENERGY|m2 s-2|2|-1024|13|m2 s-2|2|4
+011074|dissipationEnergy|double|DISSIPATION ENERGY|m2 s-2|2|-1024|10|m2 s-2|2|4
+011075|meanTurbulenceIntensityEddyDissipationRate|double|MEAN TURBULENCE INTENSITY (EDDY DISSIPATION RATE)|m2/3 s-1|2|0|8|m2/3 s-1|2|3
+011076|peakTurbulenceIntensityEddyDissipationRate|double|PEAK TURBULENCE INTENSITY (EDDY DISSIPATION RATE)|m2/3 s-1|2|0|8|m2/3 s-1|2|3
+011077|reportingIntervalOrAveragingTimeForEddyDissipationRate|long|REPORTING INTERVAL OR AVERAGING TIME FOR EDDY DISSIPATION RATE|s|0|0|12|s|0|4
+011081|modelWindDirectionAt10M|double|MODEL WIND DIRECTION AT 10 M|deg|2|0|16|deg|2|5
+011082|modelWindSpeedAt10M|double|MODEL WIND SPEED AT 10 M|m/s|2|0|14|m/s|2|4
+011083|windSpeed|long|WIND SPEED|km/h|0|0|9|km/h|0|3
+011084|windSpeed|long|WIND SPEED|kt|0|0|8|kt|0|3
+011085|maximumWindGustSpeed|long|MAXIMUM WIND GUST SPEED|km/h|0|0|9|km/h|0|3
+011086|maximumWindGustSpeed|long|MAXIMUM WIND GUST SPEED|kt|0|0|8|kt|0|3
+011095|u|double|U-COMPONENT OF THE MODEL WIND VECTOR|m/s|1|-4096|13|m/s|1|4
+011096|v|double|V-COMPONENT OF THE MODEL WIND VECTOR|m/s|1|-4096|13|m/s|1|4
+011097|windSpeedFromAltimeter|double|WIND SPEED FROM ALTIMETER|m/s|2|0|12|m/s|2|4
+011098|windSpeedFromRadiometer|double|WIND SPEED FROM RADIOMETER|m/s|2|0|12|m/s|2|4
+011100|aircraftTrueAirspeed|double|AIRCRAFT TRUE AIRSPEED|m/s|1|0|12|m/s|1|4
+011101|aircraftGroundSpeedUComponent|double|AIRCRAFT GROUND SPEED U-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011102|aircraftGroundSpeedVComponent|double|AIRCRAFT GROUND SPEED V-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011103|aircraftGroundSpeedWComponent|double|AIRCRAFT GROUND SPEED W-COMPONENT|m/s|1|-512|10|m/s|1|3
+011104|aircraftTrueHeading|long|AIRCRAFT TRUE HEADING|deg|0|0|9|deg|0|3
+011105|edrAlgorithmVersion|long|EDR ALGORITHM VERSION|Numeric|0|0|6|Numeric|0|2
+011106|runningMinimumConfidence|long|RUNNING MINIMUM CONFIDENCE|Numeric|1|0|4|Numeric|1|2
+011107|maximumNumberBadInputs|long|MAXIMUM NUMBER BAD INPUTS|Numeric|0|0|5|Numeric|0|2
+011108|peakLocation|long|PEAK LOCATION|Numeric|1|0|4|Numeric|1|2
+011109|numberOfGoodEdr|long|NUMBER OF GOOD EDR|Numeric|0|0|4|Numeric|0|2
+012001|airTemperature|double|TEMPERATURE/AIR TEMPERATURE|K|1|0|12|C|1|3
+012002|wetBulbTemperature|double|WET-BULB TEMPERATURE|K|1|0|12|C|1|3
+012003|dewpointTemperature|double|DEWPOINT TEMPERATURE|K|1|0|12|C|1|3
+012004|airTemperatureAt2M|double|AIR TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012005|wetBulbTemperatureAt2M|double|WET-BULB TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012006|dewpointTemperatureAt2M|double|DEWPOINT TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012007|virtualTemperature|double|VIRTUAL TEMPERATURE|K|1|0|12|C|1|3
+012011|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|C|1|3
+012012|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|C|1|3
+012013|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE, PAST 12 HOURS|K|1|0|12|C|1|3
+012014|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|1|0|12|C|1|3
+012015|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|1|0|12|C|1|3
+012016|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|1|0|12|C|1|3
+012017|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|1|0|12|C|1|3
+012021|maximumTemperatureAt2M|double|MAXIMUM TEMPERATURE AT 2 M|K|2|0|16|C|2|4
+012022|minimumTemperatureAt2M|double|MINIMUM TEMPERATURE AT 2 M|K|2|0|16|C|2|4
+012023|temperature|long|TEMPERATURE|C|0|-99|8|C|0|2
+012024|dewpointTemperature|long|DEWPOINT TEMPERATURE|C|0|-99|8|C|0|2
+012030|soilTemperature|double|SOIL TEMPERATURE|K|1|0|12|C|1|3
+012049|temperatureChangeOverSpecifiedPeriod|long|TEMPERATURE CHANGE OVER SPECIFIED PERIOD|K|0|-30|6|C|0|2
+012051|standardDeviationTemperature|double|STANDARD DEVIATION TEMPERATURE|K|1|0|10|C|1|3
+012052|highestDailyMeanTemperature|double|HIGHEST DAILY MEAN TEMPERATURE|K|1|0|12|C|1|3
+012053|lowestDailyMeanTemperature|double|LOWEST DAILY MEAN TEMPERATURE|K|1|0|12|C|1|3
+012060|awsEnclosureInternalTemperature|double|AWS ENCLOSURE INTERNAL TEMPERATURE|K|1|0|12|C|1|3
+012061|skinTemperature|double|SKIN TEMPERATURE|K|1|0|12|C|1|3
+012062|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|1|0|12|C|1|3
+012063|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|1|0|12|C|1|3
+012064|instrumentTemperature|double|INSTRUMENT TEMPERATURE|K|1|0|12|K|1|4
+012065|standardDeviationBrightnessTemperature|double|STANDARD DEVIATION BRIGHTNESS TEMPERATURE|K|1|0|12|K|1|4
+012066|antennaTemperature|double|ANTENNA TEMPERATURE|K|2|0|16|C|2|5
+012070|warmLoadTemperature|double|WARM LOAD TEMPERATURE|K|2|0|16|K|2|5
+012071|coldestClusterTemperature|double|COLDEST CLUSTER TEMPERATURE|K|1|0|12|K|1|4
+012072|radiance|double|RADIANCE|W m-2 sr-1|6|0|31|W m-2 sr-1|6|9
+012075|spectralRadiance|long|SPECTRAL RADIANCE|W m-3 sr-1|-3|0|16|W m-3 sr-1|-3|5
+012076|radiance|double|RADIANCE|W m-2 sr-1|3|0|16|W m-2 sr-1|3|5
+012080|brightnessTemperatureRealPart|double|BRIGHTNESS TEMPERATURE REAL PART|K|2|-10000|16|K|2|5
+012081|brightnessTemperatureImaginaryPart|double|BRIGHTNESS TEMPERATURE IMAGINARY PART|K|2|-10000|16|K|2|5
+012082|pixelRadiometricAccuracy|double|PIXEL RADIOMETRIC ACCURACY|K|2|0|12|K|2|4
+012101|airTemperature|double|TEMPERATURE/AIR TEMPERATURE|K|2|0|16|C|2|4
+012102|wetBulbTemperature|double|WET-BULB TEMPERATURE|K|2|0|16|C|2|4
+012103|dewpointTemperature|double|DEWPOINT TEMPERATURE|K|2|0|16|C|2|4
+012104|airTemperatureAt2M|double|AIR TEMPERATURE AT 2 M|K|2|0|16|C|2|4
+012105|webBulbTemperatureAt2M|double|WEB-BULB TEMPERATURE AT 2 M|K|2|0|16|C|2|4
+012106|dewpointTemperatureAt2M|double|DEWPOINT TEMPERATURE AT 2 M|K|2|0|16|C|2|4
+012107|virtualTemperature|double|VIRTUAL TEMPERATURE|K|2|0|16|C|2|4
+012111|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|2|0|16|C|2|4
+012112|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|2|0|16|C|2|4
+012113|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE, PAST 12 HOURS|K|2|0|16|C|2|4
+012114|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|2|0|16|C|2|4
+012115|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|2|0|16|C|2|4
+012116|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|2|0|16|C|2|4
+012117|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|2|0|16|C|2|4
+012118|maximumTemperatureAtHeightSpecifiedPast24Hours|double|MAXIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS|K|2|0|16|C|2|4
+012119|minimumTemperatureAtHeightSpecifiedPast24Hours|double|MINIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS|K|2|0|16|C|2|4
+012120|groundTemperature|double|GROUND TEMPERATURE|K|2|0|16|C|2|4
+012121|groundMinimumTemperature|double|GROUND MINIMUM TEMPERATURE|K|2|0|16|C|2|4
+012122|groundMinimumTemperatureOfPrecedingNight|double|GROUND MINIMUM TEMPERATURE OF THE PRECEDING NIGHT|K|2|0|16|C|2|4
+012130|soilTemperature|double|SOIL TEMPERATURE|K|2|0|16|C|2|4
+012131|snowTemperature|double|SNOW TEMPERATURE|K|2|0|16|C|2|4
+012132|iceSurfaceTemperature|double|ICE SURFACE TEMPERATURE|K|2|0|16|C|2|4
+012151|dailyMeanTemperatureStandardDeviation|double|STANDARD DEVIATION OF DAILY MEAN TEMPERATURE|K|2|0|12|C|2|4
+012152|highestDailyMeanTemperature|double|HIGHEST DAILY MEAN TEMPERATURE|K|2|0|16|C|2|4
+012153|lowestDailyMeanTemperature|double|LOWEST DAILY MEAN TEMPERATURE|K|2|0|16|C|2|4
+012158|noiseEquivalentDeltaTemperatureWhileViewingColdTarget|double|NOISE-EQUIVALENT DELTA TEMPERATURE WHILE VIEWING COLD TARGET|K|2|0|12|C|2|4
+012159|noiseEquivalentDeltaTemperatureWhileViewingWarmTarget|double|NOISE-EQUIVALENT DELTA TEMPERATURE WHILE VIEWING WARM TARGET|K|2|0|12|C|2|4
+012161|skinTemperature|double|SKIN TEMPERATURE|K|2|0|16|C|2|4
+012162|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|2|0|16|C|2|4
+012163|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|2|0|16|C|2|4
+012164|instrumentTemperature|double|INSTRUMENT TEMPERATURE|K|2|0|16|K|2|5
+012165|directSunBrightnessTemperature|long|DIRECT SUN BRIGHTNESS TEMPERATURE|K|0|0|23|K|0|7
+012166|snapshotAccuracy|double|SNAPSHOT ACCURACY|K|1|-4000|13|K|1|4
+012167|radiometricAccuracyPurePolarization|double|RADIOMETRIC ACCURACY (PURE POLARIZATION)|K|1|0|9|K|1|3
+012168|radiometricAccuracyCrossPolarization|double|RADIOMETRIC ACCURACY (CROSS POLARIZATION)|K|1|0|9|K|1|3
+012171|coldestClusterTemperature|double|COLDEST CLUSTER TEMPERATURE|K|2|0|16|K|2|5
+012180|averaged12MicronBtForAllClearPixelsAtNadir|double|AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012181|averaged11MicronBtForAllClearPixelsAtNadir|double|AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012182|averaged37MicronBtForAllClearPixelsAtNadir|double|AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012183|averaged12MicronBtForAllClearPixelsForwardView|double|AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012184|averaged11MicronBtForAllClearPixelsForwardView|double|AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012185|averaged37MicronBtForAllClearPixelsForwardView|double|AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012186|meanNadirSeaSurfaceTemperature|double|MEAN NADIR SEA-SURFACE TEMPERATURE|K|2|0|16|K|2|5
+012187|meanDualViewSeaSurfaceTemperature|double|MEAN DUAL VIEW SEA-SURFACE TEMPERATURE|K|2|0|16|K|2|5
+012188|interpolated238GhzBrightnessTFromMwr|double|INTERPOLATED 23.8 GHZ BRIGHTNESS T FROM MWR|K|2|0|16|K|2|5
+012189|interpolated365GhzBrightnessTFromMwr|double|INTERPOLATED 36.5 GHZ BRIGHTNESS T FROM MWR|K|2|0|16|K|2|5
+013001|specificHumidity|double|SPECIFIC HUMIDITY|kg/kg|5|0|14|kg/kg|5|5
+013002|mixingRatio|double|MIXING RATIO|kg/kg|5|0|14|kg/kg|5|5
+013003|relativeHumidity|long|RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013004|vapourPressure|long|VAPOUR PRESSURE|Pa|-1|0|10|Pa|-1|4
+013005|vapourDensity|double|VAPOUR DENSITY|kg m-3|3|0|7|kg m-3|3|3
+013006|mixingHeights|long|MIXING HEIGHTS|m|-1|-40|16|m|-1|5
+013007|minimumRelativeHumidity|long|MINIMUM RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013008|maximumRelativeHumidity|long|MAXIMUM RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013009|relativeHumidity|double|RELATIVE HUMIDITY|%|1|-1000|12|%|1|4
+013011|totalPrecipitationOrTotalWaterEquivalent|double|TOTAL PRECIPITATION/TOTAL WATER EQUIVALENT|kg m-2|1|-1|14|kg m-2|1|5
+013012|depthOfFreshSnow|double|DEPTH OF FRESH SNOW|m|2|-2|12|m|2|4
+013013|totalSnowDepth|double|TOTAL SNOW DEPTH|m|2|-2|16|m|2|5
+013014|rainfallOrWaterEquivalentOfSnowAveragedRate|double|RAINFALL/WATER EQUIVALENT OF SNOW (AVERAGED RATE)|kg m-2 s-1|4|0|12|kg m-2 s-1|4|4
+013015|snowfallAveragedRate|double|SNOWFALL (AVERAGED RATE)|m/s|7|0|12|m/s|7|4
+013016|precipitableWater|long|PRECIPITABLE WATER|kg m-2|0|0|7|kg m-2|0|3
+013019|totalPrecipitationPast1Hour|double|TOTAL PRECIPITATION PAST 1 HOUR|kg m-2|1|-1|14|kg m-2|1|4
+013020|totalPrecipitationPast3Hours|double|TOTAL PRECIPITATION PAST 3 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013021|totalPrecipitationPast6Hours|double|TOTAL PRECIPITATION PAST 6 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013022|totalPrecipitationPast12Hours|double|TOTAL PRECIPITATION PAST 12 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013023|totalPrecipitationPast24Hours|double|TOTAL PRECIPITATION PAST 24 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013031|evapotranspiration|long|EVAPOTRANSPIRATION|kg m-2|0|0|7|kg m-2|0|3
+013032|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|8|kg m-2|1|3
+013033|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|10|kg m-2|1|4
+013038|superadiabaticIndicator|table|SUPERADIABATIC INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+013039|terrainTypeIceOrSnow|table|TERRAIN TYPE (ICE/SNOW)|CODE TABLE|0|0|3|CODE TABLE|0|1
+013040|surfaceFlag|table|SURFACE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+013041|pasquillGiffordStabilityCategory|table|PASQUILL-GIFFORD STABILITY CATEGORY|CODE TABLE|0|0|4|CODE TABLE|0|2
+013042|parcelLiftedIndexTo500Hpa|long|PARCEL LIFTED INDEX (TO 500 HPA)|K|0|-20|6|K|0|2
+013043|bestLiftedIndexTo500Hpa|long|BEST LIFTED INDEX (TO 500 HPA)|K|0|-20|6|K|0|2
+013044|kIndex|long|K INDEX|K|0|-30|8|K|0|3
+013045|koIndex|long|KO INDEX|K|0|-30|8|K|0|3
+013046|maximumBuoyancy|long|MAXIMUM BUOYANCY|K|0|-30|8|K|0|3
+013047|modifiedShowalterStabilityIndex|long|MODIFIED SHOWALTER STABILITY INDEX|K|0|-60|6|C|0|2
+013048|waterFraction|double|WATER FRACTION|%|1|0|10|%|1|4
+013051|frequencyGroupPrecipitation|table|FREQUENCY GROUP, PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013052|highestDailyAmountOfPrecipitation|double|HIGHEST DAILY AMOUNT OF PRECIPITATION|kg m-2|1|-1|14|kg m-2|1|5
+013055|intensityOfPrecipitation|double|INTENSITY OF PRECIPITATION|kg m-2 s-1|4|0|8|mm/h|1|4
+013056|characterAndIntensityOfPrecipitation|table|CHARACTER AND INTENSITY OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013057|timeOfBeginningOrEndOfPrecipitation|table|TIME OF BEGINNING OR END OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013058|sizeOfPrecipitatingElement|double|SIZE OF PRECIPITATING ELEMENT|m|4|0|7|mm|1|3
+013059|numberOfFlashesThunderstorm|long|NUMBER OF FLASHES (THUNDERSTORM)|Numeric|0|0|7|Numeric|0|3
+013060|totalAccumulatedPrecipitation|double|TOTAL ACCUMULATED PRECIPITATION|kg m-2|1|-1|17|kg m-2|1|5
+013071|upstreamWaterLevel|double|UPSTREAM WATER LEVEL|m|2|0|14|m|2|4
+013072|downstreamWaterLevel|double|DOWNSTREAM WATER LEVEL|m|2|0|14|m|2|4
+013073|maximumWaterLevel|double|MAXIMUM WATER LEVEL|m|2|0|14|m|2|4
+013074|groundWaterLevel|double|GROUND WATER LEVEL|m|2|0|18|m|2|6
+013080|waterPh|double|WATER PH|pH unit|1|0|10|pH unit|1|3
+013081|waterConductivity|double|WATER CONDUCTIVITY|S/m|3|0|14|S/m|3|4
+013082|waterTemperature|double|WATER TEMPERATURE|K|1|0|12|K|1|4
+013083|dissolvedOxygen|double|DISSOLVED OXYGEN|kg m-3|6|0|15|kg m-3|6|5
+013084|turbidity|long|TURBIDITY|lm|0|0|14|lm|0|4
+013085|oxidationReductionPotential|double|OXIDATION REDUCTION POTENTIAL (ORP)|V|3|0|14|V|3|4
+013090|radiometerWaterVapourContent|double|RADIOMETER WATER VAPOUR CONTENT|kg m-2|1|0|10|kg m-2|1|4
+013091|radiometerLiquidContent|double|RADIOMETER LIQUID CONTENT|kg m-2|2|0|8|kg m-2|2|3
+013093|cloudOpticalThickness|long|CLOUD OPTICAL THICKNESS|Numeric|0|0|8|Numeric|0|3
+013095|totalColumnWaterVapour|double|TOTAL COLUMN WATER VAPOUR|kg m-2|4|0|19|kg m-2|4|6
+013096|mwrWaterVapourContent|double|MWR WATER VAPOUR CONTENT|kg m-2|2|0|14|kg m-2|2|5
+013097|mwrLiquidWaterContent|double|MWR LIQUID WATER CONTENT|kg m-2|2|0|14|kg m-2|2|5
+013098|integratedWaterVapourDensity|double|INTEGRATED WATER VAPOUR DENSITY|kg m-2|8|0|30|kg m-2|8|10
+013099|log10OfIntegratedCloudParticleDensity|double|LOG10 OF INTEGRATED CLOUD PARTICLE DENSITY|log (m-2)|1|0|7|log (m-2)|1|3
+013100|log10OfIntegratedCloudParticleArea|double|LOG10 OF INTEGRATED CLOUD PARTICLE AREA|log (m2 m-2)|1|-70|7|log (m2 m-2)|1|2
+013101|log10OfIntegratedCloudParticleVolume|double|LOG10 OF INTEGRATED CLOUD PARTICLE VOLUME|log (m3 m-2)|1|-140|7|log (m3 m-2)|1|3
+013110|massMixingRatio|long|MASS MIXING RATIO|%|0|0|7|%|0|3
+013111|soilMoisture|long|SOIL MOISTURE|g/kg|0|0|10|g/kg|0|4
+013112|objectWetnessDuration|long|OBJECT WETNESS DURATION|s|0|0|17|s|0|5
+013114|rateOfIceAccretion|double|RATE OF ICE ACCRETION|kg m-2 h-1|1|0|11|kg m-2 h-1|1|4
+013115|iceThickness|double|ICE THICKNESS|m|2|0|19|m|2|6
+013117|snowDensityLiquidWaterContent|long|SNOW DENSITY (LIQUID WATER CONTENT)|kg m-3|0|0|10|kg m-3|0|3
+013118|freshSnowDepth|double|DEPTH OF FRESH SNOW (HIGH ACCURACY)|m|3|-2|14|m|3|5
+013155|precipitationIntensityHighAccuracy|double|INTENSITY OF PRECIPITATION (HIGH ACCURACY)|kg m-2 s-1|5|-1|16|mm/h|2|5
+013160|radiometerLiquidContent|double|RADIOMETER LIQUID CONTENT|kg m-2|2|-350|10|kg m-2|2|3
+014001|longWaveRadiationIntegratedOver24Hours|long|LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-65536|17|J m-2|-3|5
+014002|longWaveRadiationIntegratedOverPeriodSpecified|long|LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-65536|17|J m-2|-3|5
+014003|shortWaveRadiationIntegratedOver24Hours|long|SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-65536|17|J m-2|-3|5
+014004|shortWaveRadiationIntegratedOverPeriodSpecified|long|SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-65536|17|J m-2|-3|5
+014011|netLongWaveRadiationIntegratedOver24Hours|long|NET LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-65536|17|J m-2|-3|5
+014012|netLongWaveRadiationIntegratedOverPeriodSpecified|long|NET LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-65536|17|J m-2|-3|5
+014013|netShortWaveRadiation24Hours|long|NET SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-65536|17|J m-2|-3|5
+014014|netShortWaveRadiationIntegratedOverPeriodSpecified|long|NET SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-65536|17|J m-2|-3|5
+014015|netRadiationIntegratedOver24Hours|long|NET RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|-16384|15|J m-2|-4|5
+014016|netRadiationIntegratedOverPeriodSpecified|long|NET RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|-16384|15|J m-2|-4|5
+014017|instantaneousLongWaveRadiation|long|INSTANTANEOUS LONG-WAVE RADIATION|W m-2|0|-512|10|W m-2|0|4
+014018|instantaneousShortWaveRadiation|long|INSTANTANEOUS SHORT-WAVE RADIATION|W m-2|0|-2048|12|W m-2|0|4
+014019|surfaceAlbedo|long|SURFACE ALBEDO|%|0|0|7|%|0|3
+014020|globalSolarRadiation24Hours|long|GLOBAL SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014021|globalSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014022|diffuseSolarRadiationIntegratedOver24Hours|long|DIFFUSE SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014023|diffuseSolarRadiationIntegratedOverPeriodSpecified|long|DIFFUSE SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014024|directSolarRadiationIntegratedOver24Hours|long|DIRECT SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014025|directSolarRadiationIntegratedOverPeriodSpecified|long|DIRECT SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014026|cloudTopAlbedo|long|ALBEDO AT THE TOP OF CLOUDS|%|0|0|7|%|0|3
+014027|albedo|long|ALBEDO|%|0|0|7|%|0|3
+014028|globalSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|0|20|J m-2|-2|6
+014029|diffuseSolarRadiationIntegratedOverPeriodSpecified|long|DIFFUSE SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|0|20|J m-2|-2|6
+014030|directSolarRadiationIntegratedOverPeriodSpecified|long|DIRECT SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|0|20|J m-2|-2|6
+014031|totalSunshine|long|TOTAL SUNSHINE|min|0|0|11|min|0|4
+014032|totalSunshine|long|TOTAL SUNSHINE|h|0|0|10|h|0|4
+014033|totalSunshine|long|TOTAL SUNSHINE|%|0|0|9|%|0|3
+014034|sunshineOverPeriodSpecified|long|SUNSHINE OVER PERIOD SPECIFIED|min|0|0|11|min|0|4
+014035|solarRadiationFlux|double|SOLAR RADIATION FLUX|W m-2|1|0|14|W m-2|1|5
+014042|bidirectionalReflectance|long|BIDIRECTIONAL REFLECTANCE|%|0|0|7|%|0|3
+014043|channelRadiance|double|CHANNEL RADIANCE|W m-2 sr-1 um-1|4|0|23|W m-2 sr-1 um-1|4|7
+014044|channelRadiance|double|CHANNEL RADIANCE|W m-2 sr-1 cm|7|-100000|22|W m-2 sr-1 cm|7|7
+014045|channelRadiance|long|CHANNEL RADIANCE|W m-2 sr-1 cm|0|0|11|W m-2 sr-1 cm|0|4
+014046|scaledIasiRadiance|long|SCALED IASI RADIANCE|W m-2 sr-1 m|0|-5000|16|W m-2 sr-1 m|0|5
+014047|scaledMeanAvhrrRadiance|long|SCALED MEAN AVHRR RADIANCE|W m-2 sr-1 m|0|0|31|W m-2 sr-1 m|0|10
+014048|scaledStandardDeviationAvhrrRadiance|long|SCALED STANDARD DEVIATION AVHRR RADIANCE|W m-2 sr-1 m|0|0|31|W m-2 sr-1 m|0|10
+014050|emissivity|double|EMISSIVITY|%|1|0|10|%|1|4
+014051|directSolarRadiationIntegratedOverLastHour|long|DIRECT SOLAR RADIATION INTEGRATED OVER LAST HOUR|J m-2|-3|0|14|J m-2|-3|4
+014052|globalUpwardSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL UPWARD SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|-1048574|20|J m-2|-2|7
+014053|netRadiationIntegratedOverPeriodSpecified|long|NET RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|-1048574|21|J m-2|-2|7
+014054|photosyntheticallyActiveRadiationIntegratedOverPeriodSpecified|long|PHOTOSYNTHETICALLY ACTIVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|0|16|J m-2|-3|5
+014055|solarActivityIndex|long|SOLAR ACTIVITY INDEX|Numeric|0|-32768|16|Numeric|0|5
+014056|backgroundLuminance|long|BACKGROUND LUMINANCE|cd m-2|0|0|18|cd m-2|0|6
+014057|soilHeatFlux|long|SOIL HEAT FLUX|J m-2|-2|-1048574|21|J m-2|-2|7
+014072|globalUvIrradiation|long|GLOBAL UV IRRADIATION|J m-2|0|-4000000|23|J m-2|0|7
+015001|totalOzone|long|TOTAL OZONE|DU|0|0|10|DU|0|4
+015002|airMassSlantPathAt22Km|long|AIR MASS (SLANT PATH AT 22 KM)|Numeric|2|0|10|Numeric|2|3
+015003|measuredOzonePartialPressureSounding|double|MEASURED OZONE PARTIAL PRESSURE (SOUNDING)|Pa|4|0|9|nbar|0|3
+015004|ozoneSoundingCorrectionFactor|long|OZONE SOUNDING CORRECTION FACTOR (CF)|Numeric|3|0|11|Numeric|3|4
+015005|ozoneP|long|OZONE P|DU|0|0|10|DU|0|3
+015008|significandOfVolumetricMixingRatio|long|SIGNIFICAND OF VOLUMETRIC MIXING RATIO|Numeric|0|0|10|Numeric|0|4
+015011|log10IntegratedElectronDensity|double|LOG10 OF INTEGRATED ELECTRON DENSITY|log (m-2)|3|14000|13|log (m-2)|3|4
+015012|totalElectronCountPerSquareMetre|long|TOTAL ELECTRON COUNT PER SQUARE METRE|m-2|-16|0|6|m-2|-16|2
+015015|maxImageSpectralComponentBeforeNormalization|long|MAXIMUM IMAGE SPECTRAL COMPONENT BEFORE NORMALIZATION|Numeric|0|0|31|Numeric|0|10
+015020|integratedOzoneDensity|double|INTEGRATED OZONE DENSITY|kg m-2|8|0|21|kg m-2|8|7
+015021|integratedMassDensity|double|INTEGRATED MASS DENSITY|kg m-2|11|0|31|kg m-2|11|10
+015024|opticalDepth|long|OPTICAL DEPTH|Numeric|4|0|24|Numeric|4|8
+015025|pollutantType|table|TYPE OF POLLUTANT|CODE TABLE|0|0|4|CODE TABLE|0|2
+015026|moleFractionOfPollutant|double|CONCENTRATION OF POLLUTANT (MOL MOL-1)|mol/mol|9|0|9|mol/mol|9|3
+015027|massConcentrationOfPollutant|double|CONCENTRATION OF POLLUTANT (KG M-3)|kg m-3|9|0|10|kg m-3|9|4
+015029|extinctionCoefficient|double|EXTINCTION COEFFICIENT|/m|9|0|30|/m|9|10
+015030|aerosolContaminationIndex|long|AEROSOL CONTAMINATION INDEX|Numeric|2|-1000|12|Numeric|2|4
+015031|atmosphericPathDelayInSatelliteSignal|double|ATMOSPHERIC PATH DELAY IN SATELLITE SIGNAL|m|4|10000|15|m|4|5
+015032|estimatedErrorInAtmosphericPathDelay|double|ESTIMATED ERROR IN ATMOSPHERIC PATH DELAY|m|4|0|10|m|4|4
+015033|differenceInPathDelaysForLimbViewsAtExtremesOfScan|double|DIFFERENCE IN PATH DELAYS FOR LIMB VIEWS AT EXTREMES OF SCAN|m|5|-10000|15|m|5|5
+015034|estimatedErrorInPathDelayDifference|double|ESTIMATED ERROR IN PATH DELAY DIFFERENCE|m|5|0|14|m|5|5
+015035|componentOfZenithPathDelayDueToWaterVapour|double|COMPONENT OF ZENITH PATH DELAY DUE TO WATER VAPOUR|m|4|0|14|m|4|5
+015036|atmosphericRefractivity|double|ATMOSPHERIC REFRACTIVITY|N units|3|0|19|N units|3|6
+015037|bendingAngle|double|BENDING ANGLE|rad|8|-100000|23|rad|8|7
+015041|sulphurDioxideIndex|long|SULPHUR DIOXIDE INDEX|Numeric|2|-1200|14|Numeric|2|4
+015042|reflectance|double|REFLECTANCE|%|2|0|14|%|2|5
+015045|sulphurDioxide|double|SULPHUR DIOXIDE|DU|2|-2000|15|DU|2|5
+015046|volcanoContaminationIndex|long|VOLCANO CONTAMINATION INDEX|Numeric|2|-1000|11|Numeric|2|4
+015049|aerosolAngstromWavelengthExponent|long|AEROSOL ANGSTROM WAVELENGTH EXPONENT|Numeric|3|-2000|14|Numeric|3|5
+015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6
+015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3
+015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4
+015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween025And25M|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4
+015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3
+015062|aerosolOpticalThickness|long|AEROSOL OPTICAL THICKNESS|Numeric|3|-1000|14|Numeric|3|5
+019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
+019002|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-2|0|12|m|-2|4
+019003|windSpeedThreshold|long|WIND SPEED THRESHOLD|m/s|0|0|8|m/s|0|3
+019004|effectiveRadiusWithRespectToWindSpeedsAboveThreshold|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD|m|-2|0|12|m|-2|4
+019005|featureDirectionOfMotion|long|DIRECTION OF MOTION OF FEATURE|deg|0|0|9|deg|0|3
+019006|speedOfMotionOfFeature|double|SPEED OF MOTION OF FEATURE|m/s|2|0|14|m/s|2|5
+019007|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-3|0|12|m|-3|4
+019008|verticalExtentOfCirculation|table|VERTICAL EXTENT OF CIRCULATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+019009|effectiveRadiusWithRespectToWindSpeedsAboveThresholdLargeStorms|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD (LARGE STORMS)|m|-3|0|12|m|-3|4
+019010|methodForTrackingCentreOfSynopticFeature|table|METHOD FOR TRACKING THE CENTRE OF SYNOPTIC FEATURE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019100|timeIntervalToCalculateMovementOfTropicalCyclone|table|TIME INTERVAL TO CALCULATE THE MOVEMENT OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019101|accuracyOfPositionOfCentreOfTropicalCyclone|table|ACCURACY OF THE POSITION OF THE CENTRE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019102|shapeAndDefinitionOfEyeOfTropicalCyclone|table|SHAPE AND DEFINITION OF THE EYE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|3|CODE TABLE|0|1
+019103|diameterOfMajorAxisOfEyeOfTropicalCyclone|table|DIAMETER OF MAJOR AXIS OF THE EYE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019104|changeInCharacterOfEyeDuring30Minutes|table|CHANGE IN CHARACTER OF THE EYE DURING THE 30 MINUTES|CODE TABLE|0|0|4|CODE TABLE|0|2
+019105|distanceBetweenEndOfSpiralBandAndCentre|table|DISTANCE BETWEEN THE END OF SPIRAL BAND AND THE CENTRE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019106|identificationNumberOfTropicalCyclone|long|IDENTIFICATION NUMBER OF TROPICAL CYCLONE|Numeric|0|0|7|Numeric|0|3
+019107|timeIntervalOverWhichMovementOfTropicalCycloneHasBeenCalculated|table|TIME INTERVAL OVER WHICH THE MOVEMENT OF THE TROPICAL CYCLONE HAS BEEN CALCULATED|CODE TABLE|0|0|4|CODE TABLE|0|2
+019108|accuracyOfGeographicalPositionOfTropicalCyclone|table|ACCURACY OF GEOGRAPHICAL POSITION OF THE TROPICAL CYCLONE|CODE TABLE|0|0|3|CODE TABLE|0|1
+019109|meanDiameterOfOvercastCloudOfTropicalCyclone|table|MEAN DIAMETER OF THE OVERCAST CLOUD OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019110|apparent24HourChangeInIntensityOfTropicalCyclone|table|APPARENT 24-HOUR CHANGE IN INTENSITY OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019111|currentIntensityNumberOfTropicalCyclone|long|CURRENT INTENSITY (CI) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019112|dataTropicalNumberOfTropicalCyclone|long|DATA TROPICAL (DT) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019113|cloudPatternTypeOfDtNumber|table|CLOUD PATTERN TYPE OF THE DT-NUMBER|CODE TABLE|0|0|4|CODE TABLE|0|2
+019114|modelExpectedTropicalNumberOfTropicalCyclone|long|MODEL EXPECTED TROPICAL (MET) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019115|trendOfPast24HourChangeDevelopedWeakened|long|TREND OF THE PAST 24-HOUR CHANGE (+: DEVELOPED, -: WEAKENED)|Numeric|1|-30|6|Numeric|1|2
+019116|patternTropicalNumberOfTropicalCyclone|long|PATTERN TROPICAL (PT) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019117|cloudPictureTypeOfPtNumber|table|CLOUD PICTURE TYPE OF THE PT-NUMBER|CODE TABLE|0|0|3|CODE TABLE|0|1
+019118|finalTropicalNumberOfTropicalCyclone|long|FINAL TROPICAL (T) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019119|finalTNumberType|table|TYPE OF THE FINAL T-NUMBER|CODE TABLE|0|0|3|CODE TABLE|0|1
+019150|typhoonInternationalCommonNumberTyphoonCommittee|string|TYPHOON INTERNATIONAL COMMON NUMBER (TYPHOON COMMITTEE)|CCITT IA5|0|0|32|Character|0|4
+020001|horizontalVisibility|long|HORIZONTAL VISIBILITY|m|-1|0|13|m|-1|4
+020002|verticalVisibility|long|VERTICAL VISIBILITY|m|-1|0|7|m|-1|3
+020003|presentWeather|table|PRESENT WEATHER|CODE TABLE|0|0|9|CODE TABLE|0|3
+020004|pastWeather1|table|PAST WEATHER (1)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020005|pastWeather2|table|PAST WEATHER (2)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020006|flightRules|table|FLIGHT RULES|CODE TABLE|0|0|3|CODE TABLE|0|1
+020008|cloudDistributionForAviation|table|CLOUD DISTRIBUTION FOR AVIATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020009|generalWeatherIndicatorTafOrMetar|table|GENERAL WEATHER INDICATOR (TAF/METAR)|CODE TABLE|0|0|4|CODE TABLE|0|2
+020010|cloudCoverTotal|long|CLOUD COVER (TOTAL)|%|0|0|7|%|0|3
+020011|cloudAmount|table|CLOUD AMOUNT|CODE TABLE|0|0|4|CODE TABLE|0|2
+020012|cloudType|table|CLOUD TYPE|CODE TABLE|0|0|6|CODE TABLE|0|2
+020013|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|m|-1|-40|11|m|-1|4
+020014|heightOfTopOfCloud|long|HEIGHT OF TOP OF CLOUD|m|-1|-40|11|m|-1|4
+020015|pressureAtBaseOfCloud|long|PRESSURE AT BASE OF CLOUD|Pa|-1|0|14|Pa|-1|5
+020016|pressureAtTopOfCloud|long|PRESSURE AT TOP OF CLOUD|Pa|-1|0|14|Pa|-1|5
+020017|cloudTopDescription|table|CLOUD TOP DESCRIPTION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020018|tendencyOfRunwayVisualRange|table|TENDENCY OF RUNWAY VISUAL RANGE|CODE TABLE|0|0|2|CODE TABLE|0|1
+020019|significantWeather|string|SIGNIFICANT PRESENT OR FORECAST WEATHER|CCITT IA5|0|0|72|Character|0|9
+020020|significantRecentWeatherPhenomena|string|SIGNIFICANT RECENT WEATHER PHENOMENA|CCITT IA5|0|0|32|Character|0|4
+020021|precipitationType|flag|TYPE OF PRECIPITATION|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+020022|characterOfPrecipitation|table|CHARACTER OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020023|otherWeatherPhenomena|flag|OTHER WEATHER PHENOMENA|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+020024|intensityOfPhenomena|table|INTENSITY OF PHENOMENA|CODE TABLE|0|0|3|CODE TABLE|0|1
+020025|obscuration|flag|OBSCURATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+020026|characterOfObscuration|table|CHARACTER OF OBSCURATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020027|phenomenaOccurrence|flag|PHENOMENA OCCURRENCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+020028|expectedChangeInIntensity|table|EXPECTED CHANGE IN INTENSITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+020029|rainFlag|table|RAIN FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+020031|iceDepositThickness|double|ICE DEPOSIT (THICKNESS)|m|2|0|7|m|2|3
+020032|rateOfIceAccretionEstimated|table|RATE OF ICE ACCRETION (ESTIMATED)|CODE TABLE|0|0|3|CODE TABLE|0|1
+020033|causeOfIceAccretion|flag|CAUSE OF ICE ACCRETION|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+020034|seaIceConcentration|table|SEA ICE CONCENTRATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020035|amountAndTypeOfIce|table|AMOUNT AND TYPE OF ICE|CODE TABLE|0|0|4|CODE TABLE|0|2
+020036|iceSituation|table|ICE SITUATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020037|iceDevelopment|table|ICE DEVELOPMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+020038|iceEdgeBearing|long|BEARING OF ICE EDGE|deg|0|0|12|deg|0|3
+020039|iceDistance|long|ICE DISTANCE|m|-1|0|13|m|-1|4
+020040|evolutionOfDriftSnow|table|EVOLUTION OF DRIFT SNOW|CODE TABLE|0|0|4|CODE TABLE|0|2
+020041|airframeIcing|table|AIRFRAME ICING|CODE TABLE|0|0|4|CODE TABLE|0|2
+020042|airframeIcingPresent|table|AIRFRAME ICING PRESENT|CODE TABLE|0|0|2|CODE TABLE|0|1
+020043|peakLiquidWaterContent|double|PEAK LIQUID WATER CONTENT|kg m-3|4|0|7|kg m-3|4|2
+020044|averageLiquidWaterContent|double|AVERAGE LIQUID WATER CONTENT|kg m-3|4|0|7|kg m-3|4|2
+020045|supercooledLargeDropletConditions|table|SUPERCOOLED LARGE DROPLET (SLD) CONDITIONS|CODE TABLE|0|0|2|CODE TABLE|0|1
+020048|evolutionOfFeature|table|EVOLUTION OF FEATURE|CODE TABLE|0|0|4|CODE TABLE|0|2
+020050|cloudIndex|table|CLOUD INDEX|CODE TABLE|0|0|8|CODE TABLE|0|3
+020051|amountOfLowClouds|long|AMOUNT OF LOW CLOUDS|%|0|0|7|%|0|3
+020052|amountOfMiddleClouds|long|AMOUNT OF MIDDLE CLOUDS|%|0|0|7|%|0|3
+020053|amountOfHighClouds|long|AMOUNT OF HIGH CLOUDS|%|0|0|7|%|0|3
+020054|trueDirectionFromWhichAPhenomenonOrCloudsAreMovingOrInWhichTheyAreObserved|long|TRUE DIRECTION FROM WHICH A PHENOMENON OR CLOUDS ARE MOVING OR IN WHICH THEY ARE OBSERVED|deg|0|0|9|deg|0|3
+020055|stateOfSkyInTropics|table|STATE OF SKY IN THE TROPICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020056|cloudPhase|table|CLOUD PHASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+020058|visibilitySeawardsFromACoastalStation|long|VISIBILITY SEAWARDS FROM A COASTAL STATION|m|-1|0|13|m|-1|4
+020059|minimumHorizontalVisibility|long|MINIMUM HORIZONTAL VISIBILITY|m|-1|0|9|m|-1|3
+020060|prevailingHorizontalVisibility|long|PREVAILING HORIZONTAL VISIBILITY|m|-1|0|10|m|-1|4
+020061|runwayVisualRangeRvr|long|RUNWAY VISUAL RANGE (RVR)|m|0|0|12|m|0|4
+020062|stateOfGround|table|STATE OF THE GROUND (WITH OR WITHOUT SNOW)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020063|specialPhenomena|table|SPECIAL PHENOMENA|CODE TABLE|0|0|10|CODE TABLE|0|4
+020065|snowCover|long|SNOW COVER|%|0|0|7|%|0|3
+020066|maximumDiameterOfHailstones|double|MAXIMUM DIAMETER OF HAILSTONES|m|3|0|8|m|3|3
+020067|diameterOfDeposit|double|DIAMETER OF DEPOSIT|m|3|0|9|m|3|3
+020070|minimumNumberOfAtmospherics|long|MINIMUM NUMBER OF ATMOSPHERICS|Numeric|0|0|7|Numeric|0|3
+020071|accuracyOfFixAndRateOfAtmospherics|table|ACCURACY OF FIX AND RATE OF ATMOSPHERICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020081|cloudAmountInSegment|long|CLOUD AMOUNT IN SEGMENT|%|0|0|7|%|0|3
+020082|amountSegmentCloudFree|long|AMOUNT SEGMENT CLOUD FREE|%|0|0|7|%|0|3
+020083|amountOfSegmentCoveredByScene|long|AMOUNT OF SEGMENT COVERED BY SCENE|%|0|0|7|%|0|3
+020085|generalConditionOfRunway|table|GENERAL CONDITION OF RUNWAY|CODE TABLE|0|0|4|CODE TABLE|0|1
+020086|runwayDeposits|table|RUNWAY DEPOSITS|CODE TABLE|0|0|4|CODE TABLE|0|1
+020087|runwayContamination|table|RUNWAY CONTAMINATION|CODE TABLE|0|0|4|CODE TABLE|0|1
+020088|depthOfRunwayDeposits|double|DEPTH OF RUNWAY DEPOSITS|m|3|0|12|m|0|4
+020089|runwayFrictionCoefficient|table|RUNWAY FRICTION COEFFICIENT|CODE TABLE|0|0|7|CODE TABLE|0|2
+020090|specialClouds|table|SPECIAL CLOUDS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020091|verticalVisibility|long|VERTICAL VISIBILITY|ft|-2|0|10|ft|-2|3
+020092|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|ft|-2|0|10|ft|-2|3
+020093|heightOfInversion|long|HEIGHT OF INVERSION|m|-1|0|8|m|-1|3
+020095|iceProbability|long|ICE PROBABILITY|Numeric|3|0|10|Numeric|3|4
+020096|iceAgeAParameter|double|ICE AGE (A PARAMETER)|dB|2|-4096|13|dB|2|4
+020101|locustAcridianName|table|LOCUST (ACRIDIAN) NAME|CODE TABLE|0|0|4|CODE TABLE|0|2
+020102|locustMaturityColour|table|LOCUST (MATURITY) COLOUR|CODE TABLE|0|0|4|CODE TABLE|0|2
+020103|stageOfDevelopmentOfLocusts|table|STAGE OF DEVELOPMENT OF LOCUSTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020104|organizationStateOfSwarm|table|ORGANIZATION STATE OF SWARM OR BAND OF LOCUSTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020105|sizeOfSwarmOrBandOfLocustsAndDurationOfPassageOfSwarm|table|SIZE OF SWARM OR BAND OF LOCUSTS AND DURATION OF PASSAGE OF SWARM|CODE TABLE|0|0|4|CODE TABLE|0|2
+020106|locustPopulationDensity|table|LOCUST POPULATION DENSITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+020107|directionOfMovementsOfLocustSwarm|table|DIRECTION OF MOVEMENTS OF LOCUST SWARM|CODE TABLE|0|0|4|CODE TABLE|0|2
+020108|extentOfVegetation|table|EXTENT OF VEGETATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020111|xAxisErrorEllipseMajorComponent|long|X-AXIS ERROR ELLIPSE MAJOR COMPONENT|m|-1|0|17|m|-1|6
+020112|yAxisErrorEllipseMinorComponent|long|Y-AXIS ERROR ELLIPSE MINOR COMPONENT|m|-1|0|17|m|-1|6
+020113|zAxisErrorEllipseComponent|long|Z-AXIS ERROR ELLIPSE COMPONENT|m|-1|0|17|m|-1|6
+020114|angleOfXAxisInErrorEllipse|double|ANGLE OF X-AXIS IN ERROR ELLIPSE|deg|2|-18000|16|deg|2|5
+020115|angleOfZAxisInErrorEllipse|double|ANGLE OF Z-AXIS IN ERROR ELLIPSE|deg|2|-18000|16|deg|2|5
+020116|emissionHeightOfCloudStroke|long|EMISSION HEIGHT OF CLOUD STROKE|m|0|0|16|m|0|5
+020117|amplitudeOfLightningStrike|long|AMPLITUDE OF LIGHTNING STRIKE|A|-1|-32000|16|A|-1|5
+020118|lightningDetectionError|long|LIGHTNING DETECTION ERROR|m|0|0|19|m|0|6
+020119|lightningDischargePolarity|table|LIGHTNING DISCHARGE POLARITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+020121|thresholdValueForPolarityDecision|double|THRESHOLD VALUE FOR POLARITY DECISION|V|3|0|16|V|3|5
+020122|thresholdValueForPolarityDecision|long|THRESHOLD VALUE FOR POLARITY DECISION|A|0|0|16|A|0|5
+020123|minimumDirectionThreshold|double|MINIMUM THRESHOLD FOR DETECTION|V/m|3|0|16|V/m|3|5
+020124|lightningStrokeOrFlash|table|LIGHTNING STROKE OR FLASH|CODE TABLE|0|0|2|CODE TABLE|0|1
+020126|lightningRateOfDischarge|long|LIGHTNING RATE OF DISCHARGE|/h|0|0|23|/h|0|7
+020127|lightningDistanceFromStation|long|LIGHTNING - DISTANCE FROM STATION|m|-3|0|8|m|-3|3
+020128|lightningDirectionFromStation|double|LIGHTNING - DIRECTION FROM STATION|deg|1|0|12|deg|1|4
+020130|cloudHydrometeorConcentration|long|CLOUD HYDROMETEOR CONCENTRATION|Numeric|0|0|10|Numeric|0|3
+020131|effectiveRadiusOfCloudHydrometeors|double|EFFECTIVE RADIUS OF CLOUD HYDROMETEORS|m|5|0|6|m|5|2
+020132|cloudLiquidWaterContent|double|CLOUD LIQUID WATER CONTENT|kg m-3|5|0|11|kg m-3|5|4
+020133|hydrometeorRadius|double|HYDROMETEOR RADIUS|m|5|0|6|m|5|2
+020135|iceMassOnARod|double|ICE MASS (ON A ROD)|kg/m|1|0|10|kg/m|1|3
+020136|supplementaryCloudType|table|SUPPLEMENTARY CLOUD TYPE|CODE TABLE|0|0|9|CODE TABLE|0|3
+020137|evolutionOfClouds|table|EVOLUTION OF CLOUDS|CODE TABLE|0|0|4|CODE TABLE|0|2
+021001|horizontalReflectivity|long|HORIZONTAL REFLECTIVITY|dB|0|-64|7|dB|0|3
+021002|verticalReflectivity|long|VERTICAL REFLECTIVITY|dB|0|-64|7|dB|0|3
+021003|differentialReflectivity|double|DIFFERENTIAL REFLECTIVITY|dB|1|-5|7|dB|1|3
+021004|differentialReflectivity|double|DIFFERENTIAL REFLECTIVITY|dB|2|-800|11|dB|2|4
+021005|linearDepolarizationRatio|long|LINEAR DEPOLARIZATION RATIO|dB|0|-65|6|dB|0|2
+021006|circularDepolarizationRatio|long|CIRCULAR DEPOLARIZATION RATIO|dB|0|-65|6|dB|0|2
+021011|dopplerMeanVelocityXDirection|long|DOPPLER MEAN VELOCITY IN X-DIRECTION|m/s|0|-128|8|m/s|0|3
+021012|dopplerMeanVelocityYDirection|long|DOPPLER MEAN VELOCITY IN Y-DIRECTION|m/s|0|-128|8|m/s|0|3
+021013|dopplerMeanVelocityZDirection|long|DOPPLER MEAN VELOCITY IN Z-DIRECTION|m/s|0|-128|8|m/s|0|3
+021014|dopplerMeanVelocityRadial|double|DOPPLER MEAN VELOCITY (RADIAL)|m/s|1|-4096|13|m/s|1|4
+021017|dopplerVelocitySpectralWidth|double|DOPPLER VELOCITY SPECTRAL WIDTH|m/s|1|0|8|m/s|1|3
+021018|extendedNyquistVelocity|double|EXTENDED NYQUIST VELOCITY|m/s|1|0|10|m/s|1|4
+021019|highNyquistVelocity|double|HIGH NYQUIST VELOCITY|m/s|1|0|10|m/s|1|3
+021021|echoTops|long|ECHO TOPS|m|-3|0|4|m|-3|2
+021022|rangeBinOffset|double|RANGE BIN OFFSET|m|1|0|14|m|1|5
+021023|rangeBinSize|long|RANGE BIN SIZE|m|0|0|14|m|0|5
+021024|azimuthOffset|double|AZIMUTH OFFSET|deg|1|0|12|deg|1|4
+021025|azimuthalResolution|double|AZIMUTHAL RESOLUTION|deg|1|0|8|deg|1|3
+021028|differentialPhase|double|DIFFERENTIAL PHASE|deg|1|0|12|deg|1|4
+021029|crossPolarizationCorrelationCoefficient|long|CROSS-POLARIZATION CORRELATION COEFFICIENT|Numeric|2|-100|8|Numeric|2|3
+021030|signalToNoiseRatio|long|SIGNAL TO NOISE RATIO|dB|0|-32|8|dB|0|3
+021031|verticallyIntegratedLiquidWaterContent|long|VERTICALLY INTEGRATED LIQUID-WATER CONTENT|kg m-2|0|0|7|kg m-2|0|3
+021036|radarRainfallIntensity|double|RADAR RAINFALL INTENSITY|m/s|7|0|12|m/s|7|4
+021041|brightBandHeight|long|BRIGHT-BAND HEIGHT|m|-2|0|8|m|-2|3
+021051|signalPowerAbove1Mw|long|SIGNAL POWER ABOVE 1 MW|dB|0|-256|8|dB|0|3
+021062|backscatter|double|BACKSCATTER|dB|2|-5000|13|dB|2|4
+021063|radiometricResolutionNoiseValue|double|RADIOMETRIC RESOLUTION (NOISE VALUE)|%|1|0|10|%|1|4
+021064|clutterNoiseEstimate|long|CLUTTER NOISE ESTIMATE|Numeric|0|0|8|Numeric|0|3
+021065|missingPacketCounter|long|MISSING PACKET COUNTER|Numeric|0|-127|8|Numeric|0|3
+021066|waveScatterometerProductConfidenceData|flag|WAVE SCATTEROMETER PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+021067|windProductConfidenceData|flag|WIND PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|13|FLAG TABLE|0|5
+021068|radarAltimeterProductConfidenceData|flag|RADAR ALTIMETER PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+021069|sstProductConfidenceData|flag|SST PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|10|FLAG TABLE|0|4
+021070|sstProductConfidenceDataSadist2|flag|SST PRODUCT CONFIDENCE DATA (SADIST-2)|FLAG TABLE|0|0|23|FLAG TABLE|0|6
+021071|peakiness|long|PEAKINESS|Numeric|0|0|16|Numeric|0|5
+021072|satelliteAltimeterCalibrationStatus|flag|SATELLITE ALTIMETER CALIBRATION STATUS|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+021073|satelliteAltimeterInstrumentMode|flag|SATELLITE ALTIMETER INSTRUMENT MODE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+021075|imageSpectrumIntensity|long|IMAGE SPECTRUM INTENSITY|Numeric|0|0|8|Numeric|0|3
+021076|representationOfIntensities|table|REPRESENTATION OF INTENSITIES|CODE TABLE|0|0|3|CODE TABLE|0|1
+021077|altitudeCorrectionIonosphere|double|ALTITUDE CORRECTION (IONOSPHERE)|m|3|0|14|m|3|5
+021078|altitudeCorrectionDryTroposphere|double|ALTITUDE CORRECTION (DRY TROPOSPHERE)|m|3|0|9|m|3|3
+021079|altitudeCorrectionWetTroposphere|double|ALTITUDE CORRECTION (WET TROPOSPHERE)|m|3|2000|10|m|3|4
+021080|altitudeCorrectionCalibrationConstant|double|ALTITUDE CORRECTION (CALIBRATION CONSTANT)|m|3|0|11|m|3|4
+021081|openLoopCorrectionHeightTimeLoop|double|OPEN LOOP CORRECTION (HEIGHT-TIME LOOP)|m|3|0|10|m|3|4
+021082|openLoopCorrectionAutoGainControl|double|OPEN LOOP CORRECTION (AUTO GAIN CONTROL)|dB|3|-3000|14|dB|3|5
+021083|warmTargetCalibration|long|WARM TARGET CALIBRATION|Numeric|0|0|16|Numeric|0|5
+021084|coldTargetCalibration|long|COLD TARGET CALIBRATION|Numeric|0|0|16|Numeric|0|5
+021085|atsrSeaSurfaceTemperatureAcrossTrackBandNumber|long|ATSR SEA-SURFACE TEMPERATURE ACROSS-TRACK BAND NUMBER|Numeric|0|0|4|Numeric|0|2
+021086|numberOfPixelsInNadirOnlyAverage|long|NUMBER OF PIXELS IN NADIR ONLY, AVERAGE|Numeric|0|0|9|Numeric|0|3
+021087|numberOfPixelsInDualViewAverage|long|NUMBER OF PIXELS IN DUAL VIEW, AVERAGE|Numeric|0|0|9|Numeric|0|3
+021088|wetBackscatter|double|WET BACKSCATTER|dB|2|-5000|13|dB|2|4
+021091|radarSignalDopplerSpectrum0thMoment|long|RADAR SIGNAL DOPPLER SPECTRUM 0TH MOMENT|dB|0|-100|8|dB|0|3
+021092|rassSignalDopplerSpectrum0thMomentReferringToRassSignal|long|RASS SIGNAL DOPPLER SPECTRUM 0TH MOMENT, REFERRING TO RASS SIGNAL|dB|0|-100|8|dB|0|3
+021093|kuBandPeakiness|long|KU BAND PEAKINESS|Numeric|3|0|16|Numeric|3|5
+021094|sBandPeakiness|long|S BAND PEAKINESS|Numeric|3|0|16|Numeric|3|5
+021101|numberOfVectorAmbiguities|long|NUMBER OF VECTOR AMBIGUITIES|Numeric|0|0|3|Numeric|0|1
+021102|indexOfSelectedWindVector|long|INDEX OF SELECTED WIND VECTOR|Numeric|0|0|3|Numeric|0|1
+021103|totalNumberOfSigma0Measurements|long|TOTAL NUMBER OF SIGMA-0 MEASUREMENTS|Numeric|0|0|5|Numeric|0|2
+021104|likelihoodComputedForSolution|long|LIKELIHOOD COMPUTED FOR SOLUTION|Numeric|3|-30000|15|Numeric|3|5
+021105|normalizedRadarCrossSection|double|NORMALIZED RADAR CROSS-SECTION|dB|2|-10000|14|dB|2|5
+021106|kpVarianceCoefficientAlpha|long|KP VARIANCE COEFFICIENT (ALPHA)|Numeric|3|0|14|Numeric|3|5
+021107|kpVarianceCoefficientBeta|long|KP VARIANCE COEFFICIENT (BETA)|Numeric|8|0|16|Numeric|8|5
+021109|seawindsWindVectorCellQuality|flag|SEAWINDS WIND VECTOR CELL QUALITY|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021110|numberOfInnerBeamSigma0ForwardOfSatellite|long|NUMBER OF INNER-BEAM SIGMA-0 (FORWARD OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021111|numberOfOuterBeamSigma0ForwardOfSatellite|long|NUMBER OF OUTER-BEAM SIGMA-0 (FORWARD OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021112|numberOfInnerBeamSigma0AftOfSatellite|long|NUMBER OF INNER-BEAM SIGMA-0 (AFT OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021113|numberOfOuterBeamSigma0AftOfSatellite|long|NUMBER OF OUTER-BEAM SIGMA-0 (AFT OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021114|kpVarianceCoefficientGamma|double|KP VARIANCE COEFFICIENT (GAMMA)|dB|3|-140000|18|dB|3|6
+021115|seawindsSigma0Quality|flag|SEAWINDS SIGMA-0 QUALITY|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021116|seawindsSigma0Mode|flag|SEAWINDS SIGMA-0 MODE|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021117|sigma0VarianceQualityControl|long|SIGMA-0 VARIANCE QUALITY CONTROL|Numeric|2|0|16|Numeric|2|5
+021118|attenuationCorrectionOnSigma0|double|ATTENUATION CORRECTION ON SIGMA-0|dB|2|-10000|14|dB|2|5
+021119|windScatterometerGeophysicalModelFunction|table|WIND SCATTEROMETER GEOPHYSICAL MODEL FUNCTION|CODE TABLE|0|0|6|CODE TABLE|0|2
+021120|probabilityOfRain|long|PROBABILITY OF RAIN|Numeric|3|0|10|Numeric|3|4
+021121|seawindsNofRainIndex|long|SEAWINDS NOF* RAIN INDEX|Numeric|0|0|8|Numeric|0|3
+021122|attenuationCorrectionOnSigma0FromTb|double|ATTENUATION CORRECTION ON SIGMA-0 (FROM TB)|dB|2|-10000|14|dB|2|5
+021123|seawindsNormalizedRadarCrossSection|double|SEAWINDS NORMALIZED RADAR CROSS-SECTION|dB|2|-30000|15|dB|2|5
+021128|numberOfValidPointsPerSecondUsedToDerivePreviousParameters|long|NUMBER OF VALID POINTS PER SECOND USED TO DERIVE PREVIOUS PARAMETERS|Numeric|0|0|8|Numeric|0|3
+021130|spectrumTotalEnergy|long|SPECTRUM TOTAL ENERGY|Numeric|6|0|28|Numeric|6|9
+021131|spectrumMaxEnergy|long|SPECTRUM MAX ENERGY|Numeric|6|0|28|Numeric|6|9
+021132|directionOfSpectrumMaxOnHigherResolutionGrid|double|DIRECTION OF SPECTRUM MAX ON HIGHER RESOLUTION GRID|deg|3|0|19|deg|3|6
+021133|wavelengthOfSpectrumMaxOnHigherResolutionGrid|double|WAVELENGTH OF SPECTRUM MAX ON HIGHER RESOLUTION GRID|m|3|0|29|m|3|9
+021134|rangeResolutionOfCressCovarianceSpectrum|double|RANGE RESOLUTION OF CRESS COVARIANCE SPECTRUM|rad/m|3|0|19|rad/m|3|6
+021135|realPartOfCrossSpectraPolarGridNumberOfBins|long|REAL PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS|Numeric|3|-524288|20|Numeric|3|7
+021136|imaginaryPartOfCrossSpectraPolarGridNumberOfBins|long|IMAGINARY PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS|Numeric|3|-524288|20|Numeric|3|7
+021137|kuBandCorrectedOceanBackscatterCoefficient|double|KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021138|stdKuBandCorrectedOceanBackscatterCoefficient|double|STD KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021139|kuBandNetInstrumentalCorrectionForAgc|double|KU BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|dB|2|4
+021140|sBandCorrectedOceanBackscatterCoefficient|double|S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021141|stdSBandCorrectedOceanBackscatterCoefficient|double|STD S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021142|sBandNetInstrumentalCorrectionForAgc|double|S BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-1024|11|dB|2|4
+021143|kuBandRainAttenuation|double|KU BAND RAIN ATTENUATION|dB|2|-1073741824|31|dB|2|10
+021144|altimeterRainFlag|flag|ALTIMETER RAIN FLAG|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+021145|kuBandAutomaticGainControl|double|KU BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|dB|2|4
+021146|rmsKuBandAutomaticGainControl|double|RMS KU BAND AUTOMATIC GAIN CONTROL|dB|2|0|8|dB|2|3
+021147|numberOfValidPointsForKuBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR KU BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|5|Numeric|0|2
+021148|trailingEdgeVariationFlag|flag|TRAILING EDGE VARIATION FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+021150|beamCollocation|table|BEAM CO-LOCATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+021151|estimatedErrorInSigma0At40DegreesIncidenceAngle|double|ESTIMATED ERROR IN SIGMA-0 AT 40 DEGREES INCIDENCE ANGLE|dB|2|0|9|dB|2|3
+021152|slopeAt40DegreesIncidenceAngle|double|SLOPE AT 40 DEGREES INCIDENCE ANGLE|dB/deg|2|-80|7|dB/deg|2|2
+021153|estimatedErrorInSlopeAt40DegreesIncidenceAngle|double|ESTIMATED ERROR IN SLOPE AT 40 DEGREES INCIDENCE ANGLE|dB/deg|2|-40|6|dB/deg|2|2
+021154|soilMoistureSensitivity|double|SOIL MOISTURE SENSITIVITY|dB|2|0|12|dB|2|4
+021155|windVectorCellQuality|flag|WIND VECTOR CELL QUALITY|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+021156|backscatterDistance|long|BACKSCATTER DISTANCE|Numeric|1|-4096|13|Numeric|1|4
+021157|lossPerUnitLengthOfAtmosphere|double|LOSS PER UNIT LENGTH OF ATMOSPHERE USED|dB/m|10|0|22|dB/m|10|7
+021158|ascatKpEstimateQuality|table|ASCAT KP ESTIMATE QUALITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+021159|ascatSigma0Usability|table|ASCAT SIGMA-0 USABILITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+021160|ascatUseOfSyntheticData|long|ASCAT USE OF SYNTHETIC DATA|Numeric|3|0|10|Numeric|3|4
+021161|ascatSyntheticDataQuantity|long|ASCAT SYNTHETIC DATA QUANTITY|Numeric|3|0|10|Numeric|3|4
+021162|ascatSatelliteOrbitAndAttitudeQuality|long|ASCAT SATELLITE ORBIT AND ATTITUDE QUALITY|Numeric|3|0|10|Numeric|3|4
+021163|ascatSolarArrayReflectionContamination|long|ASCAT SOLAR ARRAY REFLECTION CONTAMINATION|Numeric|3|0|10|Numeric|3|4
+021164|ascatTelemetryPresenceAndQuality|long|ASCAT TELEMETRY PRESENCE AND QUALITY|Numeric|3|0|10|Numeric|3|4
+021165|ascatExtrapolatedReferenceFunctionPresence|long|ASCAT EXTRAPOLATED REFERENCE FUNCTION PRESENCE|Numeric|3|0|10|Numeric|3|4
+021166|landFraction|long|LAND FRACTION|Numeric|3|0|10|Numeric|3|4
+021169|icePresenceIndicator|table|ICE PRESENCE INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+021170|cBandCorrectedOceanBackscatterCoefficient|double|C BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021171|rmsCBandCorrectedOceanBackscatterCoefficient|double|RMS C BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021172|cBandNetInstrumentalCorrectionForAgc|double|C BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|dB|2|4
+021173|cBandAutomaticGainControl|double|C BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|dB|2|4
+021174|rmsCBandAutomaticGainControl|double|RMS C BAND AUTOMATIC GAIN CONTROL|dB|2|0|9|dB|2|3
+021175|numberOfValidPointsForCBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR C BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|10|Numeric|0|4
+021176|highFrequencyVariabilityCorrection|double|HIGH FREQUENCY VARIABILITY CORRECTION|m|3|0|16|m|3|5
+021177|correctedOcogBackscatterCoefficient|double|CORRECTED OCOG* BACKSCATTER COEFFICIENT|dB|2|0|16|dB|2|5
+021178|stdOf20HzOcogBackscatterCoefficient|double|STD OF 20 HZ OCOG BACKSCATTER COEFFICIENT|dB|2|0|16|dB|2|5
+021179|numberOf20HzValidPointsForOcogBackscatterCoefficient|long|NUMBER OF 20 HZ VALID POINTS FOR OCOG BACKSCATTER COEFFICIENT|Numeric|0|0|16|Numeric|0|5
+021180|numberOf20HzValidPointsForOceanBackscatterCoefficient|long|NUMBER OF 20 HZ VALID POINTS FOR OCEAN BACKSCATTER COEFFICIENT|Numeric|0|0|8|Numeric|0|3
+021181|20HzOceanBackscatterCoefficient|double|20 HZ OCEAN BACKSCATTER COEFFICIENT|dB|2|0|16|dB|2|5
+021182|20HzKuBandPeakiness|long|20 HZ KU BAND PEAKINESS|Numeric|3|0|16|Numeric|3|5
+021183|specificBandCorrectedOceanBackscatterCoefficient|double|SPECIFIC BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021184|stdSpecificBandCorrectedOceanBackscatterCoefficient|double|STD SPECIFIC BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021185|specificBandNetInstrumentalCorrectionForAgc|double|SPECIFIC BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|dB|2|4
+021186|specificBandAutomaticGainControl|double|SPECIFIC BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|dB|2|4
+021187|rmsSpecificBandAutomaticGainControl|double|RMS SPECIFIC BAND AUTOMATIC GAIN CONTROL|dB|2|0|8|dB|2|3
+021188|numberOfValidPointsForSpecificBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR SPECIFIC BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|7|Numeric|0|3
+022001|wavesDirection|long|DIRECTION OF WAVES|deg|0|0|9|deg|0|3
+022002|windWavesDirection|long|DIRECTION OF WIND WAVES|deg|0|0|9|deg|0|3
+022003|swellWavesDirection|long|DIRECTION OF SWELL WAVES|deg|0|0|9|deg|0|3
+022004|currentDirection|long|DIRECTION OF CURRENT|deg|0|0|9|deg|0|3
+022005|seaSurfaceCurrentDirection|long|DIRECTION OF SEA-SURFACE CURRENT|deg|0|0|9|deg|0|3
+022011|periodOfWaves|long|PERIOD OF WAVES|s|0|0|6|s|0|2
+022012|periodOfWindWaves|long|PERIOD OF WIND WAVES|s|0|0|6|s|0|2
+022013|periodOfSwellWaves|long|PERIOD OF SWELL WAVES|s|0|0|6|s|0|2
+022021|heightOfWaves|double|HEIGHT OF WAVES|m|1|0|10|m|1|4
+022022|heightOfWindWaves|double|HEIGHT OF WIND WAVES|m|1|0|10|m|1|4
+022023|heightOfSwellWaves|double|HEIGHT OF SWELL WAVES|m|1|0|10|m|1|4
+022025|standardDeviationWaveHeight|double|STANDARD DEVIATION WAVE HEIGHT|m|2|0|10|m|2|4
+022026|standardDeviationOfSignificantWaveHeight|double|STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT|m|2|0|10|m|2|4
+022031|speedOfCurrent|double|SPEED OF CURRENT|m/s|2|0|13|m/s|2|4
+022032|speedOfSeaSurfaceCurrent|double|SPEED OF SEA-SURFACE CURRENT|m/s|2|0|13|m/s|2|4
+022035|tidalElevationWithRespectToLocalChartDatum|double|TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM|m|2|0|14|m|2|4
+022036|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|2|0|14|m|2|4
+022037|tidalElevationWithRespectToNationalLandDatum|double|TIDAL ELEVATION WITH RESPECT TO NATIONAL LAND DATUM|m|3|-10000|15|m|3|5
+022038|tidalElevationWithRespectToLocalChartDatum|double|TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM|m|3|-10000|15|m|3|5
+022039|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|3|-5000|13|m|3|4
+022040|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|3|-5000|14|m|3|5
+022041|seaSurfaceTemperature15DayRunningMean|double|SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN)|K|1|0|12|K|1|4
+022042|waterTemperature|double|SEA/WATER TEMPERATURE|K|1|0|12|K|1|4
+022043|waterTemperature|double|SEA/WATER TEMPERATURE|K|2|0|15|K|2|5
+022044|soundVelocity|double|SOUND VELOCITY|m/s|1|0|14|m/s|1|5
+022045|waterTemperature|double|SEA/WATER TEMPERATURE|K|3|0|19|K|3|6
+022046|seaIceFraction|long|SEA ICE FRACTION|Numeric|2|0|7|Numeric|2|3
+022049|seaSurfaceTemperature|double|SEA-SURFACE TEMPERATURE|K|2|0|15|K|2|5
+022050|standardDeviationSeaSurfaceTemperature|double|STANDARD DEVIATION SEA-SURFACE TEMPERATURE|K|2|0|8|K|2|3
+022055|floatCycleNumber|long|FLOAT CYCLE NUMBER|Numeric|0|0|10|Numeric|0|3
+022056|directionOfProfile|table|DIRECTION OF PROFILE|CODE TABLE|0|0|2|CODE TABLE|0|1
+022059|seaSurfaceSalinity|double|SEA-SURFACE SALINITY|0/00|2|0|14|0/00|2|5
+022060|lagrangianDrifterDrogueStatus|table|LAGRANGIAN DRIFTER DROGUE STATUS|CODE TABLE|0|0|3|CODE TABLE|0|1
+022061|seaState|table|STATE OF THE SEA|CODE TABLE|0|0|4|CODE TABLE|0|2
+022062|salinity|double|SALINITY|0/00|2|0|14|0/00|2|5
+022063|totalWaterDepth|long|TOTAL WATER DEPTH|m|0|0|14|m|0|5
+022064|salinity|double|SALINITY|0/00|3|0|17|0/00|3|6
+022065|waterPressure|long|WATER PRESSURE|Pa|-3|0|17|Pa|-3|6
+022066|waterConductivity|double|WATER CONDUCTIVITY|S/m|6|0|26|S/m|6|8
+022067|instrumentTypeForWaterTemperatureOrSalinityProfileMeasurement|table|INSTRUMENT TYPE FOR WATER TEMPERATURE/SALINITY PROFILE MEASUREMENT|CODE TABLE|0|0|10|CODE TABLE|0|4
+022068|waterTemperatureProfileRecorderTypes|table|WATER TEMPERATURE PROFILE RECORDER TYPES|CODE TABLE|0|0|7|CODE TABLE|0|3
+022069|spectralWaveDensity|double|SPECTRAL WAVE DENSITY|m2/Hz|3|0|22|m2/Hz|3|7
+022070|significantWaveHeight|double|SIGNIFICANT WAVE HEIGHT|m|2|0|13|m|2|4
+022071|spectralPeakWavePeriod|double|SPECTRAL PEAK WAVE PERIOD|s|1|0|9|s|1|3
+022072|spectralPeakWaveLength|long|SPECTRAL PEAK WAVE LENGTH|m|0|0|13|m|0|4
+022073|maximumWaveHeight|double|MAXIMUM WAVE HEIGHT|m|2|0|13|m|2|4
+022074|averageWavePeriod|double|AVERAGE WAVE PERIOD|s|1|0|9|s|1|3
+022075|averageWaveLength|long|AVERAGE WAVE LENGTH|m|0|0|13|m|0|4
+022076|directionFromWhichDominantWavesAreComing|long|DIRECTION FROM WHICH DOMINANT WAVES ARE COMING|deg|0|0|9|deg|0|3
+022077|directionalSpreadOfDominantWave|long|DIRECTIONAL SPREAD OF DOMINANT WAVE|deg|0|0|9|deg|0|3
+022078|durationOfWaveRecord|long|DURATION OF WAVE RECORD|s|0|0|12|s|0|4
+022079|lengthOfWaveRecord|long|LENGTH OF WAVE RECORD|m|0|0|16|m|0|5
+022080|wavebandCentralFrequency|double|WAVEBAND CENTRAL FREQUENCY|Hz|3|0|10|Hz|3|4
+022081|wavebandCentralWaveNumber|double|WAVEBAND CENTRAL WAVE NUMBER|/m|5|0|13|/m|5|4
+022082|maximumNonDirectionalSpectralWaveDensity|double|MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY|m2 s|2|0|20|m2 s|2|7
+022083|maximumNonDirectionalSpectralWaveNumber|double|MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE NUMBER|m3|2|0|20|m3|2|7
+022084|bandContainingMaximumNonDirectionalSpectralWaveDensity|long|BAND CONTAINING MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY|Numeric|0|0|7|Numeric|0|3
+022085|spectralWaveDensityRatio|long|SPECTRAL WAVE DENSITY RATIO|Numeric|0|0|7|Numeric|0|3
+022086|meanDirectionFromWhichWavesAreComing|long|MEAN DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3
+022087|principalDirectionFromWhichWavesAreComing|long|PRINCIPAL DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3
+022088|firstNormalizedPolarCoordinateFromFourierCoefficients|long|FIRST NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS|Numeric|2|0|7|Numeric|2|3
+022089|secondNormalizedPolarCoordinateFromFourierCoefficients|long|SECOND NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS|Numeric|2|0|7|Numeric|2|3
+022090|nonDirectionalSpectralEstimateByWaveFrequency|double|NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY|m2 s|2|0|20|m2 s|2|7
+022091|nonDirectionalSpectralEstimateByWaveNumber|double|NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER|m3|2|0|20|m3|2|7
+022092|directionalSpectralEstimateByWaveFrequency|double|DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY|m2 rad-1 s|2|0|20|m2 rad-1 s|2|7
+022093|directionalSpectralEstimateByWaveNumber|double|DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER|m4|2|0|20|m4|2|7
+022094|totalNumberOfWaveBands|long|TOTAL NUMBER OF WAVE BANDS|Numeric|0|0|7|Numeric|0|3
+022095|directionalSpreadOfIndividualWaves|long|DIRECTIONAL SPREAD OF INDIVIDUAL WAVES|deg|0|0|8|deg|0|3
+022096|spectralBandWidth|double|SPECTRAL BAND WIDTH|/s|3|0|4|/s|3|2
+022097|meanWavelength731MOfImageSpectrumAtLowWaveNumbers|long|MEAN WAVELENGTH > 731 M OF IMAGE SPECTRUM AT LOW WAVE NUMBERS|m|0|0|14|m|0|5
+022098|wavelengthSpreadWavelength731MAtLowWaveNumbers|long|WAVELENGTH SPREAD (WAVELENGTH > 731 M) AT LOW WAVE NUMBERS|m|0|0|14|m|0|5
+022099|meanDirectionAtLowWaveNumbersWavelength731M|long|MEAN DIRECTION AT LOW WAVE NUMBERS (WAVELENGTH > 731 M)|deg|0|0|9|deg|0|3
+022100|directionSpreadAtLowWaveNumbersWavelength731M|long|DIRECTION SPREAD AT LOW WAVE NUMBERS (WAVELENGTH > 731 M)|deg|0|0|9|deg|0|3
+022101|totalEnergyWavelength731mAtLowWaveNumbers|long|TOTAL ENERGY (WAVELENGTH > 731M) AT LOW WAVE NUMBERS|Numeric|0|0|31|Numeric|0|10
+022120|tideStationAutomatedWaterLevelCheck|table|TIDE STATION AUTOMATED WATER LEVEL CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022121|tideStationManualWaterLevelCheck|table|TIDE STATION MANUAL WATER LEVEL CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022122|automatedMeteorologicalDataCheck|table|TIDE STATION AUTOMATED METEOROLOGICAL DATA CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022123|tideStationManualMeteorologicalDataCheck|table|TIDE STATION MANUAL METEOROLOGICAL DATA CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022130|numberOfValidPointsForSpecificBand|long|NUMBER OF VALID POINTS FOR SPECIFIC BAND|Numeric|0|0|10|Numeric|0|4
+022131|rmsSpecificBandSignificantWaveHeight|double|RMS SPECIFIC BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022132|numberOfValidPointsForSpecificBandSignificantWaveHeight|long|NUMBER OF VALID POINTS FOR SPECIFIC BAND SIGNIFICANT WAVE HEIGHT|Numeric|0|0|10|Numeric|0|4
+022133|specificBandNetInstrumentCorrectionForSignificantWaveHeight|double|SPECIFIC BAND NET INSTRUMENT CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|m|3|4
+022134|numberOfValidPointsForSpecificBandBackscatter|long|NUMBER OF VALID POINTS FOR SPECIFIC BAND BACKSCATTER|Numeric|0|0|10|Numeric|0|4
+022141|seaSurfaceTemperature15DayRunningMean|double|SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN)|K|2|0|15|K|2|5
+022142|squareOfSignificantWaveHeight|double|SQUARE OF SIGNIFICANT WAVE HEIGHT|m2|3|-33554432|26|m2|3|8
+022143|stdOf20HzSwhSquared|double|STD OF 20 HZ SWH SQUARED|m2|3|-8388608|24|m2|3|8
+022144|numberOf20HzValidPointsForSwhSquared|long|NUMBER OF 20 HZ VALID POINTS FOR SWH SQUARED|Numeric|0|0|9|Numeric|0|3
+022145|stdOf20HzOceanRange|double|STD OF 20 HZ OCEAN RANGE|m|3|-33554432|31|m|3|10
+022146|ocogRange|double|OCOG RANGE|m|3|0|31|m|3|10
+022147|stdOf20HzOcogRange|double|STD OF 20 HZ OCOG RANGE|m|3|-8388608|31|m|3|10
+022148|numberOf20HzValidPointsForOceanRange|long|NUMBER OF 20 HZ VALID POINTS FOR OCEAN RANGE|Numeric|0|0|9|Numeric|0|3
+022149|20HzSignificantWaveHeightSquared|double|20 HZ SIGNIFICANT WAVE HEIGHT SQUARED|m2|3|-33554432|26|m2|3|8
+022150|numberOf18HzValidPointsForKuBand|long|NUMBER OF 18 HZ VALID POINTS FOR KU BAND|Numeric|0|0|10|Numeric|0|4
+022151|kuBandOceanRange|double|KU BAND OCEAN RANGE|m|3|0|31|m|3|10
+022152|stdOf18HzKuBandOceanRange|double|STD OF 18 HZ KU BAND OCEAN RANGE|m|3|0|16|m|3|5
+022153|numberOf18HzValidPointsForSBand|long|NUMBER OF 18 HZ VALID POINTS FOR S BAND|Numeric|0|0|10|Numeric|0|4
+022154|sBandOceanRange|double|S BAND OCEAN RANGE|m|3|0|31|m|3|10
+022155|stdOf18HzSBandOceanRange|double|STD OF 18 HZ S BAND OCEAN RANGE|m|3|0|16|m|3|5
+022156|kuBandSignificantWaveHeight|double|KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022157|stdOf18HzKuBandOceanRange|double|STD OF 18 HZ KU BAND OCEAN RANGE|m|3|0|16|m|3|5
+022158|sBandSignificantWaveHeight|double|S BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022159|stdOf18HzSBandSignificantWaveHeight|double|STD OF 18 HZ S BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022160|normalizedInverseWaveAge|long|NORMALIZED INVERSE WAVE AGE|Numeric|6|0|21|Numeric|6|7
+022161|waveSpectra|double|WAVE SPECTRA|m4|4|0|27|m4|4|9
+022162|rmsOf20HzKuBandOceanRange|double|RMS OF 20 HZ KU BAND OCEAN RANGE|m|3|0|16|m|3|5
+022163|numberOf20HzValidPointsForKuBand|long|NUMBER OF 20HZ VALID POINTS FOR KU BAND|Numeric|0|0|10|Numeric|0|4
+022164|rms20HzKuBandSignificantWaveHeight|double|RMS 20 HZ KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022165|numberOf20HzValidPointsForKuBandSignificantWaveHeight|long|NUMBER OF 20 HZ VALID POINTS FOR KU BAND SIGNIFICANT WAVE HEIGHT|Numeric|0|0|10|Numeric|0|4
+022166|kuBandNetInstrumentalCorrectionForSignificantWaveHeight|double|KU BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|m|3|4
+022167|numberOfValidPointsForKuBandBackscatter|long|NUMBER OF VALID POINTS FOR KU BAND BACKSCATTER|Numeric|0|0|10|Numeric|0|4
+022168|cBandOceanRange|double|C BAND OCEAN RANGE|m|3|0|31|m|3|10
+022169|rmsOfCBandOceanRange|double|RMS OF C BAND OCEAN RANGE|m|3|0|16|m|3|5
+022170|numberOf20HzValidPointsForCBand|long|NUMBER OF 20 HZ VALID POINTS FOR C BAND|Numeric|0|0|10|Numeric|0|4
+022171|cBandSignificantWaveHeight|double|C BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022172|rms20HzCBandSignificantWaveHeight|double|RMS 20 HZ C BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022173|numberOf20HzValidPointsForCBandSignificantWaveHeight|long|NUMBER OF 20 HZ VALID POINTS FOR C BAND SIGNIFICANT WAVE HEIGHT|Numeric|0|0|10|Numeric|0|4
+022174|cBandNetInstrumentalCorrectionForSignificantWaveHeight|double|C BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|m|3|4
+022175|numberOfValidPointsForCBandBackscatter|long|NUMBER OF VALID POINTS FOR C BAND BACKSCATTER|Numeric|0|0|10|Numeric|0|4
+022177|heightOfXbtOrXctdLauncher|long|HEIGHT OF XBT/XCTD LAUNCHER|m|0|0|6|m|0|3
+022178|xbtOrXctdLauncherType|table|XBT/XCTD LAUNCHER TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+022182|waterColumnHeight|double|WATER COLUMN HEIGHT|m|3|0|23|m|3|7
+022184|waterColumnHeightDeviationFromReferenceValue|double|WATER COLUMN HEIGHT DEVIATION FROM THE REFERENCE VALUE|m|3|-2000|12|m|3|4
+022185|bprTransmissionCount|long|BPR TRANSMISSION COUNT|Numeric|0|0|10|Numeric|0|3
+022188|dissolvedOxygen|double|DISSOLVED OXYGEN|umol/kg|3|0|19|umol/kg|3|6
+022189|specificBandOceanRange|double|SPECIFIC BAND OCEAN RANGE|m|3|0|31|m|3|10
+022190|specificBandSignificantWaveHeight|double|SPECIFIC BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022191|rmsOfSpecificBandOceanRange|double|RMS OF SPECIFIC BAND OCEAN RANGE|m|4|0|16|m|4|5
+023001|accidentEarlyNotificationArticleApplicable|table|ACCIDENT EARLY NOTIFICATION - ARTICLE APPLICABLE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023002|facilityInvolvedInIncident|table|ACTIVITY OR FACILITY INVOLVED IN INCIDENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+023003|releaseType|table|TYPE OF RELEASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023004|countermeasuresTakenNearBorder|table|COUNTERMEASURES TAKEN NEAR BORDER|CODE TABLE|0|0|3|CODE TABLE|0|1
+023005|causeOfIncident|table|CAUSE OF INCIDENT|CODE TABLE|0|0|2|CODE TABLE|0|1
+023006|incidentSituation|table|INCIDENT SITUATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+023007|characteristicsOfRelease|table|CHARACTERISTICS OF RELEASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023008|stateOfCurrentRelease|table|STATE OF CURRENT RELEASE|CODE TABLE|0|0|2|CODE TABLE|0|1
+023009|stateOfExpectedRelease|table|STATE OF EXPECTED RELEASE|CODE TABLE|0|0|2|CODE TABLE|0|1
+023016|possibilityOfSignificantChemicalToxicHealthEffect|table|POSSIBILITY OF SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT|CODE TABLE|0|0|2|CODE TABLE|0|1
+023017|flowDischargeOfMajorRecipient|double|FLOW DISCHARGE OF MAJOR RECIPIENT|m3/s|6|0|20|m3/s|6|7
+023018|releaseBehaviourOverTime|table|RELEASE BEHAVIOUR OVER TIME|CODE TABLE|0|0|3|CODE TABLE|0|1
+023019|actualReleaseHeight|long|ACTUAL RELEASE HEIGHT|m|0|-15000|17|m|0|6
+023021|effectiveReleaseHeight|long|EFFECTIVE RELEASE HEIGHT|m|0|-15000|17|m|0|6
+023022|distanceOfReleasePointOrSiteOfIncident|long|DISTANCE OF RELEASE POINT OR SITE OF INCIDENT|m|0|0|24|m|0|8
+023023|mainTransportSpeedInAtmosphere|double|MAIN TRANSPORT SPEED IN THE ATMOSPHERE|m/s|1|0|12|m/s|1|4
+023024|mainTransportSpeedInWater|double|MAIN TRANSPORT SPEED IN WATER|m/s|2|0|13|m/s|2|4
+023025|mainTransportSpeedInGroundWater|double|MAIN TRANSPORT SPEED IN GROUND WATER|m/s|2|0|13|m/s|2|4
+023027|mainTransportDirectionInTheAtmosphere|long|MAIN TRANSPORT DIRECTION IN THE ATMOSPHERE|deg|0|0|9|deg|0|3
+023028|mainTransportDirectionInWater|long|MAIN TRANSPORT DIRECTION IN WATER|deg|0|0|9|deg|0|3
+023029|mainTransportDirectionInGroundWater|long|MAIN TRANSPORT DIRECTION IN GROUND WATER|deg|0|0|9|deg|0|3
+023031|possibilityPlume|table|POSSIBILITY THAT PLUME WILL ENCOUNTER PRECIPITATION IN STATE IN WHICH INCIDENT OCCURRED|CODE TABLE|0|0|2|CODE TABLE|0|1
+023032|plumeWillEncounterChangeInWindDirectionAndOrOrSpeedFlag|table|PLUME WILL ENCOUNTER CHANGE IN WIND DIRECTION AND/OR SPEED FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+023040|flowDischargeRiver|double|FLOW DISCHARGE - RIVER|m3/s|1|0|22|m3/s|1|7
+023041|flowDischargeWell|double|FLOW DISCHARGE - WELL|m3/s|3|0|16|m3/s|3|5
+024001|estimateOfAmountOfRadioactivityReleasedUpToSpecifiedTime|long|ESTIMATE OF AMOUNT OF RADIOACTIVITY RELEASED UP TO SPECIFIED TIME|Bq|-11|0|28|Bq|-11|9
+024002|estimatedMaximumPotentialRelease|long|ESTIMATED MAXIMUM POTENTIAL RELEASE|Bq|-11|0|28|Bq|-11|9
+024003|compositionOfRelease|table|COMPOSITION OF RELEASE|CODE TABLE|0|0|5|CODE TABLE|0|2
+024004|elementName|string|ELEMENT NAME|CCITT IA5|0|0|16|Character|0|2
+024005|isotopeMass|long|ISOTOPE MASS|Numeric|0|0|9|Numeric|0|3
+024011|dose|double|DOSE|mSv|2|0|32|mSv|2|10
+024012|trajectoryDoseDefinedLocationAndExpectedTimeOfArrival|double|TRAJECTORY DOSE (DEFINED LOCATION AND EXPECTED TIME OF ARRIVAL)|mSv|2|0|32|mSv|2|10
+024013|gammaDoseInAirAlongMainTransportPathDefinedLocationAndTimePeriod|double|GAMMA DOSE IN AIR ALONG THE MAIN TRANSPORT PATH (DEFINED LOCATION AND TIME PERIOD)|mSv|2|0|32|mSv|2|10
+024014|gammaRadiationDoseRate|double|GAMMA RADIATION DOSE RATE|nSv/h|1|0|14|nSv/h|1|4
+024021|airConcentrationOfNamedIsotopeTypeIncludingGrossBeta|double|AIR CONCENTRATION (OF NAMED ISOTOPE TYPE INCLUDING GROSS BETA)|Bq m-3|2|0|32|Bq m-3|2|10
+024022|concentrationInPrecipitationOfNamedIsotopeType|double|CONCENTRATION IN PRECIPITATION (OF NAMED ISOTOPE TYPE)|Bq/l|2|0|32|Bq/l|2|10
+024023|pulseRateOfBetaRadiation|double|PULSE RATE OF BETA RADIATION|/s|1|0|14|/s|1|4
+024024|pulseRateOfGammaRadiation|double|PULSE RATE OF GAMMA RADIATION|/s|1|0|14|/s|1|4
+025001|rangeGateLength|long|RANGE-GATE LENGTH|m|-1|0|6|m|-1|2
+025002|numberOfGatesAveraged|long|NUMBER OF GATES AVERAGED|Numeric|0|0|4|Numeric|0|2
+025003|numberOfIntegratedPulses|long|NUMBER OF INTEGRATED PULSES|Numeric|0|0|8|Numeric|0|3
+025004|echoProcessing|table|ECHO PROCESSING|CODE TABLE|0|0|2|CODE TABLE|0|1
+025005|echoIntegration|table|ECHO INTEGRATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025006|zToRConversion|table|Z TO R CONVERSION|CODE TABLE|0|0|3|CODE TABLE|0|1
+025007|zToRConversionFactor|long|Z TO R CONVERSION FACTOR|Numeric|0|0|12|Numeric|0|4
+025008|zToRConversionExponent|long|Z TO R CONVERSION EXPONENT|Numeric|2|0|9|Numeric|2|3
+025009|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025010|clutterTreatment|table|CLUTTER TREATMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+025011|groundOccultationCorrectionScreening|table|GROUND OCCULTATION CORRECTION (SCREENING)|CODE TABLE|0|0|2|CODE TABLE|0|1
+025012|rangeAttenuationCorrection|table|RANGE ATTENUATION CORRECTION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025013|brightBandCorrection|flag|BRIGHT-BAND CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025014|azimuthClutterCutOff|long|AZIMUTH CLUTTER CUT-OFF|Numeric|0|0|12|Numeric|0|4
+025015|radomeAttenuationCorrection|flag|RADOME ATTENUATION CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025016|clearAirAttenuationCorrection|double|CLEAR-AIR ATTENUATION CORRECTION|dB/m|5|0|6|dB/m|5|2
+025017|precipitationAttenuationCorrection|flag|PRECIPITATION ATTENUATION CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025018|aToZLawForAttenuationFactor|long|A TO Z LAW FOR ATTENUATION FACTOR|Numeric|7|0|6|Numeric|7|2
+025019|aToZLawForAttenuationExponent|long|A TO Z LAW FOR ATTENUATION EXPONENT|Numeric|2|0|7|Numeric|2|3
+025020|meanSpeedEstimation|table|MEAN SPEED ESTIMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025021|windComputationEnhancement|flag|WIND COMPUTATION ENHANCEMENT|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025022|ghrsstRejectionFlag|flag|GHRSST* REJECTION FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025023|ghrsstConfidenceFlag|flag|GHRSST CONFIDENCE FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025024|ghrsstDataQuality|table|GHRSST DATA QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+025025|batteryVoltage|double|BATTERY VOLTAGE|V|1|0|9|V|1|3
+025026|batteryVoltageLargeRange|double|BATTERY VOLTAGE (LARGE RANGE)|V|1|0|12|V|1|4
+025028|operatorOrManufacturerDefinedParameter|long|OPERATOR OR MANUFACTURER DEFINED PARAMETER|Numeric|1|-16384|15|Numeric|1|5
+025029|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+025030|runningMeanSeaSurfaceTemperatureUsage|table|RUNNING MEAN SEA-SURFACE TEMPERATURE USAGE|CODE TABLE|0|0|2|CODE TABLE|0|1
+025031|nwpGeneratedVerticalProfileThinningMethod|table|NWP-GENERATED VERTICAL PROFILE THINNING METHOD|CODE TABLE|0|0|3|CODE TABLE|0|1
+025032|windProfilerModeInformation|table|WIND PROFILER MODE INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025033|windProfilerSubmodeInformation|table|WIND PROFILER SUBMODE INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025034|windProfilerQualityControlTestResults|flag|WIND PROFILER QUALITY CONTROL TEST RESULTS|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025035|decisionMethodForPolarity|table|DECISION METHOD FOR POLARITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+025036|atmosphericsLocationMethod|table|ATMOSPHERICS LOCATION METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+025037|sstBias|double|SST BIAS|K|2|-127|8|K|2|3
+025038|differenceBetweenSstAndAnalysis|double|DIFFERENCE BETWEEN SST AND ANALYSIS|K|1|-127|8|K|1|3
+025040|co2WindProductDerivation|table|CO2 WIND PRODUCT DERIVATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+025041|movingPlatformDirectionReportingMethod|table|MOVING PLATFORM DIRECTION REPORTING METHOD|CODE TABLE|0|0|2|CODE TABLE|0|1
+025042|movingPlatformSpeedReportingMethod|table|MOVING PLATFORM SPEED REPORTING METHOD|CODE TABLE|0|0|2|CODE TABLE|0|1
+025043|waveSamplingIntervalTime|double|WAVE SAMPLING INTERVAL (TIME)|s|4|0|15|s|4|5
+025044|waveSamplingIntervalSpace|double|WAVE SAMPLING INTERVAL (SPACE)|m|2|0|14|m|2|5
+025045|hirsChannelCombination|flag|HIRS CHANNEL COMBINATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+025046|msuChannelCombination|flag|MSU CHANNEL COMBINATION|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+025047|ssuChannelCombination|flag|SSU CHANNEL COMBINATION|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025048|amsuAChannelCombination|flag|AMSU-A CHANNEL COMBINATION|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+025049|amsuBChannelCombination|flag|AMSU-B CHANNEL COMBINATION|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+025050|principalComponentScore|long|PRINCIPAL COMPONENT SCORE|Numeric|4|-131072|18|Numeric|4|6
+025051|avhrrChannelCombination|flag|AVHRR CHANNEL COMBINATION|FLAG TABLE|0|0|7|FLAG TABLE|0|3
+025052|log10OfPrincipalComponentsNormalizedFitToData|long|LOG10 OF PRINCIPAL COMPONENTS NORMALIZED FIT TO DATA|Numeric|4|0|15|Numeric|4|5
+025053|observationQuality|flag|OBSERVATION QUALITY|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+025054|ssmisSubframeIdNumber|long|SSMIS SUBFRAME ID NUMBER|Numeric|0|0|5|Numeric|0|2
+025055|multiplexerHousekeeping|double|MULTIPLEXER HOUSEKEEPING|K|2|0|16|K|2|5
+025060|softwareIdentification|long|SOFTWARE IDENTIFICATION|Numeric|0|0|14|Numeric|0|5
+025061|softwareVersionNumber|string|SOFTWARE IDENTIFICATION AND VERSION NUMBER|CCITT IA5|0|0|96|Character|0|12
+025062|databaseIdentification|long|DATABASE IDENTIFICATION|Numeric|0|0|14|Numeric|0|5
+025063|SystemIdentifier|table|CENTRAL PROCESSOR OR SYSTEM IDENTIFIER|CODE TABLE|0|0|8|CODE TABLE|0|3
+025065|orientationCorrectionAzimuth|double|ORIENTATION CORRECTION (AZIMUTH)|deg|2|-1000|11|deg|2|4
+025066|orientationCorrectionElevation|double|ORIENTATION CORRECTION (ELEVATION)|deg|2|-1000|11|deg|2|4
+025067|radiosondeReleasePointPressureCorrection|long|RADIOSONDE RELEASE POINT PRESSURE CORRECTION|Pa|0|-8000|14|Pa|0|4
+025068|numberOfArchiveRecomputes|long|NUMBER OF ARCHIVE RECOMPUTES|Numeric|0|0|7|Numeric|0|3
+025069|flightLevelPressureCorrections|flag|FLIGHT LEVEL PRESSURE CORRECTIONS|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025070|majorFrameCount|long|MAJOR FRAME COUNT|Numeric|0|0|4|Numeric|0|2
+025071|frameCount|long|FRAME COUNT|Numeric|0|0|5|Numeric|0|2
+025075|satelliteAntennaCorrectionsVersionNumber|long|SATELLITE ANTENNA CORRECTIONS VERSION NUMBER|Numeric|0|0|5|Numeric|0|2
+025076|log10OfTemperatureRadianceCentralWaveNumberForAtovs|double|LOG10 OF (TEMPERATURE-RADIANCE CENTRAL WAVE NUMBER) FOR ATOVS|log (m-1)|8|0|30|log (m-1)|8|10
+025077|bandwidthCorrectionCoefficient1ForAtovs|long|BANDWIDTH CORRECTION COEFFICIENT 1 FOR ATOVS|Numeric|5|-100000|18|Numeric|5|7
+025078|bandwidthCorrectionCoefficient2ForAtovs|long|BANDWIDTH CORRECTION COEFFICIENT 2 FOR ATOVS|Numeric|5|0|17|Numeric|5|6
+025079|albedoRadianceSolarFilteredIrradianceForAtovs|double|ALBEDO-RADIANCE SOLAR FILTERED IRRADIANCE FOR ATOVS|W m-2|4|0|24|W m-2|4|8
+025080|albedoRadianceEquivalentFilterWidthForAtovs|double|ALBEDO-RADIANCE EQUIVALENT FILTER WIDTH FOR ATOVS|m|10|0|14|m|10|5
+025081|incidenceAngle|double|INCIDENCE ANGLE|deg|3|0|17|deg|3|6
+025082|azimuthAngle|double|AZIMUTH ANGLE|deg|3|0|19|deg|3|6
+025083|faradayRotationalAngle|double|FARADAY ROTATIONAL ANGLE|deg|3|0|19|deg|3|6
+025084|geometricRotationalAngle|double|GEOMETRIC ROTATIONAL ANGLE|deg|5|0|26|deg|5|8
+025085|fractionOfClearPixelsInHirsFov|long|FRACTION OF CLEAR PIXELS IN HIRS FOV|Numeric|0|0|7|Numeric|0|3
+025086|depthCorrectionIndicator|table|DEPTH CORRECTION INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+025090|orbitStateFlag|table|ORBIT STATE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+025091|structureConstantOfRefractionIndexCn2|double|STRUCTURE CONSTANT OF THE REFRACTION INDEX (CN2)|dB|3|-18192|13|dB|3|5
+025092|acousticPropagationVelocity|double|ACOUSTIC PROPAGATION VELOCITY|m/s|2|28000|14|m/s|2|5
+025093|rassComputationCorrection|flag|RASS COMPUTATION CORRECTION|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025095|altimeterStateFlag|flag|ALTIMETER STATE FLAG|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025096|radiometerStateFlag|flag|RADIOMETER STATE FLAG|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+025097|threeDimensionalErrorEstimateOfNavigatorOrbit|table|THREE-DIMENSIONAL ERROR ESTIMATE OF THE NAVIGATOR ORBIT|CODE TABLE|0|0|4|CODE TABLE|0|2
+025098|altimeterDataQualityFlag|flag|ALTIMETER DATA QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025099|altimeterCorrectionQualityFlag|flag|ALTIMETER CORRECTION QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025100|xbtOrXctdFallRateEquationCoefficientA|long|XBT/XCTD FALL RATE EQUATION COEFFICIENT A|Numeric|5|0|20|Numeric|5|6
+025101|xbtOrXctdFallRateEquationCoefficientB|long|XBT/XCTD FALL RATE EQUATION COEFFICIENT B|Numeric|5|-500000|21|Numeric|5|6
+025102|numberOfMissingLinesExcludingDataGaps|long|NUMBER OF MISSING LINES EXCLUDING DATA GAPS|Numeric|0|0|8|Numeric|0|3
+025103|numberOfDirectionalBins|long|NUMBER OF DIRECTIONAL BINS|Numeric|0|0|8|Numeric|0|3
+025104|numberOfWavelengthBins|long|NUMBER OF WAVELENGTH BINS|Numeric|0|0|8|Numeric|0|3
+025105|firstDirectionalBin|double|FIRST DIRECTIONAL BIN|deg|3|0|19|deg|3|6
+025106|directionalBinStep|double|DIRECTIONAL BIN STEP|deg|3|0|19|deg|3|6
+025107|firstWavelengthBin|double|FIRST WAVELENGTH BIN|m|3|0|29|m|3|9
+025108|lastWavelengthBin|double|LAST WAVELENGTH BIN|m|3|0|29|m|3|9
+025110|imageProcessingSummary|flag|IMAGE PROCESSING SUMMARY|FLAG TABLE|0|0|10|FLAG TABLE|0|4
+025111|numberOfInputDataGaps|long|NUMBER OF INPUT DATA GAPS|Numeric|0|0|8|Numeric|0|3
+025112|bandSpecificAltimeterDataQualityFlag|flag|BAND SPECIFIC ALTIMETER DATA QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025113|bandSpecificAltimeterCorrectionQualityFlag|flag|BAND SPECIFIC ALTIMETER CORRECTION QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025120|ra2L2ProcessingFlag|table|RA2-L2-PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025121|ra2L2ProcessingQuality|long|RA2-L2-PROCESSING QUALITY|%|0|0|7|%|0|3
+025122|hardwareConfigurationForRf|table|HARDWARE CONFIGURATION FOR RF|CODE TABLE|0|0|2|CODE TABLE|0|1
+025123|hardwareConfigurationForHpa|table|HARDWARE CONFIGURATION FOR HPA|CODE TABLE|0|0|2|CODE TABLE|0|1
+025124|mwrL2ProcessingFlag|table|MWR-L2-PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025125|mwrL2ProcessingQuality|long|MWR-L2-PROCESSING QUALITY|%|0|0|7|%|0|3
+025126|modelDryTroposphericCorrection|double|MODEL DRY TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025127|invertedBarometerCorrection|double|INVERTED BAROMETER CORRECTION|m|3|-32768|16|m|3|5
+025128|modelWetTroposphericCorrection|double|MODEL WET TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025129|mwrDerivedWetTroposphericCorrection|double|MWR DERIVED WET TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025130|ra2IonosphericCorrectionOnKuBand|double|RA2 IONOSPHERIC CORRECTION ON KU BAND|m|3|-32768|16|m|3|5
+025131|ionosphericCorrectionFromDorisOnKuBand|double|IONOSPHERIC CORRECTION FROM DORIS ON KU BAND|m|3|-32768|16|m|3|5
+025132|ionosphericCorrectionFromModelOnKuBand|double|IONOSPHERIC CORRECTION FROM MODEL ON KU BAND|m|3|-32768|16|m|3|5
+025133|seaStateBiasCorrectionOnKuBand|double|SEA STATE BIAS CORRECTION ON KU BAND|m|3|-32768|16|m|3|5
+025134|ra2IonosphericCorrectionOnSBand|double|RA2 IONOSPHERIC CORRECTION ON S BAND|m|3|-32768|16|m|3|5
+025135|ionosphericCorrectionFromDorisOnSBand|double|IONOSPHERIC CORRECTION FROM DORIS ON S BAND|m|3|-32768|16|m|3|5
+025136|ionosphericCorrectionFromModelOnSBand|double|IONOSPHERIC CORRECTION FROM MODEL ON S BAND|m|3|-32768|16|m|3|5
+025137|seaStateBiasCorrectionOnSBand|double|SEA STATE BIAS CORRECTION ON S BAND|m|3|-32768|16|m|3|5
+025138|averageSignalToNoiseRatio|long|AVERAGE SIGNAL-TO-NOISE RATIO|Numeric|0|-2048|12|Numeric|0|4
+025140|startChannel|long|START CHANNEL|Numeric|0|0|14|Numeric|0|5
+025141|endChannel|long|END CHANNEL|Numeric|0|0|14|Numeric|0|5
+025142|channelScaleFactor|long|CHANNEL SCALE FACTOR|Numeric|0|0|6|Numeric|0|2
+025143|linearCoefficient|long|LINEAR COEFFICIENT|Numeric|6|-5000000|24|Numeric|6|8
+025150|methodOfTropicalCycloneIntensityAnalysisUsingSatelliteData|table|METHOD OF TROPICAL CYCLONE INTENSITY ANALYSIS USING SATELLITE DATA|CODE TABLE|0|0|4|CODE TABLE|0|2
+025160|kuBandNetInstrumentalCorrection|double|KU BAND NET INSTRUMENTAL CORRECTION|m|4|-120000|18|m|4|6
+025161|cBandNetInstrumentalCorrection|double|C BAND NET INSTRUMENTAL CORRECTION|m|4|-120000|18|m|4|6
+025162|seaStateBiasCorrectionOnCBand|double|SEA STATE BIAS CORRECTION ON C BAND|m|4|-6000|13|m|4|4
+025163|altimeterIonosphericCorrectionOnKuBand|double|ALTIMETER IONOSPHERIC CORRECTION ON KU BAND|m|3|-32768|16|m|3|5
+025164|radiometerWetTroposphericCorrection|double|RADIOMETER WET TROPOSPHERIC CORRECTION|m|4|-5000|13|m|4|4
+025165|ionosphericCorrectionFromModelOnSpecificBand|double|IONOSPHERIC CORRECTION FROM MODEL ON SPECIFIC BAND|m|4|-32768|16|m|4|5
+025166|seaStateBiasCorrectionOnSpecificBand|double|SEA STATE BIAS CORRECTION ON SPECIFIC BAND|m|4|-32768|16|m|4|5
+025167|specificBandNetInstrumentalCorrection|double|SPECIFIC BAND NET INSTRUMENTAL CORRECTION|m|4|-120000|18|m|4|6
+025170|samplingIntervalTime|long|SAMPLING INTERVAL (TIME)|s|0|0|10|s|0|4
+025171|sampleAveragingPeriod|long|SAMPLE AVERAGING PERIOD|s|0|0|10|s|0|4
+025172|numberOfSamples|long|NUMBER OF SAMPLES|Numeric|0|0|10|Numeric|0|4
+025174|smosInformationFlag|flag|SMOS INFORMATION FLAG|FLAG TABLE|0|0|14|FLAG TABLE|0|5
+025175|modifiedResidual|long|MODIFIED RESIDUAL|Numeric|2|0|13|Numeric|2|4
+025180|lrmPercent|double|LRM* PER CENT|%|2|0|16|%|2|5
+025181|l2ProcessingFlag|table|L2 PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025182|l1ProcessingFlag|table|L1 PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025183|l1ProcessingQuality|double|L1 PROCESSING QUALITY|%|2|0|14|%|2|5
+025184|l2ProductStatus|table|L2 PRODUCT STATUS|CODE TABLE|0|0|2|CODE TABLE|0|1
+026001|principalTimeOfDailyReadingInUtcOfMaximumTemperature|double|PRINCIPAL TIME OF DAILY READING IN UTC OF MAXIMUM TEMPERATURE|h|1|0|12|h|1|3
+026002|principalTimeOfDailyReadingInUtcOfMinimumTemperature|double|PRINCIPAL TIME OF DAILY READING IN UTC OF MINIMUM TEMPERATURE|h|1|0|12|h|1|3
+026003|timeDifference|long|TIME DIFFERENCE|min|0|-1440|12|min|0|4
+026010|hoursIncluded|flag|HOURS INCLUDED|FLAG TABLE|0|0|26|FLAG TABLE|0|9
+026020|durationOfPrecipitation|long|DURATION OF PRECIPITATION|min|0|0|11|min|0|4
+026021|year|long|YEAR|a|0|0|12|a|0|4
+026022|month|long|MONTH|mon|0|0|4|mon|0|2
+026023|day|long|DAY|d|0|0|6|d|0|2
+026030|measurementIntegrationTime|double|MEASUREMENT INTEGRATION TIME|s|2|0|8|s|2|3
+027001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+027002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+027003|alternateLatitude|double|ALTERNATE LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+027004|alternateLatitude|double|ALTERNATE LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+027010|footprintAxis1|long|FOOTPRINT AXIS 1|m|-1|0|14|m|-1|5
+027020|satelliteLocationCounter|long|SATELLITE LOCATION COUNTER|Numeric|0|0|16|Numeric|0|5
+027021|satelliteSublocationDimension|long|SATELLITE SUBLOCATION DIMENSION|Numeric|0|0|16|Numeric|0|5
+027031|DistanceFromEarthCentreInDirectionOf0DegreesLongitude|double|IN DIRECTION OF 0 DEGREES LONGITUDE, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10
+027080|viewingAzimuthAngle|double|VIEWING AZIMUTH ANGLE|deg|2|0|16|deg|0|5
+028001|longitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+028002|longitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+028003|alternateLongitude|double|ALTERNATE LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+028004|alternateLongitude|double|ALTERNATE LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+028010|footprintAxis2|long|FOOTPRINT AXIS 2|m|-1|0|14|m|-1|5
+028031|DistanceFromEarthCentreInDirection90DegreesEast|double|IN DIRECTION 90 DEGREES EAST, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10
+029001|projectionType|table|PROJECTION TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+029002|coordinateGridType|table|COORDINATE GRID TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+030001|pixelValue4Bits|long|PIXEL VALUE (4 BITS)|Numeric|0|0|4|Numeric|0|2
+030002|pixelValue8Bits|long|PIXEL VALUE (8 BITS)|Numeric|0|0|8|Numeric|0|3
+030004|pixelValue16Bits|long|PIXEL VALUE (16 BITS)|Numeric|0|0|16|Numeric|0|5
+030010|numberOfGridPoints|long|NUMBER OF GRID POINTS|Numeric|0|0|13|Numeric|0|4
+030021|numberOfPixelsPerRow|long|NUMBER OF PIXELS PER ROW|Numeric|0|0|12|Numeric|0|4
+030022|numberOfPixelsPerColumn|long|NUMBER OF PIXELS PER COLUMN|Numeric|0|0|12|Numeric|0|4
+030031|pictureType|table|PICTURE TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+030032|combinationWithOtherData|flag|COMBINATION WITH OTHER DATA|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+030033|numberOfBinsAlongRadial|long|NUMBER OF BINS ALONG THE RADIAL|Numeric|0|0|12|Numeric|0|4
+030034|numberOfAzimuths|long|NUMBER OF AZIMUTHS|Numeric|0|0|12|Numeric|0|4
+031000|shortDelayedDescriptorReplicationFactor|long|SHORT DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|1|NA|0|0
+031001|delayedDescriptorReplicationFactor|long|DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|8|NA|0|0
+031002|extendedDelayedDescriptorReplicationFactor|long|EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|16|NA|0|0
+031011|delayedDescriptorAndDataRepetitionFactor|long|DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|8|NA|0|0
+031012|extendedDelayedDescriptorAndDataRepetitionFactor|long|EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|16|NA|0|0
+031021|associatedFieldSignificance|table|ASSOCIATED FIELD SIGNIFICANCE|CODE TABLE|0|0|6|NA|0|0
+031031|dataPresentIndicator|flag|DATA PRESENT INDICATOR|FLAG TABLE|0|0|1|NA|0|0
+033002|qualityInformation|table|QUALITY INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033003|qualityInformation|table|QUALITY INFORMATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+033005|qualityInformationAwsData|flag|QUALITY INFORMATION (AWS DATA)|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+033006|internalMeasurementStatusInformationAws|table|INTERNAL MEASUREMENT STATUS INFORMATION (AWS)|CODE TABLE|0|0|3|CODE TABLE|0|1
+033007|percentConfidence|long|PER CENT CONFIDENCE|%|0|0|7|%|0|3
+033015|dataQualityCheckIndicator|table|DATA QUALITY-CHECK INDICATOR|CODE TABLE|0|0|6|CODE TABLE|0|2
+033020|qualityControlIndicationOfFollowingValue|table|QUALITY CONTROL INDICATION OF FOLLOWING VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+033021|qualityOfFollowingValue|table|QUALITY OF FOLLOWING VALUE|CODE TABLE|0|0|2|CODE TABLE|0|1
+033022|qualityOfBuoySatelliteTransmission|table|QUALITY OF BUOY SATELLITE TRANSMISSION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033023|qualityOfBuoyLocation|table|QUALITY OF BUOY LOCATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033024|stationElevationQualityMarkForMobileStations|table|STATION ELEVATION QUALITY MARK (FOR MOBILE STATIONS)|CODE TABLE|0|0|4|CODE TABLE|0|2
+033025|acarsInterpolatedValuesIndicator|table|ACARS INTERPOLATED VALUES INDICATOR|CODE TABLE|0|0|3|CODE TABLE|0|1
+033026|moistureQuality|table|MOISTURE QUALITY|CODE TABLE|0|0|6|CODE TABLE|0|2
+033027|locationQualityClassRangeOfRadiusOf66Confidence|table|LOCATION QUALITY CLASS (RANGE OF RADIUS OF 66 % CONFIDENCE)|CODE TABLE|0|0|3|CODE TABLE|0|1
+033028|snapshotOverallQuality|table|SNAPSHOT OVERALL QUALITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+033030|scanLineStatusFlagsForAtovs|flag|SCAN LINE STATUS FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033031|scanLineQualityFlagsForAtovs|flag|SCAN LINE QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033032|channelQualityFlagsForAtovs|flag|CHANNEL QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033033|fieldOfViewQualityFlagsForAtovs|flag|FIELD OF VIEW QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033035|qualityControl|table|MANUAL/AUTOMATIC QUALITY CONTROL|CODE TABLE|0|0|4|CODE TABLE|0|2
+033036|nominalConfidenceThreshold|long|NOMINAL CONFIDENCE THRESHOLD|%|0|0|7|%|0|3
+033037|windCorrelationError|flag|WIND CORRELATION ERROR|FLAG TABLE|0|0|20|FLAG TABLE|0|7
+033038|qualityFlagsForGroundBasedGnssData|flag|QUALITY FLAGS FOR GROUND-BASED GNSS DATA|FLAG TABLE|0|0|10|FLAG TABLE|0|4
+033039|radioOccultationDataQualityFlags|flag|QUALITY FLAGS FOR RADIO OCCULTATION DATA|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+033040|confidenceInterval|long|CONFIDENCE INTERVAL|%|0|0|7|%|0|3
+033041|attributeOfFollowingValue|table|ATTRIBUTE OF FOLLOWING VALUE|CODE TABLE|0|0|2|CODE TABLE|0|1
+033042|typeOfLimitRepresentedByFollowingValue|table|TYPE OF LIMIT REPRESENTED BY FOLLOWING VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+033043|astConfidence|flag|AST CONFIDENCE|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+033044|asarQualityInformation|flag|ASAR QUALITY INFORMATION|FLAG TABLE|0|0|15|FLAG TABLE|0|5
+033045|probabilityOfFollowingEvent|long|PROBABILITY OF FOLLOWING EVENT|%|0|0|7|%|0|3
+033046|conditionalProbability|long|CONDITIONAL PROBABILITY OF FOLLOWING EVENT WITH RESPECT TO SPECIFIED CONDITIONING EVENT|%|0|0|7|%|0|3
+033047|measurementConfidenceData|flag|MEASUREMENT CONFIDENCE DATA|FLAG TABLE|0|0|31|FLAG TABLE|0|11
+033048|confidenceMeasureOfSarInversion|table|CONFIDENCE MEASURE OF SAR INVERSION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033049|confidenceMeasureOfWindRetrieval|table|CONFIDENCE MEASURE OF WIND RETRIEVAL|CODE TABLE|0|0|2|CODE TABLE|0|1
+033050|globalGtsppQualityFlag|table|GLOBAL GTSPP QUALITY FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+033052|sBandOceanRetrackingQuality|flag|S BAND OCEAN RETRACKING QUALITY|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+033053|kuBandOceanRetrackingQuality|flag|KU BAND OCEAN RETRACKING QUALITY|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+033060|gqisFlagQual|table|GQISFLAGQUAL - INDIVIDUAL IASI-SYSTEM QUALITY FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+033061|gqisQualIndex|long|GQISQUALINDEX - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE (CONTRIBUTIONS FROM SPECTRAL AND RADIOMETRIC CALIBRATION)|%|0|0|7|%|0|3
+033062|gqisQualIndexLoc|long|GQISQUALINDEXLOC - INDICATOR FOR GEOMETRIC QUALITY INDEX|%|0|0|7|%|0|3
+033063|gqisQualIndexRad|long|GQISQUALINDEXRAD - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE (CONTRIBUTIONS FROM RADIOMETRIC CALIBRATION)|%|0|0|7|%|0|3
+033064|gqisQualIndexSpect|long|GQISQUALINDEXSPECT - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE (CONTRIBUTIONS FROM SPECTRAL CALIBRATION)|%|0|0|7|%|0|3
+033065|gqisSysTecQual|long|GQISSYSTECSONDQUAL - OUTPUT OF SYSTEM TEC (TECHNICAL EXPERTISE CENTRE) QUALITY FUNCTION|Numeric|0|0|24|Numeric|0|8
+033070|totalOzoneQuality|table|TOTAL OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033071|profileOzoneQuality|table|PROFILE OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033072|ozoneError|table|OZONE ERROR|CODE TABLE|0|0|5|CODE TABLE|0|2
+033075|scanLevelQualityFlags|flag|SCAN-LEVEL QUALITY FLAGS|FLAG TABLE|0|0|13|FLAG TABLE|0|5
+033076|calibrationQualityFlags|flag|CALIBRATION QUALITY FLAGS|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+033077|fieldOfViewQualityFlags|flag|FIELD-OF-VIEW QUALITY FLAGS|FLAG TABLE|0|0|19|FLAG TABLE|0|7
+033078|geolocationQuality|table|GEOLOCATION QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033079|granuleLevelQualityFlags|flag|GRANULE LEVEL QUALITY FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+033080|scanLevelQualityFlags|flag|SCAN LEVEL QUALITY FLAGS|FLAG TABLE|0|0|20|FLAG TABLE|0|7
+033081|channelDataQualityFlags|flag|CHANNEL DATA QUALITY FLAGS|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+033082|geolocationQualityFlags|flag|GEOLOCATION QUALITY FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+033083|radianceDataQualityFlags|flag|RADIANCE DATA QUALITY FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+033084|pixelLevelQualityFlags|flag|PIXEL LEVEL QUALITY FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+033085|aerosolOpticalThicknessQualityFlags|flag|AEROSOL OPTICAL THICKNESS QUALITY FLAGS|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+033086|qualityOfPixelLevelRetrieval|table|QUALITY OF PIXEL LEVEL RETRIEVAL|CODE TABLE|0|0|3|CODE TABLE|0|1
+033087|extentOfSatelliteWithinSouthAtlanticAnomalyBasedOnClimatologicalData|table|EXTENT OF SATELLITE WITHIN SOUTH ATLANTIC ANOMALY (BASED ON CLIMATOLOGICAL DATA)|CODE TABLE|0|0|4|CODE TABLE|0|1
+033088|ozoneTotalColumnQualityFlag|flag|OZONE TOTAL COLUMN QUALITY FLAG|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+033089|noiseEquivalentDeltaTemperatureNedtQualityIndicatorsForWarmTargetCalibration|double|NOISE EQUIVALENT DELTA TEMPERATURE (NEDT) QUALITY INDICATORS FOR WARM TARGET CALIBRATION|K|2|0|12|K|2|4
+033090|nedtQualityIndicatorsForColdTargetCalibration|double|NEDT QUALITY INDICATORS FOR COLD TARGET CALIBRATION|K|2|0|12|K|2|4
+033091|nedtQualityIndicatorsForOverallCalibration|double|NEDT QUALITY INDICATORS FOR OVERALL CALIBRATION|K|2|0|12|K|2|4
+035000|fmAndRegionalCodeNumber|table|FM AND REGIONAL CODE NUMBER|CODE TABLE|0|0|10|CODE TABLE|0|3
+035001|timeFrameForMonitoring|table|TIME FRAME FOR MONITORING|CODE TABLE|0|0|3|CODE TABLE|0|1
+035011|numberOfReportsActuallyReceived|long|NUMBER OF REPORTS ACTUALLY RECEIVED|Numeric|0|0|14|Numeric|0|4
+035021|bulletinBeingMonitoredTtaaii|string|BULLETIN BEING MONITORED (TTAAII)|CCITT IA5|0|0|48|Character|0|6
+035022|bulletinBeingMonitoredYygggg|string|BULLETIN BEING MONITORED (YYGGGG)|CCITT IA5|0|0|48|Character|0|6
+035023|bulletinBeingMonitoredCccc|string|BULLETIN BEING MONITORED (CCCC)|CCITT IA5|0|0|32|Character|0|4
+035024|bulletinBeingMonitoredBbb|string|BULLETIN BEING MONITORED (BBB)|CCITT IA5|0|0|24|Character|0|3
+035030|discrepanciesInAvailabilityOfExpectedData|table|DISCREPANCIES IN THE AVAILABILITY OF EXPECTED DATA|CODE TABLE|0|0|4|CODE TABLE|0|1
+035031|qualifierOnMonitoringResults|table|QUALIFIER ON MONITORING RESULTS|CODE TABLE|0|0|7|CODE TABLE|0|2
+035032|causeOfMissingData|table|CAUSE OF MISSING DATA|CODE TABLE|0|0|4|CODE TABLE|0|1
+035033|observationAndCollectionDeficiencies|table|OBSERVATION AND COLLECTION DEFICIENCIES|CODE TABLE|0|0|7|CODE TABLE|0|2
+035034|statisticalTrendsForAvailabilityOfDataDuringSurveyPeriods|table|STATISTICAL TRENDS FOR AVAILABILITY OF DATA (DURING THE SURVEY PERIOD(S))|CODE TABLE|0|0|3|CODE TABLE|0|1
+035035|reasonForTermination|table|REASON FOR TERMINATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+040001|surfaceSoilMoisture|double|SURFACE SOIL MOISTURE (MS)|%|1|0|10|%|1|4
+040002|estimatedErrorInSurfaceSoilMoisture|double|ESTIMATED ERROR IN SURFACE SOIL MOISTURE|%|1|0|10|%|1|4
+040003|meanSurfaceSoilMoisture|long|MEAN SURFACE SOIL MOISTURE|Numeric|3|0|10|Numeric|3|4
+040004|rainFallDetection|long|RAIN FALL DETECTION|Numeric|3|0|10|Numeric|3|4
+040005|soilMoistureCorrectionFlag|flag|SOIL MOISTURE CORRECTION FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040006|soilMoistureProcessingFlag|flag|SOIL MOISTURE PROCESSING FLAG|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+040007|soilMoistureQuality|double|SOIL MOISTURE QUALITY|%|1|0|10|%|1|4
+040008|frozenLandSurfaceFraction|double|FROZEN LAND SURFACE FRACTION|%|1|0|10|%|1|4
+040009|inundationAndWetlandFraction|double|INUNDATION AND WETLAND FRACTION|%|1|0|10|%|1|4
+040010|topographicComplexity|double|TOPOGRAPHIC COMPLEXITY|%|1|0|10|%|1|4
+040011|interpolationFlag|flag|INTERPOLATION FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040012|radiometerDataQualityFlag|flag|RADIOMETER DATA QUALITY FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040013|radiometerBrightnessTemperatureInterpretationFlag|table|RADIOMETER BRIGHTNESS TEMPERATURE INTERPRETATION FLAG|CODE TABLE|0|0|3|CODE TABLE|0|1
+040014|highFrequencyFluctuationsOfSeaSurfaceTopographyCorrection|double|HIGH-FREQUENCY FLUCTUATIONS OF THE SEA-SURFACE TOPOGRAPHY CORRECTION|m|4|-3000|13|m|4|4
+040015|normalizedDifferentialVegetationIndex|long|NORMALIZED DIFFERENTIAL VEGETATION INDEX (NDVI)|Numeric|2|-100|8|Numeric|2|3
+040016|residualRmsInBand|long|RESIDUAL RMS IN BAND|Numeric|3|0|14|Numeric|3|5
+040017|nonNormalizedPrincipalComponentScore|long|NON-NORMALIZED PRINCIPAL COMPONENT SCORE|Numeric|0|-1073741824|31|Numeric|0|10
+040018|averageOfImagerMeasurements|double|GIACAVGIMAGIIS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8
+040019|giacvarimagiisVarianceOfImagerMeasurements|double|GIACVARIMAGIIS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8
+040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH SNOW/ICE|%|0|0|7|%|0|3
+040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|Numeric|0|3
+040023|auxiliaryAltimeterStateFlags|flag|AUXILIARY ALTIMETER STATE FLAGS|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+040024|meteorologicalMapAvailability|table|METEOROLOGICAL MAP AVAILABILITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+040025|interpolationFlagForMeanDiurnalTide|table|INTERPOLATION FLAG FOR MEAN DIURNAL TIDE|CODE TABLE|0|0|2|CODE TABLE|0|1
+040026|scoreQuantizationFactor|long|SCORE QUANTIZATION FACTOR|Numeric|2|0|16|Numeric|2|5
+040027|sunGlintAngle|double|SUN GLINT ANGLE|deg|2|-18000|16|deg|2|5
+040028|gmiQualityFlag|table|GMI QUALITY FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
diff --git a/definitions/bufr/tables/0/wmo/25/sequence.def b/definitions/bufr/tables/0/wmo/25/sequence.def
new file mode 100644
index 0000000..5862e3c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/25/sequence.def
@@ -0,0 +1,923 @@
+"300002" = [  000002, 000003 ]
+"300003" = [  000010, 000011, 000012 ]
+"300004" = [  300003, 000013, 000014, 000015, 000016, 000017, 000018, 000019, 000020 ]
+"300010" = [  300003, 101000, 031001, 000030 ]
+"300015" = [  000030, 102000, 031002, 000024, 000025 ]
+"300016" = [  000030, 102000, 031001, 000026, 000027 ]
+"301001" = [  001001, 001002 ]
+"301002" = [  001003, 001004, 001005 ]
+"301003" = [  001011, 001012, 001013 ]
+"301004" = [  001001, 001002, 001015, 002001 ]
+"301005" = [  001035, 001034 ]
+"301011" = [  004001, 004002, 004003 ]
+"301012" = [  004004, 004005 ]
+"301013" = [  004004, 004005, 004006 ]
+"301014" = [  102002, 301011, 301012 ]
+"301021" = [  005001, 006001 ]
+"301022" = [  005001, 006001, 007001 ]
+"301023" = [  005002, 006002 ]
+"301024" = [  005002, 006002, 007001 ]
+"301025" = [  301023, 004003, 301012 ]
+"301026" = [  301021, 004003, 004003, 004004, 004004, 004005, 004005 ]
+"301027" = [  008007, 101000, 031001, 301028, 008007 ]
+"301028" = [  008040, 033042, 007010, 101000, 031002, 301023, 019007, 008040 ]
+"301029" = [  001018, 002001, 301011 ]
+"301030" = [  001018, 002001, 301011, 301024 ]
+"301031" = [  301001, 002001, 301011, 301012, 301022 ]
+"301032" = [  301001, 002001, 301011, 301012, 301024 ]
+"301033" = [  001005, 002001, 301011, 301012, 301021 ]
+"301034" = [  001005, 002001, 301011, 301012, 301023 ]
+"301035" = [  001005, 001012, 001013, 002001, 301011, 301012, 301023 ]
+"301036" = [  301003, 002001, 301011, 301012, 301023 ]
+"301037" = [  301001, 002011, 002012, 301011, 301012, 301022 ]
+"301038" = [  301001, 002011, 002012, 301011, 301012, 301024 ]
+"301039" = [  301003, 002011, 002012, 301011, 301012, 301023 ]
+"301040" = [  301003, 002011, 002012, 301011, 301012, 301024 ]
+"301041" = [  001007, 002021, 002022, 301011, 301012 ]
+"301042" = [  301041, 301021 ]
+"301043" = [  001007, 002023, 301011, 301013, 301021 ]
+"301044" = [  001007, 002024, 301011, 301013, 301021 ]
+"301045" = [  301011, 301012, 201138, 202131, 004006, 201000, 202000, 304030, 304031 ]
+"301046" = [  001007, 001012, 002048, 021119, 025060, 202124, 002026, 002027, 202000, 005040
+               ]
+"301047" = [  001007, 025060, 001033, 001034, 001012, 301045, 002021, 301011, 301012, 201138,
+               202131, 004006, 201000, 202000, 301023 ]
+"301048" = [  002104, 002121, 002113, 002026, 002027, 002111, 002140, 202127, 001013, 202126,
+               007001, 202000, 025010, 021064 ]
+"301049" = [  002111, 002112, 021062, 021063, 021065 ]
+"301051" = [  001006, 002061, 301011, 301012, 301021, 008004 ]
+"301055" = [  001005, 002001, 301011, 301012, 301021, 001012, 001014 ]
+"301058" = [  301011, 301012, 201152, 202135, 004006, 202000, 201000, 301021, 020111, 020112,
+               020113, 020114, 020115, 020116, 020117, 020118, 020119, 025035, 020121, 020122,
+               020123, 020124, 025175, 020023, 025063, 202136, 201136, 002121, 201000, 202000,
+               025061, 002184, 002189, 025036, 101000, 031002, 301059 ]
+"301059" = [  301021, 007030, 007032 ]
+"301062" = [  101000, 031001, 301001 ]
+"301065" = [  001006, 001008, 002001, 002002, 002005, 002062, 002070, 002065 ]
+"301066" = [  301011, 301013, 301023, 007004, 002064, 008004 ]
+"301070" = [  002143, 002142, 002144 ]
+"301071" = [  001007, 001031, 002020, 002028, 002029 ]
+"301072" = [  301071, 301011, 301013, 301021 ]
+"301074" = [  002143, 002142, 002145, 002146 ]
+"301075" = [  301001, 001015, 301024, 008021, 301011, 301012 ]
+"301076" = [  002011, 002143, 002142 ]
+"301089" = [  001101, 001102 ]
+"301090" = [  301004, 301011, 301012, 301021, 007030, 007031 ]
+"301091" = [  002180, 002181, 002182, 002183, 002184, 002179, 002186, 002187, 002188, 002189
+               ]
+"301092" = [  001011, 001003, 002001, 301011, 301012, 301021, 007030, 007031, 033024 ]
+"301093" = [  301036, 007030, 007031 ]
+"301110" = [  301001, 001011, 002011, 002014, 002003 ]
+"301111" = [  301001, 001011, 002011, 002013, 002014, 002003 ]
+"301112" = [  001006, 002011, 002013, 002014, 002003 ]
+"301113" = [  008021, 301011, 301013 ]
+"301114" = [  301021, 007030, 007031, 007007, 033024 ]
+"301120" = [  301001, 001094, 002011, 301121 ]
+"301121" = [  008041, 301122, 301021, 007031, 007007 ]
+"301122" = [  301011, 301012, 201135, 202130, 004006, 202000, 201000 ]
+"301123" = [  102002, 008041, 001062, 301001, 001094, 002011, 001018, 001095, 025061, 025068,
+               001082, 001083, 001081, 002067, 002066, 002014, 025067, 025065, 025066, 002095,
+               002096, 002097, 002016, 002083, 002080, 002081, 001093, 002084, 002085, 002086,
+               002082, 008041, 301011 ]
+"301125" = [  001033, 001034, 025060, 001007, 002019, 001012 ]
+"301126" = [  001087, 001015, 002149, 301011, 301012, 301021 ]
+"301128" = [  001081, 001082, 001083, 001095, 002015, 002016, 002017, 002066, 002067, 002080,
+               002081, 002082, 002083, 002084, 002085, 002086, 002095, 002096, 002097, 002103,
+               002191, 025061, 035035 ]
+"302001" = [  010004, 010051, 010061, 010063 ]
+"302002" = [  010004, 007004, 010003, 010061, 010063 ]
+"302003" = [  011011, 011012, 012004, 012006, 013003, 020001, 020003, 020004, 020005 ]
+"302004" = [  020010, 008002, 020011, 020013, 020012, 020012, 020012 ]
+"302005" = [  008002, 020011, 020012, 020013 ]
+"302006" = [  010004, 010051, 010062, 010063 ]
+"302011" = [  302001, 302003, 302004 ]
+"302012" = [  302002, 302003, 302004 ]
+"302013" = [  302006, 302003, 101000, 031001, 302005 ]
+"302021" = [  022001, 022011, 022021 ]
+"302022" = [  022002, 022012, 022022 ]
+"302023" = [  022003, 022013, 022023 ]
+"302024" = [  302022, 101002, 302023 ]
+"302031" = [  302001, 010062, 007004, 010009 ]
+"302032" = [  007032, 012101, 012103, 013003 ]
+"302033" = [  007032, 020001 ]
+"302034" = [  007032, 013023 ]
+"302035" = [  302032, 302033, 302034, 007032, 302004, 101000, 031001, 302005 ]
+"302036" = [  105000, 031001, 008002, 020011, 020012, 020014, 020017 ]
+"302037" = [  020062, 013013, 012113 ]
+"302038" = [  020003, 004024, 020004, 020005 ]
+"302039" = [  004024, 014031 ]
+"302040" = [  007032, 102002, 004024, 013011 ]
+"302041" = [  007032, 004024, 004024, 012111, 004024, 004024, 012112 ]
+"302042" = [  007032, 002002, 008021, 004025, 011001, 011002, 008021, 103002, 004025, 011043,
+               011041 ]
+"302043" = [  302038, 101002, 302039, 302040, 302041, 302042, 007032 ]
+"302044" = [  004024, 002004, 013033 ]
+"302045" = [  004024, 014002, 014004, 014016, 014028, 014029, 014030 ]
+"302046" = [  004024, 004024, 012049 ]
+"302047" = [  102003, 008002, 020054 ]
+"302048" = [  005021, 007021, 020012, 005021, 007021 ]
+"302049" = [  008002, 020011, 020013, 020012, 020012, 020012, 008002 ]
+"302050" = [  008041, 005021, 007005, 202130, 006021, 202000, 008041, 201131, 202129, 002115,
+               010004, 002115, 013003, 202000, 201000, 002115, 011001, 011002, 002115, 102002,
+               012101, 004024, 002115, 012103, 012102, 101003, 020012, 020011, 020013, 101002,
+               020003 ]
+"302051" = [  010004, 010051, 007004, 010003, 012004, 012051, 012016, 012017, 013004, 102004,
+               008051, 008020 ]
+"302052" = [  007032, 007033, 012101, 002039, 012102, 012103, 013003 ]
+"302053" = [  007032, 007033, 020001 ]
+"302054" = [  302052, 302053, 007033, 302034, 007032, 302004, 101000, 031001, 302005 ]
+"302055" = [  020031, 020032, 020033, 020034, 020035, 020036, 020037, 020038 ]
+"302056" = [  002038, 007063, 022043, 007063 ]
+"302057" = [  302056, 302021, 302024 ]
+"302058" = [  007032, 007033, 004024, 004024, 012111, 004024, 004024, 012112 ]
+"302059" = [  007032, 007033, 002002, 008021, 004025, 011001, 011002, 008021, 103002, 004025,
+               011043, 011041 ]
+"302060" = [  302038, 302040, 302058, 302059 ]
+"302064" = [  007032, 007033, 002002, 008021, 004025, 011001, 011002, 008021, 103000, 031001,
+               004025, 011043, 011041 ]
+"302066" = [  020023, 020024, 020027, 020054, 020023, 020027, 020054, 020025, 020026, 020027,
+               020040, 020066, 020027, 020021, 020067, 020027 ]
+"302067" = [  001023, 004025, 002177, 101000, 031001, 020003, 103000, 031001, 005021, 020001,
+               005021, 101000, 031000, 302056, 103000, 031000, 033041, 020058, 022061, 101000,
+               031000, 302022, 101000, 031001, 302023, 104000, 031001, 020054, 020137, 020012,
+               020090, 103000, 031001, 020054, 020137, 020136, 004025, 013012, 004025, 011042,
+               104000, 031001, 008021, 004025, 011042, 008021, 115000, 031001, 008021, 004015,
+               008021, 004025, 011001, 011002, 008021, 004015, 008021, 004025, 011001, 011002,
+               008021, 004025, 004015, 103000, 031001, 004025, 004025, 020003, 110000, 031001,
+               004025, 004025, 005021, 005021, 020054, 020024, 020025, 020026, 020027, 020063
+               ]
+"302069" = [  007032, 007033, 033041, 020001 ]
+"302070" = [  007032, 007033, 011001, 011002, 011043, 011041, 011016, 011017 ]
+"302071" = [  007032, 007033, 008021, 004025, 011001, 011002, 008021, 103002, 004025, 011043,
+               011041, 004025, 011016, 011017 ]
+"302072" = [  007032, 007033, 012101, 012103, 013003 ]
+"302073" = [  020010, 105004, 008002, 020011, 020012, 033041, 020013 ]
+"302074" = [  020003, 004025, 020004, 020005 ]
+"302075" = [  008021, 004025, 013055, 013058, 008021 ]
+"302076" = [  020021, 020022, 026020, 020023, 020024, 020025, 020026 ]
+"302077" = [  007032, 007033, 004025, 012111, 012112, 007032, 004025, 012112 ]
+"302078" = [  002176, 020062, 002177, 013013 ]
+"302079" = [  007032, 002175, 002178, 004025, 013011 ]
+"302080" = [  002185, 004025, 013033 ]
+"302081" = [  004025, 014031 ]
+"302082" = [  004025, 014002, 014004, 014016, 014028, 014029, 014030 ]
+"302083" = [  004025, 008023, 010004, 011001, 011002, 012101, 013003, 008023 ]
+"302084" = [  302031, 302072, 103000, 031000, 101005, 307063, 007061, 101000, 031000, 302069,
+               007032, 007033, 105000, 031000, 020031, 020032, 002038, 022043, 302021, 101000,
+               031000, 302078, 012113, 101000, 031000, 302004, 105000, 031001, 008002, 020011,
+               020012, 033041, 020013, 302036, 101000, 031000, 302047, 008002, 101000, 031000,
+               302048 ]
+"302085" = [  105000, 031000, 020003, 103002, 004024, 020004, 020005, 101000, 031000, 302175,
+               102000, 031000, 004025, 302076, 102000, 031000, 004025, 013059, 007032, 007033,
+               008021, 004025, 011001, 011002, 008021, 103003, 004025, 011043, 011041, 004025,
+               011016, 011017, 302077, 007033, 302041, 106000, 031000, 007032, 002175, 002178,
+               102005, 004024, 013011, 007032, 103000, 031000, 002185, 101002, 302044, 102000,
+               031000, 101002, 302039, 102000, 031000, 101002, 302045, 101000, 031000, 302046,
+               101000, 031000, 302083 ]
+"302089" = [  020101, 020102, 020103, 020104, 020105, 020106, 020107, 020108 ]
+"302090" = [  002038, 007063, 022045 ]
+"302091" = [  020001, 004024, 013011 ]
+"302175" = [  008021, 004025, 013155, 013058, 008021 ]
+"303001" = [  007003, 011001, 011002 ]
+"303002" = [  007004, 011001, 011002 ]
+"303003" = [  007004, 010003, 012001, 012003 ]
+"303004" = [  007004, 010003, 012001, 012003, 011001, 011002 ]
+"303011" = [  007003, 008001, 011001, 011002 ]
+"303012" = [  007004, 008001, 011001, 011002 ]
+"303013" = [  007004, 008001, 010003, 012001, 013003, 011001, 011002 ]
+"303014" = [  007004, 008001, 010003, 012001, 012003, 011001, 011002 ]
+"303021" = [  007004, 007004, 204007, 031021 ]
+"303022" = [  303021, 010003, 204000 ]
+"303023" = [  303021, 012001, 204000 ]
+"303024" = [  303021, 013016, 204000 ]
+"303025" = [  002025, 204007, 031021, 012063, 204000 ]
+"303026" = [  007004, 008003, 204007, 031021, 012001, 204000 ]
+"303027" = [  007004, 204007, 031021, 010003, 204000 ]
+"303031" = [  007004, 008003, 007021, 007022, 008012, 012061 ]
+"303032" = [  020011, 020016 ]
+"303033" = [  020010, 020016 ]
+"303040" = [  008041, 004025, 004026, 301021, 301122, 201131, 202129, 025069, 007004, 013003,
+               202000, 201000, 002013, 012101, 010009, 102002, 008040, 035035 ]
+"303041" = [  002152, 002023, 007004, 011001, 011002, 002153, 002154, 012071 ]
+"303050" = [  004086, 008042, 007004, 005015, 006015, 011001, 011002 ]
+"303051" = [  004086, 008042, 007004, 005015, 006015, 011061, 011062 ]
+"303052" = [  004086, 008042, 007009, 005015, 006015, 011001, 011002 ]
+"303053" = [  004086, 008042, 007009, 005015, 006015, 011061, 011062 ]
+"303054" = [  004086, 008042, 007004, 010009, 005015, 006015, 012101, 012103, 011001, 011002
+               ]
+"303055" = [  004086, 008042, 007009, 005015, 006015, 012101, 013009, 012103, 011001, 011002
+               ]
+"304001" = [  008003, 010004, 012001, 011001, 011002 ]
+"304002" = [  008003, 010004, 011001, 011002 ]
+"304003" = [  008003, 012001 ]
+"304004" = [  008003, 010004, 020010, 012001 ]
+"304005" = [  002024, 007004, 007004, 013003 ]
+"304006" = [  014001, 014001, 014003 ]
+"304011" = [  002163, 002164, 008012, 007024, 002057, 008021, 004001, 004002, 004003, 004004,
+               008021, 004024, 110004, 008021, 004004, 004005, 004006, 008021, 004004, 004005,
+               004006, 011001, 011002, 103010, 002163, 007004, 012001 ]
+"304030" = [  027031, 028031, 010031 ]
+"304031" = [  001041, 001042, 001043 ]
+"304032" = [  002153, 002154, 020081, 020082, 020012 ]
+"304033" = [  002152, 002166, 002167, 002153, 002154, 012075, 012076, 012063 ]
+"304034" = [  102004, 027001, 028001, 007022, 005043, 020010, 020016, 033003, 010040 ]
+"304035" = [  002153, 002154, 012063, 008001, 012063, 008001, 012063, 008001, 008003, 012063,
+               008003, 012063, 008003, 012063, 008003 ]
+"304036" = [  020082, 008012, 020082, 008012, 020081, 008003, 020081, 008003, 020081, 008003,
+               020081, 008003 ]
+"304037" = [  002153, 002154, 012063, 008011, 012063, 008011, 012063, 008011, 008003, 012063,
+               008003, 012063, 008003, 012063 ]
+"305001" = [  011001, 011002, 013060, 013071 ]
+"305002" = [  301012, 012001, 013003, 014051, 013060, 013072, 013080, 013081, 013082, 013083,
+               013084 ]
+"305003" = [  301012, 004065, 101000, 031001, 305001 ]
+"305004" = [  301030, 305002, 305003 ]
+"305006" = [  013072, 013082, 013019, 012001, 013073, 013060 ]
+"305007" = [  301029, 301012, 004065, 101000, 031001, 305006 ]
+"305008" = [  305006, 012030 ]
+"305009" = [  301029, 301012, 004065, 101000, 031001, 305008 ]
+"305010" = [  305008, 002091, 002091 ]
+"305011" = [  301029, 301012, 004065, 101000, 031001, 305010 ]
+"305016" = [  014021, 007004, 013003, 011002, 011001, 011041, 011043 ]
+"305017" = [  013080, 013081, 013083, 013085, 013084 ]
+"305018" = [  301029, 301012, 004065, 103000, 031001, 305008, 305016, 305017 ]
+"306001" = [  002032, 102000, 031001, 007062, 022042 ]
+"306002" = [  002031, 022004, 022031 ]
+"306003" = [  002002, 011011, 011012, 012004 ]
+"306004" = [  002032, 002033, 103000, 031001, 007062, 022043, 022062 ]
+"306005" = [  002031, 103000, 031001, 007062, 022004, 022031 ]
+"306006" = [  306003, 306002, 022063 ]
+"306007" = [  001012, 001014, 306008, 004024, 027003, 028003 ]
+"306008" = [  002034, 002035, 002036 ]
+"306011" = [  301021, 001075, 002147, 301011, 301013 ]
+"306012" = [  002007, 008015, 008032, 306029 ]
+"306013" = [  306012, 301011, 301013, 022120, 022121, 004015, 004065, 102000, 031001, 022038,
+               022040 ]
+"306014" = [  306012, 301011, 301013, 022120, 022121, 004015, 004065, 101000, 031001, 022038
+               ]
+"306016" = [  301011, 301013, 010004, 010051, 302032, 007032, 002002, 008021, 004025, 011001,
+               011002, 004025, 011043, 011041, 025026, 012060 ]
+"306017" = [  002032, 008034, 106000, 031002, 007065, 008080, 033050, 022045, 008080, 033050,
+               008034 ]
+"306018" = [  002032, 008034, 109000, 031002, 007065, 008080, 033050, 022045, 008080, 033050,
+               022064, 008080, 033050, 008034 ]
+"306019" = [  001075, 301011, 301012, 022042, 022120, 022121, 004015, 004065 ]
+"306020" = [  001075, 301011, 301012, 022042, 022120, 022121, 004075, 004065 ]
+"306021" = [  001075, 301011, 301012, 022122, 022123, 012001, 303002 ]
+"306022" = [  001075, 301011, 301012, 022038, 022039 ]
+"306023" = [  001015, 301023, 301011, 301012, 022038, 022039, 022120, 022121 ]
+"306024" = [  306020, 102006, 022038, 022039 ]
+"306025" = [  306019, 102006, 022038, 022039 ]
+"306027" = [  001005, 001052, 002047, 301011, 301013 ]
+"306028" = [  306027, 301011, 301013, 301021 ]
+"306029" = [  025170, 025171, 025172 ]
+"306030" = [  306027, 306029, 111000, 031001, 033002, 301011, 301013, 025025, 025025, 025026,
+               022185, 004015, 004065, 101004, 022182 ]
+"306031" = [  306027, 306029, 001053, 033002, 301011, 301013, 301011, 301013, 022185, 022182,
+               004016, 004066, 101000, 031001, 022184 ]
+"306033" = [  002033, 007063, 022064 ]
+"306034" = [  002031, 003010, 002040, 022005, 022032 ]
+"306035" = [  112000, 031002, 007062, 008080, 033050, 007065, 008080, 033050, 022043, 008080,
+               033050, 022064, 008080, 033050 ]
+"306036" = [  112000, 031002, 007062, 008080, 033050, 007065, 008080, 033050, 022031, 008080,
+               033050, 022004, 008080, 033050 ]
+"306037" = [  109000, 031002, 007062, 008080, 033050, 007065, 008080, 033050, 022188, 008080,
+               033050 ]
+"306038" = [  010004, 010051, 007033, 012101, 012103, 013003, 007033, 008021, 004025, 011001,
+               011002, 008021, 004025, 011041, 004025, 007033, 002005, 007063, 022049 ]
+"306039" = [  022078, 022070, 022073, 022074, 022071, 022076, 022077 ]
+"306040" = [  022078, 022082, 106000, 031001, 022080, 022069, 022086, 022087, 022088, 022089
+               ]
+"306041" = [  002032, 102000, 031001, 007062, 022043 ]
+"306042" = [  002169, 007033, 008021, 004025, 011001, 011002 ]
+"307001" = [  301031, 302011 ]
+"307002" = [  301032, 302011 ]
+"307003" = [  307001, 101000, 031001, 302005 ]
+"307004" = [  307002, 101000, 031001, 302005 ]
+"307005" = [  307001, 101004, 302005 ]
+"307006" = [  307002, 101004, 302005 ]
+"307007" = [  301031, 302012 ]
+"307008" = [  301032, 302012 ]
+"307009" = [  301031, 302013 ]
+"307011" = [  001063, 002001, 301011, 301012, 301024, 007006, 011001, 011016, 011017, 011002,
+               011041, 007006, 012001, 012003, 010052, 020009 ]
+"307012" = [  103000, 031001, 008023, 005021, 020001 ]
+"307013" = [  106000, 031001, 001064, 008014, 020061, 008014, 020061, 020018 ]
+"307014" = [  101000, 031001, 020019 ]
+"307015" = [  101000, 031001, 302005, 020002 ]
+"307016" = [  101000, 031001, 020020 ]
+"307017" = [  101000, 031001, 011070 ]
+"307018" = [  008016, 102000, 031001, 008017, 301012, 104000, 031001, 007006, 011001, 011002,
+               011041, 020009, 101000, 031001, 020001, 307014 ]
+"307020" = [  307011, 307014, 307016 ]
+"307021" = [  307011, 307012, 307013, 307014, 307015, 307016, 307017, 307018, 307015 ]
+"307022" = [  001015, 301011, 301012, 301022, 008021, 004025, 010004, 012001, 013003, 033038,
+               008022, 106025, 002020, 001050, 005021, 007021, 015031, 015032, 008060, 015033,
+               015034, 008060, 015033, 015034, 015035, 201131, 202129, 013016, 202000, 201000,
+               015011 ]
+"307030" = [  015001, 015002 ]
+"307031" = [  008022, 008023, 015001, 008023, 015001, 008023, 015002 ]
+"307041" = [  301001, 001015, 301024, 301011, 301012, 301070, 307030 ]
+"307042" = [  301001, 001015, 301024, 301011, 301012, 008021, 004025, 301070, 307031 ]
+"307043" = [  301001, 001015, 301024, 301011, 301012, 301074, 307030 ]
+"307044" = [  301001, 001015, 301024, 301011, 301012, 008021, 004025, 301074, 307031 ]
+"307045" = [  001063, 008079, 002001, 301011, 301012, 301023, 007030, 007031, 007032, 011001,
+               011016, 011017, 008054, 011083, 011084, 011002, 008054, 011085, 011086, 011041,
+               008054, 007032, 012023, 012024, 007032, 010052, 020009 ]
+"307046" = [  020060, 102000, 031001, 005021, 020059 ]
+"307047" = [  105000, 031001, 008002, 020011, 020012, 020013, 020092, 020002, 020091 ]
+"307048" = [  008016, 102000, 031001, 008017, 301012, 112000, 031000, 007032, 011001, 008054,
+               011083, 011084, 011002, 008054, 011085, 011086, 011041, 008054, 007032, 020009,
+               101000, 031000, 020060, 307014, 307047 ]
+"307049" = [  102000, 031000, 022043, 022021 ]
+"307050" = [  101000, 031000, 020085, 102000, 031001, 001064, 020085, 105000, 031001, 001064,
+               020086, 020087, 020088, 020089 ]
+"307051" = [  307045, 307046, 307013, 307014, 307047, 307016, 307017, 307049, 307050, 101000,
+               031001, 307048 ]
+"307052" = [  001063, 008039, 301011, 301012, 008079, 008039, 301011, 301012, 008039, 301011,
+               301012, 301023, 007030, 007031 ]
+"307053" = [  007032, 011001, 008054, 011083, 011084, 011002, 008054, 011085, 011086, 011041,
+               008054, 007032, 020009, 020060, 307014, 307047 ]
+"307054" = [  007032, 008039, 004003, 004004, 008023, 012023, 008039, 004003, 004004, 008023,
+               012023, 008023, 007032 ]
+"307055" = [  033045, 008016, 008039, 004003, 301012, 008039, 004003, 301012, 307053 ]
+"307056" = [  307052, 307053, 307054, 101000, 031001, 307055 ]
+"307060" = [  007061, 012030 ]
+"307061" = [  301031, 101005, 307060 ]
+"307062" = [  301032, 101005, 307060 ]
+"307063" = [  007061, 012130 ]
+"307071" = [  301090, 004074, 004023, 008023, 010004, 010051, 007004, 010009, 007032, 012101,
+               002051, 004051, 012118, 004052, 012119, 013004, 008023, 012151, 007032, 102005,
+               008050, 008020, 014032, 014033, 008050, 008020, 102018, 008052, 008022, 007032,
+               008053, 004003, 012152, 008053, 004003, 012153, 008053, 004003, 008023, 012101,
+               008053, 004003, 008023, 012101, 008023, 007032, 002002, 008053, 004003, 011046,
+               008053, 004003, 004004, 004023, 007032, 013060, 013051, 004053, 008050, 008020,
+               102006, 008052, 008022, 008053, 004003, 013052, 007032 ]
+"307072" = [  004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010004, 010051,
+               007004, 010009, 007032, 012101, 002051, 004051, 012118, 004052, 012119, 013004,
+               012151, 007032, 014032, 008023, 004001, 004001, 004002, 004003, 004004, 004022,
+               007032, 008023, 013060, 004053, 008023, 102008, 008050, 008020 ]
+"307073" = [  307071, 307072 ]
+"307074" = [  301001, 004001, 004002, 301021, 007030, 007032, 112000, 031001, 004003, 004004,
+               004024, 102003, 008023, 012101, 008023, 004004, 004024, 013060, 013012, 013013
+               ]
+"307076" = [  301090, 004074, 004023, 008023, 010004, 010051, 007004, 010009, 007032, 012101,
+               002051, 004051, 012118, 004052, 012119, 013004, 008023, 012151, 007032, 102005,
+               008050, 008020, 014032, 014033, 008050, 008020, 102018, 008052, 008022, 007032,
+               008053, 004003, 012152, 008053, 004003, 012153, 008053, 004003, 008023, 012101,
+               008053, 004003, 008023, 012101, 008023, 007032, 002002, 008053, 004003, 011046,
+               008053, 004003, 004004, 004074, 004023, 007032, 013060, 013051, 004053, 008050,
+               008020, 102006, 008052, 008022, 008053, 004003, 013052, 007032 ]
+"307077" = [  004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010004, 010051,
+               007004, 010009, 007032, 012101, 002051, 004051, 012118, 004052, 012119, 013004,
+               012151, 007032, 014032, 008023, 004001, 004001, 004002, 004003, 004004, 004074,
+               004022, 007032, 008023, 013060, 004053, 008023, 102008, 008050, 008020 ]
+"307078" = [  307076, 307077 ]
+"307079" = [  301090, 302031, 302035, 302036, 101000, 031000, 302047, 008002, 101000, 031000,
+               302048, 302037, 102000, 031000, 022061, 020058, 101000, 031000, 302056, 101000,
+               031000, 302055, 302043, 302044, 101000, 031001, 302045, 101000, 031000, 302046
+               ]
+"307080" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 302043, 302044,
+               101002, 302045, 302046 ]
+"307081" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012122, 013056,
+               013057, 020101, 020102, 020103, 020104, 020105, 020106, 020107, 020108, 302043,
+               302044, 101002, 302045, 302046 ]
+"307082" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012121, 012122,
+               302043, 302044, 101002, 302045, 302046 ]
+"307083" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012122, 302043,
+               302044, 101002, 302045, 302046 ]
+"307084" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 020055, 101000,
+               031001, 205001, 302043, 302044, 101002, 302045, 302046 ]
+"307086" = [  301090, 302031, 302035, 302036, 008002, 302037, 302066, 302043, 302044, 101002,
+               302045 ]
+"307087" = [  301001, 002001, 301011, 301012, 301023, 007030, 007031, 302001, 010062, 007004,
+               010009, 007032, 012101, 012103, 013003, 007032, 020001, 302004, 101000, 031001,
+               302005 ]
+"307088" = [  020003, 004024, 020004, 020005, 004024, 002004, 013033, 102002, 004024, 014031,
+               102002, 004024, 013011, 007032, 004024, 012111, 004024, 012112, 007032, 002002,
+               008021, 004025, 011001, 011002, 008021 ]
+"307089" = [  307087, 307088 ]
+"307090" = [  301092, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 302043, 302044,
+               101002, 302045, 302046 ]
+"307091" = [  301089, 301090, 008010, 301091, 302001, 007004, 010009, 302072, 103000, 031000,
+               101005, 307063, 007061, 101000, 031000, 302069, 007032, 007033, 105000, 031000,
+               020031, 020032, 002038, 022043, 302021, 101000, 031000, 302078, 101000, 031000,
+               302073, 101000, 031000, 302074, 101000, 031000, 302175, 102000, 031000, 004025,
+               302076, 302071, 302077, 007033, 101000, 031000, 302079, 007032, 101000, 031000,
+               302080, 101000, 031000, 302081, 101000, 031000, 302082, 102000, 031000, 004025,
+               013059, 101000, 031000, 302083, 033005, 033006 ]
+"307096" = [  301090, 301089, 008010, 301091, 302084, 302085, 033005, 033006 ]
+"307101" = [  301089, 001019, 002001, 301011, 301012, 301021, 007030, 007032, 012101, 007032,
+               002177, 020062, 013013 ]
+"307182" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012120, 012122,
+               302043, 302044, 101002, 302045, 302046 ]
+"308001" = [  301033, 302011, 022042 ]
+"308002" = [  301034, 302011, 022042 ]
+"308003" = [  301035, 302011, 022042 ]
+"308004" = [  301036, 302011, 022042 ]
+"308005" = [  308004, 302024 ]
+"308006" = [  010004, 010061, 010063, 011001, 011002, 012004, 013003, 022042 ]
+"308007" = [  301055, 302011, 007062, 022042 ]
+"308009" = [  301093, 302001, 302054, 008002, 302055, 302057, 302060 ]
+"308010" = [  001011, 113000, 031001, 301011, 301012, 301021, 004080, 022049, 004080, 022059,
+               004080, 022005, 002042, 022032, 002042, 004080 ]
+"308011" = [  001011, 002001, 301011, 301012, 301023, 007030, 007031, 004074, 004023, 008023,
+               010051, 007032, 007033, 012101, 013004, 007032, 007033, 302056, 008023, 004003,
+               004004, 004023, 007032, 013060, 013051, 004053, 007032 ]
+"308012" = [  004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010051, 007032,
+               007033, 012101, 013004, 007032, 007033, 302056, 008023, 004001, 004001, 004002,
+               004003, 004004, 004022, 007032, 008023, 013060, 004053, 008023 ]
+"308013" = [  308011, 308012 ]
+"308021" = [  001011, 002001, 301011, 301012, 301023, 007030, 007031, 004074, 004023, 008023,
+               010051, 007032, 007033, 012101, 013004, 007032, 007033, 302056, 008023, 004003,
+               004004, 004074, 004023, 007032, 013060, 013051, 004053, 007032 ]
+"308022" = [  004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010051, 007032,
+               007033, 012101, 013004, 007032, 007033, 302056, 008023, 004001, 004001, 004002,
+               004003, 004004, 004074, 004022, 007032, 008023, 013060, 004053, 008023 ]
+"308023" = [  308021, 308022 ]
+"309001" = [  301037, 101000, 031001, 303011 ]
+"309002" = [  301038, 101000, 031001, 303011 ]
+"309003" = [  301037, 101000, 031001, 303012 ]
+"309004" = [  301038, 101000, 031001, 303012 ]
+"309005" = [  301037, 302004, 101000, 031001, 303013 ]
+"309006" = [  301038, 302004, 101000, 031001, 303013 ]
+"309007" = [  301037, 302004, 101000, 031001, 303014 ]
+"309008" = [  301038, 302004, 101000, 031001, 303014 ]
+"309011" = [  301039, 101000, 031001, 303011 ]
+"309012" = [  301039, 101000, 031001, 303012 ]
+"309013" = [  301039, 302004, 101000, 031001, 303013 ]
+"309014" = [  301039, 302004, 101000, 031001, 303014 ]
+"309015" = [  301040, 101000, 031001, 303011 ]
+"309016" = [  301040, 101000, 031001, 303012 ]
+"309017" = [  301040, 302004, 101000, 031001, 303013 ]
+"309018" = [  301040, 302004, 101000, 031001, 303014 ]
+"309019" = [  301031, 002003, 101000, 031001, 303011 ]
+"309020" = [  301031, 002003, 104000, 031001, 007003, 011003, 011004, 011005 ]
+"309030" = [  015004, 015005, 104000, 031001, 004015, 008006, 007004, 015003 ]
+"309031" = [  015004, 015005, 104000, 031001, 004025, 008006, 007004, 015003 ]
+"309040" = [  301075, 301076, 309030 ]
+"309041" = [  307041, 301075, 301076, 309030 ]
+"309042" = [  307042, 301075, 301076, 309030 ]
+"309043" = [  307043, 301075, 301076, 309030 ]
+"309044" = [  307044, 301075, 301076, 309030 ]
+"309045" = [  301075, 301076, 309031 ]
+"309046" = [  307041, 301075, 301076, 309031 ]
+"309047" = [  307042, 301075, 301076, 309031 ]
+"309048" = [  307043, 301075, 301076, 309031 ]
+"309049" = [  307044, 301075, 301076, 309031 ]
+"309050" = [  301110, 301113, 301114, 101000, 031002, 303050, 101000, 031001, 303051 ]
+"309051" = [  301110, 301113, 301114, 101000, 031002, 303052, 101000, 031001, 303053 ]
+"309052" = [  301111, 301113, 301114, 302049, 022043, 101000, 031002, 303054, 101000, 031001,
+               303051 ]
+"309053" = [  301112, 301113, 301114, 101000, 031002, 303054, 101000, 031001, 303051 ]
+"309054" = [  301001, 001011, 301011, 301012, 301021, 007030, 007031, 007007, 004023, 004059,
+               115000, 031001, 008001, 008023, 007004, 010009, 012101, 012103, 008023, 011001,
+               011002, 008023, 011019, 008050, 008020, 008050, 008020 ]
+"309055" = [  301111, 025061, 001081, 001082, 002067, 002095, 002096, 002097, 002081, 002082,
+               002084, 002191, 301113, 301114, 010004, 302032, 007032, 002002, 011001, 011002,
+               007032, 020003, 302049, 022043, 101000, 031002, 303055 ]
+"309060" = [  301123, 301121, 302050, 303040 ]
+"309061" = [  301120, 008041, 301122, 201131, 202129, 025069, 007004, 202000, 201000, 033007,
+               033035, 033015, 013009, 033007, 033035, 033015, 002013, 012101, 033007, 033035,
+               033015 ]
+"309062" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015, 033007 ]
+"309063" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015, 033007 ]
+"309064" = [  301120, 008041, 301122, 201131, 202129, 104002, 025069, 007004, 033035, 033015,
+               013003, 033035, 033015, 202000, 201000, 104002, 002013, 012101, 033035, 033015,
+               012103, 033035, 033015, 010009, 033035, 033015 ]
+"309065" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015 ]
+"309066" = [  301120, 008041, 301122, 008040, 201131, 202129, 025069, 007004, 013003, 202000,
+               201000, 002013, 012101, 012103, 010009, 010007, 011002, 011001 ]
+"309070" = [  001035, 001032, 001015, 001063, 301001, 301011, 301012, 301021, 207001, 010001,
+               207000, 008086, 007030, 025031, 008021, 004014, 010004, 010051, 010009, 020010,
+               013095, 128000, 031002, 113000, 031000, 008086, 007004, 011001, 011002, 012101,
+               012102, 012103, 010009, 103000, 031000, 011021, 011022, 011005, 104000, 031000,
+               008086, 007006, 011001, 011002, 105000, 031000, 008086, 007006, 012101, 012102,
+               012103 ]
+"309071" = [  301001, 002014, 002003, 301113, 301114, 301023, 007030, 007007, 103000, 031001,
+               007009, 011001, 011002 ]
+"310001" = [  301042, 303031, 303032, 101026, 303025 ]
+"310002" = [  301042, 303031, 303032, 101009, 303023 ]
+"310003" = [  301042, 303031, 303032, 101006, 303023 ]
+"310004" = [  301042, 303031, 303032, 101003, 303024 ]
+"310005" = [  301042, 303031, 303033, 101000, 031001, 303025 ]
+"310006" = [  301042, 303031, 303033, 101000, 031001, 303023 ]
+"310007" = [  301042, 303031, 303033, 101000, 031001, 303024 ]
+"310008" = [  310011, 101019, 310012, 002150, 025079, 025080, 033032, 014045 ]
+"310009" = [  310011, 101015, 310012 ]
+"310010" = [  310011, 101005, 310012 ]
+"310011" = [  008070, 001033, 001034, 008070, 001033, 001034, 001007, 002048, 005040, 025075,
+               201133, 005041, 201000, 005043, 025070, 033030, 033031, 004001, 004002, 004003,
+               004004, 004005, 202131, 201138, 004006, 201000, 202000, 005001, 006001, 202126,
+               007001, 202000, 007024, 005021, 007025, 005022, 033033, 002151, 012064, 002151,
+               012064, 002151, 012064, 002151, 012064 ]
+"310012" = [  002150, 025076, 025077, 025078, 033032, 201132, 202129, 012063, 202000, 201000
+               ]
+"310013" = [  001007, 005040, 004001, 004002, 004003, 004004, 004005, 004006, 005001, 006001,
+               007025, 005043, 025085, 201131, 202129, 002150, 008023, 008072, 014027, 008072,
+               014027, 002150, 008023, 008072, 014027, 008072, 014027, 002150, 008023, 008072,
+               014027, 008072, 014027, 202000, 201000, 201132, 202129, 002150, 008023, 008072,
+               012063, 008072, 012063, 002150, 008023, 008072, 012063, 008072, 012063, 008023,
+               008072, 012063, 008072, 012063, 002150, 008023, 008072, 012063, 008072, 012063,
+               202000, 201000 ]
+"310014" = [  301072, 303041, 304011 ]
+"310015" = [  301072, 007024, 010002, 303041, 101003, 304032, 002152, 002024, 007004, 007004,
+               013003, 101003, 304033 ]
+"310016" = [  301072, 007024, 010002, 303041, 101012, 304032, 002152, 002024, 007004, 007004,
+               013003, 101012, 304033 ]
+"310018" = [  001007, 005040, 004001, 004043, 004004, 004005, 004006, 207002, 026030, 207000,
+               005002, 006002, 033072, 007025, 005022, 207002, 015001, 207000, 008003, 207001,
+               010004, 207000, 008003, 008003, 033042, 207001, 007004, 207000, 207002, 015001,
+               207000, 008003, 207002, 020081, 207000, 020065, 008029, 207004, 015030, 207000,
+               008075 ]
+"310019" = [  001007, 002019, 301011, 301013, 301023, 007025, 008021, 007025, 008021, 007025,
+               008021, 008029, 005040, 008075, 008003, 010004, 008003, 207002, 015001, 207000,
+               033070, 015030, 207002, 020081, 207000, 008003, 033042, 007004, 207002, 015001,
+               207000, 008003, 113021, 007004, 007004, 207002, 008021, 015005, 008021, 015005,
+               033007, 207000, 008026, 101020, 025143, 008026, 008043, 109015, 007004, 008090,
+               207006, 015008, 207000, 008090, 207002, 033007, 207000, 008043, 033071, 108008,
+               202124, 201107, 002071, 201000, 202000, 207002, 020081, 207000 ]
+"310020" = [  310022, 301011, 301013, 301021, 304034, 310021 ]
+"310021" = [  108000, 031001, 201131, 202129, 007004, 007004, 202000, 201000, 015020, 010002
+               ]
+"310022" = [  001007, 002019, 001033, 002172 ]
+"310023" = [  301072, 030021, 030022, 008012, 007024, 007025, 010002, 101012, 304032, 105002,
+               002152, 002024, 007004, 007004, 013003, 101012, 304033 ]
+"310024" = [  301072, 030021, 030022, 008012, 007024, 007025, 010002, 101003, 304032, 105002,
+               002152, 002024, 007004, 007004, 013003, 101003, 304033 ]
+"310025" = [  001007, 008021, 004001, 004002, 004003, 004004, 004005, 201138, 202131, 004006,
+               202000, 201000, 201132, 005041, 201000, 201129, 005043, 201000, 005002, 006002,
+               013040, 020029, 104024, 005042, 012163, 021083, 021084, 115003, 004001, 004002,
+               004003, 201142, 202131, 004026, 202000, 201000, 005001, 006001, 201138, 202129,
+               007001, 202000, 201000, 008021, 004001, 004002, 004003, 004004, 004005, 005040,
+               101003, 012070, 025054, 101004, 025055, 008007, 104028, 005002, 006002, 002111,
+               005021 ]
+"310026" = [  310022, 025060, 008021, 301011, 301012, 201138, 202131, 004006, 202000, 201000,
+               033039, 033007, 304030, 304031, 002020, 001050, 202127, 304030, 202000, 304031,
+               201133, 202131, 004016, 202000, 201000, 301021, 304030, 010035, 005021, 010036,
+               113000, 031002, 301021, 005021, 108000, 031001, 002121, 007040, 015037, 008023,
+               201125, 015037, 201000, 008023, 033007, 108000, 031002, 007007, 015036, 008023,
+               201123, 015036, 201000, 008023, 033007, 116000, 031002, 007009, 010004, 012001,
+               013001, 008023, 201120, 010004, 201000, 201122, 012001, 201000, 201123, 013001,
+               201000, 008023, 033007, 008003, 007009, 010004, 008023, 201120, 010004, 201000,
+               008023, 033007 ]
+"310027" = [  301071, 301011, 301013, 301021, 030021, 030022, 010002, 304036, 002152, 002167,
+               101011, 304035 ]
+"310028" = [  301071, 301011, 301013, 301021, 030021, 030022, 010002, 304036, 002152, 002167,
+               101011, 304037 ]
+"310029" = [  110000, 031001, 201138, 202130, 007004, 007004, 202000, 201000, 015020, 010002,
+               012101, 013098 ]
+"310030" = [  310022, 301011, 301013, 301021, 304034, 310029 ]
+"310050" = [  310051, 310052, 101000, 031002, 310053, 101004, 310054, 020010, 310052, 101015,
+               310053, 310052, 101005, 310053 ]
+"310051" = [  001007, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 007025, 005022, 102009, 002151, 012064 ]
+"310052" = [  002019, 301011, 301012, 202131, 201138, 004006, 201000, 202000, 301021, 007024,
+               005021, 005043 ]
+"310053" = [  201134, 005042, 201000, 025076, 033032, 012163 ]
+"310054" = [  201134, 005042, 201000, 025076, 033032, 201131, 202129, 102002, 008023, 014027,
+               008023, 202000, 201000 ]
+"310055" = [  310051, 310052, 102020, 025076, 025052, 101000, 031002, 025050 ]
+"310060" = [  001007, 001033, 002019, 002020, 301011, 301012, 207003, 004006, 207000, 304030,
+               301021, 007024, 005021, 007025, 005022, 008075, 201133, 005041, 201000, 005045,
+               005043, 005040, 010001, 201129, 007002, 201000, 202127, 201125, 021166, 201000,
+               202000, 008012, 020010, 020014, 002165, 033075, 107003, 008076, 006029, 006029,
+               025140, 025141, 033076, 033077, 008076, 033078, 033003, 104000, 031002, 201133,
+               005042, 201000, 014044 ]
+"310061" = [  001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000,
+               005040, 005041, 005043, 033079, 033080, 033078, 301021, 201129, 007002, 201000,
+               007024, 005021, 007025, 005022, 025075, 111000, 031002, 005042, 202131, 002153,
+               002154, 202000, 002104, 012066, 012163, 012158, 012159, 033081 ]
+"310062" = [  001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000,
+               005040, 201133, 005041, 005043, 201000, 008076, 033082, 301021, 201129, 007002,
+               201000, 007024, 005021, 007025, 005022, 008072, 008029, 105000, 031002, 005042,
+               002155, 033083, 014043, 015042 ]
+"310063" = [  001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000,
+               005040, 201133, 005041, 005043, 201000, 033082, 301021, 201129, 007002, 201000,
+               007024, 005021, 007025, 005022, 008075, 008013, 008072, 033084, 007062, 033086,
+               022043, 007062, 007062, 033086, 022043 ]
+"310064" = [  001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000,
+               005040, 201133, 005041, 005043, 201000, 033082, 301021, 201129, 007002, 201000,
+               007024, 005021, 007025, 005022, 008075, 008029, 008046, 033085, 033086, 015049,
+               033086, 102011, 002155, 015062 ]
+"310065" = [  001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000,
+               005040, 033082, 301021, 201129, 007002, 201000, 007024, 005021, 007025, 005022,
+               008075, 033071, 033070, 020021, 015045, 015046, 008065, 033087, 008003, 010004,
+               008003, 207002, 015001, 207000, 105012, 010040, 010004, 207003, 015005, 207000,
+               008046, 107019, 010040, 010004, 008090, 207006, 015008, 207000, 008090 ]
+"310066" = [  001007, 001033, 001034, 002019, 002020, 301011, 301012, 207003, 004006, 207000,
+               005040, 033082, 301021, 201129, 007002, 201000, 007024, 005021, 007025, 005022,
+               008075, 020081, 207004, 015030, 207000, 020065, 015041, 033086, 033087, 033088,
+               008003, 207001, 007004, 207000, 008003, 207002, 015001, 207000, 008003, 033042,
+               207001, 007004, 207000, 207002, 015001, 207000, 008003, 001032, 207002, 015001,
+               207000 ]
+"311001" = [  301051, 007002, 012001, 011001, 011002, 011031, 011032, 011033, 020041 ]
+"311002" = [  301065, 301066, 311003, 311004 ]
+"311003" = [  010070, 011001, 011002, 012001, 013002 ]
+"311004" = [  101000, 031000, 011034, 101000, 031000, 011035, 101000, 031000, 011075, 101000,
+               031000, 011076, 101000, 031000, 033025, 101000, 031000, 033026 ]
+"311005" = [  001008, 001023, 301021, 301011, 301013, 007010, 008009, 011001, 011002, 011031,
+               011036, 012101, 033025 ]
+"311006" = [  007010, 011001, 011002, 002064, 012101, 012103 ]
+"311007" = [  007010, 301021, 011001, 011002, 002064, 012101, 012103 ]
+"311008" = [  001008, 301011, 301013, 301021, 008004, 101000, 031001, 311006 ]
+"311009" = [  001008, 301011, 301013, 301021, 008004, 101000, 031001, 311007 ]
+"311010" = [  001008, 001023, 001006, 001110, 001111, 001112, 204002, 031021, 301011, 301013,
+               301021, 007010, 010053, 008009, 011001, 011002, 002064, 011100, 011101, 011102,
+               011103, 011104, 012101, 002170, 201144, 202133, 013002, 202000, 201000, 201135,
+               202130, 013003, 202000, 201000, 101000, 031000, 012103, 033026, 101000, 031000,
+               020042, 103000, 031000, 020043, 020044, 020045, 101000, 031000, 033025, 103000,
+               031001, 011075, 011076, 011039, 102000, 031000, 011037, 011077, 103000, 031000,
+               011034, 011035, 011036, 204000, 119000, 031001, 301011, 301013, 301021, 007007,
+               011105, 204007, 031021, 011076, 011075, 204000, 011106, 011107, 011108, 011109,
+               012101, 011001, 201130, 011084, 201000 ]
+"311011" = [  001023, 008004, 301011, 301013, 005002, 006002, 007004, 011001, 011002, 012101,
+               106000, 031001, 008046, 201139, 202126, 015026, 202000, 201000, 106000, 031001,
+               008046, 201138, 202130, 015026, 202000, 201000, 015052, 015053, 015054, 015055,
+               007004, 007004, 013099, 013100, 013101 ]
+"312001" = [  301043, 304001 ]
+"312002" = [  301043, 304002 ]
+"312003" = [  301042, 304003 ]
+"312004" = [  301042, 304004 ]
+"312005" = [  301042, 020014 ]
+"312006" = [  301044, 304005 ]
+"312007" = [  301042, 304006 ]
+"312010" = [  001007, 005040, 002021, 005041, 004001, 004043 ]
+"312011" = [  202131, 201149, 004006, 201000, 202126, 010002, 202000, 005043, 005053 ]
+"312012" = [  202129, 201132, 101019, 012063, 201000, 202000 ]
+"312013" = [  005042, 202129, 201135, 012063, 201000, 202000 ]
+"312014" = [  312010, 312011, 105056, 301023, 005042, 005052, 312012, 312013 ]
+"312015" = [  109011, 301023, 005042, 005052, 202129, 201132, 101004, 012063, 202000, 201000
+               ]
+"312016" = [  312010, 312011, 312015 ]
+"312017" = [  109008, 301023, 005042, 005052, 202129, 201132, 101003, 012063, 202000, 201000
+               ]
+"312018" = [  312010, 312011, 312017 ]
+"312019" = [  301047, 301048, 015015, 029002, 021076, 106012, 201129, 006030, 201000, 102012,
+               005030, 021075, 021066 ]
+"312020" = [  301047, 301048, 015015, 029002, 021076, 104012, 006030, 102012, 005030, 021075,
+               021066 ]
+"312021" = [  301047, 101003, 301049, 011012, 011011, 021067 ]
+"312022" = [  301047, 008022, 011012, 011050, 022070, 022026, 312041, 010050, 021068, 021071,
+               021072, 021073, 312042, 021062, 015011 ]
+"312023" = [  301047, 103003, 008022, 012061, 022050, 021069, 021085 ]
+"312024" = [  312020, 008060, 008022, 008060, 008022, 025014, 022101, 022097, 022098, 022099,
+               022100 ]
+"312025" = [  312019, 008060, 008022, 008060, 008022, 025014, 022101, 022097, 022098, 022099,
+               022100 ]
+"312026" = [  301046, 301011, 301013, 301023, 312031, 101004, 312030, 021110, 301023, 321027,
+               021111, 301023, 321027, 021112, 301023, 321027, 021113, 301023, 321027 ]
+"312027" = [  301047, 105009, 301023, 007021, 012061, 007021, 012061, 021085, 021070 ]
+"312028" = [  301046, 301011, 301013, 301023, 008025, 201136, 004006, 201000, 312031, 312032,
+               101004, 312030, 101002, 312033, 021110, 301023, 321028, 021111, 301023, 321028,
+               021112, 301023, 321028, 021113, 301023, 321028 ]
+"312030" = [  201130, 202129, 011012, 202000, 201000, 011052, 201135, 202130, 011011, 202000,
+               201000, 011053, 021104 ]
+"312031" = [  005034, 006034, 021109, 011081, 011082, 021101, 021102, 021103 ]
+"312032" = [  021120, 021121, 013055, 021122 ]
+"312033" = [  002104, 008022, 012063, 012065 ]
+"312041" = [  201141, 202130, 007001, 201000, 202000 ]
+"312042" = [  021077, 021078, 021079, 021080, 021081, 021082 ]
+"312045" = [  001007, 002019, 001096, 025061, 005040, 301011, 301013, 301021, 007002, 012180,
+               012181, 012182, 012183, 012184, 012185, 002174, 021086, 012186, 021087, 012187,
+               033043 ]
+"312050" = [  001007, 002019, 001096, 025061, 005040, 301011, 301013, 301021, 007025, 005022,
+               010080, 027080, 008003, 007004, 013093, 008003, 201131, 202129, 007004, 007004,
+               202000, 201000, 013095 ]
+"312051" = [  001007, 002019, 001096, 025061, 005040, 008075, 301011, 301013, 301021, 001012,
+               201131, 001013, 201000, 010032, 010033, 010034, 007002, 008012, 025110, 025111,
+               025102, 002104, 025103, 025104, 025105, 025106, 025107, 025108, 002111, 002121,
+               002026, 002027, 021130, 021131, 021132, 021133, 021064, 025014, 021134, 107018,
+               005030, 105024, 201130, 006030, 201000, 021135, 021136, 033044 ]
+"312052" = [  001007, 002019, 001096, 025061, 005040, 025120, 025121, 025124, 025125, 025122,
+               025123, 301011, 301013, 301021, 007002, 002119, 033047, 010081, 010082, 010083,
+               010084, 002116, 002117, 002118, 002156, 002157, 014055, 022150, 022151, 022152,
+               022153, 022154, 022155, 022156, 022157, 022158, 022159, 021137, 021138, 021139,
+               021140, 021141, 021142, 010085, 010086, 010087, 010088, 010089, 010090, 010091,
+               010092, 010093, 011002, 025126, 025127, 025128, 025129, 025130, 025131, 025132,
+               025133, 025134, 025135, 025136, 025137, 013096, 013097, 011095, 011096, 012188,
+               012189, 002158, 002159, 033052, 033053, 021143, 021144 ]
+"312053" = [  001007, 002019, 001096, 025061, 005040, 008075, 301011, 301013, 301021, 001012,
+               201131, 001013, 201000, 010032, 010033, 010034, 007002, 008012, 025110, 025111,
+               025102, 002104, 025103, 025104, 025105, 025106, 025107, 025108, 011001, 011002,
+               022160, 025138, 201130, 202129, 022021, 202000, 201000, 033048, 033049, 002026,
+               002027, 021130, 021131, 021132, 021133, 025014, 106036, 005030, 104024, 201130,
+               006030, 201000, 022161, 033044 ]
+"312055" = [  005033, 005040, 006034, 010095, 021157 ]
+"312056" = [  025060, 001032, 011082, 011081, 020095, 020096, 021155, 201133, 021101, 021102,
+               201000 ]
+"312057" = [  201130, 202129, 011012, 202000, 201000, 201131, 202129, 011011, 202000, 201000,
+               021156, 021104 ]
+"312058" = [  301125, 301011, 301013, 301021, 312055, 021150, 101003, 321030 ]
+"312059" = [  312056, 101000, 031001, 312057 ]
+"312060" = [  025060, 025062, 040001, 040002, 021062, 021151, 021152, 021153, 021154, 021062,
+               021088, 040003, 040004, 040005, 040006, 040007, 020065, 040008, 040009, 040010
+               ]
+"312061" = [  312058, 312060, 312059 ]
+"312070" = [  001007, 002019, 001144, 001124, 030010, 301011, 301013, 301021, 007012, 015012,
+               012165, 012166, 012167, 012168, 027010, 028010, 002099, 013048, 025081, 025082,
+               025083, 025084, 012080, 012081, 012082, 025174, 033028 ]
+"312071" = [  001007, 002019, 002139, 001096, 001040, 025061, 005040, 005044, 008075, 008077,
+               004001, 004002, 004003, 004004, 004005, 004006, 005001, 006001, 010081, 022156,
+               022142, 101020, 022149, 022143, 022144, 021137, 101020, 021181, 021138, 021180,
+               021177, 021178, 021179, 010079, 010085, 010086, 010087, 010089, 010090, 010091,
+               010092, 010093, 011097, 021093, 101020, 021182, 033053, 022151, 022145, 022148,
+               022146, 022147, 025126, 025128, 025127, 021176, 025132, 025133, 025182, 025183,
+               025180, 025184, 025181, 033080 ]
+"313009" = [  021001, 101000, 031001, 021001 ]
+"313010" = [  021036, 101000, 031001, 021036 ]
+"313031" = [  006002, 006012, 101000, 031002, 030001 ]
+"313032" = [  005002, 005012, 101000, 031002, 313031 ]
+"313041" = [  006002, 110000, 031001, 104000, 031001, 006012, 101000, 031012, 030001, 006012,
+               101000, 031001, 030001 ]
+"313042" = [  005002, 005012, 101000, 031002, 313041 ]
+"313043" = [  006002, 005002, 005012, 112000, 031001, 110000, 031001, 104000, 031001, 006012,
+               101000, 031011, 030001, 006012, 101000, 031001, 030001 ]
+"315001" = [  001011, 301011, 301012, 301023, 306001 ]
+"315002" = [  001011, 301011, 301012, 301023, 306004 ]
+"315003" = [  001087, 001085, 001086, 002036, 002148, 002149, 022055, 022056, 022067, 301011,
+               301012, 301021, 008080, 033050, 109000, 031002, 007065, 008080, 033050, 022045,
+               008080, 033050, 022064, 008080, 033050 ]
+"315004" = [  001079, 001011, 001103, 001087, 001019, 001080, 005036, 001036, 001013, 001012,
+               301011, 301012, 301021, 007032, 007033, 002002, 011002, 011001, 007032, 007033,
+               012101, 012103, 007032, 007033, 302021, 002031, 002030, 022005, 022032, 022063,
+               008080, 033050, 022178, 022177, 022067, 008041, 026021, 026022, 026023, 022068,
+               025061, 008041, 008080, 002171, 302090, 002171, 002032, 315005 ]
+"315005" = [  106000, 031002, 007063, 008080, 033050, 022043, 008080, 033050 ]
+"315007" = [  301003, 001019, 001103, 001087, 001036, 001115, 001080, 005036, 301011, 301012,
+               301021, 001079, 001023, 022063, 101000, 031000, 302001, 101000, 031000, 302021,
+               101000, 031000, 302052, 101000, 031000, 302059, 022067, 002171, 302090, 306033,
+               306034, 002171, 022067, 002038, 022067, 022068, 002171, 002033, 002032, 022056,
+               003011, 306035, 107000, 031000, 002032, 003010, 002031, 002040, 022056, 003011,
+               306036, 104000, 031000, 002032, 003012, 003011, 306037 ]
+"315008" = [  301126, 306038, 101000, 031000, 302091, 101000, 031000, 302082, 101000, 031000,
+               306039, 101000, 031000, 306040, 102000, 031000, 002005, 306041, 102000, 031000,
+               002005, 306004, 101000, 031000, 306005 ]
+"315009" = [  001087, 001019, 002149, 008021, 301011, 301012, 301021, 208016, 001051, 208000,
+               002148, 001012, 001014, 033022, 033023, 033027, 025026, 002034, 022060, 007070,
+               002190, 008021, 301011, 301012, 002005, 022043, 002033, 022059, 008029, 013115,
+               103000, 031000, 002005, 306004, 002005, 010004, 010051, 102000, 031000, 007033,
+               012101, 101000, 031000, 306042, 101000, 031000, 306039 ]
+"316001" = [  301011, 004004, 301023, 001021, 002041, 019001, 010051, 019002, 019003, 019004
+               ]
+"316002" = [  008021, 004001, 004002, 004003, 004004, 004005, 001033, 008021, 004001, 004002,
+               004003, 004004, 004005, 007002, 007002 ]
+"316003" = [  110000, 031001, 008011, 008007, 104000, 031001, 005002, 006002, 010002, 011002,
+               008007, 008011 ]
+"316004" = [  111000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               011031, 008007, 008011 ]
+"316005" = [  108000, 031001, 008005, 008007, 005002, 006002, 001026, 019001, 008007, 008005
+               ]
+"316006" = [  112000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               020011, 020012, 008007, 008011 ]
+"316007" = [  110000, 031001, 008011, 008007, 104000, 031001, 005002, 006002, 019005, 019006,
+               008007, 008011 ]
+"316008" = [  111000, 031001, 008001, 008007, 008023, 103000, 031001, 005002, 006002, 010002,
+               008023, 008007, 008001 ]
+"316009" = [  111000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               020041, 008007, 008011 ]
+"316010" = [  107000, 031001, 008011, 008007, 001022, 005002, 006002, 008007, 008011 ]
+"316011" = [  117000, 031001, 008011, 001022, 008007, 102000, 031001, 005002, 006002, 008021,
+               004001, 004002, 004003, 004004, 004005, 020090, 008021, 008007, 008011 ]
+"316020" = [  001033, 001025, 001027, 301011, 301012 ]
+"316021" = [  301023, 002041, 019001, 019007, 019005, 019006, 019008, 008005, 010004, 008005,
+               010004, 019007, 008005, 008021, 004075, 011040, 019007, 105004, 005021, 005021,
+               102002, 019003, 019004 ]
+"316022" = [  001032, 002041, 019001, 019010, 118000, 031001, 008021, 004014, 008005, 301023,
+               019005, 019006, 010004, 011041, 008021, 004075, 011040, 019008, 105004, 005021,
+               005021, 102002, 019003, 019004 ]
+"316026" = [  316020, 316021 ]
+"316027" = [  316020, 316022 ]
+"316030" = [  301014, 001037, 010064, 008019, 001062, 008019, 001065, 008019, 001062, 008019
+               ]
+"316031" = [  008021, 301011, 301012, 301027, 019005, 019006, 020028, 008021 ]
+"316032" = [  008021, 301011, 301012, 301027, 008021 ]
+"316033" = [  008021, 301011, 301012, 101000, 031001, 301027, 008021 ]
+"316034" = [  008079, 316030, 008011, 001022, 008007, 301023, 008007, 020090, 316031, 101000,
+               031000, 316032, 101000, 031001, 316033, 008011, 008079 ]
+"316035" = [  008079, 316030, 008011, 020023, 020021, 020008, 316031, 008011, 008079 ]
+"316036" = [  008079, 316030, 008011, 001027, 316031, 101000, 031000, 316032, 101000, 031001,
+               316033, 008011, 008079 ]
+"316037" = [  008079, 316030, 008011, 011031, 316031, 008011, 008079 ]
+"316038" = [  008079, 316030, 008011, 020041, 020021, 316031, 008011, 008079 ]
+"316039" = [  008079, 316030, 008011, 020024, 316031, 008011, 008079 ]
+"316040" = [  316030, 008079, 301014, 001037, 010064, 008079 ]
+"316050" = [  301001, 301011, 301012, 002160, 008005, 005002, 006002, 008005, 019100, 019005,
+               019006, 019101, 019102, 019103, 019104, 019105 ]
+"316052" = [  301005, 301011, 301012, 001007, 025150, 122000, 031001, 001027, 019150, 019106,
+               008005, 005002, 006002, 008005, 019107, 019005, 019006, 019108, 019109, 019110,
+               019111, 019112, 019113, 019114, 019115, 019116, 019117, 019118, 019119 ]
+"316060" = [  301011, 301012, 005002, 006002, 019005, 019006, 005002, 006002, 005002, 006002,
+               004074, 020048, 011041, 013055 ]
+"316061" = [  301011, 301012, 005002, 006002, 019005, 019006, 102000, 031001, 005002, 006002,
+               102000, 031001, 005002, 006002, 004074, 020048, 011041, 013055 ]
+"316071" = [  301014, 101000, 031002, 316075, 101000, 031002, 316076 ]
+"316072" = [  301014, 101000, 031002, 316077, 101000, 031002, 316078, 101000, 031002, 316079
+               ]
+"316073" = [  301014, 101000, 031002, 316080, 101000, 031002, 316081 ]
+"316074" = [  001039, 008021, 301014, 301027, 008021 ]
+"316075" = [  008079, 008041, 316074, 020006, 033042, 020013, 033042, 020001, 020025, 020026,
+               008041, 008079 ]
+"316076" = [  008079, 008041, 316074, 020006, 020025, 020026, 008041, 008079 ]
+"316077" = [  008079, 008011, 316074, 011031, 008011, 008079 ]
+"316078" = [  008079, 008041, 316074, 033042, 011012, 008041, 008079 ]
+"316079" = [  008079, 008011, 316074, 020023, 020024, 008011, 008079 ]
+"316080" = [  008079, 008011, 316074, 020041, 008011, 008079 ]
+"316081" = [  008079, 008041, 316074, 008041, 008079 ]
+"318001" = [  301025, 024011 ]
+"318003" = [  301026, 024005, 024004, 024021 ]
+"318004" = [  301025, 004023, 013011, 024005, 024004, 024022 ]
+"321001" = [  002101, 002114, 002105, 002106, 002107, 002121 ]
+"321003" = [  021051, 021014, 021017, 021030 ]
+"321004" = [  301031, 002003, 101000, 031001, 321003 ]
+"321005" = [  025004, 002121, 002122, 002123, 002124, 002125, 002126, 002127, 002128, 002129,
+               002130, 002131 ]
+"321006" = [  025001, 025002, 025003, 025005 ]
+"321007" = [  025009, 025010, 025011, 025012, 025013, 025015, 025016, 025017 ]
+"321008" = [  025006, 025007, 025008 ]
+"321009" = [  025018, 025019 ]
+"321010" = [  002101, 007002, 002102, 002103, 002104, 002105, 002106, 002107, 002108, 002109,
+               002110, 002132, 002133 ]
+"321011" = [  030031, 030032, 029002 ]
+"321012" = [  101000, 031001, 002135 ]
+"321021" = [  002003, 002101, 201130, 002106, 201000, 201132, 202130, 002121, 202000, 201000,
+               201133, 202129, 025001, 202000, 201000 ]
+"321022" = [  007007, 204001, 031021, 011001, 204000, 011002, 204001, 031021, 011006, 204000,
+               021030 ]
+"321023" = [  007007, 021091, 021030, 202129, 021014, 201129, 021017, 202000, 201000 ]
+"321024" = [  007007, 204001, 031021, 012007, 011006, 204000, 021030 ]
+"321025" = [  007007, 021091, 021030, 202129, 021014, 201129, 021017, 202000, 201000, 021092,
+               021030, 025092, 201129, 202129, 021017, 202000, 201000 ]
+"321026" = [  007007, 204001, 031021, 012007, 025091, 011071, 011072, 011073, 011074, 204000
+               ]
+"321027" = [  021118, 202129, 201132, 002112, 201000, 201131, 002111, 201000, 202000, 002104,
+               021105, 021106, 021107, 021114, 021115, 021116, 008018, 021117 ]
+"321028" = [  021118, 202129, 201132, 002112, 201000, 201131, 002111, 201000, 202000, 002104,
+               021123, 021106, 021107, 021114, 021115, 021116, 008018, 021117 ]
+"321030" = [  008085, 202129, 201131, 002111, 201000, 202000, 002134, 021062, 021063, 021158,
+               021159, 021160, 021161, 021162, 021163, 021164, 021165, 021166 ]
+"322028" = [  001007, 002019, 004001, 004002, 004003, 004004, 004005, 004006, 005001, 006001,
+               027001, 028001, 027001, 028001, 027001, 028001, 027001, 028001, 010001, 014019,
+               007025, 010080, 005023, 020010, 008003, 007004, 014026, 020014, 013093, 105000,
+               031001, 007004, 007004, 008043, 008044, 015021 ]
+"340001" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 033060, 033061, 033062, 033063, 033064, 033065, 101010, 340002, 101087,
+               340003, 002019, 025051, 101007, 340004 ]
+"340002" = [  025140, 025141, 025142 ]
+"340003" = [  104100, 201136, 005042, 201000, 014046 ]
+"340004" = [  005060, 005061, 025085, 105006, 005042, 025142, 014047, 025142, 014048 ]
+"340005" = [  001007, 002019, 001096, 025061, 005044, 005040, 001030, 004001, 004002, 004003,
+               004004, 004005, 004007, 005001, 006001, 008029, 008074, 008077, 040011, 025097,
+               025095, 025098, 025099, 021144, 025096, 040012, 040013, 021169, 022151, 022162,
+               022163, 025160, 025133, 022156, 022164, 022165, 022166, 021137, 021138, 022167,
+               021139, 021118, 021145, 021146, 021147, 022168, 022169, 022170, 025161, 025162,
+               022171, 022172, 022173, 022174, 021170, 021171, 022175, 021172, 021118, 021173,
+               021174, 021175, 002153, 012063, 002153, 012063, 002153, 012063, 013090, 013091,
+               007002, 011097, 011098, 007002, 011095, 011096, 010096, 010081, 010082, 010083,
+               010101, 025132, 025163, 025126, 025128, 025164, 010085, 010097, 010086, 010087,
+               010092, 010088, 010089, 010098, 010099, 010090, 010100, 010093, 025127, 040014
+               ]
+"340007" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 103003, 025140, 025141, 033060, 033061, 033062, 033063, 033064, 033065,
+               040020, 101010, 340002, 101087, 340003, 002019, 025051, 101007, 340004, 020081,
+               008029, 020083, 008029, 040018, 040019, 040021, 040022 ]
+"340008" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 103003, 025140, 025141, 033060, 033061, 033062, 033063, 033064, 033065,
+               040020, 101010, 340002, 104000, 031002, 201136, 005042, 201000, 014046, 108003,
+               025140, 025141, 040026, 040016, 025062, 101000, 031002, 040017, 002019, 025051,
+               101007, 340004, 020081, 008029, 020083, 008029, 040018, 040019, 040021, 040022
+               ]
+"340009" = [  001007, 001031, 002019, 002020, 301011, 301013, 005040, 201136, 005041, 201000,
+               025071, 005001, 005001, 006001, 006001, 107064, 106032, 008012, 008013, 008065,
+               008072, 013039, 040015 ]
+"340010" = [  001007, 002019, 001096, 025061, 005044, 005040, 001030, 004001, 004002, 004003,
+               004004, 004005, 004007, 005001, 006001, 008029, 008074, 008077, 040011, 025097,
+               025095, 025098, 025099, 021144, 025096, 040012, 040013, 021169, 040023, 040024,
+               040025, 022151, 022162, 022163, 025160, 025133, 022156, 022164, 022165, 022166,
+               021137, 021138, 022167, 021139, 021118, 021145, 021146, 021147, 022168, 022169,
+               022170, 025161, 025162, 022171, 022172, 022173, 022174, 021170, 021171, 022175,
+               021172, 021118, 021173, 021174, 021175, 002153, 012063, 002153, 012063, 002153,
+               012063, 013090, 013091, 007002, 011097, 011098, 007002, 011095, 011096, 010096,
+               010081, 010082, 010083, 010101, 025132, 025163, 025126, 025128, 025164, 010085,
+               010097, 010086, 010087, 010092, 010088, 010089, 010098, 010099, 010090, 010100,
+               010093, 025127, 040014, 010102 ]
+"340011" = [  001007, 002019, 001096, 025061, 005044, 005040, 001030, 004001, 004002, 004003,
+               004004, 004005, 004007, 005001, 006001, 008029, 008077, 040011, 025097, 025112,
+               025113, 021148, 021169, 040024, 040025, 002153, 022189, 022191, 022130, 025167,
+               025166, 022190, 022131, 022132, 022133, 021183, 021184, 022134, 021185, 021118,
+               021186, 021187, 021188, 002153, 012063, 002153, 012063, 013090, 013160, 007002,
+               011097, 007002, 011095, 011096, 010096, 010081, 010082, 010083, 010101, 002153,
+               025165, 025126, 025128, 025164, 010085, 010086, 010087, 010092, 010088, 010089,
+               010098, 010099, 010090, 010100, 010093, 025127, 040014, 010102 ]
+"340012" = [  001007, 002019, 008091, 005001, 006001, 007002, 005063, 005064, 005066, 005041,
+               005067, 301011, 301012, 004007, 008091, 005001, 006001, 107000, 031001, 005042,
+               002153, 002104, 040028, 007024, 040027, 012063 ]
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/1003.table b/definitions/bufr/tables/0/wmo/7/codetables/1003.table
new file mode 100644
index 0000000..ff4f928
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/1003.table
@@ -0,0 +1,8 @@
+0 0 ATARCTICA
+1 1 REGION I
+2 2 REGION II
+3 3 REGION III
+4 4 REGION IV
+5 5 REGION V
+6 6 REGION VI
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/10063.table b/definitions/bufr/tables/0/wmo/7/codetables/10063.table
new file mode 100644
index 0000000..13c6331
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/10063.table
@@ -0,0 +1,10 @@
+0 0 INCREASING, THEN DECREASING: ATMOSPHERIC PRESURE THE SAME OR"     HIGHER THAN 3 HOURS AGO (OR 24 HOURS AGO )
+1 1 INCREASING, THEN STEADY; OR INCREASING; THEN MORE SLOWLY
+2 2 INCREASING (STEADILY OR UNSTEADILY )
+3 3 DECREASING OR STEADY, THEN INCREASING; RAPIDLY
+4 4 STEADY; ATMOSPHERIC PRESSURE THE SAME AS 3 HOURS AGO (OR 24"    HOURS)
+5 5 DECREASING; THEN INCREASING; ATMOSPHERIC PRESSURE THE SAME O"    R LOWER THAN 3 HOURS AGO
+6 6 DECREASING, THEN STEADY; OR DECREASING, DECREASING MORE SLOW"    LY
+7 7 DECREASING (STEADILY OR UNSTEADELY )
+8 8 STEADY OR INCREASING, THEN DECREASING; OR DECREASING, THEN"    DECREASING MORE RAPIDLY
+15 15 MISSING
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/10064.table b/definitions/bufr/tables/0/wmo/7/codetables/10064.table
new file mode 100644
index 0000000..88ba38a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/10064.table
@@ -0,0 +1,4 @@
+0 0 SUBSONIC
+1 1 TRANSONIC
+2 2 SUPERSONIC
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/1007.table b/definitions/bufr/tables/0/wmo/7/codetables/1007.table
new file mode 100644
index 0000000..711e681
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/1007.table
@@ -0,0 +1,132 @@
+1 1 ERS 1
+2 2 ERS 2
+3 3 METOP-1
+4 4 METOP-2
+5 5 METOP-3
+20 20 SPOT1
+21 21 SPOT2
+22 22 SPOT3
+23 23 SPOT4
+40 40 OERSTED
+41 41 CHAMP
+42 42 TERRASAR-X
+50 50 METEOSAT 3
+51 51 METEOSAT 4
+52 52 METEOSAT 5
+53 53 METEOSAT 6
+54 54 METEOSAT 7
+55 55 METEOSAT 8
+56 56 METEOSAT 9
+57 57 METEOSAT 10
+58 58 METEOSAT 1
+59 59 METEOSAT 2
+60 60 ENVISAT
+70 70 METEOSAT 11
+120 120 ADEOS
+121 121 ADEOS II
+150 150 GMS 3
+151 151 GMS 4
+152 152 GMS 5
+171 171 MTSAT-1R
+172 172 MTSAT-2
+200 200 NOAA 8
+201 201 NOAA 9
+202 202 NOAA 10
+203 203 NOAA 11
+204 204 NOAA 12
+205 205 NOAA 14
+206 206 NOAA 15
+207 207 NOAA 16
+208 208 NOAA 17
+209 209 NOAA 18
+220 220 LANDSAT 5
+221 221 LANDSAT 4
+222 222 LANDSAT 7
+240 240 DMSP 7
+241 241 DMSP 8
+242 242 DMSP 9
+243 243 DMSP 10
+244 244 DMSP 11
+245 245 DMSP 12
+246 246 DMSP 13
+247 247 DMSP 14
+248 248 DMSP 15
+249 249 DMSP 16
+250 250 GOES 6
+251 251 GOES 7
+252 252 GOES 8
+253 253 GOES 9
+254 254 GOES 10
+255 255 GOES 11
+256 256 GOES 12
+257 257 GOES 13
+258 258 GOES 14
+259 259 GOES 15
+260 260 JASON-1
+261 261 JASON-2
+281 281 QUIKSCAT
+282 282 TRMM
+283 283 CORIOLIS
+285 285 DMSP17
+310 310 GOMS 1
+311 311 GOMS 2
+320 320 METEOR 2-21
+321 321 METEOR 3-5
+322 322 METEOR 3M-1
+323 323 METEOR 3M-2
+341 341 RESURS 01-4
+430 430 INSAT 1B
+431 431 INSAT 1C
+432 432 INSAT 1D
+450 450 INSAT 2A
+451 451 INSAT 2B
+452 452 INSAT 2E
+470 470 INSAT 3A
+471 471 INSAT 3D
+472 472 INSAT 3E
+500 500 FY-1C
+501 501 FY-1D
+510 510 FY-2
+512 512 FY-2B
+513 513 FY-2C
+514 514 FY-2D
+700 700 TIROS M (ITOS 1)
+701 701 NOAA 1
+702 702 NOAA 2
+703 703 NOAA 3
+704 704 NOAA 4
+705 705 NOAA 5
+706 706 NOAA 6
+707 707 NOAA 7
+708 708 TIROS-N
+710 710 GOES (SMS 1)
+711 711 GOES (SMS 2)
+720 720 TOPEX
+721 721 GFO (GEOSAT FOLLOW ON)
+722 722 GRACE A
+723 723 GRACE B
+731 731 GOES 1
+732 732 GOES 2
+733 733 GOES 3
+734 734 GOES 4
+735 735 GOES 5
+740 740 COSMIC-1
+741 741 COSMIC-2
+742 742 COSMIC-3
+743 743 COSMIC-4
+744 744 COSMIC-5
+745 745 COSMIC-6
+763 763 NIMBUS 3
+764 764 NIMBUS 4
+765 765 NIMBUS 5
+766 766 NIMBUS 6
+767 767 NIMBUS 7
+780 780 ERBS
+781 781 UARS
+782 782 EARTH PROBE
+783 783 TERRA
+784 784 AQUA
+785 785 AURA
+800 800 SUNSAT
+820 820 SAC-C
+1023 1023 MISSIN VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/1031.table b/definitions/bufr/tables/0/wmo/7/codetables/1031.table
new file mode 100644
index 0000000..c105793
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/1031.table
@@ -0,0 +1,219 @@
+0 0 WMO SECRETARIAT
+1 1 MELBOURNE
+2 2 MELBOURNE
+3 3 MELBOURNE
+4 4 MOSCOW
+5 5 MOSCOW
+6 6 MOSCOW
+7 7 US NATIONAL WEATHER SERVICE, NATIONAL CENTRES FOR ENVIRONMEN"    TAL PREDICTION(NCEP)
+8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONSGATEWAY (NWSTG"    )
+9 9 US NATIONAL WEATHER SERVICE - OTHER
+10 10 CAIRO (RSMC)
+11 11 CAIRO (RSMC)
+12 12 DAKAR (RSMC)
+13 13 DAKAR (RSMC)
+14 14 NAIROBI (RSMC)
+15 15 NAIROBI (RSMC)
+16 16 CASABLANCA (RSMC)
+17 17 TUNIS (RSMC)
+18 18 TUNIS CASABLANCA (RSMC)
+19 19 TUNIS CASABLANCA (RSMC)
+20 20 LAS PALMAS
+21 21 ALGIERS (RSMC)
+22 22 ACMAD
+23 23 MOZAMBIQUE NMC
+24 24 PRETORIA (RSMC)
+25 25 LA R?UNION (RSMC)
+26 26 KHABAROVSK (RSMC)
+27 27 KHABAROVSK (RSMC)
+28 28 NEW DELHI (RSMC)
+29 29 NEW DELHI (RSMC)
+30 30 NOVOSIBIRSK (RSMC)
+31 31 NOVOSIBIRSK (RSMC)
+32 32 TASHKENT (RSMC)
+33 33 JEDDAH (RSMC)
+34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+35 35 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+36 36 BANGKOK
+37 37 ULAN BATOR
+38 38 BEIJING (RSMC)
+39 39 BEIJING (RSMC)
+40 40 SEOUL
+41 41 BUENOS AIRES (RSMC)
+42 42 BUENOS AIRES (RSMC)
+43 43 BRASILIA (RSMC)
+44 44 BRASILIA (RSMC)
+45 45 SANTIAGO
+46 46 BRAZILIAN SPACE AGENCY - INPE
+47 47 COLOMBIA NMC
+48 48 ECUADOR NMC
+49 49 PERU NMC                  50
+50 50 VENEZUELA NMC
+51 51 MIAMI (RSMC)
+52 52 MIAMI RSMC, NATIONAL HURRICANE CENTER
+53 53 MONTREAL (RSMC)
+54 54 MONTREAL (RSMC)
+55 55 SAN FRANCISCO
+56 56 ARINC CENTRE
+57 57 U.S. AIR FORCE AIR FORCE GLOBAL WEATHER CENTRAL
+58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTERE"    Y, CA
+59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, USA
+60 60 UNITED STATES NATIONAL CENTRE FOR ATMOSPHERIC RESEARCH (NCAR"    )
+61 61 SERVICE ARGOS - LANDOVER
+62 62 U.S. NAVAL OCEANOGRAPHIC OFFICE
+63 63 IRI (INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIET"    Y)
+64 64 HONOLULU (RSMC)
+65 65 DARWIN (RSMC)
+66 66 DARWIN (RSMC)
+67 67 MELBOURNE (RSMC)
+69 69 WELLINGTON (RSMC)
+70 70 WELLINGTON (RSMC)
+71 71 NADI (RSMC)
+72 72 SINGAPORE
+73 73 MALAYSIA NMC
+74 74 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+75 75 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+76 76 MOSCOW (RSMC)
+78 78 OFFENBACH (RSMC)
+79 79 OFFENBACH (RSMC)
+80 80 ROME (RSMC)
+81 81 ROME (RSMC)
+82 82 NORRK?PING
+83 83 NORRK?PING
+84 84 TOULOUSE (RSMC)
+85 85 TOULOUSE (RSMC)
+86 86 HELSINKI
+87 87 BELGRADE
+88 88 OSLO
+89 89 PRAGUE
+90 90 EPISKOPI
+91 91 ANKARA
+92 92 FRANKFURT/MAIN)
+93 93 LONDON (WAFC)
+94 94 COPENHAGEN
+95 95 ROTA
+96 96 ATHENS
+97 97 EUROPEAN SPACE AGENCY (ESA)
+98 98 EUROPEAN CENTRE FOR MEDIUM-RANGE WEATHER FORECAST (ECMWF)
+99 99 DE BILT
+100 100 BRAZZAVILLE
+101 101 ABIDJAN
+102 102 LIBYAN ARAB JAMAHIRIYA NMC
+103 103 MADAGASCAR NMC
+104 104 MAURITIUS NMC
+105 105 NIGER NMC
+106 106 SEYCHELLES NMC
+107 107 UGANDA NMC
+108 108 TANZANIA NMC
+109 109 ZIMBABWE NMC
+110 110 HONG-KONG, CHINA
+111 111 AFGHANISTAN NMC          110
+112 112 BAHRAIN NMC
+113 113 BANGLADESH NMC
+114 114 BHUTAN NMC
+115 115 CAMBODIA NMC
+116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA NMC
+117 117 ISLAMIC REPUBLIC OF IRAN NMC
+118 118 IRAQ NMC
+119 119 KAZAKHSTAN NMC
+120 120 KUWAIT NMC
+121 121 KYRGYZ REPUBLIC NMC
+122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC NMC
+123 123 MACAO, CHINA
+124 124 MALDIVES NMC
+125 125 MYANMAR NMC
+126 126 NEPAL NMC
+127 127 OMAN NMC
+128 128 PAKISTAN NMC
+129 129 QATAR NMC
+130 130 REPUBLIC OF YEMEN NMC
+131 131 SRI LANKA NMC
+132 132 TAJIKISTAN NMC
+133 133 TURKMENISTAN NMC
+134 134 UNITED ARAB EMIRATES NMC
+135 135 UZBEKISTAN NMC
+136 136 SOCIALIST REPUBLIC OF VIET NAM NMC
+140 140 BOLIVIA NMC
+141 141 GUYANA NMC
+142 142 PARAGUAY NMC
+143 143 SURINAME NMC
+144 144 URUGUAY NMC                     140
+145 145 FRENCH GUYANA
+146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE
+150 150 ANTIGUA AND BARBUDA NMC
+151 151 BAHAMAS NMC
+152 152 BARBADOS NMC
+153 153 BELIZE NMC
+154 154 BRITISH CARIBBEAN TERRITORIES CENTRE
+155 155 SAN JOSE
+156 156 CUBA NMC
+157 157 DOMINICA NMC
+158 158 DOMINICAN REPUBLIC NMC
+159 159 EL SALVADOR NMC
+160 160 US NOAA/NESDIS
+161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH
+162 162 GUATEMALA NMC
+163 163 HAITI NMC
+164 164 HONDURAS NMC
+165 165 JAMAICA NMC
+166 166 MEXICO
+167 167 NETHERLANDS ANTILLES AND ARUBA NMC
+168 168 NICARAGUA NMC
+169 169 PANAMA NMC
+170 170 SAINT LUCIA NMC
+171 171 TRINIDAD AND TOBAGO NMC
+172 172 FRENCH DEPARTMENTS IN RA IV
+173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA)
+190 190 COOK ISLANDS NMC
+191 191 FRENCH POLYNESIA NMC
+192 192 TONGA NMC
+193 193 VANUATU NMC
+194 194 BRUNEI DARUSSALAM NMC
+195 195 INDONESIA NMC
+196 196 KIRIBATI NMC
+197 197 FEDERATED STATES OF MICRONESIA NMC
+198 198 NEW CALEDONIA NMC
+199 199 NIUE
+200 200 PAPUA NEW GUINEA NMC
+201 201 PHILIPPINES NMC
+202 202 SAMOA NMC
+203 203 SOLOMON ISLANDS NMC
+210 210 FRASCATI (ESA/ESRIN)
+211 211 LANNION
+212 212 LISBOA
+213 213 REYKJAVIK
+214 214 MADRID
+215 215 Z?RICH
+216 216 SERVICE ARGOS TOULOUSE
+217 217 BRATISLAVA
+218 218 BUDAPEST
+219 219 LJUBLJANA
+220 220 WARSAW
+221 221 ZAGREB
+222 222 ALBANIA NMC
+223 223 ARMENIA NMC
+224 224 AUSTRIA NMC
+225 225 AZERBAIJAN NMC
+226 226 BELARUS NMC
+227 227 BELGIUM NMC
+228 228 BOSNIA AND HERZEGOVINA NMC
+229 229 BULGARIA NMC
+230 230 CYPRUS NMC
+231 231 ESTONIA NMC
+232 232 GEORGIA NMC
+233 233 DUBLIN
+234 234 ISRAEL NMC
+235 235 JORDAN NMC
+236 236 LATVIA NMC
+237 237 LEBANON NMC
+238 238 LITHUANIA NMC
+239 239 LUXEMBOURG
+240 240 MALTA NMC
+241 241 MONACO
+242 242 ROMANIA NMC
+243 243 SYRIAN ARAB REPUBLIC NMC
+244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA NMC
+245 245 UKRAINE NMC
+246 246 REPUBLIC OF MOLDOVA NMC
+254 254 EUMETSAT OPERATION CENTRE
+255 255 MISSING VALUE               219
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/1032.table b/definitions/bufr/tables/0/wmo/7/codetables/1032.table
new file mode 100644
index 0000000..2bf1e24
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/1032.table
@@ -0,0 +1,41 @@
+1 1 PREPROCESSING CONSISTENCY CHECK
+10 10 BIAS CORRECTION
+20 20 BLACK LIST
+30 30 OI MASS AND WIND ANALYSIS, REPORT STATUS
+31 31 OI HUMIDITY ANALYSIS, REPORT STATUS
+32 32 OI ANALYSIS VARIABLES
+33 33 OI ANALYSIS, FIRST GUESS Q/C
+34 34 OI ANALYSIS, FINAL ANALYSIS Q/C
+35 35 OI ANALYSIS, EVENT FLAGS
+40 40 DYNAMIC INITIALISATION SCHEME
+41 41 NORMAL MODE INITIALISATION SCHEME
+50 50 SURFACE ANALYSIS, REPORT STATUS
+51 51 SURFACE ANALYSIS VARIABLES
+52 52 SURFACE ANALYSIS Q/C
+53 53 SURFACE ANALYSIS, EVENT FLAGS
+60 60 3D VAR REPORT STATUS
+61 61 3D VAR ANALYSIS VARIABLES
+62 62 3D VAR Q/C
+63 63 3D VAR EVENT FLAGS
+80 80 PRESAT FIRST GUESS
+81 81 PRESAT ERROR STANDARD DEVIATIONS
+82 82 PRESAT BIAS ESTIMATES
+83 83 PRESAT BRIGHTNESS TEMPERATURE QUALITY FLAGS
+84 84 PRESAT SAMARY FLAGS
+90 90 FIRST GUESS (6 HOUR FORECAST)
+91 91 FIRST GUESS (FGAT INTERPOLATED)
+100 100 PRESCAT AMBIGUITY REMOVAL
+110 110 WAM FIRST GUESS
+111 111 WAM ANALYSIS
+112 112 WAM FORECAST
+113 113 WAM Q/C
+201 201 COLLOCATION WITH SURFACE DATA
+202 202 COLLOCATION WITH TEMP/PILOT DATA
+203 203 COLLOCATION WITH AIREP DATA
+204 204 COLLOCATION WITH SATOB DATA
+205 205 COLLOCATION WITH TOVS DATA
+206 206 COLLOCATION WITH ERS1 SCATTEROMETER DATA
+207 207 COLLOCATION WITH ERS1 ALTIMETER DATA
+220 220 ERS1 SCATTEROMETER COLLOCATION BLACK LIST
+230 230 GAUSS ERROR
+231 231 GROSS ERROR
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/1033.table b/definitions/bufr/tables/0/wmo/7/codetables/1033.table
new file mode 100644
index 0000000..637e315
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/1033.table
@@ -0,0 +1,219 @@
+0 0 WMO SECRETARIAT
+1 1 MELBOURNE
+2 2 MELBOURNE
+3 3 MELBOURNE
+4 4 MOSCOW
+5 5 MOSCOW
+6 6 MOSCOW
+7 7 US NATIONAL WEATHER SERVICE, NATIONAL CENTRES FOR ENVIRONMEN"    TAL PREDICTION(NCEP)
+8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONSGATEWAY (NWSTG"    )
+9 9 US NATIONAL WEATHER SERVICE - OTHER
+10 10 CAIRO (RSMC)
+11 11 CAIRO (RSMC)
+12 12 DAKAR (RSMC)
+13 13 DAKAR (RSMC)
+14 14 NAIROBI (RSMC)
+15 15 NAIROBI (RSMC)
+16 16 CASABLANCA (RSMC)
+17 17 TUNIS (RSMC)
+18 18 TUNIS CASABLANCA (RSMC)
+19 19 TUNIS CASABLANCA (RSMC)
+20 20 LAS PALMAS
+21 21 ALGIERS (RSMC)
+22 22 ACMAD
+23 23 MOZAMBIQUE NMC
+24 24 PRETORIA (RSMC)
+25 25 LA R?UNION (RSMC)
+26 26 KHABAROVSK (RSMC)
+27 27 KHABAROVSK (RSMC)
+28 28 NEW DELHI (RSMC)
+29 29 NEW DELHI (RSMC)
+30 30 NOVOSIBIRSK (RSMC)
+31 31 NOVOSIBIRSK (RSMC)
+32 32 TASHKENT (RSMC)
+33 33 JEDDAH (RSMC)
+34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+35 35 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+36 36 BANGKOK
+37 37 ULAN BATOR
+38 38 BEIJING (RSMC)
+39 39 BEIJING (RSMC)
+40 40 SEOUL
+41 41 BUENOS AIRES (RSMC)
+42 42 BUENOS AIRES (RSMC)
+43 43 BRASILIA (RSMC)
+44 44 BRASILIA (RSMC)
+45 45 SANTIAGO
+46 46 BRAZILIAN SPACE AGENCY - INPE
+47 47 COLOMBIA NMC
+48 48 ECUADOR NMC
+49 49 PERU NMC                  50
+50 50 VENEZUELA NMC
+51 51 MIAMI (RSMC)
+52 52 MIAMI RSMC, NATIONAL HURRICANE CENTER
+53 53 MONTREAL (RSMC)
+54 54 MONTREAL (RSMC)
+55 55 SAN FRANCISCO
+56 56 ARINC CENTRE
+57 57 U.S. AIR FORCE AIR FORCE GLOBAL WEATHER CENTRAL
+58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTERE"    Y, CA
+59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, USA
+60 60 UNITED STATES NATIONAL CENTRE FOR ATMOSPHERIC RESEARCH (NCAR"    )
+61 61 SERVICE ARGOS - LANDOVER
+62 62 U.S. NAVAL OCEANOGRAPHIC OFFICE
+63 63 IRI (INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIET"    Y)
+64 64 HONOLULU (RSMC)
+65 65 DARWIN (RSMC)
+66 66 DARWIN (RSMC)
+67 67 MELBOURNE (RSMC)
+69 69 WELLINGTON (RSMC)
+70 70 WELLINGTON (RSMC)
+71 71 NADI (RSMC)
+72 72 SINGAPORE
+73 73 MALAYSIA NMC
+74 74 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+75 75 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+76 76 MOSCOW (RSMC)
+78 78 OFFENBACH (RSMC)
+79 79 OFFENBACH (RSMC)
+80 80 ROME (RSMC)
+81 81 ROME (RSMC)
+82 82 NORRK?PING
+83 83 NORRK?PING
+84 84 TOULOUSE (RSMC)
+85 85 TOULOUSE (RSMC)
+86 86 HELSINKI
+87 87 BELGRADE
+88 88 OSLO
+89 89 PRAGUE
+90 90 EPISKOPI
+91 91 ANKARA
+92 92 FRANKFURT/MAIN)
+93 93 LONDON (WAFC)
+94 94 COPENHAGEN
+95 95 ROTA
+96 96 ATHENS
+97 97 EUROPEAN SPACE AGENCY (ESA)
+98 98 EUROPEAN CENTRE FOR MEDIUM-RANGE WEATHER FORECAST (ECMWF)
+99 99 DE BILT
+100 100 BRAZZAVILLE
+101 101 ABIDJAN
+102 102 LIBYAN ARAB JAMAHIRIYA NMC
+103 103 MADAGASCAR NMC
+104 104 MAURITIUS NMC
+105 105 NIGER NMC
+106 106 SEYCHELLES NMC
+107 107 UGANDA NMC
+108 108 TANZANIA NMC
+109 109 ZIMBABWE NMC
+110 110 HONG-KONG, CHINA
+111 111 AFGHANISTAN NMC          110
+112 112 BAHRAIN NMC
+113 113 BANGLADESH NMC
+114 114 BHUTAN NMC
+115 115 CAMBODIA NMC
+116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA NMC
+117 117 ISLAMIC REPUBLIC OF IRAN NMC
+118 118 IRAQ NMC
+119 119 KAZAKHSTAN NMC
+120 120 KUWAIT NMC
+121 121 KYRGYZ REPUBLIC NMC
+122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC NMC
+123 123 MACAO, CHINA
+124 124 MALDIVES NMC
+125 125 MYANMAR NMC
+126 126 NEPAL NMC
+127 127 OMAN NMC
+128 128 PAKISTAN NMC
+129 129 QATAR NMC
+130 130 REPUBLIC OF YEMEN NMC
+131 131 SRI LANKA NMC
+132 132 TAJIKISTAN NMC
+133 133 TURKMENISTAN NMC
+134 134 UNITED ARAB EMIRATES NMC
+135 135 UZBEKISTAN NMC
+136 136 SOCIALIST REPUBLIC OF VIET NAM NMC
+140 140 BOLIVIA NMC
+141 141 GUYANA NMC
+142 142 PARAGUAY NMC
+143 143 SURINAME NMC
+144 144 URUGUAY NMC                     140
+145 145 FRENCH GUYANA
+146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE
+150 150 ANTIGUA AND BARBUDA NMC
+151 151 BAHAMAS NMC
+152 152 BARBADOS NMC
+153 153 BELIZE NMC
+154 154 BRITISH CARIBBEAN TERRITORIES CENTRE
+155 155 SAN JOSE
+156 156 CUBA NMC
+157 157 DOMINICA NMC
+158 158 DOMINICAN REPUBLIC NMC
+159 159 EL SALVADOR NMC
+160 160 US NOAA/NESDIS
+161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH
+162 162 GUATEMALA NMC
+163 163 HAITI NMC
+164 164 HONDURAS NMC
+165 165 JAMAICA NMC
+166 166 MEXICO
+167 167 NETHERLANDS ANTILLES AND ARUBA NMC
+168 168 NICARAGUA NMC
+169 169 PANAMA NMC
+170 170 SAINT LUCIA NMC
+171 171 TRINIDAD AND TOBAGO NMC
+172 172 FRENCH DEPARTMENTS IN RA IV
+173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA)
+190 190 COOK ISLANDS NMC
+191 191 FRENCH POLYNESIA NMC
+192 192 TONGA NMC
+193 193 VANUATU NMC
+194 194 BRUNEI DARUSSALAM NMC
+195 195 INDONESIA NMC
+196 196 KIRIBATI NMC
+197 197 FEDERATED STATES OF MICRONESIA NMC
+198 198 NEW CALEDONIA NMC
+199 199 NIUE
+200 200 PAPUA NEW GUINEA NMC
+201 201 PHILIPPINES NMC
+202 202 SAMOA NMC
+203 203 SOLOMON ISLANDS NMC
+210 210 FRASCATI (ESA/ESRIN)
+211 211 LANNION
+212 212 LISBOA
+213 213 REYKJAVIK
+214 214 MADRID
+215 215 Z?RICH
+216 216 SERVICE ARGOS TOULOUSE
+217 217 BRATISLAVA
+218 218 BUDAPEST
+219 219 LJUBLJANA            190
+220 220 WARSAW
+221 221 ZAGREB
+222 222 ALBANIA NMC
+223 223 ARMENIA NMC
+224 224 AUSTRIA NMC
+225 225 AZERBAIJAN NMC
+226 226 BELARUS NMC
+227 227 BELGIUM NMC
+228 228 BOSNIA AND HERZEGOVINA NMC
+229 229 BULGARIA NMC
+230 230 CYPRUS NMC
+231 231 ESTONIA NMC
+232 232 GEORGIA NMC
+233 233 DUBLIN
+234 234 ISRAEL NMC
+235 235 JORDAN NMC
+236 236 LATVIA NMC
+237 237 LEBANON NMC
+238 238 LITHUANIA NMC
+239 239 LUXEMBOURG
+240 240 MALTA NMC
+241 241 MONACO
+242 242 ROMANIA NMC
+243 243 SYRIAN ARAB REPUBLIC NMC
+244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA NMC
+245 245 UKRAINE NMC
+246 246 REPUBLIC OF MOLDOVA NMC
+254 254 EUMETSAT OPERATION CENTRE
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/1035.table b/definitions/bufr/tables/0/wmo/7/codetables/1035.table
new file mode 100644
index 0000000..734c534
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/1035.table
@@ -0,0 +1,219 @@
+0 0 WMO SECRETARIAT
+1 1 MELBOURNE
+2 2 MELBOURNE
+3 3 MELBOURNE
+4 4 MOSCOW
+5 5 MOSCOW
+6 6 MOSCOW
+7 7 US NATIONAL WEATHER SERVICE, NATIONAL CENTRES FOR ENVIRONMEN"    TAL PREDICTION(NCEP)
+8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONSGATEWAY (NWSTG"    )
+9 9 US NATIONAL WEATHER SERVICE - OTHER
+10 10 CAIRO (RSMC)
+11 11 CAIRO (RSMC)
+12 12 DAKAR (RSMC)
+13 13 DAKAR (RSMC)
+14 14 NAIROBI (RSMC)
+15 15 NAIROBI (RSMC)
+16 16 CASABLANCA (RSMC)
+17 17 TUNIS (RSMC)
+18 18 TUNIS CASABLANCA (RSMC)
+19 19 TUNIS CASABLANCA (RSMC)
+20 20 LAS PALMAS
+21 21 ALGIERS (RSMC)
+22 22 ACMAD
+23 23 MOZAMBIQUE NMC
+24 24 PRETORIA (RSMC)
+25 25 LA R?UNION (RSMC)
+26 26 KHABAROVSK (RSMC)
+27 27 KHABAROVSK (RSMC)
+28 28 NEW DELHI (RSMC)
+29 29 NEW DELHI (RSMC)
+30 30 NOVOSIBIRSK (RSMC)
+31 31 NOVOSIBIRSK (RSMC)
+32 32 TASHKENT (RSMC)
+33 33 JEDDAH (RSMC)
+34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+35 35 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+36 36 BANGKOK
+37 37 ULAN BATOR
+38 38 BEIJING (RSMC)
+39 39 BEIJING (RSMC)
+40 40 SEOUL
+41 41 BUENOS AIRES (RSMC)
+42 42 BUENOS AIRES (RSMC)
+43 43 BRASILIA (RSMC)
+44 44 BRASILIA (RSMC)
+45 45 SANTIAGO
+46 46 BRAZILIAN SPACE AGENCY - INPE
+47 47 COLOMBIA NMC
+48 48 ECUADOR NMC
+49 49 PERU NMC                  50
+50 50 VENEZUELA NMC
+51 51 MIAMI (RSMC)
+52 52 MIAMI RSMC, NATIONAL HURRICANE CENTER
+53 53 MONTREAL (RSMC)
+54 54 MONTREAL (RSMC)
+55 55 SAN FRANCISCO
+56 56 ARINC CENTRE
+57 57 U.S. AIR FORCE AIR FORCE GLOBAL WEATHER CENTRAL
+58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTERE"    Y, CA
+59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, USA
+60 60 UNITED STATES NATIONAL CENTRE FOR ATMOSPHERIC RESEARCH (NCAR"    )
+61 61 SERVICE ARGOS - LANDOVER
+62 62 U.S. NAVAL OCEANOGRAPHIC OFFICE
+63 63 IRI (INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIET"    Y)
+64 64 HONOLULU (RSMC)
+65 65 DARWIN (RSMC)
+66 66 DARWIN (RSMC)
+67 67 MELBOURNE (RSMC)
+69 69 WELLINGTON (RSMC)
+70 70 WELLINGTON (RSMC)
+71 71 NADI (RSMC)
+72 72 SINGAPORE
+73 73 MALAYSIA NMC
+74 74 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+75 75 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+76 76 MOSCOW (RSMC)
+78 78 OFFENBACH (RSMC)
+79 79 OFFENBACH (RSMC)
+80 80 ROME (RSMC)
+81 81 ROME (RSMC)
+82 82 NORRK?PING
+83 83 NORRK?PING
+84 84 TOULOUSE (RSMC)
+85 85 TOULOUSE (RSMC)
+86 86 HELSINKI
+87 87 BELGRADE
+88 88 OSLO
+89 89 PRAGUE
+90 90 EPISKOPI
+91 91 ANKARA
+92 92 FRANKFURT/MAIN)
+93 93 LONDON (WAFC)
+94 94 COPENHAGEN
+95 95 ROTA
+96 96 ATHENS
+97 97 EUROPEAN SPACE AGENCY (ESA)
+98 98 EUROPEAN CENTRE FOR MEDIUM-RANGE WEATHER FORECAST (ECMWF)
+99 99 DE BILT
+100 100 BRAZZAVILLE
+101 101 ABIDJAN
+102 102 LIBYAN ARAB JAMAHIRIYA NMC
+103 103 MADAGASCAR NMC
+104 104 MAURITIUS NMC
+105 105 NIGER NMC
+106 106 SEYCHELLES NMC
+107 107 UGANDA NMC
+108 108 TANZANIA NMC
+109 109 ZIMBABWE NMC
+110 110 HONG-KONG, CHINA
+111 111 AFGHANISTAN NMC          110
+112 112 BAHRAIN NMC
+113 113 BANGLADESH NMC
+114 114 BHUTAN NMC
+115 115 CAMBODIA NMC
+116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA NMC
+117 117 ISLAMIC REPUBLIC OF IRAN NMC
+118 118 IRAQ NMC
+119 119 KAZAKHSTAN NMC
+120 120 KUWAIT NMC
+121 121 KYRGYZ REPUBLIC NMC
+122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC NMC
+123 123 MACAO, CHINA
+124 124 MALDIVES NMC
+125 125 MYANMAR NMC
+126 126 NEPAL NMC
+127 127 OMAN NMC
+128 128 PAKISTAN NMC
+129 129 QATAR NMC
+130 130 REPUBLIC OF YEMEN NMC
+131 131 SRI LANKA NMC
+132 132 TAJIKISTAN NMC
+133 133 TURKMENISTAN NMC
+134 134 UNITED ARAB EMIRATES NMC
+135 135 UZBEKISTAN NMC
+136 136 SOCIALIST REPUBLIC OF VIET NAM NMC
+140 140 BOLIVIA NMC
+141 141 GUYANA NMC
+142 142 PARAGUAY NMC
+143 143 SURINAME NMC
+144 144 URUGUAY NMC                     140
+145 145 FRENCH GUYANA
+146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE
+150 150 ANTIGUA AND BARBUDA NMC
+151 151 BAHAMAS NMC
+152 152 BARBADOS NMC
+153 153 BELIZE NMC
+154 154 BRITISH CARIBBEAN TERRITORIES CENTRE
+155 155 SAN JOSE
+156 156 CUBA NMC
+157 157 DOMINICA NMC
+158 158 DOMINICAN REPUBLIC NMC
+159 159 EL SALVADOR NMC
+160 160 US NOAA/NESDIS
+161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH
+162 162 GUATEMALA NMC
+163 163 HAITI NMC
+164 164 HONDURAS NMC
+165 165 JAMAICA NMC
+166 166 MEXICO
+167 167 NETHERLANDS ANTILLES AND ARUBA NMC
+168 168 NICARAGUA NMC
+169 169 PANAMA NMC
+170 170 SAINT LUCIA NMC
+171 171 TRINIDAD AND TOBAGO NMC
+172 172 FRENCH DEPARTMENTS IN RA IV
+173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA)
+190 190 COOK ISLANDS NMC
+191 191 FRENCH POLYNESIA NMC
+192 192 TONGA NMC
+193 193 VANUATU NMC
+194 194 BRUNEI DARUSSALAM NMC
+195 195 INDONESIA NMC
+196 196 KIRIBATI NMC
+197 197 FEDERATED STATES OF MICRONESIA NMC
+198 198 NEW CALEDONIA NMC
+199 199 NIUE
+200 200 PAPUA NEW GUINEA NMC
+201 201 PHILIPPINES NMC
+202 202 SAMOA NMC
+203 203 SOLOMON ISLANDS NMC
+210 210 FRASCATI (ESA/ESRIN)
+211 211 LANNION
+212 212 LISBOA
+213 213 REYKJAVIK
+214 214 MADRID
+215 215 Z?RICH
+216 216 SERVICE ARGOS TOULOUSE
+217 217 BRATISLAVA
+218 218 BUDAPEST
+219 219 LJUBLJANA            190
+220 220 WARSAW
+221 221 ZAGREB
+222 222 ALBANIA NMC
+223 223 ARMENIA NMC
+224 224 AUSTRIA NMC
+225 225 AZERBAIJAN NMC
+226 226 BELARUS NMC
+227 227 BELGIUM NMC
+228 228 BOSNIA AND HERZEGOVINA NMC
+229 229 BULGARIA NMC
+230 230 CYPRUS NMC
+231 231 ESTONIA NMC
+232 232 GEORGIA NMC
+233 233 DUBLIN
+234 234 ISRAEL NMC
+235 235 JORDAN NMC
+236 236 LATVIA NMC
+237 237 LEBANON NMC
+238 238 LITHUANIA NMC
+239 239 LUXEMBOURG
+240 240 MALTA NMC
+241 241 MONACO
+242 242 ROMANIA NMC
+243 243 SYRIAN ARAB REPUBLIC NMC
+244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA NMC
+245 245 UKRAINE NMC
+246 246 REPUBLIC OF MOLDOVA NMC
+254 254 EUMETSAT OPERATION CENTRE
+255 255 MISSING VALUE               219
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/1090.table b/definitions/bufr/tables/0/wmo/7/codetables/1090.table
new file mode 100644
index 0000000..e1cf86c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/1090.table
@@ -0,0 +1,5 @@
+0 0 LAF (LAGGED-AVERAGE FORECASTING)
+1 1 BREEDING
+2 2 SINGULAR VECTOR
+3 3 MULTIPLE ANALYSIS CYCLE
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/1092.table b/definitions/bufr/tables/0/wmo/7/codetables/1092.table
new file mode 100644
index 0000000..dc9bf1c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/1092.table
@@ -0,0 +1,5 @@
+0 0 UNPERTURBED HIGH-RESOLUTION CONTROL FORECAST
+1 1 UNPERTURBED LOW-RESOLUTION CONTROL FORECAST
+2 2 NEGATIVELY PERTURBED FORECAST
+3 3 POSITIVELY PERTURBED FORECAST
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/11031.table b/definitions/bufr/tables/0/wmo/7/codetables/11031.table
new file mode 100644
index 0000000..fd7a8e0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/11031.table
@@ -0,0 +1,9 @@
+0 0 NIL           IN CLOUD
+1 1 SLIGHT        IN CLOUD
+2 2 MODERATE      IN CLOUD
+3 3 SEVERE        IN CLOUD
+4 4 NIL           IN CLEAR AIR
+5 5 SLIGHT        IN CLEAR AIR
+6 6 MODERATE      IN CLEAR AIR
+7 7 SEVERE        IN CLEAR AIR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/11037.table b/definitions/bufr/tables/0/wmo/7/codetables/11037.table
new file mode 100644
index 0000000..1fed72b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/11037.table
@@ -0,0 +1,30 @@
+0 0 AVE <0.1 PEAK <0.1
+1 1 AVE <0.1 0.1 <= PEAK <0.2
+2 2 0.1 <= AVE <0.2 0.1 <= PEAK <0.2
+3 3 AVE <0.1 0.2 <= PEAK <0.3
+4 4 0.1 <= AVE <0.2 0.2 <= PEAK <0.3
+5 5 0.2 <= AVE <0.3 0.2 <= PEAK <0.3
+6 6 AVE <0.1 0.3 <= PEAK <0.4
+7 7 0.1 <= AVE <0.2 0.3 <= PEAK <0.4
+8 8 0.2 <= AVE <0.3 0.3 <= PEAK <0.4
+9 9 0.3 <= AVE <0.4 0.3 <= PEAK <0.4
+10 10 AVE <0.1 0.4 <= PEAK <0.5
+11 11 0.1 <= AVE <0.2 0.4 <= PEAK <0.5
+12 12 0.2 <= AVE <0.3 0.4 <= PEAK <0.5
+13 13 0.3 <= AVE <0.4 0.4 <= PEAK <0.5
+14 14 0.4 <= AVE <0.5 0.4 <= PEAK <0.5
+15 15 AVE <0.1 0.5 <= PEAK <0.8
+16 16 0.1 <= AVE <0.2 0.5 <= PEAK <0.8
+17 17 0.2 <= AVE <0.3 0.5 <= PEAK <0.8
+18 18 0.3 <= AVE <0.4 0.5 <= PEAK <0.8
+19 19 0.4 <= AVE <0.5 0.5 <= PEAK <0.8
+20 20 0.5 <= AVE <0.8 0.5 <= PEAK <0.8
+21 21 AVE <0.1 0.8 <= PEAK
+22 22 0.1 <= AVE <0.2 0.8 <= PEAK
+23 23 0.2 <= AVE <0.3 0.8 <= PEAK
+24 24 0.3 <= AVE <0.4 0.8 <= PEAK
+25 25 0.4 <= AVE <0.5 0.8 <= PEAK
+26 26 0.5 <= AVE <0.8 0.8 <= PEAK
+27 27 0.8 <= AVE 0.8 <= PEAK
+28 28 NIL              NIL
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/11038.table b/definitions/bufr/tables/0/wmo/7/codetables/11038.table
new file mode 100644
index 0000000..f0c5cce
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/11038.table
@@ -0,0 +1,17 @@
+0 0 MIN < 1
+1 1 1 <= MIN < 2
+2 2 2 <= MIN < 3
+3 3 3 <= MIN < 4
+4 4 4 <= MIN < 5
+5 5 5 <= MIN < 6
+6 6 6 <= MIN < 7
+7 7 7 <= MIN < 8
+8 8 8 <= MIN < 9
+9 9 9 <= MIN < 10
+10 10 10 <= MIN < 11
+11 11 11 <= MIN < 12
+12 12 12 <= MIN < 13
+13 13 13 <= MIN < 14
+14 14 14 <= MIN < 15
+15 15 NO TIMING INFORMATION AVAILABLE
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/11039.table b/definitions/bufr/tables/0/wmo/7/codetables/11039.table
new file mode 100644
index 0000000..1bb26b7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/11039.table
@@ -0,0 +1,16 @@
+0 0 1 <= MIN < 2
+1 1 2 <= MIN < 3
+2 2 3 <= MIN < 4
+4 4 4 <= MIN < 5
+5 5 5 <= MIN < 6
+6 6 6 <= MIN < 7
+7 7 7 <= MIN < 8
+8 8 8 <= MIN < 9
+9 9 9 <= MIN < 10
+10 10 10 <= MIN < 11
+11 11 11 <= MIN < 12
+12 12 12 <= MIN < 13
+13 13 13 <= MIN < 14
+14 14 14 <= MIN < 15
+60 60 NO TIMING INFORMATION AVAILABLE
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/13038.table b/definitions/bufr/tables/0/wmo/7/codetables/13038.table
new file mode 100644
index 0000000..19bc422
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/13038.table
@@ -0,0 +1,4 @@
+0 0 NOT SUPERADIABATIC
+1 1 SUPERADIABATIC
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/13039.table b/definitions/bufr/tables/0/wmo/7/codetables/13039.table
new file mode 100644
index 0000000..c070b1d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/13039.table
@@ -0,0 +1,3 @@
+0 0 SEA ICE
+1 1 SNOW ON LAND
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/13040.table b/definitions/bufr/tables/0/wmo/7/codetables/13040.table
new file mode 100644
index 0000000..8e1dcfe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/13040.table
@@ -0,0 +1,9 @@
+0 0 LAND
+1 1 RESERVED
+2 2 NEAR COAST
+3 3 ICE
+4 4 POSSIBLE ICE
+5 5 OCEAN
+6 6 COAST
+7 7 DESERT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/13041.table b/definitions/bufr/tables/0/wmo/7/codetables/13041.table
new file mode 100644
index 0000000..d53bf87
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/13041.table
@@ -0,0 +1,10 @@
+1 1 A
+2 2 A-B
+3 3 B
+4 4 B-C
+5 5 C
+6 6 D
+7 7 E
+8 8 F
+9 9 G
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/13051.table b/definitions/bufr/tables/0/wmo/7/codetables/13051.table
new file mode 100644
index 0000000..70807eb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/13051.table
@@ -0,0 +1,8 @@
+0 0 SMALLER THAN ANY VALUE IN THE 30 YEARS PERIOD
+1 1 IN THE FIRST QUINTILE
+2 2 IN THE SECOND QUINTILE
+3 3 IN THE THIRD QUINTILE
+4 4 IN THE FOURTH QUINTILE
+5 5 IN THE FIFTH QUINTILE
+6 6 GREATER THAN ANY VALUE IN THE 30 YEAR PERIOD
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/13056.table b/definitions/bufr/tables/0/wmo/7/codetables/13056.table
new file mode 100644
index 0000000..02eeb56
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/13056.table
@@ -0,0 +1,10 @@
+0 0 NO PRECIPITATION
+1 1 LIGHT INTERMITTENT
+2 2 MODERATE INTERMITTENT
+3 3 HEAVY INTERMITTENT
+4 4 VERY HEAVY INTERMITTENT
+5 5 LIGHT CONTINUOUS
+6 6 MODERATE CONTINUOUS
+7 7 VERY HEAVY CONTINUOUS
+9 9 VARIABLE-ALTERNATIVELY LIGHT AND HEAVY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/13057.table b/definitions/bufr/tables/0/wmo/7/codetables/13057.table
new file mode 100644
index 0000000..9c8571c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/13057.table
@@ -0,0 +1,11 @@
+0 0 NO PRECIPITATION
+1 1 WITHIN THE LAST HOUR
+2 2 1 TO 2 HOURS AGO
+3 3 2 TO 3 HOURS AGO
+4 4 3 TO 4 HOURS AGO
+5 5 4 TO 5 HOURS AGO
+6 6 5 TO 6 HOURS AGO
+7 7 6 TO 8 HOURS AGO
+8 8 8 TO 10 HOURS AGO
+9 9 MORE THAN 10 HOURS AHO
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/15025.table b/definitions/bufr/tables/0/wmo/7/codetables/15025.table
new file mode 100644
index 0000000..acb0f2b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/15025.table
@@ -0,0 +1,2 @@
+0 0 OZONE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/19001.table b/definitions/bufr/tables/0/wmo/7/codetables/19001.table
new file mode 100644
index 0000000..2b92574
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/19001.table
@@ -0,0 +1,7 @@
+0 0 DEPRESSION OR LOW (EXTRATROPICAL)
+1 1 TROPICAL DEPRESSION
+2 2 TROPICAL STORM
+3 3 SEVERE TROPICAL STORM
+4 4 TYPHOON
+10 10 DUST/SANDSTORM
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/19008.table b/definitions/bufr/tables/0/wmo/7/codetables/19008.table
new file mode 100644
index 0000000..57395cd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/19008.table
@@ -0,0 +1,5 @@
+0 0 RESERVED
+1 1 SHALLOW (TOP OF CIRCULATION BELOW 700-HPA LEVEL
+2 2 MEDIUM(TOP BETWEEN 700-HPA AND 400-HPA)
+3 3 DEEP(TOP ABOVE 400-HPA LEVEL
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/19010.table b/definitions/bufr/tables/0/wmo/7/codetables/19010.table
new file mode 100644
index 0000000..03e331e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/19010.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 MINIMUM VALUE OF SEA LEVEL PRESSURE
+2 2 MAXIMUM VALUE OF 850 HPA RELATIVE VORTICITY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20003.table b/definitions/bufr/tables/0/wmo/7/codetables/20003.table
new file mode 100644
index 0000000..b6227bc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20003.table
@@ -0,0 +1,250 @@
+0 0 CLOUD DEVELOPMENT NOT OBSERVED OR NOT OBSERVABLE
+1 1 CLOUDS GENERALLY DISSOLVING OR BECOMING LESS DEVELOPED
+2 2 STATE OF SKY ON THE WHOLE UNCHANGED
+3 3 CLOUDS GENERALLY FORMING OR DEVELOPING
+4 4 VISIBILITY REDUCED BY SMOKE, E.G. VELDT OR FOREST FIRES, IN"    DUSTRIAL SMOKE OR VOLCANIC ASHES
+5 5 HAZE
+6 6 WIDESPREAD DUST IN SUSPENSION IN THE AIR, NOT RAISED BY WIND"     AT OR NEAR THE STATION AT THE TIME OF OBSERVATION
+7 7 DUST OR SEND RAISED BY WIND AT OR NEAR THE STATION AT THE TI"    ME OF OBSERVATION, BUT NO WELL-DEVELOPED DUST WHRIL(S) OR SA"    ND WHRIL(S), AND NO 
+8 8 WELL-DEVELOPED DUST WHRIL(S) OR SAND WHRILS SEEN AT OR NEAR"    THE STATION DURING THE PRECEDING HOUR OR AT THE SAME TIME OF"     OBSERVATION, BUT NO 
+9 9 DUSTSTORM OR SANDSTORM WITHIN SIGHT AT THE TIME OF OBSERVATI"    ON, OR AT THE STATION DURING THE PRECEDING HOR
+10 10 MIST
+11 11 PACHES SHALLOW FOG OR ICE AT THE STATION, WHETHER ON LAND OR"     SEA, NOT DEEPER THAN 2 METRES ON LAND OR 10 METRES AT SEA
+12 12 MORE OR LESS CONTINUOUS SHALLOW FOG OR ICE AT THE STATION,"    WHETHER ON LAND OR SEA, NOT DEEPER THAN 2 METRES ON LAND OR"    10 METRES AT SEA
+13 13 LIGHTNING VISIBLE, NO THUNDER HEARD
+14 14 PRECIPITATION WITHIN SIGHT, NOT REACHING THE GROUND OR THE"    SURFACE OF THE SEA
+15 15 PRECIPITATION WITHIN SIGHT, REACHING THE GROUND OR THE SURFA"    CE OF THE SEA, BUT DISTANT, I.E. ESTIMATED TO BE MORE THAN"    5 KM FROM THE STATION
+16 16 PRECIPITATION WITHIN SIGHT, REACHING THE GROUND OR THE SURFA"    CE OF THE SEA, NEAR TO, BUT NOT AT THE STATION
+17 17 THUNDERSTORM, BUT NO PRECIPITATION AT THE TIME OF OBSERVATIO"    N
+18 18 SQUALLS AT OR WITHIN SIGHT OF THE STATION DURING THE PRECEDI"    NG HOUR OR AT THE TIME OF OBSERVATION
+19 19 FUNNEL CLOUD(S) AT OR WITHIN SIGHT OF THE STATION DURING THE"     PRECEDING HOUR OR AT THE TIME OF OBSERVATION
+20 20 DRIZZEL (NOT FREEZING) OR SNOW GRAINS NOT FALLING AS SHOWERS"    ; DURING THE PRECEDING HOUR BUT NOT  AT THE TIME OF OBSERVAT"    IONS
+21 21 RAIN (NOT FREEZING) NOT FALLING AS SHOWER(S); DURING THE PRE"    ECEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+22 22 SNOW NOT FALLING AS SHOWER(S); DURING THE PRECEDING HOUR BUT"     NOT AT THE TIME OF OBSERVATION
+23 23 RAIN AND SNOW OR ICE PELLETS NOT FALLING AS SHOWER(S); DURIN"    G THE PRECEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+24 24 FREEZING DRIZZEL OR FREEZING RAIN NOT FALLING AS SHOWER(S);"    DURING THE PRECEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+25 25 SHOWER(S) OF RAIN; DURING THE PRECEDING HOUR BUT NOT AT THE"    TIME OF OBSERVATION
+26 26 SHOWER(S) OF SNOW, OR OF RAIN AND SNOW; DURING THE PRECEDING"     HOUR BUT NOT AT THE TIME OF OBSERVATION
+27 27 SHOWER(S) OF HAIL, OR OF RAIN AND HAIL; DURING THE PRECEDING"     HOUR BUT NOT AT THE TIME OF OBSERVATION
+28 28 FOG OR ICE FOG; DURING THE PRECEDING HOUR BUT NOT AT THE TIM"    E OF OBSERVATION
+29 29 THUNDERSTORM (WITH OR WITHOUT PRECIPITATION); DURING THE PRE"    CEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+30 30 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM HAS DECREASED DURI"    NG THE PRECEDING HOURS
+31 31 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM NO APPRECIABLE CHA"    NGE DURING THE PRECEDING HOUR
+32 32 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM HAS BEGUN OR HAS I"    NCEASED DURING THE PRECEDING HOUR
+33 33 SEVERE DUSTSTORM OR SANDSTORM  HAS DECREASED DURING THE PREC"    EDING HOURS
+34 34 SEVERE DUSTSTORM OR SANDSTORM NO APPRECIABLE CHANGE DURING T"    HE PRECEDING HOUR
+35 35 SEVERE DUSTSTORM OR SANDSTORM HAS BEGUN OR HAS INCREASED DUR"    ING THE PRECEDING HOUR
+36 36 SLIGHT OR MODERATE DRIFTING SNOW GENERALLY LOW (BELOW EYE LE"    VEL)
+37 37 HEAVY DRIFTING SNOW  GENERALY LOW (BELOW EYE LEVEL)
+38 38 SLIGHT OR MODERATE BLOWING SNOW GENERALLY HIGH (ABOVE EYE LE"    VEL)
+39 39 HEAVY BLOWING SNOW  GENERALY HIGH (ABOVE EYE LEVEL)
+40 40 FOG OR ICE FOG AT A DISTANCE AT THE TIME OF OBSERVATION, BUT"     NOT AT THE STATION DURING THE PRECEDING HOUR, THE FOG OR IC"    E FOG EXTENDING TO A
+41 41 FOG OR ICE FOG IN PATCHES
+42 42 FOG OR ICE FOG, SKY VISIBLE,HAS BECOME THINNER DURING THE PR"    ECEDING HOUR
+43 43 FOG OR ICE FOG, SKY INVISIBLE,HAS BECOME THINNER DURING THE"    PRECEDING HOUR
+44 44 FOG OR ICE FOG, SKY   VISIBLE,NO APPRECIABLE CHANGE DURING T"    HE PRECEDING HOUR
+45 45 FOG OR ICE FOG, SKY INVISIBLE,NO APPRECIABLE CHANGE DURING T"    HE PRECEDING HOUR
+46 46 FOG OR ICE FOG, SKY   VISIBLE,HAS BEGUN OR HAS BECOME THICKE"    R DURING THE PRECEDING HOUR
+47 47 FOG OR ICE FOG, SKY INVISIBLE,HAS BEGUN OR HAS BECOME THICKE"    R DURING THE PRECEDING HOUR
+48 48 FOG, DEPOSITING RIME, SKY VISIBLE
+49 49 FOG, DEPOSITING RIME, SKY INVISIBLE
+50 50 DRIZZLE, NOT FREEZING, INTERMITTENT;SLIGHT AT TIME OF OBSERV"    ATION
+51 51 DRIZZLE, NOT FREEZING, CONTINUOUS  ;SLIGHT AT TIME OF OBSERV"    ATION
+52 52 DRIZZLE, NOT FREEZING, INTERMITTENT;MODERATE AT TIME OF OBSE"    RVATION
+53 53 DRIZZLE, NOT FREEZING, CONTINUOUS  ;MODERATE AT TIME OF OBSE"    RVATION
+54 54 DRIZZLE, NOT FREEZING, INTERMITTENT;HEAVY (DENSE) AT THE TIM"    E OF OBSERVATION
+55 55 DRIZZLE, NOT FREEZING, CONTINUOUS  ;HEAVY (DENSE) AT THE TIM"    E OF OBSERVATION
+56 56 DRIZZLE, FREEZING, SLIGHT
+57 57 DRIZZLE, FREEZING, MODERATE OR HEAVY (DENSE)
+58 58 DRIZZLE AND RAIN, SLIGHT
+59 59 DRIZZLE AND RAIN, MODERATE OR HEAVY
+60 60 RAIN,NOT FREEZING,INTERMITTENT;SLIGHT AT TIME OF OBSERVATION
+61 61 RAIN,NOT FREEZING,CONTINUOUS  ;SLIGHT AT TIME OF OBSERVATION
+62 62 RAIN,NOT FREEZING,INTERMITTENT;MODERATE AT TIME OF OBSERVATI"    ON
+63 63 RAIN,NOT FREEZING,CONTINUOUS  ;MODERATE AT TIME OF OBSERVATI"    ON
+64 64 RAIN, NOT FREEZING, INTERMITTENT;HEAVY AT TIME OF OBSERVATIO"    ON
+65 65 RAIN, NOT FREEZING, CONTINUOUS;HEAVY AT TIME OF OBSERVATION
+66 66 RAIN, FREEZING, SLIGHT
+67 67 RAIN, FREEZING, MODERATE OR HEAVY
+68 68 RAIN OR DRIZZLE AND SNOW, LIGHT
+69 69 RAIN OR DRIZZLE AND SNOW, MODERATE OR HEAVY
+70 70 INTERMITTENT FALL OF SNOWFLAKES, SLIGHT AT TIME OF OBSERVATI"    ON
+71 71 CONTINUOUS   FALL OF SNOWFLAKES, SLIGHT AT TIME OF OBSERVATI"    ON
+72 72 INTERMITTENT FALL OF SNOWFLAKES, MODERATE AT TIME OF OBSERVA"    TION
+73 73 CONTINUOUS   FALL OF SNOWFLAKES, MODERATE AT TIME OF OBSERVA"    TION
+74 74 INTERMITTENT FALL OF SNOWFLAKES, HEAVY AT TIME OF OBSERVATIO"    ONS
+75 75 CONTINUOUS   FALL OF SNOWFLAKES, HEAVY AT TIME OF OBSERVATIO"    ONS
+76 76 DIAMOND DUST (WITH OR WITHOUT FOG)
+77 77 SNOW GRAINS (WITH OR WITHOUT FOG)
+78 78 ISOLATED STAR-LIKE SNOW CRYSTALS (WITH OR WITHOUT FOG)
+79 79 ICE PELLETS
+80 80 RAIN SHOWER(S), SLIGHT
+81 81 RAIN SHOWER(S), MODERATE OR HEAVY
+82 82 RAIN SHOWER(S), VIOLENT
+83 83 SHOWER(S) OF RAIN AND SNOW MIXED, SLIGHT
+84 84 SHOWER(S) OF RAIN AND SNOW MIXED, MODERATE OR HEAVY
+85 85 SNOW SHOWER(S), SLIGHT
+86 86 SNOW SHOWER(S), MODERATE OR HEAVY
+87 87 SHOWER(S) OF SNOW PELLETS OR SMALL HAIL, WITH OR WITHOUT RAI"    N OR RAIN AND SNOW MIXED, SLIGHT
+88 88 SHOWER(S) OF SNOW PELLETS OR SMALL HAIL, WITH OR WITHOUT RAI"    N OR RAIN AND SNOW MIXED, MODERATE OR HEAVY
+89 89 SHOWER(S) OF HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIX"    ED, NOT ASSOCIATED WITH THUNDER, SLIGHT
+90 90 SHOWER(S) OF HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIX"    ED, NOT ASSOCIATED WITH THUNDER, MODERATE OR HEAVY
+91 91 SLIGHT RAIN AT TIME OF OBSERVATION, THUNDERSTORM DURING THE"    PRECEDING HOUR BUT NOT AT TIME OF OBSERVATION
+92 92 MODERATE OR HEAVY RAIN AT TIME OF OBSERVATION, THUNDERSTORM"    DURING THE PRECEDING HOUR BUT NOT AT TIME OF OBSERVATION
+93 93 SLIGHT SNOW, OR RAIN AND SNOW MIXED OR HAIL AT TIME OF OBSER"    VATION, THUNDERSTORM DURING THE PRECEDING HOUR BUT NOT AT TI"    ME OF OBSERVATION
+94 94 MODERATE OR HEAVY SNOW, OR RAIN AND SNOW MIXED OR HAIL AT TI"    ME OF OBSERVATION, THUNDERSTORM DURING PRECEDING HOUR BUT NO"    T AT TIME OF OBSERVA
+95 95 THUNDERSTORM, SLIGHT OR MODERATE, WITHOUT HAIL, BUT WITH RAI"    N AND/OR SNOW AT TIME OF OBSERVATION, THUNDERSTORM DURING TH"    E PRECEDING HOUR BUT
+96 96 THUNDERSTORM, SLIGHT OR MODERATE,WITH HAIL AT TIME OF OBSERV"    ATION, THUNDERSTORM AT TIME OF OBSERVATION
+97 97 THUNDERSTORM, HEAVY, WITHOUT HAIL BUT WITH RAIN AND/OR SNOW"    AT TIME OF OBSERVATION, THUNDERSTORM AT TIME OF OBSERVATION
+98 98 THUNDERSTORM COMBINED WITH DUSTSTORM OR SANDSTORM AT TIME OF"     OBSERVATION, THUNDERSTORM AT TIME OF OBSERVATION
+99 99 THUNDERSTORM, HEAVY, WITH HAIL AT TIME OF OBSERVATION, THUND"    ERSTORM AT TIME OF OBSERVATION
+100 100 NO SIGNIFICANT WEATHER OBSERVED
+101 101 CLOUDS GENERALLY DISSOLVING OR BECOMING LESS DEVELOPED DURIN"    G THE PAST HOUR
+102 102 STATE OF SKY ON THE WHOLE UNCHANGED DURING THE PAST HOUR
+103 103 CLOUDS GENERALLY FORMING OR DEVELOPING DURING THE PAST HOUR
+104 104 HAZE OR SMOKE, OR DUST IN SUSPENSION IN THE AIR, VISIBILITY"    EQUAL TO, OR GREATER THAN 1KM
+105 105 HAZE OR SMOKE, OR DUST IN SUSPENSION IN THE AIR, VISIBILITY"    LESS THAN 1KM
+110 110 MIST
+111 111 DIAMOND DUST
+112 112 DISTANT LIGHTING
+118 118 SQUALLS
+120 120 FOG
+121 121 PRECIPITATION
+122 122 DRIZZLE (NOT FREEZING) OR SNOW GRAINS
+123 123 RAIN (NOT FREEZING)
+124 124 SNOW
+125 125 FREEZING DRIZZLE OR FREEZING RAIN
+126 126 THUNDERSTORM (WITH OR WITHOUT PRECIPITATION)
+127 127 BLOWING OR DRIFTING SNOW OR SAND
+128 128 BLOWING OR DRIFTING SNOW OR SAND, VISIBILITY EQUAL TO, OR GR"    ATER THAN, 1KM
+129 129 BLOWING OR DRIFTING SNOW OR SAND, VISIBILITY LESS THAN 1 KM
+130 130 FOG
+131 131 FOG OR ICE FOG, IN PATCHES
+132 132 FOG OR ICE FOG, HAS BECOME THINNER DURING PAST HOUR
+133 133 FOG OR ICE FOG, NO APPRECIABLE CHANGE DURING PAST HOUR
+134 134 FOG OR ICE FOG, HAS BECUNOR BECOME THICKER DURING PAST HOUR
+135 135 FOG, DEPOSITION RIME
+140 140 PRECIPITATION
+141 141 PRECIPITATION SLIGHT OR MODERATE
+142 142 PRECIPITATION, HEAVY
+143 143 LIQUID PRECIPITATION, SLIGHT OR MODERATE
+144 144 LIQUID PRECIPITATION, HEAVY
+145 145 SOLID PRECIPITATION, SLIGHT OR MODERATE
+146 146 SOLID PRECIPITATION, HEAVY
+147 147 FREEZING PRECIPITATION, SLIGHT OR MODERATE
+148 148 FREEZING PRECIPITATION, HEAVY
+150 150 DRIZZLE
+151 151 DRIZZLE, NOT FREEZING, SLIGHT
+152 152 DRIZZLE, NOT FREEZING, MODERATE
+153 153 DRIZZLE, NOT FREEZING, HEAVY
+154 154 DRIZZLE, FREEZING, SLIGHT
+155 155 DRIZZLE, FREEZING, MODERATE
+156 156 DRIZZLE, FREEZING, HEAVY
+157 157 DRIZZLE AND RAIN, SLIGHT
+158 158 DRIZZLE AND RAIN, MODERATE OR HEAVY
+160 160 RAIN
+161 161 RAIN, NOT FREEZING, SLIGHT
+162 162 RAIN, NOT FREEZING, MODERATE
+163 163 RAIN, NOT FREEZING, HEAVY
+164 164 RAIN, FREEZING, SLIGHT
+165 165 RAIN, FREEZING, MODERATE
+166 166 RAIN, FREEZING, HEAVY
+167 167 RAIN (OR DRIZZLE) AND SNOW, SLIGHT
+168 168 RAIN (OR DRIZZLE) AND SNOW, MODERATE AND HEAVY
+170 170 SNOW
+171 171 SNOW, SLIGHT
+172 172 SNOW, MODERATE
+173 173 SNOW, HEAVY
+174 174 ICE PELLETS, SLIGHT
+175 175 ICE PELLETS, MODERATE
+176 176 ICE PELLETS, HEAVY
+180 180 SHOWER(S) OR INTERMITTENT PRECIPITATION
+181 181 RAIN SHOWER(S) OR INTERMITTENT RAIN, SLIGHT
+182 182 RAIN SHOWER(S) OR INTERMITTENT RAIN, MODERATE
+183 183 RAIN SHOWER(S) OR INTERMITTENT RAIN, HEAVY
+184 184 RAIN SHOWER(S) OR INTERMITTENT RAIN, VIOLENT
+185 185 SNOW SHOWER(S) OR INTERMITTENT SNOW, SLIGHT
+186 186 SNOW SHOWER(S) OR INTERMITTENT SNOW, MODERATE
+187 187 SNOW SHOWER(S) OR INTERMITTENT SNOW, HEAVY
+190 190 THUNDERSTORM
+191 191 THUNDERSTORM, SLIGHT OR MODERATE, WITH NO PRECIPITATION
+192 192 THUNDERSTORM, SLIGHT OR MODERATE, WITH RAIN SHOWERS AND/OR S"    NOW SHOWERS
+193 193 THUNDERSTORM, SLIGHT OR MODERATE, WITH HAIL
+194 194 THUNDERSTORM, HEAVY, WITH NO PRECIPITATION
+195 195 THUNDERSTORM, HEAVY, WITH RAIN SHOWERS AND/OR SNOW SHOWERS
+196 196 THUNDERSTORM, HEAVY, WITH HAIL
+204 204 VOLCANIC ASH SUSPENDED IN THE AIR ALOFT
+206 206 THICK DUST HAZE, VISIBILITY LESS THAN 1 KM
+207 207 BLOWING SPRAY AT THE STATION
+208 208 DRIFTING DUST (SAND)
+209 209 WALL OF DUST OR SAND IN DISTANCE (LIKE HABOOB)
+210 210 SNOW HAZE
+211 211 WHITEOUT
+213 213 LIGHTING, CLOUD TO SURFACE
+217 217 DRY THUNDERSTORM
+219 219 TORNADO CLOUD (DESTRUCTIVE AT OR WITHIN SIGHT OF THE STATION"    DURING PRECEDING HOUR OR AT THE TIME OF OBSERVATION
+220 220 DEPOSITION OF VOLCANIC ASH
+221 221 DEPOSITION OF DUST OR SAND
+222 222 DEPOSITION OF DEW
+223 223 DEPOSITION OF WET SNOW
+224 224 DEPOSITION OF SOFT RIME
+225 225 DEPOSITION OF HARD RIME
+226 226 DEPOSITION OF HOAR FROST
+227 227 DEPOSITION OF GLAZE
+228 228 DEPOSITION OF ICE CRUST (ICE SLICK)
+230 230 DUSTSTORM OR SANDSTORM WITH TEMPERATURE BELOW 0 C DEGREES
+239 239 BLOWING SNOW, IMPOSSIBLE TO DETERMINE WHETHER SNOW IS FALLIN"    G OR NOT
+241 241 FOG ON SEA
+242 242 FOG IN VALLEYS
+243 243 ARCTIC OR ANTARCTIC SEA SMOKE
+244 244 STEAM FOG (SEA,LAKE OR RIVER)
+245 245 STEAM FOG (LAND)
+246 246 FOG OVER ICE OR SNOW COVER
+247 247 DENCE FOG VISIBILITY 60-90 M
+248 248 DENCE FOG VISIBILITY 30-60 M
+249 249 DENCE FOG VISIBILITY LESS THAN 30 M
+250 250 DRIZZLE, RATE OF FALL  LESS THAN 0.10 MM/H
+251 251 DRIZZLE, RATE OF FALL   0.10 -  .19  MM/H
+252 252 DRIZZLE, RATE OF FALL   0.20 -  .39  MM/H
+253 253 DRIZZLE, RATE OF FALL   0.40 -  .79  MM/H
+254 254 DRIZZLE, RATE OF FALL   0.80 - 1.59  MM/H
+255 255 DRIZZLE, RATE OF FALL   1.60 - 3.19  MM/H
+256 256 DRIZZLE, RATE OF FALL   3.20 - 6.39  MM/H
+257 257 DRIZZLE, RATE OF FALL   6.40 MM/H  OR MORE
+259 259 DRIZZLE AND SNOW
+260 260 RAIN, RATE OF FALL  LESS THAN 1.0 MM/H
+261 261 RAIN, RATE OF FALL   1.0  -  1.9   MM/H
+262 262 RAIN, RATE OF FALL   2.0  -  3.9   MM/H
+263 263 RAIN, RATE OF FALL   4.0  -  7.9   MM/H
+264 264 RAIN, RATE OF FALL   8.0  - 15.9   MM/H
+265 265 RAIN, RATE OF FALL  16.0  - 31.9   MM/H
+266 266 RAIN, RATE OF FALL  32.0  - 63.9   MM/H
+267 267 RAIN, RATE OF FALL  64.0  MM/H  OR MORE
+270 270 SNOW, RATE OF FALL  LESS THAN 1.0 CM/H
+271 271 SNOW, RATE OF FALL   1.0  -  1.9   CM/H
+272 272 SNOW, RATE OF FALL   2.0  -  3.9   CM/H
+273 273 SNOW, RATE OF FALL   4.0  -  7.9   CM/H
+274 274 SNOW, RATE OF FALL   8.0  - 15.9   CM/H
+275 275 SNOW, RATE OF FALL  16.0  - 31.9   CM/H
+276 276 SNOW, RATE OF FALL  32.0  - 63.9   CM/H
+277 277 SNOW, RATE OF FALL  64.0  CM/H  OR MORE
+278 278 SNOW OR ICE CRISTAL PRECIPITATION FROM A CLEAR SKY
+279 279 WET SNOW, FREEZING ON CONTACT
+280 280 PRECIPITATION OF RAIN (WW= 87-99)
+281 281 PRECIPITATION OF RAIN,FREEZING (WW= 80-82)
+282 282 PRECIPITATION OF RAIN AND SNOW MIXED
+283 283 PRECIPITATION OF SNOW
+284 284 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL
+285 285 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH RAIN
+286 286 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH RAIN AND S"    NOW MIXED
+287 287 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH SNOW
+288 288 PRECIPITATION OF HAIL
+289 289 PRECIPITATION OF HAIL, WITH RAIN
+290 290 PRECIPITATION OF HAIL, WITH RAIN AND SNOW MIXED
+291 291 PRECIPITATION OF HAIL, WITH SNOW
+292 292 SHOWER(S) OR THUNDERSTORM OVER SEA
+293 293 SHOWER(S) OR THUNDERSTORM OVER MOUNTAINS
+508 508 NO SIGNIFICANT PHENOMENA TO REPORT, PRESENT AND PAST WEATHER"     OMITTED
+509 509 NOT OBSERVED, NO DATA AVAILABLE, PRESENT AND PAST WEATHER OM"    ITTED
+510 510 PRESENT AND PAST WEATHER MISSING, BUT EXPECTED
+511 511 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20004.table b/definitions/bufr/tables/0/wmo/7/codetables/20004.table
new file mode 100644
index 0000000..bd060a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20004.table
@@ -0,0 +1,21 @@
+0 0 CLOUD COVERING 1/2 OR LESS OF THE SKY THROUGHOUT THE APPROPP"    RIATE PERIOD
+1 1 CLOUD COVERING MORE THAN 1/2 OF THE SKY DURING PART OF THE A"    PPROPRIATE PERIOD AND COVERING 1/2 OR LESS DURING PART OF TH"    E PERIOD
+2 2 CLOUD COVERING MORE THAN 1/2 OF THE SKY THROUGHOUT THE APPRP"    PRIATE PERIOD
+3 3 SANSTORM, DUSTSTORM OR BLOWING SNOW
+4 4 FOG OR ICE OR THICK HAZE
+5 5 DRIZZLE
+6 6 RAIN
+7 7 SNOW, OR RAIN AND SNOW MIXED
+8 8 SHOWER(S)
+9 9 THUNDERSTORM(S) WITH OR WITHOUT PRECIPITATION
+10 10 NO SIGNIFICANT WEATHER OBSERVED
+11 11 VISIBILITY REDUCED
+12 12 BLOWING PHENOMENA, VISIBILITY REDUCED
+13 13 FOG
+14 14 PRECIPITATION
+15 15 DRIZZLE
+16 16 RAIN
+17 17 SNOW OR ICE PELLETS
+18 18 SHOWERS OR INTERMITTENT PRECIPITATION
+19 19 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20005.table b/definitions/bufr/tables/0/wmo/7/codetables/20005.table
new file mode 100644
index 0000000..bd060a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20005.table
@@ -0,0 +1,21 @@
+0 0 CLOUD COVERING 1/2 OR LESS OF THE SKY THROUGHOUT THE APPROPP"    RIATE PERIOD
+1 1 CLOUD COVERING MORE THAN 1/2 OF THE SKY DURING PART OF THE A"    PPROPRIATE PERIOD AND COVERING 1/2 OR LESS DURING PART OF TH"    E PERIOD
+2 2 CLOUD COVERING MORE THAN 1/2 OF THE SKY THROUGHOUT THE APPRP"    PRIATE PERIOD
+3 3 SANSTORM, DUSTSTORM OR BLOWING SNOW
+4 4 FOG OR ICE OR THICK HAZE
+5 5 DRIZZLE
+6 6 RAIN
+7 7 SNOW, OR RAIN AND SNOW MIXED
+8 8 SHOWER(S)
+9 9 THUNDERSTORM(S) WITH OR WITHOUT PRECIPITATION
+10 10 NO SIGNIFICANT WEATHER OBSERVED
+11 11 VISIBILITY REDUCED
+12 12 BLOWING PHENOMENA, VISIBILITY REDUCED
+13 13 FOG
+14 14 PRECIPITATION
+15 15 DRIZZLE
+16 16 RAIN
+17 17 SNOW OR ICE PELLETS
+18 18 SHOWERS OR INTERMITTENT PRECIPITATION
+19 19 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20008.table b/definitions/bufr/tables/0/wmo/7/codetables/20008.table
new file mode 100644
index 0000000..646997b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20008.table
@@ -0,0 +1,19 @@
+0 0 SKY CLEAR
+1 1 FEW
+2 2 SCATTERED
+3 3 BROKEN
+4 4 OVERCAST
+5 5 RESERVED
+6 6 SCATTERED/BROKEN (MANY FORECASTS USE SCATTERED/BROKEN
+7 7 BROKEN/OVERCAST (BROKEN/OVERCAST FOLLOWED BY CLOUD TYPE(S))
+8 8 ISOLATED (USED ON AVIATION CHARTS TO DESCRIBE THE CLOUD TYPE"     CB)
+9 9 ISOLATED EMBEDDED (USED ON AVIATION CHARTS TO DESCRIBE THE C"    LOUD TYPE CB)
+10 10 OCCASIONAL (USED ON AVIATION CHARTS TO DESCRIBE THE CLOUD TY"    PE CB)
+11 11 OCCASIONAL EMBEDDED (USED ON AVIATION CHARTS TO DESCRIBE THE"     CLOUD TYPE CB)
+12 12 FREQUENT (USED ON AVIATION CHARTS TO DESCRIBE THE CLOUD TYPE"     CB)
+13 13 DENSE (USED ON AVIATION CHARTS TO DESCRIBE CLOUD THAT WOULD"    CAUSE SUDDEN CHANGES IN VISIBILITY (LESS THAN 1000M)
+14 14 LAYERS
+15 15 OBSCURED (OBSC)
+16 16 EMBEDDED (EMBD)
+17 17  FREQUENT EMBEDDED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20009.table b/definitions/bufr/tables/0/wmo/7/codetables/20009.table
new file mode 100644
index 0000000..084630c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20009.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 NSC MIL SIGNIFICANT CLOUD
+2 2 CAVOK
+3 3 SKC SKY CLEAR
+4 4 NSW NIL SIGNIFICANT WEATHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2001.table b/definitions/bufr/tables/0/wmo/7/codetables/2001.table
new file mode 100644
index 0000000..8259eeb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2001.table
@@ -0,0 +1,4 @@
+0 0 AUTOMATIC STATION
+1 1 MANNED STATION
+2 2 HYBRID, BOTH MANNED AND AUTOMATIC
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20011.table b/definitions/bufr/tables/0/wmo/7/codetables/20011.table
new file mode 100644
index 0000000..740be7b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20011.table
@@ -0,0 +1,11 @@
+0 0 0                              0
+1 1 1 OKTA OR LESS, BUT NOT ZERO   1/10 OR LESS, BUT NOT ZERO
+2 2 2 OKTAS                        2/10 - 3/10
+3 3 3 OKTAS                        4/10
+4 4 4 OKTAS                        5/10
+5 5 5 OKTAS                        6/10
+6 6 6 OKTAS                        7/10 - 8/10
+7 7 7 OKTAS OR MORE,BUT NOT 8 OKTAS9/10 OR MORE, BUT NOT 10/10
+8 8 8 OKTAS                        10/10
+9 9 SKY OBSCURED BY FOG AND OR OTHER METEOROLOGICAL PHENOMENA
+15 15 CLOUD COVE IS INDISCERNIBLE FOR REASONS OTHER THAN FOG OR OT"    HER METEOROLOGICAL PHENOMENA, OR OBSERVATION IS NOT MADE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20012.table b/definitions/bufr/tables/0/wmo/7/codetables/20012.table
new file mode 100644
index 0000000..ff14028
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20012.table
@@ -0,0 +1,45 @@
+0 0 CIRRUS (CI)...............CI
+1 1 CIRROCUMULUS (CC).........CC
+2 2 CIRROSTRATUS (CS).........CS
+3 3 ALTOCUMULUS  (AC).........AC
+4 4 ALTOSTRATUS  (AS).........AS
+5 5 NIMBOSTRATUS (NS).........NS
+6 6 STRATOCUMULUS(SC).........SC
+7 7 STRATUS      (ST).........ST
+8 8 CUMULUS      (CU).........CU
+9 9 CUMULONIMBUS (CB).........CB
+10 10 NO CH CLOUDS
+11 11 CIRRUS FIBRATUS, SOMETIMES UNCINUS, NOT PROGRESSIVELY INADIN"    G THE SKY
+12 12 CIRRUS SPISSATUS, IN PATCHES OR ENTANGLED SHEAVES, WHICH USU"    ALLY DO NOT INCREASE AND SOMETIMES SEEM TO BE THE REMAINS OF"     THE UPPER PART OF A
+13 13 CIRRUS SPISSATUS CUMULONIMBOGENITUS
+14 14 CIRRUS UNCINUS OR FIBRATUS,OR BOTH, PROGRESSIVELY INVADING T"    HE SKY ; THEY GENERALLY THICKEN AS A WHOLE
+15 15 CIRRUS (OFTEN IN BANDS) AND CIRROSTRATUS, OR CIRROSTRATUS AL"    ONE, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN"    ASA WHOLE, BUT THE CO
+16 16 CIRRUS (OFTEN IN BANDS) AND CIRROSTRATUS, OR CIRROSTRATUS AL"    ONE, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN"    ASA WHOLE, BUT THE CO
+17 17 CIRROSTRATUS COVERING THE WHOLE SKY
+18 18 CIRROSTRATUS NOT PROGRESSIVELY INVADING THE SKY AND NOT ENTI"    RELY COVERING IT
+19 19 CIRROCUMULUS ALONE, OR CIRROCUMULUS PREDOMINANT AMONG THE CH"     CLOUDS
+20 20 NO CM CLOUDS
+21 21 ALTOSTRATUS TRANSLUCIDUS
+22 22 ALTOSTRATUS OPACUS OR NIMBOSTRATUS
+23 23 ALTOCUMULUS TRANSLUCIDUS AT A SINGLE LEVEL
+24 24 PATCHES (OFTEN LENTICULARIS) OF ALTOCUMULUS TRANSLUCIDUS, CO"    NTINUALLY CHANGING AND OCCURING AT ONE OR MORE LEVELS
+25 25 ALTOCUMULUS TRANSLUCIDUS IN BANDS, OR ONE OR MORE LAYERS OF"    ALTOCUMULUS TRANSLUCIDUS OR OPACUS, PROGRESSIVELY INVADING T"    HE SKY; THESE ALTOCUM
+26 26 ALTOCUMULUS CUMULOGENITUS (OR CUMULONIMBOGENITUS)
+27 27 ALTOCUMULUS TRANSLUCIDUS OR OPACUS IN TWO OR MORE LAYERS, OR"     ALTOCUMULUS OPACUS IN A SINGLE LAYER, NOT PROGRESSIVELY INV"    ADING THE SKY, OR AL
+28 28 ALTOCUMULUS CASTELLANUS OR FLOCUS
+29 29 ALTOCUMULUS OF CHAOTIC SKY, GENERALLY AT SEVERAL LEVELS
+30 30 NO CL CLOUDS
+31 31 CUMULUS HUMILIS OR CUMULUS FRACTUS OTHER THAN OF BAD WEATHER"    , OR BOTH
+32 32 CUMULUS MEDIOCRIS OR CONGESTUS, WITH OR WITHOUT CUMULUS OF S"    PECIES FRACTUS OR HUMULIS OR STRATOCUMULUS, ALL HAVING THEIR"     BASES AT THE SAME L
+33 33 CUMULONIMBUS CALVUS, WITH OR WITHOUT CUMULUS, STRATOCUMULUS"    OR STRATUS
+34 34 STRATOCUMULUS CUMULOGENITUS
+35 35 STRATOCUMULUS OTHER THAN STRATOCUMULUS CUMULOGENITUS
+36 36 STRATUS NEBULOSUS OR STRATUS FRACTUS OTHER THAN OF BAD WEATH"    ER, OR BOTH
+37 37 STRATUS FRACTUS OR CUMULUS FRACTUS OF BAD WEATHER, OR BOTH"    (PANNUS), USUALLY BELOW ALTOSTRATUS OR NIMBOSTRATUS
+38 38 CUMULUS AND STRATOCUMULUS OTHER THAN STRATOCUMULUS CUMULOGEN"    ITUS, WITH BASES AT DIFFERENT LEVELS
+39 39 CUMULONIMBUS CAPILLATUS (OFTEN WITH AN ANVIL), WITH OR WITHO"    UT CUMULONIMBUS CALVUS, CUMULUS, STRATOCUMULUS, STRATUS OR P"    ANNUS
+59 59 CLOUD NOT VISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDSTO"    RM, OR OTHER ANALOGOUS PHENOMENA
+60 60 CH CLOUDS INVISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDS"    TORM, OR OTHER SIMILAR PHENOMENA, OR BECAUSE OF A CONTINUOUS"    LAYER OF LOWER CLOUD
+61 61 CM CLOUDS INVISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDS"    TORM, OR OTHER SIMILAR PHENOMENA, OR BECAUSE OF A CONTINUOUS"    LAYER OF LOWER CLOUD
+62 62 CL CLOUDS INVISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDS"    TORM, OR OTHER SIMILAR PHENOMENA
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20017.table b/definitions/bufr/tables/0/wmo/7/codetables/20017.table
new file mode 100644
index 0000000..48f9b49
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20017.table
@@ -0,0 +1,11 @@
+0 0 ISOLATED CLOUD OR FRAGMENTS OF CLOUD
+1 1 CONTINUOUS CLOUD
+2 2 BROKEN CLOUD - SMALL BREAKS, FLAT TOPS
+3 3 BROKEN CLOUD - LARGE BREAKS, FLAT TOPS
+4 4 CONTINUOUS CLOUD
+5 5 BROKEN CLOUD - SMALL BREAKS, UNDULATED TOPS
+6 6 BROKEN CLOUD - LARGE BREAKS, UNDULATED TOPS
+7 7 CONTINUOUS OR ALMOST CONTINUOUS WAVES WITH TOWERING CLOUDS A"    BOVE THE TOP OF THE LAYER
+8 8 GROUPS OF WAVES WITH TOWERING CLOUDS ABOVE THE TOP OF THE LA"    YER
+9 9 TWO OR MORE LAYERS AT DIFFERENT LEVELS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20018.table b/definitions/bufr/tables/0/wmo/7/codetables/20018.table
new file mode 100644
index 0000000..c0ffc36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20018.table
@@ -0,0 +1,4 @@
+0 0 INCREASING (U)
+1 1 DECREASING (D)
+2 2 NO DISTINCT CHANGE (N)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2002.table b/definitions/bufr/tables/0/wmo/7/codetables/2002.table
new file mode 100644
index 0000000..9b8469f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2002.table
@@ -0,0 +1,4 @@
+0 0 MEASURED IN M S-1 UNLESS OTHERWISE INDICATED
+1 1 CERTIFIED INSTRUMENTS
+2 2 ORIGINALY MEASURED IN KNOTS
+3 3 ORIGINALY MEASURED IN KM/H
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20021.table b/definitions/bufr/tables/0/wmo/7/codetables/20021.table
new file mode 100644
index 0000000..d9f7226
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20021.table
@@ -0,0 +1,24 @@
+1 1 PRECIPITATION-UNKNOWN TYPE
+2 2 LIQUID PRECIPITATION NOT FREEZING
+3 3 LIQUID FREEZING PRECIPITATION
+4 4 DRIZZLE
+5 5 RAIN
+6 6 SOLID PRECIPITATION
+7 7 SNOW
+8 8 SNOW GRAINS
+9 9 SNOW PELLETS
+10 10 ICE PELLETS
+11 11 ICE CRYSTALS
+12 12 DIAMOND DUST
+13 13 SMALL HAIL
+14 14 HAIL
+15 15 GLAZE
+16 16 RIME
+17 17 SOFT RIME
+18 18 HARD RIME
+19 19 CLEAR ICE
+20 20 WET SNOW
+21 21 HOAR FROST
+22 22 DEW
+23 23 WHITE DEW
+30 30 ALL 30 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20022.table b/definitions/bufr/tables/0/wmo/7/codetables/20022.table
new file mode 100644
index 0000000..a551aac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20022.table
@@ -0,0 +1,7 @@
+0 0 NO PRECIPITATION
+1 1 CONTINUOUS
+2 2 INTERMITTENT
+3 3 SHOWER
+4 4 NOT REACHING GROUND
+5 5 DEPOSITION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20023.table b/definitions/bufr/tables/0/wmo/7/codetables/20023.table
new file mode 100644
index 0000000..9e2093a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20023.table
@@ -0,0 +1,12 @@
+1 1 DUST/SAND WHIRL
+2 2 SQUALLS
+3 3 SAND STORM
+4 4 DUST STORM
+5 5 LIGHTNING - CLOUD TO SURFACE
+6 6 LIGHTNING - CLOUD TO CLOUD
+7 7 LIGHTNING - DISTANT
+8 8 THUNDERSTORM
+9 9 FUNNEL CLOUD NOT TOUCHING SURFACE
+10 10 FUNNEL CLOUD TOUCHING SURFACE
+11 11 SPRAY
+12 12 WATER-SPOUT
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20024.table b/definitions/bufr/tables/0/wmo/7/codetables/20024.table
new file mode 100644
index 0000000..d21d786
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20024.table
@@ -0,0 +1,7 @@
+0 0 NO PHENOMENA
+1 1 LIGHT
+2 2 MODERATE
+3 3 HEAVY
+4 4 VIOLENT
+5 5 SEVERE (VAL)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20025.table b/definitions/bufr/tables/0/wmo/7/codetables/20025.table
new file mode 100644
index 0000000..e05d542
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20025.table
@@ -0,0 +1,11 @@
+1 1 FOG
+2 2 ICE FOG
+3 3 STEAM FOG
+7 7 MIST
+8 8 HAZE
+9 9 SMOKE
+10 10 VOLCANIC ASH
+11 11 DUST
+12 12 SAND
+13 13 SNOW
+21 21 ALL 21 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20026.table b/definitions/bufr/tables/0/wmo/7/codetables/20026.table
new file mode 100644
index 0000000..541f94b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20026.table
@@ -0,0 +1,14 @@
+0 0 NO CHANGE
+1 1 SHALLOW
+2 2 PATCHES
+3 3 PARTIAL
+4 4 FREEZING
+5 5 LOW DRIFTING
+6 6 BLOWING
+7 7 INCREASING
+8 8 DECREASING
+9 9 IN SUSPENSION IN THE AIR
+10 10 WALL
+11 11 DENSE
+12 12 WHITEOUT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20027.table b/definitions/bufr/tables/0/wmo/7/codetables/20027.table
new file mode 100644
index 0000000..4d816ae
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20027.table
@@ -0,0 +1,7 @@
+1 1 AT TIME OF OBSERVATION
+2 2 IN PAST HOUR
+3 3 IN TIME PERIOD FOR PAST WEATHER W1W2
+4 4 IN TIME PERIOD SPECIFIED
+6 6 BELOW STATION LEVEL
+7 7 AT THE STATION
+8 8 IN THE VICINITY
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20029.table b/definitions/bufr/tables/0/wmo/7/codetables/20029.table
new file mode 100644
index 0000000..8b46da8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20029.table
@@ -0,0 +1,4 @@
+0 0 NO RAIN
+1 1 RAIN
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2003.table b/definitions/bufr/tables/0/wmo/7/codetables/2003.table
new file mode 100644
index 0000000..cdb2cb5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2003.table
@@ -0,0 +1,12 @@
+0 0 PRESSURE INSTRUMENT ASSOCIATED WITH WIND-MEASURING EQUIPMENT
+1 1 OPTICAL THEODOLITE
+2 2 RADIO THEODOLITE
+3 3 RADAR
+4 4 VLF-OMEGA
+5 5 LORAN C
+6 6 WIND PROFILER
+7 7 SATELLITE NAVIGATION
+8 8 RADIO-ACOUSTIC SOUNDING SYSTEM (RASS)
+9 9 SODAR
+14 14 PRESSURE INSTRUMENT ASSOCIATED WITH WIND MEASUREMENT EQUIPME"    NT BUT PRESSURE ELEMENT FAILED DURING ASCENT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20032.table b/definitions/bufr/tables/0/wmo/7/codetables/20032.table
new file mode 100644
index 0000000..87ac945
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20032.table
@@ -0,0 +1,6 @@
+0 0 ICE NOT BUILDING UP
+1 1 ICE BUILDING UP SLOWLY
+2 2 ICE BUILDING UP QUICKLY
+3 3 ICE MELTING OR BREAKING UP SLOWLY
+4 4 ICE MELTING OR BREAKING UP RAPIDLY
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20033.table b/definitions/bufr/tables/0/wmo/7/codetables/20033.table
new file mode 100644
index 0000000..6cc31fc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20033.table
@@ -0,0 +1,4 @@
+1 1 ICING FROM OCEAN SPRAY
+2 2 ICING FROM FOG
+3 3 ICING FROM RAIN
+4 4 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20034.table b/definitions/bufr/tables/0/wmo/7/codetables/20034.table
new file mode 100644
index 0000000..97199d8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20034.table
@@ -0,0 +1,12 @@
+0 0 NO SEA ICE IN SIGHT
+1 1 SHIP IN OPEN LEAD MORE THAN 1.0 NAUTICAL MILE WIDE, OR SHIP"    IN FAST ICE WITH BOUNDARY BEYOND LIMIT OF VISIBILITY
+2 2 SEA ICE PRESENT IN CONCETRATION LESS THAN 3/10 (3/8), OPEN W"    ATER OR VERY OPEN PACK ICE, SEA ICE CONCETRATION IS UNIFORM"    IN THE OBSERVATION AR
+3 3 4/10 TO 6/10 (3/8 TO LESS THAN 6/8) ,OPEN PACK ICE, SEA ICE"    CONCETRATION IS UNIFORM IN THE OBSERVATION AREA, SHIP IN ICE"     OR WITHIN 0.5 NAUTIC
+4 4 7/10 TO 8/10 (6/8 TO LESS THAN 7/8), CLOSE PACK ICE, SEA ICE"     CONCETRATION IS UNIFORM IN THE OBSERVATION AREA, SHIP IN IC"     E OR WITHIN 0.5 NAU
+5 5 9/10 OR MORE, BUT NOT 10/10 (7/8 TO LESS THAN 8/8), VERY CLO"    SE PACK ICE, SEA ICE CONCETRATION IS UNIFORM IN THE OBSERVAT"    ION AREA, SHIP IN IC
+6 6 STRIPS AND PATCHES OF PACK ICE WITH OPEN WATER BETWEEN, SEA"    ICE CONCENTRATION IS NOT UNIFORM IN THE OBSERVATION AREA, SH"    IP IN ICE OR WITHIN 0
+7 7 STRIPS AND PATCHES OF CLOSE OR VERY CLOSE PACK ICE WITH AREA"    S OF LESSER CONCENTRATION BETWEEN, SEA ICE CONCETRATION IS N"    OT UNIFORM IN THE OB
+8 8 FAST ICE WITH OPEN WATER,VERY OPEN OR OPEN PACK ICE TO SEAWA"    RD OF THE ICE BOUNDARY, SEA ICE CONCENTRATION IS NOT UNIFORM"     IN THE OBSERVATION 
+9 9 FAST ICE CLOSE OR VERY CLOSE PACK ICE TO SEAWARD OF THE ICE"    BOUNDARY, SEA ICE CONCETRATION IS NOT UNIFORM IN THE OBSERVA"    TION AREA, SHIP IN IC
+14 14 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY, O"    R BECAUSE SHIP IS MORE THAN 0.5 NAUTICAL MILE AWAY FROM ICE"    EDGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20035.table b/definitions/bufr/tables/0/wmo/7/codetables/20035.table
new file mode 100644
index 0000000..8229f90
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20035.table
@@ -0,0 +1,12 @@
+0 0 NO ICE OF LAND ORIGIN
+1 1 1-5 ICEBERGS, NO GROWLERS OR BERGY BITS
+2 2 6-10 ICEBERGS, NO GROWLERS OR BERGY BITS
+3 3 11-20 ICEBERGS, NO GROWLERS OR BERGY BITS
+4 4 UP TO AND INCLUDING 10 GROWLERS AND BERGY BITS - NO ICEBERGS
+5 5 MORE THAN 10 GROWLERS AND BERGY BITS - NO ICEBERGS
+6 6 1-5 ICEBERGS, WITH GROWLERS AND BERGY BITS
+7 7 6-10 ICEBERGS, WITH GROWLERS AND BERGY BITS
+8 8 11-20 ICEBERGS, WITH GROWLERS AND BERGY BITS
+9 9 MORE THAN 20 ICEBERGS,WITH GROWLERS AND BERGY BITS - A MAJOR"    HAZARD TO NAVIGATION
+14 14 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY OR"    BECAUSE ONLY SEA ICE IS VISIBLE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20036.table b/definitions/bufr/tables/0/wmo/7/codetables/20036.table
new file mode 100644
index 0000000..69c1c36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20036.table
@@ -0,0 +1,12 @@
+0 0 SHIP IN OPEN WATER WITH FLOATING ICE IN SIGHT
+1 1 SHIP IN EASILY PENETRABLE ICE; CONDITIONS IMPROVING
+2 2 SHIP IN EASILY PENETRABLE ICE; CONDITIONS NOT CHANGING
+3 3 SHIP IN EASILY PENETRABLE ICE; CONDITIONS WORSENING
+4 4 SHIP IN ICE DIFFICULT TO PENETRATE; CONDITIONS IMPROVING
+5 5 SHIP IN ICE DIFFICULT TO PENETRATE; CONDITIONS NOT CHANGING
+6 6 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."    ICE FORMING AND FLOES FREEZING TOGETHAR
+7 7 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."    ICE UNDER SLIGHT PRESSURE
+8 8 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."    ICE UNDER MODERATE OR SEVERE PRESSURE
+9 9 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."     SHIP BESET.
+30 30 UNABLE TO REPORT, BECAUSE OF DARKNESS OR LACK OF VISIBILITY
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20037.table b/definitions/bufr/tables/0/wmo/7/codetables/20037.table
new file mode 100644
index 0000000..ea3a1df
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20037.table
@@ -0,0 +1,12 @@
+0 0 NEW ICE ONLY (FRAZIL ICE, GREASE ICE, SLUSH, SHUGA)
+1 1 NILAS OR ICE RIND, LESS THAN 10 CM THICK
+2 2 YOUNG ICE(GREY ICE, GREY-WHITE ICE
+3 3 PREDOMINANTLY NEW AND/OR YOUNG ICE WITH SOME FIRST-YEAR ICE
+4 4 PREDOMINANTLY THIN FIRST-YEAR ICE WITH SOME NEW AND/OR YOUNG"     ICE
+5 5 ALL THIN FIRST-YEAR ICE (30-70 CM THICK)
+6 6 PREDOMINANTLY MEDIUM FIRST-YEAR ICE"    (70-120 CM THICK) AND THICK FIRST-YEAR ICE (>120 CM
+7 7 ALL MEDIUM AND THICK FIRST-YEAR ICE
+8 8 PREDOMINANTLY MEDIUM AND THICK FIRST-YEAR ICE WITH SOME"    OLD ICE (USUALLY MORE THAN 2 METRES THICK)
+9 9 PREDOMINANTLY OLD ICE
+30 30 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY OR"    BECAUSE ONLY ICE OF LAND ORIGIN IS VISIBLE OR BECAUSE SHIP I"    S MORE THAN 0.5 NAUT
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2004.table b/definitions/bufr/tables/0/wmo/7/codetables/2004.table
new file mode 100644
index 0000000..b83f216
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2004.table
@@ -0,0 +1,11 @@
+0 0 USA OPEN PAN EVAPORIMETER (WITHOUT COVER)
+1 1 USA OPEN PAN EVAPORIMETER (MESH COVERED)
+2 2 GGI-300 EVAPORIMETER (SUNKEN)
+3 3 20 M**2 TANK
+4 4 OTHERS
+5 5 RICE
+6 6 WHEAT
+7 7 MAIZE
+8 8 SORGHUM
+9 9 OTHER CROPS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20040.table b/definitions/bufr/tables/0/wmo/7/codetables/20040.table
new file mode 100644
index 0000000..32b4ebd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20040.table
@@ -0,0 +1,9 @@
+0 0 DRIFT SNOW ENDED BEFORE THE HOUR OF OBSERVATION
+1 1 INTENSITY DIMINISHING
+2 2 NO CHANGE
+3 3 INTENSITY INCREASING
+4 4 CONTINUES, APART FROM INTERRUPTION LASTING LESS THAN 30 MINU"    TES
+5 5 GENERAL DRIFT SNOW HAS BECOME DRIFT SNOW NEAR THE GROUND
+6 6 DRIFT SNOW NEAR THE GROUND HAS BECOME GENERAL DRIFT SNOW
+7 7 DRIFT SNOW HAS STARTED AGAIN AFTER AN INTERRUPTION OF MORE T"    HAN 30 MINUTES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20041.table b/definitions/bufr/tables/0/wmo/7/codetables/20041.table
new file mode 100644
index 0000000..5e5ee64
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20041.table
@@ -0,0 +1,11 @@
+0 0 NO ICING
+1 1 LIGHT ICING
+2 2 LIGHT ICING IN CLOUD
+3 3 LIGHT ICING IN PRECIPITATION
+4 4 MODERATE ICING
+5 5 MODERATE ICING IN CLOUD
+6 6 MODERATE ICING IN PRECIPITATION
+7 7 SEVERE ICING
+8 8 SEVERE ICING IN CLOUD
+9 9 SEVERE ICING IN PRECIPITATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20042.table b/definitions/bufr/tables/0/wmo/7/codetables/20042.table
new file mode 100644
index 0000000..2493af7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20042.table
@@ -0,0 +1,4 @@
+0 0 NO ICING
+1 1 ICING PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20045.table b/definitions/bufr/tables/0/wmo/7/codetables/20045.table
new file mode 100644
index 0000000..91ae63f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20045.table
@@ -0,0 +1,4 @@
+0 0 NO SLD CONDITIONS PRESENT
+1 1 SLD CONDITIONS PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20050.table b/definitions/bufr/tables/0/wmo/7/codetables/20050.table
new file mode 100644
index 0000000..3f8654e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20050.table
@@ -0,0 +1,10 @@
+0 0 RESERVED
+1 1 1ST LOW CLOUD
+2 2 2ND LOW CLOUD
+3 3 3RD LOW CLOUD
+4 4 1ST MEDIUM CLOUD
+5 5 2ND MEDIUM CLOUD
+6 6 3RD MEDIUM CLOUD
+7 7 1ST HIGH CLOUD
+8 8 2ND HIGH CLOUD
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20055.table b/definitions/bufr/tables/0/wmo/7/codetables/20055.table
new file mode 100644
index 0000000..cf3be5f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20055.table
@@ -0,0 +1,11 @@
+0 0 CUMULUS, IF ANY, ARE QUITE SMALL
+1 1 CUMULUS OF INTERMEDIATE SIZE
+2 2 SWELLING CUMULUS
+3 3 SWELLING CUMULUS WITH TOWERS
+4 4 SWELLING CUMULUS WITH TOWERS HAVING PRONOUNCED TILT
+5 5 TALL CUMULUS CONGESTUS
+6 6 ISOLATED CUMULONIMBUS
+7 7 NUMEROUS CUMULONIMBUS
+8 8 CONTINUOUS DENSE MIDDLE CLOUDS
+9 9 CONTINUOUS SHEETS OF MIDDLE CLOUDS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20056.table b/definitions/bufr/tables/0/wmo/7/codetables/20056.table
new file mode 100644
index 0000000..6598473
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20056.table
@@ -0,0 +1,5 @@
+0 0 UNKNOWN
+1 1 WATER
+2 2 ICE
+3 3 MIXED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20062.table b/definitions/bufr/tables/0/wmo/7/codetables/20062.table
new file mode 100644
index 0000000..aba68ad
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20062.table
@@ -0,0 +1,21 @@
+0 0 SURFACE OF GROUND DRY (WITHOUT CRACKS AND NO APPRECIABLE"    AMOUNT OF DUST OR LOOSE SAND)
+1 1 SURFACE OF GROUND MOIST
+2 2 SURFACE OF GROUND WET (STANDING WATER IN SMALL"    OR LARGE POOLS ON SURFACE)
+3 3 FLOODED WITHOUT SNOW
+4 4 SURFACE OF GROUND FROZEN MEASURABLE ICE
+5 5 GLAZE ON GROUND COVER
+6 6 LOOSE DRY DUST OR SAND NOT COVERING GROUND COMPLETELY
+7 7 THIN COVER OF LOOSE DRY DUST OR SAND COVERING GROUND COMPLET"    ELY
+8 8 MODERATE OR THICK COVER OF LOOSE DRY DUST OR SAND COVERING"    GROUND COMPLETELY
+9 9 EXTREMELY DRY WITH CRACKS
+10 10 GROUND PREDOMINANTLY COVERED BY ICE
+11 11 COMPACT OR WET SNOW (WITH OR WITHOUT ICE) COVERING LESS THAN"    ONE-HALF OF THE GROUND
+12 12 COMPACT OR WET SNOW (WITH OR WITHOUT ICE) COVERING AT LEAST"    ONE-HALF OF THE GROUND BUT GROUND NOT COMPLETELY COVERED
+13 13 EVEN LAYER OF COMPACT OR WET SNOW COVERING GROUND COMPLETELY
+14 14 UNEVEN LAYER OF COMPACT OR WET SNOW COVERING GROUND"    WITH SNOW OR COMPLETELY MEASURABLE ICE
+15 15 LOOSE DRY SNOW COVERING LESS THAN ONE-HALF OF THE GROUND COV"    ER
+16 16 LOOSE DRY SNOW COVERING AT LEAST ONE-HALF OF THE"    GROUND (BUT NOT COMPLETELY)
+17 17 EVEN LAYER OF LOOSE DRY SNOW COVERING GROUND COMPLETELY
+18 18 UNEVEN LAYER OF LOOSE DRY SNOW COVERING GROUND COMPLETELY
+19 19 SNOW COVERING GROUND COMPLETELY; DEEP DRIFTS
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20063.table b/definitions/bufr/tables/0/wmo/7/codetables/20063.table
new file mode 100644
index 0000000..71cb125
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20063.table
@@ -0,0 +1 @@
+0 0 TO BE DEVELOPED
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20071.table b/definitions/bufr/tables/0/wmo/7/codetables/20071.table
new file mode 100644
index 0000000..bc9d6f6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20071.table
@@ -0,0 +1,11 @@
+0 0 NO ASSESSMENT            NO ASSESSMENT
+1 1 LESS THAN 50 KM          LESS THAN 1 PER SECOND
+2 2 BETWEEN 50 AND 200 KM    LESS THAN 1 PER SECOND
+3 3 MORE THAN 200 KM         LESS THAN 1 PER SECOND
+4 4 LESS THAN 50 KM          1 OR MORE PER SECOND
+5 5 BETWEEN 50 AND 200 KM    1 OR MORE PER SECOND
+6 6 MORE THAN 200 KM         1 OR MORE PER SECOND
+7 7 LESS THANK 50 KM         RATE SO RAPID NUMBER CANNOT BE COUN"    TED
+8 8 BETWEEN 50 AND 200 KM    RATE SO RAPID NUMBER CANNOT BE COUN"    TED
+9 9 MORE THAN 200 KM         RATE SO RAPID NUMBER CANNOT BE COUN"    TED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20086.table b/definitions/bufr/tables/0/wmo/7/codetables/20086.table
new file mode 100644
index 0000000..c820dcb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20086.table
@@ -0,0 +1,8 @@
+0 0 CLEAR AND DRY
+1 1 DAMP
+5 5 WET SNOW
+6 6 SLUSH
+7 7 ICE
+8 8 COMPACTED OR ROLLED SNOW
+9 9 FROZEN RUTS OR RIDGES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20090.table b/definitions/bufr/tables/0/wmo/7/codetables/20090.table
new file mode 100644
index 0000000..a33a9d0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20090.table
@@ -0,0 +1,7 @@
+0 0 RESERVED
+1 1 NACREOUS CLOUDS
+2 2 NOCTILUCENT CLOUDS
+3 3 CLOUDS FROM WATERFALLS
+4 4 CLOUDS FROM FIRES
+5 5 CLOUDS FROM VULCANIC ERUPTIONS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20101.table b/definitions/bufr/tables/0/wmo/7/codetables/20101.table
new file mode 100644
index 0000000..7e2fa15
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20101.table
@@ -0,0 +1,10 @@
+1 1 SCHISTOCERCA GREGARIA
+2 2 LOCUSTA MIGRATORIA
+3 3 NOMADACRIS SEPTEMFASCIATA
+4 4 OEDALEUS SENAGALENSIS
+5 5 ANRACRIDIUM SPP
+6 6 OTHER LOCUST
+7 7 OTHER GRASSHOPPERS
+8 8 ITHER CRICKETS
+9 9 SPODOPTERA EXEMPTA
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/20102.table b/definitions/bufr/tables/0/wmo/7/codetables/20102.table
new file mode 100644
index 0000000..fae1feb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/20102.table
@@ -0,0 +1,11 @@
+0 0 GREEN
+1 1 GREEN AND BLACK
+2 2 BLACK
+3 3 YELLOW AND BLACK
+4 4 STRAW/GREY
+5 5 PINK
+6 6 DARK RED/BROWN
+7 7 MIXED RED AND YELLOW
+8 8 YELLOW
+9 9 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2011.table b/definitions/bufr/tables/0/wmo/7/codetables/2011.table
new file mode 100644
index 0000000..f794c4f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2011.table
@@ -0,0 +1,54 @@
+0 0 RESERVED
+1 1 RESERVED
+2 2 NO RADIOSONDE-PASSIVE TARGET(E.G.REFLECTOR)
+3 3 NO RADIOSONDE-ACTIVE TARGET(E.G.TRANSPONDER)
+4 4 NO RADIOSONDE-PASSIVE TEMPERATURE-HUMIDITY PROFILER
+5 5 NO RADIOSONDE-ACTIVE TEMPERATURE-HUMIDITY PROFILER
+6 6 NO RADIOSONDE-RADIO ACOUSTIC SOUNDER
+9 9 NO RADIOSONDE-SYSTEM UNKNOWN OR NOT SPECIFIED
+10 10 RS VIZ TYPE A (USA)
+11 11 RS VIZ TYPE B (USA)
+12 12 RS SDC (SPACE DATA CORPORATION-USA)
+13 13 ASTOR (NO LONGER MADE-AUSTRALIA)
+14 14 VIZ MARK I MICROSONDE(USA)
+15 15 EEC COMPANY TYPE 23 (USA)
+16 16 ELIN (AUSTRIA)
+17 17 GRAW G. (GERMANY)
+19 19 GRAW M60 (GERMANY)
+20 20 INDIAN MET SERVICE MK3 (INDIA)
+21 21 VIZ/JIN YANG MARK I MICROSONDE(SOUTH KOREA)
+22 22 MEISEI RS2-80 (JAPAN)
+23 23 MESURAL FMO 1950A (FRANCE)
+24 24 MESURAL FMO 19455A (FRANCE)
+25 25 MESURAL MH73A (FRANCE)
+26 26 METEOLABOR BASORA (SWITZERLAND)
+27 27 AVK-MRZ (USSR)
+28 28 METEORIT MARZ2-1 (USSR)
+29 29 METEIRIT MARZ2-2 (USSR)
+30 30 OKI RS2-80 (JAPAN)
+31 31 VIZ/VALCOM TYPE A PRESSURE-COMMUTATED(CANADA)
+32 32 SHANGAI RADIO (CHINA)
+33 33 UK MET OFFICE MK3( UK)
+34 34 VINOHRADY(CZECHOSLOVAKIA)
+35 35 VAISALA RS18 (FINLAND)
+36 36 VAISALA RS21 (FINLAND)
+37 37 VAISALA RS80 (FINLAND)
+38 38 VIZ LOCATE (LORAN-C)(USA)
+39 39 SPRENGER E076 (GERMANY)
+40 40 SPRENGER E084 (GERMANY)
+41 41 SPRENGER E085 (GERMANY)
+42 42 SPRENGER E086 (GERMANY)
+43 43 AIR IS -4A-1680 (UK)
+44 44 AIR IS -4A-1680 X (UK)
+45 45 RS MSS(USA)
+46 46 AIR IS -4A-403(USA)
+47 47 MEISLEI RS2-91(JAPAN)
+48 48 VALCOM(CANADA)
+49 49 VIZ MARK II(USA)
+60 60 VAISALA RS80/MICROCORA (FINLAND)
+61 61 VAISALA RS80/DIGCORA OR MARWIN (FINLAND)
+62 62 VAISALA RS80/PCCORA (FINLAND)
+63 63 VAISALA RS80/STAR (FINLAND)
+64 64 ORBITAL,SCIENCE CORPORATION,SPACE DATA DIVISION,TRANSPONDER"     RADIOSONDE,TYPE 909-11-XX,WHERE XX CORRECPOND TO THE MODEL"    OF THE INSTRUMENT
+65 65 VIZ TRANSPONDER RADIOSONDE,MODEL NUMBER 1499-520(USA)
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2012.table b/definitions/bufr/tables/0/wmo/7/codetables/2012.table
new file mode 100644
index 0000000..71cb125
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2012.table
@@ -0,0 +1 @@
+0 0 TO BE DEVELOPED
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2013.table b/definitions/bufr/tables/0/wmo/7/codetables/2013.table
new file mode 100644
index 0000000..a5df80f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2013.table
@@ -0,0 +1,9 @@
+0 0 NO CORRECTION
+1 1 CIMO SOLAR CORRECTED AND CIMO INFRARED CORRECTED
+2 2 CIMO SOLAR CORRECTED AND IFRARED CORRECTED
+3 3 CIMO SOLAR CORRECTED ONLY
+4 4 SOLAR AND INFRARED CORRECTED AUTOMATICALLY BY RADIOSONDE SY"    STEM
+5 5 SOLAR CORRECTED AUTOMATICALLY BY RADIOSONDE SYSTEM
+6 6 SOLAR AND INFRARED CORRECTED AS SPECIFIED BY COUNTRY
+7 7 SOLAR CORRECTED AS SPECIFIED BY COUNTRY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2014.table b/definitions/bufr/tables/0/wmo/7/codetables/2014.table
new file mode 100644
index 0000000..409caa4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2014.table
@@ -0,0 +1,50 @@
+0 0 NO WINDFINDING
+1 1 AUTOMATIC WITH AUXILIARY OPTICAL DIRECTION FINDING
+2 2 AUTOMATIC WITH AUXILIARY RADIO DIRECTION FINDING
+3 3 AUTOMATIC WITH AUXILIARY RANGING
+4 4 NOT USED
+5 5 AUTOMATIC WITH MULTIPLE VLF-OMEGA SIGNALS
+6 6 AUTOMATIC CROSS CHAIN LORAN-C
+7 7 AUTOMATIC WITH AUXILIARY WIND PROFILER
+8 8 AUTOMATIC SATELLITE NAVIGATION
+19 19 TRACKING TECHNIQUE NOT SPECIFIED
+20 20 VESSEL STOPPED
+21 21 VESSEL DIVERTED FROM ORIGINAL DESTINATION
+22 22 VESSEL'S ARRIVAL DELAYED
+23 23 CONTAINER DAMAGED
+24 24 POWER FAILURE TO CONTAINER
+29 29 OTHER PROBLEMS
+30 30 MAJOR POWER PROBLEMS
+31 31 UPS INOPERATIVE
+32 32 RECEIVER HARDWARE PROBLEMS
+33 33 RECEIVER SOFTWARE PROBLEMS
+34 34 PROCESSOR HARDWARE PROBLEMS
+35 35 PROCESSOR SOFTWARE PROBLEMS
+36 36 NAVAID SYSTEM DAMAGED
+37 37 SHORTAGE OF LIFTING GAS
+39 39 OTHER PROBLEMS
+40 40 MECHANICAL DEFECT
+41 41 MATERIAL DEFECT (HAND LAUNCHER)
+42 42 POWER FAILURE
+43 43 CONTROL FAILURE
+44 44 PNEUMATIC/HYDRAULIC FAILURE
+45 45 OTHER PROBLEMS
+46 46 COMPRESSOR PROBLEMS
+47 47 BALLOON PROBLEMS
+48 48 BALLOON RELEASE PROBLEMS
+49 49 LAUNCHER DAMAGED
+50 50 R/S RECEIVER ANTENNA DEFECT
+51 51 NAVAID ANTENNA DEFECT
+52 52 R/S RECEIVER CABLING (ANTENNA DEFECT)
+53 53 NAVAID ANTENNA CABLING DEFECT
+59 59 OTHER PROBLEMS
+60 60 ASAP COMMUNICATIONS DEFECT
+61 61 COMMUNICATIONS FACILITY REJECTED DATA
+62 62 NO POWER AT TRANSMITTINGANTENN
+63 63 ANTENNA CABLE BROKEN
+64 64 ANTENNA CABLE DEFECT
+65 65 MESSAGE TRANSMITTED POWER BELOW NORMAL
+69 69 OTHER PROBLEMS
+70 70 ALL SYSTEMS IN NORMAL OPERATION
+99 99 STATUS OF SYSTEM AND ITS COMPONENTS NOT SPECIFIED
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2015.table b/definitions/bufr/tables/0/wmo/7/codetables/2015.table
new file mode 100644
index 0000000..007a096
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2015.table
@@ -0,0 +1,6 @@
+1 1 PRESSURE ONLY RADIOSONDE
+2 2 PRESSURE ONLY RADIOSONDE PLUS TRANSPONDER
+3 3 PRESSURE ONLY RADIOSONDE PLUS RADAR REFLECTOR
+4 4 NO PRESSURE RADIOSONDE PLUS TRANSPONDER
+5 5 NO PRESSURE RADIOSONDE PLUS RADAR REFLECTOR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2016.table b/definitions/bufr/tables/0/wmo/7/codetables/2016.table
new file mode 100644
index 0000000..4a30226
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2016.table
@@ -0,0 +1,4 @@
+1 1 TRAIN REGULATOR
+2 2 LIGHT UNIT
+3 3 PARACHUTE
+4 4 ROOFTOP RELEASE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2019.table b/definitions/bufr/tables/0/wmo/7/codetables/2019.table
new file mode 100644
index 0000000..3ddc721
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2019.table
@@ -0,0 +1,296 @@
+10 10 BNSC    RADIOMETER      AATSR   ADVANCED ALONG TRACK SCANNIN"    G RADIOMETER
+11 11 BNSC    RADIOMETER      ATSR    ALONG TRACK SCANNING RADIOME"    TER
+12 12 BNSC    RADIOMETER      ATSR-2  ALONG TRACK SCANNING RADIOME"    TER  -2
+13 13 BNSC    RADIOMETER      MWR     MICROWAVE RADIOMETER
+30 30 CNES    COMMUNICATIONS  ARGOS
+40 40 CNES    LIDAR   LASER REFLECTORS
+41 41 CNES    LIDAR   DORIS   DOPPLER ORBITOGRAPHY AND RADIO-POSIT"    IONING INTEGRATED BY SATELLITE
+42 42 CNES    LIDAR   DORIS-NG        DOPPLER ORBITOGRAPHY AND RAD"    IO-POSITIONING INTEGRATED BY SATELLITE-NG
+47 47 CNES    RADAR ALTIMETERS        POSEIDON-1 (SSALT-1)    POSI"    TIONING OCEAN SOLID EARTH ICE DYNAMICS ORBITING NAVIGATOR (S"    INGLE FREQUENCY SOLI
+48 48  CNES    RADAR ALTIMETERS        POSEIDON-2 (SSALT-2)   POSI"    TIONING OCEAN SOLID EARTH ICE DYNAMICS ORBITING NAVIGATOR (D"    UAL FREQUENCY SOLID 
+50 50 CNES    IMAGER RADIOMETER       ATSR/M  ATSR/M
+51 51 CNES    HIGH RESOLUTION OPTICAL IMAGERS HRG
+52 52 CNES    RADIOMETER      HRV     HIGH RESOLUTION VISIBLE
+53 53 CNES    RADIOMETER      HRVIR   HIGH RESOLUTION VISIBLE AND"            INFRA-RED
+54 54 CNES    RADIOMETER      SCARAB/MV2      SCANNER FOR EARTH'S"            RADIATION BUDGET
+55 55 CNES    RADIOMETER      POLDER  POLDER
+60 60 CNES    SPECTROMETER    VEGETATION      VEGETATION
+61 61 CNES    SPECTROMETER    WINDII  WINDII
+80 80 CSA     COMMUNICATIONS  RADARSAT DTT
+81 81 CSA     COMMUNICATIONS  RADARSAT TTC
+85 85 CSA     RADAR   SAR (CSA)       SYNTHETIC APERTURE RADAR (CS"    A)
+90 90 CSA     RADIOMETER      MOPITT  MEASUREMENTS OF POLLUTION IN"     THE TROPOSPHERE
+91 91 CSA     CHEMISTRY INSTRUMENTS   OSIRIS  OPTICAL SPECTROGRAPH"     AND INFRA-RED IMAGING SYSTEM
+97 97 CSIRO   RADIOMETER      PANCHROMATIC IMAGER
+98 98 CRCSS   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   GPS"    RECEIVER
+102 102 DLR     RADIOMETER      CHAMP GPS SOUNDER       GPS TURBORO"    GUE SPACE RECEIVER (TRSR)
+103 103 UNKNOWN
+116 116 DLR MAGNETOMETER    IGOR CHAMP GRAVITY PACKAGE (ACCELEROMETE"    R+GPS)       INTEGRATED GPS AND OCCULTATION RECEIVER STAR AC"    CELEROMETER
+117 117 DLR     MAGNETOMETER    CHAMP MAGNETOMETRY PACKAGE (1 SCALAR"    +2 VECTOR MAGNETOMETER)     OVERHAUSER MAGNETOMETER (OVM) AN"    D FLUXGATE MAGNETOME
+120 120 ESA     COMMUNICATIONS  ENVISAT COMMS   COMMUNICATIONS PACKA"    GE ON ENVISAT
+121 121 ESA     COMMUNICATIONS  ERS COMMS       COMMUNICATION PACKAG"    E FOR ERS
+130 130 ESA     LIDARS  ALADIN  ATMOSPHERIC LASER DOPPLER INSTRUMENT
+131 131 ESA     LIDARS  ATLID   ATMOSPHERIC LIDAR
+140 140 ESA     RADAR   AMI/SAR/IMAGE   ACTIVE MICROWAVE INSTRUMENTA"    TION. IMAGE MODE
+141 141 ESA     RADAR   AMI/SAR/WAVE    ACTIVE MICROWAVE INSTRUMENTA"    TION. WAVE MODE
+142 142 ESA     RADAR   AMI/SCATTEROMETER       ACTIVE MICROWAVE INS"    TRUMENTATION. WIND MODE
+143 143 ESA     RADAR   ASAR    ASAR
+144 144 ESA     IMAGING MICROWAVE RADARS        ASAR    ADVANCED SYN"    TETIC APERTURA RADAR (IMAGE MODE)
+145 145 ESA     IMAGING MICROWAVE RADARS        ASAR    ADVANCED SYN"    TETIC APERTURA RADAR (WAVE MODE)
+146 146 ESA     CLOUD PROFILE AND RAIN RADARS   CPR     CLOUD RADAR
+147 147 ESA     RADAR   RA-2/MWR        RADAR ALTIMETER - 2
+148 148 ESA     RADAR   RA/MWR  RADAR ALTIMETER
+150 150 ESA     SCATTEROMETERS  SCATTEROMETER   SCATTEROMETER
+161 161 ESA     RADIOMETER      MIPAS   MICHELSON INTERFEROMETRIC PA"    SSIVE ATMOSPHERE SOUNDER
+162 162 ESA     IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E   MWR-2   MICROWAVE RADIOMETER-2
+163 163 ESA     ATMOSPHERIC CHEMISTRY INSTRUMENTS       SOPRANO SUB-"    MILIMETRE OBSERVATION OF PROCESSES IN THE ABSORPTION NOTEWOR"    THY FOR OZONE
+170 170 ESA     ATMOSPHERIC CHEMISTRY INSTRUMENTS       GOME I  GLOB"    AL OZONE MONITORING EXPERIMENT
+172 172 ESA     SPECTROMETER    GOMOS   GLOBAL OZONE MONITORING BY O"    CCULTATION OF STARS
+174 174 ESA     SPECTROMETER    MERIS   MEDIUM RESOLUTION IMAGING SP"    ECTROMETER
+175 175 ESA     SPECTROMETER    SCIAMACHY       SCANNING IMAGING ABS"    ORPTION SPECTROMETER FOR ATMOSPHERIC CARTOGRAPHY
+181 181 EUMETSAT        COMMUNICATIONS  METEOSAT COMMS  COMMUNICATIO"    NS PACKAGE FOR METEOSAT
+182 182 EUMETSAT        COMMUNICATIONS  MSG COMMS       COMMUNICATIO"    NS PACKAGE FOR MSG
+190 190 ESA/ EUMETSAT        SCATTEROMETERS  ASCAT   ADVANCED SCATTE"    ROMETER
+200 200 EUMETSAT        RADIOMETER      GERB    GEOSTATIONARY EARTH"    RADIATION BUDGET
+202 202 ESA/ EUMETSAT        RADIOMETER      GRAS    GNSS RECEIVER F"    OR ATMOSPHERIC SOUNDING
+203 203 EUMETSAT        RADIOMETER      MHS     MICROWAVE HUMIDITY S"    OUNDER
+205 205 EUMETSAT        RADIOMETER      MVIRI   METEOSAT VISIBLE AND"    INFRA-RED IMAGER
+207 207 EUMETSAT        RADIOMETER      SEVIRI  SPINNING ENHANCED VI"    SIBLE AND INFRARED IMAGER
+208 208 EUMETSAT        IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)"        VIRI    VIRI
+220 220 ESA/ EUMETSAT        SPECTROMETER    GOME-2  GLOBAL OZONE MO"    NITORING EXPERIMENT - 2
+221 221 CNES/ EUMETSAT        ATMOSPHERIC TEMPERATURE AND HUMIDITY S"    OUNDERS   IASI    INFRA-RED ATMOSPHERIC SOUNDING INTERFEROME"    TER
+240 240 CAST    COMMUNICATIONS  DCP     DATA COLLECTION PLATFORM TRA"    NSPONDER
+245 245 CAST    RADIOMETER      CCD     HIGH RESOLUTION CCD CAMERA
+246 246 INPE    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   HSB"        HUMIDITY SOUNDER/BRAZIL
+248 248 INPE    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     OBA"        OBSERVADOR BRASILEIRO DA AMAZONIA
+250 250 CAST    RADIOMETER      WFI     WIDE FIELD IMAGER
+255 255 CAST    SPECTROMETER    IRMSS   INFRA RED MULTI SPECTRAL SCA"    NNER
+260 260 ISRO    PRECISION ORBIT BSS & FSS TRANSPONDERS
+261 261 ISRO    PRECISION ORBIT DRT-S&R
+262 262 ISRO    COMMUNICATIONS  INSAT COMMS     COMMUNICATIONS PACKA"    GE FOR INSAT
+268 268 ISRO    HIGH RESOLUTION OPTICAL IMAGERS HR-PAN  HIGH RESOLUT"    ION PANCHROMATIC CAMERA
+269 269 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  MSMR    MULTIFREQUENCY SCANNING MICROWAVE RADIOMETER
+270 270 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VHRR"        VERY HIGH RESOLUTION RADIOMETER
+271 271 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     WIFS"        WIDE FIELD SENSOR
+275 275 ISRO    HIGH RESOLUTION OPTICAL IMAGERS AWIFS   ADVANCED WID"    E FIELD SENSOR
+276 276 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-I  LINEAR IMAGI"    NG SELF SCANNER - I
+277 277 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-II LINEAR IMAGI"    NG SELF SCANNER - II
+278 278 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-III        LINE"    AR IMAGING SELF SCANNER - III
+279 279 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-IV LINEAR IMAGI"    NG SELF SCANNER - IV
+284 284 ISRO    HIGH RESOLUTION OPTICAL IMAGERS PAN     PANCHROMATIC"     SENSOR
+285 285 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     MOS"        MODULAR OPTO-ELECTRONIC SCANNER
+286 286 ISRO    OCEAN COLOUR INSTRUMENTS        OCM     OCEAN COLOUR"     MONITOR
+290 290 JMA     COMMUNICATIONS  MTSAT COMMS     COMMUNICATIONS PACKA"    GE FOR MTSAT
+294 294 JMA     IMAGING MULTI-SPECTRAL RADIOMETERS      IMAGER/MTSAT"    -1R IMAGER/MTSAT
+295 295 JMA     IMAGING MULTI-SPECTRAL RADIOMETERS      IMAGER/MTSAT"        IMAGER/MTSAT
+296 296 JMA     IMAGING MULTI-SPECTRAL RADIOMETERS      VISSR (GMS4)"        VISIBLE AND INFRA-RED SPIN SCAN RADIOMETER (GMS4)
+300 300 NASA    LIDARS  GLAS    GEOSCIENCE LASER ALTIMETER SYSTEM
+301 301 NASA    PRECISION ORBIT LRA     LASER RETROREFLECTOR ARRAY
+302 302 NASA    LIDARS  MBLA    MULTI BEAM LASER ALTIMETER
+309 309 NASA    CLOUD PROFILE AND RAIN RADARS   CPR (CLOUDSAT)  CLOU"    D PROFILING RADAR
+312 312 NASA    RADAR   NSCAT   NASA SCATTEROMETER
+313 313 NASA    RADAR   SEAWINDS       ADEOS II - NASA SCATTEROMETER
+330 330 NASA    EARTH RADIATION BUDGET RADIOMETER       ACRIM   ACTI"    VE CAVITY RADIOMETER IRRADIANCE MONITOR
+334 334 NASA    TOTAL AND PROFILE OZONE BUV     BACKSCATTER ULTRAVIO"    LET INSTRUMENT
+336 336 NASA    HIGH RESOLUTION OPTICAL IMAGERS ALI     ADVANCED LAN"    D IMAGER
+347 347 NASA    HIGH RESOLUTION OPTICAL IMAGERS ASTER   ADVANCED SPA"    CEBORNE THERMAL EMISSION AND REFLECTION RADIOMETER
+348 348 NASA    EARTH RADIATION BUDGET RADIOMETER       CERES-2 CLOU"    D AND THE EARTH'S RADIANT ENERGY SYSTEM
+351 351 CONAE   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   GPSD"    R   GPS DEMONSTRATION RECEIVER
+353 353 NASA    TOTAL AND PROFILE OZONE HIRDLS  HIGH RESOLUTION DYNA"    MICS LIMB SOUNDER
+354 354 NASA    TOTAL AND PROFILE OZONE HRDI    HIGH RESOLUTION DOPP"    LER IMAGER
+356 356 NASA    RADIOMETER      LIS     LIGHTNING IMAGING SENSOR
+358 358 NASA    MAGNETIC FIELD, AUROAL IMAGERYSCINTILLATION BOUNDARY"        PEM     PARTICLE ENVIRONMENT MONITOR
+359 359 NASA    OCEAN COLOUR INSTRUMENTS        SEAWIFS SEA-VIEWING"    WIDE FIELD-OF-VIEW SENSOR
+360 360 NASA    EARTH RADIATION BUDGET RADIOMETER       SUSIM (UARS)"        SOLAR ULTRAVIOLET IRRADIANCE MONITOR
+363 363 NASA    TOTAL AND PROFILE OZONE SBUV/1  SOLAR BACKSCATTER UL"    TRAVIOLET 1 INSTRUMENT
+365 365 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  TMI     TRMM MICROWAVE IMAGER
+366 366 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  JMR     JASON-1 MICROWAVE RADIOMETER
+369 369 NASA    TOTAL AND PROFILE OZONE LIMS    LIMB INFRARED MONITO"    R OF THE STRATOSPHERE
+370 370 NASA    TOTAL AND PROFILE OZONE LRIR    LIMB RADIANCE INVERS"    ION RADIOMETER INSTRUMENT
+371 371 NASA    TOTAL AND PROFILE OZONE EPIC    EARTH POLYCHROMATIC"    IMAGING CAMERA
+372 372 NASA    EARTH RADIATION BUDGET RADIOMETER       NISTAR  NIST"     ADVANCED RADIOMETER
+373 373 NASA    MAGNETIC FIELD, AUROAL IMAGERY SCINTILLATION BOUNDAR"    Y   PLASMA-MAG
+374 374 NASA    OTHER   XPS     XUV PHOTOMETER SYSTEM
+375 375 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VIRS"        VISIBLE INFRA-RED SCANNER
+376 376 CNES    MULTIPLE DIRECTION/POLARISATION RADIOMETERS     POLD"    ER II       POLARIZATION AND DIRECTIONALITY OF THE EARTH'S R"    EFLECTANCE - II
+377 377 NASA    EARTH RADIATION BUDGET RADIOMETER       TIM     TOTA"    L IRRADIANCE MONITOR
+379 379 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     WFC"        WIDE FIELD CAMERA
+382 382 NASA    SPECTRO-RADIOMETER      CLAES   CRYOGENIC LIMB ARRAY"     ETALON SPECTROMETER
+383 383 NASA    SPECTRO-RADIOMETER      HALOE   HALOGEN OCCULTATION"    EXPERIMENT
+384 384 NASA    SPECTRO-RADIOMETER      ISAMS   IMPROVED STRATOSPHER"    IC AND MESOSPHERIC SOUNDER
+385 385 NASA    SPECTRO-RADIOMETER      MISR    MULTI-ANGLE IMAGING"    SPECTRORADIOMETER
+386 386 NASA    SPECTRO-RADIOMETER    MLS     MICROWAVE LIMB SOUNDER
+387 387 NASA    SPECTRO-RADIOMETER    MLS (EOS-AURA)  MICROWAVE LIMB"     SOUNDER (EOS-AURA)
+389 389 NASA    SPECTRO-RADIOMETER      MODIS   MODERATE-RESOLUTION"    IMAGING SPECTRORADIOMETER
+393 393 NASA    GRAVITY HAIRS   HIGH ACCURACY INTER-SATELLITE RANGIN"    G SYSTEM
+394 394 NASA    TOTAL AND PROFILE OZONE OMI     OZONE MEASURING INST"    RUMENT
+395 395 NASA    RADIOMETER      ATMOSPHERIC CORRECTOR   ATMOSPHERIC"    CORRECTOR
+396 396 NASA    RADIOMETER      HYPERION        HYPERSPECTRAL IMAGER
+399 399 NASA    SPECTRO-RADIOMETER      SAGE I  STRATOSPHERIC AEROSO"    L AND GAS EXPERIMENT-I
+400 400 NASA    SPECTRO-RADIOMETER      SAGE II STRATOSPHERIC AEROSO"    L AND GAS EXPERIMENT-II
+401 401 NASA    SPECTRO-RADIOMETER      SAGE III        STRATOSPHERI"    C AEROSOL AND GAS EXPERIMENT-III
+402 402 NASA    SPECTRO-RADIOMETER      SAMS    STRATOSPHERIC AND ME"    SOSPHERIC SOUNDER
+403 403 NASA    SPECTRO-RADIOMETER      SAM II  STRATOSPHERIC AEROSO"    L MEASUREMENT II
+404 404 NASA    SPECTRO-RADIOMETER      IRIS    INFRARED INTERFEROME"    TER SPECTROMETER
+405 405 NASA    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   GIFT"    S   GEOSYNCHRONOUS IMAGING FOURIER TRANSFORM SPECTROMETER
+420 420 NASA    SPECTROMETER    AIRS   ATMOSPHERIC INFRA-RED SOUNDER
+426 426 NASA    SPECTROMETER    SOLSTICE        SOLAR STELLAR IRRADI"    ANCE COMPARISON EXPERIMENT
+430 430 NASA    SPECTROMETER    TES     TROPOSHPERIC EMISSION SPECTR"    OMETER
+431 431 NASA    SPECTROMETER    TOMS    TOTAL OZONE MAPPING SPECTROM"    ETER
+450 450 JAXA    COMMUNICATIONS  ADEOS COMMS     COMMUNICATIONS PACKA"    GE FOR ADEOS
+451 451 JAXA    COMMUNICATIONS  DCS (JAXA)      DATA COLLECTION SYST"    EM (JAXA)
+453 453 JAXA    COMMUNICATIONS  GMS COMMS       COMMUNICATIONS PACKA"    GE ON GMS
+454 454 JAXA    COMMUNICATIONS  JERS-1 COMMS    COMMUNICATIONS PACKA"    GE FOR JERS-1
+460 460 JAXA    LIDAR   RIS     RETROREFLECTOR IN SPACE
+461 461 JAXA    RADAR   PR      PRECIPITATION RADAR
+462 462 JAXA    IMAGING MICROWAVE RADARS        SAR     SYNTETIC APE"    RTURE RADAR
+470 470 JAXA    IMAGING MICROWAVE RADARS        PALSAR  PHASED ARRAY"     TYPE L-BAND SYNTHETIC APERTURE RADAR
+479 479 JAXA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  AMSR-E  ADVANCED MICROWAVE SCANNING RADIOMETER-EOS
+480 480 JAXA    HIGH RESOLUTION OPTICAL IMAGERS PRISM (ALOS)    PANC"    HROMATIC REMOTE-SENSING INSTRUMENT FOR STEREO MAPPING
+481 481 JAXA    RADIOMETER      AMSR    ADVANCED MICROWAVE SCANNING"    RADIOMETER
+482 482 JAXA    HIGH RESOLUTION OPTICAL IMAGERS AVNIR   ADVANCED VIS"    IBLE AND NEAR INFRARED RADIOMETER
+483 483 JAXA    HIGH RESOLUTION OPTICAL IMAGERS AVNIR-2 ADVANCED VIS"    IBLE AND NEAR INFRA-RED RADIOMETER TYPE 2
+484 484 JAXA    IMAGER  GLI     GLOBAL IMAGER
+485 485 JAXA    RADIOMETER      MESSR   MULTISPECTRAL ELECTRONIC SEL"    F SCANNING RADIOMETER
+486 486 JAXA    RADIOMETER      MSR    MICROWAVE SCANNING RADIOMETER
+487 487 JAXA    RADIOMETER      OCTS   OCEAN COLOR AND TEMPERATURE S"    CANNER
+488 488 JAXA    RADIOMETER      OPS     OPTICAL SENSOR
+489 489 JAXA    SPECTRO-RADIOMETER      VISSR (GMS5)    VISIBLE AND"    INFRA-RED SPIN SCAN RADIOMETER (GMS5)
+490 490 JAXA    RADIOMETER      VTIR    VISIBLE AND THERMAL INFRA-RE"    D RADIOMETER
+510 510 JAXA    SPECTROMETER    ILAS-I  IMOROVED LIMB ATOMOSPHIRIC S"    PECTROMETER
+511 511 JAXA    SPECTROMETER    ILAS-II IMPROVED LIMB ATOMOSPHIRIC S"    PECTROMETER
+512 512 JAXA    SPECTROMETER    IMG     INFEROMETRIC MONITOR OF GREE"    NHOUSE GASES
+514 514 JAXA    SPACE ENVIRONMENT       SEM     SPACE ENVIRONMENT MO"    NITOR (JAXA)
+515 515 JAXA    TOTAL AND PROFILE OZONE SOFIS   SOLAR OCCULTATION FO"    URIER TRANSFORM SPECTROMETER FOR INCLINED ORBIT SATELLITE
+540 540 NOAA    COMMUNICATIONS  DCS (NOAA)      DATA COLLECTION SYST"    EM (NOAA)
+541 541 NOAA    COMMUNICATIONS  GOES COMMS      COMMUNICATIONS PACKA"    GE ON GOES
+542 542 NOAA    COMMUNICATIONS  LANDSAT COMMS   COMMUNICATIONS PACKA"    GE FOR LANDSAT
+543 543 NOAA    COMMUNICATIONS  NOAA COMMS      COMMUNICATIONS PACKA"    GE FOR NOAA
+544 544 NOAA    COMMUNICATIONS  S&R (GOES)      SEARCH AND RESCUE
+545 545 NOAA    COMMUNICATIONS  S&R (NOAA)      SEARCH AND RESCUE
+546 546 NOAA    COMMUNICATIONS  WEFAX   WEATHER FACSIMILE
+547 547 NOAA    SPECTROMETER    SEM(GOES)       SPACE ENVIRONMENT MO"    NITOR
+550 550 NOAA    MAGNETIC FIELD  SSM     SPECIAL SENSOR MAGNETOMETER
+551 551 NOAA    MAGNETIC FIELD  SSJ/4   SPECIAL SENSOR PRECIPITATING"     PLASMA MONITOR
+552 552 NOAA    SPACE ENVIRONMENT       SSIES-2 SPECIAL SENSOR IONOS"    PHERIC PLASMA DRIFT/SCINTILLATION METER
+553 553 NOAA    SPACE ENVIRONMENT       SSB/X-2 SPECIAL SENSOR GAMMA"     RAY PARTICLE DECTECTOR
+570 570 NOAA    RADIOMETER      AMSU-A  ADVANCED MICROWAVE SOUNDING"    UNIT-A
+574 574 NOAA    RADIOMETER      AMSU-B  ADVANCED MICROWAVE SOUNDING"    UNIT-B
+580 580 NOAA    RADIOMETER      ATOVS (HIRS/3 + AMSU + AVHRR/3) ADVA"    NCED TIROS OPERATIONAL VERTICAL SOUNDER
+590 590 NOAA    RADIOMETER      AVHRR/2 ADVANCED VERY HIGH RESOLUTIO"    N RADIOMETER/2
+591 591 NOAA    RADIOMETER      AVHRR/3 ADVANCED VERY HIGH RESOLUTIO"    N RADIOMETER/3
+592 592 NOAA    RADIOMETER      AVHRR/4 ADVANCED VERY HIGH RESOLUTIO"    N RADIOMETER/4
+600 600 NOAA    RADIOMETER      ERBE    EARTH'S RADIATION BUDGET EXP"    ERIMENT
+601 601 NOAA    RADIOMETER      ETM+    ENHANCED THEMATIC MAPPER
+605 605 NOAA    RADIOMETER      HIRS/2  HIGH RESOLUTION INFRA-RED SO"    UNDER/2
+606 606 NOAA    RADIOMETER      HIRS/3  HIGH RESOLUTION INFRA-RED SO"    UNDER/3
+607 607 NOAA    RADIOMETER      HIRS/4  HIGH RESOLUTION INFRA-RED SO"    UNDER/4
+615 615 NOAA    RADIOMETER      IMAGER  IMAGER
+616 616 NOAA    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VIIR"    S   VISIBLE/INFRARED IMAGER RADIOMETER SUITE
+620 620 NOAA    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   CRIR"    S/NP        CROSS TRACK INFRA-RED SOUNDER/NPOESS
+621 621 NOAA    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   ATMS"        ADVANCED TECHNOLOGY MICROWAVE SOUNDER
+622 622 NOAA    RADIOMETER      MSS    MULTISPECTRAL SCANNING SYSTEM
+623 623 NOAA    RADIOMETER      MSU     MICROWAVE SOUNDING UNIT
+624 624 NOAA    RADIOMETER      SBUV/2  SOLAR BACKSCATTTER ULTRA-VIO"    LET INSTRUMENT/2
+625 625 NOAA    RADIOMETER      SBUV/3  SOLAR BACKSCATTTER ULTRA-VIO"    LET INSTRUMENT/3
+626 626 NOAA    RADIOMETER      SOUNDER SOUNDER
+627 627 NOAA    RADIOMETER      SSU     STRATOSPHERIC SOUNDING UNIT
+628 628 NOAA    RADIOMETER      TM      THEMATIC MAPPER
+629 629 NOAA    RADIOMETER      TOVS (HIRS/2 + MSU + SSU)       TIRO"    S OPERATIONAL VERTICAL SOUNDER
+630 630 NOAA    RADIOMETER      VAS     VISSR ATMOSPHERIC SOUNDER
+631 631 NOAA    RADIOMETER      SSZ
+645 645 NOAA    SPECTROMETER    SEM     SPACE ENVIRONMENT MONITOR
+650 650 NRSCC   RADIOMETER      MVIRSR (10 CHANNEL)     MULTISPECTRA"    L VISIBLE AND INFRA-RED SCAN RADIOMETER
+651 651 NRSCC   RADIOMETER      MVIRSR (3 CHANNEL)      MULTISPECTRA"    L VISIBLE AND INFRA-RED SCAN RADIOMETER
+652 652 NRSCC   RADIOMETER      MVIRSR (5 CHANNEL)      MULTISPECTRA"    L VISIBLE AND INFRA-RED SCAN RADIOMETER
+670 670 NSAU    RADAR   RLSBO   SIDE LOOKING MICROWAVE RADAR
+680 680 NSAU    HIGH RESOLUTION OPTICAL IMAGERS MSU-EU  MULTI-SPECTR"    AL RADIOMETER WITH HIGH RESOLUTION
+681 681 NSAU    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     MSU-"    UM  VISIBLE MULTI-SPECTRAL RADIOMETER
+682 682 NSAU    RADIOMETER      RM-08   IMAGING MICROWAVE RADIOMETER
+683 683 NSAU    HIGH RESOLUTION OPTICAL IMAGERS SU-UMS  STEREO RADIO"    METER WITH HIGH RESOLUTION
+684 684 NSAU    HIGH RESOLUTION OPTICAL IMAGERS SU-VR   VISIBLE RADI"    OMETER WITH HIGH RESOLUTION
+685 685 NSAU    RADIOMETER      TRASSER
+700 700 ROSCOSMOS       COMMUNICATIONS  KONDOR-2        DATA COLLECT"    ION AND TRANSMISSION SYSTEM
+701 701 ROSCOSMOS       COMMUNICATIONS  BRK
+710 710 ROSCOSMOS       LIDAR   ALISSA  BACKSCATTER LIDAR
+712 712 ROSCOSMOS       LIDAR   BALKAN-2 LIDAR
+715 715 ROSCOSMOS       LIDAR   MK-4
+716 716 ROSCOSMOS       LIDAR   MK-4M
+730 730 ROSCOSMOS       RADAR   GREBEN  RADAR ALTIMETER
+731 731 ROSCOSMOS       RADAR   SAR-10  SYNTETIC APERTURE RADAR
+732 732 ROSCOSMOS       RADAR   SAR-3   SYNTETIC APERTURE RADAR
+733 733 ROSCOSMOS       RADAR   SAR-70  SYNTETIC APERTURE RADAR
+740 740 ROSCOSMOS       RADAR   SLR-3   SIDE LOOKING RADAR
+745 745 ROSCOSMOS       RADAR   TRAVERS SAR
+750 750 ROSCOSMOS       RADIOMETER      174-K   TEMPERATURE AND HUMI"    DITY PROFILER
+751 751 ROSCOSMOS       RADIOMETER      BTVK    SCANNING TELEVISION"    RADIOMETER
+752 752 ROSCOSMOS       RADIOMETER      CHAIKA  SCANNING IR RADIOMET"    ER
+753 753 ROSCOSMOS       RADIOMETER      DELTA-2 MULTISPECTRAL MICROW"    AVE SCANNER
+755 755 ROSCOSMOS       RADIOMETER      IKAR-D  MULTISPECTRAL MICROW"    AVE SCANNER
+756 756 ROSCOSMOS       RADIOMETER      IKAR-N  MULTISPECTRAL MICROW"    AVE SCANNER
+757 757 ROSCOSMOS       RADIOMETER      IKAR-P  MULTISPECTRAL MICROW"    AVE SCANNER
+760 760 ROSCOSMOS       RADIOMETER      ISP
+761 761 ROSCOSMOS       RADIOMETER      KFA-1000        PHOTOGRAPHIC"     CAMERA
+762 762 ROSCOSMOS       RADIOMETER      KFA-200 PHOTOGRAPHIC CAMERA
+763 763 ROSCOSMOS       RADIOMETER      KFA-3000        PHOTOGRAPHIC"     CAMERA
+770 770 ROSCOSMOS       RADIOMETER     KLIMAT SCANNING IR RADIOMETER
+771 771 ROSCOSMOS       RADIOMETER      KLIMAT-2        SCANNING IR"    RADIOMETER
+775 775 ROSCOSMOS       RADIOMETER      MIRAS
+776 776 ROSCOSMOS       RADIOMETER      MIVZA
+777 777 ROSCOSMOS       RADIOMETER      MIVZA-M MICROWAVE SCANNING R"    ADIOMETER
+780 780 ROSCOSMOS       RADIOMETER      MR-2000
+781 781 ROSCOSMOS       RADIOMETER      MR-2000M
+785 785 ROSCOSMOS       RADIOMETER      MR-900  SCANNING TELEPHOTOME"    TER
+786 786 ROSCOSMOS       RADIOMETER      MR-900B SCANNING VISUAL BAND"     TELEPHOTOMETER
+790 790 ROSCOSMOS       RADIOMETER      MSU-E   MULTISPECTRAL HIGH R"    ESOLUTION ELECTRONIC SCANNER
+791 791 ROSCOSMOS       RADIOMETER      MSU-E1  MULTISPECTRAL HIGH R"    ESOLUTION ELECTRONIC SCANNER
+792 792 ROSCOSMOS       RADIOMETER      MSU-E2  MULTISPECTRAL HIGH R"    ESOLUTION ELECTRONIC SCANNER
+793 793 ROSCOSMOS       RADIOMETER      MSU-M
+794 794 ROSCOSMOS       RADIOMETER      MSU-S   MULTISPECTRAL MEDIUM"     RESOLUTION SCANNER
+795 795 ROSCOSMOS       RADIOMETER      MSU-SK  MULTISPECTRAL MEDIUM"    RESOLUTION CONICAL SCANNER
+796 796 ROSCOSMOS       RADIOMETER      MSU-V   MULTISPECTRAL HIGH R"    ESOLUTION CONICAL SCANNER
+810 810 ROSCOSMOS       RADIOMETER      MTZA    SCANNING MICROWAVE R"    ADIOMETER
+815 815 ROSCOSMOS       IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE"    MICROWAVE)  MZOAS   SCANNING MICROWAVE RADIO"    METER
+820 820 ROSCOSMOS       IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE"    MICROWAVE)  R-225   SINGLE CHANNEL MICROWAVE"     RADIOMETER
+821 821 ROSCOSMOS       RADIOMETER      R-400
+822 822 ROSCOSMOS       RADIOMETER      R-600   SINGLE CHANNEL MICRO"    WAVE RADIOMETER
+830 830 ROSCOSMOS       RADIOMETER      RMS     RADIATION MEASUREMEN"    T SYSTEM
+835 835 ROSCOSMOS       RADIOMETER      TV CAMERA
+836 836 ROSCOSMOS       RADIOMETER      SILVA
+840 840 ROSCOSMOS       SPECTRO-RADIOMETER      SROSMO  SPECTRORADIO"    METER FOR OCEAN MONITORING
+850 850 ROSCOSMOS       SPECTROMETER    BUFS-2  BACKSCATTER SPECTROM"    ETER/2
+851 851 ROSCOSMOS       SPECTROMETER    BUFS-4  BACKSCATTER SPECTROM"    ETER/4
+855 855 ROSCOSMOS       SPECTROMETER    ISTOK-1 INFRA-RED SPECTROMET"    ER
+856 856 ROSCOSMOS       SPECTROMETER    SFM-2   SPECTROMETER TO MEAS"    URE DIRECT SOLAR RADIATION
+857 857 ROSCOSMOS       SPECTROMETER    DOPI
+858 858 ROSCOSMOS       SPECTROMETER    KGI-4
+859 859 ROSCOSMOS       SPECTROMETER    OZON-M
+860 860 ROSCOSMOS       SPECTROMETER    RMK-2
+900 900 NOAA    RADIOMETER      MAXIE   MAGNETOSPHERIC ATMOSPHERIC X"    -RAY IMAGING EXPERIMENT
+901 901 NOAA    RADIOMETER      OLS     OPERATIONAL LINESCAN SYSTEM
+905 905 NOAA    RADIOMETER      SSM/I   MISSION SENSOR MICROWAVE IMA"    GER
+906 906 NOAA    RADIOMETER      SSM/T-1 MISSION SENSOR MICROWAVE TEM"    PERATURE SOUNDER
+907 907 NOAA    RADIOMETER      SSM/T-2 MISSION SENSOR MICROWAVE WAT"    ER VAPOR SOUNDER
+908 908 NOAA    RADIOMETER      SSMIS   SPECIAL SENSOR MICROWAVE IMA"    GER SOUNDER
+910 910 NOAA    RADIOMETER      SXI     SOLAR X-RAY IMAGER
+930 930 NOAA    SPECTROMETER    EHIC    ENERGETIC HEAVY ION COMPOSIT"    ION EXPERIMENT
+931 931 NOAA    SPECTROMETER    X-RAY ASTRONOMY PAYLOAD
+932 932 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     IVIS"    SR (FY-2)   IMPROVED MULTISPECTRAL VISIBLE AND INFRA-RED SCA"    N RADIOMETER (5 CHAN
+933 933 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   IRAS"        INFRARED ATMOSPHERIC SOUNDER
+934 934 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   MWAS"        MICROWAVE ATMOSPHERIC SOUNDER
+935 935 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   IMWA"    S   IMPROVED MICROWAVE ATMOSPHERIC SOUNDER
+936 936 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   MWHS"        MICROWAVE HUMIDITY SOUNDER
+937 937 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     MVIR"    S   MODERATE RESOLUTION VISIBLE AND INFRARED IMAGING SPECTRO"    RADIOMETER
+938 938 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  MWRI    MICROWAVE RADIATION IMAGER
+940 940 ROSCOSMOS       ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDER"    S   MTVZA-OK        SCANNING MICROWAVE RADIOMETER
+941 941 CNES    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   SAPH"    IR
+944 944 NOAA    RADAR ALTIMETERS        ALT     ALTIMETER
+945 945 NOAA    EARTH RADIATION BUDGET RADIOMETER       TSIS    TOTA"    L SOLAR IRRADIANCE SENSOR
+946 946 NOAA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  CMIS    CONICAL-SCANNING MICROWAVE IMAGER/SOUNDER
+947 947 NOAA    TOTAL AND PROFILE OZONE OMPS    OZONE MAPPING AND PR"    OFILER SUITE
+948 948 NOAA    SPACE ENVIRONMENT ATMOSPHERIC TEMPERATURE AND HUMIDI"    TY SOUNDERS GPSOS   GLOBAL POSITIONING SYSTEM OCCULTATION SE"    NSOR
+949 949 NOAA    MAGNETIC FIELD, AUROAL IMAGERY SCINTILLATION BOUNDAR"    Y   SESS    SPACE ENVIRONMENTAL SENSOR SUITE
+950 950 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VIRR"        MULTISPECTRAL VISIBLE AND INFRA-RED SCAN RADIOMETER (10"    CHANNELS
+951 951 NRSCC   TOTAL AND PROFILE OZONE TOM     TOTAL OZONE MAPPER
+952 952 NRSCC   TOTAL AND PROFILE OZONE OP      OZONE PROFILER
+2047 2047 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2020.table b/definitions/bufr/tables/0/wmo/7/codetables/2020.table
new file mode 100644
index 0000000..637ea6a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2020.table
@@ -0,0 +1,24 @@
+0 0 NIMBUS
+1 1 VTPR
+2 2 TIROS 1 (TIROS, NOAA-6 TO NOAA-13)
+3 3 TIROS 2 (NOAA-14 ONWARDS)
+10 10 EOS
+31 31 DMSP
+61 61 EUMETSAT POLAR SYSTEM (EPS)
+91 91 ERS
+121 121 ADEOS
+241 241 GOES
+261 261 JASON
+271 271 GMS
+272 272 MTSAT
+301 301 INSAT
+331 331 METEOSAT OPERATIONAL PROGRAMME (MOP)
+332 332 METEOSAT TRANSITIONAL PROGRAMME (MTP)
+333 333 METEOSAT SECOND GENERATION PROGRAMME (MSG)
+351 351 GOMS
+380 380 FY-1
+381 381 FY-2
+401 401 GPS
+402 402 GLONASS
+403 403 GALILEO
+511 511 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2021.table b/definitions/bufr/tables/0/wmo/7/codetables/2021.table
new file mode 100644
index 0000000..4ebf429
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2021.table
@@ -0,0 +1,8 @@
+1 1 HIGH RESOLUTION INFRA RED SOUNDER (HIRS)
+2 2 MICROWAVE SOUNDING UNIT           (MSU )
+3 3 STRATOSPHERIC SOUNDING UNIT       (SSU)
+4 4 AMI WIND MODE
+5 5 AMI WAVE MODE
+6 6 AMI IMAGE MODE
+7 7 RADAR ALTIMETER
+8 8 ATSR
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2022.table b/definitions/bufr/tables/0/wmo/7/codetables/2022.table
new file mode 100644
index 0000000..5068e7f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2022.table
@@ -0,0 +1,5 @@
+1 1 PROCESSING TECHNIQUE NOT DEFINED
+2 2 AUTOMATED STATISTICAL REGRESSION
+3 3 CLEAR PATH
+4 4 PARTLY CLOUDY PATH
+5 5 CLOUDY PATH
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2023.table b/definitions/bufr/tables/0/wmo/7/codetables/2023.table
new file mode 100644
index 0000000..428ca3b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2023.table
@@ -0,0 +1,12 @@
+0 0 RESERVED
+1 1 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE INFRARED"    CHANNEL
+2 2 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE VISIBLE CHANNEL
+3 3 WIND DERIVED FROM CLOUD MOTION OBSERVED IN WATER VAPOUR CHANNEL
+4 4 WIND DERIVED FROM MOTION OBSERVED IN  COMBINATION OF SPECTRAL"    CHANNELS
+5 5 WIND DERIVED FROM MOTION OBSERVED IN THE WATER  VAPOUR CHANNEL"    IN CLEAR AIR
+6 6 WIND DERIVED FROM MOTION OBSERVED IN THE OZONE  CHANNEL
+7 7 WIND DERIVED FROM MOTION OBSERVED IN WATER VAPOUR CHANNEL"    (CLOUD OR CLEAR AIR NOT SPECIFIED)
+8 8 WIND DERIVED FROM ALTIMETER
+9 9 WIND DERIVED FROM RADIOMETER
+13 13 ROOT MEAN SQUARE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2024.table b/definitions/bufr/tables/0/wmo/7/codetables/2024.table
new file mode 100644
index 0000000..ba7498e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2024.table
@@ -0,0 +1,3 @@
+1 1 TABLE WITH FULL RANGE OF HUMIDITY VARIATION IN LAYER
+2 2 REGRESSION TECHNIQUE ON 2 HUMIDITY VALUES IN LAYER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2025.table b/definitions/bufr/tables/0/wmo/7/codetables/2025.table
new file mode 100644
index 0000000..6c8403c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2025.table
@@ -0,0 +1,16 @@
+1 1 RESERVED
+2 2 HIRS
+3 3 MSU
+6 6 HIRS
+7 7 MSU
+10 10 HIRS(1, 2, 3, 8,9, 16, 17)
+11 11 HIRS(1, 2, 3, 9, 17)
+12 12 MSU
+15 15 HIRS
+16 16 HIRS
+17 17 MSU
+18 18 SKINTK(OCEAN ONLY)
+21 21 HIRS
+22 22 SSU
+23 23 MSU (3 ,4)
+25 25 MISSING
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2030.table b/definitions/bufr/tables/0/wmo/7/codetables/2030.table
new file mode 100644
index 0000000..c58949d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2030.table
@@ -0,0 +1,7 @@
+1 1 ADCP (ACOUSTIC DOPPLER CURRENT PROFILER)
+2 2 GEK (GEOMAGNETIC ELECTRO KINETOGRAPH)
+3 3 SHIPS'S SET AND DRIFT DETERMINED BY FIXES 3-6 HOURS APART
+4 4 SHIPS'S SET AND DRIFT DETERMINED BY MORE THAN 6 HOURS BUT LE"    SS THAN 12 HOURS APART
+5 5 DRIFT OF BUOY
+6 6 ADCP (ACOUSTIC DOPPLER CURRENT PROFILER)
+7 7 MISSIN VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2031.table b/definitions/bufr/tables/0/wmo/7/codetables/2031.table
new file mode 100644
index 0000000..1c0f4b8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2031.table
@@ -0,0 +1,21 @@
+0 0 RESERVED
+1 1 INSTANTANEOUS
+2 2 AVERAGED OVER 3 MINUTES OR LESS
+3 3 AVERAGED OVER MORE THAN 3 MINUTES, BUT 6 AT THE MOST
+4 4 AVERAGED OVER MORE THAN 6 MINUTES, BUT 12 AT THE MOST
+5 5 INSTANTANEOUS
+6 6 AVERAGED OVER 3 MINUTES OR LESS
+7 7 AVERAGED OVER MORE THAN 3 MINUTES, BUT 6 AT THE MOST
+8 8 AVERAGED OVER MORE THAN 6 MINUTES, BUT 12 AT THE MOST
+9 9 VECTOR OR DOPPLER CURRENT PROFILLING METHOD NOT USED
+10 10 RESERVED
+11 11 1 HOUR OR LESS
+12 12 MORE THAN  1 HOUR BUT  2 AT THE MOST
+13 13 MORE THAN  2 HOUR BUT  4 AT THE MOST
+14 14 MORE THAN  4 HOUR BUT  8 AT THE MOST
+15 15 MORE THAN  8 HOUR BUT 12 AT THE MOST
+16 16 MORE THAN 12 HOUR BUT 18 AT THE MOST
+17 17 MORE THAN 18 HOUR BUT 24 AT THE MOST
+18 18 RESERVED
+19 19 DRIFT METHOD NOT USED
+31 31 MISSING
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2032.table b/definitions/bufr/tables/0/wmo/7/codetables/2032.table
new file mode 100644
index 0000000..8d60fe6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2032.table
@@ -0,0 +1,4 @@
+0 0 VALUES AT SELECTED DEPTHS (DATA POINTS FIXED BY THE INSTRUME"    NT OR SELECTED BY ANY OTHER METHOD)
+1 1 VALUES AT SIGNIFICANT DEPTHS (DATA POINTS TAKEN FROM TRACES"    AT SIGNIFICANT DEPTHS)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2033.table b/definitions/bufr/tables/0/wmo/7/codetables/2033.table
new file mode 100644
index 0000000..55ee821
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2033.table
@@ -0,0 +1,5 @@
+0 0 NO SALINITY MEASURED
+1 1 IN SITU SENSOR, ACCURACY BETTER THAN 0.02 %
+2 2 IN SITU SENSOR, ACCURACY LESS THAN 0.02 %
+3 3 SAMPLE ANALYSIS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2034.table b/definitions/bufr/tables/0/wmo/7/codetables/2034.table
new file mode 100644
index 0000000..06cdd52
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2034.table
@@ -0,0 +1,7 @@
+0 0 UNSPECIFIED DROGUE
+1 1 HOLEY SOCK
+2 2 TRISTAR
+3 3 WINDOW SHADE
+4 4 PARACHUTE
+5 5 NON-LAGRANGIAN SEA ANCHOR
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2036.table b/definitions/bufr/tables/0/wmo/7/codetables/2036.table
new file mode 100644
index 0000000..4e69a0c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2036.table
@@ -0,0 +1,4 @@
+0 0 DRIFTING BUOY
+1 1 FIXED BUOY
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2037.table b/definitions/bufr/tables/0/wmo/7/codetables/2037.table
new file mode 100644
index 0000000..67049ca
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2037.table
@@ -0,0 +1,7 @@
+0 0 REASERVED
+1 1 MANUAL READING FROM VERTICAL TIDE STAFF
+2 2 MANUAL READING FROM SINGLE AUTOMATIC RECORDER AT STATION
+3 3 MANUAL READING FROM MULTIPLE AUTOMATIC RECORDERS AT STATION
+4 4 AUTOMATIC READING FROM SINGLE AUTOMATIC RECORDER AT STATION"    WITHOUT LEVEL REFERENCE CHECK
+5 5 AUTOMATIC READING FROM SINGLE AUTOMATIC RECORDER AT STATION"    WITH LEVEL REFERENCE CHECK,OR MULTIPLE AUTOMATIC RECORDERS
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2038.table b/definitions/bufr/tables/0/wmo/7/codetables/2038.table
new file mode 100644
index 0000000..25c58c5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2038.table
@@ -0,0 +1,12 @@
+0 0 SHIP INTAKE
+1 1 BUCKET
+2 2 HULL CONTACT SENSOR
+3 3 REVERSING TERMOMETER
+4 4 STD/CTD SENSOR
+5 5 MECHANICAL BT
+6 6 EXPANDABLE BT
+7 7 DIGITAL BT
+8 8 THERMISTOR CHAIN
+9 9 INFRARED SCANNER
+10 10 MICROWAVE SCANNER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2039.table b/definitions/bufr/tables/0/wmo/7/codetables/2039.table
new file mode 100644
index 0000000..0a94982
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2039.table
@@ -0,0 +1,5 @@
+0 0 MEASURED WET-BULB TEMPERATURE
+1 1 ICED BULB MEASURED WET-BULB TEMPERATURE
+2 2 COMPUTED WET-BULB TEMPERATURE
+3 3 ICED BULB COMPUTED WET-BULB TEMPERATURE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2040.table b/definitions/bufr/tables/0/wmo/7/codetables/2040.table
new file mode 100644
index 0000000..5fcc074
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2040.table
@@ -0,0 +1,8 @@
+0 0 SHIPS MOTION REMOVED BY AVARAGING
+1 1 SHIPS MOTION REMOVED BY MOTION COMPENSATION
+2 2 SHIPS MOTION NOT REMOVED
+3 3 SHIPS MOTION REMOVED BY AVERAGING
+4 4 SHIPS MOTION REMOVED BY MOTION COMPENSATION
+5 5 SHIPS MOTION NOT REMOVED
+6 6 DOPPLER CURRENT PROFILING METHOD NOT USED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2041.table b/definitions/bufr/tables/0/wmo/7/codetables/2041.table
new file mode 100644
index 0000000..f479da9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2041.table
@@ -0,0 +1,6 @@
+0 0 INFORMATION BASED ON MANUAL ANALYSIS
+1 1 INFORMATION BASED ON COMPUTER ANALYSIS
+2 2 INFORMATION BASED ON DATA ASSIMILATION
+3 3 INFORMATION BASED ON COMPUTER ANALYSIS OR DATA ASSIMSILATIO"    N MANUALLY MODIFIED
+10 10 INFORMATION BASED ON THE NUMERICAL WEATHER PREDICTION
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2044.table b/definitions/bufr/tables/0/wmo/7/codetables/2044.table
new file mode 100644
index 0000000..80afaca
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2044.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 LONGUET-HIGGINS (1964)
+2 2 LONGUET-HIGGINS (F3 METHOS)
+3 3 MAXIMUM LIKELIHOOD METHOD
+4 4 MAXIMUM ENTROPY METHOD
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2045.table b/definitions/bufr/tables/0/wmo/7/codetables/2045.table
new file mode 100644
index 0000000..374e4f2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2045.table
@@ -0,0 +1,5 @@
+0 0 SEA STATION
+1 1 AUTOMATIC DATA BUOY
+2 2 AIRCRAFT
+3 3 SATELLITE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2046.table b/definitions/bufr/tables/0/wmo/7/codetables/2046.table
new file mode 100644
index 0000000..c4fb394
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2046.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 HEAVE SENSOR
+2 2 SLOPE SENSOR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2048.table b/definitions/bufr/tables/0/wmo/7/codetables/2048.table
new file mode 100644
index 0000000..69e2610
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2048.table
@@ -0,0 +1,12 @@
+0 0 HIRS
+1 1 MSU
+2 2 SSU
+3 3 AMSU-A
+4 4 AMSU-B
+5 5 AVHRR
+6 6 SSMI
+7 7 NSCAT
+8 8 SEA WINDS
+9 9 POSEIDON ALTIMETER
+10 10 JMR (JASON MICROWAVE RADIOMETER)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2049.table b/definitions/bufr/tables/0/wmo/7/codetables/2049.table
new file mode 100644
index 0000000..15b2ce5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2049.table
@@ -0,0 +1,4 @@
+1 1 PROCESSING TECHNIQUE NOT DEFINED
+2 2 SIMULTANIOUS PHISICAL RETRIEVAL
+3 3 CLEAR SOUNDING
+4 4 CLOUDY COUNDING
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2050.table b/definitions/bufr/tables/0/wmo/7/codetables/2050.table
new file mode 100644
index 0000000..c9688ef
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2050.table
@@ -0,0 +1,19 @@
+1 1 CHANNEL 1 14.71 MICROMETERS
+2 2 CHANNEL 2 14.37 MICROMETERS
+3 3 CHANNEL 3 14.06 MICROMETERS
+4 4 CHANNEL 4 13.64 MICROMETERS
+5 5 CHANNEL 5 13.37 MICROMETERS
+6 6 CHANNEL 6 12.66 MICROMETERS
+7 7 CHANNEL 7 12.02 MICROMETERS
+8 8 CHANNEL 8 11.03 MICROMETERS
+9 9 CHANNEL 9  9.71 MICROMETERS
+10 10 CHANNEL 10 7.43 MICROMETERS
+11 11 CHANNEL 11 7.02 MICROMETERS
+12 12 CHANNEL 12 6.51 MICROMETERS
+13 13 CHANNEL 13 4.57 MICROMETERS
+14 14 CHANNEL 14 4.52 MICROMETERS
+15 15 CHANNEL 15 4.45 MICROMETERS
+16 16 CHANNEL 16 4.13 MICROMETERS
+17 17 CHANNEL 17 3.98 MICROMETERS
+18 18 CHANNEL 18 3.74 MICROMETERS
+19 19 CHANNEL 19 0.969 MICROMETERS
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2051.table b/definitions/bufr/tables/0/wmo/7/codetables/2051.table
new file mode 100644
index 0000000..2f0ab22
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2051.table
@@ -0,0 +1,4 @@
+1 1 MAXIMUM/MINIMUM THERMOMETERS
+2 2 AUTOMATED INSTRUMENT
+3 3 THERMOGRAPH
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2052.table b/definitions/bufr/tables/0/wmo/7/codetables/2052.table
new file mode 100644
index 0000000..4b934ab
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2052.table
@@ -0,0 +1,5 @@
+1 1 CHANNEL 1 0.55-.75 MICROMETERS
+2 2 CHANNEL 2 3.9 MICROMETERS
+3 3 CHANNEL 3 6.7 MICROMETERS
+4 4 CHANNEL 4 10.7 MICROMETERS
+5 5 CHANNEL 5 12.0 MICROMETERS
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2053.table b/definitions/bufr/tables/0/wmo/7/codetables/2053.table
new file mode 100644
index 0000000..68c67fe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2053.table
@@ -0,0 +1,5 @@
+0 0 OBSERVED BRIGHTNESS TEMPERATURES
+1 1 BRIGHTNESS TEMPERATURE WITH BIAS CORRECTION APPLIED
+2 2 BRIGHTNESS TEMPERATURE CALCULATED FROM FIRST GUESS
+3 3 BRIGHTNESS TEMPERATURE CALCULATED FROM SOUNDING
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2054.table b/definitions/bufr/tables/0/wmo/7/codetables/2054.table
new file mode 100644
index 0000000..6260713
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2054.table
@@ -0,0 +1,6 @@
+0 0 PARAMETER DERIVED USING OBSERVED SOUNDER BRIGHTNESS TEMPERAT"    URES
+1 1 PARAMETER DERIVED USING OBSERVED IMAGER BRIGHTNESS TEMPERATU"    RES
+2 2 PARAMETER DERIVED USING FIRST GUESS INFORMATION
+3 3 PARAMETER DERIVED USING  NMC ANALYSIS INFORMATION
+4 4 PARAMETER DERIVED USING RADIOSONDE INFORMATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2055.table b/definitions/bufr/tables/0/wmo/7/codetables/2055.table
new file mode 100644
index 0000000..8c9fce2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2055.table
@@ -0,0 +1,9 @@
+0 0 STATISTICS GENERATED COMPARING RETRIEVAL VERSUS RADIOSONDE
+1 1 STATISTICS GENERATED COMPARING RETRIEVAL VERSUS FIRST GUESS
+2 2 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS FIRST GUESS
+3 3 STATISTICS GENERATED COMPARING OBSERVED VERSUS RETRIEVAL
+4 4 STATISTICS GENERATED COMPARING OBSERVED VERSUS FORST GUESS
+5 5 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS IMAGER
+6 6 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS SOUNDER
+7 7 STATISTICS GENERATED FOR RADIOSONDE
+8 8 STATISTICS GENERATED FOR FIRST GUESS
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2056.table b/definitions/bufr/tables/0/wmo/7/codetables/2056.table
new file mode 100644
index 0000000..3bdc910
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2056.table
@@ -0,0 +1,6 @@
+0 0 SUMS OF DIFFERENCE
+1 1 SUMS OF SQUARED DIFFERENCES
+2 2 SAMPLE SIZE
+3 3 MINIMUM DIFFERENCE
+4 4 MAXIMUM DIFFERENCE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2057.table b/definitions/bufr/tables/0/wmo/7/codetables/2057.table
new file mode 100644
index 0000000..a5cb21e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2057.table
@@ -0,0 +1,6 @@
+0 0 NESTED GRID MODEL (NMG)
+1 1 AVIATION MODEL(AVN)
+2 2 MEDIUM RANGE FORECAST (MRF) MODEL
+3 3 GLOBAL DATA ASSIMILATION SYSTEM (GDAS) FORECAST MODEL
+4 4 PRIOR SOUNDINGS (WITHIN 3 HOURS OF CURRENT TIME)
+5 5 CLIMATOLOGY
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2058.table b/definitions/bufr/tables/0/wmo/7/codetables/2058.table
new file mode 100644
index 0000000..258c4ad
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2058.table
@@ -0,0 +1,5 @@
+0 0 12 HOUR AND 18 HOUR
+1 1 18 HOUR AND 24 HOUR
+2 2  6 HOUR AND 12 HOUR
+3 3 GREATER THAN 24 HOUR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2059.table b/definitions/bufr/tables/0/wmo/7/codetables/2059.table
new file mode 100644
index 0000000..58f9c5c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2059.table
@@ -0,0 +1,5 @@
+0 0 NCEP NESTED GRID MODEL ANALYSIS
+1 1 NCEP AVIATION MODEL ANALYSIS
+2 2 NCEP MEDIUM RANGE FORECAST MODEL ANALYSIS
+3 3 NCEP GLOBAL DATA ASSIMILATION SYSTEM FORECAST MODEL ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2060.table b/definitions/bufr/tables/0/wmo/7/codetables/2060.table
new file mode 100644
index 0000000..84a612d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2060.table
@@ -0,0 +1,7 @@
+0 0 CURRENT SURFACE HOURLY REPORTS
+1 1 CURRENT SHIP REPORTS
+2 2 CURRENT BUOY REPORTS
+3 3 ONE HOUR OLD SURFACE HOURLY REPORTS
+4 4 ONE HOUR SHIP OLD REPORTS
+5 5 ONE HOUR BUOY OLD REPORTS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2061.table b/definitions/bufr/tables/0/wmo/7/codetables/2061.table
new file mode 100644
index 0000000..3298d90
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2061.table
@@ -0,0 +1,3 @@
+0 0 INERTIAL NAVIGATOR SYSTEM
+1 1 OMEGA
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2062.table b/definitions/bufr/tables/0/wmo/7/codetables/2062.table
new file mode 100644
index 0000000..7083db9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2062.table
@@ -0,0 +1,7 @@
+0 0 ASDAR
+1 1 ASDAR(ACARS ALSO AVAILABLE BUT NOT OPERATIVE)
+2 2 ASDAR(ACARS ALSO AVAILABLE AND OPERATIVE)
+3 3 ACARS
+4 4 ACARS(ASDAR ALSO AVALILABLE BUT NOT OPERATIVE)
+5 5 ACARS(ASDAR ALSO AVAILABLE AND OPERATIVE)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2064.table b/definitions/bufr/tables/0/wmo/7/codetables/2064.table
new file mode 100644
index 0000000..7414302
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2064.table
@@ -0,0 +1,4 @@
+0 0 GOOD
+1 1 BAD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2066.table b/definitions/bufr/tables/0/wmo/7/codetables/2066.table
new file mode 100644
index 0000000..b1778d1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2066.table
@@ -0,0 +1,4 @@
+0 0 TRS 2000
+1 1 IMS 1500C
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2070.table b/definitions/bufr/tables/0/wmo/7/codetables/2070.table
new file mode 100644
index 0000000..5f294e6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2070.table
@@ -0,0 +1,13 @@
+0 0 ACTUAL LOCATION IN SECONDS
+1 1 ACTUAL LOCATION IN MINUTES
+2 2 ACTUAL LOCATION IN DEGREES
+3 3 ACTUAL LOCATION IN DECIDEGREES
+4 4 ACTUAL LOCATION OM CENTIDEGREES
+5 5 REFERENCED TO CHECKPOINT IN SECONDS
+6 6 REFERENCED TO CHECKPOINT IN MINUTES
+7 7 REFERENCED TO CHECKPOINT IN DEGREES
+8 8 REFERENCED TO CHECKPOINT IN DECIDEGREES
+9 9 REFERENCED TO CHECKPOINT IN CENTIDEGREES
+10 10 ACTUAL LOCATION IN TENTHS OF A MINUTE
+11 11 REFERENCED TO CHECKPOINT IN TENTHS OF A MINUTE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2080.table b/definitions/bufr/tables/0/wmo/7/codetables/2080.table
new file mode 100644
index 0000000..b0eb6d2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2080.table
@@ -0,0 +1,5 @@
+0 0 KAYSAM
+1 1 TOTEX
+2 2 KKS
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2081.table b/definitions/bufr/tables/0/wmo/7/codetables/2081.table
new file mode 100644
index 0000000..4c0f1dc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2081.table
@@ -0,0 +1,9 @@
+0 0 GP26
+1 1 GP28
+2 2 GP30
+3 3 HM26
+4 4 HM28
+5 5 HM30
+6 6 SV16
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2083.table b/definitions/bufr/tables/0/wmo/7/codetables/2083.table
new file mode 100644
index 0000000..61c3e1e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2083.table
@@ -0,0 +1,6 @@
+0 0 HIGH BAY
+1 1 LOW BAY
+2 2 BALLOON INFLATION LAUNCH SYSTEM (BILS)
+3 3 ROOF-TOP BILS
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2084.table b/definitions/bufr/tables/0/wmo/7/codetables/2084.table
new file mode 100644
index 0000000..be6430a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2084.table
@@ -0,0 +1,5 @@
+0 0 HYDROGEN
+1 1 HELIUM
+2 2 NATURAL GAS
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2095.table b/definitions/bufr/tables/0/wmo/7/codetables/2095.table
new file mode 100644
index 0000000..79f4996
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2095.table
@@ -0,0 +1,5 @@
+0 0 CAPACITANCE ANEROID
+1 1 DERIVED FROM GPS
+2 2 RESISTIVE STRAIN GAUGE
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2096.table b/definitions/bufr/tables/0/wmo/7/codetables/2096.table
new file mode 100644
index 0000000..b856de9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2096.table
@@ -0,0 +1,5 @@
+0 0 ROD THERMISTOR
+1 1 BEAD THERMISTOR
+2 2 CAPACITANCE BEAD
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2097.table b/definitions/bufr/tables/0/wmo/7/codetables/2097.table
new file mode 100644
index 0000000..0e511a1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2097.table
@@ -0,0 +1,8 @@
+0 0 VIZ MARK II CARBON HYGRISTOR
+1 1 VIZ B2 HYGRISTOR
+2 2 VAISALA A-HUMICAP
+3 3 VAISALA H-HUMICAP
+4 4 CAPACITANCE SENSOR
+5 5 VAISALA RS90
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2098.table b/definitions/bufr/tables/0/wmo/7/codetables/2098.table
new file mode 100644
index 0000000..6eb06d4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2098.table
@@ -0,0 +1,5 @@
+0 0 HH POLARISATION
+1 1 VV POLARISATION
+2 2 HV POLARISATION REAL VALUED COMPONENT
+3 3 HV POLARISATION IMAGINARY VALUED COMPONENT
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2101.table b/definitions/bufr/tables/0/wmo/7/codetables/2101.table
new file mode 100644
index 0000000..efdb3ec
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2101.table
@@ -0,0 +1,10 @@
+0 0 CENTRE FRONT-FED PARABOLOID
+1 1 OFFSET FRONT-FED PARABOLOID
+2 2 CENTRE CASSEGRAIN PARABOLOID
+3 3 OFFSET CASSEGRAIN PARABOLOID
+4 4 PLANAR ARRAY
+5 5 COAXIAL-COLLINEAR ARRAY
+6 6 YAGI ELEMENTS ARRAY
+7 7 MICROSTRIP
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2103.table b/definitions/bufr/tables/0/wmo/7/codetables/2103.table
new file mode 100644
index 0000000..3b7ee27
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2103.table
@@ -0,0 +1,2 @@
+1 1 RADAR ANTENNA IS PROTECTED BY A RADOME
+2 2 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2104.table b/definitions/bufr/tables/0/wmo/7/codetables/2104.table
new file mode 100644
index 0000000..100081a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2104.table
@@ -0,0 +1,7 @@
+0 0 HORIZONTAL POLARISATION
+1 1 VERTICAL POLARISATION
+2 2 RIGHT CIRCULAR POLARISATION
+3 3 LEFT CIRCULAR POLARSZATION
+4 4 HORIZONTAL AND VERTICAL POLARISATION
+5 5 RIGHT AND LEFT CIRCULAR POLARISATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/21066.table b/definitions/bufr/tables/0/wmo/7/codetables/21066.table
new file mode 100644
index 0000000..a3fd93c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/21066.table
@@ -0,0 +1,11 @@
+1 1 PROCESSING EQUIPMENT NOT WORKING
+2 2 EQUIPMENT FAILED
+3 3 PRF CODE CHANGED DURING IMAGE GENERATION
+4 4 SAMPLINH WINDOW CHANGED DURING IMAGE GENERATION
+5 5 GAIN CHANGED DURING IMAGE GENERATION
+6 6 CHIRP REPLICA EXCEEDS SPECIFIC VALUE
+7 7 INPUT DATA MEAN AND STANDARD DEVIATION OF IN-PHASE AND"    QUADRATURE OUT OF RANGE
+8 8 DOPPLER CENTROID CONFIDENCE > MMCC VALUE
+9 9 DOPPLER CENTROID ABSOLUTE VALUE > PRF/2
+10 10 DOPPLER AMBIGUITY CONFIDENCE < MMCC VALUE
+11 11 OUTPUT DATA MEAN AND STANDARD DEVIATION =< MMCC VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/21067.table b/definitions/bufr/tables/0/wmo/7/codetables/21067.table
new file mode 100644
index 0000000..9d0c51b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/21067.table
@@ -0,0 +1,12 @@
+1 1 NO FOREBEAM CALCULATION
+2 2 NO MIDBEAM CALCULATION
+3 3 NO AFTBEAM CALCULATION
+4 4 FOREBEAM ARCING DETECTED
+5 5 MID ARCING DETECTED
+6 6 AFTBEAM ARCING DETECTED
+7 7 ANY BEAM NOISE CONTENT ABOVE OR EQUAL TO TRESHOLD
+8 8 LAND (ANY LAND IN CELL FOOTPRINT)
+9 9 AUTONOMOUS AMBIGUITY REMOVAL NOT USED
+10 10 METEOROLOGICAL BACKGROUND NOT USED
+11 11 MINIMUM RESIDUAL EXCEEDED TRESHOLD
+12 12 FRAME CHECKSUM ERROR DETECTED
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/21068.table b/definitions/bufr/tables/0/wmo/7/codetables/21068.table
new file mode 100644
index 0000000..8e8b38e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/21068.table
@@ -0,0 +1,7 @@
+1 1 STANDARD DEVIATION OF WIND SPEED OUTSIDE MMCC LIMIT
+2 2 STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT OUTSIDE MMCC L"    IMIT
+3 3 STANDARD DEVIATION OF ALTITUDE OUTSIDE MMCC LIMIT
+4 4 MEAN PEAKINESS OUTSIDE MMCC LIMIT
+5 5 FRAME CHECKSUM ERROR DETECTED
+6 6 HEIGHT-TIME LOOP TIME CONSTANT CORRECTION NOT PERFORMED
+7 7 NOT ENOUGH MEASUREMENTS ( N< 10)
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/21069.table b/definitions/bufr/tables/0/wmo/7/codetables/21069.table
new file mode 100644
index 0000000..c343130
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/21069.table
@@ -0,0 +1,9 @@
+1 1 12.0 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+2 2 11.0 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+3 3  3.7 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+4 4  1.6 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+5 5 CLOUD IDENTIFICATION USED 1.6 MICROMETERS"    HISTOGRAM REFLECTANCE CLOUD TEST
+6 6 1.6 MICROMETERS HISTOGRAM REFLECTANCE CLOUD"    TEST USED DYNAMIC TRESHOLD
+7 7 SUN GLINT DETECTED BY 1.6 MICROMETERS REFLECTANCE CLOUD TEST
+8 8 3.7 MICROMETERS USED IN SEA-SURFACE TEMPERATURE RETRIEVAL
+9 9 SEA-SURFACE TEMPERATURE DERIVATION USED DAYTIME DATA"    (NIGHT-TIME IF ZERO)
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/21070.table b/definitions/bufr/tables/0/wmo/7/codetables/21070.table
new file mode 100644
index 0000000..7849b6c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/21070.table
@@ -0,0 +1,23 @@
+1 1 CELL 1:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+2 2 CELL 2:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL CELL NUMB"    ERING
+3 3 CELL 3:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+4 4 CELL 4:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL NW NE
+5 5 CELL 5:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 7 8 9
+6 6 CELL 6:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 4 5 6
+7 7 CELL 7:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 1 2 3
+8 8 CELL 8:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL SW SE
+9 9 CELL 9:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+10 10 -18 DUAL VIEW SST RETRIEVAL USED 3.7 MICRON CHANNEL (ONE BIT"    PER 10-ARCMIN CELL)
+11 11 CELL 1:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+12 12 CELL 3:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+13 13 CELL 4:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL NW NE
+14 14 CELL 5:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 7 8 9
+15 15 CELL 6:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 4 5 6
+16 16 CELL 7:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 1 2 3
+17 17 CELL 8:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL SW SE
+18 18 CELL 9:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+19 19 NADIR VIEW CONTAINS DAY-TIME DATA (NIGHT IF ZERO)
+20 20 FORWARD VIEW CONTAINS DAY-TIME DATA (NIGHT IF ZERO)
+21 21 RECORD CONTAINS CONTRIBUTIONS FROM INSTRUMENT SCANS ACQUIRED"     WHEN ERS PLATFORM NOT IN YAW-STEERING MODE
+22 22 RECORD CONTAINS CONTRIBUTIONS FROM INSTRUMENT SCANS FOR WHIC"    H PRODUCT CONFIDENCE DATA SHOW QUALITY IS POOR OR UNKNOWN
+23 23 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/21072.table b/definitions/bufr/tables/0/wmo/7/codetables/21072.table
new file mode 100644
index 0000000..521f791
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/21072.table
@@ -0,0 +1,3 @@
+1 1 HEIGHT ERROR CORRECTION APPLIED INSTEAD OF OPEN LOOP CALIBRA"    TION
+2 2 MICROWAVE SOUNDER USED FOR TROPOSPHERE CORRECTION
+3 3 AGC OUTPUT CORRECTION APPLIED INSTED OF OPEN LOOP CALIBRATIO"    N
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/21073.table b/definitions/bufr/tables/0/wmo/7/codetables/21073.table
new file mode 100644
index 0000000..9538fa5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/21073.table
@@ -0,0 +1,8 @@
+1 1 BLANK DATA RECORD
+2 2 TEST
+3 3 CALIBRATION (CLOSED LOOP)
+4 4 BITE
+5 5 ACQUISITION ON ICE
+6 6 ACQUISITION ON OCEAN
+7 7 TRACKING ON ICE
+8 8 TRACKING ON OCEAN
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/21076.table b/definitions/bufr/tables/0/wmo/7/codetables/21076.table
new file mode 100644
index 0000000..bc52ac5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/21076.table
@@ -0,0 +1,4 @@
+0 0 LINEAR
+1 1 LOGARITHMIC (BASE E)
+2 2 LOGARITHMIC (BASE 10)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/21109.table b/definitions/bufr/tables/0/wmo/7/codetables/21109.table
new file mode 100644
index 0000000..0990694
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/21109.table
@@ -0,0 +1,8 @@
+1 1 NOT ENOUGH GOOD SIGMA-0 AVAILABLE FOR WIND RETRIEVAL
+2 2 POOR AZIMUTH DIVERSITY AMONG SIGMA0- FOR  WIND RETRIEVAL
+8 8 SOME PORTION OF WIND VECTOR CELL IS OVER LAND
+9 9 SOME PORTION OF WIND VECTOR CELL IS OVER ICE
+10 10 WIND RETRIEVAL NOT PERFORMED FOR WIND  VECTOR CELL
+11 11 REPORTED WIND SPEED IS GREATER THAN 30 M/S
+12 12 REPORTED WIND SPEED IS LESS THAN OR EQUAL TO 3 M/S
+17 17 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/21115.table b/definitions/bufr/tables/0/wmo/7/codetables/21115.table
new file mode 100644
index 0000000..3bdb683
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/21115.table
@@ -0,0 +1,11 @@
+1 1 SIGMA-0 MEASUREMENT IS NOT USABLE
+2 2 SIGNAL TO NOISE RATIO IS LOW
+3 3 SIGMA-0 IS NEGATIVE
+4 4 SIGMA-0 IS OUTSIDE OF ACCEPTABLE RANGE
+5 5 SCATTEROMETER PULSE QUALITY IS NOT ACCEPTABLE
+6 6 SIGMA-0 CELL LOCATION ALGORITHM DOES NOT CONVERGE
+7 7 FREQUENCY SHIFT LIES BEYOND THE RANGE OF THE X FACTOR TABLE
+8 8 SPACECRAFT TEMPERATURE IS BEYOND CALIBRATION COEFFICIENT RAN"    GE
+9 9 NO APPLICABLE ATTITUDE RECORDS WERE FOUND FOR THIS SIGMA-0
+10 10 INTERPOLATED EPHEMERIS DATA ARE NOT ACCEPTABLE FOR THIS SIGM"    A-0
+17 17 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/21116.table b/definitions/bufr/tables/0/wmo/7/codetables/21116.table
new file mode 100644
index 0000000..10b5c53
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/21116.table
@@ -0,0 +1,16 @@
+1 1 CALIBRATION/MEASUREMENT PULSE FLAG (1)
+2 2 CALIBRATION/MEASUREMENT PULSE FLAG (2)
+3 3 OUTER ANTENNA BEAM
+4 4 SIGMA-0 CELL IS AFT OF SPACECRAFT
+5 5 CURRENT MODE (1)
+6 6 CURRENT MODE (2)
+7 7 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (1)
+8 8 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (2)
+9 9 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (3)
+10 10 LOW RESOLUTION MODE - WHOLE PULSE DATA
+11 11 SCATTEROMETER ELECTRONIC SUBSYSTEM B
+12 12 ALTERNATE SPIN RATE - 19.8 RPM
+13 13 RECEIVER PROTECTION ON
+14 14 SLICES PER COMPOSITE FLAG (1)
+15 15 SLICES PER COMPOSITE FLAG (2)
+16 16 SLICES PER COMPOSITE FLAG (3)
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/21119.table b/definitions/bufr/tables/0/wmo/7/codetables/21119.table
new file mode 100644
index 0000000..d46b083
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/21119.table
@@ -0,0 +1,14 @@
+0 0 RESERVED
+1 1 SASS
+2 2 SASS2
+3 3 NSCAT0
+4 4 NSCAT1
+5 5 NSCAT2
+6 6 QSCAT0
+7 7 QSCAT1
+31 31 CMOD1
+32 32 CMOD2
+33 33 CMOD3
+34 34 CMOD4
+35 35 CMOD5
+64 64 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/21144.table b/definitions/bufr/tables/0/wmo/7/codetables/21144.table
new file mode 100644
index 0000000..1f082e6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/21144.table
@@ -0,0 +1 @@
+1 1 RAIN
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2115.table b/definitions/bufr/tables/0/wmo/7/codetables/2115.table
new file mode 100644
index 0000000..c7e866c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2115.table
@@ -0,0 +1,7 @@
+0 0 PDB
+1 1 RSOIS
+2 2 ASOS
+3 3 PSYCHROMETER
+4 4 F420
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/21150.table b/definitions/bufr/tables/0/wmo/7/codetables/21150.table
new file mode 100644
index 0000000..8510046
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/21150.table
@@ -0,0 +1,4 @@
+0 0 DATA FROM SINGLE GROUND STATION (NO CO-LOCATION)
+1 1 DATA FROM MULTIPLE GROUND STATION (CO-LOCATED DATA)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/21155.table b/definitions/bufr/tables/0/wmo/7/codetables/21155.table
new file mode 100644
index 0000000..27cc03d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/21155.table
@@ -0,0 +1,16 @@
+1 1 NOT ENOUGH GOOD SIGMA-0 AVAILABLE FOR WIND RETRIEVAL
+2 2 POOR AZIMUTH DIVERSITY AMONG SIGMA-0 FOR WIND RETRIEVAL
+3 3 ANY BEAM NOISE CONTENT ABOVE TRESHOLD
+4 4 PRODUCT MONITORING NOT USED
+5 5 PRODUCT MONITORING FLAG
+6 6 KNMI QUALITY CONTROL FAILS
+7 7 VARIATIONAL QUALITY CONTROL FAILS
+8 8 SOME PORTION OF WIND VECTOR CELL IS OVER LAND
+9 9 SOME PORTION OF WIND VECTOR CELL IS OVER ICE
+10 10 WIND RETRIEVAL NOT PERFORMED FOR WIND VECTOR CELL
+11 11 REPORTED WIND SPEED IS GREATER THAN 30 M/S
+12 12 REPORTED WIND SPEED IS LESS THAN OR EQUAL TO 3 M/S
+13 13 RAIN FLAG FOR THE WIND VECTOR CELL IS NOT USABLE
+14 14 RAIN FLAG ALGORITHM DETECTS RAIN
+15 15 NO METEOROLOGICAL BACKGROUND USED
+16 16 DATA ARE REDUNDANT
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/21158.table b/definitions/bufr/tables/0/wmo/7/codetables/21158.table
new file mode 100644
index 0000000..dd53c51
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/21158.table
@@ -0,0 +1,4 @@
+0 0 ACCEPTABLE
+1 1 NOT ACCEPTABLE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/21159.table b/definitions/bufr/tables/0/wmo/7/codetables/21159.table
new file mode 100644
index 0000000..1703f9b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/21159.table
@@ -0,0 +1,4 @@
+0 0 GOOD
+1 1 USABLE
+2 2 BAD
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/21169.table b/definitions/bufr/tables/0/wmo/7/codetables/21169.table
new file mode 100644
index 0000000..9b93444
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/21169.table
@@ -0,0 +1,4 @@
+0 0 NO ICE PRESENT
+1 1 ICE PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2119.table b/definitions/bufr/tables/0/wmo/7/codetables/2119.table
new file mode 100644
index 0000000..33ae089
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2119.table
@@ -0,0 +1,8 @@
+0 0 INTERMEDIATE FREQUENCY CALIBRATION MODE (IFCAL)
+1 1 BUILT-IN TEST EQUIPMENT DIGITAL (BITE DGT)
+2 2 BUILT-IN TEST EQUIPMENT RADIO FREQUENCY (BITE RF)
+3 3 PRESET TRACKING (PSET TRK)
+4 4 PRESET LOOP OUT
+5 5 ACQUISITION
+6 6 TRACKING
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2131.table b/definitions/bufr/tables/0/wmo/7/codetables/2131.table
new file mode 100644
index 0000000..f4336ef
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2131.table
@@ -0,0 +1 @@
+1 1 STC OPERATIONAL
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2143.table b/definitions/bufr/tables/0/wmo/7/codetables/2143.table
new file mode 100644
index 0000000..89bdc1b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2143.table
@@ -0,0 +1,21 @@
+0 0 RESERVED
+1 1 BREWER SPECTROPHOTOMETER
+2 2 CAVER TEICHERT
+3 3 DOBSON
+4 4 DOBSON (JAPAN)
+5 5 EHMET
+6 6 FECKER TELESCOPE
+7 7 HOELPER
+8 8 JODMETER
+9 9 FILTER OZONOMETER M-83
+10 10 MAST
+11 11 OXFORD
+12 12 PAETZOLD
+13 13 REGENER
+14 14 RESERVED FOR FUTURE USE
+15 15 VASSY FILTER OZONOMETER
+16 16 CARBON IODIDE
+17 17 SURFACE OZONE BUBLER
+18 18 FILTER OZONOMETER M-124
+19 19 ECC SONDE
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2144.table b/definitions/bufr/tables/0/wmo/7/codetables/2144.table
new file mode 100644
index 0000000..c245c49
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2144.table
@@ -0,0 +1,8 @@
+0 0 DIRECT SUN, ATTENUATOR #0
+1 1 DIRECT SUN, ATTENUATOR #1
+2 2 DIRECT SUN, ATTENUATOR #2
+3 3 FOCUSSED MOON
+4 4 FOCUSSED SUN
+5 5 FOCUSSED SUN CORRECTED WITH ADJACENT SKY MEASUREMENTS
+6 6 ZENITH SKY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2145.table b/definitions/bufr/tables/0/wmo/7/codetables/2145.table
new file mode 100644
index 0000000..63400b2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2145.table
@@ -0,0 +1,9 @@
+0 0 WAVELENGTH AD ORDINARY SETTING
+1 1 WAVELENGTH BD ORDINARY SETTING
+2 2 WAVELENGTH CD ORDINARY SETTING
+3 3 WAVELENGTH CC' ORDINARY SETTING
+4 4 WAVELENGTH AD FOCUSSING IMAGE
+5 5 WAVELENGTH BD FOCUSSING IMAGE
+6 6 WAVELENGTH CD FOCUSSING IMAGE
+7 7 WAVELENGTH CC' FOCUSSING IMAGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2146.table b/definitions/bufr/tables/0/wmo/7/codetables/2146.table
new file mode 100644
index 0000000..14655b9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2146.table
@@ -0,0 +1,11 @@
+0 0 ON DIRECT SUN
+1 1 ON DIRECT MOON
+2 2 ON BLUE ZENITH SKY
+3 3 ON ZENITH CLOUD (UNIFORM STRATIFIED LAYER OF SMALL OPACITY)
+4 4 ON ZENITH CLOUD (UNIFORM OR MODERATELY VARIABLE LAYER OF MED"    IUM OPACITY)
+5 5 ON ZENITH CLOUD (UNIFORM OR MODERATELY VARIABLE LAYER OF LAR"    GE OPACITY)
+6 6 ON ZENITH CLOUD (HIGHLY VARIABLE OPACITY, WITH OR WITOUT PRE"    CIPITATION)
+7 7 ON ZENITH CLOUD (FOG)
+8 8 ON ZENITH HAZE
+9 9 ON DIRECT SUN THROUGH THIN CLOUD, FOG OR HAZE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2148.table b/definitions/bufr/tables/0/wmo/7/codetables/2148.table
new file mode 100644
index 0000000..3e5d884
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2148.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 ARGOS
+2 2 GPS
+3 3 GOES DCP
+4 4 METEOSAT DCP
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2149.table b/definitions/bufr/tables/0/wmo/7/codetables/2149.table
new file mode 100644
index 0000000..7b179c6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2149.table
@@ -0,0 +1,22 @@
+0 0 UNSPECIFIED DRIFTING BUOY
+1 1 STANDARD LAGRANGIAN DRIFTER (GLOBAL DRIFTER PROGRAMME)
+2 2 STANDARD FGGE TYPE DRIFTING BUOY
+3 3 WIND MEASURING FGGE TYPE DRIFTING BUOY
+4 4 ICE FLOAT
+8 8 UNSPECIFIED SUB-SURFACE FLOAT
+9 9 SOFAR
+10 10 ALACE
+11 11 MARVOR
+12 12 RAFOS
+16 16 UNSPECIFIED MOORED BUOY
+17 17 NOMAD
+18 18 3-METRE DISCUS
+19 19 10-12-METRE DISCUS
+20 20 ODAS 30 SERIES
+21 21 ATLAS (E.G. TAO AREA)
+22 22 TRITON BUOY
+23 23 RESERVED
+24 24 OMNIDIRECTIONAL WAVERIDER
+25 25 DIRECTIONAL WAVERIDER
+26 26 SUB-SURFACE ARGO FLOAT
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2150.table b/definitions/bufr/tables/0/wmo/7/codetables/2150.table
new file mode 100644
index 0000000..b864835
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2150.table
@@ -0,0 +1,55 @@
+0 0 RESERVED
+1 1 HIRS 1
+2 2 HIRS 2
+3 3 HIRS 3
+4 4 HIRS 4
+5 5 HIRS 5
+6 6 HIRS 6
+7 7 HIRS 7
+8 8 HIRS 8
+9 9 HIRS 9
+10 10 HIRS 10
+11 11 HIRS 11
+12 12 HIRS 12
+13 13 HIRS 13
+14 14 HIRS 14
+15 15 HIRS 15
+16 16 HIRS 16
+17 17 HIRS 17
+18 18 HIRS 18
+19 19 HIRS 19
+20 20 HIRS 20
+21 21 MSU 1
+22 22 MSU 2
+23 23 MSU 3
+24 24 MSU 4
+25 25 SSU 1
+26 26 SSU 2
+27 27 SSU 3
+28 28 AMSU-A 1
+29 29 AMSU-A 2
+30 30 AMSU-A 3
+31 31 AMSU-A 4
+32 32 AMSU-A 5
+33 33 AMSU-A 6
+34 34 AMSU-A 7
+35 35 AMSU-A 8
+36 36 AMSU-A 9
+37 37 AMSU-A 10
+38 38 AMSU-A 11
+39 39 AMSU-A 12
+40 40 AMSU-A 13
+41 41 AMSU-A 14
+42 42 AMSU-A 15
+43 43 AMSU-B 1
+44 44 AMSU-B 2
+45 45 AMSU-B 3
+46 46 AMSU-B 4
+47 47 AMSU-B 5
+48 48 AVHRR 1
+49 49 AVHRR 2
+50 50 AVHRR 3A
+51 51 AVHRR 3B
+52 52 AVHRR 4
+53 53 AVHRR 5
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2151.table b/definitions/bufr/tables/0/wmo/7/codetables/2151.table
new file mode 100644
index 0000000..b1e62e6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2151.table
@@ -0,0 +1,9 @@
+0 0 HIRS
+1 1 MSU
+2 2 SSU
+3 3 AMSU-A1-1
+4 4 AMSU-A1-2
+5 5 AMSU-A2
+6 6 AMSU-B
+7 7 AVHRR
+2047 2047 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2152.table b/definitions/bufr/tables/0/wmo/7/codetables/2152.table
new file mode 100644
index 0000000..7c55d18
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2152.table
@@ -0,0 +1,11 @@
+1 1 HIGH-RESOLUTION INFRARED SOUNDER(HIRS)
+2 2 MICROWAVE SOUNDING UNIT (MSU)
+3 3 STRATOSPHERIC SOUNDING UNIT (SSU)
+4 4 AMI WIND MODE
+5 5 AMI WAVE MODE
+6 6 AMI IMAGE MODE
+7 7 RADAR ALTIMETER
+8 8 ATSR
+9 9 GEOSTATIONARY IMAGER
+10 10 GEOSTATIONARY SOUNDER
+11 11 GEOSTATIONARY EARTH RADIATION (GERB)
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2158.table b/definitions/bufr/tables/0/wmo/7/codetables/2158.table
new file mode 100644
index 0000000..97c4449
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2158.table
@@ -0,0 +1,8 @@
+1 1 MISMATCH IN RED VEC HPA
+2 2 MISMATCH IN RED VEC RFSS
+3 3 PTR CALIBRATION BAND 320 MHZ (KU)
+4 4 PTR CALIBRATION BAND 80 MHZ (KU)
+5 5 PTR CALIBRATION BAND 20 MHZ (KU)
+6 6 PTR CALIBRATION BAND 160 MHZ (S)
+7 7 KU FLIGHT CALIBRATION PARAMETERS AVAILABLE
+8 8 S FLIGHT CALIBRATION PARAMETERS AVAILABLE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2159.table b/definitions/bufr/tables/0/wmo/7/codetables/2159.table
new file mode 100644
index 0000000..d022cce
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2159.table
@@ -0,0 +1,5 @@
+1 1 TEMPERATURE INCONSISTENCY
+2 2 DATA IS MISSING
+3 3 REDUNDANCY CHANNEL
+4 4 POWER BUS PROTECTION
+5 5 OVERVOLTAGE/OVERLOAD PROTECTION
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2163.table b/definitions/bufr/tables/0/wmo/7/codetables/2163.table
new file mode 100644
index 0000000..4658f3d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2163.table
@@ -0,0 +1,15 @@
+0 0 AUTO EDITOR
+1 1 IRW HEIGHT ASSIGNMENT
+2 2 WV HEIGHT ASSIGNMENT
+3 3 H2O INTERCEPT HEIGHT ASSIGNMENT
+4 4 CO2 SLICING HEIGHT ASSIGNMENT
+5 5 LOW PIXEL MAX GRADIENT
+6 6 HIGHER PIXEL MAX GRADIENT
+7 7 PRIMARY HEIGHT ASSIGNMENT
+8 8 LAYER THICKNESS ASSIGNMENT
+9 9 CUMULATIVE CONTRIBUTION FUNCTION -10 PERCENT HEIGHT
+10 10 CUMULATIVE CONTRIBUTION FUNCTION -50 PERCENT HEIGHT
+11 11 CUMULATIVE CONTRIBUTION FUNCTION -90 PERCENT HEIGHT
+12 12 CUMULATIVE CONTRIBUTION FUNCTION - HEIGHT OF"    MAXIMUM GRADIENT
+14 14 COMPOSITE HEIGHT ASSIGNMENT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2164.table b/definitions/bufr/tables/0/wmo/7/codetables/2164.table
new file mode 100644
index 0000000..01dc970
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2164.table
@@ -0,0 +1,4 @@
+0 0 LP - NORMS LEAST SQUARE MINIMUM
+1 1 EN - EUCLIDEAN NORM WITH RADIANCE CORRELATION
+2 2 CC - CROSS CORRELATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2166.table b/definitions/bufr/tables/0/wmo/7/codetables/2166.table
new file mode 100644
index 0000000..efac38f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2166.table
@@ -0,0 +1,6 @@
+0 0 TYPE NOT DEFINED
+1 1 AUTOMATED STATISTICAL REGRESSION
+2 2 CLEAR PATH
+3 3 PARTLY CLOUDY PATH
+4 4 CLOUDY PATH
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2167.table b/definitions/bufr/tables/0/wmo/7/codetables/2167.table
new file mode 100644
index 0000000..bb0ad11
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2167.table
@@ -0,0 +1,4 @@
+0 0 METHOD NOT DEFINE
+1 1 1B RAW RADIANCE
+2 2 PROCESSED RADIANCE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2169.table b/definitions/bufr/tables/0/wmo/7/codetables/2169.table
new file mode 100644
index 0000000..6e70eb6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2169.table
@@ -0,0 +1,4 @@
+0 0 CUP ROTOR
+1 1 PROPELLER ROTOR
+2 2 WIND OBSERVATION THROUGH AMBIENT NOISE (WOTAN)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2172.table b/definitions/bufr/tables/0/wmo/7/codetables/2172.table
new file mode 100644
index 0000000..10b464d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2172.table
@@ -0,0 +1,3 @@
+1 1 RETRIEVAL FROM A NADIR SOUNDING
+2 2 RETRIEVAL FROM A LIMB SOUNDING
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2175.table b/definitions/bufr/tables/0/wmo/7/codetables/2175.table
new file mode 100644
index 0000000..e3df922
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2175.table
@@ -0,0 +1,9 @@
+0 0 MANUAL MEASUREMENT
+1 1 TIPPING BUCKET METHOD
+2 2 WEIGHING METHOD
+3 3 OPTICAL METHOD
+4 4 PRESSURE METHOD
+5 5 FLOAT METHOD
+6 6 DROP COUNTER METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2176.table b/definitions/bufr/tables/0/wmo/7/codetables/2176.table
new file mode 100644
index 0000000..a16cbc3
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2176.table
@@ -0,0 +1,6 @@
+0 0 MANUAL OBSERVATION
+1 1 VIDEO CAMERA METHOD
+2 2 INFRA-RED METHOD
+3 3 LASER METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2177.table b/definitions/bufr/tables/0/wmo/7/codetables/2177.table
new file mode 100644
index 0000000..b8492e5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2177.table
@@ -0,0 +1,5 @@
+0 0 MANUAL OBSERVATION
+1 1 ULTRASONIC METHOD
+2 2 VIDEO CAMERA METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2178.table b/definitions/bufr/tables/0/wmo/7/codetables/2178.table
new file mode 100644
index 0000000..8953eb7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2178.table
@@ -0,0 +1,5 @@
+0 0 MANUAL OBSERVATION
+1 1 OPTICAL METHOD
+2 2 CAPACITIVE METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2179.table b/definitions/bufr/tables/0/wmo/7/codetables/2179.table
new file mode 100644
index 0000000..a76b878
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2179.table
@@ -0,0 +1,6 @@
+0 0 MANUAL OBSERVATION
+1 1 VAISALA ALGORITHM
+2 2 ASOS (FAA) ALGORITHM
+3 3 AWOS (CANADA) ALGORITHM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2180.table b/definitions/bufr/tables/0/wmo/7/codetables/2180.table
new file mode 100644
index 0000000..f7ec83c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2180.table
@@ -0,0 +1,8 @@
+0 0 MANUAL OBSERVATION
+1 1 OPTICAL SCATTER SYSTEM COMBINED WITH PRECIPITATION"    OCCURRENCE SENSING SYSTEM
+2 2 FORWARD AND/OR BACK-SCATTER SYSTEM OF VISIBLE LIGHT
+3 3 FORWARD AND/OR BACK-SCATTER SYSTEM OF INFRARED LIGHT
+4 4 INFRARED LIGHT EMITTING DIODE (IRED) SYSTEM
+5 5 DOPPLER RADAR SYSTEM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2181.table b/definitions/bufr/tables/0/wmo/7/codetables/2181.table
new file mode 100644
index 0000000..8e6466b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2181.table
@@ -0,0 +1,5 @@
+1 1 RAIN DETECTOR
+2 2 FREEZING RAIN SENSOR
+3 3 ICE DETECTION SENSOR
+4 4 HAIL AND ICE PELLET SENSOR
+20 20 OTHER
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2182.table b/definitions/bufr/tables/0/wmo/7/codetables/2182.table
new file mode 100644
index 0000000..97ffc04
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2182.table
@@ -0,0 +1,7 @@
+0 0 MANUAL MEASUREMENT
+1 1 TRANSMISSOMETER SYSTEM (BASE > 25)
+2 2 TRANSMISSOMETER SYSTEM (BASE < 25 M)
+3 3 FORWARD SCATTER SYSTEM
+4 4 BACK SCATTER SYSTEM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2183.table b/definitions/bufr/tables/0/wmo/7/codetables/2183.table
new file mode 100644
index 0000000..943c327
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2183.table
@@ -0,0 +1,9 @@
+0 0 MANUAL OBSERVATION
+1 1 CEILOMETER SYSTEM
+2 2 INFRARED CAMERA SYSTEM
+3 3 MICROWAVE VISUAL CAMERA SYSTEM
+4 4 SKY IMAGER SYSTEM
+5 5 VIDEO TIME LAPSED CAMERA SYSTEM
+6 6 MICRO PULSE LIDAR (MPL) SYSTEM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2184.table b/definitions/bufr/tables/0/wmo/7/codetables/2184.table
new file mode 100644
index 0000000..5698dac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2184.table
@@ -0,0 +1,8 @@
+0 0 MANUAL OBSERVATION
+1 1 LIGHTNING IMAGING SENSOR
+2 2 ELECTRICAL STORM IDENTIFICATION SENSOR
+3 3 MAGNETIC FINDER SENSOR
+4 4 LIGHTNING STRIKE SENSOR
+5 5 FLASH COUNTER
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2185.table b/definitions/bufr/tables/0/wmo/7/codetables/2185.table
new file mode 100644
index 0000000..3253397
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2185.table
@@ -0,0 +1,7 @@
+0 0 MANUAL MEASUREMENT
+1 1 BALANCED FLOATING METHOD
+2 2 PRESSURE METHOD
+3 3 ULTRASONIC METHOD
+4 4 HYDRAULIC METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2186.table b/definitions/bufr/tables/0/wmo/7/codetables/2186.table
new file mode 100644
index 0000000..05e1a36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2186.table
@@ -0,0 +1,23 @@
+1 1 PRECIPITATION-UNKNOWN TYPE
+2 2 LIQUID PRECIPITATION NOT FREEZING
+3 3 LIQUID FREEZING PRECIPITATION
+4 4 DRIZZLE
+5 5 RAIN
+6 6 SOLID PRECIPITATION
+7 7 SNOW
+8 8 SNOW GRAINS
+9 9 SNOW PELLETS
+10 10 ICE PELLETS
+11 11 ICE CRYSTALS
+12 12 DIAMOND DUST
+13 13 SMALL HAIL
+14 14 HAIL
+15 15 GLAZE
+16 16 RIME
+17 17 SOFT RIME
+18 18 HARD RIME
+19 19 CLEAR ICE
+20 20 WET SNOW
+21 21 HOAR FROST
+22 22 DEW
+23 23 WHITE DEW
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2187.table b/definitions/bufr/tables/0/wmo/7/codetables/2187.table
new file mode 100644
index 0000000..def3d2f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2187.table
@@ -0,0 +1,11 @@
+1 1 DUST/SAND WHIRL
+2 2 SQUALLS
+3 3 SAND STORM
+4 4 DUST STORM
+5 5 LIGHTNING - CLOUD TO SURFACE
+6 6 LIGHTNING - CLOUD TO CLOUD
+7 7 LIGHTNING - DISTANT
+8 8 THUNDERSTORM
+9 9 FUNNEL CLOUD NOT TOUCHING SURFACE
+10 10 FUNNEL CLOUD TOUCHING SURFACE
+11 11 SPRAY
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2188.table b/definitions/bufr/tables/0/wmo/7/codetables/2188.table
new file mode 100644
index 0000000..bb8114c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2188.table
@@ -0,0 +1,10 @@
+1 1 FOG
+2 2 ICE FOG
+3 3 STEAM FOG
+7 7 MIST
+8 8 HAZE
+9 9 SMOKE
+10 10 VOLCANIC ASH
+11 11 DUST
+12 12 SAND
+13 13 SNOW
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/2189.table b/definitions/bufr/tables/0/wmo/7/codetables/2189.table
new file mode 100644
index 0000000..710032d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/2189.table
@@ -0,0 +1,4 @@
+1 1 MANUAL OBSERVATION
+2 2 ALL LIGHTNING STRIKES WITHOUT DISCRIMINATION
+3 3 LIGHTNING STRIKES CLOUD TO GROUND ONLY
+4 4 ALL LIGHTNING STRIKES WITH DISCRIMINATION BETWEEN"    CLOUD TO GROUND AND CLOUD TO CLOUD
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/22056.table b/definitions/bufr/tables/0/wmo/7/codetables/22056.table
new file mode 100644
index 0000000..28ddbf4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/22056.table
@@ -0,0 +1,4 @@
+0 0 UPWARDS PROFILE
+1 1 DOWNWARDS PROFILE
+2 2 HORIZONTAL
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/22060.table b/definitions/bufr/tables/0/wmo/7/codetables/22060.table
new file mode 100644
index 0000000..b73ad32
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/22060.table
@@ -0,0 +1,4 @@
+0 0 DROGUE IS DETACHED
+1 1 DROGUE IS ATTACHED
+2 2 DROGUE STATUS UNKNOWN
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/22061.table b/definitions/bufr/tables/0/wmo/7/codetables/22061.table
new file mode 100644
index 0000000..de55e38
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/22061.table
@@ -0,0 +1,11 @@
+0 0 CALM (GLASSY)            HEIGHT     0            M
+1 1 CALM (RIPPLED)           HEIGHT     0     - 0.1  M
+2 2 SMOOTH (WAVELETS)        HEIGHT     0.1   - 0.5  M
+3 3 SLIGHT                   HEIGHT     0.5   - 1.5  M
+4 4 MODERATE                 HEIGHT     1.25  - 2.5  M
+5 5 ROUGH                    HEIGHT     2.5   - 4    M
+6 6 VERY ROUGH               HEIGHT     4     - 6    M
+7 7 HIGH                     HEIGHT     6     - 9    M
+8 8 VERY HIGH                HEIGHT     9     -14    M
+9 9 PHENOMANAL               HEIGHT     OVER   14    M
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/22067.table b/definitions/bufr/tables/0/wmo/7/codetables/22067.table
new file mode 100644
index 0000000..1728310
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/22067.table
@@ -0,0 +1 @@
+0 0 SEE COMMON CODE TABLE C3
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/22068.table b/definitions/bufr/tables/0/wmo/7/codetables/22068.table
new file mode 100644
index 0000000..c11d658
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/22068.table
@@ -0,0 +1 @@
+0 0 SEE COMMON CODE TABLE C4
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/22120.table b/definitions/bufr/tables/0/wmo/7/codetables/22120.table
new file mode 100644
index 0000000..c485b9f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/22120.table
@@ -0,0 +1,13 @@
+0 0 GOOD DATA
+1 1 MAXIMUM (HIGH) WATER LEVEL LIMIT EXCEEDED
+2 2 MINIMUM (LOW) WATER LEVEL LIMIT EXCEEDED
+3 3 RATE OF CHANGE LIMIT FOR WATER LEVEL EXCEEDED
+4 4 FLAT LIMIT FOR WATER LEVEL EXCEEDED
+5 5 OBSERVED MINUS PREDICTED WATER LEVEL VALUE LIMIT EXCEEDED
+6 6 OBSERVED VALUE FROM PRIMARY WATER LEVEL SENSOR MINUS"    BACKUP WATER LEVEL SENSOR
+7 7 VALUE EXCEEDED SPECIFIED TOLERANCE FROM EXPECTED VALUE
+8 8 WATER LEVEL QA PARAMETER (SIGMAS AND/OR OUTLIERS) LIMITS EXC"    EEDED
+9 9 SEA TEMPERATURE OUTSIDE OF EXPECTED RANGE
+10 10 MULTIPLE QC CHECKS (ABOVE) FAILED
+11 11 NO AUTOMATED WATER LEVEL CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/22121.table b/definitions/bufr/tables/0/wmo/7/codetables/22121.table
new file mode 100644
index 0000000..4e4d870
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/22121.table
@@ -0,0 +1,9 @@
+0 0 OPERATIONAL
+1 1 POSSIBLE CLOGGING PROBLEM OR OTHERWISE DEGRADED WATE LEVEL D"    ATA
+2 2 POSSIBLE DATUM SHIFT
+3 3 UNKNOWN STATUS OF WATER LEVEL SENSOR
+4 4 SUSPECTED OR KNOWN SEA TEMPERATURE SENSOR PROBLEM
+5 5 MULTIPLE POSSIBLE PROBLEMS (ABOVE)
+6 6 BAD DATA- DO NOT DISSEMINATE
+7 7 NO MANUAL WATER LEVEL CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/22122.table b/definitions/bufr/tables/0/wmo/7/codetables/22122.table
new file mode 100644
index 0000000..1a5fe36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/22122.table
@@ -0,0 +1,8 @@
+0 0 GOOD DATA FROM ALL SENSORS
+1 1 WIND DIRECTION OUTSIDE OF ALLOWABLE RANGE
+2 2 WIND SPEED OUTSIDE OF EXPECTED RANGE
+3 3 BAROMETRIC PRESSURE OUTSIDE OF EXPECTED RANGE
+4 4 AIR TEMPERATURE OUTSIDE OF EXPECTED RANGE
+5 5 MULTIPLE SENSOR FAILED QC CHECKS
+6 6 NO AUTOMATED METEOROLOGICAL DATA CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/22123.table b/definitions/bufr/tables/0/wmo/7/codetables/22123.table
new file mode 100644
index 0000000..62b0186
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/22123.table
@@ -0,0 +1,9 @@
+0 0 OPERATIONAL
+1 1 SUSPECTED OR KNOWN PROBLEM WITH WIND SENSOR
+2 2 SUSPECTED OR KNOWN PROBLEM WITH BAROMETRIC PRESSURE SENSOR
+3 3 SUSPECTED OR KNOWN PROBLEM WITH AIR TEMPERATURE SENSOR
+4 4 UNKNOWN STATUS OF ALL SENSORS
+5 5 SUSPECTED OR KNOWN PROBLEMS WITH MULTIPLE SENSORS
+6 6 BAD DATA - DO NOT DISSEMINATE
+7 7 NO MANUAL METEOROLOGICAL DATA CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/23001.table b/definitions/bufr/tables/0/wmo/7/codetables/23001.table
new file mode 100644
index 0000000..92ac5de
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/23001.table
@@ -0,0 +1,5 @@
+0 0 RESERVED
+1 1 ARTICLES 1 AND 2
+2 2 ARTICLE 3
+3 3 ARTICLE 5.2
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/23002.table b/definitions/bufr/tables/0/wmo/7/codetables/23002.table
new file mode 100644
index 0000000..5070901
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/23002.table
@@ -0,0 +1,16 @@
+0 0 RESERVED
+1 1 NUCLEAR REACTOR ON GROUND
+2 2 NUCLEAR REACTOR ON SEA
+3 3 NUCLEAR REACTOR IN SPACE
+4 4 NUCLEAR FULE FACILITY
+5 5 RADIOACTIVE WASTE MANAGMENT FACITILY
+6 6 TRANSPORT OF NUCLEAR FUEL OR RADIOACTIVE WASTE
+7 7 STORAGE OF NUCLEAR FUEL OR RADIOACTIVE WASTE
+8 8 MANUFACTURE OF RADIO-ISOTOPES
+9 9 USE OF RADIO-ISOTOPES
+10 10 STORAGE OF RADIO-ISOTOPES
+11 11 DISPOSAL OF RADIO-ISOTOPS
+12 12 TRANSPORT OF RADIO-ISOTOPES
+13 13 USE OF RADIO-ISOTOPES FOR POWER GENERATION
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/23003.table b/definitions/bufr/tables/0/wmo/7/codetables/23003.table
new file mode 100644
index 0000000..e3e891f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/23003.table
@@ -0,0 +1,8 @@
+0 0 NO RELEASE
+1 1 RELEASE TO ATMOSPHERE
+2 2 RELEASE TO WATER
+3 3 RELEASE TO BOTH ATMOSPHERE AND WATER
+4 4 EXPECTED RELEASE TO ATMOSPHERE
+5 5 EXPECTED RELEASE TO WATER
+6 6 EXPECTED RELEASE TO BOTH ATMOSPHERE AND WATER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/23004.table b/definitions/bufr/tables/0/wmo/7/codetables/23004.table
new file mode 100644
index 0000000..804d1e1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/23004.table
@@ -0,0 +1,6 @@
+0 0 NO COUNTERMEASURE
+1 1 EVACUATION
+2 2 SHELTERING
+3 3 PROPHILAXIS
+4 4 WATER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/23005.table b/definitions/bufr/tables/0/wmo/7/codetables/23005.table
new file mode 100644
index 0000000..e22eb99
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/23005.table
@@ -0,0 +1,4 @@
+0 0 INCIDENT STAT DOES NOT UNDERSTAND WHAT HAPPENED
+1 1 INCIDENT STATE KNOWS THE CAUSE OF THE INCIDENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/23006.table b/definitions/bufr/tables/0/wmo/7/codetables/23006.table
new file mode 100644
index 0000000..fe7706a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/23006.table
@@ -0,0 +1,8 @@
+0 0 NO IMPROVEMENT
+1 1 UNSTABLE
+2 2 NO DETERIORATION
+3 3 IMPROVING
+4 4 STABLE
+5 5 DETERIORATING
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/23007.table b/definitions/bufr/tables/0/wmo/7/codetables/23007.table
new file mode 100644
index 0000000..59fc043
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/23007.table
@@ -0,0 +1,5 @@
+0 0 NO RELEASE
+1 1 RELEASE HAS STOPPED
+2 2 RELEASE
+3 3 RELEASE IS CONTINUING
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/23008.table b/definitions/bufr/tables/0/wmo/7/codetables/23008.table
new file mode 100644
index 0000000..b20991c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/23008.table
@@ -0,0 +1,4 @@
+0 0 GASEUS
+1 1 PARTICULATE
+2 2 MIXTURE OF GASEUS AND PARTICULATE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/23009.table b/definitions/bufr/tables/0/wmo/7/codetables/23009.table
new file mode 100644
index 0000000..b20991c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/23009.table
@@ -0,0 +1,4 @@
+0 0 GASEUS
+1 1 PARTICULATE
+2 2 MIXTURE OF GASEUS AND PARTICULATE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/23016.table b/definitions/bufr/tables/0/wmo/7/codetables/23016.table
new file mode 100644
index 0000000..57425e9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/23016.table
@@ -0,0 +1,4 @@
+0 0 NO SIGNIFICANT TOXIC HEALTH EFFECT
+1 1 SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT POSSIBLE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/23018.table b/definitions/bufr/tables/0/wmo/7/codetables/23018.table
new file mode 100644
index 0000000..ccdcc45
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/23018.table
@@ -0,0 +1,6 @@
+0 0 RELEASE NO LONGER OCCURRING
+1 1 RELEASE STILL OCCURRING
+2 2 RELEASE EXPECTED TO INCREASE IN NEXT SIX HOURS
+3 3 RELEASE EXPECTED TO REMAIN CONSTANT IN NEXT SIX HOURS
+4 4 RELEASE EXPECTED TO DECREASE IN NEXT SIX HOURS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/23031.table b/definitions/bufr/tables/0/wmo/7/codetables/23031.table
new file mode 100644
index 0000000..cf20e26
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/23031.table
@@ -0,0 +1,4 @@
+0 0 PLUME WILL NOT ENCOUNTER RAIN IN INCIDENT STATE
+1 1 PLUME WILL ENCOUNTER RAIN IN INCIDENT STATE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/23032.table b/definitions/bufr/tables/0/wmo/7/codetables/23032.table
new file mode 100644
index 0000000..18dea38
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/23032.table
@@ -0,0 +1,4 @@
+0 0 NO SIGNIFICANT CHANGE EXPECTED WITHIN NEXT SIX HOURS
+1 1 ANTICIPATED SIGNIFICANT CHANGE EXPECTED WITHIN NEXT SIX HOUR"    S
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/24003.table b/definitions/bufr/tables/0/wmo/7/codetables/24003.table
new file mode 100644
index 0000000..de7cf4e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/24003.table
@@ -0,0 +1,5 @@
+0 0 NOBLE GASES
+1 1 IODINES
+2 2 CAESIUM
+3 3 TRANSURANICS
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25004.table b/definitions/bufr/tables/0/wmo/7/codetables/25004.table
new file mode 100644
index 0000000..dfe4517
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25004.table
@@ -0,0 +1,4 @@
+0 0 INCOHERENT
+1 1 COHERENT (DOPPLER)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25005.table b/definitions/bufr/tables/0/wmo/7/codetables/25005.table
new file mode 100644
index 0000000..54954d6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25005.table
@@ -0,0 +1,4 @@
+0 0 LOGATITHM - 2.5 DB
+1 1 LINEAR
+2 2 SPECIAL
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25006.table b/definitions/bufr/tables/0/wmo/7/codetables/25006.table
new file mode 100644
index 0000000..35a61ac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25006.table
@@ -0,0 +1,5 @@
+0 0 ZH TO R CONVERSION
+1 1 (ZH, ZDR) TO (NO.DO) TO R
+2 2 (Z(F1),Z(F2)) TO ATTENUATION TO R
+6 6 OTHER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25009.table b/definitions/bufr/tables/0/wmo/7/codetables/25009.table
new file mode 100644
index 0000000..927847b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25009.table
@@ -0,0 +1,4 @@
+1 1 NONE
+2 2 CALIBRATION TARGET OR SIGNAL
+3 3 AGAINST RAINGAGES
+4 4 AGAINST OTHER INSTRUMENTS (DISTROMETER-ATTENUATION)
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25010.table b/definitions/bufr/tables/0/wmo/7/codetables/25010.table
new file mode 100644
index 0000000..70854d8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25010.table
@@ -0,0 +1,8 @@
+0 0 NONE
+1 1 MAP
+2 2 INSERTION OF HIGHER ELEVATION DATA AND MAP
+3 3 ANALYSIS OF FLUCTUATING LOGARITHM SIGNAL (CLUTTER DETECTION)
+4 4 EXTRACTION OF FLUCTUATING PART OF LINEAR SIGNAL (CLUTTER SUP"    PRESSION)
+5 5 CLUTTER SUPPRESSION DOPPLER
+6 6 MULTIPARAMETER ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25011.table b/definitions/bufr/tables/0/wmo/7/codetables/25011.table
new file mode 100644
index 0000000..f739498
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25011.table
@@ -0,0 +1,4 @@
+0 0 NONE
+1 1 MAP OF CORRECTION FACTORS
+2 2 INTERPOLATION (AZIMUTH OR ELEVATION)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25012.table b/definitions/bufr/tables/0/wmo/7/codetables/25012.table
new file mode 100644
index 0000000..c869a4a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25012.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE
+1 1 SOFTWARE
+2 2 HARDWARE AND SOFTWARE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25013.table b/definitions/bufr/tables/0/wmo/7/codetables/25013.table
new file mode 100644
index 0000000..4c13814
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25013.table
@@ -0,0 +1 @@
+1 1 BRIGHT BAND CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25015.table b/definitions/bufr/tables/0/wmo/7/codetables/25015.table
new file mode 100644
index 0000000..043e587
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25015.table
@@ -0,0 +1 @@
+1 1 RADOME ATTENUATION CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25017.table b/definitions/bufr/tables/0/wmo/7/codetables/25017.table
new file mode 100644
index 0000000..ed48487
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25017.table
@@ -0,0 +1 @@
+1 1 PRECIPITATION ATTENUATION CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25020.table b/definitions/bufr/tables/0/wmo/7/codetables/25020.table
new file mode 100644
index 0000000..ba9b528
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25020.table
@@ -0,0 +1,4 @@
+0 0 FTT (FAST FOURIER TRANSFORM
+1 1 PPP (PULSE PAIR PROCESSING
+2 2 VPC (VECTOR-PHASE CHANGE)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25021.table b/definitions/bufr/tables/0/wmo/7/codetables/25021.table
new file mode 100644
index 0000000..314716b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25021.table
@@ -0,0 +1,5 @@
+1 1 SIMPLE AVERAGE
+2 2 CONSENSUS AVERAGE
+3 3 MEDIAN CHECK
+4 4 VERTICAL CONSISTENCY CHECK
+5 5 OTHER
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25030.table b/definitions/bufr/tables/0/wmo/7/codetables/25030.table
new file mode 100644
index 0000000..aa78900
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25030.table
@@ -0,0 +1,4 @@
+0 0 RUNNING MEAN SEA-SURFACE TEMPERATURE NOT USED BECAUSE USAGE"     CRITERIA NOT MET
+1 1 RUNNING MEAN SEA-SURFACE TEMPERATURE NOT USED BECAUSE DATA N"    OT AVAILABLE
+2 2 RUNNING MEAN SEA-SURFACE TEMPERATURE USED AS PREDICTOR
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25032.table b/definitions/bufr/tables/0/wmo/7/codetables/25032.table
new file mode 100644
index 0000000..9b894f4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25032.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 DATA FROM LOW MODE
+2 2 DATA FROM HIGH MODE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25033.table b/definitions/bufr/tables/0/wmo/7/codetables/25033.table
new file mode 100644
index 0000000..e7141c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25033.table
@@ -0,0 +1,4 @@
+0 0 WIND PROFILER OPERATING IN SUBMODE A
+1 1 WIND PROFILER OPERATING IN SUBMODE B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25034.table b/definitions/bufr/tables/0/wmo/7/codetables/25034.table
new file mode 100644
index 0000000..473338a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25034.table
@@ -0,0 +1,3 @@
+1 1 TEST A PERFORMED AND FAILED
+2 2 TEST B PERFORMED AND FAILED
+3 3 TEST RESULTS INCONCLUSIVE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25036.table b/definitions/bufr/tables/0/wmo/7/codetables/25036.table
new file mode 100644
index 0000000..d71ffd1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25036.table
@@ -0,0 +1,4 @@
+0 0 NETWORK OF SEVERAL DIRECTION-FINDERS OPERATING ON"     THE SAME INDIVIDUAL ATMOSPHERICS
+1 1 NETWORK OF SEVERAL ARRIVAL-TIME STATIONS OPERATING ON"     THE SAME INDIVIDUAL ATMOSPHERICS
+6 6 SINGLE STATION RANGE BEARING TECHNIQUE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25040.table b/definitions/bufr/tables/0/wmo/7/codetables/25040.table
new file mode 100644
index 0000000..648a71b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25040.table
@@ -0,0 +1,10 @@
+0 0 NON-SPECIFIC MODE
+1 1 FIRST GUESS DATA
+2 2 CLOUD DATA
+3 3 AVERAGE VECTOR DATA
+4 4 PRIMARY DATA
+5 5 GUESS DATA
+6 6 VECTOR DATA
+7 7 TRACER DATA; THE IMAGE
+8 8 TRACER DATA TO NEXT IMAGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25041.table b/definitions/bufr/tables/0/wmo/7/codetables/25041.table
new file mode 100644
index 0000000..f388da0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25041.table
@@ -0,0 +1,4 @@
+0 0 DIRECTION ORIGINALLY REPORTED IN TRUE DEGREES
+1 1 DIRECTION ORIGINALLY REPORTED USING CODE TABLE 0700, FM 13
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25042.table b/definitions/bufr/tables/0/wmo/7/codetables/25042.table
new file mode 100644
index 0000000..314f464
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25042.table
@@ -0,0 +1,4 @@
+0 0 SPEED ORIGINALLY REPORTED IN METERS PER SECOND
+1 1 SPEED ORIGINALLY REPORTED USING CODE TABLE 2251, FM 13
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25045.table b/definitions/bufr/tables/0/wmo/7/codetables/25045.table
new file mode 100644
index 0000000..6a26361
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25045.table
@@ -0,0 +1,20 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
+6 6 CHANNEL  6 PRESENT - (SET TO 1 PRESENT)
+7 7 CHANNEL  7 PRESENT - (SET TO 1 PRESENT)
+8 8 CHANNEL  8 PRESENT - (SET TO 1 PRESENT)
+9 9 CHANNEL  9 PRESENT - (SET TO 1 PRESENT)
+10 10 CHANNEL 10 PRESENT - (SET TO 1 PRESENT)
+11 11 CHANNEL 11 PRESENT - (SET TO 1 PRESENT)
+12 12 CHANNEL 12 PRESENT - (SET TO 1 PRESENT)
+13 13 CHANNEL 13 PRESENT - (SET TO 1 PRESENT)
+14 14 CHANNEL 14 PRESENT - (SET TO 1 PRESENT)
+15 15 CHANNEL 15 PRESENT - (SET TO 1 PRESENT)
+16 16 CHANNEL 16 PRESENT - (SET TO 1 PRESENT)
+17 17 CHANNEL 17 PRESENT - (SET TO 1 PRESENT)
+18 18 CHANNEL 18 PRESENT - (SET TO 1 PRESENT)
+19 19 CHANNEL 19 PRESENT - (SET TO 1 PRESENT)
+20 20 CHANNEL 20 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25046.table b/definitions/bufr/tables/0/wmo/7/codetables/25046.table
new file mode 100644
index 0000000..0cda73b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25046.table
@@ -0,0 +1,4 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25047.table b/definitions/bufr/tables/0/wmo/7/codetables/25047.table
new file mode 100644
index 0000000..ad6fa18
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25047.table
@@ -0,0 +1,3 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25048.table b/definitions/bufr/tables/0/wmo/7/codetables/25048.table
new file mode 100644
index 0000000..a628567
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25048.table
@@ -0,0 +1,15 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
+6 6 CHANNEL  6 PRESENT - (SET TO 1 PRESENT)
+7 7 CHANNEL  7 PRESENT - (SET TO 1 PRESENT)
+8 8 CHANNEL  8 PRESENT - (SET TO 1 PRESENT)
+9 9 CHANNEL  9 PRESENT - (SET TO 1 PRESENT)
+10 10 CHANNEL 10 PRESENT - (SET TO 1 PRESENT)
+11 11 CHANNEL 11 PRESENT - (SET TO 1 PRESENT)
+12 12 CHANNEL 12 PRESENT - (SET TO 1 PRESENT)
+13 13 CHANNEL 13 PRESENT - (SET TO 1 PRESENT)
+14 14 CHANNEL 14 PRESENT - (SET TO 1 PRESENT)
+15 15 CHANNEL 15 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25049.table b/definitions/bufr/tables/0/wmo/7/codetables/25049.table
new file mode 100644
index 0000000..db2a09c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25049.table
@@ -0,0 +1,5 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25051.table b/definitions/bufr/tables/0/wmo/7/codetables/25051.table
new file mode 100644
index 0000000..3b3fbde
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25051.table
@@ -0,0 +1,6 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
+6 6 CHANNEL  6 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25053.table b/definitions/bufr/tables/0/wmo/7/codetables/25053.table
new file mode 100644
index 0000000..af34138
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25053.table
@@ -0,0 +1,6 @@
+1 1 GOOD
+2 2 REDUNDANT
+3 3 QUESTIONABLE
+4 4 BAD
+5 5 EXPERIMENTAL
+6 6 PRECIPITATING
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25069.table b/definitions/bufr/tables/0/wmo/7/codetables/25069.table
new file mode 100644
index 0000000..e627613
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25069.table
@@ -0,0 +1,7 @@
+1 1 SMOOTHED
+2 2 BASELINE ADJUSTED
+3 3 NORMALIZED TIME INTERVAL
+4 4 OUTLIER CHECKED
+5 5 PLAUSIBILITY CHECKED
+6 6 CONSISTENCY CHECKED
+7 7 INTERPOLATED
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25086.table b/definitions/bufr/tables/0/wmo/7/codetables/25086.table
new file mode 100644
index 0000000..294fa69
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25086.table
@@ -0,0 +1,4 @@
+0 0 DEPTHS ARE NOT CORRECTED
+1 1 DEPTHS ARE CORRECTED
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25093.table b/definitions/bufr/tables/0/wmo/7/codetables/25093.table
new file mode 100644
index 0000000..e547e6c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25093.table
@@ -0,0 +1,3 @@
+1 1 NO CORRECTION
+2 2 VERTICAL VELOCITY CORRECTION
+7 7 ALL CORRECTIONS
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25095.table b/definitions/bufr/tables/0/wmo/7/codetables/25095.table
new file mode 100644
index 0000000..a303e57
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25095.table
@@ -0,0 +1 @@
+1 1 ALTIMETER OPERATING (SET TO 0 IF NOMINAL, SET TO"     BACKUP)
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25096.table b/definitions/bufr/tables/0/wmo/7/codetables/25096.table
new file mode 100644
index 0000000..dcffa91
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25096.table
@@ -0,0 +1,4 @@
+1 1 MODE INDICATOR (0 IF MODE 2, 1 IF MODE 1)
+2 2 MODE 1 CALIBRATION SEQUENCE INDICATOR (0 IF NORMAL DATA TAKI"    NG EITHER MODE 1 OR 2, 1 IF MODE 1 CALIBRATION SEQUENCE) BIT"    S 3 AND 4 INDICATE A
+3 3 CHANNEL 2 (0 IF ON, 1 IF OFF)
+4 4 CHANNEL 3 (0 IF ON, 1 IF OFF)
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25097.table b/definitions/bufr/tables/0/wmo/7/codetables/25097.table
new file mode 100644
index 0000000..d4e1e46
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25097.table
@@ -0,0 +1,11 @@
+0 0 RANGES BETWEEN 0 AND 30 CM
+1 1 RANGES BETWEEN 30 AND 60 CM
+2 2 RANGES BETWEEN 60 AND 90 CM
+3 3 RANGES BETWEEN 90 AND 120 CM
+4 4 RANGES BETWEEN 120 AND 150 CM
+5 5 RANGES BETWEEN 150 AND 180 CM
+6 6 RANGES BETWEEN 180 AND 210 CM
+7 7 RANGES BETWEEN 210 AND 240 CM
+8 8 RANGES BETWEEN 240 AND 270 CM
+9 9 RANGES LARGER THAN 270 CM
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25098.table b/definitions/bufr/tables/0/wmo/7/codetables/25098.table
new file mode 100644
index 0000000..b49bdb5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25098.table
@@ -0,0 +1,8 @@
+1 1 KU BAND RANGE
+2 2 C BAND RANGE
+3 3 KU BAND SWH
+4 4 C BAND SWH
+5 5 KU BAND SCATTEROMETER COEFFICIENT
+6 6 C BAND SCATTEROMETER COEFFICIENT
+7 7 OFF NADIR ANGLE FROM KU BAND WVEFORM PARAMETERS
+8 8 OFF NADIR FROM PLATFORM
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25099.table b/definitions/bufr/tables/0/wmo/7/codetables/25099.table
new file mode 100644
index 0000000..c6cabcd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25099.table
@@ -0,0 +1,6 @@
+1 1 KU BAND RANGE INSTRUMENTAL CORRECTION
+2 2 C BAND RANGE INSTRUMENTAL CORRECTION
+3 3 KU BAND SWH INSTRUMENTAL CORRECTION
+4 4 C BAND SWH INSTRUMENTAL CORRECTION
+5 5 KU BAND SCATTEROMETER COEFFICIENT INSTRUMENTAL CORRECTION
+6 6 C BAND SCATTEROMETER COEFFICIENT INSTRUMENTAL CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25110.table b/definitions/bufr/tables/0/wmo/7/codetables/25110.table
new file mode 100644
index 0000000..c53002c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25110.table
@@ -0,0 +1,6 @@
+1 1 RAW DATA ANALYSIS USED FOR RAW DATA CORRECTION."    CORRECTION DONE USING DEFAULT PARAMETERS
+2 2 RAW DATA ANALYSIS USED FOR RAW DATA CORRECTION."    CORRECTION DONE USING RAW DATA ANALYSIS RESULTS
+3 3 ANTENNA ELEVATION PATTERN CORRECTION APPLIED
+4 4 NOMINAL CHIRP REPLICA USED
+5 5 RECONSTRUCTED CHIRP USED
+6 6 SLANT RANGE TO GROUND RANGE CONVERSION APPLIED
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25120.table b/definitions/bufr/tables/0/wmo/7/codetables/25120.table
new file mode 100644
index 0000000..026f109
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25120.table
@@ -0,0 +1,4 @@
+0 0 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"     2 PROCESSING IS GREATER THAN THE ACCEPTABLE THRESHOLD
+1 1 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"    2 PROCESSING IS LESS THAN THE ACCEPTABLE THRESHOLD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25122.table b/definitions/bufr/tables/0/wmo/7/codetables/25122.table
new file mode 100644
index 0000000..1085ef9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25122.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE CONFIGURATION FOR RF IS A
+1 1 HARDWARE CONFIGURATION FOR RF IS B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25123.table b/definitions/bufr/tables/0/wmo/7/codetables/25123.table
new file mode 100644
index 0000000..70f0670
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25123.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE CONFIGURATION FOR HPA IS A
+1 1 HARDWARE CONFIGURATION FOR HPA IS B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/25124.table b/definitions/bufr/tables/0/wmo/7/codetables/25124.table
new file mode 100644
index 0000000..e611ac0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/25124.table
@@ -0,0 +1,4 @@
+0 0 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"    2 PROCESSING IS GREATER THAN THE ACCEPTABLE THRESHOLD
+1 1 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"    2 PROCESSING IS LESS THAN THE ACCEPTABLE THRESHOLD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/26010.table b/definitions/bufr/tables/0/wmo/7/codetables/26010.table
new file mode 100644
index 0000000..f825040
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/26010.table
@@ -0,0 +1,25 @@
+1 1 0100 INCLUDED
+2 2 0200 INCLUDED
+3 3 0300 INCLUDED
+4 4 0400 INCLUDED
+5 5 0500 INCLUDED
+6 6 0600 INCLUDED
+7 7 0700 INCLUDED
+8 8 0800 INCLUDED
+9 9 0900 INCLUDED
+10 10 1000 INCLUDED
+11 11 1100 INCLUDED
+12 12 1200 INCLUDED
+13 13 1300 INCLUDED
+14 14 1400 INCLUDED
+15 15 1500 INCLUDED
+16 16 1600 INCLUDED
+17 17 1700 INCLUDED
+18 18 1800 INCLUDED
+19 19 1900 INCLUDED
+20 20 2000 INCLUDED
+21 21 2100 INCLUDED
+22 22 2200 INCLUDED
+23 23 2300 INCLUDED
+24 24 2400 INCLUDED
+25 25 UNKNOWN MIXTURE OF HOURS
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/29001.table b/definitions/bufr/tables/0/wmo/7/codetables/29001.table
new file mode 100644
index 0000000..beff485
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/29001.table
@@ -0,0 +1,6 @@
+0 0 GNOMONIC PROJECTION
+1 1 POLAR STEREOGRAPHIC PROJECTION
+2 2 LAMBERT'S CONFORMAL CONIC PROJECTION
+3 3 MERCATOR'S PROJECTION
+4 4 SCANNING CONE (RADAR)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/29002.table b/definitions/bufr/tables/0/wmo/7/codetables/29002.table
new file mode 100644
index 0000000..1d7efd0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/29002.table
@@ -0,0 +1,4 @@
+0 0 CARTESIAN
+1 1 POLAR
+2 2 OTHER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/30031.table b/definitions/bufr/tables/0/wmo/7/codetables/30031.table
new file mode 100644
index 0000000..12ddc7c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/30031.table
@@ -0,0 +1,13 @@
+0 0 PPI
+1 1 COMPOSITE
+2 2 CAPPI
+3 3 VERTICAL SECTION
+4 4 ALPHANUMERIC DATA
+5 5 MAP OF SUBJECT CLUTTER
+6 6 MAP
+7 7 TEST PICTURE
+8 8 COMMENTS
+9 9 MAP OF GROUND OCCULTATION
+10 10 MAP OF RADAR BEAM HEIGHT
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/30032.table b/definitions/bufr/tables/0/wmo/7/codetables/30032.table
new file mode 100644
index 0000000..942cb5d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/30032.table
@@ -0,0 +1,9 @@
+1 1 MAP
+2 2 SATELLITE IR
+3 3 SATELLITE VIS
+4 4 SATELLITE WV
+5 5 SATELLITE MULTISPECTRAL
+6 6 SYNOPTIC OBSERVATIONS
+7 7 FORECAST PARAMETERS
+8 8 LIGHTNING DATA
+15 15 OTHER DATA
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/31021.table b/definitions/bufr/tables/0/wmo/7/codetables/31021.table
new file mode 100644
index 0000000..de8d5a6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/31021.table
@@ -0,0 +1,4 @@
+1 1 1 BIT INDICATOR OF QUALITY, 0= GOOD; 1=SUSPECT OR BAD
+2 2 2 BIT INDICATOR OF QUALITY, 0= GOOD; 1= SLIGHTLY SUSPECTED;"    2= HIGHLY SUSPECTED; 3=BAD
+7 7 PERCENTAGE CONFIDENCE
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/31031.table b/definitions/bufr/tables/0/wmo/7/codetables/31031.table
new file mode 100644
index 0000000..4ce2df8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/31031.table
@@ -0,0 +1 @@
+1 1 DATA NOT PRESENT
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33002.table b/definitions/bufr/tables/0/wmo/7/codetables/33002.table
new file mode 100644
index 0000000..74fd2d6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33002.table
@@ -0,0 +1,4 @@
+0 0 DATA NOT SUSPECT
+1 1 DATA SUSPECT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33003.table b/definitions/bufr/tables/0/wmo/7/codetables/33003.table
new file mode 100644
index 0000000..1516d51
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33003.table
@@ -0,0 +1,5 @@
+0 0 DATA NOT SUSPECT
+1 1 DATA SLIGHTLY SUSPECT
+2 2 DATA HIGHTLY SUSPECT
+3 3 DATA CONSIDERED UNFIT FOR USE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33005.table b/definitions/bufr/tables/0/wmo/7/codetables/33005.table
new file mode 100644
index 0000000..880bae8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33005.table
@@ -0,0 +1,23 @@
+1 1 NO AUTOMATED METEOROLOGICAL DATA CHECKS PERFORMED
+2 2 PRESSURE DATA SUSPECT
+3 3 WIND DATA SUSPECT
+4 4 DRY-BULB TEMPERATURE DATA SUSPECT
+5 5 WET-BULB TEMPERATURE DATA SUSPECT
+6 6 HUMIDITY DATA SUSPECT
+7 7 GROUND TEMPERATURE DATA SUSPECT
+8 8 SOIL TEMPERATURE (DEPTH 1) DATA SUSPECT
+9 9 SOIL TEMPERATURE (DEPTH 2) DATA SUSPECT
+10 10 SOIL TEMPERATURE (DEPTH 3) DATA SUSPECT
+11 11 SOIL TEMPERATURE (DEPTH 4) DATA SUSPECT
+12 12 SOIL TEMPERATURE (DEPTH 5) DATA SUSPECT
+13 13 CLOUD DATA SUSPECT
+14 14 VISIBILITY DATA SUSPECT
+15 15 PRESENT WEATHER DATA SUSPECT
+16 16 LIGHTNING DATA SUSPECT
+17 17 ICE DEPOSIT DATA SUSPECT
+18 18 PRECIPITATION DATA SUSPECT
+19 19 STATE OF GROUND DATA SUSPECT
+20 20 SNOW DATA SUSPECT
+21 21 WATER CONTENT DATA SUSPECT
+22 22 EVAPORATION/EVAPOTRANSPIRATION DATA SUSPECT
+23 23 SUNSHINE DATA SUSPECT
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33006.table b/definitions/bufr/tables/0/wmo/7/codetables/33006.table
new file mode 100644
index 0000000..0ea44a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33006.table
@@ -0,0 +1,5 @@
+0 0 SELF-CHECK OK
+1 1 AT LEAST ONE WARNING ACTIVE, NO ALARMS
+2 2 AT LEAST ONE ALARM ACTIVE
+3 3 SENSOR FAILURE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33015.table b/definitions/bufr/tables/0/wmo/7/codetables/33015.table
new file mode 100644
index 0000000..dd633f1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33015.table
@@ -0,0 +1,16 @@
+0 0 PASSED ALL CHECKS
+1 1 MISSING-DATA CHECK
+2 2 DESCENDING/REASCENDING BALLOON CHECK
+3 3 DATA PLAUSIBILITY CHECK (ABOVE LIMITS)
+4 4 DATA PLAUSIBILITY CHECK (BELOW LIMITS)
+5 5 SUPERADIABATIC LAPSE RATE CHECK
+6 6 LIMITING ANGLES CHECK
+7 7 ASCENSION RATE CHECK
+8 8 EXCESSIVE CHANGE FROM PREVIOUS FLIGHT
+9 9 BALLOON OVERHEAD CHECK
+10 10 WIND SPEED CHECK
+11 11 WIND DIRECTION CHECK
+12 12 DEPENDENCY CHECK
+13 13 DATA VALID BUT MODIFIED
+14 14 DATA OUTLIER CHECK
+63 63 MISSING DATA
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33020.table b/definitions/bufr/tables/0/wmo/7/codetables/33020.table
new file mode 100644
index 0000000..023909a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33020.table
@@ -0,0 +1,8 @@
+0 0 GOOD
+1 1 INCONSISTENT
+2 2 DOUBTFUL
+3 3 WRONG
+4 4 NOT CHECKED
+5 5 HAS BEEN CHECKED
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33021.table b/definitions/bufr/tables/0/wmo/7/codetables/33021.table
new file mode 100644
index 0000000..e3e67ae
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33021.table
@@ -0,0 +1,4 @@
+0 0 WITHIN LIMITS
+1 1 OUTSIDE LIMITS
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33022.table b/definitions/bufr/tables/0/wmo/7/codetables/33022.table
new file mode 100644
index 0000000..692661f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33022.table
@@ -0,0 +1,4 @@
+0 0 GOOD (SEVERAL IDENTICAL REPORTS HAVE BEEN RECEIVED)
+1 1 DUBIOUS (NO IDENTICAL REPORT HAVE BEEN RECEIVED)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33023.table b/definitions/bufr/tables/0/wmo/7/codetables/33023.table
new file mode 100644
index 0000000..71ecd11
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33023.table
@@ -0,0 +1,4 @@
+0 0 RELIABLE (LOCATION WAS MADE OVER TWO SATELLITE PASSES)
+1 1 LATEST KNOWN (NO LOCATION OVER CORRESPONDING PASS)
+2 2 DUBIOUS
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33024.table b/definitions/bufr/tables/0/wmo/7/codetables/33024.table
new file mode 100644
index 0000000..e1e3b92
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33024.table
@@ -0,0 +1,10 @@
+0 0 RESERVED
+1 1 EXELLENT - WITHIN 3 METRES
+2 2 GOOD - WITHIN 10 METRES
+3 3 FAIR - WITHIN 20 METRES
+4 4 POOR - MORE THAN 20 METRES
+5 5 EXELLENT -WITHIN 10 FEET
+6 6 GOOD WITHIN-30 FEET
+7 7 FAIR WITHIN 60 FEET
+8 8 POOR - MORE THAN 60 FEET
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33025.table b/definitions/bufr/tables/0/wmo/7/codetables/33025.table
new file mode 100644
index 0000000..edcd4e3
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33025.table
@@ -0,0 +1,5 @@
+0 0 TIME INTERPOLATED, LATITUDE AND LONGITUDE REPORTED
+1 1 TIME REPORTED, LATITUDE AND LONGITUDE INTERPOLATED
+2 2 TIME, LATITUDE AND LONGITUDE INTERPOLATED
+3 3 TIME, LATITUDE AND LONGITUDE REPORTED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33026.table b/definitions/bufr/tables/0/wmo/7/codetables/33026.table
new file mode 100644
index 0000000..539a9fe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33026.table
@@ -0,0 +1,10 @@
+0 0 NORMAL OPERATIONS - MEASUREMENT MODE
+1 1 NORMAL OPERATIONS - NON-MEASUREMENT MODE
+2 2 SMALL RH
+3 3 HUMIDITY ELEMENT IS WET
+4 4 HUMIDITY ELEMENT IS CONTAMINATED
+5 5 HEATER FAIL
+6 6 HEATER FAIL AND WET/CONTAMINATED HUMIDITY ELEMENT
+7 7 SINGLE VALIDITY BAD
+8 8 NUMERIC ERROR
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33027.table b/definitions/bufr/tables/0/wmo/7/codetables/33027.table
new file mode 100644
index 0000000..30dcae8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33027.table
@@ -0,0 +1,5 @@
+0 0 RADIUS >= 1500 M
+1 1 500 M <= RADIUS < 1500 M
+2 2 250 M <= RADIUS < 500 M
+3 3 RADIUS < 250 M
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33028.table b/definitions/bufr/tables/0/wmo/7/codetables/33028.table
new file mode 100644
index 0000000..8a16e7a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33028.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 NOMINAL
+2 2 DEGRADED BY SW ERROR; ANY ERROR REPORTED BY THE ALGORITHMS
+3 3 DEGRADED BY INSTRUMENT ERROR
+4 4 DEGRADED BY CORRUPTED/MISSING ADF
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33030.table b/definitions/bufr/tables/0/wmo/7/codetables/33030.table
new file mode 100644
index 0000000..c9e36c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33030.table
@@ -0,0 +1,7 @@
+1 1 DO NOT USE SCAN FOR PRODUCT GENERATION
+2 2 TIME SEQUENCE ERROR DETECTED WITH THIS SCAN
+3 3 DATA GAP PRECEDES THIS SCAN
+4 4 NO CALIBRATION
+5 5 NO EARTH LOCATION
+6 6 FIRST GOOD TIME FOLLOWING A CLOCK UPDATE
+7 7 INSTRUMENT STATUS CHANGED WITH THIS SCAN
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33031.table b/definitions/bufr/tables/0/wmo/7/codetables/33031.table
new file mode 100644
index 0000000..857eece
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33031.table
@@ -0,0 +1,21 @@
+1 1 TIME FIELD IS BAD BUT CAN PROBABLY BE INFERRED FROM THE PREV"    IOUS GOOD TIME
+2 2 TIME FIELD IS BAD AND CAN?~@~YT BE INFERRED FROM THE PREVIOU"    S GOOD TIME
+3 3 THIS RECORD STARTS A SEQUENCE THAT IS INCONSISTENT WITH PREV"    IOUS TIMES (I.E. THERE IS A TIME DISCONTINUITY). THIS MAY OR"     MAY NOT BE ASSOCIAT
+4 4 START OF A SEQUENCE THAT APPARENTLY REPEATS SCAN TIMES THAT"    HAVE BEEN PREVIOUSLY ACCEPTED
+5 5 SCAN LINE WAS NOT CALIBRATED BECAUSE OF BAD TIME
+6 6 SCAN LINE WAS CALIBRATED USING FEWER THAN THE PREFERRED NUMB"    ER OF SCAN LINES BECAUSE OF PROXIMATY TO START OR END OF DAT"    A OR TO A DATA GAP
+7 7 SCAN LINE WAS NOT CALIBRATED BECAUSE OF BAD OR INSUFFICIENT"    PRT DATA
+8 8 SCAN LINE WAS CALIBRATED BUT WITH MARGINAL PRT DATA
+9 9 SOME UNCALIBRATED CHANNELS ON THIS SCAN
+10 10 UNCALIBRATED DUE TO INSTRUMENT MODE
+11 11 QUESTIONABLE CALIBRATION BECAUSE OF ANTENNA POSITION ERROR O"    F SPACE VIEW
+12 12 QUESTIONABLE CALIBRATION BECAUSE OF ANTENNA POSITION ERROR O"    F BLACK BODY
+13 13 NOT EARTH LOCATED BECAUSE OF BAD TIME
+14 14 EARTH LOCATION QUESTIONABLE BECAUSE OF"     QUESTIONABLE TIME CODE (SEE TIME PROBLEM"     CODE BITS)
+15 15 EARTH LOCATION QUESTIONABLE - ONLY MARGINAL AGREEMENT"     WITH REASONABLENESS CHECK
+16 16 EARTH LOCATION QUESTIONABLE - FAILS REASONABLENESS CHECK
+17 17 EARTH LOCATION QUESTIONABLE BECAUSE OF ANTENNA POSITION CHEC"    K
+18 18 SCAN LINE CALIBRATION COLD BLACK BODY
+19 19 SCAN LINE CALIBRATION WARM BLACK BODY
+20 20 SCAN LINE CALIBRATION SPACE VIEW
+21 21 EARTH VIEW
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33032.table b/definitions/bufr/tables/0/wmo/7/codetables/33032.table
new file mode 100644
index 0000000..45b284d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33032.table
@@ -0,0 +1,6 @@
+1 1 NO GOOD BLACKBODY COUNTS FOR SCAN LINE
+2 2 NO GOOD SPACE VIEW COUNTS FOR THIS LINE
+3 3 NO GOOD PRTS FOR THIS LINE
+4 4 SOME BAD BLACKBODY VIEW COUNTS FOR THIS LINE
+5 5 SOME BAD SPACE VIEW COUNTS FOR THIS LINE
+6 6 SOME BAD PRT TEMPS ON THIS LINE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33033.table b/definitions/bufr/tables/0/wmo/7/codetables/33033.table
new file mode 100644
index 0000000..803087f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33033.table
@@ -0,0 +1,23 @@
+1 1 SET IF SECONDARY CALIBRATION USED
+2 2 BRIGHTNESS TEMPERATURE IN CHANNEL 1 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+3 3 BRIGHTNESS TEMPERATURE IN CHANNEL 2 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+4 4 BRIGHTNESS TEMPERATURE IN CHANNEL 3 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+5 5 BRIGHTNESS TEMPERATURE IN CHANNEL 4 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+6 6 BRIGHTNESS TEMPERATURE IN CHANNEL 5 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+7 7 BRIGHTNESS TEMPERATURE IN CHANNEL 6 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+8 8 BRIGHTNESS TEMPERATURE IN CHANNEL 7 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+9 9 BRIGHTNESS TEMPERATURE IN CHANNEL 8 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+10 10 BRIGHTNESS TEMPERATURE IN CHANNEL 9 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+11 11 BRIGHTNESS TEMPERATURE IN CHANNEL 10 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+12 12 BRIGHTNESS TEMPERATURE IN CHANNEL 11 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+13 13 BRIGHTNESS TEMPERATURE IN CHANNEL 12 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+14 14 BRIGHTNESS TEMPERATURE IN CHANNEL 13 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+15 15 BRIGHTNESS TEMPERATURE IN CHANNEL 14 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+16 16 BRIGHTNESS TEMPERATURE IN CHANNEL 15 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+17 17 BRIGHTNESS TEMPERATURE IN CHANNEL 16 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+18 18 BRIGHTNESS TEMPERATURE IN CHANNEL 17 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+19 19 BRIGHTNESS TEMPERATURE IN CHANNEL 18 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+20 20 BRIGHTNESS TEMPERATURE IN CHANNEL 19 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+21 21 BRIGHTNESS TEMPERATURE IN CHANNEL 20 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+22 22 SET IF ALL CHANNELS ARE MISSING
+23 23 SUSPECT
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33035.table b/definitions/bufr/tables/0/wmo/7/codetables/33035.table
new file mode 100644
index 0000000..938a958
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33035.table
@@ -0,0 +1,15 @@
+0 0 AUTOMATIC QUALITY CONTROL PASSED AND NOT MANUALLY CHECKED
+1 1 AUTOMATIC QUALITY CONTROL PASSED AND MANUALLY CHECKED AND PA"    SSED
+2 2 AUTOMATIC QUALITY CONTROL PASSED AND MANUALLY CHECKED AND DE"    LETED
+3 3 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY NOT CHECKED
+4 4 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY CHECKED AND FA"    ILED
+5 5 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY CHECKED AND RE"    -INSERTED
+6 6 AUTOMATIC QUALITY CONTROL FLAGGED DATA AS QUESTIONABLE AND N"    OT MANUALLY CHECCKED
+7 7 AUTOMATIC QUALITY CONTROL FLAGGED DATA AS QUESTIONABLE"    AND MANUALLY CHECKED AND FAILED
+8 8 MANUALLY CHECKED AND FAILED
+9 9 EXCESSIVE MISSING DATA FRAMES
+10 10 RESERVED
+11 11 EXCESSIVE MISSING TEMPERATURE
+12 12 EXCESSIVE MISSING PRESSURE
+13 13 USER TERMINATED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33037.table b/definitions/bufr/tables/0/wmo/7/codetables/33037.table
new file mode 100644
index 0000000..81a7d01
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33037.table
@@ -0,0 +1,19 @@
+1 1 U DEPARTURE FROM GUESS
+2 2 V DEPARTURE FROM GUESS
+3 3 U & V DEPARTURE FROM GUESS
+4 4 U ACCELERATION
+5 5 V ACCELERATION
+6 6 U & V ACCELERATION
+7 7 POSSIBLE LAND FEATURE
+8 8 U ACCELERATION AND POSSIBLE LAND FEATURE
+9 9 V ACCELERATION AND POSSIBLE LAND FEATURE
+10 10 U & V ACCELERATION AND POSSIBLE LAND FEATURE
+11 11 BAD WIND GUESS
+12 12 CORRELATION FAILURE
+13 13 SEARCH BOX OFF EDGE OF AREA
+14 14 TARGET BOX OFF EDGE OF AREA
+15 15 PIXEL BRIGHTNESS OUT OF BOUNDS (NOISY LINE)
+16 16 TARGET OUTSIDE OF LAT/LONG BOX
+17 17 TARGET OUTSIDE OF PRESSURE MIN/MAX
+18 18 AUTOEDITOR FLAGGED SLOW VECTOR
+19 19 AUTOEDITOR FLAGGED VECTORS
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33038.table b/definitions/bufr/tables/0/wmo/7/codetables/33038.table
new file mode 100644
index 0000000..3dc1192
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33038.table
@@ -0,0 +1,9 @@
+1 1 TOTAL ZENITH DELAY QUALITY IS CONSIDERED POOR
+2 2 GALILEO SATELLITES USED
+3 3 GLONASS SATELLITES USED
+4 4 GPS SATELLITES USED
+5 5 METEOROLOGICAL DATA APPLIED
+6 6 ATMOSPHERIC LOADING CORRECTION APPLIED
+7 7 OCEAN TIDE LOADING APPLIED
+8 8 CLIMATE QUALITY DATA PROCESSING
+9 9 NEAR-REAL TIME DATA PROCESSING
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33039.table b/definitions/bufr/tables/0/wmo/7/codetables/33039.table
new file mode 100644
index 0000000..50ff126
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33039.table
@@ -0,0 +1,9 @@
+1 1 NON-NOMINAL QUALITY
+2 2 OFFLINE PRODUCT
+3 3 ASCENDING OCCULTATION FLAG
+4 4 EXCESS PHASE PROCESSING NON-NOMINAL
+5 5 BENDING ANGLE PROCESSING NON-NOMINAL
+6 6 REFRACTIVITY PROCESSING NON-NOMINAL
+7 7 METEOROLOGICAL PROCESSING NON-NOMINAL
+14 14 BACKGROUND PROFILE NON-NOMINAL
+15 15 BACKGROUND (I.E. NOT RETRIEVED) PROFILE PRESENT
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33041.table b/definitions/bufr/tables/0/wmo/7/codetables/33041.table
new file mode 100644
index 0000000..7da4cf8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33041.table
@@ -0,0 +1,4 @@
+0 0 THE FOLLOWING VALUE IS THE TRUE VALUE
+1 1 THE FOLLOWING VALUE IS HIGHER THAN THE TRUE VALUE"    (THE MEASUREMENT HIT THE LOWER LIMIT OF THE INSTRUMENT)
+2 2 THE FOLLOWING VALUE IS LOWER THAN THE TRUE VALUE"    (THE MEASUREMENT HIT THE HIGHER LIMIT OF THE INSTRUMENT)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33042.table b/definitions/bufr/tables/0/wmo/7/codetables/33042.table
new file mode 100644
index 0000000..b75447a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33042.table
@@ -0,0 +1,5 @@
+0 0 EXCLUSIVE LOWER LIMIT (>)
+1 1 INCLUSIVE LOWER LIMIT (>=)
+2 2 EXCLUSIVE UPPER LIMIT (<)
+3 3 INCLUSIVE UPPER LIMIT (=<)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33043.table b/definitions/bufr/tables/0/wmo/7/codetables/33043.table
new file mode 100644
index 0000000..f0626f5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33043.table
@@ -0,0 +1,4 @@
+1 1 SEA MDS. NADIR ONLY SST RETRIEVAL USED 3.7 MICRON"    CHANNEL. LAND MDS RESERVED
+2 2 SEA MDS. DUAL VIEW SST RETRIEVAL USED 3.7 MICRON"    CHANNEL. LAND MDS RESERVED.
+3 3 NADIR VIEW CONTAINS DAY TIME DATA
+4 4 FORWARD VIEW CONTAINS DAY TIME DATA
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33044.table b/definitions/bufr/tables/0/wmo/7/codetables/33044.table
new file mode 100644
index 0000000..a74a7c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33044.table
@@ -0,0 +1,14 @@
+1 1 INPUT DATA MEAN OUTSIDE NOMINAL RANGE FLAG
+2 2 INPUT DATA STANDARD DEVIATION OUTSIDE NOMINAL RANGE FLAG
+3 3 NUMBER OF INPUT DATA GAPS > THRESHOLD VALUE
+4 4 PERCENTAGE OF MISSING LINES > THRESHOLD VALUE
+5 5 DOPPLER CENTROID UNCERTAIN. CONFIDENCE MEASURE < SPECIFIC VA"    LUE
+6 6 DOPPLER AMBIGUITY ESTIMATE UNCERTAIN. CONFIDENCE MEASURE < S"    PECIFIC VALUE
+7 7 OUTPUT DATA MEAN OUTSIDE NOMINAL RANGE FLAG
+8 8 OUTPUT DATA STANDARD DEVIATION OUTSIDE NOMINAL RANGE FLAG
+9 9 CHIRP RECONSTRUCTION FAILED OR IS OF LOW QUALITY FLAG
+10 10 DATA SET MISSING
+11 11 INVALID DOWNLINK PARAMETERS
+12 12 AZIMUTH CUT-OFF ITERATION COUNT. THE AZIMUTH CUT-OFF FIT DID"     NOT CONVERGE WITHIN A MINIMUM NUMBER OF ITERATIONS
+13 13 AZIMUTH CUT-OFF FIT DID NOT CONVERGE WITHIN A MINIMUM"    NUMBER OF ITERATIONS
+14 14 PHASE INFORMATION CONFIDENCE MEASURE. THE IMAGINARY SPECTRAL"    PEAK IS LESS THAN A MINIMUM THRESHOLD, OR THE ZERO LAG SHIFT"    IS GREATER THAN A MI
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33047.table b/definitions/bufr/tables/0/wmo/7/codetables/33047.table
new file mode 100644
index 0000000..e91702b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33047.table
@@ -0,0 +1,26 @@
+1 1 ERROR DETECTED AND ATTEMPTS TO RECOVER MADE
+2 2 ANOMALY IN ON-BOARD DATA HANDLING (OBDH) VALUE DETECTED
+3 3 ANOMALY IN ULTRA STABLE OSCILLATOR PROCESSING (USOP) VALUE D"    ETECTED
+4 4 ERRORS DETECTED BY ON-BOARD COMPUTER
+5 5 AUTOMATIC GAIN CONTROL (AGC) OUT OF RANGE
+6 6 RX DELAY FAULT. RX DISTANCE OUT OF RANGE
+7 7 WAVE FORM SAMPLES FAULT IDENTIFIER. ERROR
+12 12 BRIGHTNESS TEMPERATURE (CHANNEL 1) OUT OF RANGE
+13 13 BRIGHTNESS TEMPERATURE (CHANNEL 2) OUT OF RANGE
+14 14 RESERVED
+15 15 KU OCEAN RETRACKING ERROR
+16 16 S OCEAN RETRACKING ERROR
+17 17 KU ICE 1 RETRACKING ERROR
+18 18 S ICE 1 RETRACKING ERROR
+19 19 KU ICE 2 RETRACKING ERROR
+20 20 S ICE 2 RETRACKING ERROR
+21 21 KU SEA ICE RETRACKING ERROR
+22 22 ARITHMETIC FAULT ERROR
+23 23 METEO DATA STATE. NO MAP
+24 24 METEO DATA STATE. 1 MAP
+25 25 METEO DATA STATE 2 MAPS DEGRADED
+26 26 METEO DATA STATE 2 MAPS NOMINAL
+27 27 ORBIT PROPAGATOR STATUS FOR PROPAGATION MODE, SEVERAL ERRORS
+28 28 ORBIT PROPAGATOR STATUS FOR PROPAGATION MODE, WARNING DETECT"    ED
+29 29 ORBIT PROPAGATOR STATUS FOR INITIALISATION MODE, SEVERAL ERR"    ORS
+30 30 ORBIT PROPAGATOR STATUS FOR INITIALISATION MODE, WARNING DET"    ECTED
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33048.table b/definitions/bufr/tables/0/wmo/7/codetables/33048.table
new file mode 100644
index 0000000..312ba40
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33048.table
@@ -0,0 +1,4 @@
+0 0 INVERSION SUCCESSFUL
+1 1 INVERSION NOT SUCCESSFUL
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33049.table b/definitions/bufr/tables/0/wmo/7/codetables/33049.table
new file mode 100644
index 0000000..bdde061
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33049.table
@@ -0,0 +1,4 @@
+0 0 EXTERNAL WIND DIRECTION USED DURING INVERSION
+1 1 EXTERNAL WIND DIRECTION NOT USED DURING INVERSION
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33050.table b/definitions/bufr/tables/0/wmo/7/codetables/33050.table
new file mode 100644
index 0000000..772ab4a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33050.table
@@ -0,0 +1,8 @@
+0 0 UNQUALIFIED
+1 1 CORRECT VALUE (ALL CHECKS PASSED)
+2 2 PROBABLY GOOD BUT VALUE INCONSISTENT WITH STATISTICS (DIFFER"     FROM CLIMATOLOGY)
+3 3 PROBABLY BAD (SPIKE, GRADIENT, ?~E IF OTHER TESTS PASSED)
+4 4 BAD VALUE, IMPOSSIBLE VALUE (OUT OF SCALE, VERTICAL"    INSTABILITY, CONSTANT PROFILE)
+5 5 VALUE MODIFIED DURING QUALITY CONTROL
+8 8 INTERPOLATED VALUE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33052.table b/definitions/bufr/tables/0/wmo/7/codetables/33052.table
new file mode 100644
index 0000000..42ae4d2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33052.table
@@ -0,0 +1,20 @@
+1 1 DATA BLOCK 1 INVALID (S BAND)
+2 2 DATA BLOCK 2 INVALID (S BAND)
+3 3 DATA BLOCK 3 INVALID (S BAND)
+4 4 DATA BLOCK 4 INVALID (S BAND)
+5 5 DATA BLOCK 5 INVALID (S BAND)
+6 6 DATA BLOCK 6 INVALID (S BAND)
+7 7 DATA BLOCK 7 INVALID (S BAND)
+8 8 DATA BLOCK 8 INVALID (S BAND)
+9 9 DATA BLOCK 9 INVALID (S BAND)
+10 10 DATA BLOCK 10 INVALID (S BAND)
+11 11 DATA BLOCK 11 INVALID (S BAND)
+12 12 DATA BLOCK 12 INVALID (S BAND)
+13 13 DATA BLOCK 13 INVALID (S BAND)
+14 14 DATA BLOCK 14 INVALID (S BAND)
+15 15 DATA BLOCK 15 INVALID (S BAND)
+16 16 DATA BLOCK 16 INVALID (S BAND)
+17 17 DATA BLOCK 17 INVALID (S BAND)
+18 18 DATA BLOCK 18 INVALID (S BAND)
+19 19 DATA BLOCK 19 INVALID (S BAND)
+20 20 DATA BLOCK 20 INVALID (S BAND)
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33053.table b/definitions/bufr/tables/0/wmo/7/codetables/33053.table
new file mode 100644
index 0000000..9170c54
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33053.table
@@ -0,0 +1,20 @@
+1 1 DATA BLOCK 1 INVALID (KU BAND)
+2 2 DATA BLOCK 2 INVALID (KU BAND)
+3 3 DATA BLOCK 3 INVALID (KU BAND)
+4 4 DATA BLOCK 4 INVALID (KU BAND)
+5 5 DATA BLOCK 5 INVALID (KU BAND)
+6 6 DATA BLOCK 6 INVALID (KU BAND)
+7 7 DATA BLOCK 7 INVALID (KU BAND)
+8 8 DATA BLOCK 8 INVALID (KU BAND)
+9 9 DATA BLOCK 9 INVALID (KU BAND)
+10 10 DATA BLOCK 10 INVALID (KU BAND)
+11 11 DATA BLOCK 11 INVALID (KU BAND)
+12 12 DATA BLOCK 12 INVALID (KU BAND)
+13 13 DATA BLOCK 13 INVALID (KU BAND)
+14 14 DATA BLOCK 14 INVALID (KU BAND)
+15 15 DATA BLOCK 15 INVALID (KU BAND)
+16 16 DATA BLOCK 16 INVALID (KU BAND)
+17 17 DATA BLOCK 17 INVALID (KU BAND)
+18 18 DATA BLOCK 18 INVALID (KU BAND)
+19 19 DATA BLOCK 19 INVALID (KU BAND)
+20 20 DATA BLOCK 20 INVALID (KU BAND)
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/33060.table b/definitions/bufr/tables/0/wmo/7/codetables/33060.table
new file mode 100644
index 0000000..0b85a8f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/33060.table
@@ -0,0 +1,4 @@
+0 0 PARAMETER=GOOD
+1 1 PARAMETER=BAD
+2 2 PARAMETER=RESERVED
+3 3 MISSING
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/35000.table b/definitions/bufr/tables/0/wmo/7/codetables/35000.table
new file mode 100644
index 0000000..c5e8846
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/35000.table
@@ -0,0 +1,11 @@
+1 1 100-199 RA I CODES
+2 2 200-299 RA II CODES
+3 3 300-399 RA III CODES
+4 4 400-499 RA IV CODES
+5 5 500-599 RA V CODES
+6 6 600-699 RA VI CODES
+7 7 700-799 ANTARCTIC CODES
+8 8 800-999 RESERVED
+9 9 1000-1022 NOT USED
+11 11 000-099 INTERNATIONAL FM CODES
+1023 1023 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/35001.table b/definitions/bufr/tables/0/wmo/7/codetables/35001.table
new file mode 100644
index 0000000..bba0c81
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/35001.table
@@ -0,0 +1,4 @@
+0 0 REAL TIME
+1 1 NEAR-REAL TIME
+2 2 NON-REAL TIME
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/35030.table b/definitions/bufr/tables/0/wmo/7/codetables/35030.table
new file mode 100644
index 0000000..a46775f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/35030.table
@@ -0,0 +1,10 @@
+0 0 NO DISCREPANCIES
+1 1 NON-COMPLIANCE WITH STANDARD AND RECOMMENDED PRACTICES"    AND PROCEDURES INCLUDINGTHOSE OF MONITORING
+2 2 CATALOGUES OF METEOROLOGICAL BULLETINS NOT UPDATED IN A TIME"    LY MANNER
+3 3 INCORRECT ROUTEING DIRECTORIES
+4 4 LACK OF FLEXIBILITY IN THE ROUTEING ARRANGEMENTS
+5 5 DEFICIENCIES IN THE OPERATION OF GTS CENTRES AND CIRCUITS
+6 6 LOSS OF DATA OR DELAYS IN RELAYING DATA ON THE GTS
+7 7 ROUTEING OF DATA DIFFERENT FROM THE ROUTEING PROVIDED IN THE"     PLAN
+8 8 VARIOUS MALPRACTICES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/35031.table b/definitions/bufr/tables/0/wmo/7/codetables/35031.table
new file mode 100644
index 0000000..8c95268
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/35031.table
@@ -0,0 +1,20 @@
+1 1 SUFFICIENT AND ALL OF ACCEPTABLE QUALITY
+2 2 SUFFICIENT BUT PARTLY OF ACCEPTABLE QUALITY
+3 3 INSUFFICIENT BUT ALL OF ACCEPTABLE QUALITY
+4 4 INSUFFICIENT AND OF UNACCEPTABLE QUALITY
+5 5 SOME MESSAGES NOT COMPLETE
+6 6 SUSPECT OR WRONGLY CODED GROUPS COULD NOT BE INTERPRETED CON"    FIDENTLY
+7 7 GROSS CODING ERRORS
+8 8 TRANSMISSION SEQUENTIAL ORDER NOT OBSERVED
+9 9 REPORT COMPLETELY GARBLED AND THUS DISCARDED
+10 10 DEFICIENCIES IDENTIFIED AND RECTIFIED
+11 11 DEFICIENCIES IDENTIFIED BUT NOT RECTIFIED
+12 12 DEFICIENCIES NOT IDENTIFIED
+13 13 MEASURING ERRORS
+14 14 MUTUAL INCONSISTENCY
+15 15 TEMPORAL INCONSISTENCY
+16 16 FORECAST ERROR
+17 17 BIAS
+18 18 IMPROVE SYSTEM OF QUALITY CONTROL
+19 19 EXPAND TRAINING PROGRAMMES
+123 123 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/35032.table b/definitions/bufr/tables/0/wmo/7/codetables/35032.table
new file mode 100644
index 0000000..7f53a05
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/35032.table
@@ -0,0 +1,10 @@
+1 1 DATA GROUPS MISSING DUE TO RADIO FADING
+2 2 DATA GROUPS MISSING DUE TO OUTAGE OF CENTRE
+3 3 DATA GROUPS MISSING DUE TO OUTAGE OF CIRCUIT
+4 4 NON-IMPLEMENTATION OR MAINTENANCE OF REQUIRED RBSN DENSITY
+5 5 SHORTAGE OF QUALIFIED STAFF TO MAN STATIONS
+6 6 LACK OF CONSUMABLES
+7 7 INSTRUMENT FAILURE
+8 8 NON-ADHERENCE TO TELECOMMUNICATION PROCEDURES
+9 9 SOME OBSERVING PROGRAMMES CEASED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/35033.table b/definitions/bufr/tables/0/wmo/7/codetables/35033.table
new file mode 100644
index 0000000..2a3e525
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/35033.table
@@ -0,0 +1,12 @@
+1 1 NO DEFICIENCY
+2 2 OBSERVATIONS NOT MADE REGULARLY
+3 3 OBSERVATIONS NOT MADE AT RIGHT TIME
+4 4 OBSERVATIONS MADE BUT NOT DISSEMINATED
+5 5 OBSERVATIONS MADE AND SENT TO INCORRECT USERS
+6 6 COLLECTION NOT RECEIVED
+7 7 COLLECTION TRANSMITTED LATE
+8 8 COLLECTION NOT TRANSMITTED
+9 9 DIFFICULTIES IN HF PROPAGATION AND SELECTION OF SUITABLE FRE"    QUENCY
+10 10 DIFFICULTIES IN MAINTENANCE OF COMMUNICATION EQUIPMENT AT RE"    MOTE STATIONS
+11 11 NO ALTERNATIVE ARRANGEMENT FOR ROUTEING METEOROLOGICAL OBSER"    VATION
+123 123 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/35034.table b/definitions/bufr/tables/0/wmo/7/codetables/35034.table
new file mode 100644
index 0000000..7297664
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/35034.table
@@ -0,0 +1,7 @@
+1 1 SLIGHT IMPROVEMENT
+2 2 SIGNIFICANT IMPROVEMENT
+3 3 MOST SIGNIFICANT IMPROVEMENT
+4 4 STEADY
+5 5 DECREASING
+6 6 EFFORTS REQUIRED TO IMPROVE NIGHT-TIME OBSERVATIONS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/40011.table b/definitions/bufr/tables/0/wmo/7/codetables/40011.table
new file mode 100644
index 0000000..d4284c9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/40011.table
@@ -0,0 +1,4 @@
+1 1 MEAN SEA SURFACE (MSS) INTERPOLATION FLAG
+2 2 OCEAN TIDE SOLUTION 1 INTERPOLATION FLAG (0= 4 POINTS OVER O"    CEAN, 1=LESS THAN 4 POINTS)
+3 3 OCEAN TIDE SOLUTION 2 INTERPOLATION FLAG (0= 4 POINTS OVER O"    CEAN, 1=LESS THAN 4 POINTS)
+4 4 METEOROLOGICAL DATA INTERPOLATION FLAG (0= 4 POINTS OVER OCE"    AN, 1=LESS THAN 4 POINTS)
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/40012.table b/definitions/bufr/tables/0/wmo/7/codetables/40012.table
new file mode 100644
index 0000000..d8ce14d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/40012.table
@@ -0,0 +1,3 @@
+1 1 18.7 GHZ BRIGHTNESS TEMPERATURE
+2 2 23.8 GHZ BRIGHTNESS TEMPERATURE
+3 3 34 GHZ BRIGHTNESS TEMPERATURE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/40013.table b/definitions/bufr/tables/0/wmo/7/codetables/40013.table
new file mode 100644
index 0000000..f9dfb9a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/40013.table
@@ -0,0 +1,5 @@
+0 0 INTERPOLATION WITH NO GAP BETWEEN JMR DATA
+1 1 INTERPOLATION WITH GAP BETWEEN JMR DATA
+2 2 EXTRAOLATION OF JMR DATA
+3 3 FAILURE OF EXTRAPOLATION AND INTERPOLATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/4059.table b/definitions/bufr/tables/0/wmo/7/codetables/4059.table
new file mode 100644
index 0000000..cee2528
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/4059.table
@@ -0,0 +1,5 @@
+1 1 00 UTC
+2 2 06 UTC
+3 3 12 UTC
+4 4 18 UTC
+5 5 OTHER HOURS
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8001.table b/definitions/bufr/tables/0/wmo/7/codetables/8001.table
new file mode 100644
index 0000000..ec028a1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8001.table
@@ -0,0 +1,7 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 MAXIMUM WIND LEVEL
+5 5 SIGNIFICANT LEVEL, TEMPERATURE AND/OR RELATIVE HUMIDITY
+6 6 SIGNIFICANT LEVEL, WIND
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8002.table b/definitions/bufr/tables/0/wmo/7/codetables/8002.table
new file mode 100644
index 0000000..d929f62
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8002.table
@@ -0,0 +1,13 @@
+0 0 OBSERVING RULES FOR BASE OF LOWEST CLOUD AND CLOUD TYPES OF"    FM 12-IX EXT. SYNOP AND FM 13-IX EXT. SHIP APPLY
+1 1 FIRST NON - CB SIGNIFICANT LAYER
+2 2 SECOND NON - CB SIGNIFICANT LAYER
+3 3 THIRD NON - CB SIGNIFICANT LAYER
+4 4 CUMULONIMBUS LAYER
+5 5 CEILING
+6 6 CLOUD NOT DETECTED BELOW THE FOLLOWING HEIGHT(S)
+7 7 LOW CLOUD
+8 8 MIDDLE CLOUD
+9 9 HIGH CLOUD
+10 10 CLOUD LAYER WITH BASE BELOW THE STATION LEVEL AND TOP"    ABOVE THE STATION LEVEL
+11 11 CLOUD LAYER WITH BASE AND TOP BELOW THE STATION LEVEL
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8003.table b/definitions/bufr/tables/0/wmo/7/codetables/8003.table
new file mode 100644
index 0000000..442be98
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8003.table
@@ -0,0 +1,9 @@
+0 0 SURFACE
+1 1 BASE OF SATELLITE SOUNDING
+2 2 CLOUD TOP
+3 3 TROPOPAUSE
+4 4 PRECIPITABLE WATER
+5 5 SOUNDING RADIANCES
+6 6 MEAN TEMPERATURES
+7 7 OZON
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8004.table b/definitions/bufr/tables/0/wmo/7/codetables/8004.table
new file mode 100644
index 0000000..348d3d1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8004.table
@@ -0,0 +1,6 @@
+2 2 UNSTEADY (UNS)
+3 3 LEVEL FLIGHT, ROUTINE OBSERVATION (LVR)
+4 4 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED (LVW)
+5 5 ASCENDING (ASC)
+6 6 DESCENDING(DES)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8005.table b/definitions/bufr/tables/0/wmo/7/codetables/8005.table
new file mode 100644
index 0000000..2313ea5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8005.table
@@ -0,0 +1,7 @@
+0 0 RESERVED
+1 1 STORM CENTRE
+2 2 OUTER LIMIT OR EDGE OF STORM
+3 3 LOCATION OF MAXIMUM WIND
+4 4 LOCATION OF STORM IN THE PERTURBED ANALYSIS
+5 5 LOCATION OF STORM IN THE ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8006.table b/definitions/bufr/tables/0/wmo/7/codetables/8006.table
new file mode 100644
index 0000000..9f56c62
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8006.table
@@ -0,0 +1,8 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 PROMINENT MAXIMUM LEVEL
+5 5 PROMINENT MINIMUM LEVEL
+6 6 MINIMUM PRESSURE LEVEL
+7 7 RESERVED
+8 8 LEVEL OF UNDETERMINED SIGNIFICANCE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8007.table b/definitions/bufr/tables/0/wmo/7/codetables/8007.table
new file mode 100644
index 0000000..3e4d2cc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8007.table
@@ -0,0 +1,5 @@
+0 0 POINT
+1 1 LINE
+2 2 AREA
+3 3 VOLUME
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8008.table b/definitions/bufr/tables/0/wmo/7/codetables/8008.table
new file mode 100644
index 0000000..2714b5a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8008.table
@@ -0,0 +1,8 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 LEVEL OF BETA RADIATION MAXIMUM
+5 5 LEVEL OF GAMMA RADIATION MAXIMUM
+6 6 MINIMUM PRESSURE LEVEL
+7 7 RESERVED
+8 8 LEVEL OF UNDETERMINED SIGNIFICANCE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8009.table b/definitions/bufr/tables/0/wmo/7/codetables/8009.table
new file mode 100644
index 0000000..153f92a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8009.table
@@ -0,0 +1,16 @@
+0 0 LEVEL FLIGHT, ROUTINE OBSERVATION, UNSTEADY
+1 1 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED, UNSTEADY
+2 2 UNSTEADY (UNS)
+3 3 LEVEL FLIGHT, ROUTINE OBSERVATION (LVR)
+4 4 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED (LVW)
+5 5 ASCENDING (ASC)
+6 6 DESCENDING (DES)
+7 7 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS
+8 8 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS, UNSTEADY
+9 9 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS
+10 10 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS, UNSTEADY
+11 11 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS
+12 12 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS, UNSTEADY
+13 13 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS
+14 14 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS, UNSTEADY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8010.table b/definitions/bufr/tables/0/wmo/7/codetables/8010.table
new file mode 100644
index 0000000..50e8c70
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8010.table
@@ -0,0 +1,13 @@
+0 0 RESERVED
+1 1 BARE SOIL
+2 2 BARE ROCK
+3 3 LAND GRASS COVER
+4 4 WATER (LAKE, SEA)
+5 5 FLOOD WATER UNDERNEATH
+6 6 SNOW
+7 7 ICE
+8 8 RUNWAY OR ROAD
+9 9 SHIP OR PLATFORM DECK IN STEEL
+10 10 SHIP OR PLATFORM DECK IN WOOD
+11 11 SHIP OR PLATFORM DECK PARTLY COVERED WITH RUBBER MAT
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8011.table b/definitions/bufr/tables/0/wmo/7/codetables/8011.table
new file mode 100644
index 0000000..c8ed7cb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8011.table
@@ -0,0 +1,26 @@
+0 0 QUASI-STATIONARY FRONT AT THE SURFACE
+1 1 QUASI-STATIONARY FRONT ABOVE THE SURFACE
+2 2 WARM FRONT AT THE SURFACE
+3 3 WARM FRONT ABOVE THE SURFACE
+4 4 COLD FRONT AT THE SURFACE
+5 5 COLD FRONT ABOVE THE SURFACE
+6 6 OCCLUSION
+7 7 INSTABILITY LINE
+8 8 INTERTROPICAL FRONT
+9 9 CONVERGENCE LINE
+10 10 JET STREAM
+11 11 CLOUD CLEAR
+12 12 CLOUD
+13 13 TURBULENCE
+14 14 STORM
+15 15 AIRFRAME ICING
+16 16 PHENOMENON
+17 17 VOLCANO
+18 18 ATMOSPHERICS
+20 20 SPECIAL CLOUDS
+21 21 THUNDERSTORM (VAL)
+22 22 TROPICAL CYCLONE (VAL)
+23 23 MOUNTAIN WAVE (VAL)
+24 24 DUSTSTORM (VAL)
+25 25 SANDSTORM (VAL)
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8012.table b/definitions/bufr/tables/0/wmo/7/codetables/8012.table
new file mode 100644
index 0000000..0cef734
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8012.table
@@ -0,0 +1,4 @@
+0 0 LAND
+1 1 SEA
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8013.table b/definitions/bufr/tables/0/wmo/7/codetables/8013.table
new file mode 100644
index 0000000..6ea96bf
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8013.table
@@ -0,0 +1,4 @@
+0 0 NIGHT
+1 1 DAY
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8014.table b/definitions/bufr/tables/0/wmo/7/codetables/8014.table
new file mode 100644
index 0000000..da6bb04
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8014.table
@@ -0,0 +1,10 @@
+0 0 10-MINUTE MEAN VALUE - NORMAL VALUE
+1 1 10-MINUTE MEAN VALUE - ABOVE THE UPPER LIMIT FOR ASSESSMENT"    OF RVR (P)
+2 2 10-MINUTE MEAN VALUE - BELOW LOWER LIMIT FOR ASSESSMENT OF R"    VR (M)
+3 3 ONE MINUTE MINIMUM VALUE - NORMAL VALUE
+4 4 ONE MINUTE MINIMUM VALUE - ABOVE THE UPPER LIMIT FOR ASSESSM"    ENT OF RVR (P)
+5 5 ONE MINUTE MINIMUM VALUE - BELOW LOWER LIMIT FOR ASSESSMENT"    OF RVR (M)
+6 6 ONE MINUTE MAXIMUM VALUE - NORMAL VALUE
+7 7 ONE MINUTE MAXIMUM VALUE - ABOVE THE UPPER LIMIT FOR ASSESS"    MENT OF RVR (P)
+8 8 ONE MINUTE MAXIMUM VALUE - BELOW LOWER LIMIT FOR ASSESSMENT"    OF RVR (M)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8016.table b/definitions/bufr/tables/0/wmo/7/codetables/8016.table
new file mode 100644
index 0000000..6b8a1fa
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8016.table
@@ -0,0 +1,5 @@
+0 0 NOSIG
+1 1 BECMG
+2 2 TEMPO
+3 3 FM
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8017.table b/definitions/bufr/tables/0/wmo/7/codetables/8017.table
new file mode 100644
index 0000000..b3156f8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8017.table
@@ -0,0 +1,4 @@
+0 0 FM
+1 1 TL
+2 2 AT
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8018.table b/definitions/bufr/tables/0/wmo/7/codetables/8018.table
new file mode 100644
index 0000000..e4078dc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8018.table
@@ -0,0 +1,5 @@
+1 1 LAND IS PRESENT
+2 2 SURFACE ICE MAP INDICATES ICE IS PRESENT
+11 11 ICE MAP DATA NOT AVAILABLE
+12 12 ATTENUATION MAP DATA NOT AVAILABLE
+17 17 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8021.table b/definitions/bufr/tables/0/wmo/7/codetables/8021.table
new file mode 100644
index 0000000..988dfd0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8021.table
@@ -0,0 +1,32 @@
+0 0 RESERVED
+1 1 TIME SERIES
+2 2 TIME AVERAGED
+3 3 ACCUMULATED
+4 4 FORECAST
+5 5 FORECAST TIME SERIES
+6 6 FORECAST TIME AVERAGED
+7 7 FORECAST ACCUMULATED
+8 8 ENSEMBLE MEAN
+9 9 ENSEMBLE MEAN TIME SERIES
+10 10 ENSEMBLE MEAN TIME AVERAGED
+11 11 ENSEMBLE MEAN ACCUMULATED
+12 12 ENSEMBLE MEAN FORECAST
+13 13 ENSEMBLE MEAN FORECAST TIME SERIES
+14 14 ENSEMBLE MEAN FORECAST AVERAGED
+15 15 ENSEMBLE MEAN FORECAST ACCUMULATED
+16 16 ANALYSIS
+17 17 START OF PHENOMENON
+18 18 RADIOSONDE LAUNCH TIME
+19 19 START OF ORBIT
+20 20 END OF ORBIT
+21 21 TIME OF ASCENDING NODE
+22 22 TIME OF OCCURENCE OF WIND SHIFT
+23 23 MONITORING PERIOD
+24 24 AGREED TIME LIMIT FOR REPORT RECEPTION
+25 25 NOMINAL REPORTING TIME
+26 26 TIME OF LAST KNOWN POSITION
+27 27 FIRST GUESS    --NOT WMO ENTRY
+28 28 START OF SCAN  --NOT WMO ENTRY
+29 29 END OF SCAN    --NOT WMO ENTRY
+30 30 RESERVED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8023.table b/definitions/bufr/tables/0/wmo/7/codetables/8023.table
new file mode 100644
index 0000000..d65ec12
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8023.table
@@ -0,0 +1,17 @@
+2 2 MAXIMUM VALUE
+3 3 MINIMUM VALUE
+4 4 MEAN VALUE
+5 5 MEDIAN VALUE
+6 6 MODAL VALUE
+7 7 MEAN ABSOLUTE ERROR
+9 9 BEST ESTIMATE OF STANDARD DEVIATION (N-1)
+10 10 STANDARD DEVIATION
+11 11 HARMONIC MEAN
+12 12 ROOT MEAN SQUARE VECTOR ERROR
+13 13 ROOT-MEAN-SQUARE
+32 32 PROBABILITY OF GROSS ERROR
+33 33 PRESCRIBED OBSERVATION ERROR
+34 34 PERSISTENCE OBSERVATION ERROR
+35 35 FINAL OBSERVATION ERROR
+36 36 REPRESENTATIVNESS OBSERVATION ERROR
+63 63 MISSING
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8024.table b/definitions/bufr/tables/0/wmo/7/codetables/8024.table
new file mode 100644
index 0000000..067e37d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8024.table
@@ -0,0 +1,15 @@
+2 2 OBSERVED MINUS MAXIMUM
+3 3 OBSERVED MINUS MINIMUM
+4 4 OBSERVED MINUS MEAN
+5 5 OBSERVED MINUS MEDIAN
+6 6 OBSERVED MINUS MODE
+11 11 OBSERVED MINUS CLIMATOLOGY (ANOMALY)
+12 12 OBSERVED MINUS ANALYZED VALUE
+13 13 OBSERVED MINUS INITIALISED ANALYZED VALUE
+14 14 OBSERVED MINUS FORECAST VALUE
+21 21 OBSERVED MINUS INTERPOLATED VALUE
+22 22 OBSERVED MINUS HYDROSTATICALLY CALCULATED VALUE
+32 32 OBSERVED MINUS FIRST GUESS
+33 33 OBSERVED MINUS ANALYSIS
+34 34 OBSERVED MINUS INITIALIZED ANALYSIS
+63 63 MISSING
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8025.table b/definitions/bufr/tables/0/wmo/7/codetables/8025.table
new file mode 100644
index 0000000..5405e33
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8025.table
@@ -0,0 +1,5 @@
+0 0 UNIVERSAL TIME COORDINATED (UTC) MINUS"    LOCAL STANDARD TIME (LST)
+1 1 LOCAL STANDARD TIME
+2 2 UNIVERSAL TIME COORDINATED (UTC) MINUS SATELLITE CLOCK
+5 5 TIME DIFFERENCE FROM EDGE OF PROCESSING SEGMENT
+15 15 MISSING
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8026.table b/definitions/bufr/tables/0/wmo/7/codetables/8026.table
new file mode 100644
index 0000000..d30bb03
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8026.table
@@ -0,0 +1,5 @@
+0 0 AVERAGING KERNEL MATRIX
+1 1 CORRELATION MATRIX
+2 2 LOWER TRIANGULAR CORRELATION MATRIX SQUARE ROOT (L FROM C=LL"    T)
+3 3 INVERSE LOWER TRIANGULAR CORRELATION MATRIX SQUARE ROOT (L**"    -1)
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8029.table b/definitions/bufr/tables/0/wmo/7/codetables/8029.table
new file mode 100644
index 0000000..28b071b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8029.table
@@ -0,0 +1,5 @@
+0 0 OPEN OCEAN OR SEMI-ENCLOSED SEA
+1 1 ENCLOSED SEA OR LAKE
+2 2 CONTINENTAL ICE
+3 3 LAND
+255 255 MISSING
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8033.table b/definitions/bufr/tables/0/wmo/7/codetables/8033.table
new file mode 100644
index 0000000..449fbd4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8033.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 PERCENTAGE CONFIDENCE CALCULATED USING CLOUD FRACTION
+2 2 PERCENTAGE CONFIDENCE CALCULATED USING STANDARD"    DEVIATION OF TEMPERATURE
+3 3 PERCENTAGE CONFIDENCE CALCULATED USING PROBABILITY OF"     THE CLOUD CONTAMINATION
+4 4 PERCENTAGE CONFIDENCE CALCULATED USING NORMALITY OF DISTRIBU"    TION
+127 127 MISSING
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8035.table b/definitions/bufr/tables/0/wmo/7/codetables/8035.table
new file mode 100644
index 0000000..d56a5d7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8035.table
@@ -0,0 +1,8 @@
+0 0 GLOBAL
+1 1 REGIONAL
+2 2 NATIONAL
+3 3 SPECIAL
+4 4 BILATERAL
+5 5 RESERVED
+6 6 RESERVED
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8036.table b/definitions/bufr/tables/0/wmo/7/codetables/8036.table
new file mode 100644
index 0000000..6cfeab5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8036.table
@@ -0,0 +1,8 @@
+0 0 WMO SECRETARIAT
+1 1 WMO
+2 2 RSMC
+3 3 NMC
+4 4 RTH
+5 5 OBSERVING SITE
+6 6 OTHER
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8039.table b/definitions/bufr/tables/0/wmo/7/codetables/8039.table
new file mode 100644
index 0000000..75f133d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8039.table
@@ -0,0 +1,8 @@
+0 0 ISSUE TIME OF FORECAST
+1 1 TIME OF COMMNENCEMENT OF PERIOD OF THE FORECAST
+2 2 TIME OF ENDING OF PERIOD OF THE FORECAST
+3 3 FORECSAT TIME OF MAXIMUM TEMPERATURE
+4 4 FORECSAT TIME OF MINIMUM TEMPERATURE
+5 5 TIME OF BEGINNING OF THE FORECAST
+6 6 TIME OF ENDING OF THE FORECAST
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8040.table b/definitions/bufr/tables/0/wmo/7/codetables/8040.table
new file mode 100644
index 0000000..7c2430e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8040.table
@@ -0,0 +1,43 @@
+0 0 HIGH RESOLUTION DATA SAMPLE
+1 1 WITHIN 20 HPA OF SURFACE
+2 2 PRESSURE LESS THAN 10 HPA (I.E., 9, 8, 7, ETC.)"    WHEN NO OTHER REASON APPLIES
+3 3 BASE PRESSURE LEVEL FOR STABILITY INDEX
+4 4 BEGIN DOUBTFUL TEMPERATURE, HEIGHT DATA
+5 5 BEGIN MISSING DATA (ALL ELEMENTS)
+6 6 BEGIN MISSING RH DATA
+7 7 BEGIN MISSING TEMPERATURE DATA
+8 8 HIGHEST LEVEL REACHED BEFORE BALLOON"    DESCENT BECAUSE OF ICING OR TURBULENCE
+9 9 END DOUBTFUL TEMPERATURE, HEIGHT DATA
+10 10 END MISSING DATA (ALL ELEMENTS)
+11 11 END MISSING RH DATA
+12 12 END MISSING TEMPERATURE DATA
+13 13 ZERO DEGREES C CROSSING(S) FOR RADAT
+14 14 STANDARD PRESSURE LEVEL
+15 15 OPERATOR ADDED LEVEL
+16 16 OPERATOR DELETED LEVEL
+17 17 BALLOON RE-ASCENDED BEYOND PREVIOUS HIGHEST ASCENT LEVEL
+18 18 SIGNIFICANT RH LEVEL
+19 19 RH LEVEL SELECTION TERMINATED
+20 20 SURFACE LEVEL
+21 21 SIGNIFICANT TEMPERATURE LEVEL
+22 22 MANDATORY TEMPERATURE LEVEL
+23 23 FLIGHT TERMINATION LEVEL
+24 24 TROPOPAUSE(S)
+25 25 AIRCRAFT REPORT
+26 26 INTERPOLATED (GENERATED) LEVEL
+27 27 MANDATORY WIND LEVEL
+28 28 SIGNIFICANT WIND LEVEL
+29 29 MAXIMUM WIND LEVEL
+30 30 INCREMENTAL WIND LEVEL (FIXED REGIONAL)
+31 31 INCREMENTAL HEIGHT LEVEL (GENERATED)
+32 32 WIND TERMINATION LEVEL
+33 33 PRESSURE 100 TO 110 HPA, WHEN NO OTHER REASON APPLIES
+40 40 SIGNIFICANT THERMODYNAMIC LEVEL (INVERSION)
+41 41 SIGNIFICANT RH LEVEL ( PER NCDC CRITERIA)
+42 42 SIGNIFICANT TEMPERATURE LEVEL (PER NCDC)
+43 43 BEGIN MISSING WIND DATA
+44 44 END MISSING WIND DATA
+60 60 LEVEL OF 80-KNOT ISOTACH ABOVE JET
+61 61 LEVEL OF 80-KNOT ISOTACH BELOW JET
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8041.table b/definitions/bufr/tables/0/wmo/7/codetables/8041.table
new file mode 100644
index 0000000..3596f95
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8041.table
@@ -0,0 +1,9 @@
+0 0 PARENT SITE
+1 1 OBSERVATION SITE
+2 2 BALLOON MANUFACTURE DATE
+3 3 BALLOON LAUNCH POINT
+4 4 SURFACE OBSERVATION
+5 5 SURFACE OBSERVATION DISPLACEMENT FROM LAUNCH POINT
+6 6 FLIGHT LEVEL OBSERVATION
+7 7 FLIGHT LEVEL TERMINATION POINT
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8042.table b/definitions/bufr/tables/0/wmo/7/codetables/8042.table
new file mode 100644
index 0000000..b98cece
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8042.table
@@ -0,0 +1,13 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 MAXIMUM WIND LEVEL
+5 5 SIGNIFICANT TEMPERATURE LEVEL
+6 6 SIGNIFICANT HUMIDITY LEVEL
+7 7 SIGNIFICANT WIND LEVEL
+8 8 BEGINNING OF MISSING TEMPERATURE DATA
+9 9 END OF MISSING TEMPERATURE DATA
+10 10 BEGINNING OF MISSING HUMIDITY DATA
+11 11 END OF MISSING HUMIDITY DATA
+12 12 BEGINNING OF MISSING WIND DATA
+13 13 END OF MISSING WIND DATA
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8043.table b/definitions/bufr/tables/0/wmo/7/codetables/8043.table
new file mode 100644
index 0000000..6bd94fe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8043.table
@@ -0,0 +1,21 @@
+0 0 OZONE, O3,10028-15-6
+1 1 WATER VAPOUR, H2O, 7732-18-5
+2 2 METHANE, CH4, 74-82-8
+3 3 CARBON DIOXIDE, CO2, 37210-16-5
+4 4 CARBON MONOXIDE, CO, 630-08-0
+5 5 NITROGEN DIOXIDE, NO2, 10102-44-0
+6 6 NITROUS OXIDE, N2O, 10024-97-2
+7 7 FORMALDEHYDE, HCHO, 50-00-0
+8 8 SULFUR DIOXIDE, SO2, 7446-09-5
+9 9 BROMINE OXIDE, BRO, 15656-19-6
+10 10 CHLORINE DIOXIDE, OCLO, 10049-04-4
+11 11 NITROGEN MONOXIDE, NO, 10102-43-9
+12 12 AMMONIA, NH3, 7664-41-7
+25 25 PARTICULATE MATTER < 1.0 MICRONS
+26 26 PARTICULATE MATTER < 2.5 MICRONS
+27 27 PARTICULATE MATTER < 10 MICRONS
+28 28 AEROSOLS GENERIC
+29 29 SMOKE GENERIC
+30 30 CRUSTAL MATERIAL (GENERIC DUST)
+31 31 VOLCANIC ASH
+255 255 MISSING
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8050.table b/definitions/bufr/tables/0/wmo/7/codetables/8050.table
new file mode 100644
index 0000000..4b401f1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8050.table
@@ -0,0 +1,11 @@
+0 0 RESERVED
+1 1 PRESSURE
+2 2 TEMPERATURE
+3 3 EXTREME TEMPERATURE
+4 4 VAPOUR PRESSURE
+5 5 PRECIPITATION
+6 6 SUNSHINE DURATION
+7 7 MAXIMUM TEMPERATURE
+8 8 MINIMUM TEMPERATURE
+9 9 WIND
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8051.table b/definitions/bufr/tables/0/wmo/7/codetables/8051.table
new file mode 100644
index 0000000..5249fe6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8051.table
@@ -0,0 +1,7 @@
+1 1 PRESSURE
+2 2 TEMPERATURE
+3 3 EXTREME TEMPERATURE
+4 4 VAPOUR PRESSURE
+5 5 PRECIPITATION
+6 6 SUNSHINE DURATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8052.table b/definitions/bufr/tables/0/wmo/7/codetables/8052.table
new file mode 100644
index 0000000..f6f02e9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8052.table
@@ -0,0 +1,26 @@
+0 0 MEAN WIND SPEED OVER 10-MINUTES PERIOD OBSERVED OR RECORDED"    EQUAL TO OR MORE THAN 10 M/S
+1 1 MEAN WIND SPEED OVER 10-MINUTES PERIOD OBSERVED OR RECORDED"    EQUAL TO OR MORE THAN 20 M/S
+2 2 MEAN WIND SPEED OVER 10-MINUTES PERIOD OBSERVED OR RECORDED"    EQUAL TO OR MORE THAN 30 M/S
+3 3 MAXIMUM TEMPERATURE LESS THAN 273.2 K
+4 4 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 298.2 K
+5 5 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 303.2 K
+6 6 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 308.2 K
+7 7 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 313.2 K
+8 8 MINIMUM TEMPERATURE LESS THAN 273.2 K
+9 9 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 273.2 K
+10 10 PRECIPITATION EQUAL TO OR MORE THAN   1.0 KG/M**2
+11 11 PRECIPITATION EQUAL TO OR MORE THAN   5.0 KG/M**2
+12 12 PRECIPITATION EQUAL TO OR MORE THAN  10.0 KG/M**2
+13 13 PRECIPITATION EQUAL TO OR MORE THAN  50.0 KG/M**2
+14 14 PRECIPITATION EQUAL TO OR MORE THAN 100.0 KG/M**2
+15 15 PRECIPITATION EQUAL TO OR MORE THAN 150.0 KG/M**2
+16 16 SNOW DEPTH MORE THAN 0.0 M
+17 17 SNOW DEPTH MORE THAN 0.01 M
+18 18 SNOW DEPTH MORE THAN 0.10 M
+19 19 SNOW DEPTH MORE THAN 0.50 M
+20 20 HORIZONTAL VISIBILITY LESS THAN   50 M
+21 21 HORIZONTAL VISIBILITY LESS THAN  100 M
+22 22 HORIZONTAL VISIBILITY LESS THAN 1000 M
+23 23 HAIL
+24 24 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8053.table b/definitions/bufr/tables/0/wmo/7/codetables/8053.table
new file mode 100644
index 0000000..e0c5039
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8053.table
@@ -0,0 +1,4 @@
+0 0 VALUE OCCURED ON ONLY ONE DAY IN THE MONTH
+1 1 VALUE OCCURED ON MORE THAN ONE DAY IN THE MONTH
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8054.table b/definitions/bufr/tables/0/wmo/7/codetables/8054.table
new file mode 100644
index 0000000..71afef9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8054.table
@@ -0,0 +1,3 @@
+0 0 WIND SPEED OR GUST IS AS REPORTED
+1 1 WIND SPEED IS GREATER THAN THAT REPRTED (P IN METAR/TAF/SPEC"    I)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8060.table b/definitions/bufr/tables/0/wmo/7/codetables/8060.table
new file mode 100644
index 0000000..2865fec
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8060.table
@@ -0,0 +1,8 @@
+0 0 RESERVED
+1 1 RANGE
+2 2 AZIMUTH
+3 3 HORIZONTAL
+4 4 VERTICAL
+5 5 NORTH/SOUTH
+6 6 EAST/WEST
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8065.table b/definitions/bufr/tables/0/wmo/7/codetables/8065.table
new file mode 100644
index 0000000..69b80ea
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8065.table
@@ -0,0 +1,4 @@
+0 0 NO SUN-GLINT
+1 1 SUN-GLINT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8066.table b/definitions/bufr/tables/0/wmo/7/codetables/8066.table
new file mode 100644
index 0000000..fcc0252
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8066.table
@@ -0,0 +1,4 @@
+0 0 OPAQUE
+1 1 SEMI-TRANSPARENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8070.table b/definitions/bufr/tables/0/wmo/7/codetables/8070.table
new file mode 100644
index 0000000..2df3629
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8070.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 RESERVED
+2 2 EARTH LOCATED INSTRUMENT COUNTS,"    CALIBRATION COEFFICIENTS AND HOUSEKEEPING (LEVEL 1B)
+3 3 EARTH LOCATED CALIBRATED RADIANCES (LEVEL 1C)
+4 4 MAPPED TO A COMMON FOOTPRINT, EARTH LOCATED"    CALIBRATED RADIANCES (LEVEL 1D)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8072.table b/definitions/bufr/tables/0/wmo/7/codetables/8072.table
new file mode 100644
index 0000000..bd831e1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8072.table
@@ -0,0 +1,4 @@
+0 0 MIXED
+1 1 CLEAR
+2 2 CLOUDY
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8074.table b/definitions/bufr/tables/0/wmo/7/codetables/8074.table
new file mode 100644
index 0000000..5778e65
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8074.table
@@ -0,0 +1,4 @@
+0 0 OPEN OCEAN OR SEMI-ENCLOSED SEA
+1 1 NON-OCEAN LIKE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8075.table b/definitions/bufr/tables/0/wmo/7/codetables/8075.table
new file mode 100644
index 0000000..5f5e3a2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8075.table
@@ -0,0 +1,4 @@
+0 0 ASCENDING ORBIT
+1 1 DESCENDING ORBIT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8076.table b/definitions/bufr/tables/0/wmo/7/codetables/8076.table
new file mode 100644
index 0000000..c63942f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8076.table
@@ -0,0 +1,3 @@
+0 0 KU
+1 1 C
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8077.table b/definitions/bufr/tables/0/wmo/7/codetables/8077.table
new file mode 100644
index 0000000..2c7902b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8077.table
@@ -0,0 +1,7 @@
+0 0 LAND
+1 1 SEA
+2 2 COASTAL
+3 3 OPEN OCEAN OR SEMI-ENCLOSED SEA
+4 4 ENCLOSED SEA OR LAKE
+5 5 CONTINENTAL ICE
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8079.table b/definitions/bufr/tables/0/wmo/7/codetables/8079.table
new file mode 100644
index 0000000..25fc9e1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8079.table
@@ -0,0 +1,9 @@
+0 0 NORMAL ISSUE
+1 1 CORRECTION TO A PREVIOUSLY ISSUED PRODUCT (COR)
+2 2 AMANDMENT TO A PREVIOUSLY ISSUED PRODUCT *AMD)
+3 3 CORRECTION TO A PREVIOUSLY ISSUED AMENDED PRODUCT (COR AMD)
+4 4 CANCELLATION OD A PREVIOUSLY ISSUED PRODUCT (CNL)
+5 5 NO PRODUCT AVAILABLE (NIL)
+6 6 SPECIAL REPORT ( SPECI)
+7 7 CORRECTED SPECIAL REPORT (SPECI COR)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8080.table b/definitions/bufr/tables/0/wmo/7/codetables/8080.table
new file mode 100644
index 0000000..8972f26
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8080.table
@@ -0,0 +1,9 @@
+0 0 TOTAL WATER PRESSURE PROFILE
+1 1 TOTAL WATER TEMPERATURE PROFILE
+2 2 TOTAL WATER SALINITY PROFILE
+3 3 TOTAL WATER CONDUCTIVITY PROFILE
+10 10 WATER PRESSURE AT A LEVEL
+11 11 WATER TEMPERATURE AT A LEVEL
+12 12 SALINITY AT A LEVEL
+20 20 POSITION
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8081.table b/definitions/bufr/tables/0/wmo/7/codetables/8081.table
new file mode 100644
index 0000000..75d2887
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8081.table
@@ -0,0 +1,5 @@
+0 0 SENSOR
+1 1 TRANSMITTER
+2 2 RECEIVER
+3 3 OBSERVING PLATFORM
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8082.table b/definitions/bufr/tables/0/wmo/7/codetables/8082.table
new file mode 100644
index 0000000..1f24db8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8082.table
@@ -0,0 +1,3 @@
+0 0 SENSOR HEIGHT IS NOT MODIFIED
+1 1 SENSOR HEIGHT IS MODIFIED TO STANDARD LEVEL
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8083.table b/definitions/bufr/tables/0/wmo/7/codetables/8083.table
new file mode 100644
index 0000000..b754702
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8083.table
@@ -0,0 +1,9 @@
+1 1 ADJUSTED WITH RESPECT TO REPRESENTATIVE HEIGHT OF SENSOR ABO"    VE LOCAL GROUND (OR DECK OF MARINE PLATFORM)
+2 2 ADJUSTED WITH RESPECT TO REPRESENTATIVE HEIGHT OF SENSOR ABO"    VE WATER SURFACE
+3 3 ADJUSTED WITH RESPECT TO STANDARD SURFACE ROUGHNESS
+4 4 ADJUSTED WITH RESPECT TO WIND SPEED
+5 5 ADJUSTED WITH RESPECT TO TEMPERATURE
+6 6 ADJUSTED WITH RESPECT TO PRESSURE
+7 7 ADJUSTED WITH RESPECT TO HUMIDITY
+8 8 ADJUSTED WITH RESPECT TO EVAPORATION
+9 9 ADJUSTED WITH RESPECT TO WETTING LOSSES
diff --git a/definitions/bufr/tables/0/wmo/7/codetables/8085.table b/definitions/bufr/tables/0/wmo/7/codetables/8085.table
new file mode 100644
index 0000000..de7bb90
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/codetables/8085.table
@@ -0,0 +1,8 @@
+0 0 FORE BEAM
+1 1 MID BEAM
+2 2 AFT BEAM
+3 3 RESERVED
+4 4 RESERVED
+5 5 RESERVED
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/7/element.table b/definitions/bufr/tables/0/wmo/7/element.table
new file mode 100644
index 0000000..cc9082d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/element.table
@@ -0,0 +1,1297 @@
+#code|abbreviation|type|name|unit|scale|reference|width|crex_unit|crex_scale|crex_width
+000001|tableAEntry|string|TABLE A: ENTRY|CCITT IA5|0|0|24|Character|0|3
+000002|tableALine1|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 1|CCITT IA5|0|0|256|Character|0|32
+000003|tableALine2|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 2|CCITT IA5|0|0|256|Character|0|32
+000004|masterTable|string|BUFR/CREX MASTER TABLE|CCITT IA5|0|0|16|Character|0|2
+000005|editionNumber|string|BUFR/CREX EDITION NUMBER|CCITT IA5|0|0|24|Character|0|3
+000006|bufrMasterTableVersionNumber|string|BUFR MASTER TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000007|crexMasterTableVersionNumber|string|CREX MASTER TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000008|bufrLocalTableVersionNumber|string|BUFR LOCAL TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000010|fDescriptorToBeAddedOrDefined|string|F DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|8|Character|0|1
+000011|xDescriptorToBeAddedOrDefined|string|X DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|16|Character|0|2
+000012|yDescriptorToBeAddedOrDefined|string|Y DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|24|Character|0|3
+000013|elementNameLine1|string|ELEMENT NAME, LINE 1|CCITT IA5|0|0|256|Character|0|32
+000014|elementNameLine2|string|ELEMENT NAME, LINE 2|CCITT IA5|0|0|256|Character|0|32
+000015|unitsName|string|UNITS NAME|CCITT IA5|0|0|192|Character|0|24
+000016|unitsScaleSign|string|UNITS SCALE SIGN|CCITT IA5|0|0|8|Character|0|1
+000017|unitsScale|string|UNITS SCALE|CCITT IA5|0|0|24|Character|0|3
+000018|unitsReferenceSign|string|UNITS REFERENCE SIGN|CCITT IA5|0|0|8|Character|0|1
+000019|unitsReferenceValue|string|UNITS REFERENCE VALUE|CCITT IA5|0|0|80|Character|0|10
+000020|elementDataWidth|string|ELEMENT DATA WIDTH|CCITT IA5|0|0|24|Character|0|3
+000030|descriptorDefiningSequence|string|DESCRIPTOR DEFINING SEQUENCE|CCITT IA5|0|0|48|Character|0|6
+001001|blockNumber|long|WMO BLOCK NUMBER|Numeric|0|0|7|Numeric|0|2
+001002|stationNumber|long|WMO STATION NUMBER|Numeric|0|0|10|Numeric|0|3
+001003|regionNumber|table|WMO REGION NUMBER/GEOGRAPHICAL AREA|CODE TABLE|0|0|3|CODE TABLE|0|1
+001004|wmoRegionSubArea|long|WMO REGION SUB-AREA (SEE NOTE 9)|Numeric|0|0|3|Numeric|0|1
+001005|buoyOrPlatformIdentifier|long|BUOY/PLATFORM IDENTIFIER|Numeric|0|0|17|Numeric|0|5
+001006|aircraftFlightNumber|string|AIRCRAFT FLIGHT NUMBER|CCITT IA5|0|0|64|Character|0|8
+001007|satelliteIdentifier|table|SATELLITE IDENTIFIER|CODE TABLE|0|0|10|CODE TABLE|0|4
+001008|aircraftRegistrationNumberOrOtherIdentification|string|AIRCRAFT REGISTRATION NUMBER OR OTHER IDENTIFICATION|CCITT IA5|0|0|64|Character|0|8
+001009|commercialAircraftType|string|TYPE OF COMMERCIAL AIRCRAFT|CCITT IA5|0|0|64|Character|0|8
+001010|stationaryBuoyPlatformIdentifierEGCManBuoys|string|STATIONARY BUOY PLATFORM IDENTIFIER; E.G. C-MAN BUOYS|CCITT IA5|0|0|64|Character|0|8
+001011|shipOrMobileLandStationIdentifier|string|SHIP OR MOBILE LAND STATION IDENTIFIER|CCITT IA5|0|0|72|Character|0|9
+001012|directionOfMotionOfMovingObservingPlatform|long|DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM**|deg|0|0|9|deg|0|3
+001013|movingObservingPlatformSpeed|long|SPEED OF MOTION OF MOVING OBSERVING PLATFORM*|m/s|0|0|10|m/s|0|3
+001014|platformDriftSpeed|double|PLATFORM DRIFT SPEED (HIGH PRECISION)|m/s|2|0|10|m/s|2|4
+001015|stationOrSiteName|string|STATION OR SITE NAME|CCITT IA5|0|0|160|Character|0|20
+001018|shortStationName|string|SHORT STATION OR SITE NAME|CCITT IA5|0|0|40|Character|0|5
+001019|longStationName|string|LONG STATION OR SITE NAME|CCITT IA5|0|0|256|Character|0|32
+001020|wmoRegionSubArea|long|WMO REGION SUB-AREA|Numeric|0|0|4|Numeric|0|2
+001021|synopticFeatureIdentifier|long|SYNOPTIC FEATURE IDENTIFIER|Numeric|0|0|14|Numeric|0|4
+001022|featureName|string|NAME OF FEATURE (SEE NOTE 11)|CCITT IA5|0|0|224|Character|0|28
+001023|observationSequenceNumber|long|OBSERVATION SEQUENCE NUMBER|Numeric|0|0|9|Numeric|0|3
+001025|stormIdentifier|string|STORM IDENTIFIER|CCITT IA5|0|0|24|Character|0|3
+001026|stormName|string|WMO STORM NAME|CCITT IA5|0|0|64|Character|0|8
+001027|longStormName|string|WMO LONG STORM NAME|CCITT IA5|0|0|80|Character|0|10
+001030|numericalModelIdentifier|string|NUMERICAL MODEL IDENTIFIER|CCITT IA5|0|0|128|Character|0|16
+001031|centre|table|IDENTIFICATION OF ORIGINATING/GENERATING CENTRE (SEE NOTE 10)|CODE TABLE|0|0|16|CODE TABLE|0|5
+001032|generatingApplication|table|GENERATING APPLICATION|CODE TABLE|0|0|8|CODE TABLE|0|3
+001033|centre|table|IDENTIFICATION OF ORIGINATING/GENERATING CENTRE|CODE TABLE|0|0|8|CODE TABLE|0|3
+001034|subCentre|table|IDENTIFICATION OF ORIGINATING/GENERATING SUB-CENTRE|CODE TABLE|0|0|8|CODE TABLE|0|3
+001035|centre|table|ORIGINATING CENTRE|Common CODE TABLE C-11|0|0|16|Common CODE TABLE C-11|0|5
+001036|agencyInChargeOfOperatingObservingPlatform|table|AGENCY IN CHARGE OF OPERATING THE OBSERVING PLATFORM|CODE TABLE|0|0|20|CODE TABLE|0|7
+001037|sigmetSequenceIdentifier|string|SIGMET SEQUENCE IDENTIFIER|CCITT IA5|0|0|24|Character|0|3
+001041|absolutePlatformVelocityFirstComponent|double|ABSOLUTE PLATFORM VELOCITY - FIRST COMPONENT (SEE NOTE 6)|m/s|5|-1073741824|31|m/s|5|10
+001042|absolutePlatformVelocitySecondComponent|double|ABSOLUTE PLATFORM VELOCITY - SECOND COMPONENT (SEE NOTE 6)|m/s|5|-1073741824|31|m/s|5|10
+001043|absolutePlatformVelocityThirdComponent|double|ABSOLUTE PLATFORM VELOCITY - THIRD COMPONENT (SEE NOTE 6)|m/s|5|-1073741824|31|m/s|5|10
+001050|platformTransmitterIdNumber|long|PLATFORM TRANSMITTER ID NUMBER|Numeric|0|0|17|Numeric|0|6
+001051|platformTransmitterIdNumber|string|PLATFORM TRANSMITTER ID NUMBER|CCITT IA5|0|0|96|Character|0|12
+001060|aircraftReportingPointBeaconIdentifier|string|AIRCRAFT REPORTING POINT (BEACON IDENTIFIER)|CCITT IA5|0|0|64|Character|0|8
+001062|shortIcaoLocationIndicator|string|SHORT ICAO LOCATION INDICATOR|CCITT IA5|0|0|32|Character|0|4
+001063|icaoLocationIndicator|string|ICAO LOCATION INDICATOR|CCITT IA5|0|0|64|Character|0|8
+001064|runwayDesignator|string|RUNWAY DESIGNATOR|CCITT IA5|0|0|32|Character|0|4
+001065|icaoRegionIdentifier|string|ICAO REGION IDENTIFIER|CCITT IA5|0|0|256|Character|0|32
+001075|tideStationIdentification|string|TIDE STATION IDENTIFICATION|CCITT IA5|0|0|40|Character|0|5
+001080|shipLineNumberAccordingToSoop|string|SHIP LINE NUMBER ACCORDING TO SOOP|CCITT IA5|0|0|32|Character|0|4
+001081|radiosondeSerialNumber|string|RADIOSONDE SERIAL NUMBER|CCITT IA5|0|0|160|Character|0|20
+001082|radiosondeAscensionNumber|long|RADIOSONDE ASCENSION NUMBER (SEE NOTE 12)|Numeric|0|0|14|Numeric|0|4
+001083|radiosondeReleaseNumber|long|RADIOSONDE RELEASE NUMBER (SEE NOTE 12)|Numeric|0|0|3|Numeric|0|1
+001085|observingPlatformManufacturerModel|string|OBSERVING PLATFORM MANUFACTURER'S MODEL|CCITT IA5|0|0|160|Character|0|20
+001086|observingPlatformManufacturerSerialNumber|string|OBSERVING PLATFORM MANUFACTURER'S SERIAL NUMBER|CCITT IA5|0|0|256|Character|0|32
+001087|marineObservingPlatformIdentifier|long|WMO MARINE OBSERVING PLATFORM EXTENDED IDENTIFIER|Numeric|0|0|23|Numeric|0|7
+001090|techniqueForMakingUpInitialPerturbations|table|TECHNIQUE FOR MAKING UP INITIAL PERTURBATIONS|CODE TABLE|0|0|8|CODE TABLE|0|3
+001091|ensembleMemberNumber|long|ENSEMBLE MEMBER NUMBER|Numeric|0|0|10|Numeric|0|4
+001092|ensembleForecastType|table|TYPE OF ENSEMBLE FORECAST|CODE TABLE|0|0|8|CODE TABLE|0|3
+001093|balloonLotNumber|string|BALLOON LOT NUMBER|CCITT IA5|0|0|96|Character|0|12
+001094|wbanNumber|long|WBAN NUMBER|Numeric|0|0|17|Numeric|0|5
+001095|observerIdentification|string|OBSERVER IDENTIFICATION|CCITT IA5|0|0|32|Character|0|4
+001096|stationAcquisition|string|STATION ACQUISITION|CCITT IA5|0|0|160|Character|0|20
+001101|stateIdentifier|table|STATE IDENTIFIER|CODE TABLE|0|0|10|CODE TABLE|0|3
+001102|stationNumber|long|NATIONAL STATION IDENTIFIER|Numeric|0|0|30|Numeric|0|9
+001124|gridPointIdentifier|long|GRID POINT IDENTIFIER|Numeric|0|0|24|Numeric|0|8
+001144|snapshotIdentifier|long|SNAPSHOT IDENTIFIER|Numeric|0|0|31|Numeric|0|10
+002001|stationType|table|TYPE OF STATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002002|instrumentationForWindMeasurement|flag|TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+002003|measuringEquipmentType|table|TYPE OF MEASURING EQUIPMENT USED|CODE TABLE|0|0|4|CODE TABLE|0|2
+002004|typeOfInstrumentationForEvaporationMeasurement|table|TYPE OF INSTRUMENTATION FOR EVAPORATION MEASUREMENT OR TYPE OF C|CODE TABLE|0|0|4|CODE TABLE|0|2
+002005|temperatureObservationPrecision|double|PRECISION OF TEMPERATURE OBSERVATION|K|2|0|7|K|2|3
+002011|radiosondeType|table|RADIOSONDE TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+002012|radiosondeComputationalMethod|table|RADIOSONDE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002013|solarAndInfraredRadiationCorrection|table|SOLAR AND INFRARED RADIATION CORRECTION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002014|trackingTechniqueOrStatusOfSystem|table|TRACKING TECHNIQUE/STATUS OF SYSTEM USED|CODE TABLE|0|0|7|CODE TABLE|0|3
+002015|radiosondeCompleteness|table|RADIOSONDE COMPLETENESS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002016|radiosondeConfiguration|flag|RADIOSONDE CONFIGURATION|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+002019|satelliteInstruments|table|SATELLITE INSTRUMENTS|CODE TABLE|0|0|11|CODE TABLE|0|4
+002020|satelliteClassification|table|SATELLITE CLASSIFICATION|CODE TABLE|0|0|9|CODE TABLE|0|3
+002021|satelliteInstrumentDataUsedInProcessing|flag|SATELLITE INSTRUMENT DATA USED IN PROCESSING|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+002022|satelliteDataProcessingTechnique|flag|SATELLITE DATA-PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002023|satelliteDerivedWindComputationMethod|table|SATELLITE DERIVED WIND COMPUTATION METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002024|meanHumidityComputationalMethod|table|INTEGRATED MEAN HUMIDITY COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002025|satelliteChannelsUsedInComputation|flag|SATELLITE CHANNEL(S) USED IN COMPUTATION|FLAG TABLE|0|0|25|FLAG TABLE|0|9
+002026|crossTrackResolution|double|CROSS TRACK RESOLUTION|m|2|0|12|m|2|4
+002027|alongTrackResolution|double|ALONG TRACK RESOLUTION|m|2|0|12|m|2|4
+002028|segmentSizeAtNadirInXDirection|long|SEGMENT SIZE AT NADIR IN X DIRECTION|m|0|0|18|m|0|6
+002029|segmentSizeAtNadirInYDirection|long|SEGMENT SIZE AT NADIR IN Y DIRECTION|m|0|0|18|m|0|6
+002030|methodOfCurrentMeasurement|table|METHOD OF CURRENT MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002031|durationAndTimeOfCurrentMeasurement|table|DURATION AND TIME OF CURRENT MEASUREMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+002032|indicatorForDigitization|table|INDICATOR FOR DIGITIZATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002033|methodOfSalinityOrDepthMeasurement|table|METHOD OF SALINITY/DEPTH MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002034|drogueType|table|DROGUE TYPE|CODE TABLE|0|0|5|CODE TABLE|0|2
+002035|cableLength|long|CABLE LENGTH|m|0|0|9|m|0|3
+002036|buoyType|table|BUOY TYPE|CODE TABLE|0|0|2|CODE TABLE|0|1
+002037|methodOfTidalObservation|table|METHOD OF TIDAL OBSERVATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+002038|methodOfWaterTemperatureAndOrOrSalinityMeasurement|table|METHOD OF WATER TEMPERATURE AND/OR SALINITY MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002039|methodOfWetBulbTemperatureMeasurement|table|METHOD OF WET-BULB TEMPERATURE MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002040|methodOfRemovingVelocityAndMotionOfPlatformFromCurrent|table|METHOD OF REMOVING VELOCITY AND MOTION OF PLATFORM FROM CURRENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002041|methodForEstimatingReportsRelatedToSynopticFeatures|table|METHOD FOR ESTIMATING REPORTS RELATED TO SYNOPTIC FEATURES|CODE TABLE|0|0|6|CODE TABLE|0|2
+002042|indicatorForSeaSurfaceCurrentSpeed|table|INDICATOR FOR SEA SURFACE CURRENT SPEED|CODE TABLE|0|0|2|CODE TABLE|0|1
+002044|indicatorForMethodOfCalculatingSpectralWaveData|table|INDICATOR FOR METHOD OF CALCULATING SPECTRAL WAVE DATA|CODE TABLE|0|0|4|CODE TABLE|0|2
+002045|platformType|table|INDICATOR FOR TYPE OF PLATFORM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002046|waveMeasurementInstrumentation|table|WAVE MEASUREMENT INSTRUMENTATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002048|satelliteSensorIndicator|table|SATELLITE SENSOR INDICATOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002049|geostationarySatelliteDataProcessingTechnique|flag|GEOSTATIONARY SATELLITE DATA-PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002050|geostationarySounderSatelliteChannels|flag|GEOSTATIONARY SOUNDER SATELLITE CHANNELS USED|FLAG TABLE|0|0|20|FLAG TABLE|0|7
+002051|indicatorToSpecifyObservingMethodForExtremeTemperatures|table|INDICATOR TO SPECIFY OBSERVING METHOD FOR EXTREME TEMPERATURES|CODE TABLE|0|0|4|CODE TABLE|0|2
+002052|geostationaryImagerSatelliteChannels|flag|GEOSTATIONARY IMAGER SATELLITE CHANNELS USED|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+002053|goesBrightnessTemperatureCharacteristics|table|GOES-I/M BRIGHTNESS TEMPERATURE CHARACTERISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002054|goesSoundingsParameter|table|GOES-I/M SOUNDINGS PARAMETER CHARACTERISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002055|geostationarySoundingsStatisticalParameters|table|GEOSTATIONARY SOUNDINGS STATISTICAL PARAMETERS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002056|geostationarySoundingsAccuracyStatistics|table|GEOSTATIONARY SOUNDINGS ACCURACY STATISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002057|originOfFirstGuessInformationForGoesIOrMSoundings|table|ORIGIN OF FIRST GUESS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002058|validTimesOfFirstGuessInformationForGoesIOrMSoundings|table|VALID TIMES OF FIRST GUESS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002059|originOfAnalysisInformationForGoesIOrMSoundings|table|ORIGIN OF ANALYSIS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002060|originOfSurfaceInformationForGoesIOrMSoundings|table|ORIGIN OF SURFACE INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002061|aircraftNavigationalSystem|table|AIRCRAFT NAVIGATIONAL SYSTEM|CODE TABLE|0|0|3|CODE TABLE|0|1
+002062|aircraftDataRelaySystemType|table|TYPE OF AIRCRAFT DATA RELAY SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002063|aircraftRollAngle|double|AIRCRAFT ROLL ANGLE|deg|2|-18000|16|deg|2|5
+002064|aircraftRollAngleQuality|table|AIRCRAFT ROLL ANGLE QUALITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+002065|acarsGroundReceivingStation|string|ACARS GROUND RECEIVING STATION|CCITT IA5|0|0|40|Character|0|5
+002066|radiosondeGroundReceivingSystem|table|RADIOSONDE GROUND RECEIVING SYSTEM|CODE TABLE|0|0|6|CODE TABLE|0|2
+002067|radiosondeOperatingFrequency|long|RADIOSONDE OPERATING FREQUENCY|Hz|-5|0|15|Hz|-5|5
+002070|originalSpecificationOfLatitudeOrLongitude|table|ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002071|spectrographicWavelength|double|SPECTROGRAPHIC WAVELENGTH|m|13|0|30|m|13|10
+002080|balloonManufacturer|table|BALLOON MANUFACTURER|CODE TABLE|0|0|6|CODE TABLE|0|2
+002081|balloonType|table|TYPE OF BALLOON|CODE TABLE|0|0|5|CODE TABLE|0|2
+002082|weightOfBalloon|double|WEIGHT OF BALLOON|kg|3|0|12|kg|3|4
+002083|balloonShelterType|table|TYPE OF BALLOON SHELTER|CODE TABLE|0|0|4|CODE TABLE|0|2
+002084|typeOfGasUsedInBalloon|table|TYPE OF GAS USED IN BALLOON|CODE TABLE|0|0|4|CODE TABLE|0|2
+002085|amountOfGasUsedInBalloon|double|AMOUNT OF GAS USED IN BALLOON|kg|3|0|13|kg|3|4
+002086|balloonFlightTrainLength|double|BALLOON FLIGHT TRAIN LENGTH|m|1|0|10|m|1|4
+002091|entrySensor4Or20Ma|double|ENTRY SENSOR 4/20 MA|A|4|0|10|A|4|3
+002095|pressureSensorType|table|TYPE OF PRESSURE SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002096|temperatureSensorType|table|TYPE OF TEMPERATURE SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002097|humiditySensorType|table|TYPE OF HUMIDITY SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002098|typeOfWaveSensor|table|TYPE OF WAVE SENSOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002099|polarization|table|POLARISATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+002100|radarConstant|double|RADAR CONSTANT|dB|1|0|12|dB|1|4
+002101|antennaType|table|TYPE OF ANTENNA|CODE TABLE|0|0|4|CODE TABLE|0|2
+002102|antennaHeightAboveTowerBase|long|ANTENNA HEIGHT ABOVE TOWER BASE|m|0|0|8|m|0|3
+002103|radome|flag|RADOME|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+002104|antennaPolarization|table|ANTENNA POLARISATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002105|maximumAntennaGain|long|MAXIMUM ANTENNA GAIN|dB|0|0|6|dB|0|2
+002106|3DbBeamwidth|double|3-DB BEAMWIDTH|deg|1|0|6|deg|1|2
+002107|sidelobeSuppression|long|SIDELOBE SUPPRESSION|dB|0|0|6|dB|0|2
+002108|crosspolDiscriminationOnAxis|long|CROSSPOL DISCRIMINATION (ON AXIS)|dB|0|0|6|dB|0|2
+002109|antennaSpeedAzimuth|double|ANTENNA SPEED (AZIMUTH)|deg/s|2|0|12|deg/s|2|4
+002110|antennaSpeedElevation|double|ANTENNA SPEED (ELEVATION)|deg/s|2|0|12|deg/s|2|4
+002111|radarIncidenceAngle|double|RADAR INCIDENCE ANGLE|deg|1|0|10|deg|1|4
+002112|radarLookAngle|double|RADAR LOOK ANGLE|deg|1|0|12|deg|1|4
+002113|numberOfAzimuthLooks|long|NUMBER OF AZIMUTH LOOKS|Numeric|0|0|4|Numeric|0|2
+002114|antennaEffectiveSurfaceArea|long|ANTENNA EFFECTIVE SURFACE AREA|m2|0|0|15|m2|0|5
+002115|surfaceObservingEquipmentType|table|TYPE OF SURFACE OBSERVING EQUIPMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+002116|percentageOf320MhzBandProcessed|long|PERCENTAGE OF 320 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002117|percentageOf80MhzBandProcessed|long|PERCENTAGE OF 80 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002118|percentageOf20MhzBandProcessed|long|PERCENTAGE OF 20 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002119|ra2InstrumentOperations|table|RA-2 INSTRUMENT OPERATIONS|CODE TABLE|0|0|3|CODE TABLE|0|1
+002120|oceanWaveFrequency|double|OCEAN WAVE FREQUENCY|Hz|3|0|10|Hz|3|4
+002121|meanFrequency|long|MEAN FREQUENCY|Hz|-8|0|7|Hz|-8|3
+002122|frequencyAgilityRange|long|FREQUENCY AGILITY RANGE|Hz|-6|-128|8|Hz|-6|3
+002123|peakPower|long|PEAK POWER|W|-4|0|7|W|-4|3
+002124|averagePower|long|AVERAGE POWER|W|-1|0|7|W|-1|3
+002125|pulseRepetitionFrequency|long|PULSE REPETITION FREQUENCY|Hz|-1|0|8|Hz|-1|3
+002126|pulseWidth|double|PULSE WIDTH|s|7|0|6|s|7|2
+002127|receiverIntermediateFrequency|long|RECEIVER INTERMEDIATE FREQUENCY|Hz|-6|0|7|Hz|-6|3
+002128|intermediateFrequencyBandwidth|long|INTERMEDIATE FREQUENCY BANDWIDTH|Hz|-5|0|6|Hz|-5|2
+002129|minimumDetectableSignal|long|MINIMUM DETECTABLE SIGNAL|dB|0|-150|5|dB|0|3
+002130|dynamicRange|long|DYNAMIC RANGE|dB|0|0|7|dB|0|3
+002131|sensitivityTimeControl|flag|SENSITIVITY TIME CONTROL (STC)|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+002132|azimuthPointingAccuracy|double|AZIMUTH POINTING ACCURACY|deg|2|0|6|deg|2|2
+002133|elevationPointingAccuracy|double|ELEVATION POINTING ACCURACY|deg|2|0|6|deg|2|2
+002134|antennaBeamAzimuth|double|ANTENNA BEAM AZIMUTH|deg|2|0|16|deg|2|5
+002135|antennaElevation|double|ANTENNA ELEVATION|deg|2|-9000|15|deg|2|5
+002136|rangeProcessedByRangeAttenuationCorrection|long|RANGE PROCESSED BY RANGE ATTENUATION CORRECTION|m|-3|0|16|m|-3|5
+002140|satelliteRadarBeamAzimuthAngle|long|SATELLITE RADAR BEAM AZIMUTH ANGLE|deg|0|0|9|deg|0|3
+002141|measurementType|string|MEASUREMENT TYPE|CCITT IA5|0|0|24|Character|0|3
+002142|ozoneInstrument|string|OZONE INSTRUMENT SERIAL NUMBER/ IDENTIFICATION|CCITT IA5|0|0|32|Character|0|4
+002143|ozoneInstrumentType|table|OZONE INSTRUMENT TYPE|CODE TABLE|0|0|7|CODE TABLE|0|3
+002144|lightSourceTypeForBrewerSpectrophotometer|table|LIGHT SOURCE TYPE FOR BREWER SPECTRO PHOTOMETER|CODE TABLE|0|0|4|CODE TABLE|0|2
+002145|wavelengthSettingForDobsonInstruments|table|WAVE LENGTH SETTING FOR DOBSON INSTRUMENTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002146|sourceConditionsForDobsonInstruments|table|SOURCE CONDITIONS FOR DOBSON INSTRUMENTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002148|dataCollectionLocationSystem|table|DATA COLLECTION AND/OR LOCATION SYSTEM|CODE TABLE|0|0|5|CODE TABLE|0|2
+002149|dataBuoyType|table|TYPE OF DATA BUOY|CODE TABLE|0|0|6|CODE TABLE|0|2
+002150|tovsOrAtovsOrAvhrrInstrumentationChannelNumber|table|TOVS/ATOVS/AVHRR INSTRUMENTATION CHANNEL NUMBER|CODE TABLE|0|0|6|CODE TABLE|0|2
+002151|radiometerIdentifier|table|RADIOMETER IDENTIFIER|CODE TABLE|0|0|11|CODE TABLE|0|4
+002152|satelliteInstrumentUsedInDataProcessing|flag|SATELLITE INSTRUMENT USED IN DATA PROCESSING(6)|FLAG TABLE|0|0|31|FLAG TABLE|0|10
+002153|satelliteChannelCentreFrequency|long|SATELLITE CHANNEL CENTRE FREQUENCY|Hz|-8|0|26|Hz|-8|8
+002154|satelliteChannelBandWidth|long|SATELLITE CHANNEL BAND WIDTH|Hz|-8|0|26|Hz|-8|8
+002156|percentageOfValidKuOceanRetrackerMeasurements|long|PERCENTAGE OF VALID KU OCEAN RETRACKER MEASUREMENTS|%|0|0|7|%|0|3
+002157|percentageOfValidSOceanRetrackerMeasurements|long|PERCENTAGE OF VALID S OCEAN RETRACKER MEASUREMENTS|%|0|0|7|%|0|3
+002158|ra2Instrument|flag|RA-2 INSTRUMENT|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+002159|mwrInstrument|flag|MWR INSTRUMENT|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002160|radarWaveLength|table|WAVE LENGTH OF THE RADAR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002163|heightAssignmentMethod|table|HEIGHT ASSIGNMENT METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002164|tracerCorrelationMethod|table|TRACER CORRELATION METHOD|CODE TABLE|0|0|3|CODE TABLE|0|1
+002166|radianceType|table|RADIANCE TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002167|radianceComputationalMethod|table|RADIANCE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002168|hydrostaticPressureOfLowerEndOfCableThermistorString|long|HYDROSTATIC PRESSURE OF LOWER END OF CABLE (THERMISTOR STRING)|Pa|-3|0|16|kPa|0|5
+002169|anemometerType|table|ANEMOMETER TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002172|productTypeForRetrievedAtmosphericGases|table|PRODUCT TYPE FOR RETRIEVED ATMOSPHERIC GASES|CODE TABLE|0|0|8|CODE TABLE|0|3
+002173|squareOfOffNadirAngle|double|SQUARE OF THE OFF NADIR ANGLE (7)|deg2|4|0|10|deg2|4|4
+002174|meanAcrossTrackPixelNumber|long|MEAN ACROSS TRACK PIXEL NUMBER|Numeric|0|0|9|Numeric|0|3
+002175|methodOfPrecipitationMeasurement|table|METHOD OF PRECIPITATION MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002176|methodOfStateOfGroundMeasurement|table|METHOD OF STATE OF GROUND MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002177|methodOfSnowDepthMeasurement|table|METHOD OF SNOW DEPTH MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002178|methodOfLiquidContentMeasurementOfPrecipitation|table|METHOD OF LIQUID CONTENT MEASUREMENT OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002179|skyConditionAlgorithmType|table|TYPE OF SKY CONDITION ALGORITHM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002180|mainPresentWeatherDetectingSystem|table|MAIN PRESENT WEATHER DETECTING SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002181|supplementaryPresentWeatherSensor|flag|SUPPLEMENTARY PRESENT WEATHER SENSOR|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+002182|visibilityMeasurementSystem|table|VISIBILITY MEASUREMENT SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002183|cloudDetectionSystem|table|CLOUD DETECTION SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002184|lightningDetectionSensorType|table|TYPE OF LIGHTNING DETECTION SENSOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002185|methodOfEvaporationMeasurement|table|METHOD OF EVAPORATION MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002186|capabilityToDetectPrecipitationPhenomena|flag|CAPABILITY TO DETECT PRECIPITATION PHENOMENA|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+002187|capabilityToDetectOtherWeatherPhenomena|flag|CAPABILITY TO DETECT OTHER WEATHER PHENOMENA|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+002188|capabilityToDetectObscuration|flag|CAPABILITY TO DETECT OBSCURATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+002189|capabilityToDiscriminateLightningStrikes|flag|CAPABILITY TO DISCRIMINATE LIGHTNING STRIKES|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+002190|lagrangianDrifterSubmergenceTimeSubmerged|long|LAGRANGIAN DRIFTER SUBMERGENCE (% TIME SUBMERGED)|%|0|0|7|%|0|3
+004001|year|long|YEAR|a|0|0|12|a|0|4
+004002|month|long|MONTH|mon|0|0|4|mon|0|2
+004003|day|long|DAY|d|0|0|6|d|0|2
+004004|hour|long|HOUR|h|0|0|5|h|0|2
+004005|minute|long|MINUTE|min|0|0|6|min|0|2
+004006|second|long|SECOND|s|0|0|6|s|0|2
+004007|secondsWithinAMinuteMicrosecond|double|SECONDS WITHIN A MINUTE (MICROSECOND ACCURACY)|s|6|0|26|s|6|8
+004011|timeIncrement|long|TIME INCREMENT|a|0|-1024|11|a|0|4
+004012|timeIncrement|long|TIME INCREMENT|mon|0|-1024|11|mon|0|4
+004013|timeIncrement|long|TIME INCREMENT|d|0|-1024|11|d|0|4
+004014|timeIncrement|long|TIME INCREMENT|h|0|-1024|11|h|0|4
+004015|timeIncrement|long|TIME INCREMENT|min|0|-2048|12|min|0|4
+004016|timeIncrement|long|TIME INCREMENT|s|0|-4096|13|s|0|4
+004017|referenceTimePeriodForAccumulatedOrExtremeData|long|REFERENCE TIME PERIOD FOR ACCUMULATED OR EXTREME DATA|min|0|-1440|12|min|0|4
+004021|timePeriod|long|TIME PERIOD OR DISPLACEMENT|a|0|-1024|11|a|0|4
+004022|timePeriod|long|TIME PERIOD OR DISPLACEMENT|mon|0|-1024|11|mon|0|4
+004023|timePeriod|long|TIME PERIOD OR DISPLACEMENT|d|0|-1024|11|d|0|4
+004024|timePeriod|long|TIME PERIOD OR DISPLACEMENT|h|0|-2048|12|h|0|4
+004025|timePeriod|long|TIME PERIOD OR DISPLACEMENT|min|0|-2048|12|min|0|4
+004026|timePeriod|long|TIME PERIOD OR DISPLACEMENT|s|0|-4096|13|s|0|4
+004031|durationOfTimeRelatingToFollowingValue|long|DURATION OF TIME RELATING TO FOLLOWING VALUE|h|0|0|8|h|0|3
+004032|durationOfTimeRelatingToFollowingValue|long|DURATION OF TIME RELATING TO FOLLOWING VALUE|min|0|0|6|min|0|2
+004041|timeDifferenceUtcLmt|long|TIME DIFFERENCE, UTC -LMT (SEE NOTE 6)|min|0|-1440|12|min|0|4
+004043|dayOfYear|long|DAY OF THE YEAR|d|0|0|9|d|0|3
+004051|principalTimeOfDailyReadingOfMaximumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MAXIMUM TEMPERATURE|h|0|0|5|h|0|2
+004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2
+004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2
+004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
+004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
+004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
+004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
+004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2
+004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
+005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005012|latitudeIncrement|double|LATITUDE INCREMENT (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005015|latitudeDisplacement|double|LATITUDE DISPLACEMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005016|latitudeDisplacement|double|LATITUDE DISPLACEMENT (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005021|bearingOrAzimuth|double|BEARING OR AZIMUTH|deg|2|0|16|deg|2|5
+005022|solarAzimuth|double|SOLAR AZIMUTH|deg|2|0|16|deg|2|5
+005023|sunToSatelliteAzimuthDifference|double|SUN TO SATELLITE AZIMUTH DIFFERENCE|deg|1|-1800|12|deg|1|4
+005030|directionSpectral|long|DIRECTION (SPECTRAL)|deg|0|0|12|deg|0|4
+005031|rowNumber|long|ROW NUMBER|Numeric|0|0|12|Numeric|0|4
+005033|pixelSizeOnHorizontal1|long|PIXEL SIZE ON HORIZONTAL - 1|m|-1|0|16|m|-1|5
+005034|alongTrackRowNumber|long|ALONG TRACK ROW NUMBER|Numeric|0|0|11|Numeric|0|4
+005036|shipTransectNumberAccordingToSoop|long|SHIP TRANSECT NUMBER ACCORDING TO SOOP|Numeric|0|0|7|Numeric|0|2
+005040|orbitNumber|long|ORBIT NUMBER|Numeric|0|0|24|Numeric|0|8
+005041|scanLineNumber|long|SCAN LINE NUMBER|Numeric|0|0|8|Numeric|0|3
+005042|channelNumber|long|CHANNEL NUMBER|Numeric|0|0|6|Numeric|0|2
+005043|fieldOfViewNumber|long|FIELD OF VIEW NUMBER|Numeric|0|0|8|Numeric|0|3
+005044|satelliteCycleNumber|long|SATELLITE CYCLE NUMBER|Numeric|0|0|11|Numeric|0|4
+005052|channelNumberIncrement|long|CHANNEL NUMBER INCREMENT|Numeric|0|0|5|Numeric|0|2
+005053|fieldOfViewNumberIncrement|long|FIELD OF VIEW NUMBER INCREMENT|Numeric|0|0|5|Numeric|0|2
+005060|yAngularPositionFromCentreOfGravity|double|Y ANGULAR POSITION FROM CENTRE OF GRAVITY|deg|6|-8000000|24|deg|6|8
+005061|zAngularPositionFromCentreOfGravity|double|Z ANGULAR POSITION FROM CENTRE OF GRAVITY|deg|6|-8000000|24|deg|6|8
+006001|longitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006002|longitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006011|longitudeIncrement|double|LONGITUDE INCREMENT (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006012|longitudeIncrement|double|LONGITUDE INCREMENT (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006015|longitudeDisplacement|double|LONGITUDE DISPLACEMENT (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006016|longitudeDisplacement|double|LONGITUDE DISPLACEMENT (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006021|distance|long|DISTANCE|m|-1|0|13|m|-1|4
+006030|waveNumberSpectral|double|WAVE NUMBER (SPECTRAL)|rad/m|5|0|13|rad/m|5|4
+006031|columnNumber|long|COLUMN NUMBER|Numeric|0|0|12|Numeric|0|4
+006033|pixelSizeOnHorizontal2|long|PIXEL SIZE ON HORIZONTAL - 2|m|-1|0|16|m|-1|5
+006034|crossTrackCellNumber|long|CROSS-TRACK CELL NUMBER|Numeric|0|0|7|Numeric|0|3
+006040|radiusOfConfidence|long|RADIUS OF CONFIDENCE|m|0|0|13|m|0|4
+007001|heightOfStation|long|HEIGHT OF STATION (SEE NOTE 1)|m|0|-400|15|m|0|5
+007002|height|long|HEIGHT OR ALTITUDE|m|-1|-40|16|m|-1|5
+007003|geopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|m2 s-2|-1|6
+007004|pressure|long|PRESSURE|Pa|-1|0|14|Pa|-1|5
+007005|heightIncrement|long|HEIGHT INCREMENT|m|0|-400|12|m|0|4
+007006|heightAboveStation|long|HEIGHT ABOVE STATION|m|0|0|15|m|0|5
+007007|height|long|HEIGHT|m|0|-1000|17|m|0|6
+007008|geopotential|long|GEOPOTENTIAL|m2 s-2|0|-10000|20|m2 s-2|0|7
+007009|geopotentialHeight|long|GEOPOTENTIAL HEIGHT|gpm|0|-1000|17|gpm|0|5
+007010|flightLevel|long|FLIGHT LEVEL|m|0|-1024|16|ft|-1|5
+007012|gridPointAltitude|double|GRID POINT ALTITUDE|m|2|-50000|20|m|2|7
+007021|elevation|double|ELEVATION (SEE NOTE 2)|deg|2|-9000|15|deg|2|5
+007022|solarElevation|double|SOLAR ELEVATION|deg|2|-9000|15|deg|2|5
+007024|satelliteZenithAngle|double|SATELLITE ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+007025|solarZenithAngle|double|SOLAR ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+007026|satelliteZenithAngle|double|SATELLITE ZENITH ANGLE|deg|4|-900000|21|deg|4|7
+007030|heightOfStationGroundAboveMeanSeaLevel|double|HEIGHT OF STATION GROUND ABOVE MEAN SEA LEVEL (SEE NOTE 3)|m|1|-4000|17|m|1|5
+007031|heightOfBarometerAboveMeanSeaLevel|double|HEIGHT OF BAROMETER ABOVE MEAN SEA LEVEL (SEE NOTE 4)|m|1|-4000|17|m|1|5
+007032|heightOfSensorAboveLocalGroundOrDeckOfMarinePlatform|double|HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM)|m|2|0|16|m|2|5
+007033|heightOfSensorAboveWaterSurface|double|HEIGHT OF SENSOR ABOVE WATER SURFACE (SEE NOTE 6)|m|1|0|12|m|1|4
+007040|impactParameter|double|IMPACT PARAMETER (SEE NOTE 8)|m|1|62000000|22|m|1|8
+007061|depthBelowLandSurface|double|DEPTH BELOW LAND SURFACE|m|2|0|14|m|2|5
+007062|depthBelowWaterSurface|double|DEPTH BELOW SEA/WATER SURFACE|m|1|0|17|m|1|6
+007063|depthBelowWaterSurface|double|DEPTH BELOW SEA/WATER SURFACE|m|2|0|20|m|2|7
+007064|representativeHeightOfSensorAboveStation|long|REPRESENTATIVE HEIGHT OF SENSOR ABOVE STATION (SEE NOTE 7)|m|0|0|4|m|0|2
+007065|waterPressure|long|WATER PRESSURE|Pa|-3|0|17|Pa|0|6
+007070|drogueDepth|long|DROGUE DEPTH|m|0|0|10|m|0|4
+008001|verticalSoundingSignificance|flag|VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|7|FLAG TABLE|0|3
+008002|verticalSignificanceSurfaceObservations|table|VERTICAL SIGNIFICANCE (SURFACE OBSERVATIONS)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008003|verticalSignificanceSatelliteObservations|table|VERTICAL SIGNIFICANCE (SATELLITE OBSERVATIONS)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008004|phaseOfAircraftFlight|table|PHASE OF AIRCRAFT FLIGHT|CODE TABLE|0|0|3|CODE TABLE|0|1
+008005|meteorologicalAttributeSignificance|table|METEOROLOGICAL ATTRIBUTE SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008006|ozoneVerticalSoundingSignificance|flag|OZONE VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+008007|dimensionalSignificance|table|DIMENSIONAL SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008008|radiationVerticalSoundingSignificance|flag|RADIATION VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+008009|detailedPhaseOfFlight|table|DETAILED PHASE OF FLIGHT|CODE TABLE|0|0|4|CODE TABLE|0|2
+008010|surfaceQualifierForTemperatureData|table|SURFACE QUALIFIER (TEMPERATURE DATA)|CODE TABLE|0|0|5|CODE TABLE|0|2
+008011|meteorologicalFeature|table|METEOROLOGICAL FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008012|landOrSeaQualifier|table|LAND/SEA QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008013|dayOrNightQualifier|table|DAY/NIGHT QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008014|qualifierForRunwayVisualRange|table|QUALIFIER FOR RUNWAY VISUAL RANGE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008016|changeQualifierOfATrendTypeForecastOrAnAerodromeForecast|table|CHANGE QUALIFIER OF A TREND-TYPE FORECAST OR AN AERODROME FORECA|CODE TABLE|0|0|3|CODE TABLE|0|1
+008017|qualifierOfTimeWhenForecastChangeExpected|table|QUALIFIER OF THE TIME WHEN THE FORECAST CHANGE IS EXPECTED|CODE TABLE|0|0|2|CODE TABLE|0|1
+008018|seawindsLandOrIceSurfaceType|flag|SEAWINDS LAND/ICE SURFACE TYPE|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+008019|qualifierForFollowingCentreIdentifier|table|QUALIFIER FOR FOLLOWING CENTRE IDENTIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008020|totalNumberOfMissingEntitiesWithRespectToAccumulationOrAverage|long|TOTAL NUMBER OF MISSING ENTITIES (WITH RESPECT TO ACCUMULATION O|Numeric|0|0|16|Numeric|0|5
+008021|timeSignificance|table|TIME SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+008022|totalNumberWithRespectToAccumulationOrAverage|long|TOTAL NUMBER (WITH RESPECT TO ACCUMULATION OR AVERAGE)|Numeric|0|0|16|Numeric|0|5
+008023|firstOrderStatistics|table|FIRST ORDER STATISTICS|CODE TABLE|0|0|6|CODE TABLE|0|2
+008024|differenceStatistics|table|DIFFERENCE STATISTICS|CODE TABLE|0|0|6|CODE TABLE|0|2
+008025|timeDifferenceQualifier|table|TIME DIFFERENCE QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008026|matrixSignificance|table|MATRIX SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008029|surfaceType|table|REMOTLY SENSED SURFACE TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+008030|manualOnCodesVolumeI1SectionCCodeTableFromWhichDataAreDerived|long|MANUAL ON CODES (VOLUME I.1, SECTION C) CODE TABLE FROM WHICH DA|Numeric|0|0|13|Numeric|0|4
+008031|dataCategoryCrexTableA|long|DATA CATEGORY CREX TABLE A|Numeric|0|0|8|Numeric|0|3
+008033|methodOfDerivationOfPercentageConfidence|table|METHOD OF DERIVATION OF PERCENTAGE CONFIDENCE|CODE TABLE|0|0|7|CODE TABLE|0|3
+008035|monitoringExerciseType|table|TYPE OF MONITORING EXERCISE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008036|typeOfCentreOrStationPerformingMonitoring|table|TYPE OF CENTRE OR STATION PERFORMING MONITORING|CODE TABLE|0|0|3|CODE TABLE|0|1
+008039|timeSignificanceAviationForecast|table|TIME SIGNIFICANCE ( AVIATION FORECAST)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008040|flightLevelSignificance|table|FLIGHT LEVEL SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008041|dataSignificance|table|DATA SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+008042|extendedVerticalSoundingSignificance|flag|EXTENDED VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+008043|atmosphericChemical|table|ATMOSPHERIC CHEMICAL OR PHISICAL CONSTITUENT TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+008044|casRegistryNumber|string|CAS REGISTRY NUMBER|CCITT IA5|0|0|88|Character|0|11
+008045|particulateMatterCharacterization|table|PARTICULATE MATTER CHARACTERIZATION|CODE TABLE|0|0|8|CODE TABLE|0|3
+008049|numberOfObservations|long|NUMBER OF OBSERVATIONS|Numeric|0|0|8|Numeric|0|3
+008050|qualifierForNumberOfMissingValuesInCalculationOfStatistic|table|QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATIST|CODE TABLE|0|0|4|CODE TABLE|0|2
+008051|qualifierForNumberOfMissingValuesInCalculationOfStatistic|table|QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATIST|CODE TABLE|0|0|3|CODE TABLE|0|1
+008052|conditionForWhichNumberOfDaysOfOccurrenceFollows|table|CONDITION FOR WHICH NUMBER OF DAYS OF OCCURRENCE FOLLOWS|CODE TABLE|0|0|5|CODE TABLE|0|2
+008053|dayOfOccurrenceQualifier|table|DAY OF OCCURRENCE QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008054|qualifierForWindSpeedOrWindGusts|table|QUALIFIER FOR WIND SPEED OR WIND GUST|CODE TABLE|0|0|3|CODE TABLE|0|1
+008060|sampleScanningModeSignificance|table|SAMPLE SCANNING MODE SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008065|sunGlintIndicator|table|SUN-GLINT INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+008066|semiTransparencyIndicator|table|SEMI-TRANSPARENCY INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+008070|tovsOrAtovsProductQualifier|table|TOVS/ATOVS PRODUCT QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008072|pixelType|table|PIXEL(S) TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008074|altimeterEchoType|table|ALTIMETER ECHO TYPE|CODE TABLE|0|0|2|CODE TABLE|0|1
+008075|orbitQualifier|table|ASCENDING/DESCENDING ORBIT QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008076|band|table|TYPE OF BAND|CODE TABLE|0|0|6|CODE TABLE|0|2
+008077|radiometerSensedSurfaceType|table|RADIOMETER SENSED SURFACE TYPE|CODE TABLE|0|0|7|CODE TABLE|0|3
+008079|productStatus|table|PRODUCT STATUS|CODE TABLE|0|0|4|CODE TABLE|0|2
+008080|qualifierForGtsppQualityFlag|table|QUALIFIER FOR GTSPP QUALITY FLAG|CODE TABLE|0|0|6|CODE TABLE|0|2
+008081|equipmentType|table|TYPE OF EQUIPMENT|CODE TABLE|0|0|6|CODE TABLE|0|2
+008082|modificationOfSensorHeightToAnotherValue|table|(CBS) ARTIFICIAL CORRECTION OF SENSOR HEIGHT TO ANOTHER VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008083|nominalValueIndicator|flag|NOMINAL VALUE INDICATOR|FLAG TABLE|0|0|15|FLAG TABLE|0|5
+008085|beamIdentifier|table|BEAM IDENTIFIER|CODE TABLE|0|0|3|CODE TABLE|0|1
+008090|decimalScaleOfFollowingSignificands|long|DECIMAL SCALE|Numeric|0|-127|8|Numeric|0|3
+010001|heightOfLandSurface|long|HEIGHT OF LAND SURFACE|m|0|-400|15|m|0|5
+010002|height|long|HEIGHT|m|-1|-40|16|m|-1|5
+010003|geopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|m2 s-2|-1|6
+010004|pressure|long|PRESSURE|Pa|-1|0|14|Pa|-1|5
+010007|height|long|HEIGHT|m|0|-1000|17|m|0|6
+010008|geopotential|long|GEOPOTENTIAL|m2 s-2|0|-10000|20|m2 s-2|0|7
+010009|geopotentialHeight|long|GEOPOTENTIAL HEIGHT|gpm|0|-1000|17|gpm|0|5
+010010|minimumPressureReducedToMeanSeaLevel|long|MINIMUM PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010011|maximumPressureReducedToMeanSeaLevel|long|MAXIMUM PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010031|DistanceFromEarthCentreInDirectionOfNorthPole|double|IN DIRECTION OF THE NORTH POLE, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10
+010032|satelliteDistanceToEarthCentre|double|SATELLITE DISTANCE TO EARTH'S CENTRE|m|1|0|27|m|2|9
+010033|altitudePlatformToEllipsoid|double|ALTITUDE (PLATFORM TO ELLIPSOID)|m|1|0|27|m|2|9
+010034|earthRadius|double|EARTH RADIUS|m|1|0|27|m|2|9
+010035|earthLocalRadiusOfCurvature|double|EARTH'S LOCAL RADIUS OF CURVATURE|m|1|62000000|22|m|1|8
+010036|geoidUndulation|double|GEOID UNDULATION (SEE NOTE 4)|m|2|-15000|15|m|2|6
+010040|numberOfRetrievedLayers|long|NUMBER OF RETRIEVED LAYERS|Numeric|0|0|10|Numeric|0|4
+010050|standardDeviationAltitude|double|STANDARD DEVIATION ALTITUDE|m|2|0|16|m|2|5
+010051|pressureReducedToMeanSeaLevel|long|PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010052|altimeterSettingQnh|long|ALTIMETER SETTING (QNH)|Pa|-1|0|14|Pa|-1|5
+010060|pressureChange|long|PRESSURE CHANGE|Pa|-1|-1024|11|Pa|-1|4
+010061|3HourPressureChange|long|3-HOUR PRESSURE CHANGE|Pa|-1|-500|10|Pa|-1|4
+010062|24HourPressureChange|long|24-HOUR PRESSURE CHANGE|Pa|-1|-1000|11|Pa|-1|4
+010063|characteristicOfPressureTendency|table|CHARACTERISTIC OF PRESSURE TENDENCY|CODE TABLE|0|0|4|CODE TABLE|0|2
+010064|sigmetCruisingLevel|table|SIGMET CRUISING LEVEL|CODE TABLE|0|0|3|CODE TABLE|0|1
+010070|indicatedAircraftAltitude|long|INDICATED AIRCRAFT ALTITUDE|m|0|-400|16|m|0|5
+010080|viewingZenithAngle|double|VIEWING ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+010081|cogAltitudeAboveReferenceEllipsoid|double|ALTITUDE OF COG ABOVE REFERENCE ELLIPSOID|m|3|0|31|m|3|10
+010082|instantaneousAltitudeRate|double|INSTANTANEOUS ALTITUDE RATE|m/s|3|-65536|17|m/s|3|6
+010083|squaredOffNadirAngleOfSatelliteFromPlatformData|double|SQUARED OFF NADIR ANGLE OF THE SATELLITE FROM PLATFORM DATA|deg2|2|0|16|deg2|2|5
+010084|squaredOffNadirAngleOfSatelliteFromWaveformData|double|SQUARED OFF NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA|deg2|2|0|16|deg2|2|5
+010085|meanSeaSurfaceHeight|double|MEAN SEA SURFACE HEIGHT|m|3|-131072|18|m|3|6
+010086|geoidHeight|double|GEOID'S HEIGHT|m|3|-131072|18|m|3|6
+010087|oceanDepthOrLandElevation|double|OCEAN DEPTH/LAND ELEVATION|m|1|-131072|18|m|3|6
+010088|totalGeocentricOceanTideHeightSolution1|double|TOTAL GEOCENTRIC OCEAN TIDE HEIGHT SOLUTION 1|m|3|-32768|16|m|3|5
+010089|totalGeocentricOceanTideHeightSolution2|double|TOTAL GEOCENTRIC OCEAN TIDE HEIGHT SOLUTION 2|m|3|-32768|16|m|3|5
+010090|longPeriodTideHeight|double|LONG PERIOD TIDE HEIGHT|m|3|-32768|16|m|3|5
+010091|tidalLoadingHeight|double|TIDAL LOADING HEIGHT|m|3|-32768|16|m|3|5
+010092|solidEarthTideHeight|double|SOLID EARTH TIDE HEIGHT|m|3|-32768|16|m|3|5
+010093|geocentricPoleTideHeight|double|GEOCENTRIC POLE TIDE HEIGHT|m|3|-32768|16|m|3|5
+010095|heightOfAtmosphere|long|HEIGHT OF ATMOSPHERE USED|m|0|0|16|m|0|5
+010096|meanDynamicTopography|double|MEAN DYNAMIC TOPOGRAPHY|m|3|-131072|18|NA|0|0
+010097|meanSeaSurfaceHeightFromAltimeterOnly|double|MEAN SEA SURFACE HEIGHT FROM ALTIMETER ONLY|m|3|-131072|18|NA|0|0
+010098|loadingTideHeightGeocentricOceanTideSolution1|double|LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 1|m|4|-2000|12|NA|0|0
+010099|loadingTideHeightGeocentricOceanTideSolution2|double|LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 2|m|4|-2000|12|NA|0|0
+010100|nonEquilibriumLongPeriodTideHeight|double|NON-EQUILIBRIUM LONG PERIOD TIDE HEIGHT|m|4|-2000|12|NA|0|0
+010101|squaredOffNadirAngleOfSatelliteFromWaveformData|double|SQUARED OFF NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA|deg2|2|-32768|16|deg2|2|5
+011001|windDirection|long|WIND DIRECTION|deg|0|0|9|deg|0|3
+011002|windSpeed|double|WIND SPEED|m/s|1|0|12|m/s|1|4
+011003|u|double|U-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011004|v|double|V-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011005|w|double|W-COMPONENT|Pa/s|1|-512|10|Pa/s|1|4
+011006|w|double|W-COMPONENT|m/s|2|-4096|13|m/s|2|4
+011010|windDirectionAssociatedWithWindSpeedWhichFollows|long|WIND DIRECTION ASSOCIATED WITH WIND SPEED WHICH FOLLOWS|deg|0|0|9|deg|0|3
+011011|windDirectionAt10M|long|WIND DIRECTION AT 10 M|deg|0|0|9|deg|0|3
+011012|windSpeedAt10M|double|WIND SPEED AT 10 M|m/s|1|0|12|m/s|1|4
+011013|windDirectionAt5M|long|WIND DIRECTION AT 5 M|deg|0|0|9|deg|0|3
+011014|windSpeedAt5M|double|WIND SPEED AT 5 M|m/s|1|0|12|m/s|1|4
+011016|extremeCounterclockwiseWindDirectionOfAVariableWind|long|EXTREME COUNTERCLOCKWISE WIND DIRECTION OF A VARIABLE WIND|deg|0|0|9|deg|0|3
+011017|extremeClockwiseWindDirectionOfAVariableWind|long|EXTREME CLOCKWISE WIND DIRECTION OF A VARIABLE WIND|deg|0|0|9|deg|0|3
+011019|steadinessOfWind|long|STEADINESS OF WIND (6)|%|0|0|7|%|0|3
+011021|relativeVorticity|double|RELATIVE VORTICITY|/s|9|-65536|17|/s|9|6
+011022|divergence|double|DIVERGENCE|/s|9|-65536|17|/s|9|6
+011023|velocityPotential|long|VELOCITY POTENTIAL|m2/s|-2|-65536|17|m2/s|-2|6
+011030|extendedDegreeOfTurbulence|table|EXTENDED DEGREE OF TURBULENCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+011031|degreeOfTurbulence|table|DEGREE OF TURBULENCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+011032|heightOfBaseOfTurbulence|long|HEIGHT OF BASE OF TURBULENCE|m|-1|-40|16|m|-1|5
+011033|heightOfTopOfTurbulence|long|HEIGHT OF TOP OF TURBULENCE|m|-1|-40|16|m|-1|5
+011034|verticalGustVelocity|double|VERTICAL GUST VELOCITY|m/s|1|-1024|11|m/s|1|4
+011035|verticalGustAcceleration|double|VERTICAL GUST ACCELERATION|m s-2|2|-8192|14|m s-2|2|5
+011036|maximumDerivedEquivalentVerticalGustSpeed|double|MAXIMUM DERIVED EQUIVALENT VERTICAL GUST SPEED|m/s|1|0|10|m/s|1|4
+011037|turbulenceIndex|table|TURBULENCE INDEX|CODE TABLE|0|0|6|CODE TABLE|0|2
+011038|timeOfOccurrenceOfPeakEddyDissipationRate|table|TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|5|CODE TABLE|0|2
+011039|extendedTimeOfOccurrenceOfPeakEddyDissipationRate|table|EXTENDED TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|6|CODE TABLE|0|2
+011040|maximumWindSpeedMeanWind|double|MAXIMUM WIND SPEED (MEAN WIND)|m/s|1|0|12|m/s|1|4
+011041|maximumWindGustSpeed|double|MAXIMUM WIND GUST SPEED|m/s|1|0|12|m/s|1|4
+011042|maximumWindSpeed10MinuteMeanWind|double|MAXIMUM WIND SPEED (10-MIN MEAN WIND)|m/s|1|0|12|m/s|1|4
+011043|maximumWindGustDirection|long|MAXIMUM WIND GUST DIRECTION|deg|0|0|9|deg|0|3
+011044|meanWindDirectionForSurfaceTo1500M|long|MEAN WIND DIRECTION FOR SURFACE - 1500 M (5000 FEET)|deg|0|0|9|deg|0|3
+011045|meanWindSpeedForSurfaceTo1500M|double|MEAN WIND SPEED FOR SURFACE - 1500 M (5000 FEET)|m/s|1|0|12|m/s|1|4
+011046|maximumInstantaneousWindSpeed|double|MAXIMUM INSTANTANEOUS WIND SPEED|m/s|1|0|12|m/s|1|4
+011047|maximumInstantaneousWindSpeedOver10Minutes|double|MAXIMUM INSTANTANEOUS WIND SPEED OVER 10 MINUTES|m/s|1|0|12|m/s|1|4
+011049|windDirectionStandardDeviation|long|STANDARD DEVIATION OF WIND DIRECTION|deg|0|0|9|deg|0|3
+011050|standardDeviationOfHorizontalWindSpeed|double|STANDARD DEVIATION OF HORIZONTAL WIND SPEED|m/s|1|0|12|m/s|1|4
+011051|standardDeviationOfVerticalWindSpeed|double|STANDARD DEVIATION OF VERTICAL WIND SPEED|m/s|1|0|8|m/s|1|3
+011052|formalUncertaintyInWindSpeed|double|FORMAL UNCERTAINTY IN WIND SPEED|m/s|2|0|13|m/s|2|5
+011053|formalUncertaintyInWindDirection|double|FORMAL UNCERTAINTY IN WIND DIRECTION|deg|2|0|15|deg|2|5
+011054|meanWindDirectionFor1500To3000M|long|MEAN WIND DIRECTION FOR 1500 M - 3000 M|deg|0|0|9|deg|0|3
+011055|meanWindSpeedFor1500To3000M|double|MEAN WIND SPEED FOR 1500 M - 3000 M|m/s|1|0|12|m/s|1|4
+011061|absoluteWindShearIn1KmLayerBelow|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW|m/s|1|0|12|m/s|1|4
+011062|absoluteWindShearIn1KmLayerAbove|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE|m/s|1|0|12|m/s|1|4
+011070|designatorOfRunwayAffectedByWindShearIncludingAll|string|DESIGNATOR OF THE RUNWAY AFFECTED BY WIND SHEAR (INCLUDING ALL)|CCITT IA5|0|0|32|Character|0|4
+011071|turbulentVerticalMomentumFlux|double|TURBULENT VERTICAL MOMENTUM FLUX|m2 s-2|3|-128|14|m2 s-2|3|5
+011072|turbulentVerticalBuoyancyFlux|double|TURBULENT VERTICAL BUOYANCY FLUX|K m s-1|3|-128|11|K m s-1|3|4
+011073|turbulentKineticEnergy|double|TURBULENT KINETIC ENERGY|m2 s-2|2|-1024|13|m2 s-2|2|4
+011074|dissipationEnergy|double|DISSIPATION ENERGY|m2 s-2|2|-1024|10|m2 s-2|2|4
+011075|meanTurbulenceIntensityEddyDissipationRate|double|MEAN TURBULENCE INTENSITY (EDDY DISSIPATION RATE)|m2/3 s-1|2|0|8|m2/3 s-1|2|3
+011076|peakTurbulenceIntensityEddyDissipationRate|double|PEAK TURBULENCE INTENSITY (EDDY DISSIPATION RATE)|m2/3 s-1|2|0|8|m2/3 s-1|2|3
+011077|reportingIntervalOrAveragingTimeForEddyDissipationRate|long|REPORTING INTERVAL OR AVERAGING TIME FOR EDDY DISSIPATION RATE|s|0|0|12|s|0|4
+011081|modelWindDirectionAt10M|double|MODEL WIND DIRECTION AT 10M|deg|2|0|16|deg|2|5
+011082|modelWindSpeedAt10M|double|MODEL WIND SPEED AT 10M|m/s|2|0|14|m/s|2|4
+011083|windSpeed|long|WIND SPEED|km/h|0|0|9|km/h|0|3
+011084|windSpeed|long|WIND SPEED|kt|0|0|8|kt|0|3
+011085|maximumWindGustSpeed|long|MAXIMUM WIND GUST SPEED|km/h|0|0|9|km/h|0|3
+011086|maximumWindGustSpeed|long|MAXIMUM WIND GUST SPEED|kt|0|0|8|kt|0|3
+011095|u|double|U COMPONENT OF THE MODEL WIND VECTOR|m/s|1|-4096|13|m/s|1|4
+011096|v|double|V COMPONENT OF THE MODEL WIND VECTOR|m/s|1|-4096|13|m/s|1|4
+011097|windSpeedFromAltimeter|double|WIND SPEED FROM ALTIMETER|m/s|2|0|12|NA|0|0
+011098|windSpeedFromRadiometer|double|WIND SPEED FROM RADIOMETER|m/s|2|0|12|NA|0|0
+012001|airTemperature|double|TEMPERATURE/DRY-BULB TEMPERATURE|K|1|0|12|C|1|3
+012002|wetBulbTemperature|double|WET-BULB TEMPERATURE|K|1|0|12|C|1|3
+012003|dewpointTemperature|double|DEW-POINT TEMPERATURE|K|1|0|12|C|1|3
+012004|airTemperatureAt2M|double|DRY-BULB TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012005|wetBulbTemperatureAt2M|double|WET-BULB TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012006|dewpointTemperatureAt2M|double|DEW-POINT TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012007|virtualTemperature|double|VIRTUAL TEMPERATURE|K|1|0|12|C|1|3
+012011|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|C|1|3
+012012|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|C|1|3
+012013|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE, PAST 12 HOURS|K|1|0|12|C|1|3
+012014|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|1|0|12|C|1|3
+012015|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|1|0|12|C|1|3
+012016|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|1|0|12|C|1|3
+012017|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|1|0|12|C|1|3
+012021|maximumTemperatureAt2M|double|MAXIMUM TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012022|minimumTemperatureAt2M|double|MINIMUM TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012023|temperature|long|TEMPERATURE|C|0|-99|8|C|0|2
+012024|dewpointTemperature|long|DEW POINT TEMPERATURE|C|0|-99|8|C|0|2
+012030|soilTemperature|double|SOIL TEMPERATURE|K|1|0|12|C|1|3
+012049|temperatureChangeOverSpecifiedPeriod|long|TEMPERATURE CHANGE OVER SPECIFIED PERIOD|K|0|-30|6|C|0|2
+012051|standardDeviationTemperature|double|STANDARD DEVIATION TEMPERATURE|K|1|0|10|C|1|3
+012052|highestDailyMeanTemperature|double|HIGHEST DAILY MEAN TEMPERATURE|K|1|0|12|C|1|3
+012053|lowestDailyMeanTemperature|double|LOWEST DAILY MEAN TEMPERATURE|K|1|0|12|C|1|3
+012061|skinTemperature|double|SKIN TEMPERATURE|K|1|0|12|C|1|3
+012062|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|1|0|12|C|1|3
+012063|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|1|0|12|C|1|3
+012064|instrumentTemperature|double|INSTRUMENT TEMPERATURE|K|1|0|12|K|1|4
+012065|standardDeviationBrightnessTemperature|double|STANDARD DEVIATION BRIGHTNESS TEMPERATURE|K|1|0|12|K|1|4
+012070|warmLoadTemperature|double|WARM LOAD TEMPERATURE|K|2|0|16|K|2|5
+012071|coldestClusterTemperature|double|COLDEST CLUSTER TEMPERATURE|K|1|0|12|K|1|4
+012072|radiance|double|RADIANCE|W m-2 sr-1|6|0|31|W m-2 sr-1|6|9
+012073|temperature|double|TEMPERATURE|K|2|0|16|K|1|4
+012075|spectralRadiance|long|SPECTRAL RADIANCE|W m-3 sr-1|-3|0|16|W m-3 sr-1|-3|5
+012076|radiance|double|RADIANCE|W m-2 sr-1|3|0|16|W m-2 sr-1|3|5
+012080|brightnessTemperatureRealPart|double|BRIGHTNESS TEMPERATURE REAL PART|K|2|-10000|16|K|2|5
+012081|brightnessTemperatureImaginaryPart|double|BRIGHTNESS TEMPERATURE IMAGINARY PART|K|2|-10000|16|K|2|5
+012082|pixelRadiometricAccuracy|double|PIXEL RADIOMETRIC ACCURACY|K|2|0|12|K|2|4
+012101|airTemperature|double|TEMPERATURE/DRY-BULB TEMPERATURE|K|2|0|16|C|2|4
+012102|wetBulbTemperature|double|WET-BULB TEMPERATURE|K|2|0|16|C|2|4
+012103|dewpointTemperature|double|DEW-POINT TEMPERATURE|K|2|0|16|C|2|4
+012104|airTemperatureAt2M|double|DRY-BULB TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012105|webBulbTemperatureAt2M|double|WEB-BULB TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012106|dewpointTemperatureAt2M|double|DEW-POINT TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012107|virtualTemperature|double|VIRTUAL TEMPERATURE|K|2|0|16|C|2|4
+012111|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|2|0|16|C|2|4
+012112|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|2|0|16|C|2|4
+012113|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE, PAST 12 HOURS|K|2|0|16|C|2|4
+012114|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2M, PAST 12 HOURS|K|2|0|16|C|2|4
+012115|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2M, PAST 12 HOURS|K|2|0|16|C|2|4
+012116|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2M, PAST 24 HOURS|K|2|0|16|C|2|4
+012117|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2M, PAST 24 HOURS|K|2|0|16|C|2|4
+012118|maximumTemperatureAtHeightSpecifiedPast24Hours|double|MAXIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS|K|2|0|16|C|2|4
+012119|minimumTemperatureAtHeightSpecifiedPast24Hours|double|MINIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS|K|2|0|16|C|2|4
+012121|groundMinimumTemperature|double|GROUND MINIMUM TEMPERATURE|K|2|0|16|C|2|4
+012122|groundMinimumTemperatureOfPrecedingNight|double|GROUND MINIMUM TEMPERATURE OF THE PRECEDING NIGHT|K|2|0|16|C|2|4
+012130|soilTemperature|double|SOIL TEMPERATURE|K|2|0|16|C|2|4
+012151|dailyMeanTemperatureStandardDeviation|double|STANDARD DEVIATION OF DAILY MEAN TEMPERATURE|K|2|0|12|C|2|4
+012152|highestDailyMeanTemperature|double|HIGHEST DAILY MEAN TEMPERATURE|K|2|0|16|C|2|4
+012153|lowestDailyMeanTemperature|double|LOWEST DAILY MEAN TEMPERATURE|K|2|0|16|C|2|4
+012161|skinTemperature|double|SKIN TEMPERATURE|K|2|0|16|C|2|4
+012162|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|2|0|16|C|2|4
+012163|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|2|0|16|C|2|4
+012164|instrumentTemperature|double|INSTRUMENT TEMPERATURE|K|2|0|16|K|2|5
+012165|directSunBrightnessTemperature|long|DIRECT SUN BRIGHTNESS TEMPERATURE|K|0|0|23|K|0|7
+012166|snapshotAccuracy|double|SNAPSHOT ACCURACY|K|1|-4000|13|K|1|4
+012167|radiometricAccuracyPurePolarization|double|RADIOMETRIC ACCURACY (PURE POLARISATION)|K|1|0|9|K|1|3
+012168|radiometricAccuracyCrossPolarization|double|RADIOMETRIC ACCURACY ( CRESS POLARISATION )|K|1|0|9|K|1|3
+012171|coldestClusterTemperature|double|COLDEST CLUSTER TEMPERATURE|K|2|0|16|K|2|5
+012180|averaged12MicronBtForAllClearPixelsAtNadir|double|AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012181|averaged11MicronBtForAllClearPixelsAtNadir|double|AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012182|averaged37MicronBtForAllClearPixelsAtNadir|double|AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012183|averaged12MicronBtForAllClearPixelsForwardView|double|AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012184|averaged11MicronBtForAllClearPixelsForwardView|double|AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012185|averaged37MicronBtForAllClearPixelsForwardView|double|AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012186|meanNadirSeaSurfaceTemperature|double|MEAN NADIR SEA SURFACE TEMPERATURE|K|2|0|16|K|2|5
+012187|meanDualViewSeaSurfaceTemperature|double|MEAN DUAL VIEW SEA SURFACE TEMPERATURE|K|2|0|16|K|2|5
+012188|interpolated238GhzBrightnessTFromMwr|double|INTERPOLATED 23.8 GHZ BRIGHTNESS T FROM MWR|K|2|0|16|K|2|5
+012189|interpolated365GhzBrightnessTFromMwr|double|INTERPOLATED 36.5 GHZ BRIGHTNESS T FROM MWR|K|2|0|16|K|2|5
+013001|specificHumidity|double|SPECIFIC HUMIDITY|kg/kg|5|0|14|kg/kg|5|5
+013002|mixingRatio|double|MIXING RATIO|kg/kg|5|0|14|kg/kg|5|5
+013003|relativeHumidity|long|RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013004|vapourPressure|long|VAPOUR PRESSURE|Pa|-1|0|10|Pa|-1|4
+013005|vapourDensity|double|VAPOUR DENSITY|kg m-3|3|0|7|kg m-3|3|3
+013006|mixingHeights|long|MIXING HEIGHTS|m|-1|-40|16|m|-1|5
+013007|minimumRelativeHumidity|long|MINIMUM RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013008|maximumRelativeHumidity|long|MAXIMUM RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013009|relativeHumidity|double|RELATIVE HUMIDITY|%|1|-1000|12|%|1|4
+013011|totalPrecipitationOrTotalWaterEquivalent|double|TOTAL PRECIPITATION/TOTAL WATER EQUIVALENT|kg m-2|1|-1|14|kg m-2|1|5
+013012|depthOfFreshSnow|double|DEPTH OF FRESH SNOW|m|2|-2|12|m|2|4
+013013|totalSnowDepth|double|TOTAL SNOW DEPTH|m|2|-2|16|m|2|5
+013014|rainfallOrWaterEquivalentOfSnowAveragedRate|double|RAINFALL/WATER EQUIVALENT OF SNOW (AVERAGED RATE)|kg m-2 s-1|4|0|12|kg m-2 s-1|4|4
+013015|snowfallAveragedRate|double|SNOWFALL (AVERAGED RATE)|m/s|7|0|12|m/s|7|4
+013016|precipitableWater|long|PRECIPITABLE WATER|kg m-2|0|0|7|kg m-2|0|3
+013019|totalPrecipitationPast1Hour|double|TOTAL PRECIPITATION PAST 1 HOUR|kg m-2|1|-1|14|kg m-2|1|4
+013020|totalPrecipitationPast3Hours|double|TOTAL PRECIPITATION PAST 3 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013021|totalPrecipitationPast6Hours|double|TOTAL PRECIPITATION PAST 6 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013022|totalPrecipitationPast12Hours|double|TOTAL PRECIPITATION PAST 12 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013023|totalPrecipitationPast24Hours|double|TOTAL PRECIPITATION PAST 24 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013031|evapotranspiration|long|EVAPOTRANSPIRATION|kg m-2|0|0|7|kg m-2|0|3
+013032|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|8|kg m-2|1|3
+013033|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|10|kg m-2|1|4
+013038|superadiabaticIndicator|table|SUPERADIABATIC INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+013039|terrainTypeIceOrSnow|table|TERRAIN TYPE (ICE/SNOW)|CODE TABLE|0|0|3|CODE TABLE|0|1
+013040|surfaceFlag|table|SURFACE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+013041|pasquillGiffordStabilityCategory|table|PASQUILL-GIFFORD STABILITY CATEGORY|CODE TABLE|0|0|4|CODE TABLE|0|2
+013042|parcelLiftedIndexTo500Hpa|long|PARCEL LIFTED INDEX (TO 500 HPA)|K|0|-20|6|K|0|2
+013043|bestLiftedIndexTo500Hpa|long|BEST LIFTED INDEX (TO 500 HPA)|K|0|-20|6|K|0|2
+013044|kIndex|long|K INDEX|K|0|-30|8|K|0|3
+013045|koIndex|long|KO INDEX|K|0|-30|8|K|0|3
+013046|maximumBuoyancy|long|MAXIMUM BUOYANCY|K|0|-30|8|K|0|3
+013047|modifiedShowalterStabilityIndex|long|MODIFIED SHOWALTER STABILITY INDEX|K|0|-60|6|C|0|2
+013048|waterFraction|double|WATER FRACTION|%|1|0|10|%|1|4
+013051|frequencyGroupPrecipitation|table|FREQUENCY GROUP, PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013052|highestDailyAmountOfPrecipitation|double|HIGHEST DAILY AMOUNT OF PRECIPITATION|kg m-2|1|-1|14|kg m-2|1|5
+013055|intensityOfPrecipitation|double|INTENSITY OF PRECIPITATION|kg m-2 s-1|4|0|8|mm/h|1|3
+013056|characterAndIntensityOfPrecipitation|table|CHARACTER AND INTENSITY OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013057|timeOfBeginningOrEndOfPrecipitation|table|TIME OF BEGINNING OR END OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013058|sizeOfPrecipitatingElement|double|SIZE OF PRECIPITATING ELEMENT|m|4|0|7|mm|1|3
+013059|numberOfFlashesThunderstorm|long|NUMBER OF FLASHES (THUNDERSTORM)|Numeric|0|0|7|Numeric|0|3
+013060|totalAccumulatedPrecipitation|double|TOTAL ACCUMULATED PRECIPITATION|kg m-2|1|-1|17|kg m-2|1|5
+013071|upstreamWaterLevel|double|UPSTREAM WATER LEVEL|m|2|0|14|m|2|5
+013072|downstreamWaterLevel|double|DOWNSTREAM WATER LEVEL|m|2|0|14|m|2|4
+013073|maximumWaterLevel|double|MAXIMUM WATER LEVEL|m|2|0|14|m|2|4
+013080|waterPh|double|WATER PH|pH unit|1|0|10|pH unit|1|3
+013081|waterConductivity|double|WATER CONDUCTIVITY|S/m|3|0|14|S/m|3|4
+013082|waterTemperature|double|WATER TEMPERATURE|K|1|0|12|K|1|4
+013083|dissolvedOxygen|double|DISSOLVED OXYGEN|kg m-3|6|0|15|kg m-3|6|5
+013084|turbidity|long|TURBIDITY|lm|0|0|14|lm|0|4
+013085|oxidationReductionPotential|double|OXYDATION REDUCTION POTENTIAL (ORP)|V|3|0|14|V|3|4
+013090|radiometerWaterVapourContent|double|RADIOMETER WATER VAPOUR CONTENT|kg m-2|1|0|10|kg m-2|1|4
+013091|radiometerLiquidContent|double|RADIOMETER LIQUID CONTENT|kg m-2|2|0|8|kg m-2|2|3
+013093|cloudOpticalThickness|long|CLOUD OPTICAL THICKNESS|Numeric|0|0|8|Numeric|0|3
+013095|totalColumnWaterVapour|double|TOTAL COLUMN WATER VAPOUR|kg m-2|4|0|19|kg m-2|4|6
+013096|mwrWaterVapourContent|double|MWR WATER VAPOUR CONTENT|kg m-2|2|0|14|kg m-2|2|4
+013097|mwrLiquidWaterContent|double|MWR LIQUID WATER CONTENT|kg m-2|2|0|14|kg m-2|2|4
+013098|integratedWaterVapourDensity|double|INTEGRATED WATER VAPOUR DENSITY|kg m-2|8|0|30|kg m-2|8|10
+014001|longWaveRadiationIntegratedOver24Hours|long|LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014002|longWaveRadiationIntegratedOverPeriodSpecified|long|LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014003|shortWaveRadiationIntegratedOver24Hours|long|SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014004|shortWaveRadiationIntegratedOverPeriodSpecified|long|SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014011|netLongWaveRadiationIntegratedOver24Hours|long|NET LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014012|netLongWaveRadiationIntegratedOverPeriodSpecified|long|NET LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014013|netShortWaveRadiation24Hours|long|NET SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014014|netShortWaveRadiationIntegratedOverPeriodSpecified|long|NET SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014015|netRadiationIntegratedOver24Hours|long|NET RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|-16384|15|J m-2|-4|5
+014016|netRadiationIntegratedOverPeriodSpecified|long|NET RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|-16384|15|J m-2|-4|5
+014017|instantaneousLongWaveRadiation|long|INSTANTANEOUS LONG-WAVE RADIATION (SEE NOTE 6)|W m-2|-3|-2048|12|W m-2|-3|4
+014018|instantaneousShortWaveRadiation|long|INSTANTANEOUS SHORT-WAVE RADIATION (SEE NOTE 6)|W m-2|-3|-2048|12|W m-2|-3|4
+014019|surfaceAlbedo|long|SURFACE ALBEDO|%|0|0|7|%|0|3
+014020|globalSolarRadiation24Hours|long|GLOBAL SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014021|globalSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014022|diffuseSolarRadiationIntegratedOver24Hours|long|DIFFUSE SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014023|diffuseSolarRadiationIntegratedOverPeriodSpecified|long|DIFFUSE SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014024|directSolarRadiationIntegratedOver24Hours|long|DIRECT SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014025|directSolarRadiationIntegratedOverPeriodSpecified|long|DIRECT SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014026|cloudTopAlbedo|long|ALBEDO AT THE TOP OF CLOUDS|%|0|0|7|%|0|3
+014027|albedo|long|ALBEDO|%|0|0|7|%|0|3
+014028|globalSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD S|J m-2|-2|0|16|J m-2|-2|5
+014029|diffuseSolarRadiationIntegratedOverPeriodSpecified|long|DIFFUSE SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD|J m-2|-2|0|16|J m-2|-2|5
+014030|directSolarRadiationIntegratedOverPeriodSpecified|long|DIRECT SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD S|J m-2|-2|0|16|J m-2|-2|5
+014031|totalSunshine|long|TOTAL SUNSHINE|min|0|0|11|min|0|4
+014032|totalSunshine|long|TOTAL SUNSHINE|h|0|0|10|h|0|4
+014033|totalSunshine|long|TOTAL SUNSHINE|%|0|0|9|%|0|3
+014034|sunshineOverPeriodSpecified|long|SUNSHINE OVER PERIOD SPECIFIED|min|0|0|11|min|0|4
+014042|bidirectionalReflectance|long|BI-DIRECTIONAL REFLECTANCE|%|0|0|7|%|0|3
+014045|channelRadiance|long|CHANNEL RADIANCE|W m-2 sr-1 cm|0|0|11|W m-2 sr-1 cm|0|4
+014046|scaledIasiRadiance|long|SCALED IASI RADIANCE|W m-2 sr-1 m|0|-5000|16|W m-2 sr-1 m|0|5
+014047|scaledMeanAvhrrRadiance|long|SCALED MEAN AVHRR RADIANCE|W m-2 sr-1 m|0|0|31|W m-2 sr-1 m|0|10
+014048|scaledStandardDeviationAvhrrRadiance|long|SCALED STANDARD DEVIATION RADIANCE|W m-2 sr-1 m|0|0|31|W m-2 sr-1 m|0|10
+014050|emissivity|double|EMISSIVITY (SEE NOTE 5)|%|1|0|10|%|1|4
+014051|directSolarRadiationIntegratedOverLastHour|long|DIRECT SOLAR RADIATION INTEGRATED OVER LAST HOUR|J m-2|-3|0|14|J m-2|-3|4
+014055|solarActivityIndex|long|SOLAR ACTIVITY INDEX|Numeric|0|-32768|16|Numeric|0|5
+014061|instantaneousLongWaveRadiation|long|(VAL) INSTANTANEOUS LONG-WAVE RADIATION|W m-2|0|-512|10|W m-2|0|4
+014062|instantaneousShortWaveRadiation|long|(VAL) INSTANTANEOUS SHORT-WAVE RADIATION|W m-2|0|-2048|12|W m-2|0|4
+015001|totalOzone|long|TOTAL OZONE|DU|0|0|10|DU|0|4
+015002|airMassSlantPathAt22Km|long|AIR MASS (SLANT PATH AT 22 KM)|Numeric|2|0|10|Numeric|2|3
+015003|measuredOzonePartialPressureSounding|double|MEASURED OZONE PARTIAL PRESSURE (SOUNDING)|Pa|4|0|9|nbar|0|3
+015004|ozoneSoundingCorrectionFactor|long|OZONE SOUNDING CORRECTION FACTOR|Numeric|3|0|11|Numeric|3|4
+015005|ozoneP|long|OZONE P|DU|0|0|10|DU|0|3
+015008|significandOfVolumetricMixingRatio|long|SCALED MIXING RATIO|Numeric|0|0|10|Numeric|0|4
+015011|log10IntegratedElectronDensity|double|LOG 10 OF INTEGRATED ELECTRON DENSITY|log (m-2)|3|14000|13|log (m-2)|3|4
+015012|totalElectronCountPerSquareMetre|long|TOTAL ELECTRON COUNT PER SQUARE METER|m-2|-16|0|6|m-2|-16|2
+015015|maxImageSpectralComponentBeforeNormalization|long|MAXIMUM IMAGE SPECTRAL COMPONENT BEFORE NORMALIZATION|Numeric|0|0|31|Numeric|0|10
+015020|integratedOzoneDensity|double|INTEGRATED 03 DENSITY|kg m-2|8|0|21|kg m-2|8|7
+015021|integratedMassDensity|double|INTEGRATED MASS DENSITY|kg m-2|11|0|31|kg m-2|11|10
+015024|opticalDepth|long|OPTICAL DEPTH|Numeric|4|0|24|Numeric|4|8
+015025|pollutantType|table|TYPE OF POLLUTANT|CODE TABLE|0|0|4|CODE TABLE|0|2
+015026|moleFractionOfPollutant|double|CONCENTRATION OF POLLUTANT|mol/mol|9|0|9|mol/mol|9|3
+015027|massConcentrationOfPollutant|double|CONCENTRATION OF POLLUTANT|kg m-3|9|0|10|kg m-3|9|4
+015030|aerosolContaminationIndex|long|AEROSOL CONTAMINATION INDEX|Numeric|2|-1000|12|Numeric|2|4
+015031|atmosphericPathDelayInSatelliteSignal|double|ATMOSPHERIC PATH DELAY IN SATELLITE SIGNAL|m|4|10000|15|m|4|5
+015032|estimatedErrorInAtmosphericPathDelay|double|ESTIMATED ERROR IN ATMOSPHERIC PATH DELAY|m|4|0|10|m|4|4
+015033|differenceInPathDelaysForLimbViewsAtExtremesOfScan|double|DIFFERENCE IN PATH DELAYS FOR LIMB VIEWS AT EXTREMES OF SCAN|m|5|-10000|15|m|5|5
+015034|estimatedErrorInPathDelayDifference|double|ESTIMATED ERROR IN PATH DELAY DIFFERENCE|m|5|0|14|m|5|5
+015035|componentOfZenithPathDelayDueToWaterVapour|double|COMPONENT OF ZENITH PATH DELAY DUE TO WATER VAPOUR|m|4|0|14|m|4|5
+015036|atmosphericRefractivity|double|ATMOSPHERIC REFRACTIVITY (SEE NOTE 5)|N units|3|0|19|N units|3|6
+015037|bendingAngle|double|BENDING ANGLE|rad|8|-100000|23|rad|8|7
+019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
+019002|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-2|0|12|m|-2|4
+019003|windSpeedThreshold|long|WIND SPEED THRESHOLD|m/s|0|0|8|m/s|0|3
+019004|effectiveRadiusWithRespectToWindSpeedsAboveThreshold|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD|m|-2|0|12|m|-2|4
+019005|featureDirectionOfMotion|long|DIRECTION OF MOTION OF FEATURE|deg|0|0|9|deg|0|3
+019006|speedOfMotionOfFeature|double|SPEED OF MOTION OF FEATURE|m/s|2|0|14|m/s|2|5
+019007|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-3|0|12|m|-3|4
+019008|verticalExtentOfCirculation|table|VERTICAL EXTENT OF CIRCULATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+019009|effectiveRadiusWithRespectToWindSpeedsAboveThresholdLargeStorms|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD (LA|m|-3|0|12|m|-3|4
+019010|methodForTrackingCentreOfSynopticFeature|table|METHOD FOR TRACKING THE CENTRE OF SYNOPTIC FEATURE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019100|timeIntervalToCalculateMovementOfTropicalCyclone|table|TIME INTERVAL TO CALCULATE THE MOVEMENT OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019101|accuracyOfPositionOfCentreOfTropicalCyclone|table|ACCURACY OF THE POSITION OF THE CENTRE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019102|shapeAndDefinitionOfEyeOfTropicalCyclone|table|SHAPE AND DEFINITION OF THE EYE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|3|CODE TABLE|0|1
+019103|diameterOfMajorAxisOfEyeOfTropicalCyclone|table|DIAMETER OF MAJOR AXIS OF THE EYE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019104|changeInCharacterOfEyeDuring30Minutes|table|CHANGE IN CHARACTER OF THE EYE DURING THE 30 MINUTES|CODE TABLE|0|0|4|CODE TABLE|0|2
+019105|distanceBetweenEndOfSpiralBandAndCentre|table|DISTANCE BETWEEN THE END OF SPIRAL BAND AND THE CENTRE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019106|identificationNumberOfTropicalCyclone|long|IDENTIFICATION NUMBER OF TROPICAL CYCLONE|Numeric|0|0|7|Numeric|0|3
+019107|timeIntervalOverWhichMovementOfTropicalCycloneHasBeenCalculated|table|TIME INTERVAL OF THE TROPICAL CYCLONE ANALYSIS|CODE TABLE|0|0|4|CODE TABLE|0|2
+019108|accuracyOfGeographicalPositionOfTropicalCyclone|table|ACCURACY OF GEOGRAPHICAL POSITION OF THE TROPICAL CYCLONE|CODE TABLE|0|0|3|CODE TABLE|0|1
+019109|meanDiameterOfOvercastCloudOfTropicalCyclone|table|MEAN DIAMETER OF THE OVERCAST CLOUD OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019110|apparent24HourChangeInIntensityOfTropicalCyclone|table|APPARENT 24-HOUR CHANGE IN INTENSITY OF TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019111|currentIntensityNumberOfTropicalCyclone|long|CURRENT INTENSITY (CI) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019112|dataTropicalNumberOfTropicalCyclone|long|DATA TROPICAL (DT) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019113|cloudPatternTypeOfDtNumber|table|CLOUD PATTERN TYPE OF THE DT- NUMBER|CODE TABLE|0|0|4|CODE TABLE|0|2
+019114|modelExpectedTropicalNumberOfTropicalCyclone|long|MODEL EXPECTED TROPICAL (MET) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019115|trendOfPast24HourChangeDevelopedWeakened|long|TREND OF PAST 24-HOUR CHANGE (+: DEVELOPED, -: WEAKENED)|Numeric|1|-30|6|Numeric|1|2
+019116|patternTropicalNumberOfTropicalCyclone|long|PATTERN TROPICAL (PT) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019117|cloudPictureTypeOfPtNumber|table|CLOUD PICTURE TYPE OF THE PT- NUMBER|CODE TABLE|0|0|3|CODE TABLE|0|1
+019118|finalTropicalNumberOfTropicalCyclone|long|FINAL TROPICAL (T) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019119|finalTNumberType|table|TYPE OF THE FINAL T-NUMBER|CODE TABLE|0|0|3|CODE TABLE|0|1
+019150|typhoonInternationalCommonNumberTyphoonCommittee|string|TYPHOON INTERNATIONAL COMMON NUMBER (TYPHOON COMMITTEE)|CCITT IA5|0|0|32|Character|0|4
+020001|horizontalVisibility|long|HORIZONTAL VISIBILITY|m|-1|0|13|m|-1|4
+020002|verticalVisibility|long|VERTICAL VISIBILITY|m|-1|0|7|m|-1|3
+020003|presentWeather|table|PRESENT WEATHER (SEE NOTE 1)|CODE TABLE|0|0|9|CODE TABLE|0|3
+020004|pastWeather1|table|PAST WEATHER (1) (SEE NOTE 2)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020005|pastWeather2|table|PAST WEATHER (2) (SEE NOTE 2)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020008|cloudDistributionForAviation|table|CLOUD DISTRIBUTION FOR AVIATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020009|generalWeatherIndicatorTafOrMetar|table|GENERAL WEATHER INDICATOR (TAF/METAR)|CODE TABLE|0|0|4|CODE TABLE|0|2
+020010|cloudCoverTotal|long|CLOUD COVER (TOTAL)|%|0|0|7|%|0|3
+020011|cloudAmount|table|CLOUD AMOUNT|CODE TABLE|0|0|4|CODE TABLE|0|2
+020012|cloudType|table|CLOUD TYPE|CODE TABLE|0|0|6|CODE TABLE|0|2
+020013|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|m|-1|-40|11|m|-1|4
+020014|heightOfTopOfCloud|long|HEIGHT OF TOP OF CLOUD|m|-1|-40|11|m|-1|4
+020015|pressureAtBaseOfCloud|long|PRESSURE AT BASE OF CLOUD|Pa|-1|0|14|Pa|-1|5
+020016|pressureAtTopOfCloud|long|PRESSURE AT TOP OF CLOUD|Pa|-1|0|14|Pa|-1|5
+020017|cloudTopDescription|table|CLOUD TOP DESCRIPTION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020018|tendencyOfRunwayVisualRange|table|TENDENCY OF RUNWAY VISUAL RANGE|CODE TABLE|0|0|2|CODE TABLE|0|1
+020019|significantWeather|string|SIGNIFICANT PRESENT OR FORECAST WEATHER|CCITT IA5|0|0|72|Character|0|9
+020020|significantRecentWeatherPhenomena|string|SIGNIFICANT RECENT WEATHER PHENOMENA|CCITT IA5|0|0|32|Character|0|4
+020021|precipitationType|flag|TYPE OF PRECIPITATION|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+020022|characterOfPrecipitation|table|CHARACTER OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020023|otherWeatherPhenomena|flag|OTHER WEATHER PHENOMENA|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+020024|intensityOfPhenomena|table|INTENSITY OF PHENOMENA|CODE TABLE|0|0|3|CODE TABLE|0|1
+020025|obscuration|flag|OBSCURATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+020026|characterOfObscuration|table|CHARACTER OF OBSCURATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020027|phenomenaOccurrence|flag|PHENOMENA OCCURRENCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+020028|expectedChangeInIntensity|table|EXPECTED CHANGE IN INTENSITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+020029|rainFlag|table|RAIN FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+020031|iceDepositThickness|double|ICE DEPOSIT (THICKNESS)|m|2|0|7|m|2|3
+020032|rateOfIceAccretionEstimated|table|RATE OF ICE ACCRETION|CODE TABLE|0|0|3|CODE TABLE|0|1
+020033|causeOfIceAccretion|flag|CAUSE OF ICE ACCRETION|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+020034|seaIceConcentration|table|SEA ICE CONCENTRATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020035|amountAndTypeOfIce|table|AMOUNT AND TYPE OF ICE|CODE TABLE|0|0|4|CODE TABLE|0|2
+020036|iceSituation|table|ICE SITUATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020037|iceDevelopment|table|ICE DEVELOPMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+020038|iceEdgeBearing|long|BEARING OF ICE EDGE (SEE NOTE 3)|deg|0|0|12|deg|0|3
+020039|iceDistance|long|ICE DISTANCE|m|-1|0|13|m|-1|4
+020040|evolutionOfDriftSnow|table|EVOLUTION OF DRIFT OF SNOW|CODE TABLE|0|0|4|CODE TABLE|0|2
+020041|airframeIcing|table|AIRFRAME ICING|CODE TABLE|0|0|4|CODE TABLE|0|2
+020042|airframeIcingPresent|table|AIRFRAME ICING PRESENT|CODE TABLE|0|0|2|CODE TABLE|0|1
+020043|peakLiquidWaterContent|double|PEAK LIQUID WATER CONTENT|kg m-3|4|0|7|kg m-3|4|2
+020044|averageLiquidWaterContent|double|AVERAGE LIQUID WATER CONTENT|kg m-3|4|0|7|kg m-3|4|2
+020045|supercooledLargeDropletConditions|table|SUPERCOOLED LARGE DROPLET (SLD) CONDITIONS|CODE TABLE|0|0|2|CODE TABLE|0|2
+020048|evolutionOfFeature|table|EVOLUTION OF FEATURE|CODE TABLE|0|0|4|CODE TABLE|2|2
+020050|cloudIndex|table|CLOUD INDEX|CODE TABLE|0|0|8|CODE TABLE|0|3
+020051|amountOfLowClouds|long|AMOUNT OF LOW CLOUDS|%|0|0|7|%|0|3
+020052|amountOfMiddleClouds|long|AMOUNT OF MIDDLE CLOUDS|%|0|0|7|%|0|3
+020053|amountOfHighClouds|long|AMOUNT OF HIGH CLOUDS|%|0|0|7|%|0|3
+020054|trueDirectionFromWhichAPhenomenonOrCloudsAreMovingOrInWhichTheyAreObserved|long|TRUE DIRECTION FROM WHICH CLOUDS ARE MOVING|deg|0|0|9|deg|0|3
+020055|stateOfSkyInTropics|table|STATE OF SKY IN TROPICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020056|cloudPhase|table|CLOUD PHASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+020059|minimumHorizontalVisibility|long|MINIMUM HORIZONTAL VISIBILITY|m|-1|0|9|m|-1|3
+020060|prevailingHorizontalVisibility|long|PREVAILING HORIZONTAL VISIBILITY|m|-1|0|10|m|-1|4
+020061|runwayVisualRangeRvr|long|RUNWAY VISUAL RANGE (RVR)|m|0|0|12|m|0|4
+020062|stateOfGround|table|STATE OF THE GROUND (WITH OR WITHOUT SNOW)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020063|specialPhenomena|table|SPECIAL PHENOMENA|CODE TABLE|0|0|10|CODE TABLE|0|4
+020065|snowCover|long|SNOW COVER (SEE NOTE 4)|%|0|0|7|%|0|3
+020066|maximumDiameterOfHailstones|double|MAXIMUM DIAMETER OF HAILSTONES|m|3|0|8|m|3|3
+020067|diameterOfDeposit|double|DIAMETER OF DEPOSIT|m|3|0|9|m|3|3
+020070|minimumNumberOfAtmospherics|long|MINIMUM NUMBER OF ATMOSPHERICS|Numeric|0|0|7|Numeric|0|3
+020071|accuracyOfFixAndRateOfAtmospherics|table|ACCURACY OF FIX AND RATE OF ATMOSPHERICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020081|cloudAmountInSegment|long|CLOUD AMOUNT IN SEGMENT|%|0|0|7|%|0|3
+020082|amountSegmentCloudFree|long|AMOUNT SEGMENT CLOUD FREE|%|0|0|7|%|0|3
+020083|amountOfSegmentCoveredByScene|long|AMOUNT OF SEGMENT COVERED BY SCENE|%|0|0|7|%|0|3
+020085|generalConditionOfRunway|table|GENERAL CONDITION OF RUNWAY|CODE TABLE|0|0|4|CODE TABLE|0|1
+020086|runwayDeposits|table|RANWAY DEPOSITS|CODE TABLE|0|0|4|CODE TABLE|0|1
+020087|runwayContamination|table|RUNWAY CONTAMINATION|CODE TABLE|0|0|4|CODE TABLE|0|1
+020088|depthOfRunwayDeposits|double|DEPTH OF RANWAY DEPOSITS|m|3|0|12|m|3|4
+020089|runwayFrictionCoefficient|table|RUNWAY FRICTION COEFICIENT|CODE TABLE|0|0|7|CODE TABLE|0|2
+020090|specialClouds|table|SPECIAL CLOUDS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020091|verticalVisibility|long|VERTICAL VISIBILITY|ft|-2|0|10|ft|-2|3
+020092|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|ft|-2|0|10|ft|-2|3
+020095|iceProbability|long|ICE PROBABILITY|Numeric|3|0|10|Numeric|3|4
+020096|iceAgeAParameter|double|ICE AGE ("A" PARAMETER)|dB|2|-4096|13|dB|2|4
+020101|locustAcridianName|table|LOCUST (ACRIDIAN) NAME|CODE TABLE|0|0|4|CODE TABLE|0|2
+020102|locustMaturityColour|table|LOCUST (MATURITY) COLOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+020103|stageOfDevelopmentOfLocusts|table|STAGE OF DEVELOPMENT OF LOCUSTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020104|organizationStateOfSwarm|table|ORGANIZATION STATE OF SWARM OR BAND OF LOCUSTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020105|sizeOfSwarmOrBandOfLocustsAndDurationOfPassageOfSwarm|table|SIZE OF SWARM OR BAND OF LOCUSTS AND DURATION OF PASSAGE OF SWAR|CODE TABLE|0|0|4|CODE TABLE|0|2
+020106|locustPopulationDensity|table|LOCUST POPULATION DENSITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+020107|directionOfMovementsOfLocustSwarm|table|DIRECTION OF MOVEMENTS OF LOCUST SWARM|CODE TABLE|0|0|4|CODE TABLE|0|2
+020108|extentOfVegetation|table|EXTENT OF VEGETATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+021001|horizontalReflectivity|long|HORIZONTAL REFLECTIVITY|dB|0|-64|7|dB|0|3
+021002|verticalReflectivity|long|VERTICAL REFLECTIVITY|dB|0|-64|7|dB|0|3
+021003|differentialReflectivity|double|DIFFERENTIAL REFLECTIVITY|dB|1|-5|7|dB|1|3
+021005|linearDepolarizationRatio|long|LINEAR DEPOLARISATION RATIO|dB|0|-65|6|dB|0|2
+021006|circularDepolarizationRatio|long|CIRCULAR DEPOLARISATION RATIO|dB|0|-65|6|dB|0|2
+021011|dopplerMeanVelocityXDirection|long|DOPPLER MEAN VELOCITY IN X-DIRECTION|m/s|0|-128|8|m/s|0|3
+021012|dopplerMeanVelocityYDirection|long|DOPPLER MEAN VELOCITY IN Y-DIRECTION|m/s|0|-128|8|m/s|0|3
+021013|dopplerMeanVelocityZDirection|long|DOPPLER MEAN VELOCITY IN Z-DIRECTION|m/s|0|-128|8|m/s|0|3
+021014|dopplerMeanVelocityRadial|double|DOPPLER MEAN VELOCITY (RADIAL)|m/s|1|-4096|13|m/s|1|4
+021017|dopplerVelocitySpectralWidth|double|DOPPLER VELOCITY SPECTRAL WIDTH|m/s|1|0|8|m/s|1|3
+021021|echoTops|long|ECHO TOPS|m|-3|0|4|m|-3|2
+021030|signalToNoiseRatio|long|SIGNAL TO NOISE RATIO|dB|0|-32|8|dB|0|3
+021031|verticallyIntegratedLiquidWaterContent|long|VERTICALLY INTEGRATED LIQUID-WATER CONTENT|kg m-2|0|0|7|kg m-2|0|3
+021036|radarRainfallIntensity|double|RADAR RAINFALL INTENSITY|m/s|7|0|12|m/s|7|4
+021041|brightBandHeight|long|BRIGHT-BAND HEIGHT|m|-2|0|8|m|-2|3
+021051|signalPowerAbove1Mw|long|SIGNAL POWER ABOVE 1 MW|dB|0|-256|8|dB|0|3
+021062|backscatter|double|BACKSCATTER|dB|2|-5000|13|dB|2|4
+021063|radiometricResolutionNoiseValue|double|RADIOMETRIC RESOLUTION (NOISE VALUE)|%|1|0|10|%|1|4
+021064|clutterNoiseEstimate|long|CLUTTER NOISE ESTIMATE|Numeric|0|0|8|Numeric|0|3
+021065|missingPacketCounter|long|MISSING PACKET COUNTER|Numeric|0|-127|8|Numeric|0|3
+021066|waveScatterometerProductConfidenceData|flag|WAVE SCATTEROMETER PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+021067|windProductConfidenceData|flag|WIND PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|13|FLAG TABLE|0|5
+021068|radarAltimeterProductConfidenceData|flag|RADAR ALTIMETER PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+021069|sstProductConfidenceData|flag|SST PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|10|FLAG TABLE|0|4
+021070|sstProductConfidenceDataSadist2|flag|SST PRODUCT CONFIDENCE DATA (SADIST-2)|FLAG TABLE|0|0|23|FLAG TABLE|0|6
+021071|peakiness|long|PEAKINESS|Numeric|0|0|16|Numeric|0|5
+021072|satelliteAltimeterCalibrationStatus|flag|SATELLITE ALTIMETER CALIBRATION STATUS|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+021073|satelliteAltimeterInstrumentMode|flag|SATELLLITE ALTIMETER INSTRUMENT MODE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+021075|imageSpectrumIntensity|long|IMAGE SPECTRUM INTENSITY|Numeric|0|0|8|Numeric|0|3
+021076|representationOfIntensities|table|REPRESENTATION OF INTENSITIES|CODE TABLE|0|0|3|CODE TABLE|0|1
+021077|altitudeCorrectionIonosphere|double|ALTITUDE CORRECTION (IONOSPHERE)|m|3|0|14|m|3|5
+021078|altitudeCorrectionDryTroposphere|double|ALTITUDE CORRECTION (DRY TROPOSPHERE)|m|3|0|9|m|3|3
+021079|altitudeCorrectionWetTroposphere|double|ALTITUDE CORRECTION (WET TROPOSPHERE)|m|3|2000|10|m|3|4
+021080|altitudeCorrectionCalibrationConstant|double|ALTITUDE CORRECTION (CALIBRATION CONSTANT)|m|3|0|11|m|3|4
+021081|openLoopCorrectionHeightTimeLoop|double|OPEN LOOP CORRECTION (HEIGHT-TIME LOOP)|m|3|0|10|m|3|4
+021082|openLoopCorrectionAutoGainControl|double|OPEN LOOP CORRECTION (AUTO GAIN CONTROL)|dB|3|-3000|14|dB|3|5
+021083|warmTargetCalibration|long|WARM TARGET CALIBRATION|Numeric|0|0|16|Numeric|0|5
+021084|coldTargetCalibration|long|COLD TARGET CALIBRATION|Numeric|0|0|16|Numeric|0|5
+021085|atsrSeaSurfaceTemperatureAcrossTrackBandNumber|long|ATSR SEA SURFACE TEMPERATURE ACROSS- TRACK BAND NUMBER|Numeric|0|0|4|Numeric|0|2
+021086|numberOfPixelsInNadirOnlyAverage|long|NUMBER OF PIXELS IN NADIR ONLY, AVERAGE|Numeric|0|0|9|Numeric|0|3
+021087|numberOfPixelsInDualViewAverage|long|NUMBER OF PIXELS IN DUAL VIEW, AVERAGE|Numeric|0|0|9|Numeric|0|3
+021088|wetBackscatter|double|WET BACKSCATTER|dB|2|-5000|13|dB|2|4
+021091|radarSignalDopplerSpectrum0thMoment|long|RADAR SIGNAL DOPPLER SPECTRUM 0TH MOMENT|dB|0|-100|8|dB|0|3
+021092|rassSignalDopplerSpectrum0thMomentReferringToRassSignal|long|RASS SIGNAL DOPPLER SPECTRUM 0TH MOMENT, REFERRING TO RASS SIGNA|dB|0|-100|8|dB|0|3
+021093|kuBandPeakiness|long|Ku BAND PEAKINESS|Numeric|3|0|16|Numeric|0|5
+021094|sBandPeakiness|long|S BAND PEAKINESS|Numeric|3|0|16|Numeric|0|5
+021101|numberOfVectorAmbiguities|long|NUMBER OF VECTOR AMBIGUITIES|Numeric|0|0|3|Numeric|0|1
+021102|indexOfSelectedWindVector|long|INDEX OF SELECTED WIND VECTOR|Numeric|0|0|3|Numeric|0|1
+021103|totalNumberOfSigma0Measurements|long|TOTAL NUMBER OF SIGMA-0 MEASUREMENTS|Numeric|0|0|5|Numeric|0|2
+021104|likelihoodComputedForSolution|long|LIKELIHOOD COMPUTED FOR SOLUTION|Numeric|3|-30000|15|Numeric|3|5
+021105|normalizedRadarCrossSection|double|NORMALIZED RADAR CROSS-SECTION|dB|2|-10000|14|dB|2|5
+021106|kpVarianceCoefficientAlpha|long|KP VARIANCE COEFFICIENT (ALPHA)|Numeric|3|0|14|Numeric|3|5
+021107|kpVarianceCoefficientBeta|long|KP VARIANCE COEFFICIENT (BETA)|Numeric|8|0|16|Numeric|8|5
+021109|seawindsWindVectorCellQuality|flag|SEAWINDS WIND VECTOR CELL QUALITY|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021110|numberOfInnerBeamSigma0ForwardOfSatellite|long|NUMBER OF INNER-BEAM SIGMA-0 (FORWARD OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021111|numberOfOuterBeamSigma0ForwardOfSatellite|long|NUMBER OF OUTER-BEAM SIGMA-0 (FORWARD OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021112|numberOfInnerBeamSigma0AftOfSatellite|long|NUMBER OF INNER-BEAM SIGMA-0 (AFT OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021113|numberOfOuterBeamSigma0AftOfSatellite|long|NUMBER OF OUTER-BEAM SIGMA-0 (AFT OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021114|kpVarianceCoefficientGamma|double|KP VARIANCE COEFFICENT (GAMMA)|dB|3|-140000|18|dB|3|6
+021115|seawindsSigma0Quality|flag|SEAWINDS SIGMA-0 QUALITY|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021116|seawindsSigma0Mode|flag|SEAWINDS SIGMA-0 MODE|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021117|sigma0VarianceQualityControl|long|SIGMA-0 VARIANCE QUALITY CONTROL|Numeric|2|0|16|Numeric|2|5
+021118|attenuationCorrectionOnSigma0|double|ATTENUATION CORRECTION ON SIGMA-0|dB|2|-10000|14|dB|2|5
+021119|windScatterometerGeophysicalModelFunction|table|WIND SCATTEROMETER GEOPHYSICAL MODEL FUNCTION|CODE TABLE|0|0|6|CODE TABLE|0|2
+021120|probabilityOfRain|long|PROBABILITY OF RAIN|Numeric|3|0|10|Numeric|3|4
+021121|seawindsNofRainIndex|long|SEAWINDS NOF* RAIN INDEX|Numeric|0|0|8|Numeric|0|3
+021122|attenuationCorrectionOnSigma0FromTb|double|ATTENUATION CORRECTION OF SIGMA-0 (FROM TB)|dB|2|-10000|14|dB|2|5
+021123|seawindsNormalizedRadarCrossSection|double|SEAWINDS NORMALIZED RADAR CROSS SECTION|dB|2|-30000|15|dB|2|5
+021128|numberOfValidPointsPerSecondUsedToDerivePreviousParameters|long|NUMBER OF VALID POINTS PER SECOND USED TO DERIVE PREVIOUS PARAME|Numeric|0|0|8|Numeric|0|3
+021130|spectrumTotalEnergy|long|SPECTRUM TOTAL ENERGY|Numeric|6|0|28|Numeric|6|9
+021131|spectrumMaxEnergy|long|SPECTRUM MAX ENERGY|Numeric|6|0|28|Numeric|6|9
+021132|directionOfSpectrumMaxOnHigherResolutionGrid|double|DIRECTION OF SPECTRUM MAX ON HIGHER RESOLUTION GRID|deg|3|0|19|deg|3|6
+021133|wavelengthOfSpectrumMaxOnHigherResolutionGrid|double|WAVE-LENGTH OF SPECTRUM MAX ON HIGHER RESOLUTION GRID|m|3|0|29|m|3|9
+021134|rangeResolutionOfCressCovarianceSpectrum|double|RANGE RESOLUTION OF CRESS COVARIANCE SPECTRUM|rad/m|3|0|19|rad/m|3|6
+021135|realPartOfCrossSpectraPolarGridNumberOfBins|long|REAL PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS|Numeric|3|-524288|20|Numeric|3|7
+021136|imaginaryPartOfCrossSpectraPolarGridNumberOfBins|long|IMAGINARY PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS|Numeric|3|-524288|20|Numeric|3|7
+021137|kuBandCorrectedOceanBackscatterCoefficient|double|KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021138|stdKuBandCorrectedOceanBackscatterCoefficient|double|STD KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021139|kuBandNetInstrumentalCorrectionForAgc|double|KU BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|dB|2|4
+021140|sBandCorrectedOceanBackscatterCoefficient|double|S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021141|stdSBandCorrectedOceanBackscatterCoefficient|double|STD S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021142|sBandNetInstrumentalCorrectionForAgc|double|S BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-1024|11|dB|2|4
+021143|kuBandRainAttenuation|double|KU BAND RAIN ATTENUATION|dB|2|-1073741824|31|dB|2|10
+021144|altimeterRainFlag|flag|ALTIMETER RAIN FLAG|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+021145|kuBandAutomaticGainControl|double|KU BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|NA|0|0
+021146|rmsKuBandAutomaticGainControl|double|RMS KU BAND AUTOMATIC GAIN CONTROL|dB|2|0|8|NA|0|0
+021147|numberOfValidPointsForKuBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR KU BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|5|NA|0|0
+021150|beamCollocation|table|BEAM COLLOCATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+021151|estimatedErrorInSigma0At40DegreesIncidenceAngle|double|ESTIMATED ERROR IN SIGMA0 AT 40DEG INCIDENCE ANGLE|dB|2|0|9|dB|2|3
+021152|slopeAt40DegreesIncidenceAngle|double|SLOPE AT 40DEG INCIDENCE ANGLE|dB/deg|2|-80|7|dB/deg|2|3
+021153|estimatedErrorInSlopeAt40DegreesIncidenceAngle|double|ESTIMATED ERROR IN SLOPE AT 40DEG INCIDENCE ANGLE|dB/deg|2|-40|6|dB/deg|2|3
+021154|soilMoistureSensitivity|double|SOIL MOISTURE SENSITIVITY|dB|2|0|12|dB|2|4
+021155|windVectorCellQuality|flag|WIND VECTOR CELL QUALITY|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+021156|backscatterDistance|long|BACKSCATTER DISTANCE|Numeric|1|-4096|13|Numeric|1|4
+021157|lossPerUnitLengthOfAtmosphere|double|LOSS PER UNIT LENGTH OF ATMOSPHERE USED|dB/m|10|0|22|dB/m|10|7
+021158|ascatKpEstimateQuality|table|ASCAT kp ESTIMATE QUALITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+021159|ascatSigma0Usability|table|ASCAT SIGMA-0 USABILITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+021160|ascatUseOfSyntheticData|long|ASCAT USE OF SYNTHETIC DATA|Numeric|3|0|10|Numeric|3|4
+021161|ascatSyntheticDataQuantity|long|ASCAT SYNTHETIC DATA QUALITY|Numeric|3|0|10|Numeric|3|4
+021162|ascatSatelliteOrbitAndAttitudeQuality|long|ASCAT SATELLITE ORBIT AND ATTITUDE QUALITY|Numeric|3|0|10|Numeric|3|4
+021163|ascatSolarArrayReflectionContamination|long|ASCAT SOLAR ARRAY REFLECTION CONTAMINATION|Numeric|3|0|10|Numeric|3|4
+021164|ascatTelemetryPresenceAndQuality|long|ASCAT TELEMETRY PRESENCE AND QUALITY|Numeric|3|0|10|Numeric|3|4
+021165|ascatExtrapolatedReferenceFunctionPresence|long|ASCAT EXTRAPOLATED REFERENCE FUNCTION PRESENCE|Numeric|3|0|10|Numeric|3|4
+021166|landFraction|long|ASCAT LAND FRACTION|Numeric|3|0|10|Numeric|3|4
+021169|icePresenceIndicator|table|ICE PRESENCE INDICATOR|CODE TABLE|0|0|2|NA|0|0
+021170|cBandCorrectedOceanBackscatterCoefficient|double|C BAND CORRECTED OCEAN BACKSCATTER COEFICIENT|dB|2|-32768|16|NA|0|0
+021171|rmsCBandCorrectedOceanBackscatterCoefficient|double|RMS C BAND CORRECTED OCEAN BACKSCATTER COEFICIENT|dB|2|-32768|16|NA|0|0
+021172|cBandNetInstrumentalCorrectionForAgc|double|C BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|NA|0|0
+021173|cBandAutomaticGainControl|double|C BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|NA|0|0
+021174|rmsCBandAutomaticGainControl|double|RMS C BAND AUTOMATIC GAIN CONTROL|dB|2|0|9|NA|0|0
+021175|numberOfValidPointsForCBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR C BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|10|NA|0|0
+022001|wavesDirection|long|DIRECTION OF WAVES|deg|0|0|9|deg|0|3
+022002|windWavesDirection|long|DIRECTION OF WIND WAVES|deg|0|0|9|deg|0|3
+022003|swellWavesDirection|long|DIRECTION OF SWELL WAVES|deg|0|0|9|deg|0|3
+022004|currentDirection|long|DIRECTION OF CURRENT|deg|0|0|9|deg|0|3
+022005|seaSurfaceCurrentDirection|long|DIRECTION OF SEA SURFACE CURRENT|deg|0|0|9|deg|0|3
+022011|periodOfWaves|long|PERIOD OF WAVES|s|0|0|6|s|0|2
+022012|periodOfWindWaves|long|PERIOD OF WIND WAVES|s|0|0|6|s|0|2
+022013|periodOfSwellWaves|long|PERIOD OF SWELL WAVES|s|0|0|6|s|0|2
+022021|heightOfWaves|double|HEIGHT OF WAVES|m|1|0|10|m|1|4
+022022|heightOfWindWaves|double|HEIGHT OF WIND WAVES|m|1|0|10|m|1|4
+022023|heightOfSwellWaves|double|HEIGHT OF SWELL WAVES|m|1|0|10|m|1|4
+022025|standardDeviationWaveHeight|double|STANDARD DEVIATION WAVE HEIGHT|m|2|0|10|m|2|4
+022026|standardDeviationOfSignificantWaveHeight|double|STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT|m|2|0|10|m|2|4
+022031|speedOfCurrent|double|SPEED OF CURRENT|m/s|2|0|13|m/s|2|4
+022032|speedOfSeaSurfaceCurrent|double|SPEED OF SEA SURFACE CURRENT|m/s|2|0|13|m/s|2|4
+022035|tidalElevationWithRespectToLocalChartDatum|double|TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM|m|2|0|14|m|2|4
+022036|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|2|0|14|m|2|4
+022037|tidalElevationWithRespectToNationalLandDatum|double|TIDAL ELEVATION WITH RESPECT TO NATIONAL LAND DATUM|m|3|-10000|15|m|3|5
+022038|tidalElevationWithRespectToLocalChartDatum|double|TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM|m|3|-10000|15|m|3|5
+022039|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|3|-5000|12|m|3|4
+022040|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|3|-5000|14|m|3|5
+022041|seaSurfaceTemperature15DayRunningMean|double|SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN)|K|1|0|12|K|1|4
+022042|waterTemperature|double|SEA/WATER TEMPERATURE|K|1|0|12|K|1|4
+022043|waterTemperature|double|SEA/WATER TEMPERATURE|K|2|0|15|K|2|5
+022044|soundVelocity|double|SOUND VELOCITY|m/s|1|0|14|m/s|1|5
+022045|waterTemperature|double|SEA/WATER TEMPERATURE|K|3|0|19|K|3|6
+022049|seaSurfaceTemperature|double|SEA SURFACE TEMPERATURE|K|2|0|15|K|2|5
+022050|standardDeviationSeaSurfaceTemperature|double|STANDARD DEVIATION SEA-SURFACE TEMPERATURE|K|2|0|8|K|2|3
+022055|floatCycleNumber|long|FLOAT CYCLE NUMBER|Numeric|0|0|10|Numeric|0|3
+022056|directionOfProfile|table|DIRECTION OF PROFILE|CODE TABLE|0|0|2|CODE TABLE|0|1
+022059|seaSurfaceSalinity|double|SEA SURFACE SALINITY|0/00|2|0|14|0/00|2|5
+022060|lagrangianDrifterDrogueStatus|table|LAGRANGIAN DRIFTER DROGUE STATUS|CODE TABLE|0|0|3|CODE TABLE|0|1
+022061|seaState|table|STATE OF THE SEA|CODE TABLE|0|0|4|CODE TABLE|0|2
+022062|salinity|double|SALINITY|0/00|2|0|14|0/00|2|5
+022063|totalWaterDepth|long|TOTAL WATER DEPTH|m|0|0|14|m|0|5
+022064|salinity|double|SALINITY|0/00|3|0|17|0/00|3|6
+022065|waterPressure|long|WATER PRESSURE|Pa|-3|0|17|Pa|-3|6
+022066|waterConductivity|double|WATER CONDUCTIVITY|S/m|6|0|26|S/m|6|8
+022067|instrumentTypeForWaterTemperatureOrSalinityProfileMeasurement|table|INSTRUMENT TYPE FOR WATER TEMPERATURE PROFILE MEASUREMENT|CODE TABLE|0|0|10|CODE TABLE|0|4
+022068|waterTemperatureProfileRecorderTypes|table|WATER TEMPERATURE PROFILE RECORDER TYPES|CODE TABLE|0|0|7|CODE TABLE|0|3
+022069|spectralWaveDensity|double|SPECTRAL WAVE DENSITY|m2/Hz|3|0|22|m2/Hz|3|7
+022070|significantWaveHeight|double|SIGNIFICANT WAVE HEIGHT|m|2|0|13|m|2|4
+022071|spectralPeakWavePeriod|double|SPECTRAL PEAK WAVE PERIOD|s|1|0|9|s|1|3
+022072|spectralPeakWaveLength|long|SPECTRAL PEAK WAVE LENGTH|m|0|0|13|m|0|4
+022073|maximumWaveHeight|double|MAXIMUM WAVE HEIGHT|m|2|0|13|m|2|4
+022074|averageWavePeriod|double|AVERAGE WAVE PERIOD|s|1|0|9|s|1|3
+022075|averageWaveLength|long|AVERAGE WAVE LENGTH|m|0|0|13|m|0|4
+022076|directionFromWhichDominantWavesAreComing|long|DIRECTION FROM WHICH DOMINANT WAVES ARE COMING|deg|0|0|9|deg|0|3
+022077|directionalSpreadOfDominantWave|long|DIRECTIONAL SPREAD OF DOMINANT WAVE|deg|0|0|9|deg|0|3
+022078|durationOfWaveRecord|long|DURATION OF WAVE RECORD|s|0|0|12|s|0|4
+022079|lengthOfWaveRecord|long|LENGTH OF WAVE RECORD|m|0|0|16|m|0|5
+022080|wavebandCentralFrequency|double|WAVEBAND CENTRAL FREQUENCY|Hz|3|0|10|Hz|3|4
+022081|wavebandCentralWaveNumber|double|WAVEBAND CENTRAL WAVE NUMBER|/m|5|0|13|/m|5|4
+022082|maximumNonDirectionalSpectralWaveDensity|double|MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY|m2 s|2|0|20|m2 s|2|7
+022083|maximumNonDirectionalSpectralWaveNumber|double|MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE NUMBER|m3|2|0|20|m3|2|7
+022084|bandContainingMaximumNonDirectionalSpectralWaveDensity|long|BAND CONTAINING MAXIMUM NON- DIRECTIONAL SPECTRAL WAVE DENSITY|Numeric|0|0|7|Numeric|0|3
+022085|spectralWaveDensityRatio|long|SPECTRAL WAVE DENSITY RATIO|Numeric|0|0|7|Numeric|0|3
+022086|meanDirectionFromWhichWavesAreComing|long|MEAN DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3
+022087|principalDirectionFromWhichWavesAreComing|long|PRINCIPAL DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3
+022088|firstNormalizedPolarCoordinateFromFourierCoefficients|long|FIRST NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS|Numeric|2|0|7|Numeric|2|3
+022089|secondNormalizedPolarCoordinateFromFourierCoefficients|long|SECOND NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS|Numeric|2|0|7|Numeric|2|3
+022090|nonDirectionalSpectralEstimateByWaveFrequency|double|NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY|m2 s|2|0|20|m2 s|2|7
+022091|nonDirectionalSpectralEstimateByWaveNumber|double|NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER|m3|2|0|20|m3|2|7
+022092|directionalSpectralEstimateByWaveFrequency|double|DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY|m2 rad-1 s|2|0|20|m2 rad-1 s|2|7
+022093|directionalSpectralEstimateByWaveNumber|double|DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER|m4|2|0|20|m4|2|7
+022094|totalNumberOfWaveBands|long|TOTAL NUMBER OF WAVE BANDS|Numeric|0|0|7|Numeric|0|3
+022095|directionalSpreadOfIndividualWaves|long|DIRECTIONAL SPREAD OF INDIVIDUAL WAVES|deg|0|0|8|deg|0|3
+022096|spectralBandWidth|double|SPECTRAL BAND WIDTH|/s|3|0|4|/s|3|2
+022097|meanWavelength731MOfImageSpectrumAtLowWaveNumbers|long|MEAN WAVELENGTH > 731 M OF IMAGE SPECTRUM AT LOW WAVE NUMBERS|m|0|0|14|m|0|5
+022098|wavelengthSpreadWavelength731MAtLowWaveNumbers|long|WAVELENGTH SPREAD (WAVELENGTH > 731 M) AT LOW WAVE NUMBERS|m|0|0|14|m|0|5
+022099|meanDirectionAtLowWaveNumbersWavelength731M|long|MEAN DIRECTION AT LOW WAVE NUMBERS (WAVELENGTH > 731 M)|deg|0|0|9|deg|0|3
+022100|directionSpreadAtLowWaveNumbersWavelength731M|long|DIRECTION SPREAD AT LOW WAVE NUMBERS(WAVELENGTH > 731 M)|deg|0|0|9|deg|0|3
+022101|totalEnergyWavelength731mAtLowWaveNumbers|long|TOTAL ENERGY (WAVELENGTH > 731M) AT LOW WAVE NUMBERS|Numeric|0|0|31|Numeric|0|10
+022120|tideStationAutomatedWaterLevelCheck|table|TIDE STATION AUTOMATED WATER LEVEL CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022121|tideStationManualWaterLevelCheck|table|TIDE STATION MANUAL WATER LEVEL CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022122|automatedMeteorologicalDataCheck|table|TIDE STATION AUTOMATED METEOROLOGICAL DATA CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022123|tideStationManualMeteorologicalDataCheck|table|TIDE STATION MANUAL METEOROLOGICAL DATA CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022141|seaSurfaceTemperature15DayRunningMean|double|SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN)|K|2|0|15|K|2|5
+022150|numberOf18HzValidPointsForKuBand|long|NUMBER OF 18 HZ VALID POINTS FOR KU BAND|Numeric|0|0|10|Numeric|0|4
+022151|kuBandOceanRange|double|KU BAND OCEAN RANGE|m|3|0|31|m|3|10
+022152|stdOf18HzKuBandOceanRange|double|STD OF 18 HZ KU BAND OCEAN RANGE|m|3|0|16|m|3|5
+022153|numberOf18HzValidPointsForSBand|long|NUMBER OF 18 HZ VALID POINTS FOR S BAND|Numeric|0|0|10|Numeric|0|4
+022154|sBandOceanRange|double|S BAND OCEAN RANGE|m|3|0|31|m|3|10
+022155|stdOf18HzSBandOceanRange|double|STD OF 18 HZ S BAND OCEAN RANGE|m|3|0|16|m|3|5
+022156|kuBandSignificantWaveHeight|double|KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022157|stdOf18HzKuBandOceanRange|double|STD 18HZ KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022158|sBandSignificantWaveHeight|double|S BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022159|stdOf18HzSBandSignificantWaveHeight|double|STD 18HZ S BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022160|normalizedInverseWaveAge|long|NORMALIZED INVERSE WAVE AGE|Numeric|6|0|21|Numeric|6|7
+022161|waveSpectra|double|WAVE SPECTRA|m4|4|0|27|m4|4|9
+022162|rmsOf20HzKuBandOceanRange|double|RMS OF 20Hz KU BAND OCEAN RANGE|m|3|0|16|NA|0|0
+022163|numberOf20HzValidPointsForKuBand|long|NUMBER OF 20Hz VALID POINTS FOR KU BAND|Numeric|0|0|10|NA|0|0
+022164|rms20HzKuBandSignificantWaveHeight|double|RMS 20Hz KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|NA|0|0
+022165|numberOf20HzValidPointsForKuBandSignificantWaveHeight|long|NUMBER OF 20Hz VALID POINTS FOR KU BAND SIGNIFICANT WAVE HEIGHT|Numeric|0|0|10|NA|0|0
+022166|kuBandNetInstrumentalCorrectionForSignificantWaveHeight|double|KU BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|NA|0|0
+022167|numberOfValidPointsForKuBandBackscatter|long|NUMBER OF VALID POINTS FOR KU BAND BACKSCATTER|Numeric|0|0|10|NA|0|0
+022168|cBandOceanRange|double|C BAND OCEAN RANGE|m|3|0|31|NA|0|0
+022169|rmsOfCBandOceanRange|double|RMS OF C BAND OCEAN RANGE|m|3|0|16|NA|0|0
+022170|numberOf20HzValidPointsForCBand|long|NUMBER OF 20Hz VALID POINTS FOR C BAND|Numeric|0|0|10|NA|0|0
+022171|cBandSignificantWaveHeight|double|C BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|NA|0|0
+022172|rms20HzCBandSignificantWaveHeight|double|RMS 20Hz C BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|NA|0|0
+022173|numberOf20HzValidPointsForCBandSignificantWaveHeight|long|NUMBER OF 20Hz VALID POINTS FOR C BAND|Numeric|0|0|10|NA|0|0
+022174|cBandNetInstrumentalCorrectionForSignificantWaveHeight|double|C BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|NA|0|0
+022175|numberOfValidPointsForCBandBackscatter|long|NUMBER OF VALID POINTS FOR C BAND BACKSCATTER|Numeric|0|0|10|NA|0|0
+022186|directionFromWhichWavesAreComing|long|DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|NA|0|0
+022187|directionalSpreadOfWaves|long|DIRECTIONAL SPREAD OF WAVES|deg|0|0|9|NA|0|0
+022191|spectralDensity|double|SPECTRAL DENSITY|m2 rad-1 s|2|0|20|NA|0|0
+023001|accidentEarlyNotificationArticleApplicable|table|ACCIDENT EARLY NOTIFICATION ARTICLE APPLICABLE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023002|facilityInvolvedInIncident|table|ACTIVITY OR FACILITY INVOLVED IN INCIDENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+023003|releaseType|table|TYPE OF RELEASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023004|countermeasuresTakenNearBorder|table|COUNTERMEASURES TAKEN NEAR BORDER|CODE TABLE|0|0|3|CODE TABLE|0|1
+023005|causeOfIncident|table|CAUSE OF INCIDENT|CODE TABLE|0|0|2|CODE TABLE|0|1
+023006|incidentSituation|table|INCIDENT SITUATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+023007|characteristicsOfRelease|table|CHARACTERISTICS OF RELEASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023008|stateOfCurrentRelease|table|STATE OF CURRENT RELEASE|CODE TABLE|0|0|2|CODE TABLE|0|1
+023009|stateOfExpectedRelease|table|STATE OF EXPECTED RELEASE|CODE TABLE|0|0|2|CODE TABLE|0|1
+023016|possibilityOfSignificantChemicalToxicHealthEffect|table|POSSIBILITY OF SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT|CODE TABLE|0|0|2|CODE TABLE|0|1
+023017|flowDischargeOfMajorRecipient|double|FLOW DISCHARGE OF MAJOR RECIPIENT|m3/s|6|0|20|m3/s|6|7
+023018|releaseBehaviourOverTime|table|RELEASE BEHAVIOUR OVER TIME|CODE TABLE|0|0|3|CODE TABLE|0|1
+023019|actualReleaseHeight|long|ACTUAL RELEASE HEIGHT|m|0|-15000|17|m|0|6
+023021|effectiveReleaseHeight|long|EFFECTIVE RELEASE HEIGHT|m|0|-15000|17|m|0|6
+023022|distanceOfReleasePointOrSiteOfIncident|long|DISTANCE OF RELEASE POINT OR SITE OF INCIDENT|m|0|0|24|m|0|8
+023023|mainTransportSpeedInAtmosphere|double|MAIN TRANSPORT SPEED IN THE ATMOSPHERE|m/s|1|0|12|m/s|1|4
+023024|mainTransportSpeedInWater|double|MAIN TRANSPORT SPEED IN WATER|m/s|2|0|13|m/s|2|4
+023025|mainTransportSpeedInGroundWater|double|MAIN TRANSPORT SPEED IN GROUND WATER|m/s|2|0|13|m/s|2|4
+023027|mainTransportDirectionInTheAtmosphere|long|MAIN TRANSPORT DIRECTION IN THE ATMOSPHERE|deg|0|0|9|deg|0|3
+023028|mainTransportDirectionInWater|long|MAIN TRANSPORT DIRECTION IN WATER|deg|0|0|9|deg|0|3
+023029|mainTransportDirectionInGroundWater|long|MAIN TRANSPORT DIRECTION IN GROUND WATER|deg|0|0|9|deg|0|3
+023031|possibilityPlume|table|POSSIBILITY THAT PLUME WILL ENCOUNTER PRECIPITATION IN STATE IN|CODE TABLE|0|0|2|CODE TABLE|0|1
+023032|plumeWillEncounterChangeInWindDirectionAndOrOrSpeedFlag|table|PLUME WILL ENCOUNTER CHANGE IN WIND DIRECTION AND/OR SPEED FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+024001|estimateOfAmountOfRadioactivityReleasedUpToSpecifiedTime|long|ESTIMATE OF AMOUNT OF RADIOACTIVITY RELEASED UP TO SPECIFIED TIM|Bq|-11|0|28|Bq|-11|9
+024002|estimatedMaximumPotentialRelease|long|ESTIMATED MAXIMUM POTENTIAL RELEASE|Bq|-11|0|28|Bq|-11|9
+024003|compositionOfRelease|table|COMPOSITION OF RELEASE|CODE TABLE|0|0|5|CODE TABLE|0|2
+024004|elementName|string|ELEMENT NAME|CCITT IA5|0|0|16|Character|0|2
+024005|isotopeMass|long|ISOTOPE MASS|Numeric|0|0|9|Numeric|0|3
+024011|dose|double|DOSE|mSv|2|0|32|mSv|2|10
+024012|trajectoryDoseDefinedLocationAndExpectedTimeOfArrival|double|TRAJECTORY DOSE (DEFINED LOCATION AND EXPECTED TIME OF ARRIVAL)|mSv|2|0|32|mSv|2|10
+024013|gammaDoseInAirAlongMainTransportPathDefinedLocationAndTimePeriod|double|GAMMA DOSE IN AIR ALONG THE MAIN TRANSPORT PATH (DEFINED LOCATIO|mSv|2|0|32|mSv|2|10
+024021|airConcentrationOfNamedIsotopeTypeIncludingGrossBeta|double|AIR CONCENTRATION (OF NAMED ISOTOPE TYPE INCLUDING GROSS BETA)|Bq m-3|2|0|32|Bq m-3|2|10
+024022|concentrationInPrecipitationOfNamedIsotopeType|double|CONCENTRATION IN PRECIPITATION (OF NAMES ISOTOPE TYPE)|Bq/l|2|0|32|Bq/l|2|10
+024023|pulseRateOfBetaRadiation|double|PULSE RATE OF BETA RADIATION|/s|1|0|14|/s|1|4
+024024|pulseRateOfGammaRadiation|double|PULSE RATE OF GAMMA RADIATION|/s|1|0|14|/s|1|4
+025001|rangeGateLength|long|RANGE-GATE LENGTH|m|-1|0|6|m|-1|2
+025002|numberOfGatesAveraged|long|NUMBER OF GATES AVERAGED|Numeric|0|0|4|Numeric|0|2
+025003|numberOfIntegratedPulses|long|NUMBER OF INTEGRATED PULSES|Numeric|0|0|8|Numeric|0|3
+025004|echoProcessing|table|ECHO PROCESSING|CODE TABLE|0|0|2|CODE TABLE|0|1
+025005|echoIntegration|table|ECHO INTEGRATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025006|zToRConversion|table|Z TO R CONVERSION|CODE TABLE|0|0|3|CODE TABLE|0|1
+025007|zToRConversionFactor|long|Z TO R CONVERSION FACTOR|Numeric|0|0|12|Numeric|0|4
+025008|zToRConversionExponent|long|Z TO R CONVERSION EXPONENT|Numeric|2|0|9|Numeric|2|3
+025009|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025010|clutterTreatment|table|CLUTTER TREATMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+025011|groundOccultationCorrectionScreening|table|GROUND OCCULTATION CORRECTION (SCREENING)|CODE TABLE|0|0|2|CODE TABLE|0|1
+025012|rangeAttenuationCorrection|table|RANGE ATTENUATION CORRECTION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025013|brightBandCorrection|flag|BRIGHT-BAND CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025014|azimuthClutterCutOff|long|AZIMUTH CLUTTER CUT-OFF (SEE NOTE 1)|Numeric|0|0|12|Numeric|0|4
+025015|radomeAttenuationCorrection|flag|RADOME ATTENUATION CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025016|clearAirAttenuationCorrection|double|CLEAR-AIR ATTENUATION CORRECTION|dB/m|5|0|6|dB/m|5|2
+025017|precipitationAttenuationCorrection|flag|PRECIPITATION ATTENUATION CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025018|aToZLawForAttenuationFactor|long|A TO Z LAW FOR ATTENUATION FACTOR|Numeric|7|0|6|Numeric|7|2
+025019|aToZLawForAttenuationExponent|long|A TO Z LAW FOR ATTENUATION EXPONENT|Numeric|2|0|7|Numeric|2|3
+025020|meanSpeedEstimation|table|MEAN SPEED ESTIMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025021|windComputationEnhancement|flag|WIND COMPUTATION ENHANCEMENT|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025025|batteryVoltage|double|BATTERY VOLTAGE|V|1|0|9|V|1|3
+025026|batteryVoltageLargeRange|double|BATTERY VOLTAGE (LARGE RANGE)|V|1|0|12|V|1|4
+025028|operatorOrManufacturerDefinedParameter|long|OPERATOR OR MANUFACTURER DEFINED PARAMETER|Numeric|1|-16384|15|Numeric|1|5
+025029|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+025030|runningMeanSeaSurfaceTemperatureUsage|table|RUNNING MEAN SEA-SURFACE TEMPERATURE USAGE|CODE TABLE|0|0|2|CODE TABLE|0|1
+025032|windProfilerModeInformation|table|WIND PROFILER MODE INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025033|windProfilerSubmodeInformation|table|WIND PROFILER SUBMODE INFORMATION*|CODE TABLE|0|0|2|CODE TABLE|0|1
+025034|windProfilerQualityControlTestResults|flag|WIND PROFILER QUALITY CONTROL TEST RESULTS*|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025036|atmosphericsLocationMethod|table|ATMOSPHERICS LOCATION METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+025040|co2WindProductDerivation|table|CO2 WIND PRODUCT DERIVATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+025041|movingPlatformDirectionReportingMethod|table|MOVING PLATFORM DIRECTION REPORTING METHOD|CODE TABLE|0|0|2|CODE TABLE|0|1
+025042|movingPlatformSpeedReportingMethod|table|MOVING PLATFORM SPEED REPORTING METHOD|CODE TABLE|0|0|2|CODE TABLE|0|1
+025043|waveSamplingIntervalTime|double|WAVE SAMPLING INTERVAL (TIME)|s|4|0|15|s|4|5
+025044|waveSamplingIntervalSpace|double|WAVE SAMPLING INTERVAL (SPACE)|m|2|0|14|m|2|5
+025045|hirsChannelCombination|flag|HIRS CHANNEL COMBINATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+025046|msuChannelCombination|flag|MSU CHANNEL COMBINATION|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+025047|ssuChannelCombination|flag|SSU CHANNEL COMBINATION|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025048|amsuAChannelCombination|flag|AMSU-A CHANNEL COMBINATION|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+025049|amsuBChannelCombination|flag|AMSU-B CHANNEL COMBINATION|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+025050|principalComponentScore|long|PRINCIPAL COMPONENT SCORE|Numeric|4|-131072|18|Numeric|4|6
+025051|avhrrChannelCombination|flag|AVHRR CHANNEL COMBINATION|FLAG TABLE|0|0|7|FLAG TABLE|0|3
+025052|log10OfPrincipalComponentsNormalizedFitToData|long|LOG-10 OF PRINCIPAL COMPONENTS NORMALIZED FIT TO DATA|Numeric|4|0|15|Numeric|4|5
+025053|observationQuality|flag|OBSERVATION QUALITY|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+025054|ssmisSubframeIdNumber|long|SSMIS SUBFRAME ID NEMBER|Numeric|0|0|5|Numeric|0|2
+025055|multiplexerHousekeeping|double|MULTIPLEXER HOUSEKEEPING|K|2|0|16|K|2|5
+025060|softwareIdentification|long|SOFTWARE IDENTIFICATION (SEE NOTE 2)|Numeric|0|0|14|Numeric|0|5
+025061|softwareVersionNumber|string|SOFTWARE IDENTIFICATION AND VERSION NUMBER|CCITT IA5|0|0|96|Character|0|12
+025062|databaseIdentification|long|DATABASE IDENTIFICATION|Numeric|0|0|14|Numeric|0|5
+025065|orientationCorrectionAzimuth|double|ORIENTATION CORRECTION (AZIMUTH)|deg|2|-1000|11|deg|2|4
+025066|orientationCorrectionElevation|double|ORIENTATION CORRECTION (ELEVATION)|deg|2|-1000|11|deg|2|4
+025067|radiosondeReleasePointPressureCorrection|long|RADIOSONDE RELEASE POINT PRESSURE CORRECTION|Pa|0|-8000|14|Pa|0|4
+025068|numberOfArchiveRecomputes|long|NUMBER OF ARCHIVE RECOMPUTES|Numeric|0|0|7|Numeric|0|3
+025069|flightLevelPressureCorrections|flag|FLIGHT LEVEL PRESSURE CORRECTIONS|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025070|majorFrameCount|long|MAJOR FRAME COUNT|Numeric|0|0|4|Numeric|0|2
+025071|frameCount|long|FRAME COUNT|Numeric|0|0|5|Numeric|0|2
+025075|satelliteAntennaCorrectionsVersionNumber|long|SATELLITE ANTENNA CORRECTIONS VERSION NUMBER|Numeric|0|0|5|Numeric|0|2
+025076|log10OfTemperatureRadianceCentralWaveNumberForAtovs|double|LOG-10 OF (TEMPERATURE-RADIANCE CENTRAL WAVENUMBER) FOR ATOVS|log (m-1)|8|0|30|log (m-1)|8|10
+025077|bandwidthCorrectionCoefficient1ForAtovs|long|BANDWIDTH CORRECTION COEFFICIENT 1 FOR ATOVS|Numeric|5|-100000|18|Numeric|5|7
+025078|bandwidthCorrectionCoefficient2ForAtovs|long|BANDWIDTH CORRECTION COEFFICIENT 2 FOR ATOVS|Numeric|5|0|17|Numeric|5|6
+025079|albedoRadianceSolarFilteredIrradianceForAtovs|double|ALBEDO-RADIANCE SOLAR FILTERED IRRADIANCE FOR ATOVS|W m-2|4|0|24|W m-2|4|8
+025080|albedoRadianceEquivalentFilterWidthForAtovs|double|ALBEDO-RADIANCE EQUIVALENT FILTER WIDTH FOR ATOVS|m|10|0|14|m|10|5
+025081|incidenceAngle|double|INCIDENCE ANGLE|deg|3|0|17|deg|3|6
+025082|azimuthAngle|double|AZIMUTH ANGLE|deg|3|0|19|deg|3|6
+025083|faradayRotationalAngle|double|FARADEY ROTATIONAL ANGLE|deg|3|0|19|deg|3|6
+025084|geometricRotationalAngle|double|GEOMETRIC ROTATIONAL ANGLE|deg|5|0|26|deg|5|8
+025085|fractionOfClearPixelsInHirsFov|long|FRACTION OF CLEAR PIXELS IN HIRS FOV|Numeric|0|0|7|Numeric|0|3
+025086|depthCorrectionIndicator|table|DEPTH CORRECTION INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+025090|orbitStateFlag|table|ORBIT STATE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+025091|structureConstantOfRefractionIndexCn2|double|STRUCTURE CONSTANT OF THE REFRACTION INDEX (CN2)|dB|3|-18192|13|dB|3|5
+025092|acousticPropagationVelocity|double|ACOUSTIC PROPAGATION VELOCITY|m/s|2|28000|14|m/s|2|5
+025093|rassComputationCorrection|flag|RASS COMPUTATION CORRECTION|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025095|altimeterStateFlag|flag|ALTIMETER STATE FLAG|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025096|radiometerStateFlag|flag|RADIOMETER STATE FLAG|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+025097|threeDimensionalErrorEstimateOfNavigatorOrbit|table|THREE DIMENSIONAL ERROR ESTIMATE OF THE NAVIGATOR ORBIT|CODE TABLE|0|0|4|CODE TABLE|0|2
+025098|altimeterDataQualityFlag|flag|ALTIMETER DATA QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025099|altimeterCorrectionQualityFlag|flag|ALTIMETER CORRECTION QUALITY|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025100|xbtOrXctdFallRateEquationCoefficientA|long|XBT/XCTD FALL RATE EQUATION COEFFICIENT A|Numeric|5|0|20|Numeric|5|6
+025101|xbtOrXctdFallRateEquationCoefficientB|long|XBT/XCTD FALL RATE EQUATION COEFFICIENT B|Numeric|5|-500000|21|Numeric|5|6
+025102|numberOfMissingLinesExcludingDataGaps|long|NUMBER OF MISSING LINES EXCLUDING DATA GAPS|Numeric|0|0|8|Numeric|0|3
+025103|numberOfDirectionalBins|long|NUMBER OF DIRECTIONAL BINS|Numeric|0|0|8|Numeric|0|3
+025104|numberOfWavelengthBins|long|NUMBER OF WAVE-LENGTH BINS|Numeric|0|0|8|Numeric|0|3
+025105|firstDirectionalBin|double|FIRST DIRECTIONAL BIN|deg|3|0|19|NA|0|0
+025106|directionalBinStep|double|DIRECTIONAL BIN STEP|deg|3|0|19|NA|0|0
+025107|firstWavelengthBin|double|FIRST WAVE-LENGTH BIN|m|3|0|29|m|3|9
+025108|lastWavelengthBin|double|LAST WAVE-LENGTH BIN|m|3|0|29|m|3|9
+025110|imageProcessingSummary|flag|IMAGE PROCESSING SUMMARY|FLAG TABLE|0|0|10|NA|0|0
+025111|numberOfInputDataGaps|long|NUMBER OF INPUT DATA GAPS|Numeric|0|0|8|Numeric|0|3
+025120|ra2L2ProcessingFlag|table|RA2-L2-PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025121|ra2L2ProcessingQuality|long|RA2-L2-PROCESSING QUALITY|%|0|0|7|%|0|3
+025122|hardwareConfigurationForRf|table|HARDWARE CONFIGURATION FOR RF|CODE TABLE|0|0|2|CODE TABLE|0|1
+025123|hardwareConfigurationForHpa|table|HARDWARE CONFIGURATION FOR HPA|CODE TABLE|0|0|2|CODE TABLE|0|1
+025124|mwrL2ProcessingFlag|table|MWR L2 PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025125|mwrL2ProcessingQuality|long|MWR L2-PROCESSING QUALITY|%|0|0|7|%|0|3
+025126|modelDryTroposphericCorrection|double|MODEL DRY TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025127|invertedBarometerCorrection|double|INVERTED BAROMETER CORRECTION|m|3|-32768|16|m|3|5
+025128|modelWetTroposphericCorrection|double|MODEL WET TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025129|mwrDerivedWetTroposphericCorrection|double|MWR DERIVED WET TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025130|ra2IonosphericCorrectionOnKuBand|double|RA2 IONOSPHERIC CORRECTION ON KU BAND|m|3|-32768|16|m|3|5
+025131|ionosphericCorrectionFromDorisOnKuBand|double|IONOSPHERIC CORRECTION FROM DORIS ON KU BAND|m|3|-32768|16|m|3|5
+025132|ionosphericCorrectionFromModelOnKuBand|double|IONOSPHERIC CORRECTION FROM MODEL ON KU BAND|m|3|-32768|16|m|3|5
+025133|seaStateBiasCorrectionOnKuBand|double|SEA STATE BIAS CORRECTION ON KU BAND|m|3|-32768|16|m|3|5
+025134|ra2IonosphericCorrectionOnSBand|double|RA2 IONOSPHERIC CORRECTION ON S BAND|m|3|-32768|16|m|3|5
+025135|ionosphericCorrectionFromDorisOnSBand|double|IONOSPHERIC CORRECTION FROM DORIS ON S BAND|m|3|-32768|16|m|3|5
+025136|ionosphericCorrectionFromModelOnSBand|double|IONOSPHERIC CORRECTION FROM MODEL ON S BAND|m|3|-32768|16|m|3|5
+025137|seaStateBiasCorrectionOnSBand|double|SEA STATE BIAS CORRECTION ON S BAND|m|3|-32768|16|m|3|5
+025138|averageSignalToNoiseRatio|long|AVERAGE SIGNAL TO NOISE RATION|Numeric|0|-2048|12|Numeric|0|4
+025140|startChannel|long|START CHANNEL|Numeric|0|0|14|Numeric|0|5
+025141|endChannel|long|END CHANNEL|Numeric|0|0|14|Numeric|0|5
+025142|channelScaleFactor|long|CHANNEL SCALE FACTOR|Numeric|0|0|6|Numeric|0|2
+025143|linearCoefficient|long|LINEAR COEFFICIENT|Numeric|6|-5000000|24|Numeric|6|8
+025150|methodOfTropicalCycloneIntensityAnalysisUsingSatelliteData|table|SATELLITE INTENSITY ANALYSIS METHOD OF TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|2|2
+025160|kuBandNetInstrumentalCorrection|double|KU BAND INSTRUMENTAL CORRECTION|m|4|-120000|18|NA|0|0
+025161|cBandNetInstrumentalCorrection|double|C BAND INSTRUMENTAL CORRECTION|m|4|-120000|18|NA|0|0
+025162|seaStateBiasCorrectionOnCBand|double|SEA STATE BIAS CORRECTION ON C BAND|m|4|-6000|13|NA|0|0
+025163|altimeterIonosphericCorrectionOnKuBand|double|ALTIMETER IONOSPHERIC CORRECTION ON KU BAND|m|3|-32768|16|NA|0|0
+025164|radiometerWetTroposphericCorrection|double|RADIOMETER WET|m|4|-5000|13|NA|0|0
+025174|smosInformationFlag|flag|SMOS INFORMATION FLAG|FLAG TABLE|0|0|14|FLAG TABLE|0|5
+026001|principalTimeOfDailyReadingInUtcOfMaximumTemperature|double|PRINCIPAL TIME OF DAILY READING IN UTC OF MAXIMUM TEMPERATURE|h|1|0|12|h|1|3
+026002|principalTimeOfDailyReadingInUtcOfMinimumTemperature|double|PRINCIPAL TIME OF DAILY READING IN UTC OF MINIMUM TEMPERATURE|h|1|0|12|h|1|3
+026003|timeDifference|long|TIME DIFFERENCE|min|0|-1440|12|min|0|4
+026010|hoursIncluded|flag|HOURS INCLUDED|FLAG TABLE|0|0|26|FLAG TABLE|0|9
+026020|durationOfPrecipitation|long|DURATION OF PRECIPITATION|min|0|0|11|min|0|4
+027001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+027002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+027003|alternateLatitude|double|ALTERNATE LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+027004|alternateLatitude|double|ALTERNATE LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+027010|footprintAxis1|long|FOOTPRINT AXIS 1|m|-1|0|14|m|-1|5
+027020|satelliteLocationCounter|long|SATELLITE LOCATION COUNTER|Numeric|0|0|16|Numeric|0|5
+027021|satelliteSublocationDimension|long|SATELLITE SUBLOCATION DIMENSION|Numeric|0|0|16|Numeric|0|5
+027031|DistanceFromEarthCentreInDirectionOf0DegreesLongitude|double|IN DIRECTION OF 0 DEGREES LONGITUDE, DISTANCE FROM THE EARTH'S C|m|2|-1073741824|31|m|2|10
+027080|viewingAzimuthAngle|double|VIEWING AZIMUTH ANGLE|deg|2|0|16|deg|0|5
+028001|longitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+028002|longitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+028003|alternateLongitude|double|ALTERNATE LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+028004|alternateLongitude|double|ALTERNATE LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+028010|footprintAxis2|long|FOOTPRINT AXIS 2|m|-1|0|14|m|-1|5
+028031|DistanceFromEarthCentreInDirection90DegreesEast|double|IN DIRECTION 90 DEGREES EAST, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10
+029001|projectionType|table|PROJECTION TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+029002|coordinateGridType|table|CO-ORDINATE GRID TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+030001|pixelValue4Bits|long|PIXEL VALUE (4 BITS)|Numeric|0|0|4|Numeric|0|2
+030002|pixelValue8Bits|long|PIXEL VALUE (8 BITS)|Numeric|0|0|8|Numeric|0|3
+030004|pixelValue16Bits|long|PIXEL VALUE (16 BITS)|Numeric|0|0|16|Numeric|0|5
+030010|numberOfGridPoints|long|NUMBER OF GRID POINTS|Numeric|0|0|13|Numeric|0|4
+030021|numberOfPixelsPerRow|long|NUMBER OF PIXELS PER ROW|Numeric|0|0|12|Numeric|0|4
+030022|numberOfPixelsPerColumn|long|NUMBER OF PIXELS PER COLUMN|Numeric|0|0|12|Numeric|0|4
+030031|pictureType|table|PICTURE TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+030032|combinationWithOtherData|flag|COMBINATION WITH OTHER DATA|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+031000|shortDelayedDescriptorReplicationFactor|long|SHORT DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|1|Numeric|0|1
+031001|delayedDescriptorReplicationFactor|long|DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|8|Numeric|0|3
+031002|extendedDelayedDescriptorReplicationFactor|long|EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|16|Numeric|0|5
+031011|delayedDescriptorAndDataRepetitionFactor|long|DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|8|Numeric|0|3
+031012|extendedDelayedDescriptorAndDataRepetitionFactor|long|EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|16|Numeric|0|5
+031021|associatedFieldSignificance|table|ASSOCIATED FIELD SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+031031|dataPresentIndicator|flag|DATA PRESENT INDICATOR|FLAG TABLE|0|0|1|FLAG TABLE|0|1
+033002|qualityInformation|table|QUALITY INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033003|qualityInformation|table|QUALITY INFORMATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+033005|qualityInformationAwsData|flag|QUALITY INFORMATION (AWS DATA)|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+033006|internalMeasurementStatusInformationAws|table|INTERNAL MEASUREMENT STATUS INFORMATION (AWS)|CODE TABLE|0|0|3|CODE TABLE|0|1
+033007|percentConfidence|long|PER CENT CONFIDENCE|%|0|0|7|%|0|3
+033009|relativeError|double|RELATIVE ERROR|%|6|0|20|%|0|7
+033015|dataQualityCheckIndicator|table|DATA QUALITY CHECK INDICATOR|CODE TABLE|0|0|6|CODE TABLE|0|2
+033020|qualityControlIndicationOfFollowingValue|table|QUALITY CONTROL INDICATION OF FOLLOWING VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+033021|qualityOfFollowingValue|table|QUALITY OF FOLLOWING VALUE|CODE TABLE|0|0|2|CODE TABLE|0|1
+033022|qualityOfBuoySatelliteTransmission|table|QUALITY OF BUOY SATELLITE TRANSMISSION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033023|qualityOfBuoyLocation|table|QUALITY OF BUOY LOCATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033024|stationElevationQualityMarkForMobileStations|table|STATION ELEVATION QUALITY MARK (FOR MOBILE STATIONS)|CODE TABLE|0|0|4|CODE TABLE|0|2
+033025|acarsInterpolatedValuesIndicator|table|ACARS INTERPOLATED VALUES|CODE TABLE|0|0|3|CODE TABLE|0|1
+033026|moistureQuality|table|MOISTURE QUALITY|CODE TABLE|0|0|6|CODE TABLE|0|2
+033027|locationQualityClassRangeOfRadiusOf66Confidence|table|LOCATION QUALITY CLASS (RANGE OF RADIUS OF 66 % CONFIDENCE)|CODE TABLE|0|0|3|CODE TABLE|0|1
+033028|snapshotOverallQuality|table|SNAPSHOT OVERALL QUALITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+033030|scanLineStatusFlagsForAtovs|flag|SCAN LINE STATUS FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033031|scanLineQualityFlagsForAtovs|flag|SCAN LINE QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033032|channelQualityFlagsForAtovs|flag|CHANNEL QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033033|fieldOfViewQualityFlagsForAtovs|flag|FIELD OF VIEW QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033035|qualityControl|table|MANUAL/AUTOMATIC QUALITY CONTROL|CODE TABLE|0|0|4|CODE TABLE|0|2
+033036|nominalConfidenceThreshold|long|NOMINAL CONFIDENCE THRESHOLD|%|0|0|7|%|0|3
+033037|windCorrelationError|flag|WIND CORRELATION ERROR|FLAG TABLE|0|0|20|FLAG TABLE|0|7
+033038|qualityFlagsForGroundBasedGnssData|flag|QUALITY FLAGS FOR GROUND-BASED GNSS DATA|FLAG TABLE|0|0|10|FLAG TABLE|0|4
+033039|radioOccultationDataQualityFlags|flag|QUALITY FLAGS FOR RADIO OCCULTATION DATA|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+033040|confidenceInterval|long|CONFIDENCE INTERVAL|%|0|0|7|%|0|3
+033041|attributeOfFollowingValue|table|ATTRIBUTE OF FOLLOWING VALUE|CODE TABLE|0|0|2|CODE TABLE|0|1
+033042|typeOfLimitRepresentedByFollowingValue|table|TYPE OF LIMIT REPRESENTED BY FOLLOWING VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+033043|astConfidence|flag|AST CONFIDENCE|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+033044|asarQualityInformation|flag|ASAR QUALITY INFORMATION|FLAG TABLE|0|0|15|FLAG TABLE|0|5
+033045|probabilityOfFollowingEvent|long|PROBABILITY OF FOLLOWING EVENT|%|0|0|7|%|0|3
+033046|conditionalProbability|long|CONDITIONAL PROBABILITY OF FOLLOWING EVENT WITH RESPECT TO SPECI|%|0|0|7|%|0|3
+033047|measurementConfidenceData|flag|MEASUREMENT CONFIDENCE DATA|FLAG TABLE|0|0|31|FLAG TABLE|0|11
+033048|confidenceMeasureOfSarInversion|table|CONFIDENCE MEASURE OF SAR INVERSION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033049|confidenceMeasureOfWindRetrieval|table|CONFIDENCE MEASURE OF WIND RETRIEVAL|CODE TABLE|0|0|2|CODE TABLE|0|1
+033050|globalGtsppQualityFlag|table|GLOBAL GTSPP QUALITY FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+033052|sBandOceanRetrackingQuality|flag|S BAND OCEAN RETRACKING QUALITY|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+033053|kuBandOceanRetrackingQuality|flag|KU BAND OCEAN RETRACKING QUALITY|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+033060|gqisFlagQual|table|GQISFLAGQUAL-INDIVIDUAL IASI-SYSTEM QUALITY FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+033061|gqisQualIndex|long|GQISQUALINDEX - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE|%|0|0|7|%|0|3
+033062|gqisQualIndexLoc|long|GQISQUALINDEXLOC - INDICATOR FOR GEOMETRIC QUALITY INDEX|%|0|0|7|%|0|3
+033063|gqisQualIndexRad|long|GQISQUALINDEXRAD - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE|%|0|0|7|%|0|3
+033064|gqisQualIndexSpect|long|GQISQUALINDEXSPECT - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE|%|0|0|7|%|0|3
+033065|gqisSysTecQual|long|GQISSYSTECSONDQUAL - OUTPUT OF SYSTEM TEC QUALITY FUNCTION|Numeric|0|0|24|Numeric|0|24
+033066|sbuvTotalOzoneQuality|table|SBUV TOTAL OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033067|sbuvProfileOzoneQuality|table|SBUV PROFILE OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033070|totalOzoneQuality|table|TOTAL OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033071|profileOzoneQuality|table|PROFILE OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+035000|fmAndRegionalCodeNumber|table|FM AND REGIONAL CODE NUMBER|CODE TABLE|0|0|10|CODE TABLE|0|3
+035001|timeFrameForMonitoring|table|TIME-FRAME FOR MONITORING|CODE TABLE|0|0|3|CODE TABLE|0|1
+035011|numberOfReportsActuallyReceived|long|NUMBER OF REPORTS ACTUALLY RECEIVED|Numeric|0|0|14|Numeric|0|4
+035021|bulletinBeingMonitoredTtaaii|string|BULLETIN BEING MONITORED (TTAAII)|CCITT IA5|0|0|48|Character|0|6
+035022|bulletinBeingMonitoredYygggg|string|BULLETIN BEING MONITORED (YYGGGG)|CCITT IA5|0|0|48|Character|0|6
+035023|bulletinBeingMonitoredCccc|string|BULLETIN BEING MONITORED (CCCC)|CCITT IA5|0|0|32|Character|0|4
+035024|bulletinBeingMonitoredBbb|string|BULLETIN BEING MONITORED (BBB)|CCITT IA5|0|0|24|Character|0|3
+035030|discrepanciesInAvailabilityOfExpectedData|table|DISCREPANCIES IN THE AVAILABILITY OF EXPECTED DATA|CODE TABLE|0|0|4|CODE TABLE|0|1
+035031|qualifierOnMonitoringResults|table|QUALIFIER ON MONITORING RESULTS|CODE TABLE|0|0|7|CODE TABLE|0|2
+035032|causeOfMissingData|table|CAUSE OF MISSING DATA|CODE TABLE|0|0|4|CODE TABLE|0|1
+035033|observationAndCollectionDeficiencies|table|OBSERVATION AND COLLECTION DEFICIENCIES|CODE TABLE|0|0|7|CODE TABLE|0|2
+035034|statisticalTrendsForAvailabilityOfDataDuringSurveyPeriods|table|STATISTICAL TRENDS FOR AVAILABILITY OF DATA (DURING THE SURVEY P|CODE TABLE|0|0|3|CODE TABLE|0|1
+035035|reasonForTermination|table|REASON FOR TERMINATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+040001|surfaceSoilMoisture|double|SURFACE SOIL MOISTURE (MS)|%|1|0|10|%|1|4
+040002|estimatedErrorInSurfaceSoilMoisture|double|ESTIMATED ERROR IN SURFACE SOIL MOISTURE|%|1|0|10|%|1|4
+040003|meanSurfaceSoilMoisture|long|MEAN SURFACE SOIL MOISTURE|Numeric|3|0|10|Numeric|3|4
+040004|rainFallDetection|long|RAIN FALL DETECTION|Numeric|3|0|10|Numeric|3|4
+040005|soilMoistureCorrectionFlag|flag|SOIL MOISTURE CORRECTION FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040006|soilMoistureProcessingFlag|flag|SOIL MOISTURE PROCESSING FLAG|FLAG TABLE|0|0|16|FLAG TABLE|0|5
+040007|soilMoistureQuality|double|SOIL MOISTURE QUALITY|%|1|0|10|%|1|4
+040008|frozenLandSurfaceFraction|double|FROZEN LAND SURFACE FRACTION|%|1|0|10|%|1|4
+040009|inundationAndWetlandFraction|double|INUNDATION AND WETLAND FRACTION|%|1|0|10|%|1|4
+040010|topographicComplexity|double|TOPOGRAPHIC COMPLEXITY|%|1|0|10|%|1|4
+040011|interpolationFlag|flag|INTERPOLATION FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040012|radiometerDataQualityFlag|flag|RADIOMETER DATA QUALITY FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040013|radiometerBrightnessTemperatureInterpretationFlag|table|RADIOMETER BRIGHTNESS TEMPERATURE INTERPOLATION FLAG|CODE TABLE|0|0|3|NA|0|0
+040014|highFrequencyFluctuationsOfSeaSurfaceTopographyCorrection|double|HIGH FREQUENCY FLUCTUATIONS OF THE SEA SURFACE TOPOGRAPHY CORREC|m|4|-3000|13|NA|0|0
+040018|averageOfImagerMeasurements|double|GLACAVGLMAGLLS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|NA|0|0
+040019|giacvarimagiisVarianceOfImagerMeasurements|double|GLACVARLMAGLLS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|NA|0|0
+040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|NA|0|0
+040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH SNOW/I|%|0|0|7|NA|0|0
+040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|NA|0|0
diff --git a/definitions/bufr/tables/0/wmo/7/sequence.def b/definitions/bufr/tables/0/wmo/7/sequence.def
new file mode 100644
index 0000000..037fc3a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/7/sequence.def
@@ -0,0 +1,678 @@
+"300002" = [  000002, 000003 ]
+"300003" = [  000010, 000011, 000012 ]
+"300004" = [  300003, 000013, 000014, 000015, 000016, 000017, 000018, 000019, 000020 ]
+"300010" = [  300003, 101000, 031001, 000030 ]
+"301001" = [  001001, 001002 ]
+"301002" = [  001003, 001004, 001005 ]
+"301003" = [  001011, 001012, 001013 ]
+"301004" = [  001001, 001002, 001015, 002001 ]
+"301005" = [  001035, 001034 ]
+"301011" = [  004001, 004002, 004003 ]
+"301012" = [  004004, 004005 ]
+"301013" = [  004004, 004005, 004006 ]
+"301014" = [  102002, 301011, 301012 ]
+"301021" = [  005001, 006001 ]
+"301022" = [  005001, 006001, 007001 ]
+"301023" = [  005002, 006002 ]
+"301024" = [  005002, 006002, 007001 ]
+"301025" = [  301023, 004003, 301012 ]
+"301026" = [  301021, 004003, 004003, 004004, 004004, 004005, 004005 ]
+"301027" = [  008007, 101000, 031001, 301028, 008007 ]
+"301028" = [  008040, 033042, 007010, 101000, 031002, 301023, 019007, 008040 ]
+"301031" = [  301001, 002001, 301011, 301012, 301022 ]
+"301032" = [  301001, 002001, 301011, 301012, 301024 ]
+"301033" = [  001005, 002001, 301011, 301012, 301021 ]
+"301034" = [  001005, 002001, 301011, 301012, 301023 ]
+"301035" = [  001005, 001012, 001013, 002001, 301011, 301012, 301023 ]
+"301036" = [  301003, 002001, 301011, 301012, 301023 ]
+"301037" = [  301001, 002011, 002012, 301011, 301012, 301022 ]
+"301038" = [  301001, 002011, 002012, 301011, 301012, 301024 ]
+"301039" = [  301003, 002011, 002012, 301011, 301012, 301023 ]
+"301040" = [  301003, 002011, 002012, 301011, 301012, 301024 ]
+"301041" = [  001007, 002021, 002022, 301011, 301012 ]
+"301042" = [  301041, 301021 ]
+"301043" = [  001007, 002023, 301011, 301013, 301021 ]
+"301044" = [  001007, 002024, 301011, 301013, 301021 ]
+"301045" = [  301011, 301012, 201138, 202131, 004006, 201000, 202000, 304030, 304031 ]
+"301046" = [  001007, 001012, 002048, 021119, 025060, 202124, 002026, 002027, 202000, 005040
+               ]
+"301047" = [  001007, 025060, 001033, 001034, 001012, 301045, 002021, 301011, 301012, 201138,
+               202131, 004006, 201000, 202000, 301023 ]
+"301048" = [  002104, 002121, 002113, 002026, 002027, 002111, 002140, 202127, 001013, 202126,
+               007001, 202000, 025010, 021064 ]
+"301049" = [  002111, 002112, 021062, 021063, 021065 ]
+"301051" = [  001006, 002061, 301011, 301012, 301021, 008004 ]
+"301055" = [  001005, 002001, 301011, 301012, 301021, 001012, 001014 ]
+"301062" = [  101000, 031001, 301001 ]
+"301065" = [  001006, 001008, 002001, 002002, 002005, 002062, 002070, 002065 ]
+"301066" = [  301011, 301013, 301023, 007004, 002064, 008004 ]
+"301070" = [  002143, 002142, 002144 ]
+"301071" = [  001007, 001031, 002020, 002028, 002029 ]
+"301072" = [  301071, 301011, 301013, 301021 ]
+"301074" = [  002143, 002142, 002145, 002146 ]
+"301075" = [  301001, 001015, 301024, 008021, 301011, 301012 ]
+"301076" = [  002011, 002143, 002142 ]
+"301089" = [  001101, 001102 ]
+"301090" = [  301004, 301011, 301012, 301021, 007030, 007031 ]
+"301091" = [  002180, 002181, 002182, 002183, 002184, 002179, 002186, 002187, 002188, 002189
+               ]
+"301092" = [  001011, 001003, 002001, 301011, 301012, 301021, 007030, 007031, 033024 ]
+"301093" = [  301036, 007030, 007031 ]
+"301110" = [  301001, 001011, 002011, 002014, 002003 ]
+"301111" = [  301001, 001011, 002011, 002013, 002014, 002003 ]
+"301112" = [  001006, 002011, 002013, 002014, 002003 ]
+"301113" = [  008021, 301011, 301013 ]
+"301114" = [  301021, 007030, 007031, 007007, 033024 ]
+"301120" = [  301001, 001094, 002011, 301121 ]
+"301121" = [  008041, 301122, 301021, 007031, 007007 ]
+"301122" = [  301011, 301012, 201135, 202130, 004006, 202000, 201000 ]
+"301123" = [  102002, 008041, 001062, 301001, 001094, 002011, 001018, 001095, 025061, 025068,
+               001082, 001083, 001081, 002067, 002066, 002014, 025067, 025065, 025066, 002095,
+               002096, 002097, 002016, 002083, 002080, 002081, 001093, 002084, 002085, 002086,
+               002082, 008041, 301011 ]
+"301125" = [  001033, 001034, 025060, 001007, 002019, 001012 ]
+"302001" = [  010004, 010051, 010061, 010063 ]
+"302002" = [  010004, 007004, 010003, 010061, 010063 ]
+"302003" = [  011011, 011012, 012004, 012006, 013003, 020001, 020003, 020004, 020005 ]
+"302004" = [  020010, 008002, 020011, 020013, 020012, 020012, 020012 ]
+"302005" = [  008002, 020011, 020012, 020013 ]
+"302006" = [  010004, 010051, 010062, 010063 ]
+"302011" = [  302001, 302003, 302004 ]
+"302012" = [  302002, 302003, 302004 ]
+"302013" = [  302006, 302003, 101000, 031001, 302005 ]
+"302021" = [  022001, 022011, 022021 ]
+"302022" = [  022002, 022012, 022022 ]
+"302023" = [  022003, 022013, 022023 ]
+"302024" = [  302022, 101002, 302023 ]
+"302031" = [  302001, 010062, 007004, 010009 ]
+"302032" = [  007032, 012101, 012103, 013003 ]
+"302033" = [  007032, 020001 ]
+"302034" = [  007032, 013023 ]
+"302035" = [  302032, 302033, 302034, 007032, 302004, 101000, 031001, 302005 ]
+"302036" = [  105000, 031001, 008002, 020011, 020012, 020014, 020017 ]
+"302037" = [  020062, 013013, 012113 ]
+"302038" = [  020003, 004024, 020004, 020005 ]
+"302039" = [  004024, 014031 ]
+"302040" = [  007032, 102002, 004024, 013011 ]
+"302041" = [  007032, 004024, 004024, 012111, 004024, 004024, 012112 ]
+"302042" = [  007032, 002002, 008021, 004025, 011001, 011002, 008021, 103002, 004025, 011043,
+               011041 ]
+"302043" = [  302038, 101002, 302039, 302040, 302041, 302042, 007032 ]
+"302044" = [  004024, 002004, 013033 ]
+"302045" = [  004024, 014002, 014004, 014016, 014028, 014029, 014030 ]
+"302046" = [  004024, 004024, 012049 ]
+"302047" = [  102003, 008002, 020054 ]
+"302048" = [  005021, 007021, 020012, 005021, 007021 ]
+"302049" = [  008002, 020011, 020013, 020012, 020012, 020012, 008002 ]
+"302050" = [  008041, 005021, 007005, 202130, 006021, 202000, 008041, 201131, 202129, 002115,
+               010004, 002115, 013003, 202000, 201000, 002115, 011001, 011002, 002115, 102002,
+               012101, 004024, 002115, 012103, 012102, 101003, 020012, 020011, 020013, 101002,
+               020003 ]
+"302051" = [  010004, 010051, 007004, 010003, 012004, 012051, 012016, 012017, 013004, 102004,
+               008051, 008020 ]
+"302052" = [  007032, 007033, 012101, 002039, 012102, 012103, 013003 ]
+"302053" = [  007032, 007033, 020001 ]
+"302054" = [  302052, 302053, 007033, 302034, 007032, 302004, 101000, 031001, 302005 ]
+"302055" = [  020031, 020032, 020033, 020034, 020035, 020036, 020037, 020038 ]
+"302056" = [  002038, 007063, 022043, 007063 ]
+"302057" = [  302056, 302021, 302024 ]
+"302058" = [  007032, 007033, 004024, 004024, 012111, 004024, 004024, 012112 ]
+"302059" = [  007032, 007033, 002002, 008021, 004025, 011001, 011002, 008021, 103002, 004025,
+               011043, 011041 ]
+"302060" = [  302038, 302040, 302058, 302059 ]
+"302062" = [  302001, 302052, 302053, 007033, 101000, 031000, 302034, 007032, 101000, 031001,
+               302005, 008002, 101000, 031000, 302055, 101000, 031000, 302056, 101000, 031000,
+               302021, 101000, 031000, 302024 ]
+"302063" = [  302038, 101000, 031000, 302040, 101000, 031000, 302058, 302059 ]
+"302066" = [  020023, 020024, 020027, 020054, 020023, 020027, 020054, 020025, 020026, 020027,
+               020040, 020066, 020027, 020021, 020067, 020027 ]
+"302069" = [  007032, 007033, 033041, 020001 ]
+"302070" = [  007032, 007033, 011001, 011002, 011043, 011041, 011016, 011017 ]
+"302071" = [  007032, 007033, 008021, 004025, 011001, 011002, 008021, 103002, 004025, 011043,
+               011041, 004025, 011016, 011017 ]
+"302072" = [  007032, 007033, 012101, 012103, 013003 ]
+"302073" = [  020010, 105004, 008002, 020011, 020012, 033041, 020013 ]
+"302074" = [  020003, 004025, 020004, 020005 ]
+"302075" = [  008021, 004025, 013055, 013058, 008021 ]
+"302076" = [  020021, 020022, 026020, 020023, 020024, 020025, 020026 ]
+"302077" = [  007032, 007033, 004025, 012111, 012112, 007032, 004025, 012112 ]
+"302078" = [  002176, 020062, 002177, 013013 ]
+"302079" = [  007032, 002175, 002178, 004025, 013011 ]
+"302080" = [  002185, 004025, 013033 ]
+"302081" = [  004025, 014031 ]
+"302082" = [  004025, 014002, 014004, 014016, 014028, 014029, 014030 ]
+"302083" = [  004025, 008023, 010004, 011001, 011002, 012101, 013003, 008023 ]
+"303001" = [  007003, 011001, 011002 ]
+"303002" = [  007004, 011001, 011002 ]
+"303003" = [  007004, 010003, 012001, 012003 ]
+"303004" = [  007004, 010003, 012001, 012003, 011001, 011002 ]
+"303011" = [  007003, 008001, 011001, 011002 ]
+"303012" = [  007004, 008001, 011001, 011002 ]
+"303013" = [  007004, 008001, 010003, 012001, 013003, 011001, 011002 ]
+"303014" = [  007004, 008001, 010003, 012001, 012003, 011001, 011002 ]
+"303021" = [  007004, 007004, 204007, 031021 ]
+"303022" = [  303021, 010003, 204000 ]
+"303023" = [  303021, 012001, 204000 ]
+"303024" = [  303021, 013016, 204000 ]
+"303025" = [  002025, 204007, 031021, 012063, 204000 ]
+"303026" = [  007004, 008003, 204007, 031021, 012001, 204000 ]
+"303027" = [  007004, 204007, 031021, 010003, 204000 ]
+"303031" = [  007004, 008003, 007021, 007022, 008012, 012061 ]
+"303032" = [  020011, 020016 ]
+"303033" = [  020010, 020016 ]
+"303040" = [  008041, 004025, 004026, 301021, 301122, 201131, 202129, 025069, 007004, 013003,
+               202000, 201000, 002013, 012101, 010009, 102002, 008040, 035035 ]
+"303041" = [  002152, 002023, 007004, 011001, 011002, 002153, 002154, 012071 ]
+"303050" = [  004086, 008042, 007004, 005015, 006015, 011001, 011002 ]
+"303051" = [  004086, 008042, 007004, 005015, 006015, 011061, 011062 ]
+"303052" = [  004086, 008042, 007009, 005015, 006015, 011001, 011002 ]
+"303053" = [  004086, 008042, 007009, 005015, 006015, 011061, 011062 ]
+"303054" = [  004086, 008042, 007004, 010009, 005015, 006015, 012101, 012103, 011001, 011002
+               ]
+"304001" = [  008003, 010004, 012001, 011001, 011002 ]
+"304002" = [  008003, 010004, 011001, 011002 ]
+"304003" = [  008003, 012001 ]
+"304004" = [  008003, 010004, 020010, 012001 ]
+"304005" = [  002024, 007004, 007004, 013003 ]
+"304006" = [  014001, 014001, 014003 ]
+"304011" = [  002163, 002164, 008012, 007024, 002057, 008021, 004001, 004002, 004003, 004004,
+               008021, 004024, 110004, 008021, 004004, 004005, 004006, 008021, 004004, 004005,
+               004006, 011001, 011002, 103010, 002163, 007004, 012001 ]
+"304030" = [  027031, 028031, 010031 ]
+"304031" = [  001041, 001042, 001043 ]
+"304032" = [  002153, 002154, 020081, 020082, 020012 ]
+"304033" = [  002152, 002166, 002167, 002153, 002154, 012075, 012076, 012063 ]
+"304034" = [  102004, 027001, 028001, 007022, 005043, 020010, 020016, 033003, 010040 ]
+"304035" = [  002153, 002154, 012063, 008001, 012063, 008001, 012063, 008001, 008003, 012063,
+               008003, 012063, 008003, 012063, 008003 ]
+"304036" = [  020082, 008012, 020082, 008012, 020081, 008003, 020081, 008003, 020081, 008003,
+               020081, 008003 ]
+"304037" = [  002153, 002154, 012063, 008011, 012063, 008011, 012063, 008011, 008003, 012063,
+               008003, 012063, 008003, 012063, 008003 ]
+"305003" = [  301012, 004065, 101000, 031001, 305001 ]
+"305006" = [  013072, 013082, 013019, 012001, 013073, 013060 ]
+"305007" = [  301029, 301012, 004065, 101000, 031001, 305006 ]
+"305008" = [  305006, 012030 ]
+"305009" = [  301029, 301012, 004065, 101000, 031001, 305008 ]
+"305011" = [  301029, 301012, 004065, 101000, 031001, 305010 ]
+"305018" = [  301029, 301012, 004065, 103000, 031001, 305008, 305016, 305017 ]
+"306001" = [  002032, 102000, 031001, 007062, 022042 ]
+"306002" = [  002031, 022004, 022031 ]
+"306003" = [  002002, 011011, 011012, 012004 ]
+"306004" = [  002032, 002033, 103000, 031001, 007062, 022043, 022062 ]
+"306005" = [  002031, 103000, 031001, 007062, 022004, 022031 ]
+"306006" = [  306003, 306002, 022063 ]
+"306007" = [  001012, 001014, 306008, 004024, 027003, 028003 ]
+"306008" = [  002034, 002035, 002036 ]
+"306019" = [  001075, 301011, 301012, 022042, 022120, 022121, 004015, 004065 ]
+"306020" = [  306024, 102006, 022038, 022039 ]
+"306021" = [  001075, 301011, 301012, 022122, 022123, 012001, 303002 ]
+"306022" = [  001075, 301011, 301012, 022038, 022039 ]
+"306023" = [  001015, 301023, 301011, 301012, 022038, 022039, 022120, 022121 ]
+"306024" = [  001075, 301011, 301012, 022042, 022120, 022121, 004025, 004015 ]
+"306025" = [  306019, 102006, 022038, 022039 ]
+"307001" = [  301031, 302011 ]
+"307002" = [  301032, 302011 ]
+"307003" = [  307001, 101000, 031001, 302005 ]
+"307004" = [  307002, 101000, 031001, 302005 ]
+"307005" = [  307001, 101004, 302005 ]
+"307006" = [  307002, 101004, 302005 ]
+"307007" = [  301031, 302012 ]
+"307008" = [  301032, 302012 ]
+"307009" = [  301031, 302013 ]
+"307011" = [  001063, 002001, 301011, 301012, 301024, 007006, 011001, 011016, 011017, 011002,
+               011041, 007006, 012001, 012003, 010052, 020009 ]
+"307012" = [  103000, 031001, 008023, 005021, 020001 ]
+"307013" = [  106000, 031001, 001064, 008014, 020061, 008014, 020061, 020018 ]
+"307014" = [  101000, 031001, 020019 ]
+"307015" = [  101000, 031001, 302005, 020002 ]
+"307016" = [  101000, 031001, 020020 ]
+"307017" = [  101000, 031001, 011070 ]
+"307018" = [  008016, 102000, 031001, 008017, 301012, 104000, 031001, 007006, 011001, 011002,
+               011041, 020009, 101000, 031001, 020001, 307014 ]
+"307020" = [  307011, 307014, 307016 ]
+"307021" = [  307011, 307012, 307013, 307014, 307015, 307016, 307017, 307018, 307015 ]
+"307022" = [  001015, 301011, 301012, 301022, 008021, 004025, 010004, 012001, 013003, 033038,
+               008022, 106025, 002020, 001050, 005021, 007021, 015031, 015032, 008060, 015033,
+               015034, 008060, 015033, 015034, 015035, 201131, 202129, 013016, 202000, 201000,
+               015011 ]
+"307030" = [  015001, 015002 ]
+"307031" = [  008022, 008023, 015001, 008023, 015001, 008023, 015002 ]
+"307041" = [  301001, 001015, 301022, 301011, 301012, 301070, 307030 ]
+"307042" = [  301001, 001015, 301022, 301011, 301012, 008021, 004025, 301070, 307031 ]
+"307043" = [  301001, 001015, 301024, 301011, 301012, 301074, 307030 ]
+"307045" = [  001063, 008079, 002001, 301011, 301012, 301024, 007032, 011001, 011016, 011017,
+               008054, 011083, 011084, 011002, 008054, 011085, 011086, 011041, 008054, 007032,
+               012023, 012024, 007032, 010052, 020009 ]
+"307046" = [  020060, 102000, 031001, 005021, 020059 ]
+"307047" = [  105000, 031001, 008002, 020011, 020012, 020013, 020092, 020002, 020091 ]
+"307048" = [  008016, 102000, 031001, 008017, 301012, 112000, 031000, 007032, 011001, 008054,
+               011083, 011084, 011002, 008054, 011085, 011086, 011041, 008054, 007032, 020009,
+               101000, 031000, 020060, 307014, 307047 ]
+"307049" = [  102000, 031000, 022043, 022021 ]
+"307050" = [  101000, 031000, 020085, 102000, 031001, 001064, 020085, 105000, 031001, 001064,
+               020086, 020087, 020088, 020089 ]
+"307052" = [  001063, 008039, 301011, 301012, 008079, 008039, 301011, 301012, 008039, 301011,
+               301012, 301024 ]
+"307053" = [  007032, 011001, 008054, 011083, 011084, 011002, 008054, 011085, 011086, 011041,
+               008054, 007032, 020009, 020060, 307014, 307047 ]
+"307054" = [  007032, 008039, 004003, 004004, 008023, 012023, 008039, 004003, 004004, 008023,
+               012023, 008023, 007032 ]
+"307055" = [  033045, 008016, 008039, 004003, 301012, 008039, 004003, 301012, 307053 ]
+"307056" = [  307052, 307053, 307054, 101000, 031001, 307055 ]
+"307059" = [  307045, 307046, 307013, 307014, 307047, 307016, 307017, 307049, 307050, 101000,
+               031001, 307048 ]
+"307060" = [  007061, 012030 ]
+"307061" = [  301031, 101005, 307060 ]
+"307062" = [  301032, 101005, 307060 ]
+"307063" = [  007061, 012130 ]
+"307071" = [  301090, 004074, 004023, 008023, 010004, 010051, 007004, 010009, 007032, 012101,
+               002051, 004051, 012118, 004052, 012119, 013004, 008023, 012151, 007032, 102005,
+               008050, 008020, 014032, 014033, 008050, 008020, 102018, 008052, 008022, 007032,
+               008053, 004003, 012152, 008053, 004003, 012153, 008053, 004003, 008023, 012101,
+               008053, 004003, 008023, 012101, 008023, 007032, 002002, 008053, 004003, 011046,
+               008053, 004003, 004004, 004023, 007032, 013060, 013051, 004053, 008050, 008020,
+               102006, 008052, 008022, 008053, 004003, 013052, 007032 ]
+"307072" = [  004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010004, 010051,
+               007004, 010009, 007032, 012101, 002051, 004051, 012118, 004052, 012119, 013004,
+               012151, 007032, 014032, 008023, 004001, 004001, 004002, 004003, 004004, 004022,
+               007032, 008023, 013060, 004053, 008023, 102008, 008050, 008020 ]
+"307073" = [  307071, 307072 ]
+"307080" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 302043, 302044,
+               101002, 302045, 302046 ]
+"307081" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012122, 013056,
+               013057, 020101, 020102, 020103, 020104, 020105, 020106, 020107, 020108, 302043,
+               302044, 101002, 302045, 302046 ]
+"307082" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012121, 012122,
+               302043, 302044, 101002, 302045, 302046 ]
+"307083" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012122, 302043,
+               302044, 101002, 302045, 302046 ]
+"307084" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 020055, 101000,
+               031001, 205001, 302043, 302044, 101002, 302045, 302046 ]
+"307086" = [  301090, 302031, 302035, 302036, 008002, 302037, 302066, 302043, 302044, 101002,
+               302045 ]
+"307090" = [  301092, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 302043, 302044,
+               101002, 302045, 302046 ]
+"307091" = [  301089, 301090, 008010, 301091, 302001, 007004, 010009, 302072, 103000, 031000,
+               101005, 307063, 007061, 101000, 031000, 302069, 007032, 007033, 105000, 031000,
+               020031, 020032, 002038, 022043, 302021, 101000, 031000, 302078, 101000, 031000,
+               302073, 101000, 031000, 302074, 101000, 031000, 302075, 102000, 031000, 004025,
+               302076, 302071, 302077, 007033, 101000, 031000, 302079, 007032, 101000, 031000,
+               302080, 101000, 031000, 302081, 101000, 031000, 302082, 102000, 031000, 004025,
+               013059, 101000, 031000, 302083, 033005, 033006 ]
+"308001" = [  301033, 302011, 022042 ]
+"308002" = [  301034, 302011, 022042 ]
+"308003" = [  301035, 302011, 022042 ]
+"308004" = [  301036, 302011, 022042 ]
+"308005" = [  308004, 302024 ]
+"308006" = [  010004, 010061, 010063, 011001, 011002, 012004, 013003, 022042 ]
+"308007" = [  301055, 302011, 007062, 022042 ]
+"308008" = [  001003, 001020, 001005, 002001, 002036, 002149, 301011, 301012, 008021, 301011,
+               301012, 008021, 301021, 027004, 028004, 007030, 001051, 002148, 001012, 001014,
+               002040, 033022, 033023, 033027, 022063, 302021, 302022, 302023, 008081, 025026,
+               008081, 025026, 008081, 025026, 008081, 002034, 022060, 007070, 002190, 025086,
+               002035, 002168, 020031, 002038, 306004, 002030, 306005, 007031, 008081, 012064,
+               302001, 008081, 007032, 007033, 012101, 012103, 013003, 007032, 007033, 008082,
+               007033, 002169, 002002, 008021, 004025, 011001, 011002, 008021, 004025, 011043,
+               011041, 008082, 007033, 007032, 004024, 013011, 007032, 008021, 004024, 014021,
+               008021, 025028, 025028, 025028 ]
+"308009" = [  301093, 302001, 302054, 008002, 302055, 302057, 302060 ]
+"308010" = [  001011, 113000, 031001, 301011, 301012, 301021, 004080, 022049, 004080, 022059,
+               004080, 022005, 002042, 022032, 002042, 004080 ]
+"308011" = [  001011, 002001, 301011, 301012, 301023, 007030, 007031, 004074, 004023, 008023,
+               010051, 007032, 007033, 012101, 013004, 007032, 007033, 302056, 008023, 004003,
+               004004, 004023, 007032, 013060, 013051, 004053, 007032 ]
+"308012" = [  004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010051, 007032,
+               007033, 012101, 013002, 007032, 007033, 302056, 008023, 004001, 004001, 004002,
+               004003, 004004, 004022, 007032, 008023, 013060, 004053, 008023 ]
+"308013" = [  308011, 308012 ]
+"308015" = [  001003, 001020, 001005, 001011, 001205, 001001, 001002, 002044, 002045, 301011,
+               301012, 301021, 022063, 105002, 002098, 022070, 022071, 022073, 022074, 002098,
+               022076, 022077, 022094, 025043, 022078, 121000, 031001, 002098, 022082, 022084,
+               116000, 031001, 022080, 022085, 022086, 022087, 022088, 022089, 103000, 031001,
+               022090, 022186, 022187, 103000, 031001, 022092, 022186, 022187, 002098 ]
+"308016" = [  001003, 001020, 001005, 001011, 001205, 001001, 001002, 002044, 002045, 301011,
+               301012, 301021, 022063, 105002, 002098, 022070, 022072, 022073, 022075, 002098,
+               022076, 022077, 022094, 025044, 022079, 121000, 031001, 002098, 022083, 022084,
+               116000, 031001, 022081, 022085, 022086, 022087, 022088, 022089, 103000, 031001,
+               022091, 022186, 022187, 103000, 031001, 022093, 022186, 022187, 002098 ]
+"309001" = [  301037, 101000, 031001, 303011 ]
+"309002" = [  301038, 101000, 031001, 303011 ]
+"309003" = [  301037, 101000, 031001, 303012 ]
+"309004" = [  301038, 101000, 031001, 303012 ]
+"309005" = [  301037, 302004, 101000, 031001, 303013 ]
+"309006" = [  301038, 302004, 101000, 031001, 303013 ]
+"309007" = [  301037, 302004, 101000, 031001, 303014 ]
+"309008" = [  301038, 302004, 101000, 031001, 303014 ]
+"309011" = [  301039, 101000, 031001, 303011 ]
+"309012" = [  301039, 101000, 031001, 303012 ]
+"309013" = [  301039, 302004, 101000, 031001, 303013 ]
+"309014" = [  301039, 302004, 101000, 031001, 303014 ]
+"309015" = [  301040, 101000, 031001, 303011 ]
+"309016" = [  301040, 101000, 031001, 303012 ]
+"309017" = [  301040, 302004, 101000, 031001, 303013 ]
+"309018" = [  301040, 302004, 101000, 031001, 303014 ]
+"309019" = [  301031, 002003, 101000, 031001, 303011 ]
+"309020" = [  301031, 002003, 104000, 031001, 007003, 011003, 011004, 011005 ]
+"309030" = [  015004, 015005, 104000, 031001, 004015, 008006, 007004, 015003 ]
+"309031" = [  015004, 015005, 104000, 031001, 004025, 008006, 007004, 015003 ]
+"309040" = [  301075, 301076, 309030 ]
+"309042" = [  307042, 301075, 301076, 309030 ]
+"309050" = [  301110, 301113, 301114, 101000, 031002, 303050, 101000, 031001, 303051 ]
+"309051" = [  301110, 301113, 301114, 101000, 031002, 303052, 101000, 031001, 303053 ]
+"309052" = [  301111, 301113, 301114, 302049, 022043, 101000, 031002, 303054, 101000, 031001,
+               303051 ]
+"309053" = [  301112, 301113, 301114, 101000, 031002, 303054, 101000, 031001, 303051 ]
+"309054" = [  301001, 001011, 301011, 301012, 301021, 007030, 007031, 007007, 004023, 004059,
+               115000, 031001, 008001, 008023, 007004, 010009, 012101, 012103, 008023, 011001,
+               011002, 008023, 011019, 008050, 008020, 008050, 008020 ]
+"309060" = [  301123, 301121, 302050, 303040 ]
+"309061" = [  301120, 008041, 301122, 201131, 202129, 025069, 007004, 202000, 201000, 033007,
+               033035, 033015, 013009, 033007, 033035, 033015, 002013, 012101, 033007, 033035,
+               033015 ]
+"309062" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015, 033007 ]
+"309063" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015, 033007 ]
+"309064" = [  301120, 008041, 301122, 201131, 202129, 104002, 025069, 007004, 033035, 033015,
+               013003, 033035, 033015, 202000, 201000, 104002, 002013, 012101, 033035, 033015,
+               012103, 033035, 033015, 010009, 033035, 033015 ]
+"309065" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015 ]
+"309066" = [  301120, 008041, 301122, 008040, 201131, 202129, 025069, 007004, 013003, 202000,
+               201000, 002013, 012101, 012103, 010009, 010007, 011002, 011001 ]
+"310001" = [  301042, 303031, 303032, 101026, 303025 ]
+"310002" = [  301042, 303031, 303032, 101009, 303023 ]
+"310003" = [  301042, 303031, 303032, 101006, 303023 ]
+"310004" = [  301042, 303031, 303032, 101003, 303024 ]
+"310005" = [  301042, 303031, 303033, 101000, 031001, 303025 ]
+"310006" = [  301042, 303031, 303033, 101000, 031001, 303023 ]
+"310007" = [  301042, 303031, 303033, 101000, 031001, 303024 ]
+"310008" = [  310011, 101019, 310012, 002150, 025079, 025080, 033032, 014045 ]
+"310009" = [  310011, 101015, 310012 ]
+"310010" = [  310011, 101005, 310012 ]
+"310011" = [  008070, 001033, 001034, 008070, 001033, 001034, 001007, 002048, 005040, 025075,
+               201133, 005041, 201000, 005043, 025070, 033030, 033031, 004001, 004002, 004003,
+               004004, 004005, 202131, 201138, 004006, 201000, 202000, 005001, 006001, 202126,
+               007001, 202000, 007024, 005021, 007025, 005022, 033033, 002151, 012064, 002151,
+               012064, 002151, 012064, 002151, 012064 ]
+"310012" = [  002150, 025076, 025077, 025078, 033032, 201132, 202129, 012063, 202000, 201000
+               ]
+"310013" = [  001007, 005040, 004001, 004002, 004003, 004004, 004005, 004006, 005001, 006001,
+               007025, 005043, 025085, 201131, 202129, 002150, 008023, 008072, 014027, 008072,
+               014027, 002150, 008023, 008072, 014027, 008072, 014027, 002150, 008023, 008072,
+               014027, 008072, 014027, 202000, 201000, 201132, 202129, 002150, 008023, 008072,
+               012063, 008072, 012063, 002150, 008023, 008072, 012063, 008072, 012063, 008023,
+               008072, 012063, 008072, 012063, 002150, 008023, 008072, 012063, 008072, 012063,
+               202000, 201000 ]
+"310014" = [  301072, 303041, 304011 ]
+"310015" = [  301072, 007024, 010002, 303041, 101003, 304032, 002152, 002024, 007004, 007004,
+               013003, 101003, 304033 ]
+"310016" = [  301072, 007024, 010002, 303041, 101012, 304032, 002152, 002024, 007004, 007004,
+               013003, 101012, 304033 ]
+"310019" = [  001007, 002019, 301011, 301013, 301023, 007025, 008021, 007025, 008021, 007025,
+               008021, 008029, 005040, 008075, 008003, 010004, 008003, 207002, 015001, 207000,
+               033070, 015030, 207002, 020081, 207000, 008003, 033042, 007004, 207002, 015001,
+               207000, 008003, 113021, 007004, 007004, 207002, 008021, 015005, 008021, 015005,
+               033007, 207000, 008026, 101020, 025143, 008026, 008043, 109015, 007004, 008090,
+               207006, 015008, 207000, 008090, 207002, 033007, 207000, 008043, 033071, 108008,
+               202124, 201107, 002071, 201000, 202000, 207002, 020081, 207000 ]
+"310020" = [  310022, 301011, 301013, 301021, 304034, 310021 ]
+"310021" = [  108000, 031001, 201131, 202129, 007004, 007004, 202000, 201000, 015020, 010002
+               ]
+"310022" = [  001007, 002019, 001033, 002172 ]
+"310023" = [  301072, 030021, 030022, 008012, 007024, 007025, 010002, 101012, 304032, 105002,
+               002152, 002024, 007004, 007004, 013003, 101012, 304033 ]
+"310024" = [  301072, 030021, 030022, 008012, 007024, 007025, 010002, 101003, 304032, 105002,
+               002152, 002024, 007004, 007004, 013003, 101003, 304033 ]
+"310025" = [  001007, 008021, 004001, 004002, 004003, 004004, 004005, 201138, 202131, 004006,
+               202000, 201000, 201132, 005041, 201000, 201129, 005043, 201000, 005002, 006002,
+               013040, 020029, 104024, 005042, 012163, 021083, 021084, 115003, 004001, 004002,
+               004003, 201142, 202131, 004026, 202000, 201000, 005001, 006001, 201138, 202129,
+               007001, 202000, 201000, 008021, 004001, 004002, 004003, 004004, 004005, 005040,
+               101003, 012070, 025054, 101004, 025055, 008007, 104028, 005002, 006002, 002111,
+               005021 ]
+"310026" = [  310022, 025060, 008021, 301011, 301012, 201138, 202131, 004006, 202000, 201000,
+               033039, 033007, 304030, 304031, 002020, 001050, 202127, 304030, 202000, 304031,
+               201133, 202131, 004016, 202000, 201000, 301021, 304030, 010035, 005021, 010036,
+               113000, 031002, 301021, 005021, 108000, 031001, 002121, 007040, 015037, 008023,
+               201125, 015037, 201000, 008023, 033007, 108000, 031002, 007007, 015036, 008023,
+               201123, 015036, 201000, 008023, 033007, 116000, 031002, 007009, 010004, 012001,
+               013001, 008023, 201120, 010004, 201000, 201122, 012001, 201000, 201123, 013001,
+               201000, 008023, 033007, 008003, 007009, 010004, 008023, 201120, 010004, 201000,
+               008023, 033007 ]
+"310027" = [  301071, 301011, 301013, 301021, 030021, 030022, 010002, 304036, 002152, 002167,
+               101011, 304035 ]
+"310028" = [  301071, 301011, 301013, 301021, 030021, 030022, 010002, 304036, 002152, 002167,
+               101011, 304037 ]
+"310029" = [  110000, 031001, 201138, 202130, 007004, 007004, 202000, 201000, 015020, 010002,
+               012101, 013098 ]
+"310030" = [  310022, 301011, 301013, 301021, 304034, 310029 ]
+"310050" = [  310051, 310052, 101000, 031002, 310053, 101004, 310054, 020010, 310052, 101015,
+               310053, 310052, 101005, 310053 ]
+"310051" = [  001007, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 007025, 005022, 102009, 002151, 012064 ]
+"310052" = [  002019, 301011, 301012, 202131, 201138, 004006, 201000, 202000, 301021, 007024,
+               005021, 005043 ]
+"310053" = [  201134, 005042, 201000, 025076, 033032, 012163 ]
+"310054" = [  201134, 005042, 201000, 025076, 033032, 201131, 202129, 102002, 008023, 014027,
+               008023, 202000, 201000 ]
+"310055" = [  310051, 310052, 102020, 025076, 025052, 101000, 031002, 025050 ]
+"311001" = [  301051, 007002, 012001, 011001, 011002, 011031, 011032, 011033, 020041 ]
+"311002" = [  301065, 301066, 311003, 311004 ]
+"311003" = [  010070, 011001, 011002, 012001, 013002 ]
+"311004" = [  101000, 031000, 011034, 101000, 031000, 011035, 101000, 031000, 011075, 101000,
+               031000, 011076, 101000, 031000, 033025, 101000, 031000, 033026 ]
+"311005" = [  001008, 001023, 301021, 301011, 301013, 007010, 008009, 011001, 011002, 011031,
+               011036, 012101, 033025 ]
+"311006" = [  007010, 011001, 011002, 002064, 012101, 012103 ]
+"311007" = [  007010, 301021, 011001, 011002, 002064, 012101, 012103 ]
+"311008" = [  001008, 301011, 301013, 301021, 008004, 101000, 031001, 311006 ]
+"311009" = [  001008, 301011, 301013, 301021, 008004, 101000, 031001, 311007 ]
+"312001" = [  301043, 304001 ]
+"312002" = [  301043, 304002 ]
+"312003" = [  301042, 304003 ]
+"312004" = [  301042, 304004 ]
+"312005" = [  301042, 020014 ]
+"312006" = [  301044, 304005 ]
+"312007" = [  301042, 304006 ]
+"312010" = [  001007, 005040, 002021, 005041, 004001, 004043 ]
+"312011" = [  202131, 201149, 004006, 201000, 202126, 010002, 202000, 005043, 005053 ]
+"312012" = [  202129, 201132, 101019, 012063, 201000, 202000 ]
+"312013" = [  005042, 202129, 201135, 012063, 201000, 202000 ]
+"312014" = [  312010, 312011, 105056, 301023, 005042, 005052, 312012, 312013 ]
+"312015" = [  109011, 301023, 005042, 005052, 202129, 201132, 101004, 012063, 202000, 201000
+               ]
+"312016" = [  312010, 312011, 312015 ]
+"312017" = [  109008, 301023, 005042, 005052, 202129, 201132, 101003, 012063, 202000, 201000
+               ]
+"312018" = [  312010, 312011, 312017 ]
+"312019" = [  301047, 301048, 015015, 029002, 021076, 106012, 201129, 006030, 201000, 102012,
+               005030, 021075, 021066 ]
+"312020" = [  301047, 301048, 015015, 029002, 021076, 104012, 006030, 102012, 005030, 021075,
+               021066 ]
+"312021" = [  301047, 101003, 301049, 011012, 011011, 021067 ]
+"312022" = [  301047, 008022, 011012, 011050, 022070, 022026, 312041, 010050, 021068, 021071,
+               021072, 021073, 312042, 021062, 015011 ]
+"312023" = [  301047, 103003, 008022, 012061, 022050, 021069, 021085 ]
+"312024" = [  312020, 008060, 008022, 008060, 008022, 025014, 022101, 022097, 022098, 022099,
+               022100 ]
+"312025" = [  312019, 008060, 008022, 008060, 008022, 025014, 022101, 022097, 022098, 022099,
+               022100 ]
+"312026" = [  301046, 301011, 301013, 301023, 312031, 101004, 312030, 021110, 301023, 321027,
+               021111, 301023, 321027, 021112, 301023, 321027, 021113, 301023, 321027 ]
+"312027" = [  301047, 105009, 301023, 007021, 012061, 007021, 012061, 021085, 021070 ]
+"312028" = [  301046, 301011, 301013, 301023, 008025, 201136, 004006, 201000, 312031, 312032,
+               101004, 312030, 101002, 312033, 021110, 301023, 321028, 021111, 301023, 321028,
+               021112, 301023, 321028, 021113, 301023, 321028 ]
+"312030" = [  201130, 202129, 011012, 202000, 201000, 011052, 201135, 202130, 011011, 202000,
+               201000, 011053, 021104 ]
+"312031" = [  005034, 006034, 021109, 011081, 011082, 021101, 021102, 021103 ]
+"312032" = [  021120, 021121, 013055, 021122 ]
+"312033" = [  002104, 008022, 012063, 012065 ]
+"312041" = [  201141, 202130, 007001, 201000, 202000 ]
+"312042" = [  021077, 021078, 021079, 021080, 021081, 021082 ]
+"312045" = [  001007, 002019, 001096, 025061, 005040, 301011, 301013, 301021, 007002, 012180,
+               012181, 012182, 012183, 012184, 012185, 002174, 021086, 012186, 021087, 012187,
+               033043 ]
+"312050" = [  001007, 002019, 001096, 025061, 005040, 301011, 301013, 301021, 007025, 005022,
+               010080, 027080, 008003, 007004, 013093, 008003, 201131, 202129, 007004, 007004,
+               202000, 201000, 013095 ]
+"312051" = [  001007, 002019, 001096, 025061, 005040, 008075, 301011, 301013, 301021, 001012,
+               201131, 001013, 201000, 010032, 010033, 010034, 007002, 008012, 025110, 025111,
+               025102, 002104, 025103, 025104, 025105, 025106, 025107, 025108, 002111, 002121,
+               002026, 002027, 021130, 021131, 021132, 021133, 021064, 025014, 021134, 107018,
+               005030, 105024, 201130, 006030, 201000, 021135, 021136, 033044 ]
+"312052" = [  001007, 002019, 001096, 025061, 005040, 025120, 025121, 025124, 025125, 025122,
+               025123, 301011, 301013, 301021, 007002, 002119, 033047, 010081, 010082, 010083,
+               010084, 002116, 002117, 002118, 002156, 002157, 014055, 022150, 022151, 022152,
+               022153, 022154, 022155, 022156, 022157, 022158, 022159, 021137, 021138, 021139,
+               021140, 021141, 021142, 010085, 010086, 010087, 010088, 010089, 010090, 010091,
+               010092, 010093, 011002, 025126, 025127, 025128, 025129, 025130, 025131, 025132,
+               025133, 025134, 025135, 025136, 025137, 013096, 013097, 011095, 011096, 012188,
+               012189, 002158, 002159, 033052, 033053, 021143, 021144 ]
+"312053" = [  001007, 002019, 001096, 025061, 005040, 008075, 301011, 301013, 301021, 001012,
+               201131, 001013, 201000, 010032, 010033, 010034, 007002, 008012, 025110, 025111,
+               025102, 002104, 025103, 025104, 025105, 025106, 025107, 025108, 011001, 011002,
+               022160, 025138, 201130, 202129, 022021, 202000, 201000, 033048, 033049, 002026,
+               002027, 021130, 021131, 021132, 021133, 025014, 106036, 005030, 104024, 201130,
+               006030, 201000, 022161, 033044 ]
+"312055" = [  005033, 005040, 006034, 010095, 021157 ]
+"312056" = [  025060, 001032, 011082, 011081, 020095, 020096, 021155, 201133, 021101, 021102,
+               201000 ]
+"312057" = [  201130, 202129, 011012, 202000, 201000, 201131, 202129, 011011, 202000, 201000,
+               021156, 021104 ]
+"312058" = [  301125, 301011, 301013, 301021, 312055, 021150, 101003, 321030 ]
+"312059" = [  312056, 101000, 031001, 312057 ]
+"312060" = [  025060, 025062, 040001, 040002, 021062, 021151, 021152, 021153, 021154, 021062,
+               021062, 040003, 040004, 040005, 040006, 040007, 020065, 040008, 040009, 040010
+               ]
+"312061" = [  312058, 312060, 312059 ]
+"312070" = [  001007, 002019, 001144, 001124, 030010, 301011, 301013, 301021, 007012, 015012,
+               012165, 012166, 012167, 012168, 027010, 028010, 002099, 013048, 025081, 025082,
+               025083, 025084, 012080, 012081, 012082, 025174, 033028 ]
+"313009" = [  021001, 101000, 031001, 021001 ]
+"313010" = [  021036, 101000, 031001, 021036 ]
+"313031" = [  006002, 006012, 101000, 031002, 030001 ]
+"313032" = [  005002, 005012, 101000, 031002, 313031 ]
+"313041" = [  006002, 110000, 031001, 104000, 031001, 006012, 101000, 031012, 030001, 006012,
+               101000, 031001, 030001 ]
+"313042" = [  005002, 005012, 101000, 031002, 313041 ]
+"313043" = [  006002, 005002, 005012, 112000, 031001, 110000, 031001, 104000, 031001, 006012,
+               101000, 031011, 030001, 006012, 101000, 031001, 030001 ]
+"315001" = [  001011, 301011, 301012, 301023, 306001 ]
+"315002" = [  001011, 301011, 301012, 301023, 306004 ]
+"315003" = [  001087, 001085, 001086, 002036, 002148, 002149, 022055, 022056, 022067, 301011,
+               301012, 301021, 008080, 033050, 109000, 031002, 007065, 008080, 033050, 022045,
+               008080, 033050, 022064, 008080, 033050 ]
+"316001" = [  301011, 004004, 301023, 001021, 002041, 019001, 010051, 019002, 019003, 019004
+               ]
+"316002" = [  008021, 004001, 004002, 004003, 004004, 004005, 001033, 008021, 004001, 004002,
+               004003, 004004, 004005, 007002, 007002 ]
+"316003" = [  110000, 031001, 008011, 008007, 104000, 031001, 005002, 006002, 010002, 011002,
+               008007, 008011 ]
+"316004" = [  111000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               011031, 008007, 008011 ]
+"316005" = [  108000, 031001, 008005, 008007, 005002, 006002, 001026, 019001, 008007, 008005
+               ]
+"316006" = [  112000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               020011, 020012, 008007, 008011 ]
+"316007" = [  110000, 031001, 008011, 008007, 104000, 031001, 005002, 006002, 019005, 019006,
+               008007, 008011 ]
+"316008" = [  111000, 031001, 008001, 008007, 008023, 103000, 031001, 005002, 006002, 010002,
+               008023, 008007, 008001 ]
+"316009" = [  111000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               020041, 008007, 008011 ]
+"316010" = [  107000, 031001, 008011, 008007, 001022, 005002, 006002, 008007, 008011 ]
+"316011" = [  117000, 031001, 008011, 001022, 008007, 102000, 031001, 005002, 006002, 008021,
+               004001, 004002, 004003, 004004, 004005, 020090, 008021, 008007, 008011 ]
+"316020" = [  001023, 001025, 001027, 301011, 301012 ]
+"316021" = [  301023, 002041, 019001, 019007, 019005, 019006, 019008, 008005, 010004, 008005,
+               010004, 019007, 008005, 008021, 004075, 011040, 019007, 105004, 005021, 005021,
+               102002, 019003, 019004 ]
+"316022" = [  001032, 002041, 019001, 019010, 118000, 031001, 008021, 004014, 008005, 301023,
+               019005, 019006, 010004, 011041, 008021, 004075, 011040, 019008, 105004, 005021,
+               005021, 102002, 019003, 019004 ]
+"316026" = [  316020, 316021 ]
+"316030" = [  301014, 001037, 010064, 008019, 001062, 008019, 001065, 008019, 001062, 008019
+               ]
+"316031" = [  008021, 301011, 301012, 301027, 019005, 019006, 020028, 008021 ]
+"316032" = [  008021, 301011, 301012, 301027, 008021 ]
+"316033" = [  008021, 301011, 301012, 101000, 031001, 301027, 008021 ]
+"316034" = [  008079, 316030, 008011, 001022, 008007, 301023, 008007, 020090, 316031, 101000,
+               031000, 316032, 101000, 031001, 316033, 008011, 008079 ]
+"316035" = [  008079, 316030, 008011, 020023, 020021, 020008, 316031, 008011, 008079 ]
+"316036" = [  008079, 316030, 008011, 001027, 316031, 101000, 031000, 316032, 101000, 031001,
+               316033, 008011, 008079 ]
+"316037" = [  008079, 316030, 008011, 011031, 316031, 008011, 008079 ]
+"316038" = [  008079, 316030, 008011, 020041, 020021, 316031, 008011, 008079 ]
+"316039" = [  008079, 316030, 008011, 020024, 316031, 008011, 008079 ]
+"316040" = [  316030, 008079, 301014, 001037, 010064, 008079 ]
+"316050" = [  301001, 301011, 301012, 002160, 008005, 005002, 006002, 008005, 019100, 019005,
+               019006, 019101, 019102, 019103, 019104, 019105 ]
+"316052" = [  301005, 301011, 301012, 001007, 025150, 122000, 031001, 001027, 019150, 019106,
+               008005, 005002, 006002, 008005, 019107, 019005, 019006, 019108, 019109, 019110,
+               019111, 019112, 019113, 019114, 019115, 019116, 019117, 019118, 019119 ]
+"318001" = [  301025, 024011 ]
+"318003" = [  301026, 024005, 024004, 024021 ]
+"318004" = [  301025, 004023, 013011, 024005, 024004, 024022 ]
+"321001" = [  002101, 002114, 002105, 002106, 002107, 002121 ]
+"321003" = [  021051, 021014, 021017, 021030 ]
+"321004" = [  301031, 002003, 101000, 031001, 321003 ]
+"321005" = [  025004, 002121, 002122, 002123, 002124, 002125, 002126, 002127, 002128, 002129,
+               002130, 002131 ]
+"321006" = [  025001, 025002, 025003, 025005 ]
+"321007" = [  025009, 025010, 025011, 025012, 025013, 025015, 025016, 025017 ]
+"321008" = [  025006, 025007, 025008 ]
+"321009" = [  025018, 025019 ]
+"321010" = [  002101, 007002, 002102, 002103, 002104, 002105, 002106, 002107, 002108, 002109,
+               002110, 002132, 002133 ]
+"321011" = [  030031, 030032, 029002 ]
+"321012" = [  101000, 031001, 002135 ]
+"321021" = [  002003, 002101, 201130, 002106, 201000, 201132, 202130, 002121, 202000, 201000,
+               201133, 202129, 025001, 202000, 201000 ]
+"321022" = [  007007, 204001, 031021, 011001, 204000, 011002, 204001, 031021, 011006, 204000,
+               021030 ]
+"321023" = [  007007, 021091, 021030, 202129, 021014, 201129, 021017, 202000, 201000 ]
+"321024" = [  007007, 204001, 031021, 012007, 011006, 204000, 021030 ]
+"321025" = [  007007, 021091, 021030, 202129, 021014, 201129, 021017, 202000, 201000, 021092,
+               021030, 025092, 201129, 202129, 021017, 202000, 201000 ]
+"321026" = [  007007, 204001, 031021, 012007, 025091, 011071, 011072, 011073, 011074, 204000
+               ]
+"321027" = [  021118, 202129, 201132, 002112, 201000, 201131, 002111, 201000, 202000, 002104,
+               021105, 021106, 021107, 021114, 021115, 021116, 008018, 021117 ]
+"321028" = [  021118, 202129, 201132, 002112, 201000, 201131, 002111, 201000, 202000, 002104,
+               021123, 021106, 021107, 021114, 021115, 021116, 008018, 021117 ]
+"321030" = [  008085, 202129, 201131, 002111, 201000, 202000, 002134, 021062, 021063, 021158,
+               021159, 021160, 021161, 021162, 021163, 021164, 021165, 021166 ]
+"340001" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 033060, 033061, 033062, 033063, 033064, 033065, 101010, 340002, 101087,
+               340003, 002019, 025051, 101007, 340004 ]
+"340002" = [  025140, 025141, 025142 ]
+"340003" = [  104100, 201136, 005042, 201000, 014046 ]
+"340004" = [  005060, 005061, 025085, 105006, 005042, 025142, 014047, 025142, 014048 ]
+"340005" = [  001007, 002019, 001096, 025061, 005044, 005040, 001030, 301011, 301012, 004007,
+               005001, 006001, 008029, 008074, 008077, 040011, 025097, 025095, 025098, 025099,
+               021144, 025096, 040012, 040013, 021169, 022151, 022162, 022163, 025160, 025133,
+               022156, 022164, 022165, 022166, 021137, 021138, 022167, 021139, 021118, 021145,
+               021146, 021147, 022168, 022169, 022170, 025161, 025162, 022171, 022172, 022173,
+               022174, 021170, 021171, 022175, 021172, 021118, 021173, 021174, 021175, 102003,
+               002153, 012063, 013090, 013091, 007002, 011097, 011098, 007002, 011095, 011096,
+               010096, 010081, 010082, 010083, 010101, 025132, 025163, 025126, 025128, 025164,
+               010085, 010097, 010086, 010087, 010092, 010088, 010089, 010098, 010099, 010090,
+               010100, 010093, 025127, 040014 ]
+"340007" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 103003, 025140, 025141, 033060, 033061, 033062, 033063, 033064, 033065,
+               040020, 101010, 340002, 101087, 340003, 002019, 025051, 101007, 340004, 020081,
+               008029, 020083, 008029, 040018, 040019, 040021, 040022 ]
+"340008" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 103003, 025140, 025141, 033060, 033061, 033062, 033063, 033064, 033065,
+               040020, 101010, 340002, 104000, 031002, 201136, 005042, 201000, 014046, 002019,
+               025051, 101007, 340004, 020081, 008029, 020083, 008029, 040018, 040019, 040021,
+               040022 ]
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/1003.table b/definitions/bufr/tables/0/wmo/8/codetables/1003.table
new file mode 100644
index 0000000..ff4f928
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/1003.table
@@ -0,0 +1,8 @@
+0 0 ATARCTICA
+1 1 REGION I
+2 2 REGION II
+3 3 REGION III
+4 4 REGION IV
+5 5 REGION V
+6 6 REGION VI
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/10063.table b/definitions/bufr/tables/0/wmo/8/codetables/10063.table
new file mode 100644
index 0000000..13c6331
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/10063.table
@@ -0,0 +1,10 @@
+0 0 INCREASING, THEN DECREASING: ATMOSPHERIC PRESURE THE SAME OR"     HIGHER THAN 3 HOURS AGO (OR 24 HOURS AGO )
+1 1 INCREASING, THEN STEADY; OR INCREASING; THEN MORE SLOWLY
+2 2 INCREASING (STEADILY OR UNSTEADILY )
+3 3 DECREASING OR STEADY, THEN INCREASING; RAPIDLY
+4 4 STEADY; ATMOSPHERIC PRESSURE THE SAME AS 3 HOURS AGO (OR 24"    HOURS)
+5 5 DECREASING; THEN INCREASING; ATMOSPHERIC PRESSURE THE SAME O"    R LOWER THAN 3 HOURS AGO
+6 6 DECREASING, THEN STEADY; OR DECREASING, DECREASING MORE SLOW"    LY
+7 7 DECREASING (STEADILY OR UNSTEADELY )
+8 8 STEADY OR INCREASING, THEN DECREASING; OR DECREASING, THEN"    DECREASING MORE RAPIDLY
+15 15 MISSING
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/10064.table b/definitions/bufr/tables/0/wmo/8/codetables/10064.table
new file mode 100644
index 0000000..88ba38a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/10064.table
@@ -0,0 +1,4 @@
+0 0 SUBSONIC
+1 1 TRANSONIC
+2 2 SUPERSONIC
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/1007.table b/definitions/bufr/tables/0/wmo/8/codetables/1007.table
new file mode 100644
index 0000000..711e681
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/1007.table
@@ -0,0 +1,132 @@
+1 1 ERS 1
+2 2 ERS 2
+3 3 METOP-1
+4 4 METOP-2
+5 5 METOP-3
+20 20 SPOT1
+21 21 SPOT2
+22 22 SPOT3
+23 23 SPOT4
+40 40 OERSTED
+41 41 CHAMP
+42 42 TERRASAR-X
+50 50 METEOSAT 3
+51 51 METEOSAT 4
+52 52 METEOSAT 5
+53 53 METEOSAT 6
+54 54 METEOSAT 7
+55 55 METEOSAT 8
+56 56 METEOSAT 9
+57 57 METEOSAT 10
+58 58 METEOSAT 1
+59 59 METEOSAT 2
+60 60 ENVISAT
+70 70 METEOSAT 11
+120 120 ADEOS
+121 121 ADEOS II
+150 150 GMS 3
+151 151 GMS 4
+152 152 GMS 5
+171 171 MTSAT-1R
+172 172 MTSAT-2
+200 200 NOAA 8
+201 201 NOAA 9
+202 202 NOAA 10
+203 203 NOAA 11
+204 204 NOAA 12
+205 205 NOAA 14
+206 206 NOAA 15
+207 207 NOAA 16
+208 208 NOAA 17
+209 209 NOAA 18
+220 220 LANDSAT 5
+221 221 LANDSAT 4
+222 222 LANDSAT 7
+240 240 DMSP 7
+241 241 DMSP 8
+242 242 DMSP 9
+243 243 DMSP 10
+244 244 DMSP 11
+245 245 DMSP 12
+246 246 DMSP 13
+247 247 DMSP 14
+248 248 DMSP 15
+249 249 DMSP 16
+250 250 GOES 6
+251 251 GOES 7
+252 252 GOES 8
+253 253 GOES 9
+254 254 GOES 10
+255 255 GOES 11
+256 256 GOES 12
+257 257 GOES 13
+258 258 GOES 14
+259 259 GOES 15
+260 260 JASON-1
+261 261 JASON-2
+281 281 QUIKSCAT
+282 282 TRMM
+283 283 CORIOLIS
+285 285 DMSP17
+310 310 GOMS 1
+311 311 GOMS 2
+320 320 METEOR 2-21
+321 321 METEOR 3-5
+322 322 METEOR 3M-1
+323 323 METEOR 3M-2
+341 341 RESURS 01-4
+430 430 INSAT 1B
+431 431 INSAT 1C
+432 432 INSAT 1D
+450 450 INSAT 2A
+451 451 INSAT 2B
+452 452 INSAT 2E
+470 470 INSAT 3A
+471 471 INSAT 3D
+472 472 INSAT 3E
+500 500 FY-1C
+501 501 FY-1D
+510 510 FY-2
+512 512 FY-2B
+513 513 FY-2C
+514 514 FY-2D
+700 700 TIROS M (ITOS 1)
+701 701 NOAA 1
+702 702 NOAA 2
+703 703 NOAA 3
+704 704 NOAA 4
+705 705 NOAA 5
+706 706 NOAA 6
+707 707 NOAA 7
+708 708 TIROS-N
+710 710 GOES (SMS 1)
+711 711 GOES (SMS 2)
+720 720 TOPEX
+721 721 GFO (GEOSAT FOLLOW ON)
+722 722 GRACE A
+723 723 GRACE B
+731 731 GOES 1
+732 732 GOES 2
+733 733 GOES 3
+734 734 GOES 4
+735 735 GOES 5
+740 740 COSMIC-1
+741 741 COSMIC-2
+742 742 COSMIC-3
+743 743 COSMIC-4
+744 744 COSMIC-5
+745 745 COSMIC-6
+763 763 NIMBUS 3
+764 764 NIMBUS 4
+765 765 NIMBUS 5
+766 766 NIMBUS 6
+767 767 NIMBUS 7
+780 780 ERBS
+781 781 UARS
+782 782 EARTH PROBE
+783 783 TERRA
+784 784 AQUA
+785 785 AURA
+800 800 SUNSAT
+820 820 SAC-C
+1023 1023 MISSIN VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/1031.table b/definitions/bufr/tables/0/wmo/8/codetables/1031.table
new file mode 100644
index 0000000..c105793
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/1031.table
@@ -0,0 +1,219 @@
+0 0 WMO SECRETARIAT
+1 1 MELBOURNE
+2 2 MELBOURNE
+3 3 MELBOURNE
+4 4 MOSCOW
+5 5 MOSCOW
+6 6 MOSCOW
+7 7 US NATIONAL WEATHER SERVICE, NATIONAL CENTRES FOR ENVIRONMEN"    TAL PREDICTION(NCEP)
+8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONSGATEWAY (NWSTG"    )
+9 9 US NATIONAL WEATHER SERVICE - OTHER
+10 10 CAIRO (RSMC)
+11 11 CAIRO (RSMC)
+12 12 DAKAR (RSMC)
+13 13 DAKAR (RSMC)
+14 14 NAIROBI (RSMC)
+15 15 NAIROBI (RSMC)
+16 16 CASABLANCA (RSMC)
+17 17 TUNIS (RSMC)
+18 18 TUNIS CASABLANCA (RSMC)
+19 19 TUNIS CASABLANCA (RSMC)
+20 20 LAS PALMAS
+21 21 ALGIERS (RSMC)
+22 22 ACMAD
+23 23 MOZAMBIQUE NMC
+24 24 PRETORIA (RSMC)
+25 25 LA R?UNION (RSMC)
+26 26 KHABAROVSK (RSMC)
+27 27 KHABAROVSK (RSMC)
+28 28 NEW DELHI (RSMC)
+29 29 NEW DELHI (RSMC)
+30 30 NOVOSIBIRSK (RSMC)
+31 31 NOVOSIBIRSK (RSMC)
+32 32 TASHKENT (RSMC)
+33 33 JEDDAH (RSMC)
+34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+35 35 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+36 36 BANGKOK
+37 37 ULAN BATOR
+38 38 BEIJING (RSMC)
+39 39 BEIJING (RSMC)
+40 40 SEOUL
+41 41 BUENOS AIRES (RSMC)
+42 42 BUENOS AIRES (RSMC)
+43 43 BRASILIA (RSMC)
+44 44 BRASILIA (RSMC)
+45 45 SANTIAGO
+46 46 BRAZILIAN SPACE AGENCY - INPE
+47 47 COLOMBIA NMC
+48 48 ECUADOR NMC
+49 49 PERU NMC                  50
+50 50 VENEZUELA NMC
+51 51 MIAMI (RSMC)
+52 52 MIAMI RSMC, NATIONAL HURRICANE CENTER
+53 53 MONTREAL (RSMC)
+54 54 MONTREAL (RSMC)
+55 55 SAN FRANCISCO
+56 56 ARINC CENTRE
+57 57 U.S. AIR FORCE AIR FORCE GLOBAL WEATHER CENTRAL
+58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTERE"    Y, CA
+59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, USA
+60 60 UNITED STATES NATIONAL CENTRE FOR ATMOSPHERIC RESEARCH (NCAR"    )
+61 61 SERVICE ARGOS - LANDOVER
+62 62 U.S. NAVAL OCEANOGRAPHIC OFFICE
+63 63 IRI (INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIET"    Y)
+64 64 HONOLULU (RSMC)
+65 65 DARWIN (RSMC)
+66 66 DARWIN (RSMC)
+67 67 MELBOURNE (RSMC)
+69 69 WELLINGTON (RSMC)
+70 70 WELLINGTON (RSMC)
+71 71 NADI (RSMC)
+72 72 SINGAPORE
+73 73 MALAYSIA NMC
+74 74 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+75 75 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+76 76 MOSCOW (RSMC)
+78 78 OFFENBACH (RSMC)
+79 79 OFFENBACH (RSMC)
+80 80 ROME (RSMC)
+81 81 ROME (RSMC)
+82 82 NORRK?PING
+83 83 NORRK?PING
+84 84 TOULOUSE (RSMC)
+85 85 TOULOUSE (RSMC)
+86 86 HELSINKI
+87 87 BELGRADE
+88 88 OSLO
+89 89 PRAGUE
+90 90 EPISKOPI
+91 91 ANKARA
+92 92 FRANKFURT/MAIN)
+93 93 LONDON (WAFC)
+94 94 COPENHAGEN
+95 95 ROTA
+96 96 ATHENS
+97 97 EUROPEAN SPACE AGENCY (ESA)
+98 98 EUROPEAN CENTRE FOR MEDIUM-RANGE WEATHER FORECAST (ECMWF)
+99 99 DE BILT
+100 100 BRAZZAVILLE
+101 101 ABIDJAN
+102 102 LIBYAN ARAB JAMAHIRIYA NMC
+103 103 MADAGASCAR NMC
+104 104 MAURITIUS NMC
+105 105 NIGER NMC
+106 106 SEYCHELLES NMC
+107 107 UGANDA NMC
+108 108 TANZANIA NMC
+109 109 ZIMBABWE NMC
+110 110 HONG-KONG, CHINA
+111 111 AFGHANISTAN NMC          110
+112 112 BAHRAIN NMC
+113 113 BANGLADESH NMC
+114 114 BHUTAN NMC
+115 115 CAMBODIA NMC
+116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA NMC
+117 117 ISLAMIC REPUBLIC OF IRAN NMC
+118 118 IRAQ NMC
+119 119 KAZAKHSTAN NMC
+120 120 KUWAIT NMC
+121 121 KYRGYZ REPUBLIC NMC
+122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC NMC
+123 123 MACAO, CHINA
+124 124 MALDIVES NMC
+125 125 MYANMAR NMC
+126 126 NEPAL NMC
+127 127 OMAN NMC
+128 128 PAKISTAN NMC
+129 129 QATAR NMC
+130 130 REPUBLIC OF YEMEN NMC
+131 131 SRI LANKA NMC
+132 132 TAJIKISTAN NMC
+133 133 TURKMENISTAN NMC
+134 134 UNITED ARAB EMIRATES NMC
+135 135 UZBEKISTAN NMC
+136 136 SOCIALIST REPUBLIC OF VIET NAM NMC
+140 140 BOLIVIA NMC
+141 141 GUYANA NMC
+142 142 PARAGUAY NMC
+143 143 SURINAME NMC
+144 144 URUGUAY NMC                     140
+145 145 FRENCH GUYANA
+146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE
+150 150 ANTIGUA AND BARBUDA NMC
+151 151 BAHAMAS NMC
+152 152 BARBADOS NMC
+153 153 BELIZE NMC
+154 154 BRITISH CARIBBEAN TERRITORIES CENTRE
+155 155 SAN JOSE
+156 156 CUBA NMC
+157 157 DOMINICA NMC
+158 158 DOMINICAN REPUBLIC NMC
+159 159 EL SALVADOR NMC
+160 160 US NOAA/NESDIS
+161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH
+162 162 GUATEMALA NMC
+163 163 HAITI NMC
+164 164 HONDURAS NMC
+165 165 JAMAICA NMC
+166 166 MEXICO
+167 167 NETHERLANDS ANTILLES AND ARUBA NMC
+168 168 NICARAGUA NMC
+169 169 PANAMA NMC
+170 170 SAINT LUCIA NMC
+171 171 TRINIDAD AND TOBAGO NMC
+172 172 FRENCH DEPARTMENTS IN RA IV
+173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA)
+190 190 COOK ISLANDS NMC
+191 191 FRENCH POLYNESIA NMC
+192 192 TONGA NMC
+193 193 VANUATU NMC
+194 194 BRUNEI DARUSSALAM NMC
+195 195 INDONESIA NMC
+196 196 KIRIBATI NMC
+197 197 FEDERATED STATES OF MICRONESIA NMC
+198 198 NEW CALEDONIA NMC
+199 199 NIUE
+200 200 PAPUA NEW GUINEA NMC
+201 201 PHILIPPINES NMC
+202 202 SAMOA NMC
+203 203 SOLOMON ISLANDS NMC
+210 210 FRASCATI (ESA/ESRIN)
+211 211 LANNION
+212 212 LISBOA
+213 213 REYKJAVIK
+214 214 MADRID
+215 215 Z?RICH
+216 216 SERVICE ARGOS TOULOUSE
+217 217 BRATISLAVA
+218 218 BUDAPEST
+219 219 LJUBLJANA
+220 220 WARSAW
+221 221 ZAGREB
+222 222 ALBANIA NMC
+223 223 ARMENIA NMC
+224 224 AUSTRIA NMC
+225 225 AZERBAIJAN NMC
+226 226 BELARUS NMC
+227 227 BELGIUM NMC
+228 228 BOSNIA AND HERZEGOVINA NMC
+229 229 BULGARIA NMC
+230 230 CYPRUS NMC
+231 231 ESTONIA NMC
+232 232 GEORGIA NMC
+233 233 DUBLIN
+234 234 ISRAEL NMC
+235 235 JORDAN NMC
+236 236 LATVIA NMC
+237 237 LEBANON NMC
+238 238 LITHUANIA NMC
+239 239 LUXEMBOURG
+240 240 MALTA NMC
+241 241 MONACO
+242 242 ROMANIA NMC
+243 243 SYRIAN ARAB REPUBLIC NMC
+244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA NMC
+245 245 UKRAINE NMC
+246 246 REPUBLIC OF MOLDOVA NMC
+254 254 EUMETSAT OPERATION CENTRE
+255 255 MISSING VALUE               219
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/1032.table b/definitions/bufr/tables/0/wmo/8/codetables/1032.table
new file mode 100644
index 0000000..2bf1e24
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/1032.table
@@ -0,0 +1,41 @@
+1 1 PREPROCESSING CONSISTENCY CHECK
+10 10 BIAS CORRECTION
+20 20 BLACK LIST
+30 30 OI MASS AND WIND ANALYSIS, REPORT STATUS
+31 31 OI HUMIDITY ANALYSIS, REPORT STATUS
+32 32 OI ANALYSIS VARIABLES
+33 33 OI ANALYSIS, FIRST GUESS Q/C
+34 34 OI ANALYSIS, FINAL ANALYSIS Q/C
+35 35 OI ANALYSIS, EVENT FLAGS
+40 40 DYNAMIC INITIALISATION SCHEME
+41 41 NORMAL MODE INITIALISATION SCHEME
+50 50 SURFACE ANALYSIS, REPORT STATUS
+51 51 SURFACE ANALYSIS VARIABLES
+52 52 SURFACE ANALYSIS Q/C
+53 53 SURFACE ANALYSIS, EVENT FLAGS
+60 60 3D VAR REPORT STATUS
+61 61 3D VAR ANALYSIS VARIABLES
+62 62 3D VAR Q/C
+63 63 3D VAR EVENT FLAGS
+80 80 PRESAT FIRST GUESS
+81 81 PRESAT ERROR STANDARD DEVIATIONS
+82 82 PRESAT BIAS ESTIMATES
+83 83 PRESAT BRIGHTNESS TEMPERATURE QUALITY FLAGS
+84 84 PRESAT SAMARY FLAGS
+90 90 FIRST GUESS (6 HOUR FORECAST)
+91 91 FIRST GUESS (FGAT INTERPOLATED)
+100 100 PRESCAT AMBIGUITY REMOVAL
+110 110 WAM FIRST GUESS
+111 111 WAM ANALYSIS
+112 112 WAM FORECAST
+113 113 WAM Q/C
+201 201 COLLOCATION WITH SURFACE DATA
+202 202 COLLOCATION WITH TEMP/PILOT DATA
+203 203 COLLOCATION WITH AIREP DATA
+204 204 COLLOCATION WITH SATOB DATA
+205 205 COLLOCATION WITH TOVS DATA
+206 206 COLLOCATION WITH ERS1 SCATTEROMETER DATA
+207 207 COLLOCATION WITH ERS1 ALTIMETER DATA
+220 220 ERS1 SCATTEROMETER COLLOCATION BLACK LIST
+230 230 GAUSS ERROR
+231 231 GROSS ERROR
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/1033.table b/definitions/bufr/tables/0/wmo/8/codetables/1033.table
new file mode 100644
index 0000000..637e315
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/1033.table
@@ -0,0 +1,219 @@
+0 0 WMO SECRETARIAT
+1 1 MELBOURNE
+2 2 MELBOURNE
+3 3 MELBOURNE
+4 4 MOSCOW
+5 5 MOSCOW
+6 6 MOSCOW
+7 7 US NATIONAL WEATHER SERVICE, NATIONAL CENTRES FOR ENVIRONMEN"    TAL PREDICTION(NCEP)
+8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONSGATEWAY (NWSTG"    )
+9 9 US NATIONAL WEATHER SERVICE - OTHER
+10 10 CAIRO (RSMC)
+11 11 CAIRO (RSMC)
+12 12 DAKAR (RSMC)
+13 13 DAKAR (RSMC)
+14 14 NAIROBI (RSMC)
+15 15 NAIROBI (RSMC)
+16 16 CASABLANCA (RSMC)
+17 17 TUNIS (RSMC)
+18 18 TUNIS CASABLANCA (RSMC)
+19 19 TUNIS CASABLANCA (RSMC)
+20 20 LAS PALMAS
+21 21 ALGIERS (RSMC)
+22 22 ACMAD
+23 23 MOZAMBIQUE NMC
+24 24 PRETORIA (RSMC)
+25 25 LA R?UNION (RSMC)
+26 26 KHABAROVSK (RSMC)
+27 27 KHABAROVSK (RSMC)
+28 28 NEW DELHI (RSMC)
+29 29 NEW DELHI (RSMC)
+30 30 NOVOSIBIRSK (RSMC)
+31 31 NOVOSIBIRSK (RSMC)
+32 32 TASHKENT (RSMC)
+33 33 JEDDAH (RSMC)
+34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+35 35 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+36 36 BANGKOK
+37 37 ULAN BATOR
+38 38 BEIJING (RSMC)
+39 39 BEIJING (RSMC)
+40 40 SEOUL
+41 41 BUENOS AIRES (RSMC)
+42 42 BUENOS AIRES (RSMC)
+43 43 BRASILIA (RSMC)
+44 44 BRASILIA (RSMC)
+45 45 SANTIAGO
+46 46 BRAZILIAN SPACE AGENCY - INPE
+47 47 COLOMBIA NMC
+48 48 ECUADOR NMC
+49 49 PERU NMC                  50
+50 50 VENEZUELA NMC
+51 51 MIAMI (RSMC)
+52 52 MIAMI RSMC, NATIONAL HURRICANE CENTER
+53 53 MONTREAL (RSMC)
+54 54 MONTREAL (RSMC)
+55 55 SAN FRANCISCO
+56 56 ARINC CENTRE
+57 57 U.S. AIR FORCE AIR FORCE GLOBAL WEATHER CENTRAL
+58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTERE"    Y, CA
+59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, USA
+60 60 UNITED STATES NATIONAL CENTRE FOR ATMOSPHERIC RESEARCH (NCAR"    )
+61 61 SERVICE ARGOS - LANDOVER
+62 62 U.S. NAVAL OCEANOGRAPHIC OFFICE
+63 63 IRI (INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIET"    Y)
+64 64 HONOLULU (RSMC)
+65 65 DARWIN (RSMC)
+66 66 DARWIN (RSMC)
+67 67 MELBOURNE (RSMC)
+69 69 WELLINGTON (RSMC)
+70 70 WELLINGTON (RSMC)
+71 71 NADI (RSMC)
+72 72 SINGAPORE
+73 73 MALAYSIA NMC
+74 74 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+75 75 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+76 76 MOSCOW (RSMC)
+78 78 OFFENBACH (RSMC)
+79 79 OFFENBACH (RSMC)
+80 80 ROME (RSMC)
+81 81 ROME (RSMC)
+82 82 NORRK?PING
+83 83 NORRK?PING
+84 84 TOULOUSE (RSMC)
+85 85 TOULOUSE (RSMC)
+86 86 HELSINKI
+87 87 BELGRADE
+88 88 OSLO
+89 89 PRAGUE
+90 90 EPISKOPI
+91 91 ANKARA
+92 92 FRANKFURT/MAIN)
+93 93 LONDON (WAFC)
+94 94 COPENHAGEN
+95 95 ROTA
+96 96 ATHENS
+97 97 EUROPEAN SPACE AGENCY (ESA)
+98 98 EUROPEAN CENTRE FOR MEDIUM-RANGE WEATHER FORECAST (ECMWF)
+99 99 DE BILT
+100 100 BRAZZAVILLE
+101 101 ABIDJAN
+102 102 LIBYAN ARAB JAMAHIRIYA NMC
+103 103 MADAGASCAR NMC
+104 104 MAURITIUS NMC
+105 105 NIGER NMC
+106 106 SEYCHELLES NMC
+107 107 UGANDA NMC
+108 108 TANZANIA NMC
+109 109 ZIMBABWE NMC
+110 110 HONG-KONG, CHINA
+111 111 AFGHANISTAN NMC          110
+112 112 BAHRAIN NMC
+113 113 BANGLADESH NMC
+114 114 BHUTAN NMC
+115 115 CAMBODIA NMC
+116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA NMC
+117 117 ISLAMIC REPUBLIC OF IRAN NMC
+118 118 IRAQ NMC
+119 119 KAZAKHSTAN NMC
+120 120 KUWAIT NMC
+121 121 KYRGYZ REPUBLIC NMC
+122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC NMC
+123 123 MACAO, CHINA
+124 124 MALDIVES NMC
+125 125 MYANMAR NMC
+126 126 NEPAL NMC
+127 127 OMAN NMC
+128 128 PAKISTAN NMC
+129 129 QATAR NMC
+130 130 REPUBLIC OF YEMEN NMC
+131 131 SRI LANKA NMC
+132 132 TAJIKISTAN NMC
+133 133 TURKMENISTAN NMC
+134 134 UNITED ARAB EMIRATES NMC
+135 135 UZBEKISTAN NMC
+136 136 SOCIALIST REPUBLIC OF VIET NAM NMC
+140 140 BOLIVIA NMC
+141 141 GUYANA NMC
+142 142 PARAGUAY NMC
+143 143 SURINAME NMC
+144 144 URUGUAY NMC                     140
+145 145 FRENCH GUYANA
+146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE
+150 150 ANTIGUA AND BARBUDA NMC
+151 151 BAHAMAS NMC
+152 152 BARBADOS NMC
+153 153 BELIZE NMC
+154 154 BRITISH CARIBBEAN TERRITORIES CENTRE
+155 155 SAN JOSE
+156 156 CUBA NMC
+157 157 DOMINICA NMC
+158 158 DOMINICAN REPUBLIC NMC
+159 159 EL SALVADOR NMC
+160 160 US NOAA/NESDIS
+161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH
+162 162 GUATEMALA NMC
+163 163 HAITI NMC
+164 164 HONDURAS NMC
+165 165 JAMAICA NMC
+166 166 MEXICO
+167 167 NETHERLANDS ANTILLES AND ARUBA NMC
+168 168 NICARAGUA NMC
+169 169 PANAMA NMC
+170 170 SAINT LUCIA NMC
+171 171 TRINIDAD AND TOBAGO NMC
+172 172 FRENCH DEPARTMENTS IN RA IV
+173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA)
+190 190 COOK ISLANDS NMC
+191 191 FRENCH POLYNESIA NMC
+192 192 TONGA NMC
+193 193 VANUATU NMC
+194 194 BRUNEI DARUSSALAM NMC
+195 195 INDONESIA NMC
+196 196 KIRIBATI NMC
+197 197 FEDERATED STATES OF MICRONESIA NMC
+198 198 NEW CALEDONIA NMC
+199 199 NIUE
+200 200 PAPUA NEW GUINEA NMC
+201 201 PHILIPPINES NMC
+202 202 SAMOA NMC
+203 203 SOLOMON ISLANDS NMC
+210 210 FRASCATI (ESA/ESRIN)
+211 211 LANNION
+212 212 LISBOA
+213 213 REYKJAVIK
+214 214 MADRID
+215 215 Z?RICH
+216 216 SERVICE ARGOS TOULOUSE
+217 217 BRATISLAVA
+218 218 BUDAPEST
+219 219 LJUBLJANA            190
+220 220 WARSAW
+221 221 ZAGREB
+222 222 ALBANIA NMC
+223 223 ARMENIA NMC
+224 224 AUSTRIA NMC
+225 225 AZERBAIJAN NMC
+226 226 BELARUS NMC
+227 227 BELGIUM NMC
+228 228 BOSNIA AND HERZEGOVINA NMC
+229 229 BULGARIA NMC
+230 230 CYPRUS NMC
+231 231 ESTONIA NMC
+232 232 GEORGIA NMC
+233 233 DUBLIN
+234 234 ISRAEL NMC
+235 235 JORDAN NMC
+236 236 LATVIA NMC
+237 237 LEBANON NMC
+238 238 LITHUANIA NMC
+239 239 LUXEMBOURG
+240 240 MALTA NMC
+241 241 MONACO
+242 242 ROMANIA NMC
+243 243 SYRIAN ARAB REPUBLIC NMC
+244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA NMC
+245 245 UKRAINE NMC
+246 246 REPUBLIC OF MOLDOVA NMC
+254 254 EUMETSAT OPERATION CENTRE
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/1035.table b/definitions/bufr/tables/0/wmo/8/codetables/1035.table
new file mode 100644
index 0000000..734c534
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/1035.table
@@ -0,0 +1,219 @@
+0 0 WMO SECRETARIAT
+1 1 MELBOURNE
+2 2 MELBOURNE
+3 3 MELBOURNE
+4 4 MOSCOW
+5 5 MOSCOW
+6 6 MOSCOW
+7 7 US NATIONAL WEATHER SERVICE, NATIONAL CENTRES FOR ENVIRONMEN"    TAL PREDICTION(NCEP)
+8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONSGATEWAY (NWSTG"    )
+9 9 US NATIONAL WEATHER SERVICE - OTHER
+10 10 CAIRO (RSMC)
+11 11 CAIRO (RSMC)
+12 12 DAKAR (RSMC)
+13 13 DAKAR (RSMC)
+14 14 NAIROBI (RSMC)
+15 15 NAIROBI (RSMC)
+16 16 CASABLANCA (RSMC)
+17 17 TUNIS (RSMC)
+18 18 TUNIS CASABLANCA (RSMC)
+19 19 TUNIS CASABLANCA (RSMC)
+20 20 LAS PALMAS
+21 21 ALGIERS (RSMC)
+22 22 ACMAD
+23 23 MOZAMBIQUE NMC
+24 24 PRETORIA (RSMC)
+25 25 LA R?UNION (RSMC)
+26 26 KHABAROVSK (RSMC)
+27 27 KHABAROVSK (RSMC)
+28 28 NEW DELHI (RSMC)
+29 29 NEW DELHI (RSMC)
+30 30 NOVOSIBIRSK (RSMC)
+31 31 NOVOSIBIRSK (RSMC)
+32 32 TASHKENT (RSMC)
+33 33 JEDDAH (RSMC)
+34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+35 35 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+36 36 BANGKOK
+37 37 ULAN BATOR
+38 38 BEIJING (RSMC)
+39 39 BEIJING (RSMC)
+40 40 SEOUL
+41 41 BUENOS AIRES (RSMC)
+42 42 BUENOS AIRES (RSMC)
+43 43 BRASILIA (RSMC)
+44 44 BRASILIA (RSMC)
+45 45 SANTIAGO
+46 46 BRAZILIAN SPACE AGENCY - INPE
+47 47 COLOMBIA NMC
+48 48 ECUADOR NMC
+49 49 PERU NMC                  50
+50 50 VENEZUELA NMC
+51 51 MIAMI (RSMC)
+52 52 MIAMI RSMC, NATIONAL HURRICANE CENTER
+53 53 MONTREAL (RSMC)
+54 54 MONTREAL (RSMC)
+55 55 SAN FRANCISCO
+56 56 ARINC CENTRE
+57 57 U.S. AIR FORCE AIR FORCE GLOBAL WEATHER CENTRAL
+58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTERE"    Y, CA
+59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, USA
+60 60 UNITED STATES NATIONAL CENTRE FOR ATMOSPHERIC RESEARCH (NCAR"    )
+61 61 SERVICE ARGOS - LANDOVER
+62 62 U.S. NAVAL OCEANOGRAPHIC OFFICE
+63 63 IRI (INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIET"    Y)
+64 64 HONOLULU (RSMC)
+65 65 DARWIN (RSMC)
+66 66 DARWIN (RSMC)
+67 67 MELBOURNE (RSMC)
+69 69 WELLINGTON (RSMC)
+70 70 WELLINGTON (RSMC)
+71 71 NADI (RSMC)
+72 72 SINGAPORE
+73 73 MALAYSIA NMC
+74 74 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+75 75 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+76 76 MOSCOW (RSMC)
+78 78 OFFENBACH (RSMC)
+79 79 OFFENBACH (RSMC)
+80 80 ROME (RSMC)
+81 81 ROME (RSMC)
+82 82 NORRK?PING
+83 83 NORRK?PING
+84 84 TOULOUSE (RSMC)
+85 85 TOULOUSE (RSMC)
+86 86 HELSINKI
+87 87 BELGRADE
+88 88 OSLO
+89 89 PRAGUE
+90 90 EPISKOPI
+91 91 ANKARA
+92 92 FRANKFURT/MAIN)
+93 93 LONDON (WAFC)
+94 94 COPENHAGEN
+95 95 ROTA
+96 96 ATHENS
+97 97 EUROPEAN SPACE AGENCY (ESA)
+98 98 EUROPEAN CENTRE FOR MEDIUM-RANGE WEATHER FORECAST (ECMWF)
+99 99 DE BILT
+100 100 BRAZZAVILLE
+101 101 ABIDJAN
+102 102 LIBYAN ARAB JAMAHIRIYA NMC
+103 103 MADAGASCAR NMC
+104 104 MAURITIUS NMC
+105 105 NIGER NMC
+106 106 SEYCHELLES NMC
+107 107 UGANDA NMC
+108 108 TANZANIA NMC
+109 109 ZIMBABWE NMC
+110 110 HONG-KONG, CHINA
+111 111 AFGHANISTAN NMC          110
+112 112 BAHRAIN NMC
+113 113 BANGLADESH NMC
+114 114 BHUTAN NMC
+115 115 CAMBODIA NMC
+116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA NMC
+117 117 ISLAMIC REPUBLIC OF IRAN NMC
+118 118 IRAQ NMC
+119 119 KAZAKHSTAN NMC
+120 120 KUWAIT NMC
+121 121 KYRGYZ REPUBLIC NMC
+122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC NMC
+123 123 MACAO, CHINA
+124 124 MALDIVES NMC
+125 125 MYANMAR NMC
+126 126 NEPAL NMC
+127 127 OMAN NMC
+128 128 PAKISTAN NMC
+129 129 QATAR NMC
+130 130 REPUBLIC OF YEMEN NMC
+131 131 SRI LANKA NMC
+132 132 TAJIKISTAN NMC
+133 133 TURKMENISTAN NMC
+134 134 UNITED ARAB EMIRATES NMC
+135 135 UZBEKISTAN NMC
+136 136 SOCIALIST REPUBLIC OF VIET NAM NMC
+140 140 BOLIVIA NMC
+141 141 GUYANA NMC
+142 142 PARAGUAY NMC
+143 143 SURINAME NMC
+144 144 URUGUAY NMC                     140
+145 145 FRENCH GUYANA
+146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE
+150 150 ANTIGUA AND BARBUDA NMC
+151 151 BAHAMAS NMC
+152 152 BARBADOS NMC
+153 153 BELIZE NMC
+154 154 BRITISH CARIBBEAN TERRITORIES CENTRE
+155 155 SAN JOSE
+156 156 CUBA NMC
+157 157 DOMINICA NMC
+158 158 DOMINICAN REPUBLIC NMC
+159 159 EL SALVADOR NMC
+160 160 US NOAA/NESDIS
+161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH
+162 162 GUATEMALA NMC
+163 163 HAITI NMC
+164 164 HONDURAS NMC
+165 165 JAMAICA NMC
+166 166 MEXICO
+167 167 NETHERLANDS ANTILLES AND ARUBA NMC
+168 168 NICARAGUA NMC
+169 169 PANAMA NMC
+170 170 SAINT LUCIA NMC
+171 171 TRINIDAD AND TOBAGO NMC
+172 172 FRENCH DEPARTMENTS IN RA IV
+173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA)
+190 190 COOK ISLANDS NMC
+191 191 FRENCH POLYNESIA NMC
+192 192 TONGA NMC
+193 193 VANUATU NMC
+194 194 BRUNEI DARUSSALAM NMC
+195 195 INDONESIA NMC
+196 196 KIRIBATI NMC
+197 197 FEDERATED STATES OF MICRONESIA NMC
+198 198 NEW CALEDONIA NMC
+199 199 NIUE
+200 200 PAPUA NEW GUINEA NMC
+201 201 PHILIPPINES NMC
+202 202 SAMOA NMC
+203 203 SOLOMON ISLANDS NMC
+210 210 FRASCATI (ESA/ESRIN)
+211 211 LANNION
+212 212 LISBOA
+213 213 REYKJAVIK
+214 214 MADRID
+215 215 Z?RICH
+216 216 SERVICE ARGOS TOULOUSE
+217 217 BRATISLAVA
+218 218 BUDAPEST
+219 219 LJUBLJANA            190
+220 220 WARSAW
+221 221 ZAGREB
+222 222 ALBANIA NMC
+223 223 ARMENIA NMC
+224 224 AUSTRIA NMC
+225 225 AZERBAIJAN NMC
+226 226 BELARUS NMC
+227 227 BELGIUM NMC
+228 228 BOSNIA AND HERZEGOVINA NMC
+229 229 BULGARIA NMC
+230 230 CYPRUS NMC
+231 231 ESTONIA NMC
+232 232 GEORGIA NMC
+233 233 DUBLIN
+234 234 ISRAEL NMC
+235 235 JORDAN NMC
+236 236 LATVIA NMC
+237 237 LEBANON NMC
+238 238 LITHUANIA NMC
+239 239 LUXEMBOURG
+240 240 MALTA NMC
+241 241 MONACO
+242 242 ROMANIA NMC
+243 243 SYRIAN ARAB REPUBLIC NMC
+244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA NMC
+245 245 UKRAINE NMC
+246 246 REPUBLIC OF MOLDOVA NMC
+254 254 EUMETSAT OPERATION CENTRE
+255 255 MISSING VALUE               219
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/1090.table b/definitions/bufr/tables/0/wmo/8/codetables/1090.table
new file mode 100644
index 0000000..e1cf86c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/1090.table
@@ -0,0 +1,5 @@
+0 0 LAF (LAGGED-AVERAGE FORECASTING)
+1 1 BREEDING
+2 2 SINGULAR VECTOR
+3 3 MULTIPLE ANALYSIS CYCLE
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/1092.table b/definitions/bufr/tables/0/wmo/8/codetables/1092.table
new file mode 100644
index 0000000..dc9bf1c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/1092.table
@@ -0,0 +1,5 @@
+0 0 UNPERTURBED HIGH-RESOLUTION CONTROL FORECAST
+1 1 UNPERTURBED LOW-RESOLUTION CONTROL FORECAST
+2 2 NEGATIVELY PERTURBED FORECAST
+3 3 POSITIVELY PERTURBED FORECAST
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/11031.table b/definitions/bufr/tables/0/wmo/8/codetables/11031.table
new file mode 100644
index 0000000..fd7a8e0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/11031.table
@@ -0,0 +1,9 @@
+0 0 NIL           IN CLOUD
+1 1 SLIGHT        IN CLOUD
+2 2 MODERATE      IN CLOUD
+3 3 SEVERE        IN CLOUD
+4 4 NIL           IN CLEAR AIR
+5 5 SLIGHT        IN CLEAR AIR
+6 6 MODERATE      IN CLEAR AIR
+7 7 SEVERE        IN CLEAR AIR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/11037.table b/definitions/bufr/tables/0/wmo/8/codetables/11037.table
new file mode 100644
index 0000000..1fed72b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/11037.table
@@ -0,0 +1,30 @@
+0 0 AVE <0.1 PEAK <0.1
+1 1 AVE <0.1 0.1 <= PEAK <0.2
+2 2 0.1 <= AVE <0.2 0.1 <= PEAK <0.2
+3 3 AVE <0.1 0.2 <= PEAK <0.3
+4 4 0.1 <= AVE <0.2 0.2 <= PEAK <0.3
+5 5 0.2 <= AVE <0.3 0.2 <= PEAK <0.3
+6 6 AVE <0.1 0.3 <= PEAK <0.4
+7 7 0.1 <= AVE <0.2 0.3 <= PEAK <0.4
+8 8 0.2 <= AVE <0.3 0.3 <= PEAK <0.4
+9 9 0.3 <= AVE <0.4 0.3 <= PEAK <0.4
+10 10 AVE <0.1 0.4 <= PEAK <0.5
+11 11 0.1 <= AVE <0.2 0.4 <= PEAK <0.5
+12 12 0.2 <= AVE <0.3 0.4 <= PEAK <0.5
+13 13 0.3 <= AVE <0.4 0.4 <= PEAK <0.5
+14 14 0.4 <= AVE <0.5 0.4 <= PEAK <0.5
+15 15 AVE <0.1 0.5 <= PEAK <0.8
+16 16 0.1 <= AVE <0.2 0.5 <= PEAK <0.8
+17 17 0.2 <= AVE <0.3 0.5 <= PEAK <0.8
+18 18 0.3 <= AVE <0.4 0.5 <= PEAK <0.8
+19 19 0.4 <= AVE <0.5 0.5 <= PEAK <0.8
+20 20 0.5 <= AVE <0.8 0.5 <= PEAK <0.8
+21 21 AVE <0.1 0.8 <= PEAK
+22 22 0.1 <= AVE <0.2 0.8 <= PEAK
+23 23 0.2 <= AVE <0.3 0.8 <= PEAK
+24 24 0.3 <= AVE <0.4 0.8 <= PEAK
+25 25 0.4 <= AVE <0.5 0.8 <= PEAK
+26 26 0.5 <= AVE <0.8 0.8 <= PEAK
+27 27 0.8 <= AVE 0.8 <= PEAK
+28 28 NIL              NIL
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/11038.table b/definitions/bufr/tables/0/wmo/8/codetables/11038.table
new file mode 100644
index 0000000..f0c5cce
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/11038.table
@@ -0,0 +1,17 @@
+0 0 MIN < 1
+1 1 1 <= MIN < 2
+2 2 2 <= MIN < 3
+3 3 3 <= MIN < 4
+4 4 4 <= MIN < 5
+5 5 5 <= MIN < 6
+6 6 6 <= MIN < 7
+7 7 7 <= MIN < 8
+8 8 8 <= MIN < 9
+9 9 9 <= MIN < 10
+10 10 10 <= MIN < 11
+11 11 11 <= MIN < 12
+12 12 12 <= MIN < 13
+13 13 13 <= MIN < 14
+14 14 14 <= MIN < 15
+15 15 NO TIMING INFORMATION AVAILABLE
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/11039.table b/definitions/bufr/tables/0/wmo/8/codetables/11039.table
new file mode 100644
index 0000000..1bb26b7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/11039.table
@@ -0,0 +1,16 @@
+0 0 1 <= MIN < 2
+1 1 2 <= MIN < 3
+2 2 3 <= MIN < 4
+4 4 4 <= MIN < 5
+5 5 5 <= MIN < 6
+6 6 6 <= MIN < 7
+7 7 7 <= MIN < 8
+8 8 8 <= MIN < 9
+9 9 9 <= MIN < 10
+10 10 10 <= MIN < 11
+11 11 11 <= MIN < 12
+12 12 12 <= MIN < 13
+13 13 13 <= MIN < 14
+14 14 14 <= MIN < 15
+60 60 NO TIMING INFORMATION AVAILABLE
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/13038.table b/definitions/bufr/tables/0/wmo/8/codetables/13038.table
new file mode 100644
index 0000000..19bc422
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/13038.table
@@ -0,0 +1,4 @@
+0 0 NOT SUPERADIABATIC
+1 1 SUPERADIABATIC
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/13039.table b/definitions/bufr/tables/0/wmo/8/codetables/13039.table
new file mode 100644
index 0000000..c070b1d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/13039.table
@@ -0,0 +1,3 @@
+0 0 SEA ICE
+1 1 SNOW ON LAND
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/13040.table b/definitions/bufr/tables/0/wmo/8/codetables/13040.table
new file mode 100644
index 0000000..8e1dcfe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/13040.table
@@ -0,0 +1,9 @@
+0 0 LAND
+1 1 RESERVED
+2 2 NEAR COAST
+3 3 ICE
+4 4 POSSIBLE ICE
+5 5 OCEAN
+6 6 COAST
+7 7 DESERT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/13041.table b/definitions/bufr/tables/0/wmo/8/codetables/13041.table
new file mode 100644
index 0000000..d53bf87
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/13041.table
@@ -0,0 +1,10 @@
+1 1 A
+2 2 A-B
+3 3 B
+4 4 B-C
+5 5 C
+6 6 D
+7 7 E
+8 8 F
+9 9 G
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/13051.table b/definitions/bufr/tables/0/wmo/8/codetables/13051.table
new file mode 100644
index 0000000..70807eb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/13051.table
@@ -0,0 +1,8 @@
+0 0 SMALLER THAN ANY VALUE IN THE 30 YEARS PERIOD
+1 1 IN THE FIRST QUINTILE
+2 2 IN THE SECOND QUINTILE
+3 3 IN THE THIRD QUINTILE
+4 4 IN THE FOURTH QUINTILE
+5 5 IN THE FIFTH QUINTILE
+6 6 GREATER THAN ANY VALUE IN THE 30 YEAR PERIOD
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/13056.table b/definitions/bufr/tables/0/wmo/8/codetables/13056.table
new file mode 100644
index 0000000..02eeb56
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/13056.table
@@ -0,0 +1,10 @@
+0 0 NO PRECIPITATION
+1 1 LIGHT INTERMITTENT
+2 2 MODERATE INTERMITTENT
+3 3 HEAVY INTERMITTENT
+4 4 VERY HEAVY INTERMITTENT
+5 5 LIGHT CONTINUOUS
+6 6 MODERATE CONTINUOUS
+7 7 VERY HEAVY CONTINUOUS
+9 9 VARIABLE-ALTERNATIVELY LIGHT AND HEAVY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/13057.table b/definitions/bufr/tables/0/wmo/8/codetables/13057.table
new file mode 100644
index 0000000..9c8571c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/13057.table
@@ -0,0 +1,11 @@
+0 0 NO PRECIPITATION
+1 1 WITHIN THE LAST HOUR
+2 2 1 TO 2 HOURS AGO
+3 3 2 TO 3 HOURS AGO
+4 4 3 TO 4 HOURS AGO
+5 5 4 TO 5 HOURS AGO
+6 6 5 TO 6 HOURS AGO
+7 7 6 TO 8 HOURS AGO
+8 8 8 TO 10 HOURS AGO
+9 9 MORE THAN 10 HOURS AHO
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/15025.table b/definitions/bufr/tables/0/wmo/8/codetables/15025.table
new file mode 100644
index 0000000..acb0f2b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/15025.table
@@ -0,0 +1,2 @@
+0 0 OZONE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/19001.table b/definitions/bufr/tables/0/wmo/8/codetables/19001.table
new file mode 100644
index 0000000..2b92574
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/19001.table
@@ -0,0 +1,7 @@
+0 0 DEPRESSION OR LOW (EXTRATROPICAL)
+1 1 TROPICAL DEPRESSION
+2 2 TROPICAL STORM
+3 3 SEVERE TROPICAL STORM
+4 4 TYPHOON
+10 10 DUST/SANDSTORM
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/19008.table b/definitions/bufr/tables/0/wmo/8/codetables/19008.table
new file mode 100644
index 0000000..57395cd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/19008.table
@@ -0,0 +1,5 @@
+0 0 RESERVED
+1 1 SHALLOW (TOP OF CIRCULATION BELOW 700-HPA LEVEL
+2 2 MEDIUM(TOP BETWEEN 700-HPA AND 400-HPA)
+3 3 DEEP(TOP ABOVE 400-HPA LEVEL
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/19010.table b/definitions/bufr/tables/0/wmo/8/codetables/19010.table
new file mode 100644
index 0000000..03e331e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/19010.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 MINIMUM VALUE OF SEA LEVEL PRESSURE
+2 2 MAXIMUM VALUE OF 850 HPA RELATIVE VORTICITY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20003.table b/definitions/bufr/tables/0/wmo/8/codetables/20003.table
new file mode 100644
index 0000000..b6227bc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20003.table
@@ -0,0 +1,250 @@
+0 0 CLOUD DEVELOPMENT NOT OBSERVED OR NOT OBSERVABLE
+1 1 CLOUDS GENERALLY DISSOLVING OR BECOMING LESS DEVELOPED
+2 2 STATE OF SKY ON THE WHOLE UNCHANGED
+3 3 CLOUDS GENERALLY FORMING OR DEVELOPING
+4 4 VISIBILITY REDUCED BY SMOKE, E.G. VELDT OR FOREST FIRES, IN"    DUSTRIAL SMOKE OR VOLCANIC ASHES
+5 5 HAZE
+6 6 WIDESPREAD DUST IN SUSPENSION IN THE AIR, NOT RAISED BY WIND"     AT OR NEAR THE STATION AT THE TIME OF OBSERVATION
+7 7 DUST OR SEND RAISED BY WIND AT OR NEAR THE STATION AT THE TI"    ME OF OBSERVATION, BUT NO WELL-DEVELOPED DUST WHRIL(S) OR SA"    ND WHRIL(S), AND NO 
+8 8 WELL-DEVELOPED DUST WHRIL(S) OR SAND WHRILS SEEN AT OR NEAR"    THE STATION DURING THE PRECEDING HOUR OR AT THE SAME TIME OF"     OBSERVATION, BUT NO 
+9 9 DUSTSTORM OR SANDSTORM WITHIN SIGHT AT THE TIME OF OBSERVATI"    ON, OR AT THE STATION DURING THE PRECEDING HOR
+10 10 MIST
+11 11 PACHES SHALLOW FOG OR ICE AT THE STATION, WHETHER ON LAND OR"     SEA, NOT DEEPER THAN 2 METRES ON LAND OR 10 METRES AT SEA
+12 12 MORE OR LESS CONTINUOUS SHALLOW FOG OR ICE AT THE STATION,"    WHETHER ON LAND OR SEA, NOT DEEPER THAN 2 METRES ON LAND OR"    10 METRES AT SEA
+13 13 LIGHTNING VISIBLE, NO THUNDER HEARD
+14 14 PRECIPITATION WITHIN SIGHT, NOT REACHING THE GROUND OR THE"    SURFACE OF THE SEA
+15 15 PRECIPITATION WITHIN SIGHT, REACHING THE GROUND OR THE SURFA"    CE OF THE SEA, BUT DISTANT, I.E. ESTIMATED TO BE MORE THAN"    5 KM FROM THE STATION
+16 16 PRECIPITATION WITHIN SIGHT, REACHING THE GROUND OR THE SURFA"    CE OF THE SEA, NEAR TO, BUT NOT AT THE STATION
+17 17 THUNDERSTORM, BUT NO PRECIPITATION AT THE TIME OF OBSERVATIO"    N
+18 18 SQUALLS AT OR WITHIN SIGHT OF THE STATION DURING THE PRECEDI"    NG HOUR OR AT THE TIME OF OBSERVATION
+19 19 FUNNEL CLOUD(S) AT OR WITHIN SIGHT OF THE STATION DURING THE"     PRECEDING HOUR OR AT THE TIME OF OBSERVATION
+20 20 DRIZZEL (NOT FREEZING) OR SNOW GRAINS NOT FALLING AS SHOWERS"    ; DURING THE PRECEDING HOUR BUT NOT  AT THE TIME OF OBSERVAT"    IONS
+21 21 RAIN (NOT FREEZING) NOT FALLING AS SHOWER(S); DURING THE PRE"    ECEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+22 22 SNOW NOT FALLING AS SHOWER(S); DURING THE PRECEDING HOUR BUT"     NOT AT THE TIME OF OBSERVATION
+23 23 RAIN AND SNOW OR ICE PELLETS NOT FALLING AS SHOWER(S); DURIN"    G THE PRECEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+24 24 FREEZING DRIZZEL OR FREEZING RAIN NOT FALLING AS SHOWER(S);"    DURING THE PRECEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+25 25 SHOWER(S) OF RAIN; DURING THE PRECEDING HOUR BUT NOT AT THE"    TIME OF OBSERVATION
+26 26 SHOWER(S) OF SNOW, OR OF RAIN AND SNOW; DURING THE PRECEDING"     HOUR BUT NOT AT THE TIME OF OBSERVATION
+27 27 SHOWER(S) OF HAIL, OR OF RAIN AND HAIL; DURING THE PRECEDING"     HOUR BUT NOT AT THE TIME OF OBSERVATION
+28 28 FOG OR ICE FOG; DURING THE PRECEDING HOUR BUT NOT AT THE TIM"    E OF OBSERVATION
+29 29 THUNDERSTORM (WITH OR WITHOUT PRECIPITATION); DURING THE PRE"    CEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+30 30 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM HAS DECREASED DURI"    NG THE PRECEDING HOURS
+31 31 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM NO APPRECIABLE CHA"    NGE DURING THE PRECEDING HOUR
+32 32 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM HAS BEGUN OR HAS I"    NCEASED DURING THE PRECEDING HOUR
+33 33 SEVERE DUSTSTORM OR SANDSTORM  HAS DECREASED DURING THE PREC"    EDING HOURS
+34 34 SEVERE DUSTSTORM OR SANDSTORM NO APPRECIABLE CHANGE DURING T"    HE PRECEDING HOUR
+35 35 SEVERE DUSTSTORM OR SANDSTORM HAS BEGUN OR HAS INCREASED DUR"    ING THE PRECEDING HOUR
+36 36 SLIGHT OR MODERATE DRIFTING SNOW GENERALLY LOW (BELOW EYE LE"    VEL)
+37 37 HEAVY DRIFTING SNOW  GENERALY LOW (BELOW EYE LEVEL)
+38 38 SLIGHT OR MODERATE BLOWING SNOW GENERALLY HIGH (ABOVE EYE LE"    VEL)
+39 39 HEAVY BLOWING SNOW  GENERALY HIGH (ABOVE EYE LEVEL)
+40 40 FOG OR ICE FOG AT A DISTANCE AT THE TIME OF OBSERVATION, BUT"     NOT AT THE STATION DURING THE PRECEDING HOUR, THE FOG OR IC"    E FOG EXTENDING TO A
+41 41 FOG OR ICE FOG IN PATCHES
+42 42 FOG OR ICE FOG, SKY VISIBLE,HAS BECOME THINNER DURING THE PR"    ECEDING HOUR
+43 43 FOG OR ICE FOG, SKY INVISIBLE,HAS BECOME THINNER DURING THE"    PRECEDING HOUR
+44 44 FOG OR ICE FOG, SKY   VISIBLE,NO APPRECIABLE CHANGE DURING T"    HE PRECEDING HOUR
+45 45 FOG OR ICE FOG, SKY INVISIBLE,NO APPRECIABLE CHANGE DURING T"    HE PRECEDING HOUR
+46 46 FOG OR ICE FOG, SKY   VISIBLE,HAS BEGUN OR HAS BECOME THICKE"    R DURING THE PRECEDING HOUR
+47 47 FOG OR ICE FOG, SKY INVISIBLE,HAS BEGUN OR HAS BECOME THICKE"    R DURING THE PRECEDING HOUR
+48 48 FOG, DEPOSITING RIME, SKY VISIBLE
+49 49 FOG, DEPOSITING RIME, SKY INVISIBLE
+50 50 DRIZZLE, NOT FREEZING, INTERMITTENT;SLIGHT AT TIME OF OBSERV"    ATION
+51 51 DRIZZLE, NOT FREEZING, CONTINUOUS  ;SLIGHT AT TIME OF OBSERV"    ATION
+52 52 DRIZZLE, NOT FREEZING, INTERMITTENT;MODERATE AT TIME OF OBSE"    RVATION
+53 53 DRIZZLE, NOT FREEZING, CONTINUOUS  ;MODERATE AT TIME OF OBSE"    RVATION
+54 54 DRIZZLE, NOT FREEZING, INTERMITTENT;HEAVY (DENSE) AT THE TIM"    E OF OBSERVATION
+55 55 DRIZZLE, NOT FREEZING, CONTINUOUS  ;HEAVY (DENSE) AT THE TIM"    E OF OBSERVATION
+56 56 DRIZZLE, FREEZING, SLIGHT
+57 57 DRIZZLE, FREEZING, MODERATE OR HEAVY (DENSE)
+58 58 DRIZZLE AND RAIN, SLIGHT
+59 59 DRIZZLE AND RAIN, MODERATE OR HEAVY
+60 60 RAIN,NOT FREEZING,INTERMITTENT;SLIGHT AT TIME OF OBSERVATION
+61 61 RAIN,NOT FREEZING,CONTINUOUS  ;SLIGHT AT TIME OF OBSERVATION
+62 62 RAIN,NOT FREEZING,INTERMITTENT;MODERATE AT TIME OF OBSERVATI"    ON
+63 63 RAIN,NOT FREEZING,CONTINUOUS  ;MODERATE AT TIME OF OBSERVATI"    ON
+64 64 RAIN, NOT FREEZING, INTERMITTENT;HEAVY AT TIME OF OBSERVATIO"    ON
+65 65 RAIN, NOT FREEZING, CONTINUOUS;HEAVY AT TIME OF OBSERVATION
+66 66 RAIN, FREEZING, SLIGHT
+67 67 RAIN, FREEZING, MODERATE OR HEAVY
+68 68 RAIN OR DRIZZLE AND SNOW, LIGHT
+69 69 RAIN OR DRIZZLE AND SNOW, MODERATE OR HEAVY
+70 70 INTERMITTENT FALL OF SNOWFLAKES, SLIGHT AT TIME OF OBSERVATI"    ON
+71 71 CONTINUOUS   FALL OF SNOWFLAKES, SLIGHT AT TIME OF OBSERVATI"    ON
+72 72 INTERMITTENT FALL OF SNOWFLAKES, MODERATE AT TIME OF OBSERVA"    TION
+73 73 CONTINUOUS   FALL OF SNOWFLAKES, MODERATE AT TIME OF OBSERVA"    TION
+74 74 INTERMITTENT FALL OF SNOWFLAKES, HEAVY AT TIME OF OBSERVATIO"    ONS
+75 75 CONTINUOUS   FALL OF SNOWFLAKES, HEAVY AT TIME OF OBSERVATIO"    ONS
+76 76 DIAMOND DUST (WITH OR WITHOUT FOG)
+77 77 SNOW GRAINS (WITH OR WITHOUT FOG)
+78 78 ISOLATED STAR-LIKE SNOW CRYSTALS (WITH OR WITHOUT FOG)
+79 79 ICE PELLETS
+80 80 RAIN SHOWER(S), SLIGHT
+81 81 RAIN SHOWER(S), MODERATE OR HEAVY
+82 82 RAIN SHOWER(S), VIOLENT
+83 83 SHOWER(S) OF RAIN AND SNOW MIXED, SLIGHT
+84 84 SHOWER(S) OF RAIN AND SNOW MIXED, MODERATE OR HEAVY
+85 85 SNOW SHOWER(S), SLIGHT
+86 86 SNOW SHOWER(S), MODERATE OR HEAVY
+87 87 SHOWER(S) OF SNOW PELLETS OR SMALL HAIL, WITH OR WITHOUT RAI"    N OR RAIN AND SNOW MIXED, SLIGHT
+88 88 SHOWER(S) OF SNOW PELLETS OR SMALL HAIL, WITH OR WITHOUT RAI"    N OR RAIN AND SNOW MIXED, MODERATE OR HEAVY
+89 89 SHOWER(S) OF HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIX"    ED, NOT ASSOCIATED WITH THUNDER, SLIGHT
+90 90 SHOWER(S) OF HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIX"    ED, NOT ASSOCIATED WITH THUNDER, MODERATE OR HEAVY
+91 91 SLIGHT RAIN AT TIME OF OBSERVATION, THUNDERSTORM DURING THE"    PRECEDING HOUR BUT NOT AT TIME OF OBSERVATION
+92 92 MODERATE OR HEAVY RAIN AT TIME OF OBSERVATION, THUNDERSTORM"    DURING THE PRECEDING HOUR BUT NOT AT TIME OF OBSERVATION
+93 93 SLIGHT SNOW, OR RAIN AND SNOW MIXED OR HAIL AT TIME OF OBSER"    VATION, THUNDERSTORM DURING THE PRECEDING HOUR BUT NOT AT TI"    ME OF OBSERVATION
+94 94 MODERATE OR HEAVY SNOW, OR RAIN AND SNOW MIXED OR HAIL AT TI"    ME OF OBSERVATION, THUNDERSTORM DURING PRECEDING HOUR BUT NO"    T AT TIME OF OBSERVA
+95 95 THUNDERSTORM, SLIGHT OR MODERATE, WITHOUT HAIL, BUT WITH RAI"    N AND/OR SNOW AT TIME OF OBSERVATION, THUNDERSTORM DURING TH"    E PRECEDING HOUR BUT
+96 96 THUNDERSTORM, SLIGHT OR MODERATE,WITH HAIL AT TIME OF OBSERV"    ATION, THUNDERSTORM AT TIME OF OBSERVATION
+97 97 THUNDERSTORM, HEAVY, WITHOUT HAIL BUT WITH RAIN AND/OR SNOW"    AT TIME OF OBSERVATION, THUNDERSTORM AT TIME OF OBSERVATION
+98 98 THUNDERSTORM COMBINED WITH DUSTSTORM OR SANDSTORM AT TIME OF"     OBSERVATION, THUNDERSTORM AT TIME OF OBSERVATION
+99 99 THUNDERSTORM, HEAVY, WITH HAIL AT TIME OF OBSERVATION, THUND"    ERSTORM AT TIME OF OBSERVATION
+100 100 NO SIGNIFICANT WEATHER OBSERVED
+101 101 CLOUDS GENERALLY DISSOLVING OR BECOMING LESS DEVELOPED DURIN"    G THE PAST HOUR
+102 102 STATE OF SKY ON THE WHOLE UNCHANGED DURING THE PAST HOUR
+103 103 CLOUDS GENERALLY FORMING OR DEVELOPING DURING THE PAST HOUR
+104 104 HAZE OR SMOKE, OR DUST IN SUSPENSION IN THE AIR, VISIBILITY"    EQUAL TO, OR GREATER THAN 1KM
+105 105 HAZE OR SMOKE, OR DUST IN SUSPENSION IN THE AIR, VISIBILITY"    LESS THAN 1KM
+110 110 MIST
+111 111 DIAMOND DUST
+112 112 DISTANT LIGHTING
+118 118 SQUALLS
+120 120 FOG
+121 121 PRECIPITATION
+122 122 DRIZZLE (NOT FREEZING) OR SNOW GRAINS
+123 123 RAIN (NOT FREEZING)
+124 124 SNOW
+125 125 FREEZING DRIZZLE OR FREEZING RAIN
+126 126 THUNDERSTORM (WITH OR WITHOUT PRECIPITATION)
+127 127 BLOWING OR DRIFTING SNOW OR SAND
+128 128 BLOWING OR DRIFTING SNOW OR SAND, VISIBILITY EQUAL TO, OR GR"    ATER THAN, 1KM
+129 129 BLOWING OR DRIFTING SNOW OR SAND, VISIBILITY LESS THAN 1 KM
+130 130 FOG
+131 131 FOG OR ICE FOG, IN PATCHES
+132 132 FOG OR ICE FOG, HAS BECOME THINNER DURING PAST HOUR
+133 133 FOG OR ICE FOG, NO APPRECIABLE CHANGE DURING PAST HOUR
+134 134 FOG OR ICE FOG, HAS BECUNOR BECOME THICKER DURING PAST HOUR
+135 135 FOG, DEPOSITION RIME
+140 140 PRECIPITATION
+141 141 PRECIPITATION SLIGHT OR MODERATE
+142 142 PRECIPITATION, HEAVY
+143 143 LIQUID PRECIPITATION, SLIGHT OR MODERATE
+144 144 LIQUID PRECIPITATION, HEAVY
+145 145 SOLID PRECIPITATION, SLIGHT OR MODERATE
+146 146 SOLID PRECIPITATION, HEAVY
+147 147 FREEZING PRECIPITATION, SLIGHT OR MODERATE
+148 148 FREEZING PRECIPITATION, HEAVY
+150 150 DRIZZLE
+151 151 DRIZZLE, NOT FREEZING, SLIGHT
+152 152 DRIZZLE, NOT FREEZING, MODERATE
+153 153 DRIZZLE, NOT FREEZING, HEAVY
+154 154 DRIZZLE, FREEZING, SLIGHT
+155 155 DRIZZLE, FREEZING, MODERATE
+156 156 DRIZZLE, FREEZING, HEAVY
+157 157 DRIZZLE AND RAIN, SLIGHT
+158 158 DRIZZLE AND RAIN, MODERATE OR HEAVY
+160 160 RAIN
+161 161 RAIN, NOT FREEZING, SLIGHT
+162 162 RAIN, NOT FREEZING, MODERATE
+163 163 RAIN, NOT FREEZING, HEAVY
+164 164 RAIN, FREEZING, SLIGHT
+165 165 RAIN, FREEZING, MODERATE
+166 166 RAIN, FREEZING, HEAVY
+167 167 RAIN (OR DRIZZLE) AND SNOW, SLIGHT
+168 168 RAIN (OR DRIZZLE) AND SNOW, MODERATE AND HEAVY
+170 170 SNOW
+171 171 SNOW, SLIGHT
+172 172 SNOW, MODERATE
+173 173 SNOW, HEAVY
+174 174 ICE PELLETS, SLIGHT
+175 175 ICE PELLETS, MODERATE
+176 176 ICE PELLETS, HEAVY
+180 180 SHOWER(S) OR INTERMITTENT PRECIPITATION
+181 181 RAIN SHOWER(S) OR INTERMITTENT RAIN, SLIGHT
+182 182 RAIN SHOWER(S) OR INTERMITTENT RAIN, MODERATE
+183 183 RAIN SHOWER(S) OR INTERMITTENT RAIN, HEAVY
+184 184 RAIN SHOWER(S) OR INTERMITTENT RAIN, VIOLENT
+185 185 SNOW SHOWER(S) OR INTERMITTENT SNOW, SLIGHT
+186 186 SNOW SHOWER(S) OR INTERMITTENT SNOW, MODERATE
+187 187 SNOW SHOWER(S) OR INTERMITTENT SNOW, HEAVY
+190 190 THUNDERSTORM
+191 191 THUNDERSTORM, SLIGHT OR MODERATE, WITH NO PRECIPITATION
+192 192 THUNDERSTORM, SLIGHT OR MODERATE, WITH RAIN SHOWERS AND/OR S"    NOW SHOWERS
+193 193 THUNDERSTORM, SLIGHT OR MODERATE, WITH HAIL
+194 194 THUNDERSTORM, HEAVY, WITH NO PRECIPITATION
+195 195 THUNDERSTORM, HEAVY, WITH RAIN SHOWERS AND/OR SNOW SHOWERS
+196 196 THUNDERSTORM, HEAVY, WITH HAIL
+204 204 VOLCANIC ASH SUSPENDED IN THE AIR ALOFT
+206 206 THICK DUST HAZE, VISIBILITY LESS THAN 1 KM
+207 207 BLOWING SPRAY AT THE STATION
+208 208 DRIFTING DUST (SAND)
+209 209 WALL OF DUST OR SAND IN DISTANCE (LIKE HABOOB)
+210 210 SNOW HAZE
+211 211 WHITEOUT
+213 213 LIGHTING, CLOUD TO SURFACE
+217 217 DRY THUNDERSTORM
+219 219 TORNADO CLOUD (DESTRUCTIVE AT OR WITHIN SIGHT OF THE STATION"    DURING PRECEDING HOUR OR AT THE TIME OF OBSERVATION
+220 220 DEPOSITION OF VOLCANIC ASH
+221 221 DEPOSITION OF DUST OR SAND
+222 222 DEPOSITION OF DEW
+223 223 DEPOSITION OF WET SNOW
+224 224 DEPOSITION OF SOFT RIME
+225 225 DEPOSITION OF HARD RIME
+226 226 DEPOSITION OF HOAR FROST
+227 227 DEPOSITION OF GLAZE
+228 228 DEPOSITION OF ICE CRUST (ICE SLICK)
+230 230 DUSTSTORM OR SANDSTORM WITH TEMPERATURE BELOW 0 C DEGREES
+239 239 BLOWING SNOW, IMPOSSIBLE TO DETERMINE WHETHER SNOW IS FALLIN"    G OR NOT
+241 241 FOG ON SEA
+242 242 FOG IN VALLEYS
+243 243 ARCTIC OR ANTARCTIC SEA SMOKE
+244 244 STEAM FOG (SEA,LAKE OR RIVER)
+245 245 STEAM FOG (LAND)
+246 246 FOG OVER ICE OR SNOW COVER
+247 247 DENCE FOG VISIBILITY 60-90 M
+248 248 DENCE FOG VISIBILITY 30-60 M
+249 249 DENCE FOG VISIBILITY LESS THAN 30 M
+250 250 DRIZZLE, RATE OF FALL  LESS THAN 0.10 MM/H
+251 251 DRIZZLE, RATE OF FALL   0.10 -  .19  MM/H
+252 252 DRIZZLE, RATE OF FALL   0.20 -  .39  MM/H
+253 253 DRIZZLE, RATE OF FALL   0.40 -  .79  MM/H
+254 254 DRIZZLE, RATE OF FALL   0.80 - 1.59  MM/H
+255 255 DRIZZLE, RATE OF FALL   1.60 - 3.19  MM/H
+256 256 DRIZZLE, RATE OF FALL   3.20 - 6.39  MM/H
+257 257 DRIZZLE, RATE OF FALL   6.40 MM/H  OR MORE
+259 259 DRIZZLE AND SNOW
+260 260 RAIN, RATE OF FALL  LESS THAN 1.0 MM/H
+261 261 RAIN, RATE OF FALL   1.0  -  1.9   MM/H
+262 262 RAIN, RATE OF FALL   2.0  -  3.9   MM/H
+263 263 RAIN, RATE OF FALL   4.0  -  7.9   MM/H
+264 264 RAIN, RATE OF FALL   8.0  - 15.9   MM/H
+265 265 RAIN, RATE OF FALL  16.0  - 31.9   MM/H
+266 266 RAIN, RATE OF FALL  32.0  - 63.9   MM/H
+267 267 RAIN, RATE OF FALL  64.0  MM/H  OR MORE
+270 270 SNOW, RATE OF FALL  LESS THAN 1.0 CM/H
+271 271 SNOW, RATE OF FALL   1.0  -  1.9   CM/H
+272 272 SNOW, RATE OF FALL   2.0  -  3.9   CM/H
+273 273 SNOW, RATE OF FALL   4.0  -  7.9   CM/H
+274 274 SNOW, RATE OF FALL   8.0  - 15.9   CM/H
+275 275 SNOW, RATE OF FALL  16.0  - 31.9   CM/H
+276 276 SNOW, RATE OF FALL  32.0  - 63.9   CM/H
+277 277 SNOW, RATE OF FALL  64.0  CM/H  OR MORE
+278 278 SNOW OR ICE CRISTAL PRECIPITATION FROM A CLEAR SKY
+279 279 WET SNOW, FREEZING ON CONTACT
+280 280 PRECIPITATION OF RAIN (WW= 87-99)
+281 281 PRECIPITATION OF RAIN,FREEZING (WW= 80-82)
+282 282 PRECIPITATION OF RAIN AND SNOW MIXED
+283 283 PRECIPITATION OF SNOW
+284 284 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL
+285 285 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH RAIN
+286 286 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH RAIN AND S"    NOW MIXED
+287 287 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH SNOW
+288 288 PRECIPITATION OF HAIL
+289 289 PRECIPITATION OF HAIL, WITH RAIN
+290 290 PRECIPITATION OF HAIL, WITH RAIN AND SNOW MIXED
+291 291 PRECIPITATION OF HAIL, WITH SNOW
+292 292 SHOWER(S) OR THUNDERSTORM OVER SEA
+293 293 SHOWER(S) OR THUNDERSTORM OVER MOUNTAINS
+508 508 NO SIGNIFICANT PHENOMENA TO REPORT, PRESENT AND PAST WEATHER"     OMITTED
+509 509 NOT OBSERVED, NO DATA AVAILABLE, PRESENT AND PAST WEATHER OM"    ITTED
+510 510 PRESENT AND PAST WEATHER MISSING, BUT EXPECTED
+511 511 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20004.table b/definitions/bufr/tables/0/wmo/8/codetables/20004.table
new file mode 100644
index 0000000..bd060a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20004.table
@@ -0,0 +1,21 @@
+0 0 CLOUD COVERING 1/2 OR LESS OF THE SKY THROUGHOUT THE APPROPP"    RIATE PERIOD
+1 1 CLOUD COVERING MORE THAN 1/2 OF THE SKY DURING PART OF THE A"    PPROPRIATE PERIOD AND COVERING 1/2 OR LESS DURING PART OF TH"    E PERIOD
+2 2 CLOUD COVERING MORE THAN 1/2 OF THE SKY THROUGHOUT THE APPRP"    PRIATE PERIOD
+3 3 SANSTORM, DUSTSTORM OR BLOWING SNOW
+4 4 FOG OR ICE OR THICK HAZE
+5 5 DRIZZLE
+6 6 RAIN
+7 7 SNOW, OR RAIN AND SNOW MIXED
+8 8 SHOWER(S)
+9 9 THUNDERSTORM(S) WITH OR WITHOUT PRECIPITATION
+10 10 NO SIGNIFICANT WEATHER OBSERVED
+11 11 VISIBILITY REDUCED
+12 12 BLOWING PHENOMENA, VISIBILITY REDUCED
+13 13 FOG
+14 14 PRECIPITATION
+15 15 DRIZZLE
+16 16 RAIN
+17 17 SNOW OR ICE PELLETS
+18 18 SHOWERS OR INTERMITTENT PRECIPITATION
+19 19 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20005.table b/definitions/bufr/tables/0/wmo/8/codetables/20005.table
new file mode 100644
index 0000000..bd060a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20005.table
@@ -0,0 +1,21 @@
+0 0 CLOUD COVERING 1/2 OR LESS OF THE SKY THROUGHOUT THE APPROPP"    RIATE PERIOD
+1 1 CLOUD COVERING MORE THAN 1/2 OF THE SKY DURING PART OF THE A"    PPROPRIATE PERIOD AND COVERING 1/2 OR LESS DURING PART OF TH"    E PERIOD
+2 2 CLOUD COVERING MORE THAN 1/2 OF THE SKY THROUGHOUT THE APPRP"    PRIATE PERIOD
+3 3 SANSTORM, DUSTSTORM OR BLOWING SNOW
+4 4 FOG OR ICE OR THICK HAZE
+5 5 DRIZZLE
+6 6 RAIN
+7 7 SNOW, OR RAIN AND SNOW MIXED
+8 8 SHOWER(S)
+9 9 THUNDERSTORM(S) WITH OR WITHOUT PRECIPITATION
+10 10 NO SIGNIFICANT WEATHER OBSERVED
+11 11 VISIBILITY REDUCED
+12 12 BLOWING PHENOMENA, VISIBILITY REDUCED
+13 13 FOG
+14 14 PRECIPITATION
+15 15 DRIZZLE
+16 16 RAIN
+17 17 SNOW OR ICE PELLETS
+18 18 SHOWERS OR INTERMITTENT PRECIPITATION
+19 19 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20008.table b/definitions/bufr/tables/0/wmo/8/codetables/20008.table
new file mode 100644
index 0000000..646997b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20008.table
@@ -0,0 +1,19 @@
+0 0 SKY CLEAR
+1 1 FEW
+2 2 SCATTERED
+3 3 BROKEN
+4 4 OVERCAST
+5 5 RESERVED
+6 6 SCATTERED/BROKEN (MANY FORECASTS USE SCATTERED/BROKEN
+7 7 BROKEN/OVERCAST (BROKEN/OVERCAST FOLLOWED BY CLOUD TYPE(S))
+8 8 ISOLATED (USED ON AVIATION CHARTS TO DESCRIBE THE CLOUD TYPE"     CB)
+9 9 ISOLATED EMBEDDED (USED ON AVIATION CHARTS TO DESCRIBE THE C"    LOUD TYPE CB)
+10 10 OCCASIONAL (USED ON AVIATION CHARTS TO DESCRIBE THE CLOUD TY"    PE CB)
+11 11 OCCASIONAL EMBEDDED (USED ON AVIATION CHARTS TO DESCRIBE THE"     CLOUD TYPE CB)
+12 12 FREQUENT (USED ON AVIATION CHARTS TO DESCRIBE THE CLOUD TYPE"     CB)
+13 13 DENSE (USED ON AVIATION CHARTS TO DESCRIBE CLOUD THAT WOULD"    CAUSE SUDDEN CHANGES IN VISIBILITY (LESS THAN 1000M)
+14 14 LAYERS
+15 15 OBSCURED (OBSC)
+16 16 EMBEDDED (EMBD)
+17 17  FREQUENT EMBEDDED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20009.table b/definitions/bufr/tables/0/wmo/8/codetables/20009.table
new file mode 100644
index 0000000..084630c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20009.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 NSC MIL SIGNIFICANT CLOUD
+2 2 CAVOK
+3 3 SKC SKY CLEAR
+4 4 NSW NIL SIGNIFICANT WEATHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2001.table b/definitions/bufr/tables/0/wmo/8/codetables/2001.table
new file mode 100644
index 0000000..8259eeb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2001.table
@@ -0,0 +1,4 @@
+0 0 AUTOMATIC STATION
+1 1 MANNED STATION
+2 2 HYBRID, BOTH MANNED AND AUTOMATIC
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20011.table b/definitions/bufr/tables/0/wmo/8/codetables/20011.table
new file mode 100644
index 0000000..740be7b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20011.table
@@ -0,0 +1,11 @@
+0 0 0                              0
+1 1 1 OKTA OR LESS, BUT NOT ZERO   1/10 OR LESS, BUT NOT ZERO
+2 2 2 OKTAS                        2/10 - 3/10
+3 3 3 OKTAS                        4/10
+4 4 4 OKTAS                        5/10
+5 5 5 OKTAS                        6/10
+6 6 6 OKTAS                        7/10 - 8/10
+7 7 7 OKTAS OR MORE,BUT NOT 8 OKTAS9/10 OR MORE, BUT NOT 10/10
+8 8 8 OKTAS                        10/10
+9 9 SKY OBSCURED BY FOG AND OR OTHER METEOROLOGICAL PHENOMENA
+15 15 CLOUD COVE IS INDISCERNIBLE FOR REASONS OTHER THAN FOG OR OT"    HER METEOROLOGICAL PHENOMENA, OR OBSERVATION IS NOT MADE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20012.table b/definitions/bufr/tables/0/wmo/8/codetables/20012.table
new file mode 100644
index 0000000..ff14028
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20012.table
@@ -0,0 +1,45 @@
+0 0 CIRRUS (CI)...............CI
+1 1 CIRROCUMULUS (CC).........CC
+2 2 CIRROSTRATUS (CS).........CS
+3 3 ALTOCUMULUS  (AC).........AC
+4 4 ALTOSTRATUS  (AS).........AS
+5 5 NIMBOSTRATUS (NS).........NS
+6 6 STRATOCUMULUS(SC).........SC
+7 7 STRATUS      (ST).........ST
+8 8 CUMULUS      (CU).........CU
+9 9 CUMULONIMBUS (CB).........CB
+10 10 NO CH CLOUDS
+11 11 CIRRUS FIBRATUS, SOMETIMES UNCINUS, NOT PROGRESSIVELY INADIN"    G THE SKY
+12 12 CIRRUS SPISSATUS, IN PATCHES OR ENTANGLED SHEAVES, WHICH USU"    ALLY DO NOT INCREASE AND SOMETIMES SEEM TO BE THE REMAINS OF"     THE UPPER PART OF A
+13 13 CIRRUS SPISSATUS CUMULONIMBOGENITUS
+14 14 CIRRUS UNCINUS OR FIBRATUS,OR BOTH, PROGRESSIVELY INVADING T"    HE SKY ; THEY GENERALLY THICKEN AS A WHOLE
+15 15 CIRRUS (OFTEN IN BANDS) AND CIRROSTRATUS, OR CIRROSTRATUS AL"    ONE, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN"    ASA WHOLE, BUT THE CO
+16 16 CIRRUS (OFTEN IN BANDS) AND CIRROSTRATUS, OR CIRROSTRATUS AL"    ONE, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN"    ASA WHOLE, BUT THE CO
+17 17 CIRROSTRATUS COVERING THE WHOLE SKY
+18 18 CIRROSTRATUS NOT PROGRESSIVELY INVADING THE SKY AND NOT ENTI"    RELY COVERING IT
+19 19 CIRROCUMULUS ALONE, OR CIRROCUMULUS PREDOMINANT AMONG THE CH"     CLOUDS
+20 20 NO CM CLOUDS
+21 21 ALTOSTRATUS TRANSLUCIDUS
+22 22 ALTOSTRATUS OPACUS OR NIMBOSTRATUS
+23 23 ALTOCUMULUS TRANSLUCIDUS AT A SINGLE LEVEL
+24 24 PATCHES (OFTEN LENTICULARIS) OF ALTOCUMULUS TRANSLUCIDUS, CO"    NTINUALLY CHANGING AND OCCURING AT ONE OR MORE LEVELS
+25 25 ALTOCUMULUS TRANSLUCIDUS IN BANDS, OR ONE OR MORE LAYERS OF"    ALTOCUMULUS TRANSLUCIDUS OR OPACUS, PROGRESSIVELY INVADING T"    HE SKY; THESE ALTOCUM
+26 26 ALTOCUMULUS CUMULOGENITUS (OR CUMULONIMBOGENITUS)
+27 27 ALTOCUMULUS TRANSLUCIDUS OR OPACUS IN TWO OR MORE LAYERS, OR"     ALTOCUMULUS OPACUS IN A SINGLE LAYER, NOT PROGRESSIVELY INV"    ADING THE SKY, OR AL
+28 28 ALTOCUMULUS CASTELLANUS OR FLOCUS
+29 29 ALTOCUMULUS OF CHAOTIC SKY, GENERALLY AT SEVERAL LEVELS
+30 30 NO CL CLOUDS
+31 31 CUMULUS HUMILIS OR CUMULUS FRACTUS OTHER THAN OF BAD WEATHER"    , OR BOTH
+32 32 CUMULUS MEDIOCRIS OR CONGESTUS, WITH OR WITHOUT CUMULUS OF S"    PECIES FRACTUS OR HUMULIS OR STRATOCUMULUS, ALL HAVING THEIR"     BASES AT THE SAME L
+33 33 CUMULONIMBUS CALVUS, WITH OR WITHOUT CUMULUS, STRATOCUMULUS"    OR STRATUS
+34 34 STRATOCUMULUS CUMULOGENITUS
+35 35 STRATOCUMULUS OTHER THAN STRATOCUMULUS CUMULOGENITUS
+36 36 STRATUS NEBULOSUS OR STRATUS FRACTUS OTHER THAN OF BAD WEATH"    ER, OR BOTH
+37 37 STRATUS FRACTUS OR CUMULUS FRACTUS OF BAD WEATHER, OR BOTH"    (PANNUS), USUALLY BELOW ALTOSTRATUS OR NIMBOSTRATUS
+38 38 CUMULUS AND STRATOCUMULUS OTHER THAN STRATOCUMULUS CUMULOGEN"    ITUS, WITH BASES AT DIFFERENT LEVELS
+39 39 CUMULONIMBUS CAPILLATUS (OFTEN WITH AN ANVIL), WITH OR WITHO"    UT CUMULONIMBUS CALVUS, CUMULUS, STRATOCUMULUS, STRATUS OR P"    ANNUS
+59 59 CLOUD NOT VISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDSTO"    RM, OR OTHER ANALOGOUS PHENOMENA
+60 60 CH CLOUDS INVISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDS"    TORM, OR OTHER SIMILAR PHENOMENA, OR BECAUSE OF A CONTINUOUS"    LAYER OF LOWER CLOUD
+61 61 CM CLOUDS INVISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDS"    TORM, OR OTHER SIMILAR PHENOMENA, OR BECAUSE OF A CONTINUOUS"    LAYER OF LOWER CLOUD
+62 62 CL CLOUDS INVISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDS"    TORM, OR OTHER SIMILAR PHENOMENA
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20017.table b/definitions/bufr/tables/0/wmo/8/codetables/20017.table
new file mode 100644
index 0000000..48f9b49
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20017.table
@@ -0,0 +1,11 @@
+0 0 ISOLATED CLOUD OR FRAGMENTS OF CLOUD
+1 1 CONTINUOUS CLOUD
+2 2 BROKEN CLOUD - SMALL BREAKS, FLAT TOPS
+3 3 BROKEN CLOUD - LARGE BREAKS, FLAT TOPS
+4 4 CONTINUOUS CLOUD
+5 5 BROKEN CLOUD - SMALL BREAKS, UNDULATED TOPS
+6 6 BROKEN CLOUD - LARGE BREAKS, UNDULATED TOPS
+7 7 CONTINUOUS OR ALMOST CONTINUOUS WAVES WITH TOWERING CLOUDS A"    BOVE THE TOP OF THE LAYER
+8 8 GROUPS OF WAVES WITH TOWERING CLOUDS ABOVE THE TOP OF THE LA"    YER
+9 9 TWO OR MORE LAYERS AT DIFFERENT LEVELS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20018.table b/definitions/bufr/tables/0/wmo/8/codetables/20018.table
new file mode 100644
index 0000000..c0ffc36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20018.table
@@ -0,0 +1,4 @@
+0 0 INCREASING (U)
+1 1 DECREASING (D)
+2 2 NO DISTINCT CHANGE (N)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2002.table b/definitions/bufr/tables/0/wmo/8/codetables/2002.table
new file mode 100644
index 0000000..9b8469f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2002.table
@@ -0,0 +1,4 @@
+0 0 MEASURED IN M S-1 UNLESS OTHERWISE INDICATED
+1 1 CERTIFIED INSTRUMENTS
+2 2 ORIGINALY MEASURED IN KNOTS
+3 3 ORIGINALY MEASURED IN KM/H
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20021.table b/definitions/bufr/tables/0/wmo/8/codetables/20021.table
new file mode 100644
index 0000000..d9f7226
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20021.table
@@ -0,0 +1,24 @@
+1 1 PRECIPITATION-UNKNOWN TYPE
+2 2 LIQUID PRECIPITATION NOT FREEZING
+3 3 LIQUID FREEZING PRECIPITATION
+4 4 DRIZZLE
+5 5 RAIN
+6 6 SOLID PRECIPITATION
+7 7 SNOW
+8 8 SNOW GRAINS
+9 9 SNOW PELLETS
+10 10 ICE PELLETS
+11 11 ICE CRYSTALS
+12 12 DIAMOND DUST
+13 13 SMALL HAIL
+14 14 HAIL
+15 15 GLAZE
+16 16 RIME
+17 17 SOFT RIME
+18 18 HARD RIME
+19 19 CLEAR ICE
+20 20 WET SNOW
+21 21 HOAR FROST
+22 22 DEW
+23 23 WHITE DEW
+30 30 ALL 30 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20022.table b/definitions/bufr/tables/0/wmo/8/codetables/20022.table
new file mode 100644
index 0000000..a551aac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20022.table
@@ -0,0 +1,7 @@
+0 0 NO PRECIPITATION
+1 1 CONTINUOUS
+2 2 INTERMITTENT
+3 3 SHOWER
+4 4 NOT REACHING GROUND
+5 5 DEPOSITION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20023.table b/definitions/bufr/tables/0/wmo/8/codetables/20023.table
new file mode 100644
index 0000000..9e2093a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20023.table
@@ -0,0 +1,12 @@
+1 1 DUST/SAND WHIRL
+2 2 SQUALLS
+3 3 SAND STORM
+4 4 DUST STORM
+5 5 LIGHTNING - CLOUD TO SURFACE
+6 6 LIGHTNING - CLOUD TO CLOUD
+7 7 LIGHTNING - DISTANT
+8 8 THUNDERSTORM
+9 9 FUNNEL CLOUD NOT TOUCHING SURFACE
+10 10 FUNNEL CLOUD TOUCHING SURFACE
+11 11 SPRAY
+12 12 WATER-SPOUT
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20024.table b/definitions/bufr/tables/0/wmo/8/codetables/20024.table
new file mode 100644
index 0000000..d21d786
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20024.table
@@ -0,0 +1,7 @@
+0 0 NO PHENOMENA
+1 1 LIGHT
+2 2 MODERATE
+3 3 HEAVY
+4 4 VIOLENT
+5 5 SEVERE (VAL)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20025.table b/definitions/bufr/tables/0/wmo/8/codetables/20025.table
new file mode 100644
index 0000000..e05d542
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20025.table
@@ -0,0 +1,11 @@
+1 1 FOG
+2 2 ICE FOG
+3 3 STEAM FOG
+7 7 MIST
+8 8 HAZE
+9 9 SMOKE
+10 10 VOLCANIC ASH
+11 11 DUST
+12 12 SAND
+13 13 SNOW
+21 21 ALL 21 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20026.table b/definitions/bufr/tables/0/wmo/8/codetables/20026.table
new file mode 100644
index 0000000..541f94b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20026.table
@@ -0,0 +1,14 @@
+0 0 NO CHANGE
+1 1 SHALLOW
+2 2 PATCHES
+3 3 PARTIAL
+4 4 FREEZING
+5 5 LOW DRIFTING
+6 6 BLOWING
+7 7 INCREASING
+8 8 DECREASING
+9 9 IN SUSPENSION IN THE AIR
+10 10 WALL
+11 11 DENSE
+12 12 WHITEOUT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20027.table b/definitions/bufr/tables/0/wmo/8/codetables/20027.table
new file mode 100644
index 0000000..4d816ae
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20027.table
@@ -0,0 +1,7 @@
+1 1 AT TIME OF OBSERVATION
+2 2 IN PAST HOUR
+3 3 IN TIME PERIOD FOR PAST WEATHER W1W2
+4 4 IN TIME PERIOD SPECIFIED
+6 6 BELOW STATION LEVEL
+7 7 AT THE STATION
+8 8 IN THE VICINITY
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20029.table b/definitions/bufr/tables/0/wmo/8/codetables/20029.table
new file mode 100644
index 0000000..8b46da8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20029.table
@@ -0,0 +1,4 @@
+0 0 NO RAIN
+1 1 RAIN
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2003.table b/definitions/bufr/tables/0/wmo/8/codetables/2003.table
new file mode 100644
index 0000000..cdb2cb5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2003.table
@@ -0,0 +1,12 @@
+0 0 PRESSURE INSTRUMENT ASSOCIATED WITH WIND-MEASURING EQUIPMENT
+1 1 OPTICAL THEODOLITE
+2 2 RADIO THEODOLITE
+3 3 RADAR
+4 4 VLF-OMEGA
+5 5 LORAN C
+6 6 WIND PROFILER
+7 7 SATELLITE NAVIGATION
+8 8 RADIO-ACOUSTIC SOUNDING SYSTEM (RASS)
+9 9 SODAR
+14 14 PRESSURE INSTRUMENT ASSOCIATED WITH WIND MEASUREMENT EQUIPME"    NT BUT PRESSURE ELEMENT FAILED DURING ASCENT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20032.table b/definitions/bufr/tables/0/wmo/8/codetables/20032.table
new file mode 100644
index 0000000..87ac945
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20032.table
@@ -0,0 +1,6 @@
+0 0 ICE NOT BUILDING UP
+1 1 ICE BUILDING UP SLOWLY
+2 2 ICE BUILDING UP QUICKLY
+3 3 ICE MELTING OR BREAKING UP SLOWLY
+4 4 ICE MELTING OR BREAKING UP RAPIDLY
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20033.table b/definitions/bufr/tables/0/wmo/8/codetables/20033.table
new file mode 100644
index 0000000..6cc31fc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20033.table
@@ -0,0 +1,4 @@
+1 1 ICING FROM OCEAN SPRAY
+2 2 ICING FROM FOG
+3 3 ICING FROM RAIN
+4 4 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20034.table b/definitions/bufr/tables/0/wmo/8/codetables/20034.table
new file mode 100644
index 0000000..97199d8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20034.table
@@ -0,0 +1,12 @@
+0 0 NO SEA ICE IN SIGHT
+1 1 SHIP IN OPEN LEAD MORE THAN 1.0 NAUTICAL MILE WIDE, OR SHIP"    IN FAST ICE WITH BOUNDARY BEYOND LIMIT OF VISIBILITY
+2 2 SEA ICE PRESENT IN CONCETRATION LESS THAN 3/10 (3/8), OPEN W"    ATER OR VERY OPEN PACK ICE, SEA ICE CONCETRATION IS UNIFORM"    IN THE OBSERVATION AR
+3 3 4/10 TO 6/10 (3/8 TO LESS THAN 6/8) ,OPEN PACK ICE, SEA ICE"    CONCETRATION IS UNIFORM IN THE OBSERVATION AREA, SHIP IN ICE"     OR WITHIN 0.5 NAUTIC
+4 4 7/10 TO 8/10 (6/8 TO LESS THAN 7/8), CLOSE PACK ICE, SEA ICE"     CONCETRATION IS UNIFORM IN THE OBSERVATION AREA, SHIP IN IC"     E OR WITHIN 0.5 NAU
+5 5 9/10 OR MORE, BUT NOT 10/10 (7/8 TO LESS THAN 8/8), VERY CLO"    SE PACK ICE, SEA ICE CONCETRATION IS UNIFORM IN THE OBSERVAT"    ION AREA, SHIP IN IC
+6 6 STRIPS AND PATCHES OF PACK ICE WITH OPEN WATER BETWEEN, SEA"    ICE CONCENTRATION IS NOT UNIFORM IN THE OBSERVATION AREA, SH"    IP IN ICE OR WITHIN 0
+7 7 STRIPS AND PATCHES OF CLOSE OR VERY CLOSE PACK ICE WITH AREA"    S OF LESSER CONCENTRATION BETWEEN, SEA ICE CONCETRATION IS N"    OT UNIFORM IN THE OB
+8 8 FAST ICE WITH OPEN WATER,VERY OPEN OR OPEN PACK ICE TO SEAWA"    RD OF THE ICE BOUNDARY, SEA ICE CONCENTRATION IS NOT UNIFORM"     IN THE OBSERVATION 
+9 9 FAST ICE CLOSE OR VERY CLOSE PACK ICE TO SEAWARD OF THE ICE"    BOUNDARY, SEA ICE CONCETRATION IS NOT UNIFORM IN THE OBSERVA"    TION AREA, SHIP IN IC
+14 14 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY, O"    R BECAUSE SHIP IS MORE THAN 0.5 NAUTICAL MILE AWAY FROM ICE"    EDGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20035.table b/definitions/bufr/tables/0/wmo/8/codetables/20035.table
new file mode 100644
index 0000000..8229f90
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20035.table
@@ -0,0 +1,12 @@
+0 0 NO ICE OF LAND ORIGIN
+1 1 1-5 ICEBERGS, NO GROWLERS OR BERGY BITS
+2 2 6-10 ICEBERGS, NO GROWLERS OR BERGY BITS
+3 3 11-20 ICEBERGS, NO GROWLERS OR BERGY BITS
+4 4 UP TO AND INCLUDING 10 GROWLERS AND BERGY BITS - NO ICEBERGS
+5 5 MORE THAN 10 GROWLERS AND BERGY BITS - NO ICEBERGS
+6 6 1-5 ICEBERGS, WITH GROWLERS AND BERGY BITS
+7 7 6-10 ICEBERGS, WITH GROWLERS AND BERGY BITS
+8 8 11-20 ICEBERGS, WITH GROWLERS AND BERGY BITS
+9 9 MORE THAN 20 ICEBERGS,WITH GROWLERS AND BERGY BITS - A MAJOR"    HAZARD TO NAVIGATION
+14 14 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY OR"    BECAUSE ONLY SEA ICE IS VISIBLE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20036.table b/definitions/bufr/tables/0/wmo/8/codetables/20036.table
new file mode 100644
index 0000000..69c1c36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20036.table
@@ -0,0 +1,12 @@
+0 0 SHIP IN OPEN WATER WITH FLOATING ICE IN SIGHT
+1 1 SHIP IN EASILY PENETRABLE ICE; CONDITIONS IMPROVING
+2 2 SHIP IN EASILY PENETRABLE ICE; CONDITIONS NOT CHANGING
+3 3 SHIP IN EASILY PENETRABLE ICE; CONDITIONS WORSENING
+4 4 SHIP IN ICE DIFFICULT TO PENETRATE; CONDITIONS IMPROVING
+5 5 SHIP IN ICE DIFFICULT TO PENETRATE; CONDITIONS NOT CHANGING
+6 6 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."    ICE FORMING AND FLOES FREEZING TOGETHAR
+7 7 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."    ICE UNDER SLIGHT PRESSURE
+8 8 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."    ICE UNDER MODERATE OR SEVERE PRESSURE
+9 9 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."     SHIP BESET.
+30 30 UNABLE TO REPORT, BECAUSE OF DARKNESS OR LACK OF VISIBILITY
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20037.table b/definitions/bufr/tables/0/wmo/8/codetables/20037.table
new file mode 100644
index 0000000..ea3a1df
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20037.table
@@ -0,0 +1,12 @@
+0 0 NEW ICE ONLY (FRAZIL ICE, GREASE ICE, SLUSH, SHUGA)
+1 1 NILAS OR ICE RIND, LESS THAN 10 CM THICK
+2 2 YOUNG ICE(GREY ICE, GREY-WHITE ICE
+3 3 PREDOMINANTLY NEW AND/OR YOUNG ICE WITH SOME FIRST-YEAR ICE
+4 4 PREDOMINANTLY THIN FIRST-YEAR ICE WITH SOME NEW AND/OR YOUNG"     ICE
+5 5 ALL THIN FIRST-YEAR ICE (30-70 CM THICK)
+6 6 PREDOMINANTLY MEDIUM FIRST-YEAR ICE"    (70-120 CM THICK) AND THICK FIRST-YEAR ICE (>120 CM
+7 7 ALL MEDIUM AND THICK FIRST-YEAR ICE
+8 8 PREDOMINANTLY MEDIUM AND THICK FIRST-YEAR ICE WITH SOME"    OLD ICE (USUALLY MORE THAN 2 METRES THICK)
+9 9 PREDOMINANTLY OLD ICE
+30 30 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY OR"    BECAUSE ONLY ICE OF LAND ORIGIN IS VISIBLE OR BECAUSE SHIP I"    S MORE THAN 0.5 NAUT
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2004.table b/definitions/bufr/tables/0/wmo/8/codetables/2004.table
new file mode 100644
index 0000000..b83f216
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2004.table
@@ -0,0 +1,11 @@
+0 0 USA OPEN PAN EVAPORIMETER (WITHOUT COVER)
+1 1 USA OPEN PAN EVAPORIMETER (MESH COVERED)
+2 2 GGI-300 EVAPORIMETER (SUNKEN)
+3 3 20 M**2 TANK
+4 4 OTHERS
+5 5 RICE
+6 6 WHEAT
+7 7 MAIZE
+8 8 SORGHUM
+9 9 OTHER CROPS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20040.table b/definitions/bufr/tables/0/wmo/8/codetables/20040.table
new file mode 100644
index 0000000..32b4ebd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20040.table
@@ -0,0 +1,9 @@
+0 0 DRIFT SNOW ENDED BEFORE THE HOUR OF OBSERVATION
+1 1 INTENSITY DIMINISHING
+2 2 NO CHANGE
+3 3 INTENSITY INCREASING
+4 4 CONTINUES, APART FROM INTERRUPTION LASTING LESS THAN 30 MINU"    TES
+5 5 GENERAL DRIFT SNOW HAS BECOME DRIFT SNOW NEAR THE GROUND
+6 6 DRIFT SNOW NEAR THE GROUND HAS BECOME GENERAL DRIFT SNOW
+7 7 DRIFT SNOW HAS STARTED AGAIN AFTER AN INTERRUPTION OF MORE T"    HAN 30 MINUTES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20041.table b/definitions/bufr/tables/0/wmo/8/codetables/20041.table
new file mode 100644
index 0000000..5e5ee64
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20041.table
@@ -0,0 +1,11 @@
+0 0 NO ICING
+1 1 LIGHT ICING
+2 2 LIGHT ICING IN CLOUD
+3 3 LIGHT ICING IN PRECIPITATION
+4 4 MODERATE ICING
+5 5 MODERATE ICING IN CLOUD
+6 6 MODERATE ICING IN PRECIPITATION
+7 7 SEVERE ICING
+8 8 SEVERE ICING IN CLOUD
+9 9 SEVERE ICING IN PRECIPITATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20042.table b/definitions/bufr/tables/0/wmo/8/codetables/20042.table
new file mode 100644
index 0000000..2493af7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20042.table
@@ -0,0 +1,4 @@
+0 0 NO ICING
+1 1 ICING PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20045.table b/definitions/bufr/tables/0/wmo/8/codetables/20045.table
new file mode 100644
index 0000000..91ae63f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20045.table
@@ -0,0 +1,4 @@
+0 0 NO SLD CONDITIONS PRESENT
+1 1 SLD CONDITIONS PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20050.table b/definitions/bufr/tables/0/wmo/8/codetables/20050.table
new file mode 100644
index 0000000..3f8654e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20050.table
@@ -0,0 +1,10 @@
+0 0 RESERVED
+1 1 1ST LOW CLOUD
+2 2 2ND LOW CLOUD
+3 3 3RD LOW CLOUD
+4 4 1ST MEDIUM CLOUD
+5 5 2ND MEDIUM CLOUD
+6 6 3RD MEDIUM CLOUD
+7 7 1ST HIGH CLOUD
+8 8 2ND HIGH CLOUD
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20055.table b/definitions/bufr/tables/0/wmo/8/codetables/20055.table
new file mode 100644
index 0000000..cf3be5f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20055.table
@@ -0,0 +1,11 @@
+0 0 CUMULUS, IF ANY, ARE QUITE SMALL
+1 1 CUMULUS OF INTERMEDIATE SIZE
+2 2 SWELLING CUMULUS
+3 3 SWELLING CUMULUS WITH TOWERS
+4 4 SWELLING CUMULUS WITH TOWERS HAVING PRONOUNCED TILT
+5 5 TALL CUMULUS CONGESTUS
+6 6 ISOLATED CUMULONIMBUS
+7 7 NUMEROUS CUMULONIMBUS
+8 8 CONTINUOUS DENSE MIDDLE CLOUDS
+9 9 CONTINUOUS SHEETS OF MIDDLE CLOUDS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20056.table b/definitions/bufr/tables/0/wmo/8/codetables/20056.table
new file mode 100644
index 0000000..6598473
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20056.table
@@ -0,0 +1,5 @@
+0 0 UNKNOWN
+1 1 WATER
+2 2 ICE
+3 3 MIXED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20062.table b/definitions/bufr/tables/0/wmo/8/codetables/20062.table
new file mode 100644
index 0000000..aba68ad
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20062.table
@@ -0,0 +1,21 @@
+0 0 SURFACE OF GROUND DRY (WITHOUT CRACKS AND NO APPRECIABLE"    AMOUNT OF DUST OR LOOSE SAND)
+1 1 SURFACE OF GROUND MOIST
+2 2 SURFACE OF GROUND WET (STANDING WATER IN SMALL"    OR LARGE POOLS ON SURFACE)
+3 3 FLOODED WITHOUT SNOW
+4 4 SURFACE OF GROUND FROZEN MEASURABLE ICE
+5 5 GLAZE ON GROUND COVER
+6 6 LOOSE DRY DUST OR SAND NOT COVERING GROUND COMPLETELY
+7 7 THIN COVER OF LOOSE DRY DUST OR SAND COVERING GROUND COMPLET"    ELY
+8 8 MODERATE OR THICK COVER OF LOOSE DRY DUST OR SAND COVERING"    GROUND COMPLETELY
+9 9 EXTREMELY DRY WITH CRACKS
+10 10 GROUND PREDOMINANTLY COVERED BY ICE
+11 11 COMPACT OR WET SNOW (WITH OR WITHOUT ICE) COVERING LESS THAN"    ONE-HALF OF THE GROUND
+12 12 COMPACT OR WET SNOW (WITH OR WITHOUT ICE) COVERING AT LEAST"    ONE-HALF OF THE GROUND BUT GROUND NOT COMPLETELY COVERED
+13 13 EVEN LAYER OF COMPACT OR WET SNOW COVERING GROUND COMPLETELY
+14 14 UNEVEN LAYER OF COMPACT OR WET SNOW COVERING GROUND"    WITH SNOW OR COMPLETELY MEASURABLE ICE
+15 15 LOOSE DRY SNOW COVERING LESS THAN ONE-HALF OF THE GROUND COV"    ER
+16 16 LOOSE DRY SNOW COVERING AT LEAST ONE-HALF OF THE"    GROUND (BUT NOT COMPLETELY)
+17 17 EVEN LAYER OF LOOSE DRY SNOW COVERING GROUND COMPLETELY
+18 18 UNEVEN LAYER OF LOOSE DRY SNOW COVERING GROUND COMPLETELY
+19 19 SNOW COVERING GROUND COMPLETELY; DEEP DRIFTS
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20063.table b/definitions/bufr/tables/0/wmo/8/codetables/20063.table
new file mode 100644
index 0000000..71cb125
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20063.table
@@ -0,0 +1 @@
+0 0 TO BE DEVELOPED
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20071.table b/definitions/bufr/tables/0/wmo/8/codetables/20071.table
new file mode 100644
index 0000000..bc9d6f6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20071.table
@@ -0,0 +1,11 @@
+0 0 NO ASSESSMENT            NO ASSESSMENT
+1 1 LESS THAN 50 KM          LESS THAN 1 PER SECOND
+2 2 BETWEEN 50 AND 200 KM    LESS THAN 1 PER SECOND
+3 3 MORE THAN 200 KM         LESS THAN 1 PER SECOND
+4 4 LESS THAN 50 KM          1 OR MORE PER SECOND
+5 5 BETWEEN 50 AND 200 KM    1 OR MORE PER SECOND
+6 6 MORE THAN 200 KM         1 OR MORE PER SECOND
+7 7 LESS THANK 50 KM         RATE SO RAPID NUMBER CANNOT BE COUN"    TED
+8 8 BETWEEN 50 AND 200 KM    RATE SO RAPID NUMBER CANNOT BE COUN"    TED
+9 9 MORE THAN 200 KM         RATE SO RAPID NUMBER CANNOT BE COUN"    TED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20086.table b/definitions/bufr/tables/0/wmo/8/codetables/20086.table
new file mode 100644
index 0000000..c820dcb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20086.table
@@ -0,0 +1,8 @@
+0 0 CLEAR AND DRY
+1 1 DAMP
+5 5 WET SNOW
+6 6 SLUSH
+7 7 ICE
+8 8 COMPACTED OR ROLLED SNOW
+9 9 FROZEN RUTS OR RIDGES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20090.table b/definitions/bufr/tables/0/wmo/8/codetables/20090.table
new file mode 100644
index 0000000..a33a9d0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20090.table
@@ -0,0 +1,7 @@
+0 0 RESERVED
+1 1 NACREOUS CLOUDS
+2 2 NOCTILUCENT CLOUDS
+3 3 CLOUDS FROM WATERFALLS
+4 4 CLOUDS FROM FIRES
+5 5 CLOUDS FROM VULCANIC ERUPTIONS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20101.table b/definitions/bufr/tables/0/wmo/8/codetables/20101.table
new file mode 100644
index 0000000..7e2fa15
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20101.table
@@ -0,0 +1,10 @@
+1 1 SCHISTOCERCA GREGARIA
+2 2 LOCUSTA MIGRATORIA
+3 3 NOMADACRIS SEPTEMFASCIATA
+4 4 OEDALEUS SENAGALENSIS
+5 5 ANRACRIDIUM SPP
+6 6 OTHER LOCUST
+7 7 OTHER GRASSHOPPERS
+8 8 ITHER CRICKETS
+9 9 SPODOPTERA EXEMPTA
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/20102.table b/definitions/bufr/tables/0/wmo/8/codetables/20102.table
new file mode 100644
index 0000000..fae1feb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/20102.table
@@ -0,0 +1,11 @@
+0 0 GREEN
+1 1 GREEN AND BLACK
+2 2 BLACK
+3 3 YELLOW AND BLACK
+4 4 STRAW/GREY
+5 5 PINK
+6 6 DARK RED/BROWN
+7 7 MIXED RED AND YELLOW
+8 8 YELLOW
+9 9 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2011.table b/definitions/bufr/tables/0/wmo/8/codetables/2011.table
new file mode 100644
index 0000000..f794c4f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2011.table
@@ -0,0 +1,54 @@
+0 0 RESERVED
+1 1 RESERVED
+2 2 NO RADIOSONDE-PASSIVE TARGET(E.G.REFLECTOR)
+3 3 NO RADIOSONDE-ACTIVE TARGET(E.G.TRANSPONDER)
+4 4 NO RADIOSONDE-PASSIVE TEMPERATURE-HUMIDITY PROFILER
+5 5 NO RADIOSONDE-ACTIVE TEMPERATURE-HUMIDITY PROFILER
+6 6 NO RADIOSONDE-RADIO ACOUSTIC SOUNDER
+9 9 NO RADIOSONDE-SYSTEM UNKNOWN OR NOT SPECIFIED
+10 10 RS VIZ TYPE A (USA)
+11 11 RS VIZ TYPE B (USA)
+12 12 RS SDC (SPACE DATA CORPORATION-USA)
+13 13 ASTOR (NO LONGER MADE-AUSTRALIA)
+14 14 VIZ MARK I MICROSONDE(USA)
+15 15 EEC COMPANY TYPE 23 (USA)
+16 16 ELIN (AUSTRIA)
+17 17 GRAW G. (GERMANY)
+19 19 GRAW M60 (GERMANY)
+20 20 INDIAN MET SERVICE MK3 (INDIA)
+21 21 VIZ/JIN YANG MARK I MICROSONDE(SOUTH KOREA)
+22 22 MEISEI RS2-80 (JAPAN)
+23 23 MESURAL FMO 1950A (FRANCE)
+24 24 MESURAL FMO 19455A (FRANCE)
+25 25 MESURAL MH73A (FRANCE)
+26 26 METEOLABOR BASORA (SWITZERLAND)
+27 27 AVK-MRZ (USSR)
+28 28 METEORIT MARZ2-1 (USSR)
+29 29 METEIRIT MARZ2-2 (USSR)
+30 30 OKI RS2-80 (JAPAN)
+31 31 VIZ/VALCOM TYPE A PRESSURE-COMMUTATED(CANADA)
+32 32 SHANGAI RADIO (CHINA)
+33 33 UK MET OFFICE MK3( UK)
+34 34 VINOHRADY(CZECHOSLOVAKIA)
+35 35 VAISALA RS18 (FINLAND)
+36 36 VAISALA RS21 (FINLAND)
+37 37 VAISALA RS80 (FINLAND)
+38 38 VIZ LOCATE (LORAN-C)(USA)
+39 39 SPRENGER E076 (GERMANY)
+40 40 SPRENGER E084 (GERMANY)
+41 41 SPRENGER E085 (GERMANY)
+42 42 SPRENGER E086 (GERMANY)
+43 43 AIR IS -4A-1680 (UK)
+44 44 AIR IS -4A-1680 X (UK)
+45 45 RS MSS(USA)
+46 46 AIR IS -4A-403(USA)
+47 47 MEISLEI RS2-91(JAPAN)
+48 48 VALCOM(CANADA)
+49 49 VIZ MARK II(USA)
+60 60 VAISALA RS80/MICROCORA (FINLAND)
+61 61 VAISALA RS80/DIGCORA OR MARWIN (FINLAND)
+62 62 VAISALA RS80/PCCORA (FINLAND)
+63 63 VAISALA RS80/STAR (FINLAND)
+64 64 ORBITAL,SCIENCE CORPORATION,SPACE DATA DIVISION,TRANSPONDER"     RADIOSONDE,TYPE 909-11-XX,WHERE XX CORRECPOND TO THE MODEL"    OF THE INSTRUMENT
+65 65 VIZ TRANSPONDER RADIOSONDE,MODEL NUMBER 1499-520(USA)
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2012.table b/definitions/bufr/tables/0/wmo/8/codetables/2012.table
new file mode 100644
index 0000000..71cb125
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2012.table
@@ -0,0 +1 @@
+0 0 TO BE DEVELOPED
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2013.table b/definitions/bufr/tables/0/wmo/8/codetables/2013.table
new file mode 100644
index 0000000..a5df80f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2013.table
@@ -0,0 +1,9 @@
+0 0 NO CORRECTION
+1 1 CIMO SOLAR CORRECTED AND CIMO INFRARED CORRECTED
+2 2 CIMO SOLAR CORRECTED AND IFRARED CORRECTED
+3 3 CIMO SOLAR CORRECTED ONLY
+4 4 SOLAR AND INFRARED CORRECTED AUTOMATICALLY BY RADIOSONDE SY"    STEM
+5 5 SOLAR CORRECTED AUTOMATICALLY BY RADIOSONDE SYSTEM
+6 6 SOLAR AND INFRARED CORRECTED AS SPECIFIED BY COUNTRY
+7 7 SOLAR CORRECTED AS SPECIFIED BY COUNTRY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2014.table b/definitions/bufr/tables/0/wmo/8/codetables/2014.table
new file mode 100644
index 0000000..409caa4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2014.table
@@ -0,0 +1,50 @@
+0 0 NO WINDFINDING
+1 1 AUTOMATIC WITH AUXILIARY OPTICAL DIRECTION FINDING
+2 2 AUTOMATIC WITH AUXILIARY RADIO DIRECTION FINDING
+3 3 AUTOMATIC WITH AUXILIARY RANGING
+4 4 NOT USED
+5 5 AUTOMATIC WITH MULTIPLE VLF-OMEGA SIGNALS
+6 6 AUTOMATIC CROSS CHAIN LORAN-C
+7 7 AUTOMATIC WITH AUXILIARY WIND PROFILER
+8 8 AUTOMATIC SATELLITE NAVIGATION
+19 19 TRACKING TECHNIQUE NOT SPECIFIED
+20 20 VESSEL STOPPED
+21 21 VESSEL DIVERTED FROM ORIGINAL DESTINATION
+22 22 VESSEL'S ARRIVAL DELAYED
+23 23 CONTAINER DAMAGED
+24 24 POWER FAILURE TO CONTAINER
+29 29 OTHER PROBLEMS
+30 30 MAJOR POWER PROBLEMS
+31 31 UPS INOPERATIVE
+32 32 RECEIVER HARDWARE PROBLEMS
+33 33 RECEIVER SOFTWARE PROBLEMS
+34 34 PROCESSOR HARDWARE PROBLEMS
+35 35 PROCESSOR SOFTWARE PROBLEMS
+36 36 NAVAID SYSTEM DAMAGED
+37 37 SHORTAGE OF LIFTING GAS
+39 39 OTHER PROBLEMS
+40 40 MECHANICAL DEFECT
+41 41 MATERIAL DEFECT (HAND LAUNCHER)
+42 42 POWER FAILURE
+43 43 CONTROL FAILURE
+44 44 PNEUMATIC/HYDRAULIC FAILURE
+45 45 OTHER PROBLEMS
+46 46 COMPRESSOR PROBLEMS
+47 47 BALLOON PROBLEMS
+48 48 BALLOON RELEASE PROBLEMS
+49 49 LAUNCHER DAMAGED
+50 50 R/S RECEIVER ANTENNA DEFECT
+51 51 NAVAID ANTENNA DEFECT
+52 52 R/S RECEIVER CABLING (ANTENNA DEFECT)
+53 53 NAVAID ANTENNA CABLING DEFECT
+59 59 OTHER PROBLEMS
+60 60 ASAP COMMUNICATIONS DEFECT
+61 61 COMMUNICATIONS FACILITY REJECTED DATA
+62 62 NO POWER AT TRANSMITTINGANTENN
+63 63 ANTENNA CABLE BROKEN
+64 64 ANTENNA CABLE DEFECT
+65 65 MESSAGE TRANSMITTED POWER BELOW NORMAL
+69 69 OTHER PROBLEMS
+70 70 ALL SYSTEMS IN NORMAL OPERATION
+99 99 STATUS OF SYSTEM AND ITS COMPONENTS NOT SPECIFIED
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2015.table b/definitions/bufr/tables/0/wmo/8/codetables/2015.table
new file mode 100644
index 0000000..007a096
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2015.table
@@ -0,0 +1,6 @@
+1 1 PRESSURE ONLY RADIOSONDE
+2 2 PRESSURE ONLY RADIOSONDE PLUS TRANSPONDER
+3 3 PRESSURE ONLY RADIOSONDE PLUS RADAR REFLECTOR
+4 4 NO PRESSURE RADIOSONDE PLUS TRANSPONDER
+5 5 NO PRESSURE RADIOSONDE PLUS RADAR REFLECTOR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2016.table b/definitions/bufr/tables/0/wmo/8/codetables/2016.table
new file mode 100644
index 0000000..4a30226
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2016.table
@@ -0,0 +1,4 @@
+1 1 TRAIN REGULATOR
+2 2 LIGHT UNIT
+3 3 PARACHUTE
+4 4 ROOFTOP RELEASE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2019.table b/definitions/bufr/tables/0/wmo/8/codetables/2019.table
new file mode 100644
index 0000000..3ddc721
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2019.table
@@ -0,0 +1,296 @@
+10 10 BNSC    RADIOMETER      AATSR   ADVANCED ALONG TRACK SCANNIN"    G RADIOMETER
+11 11 BNSC    RADIOMETER      ATSR    ALONG TRACK SCANNING RADIOME"    TER
+12 12 BNSC    RADIOMETER      ATSR-2  ALONG TRACK SCANNING RADIOME"    TER  -2
+13 13 BNSC    RADIOMETER      MWR     MICROWAVE RADIOMETER
+30 30 CNES    COMMUNICATIONS  ARGOS
+40 40 CNES    LIDAR   LASER REFLECTORS
+41 41 CNES    LIDAR   DORIS   DOPPLER ORBITOGRAPHY AND RADIO-POSIT"    IONING INTEGRATED BY SATELLITE
+42 42 CNES    LIDAR   DORIS-NG        DOPPLER ORBITOGRAPHY AND RAD"    IO-POSITIONING INTEGRATED BY SATELLITE-NG
+47 47 CNES    RADAR ALTIMETERS        POSEIDON-1 (SSALT-1)    POSI"    TIONING OCEAN SOLID EARTH ICE DYNAMICS ORBITING NAVIGATOR (S"    INGLE FREQUENCY SOLI
+48 48  CNES    RADAR ALTIMETERS        POSEIDON-2 (SSALT-2)   POSI"    TIONING OCEAN SOLID EARTH ICE DYNAMICS ORBITING NAVIGATOR (D"    UAL FREQUENCY SOLID 
+50 50 CNES    IMAGER RADIOMETER       ATSR/M  ATSR/M
+51 51 CNES    HIGH RESOLUTION OPTICAL IMAGERS HRG
+52 52 CNES    RADIOMETER      HRV     HIGH RESOLUTION VISIBLE
+53 53 CNES    RADIOMETER      HRVIR   HIGH RESOLUTION VISIBLE AND"            INFRA-RED
+54 54 CNES    RADIOMETER      SCARAB/MV2      SCANNER FOR EARTH'S"            RADIATION BUDGET
+55 55 CNES    RADIOMETER      POLDER  POLDER
+60 60 CNES    SPECTROMETER    VEGETATION      VEGETATION
+61 61 CNES    SPECTROMETER    WINDII  WINDII
+80 80 CSA     COMMUNICATIONS  RADARSAT DTT
+81 81 CSA     COMMUNICATIONS  RADARSAT TTC
+85 85 CSA     RADAR   SAR (CSA)       SYNTHETIC APERTURE RADAR (CS"    A)
+90 90 CSA     RADIOMETER      MOPITT  MEASUREMENTS OF POLLUTION IN"     THE TROPOSPHERE
+91 91 CSA     CHEMISTRY INSTRUMENTS   OSIRIS  OPTICAL SPECTROGRAPH"     AND INFRA-RED IMAGING SYSTEM
+97 97 CSIRO   RADIOMETER      PANCHROMATIC IMAGER
+98 98 CRCSS   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   GPS"    RECEIVER
+102 102 DLR     RADIOMETER      CHAMP GPS SOUNDER       GPS TURBORO"    GUE SPACE RECEIVER (TRSR)
+103 103 UNKNOWN
+116 116 DLR MAGNETOMETER    IGOR CHAMP GRAVITY PACKAGE (ACCELEROMETE"    R+GPS)       INTEGRATED GPS AND OCCULTATION RECEIVER STAR AC"    CELEROMETER
+117 117 DLR     MAGNETOMETER    CHAMP MAGNETOMETRY PACKAGE (1 SCALAR"    +2 VECTOR MAGNETOMETER)     OVERHAUSER MAGNETOMETER (OVM) AN"    D FLUXGATE MAGNETOME
+120 120 ESA     COMMUNICATIONS  ENVISAT COMMS   COMMUNICATIONS PACKA"    GE ON ENVISAT
+121 121 ESA     COMMUNICATIONS  ERS COMMS       COMMUNICATION PACKAG"    E FOR ERS
+130 130 ESA     LIDARS  ALADIN  ATMOSPHERIC LASER DOPPLER INSTRUMENT
+131 131 ESA     LIDARS  ATLID   ATMOSPHERIC LIDAR
+140 140 ESA     RADAR   AMI/SAR/IMAGE   ACTIVE MICROWAVE INSTRUMENTA"    TION. IMAGE MODE
+141 141 ESA     RADAR   AMI/SAR/WAVE    ACTIVE MICROWAVE INSTRUMENTA"    TION. WAVE MODE
+142 142 ESA     RADAR   AMI/SCATTEROMETER       ACTIVE MICROWAVE INS"    TRUMENTATION. WIND MODE
+143 143 ESA     RADAR   ASAR    ASAR
+144 144 ESA     IMAGING MICROWAVE RADARS        ASAR    ADVANCED SYN"    TETIC APERTURA RADAR (IMAGE MODE)
+145 145 ESA     IMAGING MICROWAVE RADARS        ASAR    ADVANCED SYN"    TETIC APERTURA RADAR (WAVE MODE)
+146 146 ESA     CLOUD PROFILE AND RAIN RADARS   CPR     CLOUD RADAR
+147 147 ESA     RADAR   RA-2/MWR        RADAR ALTIMETER - 2
+148 148 ESA     RADAR   RA/MWR  RADAR ALTIMETER
+150 150 ESA     SCATTEROMETERS  SCATTEROMETER   SCATTEROMETER
+161 161 ESA     RADIOMETER      MIPAS   MICHELSON INTERFEROMETRIC PA"    SSIVE ATMOSPHERE SOUNDER
+162 162 ESA     IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E   MWR-2   MICROWAVE RADIOMETER-2
+163 163 ESA     ATMOSPHERIC CHEMISTRY INSTRUMENTS       SOPRANO SUB-"    MILIMETRE OBSERVATION OF PROCESSES IN THE ABSORPTION NOTEWOR"    THY FOR OZONE
+170 170 ESA     ATMOSPHERIC CHEMISTRY INSTRUMENTS       GOME I  GLOB"    AL OZONE MONITORING EXPERIMENT
+172 172 ESA     SPECTROMETER    GOMOS   GLOBAL OZONE MONITORING BY O"    CCULTATION OF STARS
+174 174 ESA     SPECTROMETER    MERIS   MEDIUM RESOLUTION IMAGING SP"    ECTROMETER
+175 175 ESA     SPECTROMETER    SCIAMACHY       SCANNING IMAGING ABS"    ORPTION SPECTROMETER FOR ATMOSPHERIC CARTOGRAPHY
+181 181 EUMETSAT        COMMUNICATIONS  METEOSAT COMMS  COMMUNICATIO"    NS PACKAGE FOR METEOSAT
+182 182 EUMETSAT        COMMUNICATIONS  MSG COMMS       COMMUNICATIO"    NS PACKAGE FOR MSG
+190 190 ESA/ EUMETSAT        SCATTEROMETERS  ASCAT   ADVANCED SCATTE"    ROMETER
+200 200 EUMETSAT        RADIOMETER      GERB    GEOSTATIONARY EARTH"    RADIATION BUDGET
+202 202 ESA/ EUMETSAT        RADIOMETER      GRAS    GNSS RECEIVER F"    OR ATMOSPHERIC SOUNDING
+203 203 EUMETSAT        RADIOMETER      MHS     MICROWAVE HUMIDITY S"    OUNDER
+205 205 EUMETSAT        RADIOMETER      MVIRI   METEOSAT VISIBLE AND"    INFRA-RED IMAGER
+207 207 EUMETSAT        RADIOMETER      SEVIRI  SPINNING ENHANCED VI"    SIBLE AND INFRARED IMAGER
+208 208 EUMETSAT        IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)"        VIRI    VIRI
+220 220 ESA/ EUMETSAT        SPECTROMETER    GOME-2  GLOBAL OZONE MO"    NITORING EXPERIMENT - 2
+221 221 CNES/ EUMETSAT        ATMOSPHERIC TEMPERATURE AND HUMIDITY S"    OUNDERS   IASI    INFRA-RED ATMOSPHERIC SOUNDING INTERFEROME"    TER
+240 240 CAST    COMMUNICATIONS  DCP     DATA COLLECTION PLATFORM TRA"    NSPONDER
+245 245 CAST    RADIOMETER      CCD     HIGH RESOLUTION CCD CAMERA
+246 246 INPE    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   HSB"        HUMIDITY SOUNDER/BRAZIL
+248 248 INPE    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     OBA"        OBSERVADOR BRASILEIRO DA AMAZONIA
+250 250 CAST    RADIOMETER      WFI     WIDE FIELD IMAGER
+255 255 CAST    SPECTROMETER    IRMSS   INFRA RED MULTI SPECTRAL SCA"    NNER
+260 260 ISRO    PRECISION ORBIT BSS & FSS TRANSPONDERS
+261 261 ISRO    PRECISION ORBIT DRT-S&R
+262 262 ISRO    COMMUNICATIONS  INSAT COMMS     COMMUNICATIONS PACKA"    GE FOR INSAT
+268 268 ISRO    HIGH RESOLUTION OPTICAL IMAGERS HR-PAN  HIGH RESOLUT"    ION PANCHROMATIC CAMERA
+269 269 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  MSMR    MULTIFREQUENCY SCANNING MICROWAVE RADIOMETER
+270 270 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VHRR"        VERY HIGH RESOLUTION RADIOMETER
+271 271 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     WIFS"        WIDE FIELD SENSOR
+275 275 ISRO    HIGH RESOLUTION OPTICAL IMAGERS AWIFS   ADVANCED WID"    E FIELD SENSOR
+276 276 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-I  LINEAR IMAGI"    NG SELF SCANNER - I
+277 277 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-II LINEAR IMAGI"    NG SELF SCANNER - II
+278 278 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-III        LINE"    AR IMAGING SELF SCANNER - III
+279 279 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-IV LINEAR IMAGI"    NG SELF SCANNER - IV
+284 284 ISRO    HIGH RESOLUTION OPTICAL IMAGERS PAN     PANCHROMATIC"     SENSOR
+285 285 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     MOS"        MODULAR OPTO-ELECTRONIC SCANNER
+286 286 ISRO    OCEAN COLOUR INSTRUMENTS        OCM     OCEAN COLOUR"     MONITOR
+290 290 JMA     COMMUNICATIONS  MTSAT COMMS     COMMUNICATIONS PACKA"    GE FOR MTSAT
+294 294 JMA     IMAGING MULTI-SPECTRAL RADIOMETERS      IMAGER/MTSAT"    -1R IMAGER/MTSAT
+295 295 JMA     IMAGING MULTI-SPECTRAL RADIOMETERS      IMAGER/MTSAT"        IMAGER/MTSAT
+296 296 JMA     IMAGING MULTI-SPECTRAL RADIOMETERS      VISSR (GMS4)"        VISIBLE AND INFRA-RED SPIN SCAN RADIOMETER (GMS4)
+300 300 NASA    LIDARS  GLAS    GEOSCIENCE LASER ALTIMETER SYSTEM
+301 301 NASA    PRECISION ORBIT LRA     LASER RETROREFLECTOR ARRAY
+302 302 NASA    LIDARS  MBLA    MULTI BEAM LASER ALTIMETER
+309 309 NASA    CLOUD PROFILE AND RAIN RADARS   CPR (CLOUDSAT)  CLOU"    D PROFILING RADAR
+312 312 NASA    RADAR   NSCAT   NASA SCATTEROMETER
+313 313 NASA    RADAR   SEAWINDS       ADEOS II - NASA SCATTEROMETER
+330 330 NASA    EARTH RADIATION BUDGET RADIOMETER       ACRIM   ACTI"    VE CAVITY RADIOMETER IRRADIANCE MONITOR
+334 334 NASA    TOTAL AND PROFILE OZONE BUV     BACKSCATTER ULTRAVIO"    LET INSTRUMENT
+336 336 NASA    HIGH RESOLUTION OPTICAL IMAGERS ALI     ADVANCED LAN"    D IMAGER
+347 347 NASA    HIGH RESOLUTION OPTICAL IMAGERS ASTER   ADVANCED SPA"    CEBORNE THERMAL EMISSION AND REFLECTION RADIOMETER
+348 348 NASA    EARTH RADIATION BUDGET RADIOMETER       CERES-2 CLOU"    D AND THE EARTH'S RADIANT ENERGY SYSTEM
+351 351 CONAE   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   GPSD"    R   GPS DEMONSTRATION RECEIVER
+353 353 NASA    TOTAL AND PROFILE OZONE HIRDLS  HIGH RESOLUTION DYNA"    MICS LIMB SOUNDER
+354 354 NASA    TOTAL AND PROFILE OZONE HRDI    HIGH RESOLUTION DOPP"    LER IMAGER
+356 356 NASA    RADIOMETER      LIS     LIGHTNING IMAGING SENSOR
+358 358 NASA    MAGNETIC FIELD, AUROAL IMAGERYSCINTILLATION BOUNDARY"        PEM     PARTICLE ENVIRONMENT MONITOR
+359 359 NASA    OCEAN COLOUR INSTRUMENTS        SEAWIFS SEA-VIEWING"    WIDE FIELD-OF-VIEW SENSOR
+360 360 NASA    EARTH RADIATION BUDGET RADIOMETER       SUSIM (UARS)"        SOLAR ULTRAVIOLET IRRADIANCE MONITOR
+363 363 NASA    TOTAL AND PROFILE OZONE SBUV/1  SOLAR BACKSCATTER UL"    TRAVIOLET 1 INSTRUMENT
+365 365 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  TMI     TRMM MICROWAVE IMAGER
+366 366 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  JMR     JASON-1 MICROWAVE RADIOMETER
+369 369 NASA    TOTAL AND PROFILE OZONE LIMS    LIMB INFRARED MONITO"    R OF THE STRATOSPHERE
+370 370 NASA    TOTAL AND PROFILE OZONE LRIR    LIMB RADIANCE INVERS"    ION RADIOMETER INSTRUMENT
+371 371 NASA    TOTAL AND PROFILE OZONE EPIC    EARTH POLYCHROMATIC"    IMAGING CAMERA
+372 372 NASA    EARTH RADIATION BUDGET RADIOMETER       NISTAR  NIST"     ADVANCED RADIOMETER
+373 373 NASA    MAGNETIC FIELD, AUROAL IMAGERY SCINTILLATION BOUNDAR"    Y   PLASMA-MAG
+374 374 NASA    OTHER   XPS     XUV PHOTOMETER SYSTEM
+375 375 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VIRS"        VISIBLE INFRA-RED SCANNER
+376 376 CNES    MULTIPLE DIRECTION/POLARISATION RADIOMETERS     POLD"    ER II       POLARIZATION AND DIRECTIONALITY OF THE EARTH'S R"    EFLECTANCE - II
+377 377 NASA    EARTH RADIATION BUDGET RADIOMETER       TIM     TOTA"    L IRRADIANCE MONITOR
+379 379 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     WFC"        WIDE FIELD CAMERA
+382 382 NASA    SPECTRO-RADIOMETER      CLAES   CRYOGENIC LIMB ARRAY"     ETALON SPECTROMETER
+383 383 NASA    SPECTRO-RADIOMETER      HALOE   HALOGEN OCCULTATION"    EXPERIMENT
+384 384 NASA    SPECTRO-RADIOMETER      ISAMS   IMPROVED STRATOSPHER"    IC AND MESOSPHERIC SOUNDER
+385 385 NASA    SPECTRO-RADIOMETER      MISR    MULTI-ANGLE IMAGING"    SPECTRORADIOMETER
+386 386 NASA    SPECTRO-RADIOMETER    MLS     MICROWAVE LIMB SOUNDER
+387 387 NASA    SPECTRO-RADIOMETER    MLS (EOS-AURA)  MICROWAVE LIMB"     SOUNDER (EOS-AURA)
+389 389 NASA    SPECTRO-RADIOMETER      MODIS   MODERATE-RESOLUTION"    IMAGING SPECTRORADIOMETER
+393 393 NASA    GRAVITY HAIRS   HIGH ACCURACY INTER-SATELLITE RANGIN"    G SYSTEM
+394 394 NASA    TOTAL AND PROFILE OZONE OMI     OZONE MEASURING INST"    RUMENT
+395 395 NASA    RADIOMETER      ATMOSPHERIC CORRECTOR   ATMOSPHERIC"    CORRECTOR
+396 396 NASA    RADIOMETER      HYPERION        HYPERSPECTRAL IMAGER
+399 399 NASA    SPECTRO-RADIOMETER      SAGE I  STRATOSPHERIC AEROSO"    L AND GAS EXPERIMENT-I
+400 400 NASA    SPECTRO-RADIOMETER      SAGE II STRATOSPHERIC AEROSO"    L AND GAS EXPERIMENT-II
+401 401 NASA    SPECTRO-RADIOMETER      SAGE III        STRATOSPHERI"    C AEROSOL AND GAS EXPERIMENT-III
+402 402 NASA    SPECTRO-RADIOMETER      SAMS    STRATOSPHERIC AND ME"    SOSPHERIC SOUNDER
+403 403 NASA    SPECTRO-RADIOMETER      SAM II  STRATOSPHERIC AEROSO"    L MEASUREMENT II
+404 404 NASA    SPECTRO-RADIOMETER      IRIS    INFRARED INTERFEROME"    TER SPECTROMETER
+405 405 NASA    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   GIFT"    S   GEOSYNCHRONOUS IMAGING FOURIER TRANSFORM SPECTROMETER
+420 420 NASA    SPECTROMETER    AIRS   ATMOSPHERIC INFRA-RED SOUNDER
+426 426 NASA    SPECTROMETER    SOLSTICE        SOLAR STELLAR IRRADI"    ANCE COMPARISON EXPERIMENT
+430 430 NASA    SPECTROMETER    TES     TROPOSHPERIC EMISSION SPECTR"    OMETER
+431 431 NASA    SPECTROMETER    TOMS    TOTAL OZONE MAPPING SPECTROM"    ETER
+450 450 JAXA    COMMUNICATIONS  ADEOS COMMS     COMMUNICATIONS PACKA"    GE FOR ADEOS
+451 451 JAXA    COMMUNICATIONS  DCS (JAXA)      DATA COLLECTION SYST"    EM (JAXA)
+453 453 JAXA    COMMUNICATIONS  GMS COMMS       COMMUNICATIONS PACKA"    GE ON GMS
+454 454 JAXA    COMMUNICATIONS  JERS-1 COMMS    COMMUNICATIONS PACKA"    GE FOR JERS-1
+460 460 JAXA    LIDAR   RIS     RETROREFLECTOR IN SPACE
+461 461 JAXA    RADAR   PR      PRECIPITATION RADAR
+462 462 JAXA    IMAGING MICROWAVE RADARS        SAR     SYNTETIC APE"    RTURE RADAR
+470 470 JAXA    IMAGING MICROWAVE RADARS        PALSAR  PHASED ARRAY"     TYPE L-BAND SYNTHETIC APERTURE RADAR
+479 479 JAXA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  AMSR-E  ADVANCED MICROWAVE SCANNING RADIOMETER-EOS
+480 480 JAXA    HIGH RESOLUTION OPTICAL IMAGERS PRISM (ALOS)    PANC"    HROMATIC REMOTE-SENSING INSTRUMENT FOR STEREO MAPPING
+481 481 JAXA    RADIOMETER      AMSR    ADVANCED MICROWAVE SCANNING"    RADIOMETER
+482 482 JAXA    HIGH RESOLUTION OPTICAL IMAGERS AVNIR   ADVANCED VIS"    IBLE AND NEAR INFRARED RADIOMETER
+483 483 JAXA    HIGH RESOLUTION OPTICAL IMAGERS AVNIR-2 ADVANCED VIS"    IBLE AND NEAR INFRA-RED RADIOMETER TYPE 2
+484 484 JAXA    IMAGER  GLI     GLOBAL IMAGER
+485 485 JAXA    RADIOMETER      MESSR   MULTISPECTRAL ELECTRONIC SEL"    F SCANNING RADIOMETER
+486 486 JAXA    RADIOMETER      MSR    MICROWAVE SCANNING RADIOMETER
+487 487 JAXA    RADIOMETER      OCTS   OCEAN COLOR AND TEMPERATURE S"    CANNER
+488 488 JAXA    RADIOMETER      OPS     OPTICAL SENSOR
+489 489 JAXA    SPECTRO-RADIOMETER      VISSR (GMS5)    VISIBLE AND"    INFRA-RED SPIN SCAN RADIOMETER (GMS5)
+490 490 JAXA    RADIOMETER      VTIR    VISIBLE AND THERMAL INFRA-RE"    D RADIOMETER
+510 510 JAXA    SPECTROMETER    ILAS-I  IMOROVED LIMB ATOMOSPHIRIC S"    PECTROMETER
+511 511 JAXA    SPECTROMETER    ILAS-II IMPROVED LIMB ATOMOSPHIRIC S"    PECTROMETER
+512 512 JAXA    SPECTROMETER    IMG     INFEROMETRIC MONITOR OF GREE"    NHOUSE GASES
+514 514 JAXA    SPACE ENVIRONMENT       SEM     SPACE ENVIRONMENT MO"    NITOR (JAXA)
+515 515 JAXA    TOTAL AND PROFILE OZONE SOFIS   SOLAR OCCULTATION FO"    URIER TRANSFORM SPECTROMETER FOR INCLINED ORBIT SATELLITE
+540 540 NOAA    COMMUNICATIONS  DCS (NOAA)      DATA COLLECTION SYST"    EM (NOAA)
+541 541 NOAA    COMMUNICATIONS  GOES COMMS      COMMUNICATIONS PACKA"    GE ON GOES
+542 542 NOAA    COMMUNICATIONS  LANDSAT COMMS   COMMUNICATIONS PACKA"    GE FOR LANDSAT
+543 543 NOAA    COMMUNICATIONS  NOAA COMMS      COMMUNICATIONS PACKA"    GE FOR NOAA
+544 544 NOAA    COMMUNICATIONS  S&R (GOES)      SEARCH AND RESCUE
+545 545 NOAA    COMMUNICATIONS  S&R (NOAA)      SEARCH AND RESCUE
+546 546 NOAA    COMMUNICATIONS  WEFAX   WEATHER FACSIMILE
+547 547 NOAA    SPECTROMETER    SEM(GOES)       SPACE ENVIRONMENT MO"    NITOR
+550 550 NOAA    MAGNETIC FIELD  SSM     SPECIAL SENSOR MAGNETOMETER
+551 551 NOAA    MAGNETIC FIELD  SSJ/4   SPECIAL SENSOR PRECIPITATING"     PLASMA MONITOR
+552 552 NOAA    SPACE ENVIRONMENT       SSIES-2 SPECIAL SENSOR IONOS"    PHERIC PLASMA DRIFT/SCINTILLATION METER
+553 553 NOAA    SPACE ENVIRONMENT       SSB/X-2 SPECIAL SENSOR GAMMA"     RAY PARTICLE DECTECTOR
+570 570 NOAA    RADIOMETER      AMSU-A  ADVANCED MICROWAVE SOUNDING"    UNIT-A
+574 574 NOAA    RADIOMETER      AMSU-B  ADVANCED MICROWAVE SOUNDING"    UNIT-B
+580 580 NOAA    RADIOMETER      ATOVS (HIRS/3 + AMSU + AVHRR/3) ADVA"    NCED TIROS OPERATIONAL VERTICAL SOUNDER
+590 590 NOAA    RADIOMETER      AVHRR/2 ADVANCED VERY HIGH RESOLUTIO"    N RADIOMETER/2
+591 591 NOAA    RADIOMETER      AVHRR/3 ADVANCED VERY HIGH RESOLUTIO"    N RADIOMETER/3
+592 592 NOAA    RADIOMETER      AVHRR/4 ADVANCED VERY HIGH RESOLUTIO"    N RADIOMETER/4
+600 600 NOAA    RADIOMETER      ERBE    EARTH'S RADIATION BUDGET EXP"    ERIMENT
+601 601 NOAA    RADIOMETER      ETM+    ENHANCED THEMATIC MAPPER
+605 605 NOAA    RADIOMETER      HIRS/2  HIGH RESOLUTION INFRA-RED SO"    UNDER/2
+606 606 NOAA    RADIOMETER      HIRS/3  HIGH RESOLUTION INFRA-RED SO"    UNDER/3
+607 607 NOAA    RADIOMETER      HIRS/4  HIGH RESOLUTION INFRA-RED SO"    UNDER/4
+615 615 NOAA    RADIOMETER      IMAGER  IMAGER
+616 616 NOAA    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VIIR"    S   VISIBLE/INFRARED IMAGER RADIOMETER SUITE
+620 620 NOAA    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   CRIR"    S/NP        CROSS TRACK INFRA-RED SOUNDER/NPOESS
+621 621 NOAA    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   ATMS"        ADVANCED TECHNOLOGY MICROWAVE SOUNDER
+622 622 NOAA    RADIOMETER      MSS    MULTISPECTRAL SCANNING SYSTEM
+623 623 NOAA    RADIOMETER      MSU     MICROWAVE SOUNDING UNIT
+624 624 NOAA    RADIOMETER      SBUV/2  SOLAR BACKSCATTTER ULTRA-VIO"    LET INSTRUMENT/2
+625 625 NOAA    RADIOMETER      SBUV/3  SOLAR BACKSCATTTER ULTRA-VIO"    LET INSTRUMENT/3
+626 626 NOAA    RADIOMETER      SOUNDER SOUNDER
+627 627 NOAA    RADIOMETER      SSU     STRATOSPHERIC SOUNDING UNIT
+628 628 NOAA    RADIOMETER      TM      THEMATIC MAPPER
+629 629 NOAA    RADIOMETER      TOVS (HIRS/2 + MSU + SSU)       TIRO"    S OPERATIONAL VERTICAL SOUNDER
+630 630 NOAA    RADIOMETER      VAS     VISSR ATMOSPHERIC SOUNDER
+631 631 NOAA    RADIOMETER      SSZ
+645 645 NOAA    SPECTROMETER    SEM     SPACE ENVIRONMENT MONITOR
+650 650 NRSCC   RADIOMETER      MVIRSR (10 CHANNEL)     MULTISPECTRA"    L VISIBLE AND INFRA-RED SCAN RADIOMETER
+651 651 NRSCC   RADIOMETER      MVIRSR (3 CHANNEL)      MULTISPECTRA"    L VISIBLE AND INFRA-RED SCAN RADIOMETER
+652 652 NRSCC   RADIOMETER      MVIRSR (5 CHANNEL)      MULTISPECTRA"    L VISIBLE AND INFRA-RED SCAN RADIOMETER
+670 670 NSAU    RADAR   RLSBO   SIDE LOOKING MICROWAVE RADAR
+680 680 NSAU    HIGH RESOLUTION OPTICAL IMAGERS MSU-EU  MULTI-SPECTR"    AL RADIOMETER WITH HIGH RESOLUTION
+681 681 NSAU    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     MSU-"    UM  VISIBLE MULTI-SPECTRAL RADIOMETER
+682 682 NSAU    RADIOMETER      RM-08   IMAGING MICROWAVE RADIOMETER
+683 683 NSAU    HIGH RESOLUTION OPTICAL IMAGERS SU-UMS  STEREO RADIO"    METER WITH HIGH RESOLUTION
+684 684 NSAU    HIGH RESOLUTION OPTICAL IMAGERS SU-VR   VISIBLE RADI"    OMETER WITH HIGH RESOLUTION
+685 685 NSAU    RADIOMETER      TRASSER
+700 700 ROSCOSMOS       COMMUNICATIONS  KONDOR-2        DATA COLLECT"    ION AND TRANSMISSION SYSTEM
+701 701 ROSCOSMOS       COMMUNICATIONS  BRK
+710 710 ROSCOSMOS       LIDAR   ALISSA  BACKSCATTER LIDAR
+712 712 ROSCOSMOS       LIDAR   BALKAN-2 LIDAR
+715 715 ROSCOSMOS       LIDAR   MK-4
+716 716 ROSCOSMOS       LIDAR   MK-4M
+730 730 ROSCOSMOS       RADAR   GREBEN  RADAR ALTIMETER
+731 731 ROSCOSMOS       RADAR   SAR-10  SYNTETIC APERTURE RADAR
+732 732 ROSCOSMOS       RADAR   SAR-3   SYNTETIC APERTURE RADAR
+733 733 ROSCOSMOS       RADAR   SAR-70  SYNTETIC APERTURE RADAR
+740 740 ROSCOSMOS       RADAR   SLR-3   SIDE LOOKING RADAR
+745 745 ROSCOSMOS       RADAR   TRAVERS SAR
+750 750 ROSCOSMOS       RADIOMETER      174-K   TEMPERATURE AND HUMI"    DITY PROFILER
+751 751 ROSCOSMOS       RADIOMETER      BTVK    SCANNING TELEVISION"    RADIOMETER
+752 752 ROSCOSMOS       RADIOMETER      CHAIKA  SCANNING IR RADIOMET"    ER
+753 753 ROSCOSMOS       RADIOMETER      DELTA-2 MULTISPECTRAL MICROW"    AVE SCANNER
+755 755 ROSCOSMOS       RADIOMETER      IKAR-D  MULTISPECTRAL MICROW"    AVE SCANNER
+756 756 ROSCOSMOS       RADIOMETER      IKAR-N  MULTISPECTRAL MICROW"    AVE SCANNER
+757 757 ROSCOSMOS       RADIOMETER      IKAR-P  MULTISPECTRAL MICROW"    AVE SCANNER
+760 760 ROSCOSMOS       RADIOMETER      ISP
+761 761 ROSCOSMOS       RADIOMETER      KFA-1000        PHOTOGRAPHIC"     CAMERA
+762 762 ROSCOSMOS       RADIOMETER      KFA-200 PHOTOGRAPHIC CAMERA
+763 763 ROSCOSMOS       RADIOMETER      KFA-3000        PHOTOGRAPHIC"     CAMERA
+770 770 ROSCOSMOS       RADIOMETER     KLIMAT SCANNING IR RADIOMETER
+771 771 ROSCOSMOS       RADIOMETER      KLIMAT-2        SCANNING IR"    RADIOMETER
+775 775 ROSCOSMOS       RADIOMETER      MIRAS
+776 776 ROSCOSMOS       RADIOMETER      MIVZA
+777 777 ROSCOSMOS       RADIOMETER      MIVZA-M MICROWAVE SCANNING R"    ADIOMETER
+780 780 ROSCOSMOS       RADIOMETER      MR-2000
+781 781 ROSCOSMOS       RADIOMETER      MR-2000M
+785 785 ROSCOSMOS       RADIOMETER      MR-900  SCANNING TELEPHOTOME"    TER
+786 786 ROSCOSMOS       RADIOMETER      MR-900B SCANNING VISUAL BAND"     TELEPHOTOMETER
+790 790 ROSCOSMOS       RADIOMETER      MSU-E   MULTISPECTRAL HIGH R"    ESOLUTION ELECTRONIC SCANNER
+791 791 ROSCOSMOS       RADIOMETER      MSU-E1  MULTISPECTRAL HIGH R"    ESOLUTION ELECTRONIC SCANNER
+792 792 ROSCOSMOS       RADIOMETER      MSU-E2  MULTISPECTRAL HIGH R"    ESOLUTION ELECTRONIC SCANNER
+793 793 ROSCOSMOS       RADIOMETER      MSU-M
+794 794 ROSCOSMOS       RADIOMETER      MSU-S   MULTISPECTRAL MEDIUM"     RESOLUTION SCANNER
+795 795 ROSCOSMOS       RADIOMETER      MSU-SK  MULTISPECTRAL MEDIUM"    RESOLUTION CONICAL SCANNER
+796 796 ROSCOSMOS       RADIOMETER      MSU-V   MULTISPECTRAL HIGH R"    ESOLUTION CONICAL SCANNER
+810 810 ROSCOSMOS       RADIOMETER      MTZA    SCANNING MICROWAVE R"    ADIOMETER
+815 815 ROSCOSMOS       IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE"    MICROWAVE)  MZOAS   SCANNING MICROWAVE RADIO"    METER
+820 820 ROSCOSMOS       IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE"    MICROWAVE)  R-225   SINGLE CHANNEL MICROWAVE"     RADIOMETER
+821 821 ROSCOSMOS       RADIOMETER      R-400
+822 822 ROSCOSMOS       RADIOMETER      R-600   SINGLE CHANNEL MICRO"    WAVE RADIOMETER
+830 830 ROSCOSMOS       RADIOMETER      RMS     RADIATION MEASUREMEN"    T SYSTEM
+835 835 ROSCOSMOS       RADIOMETER      TV CAMERA
+836 836 ROSCOSMOS       RADIOMETER      SILVA
+840 840 ROSCOSMOS       SPECTRO-RADIOMETER      SROSMO  SPECTRORADIO"    METER FOR OCEAN MONITORING
+850 850 ROSCOSMOS       SPECTROMETER    BUFS-2  BACKSCATTER SPECTROM"    ETER/2
+851 851 ROSCOSMOS       SPECTROMETER    BUFS-4  BACKSCATTER SPECTROM"    ETER/4
+855 855 ROSCOSMOS       SPECTROMETER    ISTOK-1 INFRA-RED SPECTROMET"    ER
+856 856 ROSCOSMOS       SPECTROMETER    SFM-2   SPECTROMETER TO MEAS"    URE DIRECT SOLAR RADIATION
+857 857 ROSCOSMOS       SPECTROMETER    DOPI
+858 858 ROSCOSMOS       SPECTROMETER    KGI-4
+859 859 ROSCOSMOS       SPECTROMETER    OZON-M
+860 860 ROSCOSMOS       SPECTROMETER    RMK-2
+900 900 NOAA    RADIOMETER      MAXIE   MAGNETOSPHERIC ATMOSPHERIC X"    -RAY IMAGING EXPERIMENT
+901 901 NOAA    RADIOMETER      OLS     OPERATIONAL LINESCAN SYSTEM
+905 905 NOAA    RADIOMETER      SSM/I   MISSION SENSOR MICROWAVE IMA"    GER
+906 906 NOAA    RADIOMETER      SSM/T-1 MISSION SENSOR MICROWAVE TEM"    PERATURE SOUNDER
+907 907 NOAA    RADIOMETER      SSM/T-2 MISSION SENSOR MICROWAVE WAT"    ER VAPOR SOUNDER
+908 908 NOAA    RADIOMETER      SSMIS   SPECIAL SENSOR MICROWAVE IMA"    GER SOUNDER
+910 910 NOAA    RADIOMETER      SXI     SOLAR X-RAY IMAGER
+930 930 NOAA    SPECTROMETER    EHIC    ENERGETIC HEAVY ION COMPOSIT"    ION EXPERIMENT
+931 931 NOAA    SPECTROMETER    X-RAY ASTRONOMY PAYLOAD
+932 932 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     IVIS"    SR (FY-2)   IMPROVED MULTISPECTRAL VISIBLE AND INFRA-RED SCA"    N RADIOMETER (5 CHAN
+933 933 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   IRAS"        INFRARED ATMOSPHERIC SOUNDER
+934 934 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   MWAS"        MICROWAVE ATMOSPHERIC SOUNDER
+935 935 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   IMWA"    S   IMPROVED MICROWAVE ATMOSPHERIC SOUNDER
+936 936 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   MWHS"        MICROWAVE HUMIDITY SOUNDER
+937 937 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     MVIR"    S   MODERATE RESOLUTION VISIBLE AND INFRARED IMAGING SPECTRO"    RADIOMETER
+938 938 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  MWRI    MICROWAVE RADIATION IMAGER
+940 940 ROSCOSMOS       ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDER"    S   MTVZA-OK        SCANNING MICROWAVE RADIOMETER
+941 941 CNES    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   SAPH"    IR
+944 944 NOAA    RADAR ALTIMETERS        ALT     ALTIMETER
+945 945 NOAA    EARTH RADIATION BUDGET RADIOMETER       TSIS    TOTA"    L SOLAR IRRADIANCE SENSOR
+946 946 NOAA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  CMIS    CONICAL-SCANNING MICROWAVE IMAGER/SOUNDER
+947 947 NOAA    TOTAL AND PROFILE OZONE OMPS    OZONE MAPPING AND PR"    OFILER SUITE
+948 948 NOAA    SPACE ENVIRONMENT ATMOSPHERIC TEMPERATURE AND HUMIDI"    TY SOUNDERS GPSOS   GLOBAL POSITIONING SYSTEM OCCULTATION SE"    NSOR
+949 949 NOAA    MAGNETIC FIELD, AUROAL IMAGERY SCINTILLATION BOUNDAR"    Y   SESS    SPACE ENVIRONMENTAL SENSOR SUITE
+950 950 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VIRR"        MULTISPECTRAL VISIBLE AND INFRA-RED SCAN RADIOMETER (10"    CHANNELS
+951 951 NRSCC   TOTAL AND PROFILE OZONE TOM     TOTAL OZONE MAPPER
+952 952 NRSCC   TOTAL AND PROFILE OZONE OP      OZONE PROFILER
+2047 2047 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2020.table b/definitions/bufr/tables/0/wmo/8/codetables/2020.table
new file mode 100644
index 0000000..637ea6a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2020.table
@@ -0,0 +1,24 @@
+0 0 NIMBUS
+1 1 VTPR
+2 2 TIROS 1 (TIROS, NOAA-6 TO NOAA-13)
+3 3 TIROS 2 (NOAA-14 ONWARDS)
+10 10 EOS
+31 31 DMSP
+61 61 EUMETSAT POLAR SYSTEM (EPS)
+91 91 ERS
+121 121 ADEOS
+241 241 GOES
+261 261 JASON
+271 271 GMS
+272 272 MTSAT
+301 301 INSAT
+331 331 METEOSAT OPERATIONAL PROGRAMME (MOP)
+332 332 METEOSAT TRANSITIONAL PROGRAMME (MTP)
+333 333 METEOSAT SECOND GENERATION PROGRAMME (MSG)
+351 351 GOMS
+380 380 FY-1
+381 381 FY-2
+401 401 GPS
+402 402 GLONASS
+403 403 GALILEO
+511 511 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2021.table b/definitions/bufr/tables/0/wmo/8/codetables/2021.table
new file mode 100644
index 0000000..4ebf429
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2021.table
@@ -0,0 +1,8 @@
+1 1 HIGH RESOLUTION INFRA RED SOUNDER (HIRS)
+2 2 MICROWAVE SOUNDING UNIT           (MSU )
+3 3 STRATOSPHERIC SOUNDING UNIT       (SSU)
+4 4 AMI WIND MODE
+5 5 AMI WAVE MODE
+6 6 AMI IMAGE MODE
+7 7 RADAR ALTIMETER
+8 8 ATSR
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2022.table b/definitions/bufr/tables/0/wmo/8/codetables/2022.table
new file mode 100644
index 0000000..5068e7f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2022.table
@@ -0,0 +1,5 @@
+1 1 PROCESSING TECHNIQUE NOT DEFINED
+2 2 AUTOMATED STATISTICAL REGRESSION
+3 3 CLEAR PATH
+4 4 PARTLY CLOUDY PATH
+5 5 CLOUDY PATH
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2023.table b/definitions/bufr/tables/0/wmo/8/codetables/2023.table
new file mode 100644
index 0000000..428ca3b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2023.table
@@ -0,0 +1,12 @@
+0 0 RESERVED
+1 1 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE INFRARED"    CHANNEL
+2 2 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE VISIBLE CHANNEL
+3 3 WIND DERIVED FROM CLOUD MOTION OBSERVED IN WATER VAPOUR CHANNEL
+4 4 WIND DERIVED FROM MOTION OBSERVED IN  COMBINATION OF SPECTRAL"    CHANNELS
+5 5 WIND DERIVED FROM MOTION OBSERVED IN THE WATER  VAPOUR CHANNEL"    IN CLEAR AIR
+6 6 WIND DERIVED FROM MOTION OBSERVED IN THE OZONE  CHANNEL
+7 7 WIND DERIVED FROM MOTION OBSERVED IN WATER VAPOUR CHANNEL"    (CLOUD OR CLEAR AIR NOT SPECIFIED)
+8 8 WIND DERIVED FROM ALTIMETER
+9 9 WIND DERIVED FROM RADIOMETER
+13 13 ROOT MEAN SQUARE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2024.table b/definitions/bufr/tables/0/wmo/8/codetables/2024.table
new file mode 100644
index 0000000..ba7498e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2024.table
@@ -0,0 +1,3 @@
+1 1 TABLE WITH FULL RANGE OF HUMIDITY VARIATION IN LAYER
+2 2 REGRESSION TECHNIQUE ON 2 HUMIDITY VALUES IN LAYER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2025.table b/definitions/bufr/tables/0/wmo/8/codetables/2025.table
new file mode 100644
index 0000000..6c8403c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2025.table
@@ -0,0 +1,16 @@
+1 1 RESERVED
+2 2 HIRS
+3 3 MSU
+6 6 HIRS
+7 7 MSU
+10 10 HIRS(1, 2, 3, 8,9, 16, 17)
+11 11 HIRS(1, 2, 3, 9, 17)
+12 12 MSU
+15 15 HIRS
+16 16 HIRS
+17 17 MSU
+18 18 SKINTK(OCEAN ONLY)
+21 21 HIRS
+22 22 SSU
+23 23 MSU (3 ,4)
+25 25 MISSING
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2030.table b/definitions/bufr/tables/0/wmo/8/codetables/2030.table
new file mode 100644
index 0000000..c58949d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2030.table
@@ -0,0 +1,7 @@
+1 1 ADCP (ACOUSTIC DOPPLER CURRENT PROFILER)
+2 2 GEK (GEOMAGNETIC ELECTRO KINETOGRAPH)
+3 3 SHIPS'S SET AND DRIFT DETERMINED BY FIXES 3-6 HOURS APART
+4 4 SHIPS'S SET AND DRIFT DETERMINED BY MORE THAN 6 HOURS BUT LE"    SS THAN 12 HOURS APART
+5 5 DRIFT OF BUOY
+6 6 ADCP (ACOUSTIC DOPPLER CURRENT PROFILER)
+7 7 MISSIN VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2031.table b/definitions/bufr/tables/0/wmo/8/codetables/2031.table
new file mode 100644
index 0000000..1c0f4b8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2031.table
@@ -0,0 +1,21 @@
+0 0 RESERVED
+1 1 INSTANTANEOUS
+2 2 AVERAGED OVER 3 MINUTES OR LESS
+3 3 AVERAGED OVER MORE THAN 3 MINUTES, BUT 6 AT THE MOST
+4 4 AVERAGED OVER MORE THAN 6 MINUTES, BUT 12 AT THE MOST
+5 5 INSTANTANEOUS
+6 6 AVERAGED OVER 3 MINUTES OR LESS
+7 7 AVERAGED OVER MORE THAN 3 MINUTES, BUT 6 AT THE MOST
+8 8 AVERAGED OVER MORE THAN 6 MINUTES, BUT 12 AT THE MOST
+9 9 VECTOR OR DOPPLER CURRENT PROFILLING METHOD NOT USED
+10 10 RESERVED
+11 11 1 HOUR OR LESS
+12 12 MORE THAN  1 HOUR BUT  2 AT THE MOST
+13 13 MORE THAN  2 HOUR BUT  4 AT THE MOST
+14 14 MORE THAN  4 HOUR BUT  8 AT THE MOST
+15 15 MORE THAN  8 HOUR BUT 12 AT THE MOST
+16 16 MORE THAN 12 HOUR BUT 18 AT THE MOST
+17 17 MORE THAN 18 HOUR BUT 24 AT THE MOST
+18 18 RESERVED
+19 19 DRIFT METHOD NOT USED
+31 31 MISSING
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2032.table b/definitions/bufr/tables/0/wmo/8/codetables/2032.table
new file mode 100644
index 0000000..8d60fe6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2032.table
@@ -0,0 +1,4 @@
+0 0 VALUES AT SELECTED DEPTHS (DATA POINTS FIXED BY THE INSTRUME"    NT OR SELECTED BY ANY OTHER METHOD)
+1 1 VALUES AT SIGNIFICANT DEPTHS (DATA POINTS TAKEN FROM TRACES"    AT SIGNIFICANT DEPTHS)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2033.table b/definitions/bufr/tables/0/wmo/8/codetables/2033.table
new file mode 100644
index 0000000..55ee821
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2033.table
@@ -0,0 +1,5 @@
+0 0 NO SALINITY MEASURED
+1 1 IN SITU SENSOR, ACCURACY BETTER THAN 0.02 %
+2 2 IN SITU SENSOR, ACCURACY LESS THAN 0.02 %
+3 3 SAMPLE ANALYSIS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2034.table b/definitions/bufr/tables/0/wmo/8/codetables/2034.table
new file mode 100644
index 0000000..06cdd52
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2034.table
@@ -0,0 +1,7 @@
+0 0 UNSPECIFIED DROGUE
+1 1 HOLEY SOCK
+2 2 TRISTAR
+3 3 WINDOW SHADE
+4 4 PARACHUTE
+5 5 NON-LAGRANGIAN SEA ANCHOR
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2036.table b/definitions/bufr/tables/0/wmo/8/codetables/2036.table
new file mode 100644
index 0000000..4e69a0c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2036.table
@@ -0,0 +1,4 @@
+0 0 DRIFTING BUOY
+1 1 FIXED BUOY
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2037.table b/definitions/bufr/tables/0/wmo/8/codetables/2037.table
new file mode 100644
index 0000000..67049ca
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2037.table
@@ -0,0 +1,7 @@
+0 0 REASERVED
+1 1 MANUAL READING FROM VERTICAL TIDE STAFF
+2 2 MANUAL READING FROM SINGLE AUTOMATIC RECORDER AT STATION
+3 3 MANUAL READING FROM MULTIPLE AUTOMATIC RECORDERS AT STATION
+4 4 AUTOMATIC READING FROM SINGLE AUTOMATIC RECORDER AT STATION"    WITHOUT LEVEL REFERENCE CHECK
+5 5 AUTOMATIC READING FROM SINGLE AUTOMATIC RECORDER AT STATION"    WITH LEVEL REFERENCE CHECK,OR MULTIPLE AUTOMATIC RECORDERS
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2038.table b/definitions/bufr/tables/0/wmo/8/codetables/2038.table
new file mode 100644
index 0000000..25c58c5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2038.table
@@ -0,0 +1,12 @@
+0 0 SHIP INTAKE
+1 1 BUCKET
+2 2 HULL CONTACT SENSOR
+3 3 REVERSING TERMOMETER
+4 4 STD/CTD SENSOR
+5 5 MECHANICAL BT
+6 6 EXPANDABLE BT
+7 7 DIGITAL BT
+8 8 THERMISTOR CHAIN
+9 9 INFRARED SCANNER
+10 10 MICROWAVE SCANNER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2039.table b/definitions/bufr/tables/0/wmo/8/codetables/2039.table
new file mode 100644
index 0000000..0a94982
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2039.table
@@ -0,0 +1,5 @@
+0 0 MEASURED WET-BULB TEMPERATURE
+1 1 ICED BULB MEASURED WET-BULB TEMPERATURE
+2 2 COMPUTED WET-BULB TEMPERATURE
+3 3 ICED BULB COMPUTED WET-BULB TEMPERATURE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2040.table b/definitions/bufr/tables/0/wmo/8/codetables/2040.table
new file mode 100644
index 0000000..5fcc074
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2040.table
@@ -0,0 +1,8 @@
+0 0 SHIPS MOTION REMOVED BY AVARAGING
+1 1 SHIPS MOTION REMOVED BY MOTION COMPENSATION
+2 2 SHIPS MOTION NOT REMOVED
+3 3 SHIPS MOTION REMOVED BY AVERAGING
+4 4 SHIPS MOTION REMOVED BY MOTION COMPENSATION
+5 5 SHIPS MOTION NOT REMOVED
+6 6 DOPPLER CURRENT PROFILING METHOD NOT USED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2041.table b/definitions/bufr/tables/0/wmo/8/codetables/2041.table
new file mode 100644
index 0000000..f479da9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2041.table
@@ -0,0 +1,6 @@
+0 0 INFORMATION BASED ON MANUAL ANALYSIS
+1 1 INFORMATION BASED ON COMPUTER ANALYSIS
+2 2 INFORMATION BASED ON DATA ASSIMILATION
+3 3 INFORMATION BASED ON COMPUTER ANALYSIS OR DATA ASSIMSILATIO"    N MANUALLY MODIFIED
+10 10 INFORMATION BASED ON THE NUMERICAL WEATHER PREDICTION
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2044.table b/definitions/bufr/tables/0/wmo/8/codetables/2044.table
new file mode 100644
index 0000000..80afaca
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2044.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 LONGUET-HIGGINS (1964)
+2 2 LONGUET-HIGGINS (F3 METHOS)
+3 3 MAXIMUM LIKELIHOOD METHOD
+4 4 MAXIMUM ENTROPY METHOD
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2045.table b/definitions/bufr/tables/0/wmo/8/codetables/2045.table
new file mode 100644
index 0000000..374e4f2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2045.table
@@ -0,0 +1,5 @@
+0 0 SEA STATION
+1 1 AUTOMATIC DATA BUOY
+2 2 AIRCRAFT
+3 3 SATELLITE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2046.table b/definitions/bufr/tables/0/wmo/8/codetables/2046.table
new file mode 100644
index 0000000..c4fb394
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2046.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 HEAVE SENSOR
+2 2 SLOPE SENSOR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2048.table b/definitions/bufr/tables/0/wmo/8/codetables/2048.table
new file mode 100644
index 0000000..69e2610
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2048.table
@@ -0,0 +1,12 @@
+0 0 HIRS
+1 1 MSU
+2 2 SSU
+3 3 AMSU-A
+4 4 AMSU-B
+5 5 AVHRR
+6 6 SSMI
+7 7 NSCAT
+8 8 SEA WINDS
+9 9 POSEIDON ALTIMETER
+10 10 JMR (JASON MICROWAVE RADIOMETER)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2049.table b/definitions/bufr/tables/0/wmo/8/codetables/2049.table
new file mode 100644
index 0000000..15b2ce5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2049.table
@@ -0,0 +1,4 @@
+1 1 PROCESSING TECHNIQUE NOT DEFINED
+2 2 SIMULTANIOUS PHISICAL RETRIEVAL
+3 3 CLEAR SOUNDING
+4 4 CLOUDY COUNDING
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2050.table b/definitions/bufr/tables/0/wmo/8/codetables/2050.table
new file mode 100644
index 0000000..c9688ef
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2050.table
@@ -0,0 +1,19 @@
+1 1 CHANNEL 1 14.71 MICROMETERS
+2 2 CHANNEL 2 14.37 MICROMETERS
+3 3 CHANNEL 3 14.06 MICROMETERS
+4 4 CHANNEL 4 13.64 MICROMETERS
+5 5 CHANNEL 5 13.37 MICROMETERS
+6 6 CHANNEL 6 12.66 MICROMETERS
+7 7 CHANNEL 7 12.02 MICROMETERS
+8 8 CHANNEL 8 11.03 MICROMETERS
+9 9 CHANNEL 9  9.71 MICROMETERS
+10 10 CHANNEL 10 7.43 MICROMETERS
+11 11 CHANNEL 11 7.02 MICROMETERS
+12 12 CHANNEL 12 6.51 MICROMETERS
+13 13 CHANNEL 13 4.57 MICROMETERS
+14 14 CHANNEL 14 4.52 MICROMETERS
+15 15 CHANNEL 15 4.45 MICROMETERS
+16 16 CHANNEL 16 4.13 MICROMETERS
+17 17 CHANNEL 17 3.98 MICROMETERS
+18 18 CHANNEL 18 3.74 MICROMETERS
+19 19 CHANNEL 19 0.969 MICROMETERS
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2051.table b/definitions/bufr/tables/0/wmo/8/codetables/2051.table
new file mode 100644
index 0000000..2f0ab22
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2051.table
@@ -0,0 +1,4 @@
+1 1 MAXIMUM/MINIMUM THERMOMETERS
+2 2 AUTOMATED INSTRUMENT
+3 3 THERMOGRAPH
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2052.table b/definitions/bufr/tables/0/wmo/8/codetables/2052.table
new file mode 100644
index 0000000..4b934ab
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2052.table
@@ -0,0 +1,5 @@
+1 1 CHANNEL 1 0.55-.75 MICROMETERS
+2 2 CHANNEL 2 3.9 MICROMETERS
+3 3 CHANNEL 3 6.7 MICROMETERS
+4 4 CHANNEL 4 10.7 MICROMETERS
+5 5 CHANNEL 5 12.0 MICROMETERS
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2053.table b/definitions/bufr/tables/0/wmo/8/codetables/2053.table
new file mode 100644
index 0000000..68c67fe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2053.table
@@ -0,0 +1,5 @@
+0 0 OBSERVED BRIGHTNESS TEMPERATURES
+1 1 BRIGHTNESS TEMPERATURE WITH BIAS CORRECTION APPLIED
+2 2 BRIGHTNESS TEMPERATURE CALCULATED FROM FIRST GUESS
+3 3 BRIGHTNESS TEMPERATURE CALCULATED FROM SOUNDING
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2054.table b/definitions/bufr/tables/0/wmo/8/codetables/2054.table
new file mode 100644
index 0000000..6260713
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2054.table
@@ -0,0 +1,6 @@
+0 0 PARAMETER DERIVED USING OBSERVED SOUNDER BRIGHTNESS TEMPERAT"    URES
+1 1 PARAMETER DERIVED USING OBSERVED IMAGER BRIGHTNESS TEMPERATU"    RES
+2 2 PARAMETER DERIVED USING FIRST GUESS INFORMATION
+3 3 PARAMETER DERIVED USING  NMC ANALYSIS INFORMATION
+4 4 PARAMETER DERIVED USING RADIOSONDE INFORMATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2055.table b/definitions/bufr/tables/0/wmo/8/codetables/2055.table
new file mode 100644
index 0000000..8c9fce2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2055.table
@@ -0,0 +1,9 @@
+0 0 STATISTICS GENERATED COMPARING RETRIEVAL VERSUS RADIOSONDE
+1 1 STATISTICS GENERATED COMPARING RETRIEVAL VERSUS FIRST GUESS
+2 2 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS FIRST GUESS
+3 3 STATISTICS GENERATED COMPARING OBSERVED VERSUS RETRIEVAL
+4 4 STATISTICS GENERATED COMPARING OBSERVED VERSUS FORST GUESS
+5 5 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS IMAGER
+6 6 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS SOUNDER
+7 7 STATISTICS GENERATED FOR RADIOSONDE
+8 8 STATISTICS GENERATED FOR FIRST GUESS
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2056.table b/definitions/bufr/tables/0/wmo/8/codetables/2056.table
new file mode 100644
index 0000000..3bdc910
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2056.table
@@ -0,0 +1,6 @@
+0 0 SUMS OF DIFFERENCE
+1 1 SUMS OF SQUARED DIFFERENCES
+2 2 SAMPLE SIZE
+3 3 MINIMUM DIFFERENCE
+4 4 MAXIMUM DIFFERENCE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2057.table b/definitions/bufr/tables/0/wmo/8/codetables/2057.table
new file mode 100644
index 0000000..a5cb21e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2057.table
@@ -0,0 +1,6 @@
+0 0 NESTED GRID MODEL (NMG)
+1 1 AVIATION MODEL(AVN)
+2 2 MEDIUM RANGE FORECAST (MRF) MODEL
+3 3 GLOBAL DATA ASSIMILATION SYSTEM (GDAS) FORECAST MODEL
+4 4 PRIOR SOUNDINGS (WITHIN 3 HOURS OF CURRENT TIME)
+5 5 CLIMATOLOGY
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2058.table b/definitions/bufr/tables/0/wmo/8/codetables/2058.table
new file mode 100644
index 0000000..258c4ad
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2058.table
@@ -0,0 +1,5 @@
+0 0 12 HOUR AND 18 HOUR
+1 1 18 HOUR AND 24 HOUR
+2 2  6 HOUR AND 12 HOUR
+3 3 GREATER THAN 24 HOUR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2059.table b/definitions/bufr/tables/0/wmo/8/codetables/2059.table
new file mode 100644
index 0000000..58f9c5c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2059.table
@@ -0,0 +1,5 @@
+0 0 NCEP NESTED GRID MODEL ANALYSIS
+1 1 NCEP AVIATION MODEL ANALYSIS
+2 2 NCEP MEDIUM RANGE FORECAST MODEL ANALYSIS
+3 3 NCEP GLOBAL DATA ASSIMILATION SYSTEM FORECAST MODEL ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2060.table b/definitions/bufr/tables/0/wmo/8/codetables/2060.table
new file mode 100644
index 0000000..84a612d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2060.table
@@ -0,0 +1,7 @@
+0 0 CURRENT SURFACE HOURLY REPORTS
+1 1 CURRENT SHIP REPORTS
+2 2 CURRENT BUOY REPORTS
+3 3 ONE HOUR OLD SURFACE HOURLY REPORTS
+4 4 ONE HOUR SHIP OLD REPORTS
+5 5 ONE HOUR BUOY OLD REPORTS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2061.table b/definitions/bufr/tables/0/wmo/8/codetables/2061.table
new file mode 100644
index 0000000..3298d90
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2061.table
@@ -0,0 +1,3 @@
+0 0 INERTIAL NAVIGATOR SYSTEM
+1 1 OMEGA
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2062.table b/definitions/bufr/tables/0/wmo/8/codetables/2062.table
new file mode 100644
index 0000000..7083db9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2062.table
@@ -0,0 +1,7 @@
+0 0 ASDAR
+1 1 ASDAR(ACARS ALSO AVAILABLE BUT NOT OPERATIVE)
+2 2 ASDAR(ACARS ALSO AVAILABLE AND OPERATIVE)
+3 3 ACARS
+4 4 ACARS(ASDAR ALSO AVALILABLE BUT NOT OPERATIVE)
+5 5 ACARS(ASDAR ALSO AVAILABLE AND OPERATIVE)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2064.table b/definitions/bufr/tables/0/wmo/8/codetables/2064.table
new file mode 100644
index 0000000..7414302
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2064.table
@@ -0,0 +1,4 @@
+0 0 GOOD
+1 1 BAD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2066.table b/definitions/bufr/tables/0/wmo/8/codetables/2066.table
new file mode 100644
index 0000000..b1778d1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2066.table
@@ -0,0 +1,4 @@
+0 0 TRS 2000
+1 1 IMS 1500C
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2070.table b/definitions/bufr/tables/0/wmo/8/codetables/2070.table
new file mode 100644
index 0000000..5f294e6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2070.table
@@ -0,0 +1,13 @@
+0 0 ACTUAL LOCATION IN SECONDS
+1 1 ACTUAL LOCATION IN MINUTES
+2 2 ACTUAL LOCATION IN DEGREES
+3 3 ACTUAL LOCATION IN DECIDEGREES
+4 4 ACTUAL LOCATION OM CENTIDEGREES
+5 5 REFERENCED TO CHECKPOINT IN SECONDS
+6 6 REFERENCED TO CHECKPOINT IN MINUTES
+7 7 REFERENCED TO CHECKPOINT IN DEGREES
+8 8 REFERENCED TO CHECKPOINT IN DECIDEGREES
+9 9 REFERENCED TO CHECKPOINT IN CENTIDEGREES
+10 10 ACTUAL LOCATION IN TENTHS OF A MINUTE
+11 11 REFERENCED TO CHECKPOINT IN TENTHS OF A MINUTE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2080.table b/definitions/bufr/tables/0/wmo/8/codetables/2080.table
new file mode 100644
index 0000000..b0eb6d2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2080.table
@@ -0,0 +1,5 @@
+0 0 KAYSAM
+1 1 TOTEX
+2 2 KKS
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2081.table b/definitions/bufr/tables/0/wmo/8/codetables/2081.table
new file mode 100644
index 0000000..4c0f1dc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2081.table
@@ -0,0 +1,9 @@
+0 0 GP26
+1 1 GP28
+2 2 GP30
+3 3 HM26
+4 4 HM28
+5 5 HM30
+6 6 SV16
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2083.table b/definitions/bufr/tables/0/wmo/8/codetables/2083.table
new file mode 100644
index 0000000..61c3e1e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2083.table
@@ -0,0 +1,6 @@
+0 0 HIGH BAY
+1 1 LOW BAY
+2 2 BALLOON INFLATION LAUNCH SYSTEM (BILS)
+3 3 ROOF-TOP BILS
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2084.table b/definitions/bufr/tables/0/wmo/8/codetables/2084.table
new file mode 100644
index 0000000..be6430a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2084.table
@@ -0,0 +1,5 @@
+0 0 HYDROGEN
+1 1 HELIUM
+2 2 NATURAL GAS
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2095.table b/definitions/bufr/tables/0/wmo/8/codetables/2095.table
new file mode 100644
index 0000000..79f4996
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2095.table
@@ -0,0 +1,5 @@
+0 0 CAPACITANCE ANEROID
+1 1 DERIVED FROM GPS
+2 2 RESISTIVE STRAIN GAUGE
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2096.table b/definitions/bufr/tables/0/wmo/8/codetables/2096.table
new file mode 100644
index 0000000..b856de9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2096.table
@@ -0,0 +1,5 @@
+0 0 ROD THERMISTOR
+1 1 BEAD THERMISTOR
+2 2 CAPACITANCE BEAD
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2097.table b/definitions/bufr/tables/0/wmo/8/codetables/2097.table
new file mode 100644
index 0000000..0e511a1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2097.table
@@ -0,0 +1,8 @@
+0 0 VIZ MARK II CARBON HYGRISTOR
+1 1 VIZ B2 HYGRISTOR
+2 2 VAISALA A-HUMICAP
+3 3 VAISALA H-HUMICAP
+4 4 CAPACITANCE SENSOR
+5 5 VAISALA RS90
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2098.table b/definitions/bufr/tables/0/wmo/8/codetables/2098.table
new file mode 100644
index 0000000..6eb06d4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2098.table
@@ -0,0 +1,5 @@
+0 0 HH POLARISATION
+1 1 VV POLARISATION
+2 2 HV POLARISATION REAL VALUED COMPONENT
+3 3 HV POLARISATION IMAGINARY VALUED COMPONENT
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2101.table b/definitions/bufr/tables/0/wmo/8/codetables/2101.table
new file mode 100644
index 0000000..efdb3ec
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2101.table
@@ -0,0 +1,10 @@
+0 0 CENTRE FRONT-FED PARABOLOID
+1 1 OFFSET FRONT-FED PARABOLOID
+2 2 CENTRE CASSEGRAIN PARABOLOID
+3 3 OFFSET CASSEGRAIN PARABOLOID
+4 4 PLANAR ARRAY
+5 5 COAXIAL-COLLINEAR ARRAY
+6 6 YAGI ELEMENTS ARRAY
+7 7 MICROSTRIP
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2103.table b/definitions/bufr/tables/0/wmo/8/codetables/2103.table
new file mode 100644
index 0000000..3b7ee27
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2103.table
@@ -0,0 +1,2 @@
+1 1 RADAR ANTENNA IS PROTECTED BY A RADOME
+2 2 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2104.table b/definitions/bufr/tables/0/wmo/8/codetables/2104.table
new file mode 100644
index 0000000..100081a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2104.table
@@ -0,0 +1,7 @@
+0 0 HORIZONTAL POLARISATION
+1 1 VERTICAL POLARISATION
+2 2 RIGHT CIRCULAR POLARISATION
+3 3 LEFT CIRCULAR POLARSZATION
+4 4 HORIZONTAL AND VERTICAL POLARISATION
+5 5 RIGHT AND LEFT CIRCULAR POLARISATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/21066.table b/definitions/bufr/tables/0/wmo/8/codetables/21066.table
new file mode 100644
index 0000000..a3fd93c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/21066.table
@@ -0,0 +1,11 @@
+1 1 PROCESSING EQUIPMENT NOT WORKING
+2 2 EQUIPMENT FAILED
+3 3 PRF CODE CHANGED DURING IMAGE GENERATION
+4 4 SAMPLINH WINDOW CHANGED DURING IMAGE GENERATION
+5 5 GAIN CHANGED DURING IMAGE GENERATION
+6 6 CHIRP REPLICA EXCEEDS SPECIFIC VALUE
+7 7 INPUT DATA MEAN AND STANDARD DEVIATION OF IN-PHASE AND"    QUADRATURE OUT OF RANGE
+8 8 DOPPLER CENTROID CONFIDENCE > MMCC VALUE
+9 9 DOPPLER CENTROID ABSOLUTE VALUE > PRF/2
+10 10 DOPPLER AMBIGUITY CONFIDENCE < MMCC VALUE
+11 11 OUTPUT DATA MEAN AND STANDARD DEVIATION =< MMCC VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/21067.table b/definitions/bufr/tables/0/wmo/8/codetables/21067.table
new file mode 100644
index 0000000..9d0c51b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/21067.table
@@ -0,0 +1,12 @@
+1 1 NO FOREBEAM CALCULATION
+2 2 NO MIDBEAM CALCULATION
+3 3 NO AFTBEAM CALCULATION
+4 4 FOREBEAM ARCING DETECTED
+5 5 MID ARCING DETECTED
+6 6 AFTBEAM ARCING DETECTED
+7 7 ANY BEAM NOISE CONTENT ABOVE OR EQUAL TO TRESHOLD
+8 8 LAND (ANY LAND IN CELL FOOTPRINT)
+9 9 AUTONOMOUS AMBIGUITY REMOVAL NOT USED
+10 10 METEOROLOGICAL BACKGROUND NOT USED
+11 11 MINIMUM RESIDUAL EXCEEDED TRESHOLD
+12 12 FRAME CHECKSUM ERROR DETECTED
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/21068.table b/definitions/bufr/tables/0/wmo/8/codetables/21068.table
new file mode 100644
index 0000000..8e8b38e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/21068.table
@@ -0,0 +1,7 @@
+1 1 STANDARD DEVIATION OF WIND SPEED OUTSIDE MMCC LIMIT
+2 2 STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT OUTSIDE MMCC L"    IMIT
+3 3 STANDARD DEVIATION OF ALTITUDE OUTSIDE MMCC LIMIT
+4 4 MEAN PEAKINESS OUTSIDE MMCC LIMIT
+5 5 FRAME CHECKSUM ERROR DETECTED
+6 6 HEIGHT-TIME LOOP TIME CONSTANT CORRECTION NOT PERFORMED
+7 7 NOT ENOUGH MEASUREMENTS ( N< 10)
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/21069.table b/definitions/bufr/tables/0/wmo/8/codetables/21069.table
new file mode 100644
index 0000000..c343130
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/21069.table
@@ -0,0 +1,9 @@
+1 1 12.0 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+2 2 11.0 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+3 3  3.7 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+4 4  1.6 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+5 5 CLOUD IDENTIFICATION USED 1.6 MICROMETERS"    HISTOGRAM REFLECTANCE CLOUD TEST
+6 6 1.6 MICROMETERS HISTOGRAM REFLECTANCE CLOUD"    TEST USED DYNAMIC TRESHOLD
+7 7 SUN GLINT DETECTED BY 1.6 MICROMETERS REFLECTANCE CLOUD TEST
+8 8 3.7 MICROMETERS USED IN SEA-SURFACE TEMPERATURE RETRIEVAL
+9 9 SEA-SURFACE TEMPERATURE DERIVATION USED DAYTIME DATA"    (NIGHT-TIME IF ZERO)
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/21070.table b/definitions/bufr/tables/0/wmo/8/codetables/21070.table
new file mode 100644
index 0000000..7849b6c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/21070.table
@@ -0,0 +1,23 @@
+1 1 CELL 1:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+2 2 CELL 2:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL CELL NUMB"    ERING
+3 3 CELL 3:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+4 4 CELL 4:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL NW NE
+5 5 CELL 5:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 7 8 9
+6 6 CELL 6:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 4 5 6
+7 7 CELL 7:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 1 2 3
+8 8 CELL 8:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL SW SE
+9 9 CELL 9:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+10 10 -18 DUAL VIEW SST RETRIEVAL USED 3.7 MICRON CHANNEL (ONE BIT"    PER 10-ARCMIN CELL)
+11 11 CELL 1:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+12 12 CELL 3:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+13 13 CELL 4:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL NW NE
+14 14 CELL 5:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 7 8 9
+15 15 CELL 6:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 4 5 6
+16 16 CELL 7:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 1 2 3
+17 17 CELL 8:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL SW SE
+18 18 CELL 9:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+19 19 NADIR VIEW CONTAINS DAY-TIME DATA (NIGHT IF ZERO)
+20 20 FORWARD VIEW CONTAINS DAY-TIME DATA (NIGHT IF ZERO)
+21 21 RECORD CONTAINS CONTRIBUTIONS FROM INSTRUMENT SCANS ACQUIRED"     WHEN ERS PLATFORM NOT IN YAW-STEERING MODE
+22 22 RECORD CONTAINS CONTRIBUTIONS FROM INSTRUMENT SCANS FOR WHIC"    H PRODUCT CONFIDENCE DATA SHOW QUALITY IS POOR OR UNKNOWN
+23 23 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/21072.table b/definitions/bufr/tables/0/wmo/8/codetables/21072.table
new file mode 100644
index 0000000..521f791
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/21072.table
@@ -0,0 +1,3 @@
+1 1 HEIGHT ERROR CORRECTION APPLIED INSTEAD OF OPEN LOOP CALIBRA"    TION
+2 2 MICROWAVE SOUNDER USED FOR TROPOSPHERE CORRECTION
+3 3 AGC OUTPUT CORRECTION APPLIED INSTED OF OPEN LOOP CALIBRATIO"    N
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/21073.table b/definitions/bufr/tables/0/wmo/8/codetables/21073.table
new file mode 100644
index 0000000..9538fa5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/21073.table
@@ -0,0 +1,8 @@
+1 1 BLANK DATA RECORD
+2 2 TEST
+3 3 CALIBRATION (CLOSED LOOP)
+4 4 BITE
+5 5 ACQUISITION ON ICE
+6 6 ACQUISITION ON OCEAN
+7 7 TRACKING ON ICE
+8 8 TRACKING ON OCEAN
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/21076.table b/definitions/bufr/tables/0/wmo/8/codetables/21076.table
new file mode 100644
index 0000000..bc52ac5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/21076.table
@@ -0,0 +1,4 @@
+0 0 LINEAR
+1 1 LOGARITHMIC (BASE E)
+2 2 LOGARITHMIC (BASE 10)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/21109.table b/definitions/bufr/tables/0/wmo/8/codetables/21109.table
new file mode 100644
index 0000000..0990694
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/21109.table
@@ -0,0 +1,8 @@
+1 1 NOT ENOUGH GOOD SIGMA-0 AVAILABLE FOR WIND RETRIEVAL
+2 2 POOR AZIMUTH DIVERSITY AMONG SIGMA0- FOR  WIND RETRIEVAL
+8 8 SOME PORTION OF WIND VECTOR CELL IS OVER LAND
+9 9 SOME PORTION OF WIND VECTOR CELL IS OVER ICE
+10 10 WIND RETRIEVAL NOT PERFORMED FOR WIND  VECTOR CELL
+11 11 REPORTED WIND SPEED IS GREATER THAN 30 M/S
+12 12 REPORTED WIND SPEED IS LESS THAN OR EQUAL TO 3 M/S
+17 17 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/21115.table b/definitions/bufr/tables/0/wmo/8/codetables/21115.table
new file mode 100644
index 0000000..3bdb683
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/21115.table
@@ -0,0 +1,11 @@
+1 1 SIGMA-0 MEASUREMENT IS NOT USABLE
+2 2 SIGNAL TO NOISE RATIO IS LOW
+3 3 SIGMA-0 IS NEGATIVE
+4 4 SIGMA-0 IS OUTSIDE OF ACCEPTABLE RANGE
+5 5 SCATTEROMETER PULSE QUALITY IS NOT ACCEPTABLE
+6 6 SIGMA-0 CELL LOCATION ALGORITHM DOES NOT CONVERGE
+7 7 FREQUENCY SHIFT LIES BEYOND THE RANGE OF THE X FACTOR TABLE
+8 8 SPACECRAFT TEMPERATURE IS BEYOND CALIBRATION COEFFICIENT RAN"    GE
+9 9 NO APPLICABLE ATTITUDE RECORDS WERE FOUND FOR THIS SIGMA-0
+10 10 INTERPOLATED EPHEMERIS DATA ARE NOT ACCEPTABLE FOR THIS SIGM"    A-0
+17 17 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/21116.table b/definitions/bufr/tables/0/wmo/8/codetables/21116.table
new file mode 100644
index 0000000..10b5c53
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/21116.table
@@ -0,0 +1,16 @@
+1 1 CALIBRATION/MEASUREMENT PULSE FLAG (1)
+2 2 CALIBRATION/MEASUREMENT PULSE FLAG (2)
+3 3 OUTER ANTENNA BEAM
+4 4 SIGMA-0 CELL IS AFT OF SPACECRAFT
+5 5 CURRENT MODE (1)
+6 6 CURRENT MODE (2)
+7 7 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (1)
+8 8 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (2)
+9 9 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (3)
+10 10 LOW RESOLUTION MODE - WHOLE PULSE DATA
+11 11 SCATTEROMETER ELECTRONIC SUBSYSTEM B
+12 12 ALTERNATE SPIN RATE - 19.8 RPM
+13 13 RECEIVER PROTECTION ON
+14 14 SLICES PER COMPOSITE FLAG (1)
+15 15 SLICES PER COMPOSITE FLAG (2)
+16 16 SLICES PER COMPOSITE FLAG (3)
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/21119.table b/definitions/bufr/tables/0/wmo/8/codetables/21119.table
new file mode 100644
index 0000000..d46b083
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/21119.table
@@ -0,0 +1,14 @@
+0 0 RESERVED
+1 1 SASS
+2 2 SASS2
+3 3 NSCAT0
+4 4 NSCAT1
+5 5 NSCAT2
+6 6 QSCAT0
+7 7 QSCAT1
+31 31 CMOD1
+32 32 CMOD2
+33 33 CMOD3
+34 34 CMOD4
+35 35 CMOD5
+64 64 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/21144.table b/definitions/bufr/tables/0/wmo/8/codetables/21144.table
new file mode 100644
index 0000000..1f082e6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/21144.table
@@ -0,0 +1 @@
+1 1 RAIN
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2115.table b/definitions/bufr/tables/0/wmo/8/codetables/2115.table
new file mode 100644
index 0000000..c7e866c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2115.table
@@ -0,0 +1,7 @@
+0 0 PDB
+1 1 RSOIS
+2 2 ASOS
+3 3 PSYCHROMETER
+4 4 F420
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/21150.table b/definitions/bufr/tables/0/wmo/8/codetables/21150.table
new file mode 100644
index 0000000..8510046
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/21150.table
@@ -0,0 +1,4 @@
+0 0 DATA FROM SINGLE GROUND STATION (NO CO-LOCATION)
+1 1 DATA FROM MULTIPLE GROUND STATION (CO-LOCATED DATA)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/21155.table b/definitions/bufr/tables/0/wmo/8/codetables/21155.table
new file mode 100644
index 0000000..27cc03d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/21155.table
@@ -0,0 +1,16 @@
+1 1 NOT ENOUGH GOOD SIGMA-0 AVAILABLE FOR WIND RETRIEVAL
+2 2 POOR AZIMUTH DIVERSITY AMONG SIGMA-0 FOR WIND RETRIEVAL
+3 3 ANY BEAM NOISE CONTENT ABOVE TRESHOLD
+4 4 PRODUCT MONITORING NOT USED
+5 5 PRODUCT MONITORING FLAG
+6 6 KNMI QUALITY CONTROL FAILS
+7 7 VARIATIONAL QUALITY CONTROL FAILS
+8 8 SOME PORTION OF WIND VECTOR CELL IS OVER LAND
+9 9 SOME PORTION OF WIND VECTOR CELL IS OVER ICE
+10 10 WIND RETRIEVAL NOT PERFORMED FOR WIND VECTOR CELL
+11 11 REPORTED WIND SPEED IS GREATER THAN 30 M/S
+12 12 REPORTED WIND SPEED IS LESS THAN OR EQUAL TO 3 M/S
+13 13 RAIN FLAG FOR THE WIND VECTOR CELL IS NOT USABLE
+14 14 RAIN FLAG ALGORITHM DETECTS RAIN
+15 15 NO METEOROLOGICAL BACKGROUND USED
+16 16 DATA ARE REDUNDANT
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/21158.table b/definitions/bufr/tables/0/wmo/8/codetables/21158.table
new file mode 100644
index 0000000..dd53c51
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/21158.table
@@ -0,0 +1,4 @@
+0 0 ACCEPTABLE
+1 1 NOT ACCEPTABLE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/21159.table b/definitions/bufr/tables/0/wmo/8/codetables/21159.table
new file mode 100644
index 0000000..1703f9b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/21159.table
@@ -0,0 +1,4 @@
+0 0 GOOD
+1 1 USABLE
+2 2 BAD
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/21169.table b/definitions/bufr/tables/0/wmo/8/codetables/21169.table
new file mode 100644
index 0000000..9b93444
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/21169.table
@@ -0,0 +1,4 @@
+0 0 NO ICE PRESENT
+1 1 ICE PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2119.table b/definitions/bufr/tables/0/wmo/8/codetables/2119.table
new file mode 100644
index 0000000..33ae089
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2119.table
@@ -0,0 +1,8 @@
+0 0 INTERMEDIATE FREQUENCY CALIBRATION MODE (IFCAL)
+1 1 BUILT-IN TEST EQUIPMENT DIGITAL (BITE DGT)
+2 2 BUILT-IN TEST EQUIPMENT RADIO FREQUENCY (BITE RF)
+3 3 PRESET TRACKING (PSET TRK)
+4 4 PRESET LOOP OUT
+5 5 ACQUISITION
+6 6 TRACKING
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2131.table b/definitions/bufr/tables/0/wmo/8/codetables/2131.table
new file mode 100644
index 0000000..f4336ef
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2131.table
@@ -0,0 +1 @@
+1 1 STC OPERATIONAL
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2143.table b/definitions/bufr/tables/0/wmo/8/codetables/2143.table
new file mode 100644
index 0000000..89bdc1b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2143.table
@@ -0,0 +1,21 @@
+0 0 RESERVED
+1 1 BREWER SPECTROPHOTOMETER
+2 2 CAVER TEICHERT
+3 3 DOBSON
+4 4 DOBSON (JAPAN)
+5 5 EHMET
+6 6 FECKER TELESCOPE
+7 7 HOELPER
+8 8 JODMETER
+9 9 FILTER OZONOMETER M-83
+10 10 MAST
+11 11 OXFORD
+12 12 PAETZOLD
+13 13 REGENER
+14 14 RESERVED FOR FUTURE USE
+15 15 VASSY FILTER OZONOMETER
+16 16 CARBON IODIDE
+17 17 SURFACE OZONE BUBLER
+18 18 FILTER OZONOMETER M-124
+19 19 ECC SONDE
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2144.table b/definitions/bufr/tables/0/wmo/8/codetables/2144.table
new file mode 100644
index 0000000..c245c49
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2144.table
@@ -0,0 +1,8 @@
+0 0 DIRECT SUN, ATTENUATOR #0
+1 1 DIRECT SUN, ATTENUATOR #1
+2 2 DIRECT SUN, ATTENUATOR #2
+3 3 FOCUSSED MOON
+4 4 FOCUSSED SUN
+5 5 FOCUSSED SUN CORRECTED WITH ADJACENT SKY MEASUREMENTS
+6 6 ZENITH SKY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2145.table b/definitions/bufr/tables/0/wmo/8/codetables/2145.table
new file mode 100644
index 0000000..63400b2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2145.table
@@ -0,0 +1,9 @@
+0 0 WAVELENGTH AD ORDINARY SETTING
+1 1 WAVELENGTH BD ORDINARY SETTING
+2 2 WAVELENGTH CD ORDINARY SETTING
+3 3 WAVELENGTH CC' ORDINARY SETTING
+4 4 WAVELENGTH AD FOCUSSING IMAGE
+5 5 WAVELENGTH BD FOCUSSING IMAGE
+6 6 WAVELENGTH CD FOCUSSING IMAGE
+7 7 WAVELENGTH CC' FOCUSSING IMAGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2146.table b/definitions/bufr/tables/0/wmo/8/codetables/2146.table
new file mode 100644
index 0000000..14655b9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2146.table
@@ -0,0 +1,11 @@
+0 0 ON DIRECT SUN
+1 1 ON DIRECT MOON
+2 2 ON BLUE ZENITH SKY
+3 3 ON ZENITH CLOUD (UNIFORM STRATIFIED LAYER OF SMALL OPACITY)
+4 4 ON ZENITH CLOUD (UNIFORM OR MODERATELY VARIABLE LAYER OF MED"    IUM OPACITY)
+5 5 ON ZENITH CLOUD (UNIFORM OR MODERATELY VARIABLE LAYER OF LAR"    GE OPACITY)
+6 6 ON ZENITH CLOUD (HIGHLY VARIABLE OPACITY, WITH OR WITOUT PRE"    CIPITATION)
+7 7 ON ZENITH CLOUD (FOG)
+8 8 ON ZENITH HAZE
+9 9 ON DIRECT SUN THROUGH THIN CLOUD, FOG OR HAZE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2148.table b/definitions/bufr/tables/0/wmo/8/codetables/2148.table
new file mode 100644
index 0000000..3e5d884
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2148.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 ARGOS
+2 2 GPS
+3 3 GOES DCP
+4 4 METEOSAT DCP
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2149.table b/definitions/bufr/tables/0/wmo/8/codetables/2149.table
new file mode 100644
index 0000000..7b179c6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2149.table
@@ -0,0 +1,22 @@
+0 0 UNSPECIFIED DRIFTING BUOY
+1 1 STANDARD LAGRANGIAN DRIFTER (GLOBAL DRIFTER PROGRAMME)
+2 2 STANDARD FGGE TYPE DRIFTING BUOY
+3 3 WIND MEASURING FGGE TYPE DRIFTING BUOY
+4 4 ICE FLOAT
+8 8 UNSPECIFIED SUB-SURFACE FLOAT
+9 9 SOFAR
+10 10 ALACE
+11 11 MARVOR
+12 12 RAFOS
+16 16 UNSPECIFIED MOORED BUOY
+17 17 NOMAD
+18 18 3-METRE DISCUS
+19 19 10-12-METRE DISCUS
+20 20 ODAS 30 SERIES
+21 21 ATLAS (E.G. TAO AREA)
+22 22 TRITON BUOY
+23 23 RESERVED
+24 24 OMNIDIRECTIONAL WAVERIDER
+25 25 DIRECTIONAL WAVERIDER
+26 26 SUB-SURFACE ARGO FLOAT
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2150.table b/definitions/bufr/tables/0/wmo/8/codetables/2150.table
new file mode 100644
index 0000000..b864835
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2150.table
@@ -0,0 +1,55 @@
+0 0 RESERVED
+1 1 HIRS 1
+2 2 HIRS 2
+3 3 HIRS 3
+4 4 HIRS 4
+5 5 HIRS 5
+6 6 HIRS 6
+7 7 HIRS 7
+8 8 HIRS 8
+9 9 HIRS 9
+10 10 HIRS 10
+11 11 HIRS 11
+12 12 HIRS 12
+13 13 HIRS 13
+14 14 HIRS 14
+15 15 HIRS 15
+16 16 HIRS 16
+17 17 HIRS 17
+18 18 HIRS 18
+19 19 HIRS 19
+20 20 HIRS 20
+21 21 MSU 1
+22 22 MSU 2
+23 23 MSU 3
+24 24 MSU 4
+25 25 SSU 1
+26 26 SSU 2
+27 27 SSU 3
+28 28 AMSU-A 1
+29 29 AMSU-A 2
+30 30 AMSU-A 3
+31 31 AMSU-A 4
+32 32 AMSU-A 5
+33 33 AMSU-A 6
+34 34 AMSU-A 7
+35 35 AMSU-A 8
+36 36 AMSU-A 9
+37 37 AMSU-A 10
+38 38 AMSU-A 11
+39 39 AMSU-A 12
+40 40 AMSU-A 13
+41 41 AMSU-A 14
+42 42 AMSU-A 15
+43 43 AMSU-B 1
+44 44 AMSU-B 2
+45 45 AMSU-B 3
+46 46 AMSU-B 4
+47 47 AMSU-B 5
+48 48 AVHRR 1
+49 49 AVHRR 2
+50 50 AVHRR 3A
+51 51 AVHRR 3B
+52 52 AVHRR 4
+53 53 AVHRR 5
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2151.table b/definitions/bufr/tables/0/wmo/8/codetables/2151.table
new file mode 100644
index 0000000..b1e62e6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2151.table
@@ -0,0 +1,9 @@
+0 0 HIRS
+1 1 MSU
+2 2 SSU
+3 3 AMSU-A1-1
+4 4 AMSU-A1-2
+5 5 AMSU-A2
+6 6 AMSU-B
+7 7 AVHRR
+2047 2047 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2152.table b/definitions/bufr/tables/0/wmo/8/codetables/2152.table
new file mode 100644
index 0000000..7c55d18
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2152.table
@@ -0,0 +1,11 @@
+1 1 HIGH-RESOLUTION INFRARED SOUNDER(HIRS)
+2 2 MICROWAVE SOUNDING UNIT (MSU)
+3 3 STRATOSPHERIC SOUNDING UNIT (SSU)
+4 4 AMI WIND MODE
+5 5 AMI WAVE MODE
+6 6 AMI IMAGE MODE
+7 7 RADAR ALTIMETER
+8 8 ATSR
+9 9 GEOSTATIONARY IMAGER
+10 10 GEOSTATIONARY SOUNDER
+11 11 GEOSTATIONARY EARTH RADIATION (GERB)
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2158.table b/definitions/bufr/tables/0/wmo/8/codetables/2158.table
new file mode 100644
index 0000000..97c4449
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2158.table
@@ -0,0 +1,8 @@
+1 1 MISMATCH IN RED VEC HPA
+2 2 MISMATCH IN RED VEC RFSS
+3 3 PTR CALIBRATION BAND 320 MHZ (KU)
+4 4 PTR CALIBRATION BAND 80 MHZ (KU)
+5 5 PTR CALIBRATION BAND 20 MHZ (KU)
+6 6 PTR CALIBRATION BAND 160 MHZ (S)
+7 7 KU FLIGHT CALIBRATION PARAMETERS AVAILABLE
+8 8 S FLIGHT CALIBRATION PARAMETERS AVAILABLE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2159.table b/definitions/bufr/tables/0/wmo/8/codetables/2159.table
new file mode 100644
index 0000000..d022cce
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2159.table
@@ -0,0 +1,5 @@
+1 1 TEMPERATURE INCONSISTENCY
+2 2 DATA IS MISSING
+3 3 REDUNDANCY CHANNEL
+4 4 POWER BUS PROTECTION
+5 5 OVERVOLTAGE/OVERLOAD PROTECTION
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2163.table b/definitions/bufr/tables/0/wmo/8/codetables/2163.table
new file mode 100644
index 0000000..4658f3d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2163.table
@@ -0,0 +1,15 @@
+0 0 AUTO EDITOR
+1 1 IRW HEIGHT ASSIGNMENT
+2 2 WV HEIGHT ASSIGNMENT
+3 3 H2O INTERCEPT HEIGHT ASSIGNMENT
+4 4 CO2 SLICING HEIGHT ASSIGNMENT
+5 5 LOW PIXEL MAX GRADIENT
+6 6 HIGHER PIXEL MAX GRADIENT
+7 7 PRIMARY HEIGHT ASSIGNMENT
+8 8 LAYER THICKNESS ASSIGNMENT
+9 9 CUMULATIVE CONTRIBUTION FUNCTION -10 PERCENT HEIGHT
+10 10 CUMULATIVE CONTRIBUTION FUNCTION -50 PERCENT HEIGHT
+11 11 CUMULATIVE CONTRIBUTION FUNCTION -90 PERCENT HEIGHT
+12 12 CUMULATIVE CONTRIBUTION FUNCTION - HEIGHT OF"    MAXIMUM GRADIENT
+14 14 COMPOSITE HEIGHT ASSIGNMENT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2164.table b/definitions/bufr/tables/0/wmo/8/codetables/2164.table
new file mode 100644
index 0000000..01dc970
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2164.table
@@ -0,0 +1,4 @@
+0 0 LP - NORMS LEAST SQUARE MINIMUM
+1 1 EN - EUCLIDEAN NORM WITH RADIANCE CORRELATION
+2 2 CC - CROSS CORRELATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2166.table b/definitions/bufr/tables/0/wmo/8/codetables/2166.table
new file mode 100644
index 0000000..efac38f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2166.table
@@ -0,0 +1,6 @@
+0 0 TYPE NOT DEFINED
+1 1 AUTOMATED STATISTICAL REGRESSION
+2 2 CLEAR PATH
+3 3 PARTLY CLOUDY PATH
+4 4 CLOUDY PATH
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2167.table b/definitions/bufr/tables/0/wmo/8/codetables/2167.table
new file mode 100644
index 0000000..bb0ad11
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2167.table
@@ -0,0 +1,4 @@
+0 0 METHOD NOT DEFINE
+1 1 1B RAW RADIANCE
+2 2 PROCESSED RADIANCE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2169.table b/definitions/bufr/tables/0/wmo/8/codetables/2169.table
new file mode 100644
index 0000000..6e70eb6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2169.table
@@ -0,0 +1,4 @@
+0 0 CUP ROTOR
+1 1 PROPELLER ROTOR
+2 2 WIND OBSERVATION THROUGH AMBIENT NOISE (WOTAN)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2172.table b/definitions/bufr/tables/0/wmo/8/codetables/2172.table
new file mode 100644
index 0000000..10b464d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2172.table
@@ -0,0 +1,3 @@
+1 1 RETRIEVAL FROM A NADIR SOUNDING
+2 2 RETRIEVAL FROM A LIMB SOUNDING
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2175.table b/definitions/bufr/tables/0/wmo/8/codetables/2175.table
new file mode 100644
index 0000000..e3df922
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2175.table
@@ -0,0 +1,9 @@
+0 0 MANUAL MEASUREMENT
+1 1 TIPPING BUCKET METHOD
+2 2 WEIGHING METHOD
+3 3 OPTICAL METHOD
+4 4 PRESSURE METHOD
+5 5 FLOAT METHOD
+6 6 DROP COUNTER METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2176.table b/definitions/bufr/tables/0/wmo/8/codetables/2176.table
new file mode 100644
index 0000000..a16cbc3
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2176.table
@@ -0,0 +1,6 @@
+0 0 MANUAL OBSERVATION
+1 1 VIDEO CAMERA METHOD
+2 2 INFRA-RED METHOD
+3 3 LASER METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2177.table b/definitions/bufr/tables/0/wmo/8/codetables/2177.table
new file mode 100644
index 0000000..b8492e5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2177.table
@@ -0,0 +1,5 @@
+0 0 MANUAL OBSERVATION
+1 1 ULTRASONIC METHOD
+2 2 VIDEO CAMERA METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2178.table b/definitions/bufr/tables/0/wmo/8/codetables/2178.table
new file mode 100644
index 0000000..8953eb7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2178.table
@@ -0,0 +1,5 @@
+0 0 MANUAL OBSERVATION
+1 1 OPTICAL METHOD
+2 2 CAPACITIVE METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2179.table b/definitions/bufr/tables/0/wmo/8/codetables/2179.table
new file mode 100644
index 0000000..a76b878
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2179.table
@@ -0,0 +1,6 @@
+0 0 MANUAL OBSERVATION
+1 1 VAISALA ALGORITHM
+2 2 ASOS (FAA) ALGORITHM
+3 3 AWOS (CANADA) ALGORITHM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2180.table b/definitions/bufr/tables/0/wmo/8/codetables/2180.table
new file mode 100644
index 0000000..f7ec83c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2180.table
@@ -0,0 +1,8 @@
+0 0 MANUAL OBSERVATION
+1 1 OPTICAL SCATTER SYSTEM COMBINED WITH PRECIPITATION"    OCCURRENCE SENSING SYSTEM
+2 2 FORWARD AND/OR BACK-SCATTER SYSTEM OF VISIBLE LIGHT
+3 3 FORWARD AND/OR BACK-SCATTER SYSTEM OF INFRARED LIGHT
+4 4 INFRARED LIGHT EMITTING DIODE (IRED) SYSTEM
+5 5 DOPPLER RADAR SYSTEM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2181.table b/definitions/bufr/tables/0/wmo/8/codetables/2181.table
new file mode 100644
index 0000000..8e6466b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2181.table
@@ -0,0 +1,5 @@
+1 1 RAIN DETECTOR
+2 2 FREEZING RAIN SENSOR
+3 3 ICE DETECTION SENSOR
+4 4 HAIL AND ICE PELLET SENSOR
+20 20 OTHER
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2182.table b/definitions/bufr/tables/0/wmo/8/codetables/2182.table
new file mode 100644
index 0000000..97ffc04
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2182.table
@@ -0,0 +1,7 @@
+0 0 MANUAL MEASUREMENT
+1 1 TRANSMISSOMETER SYSTEM (BASE > 25)
+2 2 TRANSMISSOMETER SYSTEM (BASE < 25 M)
+3 3 FORWARD SCATTER SYSTEM
+4 4 BACK SCATTER SYSTEM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2183.table b/definitions/bufr/tables/0/wmo/8/codetables/2183.table
new file mode 100644
index 0000000..943c327
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2183.table
@@ -0,0 +1,9 @@
+0 0 MANUAL OBSERVATION
+1 1 CEILOMETER SYSTEM
+2 2 INFRARED CAMERA SYSTEM
+3 3 MICROWAVE VISUAL CAMERA SYSTEM
+4 4 SKY IMAGER SYSTEM
+5 5 VIDEO TIME LAPSED CAMERA SYSTEM
+6 6 MICRO PULSE LIDAR (MPL) SYSTEM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2184.table b/definitions/bufr/tables/0/wmo/8/codetables/2184.table
new file mode 100644
index 0000000..5698dac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2184.table
@@ -0,0 +1,8 @@
+0 0 MANUAL OBSERVATION
+1 1 LIGHTNING IMAGING SENSOR
+2 2 ELECTRICAL STORM IDENTIFICATION SENSOR
+3 3 MAGNETIC FINDER SENSOR
+4 4 LIGHTNING STRIKE SENSOR
+5 5 FLASH COUNTER
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2185.table b/definitions/bufr/tables/0/wmo/8/codetables/2185.table
new file mode 100644
index 0000000..3253397
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2185.table
@@ -0,0 +1,7 @@
+0 0 MANUAL MEASUREMENT
+1 1 BALANCED FLOATING METHOD
+2 2 PRESSURE METHOD
+3 3 ULTRASONIC METHOD
+4 4 HYDRAULIC METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2186.table b/definitions/bufr/tables/0/wmo/8/codetables/2186.table
new file mode 100644
index 0000000..05e1a36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2186.table
@@ -0,0 +1,23 @@
+1 1 PRECIPITATION-UNKNOWN TYPE
+2 2 LIQUID PRECIPITATION NOT FREEZING
+3 3 LIQUID FREEZING PRECIPITATION
+4 4 DRIZZLE
+5 5 RAIN
+6 6 SOLID PRECIPITATION
+7 7 SNOW
+8 8 SNOW GRAINS
+9 9 SNOW PELLETS
+10 10 ICE PELLETS
+11 11 ICE CRYSTALS
+12 12 DIAMOND DUST
+13 13 SMALL HAIL
+14 14 HAIL
+15 15 GLAZE
+16 16 RIME
+17 17 SOFT RIME
+18 18 HARD RIME
+19 19 CLEAR ICE
+20 20 WET SNOW
+21 21 HOAR FROST
+22 22 DEW
+23 23 WHITE DEW
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2187.table b/definitions/bufr/tables/0/wmo/8/codetables/2187.table
new file mode 100644
index 0000000..def3d2f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2187.table
@@ -0,0 +1,11 @@
+1 1 DUST/SAND WHIRL
+2 2 SQUALLS
+3 3 SAND STORM
+4 4 DUST STORM
+5 5 LIGHTNING - CLOUD TO SURFACE
+6 6 LIGHTNING - CLOUD TO CLOUD
+7 7 LIGHTNING - DISTANT
+8 8 THUNDERSTORM
+9 9 FUNNEL CLOUD NOT TOUCHING SURFACE
+10 10 FUNNEL CLOUD TOUCHING SURFACE
+11 11 SPRAY
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2188.table b/definitions/bufr/tables/0/wmo/8/codetables/2188.table
new file mode 100644
index 0000000..bb8114c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2188.table
@@ -0,0 +1,10 @@
+1 1 FOG
+2 2 ICE FOG
+3 3 STEAM FOG
+7 7 MIST
+8 8 HAZE
+9 9 SMOKE
+10 10 VOLCANIC ASH
+11 11 DUST
+12 12 SAND
+13 13 SNOW
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/2189.table b/definitions/bufr/tables/0/wmo/8/codetables/2189.table
new file mode 100644
index 0000000..710032d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/2189.table
@@ -0,0 +1,4 @@
+1 1 MANUAL OBSERVATION
+2 2 ALL LIGHTNING STRIKES WITHOUT DISCRIMINATION
+3 3 LIGHTNING STRIKES CLOUD TO GROUND ONLY
+4 4 ALL LIGHTNING STRIKES WITH DISCRIMINATION BETWEEN"    CLOUD TO GROUND AND CLOUD TO CLOUD
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/22056.table b/definitions/bufr/tables/0/wmo/8/codetables/22056.table
new file mode 100644
index 0000000..28ddbf4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/22056.table
@@ -0,0 +1,4 @@
+0 0 UPWARDS PROFILE
+1 1 DOWNWARDS PROFILE
+2 2 HORIZONTAL
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/22060.table b/definitions/bufr/tables/0/wmo/8/codetables/22060.table
new file mode 100644
index 0000000..b73ad32
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/22060.table
@@ -0,0 +1,4 @@
+0 0 DROGUE IS DETACHED
+1 1 DROGUE IS ATTACHED
+2 2 DROGUE STATUS UNKNOWN
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/22061.table b/definitions/bufr/tables/0/wmo/8/codetables/22061.table
new file mode 100644
index 0000000..de55e38
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/22061.table
@@ -0,0 +1,11 @@
+0 0 CALM (GLASSY)            HEIGHT     0            M
+1 1 CALM (RIPPLED)           HEIGHT     0     - 0.1  M
+2 2 SMOOTH (WAVELETS)        HEIGHT     0.1   - 0.5  M
+3 3 SLIGHT                   HEIGHT     0.5   - 1.5  M
+4 4 MODERATE                 HEIGHT     1.25  - 2.5  M
+5 5 ROUGH                    HEIGHT     2.5   - 4    M
+6 6 VERY ROUGH               HEIGHT     4     - 6    M
+7 7 HIGH                     HEIGHT     6     - 9    M
+8 8 VERY HIGH                HEIGHT     9     -14    M
+9 9 PHENOMANAL               HEIGHT     OVER   14    M
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/22067.table b/definitions/bufr/tables/0/wmo/8/codetables/22067.table
new file mode 100644
index 0000000..1728310
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/22067.table
@@ -0,0 +1 @@
+0 0 SEE COMMON CODE TABLE C3
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/22068.table b/definitions/bufr/tables/0/wmo/8/codetables/22068.table
new file mode 100644
index 0000000..c11d658
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/22068.table
@@ -0,0 +1 @@
+0 0 SEE COMMON CODE TABLE C4
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/22120.table b/definitions/bufr/tables/0/wmo/8/codetables/22120.table
new file mode 100644
index 0000000..c485b9f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/22120.table
@@ -0,0 +1,13 @@
+0 0 GOOD DATA
+1 1 MAXIMUM (HIGH) WATER LEVEL LIMIT EXCEEDED
+2 2 MINIMUM (LOW) WATER LEVEL LIMIT EXCEEDED
+3 3 RATE OF CHANGE LIMIT FOR WATER LEVEL EXCEEDED
+4 4 FLAT LIMIT FOR WATER LEVEL EXCEEDED
+5 5 OBSERVED MINUS PREDICTED WATER LEVEL VALUE LIMIT EXCEEDED
+6 6 OBSERVED VALUE FROM PRIMARY WATER LEVEL SENSOR MINUS"    BACKUP WATER LEVEL SENSOR
+7 7 VALUE EXCEEDED SPECIFIED TOLERANCE FROM EXPECTED VALUE
+8 8 WATER LEVEL QA PARAMETER (SIGMAS AND/OR OUTLIERS) LIMITS EXC"    EEDED
+9 9 SEA TEMPERATURE OUTSIDE OF EXPECTED RANGE
+10 10 MULTIPLE QC CHECKS (ABOVE) FAILED
+11 11 NO AUTOMATED WATER LEVEL CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/22121.table b/definitions/bufr/tables/0/wmo/8/codetables/22121.table
new file mode 100644
index 0000000..4e4d870
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/22121.table
@@ -0,0 +1,9 @@
+0 0 OPERATIONAL
+1 1 POSSIBLE CLOGGING PROBLEM OR OTHERWISE DEGRADED WATE LEVEL D"    ATA
+2 2 POSSIBLE DATUM SHIFT
+3 3 UNKNOWN STATUS OF WATER LEVEL SENSOR
+4 4 SUSPECTED OR KNOWN SEA TEMPERATURE SENSOR PROBLEM
+5 5 MULTIPLE POSSIBLE PROBLEMS (ABOVE)
+6 6 BAD DATA- DO NOT DISSEMINATE
+7 7 NO MANUAL WATER LEVEL CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/22122.table b/definitions/bufr/tables/0/wmo/8/codetables/22122.table
new file mode 100644
index 0000000..1a5fe36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/22122.table
@@ -0,0 +1,8 @@
+0 0 GOOD DATA FROM ALL SENSORS
+1 1 WIND DIRECTION OUTSIDE OF ALLOWABLE RANGE
+2 2 WIND SPEED OUTSIDE OF EXPECTED RANGE
+3 3 BAROMETRIC PRESSURE OUTSIDE OF EXPECTED RANGE
+4 4 AIR TEMPERATURE OUTSIDE OF EXPECTED RANGE
+5 5 MULTIPLE SENSOR FAILED QC CHECKS
+6 6 NO AUTOMATED METEOROLOGICAL DATA CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/22123.table b/definitions/bufr/tables/0/wmo/8/codetables/22123.table
new file mode 100644
index 0000000..62b0186
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/22123.table
@@ -0,0 +1,9 @@
+0 0 OPERATIONAL
+1 1 SUSPECTED OR KNOWN PROBLEM WITH WIND SENSOR
+2 2 SUSPECTED OR KNOWN PROBLEM WITH BAROMETRIC PRESSURE SENSOR
+3 3 SUSPECTED OR KNOWN PROBLEM WITH AIR TEMPERATURE SENSOR
+4 4 UNKNOWN STATUS OF ALL SENSORS
+5 5 SUSPECTED OR KNOWN PROBLEMS WITH MULTIPLE SENSORS
+6 6 BAD DATA - DO NOT DISSEMINATE
+7 7 NO MANUAL METEOROLOGICAL DATA CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/23001.table b/definitions/bufr/tables/0/wmo/8/codetables/23001.table
new file mode 100644
index 0000000..92ac5de
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/23001.table
@@ -0,0 +1,5 @@
+0 0 RESERVED
+1 1 ARTICLES 1 AND 2
+2 2 ARTICLE 3
+3 3 ARTICLE 5.2
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/23002.table b/definitions/bufr/tables/0/wmo/8/codetables/23002.table
new file mode 100644
index 0000000..5070901
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/23002.table
@@ -0,0 +1,16 @@
+0 0 RESERVED
+1 1 NUCLEAR REACTOR ON GROUND
+2 2 NUCLEAR REACTOR ON SEA
+3 3 NUCLEAR REACTOR IN SPACE
+4 4 NUCLEAR FULE FACILITY
+5 5 RADIOACTIVE WASTE MANAGMENT FACITILY
+6 6 TRANSPORT OF NUCLEAR FUEL OR RADIOACTIVE WASTE
+7 7 STORAGE OF NUCLEAR FUEL OR RADIOACTIVE WASTE
+8 8 MANUFACTURE OF RADIO-ISOTOPES
+9 9 USE OF RADIO-ISOTOPES
+10 10 STORAGE OF RADIO-ISOTOPES
+11 11 DISPOSAL OF RADIO-ISOTOPS
+12 12 TRANSPORT OF RADIO-ISOTOPES
+13 13 USE OF RADIO-ISOTOPES FOR POWER GENERATION
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/23003.table b/definitions/bufr/tables/0/wmo/8/codetables/23003.table
new file mode 100644
index 0000000..e3e891f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/23003.table
@@ -0,0 +1,8 @@
+0 0 NO RELEASE
+1 1 RELEASE TO ATMOSPHERE
+2 2 RELEASE TO WATER
+3 3 RELEASE TO BOTH ATMOSPHERE AND WATER
+4 4 EXPECTED RELEASE TO ATMOSPHERE
+5 5 EXPECTED RELEASE TO WATER
+6 6 EXPECTED RELEASE TO BOTH ATMOSPHERE AND WATER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/23004.table b/definitions/bufr/tables/0/wmo/8/codetables/23004.table
new file mode 100644
index 0000000..804d1e1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/23004.table
@@ -0,0 +1,6 @@
+0 0 NO COUNTERMEASURE
+1 1 EVACUATION
+2 2 SHELTERING
+3 3 PROPHILAXIS
+4 4 WATER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/23005.table b/definitions/bufr/tables/0/wmo/8/codetables/23005.table
new file mode 100644
index 0000000..e22eb99
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/23005.table
@@ -0,0 +1,4 @@
+0 0 INCIDENT STAT DOES NOT UNDERSTAND WHAT HAPPENED
+1 1 INCIDENT STATE KNOWS THE CAUSE OF THE INCIDENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/23006.table b/definitions/bufr/tables/0/wmo/8/codetables/23006.table
new file mode 100644
index 0000000..fe7706a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/23006.table
@@ -0,0 +1,8 @@
+0 0 NO IMPROVEMENT
+1 1 UNSTABLE
+2 2 NO DETERIORATION
+3 3 IMPROVING
+4 4 STABLE
+5 5 DETERIORATING
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/23007.table b/definitions/bufr/tables/0/wmo/8/codetables/23007.table
new file mode 100644
index 0000000..59fc043
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/23007.table
@@ -0,0 +1,5 @@
+0 0 NO RELEASE
+1 1 RELEASE HAS STOPPED
+2 2 RELEASE
+3 3 RELEASE IS CONTINUING
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/23008.table b/definitions/bufr/tables/0/wmo/8/codetables/23008.table
new file mode 100644
index 0000000..b20991c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/23008.table
@@ -0,0 +1,4 @@
+0 0 GASEUS
+1 1 PARTICULATE
+2 2 MIXTURE OF GASEUS AND PARTICULATE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/23009.table b/definitions/bufr/tables/0/wmo/8/codetables/23009.table
new file mode 100644
index 0000000..b20991c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/23009.table
@@ -0,0 +1,4 @@
+0 0 GASEUS
+1 1 PARTICULATE
+2 2 MIXTURE OF GASEUS AND PARTICULATE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/23016.table b/definitions/bufr/tables/0/wmo/8/codetables/23016.table
new file mode 100644
index 0000000..57425e9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/23016.table
@@ -0,0 +1,4 @@
+0 0 NO SIGNIFICANT TOXIC HEALTH EFFECT
+1 1 SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT POSSIBLE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/23018.table b/definitions/bufr/tables/0/wmo/8/codetables/23018.table
new file mode 100644
index 0000000..ccdcc45
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/23018.table
@@ -0,0 +1,6 @@
+0 0 RELEASE NO LONGER OCCURRING
+1 1 RELEASE STILL OCCURRING
+2 2 RELEASE EXPECTED TO INCREASE IN NEXT SIX HOURS
+3 3 RELEASE EXPECTED TO REMAIN CONSTANT IN NEXT SIX HOURS
+4 4 RELEASE EXPECTED TO DECREASE IN NEXT SIX HOURS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/23031.table b/definitions/bufr/tables/0/wmo/8/codetables/23031.table
new file mode 100644
index 0000000..cf20e26
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/23031.table
@@ -0,0 +1,4 @@
+0 0 PLUME WILL NOT ENCOUNTER RAIN IN INCIDENT STATE
+1 1 PLUME WILL ENCOUNTER RAIN IN INCIDENT STATE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/23032.table b/definitions/bufr/tables/0/wmo/8/codetables/23032.table
new file mode 100644
index 0000000..18dea38
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/23032.table
@@ -0,0 +1,4 @@
+0 0 NO SIGNIFICANT CHANGE EXPECTED WITHIN NEXT SIX HOURS
+1 1 ANTICIPATED SIGNIFICANT CHANGE EXPECTED WITHIN NEXT SIX HOUR"    S
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/24003.table b/definitions/bufr/tables/0/wmo/8/codetables/24003.table
new file mode 100644
index 0000000..de7cf4e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/24003.table
@@ -0,0 +1,5 @@
+0 0 NOBLE GASES
+1 1 IODINES
+2 2 CAESIUM
+3 3 TRANSURANICS
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25004.table b/definitions/bufr/tables/0/wmo/8/codetables/25004.table
new file mode 100644
index 0000000..dfe4517
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25004.table
@@ -0,0 +1,4 @@
+0 0 INCOHERENT
+1 1 COHERENT (DOPPLER)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25005.table b/definitions/bufr/tables/0/wmo/8/codetables/25005.table
new file mode 100644
index 0000000..54954d6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25005.table
@@ -0,0 +1,4 @@
+0 0 LOGATITHM - 2.5 DB
+1 1 LINEAR
+2 2 SPECIAL
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25006.table b/definitions/bufr/tables/0/wmo/8/codetables/25006.table
new file mode 100644
index 0000000..35a61ac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25006.table
@@ -0,0 +1,5 @@
+0 0 ZH TO R CONVERSION
+1 1 (ZH, ZDR) TO (NO.DO) TO R
+2 2 (Z(F1),Z(F2)) TO ATTENUATION TO R
+6 6 OTHER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25009.table b/definitions/bufr/tables/0/wmo/8/codetables/25009.table
new file mode 100644
index 0000000..927847b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25009.table
@@ -0,0 +1,4 @@
+1 1 NONE
+2 2 CALIBRATION TARGET OR SIGNAL
+3 3 AGAINST RAINGAGES
+4 4 AGAINST OTHER INSTRUMENTS (DISTROMETER-ATTENUATION)
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25010.table b/definitions/bufr/tables/0/wmo/8/codetables/25010.table
new file mode 100644
index 0000000..70854d8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25010.table
@@ -0,0 +1,8 @@
+0 0 NONE
+1 1 MAP
+2 2 INSERTION OF HIGHER ELEVATION DATA AND MAP
+3 3 ANALYSIS OF FLUCTUATING LOGARITHM SIGNAL (CLUTTER DETECTION)
+4 4 EXTRACTION OF FLUCTUATING PART OF LINEAR SIGNAL (CLUTTER SUP"    PRESSION)
+5 5 CLUTTER SUPPRESSION DOPPLER
+6 6 MULTIPARAMETER ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25011.table b/definitions/bufr/tables/0/wmo/8/codetables/25011.table
new file mode 100644
index 0000000..f739498
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25011.table
@@ -0,0 +1,4 @@
+0 0 NONE
+1 1 MAP OF CORRECTION FACTORS
+2 2 INTERPOLATION (AZIMUTH OR ELEVATION)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25012.table b/definitions/bufr/tables/0/wmo/8/codetables/25012.table
new file mode 100644
index 0000000..c869a4a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25012.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE
+1 1 SOFTWARE
+2 2 HARDWARE AND SOFTWARE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25013.table b/definitions/bufr/tables/0/wmo/8/codetables/25013.table
new file mode 100644
index 0000000..4c13814
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25013.table
@@ -0,0 +1 @@
+1 1 BRIGHT BAND CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25015.table b/definitions/bufr/tables/0/wmo/8/codetables/25015.table
new file mode 100644
index 0000000..043e587
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25015.table
@@ -0,0 +1 @@
+1 1 RADOME ATTENUATION CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25017.table b/definitions/bufr/tables/0/wmo/8/codetables/25017.table
new file mode 100644
index 0000000..ed48487
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25017.table
@@ -0,0 +1 @@
+1 1 PRECIPITATION ATTENUATION CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25020.table b/definitions/bufr/tables/0/wmo/8/codetables/25020.table
new file mode 100644
index 0000000..ba9b528
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25020.table
@@ -0,0 +1,4 @@
+0 0 FTT (FAST FOURIER TRANSFORM
+1 1 PPP (PULSE PAIR PROCESSING
+2 2 VPC (VECTOR-PHASE CHANGE)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25021.table b/definitions/bufr/tables/0/wmo/8/codetables/25021.table
new file mode 100644
index 0000000..314716b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25021.table
@@ -0,0 +1,5 @@
+1 1 SIMPLE AVERAGE
+2 2 CONSENSUS AVERAGE
+3 3 MEDIAN CHECK
+4 4 VERTICAL CONSISTENCY CHECK
+5 5 OTHER
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25030.table b/definitions/bufr/tables/0/wmo/8/codetables/25030.table
new file mode 100644
index 0000000..aa78900
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25030.table
@@ -0,0 +1,4 @@
+0 0 RUNNING MEAN SEA-SURFACE TEMPERATURE NOT USED BECAUSE USAGE"     CRITERIA NOT MET
+1 1 RUNNING MEAN SEA-SURFACE TEMPERATURE NOT USED BECAUSE DATA N"    OT AVAILABLE
+2 2 RUNNING MEAN SEA-SURFACE TEMPERATURE USED AS PREDICTOR
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25032.table b/definitions/bufr/tables/0/wmo/8/codetables/25032.table
new file mode 100644
index 0000000..9b894f4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25032.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 DATA FROM LOW MODE
+2 2 DATA FROM HIGH MODE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25033.table b/definitions/bufr/tables/0/wmo/8/codetables/25033.table
new file mode 100644
index 0000000..e7141c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25033.table
@@ -0,0 +1,4 @@
+0 0 WIND PROFILER OPERATING IN SUBMODE A
+1 1 WIND PROFILER OPERATING IN SUBMODE B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25034.table b/definitions/bufr/tables/0/wmo/8/codetables/25034.table
new file mode 100644
index 0000000..473338a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25034.table
@@ -0,0 +1,3 @@
+1 1 TEST A PERFORMED AND FAILED
+2 2 TEST B PERFORMED AND FAILED
+3 3 TEST RESULTS INCONCLUSIVE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25036.table b/definitions/bufr/tables/0/wmo/8/codetables/25036.table
new file mode 100644
index 0000000..d71ffd1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25036.table
@@ -0,0 +1,4 @@
+0 0 NETWORK OF SEVERAL DIRECTION-FINDERS OPERATING ON"     THE SAME INDIVIDUAL ATMOSPHERICS
+1 1 NETWORK OF SEVERAL ARRIVAL-TIME STATIONS OPERATING ON"     THE SAME INDIVIDUAL ATMOSPHERICS
+6 6 SINGLE STATION RANGE BEARING TECHNIQUE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25040.table b/definitions/bufr/tables/0/wmo/8/codetables/25040.table
new file mode 100644
index 0000000..648a71b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25040.table
@@ -0,0 +1,10 @@
+0 0 NON-SPECIFIC MODE
+1 1 FIRST GUESS DATA
+2 2 CLOUD DATA
+3 3 AVERAGE VECTOR DATA
+4 4 PRIMARY DATA
+5 5 GUESS DATA
+6 6 VECTOR DATA
+7 7 TRACER DATA; THE IMAGE
+8 8 TRACER DATA TO NEXT IMAGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25041.table b/definitions/bufr/tables/0/wmo/8/codetables/25041.table
new file mode 100644
index 0000000..f388da0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25041.table
@@ -0,0 +1,4 @@
+0 0 DIRECTION ORIGINALLY REPORTED IN TRUE DEGREES
+1 1 DIRECTION ORIGINALLY REPORTED USING CODE TABLE 0700, FM 13
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25042.table b/definitions/bufr/tables/0/wmo/8/codetables/25042.table
new file mode 100644
index 0000000..314f464
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25042.table
@@ -0,0 +1,4 @@
+0 0 SPEED ORIGINALLY REPORTED IN METERS PER SECOND
+1 1 SPEED ORIGINALLY REPORTED USING CODE TABLE 2251, FM 13
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25045.table b/definitions/bufr/tables/0/wmo/8/codetables/25045.table
new file mode 100644
index 0000000..6a26361
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25045.table
@@ -0,0 +1,20 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
+6 6 CHANNEL  6 PRESENT - (SET TO 1 PRESENT)
+7 7 CHANNEL  7 PRESENT - (SET TO 1 PRESENT)
+8 8 CHANNEL  8 PRESENT - (SET TO 1 PRESENT)
+9 9 CHANNEL  9 PRESENT - (SET TO 1 PRESENT)
+10 10 CHANNEL 10 PRESENT - (SET TO 1 PRESENT)
+11 11 CHANNEL 11 PRESENT - (SET TO 1 PRESENT)
+12 12 CHANNEL 12 PRESENT - (SET TO 1 PRESENT)
+13 13 CHANNEL 13 PRESENT - (SET TO 1 PRESENT)
+14 14 CHANNEL 14 PRESENT - (SET TO 1 PRESENT)
+15 15 CHANNEL 15 PRESENT - (SET TO 1 PRESENT)
+16 16 CHANNEL 16 PRESENT - (SET TO 1 PRESENT)
+17 17 CHANNEL 17 PRESENT - (SET TO 1 PRESENT)
+18 18 CHANNEL 18 PRESENT - (SET TO 1 PRESENT)
+19 19 CHANNEL 19 PRESENT - (SET TO 1 PRESENT)
+20 20 CHANNEL 20 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25046.table b/definitions/bufr/tables/0/wmo/8/codetables/25046.table
new file mode 100644
index 0000000..0cda73b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25046.table
@@ -0,0 +1,4 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25047.table b/definitions/bufr/tables/0/wmo/8/codetables/25047.table
new file mode 100644
index 0000000..ad6fa18
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25047.table
@@ -0,0 +1,3 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25048.table b/definitions/bufr/tables/0/wmo/8/codetables/25048.table
new file mode 100644
index 0000000..a628567
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25048.table
@@ -0,0 +1,15 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
+6 6 CHANNEL  6 PRESENT - (SET TO 1 PRESENT)
+7 7 CHANNEL  7 PRESENT - (SET TO 1 PRESENT)
+8 8 CHANNEL  8 PRESENT - (SET TO 1 PRESENT)
+9 9 CHANNEL  9 PRESENT - (SET TO 1 PRESENT)
+10 10 CHANNEL 10 PRESENT - (SET TO 1 PRESENT)
+11 11 CHANNEL 11 PRESENT - (SET TO 1 PRESENT)
+12 12 CHANNEL 12 PRESENT - (SET TO 1 PRESENT)
+13 13 CHANNEL 13 PRESENT - (SET TO 1 PRESENT)
+14 14 CHANNEL 14 PRESENT - (SET TO 1 PRESENT)
+15 15 CHANNEL 15 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25049.table b/definitions/bufr/tables/0/wmo/8/codetables/25049.table
new file mode 100644
index 0000000..db2a09c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25049.table
@@ -0,0 +1,5 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25051.table b/definitions/bufr/tables/0/wmo/8/codetables/25051.table
new file mode 100644
index 0000000..3b3fbde
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25051.table
@@ -0,0 +1,6 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
+6 6 CHANNEL  6 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25053.table b/definitions/bufr/tables/0/wmo/8/codetables/25053.table
new file mode 100644
index 0000000..af34138
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25053.table
@@ -0,0 +1,6 @@
+1 1 GOOD
+2 2 REDUNDANT
+3 3 QUESTIONABLE
+4 4 BAD
+5 5 EXPERIMENTAL
+6 6 PRECIPITATING
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25069.table b/definitions/bufr/tables/0/wmo/8/codetables/25069.table
new file mode 100644
index 0000000..e627613
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25069.table
@@ -0,0 +1,7 @@
+1 1 SMOOTHED
+2 2 BASELINE ADJUSTED
+3 3 NORMALIZED TIME INTERVAL
+4 4 OUTLIER CHECKED
+5 5 PLAUSIBILITY CHECKED
+6 6 CONSISTENCY CHECKED
+7 7 INTERPOLATED
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25086.table b/definitions/bufr/tables/0/wmo/8/codetables/25086.table
new file mode 100644
index 0000000..294fa69
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25086.table
@@ -0,0 +1,4 @@
+0 0 DEPTHS ARE NOT CORRECTED
+1 1 DEPTHS ARE CORRECTED
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25093.table b/definitions/bufr/tables/0/wmo/8/codetables/25093.table
new file mode 100644
index 0000000..e547e6c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25093.table
@@ -0,0 +1,3 @@
+1 1 NO CORRECTION
+2 2 VERTICAL VELOCITY CORRECTION
+7 7 ALL CORRECTIONS
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25095.table b/definitions/bufr/tables/0/wmo/8/codetables/25095.table
new file mode 100644
index 0000000..a303e57
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25095.table
@@ -0,0 +1 @@
+1 1 ALTIMETER OPERATING (SET TO 0 IF NOMINAL, SET TO"     BACKUP)
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25096.table b/definitions/bufr/tables/0/wmo/8/codetables/25096.table
new file mode 100644
index 0000000..dcffa91
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25096.table
@@ -0,0 +1,4 @@
+1 1 MODE INDICATOR (0 IF MODE 2, 1 IF MODE 1)
+2 2 MODE 1 CALIBRATION SEQUENCE INDICATOR (0 IF NORMAL DATA TAKI"    NG EITHER MODE 1 OR 2, 1 IF MODE 1 CALIBRATION SEQUENCE) BIT"    S 3 AND 4 INDICATE A
+3 3 CHANNEL 2 (0 IF ON, 1 IF OFF)
+4 4 CHANNEL 3 (0 IF ON, 1 IF OFF)
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25097.table b/definitions/bufr/tables/0/wmo/8/codetables/25097.table
new file mode 100644
index 0000000..d4e1e46
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25097.table
@@ -0,0 +1,11 @@
+0 0 RANGES BETWEEN 0 AND 30 CM
+1 1 RANGES BETWEEN 30 AND 60 CM
+2 2 RANGES BETWEEN 60 AND 90 CM
+3 3 RANGES BETWEEN 90 AND 120 CM
+4 4 RANGES BETWEEN 120 AND 150 CM
+5 5 RANGES BETWEEN 150 AND 180 CM
+6 6 RANGES BETWEEN 180 AND 210 CM
+7 7 RANGES BETWEEN 210 AND 240 CM
+8 8 RANGES BETWEEN 240 AND 270 CM
+9 9 RANGES LARGER THAN 270 CM
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25098.table b/definitions/bufr/tables/0/wmo/8/codetables/25098.table
new file mode 100644
index 0000000..b49bdb5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25098.table
@@ -0,0 +1,8 @@
+1 1 KU BAND RANGE
+2 2 C BAND RANGE
+3 3 KU BAND SWH
+4 4 C BAND SWH
+5 5 KU BAND SCATTEROMETER COEFFICIENT
+6 6 C BAND SCATTEROMETER COEFFICIENT
+7 7 OFF NADIR ANGLE FROM KU BAND WVEFORM PARAMETERS
+8 8 OFF NADIR FROM PLATFORM
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25099.table b/definitions/bufr/tables/0/wmo/8/codetables/25099.table
new file mode 100644
index 0000000..c6cabcd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25099.table
@@ -0,0 +1,6 @@
+1 1 KU BAND RANGE INSTRUMENTAL CORRECTION
+2 2 C BAND RANGE INSTRUMENTAL CORRECTION
+3 3 KU BAND SWH INSTRUMENTAL CORRECTION
+4 4 C BAND SWH INSTRUMENTAL CORRECTION
+5 5 KU BAND SCATTEROMETER COEFFICIENT INSTRUMENTAL CORRECTION
+6 6 C BAND SCATTEROMETER COEFFICIENT INSTRUMENTAL CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25110.table b/definitions/bufr/tables/0/wmo/8/codetables/25110.table
new file mode 100644
index 0000000..c53002c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25110.table
@@ -0,0 +1,6 @@
+1 1 RAW DATA ANALYSIS USED FOR RAW DATA CORRECTION."    CORRECTION DONE USING DEFAULT PARAMETERS
+2 2 RAW DATA ANALYSIS USED FOR RAW DATA CORRECTION."    CORRECTION DONE USING RAW DATA ANALYSIS RESULTS
+3 3 ANTENNA ELEVATION PATTERN CORRECTION APPLIED
+4 4 NOMINAL CHIRP REPLICA USED
+5 5 RECONSTRUCTED CHIRP USED
+6 6 SLANT RANGE TO GROUND RANGE CONVERSION APPLIED
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25120.table b/definitions/bufr/tables/0/wmo/8/codetables/25120.table
new file mode 100644
index 0000000..026f109
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25120.table
@@ -0,0 +1,4 @@
+0 0 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"     2 PROCESSING IS GREATER THAN THE ACCEPTABLE THRESHOLD
+1 1 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"    2 PROCESSING IS LESS THAN THE ACCEPTABLE THRESHOLD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25122.table b/definitions/bufr/tables/0/wmo/8/codetables/25122.table
new file mode 100644
index 0000000..1085ef9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25122.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE CONFIGURATION FOR RF IS A
+1 1 HARDWARE CONFIGURATION FOR RF IS B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25123.table b/definitions/bufr/tables/0/wmo/8/codetables/25123.table
new file mode 100644
index 0000000..70f0670
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25123.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE CONFIGURATION FOR HPA IS A
+1 1 HARDWARE CONFIGURATION FOR HPA IS B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/25124.table b/definitions/bufr/tables/0/wmo/8/codetables/25124.table
new file mode 100644
index 0000000..e611ac0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/25124.table
@@ -0,0 +1,4 @@
+0 0 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"    2 PROCESSING IS GREATER THAN THE ACCEPTABLE THRESHOLD
+1 1 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"    2 PROCESSING IS LESS THAN THE ACCEPTABLE THRESHOLD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/26010.table b/definitions/bufr/tables/0/wmo/8/codetables/26010.table
new file mode 100644
index 0000000..f825040
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/26010.table
@@ -0,0 +1,25 @@
+1 1 0100 INCLUDED
+2 2 0200 INCLUDED
+3 3 0300 INCLUDED
+4 4 0400 INCLUDED
+5 5 0500 INCLUDED
+6 6 0600 INCLUDED
+7 7 0700 INCLUDED
+8 8 0800 INCLUDED
+9 9 0900 INCLUDED
+10 10 1000 INCLUDED
+11 11 1100 INCLUDED
+12 12 1200 INCLUDED
+13 13 1300 INCLUDED
+14 14 1400 INCLUDED
+15 15 1500 INCLUDED
+16 16 1600 INCLUDED
+17 17 1700 INCLUDED
+18 18 1800 INCLUDED
+19 19 1900 INCLUDED
+20 20 2000 INCLUDED
+21 21 2100 INCLUDED
+22 22 2200 INCLUDED
+23 23 2300 INCLUDED
+24 24 2400 INCLUDED
+25 25 UNKNOWN MIXTURE OF HOURS
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/29001.table b/definitions/bufr/tables/0/wmo/8/codetables/29001.table
new file mode 100644
index 0000000..beff485
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/29001.table
@@ -0,0 +1,6 @@
+0 0 GNOMONIC PROJECTION
+1 1 POLAR STEREOGRAPHIC PROJECTION
+2 2 LAMBERT'S CONFORMAL CONIC PROJECTION
+3 3 MERCATOR'S PROJECTION
+4 4 SCANNING CONE (RADAR)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/29002.table b/definitions/bufr/tables/0/wmo/8/codetables/29002.table
new file mode 100644
index 0000000..1d7efd0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/29002.table
@@ -0,0 +1,4 @@
+0 0 CARTESIAN
+1 1 POLAR
+2 2 OTHER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/30031.table b/definitions/bufr/tables/0/wmo/8/codetables/30031.table
new file mode 100644
index 0000000..12ddc7c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/30031.table
@@ -0,0 +1,13 @@
+0 0 PPI
+1 1 COMPOSITE
+2 2 CAPPI
+3 3 VERTICAL SECTION
+4 4 ALPHANUMERIC DATA
+5 5 MAP OF SUBJECT CLUTTER
+6 6 MAP
+7 7 TEST PICTURE
+8 8 COMMENTS
+9 9 MAP OF GROUND OCCULTATION
+10 10 MAP OF RADAR BEAM HEIGHT
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/30032.table b/definitions/bufr/tables/0/wmo/8/codetables/30032.table
new file mode 100644
index 0000000..942cb5d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/30032.table
@@ -0,0 +1,9 @@
+1 1 MAP
+2 2 SATELLITE IR
+3 3 SATELLITE VIS
+4 4 SATELLITE WV
+5 5 SATELLITE MULTISPECTRAL
+6 6 SYNOPTIC OBSERVATIONS
+7 7 FORECAST PARAMETERS
+8 8 LIGHTNING DATA
+15 15 OTHER DATA
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/31021.table b/definitions/bufr/tables/0/wmo/8/codetables/31021.table
new file mode 100644
index 0000000..de8d5a6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/31021.table
@@ -0,0 +1,4 @@
+1 1 1 BIT INDICATOR OF QUALITY, 0= GOOD; 1=SUSPECT OR BAD
+2 2 2 BIT INDICATOR OF QUALITY, 0= GOOD; 1= SLIGHTLY SUSPECTED;"    2= HIGHLY SUSPECTED; 3=BAD
+7 7 PERCENTAGE CONFIDENCE
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/31031.table b/definitions/bufr/tables/0/wmo/8/codetables/31031.table
new file mode 100644
index 0000000..4ce2df8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/31031.table
@@ -0,0 +1 @@
+1 1 DATA NOT PRESENT
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33002.table b/definitions/bufr/tables/0/wmo/8/codetables/33002.table
new file mode 100644
index 0000000..74fd2d6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33002.table
@@ -0,0 +1,4 @@
+0 0 DATA NOT SUSPECT
+1 1 DATA SUSPECT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33003.table b/definitions/bufr/tables/0/wmo/8/codetables/33003.table
new file mode 100644
index 0000000..1516d51
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33003.table
@@ -0,0 +1,5 @@
+0 0 DATA NOT SUSPECT
+1 1 DATA SLIGHTLY SUSPECT
+2 2 DATA HIGHTLY SUSPECT
+3 3 DATA CONSIDERED UNFIT FOR USE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33005.table b/definitions/bufr/tables/0/wmo/8/codetables/33005.table
new file mode 100644
index 0000000..880bae8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33005.table
@@ -0,0 +1,23 @@
+1 1 NO AUTOMATED METEOROLOGICAL DATA CHECKS PERFORMED
+2 2 PRESSURE DATA SUSPECT
+3 3 WIND DATA SUSPECT
+4 4 DRY-BULB TEMPERATURE DATA SUSPECT
+5 5 WET-BULB TEMPERATURE DATA SUSPECT
+6 6 HUMIDITY DATA SUSPECT
+7 7 GROUND TEMPERATURE DATA SUSPECT
+8 8 SOIL TEMPERATURE (DEPTH 1) DATA SUSPECT
+9 9 SOIL TEMPERATURE (DEPTH 2) DATA SUSPECT
+10 10 SOIL TEMPERATURE (DEPTH 3) DATA SUSPECT
+11 11 SOIL TEMPERATURE (DEPTH 4) DATA SUSPECT
+12 12 SOIL TEMPERATURE (DEPTH 5) DATA SUSPECT
+13 13 CLOUD DATA SUSPECT
+14 14 VISIBILITY DATA SUSPECT
+15 15 PRESENT WEATHER DATA SUSPECT
+16 16 LIGHTNING DATA SUSPECT
+17 17 ICE DEPOSIT DATA SUSPECT
+18 18 PRECIPITATION DATA SUSPECT
+19 19 STATE OF GROUND DATA SUSPECT
+20 20 SNOW DATA SUSPECT
+21 21 WATER CONTENT DATA SUSPECT
+22 22 EVAPORATION/EVAPOTRANSPIRATION DATA SUSPECT
+23 23 SUNSHINE DATA SUSPECT
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33006.table b/definitions/bufr/tables/0/wmo/8/codetables/33006.table
new file mode 100644
index 0000000..0ea44a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33006.table
@@ -0,0 +1,5 @@
+0 0 SELF-CHECK OK
+1 1 AT LEAST ONE WARNING ACTIVE, NO ALARMS
+2 2 AT LEAST ONE ALARM ACTIVE
+3 3 SENSOR FAILURE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33015.table b/definitions/bufr/tables/0/wmo/8/codetables/33015.table
new file mode 100644
index 0000000..dd633f1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33015.table
@@ -0,0 +1,16 @@
+0 0 PASSED ALL CHECKS
+1 1 MISSING-DATA CHECK
+2 2 DESCENDING/REASCENDING BALLOON CHECK
+3 3 DATA PLAUSIBILITY CHECK (ABOVE LIMITS)
+4 4 DATA PLAUSIBILITY CHECK (BELOW LIMITS)
+5 5 SUPERADIABATIC LAPSE RATE CHECK
+6 6 LIMITING ANGLES CHECK
+7 7 ASCENSION RATE CHECK
+8 8 EXCESSIVE CHANGE FROM PREVIOUS FLIGHT
+9 9 BALLOON OVERHEAD CHECK
+10 10 WIND SPEED CHECK
+11 11 WIND DIRECTION CHECK
+12 12 DEPENDENCY CHECK
+13 13 DATA VALID BUT MODIFIED
+14 14 DATA OUTLIER CHECK
+63 63 MISSING DATA
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33020.table b/definitions/bufr/tables/0/wmo/8/codetables/33020.table
new file mode 100644
index 0000000..023909a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33020.table
@@ -0,0 +1,8 @@
+0 0 GOOD
+1 1 INCONSISTENT
+2 2 DOUBTFUL
+3 3 WRONG
+4 4 NOT CHECKED
+5 5 HAS BEEN CHECKED
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33021.table b/definitions/bufr/tables/0/wmo/8/codetables/33021.table
new file mode 100644
index 0000000..e3e67ae
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33021.table
@@ -0,0 +1,4 @@
+0 0 WITHIN LIMITS
+1 1 OUTSIDE LIMITS
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33022.table b/definitions/bufr/tables/0/wmo/8/codetables/33022.table
new file mode 100644
index 0000000..692661f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33022.table
@@ -0,0 +1,4 @@
+0 0 GOOD (SEVERAL IDENTICAL REPORTS HAVE BEEN RECEIVED)
+1 1 DUBIOUS (NO IDENTICAL REPORT HAVE BEEN RECEIVED)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33023.table b/definitions/bufr/tables/0/wmo/8/codetables/33023.table
new file mode 100644
index 0000000..71ecd11
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33023.table
@@ -0,0 +1,4 @@
+0 0 RELIABLE (LOCATION WAS MADE OVER TWO SATELLITE PASSES)
+1 1 LATEST KNOWN (NO LOCATION OVER CORRESPONDING PASS)
+2 2 DUBIOUS
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33024.table b/definitions/bufr/tables/0/wmo/8/codetables/33024.table
new file mode 100644
index 0000000..e1e3b92
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33024.table
@@ -0,0 +1,10 @@
+0 0 RESERVED
+1 1 EXELLENT - WITHIN 3 METRES
+2 2 GOOD - WITHIN 10 METRES
+3 3 FAIR - WITHIN 20 METRES
+4 4 POOR - MORE THAN 20 METRES
+5 5 EXELLENT -WITHIN 10 FEET
+6 6 GOOD WITHIN-30 FEET
+7 7 FAIR WITHIN 60 FEET
+8 8 POOR - MORE THAN 60 FEET
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33025.table b/definitions/bufr/tables/0/wmo/8/codetables/33025.table
new file mode 100644
index 0000000..edcd4e3
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33025.table
@@ -0,0 +1,5 @@
+0 0 TIME INTERPOLATED, LATITUDE AND LONGITUDE REPORTED
+1 1 TIME REPORTED, LATITUDE AND LONGITUDE INTERPOLATED
+2 2 TIME, LATITUDE AND LONGITUDE INTERPOLATED
+3 3 TIME, LATITUDE AND LONGITUDE REPORTED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33026.table b/definitions/bufr/tables/0/wmo/8/codetables/33026.table
new file mode 100644
index 0000000..539a9fe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33026.table
@@ -0,0 +1,10 @@
+0 0 NORMAL OPERATIONS - MEASUREMENT MODE
+1 1 NORMAL OPERATIONS - NON-MEASUREMENT MODE
+2 2 SMALL RH
+3 3 HUMIDITY ELEMENT IS WET
+4 4 HUMIDITY ELEMENT IS CONTAMINATED
+5 5 HEATER FAIL
+6 6 HEATER FAIL AND WET/CONTAMINATED HUMIDITY ELEMENT
+7 7 SINGLE VALIDITY BAD
+8 8 NUMERIC ERROR
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33027.table b/definitions/bufr/tables/0/wmo/8/codetables/33027.table
new file mode 100644
index 0000000..30dcae8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33027.table
@@ -0,0 +1,5 @@
+0 0 RADIUS >= 1500 M
+1 1 500 M <= RADIUS < 1500 M
+2 2 250 M <= RADIUS < 500 M
+3 3 RADIUS < 250 M
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33028.table b/definitions/bufr/tables/0/wmo/8/codetables/33028.table
new file mode 100644
index 0000000..8a16e7a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33028.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 NOMINAL
+2 2 DEGRADED BY SW ERROR; ANY ERROR REPORTED BY THE ALGORITHMS
+3 3 DEGRADED BY INSTRUMENT ERROR
+4 4 DEGRADED BY CORRUPTED/MISSING ADF
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33030.table b/definitions/bufr/tables/0/wmo/8/codetables/33030.table
new file mode 100644
index 0000000..c9e36c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33030.table
@@ -0,0 +1,7 @@
+1 1 DO NOT USE SCAN FOR PRODUCT GENERATION
+2 2 TIME SEQUENCE ERROR DETECTED WITH THIS SCAN
+3 3 DATA GAP PRECEDES THIS SCAN
+4 4 NO CALIBRATION
+5 5 NO EARTH LOCATION
+6 6 FIRST GOOD TIME FOLLOWING A CLOCK UPDATE
+7 7 INSTRUMENT STATUS CHANGED WITH THIS SCAN
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33031.table b/definitions/bufr/tables/0/wmo/8/codetables/33031.table
new file mode 100644
index 0000000..857eece
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33031.table
@@ -0,0 +1,21 @@
+1 1 TIME FIELD IS BAD BUT CAN PROBABLY BE INFERRED FROM THE PREV"    IOUS GOOD TIME
+2 2 TIME FIELD IS BAD AND CAN?~@~YT BE INFERRED FROM THE PREVIOU"    S GOOD TIME
+3 3 THIS RECORD STARTS A SEQUENCE THAT IS INCONSISTENT WITH PREV"    IOUS TIMES (I.E. THERE IS A TIME DISCONTINUITY). THIS MAY OR"     MAY NOT BE ASSOCIAT
+4 4 START OF A SEQUENCE THAT APPARENTLY REPEATS SCAN TIMES THAT"    HAVE BEEN PREVIOUSLY ACCEPTED
+5 5 SCAN LINE WAS NOT CALIBRATED BECAUSE OF BAD TIME
+6 6 SCAN LINE WAS CALIBRATED USING FEWER THAN THE PREFERRED NUMB"    ER OF SCAN LINES BECAUSE OF PROXIMATY TO START OR END OF DAT"    A OR TO A DATA GAP
+7 7 SCAN LINE WAS NOT CALIBRATED BECAUSE OF BAD OR INSUFFICIENT"    PRT DATA
+8 8 SCAN LINE WAS CALIBRATED BUT WITH MARGINAL PRT DATA
+9 9 SOME UNCALIBRATED CHANNELS ON THIS SCAN
+10 10 UNCALIBRATED DUE TO INSTRUMENT MODE
+11 11 QUESTIONABLE CALIBRATION BECAUSE OF ANTENNA POSITION ERROR O"    F SPACE VIEW
+12 12 QUESTIONABLE CALIBRATION BECAUSE OF ANTENNA POSITION ERROR O"    F BLACK BODY
+13 13 NOT EARTH LOCATED BECAUSE OF BAD TIME
+14 14 EARTH LOCATION QUESTIONABLE BECAUSE OF"     QUESTIONABLE TIME CODE (SEE TIME PROBLEM"     CODE BITS)
+15 15 EARTH LOCATION QUESTIONABLE - ONLY MARGINAL AGREEMENT"     WITH REASONABLENESS CHECK
+16 16 EARTH LOCATION QUESTIONABLE - FAILS REASONABLENESS CHECK
+17 17 EARTH LOCATION QUESTIONABLE BECAUSE OF ANTENNA POSITION CHEC"    K
+18 18 SCAN LINE CALIBRATION COLD BLACK BODY
+19 19 SCAN LINE CALIBRATION WARM BLACK BODY
+20 20 SCAN LINE CALIBRATION SPACE VIEW
+21 21 EARTH VIEW
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33032.table b/definitions/bufr/tables/0/wmo/8/codetables/33032.table
new file mode 100644
index 0000000..45b284d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33032.table
@@ -0,0 +1,6 @@
+1 1 NO GOOD BLACKBODY COUNTS FOR SCAN LINE
+2 2 NO GOOD SPACE VIEW COUNTS FOR THIS LINE
+3 3 NO GOOD PRTS FOR THIS LINE
+4 4 SOME BAD BLACKBODY VIEW COUNTS FOR THIS LINE
+5 5 SOME BAD SPACE VIEW COUNTS FOR THIS LINE
+6 6 SOME BAD PRT TEMPS ON THIS LINE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33033.table b/definitions/bufr/tables/0/wmo/8/codetables/33033.table
new file mode 100644
index 0000000..803087f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33033.table
@@ -0,0 +1,23 @@
+1 1 SET IF SECONDARY CALIBRATION USED
+2 2 BRIGHTNESS TEMPERATURE IN CHANNEL 1 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+3 3 BRIGHTNESS TEMPERATURE IN CHANNEL 2 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+4 4 BRIGHTNESS TEMPERATURE IN CHANNEL 3 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+5 5 BRIGHTNESS TEMPERATURE IN CHANNEL 4 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+6 6 BRIGHTNESS TEMPERATURE IN CHANNEL 5 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+7 7 BRIGHTNESS TEMPERATURE IN CHANNEL 6 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+8 8 BRIGHTNESS TEMPERATURE IN CHANNEL 7 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+9 9 BRIGHTNESS TEMPERATURE IN CHANNEL 8 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+10 10 BRIGHTNESS TEMPERATURE IN CHANNEL 9 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+11 11 BRIGHTNESS TEMPERATURE IN CHANNEL 10 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+12 12 BRIGHTNESS TEMPERATURE IN CHANNEL 11 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+13 13 BRIGHTNESS TEMPERATURE IN CHANNEL 12 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+14 14 BRIGHTNESS TEMPERATURE IN CHANNEL 13 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+15 15 BRIGHTNESS TEMPERATURE IN CHANNEL 14 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+16 16 BRIGHTNESS TEMPERATURE IN CHANNEL 15 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+17 17 BRIGHTNESS TEMPERATURE IN CHANNEL 16 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+18 18 BRIGHTNESS TEMPERATURE IN CHANNEL 17 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+19 19 BRIGHTNESS TEMPERATURE IN CHANNEL 18 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+20 20 BRIGHTNESS TEMPERATURE IN CHANNEL 19 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+21 21 BRIGHTNESS TEMPERATURE IN CHANNEL 20 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+22 22 SET IF ALL CHANNELS ARE MISSING
+23 23 SUSPECT
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33035.table b/definitions/bufr/tables/0/wmo/8/codetables/33035.table
new file mode 100644
index 0000000..938a958
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33035.table
@@ -0,0 +1,15 @@
+0 0 AUTOMATIC QUALITY CONTROL PASSED AND NOT MANUALLY CHECKED
+1 1 AUTOMATIC QUALITY CONTROL PASSED AND MANUALLY CHECKED AND PA"    SSED
+2 2 AUTOMATIC QUALITY CONTROL PASSED AND MANUALLY CHECKED AND DE"    LETED
+3 3 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY NOT CHECKED
+4 4 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY CHECKED AND FA"    ILED
+5 5 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY CHECKED AND RE"    -INSERTED
+6 6 AUTOMATIC QUALITY CONTROL FLAGGED DATA AS QUESTIONABLE AND N"    OT MANUALLY CHECCKED
+7 7 AUTOMATIC QUALITY CONTROL FLAGGED DATA AS QUESTIONABLE"    AND MANUALLY CHECKED AND FAILED
+8 8 MANUALLY CHECKED AND FAILED
+9 9 EXCESSIVE MISSING DATA FRAMES
+10 10 RESERVED
+11 11 EXCESSIVE MISSING TEMPERATURE
+12 12 EXCESSIVE MISSING PRESSURE
+13 13 USER TERMINATED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33037.table b/definitions/bufr/tables/0/wmo/8/codetables/33037.table
new file mode 100644
index 0000000..81a7d01
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33037.table
@@ -0,0 +1,19 @@
+1 1 U DEPARTURE FROM GUESS
+2 2 V DEPARTURE FROM GUESS
+3 3 U & V DEPARTURE FROM GUESS
+4 4 U ACCELERATION
+5 5 V ACCELERATION
+6 6 U & V ACCELERATION
+7 7 POSSIBLE LAND FEATURE
+8 8 U ACCELERATION AND POSSIBLE LAND FEATURE
+9 9 V ACCELERATION AND POSSIBLE LAND FEATURE
+10 10 U & V ACCELERATION AND POSSIBLE LAND FEATURE
+11 11 BAD WIND GUESS
+12 12 CORRELATION FAILURE
+13 13 SEARCH BOX OFF EDGE OF AREA
+14 14 TARGET BOX OFF EDGE OF AREA
+15 15 PIXEL BRIGHTNESS OUT OF BOUNDS (NOISY LINE)
+16 16 TARGET OUTSIDE OF LAT/LONG BOX
+17 17 TARGET OUTSIDE OF PRESSURE MIN/MAX
+18 18 AUTOEDITOR FLAGGED SLOW VECTOR
+19 19 AUTOEDITOR FLAGGED VECTORS
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33038.table b/definitions/bufr/tables/0/wmo/8/codetables/33038.table
new file mode 100644
index 0000000..3dc1192
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33038.table
@@ -0,0 +1,9 @@
+1 1 TOTAL ZENITH DELAY QUALITY IS CONSIDERED POOR
+2 2 GALILEO SATELLITES USED
+3 3 GLONASS SATELLITES USED
+4 4 GPS SATELLITES USED
+5 5 METEOROLOGICAL DATA APPLIED
+6 6 ATMOSPHERIC LOADING CORRECTION APPLIED
+7 7 OCEAN TIDE LOADING APPLIED
+8 8 CLIMATE QUALITY DATA PROCESSING
+9 9 NEAR-REAL TIME DATA PROCESSING
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33039.table b/definitions/bufr/tables/0/wmo/8/codetables/33039.table
new file mode 100644
index 0000000..50ff126
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33039.table
@@ -0,0 +1,9 @@
+1 1 NON-NOMINAL QUALITY
+2 2 OFFLINE PRODUCT
+3 3 ASCENDING OCCULTATION FLAG
+4 4 EXCESS PHASE PROCESSING NON-NOMINAL
+5 5 BENDING ANGLE PROCESSING NON-NOMINAL
+6 6 REFRACTIVITY PROCESSING NON-NOMINAL
+7 7 METEOROLOGICAL PROCESSING NON-NOMINAL
+14 14 BACKGROUND PROFILE NON-NOMINAL
+15 15 BACKGROUND (I.E. NOT RETRIEVED) PROFILE PRESENT
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33041.table b/definitions/bufr/tables/0/wmo/8/codetables/33041.table
new file mode 100644
index 0000000..7da4cf8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33041.table
@@ -0,0 +1,4 @@
+0 0 THE FOLLOWING VALUE IS THE TRUE VALUE
+1 1 THE FOLLOWING VALUE IS HIGHER THAN THE TRUE VALUE"    (THE MEASUREMENT HIT THE LOWER LIMIT OF THE INSTRUMENT)
+2 2 THE FOLLOWING VALUE IS LOWER THAN THE TRUE VALUE"    (THE MEASUREMENT HIT THE HIGHER LIMIT OF THE INSTRUMENT)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33042.table b/definitions/bufr/tables/0/wmo/8/codetables/33042.table
new file mode 100644
index 0000000..b75447a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33042.table
@@ -0,0 +1,5 @@
+0 0 EXCLUSIVE LOWER LIMIT (>)
+1 1 INCLUSIVE LOWER LIMIT (>=)
+2 2 EXCLUSIVE UPPER LIMIT (<)
+3 3 INCLUSIVE UPPER LIMIT (=<)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33043.table b/definitions/bufr/tables/0/wmo/8/codetables/33043.table
new file mode 100644
index 0000000..f0626f5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33043.table
@@ -0,0 +1,4 @@
+1 1 SEA MDS. NADIR ONLY SST RETRIEVAL USED 3.7 MICRON"    CHANNEL. LAND MDS RESERVED
+2 2 SEA MDS. DUAL VIEW SST RETRIEVAL USED 3.7 MICRON"    CHANNEL. LAND MDS RESERVED.
+3 3 NADIR VIEW CONTAINS DAY TIME DATA
+4 4 FORWARD VIEW CONTAINS DAY TIME DATA
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33044.table b/definitions/bufr/tables/0/wmo/8/codetables/33044.table
new file mode 100644
index 0000000..a74a7c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33044.table
@@ -0,0 +1,14 @@
+1 1 INPUT DATA MEAN OUTSIDE NOMINAL RANGE FLAG
+2 2 INPUT DATA STANDARD DEVIATION OUTSIDE NOMINAL RANGE FLAG
+3 3 NUMBER OF INPUT DATA GAPS > THRESHOLD VALUE
+4 4 PERCENTAGE OF MISSING LINES > THRESHOLD VALUE
+5 5 DOPPLER CENTROID UNCERTAIN. CONFIDENCE MEASURE < SPECIFIC VA"    LUE
+6 6 DOPPLER AMBIGUITY ESTIMATE UNCERTAIN. CONFIDENCE MEASURE < S"    PECIFIC VALUE
+7 7 OUTPUT DATA MEAN OUTSIDE NOMINAL RANGE FLAG
+8 8 OUTPUT DATA STANDARD DEVIATION OUTSIDE NOMINAL RANGE FLAG
+9 9 CHIRP RECONSTRUCTION FAILED OR IS OF LOW QUALITY FLAG
+10 10 DATA SET MISSING
+11 11 INVALID DOWNLINK PARAMETERS
+12 12 AZIMUTH CUT-OFF ITERATION COUNT. THE AZIMUTH CUT-OFF FIT DID"     NOT CONVERGE WITHIN A MINIMUM NUMBER OF ITERATIONS
+13 13 AZIMUTH CUT-OFF FIT DID NOT CONVERGE WITHIN A MINIMUM"    NUMBER OF ITERATIONS
+14 14 PHASE INFORMATION CONFIDENCE MEASURE. THE IMAGINARY SPECTRAL"    PEAK IS LESS THAN A MINIMUM THRESHOLD, OR THE ZERO LAG SHIFT"    IS GREATER THAN A MI
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33047.table b/definitions/bufr/tables/0/wmo/8/codetables/33047.table
new file mode 100644
index 0000000..e91702b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33047.table
@@ -0,0 +1,26 @@
+1 1 ERROR DETECTED AND ATTEMPTS TO RECOVER MADE
+2 2 ANOMALY IN ON-BOARD DATA HANDLING (OBDH) VALUE DETECTED
+3 3 ANOMALY IN ULTRA STABLE OSCILLATOR PROCESSING (USOP) VALUE D"    ETECTED
+4 4 ERRORS DETECTED BY ON-BOARD COMPUTER
+5 5 AUTOMATIC GAIN CONTROL (AGC) OUT OF RANGE
+6 6 RX DELAY FAULT. RX DISTANCE OUT OF RANGE
+7 7 WAVE FORM SAMPLES FAULT IDENTIFIER. ERROR
+12 12 BRIGHTNESS TEMPERATURE (CHANNEL 1) OUT OF RANGE
+13 13 BRIGHTNESS TEMPERATURE (CHANNEL 2) OUT OF RANGE
+14 14 RESERVED
+15 15 KU OCEAN RETRACKING ERROR
+16 16 S OCEAN RETRACKING ERROR
+17 17 KU ICE 1 RETRACKING ERROR
+18 18 S ICE 1 RETRACKING ERROR
+19 19 KU ICE 2 RETRACKING ERROR
+20 20 S ICE 2 RETRACKING ERROR
+21 21 KU SEA ICE RETRACKING ERROR
+22 22 ARITHMETIC FAULT ERROR
+23 23 METEO DATA STATE. NO MAP
+24 24 METEO DATA STATE. 1 MAP
+25 25 METEO DATA STATE 2 MAPS DEGRADED
+26 26 METEO DATA STATE 2 MAPS NOMINAL
+27 27 ORBIT PROPAGATOR STATUS FOR PROPAGATION MODE, SEVERAL ERRORS
+28 28 ORBIT PROPAGATOR STATUS FOR PROPAGATION MODE, WARNING DETECT"    ED
+29 29 ORBIT PROPAGATOR STATUS FOR INITIALISATION MODE, SEVERAL ERR"    ORS
+30 30 ORBIT PROPAGATOR STATUS FOR INITIALISATION MODE, WARNING DET"    ECTED
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33048.table b/definitions/bufr/tables/0/wmo/8/codetables/33048.table
new file mode 100644
index 0000000..312ba40
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33048.table
@@ -0,0 +1,4 @@
+0 0 INVERSION SUCCESSFUL
+1 1 INVERSION NOT SUCCESSFUL
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33049.table b/definitions/bufr/tables/0/wmo/8/codetables/33049.table
new file mode 100644
index 0000000..bdde061
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33049.table
@@ -0,0 +1,4 @@
+0 0 EXTERNAL WIND DIRECTION USED DURING INVERSION
+1 1 EXTERNAL WIND DIRECTION NOT USED DURING INVERSION
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33050.table b/definitions/bufr/tables/0/wmo/8/codetables/33050.table
new file mode 100644
index 0000000..772ab4a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33050.table
@@ -0,0 +1,8 @@
+0 0 UNQUALIFIED
+1 1 CORRECT VALUE (ALL CHECKS PASSED)
+2 2 PROBABLY GOOD BUT VALUE INCONSISTENT WITH STATISTICS (DIFFER"     FROM CLIMATOLOGY)
+3 3 PROBABLY BAD (SPIKE, GRADIENT, ?~E IF OTHER TESTS PASSED)
+4 4 BAD VALUE, IMPOSSIBLE VALUE (OUT OF SCALE, VERTICAL"    INSTABILITY, CONSTANT PROFILE)
+5 5 VALUE MODIFIED DURING QUALITY CONTROL
+8 8 INTERPOLATED VALUE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33052.table b/definitions/bufr/tables/0/wmo/8/codetables/33052.table
new file mode 100644
index 0000000..42ae4d2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33052.table
@@ -0,0 +1,20 @@
+1 1 DATA BLOCK 1 INVALID (S BAND)
+2 2 DATA BLOCK 2 INVALID (S BAND)
+3 3 DATA BLOCK 3 INVALID (S BAND)
+4 4 DATA BLOCK 4 INVALID (S BAND)
+5 5 DATA BLOCK 5 INVALID (S BAND)
+6 6 DATA BLOCK 6 INVALID (S BAND)
+7 7 DATA BLOCK 7 INVALID (S BAND)
+8 8 DATA BLOCK 8 INVALID (S BAND)
+9 9 DATA BLOCK 9 INVALID (S BAND)
+10 10 DATA BLOCK 10 INVALID (S BAND)
+11 11 DATA BLOCK 11 INVALID (S BAND)
+12 12 DATA BLOCK 12 INVALID (S BAND)
+13 13 DATA BLOCK 13 INVALID (S BAND)
+14 14 DATA BLOCK 14 INVALID (S BAND)
+15 15 DATA BLOCK 15 INVALID (S BAND)
+16 16 DATA BLOCK 16 INVALID (S BAND)
+17 17 DATA BLOCK 17 INVALID (S BAND)
+18 18 DATA BLOCK 18 INVALID (S BAND)
+19 19 DATA BLOCK 19 INVALID (S BAND)
+20 20 DATA BLOCK 20 INVALID (S BAND)
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33053.table b/definitions/bufr/tables/0/wmo/8/codetables/33053.table
new file mode 100644
index 0000000..9170c54
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33053.table
@@ -0,0 +1,20 @@
+1 1 DATA BLOCK 1 INVALID (KU BAND)
+2 2 DATA BLOCK 2 INVALID (KU BAND)
+3 3 DATA BLOCK 3 INVALID (KU BAND)
+4 4 DATA BLOCK 4 INVALID (KU BAND)
+5 5 DATA BLOCK 5 INVALID (KU BAND)
+6 6 DATA BLOCK 6 INVALID (KU BAND)
+7 7 DATA BLOCK 7 INVALID (KU BAND)
+8 8 DATA BLOCK 8 INVALID (KU BAND)
+9 9 DATA BLOCK 9 INVALID (KU BAND)
+10 10 DATA BLOCK 10 INVALID (KU BAND)
+11 11 DATA BLOCK 11 INVALID (KU BAND)
+12 12 DATA BLOCK 12 INVALID (KU BAND)
+13 13 DATA BLOCK 13 INVALID (KU BAND)
+14 14 DATA BLOCK 14 INVALID (KU BAND)
+15 15 DATA BLOCK 15 INVALID (KU BAND)
+16 16 DATA BLOCK 16 INVALID (KU BAND)
+17 17 DATA BLOCK 17 INVALID (KU BAND)
+18 18 DATA BLOCK 18 INVALID (KU BAND)
+19 19 DATA BLOCK 19 INVALID (KU BAND)
+20 20 DATA BLOCK 20 INVALID (KU BAND)
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/33060.table b/definitions/bufr/tables/0/wmo/8/codetables/33060.table
new file mode 100644
index 0000000..0b85a8f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/33060.table
@@ -0,0 +1,4 @@
+0 0 PARAMETER=GOOD
+1 1 PARAMETER=BAD
+2 2 PARAMETER=RESERVED
+3 3 MISSING
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/35000.table b/definitions/bufr/tables/0/wmo/8/codetables/35000.table
new file mode 100644
index 0000000..c5e8846
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/35000.table
@@ -0,0 +1,11 @@
+1 1 100-199 RA I CODES
+2 2 200-299 RA II CODES
+3 3 300-399 RA III CODES
+4 4 400-499 RA IV CODES
+5 5 500-599 RA V CODES
+6 6 600-699 RA VI CODES
+7 7 700-799 ANTARCTIC CODES
+8 8 800-999 RESERVED
+9 9 1000-1022 NOT USED
+11 11 000-099 INTERNATIONAL FM CODES
+1023 1023 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/35001.table b/definitions/bufr/tables/0/wmo/8/codetables/35001.table
new file mode 100644
index 0000000..bba0c81
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/35001.table
@@ -0,0 +1,4 @@
+0 0 REAL TIME
+1 1 NEAR-REAL TIME
+2 2 NON-REAL TIME
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/35030.table b/definitions/bufr/tables/0/wmo/8/codetables/35030.table
new file mode 100644
index 0000000..a46775f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/35030.table
@@ -0,0 +1,10 @@
+0 0 NO DISCREPANCIES
+1 1 NON-COMPLIANCE WITH STANDARD AND RECOMMENDED PRACTICES"    AND PROCEDURES INCLUDINGTHOSE OF MONITORING
+2 2 CATALOGUES OF METEOROLOGICAL BULLETINS NOT UPDATED IN A TIME"    LY MANNER
+3 3 INCORRECT ROUTEING DIRECTORIES
+4 4 LACK OF FLEXIBILITY IN THE ROUTEING ARRANGEMENTS
+5 5 DEFICIENCIES IN THE OPERATION OF GTS CENTRES AND CIRCUITS
+6 6 LOSS OF DATA OR DELAYS IN RELAYING DATA ON THE GTS
+7 7 ROUTEING OF DATA DIFFERENT FROM THE ROUTEING PROVIDED IN THE"     PLAN
+8 8 VARIOUS MALPRACTICES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/35031.table b/definitions/bufr/tables/0/wmo/8/codetables/35031.table
new file mode 100644
index 0000000..8c95268
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/35031.table
@@ -0,0 +1,20 @@
+1 1 SUFFICIENT AND ALL OF ACCEPTABLE QUALITY
+2 2 SUFFICIENT BUT PARTLY OF ACCEPTABLE QUALITY
+3 3 INSUFFICIENT BUT ALL OF ACCEPTABLE QUALITY
+4 4 INSUFFICIENT AND OF UNACCEPTABLE QUALITY
+5 5 SOME MESSAGES NOT COMPLETE
+6 6 SUSPECT OR WRONGLY CODED GROUPS COULD NOT BE INTERPRETED CON"    FIDENTLY
+7 7 GROSS CODING ERRORS
+8 8 TRANSMISSION SEQUENTIAL ORDER NOT OBSERVED
+9 9 REPORT COMPLETELY GARBLED AND THUS DISCARDED
+10 10 DEFICIENCIES IDENTIFIED AND RECTIFIED
+11 11 DEFICIENCIES IDENTIFIED BUT NOT RECTIFIED
+12 12 DEFICIENCIES NOT IDENTIFIED
+13 13 MEASURING ERRORS
+14 14 MUTUAL INCONSISTENCY
+15 15 TEMPORAL INCONSISTENCY
+16 16 FORECAST ERROR
+17 17 BIAS
+18 18 IMPROVE SYSTEM OF QUALITY CONTROL
+19 19 EXPAND TRAINING PROGRAMMES
+123 123 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/35032.table b/definitions/bufr/tables/0/wmo/8/codetables/35032.table
new file mode 100644
index 0000000..7f53a05
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/35032.table
@@ -0,0 +1,10 @@
+1 1 DATA GROUPS MISSING DUE TO RADIO FADING
+2 2 DATA GROUPS MISSING DUE TO OUTAGE OF CENTRE
+3 3 DATA GROUPS MISSING DUE TO OUTAGE OF CIRCUIT
+4 4 NON-IMPLEMENTATION OR MAINTENANCE OF REQUIRED RBSN DENSITY
+5 5 SHORTAGE OF QUALIFIED STAFF TO MAN STATIONS
+6 6 LACK OF CONSUMABLES
+7 7 INSTRUMENT FAILURE
+8 8 NON-ADHERENCE TO TELECOMMUNICATION PROCEDURES
+9 9 SOME OBSERVING PROGRAMMES CEASED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/35033.table b/definitions/bufr/tables/0/wmo/8/codetables/35033.table
new file mode 100644
index 0000000..2a3e525
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/35033.table
@@ -0,0 +1,12 @@
+1 1 NO DEFICIENCY
+2 2 OBSERVATIONS NOT MADE REGULARLY
+3 3 OBSERVATIONS NOT MADE AT RIGHT TIME
+4 4 OBSERVATIONS MADE BUT NOT DISSEMINATED
+5 5 OBSERVATIONS MADE AND SENT TO INCORRECT USERS
+6 6 COLLECTION NOT RECEIVED
+7 7 COLLECTION TRANSMITTED LATE
+8 8 COLLECTION NOT TRANSMITTED
+9 9 DIFFICULTIES IN HF PROPAGATION AND SELECTION OF SUITABLE FRE"    QUENCY
+10 10 DIFFICULTIES IN MAINTENANCE OF COMMUNICATION EQUIPMENT AT RE"    MOTE STATIONS
+11 11 NO ALTERNATIVE ARRANGEMENT FOR ROUTEING METEOROLOGICAL OBSER"    VATION
+123 123 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/35034.table b/definitions/bufr/tables/0/wmo/8/codetables/35034.table
new file mode 100644
index 0000000..7297664
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/35034.table
@@ -0,0 +1,7 @@
+1 1 SLIGHT IMPROVEMENT
+2 2 SIGNIFICANT IMPROVEMENT
+3 3 MOST SIGNIFICANT IMPROVEMENT
+4 4 STEADY
+5 5 DECREASING
+6 6 EFFORTS REQUIRED TO IMPROVE NIGHT-TIME OBSERVATIONS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/40011.table b/definitions/bufr/tables/0/wmo/8/codetables/40011.table
new file mode 100644
index 0000000..d4284c9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/40011.table
@@ -0,0 +1,4 @@
+1 1 MEAN SEA SURFACE (MSS) INTERPOLATION FLAG
+2 2 OCEAN TIDE SOLUTION 1 INTERPOLATION FLAG (0= 4 POINTS OVER O"    CEAN, 1=LESS THAN 4 POINTS)
+3 3 OCEAN TIDE SOLUTION 2 INTERPOLATION FLAG (0= 4 POINTS OVER O"    CEAN, 1=LESS THAN 4 POINTS)
+4 4 METEOROLOGICAL DATA INTERPOLATION FLAG (0= 4 POINTS OVER OCE"    AN, 1=LESS THAN 4 POINTS)
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/40012.table b/definitions/bufr/tables/0/wmo/8/codetables/40012.table
new file mode 100644
index 0000000..d8ce14d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/40012.table
@@ -0,0 +1,3 @@
+1 1 18.7 GHZ BRIGHTNESS TEMPERATURE
+2 2 23.8 GHZ BRIGHTNESS TEMPERATURE
+3 3 34 GHZ BRIGHTNESS TEMPERATURE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/40013.table b/definitions/bufr/tables/0/wmo/8/codetables/40013.table
new file mode 100644
index 0000000..f9dfb9a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/40013.table
@@ -0,0 +1,5 @@
+0 0 INTERPOLATION WITH NO GAP BETWEEN JMR DATA
+1 1 INTERPOLATION WITH GAP BETWEEN JMR DATA
+2 2 EXTRAOLATION OF JMR DATA
+3 3 FAILURE OF EXTRAPOLATION AND INTERPOLATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/4059.table b/definitions/bufr/tables/0/wmo/8/codetables/4059.table
new file mode 100644
index 0000000..cee2528
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/4059.table
@@ -0,0 +1,5 @@
+1 1 00 UTC
+2 2 06 UTC
+3 3 12 UTC
+4 4 18 UTC
+5 5 OTHER HOURS
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8001.table b/definitions/bufr/tables/0/wmo/8/codetables/8001.table
new file mode 100644
index 0000000..ec028a1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8001.table
@@ -0,0 +1,7 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 MAXIMUM WIND LEVEL
+5 5 SIGNIFICANT LEVEL, TEMPERATURE AND/OR RELATIVE HUMIDITY
+6 6 SIGNIFICANT LEVEL, WIND
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8002.table b/definitions/bufr/tables/0/wmo/8/codetables/8002.table
new file mode 100644
index 0000000..d929f62
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8002.table
@@ -0,0 +1,13 @@
+0 0 OBSERVING RULES FOR BASE OF LOWEST CLOUD AND CLOUD TYPES OF"    FM 12-IX EXT. SYNOP AND FM 13-IX EXT. SHIP APPLY
+1 1 FIRST NON - CB SIGNIFICANT LAYER
+2 2 SECOND NON - CB SIGNIFICANT LAYER
+3 3 THIRD NON - CB SIGNIFICANT LAYER
+4 4 CUMULONIMBUS LAYER
+5 5 CEILING
+6 6 CLOUD NOT DETECTED BELOW THE FOLLOWING HEIGHT(S)
+7 7 LOW CLOUD
+8 8 MIDDLE CLOUD
+9 9 HIGH CLOUD
+10 10 CLOUD LAYER WITH BASE BELOW THE STATION LEVEL AND TOP"    ABOVE THE STATION LEVEL
+11 11 CLOUD LAYER WITH BASE AND TOP BELOW THE STATION LEVEL
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8003.table b/definitions/bufr/tables/0/wmo/8/codetables/8003.table
new file mode 100644
index 0000000..442be98
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8003.table
@@ -0,0 +1,9 @@
+0 0 SURFACE
+1 1 BASE OF SATELLITE SOUNDING
+2 2 CLOUD TOP
+3 3 TROPOPAUSE
+4 4 PRECIPITABLE WATER
+5 5 SOUNDING RADIANCES
+6 6 MEAN TEMPERATURES
+7 7 OZON
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8004.table b/definitions/bufr/tables/0/wmo/8/codetables/8004.table
new file mode 100644
index 0000000..348d3d1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8004.table
@@ -0,0 +1,6 @@
+2 2 UNSTEADY (UNS)
+3 3 LEVEL FLIGHT, ROUTINE OBSERVATION (LVR)
+4 4 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED (LVW)
+5 5 ASCENDING (ASC)
+6 6 DESCENDING(DES)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8005.table b/definitions/bufr/tables/0/wmo/8/codetables/8005.table
new file mode 100644
index 0000000..2313ea5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8005.table
@@ -0,0 +1,7 @@
+0 0 RESERVED
+1 1 STORM CENTRE
+2 2 OUTER LIMIT OR EDGE OF STORM
+3 3 LOCATION OF MAXIMUM WIND
+4 4 LOCATION OF STORM IN THE PERTURBED ANALYSIS
+5 5 LOCATION OF STORM IN THE ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8006.table b/definitions/bufr/tables/0/wmo/8/codetables/8006.table
new file mode 100644
index 0000000..9f56c62
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8006.table
@@ -0,0 +1,8 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 PROMINENT MAXIMUM LEVEL
+5 5 PROMINENT MINIMUM LEVEL
+6 6 MINIMUM PRESSURE LEVEL
+7 7 RESERVED
+8 8 LEVEL OF UNDETERMINED SIGNIFICANCE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8007.table b/definitions/bufr/tables/0/wmo/8/codetables/8007.table
new file mode 100644
index 0000000..3e4d2cc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8007.table
@@ -0,0 +1,5 @@
+0 0 POINT
+1 1 LINE
+2 2 AREA
+3 3 VOLUME
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8008.table b/definitions/bufr/tables/0/wmo/8/codetables/8008.table
new file mode 100644
index 0000000..2714b5a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8008.table
@@ -0,0 +1,8 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 LEVEL OF BETA RADIATION MAXIMUM
+5 5 LEVEL OF GAMMA RADIATION MAXIMUM
+6 6 MINIMUM PRESSURE LEVEL
+7 7 RESERVED
+8 8 LEVEL OF UNDETERMINED SIGNIFICANCE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8009.table b/definitions/bufr/tables/0/wmo/8/codetables/8009.table
new file mode 100644
index 0000000..153f92a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8009.table
@@ -0,0 +1,16 @@
+0 0 LEVEL FLIGHT, ROUTINE OBSERVATION, UNSTEADY
+1 1 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED, UNSTEADY
+2 2 UNSTEADY (UNS)
+3 3 LEVEL FLIGHT, ROUTINE OBSERVATION (LVR)
+4 4 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED (LVW)
+5 5 ASCENDING (ASC)
+6 6 DESCENDING (DES)
+7 7 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS
+8 8 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS, UNSTEADY
+9 9 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS
+10 10 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS, UNSTEADY
+11 11 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS
+12 12 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS, UNSTEADY
+13 13 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS
+14 14 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS, UNSTEADY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8010.table b/definitions/bufr/tables/0/wmo/8/codetables/8010.table
new file mode 100644
index 0000000..50e8c70
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8010.table
@@ -0,0 +1,13 @@
+0 0 RESERVED
+1 1 BARE SOIL
+2 2 BARE ROCK
+3 3 LAND GRASS COVER
+4 4 WATER (LAKE, SEA)
+5 5 FLOOD WATER UNDERNEATH
+6 6 SNOW
+7 7 ICE
+8 8 RUNWAY OR ROAD
+9 9 SHIP OR PLATFORM DECK IN STEEL
+10 10 SHIP OR PLATFORM DECK IN WOOD
+11 11 SHIP OR PLATFORM DECK PARTLY COVERED WITH RUBBER MAT
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8011.table b/definitions/bufr/tables/0/wmo/8/codetables/8011.table
new file mode 100644
index 0000000..c8ed7cb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8011.table
@@ -0,0 +1,26 @@
+0 0 QUASI-STATIONARY FRONT AT THE SURFACE
+1 1 QUASI-STATIONARY FRONT ABOVE THE SURFACE
+2 2 WARM FRONT AT THE SURFACE
+3 3 WARM FRONT ABOVE THE SURFACE
+4 4 COLD FRONT AT THE SURFACE
+5 5 COLD FRONT ABOVE THE SURFACE
+6 6 OCCLUSION
+7 7 INSTABILITY LINE
+8 8 INTERTROPICAL FRONT
+9 9 CONVERGENCE LINE
+10 10 JET STREAM
+11 11 CLOUD CLEAR
+12 12 CLOUD
+13 13 TURBULENCE
+14 14 STORM
+15 15 AIRFRAME ICING
+16 16 PHENOMENON
+17 17 VOLCANO
+18 18 ATMOSPHERICS
+20 20 SPECIAL CLOUDS
+21 21 THUNDERSTORM (VAL)
+22 22 TROPICAL CYCLONE (VAL)
+23 23 MOUNTAIN WAVE (VAL)
+24 24 DUSTSTORM (VAL)
+25 25 SANDSTORM (VAL)
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8012.table b/definitions/bufr/tables/0/wmo/8/codetables/8012.table
new file mode 100644
index 0000000..0cef734
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8012.table
@@ -0,0 +1,4 @@
+0 0 LAND
+1 1 SEA
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8013.table b/definitions/bufr/tables/0/wmo/8/codetables/8013.table
new file mode 100644
index 0000000..6ea96bf
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8013.table
@@ -0,0 +1,4 @@
+0 0 NIGHT
+1 1 DAY
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8014.table b/definitions/bufr/tables/0/wmo/8/codetables/8014.table
new file mode 100644
index 0000000..da6bb04
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8014.table
@@ -0,0 +1,10 @@
+0 0 10-MINUTE MEAN VALUE - NORMAL VALUE
+1 1 10-MINUTE MEAN VALUE - ABOVE THE UPPER LIMIT FOR ASSESSMENT"    OF RVR (P)
+2 2 10-MINUTE MEAN VALUE - BELOW LOWER LIMIT FOR ASSESSMENT OF R"    VR (M)
+3 3 ONE MINUTE MINIMUM VALUE - NORMAL VALUE
+4 4 ONE MINUTE MINIMUM VALUE - ABOVE THE UPPER LIMIT FOR ASSESSM"    ENT OF RVR (P)
+5 5 ONE MINUTE MINIMUM VALUE - BELOW LOWER LIMIT FOR ASSESSMENT"    OF RVR (M)
+6 6 ONE MINUTE MAXIMUM VALUE - NORMAL VALUE
+7 7 ONE MINUTE MAXIMUM VALUE - ABOVE THE UPPER LIMIT FOR ASSESS"    MENT OF RVR (P)
+8 8 ONE MINUTE MAXIMUM VALUE - BELOW LOWER LIMIT FOR ASSESSMENT"    OF RVR (M)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8016.table b/definitions/bufr/tables/0/wmo/8/codetables/8016.table
new file mode 100644
index 0000000..6b8a1fa
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8016.table
@@ -0,0 +1,5 @@
+0 0 NOSIG
+1 1 BECMG
+2 2 TEMPO
+3 3 FM
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8017.table b/definitions/bufr/tables/0/wmo/8/codetables/8017.table
new file mode 100644
index 0000000..b3156f8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8017.table
@@ -0,0 +1,4 @@
+0 0 FM
+1 1 TL
+2 2 AT
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8018.table b/definitions/bufr/tables/0/wmo/8/codetables/8018.table
new file mode 100644
index 0000000..e4078dc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8018.table
@@ -0,0 +1,5 @@
+1 1 LAND IS PRESENT
+2 2 SURFACE ICE MAP INDICATES ICE IS PRESENT
+11 11 ICE MAP DATA NOT AVAILABLE
+12 12 ATTENUATION MAP DATA NOT AVAILABLE
+17 17 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8021.table b/definitions/bufr/tables/0/wmo/8/codetables/8021.table
new file mode 100644
index 0000000..988dfd0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8021.table
@@ -0,0 +1,32 @@
+0 0 RESERVED
+1 1 TIME SERIES
+2 2 TIME AVERAGED
+3 3 ACCUMULATED
+4 4 FORECAST
+5 5 FORECAST TIME SERIES
+6 6 FORECAST TIME AVERAGED
+7 7 FORECAST ACCUMULATED
+8 8 ENSEMBLE MEAN
+9 9 ENSEMBLE MEAN TIME SERIES
+10 10 ENSEMBLE MEAN TIME AVERAGED
+11 11 ENSEMBLE MEAN ACCUMULATED
+12 12 ENSEMBLE MEAN FORECAST
+13 13 ENSEMBLE MEAN FORECAST TIME SERIES
+14 14 ENSEMBLE MEAN FORECAST AVERAGED
+15 15 ENSEMBLE MEAN FORECAST ACCUMULATED
+16 16 ANALYSIS
+17 17 START OF PHENOMENON
+18 18 RADIOSONDE LAUNCH TIME
+19 19 START OF ORBIT
+20 20 END OF ORBIT
+21 21 TIME OF ASCENDING NODE
+22 22 TIME OF OCCURENCE OF WIND SHIFT
+23 23 MONITORING PERIOD
+24 24 AGREED TIME LIMIT FOR REPORT RECEPTION
+25 25 NOMINAL REPORTING TIME
+26 26 TIME OF LAST KNOWN POSITION
+27 27 FIRST GUESS    --NOT WMO ENTRY
+28 28 START OF SCAN  --NOT WMO ENTRY
+29 29 END OF SCAN    --NOT WMO ENTRY
+30 30 RESERVED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8023.table b/definitions/bufr/tables/0/wmo/8/codetables/8023.table
new file mode 100644
index 0000000..d65ec12
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8023.table
@@ -0,0 +1,17 @@
+2 2 MAXIMUM VALUE
+3 3 MINIMUM VALUE
+4 4 MEAN VALUE
+5 5 MEDIAN VALUE
+6 6 MODAL VALUE
+7 7 MEAN ABSOLUTE ERROR
+9 9 BEST ESTIMATE OF STANDARD DEVIATION (N-1)
+10 10 STANDARD DEVIATION
+11 11 HARMONIC MEAN
+12 12 ROOT MEAN SQUARE VECTOR ERROR
+13 13 ROOT-MEAN-SQUARE
+32 32 PROBABILITY OF GROSS ERROR
+33 33 PRESCRIBED OBSERVATION ERROR
+34 34 PERSISTENCE OBSERVATION ERROR
+35 35 FINAL OBSERVATION ERROR
+36 36 REPRESENTATIVNESS OBSERVATION ERROR
+63 63 MISSING
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8024.table b/definitions/bufr/tables/0/wmo/8/codetables/8024.table
new file mode 100644
index 0000000..067e37d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8024.table
@@ -0,0 +1,15 @@
+2 2 OBSERVED MINUS MAXIMUM
+3 3 OBSERVED MINUS MINIMUM
+4 4 OBSERVED MINUS MEAN
+5 5 OBSERVED MINUS MEDIAN
+6 6 OBSERVED MINUS MODE
+11 11 OBSERVED MINUS CLIMATOLOGY (ANOMALY)
+12 12 OBSERVED MINUS ANALYZED VALUE
+13 13 OBSERVED MINUS INITIALISED ANALYZED VALUE
+14 14 OBSERVED MINUS FORECAST VALUE
+21 21 OBSERVED MINUS INTERPOLATED VALUE
+22 22 OBSERVED MINUS HYDROSTATICALLY CALCULATED VALUE
+32 32 OBSERVED MINUS FIRST GUESS
+33 33 OBSERVED MINUS ANALYSIS
+34 34 OBSERVED MINUS INITIALIZED ANALYSIS
+63 63 MISSING
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8025.table b/definitions/bufr/tables/0/wmo/8/codetables/8025.table
new file mode 100644
index 0000000..5405e33
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8025.table
@@ -0,0 +1,5 @@
+0 0 UNIVERSAL TIME COORDINATED (UTC) MINUS"    LOCAL STANDARD TIME (LST)
+1 1 LOCAL STANDARD TIME
+2 2 UNIVERSAL TIME COORDINATED (UTC) MINUS SATELLITE CLOCK
+5 5 TIME DIFFERENCE FROM EDGE OF PROCESSING SEGMENT
+15 15 MISSING
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8026.table b/definitions/bufr/tables/0/wmo/8/codetables/8026.table
new file mode 100644
index 0000000..d30bb03
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8026.table
@@ -0,0 +1,5 @@
+0 0 AVERAGING KERNEL MATRIX
+1 1 CORRELATION MATRIX
+2 2 LOWER TRIANGULAR CORRELATION MATRIX SQUARE ROOT (L FROM C=LL"    T)
+3 3 INVERSE LOWER TRIANGULAR CORRELATION MATRIX SQUARE ROOT (L**"    -1)
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8029.table b/definitions/bufr/tables/0/wmo/8/codetables/8029.table
new file mode 100644
index 0000000..28b071b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8029.table
@@ -0,0 +1,5 @@
+0 0 OPEN OCEAN OR SEMI-ENCLOSED SEA
+1 1 ENCLOSED SEA OR LAKE
+2 2 CONTINENTAL ICE
+3 3 LAND
+255 255 MISSING
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8033.table b/definitions/bufr/tables/0/wmo/8/codetables/8033.table
new file mode 100644
index 0000000..449fbd4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8033.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 PERCENTAGE CONFIDENCE CALCULATED USING CLOUD FRACTION
+2 2 PERCENTAGE CONFIDENCE CALCULATED USING STANDARD"    DEVIATION OF TEMPERATURE
+3 3 PERCENTAGE CONFIDENCE CALCULATED USING PROBABILITY OF"     THE CLOUD CONTAMINATION
+4 4 PERCENTAGE CONFIDENCE CALCULATED USING NORMALITY OF DISTRIBU"    TION
+127 127 MISSING
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8035.table b/definitions/bufr/tables/0/wmo/8/codetables/8035.table
new file mode 100644
index 0000000..d56a5d7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8035.table
@@ -0,0 +1,8 @@
+0 0 GLOBAL
+1 1 REGIONAL
+2 2 NATIONAL
+3 3 SPECIAL
+4 4 BILATERAL
+5 5 RESERVED
+6 6 RESERVED
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8036.table b/definitions/bufr/tables/0/wmo/8/codetables/8036.table
new file mode 100644
index 0000000..6cfeab5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8036.table
@@ -0,0 +1,8 @@
+0 0 WMO SECRETARIAT
+1 1 WMO
+2 2 RSMC
+3 3 NMC
+4 4 RTH
+5 5 OBSERVING SITE
+6 6 OTHER
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8039.table b/definitions/bufr/tables/0/wmo/8/codetables/8039.table
new file mode 100644
index 0000000..75f133d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8039.table
@@ -0,0 +1,8 @@
+0 0 ISSUE TIME OF FORECAST
+1 1 TIME OF COMMNENCEMENT OF PERIOD OF THE FORECAST
+2 2 TIME OF ENDING OF PERIOD OF THE FORECAST
+3 3 FORECSAT TIME OF MAXIMUM TEMPERATURE
+4 4 FORECSAT TIME OF MINIMUM TEMPERATURE
+5 5 TIME OF BEGINNING OF THE FORECAST
+6 6 TIME OF ENDING OF THE FORECAST
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8040.table b/definitions/bufr/tables/0/wmo/8/codetables/8040.table
new file mode 100644
index 0000000..7c2430e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8040.table
@@ -0,0 +1,43 @@
+0 0 HIGH RESOLUTION DATA SAMPLE
+1 1 WITHIN 20 HPA OF SURFACE
+2 2 PRESSURE LESS THAN 10 HPA (I.E., 9, 8, 7, ETC.)"    WHEN NO OTHER REASON APPLIES
+3 3 BASE PRESSURE LEVEL FOR STABILITY INDEX
+4 4 BEGIN DOUBTFUL TEMPERATURE, HEIGHT DATA
+5 5 BEGIN MISSING DATA (ALL ELEMENTS)
+6 6 BEGIN MISSING RH DATA
+7 7 BEGIN MISSING TEMPERATURE DATA
+8 8 HIGHEST LEVEL REACHED BEFORE BALLOON"    DESCENT BECAUSE OF ICING OR TURBULENCE
+9 9 END DOUBTFUL TEMPERATURE, HEIGHT DATA
+10 10 END MISSING DATA (ALL ELEMENTS)
+11 11 END MISSING RH DATA
+12 12 END MISSING TEMPERATURE DATA
+13 13 ZERO DEGREES C CROSSING(S) FOR RADAT
+14 14 STANDARD PRESSURE LEVEL
+15 15 OPERATOR ADDED LEVEL
+16 16 OPERATOR DELETED LEVEL
+17 17 BALLOON RE-ASCENDED BEYOND PREVIOUS HIGHEST ASCENT LEVEL
+18 18 SIGNIFICANT RH LEVEL
+19 19 RH LEVEL SELECTION TERMINATED
+20 20 SURFACE LEVEL
+21 21 SIGNIFICANT TEMPERATURE LEVEL
+22 22 MANDATORY TEMPERATURE LEVEL
+23 23 FLIGHT TERMINATION LEVEL
+24 24 TROPOPAUSE(S)
+25 25 AIRCRAFT REPORT
+26 26 INTERPOLATED (GENERATED) LEVEL
+27 27 MANDATORY WIND LEVEL
+28 28 SIGNIFICANT WIND LEVEL
+29 29 MAXIMUM WIND LEVEL
+30 30 INCREMENTAL WIND LEVEL (FIXED REGIONAL)
+31 31 INCREMENTAL HEIGHT LEVEL (GENERATED)
+32 32 WIND TERMINATION LEVEL
+33 33 PRESSURE 100 TO 110 HPA, WHEN NO OTHER REASON APPLIES
+40 40 SIGNIFICANT THERMODYNAMIC LEVEL (INVERSION)
+41 41 SIGNIFICANT RH LEVEL ( PER NCDC CRITERIA)
+42 42 SIGNIFICANT TEMPERATURE LEVEL (PER NCDC)
+43 43 BEGIN MISSING WIND DATA
+44 44 END MISSING WIND DATA
+60 60 LEVEL OF 80-KNOT ISOTACH ABOVE JET
+61 61 LEVEL OF 80-KNOT ISOTACH BELOW JET
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8041.table b/definitions/bufr/tables/0/wmo/8/codetables/8041.table
new file mode 100644
index 0000000..3596f95
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8041.table
@@ -0,0 +1,9 @@
+0 0 PARENT SITE
+1 1 OBSERVATION SITE
+2 2 BALLOON MANUFACTURE DATE
+3 3 BALLOON LAUNCH POINT
+4 4 SURFACE OBSERVATION
+5 5 SURFACE OBSERVATION DISPLACEMENT FROM LAUNCH POINT
+6 6 FLIGHT LEVEL OBSERVATION
+7 7 FLIGHT LEVEL TERMINATION POINT
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8042.table b/definitions/bufr/tables/0/wmo/8/codetables/8042.table
new file mode 100644
index 0000000..b98cece
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8042.table
@@ -0,0 +1,13 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 MAXIMUM WIND LEVEL
+5 5 SIGNIFICANT TEMPERATURE LEVEL
+6 6 SIGNIFICANT HUMIDITY LEVEL
+7 7 SIGNIFICANT WIND LEVEL
+8 8 BEGINNING OF MISSING TEMPERATURE DATA
+9 9 END OF MISSING TEMPERATURE DATA
+10 10 BEGINNING OF MISSING HUMIDITY DATA
+11 11 END OF MISSING HUMIDITY DATA
+12 12 BEGINNING OF MISSING WIND DATA
+13 13 END OF MISSING WIND DATA
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8043.table b/definitions/bufr/tables/0/wmo/8/codetables/8043.table
new file mode 100644
index 0000000..6bd94fe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8043.table
@@ -0,0 +1,21 @@
+0 0 OZONE, O3,10028-15-6
+1 1 WATER VAPOUR, H2O, 7732-18-5
+2 2 METHANE, CH4, 74-82-8
+3 3 CARBON DIOXIDE, CO2, 37210-16-5
+4 4 CARBON MONOXIDE, CO, 630-08-0
+5 5 NITROGEN DIOXIDE, NO2, 10102-44-0
+6 6 NITROUS OXIDE, N2O, 10024-97-2
+7 7 FORMALDEHYDE, HCHO, 50-00-0
+8 8 SULFUR DIOXIDE, SO2, 7446-09-5
+9 9 BROMINE OXIDE, BRO, 15656-19-6
+10 10 CHLORINE DIOXIDE, OCLO, 10049-04-4
+11 11 NITROGEN MONOXIDE, NO, 10102-43-9
+12 12 AMMONIA, NH3, 7664-41-7
+25 25 PARTICULATE MATTER < 1.0 MICRONS
+26 26 PARTICULATE MATTER < 2.5 MICRONS
+27 27 PARTICULATE MATTER < 10 MICRONS
+28 28 AEROSOLS GENERIC
+29 29 SMOKE GENERIC
+30 30 CRUSTAL MATERIAL (GENERIC DUST)
+31 31 VOLCANIC ASH
+255 255 MISSING
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8050.table b/definitions/bufr/tables/0/wmo/8/codetables/8050.table
new file mode 100644
index 0000000..4b401f1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8050.table
@@ -0,0 +1,11 @@
+0 0 RESERVED
+1 1 PRESSURE
+2 2 TEMPERATURE
+3 3 EXTREME TEMPERATURE
+4 4 VAPOUR PRESSURE
+5 5 PRECIPITATION
+6 6 SUNSHINE DURATION
+7 7 MAXIMUM TEMPERATURE
+8 8 MINIMUM TEMPERATURE
+9 9 WIND
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8051.table b/definitions/bufr/tables/0/wmo/8/codetables/8051.table
new file mode 100644
index 0000000..5249fe6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8051.table
@@ -0,0 +1,7 @@
+1 1 PRESSURE
+2 2 TEMPERATURE
+3 3 EXTREME TEMPERATURE
+4 4 VAPOUR PRESSURE
+5 5 PRECIPITATION
+6 6 SUNSHINE DURATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8052.table b/definitions/bufr/tables/0/wmo/8/codetables/8052.table
new file mode 100644
index 0000000..f6f02e9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8052.table
@@ -0,0 +1,26 @@
+0 0 MEAN WIND SPEED OVER 10-MINUTES PERIOD OBSERVED OR RECORDED"    EQUAL TO OR MORE THAN 10 M/S
+1 1 MEAN WIND SPEED OVER 10-MINUTES PERIOD OBSERVED OR RECORDED"    EQUAL TO OR MORE THAN 20 M/S
+2 2 MEAN WIND SPEED OVER 10-MINUTES PERIOD OBSERVED OR RECORDED"    EQUAL TO OR MORE THAN 30 M/S
+3 3 MAXIMUM TEMPERATURE LESS THAN 273.2 K
+4 4 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 298.2 K
+5 5 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 303.2 K
+6 6 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 308.2 K
+7 7 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 313.2 K
+8 8 MINIMUM TEMPERATURE LESS THAN 273.2 K
+9 9 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 273.2 K
+10 10 PRECIPITATION EQUAL TO OR MORE THAN   1.0 KG/M**2
+11 11 PRECIPITATION EQUAL TO OR MORE THAN   5.0 KG/M**2
+12 12 PRECIPITATION EQUAL TO OR MORE THAN  10.0 KG/M**2
+13 13 PRECIPITATION EQUAL TO OR MORE THAN  50.0 KG/M**2
+14 14 PRECIPITATION EQUAL TO OR MORE THAN 100.0 KG/M**2
+15 15 PRECIPITATION EQUAL TO OR MORE THAN 150.0 KG/M**2
+16 16 SNOW DEPTH MORE THAN 0.0 M
+17 17 SNOW DEPTH MORE THAN 0.01 M
+18 18 SNOW DEPTH MORE THAN 0.10 M
+19 19 SNOW DEPTH MORE THAN 0.50 M
+20 20 HORIZONTAL VISIBILITY LESS THAN   50 M
+21 21 HORIZONTAL VISIBILITY LESS THAN  100 M
+22 22 HORIZONTAL VISIBILITY LESS THAN 1000 M
+23 23 HAIL
+24 24 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8053.table b/definitions/bufr/tables/0/wmo/8/codetables/8053.table
new file mode 100644
index 0000000..e0c5039
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8053.table
@@ -0,0 +1,4 @@
+0 0 VALUE OCCURED ON ONLY ONE DAY IN THE MONTH
+1 1 VALUE OCCURED ON MORE THAN ONE DAY IN THE MONTH
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8054.table b/definitions/bufr/tables/0/wmo/8/codetables/8054.table
new file mode 100644
index 0000000..71afef9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8054.table
@@ -0,0 +1,3 @@
+0 0 WIND SPEED OR GUST IS AS REPORTED
+1 1 WIND SPEED IS GREATER THAN THAT REPRTED (P IN METAR/TAF/SPEC"    I)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8060.table b/definitions/bufr/tables/0/wmo/8/codetables/8060.table
new file mode 100644
index 0000000..2865fec
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8060.table
@@ -0,0 +1,8 @@
+0 0 RESERVED
+1 1 RANGE
+2 2 AZIMUTH
+3 3 HORIZONTAL
+4 4 VERTICAL
+5 5 NORTH/SOUTH
+6 6 EAST/WEST
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8065.table b/definitions/bufr/tables/0/wmo/8/codetables/8065.table
new file mode 100644
index 0000000..69b80ea
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8065.table
@@ -0,0 +1,4 @@
+0 0 NO SUN-GLINT
+1 1 SUN-GLINT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8066.table b/definitions/bufr/tables/0/wmo/8/codetables/8066.table
new file mode 100644
index 0000000..fcc0252
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8066.table
@@ -0,0 +1,4 @@
+0 0 OPAQUE
+1 1 SEMI-TRANSPARENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8070.table b/definitions/bufr/tables/0/wmo/8/codetables/8070.table
new file mode 100644
index 0000000..2df3629
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8070.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 RESERVED
+2 2 EARTH LOCATED INSTRUMENT COUNTS,"    CALIBRATION COEFFICIENTS AND HOUSEKEEPING (LEVEL 1B)
+3 3 EARTH LOCATED CALIBRATED RADIANCES (LEVEL 1C)
+4 4 MAPPED TO A COMMON FOOTPRINT, EARTH LOCATED"    CALIBRATED RADIANCES (LEVEL 1D)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8072.table b/definitions/bufr/tables/0/wmo/8/codetables/8072.table
new file mode 100644
index 0000000..bd831e1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8072.table
@@ -0,0 +1,4 @@
+0 0 MIXED
+1 1 CLEAR
+2 2 CLOUDY
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8074.table b/definitions/bufr/tables/0/wmo/8/codetables/8074.table
new file mode 100644
index 0000000..5778e65
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8074.table
@@ -0,0 +1,4 @@
+0 0 OPEN OCEAN OR SEMI-ENCLOSED SEA
+1 1 NON-OCEAN LIKE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8075.table b/definitions/bufr/tables/0/wmo/8/codetables/8075.table
new file mode 100644
index 0000000..5f5e3a2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8075.table
@@ -0,0 +1,4 @@
+0 0 ASCENDING ORBIT
+1 1 DESCENDING ORBIT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8076.table b/definitions/bufr/tables/0/wmo/8/codetables/8076.table
new file mode 100644
index 0000000..c63942f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8076.table
@@ -0,0 +1,3 @@
+0 0 KU
+1 1 C
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8077.table b/definitions/bufr/tables/0/wmo/8/codetables/8077.table
new file mode 100644
index 0000000..2c7902b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8077.table
@@ -0,0 +1,7 @@
+0 0 LAND
+1 1 SEA
+2 2 COASTAL
+3 3 OPEN OCEAN OR SEMI-ENCLOSED SEA
+4 4 ENCLOSED SEA OR LAKE
+5 5 CONTINENTAL ICE
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8079.table b/definitions/bufr/tables/0/wmo/8/codetables/8079.table
new file mode 100644
index 0000000..25fc9e1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8079.table
@@ -0,0 +1,9 @@
+0 0 NORMAL ISSUE
+1 1 CORRECTION TO A PREVIOUSLY ISSUED PRODUCT (COR)
+2 2 AMANDMENT TO A PREVIOUSLY ISSUED PRODUCT *AMD)
+3 3 CORRECTION TO A PREVIOUSLY ISSUED AMENDED PRODUCT (COR AMD)
+4 4 CANCELLATION OD A PREVIOUSLY ISSUED PRODUCT (CNL)
+5 5 NO PRODUCT AVAILABLE (NIL)
+6 6 SPECIAL REPORT ( SPECI)
+7 7 CORRECTED SPECIAL REPORT (SPECI COR)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8080.table b/definitions/bufr/tables/0/wmo/8/codetables/8080.table
new file mode 100644
index 0000000..8972f26
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8080.table
@@ -0,0 +1,9 @@
+0 0 TOTAL WATER PRESSURE PROFILE
+1 1 TOTAL WATER TEMPERATURE PROFILE
+2 2 TOTAL WATER SALINITY PROFILE
+3 3 TOTAL WATER CONDUCTIVITY PROFILE
+10 10 WATER PRESSURE AT A LEVEL
+11 11 WATER TEMPERATURE AT A LEVEL
+12 12 SALINITY AT A LEVEL
+20 20 POSITION
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8081.table b/definitions/bufr/tables/0/wmo/8/codetables/8081.table
new file mode 100644
index 0000000..75d2887
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8081.table
@@ -0,0 +1,5 @@
+0 0 SENSOR
+1 1 TRANSMITTER
+2 2 RECEIVER
+3 3 OBSERVING PLATFORM
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8082.table b/definitions/bufr/tables/0/wmo/8/codetables/8082.table
new file mode 100644
index 0000000..1f24db8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8082.table
@@ -0,0 +1,3 @@
+0 0 SENSOR HEIGHT IS NOT MODIFIED
+1 1 SENSOR HEIGHT IS MODIFIED TO STANDARD LEVEL
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8083.table b/definitions/bufr/tables/0/wmo/8/codetables/8083.table
new file mode 100644
index 0000000..b754702
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8083.table
@@ -0,0 +1,9 @@
+1 1 ADJUSTED WITH RESPECT TO REPRESENTATIVE HEIGHT OF SENSOR ABO"    VE LOCAL GROUND (OR DECK OF MARINE PLATFORM)
+2 2 ADJUSTED WITH RESPECT TO REPRESENTATIVE HEIGHT OF SENSOR ABO"    VE WATER SURFACE
+3 3 ADJUSTED WITH RESPECT TO STANDARD SURFACE ROUGHNESS
+4 4 ADJUSTED WITH RESPECT TO WIND SPEED
+5 5 ADJUSTED WITH RESPECT TO TEMPERATURE
+6 6 ADJUSTED WITH RESPECT TO PRESSURE
+7 7 ADJUSTED WITH RESPECT TO HUMIDITY
+8 8 ADJUSTED WITH RESPECT TO EVAPORATION
+9 9 ADJUSTED WITH RESPECT TO WETTING LOSSES
diff --git a/definitions/bufr/tables/0/wmo/8/codetables/8085.table b/definitions/bufr/tables/0/wmo/8/codetables/8085.table
new file mode 100644
index 0000000..de7bb90
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/codetables/8085.table
@@ -0,0 +1,8 @@
+0 0 FORE BEAM
+1 1 MID BEAM
+2 2 AFT BEAM
+3 3 RESERVED
+4 4 RESERVED
+5 5 RESERVED
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/8/element.table b/definitions/bufr/tables/0/wmo/8/element.table
new file mode 100644
index 0000000..cc9082d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/element.table
@@ -0,0 +1,1297 @@
+#code|abbreviation|type|name|unit|scale|reference|width|crex_unit|crex_scale|crex_width
+000001|tableAEntry|string|TABLE A: ENTRY|CCITT IA5|0|0|24|Character|0|3
+000002|tableALine1|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 1|CCITT IA5|0|0|256|Character|0|32
+000003|tableALine2|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 2|CCITT IA5|0|0|256|Character|0|32
+000004|masterTable|string|BUFR/CREX MASTER TABLE|CCITT IA5|0|0|16|Character|0|2
+000005|editionNumber|string|BUFR/CREX EDITION NUMBER|CCITT IA5|0|0|24|Character|0|3
+000006|bufrMasterTableVersionNumber|string|BUFR MASTER TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000007|crexMasterTableVersionNumber|string|CREX MASTER TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000008|bufrLocalTableVersionNumber|string|BUFR LOCAL TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000010|fDescriptorToBeAddedOrDefined|string|F DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|8|Character|0|1
+000011|xDescriptorToBeAddedOrDefined|string|X DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|16|Character|0|2
+000012|yDescriptorToBeAddedOrDefined|string|Y DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|24|Character|0|3
+000013|elementNameLine1|string|ELEMENT NAME, LINE 1|CCITT IA5|0|0|256|Character|0|32
+000014|elementNameLine2|string|ELEMENT NAME, LINE 2|CCITT IA5|0|0|256|Character|0|32
+000015|unitsName|string|UNITS NAME|CCITT IA5|0|0|192|Character|0|24
+000016|unitsScaleSign|string|UNITS SCALE SIGN|CCITT IA5|0|0|8|Character|0|1
+000017|unitsScale|string|UNITS SCALE|CCITT IA5|0|0|24|Character|0|3
+000018|unitsReferenceSign|string|UNITS REFERENCE SIGN|CCITT IA5|0|0|8|Character|0|1
+000019|unitsReferenceValue|string|UNITS REFERENCE VALUE|CCITT IA5|0|0|80|Character|0|10
+000020|elementDataWidth|string|ELEMENT DATA WIDTH|CCITT IA5|0|0|24|Character|0|3
+000030|descriptorDefiningSequence|string|DESCRIPTOR DEFINING SEQUENCE|CCITT IA5|0|0|48|Character|0|6
+001001|blockNumber|long|WMO BLOCK NUMBER|Numeric|0|0|7|Numeric|0|2
+001002|stationNumber|long|WMO STATION NUMBER|Numeric|0|0|10|Numeric|0|3
+001003|regionNumber|table|WMO REGION NUMBER/GEOGRAPHICAL AREA|CODE TABLE|0|0|3|CODE TABLE|0|1
+001004|wmoRegionSubArea|long|WMO REGION SUB-AREA (SEE NOTE 9)|Numeric|0|0|3|Numeric|0|1
+001005|buoyOrPlatformIdentifier|long|BUOY/PLATFORM IDENTIFIER|Numeric|0|0|17|Numeric|0|5
+001006|aircraftFlightNumber|string|AIRCRAFT FLIGHT NUMBER|CCITT IA5|0|0|64|Character|0|8
+001007|satelliteIdentifier|table|SATELLITE IDENTIFIER|CODE TABLE|0|0|10|CODE TABLE|0|4
+001008|aircraftRegistrationNumberOrOtherIdentification|string|AIRCRAFT REGISTRATION NUMBER OR OTHER IDENTIFICATION|CCITT IA5|0|0|64|Character|0|8
+001009|commercialAircraftType|string|TYPE OF COMMERCIAL AIRCRAFT|CCITT IA5|0|0|64|Character|0|8
+001010|stationaryBuoyPlatformIdentifierEGCManBuoys|string|STATIONARY BUOY PLATFORM IDENTIFIER; E.G. C-MAN BUOYS|CCITT IA5|0|0|64|Character|0|8
+001011|shipOrMobileLandStationIdentifier|string|SHIP OR MOBILE LAND STATION IDENTIFIER|CCITT IA5|0|0|72|Character|0|9
+001012|directionOfMotionOfMovingObservingPlatform|long|DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM**|deg|0|0|9|deg|0|3
+001013|movingObservingPlatformSpeed|long|SPEED OF MOTION OF MOVING OBSERVING PLATFORM*|m/s|0|0|10|m/s|0|3
+001014|platformDriftSpeed|double|PLATFORM DRIFT SPEED (HIGH PRECISION)|m/s|2|0|10|m/s|2|4
+001015|stationOrSiteName|string|STATION OR SITE NAME|CCITT IA5|0|0|160|Character|0|20
+001018|shortStationName|string|SHORT STATION OR SITE NAME|CCITT IA5|0|0|40|Character|0|5
+001019|longStationName|string|LONG STATION OR SITE NAME|CCITT IA5|0|0|256|Character|0|32
+001020|wmoRegionSubArea|long|WMO REGION SUB-AREA|Numeric|0|0|4|Numeric|0|2
+001021|synopticFeatureIdentifier|long|SYNOPTIC FEATURE IDENTIFIER|Numeric|0|0|14|Numeric|0|4
+001022|featureName|string|NAME OF FEATURE (SEE NOTE 11)|CCITT IA5|0|0|224|Character|0|28
+001023|observationSequenceNumber|long|OBSERVATION SEQUENCE NUMBER|Numeric|0|0|9|Numeric|0|3
+001025|stormIdentifier|string|STORM IDENTIFIER|CCITT IA5|0|0|24|Character|0|3
+001026|stormName|string|WMO STORM NAME|CCITT IA5|0|0|64|Character|0|8
+001027|longStormName|string|WMO LONG STORM NAME|CCITT IA5|0|0|80|Character|0|10
+001030|numericalModelIdentifier|string|NUMERICAL MODEL IDENTIFIER|CCITT IA5|0|0|128|Character|0|16
+001031|centre|table|IDENTIFICATION OF ORIGINATING/GENERATING CENTRE (SEE NOTE 10)|CODE TABLE|0|0|16|CODE TABLE|0|5
+001032|generatingApplication|table|GENERATING APPLICATION|CODE TABLE|0|0|8|CODE TABLE|0|3
+001033|centre|table|IDENTIFICATION OF ORIGINATING/GENERATING CENTRE|CODE TABLE|0|0|8|CODE TABLE|0|3
+001034|subCentre|table|IDENTIFICATION OF ORIGINATING/GENERATING SUB-CENTRE|CODE TABLE|0|0|8|CODE TABLE|0|3
+001035|centre|table|ORIGINATING CENTRE|Common CODE TABLE C-11|0|0|16|Common CODE TABLE C-11|0|5
+001036|agencyInChargeOfOperatingObservingPlatform|table|AGENCY IN CHARGE OF OPERATING THE OBSERVING PLATFORM|CODE TABLE|0|0|20|CODE TABLE|0|7
+001037|sigmetSequenceIdentifier|string|SIGMET SEQUENCE IDENTIFIER|CCITT IA5|0|0|24|Character|0|3
+001041|absolutePlatformVelocityFirstComponent|double|ABSOLUTE PLATFORM VELOCITY - FIRST COMPONENT (SEE NOTE 6)|m/s|5|-1073741824|31|m/s|5|10
+001042|absolutePlatformVelocitySecondComponent|double|ABSOLUTE PLATFORM VELOCITY - SECOND COMPONENT (SEE NOTE 6)|m/s|5|-1073741824|31|m/s|5|10
+001043|absolutePlatformVelocityThirdComponent|double|ABSOLUTE PLATFORM VELOCITY - THIRD COMPONENT (SEE NOTE 6)|m/s|5|-1073741824|31|m/s|5|10
+001050|platformTransmitterIdNumber|long|PLATFORM TRANSMITTER ID NUMBER|Numeric|0|0|17|Numeric|0|6
+001051|platformTransmitterIdNumber|string|PLATFORM TRANSMITTER ID NUMBER|CCITT IA5|0|0|96|Character|0|12
+001060|aircraftReportingPointBeaconIdentifier|string|AIRCRAFT REPORTING POINT (BEACON IDENTIFIER)|CCITT IA5|0|0|64|Character|0|8
+001062|shortIcaoLocationIndicator|string|SHORT ICAO LOCATION INDICATOR|CCITT IA5|0|0|32|Character|0|4
+001063|icaoLocationIndicator|string|ICAO LOCATION INDICATOR|CCITT IA5|0|0|64|Character|0|8
+001064|runwayDesignator|string|RUNWAY DESIGNATOR|CCITT IA5|0|0|32|Character|0|4
+001065|icaoRegionIdentifier|string|ICAO REGION IDENTIFIER|CCITT IA5|0|0|256|Character|0|32
+001075|tideStationIdentification|string|TIDE STATION IDENTIFICATION|CCITT IA5|0|0|40|Character|0|5
+001080|shipLineNumberAccordingToSoop|string|SHIP LINE NUMBER ACCORDING TO SOOP|CCITT IA5|0|0|32|Character|0|4
+001081|radiosondeSerialNumber|string|RADIOSONDE SERIAL NUMBER|CCITT IA5|0|0|160|Character|0|20
+001082|radiosondeAscensionNumber|long|RADIOSONDE ASCENSION NUMBER (SEE NOTE 12)|Numeric|0|0|14|Numeric|0|4
+001083|radiosondeReleaseNumber|long|RADIOSONDE RELEASE NUMBER (SEE NOTE 12)|Numeric|0|0|3|Numeric|0|1
+001085|observingPlatformManufacturerModel|string|OBSERVING PLATFORM MANUFACTURER'S MODEL|CCITT IA5|0|0|160|Character|0|20
+001086|observingPlatformManufacturerSerialNumber|string|OBSERVING PLATFORM MANUFACTURER'S SERIAL NUMBER|CCITT IA5|0|0|256|Character|0|32
+001087|marineObservingPlatformIdentifier|long|WMO MARINE OBSERVING PLATFORM EXTENDED IDENTIFIER|Numeric|0|0|23|Numeric|0|7
+001090|techniqueForMakingUpInitialPerturbations|table|TECHNIQUE FOR MAKING UP INITIAL PERTURBATIONS|CODE TABLE|0|0|8|CODE TABLE|0|3
+001091|ensembleMemberNumber|long|ENSEMBLE MEMBER NUMBER|Numeric|0|0|10|Numeric|0|4
+001092|ensembleForecastType|table|TYPE OF ENSEMBLE FORECAST|CODE TABLE|0|0|8|CODE TABLE|0|3
+001093|balloonLotNumber|string|BALLOON LOT NUMBER|CCITT IA5|0|0|96|Character|0|12
+001094|wbanNumber|long|WBAN NUMBER|Numeric|0|0|17|Numeric|0|5
+001095|observerIdentification|string|OBSERVER IDENTIFICATION|CCITT IA5|0|0|32|Character|0|4
+001096|stationAcquisition|string|STATION ACQUISITION|CCITT IA5|0|0|160|Character|0|20
+001101|stateIdentifier|table|STATE IDENTIFIER|CODE TABLE|0|0|10|CODE TABLE|0|3
+001102|stationNumber|long|NATIONAL STATION IDENTIFIER|Numeric|0|0|30|Numeric|0|9
+001124|gridPointIdentifier|long|GRID POINT IDENTIFIER|Numeric|0|0|24|Numeric|0|8
+001144|snapshotIdentifier|long|SNAPSHOT IDENTIFIER|Numeric|0|0|31|Numeric|0|10
+002001|stationType|table|TYPE OF STATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002002|instrumentationForWindMeasurement|flag|TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+002003|measuringEquipmentType|table|TYPE OF MEASURING EQUIPMENT USED|CODE TABLE|0|0|4|CODE TABLE|0|2
+002004|typeOfInstrumentationForEvaporationMeasurement|table|TYPE OF INSTRUMENTATION FOR EVAPORATION MEASUREMENT OR TYPE OF C|CODE TABLE|0|0|4|CODE TABLE|0|2
+002005|temperatureObservationPrecision|double|PRECISION OF TEMPERATURE OBSERVATION|K|2|0|7|K|2|3
+002011|radiosondeType|table|RADIOSONDE TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+002012|radiosondeComputationalMethod|table|RADIOSONDE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002013|solarAndInfraredRadiationCorrection|table|SOLAR AND INFRARED RADIATION CORRECTION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002014|trackingTechniqueOrStatusOfSystem|table|TRACKING TECHNIQUE/STATUS OF SYSTEM USED|CODE TABLE|0|0|7|CODE TABLE|0|3
+002015|radiosondeCompleteness|table|RADIOSONDE COMPLETENESS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002016|radiosondeConfiguration|flag|RADIOSONDE CONFIGURATION|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+002019|satelliteInstruments|table|SATELLITE INSTRUMENTS|CODE TABLE|0|0|11|CODE TABLE|0|4
+002020|satelliteClassification|table|SATELLITE CLASSIFICATION|CODE TABLE|0|0|9|CODE TABLE|0|3
+002021|satelliteInstrumentDataUsedInProcessing|flag|SATELLITE INSTRUMENT DATA USED IN PROCESSING|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+002022|satelliteDataProcessingTechnique|flag|SATELLITE DATA-PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002023|satelliteDerivedWindComputationMethod|table|SATELLITE DERIVED WIND COMPUTATION METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002024|meanHumidityComputationalMethod|table|INTEGRATED MEAN HUMIDITY COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002025|satelliteChannelsUsedInComputation|flag|SATELLITE CHANNEL(S) USED IN COMPUTATION|FLAG TABLE|0|0|25|FLAG TABLE|0|9
+002026|crossTrackResolution|double|CROSS TRACK RESOLUTION|m|2|0|12|m|2|4
+002027|alongTrackResolution|double|ALONG TRACK RESOLUTION|m|2|0|12|m|2|4
+002028|segmentSizeAtNadirInXDirection|long|SEGMENT SIZE AT NADIR IN X DIRECTION|m|0|0|18|m|0|6
+002029|segmentSizeAtNadirInYDirection|long|SEGMENT SIZE AT NADIR IN Y DIRECTION|m|0|0|18|m|0|6
+002030|methodOfCurrentMeasurement|table|METHOD OF CURRENT MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002031|durationAndTimeOfCurrentMeasurement|table|DURATION AND TIME OF CURRENT MEASUREMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+002032|indicatorForDigitization|table|INDICATOR FOR DIGITIZATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002033|methodOfSalinityOrDepthMeasurement|table|METHOD OF SALINITY/DEPTH MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002034|drogueType|table|DROGUE TYPE|CODE TABLE|0|0|5|CODE TABLE|0|2
+002035|cableLength|long|CABLE LENGTH|m|0|0|9|m|0|3
+002036|buoyType|table|BUOY TYPE|CODE TABLE|0|0|2|CODE TABLE|0|1
+002037|methodOfTidalObservation|table|METHOD OF TIDAL OBSERVATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+002038|methodOfWaterTemperatureAndOrOrSalinityMeasurement|table|METHOD OF WATER TEMPERATURE AND/OR SALINITY MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002039|methodOfWetBulbTemperatureMeasurement|table|METHOD OF WET-BULB TEMPERATURE MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002040|methodOfRemovingVelocityAndMotionOfPlatformFromCurrent|table|METHOD OF REMOVING VELOCITY AND MOTION OF PLATFORM FROM CURRENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002041|methodForEstimatingReportsRelatedToSynopticFeatures|table|METHOD FOR ESTIMATING REPORTS RELATED TO SYNOPTIC FEATURES|CODE TABLE|0|0|6|CODE TABLE|0|2
+002042|indicatorForSeaSurfaceCurrentSpeed|table|INDICATOR FOR SEA SURFACE CURRENT SPEED|CODE TABLE|0|0|2|CODE TABLE|0|1
+002044|indicatorForMethodOfCalculatingSpectralWaveData|table|INDICATOR FOR METHOD OF CALCULATING SPECTRAL WAVE DATA|CODE TABLE|0|0|4|CODE TABLE|0|2
+002045|platformType|table|INDICATOR FOR TYPE OF PLATFORM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002046|waveMeasurementInstrumentation|table|WAVE MEASUREMENT INSTRUMENTATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002048|satelliteSensorIndicator|table|SATELLITE SENSOR INDICATOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002049|geostationarySatelliteDataProcessingTechnique|flag|GEOSTATIONARY SATELLITE DATA-PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002050|geostationarySounderSatelliteChannels|flag|GEOSTATIONARY SOUNDER SATELLITE CHANNELS USED|FLAG TABLE|0|0|20|FLAG TABLE|0|7
+002051|indicatorToSpecifyObservingMethodForExtremeTemperatures|table|INDICATOR TO SPECIFY OBSERVING METHOD FOR EXTREME TEMPERATURES|CODE TABLE|0|0|4|CODE TABLE|0|2
+002052|geostationaryImagerSatelliteChannels|flag|GEOSTATIONARY IMAGER SATELLITE CHANNELS USED|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+002053|goesBrightnessTemperatureCharacteristics|table|GOES-I/M BRIGHTNESS TEMPERATURE CHARACTERISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002054|goesSoundingsParameter|table|GOES-I/M SOUNDINGS PARAMETER CHARACTERISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002055|geostationarySoundingsStatisticalParameters|table|GEOSTATIONARY SOUNDINGS STATISTICAL PARAMETERS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002056|geostationarySoundingsAccuracyStatistics|table|GEOSTATIONARY SOUNDINGS ACCURACY STATISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002057|originOfFirstGuessInformationForGoesIOrMSoundings|table|ORIGIN OF FIRST GUESS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002058|validTimesOfFirstGuessInformationForGoesIOrMSoundings|table|VALID TIMES OF FIRST GUESS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002059|originOfAnalysisInformationForGoesIOrMSoundings|table|ORIGIN OF ANALYSIS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002060|originOfSurfaceInformationForGoesIOrMSoundings|table|ORIGIN OF SURFACE INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002061|aircraftNavigationalSystem|table|AIRCRAFT NAVIGATIONAL SYSTEM|CODE TABLE|0|0|3|CODE TABLE|0|1
+002062|aircraftDataRelaySystemType|table|TYPE OF AIRCRAFT DATA RELAY SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002063|aircraftRollAngle|double|AIRCRAFT ROLL ANGLE|deg|2|-18000|16|deg|2|5
+002064|aircraftRollAngleQuality|table|AIRCRAFT ROLL ANGLE QUALITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+002065|acarsGroundReceivingStation|string|ACARS GROUND RECEIVING STATION|CCITT IA5|0|0|40|Character|0|5
+002066|radiosondeGroundReceivingSystem|table|RADIOSONDE GROUND RECEIVING SYSTEM|CODE TABLE|0|0|6|CODE TABLE|0|2
+002067|radiosondeOperatingFrequency|long|RADIOSONDE OPERATING FREQUENCY|Hz|-5|0|15|Hz|-5|5
+002070|originalSpecificationOfLatitudeOrLongitude|table|ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002071|spectrographicWavelength|double|SPECTROGRAPHIC WAVELENGTH|m|13|0|30|m|13|10
+002080|balloonManufacturer|table|BALLOON MANUFACTURER|CODE TABLE|0|0|6|CODE TABLE|0|2
+002081|balloonType|table|TYPE OF BALLOON|CODE TABLE|0|0|5|CODE TABLE|0|2
+002082|weightOfBalloon|double|WEIGHT OF BALLOON|kg|3|0|12|kg|3|4
+002083|balloonShelterType|table|TYPE OF BALLOON SHELTER|CODE TABLE|0|0|4|CODE TABLE|0|2
+002084|typeOfGasUsedInBalloon|table|TYPE OF GAS USED IN BALLOON|CODE TABLE|0|0|4|CODE TABLE|0|2
+002085|amountOfGasUsedInBalloon|double|AMOUNT OF GAS USED IN BALLOON|kg|3|0|13|kg|3|4
+002086|balloonFlightTrainLength|double|BALLOON FLIGHT TRAIN LENGTH|m|1|0|10|m|1|4
+002091|entrySensor4Or20Ma|double|ENTRY SENSOR 4/20 MA|A|4|0|10|A|4|3
+002095|pressureSensorType|table|TYPE OF PRESSURE SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002096|temperatureSensorType|table|TYPE OF TEMPERATURE SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002097|humiditySensorType|table|TYPE OF HUMIDITY SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002098|typeOfWaveSensor|table|TYPE OF WAVE SENSOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002099|polarization|table|POLARISATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+002100|radarConstant|double|RADAR CONSTANT|dB|1|0|12|dB|1|4
+002101|antennaType|table|TYPE OF ANTENNA|CODE TABLE|0|0|4|CODE TABLE|0|2
+002102|antennaHeightAboveTowerBase|long|ANTENNA HEIGHT ABOVE TOWER BASE|m|0|0|8|m|0|3
+002103|radome|flag|RADOME|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+002104|antennaPolarization|table|ANTENNA POLARISATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002105|maximumAntennaGain|long|MAXIMUM ANTENNA GAIN|dB|0|0|6|dB|0|2
+002106|3DbBeamwidth|double|3-DB BEAMWIDTH|deg|1|0|6|deg|1|2
+002107|sidelobeSuppression|long|SIDELOBE SUPPRESSION|dB|0|0|6|dB|0|2
+002108|crosspolDiscriminationOnAxis|long|CROSSPOL DISCRIMINATION (ON AXIS)|dB|0|0|6|dB|0|2
+002109|antennaSpeedAzimuth|double|ANTENNA SPEED (AZIMUTH)|deg/s|2|0|12|deg/s|2|4
+002110|antennaSpeedElevation|double|ANTENNA SPEED (ELEVATION)|deg/s|2|0|12|deg/s|2|4
+002111|radarIncidenceAngle|double|RADAR INCIDENCE ANGLE|deg|1|0|10|deg|1|4
+002112|radarLookAngle|double|RADAR LOOK ANGLE|deg|1|0|12|deg|1|4
+002113|numberOfAzimuthLooks|long|NUMBER OF AZIMUTH LOOKS|Numeric|0|0|4|Numeric|0|2
+002114|antennaEffectiveSurfaceArea|long|ANTENNA EFFECTIVE SURFACE AREA|m2|0|0|15|m2|0|5
+002115|surfaceObservingEquipmentType|table|TYPE OF SURFACE OBSERVING EQUIPMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+002116|percentageOf320MhzBandProcessed|long|PERCENTAGE OF 320 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002117|percentageOf80MhzBandProcessed|long|PERCENTAGE OF 80 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002118|percentageOf20MhzBandProcessed|long|PERCENTAGE OF 20 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002119|ra2InstrumentOperations|table|RA-2 INSTRUMENT OPERATIONS|CODE TABLE|0|0|3|CODE TABLE|0|1
+002120|oceanWaveFrequency|double|OCEAN WAVE FREQUENCY|Hz|3|0|10|Hz|3|4
+002121|meanFrequency|long|MEAN FREQUENCY|Hz|-8|0|7|Hz|-8|3
+002122|frequencyAgilityRange|long|FREQUENCY AGILITY RANGE|Hz|-6|-128|8|Hz|-6|3
+002123|peakPower|long|PEAK POWER|W|-4|0|7|W|-4|3
+002124|averagePower|long|AVERAGE POWER|W|-1|0|7|W|-1|3
+002125|pulseRepetitionFrequency|long|PULSE REPETITION FREQUENCY|Hz|-1|0|8|Hz|-1|3
+002126|pulseWidth|double|PULSE WIDTH|s|7|0|6|s|7|2
+002127|receiverIntermediateFrequency|long|RECEIVER INTERMEDIATE FREQUENCY|Hz|-6|0|7|Hz|-6|3
+002128|intermediateFrequencyBandwidth|long|INTERMEDIATE FREQUENCY BANDWIDTH|Hz|-5|0|6|Hz|-5|2
+002129|minimumDetectableSignal|long|MINIMUM DETECTABLE SIGNAL|dB|0|-150|5|dB|0|3
+002130|dynamicRange|long|DYNAMIC RANGE|dB|0|0|7|dB|0|3
+002131|sensitivityTimeControl|flag|SENSITIVITY TIME CONTROL (STC)|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+002132|azimuthPointingAccuracy|double|AZIMUTH POINTING ACCURACY|deg|2|0|6|deg|2|2
+002133|elevationPointingAccuracy|double|ELEVATION POINTING ACCURACY|deg|2|0|6|deg|2|2
+002134|antennaBeamAzimuth|double|ANTENNA BEAM AZIMUTH|deg|2|0|16|deg|2|5
+002135|antennaElevation|double|ANTENNA ELEVATION|deg|2|-9000|15|deg|2|5
+002136|rangeProcessedByRangeAttenuationCorrection|long|RANGE PROCESSED BY RANGE ATTENUATION CORRECTION|m|-3|0|16|m|-3|5
+002140|satelliteRadarBeamAzimuthAngle|long|SATELLITE RADAR BEAM AZIMUTH ANGLE|deg|0|0|9|deg|0|3
+002141|measurementType|string|MEASUREMENT TYPE|CCITT IA5|0|0|24|Character|0|3
+002142|ozoneInstrument|string|OZONE INSTRUMENT SERIAL NUMBER/ IDENTIFICATION|CCITT IA5|0|0|32|Character|0|4
+002143|ozoneInstrumentType|table|OZONE INSTRUMENT TYPE|CODE TABLE|0|0|7|CODE TABLE|0|3
+002144|lightSourceTypeForBrewerSpectrophotometer|table|LIGHT SOURCE TYPE FOR BREWER SPECTRO PHOTOMETER|CODE TABLE|0|0|4|CODE TABLE|0|2
+002145|wavelengthSettingForDobsonInstruments|table|WAVE LENGTH SETTING FOR DOBSON INSTRUMENTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002146|sourceConditionsForDobsonInstruments|table|SOURCE CONDITIONS FOR DOBSON INSTRUMENTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002148|dataCollectionLocationSystem|table|DATA COLLECTION AND/OR LOCATION SYSTEM|CODE TABLE|0|0|5|CODE TABLE|0|2
+002149|dataBuoyType|table|TYPE OF DATA BUOY|CODE TABLE|0|0|6|CODE TABLE|0|2
+002150|tovsOrAtovsOrAvhrrInstrumentationChannelNumber|table|TOVS/ATOVS/AVHRR INSTRUMENTATION CHANNEL NUMBER|CODE TABLE|0|0|6|CODE TABLE|0|2
+002151|radiometerIdentifier|table|RADIOMETER IDENTIFIER|CODE TABLE|0|0|11|CODE TABLE|0|4
+002152|satelliteInstrumentUsedInDataProcessing|flag|SATELLITE INSTRUMENT USED IN DATA PROCESSING(6)|FLAG TABLE|0|0|31|FLAG TABLE|0|10
+002153|satelliteChannelCentreFrequency|long|SATELLITE CHANNEL CENTRE FREQUENCY|Hz|-8|0|26|Hz|-8|8
+002154|satelliteChannelBandWidth|long|SATELLITE CHANNEL BAND WIDTH|Hz|-8|0|26|Hz|-8|8
+002156|percentageOfValidKuOceanRetrackerMeasurements|long|PERCENTAGE OF VALID KU OCEAN RETRACKER MEASUREMENTS|%|0|0|7|%|0|3
+002157|percentageOfValidSOceanRetrackerMeasurements|long|PERCENTAGE OF VALID S OCEAN RETRACKER MEASUREMENTS|%|0|0|7|%|0|3
+002158|ra2Instrument|flag|RA-2 INSTRUMENT|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+002159|mwrInstrument|flag|MWR INSTRUMENT|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002160|radarWaveLength|table|WAVE LENGTH OF THE RADAR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002163|heightAssignmentMethod|table|HEIGHT ASSIGNMENT METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002164|tracerCorrelationMethod|table|TRACER CORRELATION METHOD|CODE TABLE|0|0|3|CODE TABLE|0|1
+002166|radianceType|table|RADIANCE TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002167|radianceComputationalMethod|table|RADIANCE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002168|hydrostaticPressureOfLowerEndOfCableThermistorString|long|HYDROSTATIC PRESSURE OF LOWER END OF CABLE (THERMISTOR STRING)|Pa|-3|0|16|kPa|0|5
+002169|anemometerType|table|ANEMOMETER TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002172|productTypeForRetrievedAtmosphericGases|table|PRODUCT TYPE FOR RETRIEVED ATMOSPHERIC GASES|CODE TABLE|0|0|8|CODE TABLE|0|3
+002173|squareOfOffNadirAngle|double|SQUARE OF THE OFF NADIR ANGLE (7)|deg2|4|0|10|deg2|4|4
+002174|meanAcrossTrackPixelNumber|long|MEAN ACROSS TRACK PIXEL NUMBER|Numeric|0|0|9|Numeric|0|3
+002175|methodOfPrecipitationMeasurement|table|METHOD OF PRECIPITATION MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002176|methodOfStateOfGroundMeasurement|table|METHOD OF STATE OF GROUND MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002177|methodOfSnowDepthMeasurement|table|METHOD OF SNOW DEPTH MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002178|methodOfLiquidContentMeasurementOfPrecipitation|table|METHOD OF LIQUID CONTENT MEASUREMENT OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002179|skyConditionAlgorithmType|table|TYPE OF SKY CONDITION ALGORITHM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002180|mainPresentWeatherDetectingSystem|table|MAIN PRESENT WEATHER DETECTING SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002181|supplementaryPresentWeatherSensor|flag|SUPPLEMENTARY PRESENT WEATHER SENSOR|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+002182|visibilityMeasurementSystem|table|VISIBILITY MEASUREMENT SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002183|cloudDetectionSystem|table|CLOUD DETECTION SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002184|lightningDetectionSensorType|table|TYPE OF LIGHTNING DETECTION SENSOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002185|methodOfEvaporationMeasurement|table|METHOD OF EVAPORATION MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002186|capabilityToDetectPrecipitationPhenomena|flag|CAPABILITY TO DETECT PRECIPITATION PHENOMENA|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+002187|capabilityToDetectOtherWeatherPhenomena|flag|CAPABILITY TO DETECT OTHER WEATHER PHENOMENA|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+002188|capabilityToDetectObscuration|flag|CAPABILITY TO DETECT OBSCURATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+002189|capabilityToDiscriminateLightningStrikes|flag|CAPABILITY TO DISCRIMINATE LIGHTNING STRIKES|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+002190|lagrangianDrifterSubmergenceTimeSubmerged|long|LAGRANGIAN DRIFTER SUBMERGENCE (% TIME SUBMERGED)|%|0|0|7|%|0|3
+004001|year|long|YEAR|a|0|0|12|a|0|4
+004002|month|long|MONTH|mon|0|0|4|mon|0|2
+004003|day|long|DAY|d|0|0|6|d|0|2
+004004|hour|long|HOUR|h|0|0|5|h|0|2
+004005|minute|long|MINUTE|min|0|0|6|min|0|2
+004006|second|long|SECOND|s|0|0|6|s|0|2
+004007|secondsWithinAMinuteMicrosecond|double|SECONDS WITHIN A MINUTE (MICROSECOND ACCURACY)|s|6|0|26|s|6|8
+004011|timeIncrement|long|TIME INCREMENT|a|0|-1024|11|a|0|4
+004012|timeIncrement|long|TIME INCREMENT|mon|0|-1024|11|mon|0|4
+004013|timeIncrement|long|TIME INCREMENT|d|0|-1024|11|d|0|4
+004014|timeIncrement|long|TIME INCREMENT|h|0|-1024|11|h|0|4
+004015|timeIncrement|long|TIME INCREMENT|min|0|-2048|12|min|0|4
+004016|timeIncrement|long|TIME INCREMENT|s|0|-4096|13|s|0|4
+004017|referenceTimePeriodForAccumulatedOrExtremeData|long|REFERENCE TIME PERIOD FOR ACCUMULATED OR EXTREME DATA|min|0|-1440|12|min|0|4
+004021|timePeriod|long|TIME PERIOD OR DISPLACEMENT|a|0|-1024|11|a|0|4
+004022|timePeriod|long|TIME PERIOD OR DISPLACEMENT|mon|0|-1024|11|mon|0|4
+004023|timePeriod|long|TIME PERIOD OR DISPLACEMENT|d|0|-1024|11|d|0|4
+004024|timePeriod|long|TIME PERIOD OR DISPLACEMENT|h|0|-2048|12|h|0|4
+004025|timePeriod|long|TIME PERIOD OR DISPLACEMENT|min|0|-2048|12|min|0|4
+004026|timePeriod|long|TIME PERIOD OR DISPLACEMENT|s|0|-4096|13|s|0|4
+004031|durationOfTimeRelatingToFollowingValue|long|DURATION OF TIME RELATING TO FOLLOWING VALUE|h|0|0|8|h|0|3
+004032|durationOfTimeRelatingToFollowingValue|long|DURATION OF TIME RELATING TO FOLLOWING VALUE|min|0|0|6|min|0|2
+004041|timeDifferenceUtcLmt|long|TIME DIFFERENCE, UTC -LMT (SEE NOTE 6)|min|0|-1440|12|min|0|4
+004043|dayOfYear|long|DAY OF THE YEAR|d|0|0|9|d|0|3
+004051|principalTimeOfDailyReadingOfMaximumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MAXIMUM TEMPERATURE|h|0|0|5|h|0|2
+004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2
+004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2
+004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
+004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
+004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
+004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
+004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2
+004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
+005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005012|latitudeIncrement|double|LATITUDE INCREMENT (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005015|latitudeDisplacement|double|LATITUDE DISPLACEMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005016|latitudeDisplacement|double|LATITUDE DISPLACEMENT (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005021|bearingOrAzimuth|double|BEARING OR AZIMUTH|deg|2|0|16|deg|2|5
+005022|solarAzimuth|double|SOLAR AZIMUTH|deg|2|0|16|deg|2|5
+005023|sunToSatelliteAzimuthDifference|double|SUN TO SATELLITE AZIMUTH DIFFERENCE|deg|1|-1800|12|deg|1|4
+005030|directionSpectral|long|DIRECTION (SPECTRAL)|deg|0|0|12|deg|0|4
+005031|rowNumber|long|ROW NUMBER|Numeric|0|0|12|Numeric|0|4
+005033|pixelSizeOnHorizontal1|long|PIXEL SIZE ON HORIZONTAL - 1|m|-1|0|16|m|-1|5
+005034|alongTrackRowNumber|long|ALONG TRACK ROW NUMBER|Numeric|0|0|11|Numeric|0|4
+005036|shipTransectNumberAccordingToSoop|long|SHIP TRANSECT NUMBER ACCORDING TO SOOP|Numeric|0|0|7|Numeric|0|2
+005040|orbitNumber|long|ORBIT NUMBER|Numeric|0|0|24|Numeric|0|8
+005041|scanLineNumber|long|SCAN LINE NUMBER|Numeric|0|0|8|Numeric|0|3
+005042|channelNumber|long|CHANNEL NUMBER|Numeric|0|0|6|Numeric|0|2
+005043|fieldOfViewNumber|long|FIELD OF VIEW NUMBER|Numeric|0|0|8|Numeric|0|3
+005044|satelliteCycleNumber|long|SATELLITE CYCLE NUMBER|Numeric|0|0|11|Numeric|0|4
+005052|channelNumberIncrement|long|CHANNEL NUMBER INCREMENT|Numeric|0|0|5|Numeric|0|2
+005053|fieldOfViewNumberIncrement|long|FIELD OF VIEW NUMBER INCREMENT|Numeric|0|0|5|Numeric|0|2
+005060|yAngularPositionFromCentreOfGravity|double|Y ANGULAR POSITION FROM CENTRE OF GRAVITY|deg|6|-8000000|24|deg|6|8
+005061|zAngularPositionFromCentreOfGravity|double|Z ANGULAR POSITION FROM CENTRE OF GRAVITY|deg|6|-8000000|24|deg|6|8
+006001|longitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006002|longitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006011|longitudeIncrement|double|LONGITUDE INCREMENT (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006012|longitudeIncrement|double|LONGITUDE INCREMENT (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006015|longitudeDisplacement|double|LONGITUDE DISPLACEMENT (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006016|longitudeDisplacement|double|LONGITUDE DISPLACEMENT (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006021|distance|long|DISTANCE|m|-1|0|13|m|-1|4
+006030|waveNumberSpectral|double|WAVE NUMBER (SPECTRAL)|rad/m|5|0|13|rad/m|5|4
+006031|columnNumber|long|COLUMN NUMBER|Numeric|0|0|12|Numeric|0|4
+006033|pixelSizeOnHorizontal2|long|PIXEL SIZE ON HORIZONTAL - 2|m|-1|0|16|m|-1|5
+006034|crossTrackCellNumber|long|CROSS-TRACK CELL NUMBER|Numeric|0|0|7|Numeric|0|3
+006040|radiusOfConfidence|long|RADIUS OF CONFIDENCE|m|0|0|13|m|0|4
+007001|heightOfStation|long|HEIGHT OF STATION (SEE NOTE 1)|m|0|-400|15|m|0|5
+007002|height|long|HEIGHT OR ALTITUDE|m|-1|-40|16|m|-1|5
+007003|geopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|m2 s-2|-1|6
+007004|pressure|long|PRESSURE|Pa|-1|0|14|Pa|-1|5
+007005|heightIncrement|long|HEIGHT INCREMENT|m|0|-400|12|m|0|4
+007006|heightAboveStation|long|HEIGHT ABOVE STATION|m|0|0|15|m|0|5
+007007|height|long|HEIGHT|m|0|-1000|17|m|0|6
+007008|geopotential|long|GEOPOTENTIAL|m2 s-2|0|-10000|20|m2 s-2|0|7
+007009|geopotentialHeight|long|GEOPOTENTIAL HEIGHT|gpm|0|-1000|17|gpm|0|5
+007010|flightLevel|long|FLIGHT LEVEL|m|0|-1024|16|ft|-1|5
+007012|gridPointAltitude|double|GRID POINT ALTITUDE|m|2|-50000|20|m|2|7
+007021|elevation|double|ELEVATION (SEE NOTE 2)|deg|2|-9000|15|deg|2|5
+007022|solarElevation|double|SOLAR ELEVATION|deg|2|-9000|15|deg|2|5
+007024|satelliteZenithAngle|double|SATELLITE ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+007025|solarZenithAngle|double|SOLAR ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+007026|satelliteZenithAngle|double|SATELLITE ZENITH ANGLE|deg|4|-900000|21|deg|4|7
+007030|heightOfStationGroundAboveMeanSeaLevel|double|HEIGHT OF STATION GROUND ABOVE MEAN SEA LEVEL (SEE NOTE 3)|m|1|-4000|17|m|1|5
+007031|heightOfBarometerAboveMeanSeaLevel|double|HEIGHT OF BAROMETER ABOVE MEAN SEA LEVEL (SEE NOTE 4)|m|1|-4000|17|m|1|5
+007032|heightOfSensorAboveLocalGroundOrDeckOfMarinePlatform|double|HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM)|m|2|0|16|m|2|5
+007033|heightOfSensorAboveWaterSurface|double|HEIGHT OF SENSOR ABOVE WATER SURFACE (SEE NOTE 6)|m|1|0|12|m|1|4
+007040|impactParameter|double|IMPACT PARAMETER (SEE NOTE 8)|m|1|62000000|22|m|1|8
+007061|depthBelowLandSurface|double|DEPTH BELOW LAND SURFACE|m|2|0|14|m|2|5
+007062|depthBelowWaterSurface|double|DEPTH BELOW SEA/WATER SURFACE|m|1|0|17|m|1|6
+007063|depthBelowWaterSurface|double|DEPTH BELOW SEA/WATER SURFACE|m|2|0|20|m|2|7
+007064|representativeHeightOfSensorAboveStation|long|REPRESENTATIVE HEIGHT OF SENSOR ABOVE STATION (SEE NOTE 7)|m|0|0|4|m|0|2
+007065|waterPressure|long|WATER PRESSURE|Pa|-3|0|17|Pa|0|6
+007070|drogueDepth|long|DROGUE DEPTH|m|0|0|10|m|0|4
+008001|verticalSoundingSignificance|flag|VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|7|FLAG TABLE|0|3
+008002|verticalSignificanceSurfaceObservations|table|VERTICAL SIGNIFICANCE (SURFACE OBSERVATIONS)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008003|verticalSignificanceSatelliteObservations|table|VERTICAL SIGNIFICANCE (SATELLITE OBSERVATIONS)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008004|phaseOfAircraftFlight|table|PHASE OF AIRCRAFT FLIGHT|CODE TABLE|0|0|3|CODE TABLE|0|1
+008005|meteorologicalAttributeSignificance|table|METEOROLOGICAL ATTRIBUTE SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008006|ozoneVerticalSoundingSignificance|flag|OZONE VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+008007|dimensionalSignificance|table|DIMENSIONAL SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008008|radiationVerticalSoundingSignificance|flag|RADIATION VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+008009|detailedPhaseOfFlight|table|DETAILED PHASE OF FLIGHT|CODE TABLE|0|0|4|CODE TABLE|0|2
+008010|surfaceQualifierForTemperatureData|table|SURFACE QUALIFIER (TEMPERATURE DATA)|CODE TABLE|0|0|5|CODE TABLE|0|2
+008011|meteorologicalFeature|table|METEOROLOGICAL FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008012|landOrSeaQualifier|table|LAND/SEA QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008013|dayOrNightQualifier|table|DAY/NIGHT QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008014|qualifierForRunwayVisualRange|table|QUALIFIER FOR RUNWAY VISUAL RANGE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008016|changeQualifierOfATrendTypeForecastOrAnAerodromeForecast|table|CHANGE QUALIFIER OF A TREND-TYPE FORECAST OR AN AERODROME FORECA|CODE TABLE|0|0|3|CODE TABLE|0|1
+008017|qualifierOfTimeWhenForecastChangeExpected|table|QUALIFIER OF THE TIME WHEN THE FORECAST CHANGE IS EXPECTED|CODE TABLE|0|0|2|CODE TABLE|0|1
+008018|seawindsLandOrIceSurfaceType|flag|SEAWINDS LAND/ICE SURFACE TYPE|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+008019|qualifierForFollowingCentreIdentifier|table|QUALIFIER FOR FOLLOWING CENTRE IDENTIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008020|totalNumberOfMissingEntitiesWithRespectToAccumulationOrAverage|long|TOTAL NUMBER OF MISSING ENTITIES (WITH RESPECT TO ACCUMULATION O|Numeric|0|0|16|Numeric|0|5
+008021|timeSignificance|table|TIME SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+008022|totalNumberWithRespectToAccumulationOrAverage|long|TOTAL NUMBER (WITH RESPECT TO ACCUMULATION OR AVERAGE)|Numeric|0|0|16|Numeric|0|5
+008023|firstOrderStatistics|table|FIRST ORDER STATISTICS|CODE TABLE|0|0|6|CODE TABLE|0|2
+008024|differenceStatistics|table|DIFFERENCE STATISTICS|CODE TABLE|0|0|6|CODE TABLE|0|2
+008025|timeDifferenceQualifier|table|TIME DIFFERENCE QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008026|matrixSignificance|table|MATRIX SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008029|surfaceType|table|REMOTLY SENSED SURFACE TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+008030|manualOnCodesVolumeI1SectionCCodeTableFromWhichDataAreDerived|long|MANUAL ON CODES (VOLUME I.1, SECTION C) CODE TABLE FROM WHICH DA|Numeric|0|0|13|Numeric|0|4
+008031|dataCategoryCrexTableA|long|DATA CATEGORY CREX TABLE A|Numeric|0|0|8|Numeric|0|3
+008033|methodOfDerivationOfPercentageConfidence|table|METHOD OF DERIVATION OF PERCENTAGE CONFIDENCE|CODE TABLE|0|0|7|CODE TABLE|0|3
+008035|monitoringExerciseType|table|TYPE OF MONITORING EXERCISE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008036|typeOfCentreOrStationPerformingMonitoring|table|TYPE OF CENTRE OR STATION PERFORMING MONITORING|CODE TABLE|0|0|3|CODE TABLE|0|1
+008039|timeSignificanceAviationForecast|table|TIME SIGNIFICANCE ( AVIATION FORECAST)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008040|flightLevelSignificance|table|FLIGHT LEVEL SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008041|dataSignificance|table|DATA SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+008042|extendedVerticalSoundingSignificance|flag|EXTENDED VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+008043|atmosphericChemical|table|ATMOSPHERIC CHEMICAL OR PHISICAL CONSTITUENT TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+008044|casRegistryNumber|string|CAS REGISTRY NUMBER|CCITT IA5|0|0|88|Character|0|11
+008045|particulateMatterCharacterization|table|PARTICULATE MATTER CHARACTERIZATION|CODE TABLE|0|0|8|CODE TABLE|0|3
+008049|numberOfObservations|long|NUMBER OF OBSERVATIONS|Numeric|0|0|8|Numeric|0|3
+008050|qualifierForNumberOfMissingValuesInCalculationOfStatistic|table|QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATIST|CODE TABLE|0|0|4|CODE TABLE|0|2
+008051|qualifierForNumberOfMissingValuesInCalculationOfStatistic|table|QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATIST|CODE TABLE|0|0|3|CODE TABLE|0|1
+008052|conditionForWhichNumberOfDaysOfOccurrenceFollows|table|CONDITION FOR WHICH NUMBER OF DAYS OF OCCURRENCE FOLLOWS|CODE TABLE|0|0|5|CODE TABLE|0|2
+008053|dayOfOccurrenceQualifier|table|DAY OF OCCURRENCE QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008054|qualifierForWindSpeedOrWindGusts|table|QUALIFIER FOR WIND SPEED OR WIND GUST|CODE TABLE|0|0|3|CODE TABLE|0|1
+008060|sampleScanningModeSignificance|table|SAMPLE SCANNING MODE SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008065|sunGlintIndicator|table|SUN-GLINT INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+008066|semiTransparencyIndicator|table|SEMI-TRANSPARENCY INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+008070|tovsOrAtovsProductQualifier|table|TOVS/ATOVS PRODUCT QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008072|pixelType|table|PIXEL(S) TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008074|altimeterEchoType|table|ALTIMETER ECHO TYPE|CODE TABLE|0|0|2|CODE TABLE|0|1
+008075|orbitQualifier|table|ASCENDING/DESCENDING ORBIT QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008076|band|table|TYPE OF BAND|CODE TABLE|0|0|6|CODE TABLE|0|2
+008077|radiometerSensedSurfaceType|table|RADIOMETER SENSED SURFACE TYPE|CODE TABLE|0|0|7|CODE TABLE|0|3
+008079|productStatus|table|PRODUCT STATUS|CODE TABLE|0|0|4|CODE TABLE|0|2
+008080|qualifierForGtsppQualityFlag|table|QUALIFIER FOR GTSPP QUALITY FLAG|CODE TABLE|0|0|6|CODE TABLE|0|2
+008081|equipmentType|table|TYPE OF EQUIPMENT|CODE TABLE|0|0|6|CODE TABLE|0|2
+008082|modificationOfSensorHeightToAnotherValue|table|(CBS) ARTIFICIAL CORRECTION OF SENSOR HEIGHT TO ANOTHER VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008083|nominalValueIndicator|flag|NOMINAL VALUE INDICATOR|FLAG TABLE|0|0|15|FLAG TABLE|0|5
+008085|beamIdentifier|table|BEAM IDENTIFIER|CODE TABLE|0|0|3|CODE TABLE|0|1
+008090|decimalScaleOfFollowingSignificands|long|DECIMAL SCALE|Numeric|0|-127|8|Numeric|0|3
+010001|heightOfLandSurface|long|HEIGHT OF LAND SURFACE|m|0|-400|15|m|0|5
+010002|height|long|HEIGHT|m|-1|-40|16|m|-1|5
+010003|geopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|m2 s-2|-1|6
+010004|pressure|long|PRESSURE|Pa|-1|0|14|Pa|-1|5
+010007|height|long|HEIGHT|m|0|-1000|17|m|0|6
+010008|geopotential|long|GEOPOTENTIAL|m2 s-2|0|-10000|20|m2 s-2|0|7
+010009|geopotentialHeight|long|GEOPOTENTIAL HEIGHT|gpm|0|-1000|17|gpm|0|5
+010010|minimumPressureReducedToMeanSeaLevel|long|MINIMUM PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010011|maximumPressureReducedToMeanSeaLevel|long|MAXIMUM PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010031|DistanceFromEarthCentreInDirectionOfNorthPole|double|IN DIRECTION OF THE NORTH POLE, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10
+010032|satelliteDistanceToEarthCentre|double|SATELLITE DISTANCE TO EARTH'S CENTRE|m|1|0|27|m|2|9
+010033|altitudePlatformToEllipsoid|double|ALTITUDE (PLATFORM TO ELLIPSOID)|m|1|0|27|m|2|9
+010034|earthRadius|double|EARTH RADIUS|m|1|0|27|m|2|9
+010035|earthLocalRadiusOfCurvature|double|EARTH'S LOCAL RADIUS OF CURVATURE|m|1|62000000|22|m|1|8
+010036|geoidUndulation|double|GEOID UNDULATION (SEE NOTE 4)|m|2|-15000|15|m|2|6
+010040|numberOfRetrievedLayers|long|NUMBER OF RETRIEVED LAYERS|Numeric|0|0|10|Numeric|0|4
+010050|standardDeviationAltitude|double|STANDARD DEVIATION ALTITUDE|m|2|0|16|m|2|5
+010051|pressureReducedToMeanSeaLevel|long|PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010052|altimeterSettingQnh|long|ALTIMETER SETTING (QNH)|Pa|-1|0|14|Pa|-1|5
+010060|pressureChange|long|PRESSURE CHANGE|Pa|-1|-1024|11|Pa|-1|4
+010061|3HourPressureChange|long|3-HOUR PRESSURE CHANGE|Pa|-1|-500|10|Pa|-1|4
+010062|24HourPressureChange|long|24-HOUR PRESSURE CHANGE|Pa|-1|-1000|11|Pa|-1|4
+010063|characteristicOfPressureTendency|table|CHARACTERISTIC OF PRESSURE TENDENCY|CODE TABLE|0|0|4|CODE TABLE|0|2
+010064|sigmetCruisingLevel|table|SIGMET CRUISING LEVEL|CODE TABLE|0|0|3|CODE TABLE|0|1
+010070|indicatedAircraftAltitude|long|INDICATED AIRCRAFT ALTITUDE|m|0|-400|16|m|0|5
+010080|viewingZenithAngle|double|VIEWING ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+010081|cogAltitudeAboveReferenceEllipsoid|double|ALTITUDE OF COG ABOVE REFERENCE ELLIPSOID|m|3|0|31|m|3|10
+010082|instantaneousAltitudeRate|double|INSTANTANEOUS ALTITUDE RATE|m/s|3|-65536|17|m/s|3|6
+010083|squaredOffNadirAngleOfSatelliteFromPlatformData|double|SQUARED OFF NADIR ANGLE OF THE SATELLITE FROM PLATFORM DATA|deg2|2|0|16|deg2|2|5
+010084|squaredOffNadirAngleOfSatelliteFromWaveformData|double|SQUARED OFF NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA|deg2|2|0|16|deg2|2|5
+010085|meanSeaSurfaceHeight|double|MEAN SEA SURFACE HEIGHT|m|3|-131072|18|m|3|6
+010086|geoidHeight|double|GEOID'S HEIGHT|m|3|-131072|18|m|3|6
+010087|oceanDepthOrLandElevation|double|OCEAN DEPTH/LAND ELEVATION|m|1|-131072|18|m|3|6
+010088|totalGeocentricOceanTideHeightSolution1|double|TOTAL GEOCENTRIC OCEAN TIDE HEIGHT SOLUTION 1|m|3|-32768|16|m|3|5
+010089|totalGeocentricOceanTideHeightSolution2|double|TOTAL GEOCENTRIC OCEAN TIDE HEIGHT SOLUTION 2|m|3|-32768|16|m|3|5
+010090|longPeriodTideHeight|double|LONG PERIOD TIDE HEIGHT|m|3|-32768|16|m|3|5
+010091|tidalLoadingHeight|double|TIDAL LOADING HEIGHT|m|3|-32768|16|m|3|5
+010092|solidEarthTideHeight|double|SOLID EARTH TIDE HEIGHT|m|3|-32768|16|m|3|5
+010093|geocentricPoleTideHeight|double|GEOCENTRIC POLE TIDE HEIGHT|m|3|-32768|16|m|3|5
+010095|heightOfAtmosphere|long|HEIGHT OF ATMOSPHERE USED|m|0|0|16|m|0|5
+010096|meanDynamicTopography|double|MEAN DYNAMIC TOPOGRAPHY|m|3|-131072|18|NA|0|0
+010097|meanSeaSurfaceHeightFromAltimeterOnly|double|MEAN SEA SURFACE HEIGHT FROM ALTIMETER ONLY|m|3|-131072|18|NA|0|0
+010098|loadingTideHeightGeocentricOceanTideSolution1|double|LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 1|m|4|-2000|12|NA|0|0
+010099|loadingTideHeightGeocentricOceanTideSolution2|double|LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 2|m|4|-2000|12|NA|0|0
+010100|nonEquilibriumLongPeriodTideHeight|double|NON-EQUILIBRIUM LONG PERIOD TIDE HEIGHT|m|4|-2000|12|NA|0|0
+010101|squaredOffNadirAngleOfSatelliteFromWaveformData|double|SQUARED OFF NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA|deg2|2|-32768|16|deg2|2|5
+011001|windDirection|long|WIND DIRECTION|deg|0|0|9|deg|0|3
+011002|windSpeed|double|WIND SPEED|m/s|1|0|12|m/s|1|4
+011003|u|double|U-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011004|v|double|V-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011005|w|double|W-COMPONENT|Pa/s|1|-512|10|Pa/s|1|4
+011006|w|double|W-COMPONENT|m/s|2|-4096|13|m/s|2|4
+011010|windDirectionAssociatedWithWindSpeedWhichFollows|long|WIND DIRECTION ASSOCIATED WITH WIND SPEED WHICH FOLLOWS|deg|0|0|9|deg|0|3
+011011|windDirectionAt10M|long|WIND DIRECTION AT 10 M|deg|0|0|9|deg|0|3
+011012|windSpeedAt10M|double|WIND SPEED AT 10 M|m/s|1|0|12|m/s|1|4
+011013|windDirectionAt5M|long|WIND DIRECTION AT 5 M|deg|0|0|9|deg|0|3
+011014|windSpeedAt5M|double|WIND SPEED AT 5 M|m/s|1|0|12|m/s|1|4
+011016|extremeCounterclockwiseWindDirectionOfAVariableWind|long|EXTREME COUNTERCLOCKWISE WIND DIRECTION OF A VARIABLE WIND|deg|0|0|9|deg|0|3
+011017|extremeClockwiseWindDirectionOfAVariableWind|long|EXTREME CLOCKWISE WIND DIRECTION OF A VARIABLE WIND|deg|0|0|9|deg|0|3
+011019|steadinessOfWind|long|STEADINESS OF WIND (6)|%|0|0|7|%|0|3
+011021|relativeVorticity|double|RELATIVE VORTICITY|/s|9|-65536|17|/s|9|6
+011022|divergence|double|DIVERGENCE|/s|9|-65536|17|/s|9|6
+011023|velocityPotential|long|VELOCITY POTENTIAL|m2/s|-2|-65536|17|m2/s|-2|6
+011030|extendedDegreeOfTurbulence|table|EXTENDED DEGREE OF TURBULENCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+011031|degreeOfTurbulence|table|DEGREE OF TURBULENCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+011032|heightOfBaseOfTurbulence|long|HEIGHT OF BASE OF TURBULENCE|m|-1|-40|16|m|-1|5
+011033|heightOfTopOfTurbulence|long|HEIGHT OF TOP OF TURBULENCE|m|-1|-40|16|m|-1|5
+011034|verticalGustVelocity|double|VERTICAL GUST VELOCITY|m/s|1|-1024|11|m/s|1|4
+011035|verticalGustAcceleration|double|VERTICAL GUST ACCELERATION|m s-2|2|-8192|14|m s-2|2|5
+011036|maximumDerivedEquivalentVerticalGustSpeed|double|MAXIMUM DERIVED EQUIVALENT VERTICAL GUST SPEED|m/s|1|0|10|m/s|1|4
+011037|turbulenceIndex|table|TURBULENCE INDEX|CODE TABLE|0|0|6|CODE TABLE|0|2
+011038|timeOfOccurrenceOfPeakEddyDissipationRate|table|TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|5|CODE TABLE|0|2
+011039|extendedTimeOfOccurrenceOfPeakEddyDissipationRate|table|EXTENDED TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|6|CODE TABLE|0|2
+011040|maximumWindSpeedMeanWind|double|MAXIMUM WIND SPEED (MEAN WIND)|m/s|1|0|12|m/s|1|4
+011041|maximumWindGustSpeed|double|MAXIMUM WIND GUST SPEED|m/s|1|0|12|m/s|1|4
+011042|maximumWindSpeed10MinuteMeanWind|double|MAXIMUM WIND SPEED (10-MIN MEAN WIND)|m/s|1|0|12|m/s|1|4
+011043|maximumWindGustDirection|long|MAXIMUM WIND GUST DIRECTION|deg|0|0|9|deg|0|3
+011044|meanWindDirectionForSurfaceTo1500M|long|MEAN WIND DIRECTION FOR SURFACE - 1500 M (5000 FEET)|deg|0|0|9|deg|0|3
+011045|meanWindSpeedForSurfaceTo1500M|double|MEAN WIND SPEED FOR SURFACE - 1500 M (5000 FEET)|m/s|1|0|12|m/s|1|4
+011046|maximumInstantaneousWindSpeed|double|MAXIMUM INSTANTANEOUS WIND SPEED|m/s|1|0|12|m/s|1|4
+011047|maximumInstantaneousWindSpeedOver10Minutes|double|MAXIMUM INSTANTANEOUS WIND SPEED OVER 10 MINUTES|m/s|1|0|12|m/s|1|4
+011049|windDirectionStandardDeviation|long|STANDARD DEVIATION OF WIND DIRECTION|deg|0|0|9|deg|0|3
+011050|standardDeviationOfHorizontalWindSpeed|double|STANDARD DEVIATION OF HORIZONTAL WIND SPEED|m/s|1|0|12|m/s|1|4
+011051|standardDeviationOfVerticalWindSpeed|double|STANDARD DEVIATION OF VERTICAL WIND SPEED|m/s|1|0|8|m/s|1|3
+011052|formalUncertaintyInWindSpeed|double|FORMAL UNCERTAINTY IN WIND SPEED|m/s|2|0|13|m/s|2|5
+011053|formalUncertaintyInWindDirection|double|FORMAL UNCERTAINTY IN WIND DIRECTION|deg|2|0|15|deg|2|5
+011054|meanWindDirectionFor1500To3000M|long|MEAN WIND DIRECTION FOR 1500 M - 3000 M|deg|0|0|9|deg|0|3
+011055|meanWindSpeedFor1500To3000M|double|MEAN WIND SPEED FOR 1500 M - 3000 M|m/s|1|0|12|m/s|1|4
+011061|absoluteWindShearIn1KmLayerBelow|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW|m/s|1|0|12|m/s|1|4
+011062|absoluteWindShearIn1KmLayerAbove|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE|m/s|1|0|12|m/s|1|4
+011070|designatorOfRunwayAffectedByWindShearIncludingAll|string|DESIGNATOR OF THE RUNWAY AFFECTED BY WIND SHEAR (INCLUDING ALL)|CCITT IA5|0|0|32|Character|0|4
+011071|turbulentVerticalMomentumFlux|double|TURBULENT VERTICAL MOMENTUM FLUX|m2 s-2|3|-128|14|m2 s-2|3|5
+011072|turbulentVerticalBuoyancyFlux|double|TURBULENT VERTICAL BUOYANCY FLUX|K m s-1|3|-128|11|K m s-1|3|4
+011073|turbulentKineticEnergy|double|TURBULENT KINETIC ENERGY|m2 s-2|2|-1024|13|m2 s-2|2|4
+011074|dissipationEnergy|double|DISSIPATION ENERGY|m2 s-2|2|-1024|10|m2 s-2|2|4
+011075|meanTurbulenceIntensityEddyDissipationRate|double|MEAN TURBULENCE INTENSITY (EDDY DISSIPATION RATE)|m2/3 s-1|2|0|8|m2/3 s-1|2|3
+011076|peakTurbulenceIntensityEddyDissipationRate|double|PEAK TURBULENCE INTENSITY (EDDY DISSIPATION RATE)|m2/3 s-1|2|0|8|m2/3 s-1|2|3
+011077|reportingIntervalOrAveragingTimeForEddyDissipationRate|long|REPORTING INTERVAL OR AVERAGING TIME FOR EDDY DISSIPATION RATE|s|0|0|12|s|0|4
+011081|modelWindDirectionAt10M|double|MODEL WIND DIRECTION AT 10M|deg|2|0|16|deg|2|5
+011082|modelWindSpeedAt10M|double|MODEL WIND SPEED AT 10M|m/s|2|0|14|m/s|2|4
+011083|windSpeed|long|WIND SPEED|km/h|0|0|9|km/h|0|3
+011084|windSpeed|long|WIND SPEED|kt|0|0|8|kt|0|3
+011085|maximumWindGustSpeed|long|MAXIMUM WIND GUST SPEED|km/h|0|0|9|km/h|0|3
+011086|maximumWindGustSpeed|long|MAXIMUM WIND GUST SPEED|kt|0|0|8|kt|0|3
+011095|u|double|U COMPONENT OF THE MODEL WIND VECTOR|m/s|1|-4096|13|m/s|1|4
+011096|v|double|V COMPONENT OF THE MODEL WIND VECTOR|m/s|1|-4096|13|m/s|1|4
+011097|windSpeedFromAltimeter|double|WIND SPEED FROM ALTIMETER|m/s|2|0|12|NA|0|0
+011098|windSpeedFromRadiometer|double|WIND SPEED FROM RADIOMETER|m/s|2|0|12|NA|0|0
+012001|airTemperature|double|TEMPERATURE/DRY-BULB TEMPERATURE|K|1|0|12|C|1|3
+012002|wetBulbTemperature|double|WET-BULB TEMPERATURE|K|1|0|12|C|1|3
+012003|dewpointTemperature|double|DEW-POINT TEMPERATURE|K|1|0|12|C|1|3
+012004|airTemperatureAt2M|double|DRY-BULB TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012005|wetBulbTemperatureAt2M|double|WET-BULB TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012006|dewpointTemperatureAt2M|double|DEW-POINT TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012007|virtualTemperature|double|VIRTUAL TEMPERATURE|K|1|0|12|C|1|3
+012011|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|C|1|3
+012012|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|C|1|3
+012013|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE, PAST 12 HOURS|K|1|0|12|C|1|3
+012014|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|1|0|12|C|1|3
+012015|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|1|0|12|C|1|3
+012016|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|1|0|12|C|1|3
+012017|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|1|0|12|C|1|3
+012021|maximumTemperatureAt2M|double|MAXIMUM TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012022|minimumTemperatureAt2M|double|MINIMUM TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012023|temperature|long|TEMPERATURE|C|0|-99|8|C|0|2
+012024|dewpointTemperature|long|DEW POINT TEMPERATURE|C|0|-99|8|C|0|2
+012030|soilTemperature|double|SOIL TEMPERATURE|K|1|0|12|C|1|3
+012049|temperatureChangeOverSpecifiedPeriod|long|TEMPERATURE CHANGE OVER SPECIFIED PERIOD|K|0|-30|6|C|0|2
+012051|standardDeviationTemperature|double|STANDARD DEVIATION TEMPERATURE|K|1|0|10|C|1|3
+012052|highestDailyMeanTemperature|double|HIGHEST DAILY MEAN TEMPERATURE|K|1|0|12|C|1|3
+012053|lowestDailyMeanTemperature|double|LOWEST DAILY MEAN TEMPERATURE|K|1|0|12|C|1|3
+012061|skinTemperature|double|SKIN TEMPERATURE|K|1|0|12|C|1|3
+012062|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|1|0|12|C|1|3
+012063|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|1|0|12|C|1|3
+012064|instrumentTemperature|double|INSTRUMENT TEMPERATURE|K|1|0|12|K|1|4
+012065|standardDeviationBrightnessTemperature|double|STANDARD DEVIATION BRIGHTNESS TEMPERATURE|K|1|0|12|K|1|4
+012070|warmLoadTemperature|double|WARM LOAD TEMPERATURE|K|2|0|16|K|2|5
+012071|coldestClusterTemperature|double|COLDEST CLUSTER TEMPERATURE|K|1|0|12|K|1|4
+012072|radiance|double|RADIANCE|W m-2 sr-1|6|0|31|W m-2 sr-1|6|9
+012073|temperature|double|TEMPERATURE|K|2|0|16|K|1|4
+012075|spectralRadiance|long|SPECTRAL RADIANCE|W m-3 sr-1|-3|0|16|W m-3 sr-1|-3|5
+012076|radiance|double|RADIANCE|W m-2 sr-1|3|0|16|W m-2 sr-1|3|5
+012080|brightnessTemperatureRealPart|double|BRIGHTNESS TEMPERATURE REAL PART|K|2|-10000|16|K|2|5
+012081|brightnessTemperatureImaginaryPart|double|BRIGHTNESS TEMPERATURE IMAGINARY PART|K|2|-10000|16|K|2|5
+012082|pixelRadiometricAccuracy|double|PIXEL RADIOMETRIC ACCURACY|K|2|0|12|K|2|4
+012101|airTemperature|double|TEMPERATURE/DRY-BULB TEMPERATURE|K|2|0|16|C|2|4
+012102|wetBulbTemperature|double|WET-BULB TEMPERATURE|K|2|0|16|C|2|4
+012103|dewpointTemperature|double|DEW-POINT TEMPERATURE|K|2|0|16|C|2|4
+012104|airTemperatureAt2M|double|DRY-BULB TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012105|webBulbTemperatureAt2M|double|WEB-BULB TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012106|dewpointTemperatureAt2M|double|DEW-POINT TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012107|virtualTemperature|double|VIRTUAL TEMPERATURE|K|2|0|16|C|2|4
+012111|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|2|0|16|C|2|4
+012112|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|2|0|16|C|2|4
+012113|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE, PAST 12 HOURS|K|2|0|16|C|2|4
+012114|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2M, PAST 12 HOURS|K|2|0|16|C|2|4
+012115|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2M, PAST 12 HOURS|K|2|0|16|C|2|4
+012116|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2M, PAST 24 HOURS|K|2|0|16|C|2|4
+012117|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2M, PAST 24 HOURS|K|2|0|16|C|2|4
+012118|maximumTemperatureAtHeightSpecifiedPast24Hours|double|MAXIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS|K|2|0|16|C|2|4
+012119|minimumTemperatureAtHeightSpecifiedPast24Hours|double|MINIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS|K|2|0|16|C|2|4
+012121|groundMinimumTemperature|double|GROUND MINIMUM TEMPERATURE|K|2|0|16|C|2|4
+012122|groundMinimumTemperatureOfPrecedingNight|double|GROUND MINIMUM TEMPERATURE OF THE PRECEDING NIGHT|K|2|0|16|C|2|4
+012130|soilTemperature|double|SOIL TEMPERATURE|K|2|0|16|C|2|4
+012151|dailyMeanTemperatureStandardDeviation|double|STANDARD DEVIATION OF DAILY MEAN TEMPERATURE|K|2|0|12|C|2|4
+012152|highestDailyMeanTemperature|double|HIGHEST DAILY MEAN TEMPERATURE|K|2|0|16|C|2|4
+012153|lowestDailyMeanTemperature|double|LOWEST DAILY MEAN TEMPERATURE|K|2|0|16|C|2|4
+012161|skinTemperature|double|SKIN TEMPERATURE|K|2|0|16|C|2|4
+012162|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|2|0|16|C|2|4
+012163|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|2|0|16|C|2|4
+012164|instrumentTemperature|double|INSTRUMENT TEMPERATURE|K|2|0|16|K|2|5
+012165|directSunBrightnessTemperature|long|DIRECT SUN BRIGHTNESS TEMPERATURE|K|0|0|23|K|0|7
+012166|snapshotAccuracy|double|SNAPSHOT ACCURACY|K|1|-4000|13|K|1|4
+012167|radiometricAccuracyPurePolarization|double|RADIOMETRIC ACCURACY (PURE POLARISATION)|K|1|0|9|K|1|3
+012168|radiometricAccuracyCrossPolarization|double|RADIOMETRIC ACCURACY ( CRESS POLARISATION )|K|1|0|9|K|1|3
+012171|coldestClusterTemperature|double|COLDEST CLUSTER TEMPERATURE|K|2|0|16|K|2|5
+012180|averaged12MicronBtForAllClearPixelsAtNadir|double|AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012181|averaged11MicronBtForAllClearPixelsAtNadir|double|AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012182|averaged37MicronBtForAllClearPixelsAtNadir|double|AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012183|averaged12MicronBtForAllClearPixelsForwardView|double|AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012184|averaged11MicronBtForAllClearPixelsForwardView|double|AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012185|averaged37MicronBtForAllClearPixelsForwardView|double|AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012186|meanNadirSeaSurfaceTemperature|double|MEAN NADIR SEA SURFACE TEMPERATURE|K|2|0|16|K|2|5
+012187|meanDualViewSeaSurfaceTemperature|double|MEAN DUAL VIEW SEA SURFACE TEMPERATURE|K|2|0|16|K|2|5
+012188|interpolated238GhzBrightnessTFromMwr|double|INTERPOLATED 23.8 GHZ BRIGHTNESS T FROM MWR|K|2|0|16|K|2|5
+012189|interpolated365GhzBrightnessTFromMwr|double|INTERPOLATED 36.5 GHZ BRIGHTNESS T FROM MWR|K|2|0|16|K|2|5
+013001|specificHumidity|double|SPECIFIC HUMIDITY|kg/kg|5|0|14|kg/kg|5|5
+013002|mixingRatio|double|MIXING RATIO|kg/kg|5|0|14|kg/kg|5|5
+013003|relativeHumidity|long|RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013004|vapourPressure|long|VAPOUR PRESSURE|Pa|-1|0|10|Pa|-1|4
+013005|vapourDensity|double|VAPOUR DENSITY|kg m-3|3|0|7|kg m-3|3|3
+013006|mixingHeights|long|MIXING HEIGHTS|m|-1|-40|16|m|-1|5
+013007|minimumRelativeHumidity|long|MINIMUM RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013008|maximumRelativeHumidity|long|MAXIMUM RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013009|relativeHumidity|double|RELATIVE HUMIDITY|%|1|-1000|12|%|1|4
+013011|totalPrecipitationOrTotalWaterEquivalent|double|TOTAL PRECIPITATION/TOTAL WATER EQUIVALENT|kg m-2|1|-1|14|kg m-2|1|5
+013012|depthOfFreshSnow|double|DEPTH OF FRESH SNOW|m|2|-2|12|m|2|4
+013013|totalSnowDepth|double|TOTAL SNOW DEPTH|m|2|-2|16|m|2|5
+013014|rainfallOrWaterEquivalentOfSnowAveragedRate|double|RAINFALL/WATER EQUIVALENT OF SNOW (AVERAGED RATE)|kg m-2 s-1|4|0|12|kg m-2 s-1|4|4
+013015|snowfallAveragedRate|double|SNOWFALL (AVERAGED RATE)|m/s|7|0|12|m/s|7|4
+013016|precipitableWater|long|PRECIPITABLE WATER|kg m-2|0|0|7|kg m-2|0|3
+013019|totalPrecipitationPast1Hour|double|TOTAL PRECIPITATION PAST 1 HOUR|kg m-2|1|-1|14|kg m-2|1|4
+013020|totalPrecipitationPast3Hours|double|TOTAL PRECIPITATION PAST 3 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013021|totalPrecipitationPast6Hours|double|TOTAL PRECIPITATION PAST 6 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013022|totalPrecipitationPast12Hours|double|TOTAL PRECIPITATION PAST 12 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013023|totalPrecipitationPast24Hours|double|TOTAL PRECIPITATION PAST 24 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013031|evapotranspiration|long|EVAPOTRANSPIRATION|kg m-2|0|0|7|kg m-2|0|3
+013032|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|8|kg m-2|1|3
+013033|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|10|kg m-2|1|4
+013038|superadiabaticIndicator|table|SUPERADIABATIC INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+013039|terrainTypeIceOrSnow|table|TERRAIN TYPE (ICE/SNOW)|CODE TABLE|0|0|3|CODE TABLE|0|1
+013040|surfaceFlag|table|SURFACE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+013041|pasquillGiffordStabilityCategory|table|PASQUILL-GIFFORD STABILITY CATEGORY|CODE TABLE|0|0|4|CODE TABLE|0|2
+013042|parcelLiftedIndexTo500Hpa|long|PARCEL LIFTED INDEX (TO 500 HPA)|K|0|-20|6|K|0|2
+013043|bestLiftedIndexTo500Hpa|long|BEST LIFTED INDEX (TO 500 HPA)|K|0|-20|6|K|0|2
+013044|kIndex|long|K INDEX|K|0|-30|8|K|0|3
+013045|koIndex|long|KO INDEX|K|0|-30|8|K|0|3
+013046|maximumBuoyancy|long|MAXIMUM BUOYANCY|K|0|-30|8|K|0|3
+013047|modifiedShowalterStabilityIndex|long|MODIFIED SHOWALTER STABILITY INDEX|K|0|-60|6|C|0|2
+013048|waterFraction|double|WATER FRACTION|%|1|0|10|%|1|4
+013051|frequencyGroupPrecipitation|table|FREQUENCY GROUP, PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013052|highestDailyAmountOfPrecipitation|double|HIGHEST DAILY AMOUNT OF PRECIPITATION|kg m-2|1|-1|14|kg m-2|1|5
+013055|intensityOfPrecipitation|double|INTENSITY OF PRECIPITATION|kg m-2 s-1|4|0|8|mm/h|1|3
+013056|characterAndIntensityOfPrecipitation|table|CHARACTER AND INTENSITY OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013057|timeOfBeginningOrEndOfPrecipitation|table|TIME OF BEGINNING OR END OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013058|sizeOfPrecipitatingElement|double|SIZE OF PRECIPITATING ELEMENT|m|4|0|7|mm|1|3
+013059|numberOfFlashesThunderstorm|long|NUMBER OF FLASHES (THUNDERSTORM)|Numeric|0|0|7|Numeric|0|3
+013060|totalAccumulatedPrecipitation|double|TOTAL ACCUMULATED PRECIPITATION|kg m-2|1|-1|17|kg m-2|1|5
+013071|upstreamWaterLevel|double|UPSTREAM WATER LEVEL|m|2|0|14|m|2|5
+013072|downstreamWaterLevel|double|DOWNSTREAM WATER LEVEL|m|2|0|14|m|2|4
+013073|maximumWaterLevel|double|MAXIMUM WATER LEVEL|m|2|0|14|m|2|4
+013080|waterPh|double|WATER PH|pH unit|1|0|10|pH unit|1|3
+013081|waterConductivity|double|WATER CONDUCTIVITY|S/m|3|0|14|S/m|3|4
+013082|waterTemperature|double|WATER TEMPERATURE|K|1|0|12|K|1|4
+013083|dissolvedOxygen|double|DISSOLVED OXYGEN|kg m-3|6|0|15|kg m-3|6|5
+013084|turbidity|long|TURBIDITY|lm|0|0|14|lm|0|4
+013085|oxidationReductionPotential|double|OXYDATION REDUCTION POTENTIAL (ORP)|V|3|0|14|V|3|4
+013090|radiometerWaterVapourContent|double|RADIOMETER WATER VAPOUR CONTENT|kg m-2|1|0|10|kg m-2|1|4
+013091|radiometerLiquidContent|double|RADIOMETER LIQUID CONTENT|kg m-2|2|0|8|kg m-2|2|3
+013093|cloudOpticalThickness|long|CLOUD OPTICAL THICKNESS|Numeric|0|0|8|Numeric|0|3
+013095|totalColumnWaterVapour|double|TOTAL COLUMN WATER VAPOUR|kg m-2|4|0|19|kg m-2|4|6
+013096|mwrWaterVapourContent|double|MWR WATER VAPOUR CONTENT|kg m-2|2|0|14|kg m-2|2|4
+013097|mwrLiquidWaterContent|double|MWR LIQUID WATER CONTENT|kg m-2|2|0|14|kg m-2|2|4
+013098|integratedWaterVapourDensity|double|INTEGRATED WATER VAPOUR DENSITY|kg m-2|8|0|30|kg m-2|8|10
+014001|longWaveRadiationIntegratedOver24Hours|long|LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014002|longWaveRadiationIntegratedOverPeriodSpecified|long|LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014003|shortWaveRadiationIntegratedOver24Hours|long|SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014004|shortWaveRadiationIntegratedOverPeriodSpecified|long|SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014011|netLongWaveRadiationIntegratedOver24Hours|long|NET LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014012|netLongWaveRadiationIntegratedOverPeriodSpecified|long|NET LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014013|netShortWaveRadiation24Hours|long|NET SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014014|netShortWaveRadiationIntegratedOverPeriodSpecified|long|NET SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014015|netRadiationIntegratedOver24Hours|long|NET RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|-16384|15|J m-2|-4|5
+014016|netRadiationIntegratedOverPeriodSpecified|long|NET RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|-16384|15|J m-2|-4|5
+014017|instantaneousLongWaveRadiation|long|INSTANTANEOUS LONG-WAVE RADIATION (SEE NOTE 6)|W m-2|-3|-2048|12|W m-2|-3|4
+014018|instantaneousShortWaveRadiation|long|INSTANTANEOUS SHORT-WAVE RADIATION (SEE NOTE 6)|W m-2|-3|-2048|12|W m-2|-3|4
+014019|surfaceAlbedo|long|SURFACE ALBEDO|%|0|0|7|%|0|3
+014020|globalSolarRadiation24Hours|long|GLOBAL SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014021|globalSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014022|diffuseSolarRadiationIntegratedOver24Hours|long|DIFFUSE SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014023|diffuseSolarRadiationIntegratedOverPeriodSpecified|long|DIFFUSE SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014024|directSolarRadiationIntegratedOver24Hours|long|DIRECT SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014025|directSolarRadiationIntegratedOverPeriodSpecified|long|DIRECT SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014026|cloudTopAlbedo|long|ALBEDO AT THE TOP OF CLOUDS|%|0|0|7|%|0|3
+014027|albedo|long|ALBEDO|%|0|0|7|%|0|3
+014028|globalSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD S|J m-2|-2|0|16|J m-2|-2|5
+014029|diffuseSolarRadiationIntegratedOverPeriodSpecified|long|DIFFUSE SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD|J m-2|-2|0|16|J m-2|-2|5
+014030|directSolarRadiationIntegratedOverPeriodSpecified|long|DIRECT SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD S|J m-2|-2|0|16|J m-2|-2|5
+014031|totalSunshine|long|TOTAL SUNSHINE|min|0|0|11|min|0|4
+014032|totalSunshine|long|TOTAL SUNSHINE|h|0|0|10|h|0|4
+014033|totalSunshine|long|TOTAL SUNSHINE|%|0|0|9|%|0|3
+014034|sunshineOverPeriodSpecified|long|SUNSHINE OVER PERIOD SPECIFIED|min|0|0|11|min|0|4
+014042|bidirectionalReflectance|long|BI-DIRECTIONAL REFLECTANCE|%|0|0|7|%|0|3
+014045|channelRadiance|long|CHANNEL RADIANCE|W m-2 sr-1 cm|0|0|11|W m-2 sr-1 cm|0|4
+014046|scaledIasiRadiance|long|SCALED IASI RADIANCE|W m-2 sr-1 m|0|-5000|16|W m-2 sr-1 m|0|5
+014047|scaledMeanAvhrrRadiance|long|SCALED MEAN AVHRR RADIANCE|W m-2 sr-1 m|0|0|31|W m-2 sr-1 m|0|10
+014048|scaledStandardDeviationAvhrrRadiance|long|SCALED STANDARD DEVIATION RADIANCE|W m-2 sr-1 m|0|0|31|W m-2 sr-1 m|0|10
+014050|emissivity|double|EMISSIVITY (SEE NOTE 5)|%|1|0|10|%|1|4
+014051|directSolarRadiationIntegratedOverLastHour|long|DIRECT SOLAR RADIATION INTEGRATED OVER LAST HOUR|J m-2|-3|0|14|J m-2|-3|4
+014055|solarActivityIndex|long|SOLAR ACTIVITY INDEX|Numeric|0|-32768|16|Numeric|0|5
+014061|instantaneousLongWaveRadiation|long|(VAL) INSTANTANEOUS LONG-WAVE RADIATION|W m-2|0|-512|10|W m-2|0|4
+014062|instantaneousShortWaveRadiation|long|(VAL) INSTANTANEOUS SHORT-WAVE RADIATION|W m-2|0|-2048|12|W m-2|0|4
+015001|totalOzone|long|TOTAL OZONE|DU|0|0|10|DU|0|4
+015002|airMassSlantPathAt22Km|long|AIR MASS (SLANT PATH AT 22 KM)|Numeric|2|0|10|Numeric|2|3
+015003|measuredOzonePartialPressureSounding|double|MEASURED OZONE PARTIAL PRESSURE (SOUNDING)|Pa|4|0|9|nbar|0|3
+015004|ozoneSoundingCorrectionFactor|long|OZONE SOUNDING CORRECTION FACTOR|Numeric|3|0|11|Numeric|3|4
+015005|ozoneP|long|OZONE P|DU|0|0|10|DU|0|3
+015008|significandOfVolumetricMixingRatio|long|SCALED MIXING RATIO|Numeric|0|0|10|Numeric|0|4
+015011|log10IntegratedElectronDensity|double|LOG 10 OF INTEGRATED ELECTRON DENSITY|log (m-2)|3|14000|13|log (m-2)|3|4
+015012|totalElectronCountPerSquareMetre|long|TOTAL ELECTRON COUNT PER SQUARE METER|m-2|-16|0|6|m-2|-16|2
+015015|maxImageSpectralComponentBeforeNormalization|long|MAXIMUM IMAGE SPECTRAL COMPONENT BEFORE NORMALIZATION|Numeric|0|0|31|Numeric|0|10
+015020|integratedOzoneDensity|double|INTEGRATED 03 DENSITY|kg m-2|8|0|21|kg m-2|8|7
+015021|integratedMassDensity|double|INTEGRATED MASS DENSITY|kg m-2|11|0|31|kg m-2|11|10
+015024|opticalDepth|long|OPTICAL DEPTH|Numeric|4|0|24|Numeric|4|8
+015025|pollutantType|table|TYPE OF POLLUTANT|CODE TABLE|0|0|4|CODE TABLE|0|2
+015026|moleFractionOfPollutant|double|CONCENTRATION OF POLLUTANT|mol/mol|9|0|9|mol/mol|9|3
+015027|massConcentrationOfPollutant|double|CONCENTRATION OF POLLUTANT|kg m-3|9|0|10|kg m-3|9|4
+015030|aerosolContaminationIndex|long|AEROSOL CONTAMINATION INDEX|Numeric|2|-1000|12|Numeric|2|4
+015031|atmosphericPathDelayInSatelliteSignal|double|ATMOSPHERIC PATH DELAY IN SATELLITE SIGNAL|m|4|10000|15|m|4|5
+015032|estimatedErrorInAtmosphericPathDelay|double|ESTIMATED ERROR IN ATMOSPHERIC PATH DELAY|m|4|0|10|m|4|4
+015033|differenceInPathDelaysForLimbViewsAtExtremesOfScan|double|DIFFERENCE IN PATH DELAYS FOR LIMB VIEWS AT EXTREMES OF SCAN|m|5|-10000|15|m|5|5
+015034|estimatedErrorInPathDelayDifference|double|ESTIMATED ERROR IN PATH DELAY DIFFERENCE|m|5|0|14|m|5|5
+015035|componentOfZenithPathDelayDueToWaterVapour|double|COMPONENT OF ZENITH PATH DELAY DUE TO WATER VAPOUR|m|4|0|14|m|4|5
+015036|atmosphericRefractivity|double|ATMOSPHERIC REFRACTIVITY (SEE NOTE 5)|N units|3|0|19|N units|3|6
+015037|bendingAngle|double|BENDING ANGLE|rad|8|-100000|23|rad|8|7
+019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
+019002|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-2|0|12|m|-2|4
+019003|windSpeedThreshold|long|WIND SPEED THRESHOLD|m/s|0|0|8|m/s|0|3
+019004|effectiveRadiusWithRespectToWindSpeedsAboveThreshold|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD|m|-2|0|12|m|-2|4
+019005|featureDirectionOfMotion|long|DIRECTION OF MOTION OF FEATURE|deg|0|0|9|deg|0|3
+019006|speedOfMotionOfFeature|double|SPEED OF MOTION OF FEATURE|m/s|2|0|14|m/s|2|5
+019007|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-3|0|12|m|-3|4
+019008|verticalExtentOfCirculation|table|VERTICAL EXTENT OF CIRCULATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+019009|effectiveRadiusWithRespectToWindSpeedsAboveThresholdLargeStorms|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD (LA|m|-3|0|12|m|-3|4
+019010|methodForTrackingCentreOfSynopticFeature|table|METHOD FOR TRACKING THE CENTRE OF SYNOPTIC FEATURE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019100|timeIntervalToCalculateMovementOfTropicalCyclone|table|TIME INTERVAL TO CALCULATE THE MOVEMENT OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019101|accuracyOfPositionOfCentreOfTropicalCyclone|table|ACCURACY OF THE POSITION OF THE CENTRE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019102|shapeAndDefinitionOfEyeOfTropicalCyclone|table|SHAPE AND DEFINITION OF THE EYE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|3|CODE TABLE|0|1
+019103|diameterOfMajorAxisOfEyeOfTropicalCyclone|table|DIAMETER OF MAJOR AXIS OF THE EYE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019104|changeInCharacterOfEyeDuring30Minutes|table|CHANGE IN CHARACTER OF THE EYE DURING THE 30 MINUTES|CODE TABLE|0|0|4|CODE TABLE|0|2
+019105|distanceBetweenEndOfSpiralBandAndCentre|table|DISTANCE BETWEEN THE END OF SPIRAL BAND AND THE CENTRE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019106|identificationNumberOfTropicalCyclone|long|IDENTIFICATION NUMBER OF TROPICAL CYCLONE|Numeric|0|0|7|Numeric|0|3
+019107|timeIntervalOverWhichMovementOfTropicalCycloneHasBeenCalculated|table|TIME INTERVAL OF THE TROPICAL CYCLONE ANALYSIS|CODE TABLE|0|0|4|CODE TABLE|0|2
+019108|accuracyOfGeographicalPositionOfTropicalCyclone|table|ACCURACY OF GEOGRAPHICAL POSITION OF THE TROPICAL CYCLONE|CODE TABLE|0|0|3|CODE TABLE|0|1
+019109|meanDiameterOfOvercastCloudOfTropicalCyclone|table|MEAN DIAMETER OF THE OVERCAST CLOUD OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019110|apparent24HourChangeInIntensityOfTropicalCyclone|table|APPARENT 24-HOUR CHANGE IN INTENSITY OF TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019111|currentIntensityNumberOfTropicalCyclone|long|CURRENT INTENSITY (CI) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019112|dataTropicalNumberOfTropicalCyclone|long|DATA TROPICAL (DT) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019113|cloudPatternTypeOfDtNumber|table|CLOUD PATTERN TYPE OF THE DT- NUMBER|CODE TABLE|0|0|4|CODE TABLE|0|2
+019114|modelExpectedTropicalNumberOfTropicalCyclone|long|MODEL EXPECTED TROPICAL (MET) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019115|trendOfPast24HourChangeDevelopedWeakened|long|TREND OF PAST 24-HOUR CHANGE (+: DEVELOPED, -: WEAKENED)|Numeric|1|-30|6|Numeric|1|2
+019116|patternTropicalNumberOfTropicalCyclone|long|PATTERN TROPICAL (PT) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019117|cloudPictureTypeOfPtNumber|table|CLOUD PICTURE TYPE OF THE PT- NUMBER|CODE TABLE|0|0|3|CODE TABLE|0|1
+019118|finalTropicalNumberOfTropicalCyclone|long|FINAL TROPICAL (T) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019119|finalTNumberType|table|TYPE OF THE FINAL T-NUMBER|CODE TABLE|0|0|3|CODE TABLE|0|1
+019150|typhoonInternationalCommonNumberTyphoonCommittee|string|TYPHOON INTERNATIONAL COMMON NUMBER (TYPHOON COMMITTEE)|CCITT IA5|0|0|32|Character|0|4
+020001|horizontalVisibility|long|HORIZONTAL VISIBILITY|m|-1|0|13|m|-1|4
+020002|verticalVisibility|long|VERTICAL VISIBILITY|m|-1|0|7|m|-1|3
+020003|presentWeather|table|PRESENT WEATHER (SEE NOTE 1)|CODE TABLE|0|0|9|CODE TABLE|0|3
+020004|pastWeather1|table|PAST WEATHER (1) (SEE NOTE 2)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020005|pastWeather2|table|PAST WEATHER (2) (SEE NOTE 2)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020008|cloudDistributionForAviation|table|CLOUD DISTRIBUTION FOR AVIATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020009|generalWeatherIndicatorTafOrMetar|table|GENERAL WEATHER INDICATOR (TAF/METAR)|CODE TABLE|0|0|4|CODE TABLE|0|2
+020010|cloudCoverTotal|long|CLOUD COVER (TOTAL)|%|0|0|7|%|0|3
+020011|cloudAmount|table|CLOUD AMOUNT|CODE TABLE|0|0|4|CODE TABLE|0|2
+020012|cloudType|table|CLOUD TYPE|CODE TABLE|0|0|6|CODE TABLE|0|2
+020013|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|m|-1|-40|11|m|-1|4
+020014|heightOfTopOfCloud|long|HEIGHT OF TOP OF CLOUD|m|-1|-40|11|m|-1|4
+020015|pressureAtBaseOfCloud|long|PRESSURE AT BASE OF CLOUD|Pa|-1|0|14|Pa|-1|5
+020016|pressureAtTopOfCloud|long|PRESSURE AT TOP OF CLOUD|Pa|-1|0|14|Pa|-1|5
+020017|cloudTopDescription|table|CLOUD TOP DESCRIPTION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020018|tendencyOfRunwayVisualRange|table|TENDENCY OF RUNWAY VISUAL RANGE|CODE TABLE|0|0|2|CODE TABLE|0|1
+020019|significantWeather|string|SIGNIFICANT PRESENT OR FORECAST WEATHER|CCITT IA5|0|0|72|Character|0|9
+020020|significantRecentWeatherPhenomena|string|SIGNIFICANT RECENT WEATHER PHENOMENA|CCITT IA5|0|0|32|Character|0|4
+020021|precipitationType|flag|TYPE OF PRECIPITATION|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+020022|characterOfPrecipitation|table|CHARACTER OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020023|otherWeatherPhenomena|flag|OTHER WEATHER PHENOMENA|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+020024|intensityOfPhenomena|table|INTENSITY OF PHENOMENA|CODE TABLE|0|0|3|CODE TABLE|0|1
+020025|obscuration|flag|OBSCURATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+020026|characterOfObscuration|table|CHARACTER OF OBSCURATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020027|phenomenaOccurrence|flag|PHENOMENA OCCURRENCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+020028|expectedChangeInIntensity|table|EXPECTED CHANGE IN INTENSITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+020029|rainFlag|table|RAIN FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+020031|iceDepositThickness|double|ICE DEPOSIT (THICKNESS)|m|2|0|7|m|2|3
+020032|rateOfIceAccretionEstimated|table|RATE OF ICE ACCRETION|CODE TABLE|0|0|3|CODE TABLE|0|1
+020033|causeOfIceAccretion|flag|CAUSE OF ICE ACCRETION|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+020034|seaIceConcentration|table|SEA ICE CONCENTRATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020035|amountAndTypeOfIce|table|AMOUNT AND TYPE OF ICE|CODE TABLE|0|0|4|CODE TABLE|0|2
+020036|iceSituation|table|ICE SITUATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020037|iceDevelopment|table|ICE DEVELOPMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+020038|iceEdgeBearing|long|BEARING OF ICE EDGE (SEE NOTE 3)|deg|0|0|12|deg|0|3
+020039|iceDistance|long|ICE DISTANCE|m|-1|0|13|m|-1|4
+020040|evolutionOfDriftSnow|table|EVOLUTION OF DRIFT OF SNOW|CODE TABLE|0|0|4|CODE TABLE|0|2
+020041|airframeIcing|table|AIRFRAME ICING|CODE TABLE|0|0|4|CODE TABLE|0|2
+020042|airframeIcingPresent|table|AIRFRAME ICING PRESENT|CODE TABLE|0|0|2|CODE TABLE|0|1
+020043|peakLiquidWaterContent|double|PEAK LIQUID WATER CONTENT|kg m-3|4|0|7|kg m-3|4|2
+020044|averageLiquidWaterContent|double|AVERAGE LIQUID WATER CONTENT|kg m-3|4|0|7|kg m-3|4|2
+020045|supercooledLargeDropletConditions|table|SUPERCOOLED LARGE DROPLET (SLD) CONDITIONS|CODE TABLE|0|0|2|CODE TABLE|0|2
+020048|evolutionOfFeature|table|EVOLUTION OF FEATURE|CODE TABLE|0|0|4|CODE TABLE|2|2
+020050|cloudIndex|table|CLOUD INDEX|CODE TABLE|0|0|8|CODE TABLE|0|3
+020051|amountOfLowClouds|long|AMOUNT OF LOW CLOUDS|%|0|0|7|%|0|3
+020052|amountOfMiddleClouds|long|AMOUNT OF MIDDLE CLOUDS|%|0|0|7|%|0|3
+020053|amountOfHighClouds|long|AMOUNT OF HIGH CLOUDS|%|0|0|7|%|0|3
+020054|trueDirectionFromWhichAPhenomenonOrCloudsAreMovingOrInWhichTheyAreObserved|long|TRUE DIRECTION FROM WHICH CLOUDS ARE MOVING|deg|0|0|9|deg|0|3
+020055|stateOfSkyInTropics|table|STATE OF SKY IN TROPICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020056|cloudPhase|table|CLOUD PHASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+020059|minimumHorizontalVisibility|long|MINIMUM HORIZONTAL VISIBILITY|m|-1|0|9|m|-1|3
+020060|prevailingHorizontalVisibility|long|PREVAILING HORIZONTAL VISIBILITY|m|-1|0|10|m|-1|4
+020061|runwayVisualRangeRvr|long|RUNWAY VISUAL RANGE (RVR)|m|0|0|12|m|0|4
+020062|stateOfGround|table|STATE OF THE GROUND (WITH OR WITHOUT SNOW)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020063|specialPhenomena|table|SPECIAL PHENOMENA|CODE TABLE|0|0|10|CODE TABLE|0|4
+020065|snowCover|long|SNOW COVER (SEE NOTE 4)|%|0|0|7|%|0|3
+020066|maximumDiameterOfHailstones|double|MAXIMUM DIAMETER OF HAILSTONES|m|3|0|8|m|3|3
+020067|diameterOfDeposit|double|DIAMETER OF DEPOSIT|m|3|0|9|m|3|3
+020070|minimumNumberOfAtmospherics|long|MINIMUM NUMBER OF ATMOSPHERICS|Numeric|0|0|7|Numeric|0|3
+020071|accuracyOfFixAndRateOfAtmospherics|table|ACCURACY OF FIX AND RATE OF ATMOSPHERICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020081|cloudAmountInSegment|long|CLOUD AMOUNT IN SEGMENT|%|0|0|7|%|0|3
+020082|amountSegmentCloudFree|long|AMOUNT SEGMENT CLOUD FREE|%|0|0|7|%|0|3
+020083|amountOfSegmentCoveredByScene|long|AMOUNT OF SEGMENT COVERED BY SCENE|%|0|0|7|%|0|3
+020085|generalConditionOfRunway|table|GENERAL CONDITION OF RUNWAY|CODE TABLE|0|0|4|CODE TABLE|0|1
+020086|runwayDeposits|table|RANWAY DEPOSITS|CODE TABLE|0|0|4|CODE TABLE|0|1
+020087|runwayContamination|table|RUNWAY CONTAMINATION|CODE TABLE|0|0|4|CODE TABLE|0|1
+020088|depthOfRunwayDeposits|double|DEPTH OF RANWAY DEPOSITS|m|3|0|12|m|3|4
+020089|runwayFrictionCoefficient|table|RUNWAY FRICTION COEFICIENT|CODE TABLE|0|0|7|CODE TABLE|0|2
+020090|specialClouds|table|SPECIAL CLOUDS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020091|verticalVisibility|long|VERTICAL VISIBILITY|ft|-2|0|10|ft|-2|3
+020092|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|ft|-2|0|10|ft|-2|3
+020095|iceProbability|long|ICE PROBABILITY|Numeric|3|0|10|Numeric|3|4
+020096|iceAgeAParameter|double|ICE AGE ("A" PARAMETER)|dB|2|-4096|13|dB|2|4
+020101|locustAcridianName|table|LOCUST (ACRIDIAN) NAME|CODE TABLE|0|0|4|CODE TABLE|0|2
+020102|locustMaturityColour|table|LOCUST (MATURITY) COLOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+020103|stageOfDevelopmentOfLocusts|table|STAGE OF DEVELOPMENT OF LOCUSTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020104|organizationStateOfSwarm|table|ORGANIZATION STATE OF SWARM OR BAND OF LOCUSTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020105|sizeOfSwarmOrBandOfLocustsAndDurationOfPassageOfSwarm|table|SIZE OF SWARM OR BAND OF LOCUSTS AND DURATION OF PASSAGE OF SWAR|CODE TABLE|0|0|4|CODE TABLE|0|2
+020106|locustPopulationDensity|table|LOCUST POPULATION DENSITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+020107|directionOfMovementsOfLocustSwarm|table|DIRECTION OF MOVEMENTS OF LOCUST SWARM|CODE TABLE|0|0|4|CODE TABLE|0|2
+020108|extentOfVegetation|table|EXTENT OF VEGETATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+021001|horizontalReflectivity|long|HORIZONTAL REFLECTIVITY|dB|0|-64|7|dB|0|3
+021002|verticalReflectivity|long|VERTICAL REFLECTIVITY|dB|0|-64|7|dB|0|3
+021003|differentialReflectivity|double|DIFFERENTIAL REFLECTIVITY|dB|1|-5|7|dB|1|3
+021005|linearDepolarizationRatio|long|LINEAR DEPOLARISATION RATIO|dB|0|-65|6|dB|0|2
+021006|circularDepolarizationRatio|long|CIRCULAR DEPOLARISATION RATIO|dB|0|-65|6|dB|0|2
+021011|dopplerMeanVelocityXDirection|long|DOPPLER MEAN VELOCITY IN X-DIRECTION|m/s|0|-128|8|m/s|0|3
+021012|dopplerMeanVelocityYDirection|long|DOPPLER MEAN VELOCITY IN Y-DIRECTION|m/s|0|-128|8|m/s|0|3
+021013|dopplerMeanVelocityZDirection|long|DOPPLER MEAN VELOCITY IN Z-DIRECTION|m/s|0|-128|8|m/s|0|3
+021014|dopplerMeanVelocityRadial|double|DOPPLER MEAN VELOCITY (RADIAL)|m/s|1|-4096|13|m/s|1|4
+021017|dopplerVelocitySpectralWidth|double|DOPPLER VELOCITY SPECTRAL WIDTH|m/s|1|0|8|m/s|1|3
+021021|echoTops|long|ECHO TOPS|m|-3|0|4|m|-3|2
+021030|signalToNoiseRatio|long|SIGNAL TO NOISE RATIO|dB|0|-32|8|dB|0|3
+021031|verticallyIntegratedLiquidWaterContent|long|VERTICALLY INTEGRATED LIQUID-WATER CONTENT|kg m-2|0|0|7|kg m-2|0|3
+021036|radarRainfallIntensity|double|RADAR RAINFALL INTENSITY|m/s|7|0|12|m/s|7|4
+021041|brightBandHeight|long|BRIGHT-BAND HEIGHT|m|-2|0|8|m|-2|3
+021051|signalPowerAbove1Mw|long|SIGNAL POWER ABOVE 1 MW|dB|0|-256|8|dB|0|3
+021062|backscatter|double|BACKSCATTER|dB|2|-5000|13|dB|2|4
+021063|radiometricResolutionNoiseValue|double|RADIOMETRIC RESOLUTION (NOISE VALUE)|%|1|0|10|%|1|4
+021064|clutterNoiseEstimate|long|CLUTTER NOISE ESTIMATE|Numeric|0|0|8|Numeric|0|3
+021065|missingPacketCounter|long|MISSING PACKET COUNTER|Numeric|0|-127|8|Numeric|0|3
+021066|waveScatterometerProductConfidenceData|flag|WAVE SCATTEROMETER PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+021067|windProductConfidenceData|flag|WIND PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|13|FLAG TABLE|0|5
+021068|radarAltimeterProductConfidenceData|flag|RADAR ALTIMETER PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+021069|sstProductConfidenceData|flag|SST PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|10|FLAG TABLE|0|4
+021070|sstProductConfidenceDataSadist2|flag|SST PRODUCT CONFIDENCE DATA (SADIST-2)|FLAG TABLE|0|0|23|FLAG TABLE|0|6
+021071|peakiness|long|PEAKINESS|Numeric|0|0|16|Numeric|0|5
+021072|satelliteAltimeterCalibrationStatus|flag|SATELLITE ALTIMETER CALIBRATION STATUS|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+021073|satelliteAltimeterInstrumentMode|flag|SATELLLITE ALTIMETER INSTRUMENT MODE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+021075|imageSpectrumIntensity|long|IMAGE SPECTRUM INTENSITY|Numeric|0|0|8|Numeric|0|3
+021076|representationOfIntensities|table|REPRESENTATION OF INTENSITIES|CODE TABLE|0|0|3|CODE TABLE|0|1
+021077|altitudeCorrectionIonosphere|double|ALTITUDE CORRECTION (IONOSPHERE)|m|3|0|14|m|3|5
+021078|altitudeCorrectionDryTroposphere|double|ALTITUDE CORRECTION (DRY TROPOSPHERE)|m|3|0|9|m|3|3
+021079|altitudeCorrectionWetTroposphere|double|ALTITUDE CORRECTION (WET TROPOSPHERE)|m|3|2000|10|m|3|4
+021080|altitudeCorrectionCalibrationConstant|double|ALTITUDE CORRECTION (CALIBRATION CONSTANT)|m|3|0|11|m|3|4
+021081|openLoopCorrectionHeightTimeLoop|double|OPEN LOOP CORRECTION (HEIGHT-TIME LOOP)|m|3|0|10|m|3|4
+021082|openLoopCorrectionAutoGainControl|double|OPEN LOOP CORRECTION (AUTO GAIN CONTROL)|dB|3|-3000|14|dB|3|5
+021083|warmTargetCalibration|long|WARM TARGET CALIBRATION|Numeric|0|0|16|Numeric|0|5
+021084|coldTargetCalibration|long|COLD TARGET CALIBRATION|Numeric|0|0|16|Numeric|0|5
+021085|atsrSeaSurfaceTemperatureAcrossTrackBandNumber|long|ATSR SEA SURFACE TEMPERATURE ACROSS- TRACK BAND NUMBER|Numeric|0|0|4|Numeric|0|2
+021086|numberOfPixelsInNadirOnlyAverage|long|NUMBER OF PIXELS IN NADIR ONLY, AVERAGE|Numeric|0|0|9|Numeric|0|3
+021087|numberOfPixelsInDualViewAverage|long|NUMBER OF PIXELS IN DUAL VIEW, AVERAGE|Numeric|0|0|9|Numeric|0|3
+021088|wetBackscatter|double|WET BACKSCATTER|dB|2|-5000|13|dB|2|4
+021091|radarSignalDopplerSpectrum0thMoment|long|RADAR SIGNAL DOPPLER SPECTRUM 0TH MOMENT|dB|0|-100|8|dB|0|3
+021092|rassSignalDopplerSpectrum0thMomentReferringToRassSignal|long|RASS SIGNAL DOPPLER SPECTRUM 0TH MOMENT, REFERRING TO RASS SIGNA|dB|0|-100|8|dB|0|3
+021093|kuBandPeakiness|long|Ku BAND PEAKINESS|Numeric|3|0|16|Numeric|0|5
+021094|sBandPeakiness|long|S BAND PEAKINESS|Numeric|3|0|16|Numeric|0|5
+021101|numberOfVectorAmbiguities|long|NUMBER OF VECTOR AMBIGUITIES|Numeric|0|0|3|Numeric|0|1
+021102|indexOfSelectedWindVector|long|INDEX OF SELECTED WIND VECTOR|Numeric|0|0|3|Numeric|0|1
+021103|totalNumberOfSigma0Measurements|long|TOTAL NUMBER OF SIGMA-0 MEASUREMENTS|Numeric|0|0|5|Numeric|0|2
+021104|likelihoodComputedForSolution|long|LIKELIHOOD COMPUTED FOR SOLUTION|Numeric|3|-30000|15|Numeric|3|5
+021105|normalizedRadarCrossSection|double|NORMALIZED RADAR CROSS-SECTION|dB|2|-10000|14|dB|2|5
+021106|kpVarianceCoefficientAlpha|long|KP VARIANCE COEFFICIENT (ALPHA)|Numeric|3|0|14|Numeric|3|5
+021107|kpVarianceCoefficientBeta|long|KP VARIANCE COEFFICIENT (BETA)|Numeric|8|0|16|Numeric|8|5
+021109|seawindsWindVectorCellQuality|flag|SEAWINDS WIND VECTOR CELL QUALITY|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021110|numberOfInnerBeamSigma0ForwardOfSatellite|long|NUMBER OF INNER-BEAM SIGMA-0 (FORWARD OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021111|numberOfOuterBeamSigma0ForwardOfSatellite|long|NUMBER OF OUTER-BEAM SIGMA-0 (FORWARD OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021112|numberOfInnerBeamSigma0AftOfSatellite|long|NUMBER OF INNER-BEAM SIGMA-0 (AFT OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021113|numberOfOuterBeamSigma0AftOfSatellite|long|NUMBER OF OUTER-BEAM SIGMA-0 (AFT OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021114|kpVarianceCoefficientGamma|double|KP VARIANCE COEFFICENT (GAMMA)|dB|3|-140000|18|dB|3|6
+021115|seawindsSigma0Quality|flag|SEAWINDS SIGMA-0 QUALITY|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021116|seawindsSigma0Mode|flag|SEAWINDS SIGMA-0 MODE|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021117|sigma0VarianceQualityControl|long|SIGMA-0 VARIANCE QUALITY CONTROL|Numeric|2|0|16|Numeric|2|5
+021118|attenuationCorrectionOnSigma0|double|ATTENUATION CORRECTION ON SIGMA-0|dB|2|-10000|14|dB|2|5
+021119|windScatterometerGeophysicalModelFunction|table|WIND SCATTEROMETER GEOPHYSICAL MODEL FUNCTION|CODE TABLE|0|0|6|CODE TABLE|0|2
+021120|probabilityOfRain|long|PROBABILITY OF RAIN|Numeric|3|0|10|Numeric|3|4
+021121|seawindsNofRainIndex|long|SEAWINDS NOF* RAIN INDEX|Numeric|0|0|8|Numeric|0|3
+021122|attenuationCorrectionOnSigma0FromTb|double|ATTENUATION CORRECTION OF SIGMA-0 (FROM TB)|dB|2|-10000|14|dB|2|5
+021123|seawindsNormalizedRadarCrossSection|double|SEAWINDS NORMALIZED RADAR CROSS SECTION|dB|2|-30000|15|dB|2|5
+021128|numberOfValidPointsPerSecondUsedToDerivePreviousParameters|long|NUMBER OF VALID POINTS PER SECOND USED TO DERIVE PREVIOUS PARAME|Numeric|0|0|8|Numeric|0|3
+021130|spectrumTotalEnergy|long|SPECTRUM TOTAL ENERGY|Numeric|6|0|28|Numeric|6|9
+021131|spectrumMaxEnergy|long|SPECTRUM MAX ENERGY|Numeric|6|0|28|Numeric|6|9
+021132|directionOfSpectrumMaxOnHigherResolutionGrid|double|DIRECTION OF SPECTRUM MAX ON HIGHER RESOLUTION GRID|deg|3|0|19|deg|3|6
+021133|wavelengthOfSpectrumMaxOnHigherResolutionGrid|double|WAVE-LENGTH OF SPECTRUM MAX ON HIGHER RESOLUTION GRID|m|3|0|29|m|3|9
+021134|rangeResolutionOfCressCovarianceSpectrum|double|RANGE RESOLUTION OF CRESS COVARIANCE SPECTRUM|rad/m|3|0|19|rad/m|3|6
+021135|realPartOfCrossSpectraPolarGridNumberOfBins|long|REAL PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS|Numeric|3|-524288|20|Numeric|3|7
+021136|imaginaryPartOfCrossSpectraPolarGridNumberOfBins|long|IMAGINARY PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS|Numeric|3|-524288|20|Numeric|3|7
+021137|kuBandCorrectedOceanBackscatterCoefficient|double|KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021138|stdKuBandCorrectedOceanBackscatterCoefficient|double|STD KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021139|kuBandNetInstrumentalCorrectionForAgc|double|KU BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|dB|2|4
+021140|sBandCorrectedOceanBackscatterCoefficient|double|S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021141|stdSBandCorrectedOceanBackscatterCoefficient|double|STD S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021142|sBandNetInstrumentalCorrectionForAgc|double|S BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-1024|11|dB|2|4
+021143|kuBandRainAttenuation|double|KU BAND RAIN ATTENUATION|dB|2|-1073741824|31|dB|2|10
+021144|altimeterRainFlag|flag|ALTIMETER RAIN FLAG|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+021145|kuBandAutomaticGainControl|double|KU BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|NA|0|0
+021146|rmsKuBandAutomaticGainControl|double|RMS KU BAND AUTOMATIC GAIN CONTROL|dB|2|0|8|NA|0|0
+021147|numberOfValidPointsForKuBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR KU BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|5|NA|0|0
+021150|beamCollocation|table|BEAM COLLOCATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+021151|estimatedErrorInSigma0At40DegreesIncidenceAngle|double|ESTIMATED ERROR IN SIGMA0 AT 40DEG INCIDENCE ANGLE|dB|2|0|9|dB|2|3
+021152|slopeAt40DegreesIncidenceAngle|double|SLOPE AT 40DEG INCIDENCE ANGLE|dB/deg|2|-80|7|dB/deg|2|3
+021153|estimatedErrorInSlopeAt40DegreesIncidenceAngle|double|ESTIMATED ERROR IN SLOPE AT 40DEG INCIDENCE ANGLE|dB/deg|2|-40|6|dB/deg|2|3
+021154|soilMoistureSensitivity|double|SOIL MOISTURE SENSITIVITY|dB|2|0|12|dB|2|4
+021155|windVectorCellQuality|flag|WIND VECTOR CELL QUALITY|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+021156|backscatterDistance|long|BACKSCATTER DISTANCE|Numeric|1|-4096|13|Numeric|1|4
+021157|lossPerUnitLengthOfAtmosphere|double|LOSS PER UNIT LENGTH OF ATMOSPHERE USED|dB/m|10|0|22|dB/m|10|7
+021158|ascatKpEstimateQuality|table|ASCAT kp ESTIMATE QUALITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+021159|ascatSigma0Usability|table|ASCAT SIGMA-0 USABILITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+021160|ascatUseOfSyntheticData|long|ASCAT USE OF SYNTHETIC DATA|Numeric|3|0|10|Numeric|3|4
+021161|ascatSyntheticDataQuantity|long|ASCAT SYNTHETIC DATA QUALITY|Numeric|3|0|10|Numeric|3|4
+021162|ascatSatelliteOrbitAndAttitudeQuality|long|ASCAT SATELLITE ORBIT AND ATTITUDE QUALITY|Numeric|3|0|10|Numeric|3|4
+021163|ascatSolarArrayReflectionContamination|long|ASCAT SOLAR ARRAY REFLECTION CONTAMINATION|Numeric|3|0|10|Numeric|3|4
+021164|ascatTelemetryPresenceAndQuality|long|ASCAT TELEMETRY PRESENCE AND QUALITY|Numeric|3|0|10|Numeric|3|4
+021165|ascatExtrapolatedReferenceFunctionPresence|long|ASCAT EXTRAPOLATED REFERENCE FUNCTION PRESENCE|Numeric|3|0|10|Numeric|3|4
+021166|landFraction|long|ASCAT LAND FRACTION|Numeric|3|0|10|Numeric|3|4
+021169|icePresenceIndicator|table|ICE PRESENCE INDICATOR|CODE TABLE|0|0|2|NA|0|0
+021170|cBandCorrectedOceanBackscatterCoefficient|double|C BAND CORRECTED OCEAN BACKSCATTER COEFICIENT|dB|2|-32768|16|NA|0|0
+021171|rmsCBandCorrectedOceanBackscatterCoefficient|double|RMS C BAND CORRECTED OCEAN BACKSCATTER COEFICIENT|dB|2|-32768|16|NA|0|0
+021172|cBandNetInstrumentalCorrectionForAgc|double|C BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|NA|0|0
+021173|cBandAutomaticGainControl|double|C BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|NA|0|0
+021174|rmsCBandAutomaticGainControl|double|RMS C BAND AUTOMATIC GAIN CONTROL|dB|2|0|9|NA|0|0
+021175|numberOfValidPointsForCBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR C BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|10|NA|0|0
+022001|wavesDirection|long|DIRECTION OF WAVES|deg|0|0|9|deg|0|3
+022002|windWavesDirection|long|DIRECTION OF WIND WAVES|deg|0|0|9|deg|0|3
+022003|swellWavesDirection|long|DIRECTION OF SWELL WAVES|deg|0|0|9|deg|0|3
+022004|currentDirection|long|DIRECTION OF CURRENT|deg|0|0|9|deg|0|3
+022005|seaSurfaceCurrentDirection|long|DIRECTION OF SEA SURFACE CURRENT|deg|0|0|9|deg|0|3
+022011|periodOfWaves|long|PERIOD OF WAVES|s|0|0|6|s|0|2
+022012|periodOfWindWaves|long|PERIOD OF WIND WAVES|s|0|0|6|s|0|2
+022013|periodOfSwellWaves|long|PERIOD OF SWELL WAVES|s|0|0|6|s|0|2
+022021|heightOfWaves|double|HEIGHT OF WAVES|m|1|0|10|m|1|4
+022022|heightOfWindWaves|double|HEIGHT OF WIND WAVES|m|1|0|10|m|1|4
+022023|heightOfSwellWaves|double|HEIGHT OF SWELL WAVES|m|1|0|10|m|1|4
+022025|standardDeviationWaveHeight|double|STANDARD DEVIATION WAVE HEIGHT|m|2|0|10|m|2|4
+022026|standardDeviationOfSignificantWaveHeight|double|STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT|m|2|0|10|m|2|4
+022031|speedOfCurrent|double|SPEED OF CURRENT|m/s|2|0|13|m/s|2|4
+022032|speedOfSeaSurfaceCurrent|double|SPEED OF SEA SURFACE CURRENT|m/s|2|0|13|m/s|2|4
+022035|tidalElevationWithRespectToLocalChartDatum|double|TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM|m|2|0|14|m|2|4
+022036|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|2|0|14|m|2|4
+022037|tidalElevationWithRespectToNationalLandDatum|double|TIDAL ELEVATION WITH RESPECT TO NATIONAL LAND DATUM|m|3|-10000|15|m|3|5
+022038|tidalElevationWithRespectToLocalChartDatum|double|TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM|m|3|-10000|15|m|3|5
+022039|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|3|-5000|12|m|3|4
+022040|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|3|-5000|14|m|3|5
+022041|seaSurfaceTemperature15DayRunningMean|double|SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN)|K|1|0|12|K|1|4
+022042|waterTemperature|double|SEA/WATER TEMPERATURE|K|1|0|12|K|1|4
+022043|waterTemperature|double|SEA/WATER TEMPERATURE|K|2|0|15|K|2|5
+022044|soundVelocity|double|SOUND VELOCITY|m/s|1|0|14|m/s|1|5
+022045|waterTemperature|double|SEA/WATER TEMPERATURE|K|3|0|19|K|3|6
+022049|seaSurfaceTemperature|double|SEA SURFACE TEMPERATURE|K|2|0|15|K|2|5
+022050|standardDeviationSeaSurfaceTemperature|double|STANDARD DEVIATION SEA-SURFACE TEMPERATURE|K|2|0|8|K|2|3
+022055|floatCycleNumber|long|FLOAT CYCLE NUMBER|Numeric|0|0|10|Numeric|0|3
+022056|directionOfProfile|table|DIRECTION OF PROFILE|CODE TABLE|0|0|2|CODE TABLE|0|1
+022059|seaSurfaceSalinity|double|SEA SURFACE SALINITY|0/00|2|0|14|0/00|2|5
+022060|lagrangianDrifterDrogueStatus|table|LAGRANGIAN DRIFTER DROGUE STATUS|CODE TABLE|0|0|3|CODE TABLE|0|1
+022061|seaState|table|STATE OF THE SEA|CODE TABLE|0|0|4|CODE TABLE|0|2
+022062|salinity|double|SALINITY|0/00|2|0|14|0/00|2|5
+022063|totalWaterDepth|long|TOTAL WATER DEPTH|m|0|0|14|m|0|5
+022064|salinity|double|SALINITY|0/00|3|0|17|0/00|3|6
+022065|waterPressure|long|WATER PRESSURE|Pa|-3|0|17|Pa|-3|6
+022066|waterConductivity|double|WATER CONDUCTIVITY|S/m|6|0|26|S/m|6|8
+022067|instrumentTypeForWaterTemperatureOrSalinityProfileMeasurement|table|INSTRUMENT TYPE FOR WATER TEMPERATURE PROFILE MEASUREMENT|CODE TABLE|0|0|10|CODE TABLE|0|4
+022068|waterTemperatureProfileRecorderTypes|table|WATER TEMPERATURE PROFILE RECORDER TYPES|CODE TABLE|0|0|7|CODE TABLE|0|3
+022069|spectralWaveDensity|double|SPECTRAL WAVE DENSITY|m2/Hz|3|0|22|m2/Hz|3|7
+022070|significantWaveHeight|double|SIGNIFICANT WAVE HEIGHT|m|2|0|13|m|2|4
+022071|spectralPeakWavePeriod|double|SPECTRAL PEAK WAVE PERIOD|s|1|0|9|s|1|3
+022072|spectralPeakWaveLength|long|SPECTRAL PEAK WAVE LENGTH|m|0|0|13|m|0|4
+022073|maximumWaveHeight|double|MAXIMUM WAVE HEIGHT|m|2|0|13|m|2|4
+022074|averageWavePeriod|double|AVERAGE WAVE PERIOD|s|1|0|9|s|1|3
+022075|averageWaveLength|long|AVERAGE WAVE LENGTH|m|0|0|13|m|0|4
+022076|directionFromWhichDominantWavesAreComing|long|DIRECTION FROM WHICH DOMINANT WAVES ARE COMING|deg|0|0|9|deg|0|3
+022077|directionalSpreadOfDominantWave|long|DIRECTIONAL SPREAD OF DOMINANT WAVE|deg|0|0|9|deg|0|3
+022078|durationOfWaveRecord|long|DURATION OF WAVE RECORD|s|0|0|12|s|0|4
+022079|lengthOfWaveRecord|long|LENGTH OF WAVE RECORD|m|0|0|16|m|0|5
+022080|wavebandCentralFrequency|double|WAVEBAND CENTRAL FREQUENCY|Hz|3|0|10|Hz|3|4
+022081|wavebandCentralWaveNumber|double|WAVEBAND CENTRAL WAVE NUMBER|/m|5|0|13|/m|5|4
+022082|maximumNonDirectionalSpectralWaveDensity|double|MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY|m2 s|2|0|20|m2 s|2|7
+022083|maximumNonDirectionalSpectralWaveNumber|double|MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE NUMBER|m3|2|0|20|m3|2|7
+022084|bandContainingMaximumNonDirectionalSpectralWaveDensity|long|BAND CONTAINING MAXIMUM NON- DIRECTIONAL SPECTRAL WAVE DENSITY|Numeric|0|0|7|Numeric|0|3
+022085|spectralWaveDensityRatio|long|SPECTRAL WAVE DENSITY RATIO|Numeric|0|0|7|Numeric|0|3
+022086|meanDirectionFromWhichWavesAreComing|long|MEAN DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3
+022087|principalDirectionFromWhichWavesAreComing|long|PRINCIPAL DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3
+022088|firstNormalizedPolarCoordinateFromFourierCoefficients|long|FIRST NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS|Numeric|2|0|7|Numeric|2|3
+022089|secondNormalizedPolarCoordinateFromFourierCoefficients|long|SECOND NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS|Numeric|2|0|7|Numeric|2|3
+022090|nonDirectionalSpectralEstimateByWaveFrequency|double|NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY|m2 s|2|0|20|m2 s|2|7
+022091|nonDirectionalSpectralEstimateByWaveNumber|double|NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER|m3|2|0|20|m3|2|7
+022092|directionalSpectralEstimateByWaveFrequency|double|DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY|m2 rad-1 s|2|0|20|m2 rad-1 s|2|7
+022093|directionalSpectralEstimateByWaveNumber|double|DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER|m4|2|0|20|m4|2|7
+022094|totalNumberOfWaveBands|long|TOTAL NUMBER OF WAVE BANDS|Numeric|0|0|7|Numeric|0|3
+022095|directionalSpreadOfIndividualWaves|long|DIRECTIONAL SPREAD OF INDIVIDUAL WAVES|deg|0|0|8|deg|0|3
+022096|spectralBandWidth|double|SPECTRAL BAND WIDTH|/s|3|0|4|/s|3|2
+022097|meanWavelength731MOfImageSpectrumAtLowWaveNumbers|long|MEAN WAVELENGTH > 731 M OF IMAGE SPECTRUM AT LOW WAVE NUMBERS|m|0|0|14|m|0|5
+022098|wavelengthSpreadWavelength731MAtLowWaveNumbers|long|WAVELENGTH SPREAD (WAVELENGTH > 731 M) AT LOW WAVE NUMBERS|m|0|0|14|m|0|5
+022099|meanDirectionAtLowWaveNumbersWavelength731M|long|MEAN DIRECTION AT LOW WAVE NUMBERS (WAVELENGTH > 731 M)|deg|0|0|9|deg|0|3
+022100|directionSpreadAtLowWaveNumbersWavelength731M|long|DIRECTION SPREAD AT LOW WAVE NUMBERS(WAVELENGTH > 731 M)|deg|0|0|9|deg|0|3
+022101|totalEnergyWavelength731mAtLowWaveNumbers|long|TOTAL ENERGY (WAVELENGTH > 731M) AT LOW WAVE NUMBERS|Numeric|0|0|31|Numeric|0|10
+022120|tideStationAutomatedWaterLevelCheck|table|TIDE STATION AUTOMATED WATER LEVEL CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022121|tideStationManualWaterLevelCheck|table|TIDE STATION MANUAL WATER LEVEL CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022122|automatedMeteorologicalDataCheck|table|TIDE STATION AUTOMATED METEOROLOGICAL DATA CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022123|tideStationManualMeteorologicalDataCheck|table|TIDE STATION MANUAL METEOROLOGICAL DATA CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022141|seaSurfaceTemperature15DayRunningMean|double|SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN)|K|2|0|15|K|2|5
+022150|numberOf18HzValidPointsForKuBand|long|NUMBER OF 18 HZ VALID POINTS FOR KU BAND|Numeric|0|0|10|Numeric|0|4
+022151|kuBandOceanRange|double|KU BAND OCEAN RANGE|m|3|0|31|m|3|10
+022152|stdOf18HzKuBandOceanRange|double|STD OF 18 HZ KU BAND OCEAN RANGE|m|3|0|16|m|3|5
+022153|numberOf18HzValidPointsForSBand|long|NUMBER OF 18 HZ VALID POINTS FOR S BAND|Numeric|0|0|10|Numeric|0|4
+022154|sBandOceanRange|double|S BAND OCEAN RANGE|m|3|0|31|m|3|10
+022155|stdOf18HzSBandOceanRange|double|STD OF 18 HZ S BAND OCEAN RANGE|m|3|0|16|m|3|5
+022156|kuBandSignificantWaveHeight|double|KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022157|stdOf18HzKuBandOceanRange|double|STD 18HZ KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022158|sBandSignificantWaveHeight|double|S BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022159|stdOf18HzSBandSignificantWaveHeight|double|STD 18HZ S BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022160|normalizedInverseWaveAge|long|NORMALIZED INVERSE WAVE AGE|Numeric|6|0|21|Numeric|6|7
+022161|waveSpectra|double|WAVE SPECTRA|m4|4|0|27|m4|4|9
+022162|rmsOf20HzKuBandOceanRange|double|RMS OF 20Hz KU BAND OCEAN RANGE|m|3|0|16|NA|0|0
+022163|numberOf20HzValidPointsForKuBand|long|NUMBER OF 20Hz VALID POINTS FOR KU BAND|Numeric|0|0|10|NA|0|0
+022164|rms20HzKuBandSignificantWaveHeight|double|RMS 20Hz KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|NA|0|0
+022165|numberOf20HzValidPointsForKuBandSignificantWaveHeight|long|NUMBER OF 20Hz VALID POINTS FOR KU BAND SIGNIFICANT WAVE HEIGHT|Numeric|0|0|10|NA|0|0
+022166|kuBandNetInstrumentalCorrectionForSignificantWaveHeight|double|KU BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|NA|0|0
+022167|numberOfValidPointsForKuBandBackscatter|long|NUMBER OF VALID POINTS FOR KU BAND BACKSCATTER|Numeric|0|0|10|NA|0|0
+022168|cBandOceanRange|double|C BAND OCEAN RANGE|m|3|0|31|NA|0|0
+022169|rmsOfCBandOceanRange|double|RMS OF C BAND OCEAN RANGE|m|3|0|16|NA|0|0
+022170|numberOf20HzValidPointsForCBand|long|NUMBER OF 20Hz VALID POINTS FOR C BAND|Numeric|0|0|10|NA|0|0
+022171|cBandSignificantWaveHeight|double|C BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|NA|0|0
+022172|rms20HzCBandSignificantWaveHeight|double|RMS 20Hz C BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|NA|0|0
+022173|numberOf20HzValidPointsForCBandSignificantWaveHeight|long|NUMBER OF 20Hz VALID POINTS FOR C BAND|Numeric|0|0|10|NA|0|0
+022174|cBandNetInstrumentalCorrectionForSignificantWaveHeight|double|C BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|NA|0|0
+022175|numberOfValidPointsForCBandBackscatter|long|NUMBER OF VALID POINTS FOR C BAND BACKSCATTER|Numeric|0|0|10|NA|0|0
+022186|directionFromWhichWavesAreComing|long|DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|NA|0|0
+022187|directionalSpreadOfWaves|long|DIRECTIONAL SPREAD OF WAVES|deg|0|0|9|NA|0|0
+022191|spectralDensity|double|SPECTRAL DENSITY|m2 rad-1 s|2|0|20|NA|0|0
+023001|accidentEarlyNotificationArticleApplicable|table|ACCIDENT EARLY NOTIFICATION ARTICLE APPLICABLE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023002|facilityInvolvedInIncident|table|ACTIVITY OR FACILITY INVOLVED IN INCIDENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+023003|releaseType|table|TYPE OF RELEASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023004|countermeasuresTakenNearBorder|table|COUNTERMEASURES TAKEN NEAR BORDER|CODE TABLE|0|0|3|CODE TABLE|0|1
+023005|causeOfIncident|table|CAUSE OF INCIDENT|CODE TABLE|0|0|2|CODE TABLE|0|1
+023006|incidentSituation|table|INCIDENT SITUATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+023007|characteristicsOfRelease|table|CHARACTERISTICS OF RELEASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023008|stateOfCurrentRelease|table|STATE OF CURRENT RELEASE|CODE TABLE|0|0|2|CODE TABLE|0|1
+023009|stateOfExpectedRelease|table|STATE OF EXPECTED RELEASE|CODE TABLE|0|0|2|CODE TABLE|0|1
+023016|possibilityOfSignificantChemicalToxicHealthEffect|table|POSSIBILITY OF SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT|CODE TABLE|0|0|2|CODE TABLE|0|1
+023017|flowDischargeOfMajorRecipient|double|FLOW DISCHARGE OF MAJOR RECIPIENT|m3/s|6|0|20|m3/s|6|7
+023018|releaseBehaviourOverTime|table|RELEASE BEHAVIOUR OVER TIME|CODE TABLE|0|0|3|CODE TABLE|0|1
+023019|actualReleaseHeight|long|ACTUAL RELEASE HEIGHT|m|0|-15000|17|m|0|6
+023021|effectiveReleaseHeight|long|EFFECTIVE RELEASE HEIGHT|m|0|-15000|17|m|0|6
+023022|distanceOfReleasePointOrSiteOfIncident|long|DISTANCE OF RELEASE POINT OR SITE OF INCIDENT|m|0|0|24|m|0|8
+023023|mainTransportSpeedInAtmosphere|double|MAIN TRANSPORT SPEED IN THE ATMOSPHERE|m/s|1|0|12|m/s|1|4
+023024|mainTransportSpeedInWater|double|MAIN TRANSPORT SPEED IN WATER|m/s|2|0|13|m/s|2|4
+023025|mainTransportSpeedInGroundWater|double|MAIN TRANSPORT SPEED IN GROUND WATER|m/s|2|0|13|m/s|2|4
+023027|mainTransportDirectionInTheAtmosphere|long|MAIN TRANSPORT DIRECTION IN THE ATMOSPHERE|deg|0|0|9|deg|0|3
+023028|mainTransportDirectionInWater|long|MAIN TRANSPORT DIRECTION IN WATER|deg|0|0|9|deg|0|3
+023029|mainTransportDirectionInGroundWater|long|MAIN TRANSPORT DIRECTION IN GROUND WATER|deg|0|0|9|deg|0|3
+023031|possibilityPlume|table|POSSIBILITY THAT PLUME WILL ENCOUNTER PRECIPITATION IN STATE IN|CODE TABLE|0|0|2|CODE TABLE|0|1
+023032|plumeWillEncounterChangeInWindDirectionAndOrOrSpeedFlag|table|PLUME WILL ENCOUNTER CHANGE IN WIND DIRECTION AND/OR SPEED FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+024001|estimateOfAmountOfRadioactivityReleasedUpToSpecifiedTime|long|ESTIMATE OF AMOUNT OF RADIOACTIVITY RELEASED UP TO SPECIFIED TIM|Bq|-11|0|28|Bq|-11|9
+024002|estimatedMaximumPotentialRelease|long|ESTIMATED MAXIMUM POTENTIAL RELEASE|Bq|-11|0|28|Bq|-11|9
+024003|compositionOfRelease|table|COMPOSITION OF RELEASE|CODE TABLE|0|0|5|CODE TABLE|0|2
+024004|elementName|string|ELEMENT NAME|CCITT IA5|0|0|16|Character|0|2
+024005|isotopeMass|long|ISOTOPE MASS|Numeric|0|0|9|Numeric|0|3
+024011|dose|double|DOSE|mSv|2|0|32|mSv|2|10
+024012|trajectoryDoseDefinedLocationAndExpectedTimeOfArrival|double|TRAJECTORY DOSE (DEFINED LOCATION AND EXPECTED TIME OF ARRIVAL)|mSv|2|0|32|mSv|2|10
+024013|gammaDoseInAirAlongMainTransportPathDefinedLocationAndTimePeriod|double|GAMMA DOSE IN AIR ALONG THE MAIN TRANSPORT PATH (DEFINED LOCATIO|mSv|2|0|32|mSv|2|10
+024021|airConcentrationOfNamedIsotopeTypeIncludingGrossBeta|double|AIR CONCENTRATION (OF NAMED ISOTOPE TYPE INCLUDING GROSS BETA)|Bq m-3|2|0|32|Bq m-3|2|10
+024022|concentrationInPrecipitationOfNamedIsotopeType|double|CONCENTRATION IN PRECIPITATION (OF NAMES ISOTOPE TYPE)|Bq/l|2|0|32|Bq/l|2|10
+024023|pulseRateOfBetaRadiation|double|PULSE RATE OF BETA RADIATION|/s|1|0|14|/s|1|4
+024024|pulseRateOfGammaRadiation|double|PULSE RATE OF GAMMA RADIATION|/s|1|0|14|/s|1|4
+025001|rangeGateLength|long|RANGE-GATE LENGTH|m|-1|0|6|m|-1|2
+025002|numberOfGatesAveraged|long|NUMBER OF GATES AVERAGED|Numeric|0|0|4|Numeric|0|2
+025003|numberOfIntegratedPulses|long|NUMBER OF INTEGRATED PULSES|Numeric|0|0|8|Numeric|0|3
+025004|echoProcessing|table|ECHO PROCESSING|CODE TABLE|0|0|2|CODE TABLE|0|1
+025005|echoIntegration|table|ECHO INTEGRATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025006|zToRConversion|table|Z TO R CONVERSION|CODE TABLE|0|0|3|CODE TABLE|0|1
+025007|zToRConversionFactor|long|Z TO R CONVERSION FACTOR|Numeric|0|0|12|Numeric|0|4
+025008|zToRConversionExponent|long|Z TO R CONVERSION EXPONENT|Numeric|2|0|9|Numeric|2|3
+025009|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025010|clutterTreatment|table|CLUTTER TREATMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+025011|groundOccultationCorrectionScreening|table|GROUND OCCULTATION CORRECTION (SCREENING)|CODE TABLE|0|0|2|CODE TABLE|0|1
+025012|rangeAttenuationCorrection|table|RANGE ATTENUATION CORRECTION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025013|brightBandCorrection|flag|BRIGHT-BAND CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025014|azimuthClutterCutOff|long|AZIMUTH CLUTTER CUT-OFF (SEE NOTE 1)|Numeric|0|0|12|Numeric|0|4
+025015|radomeAttenuationCorrection|flag|RADOME ATTENUATION CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025016|clearAirAttenuationCorrection|double|CLEAR-AIR ATTENUATION CORRECTION|dB/m|5|0|6|dB/m|5|2
+025017|precipitationAttenuationCorrection|flag|PRECIPITATION ATTENUATION CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025018|aToZLawForAttenuationFactor|long|A TO Z LAW FOR ATTENUATION FACTOR|Numeric|7|0|6|Numeric|7|2
+025019|aToZLawForAttenuationExponent|long|A TO Z LAW FOR ATTENUATION EXPONENT|Numeric|2|0|7|Numeric|2|3
+025020|meanSpeedEstimation|table|MEAN SPEED ESTIMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025021|windComputationEnhancement|flag|WIND COMPUTATION ENHANCEMENT|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025025|batteryVoltage|double|BATTERY VOLTAGE|V|1|0|9|V|1|3
+025026|batteryVoltageLargeRange|double|BATTERY VOLTAGE (LARGE RANGE)|V|1|0|12|V|1|4
+025028|operatorOrManufacturerDefinedParameter|long|OPERATOR OR MANUFACTURER DEFINED PARAMETER|Numeric|1|-16384|15|Numeric|1|5
+025029|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+025030|runningMeanSeaSurfaceTemperatureUsage|table|RUNNING MEAN SEA-SURFACE TEMPERATURE USAGE|CODE TABLE|0|0|2|CODE TABLE|0|1
+025032|windProfilerModeInformation|table|WIND PROFILER MODE INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025033|windProfilerSubmodeInformation|table|WIND PROFILER SUBMODE INFORMATION*|CODE TABLE|0|0|2|CODE TABLE|0|1
+025034|windProfilerQualityControlTestResults|flag|WIND PROFILER QUALITY CONTROL TEST RESULTS*|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025036|atmosphericsLocationMethod|table|ATMOSPHERICS LOCATION METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+025040|co2WindProductDerivation|table|CO2 WIND PRODUCT DERIVATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+025041|movingPlatformDirectionReportingMethod|table|MOVING PLATFORM DIRECTION REPORTING METHOD|CODE TABLE|0|0|2|CODE TABLE|0|1
+025042|movingPlatformSpeedReportingMethod|table|MOVING PLATFORM SPEED REPORTING METHOD|CODE TABLE|0|0|2|CODE TABLE|0|1
+025043|waveSamplingIntervalTime|double|WAVE SAMPLING INTERVAL (TIME)|s|4|0|15|s|4|5
+025044|waveSamplingIntervalSpace|double|WAVE SAMPLING INTERVAL (SPACE)|m|2|0|14|m|2|5
+025045|hirsChannelCombination|flag|HIRS CHANNEL COMBINATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+025046|msuChannelCombination|flag|MSU CHANNEL COMBINATION|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+025047|ssuChannelCombination|flag|SSU CHANNEL COMBINATION|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025048|amsuAChannelCombination|flag|AMSU-A CHANNEL COMBINATION|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+025049|amsuBChannelCombination|flag|AMSU-B CHANNEL COMBINATION|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+025050|principalComponentScore|long|PRINCIPAL COMPONENT SCORE|Numeric|4|-131072|18|Numeric|4|6
+025051|avhrrChannelCombination|flag|AVHRR CHANNEL COMBINATION|FLAG TABLE|0|0|7|FLAG TABLE|0|3
+025052|log10OfPrincipalComponentsNormalizedFitToData|long|LOG-10 OF PRINCIPAL COMPONENTS NORMALIZED FIT TO DATA|Numeric|4|0|15|Numeric|4|5
+025053|observationQuality|flag|OBSERVATION QUALITY|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+025054|ssmisSubframeIdNumber|long|SSMIS SUBFRAME ID NEMBER|Numeric|0|0|5|Numeric|0|2
+025055|multiplexerHousekeeping|double|MULTIPLEXER HOUSEKEEPING|K|2|0|16|K|2|5
+025060|softwareIdentification|long|SOFTWARE IDENTIFICATION (SEE NOTE 2)|Numeric|0|0|14|Numeric|0|5
+025061|softwareVersionNumber|string|SOFTWARE IDENTIFICATION AND VERSION NUMBER|CCITT IA5|0|0|96|Character|0|12
+025062|databaseIdentification|long|DATABASE IDENTIFICATION|Numeric|0|0|14|Numeric|0|5
+025065|orientationCorrectionAzimuth|double|ORIENTATION CORRECTION (AZIMUTH)|deg|2|-1000|11|deg|2|4
+025066|orientationCorrectionElevation|double|ORIENTATION CORRECTION (ELEVATION)|deg|2|-1000|11|deg|2|4
+025067|radiosondeReleasePointPressureCorrection|long|RADIOSONDE RELEASE POINT PRESSURE CORRECTION|Pa|0|-8000|14|Pa|0|4
+025068|numberOfArchiveRecomputes|long|NUMBER OF ARCHIVE RECOMPUTES|Numeric|0|0|7|Numeric|0|3
+025069|flightLevelPressureCorrections|flag|FLIGHT LEVEL PRESSURE CORRECTIONS|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025070|majorFrameCount|long|MAJOR FRAME COUNT|Numeric|0|0|4|Numeric|0|2
+025071|frameCount|long|FRAME COUNT|Numeric|0|0|5|Numeric|0|2
+025075|satelliteAntennaCorrectionsVersionNumber|long|SATELLITE ANTENNA CORRECTIONS VERSION NUMBER|Numeric|0|0|5|Numeric|0|2
+025076|log10OfTemperatureRadianceCentralWaveNumberForAtovs|double|LOG-10 OF (TEMPERATURE-RADIANCE CENTRAL WAVENUMBER) FOR ATOVS|log (m-1)|8|0|30|log (m-1)|8|10
+025077|bandwidthCorrectionCoefficient1ForAtovs|long|BANDWIDTH CORRECTION COEFFICIENT 1 FOR ATOVS|Numeric|5|-100000|18|Numeric|5|7
+025078|bandwidthCorrectionCoefficient2ForAtovs|long|BANDWIDTH CORRECTION COEFFICIENT 2 FOR ATOVS|Numeric|5|0|17|Numeric|5|6
+025079|albedoRadianceSolarFilteredIrradianceForAtovs|double|ALBEDO-RADIANCE SOLAR FILTERED IRRADIANCE FOR ATOVS|W m-2|4|0|24|W m-2|4|8
+025080|albedoRadianceEquivalentFilterWidthForAtovs|double|ALBEDO-RADIANCE EQUIVALENT FILTER WIDTH FOR ATOVS|m|10|0|14|m|10|5
+025081|incidenceAngle|double|INCIDENCE ANGLE|deg|3|0|17|deg|3|6
+025082|azimuthAngle|double|AZIMUTH ANGLE|deg|3|0|19|deg|3|6
+025083|faradayRotationalAngle|double|FARADEY ROTATIONAL ANGLE|deg|3|0|19|deg|3|6
+025084|geometricRotationalAngle|double|GEOMETRIC ROTATIONAL ANGLE|deg|5|0|26|deg|5|8
+025085|fractionOfClearPixelsInHirsFov|long|FRACTION OF CLEAR PIXELS IN HIRS FOV|Numeric|0|0|7|Numeric|0|3
+025086|depthCorrectionIndicator|table|DEPTH CORRECTION INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+025090|orbitStateFlag|table|ORBIT STATE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+025091|structureConstantOfRefractionIndexCn2|double|STRUCTURE CONSTANT OF THE REFRACTION INDEX (CN2)|dB|3|-18192|13|dB|3|5
+025092|acousticPropagationVelocity|double|ACOUSTIC PROPAGATION VELOCITY|m/s|2|28000|14|m/s|2|5
+025093|rassComputationCorrection|flag|RASS COMPUTATION CORRECTION|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025095|altimeterStateFlag|flag|ALTIMETER STATE FLAG|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025096|radiometerStateFlag|flag|RADIOMETER STATE FLAG|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+025097|threeDimensionalErrorEstimateOfNavigatorOrbit|table|THREE DIMENSIONAL ERROR ESTIMATE OF THE NAVIGATOR ORBIT|CODE TABLE|0|0|4|CODE TABLE|0|2
+025098|altimeterDataQualityFlag|flag|ALTIMETER DATA QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025099|altimeterCorrectionQualityFlag|flag|ALTIMETER CORRECTION QUALITY|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025100|xbtOrXctdFallRateEquationCoefficientA|long|XBT/XCTD FALL RATE EQUATION COEFFICIENT A|Numeric|5|0|20|Numeric|5|6
+025101|xbtOrXctdFallRateEquationCoefficientB|long|XBT/XCTD FALL RATE EQUATION COEFFICIENT B|Numeric|5|-500000|21|Numeric|5|6
+025102|numberOfMissingLinesExcludingDataGaps|long|NUMBER OF MISSING LINES EXCLUDING DATA GAPS|Numeric|0|0|8|Numeric|0|3
+025103|numberOfDirectionalBins|long|NUMBER OF DIRECTIONAL BINS|Numeric|0|0|8|Numeric|0|3
+025104|numberOfWavelengthBins|long|NUMBER OF WAVE-LENGTH BINS|Numeric|0|0|8|Numeric|0|3
+025105|firstDirectionalBin|double|FIRST DIRECTIONAL BIN|deg|3|0|19|NA|0|0
+025106|directionalBinStep|double|DIRECTIONAL BIN STEP|deg|3|0|19|NA|0|0
+025107|firstWavelengthBin|double|FIRST WAVE-LENGTH BIN|m|3|0|29|m|3|9
+025108|lastWavelengthBin|double|LAST WAVE-LENGTH BIN|m|3|0|29|m|3|9
+025110|imageProcessingSummary|flag|IMAGE PROCESSING SUMMARY|FLAG TABLE|0|0|10|NA|0|0
+025111|numberOfInputDataGaps|long|NUMBER OF INPUT DATA GAPS|Numeric|0|0|8|Numeric|0|3
+025120|ra2L2ProcessingFlag|table|RA2-L2-PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025121|ra2L2ProcessingQuality|long|RA2-L2-PROCESSING QUALITY|%|0|0|7|%|0|3
+025122|hardwareConfigurationForRf|table|HARDWARE CONFIGURATION FOR RF|CODE TABLE|0|0|2|CODE TABLE|0|1
+025123|hardwareConfigurationForHpa|table|HARDWARE CONFIGURATION FOR HPA|CODE TABLE|0|0|2|CODE TABLE|0|1
+025124|mwrL2ProcessingFlag|table|MWR L2 PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025125|mwrL2ProcessingQuality|long|MWR L2-PROCESSING QUALITY|%|0|0|7|%|0|3
+025126|modelDryTroposphericCorrection|double|MODEL DRY TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025127|invertedBarometerCorrection|double|INVERTED BAROMETER CORRECTION|m|3|-32768|16|m|3|5
+025128|modelWetTroposphericCorrection|double|MODEL WET TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025129|mwrDerivedWetTroposphericCorrection|double|MWR DERIVED WET TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025130|ra2IonosphericCorrectionOnKuBand|double|RA2 IONOSPHERIC CORRECTION ON KU BAND|m|3|-32768|16|m|3|5
+025131|ionosphericCorrectionFromDorisOnKuBand|double|IONOSPHERIC CORRECTION FROM DORIS ON KU BAND|m|3|-32768|16|m|3|5
+025132|ionosphericCorrectionFromModelOnKuBand|double|IONOSPHERIC CORRECTION FROM MODEL ON KU BAND|m|3|-32768|16|m|3|5
+025133|seaStateBiasCorrectionOnKuBand|double|SEA STATE BIAS CORRECTION ON KU BAND|m|3|-32768|16|m|3|5
+025134|ra2IonosphericCorrectionOnSBand|double|RA2 IONOSPHERIC CORRECTION ON S BAND|m|3|-32768|16|m|3|5
+025135|ionosphericCorrectionFromDorisOnSBand|double|IONOSPHERIC CORRECTION FROM DORIS ON S BAND|m|3|-32768|16|m|3|5
+025136|ionosphericCorrectionFromModelOnSBand|double|IONOSPHERIC CORRECTION FROM MODEL ON S BAND|m|3|-32768|16|m|3|5
+025137|seaStateBiasCorrectionOnSBand|double|SEA STATE BIAS CORRECTION ON S BAND|m|3|-32768|16|m|3|5
+025138|averageSignalToNoiseRatio|long|AVERAGE SIGNAL TO NOISE RATION|Numeric|0|-2048|12|Numeric|0|4
+025140|startChannel|long|START CHANNEL|Numeric|0|0|14|Numeric|0|5
+025141|endChannel|long|END CHANNEL|Numeric|0|0|14|Numeric|0|5
+025142|channelScaleFactor|long|CHANNEL SCALE FACTOR|Numeric|0|0|6|Numeric|0|2
+025143|linearCoefficient|long|LINEAR COEFFICIENT|Numeric|6|-5000000|24|Numeric|6|8
+025150|methodOfTropicalCycloneIntensityAnalysisUsingSatelliteData|table|SATELLITE INTENSITY ANALYSIS METHOD OF TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|2|2
+025160|kuBandNetInstrumentalCorrection|double|KU BAND INSTRUMENTAL CORRECTION|m|4|-120000|18|NA|0|0
+025161|cBandNetInstrumentalCorrection|double|C BAND INSTRUMENTAL CORRECTION|m|4|-120000|18|NA|0|0
+025162|seaStateBiasCorrectionOnCBand|double|SEA STATE BIAS CORRECTION ON C BAND|m|4|-6000|13|NA|0|0
+025163|altimeterIonosphericCorrectionOnKuBand|double|ALTIMETER IONOSPHERIC CORRECTION ON KU BAND|m|3|-32768|16|NA|0|0
+025164|radiometerWetTroposphericCorrection|double|RADIOMETER WET|m|4|-5000|13|NA|0|0
+025174|smosInformationFlag|flag|SMOS INFORMATION FLAG|FLAG TABLE|0|0|14|FLAG TABLE|0|5
+026001|principalTimeOfDailyReadingInUtcOfMaximumTemperature|double|PRINCIPAL TIME OF DAILY READING IN UTC OF MAXIMUM TEMPERATURE|h|1|0|12|h|1|3
+026002|principalTimeOfDailyReadingInUtcOfMinimumTemperature|double|PRINCIPAL TIME OF DAILY READING IN UTC OF MINIMUM TEMPERATURE|h|1|0|12|h|1|3
+026003|timeDifference|long|TIME DIFFERENCE|min|0|-1440|12|min|0|4
+026010|hoursIncluded|flag|HOURS INCLUDED|FLAG TABLE|0|0|26|FLAG TABLE|0|9
+026020|durationOfPrecipitation|long|DURATION OF PRECIPITATION|min|0|0|11|min|0|4
+027001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+027002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+027003|alternateLatitude|double|ALTERNATE LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+027004|alternateLatitude|double|ALTERNATE LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+027010|footprintAxis1|long|FOOTPRINT AXIS 1|m|-1|0|14|m|-1|5
+027020|satelliteLocationCounter|long|SATELLITE LOCATION COUNTER|Numeric|0|0|16|Numeric|0|5
+027021|satelliteSublocationDimension|long|SATELLITE SUBLOCATION DIMENSION|Numeric|0|0|16|Numeric|0|5
+027031|DistanceFromEarthCentreInDirectionOf0DegreesLongitude|double|IN DIRECTION OF 0 DEGREES LONGITUDE, DISTANCE FROM THE EARTH'S C|m|2|-1073741824|31|m|2|10
+027080|viewingAzimuthAngle|double|VIEWING AZIMUTH ANGLE|deg|2|0|16|deg|0|5
+028001|longitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+028002|longitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+028003|alternateLongitude|double|ALTERNATE LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+028004|alternateLongitude|double|ALTERNATE LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+028010|footprintAxis2|long|FOOTPRINT AXIS 2|m|-1|0|14|m|-1|5
+028031|DistanceFromEarthCentreInDirection90DegreesEast|double|IN DIRECTION 90 DEGREES EAST, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10
+029001|projectionType|table|PROJECTION TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+029002|coordinateGridType|table|CO-ORDINATE GRID TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+030001|pixelValue4Bits|long|PIXEL VALUE (4 BITS)|Numeric|0|0|4|Numeric|0|2
+030002|pixelValue8Bits|long|PIXEL VALUE (8 BITS)|Numeric|0|0|8|Numeric|0|3
+030004|pixelValue16Bits|long|PIXEL VALUE (16 BITS)|Numeric|0|0|16|Numeric|0|5
+030010|numberOfGridPoints|long|NUMBER OF GRID POINTS|Numeric|0|0|13|Numeric|0|4
+030021|numberOfPixelsPerRow|long|NUMBER OF PIXELS PER ROW|Numeric|0|0|12|Numeric|0|4
+030022|numberOfPixelsPerColumn|long|NUMBER OF PIXELS PER COLUMN|Numeric|0|0|12|Numeric|0|4
+030031|pictureType|table|PICTURE TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+030032|combinationWithOtherData|flag|COMBINATION WITH OTHER DATA|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+031000|shortDelayedDescriptorReplicationFactor|long|SHORT DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|1|Numeric|0|1
+031001|delayedDescriptorReplicationFactor|long|DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|8|Numeric|0|3
+031002|extendedDelayedDescriptorReplicationFactor|long|EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|16|Numeric|0|5
+031011|delayedDescriptorAndDataRepetitionFactor|long|DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|8|Numeric|0|3
+031012|extendedDelayedDescriptorAndDataRepetitionFactor|long|EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|16|Numeric|0|5
+031021|associatedFieldSignificance|table|ASSOCIATED FIELD SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+031031|dataPresentIndicator|flag|DATA PRESENT INDICATOR|FLAG TABLE|0|0|1|FLAG TABLE|0|1
+033002|qualityInformation|table|QUALITY INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033003|qualityInformation|table|QUALITY INFORMATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+033005|qualityInformationAwsData|flag|QUALITY INFORMATION (AWS DATA)|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+033006|internalMeasurementStatusInformationAws|table|INTERNAL MEASUREMENT STATUS INFORMATION (AWS)|CODE TABLE|0|0|3|CODE TABLE|0|1
+033007|percentConfidence|long|PER CENT CONFIDENCE|%|0|0|7|%|0|3
+033009|relativeError|double|RELATIVE ERROR|%|6|0|20|%|0|7
+033015|dataQualityCheckIndicator|table|DATA QUALITY CHECK INDICATOR|CODE TABLE|0|0|6|CODE TABLE|0|2
+033020|qualityControlIndicationOfFollowingValue|table|QUALITY CONTROL INDICATION OF FOLLOWING VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+033021|qualityOfFollowingValue|table|QUALITY OF FOLLOWING VALUE|CODE TABLE|0|0|2|CODE TABLE|0|1
+033022|qualityOfBuoySatelliteTransmission|table|QUALITY OF BUOY SATELLITE TRANSMISSION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033023|qualityOfBuoyLocation|table|QUALITY OF BUOY LOCATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033024|stationElevationQualityMarkForMobileStations|table|STATION ELEVATION QUALITY MARK (FOR MOBILE STATIONS)|CODE TABLE|0|0|4|CODE TABLE|0|2
+033025|acarsInterpolatedValuesIndicator|table|ACARS INTERPOLATED VALUES|CODE TABLE|0|0|3|CODE TABLE|0|1
+033026|moistureQuality|table|MOISTURE QUALITY|CODE TABLE|0|0|6|CODE TABLE|0|2
+033027|locationQualityClassRangeOfRadiusOf66Confidence|table|LOCATION QUALITY CLASS (RANGE OF RADIUS OF 66 % CONFIDENCE)|CODE TABLE|0|0|3|CODE TABLE|0|1
+033028|snapshotOverallQuality|table|SNAPSHOT OVERALL QUALITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+033030|scanLineStatusFlagsForAtovs|flag|SCAN LINE STATUS FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033031|scanLineQualityFlagsForAtovs|flag|SCAN LINE QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033032|channelQualityFlagsForAtovs|flag|CHANNEL QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033033|fieldOfViewQualityFlagsForAtovs|flag|FIELD OF VIEW QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033035|qualityControl|table|MANUAL/AUTOMATIC QUALITY CONTROL|CODE TABLE|0|0|4|CODE TABLE|0|2
+033036|nominalConfidenceThreshold|long|NOMINAL CONFIDENCE THRESHOLD|%|0|0|7|%|0|3
+033037|windCorrelationError|flag|WIND CORRELATION ERROR|FLAG TABLE|0|0|20|FLAG TABLE|0|7
+033038|qualityFlagsForGroundBasedGnssData|flag|QUALITY FLAGS FOR GROUND-BASED GNSS DATA|FLAG TABLE|0|0|10|FLAG TABLE|0|4
+033039|radioOccultationDataQualityFlags|flag|QUALITY FLAGS FOR RADIO OCCULTATION DATA|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+033040|confidenceInterval|long|CONFIDENCE INTERVAL|%|0|0|7|%|0|3
+033041|attributeOfFollowingValue|table|ATTRIBUTE OF FOLLOWING VALUE|CODE TABLE|0|0|2|CODE TABLE|0|1
+033042|typeOfLimitRepresentedByFollowingValue|table|TYPE OF LIMIT REPRESENTED BY FOLLOWING VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+033043|astConfidence|flag|AST CONFIDENCE|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+033044|asarQualityInformation|flag|ASAR QUALITY INFORMATION|FLAG TABLE|0|0|15|FLAG TABLE|0|5
+033045|probabilityOfFollowingEvent|long|PROBABILITY OF FOLLOWING EVENT|%|0|0|7|%|0|3
+033046|conditionalProbability|long|CONDITIONAL PROBABILITY OF FOLLOWING EVENT WITH RESPECT TO SPECI|%|0|0|7|%|0|3
+033047|measurementConfidenceData|flag|MEASUREMENT CONFIDENCE DATA|FLAG TABLE|0|0|31|FLAG TABLE|0|11
+033048|confidenceMeasureOfSarInversion|table|CONFIDENCE MEASURE OF SAR INVERSION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033049|confidenceMeasureOfWindRetrieval|table|CONFIDENCE MEASURE OF WIND RETRIEVAL|CODE TABLE|0|0|2|CODE TABLE|0|1
+033050|globalGtsppQualityFlag|table|GLOBAL GTSPP QUALITY FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+033052|sBandOceanRetrackingQuality|flag|S BAND OCEAN RETRACKING QUALITY|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+033053|kuBandOceanRetrackingQuality|flag|KU BAND OCEAN RETRACKING QUALITY|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+033060|gqisFlagQual|table|GQISFLAGQUAL-INDIVIDUAL IASI-SYSTEM QUALITY FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+033061|gqisQualIndex|long|GQISQUALINDEX - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE|%|0|0|7|%|0|3
+033062|gqisQualIndexLoc|long|GQISQUALINDEXLOC - INDICATOR FOR GEOMETRIC QUALITY INDEX|%|0|0|7|%|0|3
+033063|gqisQualIndexRad|long|GQISQUALINDEXRAD - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE|%|0|0|7|%|0|3
+033064|gqisQualIndexSpect|long|GQISQUALINDEXSPECT - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE|%|0|0|7|%|0|3
+033065|gqisSysTecQual|long|GQISSYSTECSONDQUAL - OUTPUT OF SYSTEM TEC QUALITY FUNCTION|Numeric|0|0|24|Numeric|0|24
+033066|sbuvTotalOzoneQuality|table|SBUV TOTAL OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033067|sbuvProfileOzoneQuality|table|SBUV PROFILE OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033070|totalOzoneQuality|table|TOTAL OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033071|profileOzoneQuality|table|PROFILE OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+035000|fmAndRegionalCodeNumber|table|FM AND REGIONAL CODE NUMBER|CODE TABLE|0|0|10|CODE TABLE|0|3
+035001|timeFrameForMonitoring|table|TIME-FRAME FOR MONITORING|CODE TABLE|0|0|3|CODE TABLE|0|1
+035011|numberOfReportsActuallyReceived|long|NUMBER OF REPORTS ACTUALLY RECEIVED|Numeric|0|0|14|Numeric|0|4
+035021|bulletinBeingMonitoredTtaaii|string|BULLETIN BEING MONITORED (TTAAII)|CCITT IA5|0|0|48|Character|0|6
+035022|bulletinBeingMonitoredYygggg|string|BULLETIN BEING MONITORED (YYGGGG)|CCITT IA5|0|0|48|Character|0|6
+035023|bulletinBeingMonitoredCccc|string|BULLETIN BEING MONITORED (CCCC)|CCITT IA5|0|0|32|Character|0|4
+035024|bulletinBeingMonitoredBbb|string|BULLETIN BEING MONITORED (BBB)|CCITT IA5|0|0|24|Character|0|3
+035030|discrepanciesInAvailabilityOfExpectedData|table|DISCREPANCIES IN THE AVAILABILITY OF EXPECTED DATA|CODE TABLE|0|0|4|CODE TABLE|0|1
+035031|qualifierOnMonitoringResults|table|QUALIFIER ON MONITORING RESULTS|CODE TABLE|0|0|7|CODE TABLE|0|2
+035032|causeOfMissingData|table|CAUSE OF MISSING DATA|CODE TABLE|0|0|4|CODE TABLE|0|1
+035033|observationAndCollectionDeficiencies|table|OBSERVATION AND COLLECTION DEFICIENCIES|CODE TABLE|0|0|7|CODE TABLE|0|2
+035034|statisticalTrendsForAvailabilityOfDataDuringSurveyPeriods|table|STATISTICAL TRENDS FOR AVAILABILITY OF DATA (DURING THE SURVEY P|CODE TABLE|0|0|3|CODE TABLE|0|1
+035035|reasonForTermination|table|REASON FOR TERMINATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+040001|surfaceSoilMoisture|double|SURFACE SOIL MOISTURE (MS)|%|1|0|10|%|1|4
+040002|estimatedErrorInSurfaceSoilMoisture|double|ESTIMATED ERROR IN SURFACE SOIL MOISTURE|%|1|0|10|%|1|4
+040003|meanSurfaceSoilMoisture|long|MEAN SURFACE SOIL MOISTURE|Numeric|3|0|10|Numeric|3|4
+040004|rainFallDetection|long|RAIN FALL DETECTION|Numeric|3|0|10|Numeric|3|4
+040005|soilMoistureCorrectionFlag|flag|SOIL MOISTURE CORRECTION FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040006|soilMoistureProcessingFlag|flag|SOIL MOISTURE PROCESSING FLAG|FLAG TABLE|0|0|16|FLAG TABLE|0|5
+040007|soilMoistureQuality|double|SOIL MOISTURE QUALITY|%|1|0|10|%|1|4
+040008|frozenLandSurfaceFraction|double|FROZEN LAND SURFACE FRACTION|%|1|0|10|%|1|4
+040009|inundationAndWetlandFraction|double|INUNDATION AND WETLAND FRACTION|%|1|0|10|%|1|4
+040010|topographicComplexity|double|TOPOGRAPHIC COMPLEXITY|%|1|0|10|%|1|4
+040011|interpolationFlag|flag|INTERPOLATION FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040012|radiometerDataQualityFlag|flag|RADIOMETER DATA QUALITY FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040013|radiometerBrightnessTemperatureInterpretationFlag|table|RADIOMETER BRIGHTNESS TEMPERATURE INTERPOLATION FLAG|CODE TABLE|0|0|3|NA|0|0
+040014|highFrequencyFluctuationsOfSeaSurfaceTopographyCorrection|double|HIGH FREQUENCY FLUCTUATIONS OF THE SEA SURFACE TOPOGRAPHY CORREC|m|4|-3000|13|NA|0|0
+040018|averageOfImagerMeasurements|double|GLACAVGLMAGLLS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|NA|0|0
+040019|giacvarimagiisVarianceOfImagerMeasurements|double|GLACVARLMAGLLS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|NA|0|0
+040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|NA|0|0
+040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH SNOW/I|%|0|0|7|NA|0|0
+040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|NA|0|0
diff --git a/definitions/bufr/tables/0/wmo/8/sequence.def b/definitions/bufr/tables/0/wmo/8/sequence.def
new file mode 100644
index 0000000..037fc3a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/8/sequence.def
@@ -0,0 +1,678 @@
+"300002" = [  000002, 000003 ]
+"300003" = [  000010, 000011, 000012 ]
+"300004" = [  300003, 000013, 000014, 000015, 000016, 000017, 000018, 000019, 000020 ]
+"300010" = [  300003, 101000, 031001, 000030 ]
+"301001" = [  001001, 001002 ]
+"301002" = [  001003, 001004, 001005 ]
+"301003" = [  001011, 001012, 001013 ]
+"301004" = [  001001, 001002, 001015, 002001 ]
+"301005" = [  001035, 001034 ]
+"301011" = [  004001, 004002, 004003 ]
+"301012" = [  004004, 004005 ]
+"301013" = [  004004, 004005, 004006 ]
+"301014" = [  102002, 301011, 301012 ]
+"301021" = [  005001, 006001 ]
+"301022" = [  005001, 006001, 007001 ]
+"301023" = [  005002, 006002 ]
+"301024" = [  005002, 006002, 007001 ]
+"301025" = [  301023, 004003, 301012 ]
+"301026" = [  301021, 004003, 004003, 004004, 004004, 004005, 004005 ]
+"301027" = [  008007, 101000, 031001, 301028, 008007 ]
+"301028" = [  008040, 033042, 007010, 101000, 031002, 301023, 019007, 008040 ]
+"301031" = [  301001, 002001, 301011, 301012, 301022 ]
+"301032" = [  301001, 002001, 301011, 301012, 301024 ]
+"301033" = [  001005, 002001, 301011, 301012, 301021 ]
+"301034" = [  001005, 002001, 301011, 301012, 301023 ]
+"301035" = [  001005, 001012, 001013, 002001, 301011, 301012, 301023 ]
+"301036" = [  301003, 002001, 301011, 301012, 301023 ]
+"301037" = [  301001, 002011, 002012, 301011, 301012, 301022 ]
+"301038" = [  301001, 002011, 002012, 301011, 301012, 301024 ]
+"301039" = [  301003, 002011, 002012, 301011, 301012, 301023 ]
+"301040" = [  301003, 002011, 002012, 301011, 301012, 301024 ]
+"301041" = [  001007, 002021, 002022, 301011, 301012 ]
+"301042" = [  301041, 301021 ]
+"301043" = [  001007, 002023, 301011, 301013, 301021 ]
+"301044" = [  001007, 002024, 301011, 301013, 301021 ]
+"301045" = [  301011, 301012, 201138, 202131, 004006, 201000, 202000, 304030, 304031 ]
+"301046" = [  001007, 001012, 002048, 021119, 025060, 202124, 002026, 002027, 202000, 005040
+               ]
+"301047" = [  001007, 025060, 001033, 001034, 001012, 301045, 002021, 301011, 301012, 201138,
+               202131, 004006, 201000, 202000, 301023 ]
+"301048" = [  002104, 002121, 002113, 002026, 002027, 002111, 002140, 202127, 001013, 202126,
+               007001, 202000, 025010, 021064 ]
+"301049" = [  002111, 002112, 021062, 021063, 021065 ]
+"301051" = [  001006, 002061, 301011, 301012, 301021, 008004 ]
+"301055" = [  001005, 002001, 301011, 301012, 301021, 001012, 001014 ]
+"301062" = [  101000, 031001, 301001 ]
+"301065" = [  001006, 001008, 002001, 002002, 002005, 002062, 002070, 002065 ]
+"301066" = [  301011, 301013, 301023, 007004, 002064, 008004 ]
+"301070" = [  002143, 002142, 002144 ]
+"301071" = [  001007, 001031, 002020, 002028, 002029 ]
+"301072" = [  301071, 301011, 301013, 301021 ]
+"301074" = [  002143, 002142, 002145, 002146 ]
+"301075" = [  301001, 001015, 301024, 008021, 301011, 301012 ]
+"301076" = [  002011, 002143, 002142 ]
+"301089" = [  001101, 001102 ]
+"301090" = [  301004, 301011, 301012, 301021, 007030, 007031 ]
+"301091" = [  002180, 002181, 002182, 002183, 002184, 002179, 002186, 002187, 002188, 002189
+               ]
+"301092" = [  001011, 001003, 002001, 301011, 301012, 301021, 007030, 007031, 033024 ]
+"301093" = [  301036, 007030, 007031 ]
+"301110" = [  301001, 001011, 002011, 002014, 002003 ]
+"301111" = [  301001, 001011, 002011, 002013, 002014, 002003 ]
+"301112" = [  001006, 002011, 002013, 002014, 002003 ]
+"301113" = [  008021, 301011, 301013 ]
+"301114" = [  301021, 007030, 007031, 007007, 033024 ]
+"301120" = [  301001, 001094, 002011, 301121 ]
+"301121" = [  008041, 301122, 301021, 007031, 007007 ]
+"301122" = [  301011, 301012, 201135, 202130, 004006, 202000, 201000 ]
+"301123" = [  102002, 008041, 001062, 301001, 001094, 002011, 001018, 001095, 025061, 025068,
+               001082, 001083, 001081, 002067, 002066, 002014, 025067, 025065, 025066, 002095,
+               002096, 002097, 002016, 002083, 002080, 002081, 001093, 002084, 002085, 002086,
+               002082, 008041, 301011 ]
+"301125" = [  001033, 001034, 025060, 001007, 002019, 001012 ]
+"302001" = [  010004, 010051, 010061, 010063 ]
+"302002" = [  010004, 007004, 010003, 010061, 010063 ]
+"302003" = [  011011, 011012, 012004, 012006, 013003, 020001, 020003, 020004, 020005 ]
+"302004" = [  020010, 008002, 020011, 020013, 020012, 020012, 020012 ]
+"302005" = [  008002, 020011, 020012, 020013 ]
+"302006" = [  010004, 010051, 010062, 010063 ]
+"302011" = [  302001, 302003, 302004 ]
+"302012" = [  302002, 302003, 302004 ]
+"302013" = [  302006, 302003, 101000, 031001, 302005 ]
+"302021" = [  022001, 022011, 022021 ]
+"302022" = [  022002, 022012, 022022 ]
+"302023" = [  022003, 022013, 022023 ]
+"302024" = [  302022, 101002, 302023 ]
+"302031" = [  302001, 010062, 007004, 010009 ]
+"302032" = [  007032, 012101, 012103, 013003 ]
+"302033" = [  007032, 020001 ]
+"302034" = [  007032, 013023 ]
+"302035" = [  302032, 302033, 302034, 007032, 302004, 101000, 031001, 302005 ]
+"302036" = [  105000, 031001, 008002, 020011, 020012, 020014, 020017 ]
+"302037" = [  020062, 013013, 012113 ]
+"302038" = [  020003, 004024, 020004, 020005 ]
+"302039" = [  004024, 014031 ]
+"302040" = [  007032, 102002, 004024, 013011 ]
+"302041" = [  007032, 004024, 004024, 012111, 004024, 004024, 012112 ]
+"302042" = [  007032, 002002, 008021, 004025, 011001, 011002, 008021, 103002, 004025, 011043,
+               011041 ]
+"302043" = [  302038, 101002, 302039, 302040, 302041, 302042, 007032 ]
+"302044" = [  004024, 002004, 013033 ]
+"302045" = [  004024, 014002, 014004, 014016, 014028, 014029, 014030 ]
+"302046" = [  004024, 004024, 012049 ]
+"302047" = [  102003, 008002, 020054 ]
+"302048" = [  005021, 007021, 020012, 005021, 007021 ]
+"302049" = [  008002, 020011, 020013, 020012, 020012, 020012, 008002 ]
+"302050" = [  008041, 005021, 007005, 202130, 006021, 202000, 008041, 201131, 202129, 002115,
+               010004, 002115, 013003, 202000, 201000, 002115, 011001, 011002, 002115, 102002,
+               012101, 004024, 002115, 012103, 012102, 101003, 020012, 020011, 020013, 101002,
+               020003 ]
+"302051" = [  010004, 010051, 007004, 010003, 012004, 012051, 012016, 012017, 013004, 102004,
+               008051, 008020 ]
+"302052" = [  007032, 007033, 012101, 002039, 012102, 012103, 013003 ]
+"302053" = [  007032, 007033, 020001 ]
+"302054" = [  302052, 302053, 007033, 302034, 007032, 302004, 101000, 031001, 302005 ]
+"302055" = [  020031, 020032, 020033, 020034, 020035, 020036, 020037, 020038 ]
+"302056" = [  002038, 007063, 022043, 007063 ]
+"302057" = [  302056, 302021, 302024 ]
+"302058" = [  007032, 007033, 004024, 004024, 012111, 004024, 004024, 012112 ]
+"302059" = [  007032, 007033, 002002, 008021, 004025, 011001, 011002, 008021, 103002, 004025,
+               011043, 011041 ]
+"302060" = [  302038, 302040, 302058, 302059 ]
+"302062" = [  302001, 302052, 302053, 007033, 101000, 031000, 302034, 007032, 101000, 031001,
+               302005, 008002, 101000, 031000, 302055, 101000, 031000, 302056, 101000, 031000,
+               302021, 101000, 031000, 302024 ]
+"302063" = [  302038, 101000, 031000, 302040, 101000, 031000, 302058, 302059 ]
+"302066" = [  020023, 020024, 020027, 020054, 020023, 020027, 020054, 020025, 020026, 020027,
+               020040, 020066, 020027, 020021, 020067, 020027 ]
+"302069" = [  007032, 007033, 033041, 020001 ]
+"302070" = [  007032, 007033, 011001, 011002, 011043, 011041, 011016, 011017 ]
+"302071" = [  007032, 007033, 008021, 004025, 011001, 011002, 008021, 103002, 004025, 011043,
+               011041, 004025, 011016, 011017 ]
+"302072" = [  007032, 007033, 012101, 012103, 013003 ]
+"302073" = [  020010, 105004, 008002, 020011, 020012, 033041, 020013 ]
+"302074" = [  020003, 004025, 020004, 020005 ]
+"302075" = [  008021, 004025, 013055, 013058, 008021 ]
+"302076" = [  020021, 020022, 026020, 020023, 020024, 020025, 020026 ]
+"302077" = [  007032, 007033, 004025, 012111, 012112, 007032, 004025, 012112 ]
+"302078" = [  002176, 020062, 002177, 013013 ]
+"302079" = [  007032, 002175, 002178, 004025, 013011 ]
+"302080" = [  002185, 004025, 013033 ]
+"302081" = [  004025, 014031 ]
+"302082" = [  004025, 014002, 014004, 014016, 014028, 014029, 014030 ]
+"302083" = [  004025, 008023, 010004, 011001, 011002, 012101, 013003, 008023 ]
+"303001" = [  007003, 011001, 011002 ]
+"303002" = [  007004, 011001, 011002 ]
+"303003" = [  007004, 010003, 012001, 012003 ]
+"303004" = [  007004, 010003, 012001, 012003, 011001, 011002 ]
+"303011" = [  007003, 008001, 011001, 011002 ]
+"303012" = [  007004, 008001, 011001, 011002 ]
+"303013" = [  007004, 008001, 010003, 012001, 013003, 011001, 011002 ]
+"303014" = [  007004, 008001, 010003, 012001, 012003, 011001, 011002 ]
+"303021" = [  007004, 007004, 204007, 031021 ]
+"303022" = [  303021, 010003, 204000 ]
+"303023" = [  303021, 012001, 204000 ]
+"303024" = [  303021, 013016, 204000 ]
+"303025" = [  002025, 204007, 031021, 012063, 204000 ]
+"303026" = [  007004, 008003, 204007, 031021, 012001, 204000 ]
+"303027" = [  007004, 204007, 031021, 010003, 204000 ]
+"303031" = [  007004, 008003, 007021, 007022, 008012, 012061 ]
+"303032" = [  020011, 020016 ]
+"303033" = [  020010, 020016 ]
+"303040" = [  008041, 004025, 004026, 301021, 301122, 201131, 202129, 025069, 007004, 013003,
+               202000, 201000, 002013, 012101, 010009, 102002, 008040, 035035 ]
+"303041" = [  002152, 002023, 007004, 011001, 011002, 002153, 002154, 012071 ]
+"303050" = [  004086, 008042, 007004, 005015, 006015, 011001, 011002 ]
+"303051" = [  004086, 008042, 007004, 005015, 006015, 011061, 011062 ]
+"303052" = [  004086, 008042, 007009, 005015, 006015, 011001, 011002 ]
+"303053" = [  004086, 008042, 007009, 005015, 006015, 011061, 011062 ]
+"303054" = [  004086, 008042, 007004, 010009, 005015, 006015, 012101, 012103, 011001, 011002
+               ]
+"304001" = [  008003, 010004, 012001, 011001, 011002 ]
+"304002" = [  008003, 010004, 011001, 011002 ]
+"304003" = [  008003, 012001 ]
+"304004" = [  008003, 010004, 020010, 012001 ]
+"304005" = [  002024, 007004, 007004, 013003 ]
+"304006" = [  014001, 014001, 014003 ]
+"304011" = [  002163, 002164, 008012, 007024, 002057, 008021, 004001, 004002, 004003, 004004,
+               008021, 004024, 110004, 008021, 004004, 004005, 004006, 008021, 004004, 004005,
+               004006, 011001, 011002, 103010, 002163, 007004, 012001 ]
+"304030" = [  027031, 028031, 010031 ]
+"304031" = [  001041, 001042, 001043 ]
+"304032" = [  002153, 002154, 020081, 020082, 020012 ]
+"304033" = [  002152, 002166, 002167, 002153, 002154, 012075, 012076, 012063 ]
+"304034" = [  102004, 027001, 028001, 007022, 005043, 020010, 020016, 033003, 010040 ]
+"304035" = [  002153, 002154, 012063, 008001, 012063, 008001, 012063, 008001, 008003, 012063,
+               008003, 012063, 008003, 012063, 008003 ]
+"304036" = [  020082, 008012, 020082, 008012, 020081, 008003, 020081, 008003, 020081, 008003,
+               020081, 008003 ]
+"304037" = [  002153, 002154, 012063, 008011, 012063, 008011, 012063, 008011, 008003, 012063,
+               008003, 012063, 008003, 012063, 008003 ]
+"305003" = [  301012, 004065, 101000, 031001, 305001 ]
+"305006" = [  013072, 013082, 013019, 012001, 013073, 013060 ]
+"305007" = [  301029, 301012, 004065, 101000, 031001, 305006 ]
+"305008" = [  305006, 012030 ]
+"305009" = [  301029, 301012, 004065, 101000, 031001, 305008 ]
+"305011" = [  301029, 301012, 004065, 101000, 031001, 305010 ]
+"305018" = [  301029, 301012, 004065, 103000, 031001, 305008, 305016, 305017 ]
+"306001" = [  002032, 102000, 031001, 007062, 022042 ]
+"306002" = [  002031, 022004, 022031 ]
+"306003" = [  002002, 011011, 011012, 012004 ]
+"306004" = [  002032, 002033, 103000, 031001, 007062, 022043, 022062 ]
+"306005" = [  002031, 103000, 031001, 007062, 022004, 022031 ]
+"306006" = [  306003, 306002, 022063 ]
+"306007" = [  001012, 001014, 306008, 004024, 027003, 028003 ]
+"306008" = [  002034, 002035, 002036 ]
+"306019" = [  001075, 301011, 301012, 022042, 022120, 022121, 004015, 004065 ]
+"306020" = [  306024, 102006, 022038, 022039 ]
+"306021" = [  001075, 301011, 301012, 022122, 022123, 012001, 303002 ]
+"306022" = [  001075, 301011, 301012, 022038, 022039 ]
+"306023" = [  001015, 301023, 301011, 301012, 022038, 022039, 022120, 022121 ]
+"306024" = [  001075, 301011, 301012, 022042, 022120, 022121, 004025, 004015 ]
+"306025" = [  306019, 102006, 022038, 022039 ]
+"307001" = [  301031, 302011 ]
+"307002" = [  301032, 302011 ]
+"307003" = [  307001, 101000, 031001, 302005 ]
+"307004" = [  307002, 101000, 031001, 302005 ]
+"307005" = [  307001, 101004, 302005 ]
+"307006" = [  307002, 101004, 302005 ]
+"307007" = [  301031, 302012 ]
+"307008" = [  301032, 302012 ]
+"307009" = [  301031, 302013 ]
+"307011" = [  001063, 002001, 301011, 301012, 301024, 007006, 011001, 011016, 011017, 011002,
+               011041, 007006, 012001, 012003, 010052, 020009 ]
+"307012" = [  103000, 031001, 008023, 005021, 020001 ]
+"307013" = [  106000, 031001, 001064, 008014, 020061, 008014, 020061, 020018 ]
+"307014" = [  101000, 031001, 020019 ]
+"307015" = [  101000, 031001, 302005, 020002 ]
+"307016" = [  101000, 031001, 020020 ]
+"307017" = [  101000, 031001, 011070 ]
+"307018" = [  008016, 102000, 031001, 008017, 301012, 104000, 031001, 007006, 011001, 011002,
+               011041, 020009, 101000, 031001, 020001, 307014 ]
+"307020" = [  307011, 307014, 307016 ]
+"307021" = [  307011, 307012, 307013, 307014, 307015, 307016, 307017, 307018, 307015 ]
+"307022" = [  001015, 301011, 301012, 301022, 008021, 004025, 010004, 012001, 013003, 033038,
+               008022, 106025, 002020, 001050, 005021, 007021, 015031, 015032, 008060, 015033,
+               015034, 008060, 015033, 015034, 015035, 201131, 202129, 013016, 202000, 201000,
+               015011 ]
+"307030" = [  015001, 015002 ]
+"307031" = [  008022, 008023, 015001, 008023, 015001, 008023, 015002 ]
+"307041" = [  301001, 001015, 301022, 301011, 301012, 301070, 307030 ]
+"307042" = [  301001, 001015, 301022, 301011, 301012, 008021, 004025, 301070, 307031 ]
+"307043" = [  301001, 001015, 301024, 301011, 301012, 301074, 307030 ]
+"307045" = [  001063, 008079, 002001, 301011, 301012, 301024, 007032, 011001, 011016, 011017,
+               008054, 011083, 011084, 011002, 008054, 011085, 011086, 011041, 008054, 007032,
+               012023, 012024, 007032, 010052, 020009 ]
+"307046" = [  020060, 102000, 031001, 005021, 020059 ]
+"307047" = [  105000, 031001, 008002, 020011, 020012, 020013, 020092, 020002, 020091 ]
+"307048" = [  008016, 102000, 031001, 008017, 301012, 112000, 031000, 007032, 011001, 008054,
+               011083, 011084, 011002, 008054, 011085, 011086, 011041, 008054, 007032, 020009,
+               101000, 031000, 020060, 307014, 307047 ]
+"307049" = [  102000, 031000, 022043, 022021 ]
+"307050" = [  101000, 031000, 020085, 102000, 031001, 001064, 020085, 105000, 031001, 001064,
+               020086, 020087, 020088, 020089 ]
+"307052" = [  001063, 008039, 301011, 301012, 008079, 008039, 301011, 301012, 008039, 301011,
+               301012, 301024 ]
+"307053" = [  007032, 011001, 008054, 011083, 011084, 011002, 008054, 011085, 011086, 011041,
+               008054, 007032, 020009, 020060, 307014, 307047 ]
+"307054" = [  007032, 008039, 004003, 004004, 008023, 012023, 008039, 004003, 004004, 008023,
+               012023, 008023, 007032 ]
+"307055" = [  033045, 008016, 008039, 004003, 301012, 008039, 004003, 301012, 307053 ]
+"307056" = [  307052, 307053, 307054, 101000, 031001, 307055 ]
+"307059" = [  307045, 307046, 307013, 307014, 307047, 307016, 307017, 307049, 307050, 101000,
+               031001, 307048 ]
+"307060" = [  007061, 012030 ]
+"307061" = [  301031, 101005, 307060 ]
+"307062" = [  301032, 101005, 307060 ]
+"307063" = [  007061, 012130 ]
+"307071" = [  301090, 004074, 004023, 008023, 010004, 010051, 007004, 010009, 007032, 012101,
+               002051, 004051, 012118, 004052, 012119, 013004, 008023, 012151, 007032, 102005,
+               008050, 008020, 014032, 014033, 008050, 008020, 102018, 008052, 008022, 007032,
+               008053, 004003, 012152, 008053, 004003, 012153, 008053, 004003, 008023, 012101,
+               008053, 004003, 008023, 012101, 008023, 007032, 002002, 008053, 004003, 011046,
+               008053, 004003, 004004, 004023, 007032, 013060, 013051, 004053, 008050, 008020,
+               102006, 008052, 008022, 008053, 004003, 013052, 007032 ]
+"307072" = [  004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010004, 010051,
+               007004, 010009, 007032, 012101, 002051, 004051, 012118, 004052, 012119, 013004,
+               012151, 007032, 014032, 008023, 004001, 004001, 004002, 004003, 004004, 004022,
+               007032, 008023, 013060, 004053, 008023, 102008, 008050, 008020 ]
+"307073" = [  307071, 307072 ]
+"307080" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 302043, 302044,
+               101002, 302045, 302046 ]
+"307081" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012122, 013056,
+               013057, 020101, 020102, 020103, 020104, 020105, 020106, 020107, 020108, 302043,
+               302044, 101002, 302045, 302046 ]
+"307082" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012121, 012122,
+               302043, 302044, 101002, 302045, 302046 ]
+"307083" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012122, 302043,
+               302044, 101002, 302045, 302046 ]
+"307084" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 020055, 101000,
+               031001, 205001, 302043, 302044, 101002, 302045, 302046 ]
+"307086" = [  301090, 302031, 302035, 302036, 008002, 302037, 302066, 302043, 302044, 101002,
+               302045 ]
+"307090" = [  301092, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 302043, 302044,
+               101002, 302045, 302046 ]
+"307091" = [  301089, 301090, 008010, 301091, 302001, 007004, 010009, 302072, 103000, 031000,
+               101005, 307063, 007061, 101000, 031000, 302069, 007032, 007033, 105000, 031000,
+               020031, 020032, 002038, 022043, 302021, 101000, 031000, 302078, 101000, 031000,
+               302073, 101000, 031000, 302074, 101000, 031000, 302075, 102000, 031000, 004025,
+               302076, 302071, 302077, 007033, 101000, 031000, 302079, 007032, 101000, 031000,
+               302080, 101000, 031000, 302081, 101000, 031000, 302082, 102000, 031000, 004025,
+               013059, 101000, 031000, 302083, 033005, 033006 ]
+"308001" = [  301033, 302011, 022042 ]
+"308002" = [  301034, 302011, 022042 ]
+"308003" = [  301035, 302011, 022042 ]
+"308004" = [  301036, 302011, 022042 ]
+"308005" = [  308004, 302024 ]
+"308006" = [  010004, 010061, 010063, 011001, 011002, 012004, 013003, 022042 ]
+"308007" = [  301055, 302011, 007062, 022042 ]
+"308008" = [  001003, 001020, 001005, 002001, 002036, 002149, 301011, 301012, 008021, 301011,
+               301012, 008021, 301021, 027004, 028004, 007030, 001051, 002148, 001012, 001014,
+               002040, 033022, 033023, 033027, 022063, 302021, 302022, 302023, 008081, 025026,
+               008081, 025026, 008081, 025026, 008081, 002034, 022060, 007070, 002190, 025086,
+               002035, 002168, 020031, 002038, 306004, 002030, 306005, 007031, 008081, 012064,
+               302001, 008081, 007032, 007033, 012101, 012103, 013003, 007032, 007033, 008082,
+               007033, 002169, 002002, 008021, 004025, 011001, 011002, 008021, 004025, 011043,
+               011041, 008082, 007033, 007032, 004024, 013011, 007032, 008021, 004024, 014021,
+               008021, 025028, 025028, 025028 ]
+"308009" = [  301093, 302001, 302054, 008002, 302055, 302057, 302060 ]
+"308010" = [  001011, 113000, 031001, 301011, 301012, 301021, 004080, 022049, 004080, 022059,
+               004080, 022005, 002042, 022032, 002042, 004080 ]
+"308011" = [  001011, 002001, 301011, 301012, 301023, 007030, 007031, 004074, 004023, 008023,
+               010051, 007032, 007033, 012101, 013004, 007032, 007033, 302056, 008023, 004003,
+               004004, 004023, 007032, 013060, 013051, 004053, 007032 ]
+"308012" = [  004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010051, 007032,
+               007033, 012101, 013002, 007032, 007033, 302056, 008023, 004001, 004001, 004002,
+               004003, 004004, 004022, 007032, 008023, 013060, 004053, 008023 ]
+"308013" = [  308011, 308012 ]
+"308015" = [  001003, 001020, 001005, 001011, 001205, 001001, 001002, 002044, 002045, 301011,
+               301012, 301021, 022063, 105002, 002098, 022070, 022071, 022073, 022074, 002098,
+               022076, 022077, 022094, 025043, 022078, 121000, 031001, 002098, 022082, 022084,
+               116000, 031001, 022080, 022085, 022086, 022087, 022088, 022089, 103000, 031001,
+               022090, 022186, 022187, 103000, 031001, 022092, 022186, 022187, 002098 ]
+"308016" = [  001003, 001020, 001005, 001011, 001205, 001001, 001002, 002044, 002045, 301011,
+               301012, 301021, 022063, 105002, 002098, 022070, 022072, 022073, 022075, 002098,
+               022076, 022077, 022094, 025044, 022079, 121000, 031001, 002098, 022083, 022084,
+               116000, 031001, 022081, 022085, 022086, 022087, 022088, 022089, 103000, 031001,
+               022091, 022186, 022187, 103000, 031001, 022093, 022186, 022187, 002098 ]
+"309001" = [  301037, 101000, 031001, 303011 ]
+"309002" = [  301038, 101000, 031001, 303011 ]
+"309003" = [  301037, 101000, 031001, 303012 ]
+"309004" = [  301038, 101000, 031001, 303012 ]
+"309005" = [  301037, 302004, 101000, 031001, 303013 ]
+"309006" = [  301038, 302004, 101000, 031001, 303013 ]
+"309007" = [  301037, 302004, 101000, 031001, 303014 ]
+"309008" = [  301038, 302004, 101000, 031001, 303014 ]
+"309011" = [  301039, 101000, 031001, 303011 ]
+"309012" = [  301039, 101000, 031001, 303012 ]
+"309013" = [  301039, 302004, 101000, 031001, 303013 ]
+"309014" = [  301039, 302004, 101000, 031001, 303014 ]
+"309015" = [  301040, 101000, 031001, 303011 ]
+"309016" = [  301040, 101000, 031001, 303012 ]
+"309017" = [  301040, 302004, 101000, 031001, 303013 ]
+"309018" = [  301040, 302004, 101000, 031001, 303014 ]
+"309019" = [  301031, 002003, 101000, 031001, 303011 ]
+"309020" = [  301031, 002003, 104000, 031001, 007003, 011003, 011004, 011005 ]
+"309030" = [  015004, 015005, 104000, 031001, 004015, 008006, 007004, 015003 ]
+"309031" = [  015004, 015005, 104000, 031001, 004025, 008006, 007004, 015003 ]
+"309040" = [  301075, 301076, 309030 ]
+"309042" = [  307042, 301075, 301076, 309030 ]
+"309050" = [  301110, 301113, 301114, 101000, 031002, 303050, 101000, 031001, 303051 ]
+"309051" = [  301110, 301113, 301114, 101000, 031002, 303052, 101000, 031001, 303053 ]
+"309052" = [  301111, 301113, 301114, 302049, 022043, 101000, 031002, 303054, 101000, 031001,
+               303051 ]
+"309053" = [  301112, 301113, 301114, 101000, 031002, 303054, 101000, 031001, 303051 ]
+"309054" = [  301001, 001011, 301011, 301012, 301021, 007030, 007031, 007007, 004023, 004059,
+               115000, 031001, 008001, 008023, 007004, 010009, 012101, 012103, 008023, 011001,
+               011002, 008023, 011019, 008050, 008020, 008050, 008020 ]
+"309060" = [  301123, 301121, 302050, 303040 ]
+"309061" = [  301120, 008041, 301122, 201131, 202129, 025069, 007004, 202000, 201000, 033007,
+               033035, 033015, 013009, 033007, 033035, 033015, 002013, 012101, 033007, 033035,
+               033015 ]
+"309062" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015, 033007 ]
+"309063" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015, 033007 ]
+"309064" = [  301120, 008041, 301122, 201131, 202129, 104002, 025069, 007004, 033035, 033015,
+               013003, 033035, 033015, 202000, 201000, 104002, 002013, 012101, 033035, 033015,
+               012103, 033035, 033015, 010009, 033035, 033015 ]
+"309065" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015 ]
+"309066" = [  301120, 008041, 301122, 008040, 201131, 202129, 025069, 007004, 013003, 202000,
+               201000, 002013, 012101, 012103, 010009, 010007, 011002, 011001 ]
+"310001" = [  301042, 303031, 303032, 101026, 303025 ]
+"310002" = [  301042, 303031, 303032, 101009, 303023 ]
+"310003" = [  301042, 303031, 303032, 101006, 303023 ]
+"310004" = [  301042, 303031, 303032, 101003, 303024 ]
+"310005" = [  301042, 303031, 303033, 101000, 031001, 303025 ]
+"310006" = [  301042, 303031, 303033, 101000, 031001, 303023 ]
+"310007" = [  301042, 303031, 303033, 101000, 031001, 303024 ]
+"310008" = [  310011, 101019, 310012, 002150, 025079, 025080, 033032, 014045 ]
+"310009" = [  310011, 101015, 310012 ]
+"310010" = [  310011, 101005, 310012 ]
+"310011" = [  008070, 001033, 001034, 008070, 001033, 001034, 001007, 002048, 005040, 025075,
+               201133, 005041, 201000, 005043, 025070, 033030, 033031, 004001, 004002, 004003,
+               004004, 004005, 202131, 201138, 004006, 201000, 202000, 005001, 006001, 202126,
+               007001, 202000, 007024, 005021, 007025, 005022, 033033, 002151, 012064, 002151,
+               012064, 002151, 012064, 002151, 012064 ]
+"310012" = [  002150, 025076, 025077, 025078, 033032, 201132, 202129, 012063, 202000, 201000
+               ]
+"310013" = [  001007, 005040, 004001, 004002, 004003, 004004, 004005, 004006, 005001, 006001,
+               007025, 005043, 025085, 201131, 202129, 002150, 008023, 008072, 014027, 008072,
+               014027, 002150, 008023, 008072, 014027, 008072, 014027, 002150, 008023, 008072,
+               014027, 008072, 014027, 202000, 201000, 201132, 202129, 002150, 008023, 008072,
+               012063, 008072, 012063, 002150, 008023, 008072, 012063, 008072, 012063, 008023,
+               008072, 012063, 008072, 012063, 002150, 008023, 008072, 012063, 008072, 012063,
+               202000, 201000 ]
+"310014" = [  301072, 303041, 304011 ]
+"310015" = [  301072, 007024, 010002, 303041, 101003, 304032, 002152, 002024, 007004, 007004,
+               013003, 101003, 304033 ]
+"310016" = [  301072, 007024, 010002, 303041, 101012, 304032, 002152, 002024, 007004, 007004,
+               013003, 101012, 304033 ]
+"310019" = [  001007, 002019, 301011, 301013, 301023, 007025, 008021, 007025, 008021, 007025,
+               008021, 008029, 005040, 008075, 008003, 010004, 008003, 207002, 015001, 207000,
+               033070, 015030, 207002, 020081, 207000, 008003, 033042, 007004, 207002, 015001,
+               207000, 008003, 113021, 007004, 007004, 207002, 008021, 015005, 008021, 015005,
+               033007, 207000, 008026, 101020, 025143, 008026, 008043, 109015, 007004, 008090,
+               207006, 015008, 207000, 008090, 207002, 033007, 207000, 008043, 033071, 108008,
+               202124, 201107, 002071, 201000, 202000, 207002, 020081, 207000 ]
+"310020" = [  310022, 301011, 301013, 301021, 304034, 310021 ]
+"310021" = [  108000, 031001, 201131, 202129, 007004, 007004, 202000, 201000, 015020, 010002
+               ]
+"310022" = [  001007, 002019, 001033, 002172 ]
+"310023" = [  301072, 030021, 030022, 008012, 007024, 007025, 010002, 101012, 304032, 105002,
+               002152, 002024, 007004, 007004, 013003, 101012, 304033 ]
+"310024" = [  301072, 030021, 030022, 008012, 007024, 007025, 010002, 101003, 304032, 105002,
+               002152, 002024, 007004, 007004, 013003, 101003, 304033 ]
+"310025" = [  001007, 008021, 004001, 004002, 004003, 004004, 004005, 201138, 202131, 004006,
+               202000, 201000, 201132, 005041, 201000, 201129, 005043, 201000, 005002, 006002,
+               013040, 020029, 104024, 005042, 012163, 021083, 021084, 115003, 004001, 004002,
+               004003, 201142, 202131, 004026, 202000, 201000, 005001, 006001, 201138, 202129,
+               007001, 202000, 201000, 008021, 004001, 004002, 004003, 004004, 004005, 005040,
+               101003, 012070, 025054, 101004, 025055, 008007, 104028, 005002, 006002, 002111,
+               005021 ]
+"310026" = [  310022, 025060, 008021, 301011, 301012, 201138, 202131, 004006, 202000, 201000,
+               033039, 033007, 304030, 304031, 002020, 001050, 202127, 304030, 202000, 304031,
+               201133, 202131, 004016, 202000, 201000, 301021, 304030, 010035, 005021, 010036,
+               113000, 031002, 301021, 005021, 108000, 031001, 002121, 007040, 015037, 008023,
+               201125, 015037, 201000, 008023, 033007, 108000, 031002, 007007, 015036, 008023,
+               201123, 015036, 201000, 008023, 033007, 116000, 031002, 007009, 010004, 012001,
+               013001, 008023, 201120, 010004, 201000, 201122, 012001, 201000, 201123, 013001,
+               201000, 008023, 033007, 008003, 007009, 010004, 008023, 201120, 010004, 201000,
+               008023, 033007 ]
+"310027" = [  301071, 301011, 301013, 301021, 030021, 030022, 010002, 304036, 002152, 002167,
+               101011, 304035 ]
+"310028" = [  301071, 301011, 301013, 301021, 030021, 030022, 010002, 304036, 002152, 002167,
+               101011, 304037 ]
+"310029" = [  110000, 031001, 201138, 202130, 007004, 007004, 202000, 201000, 015020, 010002,
+               012101, 013098 ]
+"310030" = [  310022, 301011, 301013, 301021, 304034, 310029 ]
+"310050" = [  310051, 310052, 101000, 031002, 310053, 101004, 310054, 020010, 310052, 101015,
+               310053, 310052, 101005, 310053 ]
+"310051" = [  001007, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 007025, 005022, 102009, 002151, 012064 ]
+"310052" = [  002019, 301011, 301012, 202131, 201138, 004006, 201000, 202000, 301021, 007024,
+               005021, 005043 ]
+"310053" = [  201134, 005042, 201000, 025076, 033032, 012163 ]
+"310054" = [  201134, 005042, 201000, 025076, 033032, 201131, 202129, 102002, 008023, 014027,
+               008023, 202000, 201000 ]
+"310055" = [  310051, 310052, 102020, 025076, 025052, 101000, 031002, 025050 ]
+"311001" = [  301051, 007002, 012001, 011001, 011002, 011031, 011032, 011033, 020041 ]
+"311002" = [  301065, 301066, 311003, 311004 ]
+"311003" = [  010070, 011001, 011002, 012001, 013002 ]
+"311004" = [  101000, 031000, 011034, 101000, 031000, 011035, 101000, 031000, 011075, 101000,
+               031000, 011076, 101000, 031000, 033025, 101000, 031000, 033026 ]
+"311005" = [  001008, 001023, 301021, 301011, 301013, 007010, 008009, 011001, 011002, 011031,
+               011036, 012101, 033025 ]
+"311006" = [  007010, 011001, 011002, 002064, 012101, 012103 ]
+"311007" = [  007010, 301021, 011001, 011002, 002064, 012101, 012103 ]
+"311008" = [  001008, 301011, 301013, 301021, 008004, 101000, 031001, 311006 ]
+"311009" = [  001008, 301011, 301013, 301021, 008004, 101000, 031001, 311007 ]
+"312001" = [  301043, 304001 ]
+"312002" = [  301043, 304002 ]
+"312003" = [  301042, 304003 ]
+"312004" = [  301042, 304004 ]
+"312005" = [  301042, 020014 ]
+"312006" = [  301044, 304005 ]
+"312007" = [  301042, 304006 ]
+"312010" = [  001007, 005040, 002021, 005041, 004001, 004043 ]
+"312011" = [  202131, 201149, 004006, 201000, 202126, 010002, 202000, 005043, 005053 ]
+"312012" = [  202129, 201132, 101019, 012063, 201000, 202000 ]
+"312013" = [  005042, 202129, 201135, 012063, 201000, 202000 ]
+"312014" = [  312010, 312011, 105056, 301023, 005042, 005052, 312012, 312013 ]
+"312015" = [  109011, 301023, 005042, 005052, 202129, 201132, 101004, 012063, 202000, 201000
+               ]
+"312016" = [  312010, 312011, 312015 ]
+"312017" = [  109008, 301023, 005042, 005052, 202129, 201132, 101003, 012063, 202000, 201000
+               ]
+"312018" = [  312010, 312011, 312017 ]
+"312019" = [  301047, 301048, 015015, 029002, 021076, 106012, 201129, 006030, 201000, 102012,
+               005030, 021075, 021066 ]
+"312020" = [  301047, 301048, 015015, 029002, 021076, 104012, 006030, 102012, 005030, 021075,
+               021066 ]
+"312021" = [  301047, 101003, 301049, 011012, 011011, 021067 ]
+"312022" = [  301047, 008022, 011012, 011050, 022070, 022026, 312041, 010050, 021068, 021071,
+               021072, 021073, 312042, 021062, 015011 ]
+"312023" = [  301047, 103003, 008022, 012061, 022050, 021069, 021085 ]
+"312024" = [  312020, 008060, 008022, 008060, 008022, 025014, 022101, 022097, 022098, 022099,
+               022100 ]
+"312025" = [  312019, 008060, 008022, 008060, 008022, 025014, 022101, 022097, 022098, 022099,
+               022100 ]
+"312026" = [  301046, 301011, 301013, 301023, 312031, 101004, 312030, 021110, 301023, 321027,
+               021111, 301023, 321027, 021112, 301023, 321027, 021113, 301023, 321027 ]
+"312027" = [  301047, 105009, 301023, 007021, 012061, 007021, 012061, 021085, 021070 ]
+"312028" = [  301046, 301011, 301013, 301023, 008025, 201136, 004006, 201000, 312031, 312032,
+               101004, 312030, 101002, 312033, 021110, 301023, 321028, 021111, 301023, 321028,
+               021112, 301023, 321028, 021113, 301023, 321028 ]
+"312030" = [  201130, 202129, 011012, 202000, 201000, 011052, 201135, 202130, 011011, 202000,
+               201000, 011053, 021104 ]
+"312031" = [  005034, 006034, 021109, 011081, 011082, 021101, 021102, 021103 ]
+"312032" = [  021120, 021121, 013055, 021122 ]
+"312033" = [  002104, 008022, 012063, 012065 ]
+"312041" = [  201141, 202130, 007001, 201000, 202000 ]
+"312042" = [  021077, 021078, 021079, 021080, 021081, 021082 ]
+"312045" = [  001007, 002019, 001096, 025061, 005040, 301011, 301013, 301021, 007002, 012180,
+               012181, 012182, 012183, 012184, 012185, 002174, 021086, 012186, 021087, 012187,
+               033043 ]
+"312050" = [  001007, 002019, 001096, 025061, 005040, 301011, 301013, 301021, 007025, 005022,
+               010080, 027080, 008003, 007004, 013093, 008003, 201131, 202129, 007004, 007004,
+               202000, 201000, 013095 ]
+"312051" = [  001007, 002019, 001096, 025061, 005040, 008075, 301011, 301013, 301021, 001012,
+               201131, 001013, 201000, 010032, 010033, 010034, 007002, 008012, 025110, 025111,
+               025102, 002104, 025103, 025104, 025105, 025106, 025107, 025108, 002111, 002121,
+               002026, 002027, 021130, 021131, 021132, 021133, 021064, 025014, 021134, 107018,
+               005030, 105024, 201130, 006030, 201000, 021135, 021136, 033044 ]
+"312052" = [  001007, 002019, 001096, 025061, 005040, 025120, 025121, 025124, 025125, 025122,
+               025123, 301011, 301013, 301021, 007002, 002119, 033047, 010081, 010082, 010083,
+               010084, 002116, 002117, 002118, 002156, 002157, 014055, 022150, 022151, 022152,
+               022153, 022154, 022155, 022156, 022157, 022158, 022159, 021137, 021138, 021139,
+               021140, 021141, 021142, 010085, 010086, 010087, 010088, 010089, 010090, 010091,
+               010092, 010093, 011002, 025126, 025127, 025128, 025129, 025130, 025131, 025132,
+               025133, 025134, 025135, 025136, 025137, 013096, 013097, 011095, 011096, 012188,
+               012189, 002158, 002159, 033052, 033053, 021143, 021144 ]
+"312053" = [  001007, 002019, 001096, 025061, 005040, 008075, 301011, 301013, 301021, 001012,
+               201131, 001013, 201000, 010032, 010033, 010034, 007002, 008012, 025110, 025111,
+               025102, 002104, 025103, 025104, 025105, 025106, 025107, 025108, 011001, 011002,
+               022160, 025138, 201130, 202129, 022021, 202000, 201000, 033048, 033049, 002026,
+               002027, 021130, 021131, 021132, 021133, 025014, 106036, 005030, 104024, 201130,
+               006030, 201000, 022161, 033044 ]
+"312055" = [  005033, 005040, 006034, 010095, 021157 ]
+"312056" = [  025060, 001032, 011082, 011081, 020095, 020096, 021155, 201133, 021101, 021102,
+               201000 ]
+"312057" = [  201130, 202129, 011012, 202000, 201000, 201131, 202129, 011011, 202000, 201000,
+               021156, 021104 ]
+"312058" = [  301125, 301011, 301013, 301021, 312055, 021150, 101003, 321030 ]
+"312059" = [  312056, 101000, 031001, 312057 ]
+"312060" = [  025060, 025062, 040001, 040002, 021062, 021151, 021152, 021153, 021154, 021062,
+               021062, 040003, 040004, 040005, 040006, 040007, 020065, 040008, 040009, 040010
+               ]
+"312061" = [  312058, 312060, 312059 ]
+"312070" = [  001007, 002019, 001144, 001124, 030010, 301011, 301013, 301021, 007012, 015012,
+               012165, 012166, 012167, 012168, 027010, 028010, 002099, 013048, 025081, 025082,
+               025083, 025084, 012080, 012081, 012082, 025174, 033028 ]
+"313009" = [  021001, 101000, 031001, 021001 ]
+"313010" = [  021036, 101000, 031001, 021036 ]
+"313031" = [  006002, 006012, 101000, 031002, 030001 ]
+"313032" = [  005002, 005012, 101000, 031002, 313031 ]
+"313041" = [  006002, 110000, 031001, 104000, 031001, 006012, 101000, 031012, 030001, 006012,
+               101000, 031001, 030001 ]
+"313042" = [  005002, 005012, 101000, 031002, 313041 ]
+"313043" = [  006002, 005002, 005012, 112000, 031001, 110000, 031001, 104000, 031001, 006012,
+               101000, 031011, 030001, 006012, 101000, 031001, 030001 ]
+"315001" = [  001011, 301011, 301012, 301023, 306001 ]
+"315002" = [  001011, 301011, 301012, 301023, 306004 ]
+"315003" = [  001087, 001085, 001086, 002036, 002148, 002149, 022055, 022056, 022067, 301011,
+               301012, 301021, 008080, 033050, 109000, 031002, 007065, 008080, 033050, 022045,
+               008080, 033050, 022064, 008080, 033050 ]
+"316001" = [  301011, 004004, 301023, 001021, 002041, 019001, 010051, 019002, 019003, 019004
+               ]
+"316002" = [  008021, 004001, 004002, 004003, 004004, 004005, 001033, 008021, 004001, 004002,
+               004003, 004004, 004005, 007002, 007002 ]
+"316003" = [  110000, 031001, 008011, 008007, 104000, 031001, 005002, 006002, 010002, 011002,
+               008007, 008011 ]
+"316004" = [  111000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               011031, 008007, 008011 ]
+"316005" = [  108000, 031001, 008005, 008007, 005002, 006002, 001026, 019001, 008007, 008005
+               ]
+"316006" = [  112000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               020011, 020012, 008007, 008011 ]
+"316007" = [  110000, 031001, 008011, 008007, 104000, 031001, 005002, 006002, 019005, 019006,
+               008007, 008011 ]
+"316008" = [  111000, 031001, 008001, 008007, 008023, 103000, 031001, 005002, 006002, 010002,
+               008023, 008007, 008001 ]
+"316009" = [  111000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               020041, 008007, 008011 ]
+"316010" = [  107000, 031001, 008011, 008007, 001022, 005002, 006002, 008007, 008011 ]
+"316011" = [  117000, 031001, 008011, 001022, 008007, 102000, 031001, 005002, 006002, 008021,
+               004001, 004002, 004003, 004004, 004005, 020090, 008021, 008007, 008011 ]
+"316020" = [  001023, 001025, 001027, 301011, 301012 ]
+"316021" = [  301023, 002041, 019001, 019007, 019005, 019006, 019008, 008005, 010004, 008005,
+               010004, 019007, 008005, 008021, 004075, 011040, 019007, 105004, 005021, 005021,
+               102002, 019003, 019004 ]
+"316022" = [  001032, 002041, 019001, 019010, 118000, 031001, 008021, 004014, 008005, 301023,
+               019005, 019006, 010004, 011041, 008021, 004075, 011040, 019008, 105004, 005021,
+               005021, 102002, 019003, 019004 ]
+"316026" = [  316020, 316021 ]
+"316030" = [  301014, 001037, 010064, 008019, 001062, 008019, 001065, 008019, 001062, 008019
+               ]
+"316031" = [  008021, 301011, 301012, 301027, 019005, 019006, 020028, 008021 ]
+"316032" = [  008021, 301011, 301012, 301027, 008021 ]
+"316033" = [  008021, 301011, 301012, 101000, 031001, 301027, 008021 ]
+"316034" = [  008079, 316030, 008011, 001022, 008007, 301023, 008007, 020090, 316031, 101000,
+               031000, 316032, 101000, 031001, 316033, 008011, 008079 ]
+"316035" = [  008079, 316030, 008011, 020023, 020021, 020008, 316031, 008011, 008079 ]
+"316036" = [  008079, 316030, 008011, 001027, 316031, 101000, 031000, 316032, 101000, 031001,
+               316033, 008011, 008079 ]
+"316037" = [  008079, 316030, 008011, 011031, 316031, 008011, 008079 ]
+"316038" = [  008079, 316030, 008011, 020041, 020021, 316031, 008011, 008079 ]
+"316039" = [  008079, 316030, 008011, 020024, 316031, 008011, 008079 ]
+"316040" = [  316030, 008079, 301014, 001037, 010064, 008079 ]
+"316050" = [  301001, 301011, 301012, 002160, 008005, 005002, 006002, 008005, 019100, 019005,
+               019006, 019101, 019102, 019103, 019104, 019105 ]
+"316052" = [  301005, 301011, 301012, 001007, 025150, 122000, 031001, 001027, 019150, 019106,
+               008005, 005002, 006002, 008005, 019107, 019005, 019006, 019108, 019109, 019110,
+               019111, 019112, 019113, 019114, 019115, 019116, 019117, 019118, 019119 ]
+"318001" = [  301025, 024011 ]
+"318003" = [  301026, 024005, 024004, 024021 ]
+"318004" = [  301025, 004023, 013011, 024005, 024004, 024022 ]
+"321001" = [  002101, 002114, 002105, 002106, 002107, 002121 ]
+"321003" = [  021051, 021014, 021017, 021030 ]
+"321004" = [  301031, 002003, 101000, 031001, 321003 ]
+"321005" = [  025004, 002121, 002122, 002123, 002124, 002125, 002126, 002127, 002128, 002129,
+               002130, 002131 ]
+"321006" = [  025001, 025002, 025003, 025005 ]
+"321007" = [  025009, 025010, 025011, 025012, 025013, 025015, 025016, 025017 ]
+"321008" = [  025006, 025007, 025008 ]
+"321009" = [  025018, 025019 ]
+"321010" = [  002101, 007002, 002102, 002103, 002104, 002105, 002106, 002107, 002108, 002109,
+               002110, 002132, 002133 ]
+"321011" = [  030031, 030032, 029002 ]
+"321012" = [  101000, 031001, 002135 ]
+"321021" = [  002003, 002101, 201130, 002106, 201000, 201132, 202130, 002121, 202000, 201000,
+               201133, 202129, 025001, 202000, 201000 ]
+"321022" = [  007007, 204001, 031021, 011001, 204000, 011002, 204001, 031021, 011006, 204000,
+               021030 ]
+"321023" = [  007007, 021091, 021030, 202129, 021014, 201129, 021017, 202000, 201000 ]
+"321024" = [  007007, 204001, 031021, 012007, 011006, 204000, 021030 ]
+"321025" = [  007007, 021091, 021030, 202129, 021014, 201129, 021017, 202000, 201000, 021092,
+               021030, 025092, 201129, 202129, 021017, 202000, 201000 ]
+"321026" = [  007007, 204001, 031021, 012007, 025091, 011071, 011072, 011073, 011074, 204000
+               ]
+"321027" = [  021118, 202129, 201132, 002112, 201000, 201131, 002111, 201000, 202000, 002104,
+               021105, 021106, 021107, 021114, 021115, 021116, 008018, 021117 ]
+"321028" = [  021118, 202129, 201132, 002112, 201000, 201131, 002111, 201000, 202000, 002104,
+               021123, 021106, 021107, 021114, 021115, 021116, 008018, 021117 ]
+"321030" = [  008085, 202129, 201131, 002111, 201000, 202000, 002134, 021062, 021063, 021158,
+               021159, 021160, 021161, 021162, 021163, 021164, 021165, 021166 ]
+"340001" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 033060, 033061, 033062, 033063, 033064, 033065, 101010, 340002, 101087,
+               340003, 002019, 025051, 101007, 340004 ]
+"340002" = [  025140, 025141, 025142 ]
+"340003" = [  104100, 201136, 005042, 201000, 014046 ]
+"340004" = [  005060, 005061, 025085, 105006, 005042, 025142, 014047, 025142, 014048 ]
+"340005" = [  001007, 002019, 001096, 025061, 005044, 005040, 001030, 301011, 301012, 004007,
+               005001, 006001, 008029, 008074, 008077, 040011, 025097, 025095, 025098, 025099,
+               021144, 025096, 040012, 040013, 021169, 022151, 022162, 022163, 025160, 025133,
+               022156, 022164, 022165, 022166, 021137, 021138, 022167, 021139, 021118, 021145,
+               021146, 021147, 022168, 022169, 022170, 025161, 025162, 022171, 022172, 022173,
+               022174, 021170, 021171, 022175, 021172, 021118, 021173, 021174, 021175, 102003,
+               002153, 012063, 013090, 013091, 007002, 011097, 011098, 007002, 011095, 011096,
+               010096, 010081, 010082, 010083, 010101, 025132, 025163, 025126, 025128, 025164,
+               010085, 010097, 010086, 010087, 010092, 010088, 010089, 010098, 010099, 010090,
+               010100, 010093, 025127, 040014 ]
+"340007" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 103003, 025140, 025141, 033060, 033061, 033062, 033063, 033064, 033065,
+               040020, 101010, 340002, 101087, 340003, 002019, 025051, 101007, 340004, 020081,
+               008029, 020083, 008029, 040018, 040019, 040021, 040022 ]
+"340008" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 103003, 025140, 025141, 033060, 033061, 033062, 033063, 033064, 033065,
+               040020, 101010, 340002, 104000, 031002, 201136, 005042, 201000, 014046, 002019,
+               025051, 101007, 340004, 020081, 008029, 020083, 008029, 040018, 040019, 040021,
+               040022 ]
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/1003.table b/definitions/bufr/tables/0/wmo/9/codetables/1003.table
new file mode 100644
index 0000000..ff4f928
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/1003.table
@@ -0,0 +1,8 @@
+0 0 ATARCTICA
+1 1 REGION I
+2 2 REGION II
+3 3 REGION III
+4 4 REGION IV
+5 5 REGION V
+6 6 REGION VI
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/10063.table b/definitions/bufr/tables/0/wmo/9/codetables/10063.table
new file mode 100644
index 0000000..13c6331
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/10063.table
@@ -0,0 +1,10 @@
+0 0 INCREASING, THEN DECREASING: ATMOSPHERIC PRESURE THE SAME OR"     HIGHER THAN 3 HOURS AGO (OR 24 HOURS AGO )
+1 1 INCREASING, THEN STEADY; OR INCREASING; THEN MORE SLOWLY
+2 2 INCREASING (STEADILY OR UNSTEADILY )
+3 3 DECREASING OR STEADY, THEN INCREASING; RAPIDLY
+4 4 STEADY; ATMOSPHERIC PRESSURE THE SAME AS 3 HOURS AGO (OR 24"    HOURS)
+5 5 DECREASING; THEN INCREASING; ATMOSPHERIC PRESSURE THE SAME O"    R LOWER THAN 3 HOURS AGO
+6 6 DECREASING, THEN STEADY; OR DECREASING, DECREASING MORE SLOW"    LY
+7 7 DECREASING (STEADILY OR UNSTEADELY )
+8 8 STEADY OR INCREASING, THEN DECREASING; OR DECREASING, THEN"    DECREASING MORE RAPIDLY
+15 15 MISSING
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/10064.table b/definitions/bufr/tables/0/wmo/9/codetables/10064.table
new file mode 100644
index 0000000..88ba38a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/10064.table
@@ -0,0 +1,4 @@
+0 0 SUBSONIC
+1 1 TRANSONIC
+2 2 SUPERSONIC
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/1007.table b/definitions/bufr/tables/0/wmo/9/codetables/1007.table
new file mode 100644
index 0000000..711e681
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/1007.table
@@ -0,0 +1,132 @@
+1 1 ERS 1
+2 2 ERS 2
+3 3 METOP-1
+4 4 METOP-2
+5 5 METOP-3
+20 20 SPOT1
+21 21 SPOT2
+22 22 SPOT3
+23 23 SPOT4
+40 40 OERSTED
+41 41 CHAMP
+42 42 TERRASAR-X
+50 50 METEOSAT 3
+51 51 METEOSAT 4
+52 52 METEOSAT 5
+53 53 METEOSAT 6
+54 54 METEOSAT 7
+55 55 METEOSAT 8
+56 56 METEOSAT 9
+57 57 METEOSAT 10
+58 58 METEOSAT 1
+59 59 METEOSAT 2
+60 60 ENVISAT
+70 70 METEOSAT 11
+120 120 ADEOS
+121 121 ADEOS II
+150 150 GMS 3
+151 151 GMS 4
+152 152 GMS 5
+171 171 MTSAT-1R
+172 172 MTSAT-2
+200 200 NOAA 8
+201 201 NOAA 9
+202 202 NOAA 10
+203 203 NOAA 11
+204 204 NOAA 12
+205 205 NOAA 14
+206 206 NOAA 15
+207 207 NOAA 16
+208 208 NOAA 17
+209 209 NOAA 18
+220 220 LANDSAT 5
+221 221 LANDSAT 4
+222 222 LANDSAT 7
+240 240 DMSP 7
+241 241 DMSP 8
+242 242 DMSP 9
+243 243 DMSP 10
+244 244 DMSP 11
+245 245 DMSP 12
+246 246 DMSP 13
+247 247 DMSP 14
+248 248 DMSP 15
+249 249 DMSP 16
+250 250 GOES 6
+251 251 GOES 7
+252 252 GOES 8
+253 253 GOES 9
+254 254 GOES 10
+255 255 GOES 11
+256 256 GOES 12
+257 257 GOES 13
+258 258 GOES 14
+259 259 GOES 15
+260 260 JASON-1
+261 261 JASON-2
+281 281 QUIKSCAT
+282 282 TRMM
+283 283 CORIOLIS
+285 285 DMSP17
+310 310 GOMS 1
+311 311 GOMS 2
+320 320 METEOR 2-21
+321 321 METEOR 3-5
+322 322 METEOR 3M-1
+323 323 METEOR 3M-2
+341 341 RESURS 01-4
+430 430 INSAT 1B
+431 431 INSAT 1C
+432 432 INSAT 1D
+450 450 INSAT 2A
+451 451 INSAT 2B
+452 452 INSAT 2E
+470 470 INSAT 3A
+471 471 INSAT 3D
+472 472 INSAT 3E
+500 500 FY-1C
+501 501 FY-1D
+510 510 FY-2
+512 512 FY-2B
+513 513 FY-2C
+514 514 FY-2D
+700 700 TIROS M (ITOS 1)
+701 701 NOAA 1
+702 702 NOAA 2
+703 703 NOAA 3
+704 704 NOAA 4
+705 705 NOAA 5
+706 706 NOAA 6
+707 707 NOAA 7
+708 708 TIROS-N
+710 710 GOES (SMS 1)
+711 711 GOES (SMS 2)
+720 720 TOPEX
+721 721 GFO (GEOSAT FOLLOW ON)
+722 722 GRACE A
+723 723 GRACE B
+731 731 GOES 1
+732 732 GOES 2
+733 733 GOES 3
+734 734 GOES 4
+735 735 GOES 5
+740 740 COSMIC-1
+741 741 COSMIC-2
+742 742 COSMIC-3
+743 743 COSMIC-4
+744 744 COSMIC-5
+745 745 COSMIC-6
+763 763 NIMBUS 3
+764 764 NIMBUS 4
+765 765 NIMBUS 5
+766 766 NIMBUS 6
+767 767 NIMBUS 7
+780 780 ERBS
+781 781 UARS
+782 782 EARTH PROBE
+783 783 TERRA
+784 784 AQUA
+785 785 AURA
+800 800 SUNSAT
+820 820 SAC-C
+1023 1023 MISSIN VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/1031.table b/definitions/bufr/tables/0/wmo/9/codetables/1031.table
new file mode 100644
index 0000000..c105793
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/1031.table
@@ -0,0 +1,219 @@
+0 0 WMO SECRETARIAT
+1 1 MELBOURNE
+2 2 MELBOURNE
+3 3 MELBOURNE
+4 4 MOSCOW
+5 5 MOSCOW
+6 6 MOSCOW
+7 7 US NATIONAL WEATHER SERVICE, NATIONAL CENTRES FOR ENVIRONMEN"    TAL PREDICTION(NCEP)
+8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONSGATEWAY (NWSTG"    )
+9 9 US NATIONAL WEATHER SERVICE - OTHER
+10 10 CAIRO (RSMC)
+11 11 CAIRO (RSMC)
+12 12 DAKAR (RSMC)
+13 13 DAKAR (RSMC)
+14 14 NAIROBI (RSMC)
+15 15 NAIROBI (RSMC)
+16 16 CASABLANCA (RSMC)
+17 17 TUNIS (RSMC)
+18 18 TUNIS CASABLANCA (RSMC)
+19 19 TUNIS CASABLANCA (RSMC)
+20 20 LAS PALMAS
+21 21 ALGIERS (RSMC)
+22 22 ACMAD
+23 23 MOZAMBIQUE NMC
+24 24 PRETORIA (RSMC)
+25 25 LA R?UNION (RSMC)
+26 26 KHABAROVSK (RSMC)
+27 27 KHABAROVSK (RSMC)
+28 28 NEW DELHI (RSMC)
+29 29 NEW DELHI (RSMC)
+30 30 NOVOSIBIRSK (RSMC)
+31 31 NOVOSIBIRSK (RSMC)
+32 32 TASHKENT (RSMC)
+33 33 JEDDAH (RSMC)
+34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+35 35 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+36 36 BANGKOK
+37 37 ULAN BATOR
+38 38 BEIJING (RSMC)
+39 39 BEIJING (RSMC)
+40 40 SEOUL
+41 41 BUENOS AIRES (RSMC)
+42 42 BUENOS AIRES (RSMC)
+43 43 BRASILIA (RSMC)
+44 44 BRASILIA (RSMC)
+45 45 SANTIAGO
+46 46 BRAZILIAN SPACE AGENCY - INPE
+47 47 COLOMBIA NMC
+48 48 ECUADOR NMC
+49 49 PERU NMC                  50
+50 50 VENEZUELA NMC
+51 51 MIAMI (RSMC)
+52 52 MIAMI RSMC, NATIONAL HURRICANE CENTER
+53 53 MONTREAL (RSMC)
+54 54 MONTREAL (RSMC)
+55 55 SAN FRANCISCO
+56 56 ARINC CENTRE
+57 57 U.S. AIR FORCE AIR FORCE GLOBAL WEATHER CENTRAL
+58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTERE"    Y, CA
+59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, USA
+60 60 UNITED STATES NATIONAL CENTRE FOR ATMOSPHERIC RESEARCH (NCAR"    )
+61 61 SERVICE ARGOS - LANDOVER
+62 62 U.S. NAVAL OCEANOGRAPHIC OFFICE
+63 63 IRI (INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIET"    Y)
+64 64 HONOLULU (RSMC)
+65 65 DARWIN (RSMC)
+66 66 DARWIN (RSMC)
+67 67 MELBOURNE (RSMC)
+69 69 WELLINGTON (RSMC)
+70 70 WELLINGTON (RSMC)
+71 71 NADI (RSMC)
+72 72 SINGAPORE
+73 73 MALAYSIA NMC
+74 74 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+75 75 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+76 76 MOSCOW (RSMC)
+78 78 OFFENBACH (RSMC)
+79 79 OFFENBACH (RSMC)
+80 80 ROME (RSMC)
+81 81 ROME (RSMC)
+82 82 NORRK?PING
+83 83 NORRK?PING
+84 84 TOULOUSE (RSMC)
+85 85 TOULOUSE (RSMC)
+86 86 HELSINKI
+87 87 BELGRADE
+88 88 OSLO
+89 89 PRAGUE
+90 90 EPISKOPI
+91 91 ANKARA
+92 92 FRANKFURT/MAIN)
+93 93 LONDON (WAFC)
+94 94 COPENHAGEN
+95 95 ROTA
+96 96 ATHENS
+97 97 EUROPEAN SPACE AGENCY (ESA)
+98 98 EUROPEAN CENTRE FOR MEDIUM-RANGE WEATHER FORECAST (ECMWF)
+99 99 DE BILT
+100 100 BRAZZAVILLE
+101 101 ABIDJAN
+102 102 LIBYAN ARAB JAMAHIRIYA NMC
+103 103 MADAGASCAR NMC
+104 104 MAURITIUS NMC
+105 105 NIGER NMC
+106 106 SEYCHELLES NMC
+107 107 UGANDA NMC
+108 108 TANZANIA NMC
+109 109 ZIMBABWE NMC
+110 110 HONG-KONG, CHINA
+111 111 AFGHANISTAN NMC          110
+112 112 BAHRAIN NMC
+113 113 BANGLADESH NMC
+114 114 BHUTAN NMC
+115 115 CAMBODIA NMC
+116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA NMC
+117 117 ISLAMIC REPUBLIC OF IRAN NMC
+118 118 IRAQ NMC
+119 119 KAZAKHSTAN NMC
+120 120 KUWAIT NMC
+121 121 KYRGYZ REPUBLIC NMC
+122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC NMC
+123 123 MACAO, CHINA
+124 124 MALDIVES NMC
+125 125 MYANMAR NMC
+126 126 NEPAL NMC
+127 127 OMAN NMC
+128 128 PAKISTAN NMC
+129 129 QATAR NMC
+130 130 REPUBLIC OF YEMEN NMC
+131 131 SRI LANKA NMC
+132 132 TAJIKISTAN NMC
+133 133 TURKMENISTAN NMC
+134 134 UNITED ARAB EMIRATES NMC
+135 135 UZBEKISTAN NMC
+136 136 SOCIALIST REPUBLIC OF VIET NAM NMC
+140 140 BOLIVIA NMC
+141 141 GUYANA NMC
+142 142 PARAGUAY NMC
+143 143 SURINAME NMC
+144 144 URUGUAY NMC                     140
+145 145 FRENCH GUYANA
+146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE
+150 150 ANTIGUA AND BARBUDA NMC
+151 151 BAHAMAS NMC
+152 152 BARBADOS NMC
+153 153 BELIZE NMC
+154 154 BRITISH CARIBBEAN TERRITORIES CENTRE
+155 155 SAN JOSE
+156 156 CUBA NMC
+157 157 DOMINICA NMC
+158 158 DOMINICAN REPUBLIC NMC
+159 159 EL SALVADOR NMC
+160 160 US NOAA/NESDIS
+161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH
+162 162 GUATEMALA NMC
+163 163 HAITI NMC
+164 164 HONDURAS NMC
+165 165 JAMAICA NMC
+166 166 MEXICO
+167 167 NETHERLANDS ANTILLES AND ARUBA NMC
+168 168 NICARAGUA NMC
+169 169 PANAMA NMC
+170 170 SAINT LUCIA NMC
+171 171 TRINIDAD AND TOBAGO NMC
+172 172 FRENCH DEPARTMENTS IN RA IV
+173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA)
+190 190 COOK ISLANDS NMC
+191 191 FRENCH POLYNESIA NMC
+192 192 TONGA NMC
+193 193 VANUATU NMC
+194 194 BRUNEI DARUSSALAM NMC
+195 195 INDONESIA NMC
+196 196 KIRIBATI NMC
+197 197 FEDERATED STATES OF MICRONESIA NMC
+198 198 NEW CALEDONIA NMC
+199 199 NIUE
+200 200 PAPUA NEW GUINEA NMC
+201 201 PHILIPPINES NMC
+202 202 SAMOA NMC
+203 203 SOLOMON ISLANDS NMC
+210 210 FRASCATI (ESA/ESRIN)
+211 211 LANNION
+212 212 LISBOA
+213 213 REYKJAVIK
+214 214 MADRID
+215 215 Z?RICH
+216 216 SERVICE ARGOS TOULOUSE
+217 217 BRATISLAVA
+218 218 BUDAPEST
+219 219 LJUBLJANA
+220 220 WARSAW
+221 221 ZAGREB
+222 222 ALBANIA NMC
+223 223 ARMENIA NMC
+224 224 AUSTRIA NMC
+225 225 AZERBAIJAN NMC
+226 226 BELARUS NMC
+227 227 BELGIUM NMC
+228 228 BOSNIA AND HERZEGOVINA NMC
+229 229 BULGARIA NMC
+230 230 CYPRUS NMC
+231 231 ESTONIA NMC
+232 232 GEORGIA NMC
+233 233 DUBLIN
+234 234 ISRAEL NMC
+235 235 JORDAN NMC
+236 236 LATVIA NMC
+237 237 LEBANON NMC
+238 238 LITHUANIA NMC
+239 239 LUXEMBOURG
+240 240 MALTA NMC
+241 241 MONACO
+242 242 ROMANIA NMC
+243 243 SYRIAN ARAB REPUBLIC NMC
+244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA NMC
+245 245 UKRAINE NMC
+246 246 REPUBLIC OF MOLDOVA NMC
+254 254 EUMETSAT OPERATION CENTRE
+255 255 MISSING VALUE               219
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/1032.table b/definitions/bufr/tables/0/wmo/9/codetables/1032.table
new file mode 100644
index 0000000..2bf1e24
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/1032.table
@@ -0,0 +1,41 @@
+1 1 PREPROCESSING CONSISTENCY CHECK
+10 10 BIAS CORRECTION
+20 20 BLACK LIST
+30 30 OI MASS AND WIND ANALYSIS, REPORT STATUS
+31 31 OI HUMIDITY ANALYSIS, REPORT STATUS
+32 32 OI ANALYSIS VARIABLES
+33 33 OI ANALYSIS, FIRST GUESS Q/C
+34 34 OI ANALYSIS, FINAL ANALYSIS Q/C
+35 35 OI ANALYSIS, EVENT FLAGS
+40 40 DYNAMIC INITIALISATION SCHEME
+41 41 NORMAL MODE INITIALISATION SCHEME
+50 50 SURFACE ANALYSIS, REPORT STATUS
+51 51 SURFACE ANALYSIS VARIABLES
+52 52 SURFACE ANALYSIS Q/C
+53 53 SURFACE ANALYSIS, EVENT FLAGS
+60 60 3D VAR REPORT STATUS
+61 61 3D VAR ANALYSIS VARIABLES
+62 62 3D VAR Q/C
+63 63 3D VAR EVENT FLAGS
+80 80 PRESAT FIRST GUESS
+81 81 PRESAT ERROR STANDARD DEVIATIONS
+82 82 PRESAT BIAS ESTIMATES
+83 83 PRESAT BRIGHTNESS TEMPERATURE QUALITY FLAGS
+84 84 PRESAT SAMARY FLAGS
+90 90 FIRST GUESS (6 HOUR FORECAST)
+91 91 FIRST GUESS (FGAT INTERPOLATED)
+100 100 PRESCAT AMBIGUITY REMOVAL
+110 110 WAM FIRST GUESS
+111 111 WAM ANALYSIS
+112 112 WAM FORECAST
+113 113 WAM Q/C
+201 201 COLLOCATION WITH SURFACE DATA
+202 202 COLLOCATION WITH TEMP/PILOT DATA
+203 203 COLLOCATION WITH AIREP DATA
+204 204 COLLOCATION WITH SATOB DATA
+205 205 COLLOCATION WITH TOVS DATA
+206 206 COLLOCATION WITH ERS1 SCATTEROMETER DATA
+207 207 COLLOCATION WITH ERS1 ALTIMETER DATA
+220 220 ERS1 SCATTEROMETER COLLOCATION BLACK LIST
+230 230 GAUSS ERROR
+231 231 GROSS ERROR
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/1033.table b/definitions/bufr/tables/0/wmo/9/codetables/1033.table
new file mode 100644
index 0000000..637e315
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/1033.table
@@ -0,0 +1,219 @@
+0 0 WMO SECRETARIAT
+1 1 MELBOURNE
+2 2 MELBOURNE
+3 3 MELBOURNE
+4 4 MOSCOW
+5 5 MOSCOW
+6 6 MOSCOW
+7 7 US NATIONAL WEATHER SERVICE, NATIONAL CENTRES FOR ENVIRONMEN"    TAL PREDICTION(NCEP)
+8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONSGATEWAY (NWSTG"    )
+9 9 US NATIONAL WEATHER SERVICE - OTHER
+10 10 CAIRO (RSMC)
+11 11 CAIRO (RSMC)
+12 12 DAKAR (RSMC)
+13 13 DAKAR (RSMC)
+14 14 NAIROBI (RSMC)
+15 15 NAIROBI (RSMC)
+16 16 CASABLANCA (RSMC)
+17 17 TUNIS (RSMC)
+18 18 TUNIS CASABLANCA (RSMC)
+19 19 TUNIS CASABLANCA (RSMC)
+20 20 LAS PALMAS
+21 21 ALGIERS (RSMC)
+22 22 ACMAD
+23 23 MOZAMBIQUE NMC
+24 24 PRETORIA (RSMC)
+25 25 LA R?UNION (RSMC)
+26 26 KHABAROVSK (RSMC)
+27 27 KHABAROVSK (RSMC)
+28 28 NEW DELHI (RSMC)
+29 29 NEW DELHI (RSMC)
+30 30 NOVOSIBIRSK (RSMC)
+31 31 NOVOSIBIRSK (RSMC)
+32 32 TASHKENT (RSMC)
+33 33 JEDDAH (RSMC)
+34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+35 35 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+36 36 BANGKOK
+37 37 ULAN BATOR
+38 38 BEIJING (RSMC)
+39 39 BEIJING (RSMC)
+40 40 SEOUL
+41 41 BUENOS AIRES (RSMC)
+42 42 BUENOS AIRES (RSMC)
+43 43 BRASILIA (RSMC)
+44 44 BRASILIA (RSMC)
+45 45 SANTIAGO
+46 46 BRAZILIAN SPACE AGENCY - INPE
+47 47 COLOMBIA NMC
+48 48 ECUADOR NMC
+49 49 PERU NMC                  50
+50 50 VENEZUELA NMC
+51 51 MIAMI (RSMC)
+52 52 MIAMI RSMC, NATIONAL HURRICANE CENTER
+53 53 MONTREAL (RSMC)
+54 54 MONTREAL (RSMC)
+55 55 SAN FRANCISCO
+56 56 ARINC CENTRE
+57 57 U.S. AIR FORCE AIR FORCE GLOBAL WEATHER CENTRAL
+58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTERE"    Y, CA
+59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, USA
+60 60 UNITED STATES NATIONAL CENTRE FOR ATMOSPHERIC RESEARCH (NCAR"    )
+61 61 SERVICE ARGOS - LANDOVER
+62 62 U.S. NAVAL OCEANOGRAPHIC OFFICE
+63 63 IRI (INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIET"    Y)
+64 64 HONOLULU (RSMC)
+65 65 DARWIN (RSMC)
+66 66 DARWIN (RSMC)
+67 67 MELBOURNE (RSMC)
+69 69 WELLINGTON (RSMC)
+70 70 WELLINGTON (RSMC)
+71 71 NADI (RSMC)
+72 72 SINGAPORE
+73 73 MALAYSIA NMC
+74 74 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+75 75 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+76 76 MOSCOW (RSMC)
+78 78 OFFENBACH (RSMC)
+79 79 OFFENBACH (RSMC)
+80 80 ROME (RSMC)
+81 81 ROME (RSMC)
+82 82 NORRK?PING
+83 83 NORRK?PING
+84 84 TOULOUSE (RSMC)
+85 85 TOULOUSE (RSMC)
+86 86 HELSINKI
+87 87 BELGRADE
+88 88 OSLO
+89 89 PRAGUE
+90 90 EPISKOPI
+91 91 ANKARA
+92 92 FRANKFURT/MAIN)
+93 93 LONDON (WAFC)
+94 94 COPENHAGEN
+95 95 ROTA
+96 96 ATHENS
+97 97 EUROPEAN SPACE AGENCY (ESA)
+98 98 EUROPEAN CENTRE FOR MEDIUM-RANGE WEATHER FORECAST (ECMWF)
+99 99 DE BILT
+100 100 BRAZZAVILLE
+101 101 ABIDJAN
+102 102 LIBYAN ARAB JAMAHIRIYA NMC
+103 103 MADAGASCAR NMC
+104 104 MAURITIUS NMC
+105 105 NIGER NMC
+106 106 SEYCHELLES NMC
+107 107 UGANDA NMC
+108 108 TANZANIA NMC
+109 109 ZIMBABWE NMC
+110 110 HONG-KONG, CHINA
+111 111 AFGHANISTAN NMC          110
+112 112 BAHRAIN NMC
+113 113 BANGLADESH NMC
+114 114 BHUTAN NMC
+115 115 CAMBODIA NMC
+116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA NMC
+117 117 ISLAMIC REPUBLIC OF IRAN NMC
+118 118 IRAQ NMC
+119 119 KAZAKHSTAN NMC
+120 120 KUWAIT NMC
+121 121 KYRGYZ REPUBLIC NMC
+122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC NMC
+123 123 MACAO, CHINA
+124 124 MALDIVES NMC
+125 125 MYANMAR NMC
+126 126 NEPAL NMC
+127 127 OMAN NMC
+128 128 PAKISTAN NMC
+129 129 QATAR NMC
+130 130 REPUBLIC OF YEMEN NMC
+131 131 SRI LANKA NMC
+132 132 TAJIKISTAN NMC
+133 133 TURKMENISTAN NMC
+134 134 UNITED ARAB EMIRATES NMC
+135 135 UZBEKISTAN NMC
+136 136 SOCIALIST REPUBLIC OF VIET NAM NMC
+140 140 BOLIVIA NMC
+141 141 GUYANA NMC
+142 142 PARAGUAY NMC
+143 143 SURINAME NMC
+144 144 URUGUAY NMC                     140
+145 145 FRENCH GUYANA
+146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE
+150 150 ANTIGUA AND BARBUDA NMC
+151 151 BAHAMAS NMC
+152 152 BARBADOS NMC
+153 153 BELIZE NMC
+154 154 BRITISH CARIBBEAN TERRITORIES CENTRE
+155 155 SAN JOSE
+156 156 CUBA NMC
+157 157 DOMINICA NMC
+158 158 DOMINICAN REPUBLIC NMC
+159 159 EL SALVADOR NMC
+160 160 US NOAA/NESDIS
+161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH
+162 162 GUATEMALA NMC
+163 163 HAITI NMC
+164 164 HONDURAS NMC
+165 165 JAMAICA NMC
+166 166 MEXICO
+167 167 NETHERLANDS ANTILLES AND ARUBA NMC
+168 168 NICARAGUA NMC
+169 169 PANAMA NMC
+170 170 SAINT LUCIA NMC
+171 171 TRINIDAD AND TOBAGO NMC
+172 172 FRENCH DEPARTMENTS IN RA IV
+173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA)
+190 190 COOK ISLANDS NMC
+191 191 FRENCH POLYNESIA NMC
+192 192 TONGA NMC
+193 193 VANUATU NMC
+194 194 BRUNEI DARUSSALAM NMC
+195 195 INDONESIA NMC
+196 196 KIRIBATI NMC
+197 197 FEDERATED STATES OF MICRONESIA NMC
+198 198 NEW CALEDONIA NMC
+199 199 NIUE
+200 200 PAPUA NEW GUINEA NMC
+201 201 PHILIPPINES NMC
+202 202 SAMOA NMC
+203 203 SOLOMON ISLANDS NMC
+210 210 FRASCATI (ESA/ESRIN)
+211 211 LANNION
+212 212 LISBOA
+213 213 REYKJAVIK
+214 214 MADRID
+215 215 Z?RICH
+216 216 SERVICE ARGOS TOULOUSE
+217 217 BRATISLAVA
+218 218 BUDAPEST
+219 219 LJUBLJANA            190
+220 220 WARSAW
+221 221 ZAGREB
+222 222 ALBANIA NMC
+223 223 ARMENIA NMC
+224 224 AUSTRIA NMC
+225 225 AZERBAIJAN NMC
+226 226 BELARUS NMC
+227 227 BELGIUM NMC
+228 228 BOSNIA AND HERZEGOVINA NMC
+229 229 BULGARIA NMC
+230 230 CYPRUS NMC
+231 231 ESTONIA NMC
+232 232 GEORGIA NMC
+233 233 DUBLIN
+234 234 ISRAEL NMC
+235 235 JORDAN NMC
+236 236 LATVIA NMC
+237 237 LEBANON NMC
+238 238 LITHUANIA NMC
+239 239 LUXEMBOURG
+240 240 MALTA NMC
+241 241 MONACO
+242 242 ROMANIA NMC
+243 243 SYRIAN ARAB REPUBLIC NMC
+244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA NMC
+245 245 UKRAINE NMC
+246 246 REPUBLIC OF MOLDOVA NMC
+254 254 EUMETSAT OPERATION CENTRE
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/1035.table b/definitions/bufr/tables/0/wmo/9/codetables/1035.table
new file mode 100644
index 0000000..734c534
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/1035.table
@@ -0,0 +1,219 @@
+0 0 WMO SECRETARIAT
+1 1 MELBOURNE
+2 2 MELBOURNE
+3 3 MELBOURNE
+4 4 MOSCOW
+5 5 MOSCOW
+6 6 MOSCOW
+7 7 US NATIONAL WEATHER SERVICE, NATIONAL CENTRES FOR ENVIRONMEN"    TAL PREDICTION(NCEP)
+8 8 US NATIONAL WEATHER SERVICE TELECOMMUNICATIONSGATEWAY (NWSTG"    )
+9 9 US NATIONAL WEATHER SERVICE - OTHER
+10 10 CAIRO (RSMC)
+11 11 CAIRO (RSMC)
+12 12 DAKAR (RSMC)
+13 13 DAKAR (RSMC)
+14 14 NAIROBI (RSMC)
+15 15 NAIROBI (RSMC)
+16 16 CASABLANCA (RSMC)
+17 17 TUNIS (RSMC)
+18 18 TUNIS CASABLANCA (RSMC)
+19 19 TUNIS CASABLANCA (RSMC)
+20 20 LAS PALMAS
+21 21 ALGIERS (RSMC)
+22 22 ACMAD
+23 23 MOZAMBIQUE NMC
+24 24 PRETORIA (RSMC)
+25 25 LA R?UNION (RSMC)
+26 26 KHABAROVSK (RSMC)
+27 27 KHABAROVSK (RSMC)
+28 28 NEW DELHI (RSMC)
+29 29 NEW DELHI (RSMC)
+30 30 NOVOSIBIRSK (RSMC)
+31 31 NOVOSIBIRSK (RSMC)
+32 32 TASHKENT (RSMC)
+33 33 JEDDAH (RSMC)
+34 34 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+35 35 TOKYO (RSMC), JAPAN METEOROLOGICAL AGENCY
+36 36 BANGKOK
+37 37 ULAN BATOR
+38 38 BEIJING (RSMC)
+39 39 BEIJING (RSMC)
+40 40 SEOUL
+41 41 BUENOS AIRES (RSMC)
+42 42 BUENOS AIRES (RSMC)
+43 43 BRASILIA (RSMC)
+44 44 BRASILIA (RSMC)
+45 45 SANTIAGO
+46 46 BRAZILIAN SPACE AGENCY - INPE
+47 47 COLOMBIA NMC
+48 48 ECUADOR NMC
+49 49 PERU NMC                  50
+50 50 VENEZUELA NMC
+51 51 MIAMI (RSMC)
+52 52 MIAMI RSMC, NATIONAL HURRICANE CENTER
+53 53 MONTREAL (RSMC)
+54 54 MONTREAL (RSMC)
+55 55 SAN FRANCISCO
+56 56 ARINC CENTRE
+57 57 U.S. AIR FORCE AIR FORCE GLOBAL WEATHER CENTRAL
+58 58 FLEET NUMERICAL METEOROLOGY AND OCEANOGRAPHY CENTER, MONTERE"    Y, CA
+59 59 THE NOAA FORECAST SYSTEMS LABORATORY, BOULDER, CO, USA
+60 60 UNITED STATES NATIONAL CENTRE FOR ATMOSPHERIC RESEARCH (NCAR"    )
+61 61 SERVICE ARGOS - LANDOVER
+62 62 U.S. NAVAL OCEANOGRAPHIC OFFICE
+63 63 IRI (INTERNATIONAL RESEARCH INSTITUTE FOR CLIMATE AND SOCIET"    Y)
+64 64 HONOLULU (RSMC)
+65 65 DARWIN (RSMC)
+66 66 DARWIN (RSMC)
+67 67 MELBOURNE (RSMC)
+69 69 WELLINGTON (RSMC)
+70 70 WELLINGTON (RSMC)
+71 71 NADI (RSMC)
+72 72 SINGAPORE
+73 73 MALAYSIA NMC
+74 74 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+75 75 UK METEOROLOGICAL OFFICE - EXETER (RSMC)
+76 76 MOSCOW (RSMC)
+78 78 OFFENBACH (RSMC)
+79 79 OFFENBACH (RSMC)
+80 80 ROME (RSMC)
+81 81 ROME (RSMC)
+82 82 NORRK?PING
+83 83 NORRK?PING
+84 84 TOULOUSE (RSMC)
+85 85 TOULOUSE (RSMC)
+86 86 HELSINKI
+87 87 BELGRADE
+88 88 OSLO
+89 89 PRAGUE
+90 90 EPISKOPI
+91 91 ANKARA
+92 92 FRANKFURT/MAIN)
+93 93 LONDON (WAFC)
+94 94 COPENHAGEN
+95 95 ROTA
+96 96 ATHENS
+97 97 EUROPEAN SPACE AGENCY (ESA)
+98 98 EUROPEAN CENTRE FOR MEDIUM-RANGE WEATHER FORECAST (ECMWF)
+99 99 DE BILT
+100 100 BRAZZAVILLE
+101 101 ABIDJAN
+102 102 LIBYAN ARAB JAMAHIRIYA NMC
+103 103 MADAGASCAR NMC
+104 104 MAURITIUS NMC
+105 105 NIGER NMC
+106 106 SEYCHELLES NMC
+107 107 UGANDA NMC
+108 108 TANZANIA NMC
+109 109 ZIMBABWE NMC
+110 110 HONG-KONG, CHINA
+111 111 AFGHANISTAN NMC          110
+112 112 BAHRAIN NMC
+113 113 BANGLADESH NMC
+114 114 BHUTAN NMC
+115 115 CAMBODIA NMC
+116 116 DEMOCRATIC PEOPLE'S REPUBLIC OF KOREA NMC
+117 117 ISLAMIC REPUBLIC OF IRAN NMC
+118 118 IRAQ NMC
+119 119 KAZAKHSTAN NMC
+120 120 KUWAIT NMC
+121 121 KYRGYZ REPUBLIC NMC
+122 122 LAO PEOPLE'S DEMOCRATIC REPUBLIC NMC
+123 123 MACAO, CHINA
+124 124 MALDIVES NMC
+125 125 MYANMAR NMC
+126 126 NEPAL NMC
+127 127 OMAN NMC
+128 128 PAKISTAN NMC
+129 129 QATAR NMC
+130 130 REPUBLIC OF YEMEN NMC
+131 131 SRI LANKA NMC
+132 132 TAJIKISTAN NMC
+133 133 TURKMENISTAN NMC
+134 134 UNITED ARAB EMIRATES NMC
+135 135 UZBEKISTAN NMC
+136 136 SOCIALIST REPUBLIC OF VIET NAM NMC
+140 140 BOLIVIA NMC
+141 141 GUYANA NMC
+142 142 PARAGUAY NMC
+143 143 SURINAME NMC
+144 144 URUGUAY NMC                     140
+145 145 FRENCH GUYANA
+146 146 BRAZILIAN NAVY HYDROGRAPHIC CENTRE
+150 150 ANTIGUA AND BARBUDA NMC
+151 151 BAHAMAS NMC
+152 152 BARBADOS NMC
+153 153 BELIZE NMC
+154 154 BRITISH CARIBBEAN TERRITORIES CENTRE
+155 155 SAN JOSE
+156 156 CUBA NMC
+157 157 DOMINICA NMC
+158 158 DOMINICAN REPUBLIC NMC
+159 159 EL SALVADOR NMC
+160 160 US NOAA/NESDIS
+161 161 US NOAA OFFICE OF OCEANIC AND ATMOSPHERIC RESEARCH
+162 162 GUATEMALA NMC
+163 163 HAITI NMC
+164 164 HONDURAS NMC
+165 165 JAMAICA NMC
+166 166 MEXICO
+167 167 NETHERLANDS ANTILLES AND ARUBA NMC
+168 168 NICARAGUA NMC
+169 169 PANAMA NMC
+170 170 SAINT LUCIA NMC
+171 171 TRINIDAD AND TOBAGO NMC
+172 172 FRENCH DEPARTMENTS IN RA IV
+173 173 US NATIONAL AERONAUTICS AND SPACE ADMINISTRATION (NASA)
+190 190 COOK ISLANDS NMC
+191 191 FRENCH POLYNESIA NMC
+192 192 TONGA NMC
+193 193 VANUATU NMC
+194 194 BRUNEI DARUSSALAM NMC
+195 195 INDONESIA NMC
+196 196 KIRIBATI NMC
+197 197 FEDERATED STATES OF MICRONESIA NMC
+198 198 NEW CALEDONIA NMC
+199 199 NIUE
+200 200 PAPUA NEW GUINEA NMC
+201 201 PHILIPPINES NMC
+202 202 SAMOA NMC
+203 203 SOLOMON ISLANDS NMC
+210 210 FRASCATI (ESA/ESRIN)
+211 211 LANNION
+212 212 LISBOA
+213 213 REYKJAVIK
+214 214 MADRID
+215 215 Z?RICH
+216 216 SERVICE ARGOS TOULOUSE
+217 217 BRATISLAVA
+218 218 BUDAPEST
+219 219 LJUBLJANA            190
+220 220 WARSAW
+221 221 ZAGREB
+222 222 ALBANIA NMC
+223 223 ARMENIA NMC
+224 224 AUSTRIA NMC
+225 225 AZERBAIJAN NMC
+226 226 BELARUS NMC
+227 227 BELGIUM NMC
+228 228 BOSNIA AND HERZEGOVINA NMC
+229 229 BULGARIA NMC
+230 230 CYPRUS NMC
+231 231 ESTONIA NMC
+232 232 GEORGIA NMC
+233 233 DUBLIN
+234 234 ISRAEL NMC
+235 235 JORDAN NMC
+236 236 LATVIA NMC
+237 237 LEBANON NMC
+238 238 LITHUANIA NMC
+239 239 LUXEMBOURG
+240 240 MALTA NMC
+241 241 MONACO
+242 242 ROMANIA NMC
+243 243 SYRIAN ARAB REPUBLIC NMC
+244 244 THE FORMER YUGOSLAV REPUBLIC OF MACEDONIA NMC
+245 245 UKRAINE NMC
+246 246 REPUBLIC OF MOLDOVA NMC
+254 254 EUMETSAT OPERATION CENTRE
+255 255 MISSING VALUE               219
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/1090.table b/definitions/bufr/tables/0/wmo/9/codetables/1090.table
new file mode 100644
index 0000000..e1cf86c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/1090.table
@@ -0,0 +1,5 @@
+0 0 LAF (LAGGED-AVERAGE FORECASTING)
+1 1 BREEDING
+2 2 SINGULAR VECTOR
+3 3 MULTIPLE ANALYSIS CYCLE
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/1092.table b/definitions/bufr/tables/0/wmo/9/codetables/1092.table
new file mode 100644
index 0000000..dc9bf1c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/1092.table
@@ -0,0 +1,5 @@
+0 0 UNPERTURBED HIGH-RESOLUTION CONTROL FORECAST
+1 1 UNPERTURBED LOW-RESOLUTION CONTROL FORECAST
+2 2 NEGATIVELY PERTURBED FORECAST
+3 3 POSITIVELY PERTURBED FORECAST
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/11031.table b/definitions/bufr/tables/0/wmo/9/codetables/11031.table
new file mode 100644
index 0000000..fd7a8e0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/11031.table
@@ -0,0 +1,9 @@
+0 0 NIL           IN CLOUD
+1 1 SLIGHT        IN CLOUD
+2 2 MODERATE      IN CLOUD
+3 3 SEVERE        IN CLOUD
+4 4 NIL           IN CLEAR AIR
+5 5 SLIGHT        IN CLEAR AIR
+6 6 MODERATE      IN CLEAR AIR
+7 7 SEVERE        IN CLEAR AIR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/11037.table b/definitions/bufr/tables/0/wmo/9/codetables/11037.table
new file mode 100644
index 0000000..1fed72b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/11037.table
@@ -0,0 +1,30 @@
+0 0 AVE <0.1 PEAK <0.1
+1 1 AVE <0.1 0.1 <= PEAK <0.2
+2 2 0.1 <= AVE <0.2 0.1 <= PEAK <0.2
+3 3 AVE <0.1 0.2 <= PEAK <0.3
+4 4 0.1 <= AVE <0.2 0.2 <= PEAK <0.3
+5 5 0.2 <= AVE <0.3 0.2 <= PEAK <0.3
+6 6 AVE <0.1 0.3 <= PEAK <0.4
+7 7 0.1 <= AVE <0.2 0.3 <= PEAK <0.4
+8 8 0.2 <= AVE <0.3 0.3 <= PEAK <0.4
+9 9 0.3 <= AVE <0.4 0.3 <= PEAK <0.4
+10 10 AVE <0.1 0.4 <= PEAK <0.5
+11 11 0.1 <= AVE <0.2 0.4 <= PEAK <0.5
+12 12 0.2 <= AVE <0.3 0.4 <= PEAK <0.5
+13 13 0.3 <= AVE <0.4 0.4 <= PEAK <0.5
+14 14 0.4 <= AVE <0.5 0.4 <= PEAK <0.5
+15 15 AVE <0.1 0.5 <= PEAK <0.8
+16 16 0.1 <= AVE <0.2 0.5 <= PEAK <0.8
+17 17 0.2 <= AVE <0.3 0.5 <= PEAK <0.8
+18 18 0.3 <= AVE <0.4 0.5 <= PEAK <0.8
+19 19 0.4 <= AVE <0.5 0.5 <= PEAK <0.8
+20 20 0.5 <= AVE <0.8 0.5 <= PEAK <0.8
+21 21 AVE <0.1 0.8 <= PEAK
+22 22 0.1 <= AVE <0.2 0.8 <= PEAK
+23 23 0.2 <= AVE <0.3 0.8 <= PEAK
+24 24 0.3 <= AVE <0.4 0.8 <= PEAK
+25 25 0.4 <= AVE <0.5 0.8 <= PEAK
+26 26 0.5 <= AVE <0.8 0.8 <= PEAK
+27 27 0.8 <= AVE 0.8 <= PEAK
+28 28 NIL              NIL
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/11038.table b/definitions/bufr/tables/0/wmo/9/codetables/11038.table
new file mode 100644
index 0000000..f0c5cce
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/11038.table
@@ -0,0 +1,17 @@
+0 0 MIN < 1
+1 1 1 <= MIN < 2
+2 2 2 <= MIN < 3
+3 3 3 <= MIN < 4
+4 4 4 <= MIN < 5
+5 5 5 <= MIN < 6
+6 6 6 <= MIN < 7
+7 7 7 <= MIN < 8
+8 8 8 <= MIN < 9
+9 9 9 <= MIN < 10
+10 10 10 <= MIN < 11
+11 11 11 <= MIN < 12
+12 12 12 <= MIN < 13
+13 13 13 <= MIN < 14
+14 14 14 <= MIN < 15
+15 15 NO TIMING INFORMATION AVAILABLE
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/11039.table b/definitions/bufr/tables/0/wmo/9/codetables/11039.table
new file mode 100644
index 0000000..1bb26b7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/11039.table
@@ -0,0 +1,16 @@
+0 0 1 <= MIN < 2
+1 1 2 <= MIN < 3
+2 2 3 <= MIN < 4
+4 4 4 <= MIN < 5
+5 5 5 <= MIN < 6
+6 6 6 <= MIN < 7
+7 7 7 <= MIN < 8
+8 8 8 <= MIN < 9
+9 9 9 <= MIN < 10
+10 10 10 <= MIN < 11
+11 11 11 <= MIN < 12
+12 12 12 <= MIN < 13
+13 13 13 <= MIN < 14
+14 14 14 <= MIN < 15
+60 60 NO TIMING INFORMATION AVAILABLE
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/13038.table b/definitions/bufr/tables/0/wmo/9/codetables/13038.table
new file mode 100644
index 0000000..19bc422
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/13038.table
@@ -0,0 +1,4 @@
+0 0 NOT SUPERADIABATIC
+1 1 SUPERADIABATIC
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/13039.table b/definitions/bufr/tables/0/wmo/9/codetables/13039.table
new file mode 100644
index 0000000..c070b1d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/13039.table
@@ -0,0 +1,3 @@
+0 0 SEA ICE
+1 1 SNOW ON LAND
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/13040.table b/definitions/bufr/tables/0/wmo/9/codetables/13040.table
new file mode 100644
index 0000000..8e1dcfe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/13040.table
@@ -0,0 +1,9 @@
+0 0 LAND
+1 1 RESERVED
+2 2 NEAR COAST
+3 3 ICE
+4 4 POSSIBLE ICE
+5 5 OCEAN
+6 6 COAST
+7 7 DESERT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/13041.table b/definitions/bufr/tables/0/wmo/9/codetables/13041.table
new file mode 100644
index 0000000..d53bf87
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/13041.table
@@ -0,0 +1,10 @@
+1 1 A
+2 2 A-B
+3 3 B
+4 4 B-C
+5 5 C
+6 6 D
+7 7 E
+8 8 F
+9 9 G
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/13051.table b/definitions/bufr/tables/0/wmo/9/codetables/13051.table
new file mode 100644
index 0000000..70807eb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/13051.table
@@ -0,0 +1,8 @@
+0 0 SMALLER THAN ANY VALUE IN THE 30 YEARS PERIOD
+1 1 IN THE FIRST QUINTILE
+2 2 IN THE SECOND QUINTILE
+3 3 IN THE THIRD QUINTILE
+4 4 IN THE FOURTH QUINTILE
+5 5 IN THE FIFTH QUINTILE
+6 6 GREATER THAN ANY VALUE IN THE 30 YEAR PERIOD
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/13056.table b/definitions/bufr/tables/0/wmo/9/codetables/13056.table
new file mode 100644
index 0000000..02eeb56
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/13056.table
@@ -0,0 +1,10 @@
+0 0 NO PRECIPITATION
+1 1 LIGHT INTERMITTENT
+2 2 MODERATE INTERMITTENT
+3 3 HEAVY INTERMITTENT
+4 4 VERY HEAVY INTERMITTENT
+5 5 LIGHT CONTINUOUS
+6 6 MODERATE CONTINUOUS
+7 7 VERY HEAVY CONTINUOUS
+9 9 VARIABLE-ALTERNATIVELY LIGHT AND HEAVY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/13057.table b/definitions/bufr/tables/0/wmo/9/codetables/13057.table
new file mode 100644
index 0000000..9c8571c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/13057.table
@@ -0,0 +1,11 @@
+0 0 NO PRECIPITATION
+1 1 WITHIN THE LAST HOUR
+2 2 1 TO 2 HOURS AGO
+3 3 2 TO 3 HOURS AGO
+4 4 3 TO 4 HOURS AGO
+5 5 4 TO 5 HOURS AGO
+6 6 5 TO 6 HOURS AGO
+7 7 6 TO 8 HOURS AGO
+8 8 8 TO 10 HOURS AGO
+9 9 MORE THAN 10 HOURS AHO
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/15025.table b/definitions/bufr/tables/0/wmo/9/codetables/15025.table
new file mode 100644
index 0000000..acb0f2b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/15025.table
@@ -0,0 +1,2 @@
+0 0 OZONE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/19001.table b/definitions/bufr/tables/0/wmo/9/codetables/19001.table
new file mode 100644
index 0000000..2b92574
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/19001.table
@@ -0,0 +1,7 @@
+0 0 DEPRESSION OR LOW (EXTRATROPICAL)
+1 1 TROPICAL DEPRESSION
+2 2 TROPICAL STORM
+3 3 SEVERE TROPICAL STORM
+4 4 TYPHOON
+10 10 DUST/SANDSTORM
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/19008.table b/definitions/bufr/tables/0/wmo/9/codetables/19008.table
new file mode 100644
index 0000000..57395cd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/19008.table
@@ -0,0 +1,5 @@
+0 0 RESERVED
+1 1 SHALLOW (TOP OF CIRCULATION BELOW 700-HPA LEVEL
+2 2 MEDIUM(TOP BETWEEN 700-HPA AND 400-HPA)
+3 3 DEEP(TOP ABOVE 400-HPA LEVEL
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/19010.table b/definitions/bufr/tables/0/wmo/9/codetables/19010.table
new file mode 100644
index 0000000..03e331e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/19010.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 MINIMUM VALUE OF SEA LEVEL PRESSURE
+2 2 MAXIMUM VALUE OF 850 HPA RELATIVE VORTICITY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20003.table b/definitions/bufr/tables/0/wmo/9/codetables/20003.table
new file mode 100644
index 0000000..b6227bc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20003.table
@@ -0,0 +1,250 @@
+0 0 CLOUD DEVELOPMENT NOT OBSERVED OR NOT OBSERVABLE
+1 1 CLOUDS GENERALLY DISSOLVING OR BECOMING LESS DEVELOPED
+2 2 STATE OF SKY ON THE WHOLE UNCHANGED
+3 3 CLOUDS GENERALLY FORMING OR DEVELOPING
+4 4 VISIBILITY REDUCED BY SMOKE, E.G. VELDT OR FOREST FIRES, IN"    DUSTRIAL SMOKE OR VOLCANIC ASHES
+5 5 HAZE
+6 6 WIDESPREAD DUST IN SUSPENSION IN THE AIR, NOT RAISED BY WIND"     AT OR NEAR THE STATION AT THE TIME OF OBSERVATION
+7 7 DUST OR SEND RAISED BY WIND AT OR NEAR THE STATION AT THE TI"    ME OF OBSERVATION, BUT NO WELL-DEVELOPED DUST WHRIL(S) OR SA"    ND WHRIL(S), AND NO 
+8 8 WELL-DEVELOPED DUST WHRIL(S) OR SAND WHRILS SEEN AT OR NEAR"    THE STATION DURING THE PRECEDING HOUR OR AT THE SAME TIME OF"     OBSERVATION, BUT NO 
+9 9 DUSTSTORM OR SANDSTORM WITHIN SIGHT AT THE TIME OF OBSERVATI"    ON, OR AT THE STATION DURING THE PRECEDING HOR
+10 10 MIST
+11 11 PACHES SHALLOW FOG OR ICE AT THE STATION, WHETHER ON LAND OR"     SEA, NOT DEEPER THAN 2 METRES ON LAND OR 10 METRES AT SEA
+12 12 MORE OR LESS CONTINUOUS SHALLOW FOG OR ICE AT THE STATION,"    WHETHER ON LAND OR SEA, NOT DEEPER THAN 2 METRES ON LAND OR"    10 METRES AT SEA
+13 13 LIGHTNING VISIBLE, NO THUNDER HEARD
+14 14 PRECIPITATION WITHIN SIGHT, NOT REACHING THE GROUND OR THE"    SURFACE OF THE SEA
+15 15 PRECIPITATION WITHIN SIGHT, REACHING THE GROUND OR THE SURFA"    CE OF THE SEA, BUT DISTANT, I.E. ESTIMATED TO BE MORE THAN"    5 KM FROM THE STATION
+16 16 PRECIPITATION WITHIN SIGHT, REACHING THE GROUND OR THE SURFA"    CE OF THE SEA, NEAR TO, BUT NOT AT THE STATION
+17 17 THUNDERSTORM, BUT NO PRECIPITATION AT THE TIME OF OBSERVATIO"    N
+18 18 SQUALLS AT OR WITHIN SIGHT OF THE STATION DURING THE PRECEDI"    NG HOUR OR AT THE TIME OF OBSERVATION
+19 19 FUNNEL CLOUD(S) AT OR WITHIN SIGHT OF THE STATION DURING THE"     PRECEDING HOUR OR AT THE TIME OF OBSERVATION
+20 20 DRIZZEL (NOT FREEZING) OR SNOW GRAINS NOT FALLING AS SHOWERS"    ; DURING THE PRECEDING HOUR BUT NOT  AT THE TIME OF OBSERVAT"    IONS
+21 21 RAIN (NOT FREEZING) NOT FALLING AS SHOWER(S); DURING THE PRE"    ECEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+22 22 SNOW NOT FALLING AS SHOWER(S); DURING THE PRECEDING HOUR BUT"     NOT AT THE TIME OF OBSERVATION
+23 23 RAIN AND SNOW OR ICE PELLETS NOT FALLING AS SHOWER(S); DURIN"    G THE PRECEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+24 24 FREEZING DRIZZEL OR FREEZING RAIN NOT FALLING AS SHOWER(S);"    DURING THE PRECEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+25 25 SHOWER(S) OF RAIN; DURING THE PRECEDING HOUR BUT NOT AT THE"    TIME OF OBSERVATION
+26 26 SHOWER(S) OF SNOW, OR OF RAIN AND SNOW; DURING THE PRECEDING"     HOUR BUT NOT AT THE TIME OF OBSERVATION
+27 27 SHOWER(S) OF HAIL, OR OF RAIN AND HAIL; DURING THE PRECEDING"     HOUR BUT NOT AT THE TIME OF OBSERVATION
+28 28 FOG OR ICE FOG; DURING THE PRECEDING HOUR BUT NOT AT THE TIM"    E OF OBSERVATION
+29 29 THUNDERSTORM (WITH OR WITHOUT PRECIPITATION); DURING THE PRE"    CEDING HOUR BUT NOT AT THE TIME OF OBSERVATION
+30 30 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM HAS DECREASED DURI"    NG THE PRECEDING HOURS
+31 31 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM NO APPRECIABLE CHA"    NGE DURING THE PRECEDING HOUR
+32 32 SLIGHT OR MODERATE DUSTSTORM OR SANDSTORM HAS BEGUN OR HAS I"    NCEASED DURING THE PRECEDING HOUR
+33 33 SEVERE DUSTSTORM OR SANDSTORM  HAS DECREASED DURING THE PREC"    EDING HOURS
+34 34 SEVERE DUSTSTORM OR SANDSTORM NO APPRECIABLE CHANGE DURING T"    HE PRECEDING HOUR
+35 35 SEVERE DUSTSTORM OR SANDSTORM HAS BEGUN OR HAS INCREASED DUR"    ING THE PRECEDING HOUR
+36 36 SLIGHT OR MODERATE DRIFTING SNOW GENERALLY LOW (BELOW EYE LE"    VEL)
+37 37 HEAVY DRIFTING SNOW  GENERALY LOW (BELOW EYE LEVEL)
+38 38 SLIGHT OR MODERATE BLOWING SNOW GENERALLY HIGH (ABOVE EYE LE"    VEL)
+39 39 HEAVY BLOWING SNOW  GENERALY HIGH (ABOVE EYE LEVEL)
+40 40 FOG OR ICE FOG AT A DISTANCE AT THE TIME OF OBSERVATION, BUT"     NOT AT THE STATION DURING THE PRECEDING HOUR, THE FOG OR IC"    E FOG EXTENDING TO A
+41 41 FOG OR ICE FOG IN PATCHES
+42 42 FOG OR ICE FOG, SKY VISIBLE,HAS BECOME THINNER DURING THE PR"    ECEDING HOUR
+43 43 FOG OR ICE FOG, SKY INVISIBLE,HAS BECOME THINNER DURING THE"    PRECEDING HOUR
+44 44 FOG OR ICE FOG, SKY   VISIBLE,NO APPRECIABLE CHANGE DURING T"    HE PRECEDING HOUR
+45 45 FOG OR ICE FOG, SKY INVISIBLE,NO APPRECIABLE CHANGE DURING T"    HE PRECEDING HOUR
+46 46 FOG OR ICE FOG, SKY   VISIBLE,HAS BEGUN OR HAS BECOME THICKE"    R DURING THE PRECEDING HOUR
+47 47 FOG OR ICE FOG, SKY INVISIBLE,HAS BEGUN OR HAS BECOME THICKE"    R DURING THE PRECEDING HOUR
+48 48 FOG, DEPOSITING RIME, SKY VISIBLE
+49 49 FOG, DEPOSITING RIME, SKY INVISIBLE
+50 50 DRIZZLE, NOT FREEZING, INTERMITTENT;SLIGHT AT TIME OF OBSERV"    ATION
+51 51 DRIZZLE, NOT FREEZING, CONTINUOUS  ;SLIGHT AT TIME OF OBSERV"    ATION
+52 52 DRIZZLE, NOT FREEZING, INTERMITTENT;MODERATE AT TIME OF OBSE"    RVATION
+53 53 DRIZZLE, NOT FREEZING, CONTINUOUS  ;MODERATE AT TIME OF OBSE"    RVATION
+54 54 DRIZZLE, NOT FREEZING, INTERMITTENT;HEAVY (DENSE) AT THE TIM"    E OF OBSERVATION
+55 55 DRIZZLE, NOT FREEZING, CONTINUOUS  ;HEAVY (DENSE) AT THE TIM"    E OF OBSERVATION
+56 56 DRIZZLE, FREEZING, SLIGHT
+57 57 DRIZZLE, FREEZING, MODERATE OR HEAVY (DENSE)
+58 58 DRIZZLE AND RAIN, SLIGHT
+59 59 DRIZZLE AND RAIN, MODERATE OR HEAVY
+60 60 RAIN,NOT FREEZING,INTERMITTENT;SLIGHT AT TIME OF OBSERVATION
+61 61 RAIN,NOT FREEZING,CONTINUOUS  ;SLIGHT AT TIME OF OBSERVATION
+62 62 RAIN,NOT FREEZING,INTERMITTENT;MODERATE AT TIME OF OBSERVATI"    ON
+63 63 RAIN,NOT FREEZING,CONTINUOUS  ;MODERATE AT TIME OF OBSERVATI"    ON
+64 64 RAIN, NOT FREEZING, INTERMITTENT;HEAVY AT TIME OF OBSERVATIO"    ON
+65 65 RAIN, NOT FREEZING, CONTINUOUS;HEAVY AT TIME OF OBSERVATION
+66 66 RAIN, FREEZING, SLIGHT
+67 67 RAIN, FREEZING, MODERATE OR HEAVY
+68 68 RAIN OR DRIZZLE AND SNOW, LIGHT
+69 69 RAIN OR DRIZZLE AND SNOW, MODERATE OR HEAVY
+70 70 INTERMITTENT FALL OF SNOWFLAKES, SLIGHT AT TIME OF OBSERVATI"    ON
+71 71 CONTINUOUS   FALL OF SNOWFLAKES, SLIGHT AT TIME OF OBSERVATI"    ON
+72 72 INTERMITTENT FALL OF SNOWFLAKES, MODERATE AT TIME OF OBSERVA"    TION
+73 73 CONTINUOUS   FALL OF SNOWFLAKES, MODERATE AT TIME OF OBSERVA"    TION
+74 74 INTERMITTENT FALL OF SNOWFLAKES, HEAVY AT TIME OF OBSERVATIO"    ONS
+75 75 CONTINUOUS   FALL OF SNOWFLAKES, HEAVY AT TIME OF OBSERVATIO"    ONS
+76 76 DIAMOND DUST (WITH OR WITHOUT FOG)
+77 77 SNOW GRAINS (WITH OR WITHOUT FOG)
+78 78 ISOLATED STAR-LIKE SNOW CRYSTALS (WITH OR WITHOUT FOG)
+79 79 ICE PELLETS
+80 80 RAIN SHOWER(S), SLIGHT
+81 81 RAIN SHOWER(S), MODERATE OR HEAVY
+82 82 RAIN SHOWER(S), VIOLENT
+83 83 SHOWER(S) OF RAIN AND SNOW MIXED, SLIGHT
+84 84 SHOWER(S) OF RAIN AND SNOW MIXED, MODERATE OR HEAVY
+85 85 SNOW SHOWER(S), SLIGHT
+86 86 SNOW SHOWER(S), MODERATE OR HEAVY
+87 87 SHOWER(S) OF SNOW PELLETS OR SMALL HAIL, WITH OR WITHOUT RAI"    N OR RAIN AND SNOW MIXED, SLIGHT
+88 88 SHOWER(S) OF SNOW PELLETS OR SMALL HAIL, WITH OR WITHOUT RAI"    N OR RAIN AND SNOW MIXED, MODERATE OR HEAVY
+89 89 SHOWER(S) OF HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIX"    ED, NOT ASSOCIATED WITH THUNDER, SLIGHT
+90 90 SHOWER(S) OF HAIL, WITH OR WITHOUT RAIN OR RAIN AND SNOW MIX"    ED, NOT ASSOCIATED WITH THUNDER, MODERATE OR HEAVY
+91 91 SLIGHT RAIN AT TIME OF OBSERVATION, THUNDERSTORM DURING THE"    PRECEDING HOUR BUT NOT AT TIME OF OBSERVATION
+92 92 MODERATE OR HEAVY RAIN AT TIME OF OBSERVATION, THUNDERSTORM"    DURING THE PRECEDING HOUR BUT NOT AT TIME OF OBSERVATION
+93 93 SLIGHT SNOW, OR RAIN AND SNOW MIXED OR HAIL AT TIME OF OBSER"    VATION, THUNDERSTORM DURING THE PRECEDING HOUR BUT NOT AT TI"    ME OF OBSERVATION
+94 94 MODERATE OR HEAVY SNOW, OR RAIN AND SNOW MIXED OR HAIL AT TI"    ME OF OBSERVATION, THUNDERSTORM DURING PRECEDING HOUR BUT NO"    T AT TIME OF OBSERVA
+95 95 THUNDERSTORM, SLIGHT OR MODERATE, WITHOUT HAIL, BUT WITH RAI"    N AND/OR SNOW AT TIME OF OBSERVATION, THUNDERSTORM DURING TH"    E PRECEDING HOUR BUT
+96 96 THUNDERSTORM, SLIGHT OR MODERATE,WITH HAIL AT TIME OF OBSERV"    ATION, THUNDERSTORM AT TIME OF OBSERVATION
+97 97 THUNDERSTORM, HEAVY, WITHOUT HAIL BUT WITH RAIN AND/OR SNOW"    AT TIME OF OBSERVATION, THUNDERSTORM AT TIME OF OBSERVATION
+98 98 THUNDERSTORM COMBINED WITH DUSTSTORM OR SANDSTORM AT TIME OF"     OBSERVATION, THUNDERSTORM AT TIME OF OBSERVATION
+99 99 THUNDERSTORM, HEAVY, WITH HAIL AT TIME OF OBSERVATION, THUND"    ERSTORM AT TIME OF OBSERVATION
+100 100 NO SIGNIFICANT WEATHER OBSERVED
+101 101 CLOUDS GENERALLY DISSOLVING OR BECOMING LESS DEVELOPED DURIN"    G THE PAST HOUR
+102 102 STATE OF SKY ON THE WHOLE UNCHANGED DURING THE PAST HOUR
+103 103 CLOUDS GENERALLY FORMING OR DEVELOPING DURING THE PAST HOUR
+104 104 HAZE OR SMOKE, OR DUST IN SUSPENSION IN THE AIR, VISIBILITY"    EQUAL TO, OR GREATER THAN 1KM
+105 105 HAZE OR SMOKE, OR DUST IN SUSPENSION IN THE AIR, VISIBILITY"    LESS THAN 1KM
+110 110 MIST
+111 111 DIAMOND DUST
+112 112 DISTANT LIGHTING
+118 118 SQUALLS
+120 120 FOG
+121 121 PRECIPITATION
+122 122 DRIZZLE (NOT FREEZING) OR SNOW GRAINS
+123 123 RAIN (NOT FREEZING)
+124 124 SNOW
+125 125 FREEZING DRIZZLE OR FREEZING RAIN
+126 126 THUNDERSTORM (WITH OR WITHOUT PRECIPITATION)
+127 127 BLOWING OR DRIFTING SNOW OR SAND
+128 128 BLOWING OR DRIFTING SNOW OR SAND, VISIBILITY EQUAL TO, OR GR"    ATER THAN, 1KM
+129 129 BLOWING OR DRIFTING SNOW OR SAND, VISIBILITY LESS THAN 1 KM
+130 130 FOG
+131 131 FOG OR ICE FOG, IN PATCHES
+132 132 FOG OR ICE FOG, HAS BECOME THINNER DURING PAST HOUR
+133 133 FOG OR ICE FOG, NO APPRECIABLE CHANGE DURING PAST HOUR
+134 134 FOG OR ICE FOG, HAS BECUNOR BECOME THICKER DURING PAST HOUR
+135 135 FOG, DEPOSITION RIME
+140 140 PRECIPITATION
+141 141 PRECIPITATION SLIGHT OR MODERATE
+142 142 PRECIPITATION, HEAVY
+143 143 LIQUID PRECIPITATION, SLIGHT OR MODERATE
+144 144 LIQUID PRECIPITATION, HEAVY
+145 145 SOLID PRECIPITATION, SLIGHT OR MODERATE
+146 146 SOLID PRECIPITATION, HEAVY
+147 147 FREEZING PRECIPITATION, SLIGHT OR MODERATE
+148 148 FREEZING PRECIPITATION, HEAVY
+150 150 DRIZZLE
+151 151 DRIZZLE, NOT FREEZING, SLIGHT
+152 152 DRIZZLE, NOT FREEZING, MODERATE
+153 153 DRIZZLE, NOT FREEZING, HEAVY
+154 154 DRIZZLE, FREEZING, SLIGHT
+155 155 DRIZZLE, FREEZING, MODERATE
+156 156 DRIZZLE, FREEZING, HEAVY
+157 157 DRIZZLE AND RAIN, SLIGHT
+158 158 DRIZZLE AND RAIN, MODERATE OR HEAVY
+160 160 RAIN
+161 161 RAIN, NOT FREEZING, SLIGHT
+162 162 RAIN, NOT FREEZING, MODERATE
+163 163 RAIN, NOT FREEZING, HEAVY
+164 164 RAIN, FREEZING, SLIGHT
+165 165 RAIN, FREEZING, MODERATE
+166 166 RAIN, FREEZING, HEAVY
+167 167 RAIN (OR DRIZZLE) AND SNOW, SLIGHT
+168 168 RAIN (OR DRIZZLE) AND SNOW, MODERATE AND HEAVY
+170 170 SNOW
+171 171 SNOW, SLIGHT
+172 172 SNOW, MODERATE
+173 173 SNOW, HEAVY
+174 174 ICE PELLETS, SLIGHT
+175 175 ICE PELLETS, MODERATE
+176 176 ICE PELLETS, HEAVY
+180 180 SHOWER(S) OR INTERMITTENT PRECIPITATION
+181 181 RAIN SHOWER(S) OR INTERMITTENT RAIN, SLIGHT
+182 182 RAIN SHOWER(S) OR INTERMITTENT RAIN, MODERATE
+183 183 RAIN SHOWER(S) OR INTERMITTENT RAIN, HEAVY
+184 184 RAIN SHOWER(S) OR INTERMITTENT RAIN, VIOLENT
+185 185 SNOW SHOWER(S) OR INTERMITTENT SNOW, SLIGHT
+186 186 SNOW SHOWER(S) OR INTERMITTENT SNOW, MODERATE
+187 187 SNOW SHOWER(S) OR INTERMITTENT SNOW, HEAVY
+190 190 THUNDERSTORM
+191 191 THUNDERSTORM, SLIGHT OR MODERATE, WITH NO PRECIPITATION
+192 192 THUNDERSTORM, SLIGHT OR MODERATE, WITH RAIN SHOWERS AND/OR S"    NOW SHOWERS
+193 193 THUNDERSTORM, SLIGHT OR MODERATE, WITH HAIL
+194 194 THUNDERSTORM, HEAVY, WITH NO PRECIPITATION
+195 195 THUNDERSTORM, HEAVY, WITH RAIN SHOWERS AND/OR SNOW SHOWERS
+196 196 THUNDERSTORM, HEAVY, WITH HAIL
+204 204 VOLCANIC ASH SUSPENDED IN THE AIR ALOFT
+206 206 THICK DUST HAZE, VISIBILITY LESS THAN 1 KM
+207 207 BLOWING SPRAY AT THE STATION
+208 208 DRIFTING DUST (SAND)
+209 209 WALL OF DUST OR SAND IN DISTANCE (LIKE HABOOB)
+210 210 SNOW HAZE
+211 211 WHITEOUT
+213 213 LIGHTING, CLOUD TO SURFACE
+217 217 DRY THUNDERSTORM
+219 219 TORNADO CLOUD (DESTRUCTIVE AT OR WITHIN SIGHT OF THE STATION"    DURING PRECEDING HOUR OR AT THE TIME OF OBSERVATION
+220 220 DEPOSITION OF VOLCANIC ASH
+221 221 DEPOSITION OF DUST OR SAND
+222 222 DEPOSITION OF DEW
+223 223 DEPOSITION OF WET SNOW
+224 224 DEPOSITION OF SOFT RIME
+225 225 DEPOSITION OF HARD RIME
+226 226 DEPOSITION OF HOAR FROST
+227 227 DEPOSITION OF GLAZE
+228 228 DEPOSITION OF ICE CRUST (ICE SLICK)
+230 230 DUSTSTORM OR SANDSTORM WITH TEMPERATURE BELOW 0 C DEGREES
+239 239 BLOWING SNOW, IMPOSSIBLE TO DETERMINE WHETHER SNOW IS FALLIN"    G OR NOT
+241 241 FOG ON SEA
+242 242 FOG IN VALLEYS
+243 243 ARCTIC OR ANTARCTIC SEA SMOKE
+244 244 STEAM FOG (SEA,LAKE OR RIVER)
+245 245 STEAM FOG (LAND)
+246 246 FOG OVER ICE OR SNOW COVER
+247 247 DENCE FOG VISIBILITY 60-90 M
+248 248 DENCE FOG VISIBILITY 30-60 M
+249 249 DENCE FOG VISIBILITY LESS THAN 30 M
+250 250 DRIZZLE, RATE OF FALL  LESS THAN 0.10 MM/H
+251 251 DRIZZLE, RATE OF FALL   0.10 -  .19  MM/H
+252 252 DRIZZLE, RATE OF FALL   0.20 -  .39  MM/H
+253 253 DRIZZLE, RATE OF FALL   0.40 -  .79  MM/H
+254 254 DRIZZLE, RATE OF FALL   0.80 - 1.59  MM/H
+255 255 DRIZZLE, RATE OF FALL   1.60 - 3.19  MM/H
+256 256 DRIZZLE, RATE OF FALL   3.20 - 6.39  MM/H
+257 257 DRIZZLE, RATE OF FALL   6.40 MM/H  OR MORE
+259 259 DRIZZLE AND SNOW
+260 260 RAIN, RATE OF FALL  LESS THAN 1.0 MM/H
+261 261 RAIN, RATE OF FALL   1.0  -  1.9   MM/H
+262 262 RAIN, RATE OF FALL   2.0  -  3.9   MM/H
+263 263 RAIN, RATE OF FALL   4.0  -  7.9   MM/H
+264 264 RAIN, RATE OF FALL   8.0  - 15.9   MM/H
+265 265 RAIN, RATE OF FALL  16.0  - 31.9   MM/H
+266 266 RAIN, RATE OF FALL  32.0  - 63.9   MM/H
+267 267 RAIN, RATE OF FALL  64.0  MM/H  OR MORE
+270 270 SNOW, RATE OF FALL  LESS THAN 1.0 CM/H
+271 271 SNOW, RATE OF FALL   1.0  -  1.9   CM/H
+272 272 SNOW, RATE OF FALL   2.0  -  3.9   CM/H
+273 273 SNOW, RATE OF FALL   4.0  -  7.9   CM/H
+274 274 SNOW, RATE OF FALL   8.0  - 15.9   CM/H
+275 275 SNOW, RATE OF FALL  16.0  - 31.9   CM/H
+276 276 SNOW, RATE OF FALL  32.0  - 63.9   CM/H
+277 277 SNOW, RATE OF FALL  64.0  CM/H  OR MORE
+278 278 SNOW OR ICE CRISTAL PRECIPITATION FROM A CLEAR SKY
+279 279 WET SNOW, FREEZING ON CONTACT
+280 280 PRECIPITATION OF RAIN (WW= 87-99)
+281 281 PRECIPITATION OF RAIN,FREEZING (WW= 80-82)
+282 282 PRECIPITATION OF RAIN AND SNOW MIXED
+283 283 PRECIPITATION OF SNOW
+284 284 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL
+285 285 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH RAIN
+286 286 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH RAIN AND S"    NOW MIXED
+287 287 PRECIPITATION OF SNOW PELLETS OR SMALL HAIL, WITH SNOW
+288 288 PRECIPITATION OF HAIL
+289 289 PRECIPITATION OF HAIL, WITH RAIN
+290 290 PRECIPITATION OF HAIL, WITH RAIN AND SNOW MIXED
+291 291 PRECIPITATION OF HAIL, WITH SNOW
+292 292 SHOWER(S) OR THUNDERSTORM OVER SEA
+293 293 SHOWER(S) OR THUNDERSTORM OVER MOUNTAINS
+508 508 NO SIGNIFICANT PHENOMENA TO REPORT, PRESENT AND PAST WEATHER"     OMITTED
+509 509 NOT OBSERVED, NO DATA AVAILABLE, PRESENT AND PAST WEATHER OM"    ITTED
+510 510 PRESENT AND PAST WEATHER MISSING, BUT EXPECTED
+511 511 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20004.table b/definitions/bufr/tables/0/wmo/9/codetables/20004.table
new file mode 100644
index 0000000..bd060a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20004.table
@@ -0,0 +1,21 @@
+0 0 CLOUD COVERING 1/2 OR LESS OF THE SKY THROUGHOUT THE APPROPP"    RIATE PERIOD
+1 1 CLOUD COVERING MORE THAN 1/2 OF THE SKY DURING PART OF THE A"    PPROPRIATE PERIOD AND COVERING 1/2 OR LESS DURING PART OF TH"    E PERIOD
+2 2 CLOUD COVERING MORE THAN 1/2 OF THE SKY THROUGHOUT THE APPRP"    PRIATE PERIOD
+3 3 SANSTORM, DUSTSTORM OR BLOWING SNOW
+4 4 FOG OR ICE OR THICK HAZE
+5 5 DRIZZLE
+6 6 RAIN
+7 7 SNOW, OR RAIN AND SNOW MIXED
+8 8 SHOWER(S)
+9 9 THUNDERSTORM(S) WITH OR WITHOUT PRECIPITATION
+10 10 NO SIGNIFICANT WEATHER OBSERVED
+11 11 VISIBILITY REDUCED
+12 12 BLOWING PHENOMENA, VISIBILITY REDUCED
+13 13 FOG
+14 14 PRECIPITATION
+15 15 DRIZZLE
+16 16 RAIN
+17 17 SNOW OR ICE PELLETS
+18 18 SHOWERS OR INTERMITTENT PRECIPITATION
+19 19 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20005.table b/definitions/bufr/tables/0/wmo/9/codetables/20005.table
new file mode 100644
index 0000000..bd060a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20005.table
@@ -0,0 +1,21 @@
+0 0 CLOUD COVERING 1/2 OR LESS OF THE SKY THROUGHOUT THE APPROPP"    RIATE PERIOD
+1 1 CLOUD COVERING MORE THAN 1/2 OF THE SKY DURING PART OF THE A"    PPROPRIATE PERIOD AND COVERING 1/2 OR LESS DURING PART OF TH"    E PERIOD
+2 2 CLOUD COVERING MORE THAN 1/2 OF THE SKY THROUGHOUT THE APPRP"    PRIATE PERIOD
+3 3 SANSTORM, DUSTSTORM OR BLOWING SNOW
+4 4 FOG OR ICE OR THICK HAZE
+5 5 DRIZZLE
+6 6 RAIN
+7 7 SNOW, OR RAIN AND SNOW MIXED
+8 8 SHOWER(S)
+9 9 THUNDERSTORM(S) WITH OR WITHOUT PRECIPITATION
+10 10 NO SIGNIFICANT WEATHER OBSERVED
+11 11 VISIBILITY REDUCED
+12 12 BLOWING PHENOMENA, VISIBILITY REDUCED
+13 13 FOG
+14 14 PRECIPITATION
+15 15 DRIZZLE
+16 16 RAIN
+17 17 SNOW OR ICE PELLETS
+18 18 SHOWERS OR INTERMITTENT PRECIPITATION
+19 19 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20008.table b/definitions/bufr/tables/0/wmo/9/codetables/20008.table
new file mode 100644
index 0000000..646997b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20008.table
@@ -0,0 +1,19 @@
+0 0 SKY CLEAR
+1 1 FEW
+2 2 SCATTERED
+3 3 BROKEN
+4 4 OVERCAST
+5 5 RESERVED
+6 6 SCATTERED/BROKEN (MANY FORECASTS USE SCATTERED/BROKEN
+7 7 BROKEN/OVERCAST (BROKEN/OVERCAST FOLLOWED BY CLOUD TYPE(S))
+8 8 ISOLATED (USED ON AVIATION CHARTS TO DESCRIBE THE CLOUD TYPE"     CB)
+9 9 ISOLATED EMBEDDED (USED ON AVIATION CHARTS TO DESCRIBE THE C"    LOUD TYPE CB)
+10 10 OCCASIONAL (USED ON AVIATION CHARTS TO DESCRIBE THE CLOUD TY"    PE CB)
+11 11 OCCASIONAL EMBEDDED (USED ON AVIATION CHARTS TO DESCRIBE THE"     CLOUD TYPE CB)
+12 12 FREQUENT (USED ON AVIATION CHARTS TO DESCRIBE THE CLOUD TYPE"     CB)
+13 13 DENSE (USED ON AVIATION CHARTS TO DESCRIBE CLOUD THAT WOULD"    CAUSE SUDDEN CHANGES IN VISIBILITY (LESS THAN 1000M)
+14 14 LAYERS
+15 15 OBSCURED (OBSC)
+16 16 EMBEDDED (EMBD)
+17 17  FREQUENT EMBEDDED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20009.table b/definitions/bufr/tables/0/wmo/9/codetables/20009.table
new file mode 100644
index 0000000..084630c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20009.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 NSC MIL SIGNIFICANT CLOUD
+2 2 CAVOK
+3 3 SKC SKY CLEAR
+4 4 NSW NIL SIGNIFICANT WEATHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2001.table b/definitions/bufr/tables/0/wmo/9/codetables/2001.table
new file mode 100644
index 0000000..8259eeb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2001.table
@@ -0,0 +1,4 @@
+0 0 AUTOMATIC STATION
+1 1 MANNED STATION
+2 2 HYBRID, BOTH MANNED AND AUTOMATIC
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20011.table b/definitions/bufr/tables/0/wmo/9/codetables/20011.table
new file mode 100644
index 0000000..740be7b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20011.table
@@ -0,0 +1,11 @@
+0 0 0                              0
+1 1 1 OKTA OR LESS, BUT NOT ZERO   1/10 OR LESS, BUT NOT ZERO
+2 2 2 OKTAS                        2/10 - 3/10
+3 3 3 OKTAS                        4/10
+4 4 4 OKTAS                        5/10
+5 5 5 OKTAS                        6/10
+6 6 6 OKTAS                        7/10 - 8/10
+7 7 7 OKTAS OR MORE,BUT NOT 8 OKTAS9/10 OR MORE, BUT NOT 10/10
+8 8 8 OKTAS                        10/10
+9 9 SKY OBSCURED BY FOG AND OR OTHER METEOROLOGICAL PHENOMENA
+15 15 CLOUD COVE IS INDISCERNIBLE FOR REASONS OTHER THAN FOG OR OT"    HER METEOROLOGICAL PHENOMENA, OR OBSERVATION IS NOT MADE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20012.table b/definitions/bufr/tables/0/wmo/9/codetables/20012.table
new file mode 100644
index 0000000..ff14028
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20012.table
@@ -0,0 +1,45 @@
+0 0 CIRRUS (CI)...............CI
+1 1 CIRROCUMULUS (CC).........CC
+2 2 CIRROSTRATUS (CS).........CS
+3 3 ALTOCUMULUS  (AC).........AC
+4 4 ALTOSTRATUS  (AS).........AS
+5 5 NIMBOSTRATUS (NS).........NS
+6 6 STRATOCUMULUS(SC).........SC
+7 7 STRATUS      (ST).........ST
+8 8 CUMULUS      (CU).........CU
+9 9 CUMULONIMBUS (CB).........CB
+10 10 NO CH CLOUDS
+11 11 CIRRUS FIBRATUS, SOMETIMES UNCINUS, NOT PROGRESSIVELY INADIN"    G THE SKY
+12 12 CIRRUS SPISSATUS, IN PATCHES OR ENTANGLED SHEAVES, WHICH USU"    ALLY DO NOT INCREASE AND SOMETIMES SEEM TO BE THE REMAINS OF"     THE UPPER PART OF A
+13 13 CIRRUS SPISSATUS CUMULONIMBOGENITUS
+14 14 CIRRUS UNCINUS OR FIBRATUS,OR BOTH, PROGRESSIVELY INVADING T"    HE SKY ; THEY GENERALLY THICKEN AS A WHOLE
+15 15 CIRRUS (OFTEN IN BANDS) AND CIRROSTRATUS, OR CIRROSTRATUS AL"    ONE, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN"    ASA WHOLE, BUT THE CO
+16 16 CIRRUS (OFTEN IN BANDS) AND CIRROSTRATUS, OR CIRROSTRATUS AL"    ONE, PROGRESSIVELY INVADING THE SKY; THEY GENERALLY THICKEN"    ASA WHOLE, BUT THE CO
+17 17 CIRROSTRATUS COVERING THE WHOLE SKY
+18 18 CIRROSTRATUS NOT PROGRESSIVELY INVADING THE SKY AND NOT ENTI"    RELY COVERING IT
+19 19 CIRROCUMULUS ALONE, OR CIRROCUMULUS PREDOMINANT AMONG THE CH"     CLOUDS
+20 20 NO CM CLOUDS
+21 21 ALTOSTRATUS TRANSLUCIDUS
+22 22 ALTOSTRATUS OPACUS OR NIMBOSTRATUS
+23 23 ALTOCUMULUS TRANSLUCIDUS AT A SINGLE LEVEL
+24 24 PATCHES (OFTEN LENTICULARIS) OF ALTOCUMULUS TRANSLUCIDUS, CO"    NTINUALLY CHANGING AND OCCURING AT ONE OR MORE LEVELS
+25 25 ALTOCUMULUS TRANSLUCIDUS IN BANDS, OR ONE OR MORE LAYERS OF"    ALTOCUMULUS TRANSLUCIDUS OR OPACUS, PROGRESSIVELY INVADING T"    HE SKY; THESE ALTOCUM
+26 26 ALTOCUMULUS CUMULOGENITUS (OR CUMULONIMBOGENITUS)
+27 27 ALTOCUMULUS TRANSLUCIDUS OR OPACUS IN TWO OR MORE LAYERS, OR"     ALTOCUMULUS OPACUS IN A SINGLE LAYER, NOT PROGRESSIVELY INV"    ADING THE SKY, OR AL
+28 28 ALTOCUMULUS CASTELLANUS OR FLOCUS
+29 29 ALTOCUMULUS OF CHAOTIC SKY, GENERALLY AT SEVERAL LEVELS
+30 30 NO CL CLOUDS
+31 31 CUMULUS HUMILIS OR CUMULUS FRACTUS OTHER THAN OF BAD WEATHER"    , OR BOTH
+32 32 CUMULUS MEDIOCRIS OR CONGESTUS, WITH OR WITHOUT CUMULUS OF S"    PECIES FRACTUS OR HUMULIS OR STRATOCUMULUS, ALL HAVING THEIR"     BASES AT THE SAME L
+33 33 CUMULONIMBUS CALVUS, WITH OR WITHOUT CUMULUS, STRATOCUMULUS"    OR STRATUS
+34 34 STRATOCUMULUS CUMULOGENITUS
+35 35 STRATOCUMULUS OTHER THAN STRATOCUMULUS CUMULOGENITUS
+36 36 STRATUS NEBULOSUS OR STRATUS FRACTUS OTHER THAN OF BAD WEATH"    ER, OR BOTH
+37 37 STRATUS FRACTUS OR CUMULUS FRACTUS OF BAD WEATHER, OR BOTH"    (PANNUS), USUALLY BELOW ALTOSTRATUS OR NIMBOSTRATUS
+38 38 CUMULUS AND STRATOCUMULUS OTHER THAN STRATOCUMULUS CUMULOGEN"    ITUS, WITH BASES AT DIFFERENT LEVELS
+39 39 CUMULONIMBUS CAPILLATUS (OFTEN WITH AN ANVIL), WITH OR WITHO"    UT CUMULONIMBUS CALVUS, CUMULUS, STRATOCUMULUS, STRATUS OR P"    ANNUS
+59 59 CLOUD NOT VISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDSTO"    RM, OR OTHER ANALOGOUS PHENOMENA
+60 60 CH CLOUDS INVISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDS"    TORM, OR OTHER SIMILAR PHENOMENA, OR BECAUSE OF A CONTINUOUS"    LAYER OF LOWER CLOUD
+61 61 CM CLOUDS INVISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDS"    TORM, OR OTHER SIMILAR PHENOMENA, OR BECAUSE OF A CONTINUOUS"    LAYER OF LOWER CLOUD
+62 62 CL CLOUDS INVISIBLE OWING TO DARKNESS, FOG, DUSTSTORM, SANDS"    TORM, OR OTHER SIMILAR PHENOMENA
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20017.table b/definitions/bufr/tables/0/wmo/9/codetables/20017.table
new file mode 100644
index 0000000..48f9b49
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20017.table
@@ -0,0 +1,11 @@
+0 0 ISOLATED CLOUD OR FRAGMENTS OF CLOUD
+1 1 CONTINUOUS CLOUD
+2 2 BROKEN CLOUD - SMALL BREAKS, FLAT TOPS
+3 3 BROKEN CLOUD - LARGE BREAKS, FLAT TOPS
+4 4 CONTINUOUS CLOUD
+5 5 BROKEN CLOUD - SMALL BREAKS, UNDULATED TOPS
+6 6 BROKEN CLOUD - LARGE BREAKS, UNDULATED TOPS
+7 7 CONTINUOUS OR ALMOST CONTINUOUS WAVES WITH TOWERING CLOUDS A"    BOVE THE TOP OF THE LAYER
+8 8 GROUPS OF WAVES WITH TOWERING CLOUDS ABOVE THE TOP OF THE LA"    YER
+9 9 TWO OR MORE LAYERS AT DIFFERENT LEVELS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20018.table b/definitions/bufr/tables/0/wmo/9/codetables/20018.table
new file mode 100644
index 0000000..c0ffc36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20018.table
@@ -0,0 +1,4 @@
+0 0 INCREASING (U)
+1 1 DECREASING (D)
+2 2 NO DISTINCT CHANGE (N)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2002.table b/definitions/bufr/tables/0/wmo/9/codetables/2002.table
new file mode 100644
index 0000000..9b8469f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2002.table
@@ -0,0 +1,4 @@
+0 0 MEASURED IN M S-1 UNLESS OTHERWISE INDICATED
+1 1 CERTIFIED INSTRUMENTS
+2 2 ORIGINALY MEASURED IN KNOTS
+3 3 ORIGINALY MEASURED IN KM/H
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20021.table b/definitions/bufr/tables/0/wmo/9/codetables/20021.table
new file mode 100644
index 0000000..d9f7226
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20021.table
@@ -0,0 +1,24 @@
+1 1 PRECIPITATION-UNKNOWN TYPE
+2 2 LIQUID PRECIPITATION NOT FREEZING
+3 3 LIQUID FREEZING PRECIPITATION
+4 4 DRIZZLE
+5 5 RAIN
+6 6 SOLID PRECIPITATION
+7 7 SNOW
+8 8 SNOW GRAINS
+9 9 SNOW PELLETS
+10 10 ICE PELLETS
+11 11 ICE CRYSTALS
+12 12 DIAMOND DUST
+13 13 SMALL HAIL
+14 14 HAIL
+15 15 GLAZE
+16 16 RIME
+17 17 SOFT RIME
+18 18 HARD RIME
+19 19 CLEAR ICE
+20 20 WET SNOW
+21 21 HOAR FROST
+22 22 DEW
+23 23 WHITE DEW
+30 30 ALL 30 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20022.table b/definitions/bufr/tables/0/wmo/9/codetables/20022.table
new file mode 100644
index 0000000..a551aac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20022.table
@@ -0,0 +1,7 @@
+0 0 NO PRECIPITATION
+1 1 CONTINUOUS
+2 2 INTERMITTENT
+3 3 SHOWER
+4 4 NOT REACHING GROUND
+5 5 DEPOSITION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20023.table b/definitions/bufr/tables/0/wmo/9/codetables/20023.table
new file mode 100644
index 0000000..9e2093a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20023.table
@@ -0,0 +1,12 @@
+1 1 DUST/SAND WHIRL
+2 2 SQUALLS
+3 3 SAND STORM
+4 4 DUST STORM
+5 5 LIGHTNING - CLOUD TO SURFACE
+6 6 LIGHTNING - CLOUD TO CLOUD
+7 7 LIGHTNING - DISTANT
+8 8 THUNDERSTORM
+9 9 FUNNEL CLOUD NOT TOUCHING SURFACE
+10 10 FUNNEL CLOUD TOUCHING SURFACE
+11 11 SPRAY
+12 12 WATER-SPOUT
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20024.table b/definitions/bufr/tables/0/wmo/9/codetables/20024.table
new file mode 100644
index 0000000..d21d786
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20024.table
@@ -0,0 +1,7 @@
+0 0 NO PHENOMENA
+1 1 LIGHT
+2 2 MODERATE
+3 3 HEAVY
+4 4 VIOLENT
+5 5 SEVERE (VAL)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20025.table b/definitions/bufr/tables/0/wmo/9/codetables/20025.table
new file mode 100644
index 0000000..e05d542
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20025.table
@@ -0,0 +1,11 @@
+1 1 FOG
+2 2 ICE FOG
+3 3 STEAM FOG
+7 7 MIST
+8 8 HAZE
+9 9 SMOKE
+10 10 VOLCANIC ASH
+11 11 DUST
+12 12 SAND
+13 13 SNOW
+21 21 ALL 21 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20026.table b/definitions/bufr/tables/0/wmo/9/codetables/20026.table
new file mode 100644
index 0000000..541f94b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20026.table
@@ -0,0 +1,14 @@
+0 0 NO CHANGE
+1 1 SHALLOW
+2 2 PATCHES
+3 3 PARTIAL
+4 4 FREEZING
+5 5 LOW DRIFTING
+6 6 BLOWING
+7 7 INCREASING
+8 8 DECREASING
+9 9 IN SUSPENSION IN THE AIR
+10 10 WALL
+11 11 DENSE
+12 12 WHITEOUT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20027.table b/definitions/bufr/tables/0/wmo/9/codetables/20027.table
new file mode 100644
index 0000000..4d816ae
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20027.table
@@ -0,0 +1,7 @@
+1 1 AT TIME OF OBSERVATION
+2 2 IN PAST HOUR
+3 3 IN TIME PERIOD FOR PAST WEATHER W1W2
+4 4 IN TIME PERIOD SPECIFIED
+6 6 BELOW STATION LEVEL
+7 7 AT THE STATION
+8 8 IN THE VICINITY
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20029.table b/definitions/bufr/tables/0/wmo/9/codetables/20029.table
new file mode 100644
index 0000000..8b46da8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20029.table
@@ -0,0 +1,4 @@
+0 0 NO RAIN
+1 1 RAIN
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2003.table b/definitions/bufr/tables/0/wmo/9/codetables/2003.table
new file mode 100644
index 0000000..cdb2cb5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2003.table
@@ -0,0 +1,12 @@
+0 0 PRESSURE INSTRUMENT ASSOCIATED WITH WIND-MEASURING EQUIPMENT
+1 1 OPTICAL THEODOLITE
+2 2 RADIO THEODOLITE
+3 3 RADAR
+4 4 VLF-OMEGA
+5 5 LORAN C
+6 6 WIND PROFILER
+7 7 SATELLITE NAVIGATION
+8 8 RADIO-ACOUSTIC SOUNDING SYSTEM (RASS)
+9 9 SODAR
+14 14 PRESSURE INSTRUMENT ASSOCIATED WITH WIND MEASUREMENT EQUIPME"    NT BUT PRESSURE ELEMENT FAILED DURING ASCENT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20032.table b/definitions/bufr/tables/0/wmo/9/codetables/20032.table
new file mode 100644
index 0000000..87ac945
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20032.table
@@ -0,0 +1,6 @@
+0 0 ICE NOT BUILDING UP
+1 1 ICE BUILDING UP SLOWLY
+2 2 ICE BUILDING UP QUICKLY
+3 3 ICE MELTING OR BREAKING UP SLOWLY
+4 4 ICE MELTING OR BREAKING UP RAPIDLY
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20033.table b/definitions/bufr/tables/0/wmo/9/codetables/20033.table
new file mode 100644
index 0000000..6cc31fc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20033.table
@@ -0,0 +1,4 @@
+1 1 ICING FROM OCEAN SPRAY
+2 2 ICING FROM FOG
+3 3 ICING FROM RAIN
+4 4 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20034.table b/definitions/bufr/tables/0/wmo/9/codetables/20034.table
new file mode 100644
index 0000000..97199d8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20034.table
@@ -0,0 +1,12 @@
+0 0 NO SEA ICE IN SIGHT
+1 1 SHIP IN OPEN LEAD MORE THAN 1.0 NAUTICAL MILE WIDE, OR SHIP"    IN FAST ICE WITH BOUNDARY BEYOND LIMIT OF VISIBILITY
+2 2 SEA ICE PRESENT IN CONCETRATION LESS THAN 3/10 (3/8), OPEN W"    ATER OR VERY OPEN PACK ICE, SEA ICE CONCETRATION IS UNIFORM"    IN THE OBSERVATION AR
+3 3 4/10 TO 6/10 (3/8 TO LESS THAN 6/8) ,OPEN PACK ICE, SEA ICE"    CONCETRATION IS UNIFORM IN THE OBSERVATION AREA, SHIP IN ICE"     OR WITHIN 0.5 NAUTIC
+4 4 7/10 TO 8/10 (6/8 TO LESS THAN 7/8), CLOSE PACK ICE, SEA ICE"     CONCETRATION IS UNIFORM IN THE OBSERVATION AREA, SHIP IN IC"     E OR WITHIN 0.5 NAU
+5 5 9/10 OR MORE, BUT NOT 10/10 (7/8 TO LESS THAN 8/8), VERY CLO"    SE PACK ICE, SEA ICE CONCETRATION IS UNIFORM IN THE OBSERVAT"    ION AREA, SHIP IN IC
+6 6 STRIPS AND PATCHES OF PACK ICE WITH OPEN WATER BETWEEN, SEA"    ICE CONCENTRATION IS NOT UNIFORM IN THE OBSERVATION AREA, SH"    IP IN ICE OR WITHIN 0
+7 7 STRIPS AND PATCHES OF CLOSE OR VERY CLOSE PACK ICE WITH AREA"    S OF LESSER CONCENTRATION BETWEEN, SEA ICE CONCETRATION IS N"    OT UNIFORM IN THE OB
+8 8 FAST ICE WITH OPEN WATER,VERY OPEN OR OPEN PACK ICE TO SEAWA"    RD OF THE ICE BOUNDARY, SEA ICE CONCENTRATION IS NOT UNIFORM"     IN THE OBSERVATION 
+9 9 FAST ICE CLOSE OR VERY CLOSE PACK ICE TO SEAWARD OF THE ICE"    BOUNDARY, SEA ICE CONCETRATION IS NOT UNIFORM IN THE OBSERVA"    TION AREA, SHIP IN IC
+14 14 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY, O"    R BECAUSE SHIP IS MORE THAN 0.5 NAUTICAL MILE AWAY FROM ICE"    EDGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20035.table b/definitions/bufr/tables/0/wmo/9/codetables/20035.table
new file mode 100644
index 0000000..8229f90
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20035.table
@@ -0,0 +1,12 @@
+0 0 NO ICE OF LAND ORIGIN
+1 1 1-5 ICEBERGS, NO GROWLERS OR BERGY BITS
+2 2 6-10 ICEBERGS, NO GROWLERS OR BERGY BITS
+3 3 11-20 ICEBERGS, NO GROWLERS OR BERGY BITS
+4 4 UP TO AND INCLUDING 10 GROWLERS AND BERGY BITS - NO ICEBERGS
+5 5 MORE THAN 10 GROWLERS AND BERGY BITS - NO ICEBERGS
+6 6 1-5 ICEBERGS, WITH GROWLERS AND BERGY BITS
+7 7 6-10 ICEBERGS, WITH GROWLERS AND BERGY BITS
+8 8 11-20 ICEBERGS, WITH GROWLERS AND BERGY BITS
+9 9 MORE THAN 20 ICEBERGS,WITH GROWLERS AND BERGY BITS - A MAJOR"    HAZARD TO NAVIGATION
+14 14 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY OR"    BECAUSE ONLY SEA ICE IS VISIBLE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20036.table b/definitions/bufr/tables/0/wmo/9/codetables/20036.table
new file mode 100644
index 0000000..69c1c36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20036.table
@@ -0,0 +1,12 @@
+0 0 SHIP IN OPEN WATER WITH FLOATING ICE IN SIGHT
+1 1 SHIP IN EASILY PENETRABLE ICE; CONDITIONS IMPROVING
+2 2 SHIP IN EASILY PENETRABLE ICE; CONDITIONS NOT CHANGING
+3 3 SHIP IN EASILY PENETRABLE ICE; CONDITIONS WORSENING
+4 4 SHIP IN ICE DIFFICULT TO PENETRATE; CONDITIONS IMPROVING
+5 5 SHIP IN ICE DIFFICULT TO PENETRATE; CONDITIONS NOT CHANGING
+6 6 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."    ICE FORMING AND FLOES FREEZING TOGETHAR
+7 7 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."    ICE UNDER SLIGHT PRESSURE
+8 8 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."    ICE UNDER MODERATE OR SEVERE PRESSURE
+9 9 SHIP IN ICE DIFFICULT TO PENETRATE AND CONDITIONS WORSENING."     SHIP BESET.
+30 30 UNABLE TO REPORT, BECAUSE OF DARKNESS OR LACK OF VISIBILITY
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20037.table b/definitions/bufr/tables/0/wmo/9/codetables/20037.table
new file mode 100644
index 0000000..ea3a1df
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20037.table
@@ -0,0 +1,12 @@
+0 0 NEW ICE ONLY (FRAZIL ICE, GREASE ICE, SLUSH, SHUGA)
+1 1 NILAS OR ICE RIND, LESS THAN 10 CM THICK
+2 2 YOUNG ICE(GREY ICE, GREY-WHITE ICE
+3 3 PREDOMINANTLY NEW AND/OR YOUNG ICE WITH SOME FIRST-YEAR ICE
+4 4 PREDOMINANTLY THIN FIRST-YEAR ICE WITH SOME NEW AND/OR YOUNG"     ICE
+5 5 ALL THIN FIRST-YEAR ICE (30-70 CM THICK)
+6 6 PREDOMINANTLY MEDIUM FIRST-YEAR ICE"    (70-120 CM THICK) AND THICK FIRST-YEAR ICE (>120 CM
+7 7 ALL MEDIUM AND THICK FIRST-YEAR ICE
+8 8 PREDOMINANTLY MEDIUM AND THICK FIRST-YEAR ICE WITH SOME"    OLD ICE (USUALLY MORE THAN 2 METRES THICK)
+9 9 PREDOMINANTLY OLD ICE
+30 30 UNABLE TO REPORT, BECAUSE OF DARKNESS, LACK OF VISIBILITY OR"    BECAUSE ONLY ICE OF LAND ORIGIN IS VISIBLE OR BECAUSE SHIP I"    S MORE THAN 0.5 NAUT
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2004.table b/definitions/bufr/tables/0/wmo/9/codetables/2004.table
new file mode 100644
index 0000000..b83f216
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2004.table
@@ -0,0 +1,11 @@
+0 0 USA OPEN PAN EVAPORIMETER (WITHOUT COVER)
+1 1 USA OPEN PAN EVAPORIMETER (MESH COVERED)
+2 2 GGI-300 EVAPORIMETER (SUNKEN)
+3 3 20 M**2 TANK
+4 4 OTHERS
+5 5 RICE
+6 6 WHEAT
+7 7 MAIZE
+8 8 SORGHUM
+9 9 OTHER CROPS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20040.table b/definitions/bufr/tables/0/wmo/9/codetables/20040.table
new file mode 100644
index 0000000..32b4ebd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20040.table
@@ -0,0 +1,9 @@
+0 0 DRIFT SNOW ENDED BEFORE THE HOUR OF OBSERVATION
+1 1 INTENSITY DIMINISHING
+2 2 NO CHANGE
+3 3 INTENSITY INCREASING
+4 4 CONTINUES, APART FROM INTERRUPTION LASTING LESS THAN 30 MINU"    TES
+5 5 GENERAL DRIFT SNOW HAS BECOME DRIFT SNOW NEAR THE GROUND
+6 6 DRIFT SNOW NEAR THE GROUND HAS BECOME GENERAL DRIFT SNOW
+7 7 DRIFT SNOW HAS STARTED AGAIN AFTER AN INTERRUPTION OF MORE T"    HAN 30 MINUTES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20041.table b/definitions/bufr/tables/0/wmo/9/codetables/20041.table
new file mode 100644
index 0000000..5e5ee64
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20041.table
@@ -0,0 +1,11 @@
+0 0 NO ICING
+1 1 LIGHT ICING
+2 2 LIGHT ICING IN CLOUD
+3 3 LIGHT ICING IN PRECIPITATION
+4 4 MODERATE ICING
+5 5 MODERATE ICING IN CLOUD
+6 6 MODERATE ICING IN PRECIPITATION
+7 7 SEVERE ICING
+8 8 SEVERE ICING IN CLOUD
+9 9 SEVERE ICING IN PRECIPITATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20042.table b/definitions/bufr/tables/0/wmo/9/codetables/20042.table
new file mode 100644
index 0000000..2493af7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20042.table
@@ -0,0 +1,4 @@
+0 0 NO ICING
+1 1 ICING PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20045.table b/definitions/bufr/tables/0/wmo/9/codetables/20045.table
new file mode 100644
index 0000000..91ae63f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20045.table
@@ -0,0 +1,4 @@
+0 0 NO SLD CONDITIONS PRESENT
+1 1 SLD CONDITIONS PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20050.table b/definitions/bufr/tables/0/wmo/9/codetables/20050.table
new file mode 100644
index 0000000..3f8654e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20050.table
@@ -0,0 +1,10 @@
+0 0 RESERVED
+1 1 1ST LOW CLOUD
+2 2 2ND LOW CLOUD
+3 3 3RD LOW CLOUD
+4 4 1ST MEDIUM CLOUD
+5 5 2ND MEDIUM CLOUD
+6 6 3RD MEDIUM CLOUD
+7 7 1ST HIGH CLOUD
+8 8 2ND HIGH CLOUD
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20055.table b/definitions/bufr/tables/0/wmo/9/codetables/20055.table
new file mode 100644
index 0000000..cf3be5f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20055.table
@@ -0,0 +1,11 @@
+0 0 CUMULUS, IF ANY, ARE QUITE SMALL
+1 1 CUMULUS OF INTERMEDIATE SIZE
+2 2 SWELLING CUMULUS
+3 3 SWELLING CUMULUS WITH TOWERS
+4 4 SWELLING CUMULUS WITH TOWERS HAVING PRONOUNCED TILT
+5 5 TALL CUMULUS CONGESTUS
+6 6 ISOLATED CUMULONIMBUS
+7 7 NUMEROUS CUMULONIMBUS
+8 8 CONTINUOUS DENSE MIDDLE CLOUDS
+9 9 CONTINUOUS SHEETS OF MIDDLE CLOUDS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20056.table b/definitions/bufr/tables/0/wmo/9/codetables/20056.table
new file mode 100644
index 0000000..6598473
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20056.table
@@ -0,0 +1,5 @@
+0 0 UNKNOWN
+1 1 WATER
+2 2 ICE
+3 3 MIXED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20062.table b/definitions/bufr/tables/0/wmo/9/codetables/20062.table
new file mode 100644
index 0000000..aba68ad
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20062.table
@@ -0,0 +1,21 @@
+0 0 SURFACE OF GROUND DRY (WITHOUT CRACKS AND NO APPRECIABLE"    AMOUNT OF DUST OR LOOSE SAND)
+1 1 SURFACE OF GROUND MOIST
+2 2 SURFACE OF GROUND WET (STANDING WATER IN SMALL"    OR LARGE POOLS ON SURFACE)
+3 3 FLOODED WITHOUT SNOW
+4 4 SURFACE OF GROUND FROZEN MEASURABLE ICE
+5 5 GLAZE ON GROUND COVER
+6 6 LOOSE DRY DUST OR SAND NOT COVERING GROUND COMPLETELY
+7 7 THIN COVER OF LOOSE DRY DUST OR SAND COVERING GROUND COMPLET"    ELY
+8 8 MODERATE OR THICK COVER OF LOOSE DRY DUST OR SAND COVERING"    GROUND COMPLETELY
+9 9 EXTREMELY DRY WITH CRACKS
+10 10 GROUND PREDOMINANTLY COVERED BY ICE
+11 11 COMPACT OR WET SNOW (WITH OR WITHOUT ICE) COVERING LESS THAN"    ONE-HALF OF THE GROUND
+12 12 COMPACT OR WET SNOW (WITH OR WITHOUT ICE) COVERING AT LEAST"    ONE-HALF OF THE GROUND BUT GROUND NOT COMPLETELY COVERED
+13 13 EVEN LAYER OF COMPACT OR WET SNOW COVERING GROUND COMPLETELY
+14 14 UNEVEN LAYER OF COMPACT OR WET SNOW COVERING GROUND"    WITH SNOW OR COMPLETELY MEASURABLE ICE
+15 15 LOOSE DRY SNOW COVERING LESS THAN ONE-HALF OF THE GROUND COV"    ER
+16 16 LOOSE DRY SNOW COVERING AT LEAST ONE-HALF OF THE"    GROUND (BUT NOT COMPLETELY)
+17 17 EVEN LAYER OF LOOSE DRY SNOW COVERING GROUND COMPLETELY
+18 18 UNEVEN LAYER OF LOOSE DRY SNOW COVERING GROUND COMPLETELY
+19 19 SNOW COVERING GROUND COMPLETELY; DEEP DRIFTS
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20063.table b/definitions/bufr/tables/0/wmo/9/codetables/20063.table
new file mode 100644
index 0000000..71cb125
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20063.table
@@ -0,0 +1 @@
+0 0 TO BE DEVELOPED
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20071.table b/definitions/bufr/tables/0/wmo/9/codetables/20071.table
new file mode 100644
index 0000000..bc9d6f6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20071.table
@@ -0,0 +1,11 @@
+0 0 NO ASSESSMENT            NO ASSESSMENT
+1 1 LESS THAN 50 KM          LESS THAN 1 PER SECOND
+2 2 BETWEEN 50 AND 200 KM    LESS THAN 1 PER SECOND
+3 3 MORE THAN 200 KM         LESS THAN 1 PER SECOND
+4 4 LESS THAN 50 KM          1 OR MORE PER SECOND
+5 5 BETWEEN 50 AND 200 KM    1 OR MORE PER SECOND
+6 6 MORE THAN 200 KM         1 OR MORE PER SECOND
+7 7 LESS THANK 50 KM         RATE SO RAPID NUMBER CANNOT BE COUN"    TED
+8 8 BETWEEN 50 AND 200 KM    RATE SO RAPID NUMBER CANNOT BE COUN"    TED
+9 9 MORE THAN 200 KM         RATE SO RAPID NUMBER CANNOT BE COUN"    TED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20086.table b/definitions/bufr/tables/0/wmo/9/codetables/20086.table
new file mode 100644
index 0000000..c820dcb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20086.table
@@ -0,0 +1,8 @@
+0 0 CLEAR AND DRY
+1 1 DAMP
+5 5 WET SNOW
+6 6 SLUSH
+7 7 ICE
+8 8 COMPACTED OR ROLLED SNOW
+9 9 FROZEN RUTS OR RIDGES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20090.table b/definitions/bufr/tables/0/wmo/9/codetables/20090.table
new file mode 100644
index 0000000..a33a9d0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20090.table
@@ -0,0 +1,7 @@
+0 0 RESERVED
+1 1 NACREOUS CLOUDS
+2 2 NOCTILUCENT CLOUDS
+3 3 CLOUDS FROM WATERFALLS
+4 4 CLOUDS FROM FIRES
+5 5 CLOUDS FROM VULCANIC ERUPTIONS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20101.table b/definitions/bufr/tables/0/wmo/9/codetables/20101.table
new file mode 100644
index 0000000..7e2fa15
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20101.table
@@ -0,0 +1,10 @@
+1 1 SCHISTOCERCA GREGARIA
+2 2 LOCUSTA MIGRATORIA
+3 3 NOMADACRIS SEPTEMFASCIATA
+4 4 OEDALEUS SENAGALENSIS
+5 5 ANRACRIDIUM SPP
+6 6 OTHER LOCUST
+7 7 OTHER GRASSHOPPERS
+8 8 ITHER CRICKETS
+9 9 SPODOPTERA EXEMPTA
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/20102.table b/definitions/bufr/tables/0/wmo/9/codetables/20102.table
new file mode 100644
index 0000000..fae1feb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/20102.table
@@ -0,0 +1,11 @@
+0 0 GREEN
+1 1 GREEN AND BLACK
+2 2 BLACK
+3 3 YELLOW AND BLACK
+4 4 STRAW/GREY
+5 5 PINK
+6 6 DARK RED/BROWN
+7 7 MIXED RED AND YELLOW
+8 8 YELLOW
+9 9 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2011.table b/definitions/bufr/tables/0/wmo/9/codetables/2011.table
new file mode 100644
index 0000000..f794c4f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2011.table
@@ -0,0 +1,54 @@
+0 0 RESERVED
+1 1 RESERVED
+2 2 NO RADIOSONDE-PASSIVE TARGET(E.G.REFLECTOR)
+3 3 NO RADIOSONDE-ACTIVE TARGET(E.G.TRANSPONDER)
+4 4 NO RADIOSONDE-PASSIVE TEMPERATURE-HUMIDITY PROFILER
+5 5 NO RADIOSONDE-ACTIVE TEMPERATURE-HUMIDITY PROFILER
+6 6 NO RADIOSONDE-RADIO ACOUSTIC SOUNDER
+9 9 NO RADIOSONDE-SYSTEM UNKNOWN OR NOT SPECIFIED
+10 10 RS VIZ TYPE A (USA)
+11 11 RS VIZ TYPE B (USA)
+12 12 RS SDC (SPACE DATA CORPORATION-USA)
+13 13 ASTOR (NO LONGER MADE-AUSTRALIA)
+14 14 VIZ MARK I MICROSONDE(USA)
+15 15 EEC COMPANY TYPE 23 (USA)
+16 16 ELIN (AUSTRIA)
+17 17 GRAW G. (GERMANY)
+19 19 GRAW M60 (GERMANY)
+20 20 INDIAN MET SERVICE MK3 (INDIA)
+21 21 VIZ/JIN YANG MARK I MICROSONDE(SOUTH KOREA)
+22 22 MEISEI RS2-80 (JAPAN)
+23 23 MESURAL FMO 1950A (FRANCE)
+24 24 MESURAL FMO 19455A (FRANCE)
+25 25 MESURAL MH73A (FRANCE)
+26 26 METEOLABOR BASORA (SWITZERLAND)
+27 27 AVK-MRZ (USSR)
+28 28 METEORIT MARZ2-1 (USSR)
+29 29 METEIRIT MARZ2-2 (USSR)
+30 30 OKI RS2-80 (JAPAN)
+31 31 VIZ/VALCOM TYPE A PRESSURE-COMMUTATED(CANADA)
+32 32 SHANGAI RADIO (CHINA)
+33 33 UK MET OFFICE MK3( UK)
+34 34 VINOHRADY(CZECHOSLOVAKIA)
+35 35 VAISALA RS18 (FINLAND)
+36 36 VAISALA RS21 (FINLAND)
+37 37 VAISALA RS80 (FINLAND)
+38 38 VIZ LOCATE (LORAN-C)(USA)
+39 39 SPRENGER E076 (GERMANY)
+40 40 SPRENGER E084 (GERMANY)
+41 41 SPRENGER E085 (GERMANY)
+42 42 SPRENGER E086 (GERMANY)
+43 43 AIR IS -4A-1680 (UK)
+44 44 AIR IS -4A-1680 X (UK)
+45 45 RS MSS(USA)
+46 46 AIR IS -4A-403(USA)
+47 47 MEISLEI RS2-91(JAPAN)
+48 48 VALCOM(CANADA)
+49 49 VIZ MARK II(USA)
+60 60 VAISALA RS80/MICROCORA (FINLAND)
+61 61 VAISALA RS80/DIGCORA OR MARWIN (FINLAND)
+62 62 VAISALA RS80/PCCORA (FINLAND)
+63 63 VAISALA RS80/STAR (FINLAND)
+64 64 ORBITAL,SCIENCE CORPORATION,SPACE DATA DIVISION,TRANSPONDER"     RADIOSONDE,TYPE 909-11-XX,WHERE XX CORRECPOND TO THE MODEL"    OF THE INSTRUMENT
+65 65 VIZ TRANSPONDER RADIOSONDE,MODEL NUMBER 1499-520(USA)
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2012.table b/definitions/bufr/tables/0/wmo/9/codetables/2012.table
new file mode 100644
index 0000000..71cb125
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2012.table
@@ -0,0 +1 @@
+0 0 TO BE DEVELOPED
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2013.table b/definitions/bufr/tables/0/wmo/9/codetables/2013.table
new file mode 100644
index 0000000..a5df80f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2013.table
@@ -0,0 +1,9 @@
+0 0 NO CORRECTION
+1 1 CIMO SOLAR CORRECTED AND CIMO INFRARED CORRECTED
+2 2 CIMO SOLAR CORRECTED AND IFRARED CORRECTED
+3 3 CIMO SOLAR CORRECTED ONLY
+4 4 SOLAR AND INFRARED CORRECTED AUTOMATICALLY BY RADIOSONDE SY"    STEM
+5 5 SOLAR CORRECTED AUTOMATICALLY BY RADIOSONDE SYSTEM
+6 6 SOLAR AND INFRARED CORRECTED AS SPECIFIED BY COUNTRY
+7 7 SOLAR CORRECTED AS SPECIFIED BY COUNTRY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2014.table b/definitions/bufr/tables/0/wmo/9/codetables/2014.table
new file mode 100644
index 0000000..409caa4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2014.table
@@ -0,0 +1,50 @@
+0 0 NO WINDFINDING
+1 1 AUTOMATIC WITH AUXILIARY OPTICAL DIRECTION FINDING
+2 2 AUTOMATIC WITH AUXILIARY RADIO DIRECTION FINDING
+3 3 AUTOMATIC WITH AUXILIARY RANGING
+4 4 NOT USED
+5 5 AUTOMATIC WITH MULTIPLE VLF-OMEGA SIGNALS
+6 6 AUTOMATIC CROSS CHAIN LORAN-C
+7 7 AUTOMATIC WITH AUXILIARY WIND PROFILER
+8 8 AUTOMATIC SATELLITE NAVIGATION
+19 19 TRACKING TECHNIQUE NOT SPECIFIED
+20 20 VESSEL STOPPED
+21 21 VESSEL DIVERTED FROM ORIGINAL DESTINATION
+22 22 VESSEL'S ARRIVAL DELAYED
+23 23 CONTAINER DAMAGED
+24 24 POWER FAILURE TO CONTAINER
+29 29 OTHER PROBLEMS
+30 30 MAJOR POWER PROBLEMS
+31 31 UPS INOPERATIVE
+32 32 RECEIVER HARDWARE PROBLEMS
+33 33 RECEIVER SOFTWARE PROBLEMS
+34 34 PROCESSOR HARDWARE PROBLEMS
+35 35 PROCESSOR SOFTWARE PROBLEMS
+36 36 NAVAID SYSTEM DAMAGED
+37 37 SHORTAGE OF LIFTING GAS
+39 39 OTHER PROBLEMS
+40 40 MECHANICAL DEFECT
+41 41 MATERIAL DEFECT (HAND LAUNCHER)
+42 42 POWER FAILURE
+43 43 CONTROL FAILURE
+44 44 PNEUMATIC/HYDRAULIC FAILURE
+45 45 OTHER PROBLEMS
+46 46 COMPRESSOR PROBLEMS
+47 47 BALLOON PROBLEMS
+48 48 BALLOON RELEASE PROBLEMS
+49 49 LAUNCHER DAMAGED
+50 50 R/S RECEIVER ANTENNA DEFECT
+51 51 NAVAID ANTENNA DEFECT
+52 52 R/S RECEIVER CABLING (ANTENNA DEFECT)
+53 53 NAVAID ANTENNA CABLING DEFECT
+59 59 OTHER PROBLEMS
+60 60 ASAP COMMUNICATIONS DEFECT
+61 61 COMMUNICATIONS FACILITY REJECTED DATA
+62 62 NO POWER AT TRANSMITTINGANTENN
+63 63 ANTENNA CABLE BROKEN
+64 64 ANTENNA CABLE DEFECT
+65 65 MESSAGE TRANSMITTED POWER BELOW NORMAL
+69 69 OTHER PROBLEMS
+70 70 ALL SYSTEMS IN NORMAL OPERATION
+99 99 STATUS OF SYSTEM AND ITS COMPONENTS NOT SPECIFIED
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2015.table b/definitions/bufr/tables/0/wmo/9/codetables/2015.table
new file mode 100644
index 0000000..007a096
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2015.table
@@ -0,0 +1,6 @@
+1 1 PRESSURE ONLY RADIOSONDE
+2 2 PRESSURE ONLY RADIOSONDE PLUS TRANSPONDER
+3 3 PRESSURE ONLY RADIOSONDE PLUS RADAR REFLECTOR
+4 4 NO PRESSURE RADIOSONDE PLUS TRANSPONDER
+5 5 NO PRESSURE RADIOSONDE PLUS RADAR REFLECTOR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2016.table b/definitions/bufr/tables/0/wmo/9/codetables/2016.table
new file mode 100644
index 0000000..4a30226
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2016.table
@@ -0,0 +1,4 @@
+1 1 TRAIN REGULATOR
+2 2 LIGHT UNIT
+3 3 PARACHUTE
+4 4 ROOFTOP RELEASE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2019.table b/definitions/bufr/tables/0/wmo/9/codetables/2019.table
new file mode 100644
index 0000000..3ddc721
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2019.table
@@ -0,0 +1,296 @@
+10 10 BNSC    RADIOMETER      AATSR   ADVANCED ALONG TRACK SCANNIN"    G RADIOMETER
+11 11 BNSC    RADIOMETER      ATSR    ALONG TRACK SCANNING RADIOME"    TER
+12 12 BNSC    RADIOMETER      ATSR-2  ALONG TRACK SCANNING RADIOME"    TER  -2
+13 13 BNSC    RADIOMETER      MWR     MICROWAVE RADIOMETER
+30 30 CNES    COMMUNICATIONS  ARGOS
+40 40 CNES    LIDAR   LASER REFLECTORS
+41 41 CNES    LIDAR   DORIS   DOPPLER ORBITOGRAPHY AND RADIO-POSIT"    IONING INTEGRATED BY SATELLITE
+42 42 CNES    LIDAR   DORIS-NG        DOPPLER ORBITOGRAPHY AND RAD"    IO-POSITIONING INTEGRATED BY SATELLITE-NG
+47 47 CNES    RADAR ALTIMETERS        POSEIDON-1 (SSALT-1)    POSI"    TIONING OCEAN SOLID EARTH ICE DYNAMICS ORBITING NAVIGATOR (S"    INGLE FREQUENCY SOLI
+48 48  CNES    RADAR ALTIMETERS        POSEIDON-2 (SSALT-2)   POSI"    TIONING OCEAN SOLID EARTH ICE DYNAMICS ORBITING NAVIGATOR (D"    UAL FREQUENCY SOLID 
+50 50 CNES    IMAGER RADIOMETER       ATSR/M  ATSR/M
+51 51 CNES    HIGH RESOLUTION OPTICAL IMAGERS HRG
+52 52 CNES    RADIOMETER      HRV     HIGH RESOLUTION VISIBLE
+53 53 CNES    RADIOMETER      HRVIR   HIGH RESOLUTION VISIBLE AND"            INFRA-RED
+54 54 CNES    RADIOMETER      SCARAB/MV2      SCANNER FOR EARTH'S"            RADIATION BUDGET
+55 55 CNES    RADIOMETER      POLDER  POLDER
+60 60 CNES    SPECTROMETER    VEGETATION      VEGETATION
+61 61 CNES    SPECTROMETER    WINDII  WINDII
+80 80 CSA     COMMUNICATIONS  RADARSAT DTT
+81 81 CSA     COMMUNICATIONS  RADARSAT TTC
+85 85 CSA     RADAR   SAR (CSA)       SYNTHETIC APERTURE RADAR (CS"    A)
+90 90 CSA     RADIOMETER      MOPITT  MEASUREMENTS OF POLLUTION IN"     THE TROPOSPHERE
+91 91 CSA     CHEMISTRY INSTRUMENTS   OSIRIS  OPTICAL SPECTROGRAPH"     AND INFRA-RED IMAGING SYSTEM
+97 97 CSIRO   RADIOMETER      PANCHROMATIC IMAGER
+98 98 CRCSS   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   GPS"    RECEIVER
+102 102 DLR     RADIOMETER      CHAMP GPS SOUNDER       GPS TURBORO"    GUE SPACE RECEIVER (TRSR)
+103 103 UNKNOWN
+116 116 DLR MAGNETOMETER    IGOR CHAMP GRAVITY PACKAGE (ACCELEROMETE"    R+GPS)       INTEGRATED GPS AND OCCULTATION RECEIVER STAR AC"    CELEROMETER
+117 117 DLR     MAGNETOMETER    CHAMP MAGNETOMETRY PACKAGE (1 SCALAR"    +2 VECTOR MAGNETOMETER)     OVERHAUSER MAGNETOMETER (OVM) AN"    D FLUXGATE MAGNETOME
+120 120 ESA     COMMUNICATIONS  ENVISAT COMMS   COMMUNICATIONS PACKA"    GE ON ENVISAT
+121 121 ESA     COMMUNICATIONS  ERS COMMS       COMMUNICATION PACKAG"    E FOR ERS
+130 130 ESA     LIDARS  ALADIN  ATMOSPHERIC LASER DOPPLER INSTRUMENT
+131 131 ESA     LIDARS  ATLID   ATMOSPHERIC LIDAR
+140 140 ESA     RADAR   AMI/SAR/IMAGE   ACTIVE MICROWAVE INSTRUMENTA"    TION. IMAGE MODE
+141 141 ESA     RADAR   AMI/SAR/WAVE    ACTIVE MICROWAVE INSTRUMENTA"    TION. WAVE MODE
+142 142 ESA     RADAR   AMI/SCATTEROMETER       ACTIVE MICROWAVE INS"    TRUMENTATION. WIND MODE
+143 143 ESA     RADAR   ASAR    ASAR
+144 144 ESA     IMAGING MICROWAVE RADARS        ASAR    ADVANCED SYN"    TETIC APERTURA RADAR (IMAGE MODE)
+145 145 ESA     IMAGING MICROWAVE RADARS        ASAR    ADVANCED SYN"    TETIC APERTURA RADAR (WAVE MODE)
+146 146 ESA     CLOUD PROFILE AND RAIN RADARS   CPR     CLOUD RADAR
+147 147 ESA     RADAR   RA-2/MWR        RADAR ALTIMETER - 2
+148 148 ESA     RADAR   RA/MWR  RADAR ALTIMETER
+150 150 ESA     SCATTEROMETERS  SCATTEROMETER   SCATTEROMETER
+161 161 ESA     RADIOMETER      MIPAS   MICHELSON INTERFEROMETRIC PA"    SSIVE ATMOSPHERE SOUNDER
+162 162 ESA     IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E   MWR-2   MICROWAVE RADIOMETER-2
+163 163 ESA     ATMOSPHERIC CHEMISTRY INSTRUMENTS       SOPRANO SUB-"    MILIMETRE OBSERVATION OF PROCESSES IN THE ABSORPTION NOTEWOR"    THY FOR OZONE
+170 170 ESA     ATMOSPHERIC CHEMISTRY INSTRUMENTS       GOME I  GLOB"    AL OZONE MONITORING EXPERIMENT
+172 172 ESA     SPECTROMETER    GOMOS   GLOBAL OZONE MONITORING BY O"    CCULTATION OF STARS
+174 174 ESA     SPECTROMETER    MERIS   MEDIUM RESOLUTION IMAGING SP"    ECTROMETER
+175 175 ESA     SPECTROMETER    SCIAMACHY       SCANNING IMAGING ABS"    ORPTION SPECTROMETER FOR ATMOSPHERIC CARTOGRAPHY
+181 181 EUMETSAT        COMMUNICATIONS  METEOSAT COMMS  COMMUNICATIO"    NS PACKAGE FOR METEOSAT
+182 182 EUMETSAT        COMMUNICATIONS  MSG COMMS       COMMUNICATIO"    NS PACKAGE FOR MSG
+190 190 ESA/ EUMETSAT        SCATTEROMETERS  ASCAT   ADVANCED SCATTE"    ROMETER
+200 200 EUMETSAT        RADIOMETER      GERB    GEOSTATIONARY EARTH"    RADIATION BUDGET
+202 202 ESA/ EUMETSAT        RADIOMETER      GRAS    GNSS RECEIVER F"    OR ATMOSPHERIC SOUNDING
+203 203 EUMETSAT        RADIOMETER      MHS     MICROWAVE HUMIDITY S"    OUNDER
+205 205 EUMETSAT        RADIOMETER      MVIRI   METEOSAT VISIBLE AND"    INFRA-RED IMAGER
+207 207 EUMETSAT        RADIOMETER      SEVIRI  SPINNING ENHANCED VI"    SIBLE AND INFRARED IMAGER
+208 208 EUMETSAT        IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)"        VIRI    VIRI
+220 220 ESA/ EUMETSAT        SPECTROMETER    GOME-2  GLOBAL OZONE MO"    NITORING EXPERIMENT - 2
+221 221 CNES/ EUMETSAT        ATMOSPHERIC TEMPERATURE AND HUMIDITY S"    OUNDERS   IASI    INFRA-RED ATMOSPHERIC SOUNDING INTERFEROME"    TER
+240 240 CAST    COMMUNICATIONS  DCP     DATA COLLECTION PLATFORM TRA"    NSPONDER
+245 245 CAST    RADIOMETER      CCD     HIGH RESOLUTION CCD CAMERA
+246 246 INPE    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   HSB"        HUMIDITY SOUNDER/BRAZIL
+248 248 INPE    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     OBA"        OBSERVADOR BRASILEIRO DA AMAZONIA
+250 250 CAST    RADIOMETER      WFI     WIDE FIELD IMAGER
+255 255 CAST    SPECTROMETER    IRMSS   INFRA RED MULTI SPECTRAL SCA"    NNER
+260 260 ISRO    PRECISION ORBIT BSS & FSS TRANSPONDERS
+261 261 ISRO    PRECISION ORBIT DRT-S&R
+262 262 ISRO    COMMUNICATIONS  INSAT COMMS     COMMUNICATIONS PACKA"    GE FOR INSAT
+268 268 ISRO    HIGH RESOLUTION OPTICAL IMAGERS HR-PAN  HIGH RESOLUT"    ION PANCHROMATIC CAMERA
+269 269 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  MSMR    MULTIFREQUENCY SCANNING MICROWAVE RADIOMETER
+270 270 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VHRR"        VERY HIGH RESOLUTION RADIOMETER
+271 271 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     WIFS"        WIDE FIELD SENSOR
+275 275 ISRO    HIGH RESOLUTION OPTICAL IMAGERS AWIFS   ADVANCED WID"    E FIELD SENSOR
+276 276 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-I  LINEAR IMAGI"    NG SELF SCANNER - I
+277 277 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-II LINEAR IMAGI"    NG SELF SCANNER - II
+278 278 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-III        LINE"    AR IMAGING SELF SCANNER - III
+279 279 ISRO    HIGH RESOLUTION OPTICAL IMAGERS LISS-IV LINEAR IMAGI"    NG SELF SCANNER - IV
+284 284 ISRO    HIGH RESOLUTION OPTICAL IMAGERS PAN     PANCHROMATIC"     SENSOR
+285 285 ISRO    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     MOS"        MODULAR OPTO-ELECTRONIC SCANNER
+286 286 ISRO    OCEAN COLOUR INSTRUMENTS        OCM     OCEAN COLOUR"     MONITOR
+290 290 JMA     COMMUNICATIONS  MTSAT COMMS     COMMUNICATIONS PACKA"    GE FOR MTSAT
+294 294 JMA     IMAGING MULTI-SPECTRAL RADIOMETERS      IMAGER/MTSAT"    -1R IMAGER/MTSAT
+295 295 JMA     IMAGING MULTI-SPECTRAL RADIOMETERS      IMAGER/MTSAT"        IMAGER/MTSAT
+296 296 JMA     IMAGING MULTI-SPECTRAL RADIOMETERS      VISSR (GMS4)"        VISIBLE AND INFRA-RED SPIN SCAN RADIOMETER (GMS4)
+300 300 NASA    LIDARS  GLAS    GEOSCIENCE LASER ALTIMETER SYSTEM
+301 301 NASA    PRECISION ORBIT LRA     LASER RETROREFLECTOR ARRAY
+302 302 NASA    LIDARS  MBLA    MULTI BEAM LASER ALTIMETER
+309 309 NASA    CLOUD PROFILE AND RAIN RADARS   CPR (CLOUDSAT)  CLOU"    D PROFILING RADAR
+312 312 NASA    RADAR   NSCAT   NASA SCATTEROMETER
+313 313 NASA    RADAR   SEAWINDS       ADEOS II - NASA SCATTEROMETER
+330 330 NASA    EARTH RADIATION BUDGET RADIOMETER       ACRIM   ACTI"    VE CAVITY RADIOMETER IRRADIANCE MONITOR
+334 334 NASA    TOTAL AND PROFILE OZONE BUV     BACKSCATTER ULTRAVIO"    LET INSTRUMENT
+336 336 NASA    HIGH RESOLUTION OPTICAL IMAGERS ALI     ADVANCED LAN"    D IMAGER
+347 347 NASA    HIGH RESOLUTION OPTICAL IMAGERS ASTER   ADVANCED SPA"    CEBORNE THERMAL EMISSION AND REFLECTION RADIOMETER
+348 348 NASA    EARTH RADIATION BUDGET RADIOMETER       CERES-2 CLOU"    D AND THE EARTH'S RADIANT ENERGY SYSTEM
+351 351 CONAE   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   GPSD"    R   GPS DEMONSTRATION RECEIVER
+353 353 NASA    TOTAL AND PROFILE OZONE HIRDLS  HIGH RESOLUTION DYNA"    MICS LIMB SOUNDER
+354 354 NASA    TOTAL AND PROFILE OZONE HRDI    HIGH RESOLUTION DOPP"    LER IMAGER
+356 356 NASA    RADIOMETER      LIS     LIGHTNING IMAGING SENSOR
+358 358 NASA    MAGNETIC FIELD, AUROAL IMAGERYSCINTILLATION BOUNDARY"        PEM     PARTICLE ENVIRONMENT MONITOR
+359 359 NASA    OCEAN COLOUR INSTRUMENTS        SEAWIFS SEA-VIEWING"    WIDE FIELD-OF-VIEW SENSOR
+360 360 NASA    EARTH RADIATION BUDGET RADIOMETER       SUSIM (UARS)"        SOLAR ULTRAVIOLET IRRADIANCE MONITOR
+363 363 NASA    TOTAL AND PROFILE OZONE SBUV/1  SOLAR BACKSCATTER UL"    TRAVIOLET 1 INSTRUMENT
+365 365 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  TMI     TRMM MICROWAVE IMAGER
+366 366 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  JMR     JASON-1 MICROWAVE RADIOMETER
+369 369 NASA    TOTAL AND PROFILE OZONE LIMS    LIMB INFRARED MONITO"    R OF THE STRATOSPHERE
+370 370 NASA    TOTAL AND PROFILE OZONE LRIR    LIMB RADIANCE INVERS"    ION RADIOMETER INSTRUMENT
+371 371 NASA    TOTAL AND PROFILE OZONE EPIC    EARTH POLYCHROMATIC"    IMAGING CAMERA
+372 372 NASA    EARTH RADIATION BUDGET RADIOMETER       NISTAR  NIST"     ADVANCED RADIOMETER
+373 373 NASA    MAGNETIC FIELD, AUROAL IMAGERY SCINTILLATION BOUNDAR"    Y   PLASMA-MAG
+374 374 NASA    OTHER   XPS     XUV PHOTOMETER SYSTEM
+375 375 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VIRS"        VISIBLE INFRA-RED SCANNER
+376 376 CNES    MULTIPLE DIRECTION/POLARISATION RADIOMETERS     POLD"    ER II       POLARIZATION AND DIRECTIONALITY OF THE EARTH'S R"    EFLECTANCE - II
+377 377 NASA    EARTH RADIATION BUDGET RADIOMETER       TIM     TOTA"    L IRRADIANCE MONITOR
+379 379 NASA    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     WFC"        WIDE FIELD CAMERA
+382 382 NASA    SPECTRO-RADIOMETER      CLAES   CRYOGENIC LIMB ARRAY"     ETALON SPECTROMETER
+383 383 NASA    SPECTRO-RADIOMETER      HALOE   HALOGEN OCCULTATION"    EXPERIMENT
+384 384 NASA    SPECTRO-RADIOMETER      ISAMS   IMPROVED STRATOSPHER"    IC AND MESOSPHERIC SOUNDER
+385 385 NASA    SPECTRO-RADIOMETER      MISR    MULTI-ANGLE IMAGING"    SPECTRORADIOMETER
+386 386 NASA    SPECTRO-RADIOMETER    MLS     MICROWAVE LIMB SOUNDER
+387 387 NASA    SPECTRO-RADIOMETER    MLS (EOS-AURA)  MICROWAVE LIMB"     SOUNDER (EOS-AURA)
+389 389 NASA    SPECTRO-RADIOMETER      MODIS   MODERATE-RESOLUTION"    IMAGING SPECTRORADIOMETER
+393 393 NASA    GRAVITY HAIRS   HIGH ACCURACY INTER-SATELLITE RANGIN"    G SYSTEM
+394 394 NASA    TOTAL AND PROFILE OZONE OMI     OZONE MEASURING INST"    RUMENT
+395 395 NASA    RADIOMETER      ATMOSPHERIC CORRECTOR   ATMOSPHERIC"    CORRECTOR
+396 396 NASA    RADIOMETER      HYPERION        HYPERSPECTRAL IMAGER
+399 399 NASA    SPECTRO-RADIOMETER      SAGE I  STRATOSPHERIC AEROSO"    L AND GAS EXPERIMENT-I
+400 400 NASA    SPECTRO-RADIOMETER      SAGE II STRATOSPHERIC AEROSO"    L AND GAS EXPERIMENT-II
+401 401 NASA    SPECTRO-RADIOMETER      SAGE III        STRATOSPHERI"    C AEROSOL AND GAS EXPERIMENT-III
+402 402 NASA    SPECTRO-RADIOMETER      SAMS    STRATOSPHERIC AND ME"    SOSPHERIC SOUNDER
+403 403 NASA    SPECTRO-RADIOMETER      SAM II  STRATOSPHERIC AEROSO"    L MEASUREMENT II
+404 404 NASA    SPECTRO-RADIOMETER      IRIS    INFRARED INTERFEROME"    TER SPECTROMETER
+405 405 NASA    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   GIFT"    S   GEOSYNCHRONOUS IMAGING FOURIER TRANSFORM SPECTROMETER
+420 420 NASA    SPECTROMETER    AIRS   ATMOSPHERIC INFRA-RED SOUNDER
+426 426 NASA    SPECTROMETER    SOLSTICE        SOLAR STELLAR IRRADI"    ANCE COMPARISON EXPERIMENT
+430 430 NASA    SPECTROMETER    TES     TROPOSHPERIC EMISSION SPECTR"    OMETER
+431 431 NASA    SPECTROMETER    TOMS    TOTAL OZONE MAPPING SPECTROM"    ETER
+450 450 JAXA    COMMUNICATIONS  ADEOS COMMS     COMMUNICATIONS PACKA"    GE FOR ADEOS
+451 451 JAXA    COMMUNICATIONS  DCS (JAXA)      DATA COLLECTION SYST"    EM (JAXA)
+453 453 JAXA    COMMUNICATIONS  GMS COMMS       COMMUNICATIONS PACKA"    GE ON GMS
+454 454 JAXA    COMMUNICATIONS  JERS-1 COMMS    COMMUNICATIONS PACKA"    GE FOR JERS-1
+460 460 JAXA    LIDAR   RIS     RETROREFLECTOR IN SPACE
+461 461 JAXA    RADAR   PR      PRECIPITATION RADAR
+462 462 JAXA    IMAGING MICROWAVE RADARS        SAR     SYNTETIC APE"    RTURE RADAR
+470 470 JAXA    IMAGING MICROWAVE RADARS        PALSAR  PHASED ARRAY"     TYPE L-BAND SYNTHETIC APERTURE RADAR
+479 479 JAXA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  AMSR-E  ADVANCED MICROWAVE SCANNING RADIOMETER-EOS
+480 480 JAXA    HIGH RESOLUTION OPTICAL IMAGERS PRISM (ALOS)    PANC"    HROMATIC REMOTE-SENSING INSTRUMENT FOR STEREO MAPPING
+481 481 JAXA    RADIOMETER      AMSR    ADVANCED MICROWAVE SCANNING"    RADIOMETER
+482 482 JAXA    HIGH RESOLUTION OPTICAL IMAGERS AVNIR   ADVANCED VIS"    IBLE AND NEAR INFRARED RADIOMETER
+483 483 JAXA    HIGH RESOLUTION OPTICAL IMAGERS AVNIR-2 ADVANCED VIS"    IBLE AND NEAR INFRA-RED RADIOMETER TYPE 2
+484 484 JAXA    IMAGER  GLI     GLOBAL IMAGER
+485 485 JAXA    RADIOMETER      MESSR   MULTISPECTRAL ELECTRONIC SEL"    F SCANNING RADIOMETER
+486 486 JAXA    RADIOMETER      MSR    MICROWAVE SCANNING RADIOMETER
+487 487 JAXA    RADIOMETER      OCTS   OCEAN COLOR AND TEMPERATURE S"    CANNER
+488 488 JAXA    RADIOMETER      OPS     OPTICAL SENSOR
+489 489 JAXA    SPECTRO-RADIOMETER      VISSR (GMS5)    VISIBLE AND"    INFRA-RED SPIN SCAN RADIOMETER (GMS5)
+490 490 JAXA    RADIOMETER      VTIR    VISIBLE AND THERMAL INFRA-RE"    D RADIOMETER
+510 510 JAXA    SPECTROMETER    ILAS-I  IMOROVED LIMB ATOMOSPHIRIC S"    PECTROMETER
+511 511 JAXA    SPECTROMETER    ILAS-II IMPROVED LIMB ATOMOSPHIRIC S"    PECTROMETER
+512 512 JAXA    SPECTROMETER    IMG     INFEROMETRIC MONITOR OF GREE"    NHOUSE GASES
+514 514 JAXA    SPACE ENVIRONMENT       SEM     SPACE ENVIRONMENT MO"    NITOR (JAXA)
+515 515 JAXA    TOTAL AND PROFILE OZONE SOFIS   SOLAR OCCULTATION FO"    URIER TRANSFORM SPECTROMETER FOR INCLINED ORBIT SATELLITE
+540 540 NOAA    COMMUNICATIONS  DCS (NOAA)      DATA COLLECTION SYST"    EM (NOAA)
+541 541 NOAA    COMMUNICATIONS  GOES COMMS      COMMUNICATIONS PACKA"    GE ON GOES
+542 542 NOAA    COMMUNICATIONS  LANDSAT COMMS   COMMUNICATIONS PACKA"    GE FOR LANDSAT
+543 543 NOAA    COMMUNICATIONS  NOAA COMMS      COMMUNICATIONS PACKA"    GE FOR NOAA
+544 544 NOAA    COMMUNICATIONS  S&R (GOES)      SEARCH AND RESCUE
+545 545 NOAA    COMMUNICATIONS  S&R (NOAA)      SEARCH AND RESCUE
+546 546 NOAA    COMMUNICATIONS  WEFAX   WEATHER FACSIMILE
+547 547 NOAA    SPECTROMETER    SEM(GOES)       SPACE ENVIRONMENT MO"    NITOR
+550 550 NOAA    MAGNETIC FIELD  SSM     SPECIAL SENSOR MAGNETOMETER
+551 551 NOAA    MAGNETIC FIELD  SSJ/4   SPECIAL SENSOR PRECIPITATING"     PLASMA MONITOR
+552 552 NOAA    SPACE ENVIRONMENT       SSIES-2 SPECIAL SENSOR IONOS"    PHERIC PLASMA DRIFT/SCINTILLATION METER
+553 553 NOAA    SPACE ENVIRONMENT       SSB/X-2 SPECIAL SENSOR GAMMA"     RAY PARTICLE DECTECTOR
+570 570 NOAA    RADIOMETER      AMSU-A  ADVANCED MICROWAVE SOUNDING"    UNIT-A
+574 574 NOAA    RADIOMETER      AMSU-B  ADVANCED MICROWAVE SOUNDING"    UNIT-B
+580 580 NOAA    RADIOMETER      ATOVS (HIRS/3 + AMSU + AVHRR/3) ADVA"    NCED TIROS OPERATIONAL VERTICAL SOUNDER
+590 590 NOAA    RADIOMETER      AVHRR/2 ADVANCED VERY HIGH RESOLUTIO"    N RADIOMETER/2
+591 591 NOAA    RADIOMETER      AVHRR/3 ADVANCED VERY HIGH RESOLUTIO"    N RADIOMETER/3
+592 592 NOAA    RADIOMETER      AVHRR/4 ADVANCED VERY HIGH RESOLUTIO"    N RADIOMETER/4
+600 600 NOAA    RADIOMETER      ERBE    EARTH'S RADIATION BUDGET EXP"    ERIMENT
+601 601 NOAA    RADIOMETER      ETM+    ENHANCED THEMATIC MAPPER
+605 605 NOAA    RADIOMETER      HIRS/2  HIGH RESOLUTION INFRA-RED SO"    UNDER/2
+606 606 NOAA    RADIOMETER      HIRS/3  HIGH RESOLUTION INFRA-RED SO"    UNDER/3
+607 607 NOAA    RADIOMETER      HIRS/4  HIGH RESOLUTION INFRA-RED SO"    UNDER/4
+615 615 NOAA    RADIOMETER      IMAGER  IMAGER
+616 616 NOAA    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VIIR"    S   VISIBLE/INFRARED IMAGER RADIOMETER SUITE
+620 620 NOAA    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   CRIR"    S/NP        CROSS TRACK INFRA-RED SOUNDER/NPOESS
+621 621 NOAA    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   ATMS"        ADVANCED TECHNOLOGY MICROWAVE SOUNDER
+622 622 NOAA    RADIOMETER      MSS    MULTISPECTRAL SCANNING SYSTEM
+623 623 NOAA    RADIOMETER      MSU     MICROWAVE SOUNDING UNIT
+624 624 NOAA    RADIOMETER      SBUV/2  SOLAR BACKSCATTTER ULTRA-VIO"    LET INSTRUMENT/2
+625 625 NOAA    RADIOMETER      SBUV/3  SOLAR BACKSCATTTER ULTRA-VIO"    LET INSTRUMENT/3
+626 626 NOAA    RADIOMETER      SOUNDER SOUNDER
+627 627 NOAA    RADIOMETER      SSU     STRATOSPHERIC SOUNDING UNIT
+628 628 NOAA    RADIOMETER      TM      THEMATIC MAPPER
+629 629 NOAA    RADIOMETER      TOVS (HIRS/2 + MSU + SSU)       TIRO"    S OPERATIONAL VERTICAL SOUNDER
+630 630 NOAA    RADIOMETER      VAS     VISSR ATMOSPHERIC SOUNDER
+631 631 NOAA    RADIOMETER      SSZ
+645 645 NOAA    SPECTROMETER    SEM     SPACE ENVIRONMENT MONITOR
+650 650 NRSCC   RADIOMETER      MVIRSR (10 CHANNEL)     MULTISPECTRA"    L VISIBLE AND INFRA-RED SCAN RADIOMETER
+651 651 NRSCC   RADIOMETER      MVIRSR (3 CHANNEL)      MULTISPECTRA"    L VISIBLE AND INFRA-RED SCAN RADIOMETER
+652 652 NRSCC   RADIOMETER      MVIRSR (5 CHANNEL)      MULTISPECTRA"    L VISIBLE AND INFRA-RED SCAN RADIOMETER
+670 670 NSAU    RADAR   RLSBO   SIDE LOOKING MICROWAVE RADAR
+680 680 NSAU    HIGH RESOLUTION OPTICAL IMAGERS MSU-EU  MULTI-SPECTR"    AL RADIOMETER WITH HIGH RESOLUTION
+681 681 NSAU    IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     MSU-"    UM  VISIBLE MULTI-SPECTRAL RADIOMETER
+682 682 NSAU    RADIOMETER      RM-08   IMAGING MICROWAVE RADIOMETER
+683 683 NSAU    HIGH RESOLUTION OPTICAL IMAGERS SU-UMS  STEREO RADIO"    METER WITH HIGH RESOLUTION
+684 684 NSAU    HIGH RESOLUTION OPTICAL IMAGERS SU-VR   VISIBLE RADI"    OMETER WITH HIGH RESOLUTION
+685 685 NSAU    RADIOMETER      TRASSER
+700 700 ROSCOSMOS       COMMUNICATIONS  KONDOR-2        DATA COLLECT"    ION AND TRANSMISSION SYSTEM
+701 701 ROSCOSMOS       COMMUNICATIONS  BRK
+710 710 ROSCOSMOS       LIDAR   ALISSA  BACKSCATTER LIDAR
+712 712 ROSCOSMOS       LIDAR   BALKAN-2 LIDAR
+715 715 ROSCOSMOS       LIDAR   MK-4
+716 716 ROSCOSMOS       LIDAR   MK-4M
+730 730 ROSCOSMOS       RADAR   GREBEN  RADAR ALTIMETER
+731 731 ROSCOSMOS       RADAR   SAR-10  SYNTETIC APERTURE RADAR
+732 732 ROSCOSMOS       RADAR   SAR-3   SYNTETIC APERTURE RADAR
+733 733 ROSCOSMOS       RADAR   SAR-70  SYNTETIC APERTURE RADAR
+740 740 ROSCOSMOS       RADAR   SLR-3   SIDE LOOKING RADAR
+745 745 ROSCOSMOS       RADAR   TRAVERS SAR
+750 750 ROSCOSMOS       RADIOMETER      174-K   TEMPERATURE AND HUMI"    DITY PROFILER
+751 751 ROSCOSMOS       RADIOMETER      BTVK    SCANNING TELEVISION"    RADIOMETER
+752 752 ROSCOSMOS       RADIOMETER      CHAIKA  SCANNING IR RADIOMET"    ER
+753 753 ROSCOSMOS       RADIOMETER      DELTA-2 MULTISPECTRAL MICROW"    AVE SCANNER
+755 755 ROSCOSMOS       RADIOMETER      IKAR-D  MULTISPECTRAL MICROW"    AVE SCANNER
+756 756 ROSCOSMOS       RADIOMETER      IKAR-N  MULTISPECTRAL MICROW"    AVE SCANNER
+757 757 ROSCOSMOS       RADIOMETER      IKAR-P  MULTISPECTRAL MICROW"    AVE SCANNER
+760 760 ROSCOSMOS       RADIOMETER      ISP
+761 761 ROSCOSMOS       RADIOMETER      KFA-1000        PHOTOGRAPHIC"     CAMERA
+762 762 ROSCOSMOS       RADIOMETER      KFA-200 PHOTOGRAPHIC CAMERA
+763 763 ROSCOSMOS       RADIOMETER      KFA-3000        PHOTOGRAPHIC"     CAMERA
+770 770 ROSCOSMOS       RADIOMETER     KLIMAT SCANNING IR RADIOMETER
+771 771 ROSCOSMOS       RADIOMETER      KLIMAT-2        SCANNING IR"    RADIOMETER
+775 775 ROSCOSMOS       RADIOMETER      MIRAS
+776 776 ROSCOSMOS       RADIOMETER      MIVZA
+777 777 ROSCOSMOS       RADIOMETER      MIVZA-M MICROWAVE SCANNING R"    ADIOMETER
+780 780 ROSCOSMOS       RADIOMETER      MR-2000
+781 781 ROSCOSMOS       RADIOMETER      MR-2000M
+785 785 ROSCOSMOS       RADIOMETER      MR-900  SCANNING TELEPHOTOME"    TER
+786 786 ROSCOSMOS       RADIOMETER      MR-900B SCANNING VISUAL BAND"     TELEPHOTOMETER
+790 790 ROSCOSMOS       RADIOMETER      MSU-E   MULTISPECTRAL HIGH R"    ESOLUTION ELECTRONIC SCANNER
+791 791 ROSCOSMOS       RADIOMETER      MSU-E1  MULTISPECTRAL HIGH R"    ESOLUTION ELECTRONIC SCANNER
+792 792 ROSCOSMOS       RADIOMETER      MSU-E2  MULTISPECTRAL HIGH R"    ESOLUTION ELECTRONIC SCANNER
+793 793 ROSCOSMOS       RADIOMETER      MSU-M
+794 794 ROSCOSMOS       RADIOMETER      MSU-S   MULTISPECTRAL MEDIUM"     RESOLUTION SCANNER
+795 795 ROSCOSMOS       RADIOMETER      MSU-SK  MULTISPECTRAL MEDIUM"    RESOLUTION CONICAL SCANNER
+796 796 ROSCOSMOS       RADIOMETER      MSU-V   MULTISPECTRAL HIGH R"    ESOLUTION CONICAL SCANNER
+810 810 ROSCOSMOS       RADIOMETER      MTZA    SCANNING MICROWAVE R"    ADIOMETER
+815 815 ROSCOSMOS       IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE"    MICROWAVE)  MZOAS   SCANNING MICROWAVE RADIO"    METER
+820 820 ROSCOSMOS       IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE"    MICROWAVE)  R-225   SINGLE CHANNEL MICROWAVE"     RADIOMETER
+821 821 ROSCOSMOS       RADIOMETER      R-400
+822 822 ROSCOSMOS       RADIOMETER      R-600   SINGLE CHANNEL MICRO"    WAVE RADIOMETER
+830 830 ROSCOSMOS       RADIOMETER      RMS     RADIATION MEASUREMEN"    T SYSTEM
+835 835 ROSCOSMOS       RADIOMETER      TV CAMERA
+836 836 ROSCOSMOS       RADIOMETER      SILVA
+840 840 ROSCOSMOS       SPECTRO-RADIOMETER      SROSMO  SPECTRORADIO"    METER FOR OCEAN MONITORING
+850 850 ROSCOSMOS       SPECTROMETER    BUFS-2  BACKSCATTER SPECTROM"    ETER/2
+851 851 ROSCOSMOS       SPECTROMETER    BUFS-4  BACKSCATTER SPECTROM"    ETER/4
+855 855 ROSCOSMOS       SPECTROMETER    ISTOK-1 INFRA-RED SPECTROMET"    ER
+856 856 ROSCOSMOS       SPECTROMETER    SFM-2   SPECTROMETER TO MEAS"    URE DIRECT SOLAR RADIATION
+857 857 ROSCOSMOS       SPECTROMETER    DOPI
+858 858 ROSCOSMOS       SPECTROMETER    KGI-4
+859 859 ROSCOSMOS       SPECTROMETER    OZON-M
+860 860 ROSCOSMOS       SPECTROMETER    RMK-2
+900 900 NOAA    RADIOMETER      MAXIE   MAGNETOSPHERIC ATMOSPHERIC X"    -RAY IMAGING EXPERIMENT
+901 901 NOAA    RADIOMETER      OLS     OPERATIONAL LINESCAN SYSTEM
+905 905 NOAA    RADIOMETER      SSM/I   MISSION SENSOR MICROWAVE IMA"    GER
+906 906 NOAA    RADIOMETER      SSM/T-1 MISSION SENSOR MICROWAVE TEM"    PERATURE SOUNDER
+907 907 NOAA    RADIOMETER      SSM/T-2 MISSION SENSOR MICROWAVE WAT"    ER VAPOR SOUNDER
+908 908 NOAA    RADIOMETER      SSMIS   SPECIAL SENSOR MICROWAVE IMA"    GER SOUNDER
+910 910 NOAA    RADIOMETER      SXI     SOLAR X-RAY IMAGER
+930 930 NOAA    SPECTROMETER    EHIC    ENERGETIC HEAVY ION COMPOSIT"    ION EXPERIMENT
+931 931 NOAA    SPECTROMETER    X-RAY ASTRONOMY PAYLOAD
+932 932 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     IVIS"    SR (FY-2)   IMPROVED MULTISPECTRAL VISIBLE AND INFRA-RED SCA"    N RADIOMETER (5 CHAN
+933 933 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   IRAS"        INFRARED ATMOSPHERIC SOUNDER
+934 934 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   MWAS"        MICROWAVE ATMOSPHERIC SOUNDER
+935 935 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   IMWA"    S   IMPROVED MICROWAVE ATMOSPHERIC SOUNDER
+936 936 NRSCC   ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   MWHS"        MICROWAVE HUMIDITY SOUNDER
+937 937 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     MVIR"    S   MODERATE RESOLUTION VISIBLE AND INFRARED IMAGING SPECTRO"    RADIOMETER
+938 938 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  MWRI    MICROWAVE RADIATION IMAGER
+940 940 ROSCOSMOS       ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDER"    S   MTVZA-OK        SCANNING MICROWAVE RADIOMETER
+941 941 CNES    ATMOSPHERIC TEMPERATURE AND HUMIDITY SOUNDERS   SAPH"    IR
+944 944 NOAA    RADAR ALTIMETERS        ALT     ALTIMETER
+945 945 NOAA    EARTH RADIATION BUDGET RADIOMETER       TSIS    TOTA"    L SOLAR IRRADIANCE SENSOR
+946 946 NOAA    IMAGING MULTI-SPECTRAL RADIOMETERS (PASSIVE MICROWAV"    E)  CMIS    CONICAL-SCANNING MICROWAVE IMAGER/SOUNDER
+947 947 NOAA    TOTAL AND PROFILE OZONE OMPS    OZONE MAPPING AND PR"    OFILER SUITE
+948 948 NOAA    SPACE ENVIRONMENT ATMOSPHERIC TEMPERATURE AND HUMIDI"    TY SOUNDERS GPSOS   GLOBAL POSITIONING SYSTEM OCCULTATION SE"    NSOR
+949 949 NOAA    MAGNETIC FIELD, AUROAL IMAGERY SCINTILLATION BOUNDAR"    Y   SESS    SPACE ENVIRONMENTAL SENSOR SUITE
+950 950 NRSCC   IMAGING MULTI-SPECTRAL RADIOMETERS (VIS/IR)     VIRR"        MULTISPECTRAL VISIBLE AND INFRA-RED SCAN RADIOMETER (10"    CHANNELS
+951 951 NRSCC   TOTAL AND PROFILE OZONE TOM     TOTAL OZONE MAPPER
+952 952 NRSCC   TOTAL AND PROFILE OZONE OP      OZONE PROFILER
+2047 2047 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2020.table b/definitions/bufr/tables/0/wmo/9/codetables/2020.table
new file mode 100644
index 0000000..637ea6a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2020.table
@@ -0,0 +1,24 @@
+0 0 NIMBUS
+1 1 VTPR
+2 2 TIROS 1 (TIROS, NOAA-6 TO NOAA-13)
+3 3 TIROS 2 (NOAA-14 ONWARDS)
+10 10 EOS
+31 31 DMSP
+61 61 EUMETSAT POLAR SYSTEM (EPS)
+91 91 ERS
+121 121 ADEOS
+241 241 GOES
+261 261 JASON
+271 271 GMS
+272 272 MTSAT
+301 301 INSAT
+331 331 METEOSAT OPERATIONAL PROGRAMME (MOP)
+332 332 METEOSAT TRANSITIONAL PROGRAMME (MTP)
+333 333 METEOSAT SECOND GENERATION PROGRAMME (MSG)
+351 351 GOMS
+380 380 FY-1
+381 381 FY-2
+401 401 GPS
+402 402 GLONASS
+403 403 GALILEO
+511 511 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2021.table b/definitions/bufr/tables/0/wmo/9/codetables/2021.table
new file mode 100644
index 0000000..4ebf429
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2021.table
@@ -0,0 +1,8 @@
+1 1 HIGH RESOLUTION INFRA RED SOUNDER (HIRS)
+2 2 MICROWAVE SOUNDING UNIT           (MSU )
+3 3 STRATOSPHERIC SOUNDING UNIT       (SSU)
+4 4 AMI WIND MODE
+5 5 AMI WAVE MODE
+6 6 AMI IMAGE MODE
+7 7 RADAR ALTIMETER
+8 8 ATSR
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2022.table b/definitions/bufr/tables/0/wmo/9/codetables/2022.table
new file mode 100644
index 0000000..5068e7f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2022.table
@@ -0,0 +1,5 @@
+1 1 PROCESSING TECHNIQUE NOT DEFINED
+2 2 AUTOMATED STATISTICAL REGRESSION
+3 3 CLEAR PATH
+4 4 PARTLY CLOUDY PATH
+5 5 CLOUDY PATH
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2023.table b/definitions/bufr/tables/0/wmo/9/codetables/2023.table
new file mode 100644
index 0000000..428ca3b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2023.table
@@ -0,0 +1,12 @@
+0 0 RESERVED
+1 1 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE INFRARED"    CHANNEL
+2 2 WIND DERIVED FROM CLOUD MOTION OBSERVED IN THE VISIBLE CHANNEL
+3 3 WIND DERIVED FROM CLOUD MOTION OBSERVED IN WATER VAPOUR CHANNEL
+4 4 WIND DERIVED FROM MOTION OBSERVED IN  COMBINATION OF SPECTRAL"    CHANNELS
+5 5 WIND DERIVED FROM MOTION OBSERVED IN THE WATER  VAPOUR CHANNEL"    IN CLEAR AIR
+6 6 WIND DERIVED FROM MOTION OBSERVED IN THE OZONE  CHANNEL
+7 7 WIND DERIVED FROM MOTION OBSERVED IN WATER VAPOUR CHANNEL"    (CLOUD OR CLEAR AIR NOT SPECIFIED)
+8 8 WIND DERIVED FROM ALTIMETER
+9 9 WIND DERIVED FROM RADIOMETER
+13 13 ROOT MEAN SQUARE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2024.table b/definitions/bufr/tables/0/wmo/9/codetables/2024.table
new file mode 100644
index 0000000..ba7498e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2024.table
@@ -0,0 +1,3 @@
+1 1 TABLE WITH FULL RANGE OF HUMIDITY VARIATION IN LAYER
+2 2 REGRESSION TECHNIQUE ON 2 HUMIDITY VALUES IN LAYER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2025.table b/definitions/bufr/tables/0/wmo/9/codetables/2025.table
new file mode 100644
index 0000000..6c8403c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2025.table
@@ -0,0 +1,16 @@
+1 1 RESERVED
+2 2 HIRS
+3 3 MSU
+6 6 HIRS
+7 7 MSU
+10 10 HIRS(1, 2, 3, 8,9, 16, 17)
+11 11 HIRS(1, 2, 3, 9, 17)
+12 12 MSU
+15 15 HIRS
+16 16 HIRS
+17 17 MSU
+18 18 SKINTK(OCEAN ONLY)
+21 21 HIRS
+22 22 SSU
+23 23 MSU (3 ,4)
+25 25 MISSING
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2030.table b/definitions/bufr/tables/0/wmo/9/codetables/2030.table
new file mode 100644
index 0000000..c58949d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2030.table
@@ -0,0 +1,7 @@
+1 1 ADCP (ACOUSTIC DOPPLER CURRENT PROFILER)
+2 2 GEK (GEOMAGNETIC ELECTRO KINETOGRAPH)
+3 3 SHIPS'S SET AND DRIFT DETERMINED BY FIXES 3-6 HOURS APART
+4 4 SHIPS'S SET AND DRIFT DETERMINED BY MORE THAN 6 HOURS BUT LE"    SS THAN 12 HOURS APART
+5 5 DRIFT OF BUOY
+6 6 ADCP (ACOUSTIC DOPPLER CURRENT PROFILER)
+7 7 MISSIN VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2031.table b/definitions/bufr/tables/0/wmo/9/codetables/2031.table
new file mode 100644
index 0000000..1c0f4b8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2031.table
@@ -0,0 +1,21 @@
+0 0 RESERVED
+1 1 INSTANTANEOUS
+2 2 AVERAGED OVER 3 MINUTES OR LESS
+3 3 AVERAGED OVER MORE THAN 3 MINUTES, BUT 6 AT THE MOST
+4 4 AVERAGED OVER MORE THAN 6 MINUTES, BUT 12 AT THE MOST
+5 5 INSTANTANEOUS
+6 6 AVERAGED OVER 3 MINUTES OR LESS
+7 7 AVERAGED OVER MORE THAN 3 MINUTES, BUT 6 AT THE MOST
+8 8 AVERAGED OVER MORE THAN 6 MINUTES, BUT 12 AT THE MOST
+9 9 VECTOR OR DOPPLER CURRENT PROFILLING METHOD NOT USED
+10 10 RESERVED
+11 11 1 HOUR OR LESS
+12 12 MORE THAN  1 HOUR BUT  2 AT THE MOST
+13 13 MORE THAN  2 HOUR BUT  4 AT THE MOST
+14 14 MORE THAN  4 HOUR BUT  8 AT THE MOST
+15 15 MORE THAN  8 HOUR BUT 12 AT THE MOST
+16 16 MORE THAN 12 HOUR BUT 18 AT THE MOST
+17 17 MORE THAN 18 HOUR BUT 24 AT THE MOST
+18 18 RESERVED
+19 19 DRIFT METHOD NOT USED
+31 31 MISSING
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2032.table b/definitions/bufr/tables/0/wmo/9/codetables/2032.table
new file mode 100644
index 0000000..8d60fe6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2032.table
@@ -0,0 +1,4 @@
+0 0 VALUES AT SELECTED DEPTHS (DATA POINTS FIXED BY THE INSTRUME"    NT OR SELECTED BY ANY OTHER METHOD)
+1 1 VALUES AT SIGNIFICANT DEPTHS (DATA POINTS TAKEN FROM TRACES"    AT SIGNIFICANT DEPTHS)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2033.table b/definitions/bufr/tables/0/wmo/9/codetables/2033.table
new file mode 100644
index 0000000..55ee821
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2033.table
@@ -0,0 +1,5 @@
+0 0 NO SALINITY MEASURED
+1 1 IN SITU SENSOR, ACCURACY BETTER THAN 0.02 %
+2 2 IN SITU SENSOR, ACCURACY LESS THAN 0.02 %
+3 3 SAMPLE ANALYSIS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2034.table b/definitions/bufr/tables/0/wmo/9/codetables/2034.table
new file mode 100644
index 0000000..06cdd52
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2034.table
@@ -0,0 +1,7 @@
+0 0 UNSPECIFIED DROGUE
+1 1 HOLEY SOCK
+2 2 TRISTAR
+3 3 WINDOW SHADE
+4 4 PARACHUTE
+5 5 NON-LAGRANGIAN SEA ANCHOR
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2036.table b/definitions/bufr/tables/0/wmo/9/codetables/2036.table
new file mode 100644
index 0000000..4e69a0c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2036.table
@@ -0,0 +1,4 @@
+0 0 DRIFTING BUOY
+1 1 FIXED BUOY
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2037.table b/definitions/bufr/tables/0/wmo/9/codetables/2037.table
new file mode 100644
index 0000000..67049ca
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2037.table
@@ -0,0 +1,7 @@
+0 0 REASERVED
+1 1 MANUAL READING FROM VERTICAL TIDE STAFF
+2 2 MANUAL READING FROM SINGLE AUTOMATIC RECORDER AT STATION
+3 3 MANUAL READING FROM MULTIPLE AUTOMATIC RECORDERS AT STATION
+4 4 AUTOMATIC READING FROM SINGLE AUTOMATIC RECORDER AT STATION"    WITHOUT LEVEL REFERENCE CHECK
+5 5 AUTOMATIC READING FROM SINGLE AUTOMATIC RECORDER AT STATION"    WITH LEVEL REFERENCE CHECK,OR MULTIPLE AUTOMATIC RECORDERS
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2038.table b/definitions/bufr/tables/0/wmo/9/codetables/2038.table
new file mode 100644
index 0000000..25c58c5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2038.table
@@ -0,0 +1,12 @@
+0 0 SHIP INTAKE
+1 1 BUCKET
+2 2 HULL CONTACT SENSOR
+3 3 REVERSING TERMOMETER
+4 4 STD/CTD SENSOR
+5 5 MECHANICAL BT
+6 6 EXPANDABLE BT
+7 7 DIGITAL BT
+8 8 THERMISTOR CHAIN
+9 9 INFRARED SCANNER
+10 10 MICROWAVE SCANNER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2039.table b/definitions/bufr/tables/0/wmo/9/codetables/2039.table
new file mode 100644
index 0000000..0a94982
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2039.table
@@ -0,0 +1,5 @@
+0 0 MEASURED WET-BULB TEMPERATURE
+1 1 ICED BULB MEASURED WET-BULB TEMPERATURE
+2 2 COMPUTED WET-BULB TEMPERATURE
+3 3 ICED BULB COMPUTED WET-BULB TEMPERATURE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2040.table b/definitions/bufr/tables/0/wmo/9/codetables/2040.table
new file mode 100644
index 0000000..5fcc074
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2040.table
@@ -0,0 +1,8 @@
+0 0 SHIPS MOTION REMOVED BY AVARAGING
+1 1 SHIPS MOTION REMOVED BY MOTION COMPENSATION
+2 2 SHIPS MOTION NOT REMOVED
+3 3 SHIPS MOTION REMOVED BY AVERAGING
+4 4 SHIPS MOTION REMOVED BY MOTION COMPENSATION
+5 5 SHIPS MOTION NOT REMOVED
+6 6 DOPPLER CURRENT PROFILING METHOD NOT USED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2041.table b/definitions/bufr/tables/0/wmo/9/codetables/2041.table
new file mode 100644
index 0000000..f479da9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2041.table
@@ -0,0 +1,6 @@
+0 0 INFORMATION BASED ON MANUAL ANALYSIS
+1 1 INFORMATION BASED ON COMPUTER ANALYSIS
+2 2 INFORMATION BASED ON DATA ASSIMILATION
+3 3 INFORMATION BASED ON COMPUTER ANALYSIS OR DATA ASSIMSILATIO"    N MANUALLY MODIFIED
+10 10 INFORMATION BASED ON THE NUMERICAL WEATHER PREDICTION
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2044.table b/definitions/bufr/tables/0/wmo/9/codetables/2044.table
new file mode 100644
index 0000000..80afaca
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2044.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 LONGUET-HIGGINS (1964)
+2 2 LONGUET-HIGGINS (F3 METHOS)
+3 3 MAXIMUM LIKELIHOOD METHOD
+4 4 MAXIMUM ENTROPY METHOD
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2045.table b/definitions/bufr/tables/0/wmo/9/codetables/2045.table
new file mode 100644
index 0000000..374e4f2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2045.table
@@ -0,0 +1,5 @@
+0 0 SEA STATION
+1 1 AUTOMATIC DATA BUOY
+2 2 AIRCRAFT
+3 3 SATELLITE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2046.table b/definitions/bufr/tables/0/wmo/9/codetables/2046.table
new file mode 100644
index 0000000..c4fb394
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2046.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 HEAVE SENSOR
+2 2 SLOPE SENSOR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2048.table b/definitions/bufr/tables/0/wmo/9/codetables/2048.table
new file mode 100644
index 0000000..69e2610
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2048.table
@@ -0,0 +1,12 @@
+0 0 HIRS
+1 1 MSU
+2 2 SSU
+3 3 AMSU-A
+4 4 AMSU-B
+5 5 AVHRR
+6 6 SSMI
+7 7 NSCAT
+8 8 SEA WINDS
+9 9 POSEIDON ALTIMETER
+10 10 JMR (JASON MICROWAVE RADIOMETER)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2049.table b/definitions/bufr/tables/0/wmo/9/codetables/2049.table
new file mode 100644
index 0000000..15b2ce5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2049.table
@@ -0,0 +1,4 @@
+1 1 PROCESSING TECHNIQUE NOT DEFINED
+2 2 SIMULTANIOUS PHISICAL RETRIEVAL
+3 3 CLEAR SOUNDING
+4 4 CLOUDY COUNDING
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2050.table b/definitions/bufr/tables/0/wmo/9/codetables/2050.table
new file mode 100644
index 0000000..c9688ef
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2050.table
@@ -0,0 +1,19 @@
+1 1 CHANNEL 1 14.71 MICROMETERS
+2 2 CHANNEL 2 14.37 MICROMETERS
+3 3 CHANNEL 3 14.06 MICROMETERS
+4 4 CHANNEL 4 13.64 MICROMETERS
+5 5 CHANNEL 5 13.37 MICROMETERS
+6 6 CHANNEL 6 12.66 MICROMETERS
+7 7 CHANNEL 7 12.02 MICROMETERS
+8 8 CHANNEL 8 11.03 MICROMETERS
+9 9 CHANNEL 9  9.71 MICROMETERS
+10 10 CHANNEL 10 7.43 MICROMETERS
+11 11 CHANNEL 11 7.02 MICROMETERS
+12 12 CHANNEL 12 6.51 MICROMETERS
+13 13 CHANNEL 13 4.57 MICROMETERS
+14 14 CHANNEL 14 4.52 MICROMETERS
+15 15 CHANNEL 15 4.45 MICROMETERS
+16 16 CHANNEL 16 4.13 MICROMETERS
+17 17 CHANNEL 17 3.98 MICROMETERS
+18 18 CHANNEL 18 3.74 MICROMETERS
+19 19 CHANNEL 19 0.969 MICROMETERS
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2051.table b/definitions/bufr/tables/0/wmo/9/codetables/2051.table
new file mode 100644
index 0000000..2f0ab22
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2051.table
@@ -0,0 +1,4 @@
+1 1 MAXIMUM/MINIMUM THERMOMETERS
+2 2 AUTOMATED INSTRUMENT
+3 3 THERMOGRAPH
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2052.table b/definitions/bufr/tables/0/wmo/9/codetables/2052.table
new file mode 100644
index 0000000..4b934ab
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2052.table
@@ -0,0 +1,5 @@
+1 1 CHANNEL 1 0.55-.75 MICROMETERS
+2 2 CHANNEL 2 3.9 MICROMETERS
+3 3 CHANNEL 3 6.7 MICROMETERS
+4 4 CHANNEL 4 10.7 MICROMETERS
+5 5 CHANNEL 5 12.0 MICROMETERS
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2053.table b/definitions/bufr/tables/0/wmo/9/codetables/2053.table
new file mode 100644
index 0000000..68c67fe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2053.table
@@ -0,0 +1,5 @@
+0 0 OBSERVED BRIGHTNESS TEMPERATURES
+1 1 BRIGHTNESS TEMPERATURE WITH BIAS CORRECTION APPLIED
+2 2 BRIGHTNESS TEMPERATURE CALCULATED FROM FIRST GUESS
+3 3 BRIGHTNESS TEMPERATURE CALCULATED FROM SOUNDING
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2054.table b/definitions/bufr/tables/0/wmo/9/codetables/2054.table
new file mode 100644
index 0000000..6260713
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2054.table
@@ -0,0 +1,6 @@
+0 0 PARAMETER DERIVED USING OBSERVED SOUNDER BRIGHTNESS TEMPERAT"    URES
+1 1 PARAMETER DERIVED USING OBSERVED IMAGER BRIGHTNESS TEMPERATU"    RES
+2 2 PARAMETER DERIVED USING FIRST GUESS INFORMATION
+3 3 PARAMETER DERIVED USING  NMC ANALYSIS INFORMATION
+4 4 PARAMETER DERIVED USING RADIOSONDE INFORMATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2055.table b/definitions/bufr/tables/0/wmo/9/codetables/2055.table
new file mode 100644
index 0000000..8c9fce2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2055.table
@@ -0,0 +1,9 @@
+0 0 STATISTICS GENERATED COMPARING RETRIEVAL VERSUS RADIOSONDE
+1 1 STATISTICS GENERATED COMPARING RETRIEVAL VERSUS FIRST GUESS
+2 2 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS FIRST GUESS
+3 3 STATISTICS GENERATED COMPARING OBSERVED VERSUS RETRIEVAL
+4 4 STATISTICS GENERATED COMPARING OBSERVED VERSUS FORST GUESS
+5 5 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS IMAGER
+6 6 STATISTICS GENERATED COMPARING RADIOSONDE VERSUS SOUNDER
+7 7 STATISTICS GENERATED FOR RADIOSONDE
+8 8 STATISTICS GENERATED FOR FIRST GUESS
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2056.table b/definitions/bufr/tables/0/wmo/9/codetables/2056.table
new file mode 100644
index 0000000..3bdc910
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2056.table
@@ -0,0 +1,6 @@
+0 0 SUMS OF DIFFERENCE
+1 1 SUMS OF SQUARED DIFFERENCES
+2 2 SAMPLE SIZE
+3 3 MINIMUM DIFFERENCE
+4 4 MAXIMUM DIFFERENCE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2057.table b/definitions/bufr/tables/0/wmo/9/codetables/2057.table
new file mode 100644
index 0000000..a5cb21e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2057.table
@@ -0,0 +1,6 @@
+0 0 NESTED GRID MODEL (NMG)
+1 1 AVIATION MODEL(AVN)
+2 2 MEDIUM RANGE FORECAST (MRF) MODEL
+3 3 GLOBAL DATA ASSIMILATION SYSTEM (GDAS) FORECAST MODEL
+4 4 PRIOR SOUNDINGS (WITHIN 3 HOURS OF CURRENT TIME)
+5 5 CLIMATOLOGY
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2058.table b/definitions/bufr/tables/0/wmo/9/codetables/2058.table
new file mode 100644
index 0000000..258c4ad
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2058.table
@@ -0,0 +1,5 @@
+0 0 12 HOUR AND 18 HOUR
+1 1 18 HOUR AND 24 HOUR
+2 2  6 HOUR AND 12 HOUR
+3 3 GREATER THAN 24 HOUR
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2059.table b/definitions/bufr/tables/0/wmo/9/codetables/2059.table
new file mode 100644
index 0000000..58f9c5c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2059.table
@@ -0,0 +1,5 @@
+0 0 NCEP NESTED GRID MODEL ANALYSIS
+1 1 NCEP AVIATION MODEL ANALYSIS
+2 2 NCEP MEDIUM RANGE FORECAST MODEL ANALYSIS
+3 3 NCEP GLOBAL DATA ASSIMILATION SYSTEM FORECAST MODEL ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2060.table b/definitions/bufr/tables/0/wmo/9/codetables/2060.table
new file mode 100644
index 0000000..84a612d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2060.table
@@ -0,0 +1,7 @@
+0 0 CURRENT SURFACE HOURLY REPORTS
+1 1 CURRENT SHIP REPORTS
+2 2 CURRENT BUOY REPORTS
+3 3 ONE HOUR OLD SURFACE HOURLY REPORTS
+4 4 ONE HOUR SHIP OLD REPORTS
+5 5 ONE HOUR BUOY OLD REPORTS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2061.table b/definitions/bufr/tables/0/wmo/9/codetables/2061.table
new file mode 100644
index 0000000..3298d90
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2061.table
@@ -0,0 +1,3 @@
+0 0 INERTIAL NAVIGATOR SYSTEM
+1 1 OMEGA
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2062.table b/definitions/bufr/tables/0/wmo/9/codetables/2062.table
new file mode 100644
index 0000000..7083db9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2062.table
@@ -0,0 +1,7 @@
+0 0 ASDAR
+1 1 ASDAR(ACARS ALSO AVAILABLE BUT NOT OPERATIVE)
+2 2 ASDAR(ACARS ALSO AVAILABLE AND OPERATIVE)
+3 3 ACARS
+4 4 ACARS(ASDAR ALSO AVALILABLE BUT NOT OPERATIVE)
+5 5 ACARS(ASDAR ALSO AVAILABLE AND OPERATIVE)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2064.table b/definitions/bufr/tables/0/wmo/9/codetables/2064.table
new file mode 100644
index 0000000..7414302
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2064.table
@@ -0,0 +1,4 @@
+0 0 GOOD
+1 1 BAD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2066.table b/definitions/bufr/tables/0/wmo/9/codetables/2066.table
new file mode 100644
index 0000000..b1778d1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2066.table
@@ -0,0 +1,4 @@
+0 0 TRS 2000
+1 1 IMS 1500C
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2070.table b/definitions/bufr/tables/0/wmo/9/codetables/2070.table
new file mode 100644
index 0000000..5f294e6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2070.table
@@ -0,0 +1,13 @@
+0 0 ACTUAL LOCATION IN SECONDS
+1 1 ACTUAL LOCATION IN MINUTES
+2 2 ACTUAL LOCATION IN DEGREES
+3 3 ACTUAL LOCATION IN DECIDEGREES
+4 4 ACTUAL LOCATION OM CENTIDEGREES
+5 5 REFERENCED TO CHECKPOINT IN SECONDS
+6 6 REFERENCED TO CHECKPOINT IN MINUTES
+7 7 REFERENCED TO CHECKPOINT IN DEGREES
+8 8 REFERENCED TO CHECKPOINT IN DECIDEGREES
+9 9 REFERENCED TO CHECKPOINT IN CENTIDEGREES
+10 10 ACTUAL LOCATION IN TENTHS OF A MINUTE
+11 11 REFERENCED TO CHECKPOINT IN TENTHS OF A MINUTE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2080.table b/definitions/bufr/tables/0/wmo/9/codetables/2080.table
new file mode 100644
index 0000000..b0eb6d2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2080.table
@@ -0,0 +1,5 @@
+0 0 KAYSAM
+1 1 TOTEX
+2 2 KKS
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2081.table b/definitions/bufr/tables/0/wmo/9/codetables/2081.table
new file mode 100644
index 0000000..4c0f1dc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2081.table
@@ -0,0 +1,9 @@
+0 0 GP26
+1 1 GP28
+2 2 GP30
+3 3 HM26
+4 4 HM28
+5 5 HM30
+6 6 SV16
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2083.table b/definitions/bufr/tables/0/wmo/9/codetables/2083.table
new file mode 100644
index 0000000..61c3e1e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2083.table
@@ -0,0 +1,6 @@
+0 0 HIGH BAY
+1 1 LOW BAY
+2 2 BALLOON INFLATION LAUNCH SYSTEM (BILS)
+3 3 ROOF-TOP BILS
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2084.table b/definitions/bufr/tables/0/wmo/9/codetables/2084.table
new file mode 100644
index 0000000..be6430a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2084.table
@@ -0,0 +1,5 @@
+0 0 HYDROGEN
+1 1 HELIUM
+2 2 NATURAL GAS
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2095.table b/definitions/bufr/tables/0/wmo/9/codetables/2095.table
new file mode 100644
index 0000000..79f4996
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2095.table
@@ -0,0 +1,5 @@
+0 0 CAPACITANCE ANEROID
+1 1 DERIVED FROM GPS
+2 2 RESISTIVE STRAIN GAUGE
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2096.table b/definitions/bufr/tables/0/wmo/9/codetables/2096.table
new file mode 100644
index 0000000..b856de9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2096.table
@@ -0,0 +1,5 @@
+0 0 ROD THERMISTOR
+1 1 BEAD THERMISTOR
+2 2 CAPACITANCE BEAD
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2097.table b/definitions/bufr/tables/0/wmo/9/codetables/2097.table
new file mode 100644
index 0000000..0e511a1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2097.table
@@ -0,0 +1,8 @@
+0 0 VIZ MARK II CARBON HYGRISTOR
+1 1 VIZ B2 HYGRISTOR
+2 2 VAISALA A-HUMICAP
+3 3 VAISALA H-HUMICAP
+4 4 CAPACITANCE SENSOR
+5 5 VAISALA RS90
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2098.table b/definitions/bufr/tables/0/wmo/9/codetables/2098.table
new file mode 100644
index 0000000..6eb06d4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2098.table
@@ -0,0 +1,5 @@
+0 0 HH POLARISATION
+1 1 VV POLARISATION
+2 2 HV POLARISATION REAL VALUED COMPONENT
+3 3 HV POLARISATION IMAGINARY VALUED COMPONENT
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2101.table b/definitions/bufr/tables/0/wmo/9/codetables/2101.table
new file mode 100644
index 0000000..efdb3ec
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2101.table
@@ -0,0 +1,10 @@
+0 0 CENTRE FRONT-FED PARABOLOID
+1 1 OFFSET FRONT-FED PARABOLOID
+2 2 CENTRE CASSEGRAIN PARABOLOID
+3 3 OFFSET CASSEGRAIN PARABOLOID
+4 4 PLANAR ARRAY
+5 5 COAXIAL-COLLINEAR ARRAY
+6 6 YAGI ELEMENTS ARRAY
+7 7 MICROSTRIP
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2103.table b/definitions/bufr/tables/0/wmo/9/codetables/2103.table
new file mode 100644
index 0000000..3b7ee27
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2103.table
@@ -0,0 +1,2 @@
+1 1 RADAR ANTENNA IS PROTECTED BY A RADOME
+2 2 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2104.table b/definitions/bufr/tables/0/wmo/9/codetables/2104.table
new file mode 100644
index 0000000..100081a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2104.table
@@ -0,0 +1,7 @@
+0 0 HORIZONTAL POLARISATION
+1 1 VERTICAL POLARISATION
+2 2 RIGHT CIRCULAR POLARISATION
+3 3 LEFT CIRCULAR POLARSZATION
+4 4 HORIZONTAL AND VERTICAL POLARISATION
+5 5 RIGHT AND LEFT CIRCULAR POLARISATION
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/21066.table b/definitions/bufr/tables/0/wmo/9/codetables/21066.table
new file mode 100644
index 0000000..a3fd93c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/21066.table
@@ -0,0 +1,11 @@
+1 1 PROCESSING EQUIPMENT NOT WORKING
+2 2 EQUIPMENT FAILED
+3 3 PRF CODE CHANGED DURING IMAGE GENERATION
+4 4 SAMPLINH WINDOW CHANGED DURING IMAGE GENERATION
+5 5 GAIN CHANGED DURING IMAGE GENERATION
+6 6 CHIRP REPLICA EXCEEDS SPECIFIC VALUE
+7 7 INPUT DATA MEAN AND STANDARD DEVIATION OF IN-PHASE AND"    QUADRATURE OUT OF RANGE
+8 8 DOPPLER CENTROID CONFIDENCE > MMCC VALUE
+9 9 DOPPLER CENTROID ABSOLUTE VALUE > PRF/2
+10 10 DOPPLER AMBIGUITY CONFIDENCE < MMCC VALUE
+11 11 OUTPUT DATA MEAN AND STANDARD DEVIATION =< MMCC VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/21067.table b/definitions/bufr/tables/0/wmo/9/codetables/21067.table
new file mode 100644
index 0000000..9d0c51b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/21067.table
@@ -0,0 +1,12 @@
+1 1 NO FOREBEAM CALCULATION
+2 2 NO MIDBEAM CALCULATION
+3 3 NO AFTBEAM CALCULATION
+4 4 FOREBEAM ARCING DETECTED
+5 5 MID ARCING DETECTED
+6 6 AFTBEAM ARCING DETECTED
+7 7 ANY BEAM NOISE CONTENT ABOVE OR EQUAL TO TRESHOLD
+8 8 LAND (ANY LAND IN CELL FOOTPRINT)
+9 9 AUTONOMOUS AMBIGUITY REMOVAL NOT USED
+10 10 METEOROLOGICAL BACKGROUND NOT USED
+11 11 MINIMUM RESIDUAL EXCEEDED TRESHOLD
+12 12 FRAME CHECKSUM ERROR DETECTED
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/21068.table b/definitions/bufr/tables/0/wmo/9/codetables/21068.table
new file mode 100644
index 0000000..8e8b38e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/21068.table
@@ -0,0 +1,7 @@
+1 1 STANDARD DEVIATION OF WIND SPEED OUTSIDE MMCC LIMIT
+2 2 STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT OUTSIDE MMCC L"    IMIT
+3 3 STANDARD DEVIATION OF ALTITUDE OUTSIDE MMCC LIMIT
+4 4 MEAN PEAKINESS OUTSIDE MMCC LIMIT
+5 5 FRAME CHECKSUM ERROR DETECTED
+6 6 HEIGHT-TIME LOOP TIME CONSTANT CORRECTION NOT PERFORMED
+7 7 NOT ENOUGH MEASUREMENTS ( N< 10)
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/21069.table b/definitions/bufr/tables/0/wmo/9/codetables/21069.table
new file mode 100644
index 0000000..c343130
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/21069.table
@@ -0,0 +1,9 @@
+1 1 12.0 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+2 2 11.0 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+3 3  3.7 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+4 4  1.6 MICROMETERS CHANNEL PRESENT IN SOURCE DATA
+5 5 CLOUD IDENTIFICATION USED 1.6 MICROMETERS"    HISTOGRAM REFLECTANCE CLOUD TEST
+6 6 1.6 MICROMETERS HISTOGRAM REFLECTANCE CLOUD"    TEST USED DYNAMIC TRESHOLD
+7 7 SUN GLINT DETECTED BY 1.6 MICROMETERS REFLECTANCE CLOUD TEST
+8 8 3.7 MICROMETERS USED IN SEA-SURFACE TEMPERATURE RETRIEVAL
+9 9 SEA-SURFACE TEMPERATURE DERIVATION USED DAYTIME DATA"    (NIGHT-TIME IF ZERO)
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/21070.table b/definitions/bufr/tables/0/wmo/9/codetables/21070.table
new file mode 100644
index 0000000..7849b6c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/21070.table
@@ -0,0 +1,23 @@
+1 1 CELL 1:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+2 2 CELL 2:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL CELL NUMB"    ERING
+3 3 CELL 3:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+4 4 CELL 4:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL NW NE
+5 5 CELL 5:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 7 8 9
+6 6 CELL 6:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 4 5 6
+7 7 CELL 7:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 1 2 3
+8 8 CELL 8:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL SW SE
+9 9 CELL 9:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+10 10 -18 DUAL VIEW SST RETRIEVAL USED 3.7 MICRON CHANNEL (ONE BIT"    PER 10-ARCMIN CELL)
+11 11 CELL 1:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+12 12 CELL 3:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+13 13 CELL 4:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL NW NE
+14 14 CELL 5:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 7 8 9
+15 15 CELL 6:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 4 5 6
+16 16 CELL 7:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL 1 2 3
+17 17 CELL 8:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL SW SE
+18 18 CELL 9:NADIR-ONLY VIEW SST USED 3.7 MICRON CHANNEL
+19 19 NADIR VIEW CONTAINS DAY-TIME DATA (NIGHT IF ZERO)
+20 20 FORWARD VIEW CONTAINS DAY-TIME DATA (NIGHT IF ZERO)
+21 21 RECORD CONTAINS CONTRIBUTIONS FROM INSTRUMENT SCANS ACQUIRED"     WHEN ERS PLATFORM NOT IN YAW-STEERING MODE
+22 22 RECORD CONTAINS CONTRIBUTIONS FROM INSTRUMENT SCANS FOR WHIC"    H PRODUCT CONFIDENCE DATA SHOW QUALITY IS POOR OR UNKNOWN
+23 23 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/21072.table b/definitions/bufr/tables/0/wmo/9/codetables/21072.table
new file mode 100644
index 0000000..521f791
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/21072.table
@@ -0,0 +1,3 @@
+1 1 HEIGHT ERROR CORRECTION APPLIED INSTEAD OF OPEN LOOP CALIBRA"    TION
+2 2 MICROWAVE SOUNDER USED FOR TROPOSPHERE CORRECTION
+3 3 AGC OUTPUT CORRECTION APPLIED INSTED OF OPEN LOOP CALIBRATIO"    N
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/21073.table b/definitions/bufr/tables/0/wmo/9/codetables/21073.table
new file mode 100644
index 0000000..9538fa5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/21073.table
@@ -0,0 +1,8 @@
+1 1 BLANK DATA RECORD
+2 2 TEST
+3 3 CALIBRATION (CLOSED LOOP)
+4 4 BITE
+5 5 ACQUISITION ON ICE
+6 6 ACQUISITION ON OCEAN
+7 7 TRACKING ON ICE
+8 8 TRACKING ON OCEAN
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/21076.table b/definitions/bufr/tables/0/wmo/9/codetables/21076.table
new file mode 100644
index 0000000..bc52ac5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/21076.table
@@ -0,0 +1,4 @@
+0 0 LINEAR
+1 1 LOGARITHMIC (BASE E)
+2 2 LOGARITHMIC (BASE 10)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/21109.table b/definitions/bufr/tables/0/wmo/9/codetables/21109.table
new file mode 100644
index 0000000..0990694
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/21109.table
@@ -0,0 +1,8 @@
+1 1 NOT ENOUGH GOOD SIGMA-0 AVAILABLE FOR WIND RETRIEVAL
+2 2 POOR AZIMUTH DIVERSITY AMONG SIGMA0- FOR  WIND RETRIEVAL
+8 8 SOME PORTION OF WIND VECTOR CELL IS OVER LAND
+9 9 SOME PORTION OF WIND VECTOR CELL IS OVER ICE
+10 10 WIND RETRIEVAL NOT PERFORMED FOR WIND  VECTOR CELL
+11 11 REPORTED WIND SPEED IS GREATER THAN 30 M/S
+12 12 REPORTED WIND SPEED IS LESS THAN OR EQUAL TO 3 M/S
+17 17 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/21115.table b/definitions/bufr/tables/0/wmo/9/codetables/21115.table
new file mode 100644
index 0000000..3bdb683
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/21115.table
@@ -0,0 +1,11 @@
+1 1 SIGMA-0 MEASUREMENT IS NOT USABLE
+2 2 SIGNAL TO NOISE RATIO IS LOW
+3 3 SIGMA-0 IS NEGATIVE
+4 4 SIGMA-0 IS OUTSIDE OF ACCEPTABLE RANGE
+5 5 SCATTEROMETER PULSE QUALITY IS NOT ACCEPTABLE
+6 6 SIGMA-0 CELL LOCATION ALGORITHM DOES NOT CONVERGE
+7 7 FREQUENCY SHIFT LIES BEYOND THE RANGE OF THE X FACTOR TABLE
+8 8 SPACECRAFT TEMPERATURE IS BEYOND CALIBRATION COEFFICIENT RAN"    GE
+9 9 NO APPLICABLE ATTITUDE RECORDS WERE FOUND FOR THIS SIGMA-0
+10 10 INTERPOLATED EPHEMERIS DATA ARE NOT ACCEPTABLE FOR THIS SIGM"    A-0
+17 17 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/21116.table b/definitions/bufr/tables/0/wmo/9/codetables/21116.table
new file mode 100644
index 0000000..10b5c53
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/21116.table
@@ -0,0 +1,16 @@
+1 1 CALIBRATION/MEASUREMENT PULSE FLAG (1)
+2 2 CALIBRATION/MEASUREMENT PULSE FLAG (2)
+3 3 OUTER ANTENNA BEAM
+4 4 SIGMA-0 CELL IS AFT OF SPACECRAFT
+5 5 CURRENT MODE (1)
+6 6 CURRENT MODE (2)
+7 7 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (1)
+8 8 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (2)
+9 9 EFFECTIVE GATE WIDTH - SLICE RESOLUTION (3)
+10 10 LOW RESOLUTION MODE - WHOLE PULSE DATA
+11 11 SCATTEROMETER ELECTRONIC SUBSYSTEM B
+12 12 ALTERNATE SPIN RATE - 19.8 RPM
+13 13 RECEIVER PROTECTION ON
+14 14 SLICES PER COMPOSITE FLAG (1)
+15 15 SLICES PER COMPOSITE FLAG (2)
+16 16 SLICES PER COMPOSITE FLAG (3)
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/21119.table b/definitions/bufr/tables/0/wmo/9/codetables/21119.table
new file mode 100644
index 0000000..d46b083
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/21119.table
@@ -0,0 +1,14 @@
+0 0 RESERVED
+1 1 SASS
+2 2 SASS2
+3 3 NSCAT0
+4 4 NSCAT1
+5 5 NSCAT2
+6 6 QSCAT0
+7 7 QSCAT1
+31 31 CMOD1
+32 32 CMOD2
+33 33 CMOD3
+34 34 CMOD4
+35 35 CMOD5
+64 64 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/21144.table b/definitions/bufr/tables/0/wmo/9/codetables/21144.table
new file mode 100644
index 0000000..1f082e6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/21144.table
@@ -0,0 +1 @@
+1 1 RAIN
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2115.table b/definitions/bufr/tables/0/wmo/9/codetables/2115.table
new file mode 100644
index 0000000..c7e866c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2115.table
@@ -0,0 +1,7 @@
+0 0 PDB
+1 1 RSOIS
+2 2 ASOS
+3 3 PSYCHROMETER
+4 4 F420
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/21150.table b/definitions/bufr/tables/0/wmo/9/codetables/21150.table
new file mode 100644
index 0000000..8510046
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/21150.table
@@ -0,0 +1,4 @@
+0 0 DATA FROM SINGLE GROUND STATION (NO CO-LOCATION)
+1 1 DATA FROM MULTIPLE GROUND STATION (CO-LOCATED DATA)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/21155.table b/definitions/bufr/tables/0/wmo/9/codetables/21155.table
new file mode 100644
index 0000000..27cc03d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/21155.table
@@ -0,0 +1,16 @@
+1 1 NOT ENOUGH GOOD SIGMA-0 AVAILABLE FOR WIND RETRIEVAL
+2 2 POOR AZIMUTH DIVERSITY AMONG SIGMA-0 FOR WIND RETRIEVAL
+3 3 ANY BEAM NOISE CONTENT ABOVE TRESHOLD
+4 4 PRODUCT MONITORING NOT USED
+5 5 PRODUCT MONITORING FLAG
+6 6 KNMI QUALITY CONTROL FAILS
+7 7 VARIATIONAL QUALITY CONTROL FAILS
+8 8 SOME PORTION OF WIND VECTOR CELL IS OVER LAND
+9 9 SOME PORTION OF WIND VECTOR CELL IS OVER ICE
+10 10 WIND RETRIEVAL NOT PERFORMED FOR WIND VECTOR CELL
+11 11 REPORTED WIND SPEED IS GREATER THAN 30 M/S
+12 12 REPORTED WIND SPEED IS LESS THAN OR EQUAL TO 3 M/S
+13 13 RAIN FLAG FOR THE WIND VECTOR CELL IS NOT USABLE
+14 14 RAIN FLAG ALGORITHM DETECTS RAIN
+15 15 NO METEOROLOGICAL BACKGROUND USED
+16 16 DATA ARE REDUNDANT
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/21158.table b/definitions/bufr/tables/0/wmo/9/codetables/21158.table
new file mode 100644
index 0000000..dd53c51
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/21158.table
@@ -0,0 +1,4 @@
+0 0 ACCEPTABLE
+1 1 NOT ACCEPTABLE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/21159.table b/definitions/bufr/tables/0/wmo/9/codetables/21159.table
new file mode 100644
index 0000000..1703f9b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/21159.table
@@ -0,0 +1,4 @@
+0 0 GOOD
+1 1 USABLE
+2 2 BAD
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/21169.table b/definitions/bufr/tables/0/wmo/9/codetables/21169.table
new file mode 100644
index 0000000..9b93444
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/21169.table
@@ -0,0 +1,4 @@
+0 0 NO ICE PRESENT
+1 1 ICE PRESENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2119.table b/definitions/bufr/tables/0/wmo/9/codetables/2119.table
new file mode 100644
index 0000000..33ae089
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2119.table
@@ -0,0 +1,8 @@
+0 0 INTERMEDIATE FREQUENCY CALIBRATION MODE (IFCAL)
+1 1 BUILT-IN TEST EQUIPMENT DIGITAL (BITE DGT)
+2 2 BUILT-IN TEST EQUIPMENT RADIO FREQUENCY (BITE RF)
+3 3 PRESET TRACKING (PSET TRK)
+4 4 PRESET LOOP OUT
+5 5 ACQUISITION
+6 6 TRACKING
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2131.table b/definitions/bufr/tables/0/wmo/9/codetables/2131.table
new file mode 100644
index 0000000..f4336ef
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2131.table
@@ -0,0 +1 @@
+1 1 STC OPERATIONAL
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2143.table b/definitions/bufr/tables/0/wmo/9/codetables/2143.table
new file mode 100644
index 0000000..89bdc1b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2143.table
@@ -0,0 +1,21 @@
+0 0 RESERVED
+1 1 BREWER SPECTROPHOTOMETER
+2 2 CAVER TEICHERT
+3 3 DOBSON
+4 4 DOBSON (JAPAN)
+5 5 EHMET
+6 6 FECKER TELESCOPE
+7 7 HOELPER
+8 8 JODMETER
+9 9 FILTER OZONOMETER M-83
+10 10 MAST
+11 11 OXFORD
+12 12 PAETZOLD
+13 13 REGENER
+14 14 RESERVED FOR FUTURE USE
+15 15 VASSY FILTER OZONOMETER
+16 16 CARBON IODIDE
+17 17 SURFACE OZONE BUBLER
+18 18 FILTER OZONOMETER M-124
+19 19 ECC SONDE
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2144.table b/definitions/bufr/tables/0/wmo/9/codetables/2144.table
new file mode 100644
index 0000000..c245c49
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2144.table
@@ -0,0 +1,8 @@
+0 0 DIRECT SUN, ATTENUATOR #0
+1 1 DIRECT SUN, ATTENUATOR #1
+2 2 DIRECT SUN, ATTENUATOR #2
+3 3 FOCUSSED MOON
+4 4 FOCUSSED SUN
+5 5 FOCUSSED SUN CORRECTED WITH ADJACENT SKY MEASUREMENTS
+6 6 ZENITH SKY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2145.table b/definitions/bufr/tables/0/wmo/9/codetables/2145.table
new file mode 100644
index 0000000..63400b2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2145.table
@@ -0,0 +1,9 @@
+0 0 WAVELENGTH AD ORDINARY SETTING
+1 1 WAVELENGTH BD ORDINARY SETTING
+2 2 WAVELENGTH CD ORDINARY SETTING
+3 3 WAVELENGTH CC' ORDINARY SETTING
+4 4 WAVELENGTH AD FOCUSSING IMAGE
+5 5 WAVELENGTH BD FOCUSSING IMAGE
+6 6 WAVELENGTH CD FOCUSSING IMAGE
+7 7 WAVELENGTH CC' FOCUSSING IMAGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2146.table b/definitions/bufr/tables/0/wmo/9/codetables/2146.table
new file mode 100644
index 0000000..14655b9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2146.table
@@ -0,0 +1,11 @@
+0 0 ON DIRECT SUN
+1 1 ON DIRECT MOON
+2 2 ON BLUE ZENITH SKY
+3 3 ON ZENITH CLOUD (UNIFORM STRATIFIED LAYER OF SMALL OPACITY)
+4 4 ON ZENITH CLOUD (UNIFORM OR MODERATELY VARIABLE LAYER OF MED"    IUM OPACITY)
+5 5 ON ZENITH CLOUD (UNIFORM OR MODERATELY VARIABLE LAYER OF LAR"    GE OPACITY)
+6 6 ON ZENITH CLOUD (HIGHLY VARIABLE OPACITY, WITH OR WITOUT PRE"    CIPITATION)
+7 7 ON ZENITH CLOUD (FOG)
+8 8 ON ZENITH HAZE
+9 9 ON DIRECT SUN THROUGH THIN CLOUD, FOG OR HAZE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2148.table b/definitions/bufr/tables/0/wmo/9/codetables/2148.table
new file mode 100644
index 0000000..3e5d884
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2148.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 ARGOS
+2 2 GPS
+3 3 GOES DCP
+4 4 METEOSAT DCP
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2149.table b/definitions/bufr/tables/0/wmo/9/codetables/2149.table
new file mode 100644
index 0000000..7b179c6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2149.table
@@ -0,0 +1,22 @@
+0 0 UNSPECIFIED DRIFTING BUOY
+1 1 STANDARD LAGRANGIAN DRIFTER (GLOBAL DRIFTER PROGRAMME)
+2 2 STANDARD FGGE TYPE DRIFTING BUOY
+3 3 WIND MEASURING FGGE TYPE DRIFTING BUOY
+4 4 ICE FLOAT
+8 8 UNSPECIFIED SUB-SURFACE FLOAT
+9 9 SOFAR
+10 10 ALACE
+11 11 MARVOR
+12 12 RAFOS
+16 16 UNSPECIFIED MOORED BUOY
+17 17 NOMAD
+18 18 3-METRE DISCUS
+19 19 10-12-METRE DISCUS
+20 20 ODAS 30 SERIES
+21 21 ATLAS (E.G. TAO AREA)
+22 22 TRITON BUOY
+23 23 RESERVED
+24 24 OMNIDIRECTIONAL WAVERIDER
+25 25 DIRECTIONAL WAVERIDER
+26 26 SUB-SURFACE ARGO FLOAT
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2150.table b/definitions/bufr/tables/0/wmo/9/codetables/2150.table
new file mode 100644
index 0000000..b864835
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2150.table
@@ -0,0 +1,55 @@
+0 0 RESERVED
+1 1 HIRS 1
+2 2 HIRS 2
+3 3 HIRS 3
+4 4 HIRS 4
+5 5 HIRS 5
+6 6 HIRS 6
+7 7 HIRS 7
+8 8 HIRS 8
+9 9 HIRS 9
+10 10 HIRS 10
+11 11 HIRS 11
+12 12 HIRS 12
+13 13 HIRS 13
+14 14 HIRS 14
+15 15 HIRS 15
+16 16 HIRS 16
+17 17 HIRS 17
+18 18 HIRS 18
+19 19 HIRS 19
+20 20 HIRS 20
+21 21 MSU 1
+22 22 MSU 2
+23 23 MSU 3
+24 24 MSU 4
+25 25 SSU 1
+26 26 SSU 2
+27 27 SSU 3
+28 28 AMSU-A 1
+29 29 AMSU-A 2
+30 30 AMSU-A 3
+31 31 AMSU-A 4
+32 32 AMSU-A 5
+33 33 AMSU-A 6
+34 34 AMSU-A 7
+35 35 AMSU-A 8
+36 36 AMSU-A 9
+37 37 AMSU-A 10
+38 38 AMSU-A 11
+39 39 AMSU-A 12
+40 40 AMSU-A 13
+41 41 AMSU-A 14
+42 42 AMSU-A 15
+43 43 AMSU-B 1
+44 44 AMSU-B 2
+45 45 AMSU-B 3
+46 46 AMSU-B 4
+47 47 AMSU-B 5
+48 48 AVHRR 1
+49 49 AVHRR 2
+50 50 AVHRR 3A
+51 51 AVHRR 3B
+52 52 AVHRR 4
+53 53 AVHRR 5
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2151.table b/definitions/bufr/tables/0/wmo/9/codetables/2151.table
new file mode 100644
index 0000000..b1e62e6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2151.table
@@ -0,0 +1,9 @@
+0 0 HIRS
+1 1 MSU
+2 2 SSU
+3 3 AMSU-A1-1
+4 4 AMSU-A1-2
+5 5 AMSU-A2
+6 6 AMSU-B
+7 7 AVHRR
+2047 2047 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2152.table b/definitions/bufr/tables/0/wmo/9/codetables/2152.table
new file mode 100644
index 0000000..7c55d18
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2152.table
@@ -0,0 +1,11 @@
+1 1 HIGH-RESOLUTION INFRARED SOUNDER(HIRS)
+2 2 MICROWAVE SOUNDING UNIT (MSU)
+3 3 STRATOSPHERIC SOUNDING UNIT (SSU)
+4 4 AMI WIND MODE
+5 5 AMI WAVE MODE
+6 6 AMI IMAGE MODE
+7 7 RADAR ALTIMETER
+8 8 ATSR
+9 9 GEOSTATIONARY IMAGER
+10 10 GEOSTATIONARY SOUNDER
+11 11 GEOSTATIONARY EARTH RADIATION (GERB)
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2158.table b/definitions/bufr/tables/0/wmo/9/codetables/2158.table
new file mode 100644
index 0000000..97c4449
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2158.table
@@ -0,0 +1,8 @@
+1 1 MISMATCH IN RED VEC HPA
+2 2 MISMATCH IN RED VEC RFSS
+3 3 PTR CALIBRATION BAND 320 MHZ (KU)
+4 4 PTR CALIBRATION BAND 80 MHZ (KU)
+5 5 PTR CALIBRATION BAND 20 MHZ (KU)
+6 6 PTR CALIBRATION BAND 160 MHZ (S)
+7 7 KU FLIGHT CALIBRATION PARAMETERS AVAILABLE
+8 8 S FLIGHT CALIBRATION PARAMETERS AVAILABLE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2159.table b/definitions/bufr/tables/0/wmo/9/codetables/2159.table
new file mode 100644
index 0000000..d022cce
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2159.table
@@ -0,0 +1,5 @@
+1 1 TEMPERATURE INCONSISTENCY
+2 2 DATA IS MISSING
+3 3 REDUNDANCY CHANNEL
+4 4 POWER BUS PROTECTION
+5 5 OVERVOLTAGE/OVERLOAD PROTECTION
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2163.table b/definitions/bufr/tables/0/wmo/9/codetables/2163.table
new file mode 100644
index 0000000..4658f3d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2163.table
@@ -0,0 +1,15 @@
+0 0 AUTO EDITOR
+1 1 IRW HEIGHT ASSIGNMENT
+2 2 WV HEIGHT ASSIGNMENT
+3 3 H2O INTERCEPT HEIGHT ASSIGNMENT
+4 4 CO2 SLICING HEIGHT ASSIGNMENT
+5 5 LOW PIXEL MAX GRADIENT
+6 6 HIGHER PIXEL MAX GRADIENT
+7 7 PRIMARY HEIGHT ASSIGNMENT
+8 8 LAYER THICKNESS ASSIGNMENT
+9 9 CUMULATIVE CONTRIBUTION FUNCTION -10 PERCENT HEIGHT
+10 10 CUMULATIVE CONTRIBUTION FUNCTION -50 PERCENT HEIGHT
+11 11 CUMULATIVE CONTRIBUTION FUNCTION -90 PERCENT HEIGHT
+12 12 CUMULATIVE CONTRIBUTION FUNCTION - HEIGHT OF"    MAXIMUM GRADIENT
+14 14 COMPOSITE HEIGHT ASSIGNMENT
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2164.table b/definitions/bufr/tables/0/wmo/9/codetables/2164.table
new file mode 100644
index 0000000..01dc970
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2164.table
@@ -0,0 +1,4 @@
+0 0 LP - NORMS LEAST SQUARE MINIMUM
+1 1 EN - EUCLIDEAN NORM WITH RADIANCE CORRELATION
+2 2 CC - CROSS CORRELATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2166.table b/definitions/bufr/tables/0/wmo/9/codetables/2166.table
new file mode 100644
index 0000000..efac38f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2166.table
@@ -0,0 +1,6 @@
+0 0 TYPE NOT DEFINED
+1 1 AUTOMATED STATISTICAL REGRESSION
+2 2 CLEAR PATH
+3 3 PARTLY CLOUDY PATH
+4 4 CLOUDY PATH
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2167.table b/definitions/bufr/tables/0/wmo/9/codetables/2167.table
new file mode 100644
index 0000000..bb0ad11
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2167.table
@@ -0,0 +1,4 @@
+0 0 METHOD NOT DEFINE
+1 1 1B RAW RADIANCE
+2 2 PROCESSED RADIANCE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2169.table b/definitions/bufr/tables/0/wmo/9/codetables/2169.table
new file mode 100644
index 0000000..6e70eb6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2169.table
@@ -0,0 +1,4 @@
+0 0 CUP ROTOR
+1 1 PROPELLER ROTOR
+2 2 WIND OBSERVATION THROUGH AMBIENT NOISE (WOTAN)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2172.table b/definitions/bufr/tables/0/wmo/9/codetables/2172.table
new file mode 100644
index 0000000..10b464d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2172.table
@@ -0,0 +1,3 @@
+1 1 RETRIEVAL FROM A NADIR SOUNDING
+2 2 RETRIEVAL FROM A LIMB SOUNDING
+255 255 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2175.table b/definitions/bufr/tables/0/wmo/9/codetables/2175.table
new file mode 100644
index 0000000..e3df922
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2175.table
@@ -0,0 +1,9 @@
+0 0 MANUAL MEASUREMENT
+1 1 TIPPING BUCKET METHOD
+2 2 WEIGHING METHOD
+3 3 OPTICAL METHOD
+4 4 PRESSURE METHOD
+5 5 FLOAT METHOD
+6 6 DROP COUNTER METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2176.table b/definitions/bufr/tables/0/wmo/9/codetables/2176.table
new file mode 100644
index 0000000..a16cbc3
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2176.table
@@ -0,0 +1,6 @@
+0 0 MANUAL OBSERVATION
+1 1 VIDEO CAMERA METHOD
+2 2 INFRA-RED METHOD
+3 3 LASER METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2177.table b/definitions/bufr/tables/0/wmo/9/codetables/2177.table
new file mode 100644
index 0000000..b8492e5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2177.table
@@ -0,0 +1,5 @@
+0 0 MANUAL OBSERVATION
+1 1 ULTRASONIC METHOD
+2 2 VIDEO CAMERA METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2178.table b/definitions/bufr/tables/0/wmo/9/codetables/2178.table
new file mode 100644
index 0000000..8953eb7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2178.table
@@ -0,0 +1,5 @@
+0 0 MANUAL OBSERVATION
+1 1 OPTICAL METHOD
+2 2 CAPACITIVE METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2179.table b/definitions/bufr/tables/0/wmo/9/codetables/2179.table
new file mode 100644
index 0000000..a76b878
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2179.table
@@ -0,0 +1,6 @@
+0 0 MANUAL OBSERVATION
+1 1 VAISALA ALGORITHM
+2 2 ASOS (FAA) ALGORITHM
+3 3 AWOS (CANADA) ALGORITHM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2180.table b/definitions/bufr/tables/0/wmo/9/codetables/2180.table
new file mode 100644
index 0000000..f7ec83c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2180.table
@@ -0,0 +1,8 @@
+0 0 MANUAL OBSERVATION
+1 1 OPTICAL SCATTER SYSTEM COMBINED WITH PRECIPITATION"    OCCURRENCE SENSING SYSTEM
+2 2 FORWARD AND/OR BACK-SCATTER SYSTEM OF VISIBLE LIGHT
+3 3 FORWARD AND/OR BACK-SCATTER SYSTEM OF INFRARED LIGHT
+4 4 INFRARED LIGHT EMITTING DIODE (IRED) SYSTEM
+5 5 DOPPLER RADAR SYSTEM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2181.table b/definitions/bufr/tables/0/wmo/9/codetables/2181.table
new file mode 100644
index 0000000..8e6466b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2181.table
@@ -0,0 +1,5 @@
+1 1 RAIN DETECTOR
+2 2 FREEZING RAIN SENSOR
+3 3 ICE DETECTION SENSOR
+4 4 HAIL AND ICE PELLET SENSOR
+20 20 OTHER
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2182.table b/definitions/bufr/tables/0/wmo/9/codetables/2182.table
new file mode 100644
index 0000000..97ffc04
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2182.table
@@ -0,0 +1,7 @@
+0 0 MANUAL MEASUREMENT
+1 1 TRANSMISSOMETER SYSTEM (BASE > 25)
+2 2 TRANSMISSOMETER SYSTEM (BASE < 25 M)
+3 3 FORWARD SCATTER SYSTEM
+4 4 BACK SCATTER SYSTEM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2183.table b/definitions/bufr/tables/0/wmo/9/codetables/2183.table
new file mode 100644
index 0000000..943c327
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2183.table
@@ -0,0 +1,9 @@
+0 0 MANUAL OBSERVATION
+1 1 CEILOMETER SYSTEM
+2 2 INFRARED CAMERA SYSTEM
+3 3 MICROWAVE VISUAL CAMERA SYSTEM
+4 4 SKY IMAGER SYSTEM
+5 5 VIDEO TIME LAPSED CAMERA SYSTEM
+6 6 MICRO PULSE LIDAR (MPL) SYSTEM
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2184.table b/definitions/bufr/tables/0/wmo/9/codetables/2184.table
new file mode 100644
index 0000000..5698dac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2184.table
@@ -0,0 +1,8 @@
+0 0 MANUAL OBSERVATION
+1 1 LIGHTNING IMAGING SENSOR
+2 2 ELECTRICAL STORM IDENTIFICATION SENSOR
+3 3 MAGNETIC FINDER SENSOR
+4 4 LIGHTNING STRIKE SENSOR
+5 5 FLASH COUNTER
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2185.table b/definitions/bufr/tables/0/wmo/9/codetables/2185.table
new file mode 100644
index 0000000..3253397
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2185.table
@@ -0,0 +1,7 @@
+0 0 MANUAL MEASUREMENT
+1 1 BALANCED FLOATING METHOD
+2 2 PRESSURE METHOD
+3 3 ULTRASONIC METHOD
+4 4 HYDRAULIC METHOD
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2186.table b/definitions/bufr/tables/0/wmo/9/codetables/2186.table
new file mode 100644
index 0000000..05e1a36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2186.table
@@ -0,0 +1,23 @@
+1 1 PRECIPITATION-UNKNOWN TYPE
+2 2 LIQUID PRECIPITATION NOT FREEZING
+3 3 LIQUID FREEZING PRECIPITATION
+4 4 DRIZZLE
+5 5 RAIN
+6 6 SOLID PRECIPITATION
+7 7 SNOW
+8 8 SNOW GRAINS
+9 9 SNOW PELLETS
+10 10 ICE PELLETS
+11 11 ICE CRYSTALS
+12 12 DIAMOND DUST
+13 13 SMALL HAIL
+14 14 HAIL
+15 15 GLAZE
+16 16 RIME
+17 17 SOFT RIME
+18 18 HARD RIME
+19 19 CLEAR ICE
+20 20 WET SNOW
+21 21 HOAR FROST
+22 22 DEW
+23 23 WHITE DEW
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2187.table b/definitions/bufr/tables/0/wmo/9/codetables/2187.table
new file mode 100644
index 0000000..def3d2f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2187.table
@@ -0,0 +1,11 @@
+1 1 DUST/SAND WHIRL
+2 2 SQUALLS
+3 3 SAND STORM
+4 4 DUST STORM
+5 5 LIGHTNING - CLOUD TO SURFACE
+6 6 LIGHTNING - CLOUD TO CLOUD
+7 7 LIGHTNING - DISTANT
+8 8 THUNDERSTORM
+9 9 FUNNEL CLOUD NOT TOUCHING SURFACE
+10 10 FUNNEL CLOUD TOUCHING SURFACE
+11 11 SPRAY
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2188.table b/definitions/bufr/tables/0/wmo/9/codetables/2188.table
new file mode 100644
index 0000000..bb8114c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2188.table
@@ -0,0 +1,10 @@
+1 1 FOG
+2 2 ICE FOG
+3 3 STEAM FOG
+7 7 MIST
+8 8 HAZE
+9 9 SMOKE
+10 10 VOLCANIC ASH
+11 11 DUST
+12 12 SAND
+13 13 SNOW
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/2189.table b/definitions/bufr/tables/0/wmo/9/codetables/2189.table
new file mode 100644
index 0000000..710032d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/2189.table
@@ -0,0 +1,4 @@
+1 1 MANUAL OBSERVATION
+2 2 ALL LIGHTNING STRIKES WITHOUT DISCRIMINATION
+3 3 LIGHTNING STRIKES CLOUD TO GROUND ONLY
+4 4 ALL LIGHTNING STRIKES WITH DISCRIMINATION BETWEEN"    CLOUD TO GROUND AND CLOUD TO CLOUD
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/22056.table b/definitions/bufr/tables/0/wmo/9/codetables/22056.table
new file mode 100644
index 0000000..28ddbf4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/22056.table
@@ -0,0 +1,4 @@
+0 0 UPWARDS PROFILE
+1 1 DOWNWARDS PROFILE
+2 2 HORIZONTAL
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/22060.table b/definitions/bufr/tables/0/wmo/9/codetables/22060.table
new file mode 100644
index 0000000..b73ad32
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/22060.table
@@ -0,0 +1,4 @@
+0 0 DROGUE IS DETACHED
+1 1 DROGUE IS ATTACHED
+2 2 DROGUE STATUS UNKNOWN
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/22061.table b/definitions/bufr/tables/0/wmo/9/codetables/22061.table
new file mode 100644
index 0000000..de55e38
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/22061.table
@@ -0,0 +1,11 @@
+0 0 CALM (GLASSY)            HEIGHT     0            M
+1 1 CALM (RIPPLED)           HEIGHT     0     - 0.1  M
+2 2 SMOOTH (WAVELETS)        HEIGHT     0.1   - 0.5  M
+3 3 SLIGHT                   HEIGHT     0.5   - 1.5  M
+4 4 MODERATE                 HEIGHT     1.25  - 2.5  M
+5 5 ROUGH                    HEIGHT     2.5   - 4    M
+6 6 VERY ROUGH               HEIGHT     4     - 6    M
+7 7 HIGH                     HEIGHT     6     - 9    M
+8 8 VERY HIGH                HEIGHT     9     -14    M
+9 9 PHENOMANAL               HEIGHT     OVER   14    M
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/22067.table b/definitions/bufr/tables/0/wmo/9/codetables/22067.table
new file mode 100644
index 0000000..1728310
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/22067.table
@@ -0,0 +1 @@
+0 0 SEE COMMON CODE TABLE C3
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/22068.table b/definitions/bufr/tables/0/wmo/9/codetables/22068.table
new file mode 100644
index 0000000..c11d658
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/22068.table
@@ -0,0 +1 @@
+0 0 SEE COMMON CODE TABLE C4
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/22120.table b/definitions/bufr/tables/0/wmo/9/codetables/22120.table
new file mode 100644
index 0000000..c485b9f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/22120.table
@@ -0,0 +1,13 @@
+0 0 GOOD DATA
+1 1 MAXIMUM (HIGH) WATER LEVEL LIMIT EXCEEDED
+2 2 MINIMUM (LOW) WATER LEVEL LIMIT EXCEEDED
+3 3 RATE OF CHANGE LIMIT FOR WATER LEVEL EXCEEDED
+4 4 FLAT LIMIT FOR WATER LEVEL EXCEEDED
+5 5 OBSERVED MINUS PREDICTED WATER LEVEL VALUE LIMIT EXCEEDED
+6 6 OBSERVED VALUE FROM PRIMARY WATER LEVEL SENSOR MINUS"    BACKUP WATER LEVEL SENSOR
+7 7 VALUE EXCEEDED SPECIFIED TOLERANCE FROM EXPECTED VALUE
+8 8 WATER LEVEL QA PARAMETER (SIGMAS AND/OR OUTLIERS) LIMITS EXC"    EEDED
+9 9 SEA TEMPERATURE OUTSIDE OF EXPECTED RANGE
+10 10 MULTIPLE QC CHECKS (ABOVE) FAILED
+11 11 NO AUTOMATED WATER LEVEL CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/22121.table b/definitions/bufr/tables/0/wmo/9/codetables/22121.table
new file mode 100644
index 0000000..4e4d870
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/22121.table
@@ -0,0 +1,9 @@
+0 0 OPERATIONAL
+1 1 POSSIBLE CLOGGING PROBLEM OR OTHERWISE DEGRADED WATE LEVEL D"    ATA
+2 2 POSSIBLE DATUM SHIFT
+3 3 UNKNOWN STATUS OF WATER LEVEL SENSOR
+4 4 SUSPECTED OR KNOWN SEA TEMPERATURE SENSOR PROBLEM
+5 5 MULTIPLE POSSIBLE PROBLEMS (ABOVE)
+6 6 BAD DATA- DO NOT DISSEMINATE
+7 7 NO MANUAL WATER LEVEL CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/22122.table b/definitions/bufr/tables/0/wmo/9/codetables/22122.table
new file mode 100644
index 0000000..1a5fe36
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/22122.table
@@ -0,0 +1,8 @@
+0 0 GOOD DATA FROM ALL SENSORS
+1 1 WIND DIRECTION OUTSIDE OF ALLOWABLE RANGE
+2 2 WIND SPEED OUTSIDE OF EXPECTED RANGE
+3 3 BAROMETRIC PRESSURE OUTSIDE OF EXPECTED RANGE
+4 4 AIR TEMPERATURE OUTSIDE OF EXPECTED RANGE
+5 5 MULTIPLE SENSOR FAILED QC CHECKS
+6 6 NO AUTOMATED METEOROLOGICAL DATA CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/22123.table b/definitions/bufr/tables/0/wmo/9/codetables/22123.table
new file mode 100644
index 0000000..62b0186
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/22123.table
@@ -0,0 +1,9 @@
+0 0 OPERATIONAL
+1 1 SUSPECTED OR KNOWN PROBLEM WITH WIND SENSOR
+2 2 SUSPECTED OR KNOWN PROBLEM WITH BAROMETRIC PRESSURE SENSOR
+3 3 SUSPECTED OR KNOWN PROBLEM WITH AIR TEMPERATURE SENSOR
+4 4 UNKNOWN STATUS OF ALL SENSORS
+5 5 SUSPECTED OR KNOWN PROBLEMS WITH MULTIPLE SENSORS
+6 6 BAD DATA - DO NOT DISSEMINATE
+7 7 NO MANUAL METEOROLOGICAL DATA CHECKS PERFORMED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/23001.table b/definitions/bufr/tables/0/wmo/9/codetables/23001.table
new file mode 100644
index 0000000..92ac5de
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/23001.table
@@ -0,0 +1,5 @@
+0 0 RESERVED
+1 1 ARTICLES 1 AND 2
+2 2 ARTICLE 3
+3 3 ARTICLE 5.2
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/23002.table b/definitions/bufr/tables/0/wmo/9/codetables/23002.table
new file mode 100644
index 0000000..5070901
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/23002.table
@@ -0,0 +1,16 @@
+0 0 RESERVED
+1 1 NUCLEAR REACTOR ON GROUND
+2 2 NUCLEAR REACTOR ON SEA
+3 3 NUCLEAR REACTOR IN SPACE
+4 4 NUCLEAR FULE FACILITY
+5 5 RADIOACTIVE WASTE MANAGMENT FACITILY
+6 6 TRANSPORT OF NUCLEAR FUEL OR RADIOACTIVE WASTE
+7 7 STORAGE OF NUCLEAR FUEL OR RADIOACTIVE WASTE
+8 8 MANUFACTURE OF RADIO-ISOTOPES
+9 9 USE OF RADIO-ISOTOPES
+10 10 STORAGE OF RADIO-ISOTOPES
+11 11 DISPOSAL OF RADIO-ISOTOPS
+12 12 TRANSPORT OF RADIO-ISOTOPES
+13 13 USE OF RADIO-ISOTOPES FOR POWER GENERATION
+30 30 OTHER
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/23003.table b/definitions/bufr/tables/0/wmo/9/codetables/23003.table
new file mode 100644
index 0000000..e3e891f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/23003.table
@@ -0,0 +1,8 @@
+0 0 NO RELEASE
+1 1 RELEASE TO ATMOSPHERE
+2 2 RELEASE TO WATER
+3 3 RELEASE TO BOTH ATMOSPHERE AND WATER
+4 4 EXPECTED RELEASE TO ATMOSPHERE
+5 5 EXPECTED RELEASE TO WATER
+6 6 EXPECTED RELEASE TO BOTH ATMOSPHERE AND WATER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/23004.table b/definitions/bufr/tables/0/wmo/9/codetables/23004.table
new file mode 100644
index 0000000..804d1e1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/23004.table
@@ -0,0 +1,6 @@
+0 0 NO COUNTERMEASURE
+1 1 EVACUATION
+2 2 SHELTERING
+3 3 PROPHILAXIS
+4 4 WATER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/23005.table b/definitions/bufr/tables/0/wmo/9/codetables/23005.table
new file mode 100644
index 0000000..e22eb99
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/23005.table
@@ -0,0 +1,4 @@
+0 0 INCIDENT STAT DOES NOT UNDERSTAND WHAT HAPPENED
+1 1 INCIDENT STATE KNOWS THE CAUSE OF THE INCIDENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/23006.table b/definitions/bufr/tables/0/wmo/9/codetables/23006.table
new file mode 100644
index 0000000..fe7706a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/23006.table
@@ -0,0 +1,8 @@
+0 0 NO IMPROVEMENT
+1 1 UNSTABLE
+2 2 NO DETERIORATION
+3 3 IMPROVING
+4 4 STABLE
+5 5 DETERIORATING
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/23007.table b/definitions/bufr/tables/0/wmo/9/codetables/23007.table
new file mode 100644
index 0000000..59fc043
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/23007.table
@@ -0,0 +1,5 @@
+0 0 NO RELEASE
+1 1 RELEASE HAS STOPPED
+2 2 RELEASE
+3 3 RELEASE IS CONTINUING
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/23008.table b/definitions/bufr/tables/0/wmo/9/codetables/23008.table
new file mode 100644
index 0000000..b20991c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/23008.table
@@ -0,0 +1,4 @@
+0 0 GASEUS
+1 1 PARTICULATE
+2 2 MIXTURE OF GASEUS AND PARTICULATE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/23009.table b/definitions/bufr/tables/0/wmo/9/codetables/23009.table
new file mode 100644
index 0000000..b20991c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/23009.table
@@ -0,0 +1,4 @@
+0 0 GASEUS
+1 1 PARTICULATE
+2 2 MIXTURE OF GASEUS AND PARTICULATE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/23016.table b/definitions/bufr/tables/0/wmo/9/codetables/23016.table
new file mode 100644
index 0000000..57425e9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/23016.table
@@ -0,0 +1,4 @@
+0 0 NO SIGNIFICANT TOXIC HEALTH EFFECT
+1 1 SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT POSSIBLE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/23018.table b/definitions/bufr/tables/0/wmo/9/codetables/23018.table
new file mode 100644
index 0000000..ccdcc45
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/23018.table
@@ -0,0 +1,6 @@
+0 0 RELEASE NO LONGER OCCURRING
+1 1 RELEASE STILL OCCURRING
+2 2 RELEASE EXPECTED TO INCREASE IN NEXT SIX HOURS
+3 3 RELEASE EXPECTED TO REMAIN CONSTANT IN NEXT SIX HOURS
+4 4 RELEASE EXPECTED TO DECREASE IN NEXT SIX HOURS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/23031.table b/definitions/bufr/tables/0/wmo/9/codetables/23031.table
new file mode 100644
index 0000000..cf20e26
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/23031.table
@@ -0,0 +1,4 @@
+0 0 PLUME WILL NOT ENCOUNTER RAIN IN INCIDENT STATE
+1 1 PLUME WILL ENCOUNTER RAIN IN INCIDENT STATE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/23032.table b/definitions/bufr/tables/0/wmo/9/codetables/23032.table
new file mode 100644
index 0000000..18dea38
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/23032.table
@@ -0,0 +1,4 @@
+0 0 NO SIGNIFICANT CHANGE EXPECTED WITHIN NEXT SIX HOURS
+1 1 ANTICIPATED SIGNIFICANT CHANGE EXPECTED WITHIN NEXT SIX HOUR"    S
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/24003.table b/definitions/bufr/tables/0/wmo/9/codetables/24003.table
new file mode 100644
index 0000000..de7cf4e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/24003.table
@@ -0,0 +1,5 @@
+0 0 NOBLE GASES
+1 1 IODINES
+2 2 CAESIUM
+3 3 TRANSURANICS
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25004.table b/definitions/bufr/tables/0/wmo/9/codetables/25004.table
new file mode 100644
index 0000000..dfe4517
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25004.table
@@ -0,0 +1,4 @@
+0 0 INCOHERENT
+1 1 COHERENT (DOPPLER)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25005.table b/definitions/bufr/tables/0/wmo/9/codetables/25005.table
new file mode 100644
index 0000000..54954d6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25005.table
@@ -0,0 +1,4 @@
+0 0 LOGATITHM - 2.5 DB
+1 1 LINEAR
+2 2 SPECIAL
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25006.table b/definitions/bufr/tables/0/wmo/9/codetables/25006.table
new file mode 100644
index 0000000..35a61ac
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25006.table
@@ -0,0 +1,5 @@
+0 0 ZH TO R CONVERSION
+1 1 (ZH, ZDR) TO (NO.DO) TO R
+2 2 (Z(F1),Z(F2)) TO ATTENUATION TO R
+6 6 OTHER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25009.table b/definitions/bufr/tables/0/wmo/9/codetables/25009.table
new file mode 100644
index 0000000..927847b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25009.table
@@ -0,0 +1,4 @@
+1 1 NONE
+2 2 CALIBRATION TARGET OR SIGNAL
+3 3 AGAINST RAINGAGES
+4 4 AGAINST OTHER INSTRUMENTS (DISTROMETER-ATTENUATION)
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25010.table b/definitions/bufr/tables/0/wmo/9/codetables/25010.table
new file mode 100644
index 0000000..70854d8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25010.table
@@ -0,0 +1,8 @@
+0 0 NONE
+1 1 MAP
+2 2 INSERTION OF HIGHER ELEVATION DATA AND MAP
+3 3 ANALYSIS OF FLUCTUATING LOGARITHM SIGNAL (CLUTTER DETECTION)
+4 4 EXTRACTION OF FLUCTUATING PART OF LINEAR SIGNAL (CLUTTER SUP"    PRESSION)
+5 5 CLUTTER SUPPRESSION DOPPLER
+6 6 MULTIPARAMETER ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25011.table b/definitions/bufr/tables/0/wmo/9/codetables/25011.table
new file mode 100644
index 0000000..f739498
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25011.table
@@ -0,0 +1,4 @@
+0 0 NONE
+1 1 MAP OF CORRECTION FACTORS
+2 2 INTERPOLATION (AZIMUTH OR ELEVATION)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25012.table b/definitions/bufr/tables/0/wmo/9/codetables/25012.table
new file mode 100644
index 0000000..c869a4a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25012.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE
+1 1 SOFTWARE
+2 2 HARDWARE AND SOFTWARE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25013.table b/definitions/bufr/tables/0/wmo/9/codetables/25013.table
new file mode 100644
index 0000000..4c13814
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25013.table
@@ -0,0 +1 @@
+1 1 BRIGHT BAND CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25015.table b/definitions/bufr/tables/0/wmo/9/codetables/25015.table
new file mode 100644
index 0000000..043e587
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25015.table
@@ -0,0 +1 @@
+1 1 RADOME ATTENUATION CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25017.table b/definitions/bufr/tables/0/wmo/9/codetables/25017.table
new file mode 100644
index 0000000..ed48487
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25017.table
@@ -0,0 +1 @@
+1 1 PRECIPITATION ATTENUATION CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25020.table b/definitions/bufr/tables/0/wmo/9/codetables/25020.table
new file mode 100644
index 0000000..ba9b528
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25020.table
@@ -0,0 +1,4 @@
+0 0 FTT (FAST FOURIER TRANSFORM
+1 1 PPP (PULSE PAIR PROCESSING
+2 2 VPC (VECTOR-PHASE CHANGE)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25021.table b/definitions/bufr/tables/0/wmo/9/codetables/25021.table
new file mode 100644
index 0000000..314716b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25021.table
@@ -0,0 +1,5 @@
+1 1 SIMPLE AVERAGE
+2 2 CONSENSUS AVERAGE
+3 3 MEDIAN CHECK
+4 4 VERTICAL CONSISTENCY CHECK
+5 5 OTHER
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25030.table b/definitions/bufr/tables/0/wmo/9/codetables/25030.table
new file mode 100644
index 0000000..aa78900
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25030.table
@@ -0,0 +1,4 @@
+0 0 RUNNING MEAN SEA-SURFACE TEMPERATURE NOT USED BECAUSE USAGE"     CRITERIA NOT MET
+1 1 RUNNING MEAN SEA-SURFACE TEMPERATURE NOT USED BECAUSE DATA N"    OT AVAILABLE
+2 2 RUNNING MEAN SEA-SURFACE TEMPERATURE USED AS PREDICTOR
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25032.table b/definitions/bufr/tables/0/wmo/9/codetables/25032.table
new file mode 100644
index 0000000..9b894f4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25032.table
@@ -0,0 +1,4 @@
+0 0 RESERVED
+1 1 DATA FROM LOW MODE
+2 2 DATA FROM HIGH MODE
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25033.table b/definitions/bufr/tables/0/wmo/9/codetables/25033.table
new file mode 100644
index 0000000..e7141c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25033.table
@@ -0,0 +1,4 @@
+0 0 WIND PROFILER OPERATING IN SUBMODE A
+1 1 WIND PROFILER OPERATING IN SUBMODE B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25034.table b/definitions/bufr/tables/0/wmo/9/codetables/25034.table
new file mode 100644
index 0000000..473338a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25034.table
@@ -0,0 +1,3 @@
+1 1 TEST A PERFORMED AND FAILED
+2 2 TEST B PERFORMED AND FAILED
+3 3 TEST RESULTS INCONCLUSIVE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25036.table b/definitions/bufr/tables/0/wmo/9/codetables/25036.table
new file mode 100644
index 0000000..d71ffd1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25036.table
@@ -0,0 +1,4 @@
+0 0 NETWORK OF SEVERAL DIRECTION-FINDERS OPERATING ON"     THE SAME INDIVIDUAL ATMOSPHERICS
+1 1 NETWORK OF SEVERAL ARRIVAL-TIME STATIONS OPERATING ON"     THE SAME INDIVIDUAL ATMOSPHERICS
+6 6 SINGLE STATION RANGE BEARING TECHNIQUE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25040.table b/definitions/bufr/tables/0/wmo/9/codetables/25040.table
new file mode 100644
index 0000000..648a71b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25040.table
@@ -0,0 +1,10 @@
+0 0 NON-SPECIFIC MODE
+1 1 FIRST GUESS DATA
+2 2 CLOUD DATA
+3 3 AVERAGE VECTOR DATA
+4 4 PRIMARY DATA
+5 5 GUESS DATA
+6 6 VECTOR DATA
+7 7 TRACER DATA; THE IMAGE
+8 8 TRACER DATA TO NEXT IMAGE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25041.table b/definitions/bufr/tables/0/wmo/9/codetables/25041.table
new file mode 100644
index 0000000..f388da0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25041.table
@@ -0,0 +1,4 @@
+0 0 DIRECTION ORIGINALLY REPORTED IN TRUE DEGREES
+1 1 DIRECTION ORIGINALLY REPORTED USING CODE TABLE 0700, FM 13
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25042.table b/definitions/bufr/tables/0/wmo/9/codetables/25042.table
new file mode 100644
index 0000000..314f464
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25042.table
@@ -0,0 +1,4 @@
+0 0 SPEED ORIGINALLY REPORTED IN METERS PER SECOND
+1 1 SPEED ORIGINALLY REPORTED USING CODE TABLE 2251, FM 13
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25045.table b/definitions/bufr/tables/0/wmo/9/codetables/25045.table
new file mode 100644
index 0000000..6a26361
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25045.table
@@ -0,0 +1,20 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
+6 6 CHANNEL  6 PRESENT - (SET TO 1 PRESENT)
+7 7 CHANNEL  7 PRESENT - (SET TO 1 PRESENT)
+8 8 CHANNEL  8 PRESENT - (SET TO 1 PRESENT)
+9 9 CHANNEL  9 PRESENT - (SET TO 1 PRESENT)
+10 10 CHANNEL 10 PRESENT - (SET TO 1 PRESENT)
+11 11 CHANNEL 11 PRESENT - (SET TO 1 PRESENT)
+12 12 CHANNEL 12 PRESENT - (SET TO 1 PRESENT)
+13 13 CHANNEL 13 PRESENT - (SET TO 1 PRESENT)
+14 14 CHANNEL 14 PRESENT - (SET TO 1 PRESENT)
+15 15 CHANNEL 15 PRESENT - (SET TO 1 PRESENT)
+16 16 CHANNEL 16 PRESENT - (SET TO 1 PRESENT)
+17 17 CHANNEL 17 PRESENT - (SET TO 1 PRESENT)
+18 18 CHANNEL 18 PRESENT - (SET TO 1 PRESENT)
+19 19 CHANNEL 19 PRESENT - (SET TO 1 PRESENT)
+20 20 CHANNEL 20 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25046.table b/definitions/bufr/tables/0/wmo/9/codetables/25046.table
new file mode 100644
index 0000000..0cda73b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25046.table
@@ -0,0 +1,4 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25047.table b/definitions/bufr/tables/0/wmo/9/codetables/25047.table
new file mode 100644
index 0000000..ad6fa18
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25047.table
@@ -0,0 +1,3 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25048.table b/definitions/bufr/tables/0/wmo/9/codetables/25048.table
new file mode 100644
index 0000000..a628567
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25048.table
@@ -0,0 +1,15 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
+6 6 CHANNEL  6 PRESENT - (SET TO 1 PRESENT)
+7 7 CHANNEL  7 PRESENT - (SET TO 1 PRESENT)
+8 8 CHANNEL  8 PRESENT - (SET TO 1 PRESENT)
+9 9 CHANNEL  9 PRESENT - (SET TO 1 PRESENT)
+10 10 CHANNEL 10 PRESENT - (SET TO 1 PRESENT)
+11 11 CHANNEL 11 PRESENT - (SET TO 1 PRESENT)
+12 12 CHANNEL 12 PRESENT - (SET TO 1 PRESENT)
+13 13 CHANNEL 13 PRESENT - (SET TO 1 PRESENT)
+14 14 CHANNEL 14 PRESENT - (SET TO 1 PRESENT)
+15 15 CHANNEL 15 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25049.table b/definitions/bufr/tables/0/wmo/9/codetables/25049.table
new file mode 100644
index 0000000..db2a09c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25049.table
@@ -0,0 +1,5 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25051.table b/definitions/bufr/tables/0/wmo/9/codetables/25051.table
new file mode 100644
index 0000000..3b3fbde
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25051.table
@@ -0,0 +1,6 @@
+1 1 CHANNEL  1 PRESENT - (SET TO 1 PRESENT)
+2 2 CHANNEL  2 PRESENT - (SET TO 1 PRESENT)
+3 3 CHANNEL  3 PRESENT - (SET TO 1 PRESENT)
+4 4 CHANNEL  4 PRESENT - (SET TO 1 PRESENT)
+5 5 CHANNEL  5 PRESENT - (SET TO 1 PRESENT)
+6 6 CHANNEL  6 PRESENT - (SET TO 1 PRESENT)
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25053.table b/definitions/bufr/tables/0/wmo/9/codetables/25053.table
new file mode 100644
index 0000000..af34138
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25053.table
@@ -0,0 +1,6 @@
+1 1 GOOD
+2 2 REDUNDANT
+3 3 QUESTIONABLE
+4 4 BAD
+5 5 EXPERIMENTAL
+6 6 PRECIPITATING
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25069.table b/definitions/bufr/tables/0/wmo/9/codetables/25069.table
new file mode 100644
index 0000000..e627613
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25069.table
@@ -0,0 +1,7 @@
+1 1 SMOOTHED
+2 2 BASELINE ADJUSTED
+3 3 NORMALIZED TIME INTERVAL
+4 4 OUTLIER CHECKED
+5 5 PLAUSIBILITY CHECKED
+6 6 CONSISTENCY CHECKED
+7 7 INTERPOLATED
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25086.table b/definitions/bufr/tables/0/wmo/9/codetables/25086.table
new file mode 100644
index 0000000..294fa69
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25086.table
@@ -0,0 +1,4 @@
+0 0 DEPTHS ARE NOT CORRECTED
+1 1 DEPTHS ARE CORRECTED
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25093.table b/definitions/bufr/tables/0/wmo/9/codetables/25093.table
new file mode 100644
index 0000000..e547e6c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25093.table
@@ -0,0 +1,3 @@
+1 1 NO CORRECTION
+2 2 VERTICAL VELOCITY CORRECTION
+7 7 ALL CORRECTIONS
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25095.table b/definitions/bufr/tables/0/wmo/9/codetables/25095.table
new file mode 100644
index 0000000..a303e57
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25095.table
@@ -0,0 +1 @@
+1 1 ALTIMETER OPERATING (SET TO 0 IF NOMINAL, SET TO"     BACKUP)
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25096.table b/definitions/bufr/tables/0/wmo/9/codetables/25096.table
new file mode 100644
index 0000000..dcffa91
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25096.table
@@ -0,0 +1,4 @@
+1 1 MODE INDICATOR (0 IF MODE 2, 1 IF MODE 1)
+2 2 MODE 1 CALIBRATION SEQUENCE INDICATOR (0 IF NORMAL DATA TAKI"    NG EITHER MODE 1 OR 2, 1 IF MODE 1 CALIBRATION SEQUENCE) BIT"    S 3 AND 4 INDICATE A
+3 3 CHANNEL 2 (0 IF ON, 1 IF OFF)
+4 4 CHANNEL 3 (0 IF ON, 1 IF OFF)
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25097.table b/definitions/bufr/tables/0/wmo/9/codetables/25097.table
new file mode 100644
index 0000000..d4e1e46
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25097.table
@@ -0,0 +1,11 @@
+0 0 RANGES BETWEEN 0 AND 30 CM
+1 1 RANGES BETWEEN 30 AND 60 CM
+2 2 RANGES BETWEEN 60 AND 90 CM
+3 3 RANGES BETWEEN 90 AND 120 CM
+4 4 RANGES BETWEEN 120 AND 150 CM
+5 5 RANGES BETWEEN 150 AND 180 CM
+6 6 RANGES BETWEEN 180 AND 210 CM
+7 7 RANGES BETWEEN 210 AND 240 CM
+8 8 RANGES BETWEEN 240 AND 270 CM
+9 9 RANGES LARGER THAN 270 CM
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25098.table b/definitions/bufr/tables/0/wmo/9/codetables/25098.table
new file mode 100644
index 0000000..b49bdb5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25098.table
@@ -0,0 +1,8 @@
+1 1 KU BAND RANGE
+2 2 C BAND RANGE
+3 3 KU BAND SWH
+4 4 C BAND SWH
+5 5 KU BAND SCATTEROMETER COEFFICIENT
+6 6 C BAND SCATTEROMETER COEFFICIENT
+7 7 OFF NADIR ANGLE FROM KU BAND WVEFORM PARAMETERS
+8 8 OFF NADIR FROM PLATFORM
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25099.table b/definitions/bufr/tables/0/wmo/9/codetables/25099.table
new file mode 100644
index 0000000..c6cabcd
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25099.table
@@ -0,0 +1,6 @@
+1 1 KU BAND RANGE INSTRUMENTAL CORRECTION
+2 2 C BAND RANGE INSTRUMENTAL CORRECTION
+3 3 KU BAND SWH INSTRUMENTAL CORRECTION
+4 4 C BAND SWH INSTRUMENTAL CORRECTION
+5 5 KU BAND SCATTEROMETER COEFFICIENT INSTRUMENTAL CORRECTION
+6 6 C BAND SCATTEROMETER COEFFICIENT INSTRUMENTAL CORRECTION
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25110.table b/definitions/bufr/tables/0/wmo/9/codetables/25110.table
new file mode 100644
index 0000000..c53002c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25110.table
@@ -0,0 +1,6 @@
+1 1 RAW DATA ANALYSIS USED FOR RAW DATA CORRECTION."    CORRECTION DONE USING DEFAULT PARAMETERS
+2 2 RAW DATA ANALYSIS USED FOR RAW DATA CORRECTION."    CORRECTION DONE USING RAW DATA ANALYSIS RESULTS
+3 3 ANTENNA ELEVATION PATTERN CORRECTION APPLIED
+4 4 NOMINAL CHIRP REPLICA USED
+5 5 RECONSTRUCTED CHIRP USED
+6 6 SLANT RANGE TO GROUND RANGE CONVERSION APPLIED
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25120.table b/definitions/bufr/tables/0/wmo/9/codetables/25120.table
new file mode 100644
index 0000000..026f109
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25120.table
@@ -0,0 +1,4 @@
+0 0 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"     2 PROCESSING IS GREATER THAN THE ACCEPTABLE THRESHOLD
+1 1 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"    2 PROCESSING IS LESS THAN THE ACCEPTABLE THRESHOLD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25122.table b/definitions/bufr/tables/0/wmo/9/codetables/25122.table
new file mode 100644
index 0000000..1085ef9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25122.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE CONFIGURATION FOR RF IS A
+1 1 HARDWARE CONFIGURATION FOR RF IS B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25123.table b/definitions/bufr/tables/0/wmo/9/codetables/25123.table
new file mode 100644
index 0000000..70f0670
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25123.table
@@ -0,0 +1,4 @@
+0 0 HARDWARE CONFIGURATION FOR HPA IS A
+1 1 HARDWARE CONFIGURATION FOR HPA IS B
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/25124.table b/definitions/bufr/tables/0/wmo/9/codetables/25124.table
new file mode 100644
index 0000000..e611ac0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/25124.table
@@ -0,0 +1,4 @@
+0 0 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"    2 PROCESSING IS GREATER THAN THE ACCEPTABLE THRESHOLD
+1 1 PERCENTAGE OF DSRS FREE OF PROCESSING ERRORS DURING LEVEL"    2 PROCESSING IS LESS THAN THE ACCEPTABLE THRESHOLD
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/26010.table b/definitions/bufr/tables/0/wmo/9/codetables/26010.table
new file mode 100644
index 0000000..f825040
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/26010.table
@@ -0,0 +1,25 @@
+1 1 0100 INCLUDED
+2 2 0200 INCLUDED
+3 3 0300 INCLUDED
+4 4 0400 INCLUDED
+5 5 0500 INCLUDED
+6 6 0600 INCLUDED
+7 7 0700 INCLUDED
+8 8 0800 INCLUDED
+9 9 0900 INCLUDED
+10 10 1000 INCLUDED
+11 11 1100 INCLUDED
+12 12 1200 INCLUDED
+13 13 1300 INCLUDED
+14 14 1400 INCLUDED
+15 15 1500 INCLUDED
+16 16 1600 INCLUDED
+17 17 1700 INCLUDED
+18 18 1800 INCLUDED
+19 19 1900 INCLUDED
+20 20 2000 INCLUDED
+21 21 2100 INCLUDED
+22 22 2200 INCLUDED
+23 23 2300 INCLUDED
+24 24 2400 INCLUDED
+25 25 UNKNOWN MIXTURE OF HOURS
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/29001.table b/definitions/bufr/tables/0/wmo/9/codetables/29001.table
new file mode 100644
index 0000000..beff485
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/29001.table
@@ -0,0 +1,6 @@
+0 0 GNOMONIC PROJECTION
+1 1 POLAR STEREOGRAPHIC PROJECTION
+2 2 LAMBERT'S CONFORMAL CONIC PROJECTION
+3 3 MERCATOR'S PROJECTION
+4 4 SCANNING CONE (RADAR)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/29002.table b/definitions/bufr/tables/0/wmo/9/codetables/29002.table
new file mode 100644
index 0000000..1d7efd0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/29002.table
@@ -0,0 +1,4 @@
+0 0 CARTESIAN
+1 1 POLAR
+2 2 OTHER
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/30031.table b/definitions/bufr/tables/0/wmo/9/codetables/30031.table
new file mode 100644
index 0000000..12ddc7c
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/30031.table
@@ -0,0 +1,13 @@
+0 0 PPI
+1 1 COMPOSITE
+2 2 CAPPI
+3 3 VERTICAL SECTION
+4 4 ALPHANUMERIC DATA
+5 5 MAP OF SUBJECT CLUTTER
+6 6 MAP
+7 7 TEST PICTURE
+8 8 COMMENTS
+9 9 MAP OF GROUND OCCULTATION
+10 10 MAP OF RADAR BEAM HEIGHT
+14 14 OTHER
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/30032.table b/definitions/bufr/tables/0/wmo/9/codetables/30032.table
new file mode 100644
index 0000000..942cb5d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/30032.table
@@ -0,0 +1,9 @@
+1 1 MAP
+2 2 SATELLITE IR
+3 3 SATELLITE VIS
+4 4 SATELLITE WV
+5 5 SATELLITE MULTISPECTRAL
+6 6 SYNOPTIC OBSERVATIONS
+7 7 FORECAST PARAMETERS
+8 8 LIGHTNING DATA
+15 15 OTHER DATA
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/31021.table b/definitions/bufr/tables/0/wmo/9/codetables/31021.table
new file mode 100644
index 0000000..de8d5a6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/31021.table
@@ -0,0 +1,4 @@
+1 1 1 BIT INDICATOR OF QUALITY, 0= GOOD; 1=SUSPECT OR BAD
+2 2 2 BIT INDICATOR OF QUALITY, 0= GOOD; 1= SLIGHTLY SUSPECTED;"    2= HIGHLY SUSPECTED; 3=BAD
+7 7 PERCENTAGE CONFIDENCE
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/31031.table b/definitions/bufr/tables/0/wmo/9/codetables/31031.table
new file mode 100644
index 0000000..4ce2df8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/31031.table
@@ -0,0 +1 @@
+1 1 DATA NOT PRESENT
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33002.table b/definitions/bufr/tables/0/wmo/9/codetables/33002.table
new file mode 100644
index 0000000..74fd2d6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33002.table
@@ -0,0 +1,4 @@
+0 0 DATA NOT SUSPECT
+1 1 DATA SUSPECT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33003.table b/definitions/bufr/tables/0/wmo/9/codetables/33003.table
new file mode 100644
index 0000000..1516d51
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33003.table
@@ -0,0 +1,5 @@
+0 0 DATA NOT SUSPECT
+1 1 DATA SLIGHTLY SUSPECT
+2 2 DATA HIGHTLY SUSPECT
+3 3 DATA CONSIDERED UNFIT FOR USE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33005.table b/definitions/bufr/tables/0/wmo/9/codetables/33005.table
new file mode 100644
index 0000000..880bae8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33005.table
@@ -0,0 +1,23 @@
+1 1 NO AUTOMATED METEOROLOGICAL DATA CHECKS PERFORMED
+2 2 PRESSURE DATA SUSPECT
+3 3 WIND DATA SUSPECT
+4 4 DRY-BULB TEMPERATURE DATA SUSPECT
+5 5 WET-BULB TEMPERATURE DATA SUSPECT
+6 6 HUMIDITY DATA SUSPECT
+7 7 GROUND TEMPERATURE DATA SUSPECT
+8 8 SOIL TEMPERATURE (DEPTH 1) DATA SUSPECT
+9 9 SOIL TEMPERATURE (DEPTH 2) DATA SUSPECT
+10 10 SOIL TEMPERATURE (DEPTH 3) DATA SUSPECT
+11 11 SOIL TEMPERATURE (DEPTH 4) DATA SUSPECT
+12 12 SOIL TEMPERATURE (DEPTH 5) DATA SUSPECT
+13 13 CLOUD DATA SUSPECT
+14 14 VISIBILITY DATA SUSPECT
+15 15 PRESENT WEATHER DATA SUSPECT
+16 16 LIGHTNING DATA SUSPECT
+17 17 ICE DEPOSIT DATA SUSPECT
+18 18 PRECIPITATION DATA SUSPECT
+19 19 STATE OF GROUND DATA SUSPECT
+20 20 SNOW DATA SUSPECT
+21 21 WATER CONTENT DATA SUSPECT
+22 22 EVAPORATION/EVAPOTRANSPIRATION DATA SUSPECT
+23 23 SUNSHINE DATA SUSPECT
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33006.table b/definitions/bufr/tables/0/wmo/9/codetables/33006.table
new file mode 100644
index 0000000..0ea44a5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33006.table
@@ -0,0 +1,5 @@
+0 0 SELF-CHECK OK
+1 1 AT LEAST ONE WARNING ACTIVE, NO ALARMS
+2 2 AT LEAST ONE ALARM ACTIVE
+3 3 SENSOR FAILURE
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33015.table b/definitions/bufr/tables/0/wmo/9/codetables/33015.table
new file mode 100644
index 0000000..dd633f1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33015.table
@@ -0,0 +1,16 @@
+0 0 PASSED ALL CHECKS
+1 1 MISSING-DATA CHECK
+2 2 DESCENDING/REASCENDING BALLOON CHECK
+3 3 DATA PLAUSIBILITY CHECK (ABOVE LIMITS)
+4 4 DATA PLAUSIBILITY CHECK (BELOW LIMITS)
+5 5 SUPERADIABATIC LAPSE RATE CHECK
+6 6 LIMITING ANGLES CHECK
+7 7 ASCENSION RATE CHECK
+8 8 EXCESSIVE CHANGE FROM PREVIOUS FLIGHT
+9 9 BALLOON OVERHEAD CHECK
+10 10 WIND SPEED CHECK
+11 11 WIND DIRECTION CHECK
+12 12 DEPENDENCY CHECK
+13 13 DATA VALID BUT MODIFIED
+14 14 DATA OUTLIER CHECK
+63 63 MISSING DATA
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33020.table b/definitions/bufr/tables/0/wmo/9/codetables/33020.table
new file mode 100644
index 0000000..023909a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33020.table
@@ -0,0 +1,8 @@
+0 0 GOOD
+1 1 INCONSISTENT
+2 2 DOUBTFUL
+3 3 WRONG
+4 4 NOT CHECKED
+5 5 HAS BEEN CHECKED
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33021.table b/definitions/bufr/tables/0/wmo/9/codetables/33021.table
new file mode 100644
index 0000000..e3e67ae
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33021.table
@@ -0,0 +1,4 @@
+0 0 WITHIN LIMITS
+1 1 OUTSIDE LIMITS
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33022.table b/definitions/bufr/tables/0/wmo/9/codetables/33022.table
new file mode 100644
index 0000000..692661f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33022.table
@@ -0,0 +1,4 @@
+0 0 GOOD (SEVERAL IDENTICAL REPORTS HAVE BEEN RECEIVED)
+1 1 DUBIOUS (NO IDENTICAL REPORT HAVE BEEN RECEIVED)
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33023.table b/definitions/bufr/tables/0/wmo/9/codetables/33023.table
new file mode 100644
index 0000000..71ecd11
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33023.table
@@ -0,0 +1,4 @@
+0 0 RELIABLE (LOCATION WAS MADE OVER TWO SATELLITE PASSES)
+1 1 LATEST KNOWN (NO LOCATION OVER CORRESPONDING PASS)
+2 2 DUBIOUS
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33024.table b/definitions/bufr/tables/0/wmo/9/codetables/33024.table
new file mode 100644
index 0000000..e1e3b92
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33024.table
@@ -0,0 +1,10 @@
+0 0 RESERVED
+1 1 EXELLENT - WITHIN 3 METRES
+2 2 GOOD - WITHIN 10 METRES
+3 3 FAIR - WITHIN 20 METRES
+4 4 POOR - MORE THAN 20 METRES
+5 5 EXELLENT -WITHIN 10 FEET
+6 6 GOOD WITHIN-30 FEET
+7 7 FAIR WITHIN 60 FEET
+8 8 POOR - MORE THAN 60 FEET
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33025.table b/definitions/bufr/tables/0/wmo/9/codetables/33025.table
new file mode 100644
index 0000000..edcd4e3
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33025.table
@@ -0,0 +1,5 @@
+0 0 TIME INTERPOLATED, LATITUDE AND LONGITUDE REPORTED
+1 1 TIME REPORTED, LATITUDE AND LONGITUDE INTERPOLATED
+2 2 TIME, LATITUDE AND LONGITUDE INTERPOLATED
+3 3 TIME, LATITUDE AND LONGITUDE REPORTED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33026.table b/definitions/bufr/tables/0/wmo/9/codetables/33026.table
new file mode 100644
index 0000000..539a9fe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33026.table
@@ -0,0 +1,10 @@
+0 0 NORMAL OPERATIONS - MEASUREMENT MODE
+1 1 NORMAL OPERATIONS - NON-MEASUREMENT MODE
+2 2 SMALL RH
+3 3 HUMIDITY ELEMENT IS WET
+4 4 HUMIDITY ELEMENT IS CONTAMINATED
+5 5 HEATER FAIL
+6 6 HEATER FAIL AND WET/CONTAMINATED HUMIDITY ELEMENT
+7 7 SINGLE VALIDITY BAD
+8 8 NUMERIC ERROR
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33027.table b/definitions/bufr/tables/0/wmo/9/codetables/33027.table
new file mode 100644
index 0000000..30dcae8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33027.table
@@ -0,0 +1,5 @@
+0 0 RADIUS >= 1500 M
+1 1 500 M <= RADIUS < 1500 M
+2 2 250 M <= RADIUS < 500 M
+3 3 RADIUS < 250 M
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33028.table b/definitions/bufr/tables/0/wmo/9/codetables/33028.table
new file mode 100644
index 0000000..8a16e7a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33028.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 NOMINAL
+2 2 DEGRADED BY SW ERROR; ANY ERROR REPORTED BY THE ALGORITHMS
+3 3 DEGRADED BY INSTRUMENT ERROR
+4 4 DEGRADED BY CORRUPTED/MISSING ADF
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33030.table b/definitions/bufr/tables/0/wmo/9/codetables/33030.table
new file mode 100644
index 0000000..c9e36c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33030.table
@@ -0,0 +1,7 @@
+1 1 DO NOT USE SCAN FOR PRODUCT GENERATION
+2 2 TIME SEQUENCE ERROR DETECTED WITH THIS SCAN
+3 3 DATA GAP PRECEDES THIS SCAN
+4 4 NO CALIBRATION
+5 5 NO EARTH LOCATION
+6 6 FIRST GOOD TIME FOLLOWING A CLOCK UPDATE
+7 7 INSTRUMENT STATUS CHANGED WITH THIS SCAN
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33031.table b/definitions/bufr/tables/0/wmo/9/codetables/33031.table
new file mode 100644
index 0000000..857eece
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33031.table
@@ -0,0 +1,21 @@
+1 1 TIME FIELD IS BAD BUT CAN PROBABLY BE INFERRED FROM THE PREV"    IOUS GOOD TIME
+2 2 TIME FIELD IS BAD AND CAN?~@~YT BE INFERRED FROM THE PREVIOU"    S GOOD TIME
+3 3 THIS RECORD STARTS A SEQUENCE THAT IS INCONSISTENT WITH PREV"    IOUS TIMES (I.E. THERE IS A TIME DISCONTINUITY). THIS MAY OR"     MAY NOT BE ASSOCIAT
+4 4 START OF A SEQUENCE THAT APPARENTLY REPEATS SCAN TIMES THAT"    HAVE BEEN PREVIOUSLY ACCEPTED
+5 5 SCAN LINE WAS NOT CALIBRATED BECAUSE OF BAD TIME
+6 6 SCAN LINE WAS CALIBRATED USING FEWER THAN THE PREFERRED NUMB"    ER OF SCAN LINES BECAUSE OF PROXIMATY TO START OR END OF DAT"    A OR TO A DATA GAP
+7 7 SCAN LINE WAS NOT CALIBRATED BECAUSE OF BAD OR INSUFFICIENT"    PRT DATA
+8 8 SCAN LINE WAS CALIBRATED BUT WITH MARGINAL PRT DATA
+9 9 SOME UNCALIBRATED CHANNELS ON THIS SCAN
+10 10 UNCALIBRATED DUE TO INSTRUMENT MODE
+11 11 QUESTIONABLE CALIBRATION BECAUSE OF ANTENNA POSITION ERROR O"    F SPACE VIEW
+12 12 QUESTIONABLE CALIBRATION BECAUSE OF ANTENNA POSITION ERROR O"    F BLACK BODY
+13 13 NOT EARTH LOCATED BECAUSE OF BAD TIME
+14 14 EARTH LOCATION QUESTIONABLE BECAUSE OF"     QUESTIONABLE TIME CODE (SEE TIME PROBLEM"     CODE BITS)
+15 15 EARTH LOCATION QUESTIONABLE - ONLY MARGINAL AGREEMENT"     WITH REASONABLENESS CHECK
+16 16 EARTH LOCATION QUESTIONABLE - FAILS REASONABLENESS CHECK
+17 17 EARTH LOCATION QUESTIONABLE BECAUSE OF ANTENNA POSITION CHEC"    K
+18 18 SCAN LINE CALIBRATION COLD BLACK BODY
+19 19 SCAN LINE CALIBRATION WARM BLACK BODY
+20 20 SCAN LINE CALIBRATION SPACE VIEW
+21 21 EARTH VIEW
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33032.table b/definitions/bufr/tables/0/wmo/9/codetables/33032.table
new file mode 100644
index 0000000..45b284d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33032.table
@@ -0,0 +1,6 @@
+1 1 NO GOOD BLACKBODY COUNTS FOR SCAN LINE
+2 2 NO GOOD SPACE VIEW COUNTS FOR THIS LINE
+3 3 NO GOOD PRTS FOR THIS LINE
+4 4 SOME BAD BLACKBODY VIEW COUNTS FOR THIS LINE
+5 5 SOME BAD SPACE VIEW COUNTS FOR THIS LINE
+6 6 SOME BAD PRT TEMPS ON THIS LINE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33033.table b/definitions/bufr/tables/0/wmo/9/codetables/33033.table
new file mode 100644
index 0000000..803087f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33033.table
@@ -0,0 +1,23 @@
+1 1 SET IF SECONDARY CALIBRATION USED
+2 2 BRIGHTNESS TEMPERATURE IN CHANNEL 1 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+3 3 BRIGHTNESS TEMPERATURE IN CHANNEL 2 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+4 4 BRIGHTNESS TEMPERATURE IN CHANNEL 3 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+5 5 BRIGHTNESS TEMPERATURE IN CHANNEL 4 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+6 6 BRIGHTNESS TEMPERATURE IN CHANNEL 5 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+7 7 BRIGHTNESS TEMPERATURE IN CHANNEL 6 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+8 8 BRIGHTNESS TEMPERATURE IN CHANNEL 7 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+9 9 BRIGHTNESS TEMPERATURE IN CHANNEL 8 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+10 10 BRIGHTNESS TEMPERATURE IN CHANNEL 9 IS PHYSICALLY UNREASONAB"    LE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+11 11 BRIGHTNESS TEMPERATURE IN CHANNEL 10 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+12 12 BRIGHTNESS TEMPERATURE IN CHANNEL 11 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+13 13 BRIGHTNESS TEMPERATURE IN CHANNEL 12 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+14 14 BRIGHTNESS TEMPERATURE IN CHANNEL 13 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+15 15 BRIGHTNESS TEMPERATURE IN CHANNEL 14 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+16 16 BRIGHTNESS TEMPERATURE IN CHANNEL 15 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+17 17 BRIGHTNESS TEMPERATURE IN CHANNEL 16 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+18 18 BRIGHTNESS TEMPERATURE IN CHANNEL 17 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+19 19 BRIGHTNESS TEMPERATURE IN CHANNEL 18 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+20 20 BRIGHTNESS TEMPERATURE IN CHANNEL 19 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+21 21 BRIGHTNESS TEMPERATURE IN CHANNEL 20 IS PHYSICALLY UNREASONA"    BLE OR HAS NOT BEEN CALCULATED DUE TO CALIBRATION PROBLEMS
+22 22 SET IF ALL CHANNELS ARE MISSING
+23 23 SUSPECT
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33035.table b/definitions/bufr/tables/0/wmo/9/codetables/33035.table
new file mode 100644
index 0000000..938a958
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33035.table
@@ -0,0 +1,15 @@
+0 0 AUTOMATIC QUALITY CONTROL PASSED AND NOT MANUALLY CHECKED
+1 1 AUTOMATIC QUALITY CONTROL PASSED AND MANUALLY CHECKED AND PA"    SSED
+2 2 AUTOMATIC QUALITY CONTROL PASSED AND MANUALLY CHECKED AND DE"    LETED
+3 3 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY NOT CHECKED
+4 4 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY CHECKED AND FA"    ILED
+5 5 AUTOMATIC QUALITY CONTROL FAILED AND MANUALLY CHECKED AND RE"    -INSERTED
+6 6 AUTOMATIC QUALITY CONTROL FLAGGED DATA AS QUESTIONABLE AND N"    OT MANUALLY CHECCKED
+7 7 AUTOMATIC QUALITY CONTROL FLAGGED DATA AS QUESTIONABLE"    AND MANUALLY CHECKED AND FAILED
+8 8 MANUALLY CHECKED AND FAILED
+9 9 EXCESSIVE MISSING DATA FRAMES
+10 10 RESERVED
+11 11 EXCESSIVE MISSING TEMPERATURE
+12 12 EXCESSIVE MISSING PRESSURE
+13 13 USER TERMINATED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33037.table b/definitions/bufr/tables/0/wmo/9/codetables/33037.table
new file mode 100644
index 0000000..81a7d01
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33037.table
@@ -0,0 +1,19 @@
+1 1 U DEPARTURE FROM GUESS
+2 2 V DEPARTURE FROM GUESS
+3 3 U & V DEPARTURE FROM GUESS
+4 4 U ACCELERATION
+5 5 V ACCELERATION
+6 6 U & V ACCELERATION
+7 7 POSSIBLE LAND FEATURE
+8 8 U ACCELERATION AND POSSIBLE LAND FEATURE
+9 9 V ACCELERATION AND POSSIBLE LAND FEATURE
+10 10 U & V ACCELERATION AND POSSIBLE LAND FEATURE
+11 11 BAD WIND GUESS
+12 12 CORRELATION FAILURE
+13 13 SEARCH BOX OFF EDGE OF AREA
+14 14 TARGET BOX OFF EDGE OF AREA
+15 15 PIXEL BRIGHTNESS OUT OF BOUNDS (NOISY LINE)
+16 16 TARGET OUTSIDE OF LAT/LONG BOX
+17 17 TARGET OUTSIDE OF PRESSURE MIN/MAX
+18 18 AUTOEDITOR FLAGGED SLOW VECTOR
+19 19 AUTOEDITOR FLAGGED VECTORS
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33038.table b/definitions/bufr/tables/0/wmo/9/codetables/33038.table
new file mode 100644
index 0000000..3dc1192
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33038.table
@@ -0,0 +1,9 @@
+1 1 TOTAL ZENITH DELAY QUALITY IS CONSIDERED POOR
+2 2 GALILEO SATELLITES USED
+3 3 GLONASS SATELLITES USED
+4 4 GPS SATELLITES USED
+5 5 METEOROLOGICAL DATA APPLIED
+6 6 ATMOSPHERIC LOADING CORRECTION APPLIED
+7 7 OCEAN TIDE LOADING APPLIED
+8 8 CLIMATE QUALITY DATA PROCESSING
+9 9 NEAR-REAL TIME DATA PROCESSING
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33039.table b/definitions/bufr/tables/0/wmo/9/codetables/33039.table
new file mode 100644
index 0000000..50ff126
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33039.table
@@ -0,0 +1,9 @@
+1 1 NON-NOMINAL QUALITY
+2 2 OFFLINE PRODUCT
+3 3 ASCENDING OCCULTATION FLAG
+4 4 EXCESS PHASE PROCESSING NON-NOMINAL
+5 5 BENDING ANGLE PROCESSING NON-NOMINAL
+6 6 REFRACTIVITY PROCESSING NON-NOMINAL
+7 7 METEOROLOGICAL PROCESSING NON-NOMINAL
+14 14 BACKGROUND PROFILE NON-NOMINAL
+15 15 BACKGROUND (I.E. NOT RETRIEVED) PROFILE PRESENT
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33041.table b/definitions/bufr/tables/0/wmo/9/codetables/33041.table
new file mode 100644
index 0000000..7da4cf8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33041.table
@@ -0,0 +1,4 @@
+0 0 THE FOLLOWING VALUE IS THE TRUE VALUE
+1 1 THE FOLLOWING VALUE IS HIGHER THAN THE TRUE VALUE"    (THE MEASUREMENT HIT THE LOWER LIMIT OF THE INSTRUMENT)
+2 2 THE FOLLOWING VALUE IS LOWER THAN THE TRUE VALUE"    (THE MEASUREMENT HIT THE HIGHER LIMIT OF THE INSTRUMENT)
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33042.table b/definitions/bufr/tables/0/wmo/9/codetables/33042.table
new file mode 100644
index 0000000..b75447a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33042.table
@@ -0,0 +1,5 @@
+0 0 EXCLUSIVE LOWER LIMIT (>)
+1 1 INCLUSIVE LOWER LIMIT (>=)
+2 2 EXCLUSIVE UPPER LIMIT (<)
+3 3 INCLUSIVE UPPER LIMIT (=<)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33043.table b/definitions/bufr/tables/0/wmo/9/codetables/33043.table
new file mode 100644
index 0000000..f0626f5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33043.table
@@ -0,0 +1,4 @@
+1 1 SEA MDS. NADIR ONLY SST RETRIEVAL USED 3.7 MICRON"    CHANNEL. LAND MDS RESERVED
+2 2 SEA MDS. DUAL VIEW SST RETRIEVAL USED 3.7 MICRON"    CHANNEL. LAND MDS RESERVED.
+3 3 NADIR VIEW CONTAINS DAY TIME DATA
+4 4 FORWARD VIEW CONTAINS DAY TIME DATA
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33044.table b/definitions/bufr/tables/0/wmo/9/codetables/33044.table
new file mode 100644
index 0000000..a74a7c0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33044.table
@@ -0,0 +1,14 @@
+1 1 INPUT DATA MEAN OUTSIDE NOMINAL RANGE FLAG
+2 2 INPUT DATA STANDARD DEVIATION OUTSIDE NOMINAL RANGE FLAG
+3 3 NUMBER OF INPUT DATA GAPS > THRESHOLD VALUE
+4 4 PERCENTAGE OF MISSING LINES > THRESHOLD VALUE
+5 5 DOPPLER CENTROID UNCERTAIN. CONFIDENCE MEASURE < SPECIFIC VA"    LUE
+6 6 DOPPLER AMBIGUITY ESTIMATE UNCERTAIN. CONFIDENCE MEASURE < S"    PECIFIC VALUE
+7 7 OUTPUT DATA MEAN OUTSIDE NOMINAL RANGE FLAG
+8 8 OUTPUT DATA STANDARD DEVIATION OUTSIDE NOMINAL RANGE FLAG
+9 9 CHIRP RECONSTRUCTION FAILED OR IS OF LOW QUALITY FLAG
+10 10 DATA SET MISSING
+11 11 INVALID DOWNLINK PARAMETERS
+12 12 AZIMUTH CUT-OFF ITERATION COUNT. THE AZIMUTH CUT-OFF FIT DID"     NOT CONVERGE WITHIN A MINIMUM NUMBER OF ITERATIONS
+13 13 AZIMUTH CUT-OFF FIT DID NOT CONVERGE WITHIN A MINIMUM"    NUMBER OF ITERATIONS
+14 14 PHASE INFORMATION CONFIDENCE MEASURE. THE IMAGINARY SPECTRAL"    PEAK IS LESS THAN A MINIMUM THRESHOLD, OR THE ZERO LAG SHIFT"    IS GREATER THAN A MI
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33047.table b/definitions/bufr/tables/0/wmo/9/codetables/33047.table
new file mode 100644
index 0000000..e91702b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33047.table
@@ -0,0 +1,26 @@
+1 1 ERROR DETECTED AND ATTEMPTS TO RECOVER MADE
+2 2 ANOMALY IN ON-BOARD DATA HANDLING (OBDH) VALUE DETECTED
+3 3 ANOMALY IN ULTRA STABLE OSCILLATOR PROCESSING (USOP) VALUE D"    ETECTED
+4 4 ERRORS DETECTED BY ON-BOARD COMPUTER
+5 5 AUTOMATIC GAIN CONTROL (AGC) OUT OF RANGE
+6 6 RX DELAY FAULT. RX DISTANCE OUT OF RANGE
+7 7 WAVE FORM SAMPLES FAULT IDENTIFIER. ERROR
+12 12 BRIGHTNESS TEMPERATURE (CHANNEL 1) OUT OF RANGE
+13 13 BRIGHTNESS TEMPERATURE (CHANNEL 2) OUT OF RANGE
+14 14 RESERVED
+15 15 KU OCEAN RETRACKING ERROR
+16 16 S OCEAN RETRACKING ERROR
+17 17 KU ICE 1 RETRACKING ERROR
+18 18 S ICE 1 RETRACKING ERROR
+19 19 KU ICE 2 RETRACKING ERROR
+20 20 S ICE 2 RETRACKING ERROR
+21 21 KU SEA ICE RETRACKING ERROR
+22 22 ARITHMETIC FAULT ERROR
+23 23 METEO DATA STATE. NO MAP
+24 24 METEO DATA STATE. 1 MAP
+25 25 METEO DATA STATE 2 MAPS DEGRADED
+26 26 METEO DATA STATE 2 MAPS NOMINAL
+27 27 ORBIT PROPAGATOR STATUS FOR PROPAGATION MODE, SEVERAL ERRORS
+28 28 ORBIT PROPAGATOR STATUS FOR PROPAGATION MODE, WARNING DETECT"    ED
+29 29 ORBIT PROPAGATOR STATUS FOR INITIALISATION MODE, SEVERAL ERR"    ORS
+30 30 ORBIT PROPAGATOR STATUS FOR INITIALISATION MODE, WARNING DET"    ECTED
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33048.table b/definitions/bufr/tables/0/wmo/9/codetables/33048.table
new file mode 100644
index 0000000..312ba40
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33048.table
@@ -0,0 +1,4 @@
+0 0 INVERSION SUCCESSFUL
+1 1 INVERSION NOT SUCCESSFUL
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33049.table b/definitions/bufr/tables/0/wmo/9/codetables/33049.table
new file mode 100644
index 0000000..bdde061
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33049.table
@@ -0,0 +1,4 @@
+0 0 EXTERNAL WIND DIRECTION USED DURING INVERSION
+1 1 EXTERNAL WIND DIRECTION NOT USED DURING INVERSION
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33050.table b/definitions/bufr/tables/0/wmo/9/codetables/33050.table
new file mode 100644
index 0000000..772ab4a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33050.table
@@ -0,0 +1,8 @@
+0 0 UNQUALIFIED
+1 1 CORRECT VALUE (ALL CHECKS PASSED)
+2 2 PROBABLY GOOD BUT VALUE INCONSISTENT WITH STATISTICS (DIFFER"     FROM CLIMATOLOGY)
+3 3 PROBABLY BAD (SPIKE, GRADIENT, ?~E IF OTHER TESTS PASSED)
+4 4 BAD VALUE, IMPOSSIBLE VALUE (OUT OF SCALE, VERTICAL"    INSTABILITY, CONSTANT PROFILE)
+5 5 VALUE MODIFIED DURING QUALITY CONTROL
+8 8 INTERPOLATED VALUE
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33052.table b/definitions/bufr/tables/0/wmo/9/codetables/33052.table
new file mode 100644
index 0000000..42ae4d2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33052.table
@@ -0,0 +1,20 @@
+1 1 DATA BLOCK 1 INVALID (S BAND)
+2 2 DATA BLOCK 2 INVALID (S BAND)
+3 3 DATA BLOCK 3 INVALID (S BAND)
+4 4 DATA BLOCK 4 INVALID (S BAND)
+5 5 DATA BLOCK 5 INVALID (S BAND)
+6 6 DATA BLOCK 6 INVALID (S BAND)
+7 7 DATA BLOCK 7 INVALID (S BAND)
+8 8 DATA BLOCK 8 INVALID (S BAND)
+9 9 DATA BLOCK 9 INVALID (S BAND)
+10 10 DATA BLOCK 10 INVALID (S BAND)
+11 11 DATA BLOCK 11 INVALID (S BAND)
+12 12 DATA BLOCK 12 INVALID (S BAND)
+13 13 DATA BLOCK 13 INVALID (S BAND)
+14 14 DATA BLOCK 14 INVALID (S BAND)
+15 15 DATA BLOCK 15 INVALID (S BAND)
+16 16 DATA BLOCK 16 INVALID (S BAND)
+17 17 DATA BLOCK 17 INVALID (S BAND)
+18 18 DATA BLOCK 18 INVALID (S BAND)
+19 19 DATA BLOCK 19 INVALID (S BAND)
+20 20 DATA BLOCK 20 INVALID (S BAND)
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33053.table b/definitions/bufr/tables/0/wmo/9/codetables/33053.table
new file mode 100644
index 0000000..9170c54
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33053.table
@@ -0,0 +1,20 @@
+1 1 DATA BLOCK 1 INVALID (KU BAND)
+2 2 DATA BLOCK 2 INVALID (KU BAND)
+3 3 DATA BLOCK 3 INVALID (KU BAND)
+4 4 DATA BLOCK 4 INVALID (KU BAND)
+5 5 DATA BLOCK 5 INVALID (KU BAND)
+6 6 DATA BLOCK 6 INVALID (KU BAND)
+7 7 DATA BLOCK 7 INVALID (KU BAND)
+8 8 DATA BLOCK 8 INVALID (KU BAND)
+9 9 DATA BLOCK 9 INVALID (KU BAND)
+10 10 DATA BLOCK 10 INVALID (KU BAND)
+11 11 DATA BLOCK 11 INVALID (KU BAND)
+12 12 DATA BLOCK 12 INVALID (KU BAND)
+13 13 DATA BLOCK 13 INVALID (KU BAND)
+14 14 DATA BLOCK 14 INVALID (KU BAND)
+15 15 DATA BLOCK 15 INVALID (KU BAND)
+16 16 DATA BLOCK 16 INVALID (KU BAND)
+17 17 DATA BLOCK 17 INVALID (KU BAND)
+18 18 DATA BLOCK 18 INVALID (KU BAND)
+19 19 DATA BLOCK 19 INVALID (KU BAND)
+20 20 DATA BLOCK 20 INVALID (KU BAND)
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/33060.table b/definitions/bufr/tables/0/wmo/9/codetables/33060.table
new file mode 100644
index 0000000..0b85a8f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/33060.table
@@ -0,0 +1,4 @@
+0 0 PARAMETER=GOOD
+1 1 PARAMETER=BAD
+2 2 PARAMETER=RESERVED
+3 3 MISSING
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/35000.table b/definitions/bufr/tables/0/wmo/9/codetables/35000.table
new file mode 100644
index 0000000..c5e8846
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/35000.table
@@ -0,0 +1,11 @@
+1 1 100-199 RA I CODES
+2 2 200-299 RA II CODES
+3 3 300-399 RA III CODES
+4 4 400-499 RA IV CODES
+5 5 500-599 RA V CODES
+6 6 600-699 RA VI CODES
+7 7 700-799 ANTARCTIC CODES
+8 8 800-999 RESERVED
+9 9 1000-1022 NOT USED
+11 11 000-099 INTERNATIONAL FM CODES
+1023 1023 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/35001.table b/definitions/bufr/tables/0/wmo/9/codetables/35001.table
new file mode 100644
index 0000000..bba0c81
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/35001.table
@@ -0,0 +1,4 @@
+0 0 REAL TIME
+1 1 NEAR-REAL TIME
+2 2 NON-REAL TIME
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/35030.table b/definitions/bufr/tables/0/wmo/9/codetables/35030.table
new file mode 100644
index 0000000..a46775f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/35030.table
@@ -0,0 +1,10 @@
+0 0 NO DISCREPANCIES
+1 1 NON-COMPLIANCE WITH STANDARD AND RECOMMENDED PRACTICES"    AND PROCEDURES INCLUDINGTHOSE OF MONITORING
+2 2 CATALOGUES OF METEOROLOGICAL BULLETINS NOT UPDATED IN A TIME"    LY MANNER
+3 3 INCORRECT ROUTEING DIRECTORIES
+4 4 LACK OF FLEXIBILITY IN THE ROUTEING ARRANGEMENTS
+5 5 DEFICIENCIES IN THE OPERATION OF GTS CENTRES AND CIRCUITS
+6 6 LOSS OF DATA OR DELAYS IN RELAYING DATA ON THE GTS
+7 7 ROUTEING OF DATA DIFFERENT FROM THE ROUTEING PROVIDED IN THE"     PLAN
+8 8 VARIOUS MALPRACTICES
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/35031.table b/definitions/bufr/tables/0/wmo/9/codetables/35031.table
new file mode 100644
index 0000000..8c95268
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/35031.table
@@ -0,0 +1,20 @@
+1 1 SUFFICIENT AND ALL OF ACCEPTABLE QUALITY
+2 2 SUFFICIENT BUT PARTLY OF ACCEPTABLE QUALITY
+3 3 INSUFFICIENT BUT ALL OF ACCEPTABLE QUALITY
+4 4 INSUFFICIENT AND OF UNACCEPTABLE QUALITY
+5 5 SOME MESSAGES NOT COMPLETE
+6 6 SUSPECT OR WRONGLY CODED GROUPS COULD NOT BE INTERPRETED CON"    FIDENTLY
+7 7 GROSS CODING ERRORS
+8 8 TRANSMISSION SEQUENTIAL ORDER NOT OBSERVED
+9 9 REPORT COMPLETELY GARBLED AND THUS DISCARDED
+10 10 DEFICIENCIES IDENTIFIED AND RECTIFIED
+11 11 DEFICIENCIES IDENTIFIED BUT NOT RECTIFIED
+12 12 DEFICIENCIES NOT IDENTIFIED
+13 13 MEASURING ERRORS
+14 14 MUTUAL INCONSISTENCY
+15 15 TEMPORAL INCONSISTENCY
+16 16 FORECAST ERROR
+17 17 BIAS
+18 18 IMPROVE SYSTEM OF QUALITY CONTROL
+19 19 EXPAND TRAINING PROGRAMMES
+123 123 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/35032.table b/definitions/bufr/tables/0/wmo/9/codetables/35032.table
new file mode 100644
index 0000000..7f53a05
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/35032.table
@@ -0,0 +1,10 @@
+1 1 DATA GROUPS MISSING DUE TO RADIO FADING
+2 2 DATA GROUPS MISSING DUE TO OUTAGE OF CENTRE
+3 3 DATA GROUPS MISSING DUE TO OUTAGE OF CIRCUIT
+4 4 NON-IMPLEMENTATION OR MAINTENANCE OF REQUIRED RBSN DENSITY
+5 5 SHORTAGE OF QUALIFIED STAFF TO MAN STATIONS
+6 6 LACK OF CONSUMABLES
+7 7 INSTRUMENT FAILURE
+8 8 NON-ADHERENCE TO TELECOMMUNICATION PROCEDURES
+9 9 SOME OBSERVING PROGRAMMES CEASED
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/35033.table b/definitions/bufr/tables/0/wmo/9/codetables/35033.table
new file mode 100644
index 0000000..2a3e525
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/35033.table
@@ -0,0 +1,12 @@
+1 1 NO DEFICIENCY
+2 2 OBSERVATIONS NOT MADE REGULARLY
+3 3 OBSERVATIONS NOT MADE AT RIGHT TIME
+4 4 OBSERVATIONS MADE BUT NOT DISSEMINATED
+5 5 OBSERVATIONS MADE AND SENT TO INCORRECT USERS
+6 6 COLLECTION NOT RECEIVED
+7 7 COLLECTION TRANSMITTED LATE
+8 8 COLLECTION NOT TRANSMITTED
+9 9 DIFFICULTIES IN HF PROPAGATION AND SELECTION OF SUITABLE FRE"    QUENCY
+10 10 DIFFICULTIES IN MAINTENANCE OF COMMUNICATION EQUIPMENT AT RE"    MOTE STATIONS
+11 11 NO ALTERNATIVE ARRANGEMENT FOR ROUTEING METEOROLOGICAL OBSER"    VATION
+123 123 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/35034.table b/definitions/bufr/tables/0/wmo/9/codetables/35034.table
new file mode 100644
index 0000000..7297664
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/35034.table
@@ -0,0 +1,7 @@
+1 1 SLIGHT IMPROVEMENT
+2 2 SIGNIFICANT IMPROVEMENT
+3 3 MOST SIGNIFICANT IMPROVEMENT
+4 4 STEADY
+5 5 DECREASING
+6 6 EFFORTS REQUIRED TO IMPROVE NIGHT-TIME OBSERVATIONS
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/40011.table b/definitions/bufr/tables/0/wmo/9/codetables/40011.table
new file mode 100644
index 0000000..d4284c9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/40011.table
@@ -0,0 +1,4 @@
+1 1 MEAN SEA SURFACE (MSS) INTERPOLATION FLAG
+2 2 OCEAN TIDE SOLUTION 1 INTERPOLATION FLAG (0= 4 POINTS OVER O"    CEAN, 1=LESS THAN 4 POINTS)
+3 3 OCEAN TIDE SOLUTION 2 INTERPOLATION FLAG (0= 4 POINTS OVER O"    CEAN, 1=LESS THAN 4 POINTS)
+4 4 METEOROLOGICAL DATA INTERPOLATION FLAG (0= 4 POINTS OVER OCE"    AN, 1=LESS THAN 4 POINTS)
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/40012.table b/definitions/bufr/tables/0/wmo/9/codetables/40012.table
new file mode 100644
index 0000000..d8ce14d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/40012.table
@@ -0,0 +1,3 @@
+1 1 18.7 GHZ BRIGHTNESS TEMPERATURE
+2 2 23.8 GHZ BRIGHTNESS TEMPERATURE
+3 3 34 GHZ BRIGHTNESS TEMPERATURE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/40013.table b/definitions/bufr/tables/0/wmo/9/codetables/40013.table
new file mode 100644
index 0000000..f9dfb9a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/40013.table
@@ -0,0 +1,5 @@
+0 0 INTERPOLATION WITH NO GAP BETWEEN JMR DATA
+1 1 INTERPOLATION WITH GAP BETWEEN JMR DATA
+2 2 EXTRAOLATION OF JMR DATA
+3 3 FAILURE OF EXTRAPOLATION AND INTERPOLATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/4059.table b/definitions/bufr/tables/0/wmo/9/codetables/4059.table
new file mode 100644
index 0000000..cee2528
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/4059.table
@@ -0,0 +1,5 @@
+1 1 00 UTC
+2 2 06 UTC
+3 3 12 UTC
+4 4 18 UTC
+5 5 OTHER HOURS
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8001.table b/definitions/bufr/tables/0/wmo/9/codetables/8001.table
new file mode 100644
index 0000000..ec028a1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8001.table
@@ -0,0 +1,7 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 MAXIMUM WIND LEVEL
+5 5 SIGNIFICANT LEVEL, TEMPERATURE AND/OR RELATIVE HUMIDITY
+6 6 SIGNIFICANT LEVEL, WIND
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8002.table b/definitions/bufr/tables/0/wmo/9/codetables/8002.table
new file mode 100644
index 0000000..d929f62
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8002.table
@@ -0,0 +1,13 @@
+0 0 OBSERVING RULES FOR BASE OF LOWEST CLOUD AND CLOUD TYPES OF"    FM 12-IX EXT. SYNOP AND FM 13-IX EXT. SHIP APPLY
+1 1 FIRST NON - CB SIGNIFICANT LAYER
+2 2 SECOND NON - CB SIGNIFICANT LAYER
+3 3 THIRD NON - CB SIGNIFICANT LAYER
+4 4 CUMULONIMBUS LAYER
+5 5 CEILING
+6 6 CLOUD NOT DETECTED BELOW THE FOLLOWING HEIGHT(S)
+7 7 LOW CLOUD
+8 8 MIDDLE CLOUD
+9 9 HIGH CLOUD
+10 10 CLOUD LAYER WITH BASE BELOW THE STATION LEVEL AND TOP"    ABOVE THE STATION LEVEL
+11 11 CLOUD LAYER WITH BASE AND TOP BELOW THE STATION LEVEL
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8003.table b/definitions/bufr/tables/0/wmo/9/codetables/8003.table
new file mode 100644
index 0000000..442be98
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8003.table
@@ -0,0 +1,9 @@
+0 0 SURFACE
+1 1 BASE OF SATELLITE SOUNDING
+2 2 CLOUD TOP
+3 3 TROPOPAUSE
+4 4 PRECIPITABLE WATER
+5 5 SOUNDING RADIANCES
+6 6 MEAN TEMPERATURES
+7 7 OZON
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8004.table b/definitions/bufr/tables/0/wmo/9/codetables/8004.table
new file mode 100644
index 0000000..348d3d1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8004.table
@@ -0,0 +1,6 @@
+2 2 UNSTEADY (UNS)
+3 3 LEVEL FLIGHT, ROUTINE OBSERVATION (LVR)
+4 4 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED (LVW)
+5 5 ASCENDING (ASC)
+6 6 DESCENDING(DES)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8005.table b/definitions/bufr/tables/0/wmo/9/codetables/8005.table
new file mode 100644
index 0000000..2313ea5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8005.table
@@ -0,0 +1,7 @@
+0 0 RESERVED
+1 1 STORM CENTRE
+2 2 OUTER LIMIT OR EDGE OF STORM
+3 3 LOCATION OF MAXIMUM WIND
+4 4 LOCATION OF STORM IN THE PERTURBED ANALYSIS
+5 5 LOCATION OF STORM IN THE ANALYSIS
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8006.table b/definitions/bufr/tables/0/wmo/9/codetables/8006.table
new file mode 100644
index 0000000..9f56c62
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8006.table
@@ -0,0 +1,8 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 PROMINENT MAXIMUM LEVEL
+5 5 PROMINENT MINIMUM LEVEL
+6 6 MINIMUM PRESSURE LEVEL
+7 7 RESERVED
+8 8 LEVEL OF UNDETERMINED SIGNIFICANCE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8007.table b/definitions/bufr/tables/0/wmo/9/codetables/8007.table
new file mode 100644
index 0000000..3e4d2cc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8007.table
@@ -0,0 +1,5 @@
+0 0 POINT
+1 1 LINE
+2 2 AREA
+3 3 VOLUME
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8008.table b/definitions/bufr/tables/0/wmo/9/codetables/8008.table
new file mode 100644
index 0000000..2714b5a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8008.table
@@ -0,0 +1,8 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 LEVEL OF BETA RADIATION MAXIMUM
+5 5 LEVEL OF GAMMA RADIATION MAXIMUM
+6 6 MINIMUM PRESSURE LEVEL
+7 7 RESERVED
+8 8 LEVEL OF UNDETERMINED SIGNIFICANCE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8009.table b/definitions/bufr/tables/0/wmo/9/codetables/8009.table
new file mode 100644
index 0000000..153f92a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8009.table
@@ -0,0 +1,16 @@
+0 0 LEVEL FLIGHT, ROUTINE OBSERVATION, UNSTEADY
+1 1 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED, UNSTEADY
+2 2 UNSTEADY (UNS)
+3 3 LEVEL FLIGHT, ROUTINE OBSERVATION (LVR)
+4 4 LEVEL FLIGHT, HIGHEST WIND ENCOUNTERED (LVW)
+5 5 ASCENDING (ASC)
+6 6 DESCENDING (DES)
+7 7 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS
+8 8 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS, UNSTEADY
+9 9 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS
+10 10 ASCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS, UNSTEADY
+11 11 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS
+12 12 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    TIME INCREMENTS, UNSTEADY
+13 13 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS
+14 14 DESCENDING, OBSERVATION INTERVALS SELECTED BY"    PRESSURE INCREMENTS, UNSTEADY
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8010.table b/definitions/bufr/tables/0/wmo/9/codetables/8010.table
new file mode 100644
index 0000000..50e8c70
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8010.table
@@ -0,0 +1,13 @@
+0 0 RESERVED
+1 1 BARE SOIL
+2 2 BARE ROCK
+3 3 LAND GRASS COVER
+4 4 WATER (LAKE, SEA)
+5 5 FLOOD WATER UNDERNEATH
+6 6 SNOW
+7 7 ICE
+8 8 RUNWAY OR ROAD
+9 9 SHIP OR PLATFORM DECK IN STEEL
+10 10 SHIP OR PLATFORM DECK IN WOOD
+11 11 SHIP OR PLATFORM DECK PARTLY COVERED WITH RUBBER MAT
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8011.table b/definitions/bufr/tables/0/wmo/9/codetables/8011.table
new file mode 100644
index 0000000..c8ed7cb
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8011.table
@@ -0,0 +1,26 @@
+0 0 QUASI-STATIONARY FRONT AT THE SURFACE
+1 1 QUASI-STATIONARY FRONT ABOVE THE SURFACE
+2 2 WARM FRONT AT THE SURFACE
+3 3 WARM FRONT ABOVE THE SURFACE
+4 4 COLD FRONT AT THE SURFACE
+5 5 COLD FRONT ABOVE THE SURFACE
+6 6 OCCLUSION
+7 7 INSTABILITY LINE
+8 8 INTERTROPICAL FRONT
+9 9 CONVERGENCE LINE
+10 10 JET STREAM
+11 11 CLOUD CLEAR
+12 12 CLOUD
+13 13 TURBULENCE
+14 14 STORM
+15 15 AIRFRAME ICING
+16 16 PHENOMENON
+17 17 VOLCANO
+18 18 ATMOSPHERICS
+20 20 SPECIAL CLOUDS
+21 21 THUNDERSTORM (VAL)
+22 22 TROPICAL CYCLONE (VAL)
+23 23 MOUNTAIN WAVE (VAL)
+24 24 DUSTSTORM (VAL)
+25 25 SANDSTORM (VAL)
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8012.table b/definitions/bufr/tables/0/wmo/9/codetables/8012.table
new file mode 100644
index 0000000..0cef734
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8012.table
@@ -0,0 +1,4 @@
+0 0 LAND
+1 1 SEA
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8013.table b/definitions/bufr/tables/0/wmo/9/codetables/8013.table
new file mode 100644
index 0000000..6ea96bf
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8013.table
@@ -0,0 +1,4 @@
+0 0 NIGHT
+1 1 DAY
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8014.table b/definitions/bufr/tables/0/wmo/9/codetables/8014.table
new file mode 100644
index 0000000..da6bb04
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8014.table
@@ -0,0 +1,10 @@
+0 0 10-MINUTE MEAN VALUE - NORMAL VALUE
+1 1 10-MINUTE MEAN VALUE - ABOVE THE UPPER LIMIT FOR ASSESSMENT"    OF RVR (P)
+2 2 10-MINUTE MEAN VALUE - BELOW LOWER LIMIT FOR ASSESSMENT OF R"    VR (M)
+3 3 ONE MINUTE MINIMUM VALUE - NORMAL VALUE
+4 4 ONE MINUTE MINIMUM VALUE - ABOVE THE UPPER LIMIT FOR ASSESSM"    ENT OF RVR (P)
+5 5 ONE MINUTE MINIMUM VALUE - BELOW LOWER LIMIT FOR ASSESSMENT"    OF RVR (M)
+6 6 ONE MINUTE MAXIMUM VALUE - NORMAL VALUE
+7 7 ONE MINUTE MAXIMUM VALUE - ABOVE THE UPPER LIMIT FOR ASSESS"    MENT OF RVR (P)
+8 8 ONE MINUTE MAXIMUM VALUE - BELOW LOWER LIMIT FOR ASSESSMENT"    OF RVR (M)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8016.table b/definitions/bufr/tables/0/wmo/9/codetables/8016.table
new file mode 100644
index 0000000..6b8a1fa
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8016.table
@@ -0,0 +1,5 @@
+0 0 NOSIG
+1 1 BECMG
+2 2 TEMPO
+3 3 FM
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8017.table b/definitions/bufr/tables/0/wmo/9/codetables/8017.table
new file mode 100644
index 0000000..b3156f8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8017.table
@@ -0,0 +1,4 @@
+0 0 FM
+1 1 TL
+2 2 AT
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8018.table b/definitions/bufr/tables/0/wmo/9/codetables/8018.table
new file mode 100644
index 0000000..e4078dc
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8018.table
@@ -0,0 +1,5 @@
+1 1 LAND IS PRESENT
+2 2 SURFACE ICE MAP INDICATES ICE IS PRESENT
+11 11 ICE MAP DATA NOT AVAILABLE
+12 12 ATTENUATION MAP DATA NOT AVAILABLE
+17 17 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8021.table b/definitions/bufr/tables/0/wmo/9/codetables/8021.table
new file mode 100644
index 0000000..988dfd0
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8021.table
@@ -0,0 +1,32 @@
+0 0 RESERVED
+1 1 TIME SERIES
+2 2 TIME AVERAGED
+3 3 ACCUMULATED
+4 4 FORECAST
+5 5 FORECAST TIME SERIES
+6 6 FORECAST TIME AVERAGED
+7 7 FORECAST ACCUMULATED
+8 8 ENSEMBLE MEAN
+9 9 ENSEMBLE MEAN TIME SERIES
+10 10 ENSEMBLE MEAN TIME AVERAGED
+11 11 ENSEMBLE MEAN ACCUMULATED
+12 12 ENSEMBLE MEAN FORECAST
+13 13 ENSEMBLE MEAN FORECAST TIME SERIES
+14 14 ENSEMBLE MEAN FORECAST AVERAGED
+15 15 ENSEMBLE MEAN FORECAST ACCUMULATED
+16 16 ANALYSIS
+17 17 START OF PHENOMENON
+18 18 RADIOSONDE LAUNCH TIME
+19 19 START OF ORBIT
+20 20 END OF ORBIT
+21 21 TIME OF ASCENDING NODE
+22 22 TIME OF OCCURENCE OF WIND SHIFT
+23 23 MONITORING PERIOD
+24 24 AGREED TIME LIMIT FOR REPORT RECEPTION
+25 25 NOMINAL REPORTING TIME
+26 26 TIME OF LAST KNOWN POSITION
+27 27 FIRST GUESS    --NOT WMO ENTRY
+28 28 START OF SCAN  --NOT WMO ENTRY
+29 29 END OF SCAN    --NOT WMO ENTRY
+30 30 RESERVED
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8023.table b/definitions/bufr/tables/0/wmo/9/codetables/8023.table
new file mode 100644
index 0000000..d65ec12
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8023.table
@@ -0,0 +1,17 @@
+2 2 MAXIMUM VALUE
+3 3 MINIMUM VALUE
+4 4 MEAN VALUE
+5 5 MEDIAN VALUE
+6 6 MODAL VALUE
+7 7 MEAN ABSOLUTE ERROR
+9 9 BEST ESTIMATE OF STANDARD DEVIATION (N-1)
+10 10 STANDARD DEVIATION
+11 11 HARMONIC MEAN
+12 12 ROOT MEAN SQUARE VECTOR ERROR
+13 13 ROOT-MEAN-SQUARE
+32 32 PROBABILITY OF GROSS ERROR
+33 33 PRESCRIBED OBSERVATION ERROR
+34 34 PERSISTENCE OBSERVATION ERROR
+35 35 FINAL OBSERVATION ERROR
+36 36 REPRESENTATIVNESS OBSERVATION ERROR
+63 63 MISSING
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8024.table b/definitions/bufr/tables/0/wmo/9/codetables/8024.table
new file mode 100644
index 0000000..067e37d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8024.table
@@ -0,0 +1,15 @@
+2 2 OBSERVED MINUS MAXIMUM
+3 3 OBSERVED MINUS MINIMUM
+4 4 OBSERVED MINUS MEAN
+5 5 OBSERVED MINUS MEDIAN
+6 6 OBSERVED MINUS MODE
+11 11 OBSERVED MINUS CLIMATOLOGY (ANOMALY)
+12 12 OBSERVED MINUS ANALYZED VALUE
+13 13 OBSERVED MINUS INITIALISED ANALYZED VALUE
+14 14 OBSERVED MINUS FORECAST VALUE
+21 21 OBSERVED MINUS INTERPOLATED VALUE
+22 22 OBSERVED MINUS HYDROSTATICALLY CALCULATED VALUE
+32 32 OBSERVED MINUS FIRST GUESS
+33 33 OBSERVED MINUS ANALYSIS
+34 34 OBSERVED MINUS INITIALIZED ANALYSIS
+63 63 MISSING
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8025.table b/definitions/bufr/tables/0/wmo/9/codetables/8025.table
new file mode 100644
index 0000000..5405e33
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8025.table
@@ -0,0 +1,5 @@
+0 0 UNIVERSAL TIME COORDINATED (UTC) MINUS"    LOCAL STANDARD TIME (LST)
+1 1 LOCAL STANDARD TIME
+2 2 UNIVERSAL TIME COORDINATED (UTC) MINUS SATELLITE CLOCK
+5 5 TIME DIFFERENCE FROM EDGE OF PROCESSING SEGMENT
+15 15 MISSING
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8026.table b/definitions/bufr/tables/0/wmo/9/codetables/8026.table
new file mode 100644
index 0000000..d30bb03
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8026.table
@@ -0,0 +1,5 @@
+0 0 AVERAGING KERNEL MATRIX
+1 1 CORRELATION MATRIX
+2 2 LOWER TRIANGULAR CORRELATION MATRIX SQUARE ROOT (L FROM C=LL"    T)
+3 3 INVERSE LOWER TRIANGULAR CORRELATION MATRIX SQUARE ROOT (L**"    -1)
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8029.table b/definitions/bufr/tables/0/wmo/9/codetables/8029.table
new file mode 100644
index 0000000..28b071b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8029.table
@@ -0,0 +1,5 @@
+0 0 OPEN OCEAN OR SEMI-ENCLOSED SEA
+1 1 ENCLOSED SEA OR LAKE
+2 2 CONTINENTAL ICE
+3 3 LAND
+255 255 MISSING
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8033.table b/definitions/bufr/tables/0/wmo/9/codetables/8033.table
new file mode 100644
index 0000000..449fbd4
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8033.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 PERCENTAGE CONFIDENCE CALCULATED USING CLOUD FRACTION
+2 2 PERCENTAGE CONFIDENCE CALCULATED USING STANDARD"    DEVIATION OF TEMPERATURE
+3 3 PERCENTAGE CONFIDENCE CALCULATED USING PROBABILITY OF"     THE CLOUD CONTAMINATION
+4 4 PERCENTAGE CONFIDENCE CALCULATED USING NORMALITY OF DISTRIBU"    TION
+127 127 MISSING
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8035.table b/definitions/bufr/tables/0/wmo/9/codetables/8035.table
new file mode 100644
index 0000000..d56a5d7
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8035.table
@@ -0,0 +1,8 @@
+0 0 GLOBAL
+1 1 REGIONAL
+2 2 NATIONAL
+3 3 SPECIAL
+4 4 BILATERAL
+5 5 RESERVED
+6 6 RESERVED
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8036.table b/definitions/bufr/tables/0/wmo/9/codetables/8036.table
new file mode 100644
index 0000000..6cfeab5
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8036.table
@@ -0,0 +1,8 @@
+0 0 WMO SECRETARIAT
+1 1 WMO
+2 2 RSMC
+3 3 NMC
+4 4 RTH
+5 5 OBSERVING SITE
+6 6 OTHER
+7 7 MISSING
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8039.table b/definitions/bufr/tables/0/wmo/9/codetables/8039.table
new file mode 100644
index 0000000..75f133d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8039.table
@@ -0,0 +1,8 @@
+0 0 ISSUE TIME OF FORECAST
+1 1 TIME OF COMMNENCEMENT OF PERIOD OF THE FORECAST
+2 2 TIME OF ENDING OF PERIOD OF THE FORECAST
+3 3 FORECSAT TIME OF MAXIMUM TEMPERATURE
+4 4 FORECSAT TIME OF MINIMUM TEMPERATURE
+5 5 TIME OF BEGINNING OF THE FORECAST
+6 6 TIME OF ENDING OF THE FORECAST
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8040.table b/definitions/bufr/tables/0/wmo/9/codetables/8040.table
new file mode 100644
index 0000000..7c2430e
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8040.table
@@ -0,0 +1,43 @@
+0 0 HIGH RESOLUTION DATA SAMPLE
+1 1 WITHIN 20 HPA OF SURFACE
+2 2 PRESSURE LESS THAN 10 HPA (I.E., 9, 8, 7, ETC.)"    WHEN NO OTHER REASON APPLIES
+3 3 BASE PRESSURE LEVEL FOR STABILITY INDEX
+4 4 BEGIN DOUBTFUL TEMPERATURE, HEIGHT DATA
+5 5 BEGIN MISSING DATA (ALL ELEMENTS)
+6 6 BEGIN MISSING RH DATA
+7 7 BEGIN MISSING TEMPERATURE DATA
+8 8 HIGHEST LEVEL REACHED BEFORE BALLOON"    DESCENT BECAUSE OF ICING OR TURBULENCE
+9 9 END DOUBTFUL TEMPERATURE, HEIGHT DATA
+10 10 END MISSING DATA (ALL ELEMENTS)
+11 11 END MISSING RH DATA
+12 12 END MISSING TEMPERATURE DATA
+13 13 ZERO DEGREES C CROSSING(S) FOR RADAT
+14 14 STANDARD PRESSURE LEVEL
+15 15 OPERATOR ADDED LEVEL
+16 16 OPERATOR DELETED LEVEL
+17 17 BALLOON RE-ASCENDED BEYOND PREVIOUS HIGHEST ASCENT LEVEL
+18 18 SIGNIFICANT RH LEVEL
+19 19 RH LEVEL SELECTION TERMINATED
+20 20 SURFACE LEVEL
+21 21 SIGNIFICANT TEMPERATURE LEVEL
+22 22 MANDATORY TEMPERATURE LEVEL
+23 23 FLIGHT TERMINATION LEVEL
+24 24 TROPOPAUSE(S)
+25 25 AIRCRAFT REPORT
+26 26 INTERPOLATED (GENERATED) LEVEL
+27 27 MANDATORY WIND LEVEL
+28 28 SIGNIFICANT WIND LEVEL
+29 29 MAXIMUM WIND LEVEL
+30 30 INCREMENTAL WIND LEVEL (FIXED REGIONAL)
+31 31 INCREMENTAL HEIGHT LEVEL (GENERATED)
+32 32 WIND TERMINATION LEVEL
+33 33 PRESSURE 100 TO 110 HPA, WHEN NO OTHER REASON APPLIES
+40 40 SIGNIFICANT THERMODYNAMIC LEVEL (INVERSION)
+41 41 SIGNIFICANT RH LEVEL ( PER NCDC CRITERIA)
+42 42 SIGNIFICANT TEMPERATURE LEVEL (PER NCDC)
+43 43 BEGIN MISSING WIND DATA
+44 44 END MISSING WIND DATA
+60 60 LEVEL OF 80-KNOT ISOTACH ABOVE JET
+61 61 LEVEL OF 80-KNOT ISOTACH BELOW JET
+62 62 OTHER
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8041.table b/definitions/bufr/tables/0/wmo/9/codetables/8041.table
new file mode 100644
index 0000000..3596f95
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8041.table
@@ -0,0 +1,9 @@
+0 0 PARENT SITE
+1 1 OBSERVATION SITE
+2 2 BALLOON MANUFACTURE DATE
+3 3 BALLOON LAUNCH POINT
+4 4 SURFACE OBSERVATION
+5 5 SURFACE OBSERVATION DISPLACEMENT FROM LAUNCH POINT
+6 6 FLIGHT LEVEL OBSERVATION
+7 7 FLIGHT LEVEL TERMINATION POINT
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8042.table b/definitions/bufr/tables/0/wmo/9/codetables/8042.table
new file mode 100644
index 0000000..b98cece
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8042.table
@@ -0,0 +1,13 @@
+1 1 SURFACE
+2 2 STANDARD LEVEL
+3 3 TROPOPAUSE LEVEL
+4 4 MAXIMUM WIND LEVEL
+5 5 SIGNIFICANT TEMPERATURE LEVEL
+6 6 SIGNIFICANT HUMIDITY LEVEL
+7 7 SIGNIFICANT WIND LEVEL
+8 8 BEGINNING OF MISSING TEMPERATURE DATA
+9 9 END OF MISSING TEMPERATURE DATA
+10 10 BEGINNING OF MISSING HUMIDITY DATA
+11 11 END OF MISSING HUMIDITY DATA
+12 12 BEGINNING OF MISSING WIND DATA
+13 13 END OF MISSING WIND DATA
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8043.table b/definitions/bufr/tables/0/wmo/9/codetables/8043.table
new file mode 100644
index 0000000..6bd94fe
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8043.table
@@ -0,0 +1,21 @@
+0 0 OZONE, O3,10028-15-6
+1 1 WATER VAPOUR, H2O, 7732-18-5
+2 2 METHANE, CH4, 74-82-8
+3 3 CARBON DIOXIDE, CO2, 37210-16-5
+4 4 CARBON MONOXIDE, CO, 630-08-0
+5 5 NITROGEN DIOXIDE, NO2, 10102-44-0
+6 6 NITROUS OXIDE, N2O, 10024-97-2
+7 7 FORMALDEHYDE, HCHO, 50-00-0
+8 8 SULFUR DIOXIDE, SO2, 7446-09-5
+9 9 BROMINE OXIDE, BRO, 15656-19-6
+10 10 CHLORINE DIOXIDE, OCLO, 10049-04-4
+11 11 NITROGEN MONOXIDE, NO, 10102-43-9
+12 12 AMMONIA, NH3, 7664-41-7
+25 25 PARTICULATE MATTER < 1.0 MICRONS
+26 26 PARTICULATE MATTER < 2.5 MICRONS
+27 27 PARTICULATE MATTER < 10 MICRONS
+28 28 AEROSOLS GENERIC
+29 29 SMOKE GENERIC
+30 30 CRUSTAL MATERIAL (GENERIC DUST)
+31 31 VOLCANIC ASH
+255 255 MISSING
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8050.table b/definitions/bufr/tables/0/wmo/9/codetables/8050.table
new file mode 100644
index 0000000..4b401f1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8050.table
@@ -0,0 +1,11 @@
+0 0 RESERVED
+1 1 PRESSURE
+2 2 TEMPERATURE
+3 3 EXTREME TEMPERATURE
+4 4 VAPOUR PRESSURE
+5 5 PRECIPITATION
+6 6 SUNSHINE DURATION
+7 7 MAXIMUM TEMPERATURE
+8 8 MINIMUM TEMPERATURE
+9 9 WIND
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8051.table b/definitions/bufr/tables/0/wmo/9/codetables/8051.table
new file mode 100644
index 0000000..5249fe6
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8051.table
@@ -0,0 +1,7 @@
+1 1 PRESSURE
+2 2 TEMPERATURE
+3 3 EXTREME TEMPERATURE
+4 4 VAPOUR PRESSURE
+5 5 PRECIPITATION
+6 6 SUNSHINE DURATION
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8052.table b/definitions/bufr/tables/0/wmo/9/codetables/8052.table
new file mode 100644
index 0000000..f6f02e9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8052.table
@@ -0,0 +1,26 @@
+0 0 MEAN WIND SPEED OVER 10-MINUTES PERIOD OBSERVED OR RECORDED"    EQUAL TO OR MORE THAN 10 M/S
+1 1 MEAN WIND SPEED OVER 10-MINUTES PERIOD OBSERVED OR RECORDED"    EQUAL TO OR MORE THAN 20 M/S
+2 2 MEAN WIND SPEED OVER 10-MINUTES PERIOD OBSERVED OR RECORDED"    EQUAL TO OR MORE THAN 30 M/S
+3 3 MAXIMUM TEMPERATURE LESS THAN 273.2 K
+4 4 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 298.2 K
+5 5 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 303.2 K
+6 6 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 308.2 K
+7 7 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 313.2 K
+8 8 MINIMUM TEMPERATURE LESS THAN 273.2 K
+9 9 MAXIMUM TEMPERATURE EQUAL TO OR MORE THAN 273.2 K
+10 10 PRECIPITATION EQUAL TO OR MORE THAN   1.0 KG/M**2
+11 11 PRECIPITATION EQUAL TO OR MORE THAN   5.0 KG/M**2
+12 12 PRECIPITATION EQUAL TO OR MORE THAN  10.0 KG/M**2
+13 13 PRECIPITATION EQUAL TO OR MORE THAN  50.0 KG/M**2
+14 14 PRECIPITATION EQUAL TO OR MORE THAN 100.0 KG/M**2
+15 15 PRECIPITATION EQUAL TO OR MORE THAN 150.0 KG/M**2
+16 16 SNOW DEPTH MORE THAN 0.0 M
+17 17 SNOW DEPTH MORE THAN 0.01 M
+18 18 SNOW DEPTH MORE THAN 0.10 M
+19 19 SNOW DEPTH MORE THAN 0.50 M
+20 20 HORIZONTAL VISIBILITY LESS THAN   50 M
+21 21 HORIZONTAL VISIBILITY LESS THAN  100 M
+22 22 HORIZONTAL VISIBILITY LESS THAN 1000 M
+23 23 HAIL
+24 24 THUNDERSTORM
+31 31 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8053.table b/definitions/bufr/tables/0/wmo/9/codetables/8053.table
new file mode 100644
index 0000000..e0c5039
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8053.table
@@ -0,0 +1,4 @@
+0 0 VALUE OCCURED ON ONLY ONE DAY IN THE MONTH
+1 1 VALUE OCCURED ON MORE THAN ONE DAY IN THE MONTH
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8054.table b/definitions/bufr/tables/0/wmo/9/codetables/8054.table
new file mode 100644
index 0000000..71afef9
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8054.table
@@ -0,0 +1,3 @@
+0 0 WIND SPEED OR GUST IS AS REPORTED
+1 1 WIND SPEED IS GREATER THAN THAT REPRTED (P IN METAR/TAF/SPEC"    I)
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8060.table b/definitions/bufr/tables/0/wmo/9/codetables/8060.table
new file mode 100644
index 0000000..2865fec
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8060.table
@@ -0,0 +1,8 @@
+0 0 RESERVED
+1 1 RANGE
+2 2 AZIMUTH
+3 3 HORIZONTAL
+4 4 VERTICAL
+5 5 NORTH/SOUTH
+6 6 EAST/WEST
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8065.table b/definitions/bufr/tables/0/wmo/9/codetables/8065.table
new file mode 100644
index 0000000..69b80ea
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8065.table
@@ -0,0 +1,4 @@
+0 0 NO SUN-GLINT
+1 1 SUN-GLINT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8066.table b/definitions/bufr/tables/0/wmo/9/codetables/8066.table
new file mode 100644
index 0000000..fcc0252
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8066.table
@@ -0,0 +1,4 @@
+0 0 OPAQUE
+1 1 SEMI-TRANSPARENT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8070.table b/definitions/bufr/tables/0/wmo/9/codetables/8070.table
new file mode 100644
index 0000000..2df3629
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8070.table
@@ -0,0 +1,6 @@
+0 0 RESERVED
+1 1 RESERVED
+2 2 EARTH LOCATED INSTRUMENT COUNTS,"    CALIBRATION COEFFICIENTS AND HOUSEKEEPING (LEVEL 1B)
+3 3 EARTH LOCATED CALIBRATED RADIANCES (LEVEL 1C)
+4 4 MAPPED TO A COMMON FOOTPRINT, EARTH LOCATED"    CALIBRATED RADIANCES (LEVEL 1D)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8072.table b/definitions/bufr/tables/0/wmo/9/codetables/8072.table
new file mode 100644
index 0000000..bd831e1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8072.table
@@ -0,0 +1,4 @@
+0 0 MIXED
+1 1 CLEAR
+2 2 CLOUDY
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8074.table b/definitions/bufr/tables/0/wmo/9/codetables/8074.table
new file mode 100644
index 0000000..5778e65
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8074.table
@@ -0,0 +1,4 @@
+0 0 OPEN OCEAN OR SEMI-ENCLOSED SEA
+1 1 NON-OCEAN LIKE
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8075.table b/definitions/bufr/tables/0/wmo/9/codetables/8075.table
new file mode 100644
index 0000000..5f5e3a2
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8075.table
@@ -0,0 +1,4 @@
+0 0 ASCENDING ORBIT
+1 1 DESCENDING ORBIT
+2 2 RESERVED
+3 3 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8076.table b/definitions/bufr/tables/0/wmo/9/codetables/8076.table
new file mode 100644
index 0000000..c63942f
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8076.table
@@ -0,0 +1,3 @@
+0 0 KU
+1 1 C
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8077.table b/definitions/bufr/tables/0/wmo/9/codetables/8077.table
new file mode 100644
index 0000000..2c7902b
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8077.table
@@ -0,0 +1,7 @@
+0 0 LAND
+1 1 SEA
+2 2 COASTAL
+3 3 OPEN OCEAN OR SEMI-ENCLOSED SEA
+4 4 ENCLOSED SEA OR LAKE
+5 5 CONTINENTAL ICE
+127 127 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8079.table b/definitions/bufr/tables/0/wmo/9/codetables/8079.table
new file mode 100644
index 0000000..25fc9e1
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8079.table
@@ -0,0 +1,9 @@
+0 0 NORMAL ISSUE
+1 1 CORRECTION TO A PREVIOUSLY ISSUED PRODUCT (COR)
+2 2 AMANDMENT TO A PREVIOUSLY ISSUED PRODUCT *AMD)
+3 3 CORRECTION TO A PREVIOUSLY ISSUED AMENDED PRODUCT (COR AMD)
+4 4 CANCELLATION OD A PREVIOUSLY ISSUED PRODUCT (CNL)
+5 5 NO PRODUCT AVAILABLE (NIL)
+6 6 SPECIAL REPORT ( SPECI)
+7 7 CORRECTED SPECIAL REPORT (SPECI COR)
+15 15 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8080.table b/definitions/bufr/tables/0/wmo/9/codetables/8080.table
new file mode 100644
index 0000000..8972f26
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8080.table
@@ -0,0 +1,9 @@
+0 0 TOTAL WATER PRESSURE PROFILE
+1 1 TOTAL WATER TEMPERATURE PROFILE
+2 2 TOTAL WATER SALINITY PROFILE
+3 3 TOTAL WATER CONDUCTIVITY PROFILE
+10 10 WATER PRESSURE AT A LEVEL
+11 11 WATER TEMPERATURE AT A LEVEL
+12 12 SALINITY AT A LEVEL
+20 20 POSITION
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8081.table b/definitions/bufr/tables/0/wmo/9/codetables/8081.table
new file mode 100644
index 0000000..75d2887
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8081.table
@@ -0,0 +1,5 @@
+0 0 SENSOR
+1 1 TRANSMITTER
+2 2 RECEIVER
+3 3 OBSERVING PLATFORM
+63 63 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8082.table b/definitions/bufr/tables/0/wmo/9/codetables/8082.table
new file mode 100644
index 0000000..1f24db8
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8082.table
@@ -0,0 +1,3 @@
+0 0 SENSOR HEIGHT IS NOT MODIFIED
+1 1 SENSOR HEIGHT IS MODIFIED TO STANDARD LEVEL
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8083.table b/definitions/bufr/tables/0/wmo/9/codetables/8083.table
new file mode 100644
index 0000000..b754702
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8083.table
@@ -0,0 +1,9 @@
+1 1 ADJUSTED WITH RESPECT TO REPRESENTATIVE HEIGHT OF SENSOR ABO"    VE LOCAL GROUND (OR DECK OF MARINE PLATFORM)
+2 2 ADJUSTED WITH RESPECT TO REPRESENTATIVE HEIGHT OF SENSOR ABO"    VE WATER SURFACE
+3 3 ADJUSTED WITH RESPECT TO STANDARD SURFACE ROUGHNESS
+4 4 ADJUSTED WITH RESPECT TO WIND SPEED
+5 5 ADJUSTED WITH RESPECT TO TEMPERATURE
+6 6 ADJUSTED WITH RESPECT TO PRESSURE
+7 7 ADJUSTED WITH RESPECT TO HUMIDITY
+8 8 ADJUSTED WITH RESPECT TO EVAPORATION
+9 9 ADJUSTED WITH RESPECT TO WETTING LOSSES
diff --git a/definitions/bufr/tables/0/wmo/9/codetables/8085.table b/definitions/bufr/tables/0/wmo/9/codetables/8085.table
new file mode 100644
index 0000000..de7bb90
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/codetables/8085.table
@@ -0,0 +1,8 @@
+0 0 FORE BEAM
+1 1 MID BEAM
+2 2 AFT BEAM
+3 3 RESERVED
+4 4 RESERVED
+5 5 RESERVED
+6 6 RESERVED
+7 7 MISSING VALUE
diff --git a/definitions/bufr/tables/0/wmo/9/element.table b/definitions/bufr/tables/0/wmo/9/element.table
new file mode 100644
index 0000000..cc9082d
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/element.table
@@ -0,0 +1,1297 @@
+#code|abbreviation|type|name|unit|scale|reference|width|crex_unit|crex_scale|crex_width
+000001|tableAEntry|string|TABLE A: ENTRY|CCITT IA5|0|0|24|Character|0|3
+000002|tableALine1|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 1|CCITT IA5|0|0|256|Character|0|32
+000003|tableALine2|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 2|CCITT IA5|0|0|256|Character|0|32
+000004|masterTable|string|BUFR/CREX MASTER TABLE|CCITT IA5|0|0|16|Character|0|2
+000005|editionNumber|string|BUFR/CREX EDITION NUMBER|CCITT IA5|0|0|24|Character|0|3
+000006|bufrMasterTableVersionNumber|string|BUFR MASTER TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000007|crexMasterTableVersionNumber|string|CREX MASTER TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000008|bufrLocalTableVersionNumber|string|BUFR LOCAL TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000010|fDescriptorToBeAddedOrDefined|string|F DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|8|Character|0|1
+000011|xDescriptorToBeAddedOrDefined|string|X DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|16|Character|0|2
+000012|yDescriptorToBeAddedOrDefined|string|Y DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|24|Character|0|3
+000013|elementNameLine1|string|ELEMENT NAME, LINE 1|CCITT IA5|0|0|256|Character|0|32
+000014|elementNameLine2|string|ELEMENT NAME, LINE 2|CCITT IA5|0|0|256|Character|0|32
+000015|unitsName|string|UNITS NAME|CCITT IA5|0|0|192|Character|0|24
+000016|unitsScaleSign|string|UNITS SCALE SIGN|CCITT IA5|0|0|8|Character|0|1
+000017|unitsScale|string|UNITS SCALE|CCITT IA5|0|0|24|Character|0|3
+000018|unitsReferenceSign|string|UNITS REFERENCE SIGN|CCITT IA5|0|0|8|Character|0|1
+000019|unitsReferenceValue|string|UNITS REFERENCE VALUE|CCITT IA5|0|0|80|Character|0|10
+000020|elementDataWidth|string|ELEMENT DATA WIDTH|CCITT IA5|0|0|24|Character|0|3
+000030|descriptorDefiningSequence|string|DESCRIPTOR DEFINING SEQUENCE|CCITT IA5|0|0|48|Character|0|6
+001001|blockNumber|long|WMO BLOCK NUMBER|Numeric|0|0|7|Numeric|0|2
+001002|stationNumber|long|WMO STATION NUMBER|Numeric|0|0|10|Numeric|0|3
+001003|regionNumber|table|WMO REGION NUMBER/GEOGRAPHICAL AREA|CODE TABLE|0|0|3|CODE TABLE|0|1
+001004|wmoRegionSubArea|long|WMO REGION SUB-AREA (SEE NOTE 9)|Numeric|0|0|3|Numeric|0|1
+001005|buoyOrPlatformIdentifier|long|BUOY/PLATFORM IDENTIFIER|Numeric|0|0|17|Numeric|0|5
+001006|aircraftFlightNumber|string|AIRCRAFT FLIGHT NUMBER|CCITT IA5|0|0|64|Character|0|8
+001007|satelliteIdentifier|table|SATELLITE IDENTIFIER|CODE TABLE|0|0|10|CODE TABLE|0|4
+001008|aircraftRegistrationNumberOrOtherIdentification|string|AIRCRAFT REGISTRATION NUMBER OR OTHER IDENTIFICATION|CCITT IA5|0|0|64|Character|0|8
+001009|commercialAircraftType|string|TYPE OF COMMERCIAL AIRCRAFT|CCITT IA5|0|0|64|Character|0|8
+001010|stationaryBuoyPlatformIdentifierEGCManBuoys|string|STATIONARY BUOY PLATFORM IDENTIFIER; E.G. C-MAN BUOYS|CCITT IA5|0|0|64|Character|0|8
+001011|shipOrMobileLandStationIdentifier|string|SHIP OR MOBILE LAND STATION IDENTIFIER|CCITT IA5|0|0|72|Character|0|9
+001012|directionOfMotionOfMovingObservingPlatform|long|DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM**|deg|0|0|9|deg|0|3
+001013|movingObservingPlatformSpeed|long|SPEED OF MOTION OF MOVING OBSERVING PLATFORM*|m/s|0|0|10|m/s|0|3
+001014|platformDriftSpeed|double|PLATFORM DRIFT SPEED (HIGH PRECISION)|m/s|2|0|10|m/s|2|4
+001015|stationOrSiteName|string|STATION OR SITE NAME|CCITT IA5|0|0|160|Character|0|20
+001018|shortStationName|string|SHORT STATION OR SITE NAME|CCITT IA5|0|0|40|Character|0|5
+001019|longStationName|string|LONG STATION OR SITE NAME|CCITT IA5|0|0|256|Character|0|32
+001020|wmoRegionSubArea|long|WMO REGION SUB-AREA|Numeric|0|0|4|Numeric|0|2
+001021|synopticFeatureIdentifier|long|SYNOPTIC FEATURE IDENTIFIER|Numeric|0|0|14|Numeric|0|4
+001022|featureName|string|NAME OF FEATURE (SEE NOTE 11)|CCITT IA5|0|0|224|Character|0|28
+001023|observationSequenceNumber|long|OBSERVATION SEQUENCE NUMBER|Numeric|0|0|9|Numeric|0|3
+001025|stormIdentifier|string|STORM IDENTIFIER|CCITT IA5|0|0|24|Character|0|3
+001026|stormName|string|WMO STORM NAME|CCITT IA5|0|0|64|Character|0|8
+001027|longStormName|string|WMO LONG STORM NAME|CCITT IA5|0|0|80|Character|0|10
+001030|numericalModelIdentifier|string|NUMERICAL MODEL IDENTIFIER|CCITT IA5|0|0|128|Character|0|16
+001031|centre|table|IDENTIFICATION OF ORIGINATING/GENERATING CENTRE (SEE NOTE 10)|CODE TABLE|0|0|16|CODE TABLE|0|5
+001032|generatingApplication|table|GENERATING APPLICATION|CODE TABLE|0|0|8|CODE TABLE|0|3
+001033|centre|table|IDENTIFICATION OF ORIGINATING/GENERATING CENTRE|CODE TABLE|0|0|8|CODE TABLE|0|3
+001034|subCentre|table|IDENTIFICATION OF ORIGINATING/GENERATING SUB-CENTRE|CODE TABLE|0|0|8|CODE TABLE|0|3
+001035|centre|table|ORIGINATING CENTRE|Common CODE TABLE C-11|0|0|16|Common CODE TABLE C-11|0|5
+001036|agencyInChargeOfOperatingObservingPlatform|table|AGENCY IN CHARGE OF OPERATING THE OBSERVING PLATFORM|CODE TABLE|0|0|20|CODE TABLE|0|7
+001037|sigmetSequenceIdentifier|string|SIGMET SEQUENCE IDENTIFIER|CCITT IA5|0|0|24|Character|0|3
+001041|absolutePlatformVelocityFirstComponent|double|ABSOLUTE PLATFORM VELOCITY - FIRST COMPONENT (SEE NOTE 6)|m/s|5|-1073741824|31|m/s|5|10
+001042|absolutePlatformVelocitySecondComponent|double|ABSOLUTE PLATFORM VELOCITY - SECOND COMPONENT (SEE NOTE 6)|m/s|5|-1073741824|31|m/s|5|10
+001043|absolutePlatformVelocityThirdComponent|double|ABSOLUTE PLATFORM VELOCITY - THIRD COMPONENT (SEE NOTE 6)|m/s|5|-1073741824|31|m/s|5|10
+001050|platformTransmitterIdNumber|long|PLATFORM TRANSMITTER ID NUMBER|Numeric|0|0|17|Numeric|0|6
+001051|platformTransmitterIdNumber|string|PLATFORM TRANSMITTER ID NUMBER|CCITT IA5|0|0|96|Character|0|12
+001060|aircraftReportingPointBeaconIdentifier|string|AIRCRAFT REPORTING POINT (BEACON IDENTIFIER)|CCITT IA5|0|0|64|Character|0|8
+001062|shortIcaoLocationIndicator|string|SHORT ICAO LOCATION INDICATOR|CCITT IA5|0|0|32|Character|0|4
+001063|icaoLocationIndicator|string|ICAO LOCATION INDICATOR|CCITT IA5|0|0|64|Character|0|8
+001064|runwayDesignator|string|RUNWAY DESIGNATOR|CCITT IA5|0|0|32|Character|0|4
+001065|icaoRegionIdentifier|string|ICAO REGION IDENTIFIER|CCITT IA5|0|0|256|Character|0|32
+001075|tideStationIdentification|string|TIDE STATION IDENTIFICATION|CCITT IA5|0|0|40|Character|0|5
+001080|shipLineNumberAccordingToSoop|string|SHIP LINE NUMBER ACCORDING TO SOOP|CCITT IA5|0|0|32|Character|0|4
+001081|radiosondeSerialNumber|string|RADIOSONDE SERIAL NUMBER|CCITT IA5|0|0|160|Character|0|20
+001082|radiosondeAscensionNumber|long|RADIOSONDE ASCENSION NUMBER (SEE NOTE 12)|Numeric|0|0|14|Numeric|0|4
+001083|radiosondeReleaseNumber|long|RADIOSONDE RELEASE NUMBER (SEE NOTE 12)|Numeric|0|0|3|Numeric|0|1
+001085|observingPlatformManufacturerModel|string|OBSERVING PLATFORM MANUFACTURER'S MODEL|CCITT IA5|0|0|160|Character|0|20
+001086|observingPlatformManufacturerSerialNumber|string|OBSERVING PLATFORM MANUFACTURER'S SERIAL NUMBER|CCITT IA5|0|0|256|Character|0|32
+001087|marineObservingPlatformIdentifier|long|WMO MARINE OBSERVING PLATFORM EXTENDED IDENTIFIER|Numeric|0|0|23|Numeric|0|7
+001090|techniqueForMakingUpInitialPerturbations|table|TECHNIQUE FOR MAKING UP INITIAL PERTURBATIONS|CODE TABLE|0|0|8|CODE TABLE|0|3
+001091|ensembleMemberNumber|long|ENSEMBLE MEMBER NUMBER|Numeric|0|0|10|Numeric|0|4
+001092|ensembleForecastType|table|TYPE OF ENSEMBLE FORECAST|CODE TABLE|0|0|8|CODE TABLE|0|3
+001093|balloonLotNumber|string|BALLOON LOT NUMBER|CCITT IA5|0|0|96|Character|0|12
+001094|wbanNumber|long|WBAN NUMBER|Numeric|0|0|17|Numeric|0|5
+001095|observerIdentification|string|OBSERVER IDENTIFICATION|CCITT IA5|0|0|32|Character|0|4
+001096|stationAcquisition|string|STATION ACQUISITION|CCITT IA5|0|0|160|Character|0|20
+001101|stateIdentifier|table|STATE IDENTIFIER|CODE TABLE|0|0|10|CODE TABLE|0|3
+001102|stationNumber|long|NATIONAL STATION IDENTIFIER|Numeric|0|0|30|Numeric|0|9
+001124|gridPointIdentifier|long|GRID POINT IDENTIFIER|Numeric|0|0|24|Numeric|0|8
+001144|snapshotIdentifier|long|SNAPSHOT IDENTIFIER|Numeric|0|0|31|Numeric|0|10
+002001|stationType|table|TYPE OF STATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002002|instrumentationForWindMeasurement|flag|TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+002003|measuringEquipmentType|table|TYPE OF MEASURING EQUIPMENT USED|CODE TABLE|0|0|4|CODE TABLE|0|2
+002004|typeOfInstrumentationForEvaporationMeasurement|table|TYPE OF INSTRUMENTATION FOR EVAPORATION MEASUREMENT OR TYPE OF C|CODE TABLE|0|0|4|CODE TABLE|0|2
+002005|temperatureObservationPrecision|double|PRECISION OF TEMPERATURE OBSERVATION|K|2|0|7|K|2|3
+002011|radiosondeType|table|RADIOSONDE TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+002012|radiosondeComputationalMethod|table|RADIOSONDE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002013|solarAndInfraredRadiationCorrection|table|SOLAR AND INFRARED RADIATION CORRECTION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002014|trackingTechniqueOrStatusOfSystem|table|TRACKING TECHNIQUE/STATUS OF SYSTEM USED|CODE TABLE|0|0|7|CODE TABLE|0|3
+002015|radiosondeCompleteness|table|RADIOSONDE COMPLETENESS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002016|radiosondeConfiguration|flag|RADIOSONDE CONFIGURATION|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+002019|satelliteInstruments|table|SATELLITE INSTRUMENTS|CODE TABLE|0|0|11|CODE TABLE|0|4
+002020|satelliteClassification|table|SATELLITE CLASSIFICATION|CODE TABLE|0|0|9|CODE TABLE|0|3
+002021|satelliteInstrumentDataUsedInProcessing|flag|SATELLITE INSTRUMENT DATA USED IN PROCESSING|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+002022|satelliteDataProcessingTechnique|flag|SATELLITE DATA-PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002023|satelliteDerivedWindComputationMethod|table|SATELLITE DERIVED WIND COMPUTATION METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002024|meanHumidityComputationalMethod|table|INTEGRATED MEAN HUMIDITY COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002025|satelliteChannelsUsedInComputation|flag|SATELLITE CHANNEL(S) USED IN COMPUTATION|FLAG TABLE|0|0|25|FLAG TABLE|0|9
+002026|crossTrackResolution|double|CROSS TRACK RESOLUTION|m|2|0|12|m|2|4
+002027|alongTrackResolution|double|ALONG TRACK RESOLUTION|m|2|0|12|m|2|4
+002028|segmentSizeAtNadirInXDirection|long|SEGMENT SIZE AT NADIR IN X DIRECTION|m|0|0|18|m|0|6
+002029|segmentSizeAtNadirInYDirection|long|SEGMENT SIZE AT NADIR IN Y DIRECTION|m|0|0|18|m|0|6
+002030|methodOfCurrentMeasurement|table|METHOD OF CURRENT MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002031|durationAndTimeOfCurrentMeasurement|table|DURATION AND TIME OF CURRENT MEASUREMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+002032|indicatorForDigitization|table|INDICATOR FOR DIGITIZATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002033|methodOfSalinityOrDepthMeasurement|table|METHOD OF SALINITY/DEPTH MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002034|drogueType|table|DROGUE TYPE|CODE TABLE|0|0|5|CODE TABLE|0|2
+002035|cableLength|long|CABLE LENGTH|m|0|0|9|m|0|3
+002036|buoyType|table|BUOY TYPE|CODE TABLE|0|0|2|CODE TABLE|0|1
+002037|methodOfTidalObservation|table|METHOD OF TIDAL OBSERVATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+002038|methodOfWaterTemperatureAndOrOrSalinityMeasurement|table|METHOD OF WATER TEMPERATURE AND/OR SALINITY MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002039|methodOfWetBulbTemperatureMeasurement|table|METHOD OF WET-BULB TEMPERATURE MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002040|methodOfRemovingVelocityAndMotionOfPlatformFromCurrent|table|METHOD OF REMOVING VELOCITY AND MOTION OF PLATFORM FROM CURRENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002041|methodForEstimatingReportsRelatedToSynopticFeatures|table|METHOD FOR ESTIMATING REPORTS RELATED TO SYNOPTIC FEATURES|CODE TABLE|0|0|6|CODE TABLE|0|2
+002042|indicatorForSeaSurfaceCurrentSpeed|table|INDICATOR FOR SEA SURFACE CURRENT SPEED|CODE TABLE|0|0|2|CODE TABLE|0|1
+002044|indicatorForMethodOfCalculatingSpectralWaveData|table|INDICATOR FOR METHOD OF CALCULATING SPECTRAL WAVE DATA|CODE TABLE|0|0|4|CODE TABLE|0|2
+002045|platformType|table|INDICATOR FOR TYPE OF PLATFORM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002046|waveMeasurementInstrumentation|table|WAVE MEASUREMENT INSTRUMENTATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002048|satelliteSensorIndicator|table|SATELLITE SENSOR INDICATOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002049|geostationarySatelliteDataProcessingTechnique|flag|GEOSTATIONARY SATELLITE DATA-PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002050|geostationarySounderSatelliteChannels|flag|GEOSTATIONARY SOUNDER SATELLITE CHANNELS USED|FLAG TABLE|0|0|20|FLAG TABLE|0|7
+002051|indicatorToSpecifyObservingMethodForExtremeTemperatures|table|INDICATOR TO SPECIFY OBSERVING METHOD FOR EXTREME TEMPERATURES|CODE TABLE|0|0|4|CODE TABLE|0|2
+002052|geostationaryImagerSatelliteChannels|flag|GEOSTATIONARY IMAGER SATELLITE CHANNELS USED|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+002053|goesBrightnessTemperatureCharacteristics|table|GOES-I/M BRIGHTNESS TEMPERATURE CHARACTERISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002054|goesSoundingsParameter|table|GOES-I/M SOUNDINGS PARAMETER CHARACTERISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002055|geostationarySoundingsStatisticalParameters|table|GEOSTATIONARY SOUNDINGS STATISTICAL PARAMETERS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002056|geostationarySoundingsAccuracyStatistics|table|GEOSTATIONARY SOUNDINGS ACCURACY STATISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002057|originOfFirstGuessInformationForGoesIOrMSoundings|table|ORIGIN OF FIRST GUESS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002058|validTimesOfFirstGuessInformationForGoesIOrMSoundings|table|VALID TIMES OF FIRST GUESS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002059|originOfAnalysisInformationForGoesIOrMSoundings|table|ORIGIN OF ANALYSIS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002060|originOfSurfaceInformationForGoesIOrMSoundings|table|ORIGIN OF SURFACE INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002061|aircraftNavigationalSystem|table|AIRCRAFT NAVIGATIONAL SYSTEM|CODE TABLE|0|0|3|CODE TABLE|0|1
+002062|aircraftDataRelaySystemType|table|TYPE OF AIRCRAFT DATA RELAY SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002063|aircraftRollAngle|double|AIRCRAFT ROLL ANGLE|deg|2|-18000|16|deg|2|5
+002064|aircraftRollAngleQuality|table|AIRCRAFT ROLL ANGLE QUALITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+002065|acarsGroundReceivingStation|string|ACARS GROUND RECEIVING STATION|CCITT IA5|0|0|40|Character|0|5
+002066|radiosondeGroundReceivingSystem|table|RADIOSONDE GROUND RECEIVING SYSTEM|CODE TABLE|0|0|6|CODE TABLE|0|2
+002067|radiosondeOperatingFrequency|long|RADIOSONDE OPERATING FREQUENCY|Hz|-5|0|15|Hz|-5|5
+002070|originalSpecificationOfLatitudeOrLongitude|table|ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002071|spectrographicWavelength|double|SPECTROGRAPHIC WAVELENGTH|m|13|0|30|m|13|10
+002080|balloonManufacturer|table|BALLOON MANUFACTURER|CODE TABLE|0|0|6|CODE TABLE|0|2
+002081|balloonType|table|TYPE OF BALLOON|CODE TABLE|0|0|5|CODE TABLE|0|2
+002082|weightOfBalloon|double|WEIGHT OF BALLOON|kg|3|0|12|kg|3|4
+002083|balloonShelterType|table|TYPE OF BALLOON SHELTER|CODE TABLE|0|0|4|CODE TABLE|0|2
+002084|typeOfGasUsedInBalloon|table|TYPE OF GAS USED IN BALLOON|CODE TABLE|0|0|4|CODE TABLE|0|2
+002085|amountOfGasUsedInBalloon|double|AMOUNT OF GAS USED IN BALLOON|kg|3|0|13|kg|3|4
+002086|balloonFlightTrainLength|double|BALLOON FLIGHT TRAIN LENGTH|m|1|0|10|m|1|4
+002091|entrySensor4Or20Ma|double|ENTRY SENSOR 4/20 MA|A|4|0|10|A|4|3
+002095|pressureSensorType|table|TYPE OF PRESSURE SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002096|temperatureSensorType|table|TYPE OF TEMPERATURE SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002097|humiditySensorType|table|TYPE OF HUMIDITY SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002098|typeOfWaveSensor|table|TYPE OF WAVE SENSOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002099|polarization|table|POLARISATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+002100|radarConstant|double|RADAR CONSTANT|dB|1|0|12|dB|1|4
+002101|antennaType|table|TYPE OF ANTENNA|CODE TABLE|0|0|4|CODE TABLE|0|2
+002102|antennaHeightAboveTowerBase|long|ANTENNA HEIGHT ABOVE TOWER BASE|m|0|0|8|m|0|3
+002103|radome|flag|RADOME|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+002104|antennaPolarization|table|ANTENNA POLARISATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002105|maximumAntennaGain|long|MAXIMUM ANTENNA GAIN|dB|0|0|6|dB|0|2
+002106|3DbBeamwidth|double|3-DB BEAMWIDTH|deg|1|0|6|deg|1|2
+002107|sidelobeSuppression|long|SIDELOBE SUPPRESSION|dB|0|0|6|dB|0|2
+002108|crosspolDiscriminationOnAxis|long|CROSSPOL DISCRIMINATION (ON AXIS)|dB|0|0|6|dB|0|2
+002109|antennaSpeedAzimuth|double|ANTENNA SPEED (AZIMUTH)|deg/s|2|0|12|deg/s|2|4
+002110|antennaSpeedElevation|double|ANTENNA SPEED (ELEVATION)|deg/s|2|0|12|deg/s|2|4
+002111|radarIncidenceAngle|double|RADAR INCIDENCE ANGLE|deg|1|0|10|deg|1|4
+002112|radarLookAngle|double|RADAR LOOK ANGLE|deg|1|0|12|deg|1|4
+002113|numberOfAzimuthLooks|long|NUMBER OF AZIMUTH LOOKS|Numeric|0|0|4|Numeric|0|2
+002114|antennaEffectiveSurfaceArea|long|ANTENNA EFFECTIVE SURFACE AREA|m2|0|0|15|m2|0|5
+002115|surfaceObservingEquipmentType|table|TYPE OF SURFACE OBSERVING EQUIPMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+002116|percentageOf320MhzBandProcessed|long|PERCENTAGE OF 320 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002117|percentageOf80MhzBandProcessed|long|PERCENTAGE OF 80 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002118|percentageOf20MhzBandProcessed|long|PERCENTAGE OF 20 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002119|ra2InstrumentOperations|table|RA-2 INSTRUMENT OPERATIONS|CODE TABLE|0|0|3|CODE TABLE|0|1
+002120|oceanWaveFrequency|double|OCEAN WAVE FREQUENCY|Hz|3|0|10|Hz|3|4
+002121|meanFrequency|long|MEAN FREQUENCY|Hz|-8|0|7|Hz|-8|3
+002122|frequencyAgilityRange|long|FREQUENCY AGILITY RANGE|Hz|-6|-128|8|Hz|-6|3
+002123|peakPower|long|PEAK POWER|W|-4|0|7|W|-4|3
+002124|averagePower|long|AVERAGE POWER|W|-1|0|7|W|-1|3
+002125|pulseRepetitionFrequency|long|PULSE REPETITION FREQUENCY|Hz|-1|0|8|Hz|-1|3
+002126|pulseWidth|double|PULSE WIDTH|s|7|0|6|s|7|2
+002127|receiverIntermediateFrequency|long|RECEIVER INTERMEDIATE FREQUENCY|Hz|-6|0|7|Hz|-6|3
+002128|intermediateFrequencyBandwidth|long|INTERMEDIATE FREQUENCY BANDWIDTH|Hz|-5|0|6|Hz|-5|2
+002129|minimumDetectableSignal|long|MINIMUM DETECTABLE SIGNAL|dB|0|-150|5|dB|0|3
+002130|dynamicRange|long|DYNAMIC RANGE|dB|0|0|7|dB|0|3
+002131|sensitivityTimeControl|flag|SENSITIVITY TIME CONTROL (STC)|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+002132|azimuthPointingAccuracy|double|AZIMUTH POINTING ACCURACY|deg|2|0|6|deg|2|2
+002133|elevationPointingAccuracy|double|ELEVATION POINTING ACCURACY|deg|2|0|6|deg|2|2
+002134|antennaBeamAzimuth|double|ANTENNA BEAM AZIMUTH|deg|2|0|16|deg|2|5
+002135|antennaElevation|double|ANTENNA ELEVATION|deg|2|-9000|15|deg|2|5
+002136|rangeProcessedByRangeAttenuationCorrection|long|RANGE PROCESSED BY RANGE ATTENUATION CORRECTION|m|-3|0|16|m|-3|5
+002140|satelliteRadarBeamAzimuthAngle|long|SATELLITE RADAR BEAM AZIMUTH ANGLE|deg|0|0|9|deg|0|3
+002141|measurementType|string|MEASUREMENT TYPE|CCITT IA5|0|0|24|Character|0|3
+002142|ozoneInstrument|string|OZONE INSTRUMENT SERIAL NUMBER/ IDENTIFICATION|CCITT IA5|0|0|32|Character|0|4
+002143|ozoneInstrumentType|table|OZONE INSTRUMENT TYPE|CODE TABLE|0|0|7|CODE TABLE|0|3
+002144|lightSourceTypeForBrewerSpectrophotometer|table|LIGHT SOURCE TYPE FOR BREWER SPECTRO PHOTOMETER|CODE TABLE|0|0|4|CODE TABLE|0|2
+002145|wavelengthSettingForDobsonInstruments|table|WAVE LENGTH SETTING FOR DOBSON INSTRUMENTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002146|sourceConditionsForDobsonInstruments|table|SOURCE CONDITIONS FOR DOBSON INSTRUMENTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002148|dataCollectionLocationSystem|table|DATA COLLECTION AND/OR LOCATION SYSTEM|CODE TABLE|0|0|5|CODE TABLE|0|2
+002149|dataBuoyType|table|TYPE OF DATA BUOY|CODE TABLE|0|0|6|CODE TABLE|0|2
+002150|tovsOrAtovsOrAvhrrInstrumentationChannelNumber|table|TOVS/ATOVS/AVHRR INSTRUMENTATION CHANNEL NUMBER|CODE TABLE|0|0|6|CODE TABLE|0|2
+002151|radiometerIdentifier|table|RADIOMETER IDENTIFIER|CODE TABLE|0|0|11|CODE TABLE|0|4
+002152|satelliteInstrumentUsedInDataProcessing|flag|SATELLITE INSTRUMENT USED IN DATA PROCESSING(6)|FLAG TABLE|0|0|31|FLAG TABLE|0|10
+002153|satelliteChannelCentreFrequency|long|SATELLITE CHANNEL CENTRE FREQUENCY|Hz|-8|0|26|Hz|-8|8
+002154|satelliteChannelBandWidth|long|SATELLITE CHANNEL BAND WIDTH|Hz|-8|0|26|Hz|-8|8
+002156|percentageOfValidKuOceanRetrackerMeasurements|long|PERCENTAGE OF VALID KU OCEAN RETRACKER MEASUREMENTS|%|0|0|7|%|0|3
+002157|percentageOfValidSOceanRetrackerMeasurements|long|PERCENTAGE OF VALID S OCEAN RETRACKER MEASUREMENTS|%|0|0|7|%|0|3
+002158|ra2Instrument|flag|RA-2 INSTRUMENT|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+002159|mwrInstrument|flag|MWR INSTRUMENT|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002160|radarWaveLength|table|WAVE LENGTH OF THE RADAR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002163|heightAssignmentMethod|table|HEIGHT ASSIGNMENT METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002164|tracerCorrelationMethod|table|TRACER CORRELATION METHOD|CODE TABLE|0|0|3|CODE TABLE|0|1
+002166|radianceType|table|RADIANCE TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002167|radianceComputationalMethod|table|RADIANCE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002168|hydrostaticPressureOfLowerEndOfCableThermistorString|long|HYDROSTATIC PRESSURE OF LOWER END OF CABLE (THERMISTOR STRING)|Pa|-3|0|16|kPa|0|5
+002169|anemometerType|table|ANEMOMETER TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002172|productTypeForRetrievedAtmosphericGases|table|PRODUCT TYPE FOR RETRIEVED ATMOSPHERIC GASES|CODE TABLE|0|0|8|CODE TABLE|0|3
+002173|squareOfOffNadirAngle|double|SQUARE OF THE OFF NADIR ANGLE (7)|deg2|4|0|10|deg2|4|4
+002174|meanAcrossTrackPixelNumber|long|MEAN ACROSS TRACK PIXEL NUMBER|Numeric|0|0|9|Numeric|0|3
+002175|methodOfPrecipitationMeasurement|table|METHOD OF PRECIPITATION MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002176|methodOfStateOfGroundMeasurement|table|METHOD OF STATE OF GROUND MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002177|methodOfSnowDepthMeasurement|table|METHOD OF SNOW DEPTH MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002178|methodOfLiquidContentMeasurementOfPrecipitation|table|METHOD OF LIQUID CONTENT MEASUREMENT OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002179|skyConditionAlgorithmType|table|TYPE OF SKY CONDITION ALGORITHM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002180|mainPresentWeatherDetectingSystem|table|MAIN PRESENT WEATHER DETECTING SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002181|supplementaryPresentWeatherSensor|flag|SUPPLEMENTARY PRESENT WEATHER SENSOR|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+002182|visibilityMeasurementSystem|table|VISIBILITY MEASUREMENT SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002183|cloudDetectionSystem|table|CLOUD DETECTION SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002184|lightningDetectionSensorType|table|TYPE OF LIGHTNING DETECTION SENSOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002185|methodOfEvaporationMeasurement|table|METHOD OF EVAPORATION MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002186|capabilityToDetectPrecipitationPhenomena|flag|CAPABILITY TO DETECT PRECIPITATION PHENOMENA|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+002187|capabilityToDetectOtherWeatherPhenomena|flag|CAPABILITY TO DETECT OTHER WEATHER PHENOMENA|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+002188|capabilityToDetectObscuration|flag|CAPABILITY TO DETECT OBSCURATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+002189|capabilityToDiscriminateLightningStrikes|flag|CAPABILITY TO DISCRIMINATE LIGHTNING STRIKES|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+002190|lagrangianDrifterSubmergenceTimeSubmerged|long|LAGRANGIAN DRIFTER SUBMERGENCE (% TIME SUBMERGED)|%|0|0|7|%|0|3
+004001|year|long|YEAR|a|0|0|12|a|0|4
+004002|month|long|MONTH|mon|0|0|4|mon|0|2
+004003|day|long|DAY|d|0|0|6|d|0|2
+004004|hour|long|HOUR|h|0|0|5|h|0|2
+004005|minute|long|MINUTE|min|0|0|6|min|0|2
+004006|second|long|SECOND|s|0|0|6|s|0|2
+004007|secondsWithinAMinuteMicrosecond|double|SECONDS WITHIN A MINUTE (MICROSECOND ACCURACY)|s|6|0|26|s|6|8
+004011|timeIncrement|long|TIME INCREMENT|a|0|-1024|11|a|0|4
+004012|timeIncrement|long|TIME INCREMENT|mon|0|-1024|11|mon|0|4
+004013|timeIncrement|long|TIME INCREMENT|d|0|-1024|11|d|0|4
+004014|timeIncrement|long|TIME INCREMENT|h|0|-1024|11|h|0|4
+004015|timeIncrement|long|TIME INCREMENT|min|0|-2048|12|min|0|4
+004016|timeIncrement|long|TIME INCREMENT|s|0|-4096|13|s|0|4
+004017|referenceTimePeriodForAccumulatedOrExtremeData|long|REFERENCE TIME PERIOD FOR ACCUMULATED OR EXTREME DATA|min|0|-1440|12|min|0|4
+004021|timePeriod|long|TIME PERIOD OR DISPLACEMENT|a|0|-1024|11|a|0|4
+004022|timePeriod|long|TIME PERIOD OR DISPLACEMENT|mon|0|-1024|11|mon|0|4
+004023|timePeriod|long|TIME PERIOD OR DISPLACEMENT|d|0|-1024|11|d|0|4
+004024|timePeriod|long|TIME PERIOD OR DISPLACEMENT|h|0|-2048|12|h|0|4
+004025|timePeriod|long|TIME PERIOD OR DISPLACEMENT|min|0|-2048|12|min|0|4
+004026|timePeriod|long|TIME PERIOD OR DISPLACEMENT|s|0|-4096|13|s|0|4
+004031|durationOfTimeRelatingToFollowingValue|long|DURATION OF TIME RELATING TO FOLLOWING VALUE|h|0|0|8|h|0|3
+004032|durationOfTimeRelatingToFollowingValue|long|DURATION OF TIME RELATING TO FOLLOWING VALUE|min|0|0|6|min|0|2
+004041|timeDifferenceUtcLmt|long|TIME DIFFERENCE, UTC -LMT (SEE NOTE 6)|min|0|-1440|12|min|0|4
+004043|dayOfYear|long|DAY OF THE YEAR|d|0|0|9|d|0|3
+004051|principalTimeOfDailyReadingOfMaximumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MAXIMUM TEMPERATURE|h|0|0|5|h|0|2
+004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2
+004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2
+004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
+004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
+004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
+004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
+004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2
+004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
+005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005012|latitudeIncrement|double|LATITUDE INCREMENT (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005015|latitudeDisplacement|double|LATITUDE DISPLACEMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005016|latitudeDisplacement|double|LATITUDE DISPLACEMENT (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005021|bearingOrAzimuth|double|BEARING OR AZIMUTH|deg|2|0|16|deg|2|5
+005022|solarAzimuth|double|SOLAR AZIMUTH|deg|2|0|16|deg|2|5
+005023|sunToSatelliteAzimuthDifference|double|SUN TO SATELLITE AZIMUTH DIFFERENCE|deg|1|-1800|12|deg|1|4
+005030|directionSpectral|long|DIRECTION (SPECTRAL)|deg|0|0|12|deg|0|4
+005031|rowNumber|long|ROW NUMBER|Numeric|0|0|12|Numeric|0|4
+005033|pixelSizeOnHorizontal1|long|PIXEL SIZE ON HORIZONTAL - 1|m|-1|0|16|m|-1|5
+005034|alongTrackRowNumber|long|ALONG TRACK ROW NUMBER|Numeric|0|0|11|Numeric|0|4
+005036|shipTransectNumberAccordingToSoop|long|SHIP TRANSECT NUMBER ACCORDING TO SOOP|Numeric|0|0|7|Numeric|0|2
+005040|orbitNumber|long|ORBIT NUMBER|Numeric|0|0|24|Numeric|0|8
+005041|scanLineNumber|long|SCAN LINE NUMBER|Numeric|0|0|8|Numeric|0|3
+005042|channelNumber|long|CHANNEL NUMBER|Numeric|0|0|6|Numeric|0|2
+005043|fieldOfViewNumber|long|FIELD OF VIEW NUMBER|Numeric|0|0|8|Numeric|0|3
+005044|satelliteCycleNumber|long|SATELLITE CYCLE NUMBER|Numeric|0|0|11|Numeric|0|4
+005052|channelNumberIncrement|long|CHANNEL NUMBER INCREMENT|Numeric|0|0|5|Numeric|0|2
+005053|fieldOfViewNumberIncrement|long|FIELD OF VIEW NUMBER INCREMENT|Numeric|0|0|5|Numeric|0|2
+005060|yAngularPositionFromCentreOfGravity|double|Y ANGULAR POSITION FROM CENTRE OF GRAVITY|deg|6|-8000000|24|deg|6|8
+005061|zAngularPositionFromCentreOfGravity|double|Z ANGULAR POSITION FROM CENTRE OF GRAVITY|deg|6|-8000000|24|deg|6|8
+006001|longitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006002|longitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006011|longitudeIncrement|double|LONGITUDE INCREMENT (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006012|longitudeIncrement|double|LONGITUDE INCREMENT (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006015|longitudeDisplacement|double|LONGITUDE DISPLACEMENT (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006016|longitudeDisplacement|double|LONGITUDE DISPLACEMENT (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006021|distance|long|DISTANCE|m|-1|0|13|m|-1|4
+006030|waveNumberSpectral|double|WAVE NUMBER (SPECTRAL)|rad/m|5|0|13|rad/m|5|4
+006031|columnNumber|long|COLUMN NUMBER|Numeric|0|0|12|Numeric|0|4
+006033|pixelSizeOnHorizontal2|long|PIXEL SIZE ON HORIZONTAL - 2|m|-1|0|16|m|-1|5
+006034|crossTrackCellNumber|long|CROSS-TRACK CELL NUMBER|Numeric|0|0|7|Numeric|0|3
+006040|radiusOfConfidence|long|RADIUS OF CONFIDENCE|m|0|0|13|m|0|4
+007001|heightOfStation|long|HEIGHT OF STATION (SEE NOTE 1)|m|0|-400|15|m|0|5
+007002|height|long|HEIGHT OR ALTITUDE|m|-1|-40|16|m|-1|5
+007003|geopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|m2 s-2|-1|6
+007004|pressure|long|PRESSURE|Pa|-1|0|14|Pa|-1|5
+007005|heightIncrement|long|HEIGHT INCREMENT|m|0|-400|12|m|0|4
+007006|heightAboveStation|long|HEIGHT ABOVE STATION|m|0|0|15|m|0|5
+007007|height|long|HEIGHT|m|0|-1000|17|m|0|6
+007008|geopotential|long|GEOPOTENTIAL|m2 s-2|0|-10000|20|m2 s-2|0|7
+007009|geopotentialHeight|long|GEOPOTENTIAL HEIGHT|gpm|0|-1000|17|gpm|0|5
+007010|flightLevel|long|FLIGHT LEVEL|m|0|-1024|16|ft|-1|5
+007012|gridPointAltitude|double|GRID POINT ALTITUDE|m|2|-50000|20|m|2|7
+007021|elevation|double|ELEVATION (SEE NOTE 2)|deg|2|-9000|15|deg|2|5
+007022|solarElevation|double|SOLAR ELEVATION|deg|2|-9000|15|deg|2|5
+007024|satelliteZenithAngle|double|SATELLITE ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+007025|solarZenithAngle|double|SOLAR ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+007026|satelliteZenithAngle|double|SATELLITE ZENITH ANGLE|deg|4|-900000|21|deg|4|7
+007030|heightOfStationGroundAboveMeanSeaLevel|double|HEIGHT OF STATION GROUND ABOVE MEAN SEA LEVEL (SEE NOTE 3)|m|1|-4000|17|m|1|5
+007031|heightOfBarometerAboveMeanSeaLevel|double|HEIGHT OF BAROMETER ABOVE MEAN SEA LEVEL (SEE NOTE 4)|m|1|-4000|17|m|1|5
+007032|heightOfSensorAboveLocalGroundOrDeckOfMarinePlatform|double|HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM)|m|2|0|16|m|2|5
+007033|heightOfSensorAboveWaterSurface|double|HEIGHT OF SENSOR ABOVE WATER SURFACE (SEE NOTE 6)|m|1|0|12|m|1|4
+007040|impactParameter|double|IMPACT PARAMETER (SEE NOTE 8)|m|1|62000000|22|m|1|8
+007061|depthBelowLandSurface|double|DEPTH BELOW LAND SURFACE|m|2|0|14|m|2|5
+007062|depthBelowWaterSurface|double|DEPTH BELOW SEA/WATER SURFACE|m|1|0|17|m|1|6
+007063|depthBelowWaterSurface|double|DEPTH BELOW SEA/WATER SURFACE|m|2|0|20|m|2|7
+007064|representativeHeightOfSensorAboveStation|long|REPRESENTATIVE HEIGHT OF SENSOR ABOVE STATION (SEE NOTE 7)|m|0|0|4|m|0|2
+007065|waterPressure|long|WATER PRESSURE|Pa|-3|0|17|Pa|0|6
+007070|drogueDepth|long|DROGUE DEPTH|m|0|0|10|m|0|4
+008001|verticalSoundingSignificance|flag|VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|7|FLAG TABLE|0|3
+008002|verticalSignificanceSurfaceObservations|table|VERTICAL SIGNIFICANCE (SURFACE OBSERVATIONS)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008003|verticalSignificanceSatelliteObservations|table|VERTICAL SIGNIFICANCE (SATELLITE OBSERVATIONS)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008004|phaseOfAircraftFlight|table|PHASE OF AIRCRAFT FLIGHT|CODE TABLE|0|0|3|CODE TABLE|0|1
+008005|meteorologicalAttributeSignificance|table|METEOROLOGICAL ATTRIBUTE SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008006|ozoneVerticalSoundingSignificance|flag|OZONE VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+008007|dimensionalSignificance|table|DIMENSIONAL SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008008|radiationVerticalSoundingSignificance|flag|RADIATION VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+008009|detailedPhaseOfFlight|table|DETAILED PHASE OF FLIGHT|CODE TABLE|0|0|4|CODE TABLE|0|2
+008010|surfaceQualifierForTemperatureData|table|SURFACE QUALIFIER (TEMPERATURE DATA)|CODE TABLE|0|0|5|CODE TABLE|0|2
+008011|meteorologicalFeature|table|METEOROLOGICAL FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008012|landOrSeaQualifier|table|LAND/SEA QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008013|dayOrNightQualifier|table|DAY/NIGHT QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008014|qualifierForRunwayVisualRange|table|QUALIFIER FOR RUNWAY VISUAL RANGE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008016|changeQualifierOfATrendTypeForecastOrAnAerodromeForecast|table|CHANGE QUALIFIER OF A TREND-TYPE FORECAST OR AN AERODROME FORECA|CODE TABLE|0|0|3|CODE TABLE|0|1
+008017|qualifierOfTimeWhenForecastChangeExpected|table|QUALIFIER OF THE TIME WHEN THE FORECAST CHANGE IS EXPECTED|CODE TABLE|0|0|2|CODE TABLE|0|1
+008018|seawindsLandOrIceSurfaceType|flag|SEAWINDS LAND/ICE SURFACE TYPE|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+008019|qualifierForFollowingCentreIdentifier|table|QUALIFIER FOR FOLLOWING CENTRE IDENTIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008020|totalNumberOfMissingEntitiesWithRespectToAccumulationOrAverage|long|TOTAL NUMBER OF MISSING ENTITIES (WITH RESPECT TO ACCUMULATION O|Numeric|0|0|16|Numeric|0|5
+008021|timeSignificance|table|TIME SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+008022|totalNumberWithRespectToAccumulationOrAverage|long|TOTAL NUMBER (WITH RESPECT TO ACCUMULATION OR AVERAGE)|Numeric|0|0|16|Numeric|0|5
+008023|firstOrderStatistics|table|FIRST ORDER STATISTICS|CODE TABLE|0|0|6|CODE TABLE|0|2
+008024|differenceStatistics|table|DIFFERENCE STATISTICS|CODE TABLE|0|0|6|CODE TABLE|0|2
+008025|timeDifferenceQualifier|table|TIME DIFFERENCE QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008026|matrixSignificance|table|MATRIX SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008029|surfaceType|table|REMOTLY SENSED SURFACE TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+008030|manualOnCodesVolumeI1SectionCCodeTableFromWhichDataAreDerived|long|MANUAL ON CODES (VOLUME I.1, SECTION C) CODE TABLE FROM WHICH DA|Numeric|0|0|13|Numeric|0|4
+008031|dataCategoryCrexTableA|long|DATA CATEGORY CREX TABLE A|Numeric|0|0|8|Numeric|0|3
+008033|methodOfDerivationOfPercentageConfidence|table|METHOD OF DERIVATION OF PERCENTAGE CONFIDENCE|CODE TABLE|0|0|7|CODE TABLE|0|3
+008035|monitoringExerciseType|table|TYPE OF MONITORING EXERCISE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008036|typeOfCentreOrStationPerformingMonitoring|table|TYPE OF CENTRE OR STATION PERFORMING MONITORING|CODE TABLE|0|0|3|CODE TABLE|0|1
+008039|timeSignificanceAviationForecast|table|TIME SIGNIFICANCE ( AVIATION FORECAST)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008040|flightLevelSignificance|table|FLIGHT LEVEL SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008041|dataSignificance|table|DATA SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+008042|extendedVerticalSoundingSignificance|flag|EXTENDED VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+008043|atmosphericChemical|table|ATMOSPHERIC CHEMICAL OR PHISICAL CONSTITUENT TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+008044|casRegistryNumber|string|CAS REGISTRY NUMBER|CCITT IA5|0|0|88|Character|0|11
+008045|particulateMatterCharacterization|table|PARTICULATE MATTER CHARACTERIZATION|CODE TABLE|0|0|8|CODE TABLE|0|3
+008049|numberOfObservations|long|NUMBER OF OBSERVATIONS|Numeric|0|0|8|Numeric|0|3
+008050|qualifierForNumberOfMissingValuesInCalculationOfStatistic|table|QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATIST|CODE TABLE|0|0|4|CODE TABLE|0|2
+008051|qualifierForNumberOfMissingValuesInCalculationOfStatistic|table|QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATIST|CODE TABLE|0|0|3|CODE TABLE|0|1
+008052|conditionForWhichNumberOfDaysOfOccurrenceFollows|table|CONDITION FOR WHICH NUMBER OF DAYS OF OCCURRENCE FOLLOWS|CODE TABLE|0|0|5|CODE TABLE|0|2
+008053|dayOfOccurrenceQualifier|table|DAY OF OCCURRENCE QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008054|qualifierForWindSpeedOrWindGusts|table|QUALIFIER FOR WIND SPEED OR WIND GUST|CODE TABLE|0|0|3|CODE TABLE|0|1
+008060|sampleScanningModeSignificance|table|SAMPLE SCANNING MODE SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008065|sunGlintIndicator|table|SUN-GLINT INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+008066|semiTransparencyIndicator|table|SEMI-TRANSPARENCY INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+008070|tovsOrAtovsProductQualifier|table|TOVS/ATOVS PRODUCT QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008072|pixelType|table|PIXEL(S) TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008074|altimeterEchoType|table|ALTIMETER ECHO TYPE|CODE TABLE|0|0|2|CODE TABLE|0|1
+008075|orbitQualifier|table|ASCENDING/DESCENDING ORBIT QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008076|band|table|TYPE OF BAND|CODE TABLE|0|0|6|CODE TABLE|0|2
+008077|radiometerSensedSurfaceType|table|RADIOMETER SENSED SURFACE TYPE|CODE TABLE|0|0|7|CODE TABLE|0|3
+008079|productStatus|table|PRODUCT STATUS|CODE TABLE|0|0|4|CODE TABLE|0|2
+008080|qualifierForGtsppQualityFlag|table|QUALIFIER FOR GTSPP QUALITY FLAG|CODE TABLE|0|0|6|CODE TABLE|0|2
+008081|equipmentType|table|TYPE OF EQUIPMENT|CODE TABLE|0|0|6|CODE TABLE|0|2
+008082|modificationOfSensorHeightToAnotherValue|table|(CBS) ARTIFICIAL CORRECTION OF SENSOR HEIGHT TO ANOTHER VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008083|nominalValueIndicator|flag|NOMINAL VALUE INDICATOR|FLAG TABLE|0|0|15|FLAG TABLE|0|5
+008085|beamIdentifier|table|BEAM IDENTIFIER|CODE TABLE|0|0|3|CODE TABLE|0|1
+008090|decimalScaleOfFollowingSignificands|long|DECIMAL SCALE|Numeric|0|-127|8|Numeric|0|3
+010001|heightOfLandSurface|long|HEIGHT OF LAND SURFACE|m|0|-400|15|m|0|5
+010002|height|long|HEIGHT|m|-1|-40|16|m|-1|5
+010003|geopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|m2 s-2|-1|6
+010004|pressure|long|PRESSURE|Pa|-1|0|14|Pa|-1|5
+010007|height|long|HEIGHT|m|0|-1000|17|m|0|6
+010008|geopotential|long|GEOPOTENTIAL|m2 s-2|0|-10000|20|m2 s-2|0|7
+010009|geopotentialHeight|long|GEOPOTENTIAL HEIGHT|gpm|0|-1000|17|gpm|0|5
+010010|minimumPressureReducedToMeanSeaLevel|long|MINIMUM PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010011|maximumPressureReducedToMeanSeaLevel|long|MAXIMUM PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010031|DistanceFromEarthCentreInDirectionOfNorthPole|double|IN DIRECTION OF THE NORTH POLE, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10
+010032|satelliteDistanceToEarthCentre|double|SATELLITE DISTANCE TO EARTH'S CENTRE|m|1|0|27|m|2|9
+010033|altitudePlatformToEllipsoid|double|ALTITUDE (PLATFORM TO ELLIPSOID)|m|1|0|27|m|2|9
+010034|earthRadius|double|EARTH RADIUS|m|1|0|27|m|2|9
+010035|earthLocalRadiusOfCurvature|double|EARTH'S LOCAL RADIUS OF CURVATURE|m|1|62000000|22|m|1|8
+010036|geoidUndulation|double|GEOID UNDULATION (SEE NOTE 4)|m|2|-15000|15|m|2|6
+010040|numberOfRetrievedLayers|long|NUMBER OF RETRIEVED LAYERS|Numeric|0|0|10|Numeric|0|4
+010050|standardDeviationAltitude|double|STANDARD DEVIATION ALTITUDE|m|2|0|16|m|2|5
+010051|pressureReducedToMeanSeaLevel|long|PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010052|altimeterSettingQnh|long|ALTIMETER SETTING (QNH)|Pa|-1|0|14|Pa|-1|5
+010060|pressureChange|long|PRESSURE CHANGE|Pa|-1|-1024|11|Pa|-1|4
+010061|3HourPressureChange|long|3-HOUR PRESSURE CHANGE|Pa|-1|-500|10|Pa|-1|4
+010062|24HourPressureChange|long|24-HOUR PRESSURE CHANGE|Pa|-1|-1000|11|Pa|-1|4
+010063|characteristicOfPressureTendency|table|CHARACTERISTIC OF PRESSURE TENDENCY|CODE TABLE|0|0|4|CODE TABLE|0|2
+010064|sigmetCruisingLevel|table|SIGMET CRUISING LEVEL|CODE TABLE|0|0|3|CODE TABLE|0|1
+010070|indicatedAircraftAltitude|long|INDICATED AIRCRAFT ALTITUDE|m|0|-400|16|m|0|5
+010080|viewingZenithAngle|double|VIEWING ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+010081|cogAltitudeAboveReferenceEllipsoid|double|ALTITUDE OF COG ABOVE REFERENCE ELLIPSOID|m|3|0|31|m|3|10
+010082|instantaneousAltitudeRate|double|INSTANTANEOUS ALTITUDE RATE|m/s|3|-65536|17|m/s|3|6
+010083|squaredOffNadirAngleOfSatelliteFromPlatformData|double|SQUARED OFF NADIR ANGLE OF THE SATELLITE FROM PLATFORM DATA|deg2|2|0|16|deg2|2|5
+010084|squaredOffNadirAngleOfSatelliteFromWaveformData|double|SQUARED OFF NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA|deg2|2|0|16|deg2|2|5
+010085|meanSeaSurfaceHeight|double|MEAN SEA SURFACE HEIGHT|m|3|-131072|18|m|3|6
+010086|geoidHeight|double|GEOID'S HEIGHT|m|3|-131072|18|m|3|6
+010087|oceanDepthOrLandElevation|double|OCEAN DEPTH/LAND ELEVATION|m|1|-131072|18|m|3|6
+010088|totalGeocentricOceanTideHeightSolution1|double|TOTAL GEOCENTRIC OCEAN TIDE HEIGHT SOLUTION 1|m|3|-32768|16|m|3|5
+010089|totalGeocentricOceanTideHeightSolution2|double|TOTAL GEOCENTRIC OCEAN TIDE HEIGHT SOLUTION 2|m|3|-32768|16|m|3|5
+010090|longPeriodTideHeight|double|LONG PERIOD TIDE HEIGHT|m|3|-32768|16|m|3|5
+010091|tidalLoadingHeight|double|TIDAL LOADING HEIGHT|m|3|-32768|16|m|3|5
+010092|solidEarthTideHeight|double|SOLID EARTH TIDE HEIGHT|m|3|-32768|16|m|3|5
+010093|geocentricPoleTideHeight|double|GEOCENTRIC POLE TIDE HEIGHT|m|3|-32768|16|m|3|5
+010095|heightOfAtmosphere|long|HEIGHT OF ATMOSPHERE USED|m|0|0|16|m|0|5
+010096|meanDynamicTopography|double|MEAN DYNAMIC TOPOGRAPHY|m|3|-131072|18|NA|0|0
+010097|meanSeaSurfaceHeightFromAltimeterOnly|double|MEAN SEA SURFACE HEIGHT FROM ALTIMETER ONLY|m|3|-131072|18|NA|0|0
+010098|loadingTideHeightGeocentricOceanTideSolution1|double|LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 1|m|4|-2000|12|NA|0|0
+010099|loadingTideHeightGeocentricOceanTideSolution2|double|LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 2|m|4|-2000|12|NA|0|0
+010100|nonEquilibriumLongPeriodTideHeight|double|NON-EQUILIBRIUM LONG PERIOD TIDE HEIGHT|m|4|-2000|12|NA|0|0
+010101|squaredOffNadirAngleOfSatelliteFromWaveformData|double|SQUARED OFF NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA|deg2|2|-32768|16|deg2|2|5
+011001|windDirection|long|WIND DIRECTION|deg|0|0|9|deg|0|3
+011002|windSpeed|double|WIND SPEED|m/s|1|0|12|m/s|1|4
+011003|u|double|U-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011004|v|double|V-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011005|w|double|W-COMPONENT|Pa/s|1|-512|10|Pa/s|1|4
+011006|w|double|W-COMPONENT|m/s|2|-4096|13|m/s|2|4
+011010|windDirectionAssociatedWithWindSpeedWhichFollows|long|WIND DIRECTION ASSOCIATED WITH WIND SPEED WHICH FOLLOWS|deg|0|0|9|deg|0|3
+011011|windDirectionAt10M|long|WIND DIRECTION AT 10 M|deg|0|0|9|deg|0|3
+011012|windSpeedAt10M|double|WIND SPEED AT 10 M|m/s|1|0|12|m/s|1|4
+011013|windDirectionAt5M|long|WIND DIRECTION AT 5 M|deg|0|0|9|deg|0|3
+011014|windSpeedAt5M|double|WIND SPEED AT 5 M|m/s|1|0|12|m/s|1|4
+011016|extremeCounterclockwiseWindDirectionOfAVariableWind|long|EXTREME COUNTERCLOCKWISE WIND DIRECTION OF A VARIABLE WIND|deg|0|0|9|deg|0|3
+011017|extremeClockwiseWindDirectionOfAVariableWind|long|EXTREME CLOCKWISE WIND DIRECTION OF A VARIABLE WIND|deg|0|0|9|deg|0|3
+011019|steadinessOfWind|long|STEADINESS OF WIND (6)|%|0|0|7|%|0|3
+011021|relativeVorticity|double|RELATIVE VORTICITY|/s|9|-65536|17|/s|9|6
+011022|divergence|double|DIVERGENCE|/s|9|-65536|17|/s|9|6
+011023|velocityPotential|long|VELOCITY POTENTIAL|m2/s|-2|-65536|17|m2/s|-2|6
+011030|extendedDegreeOfTurbulence|table|EXTENDED DEGREE OF TURBULENCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+011031|degreeOfTurbulence|table|DEGREE OF TURBULENCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+011032|heightOfBaseOfTurbulence|long|HEIGHT OF BASE OF TURBULENCE|m|-1|-40|16|m|-1|5
+011033|heightOfTopOfTurbulence|long|HEIGHT OF TOP OF TURBULENCE|m|-1|-40|16|m|-1|5
+011034|verticalGustVelocity|double|VERTICAL GUST VELOCITY|m/s|1|-1024|11|m/s|1|4
+011035|verticalGustAcceleration|double|VERTICAL GUST ACCELERATION|m s-2|2|-8192|14|m s-2|2|5
+011036|maximumDerivedEquivalentVerticalGustSpeed|double|MAXIMUM DERIVED EQUIVALENT VERTICAL GUST SPEED|m/s|1|0|10|m/s|1|4
+011037|turbulenceIndex|table|TURBULENCE INDEX|CODE TABLE|0|0|6|CODE TABLE|0|2
+011038|timeOfOccurrenceOfPeakEddyDissipationRate|table|TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|5|CODE TABLE|0|2
+011039|extendedTimeOfOccurrenceOfPeakEddyDissipationRate|table|EXTENDED TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|6|CODE TABLE|0|2
+011040|maximumWindSpeedMeanWind|double|MAXIMUM WIND SPEED (MEAN WIND)|m/s|1|0|12|m/s|1|4
+011041|maximumWindGustSpeed|double|MAXIMUM WIND GUST SPEED|m/s|1|0|12|m/s|1|4
+011042|maximumWindSpeed10MinuteMeanWind|double|MAXIMUM WIND SPEED (10-MIN MEAN WIND)|m/s|1|0|12|m/s|1|4
+011043|maximumWindGustDirection|long|MAXIMUM WIND GUST DIRECTION|deg|0|0|9|deg|0|3
+011044|meanWindDirectionForSurfaceTo1500M|long|MEAN WIND DIRECTION FOR SURFACE - 1500 M (5000 FEET)|deg|0|0|9|deg|0|3
+011045|meanWindSpeedForSurfaceTo1500M|double|MEAN WIND SPEED FOR SURFACE - 1500 M (5000 FEET)|m/s|1|0|12|m/s|1|4
+011046|maximumInstantaneousWindSpeed|double|MAXIMUM INSTANTANEOUS WIND SPEED|m/s|1|0|12|m/s|1|4
+011047|maximumInstantaneousWindSpeedOver10Minutes|double|MAXIMUM INSTANTANEOUS WIND SPEED OVER 10 MINUTES|m/s|1|0|12|m/s|1|4
+011049|windDirectionStandardDeviation|long|STANDARD DEVIATION OF WIND DIRECTION|deg|0|0|9|deg|0|3
+011050|standardDeviationOfHorizontalWindSpeed|double|STANDARD DEVIATION OF HORIZONTAL WIND SPEED|m/s|1|0|12|m/s|1|4
+011051|standardDeviationOfVerticalWindSpeed|double|STANDARD DEVIATION OF VERTICAL WIND SPEED|m/s|1|0|8|m/s|1|3
+011052|formalUncertaintyInWindSpeed|double|FORMAL UNCERTAINTY IN WIND SPEED|m/s|2|0|13|m/s|2|5
+011053|formalUncertaintyInWindDirection|double|FORMAL UNCERTAINTY IN WIND DIRECTION|deg|2|0|15|deg|2|5
+011054|meanWindDirectionFor1500To3000M|long|MEAN WIND DIRECTION FOR 1500 M - 3000 M|deg|0|0|9|deg|0|3
+011055|meanWindSpeedFor1500To3000M|double|MEAN WIND SPEED FOR 1500 M - 3000 M|m/s|1|0|12|m/s|1|4
+011061|absoluteWindShearIn1KmLayerBelow|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW|m/s|1|0|12|m/s|1|4
+011062|absoluteWindShearIn1KmLayerAbove|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE|m/s|1|0|12|m/s|1|4
+011070|designatorOfRunwayAffectedByWindShearIncludingAll|string|DESIGNATOR OF THE RUNWAY AFFECTED BY WIND SHEAR (INCLUDING ALL)|CCITT IA5|0|0|32|Character|0|4
+011071|turbulentVerticalMomentumFlux|double|TURBULENT VERTICAL MOMENTUM FLUX|m2 s-2|3|-128|14|m2 s-2|3|5
+011072|turbulentVerticalBuoyancyFlux|double|TURBULENT VERTICAL BUOYANCY FLUX|K m s-1|3|-128|11|K m s-1|3|4
+011073|turbulentKineticEnergy|double|TURBULENT KINETIC ENERGY|m2 s-2|2|-1024|13|m2 s-2|2|4
+011074|dissipationEnergy|double|DISSIPATION ENERGY|m2 s-2|2|-1024|10|m2 s-2|2|4
+011075|meanTurbulenceIntensityEddyDissipationRate|double|MEAN TURBULENCE INTENSITY (EDDY DISSIPATION RATE)|m2/3 s-1|2|0|8|m2/3 s-1|2|3
+011076|peakTurbulenceIntensityEddyDissipationRate|double|PEAK TURBULENCE INTENSITY (EDDY DISSIPATION RATE)|m2/3 s-1|2|0|8|m2/3 s-1|2|3
+011077|reportingIntervalOrAveragingTimeForEddyDissipationRate|long|REPORTING INTERVAL OR AVERAGING TIME FOR EDDY DISSIPATION RATE|s|0|0|12|s|0|4
+011081|modelWindDirectionAt10M|double|MODEL WIND DIRECTION AT 10M|deg|2|0|16|deg|2|5
+011082|modelWindSpeedAt10M|double|MODEL WIND SPEED AT 10M|m/s|2|0|14|m/s|2|4
+011083|windSpeed|long|WIND SPEED|km/h|0|0|9|km/h|0|3
+011084|windSpeed|long|WIND SPEED|kt|0|0|8|kt|0|3
+011085|maximumWindGustSpeed|long|MAXIMUM WIND GUST SPEED|km/h|0|0|9|km/h|0|3
+011086|maximumWindGustSpeed|long|MAXIMUM WIND GUST SPEED|kt|0|0|8|kt|0|3
+011095|u|double|U COMPONENT OF THE MODEL WIND VECTOR|m/s|1|-4096|13|m/s|1|4
+011096|v|double|V COMPONENT OF THE MODEL WIND VECTOR|m/s|1|-4096|13|m/s|1|4
+011097|windSpeedFromAltimeter|double|WIND SPEED FROM ALTIMETER|m/s|2|0|12|NA|0|0
+011098|windSpeedFromRadiometer|double|WIND SPEED FROM RADIOMETER|m/s|2|0|12|NA|0|0
+012001|airTemperature|double|TEMPERATURE/DRY-BULB TEMPERATURE|K|1|0|12|C|1|3
+012002|wetBulbTemperature|double|WET-BULB TEMPERATURE|K|1|0|12|C|1|3
+012003|dewpointTemperature|double|DEW-POINT TEMPERATURE|K|1|0|12|C|1|3
+012004|airTemperatureAt2M|double|DRY-BULB TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012005|wetBulbTemperatureAt2M|double|WET-BULB TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012006|dewpointTemperatureAt2M|double|DEW-POINT TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012007|virtualTemperature|double|VIRTUAL TEMPERATURE|K|1|0|12|C|1|3
+012011|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|C|1|3
+012012|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|C|1|3
+012013|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE, PAST 12 HOURS|K|1|0|12|C|1|3
+012014|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|1|0|12|C|1|3
+012015|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|1|0|12|C|1|3
+012016|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|1|0|12|C|1|3
+012017|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|1|0|12|C|1|3
+012021|maximumTemperatureAt2M|double|MAXIMUM TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012022|minimumTemperatureAt2M|double|MINIMUM TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012023|temperature|long|TEMPERATURE|C|0|-99|8|C|0|2
+012024|dewpointTemperature|long|DEW POINT TEMPERATURE|C|0|-99|8|C|0|2
+012030|soilTemperature|double|SOIL TEMPERATURE|K|1|0|12|C|1|3
+012049|temperatureChangeOverSpecifiedPeriod|long|TEMPERATURE CHANGE OVER SPECIFIED PERIOD|K|0|-30|6|C|0|2
+012051|standardDeviationTemperature|double|STANDARD DEVIATION TEMPERATURE|K|1|0|10|C|1|3
+012052|highestDailyMeanTemperature|double|HIGHEST DAILY MEAN TEMPERATURE|K|1|0|12|C|1|3
+012053|lowestDailyMeanTemperature|double|LOWEST DAILY MEAN TEMPERATURE|K|1|0|12|C|1|3
+012061|skinTemperature|double|SKIN TEMPERATURE|K|1|0|12|C|1|3
+012062|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|1|0|12|C|1|3
+012063|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|1|0|12|C|1|3
+012064|instrumentTemperature|double|INSTRUMENT TEMPERATURE|K|1|0|12|K|1|4
+012065|standardDeviationBrightnessTemperature|double|STANDARD DEVIATION BRIGHTNESS TEMPERATURE|K|1|0|12|K|1|4
+012070|warmLoadTemperature|double|WARM LOAD TEMPERATURE|K|2|0|16|K|2|5
+012071|coldestClusterTemperature|double|COLDEST CLUSTER TEMPERATURE|K|1|0|12|K|1|4
+012072|radiance|double|RADIANCE|W m-2 sr-1|6|0|31|W m-2 sr-1|6|9
+012073|temperature|double|TEMPERATURE|K|2|0|16|K|1|4
+012075|spectralRadiance|long|SPECTRAL RADIANCE|W m-3 sr-1|-3|0|16|W m-3 sr-1|-3|5
+012076|radiance|double|RADIANCE|W m-2 sr-1|3|0|16|W m-2 sr-1|3|5
+012080|brightnessTemperatureRealPart|double|BRIGHTNESS TEMPERATURE REAL PART|K|2|-10000|16|K|2|5
+012081|brightnessTemperatureImaginaryPart|double|BRIGHTNESS TEMPERATURE IMAGINARY PART|K|2|-10000|16|K|2|5
+012082|pixelRadiometricAccuracy|double|PIXEL RADIOMETRIC ACCURACY|K|2|0|12|K|2|4
+012101|airTemperature|double|TEMPERATURE/DRY-BULB TEMPERATURE|K|2|0|16|C|2|4
+012102|wetBulbTemperature|double|WET-BULB TEMPERATURE|K|2|0|16|C|2|4
+012103|dewpointTemperature|double|DEW-POINT TEMPERATURE|K|2|0|16|C|2|4
+012104|airTemperatureAt2M|double|DRY-BULB TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012105|webBulbTemperatureAt2M|double|WEB-BULB TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012106|dewpointTemperatureAt2M|double|DEW-POINT TEMPERATURE AT 2M|K|2|0|16|C|2|4
+012107|virtualTemperature|double|VIRTUAL TEMPERATURE|K|2|0|16|C|2|4
+012111|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|2|0|16|C|2|4
+012112|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|2|0|16|C|2|4
+012113|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE, PAST 12 HOURS|K|2|0|16|C|2|4
+012114|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2M, PAST 12 HOURS|K|2|0|16|C|2|4
+012115|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2M, PAST 12 HOURS|K|2|0|16|C|2|4
+012116|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2M, PAST 24 HOURS|K|2|0|16|C|2|4
+012117|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2M, PAST 24 HOURS|K|2|0|16|C|2|4
+012118|maximumTemperatureAtHeightSpecifiedPast24Hours|double|MAXIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS|K|2|0|16|C|2|4
+012119|minimumTemperatureAtHeightSpecifiedPast24Hours|double|MINIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS|K|2|0|16|C|2|4
+012121|groundMinimumTemperature|double|GROUND MINIMUM TEMPERATURE|K|2|0|16|C|2|4
+012122|groundMinimumTemperatureOfPrecedingNight|double|GROUND MINIMUM TEMPERATURE OF THE PRECEDING NIGHT|K|2|0|16|C|2|4
+012130|soilTemperature|double|SOIL TEMPERATURE|K|2|0|16|C|2|4
+012151|dailyMeanTemperatureStandardDeviation|double|STANDARD DEVIATION OF DAILY MEAN TEMPERATURE|K|2|0|12|C|2|4
+012152|highestDailyMeanTemperature|double|HIGHEST DAILY MEAN TEMPERATURE|K|2|0|16|C|2|4
+012153|lowestDailyMeanTemperature|double|LOWEST DAILY MEAN TEMPERATURE|K|2|0|16|C|2|4
+012161|skinTemperature|double|SKIN TEMPERATURE|K|2|0|16|C|2|4
+012162|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|2|0|16|C|2|4
+012163|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|2|0|16|C|2|4
+012164|instrumentTemperature|double|INSTRUMENT TEMPERATURE|K|2|0|16|K|2|5
+012165|directSunBrightnessTemperature|long|DIRECT SUN BRIGHTNESS TEMPERATURE|K|0|0|23|K|0|7
+012166|snapshotAccuracy|double|SNAPSHOT ACCURACY|K|1|-4000|13|K|1|4
+012167|radiometricAccuracyPurePolarization|double|RADIOMETRIC ACCURACY (PURE POLARISATION)|K|1|0|9|K|1|3
+012168|radiometricAccuracyCrossPolarization|double|RADIOMETRIC ACCURACY ( CRESS POLARISATION )|K|1|0|9|K|1|3
+012171|coldestClusterTemperature|double|COLDEST CLUSTER TEMPERATURE|K|2|0|16|K|2|5
+012180|averaged12MicronBtForAllClearPixelsAtNadir|double|AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012181|averaged11MicronBtForAllClearPixelsAtNadir|double|AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012182|averaged37MicronBtForAllClearPixelsAtNadir|double|AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012183|averaged12MicronBtForAllClearPixelsForwardView|double|AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012184|averaged11MicronBtForAllClearPixelsForwardView|double|AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012185|averaged37MicronBtForAllClearPixelsForwardView|double|AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012186|meanNadirSeaSurfaceTemperature|double|MEAN NADIR SEA SURFACE TEMPERATURE|K|2|0|16|K|2|5
+012187|meanDualViewSeaSurfaceTemperature|double|MEAN DUAL VIEW SEA SURFACE TEMPERATURE|K|2|0|16|K|2|5
+012188|interpolated238GhzBrightnessTFromMwr|double|INTERPOLATED 23.8 GHZ BRIGHTNESS T FROM MWR|K|2|0|16|K|2|5
+012189|interpolated365GhzBrightnessTFromMwr|double|INTERPOLATED 36.5 GHZ BRIGHTNESS T FROM MWR|K|2|0|16|K|2|5
+013001|specificHumidity|double|SPECIFIC HUMIDITY|kg/kg|5|0|14|kg/kg|5|5
+013002|mixingRatio|double|MIXING RATIO|kg/kg|5|0|14|kg/kg|5|5
+013003|relativeHumidity|long|RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013004|vapourPressure|long|VAPOUR PRESSURE|Pa|-1|0|10|Pa|-1|4
+013005|vapourDensity|double|VAPOUR DENSITY|kg m-3|3|0|7|kg m-3|3|3
+013006|mixingHeights|long|MIXING HEIGHTS|m|-1|-40|16|m|-1|5
+013007|minimumRelativeHumidity|long|MINIMUM RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013008|maximumRelativeHumidity|long|MAXIMUM RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013009|relativeHumidity|double|RELATIVE HUMIDITY|%|1|-1000|12|%|1|4
+013011|totalPrecipitationOrTotalWaterEquivalent|double|TOTAL PRECIPITATION/TOTAL WATER EQUIVALENT|kg m-2|1|-1|14|kg m-2|1|5
+013012|depthOfFreshSnow|double|DEPTH OF FRESH SNOW|m|2|-2|12|m|2|4
+013013|totalSnowDepth|double|TOTAL SNOW DEPTH|m|2|-2|16|m|2|5
+013014|rainfallOrWaterEquivalentOfSnowAveragedRate|double|RAINFALL/WATER EQUIVALENT OF SNOW (AVERAGED RATE)|kg m-2 s-1|4|0|12|kg m-2 s-1|4|4
+013015|snowfallAveragedRate|double|SNOWFALL (AVERAGED RATE)|m/s|7|0|12|m/s|7|4
+013016|precipitableWater|long|PRECIPITABLE WATER|kg m-2|0|0|7|kg m-2|0|3
+013019|totalPrecipitationPast1Hour|double|TOTAL PRECIPITATION PAST 1 HOUR|kg m-2|1|-1|14|kg m-2|1|4
+013020|totalPrecipitationPast3Hours|double|TOTAL PRECIPITATION PAST 3 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013021|totalPrecipitationPast6Hours|double|TOTAL PRECIPITATION PAST 6 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013022|totalPrecipitationPast12Hours|double|TOTAL PRECIPITATION PAST 12 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013023|totalPrecipitationPast24Hours|double|TOTAL PRECIPITATION PAST 24 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013031|evapotranspiration|long|EVAPOTRANSPIRATION|kg m-2|0|0|7|kg m-2|0|3
+013032|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|8|kg m-2|1|3
+013033|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|10|kg m-2|1|4
+013038|superadiabaticIndicator|table|SUPERADIABATIC INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+013039|terrainTypeIceOrSnow|table|TERRAIN TYPE (ICE/SNOW)|CODE TABLE|0|0|3|CODE TABLE|0|1
+013040|surfaceFlag|table|SURFACE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+013041|pasquillGiffordStabilityCategory|table|PASQUILL-GIFFORD STABILITY CATEGORY|CODE TABLE|0|0|4|CODE TABLE|0|2
+013042|parcelLiftedIndexTo500Hpa|long|PARCEL LIFTED INDEX (TO 500 HPA)|K|0|-20|6|K|0|2
+013043|bestLiftedIndexTo500Hpa|long|BEST LIFTED INDEX (TO 500 HPA)|K|0|-20|6|K|0|2
+013044|kIndex|long|K INDEX|K|0|-30|8|K|0|3
+013045|koIndex|long|KO INDEX|K|0|-30|8|K|0|3
+013046|maximumBuoyancy|long|MAXIMUM BUOYANCY|K|0|-30|8|K|0|3
+013047|modifiedShowalterStabilityIndex|long|MODIFIED SHOWALTER STABILITY INDEX|K|0|-60|6|C|0|2
+013048|waterFraction|double|WATER FRACTION|%|1|0|10|%|1|4
+013051|frequencyGroupPrecipitation|table|FREQUENCY GROUP, PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013052|highestDailyAmountOfPrecipitation|double|HIGHEST DAILY AMOUNT OF PRECIPITATION|kg m-2|1|-1|14|kg m-2|1|5
+013055|intensityOfPrecipitation|double|INTENSITY OF PRECIPITATION|kg m-2 s-1|4|0|8|mm/h|1|3
+013056|characterAndIntensityOfPrecipitation|table|CHARACTER AND INTENSITY OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013057|timeOfBeginningOrEndOfPrecipitation|table|TIME OF BEGINNING OR END OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013058|sizeOfPrecipitatingElement|double|SIZE OF PRECIPITATING ELEMENT|m|4|0|7|mm|1|3
+013059|numberOfFlashesThunderstorm|long|NUMBER OF FLASHES (THUNDERSTORM)|Numeric|0|0|7|Numeric|0|3
+013060|totalAccumulatedPrecipitation|double|TOTAL ACCUMULATED PRECIPITATION|kg m-2|1|-1|17|kg m-2|1|5
+013071|upstreamWaterLevel|double|UPSTREAM WATER LEVEL|m|2|0|14|m|2|5
+013072|downstreamWaterLevel|double|DOWNSTREAM WATER LEVEL|m|2|0|14|m|2|4
+013073|maximumWaterLevel|double|MAXIMUM WATER LEVEL|m|2|0|14|m|2|4
+013080|waterPh|double|WATER PH|pH unit|1|0|10|pH unit|1|3
+013081|waterConductivity|double|WATER CONDUCTIVITY|S/m|3|0|14|S/m|3|4
+013082|waterTemperature|double|WATER TEMPERATURE|K|1|0|12|K|1|4
+013083|dissolvedOxygen|double|DISSOLVED OXYGEN|kg m-3|6|0|15|kg m-3|6|5
+013084|turbidity|long|TURBIDITY|lm|0|0|14|lm|0|4
+013085|oxidationReductionPotential|double|OXYDATION REDUCTION POTENTIAL (ORP)|V|3|0|14|V|3|4
+013090|radiometerWaterVapourContent|double|RADIOMETER WATER VAPOUR CONTENT|kg m-2|1|0|10|kg m-2|1|4
+013091|radiometerLiquidContent|double|RADIOMETER LIQUID CONTENT|kg m-2|2|0|8|kg m-2|2|3
+013093|cloudOpticalThickness|long|CLOUD OPTICAL THICKNESS|Numeric|0|0|8|Numeric|0|3
+013095|totalColumnWaterVapour|double|TOTAL COLUMN WATER VAPOUR|kg m-2|4|0|19|kg m-2|4|6
+013096|mwrWaterVapourContent|double|MWR WATER VAPOUR CONTENT|kg m-2|2|0|14|kg m-2|2|4
+013097|mwrLiquidWaterContent|double|MWR LIQUID WATER CONTENT|kg m-2|2|0|14|kg m-2|2|4
+013098|integratedWaterVapourDensity|double|INTEGRATED WATER VAPOUR DENSITY|kg m-2|8|0|30|kg m-2|8|10
+014001|longWaveRadiationIntegratedOver24Hours|long|LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014002|longWaveRadiationIntegratedOverPeriodSpecified|long|LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014003|shortWaveRadiationIntegratedOver24Hours|long|SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014004|shortWaveRadiationIntegratedOverPeriodSpecified|long|SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014011|netLongWaveRadiationIntegratedOver24Hours|long|NET LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014012|netLongWaveRadiationIntegratedOverPeriodSpecified|long|NET LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014013|netShortWaveRadiation24Hours|long|NET SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-2048|12|J m-2|-3|4
+014014|netShortWaveRadiationIntegratedOverPeriodSpecified|long|NET SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-2048|12|J m-2|-3|4
+014015|netRadiationIntegratedOver24Hours|long|NET RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|-16384|15|J m-2|-4|5
+014016|netRadiationIntegratedOverPeriodSpecified|long|NET RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|-16384|15|J m-2|-4|5
+014017|instantaneousLongWaveRadiation|long|INSTANTANEOUS LONG-WAVE RADIATION (SEE NOTE 6)|W m-2|-3|-2048|12|W m-2|-3|4
+014018|instantaneousShortWaveRadiation|long|INSTANTANEOUS SHORT-WAVE RADIATION (SEE NOTE 6)|W m-2|-3|-2048|12|W m-2|-3|4
+014019|surfaceAlbedo|long|SURFACE ALBEDO|%|0|0|7|%|0|3
+014020|globalSolarRadiation24Hours|long|GLOBAL SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014021|globalSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014022|diffuseSolarRadiationIntegratedOver24Hours|long|DIFFUSE SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014023|diffuseSolarRadiationIntegratedOverPeriodSpecified|long|DIFFUSE SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014024|directSolarRadiationIntegratedOver24Hours|long|DIRECT SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014025|directSolarRadiationIntegratedOverPeriodSpecified|long|DIRECT SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014026|cloudTopAlbedo|long|ALBEDO AT THE TOP OF CLOUDS|%|0|0|7|%|0|3
+014027|albedo|long|ALBEDO|%|0|0|7|%|0|3
+014028|globalSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD S|J m-2|-2|0|16|J m-2|-2|5
+014029|diffuseSolarRadiationIntegratedOverPeriodSpecified|long|DIFFUSE SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD|J m-2|-2|0|16|J m-2|-2|5
+014030|directSolarRadiationIntegratedOverPeriodSpecified|long|DIRECT SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD S|J m-2|-2|0|16|J m-2|-2|5
+014031|totalSunshine|long|TOTAL SUNSHINE|min|0|0|11|min|0|4
+014032|totalSunshine|long|TOTAL SUNSHINE|h|0|0|10|h|0|4
+014033|totalSunshine|long|TOTAL SUNSHINE|%|0|0|9|%|0|3
+014034|sunshineOverPeriodSpecified|long|SUNSHINE OVER PERIOD SPECIFIED|min|0|0|11|min|0|4
+014042|bidirectionalReflectance|long|BI-DIRECTIONAL REFLECTANCE|%|0|0|7|%|0|3
+014045|channelRadiance|long|CHANNEL RADIANCE|W m-2 sr-1 cm|0|0|11|W m-2 sr-1 cm|0|4
+014046|scaledIasiRadiance|long|SCALED IASI RADIANCE|W m-2 sr-1 m|0|-5000|16|W m-2 sr-1 m|0|5
+014047|scaledMeanAvhrrRadiance|long|SCALED MEAN AVHRR RADIANCE|W m-2 sr-1 m|0|0|31|W m-2 sr-1 m|0|10
+014048|scaledStandardDeviationAvhrrRadiance|long|SCALED STANDARD DEVIATION RADIANCE|W m-2 sr-1 m|0|0|31|W m-2 sr-1 m|0|10
+014050|emissivity|double|EMISSIVITY (SEE NOTE 5)|%|1|0|10|%|1|4
+014051|directSolarRadiationIntegratedOverLastHour|long|DIRECT SOLAR RADIATION INTEGRATED OVER LAST HOUR|J m-2|-3|0|14|J m-2|-3|4
+014055|solarActivityIndex|long|SOLAR ACTIVITY INDEX|Numeric|0|-32768|16|Numeric|0|5
+014061|instantaneousLongWaveRadiation|long|(VAL) INSTANTANEOUS LONG-WAVE RADIATION|W m-2|0|-512|10|W m-2|0|4
+014062|instantaneousShortWaveRadiation|long|(VAL) INSTANTANEOUS SHORT-WAVE RADIATION|W m-2|0|-2048|12|W m-2|0|4
+015001|totalOzone|long|TOTAL OZONE|DU|0|0|10|DU|0|4
+015002|airMassSlantPathAt22Km|long|AIR MASS (SLANT PATH AT 22 KM)|Numeric|2|0|10|Numeric|2|3
+015003|measuredOzonePartialPressureSounding|double|MEASURED OZONE PARTIAL PRESSURE (SOUNDING)|Pa|4|0|9|nbar|0|3
+015004|ozoneSoundingCorrectionFactor|long|OZONE SOUNDING CORRECTION FACTOR|Numeric|3|0|11|Numeric|3|4
+015005|ozoneP|long|OZONE P|DU|0|0|10|DU|0|3
+015008|significandOfVolumetricMixingRatio|long|SCALED MIXING RATIO|Numeric|0|0|10|Numeric|0|4
+015011|log10IntegratedElectronDensity|double|LOG 10 OF INTEGRATED ELECTRON DENSITY|log (m-2)|3|14000|13|log (m-2)|3|4
+015012|totalElectronCountPerSquareMetre|long|TOTAL ELECTRON COUNT PER SQUARE METER|m-2|-16|0|6|m-2|-16|2
+015015|maxImageSpectralComponentBeforeNormalization|long|MAXIMUM IMAGE SPECTRAL COMPONENT BEFORE NORMALIZATION|Numeric|0|0|31|Numeric|0|10
+015020|integratedOzoneDensity|double|INTEGRATED 03 DENSITY|kg m-2|8|0|21|kg m-2|8|7
+015021|integratedMassDensity|double|INTEGRATED MASS DENSITY|kg m-2|11|0|31|kg m-2|11|10
+015024|opticalDepth|long|OPTICAL DEPTH|Numeric|4|0|24|Numeric|4|8
+015025|pollutantType|table|TYPE OF POLLUTANT|CODE TABLE|0|0|4|CODE TABLE|0|2
+015026|moleFractionOfPollutant|double|CONCENTRATION OF POLLUTANT|mol/mol|9|0|9|mol/mol|9|3
+015027|massConcentrationOfPollutant|double|CONCENTRATION OF POLLUTANT|kg m-3|9|0|10|kg m-3|9|4
+015030|aerosolContaminationIndex|long|AEROSOL CONTAMINATION INDEX|Numeric|2|-1000|12|Numeric|2|4
+015031|atmosphericPathDelayInSatelliteSignal|double|ATMOSPHERIC PATH DELAY IN SATELLITE SIGNAL|m|4|10000|15|m|4|5
+015032|estimatedErrorInAtmosphericPathDelay|double|ESTIMATED ERROR IN ATMOSPHERIC PATH DELAY|m|4|0|10|m|4|4
+015033|differenceInPathDelaysForLimbViewsAtExtremesOfScan|double|DIFFERENCE IN PATH DELAYS FOR LIMB VIEWS AT EXTREMES OF SCAN|m|5|-10000|15|m|5|5
+015034|estimatedErrorInPathDelayDifference|double|ESTIMATED ERROR IN PATH DELAY DIFFERENCE|m|5|0|14|m|5|5
+015035|componentOfZenithPathDelayDueToWaterVapour|double|COMPONENT OF ZENITH PATH DELAY DUE TO WATER VAPOUR|m|4|0|14|m|4|5
+015036|atmosphericRefractivity|double|ATMOSPHERIC REFRACTIVITY (SEE NOTE 5)|N units|3|0|19|N units|3|6
+015037|bendingAngle|double|BENDING ANGLE|rad|8|-100000|23|rad|8|7
+019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
+019002|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-2|0|12|m|-2|4
+019003|windSpeedThreshold|long|WIND SPEED THRESHOLD|m/s|0|0|8|m/s|0|3
+019004|effectiveRadiusWithRespectToWindSpeedsAboveThreshold|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD|m|-2|0|12|m|-2|4
+019005|featureDirectionOfMotion|long|DIRECTION OF MOTION OF FEATURE|deg|0|0|9|deg|0|3
+019006|speedOfMotionOfFeature|double|SPEED OF MOTION OF FEATURE|m/s|2|0|14|m/s|2|5
+019007|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-3|0|12|m|-3|4
+019008|verticalExtentOfCirculation|table|VERTICAL EXTENT OF CIRCULATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+019009|effectiveRadiusWithRespectToWindSpeedsAboveThresholdLargeStorms|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD (LA|m|-3|0|12|m|-3|4
+019010|methodForTrackingCentreOfSynopticFeature|table|METHOD FOR TRACKING THE CENTRE OF SYNOPTIC FEATURE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019100|timeIntervalToCalculateMovementOfTropicalCyclone|table|TIME INTERVAL TO CALCULATE THE MOVEMENT OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019101|accuracyOfPositionOfCentreOfTropicalCyclone|table|ACCURACY OF THE POSITION OF THE CENTRE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019102|shapeAndDefinitionOfEyeOfTropicalCyclone|table|SHAPE AND DEFINITION OF THE EYE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|3|CODE TABLE|0|1
+019103|diameterOfMajorAxisOfEyeOfTropicalCyclone|table|DIAMETER OF MAJOR AXIS OF THE EYE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019104|changeInCharacterOfEyeDuring30Minutes|table|CHANGE IN CHARACTER OF THE EYE DURING THE 30 MINUTES|CODE TABLE|0|0|4|CODE TABLE|0|2
+019105|distanceBetweenEndOfSpiralBandAndCentre|table|DISTANCE BETWEEN THE END OF SPIRAL BAND AND THE CENTRE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019106|identificationNumberOfTropicalCyclone|long|IDENTIFICATION NUMBER OF TROPICAL CYCLONE|Numeric|0|0|7|Numeric|0|3
+019107|timeIntervalOverWhichMovementOfTropicalCycloneHasBeenCalculated|table|TIME INTERVAL OF THE TROPICAL CYCLONE ANALYSIS|CODE TABLE|0|0|4|CODE TABLE|0|2
+019108|accuracyOfGeographicalPositionOfTropicalCyclone|table|ACCURACY OF GEOGRAPHICAL POSITION OF THE TROPICAL CYCLONE|CODE TABLE|0|0|3|CODE TABLE|0|1
+019109|meanDiameterOfOvercastCloudOfTropicalCyclone|table|MEAN DIAMETER OF THE OVERCAST CLOUD OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019110|apparent24HourChangeInIntensityOfTropicalCyclone|table|APPARENT 24-HOUR CHANGE IN INTENSITY OF TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019111|currentIntensityNumberOfTropicalCyclone|long|CURRENT INTENSITY (CI) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019112|dataTropicalNumberOfTropicalCyclone|long|DATA TROPICAL (DT) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019113|cloudPatternTypeOfDtNumber|table|CLOUD PATTERN TYPE OF THE DT- NUMBER|CODE TABLE|0|0|4|CODE TABLE|0|2
+019114|modelExpectedTropicalNumberOfTropicalCyclone|long|MODEL EXPECTED TROPICAL (MET) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019115|trendOfPast24HourChangeDevelopedWeakened|long|TREND OF PAST 24-HOUR CHANGE (+: DEVELOPED, -: WEAKENED)|Numeric|1|-30|6|Numeric|1|2
+019116|patternTropicalNumberOfTropicalCyclone|long|PATTERN TROPICAL (PT) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019117|cloudPictureTypeOfPtNumber|table|CLOUD PICTURE TYPE OF THE PT- NUMBER|CODE TABLE|0|0|3|CODE TABLE|0|1
+019118|finalTropicalNumberOfTropicalCyclone|long|FINAL TROPICAL (T) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019119|finalTNumberType|table|TYPE OF THE FINAL T-NUMBER|CODE TABLE|0|0|3|CODE TABLE|0|1
+019150|typhoonInternationalCommonNumberTyphoonCommittee|string|TYPHOON INTERNATIONAL COMMON NUMBER (TYPHOON COMMITTEE)|CCITT IA5|0|0|32|Character|0|4
+020001|horizontalVisibility|long|HORIZONTAL VISIBILITY|m|-1|0|13|m|-1|4
+020002|verticalVisibility|long|VERTICAL VISIBILITY|m|-1|0|7|m|-1|3
+020003|presentWeather|table|PRESENT WEATHER (SEE NOTE 1)|CODE TABLE|0|0|9|CODE TABLE|0|3
+020004|pastWeather1|table|PAST WEATHER (1) (SEE NOTE 2)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020005|pastWeather2|table|PAST WEATHER (2) (SEE NOTE 2)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020008|cloudDistributionForAviation|table|CLOUD DISTRIBUTION FOR AVIATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020009|generalWeatherIndicatorTafOrMetar|table|GENERAL WEATHER INDICATOR (TAF/METAR)|CODE TABLE|0|0|4|CODE TABLE|0|2
+020010|cloudCoverTotal|long|CLOUD COVER (TOTAL)|%|0|0|7|%|0|3
+020011|cloudAmount|table|CLOUD AMOUNT|CODE TABLE|0|0|4|CODE TABLE|0|2
+020012|cloudType|table|CLOUD TYPE|CODE TABLE|0|0|6|CODE TABLE|0|2
+020013|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|m|-1|-40|11|m|-1|4
+020014|heightOfTopOfCloud|long|HEIGHT OF TOP OF CLOUD|m|-1|-40|11|m|-1|4
+020015|pressureAtBaseOfCloud|long|PRESSURE AT BASE OF CLOUD|Pa|-1|0|14|Pa|-1|5
+020016|pressureAtTopOfCloud|long|PRESSURE AT TOP OF CLOUD|Pa|-1|0|14|Pa|-1|5
+020017|cloudTopDescription|table|CLOUD TOP DESCRIPTION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020018|tendencyOfRunwayVisualRange|table|TENDENCY OF RUNWAY VISUAL RANGE|CODE TABLE|0|0|2|CODE TABLE|0|1
+020019|significantWeather|string|SIGNIFICANT PRESENT OR FORECAST WEATHER|CCITT IA5|0|0|72|Character|0|9
+020020|significantRecentWeatherPhenomena|string|SIGNIFICANT RECENT WEATHER PHENOMENA|CCITT IA5|0|0|32|Character|0|4
+020021|precipitationType|flag|TYPE OF PRECIPITATION|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+020022|characterOfPrecipitation|table|CHARACTER OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020023|otherWeatherPhenomena|flag|OTHER WEATHER PHENOMENA|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+020024|intensityOfPhenomena|table|INTENSITY OF PHENOMENA|CODE TABLE|0|0|3|CODE TABLE|0|1
+020025|obscuration|flag|OBSCURATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+020026|characterOfObscuration|table|CHARACTER OF OBSCURATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020027|phenomenaOccurrence|flag|PHENOMENA OCCURRENCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+020028|expectedChangeInIntensity|table|EXPECTED CHANGE IN INTENSITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+020029|rainFlag|table|RAIN FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+020031|iceDepositThickness|double|ICE DEPOSIT (THICKNESS)|m|2|0|7|m|2|3
+020032|rateOfIceAccretionEstimated|table|RATE OF ICE ACCRETION|CODE TABLE|0|0|3|CODE TABLE|0|1
+020033|causeOfIceAccretion|flag|CAUSE OF ICE ACCRETION|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+020034|seaIceConcentration|table|SEA ICE CONCENTRATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020035|amountAndTypeOfIce|table|AMOUNT AND TYPE OF ICE|CODE TABLE|0|0|4|CODE TABLE|0|2
+020036|iceSituation|table|ICE SITUATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020037|iceDevelopment|table|ICE DEVELOPMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+020038|iceEdgeBearing|long|BEARING OF ICE EDGE (SEE NOTE 3)|deg|0|0|12|deg|0|3
+020039|iceDistance|long|ICE DISTANCE|m|-1|0|13|m|-1|4
+020040|evolutionOfDriftSnow|table|EVOLUTION OF DRIFT OF SNOW|CODE TABLE|0|0|4|CODE TABLE|0|2
+020041|airframeIcing|table|AIRFRAME ICING|CODE TABLE|0|0|4|CODE TABLE|0|2
+020042|airframeIcingPresent|table|AIRFRAME ICING PRESENT|CODE TABLE|0|0|2|CODE TABLE|0|1
+020043|peakLiquidWaterContent|double|PEAK LIQUID WATER CONTENT|kg m-3|4|0|7|kg m-3|4|2
+020044|averageLiquidWaterContent|double|AVERAGE LIQUID WATER CONTENT|kg m-3|4|0|7|kg m-3|4|2
+020045|supercooledLargeDropletConditions|table|SUPERCOOLED LARGE DROPLET (SLD) CONDITIONS|CODE TABLE|0|0|2|CODE TABLE|0|2
+020048|evolutionOfFeature|table|EVOLUTION OF FEATURE|CODE TABLE|0|0|4|CODE TABLE|2|2
+020050|cloudIndex|table|CLOUD INDEX|CODE TABLE|0|0|8|CODE TABLE|0|3
+020051|amountOfLowClouds|long|AMOUNT OF LOW CLOUDS|%|0|0|7|%|0|3
+020052|amountOfMiddleClouds|long|AMOUNT OF MIDDLE CLOUDS|%|0|0|7|%|0|3
+020053|amountOfHighClouds|long|AMOUNT OF HIGH CLOUDS|%|0|0|7|%|0|3
+020054|trueDirectionFromWhichAPhenomenonOrCloudsAreMovingOrInWhichTheyAreObserved|long|TRUE DIRECTION FROM WHICH CLOUDS ARE MOVING|deg|0|0|9|deg|0|3
+020055|stateOfSkyInTropics|table|STATE OF SKY IN TROPICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020056|cloudPhase|table|CLOUD PHASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+020059|minimumHorizontalVisibility|long|MINIMUM HORIZONTAL VISIBILITY|m|-1|0|9|m|-1|3
+020060|prevailingHorizontalVisibility|long|PREVAILING HORIZONTAL VISIBILITY|m|-1|0|10|m|-1|4
+020061|runwayVisualRangeRvr|long|RUNWAY VISUAL RANGE (RVR)|m|0|0|12|m|0|4
+020062|stateOfGround|table|STATE OF THE GROUND (WITH OR WITHOUT SNOW)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020063|specialPhenomena|table|SPECIAL PHENOMENA|CODE TABLE|0|0|10|CODE TABLE|0|4
+020065|snowCover|long|SNOW COVER (SEE NOTE 4)|%|0|0|7|%|0|3
+020066|maximumDiameterOfHailstones|double|MAXIMUM DIAMETER OF HAILSTONES|m|3|0|8|m|3|3
+020067|diameterOfDeposit|double|DIAMETER OF DEPOSIT|m|3|0|9|m|3|3
+020070|minimumNumberOfAtmospherics|long|MINIMUM NUMBER OF ATMOSPHERICS|Numeric|0|0|7|Numeric|0|3
+020071|accuracyOfFixAndRateOfAtmospherics|table|ACCURACY OF FIX AND RATE OF ATMOSPHERICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020081|cloudAmountInSegment|long|CLOUD AMOUNT IN SEGMENT|%|0|0|7|%|0|3
+020082|amountSegmentCloudFree|long|AMOUNT SEGMENT CLOUD FREE|%|0|0|7|%|0|3
+020083|amountOfSegmentCoveredByScene|long|AMOUNT OF SEGMENT COVERED BY SCENE|%|0|0|7|%|0|3
+020085|generalConditionOfRunway|table|GENERAL CONDITION OF RUNWAY|CODE TABLE|0|0|4|CODE TABLE|0|1
+020086|runwayDeposits|table|RANWAY DEPOSITS|CODE TABLE|0|0|4|CODE TABLE|0|1
+020087|runwayContamination|table|RUNWAY CONTAMINATION|CODE TABLE|0|0|4|CODE TABLE|0|1
+020088|depthOfRunwayDeposits|double|DEPTH OF RANWAY DEPOSITS|m|3|0|12|m|3|4
+020089|runwayFrictionCoefficient|table|RUNWAY FRICTION COEFICIENT|CODE TABLE|0|0|7|CODE TABLE|0|2
+020090|specialClouds|table|SPECIAL CLOUDS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020091|verticalVisibility|long|VERTICAL VISIBILITY|ft|-2|0|10|ft|-2|3
+020092|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|ft|-2|0|10|ft|-2|3
+020095|iceProbability|long|ICE PROBABILITY|Numeric|3|0|10|Numeric|3|4
+020096|iceAgeAParameter|double|ICE AGE ("A" PARAMETER)|dB|2|-4096|13|dB|2|4
+020101|locustAcridianName|table|LOCUST (ACRIDIAN) NAME|CODE TABLE|0|0|4|CODE TABLE|0|2
+020102|locustMaturityColour|table|LOCUST (MATURITY) COLOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+020103|stageOfDevelopmentOfLocusts|table|STAGE OF DEVELOPMENT OF LOCUSTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020104|organizationStateOfSwarm|table|ORGANIZATION STATE OF SWARM OR BAND OF LOCUSTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020105|sizeOfSwarmOrBandOfLocustsAndDurationOfPassageOfSwarm|table|SIZE OF SWARM OR BAND OF LOCUSTS AND DURATION OF PASSAGE OF SWAR|CODE TABLE|0|0|4|CODE TABLE|0|2
+020106|locustPopulationDensity|table|LOCUST POPULATION DENSITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+020107|directionOfMovementsOfLocustSwarm|table|DIRECTION OF MOVEMENTS OF LOCUST SWARM|CODE TABLE|0|0|4|CODE TABLE|0|2
+020108|extentOfVegetation|table|EXTENT OF VEGETATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+021001|horizontalReflectivity|long|HORIZONTAL REFLECTIVITY|dB|0|-64|7|dB|0|3
+021002|verticalReflectivity|long|VERTICAL REFLECTIVITY|dB|0|-64|7|dB|0|3
+021003|differentialReflectivity|double|DIFFERENTIAL REFLECTIVITY|dB|1|-5|7|dB|1|3
+021005|linearDepolarizationRatio|long|LINEAR DEPOLARISATION RATIO|dB|0|-65|6|dB|0|2
+021006|circularDepolarizationRatio|long|CIRCULAR DEPOLARISATION RATIO|dB|0|-65|6|dB|0|2
+021011|dopplerMeanVelocityXDirection|long|DOPPLER MEAN VELOCITY IN X-DIRECTION|m/s|0|-128|8|m/s|0|3
+021012|dopplerMeanVelocityYDirection|long|DOPPLER MEAN VELOCITY IN Y-DIRECTION|m/s|0|-128|8|m/s|0|3
+021013|dopplerMeanVelocityZDirection|long|DOPPLER MEAN VELOCITY IN Z-DIRECTION|m/s|0|-128|8|m/s|0|3
+021014|dopplerMeanVelocityRadial|double|DOPPLER MEAN VELOCITY (RADIAL)|m/s|1|-4096|13|m/s|1|4
+021017|dopplerVelocitySpectralWidth|double|DOPPLER VELOCITY SPECTRAL WIDTH|m/s|1|0|8|m/s|1|3
+021021|echoTops|long|ECHO TOPS|m|-3|0|4|m|-3|2
+021030|signalToNoiseRatio|long|SIGNAL TO NOISE RATIO|dB|0|-32|8|dB|0|3
+021031|verticallyIntegratedLiquidWaterContent|long|VERTICALLY INTEGRATED LIQUID-WATER CONTENT|kg m-2|0|0|7|kg m-2|0|3
+021036|radarRainfallIntensity|double|RADAR RAINFALL INTENSITY|m/s|7|0|12|m/s|7|4
+021041|brightBandHeight|long|BRIGHT-BAND HEIGHT|m|-2|0|8|m|-2|3
+021051|signalPowerAbove1Mw|long|SIGNAL POWER ABOVE 1 MW|dB|0|-256|8|dB|0|3
+021062|backscatter|double|BACKSCATTER|dB|2|-5000|13|dB|2|4
+021063|radiometricResolutionNoiseValue|double|RADIOMETRIC RESOLUTION (NOISE VALUE)|%|1|0|10|%|1|4
+021064|clutterNoiseEstimate|long|CLUTTER NOISE ESTIMATE|Numeric|0|0|8|Numeric|0|3
+021065|missingPacketCounter|long|MISSING PACKET COUNTER|Numeric|0|-127|8|Numeric|0|3
+021066|waveScatterometerProductConfidenceData|flag|WAVE SCATTEROMETER PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+021067|windProductConfidenceData|flag|WIND PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|13|FLAG TABLE|0|5
+021068|radarAltimeterProductConfidenceData|flag|RADAR ALTIMETER PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+021069|sstProductConfidenceData|flag|SST PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|10|FLAG TABLE|0|4
+021070|sstProductConfidenceDataSadist2|flag|SST PRODUCT CONFIDENCE DATA (SADIST-2)|FLAG TABLE|0|0|23|FLAG TABLE|0|6
+021071|peakiness|long|PEAKINESS|Numeric|0|0|16|Numeric|0|5
+021072|satelliteAltimeterCalibrationStatus|flag|SATELLITE ALTIMETER CALIBRATION STATUS|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+021073|satelliteAltimeterInstrumentMode|flag|SATELLLITE ALTIMETER INSTRUMENT MODE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+021075|imageSpectrumIntensity|long|IMAGE SPECTRUM INTENSITY|Numeric|0|0|8|Numeric|0|3
+021076|representationOfIntensities|table|REPRESENTATION OF INTENSITIES|CODE TABLE|0|0|3|CODE TABLE|0|1
+021077|altitudeCorrectionIonosphere|double|ALTITUDE CORRECTION (IONOSPHERE)|m|3|0|14|m|3|5
+021078|altitudeCorrectionDryTroposphere|double|ALTITUDE CORRECTION (DRY TROPOSPHERE)|m|3|0|9|m|3|3
+021079|altitudeCorrectionWetTroposphere|double|ALTITUDE CORRECTION (WET TROPOSPHERE)|m|3|2000|10|m|3|4
+021080|altitudeCorrectionCalibrationConstant|double|ALTITUDE CORRECTION (CALIBRATION CONSTANT)|m|3|0|11|m|3|4
+021081|openLoopCorrectionHeightTimeLoop|double|OPEN LOOP CORRECTION (HEIGHT-TIME LOOP)|m|3|0|10|m|3|4
+021082|openLoopCorrectionAutoGainControl|double|OPEN LOOP CORRECTION (AUTO GAIN CONTROL)|dB|3|-3000|14|dB|3|5
+021083|warmTargetCalibration|long|WARM TARGET CALIBRATION|Numeric|0|0|16|Numeric|0|5
+021084|coldTargetCalibration|long|COLD TARGET CALIBRATION|Numeric|0|0|16|Numeric|0|5
+021085|atsrSeaSurfaceTemperatureAcrossTrackBandNumber|long|ATSR SEA SURFACE TEMPERATURE ACROSS- TRACK BAND NUMBER|Numeric|0|0|4|Numeric|0|2
+021086|numberOfPixelsInNadirOnlyAverage|long|NUMBER OF PIXELS IN NADIR ONLY, AVERAGE|Numeric|0|0|9|Numeric|0|3
+021087|numberOfPixelsInDualViewAverage|long|NUMBER OF PIXELS IN DUAL VIEW, AVERAGE|Numeric|0|0|9|Numeric|0|3
+021088|wetBackscatter|double|WET BACKSCATTER|dB|2|-5000|13|dB|2|4
+021091|radarSignalDopplerSpectrum0thMoment|long|RADAR SIGNAL DOPPLER SPECTRUM 0TH MOMENT|dB|0|-100|8|dB|0|3
+021092|rassSignalDopplerSpectrum0thMomentReferringToRassSignal|long|RASS SIGNAL DOPPLER SPECTRUM 0TH MOMENT, REFERRING TO RASS SIGNA|dB|0|-100|8|dB|0|3
+021093|kuBandPeakiness|long|Ku BAND PEAKINESS|Numeric|3|0|16|Numeric|0|5
+021094|sBandPeakiness|long|S BAND PEAKINESS|Numeric|3|0|16|Numeric|0|5
+021101|numberOfVectorAmbiguities|long|NUMBER OF VECTOR AMBIGUITIES|Numeric|0|0|3|Numeric|0|1
+021102|indexOfSelectedWindVector|long|INDEX OF SELECTED WIND VECTOR|Numeric|0|0|3|Numeric|0|1
+021103|totalNumberOfSigma0Measurements|long|TOTAL NUMBER OF SIGMA-0 MEASUREMENTS|Numeric|0|0|5|Numeric|0|2
+021104|likelihoodComputedForSolution|long|LIKELIHOOD COMPUTED FOR SOLUTION|Numeric|3|-30000|15|Numeric|3|5
+021105|normalizedRadarCrossSection|double|NORMALIZED RADAR CROSS-SECTION|dB|2|-10000|14|dB|2|5
+021106|kpVarianceCoefficientAlpha|long|KP VARIANCE COEFFICIENT (ALPHA)|Numeric|3|0|14|Numeric|3|5
+021107|kpVarianceCoefficientBeta|long|KP VARIANCE COEFFICIENT (BETA)|Numeric|8|0|16|Numeric|8|5
+021109|seawindsWindVectorCellQuality|flag|SEAWINDS WIND VECTOR CELL QUALITY|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021110|numberOfInnerBeamSigma0ForwardOfSatellite|long|NUMBER OF INNER-BEAM SIGMA-0 (FORWARD OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021111|numberOfOuterBeamSigma0ForwardOfSatellite|long|NUMBER OF OUTER-BEAM SIGMA-0 (FORWARD OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021112|numberOfInnerBeamSigma0AftOfSatellite|long|NUMBER OF INNER-BEAM SIGMA-0 (AFT OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021113|numberOfOuterBeamSigma0AftOfSatellite|long|NUMBER OF OUTER-BEAM SIGMA-0 (AFT OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021114|kpVarianceCoefficientGamma|double|KP VARIANCE COEFFICENT (GAMMA)|dB|3|-140000|18|dB|3|6
+021115|seawindsSigma0Quality|flag|SEAWINDS SIGMA-0 QUALITY|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021116|seawindsSigma0Mode|flag|SEAWINDS SIGMA-0 MODE|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021117|sigma0VarianceQualityControl|long|SIGMA-0 VARIANCE QUALITY CONTROL|Numeric|2|0|16|Numeric|2|5
+021118|attenuationCorrectionOnSigma0|double|ATTENUATION CORRECTION ON SIGMA-0|dB|2|-10000|14|dB|2|5
+021119|windScatterometerGeophysicalModelFunction|table|WIND SCATTEROMETER GEOPHYSICAL MODEL FUNCTION|CODE TABLE|0|0|6|CODE TABLE|0|2
+021120|probabilityOfRain|long|PROBABILITY OF RAIN|Numeric|3|0|10|Numeric|3|4
+021121|seawindsNofRainIndex|long|SEAWINDS NOF* RAIN INDEX|Numeric|0|0|8|Numeric|0|3
+021122|attenuationCorrectionOnSigma0FromTb|double|ATTENUATION CORRECTION OF SIGMA-0 (FROM TB)|dB|2|-10000|14|dB|2|5
+021123|seawindsNormalizedRadarCrossSection|double|SEAWINDS NORMALIZED RADAR CROSS SECTION|dB|2|-30000|15|dB|2|5
+021128|numberOfValidPointsPerSecondUsedToDerivePreviousParameters|long|NUMBER OF VALID POINTS PER SECOND USED TO DERIVE PREVIOUS PARAME|Numeric|0|0|8|Numeric|0|3
+021130|spectrumTotalEnergy|long|SPECTRUM TOTAL ENERGY|Numeric|6|0|28|Numeric|6|9
+021131|spectrumMaxEnergy|long|SPECTRUM MAX ENERGY|Numeric|6|0|28|Numeric|6|9
+021132|directionOfSpectrumMaxOnHigherResolutionGrid|double|DIRECTION OF SPECTRUM MAX ON HIGHER RESOLUTION GRID|deg|3|0|19|deg|3|6
+021133|wavelengthOfSpectrumMaxOnHigherResolutionGrid|double|WAVE-LENGTH OF SPECTRUM MAX ON HIGHER RESOLUTION GRID|m|3|0|29|m|3|9
+021134|rangeResolutionOfCressCovarianceSpectrum|double|RANGE RESOLUTION OF CRESS COVARIANCE SPECTRUM|rad/m|3|0|19|rad/m|3|6
+021135|realPartOfCrossSpectraPolarGridNumberOfBins|long|REAL PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS|Numeric|3|-524288|20|Numeric|3|7
+021136|imaginaryPartOfCrossSpectraPolarGridNumberOfBins|long|IMAGINARY PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS|Numeric|3|-524288|20|Numeric|3|7
+021137|kuBandCorrectedOceanBackscatterCoefficient|double|KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021138|stdKuBandCorrectedOceanBackscatterCoefficient|double|STD KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021139|kuBandNetInstrumentalCorrectionForAgc|double|KU BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|dB|2|4
+021140|sBandCorrectedOceanBackscatterCoefficient|double|S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021141|stdSBandCorrectedOceanBackscatterCoefficient|double|STD S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021142|sBandNetInstrumentalCorrectionForAgc|double|S BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-1024|11|dB|2|4
+021143|kuBandRainAttenuation|double|KU BAND RAIN ATTENUATION|dB|2|-1073741824|31|dB|2|10
+021144|altimeterRainFlag|flag|ALTIMETER RAIN FLAG|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+021145|kuBandAutomaticGainControl|double|KU BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|NA|0|0
+021146|rmsKuBandAutomaticGainControl|double|RMS KU BAND AUTOMATIC GAIN CONTROL|dB|2|0|8|NA|0|0
+021147|numberOfValidPointsForKuBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR KU BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|5|NA|0|0
+021150|beamCollocation|table|BEAM COLLOCATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+021151|estimatedErrorInSigma0At40DegreesIncidenceAngle|double|ESTIMATED ERROR IN SIGMA0 AT 40DEG INCIDENCE ANGLE|dB|2|0|9|dB|2|3
+021152|slopeAt40DegreesIncidenceAngle|double|SLOPE AT 40DEG INCIDENCE ANGLE|dB/deg|2|-80|7|dB/deg|2|3
+021153|estimatedErrorInSlopeAt40DegreesIncidenceAngle|double|ESTIMATED ERROR IN SLOPE AT 40DEG INCIDENCE ANGLE|dB/deg|2|-40|6|dB/deg|2|3
+021154|soilMoistureSensitivity|double|SOIL MOISTURE SENSITIVITY|dB|2|0|12|dB|2|4
+021155|windVectorCellQuality|flag|WIND VECTOR CELL QUALITY|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+021156|backscatterDistance|long|BACKSCATTER DISTANCE|Numeric|1|-4096|13|Numeric|1|4
+021157|lossPerUnitLengthOfAtmosphere|double|LOSS PER UNIT LENGTH OF ATMOSPHERE USED|dB/m|10|0|22|dB/m|10|7
+021158|ascatKpEstimateQuality|table|ASCAT kp ESTIMATE QUALITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+021159|ascatSigma0Usability|table|ASCAT SIGMA-0 USABILITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+021160|ascatUseOfSyntheticData|long|ASCAT USE OF SYNTHETIC DATA|Numeric|3|0|10|Numeric|3|4
+021161|ascatSyntheticDataQuantity|long|ASCAT SYNTHETIC DATA QUALITY|Numeric|3|0|10|Numeric|3|4
+021162|ascatSatelliteOrbitAndAttitudeQuality|long|ASCAT SATELLITE ORBIT AND ATTITUDE QUALITY|Numeric|3|0|10|Numeric|3|4
+021163|ascatSolarArrayReflectionContamination|long|ASCAT SOLAR ARRAY REFLECTION CONTAMINATION|Numeric|3|0|10|Numeric|3|4
+021164|ascatTelemetryPresenceAndQuality|long|ASCAT TELEMETRY PRESENCE AND QUALITY|Numeric|3|0|10|Numeric|3|4
+021165|ascatExtrapolatedReferenceFunctionPresence|long|ASCAT EXTRAPOLATED REFERENCE FUNCTION PRESENCE|Numeric|3|0|10|Numeric|3|4
+021166|landFraction|long|ASCAT LAND FRACTION|Numeric|3|0|10|Numeric|3|4
+021169|icePresenceIndicator|table|ICE PRESENCE INDICATOR|CODE TABLE|0|0|2|NA|0|0
+021170|cBandCorrectedOceanBackscatterCoefficient|double|C BAND CORRECTED OCEAN BACKSCATTER COEFICIENT|dB|2|-32768|16|NA|0|0
+021171|rmsCBandCorrectedOceanBackscatterCoefficient|double|RMS C BAND CORRECTED OCEAN BACKSCATTER COEFICIENT|dB|2|-32768|16|NA|0|0
+021172|cBandNetInstrumentalCorrectionForAgc|double|C BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|NA|0|0
+021173|cBandAutomaticGainControl|double|C BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|NA|0|0
+021174|rmsCBandAutomaticGainControl|double|RMS C BAND AUTOMATIC GAIN CONTROL|dB|2|0|9|NA|0|0
+021175|numberOfValidPointsForCBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR C BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|10|NA|0|0
+022001|wavesDirection|long|DIRECTION OF WAVES|deg|0|0|9|deg|0|3
+022002|windWavesDirection|long|DIRECTION OF WIND WAVES|deg|0|0|9|deg|0|3
+022003|swellWavesDirection|long|DIRECTION OF SWELL WAVES|deg|0|0|9|deg|0|3
+022004|currentDirection|long|DIRECTION OF CURRENT|deg|0|0|9|deg|0|3
+022005|seaSurfaceCurrentDirection|long|DIRECTION OF SEA SURFACE CURRENT|deg|0|0|9|deg|0|3
+022011|periodOfWaves|long|PERIOD OF WAVES|s|0|0|6|s|0|2
+022012|periodOfWindWaves|long|PERIOD OF WIND WAVES|s|0|0|6|s|0|2
+022013|periodOfSwellWaves|long|PERIOD OF SWELL WAVES|s|0|0|6|s|0|2
+022021|heightOfWaves|double|HEIGHT OF WAVES|m|1|0|10|m|1|4
+022022|heightOfWindWaves|double|HEIGHT OF WIND WAVES|m|1|0|10|m|1|4
+022023|heightOfSwellWaves|double|HEIGHT OF SWELL WAVES|m|1|0|10|m|1|4
+022025|standardDeviationWaveHeight|double|STANDARD DEVIATION WAVE HEIGHT|m|2|0|10|m|2|4
+022026|standardDeviationOfSignificantWaveHeight|double|STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT|m|2|0|10|m|2|4
+022031|speedOfCurrent|double|SPEED OF CURRENT|m/s|2|0|13|m/s|2|4
+022032|speedOfSeaSurfaceCurrent|double|SPEED OF SEA SURFACE CURRENT|m/s|2|0|13|m/s|2|4
+022035|tidalElevationWithRespectToLocalChartDatum|double|TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM|m|2|0|14|m|2|4
+022036|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|2|0|14|m|2|4
+022037|tidalElevationWithRespectToNationalLandDatum|double|TIDAL ELEVATION WITH RESPECT TO NATIONAL LAND DATUM|m|3|-10000|15|m|3|5
+022038|tidalElevationWithRespectToLocalChartDatum|double|TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM|m|3|-10000|15|m|3|5
+022039|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|3|-5000|12|m|3|4
+022040|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|3|-5000|14|m|3|5
+022041|seaSurfaceTemperature15DayRunningMean|double|SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN)|K|1|0|12|K|1|4
+022042|waterTemperature|double|SEA/WATER TEMPERATURE|K|1|0|12|K|1|4
+022043|waterTemperature|double|SEA/WATER TEMPERATURE|K|2|0|15|K|2|5
+022044|soundVelocity|double|SOUND VELOCITY|m/s|1|0|14|m/s|1|5
+022045|waterTemperature|double|SEA/WATER TEMPERATURE|K|3|0|19|K|3|6
+022049|seaSurfaceTemperature|double|SEA SURFACE TEMPERATURE|K|2|0|15|K|2|5
+022050|standardDeviationSeaSurfaceTemperature|double|STANDARD DEVIATION SEA-SURFACE TEMPERATURE|K|2|0|8|K|2|3
+022055|floatCycleNumber|long|FLOAT CYCLE NUMBER|Numeric|0|0|10|Numeric|0|3
+022056|directionOfProfile|table|DIRECTION OF PROFILE|CODE TABLE|0|0|2|CODE TABLE|0|1
+022059|seaSurfaceSalinity|double|SEA SURFACE SALINITY|0/00|2|0|14|0/00|2|5
+022060|lagrangianDrifterDrogueStatus|table|LAGRANGIAN DRIFTER DROGUE STATUS|CODE TABLE|0|0|3|CODE TABLE|0|1
+022061|seaState|table|STATE OF THE SEA|CODE TABLE|0|0|4|CODE TABLE|0|2
+022062|salinity|double|SALINITY|0/00|2|0|14|0/00|2|5
+022063|totalWaterDepth|long|TOTAL WATER DEPTH|m|0|0|14|m|0|5
+022064|salinity|double|SALINITY|0/00|3|0|17|0/00|3|6
+022065|waterPressure|long|WATER PRESSURE|Pa|-3|0|17|Pa|-3|6
+022066|waterConductivity|double|WATER CONDUCTIVITY|S/m|6|0|26|S/m|6|8
+022067|instrumentTypeForWaterTemperatureOrSalinityProfileMeasurement|table|INSTRUMENT TYPE FOR WATER TEMPERATURE PROFILE MEASUREMENT|CODE TABLE|0|0|10|CODE TABLE|0|4
+022068|waterTemperatureProfileRecorderTypes|table|WATER TEMPERATURE PROFILE RECORDER TYPES|CODE TABLE|0|0|7|CODE TABLE|0|3
+022069|spectralWaveDensity|double|SPECTRAL WAVE DENSITY|m2/Hz|3|0|22|m2/Hz|3|7
+022070|significantWaveHeight|double|SIGNIFICANT WAVE HEIGHT|m|2|0|13|m|2|4
+022071|spectralPeakWavePeriod|double|SPECTRAL PEAK WAVE PERIOD|s|1|0|9|s|1|3
+022072|spectralPeakWaveLength|long|SPECTRAL PEAK WAVE LENGTH|m|0|0|13|m|0|4
+022073|maximumWaveHeight|double|MAXIMUM WAVE HEIGHT|m|2|0|13|m|2|4
+022074|averageWavePeriod|double|AVERAGE WAVE PERIOD|s|1|0|9|s|1|3
+022075|averageWaveLength|long|AVERAGE WAVE LENGTH|m|0|0|13|m|0|4
+022076|directionFromWhichDominantWavesAreComing|long|DIRECTION FROM WHICH DOMINANT WAVES ARE COMING|deg|0|0|9|deg|0|3
+022077|directionalSpreadOfDominantWave|long|DIRECTIONAL SPREAD OF DOMINANT WAVE|deg|0|0|9|deg|0|3
+022078|durationOfWaveRecord|long|DURATION OF WAVE RECORD|s|0|0|12|s|0|4
+022079|lengthOfWaveRecord|long|LENGTH OF WAVE RECORD|m|0|0|16|m|0|5
+022080|wavebandCentralFrequency|double|WAVEBAND CENTRAL FREQUENCY|Hz|3|0|10|Hz|3|4
+022081|wavebandCentralWaveNumber|double|WAVEBAND CENTRAL WAVE NUMBER|/m|5|0|13|/m|5|4
+022082|maximumNonDirectionalSpectralWaveDensity|double|MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY|m2 s|2|0|20|m2 s|2|7
+022083|maximumNonDirectionalSpectralWaveNumber|double|MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE NUMBER|m3|2|0|20|m3|2|7
+022084|bandContainingMaximumNonDirectionalSpectralWaveDensity|long|BAND CONTAINING MAXIMUM NON- DIRECTIONAL SPECTRAL WAVE DENSITY|Numeric|0|0|7|Numeric|0|3
+022085|spectralWaveDensityRatio|long|SPECTRAL WAVE DENSITY RATIO|Numeric|0|0|7|Numeric|0|3
+022086|meanDirectionFromWhichWavesAreComing|long|MEAN DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3
+022087|principalDirectionFromWhichWavesAreComing|long|PRINCIPAL DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3
+022088|firstNormalizedPolarCoordinateFromFourierCoefficients|long|FIRST NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS|Numeric|2|0|7|Numeric|2|3
+022089|secondNormalizedPolarCoordinateFromFourierCoefficients|long|SECOND NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS|Numeric|2|0|7|Numeric|2|3
+022090|nonDirectionalSpectralEstimateByWaveFrequency|double|NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY|m2 s|2|0|20|m2 s|2|7
+022091|nonDirectionalSpectralEstimateByWaveNumber|double|NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER|m3|2|0|20|m3|2|7
+022092|directionalSpectralEstimateByWaveFrequency|double|DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY|m2 rad-1 s|2|0|20|m2 rad-1 s|2|7
+022093|directionalSpectralEstimateByWaveNumber|double|DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER|m4|2|0|20|m4|2|7
+022094|totalNumberOfWaveBands|long|TOTAL NUMBER OF WAVE BANDS|Numeric|0|0|7|Numeric|0|3
+022095|directionalSpreadOfIndividualWaves|long|DIRECTIONAL SPREAD OF INDIVIDUAL WAVES|deg|0|0|8|deg|0|3
+022096|spectralBandWidth|double|SPECTRAL BAND WIDTH|/s|3|0|4|/s|3|2
+022097|meanWavelength731MOfImageSpectrumAtLowWaveNumbers|long|MEAN WAVELENGTH > 731 M OF IMAGE SPECTRUM AT LOW WAVE NUMBERS|m|0|0|14|m|0|5
+022098|wavelengthSpreadWavelength731MAtLowWaveNumbers|long|WAVELENGTH SPREAD (WAVELENGTH > 731 M) AT LOW WAVE NUMBERS|m|0|0|14|m|0|5
+022099|meanDirectionAtLowWaveNumbersWavelength731M|long|MEAN DIRECTION AT LOW WAVE NUMBERS (WAVELENGTH > 731 M)|deg|0|0|9|deg|0|3
+022100|directionSpreadAtLowWaveNumbersWavelength731M|long|DIRECTION SPREAD AT LOW WAVE NUMBERS(WAVELENGTH > 731 M)|deg|0|0|9|deg|0|3
+022101|totalEnergyWavelength731mAtLowWaveNumbers|long|TOTAL ENERGY (WAVELENGTH > 731M) AT LOW WAVE NUMBERS|Numeric|0|0|31|Numeric|0|10
+022120|tideStationAutomatedWaterLevelCheck|table|TIDE STATION AUTOMATED WATER LEVEL CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022121|tideStationManualWaterLevelCheck|table|TIDE STATION MANUAL WATER LEVEL CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022122|automatedMeteorologicalDataCheck|table|TIDE STATION AUTOMATED METEOROLOGICAL DATA CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022123|tideStationManualMeteorologicalDataCheck|table|TIDE STATION MANUAL METEOROLOGICAL DATA CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022141|seaSurfaceTemperature15DayRunningMean|double|SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN)|K|2|0|15|K|2|5
+022150|numberOf18HzValidPointsForKuBand|long|NUMBER OF 18 HZ VALID POINTS FOR KU BAND|Numeric|0|0|10|Numeric|0|4
+022151|kuBandOceanRange|double|KU BAND OCEAN RANGE|m|3|0|31|m|3|10
+022152|stdOf18HzKuBandOceanRange|double|STD OF 18 HZ KU BAND OCEAN RANGE|m|3|0|16|m|3|5
+022153|numberOf18HzValidPointsForSBand|long|NUMBER OF 18 HZ VALID POINTS FOR S BAND|Numeric|0|0|10|Numeric|0|4
+022154|sBandOceanRange|double|S BAND OCEAN RANGE|m|3|0|31|m|3|10
+022155|stdOf18HzSBandOceanRange|double|STD OF 18 HZ S BAND OCEAN RANGE|m|3|0|16|m|3|5
+022156|kuBandSignificantWaveHeight|double|KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022157|stdOf18HzKuBandOceanRange|double|STD 18HZ KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022158|sBandSignificantWaveHeight|double|S BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022159|stdOf18HzSBandSignificantWaveHeight|double|STD 18HZ S BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022160|normalizedInverseWaveAge|long|NORMALIZED INVERSE WAVE AGE|Numeric|6|0|21|Numeric|6|7
+022161|waveSpectra|double|WAVE SPECTRA|m4|4|0|27|m4|4|9
+022162|rmsOf20HzKuBandOceanRange|double|RMS OF 20Hz KU BAND OCEAN RANGE|m|3|0|16|NA|0|0
+022163|numberOf20HzValidPointsForKuBand|long|NUMBER OF 20Hz VALID POINTS FOR KU BAND|Numeric|0|0|10|NA|0|0
+022164|rms20HzKuBandSignificantWaveHeight|double|RMS 20Hz KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|NA|0|0
+022165|numberOf20HzValidPointsForKuBandSignificantWaveHeight|long|NUMBER OF 20Hz VALID POINTS FOR KU BAND SIGNIFICANT WAVE HEIGHT|Numeric|0|0|10|NA|0|0
+022166|kuBandNetInstrumentalCorrectionForSignificantWaveHeight|double|KU BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|NA|0|0
+022167|numberOfValidPointsForKuBandBackscatter|long|NUMBER OF VALID POINTS FOR KU BAND BACKSCATTER|Numeric|0|0|10|NA|0|0
+022168|cBandOceanRange|double|C BAND OCEAN RANGE|m|3|0|31|NA|0|0
+022169|rmsOfCBandOceanRange|double|RMS OF C BAND OCEAN RANGE|m|3|0|16|NA|0|0
+022170|numberOf20HzValidPointsForCBand|long|NUMBER OF 20Hz VALID POINTS FOR C BAND|Numeric|0|0|10|NA|0|0
+022171|cBandSignificantWaveHeight|double|C BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|NA|0|0
+022172|rms20HzCBandSignificantWaveHeight|double|RMS 20Hz C BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|NA|0|0
+022173|numberOf20HzValidPointsForCBandSignificantWaveHeight|long|NUMBER OF 20Hz VALID POINTS FOR C BAND|Numeric|0|0|10|NA|0|0
+022174|cBandNetInstrumentalCorrectionForSignificantWaveHeight|double|C BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|NA|0|0
+022175|numberOfValidPointsForCBandBackscatter|long|NUMBER OF VALID POINTS FOR C BAND BACKSCATTER|Numeric|0|0|10|NA|0|0
+022186|directionFromWhichWavesAreComing|long|DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|NA|0|0
+022187|directionalSpreadOfWaves|long|DIRECTIONAL SPREAD OF WAVES|deg|0|0|9|NA|0|0
+022191|spectralDensity|double|SPECTRAL DENSITY|m2 rad-1 s|2|0|20|NA|0|0
+023001|accidentEarlyNotificationArticleApplicable|table|ACCIDENT EARLY NOTIFICATION ARTICLE APPLICABLE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023002|facilityInvolvedInIncident|table|ACTIVITY OR FACILITY INVOLVED IN INCIDENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+023003|releaseType|table|TYPE OF RELEASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023004|countermeasuresTakenNearBorder|table|COUNTERMEASURES TAKEN NEAR BORDER|CODE TABLE|0|0|3|CODE TABLE|0|1
+023005|causeOfIncident|table|CAUSE OF INCIDENT|CODE TABLE|0|0|2|CODE TABLE|0|1
+023006|incidentSituation|table|INCIDENT SITUATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+023007|characteristicsOfRelease|table|CHARACTERISTICS OF RELEASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023008|stateOfCurrentRelease|table|STATE OF CURRENT RELEASE|CODE TABLE|0|0|2|CODE TABLE|0|1
+023009|stateOfExpectedRelease|table|STATE OF EXPECTED RELEASE|CODE TABLE|0|0|2|CODE TABLE|0|1
+023016|possibilityOfSignificantChemicalToxicHealthEffect|table|POSSIBILITY OF SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT|CODE TABLE|0|0|2|CODE TABLE|0|1
+023017|flowDischargeOfMajorRecipient|double|FLOW DISCHARGE OF MAJOR RECIPIENT|m3/s|6|0|20|m3/s|6|7
+023018|releaseBehaviourOverTime|table|RELEASE BEHAVIOUR OVER TIME|CODE TABLE|0|0|3|CODE TABLE|0|1
+023019|actualReleaseHeight|long|ACTUAL RELEASE HEIGHT|m|0|-15000|17|m|0|6
+023021|effectiveReleaseHeight|long|EFFECTIVE RELEASE HEIGHT|m|0|-15000|17|m|0|6
+023022|distanceOfReleasePointOrSiteOfIncident|long|DISTANCE OF RELEASE POINT OR SITE OF INCIDENT|m|0|0|24|m|0|8
+023023|mainTransportSpeedInAtmosphere|double|MAIN TRANSPORT SPEED IN THE ATMOSPHERE|m/s|1|0|12|m/s|1|4
+023024|mainTransportSpeedInWater|double|MAIN TRANSPORT SPEED IN WATER|m/s|2|0|13|m/s|2|4
+023025|mainTransportSpeedInGroundWater|double|MAIN TRANSPORT SPEED IN GROUND WATER|m/s|2|0|13|m/s|2|4
+023027|mainTransportDirectionInTheAtmosphere|long|MAIN TRANSPORT DIRECTION IN THE ATMOSPHERE|deg|0|0|9|deg|0|3
+023028|mainTransportDirectionInWater|long|MAIN TRANSPORT DIRECTION IN WATER|deg|0|0|9|deg|0|3
+023029|mainTransportDirectionInGroundWater|long|MAIN TRANSPORT DIRECTION IN GROUND WATER|deg|0|0|9|deg|0|3
+023031|possibilityPlume|table|POSSIBILITY THAT PLUME WILL ENCOUNTER PRECIPITATION IN STATE IN|CODE TABLE|0|0|2|CODE TABLE|0|1
+023032|plumeWillEncounterChangeInWindDirectionAndOrOrSpeedFlag|table|PLUME WILL ENCOUNTER CHANGE IN WIND DIRECTION AND/OR SPEED FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+024001|estimateOfAmountOfRadioactivityReleasedUpToSpecifiedTime|long|ESTIMATE OF AMOUNT OF RADIOACTIVITY RELEASED UP TO SPECIFIED TIM|Bq|-11|0|28|Bq|-11|9
+024002|estimatedMaximumPotentialRelease|long|ESTIMATED MAXIMUM POTENTIAL RELEASE|Bq|-11|0|28|Bq|-11|9
+024003|compositionOfRelease|table|COMPOSITION OF RELEASE|CODE TABLE|0|0|5|CODE TABLE|0|2
+024004|elementName|string|ELEMENT NAME|CCITT IA5|0|0|16|Character|0|2
+024005|isotopeMass|long|ISOTOPE MASS|Numeric|0|0|9|Numeric|0|3
+024011|dose|double|DOSE|mSv|2|0|32|mSv|2|10
+024012|trajectoryDoseDefinedLocationAndExpectedTimeOfArrival|double|TRAJECTORY DOSE (DEFINED LOCATION AND EXPECTED TIME OF ARRIVAL)|mSv|2|0|32|mSv|2|10
+024013|gammaDoseInAirAlongMainTransportPathDefinedLocationAndTimePeriod|double|GAMMA DOSE IN AIR ALONG THE MAIN TRANSPORT PATH (DEFINED LOCATIO|mSv|2|0|32|mSv|2|10
+024021|airConcentrationOfNamedIsotopeTypeIncludingGrossBeta|double|AIR CONCENTRATION (OF NAMED ISOTOPE TYPE INCLUDING GROSS BETA)|Bq m-3|2|0|32|Bq m-3|2|10
+024022|concentrationInPrecipitationOfNamedIsotopeType|double|CONCENTRATION IN PRECIPITATION (OF NAMES ISOTOPE TYPE)|Bq/l|2|0|32|Bq/l|2|10
+024023|pulseRateOfBetaRadiation|double|PULSE RATE OF BETA RADIATION|/s|1|0|14|/s|1|4
+024024|pulseRateOfGammaRadiation|double|PULSE RATE OF GAMMA RADIATION|/s|1|0|14|/s|1|4
+025001|rangeGateLength|long|RANGE-GATE LENGTH|m|-1|0|6|m|-1|2
+025002|numberOfGatesAveraged|long|NUMBER OF GATES AVERAGED|Numeric|0|0|4|Numeric|0|2
+025003|numberOfIntegratedPulses|long|NUMBER OF INTEGRATED PULSES|Numeric|0|0|8|Numeric|0|3
+025004|echoProcessing|table|ECHO PROCESSING|CODE TABLE|0|0|2|CODE TABLE|0|1
+025005|echoIntegration|table|ECHO INTEGRATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025006|zToRConversion|table|Z TO R CONVERSION|CODE TABLE|0|0|3|CODE TABLE|0|1
+025007|zToRConversionFactor|long|Z TO R CONVERSION FACTOR|Numeric|0|0|12|Numeric|0|4
+025008|zToRConversionExponent|long|Z TO R CONVERSION EXPONENT|Numeric|2|0|9|Numeric|2|3
+025009|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025010|clutterTreatment|table|CLUTTER TREATMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+025011|groundOccultationCorrectionScreening|table|GROUND OCCULTATION CORRECTION (SCREENING)|CODE TABLE|0|0|2|CODE TABLE|0|1
+025012|rangeAttenuationCorrection|table|RANGE ATTENUATION CORRECTION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025013|brightBandCorrection|flag|BRIGHT-BAND CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025014|azimuthClutterCutOff|long|AZIMUTH CLUTTER CUT-OFF (SEE NOTE 1)|Numeric|0|0|12|Numeric|0|4
+025015|radomeAttenuationCorrection|flag|RADOME ATTENUATION CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025016|clearAirAttenuationCorrection|double|CLEAR-AIR ATTENUATION CORRECTION|dB/m|5|0|6|dB/m|5|2
+025017|precipitationAttenuationCorrection|flag|PRECIPITATION ATTENUATION CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025018|aToZLawForAttenuationFactor|long|A TO Z LAW FOR ATTENUATION FACTOR|Numeric|7|0|6|Numeric|7|2
+025019|aToZLawForAttenuationExponent|long|A TO Z LAW FOR ATTENUATION EXPONENT|Numeric|2|0|7|Numeric|2|3
+025020|meanSpeedEstimation|table|MEAN SPEED ESTIMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025021|windComputationEnhancement|flag|WIND COMPUTATION ENHANCEMENT|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025025|batteryVoltage|double|BATTERY VOLTAGE|V|1|0|9|V|1|3
+025026|batteryVoltageLargeRange|double|BATTERY VOLTAGE (LARGE RANGE)|V|1|0|12|V|1|4
+025028|operatorOrManufacturerDefinedParameter|long|OPERATOR OR MANUFACTURER DEFINED PARAMETER|Numeric|1|-16384|15|Numeric|1|5
+025029|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+025030|runningMeanSeaSurfaceTemperatureUsage|table|RUNNING MEAN SEA-SURFACE TEMPERATURE USAGE|CODE TABLE|0|0|2|CODE TABLE|0|1
+025032|windProfilerModeInformation|table|WIND PROFILER MODE INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025033|windProfilerSubmodeInformation|table|WIND PROFILER SUBMODE INFORMATION*|CODE TABLE|0|0|2|CODE TABLE|0|1
+025034|windProfilerQualityControlTestResults|flag|WIND PROFILER QUALITY CONTROL TEST RESULTS*|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025036|atmosphericsLocationMethod|table|ATMOSPHERICS LOCATION METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+025040|co2WindProductDerivation|table|CO2 WIND PRODUCT DERIVATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+025041|movingPlatformDirectionReportingMethod|table|MOVING PLATFORM DIRECTION REPORTING METHOD|CODE TABLE|0|0|2|CODE TABLE|0|1
+025042|movingPlatformSpeedReportingMethod|table|MOVING PLATFORM SPEED REPORTING METHOD|CODE TABLE|0|0|2|CODE TABLE|0|1
+025043|waveSamplingIntervalTime|double|WAVE SAMPLING INTERVAL (TIME)|s|4|0|15|s|4|5
+025044|waveSamplingIntervalSpace|double|WAVE SAMPLING INTERVAL (SPACE)|m|2|0|14|m|2|5
+025045|hirsChannelCombination|flag|HIRS CHANNEL COMBINATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+025046|msuChannelCombination|flag|MSU CHANNEL COMBINATION|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+025047|ssuChannelCombination|flag|SSU CHANNEL COMBINATION|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025048|amsuAChannelCombination|flag|AMSU-A CHANNEL COMBINATION|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+025049|amsuBChannelCombination|flag|AMSU-B CHANNEL COMBINATION|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+025050|principalComponentScore|long|PRINCIPAL COMPONENT SCORE|Numeric|4|-131072|18|Numeric|4|6
+025051|avhrrChannelCombination|flag|AVHRR CHANNEL COMBINATION|FLAG TABLE|0|0|7|FLAG TABLE|0|3
+025052|log10OfPrincipalComponentsNormalizedFitToData|long|LOG-10 OF PRINCIPAL COMPONENTS NORMALIZED FIT TO DATA|Numeric|4|0|15|Numeric|4|5
+025053|observationQuality|flag|OBSERVATION QUALITY|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+025054|ssmisSubframeIdNumber|long|SSMIS SUBFRAME ID NEMBER|Numeric|0|0|5|Numeric|0|2
+025055|multiplexerHousekeeping|double|MULTIPLEXER HOUSEKEEPING|K|2|0|16|K|2|5
+025060|softwareIdentification|long|SOFTWARE IDENTIFICATION (SEE NOTE 2)|Numeric|0|0|14|Numeric|0|5
+025061|softwareVersionNumber|string|SOFTWARE IDENTIFICATION AND VERSION NUMBER|CCITT IA5|0|0|96|Character|0|12
+025062|databaseIdentification|long|DATABASE IDENTIFICATION|Numeric|0|0|14|Numeric|0|5
+025065|orientationCorrectionAzimuth|double|ORIENTATION CORRECTION (AZIMUTH)|deg|2|-1000|11|deg|2|4
+025066|orientationCorrectionElevation|double|ORIENTATION CORRECTION (ELEVATION)|deg|2|-1000|11|deg|2|4
+025067|radiosondeReleasePointPressureCorrection|long|RADIOSONDE RELEASE POINT PRESSURE CORRECTION|Pa|0|-8000|14|Pa|0|4
+025068|numberOfArchiveRecomputes|long|NUMBER OF ARCHIVE RECOMPUTES|Numeric|0|0|7|Numeric|0|3
+025069|flightLevelPressureCorrections|flag|FLIGHT LEVEL PRESSURE CORRECTIONS|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025070|majorFrameCount|long|MAJOR FRAME COUNT|Numeric|0|0|4|Numeric|0|2
+025071|frameCount|long|FRAME COUNT|Numeric|0|0|5|Numeric|0|2
+025075|satelliteAntennaCorrectionsVersionNumber|long|SATELLITE ANTENNA CORRECTIONS VERSION NUMBER|Numeric|0|0|5|Numeric|0|2
+025076|log10OfTemperatureRadianceCentralWaveNumberForAtovs|double|LOG-10 OF (TEMPERATURE-RADIANCE CENTRAL WAVENUMBER) FOR ATOVS|log (m-1)|8|0|30|log (m-1)|8|10
+025077|bandwidthCorrectionCoefficient1ForAtovs|long|BANDWIDTH CORRECTION COEFFICIENT 1 FOR ATOVS|Numeric|5|-100000|18|Numeric|5|7
+025078|bandwidthCorrectionCoefficient2ForAtovs|long|BANDWIDTH CORRECTION COEFFICIENT 2 FOR ATOVS|Numeric|5|0|17|Numeric|5|6
+025079|albedoRadianceSolarFilteredIrradianceForAtovs|double|ALBEDO-RADIANCE SOLAR FILTERED IRRADIANCE FOR ATOVS|W m-2|4|0|24|W m-2|4|8
+025080|albedoRadianceEquivalentFilterWidthForAtovs|double|ALBEDO-RADIANCE EQUIVALENT FILTER WIDTH FOR ATOVS|m|10|0|14|m|10|5
+025081|incidenceAngle|double|INCIDENCE ANGLE|deg|3|0|17|deg|3|6
+025082|azimuthAngle|double|AZIMUTH ANGLE|deg|3|0|19|deg|3|6
+025083|faradayRotationalAngle|double|FARADEY ROTATIONAL ANGLE|deg|3|0|19|deg|3|6
+025084|geometricRotationalAngle|double|GEOMETRIC ROTATIONAL ANGLE|deg|5|0|26|deg|5|8
+025085|fractionOfClearPixelsInHirsFov|long|FRACTION OF CLEAR PIXELS IN HIRS FOV|Numeric|0|0|7|Numeric|0|3
+025086|depthCorrectionIndicator|table|DEPTH CORRECTION INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+025090|orbitStateFlag|table|ORBIT STATE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+025091|structureConstantOfRefractionIndexCn2|double|STRUCTURE CONSTANT OF THE REFRACTION INDEX (CN2)|dB|3|-18192|13|dB|3|5
+025092|acousticPropagationVelocity|double|ACOUSTIC PROPAGATION VELOCITY|m/s|2|28000|14|m/s|2|5
+025093|rassComputationCorrection|flag|RASS COMPUTATION CORRECTION|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025095|altimeterStateFlag|flag|ALTIMETER STATE FLAG|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025096|radiometerStateFlag|flag|RADIOMETER STATE FLAG|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+025097|threeDimensionalErrorEstimateOfNavigatorOrbit|table|THREE DIMENSIONAL ERROR ESTIMATE OF THE NAVIGATOR ORBIT|CODE TABLE|0|0|4|CODE TABLE|0|2
+025098|altimeterDataQualityFlag|flag|ALTIMETER DATA QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025099|altimeterCorrectionQualityFlag|flag|ALTIMETER CORRECTION QUALITY|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025100|xbtOrXctdFallRateEquationCoefficientA|long|XBT/XCTD FALL RATE EQUATION COEFFICIENT A|Numeric|5|0|20|Numeric|5|6
+025101|xbtOrXctdFallRateEquationCoefficientB|long|XBT/XCTD FALL RATE EQUATION COEFFICIENT B|Numeric|5|-500000|21|Numeric|5|6
+025102|numberOfMissingLinesExcludingDataGaps|long|NUMBER OF MISSING LINES EXCLUDING DATA GAPS|Numeric|0|0|8|Numeric|0|3
+025103|numberOfDirectionalBins|long|NUMBER OF DIRECTIONAL BINS|Numeric|0|0|8|Numeric|0|3
+025104|numberOfWavelengthBins|long|NUMBER OF WAVE-LENGTH BINS|Numeric|0|0|8|Numeric|0|3
+025105|firstDirectionalBin|double|FIRST DIRECTIONAL BIN|deg|3|0|19|NA|0|0
+025106|directionalBinStep|double|DIRECTIONAL BIN STEP|deg|3|0|19|NA|0|0
+025107|firstWavelengthBin|double|FIRST WAVE-LENGTH BIN|m|3|0|29|m|3|9
+025108|lastWavelengthBin|double|LAST WAVE-LENGTH BIN|m|3|0|29|m|3|9
+025110|imageProcessingSummary|flag|IMAGE PROCESSING SUMMARY|FLAG TABLE|0|0|10|NA|0|0
+025111|numberOfInputDataGaps|long|NUMBER OF INPUT DATA GAPS|Numeric|0|0|8|Numeric|0|3
+025120|ra2L2ProcessingFlag|table|RA2-L2-PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025121|ra2L2ProcessingQuality|long|RA2-L2-PROCESSING QUALITY|%|0|0|7|%|0|3
+025122|hardwareConfigurationForRf|table|HARDWARE CONFIGURATION FOR RF|CODE TABLE|0|0|2|CODE TABLE|0|1
+025123|hardwareConfigurationForHpa|table|HARDWARE CONFIGURATION FOR HPA|CODE TABLE|0|0|2|CODE TABLE|0|1
+025124|mwrL2ProcessingFlag|table|MWR L2 PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025125|mwrL2ProcessingQuality|long|MWR L2-PROCESSING QUALITY|%|0|0|7|%|0|3
+025126|modelDryTroposphericCorrection|double|MODEL DRY TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025127|invertedBarometerCorrection|double|INVERTED BAROMETER CORRECTION|m|3|-32768|16|m|3|5
+025128|modelWetTroposphericCorrection|double|MODEL WET TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025129|mwrDerivedWetTroposphericCorrection|double|MWR DERIVED WET TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025130|ra2IonosphericCorrectionOnKuBand|double|RA2 IONOSPHERIC CORRECTION ON KU BAND|m|3|-32768|16|m|3|5
+025131|ionosphericCorrectionFromDorisOnKuBand|double|IONOSPHERIC CORRECTION FROM DORIS ON KU BAND|m|3|-32768|16|m|3|5
+025132|ionosphericCorrectionFromModelOnKuBand|double|IONOSPHERIC CORRECTION FROM MODEL ON KU BAND|m|3|-32768|16|m|3|5
+025133|seaStateBiasCorrectionOnKuBand|double|SEA STATE BIAS CORRECTION ON KU BAND|m|3|-32768|16|m|3|5
+025134|ra2IonosphericCorrectionOnSBand|double|RA2 IONOSPHERIC CORRECTION ON S BAND|m|3|-32768|16|m|3|5
+025135|ionosphericCorrectionFromDorisOnSBand|double|IONOSPHERIC CORRECTION FROM DORIS ON S BAND|m|3|-32768|16|m|3|5
+025136|ionosphericCorrectionFromModelOnSBand|double|IONOSPHERIC CORRECTION FROM MODEL ON S BAND|m|3|-32768|16|m|3|5
+025137|seaStateBiasCorrectionOnSBand|double|SEA STATE BIAS CORRECTION ON S BAND|m|3|-32768|16|m|3|5
+025138|averageSignalToNoiseRatio|long|AVERAGE SIGNAL TO NOISE RATION|Numeric|0|-2048|12|Numeric|0|4
+025140|startChannel|long|START CHANNEL|Numeric|0|0|14|Numeric|0|5
+025141|endChannel|long|END CHANNEL|Numeric|0|0|14|Numeric|0|5
+025142|channelScaleFactor|long|CHANNEL SCALE FACTOR|Numeric|0|0|6|Numeric|0|2
+025143|linearCoefficient|long|LINEAR COEFFICIENT|Numeric|6|-5000000|24|Numeric|6|8
+025150|methodOfTropicalCycloneIntensityAnalysisUsingSatelliteData|table|SATELLITE INTENSITY ANALYSIS METHOD OF TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|2|2
+025160|kuBandNetInstrumentalCorrection|double|KU BAND INSTRUMENTAL CORRECTION|m|4|-120000|18|NA|0|0
+025161|cBandNetInstrumentalCorrection|double|C BAND INSTRUMENTAL CORRECTION|m|4|-120000|18|NA|0|0
+025162|seaStateBiasCorrectionOnCBand|double|SEA STATE BIAS CORRECTION ON C BAND|m|4|-6000|13|NA|0|0
+025163|altimeterIonosphericCorrectionOnKuBand|double|ALTIMETER IONOSPHERIC CORRECTION ON KU BAND|m|3|-32768|16|NA|0|0
+025164|radiometerWetTroposphericCorrection|double|RADIOMETER WET|m|4|-5000|13|NA|0|0
+025174|smosInformationFlag|flag|SMOS INFORMATION FLAG|FLAG TABLE|0|0|14|FLAG TABLE|0|5
+026001|principalTimeOfDailyReadingInUtcOfMaximumTemperature|double|PRINCIPAL TIME OF DAILY READING IN UTC OF MAXIMUM TEMPERATURE|h|1|0|12|h|1|3
+026002|principalTimeOfDailyReadingInUtcOfMinimumTemperature|double|PRINCIPAL TIME OF DAILY READING IN UTC OF MINIMUM TEMPERATURE|h|1|0|12|h|1|3
+026003|timeDifference|long|TIME DIFFERENCE|min|0|-1440|12|min|0|4
+026010|hoursIncluded|flag|HOURS INCLUDED|FLAG TABLE|0|0|26|FLAG TABLE|0|9
+026020|durationOfPrecipitation|long|DURATION OF PRECIPITATION|min|0|0|11|min|0|4
+027001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+027002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+027003|alternateLatitude|double|ALTERNATE LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+027004|alternateLatitude|double|ALTERNATE LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+027010|footprintAxis1|long|FOOTPRINT AXIS 1|m|-1|0|14|m|-1|5
+027020|satelliteLocationCounter|long|SATELLITE LOCATION COUNTER|Numeric|0|0|16|Numeric|0|5
+027021|satelliteSublocationDimension|long|SATELLITE SUBLOCATION DIMENSION|Numeric|0|0|16|Numeric|0|5
+027031|DistanceFromEarthCentreInDirectionOf0DegreesLongitude|double|IN DIRECTION OF 0 DEGREES LONGITUDE, DISTANCE FROM THE EARTH'S C|m|2|-1073741824|31|m|2|10
+027080|viewingAzimuthAngle|double|VIEWING AZIMUTH ANGLE|deg|2|0|16|deg|0|5
+028001|longitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+028002|longitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+028003|alternateLongitude|double|ALTERNATE LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+028004|alternateLongitude|double|ALTERNATE LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+028010|footprintAxis2|long|FOOTPRINT AXIS 2|m|-1|0|14|m|-1|5
+028031|DistanceFromEarthCentreInDirection90DegreesEast|double|IN DIRECTION 90 DEGREES EAST, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10
+029001|projectionType|table|PROJECTION TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+029002|coordinateGridType|table|CO-ORDINATE GRID TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+030001|pixelValue4Bits|long|PIXEL VALUE (4 BITS)|Numeric|0|0|4|Numeric|0|2
+030002|pixelValue8Bits|long|PIXEL VALUE (8 BITS)|Numeric|0|0|8|Numeric|0|3
+030004|pixelValue16Bits|long|PIXEL VALUE (16 BITS)|Numeric|0|0|16|Numeric|0|5
+030010|numberOfGridPoints|long|NUMBER OF GRID POINTS|Numeric|0|0|13|Numeric|0|4
+030021|numberOfPixelsPerRow|long|NUMBER OF PIXELS PER ROW|Numeric|0|0|12|Numeric|0|4
+030022|numberOfPixelsPerColumn|long|NUMBER OF PIXELS PER COLUMN|Numeric|0|0|12|Numeric|0|4
+030031|pictureType|table|PICTURE TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+030032|combinationWithOtherData|flag|COMBINATION WITH OTHER DATA|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+031000|shortDelayedDescriptorReplicationFactor|long|SHORT DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|1|Numeric|0|1
+031001|delayedDescriptorReplicationFactor|long|DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|8|Numeric|0|3
+031002|extendedDelayedDescriptorReplicationFactor|long|EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|16|Numeric|0|5
+031011|delayedDescriptorAndDataRepetitionFactor|long|DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|8|Numeric|0|3
+031012|extendedDelayedDescriptorAndDataRepetitionFactor|long|EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|16|Numeric|0|5
+031021|associatedFieldSignificance|table|ASSOCIATED FIELD SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+031031|dataPresentIndicator|flag|DATA PRESENT INDICATOR|FLAG TABLE|0|0|1|FLAG TABLE|0|1
+033002|qualityInformation|table|QUALITY INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033003|qualityInformation|table|QUALITY INFORMATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+033005|qualityInformationAwsData|flag|QUALITY INFORMATION (AWS DATA)|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+033006|internalMeasurementStatusInformationAws|table|INTERNAL MEASUREMENT STATUS INFORMATION (AWS)|CODE TABLE|0|0|3|CODE TABLE|0|1
+033007|percentConfidence|long|PER CENT CONFIDENCE|%|0|0|7|%|0|3
+033009|relativeError|double|RELATIVE ERROR|%|6|0|20|%|0|7
+033015|dataQualityCheckIndicator|table|DATA QUALITY CHECK INDICATOR|CODE TABLE|0|0|6|CODE TABLE|0|2
+033020|qualityControlIndicationOfFollowingValue|table|QUALITY CONTROL INDICATION OF FOLLOWING VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+033021|qualityOfFollowingValue|table|QUALITY OF FOLLOWING VALUE|CODE TABLE|0|0|2|CODE TABLE|0|1
+033022|qualityOfBuoySatelliteTransmission|table|QUALITY OF BUOY SATELLITE TRANSMISSION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033023|qualityOfBuoyLocation|table|QUALITY OF BUOY LOCATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033024|stationElevationQualityMarkForMobileStations|table|STATION ELEVATION QUALITY MARK (FOR MOBILE STATIONS)|CODE TABLE|0|0|4|CODE TABLE|0|2
+033025|acarsInterpolatedValuesIndicator|table|ACARS INTERPOLATED VALUES|CODE TABLE|0|0|3|CODE TABLE|0|1
+033026|moistureQuality|table|MOISTURE QUALITY|CODE TABLE|0|0|6|CODE TABLE|0|2
+033027|locationQualityClassRangeOfRadiusOf66Confidence|table|LOCATION QUALITY CLASS (RANGE OF RADIUS OF 66 % CONFIDENCE)|CODE TABLE|0|0|3|CODE TABLE|0|1
+033028|snapshotOverallQuality|table|SNAPSHOT OVERALL QUALITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+033030|scanLineStatusFlagsForAtovs|flag|SCAN LINE STATUS FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033031|scanLineQualityFlagsForAtovs|flag|SCAN LINE QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033032|channelQualityFlagsForAtovs|flag|CHANNEL QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033033|fieldOfViewQualityFlagsForAtovs|flag|FIELD OF VIEW QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033035|qualityControl|table|MANUAL/AUTOMATIC QUALITY CONTROL|CODE TABLE|0|0|4|CODE TABLE|0|2
+033036|nominalConfidenceThreshold|long|NOMINAL CONFIDENCE THRESHOLD|%|0|0|7|%|0|3
+033037|windCorrelationError|flag|WIND CORRELATION ERROR|FLAG TABLE|0|0|20|FLAG TABLE|0|7
+033038|qualityFlagsForGroundBasedGnssData|flag|QUALITY FLAGS FOR GROUND-BASED GNSS DATA|FLAG TABLE|0|0|10|FLAG TABLE|0|4
+033039|radioOccultationDataQualityFlags|flag|QUALITY FLAGS FOR RADIO OCCULTATION DATA|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+033040|confidenceInterval|long|CONFIDENCE INTERVAL|%|0|0|7|%|0|3
+033041|attributeOfFollowingValue|table|ATTRIBUTE OF FOLLOWING VALUE|CODE TABLE|0|0|2|CODE TABLE|0|1
+033042|typeOfLimitRepresentedByFollowingValue|table|TYPE OF LIMIT REPRESENTED BY FOLLOWING VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+033043|astConfidence|flag|AST CONFIDENCE|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+033044|asarQualityInformation|flag|ASAR QUALITY INFORMATION|FLAG TABLE|0|0|15|FLAG TABLE|0|5
+033045|probabilityOfFollowingEvent|long|PROBABILITY OF FOLLOWING EVENT|%|0|0|7|%|0|3
+033046|conditionalProbability|long|CONDITIONAL PROBABILITY OF FOLLOWING EVENT WITH RESPECT TO SPECI|%|0|0|7|%|0|3
+033047|measurementConfidenceData|flag|MEASUREMENT CONFIDENCE DATA|FLAG TABLE|0|0|31|FLAG TABLE|0|11
+033048|confidenceMeasureOfSarInversion|table|CONFIDENCE MEASURE OF SAR INVERSION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033049|confidenceMeasureOfWindRetrieval|table|CONFIDENCE MEASURE OF WIND RETRIEVAL|CODE TABLE|0|0|2|CODE TABLE|0|1
+033050|globalGtsppQualityFlag|table|GLOBAL GTSPP QUALITY FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+033052|sBandOceanRetrackingQuality|flag|S BAND OCEAN RETRACKING QUALITY|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+033053|kuBandOceanRetrackingQuality|flag|KU BAND OCEAN RETRACKING QUALITY|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+033060|gqisFlagQual|table|GQISFLAGQUAL-INDIVIDUAL IASI-SYSTEM QUALITY FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+033061|gqisQualIndex|long|GQISQUALINDEX - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE|%|0|0|7|%|0|3
+033062|gqisQualIndexLoc|long|GQISQUALINDEXLOC - INDICATOR FOR GEOMETRIC QUALITY INDEX|%|0|0|7|%|0|3
+033063|gqisQualIndexRad|long|GQISQUALINDEXRAD - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE|%|0|0|7|%|0|3
+033064|gqisQualIndexSpect|long|GQISQUALINDEXSPECT - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE|%|0|0|7|%|0|3
+033065|gqisSysTecQual|long|GQISSYSTECSONDQUAL - OUTPUT OF SYSTEM TEC QUALITY FUNCTION|Numeric|0|0|24|Numeric|0|24
+033066|sbuvTotalOzoneQuality|table|SBUV TOTAL OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033067|sbuvProfileOzoneQuality|table|SBUV PROFILE OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033070|totalOzoneQuality|table|TOTAL OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033071|profileOzoneQuality|table|PROFILE OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+035000|fmAndRegionalCodeNumber|table|FM AND REGIONAL CODE NUMBER|CODE TABLE|0|0|10|CODE TABLE|0|3
+035001|timeFrameForMonitoring|table|TIME-FRAME FOR MONITORING|CODE TABLE|0|0|3|CODE TABLE|0|1
+035011|numberOfReportsActuallyReceived|long|NUMBER OF REPORTS ACTUALLY RECEIVED|Numeric|0|0|14|Numeric|0|4
+035021|bulletinBeingMonitoredTtaaii|string|BULLETIN BEING MONITORED (TTAAII)|CCITT IA5|0|0|48|Character|0|6
+035022|bulletinBeingMonitoredYygggg|string|BULLETIN BEING MONITORED (YYGGGG)|CCITT IA5|0|0|48|Character|0|6
+035023|bulletinBeingMonitoredCccc|string|BULLETIN BEING MONITORED (CCCC)|CCITT IA5|0|0|32|Character|0|4
+035024|bulletinBeingMonitoredBbb|string|BULLETIN BEING MONITORED (BBB)|CCITT IA5|0|0|24|Character|0|3
+035030|discrepanciesInAvailabilityOfExpectedData|table|DISCREPANCIES IN THE AVAILABILITY OF EXPECTED DATA|CODE TABLE|0|0|4|CODE TABLE|0|1
+035031|qualifierOnMonitoringResults|table|QUALIFIER ON MONITORING RESULTS|CODE TABLE|0|0|7|CODE TABLE|0|2
+035032|causeOfMissingData|table|CAUSE OF MISSING DATA|CODE TABLE|0|0|4|CODE TABLE|0|1
+035033|observationAndCollectionDeficiencies|table|OBSERVATION AND COLLECTION DEFICIENCIES|CODE TABLE|0|0|7|CODE TABLE|0|2
+035034|statisticalTrendsForAvailabilityOfDataDuringSurveyPeriods|table|STATISTICAL TRENDS FOR AVAILABILITY OF DATA (DURING THE SURVEY P|CODE TABLE|0|0|3|CODE TABLE|0|1
+035035|reasonForTermination|table|REASON FOR TERMINATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+040001|surfaceSoilMoisture|double|SURFACE SOIL MOISTURE (MS)|%|1|0|10|%|1|4
+040002|estimatedErrorInSurfaceSoilMoisture|double|ESTIMATED ERROR IN SURFACE SOIL MOISTURE|%|1|0|10|%|1|4
+040003|meanSurfaceSoilMoisture|long|MEAN SURFACE SOIL MOISTURE|Numeric|3|0|10|Numeric|3|4
+040004|rainFallDetection|long|RAIN FALL DETECTION|Numeric|3|0|10|Numeric|3|4
+040005|soilMoistureCorrectionFlag|flag|SOIL MOISTURE CORRECTION FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040006|soilMoistureProcessingFlag|flag|SOIL MOISTURE PROCESSING FLAG|FLAG TABLE|0|0|16|FLAG TABLE|0|5
+040007|soilMoistureQuality|double|SOIL MOISTURE QUALITY|%|1|0|10|%|1|4
+040008|frozenLandSurfaceFraction|double|FROZEN LAND SURFACE FRACTION|%|1|0|10|%|1|4
+040009|inundationAndWetlandFraction|double|INUNDATION AND WETLAND FRACTION|%|1|0|10|%|1|4
+040010|topographicComplexity|double|TOPOGRAPHIC COMPLEXITY|%|1|0|10|%|1|4
+040011|interpolationFlag|flag|INTERPOLATION FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040012|radiometerDataQualityFlag|flag|RADIOMETER DATA QUALITY FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040013|radiometerBrightnessTemperatureInterpretationFlag|table|RADIOMETER BRIGHTNESS TEMPERATURE INTERPOLATION FLAG|CODE TABLE|0|0|3|NA|0|0
+040014|highFrequencyFluctuationsOfSeaSurfaceTopographyCorrection|double|HIGH FREQUENCY FLUCTUATIONS OF THE SEA SURFACE TOPOGRAPHY CORREC|m|4|-3000|13|NA|0|0
+040018|averageOfImagerMeasurements|double|GLACAVGLMAGLLS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|NA|0|0
+040019|giacvarimagiisVarianceOfImagerMeasurements|double|GLACVARLMAGLLS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|NA|0|0
+040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|NA|0|0
+040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH SNOW/I|%|0|0|7|NA|0|0
+040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|NA|0|0
diff --git a/definitions/bufr/tables/0/wmo/9/sequence.def b/definitions/bufr/tables/0/wmo/9/sequence.def
new file mode 100644
index 0000000..037fc3a
--- /dev/null
+++ b/definitions/bufr/tables/0/wmo/9/sequence.def
@@ -0,0 +1,678 @@
+"300002" = [  000002, 000003 ]
+"300003" = [  000010, 000011, 000012 ]
+"300004" = [  300003, 000013, 000014, 000015, 000016, 000017, 000018, 000019, 000020 ]
+"300010" = [  300003, 101000, 031001, 000030 ]
+"301001" = [  001001, 001002 ]
+"301002" = [  001003, 001004, 001005 ]
+"301003" = [  001011, 001012, 001013 ]
+"301004" = [  001001, 001002, 001015, 002001 ]
+"301005" = [  001035, 001034 ]
+"301011" = [  004001, 004002, 004003 ]
+"301012" = [  004004, 004005 ]
+"301013" = [  004004, 004005, 004006 ]
+"301014" = [  102002, 301011, 301012 ]
+"301021" = [  005001, 006001 ]
+"301022" = [  005001, 006001, 007001 ]
+"301023" = [  005002, 006002 ]
+"301024" = [  005002, 006002, 007001 ]
+"301025" = [  301023, 004003, 301012 ]
+"301026" = [  301021, 004003, 004003, 004004, 004004, 004005, 004005 ]
+"301027" = [  008007, 101000, 031001, 301028, 008007 ]
+"301028" = [  008040, 033042, 007010, 101000, 031002, 301023, 019007, 008040 ]
+"301031" = [  301001, 002001, 301011, 301012, 301022 ]
+"301032" = [  301001, 002001, 301011, 301012, 301024 ]
+"301033" = [  001005, 002001, 301011, 301012, 301021 ]
+"301034" = [  001005, 002001, 301011, 301012, 301023 ]
+"301035" = [  001005, 001012, 001013, 002001, 301011, 301012, 301023 ]
+"301036" = [  301003, 002001, 301011, 301012, 301023 ]
+"301037" = [  301001, 002011, 002012, 301011, 301012, 301022 ]
+"301038" = [  301001, 002011, 002012, 301011, 301012, 301024 ]
+"301039" = [  301003, 002011, 002012, 301011, 301012, 301023 ]
+"301040" = [  301003, 002011, 002012, 301011, 301012, 301024 ]
+"301041" = [  001007, 002021, 002022, 301011, 301012 ]
+"301042" = [  301041, 301021 ]
+"301043" = [  001007, 002023, 301011, 301013, 301021 ]
+"301044" = [  001007, 002024, 301011, 301013, 301021 ]
+"301045" = [  301011, 301012, 201138, 202131, 004006, 201000, 202000, 304030, 304031 ]
+"301046" = [  001007, 001012, 002048, 021119, 025060, 202124, 002026, 002027, 202000, 005040
+               ]
+"301047" = [  001007, 025060, 001033, 001034, 001012, 301045, 002021, 301011, 301012, 201138,
+               202131, 004006, 201000, 202000, 301023 ]
+"301048" = [  002104, 002121, 002113, 002026, 002027, 002111, 002140, 202127, 001013, 202126,
+               007001, 202000, 025010, 021064 ]
+"301049" = [  002111, 002112, 021062, 021063, 021065 ]
+"301051" = [  001006, 002061, 301011, 301012, 301021, 008004 ]
+"301055" = [  001005, 002001, 301011, 301012, 301021, 001012, 001014 ]
+"301062" = [  101000, 031001, 301001 ]
+"301065" = [  001006, 001008, 002001, 002002, 002005, 002062, 002070, 002065 ]
+"301066" = [  301011, 301013, 301023, 007004, 002064, 008004 ]
+"301070" = [  002143, 002142, 002144 ]
+"301071" = [  001007, 001031, 002020, 002028, 002029 ]
+"301072" = [  301071, 301011, 301013, 301021 ]
+"301074" = [  002143, 002142, 002145, 002146 ]
+"301075" = [  301001, 001015, 301024, 008021, 301011, 301012 ]
+"301076" = [  002011, 002143, 002142 ]
+"301089" = [  001101, 001102 ]
+"301090" = [  301004, 301011, 301012, 301021, 007030, 007031 ]
+"301091" = [  002180, 002181, 002182, 002183, 002184, 002179, 002186, 002187, 002188, 002189
+               ]
+"301092" = [  001011, 001003, 002001, 301011, 301012, 301021, 007030, 007031, 033024 ]
+"301093" = [  301036, 007030, 007031 ]
+"301110" = [  301001, 001011, 002011, 002014, 002003 ]
+"301111" = [  301001, 001011, 002011, 002013, 002014, 002003 ]
+"301112" = [  001006, 002011, 002013, 002014, 002003 ]
+"301113" = [  008021, 301011, 301013 ]
+"301114" = [  301021, 007030, 007031, 007007, 033024 ]
+"301120" = [  301001, 001094, 002011, 301121 ]
+"301121" = [  008041, 301122, 301021, 007031, 007007 ]
+"301122" = [  301011, 301012, 201135, 202130, 004006, 202000, 201000 ]
+"301123" = [  102002, 008041, 001062, 301001, 001094, 002011, 001018, 001095, 025061, 025068,
+               001082, 001083, 001081, 002067, 002066, 002014, 025067, 025065, 025066, 002095,
+               002096, 002097, 002016, 002083, 002080, 002081, 001093, 002084, 002085, 002086,
+               002082, 008041, 301011 ]
+"301125" = [  001033, 001034, 025060, 001007, 002019, 001012 ]
+"302001" = [  010004, 010051, 010061, 010063 ]
+"302002" = [  010004, 007004, 010003, 010061, 010063 ]
+"302003" = [  011011, 011012, 012004, 012006, 013003, 020001, 020003, 020004, 020005 ]
+"302004" = [  020010, 008002, 020011, 020013, 020012, 020012, 020012 ]
+"302005" = [  008002, 020011, 020012, 020013 ]
+"302006" = [  010004, 010051, 010062, 010063 ]
+"302011" = [  302001, 302003, 302004 ]
+"302012" = [  302002, 302003, 302004 ]
+"302013" = [  302006, 302003, 101000, 031001, 302005 ]
+"302021" = [  022001, 022011, 022021 ]
+"302022" = [  022002, 022012, 022022 ]
+"302023" = [  022003, 022013, 022023 ]
+"302024" = [  302022, 101002, 302023 ]
+"302031" = [  302001, 010062, 007004, 010009 ]
+"302032" = [  007032, 012101, 012103, 013003 ]
+"302033" = [  007032, 020001 ]
+"302034" = [  007032, 013023 ]
+"302035" = [  302032, 302033, 302034, 007032, 302004, 101000, 031001, 302005 ]
+"302036" = [  105000, 031001, 008002, 020011, 020012, 020014, 020017 ]
+"302037" = [  020062, 013013, 012113 ]
+"302038" = [  020003, 004024, 020004, 020005 ]
+"302039" = [  004024, 014031 ]
+"302040" = [  007032, 102002, 004024, 013011 ]
+"302041" = [  007032, 004024, 004024, 012111, 004024, 004024, 012112 ]
+"302042" = [  007032, 002002, 008021, 004025, 011001, 011002, 008021, 103002, 004025, 011043,
+               011041 ]
+"302043" = [  302038, 101002, 302039, 302040, 302041, 302042, 007032 ]
+"302044" = [  004024, 002004, 013033 ]
+"302045" = [  004024, 014002, 014004, 014016, 014028, 014029, 014030 ]
+"302046" = [  004024, 004024, 012049 ]
+"302047" = [  102003, 008002, 020054 ]
+"302048" = [  005021, 007021, 020012, 005021, 007021 ]
+"302049" = [  008002, 020011, 020013, 020012, 020012, 020012, 008002 ]
+"302050" = [  008041, 005021, 007005, 202130, 006021, 202000, 008041, 201131, 202129, 002115,
+               010004, 002115, 013003, 202000, 201000, 002115, 011001, 011002, 002115, 102002,
+               012101, 004024, 002115, 012103, 012102, 101003, 020012, 020011, 020013, 101002,
+               020003 ]
+"302051" = [  010004, 010051, 007004, 010003, 012004, 012051, 012016, 012017, 013004, 102004,
+               008051, 008020 ]
+"302052" = [  007032, 007033, 012101, 002039, 012102, 012103, 013003 ]
+"302053" = [  007032, 007033, 020001 ]
+"302054" = [  302052, 302053, 007033, 302034, 007032, 302004, 101000, 031001, 302005 ]
+"302055" = [  020031, 020032, 020033, 020034, 020035, 020036, 020037, 020038 ]
+"302056" = [  002038, 007063, 022043, 007063 ]
+"302057" = [  302056, 302021, 302024 ]
+"302058" = [  007032, 007033, 004024, 004024, 012111, 004024, 004024, 012112 ]
+"302059" = [  007032, 007033, 002002, 008021, 004025, 011001, 011002, 008021, 103002, 004025,
+               011043, 011041 ]
+"302060" = [  302038, 302040, 302058, 302059 ]
+"302062" = [  302001, 302052, 302053, 007033, 101000, 031000, 302034, 007032, 101000, 031001,
+               302005, 008002, 101000, 031000, 302055, 101000, 031000, 302056, 101000, 031000,
+               302021, 101000, 031000, 302024 ]
+"302063" = [  302038, 101000, 031000, 302040, 101000, 031000, 302058, 302059 ]
+"302066" = [  020023, 020024, 020027, 020054, 020023, 020027, 020054, 020025, 020026, 020027,
+               020040, 020066, 020027, 020021, 020067, 020027 ]
+"302069" = [  007032, 007033, 033041, 020001 ]
+"302070" = [  007032, 007033, 011001, 011002, 011043, 011041, 011016, 011017 ]
+"302071" = [  007032, 007033, 008021, 004025, 011001, 011002, 008021, 103002, 004025, 011043,
+               011041, 004025, 011016, 011017 ]
+"302072" = [  007032, 007033, 012101, 012103, 013003 ]
+"302073" = [  020010, 105004, 008002, 020011, 020012, 033041, 020013 ]
+"302074" = [  020003, 004025, 020004, 020005 ]
+"302075" = [  008021, 004025, 013055, 013058, 008021 ]
+"302076" = [  020021, 020022, 026020, 020023, 020024, 020025, 020026 ]
+"302077" = [  007032, 007033, 004025, 012111, 012112, 007032, 004025, 012112 ]
+"302078" = [  002176, 020062, 002177, 013013 ]
+"302079" = [  007032, 002175, 002178, 004025, 013011 ]
+"302080" = [  002185, 004025, 013033 ]
+"302081" = [  004025, 014031 ]
+"302082" = [  004025, 014002, 014004, 014016, 014028, 014029, 014030 ]
+"302083" = [  004025, 008023, 010004, 011001, 011002, 012101, 013003, 008023 ]
+"303001" = [  007003, 011001, 011002 ]
+"303002" = [  007004, 011001, 011002 ]
+"303003" = [  007004, 010003, 012001, 012003 ]
+"303004" = [  007004, 010003, 012001, 012003, 011001, 011002 ]
+"303011" = [  007003, 008001, 011001, 011002 ]
+"303012" = [  007004, 008001, 011001, 011002 ]
+"303013" = [  007004, 008001, 010003, 012001, 013003, 011001, 011002 ]
+"303014" = [  007004, 008001, 010003, 012001, 012003, 011001, 011002 ]
+"303021" = [  007004, 007004, 204007, 031021 ]
+"303022" = [  303021, 010003, 204000 ]
+"303023" = [  303021, 012001, 204000 ]
+"303024" = [  303021, 013016, 204000 ]
+"303025" = [  002025, 204007, 031021, 012063, 204000 ]
+"303026" = [  007004, 008003, 204007, 031021, 012001, 204000 ]
+"303027" = [  007004, 204007, 031021, 010003, 204000 ]
+"303031" = [  007004, 008003, 007021, 007022, 008012, 012061 ]
+"303032" = [  020011, 020016 ]
+"303033" = [  020010, 020016 ]
+"303040" = [  008041, 004025, 004026, 301021, 301122, 201131, 202129, 025069, 007004, 013003,
+               202000, 201000, 002013, 012101, 010009, 102002, 008040, 035035 ]
+"303041" = [  002152, 002023, 007004, 011001, 011002, 002153, 002154, 012071 ]
+"303050" = [  004086, 008042, 007004, 005015, 006015, 011001, 011002 ]
+"303051" = [  004086, 008042, 007004, 005015, 006015, 011061, 011062 ]
+"303052" = [  004086, 008042, 007009, 005015, 006015, 011001, 011002 ]
+"303053" = [  004086, 008042, 007009, 005015, 006015, 011061, 011062 ]
+"303054" = [  004086, 008042, 007004, 010009, 005015, 006015, 012101, 012103, 011001, 011002
+               ]
+"304001" = [  008003, 010004, 012001, 011001, 011002 ]
+"304002" = [  008003, 010004, 011001, 011002 ]
+"304003" = [  008003, 012001 ]
+"304004" = [  008003, 010004, 020010, 012001 ]
+"304005" = [  002024, 007004, 007004, 013003 ]
+"304006" = [  014001, 014001, 014003 ]
+"304011" = [  002163, 002164, 008012, 007024, 002057, 008021, 004001, 004002, 004003, 004004,
+               008021, 004024, 110004, 008021, 004004, 004005, 004006, 008021, 004004, 004005,
+               004006, 011001, 011002, 103010, 002163, 007004, 012001 ]
+"304030" = [  027031, 028031, 010031 ]
+"304031" = [  001041, 001042, 001043 ]
+"304032" = [  002153, 002154, 020081, 020082, 020012 ]
+"304033" = [  002152, 002166, 002167, 002153, 002154, 012075, 012076, 012063 ]
+"304034" = [  102004, 027001, 028001, 007022, 005043, 020010, 020016, 033003, 010040 ]
+"304035" = [  002153, 002154, 012063, 008001, 012063, 008001, 012063, 008001, 008003, 012063,
+               008003, 012063, 008003, 012063, 008003 ]
+"304036" = [  020082, 008012, 020082, 008012, 020081, 008003, 020081, 008003, 020081, 008003,
+               020081, 008003 ]
+"304037" = [  002153, 002154, 012063, 008011, 012063, 008011, 012063, 008011, 008003, 012063,
+               008003, 012063, 008003, 012063, 008003 ]
+"305003" = [  301012, 004065, 101000, 031001, 305001 ]
+"305006" = [  013072, 013082, 013019, 012001, 013073, 013060 ]
+"305007" = [  301029, 301012, 004065, 101000, 031001, 305006 ]
+"305008" = [  305006, 012030 ]
+"305009" = [  301029, 301012, 004065, 101000, 031001, 305008 ]
+"305011" = [  301029, 301012, 004065, 101000, 031001, 305010 ]
+"305018" = [  301029, 301012, 004065, 103000, 031001, 305008, 305016, 305017 ]
+"306001" = [  002032, 102000, 031001, 007062, 022042 ]
+"306002" = [  002031, 022004, 022031 ]
+"306003" = [  002002, 011011, 011012, 012004 ]
+"306004" = [  002032, 002033, 103000, 031001, 007062, 022043, 022062 ]
+"306005" = [  002031, 103000, 031001, 007062, 022004, 022031 ]
+"306006" = [  306003, 306002, 022063 ]
+"306007" = [  001012, 001014, 306008, 004024, 027003, 028003 ]
+"306008" = [  002034, 002035, 002036 ]
+"306019" = [  001075, 301011, 301012, 022042, 022120, 022121, 004015, 004065 ]
+"306020" = [  306024, 102006, 022038, 022039 ]
+"306021" = [  001075, 301011, 301012, 022122, 022123, 012001, 303002 ]
+"306022" = [  001075, 301011, 301012, 022038, 022039 ]
+"306023" = [  001015, 301023, 301011, 301012, 022038, 022039, 022120, 022121 ]
+"306024" = [  001075, 301011, 301012, 022042, 022120, 022121, 004025, 004015 ]
+"306025" = [  306019, 102006, 022038, 022039 ]
+"307001" = [  301031, 302011 ]
+"307002" = [  301032, 302011 ]
+"307003" = [  307001, 101000, 031001, 302005 ]
+"307004" = [  307002, 101000, 031001, 302005 ]
+"307005" = [  307001, 101004, 302005 ]
+"307006" = [  307002, 101004, 302005 ]
+"307007" = [  301031, 302012 ]
+"307008" = [  301032, 302012 ]
+"307009" = [  301031, 302013 ]
+"307011" = [  001063, 002001, 301011, 301012, 301024, 007006, 011001, 011016, 011017, 011002,
+               011041, 007006, 012001, 012003, 010052, 020009 ]
+"307012" = [  103000, 031001, 008023, 005021, 020001 ]
+"307013" = [  106000, 031001, 001064, 008014, 020061, 008014, 020061, 020018 ]
+"307014" = [  101000, 031001, 020019 ]
+"307015" = [  101000, 031001, 302005, 020002 ]
+"307016" = [  101000, 031001, 020020 ]
+"307017" = [  101000, 031001, 011070 ]
+"307018" = [  008016, 102000, 031001, 008017, 301012, 104000, 031001, 007006, 011001, 011002,
+               011041, 020009, 101000, 031001, 020001, 307014 ]
+"307020" = [  307011, 307014, 307016 ]
+"307021" = [  307011, 307012, 307013, 307014, 307015, 307016, 307017, 307018, 307015 ]
+"307022" = [  001015, 301011, 301012, 301022, 008021, 004025, 010004, 012001, 013003, 033038,
+               008022, 106025, 002020, 001050, 005021, 007021, 015031, 015032, 008060, 015033,
+               015034, 008060, 015033, 015034, 015035, 201131, 202129, 013016, 202000, 201000,
+               015011 ]
+"307030" = [  015001, 015002 ]
+"307031" = [  008022, 008023, 015001, 008023, 015001, 008023, 015002 ]
+"307041" = [  301001, 001015, 301022, 301011, 301012, 301070, 307030 ]
+"307042" = [  301001, 001015, 301022, 301011, 301012, 008021, 004025, 301070, 307031 ]
+"307043" = [  301001, 001015, 301024, 301011, 301012, 301074, 307030 ]
+"307045" = [  001063, 008079, 002001, 301011, 301012, 301024, 007032, 011001, 011016, 011017,
+               008054, 011083, 011084, 011002, 008054, 011085, 011086, 011041, 008054, 007032,
+               012023, 012024, 007032, 010052, 020009 ]
+"307046" = [  020060, 102000, 031001, 005021, 020059 ]
+"307047" = [  105000, 031001, 008002, 020011, 020012, 020013, 020092, 020002, 020091 ]
+"307048" = [  008016, 102000, 031001, 008017, 301012, 112000, 031000, 007032, 011001, 008054,
+               011083, 011084, 011002, 008054, 011085, 011086, 011041, 008054, 007032, 020009,
+               101000, 031000, 020060, 307014, 307047 ]
+"307049" = [  102000, 031000, 022043, 022021 ]
+"307050" = [  101000, 031000, 020085, 102000, 031001, 001064, 020085, 105000, 031001, 001064,
+               020086, 020087, 020088, 020089 ]
+"307052" = [  001063, 008039, 301011, 301012, 008079, 008039, 301011, 301012, 008039, 301011,
+               301012, 301024 ]
+"307053" = [  007032, 011001, 008054, 011083, 011084, 011002, 008054, 011085, 011086, 011041,
+               008054, 007032, 020009, 020060, 307014, 307047 ]
+"307054" = [  007032, 008039, 004003, 004004, 008023, 012023, 008039, 004003, 004004, 008023,
+               012023, 008023, 007032 ]
+"307055" = [  033045, 008016, 008039, 004003, 301012, 008039, 004003, 301012, 307053 ]
+"307056" = [  307052, 307053, 307054, 101000, 031001, 307055 ]
+"307059" = [  307045, 307046, 307013, 307014, 307047, 307016, 307017, 307049, 307050, 101000,
+               031001, 307048 ]
+"307060" = [  007061, 012030 ]
+"307061" = [  301031, 101005, 307060 ]
+"307062" = [  301032, 101005, 307060 ]
+"307063" = [  007061, 012130 ]
+"307071" = [  301090, 004074, 004023, 008023, 010004, 010051, 007004, 010009, 007032, 012101,
+               002051, 004051, 012118, 004052, 012119, 013004, 008023, 012151, 007032, 102005,
+               008050, 008020, 014032, 014033, 008050, 008020, 102018, 008052, 008022, 007032,
+               008053, 004003, 012152, 008053, 004003, 012153, 008053, 004003, 008023, 012101,
+               008053, 004003, 008023, 012101, 008023, 007032, 002002, 008053, 004003, 011046,
+               008053, 004003, 004004, 004023, 007032, 013060, 013051, 004053, 008050, 008020,
+               102006, 008052, 008022, 008053, 004003, 013052, 007032 ]
+"307072" = [  004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010004, 010051,
+               007004, 010009, 007032, 012101, 002051, 004051, 012118, 004052, 012119, 013004,
+               012151, 007032, 014032, 008023, 004001, 004001, 004002, 004003, 004004, 004022,
+               007032, 008023, 013060, 004053, 008023, 102008, 008050, 008020 ]
+"307073" = [  307071, 307072 ]
+"307080" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 302043, 302044,
+               101002, 302045, 302046 ]
+"307081" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012122, 013056,
+               013057, 020101, 020102, 020103, 020104, 020105, 020106, 020107, 020108, 302043,
+               302044, 101002, 302045, 302046 ]
+"307082" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012121, 012122,
+               302043, 302044, 101002, 302045, 302046 ]
+"307083" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 012122, 302043,
+               302044, 101002, 302045, 302046 ]
+"307084" = [  301090, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 020055, 101000,
+               031001, 205001, 302043, 302044, 101002, 302045, 302046 ]
+"307086" = [  301090, 302031, 302035, 302036, 008002, 302037, 302066, 302043, 302044, 101002,
+               302045 ]
+"307090" = [  301092, 302031, 302035, 302036, 302047, 008002, 302048, 302037, 302043, 302044,
+               101002, 302045, 302046 ]
+"307091" = [  301089, 301090, 008010, 301091, 302001, 007004, 010009, 302072, 103000, 031000,
+               101005, 307063, 007061, 101000, 031000, 302069, 007032, 007033, 105000, 031000,
+               020031, 020032, 002038, 022043, 302021, 101000, 031000, 302078, 101000, 031000,
+               302073, 101000, 031000, 302074, 101000, 031000, 302075, 102000, 031000, 004025,
+               302076, 302071, 302077, 007033, 101000, 031000, 302079, 007032, 101000, 031000,
+               302080, 101000, 031000, 302081, 101000, 031000, 302082, 102000, 031000, 004025,
+               013059, 101000, 031000, 302083, 033005, 033006 ]
+"308001" = [  301033, 302011, 022042 ]
+"308002" = [  301034, 302011, 022042 ]
+"308003" = [  301035, 302011, 022042 ]
+"308004" = [  301036, 302011, 022042 ]
+"308005" = [  308004, 302024 ]
+"308006" = [  010004, 010061, 010063, 011001, 011002, 012004, 013003, 022042 ]
+"308007" = [  301055, 302011, 007062, 022042 ]
+"308008" = [  001003, 001020, 001005, 002001, 002036, 002149, 301011, 301012, 008021, 301011,
+               301012, 008021, 301021, 027004, 028004, 007030, 001051, 002148, 001012, 001014,
+               002040, 033022, 033023, 033027, 022063, 302021, 302022, 302023, 008081, 025026,
+               008081, 025026, 008081, 025026, 008081, 002034, 022060, 007070, 002190, 025086,
+               002035, 002168, 020031, 002038, 306004, 002030, 306005, 007031, 008081, 012064,
+               302001, 008081, 007032, 007033, 012101, 012103, 013003, 007032, 007033, 008082,
+               007033, 002169, 002002, 008021, 004025, 011001, 011002, 008021, 004025, 011043,
+               011041, 008082, 007033, 007032, 004024, 013011, 007032, 008021, 004024, 014021,
+               008021, 025028, 025028, 025028 ]
+"308009" = [  301093, 302001, 302054, 008002, 302055, 302057, 302060 ]
+"308010" = [  001011, 113000, 031001, 301011, 301012, 301021, 004080, 022049, 004080, 022059,
+               004080, 022005, 002042, 022032, 002042, 004080 ]
+"308011" = [  001011, 002001, 301011, 301012, 301023, 007030, 007031, 004074, 004023, 008023,
+               010051, 007032, 007033, 012101, 013004, 007032, 007033, 302056, 008023, 004003,
+               004004, 004023, 007032, 013060, 013051, 004053, 007032 ]
+"308012" = [  004001, 004001, 004002, 004003, 004004, 004074, 004022, 008023, 010051, 007032,
+               007033, 012101, 013002, 007032, 007033, 302056, 008023, 004001, 004001, 004002,
+               004003, 004004, 004022, 007032, 008023, 013060, 004053, 008023 ]
+"308013" = [  308011, 308012 ]
+"308015" = [  001003, 001020, 001005, 001011, 001205, 001001, 001002, 002044, 002045, 301011,
+               301012, 301021, 022063, 105002, 002098, 022070, 022071, 022073, 022074, 002098,
+               022076, 022077, 022094, 025043, 022078, 121000, 031001, 002098, 022082, 022084,
+               116000, 031001, 022080, 022085, 022086, 022087, 022088, 022089, 103000, 031001,
+               022090, 022186, 022187, 103000, 031001, 022092, 022186, 022187, 002098 ]
+"308016" = [  001003, 001020, 001005, 001011, 001205, 001001, 001002, 002044, 002045, 301011,
+               301012, 301021, 022063, 105002, 002098, 022070, 022072, 022073, 022075, 002098,
+               022076, 022077, 022094, 025044, 022079, 121000, 031001, 002098, 022083, 022084,
+               116000, 031001, 022081, 022085, 022086, 022087, 022088, 022089, 103000, 031001,
+               022091, 022186, 022187, 103000, 031001, 022093, 022186, 022187, 002098 ]
+"309001" = [  301037, 101000, 031001, 303011 ]
+"309002" = [  301038, 101000, 031001, 303011 ]
+"309003" = [  301037, 101000, 031001, 303012 ]
+"309004" = [  301038, 101000, 031001, 303012 ]
+"309005" = [  301037, 302004, 101000, 031001, 303013 ]
+"309006" = [  301038, 302004, 101000, 031001, 303013 ]
+"309007" = [  301037, 302004, 101000, 031001, 303014 ]
+"309008" = [  301038, 302004, 101000, 031001, 303014 ]
+"309011" = [  301039, 101000, 031001, 303011 ]
+"309012" = [  301039, 101000, 031001, 303012 ]
+"309013" = [  301039, 302004, 101000, 031001, 303013 ]
+"309014" = [  301039, 302004, 101000, 031001, 303014 ]
+"309015" = [  301040, 101000, 031001, 303011 ]
+"309016" = [  301040, 101000, 031001, 303012 ]
+"309017" = [  301040, 302004, 101000, 031001, 303013 ]
+"309018" = [  301040, 302004, 101000, 031001, 303014 ]
+"309019" = [  301031, 002003, 101000, 031001, 303011 ]
+"309020" = [  301031, 002003, 104000, 031001, 007003, 011003, 011004, 011005 ]
+"309030" = [  015004, 015005, 104000, 031001, 004015, 008006, 007004, 015003 ]
+"309031" = [  015004, 015005, 104000, 031001, 004025, 008006, 007004, 015003 ]
+"309040" = [  301075, 301076, 309030 ]
+"309042" = [  307042, 301075, 301076, 309030 ]
+"309050" = [  301110, 301113, 301114, 101000, 031002, 303050, 101000, 031001, 303051 ]
+"309051" = [  301110, 301113, 301114, 101000, 031002, 303052, 101000, 031001, 303053 ]
+"309052" = [  301111, 301113, 301114, 302049, 022043, 101000, 031002, 303054, 101000, 031001,
+               303051 ]
+"309053" = [  301112, 301113, 301114, 101000, 031002, 303054, 101000, 031001, 303051 ]
+"309054" = [  301001, 001011, 301011, 301012, 301021, 007030, 007031, 007007, 004023, 004059,
+               115000, 031001, 008001, 008023, 007004, 010009, 012101, 012103, 008023, 011001,
+               011002, 008023, 011019, 008050, 008020, 008050, 008020 ]
+"309060" = [  301123, 301121, 302050, 303040 ]
+"309061" = [  301120, 008041, 301122, 201131, 202129, 025069, 007004, 202000, 201000, 033007,
+               033035, 033015, 013009, 033007, 033035, 033015, 002013, 012101, 033007, 033035,
+               033015 ]
+"309062" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015, 033007 ]
+"309063" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015, 033007 ]
+"309064" = [  301120, 008041, 301122, 201131, 202129, 104002, 025069, 007004, 033035, 033015,
+               013003, 033035, 033015, 202000, 201000, 104002, 002013, 012101, 033035, 033015,
+               012103, 033035, 033015, 010009, 033035, 033015 ]
+"309065" = [  301120, 008041, 301122, 005001, 033035, 033015, 006001, 033035, 033015, 007007,
+               033035, 033015, 011003, 033035, 033015, 011004, 033035, 033015 ]
+"309066" = [  301120, 008041, 301122, 008040, 201131, 202129, 025069, 007004, 013003, 202000,
+               201000, 002013, 012101, 012103, 010009, 010007, 011002, 011001 ]
+"310001" = [  301042, 303031, 303032, 101026, 303025 ]
+"310002" = [  301042, 303031, 303032, 101009, 303023 ]
+"310003" = [  301042, 303031, 303032, 101006, 303023 ]
+"310004" = [  301042, 303031, 303032, 101003, 303024 ]
+"310005" = [  301042, 303031, 303033, 101000, 031001, 303025 ]
+"310006" = [  301042, 303031, 303033, 101000, 031001, 303023 ]
+"310007" = [  301042, 303031, 303033, 101000, 031001, 303024 ]
+"310008" = [  310011, 101019, 310012, 002150, 025079, 025080, 033032, 014045 ]
+"310009" = [  310011, 101015, 310012 ]
+"310010" = [  310011, 101005, 310012 ]
+"310011" = [  008070, 001033, 001034, 008070, 001033, 001034, 001007, 002048, 005040, 025075,
+               201133, 005041, 201000, 005043, 025070, 033030, 033031, 004001, 004002, 004003,
+               004004, 004005, 202131, 201138, 004006, 201000, 202000, 005001, 006001, 202126,
+               007001, 202000, 007024, 005021, 007025, 005022, 033033, 002151, 012064, 002151,
+               012064, 002151, 012064, 002151, 012064 ]
+"310012" = [  002150, 025076, 025077, 025078, 033032, 201132, 202129, 012063, 202000, 201000
+               ]
+"310013" = [  001007, 005040, 004001, 004002, 004003, 004004, 004005, 004006, 005001, 006001,
+               007025, 005043, 025085, 201131, 202129, 002150, 008023, 008072, 014027, 008072,
+               014027, 002150, 008023, 008072, 014027, 008072, 014027, 002150, 008023, 008072,
+               014027, 008072, 014027, 202000, 201000, 201132, 202129, 002150, 008023, 008072,
+               012063, 008072, 012063, 002150, 008023, 008072, 012063, 008072, 012063, 008023,
+               008072, 012063, 008072, 012063, 002150, 008023, 008072, 012063, 008072, 012063,
+               202000, 201000 ]
+"310014" = [  301072, 303041, 304011 ]
+"310015" = [  301072, 007024, 010002, 303041, 101003, 304032, 002152, 002024, 007004, 007004,
+               013003, 101003, 304033 ]
+"310016" = [  301072, 007024, 010002, 303041, 101012, 304032, 002152, 002024, 007004, 007004,
+               013003, 101012, 304033 ]
+"310019" = [  001007, 002019, 301011, 301013, 301023, 007025, 008021, 007025, 008021, 007025,
+               008021, 008029, 005040, 008075, 008003, 010004, 008003, 207002, 015001, 207000,
+               033070, 015030, 207002, 020081, 207000, 008003, 033042, 007004, 207002, 015001,
+               207000, 008003, 113021, 007004, 007004, 207002, 008021, 015005, 008021, 015005,
+               033007, 207000, 008026, 101020, 025143, 008026, 008043, 109015, 007004, 008090,
+               207006, 015008, 207000, 008090, 207002, 033007, 207000, 008043, 033071, 108008,
+               202124, 201107, 002071, 201000, 202000, 207002, 020081, 207000 ]
+"310020" = [  310022, 301011, 301013, 301021, 304034, 310021 ]
+"310021" = [  108000, 031001, 201131, 202129, 007004, 007004, 202000, 201000, 015020, 010002
+               ]
+"310022" = [  001007, 002019, 001033, 002172 ]
+"310023" = [  301072, 030021, 030022, 008012, 007024, 007025, 010002, 101012, 304032, 105002,
+               002152, 002024, 007004, 007004, 013003, 101012, 304033 ]
+"310024" = [  301072, 030021, 030022, 008012, 007024, 007025, 010002, 101003, 304032, 105002,
+               002152, 002024, 007004, 007004, 013003, 101003, 304033 ]
+"310025" = [  001007, 008021, 004001, 004002, 004003, 004004, 004005, 201138, 202131, 004006,
+               202000, 201000, 201132, 005041, 201000, 201129, 005043, 201000, 005002, 006002,
+               013040, 020029, 104024, 005042, 012163, 021083, 021084, 115003, 004001, 004002,
+               004003, 201142, 202131, 004026, 202000, 201000, 005001, 006001, 201138, 202129,
+               007001, 202000, 201000, 008021, 004001, 004002, 004003, 004004, 004005, 005040,
+               101003, 012070, 025054, 101004, 025055, 008007, 104028, 005002, 006002, 002111,
+               005021 ]
+"310026" = [  310022, 025060, 008021, 301011, 301012, 201138, 202131, 004006, 202000, 201000,
+               033039, 033007, 304030, 304031, 002020, 001050, 202127, 304030, 202000, 304031,
+               201133, 202131, 004016, 202000, 201000, 301021, 304030, 010035, 005021, 010036,
+               113000, 031002, 301021, 005021, 108000, 031001, 002121, 007040, 015037, 008023,
+               201125, 015037, 201000, 008023, 033007, 108000, 031002, 007007, 015036, 008023,
+               201123, 015036, 201000, 008023, 033007, 116000, 031002, 007009, 010004, 012001,
+               013001, 008023, 201120, 010004, 201000, 201122, 012001, 201000, 201123, 013001,
+               201000, 008023, 033007, 008003, 007009, 010004, 008023, 201120, 010004, 201000,
+               008023, 033007 ]
+"310027" = [  301071, 301011, 301013, 301021, 030021, 030022, 010002, 304036, 002152, 002167,
+               101011, 304035 ]
+"310028" = [  301071, 301011, 301013, 301021, 030021, 030022, 010002, 304036, 002152, 002167,
+               101011, 304037 ]
+"310029" = [  110000, 031001, 201138, 202130, 007004, 007004, 202000, 201000, 015020, 010002,
+               012101, 013098 ]
+"310030" = [  310022, 301011, 301013, 301021, 304034, 310029 ]
+"310050" = [  310051, 310052, 101000, 031002, 310053, 101004, 310054, 020010, 310052, 101015,
+               310053, 310052, 101005, 310053 ]
+"310051" = [  001007, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 007025, 005022, 102009, 002151, 012064 ]
+"310052" = [  002019, 301011, 301012, 202131, 201138, 004006, 201000, 202000, 301021, 007024,
+               005021, 005043 ]
+"310053" = [  201134, 005042, 201000, 025076, 033032, 012163 ]
+"310054" = [  201134, 005042, 201000, 025076, 033032, 201131, 202129, 102002, 008023, 014027,
+               008023, 202000, 201000 ]
+"310055" = [  310051, 310052, 102020, 025076, 025052, 101000, 031002, 025050 ]
+"311001" = [  301051, 007002, 012001, 011001, 011002, 011031, 011032, 011033, 020041 ]
+"311002" = [  301065, 301066, 311003, 311004 ]
+"311003" = [  010070, 011001, 011002, 012001, 013002 ]
+"311004" = [  101000, 031000, 011034, 101000, 031000, 011035, 101000, 031000, 011075, 101000,
+               031000, 011076, 101000, 031000, 033025, 101000, 031000, 033026 ]
+"311005" = [  001008, 001023, 301021, 301011, 301013, 007010, 008009, 011001, 011002, 011031,
+               011036, 012101, 033025 ]
+"311006" = [  007010, 011001, 011002, 002064, 012101, 012103 ]
+"311007" = [  007010, 301021, 011001, 011002, 002064, 012101, 012103 ]
+"311008" = [  001008, 301011, 301013, 301021, 008004, 101000, 031001, 311006 ]
+"311009" = [  001008, 301011, 301013, 301021, 008004, 101000, 031001, 311007 ]
+"312001" = [  301043, 304001 ]
+"312002" = [  301043, 304002 ]
+"312003" = [  301042, 304003 ]
+"312004" = [  301042, 304004 ]
+"312005" = [  301042, 020014 ]
+"312006" = [  301044, 304005 ]
+"312007" = [  301042, 304006 ]
+"312010" = [  001007, 005040, 002021, 005041, 004001, 004043 ]
+"312011" = [  202131, 201149, 004006, 201000, 202126, 010002, 202000, 005043, 005053 ]
+"312012" = [  202129, 201132, 101019, 012063, 201000, 202000 ]
+"312013" = [  005042, 202129, 201135, 012063, 201000, 202000 ]
+"312014" = [  312010, 312011, 105056, 301023, 005042, 005052, 312012, 312013 ]
+"312015" = [  109011, 301023, 005042, 005052, 202129, 201132, 101004, 012063, 202000, 201000
+               ]
+"312016" = [  312010, 312011, 312015 ]
+"312017" = [  109008, 301023, 005042, 005052, 202129, 201132, 101003, 012063, 202000, 201000
+               ]
+"312018" = [  312010, 312011, 312017 ]
+"312019" = [  301047, 301048, 015015, 029002, 021076, 106012, 201129, 006030, 201000, 102012,
+               005030, 021075, 021066 ]
+"312020" = [  301047, 301048, 015015, 029002, 021076, 104012, 006030, 102012, 005030, 021075,
+               021066 ]
+"312021" = [  301047, 101003, 301049, 011012, 011011, 021067 ]
+"312022" = [  301047, 008022, 011012, 011050, 022070, 022026, 312041, 010050, 021068, 021071,
+               021072, 021073, 312042, 021062, 015011 ]
+"312023" = [  301047, 103003, 008022, 012061, 022050, 021069, 021085 ]
+"312024" = [  312020, 008060, 008022, 008060, 008022, 025014, 022101, 022097, 022098, 022099,
+               022100 ]
+"312025" = [  312019, 008060, 008022, 008060, 008022, 025014, 022101, 022097, 022098, 022099,
+               022100 ]
+"312026" = [  301046, 301011, 301013, 301023, 312031, 101004, 312030, 021110, 301023, 321027,
+               021111, 301023, 321027, 021112, 301023, 321027, 021113, 301023, 321027 ]
+"312027" = [  301047, 105009, 301023, 007021, 012061, 007021, 012061, 021085, 021070 ]
+"312028" = [  301046, 301011, 301013, 301023, 008025, 201136, 004006, 201000, 312031, 312032,
+               101004, 312030, 101002, 312033, 021110, 301023, 321028, 021111, 301023, 321028,
+               021112, 301023, 321028, 021113, 301023, 321028 ]
+"312030" = [  201130, 202129, 011012, 202000, 201000, 011052, 201135, 202130, 011011, 202000,
+               201000, 011053, 021104 ]
+"312031" = [  005034, 006034, 021109, 011081, 011082, 021101, 021102, 021103 ]
+"312032" = [  021120, 021121, 013055, 021122 ]
+"312033" = [  002104, 008022, 012063, 012065 ]
+"312041" = [  201141, 202130, 007001, 201000, 202000 ]
+"312042" = [  021077, 021078, 021079, 021080, 021081, 021082 ]
+"312045" = [  001007, 002019, 001096, 025061, 005040, 301011, 301013, 301021, 007002, 012180,
+               012181, 012182, 012183, 012184, 012185, 002174, 021086, 012186, 021087, 012187,
+               033043 ]
+"312050" = [  001007, 002019, 001096, 025061, 005040, 301011, 301013, 301021, 007025, 005022,
+               010080, 027080, 008003, 007004, 013093, 008003, 201131, 202129, 007004, 007004,
+               202000, 201000, 013095 ]
+"312051" = [  001007, 002019, 001096, 025061, 005040, 008075, 301011, 301013, 301021, 001012,
+               201131, 001013, 201000, 010032, 010033, 010034, 007002, 008012, 025110, 025111,
+               025102, 002104, 025103, 025104, 025105, 025106, 025107, 025108, 002111, 002121,
+               002026, 002027, 021130, 021131, 021132, 021133, 021064, 025014, 021134, 107018,
+               005030, 105024, 201130, 006030, 201000, 021135, 021136, 033044 ]
+"312052" = [  001007, 002019, 001096, 025061, 005040, 025120, 025121, 025124, 025125, 025122,
+               025123, 301011, 301013, 301021, 007002, 002119, 033047, 010081, 010082, 010083,
+               010084, 002116, 002117, 002118, 002156, 002157, 014055, 022150, 022151, 022152,
+               022153, 022154, 022155, 022156, 022157, 022158, 022159, 021137, 021138, 021139,
+               021140, 021141, 021142, 010085, 010086, 010087, 010088, 010089, 010090, 010091,
+               010092, 010093, 011002, 025126, 025127, 025128, 025129, 025130, 025131, 025132,
+               025133, 025134, 025135, 025136, 025137, 013096, 013097, 011095, 011096, 012188,
+               012189, 002158, 002159, 033052, 033053, 021143, 021144 ]
+"312053" = [  001007, 002019, 001096, 025061, 005040, 008075, 301011, 301013, 301021, 001012,
+               201131, 001013, 201000, 010032, 010033, 010034, 007002, 008012, 025110, 025111,
+               025102, 002104, 025103, 025104, 025105, 025106, 025107, 025108, 011001, 011002,
+               022160, 025138, 201130, 202129, 022021, 202000, 201000, 033048, 033049, 002026,
+               002027, 021130, 021131, 021132, 021133, 025014, 106036, 005030, 104024, 201130,
+               006030, 201000, 022161, 033044 ]
+"312055" = [  005033, 005040, 006034, 010095, 021157 ]
+"312056" = [  025060, 001032, 011082, 011081, 020095, 020096, 021155, 201133, 021101, 021102,
+               201000 ]
+"312057" = [  201130, 202129, 011012, 202000, 201000, 201131, 202129, 011011, 202000, 201000,
+               021156, 021104 ]
+"312058" = [  301125, 301011, 301013, 301021, 312055, 021150, 101003, 321030 ]
+"312059" = [  312056, 101000, 031001, 312057 ]
+"312060" = [  025060, 025062, 040001, 040002, 021062, 021151, 021152, 021153, 021154, 021062,
+               021062, 040003, 040004, 040005, 040006, 040007, 020065, 040008, 040009, 040010
+               ]
+"312061" = [  312058, 312060, 312059 ]
+"312070" = [  001007, 002019, 001144, 001124, 030010, 301011, 301013, 301021, 007012, 015012,
+               012165, 012166, 012167, 012168, 027010, 028010, 002099, 013048, 025081, 025082,
+               025083, 025084, 012080, 012081, 012082, 025174, 033028 ]
+"313009" = [  021001, 101000, 031001, 021001 ]
+"313010" = [  021036, 101000, 031001, 021036 ]
+"313031" = [  006002, 006012, 101000, 031002, 030001 ]
+"313032" = [  005002, 005012, 101000, 031002, 313031 ]
+"313041" = [  006002, 110000, 031001, 104000, 031001, 006012, 101000, 031012, 030001, 006012,
+               101000, 031001, 030001 ]
+"313042" = [  005002, 005012, 101000, 031002, 313041 ]
+"313043" = [  006002, 005002, 005012, 112000, 031001, 110000, 031001, 104000, 031001, 006012,
+               101000, 031011, 030001, 006012, 101000, 031001, 030001 ]
+"315001" = [  001011, 301011, 301012, 301023, 306001 ]
+"315002" = [  001011, 301011, 301012, 301023, 306004 ]
+"315003" = [  001087, 001085, 001086, 002036, 002148, 002149, 022055, 022056, 022067, 301011,
+               301012, 301021, 008080, 033050, 109000, 031002, 007065, 008080, 033050, 022045,
+               008080, 033050, 022064, 008080, 033050 ]
+"316001" = [  301011, 004004, 301023, 001021, 002041, 019001, 010051, 019002, 019003, 019004
+               ]
+"316002" = [  008021, 004001, 004002, 004003, 004004, 004005, 001033, 008021, 004001, 004002,
+               004003, 004004, 004005, 007002, 007002 ]
+"316003" = [  110000, 031001, 008011, 008007, 104000, 031001, 005002, 006002, 010002, 011002,
+               008007, 008011 ]
+"316004" = [  111000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               011031, 008007, 008011 ]
+"316005" = [  108000, 031001, 008005, 008007, 005002, 006002, 001026, 019001, 008007, 008005
+               ]
+"316006" = [  112000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               020011, 020012, 008007, 008011 ]
+"316007" = [  110000, 031001, 008011, 008007, 104000, 031001, 005002, 006002, 019005, 019006,
+               008007, 008011 ]
+"316008" = [  111000, 031001, 008001, 008007, 008023, 103000, 031001, 005002, 006002, 010002,
+               008023, 008007, 008001 ]
+"316009" = [  111000, 031001, 008011, 008007, 007002, 007002, 102000, 031001, 005002, 006002,
+               020041, 008007, 008011 ]
+"316010" = [  107000, 031001, 008011, 008007, 001022, 005002, 006002, 008007, 008011 ]
+"316011" = [  117000, 031001, 008011, 001022, 008007, 102000, 031001, 005002, 006002, 008021,
+               004001, 004002, 004003, 004004, 004005, 020090, 008021, 008007, 008011 ]
+"316020" = [  001023, 001025, 001027, 301011, 301012 ]
+"316021" = [  301023, 002041, 019001, 019007, 019005, 019006, 019008, 008005, 010004, 008005,
+               010004, 019007, 008005, 008021, 004075, 011040, 019007, 105004, 005021, 005021,
+               102002, 019003, 019004 ]
+"316022" = [  001032, 002041, 019001, 019010, 118000, 031001, 008021, 004014, 008005, 301023,
+               019005, 019006, 010004, 011041, 008021, 004075, 011040, 019008, 105004, 005021,
+               005021, 102002, 019003, 019004 ]
+"316026" = [  316020, 316021 ]
+"316030" = [  301014, 001037, 010064, 008019, 001062, 008019, 001065, 008019, 001062, 008019
+               ]
+"316031" = [  008021, 301011, 301012, 301027, 019005, 019006, 020028, 008021 ]
+"316032" = [  008021, 301011, 301012, 301027, 008021 ]
+"316033" = [  008021, 301011, 301012, 101000, 031001, 301027, 008021 ]
+"316034" = [  008079, 316030, 008011, 001022, 008007, 301023, 008007, 020090, 316031, 101000,
+               031000, 316032, 101000, 031001, 316033, 008011, 008079 ]
+"316035" = [  008079, 316030, 008011, 020023, 020021, 020008, 316031, 008011, 008079 ]
+"316036" = [  008079, 316030, 008011, 001027, 316031, 101000, 031000, 316032, 101000, 031001,
+               316033, 008011, 008079 ]
+"316037" = [  008079, 316030, 008011, 011031, 316031, 008011, 008079 ]
+"316038" = [  008079, 316030, 008011, 020041, 020021, 316031, 008011, 008079 ]
+"316039" = [  008079, 316030, 008011, 020024, 316031, 008011, 008079 ]
+"316040" = [  316030, 008079, 301014, 001037, 010064, 008079 ]
+"316050" = [  301001, 301011, 301012, 002160, 008005, 005002, 006002, 008005, 019100, 019005,
+               019006, 019101, 019102, 019103, 019104, 019105 ]
+"316052" = [  301005, 301011, 301012, 001007, 025150, 122000, 031001, 001027, 019150, 019106,
+               008005, 005002, 006002, 008005, 019107, 019005, 019006, 019108, 019109, 019110,
+               019111, 019112, 019113, 019114, 019115, 019116, 019117, 019118, 019119 ]
+"318001" = [  301025, 024011 ]
+"318003" = [  301026, 024005, 024004, 024021 ]
+"318004" = [  301025, 004023, 013011, 024005, 024004, 024022 ]
+"321001" = [  002101, 002114, 002105, 002106, 002107, 002121 ]
+"321003" = [  021051, 021014, 021017, 021030 ]
+"321004" = [  301031, 002003, 101000, 031001, 321003 ]
+"321005" = [  025004, 002121, 002122, 002123, 002124, 002125, 002126, 002127, 002128, 002129,
+               002130, 002131 ]
+"321006" = [  025001, 025002, 025003, 025005 ]
+"321007" = [  025009, 025010, 025011, 025012, 025013, 025015, 025016, 025017 ]
+"321008" = [  025006, 025007, 025008 ]
+"321009" = [  025018, 025019 ]
+"321010" = [  002101, 007002, 002102, 002103, 002104, 002105, 002106, 002107, 002108, 002109,
+               002110, 002132, 002133 ]
+"321011" = [  030031, 030032, 029002 ]
+"321012" = [  101000, 031001, 002135 ]
+"321021" = [  002003, 002101, 201130, 002106, 201000, 201132, 202130, 002121, 202000, 201000,
+               201133, 202129, 025001, 202000, 201000 ]
+"321022" = [  007007, 204001, 031021, 011001, 204000, 011002, 204001, 031021, 011006, 204000,
+               021030 ]
+"321023" = [  007007, 021091, 021030, 202129, 021014, 201129, 021017, 202000, 201000 ]
+"321024" = [  007007, 204001, 031021, 012007, 011006, 204000, 021030 ]
+"321025" = [  007007, 021091, 021030, 202129, 021014, 201129, 021017, 202000, 201000, 021092,
+               021030, 025092, 201129, 202129, 021017, 202000, 201000 ]
+"321026" = [  007007, 204001, 031021, 012007, 025091, 011071, 011072, 011073, 011074, 204000
+               ]
+"321027" = [  021118, 202129, 201132, 002112, 201000, 201131, 002111, 201000, 202000, 002104,
+               021105, 021106, 021107, 021114, 021115, 021116, 008018, 021117 ]
+"321028" = [  021118, 202129, 201132, 002112, 201000, 201131, 002111, 201000, 202000, 002104,
+               021123, 021106, 021107, 021114, 021115, 021116, 008018, 021117 ]
+"321030" = [  008085, 202129, 201131, 002111, 201000, 202000, 002134, 021062, 021063, 021158,
+               021159, 021160, 021161, 021162, 021163, 021164, 021165, 021166 ]
+"340001" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 033060, 033061, 033062, 033063, 033064, 033065, 101010, 340002, 101087,
+               340003, 002019, 025051, 101007, 340004 ]
+"340002" = [  025140, 025141, 025142 ]
+"340003" = [  104100, 201136, 005042, 201000, 014046 ]
+"340004" = [  005060, 005061, 025085, 105006, 005042, 025142, 014047, 025142, 014048 ]
+"340005" = [  001007, 002019, 001096, 025061, 005044, 005040, 001030, 301011, 301012, 004007,
+               005001, 006001, 008029, 008074, 008077, 040011, 025097, 025095, 025098, 025099,
+               021144, 025096, 040012, 040013, 021169, 022151, 022162, 022163, 025160, 025133,
+               022156, 022164, 022165, 022166, 021137, 021138, 022167, 021139, 021118, 021145,
+               021146, 021147, 022168, 022169, 022170, 025161, 025162, 022171, 022172, 022173,
+               022174, 021170, 021171, 022175, 021172, 021118, 021173, 021174, 021175, 102003,
+               002153, 012063, 013090, 013091, 007002, 011097, 011098, 007002, 011095, 011096,
+               010096, 010081, 010082, 010083, 010101, 025132, 025163, 025126, 025128, 025164,
+               010085, 010097, 010086, 010087, 010092, 010088, 010089, 010098, 010099, 010090,
+               010100, 010093, 025127, 040014 ]
+"340007" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 103003, 025140, 025141, 033060, 033061, 033062, 033063, 033064, 033065,
+               040020, 101010, 340002, 101087, 340003, 002019, 025051, 101007, 340004, 020081,
+               008029, 020083, 008029, 040018, 040019, 040021, 040022 ]
+"340008" = [  001007, 001031, 002019, 002020, 004001, 004002, 004003, 004004, 004005, 202131,
+               201138, 004006, 201000, 202000, 005001, 006001, 007024, 005021, 007025, 005022,
+               005043, 005040, 201133, 005041, 201000, 201132, 025070, 201000, 202126, 007001,
+               202000, 103003, 025140, 025141, 033060, 033061, 033062, 033063, 033064, 033065,
+               040020, 101010, 340002, 104000, 031002, 201136, 005042, 201000, 014046, 002019,
+               025051, 101007, 340004, 020081, 008029, 020083, 008029, 040018, 040019, 040021,
+               040022 ]
diff --git a/definitions/bufr/tables/3/local/1/98/0/element.table b/definitions/bufr/tables/3/local/1/98/0/element.table
index e3f07c2..550619f 100644
--- a/definitions/bufr/tables/3/local/1/98/0/element.table
+++ b/definitions/bufr/tables/3/local/1/98/0/element.table
@@ -166,7 +166,7 @@
 021227|glareAngle|table|GLARE ANGLE|CODE TABLE|0|6|6|NA|0|0
 021230|numberOfVectorAmbiguities|long|NUMBER OF VECTOR AMBIGUITIES|Numeric|0|0|3|NA|0|0
 021231|indexOfSelectedWindVector|long|INDEX OF SELECTED WIND VECTOR|Numeric|0|0|3|NA|0|0
-021232|totalNmberOfSigma0Measurements|long|TOTAL NMBER OF SIGMA-0 MEASUREMENTS|Numeric|0|0|5|NA|0|0
+021232|totalNumberOfSigma0Measurements|long|TOTAL NMBER OF SIGMA-0 MEASUREMENTS|Numeric|0|0|5|NA|0|0
 021233|numberOfSigma0UsableForWind|long|NUMBER OF SIGMA-0 USABLE FOR WIND|Numeric|0|0|5|NA|0|0
 021234|likelihoodComputedForSolution|long|LIKELIHOOD COMPUTED FOR SOLUTION|Numeric|1|-10000|14|NA|0|0
 021235|windVectorCellQualityFlag|flag|WIND VECTOR CELL QUALITY FLAG|FLAG TABLE|0|0|3|NA|0|0
@@ -176,7 +176,7 @@
 021239|numberOfAftBeamSigma0|long|NUMBER OF AFT-BEAM SIGMA-0|Numeric|1|0|6|NA|0|0
 021240|normalizedRadarCrossSection|long|NORMALIZED RADAR CROSS SECTION|Numeric|2|-10000|14|NA|0|0
 021241|kpVarianceCoefficientAlpha|long|Kp VARIANCE COEFFICIENT (ALPHA)|Numeric|5|0|14|NA|0|0
-021242|kpVarianceCoefficientBetha|long|Kp VARIANCE COEFFICIENT (BETHA)|Numeric|6|0|16|NA|0|0
+021242|kpVarianceCoefficientBeta|long|Kp VARIANCE COEFFICIENT (BETHA)|Numeric|6|0|16|NA|0|0
 021243|kpVarianceCoefficientGamma|long|Kp VARIANCE COEFFICIENT (GAMMA)|Numeric|6|0|16|NA|0|0
 021244|sigma0QualityFlag|flag|SIGMA-0 QUALITY FLAG|FLAG TABLE|0|0|15|NA|0|0
 022192|spectralPeriod|double|SPECTRAL PERIOD|s|2|0|13|NA|0|0
diff --git a/definitions/bufr/tables/3/wmo/11/element.table b/definitions/bufr/tables/3/wmo/11/element.table
index cf80ac5..0771118 100644
--- a/definitions/bufr/tables/3/wmo/11/element.table
+++ b/definitions/bufr/tables/3/wmo/11/element.table
@@ -262,12 +262,12 @@
 004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2
 004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2
 004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2
-004065|shortTimeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
-004073|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
-004074|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
-004075|shortTimePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
+004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
+004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
+004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
+004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
 004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2
-004086|longTimePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
+004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
 005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
 005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
 005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
@@ -1292,6 +1292,6 @@
 040014|highFrequencyFluctuationsOfSeaSurfaceTopographyCorrection|double|HIGH FREQUENCY FLUCTUATIONS OF THE SEA SURFACE TOPOGRAPHY CORREC|m|4|-3000|13|NA|0|0
 040018|averageOfImagerMeasurements|double|GLACAVGLMAGLLS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|NA|0|0
 040019|giacvarimagiisVarianceOfImagerMeasurements|double|GLACVARLMAGLLS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|NA|0|0
-040020|gqisflagqualdetailedQualityFlagForSystem|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|NA|0|0
+040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|NA|0|0
 040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH SNOW/I|%|0|0|7|NA|0|0
 040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|NA|0|0
diff --git a/definitions/bufr/templates/BufrTemplate.def b/definitions/bufr/templates/BufrTemplate.def
new file mode 100644
index 0000000..cfe2699
--- /dev/null
+++ b/definitions/bufr/templates/BufrTemplate.def
@@ -0,0 +1,66 @@
+"synopLand" = { unexpandedDescriptors = 307080; }
+"synopLandFromCoastalAndIslandStations" = { unexpandedDescriptors = 307079; }
+"synopMobil" = { unexpandedDescriptors = 307090; }
+"surfaceObservationOneHour" = { unexpandedDescriptors = 307091; }
+"synopOneHour" = { unexpandedDescriptors = 307096; }
+"snow" = { unexpandedDescriptors = 307101; }
+"pilotPressureCoordinate" = { unexpandedDescriptors = 309050; }
+"pilotHeightCoordinate" = { unexpandedDescriptors = 309051; }
+"temp" = { unexpandedDescriptors = 309052; }
+"tempDrop" = { unexpandedDescriptors = 309053; }
+"climat" = { unexpandedDescriptors = 307073; }
+"mooredBuoys" = { unexpandedDescriptors = 315008; }
+"driftingBuoys" = { unexpandedDescriptors = 315009; }
+"subSurfaceProfilingFloats" = { unexpandedDescriptors = 315003; }
+"XbtTemperatureProfile" = { unexpandedDescriptors = 315004; }
+"Trackob" = { unexpandedDescriptors = 308010; }
+"AtovsHirs" = { unexpandedDescriptors = 310008 ; }
+"AtovsAmsuA" = { unexpandedDescriptors = 310009 ; }
+"AtovsAmsuB" = { unexpandedDescriptors = 310010 ; }
+"AtovsAmsuB" = { unexpandedDescriptors = 310010 ; }
+"AtovsFieldOfView" = { unexpandedDescriptors = 310011 ; }
+"AtovsChannel" = { unexpandedDescriptors = 310012 ; }
+"AtovsChannel" = { unexpandedDescriptors = 310012 ; }
+"Avhrr" = { unexpandedDescriptors = 310013 ; }
+"MeteosatRadiance" = { unexpandedDescriptors = 310015 ; }
+"MsgRadiance" = { unexpandedDescriptors = 310016 ; }
+"SsmisTemperature" = { unexpandedDescriptors = 310025 ; }
+"SatelliteRadioOccultation" = { unexpandedDescriptors = 310026 ; }
+"MipasOrGomos" = { unexpandedDescriptors = 310030 ; }
+"Cris" = { unexpandedDescriptors = 310060 ; }
+"Atms" = { unexpandedDescriptors = 310061 ; }
+"Viirs" = { unexpandedDescriptors = 310062 ; }
+"seaSurfaceTemperature" = { unexpandedDescriptors = 310063 ; }
+"aerosolOpticalThickness" = { unexpandedDescriptors = 310064 ; }
+"OmpsNadirProfile" = { unexpandedDescriptors = 310065 ; }
+"OmpsTotalColumn" = { unexpandedDescriptors = 310066 ; }
+"OmpsTotalColumn" = { unexpandedDescriptors = 310065 ; }
+"amdar" = { unexpandedDescriptors = 311005 ; }
+"WigosAmdar" = { unexpandedDescriptors = 311010 ; }
+"aircraftReport" = { unexpandedDescriptors = 311001 ; }
+"aircraftAscentDescentProfile" = { unexpandedDescriptors = 311008 ; }
+"aircraftAscentDescentProfile" = { unexpandedDescriptors = 311009 ; }
+"aircraftReportWithSecondsAndPressure" = { unexpandedDescriptors = [301051, 4006,7002, 10004,12001, 11001, 11002, 11031, 11032, 11033, 20041] ; }
+"Iagos" = { unexpandedDescriptors = 311011 ; }
+"Hirs" = { unexpandedDescriptors = 312014 ; }
+"microwaveSoundingUnit" = { unexpandedDescriptors = 312016 ; }
+"stratosphericSoundingUnit" = { unexpandedDescriptors = 312018 ; }
+"waveScatterometer" = { unexpandedDescriptors = 312020 ; }
+"windScatterometer" = { unexpandedDescriptors = 312021 ; }
+"radarAltimeter" = { unexpandedDescriptors = 312022 ; }
+"waveScatterometerEnhanced" = { unexpandedDescriptors = 312024 ; }
+"Quickscat" = { unexpandedDescriptors = 312026 ; }
+"SeawindsQuickscat" = { unexpandedDescriptors = 312028 ; }
+"AatsrSeaSurfaceTemperature" = { unexpandedDescriptors = 312045 ; }
+"Meris" = { unexpandedDescriptors = 312050 ; }
+"oceanCrossSpectraWvs" = { unexpandedDescriptors = 312051 ; }
+"radarAltimeter2" = { unexpandedDescriptors = 312052 ; }
+"oceanWaveSpectra" = { unexpandedDescriptors = 312053 ; }
+"AscatL1b" = { unexpandedDescriptors = 312058 ; }
+"AscatL1bL2" = { unexpandedDescriptors = 312061 ; }
+"Smos" = { unexpandedDescriptors = 312070 ; }
+"Siral" = { unexpandedDescriptors = 312071 ; }
+"IasiL1c" = { unexpandedDescriptors = 340007 ; }
+"SaralAltika" = { unexpandedDescriptors = 340011 ; }
+
+
diff --git a/definitions/bufr/templates/local/BufrTemplate.def b/definitions/bufr/templates/local/BufrTemplate.def
new file mode 100644
index 0000000..b42212c
--- /dev/null
+++ b/definitions/bufr/templates/local/BufrTemplate.def
@@ -0,0 +1,3 @@
+"synopLand" = { unexpandedDescriptors = 307080; }
+"airep" = { unexpandedDescriptors = 311001 ; }
+"airepWithSecondsAndPressure" = { unexpandedDescriptors = [301051, 4006,7002, 10004,12001, 11001, 11002, 11031, 11032, 11033, 20041] ; }
diff --git a/definitions/check_grib_defs.pl b/definitions/check_grib_defs.pl
index 2c61f03..27984f6 100755
--- a/definitions/check_grib_defs.pl
+++ b/definitions/check_grib_defs.pl
@@ -99,7 +99,7 @@ if (-f "cfVarName.def") {
    my %cfVar_map     = process("cfVarName.def");
    is_deeply(\%name_map, \%cfVar_map, 'Check name and cfVarName are the same');
 } else {
-   print "\nNote: Did not find a cfVarName.def file\n\n";
+   print "\n\tWARNING: Did not find a cfVarName.def file!!!\n\n";
 }
 
 done_testing();
@@ -176,11 +176,11 @@ sub process {
                 # So make sure it comes BEFORE the scale keys! i.e. if we find a scale key then our map should have
                 # the typeOf key since it came before
                 if ($key =~ /scale.*OfSecondFixedSurface/ && !exists($map2{'typeOfSecondFixedSurface'})) {
-                    print "File: $filename, line: $lineNum: 'Type of Surface' problem: Please check: $desc\n";
+                    print "File: $filename, line: $lineNum: TypeOfSurface problem (GRIB-229): Please check: $desc\n";
                     #$error = 1;
                 }
                 if ($key =~ /typeOfSecondFixedSurface/ && exists($map2{'typeOfFirstFixedSurface'})) {
-                    print "File: $filename, line: $lineNum: TypeOf1 before TypeOf2 problem: Please check: $desc\n";
+                    print "File: $filename, line: $lineNum: Potential TypeOfSurface problem (GRIB-229): Please check: $desc\n";
                 }
             }
             $map2{$key} = $val;
@@ -188,7 +188,9 @@ sub process {
         elsif ($this =~ /'(.*)'.*=/) {
             $concept = $1;
             if ($filename eq 'cfVarName.def') {
-               if ($concept =~ /^[0-9]/) {
+               #if ($concept =~ /^[0-9]/) {
+               # Check CF naming convention. Do not allow numeric initial char or ~
+               if ($concept !~ /^[A-z]/) {
                   $error = 1;
                   die "File: $filename, line: $lineNum: Invalid netcdf variable name: $concept";
                }
diff --git a/definitions/common/statistics_grid.def b/definitions/common/statistics_grid.def
index 5a1f19a..78182df 100644
--- a/definitions/common/statistics_grid.def
+++ b/definitions/common/statistics_grid.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/common/statistics_spectral.def b/definitions/common/statistics_spectral.def
index 4c18a30..1cc87c7 100644
--- a/definitions/common/statistics_spectral.def
+++ b/definitions/common/statistics_spectral.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/create_def.pl b/definitions/create_def.pl
index 0ddccf2..debac4c 100755
--- a/definitions/create_def.pl
+++ b/definitions/create_def.pl
@@ -9,7 +9,7 @@ use DBI;
 my $basedir = dirname($0);
 
 my $db="param";
-my $host="grib-param-db-prod.ecmwf.int";
+my $host="grib-param-db-test.ecmwf.int";
 my $user="ecmwf_ro";
 my $pass="ecmwf_ro";
 my $filename; my $filebase; my $out; my $conceptDir;
@@ -70,7 +70,7 @@ EOF
             #system("p4 edit $filebase/$key.def");
             open($out,"> $filebase/$key.def")
                 or die "unable to open $filebase/$key.def";
-            print $out "# Automatically generated by $0 from database $db\@$host, do not edit\n";
+            print $out "# Automatically generated by $0, do not edit\n";
             $p=();
         }
         if ($p ne $paramId || exists($seen{$attribute}) ) {
@@ -126,7 +126,7 @@ sub create_paramId_def {
 			system("p4 edit $filebase/paramId.def");
             open($out,"> $filebase/paramId.def")
                 or die "unable to open $filebase/paramId.def";
-            print $out "# Automatically generated by $0 from database $db\@$host, do not edit\n";
+            print $out "# Automatically generated by $0, do not edit\n";
             $p=();
         }
 		if ($p ne $paramId || exists($seen{$attribute}) ) {
@@ -169,7 +169,7 @@ sub create_def_old {
 			system("p4 edit $filebase/$key.def");
             open($out,"> $filebase/$key.def")
                 or die "unable to open $filebase/$key.def";
-            print $out "# Automatically generated by $0 from database $db\@$host, do not edit\n";
+            print $out "# Automatically generated by $0, do not edit\n";
         }
 		print $out "\'$value\' \t= { paramId=$paramId; }\n";
 	}
diff --git a/definitions/create_mars_struct.pl b/definitions/create_mars_struct.pl
index 074d285..aa8af59 100755
--- a/definitions/create_mars_struct.pl
+++ b/definitions/create_mars_struct.pl
@@ -7,8 +7,8 @@ use Data::Dumper;
 
 my $db="param";
 my $host="grib-param-db-prod.ecmwf.int";
-my $user="ecmwf";
-my $pass="";
+my $user="ecmwf_ro";
+my $pass="ecmwf_ro";
 my $filename; my $filebase; my $out; my $conceptDir;
 my $query; my $q; my $qh;
 
@@ -64,7 +64,6 @@ while (my ($paramId,$shortName)=$qh->fetchrow_array )
 	}
 }
 
-system("p4 edit mars_param.table");
 open(my $mars_param_out,"> mars_param.table")
                 or die "unable to open mars_param.table: $!";
 
@@ -76,7 +75,6 @@ foreach my $k ( sort keys %values ) {
 
 close $mars_param_out or die " mars_param.table: $!";
  
-system("p4 edit param_id.table");
 open(my $param_id_out,"> param_id.table")
                 or die "unable to open param_id.table: $!";
 
diff --git a/definitions/grib1/0.table b/definitions/grib1/0.table
index f89685f..abb984a 100644
--- a/definitions/grib1/0.table
+++ b/definitions/grib1/0.table
@@ -50,7 +50,7 @@
 82 eswi Norrkoping
 84 lfpw French Weather Service - Toulouse
 85 lfpw French Weather Service - Toulouse
-86 86 Helsinki
+86 efkl Helsinki
 87 87 Belgrade
 88 enmi Oslo
 89 89 Prague
@@ -93,6 +93,7 @@
 247 hadc Hadley Centre
 250 cosmo COnsortium for Small scale MOdelling (COSMO)
 251 251 Meteorological Cooperation on Operational NWP (MetCoOp)
+252 mpim Max Planck Institute for Meteorology (MPI-M)
 254 eums EUMETSAT Operation Centre
 # 255 Missing value
 255 consensus Consensus
diff --git a/definitions/grib1/2.233.253.table b/definitions/grib1/2.233.253.table
index 9cf8fce..2e2aad5 100644
--- a/definitions/grib1/2.233.253.table
+++ b/definitions/grib1/2.233.253.table
@@ -168,8 +168,8 @@
 200 tke TKE TKE m**2 s**-2
 201 grpl GRPL Graupel kg m**-2
 204 hail HAIL Hail kg m**-2
-209 lgt LGT Lightning -
 210 refl REFL Simulated reflectivity dBz
+211 lgt LGT Lightning -
 212 pdep PDEP Pressure departure Pa
 213 vdiv VDIV Vertical Divergence s**-1
 214 upom UPOM Updraft omega ms*-1
diff --git a/definitions/grib1/2.98.132.table b/definitions/grib1/2.98.132.table
index 787260b..67adce8 100644
--- a/definitions/grib1/2.98.132.table
+++ b/definitions/grib1/2.98.132.table
@@ -1,5 +1,7 @@
 # This file was automatically generated by ./param.pl
+44 capesi CAPESI Convective available potential energy shear index (-1 to 1)
 49 49 10GP 10 metre wind gust index (-1 to 1)
+59 capei CAPEI Convective available potential energy index (-1 to 1)
 144 144 sfi Snowfall index (-1 to 1)
 165 165 10SP 10 metre speed index (-1 to 1)
 167 167 2TP 2 metre temperature index (-1 to 1)
diff --git a/definitions/grib1/2.98.140.table b/definitions/grib1/2.98.140.table
index c1e0146..c0378f1 100644
--- a/definitions/grib1/2.98.140.table
+++ b/definitions/grib1/2.98.140.table
@@ -1,9 +1,10 @@
 # This file was automatically generated by ./param.pl
-080 wx1 Wave experimental parameter 1
-081 wx2 Wave experimental parameter 2
-082 wx3 Wave experimental parameter 3
-083 wx4 Wave experimental parameter 4
-084 wx5 Wave experimental parameter 5
+80 wx1 Wave experimental parameter 1
+81 wx2 Wave experimental parameter 2
+82 wx3 Wave experimental parameter 3
+83 wx4 Wave experimental parameter 4
+84 wx5 Wave experimental parameter 5
+120 sh10 SH10 Significant wave height of all waves with period larger than 10s (m)
 121 swh1 Significant wave height of first swell partition
 122 mwd1 Mean wave direction of first swell partition
 123 mwp1 Mean wave period of first swell partition
diff --git a/definitions/grib1/2.98.228.table b/definitions/grib1/2.98.228.table
index d3e76d1..b473514 100644
--- a/definitions/grib1/2.98.228.table
+++ b/definitions/grib1/2.98.228.table
@@ -1,89 +1,99 @@
 # This file was automatically generated by ./param.pl
-1 1 CIN Convective inhibition (J kg**-1)
-2 2 OROG Orography (m)
-3 3 ZUST Friction velocity (m s**-1)
-4 4 MEAN2T Mean temperature at 2 metres (K)
-5 5 MEAN10WS Mean of 10 metre wind speed (m s**-1)
-6 6 MEANTCC Mean total cloud cover (0 - 1)
-7 7 DL Lake depth (m)
-8 8 LMLT Lake mix-layer temperature (K)
-9 9 LMLD Lake mix-layer depth (m)
-10 10 LBLT Lake bottom temperature (K)
-11 11 LTLT Lake total layer temperature (K)
-12 12 LSHF Lake shape factor (dimensionless)
-13 13 LICT Lake ice temperature (K)
-14 14 LICD Lake ice depth (m)
-15 15 DNDZN Minimum vertical gradient of refractivity inside trapping layer (m**-1)
-16 16 DNDZA Mean vertical gradient of refractivity inside trapping layer (m**-1)
-17 17 DCTB Duct base height (m)
-18 18 TPLB Trapping layer base height (m)
-19 19 TPLT Trapping layer top height (m)
-21 21 FDIR Total sky direct solar radiation at surface (J m**-2)
-22 22 CDIR Clear-sky direct solar radiation at surface (J m**-2)
-23 23 CBH Cloud base height (m)
-24 24 DEG0L Zero degree level (m)
-25 25 HVIS Horizontal visibility (m)
-26 26 MX2T3 Maximum temperature at 2 metres in the last 3 hours (K)
-27 27 MN2T3 Minimum temperature at 2 metres in the last 3 hours (K)
-28 28 10FG3 10 metre wind gust in the last 3 hours (m s**-1)
-29 29 I10FG Instantaneous 10 metre wind gust (m s**-1)
-39 39 SM Soil Moisture (kg m**-3)
-40 40 SWI1 Soil wetness index in layer 1 (dimensionless)
-41 41 SWI2 Soil wetness index in layer 2 (dimensionless)
-42 42 SWI3 Soil wetness index in layer 3 (dimensionless)
-43 43 SWI4 Soil wetness index in layer 4 (dimensionless)
-78 78 GPPBFAS GPP coefficient from Biogenic Flux Adjustment System (dimensionless)
-79 79 RECBFAS Rec coefficient from Biogenic Flux Adjustment System (dimensionless)
-80 80 ACO2NEE Accumulated Carbon Dioxide Net Ecosystem Exchange (kg m**-2)
-81 81 ACO2GPP Accumulated Carbon Dioxide Gross Primary Production (kg m**-2)
-82 82 ACO2REC Accumulated Carbon Dioxide Ecosystem Respiration (kg m**-2)
-83 83 FCO2NEE Flux of Carbon Dioxide Net Ecosystem Exchange (kg m**-2 s**-1)
-84 84 FCO2GPP Flux of Carbon Dioxide Gross Primary Production (kg m**-2 s**-1)
-85 85 FCO2REC Flux of Carbon Dioxide Ecosystem Respiration (kg m**-2 s**-1)
-88 88 TCSLW Total column supercooled liquid water (kg m**-2)
-89 89 TCRW Total column rain water (kg m**-2)
-90 90 TCSW Total column snow water (kg m**-2)
-91 91 CCF Canopy cover fraction (0 - 1)
-92 92 STF Soil texture fraction (0 - 1)
-93 93 SWV Volumetric soil moisture (m**3 m**-3)
-94 94 IST Ice temperature (K)
-121 121 KX K index (K)
-123 123 TOTALX Total totals index (K)
-129 129 SSRDC Surface solar radiation downward clear-sky (J m**-2)
-130 130 STRDC Surface thermal radiation downward clear-sky (J m**-2)
-131 131 U10N Neutral wind at 10 m u-component (m s**-1)
-132 132 V10N Neutral wind at 10 m v-component (m s**-1)
-134 134 VTNOWD V-tendency from non-orographic wave drag (m s**-2)
-136 136 UTNOWD U-tendency from non-orographic wave drag (m s**-2)
-139 139 ST Soil Temperature (K)
-141 141 SD Snow depth water equivalent (kg m**-2)
-144 144 SF Snow Fall water equivalent (kg m**-2)
-164 164 TCC Total Cloud Cover (%)
-170 170 CAP Field capacity (kg m**-3)
-171 171 WILT Wilting point (kg m**-3)
-217 217 ILSPF Instantaneous large-scale surface precipitation fraction (0 - 1)
-218 218 CRR Convective rain rate (kg m**-2 s**-1)
-219 219 LSRR Large scale rain rate (kg m**-2 s**-1)
-220 220 CSFR Convective snowfall rate water equivalent (kg m**-2 s**-1)
-221 221 LSSFR Large scale snowfall rate water equivalent (kg m**-2 s**-1)
-222 222 MXTPR3 Maximum total precipitation rate in the last 3 hours (kg m**-2 s**-1)
-223 223 MNTPR3 Minimum total precipitation rate in the last 3 hours (kg m**-2 s**-1)
-224 224 MXTPR6 Maximum total precipitation rate in the last 6 hours (kg m**-2 s**-1)
-225 225 MNTPR6 Minimum total precipitation rate in the last 6 hours (kg m**-2 s**-1)
-226 226 MXTPR Maximum total precipitation rate since previous post-processing (kg m**-2 s**-1)
-227 227 MNTPR Minimum total precipitation rate since previous post-processing (kg m**-2 s**-1)
-228 228 TP Total Precipitation (kg m**-2)
-229 229 SMOS_TB_CDFA SMOS first Brightness Temperature Bias Correction parameter (K)
-230 230 SMOS_TB_CDFB SMOS second Brightness Temperature Bias Correction parameter (dimensionless)
-242 242 FDIF Surface solar radiation diffuse total sky (J m**-2)
-243 243 CDIF Surface solar radiation diffuse clear-sky (J m**-2)
-244 244 ALDR Surface albedo of direct radiation (0 - 1)
-245 245 ALDF Surface albedo of diffuse radiation (0 - 1)
-246 246 100U 100 metre U wind component (m s**-1)
-247 247 100V 100 metre V wind component (m s**-1)
-249 249 100SI 100 metre wind speed (m s**-1)
-250 250 IRRFR Irrigation fraction (Proportion)
-251 251 PEV Potential evaporation (m)
-252 252 IRR Irrigation (m)
-253 253 ASCAT_SM_CDFA ASCAT first soil moisture CDF matching parameter (m**3 m**-3)
-254 254 ASCAT_SM_CDFB ASCAT second soil moisture CDF matching parameter (dimensionless)
+1 cin CIN Convective inhibition (J kg**-1)
+2 orog OROG Orography (m)
+3 zust ZUST Friction velocity (m s**-1)
+4 mean2t MEAN2T Mean temperature at 2 metres (K)
+5 mean10ws MEAN10WS Mean of 10 metre wind speed (m s**-1)
+6 meantcc MEANTCC Mean total cloud cover (0 - 1)
+7 dl DL Lake depth (m)
+8 lmlt LMLT Lake mix-layer temperature (K)
+9 lmld LMLD Lake mix-layer depth (m)
+10 lblt LBLT Lake bottom temperature (K)
+11 ltlt LTLT Lake total layer temperature (K)
+12 lshf LSHF Lake shape factor (dimensionless)
+13 lict LICT Lake ice temperature (K)
+14 licd LICD Lake ice depth (m)
+15 dndzn DNDZN Minimum vertical gradient of refractivity inside trapping layer (m**-1)
+16 dndza DNDZA Mean vertical gradient of refractivity inside trapping layer (m**-1)
+17 dctb DCTB Duct base height (m)
+18 tplb TPLB Trapping layer base height (m)
+19 tplt TPLT Trapping layer top height (m)
+21 fdir FDIR Total sky direct solar radiation at surface (J m**-2)
+22 cdir CDIR Clear-sky direct solar radiation at surface (J m**-2)
+23 cbh CBH Cloud base height (m)
+24 deg0l DEG0L Zero degree level (m)
+25 hvis HVIS Horizontal visibility (m)
+26 mx2t3 MX2T3 Maximum temperature at 2 metres in the last 3 hours (K)
+27 mn2t3 MN2T3 Minimum temperature at 2 metres in the last 3 hours (K)
+28 10fg3 10FG3 10 metre wind gust in the last 3 hours (m s**-1)
+29 i10fg I10FG Instantaneous 10 metre wind gust (m s**-1)
+39 sm SM Soil Moisture (kg m**-3)
+40 swi1 SWI1 Soil wetness index in layer 1 (dimensionless)
+41 swi2 SWI2 Soil wetness index in layer 2 (dimensionless)
+42 swi3 SWI3 Soil wetness index in layer 3 (dimensionless)
+43 swi4 SWI4 Soil wetness index in layer 4 (dimensionless)
+44 capes CAPES Convective available potential energy shear (m**2 s**-2)
+46 hcct HCCT Height of convective cloud top (m)
+47 hwbt0 HWBT0 Height of Zero Deg Wet Bulb Temperature (m)
+48 hwbt1 HWBT1 Height of One Deg Wet Bulb Temperature (m)
+50 litoti LITOTI Instantaneous total lightning density (flashes/km2/day)
+51 litota LITOTA Averaged total lightning density (flashes/km2/day)
+52 licgi LICGI Instantaneous cloud-to-ground lightning density (flashes/km2/day)
+53 licga LICGA Averaged cloud-to-ground lightning density (flashes/km2/day)
+78 gppbfas GPPBFAS GPP coefficient from Biogenic Flux Adjustment System (dimensionless)
+79 recbfas RECBFAS Rec coefficient from Biogenic Flux Adjustment System (dimensionless)
+80 aco2nee ACO2NEE Accumulated Carbon Dioxide Net Ecosystem Exchange (kg m**-2)
+81 aco2gpp ACO2GPP Accumulated Carbon Dioxide Gross Primary Production (kg m**-2)
+82 aco2rec ACO2REC Accumulated Carbon Dioxide Ecosystem Respiration (kg m**-2)
+83 fco2nee FCO2NEE Flux of Carbon Dioxide Net Ecosystem Exchange (kg m**-2 s**-1)
+84 fco2gpp FCO2GPP Flux of Carbon Dioxide Gross Primary Production (kg m**-2 s**-1)
+85 fco2rec FCO2REC Flux of Carbon Dioxide Ecosystem Respiration (kg m**-2 s**-1)
+88 tcslw TCSLW Total column supercooled liquid water (kg m**-2)
+89 tcrw TCRW Total column rain water (kg m**-2)
+90 tcsw TCSW Total column snow water (kg m**-2)
+91 ccf CCF Canopy cover fraction (0 - 1)
+92 stf STF Soil texture fraction (0 - 1)
+93 swv SWV Volumetric soil moisture (m**3 m**-3)
+94 ist IST Ice temperature (K)
+109 ceil CEIL Ceiling (m)
+121 kx KX K index (K)
+123 totalx TOTALX Total totals index (K)
+129 ssrdc SSRDC Surface solar radiation downward clear-sky (J m**-2)
+130 strdc STRDC Surface thermal radiation downward clear-sky (J m**-2)
+131 u10n U10N Neutral wind at 10 m u-component (m s**-1)
+132 v10n V10N Neutral wind at 10 m v-component (m s**-1)
+134 vtnowd VTNOWD V-tendency from non-orographic wave drag (m s**-2)
+136 utnowd UTNOWD U-tendency from non-orographic wave drag (m s**-2)
+139 st ST Soil Temperature (K)
+141 sd SD Snow depth water equivalent (kg m**-2)
+144 sf SF Snow Fall water equivalent (kg m**-2)
+164 tcc TCC Total Cloud Cover (%)
+170 cap CAP Field capacity (kg m**-3)
+171 wilt WILT Wilting point (kg m**-3)
+216 fzra FZRA Accumulated freezing rain (m)
+217 ilspf ILSPF Instantaneous large-scale surface precipitation fraction (0 - 1)
+218 crr CRR Convective rain rate (kg m**-2 s**-1)
+219 lsrr LSRR Large scale rain rate (kg m**-2 s**-1)
+220 csfr CSFR Convective snowfall rate water equivalent (kg m**-2 s**-1)
+221 lssfr LSSFR Large scale snowfall rate water equivalent (kg m**-2 s**-1)
+222 mxtpr3 MXTPR3 Maximum total precipitation rate in the last 3 hours (kg m**-2 s**-1)
+223 mntpr3 MNTPR3 Minimum total precipitation rate in the last 3 hours (kg m**-2 s**-1)
+224 mxtpr6 MXTPR6 Maximum total precipitation rate in the last 6 hours (kg m**-2 s**-1)
+225 mntpr6 MNTPR6 Minimum total precipitation rate in the last 6 hours (kg m**-2 s**-1)
+226 mxtpr MXTPR Maximum total precipitation rate since previous post-processing (kg m**-2 s**-1)
+227 mntpr MNTPR Minimum total precipitation rate since previous post-processing (kg m**-2 s**-1)
+228 tp TP Total Precipitation (kg m**-2)
+229 smos_tb_cdfa SMOS_TB_CDFA SMOS first Brightness Temperature Bias Correction parameter (K)
+230 smos_tb_cdfb SMOS_TB_CDFB SMOS second Brightness Temperature Bias Correction parameter (dimensionless)
+242 fdif FDIF Surface solar radiation diffuse total sky (J m**-2)
+243 cdif CDIF Surface solar radiation diffuse clear-sky (J m**-2)
+244 aldr ALDR Surface albedo of direct radiation (0 - 1)
+245 aldf ALDF Surface albedo of diffuse radiation (0 - 1)
+246 100u 100U 100 metre U wind component (m s**-1)
+247 100v 100V 100 metre V wind component (m s**-1)
+249 100si 100SI 100 metre wind speed (m s**-1)
+250 irrfr IRRFR Irrigation fraction (Proportion)
+251 pev PEV Potential evaporation (m)
+252 irr IRR Irrigation (m)
+253 ascat_sm_cdfa ASCAT_SM_CDFA ASCAT first soil moisture CDF matching parameter (m**3 m**-3)
+254 ascat_sm_cdfb ASCAT_SM_CDFB ASCAT second soil moisture CDF matching parameter (dimensionless)
diff --git a/definitions/grib1/2.98.230.table b/definitions/grib1/2.98.230.table
index d4d7063..18d1d23 100644
--- a/definitions/grib1/2.98.230.table
+++ b/definitions/grib1/2.98.230.table
@@ -1,13 +1,20 @@
 # This file was automatically generated by ./param.pl
 8 8 SROVAR Surface runoff (variable resolution) (m)
 9 9 SSROVAR Sub-surface runoff (variable resolution) (m)
+20 20 PARCSVAR Clear sky surface photosynthetically active radiation (variable resolution) (J m**-2)
 21 21 FDIRVAR Total sky direct solar radiation at surface (variable resolution) (J m**-2)
 22 22 CDIRVAR Clear-sky direct solar radiation at surface (variable resolution) (J m**-2)
 44 44 ESVAR Snow evaporation (variable resolution) (kg m**-2)
 45 45 SMLTVAR Snowmelt (variable resolution) (kg m**-2)
 46 46 SDURVAR Solar duration (variable resolution) (s)
+50 50 LSPFVAR Large-scale precipitation fraction (variable resolution) (s)
 57 57 UVBVAR Downward UV radiation at the surface (variable resolution) (J m**-2)
 58 58 PARVAR Photosynthetically active radiation at the surface (variable resolution) (J m**-2)
+80 80 ACO2NEEVAR Accumulated Carbon Dioxide Net Ecosystem Exchange (variable resolution) (kg m**-2)
+81 81 ACO2GPPVAR Accumulated Carbon Dioxide Gross Primary Production (variable resolution) (kg m**-2)
+82 82 ACO2RECVAR Accumulated Carbon Dioxide Ecosystem Respiration (variable resolution) (kg m**-2)
+129 129 SSRDCVAR Surface solar radiation downward clear-sky (variable resolution) (J m**-2)
+130 130 STRDCVAR Surface thermal radiation downward clear-sky (variable resolution) (J m**-2)
 142 142 LSPVAR Stratiform precipitation (Large-scale precipitation) (variable resolution) (m)
 143 143 CPVAR Convective precipitation (variable resolution) (m)
 144 144 SFVAR Snowfall (convective + stratiform) (variable resolution) (m of water equivalent)
@@ -35,4 +42,9 @@
 210 210 SSRCVAR Surface net solar radiation, clear sky (variable resolution) (J m**-2)
 211 211 STRCVAR Surface net thermal radiation, clear sky (variable resolution) (J m**-2)
 212 212 TISRVAR TOA incident solar radiation (variable resolution) (J m**-2)
+213 213 VIMDVAR Vertically integrated moisture divergence (variable resolution) (kg m**-2)
+216 216 FZRAVAR Accumulated freezing rain (variable resolution) (m)
 228 228 TPVAR Total precipitation (variable resolution) (m)
+239 239 CSFVAR Convective snowfall (variable resolution) (m of water equivalent)
+240 240 LSFVAR Large-scale snowfall (variable resolution) (m of water equivalent)
+251 251 PEVVAR Potential evaporation (variable resolution) (m)
diff --git a/definitions/grib1/2.98.235.table b/definitions/grib1/2.98.235.table
new file mode 100644
index 0000000..e5d7901
--- /dev/null
+++ b/definitions/grib1/2.98.235.table
@@ -0,0 +1,49 @@
+# This file was automatically generated by ./param.pl
+20 20 - Mean surface runoff rate (kg m**-2 s**-1)
+21 21 - Mean sub-surface runoff rate (kg m**-2 s**-1)
+22 22 - Mean surface photosynthetically active radiation flux, clear sky (W m**-2)
+23 23 - Mean snow evaporation rate (kg m**-2 s**-1)
+24 24 - Mean snowmelt rate (kg m**-2 s**-1)
+25 25 - Mean magnitude of surface stress (N m**-2)
+26 26 - Mean large-scale precipitation fraction (Proportion)
+27 27 - Mean surface downward UV radiation flux (W m**-2)
+28 28 - Mean surface photosynthetically active radiation flux (W m**-2)
+29 29 - Mean large-scale precipitation rate (kg m**-2 s**-1)
+30 30 - Mean convective precipitation rate (kg m**-2 s**-1)
+31 31 - Mean snowfall rate (kg m**-2 s**-1)
+32 32 - Mean boundary layer dissipation (W m**-2)
+33 33 - Mean surface sensible heat flux (W m**-2)
+34 34 - Mean surface latent heat flux (W m**-2)
+35 35 - Mean surface downward short-wave radiation flux (W m**-2)
+36 36 - Mean surface downward long-wave radiation flux (W m**-2)
+37 37 - Mean surface net short-wave radiation flux (W m**-2)
+38 38 - Mean surface net long-wave radiation flux (W m**-2)
+39 39 - Mean top net short-wave radiation flux (W m**-2)
+40 40 - Mean top net long-wave radiation flux (W m**-2)
+41 41 - Mean eastward turbulent surface stress (N m**-2)
+42 42 - Mean northward turbulent surface stress (N m**-2)
+43 43 - Mean evaporation rate (kg m**-2 s**-1)
+44 44 - Sunshine duration fraction (Proportion)
+45 45 - Mean eastward gravity wave surface stress (N m**-2)
+46 46 - Mean northward gravity wave surface stress (N m**-2)
+47 47 - Mean gravity wave dissipation (W m**-2)
+48 48 - Mean runoff rate (kg m**-2 s**-1)
+49 49 - Mean top net short-wave radiation flux, clear sky (W m**-2)
+50 50 - Mean top net long-wave radiation flux, clear sky (W m**-2)
+51 51 - Mean surface net short-wave radiation flux, clear sky (W m**-2)
+52 52 - Mean surface net long-wave radiation flux, clear sky (W m**-2)
+53 53 - Mean top downward short-wave radiation flux (W m**-2)
+54 54 - Mean vertically integrated moisture divergence (kg m**-2 s**-1)
+55 55 - Mean total precipitation rate (kg m**-2 s**-1)
+56 56 - Mean convective snowfall rate (kg m**-2 s**-1)
+57 57 - Mean large-scale snowfall rate (kg m**-2 s**-1)
+58 58 - Mean surface direct short-wave radiation flux (W m**-2)
+59 59 - Mean surface direct short-wave radiation flux, clear sky (W m**-2)
+60 60 - Mean surface diffuse short-wave radiation flux (W m**-2)
+61 61 - Mean surface diffuse short-wave radiation flux, clear sky (W m**-2)
+62 62 - Mean carbon dioxide net ecosystem exchange flux (kg m**-2 s**-1)
+63 63 - Mean carbon dioxide gross primary production flux (kg m**-2 s**-1)
+64 64 - Mean carbon dioxide ecosystem respiration flux (kg m**-2 s**-1)
+65 65 - Mean rain rate (kg m**-2 s**-1)
+66 66 - Mean convective rain rate (kg m**-2 s**-1)
+67 67 - Mean large-scale rain rate (kg m**-2 s**-1)
diff --git a/definitions/grib1/3.233.table b/definitions/grib1/3.233.table
index e987831..8bb824d 100644
--- a/definitions/grib1/3.233.table
+++ b/definitions/grib1/3.233.table
@@ -7,7 +7,7 @@
 5 lcl Adiabatic condensation level (parcel lifted from surface)
 6 umx Maximum wind speed level
 7 trp Tropopause level
-8 sfc Nominal top of atmosphere
+8 toa Nominal top of atmosphere
 9 9 Sea bottom
 # 10-19 Reserved
 20 tl Isothermal level Temperature in 1/100 K
@@ -51,7 +51,7 @@
 196 dsw South-western facing surface (HIRLAM Extension)
 197 dw  Western facing surface (HIRLAM Extension)
 198 dw  North-western facing surface (HIRLAM Extension)
-200 sfc Entire atmosphere considered as a single layer 0 (2 octets)
+200 atm Entire atmosphere considered as a single layer 0 (2 octets)
 201 201 Entire ocean considered as a single layer 0 (2 octets)
 # 202-209 Reserved
 210 pl Isobaric surface (Pa) (ECMWF extension)
diff --git a/definitions/grib1/boot.def b/definitions/grib1/boot.def
index 0d6e989..906cc84 100644
--- a/definitions/grib1/boot.def
+++ b/definitions/grib1/boot.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/cfName.def b/definitions/grib1/cfName.def
index eb3e5e6..532e988 100644
--- a/definitions/grib1/cfName.def
+++ b/definitions/grib1/cfName.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_param.pl from database param at balthasar, do not edit
+# Automatically generated by ./create_param.pl, do not edit
 #Geopotential
 'geopotential' = {
 	 indicatorOfParameter = 6 ;
diff --git a/definitions/grib1/cfVarName.def b/definitions/grib1/cfVarName.def
index b0c9c37..4915f88 100644
--- a/definitions/grib1/cfVarName.def
+++ b/definitions/grib1/cfVarName.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Stream function
 'strf' = {
 	 table2Version = 3 ;
diff --git a/definitions/grib1/data.grid_ieee.def b/definitions/grib1/data.grid_ieee.def
index 7f92a39..ed42e79 100644
--- a/definitions/grib1/data.grid_ieee.def
+++ b/definitions/grib1/data.grid_ieee.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/data.grid_second_order.def b/definitions/grib1/data.grid_second_order.def
index 98462f1..1c4f500 100644
--- a/definitions/grib1/data.grid_second_order.def
+++ b/definitions/grib1/data.grid_second_order.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/data.grid_second_order_constant_width.def b/definitions/grib1/data.grid_second_order_constant_width.def
index a8aa1c0..55ce554 100644
--- a/definitions/grib1/data.grid_second_order_constant_width.def
+++ b/definitions/grib1/data.grid_second_order_constant_width.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/data.grid_second_order_general_grib1.def b/definitions/grib1/data.grid_second_order_general_grib1.def
index a6545ae..92710b7 100644
--- a/definitions/grib1/data.grid_second_order_general_grib1.def
+++ b/definitions/grib1/data.grid_second_order_general_grib1.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
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 805b164..ec78bf6 100644
--- a/definitions/grib1/data.grid_second_order_row_by_row.def
+++ b/definitions/grib1/data.grid_second_order_row_by_row.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/data.grid_simple.def b/definitions/grib1/data.grid_simple.def
index 6c0210f..6840ea0 100644
--- a/definitions/grib1/data.grid_simple.def
+++ b/definitions/grib1/data.grid_simple.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/data.grid_simple_matrix.def b/definitions/grib1/data.grid_simple_matrix.def
index 54a335a..db072dc 100644
--- a/definitions/grib1/data.grid_simple_matrix.def
+++ b/definitions/grib1/data.grid_simple_matrix.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/data.spectral_complex.def b/definitions/grib1/data.spectral_complex.def
index 09ec685..8ddea35 100644
--- a/definitions/grib1/data.spectral_complex.def
+++ b/definitions/grib1/data.spectral_complex.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/data.spectral_ieee.def b/definitions/grib1/data.spectral_ieee.def
index 206ef13..94b05fc 100644
--- a/definitions/grib1/data.spectral_ieee.def
+++ b/definitions/grib1/data.spectral_ieee.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/data.spectral_simple.def b/definitions/grib1/data.spectral_simple.def
index d92b01f..bbbf1ac 100644
--- a/definitions/grib1/data.spectral_simple.def
+++ b/definitions/grib1/data.spectral_simple.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/gds_not_present_bitmap.def b/definitions/grib1/gds_not_present_bitmap.def
index f188f8a..3afaeff 100644
--- a/definitions/grib1/gds_not_present_bitmap.def
+++ b/definitions/grib1/gds_not_present_bitmap.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/grid_21.def b/definitions/grib1/grid_21.def
index 07c5d4c..a66045a 100644
--- a/definitions/grib1/grid_21.def
+++ b/definitions/grib1/grid_21.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/grid_22.def b/definitions/grib1/grid_22.def
index a9db5c5..9d965e3 100644
--- a/definitions/grib1/grid_22.def
+++ b/definitions/grib1/grid_22.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/grid_23.def b/definitions/grib1/grid_23.def
index 0cf8ba5..0634733 100644
--- a/definitions/grib1/grid_23.def
+++ b/definitions/grib1/grid_23.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/grid_24.def b/definitions/grib1/grid_24.def
index 77f2646..a498450 100644
--- a/definitions/grib1/grid_24.def
+++ b/definitions/grib1/grid_24.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/grid_25.def b/definitions/grib1/grid_25.def
index b36d702..27c4870 100644
--- a/definitions/grib1/grid_25.def
+++ b/definitions/grib1/grid_25.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/grid_26.def b/definitions/grib1/grid_26.def
index a4a75d4..d72f969 100644
--- a/definitions/grib1/grid_26.def
+++ b/definitions/grib1/grid_26.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/grid_61.def b/definitions/grib1/grid_61.def
index 50c9aa0..571e043 100644
--- a/definitions/grib1/grid_61.def
+++ b/definitions/grib1/grid_61.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/grid_62.def b/definitions/grib1/grid_62.def
index c9255b7..03ce3e0 100644
--- a/definitions/grib1/grid_62.def
+++ b/definitions/grib1/grid_62.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/grid_63.def b/definitions/grib1/grid_63.def
index 401a1be..a5bd230 100644
--- a/definitions/grib1/grid_63.def
+++ b/definitions/grib1/grid_63.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/grid_64.def b/definitions/grib1/grid_64.def
index 734c745..a4b4d26 100644
--- a/definitions/grib1/grid_64.def
+++ b/definitions/grib1/grid_64.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/grid_definition_0.def b/definitions/grib1/grid_definition_0.def
index e2b8edf..41d9ab6 100644
--- a/definitions/grib1/grid_definition_0.def
+++ b/definitions/grib1/grid_definition_0.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,7 +7,7 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-# GRID DEFINITION latitude/longitude grid (or equidistant cylindrical)
+# GRID DEFINITION latitude/longitude grid - equidistant cylindrical or Plate Carree projection
 
 # grib 1 -> 2
 constant gridDefinitionTemplateNumber     = 0;
diff --git a/definitions/grib1/grid_definition_1.def b/definitions/grib1/grid_definition_1.def
index 4625cb6..f5135f5 100644
--- a/definitions/grib1/grid_definition_1.def
+++ b/definitions/grib1/grid_definition_1.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,7 +7,7 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-# GRID DEFINITION Mercator
+# GRID DEFINITION Mercator projection
 # grib 1 -> 2
 constant gridDefinitionTemplateNumber     = 20;
 
@@ -21,7 +21,7 @@ alias numberOfPointsAlongAMeridian=Nj;
 alias Nx=Nj;
 alias geography.Nj=Nj;
 
-include "grid_first_last_resandcomp.def";
+include "grib1/grid_first_last_resandcomp.def";
 
 signed[3] Latin : edition_specific,no_copy;
 meta geography.LaDInDegrees scale(Latin,oneConstant,grib1divider,truncateDegrees) : dump;
@@ -34,7 +34,7 @@ alias yLast=latitudeOfLastGridPointInDegrees;
 alias xFirst=longitudeOfFirstGridPointInDegrees;
 alias xLast=longitudeOfLastGridPointInDegrees;
 
-include "scanning_mode.def";
+include "grib1/scanning_mode.def";
 
 signed[3] DiInMetres   : dump;
 alias longitudinalDirectionGridLength=DiInMetres;
diff --git a/definitions/grib1/grid_definition_10.def b/definitions/grib1/grid_definition_10.def
index f344749..850b0a6 100644
--- a/definitions/grib1/grid_definition_10.def
+++ b/definitions/grib1/grid_definition_10.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,7 +7,7 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-# GRID DEFINITION rotated latitude/longitude grid (or equidistant cylindrical)
+# GRID DEFINITION rotated latitude/longitude grid
 # grib 1 -> 2
 constant gridDefinitionTemplateNumber     = 1;
 
@@ -16,4 +16,4 @@ template commonBlock "grib1/grid_definition_latlon.def";
 ascii[4] zero : read_only;
 
 # Rotation parameters
-include  "grid_rotation.def"
\ No newline at end of file
+include "grib1/grid_rotation.def"
diff --git a/definitions/grib1/grid_definition_13.def b/definitions/grib1/grid_definition_13.def
index 94f414b..64a991c 100644
--- a/definitions/grib1/grid_definition_13.def
+++ b/definitions/grib1/grid_definition_13.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/grid_definition_14.def b/definitions/grib1/grid_definition_14.def
index 1862d31..17d8e9e 100644
--- a/definitions/grib1/grid_definition_14.def
+++ b/definitions/grib1/grid_definition_14.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -14,4 +14,4 @@ constant gridDefinitionTemplateNumber     = 41;
 template commonBlock "grib1/grid_definition_gaussian.def";
 
 # Rotation parameters
-include  "grid_rotation.def"
\ No newline at end of file
+include "grib1/grid_rotation.def"
diff --git a/definitions/grib1/grid_definition_192.78.def b/definitions/grib1/grid_definition_192.78.def
index da52af2..514fbde 100755
--- a/definitions/grib1/grid_definition_192.78.def
+++ b/definitions/grib1/grid_definition_192.78.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/grid_definition_192.98.def b/definitions/grib1/grid_definition_192.98.def
index af295f2..fa639c4 100644
--- a/definitions/grib1/grid_definition_192.98.def
+++ b/definitions/grib1/grid_definition_192.98.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -22,7 +22,7 @@ signed[3] latitudeOfFirstGridPoint :  no_copy;
 meta geography.latitudeOfFirstGridPointInDegrees scale(latitudeOfFirstGridPoint,oneConstant,grib1divider,truncateDegrees) : dump,no_copy;
 alias La1 = latitudeOfFirstGridPoint :  no_copy;
 
-include "scanning_mode.def";
+include "grib1/scanning_mode.def";
 
 meta numberOfDataPoints number_of_points(Ni,Nj,PLPresent,pl) : dump;
 alias numberOfPoints=numberOfDataPoints;
diff --git a/definitions/grib1/grid_definition_193.98.def b/definitions/grib1/grid_definition_193.98.def
index 7cb16ae..327af69 100644
--- a/definitions/grib1/grid_definition_193.98.def
+++ b/definitions/grib1/grid_definition_193.98.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -18,7 +18,7 @@ alias Nj  = numberOfPointsAlongAMeridian;
 
 # Latitudes and Longitudes of the first and the last points
 # Resolution and component flags
-include "grid_first_last_resandcomp.def";
+include "grib1/grid_first_last_resandcomp.def";
 
 unsigned[2] iDirectionIncrement : can_be_missing;
 unsigned[2] jDirectionIncrement : can_be_missing;
@@ -31,7 +31,7 @@ alias yLast=latitudeOfLastGridPointInDegrees;
 alias xFirst=longitudeOfFirstGridPointInDegrees;
 alias xLast=longitudeOfLastGridPointInDegrees;
 
-include "scanning_mode.def";
+include "grib1/scanning_mode.def";
 
 #  Lar1 - latitude of first grid point of reference domain
 signed[3] Lar1 :  edition_specific;
diff --git a/definitions/grib1/grid_definition_20.def b/definitions/grib1/grid_definition_20.def
index ce9ddec..369b999 100644
--- a/definitions/grib1/grid_definition_20.def
+++ b/definitions/grib1/grid_definition_20.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,7 +7,7 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-# GRID DEFINITION stretched and rotated latitude/longitude grid (or equidistant cylindrical)
+# GRID DEFINITION stretched latitude/longitude grid
 # grib 1 -> 2
 constant gridDefinitionTemplateNumber     = 2;
 
@@ -16,5 +16,5 @@ template commonBlock "grib1/grid_definition_latlon.def";
 ascii[4] zero : read_only;
 
 # Stretching parameters
-include  "grid_stretching.def"
+include "grib1/grid_stretching.def"
 
diff --git a/definitions/grib1/grid_definition_24.def b/definitions/grib1/grid_definition_24.def
index c7c9970..60f75bc 100644
--- a/definitions/grib1/grid_definition_24.def
+++ b/definitions/grib1/grid_definition_24.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,11 +7,11 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-# GRID DEFINITION Stretched Rotated Gaussian latitude/longitude grid
+# GRID DEFINITION Stretched Gaussian latitude/longitude grid
 # grib 1 -> 2
 constant gridDefinitionTemplateNumber     = 42;
 
 template commonBlock "grib1/grid_definition_gaussian.def";
 
 # Stretching parameters
-include  "grid_stretching.def"
+include "grib1/grid_stretching.def"
diff --git a/definitions/grib1/grid_definition_3.def b/definitions/grib1/grid_definition_3.def
index 6f57b1c..ab1fdf2 100644
--- a/definitions/grib1/grid_definition_3.def
+++ b/definitions/grib1/grid_definition_3.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/grid_definition_30.def b/definitions/grib1/grid_definition_30.def
index 20b0f64..1c0c94b 100644
--- a/definitions/grib1/grid_definition_30.def
+++ b/definitions/grib1/grid_definition_30.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,7 +7,7 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-# GRID DEFINITION stretched and rotated latitude/longitude grid (or equidistant cylindrical)
+# GRID DEFINITION stretched and rotated latitude/longitude grids
 # grib 1 -> 2
 constant gridDefinitionTemplateNumber     = 3;
 
@@ -16,7 +16,7 @@ template commonBlock "grib1/grid_definition_latlon.def";
 ascii[4] zero : read_only;
 
 # Rotation parameters
-include  "grid_rotation.def"
+include "grib1/grid_rotation.def"
 
 # Stretching parameters
-include  "grid_stretching.def"
+include "grib1/grid_stretching.def"
diff --git a/definitions/grib1/grid_definition_34.def b/definitions/grib1/grid_definition_34.def
index 7d2cc93..3e435d8 100644
--- a/definitions/grib1/grid_definition_34.def
+++ b/definitions/grib1/grid_definition_34.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,14 +7,14 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-# GRID DEFINITION stretched Rotated Gaussian latitude/longitude grid
+# GRID DEFINITION Stretched and rotated Gaussian latitude/longitude grids
 # grib 1 -> 2
 constant gridDefinitionTemplateNumber     = 43;
 
 template commonBlock "grib1/grid_definition_gaussian.def";
 
 # Rotation parameters
-include  "grid_rotation.def"
+include "grib1/grid_rotation.def"
 
 # Stretching parameters
-include  "grid_stretching.def"
+include "grib1/grid_stretching.def"
diff --git a/definitions/grib1/grid_definition_4.def b/definitions/grib1/grid_definition_4.def
index 1503e5a..c2ea508 100644
--- a/definitions/grib1/grid_definition_4.def
+++ b/definitions/grib1/grid_definition_4.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,7 +7,7 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-# GRID DEFINITION Gaussian latitude/longitude grid  = including rotated, stretched, or stretched and rotated)
+# GRID DEFINITION Gaussian latitude/longitude grid
 # grib 1 -> 2
 constant gridDefinitionTemplateNumber     = 40;
 
diff --git a/definitions/grib1/grid_definition_5.def b/definitions/grib1/grid_definition_5.def
index 8c490e7..80b11df 100644
--- a/definitions/grib1/grid_definition_5.def
+++ b/definitions/grib1/grid_definition_5.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,7 +7,7 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-# GRID DEFINITION polar stereographic
+# GRID DEFINITION Polar stereographic
 # grib 1 -> 2
 constant gridDefinitionTemplateNumber     = 20;
 
@@ -29,7 +29,7 @@ signed[3] longitudeOfFirstGridPoint : edition_specific;
 meta geography.longitudeOfFirstGridPointInDegrees scale(longitudeOfFirstGridPoint,oneConstant,grib1divider,truncateDegrees) : dump;
 alias Lo1 = longitudeOfFirstGridPoint;
 
-include "resolution_flags.def";
+include "grib1/resolution_flags.def";
 
 #  LoV - orientation of the grid; i.e.  the longitude value of the meridian which is parallel to the Y-axis
 signed[3] orientationOfTheGrid  ;
@@ -67,7 +67,7 @@ flagbit southPoleOnProjectionPlane(projectionCentreFlag,7) : dump; # WMO bit 1
 alias yFirst=latitudeOfFirstGridPointInDegrees;
 alias xFirst=longitudeOfFirstGridPointInDegrees;
 
-include "scanning_mode.def";
+include "grib1/scanning_mode.def";
 
 pad padding_grid5_1(4);
 
diff --git a/definitions/grib1/grid_definition_50.def b/definitions/grib1/grid_definition_50.def
index 2661fb6..0d8f33a 100644
--- a/definitions/grib1/grid_definition_50.def
+++ b/definitions/grib1/grid_definition_50.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,7 +7,7 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-# GRID DEFINITION spherical harmonic coefficients (including rotated, stretched, or stretched and rotated)
+# GRID DEFINITION Spherical harmonic coefficients
 # grib 1 -> 2
 constant gridDefinitionTemplateNumber     = 50;
 
diff --git a/definitions/grib1/grid_definition_60.def b/definitions/grib1/grid_definition_60.def
index 5ecfa94..dac74fc 100644
--- a/definitions/grib1/grid_definition_60.def
+++ b/definitions/grib1/grid_definition_60.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,11 +7,11 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-# GRID DEFINITION spherical harmonic coefficients (including rotated, stretched, or stretched and rotated)
+# GRID DEFINITION Rotated spherical harmonic coefficients
 # grib 1 -> 2
 constant gridDefinitionTemplateNumber     = 51;
 
 template commonBlock "grib1/grid_definition_spherical_harmonics.def";
 
 # Rotation parameters
-include  "grid_rotation.def"
\ No newline at end of file
+include "grib1/grid_rotation.def"
diff --git a/definitions/grib1/grid_definition_70.def b/definitions/grib1/grid_definition_70.def
index 2f4c471..49f7317 100644
--- a/definitions/grib1/grid_definition_70.def
+++ b/definitions/grib1/grid_definition_70.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,13 +7,12 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
+# GRID DEFINITION Stretched spherical harmonics
+
 # grib 1 -> 2
 constant gridDefinitionTemplateNumber     = 52;
 
 template commonBlock "grib1/grid_definition_spherical_harmonics.def";
 
-# Rotation parameters
-include  "grid_rotation.def"
-
 # Stretching parameters
-include  "grid_stretching.def"
+include "grib1/grid_stretching.def"
diff --git a/definitions/grib1/grid_definition_8.def b/definitions/grib1/grid_definition_8.def
index 2a19c66..4bc3cd5 100644
--- a/definitions/grib1/grid_definition_8.def
+++ b/definitions/grib1/grid_definition_8.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,8 +7,8 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-# GRID Albers equal area
+# GRID DEFINITION Albers equal area, secant or tangent, conic or bi-polar
 # grib 1 -> 2
 constant gridDefinitionTemplateNumber     = 31;
 
-template commonBlock "grib1/grid_definition_lambert.def";
\ No newline at end of file
+template commonBlock "grib1/grid_definition_lambert.def";
diff --git a/definitions/grib1/grid_definition_80.def b/definitions/grib1/grid_definition_80.def
index f5f7242..086d519 100644
--- a/definitions/grib1/grid_definition_80.def
+++ b/definitions/grib1/grid_definition_80.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,13 +7,15 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
+# GRID DEFINITION Stretched and rotated spherical harmonic coefficients
+
 # grib 1 -> 2
 constant gridDefinitionTemplateNumber     = 53;
 
 template commonBlock "grib1/grid_definition_spherical_harmonics.def";
 
 # Rotation parameters
-include  "grid_rotation.def"
+include "grib1/grid_rotation.def"
 
 # Stretching parameters
-include  "grid_stretching.def"
+include "grib1/grid_stretching.def"
diff --git a/definitions/grib1/grid_definition_90.def b/definitions/grib1/grid_definition_90.def
index 21e0381..b66a560 100644
--- a/definitions/grib1/grid_definition_90.def
+++ b/definitions/grib1/grid_definition_90.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,7 +7,7 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-# GRID DEFINITION Space view perspective or orthographic
+# GRID DEFINITION Space view, perspective or orthographic
 # grib 1 -> 2
 constant gridDefinitionTemplateNumber     = 90;
 
@@ -29,7 +29,7 @@ signed[3] longitudeOfSubSatellitePoint ;
 meta geography.longitudeOfSubSatellitePointInDegrees  scale(longitudeOfSubSatellitePoint,oneConstant,grib1divider,truncateDegrees) : dump;
 alias Lap=longitudeOfSubSatellitePoint;
 
-include "resolution_flags.def";
+include "grib1/resolution_flags.def";
 
 unsigned[3] dx  : dump;
 alias geography.dx=dx;
@@ -44,7 +44,7 @@ alias geography.XpInGridLengths=XpInGridLengths;
 unsigned[2] YpInGridLengths  : dump;
 alias geography.YpInGridLengths=YpInGridLengths;
 
-include "scanning_mode.def";
+include "grib1/scanning_mode.def";
 
 unsigned[3] orientationOfTheGrid : edition_specific ;
 meta geography.orientationOfTheGridInDegrees  scale(orientationOfTheGrid,oneConstant,grib1divider,truncateDegrees) : dump;
diff --git a/definitions/grib1/grid_definition_gaussian.def b/definitions/grib1/grid_definition_gaussian.def
index 3a51a6f..bcd3e56 100644
--- a/definitions/grib1/grid_definition_gaussian.def
+++ b/definitions/grib1/grid_definition_gaussian.def
@@ -1,8 +1,8 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
 #
@@ -17,7 +17,7 @@ alias Ny=Nj;
 
 # Latitudes and Longitudes of the first and the last points
 # Resolution and component flags
-include "grid_first_last_resandcomp.def";
+include "grib1/grid_first_last_resandcomp.def";
 
 #  Di - i direction increment
 unsigned[2] iDirectionIncrement : can_be_missing,dump,edition_specific;
@@ -35,7 +35,7 @@ alias yLast=latitudeOfLastGridPointInDegrees;
 alias xFirst=longitudeOfFirstGridPointInDegrees;
 alias xLast=longitudeOfLastGridPointInDegrees;
 
-include "scanning_mode.def";
+include "grib1/scanning_mode.def";
 
 pad padding_grid4_1(4);
 
@@ -49,7 +49,8 @@ meta global global_gaussian(N,Ni,iDirectionIncrement,
                             latitudeOfFirstGridPoint,
                             longitudeOfFirstGridPoint,
                             latitudeOfLastGridPoint,
-                            longitudeOfLastGridPoint) = 0 : dump;
+                            longitudeOfLastGridPoint,
+                            PLPresent,pl) = 0 : dump;
 
 meta numberOfDataPoints number_of_points_gaussian(Ni,Nj,PLPresent,pl,
   N,
@@ -88,4 +89,8 @@ meta longitudes longitudes(values,0);
 meta distinctLatitudes latitudes(values,1);
 meta distinctLongitudes longitudes(values,1);
 
+meta isOctahedral octahedral_gaussian(N, Ni, PLPresent, pl) = 0 : no_copy,dump;
+
+meta gaussianGridName gaussian_grid_name(N, Ni, isOctahedral);
+alias gridName=gaussianGridName;
 
diff --git a/definitions/grib1/grid_definition_lambert.def b/definitions/grib1/grid_definition_lambert.def
index 3cfd740..1ba5c4c 100644
--- a/definitions/grib1/grid_definition_lambert.def
+++ b/definitions/grib1/grid_definition_lambert.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -35,7 +35,7 @@ alias Lo1InDegrees = longitudeOfFirstGridPointInDegrees;
 #meta longitudeOfFirstGridPointInMicrodegrees times(longitudeOfFirstGridPoint,thousand);
 
 #  Resolution and component flags
-include "resolution_flags.def";
+include "grib1/resolution_flags.def";
 
 #  LoV - orientation of the grid; i.e.  the east longitude value of the meridian which is parallel to the Y-axis
 signed[3] LoV : edition_specific  ;
@@ -68,7 +68,7 @@ alias projectionCenterFlag=projectionCentreFlag;
 alias yFirst=latitudeOfFirstGridPointInDegrees;
 alias xFirst=longitudeOfFirstGridPointInDegrees;
 
-include "scanning_mode.def";
+include "grib1/scanning_mode.def";
 
 #  Latin 1 - first latitude from the pole at which the secant cone cuts the sphere
 signed[3] Latin1 : edition_specific;
diff --git a/definitions/grib1/grid_definition_latlon.def b/definitions/grib1/grid_definition_latlon.def
index 5721e9d..8c33a12 100644
--- a/definitions/grib1/grid_definition_latlon.def
+++ b/definitions/grib1/grid_definition_latlon.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -18,7 +18,7 @@ alias Ny = Nj;
 
 # Latitudes and Longitudes of the first and the last points
 # Resolution and component flags
-include "grid_first_last_resandcomp.def";
+include "grib1/grid_first_last_resandcomp.def";
 
 unsigned[2] iDirectionIncrement : can_be_missing, edition_specific;
 unsigned[2] jDirectionIncrement : can_be_missing, edition_specific;
@@ -27,7 +27,7 @@ alias Dy = jDirectionIncrement;
 alias Di = iDirectionIncrement;
 alias Dx = iDirectionIncrement;
 
-include "scanning_mode.def";
+include "grib1/scanning_mode.def";
 
 meta  geography.jDirectionIncrementInDegrees latlon_increment(ijDirectionIncrementGiven,jDirectionIncrement,
   jScansPositively,
diff --git a/definitions/grib1/grid_definition_spherical_harmonics.def b/definitions/grib1/grid_definition_spherical_harmonics.def
index 865f6d6..f4cb391 100644
--- a/definitions/grib1/grid_definition_spherical_harmonics.def
+++ b/definitions/grib1/grid_definition_spherical_harmonics.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/grid_first_last_resandcomp.def b/definitions/grib1/grid_first_last_resandcomp.def
index a0e0e10..db1718d 100644
--- a/definitions/grib1/grid_first_last_resandcomp.def
+++ b/definitions/grib1/grid_first_last_resandcomp.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -17,7 +17,7 @@ signed[3] longitudeOfFirstGridPoint  : edition_specific;
 meta geography.longitudeOfFirstGridPointInDegrees scale(longitudeOfFirstGridPoint,oneConstant,grib1divider,truncateDegrees) : dump;
 alias Lo1 = longitudeOfFirstGridPoint;
 
-include "resolution_flags.def";
+include "grib1/resolution_flags.def";
 
 #  La2 - latitude of last grid point
 signed[3] latitudeOfLastGridPoint :  edition_specific;
diff --git a/definitions/grib1/grid_rotation.def b/definitions/grib1/grid_rotation.def
index 095fefa..bc883ef 100644
--- a/definitions/grib1/grid_rotation.def
+++ b/definitions/grib1/grid_rotation.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,7 +7,6 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-
 signed[3] latitudeOfSouthernPole : edition_specific;
 meta  geography.latitudeOfSouthernPoleInDegrees   scale(latitudeOfSouthernPole ,oneConstant,grib1divider,truncateDegrees) : dump;
 
@@ -16,4 +15,5 @@ meta  geography.longitudeOfSouthernPoleInDegrees   scale(longitudeOfSouthernPole
 
 ibmfloat geography.angleOfRotationInDegrees : dump;
 
-alias angleOfRotation =angleOfRotationInDegrees;
\ No newline at end of file
+alias angleOfRotation =angleOfRotationInDegrees;
+alias is_rotated_grid = one;
diff --git a/definitions/grib1/grid_stretching.def b/definitions/grib1/grid_stretching.def
index 8cd66c0..19681b5 100644
--- a/definitions/grib1/grid_stretching.def
+++ b/definitions/grib1/grid_stretching.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.1.def b/definitions/grib1/local.1.def
index 17bc21d..aeadd87 100644
--- a/definitions/grib1/local.1.def
+++ b/definitions/grib1/local.1.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.214.1.def b/definitions/grib1/local.214.1.def
index 4bdd774..f186360 100644
--- a/definitions/grib1/local.214.1.def
+++ b/definitions/grib1/local.214.1.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.214.244.def b/definitions/grib1/local.214.244.def
index 5752bd1..c56d898 100644
--- a/definitions/grib1/local.214.244.def
+++ b/definitions/grib1/local.214.244.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.214.245.def b/definitions/grib1/local.214.245.def
index f6d8d10..9255312 100644
--- a/definitions/grib1/local.214.245.def
+++ b/definitions/grib1/local.214.245.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.253.def b/definitions/grib1/local.253.def
index dcc29c0..f9316e2 100644
--- a/definitions/grib1/local.253.def
+++ b/definitions/grib1/local.253.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.254.def b/definitions/grib1/local.254.def
index 63bef8f..a2d8cb5 100644
--- a/definitions/grib1/local.254.def
+++ b/definitions/grib1/local.254.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.46.def b/definitions/grib1/local.46.def
index 1d63e06..8e261a2 100644
--- a/definitions/grib1/local.46.def
+++ b/definitions/grib1/local.46.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,5 +9,5 @@
 
 label "CPTEC local definition";
 # Same as NCEP
-include "local.7.def";
+include "grib1/local.7.def";
 section_padding local_padding;
diff --git a/definitions/grib1/local.54.def b/definitions/grib1/local.54.def
index 608ef47..e691159 100644
--- a/definitions/grib1/local.54.def
+++ b/definitions/grib1/local.54.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.7.1.def b/definitions/grib1/local.7.1.def
index 1921ec4..fd2332e 100644
--- a/definitions/grib1/local.7.1.def
+++ b/definitions/grib1/local.7.1.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.80.def b/definitions/grib1/local.80.def
index 1d844fb..2c2e147 100644
--- a/definitions/grib1/local.80.def
+++ b/definitions/grib1/local.80.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.82.82.def b/definitions/grib1/local.82.82.def
index c264247..a97999e 100644
--- a/definitions/grib1/local.82.82.def
+++ b/definitions/grib1/local.82.82.def
@@ -11,7 +11,7 @@
 constant GRIBEXSection1Problem = 53 - section1Length;
 
 # base local definition
-include "local.82.0.def";
+include "grib1/local.82.0.def";
 
 unsigned[1] marsExperimentOffset = 0 : dump, long_type;
 
diff --git a/definitions/grib1/local.82.83.def b/definitions/grib1/local.82.83.def
index 391b0aa..a25dac4 100644
--- a/definitions/grib1/local.82.83.def
+++ b/definitions/grib1/local.82.83.def
@@ -34,7 +34,7 @@
 constant GRIBEXSection1Problem = 80 - section1Length;
 
 # base file: contains keywords always present
-include "local.82.0.def";
+include "grib1/local.82.0.def";
 
 # extra keywords specific to local definition 83 (MATCH)
 codetable[1]    matchSort	        "grib1/localConcepts/eswi/sort.table"              : dump,long_type;
diff --git a/definitions/grib1/local.98.1.def b/definitions/grib1/local.98.1.def
index 5d72238..448d1c3 100644
--- a/definitions/grib1/local.98.1.def
+++ b/definitions/grib1/local.98.1.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.10.def b/definitions/grib1/local.98.10.def
index c50b325..1a4514e 100644
--- a/definitions/grib1/local.98.10.def
+++ b/definitions/grib1/local.98.10.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.11.def b/definitions/grib1/local.98.11.def
index 28c5cd3..f8bd53b 100644
--- a/definitions/grib1/local.98.11.def
+++ b/definitions/grib1/local.98.11.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.13.def b/definitions/grib1/local.98.13.def
index 8ca975c..a69e672 100644
--- a/definitions/grib1/local.98.13.def
+++ b/definitions/grib1/local.98.13.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.14.def b/definitions/grib1/local.98.14.def
index 67fa8d8..4954946 100644
--- a/definitions/grib1/local.98.14.def
+++ b/definitions/grib1/local.98.14.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.15.def b/definitions/grib1/local.98.15.def
index db26141..5a1c445 100644
--- a/definitions/grib1/local.98.15.def
+++ b/definitions/grib1/local.98.15.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.16.def b/definitions/grib1/local.98.16.def
index 50045c8..a905c5d 100644
--- a/definitions/grib1/local.98.16.def
+++ b/definitions/grib1/local.98.16.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.17.def b/definitions/grib1/local.98.17.def
index fc4d94e..878cee6 100644
--- a/definitions/grib1/local.98.17.def
+++ b/definitions/grib1/local.98.17.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.18.def b/definitions/grib1/local.98.18.def
index 270f802..d9dc593 100644
--- a/definitions/grib1/local.98.18.def
+++ b/definitions/grib1/local.98.18.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.19.def b/definitions/grib1/local.98.19.def
index 9879adb..10c71bf 100644
--- a/definitions/grib1/local.98.19.def
+++ b/definitions/grib1/local.98.19.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -45,19 +45,27 @@ alias totalNumber=ensembleSize;
 
 meta quantile sprintf("%s:%s",number,ensembleSize);
 
-unsigned[1] powerOfTenUsedToScaleClimateWeight  : dump;
+# See GRIB-862 for the reason behind the aliases
 
-unsigned[4] weightAppliedToClimateMonth1  : dump;
+unsigned[1] versionNumberOfExperimentalSuite : dump;
+alias powerOfTenUsedToScaleClimateWeight=versionNumberOfExperimentalSuite;
 
-unsigned[3] firstMonthUsedToBuildClimateMonth1  : dump;
+unsigned[4] implementationDateOfModelCycle : dump;
+alias weightAppliedToClimateMonth1=implementationDateOfModelCycle;
 
-unsigned[3] lastMonthUsedToBuildClimateMonth1  : dump;
+unsigned[3] numberOfReforecastYearsInModelClimate : dump;
+alias firstMonthUsedToBuildClimateMonth1=numberOfReforecastYearsInModelClimate;
 
-unsigned[3] firstMonthUsedToBuildClimateMonth2  : dump;
+unsigned[3] numberOfDaysInClimateSamplingWindow : dump;
+alias lastMonthUsedToBuildClimateMonth1=numberOfDaysInClimateSamplingWindow;
 
-unsigned[3] lastMonthUsedToBuildClimateMonth2  : dump;
+unsigned[3] sampleSizeOfModelClimate : dump;
+alias firstMonthUsedToBuildClimateMonth2=sampleSizeOfModelClimate;
 
-unsigned[1] efiOrder  : dump;
+unsigned[3] versionOfModelClimate : dump;
+alias lastMonthUsedToBuildClimateMonth2=versionOfModelClimate;
+
+unsigned[1] efiOrder : dump;
 
 # spareSetToZero
 pad padding_loc19_2(11);
diff --git a/definitions/grib1/local.98.190.def b/definitions/grib1/local.98.190.def
index fb191d9..f4c6d32 100644
--- a/definitions/grib1/local.98.190.def
+++ b/definitions/grib1/local.98.190.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.191.def b/definitions/grib1/local.98.191.def
index 7032463..6a7fce4 100644
--- a/definitions/grib1/local.98.191.def
+++ b/definitions/grib1/local.98.191.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.192.def b/definitions/grib1/local.98.192.def
index 05ad50b..9d8b5e6 100644
--- a/definitions/grib1/local.98.192.def
+++ b/definitions/grib1/local.98.192.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.2.def b/definitions/grib1/local.98.2.def
index a6f5923..ea96600 100644
--- a/definitions/grib1/local.98.2.def
+++ b/definitions/grib1/local.98.2.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.20.def b/definitions/grib1/local.98.20.def
index f48445b..a1e4758 100644
--- a/definitions/grib1/local.98.20.def
+++ b/definitions/grib1/local.98.20.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.21.def b/definitions/grib1/local.98.21.def
index 56b0829..cfd0ba4 100644
--- a/definitions/grib1/local.98.21.def
+++ b/definitions/grib1/local.98.21.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.218.def b/definitions/grib1/local.98.218.def
index 69efadc..e3dfa11 100644
--- a/definitions/grib1/local.98.218.def
+++ b/definitions/grib1/local.98.218.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.23.def b/definitions/grib1/local.98.23.def
index 6941ac7..83f3906 100644
--- a/definitions/grib1/local.98.23.def
+++ b/definitions/grib1/local.98.23.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.24.def b/definitions/grib1/local.98.24.def
index 569a8dc..d7f4fdf 100644
--- a/definitions/grib1/local.98.24.def
+++ b/definitions/grib1/local.98.24.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.25.def b/definitions/grib1/local.98.25.def
index 1108404..a8562b3 100644
--- a/definitions/grib1/local.98.25.def
+++ b/definitions/grib1/local.98.25.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.26.def b/definitions/grib1/local.98.26.def
index 33700a3..53fe7b4 100644
--- a/definitions/grib1/local.98.26.def
+++ b/definitions/grib1/local.98.26.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.27.def b/definitions/grib1/local.98.27.def
index 3935273..5e2a6cf 100644
--- a/definitions/grib1/local.98.27.def
+++ b/definitions/grib1/local.98.27.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.28.def b/definitions/grib1/local.98.28.def
index 4b479a0..68b7491 100644
--- a/definitions/grib1/local.98.28.def
+++ b/definitions/grib1/local.98.28.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.29.def b/definitions/grib1/local.98.29.def
index 1163ad5..644e821 100644
--- a/definitions/grib1/local.98.29.def
+++ b/definitions/grib1/local.98.29.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.3.def b/definitions/grib1/local.98.3.def
index 7610b2e..efbfd9a 100644
--- a/definitions/grib1/local.98.3.def
+++ b/definitions/grib1/local.98.3.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.30.def b/definitions/grib1/local.98.30.def
index a83b870..a46912c 100644
--- a/definitions/grib1/local.98.30.def
+++ b/definitions/grib1/local.98.30.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.31.def b/definitions/grib1/local.98.31.def
index cfb83b4..d45eaff 100644
--- a/definitions/grib1/local.98.31.def
+++ b/definitions/grib1/local.98.31.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.32.def b/definitions/grib1/local.98.32.def
index fcb7dd1..04717fe 100644
--- a/definitions/grib1/local.98.32.def
+++ b/definitions/grib1/local.98.32.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.33.def b/definitions/grib1/local.98.33.def
index 126940c..410fa84 100644
--- a/definitions/grib1/local.98.33.def
+++ b/definitions/grib1/local.98.33.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.35.def b/definitions/grib1/local.98.35.def
index e393898..9814e96 100644
--- a/definitions/grib1/local.98.35.def
+++ b/definitions/grib1/local.98.35.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.36.def b/definitions/grib1/local.98.36.def
index c989683..1cb248e 100644
--- a/definitions/grib1/local.98.36.def
+++ b/definitions/grib1/local.98.36.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.37.def b/definitions/grib1/local.98.37.def
index 495999d..491cff6 100644
--- a/definitions/grib1/local.98.37.def
+++ b/definitions/grib1/local.98.37.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.38.def b/definitions/grib1/local.98.38.def
index 8be9cb9..a0ab347 100644
--- a/definitions/grib1/local.98.38.def
+++ b/definitions/grib1/local.98.38.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.39.def b/definitions/grib1/local.98.39.def
index 4afe36d..3f5f2bf 100644
--- a/definitions/grib1/local.98.39.def
+++ b/definitions/grib1/local.98.39.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.4.def b/definitions/grib1/local.98.4.def
index 76db20a..273bef5 100644
--- a/definitions/grib1/local.98.4.def
+++ b/definitions/grib1/local.98.4.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.40.def b/definitions/grib1/local.98.40.def
index f121b80..54affa1 100644
--- a/definitions/grib1/local.98.40.def
+++ b/definitions/grib1/local.98.40.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.5.def b/definitions/grib1/local.98.5.def
index 1f874c8..2f77297 100644
--- a/definitions/grib1/local.98.5.def
+++ b/definitions/grib1/local.98.5.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.50.def b/definitions/grib1/local.98.50.def
index 1a3eb11..acaa823 100644
--- a/definitions/grib1/local.98.50.def
+++ b/definitions/grib1/local.98.50.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.6.def b/definitions/grib1/local.98.6.def
index af8573d..c91cbf1 100644
--- a/definitions/grib1/local.98.6.def
+++ b/definitions/grib1/local.98.6.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.7.def b/definitions/grib1/local.98.7.def
index a63145d..16a2119 100644
--- a/definitions/grib1/local.98.7.def
+++ b/definitions/grib1/local.98.7.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.8.def b/definitions/grib1/local.98.8.def
index 8e08087..f31b0f1 100644
--- a/definitions/grib1/local.98.8.def
+++ b/definitions/grib1/local.98.8.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.9.def b/definitions/grib1/local.98.9.def
index 259ec6b..105fe94 100644
--- a/definitions/grib1/local.98.9.def
+++ b/definitions/grib1/local.98.9.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local.98.def b/definitions/grib1/local.98.def
index f0a422e..9d27a13 100644
--- a/definitions/grib1/local.98.def
+++ b/definitions/grib1/local.98.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local/edzw/2.0.3.table b/definitions/grib1/local/edzw/2.0.3.table
new file mode 100755
index 0000000..a4f9a0d
--- /dev/null
+++ b/definitions/grib1/local/edzw/2.0.3.table
@@ -0,0 +1,130 @@
+1 p P Pressure Pa
+2 msl MSL Mean sea level pressure Pa
+3 3 None Pressure tendency Pa s**-1
+4 pv PV Potential vorticity K m**2 kg**-1 s**-1
+5 5 None ICAO Standard Atmosphere reference height m
+6 z Z Geopotential m**2 s**-2
+7 gh GH Geopotential height gpm
+8 h H Geometrical height m
+9 9 None Standard deviation of height m
+10 tco3 TCO3 Total (column) ozone Dobson (kg m**-2)
+11 t T Temperature K
+12 12 None Virtual temperature K
+13 13 None Potential temperature K
+14 14 None Pseudo-adiabatic potential temperature K
+15 15 None Maximum temperature K
+16 16 None Minimum temperature K
+17 17 None Dew-point temperature K
+18 18 None Dew-point depression (or deficit) K
+19 19 None Lapse rate K s**-1
+20 20 None Visibility m
+21 21 None Radar spectra (1) -
+22 22 None Radar spectra (2) -
+23 23 None Radar spectra (3) -
+24 24 None Parcel lifted index (to 500 hPa) K
+25 25 None Temperature anomaly K
+26 26 None Pressure anomaly Pa
+27 27 None Geopotential height anomaly gpm
+28 28 None Wave spectra (1) -
+29 29 None Wave spectra (2) -
+30 30 None Wave spectra (3) -
+31 31 None Wind direction Degree true
+32 32 None Wind speed m s**-1
+33 u U U-component of wind m s**-1
+34 v V V-component of wind m s**-1
+35 35 None Stream Function m**2 s**-1
+36 36 None Velocity Potential m**2 s**-1
+37 37 None Montgomery stream Function m**2 s**-1
+38 38 None Sigma coordinate vertical velocity s**-1
+39 w W Vertical velocity Pa s**-1
+40 40 None Vertical velocity m s**-1
+41 41 None Absolute vorticity s**-1
+42 42 None Absolute divergence s**-1
+43 vo VO Relative vorticity s**-1
+44 d D Relative divergence s**-1
+45 45 None Vertical u-component shear s**-1
+46 46 None Vertical v-component shear s**-1
+47 47 None Direction of current Degree true
+48 48 None Speed of current m s**-1
+49 49 None U-component of current m s**-1
+50 50 None V-component of current m s**-1
+51 q Q Specific humidity kg kg**-1
+52 r R Relative humidity %
+53 53 None Humidity mixing ratio kg m**-2
+54 54 None Precipitable water kg m**-2
+55 55 None Vapour pressure Pa
+56 56 None Saturation deficit Pa
+57 e E Evaporation kg m**-2
+58 ciwc CIWC Cloud ice kg m**-2
+59 59 None Precipitation rate kg m**-2 s**-1
+60 60 None Thunderstorm probability %
+61 tp TP Total precipitation kg m**-2
+62 62 LSP Large scale precipitation kg m**-2
+63 63 None Convective precipitation (water) kg m**-2
+64 64 None Snow fall rate water equivalent kg m**-2 s**-1
+65 sf SF Water equivalentof accumulated snow depth kg m**-2
+66 sd SD Snow depth m (of water equivalent)
+67 67 None Mixed layer depth m
+68 68 None Transient thermocline depth m
+69 69 None Main thermocline depth m
+70 70 None Main thermocline anomaly m
+71 tcc TCC Total cloud cover %
+72 ccc CCC Convective cloud cover %
+73 lcc LCC Low cloud cover %
+74 mcc MCC Medium cloud cover %
+75 hcc HCC High cloud cover %
+76 clwc CLWC Cloud liquid water content kg kg**-1
+77 77 None Best lifted index (to 500 hPa) K
+78 csf CSF Convective snow-fall kg m**-2
+79 lsf LSF Large scale snow-fall kg m**-2
+80 80 None Water temperature K
+81 lsm LSM Land cover (1=land, 0=sea) (0 - 1)
+82 82 None Deviation of sea-level from mean m
+83 sr SR Surface roughness m
+84 al AL Albedo -
+85 st ST Surface temperature of soil K
+86 ssw SSW Soil moisture content kg m**-2
+87 veg VEG Percentage of vegetation %
+88 88 None Salinity kg kg**-1
+89 89 None Density kg m**-3
+90 ro RO Water run-off kg m**-2
+91 91 None Ice cover (1=land, 0=sea) (0 - 1)
+92 92 None Ice thickness m
+93 93 None Direction of ice drift Degree true
+94 94 None Speed of ice drift m s*-1
+95 95 None U-component of ice drift m s**-1
+96 96 None V-component of ice drift m s**-1
+97 97 None Ice growth rate m s**-1
+98 98 None Ice divergence s**-1
+99 99 None Snow melt kg m**-2
+100 swh SWH Signific.height,combined wind waves+swell m
+101 mdww MDWW Mean direction of wind waves Degree true
+102 shww SHWW Significant height of wind waves m
+103 mpww MPWW Mean period of wind waves s
+104 104 None Direction of swell waves Degree true
+105 105 None Significant height of swell waves m
+106 106 None Mean period of swell waves s
+107 mdps MDPS Mean direction of primary swell Degree true
+108 mpps MPPS Mean period of primary swell s
+109 109 None Secondary wave direction Degree true
+110 110 None Secondary wave period s
+111 111 None Net short-wave radiation flux (surface) W m**-2
+112 112 None Net long-wave radiation flux (surface) W m**-2
+113 113 None Net short-wave radiationflux(atmosph.top) W m**-2
+114 114 None Net long-wave radiation flux(atmosph.top) W m**-2
+115 115 None Long-wave radiation flux W m**-2
+116 116 None Short-wave radiation flux W m**-2
+117 117 None Global radiation flux W m**-2
+118 118 None Brightness temperature K
+119 119 None Radiance (with respect to wave number) W m**-1 sr**-1
+120 120 None Radiance (with respect to wave length) W m**-1 sr**-1
+121 slhf SLHF (surface) Latent heat flux W m**-2
+122 sshf SSHF (surface) Sensible heat flux W m**-2
+123 bld BLD Boundary layer dissipation W m**-2
+124 124 None Momentum flux, u-component N m**-2
+125 125 None Momentum flux, v-component N m**-2
+126 126 None Wind mixing energy J
+127 127 None Image data -
+148 lsm LSM LandSeaMask
+160 160 Unknown
+255 - - Indicates a missing value -
diff --git a/definitions/grib1/local/edzw/3.table b/definitions/grib1/local/edzw/3.table
deleted file mode 100644
index ea38992..0000000
--- a/definitions/grib1/local/edzw/3.table
+++ /dev/null
@@ -1,48 +0,0 @@
-# CODE TABLE 3 Fixed levels or layers for wich the data are included
-0 0 Reserved
-1 G Surface (of the Earth, which includes sea surface)
-2 CB Cloud base level
-3 CT Cloud top level
-4 IZ 0 deg (C) isotherm level
-5 AC Adiabatic condensation level (parcel lifted from surface)
-6 WM Maximum wind speed level
-7 TP Tropopause level
-8 AU Nominal top of atmosphere
-9 9 Sea bottom
-# 10-19 Reserved
-20 20 Isothermal level Temperature in 1/100 
-# 21-99 Reserved
-100 P Isobaric level pressure in hectoPascals (hPa) (2 octets)
-101 PI Layer between two isobaric levels pressure of top (kPa) pressure of bottom (kPa)
-102 MSL Mean sea level 0 0
-103 HMSL Fixed height level height above mean sea level (MSL) in meters
-104 HMSLI Layer between two height levels above msl height of top (hm) above mean sea level height of bottom (hm) above mean sea level
-105 HG Fixed height above ground height in meters (2 octets)
-106 HGI Layer between two height levels above ground height of top (hm) above ground height of bottom (hm) above ground
-107 SIG Sigma level sigma value in 1/10000 (2 octets)
-108 SIGI Layer between two sigma levels sigma value at top in 1/100 sigma value at bottom in 1/100
-109 H Hybrid level level number (2 octets)
-110 HI Layer between two hybrid levels level number of top level number of bottom
-111 B Depth below land surface centimeters (2 octets)
-112 S Layer between two depths below land surface depth of upper surface (cm) depth of lower surface (cm)
-113 pt Isentropic (theta) level Potential Temp. degrees K (2 octets)
-114 114 Layer between two isentropic levels 475K minus theta of top in Deg. K 475K minus theta of bottom in Deg. K
-115 115 Level at specified pressure difference from ground to level hPa (2 octets)
-116 116 Layer between two levels at specified pressure differences from ground to levels pressure difference from ground to top level hPa pressure difference from ground to bottom level hPa
-117 pv Potential vorticity surface 10-9 K m2 kg-1 s-1
-121 121 Layer between two isobaric surfaces (high precision) 1100 hPa minus pressure of top, in hPa 1100 hPa minus pressure of bottom, in hPa
-# 122-124 Reserved
-125 125 Height level above ground (high precision) centimeters (2 octets)
-# 126-127 Reserved
-128 128 Layer between two sigma levels (high precision) 1.1 minus sigma of top, in 1/1000 of sigma 1.1 minus sigma of bottom, in 1/1000 of sigma
-# 129-140 Reserved
-141 141 Layer between two isobaric surfaces (mixed precision) pressure of top, in kPa 1100hPa minus pressure of bottom, in hPa
-# 142-159 Reserved
-160 dp Depth below sea level meters (2 octets)
-# 161-199Reserved
-200 R Entire atmosphere considered as a single layer 0 (2 octets)
-201 201 Entire ocean considered as a single layer 0 (2 octets)
-210 pl Isobaric surface (Pa) (ECMWF extension)
-211 wv Ocean wave level (ECMWF extension)
-212 oml Ocean mixed layer (ECMWF extension)
-222 SYN Synthetic Satellite Images (DWD extension)
diff --git a/definitions/grib1/local/edzw/5.table b/definitions/grib1/local/edzw/5.table
index c0ad65d..7f7c99d 100644
--- a/definitions/grib1/local/edzw/5.table
+++ b/definitions/grib1/local/edzw/5.table
@@ -1,10 +1,12 @@
-# CODE TABLE 4 Time Range Indicator
+# CODE TABLE 5 Time Range Indicator
 0 0 Forecast product valid at reference time + P1 (P1>0)
 1 1 Initialized analysis product for reference time (P1=0).
 2 2 Product with a valid time ranging between reference time + P1 and reference time + P2
 3 3 Average (reference time + P1 to reference time + P2)
 4 4 Accumulation (reference time + P1 to reference time + P2) product considered valid at reference time + P2
 5 5 Difference (reference time + P2 minus reference time + P1) product considered valid at reference time + P2
+6 6 Average (reference time - P1 to reference time - P2)
+7 7 Average (reference time - P1 to reference time + P2)
 10 10 P1 occupies octets 19 and 20; product valid at reference time + P1
 11 11 local use: Initialized forecast (P1 > 0) for IDFI
 13 13 local use: Fields from analyses valid at reference time for P1 = 0
@@ -16,5 +18,7 @@
 116 116 Accumulation of N forecasts, all with the same reference time; the first has a forecast period of P1, the remaining follow at intervals of P2.
 117 117 Average of N forecasts, the first has a period of P1, the subsequent ones have forecast periods reduced from the previous one by an interval of P2; the reference time for the first is given in octets 13- 17, the subsequent ones have reference times increased from the previous one by an interval of P2. Thus all the forecasts have the same valid time, given by the initial reference time + P1.
 118 118 Temporal variance, or covariance, of N initialized analyses; each product has forecast period P1=0; products have reference times at intervals of P2, beginning at the given reference time.
+119 119 Standard deviation of N forecasts, all with the same reference time with respect to the time average of forecasts; the first forecast has a forecast period of P1, the remaining forecasts follow at intervals of P2
 123 123 Average of N uninitialized analyses, starting at the reference time, at intervals of P2.
 124 124 Accumulation of N uninitialized analyses, starting at the reference time, at intervals of P2.
+125 125 Standard deviation of N forecasts, all with the same reference time with respect to time average of the time tendency of forecasts; the first forecast has a forecast period of P1, the remaining forecasts follow at intervals of P2
diff --git a/definitions/grib1/local/edzw/generatingProcessIdentifier.table b/definitions/grib1/local/edzw/generatingProcessIdentifier.table
new file mode 100755
index 0000000..f2ecd9a
--- /dev/null
+++ b/definitions/grib1/local/edzw/generatingProcessIdentifier.table
@@ -0,0 +1,86 @@
+025 AN2MO AN2MO
+033 ANALY ANALY
+034 WAMIT WAMIT
+036 GPEPS GPEPS
+037 KWGFS KWGFS
+038 KWGF5 KWGF5
+044 B106V B106V
+049 S106V S106V
+053 AN1MO AN1MO
+058 EM3AN EM3AN
+059 EM3MO EM3MO
+061 ECMFM ECMFM
+064 KWBCM KWBCM
+065 LFPWM LFPWM
+068 KWB01 KWB01
+069 SGGLO SGGLO
+074 B106A B106A
+075 SGMED SGMED
+079 S106A S106A
+080 ECENS ECENS
+081 NORMW NORMW
+084 NORM3 NORM3
+085 SGNAT SGNAT
+086 SGESH SGESH
+087 SGBAL SGBAL
+088 MOMI3 MOMI3
+094 P106A P106A
+111 DM3AN DM3AN
+112 DM3MO DM3MO
+115 DM4AN DM4AN
+116 DM4MO DM4MO
+121 WAFTF WAFTF
+122 WAFSZ WAFSZ
+123 KWB02 KWB02
+124 KWB03 KWB03
+126 KWB04 KWB04
+127 NAEGR NAEGR
+131 LM1AN LM1AN
+132 LM1MO LM1MO
+134 LM2AN LM2AN
+135 LM2MO LM2MO
+137 LM3AN LM3AN
+138 LM3MO LM3MO
+140 ecgm_diag_fc05 ecgm_diag_fc05 
+141 I032A I032A
+143 I048A I048A
+145 I064A I064A
+147 I096A I096A
+148 I096F I096F
+149 I128A I128A
+150 I128F I128F
+157 R096A R096A
+159 R128A R128A
+160 R128F R128F
+173 I192A I192A
+174 I192F I192F
+175 I256A I256A
+176 I256F I256F
+185 R192A R192A
+186 R192F R192F
+187 R256A R256A
+188 R256F R256F
+194 E128A E128A
+195 E192A E192A
+196 E256A E256A
+197 SGGM0 SGGM0
+198 SGGM1 SGGM1
+199 SGGM2 SGGM2
+201 SGLM0 SGLM0
+202 SGLM1 SGLM1
+205 SGBSH SGBSH
+206 I384A I384A
+207 I384F I384F
+208 R384A R384A
+209 R384F R384F
+210 E384A E384A
+211 EGMES EGMES
+212 LFMES LFMES
+213 LM4MO LM4MO
+214 LM4AN LM4AN
+215 LM5MO LM5MO
+216 LM5AN LM5AN
+217 LM6MO LM6MO
+218 LM6AN LM6AN
+219 LM7MO LM7MO
+225 SGBS1 SGBS1
diff --git a/definitions/grib1/localConcepts/ammc/name.def b/definitions/grib1/localConcepts/ammc/name.def
index 79eee68..06e43cf 100644
--- a/definitions/grib1/localConcepts/ammc/name.def
+++ b/definitions/grib1/localConcepts/ammc/name.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at balthasar, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #test
 'test' = {
 	 indicatorOfParameter = 1 ;
diff --git a/definitions/grib1/localConcepts/ammc/paramId.def b/definitions/grib1/localConcepts/ammc/paramId.def
index 39a3973..7c9b851 100644
--- a/definitions/grib1/localConcepts/ammc/paramId.def
+++ b/definitions/grib1/localConcepts/ammc/paramId.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at balthasar, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #test
 '999999999' = {
 	 indicatorOfParameter = 1 ;
diff --git a/definitions/grib1/localConcepts/ammc/shortName.def b/definitions/grib1/localConcepts/ammc/shortName.def
index b391987..3d91e55 100644
--- a/definitions/grib1/localConcepts/ammc/shortName.def
+++ b/definitions/grib1/localConcepts/ammc/shortName.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at balthasar, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #test
 '' = {
 	 indicatorOfParameter = 1 ;
diff --git a/definitions/grib1/localConcepts/ammc/units.def b/definitions/grib1/localConcepts/ammc/units.def
index 1b229b5..af3952d 100644
--- a/definitions/grib1/localConcepts/ammc/units.def
+++ b/definitions/grib1/localConcepts/ammc/units.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at balthasar, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #test
 '(-1 to 1)' = {
 	 indicatorOfParameter = 1 ;
diff --git a/definitions/grib1/localConcepts/cnmc/name.def b/definitions/grib1/localConcepts/cnmc/name.def
index de71955..a7af1d9 100644
--- a/definitions/grib1/localConcepts/cnmc/name.def
+++ b/definitions/grib1/localConcepts/cnmc/name.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Pressure (S) (not reduced)
 'Pressure (S) (not reduced)' = {
 	 table2Version = 2 ;
diff --git a/definitions/grib1/localConcepts/cnmc/paramId.def b/definitions/grib1/localConcepts/cnmc/paramId.def
index 0c3f01e..60a3104 100644
--- a/definitions/grib1/localConcepts/cnmc/paramId.def
+++ b/definitions/grib1/localConcepts/cnmc/paramId.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Pressure (S) (not reduced)
 '500000' = {
 	 table2Version = 2 ;
diff --git a/definitions/grib1/localConcepts/cnmc/shortName.def b/definitions/grib1/localConcepts/cnmc/shortName.def
index 0aa363c..dcac8f5 100644
--- a/definitions/grib1/localConcepts/cnmc/shortName.def
+++ b/definitions/grib1/localConcepts/cnmc/shortName.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Pressure (S) (not reduced)
 'ps' = {
 	 table2Version = 2 ;
diff --git a/definitions/grib1/localConcepts/cnmc/units.def b/definitions/grib1/localConcepts/cnmc/units.def
index 9ae1209..11853f9 100644
--- a/definitions/grib1/localConcepts/cnmc/units.def
+++ b/definitions/grib1/localConcepts/cnmc/units.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Pressure (S) (not reduced)
 'Pa' = {
 	 table2Version = 2 ;
diff --git a/definitions/grib1/localConcepts/ecmf/cfName.def b/definitions/grib1/localConcepts/ecmf/cfName.def
index ac361ef..10abe95 100644
--- a/definitions/grib1/localConcepts/ecmf/cfName.def
+++ b/definitions/grib1/localConcepts/ecmf/cfName.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_param.pl from database param at balthasar, do not edit
+# Automatically generated by ./create_param.pl, do not edit
 #Geopotential
 'geopotential' = {
 	 indicatorOfParameter = 129 ;
diff --git a/definitions/grib1/localConcepts/ecmf/cfVarName.def b/definitions/grib1/localConcepts/ecmf/cfVarName.def
index c37e1c9..bee4437 100644
--- a/definitions/grib1/localConcepts/ecmf/cfVarName.def
+++ b/definitions/grib1/localConcepts/ecmf/cfVarName.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Total precipitation of at least 1 mm
 'tpg1' = {
 	 table2Version = 131 ;
@@ -289,7 +289,7 @@
 	 table2Version = 128 ;
 	 indicatorOfParameter = 47 ;
 	}
-#Magnitude of surface stress
+#Magnitude of turbulent surface stress
 'magss' = {
 	 table2Version = 128 ;
 	 indicatorOfParameter = 48 ;
@@ -2274,7 +2274,7 @@
 	 table2Version = 200 ;
 	 indicatorOfParameter = 47 ;
 	}
-#Magnitude of surface stress difference
+#Magnitude of turbulent surface stress difference
 'magssdiff' = {
 	 table2Version = 200 ;
 	 indicatorOfParameter = 48 ;
@@ -3314,6 +3314,16 @@
 	 table2Version = 131 ;
 	 indicatorOfParameter = 97 ;
 	}
+#Convective available potential energy shear index
+'capesi' = {
+	 table2Version = 132 ;
+	 indicatorOfParameter = 44 ;
+	}
+#Convective available potential energy index
+'capei' = {
+	 table2Version = 132 ;
+	 indicatorOfParameter = 59 ;
+	}
 #Maximum of significant wave height index
 'maxswhi' = {
 	 table2Version = 132 ;
@@ -3344,6 +3354,11 @@
 	 table2Version = 140 ;
 	 indicatorOfParameter = 84 ;
 	}
+#Significant wave height of all waves with period larger than 10s
+'sh10' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 120 ;
+	}
 #Significant wave height of first swell partition
 'p140121' = {
 	 table2Version = 140 ;
@@ -8989,6 +9004,46 @@
 	 table2Version = 228 ;
 	 indicatorOfParameter = 43 ;
 	}
+#Convective available potential energy shear
+'capes' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 44 ;
+	}
+#Height of convective cloud top
+'hcct' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 46 ;
+	}
+#Height of Zero Deg Wet Bulb Temperature
+'hwbt0' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 47 ;
+	}
+#Height of One Deg Wet Bulb Temperature
+'hwbt1' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 48 ;
+	}
+#Instantaneous total lightning density
+'litoti' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 50 ;
+	}
+#Averaged total lightning density
+'litota' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 51 ;
+	}
+#Instantaneous cloud-to-ground lightning density
+'licgi' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 52 ;
+	}
+#Averaged cloud-to-ground lightning density
+'licga' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 53 ;
+	}
 #GPP coefficient from Biogenic Flux Adjustment System
 'gppbfas' = {
 	 table2Version = 228 ;
@@ -9249,6 +9304,11 @@
 	 table2Version = 230 ;
 	 indicatorOfParameter = 213 ;
 	}
+#Accumulated freezing rain (variable resolution)
+'fzravar' = {
+	 table2Version = 230 ;
+	 indicatorOfParameter = 216 ;
+	}
 #Total precipitation (variable resolution)
 'tpvar' = {
 	 table2Version = 230 ;
@@ -9269,6 +9329,266 @@
 	 table2Version = 230 ;
 	 indicatorOfParameter = 251 ;
 	}
+#Mean surface runoff rate
+'p235020' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 20 ;
+	}
+#Mean sub-surface runoff rate
+'p235021' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 21 ;
+	}
+#Mean surface photosynthetically active radiation flux, clear sky
+'p235022' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 22 ;
+	}
+#Mean snow evaporation rate
+'p235023' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 23 ;
+	}
+#Mean snowmelt rate
+'p235024' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 24 ;
+	}
+#Mean magnitude of turbulent surface stress
+'p235025' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 25 ;
+	}
+#Mean large-scale precipitation fraction
+'p235026' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 26 ;
+	}
+#Mean surface downward UV radiation flux
+'p235027' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 27 ;
+	}
+#Mean surface photosynthetically active radiation flux
+'p235028' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 28 ;
+	}
+#Mean large-scale precipitation rate
+'p235029' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 29 ;
+	}
+#Mean convective precipitation rate
+'p235030' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 30 ;
+	}
+#Mean snowfall rate
+'p235031' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 31 ;
+	}
+#Mean boundary layer dissipation
+'p235032' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 32 ;
+	}
+#Mean surface sensible heat flux
+'p235033' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 33 ;
+	}
+#Mean surface latent heat flux
+'p235034' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 34 ;
+	}
+#Mean surface downward short-wave radiation flux
+'p235035' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 35 ;
+	}
+#Mean surface downward long-wave radiation flux
+'p235036' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 36 ;
+	}
+#Mean surface net short-wave radiation flux
+'p235037' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 37 ;
+	}
+#Mean surface net long-wave radiation flux
+'p235038' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 38 ;
+	}
+#Mean top net short-wave radiation flux
+'p235039' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 39 ;
+	}
+#Mean top net long-wave radiation flux
+'p235040' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 40 ;
+	}
+#Mean eastward turbulent surface stress
+'p235041' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 41 ;
+	}
+#Mean northward turbulent surface stress
+'p235042' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 42 ;
+	}
+#Mean evaporation rate
+'p235043' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 43 ;
+	}
+#Sunshine duration fraction
+'p235044' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 44 ;
+	}
+#Mean eastward gravity wave surface stress
+'megwss' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 45 ;
+	}
+#Mean northward gravity wave surface stress
+'mngwss' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 46 ;
+	}
+#Mean gravity wave dissipation
+'mgwd' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 47 ;
+	}
+#Mean runoff rate
+'mror' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 48 ;
+	}
+#Mean top net short-wave radiation flux, clear sky
+'mtnswrfcs' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 49 ;
+	}
+#Mean top net long-wave radiation flux, clear sky
+'mtnlwrfcs' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 50 ;
+	}
+#Mean surface net short-wave radiation flux, clear sky
+'msnswrfcs' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 51 ;
+	}
+#Mean surface net long-wave radiation flux, clear sky
+'msnlwrfcs' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 52 ;
+	}
+#Mean top downward short-wave radiation flux
+'mtdwswrf' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 53 ;
+	}
+#Mean vertically integrated moisture divergence
+'mvimd' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 54 ;
+	}
+#Mean total precipitation rate
+'mtpr' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 55 ;
+	}
+#Mean convective snowfall rate
+'mcsr' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 56 ;
+	}
+#Mean large-scale snowfall rate
+'mlssr' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 57 ;
+	}
+#Mean surface direct short-wave radiation flux
+'msdrswrf' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 58 ;
+	}
+#Mean surface direct short-wave radiation flux, clear sky
+'msdrswrfcs' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 59 ;
+	}
+#Mean surface diffuse short-wave radiation flux
+'msdfswrf' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 60 ;
+	}
+#Mean surface diffuse short-wave radiation flux, clear sky
+'msdfswrfcs' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 61 ;
+	}
+#Mean carbon dioxide net ecosystem exchange flux
+'mcdneef' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 62 ;
+	}
+#Mean carbon dioxide gross primary production flux
+'mcdgppf' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 63 ;
+	}
+#Mean carbon dioxide ecosystem respiration flux
+'mcderf' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 64 ;
+	}
+#Mean rain rate
+'mrr' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 65 ;
+	}
+#Mean convective rain rate
+'mcrr' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 66 ;
+	}
+#Mean large-scale rain rate
+'mlsrr' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 67 ;
+	}
+#Mean surface downward short-wave radiation flux, clear sky
+'msdwswrfcs' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 68 ;
+	}
+#Mean surface downward long-wave radiation flux, clear sky
+'msdwlwrfcs' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 69 ;
+	}
+#Mean potential evaporation rate
+'mper' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 70 ;
+	}
+#Ceiling
+'ceil' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 109 ;
+	}
 #K index
 'kx' = {
 	 table2Version = 228 ;
@@ -9459,7 +9779,7 @@
 	 table2Version = 129 ;
 	 indicatorOfParameter = 47 ;
 	}
-#Magnitude of surface stress gradient
+#Magnitude of turbulent surface stress gradient
 'magssgrd' = {
 	 table2Version = 129 ;
 	 indicatorOfParameter = 48 ;
@@ -10779,8 +11099,8 @@
 	 table2Version = 131 ;
 	 indicatorOfParameter = 130 ;
 	}
-#2 metre temperature probability
-'t2p' = {
+#Soil temperature level 1 probability
+'stl1p' = {
 	 table2Version = 131 ;
 	 indicatorOfParameter = 139 ;
 	}
@@ -10789,8 +11109,8 @@
 	 table2Version = 131 ;
 	 indicatorOfParameter = 144 ;
 	}
-#Total precipitation probability
-'tpp' = {
+#Mean sea level pressure probability
+'mslpp' = {
 	 table2Version = 131 ;
 	 indicatorOfParameter = 151 ;
 	}
@@ -12914,7 +13234,7 @@
 	 table2Version = 171 ;
 	 indicatorOfParameter = 47 ;
 	}
-#Magnitude of surface stress anomaly
+#Magnitude of turbulent surface stress anomaly
 'magssa' = {
 	 table2Version = 171 ;
 	 indicatorOfParameter = 48 ;
@@ -13669,7 +13989,7 @@
 	 table2Version = 172 ;
 	 indicatorOfParameter = 45 ;
 	}
-#Magnitude of surface stress
+#Magnitude of turbulent surface stress
 'p48.172' = {
 	 table2Version = 172 ;
 	 indicatorOfParameter = 48 ;
@@ -13849,7 +14169,7 @@
 	 table2Version = 173 ;
 	 indicatorOfParameter = 45 ;
 	}
-#Magnitude of surface stress anomaly
+#Magnitude of turbulent surface stress anomaly
 'p48.173' = {
 	 table2Version = 173 ;
 	 indicatorOfParameter = 48 ;
diff --git a/definitions/grib1/localConcepts/ecmf/name.def b/definitions/grib1/localConcepts/ecmf/name.def
index c1ce463..3f4ef1c 100644
--- a/definitions/grib1/localConcepts/ecmf/name.def
+++ b/definitions/grib1/localConcepts/ecmf/name.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Total precipitation of at least 1 mm
 'Total precipitation of at least 1 mm' = {
 	 table2Version = 131 ;
@@ -289,8 +289,8 @@
 	 table2Version = 128 ;
 	 indicatorOfParameter = 47 ;
 	}
-#Magnitude of surface stress
-'Magnitude of surface stress' = {
+#Magnitude of turbulent surface stress
+'Magnitude of turbulent surface stress' = {
 	 table2Version = 128 ;
 	 indicatorOfParameter = 48 ;
 	}
@@ -2274,8 +2274,8 @@
 	 table2Version = 200 ;
 	 indicatorOfParameter = 47 ;
 	}
-#Magnitude of surface stress difference
-'Magnitude of surface stress difference' = {
+#Magnitude of turbulent surface stress difference
+'Magnitude of turbulent surface stress difference' = {
 	 table2Version = 200 ;
 	 indicatorOfParameter = 48 ;
 	}
@@ -3314,6 +3314,16 @@
 	 table2Version = 131 ;
 	 indicatorOfParameter = 97 ;
 	}
+#Convective available potential energy shear index
+'Convective available potential energy shear index' = {
+	 table2Version = 132 ;
+	 indicatorOfParameter = 44 ;
+	}
+#Convective available potential energy index
+'Convective available potential energy index' = {
+	 table2Version = 132 ;
+	 indicatorOfParameter = 59 ;
+	}
 #Maximum of significant wave height index
 'Maximum of significant wave height index' = {
 	 table2Version = 132 ;
@@ -3344,6 +3354,11 @@
 	 table2Version = 140 ;
 	 indicatorOfParameter = 84 ;
 	}
+#Significant wave height of all waves with period larger than 10s
+'Significant wave height of all waves with period larger than 10s' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 120 ;
+	}
 #Significant wave height of first swell partition
 'Significant wave height of first swell partition' = {
 	 table2Version = 140 ;
@@ -8989,6 +9004,46 @@
 	 table2Version = 228 ;
 	 indicatorOfParameter = 43 ;
 	}
+#Convective available potential energy shear
+'Convective available potential energy shear' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 44 ;
+	}
+#Height of convective cloud top
+'Height of convective cloud top' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 46 ;
+	}
+#Height of Zero Deg Wet Bulb Temperature
+'Height of Zero Deg Wet Bulb Temperature' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 47 ;
+	}
+#Height of One Deg Wet Bulb Temperature
+'Height of One Deg Wet Bulb Temperature' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 48 ;
+	}
+#Instantaneous total lightning density
+'Instantaneous total lightning density' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 50 ;
+	}
+#Averaged total lightning density
+'Averaged total lightning density' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 51 ;
+	}
+#Instantaneous cloud-to-ground lightning density
+'Instantaneous cloud-to-ground lightning density' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 52 ;
+	}
+#Averaged cloud-to-ground lightning density
+'Averaged cloud-to-ground lightning density' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 53 ;
+	}
 #GPP coefficient from Biogenic Flux Adjustment System
 'GPP coefficient from Biogenic Flux Adjustment System' = {
 	 table2Version = 228 ;
@@ -9249,6 +9304,11 @@
 	 table2Version = 230 ;
 	 indicatorOfParameter = 213 ;
 	}
+#Accumulated freezing rain (variable resolution)
+'Accumulated freezing rain (variable resolution)' = {
+	 table2Version = 230 ;
+	 indicatorOfParameter = 216 ;
+	}
 #Total precipitation (variable resolution)
 'Total precipitation (variable resolution)' = {
 	 table2Version = 230 ;
@@ -9269,6 +9329,266 @@
 	 table2Version = 230 ;
 	 indicatorOfParameter = 251 ;
 	}
+#Mean surface runoff rate
+'Mean surface runoff rate' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 20 ;
+	}
+#Mean sub-surface runoff rate
+'Mean sub-surface runoff rate' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 21 ;
+	}
+#Mean surface photosynthetically active radiation flux, clear sky
+'Mean surface photosynthetically active radiation flux, clear sky' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 22 ;
+	}
+#Mean snow evaporation rate
+'Mean snow evaporation rate' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 23 ;
+	}
+#Mean snowmelt rate
+'Mean snowmelt rate' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 24 ;
+	}
+#Mean magnitude of turbulent surface stress
+'Mean magnitude of turbulent surface stress' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 25 ;
+	}
+#Mean large-scale precipitation fraction
+'Mean large-scale precipitation fraction' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 26 ;
+	}
+#Mean surface downward UV radiation flux
+'Mean surface downward UV radiation flux' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 27 ;
+	}
+#Mean surface photosynthetically active radiation flux
+'Mean surface photosynthetically active radiation flux' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 28 ;
+	}
+#Mean large-scale precipitation rate
+'Mean large-scale precipitation rate' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 29 ;
+	}
+#Mean convective precipitation rate
+'Mean convective precipitation rate' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 30 ;
+	}
+#Mean snowfall rate
+'Mean snowfall rate' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 31 ;
+	}
+#Mean boundary layer dissipation
+'Mean boundary layer dissipation' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 32 ;
+	}
+#Mean surface sensible heat flux
+'Mean surface sensible heat flux' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 33 ;
+	}
+#Mean surface latent heat flux
+'Mean surface latent heat flux' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 34 ;
+	}
+#Mean surface downward short-wave radiation flux
+'Mean surface downward short-wave radiation flux' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 35 ;
+	}
+#Mean surface downward long-wave radiation flux
+'Mean surface downward long-wave radiation flux' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 36 ;
+	}
+#Mean surface net short-wave radiation flux
+'Mean surface net short-wave radiation flux' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 37 ;
+	}
+#Mean surface net long-wave radiation flux
+'Mean surface net long-wave radiation flux' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 38 ;
+	}
+#Mean top net short-wave radiation flux
+'Mean top net short-wave radiation flux' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 39 ;
+	}
+#Mean top net long-wave radiation flux
+'Mean top net long-wave radiation flux' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 40 ;
+	}
+#Mean eastward turbulent surface stress
+'Mean eastward turbulent surface stress' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 41 ;
+	}
+#Mean northward turbulent surface stress
+'Mean northward turbulent surface stress' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 42 ;
+	}
+#Mean evaporation rate
+'Mean evaporation rate' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 43 ;
+	}
+#Sunshine duration fraction
+'Sunshine duration fraction' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 44 ;
+	}
+#Mean eastward gravity wave surface stress
+'Mean eastward gravity wave surface stress' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 45 ;
+	}
+#Mean northward gravity wave surface stress
+'Mean northward gravity wave surface stress' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 46 ;
+	}
+#Mean gravity wave dissipation
+'Mean gravity wave dissipation' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 47 ;
+	}
+#Mean runoff rate
+'Mean runoff rate' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 48 ;
+	}
+#Mean top net short-wave radiation flux, clear sky
+'Mean top net short-wave radiation flux, clear sky' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 49 ;
+	}
+#Mean top net long-wave radiation flux, clear sky
+'Mean top net long-wave radiation flux, clear sky' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 50 ;
+	}
+#Mean surface net short-wave radiation flux, clear sky
+'Mean surface net short-wave radiation flux, clear sky' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 51 ;
+	}
+#Mean surface net long-wave radiation flux, clear sky
+'Mean surface net long-wave radiation flux, clear sky' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 52 ;
+	}
+#Mean top downward short-wave radiation flux
+'Mean top downward short-wave radiation flux' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 53 ;
+	}
+#Mean vertically integrated moisture divergence
+'Mean vertically integrated moisture divergence' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 54 ;
+	}
+#Mean total precipitation rate
+'Mean total precipitation rate' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 55 ;
+	}
+#Mean convective snowfall rate
+'Mean convective snowfall rate' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 56 ;
+	}
+#Mean large-scale snowfall rate
+'Mean large-scale snowfall rate' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 57 ;
+	}
+#Mean surface direct short-wave radiation flux
+'Mean surface direct short-wave radiation flux' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 58 ;
+	}
+#Mean surface direct short-wave radiation flux, clear sky
+'Mean surface direct short-wave radiation flux, clear sky' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 59 ;
+	}
+#Mean surface diffuse short-wave radiation flux
+'Mean surface diffuse short-wave radiation flux' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 60 ;
+	}
+#Mean surface diffuse short-wave radiation flux, clear sky
+'Mean surface diffuse short-wave radiation flux, clear sky' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 61 ;
+	}
+#Mean carbon dioxide net ecosystem exchange flux
+'Mean carbon dioxide net ecosystem exchange flux' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 62 ;
+	}
+#Mean carbon dioxide gross primary production flux
+'Mean carbon dioxide gross primary production flux' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 63 ;
+	}
+#Mean carbon dioxide ecosystem respiration flux
+'Mean carbon dioxide ecosystem respiration flux' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 64 ;
+	}
+#Mean rain rate
+'Mean rain rate' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 65 ;
+	}
+#Mean convective rain rate
+'Mean convective rain rate' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 66 ;
+	}
+#Mean large-scale rain rate
+'Mean large-scale rain rate' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 67 ;
+	}
+#Mean surface downward short-wave radiation flux, clear sky
+'Mean surface downward short-wave radiation flux, clear sky' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 68 ;
+	}
+#Mean surface downward long-wave radiation flux, clear sky
+'Mean surface downward long-wave radiation flux, clear sky' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 69 ;
+	}
+#Mean potential evaporation rate
+'Mean potential evaporation rate' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 70 ;
+	}
+#Ceiling
+'Ceiling' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 109 ;
+	}
 #K index
 'K index' = {
 	 table2Version = 228 ;
@@ -9459,8 +9779,8 @@
 	 table2Version = 129 ;
 	 indicatorOfParameter = 47 ;
 	}
-#Magnitude of surface stress gradient
-'Magnitude of surface stress gradient' = {
+#Magnitude of turbulent surface stress gradient
+'Magnitude of turbulent surface stress gradient' = {
 	 table2Version = 129 ;
 	 indicatorOfParameter = 48 ;
 	}
@@ -10779,8 +11099,8 @@
 	 table2Version = 131 ;
 	 indicatorOfParameter = 130 ;
 	}
-#2 metre temperature probability
-'2 metre temperature probability' = {
+#Soil temperature level 1 probability
+'Soil temperature level 1 probability' = {
 	 table2Version = 131 ;
 	 indicatorOfParameter = 139 ;
 	}
@@ -10789,8 +11109,8 @@
 	 table2Version = 131 ;
 	 indicatorOfParameter = 144 ;
 	}
-#Total precipitation probability
-'Total precipitation probability' = {
+#Mean sea level pressure probability
+'Mean sea level pressure probability' = {
 	 table2Version = 131 ;
 	 indicatorOfParameter = 151 ;
 	}
@@ -12914,8 +13234,8 @@
 	 table2Version = 171 ;
 	 indicatorOfParameter = 47 ;
 	}
-#Magnitude of surface stress anomaly
-'Magnitude of surface stress anomaly' = {
+#Magnitude of turbulent surface stress anomaly
+'Magnitude of turbulent surface stress anomaly' = {
 	 table2Version = 171 ;
 	 indicatorOfParameter = 48 ;
 	}
@@ -13669,8 +13989,8 @@
 	 table2Version = 172 ;
 	 indicatorOfParameter = 45 ;
 	}
-#Magnitude of surface stress
-'Magnitude of surface stress' = {
+#Magnitude of turbulent surface stress
+'Magnitude of turbulent surface stress' = {
 	 table2Version = 172 ;
 	 indicatorOfParameter = 48 ;
 	}
@@ -13849,8 +14169,8 @@
 	 table2Version = 173 ;
 	 indicatorOfParameter = 45 ;
 	}
-#Magnitude of surface stress anomaly
-'Magnitude of surface stress anomaly' = {
+#Magnitude of turbulent surface stress anomaly
+'Magnitude of turbulent surface stress anomaly' = {
 	 table2Version = 173 ;
 	 indicatorOfParameter = 48 ;
 	}
diff --git a/definitions/grib1/localConcepts/ecmf/paramId.def b/definitions/grib1/localConcepts/ecmf/paramId.def
index 623cbef..0e996da 100644
--- a/definitions/grib1/localConcepts/ecmf/paramId.def
+++ b/definitions/grib1/localConcepts/ecmf/paramId.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Total precipitation of at least 1 mm
 '131060' = {
 	 table2Version = 131 ;
@@ -289,7 +289,7 @@
 	 table2Version = 128 ;
 	 indicatorOfParameter = 47 ;
 	}
-#Magnitude of surface stress
+#Magnitude of turbulent surface stress
 '48' = {
 	 table2Version = 128 ;
 	 indicatorOfParameter = 48 ;
@@ -2274,7 +2274,7 @@
 	 table2Version = 200 ;
 	 indicatorOfParameter = 47 ;
 	}
-#Magnitude of surface stress difference
+#Magnitude of turbulent surface stress difference
 '200048' = {
 	 table2Version = 200 ;
 	 indicatorOfParameter = 48 ;
@@ -3314,6 +3314,16 @@
 	 table2Version = 131 ;
 	 indicatorOfParameter = 97 ;
 	}
+#Convective available potential energy shear index
+'132044' = {
+	 table2Version = 132 ;
+	 indicatorOfParameter = 44 ;
+	}
+#Convective available potential energy index
+'132059' = {
+	 table2Version = 132 ;
+	 indicatorOfParameter = 59 ;
+	}
 #Maximum of significant wave height index
 '132216' = {
 	 table2Version = 132 ;
@@ -3344,6 +3354,11 @@
 	 table2Version = 140 ;
 	 indicatorOfParameter = 84 ;
 	}
+#Significant wave height of all waves with period larger than 10s
+'140120' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 120 ;
+	}
 #Significant wave height of first swell partition
 '140121' = {
 	 table2Version = 140 ;
@@ -8989,6 +9004,46 @@
 	 table2Version = 228 ;
 	 indicatorOfParameter = 43 ;
 	}
+#Convective available potential energy shear
+'228044' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 44 ;
+	}
+#Height of convective cloud top
+'228046' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 46 ;
+	}
+#Height of Zero Deg Wet Bulb Temperature
+'228047' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 47 ;
+	}
+#Height of One Deg Wet Bulb Temperature
+'228048' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 48 ;
+	}
+#Instantaneous total lightning density
+'228050' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 50 ;
+	}
+#Averaged total lightning density
+'228051' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 51 ;
+	}
+#Instantaneous cloud-to-ground lightning density
+'228052' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 52 ;
+	}
+#Averaged cloud-to-ground lightning density
+'228053' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 53 ;
+	}
 #GPP coefficient from Biogenic Flux Adjustment System
 '228078' = {
 	 table2Version = 228 ;
@@ -9249,6 +9304,11 @@
 	 table2Version = 230 ;
 	 indicatorOfParameter = 213 ;
 	}
+#Accumulated freezing rain (variable resolution)
+'230216' = {
+	 table2Version = 230 ;
+	 indicatorOfParameter = 216 ;
+	}
 #Total precipitation (variable resolution)
 '230228' = {
 	 table2Version = 230 ;
@@ -9269,6 +9329,266 @@
 	 table2Version = 230 ;
 	 indicatorOfParameter = 251 ;
 	}
+#Mean surface runoff rate
+'235020' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 20 ;
+	}
+#Mean sub-surface runoff rate
+'235021' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 21 ;
+	}
+#Mean surface photosynthetically active radiation flux, clear sky
+'235022' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 22 ;
+	}
+#Mean snow evaporation rate
+'235023' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 23 ;
+	}
+#Mean snowmelt rate
+'235024' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 24 ;
+	}
+#Mean magnitude of turbulent surface stress
+'235025' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 25 ;
+	}
+#Mean large-scale precipitation fraction
+'235026' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 26 ;
+	}
+#Mean surface downward UV radiation flux
+'235027' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 27 ;
+	}
+#Mean surface photosynthetically active radiation flux
+'235028' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 28 ;
+	}
+#Mean large-scale precipitation rate
+'235029' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 29 ;
+	}
+#Mean convective precipitation rate
+'235030' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 30 ;
+	}
+#Mean snowfall rate
+'235031' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 31 ;
+	}
+#Mean boundary layer dissipation
+'235032' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 32 ;
+	}
+#Mean surface sensible heat flux
+'235033' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 33 ;
+	}
+#Mean surface latent heat flux
+'235034' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 34 ;
+	}
+#Mean surface downward short-wave radiation flux
+'235035' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 35 ;
+	}
+#Mean surface downward long-wave radiation flux
+'235036' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 36 ;
+	}
+#Mean surface net short-wave radiation flux
+'235037' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 37 ;
+	}
+#Mean surface net long-wave radiation flux
+'235038' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 38 ;
+	}
+#Mean top net short-wave radiation flux
+'235039' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 39 ;
+	}
+#Mean top net long-wave radiation flux
+'235040' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 40 ;
+	}
+#Mean eastward turbulent surface stress
+'235041' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 41 ;
+	}
+#Mean northward turbulent surface stress
+'235042' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 42 ;
+	}
+#Mean evaporation rate
+'235043' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 43 ;
+	}
+#Sunshine duration fraction
+'235044' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 44 ;
+	}
+#Mean eastward gravity wave surface stress
+'235045' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 45 ;
+	}
+#Mean northward gravity wave surface stress
+'235046' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 46 ;
+	}
+#Mean gravity wave dissipation
+'235047' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 47 ;
+	}
+#Mean runoff rate
+'235048' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 48 ;
+	}
+#Mean top net short-wave radiation flux, clear sky
+'235049' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 49 ;
+	}
+#Mean top net long-wave radiation flux, clear sky
+'235050' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 50 ;
+	}
+#Mean surface net short-wave radiation flux, clear sky
+'235051' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 51 ;
+	}
+#Mean surface net long-wave radiation flux, clear sky
+'235052' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 52 ;
+	}
+#Mean top downward short-wave radiation flux
+'235053' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 53 ;
+	}
+#Mean vertically integrated moisture divergence
+'235054' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 54 ;
+	}
+#Mean total precipitation rate
+'235055' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 55 ;
+	}
+#Mean convective snowfall rate
+'235056' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 56 ;
+	}
+#Mean large-scale snowfall rate
+'235057' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 57 ;
+	}
+#Mean surface direct short-wave radiation flux
+'235058' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 58 ;
+	}
+#Mean surface direct short-wave radiation flux, clear sky
+'235059' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 59 ;
+	}
+#Mean surface diffuse short-wave radiation flux
+'235060' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 60 ;
+	}
+#Mean surface diffuse short-wave radiation flux, clear sky
+'235061' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 61 ;
+	}
+#Mean carbon dioxide net ecosystem exchange flux
+'235062' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 62 ;
+	}
+#Mean carbon dioxide gross primary production flux
+'235063' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 63 ;
+	}
+#Mean carbon dioxide ecosystem respiration flux
+'235064' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 64 ;
+	}
+#Mean rain rate
+'235065' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 65 ;
+	}
+#Mean convective rain rate
+'235066' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 66 ;
+	}
+#Mean large-scale rain rate
+'235067' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 67 ;
+	}
+#Mean surface downward short-wave radiation flux, clear sky
+'235068' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 68 ;
+	}
+#Mean surface downward long-wave radiation flux, clear sky
+'235069' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 69 ;
+	}
+#Mean potential evaporation rate
+'235070' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 70 ;
+	}
+#Ceiling
+'260109' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 109 ;
+	}
 #K index
 '260121' = {
 	 table2Version = 228 ;
@@ -9459,7 +9779,7 @@
 	 table2Version = 129 ;
 	 indicatorOfParameter = 47 ;
 	}
-#Magnitude of surface stress gradient
+#Magnitude of turbulent surface stress gradient
 '129048' = {
 	 table2Version = 129 ;
 	 indicatorOfParameter = 48 ;
@@ -10779,7 +11099,7 @@
 	 table2Version = 131 ;
 	 indicatorOfParameter = 130 ;
 	}
-#2 metre temperature probability
+#Soil temperature level 1 probability
 '131139' = {
 	 table2Version = 131 ;
 	 indicatorOfParameter = 139 ;
@@ -10789,7 +11109,7 @@
 	 table2Version = 131 ;
 	 indicatorOfParameter = 144 ;
 	}
-#Total precipitation probability
+#Mean sea level pressure probability
 '131151' = {
 	 table2Version = 131 ;
 	 indicatorOfParameter = 151 ;
@@ -12914,7 +13234,7 @@
 	 table2Version = 171 ;
 	 indicatorOfParameter = 47 ;
 	}
-#Magnitude of surface stress anomaly
+#Magnitude of turbulent surface stress anomaly
 '171048' = {
 	 table2Version = 171 ;
 	 indicatorOfParameter = 48 ;
@@ -13669,7 +13989,7 @@
 	 table2Version = 172 ;
 	 indicatorOfParameter = 45 ;
 	}
-#Magnitude of surface stress
+#Magnitude of turbulent surface stress
 '172048' = {
 	 table2Version = 172 ;
 	 indicatorOfParameter = 48 ;
@@ -13849,7 +14169,7 @@
 	 table2Version = 173 ;
 	 indicatorOfParameter = 45 ;
 	}
-#Magnitude of surface stress anomaly
+#Magnitude of turbulent surface stress anomaly
 '173048' = {
 	 table2Version = 173 ;
 	 indicatorOfParameter = 48 ;
diff --git a/definitions/grib1/localConcepts/ecmf/shortName.def b/definitions/grib1/localConcepts/ecmf/shortName.def
index b455888..a4f2466 100644
--- a/definitions/grib1/localConcepts/ecmf/shortName.def
+++ b/definitions/grib1/localConcepts/ecmf/shortName.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Total precipitation of at least 1 mm
 'tpg1' = {
 	 table2Version = 131 ;
@@ -289,7 +289,7 @@
 	 table2Version = 128 ;
 	 indicatorOfParameter = 47 ;
 	}
-#Magnitude of surface stress
+#Magnitude of turbulent surface stress
 'magss' = {
 	 table2Version = 128 ;
 	 indicatorOfParameter = 48 ;
@@ -2274,7 +2274,7 @@
 	 table2Version = 200 ;
 	 indicatorOfParameter = 47 ;
 	}
-#Magnitude of surface stress difference
+#Magnitude of turbulent surface stress difference
 'magssdiff' = {
 	 table2Version = 200 ;
 	 indicatorOfParameter = 48 ;
@@ -3314,6 +3314,16 @@
 	 table2Version = 131 ;
 	 indicatorOfParameter = 97 ;
 	}
+#Convective available potential energy shear index
+'capesi' = {
+	 table2Version = 132 ;
+	 indicatorOfParameter = 44 ;
+	}
+#Convective available potential energy index
+'capei' = {
+	 table2Version = 132 ;
+	 indicatorOfParameter = 59 ;
+	}
 #Maximum of significant wave height index
 'maxswhi' = {
 	 table2Version = 132 ;
@@ -3344,6 +3354,11 @@
 	 table2Version = 140 ;
 	 indicatorOfParameter = 84 ;
 	}
+#Significant wave height of all waves with period larger than 10s
+'sh10' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 120 ;
+	}
 #Significant wave height of first swell partition
 'swh1' = {
 	 table2Version = 140 ;
@@ -8989,6 +9004,46 @@
 	 table2Version = 228 ;
 	 indicatorOfParameter = 43 ;
 	}
+#Convective available potential energy shear
+'capes' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 44 ;
+	}
+#Height of convective cloud top
+'hcct' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 46 ;
+	}
+#Height of Zero Deg Wet Bulb Temperature
+'hwbt0' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 47 ;
+	}
+#Height of One Deg Wet Bulb Temperature
+'hwbt1' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 48 ;
+	}
+#Instantaneous total lightning density
+'litoti' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 50 ;
+	}
+#Averaged total lightning density
+'litota' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 51 ;
+	}
+#Instantaneous cloud-to-ground lightning density
+'licgi' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 52 ;
+	}
+#Averaged cloud-to-ground lightning density
+'licga' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 53 ;
+	}
 #GPP coefficient from Biogenic Flux Adjustment System
 'gppbfas' = {
 	 table2Version = 228 ;
@@ -9249,6 +9304,11 @@
 	 table2Version = 230 ;
 	 indicatorOfParameter = 213 ;
 	}
+#Accumulated freezing rain (variable resolution)
+'fzravar' = {
+	 table2Version = 230 ;
+	 indicatorOfParameter = 216 ;
+	}
 #Total precipitation (variable resolution)
 'tpvar' = {
 	 table2Version = 230 ;
@@ -9269,6 +9329,266 @@
 	 table2Version = 230 ;
 	 indicatorOfParameter = 251 ;
 	}
+#Mean surface runoff rate
+'msror' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 20 ;
+	}
+#Mean sub-surface runoff rate
+'mssror' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 21 ;
+	}
+#Mean surface photosynthetically active radiation flux, clear sky
+'msparfcs' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 22 ;
+	}
+#Mean snow evaporation rate
+'mser' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 23 ;
+	}
+#Mean snowmelt rate
+'msmr' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 24 ;
+	}
+#Mean magnitude of turbulent surface stress
+'mmtss' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 25 ;
+	}
+#Mean large-scale precipitation fraction
+'mlspf' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 26 ;
+	}
+#Mean surface downward UV radiation flux
+'msdwuvrf' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 27 ;
+	}
+#Mean surface photosynthetically active radiation flux
+'msparf' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 28 ;
+	}
+#Mean large-scale precipitation rate
+'mlspr' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 29 ;
+	}
+#Mean convective precipitation rate
+'mcpr' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 30 ;
+	}
+#Mean snowfall rate
+'msr' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 31 ;
+	}
+#Mean boundary layer dissipation
+'mbld' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 32 ;
+	}
+#Mean surface sensible heat flux
+'msshf' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 33 ;
+	}
+#Mean surface latent heat flux
+'mslhf' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 34 ;
+	}
+#Mean surface downward short-wave radiation flux
+'msdwswrf' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 35 ;
+	}
+#Mean surface downward long-wave radiation flux
+'msdwlwrf' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 36 ;
+	}
+#Mean surface net short-wave radiation flux
+'msnswrf' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 37 ;
+	}
+#Mean surface net long-wave radiation flux
+'msnlwrf' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 38 ;
+	}
+#Mean top net short-wave radiation flux
+'mtnswrf' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 39 ;
+	}
+#Mean top net long-wave radiation flux
+'mtnlwrf' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 40 ;
+	}
+#Mean eastward turbulent surface stress
+'metss' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 41 ;
+	}
+#Mean northward turbulent surface stress
+'mntss' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 42 ;
+	}
+#Mean evaporation rate
+'mer' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 43 ;
+	}
+#Sunshine duration fraction
+'sdf' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 44 ;
+	}
+#Mean eastward gravity wave surface stress
+'megwss' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 45 ;
+	}
+#Mean northward gravity wave surface stress
+'mngwss' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 46 ;
+	}
+#Mean gravity wave dissipation
+'mgwd' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 47 ;
+	}
+#Mean runoff rate
+'mror' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 48 ;
+	}
+#Mean top net short-wave radiation flux, clear sky
+'mtnswrfcs' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 49 ;
+	}
+#Mean top net long-wave radiation flux, clear sky
+'mtnlwrfcs' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 50 ;
+	}
+#Mean surface net short-wave radiation flux, clear sky
+'msnswrfcs' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 51 ;
+	}
+#Mean surface net long-wave radiation flux, clear sky
+'msnlwrfcs' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 52 ;
+	}
+#Mean top downward short-wave radiation flux
+'mtdwswrf' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 53 ;
+	}
+#Mean vertically integrated moisture divergence
+'mvimd' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 54 ;
+	}
+#Mean total precipitation rate
+'mtpr' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 55 ;
+	}
+#Mean convective snowfall rate
+'mcsr' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 56 ;
+	}
+#Mean large-scale snowfall rate
+'mlssr' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 57 ;
+	}
+#Mean surface direct short-wave radiation flux
+'msdrswrf' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 58 ;
+	}
+#Mean surface direct short-wave radiation flux, clear sky
+'msdrswrfcs' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 59 ;
+	}
+#Mean surface diffuse short-wave radiation flux
+'msdfswrf' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 60 ;
+	}
+#Mean surface diffuse short-wave radiation flux, clear sky
+'msdfswrfcs' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 61 ;
+	}
+#Mean carbon dioxide net ecosystem exchange flux
+'mcdneef' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 62 ;
+	}
+#Mean carbon dioxide gross primary production flux
+'mcdgppf' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 63 ;
+	}
+#Mean carbon dioxide ecosystem respiration flux
+'mcderf' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 64 ;
+	}
+#Mean rain rate
+'mrr' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 65 ;
+	}
+#Mean convective rain rate
+'mcrr' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 66 ;
+	}
+#Mean large-scale rain rate
+'mlsrr' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 67 ;
+	}
+#Mean surface downward short-wave radiation flux, clear sky
+'msdwswrfcs' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 68 ;
+	}
+#Mean surface downward long-wave radiation flux, clear sky
+'msdwlwrfcs' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 69 ;
+	}
+#Mean potential evaporation rate
+'mper' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 70 ;
+	}
+#Ceiling
+'ceil' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 109 ;
+	}
 #K index
 'kx' = {
 	 table2Version = 228 ;
@@ -9459,7 +9779,7 @@
 	 table2Version = 129 ;
 	 indicatorOfParameter = 47 ;
 	}
-#Magnitude of surface stress gradient
+#Magnitude of turbulent surface stress gradient
 'magssgrd' = {
 	 table2Version = 129 ;
 	 indicatorOfParameter = 48 ;
@@ -10779,8 +11099,8 @@
 	 table2Version = 131 ;
 	 indicatorOfParameter = 130 ;
 	}
-#2 metre temperature probability
-'2tp' = {
+#Soil temperature level 1 probability
+'stl1p' = {
 	 table2Version = 131 ;
 	 indicatorOfParameter = 139 ;
 	}
@@ -10789,8 +11109,8 @@
 	 table2Version = 131 ;
 	 indicatorOfParameter = 144 ;
 	}
-#Total precipitation probability
-'tpp' = {
+#Mean sea level pressure probability
+'mslpp' = {
 	 table2Version = 131 ;
 	 indicatorOfParameter = 151 ;
 	}
@@ -12914,7 +13234,7 @@
 	 table2Version = 171 ;
 	 indicatorOfParameter = 47 ;
 	}
-#Magnitude of surface stress anomaly
+#Magnitude of turbulent surface stress anomaly
 'magssa' = {
 	 table2Version = 171 ;
 	 indicatorOfParameter = 48 ;
@@ -13669,7 +13989,7 @@
 	 table2Version = 172 ;
 	 indicatorOfParameter = 45 ;
 	}
-#Magnitude of surface stress
+#Magnitude of turbulent surface stress
 '~' = {
 	 table2Version = 172 ;
 	 indicatorOfParameter = 48 ;
@@ -13849,7 +14169,7 @@
 	 table2Version = 173 ;
 	 indicatorOfParameter = 45 ;
 	}
-#Magnitude of surface stress anomaly
+#Magnitude of turbulent surface stress anomaly
 '~' = {
 	 table2Version = 173 ;
 	 indicatorOfParameter = 48 ;
diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def
index 55547b4..b5143da 100644
--- a/definitions/grib1/localConcepts/ecmf/units.def
+++ b/definitions/grib1/localConcepts/ecmf/units.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Total precipitation of at least 1 mm
 '%' = {
 	 table2Version = 131 ;
@@ -289,7 +289,7 @@
 	 table2Version = 128 ;
 	 indicatorOfParameter = 47 ;
 	}
-#Magnitude of surface stress
+#Magnitude of turbulent surface stress
 'N m**-2 s' = {
 	 table2Version = 128 ;
 	 indicatorOfParameter = 48 ;
@@ -2274,7 +2274,7 @@
 	 table2Version = 200 ;
 	 indicatorOfParameter = 47 ;
 	}
-#Magnitude of surface stress difference
+#Magnitude of turbulent surface stress difference
 'N m**-2 s' = {
 	 table2Version = 200 ;
 	 indicatorOfParameter = 48 ;
@@ -3314,6 +3314,16 @@
 	 table2Version = 131 ;
 	 indicatorOfParameter = 97 ;
 	}
+#Convective available potential energy shear index
+'(-1 to 1)' = {
+	 table2Version = 132 ;
+	 indicatorOfParameter = 44 ;
+	}
+#Convective available potential energy index
+'(-1 to 1)' = {
+	 table2Version = 132 ;
+	 indicatorOfParameter = 59 ;
+	}
 #Maximum of significant wave height index
 '(-1 to 1)' = {
 	 table2Version = 132 ;
@@ -3344,6 +3354,11 @@
 	 table2Version = 140 ;
 	 indicatorOfParameter = 84 ;
 	}
+#Significant wave height of all waves with period larger than 10s
+'m' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 120 ;
+	}
 #Significant wave height of first swell partition
 'm' = {
 	 table2Version = 140 ;
@@ -3410,12 +3425,12 @@
 	 indicatorOfParameter = 210 ;
 	}
 #Normalized energy flux into waves
-'~' = {
+'dimensionless' = {
 	 table2Version = 140 ;
 	 indicatorOfParameter = 211 ;
 	}
 #Normalized energy flux into ocean
-'~' = {
+'dimensionless' = {
 	 table2Version = 140 ;
 	 indicatorOfParameter = 212 ;
 	}
@@ -3425,7 +3440,7 @@
 	 indicatorOfParameter = 213 ;
 	}
 #Normalized stress into ocean
-'~' = {
+'dimensionless' = {
 	 table2Version = 140 ;
 	 indicatorOfParameter = 214 ;
 	}
@@ -8989,6 +9004,46 @@
 	 table2Version = 228 ;
 	 indicatorOfParameter = 43 ;
 	}
+#Convective available potential energy shear
+'m**2 s**-2' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 44 ;
+	}
+#Height of convective cloud top
+'m' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 46 ;
+	}
+#Height of Zero Deg Wet Bulb Temperature
+'m' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 47 ;
+	}
+#Height of One Deg Wet Bulb Temperature
+'m' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 48 ;
+	}
+#Instantaneous total lightning density
+'flashes/km2/day' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 50 ;
+	}
+#Averaged total lightning density
+'flashes/km2/day' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 51 ;
+	}
+#Instantaneous cloud-to-ground lightning density
+'flashes/km2/day' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 52 ;
+	}
+#Averaged cloud-to-ground lightning density
+'flashes/km2/day' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 53 ;
+	}
 #GPP coefficient from Biogenic Flux Adjustment System
 'dimensionless' = {
 	 table2Version = 228 ;
@@ -9249,6 +9304,11 @@
 	 table2Version = 230 ;
 	 indicatorOfParameter = 213 ;
 	}
+#Accumulated freezing rain (variable resolution)
+'m' = {
+	 table2Version = 230 ;
+	 indicatorOfParameter = 216 ;
+	}
 #Total precipitation (variable resolution)
 'm' = {
 	 table2Version = 230 ;
@@ -9269,6 +9329,266 @@
 	 table2Version = 230 ;
 	 indicatorOfParameter = 251 ;
 	}
+#Mean surface runoff rate
+'kg m**-2 s**-1' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 20 ;
+	}
+#Mean sub-surface runoff rate
+'kg m**-2 s**-1' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 21 ;
+	}
+#Mean surface photosynthetically active radiation flux, clear sky
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 22 ;
+	}
+#Mean snow evaporation rate
+'kg m**-2 s**-1' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 23 ;
+	}
+#Mean snowmelt rate
+'kg m**-2 s**-1' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 24 ;
+	}
+#Mean magnitude of turbulent surface stress
+'N m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 25 ;
+	}
+#Mean large-scale precipitation fraction
+'Proportion' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 26 ;
+	}
+#Mean surface downward UV radiation flux
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 27 ;
+	}
+#Mean surface photosynthetically active radiation flux
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 28 ;
+	}
+#Mean large-scale precipitation rate
+'kg m**-2 s**-1' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 29 ;
+	}
+#Mean convective precipitation rate
+'kg m**-2 s**-1' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 30 ;
+	}
+#Mean snowfall rate
+'kg m**-2 s**-1' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 31 ;
+	}
+#Mean boundary layer dissipation
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 32 ;
+	}
+#Mean surface sensible heat flux
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 33 ;
+	}
+#Mean surface latent heat flux
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 34 ;
+	}
+#Mean surface downward short-wave radiation flux
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 35 ;
+	}
+#Mean surface downward long-wave radiation flux
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 36 ;
+	}
+#Mean surface net short-wave radiation flux
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 37 ;
+	}
+#Mean surface net long-wave radiation flux
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 38 ;
+	}
+#Mean top net short-wave radiation flux
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 39 ;
+	}
+#Mean top net long-wave radiation flux
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 40 ;
+	}
+#Mean eastward turbulent surface stress
+'N m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 41 ;
+	}
+#Mean northward turbulent surface stress
+'N m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 42 ;
+	}
+#Mean evaporation rate
+'kg m**-2 s**-1' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 43 ;
+	}
+#Sunshine duration fraction
+'Proportion' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 44 ;
+	}
+#Mean eastward gravity wave surface stress
+'N m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 45 ;
+	}
+#Mean northward gravity wave surface stress
+'N m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 46 ;
+	}
+#Mean gravity wave dissipation
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 47 ;
+	}
+#Mean runoff rate
+'kg m**-2 s**-1' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 48 ;
+	}
+#Mean top net short-wave radiation flux, clear sky
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 49 ;
+	}
+#Mean top net long-wave radiation flux, clear sky
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 50 ;
+	}
+#Mean surface net short-wave radiation flux, clear sky
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 51 ;
+	}
+#Mean surface net long-wave radiation flux, clear sky
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 52 ;
+	}
+#Mean top downward short-wave radiation flux
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 53 ;
+	}
+#Mean vertically integrated moisture divergence
+'kg m**-2 s**-1' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 54 ;
+	}
+#Mean total precipitation rate
+'kg m**-2 s**-1' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 55 ;
+	}
+#Mean convective snowfall rate
+'kg m**-2 s**-1' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 56 ;
+	}
+#Mean large-scale snowfall rate
+'kg m**-2 s**-1' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 57 ;
+	}
+#Mean surface direct short-wave radiation flux
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 58 ;
+	}
+#Mean surface direct short-wave radiation flux, clear sky
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 59 ;
+	}
+#Mean surface diffuse short-wave radiation flux
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 60 ;
+	}
+#Mean surface diffuse short-wave radiation flux, clear sky
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 61 ;
+	}
+#Mean carbon dioxide net ecosystem exchange flux
+'kg m**-2 s**-1' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 62 ;
+	}
+#Mean carbon dioxide gross primary production flux
+'kg m**-2 s**-1' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 63 ;
+	}
+#Mean carbon dioxide ecosystem respiration flux
+'kg m**-2 s**-1' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 64 ;
+	}
+#Mean rain rate
+'kg m**-2 s**-1' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 65 ;
+	}
+#Mean convective rain rate
+'kg m**-2 s**-1' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 66 ;
+	}
+#Mean large-scale rain rate
+'kg m**-2 s**-1' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 67 ;
+	}
+#Mean surface downward short-wave radiation flux, clear sky
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 68 ;
+	}
+#Mean surface downward long-wave radiation flux, clear sky
+'W m**-2' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 69 ;
+	}
+#Mean potential evaporation rate
+'kg m**-2 s**-1' = {
+	 table2Version = 235 ;
+	 indicatorOfParameter = 70 ;
+	}
+#Ceiling
+'m' = {
+	 table2Version = 228 ;
+	 indicatorOfParameter = 109 ;
+	}
 #K index
 'K' = {
 	 table2Version = 228 ;
@@ -9459,7 +9779,7 @@
 	 table2Version = 129 ;
 	 indicatorOfParameter = 47 ;
 	}
-#Magnitude of surface stress gradient
+#Magnitude of turbulent surface stress gradient
 'N m**-2 s' = {
 	 table2Version = 129 ;
 	 indicatorOfParameter = 48 ;
@@ -10779,7 +11099,7 @@
 	 table2Version = 131 ;
 	 indicatorOfParameter = 130 ;
 	}
-#2 metre temperature probability
+#Soil temperature level 1 probability
 '%' = {
 	 table2Version = 131 ;
 	 indicatorOfParameter = 139 ;
@@ -10789,7 +11109,7 @@
 	 table2Version = 131 ;
 	 indicatorOfParameter = 144 ;
 	}
-#Total precipitation probability
+#Mean sea level pressure probability
 '%' = {
 	 table2Version = 131 ;
 	 indicatorOfParameter = 151 ;
@@ -11365,7 +11685,7 @@
 	 indicatorOfParameter = 221 ;
 	}
 #Wave spectral directional width
-'~' = {
+'dimensionless' = {
 	 table2Version = 140 ;
 	 indicatorOfParameter = 222 ;
 	}
@@ -11380,7 +11700,7 @@
 	 indicatorOfParameter = 224 ;
 	}
 #Wave spectral directional width for wind waves
-'~' = {
+'dimensionless' = {
 	 table2Version = 140 ;
 	 indicatorOfParameter = 225 ;
 	}
@@ -11395,7 +11715,7 @@
 	 indicatorOfParameter = 227 ;
 	}
 #Wave spectral directional width for swell
-'~' = {
+'dimensionless' = {
 	 table2Version = 140 ;
 	 indicatorOfParameter = 228 ;
 	}
@@ -11420,7 +11740,7 @@
 	 indicatorOfParameter = 232 ;
 	}
 #Coefficient of drag with waves
-'~' = {
+'dimensionless' = {
 	 table2Version = 140 ;
 	 indicatorOfParameter = 233 ;
 	}
@@ -11515,17 +11835,17 @@
 	 indicatorOfParameter = 251 ;
 	}
 #Wave spectral kurtosis
-'~' = {
+'dimensionless' = {
 	 table2Version = 140 ;
 	 indicatorOfParameter = 252 ;
 	}
 #Benjamin-Feir index
-'~' = {
+'dimensionless' = {
 	 table2Version = 140 ;
 	 indicatorOfParameter = 253 ;
 	}
 #Wave spectral peakedness
-'s**-1' = {
+'dimensionless' = {
 	 table2Version = 140 ;
 	 indicatorOfParameter = 254 ;
 	}
@@ -12914,7 +13234,7 @@
 	 table2Version = 171 ;
 	 indicatorOfParameter = 47 ;
 	}
-#Magnitude of surface stress anomaly
+#Magnitude of turbulent surface stress anomaly
 'N m**-2 s' = {
 	 table2Version = 171 ;
 	 indicatorOfParameter = 48 ;
@@ -13669,7 +13989,7 @@
 	 table2Version = 172 ;
 	 indicatorOfParameter = 45 ;
 	}
-#Magnitude of surface stress
+#Magnitude of turbulent surface stress
 'N m**-2' = {
 	 table2Version = 172 ;
 	 indicatorOfParameter = 48 ;
@@ -13695,22 +14015,22 @@
 	 indicatorOfParameter = 144 ;
 	}
 #Boundary layer dissipation
-'J m**-2' = {
+'W m**-2' = {
 	 table2Version = 172 ;
 	 indicatorOfParameter = 145 ;
 	}
 #Surface sensible heat flux
-'J m**-2' = {
+'W m**-2' = {
 	 table2Version = 172 ;
 	 indicatorOfParameter = 146 ;
 	}
 #Surface latent heat flux
-'J m**-2' = {
+'W m**-2' = {
 	 table2Version = 172 ;
 	 indicatorOfParameter = 147 ;
 	}
 #Surface net radiation
-'J m**-2' = {
+'W m**-2' = {
 	 table2Version = 172 ;
 	 indicatorOfParameter = 149 ;
 	}
@@ -13725,32 +14045,32 @@
 	 indicatorOfParameter = 154 ;
 	}
 #Surface solar radiation downwards
-'J m**-2' = {
+'W m**-2' = {
 	 table2Version = 172 ;
 	 indicatorOfParameter = 169 ;
 	}
 #Surface thermal radiation downwards
-'J m**-2' = {
+'W m**-2' = {
 	 table2Version = 172 ;
 	 indicatorOfParameter = 175 ;
 	}
 #Surface solar radiation
-'J m**-2' = {
+'W m**-2' = {
 	 table2Version = 172 ;
 	 indicatorOfParameter = 176 ;
 	}
 #Surface thermal radiation
-'J m**-2' = {
+'W m**-2' = {
 	 table2Version = 172 ;
 	 indicatorOfParameter = 177 ;
 	}
 #Top solar radiation
-'J m**-2' = {
+'W m**-2' = {
 	 table2Version = 172 ;
 	 indicatorOfParameter = 178 ;
 	}
 #Top thermal radiation
-'J m**-2' = {
+'W m**-2' = {
 	 table2Version = 172 ;
 	 indicatorOfParameter = 179 ;
 	}
@@ -13785,7 +14105,7 @@
 	 indicatorOfParameter = 196 ;
 	}
 #Gravity wave dissipation
-'J m**-2' = {
+'W m**-2' = {
 	 table2Version = 172 ;
 	 indicatorOfParameter = 197 ;
 	}
@@ -13795,27 +14115,27 @@
 	 indicatorOfParameter = 205 ;
 	}
 #Top net solar radiation, clear sky
-'J m**-2' = {
+'W m**-2' = {
 	 table2Version = 172 ;
 	 indicatorOfParameter = 208 ;
 	}
 #Top net thermal radiation, clear sky
-'J m**-2' = {
+'W m**-2' = {
 	 table2Version = 172 ;
 	 indicatorOfParameter = 209 ;
 	}
 #Surface net solar radiation, clear sky
-'J m**-2' = {
+'W m**-2' = {
 	 table2Version = 172 ;
 	 indicatorOfParameter = 210 ;
 	}
 #Surface net thermal radiation, clear sky
-'J m**-2' = {
+'W m**-2' = {
 	 table2Version = 172 ;
 	 indicatorOfParameter = 211 ;
 	}
 #Solar insolation
-'W m**-2 s**-1' = {
+'W m**-2' = {
 	 table2Version = 172 ;
 	 indicatorOfParameter = 212 ;
 	}
@@ -13849,7 +14169,7 @@
 	 table2Version = 173 ;
 	 indicatorOfParameter = 45 ;
 	}
-#Magnitude of surface stress anomaly
+#Magnitude of turbulent surface stress anomaly
 'N m**-2' = {
 	 table2Version = 173 ;
 	 indicatorOfParameter = 48 ;
diff --git a/definitions/grib1/localConcepts/edzw/name.def b/definitions/grib1/localConcepts/edzw/name.def
old mode 100644
new mode 100755
index 770f747..31fdf11
--- a/definitions/grib1/localConcepts/edzw/name.def
+++ b/definitions/grib1/localConcepts/edzw/name.def
@@ -1,4 +1,4 @@
-# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2015-02-25 15:30
+# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2016-02-03 10:04
 #paramId: 500000
 #Pressure (S) (not reduced)
 'Pressure (S) (not reduced)' = {
@@ -2139,22 +2139,22 @@
 	}
 
 #paramId: 500293
-#geostrophische  Vorticityadvektion
-'geostrophische  Vorticityadvektion' = {
+#geostrophische Vorticityadvektion
+'geostrophische Vorticityadvektion' = {
 	 table2Version = 203 ;
 	 indicatorOfParameter = 101 ;
 	}
 
 #paramId: 500294
-#Geostrophische Schichtdickenadvektion
-'Geostrophische Schichtdickenadvektion' = {
+#geostrophische Schichtdickenadvektion
+'geostrophische Schichtdickenadvektion' = {
 	 table2Version = 203 ;
 	 indicatorOfParameter = 103 ;
 	}
 
 #paramId: 500295
-#Schichtdicken-Advektion
-'Schichtdicken-Advektion' = {
+#Schichtdickenadvektion
+'Schichtdickenadvektion' = {
 	 table2Version = 203 ;
 	 indicatorOfParameter = 107 ;
 	}
@@ -8954,3 +8954,24 @@
 	 timeRangeIndicator = 4 ;
 	}
 
+#paramId: 503140
+#orography
+'orography' = {
+	 table2Version = 3 ;
+	 indicatorOfParameter = 148 ;
+	}
+
+#paramId: 503141
+#wind_gust_10m
+'wind_gust_10m' = {
+	 table2Version = 3 ;
+	 indicatorOfParameter = 149 ;
+	}
+
+#paramId: 503142
+#Lightning Potential Index
+'Lightning Potential Index' = {
+	 table2Version = 201 ;
+	 indicatorOfParameter = 196 ;
+	}
+
diff --git a/definitions/grib1/localConcepts/edzw/paramId.def b/definitions/grib1/localConcepts/edzw/paramId.def
old mode 100644
new mode 100755
index ad2c54a..5eba042
--- a/definitions/grib1/localConcepts/edzw/paramId.def
+++ b/definitions/grib1/localConcepts/edzw/paramId.def
@@ -1,4 +1,4 @@
-# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE,do not edit! 2015-02-25 15:30
+# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE,do not edit! 2016-02-03 10:04
 #paramId: 500000
 #Pressure (S) (not reduced)
 '500000' = {
@@ -3446,6 +3446,20 @@
 	 indicatorOfParameter = 162 ;
 	}
 
+#paramId: 503140
+#orography
+'503140' = {
+	 table2Version = 3 ;
+	 indicatorOfParameter = 148 ;
+	}
+
+#paramId: 503141
+#wind_gust_10m
+'503141' = {
+	 table2Version = 3 ;
+	 indicatorOfParameter = 149 ;
+	}
+
 #paramId: 500090
 #Photosynthetically active radiation (m) (at the surface)
 '500090' = {
@@ -4889,21 +4903,21 @@
 	}
 
 #paramId: 500293
-#geostrophische  Vorticityadvektion
+#geostrophische Vorticityadvektion
 '500293' = {
 	 table2Version = 203 ;
 	 indicatorOfParameter = 101 ;
 	}
 
 #paramId: 500294
-#Geostrophische Schichtdickenadvektion
+#geostrophische Schichtdickenadvektion
 '500294' = {
 	 table2Version = 203 ;
 	 indicatorOfParameter = 103 ;
 	}
 
 #paramId: 500295
-#Schichtdicken-Advektion
+#Schichtdickenadvektion
 '500295' = {
 	 table2Version = 203 ;
 	 indicatorOfParameter = 107 ;
@@ -8954,3 +8968,10 @@
 	 timeRangeIndicator = 4 ;
 	}
 
+#paramId: 503142
+#Lightning Potential Index
+'503142' = {
+	 table2Version = 201 ;
+	 indicatorOfParameter = 196 ;
+	}
+
diff --git a/definitions/grib1/localConcepts/edzw/shortName.def b/definitions/grib1/localConcepts/edzw/shortName.def
old mode 100644
new mode 100755
index 1ce51d0..2e9be9d
--- a/definitions/grib1/localConcepts/edzw/shortName.def
+++ b/definitions/grib1/localConcepts/edzw/shortName.def
@@ -1,4 +1,4 @@
-# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2015-02-25 15:30
+# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2016-02-03 10:04
 #paramId: 500000
 #Pressure (S) (not reduced)
 'PS' = {
@@ -2139,21 +2139,21 @@
 	}
 
 #paramId: 500293
-#geostrophische  Vorticityadvektion
+#geostrophische Vorticityadvektion
 'ADVORG' = {
 	 table2Version = 203 ;
 	 indicatorOfParameter = 101 ;
 	}
 
 #paramId: 500294
-#Geostrophische Schichtdickenadvektion
+#geostrophische Schichtdickenadvektion
 'ADVOR' = {
 	 table2Version = 203 ;
 	 indicatorOfParameter = 103 ;
 	}
 
 #paramId: 500295
-#Schichtdicken-Advektion
+#Schichtdickenadvektion
 'ADRTG' = {
 	 table2Version = 203 ;
 	 indicatorOfParameter = 107 ;
@@ -8954,3 +8954,24 @@
 	 timeRangeIndicator = 4 ;
 	}
 
+#paramId: 503140
+#orography
+'ORO_UK' = {
+	 table2Version = 3 ;
+	 indicatorOfParameter = 148 ;
+	}
+
+#paramId: 503141
+#wind_gust_10m
+'GUST_10M_UK' = {
+	 table2Version = 3 ;
+	 indicatorOfParameter = 149 ;
+	}
+
+#paramId: 503142
+#Lightning Potential Index
+'LPI' = {
+	 table2Version = 201 ;
+	 indicatorOfParameter = 196 ;
+	}
+
diff --git a/definitions/grib1/localConcepts/edzw/units.def b/definitions/grib1/localConcepts/edzw/units.def
old mode 100644
new mode 100755
index 45fce2c..e0b5ef3
--- a/definitions/grib1/localConcepts/edzw/units.def
+++ b/definitions/grib1/localConcepts/edzw/units.def
@@ -1,4 +1,4 @@
-# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2015-02-25 15:30
+# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2016-02-03 10:04
 #paramId: 500000
 #Pressure (S) (not reduced)
 'Pa' = {
@@ -531,7 +531,7 @@
 
 #paramId: 500069
 #Sea Ice Cover ( 0= free, 1=cover)
-'Numeric' = {
+'Proportion' = {
 	 table2Version = 2 ;
 	 indicatorOfParameter = 91 ;
 	}
@@ -950,14 +950,14 @@
 
 #paramId: 500124
 #zonal wind tendency due to convection
-'m s-1' = {
+'m s-2' = {
 	 table2Version = 201 ;
 	 indicatorOfParameter = 78 ;
 	}
 
 #paramId: 500125
 #meridional wind tendency due to convection
-'m s-1' = {
+'m s-2' = {
 	 table2Version = 201 ;
 	 indicatorOfParameter = 79 ;
 	}
@@ -1181,7 +1181,7 @@
 
 #paramId: 500156
 #Tendency of turbulent kinetic energy
-'m s-1' = {
+'m2 s-3' = {
 	 table2Version = 201 ;
 	 indicatorOfParameter = 148 ;
 	}
@@ -1463,14 +1463,14 @@
 
 #paramId: 500198
 #zonal wind tendency due to subgrid scale oro.
-'m s-1' = {
+'m s-2' = {
 	 table2Version = 202 ;
 	 indicatorOfParameter = 44 ;
 	}
 
 #paramId: 500199
 #meridional wind tendency due to subgrid scale oro.
-'m s-1' = {
+'m s-2' = {
 	 table2Version = 202 ;
 	 indicatorOfParameter = 45 ;
 	}
@@ -2139,21 +2139,21 @@
 	}
 
 #paramId: 500293
-#geostrophische  Vorticityadvektion
+#geostrophische Vorticityadvektion
 's-2' = {
 	 table2Version = 203 ;
 	 indicatorOfParameter = 101 ;
 	}
 
 #paramId: 500294
-#Geostrophische Schichtdickenadvektion
+#geostrophische Schichtdickenadvektion
 'm3 kg-1 s-1' = {
 	 table2Version = 203 ;
 	 indicatorOfParameter = 103 ;
 	}
 
 #paramId: 500295
-#Schichtdicken-Advektion
+#Schichtdickenadvektion
 'm3 kg-1 s-1' = {
 	 table2Version = 203 ;
 	 indicatorOfParameter = 107 ;
@@ -3566,7 +3566,7 @@
 
 #paramId: 500490
 #Water Fraction
-'Numeric' = {
+'Proportion' = {
 	 table2Version = 202 ;
 	 indicatorOfParameter = 55 ;
 	}
@@ -3587,7 +3587,7 @@
 
 #paramId: 500493
 #Attenuation coefficient of water with respect to solar radiation
-'1-m' = {
+'m-1' = {
 	 table2Version = 201 ;
 	 indicatorOfParameter = 92 ;
 	}
@@ -6882,7 +6882,7 @@
 
 #paramId: 502421
 #Sigma coordinate vertical velocity
-'1/s' = {
+'s-1' = {
 	 table2Version = 3 ;
 	 indicatorOfParameter = 38 ;
 	}
@@ -6896,21 +6896,21 @@
 
 #paramId: 502423
 #Absolute divergence
-'1/s' = {
+'s-1' = {
 	 table2Version = 3 ;
 	 indicatorOfParameter = 42 ;
 	}
 
 #paramId: 502424
 #Vertical u-component shear
-'1/s' = {
+'s-1' = {
 	 table2Version = 3 ;
 	 indicatorOfParameter = 45 ;
 	}
 
 #paramId: 502425
 #Vertical v-component shear
-'1/s' = {
+'s-1' = {
 	 table2Version = 3 ;
 	 indicatorOfParameter = 46 ;
 	}
@@ -7071,7 +7071,7 @@
 
 #paramId: 502448
 #Sea Ice Cover ( 0= free, 1=cover)
-'Numeric' = {
+'Proportion' = {
 	 table2Version = 3 ;
 	 indicatorOfParameter = 91 ;
 	}
@@ -7513,28 +7513,28 @@
 
 #paramId: 502514
 #Sigma coordinate vertical velocity
-'1/s' = {
+'s-1' = {
 	 table2Version = 2 ;
 	 indicatorOfParameter = 38 ;
 	}
 
 #paramId: 502515
 #Absolute divergence
-'1/s' = {
+'s-1' = {
 	 table2Version = 2 ;
 	 indicatorOfParameter = 42 ;
 	}
 
 #paramId: 502516
 #Vertical u-component shear
-'1/s' = {
+'s-1' = {
 	 table2Version = 2 ;
 	 indicatorOfParameter = 45 ;
 	}
 
 #paramId: 502517
 #Vertical v-component shear
-'1/s' = {
+'s-1' = {
 	 table2Version = 2 ;
 	 indicatorOfParameter = 46 ;
 	}
@@ -8274,7 +8274,7 @@
 
 #paramId: 502627
 #Sigma coordinate vertical velocity
-'1/s' = {
+'s-1' = {
 	 table2Version = 1 ;
 	 indicatorOfParameter = 38 ;
 	}
@@ -8288,21 +8288,21 @@
 
 #paramId: 502629
 #Absolute divergence
-'1/s' = {
+'s-1' = {
 	 table2Version = 1 ;
 	 indicatorOfParameter = 42 ;
 	}
 
 #paramId: 502630
 #Vertical u-component shear
-'1/s' = {
+'s-1' = {
 	 table2Version = 1 ;
 	 indicatorOfParameter = 45 ;
 	}
 
 #paramId: 502631
 #Vertical v-component shear
-'1/s' = {
+'s-1' = {
 	 table2Version = 1 ;
 	 indicatorOfParameter = 46 ;
 	}
@@ -8463,7 +8463,7 @@
 
 #paramId: 502654
 #Sea Ice Cover ( 0= free, 1=cover)
-'Numeric' = {
+'Proportion' = {
 	 table2Version = 1 ;
 	 indicatorOfParameter = 91 ;
 	}
@@ -8954,3 +8954,24 @@
 	 timeRangeIndicator = 4 ;
 	}
 
+#paramId: 503140
+#orography
+'' = {
+	 table2Version = 3 ;
+	 indicatorOfParameter = 148 ;
+	}
+
+#paramId: 503141
+#wind_gust_10m
+'' = {
+	 table2Version = 3 ;
+	 indicatorOfParameter = 149 ;
+	}
+
+#paramId: 503142
+#Lightning Potential Index
+'J kg-1' = {
+	 table2Version = 201 ;
+	 indicatorOfParameter = 196 ;
+	}
+
diff --git a/definitions/grib1/localConcepts/efkl/cfVarName.def b/definitions/grib1/localConcepts/efkl/cfVarName.def
new file mode 100644
index 0000000..727ee66
--- /dev/null
+++ b/definitions/grib1/localConcepts/efkl/cfVarName.def
@@ -0,0 +1,1121 @@
+# file generated by get_86_paramdef_for_grib_api.pl at 2014-11-14 10:59:45 EET host gogol.fmi.fi
+'P-HPA' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 1 ;
+}
+'Z-M2S2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 2 ;
+}
+'HL-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 3 ;
+}
+'T-C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 4 ;
+}
+'TP-K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 8 ;
+}
+'TPW-K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 9 ;
+}
+'TD-C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 10 ;
+}
+'Q-KGKG' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 12 ;
+}
+'RH-PRCNT' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 13 ;
+}
+'CLDSYM-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 15 ;
+}
+'FRNTSYM-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 18 ;
+}
+'FOGSYM-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 19 ;
+}
+'DD-D' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 20 ;
+}
+'FF-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 21 ;
+}
+'DF-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 22 ;
+}
+'U-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 23 ;
+}
+'V-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 24 ;
+}
+'FFG-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 27 ;
+}
+'HM20C-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 28 ;
+}
+'ABSVO-HZ-5' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 31 ;
+}
+'AQI-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 38 ;
+}
+'FF10-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 39 ;
+}
+'VV-PAS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 40 ;
+}
+'VV-MMS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 43 ;
+}
+'VV-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 44 ;
+}
+'PRCWAT-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 47 ;
+}
+'RR-MM10' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 50 ;
+}
+'SD-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 51 ;
+}
+'HSADE1-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 52 ;
+}
+'HSADE2-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 53 ;
+}
+'RR-6-MM' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 54 ;
+}
+'RR-12-MM' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 55 ;
+}
+'RR-1-MM' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 56 ;
+}
+'RR-2-MM' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 57 ;
+}
+'RR-3-MM' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 58 ;
+}
+'PRECFORM-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 59 ;
+}
+'SMOGI-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 60 ;
+}
+'RRL-MM10' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 62 ;
+}
+'RRC-MM10' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 63 ;
+}
+'SNACC-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 68 ;
+}
+'RNETLW-WM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 69 ;
+}
+'H0C-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 70 ;
+}
+'RRR-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 71 ;
+}
+'RRRC-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 72 ;
+}
+'RRRL-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 73 ;
+}
+'LNSP-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 74 ;
+}
+'TG-K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 75 ;
+}
+'LSSN-M100' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 77 ;
+}
+'CLDWAT-KGKG' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 78 ;
+}
+'N-PRCNT' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 79 ;
+}
+'KINDEX-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 80 ;
+}
+'ALBEDO' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 89 ;
+}
+'HESSAA-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 91 ;
+}
+'RADLW-WM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 95 ;
+}
+'RADGLO-WM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 96 ;
+}
+'LC-0TO1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 99 ;
+}
+'IC-0TO1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 100 ;
+}
+'RHO-KGM3' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 101 ;
+}
+'SSICING-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 102 ;
+}
+'ICING-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 103 ;
+}
+'CLDICE-KGKG' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 104 ;
+}
+'CLDCND-KGKG' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 105 ;
+}
+'SNL-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 106 ;
+}
+'SNC-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 107 ;
+}
+'SNRL-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 108 ;
+}
+'SNRC-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 109 ;
+}
+'SNR-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 110 ;
+}
+'T-C1-C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 111 ;
+}
+'T-C2-C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 112 ;
+}
+'T-C3-C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 113 ;
+}
+'T-C4-C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 114 ;
+}
+'T-C5-C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 115 ;
+}
+'T-C6-C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 116 ;
+}
+'Z-C1-M2S2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 117 ;
+}
+'Z-C2-M2S2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 118 ;
+}
+'Z-C3-M2S2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 119 ;
+}
+'Z-C4-M2S2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 120 ;
+}
+'Z-C5-M2S2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 121 ;
+}
+'Z-C6-M2S2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 122 ;
+}
+'RTOPLW-WM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 126 ;
+}
+'RNETSW-WM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 128 ;
+}
+'TPE-K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 129 ;
+}
+'ABSH-KGM3' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 130 ;
+}
+'PROB-T-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 131 ;
+}
+'PROB-T-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 132 ;
+}
+'PROB-T-3' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 133 ;
+}
+'PROB-T-4' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 134 ;
+}
+'PROB-RR-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 141 ;
+}
+'PROB-RR-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 142 ;
+}
+'PROB-RR-3' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 143 ;
+}
+'PROB-RR-4' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 144 ;
+}
+'WSH-KT' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 145 ;
+}
+'WSH-1-KT' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 146 ;
+}
+'HLCY-M2S2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 147 ;
+}
+'HLCY-1-M2S2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 148 ;
+}
+'FF1500-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 149 ;
+}
+'TPE3-C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 150 ;
+}
+'PROB-W-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 151 ;
+}
+'PROB-W-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 152 ;
+}
+'PROB-WG-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 153 ;
+}
+'PROB-WG-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 154 ;
+}
+'PROB-WG-3' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 155 ;
+}
+'EFI-WS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 156 ;
+}
+'EFI-T' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 157 ;
+}
+'EFI-WG' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 158 ;
+}
+'EFI-RR' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 159 ;
+}
+'PROBSN-0TO1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 161 ;
+}
+'MOL-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 163 ;
+}
+'SRMOM-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 164 ;
+}
+'RRI-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 165 ;
+}
+'RSI-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 166 ;
+}
+'MIXHGT-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 167 ;
+}
+'SI-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 168 ;
+}
+'LI-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 169 ;
+}
+'CTI-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 170 ;
+}
+'VTI-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 171 ;
+}
+'TTI-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 172 ;
+}
+'F0-T-K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 173 ;
+}
+'F10-T-K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 174 ;
+}
+'F25-T-K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 175 ;
+}
+'F50-T-K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 176 ;
+}
+'F75-T-K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 177 ;
+}
+'F90-T-K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 178 ;
+}
+'F100-T-K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 179 ;
+}
+'LCL-MU-HPA' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 180 ;
+}
+'LFC-MU-HPA' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 181 ;
+}
+'EL-MU-HPA' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 182 ;
+}
+'SR-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 183 ;
+}
+'LCL-MU-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 184 ;
+}
+'LFC-MU-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 185 ;
+}
+'SM-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 186 ;
+}
+'F0-RR-6' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 187 ;
+}
+'F10-RR-6' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 188 ;
+}
+'F25-RR-6' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 189 ;
+}
+'F50-RR-6' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 190 ;
+}
+'F75-RR-6' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 191 ;
+}
+'F90-RR-6' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 192 ;
+}
+'F100-RR-6' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 193 ;
+}
+'EL-MU-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 194 ;
+}
+'CAPE-MU-JKG' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 195 ;
+}
+'UVIMAX-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 196 ;
+}
+'UVI-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 197 ;
+}
+'O3ANOM-PRCNT' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 198 ;
+}
+'CIN-MU-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 199 ;
+}
+'CANW-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 200 ;
+}
+'FLLAT-JM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 201 ;
+}
+'FLSEN-JM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 202 ;
+}
+'FLMOM-PA' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 203 ;
+}
+'CAPE-0-3-MU' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 204 ;
+}
+'CAPE1040-MU' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 205 ;
+}
+'ILSAA1-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 206 ;
+}
+'SOILTY-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 207 ;
+}
+'TKEN-JKG' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 208 ;
+}
+'UFLMOM-NM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 209 ;
+}
+'VFLMOM-NM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 210 ;
+}
+'VEGET-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 211 ;
+}
+'GRR-MMH' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 212 ;
+}
+'RRRS-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 213 ;
+}
+'F0-N-0TO1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 214 ;
+}
+'F10-N-0TO1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 215 ;
+}
+'F25-N-0TO1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 216 ;
+}
+'F50-N-0TO1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 217 ;
+}
+'F75-N-0TO1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 218 ;
+}
+'F90-N-0TO1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 219 ;
+}
+'F100-N-0TO1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 220 ;
+}
+'F0-FFG-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 221 ;
+}
+'F10-FFG-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 222 ;
+}
+'F25-FFG-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 223 ;
+}
+'F50-FFG-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 224 ;
+}
+'F75-FFG-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 225 ;
+}
+'F90-FFG-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 226 ;
+}
+'F100-FFG-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 227 ;
+}
+'F0-FF-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 228 ;
+}
+'F10-FF-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 229 ;
+}
+'F25-FF-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 230 ;
+}
+'F50-FF-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 231 ;
+}
+'F75-FF-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 232 ;
+}
+'F90-FF-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 233 ;
+}
+'F100-FF-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 234 ;
+}
+'LCL-HPA' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 235 ;
+}
+'LFC-HPA' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 236 ;
+}
+'EL-HPA' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 237 ;
+}
+'LCL-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 238 ;
+}
+'LFC-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 239 ;
+}
+'EL-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 240 ;
+}
+'CAPE-JKG' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 241 ;
+}
+'CAPE-500' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 242 ;
+}
+'CAPE1040' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 243 ;
+}
+'CIN-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 244 ;
+}
+'LCL-500-HPA' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 245 ;
+}
+'LFC-500-HPA' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 246 ;
+}
+'EL-500-HPA' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 247 ;
+}
+'LCL-500-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 248 ;
+}
+'LFC-500-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 249 ;
+}
+'EL-500-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 250 ;
+}
+'CAPE-0-3' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 251 ;
+}
+'CAPE-0-3-500' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 252 ;
+}
+'CAPE1040-500' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 253 ;
+}
+'CIN-500-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 254 ;
+}
+'PRECFORM2-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 255 ;
+}
+'TSEA-C' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 1 ;
+}
+'ICNCT-PRCNT' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 2 ;
+}
+'ITHK-CM' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 3 ;
+}
+'IMINTHK-CM' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 4 ;
+}
+'IMAXTHK-CM' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 5 ;
+}
+'IRIDGE-CM' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 6 ;
+}
+'IVELU-MS' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 7 ;
+}
+'IVELV-MS' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 8 ;
+}
+'IMEANTHK-CM' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 9 ;
+}
+'IRIDGC-PRCNT' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 10 ;
+}
+'IRAFTTHK-CM' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 11 ;
+}
+'IRCNCT-PRCNT' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 12 ;
+}
+'IDD-D' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 13 ;
+}
+'IFF-MS' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 14 ;
+}
+'P-PA' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 1 ;
+}
+'P-PA' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 2 ;
+}
+'Z-M2S2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 6 ;
+}
+'HL-M' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 8 ;
+}
+'T-K' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 11 ;
+}
+'TP-K' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 13 ;
+}
+'TMAX-C' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 15 ;
+}
+'TMIN-C' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 16 ;
+}
+'TD-K' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 17 ;
+}
+'VV-M' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 20 ;
+}
+'U-MS' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 33 ;
+}
+'V-MS' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 34 ;
+}
+'VV-PAS' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 39 ;
+}
+'VV-MS' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 40 ;
+}
+'ABSVO-HZ' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 41 ;
+}
+'Q-KGKG' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 51 ;
+}
+'RH-PRCNT' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 52 ;
+}
+'PRCWAT-KGM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 54 ;
+}
+'EVAP-KGM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 57 ;
+}
+'CLDICE-KGKG' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 58 ;
+}
+'RR-KGM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 61 ;
+}
+'SD-M' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 66 ;
+}
+'MIXHGT-M' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 67 ;
+}
+'N-0TO1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 71 ;
+}
+'NL-PRCNT' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 73 ;
+}
+'NM-PRCNT' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 74 ;
+}
+'NH-PRCNT' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 75 ;
+}
+'CLDWAT-KGKG' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 76 ;
+}
+'LC-0TO1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 81 ;
+}
+'SR-M' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 83 ;
+}
+'ALBEDO' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 84 ;
+}
+'SM-KGM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 86 ;
+}
+'IC-0TO1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 91 ;
+}
+'DW-D' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 101 ;
+}
+'HWS-M' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 102 ;
+}
+'PWS-S' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 103 ;
+}
+'RNETSWA-JM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 111 ;
+}
+'RNETLWA-JM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 112 ;
+}
+'RTOPSW-WM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 113 ;
+}
+'RTOPSWA-JM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 113 ;
+}
+'RTOPLW-WM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 114 ;
+}
+'RTOPLWA-JM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 114 ;
+}
+'RADLWA-JM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 115 ;
+}
+'RADGLOA-JM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 117 ;
+}
+'FLLAT-JM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 121 ;
+}
+'FLSEN-JM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 122 ;
+}
+'UFLMOM-NM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 124 ;
+}
+'VFLMOM-NM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 125 ;
+}
+'ICINGWARN-N' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 135 ;
+}
+'PRECTYPE-N' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 144 ;
+}
+'CAPE-JKG' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 160 ;
+}
+'WGU-MS' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 162 ;
+}
+'WGV-MS' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 163 ;
+}
+'RRI-KGM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 181 ;
+}
+'SNACC-KGM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 184 ;
+}
+'SNRI-KGM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 184 ;
+}
+'RRS-KGM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 185 ;
+}
+'CLDBASE-M' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 186 ;
+}
+'CLDTOP-M' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 187 ;
+}
+'TKEN-JKG' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 200 ;
+}
+'GR-KGM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 201 ;
+}
+'GRI-KGM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 201 ;
+}
+'RRH-KGM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 204 ;
+}
+'FL-MPLTY-N' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 209 ;
+}
+'REFLTY-DBZ' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 210 ;
+}
+'FFG-MS' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 228 ;
+}
diff --git a/definitions/grib1/localConcepts/efkl/name.def b/definitions/grib1/localConcepts/efkl/name.def
new file mode 100644
index 0000000..4ccde83
--- /dev/null
+++ b/definitions/grib1/localConcepts/efkl/name.def
@@ -0,0 +1,1121 @@
+# file generated by get_86_paramdef_for_grib_api.pl at 2014-11-14 10:59:45 EET host gogol.fmi.fi
+'Pressure in hPa' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 1 ;
+}
+'Geopotential' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 2 ;
+}
+'Height of level in meters' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 3 ;
+}
+'Temperature in Celsius' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 4 ;
+}
+'Potential temperature' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 8 ;
+}
+'Pseudoadiabatic potential temperature in K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 9 ;
+}
+'Dew point Temperature in C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 10 ;
+}
+'Specific Humidity in kg/kg' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 12 ;
+}
+'Relative Humidity in percents' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 13 ;
+}
+'Cloud Symbol' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 15 ;
+}
+'Front Symbol' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 18 ;
+}
+'Fog symbol' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 19 ;
+}
+'Wind Direction in Degrees' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 20 ;
+}
+'Wind speed in m/s' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 21 ;
+}
+'Wind Vector in m/s' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 22 ;
+}
+'U wind in m/s' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 23 ;
+}
+'V wind in m/s' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 24 ;
+}
+'Instantaneous Wind Speed in m/s' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 27 ;
+}
+'Height of -20 C level in meters' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 28 ;
+}
+'Absolute Vorticity in HZ/10000' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 31 ;
+}
+'FMI Air Quality Index' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 38 ;
+}
+'WindSpeed at 10 m in m/s' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 39 ;
+}
+'Vertical Velocity in pa/s' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 40 ;
+}
+'Vertical Velocity in mm/s' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 43 ;
+}
+'Vertical Velocity in m/s' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 44 ;
+}
+'Precipitable water in mm' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 47 ;
+}
+'Total precipitation' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 50 ;
+}
+'Snow Depth in Meters' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 51 ;
+}
+'Precalculated weather symbol' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 52 ;
+}
+'Precalculated weather symbol' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 53 ;
+}
+'Rain over the last 6 hours in mm' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 54 ;
+}
+'Rain over the last 12 hours in mm' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 55 ;
+}
+'Rain over the last 1 hour in mm' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 56 ;
+}
+'Rain over the last 2 hours in mm' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 57 ;
+}
+'Rain over the last 3 hours in mm' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 58 ;
+}
+'Precipitation form' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 59 ;
+}
+'Calculated smog appearance' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 60 ;
+}
+'Large Scale precipitation in 10ths of mm' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 62 ;
+}
+'Convective precipitation in 10ths of mm' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 63 ;
+}
+'Snowfall accumulation  in mm' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 68 ;
+}
+'Net long wave radiation' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 69 ;
+}
+'Height of 0 C level in meters' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 70 ;
+}
+'Total Precipitation rate in kg m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 71 ;
+}
+'Convective Precipitation rate in kg m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 72 ;
+}
+'Large Scale Precipitation rate in kg m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 73 ;
+}
+'Log Surface Pressure' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 74 ;
+}
+'Ground Temperature in Kelvins' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 75 ;
+}
+'Loose snow depth in cm' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 77 ;
+}
+'Cloud water' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 78 ;
+}
+'Total Cloud Cover in %' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 79 ;
+}
+'Stability index (-50 -> 50)' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 80 ;
+}
+'ALBEDO 0 to 1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 89 ;
+}
+'Simple weather symbol fo HS and others' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 91 ;
+}
+'Long wave radiation' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 95 ;
+}
+'Global radiation' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 96 ;
+}
+'Land Cover, 1=land, 0=sea' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 99 ;
+}
+'Ice Cover, 1=ice, 0=no ice' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 100 ;
+}
+'Density of dry air in Kg m-3' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 101 ;
+}
+'Sea spray icing for major oceans' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 102 ;
+}
+'Icing, code 20041 in BUFR' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 103 ;
+}
+'Cloud ice' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 104 ;
+}
+'Cloud condensate' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 105 ;
+}
+'Large scale snow accumulation in kg/m2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 106 ;
+}
+'Convective snow accumulation in kg/m2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 107 ;
+}
+'Large scale snowfall rate in mm/h' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 108 ;
+}
+'Convective snowfall rate in mm/h' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 109 ;
+}
+'Snowfall rate in mm/s or mm/h' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 110 ;
+}
+'Temperature in cluster 1 of EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 111 ;
+}
+'Temperature in cluster 2 of EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 112 ;
+}
+'Temperature in cluster 3 of EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 113 ;
+}
+'Temperature in cluster 4 of EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 114 ;
+}
+'Temperature in cluster 5 of EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 115 ;
+}
+'Temperature in cluster 6 of EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 116 ;
+}
+'Geopotential in cluster 1 of EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 117 ;
+}
+'Geopotential in cluster 2 of EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 118 ;
+}
+'Geopotential in cluster 3 of EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 119 ;
+}
+'Geopotential in cluster 4 of EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 120 ;
+}
+'Geopotential in cluster 5 of EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 121 ;
+}
+'Geopotential in cluster 6 of EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 122 ;
+}
+'Net long wave radiation, top of athmosphere' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 126 ;
+}
+'Net short wave radiation' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 128 ;
+}
+'Equivalent potential temperature in K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 129 ;
+}
+'Absolute humidity, kg/m^3' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 130 ;
+}
+'Probability of big negative temperature anomaly (-8 K) in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 131 ;
+}
+'Probability of moderate negative temperature anomaly (-4 K) in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 132 ;
+}
+'Probability of moderate positive temperature anomaly (+4 K) in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 133 ;
+}
+'Probability of big positive temperature anomaly (+8 K) in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 134 ;
+}
+'Probability of reaching precipitation of 1 mm in 24 hours in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 141 ;
+}
+'Probability of reaching precipitation of 5 mm in 24 hours in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 142 ;
+}
+'Probability of reaching precipitation of 10 mm in 24 hours in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 143 ;
+}
+'Probability of reaching precipitation of 20 mm in 24 hours in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 144 ;
+}
+'Wind shear in knots' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 145 ;
+}
+'Wind shear at 1km in knots' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 146 ;
+}
+'Storm relative helicity' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 147 ;
+}
+'Storm relative helicity, 0 .. 1 km' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 148 ;
+}
+'Wind speed at 1500 meters in m/s' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 149 ;
+}
+'Equivalent potential temperature from range 0 ..3km in C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 150 ;
+}
+'Probability of reaching wind speed of 10 m/s in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 151 ;
+}
+'Probability of reaching wind speed of 15 m/s in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 152 ;
+}
+'Probability of reaching wind gust speed of 15 m/s in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 153 ;
+}
+'Probability of reaching wind gust speed of 20 m/s in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 154 ;
+}
+'Probability of reaching wind gust speed of 25 m/s in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 155 ;
+}
+'Extreme forecast index for wind speed' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 156 ;
+}
+'Extreme forecast index for temperature' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 157 ;
+}
+'Extreme forecast index for wind gusts' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 158 ;
+}
+'Extreme forecast index for precipitation' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 159 ;
+}
+'Probability of snow' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 161 ;
+}
+'Inverse of Monin-Obukhov length, i.e. 1/L in m-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 163 ;
+}
+'Surface Roughness (momentum) in meters' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 164 ;
+}
+'Instant rain in kg/m2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 165 ;
+}
+'Instant solid precipitation (snow+graupel) in kg/m2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 166 ;
+}
+'Mixed layer height in m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 167 ;
+}
+'Showalter index' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 168 ;
+}
+'Lifted index' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 169 ;
+}
+'Cross totals index' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 170 ;
+}
+'Vertical totals index' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 171 ;
+}
+'Total totals index' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 172 ;
+}
+'0th fractal (ie. minimum) temperature in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 173 ;
+}
+'10th fractal temperature in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 174 ;
+}
+'25th fractal temperature in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 175 ;
+}
+'50th fractal temperature in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 176 ;
+}
+'75th fractal temperature in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 177 ;
+}
+'90th fractal temperature in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 178 ;
+}
+'100th fractal (ie. maximum) temperature in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 179 ;
+}
+'Height of LCL in hPa, source data is found from most unstable level' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 180 ;
+}
+'Height of LFC in hPa, source data is found from most unstable level' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 181 ;
+}
+'Height of EL in hPa, source data is found from most unstable level' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 182 ;
+}
+'Surface Roughness in Meters' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 183 ;
+}
+'Height of LCL in meters, source data is found from most unstable level' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 184 ;
+}
+'Height of LFC in meters, source data is found from most unstable level' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 185 ;
+}
+'Soil Moisture Content in Kg per square meter' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 186 ;
+}
+'0th fractal precipitation in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 187 ;
+}
+'10th fractal precipitation in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 188 ;
+}
+'25th fractal precipitation in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 189 ;
+}
+'50th fractal precipitation in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 190 ;
+}
+'75th fractal precipitation in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 191 ;
+}
+'90th fractal precipitation in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 192 ;
+}
+'100th fractal precipitation in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 193 ;
+}
+'Height of EL in meters, source data is found from most unstable level' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 194 ;
+}
+'Convective available potential energy, source data is most unstable' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 195 ;
+}
+'UV index maximum' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 196 ;
+}
+'UV index' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 197 ;
+}
+'Ozone anomaly' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 198 ;
+}
+'Convective inhibition, source data is most unstable' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 199 ;
+}
+'Canopy water' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 200 ;
+}
+'Latent heat flux' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 201 ;
+}
+'Sensible heat flux' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 202 ;
+}
+'Scalar momentum flux in Pa' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 203 ;
+}
+'CAPE, source data is most unstable, value of CAPE between 0 .. 3km' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 204 ;
+}
+'CAPE, source data is most unstable, value of parameter when -40C < T < -10C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 205 ;
+}
+'FMIWEATHERSYMBOL1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 206 ;
+}
+'Soil type' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 207 ;
+}
+'Kinetic energy of turbulence in J kg-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 208 ;
+}
+'U-component of momentum flux in N m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 209 ;
+}
+'V-component of momentum flux in N m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 210 ;
+}
+'Vegetation type' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 211 ;
+}
+'Graupel rate in mm/h' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 212 ;
+}
+'Solid precipitation rate (f.ex. snow+graupel)' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 213 ;
+}
+'0th fractal cloudiness in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 214 ;
+}
+'10th fractal cloudiness in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 215 ;
+}
+'25th fractal cloudiness in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 216 ;
+}
+'50th fractal cloudiness in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 217 ;
+}
+'75th fractal cloudiness in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 218 ;
+}
+'90th fractal cloudiness in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 219 ;
+}
+'100th fractal cloudiness in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 220 ;
+}
+'0th fractal wind gust speed in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 221 ;
+}
+'10th fractal wind gust speed in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 222 ;
+}
+'25th fractal wind gust speed in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 223 ;
+}
+'50th fractal wind gust speed in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 224 ;
+}
+'75th fractal wind gust speed in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 225 ;
+}
+'90th fractal wind gust speed in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 226 ;
+}
+'100th fractal wind gust speed in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 227 ;
+}
+'0th fractal wind speed in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 228 ;
+}
+'10th fractal wind speed in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 229 ;
+}
+'25th fractal wind speed in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 230 ;
+}
+'50th fractal wind speed in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 231 ;
+}
+'75th fractal wind speed in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 232 ;
+}
+'90th fractal wind speed in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 233 ;
+}
+'100th fractal wind speed in EPS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 234 ;
+}
+'Height of LCL in hPa' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 235 ;
+}
+'Height of LFC in hPa' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 236 ;
+}
+'Height of EL in hPa' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 237 ;
+}
+'Height of LCL in meters' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 238 ;
+}
+'Height of LFC in meters' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 239 ;
+}
+'Height of EL in meters' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 240 ;
+}
+'Convective available potential energy' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 241 ;
+}
+'Convective available potential energy, source data is LCL-500 and EL-500' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 242 ;
+}
+'Convective available potential energy, value of parameter when -40C < T < -10C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 243 ;
+}
+'Convective inhibition (cin)' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 244 ;
+}
+'Height of LCL in hPa, source data is averaged between 0 .. 500m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 245 ;
+}
+'Height of LFC in hPa, source data is averaged between 0 .. 500m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 246 ;
+}
+'Height of EL in hPa, source data is averaged between 0 .. 500m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 247 ;
+}
+'Height of LCL in meters, source data is averaged between 0 .. 500m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 248 ;
+}
+'Height of LFC in meters, source data is averaged between 0 .. 500m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 249 ;
+}
+'Height of EL in meters, source data is averaged between 0 .. 500m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 250 ;
+}
+'Convective available potential energy, value of CAPE between 0 .. 3km' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 251 ;
+}
+'CAPE, source data is LFC-500 and EL-500, value of CAPE between 0 .. 3km' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 252 ;
+}
+'CAPE, source data is LFC-500 and EL-500, value of CAPE when -40C < T < -10C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 253 ;
+}
+'Convective inhibition, source data is LFC-500 and EL-500' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 254 ;
+}
+'Precipitation form, duplicate parameter for HIMAN purposes' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 255 ;
+}
+'Sea Temperature in Celsius' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 1 ;
+}
+'Ice concentration' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 2 ;
+}
+'Ice thickness' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 3 ;
+}
+'Ice minimum thickness' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 4 ;
+}
+'Ice maximum thickness' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 5 ;
+}
+'Ice degree of ridging' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 6 ;
+}
+'Sea ice velocity (U) in m/s' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 7 ;
+}
+'Sea ice velocity (V) in m/s' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 8 ;
+}
+'Ice mean thickness' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 9 ;
+}
+'Ice concentration of ridging' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 10 ;
+}
+'Rafted sea ice mean thickness' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 11 ;
+}
+'Rafted sea ice concentration' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 12 ;
+}
+'Ice Direction in Degrees' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 13 ;
+}
+'Ice speed in m/s' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 14 ;
+}
+'Pressure in Pascals' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 1 ;
+}
+'Pressure in Pascals' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 2 ;
+}
+'Geopotential' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 6 ;
+}
+'Height of level in meters' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 8 ;
+}
+'Temperature in Kelvins' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 11 ;
+}
+'Potential temperature' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 13 ;
+}
+'Maximum Temperature in Celsius' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 15 ;
+}
+'Minimum Temperature in Celsius' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 16 ;
+}
+'Dew point Temperature in K' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 17 ;
+}
+'Visibility in Meters' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 20 ;
+}
+'U wind in m/s' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 33 ;
+}
+'V wind in m/s' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 34 ;
+}
+'Vertical Velocity in pa/s' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 39 ;
+}
+'Vertical Velocity in m/s' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 40 ;
+}
+'Absolute Vorticity in HZ' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 41 ;
+}
+'Specific Humidity in kg/kg' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 51 ;
+}
+'Relative Humidity in percents' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 52 ;
+}
+'Precipitable water in mm' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 54 ;
+}
+'Evaporation in mm' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 57 ;
+}
+'Cloud ice' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 58 ;
+}
+'Total precipitation in kg/m2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 61 ;
+}
+'Snow Depth in Meters' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 66 ;
+}
+'Mixed layer height in m' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 67 ;
+}
+'Cloudiness 0...1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 71 ;
+}
+'Low Cloud Amount' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 73 ;
+}
+'Medium Cloud Amount' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 74 ;
+}
+'High Cloud Amount' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 75 ;
+}
+'Cloud water' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 76 ;
+}
+'Land Cover, 1=land, 0=sea' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 81 ;
+}
+'Surface Roughness in Meters' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 83 ;
+}
+'ALBEDO 0 to 1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 84 ;
+}
+'Soil Moisture Content in Kg per square meter' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 86 ;
+}
+'Ice Cover, 1=ice, 0=no ice' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 91 ;
+}
+'Mean wave direction at spectral peak in degrees' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 101 ;
+}
+'Significant wave height in m' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 102 ;
+}
+'Peak wave period in s' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 103 ;
+}
+'Net short wave radiation accumulation' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 111 ;
+}
+'Net long wave radiation accumulation' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 112 ;
+}
+'Net short wave radiation, top of athmosphere' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 113 ;
+}
+'Net short wave radiation accumulation, top of atmosphere' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 113 ;
+}
+'Net long wave radiation, top of athmosphere' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 114 ;
+}
+'Net long wave radiation accumulation, top of atmosphere' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 114 ;
+}
+'Long wave radiation accumulation' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 115 ;
+}
+'Global radiation accumulation' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 117 ;
+}
+'Latent heat flux' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 121 ;
+}
+'Sensible heat flux' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 122 ;
+}
+'U-component of momentum flux in N m-2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 124 ;
+}
+'V-component of momentum flux in N m-2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 125 ;
+}
+'Icing warning index, values between 0 ... 4' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 135 ;
+}
+'Precipitation type' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 144 ;
+}
+'Convective available potential energy' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 160 ;
+}
+'U-component of wind gust' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 162 ;
+}
+'V-component of wind gust' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 163 ;
+}
+'Instant rain in kg/m2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 181 ;
+}
+'Snowfall accumulation  in mm' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 184 ;
+}
+'Instant snowfall rate in mm/s or mm/h' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 184 ;
+}
+'Solid precipitation (f.ex. snow+graupel)' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 185 ;
+}
+'Cloud base height' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 186 ;
+}
+'Height of cloud top' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 187 ;
+}
+'Kinetic energy of turbulence in J kg-1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 200 ;
+}
+'Graupel precipitation in kg/m2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 201 ;
+}
+'Instant graupel in kg/m2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 201 ;
+}
+'Total hail precipitation in kg/m2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 204 ;
+}
+'Multiplicity Of The Flash, Number' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 209 ;
+}
+'Clutter corrected ceflectivity' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 210 ;
+}
+'Instantaneous Wind Speed in m/s' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 228 ;
+}
diff --git a/definitions/grib1/localConcepts/efkl/paramId.def b/definitions/grib1/localConcepts/efkl/paramId.def
new file mode 100644
index 0000000..53e6b4e
--- /dev/null
+++ b/definitions/grib1/localConcepts/efkl/paramId.def
@@ -0,0 +1,801 @@
+# file generated by get_86_paramdef_for_grib_api.pl at 2014-11-14 10:59:45 EET host gogol.fmi.fi
+'1' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 1 ;
+}
+'2' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 2 ;
+}
+'3' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 3 ;
+}
+'4' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 4 ;
+}
+'8' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 8 ;
+}
+'9' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 9 ;
+}
+'10' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 10 ;
+}
+'12' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 12 ;
+}
+'13' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 13 ;
+}
+'15' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 15 ;
+}
+'18' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 18 ;
+}
+'19' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 19 ;
+}
+'20' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 20 ;
+}
+'21' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 21 ;
+}
+'22' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 22 ;
+}
+'23' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 23 ;
+}
+'24' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 24 ;
+}
+'27' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 27 ;
+}
+'28' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 28 ;
+}
+'31' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 31 ;
+}
+'38' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 38 ;
+}
+'39' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 39 ;
+}
+'40' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 40 ;
+}
+'43' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 43 ;
+}
+'44' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 44 ;
+}
+'47' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 47 ;
+}
+'50' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 50 ;
+}
+'51' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 51 ;
+}
+'52' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 52 ;
+}
+'53' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 53 ;
+}
+'54' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 54 ;
+}
+'55' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 55 ;
+}
+'56' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 56 ;
+}
+'57' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 57 ;
+}
+'58' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 58 ;
+}
+'59' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 59 ;
+}
+'60' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 60 ;
+}
+'62' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 62 ;
+}
+'63' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 63 ;
+}
+'68' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 68 ;
+}
+'69' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 69 ;
+}
+'70' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 70 ;
+}
+'71' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 71 ;
+}
+'72' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 72 ;
+}
+'73' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 73 ;
+}
+'74' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 74 ;
+}
+'75' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 75 ;
+}
+'77' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 77 ;
+}
+'78' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 78 ;
+}
+'79' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 79 ;
+}
+'80' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 80 ;
+}
+'89' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 89 ;
+}
+'91' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 91 ;
+}
+'95' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 95 ;
+}
+'96' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 96 ;
+}
+'99' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 99 ;
+}
+'100' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 100 ;
+}
+'101' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 101 ;
+}
+'102' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 102 ;
+}
+'103' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 103 ;
+}
+'104' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 104 ;
+}
+'105' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 105 ;
+}
+'106' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 106 ;
+}
+'107' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 107 ;
+}
+'108' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 108 ;
+}
+'109' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 109 ;
+}
+'110' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 110 ;
+}
+'111' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 111 ;
+}
+'112' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 112 ;
+}
+'113' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 113 ;
+}
+'114' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 114 ;
+}
+'115' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 115 ;
+}
+'116' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 116 ;
+}
+'117' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 117 ;
+}
+'118' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 118 ;
+}
+'119' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 119 ;
+}
+'120' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 120 ;
+}
+'121' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 121 ;
+}
+'122' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 122 ;
+}
+'126' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 126 ;
+}
+'128' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 128 ;
+}
+'129' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 129 ;
+}
+'130' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 130 ;
+}
+'131' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 131 ;
+}
+'132' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 132 ;
+}
+'133' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 133 ;
+}
+'134' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 134 ;
+}
+'141' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 141 ;
+}
+'142' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 142 ;
+}
+'143' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 143 ;
+}
+'144' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 144 ;
+}
+'145' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 145 ;
+}
+'146' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 146 ;
+}
+'147' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 147 ;
+}
+'148' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 148 ;
+}
+'149' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 149 ;
+}
+'150' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 150 ;
+}
+'151' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 151 ;
+}
+'152' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 152 ;
+}
+'153' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 153 ;
+}
+'154' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 154 ;
+}
+'155' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 155 ;
+}
+'156' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 156 ;
+}
+'157' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 157 ;
+}
+'158' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 158 ;
+}
+'159' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 159 ;
+}
+'161' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 161 ;
+}
+'163' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 163 ;
+}
+'164' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 164 ;
+}
+'165' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 165 ;
+}
+'166' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 166 ;
+}
+'167' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 167 ;
+}
+'168' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 168 ;
+}
+'169' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 169 ;
+}
+'170' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 170 ;
+}
+'171' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 171 ;
+}
+'172' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 172 ;
+}
+'173' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 173 ;
+}
+'174' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 174 ;
+}
+'175' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 175 ;
+}
+'176' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 176 ;
+}
+'177' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 177 ;
+}
+'178' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 178 ;
+}
+'179' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 179 ;
+}
+'180' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 180 ;
+}
+'181' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 181 ;
+}
+'182' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 182 ;
+}
+'183' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 183 ;
+}
+'184' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 184 ;
+}
+'185' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 185 ;
+}
+'186' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 186 ;
+}
+'187' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 187 ;
+}
+'188' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 188 ;
+}
+'189' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 189 ;
+}
+'190' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 190 ;
+}
+'191' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 191 ;
+}
+'192' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 192 ;
+}
+'193' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 193 ;
+}
+'194' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 194 ;
+}
+'195' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 195 ;
+}
+'196' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 196 ;
+}
+'197' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 197 ;
+}
+'198' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 198 ;
+}
+'199' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 199 ;
+}
+'200' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 200 ;
+}
+'201' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 201 ;
+}
+'202' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 202 ;
+}
+'203' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 203 ;
+}
+'204' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 204 ;
+}
+'205' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 205 ;
+}
+'206' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 206 ;
+}
+'207' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 207 ;
+}
+'208' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 208 ;
+}
+'209' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 209 ;
+}
+'210' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 210 ;
+}
+'211' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 211 ;
+}
+'212' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 212 ;
+}
+'213' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 213 ;
+}
+'214' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 214 ;
+}
+'215' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 215 ;
+}
+'216' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 216 ;
+}
+'217' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 217 ;
+}
+'218' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 218 ;
+}
+'219' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 219 ;
+}
+'220' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 220 ;
+}
+'221' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 221 ;
+}
+'222' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 222 ;
+}
+'223' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 223 ;
+}
+'224' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 224 ;
+}
+'225' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 225 ;
+}
+'226' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 226 ;
+}
+'227' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 227 ;
+}
+'228' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 228 ;
+}
+'229' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 229 ;
+}
+'230' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 230 ;
+}
+'231' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 231 ;
+}
+'232' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 232 ;
+}
+'233' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 233 ;
+}
+'234' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 234 ;
+}
+'235' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 235 ;
+}
+'236' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 236 ;
+}
+'237' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 237 ;
+}
+'238' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 238 ;
+}
+'239' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 239 ;
+}
+'240' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 240 ;
+}
+'241' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 241 ;
+}
+'242' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 242 ;
+}
+'243' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 243 ;
+}
+'244' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 244 ;
+}
+'245' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 245 ;
+}
+'246' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 246 ;
+}
+'247' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 247 ;
+}
+'248' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 248 ;
+}
+'249' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 249 ;
+}
+'250' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 250 ;
+}
+'251' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 251 ;
+}
+'252' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 252 ;
+}
+'253' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 253 ;
+}
+'254' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 254 ;
+}
+'255' = {
+    	table2Version = 203 ;
+	indicatorOfParameter = 255 ;
+}
diff --git a/definitions/grib1/localConcepts/efkl/shortName.def b/definitions/grib1/localConcepts/efkl/shortName.def
new file mode 100644
index 0000000..727ee66
--- /dev/null
+++ b/definitions/grib1/localConcepts/efkl/shortName.def
@@ -0,0 +1,1121 @@
+# file generated by get_86_paramdef_for_grib_api.pl at 2014-11-14 10:59:45 EET host gogol.fmi.fi
+'P-HPA' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 1 ;
+}
+'Z-M2S2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 2 ;
+}
+'HL-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 3 ;
+}
+'T-C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 4 ;
+}
+'TP-K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 8 ;
+}
+'TPW-K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 9 ;
+}
+'TD-C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 10 ;
+}
+'Q-KGKG' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 12 ;
+}
+'RH-PRCNT' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 13 ;
+}
+'CLDSYM-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 15 ;
+}
+'FRNTSYM-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 18 ;
+}
+'FOGSYM-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 19 ;
+}
+'DD-D' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 20 ;
+}
+'FF-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 21 ;
+}
+'DF-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 22 ;
+}
+'U-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 23 ;
+}
+'V-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 24 ;
+}
+'FFG-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 27 ;
+}
+'HM20C-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 28 ;
+}
+'ABSVO-HZ-5' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 31 ;
+}
+'AQI-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 38 ;
+}
+'FF10-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 39 ;
+}
+'VV-PAS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 40 ;
+}
+'VV-MMS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 43 ;
+}
+'VV-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 44 ;
+}
+'PRCWAT-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 47 ;
+}
+'RR-MM10' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 50 ;
+}
+'SD-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 51 ;
+}
+'HSADE1-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 52 ;
+}
+'HSADE2-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 53 ;
+}
+'RR-6-MM' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 54 ;
+}
+'RR-12-MM' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 55 ;
+}
+'RR-1-MM' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 56 ;
+}
+'RR-2-MM' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 57 ;
+}
+'RR-3-MM' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 58 ;
+}
+'PRECFORM-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 59 ;
+}
+'SMOGI-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 60 ;
+}
+'RRL-MM10' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 62 ;
+}
+'RRC-MM10' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 63 ;
+}
+'SNACC-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 68 ;
+}
+'RNETLW-WM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 69 ;
+}
+'H0C-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 70 ;
+}
+'RRR-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 71 ;
+}
+'RRRC-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 72 ;
+}
+'RRRL-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 73 ;
+}
+'LNSP-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 74 ;
+}
+'TG-K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 75 ;
+}
+'LSSN-M100' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 77 ;
+}
+'CLDWAT-KGKG' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 78 ;
+}
+'N-PRCNT' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 79 ;
+}
+'KINDEX-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 80 ;
+}
+'ALBEDO' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 89 ;
+}
+'HESSAA-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 91 ;
+}
+'RADLW-WM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 95 ;
+}
+'RADGLO-WM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 96 ;
+}
+'LC-0TO1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 99 ;
+}
+'IC-0TO1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 100 ;
+}
+'RHO-KGM3' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 101 ;
+}
+'SSICING-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 102 ;
+}
+'ICING-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 103 ;
+}
+'CLDICE-KGKG' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 104 ;
+}
+'CLDCND-KGKG' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 105 ;
+}
+'SNL-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 106 ;
+}
+'SNC-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 107 ;
+}
+'SNRL-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 108 ;
+}
+'SNRC-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 109 ;
+}
+'SNR-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 110 ;
+}
+'T-C1-C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 111 ;
+}
+'T-C2-C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 112 ;
+}
+'T-C3-C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 113 ;
+}
+'T-C4-C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 114 ;
+}
+'T-C5-C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 115 ;
+}
+'T-C6-C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 116 ;
+}
+'Z-C1-M2S2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 117 ;
+}
+'Z-C2-M2S2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 118 ;
+}
+'Z-C3-M2S2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 119 ;
+}
+'Z-C4-M2S2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 120 ;
+}
+'Z-C5-M2S2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 121 ;
+}
+'Z-C6-M2S2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 122 ;
+}
+'RTOPLW-WM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 126 ;
+}
+'RNETSW-WM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 128 ;
+}
+'TPE-K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 129 ;
+}
+'ABSH-KGM3' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 130 ;
+}
+'PROB-T-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 131 ;
+}
+'PROB-T-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 132 ;
+}
+'PROB-T-3' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 133 ;
+}
+'PROB-T-4' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 134 ;
+}
+'PROB-RR-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 141 ;
+}
+'PROB-RR-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 142 ;
+}
+'PROB-RR-3' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 143 ;
+}
+'PROB-RR-4' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 144 ;
+}
+'WSH-KT' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 145 ;
+}
+'WSH-1-KT' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 146 ;
+}
+'HLCY-M2S2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 147 ;
+}
+'HLCY-1-M2S2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 148 ;
+}
+'FF1500-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 149 ;
+}
+'TPE3-C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 150 ;
+}
+'PROB-W-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 151 ;
+}
+'PROB-W-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 152 ;
+}
+'PROB-WG-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 153 ;
+}
+'PROB-WG-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 154 ;
+}
+'PROB-WG-3' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 155 ;
+}
+'EFI-WS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 156 ;
+}
+'EFI-T' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 157 ;
+}
+'EFI-WG' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 158 ;
+}
+'EFI-RR' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 159 ;
+}
+'PROBSN-0TO1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 161 ;
+}
+'MOL-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 163 ;
+}
+'SRMOM-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 164 ;
+}
+'RRI-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 165 ;
+}
+'RSI-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 166 ;
+}
+'MIXHGT-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 167 ;
+}
+'SI-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 168 ;
+}
+'LI-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 169 ;
+}
+'CTI-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 170 ;
+}
+'VTI-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 171 ;
+}
+'TTI-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 172 ;
+}
+'F0-T-K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 173 ;
+}
+'F10-T-K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 174 ;
+}
+'F25-T-K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 175 ;
+}
+'F50-T-K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 176 ;
+}
+'F75-T-K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 177 ;
+}
+'F90-T-K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 178 ;
+}
+'F100-T-K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 179 ;
+}
+'LCL-MU-HPA' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 180 ;
+}
+'LFC-MU-HPA' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 181 ;
+}
+'EL-MU-HPA' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 182 ;
+}
+'SR-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 183 ;
+}
+'LCL-MU-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 184 ;
+}
+'LFC-MU-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 185 ;
+}
+'SM-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 186 ;
+}
+'F0-RR-6' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 187 ;
+}
+'F10-RR-6' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 188 ;
+}
+'F25-RR-6' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 189 ;
+}
+'F50-RR-6' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 190 ;
+}
+'F75-RR-6' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 191 ;
+}
+'F90-RR-6' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 192 ;
+}
+'F100-RR-6' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 193 ;
+}
+'EL-MU-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 194 ;
+}
+'CAPE-MU-JKG' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 195 ;
+}
+'UVIMAX-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 196 ;
+}
+'UVI-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 197 ;
+}
+'O3ANOM-PRCNT' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 198 ;
+}
+'CIN-MU-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 199 ;
+}
+'CANW-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 200 ;
+}
+'FLLAT-JM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 201 ;
+}
+'FLSEN-JM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 202 ;
+}
+'FLMOM-PA' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 203 ;
+}
+'CAPE-0-3-MU' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 204 ;
+}
+'CAPE1040-MU' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 205 ;
+}
+'ILSAA1-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 206 ;
+}
+'SOILTY-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 207 ;
+}
+'TKEN-JKG' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 208 ;
+}
+'UFLMOM-NM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 209 ;
+}
+'VFLMOM-NM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 210 ;
+}
+'VEGET-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 211 ;
+}
+'GRR-MMH' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 212 ;
+}
+'RRRS-KGM2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 213 ;
+}
+'F0-N-0TO1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 214 ;
+}
+'F10-N-0TO1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 215 ;
+}
+'F25-N-0TO1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 216 ;
+}
+'F50-N-0TO1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 217 ;
+}
+'F75-N-0TO1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 218 ;
+}
+'F90-N-0TO1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 219 ;
+}
+'F100-N-0TO1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 220 ;
+}
+'F0-FFG-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 221 ;
+}
+'F10-FFG-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 222 ;
+}
+'F25-FFG-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 223 ;
+}
+'F50-FFG-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 224 ;
+}
+'F75-FFG-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 225 ;
+}
+'F90-FFG-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 226 ;
+}
+'F100-FFG-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 227 ;
+}
+'F0-FF-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 228 ;
+}
+'F10-FF-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 229 ;
+}
+'F25-FF-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 230 ;
+}
+'F50-FF-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 231 ;
+}
+'F75-FF-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 232 ;
+}
+'F90-FF-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 233 ;
+}
+'F100-FF-MS' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 234 ;
+}
+'LCL-HPA' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 235 ;
+}
+'LFC-HPA' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 236 ;
+}
+'EL-HPA' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 237 ;
+}
+'LCL-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 238 ;
+}
+'LFC-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 239 ;
+}
+'EL-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 240 ;
+}
+'CAPE-JKG' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 241 ;
+}
+'CAPE-500' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 242 ;
+}
+'CAPE1040' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 243 ;
+}
+'CIN-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 244 ;
+}
+'LCL-500-HPA' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 245 ;
+}
+'LFC-500-HPA' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 246 ;
+}
+'EL-500-HPA' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 247 ;
+}
+'LCL-500-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 248 ;
+}
+'LFC-500-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 249 ;
+}
+'EL-500-M' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 250 ;
+}
+'CAPE-0-3' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 251 ;
+}
+'CAPE-0-3-500' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 252 ;
+}
+'CAPE1040-500' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 253 ;
+}
+'CIN-500-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 254 ;
+}
+'PRECFORM2-N' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 255 ;
+}
+'TSEA-C' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 1 ;
+}
+'ICNCT-PRCNT' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 2 ;
+}
+'ITHK-CM' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 3 ;
+}
+'IMINTHK-CM' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 4 ;
+}
+'IMAXTHK-CM' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 5 ;
+}
+'IRIDGE-CM' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 6 ;
+}
+'IVELU-MS' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 7 ;
+}
+'IVELV-MS' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 8 ;
+}
+'IMEANTHK-CM' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 9 ;
+}
+'IRIDGC-PRCNT' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 10 ;
+}
+'IRAFTTHK-CM' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 11 ;
+}
+'IRCNCT-PRCNT' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 12 ;
+}
+'IDD-D' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 13 ;
+}
+'IFF-MS' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 14 ;
+}
+'P-PA' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 1 ;
+}
+'P-PA' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 2 ;
+}
+'Z-M2S2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 6 ;
+}
+'HL-M' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 8 ;
+}
+'T-K' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 11 ;
+}
+'TP-K' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 13 ;
+}
+'TMAX-C' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 15 ;
+}
+'TMIN-C' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 16 ;
+}
+'TD-K' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 17 ;
+}
+'VV-M' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 20 ;
+}
+'U-MS' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 33 ;
+}
+'V-MS' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 34 ;
+}
+'VV-PAS' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 39 ;
+}
+'VV-MS' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 40 ;
+}
+'ABSVO-HZ' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 41 ;
+}
+'Q-KGKG' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 51 ;
+}
+'RH-PRCNT' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 52 ;
+}
+'PRCWAT-KGM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 54 ;
+}
+'EVAP-KGM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 57 ;
+}
+'CLDICE-KGKG' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 58 ;
+}
+'RR-KGM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 61 ;
+}
+'SD-M' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 66 ;
+}
+'MIXHGT-M' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 67 ;
+}
+'N-0TO1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 71 ;
+}
+'NL-PRCNT' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 73 ;
+}
+'NM-PRCNT' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 74 ;
+}
+'NH-PRCNT' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 75 ;
+}
+'CLDWAT-KGKG' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 76 ;
+}
+'LC-0TO1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 81 ;
+}
+'SR-M' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 83 ;
+}
+'ALBEDO' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 84 ;
+}
+'SM-KGM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 86 ;
+}
+'IC-0TO1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 91 ;
+}
+'DW-D' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 101 ;
+}
+'HWS-M' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 102 ;
+}
+'PWS-S' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 103 ;
+}
+'RNETSWA-JM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 111 ;
+}
+'RNETLWA-JM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 112 ;
+}
+'RTOPSW-WM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 113 ;
+}
+'RTOPSWA-JM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 113 ;
+}
+'RTOPLW-WM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 114 ;
+}
+'RTOPLWA-JM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 114 ;
+}
+'RADLWA-JM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 115 ;
+}
+'RADGLOA-JM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 117 ;
+}
+'FLLAT-JM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 121 ;
+}
+'FLSEN-JM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 122 ;
+}
+'UFLMOM-NM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 124 ;
+}
+'VFLMOM-NM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 125 ;
+}
+'ICINGWARN-N' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 135 ;
+}
+'PRECTYPE-N' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 144 ;
+}
+'CAPE-JKG' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 160 ;
+}
+'WGU-MS' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 162 ;
+}
+'WGV-MS' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 163 ;
+}
+'RRI-KGM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 181 ;
+}
+'SNACC-KGM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 184 ;
+}
+'SNRI-KGM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 184 ;
+}
+'RRS-KGM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 185 ;
+}
+'CLDBASE-M' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 186 ;
+}
+'CLDTOP-M' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 187 ;
+}
+'TKEN-JKG' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 200 ;
+}
+'GR-KGM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 201 ;
+}
+'GRI-KGM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 201 ;
+}
+'RRH-KGM2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 204 ;
+}
+'FL-MPLTY-N' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 209 ;
+}
+'REFLTY-DBZ' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 210 ;
+}
+'FFG-MS' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 228 ;
+}
diff --git a/definitions/grib1/localConcepts/efkl/units.def b/definitions/grib1/localConcepts/efkl/units.def
new file mode 100644
index 0000000..e0114b9
--- /dev/null
+++ b/definitions/grib1/localConcepts/efkl/units.def
@@ -0,0 +1,1121 @@
+# file generated by get_86_paramdef_for_grib_api.pl at 2014-11-14 10:59:45 EET host gogol.fmi.fi
+'hPa' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 1 ;
+}
+'m2 s-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 2 ;
+}
+'m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 3 ;
+}
+'C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 4 ;
+}
+'K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 8 ;
+}
+'K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 9 ;
+}
+'C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 10 ;
+}
+'kg kg-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 12 ;
+}
+'%' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 13 ;
+}
+'No Unit' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 15 ;
+}
+'No Unit' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 18 ;
+}
+'No Unit' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 19 ;
+}
+'Deg' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 20 ;
+}
+'m s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 21 ;
+}
+'m s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 22 ;
+}
+'m s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 23 ;
+}
+'m s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 24 ;
+}
+'m s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 27 ;
+}
+'m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 28 ;
+}
+'s-1 10-5' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 31 ;
+}
+'No Unit' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 38 ;
+}
+'m s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 39 ;
+}
+'Pa/s' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 40 ;
+}
+'mm s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 43 ;
+}
+'m s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 44 ;
+}
+'kg m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 47 ;
+}
+'mm' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 50 ;
+}
+'m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 51 ;
+}
+'No Unit' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 52 ;
+}
+'No Unit' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 53 ;
+}
+'mm' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 54 ;
+}
+'mm' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 55 ;
+}
+'mm' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 56 ;
+}
+'mm' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 57 ;
+}
+'mm' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 58 ;
+}
+'JustAnumber' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 59 ;
+}
+'No Unit' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 60 ;
+}
+'m 10-4' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 62 ;
+}
+'m 10-4' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 63 ;
+}
+'kg m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 68 ;
+}
+'W m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 69 ;
+}
+'m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 70 ;
+}
+'kg/m2/h' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 71 ;
+}
+'kg/m2/h' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 72 ;
+}
+'kg/m2/h' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 73 ;
+}
+'No Unit' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 74 ;
+}
+'K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 75 ;
+}
+'cm' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 77 ;
+}
+'kg kg-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 78 ;
+}
+'%' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 79 ;
+}
+'No Unit' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 80 ;
+}
+'%' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 89 ;
+}
+'No Unit' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 91 ;
+}
+'W m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 95 ;
+}
+'W m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 96 ;
+}
+'0to1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 99 ;
+}
+'0to1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 100 ;
+}
+'kg m-3' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 101 ;
+}
+'Code' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 102 ;
+}
+'Code' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 103 ;
+}
+'kg kg-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 104 ;
+}
+'kg kg-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 105 ;
+}
+'kg m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 106 ;
+}
+'kg m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 107 ;
+}
+'kg m-2 s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 108 ;
+}
+'kg m-2 s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 109 ;
+}
+'kg/m2/h' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 110 ;
+}
+'C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 111 ;
+}
+'C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 112 ;
+}
+'C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 113 ;
+}
+'C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 114 ;
+}
+'C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 115 ;
+}
+'C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 116 ;
+}
+'m2 s-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 117 ;
+}
+'m2 s-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 118 ;
+}
+'m2 s-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 119 ;
+}
+'m2 s-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 120 ;
+}
+'m2 s-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 121 ;
+}
+'m2 s-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 122 ;
+}
+'W m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 126 ;
+}
+'W m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 128 ;
+}
+'K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 129 ;
+}
+'kg m-3' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 130 ;
+}
+'%' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 131 ;
+}
+'%' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 132 ;
+}
+'%' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 133 ;
+}
+'%' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 134 ;
+}
+'%' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 141 ;
+}
+'%' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 142 ;
+}
+'%' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 143 ;
+}
+'%' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 144 ;
+}
+'kt' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 145 ;
+}
+'kt' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 146 ;
+}
+'m2 s-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 147 ;
+}
+'m2 s-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 148 ;
+}
+'m s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 149 ;
+}
+'C' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 150 ;
+}
+'%' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 151 ;
+}
+'%' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 152 ;
+}
+'%' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 153 ;
+}
+'%' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 154 ;
+}
+'%' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 155 ;
+}
+'%' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 156 ;
+}
+'%' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 157 ;
+}
+'%' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 158 ;
+}
+'%' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 159 ;
+}
+'0to1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 161 ;
+}
+'m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 163 ;
+}
+'m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 164 ;
+}
+'kg/m2/h' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 165 ;
+}
+'kg/m2/h' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 166 ;
+}
+'m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 167 ;
+}
+'kg s-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 168 ;
+}
+'kg s-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 169 ;
+}
+'kg s-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 170 ;
+}
+'kg s-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 171 ;
+}
+'kg s-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 172 ;
+}
+'K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 173 ;
+}
+'K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 174 ;
+}
+'K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 175 ;
+}
+'K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 176 ;
+}
+'K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 177 ;
+}
+'K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 178 ;
+}
+'K' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 179 ;
+}
+'hPa' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 180 ;
+}
+'hPa' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 181 ;
+}
+'hPa' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 182 ;
+}
+'m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 183 ;
+}
+'m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 184 ;
+}
+'m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 185 ;
+}
+'kg m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 186 ;
+}
+'kg m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 187 ;
+}
+'kg m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 188 ;
+}
+'kg m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 189 ;
+}
+'kg m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 190 ;
+}
+'kg m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 191 ;
+}
+'kg m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 192 ;
+}
+'kg m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 193 ;
+}
+'m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 194 ;
+}
+'J kg-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 195 ;
+}
+'No Unit' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 196 ;
+}
+'No Unit' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 197 ;
+}
+'%' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 198 ;
+}
+'J kg-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 199 ;
+}
+'kg m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 200 ;
+}
+'kg s-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 201 ;
+}
+'kg s-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 202 ;
+}
+'kg m-1 s-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 203 ;
+}
+'J kg-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 204 ;
+}
+'J kg-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 205 ;
+}
+'JustAnumber' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 206 ;
+}
+'No Unit' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 207 ;
+}
+'J kg-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 208 ;
+}
+'N m-2 s' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 209 ;
+}
+'N m-2 s' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 210 ;
+}
+'No Unit' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 211 ;
+}
+'kg/m2/h' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 212 ;
+}
+'kg m-2' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 213 ;
+}
+'0to1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 214 ;
+}
+'0to1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 215 ;
+}
+'0to1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 216 ;
+}
+'0to1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 217 ;
+}
+'0to1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 218 ;
+}
+'0to1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 219 ;
+}
+'0to1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 220 ;
+}
+'m s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 221 ;
+}
+'m s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 222 ;
+}
+'m s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 223 ;
+}
+'m s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 224 ;
+}
+'m s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 225 ;
+}
+'m s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 226 ;
+}
+'m s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 227 ;
+}
+'m s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 228 ;
+}
+'m s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 229 ;
+}
+'m s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 230 ;
+}
+'m s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 231 ;
+}
+'m s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 232 ;
+}
+'m s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 233 ;
+}
+'m s-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 234 ;
+}
+'hPa' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 235 ;
+}
+'hPa' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 236 ;
+}
+'hPa' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 237 ;
+}
+'m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 238 ;
+}
+'m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 239 ;
+}
+'m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 240 ;
+}
+'J kg-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 241 ;
+}
+'J kg-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 242 ;
+}
+'J kg-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 243 ;
+}
+'J kg-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 244 ;
+}
+'hPa' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 245 ;
+}
+'hPa' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 246 ;
+}
+'hPa' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 247 ;
+}
+'m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 248 ;
+}
+'m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 249 ;
+}
+'m' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 250 ;
+}
+'J kg-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 251 ;
+}
+'J kg-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 252 ;
+}
+'J kg-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 253 ;
+}
+'J kg-1' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 254 ;
+}
+'JustAnumber' = {
+	table2Version = 203 ;
+	indicatorOfParameter = 255 ;
+}
+'C' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 1 ;
+}
+'%' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 2 ;
+}
+'cm' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 3 ;
+}
+'cm' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 4 ;
+}
+'cm' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 5 ;
+}
+'cm' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 6 ;
+}
+'m s-1' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 7 ;
+}
+'m s-1' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 8 ;
+}
+'cm' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 9 ;
+}
+'%' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 10 ;
+}
+'cm' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 11 ;
+}
+'%' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 12 ;
+}
+'m s-1' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 13 ;
+}
+'m s-1' = {
+	table2Version = 205 ;
+	indicatorOfParameter = 14 ;
+}
+'kg m-1 s-2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 1 ;
+}
+'kg m-1 s-2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 2 ;
+}
+'m2 s-2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 6 ;
+}
+'m' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 8 ;
+}
+'K' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 11 ;
+}
+'K' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 13 ;
+}
+'C' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 15 ;
+}
+'C' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 16 ;
+}
+'K' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 17 ;
+}
+'m' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 20 ;
+}
+'m s-1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 33 ;
+}
+'m s-1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 34 ;
+}
+'Pa/s' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 39 ;
+}
+'m s-1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 40 ;
+}
+'s-1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 41 ;
+}
+'kg kg-1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 51 ;
+}
+'%' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 52 ;
+}
+'kg m-2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 54 ;
+}
+'hPa s-1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 57 ;
+}
+'kg kg-1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 58 ;
+}
+'kg m-2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 61 ;
+}
+'m' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 66 ;
+}
+'m' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 67 ;
+}
+'0to1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 71 ;
+}
+'%' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 73 ;
+}
+'%' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 74 ;
+}
+'%' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 75 ;
+}
+'kg kg-1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 76 ;
+}
+'0to1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 81 ;
+}
+'m' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 83 ;
+}
+'%' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 84 ;
+}
+'kg m-2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 86 ;
+}
+'0to1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 91 ;
+}
+'Deg' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 101 ;
+}
+'m' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 102 ;
+}
+'s' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 103 ;
+}
+'J m-2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 111 ;
+}
+'J m-2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 112 ;
+}
+'W m-2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 113 ;
+}
+'J m-2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 113 ;
+}
+'W m-2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 114 ;
+}
+'J m-2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 114 ;
+}
+'J m-2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 115 ;
+}
+'J m-2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 117 ;
+}
+'kg s-2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 121 ;
+}
+'kg s-2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 122 ;
+}
+'N m-2 s' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 124 ;
+}
+'N m-2 s' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 125 ;
+}
+'Code' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 135 ;
+}
+'JustAnumber' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 144 ;
+}
+'J kg-1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 160 ;
+}
+'m' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 162 ;
+}
+'m' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 163 ;
+}
+'kg/m2/h' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 181 ;
+}
+'kg m-2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 184 ;
+}
+'kg/m2/h' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 184 ;
+}
+'kg m-2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 185 ;
+}
+'m' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 186 ;
+}
+'m' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 187 ;
+}
+'J kg-1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 200 ;
+}
+'kg m-2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 201 ;
+}
+'kg/m2/h' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 201 ;
+}
+'kg m-2' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 204 ;
+}
+'JustAnumber' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 209 ;
+}
+'dBZ' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 210 ;
+}
+'m s-1' = {
+	table2Version = 253 ;
+	indicatorOfParameter = 228 ;
+}
diff --git a/definitions/grib1/localConcepts/eidb/cfName.def b/definitions/grib1/localConcepts/eidb/cfName.def
index 4b1cd85..08c43a5 100644
--- a/definitions/grib1/localConcepts/eidb/cfName.def
+++ b/definitions/grib1/localConcepts/eidb/cfName.def
@@ -1618,16 +1618,16 @@
           table2Version = 253 ;
           indicatorOfParameter = 204 ;
           }
-#Lightning
-'Lightning' = {
-          table2Version = 253 ;
-          indicatorOfParameter = 209 ;
-          }
 #Simulated reflectivity
 'Simulated reflectivity' = {
           table2Version = 253 ;
           indicatorOfParameter = 210 ;
           }
+#Lightning
+'Lightning' = {
+          table2Version = 253 ;
+          indicatorOfParameter = 211 ;
+          }
 #Pressure departure
 'Pressure departure' = {
           table2Version = 253 ;
diff --git a/definitions/grib1/localConcepts/eidb/name.def b/definitions/grib1/localConcepts/eidb/name.def
index 4b1cd85..08c43a5 100644
--- a/definitions/grib1/localConcepts/eidb/name.def
+++ b/definitions/grib1/localConcepts/eidb/name.def
@@ -1618,16 +1618,16 @@
           table2Version = 253 ;
           indicatorOfParameter = 204 ;
           }
-#Lightning
-'Lightning' = {
-          table2Version = 253 ;
-          indicatorOfParameter = 209 ;
-          }
 #Simulated reflectivity
 'Simulated reflectivity' = {
           table2Version = 253 ;
           indicatorOfParameter = 210 ;
           }
+#Lightning
+'Lightning' = {
+          table2Version = 253 ;
+          indicatorOfParameter = 211 ;
+          }
 #Pressure departure
 'Pressure departure' = {
           table2Version = 253 ;
diff --git a/definitions/grib1/localConcepts/eidb/paramId.def b/definitions/grib1/localConcepts/eidb/paramId.def
index 4de7071..1d7cc05 100644
--- a/definitions/grib1/localConcepts/eidb/paramId.def
+++ b/definitions/grib1/localConcepts/eidb/paramId.def
@@ -1618,16 +1618,16 @@
           table2Version = 253 ;
           indicatorOfParameter = 204 ;
           }
-#Lightning
-'233253209' = {
-          table2Version = 253 ;
-          indicatorOfParameter = 209 ;
-          }
 #Simulated reflectivity
 '233253210' = {
           table2Version = 253 ;
           indicatorOfParameter = 210 ;
           }
+#Lightning
+'233253211' = {
+          table2Version = 253 ;
+          indicatorOfParameter = 211 ;
+          }
 #Pressure departure
 '233253212' = {
           table2Version = 253 ;
diff --git a/definitions/grib1/localConcepts/eidb/shortName.def b/definitions/grib1/localConcepts/eidb/shortName.def
index 48b7acf..914d526 100644
--- a/definitions/grib1/localConcepts/eidb/shortName.def
+++ b/definitions/grib1/localConcepts/eidb/shortName.def
@@ -1618,16 +1618,16 @@
           table2Version = 253 ;
           indicatorOfParameter = 204 ;
           }
-#Lightning
-'lgt' = {
-          table2Version = 253 ;
-          indicatorOfParameter = 209 ;
-          }
 #Simulated reflectivity
 'refl' = {
           table2Version = 253 ;
           indicatorOfParameter = 210 ;
           }
+#Lightning
+'lgt' = {
+          table2Version = 253 ;
+          indicatorOfParameter = 211 ;
+          }
 #Pressure departure
 'pdep' = {
           table2Version = 253 ;
diff --git a/definitions/grib1/localConcepts/eidb/units.def b/definitions/grib1/localConcepts/eidb/units.def
index df50f88..e7688d7 100644
--- a/definitions/grib1/localConcepts/eidb/units.def
+++ b/definitions/grib1/localConcepts/eidb/units.def
@@ -1618,16 +1618,16 @@
           table2Version = 253 ;
           indicatorOfParameter = 204 ;
           }
-#Lightning
-'-' = {
-          table2Version = 253 ;
-          indicatorOfParameter = 209 ;
-          }
 #Simulated reflectivity
 'dBz' = {
           table2Version = 253 ;
           indicatorOfParameter = 210 ;
           }
+#Lightning
+'-' = {
+          table2Version = 253 ;
+          indicatorOfParameter = 211 ;
+          }
 #Pressure departure
 'Pa' = {
           table2Version = 253 ;
diff --git a/definitions/grib1/localConcepts/lfpw/name.def b/definitions/grib1/localConcepts/lfpw/name.def
index bb69123..06aa427 100644
--- a/definitions/grib1/localConcepts/lfpw/name.def
+++ b/definitions/grib1/localConcepts/lfpw/name.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Total convective Precipitation
 'Total convective Precipitation' = {
 	 table2Version = 1 ;
diff --git a/definitions/grib1/localConcepts/lfpw/paramId.def b/definitions/grib1/localConcepts/lfpw/paramId.def
index d0f1928..d127e96 100644
--- a/definitions/grib1/localConcepts/lfpw/paramId.def
+++ b/definitions/grib1/localConcepts/lfpw/paramId.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Total convective Precipitation
 '85001156' = {
 	 table2Version = 1 ;
diff --git a/definitions/grib1/localConcepts/lfpw/shortName.def b/definitions/grib1/localConcepts/lfpw/shortName.def
index 624d6d4..7b4f911 100644
--- a/definitions/grib1/localConcepts/lfpw/shortName.def
+++ b/definitions/grib1/localConcepts/lfpw/shortName.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Total convective Precipitation
 'PREC_CONVEC' = {
 	 table2Version = 1 ;
diff --git a/definitions/grib1/localConcepts/lfpw/units.def b/definitions/grib1/localConcepts/lfpw/units.def
index 0a115ff..ba97e24 100644
--- a/definitions/grib1/localConcepts/lfpw/units.def
+++ b/definitions/grib1/localConcepts/lfpw/units.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Total convective Precipitation
 'kg m**-2' = {
 	 table2Version = 1 ;
diff --git a/definitions/grib1/localConcepts/rjtd/cfVarName.def b/definitions/grib1/localConcepts/rjtd/cfVarName.def
index dfa5c27..384e949 100644
--- a/definitions/grib1/localConcepts/rjtd/cfVarName.def
+++ b/definitions/grib1/localConcepts/rjtd/cfVarName.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Stream function
 'strf' = {
 	 table2Version = 200 ;
diff --git a/definitions/grib1/localConcepts/rjtd/name.def b/definitions/grib1/localConcepts/rjtd/name.def
index e1406c0..1384f26 100644
--- a/definitions/grib1/localConcepts/rjtd/name.def
+++ b/definitions/grib1/localConcepts/rjtd/name.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Stream function
 'Stream function' = {
 	 table2Version = 200 ;
diff --git a/definitions/grib1/localConcepts/rjtd/paramId.def b/definitions/grib1/localConcepts/rjtd/paramId.def
index adb1729..1f34813 100644
--- a/definitions/grib1/localConcepts/rjtd/paramId.def
+++ b/definitions/grib1/localConcepts/rjtd/paramId.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Stream function
 '1' = {
 	 table2Version = 200 ;
diff --git a/definitions/grib1/localConcepts/rjtd/shortName.def b/definitions/grib1/localConcepts/rjtd/shortName.def
index 597eec4..9e30092 100644
--- a/definitions/grib1/localConcepts/rjtd/shortName.def
+++ b/definitions/grib1/localConcepts/rjtd/shortName.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Stream function
 'strf' = {
 	 table2Version = 200 ;
diff --git a/definitions/grib1/localConcepts/rjtd/stepType.def b/definitions/grib1/localConcepts/rjtd/stepType.def
index 75956a3..1c1cb4d 100644
--- a/definitions/grib1/localConcepts/rjtd/stepType.def
+++ b/definitions/grib1/localConcepts/rjtd/stepType.def
@@ -20,4 +20,4 @@
 
 "varas"   = {timeRangeIndicator=129;}
 "varad"   = {timeRangeIndicator=131;}
-"vari"    = {timeRangeIndicator=132;}
+"varins"  = {timeRangeIndicator=132;}
diff --git a/definitions/grib1/localConcepts/rjtd/units.def b/definitions/grib1/localConcepts/rjtd/units.def
index fac7af8..ff4173b 100644
--- a/definitions/grib1/localConcepts/rjtd/units.def
+++ b/definitions/grib1/localConcepts/rjtd/units.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Stream function
 'm**2 s**-1' = {
 	 table2Version = 200 ;
diff --git a/definitions/grib1/localConcepts/sbsj/name.def b/definitions/grib1/localConcepts/sbsj/name.def
index 3a59e4e..1540b6b 100644
--- a/definitions/grib1/localConcepts/sbsj/name.def
+++ b/definitions/grib1/localConcepts/sbsj/name.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Pressure
 'Pressure' = {
 	 table2Version = 254 ;
diff --git a/definitions/grib1/localConcepts/sbsj/paramId.def b/definitions/grib1/localConcepts/sbsj/paramId.def
index 2b04308..235923d 100644
--- a/definitions/grib1/localConcepts/sbsj/paramId.def
+++ b/definitions/grib1/localConcepts/sbsj/paramId.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Pressure
 '300001' = {
 	 table2Version = 254 ;
diff --git a/definitions/grib1/localConcepts/sbsj/shortName.def b/definitions/grib1/localConcepts/sbsj/shortName.def
index c6383bc..ce101d8 100644
--- a/definitions/grib1/localConcepts/sbsj/shortName.def
+++ b/definitions/grib1/localConcepts/sbsj/shortName.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Pressure
 'pres' = {
 	 table2Version = 254 ;
diff --git a/definitions/grib1/localConcepts/sbsj/units.def b/definitions/grib1/localConcepts/sbsj/units.def
index d3e6fe3..740b665 100644
--- a/definitions/grib1/localConcepts/sbsj/units.def
+++ b/definitions/grib1/localConcepts/sbsj/units.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Pressure
 'hPa' = {
 	 table2Version = 254 ;
diff --git a/definitions/grib1/local_no_mars.98.1.def b/definitions/grib1/local_no_mars.98.1.def
index dce2cf5..d8e4a63 100644
--- a/definitions/grib1/local_no_mars.98.1.def
+++ b/definitions/grib1/local_no_mars.98.1.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/local_no_mars.98.24.def b/definitions/grib1/local_no_mars.98.24.def
index 77c0707..0386239 100644
--- a/definitions/grib1/local_no_mars.98.24.def
+++ b/definitions/grib1/local_no_mars.98.24.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/mars_labeling.23.def b/definitions/grib1/mars_labeling.23.def
index c802228..b2a1452 100644
--- a/definitions/grib1/mars_labeling.23.def
+++ b/definitions/grib1/mars_labeling.23.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/mars_labeling.4.def b/definitions/grib1/mars_labeling.4.def
index a773faa..b2809b8 100644
--- a/definitions/grib1/mars_labeling.4.def
+++ b/definitions/grib1/mars_labeling.4.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/mars_labeling.def b/definitions/grib1/mars_labeling.def
index a69ea33..e67758e 100644
--- a/definitions/grib1/mars_labeling.def
+++ b/definitions/grib1/mars_labeling.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -20,5 +20,5 @@ alias mars.type   = marsType;
 alias mars.stream = marsStream;
 alias mars.expver = experimentVersionNumber;
 
-alias    mars.domain  =  globalDomain; # For now...
+alias mars.domain  =  globalDomain; # For now...
 
diff --git a/definitions/grib1/name.def b/definitions/grib1/name.def
index 09afce9..9e3b121 100644
--- a/definitions/grib1/name.def
+++ b/definitions/grib1/name.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Stream function
 'Stream function' = {
 	 table2Version = 3 ;
diff --git a/definitions/grib1/param.pl b/definitions/grib1/param.pl
index c8e27d6..93bc6c4 100755
--- a/definitions/grib1/param.pl
+++ b/definitions/grib1/param.pl
@@ -21,10 +21,9 @@ foreach my $p ( metdb::grib_parameters->find(
 	my $file = "2.$centre.$table.table";
 	if($file ne $last)
 	{
-		#system("p4 edit $file");
 		open(OUT,">$file") or die "$file: $!";
 		print OUT "# This file was automatically generated by $0\n";
-		#system("p4 add $file");
+
 		$last = $file;
 	}
 
diff --git a/definitions/grib1/paramId.def b/definitions/grib1/paramId.def
index f992dcf..1310dcd 100644
--- a/definitions/grib1/paramId.def
+++ b/definitions/grib1/paramId.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Stream function
 '1' = {
 	 table2Version = 3 ;
diff --git a/definitions/grib1/predefined_grid.def b/definitions/grib1/predefined_grid.def
index cf7708e..c35a5d7 100644
--- a/definitions/grib1/predefined_grid.def
+++ b/definitions/grib1/predefined_grid.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/resolution_flags.def b/definitions/grib1/resolution_flags.def
index e4c0532..4aad647 100644
--- a/definitions/grib1/resolution_flags.def
+++ b/definitions/grib1/resolution_flags.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/scanning_mode.def b/definitions/grib1/scanning_mode.def
index cbbcfd7..faa8dfe 100644
--- a/definitions/grib1/scanning_mode.def
+++ b/definitions/grib1/scanning_mode.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/section.0.def b/definitions/grib1/section.0.def
index c826e71..f47c8e9 100644
--- a/definitions/grib1/section.0.def
+++ b/definitions/grib1/section.0.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/section.1.def b/definitions/grib1/section.1.def
index 90385d9..a4c9cbe 100644
--- a/definitions/grib1/section.1.def
+++ b/definitions/grib1/section.1.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -229,15 +229,12 @@ alias mars.time    = dataTime;
 meta marsParam mars_param(paramId,gribTablesVersionNo,indicatorOfParameter): read_only,dump;
 alias mars.param  = marsParam;
 
-# JRA55 stepTypes
-#if (stepType is "avgas" ||
-#    stepType is "avgad" ||
-#    stepType is "varas" ||
-#    stepType is "varad")
-#{
-#   alias mars.step = stepRange;
-#}
-
+# GRIB-860: JRA55 rule for MARS.
+# subCentre of 241 means Japanese Reanalysis Project
+if (centre == 34 && subCentre == 241)
+{
+   alias mars.param = paramId;
+}
 
 meta time.validityDate validity_date(dataDate,dataTime,step,stepUnits);
 meta time.validityTime validity_time(dataDate,dataTime,step,stepUnits);
@@ -262,8 +259,8 @@ if(((section1Length > 40) or new() or setLocalDefinition> 0) and deleteLocalDefi
       }
     }
 
-	template_nofail marsKeywords "mars/grib1.[stream:s].[type:s].def";
-	#template marsKeywords "mars/grib1.[stream:s].[type:s].def";
+	template_nofail marsKeywords "mars/grib.[stream:s].[type:s].def";
+	#template marsKeywords "mars/grib.[stream:s].[type:s].def";
 
   }
   else
diff --git a/definitions/grib1/section.2.def b/definitions/grib1/section.2.def
index 4f428e9..94f68f6 100644
--- a/definitions/grib1/section.2.def
+++ b/definitions/grib1/section.2.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -42,14 +42,15 @@ meta gridDefinitionDescription codetable_title(dataRepresentationType);
 
 #  Grid definition
 # (according to data representation type - octet 6 above)
+alias is_rotated_grid=zero;
 
 if (dataRepresentationType < 192)
 {
- template dataRepresentation "grib1/grid_definition_[dataRepresentationType:l].def";
+  template dataRepresentation "grib1/grid_definition_[dataRepresentationType:l].def";
 }
 else
 {
- template dataRepresentation "grib1/grid_definition_[dataRepresentationType:l].[centre:l].def";
+  template dataRepresentation "grib1/grid_definition_[dataRepresentationType:l].[centre:l].def";
 }
 position endGridDefinition;
 
@@ -58,9 +59,9 @@ transient PVPresent = ( NV > 0);
 
 if (pvlLocation != neitherPresent)
 {
- padto padding_sec2_2(offsetSection2 + pvlLocation - 1);
+  padto padding_sec2_2(offsetSection2 + pvlLocation - 1);
 } else {
- padto padding_sec2_2(offsetSection2 + 32 );
+  padto padding_sec2_2(offsetSection2 + 32 );
 }
 
 if(PVPresent )
@@ -77,8 +78,8 @@ transient PLPresent = (section2Length > (offsetBeforePL - offsetSection2))
 if(PLPresent)
 {
   # For grib 1 -> 2
-    constant numberOfOctectsForNumberOfPoints = 2;
-    constant interpretationOfNumberOfPoints = 1;
+  constant numberOfOctectsForNumberOfPoints = 2;
+  constant interpretationOfNumberOfPoints = 1;
 
   unsigned[2] pl[Nj] : dump;
   alias geography.pl=pl;
@@ -104,9 +105,7 @@ concept_nofail deletePV(unknown) {
    "1" = { PVPresent=0; NV=0; }
 }
 
-
 padtoeven padding_sec2_3(offsetSection2,section2Length);
 
 meta md5Section2 md5(offsetSection2,section2Length);
 alias md5GridSection = md5Section2;
-
diff --git a/definitions/grib1/section.3.def b/definitions/grib1/section.3.def
index f40222d..21d5e5d 100644
--- a/definitions/grib1/section.3.def
+++ b/definitions/grib1/section.3.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/section.4.def b/definitions/grib1/section.4.def
index 0bd6549..ea2fbf4 100644
--- a/definitions/grib1/section.4.def
+++ b/definitions/grib1/section.4.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -213,6 +213,23 @@ concept gridType {
   "reduced_gg"           = {dataRepresentationType = 4;  sphericalHarmonics = 0;
                             PLPresent=1; numberOfPointsAlongAParallel = missing();
                             iDirectionIncrement = missing(); ijDirectionIncrementGiven=0;}
+
+  "reduced_rotated_gg"   = {dataRepresentationType = 14;  sphericalHarmonics = 0;
+                            PLPresent=1; numberOfPointsAlongAParallel = missing();
+                            iDirectionIncrement = missing(); ijDirectionIncrementGiven=0;}
+  "reduced_stretched_gg" = {dataRepresentationType = 24;  sphericalHarmonics = 0;
+                            PLPresent=1; numberOfPointsAlongAParallel = missing();
+                            iDirectionIncrement = missing(); ijDirectionIncrementGiven=0;}
+  "reduced_stretched_rotated_gg" = {dataRepresentationType = 34;  sphericalHarmonics = 0;
+                            PLPresent=1; numberOfPointsAlongAParallel = missing();
+                            iDirectionIncrement = missing(); ijDirectionIncrementGiven=0;}
+
+# For consistency add the prefix regular_
+"regular_rotated_gg"           = { dataRepresentationType = 14; sphericalHarmonics = 0; PLPresent=0; } # = rotated_gg
+"regular_stretched_gg"         = { dataRepresentationType = 24; sphericalHarmonics = 0; PLPresent=0; } # = stretched_gg
+"regular_stretched_rotated_gg" = { dataRepresentationType = 34; sphericalHarmonics = 0; PLPresent=0; } # = stretched_rotated_gg
+
+
   "sh"                   = {dataRepresentationType = 50; sphericalHarmonics = 1; PLPresent=0; }
   "rotated_sh"           = {dataRepresentationType = 60; sphericalHarmonics = 1; PLPresent=0; }
   "stretched_sh"         = {dataRepresentationType = 70; sphericalHarmonics = 1; PLPresent=0; }
diff --git a/definitions/grib1/section.5.def b/definitions/grib1/section.5.def
index 49dbfd8..2a2b908 100644
--- a/definitions/grib1/section.5.def
+++ b/definitions/grib1/section.5.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib1/shortName.def b/definitions/grib1/shortName.def
index d23a822..85a79d7 100644
--- a/definitions/grib1/shortName.def
+++ b/definitions/grib1/shortName.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Stream function
 'strf' = {
 	 table2Version = 3 ;
diff --git a/definitions/grib1/units.def b/definitions/grib1/units.def
index 0bd9973..049b12d 100644
--- a/definitions/grib1/units.def
+++ b/definitions/grib1/units.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Stream function
 'm**2 s**-1' = {
 	 table2Version = 3 ;
diff --git a/definitions/grib2/boot.def b/definitions/grib2/boot.def
index be0ef5e..da0bd03 100644
--- a/definitions/grib2/boot.def
+++ b/definitions/grib2/boot.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -12,6 +12,7 @@ constant million = 1000000 : hidden;
 constant grib2divider   = 1000000;
 alias extraDimensionPresent=zero;
 alias is_tigge = zero;
+alias is_s2s = zero;
 transient angularPrecision=grib2divider;  # micro degrees
 
 meta gts_header gts_header() : no_copy,hidden,read_only;
@@ -24,7 +25,7 @@ transient  missingValue   = 9999;
 constant ieeeFloats   = 1 : edition_specific;
 constant isHindcast = 0;
 
-include "section.0.def";
+include "grib2/section.0.def";
 
 template core "grib2/sections.def";
 
diff --git a/definitions/grib2/boot_multifield.def b/definitions/grib2/boot_multifield.def
index bf31aac..10a74e6 100644
--- a/definitions/grib2/boot_multifield.def
+++ b/definitions/grib2/boot_multifield.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/cfName.def b/definitions/grib2/cfName.def
index acf6b0d..af58766 100644
--- a/definitions/grib2/cfName.def
+++ b/definitions/grib2/cfName.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_param.pl from database param at balthasar, do not edit
+# Automatically generated by ./create_param.pl, do not edit
 #Geopotential
 'geopotential' = {
 	 discipline = 0 ;
diff --git a/definitions/grib2/cfVarName.def b/definitions/grib2/cfVarName.def
index d9c2bc0..562d9c9 100644
--- a/definitions/grib2/cfVarName.def
+++ b/definitions/grib2/cfVarName.def
@@ -1,4 +1,4 @@
-# Automatically generated by create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Sea-ice cover
 'ci' = {
 	 discipline = 10 ;
@@ -94,6 +94,14 @@
 	 parameterCategory = 6 ;
 	 parameterNumber = 32 ;
 	}
+#large scale precipitation
+'lsp' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 54 ;
+	 typeOfFirstFixedSurface = 1 ;
+	 typeOfStatisticalProcessing = 1 ;
+	}
 #Snow depth
 'sd' = {
 	 discipline = 0 ;
@@ -105,10 +113,12 @@
 	 discipline = 0 ;
 	 parameterCategory = 2 ;
 	 parameterNumber = 22 ;
-	 typeOfStatisticalProcessing = 2 ;
 	 typeOfFirstFixedSurface = 103 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 10 ;
+	 typeOfStatisticalProcessing = 2 ;
+	 indicatorOfUnitForTimeRange = 1 ;
+	 lengthOfTimeRange = 3 ;
 	}
 #Relative humidity with respect to water
 'rhw' = {
@@ -140,6 +150,12 @@
 	 parameterCategory = 6 ;
 	 parameterNumber = 37 ;
 	}
+#Height of convective cloud top
+'hcct' = {
+	 discipline = 0 ;
+	 parameterCategory = 6 ;
+	 parameterNumber = 27 ;
+	}
 #Soil moisture top 20 cm
 'sm20' = {
 	 discipline = 2 ;
@@ -202,14 +218,208 @@
 	 parameterCategory = 0 ;
 	 parameterNumber = 33 ;
 	}
+#Mean temperature tendency due to short-wave radiation
+'mttswr' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 22 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean temperature tendency due to long-wave radiation
+'mttlwr' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 23 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean temperature tendency due to short-wave radiation, clear sky
+'mttswrcs' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 24 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean temperature tendency due to long-wave radiation, clear sky
+'mttlwrcs' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 25 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean temperature tendency due to parametrisations
+'mttpm' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 26 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean specific humidity tendency due to parametrisations
+'mqtpm' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 108 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean eastward wind tendency due to parametrisations
+'mutpm' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 39 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean northward wind tendency due to parametrisations
+'mvtpm' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 40 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean updraught mass flux
+'mumf' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 27 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean downdraught mass flux
+'mdmf' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 28 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean updraught detrainment rate
+'mudr' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 29 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean downdraught detrainment rate
+'mddr' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 30 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean total precipitation flux
+'mtpf' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 52 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean turbulent diffusion coefficient for heat
+'mtdch' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 20 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Cross sectional area of flow in channel
+'chcross' = {
+	 discipline = 1 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 13 ;
+	}
+#Side flow into river channel
+'chside' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 10 ;
+	}
+#Discharge from rivers or streams
+'dis' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 7 ;
+	}
+#River storage of water
+'rivsto' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 11 ;
+	}
+#Floodplain storage of water
+'fldsto' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 12 ;
+	}
+#Water fraction
+'fldfrc' = {
+	 discipline = 1 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 2 ;
+	}
+#Days since last observation
+'dslr' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 3 ;
+	}
+#Frost index
+'frost' = {
+	 discipline = 2 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 24 ;
+	}
+#Depth of water on soil surface
+'woss' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 13 ;
+	}
+#Upstream accumulated precipitation
+'tpups' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 14 ;
+	}
+#Upstream accumulated snow melt
+'smups' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 15 ;
+	}
+#Snow depth at elevation bands
+'sd_elev' = {
+	 discipline = 2 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 25 ;
+	}
+#Groundwater upper storage
+'gwus' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 8 ;
+	}
+#Groundwater lower storage
+'gwls' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 9 ;
+	}
+#Apparent temperature
+'aptmp' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 21 ;
+	}
+#Haines Index
+'hindex' = {
+	 discipline = 2 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 2 ;
+	}
 #Cloudy brightness temperature
-'p260510' = {
+'clbt' = {
          discipline = 3 ;
          parameterCategory = 1 ;
          parameterNumber = 14 ;
         }
 #Clear-sky brightness temperature
-'p260511' = {
+'csbt' = {
          discipline = 3 ;
          parameterCategory = 1 ;
          parameterNumber = 15 ;
@@ -317,13 +527,19 @@
 	 parameterNumber = 23 ;
 	}
 #Virtual temperature
-'p300012' = {
+'vtmp' = {
 	 discipline = 0 ;
 	 parameterCategory = 0 ;
 	 parameterNumber = 1 ;
 	}
+#Virtual potential temperature
+'vptmp' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 15 ;
+	}
 #Pseudo-adiabatic potential temperature
-'p3014' = {
+'papt' = {
 	 discipline = 0 ;
 	 parameterCategory = 0 ;
 	 parameterNumber = 3 ;
@@ -429,6 +645,8 @@
 	 typeOfFirstFixedSurface = 103 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
+	 indicatorOfUnitForTimeRange = 1 ;
+	 lengthOfTimeRange = 6 ;
 	}
 #Minimum temperature at 2 metres in the last 6 hours
 'mn2t6' = {
@@ -439,6 +657,8 @@
 	 typeOfStatisticalProcessing = 3 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
+	 indicatorOfUnitForTimeRange = 1 ;
+	 lengthOfTimeRange = 6 ;
 	}
 #Geopotential
 'z' = {
@@ -647,14 +867,6 @@
 	 parameterNumber = 17 ;
 	 typeOfFirstFixedSurface = 1 ;
 	}
-#large scale precipitation
-'p3062' = {
-	 discipline = 0 ;
-	 parameterCategory = 1 ;
-	 parameterNumber = 54 ;
-	 typeOfFirstFixedSurface = 1 ;
-	 typeOfStatisticalProcessing = 1 ;
-	}
 #Latent heat net flux
 'p260002' = {
 	 discipline = 0 ;
@@ -2065,6 +2277,12 @@
 	 parameterCategory = 1 ;
 	 parameterNumber = 1 ;
 	}
+#Geometric vertical velocity
+'wz' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 9 ;
+	}
 #Ice temperature
 'p260239' = {
 	 discipline = 10 ;
@@ -2113,12 +2331,6 @@
 	 parameterCategory = 3 ;
 	 parameterNumber = 7 ;
 	}
-#Virtual potential temperature
-'p3012' = {
-	 discipline = 0 ;
-	 parameterCategory = 0 ;
-	 parameterNumber = 15 ;
-	}
 #Maximum temperature
 'p3015' = {
 	 discipline = 0 ;
@@ -2498,7 +2710,7 @@
 	 parameterCategory = 0 ;
 	 parameterNumber = 22 ;
 	}
-#Soil Moisture for TIGGE
+#Soil Moisture
 'sm' = {
 	 discipline = 2 ;
 	 parameterCategory = 0 ;
@@ -2517,7 +2729,7 @@
 	 parameterCategory = 0 ;
 	 parameterNumber = 2 ;
 	}
-#Soil temperature for TIGGE
+#Soil Temperature
 'st' = {
 	 discipline = 2 ;
 	 parameterCategory = 0 ;
diff --git a/definitions/grib2/grib2LocalSectionNumber.98.table b/definitions/grib2/grib2LocalSectionNumber.98.table
index 7857b0c..c26fccc 100644
--- a/definitions/grib2/grib2LocalSectionNumber.98.table
+++ b/definitions/grib2/grib2LocalSectionNumber.98.table
@@ -17,4 +17,5 @@
 36 36  MARS labelling for long window 4DVar system
 38 38  4D variational increments for long window 4DVar system
 39 39  4DVar model errors for long window 4Dvar system
+192 192  Multiple ECMWF local definitions
 300 300  Multi-dimensional parameters
diff --git a/definitions/grib2/local.82.82.def b/definitions/grib2/local.82.82.def
index 1951d23..7cb9734 100644
--- a/definitions/grib2/local.82.82.def
+++ b/definitions/grib2/local.82.82.def
@@ -9,7 +9,7 @@
 #################################
 
 # base local definition
-include "local.82.0.def";
+include "grib2/local.82.0.def";
 
 unsigned[1] marsExperimentOffset = 0 : dump, long_type;
 
diff --git a/definitions/grib2/local.82.83.def b/definitions/grib2/local.82.83.def
index 0f8c1fa..2d7d37f 100644
--- a/definitions/grib2/local.82.83.def
+++ b/definitions/grib2/local.82.83.def
@@ -10,7 +10,7 @@
 
 
 # base file: contains keywords always present
-include "local.82.0.def";
+include "grib2/local.82.0.def";
 
 # extra keywords specific to local definition 83 (MATCH)
 codetable[1]    matchSort               "grib1/localConcepts/eswi/sort.table"              : dump,long_type;
diff --git a/definitions/grib2/local.98.11.def b/definitions/grib2/local.98.11.def
index 4752a6b..95919a8 100644
--- a/definitions/grib2/local.98.11.def
+++ b/definitions/grib2/local.98.11.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/local.98.14.def b/definitions/grib2/local.98.14.def
index 3f2e1d0..a1c92ea 100644
--- a/definitions/grib2/local.98.14.def
+++ b/definitions/grib2/local.98.14.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/local.98.15.def b/definitions/grib2/local.98.15.def
index 885b7bb..f5cfc91 100644
--- a/definitions/grib2/local.98.15.def
+++ b/definitions/grib2/local.98.15.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/local.98.16.def b/definitions/grib2/local.98.16.def
index 08b8357..e395d5e 100644
--- a/definitions/grib2/local.98.16.def
+++ b/definitions/grib2/local.98.16.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/local.98.18.def b/definitions/grib2/local.98.18.def
index a5fbe23..dffc784 100644
--- a/definitions/grib2/local.98.18.def
+++ b/definitions/grib2/local.98.18.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/local.98.192.def b/definitions/grib2/local.98.192.def
new file mode 100644
index 0000000..a8cc606
--- /dev/null
+++ b/definitions/grib2/local.98.192.def
@@ -0,0 +1,20 @@
+# Copyright 2005-2016 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.
+#
+
+# GRIB2 Local Definition 192: Multiple ECMWF local definitions
+
+unsigned[1] numberOfLocalDefinitions = 2  : dump;
+
+if (numberOfLocalDefinitions == 2 ) {
+    unsigned[1] subLocalDefinitionNumber1 = 1  : dump;
+    template  subDefinitions1  "grib2/local.98.[subLocalDefinitionNumber1].def";
+
+    unsigned[1] subLocalDefinitionNumber2 = 24  : dump;
+    template  subDefinitions2  "grib2/local.98.[subLocalDefinitionNumber2].def";
+}
diff --git a/definitions/grib2/local.98.20.def b/definitions/grib2/local.98.20.def
index d46624b..12c00c5 100644
--- a/definitions/grib2/local.98.20.def
+++ b/definitions/grib2/local.98.20.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/local.98.21.def b/definitions/grib2/local.98.21.def
index 37b0d05..ac37450 100644
--- a/definitions/grib2/local.98.21.def
+++ b/definitions/grib2/local.98.21.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/local.98.24.def b/definitions/grib2/local.98.24.def
index e4f4f8d..99b2569 100644
--- a/definitions/grib2/local.98.24.def
+++ b/definitions/grib2/local.98.24.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/local.98.25.def b/definitions/grib2/local.98.25.def
index 8f0d90e..696fb3d 100644
--- a/definitions/grib2/local.98.25.def
+++ b/definitions/grib2/local.98.25.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/local.98.26.def b/definitions/grib2/local.98.26.def
index b485cbc..ddd024e 100644
--- a/definitions/grib2/local.98.26.def
+++ b/definitions/grib2/local.98.26.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/local.98.28.def b/definitions/grib2/local.98.28.def
index b55a18b..23fe0b4 100644
--- a/definitions/grib2/local.98.28.def
+++ b/definitions/grib2/local.98.28.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/local.98.30.def b/definitions/grib2/local.98.30.def
index de21dbe..13e6b16 100644
--- a/definitions/grib2/local.98.30.def
+++ b/definitions/grib2/local.98.30.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/local.98.300.def b/definitions/grib2/local.98.300.def
index 5066051..db5d9f4 100644
--- a/definitions/grib2/local.98.300.def
+++ b/definitions/grib2/local.98.300.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/local.98.36.def b/definitions/grib2/local.98.36.def
index d14187b..008fcf5 100644
--- a/definitions/grib2/local.98.36.def
+++ b/definitions/grib2/local.98.36.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/local.98.38.def b/definitions/grib2/local.98.38.def
index b0e9fa3..2beffec 100644
--- a/definitions/grib2/local.98.38.def
+++ b/definitions/grib2/local.98.38.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/local.98.39.def b/definitions/grib2/local.98.39.def
index fbf44bf..8c91876 100644
--- a/definitions/grib2/local.98.39.def
+++ b/definitions/grib2/local.98.39.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/local.98.500.def b/definitions/grib2/local.98.500.def
index cc7dd84..087095f 100755
--- a/definitions/grib2/local.98.500.def
+++ b/definitions/grib2/local.98.500.def
@@ -41,7 +41,7 @@ codetable[2] instrument "grib2/tables/local/ecmf/obstat.5.0.table";
 
 codetable[2] dataStream "grib2/tables/local/ecmf/obstat.6.0.table";
 
-#include "template.4.horizontal.def";
+#   include "grib2/template.4.horizontal.def"
 
 codetable[2] observationDiagnostic "grib2/tables/local/ecmf/obstat.9.0.table";
 
diff --git a/definitions/grib2/local.98.7.def b/definitions/grib2/local.98.7.def
index 27375a6..776aa3a 100644
--- a/definitions/grib2/local.98.7.def
+++ b/definitions/grib2/local.98.7.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/local.98.9.def b/definitions/grib2/local.98.9.def
index 7b6db75..ba7024e 100644
--- a/definitions/grib2/local.98.9.def
+++ b/definitions/grib2/local.98.9.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/local/edzw/2.0.3.table b/definitions/grib2/local/edzw/2.0.3.table
new file mode 100755
index 0000000..a4f9a0d
--- /dev/null
+++ b/definitions/grib2/local/edzw/2.0.3.table
@@ -0,0 +1,130 @@
+1 p P Pressure Pa
+2 msl MSL Mean sea level pressure Pa
+3 3 None Pressure tendency Pa s**-1
+4 pv PV Potential vorticity K m**2 kg**-1 s**-1
+5 5 None ICAO Standard Atmosphere reference height m
+6 z Z Geopotential m**2 s**-2
+7 gh GH Geopotential height gpm
+8 h H Geometrical height m
+9 9 None Standard deviation of height m
+10 tco3 TCO3 Total (column) ozone Dobson (kg m**-2)
+11 t T Temperature K
+12 12 None Virtual temperature K
+13 13 None Potential temperature K
+14 14 None Pseudo-adiabatic potential temperature K
+15 15 None Maximum temperature K
+16 16 None Minimum temperature K
+17 17 None Dew-point temperature K
+18 18 None Dew-point depression (or deficit) K
+19 19 None Lapse rate K s**-1
+20 20 None Visibility m
+21 21 None Radar spectra (1) -
+22 22 None Radar spectra (2) -
+23 23 None Radar spectra (3) -
+24 24 None Parcel lifted index (to 500 hPa) K
+25 25 None Temperature anomaly K
+26 26 None Pressure anomaly Pa
+27 27 None Geopotential height anomaly gpm
+28 28 None Wave spectra (1) -
+29 29 None Wave spectra (2) -
+30 30 None Wave spectra (3) -
+31 31 None Wind direction Degree true
+32 32 None Wind speed m s**-1
+33 u U U-component of wind m s**-1
+34 v V V-component of wind m s**-1
+35 35 None Stream Function m**2 s**-1
+36 36 None Velocity Potential m**2 s**-1
+37 37 None Montgomery stream Function m**2 s**-1
+38 38 None Sigma coordinate vertical velocity s**-1
+39 w W Vertical velocity Pa s**-1
+40 40 None Vertical velocity m s**-1
+41 41 None Absolute vorticity s**-1
+42 42 None Absolute divergence s**-1
+43 vo VO Relative vorticity s**-1
+44 d D Relative divergence s**-1
+45 45 None Vertical u-component shear s**-1
+46 46 None Vertical v-component shear s**-1
+47 47 None Direction of current Degree true
+48 48 None Speed of current m s**-1
+49 49 None U-component of current m s**-1
+50 50 None V-component of current m s**-1
+51 q Q Specific humidity kg kg**-1
+52 r R Relative humidity %
+53 53 None Humidity mixing ratio kg m**-2
+54 54 None Precipitable water kg m**-2
+55 55 None Vapour pressure Pa
+56 56 None Saturation deficit Pa
+57 e E Evaporation kg m**-2
+58 ciwc CIWC Cloud ice kg m**-2
+59 59 None Precipitation rate kg m**-2 s**-1
+60 60 None Thunderstorm probability %
+61 tp TP Total precipitation kg m**-2
+62 62 LSP Large scale precipitation kg m**-2
+63 63 None Convective precipitation (water) kg m**-2
+64 64 None Snow fall rate water equivalent kg m**-2 s**-1
+65 sf SF Water equivalentof accumulated snow depth kg m**-2
+66 sd SD Snow depth m (of water equivalent)
+67 67 None Mixed layer depth m
+68 68 None Transient thermocline depth m
+69 69 None Main thermocline depth m
+70 70 None Main thermocline anomaly m
+71 tcc TCC Total cloud cover %
+72 ccc CCC Convective cloud cover %
+73 lcc LCC Low cloud cover %
+74 mcc MCC Medium cloud cover %
+75 hcc HCC High cloud cover %
+76 clwc CLWC Cloud liquid water content kg kg**-1
+77 77 None Best lifted index (to 500 hPa) K
+78 csf CSF Convective snow-fall kg m**-2
+79 lsf LSF Large scale snow-fall kg m**-2
+80 80 None Water temperature K
+81 lsm LSM Land cover (1=land, 0=sea) (0 - 1)
+82 82 None Deviation of sea-level from mean m
+83 sr SR Surface roughness m
+84 al AL Albedo -
+85 st ST Surface temperature of soil K
+86 ssw SSW Soil moisture content kg m**-2
+87 veg VEG Percentage of vegetation %
+88 88 None Salinity kg kg**-1
+89 89 None Density kg m**-3
+90 ro RO Water run-off kg m**-2
+91 91 None Ice cover (1=land, 0=sea) (0 - 1)
+92 92 None Ice thickness m
+93 93 None Direction of ice drift Degree true
+94 94 None Speed of ice drift m s*-1
+95 95 None U-component of ice drift m s**-1
+96 96 None V-component of ice drift m s**-1
+97 97 None Ice growth rate m s**-1
+98 98 None Ice divergence s**-1
+99 99 None Snow melt kg m**-2
+100 swh SWH Signific.height,combined wind waves+swell m
+101 mdww MDWW Mean direction of wind waves Degree true
+102 shww SHWW Significant height of wind waves m
+103 mpww MPWW Mean period of wind waves s
+104 104 None Direction of swell waves Degree true
+105 105 None Significant height of swell waves m
+106 106 None Mean period of swell waves s
+107 mdps MDPS Mean direction of primary swell Degree true
+108 mpps MPPS Mean period of primary swell s
+109 109 None Secondary wave direction Degree true
+110 110 None Secondary wave period s
+111 111 None Net short-wave radiation flux (surface) W m**-2
+112 112 None Net long-wave radiation flux (surface) W m**-2
+113 113 None Net short-wave radiationflux(atmosph.top) W m**-2
+114 114 None Net long-wave radiation flux(atmosph.top) W m**-2
+115 115 None Long-wave radiation flux W m**-2
+116 116 None Short-wave radiation flux W m**-2
+117 117 None Global radiation flux W m**-2
+118 118 None Brightness temperature K
+119 119 None Radiance (with respect to wave number) W m**-1 sr**-1
+120 120 None Radiance (with respect to wave length) W m**-1 sr**-1
+121 slhf SLHF (surface) Latent heat flux W m**-2
+122 sshf SSHF (surface) Sensible heat flux W m**-2
+123 bld BLD Boundary layer dissipation W m**-2
+124 124 None Momentum flux, u-component N m**-2
+125 125 None Momentum flux, v-component N m**-2
+126 126 None Wind mixing energy J
+127 127 None Image data -
+148 lsm LSM LandSeaMask
+160 160 Unknown
+255 - - Indicates a missing value -
diff --git a/definitions/grib2/local/edzw/3.table b/definitions/grib2/local/edzw/3.table
new file mode 100755
index 0000000..7c4cc88
--- /dev/null
+++ b/definitions/grib2/local/edzw/3.table
@@ -0,0 +1,51 @@
+# CODE TABLE 3 Fixed levels or layers for wich the data are included
+0 0 Reserved
+1 G Surface (of the Earth, which includes sea surface)
+2 CB Cloud base level
+3 CT Cloud top level
+4 IZ 0 deg (C) isotherm level
+5 AC Adiabatic condensation level (parcel lifted from surface)
+6 WM Maximum wind speed level
+7 TP Tropopause level
+8 AU Nominal top of atmosphere
+9 9 Sea bottom
+# 10-19 Reserved
+20 20 Isothermal level Temperature in 1/100 K
+# 21-99 Reserved
+100 P Isobaric level pressure in hectoPascals (hPa) (2 octets)
+101 PI Layer between two isobaric levels pressure of top (kPa) pressure of bottom (kPa)
+102 MSL Mean sea level 0 0
+103 HMSL Fixed height level height above mean sea level (MSL) in meters
+104 HMSLI Layer between two specfied altitudes above mean sea level - altitude of top, altitude of bottom (hm)
+105 HG Fixed height above ground height in meters (2 octets)
+106 HGI Layer between two height levels above ground - height of top, height of bottom (hm)
+107 SIG Sigma level sigma value in 1/10000 (2 octets)
+108 SIGI Layer between two sigma levels sigma value at top in 1/100 sigma value at bottom in 1/100
+109 H Hybrid level level number (2 octets)
+110 HI Layer between two hybrid levels level number of top level number of bottom
+111 B Depth below land surface centimeters (2 octets)
+112 S Layer between two depths below land surface - depth of upper surface, depth of lower surface (cm)
+113 pt Isentropic (theta) level Potential Temp. degrees K (2 octets)
+114 114 Layer between two isentropic levels 475K minus theta of top in Deg. K 475K minus theta of bottom in Deg. K
+115 115 Level at specified pressure difference from ground to level hPa (2 octets)
+116 116 Layer between two levels at specified pressure differences from ground to levels pressure difference from ground to top level hPa pressure difference from ground to bottom level hPa
+117 pv Potential vorticity surface 10-9 K m2 kg-1 s-1
+# 118 Reserved
+119 119 ETA level: ETA value in 1/10000 (2 octets)
+120 120 Layer between two ETA levels: ETA value at top of layer in 1/100, ETA value at bottom of layer in 1/100
+121 121 Layer between two isobaric surfaces (high precision) 1100 hPa minus pressure of top, in hPa 1100 hPa minus pressure of bottom, in hPa
+# 122-124 Reserved
+125 125 Height level above ground (high precision) centimeters (2 octets)
+# 126-127 Reserved
+128 128 Layer between two sigma levels (high precision) 1.1 minus sigma of top, in 1/1000 of sigma 1.1 minus sigma of bottom, in 1/1000 of sigma
+# 129-140 Reserved
+141 141 Layer between two isobaric surfaces (mixed precision) pressure of top, in kPa 1100hPa minus pressure of bottom, in hPa
+# 142-159 Reserved
+160 dp Depth below sea level meters (2 octets)
+# 161-199Reserved
+200 R Entire atmosphere considered as a single layer 0 (2 octets)
+201 201 Entire ocean considered as a single layer 0 (2 octets)
+210 pl Isobaric surface (Pa) (ECMWF extension)
+211 wv Ocean wave level (ECMWF extension)
+212 oml Ocean mixed layer (ECMWF extension)
+222 SYN Synthetic Satellite Images (DWD extension)
diff --git a/definitions/grib2/local/edzw/5.table b/definitions/grib2/local/edzw/5.table
new file mode 100755
index 0000000..7f7c99d
--- /dev/null
+++ b/definitions/grib2/local/edzw/5.table
@@ -0,0 +1,24 @@
+# CODE TABLE 5 Time Range Indicator
+0 0 Forecast product valid at reference time + P1 (P1>0)
+1 1 Initialized analysis product for reference time (P1=0).
+2 2 Product with a valid time ranging between reference time + P1 and reference time + P2
+3 3 Average (reference time + P1 to reference time + P2)
+4 4 Accumulation (reference time + P1 to reference time + P2) product considered valid at reference time + P2
+5 5 Difference (reference time + P2 minus reference time + P1) product considered valid at reference time + P2
+6 6 Average (reference time - P1 to reference time - P2)
+7 7 Average (reference time - P1 to reference time + P2)
+10 10 P1 occupies octets 19 and 20; product valid at reference time + P1
+11 11 local use: Initialized forecast (P1 > 0) for IDFI
+13 13 local use: Fields from analyses valid at reference time for P1 = 0
+14 14 local use: IFS forecast interpolated to GME triangular grid
+51 51 Climatological Mean Value:
+113 113 Average of N forecasts (or initialized analyses); each product has forecast period of P1 (P1=0 for initialized analyses); products have reference times at intervals of P2, beginning at the given reference time.
+114 114 Accumulation of N forecasts (or initialized analyses); each product has forecast period of P1 (P1=0 for initialized analyses); products have reference times at intervals of P2, beginning at the given reference time.
+115 115 Average of N forecasts, all with the same reference time; the first has a forecast period of P1, the remaining forecasts follow at intervals of P2.
+116 116 Accumulation of N forecasts, all with the same reference time; the first has a forecast period of P1, the remaining follow at intervals of P2.
+117 117 Average of N forecasts, the first has a period of P1, the subsequent ones have forecast periods reduced from the previous one by an interval of P2; the reference time for the first is given in octets 13- 17, the subsequent ones have reference times increased from the previous one by an interval of P2. Thus all the forecasts have the same valid time, given by the initial reference time + P1.
+118 118 Temporal variance, or covariance, of N initialized analyses; each product has forecast period P1=0; products have reference times at intervals of P2, beginning at the given reference time.
+119 119 Standard deviation of N forecasts, all with the same reference time with respect to the time average of forecasts; the first forecast has a forecast period of P1, the remaining forecasts follow at intervals of P2
+123 123 Average of N uninitialized analyses, starting at the reference time, at intervals of P2.
+124 124 Accumulation of N uninitialized analyses, starting at the reference time, at intervals of P2.
+125 125 Standard deviation of N forecasts, all with the same reference time with respect to time average of the time tendency of forecasts; the first forecast has a forecast period of P1, the remaining forecasts follow at intervals of P2
diff --git a/definitions/grib2/local/edzw/generatingProcessIdentifier.table b/definitions/grib2/local/edzw/generatingProcessIdentifier.table
new file mode 100755
index 0000000..f2ecd9a
--- /dev/null
+++ b/definitions/grib2/local/edzw/generatingProcessIdentifier.table
@@ -0,0 +1,86 @@
+025 AN2MO AN2MO
+033 ANALY ANALY
+034 WAMIT WAMIT
+036 GPEPS GPEPS
+037 KWGFS KWGFS
+038 KWGF5 KWGF5
+044 B106V B106V
+049 S106V S106V
+053 AN1MO AN1MO
+058 EM3AN EM3AN
+059 EM3MO EM3MO
+061 ECMFM ECMFM
+064 KWBCM KWBCM
+065 LFPWM LFPWM
+068 KWB01 KWB01
+069 SGGLO SGGLO
+074 B106A B106A
+075 SGMED SGMED
+079 S106A S106A
+080 ECENS ECENS
+081 NORMW NORMW
+084 NORM3 NORM3
+085 SGNAT SGNAT
+086 SGESH SGESH
+087 SGBAL SGBAL
+088 MOMI3 MOMI3
+094 P106A P106A
+111 DM3AN DM3AN
+112 DM3MO DM3MO
+115 DM4AN DM4AN
+116 DM4MO DM4MO
+121 WAFTF WAFTF
+122 WAFSZ WAFSZ
+123 KWB02 KWB02
+124 KWB03 KWB03
+126 KWB04 KWB04
+127 NAEGR NAEGR
+131 LM1AN LM1AN
+132 LM1MO LM1MO
+134 LM2AN LM2AN
+135 LM2MO LM2MO
+137 LM3AN LM3AN
+138 LM3MO LM3MO
+140 ecgm_diag_fc05 ecgm_diag_fc05 
+141 I032A I032A
+143 I048A I048A
+145 I064A I064A
+147 I096A I096A
+148 I096F I096F
+149 I128A I128A
+150 I128F I128F
+157 R096A R096A
+159 R128A R128A
+160 R128F R128F
+173 I192A I192A
+174 I192F I192F
+175 I256A I256A
+176 I256F I256F
+185 R192A R192A
+186 R192F R192F
+187 R256A R256A
+188 R256F R256F
+194 E128A E128A
+195 E192A E192A
+196 E256A E256A
+197 SGGM0 SGGM0
+198 SGGM1 SGGM1
+199 SGGM2 SGGM2
+201 SGLM0 SGLM0
+202 SGLM1 SGLM1
+205 SGBSH SGBSH
+206 I384A I384A
+207 I384F I384F
+208 R384A R384A
+209 R384F R384F
+210 E384A E384A
+211 EGMES EGMES
+212 LFMES LFMES
+213 LM4MO LM4MO
+214 LM4AN LM4AN
+215 LM5MO LM5MO
+216 LM5AN LM5AN
+217 LM6MO LM6MO
+218 LM6AN LM6AN
+219 LM7MO LM7MO
+225 SGBS1 SGBS1
diff --git a/definitions/grib2/localConcepts/cnmc/modelName.def b/definitions/grib2/localConcepts/cnmc/modelName.def
new file mode 100644
index 0000000..e7a85ed
--- /dev/null
+++ b/definitions/grib2/localConcepts/cnmc/modelName.def
@@ -0,0 +1,7 @@
+# modelName: Contribution from Daniel Lee @ DWD
+
+# defintions for Roma (COSMO LEPS)
+'cosmo-leps' = {
+    subCentre=98;
+    grib2LocalSectionNumber=28;
+}
diff --git a/definitions/grib2/localConcepts/cnmc/name.def b/definitions/grib2/localConcepts/cnmc/name.def
index ded500a..996c1e6 100644
--- a/definitions/grib2/localConcepts/cnmc/name.def
+++ b/definitions/grib2/localConcepts/cnmc/name.def
@@ -1,4 +1,38 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
+#Sea-ice cover
+'Sea-ice cover' = {
+	 discipline = 10 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 0 ;
+	}
+#Sea-ice cover
+'Sea-ice cover' = {
+	 discipline = 10 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 0 ;
+	 subCentre = 102 ;
+	 is_s2s = 1 ;
+	}
+#2 metre dewpoint temperature
+'2 metre dewpoint temperature' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 6 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+#2 metre dewpoint temperature
+'2 metre dewpoint temperature' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 6 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	 is_s2s = 1 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 subCentre = 102 ;
+	}
 #Pressure (S) (not reduced)
 'Pressure (S) (not reduced)' = {
 	 discipline = 0 ;
@@ -76,16 +110,6 @@
 	 parameterNumber = 0 ;
 	 typeOfFirstFixedSurface = 1 ;
 	}
-#2m Temperature (AV)
-'2m Temperature (AV)' = {
-	 discipline = 0 ;
-	 parameterCategory = 0 ;
-	 parameterNumber = 0 ;
-	 typeOfFirstFixedSurface = 103 ;
-	 scaledValueOfFirstFixedSurface = 2 ;
-	 typeOfStatisticalProcessing = 0 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
-	}
 #Climat. temperature, 2m Temperature
 'Climat. temperature, 2m Temperature' = {
 	 discipline = 0 ;
diff --git a/definitions/grib2/localConcepts/cnmc/paramId.def b/definitions/grib2/localConcepts/cnmc/paramId.def
index dba63ec..3187e06 100644
--- a/definitions/grib2/localConcepts/cnmc/paramId.def
+++ b/definitions/grib2/localConcepts/cnmc/paramId.def
@@ -1,4 +1,38 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
+#Sea-ice cover
+'31' = {
+	 discipline = 10 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 0 ;
+	}
+#Sea-ice cover
+'31' = {
+	 discipline = 10 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 0 ;
+	 subCentre = 102 ;
+	 is_s2s = 1 ;
+	}
+#2 metre dewpoint temperature
+'168' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 6 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 typeOfFirstFixedSurface = 103 ;
+	}
+#2 metre dewpoint temperature
+'168' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 6 ;
+	 is_s2s = 1 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 subCentre = 102 ;
+	}
 #Pressure (S) (not reduced)
 '500000' = {
 	 discipline = 0 ;
@@ -76,16 +110,6 @@
 	 parameterNumber = 0 ;
 	 typeOfFirstFixedSurface = 1 ;
 	}
-#2m Temperature (AV)
-'500012' = {
-	 discipline = 0 ;
-	 parameterCategory = 0 ;
-	 parameterNumber = 0 ;
-	 scaledValueOfFirstFixedSurface = 2 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
-	 typeOfFirstFixedSurface = 103 ;
-	 typeOfStatisticalProcessing = 0 ;
-	}
 #Climat. temperature, 2m Temperature
 '500013' = {
 	 discipline = 0 ;
diff --git a/definitions/grib2/localConcepts/cnmc/shortName.def b/definitions/grib2/localConcepts/cnmc/shortName.def
index ce84925..f8adc83 100644
--- a/definitions/grib2/localConcepts/cnmc/shortName.def
+++ b/definitions/grib2/localConcepts/cnmc/shortName.def
@@ -1,4 +1,38 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
+#Sea-ice cover
+'ci' = {
+	 discipline = 10 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 0 ;
+	}
+#Sea-ice cover
+'ci' = {
+	 discipline = 10 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 0 ;
+	 is_s2s = 1 ;
+	 subCentre = 102 ;
+	}
+#2 metre dewpoint temperature
+'2d' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 6 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	}
+#2 metre dewpoint temperature
+'2d' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 6 ;
+	 is_s2s = 1 ;
+	 subCentre = 102 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 typeOfFirstFixedSurface = 103 ;
+	}
 #Pressure (S) (not reduced)
 'ps' = {
 	 discipline = 0 ;
@@ -76,16 +110,6 @@
 	 parameterNumber = 0 ;
 	 typeOfFirstFixedSurface = 1 ;
 	}
-#2m Temperature (AV)
-'t_2m_av' = {
-	 discipline = 0 ;
-	 parameterCategory = 0 ;
-	 parameterNumber = 0 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
-	 typeOfFirstFixedSurface = 103 ;
-	 typeOfStatisticalProcessing = 0 ;
-	 scaledValueOfFirstFixedSurface = 2 ;
-	}
 #Climat. temperature, 2m Temperature
 't_2m_cl' = {
 	 discipline = 0 ;
diff --git a/definitions/grib2/localConcepts/cnmc/units.def b/definitions/grib2/localConcepts/cnmc/units.def
index 867a63b..7b302f3 100644
--- a/definitions/grib2/localConcepts/cnmc/units.def
+++ b/definitions/grib2/localConcepts/cnmc/units.def
@@ -1,4 +1,38 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
+#Sea-ice cover
+'(0 - 1)' = {
+	 discipline = 10 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 0 ;
+	}
+#Sea-ice cover
+'(0 - 1)' = {
+	 discipline = 10 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 0 ;
+	 subCentre = 102 ;
+	 is_s2s = 1 ;
+	}
+#2 metre dewpoint temperature
+'K' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 6 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+#2 metre dewpoint temperature
+'K' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 6 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	 is_s2s = 1 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 subCentre = 102 ;
+	}
 #Pressure (S) (not reduced)
 'Pa' = {
 	 discipline = 0 ;
@@ -76,16 +110,6 @@
 	 parameterNumber = 0 ;
 	 typeOfFirstFixedSurface = 1 ;
 	}
-#2m Temperature (AV)
-'~' = {
-	 discipline = 0 ;
-	 parameterCategory = 0 ;
-	 parameterNumber = 0 ;
-	 typeOfFirstFixedSurface = 103 ;
-	 scaledValueOfFirstFixedSurface = 2 ;
-	 typeOfStatisticalProcessing = 0 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
-	}
 #Climat. temperature, 2m Temperature
 'K' = {
 	 discipline = 0 ;
diff --git a/definitions/grib2/localConcepts/ecmf/cfName.def b/definitions/grib2/localConcepts/ecmf/cfName.def
index 6a59557..ed89ec5 100644
--- a/definitions/grib2/localConcepts/ecmf/cfName.def
+++ b/definitions/grib2/localConcepts/ecmf/cfName.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_param.pl from database param at balthasar, do not edit
+# Automatically generated by ./create_param.pl, do not edit
 #Geopotential
 'geopotential' = {
 	 discipline = 0 ;
diff --git a/definitions/grib2/localConcepts/ecmf/cfVarName.def b/definitions/grib2/localConcepts/ecmf/cfVarName.def
index b2a434a..8d453fd 100644
--- a/definitions/grib2/localConcepts/ecmf/cfVarName.def
+++ b/definitions/grib2/localConcepts/ecmf/cfVarName.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Total precipitation of at least 1 mm
 'tpg1' = {
 	 discipline = 192 ;
@@ -287,7 +287,7 @@
 	 parameterCategory = 128 ;
 	 parameterNumber = 47 ;
 	}
-#Magnitude of surface stress
+#Magnitude of turbulent surface stress
 'magss' = {
 	 discipline = 192 ;
 	 parameterCategory = 128 ;
@@ -310,22 +310,24 @@
 	 discipline = 0 ;
 	 parameterCategory = 0 ;
 	 parameterNumber = 0 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
-	 typeOfStatisticalProcessing = 2 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
 	 typeOfFirstFixedSurface = 103 ;
 	 lengthOfTimeRange = 24 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 typeOfStatisticalProcessing = 2 ;
+	 indicatorOfUnitForTimeRange = 1 ;
 	}
 #Minimum temperature at 2 metres in the last 24 hours
 'mn2t24' = {
 	 discipline = 0 ;
 	 parameterCategory = 0 ;
 	 parameterNumber = 0 ;
+	 lengthOfTimeRange = 24 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 typeOfStatisticalProcessing = 3 ;
+	 indicatorOfUnitForTimeRange = 1 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
 	 typeOfFirstFixedSurface = 103 ;
-	 lengthOfTimeRange = 24 ;
 	}
 #Montgomery potential
 'mont' = {
@@ -693,28 +695,6 @@
 	 parameterCategory = 128 ;
 	 parameterNumber = 120 ;
 	}
-#Maximum temperature at 2 metres in the last 6 hours
-'mx2t6' = {
-	 discipline = 0 ;
-	 parameterCategory = 0 ;
-	 parameterNumber = 0 ;
-	 typeOfStatisticalProcessing = 2 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
-	 typeOfFirstFixedSurface = 103 ;
-	 scaledValueOfFirstFixedSurface = 2 ;
-	 lengthOfTimeRange = 6 ;
-	}
-#Minimum temperature at 2 metres in the last 6 hours
-'mn2t6' = {
-	 discipline = 0 ;
-	 parameterCategory = 0 ;
-	 parameterNumber = 0 ;
-	 scaledValueOfFirstFixedSurface = 2 ;
-	 lengthOfTimeRange = 6 ;
-	 typeOfStatisticalProcessing = 3 ;
-	 typeOfFirstFixedSurface = 103 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
-	}
 #10 metre wind gust in the last 6 hours
 'p10fg6' = {
 	 discipline = 192 ;
@@ -1291,12 +1271,6 @@
 	 parameterCategory = 128 ;
 	 parameterNumber = 254 ;
 	}
-#Indicates a missing value
-'p255.190' = {
-	 discipline = 192 ;
-	 parameterCategory = 128 ;
-	 parameterNumber = 255 ;
-	}
 #Stream function difference
 'strfdiff' = {
 	 discipline = 192 ;
@@ -1513,7 +1487,7 @@
 	 parameterCategory = 200 ;
 	 parameterNumber = 47 ;
 	}
-#Magnitude of surface stress difference
+#Magnitude of turbulent surface stress difference
 'magssdiff' = {
 	 discipline = 192 ;
 	 parameterCategory = 200 ;
@@ -2707,12 +2681,6 @@
 	 parameterCategory = 200 ;
 	 parameterNumber = 255 ;
 	}
-#Maximum of significant wave height index
-'maxswhi' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 216 ;
-	}
 #Reserved
 'p193.151' = {
 	 discipline = 192 ;
@@ -3014,7 +2982,7 @@
 	 parameterNumber = 74 ;
 	}
 #Wildfire viewing angle of observation
-'p210079' = {
+'vafire' = {
 	 discipline = 192 ;
 	 parameterCategory = 210 ;
 	 parameterNumber = 79 ;
@@ -9120,17 +9088,19 @@
 	 discipline = 0 ;
 	 parameterCategory = 0 ;
 	 parameterNumber = 0 ;
+	 typeOfStatisticalProcessing = 2 ;
+	 lengthOfTimeRange = 3 ;
+	 indicatorOfUnitForTimeRange = 1 ;
 	 typeOfFirstFixedSurface = 103 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
-	 typeOfStatisticalProcessing = 2 ;
-	 lengthOfTimeRange = 3 ;
 	}
 #Minimum temperature at 2 metres in the last 3 hours
 'mn2t3' = {
 	 discipline = 0 ;
 	 parameterCategory = 0 ;
 	 parameterNumber = 0 ;
+	 indicatorOfUnitForTimeRange = 1 ;
 	 typeOfFirstFixedSurface = 103 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
@@ -9167,6 +9137,36 @@
 	 parameterCategory = 228 ;
 	 parameterNumber = 43 ;
 	}
+#Height of Zero Deg Wet Bulb Temperature
+'hwbt0' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 47 ;
+	}
+#Height of One Deg Wet Bulb Temperature
+'hwbt1' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 48 ;
+	}
+#Unbalanced component of specific humidity
+'ucq' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 54 ;
+	}
+#Unbalanced component of specific cloud liquid water content
+'ucclwc' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 55 ;
+	}
+#Unbalanced component of specific cloud ice water content
+'ucciwc' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 56 ;
+	}
 #Total column rain water
 'tcrw' = {
 	 discipline = 192 ;
@@ -9216,7 +9216,7 @@
 	 parameterNumber = 130 ;
 	}
 #Surface short wave-effective total cloudiness
-'p228248' = {
+'tccsw' = {
 	 discipline = 192 ;
 	 parameterCategory = 228 ;
 	 parameterNumber = 248 ;
@@ -9246,109 +9246,31 @@
 	 parameterNumber = 252 ;
 	}
 #Surface long wave-effective total cloudiness
-'p228255' = {
+'tcclw' = {
 	 discipline = 192 ;
 	 parameterCategory = 228 ;
 	 parameterNumber = 255 ;
 	}
 #Flood alert levels
-'p240010' = {
+'flal' = {
 	 discipline = 192 ;
 	 parameterCategory = 240 ;
 	 parameterNumber = 10 ;
 	}
-#Cross sectional area of flow in channel
-'p240011' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 11 ;
-	}
-#Sideflow into river channel
-'p240012' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 12 ;
-	}
-#Discharge
-'p240013' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 13 ;
-	}
-#River storage of water
-'p240014' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 14 ;
-	}
-#Floodplain storage of water
-'p240015' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 15 ;
-	}
-#Flooded area fraction
-'p240016' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 16 ;
-	}
-#Days since last rain
-'p240017' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 17 ;
-	}
-#Molnau-Bissell frost index
-'p240018' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 18 ;
-	}
 #Maximum discharge in 15 day forecast
-'p240019' = {
+'mxcq15d' = {
 	 discipline = 192 ;
 	 parameterCategory = 240 ;
 	 parameterNumber = 19 ;
 	}
-#Depth of water on soil surface
-'p240020' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 20 ;
-	}
-#Upstreams accumulated precipitation
-'p240021' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 21 ;
-	}
-#Upstreams accumulated snow melt
-'p240022' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 22 ;
-	}
 #Maximum rain in 24 hours over the 15 day forecast
-'p240023' = {
+'mxtp24h15d' = {
 	 discipline = 192 ;
 	 parameterCategory = 240 ;
 	 parameterNumber = 23 ;
 	}
-#Groundwater
-'p240025' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 25 ;
-	}
-#Snow depth at elevation bands
-'p240026' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 26 ;
-	}
 #Accumulated precipitation over the 15 day forecast
-'p240027' = {
+'acctp15d' = {
 	 discipline = 192 ;
 	 parameterCategory = 240 ;
 	 parameterNumber = 27 ;
@@ -9569,7 +9491,7 @@
 	 parameterCategory = 129 ;
 	 parameterNumber = 47 ;
 	}
-#Magnitude of surface stress gradient
+#Magnitude of turbulent surface stress gradient
 'magssgrd' = {
 	 discipline = 192 ;
 	 parameterCategory = 129 ;
@@ -11074,14 +10996,14 @@
 	 discipline = 0 ;
 	 parameterCategory = 2 ;
 	 parameterNumber = 22 ;
-	 typeOfFirstFixedSurface = 103 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 10 ;
 	 productDefinitionTemplateNumber = 9 ;
+	 scaleFactorOfLowerLimit = 0 ;
 	 typeOfStatisticalProcessing = 2 ;
 	 scaledValueOfLowerLimit = 25 ;
-	 scaleFactorOfLowerLimit = 0 ;
+	 typeOfFirstFixedSurface = 103 ;
 	 probabilityType = 3 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
 	}
 #2 metre temperature less than 273.15 K
 't2l273' = {
@@ -11094,43 +11016,43 @@
 	 discipline = 10 ;
 	 parameterCategory = 0 ;
 	 parameterNumber = 3 ;
-	 productDefinitionTemplateNumber = 5 ;
-	 typeOfFirstFixedSurface = 101 ;
-	 probabilityType = 3 ;
 	 scaledValueOfLowerLimit = 2 ;
 	 scaleFactorOfLowerLimit = 0 ;
+	 typeOfFirstFixedSurface = 101 ;
+	 productDefinitionTemplateNumber = 5 ;
+	 probabilityType = 3 ;
 	}
 #Significant wave height of at least 4 m
 'swhg4' = {
 	 discipline = 10 ;
 	 parameterCategory = 0 ;
 	 parameterNumber = 3 ;
-	 scaledValueOfLowerLimit = 4 ;
-	 productDefinitionTemplateNumber = 5 ;
 	 typeOfFirstFixedSurface = 101 ;
+	 productDefinitionTemplateNumber = 5 ;
 	 scaleFactorOfLowerLimit = 0 ;
 	 probabilityType = 3 ;
+	 scaledValueOfLowerLimit = 4 ;
 	}
 #Significant wave height of at least 6 m
 'swhg6' = {
 	 discipline = 10 ;
 	 parameterCategory = 0 ;
 	 parameterNumber = 3 ;
+	 scaledValueOfLowerLimit = 6 ;
 	 productDefinitionTemplateNumber = 5 ;
-	 typeOfFirstFixedSurface = 101 ;
 	 scaleFactorOfLowerLimit = 0 ;
+	 typeOfFirstFixedSurface = 101 ;
 	 probabilityType = 3 ;
-	 scaledValueOfLowerLimit = 6 ;
 	}
 #Significant wave height of at least 8 m
 'swhg8' = {
 	 discipline = 10 ;
 	 parameterCategory = 0 ;
 	 parameterNumber = 3 ;
-	 typeOfFirstFixedSurface = 101 ;
 	 probabilityType = 3 ;
 	 scaleFactorOfLowerLimit = 0 ;
 	 scaledValueOfLowerLimit = 8 ;
+	 typeOfFirstFixedSurface = 101 ;
 	 productDefinitionTemplateNumber = 5 ;
 	}
 #Mean wave period of at least 8 s
@@ -11169,8 +11091,8 @@
 	 parameterCategory = 131 ;
 	 parameterNumber = 130 ;
 	}
-#2 metre temperature probability
-'t2p' = {
+#Soil temperature level 1 probability
+'stl1p' = {
 	 discipline = 192 ;
 	 parameterCategory = 131 ;
 	 parameterNumber = 139 ;
@@ -11181,8 +11103,8 @@
 	 parameterCategory = 131 ;
 	 parameterNumber = 144 ;
 	}
-#Total precipitation probability
-'tpp' = {
+#Mean sea level pressure probability
+'mslpp' = {
 	 discipline = 192 ;
 	 parameterCategory = 131 ;
 	 parameterNumber = 151 ;
@@ -11241,48 +11163,6 @@
 	 parameterCategory = 131 ;
 	 parameterNumber = 255 ;
 	}
-#10 metre wind gust index
-'fg10i' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 49 ;
-	}
-#Snowfall index
-'sfi' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 144 ;
-	}
-#10 metre speed index
-'ws10i' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 165 ;
-	}
-#2 metre temperature index
-'t2i' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 167 ;
-	}
-#Maximum temperature at 2 metres index
-'mx2ti' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 201 ;
-	}
-#Minimum temperature at 2 metres index
-'mn2ti' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 202 ;
-	}
-#Total precipitation index
-'tpi' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 228 ;
-	}
 #2m temperature probability less than -10 C
 't2plm10' = {
 	 discipline = 192 ;
@@ -13042,283 +12922,283 @@
 	 parameterNumber = 51 ;
 	}
 #Vertical integral of mass of atmosphere
-'p53.162' = {
+'vima' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 53 ;
 	}
 #Vertical integral of temperature
-'p54.162' = {
+'vit' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 54 ;
 	}
 #Vertical integral of water vapour
-'p55.162' = {
+'viwv' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 55 ;
 	}
 #Vertical integral of cloud liquid water
-'p56.162' = {
+'vilw' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 56 ;
 	}
 #Vertical integral of cloud frozen water
-'p57.162' = {
+'viiw' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 57 ;
 	}
 #Vertical integral of ozone
-'p58.162' = {
+'vioz' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 58 ;
 	}
 #Vertical integral of kinetic energy
-'p59.162' = {
+'vike' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 59 ;
 	}
 #Vertical integral of thermal energy
-'p60.162' = {
+'vithe' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 60 ;
 	}
 #Vertical integral of potential+internal energy
-'p61.162' = {
+'vipie' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 61 ;
 	}
 #Vertical integral of potential+internal+latent energy
-'p62.162' = {
+'vipile' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 62 ;
 	}
 #Vertical integral of total energy
-'p63.162' = {
+'vitoe' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 63 ;
 	}
 #Vertical integral of energy conversion
-'p64.162' = {
+'viec' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 64 ;
 	}
 #Vertical integral of eastward mass flux
-'p65.162' = {
+'vimae' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 65 ;
 	}
 #Vertical integral of northward mass flux
-'p66.162' = {
+'viman' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 66 ;
 	}
 #Vertical integral of eastward kinetic energy flux
-'p67.162' = {
+'vikee' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 67 ;
 	}
 #Vertical integral of northward kinetic energy flux
-'p68.162' = {
+'viken' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 68 ;
 	}
 #Vertical integral of eastward heat flux
-'p69.162' = {
+'vithee' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 69 ;
 	}
 #Vertical integral of northward heat flux
-'p70.162' = {
+'vithen' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 70 ;
 	}
 #Vertical integral of eastward water vapour flux
-'p71.162' = {
+'viwve' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 71 ;
 	}
 #Vertical integral of northward water vapour flux
-'p72.162' = {
+'viwvn' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 72 ;
 	}
 #Vertical integral of eastward geopotential flux
-'p73.162' = {
+'vige' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 73 ;
 	}
 #Vertical integral of northward geopotential flux
-'p74.162' = {
+'vign' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 74 ;
 	}
 #Vertical integral of eastward total energy flux
-'p75.162' = {
+'vitoee' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 75 ;
 	}
 #Vertical integral of northward total energy flux
-'p76.162' = {
+'vitoen' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 76 ;
 	}
 #Vertical integral of eastward ozone flux
-'p77.162' = {
+'vioze' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 77 ;
 	}
 #Vertical integral of northward ozone flux
-'p78.162' = {
+'viozn' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 78 ;
 	}
 #Vertical integral of divergence of mass flux
-'p81.162' = {
+'vimad' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 81 ;
 	}
 #Vertical integral of divergence of kinetic energy flux
-'p82.162' = {
+'viked' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 82 ;
 	}
 #Vertical integral of divergence of thermal energy flux
-'p83.162' = {
+'vithed' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 83 ;
 	}
 #Vertical integral of divergence of moisture flux
-'p84.162' = {
+'viwvd' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 84 ;
 	}
 #Vertical integral of divergence of geopotential flux
-'p85.162' = {
+'vigd' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 85 ;
 	}
 #Vertical integral of divergence of total energy flux
-'p86.162' = {
+'vitoed' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 86 ;
 	}
 #Vertical integral of divergence of ozone flux
-'p87.162' = {
+'viozd' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 87 ;
 	}
 #Tendency of short wave radiation
-'p100.162' = {
+'srta' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 100 ;
 	}
 #Tendency of long wave radiation
-'p101.162' = {
+'trta' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 101 ;
 	}
 #Tendency of clear sky short wave radiation
-'p102.162' = {
+'srtca' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 102 ;
 	}
 #Tendency of clear sky long wave radiation
-'p103.162' = {
+'trtca' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 103 ;
 	}
 #Updraught mass flux
-'p104.162' = {
+'umfa' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 104 ;
 	}
 #Downdraught mass flux
-'p105.162' = {
+'dmfa' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 105 ;
 	}
 #Updraught detrainment rate
-'p106.162' = {
+'udra' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 106 ;
 	}
 #Downdraught detrainment rate
-'p107.162' = {
+'ddra' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 107 ;
 	}
 #Total precipitation flux
-'p108.162' = {
+'tpfa' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 108 ;
 	}
 #Turbulent diffusion coefficient for heat
-'p109.162' = {
+'tdcha' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 109 ;
 	}
 #Tendency of temperature due to physics
-'p110.162' = {
+'ttpha' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 110 ;
 	}
 #Tendency of specific humidity due to physics
-'p111.162' = {
+'qtpha' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 111 ;
 	}
 #Tendency of u component due to physics
-'p112.162' = {
+'utpha' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 112 ;
 	}
 #Tendency of v component due to physics
-'p113.162' = {
+'vtpha' = {
 	 discipline = 192 ;
 	 parameterCategory = 162 ;
 	 parameterNumber = 113 ;
@@ -13713,7 +13593,7 @@
 	 parameterCategory = 171 ;
 	 parameterNumber = 47 ;
 	}
-#Magnitude of surface stress anomaly
+#Magnitude of turbulent surface stress anomaly
 'magssa' = {
 	 discipline = 192 ;
 	 parameterCategory = 171 ;
@@ -14619,7 +14499,7 @@
 	 parameterCategory = 172 ;
 	 parameterNumber = 45 ;
 	}
-#Magnitude of surface stress
+#Magnitude of turbulent surface stress
 'p48.172' = {
 	 discipline = 192 ;
 	 parameterCategory = 172 ;
@@ -14835,7 +14715,7 @@
 	 parameterCategory = 173 ;
 	 parameterNumber = 45 ;
 	}
-#Magnitude of surface stress anomaly
+#Magnitude of turbulent surface stress anomaly
 'p48.173' = {
 	 discipline = 192 ;
 	 parameterCategory = 173 ;
@@ -15154,7 +15034,7 @@
 	 parameterNumber = 95 ;
 	}
 #Sea-ice thickness
-'p98.174' = {
+'sit' = {
 	 discipline = 192 ;
 	 parameterCategory = 174 ;
 	 parameterNumber = 98 ;
@@ -15950,7 +15830,7 @@
 	 discipline = 192 ;
 	 parameterCategory = 210 ;
 	 parameterNumber = 1 ;
-	}
+}
 #Sea Salt Aerosol (0.5 - 5 um) Mixing Ratio
 'aermr02' = {
 	 discipline = 192 ;
@@ -16312,7 +16192,7 @@
 	 parameterNumber = 96 ;
 	}
 #Wildfire fraction of area observed
-'bffire' = {
+'offire' = {
 	 discipline = 192 ;
 	 parameterCategory = 210 ;
 	 parameterNumber = 97 ;
@@ -17080,7 +16960,7 @@
 	 parameterNumber = 96 ;
 	}
 #Wildfire fraction of area observed
-'bffirediff' = {
+'offirediff' = {
 	 discipline = 192 ;
 	 parameterCategory = 211 ;
 	 parameterNumber = 97 ;
diff --git a/definitions/grib2/localConcepts/ecmf/name.def b/definitions/grib2/localConcepts/ecmf/name.def
index 1273ca9..f9f1827 100644
--- a/definitions/grib2/localConcepts/ecmf/name.def
+++ b/definitions/grib2/localConcepts/ecmf/name.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Total precipitation of at least 1 mm
 'Total precipitation of at least 1 mm' = {
 	 discipline = 192 ;
@@ -287,8 +287,8 @@
 	 parameterCategory = 128 ;
 	 parameterNumber = 47 ;
 	}
-#Magnitude of surface stress
-'Magnitude of surface stress' = {
+#Magnitude of turbulent surface stress
+'Magnitude of turbulent surface stress' = {
 	 discipline = 192 ;
 	 parameterCategory = 128 ;
 	 parameterNumber = 48 ;
@@ -314,6 +314,7 @@
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 typeOfFirstFixedSurface = 103 ;
 	 typeOfStatisticalProcessing = 2 ;
+	 indicatorOfUnitForTimeRange = 1 ;
 	 lengthOfTimeRange = 24 ;
 	}
 #Minimum temperature at 2 metres in the last 24 hours
@@ -326,6 +327,7 @@
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 typeOfFirstFixedSurface = 103 ;
 	 typeOfStatisticalProcessing = 3 ;
+	 indicatorOfUnitForTimeRange = 1 ;
 	}
 #Montgomery potential
 'Montgomery potential' = {
@@ -693,28 +695,6 @@
 	 parameterCategory = 128 ;
 	 parameterNumber = 120 ;
 	}
-#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 ;
-	 lengthOfTimeRange = 6 ;
-	 typeOfStatisticalProcessing = 2 ;
-	 scaleFactorOfFirstFixedSurface = 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 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
-	 typeOfStatisticalProcessing = 3 ;
-	 lengthOfTimeRange = 6 ;
-	 scaledValueOfFirstFixedSurface = 2 ;
-	 typeOfFirstFixedSurface = 103 ;
-	}
 #10 metre wind gust in the last 6 hours
 '10 metre wind gust in the last 6 hours' = {
 	 discipline = 192 ;
@@ -1291,12 +1271,6 @@
 	 parameterCategory = 128 ;
 	 parameterNumber = 254 ;
 	}
-#Indicates a missing value
-'Indicates a missing value' = {
-	 discipline = 192 ;
-	 parameterCategory = 128 ;
-	 parameterNumber = 255 ;
-	}
 #Stream function difference
 'Stream function difference' = {
 	 discipline = 192 ;
@@ -1513,8 +1487,8 @@
 	 parameterCategory = 200 ;
 	 parameterNumber = 47 ;
 	}
-#Magnitude of surface stress difference
-'Magnitude of surface stress difference' = {
+#Magnitude of turbulent surface stress difference
+'Magnitude of turbulent surface stress difference' = {
 	 discipline = 192 ;
 	 parameterCategory = 200 ;
 	 parameterNumber = 48 ;
@@ -2707,12 +2681,6 @@
 	 parameterCategory = 200 ;
 	 parameterNumber = 255 ;
 	}
-#Maximum of significant wave height index
-'Maximum of significant wave height index' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 216 ;
-	}
 #Reserved
 'Reserved' = {
 	 discipline = 192 ;
@@ -9125,6 +9093,7 @@
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 typeOfStatisticalProcessing = 2 ;
 	 typeOfFirstFixedSurface = 103 ;
+	 indicatorOfUnitForTimeRange = 1 ;
 	}
 #Minimum temperature at 2 metres in the last 3 hours
 'Minimum temperature at 2 metres in the last 3 hours' = {
@@ -9133,6 +9102,7 @@
 	 parameterNumber = 0 ;
 	 typeOfStatisticalProcessing = 3 ;
 	 typeOfFirstFixedSurface = 103 ;
+	 indicatorOfUnitForTimeRange = 1 ;
 	 lengthOfTimeRange = 3 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
@@ -9167,6 +9137,36 @@
 	 parameterCategory = 228 ;
 	 parameterNumber = 43 ;
 	}
+#Height of Zero Deg Wet Bulb Temperature
+'Height of Zero Deg Wet Bulb Temperature' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 47 ;
+	}
+#Height of One Deg Wet Bulb Temperature
+'Height of One Deg Wet Bulb Temperature' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 48 ;
+	}
+#Unbalanced component of specific humidity
+'Unbalanced component of specific humidity' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 54 ;
+	}
+#Unbalanced component of specific cloud liquid water content
+'Unbalanced component of specific cloud liquid water content' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 55 ;
+	}
+#Unbalanced component of specific cloud ice water content
+'Unbalanced component of specific cloud ice water content' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 56 ;
+	}
 #Total column rain water
 'Total column rain water' = {
 	 discipline = 192 ;
@@ -9257,96 +9257,18 @@
 	 parameterCategory = 240 ;
 	 parameterNumber = 10 ;
 	}
-#Cross sectional area of flow in channel
-'Cross sectional area of flow in channel' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 11 ;
-	}
-#Sideflow into river channel
-'Sideflow into river channel' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 12 ;
-	}
-#Discharge
-'Discharge' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 13 ;
-	}
-#River storage of water
-'River storage of water' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 14 ;
-	}
-#Floodplain storage of water
-'Floodplain storage of water' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 15 ;
-	}
-#Flooded area fraction
-'Flooded area fraction' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 16 ;
-	}
-#Days since last rain
-'Days since last rain' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 17 ;
-	}
-#Molnau-Bissell frost index
-'Molnau-Bissell frost index' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 18 ;
-	}
 #Maximum discharge in 15 day forecast
 'Maximum discharge in 15 day forecast' = {
 	 discipline = 192 ;
 	 parameterCategory = 240 ;
 	 parameterNumber = 19 ;
 	}
-#Depth of water on soil surface
-'Depth of water on soil surface' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 20 ;
-	}
-#Upstreams accumulated precipitation
-'Upstreams accumulated precipitation' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 21 ;
-	}
-#Upstreams accumulated snow melt
-'Upstreams accumulated snow melt' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 22 ;
-	}
 #Maximum rain in 24 hours over the 15 day forecast
 'Maximum rain in 24 hours over the 15 day forecast' = {
 	 discipline = 192 ;
 	 parameterCategory = 240 ;
 	 parameterNumber = 23 ;
 	}
-#Groundwater
-'Groundwater' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 25 ;
-	}
-#Snow depth at elevation bands
-'Snow depth at elevation bands' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 26 ;
-	}
 #Accumulated precipitation over the 15 day forecast
 'Accumulated precipitation over the 15 day forecast' = {
 	 discipline = 192 ;
@@ -9569,8 +9491,8 @@
 	 parameterCategory = 129 ;
 	 parameterNumber = 47 ;
 	}
-#Magnitude of surface stress gradient
-'Magnitude of surface stress gradient' = {
+#Magnitude of turbulent surface stress gradient
+'Magnitude of turbulent surface stress gradient' = {
 	 discipline = 192 ;
 	 parameterCategory = 129 ;
 	 parameterNumber = 48 ;
@@ -11169,8 +11091,8 @@
 	 parameterCategory = 131 ;
 	 parameterNumber = 130 ;
 	}
-#2 metre temperature probability
-'2 metre temperature probability' = {
+#Soil temperature level 1 probability
+'Soil temperature level 1 probability' = {
 	 discipline = 192 ;
 	 parameterCategory = 131 ;
 	 parameterNumber = 139 ;
@@ -11181,8 +11103,8 @@
 	 parameterCategory = 131 ;
 	 parameterNumber = 144 ;
 	}
-#Total precipitation probability
-'Total precipitation probability' = {
+#Mean sea level pressure probability
+'Mean sea level pressure probability' = {
 	 discipline = 192 ;
 	 parameterCategory = 131 ;
 	 parameterNumber = 151 ;
@@ -11241,48 +11163,6 @@
 	 parameterCategory = 131 ;
 	 parameterNumber = 255 ;
 	}
-#10 metre wind gust index
-'10 metre wind gust index' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 49 ;
-	}
-#Snowfall index
-'Snowfall index' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 144 ;
-	}
-#10 metre speed index
-'10 metre speed index' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 165 ;
-	}
-#2 metre temperature index
-'2 metre temperature index' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 167 ;
-	}
-#Maximum temperature at 2 metres index
-'Maximum temperature at 2 metres index' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 201 ;
-	}
-#Minimum temperature at 2 metres index
-'Minimum temperature at 2 metres index' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 202 ;
-	}
-#Total precipitation index
-'Total precipitation index' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 228 ;
-	}
 #2m temperature probability less than -10 C
 '2m temperature probability less than -10 C' = {
 	 discipline = 192 ;
@@ -13713,8 +13593,8 @@
 	 parameterCategory = 171 ;
 	 parameterNumber = 47 ;
 	}
-#Magnitude of surface stress anomaly
-'Magnitude of surface stress anomaly' = {
+#Magnitude of turbulent surface stress anomaly
+'Magnitude of turbulent surface stress anomaly' = {
 	 discipline = 192 ;
 	 parameterCategory = 171 ;
 	 parameterNumber = 48 ;
@@ -14619,8 +14499,8 @@
 	 parameterCategory = 172 ;
 	 parameterNumber = 45 ;
 	}
-#Magnitude of surface stress
-'Magnitude of surface stress' = {
+#Magnitude of turbulent surface stress
+'Magnitude of turbulent surface stress' = {
 	 discipline = 192 ;
 	 parameterCategory = 172 ;
 	 parameterNumber = 48 ;
@@ -14835,8 +14715,8 @@
 	 parameterCategory = 173 ;
 	 parameterNumber = 45 ;
 	}
-#Magnitude of surface stress anomaly
-'Magnitude of surface stress anomaly' = {
+#Magnitude of turbulent surface stress anomaly
+'Magnitude of turbulent surface stress anomaly' = {
 	 discipline = 192 ;
 	 parameterCategory = 173 ;
 	 parameterNumber = 48 ;
@@ -15950,7 +15830,7 @@
 	 discipline = 192 ;
 	 parameterCategory = 210 ;
 	 parameterNumber = 1 ;
-	}
+}
 #Sea Salt Aerosol (0.5 - 5 um) Mixing Ratio
 'Sea Salt Aerosol (0.5 - 5 um) Mixing Ratio' = {
 	 discipline = 192 ;
@@ -15974,7 +15854,7 @@
 	 discipline = 192 ;
 	 parameterCategory = 210 ;
 	 parameterNumber = 5 ;
-	}
+	 }
 #Dust Aerosol (0.9 - 20 um) Mixing Ratio
 'Dust Aerosol (0.9 - 20 um) Mixing Ratio' = {
 	 discipline = 192 ;
diff --git a/definitions/grib2/localConcepts/ecmf/paramId.def b/definitions/grib2/localConcepts/ecmf/paramId.def
index 4b6eaad..32c01cb 100644
--- a/definitions/grib2/localConcepts/ecmf/paramId.def
+++ b/definitions/grib2/localConcepts/ecmf/paramId.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Total precipitation of at least 1 mm
 '131060' = {
 	 discipline = 192 ;
@@ -287,7 +287,7 @@
 	 parameterCategory = 128 ;
 	 parameterNumber = 47 ;
 	}
-#Magnitude of surface stress
+#Magnitude of turbulent surface stress
 '48' = {
 	 discipline = 192 ;
 	 parameterCategory = 128 ;
@@ -314,6 +314,7 @@
 	 typeOfStatisticalProcessing = 2 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
 	 typeOfFirstFixedSurface = 103 ;
+	 indicatorOfUnitForTimeRange = 1 ;
 	 lengthOfTimeRange = 24 ;
 	}
 #Minimum temperature at 2 metres in the last 24 hours
@@ -326,6 +327,7 @@
 	 scaledValueOfFirstFixedSurface = 2 ;
 	 typeOfFirstFixedSurface = 103 ;
 	 lengthOfTimeRange = 24 ;
+	 indicatorOfUnitForTimeRange = 1 ;
 	}
 #Montgomery potential
 '53' = {
@@ -693,28 +695,6 @@
 	 parameterCategory = 128 ;
 	 parameterNumber = 120 ;
 	}
-#Maximum temperature at 2 metres in the last 6 hours
-'121' = {
-	 discipline = 0 ;
-	 parameterCategory = 0 ;
-	 parameterNumber = 0 ;
-	 typeOfStatisticalProcessing = 2 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
-	 typeOfFirstFixedSurface = 103 ;
-	 scaledValueOfFirstFixedSurface = 2 ;
-	 lengthOfTimeRange = 6 ;
-	}
-#Minimum temperature at 2 metres in the last 6 hours
-'122' = {
-	 discipline = 0 ;
-	 parameterCategory = 0 ;
-	 parameterNumber = 0 ;
-	 scaledValueOfFirstFixedSurface = 2 ;
-	 lengthOfTimeRange = 6 ;
-	 typeOfStatisticalProcessing = 3 ;
-	 typeOfFirstFixedSurface = 103 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
-	}
 #10 metre wind gust in the last 6 hours
 '123' = {
 	 discipline = 192 ;
@@ -1291,12 +1271,6 @@
 	 parameterCategory = 128 ;
 	 parameterNumber = 254 ;
 	}
-#Indicates a missing value
-'255' = {
-	 discipline = 192 ;
-	 parameterCategory = 128 ;
-	 parameterNumber = 255 ;
-	}
 #Stream function difference
 '200001' = {
 	 discipline = 192 ;
@@ -1513,7 +1487,7 @@
 	 parameterCategory = 200 ;
 	 parameterNumber = 47 ;
 	}
-#Magnitude of surface stress difference
+#Magnitude of turbulent surface stress difference
 '200048' = {
 	 discipline = 192 ;
 	 parameterCategory = 200 ;
@@ -2707,12 +2681,6 @@
 	 parameterCategory = 200 ;
 	 parameterNumber = 255 ;
 	}
-#Maximum of significant wave height index
-'132216' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 216 ;
-	}
 #Reserved
 '151193' = {
 	 discipline = 192 ;
@@ -9122,6 +9090,7 @@
 	 parameterNumber = 0 ;
 	 typeOfFirstFixedSurface = 103 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
+	 indicatorOfUnitForTimeRange = 1 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
 	 typeOfStatisticalProcessing = 2 ;
 	 lengthOfTimeRange = 3 ;
@@ -9133,6 +9102,7 @@
 	 parameterNumber = 0 ;
 	 typeOfFirstFixedSurface = 103 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
+	 indicatorOfUnitForTimeRange = 1 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
 	 typeOfStatisticalProcessing = 3 ;
 	 lengthOfTimeRange = 3 ;
@@ -9167,6 +9137,36 @@
 	 parameterCategory = 228 ;
 	 parameterNumber = 43 ;
 	}
+#Height of Zero Deg Wet Bulb Temperature
+'228047' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 47 ;
+	}
+#Height of One Deg Wet Bulb Temperature
+'228048' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 48 ;
+	}
+#Unbalanced component of specific humidity
+'228054' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 54 ;
+	}
+#Unbalanced component of specific cloud liquid water content
+'228055' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 55 ;
+	}
+#Unbalanced component of specific cloud ice water content
+'228056' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 56 ;
+	}
 #Total column rain water
 '228089' = {
 	 discipline = 192 ;
@@ -9257,96 +9257,18 @@
 	 parameterCategory = 240 ;
 	 parameterNumber = 10 ;
 	}
-#Cross sectional area of flow in channel
-'240011' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 11 ;
-	}
-#Sideflow into river channel
-'240012' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 12 ;
-	}
-#Discharge
-'240013' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 13 ;
-	}
-#River storage of water
-'240014' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 14 ;
-	}
-#Floodplain storage of water
-'240015' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 15 ;
-	}
-#Flooded area fraction
-'240016' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 16 ;
-	}
-#Days since last rain
-'240017' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 17 ;
-	}
-#Molnau-Bissell frost index
-'240018' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 18 ;
-	}
 #Maximum discharge in 15 day forecast
 '240019' = {
 	 discipline = 192 ;
 	 parameterCategory = 240 ;
 	 parameterNumber = 19 ;
 	}
-#Depth of water on soil surface
-'240020' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 20 ;
-	}
-#Upstreams accumulated precipitation
-'240021' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 21 ;
-	}
-#Upstreams accumulated snow melt
-'240022' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 22 ;
-	}
 #Maximum rain in 24 hours over the 15 day forecast
 '240023' = {
 	 discipline = 192 ;
 	 parameterCategory = 240 ;
 	 parameterNumber = 23 ;
 	}
-#Groundwater
-'240025' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 25 ;
-	}
-#Snow depth at elevation bands
-'240026' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 26 ;
-	}
 #Accumulated precipitation over the 15 day forecast
 '240027' = {
 	 discipline = 192 ;
@@ -9569,7 +9491,7 @@
 	 parameterCategory = 129 ;
 	 parameterNumber = 47 ;
 	}
-#Magnitude of surface stress gradient
+#Magnitude of turbulent surface stress gradient
 '129048' = {
 	 discipline = 192 ;
 	 parameterCategory = 129 ;
@@ -11169,7 +11091,7 @@
 	 parameterCategory = 131 ;
 	 parameterNumber = 130 ;
 	}
-#2 metre temperature probability
+#Soil temperature level 1 probability
 '131139' = {
 	 discipline = 192 ;
 	 parameterCategory = 131 ;
@@ -11181,7 +11103,7 @@
 	 parameterCategory = 131 ;
 	 parameterNumber = 144 ;
 	}
-#Total precipitation probability
+#Mean sea level pressure probability
 '131151' = {
 	 discipline = 192 ;
 	 parameterCategory = 131 ;
@@ -11241,48 +11163,6 @@
 	 parameterCategory = 131 ;
 	 parameterNumber = 255 ;
 	}
-#10 metre wind gust index
-'132049' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 49 ;
-	}
-#Snowfall index
-'132144' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 144 ;
-	}
-#10 metre speed index
-'132165' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 165 ;
-	}
-#2 metre temperature index
-'132167' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 167 ;
-	}
-#Maximum temperature at 2 metres index
-'132201' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 201 ;
-	}
-#Minimum temperature at 2 metres index
-'132202' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 202 ;
-	}
-#Total precipitation index
-'132228' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 228 ;
-	}
 #2m temperature probability less than -10 C
 '133001' = {
 	 discipline = 192 ;
@@ -13713,7 +13593,7 @@
 	 parameterCategory = 171 ;
 	 parameterNumber = 47 ;
 	}
-#Magnitude of surface stress anomaly
+#Magnitude of turbulent surface stress anomaly
 '171048' = {
 	 discipline = 192 ;
 	 parameterCategory = 171 ;
@@ -14619,7 +14499,7 @@
 	 parameterCategory = 172 ;
 	 parameterNumber = 45 ;
 	}
-#Magnitude of surface stress
+#Magnitude of turbulent surface stress
 '172048' = {
 	 discipline = 192 ;
 	 parameterCategory = 172 ;
@@ -14835,7 +14715,7 @@
 	 parameterCategory = 173 ;
 	 parameterNumber = 45 ;
 	}
-#Magnitude of surface stress anomaly
+#Magnitude of turbulent surface stress anomaly
 '173048' = {
 	 discipline = 192 ;
 	 parameterCategory = 173 ;
diff --git a/definitions/grib2/localConcepts/ecmf/shortName.def b/definitions/grib2/localConcepts/ecmf/shortName.def
index 9744021..eed93cf 100644
--- a/definitions/grib2/localConcepts/ecmf/shortName.def
+++ b/definitions/grib2/localConcepts/ecmf/shortName.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Total precipitation of at least 1 mm
 'tpg1' = {
 	 discipline = 192 ;
@@ -287,7 +287,7 @@
 	 parameterCategory = 128 ;
 	 parameterNumber = 47 ;
 	}
-#Magnitude of surface stress
+#Magnitude of turbulent surface stress
 'magss' = {
 	 discipline = 192 ;
 	 parameterCategory = 128 ;
@@ -315,6 +315,7 @@
 	 lengthOfTimeRange = 24 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 typeOfStatisticalProcessing = 2 ;
+	 indicatorOfUnitForTimeRange = 1 ;
 	}
 #Minimum temperature at 2 metres in the last 24 hours
 'mn2t24' = {
@@ -324,6 +325,7 @@
 	 lengthOfTimeRange = 24 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 typeOfStatisticalProcessing = 3 ;
+	 indicatorOfUnitForTimeRange = 1 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
 	 typeOfFirstFixedSurface = 103 ;
 	}
@@ -693,28 +695,6 @@
 	 parameterCategory = 128 ;
 	 parameterNumber = 120 ;
 	}
-#Maximum temperature at 2 metres in the last 6 hours
-'mx2t6' = {
-	 discipline = 0 ;
-	 parameterCategory = 0 ;
-	 parameterNumber = 0 ;
-	 typeOfFirstFixedSurface = 103 ;
-	 lengthOfTimeRange = 6 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
-	 scaledValueOfFirstFixedSurface = 2 ;
-	 typeOfStatisticalProcessing = 2 ;
-	}
-#Minimum temperature at 2 metres in the last 6 hours
-'mn2t6' = {
-	 discipline = 0 ;
-	 parameterCategory = 0 ;
-	 parameterNumber = 0 ;
-	 typeOfStatisticalProcessing = 3 ;
-	 typeOfFirstFixedSurface = 103 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
-	 lengthOfTimeRange = 6 ;
-	 scaledValueOfFirstFixedSurface = 2 ;
-	}
 #10 metre wind gust in the last 6 hours
 '10fg6' = {
 	 discipline = 192 ;
@@ -1291,12 +1271,6 @@
 	 parameterCategory = 128 ;
 	 parameterNumber = 254 ;
 	}
-#Indicates a missing value
-'~' = {
-	 discipline = 192 ;
-	 parameterCategory = 128 ;
-	 parameterNumber = 255 ;
-	}
 #Stream function difference
 'strfdiff' = {
 	 discipline = 192 ;
@@ -1513,7 +1487,7 @@
 	 parameterCategory = 200 ;
 	 parameterNumber = 47 ;
 	}
-#Magnitude of surface stress difference
+#Magnitude of turbulent surface stress difference
 'magssdiff' = {
 	 discipline = 192 ;
 	 parameterCategory = 200 ;
@@ -2707,12 +2681,6 @@
 	 parameterCategory = 200 ;
 	 parameterNumber = 255 ;
 	}
-#Maximum of significant wave height index
-'maxswhi' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 216 ;
-	}
 #Reserved
 '~' = {
 	 discipline = 192 ;
@@ -9122,6 +9090,7 @@
 	 parameterNumber = 0 ;
 	 typeOfStatisticalProcessing = 2 ;
 	 lengthOfTimeRange = 3 ;
+	 indicatorOfUnitForTimeRange = 1 ;
 	 typeOfFirstFixedSurface = 103 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
@@ -9131,6 +9100,7 @@
 	 discipline = 0 ;
 	 parameterCategory = 0 ;
 	 parameterNumber = 0 ;
+	 indicatorOfUnitForTimeRange = 1 ;
 	 typeOfFirstFixedSurface = 103 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
@@ -9167,6 +9137,36 @@
 	 parameterCategory = 228 ;
 	 parameterNumber = 43 ;
 	}
+#Height of Zero Deg Wet Bulb Temperature
+'hwbt0' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 47 ;
+	}
+#Height of One Deg Wet Bulb Temperature
+'hwbt1' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 48 ;
+	}
+#Unbalanced component of specific humidity
+'ucq' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 54 ;
+	}
+#Unbalanced component of specific cloud liquid water content
+'ucclwc' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 55 ;
+	}
+#Unbalanced component of specific cloud ice water content
+'ucciwc' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 56 ;
+	}
 #Total column rain water
 'tcrw' = {
 	 discipline = 192 ;
@@ -9257,96 +9257,18 @@
 	 parameterCategory = 240 ;
 	 parameterNumber = 10 ;
 	}
-#Cross sectional area of flow in channel
-'chcross' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 11 ;
-	}
-#Sideflow into river channel
-'chside' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 12 ;
-	}
-#Discharge
-'dis' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 13 ;
-	}
-#River storage of water
-'rivsto' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 14 ;
-	}
-#Floodplain storage of water
-'fldsto' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 15 ;
-	}
-#Flooded area fraction
-'fldfrc' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 16 ;
-	}
-#Days since last rain
-'dslr' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 17 ;
-	}
-#Molnau-Bissell frost index
-'frost' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 18 ;
-	}
 #Maximum discharge in 15 day forecast
 'mxcq15d' = {
 	 discipline = 192 ;
 	 parameterCategory = 240 ;
 	 parameterNumber = 19 ;
 	}
-#Depth of water on soil surface
-'woss' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 20 ;
-	}
-#Upstreams accumulated precipitation
-'tpups' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 21 ;
-	}
-#Upstreams accumulated snow melt
-'smups' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 22 ;
-	}
 #Maximum rain in 24 hours over the 15 day forecast
 'mxtp24h15d' = {
 	 discipline = 192 ;
 	 parameterCategory = 240 ;
 	 parameterNumber = 23 ;
 	}
-#Groundwater
-'gz' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 25 ;
-	}
-#Snow depth at elevation bands
-'sd_elev' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 26 ;
-	}
 #Accumulated precipitation over the 15 day forecast
 'acctp15d' = {
 	 discipline = 192 ;
@@ -9569,7 +9491,7 @@
 	 parameterCategory = 129 ;
 	 parameterNumber = 47 ;
 	}
-#Magnitude of surface stress gradient
+#Magnitude of turbulent surface stress gradient
 'magssgrd' = {
 	 discipline = 192 ;
 	 parameterCategory = 129 ;
@@ -11169,8 +11091,8 @@
 	 parameterCategory = 131 ;
 	 parameterNumber = 130 ;
 	}
-#2 metre temperature probability
-'2tp' = {
+#Soil temperature level 1 probability
+'stl1p' = {
 	 discipline = 192 ;
 	 parameterCategory = 131 ;
 	 parameterNumber = 139 ;
@@ -11181,8 +11103,8 @@
 	 parameterCategory = 131 ;
 	 parameterNumber = 144 ;
 	}
-#Total precipitation probability
-'tpp' = {
+#Mean sea level pressure probability
+'mslpp' = {
 	 discipline = 192 ;
 	 parameterCategory = 131 ;
 	 parameterNumber = 151 ;
@@ -11241,48 +11163,6 @@
 	 parameterCategory = 131 ;
 	 parameterNumber = 255 ;
 	}
-#10 metre wind gust index
-'10fgi' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 49 ;
-	}
-#Snowfall index
-'sfi' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 144 ;
-	}
-#10 metre speed index
-'10wsi' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 165 ;
-	}
-#2 metre temperature index
-'2ti' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 167 ;
-	}
-#Maximum temperature at 2 metres index
-'mx2ti' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 201 ;
-	}
-#Minimum temperature at 2 metres index
-'mn2ti' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 202 ;
-	}
-#Total precipitation index
-'tpi' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 228 ;
-	}
 #2m temperature probability less than -10 C
 '2tplm10' = {
 	 discipline = 192 ;
@@ -13713,7 +13593,7 @@
 	 parameterCategory = 171 ;
 	 parameterNumber = 47 ;
 	}
-#Magnitude of surface stress anomaly
+#Magnitude of turbulent surface stress anomaly
 'magssa' = {
 	 discipline = 192 ;
 	 parameterCategory = 171 ;
@@ -14619,7 +14499,7 @@
 	 parameterCategory = 172 ;
 	 parameterNumber = 45 ;
 	}
-#Magnitude of surface stress
+#Magnitude of turbulent surface stress
 '~' = {
 	 discipline = 192 ;
 	 parameterCategory = 172 ;
@@ -14835,7 +14715,7 @@
 	 parameterCategory = 173 ;
 	 parameterNumber = 45 ;
 	}
-#Magnitude of surface stress anomaly
+#Magnitude of turbulent surface stress anomaly
 '~' = {
 	 discipline = 192 ;
 	 parameterCategory = 173 ;
diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def
index 5f9ffc7..a1f0d63 100644
--- a/definitions/grib2/localConcepts/ecmf/units.def
+++ b/definitions/grib2/localConcepts/ecmf/units.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Total precipitation of at least 1 mm
 '%' = {
 	 discipline = 192 ;
@@ -287,7 +287,7 @@
 	 parameterCategory = 128 ;
 	 parameterNumber = 47 ;
 	}
-#Magnitude of surface stress
+#Magnitude of turbulent surface stress
 'N m**-2 s' = {
 	 discipline = 192 ;
 	 parameterCategory = 128 ;
@@ -314,6 +314,7 @@
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 typeOfFirstFixedSurface = 103 ;
 	 typeOfStatisticalProcessing = 2 ;
+	 indicatorOfUnitForTimeRange = 1 ;
 	 lengthOfTimeRange = 24 ;
 	}
 #Minimum temperature at 2 metres in the last 24 hours
@@ -326,6 +327,7 @@
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 typeOfFirstFixedSurface = 103 ;
 	 typeOfStatisticalProcessing = 3 ;
+	 indicatorOfUnitForTimeRange = 1 ;
 	}
 #Montgomery potential
 'm**2 s**-2' = {
@@ -693,28 +695,6 @@
 	 parameterCategory = 128 ;
 	 parameterNumber = 120 ;
 	}
-#Maximum temperature at 2 metres in the last 6 hours
-'K' = {
-	 discipline = 0 ;
-	 parameterCategory = 0 ;
-	 parameterNumber = 0 ;
-	 typeOfFirstFixedSurface = 103 ;
-	 scaledValueOfFirstFixedSurface = 2 ;
-	 lengthOfTimeRange = 6 ;
-	 typeOfStatisticalProcessing = 2 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
-	}
-#Minimum temperature at 2 metres in the last 6 hours
-'K' = {
-	 discipline = 0 ;
-	 parameterCategory = 0 ;
-	 parameterNumber = 0 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
-	 typeOfStatisticalProcessing = 3 ;
-	 lengthOfTimeRange = 6 ;
-	 scaledValueOfFirstFixedSurface = 2 ;
-	 typeOfFirstFixedSurface = 103 ;
-	}
 #10 metre wind gust in the last 6 hours
 'm s**-1' = {
 	 discipline = 192 ;
@@ -1291,12 +1271,6 @@
 	 parameterCategory = 128 ;
 	 parameterNumber = 254 ;
 	}
-#Indicates a missing value
-'~' = {
-	 discipline = 192 ;
-	 parameterCategory = 128 ;
-	 parameterNumber = 255 ;
-	}
 #Stream function difference
 'm**2 s**-1' = {
 	 discipline = 192 ;
@@ -1513,7 +1487,7 @@
 	 parameterCategory = 200 ;
 	 parameterNumber = 47 ;
 	}
-#Magnitude of surface stress difference
+#Magnitude of turbulent surface stress difference
 'N m**-2 s' = {
 	 discipline = 192 ;
 	 parameterCategory = 200 ;
@@ -2707,12 +2681,6 @@
 	 parameterCategory = 200 ;
 	 parameterNumber = 255 ;
 	}
-#Maximum of significant wave height index
-'(-1 to 1)' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 216 ;
-	}
 #Reserved
 '~' = {
 	 discipline = 192 ;
@@ -9123,6 +9091,7 @@
 	 lengthOfTimeRange = 3 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
+	 indicatorOfUnitForTimeRange = 1 ;
 	 typeOfStatisticalProcessing = 2 ;
 	 typeOfFirstFixedSurface = 103 ;
 	}
@@ -9133,6 +9102,7 @@
 	 parameterNumber = 0 ;
 	 typeOfStatisticalProcessing = 3 ;
 	 typeOfFirstFixedSurface = 103 ;
+	 indicatorOfUnitForTimeRange = 1 ;
 	 lengthOfTimeRange = 3 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
@@ -9167,6 +9137,36 @@
 	 parameterCategory = 228 ;
 	 parameterNumber = 43 ;
 	}
+#Height of Zero Deg Wet Bulb Temperature
+'m' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 47 ;
+	}
+#Height of One Deg Wet Bulb Temperature
+'m' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 48 ;
+	}
+#Unbalanced component of specific humidity
+'kg kg**-1' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 54 ;
+	}
+#Unbalanced component of specific cloud liquid water content
+'kg kg**-1' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 55 ;
+	}
+#Unbalanced component of specific cloud ice water content
+'kg kg**-1' = {
+	 discipline = 192 ;
+	 parameterCategory = 228 ;
+	 parameterNumber = 56 ;
+	}
 #Total column rain water
 'kg m**-2' = {
 	 discipline = 192 ;
@@ -9257,96 +9257,18 @@
 	 parameterCategory = 240 ;
 	 parameterNumber = 10 ;
 	}
-#Cross sectional area of flow in channel
-'m**2' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 11 ;
-	}
-#Sideflow into river channel
-'m**3 s**-1 m**-1' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 12 ;
-	}
-#Discharge
-'m**3 s**-1' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 13 ;
-	}
-#River storage of water
-'m**3' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 14 ;
-	}
-#Floodplain storage of water
-'m**3' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 15 ;
-	}
-#Flooded area fraction
-'(0 - 1)' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 16 ;
-	}
-#Days since last rain
-'Integer' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 17 ;
-	}
-#Molnau-Bissell frost index
-'degreeperday' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 18 ;
-	}
 #Maximum discharge in 15 day forecast
 'm**3 s**-1' = {
 	 discipline = 192 ;
 	 parameterCategory = 240 ;
 	 parameterNumber = 19 ;
 	}
-#Depth of water on soil surface
-'kg m**-2' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 20 ;
-	}
-#Upstreams accumulated precipitation
-'m' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 21 ;
-	}
-#Upstreams accumulated snow melt
-'m' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 22 ;
-	}
 #Maximum rain in 24 hours over the 15 day forecast
 'm' = {
 	 discipline = 192 ;
 	 parameterCategory = 240 ;
 	 parameterNumber = 23 ;
 	}
-#Groundwater
-'kg m**-2' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 25 ;
-	}
-#Snow depth at elevation bands
-'kg m**-2' = {
-	 discipline = 192 ;
-	 parameterCategory = 240 ;
-	 parameterNumber = 26 ;
-	}
 #Accumulated precipitation over the 15 day forecast
 'm' = {
 	 discipline = 192 ;
@@ -9569,7 +9491,7 @@
 	 parameterCategory = 129 ;
 	 parameterNumber = 47 ;
 	}
-#Magnitude of surface stress gradient
+#Magnitude of turbulent surface stress gradient
 'N m**-2 s' = {
 	 discipline = 192 ;
 	 parameterCategory = 129 ;
@@ -11169,7 +11091,7 @@
 	 parameterCategory = 131 ;
 	 parameterNumber = 130 ;
 	}
-#2 metre temperature probability
+#Soil temperature level 1 probability
 '%' = {
 	 discipline = 192 ;
 	 parameterCategory = 131 ;
@@ -11181,7 +11103,7 @@
 	 parameterCategory = 131 ;
 	 parameterNumber = 144 ;
 	}
-#Total precipitation probability
+#Mean sea level pressure probability
 '%' = {
 	 discipline = 192 ;
 	 parameterCategory = 131 ;
@@ -11241,48 +11163,6 @@
 	 parameterCategory = 131 ;
 	 parameterNumber = 255 ;
 	}
-#10 metre wind gust index
-'(-1 to 1)' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 49 ;
-	}
-#Snowfall index
-'(-1 to 1)' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 144 ;
-	}
-#10 metre speed index
-'(-1 to 1)' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 165 ;
-	}
-#2 metre temperature index
-'(-1 to 1)' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 167 ;
-	}
-#Maximum temperature at 2 metres index
-'(-1 to 1)' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 201 ;
-	}
-#Minimum temperature at 2 metres index
-'(-1 to 1)' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 202 ;
-	}
-#Total precipitation index
-'(-1 to 1)' = {
-	 discipline = 192 ;
-	 parameterCategory = 132 ;
-	 parameterNumber = 228 ;
-	}
 #2m temperature probability less than -10 C
 '%' = {
 	 discipline = 192 ;
@@ -11872,7 +11752,7 @@
 	 parameterNumber = 221 ;
 	}
 #Wave spectral directional width
-'~' = {
+'dimensionless' = {
 	 discipline = 192 ;
 	 parameterCategory = 140 ;
 	 parameterNumber = 222 ;
@@ -11890,7 +11770,7 @@
 	 parameterNumber = 224 ;
 	}
 #Wave spectral directional width for wind waves
-'~' = {
+'dimensionless' = {
 	 discipline = 192 ;
 	 parameterCategory = 140 ;
 	 parameterNumber = 225 ;
@@ -11908,7 +11788,7 @@
 	 parameterNumber = 227 ;
 	}
 #Wave spectral directional width for swell
-'~' = {
+'dimensionless' = {
 	 discipline = 192 ;
 	 parameterCategory = 140 ;
 	 parameterNumber = 228 ;
@@ -11920,7 +11800,7 @@
 	 parameterNumber = 231 ;
 	}
 #Coefficient of drag with waves
-'~' = {
+'dimensionless' = {
 	 discipline = 192 ;
 	 parameterCategory = 140 ;
 	 parameterNumber = 233 ;
@@ -12034,19 +11914,19 @@
 	 parameterNumber = 251 ;
 	}
 #Wave spectral kurtosis
-'~' = {
+'dimensionless' = {
 	 discipline = 192 ;
 	 parameterCategory = 140 ;
 	 parameterNumber = 252 ;
 	}
 #Benjamin-Feir index
-'~' = {
+'dimensionless' = {
 	 discipline = 192 ;
 	 parameterCategory = 140 ;
 	 parameterNumber = 253 ;
 	}
 #Wave spectral peakedness
-'s**-1' = {
+'dimensionless' = {
 	 discipline = 192 ;
 	 parameterCategory = 140 ;
 	 parameterNumber = 254 ;
@@ -13713,7 +13593,7 @@
 	 parameterCategory = 171 ;
 	 parameterNumber = 47 ;
 	}
-#Magnitude of surface stress anomaly
+#Magnitude of turbulent surface stress anomaly
 'N m**-2 s' = {
 	 discipline = 192 ;
 	 parameterCategory = 171 ;
@@ -14619,7 +14499,7 @@
 	 parameterCategory = 172 ;
 	 parameterNumber = 45 ;
 	}
-#Magnitude of surface stress
+#Magnitude of turbulent surface stress
 'N m**-2' = {
 	 discipline = 192 ;
 	 parameterCategory = 172 ;
@@ -14650,25 +14530,25 @@
 	 parameterNumber = 144 ;
 	}
 #Boundary layer dissipation
-'J m**-2' = {
+'W m**-2' = {
 	 discipline = 192 ;
 	 parameterCategory = 172 ;
 	 parameterNumber = 145 ;
 	}
 #Surface sensible heat flux
-'J m**-2' = {
+'W m**-2' = {
 	 discipline = 192 ;
 	 parameterCategory = 172 ;
 	 parameterNumber = 146 ;
 	}
 #Surface latent heat flux
-'J m**-2' = {
+'W m**-2' = {
 	 discipline = 192 ;
 	 parameterCategory = 172 ;
 	 parameterNumber = 147 ;
 	}
 #Surface net radiation
-'J m**-2' = {
+'W m**-2' = {
 	 discipline = 192 ;
 	 parameterCategory = 172 ;
 	 parameterNumber = 149 ;
@@ -14686,37 +14566,37 @@
 	 parameterNumber = 154 ;
 	}
 #Surface solar radiation downwards
-'J m**-2' = {
+'W m**-2' = {
 	 discipline = 192 ;
 	 parameterCategory = 172 ;
 	 parameterNumber = 169 ;
 	}
 #Surface thermal radiation downwards
-'J m**-2' = {
+'W m**-2' = {
 	 discipline = 192 ;
 	 parameterCategory = 172 ;
 	 parameterNumber = 175 ;
 	}
 #Surface solar radiation
-'J m**-2' = {
+'W m**-2' = {
 	 discipline = 192 ;
 	 parameterCategory = 172 ;
 	 parameterNumber = 176 ;
 	}
 #Surface thermal radiation
-'J m**-2' = {
+'W m**-2' = {
 	 discipline = 192 ;
 	 parameterCategory = 172 ;
 	 parameterNumber = 177 ;
 	}
 #Top solar radiation
-'J m**-2' = {
+'W m**-2' = {
 	 discipline = 192 ;
 	 parameterCategory = 172 ;
 	 parameterNumber = 178 ;
 	}
 #Top thermal radiation
-'J m**-2' = {
+'W m**-2' = {
 	 discipline = 192 ;
 	 parameterCategory = 172 ;
 	 parameterNumber = 179 ;
@@ -14758,7 +14638,7 @@
 	 parameterNumber = 196 ;
 	}
 #Gravity wave dissipation
-'J m**-2' = {
+'W m**-2' = {
 	 discipline = 192 ;
 	 parameterCategory = 172 ;
 	 parameterNumber = 197 ;
@@ -14770,31 +14650,31 @@
 	 parameterNumber = 205 ;
 	}
 #Top net solar radiation, clear sky
-'J m**-2' = {
+'W m**-2' = {
 	 discipline = 192 ;
 	 parameterCategory = 172 ;
 	 parameterNumber = 208 ;
 	}
 #Top net thermal radiation, clear sky
-'J m**-2' = {
+'W m**-2' = {
 	 discipline = 192 ;
 	 parameterCategory = 172 ;
 	 parameterNumber = 209 ;
 	}
 #Surface net solar radiation, clear sky
-'J m**-2' = {
+'W m**-2' = {
 	 discipline = 192 ;
 	 parameterCategory = 172 ;
 	 parameterNumber = 210 ;
 	}
 #Surface net thermal radiation, clear sky
-'J m**-2' = {
+'W m**-2' = {
 	 discipline = 192 ;
 	 parameterCategory = 172 ;
 	 parameterNumber = 211 ;
 	}
 #Solar insolation
-'W m**-2 s**-1' = {
+'W m**-2' = {
 	 discipline = 192 ;
 	 parameterCategory = 172 ;
 	 parameterNumber = 212 ;
@@ -14835,7 +14715,7 @@
 	 parameterCategory = 173 ;
 	 parameterNumber = 45 ;
 	}
-#Magnitude of surface stress anomaly
+#Magnitude of turbulent surface stress anomaly
 'N m**-2' = {
 	 discipline = 192 ;
 	 parameterCategory = 173 ;
diff --git a/definitions/grib2/localConcepts/edzw/modelName.def b/definitions/grib2/localConcepts/edzw/modelName.def
new file mode 100644
index 0000000..5af6fb6
--- /dev/null
+++ b/definitions/grib2/localConcepts/edzw/modelName.def
@@ -0,0 +1,107 @@
+# modelName: Contribution from Daniel Lee @ DWD
+
+# definitions for Offenbach
+'cosmo_eu' = {
+    generatingProcessIdentifier=131;
+}
+'cosmo_eu' = {
+    generatingProcessIdentifier=132;
+}
+'cosmo_eu' = {
+    generatingProcessIdentifier=134;
+}
+'cosmo_eu' = {
+    generatingProcessIdentifier=135;
+}
+'cosmo_de' = {
+    generatingProcessIdentifier=137;
+}
+'cosmo_de' = {
+    generatingProcessIdentifier=138;
+}
+'cosmo_de-eps' = {
+    generatingProcessIdentifier=137;
+    typeOfEnsembleForecast=192;
+}
+'cosmo_de-eps' = {
+    generatingProcessIdentifier=138;
+    typeOfEnsembleForecast=192;
+}
+
+#DWD model names for ICON
+'icogl' = {
+    gridDefinitionTemplateNumber=101;
+    generatingProcessIdentifier=1;
+}
+'icogl130' = {
+    numberOfGridUsed=26;
+    generatingProcessIdentifier=1;
+}
+'icogl130l90' = {
+    numberOfGridUsed=26;
+    nlev=91;
+    generatingProcessIdentifier=1;
+}
+'icogl130p' = {
+    numberOfGridUsed=26;
+    typeOfFirstFixedSurface=100;
+    generatingProcessIdentifier=1;
+}
+'icoeu'= {
+    gridDefinitionTemplateNumber=101;
+    generatingProcessIdentifier=2;
+}
+'icoeu065' = {
+    numberOfGridUsed=27;
+    generatingProcessIdentifier=2;
+}
+'icoeu065l60' = {
+    numberOfGridUsed=27;
+    nlev=61;
+    generatingProcessIdentifier=2;
+}
+'icreu' = {
+    gridDefinitionTemplateNumber=0;
+    generatingProcessIdentifier=2;
+}
+'icreu_0.625' = {
+    gridDefinitionTemplateNumber=0;
+    Dx=62500;
+    Dy=62500;
+    generatingProcessIdentifier=2;
+}
+'icreu_0.625l60' = {
+    gridDefinitionTemplateNumber=0;
+    Dx=62500;
+    Dy=62500;
+    nlev=61;
+    generatingProcessIdentifier=2;
+}
+'icreu_0.625p' = {
+    gridDefinitionTemplateNumber=0;
+    Dx=62500;
+    Dy=62500;
+    typeOfFirstFixedSurface=100;
+    generatingProcessIdentifier=2;
+}
+'icreu_0.625z' = {
+    gridDefinitionTemplateNumber=0;
+    Dx=62500;
+    Dy=62500;
+    typeOfFirstFixedSurface=102;
+    generatingProcessIdentifier=2;
+}
+'icrde' = {
+    gridDefinitionTemplateNumber=0;
+    generatingProcessIdentifier=3;
+}
+'icrgl' = {
+    gridDefinitionTemplateNumber=0;
+    generatingProcessIdentifier=1;
+}
+'icrgl_0.25' = {
+    gridDefinitionTemplateNumber=0;
+    Dx=250000;
+    Dy=250000;
+    generatingProcessIdentifier=1;
+}
diff --git a/definitions/grib2/localConcepts/edzw/name.def b/definitions/grib2/localConcepts/edzw/name.def
index bb60b92..6118b4c 100755
--- a/definitions/grib2/localConcepts/edzw/name.def
+++ b/definitions/grib2/localConcepts/edzw/name.def
@@ -1,4 +1,4 @@
-# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2015-02-25 15:30
+# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2016-02-03 10:04
 #paramId: 500000
 #Pressure (S) (not reduced)
 'Pressure (S) (not reduced)' = {
@@ -3753,10 +3753,8 @@
 	 parameterCategory = 6 ;
 	 parameterNumber = 22 ;
 	 typeOfSecondFixedSurface = 100 ;
-	 scaleFactorOfSecondFixedSurface = 0 ;
 	 scaledValueOfSecondFixedSurface = 80000 ;
 	 typeOfFirstFixedSurface = 100 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 40000 ;
 	}
 
@@ -3768,7 +3766,6 @@
 	 parameterNumber = 22 ;
 	 typeOfSecondFixedSurface = 1 ;
 	 typeOfFirstFixedSurface = 100 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 80000 ;
 	}
 
@@ -4006,14 +4003,6 @@
 	 parameterNumber = 36 ;
 	}
 
-#paramId: 502726
-#Horizontal moisture divergence
-'Horizontal moisture divergence' = {
-	 discipline = 0 ;
-	 parameterCategory = 1 ;
-	 parameterNumber = 38 ;
-	}
-
 #paramId: 502727
 #Percent frozen precipitation
 'Percent frozen precipitation' = {
@@ -5914,6 +5903,237 @@
 	 typeOfFirstFixedSurface = 1 ;
 	}
 
+#paramId: 503145
+#2m absolute humidity
+'2m absolute humidity' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 18 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503154
+#Bulk Richardson number
+'Bulk Richardson number' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 16 ;
+	}
+
+#paramId: 503155
+#Cape of mixed (mean) layer parcel, ascent up to 3 km
+'Cape of mixed (mean) layer parcel, ascent up to 3 km' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 6 ;
+	 typeOfSecondFixedSurface = 192 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 3000 ;
+	}
+
+#paramId: 503166
+#Geostrophic wind direction
+'Geostrophic wind direction' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 43 ;
+	}
+
+#paramId: 503169
+#Dewpoint depression
+'Dewpoint depression' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 7 ;
+	}
+
+#paramId: 503170
+#2m dewpoint depression
+'2m dewpoint depression' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 7 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503173
+#Geostrophic wind speed
+'Geostrophic wind speed' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 44 ;
+	}
+
+#paramId: 503174
+#Downward short wave radiation flux at surface (time average)
+'Downward short wave radiation flux at surface (time average)' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503186
+#Height of lifting condensation level of mixed (mean) layer parcel
+'Height of lifting condensation level of mixed (mean) layer parcel' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 6 ;
+	 typeOfSecondFixedSurface = 192 ;
+	 typeOfFirstFixedSurface = 5 ;
+	}
+
+#paramId: 503192
+#Humidity mixing ratio
+'Humidity mixing ratio' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 2 ;
+	}
+
+#paramId: 503193
+#2m Humidity mixing ratio
+'2m Humidity mixing ratio' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 2 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503195
+#relative humidity over ice
+'relative humidity over ice' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 94 ;
+	}
+
+#paramId: 503196
+#Gradient Richardson number
+'Gradient Richardson number' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 17 ;
+	}
+
+#paramId: 503197
+#Showalter index
+'Showalter index' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 13 ;
+	}
+
+#paramId: 503204
+#Surface lifted index
+'Surface lifted index' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 10 ;
+	 typeOfFirstFixedSurface = 10 ;
+	}
+
+#paramId: 503210
+#2m potential temperature
+'2m potential temperature' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 2 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503211
+#Dew point temperature
+'Dew point temperature' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 6 ;
+	}
+
+#paramId: 503212
+#2m equivalentTemperature
+'2m equivalentTemperature' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 3 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503213
+#2m virtual potential temperature
+'2m virtual potential temperature' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 15 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503214
+#Temperature at cloud top
+'Temperature at cloud top' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 0 ;
+	 typeOfFirstFixedSurface = 3 ;
+	}
+
+#paramId: 503215
+#Wet bulb temperature
+'Wet bulb temperature' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 27 ;
+	}
+
+#paramId: 503216
+#2m wet bulb temperature
+'2m wet bulb temperature' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 27 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503219
+#Universal thermal climate index with direct incident short wave radiation
+'Universal thermal climate index with direct incident short wave radiation' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 21 ;
+	}
+
+#paramId: 503220
+#u-component of geostrophic wind
+'u-component of geostrophic wind' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 41 ;
+	}
+
+#paramId: 503221
+#v-component of geostrophic wind
+'v-component of geostrophic wind' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 42 ;
+	}
+
 #paramId: 500092
 #Solar radiation heating rate
 'Solar radiation heating rate' = {
@@ -6486,24 +6706,24 @@
 	}
 
 #paramId: 500293
-#geostrophische  Vorticityadvektion
-'geostrophische  Vorticityadvektion' = {
+#geostrophische Vorticityadvektion
+'geostrophische Vorticityadvektion' = {
 	 discipline = 0 ;
 	 parameterCategory = 193 ;
 	 parameterNumber = 0 ;
 	}
 
 #paramId: 500294
-#Geostrophische Schichtdickenadvektion
-'Geostrophische Schichtdickenadvektion' = {
+#Geostrophic thickness advection
+'Geostrophic thickness advection' = {
 	 discipline = 0 ;
 	 parameterCategory = 193 ;
 	 parameterNumber = 1 ;
 	}
 
 #paramId: 500295
-#Schichtdicken-Advektion
-'Schichtdicken-Advektion' = {
+#Schichtdickenadvektion
+'Schichtdickenadvektion' = {
 	 discipline = 0 ;
 	 parameterCategory = 193 ;
 	 parameterNumber = 2 ;
@@ -9777,8 +9997,8 @@
 	}
 
 #paramId: 502352
-#Eddy Dissipation Rate Total Col-Max. FIR (< FL245)
-'Eddy Dissipation Rate Total Col-Max. FIR (< FL245)' = {
+#Eddy Dissipation Rate Total Col-Max. Upper FIR (< FL245)
+'Eddy Dissipation Rate Total Col-Max. Upper FIR (< FL245)' = {
 	 discipline = 0 ;
 	 parameterCategory = 19 ;
 	 parameterNumber = 224 ;
@@ -9990,7 +10210,7 @@
 'Specific number concentration of rain' = {
 	 discipline = 0 ;
 	 parameterCategory = 1 ;
-	 parameterNumber = 216 ;
+	 parameterNumber = 228 ;
 	}
 
 #paramId: 503116
@@ -9998,7 +10218,7 @@
 'Number density of rain' = {
 	 discipline = 0 ;
 	 parameterCategory = 1 ;
-	 parameterNumber = 220 ;
+	 parameterNumber = 229 ;
 	}
 
 #paramId: 503117
@@ -10097,3 +10317,519 @@
 	 parameterNumber = 227 ;
 	}
 
+#paramId: 503137
+#Eddy Dissipation Rate Total Col-Max. Lower FIR (< FL165)
+'Eddy Dissipation Rate Total Col-Max. Lower FIR (< FL165)' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 228 ;
+	}
+
+#paramId: 503142
+#Lightning Potential Index
+'Lightning Potential Index' = {
+	 discipline = 0 ;
+	 parameterCategory = 17 ;
+	 parameterNumber = 192 ;
+	}
+
+#paramId: 503143
+#rain-drain-from-snowpack
+'rain-drain-from-snowpack' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 230 ;
+	 typeOfStatisticalProcessing = 1 ;
+	}
+
+#paramId: 503146
+#Height of -10 degree Celsius isotherm
+'Height of -10 degree Celsius isotherm' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 196 ;
+	}
+
+#paramId: 503147
+# probability density function of EDP for turbulence  greater well defined threshold and model grid box
+' probability density function of EDP for turbulence  greater well defined threshold and model grid box' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 229 ;
+	}
+
+#paramId: 503148
+#Adedokun 2 Index
+'Adedokun 2 Index' = {
+	 discipline = 215 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 0 ;
+	}
+
+#paramId: 503149
+#Downward direct short wave radiation flux at surface on horizontal plane (time average)
+'Downward direct short wave radiation flux at surface on horizontal plane (time average)' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 198 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 201 ;
+	}
+
+#paramId: 503150
+#Gauss Boaga Coordinates West to East,East Sector
+'Gauss Boaga Coordinates West to East,East Sector' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 194 ;
+	}
+
+#paramId: 503151
+#Gauss Boaga Coordinates South to North,East Sector
+'Gauss Boaga Coordinates South to North,East Sector' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 195 ;
+	}
+
+#paramId: 503152
+#Gauss Boaga Coordinates West to East, West Sector
+'Gauss Boaga Coordinates West to East, West Sector' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 196 ;
+	}
+
+#paramId: 503153
+#Gauss Boaga Coordinates South to North, West Sector
+'Gauss Boaga Coordinates South to North, West Sector' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 197 ;
+	}
+
+#paramId: 503156
+#Ellrod and Knapp turbulence index1
+'Ellrod and Knapp turbulence index1' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 230 ;
+	}
+
+#paramId: 503157
+#Ellrod and Knapp turbulence index2
+'Ellrod and Knapp turbulence index2' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 231 ;
+	}
+
+#paramId: 503158
+#Deformation of horizontal wind field
+'Deformation of horizontal wind field' = {
+	 discipline = 0 ;
+	 parameterCategory = 193 ;
+	 parameterNumber = 29 ;
+	}
+
+#paramId: 503159
+#Divergence trend (scaled divergence tendency needed for CAT_DVI)
+'Divergence trend (scaled divergence tendency needed for CAT_DVI)' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 232 ;
+	}
+
+#paramId: 503160
+#Divergence modified turbulence index (Ellrod and Knox)
+'Divergence modified turbulence index (Ellrod and Knox)' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 233 ;
+	}
+
+#paramId: 503161
+#Cloud ice ratio qi/(qc+qi)
+'Cloud ice ratio qi/(qc+qi)' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 231 ;
+	}
+
+#paramId: 503162
+#Percentage of convective precipitation (from total prec)
+'Percentage of convective precipitation (from total prec)' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 232 ;
+	}
+
+#paramId: 503163
+#Deep convection index
+'Deep convection index' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 194 ;
+	 typeOfFirstFixedSurface = 10 ;
+	}
+
+#paramId: 503164
+#Wind direction in azimuth class
+'Wind direction in azimuth class' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 0 ;
+	}
+
+#paramId: 503165
+#Wind direction in azimuth class
+'Wind direction in azimuth class' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 0 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 10 ;
+	}
+
+#paramId: 503167
+#Possible astronomical maximum of sunshine
+'Possible astronomical maximum of sunshine' = {
+	 discipline = 0 ;
+	 parameterCategory = 6 ;
+	 parameterNumber = 205 ;
+	 typeOfStatisticalProcessing = 11 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503168
+#Relative duration of sunshine (DURSUN * 100 / DURSON M)
+'Relative duration of sunshine (DURSUN * 100 / DURSON M)' = {
+	 discipline = 0 ;
+	 parameterCategory = 6 ;
+	 parameterNumber = 206 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503171
+#Enthalpy
+'Enthalpy' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 195 ;
+	}
+
+#paramId: 503172
+#2m Enthalpy
+'2m Enthalpy' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 195 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503175
+#Downward short wave radiation flux at surface on horizontal plane (time average)
+'Downward short wave radiation flux at surface on horizontal plane (time average)' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 201 ;
+	}
+
+#paramId: 503176
+#Downward short wave radiation flux at surface on vertical surface facing east (time average)
+'Downward short wave radiation flux at surface on vertical surface facing east (time average)' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 202 ;
+	}
+
+#paramId: 503177
+#Downward short wave radiation flux at surface on vertical surface facing north (time average)
+'Downward short wave radiation flux at surface on vertical surface facing north (time average)' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 203 ;
+	}
+
+#paramId: 503178
+#Downward short wave radiation flux at surface on vertical surface facing south (time average)
+'Downward short wave radiation flux at surface on vertical surface facing south (time average)' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 204 ;
+	}
+
+#paramId: 503179
+#Downward short wave radiation flux at surface on vertical surface facing west (time average)
+'Downward short wave radiation flux at surface on vertical surface facing west (time average)' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 205 ;
+	}
+
+#paramId: 503180
+#Along-wind lagrangian timescale (Hanna)
+'Along-wind lagrangian timescale (Hanna)' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 1 ;
+	}
+
+#paramId: 503181
+#Cross-wind lagrangian timescale (Hanna)
+'Cross-wind lagrangian timescale (Hanna)' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 2 ;
+	}
+
+#paramId: 503182
+#Vertical lagrangian timescale (Hanna)
+'Vertical lagrangian timescale (Hanna)' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 3 ;
+	}
+
+#paramId: 503183
+#Zonal lagrangian timescale (direct) (Hanna)
+'Zonal lagrangian timescale (direct) (Hanna)' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 4 ;
+	}
+
+#paramId: 503184
+#Meridional lagrangian timescale (direct) (Hanna)
+'Meridional lagrangian timescale (direct) (Hanna)' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 5 ;
+	}
+
+#paramId: 503185
+#Vertical lagrangian timescale (direct) (Hanna)
+'Vertical lagrangian timescale (direct) (Hanna)' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 6 ;
+	}
+
+#paramId: 503187
+#Height of level of free convection of mixed (mean) layer parcel
+'Height of level of free convection of mixed (mean) layer parcel' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 6 ;
+	 typeOfSecondFixedSurface = 192 ;
+	 typeOfFirstFixedSurface = 194 ;
+	}
+
+#paramId: 503188
+#Luminosity
+'Luminosity' = {
+	 discipline = 215 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 0 ;
+	}
+
+#paramId: 503189
+#Downward long-wave radiation flux at surface based on T_2M (time average)
+'Downward long-wave radiation flux at surface based on T_2M (time average)' = {
+	 discipline = 215 ;
+	 parameterCategory = 5 ;
+	 parameterNumber = 1 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503190
+#Downward long-wave radiation flux at surface based on T_G (time average)
+'Downward long-wave radiation flux at surface based on T_G (time average)' = {
+	 discipline = 215 ;
+	 parameterCategory = 5 ;
+	 parameterNumber = 2 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503191
+#Downward long-wave radiation flux at surface based on T_SO(0) (time average)
+'Downward long-wave radiation flux at surface based on T_SO(0) (time average)' = {
+	 discipline = 215 ;
+	 parameterCategory = 5 ;
+	 parameterNumber = 3 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503194
+#Pressure difference between cloud base and cloud top
+'Pressure difference between cloud base and cloud top' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 197 ;
+	 typeOfSecondFixedSurface = 2 ;
+	 typeOfFirstFixedSurface = 3 ;
+	}
+
+#paramId: 503198
+#Along-wind velocity fluctuation (Hanna)
+'Along-wind velocity fluctuation (Hanna)' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 7 ;
+	}
+
+#paramId: 503199
+#Cross-wind velocity fluctuation (Hanna)
+'Cross-wind velocity fluctuation (Hanna)' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 8 ;
+	}
+
+#paramId: 503200
+#Vertical velocity fluctuation (Hanna)
+'Vertical velocity fluctuation (Hanna)' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 9 ;
+	}
+
+#paramId: 503201
+#Zonal velocity fluctuation (Hanna)
+'Zonal velocity fluctuation (Hanna)' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 10 ;
+	}
+
+#paramId: 503202
+#Meridional velocity fluctuation (Hanna)
+'Meridional velocity fluctuation (Hanna)' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 11 ;
+	}
+
+#paramId: 503203
+#Vertical velocity fluctuation (Hanna)
+'Vertical velocity fluctuation (Hanna)' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 12 ;
+	}
+
+#paramId: 503205
+#Percentage of precipitation in snow (from total prec.)
+'Percentage of precipitation in snow (from total prec.)' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 233 ;
+	}
+
+#paramId: 503206
+#Thunderstorm index for Switzerland (night time)
+'Thunderstorm index for Switzerland (night time)' = {
+	 discipline = 215 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 1 ;
+	}
+
+#paramId: 503207
+#Thunderstorm index for Switzerland (day time)
+'Thunderstorm index for Switzerland (day time)' = {
+	 discipline = 215 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 2 ;
+	}
+
+#paramId: 503208
+#Swiss coodinate (south-north)
+'Swiss coodinate (south-north)' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 198 ;
+	}
+
+#paramId: 503209
+#Swiss coodinate (west-east)
+'Swiss coodinate (west-east)' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 199 ;
+	}
+
+#paramId: 503217
+#2m temperature, corrected in presence of snow
+'2m temperature, corrected in presence of snow' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 195 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503218
+#Universal thermal climate index without direct incident short wave radiation
+'Universal thermal climate index without direct incident short wave radiation' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 194 ;
+	}
+
+#paramId: 503222
+#Relative geostrophic vorticity
+'Relative geostrophic vorticity' = {
+	 discipline = 0 ;
+	 parameterCategory = 193 ;
+	 parameterNumber = 26 ;
+	}
+
+#paramId: 503223
+#Relative geostrophic vorticity advection
+'Relative geostrophic vorticity advection' = {
+	 discipline = 0 ;
+	 parameterCategory = 193 ;
+	 parameterNumber = 27 ;
+	}
+
+#paramId: 503226
+#Wind divergence (3D)
+'Wind divergence (3D)' = {
+	 discipline = 0 ;
+	 parameterCategory = 193 ;
+	 parameterNumber = 28 ;
+	}
+
+#paramId: 503227
+#Mean vertical wind shear for specified layer or layer-mean vertical wind shear
+'Mean vertical wind shear for specified layer or layer-mean vertical wind shear' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 201 ;
+	}
+
+#paramId: 503228
+#Norm of (vertical) wind shear vector between two levels
+'Norm of (vertical) wind shear vector between two levels' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 202 ;
+	}
+
diff --git a/definitions/grib2/localConcepts/edzw/paramId.def b/definitions/grib2/localConcepts/edzw/paramId.def
old mode 100644
new mode 100755
index 0655851..6827f59
--- a/definitions/grib2/localConcepts/edzw/paramId.def
+++ b/definitions/grib2/localConcepts/edzw/paramId.def
@@ -1,4 +1,4 @@
-# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2015-02-25 15:30
+# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2016-02-03 10:04
 #paramId: 500000
 #Pressure (S) (not reduced)
 '500000' = {
@@ -2532,7 +2532,7 @@
 	}
 
 #paramId: 500293
-#geostrophische  Vorticityadvektion
+#geostrophische Vorticityadvektion
 '500293' = {
 	 discipline = 0 ;
 	 parameterCategory = 193 ;
@@ -2540,7 +2540,7 @@
 	}
 
 #paramId: 500294
-#Geostrophische Schichtdickenadvektion
+#Geostrophic thickness advection
 '500294' = {
 	 discipline = 0 ;
 	 parameterCategory = 193 ;
@@ -2548,7 +2548,7 @@
 	}
 
 #paramId: 500295
-#Schichtdicken-Advektion
+#Schichtdickenadvektion
 '500295' = {
 	 discipline = 0 ;
 	 parameterCategory = 193 ;
@@ -8100,10 +8100,8 @@
 	 parameterCategory = 6 ;
 	 parameterNumber = 22 ;
 	 typeOfSecondFixedSurface = 100 ;
-	 scaleFactorOfSecondFixedSurface = 0 ;
 	 scaledValueOfSecondFixedSurface = 80000 ;
 	 typeOfFirstFixedSurface = 100 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 40000 ;
 	}
 
@@ -8115,7 +8113,6 @@
 	 parameterNumber = 22 ;
 	 typeOfSecondFixedSurface = 1 ;
 	 typeOfFirstFixedSurface = 100 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 80000 ;
 	}
 
@@ -8178,7 +8175,7 @@
 	}
 
 #paramId: 502352
-#Eddy Dissipation Rate Total Col-Max. FIR (< FL245)
+#Eddy Dissipation Rate Total Col-Max. Upper FIR (< FL245)
 '502352' = {
 	 discipline = 0 ;
 	 parameterCategory = 19 ;
@@ -8411,14 +8408,6 @@
 	 parameterNumber = 36 ;
 	}
 
-#paramId: 502726
-#Horizontal moisture divergence
-'502726' = {
-	 discipline = 0 ;
-	 parameterCategory = 1 ;
-	 parameterNumber = 38 ;
-	}
-
 #paramId: 502727
 #Percent frozen precipitation
 '502727' = {
@@ -10475,7 +10464,7 @@
 '503115' = {
 	 discipline = 0 ;
 	 parameterCategory = 1 ;
-	 parameterNumber = 216 ;
+	 parameterNumber = 228 ;
 	}
 
 #paramId: 503116
@@ -10483,7 +10472,7 @@
 '503116' = {
 	 discipline = 0 ;
 	 parameterCategory = 1 ;
-	 parameterNumber = 220 ;
+	 parameterNumber = 229 ;
 	}
 
 #paramId: 503117
@@ -10636,3 +10625,750 @@
 	 typeOfFirstFixedSurface = 1 ;
 	}
 
+#paramId: 503137
+#Eddy Dissipation Rate Total Col-Max. Lower FIR (< FL165)
+'503137' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 228 ;
+	}
+
+#paramId: 503142
+#Lightning Potential Index
+'503142' = {
+	 discipline = 0 ;
+	 parameterCategory = 17 ;
+	 parameterNumber = 192 ;
+	}
+
+#paramId: 503143
+#rain-drain-from-snowpack
+'503143' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 230 ;
+	 typeOfStatisticalProcessing = 1 ;
+	}
+
+#paramId: 503145
+#2m absolute humidity
+'503145' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 18 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503146
+#Height of -10 degree Celsius isotherm
+'503146' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 196 ;
+	}
+
+#paramId: 503147
+# probability density function of EDP for turbulence  greater well defined threshold and model grid box
+'503147' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 229 ;
+	}
+
+#paramId: 503148
+#Adedokun 2 Index
+'503148' = {
+	 discipline = 215 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 0 ;
+	}
+
+#paramId: 503149
+#Downward direct short wave radiation flux at surface on horizontal plane (time average)
+'503149' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 198 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 201 ;
+	}
+
+#paramId: 503150
+#Gauss Boaga Coordinates West to East,East Sector
+'503150' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 194 ;
+	}
+
+#paramId: 503151
+#Gauss Boaga Coordinates South to North,East Sector
+'503151' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 195 ;
+	}
+
+#paramId: 503152
+#Gauss Boaga Coordinates West to East, West Sector
+'503152' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 196 ;
+	}
+
+#paramId: 503153
+#Gauss Boaga Coordinates South to North, West Sector
+'503153' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 197 ;
+	}
+
+#paramId: 503154
+#Bulk Richardson number
+'503154' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 16 ;
+	}
+
+#paramId: 503155
+#Cape of mixed (mean) layer parcel, ascent up to 3 km
+'503155' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 6 ;
+	 typeOfSecondFixedSurface = 192 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 3000 ;
+	}
+
+#paramId: 503156
+#Ellrod and Knapp turbulence index1
+'503156' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 230 ;
+	}
+
+#paramId: 503157
+#Ellrod and Knapp turbulence index2
+'503157' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 231 ;
+	}
+
+#paramId: 503158
+#Deformation of horizontal wind field
+'503158' = {
+	 discipline = 0 ;
+	 parameterCategory = 193 ;
+	 parameterNumber = 29 ;
+	}
+
+#paramId: 503159
+#Divergence trend (scaled divergence tendency needed for CAT_DVI)
+'503159' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 232 ;
+	}
+
+#paramId: 503160
+#Divergence modified turbulence index (Ellrod and Knox)
+'503160' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 233 ;
+	}
+
+#paramId: 503161
+#Cloud ice ratio qi/(qc+qi)
+'503161' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 231 ;
+	}
+
+#paramId: 503162
+#Percentage of convective precipitation (from total prec)
+'503162' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 232 ;
+	}
+
+#paramId: 503163
+#Deep convection index
+'503163' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 194 ;
+	 typeOfFirstFixedSurface = 10 ;
+	}
+
+#paramId: 503164
+#Wind direction in azimuth class
+'503164' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 0 ;
+	}
+
+#paramId: 503165
+#Wind direction in azimuth class
+'503165' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 0 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 10 ;
+	}
+
+#paramId: 503166
+#Geostrophic wind direction
+'503166' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 43 ;
+	}
+
+#paramId: 503167
+#Possible astronomical maximum of sunshine
+'503167' = {
+	 discipline = 0 ;
+	 parameterCategory = 6 ;
+	 parameterNumber = 205 ;
+	 typeOfStatisticalProcessing = 11 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503168
+#Relative duration of sunshine (DURSUN * 100 / DURSON M)
+'503168' = {
+	 discipline = 0 ;
+	 parameterCategory = 6 ;
+	 parameterNumber = 206 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503169
+#Dewpoint depression
+'503169' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 7 ;
+	}
+
+#paramId: 503170
+#2m dewpoint depression
+'503170' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 7 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503171
+#Enthalpy
+'503171' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 195 ;
+	}
+
+#paramId: 503172
+#2m Enthalpy
+'503172' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 195 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503173
+#Geostrophic wind speed
+'503173' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 44 ;
+	}
+
+#paramId: 503174
+#Downward short wave radiation flux at surface (time average)
+'503174' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503175
+#Downward short wave radiation flux at surface on horizontal plane (time average)
+'503175' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 201 ;
+	}
+
+#paramId: 503176
+#Downward short wave radiation flux at surface on vertical surface facing east (time average)
+'503176' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 202 ;
+	}
+
+#paramId: 503177
+#Downward short wave radiation flux at surface on vertical surface facing north (time average)
+'503177' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 203 ;
+	}
+
+#paramId: 503178
+#Downward short wave radiation flux at surface on vertical surface facing south (time average)
+'503178' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 204 ;
+	}
+
+#paramId: 503179
+#Downward short wave radiation flux at surface on vertical surface facing west (time average)
+'503179' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 205 ;
+	}
+
+#paramId: 503180
+#Along-wind lagrangian timescale (Hanna)
+'503180' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 1 ;
+	}
+
+#paramId: 503181
+#Cross-wind lagrangian timescale (Hanna)
+'503181' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 2 ;
+	}
+
+#paramId: 503182
+#Vertical lagrangian timescale (Hanna)
+'503182' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 3 ;
+	}
+
+#paramId: 503183
+#Zonal lagrangian timescale (direct) (Hanna)
+'503183' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 4 ;
+	}
+
+#paramId: 503184
+#Meridional lagrangian timescale (direct) (Hanna)
+'503184' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 5 ;
+	}
+
+#paramId: 503185
+#Vertical lagrangian timescale (direct) (Hanna)
+'503185' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 6 ;
+	}
+
+#paramId: 503186
+#Height of lifting condensation level of mixed (mean) layer parcel
+'503186' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 6 ;
+	 typeOfSecondFixedSurface = 192 ;
+	 typeOfFirstFixedSurface = 5 ;
+	}
+
+#paramId: 503187
+#Height of level of free convection of mixed (mean) layer parcel
+'503187' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 6 ;
+	 typeOfSecondFixedSurface = 192 ;
+	 typeOfFirstFixedSurface = 194 ;
+	}
+
+#paramId: 503188
+#Luminosity
+'503188' = {
+	 discipline = 215 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 0 ;
+	}
+
+#paramId: 503189
+#Downward long-wave radiation flux at surface based on T_2M (time average)
+'503189' = {
+	 discipline = 215 ;
+	 parameterCategory = 5 ;
+	 parameterNumber = 1 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503190
+#Downward long-wave radiation flux at surface based on T_G (time average)
+'503190' = {
+	 discipline = 215 ;
+	 parameterCategory = 5 ;
+	 parameterNumber = 2 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503191
+#Downward long-wave radiation flux at surface based on T_SO(0) (time average)
+'503191' = {
+	 discipline = 215 ;
+	 parameterCategory = 5 ;
+	 parameterNumber = 3 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503192
+#Humidity mixing ratio
+'503192' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 2 ;
+	}
+
+#paramId: 503193
+#2m Humidity mixing ratio
+'503193' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 2 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503194
+#Pressure difference between cloud base and cloud top
+'503194' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 197 ;
+	 typeOfSecondFixedSurface = 2 ;
+	 typeOfFirstFixedSurface = 3 ;
+	}
+
+#paramId: 503195
+#relative humidity over ice
+'503195' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 94 ;
+	}
+
+#paramId: 503196
+#Gradient Richardson number
+'503196' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 17 ;
+	}
+
+#paramId: 503197
+#Showalter index
+'503197' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 13 ;
+	}
+
+#paramId: 503198
+#Along-wind velocity fluctuation (Hanna)
+'503198' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 7 ;
+	}
+
+#paramId: 503199
+#Cross-wind velocity fluctuation (Hanna)
+'503199' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 8 ;
+	}
+
+#paramId: 503200
+#Vertical velocity fluctuation (Hanna)
+'503200' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 9 ;
+	}
+
+#paramId: 503201
+#Zonal velocity fluctuation (Hanna)
+'503201' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 10 ;
+	}
+
+#paramId: 503202
+#Meridional velocity fluctuation (Hanna)
+'503202' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 11 ;
+	}
+
+#paramId: 503203
+#Vertical velocity fluctuation (Hanna)
+'503203' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 12 ;
+	}
+
+#paramId: 503204
+#Surface lifted index
+'503204' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 10 ;
+	 typeOfFirstFixedSurface = 10 ;
+	}
+
+#paramId: 503205
+#Percentage of precipitation in snow (from total prec.)
+'503205' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 233 ;
+	}
+
+#paramId: 503206
+#Thunderstorm index for Switzerland (night time)
+'503206' = {
+	 discipline = 215 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 1 ;
+	}
+
+#paramId: 503207
+#Thunderstorm index for Switzerland (day time)
+'503207' = {
+	 discipline = 215 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 2 ;
+	}
+
+#paramId: 503208
+#Swiss coodinate (south-north)
+'503208' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 198 ;
+	}
+
+#paramId: 503209
+#Swiss coodinate (west-east)
+'503209' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 199 ;
+	}
+
+#paramId: 503210
+#2m potential temperature
+'503210' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 2 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503211
+#Dew point temperature
+'503211' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 6 ;
+	}
+
+#paramId: 503212
+#2m equivalentTemperature
+'503212' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 3 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503213
+#2m virtual potential temperature
+'503213' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 15 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503214
+#Temperature at cloud top
+'503214' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 0 ;
+	 typeOfFirstFixedSurface = 3 ;
+	}
+
+#paramId: 503215
+#Wet bulb temperature
+'503215' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 27 ;
+	}
+
+#paramId: 503216
+#2m wet bulb temperature
+'503216' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 27 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503217
+#2m temperature, corrected in presence of snow
+'503217' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 195 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503218
+#Universal thermal climate index without direct incident short wave radiation
+'503218' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 194 ;
+	}
+
+#paramId: 503219
+#Universal thermal climate index with direct incident short wave radiation
+'503219' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 21 ;
+	}
+
+#paramId: 503220
+#u-component of geostrophic wind
+'503220' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 41 ;
+	}
+
+#paramId: 503221
+#v-component of geostrophic wind
+'503221' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 42 ;
+	}
+
+#paramId: 503222
+#Relative geostrophic vorticity
+'503222' = {
+	 discipline = 0 ;
+	 parameterCategory = 193 ;
+	 parameterNumber = 26 ;
+	}
+
+#paramId: 503223
+#Relative geostrophic vorticity advection
+'503223' = {
+	 discipline = 0 ;
+	 parameterCategory = 193 ;
+	 parameterNumber = 27 ;
+	}
+
+#paramId: 503226
+#Wind divergence (3D)
+'503226' = {
+	 discipline = 0 ;
+	 parameterCategory = 193 ;
+	 parameterNumber = 28 ;
+	}
+
+#paramId: 503227
+#Mean vertical wind shear for specified layer or layer-mean vertical wind shear
+'503227' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 201 ;
+	}
+
+#paramId: 503228
+#Norm of (vertical) wind shear vector between two levels
+'503228' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 202 ;
+	}
+
diff --git a/definitions/grib2/localConcepts/edzw/shortName.def b/definitions/grib2/localConcepts/edzw/shortName.def
old mode 100644
new mode 100755
index b6eaf21..ed29ce7
--- a/definitions/grib2/localConcepts/edzw/shortName.def
+++ b/definitions/grib2/localConcepts/edzw/shortName.def
@@ -1,4 +1,4 @@
-# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2015-02-25 15:30
+# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2016-02-03 10:04
 #paramId: 500000
 #Pressure (S) (not reduced)
 'PS' = {
@@ -3753,10 +3753,8 @@
 	 parameterCategory = 6 ;
 	 parameterNumber = 22 ;
 	 typeOfSecondFixedSurface = 100 ;
-	 scaleFactorOfSecondFixedSurface = 0 ;
 	 scaledValueOfSecondFixedSurface = 80000 ;
 	 typeOfFirstFixedSurface = 100 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 40000 ;
 	}
 
@@ -3768,7 +3766,6 @@
 	 parameterNumber = 22 ;
 	 typeOfSecondFixedSurface = 1 ;
 	 typeOfFirstFixedSurface = 100 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 80000 ;
 	}
 
@@ -4006,14 +4003,6 @@
 	 parameterNumber = 36 ;
 	}
 
-#paramId: 502726
-#Horizontal moisture divergence
-'MCONV' = {
-	 discipline = 0 ;
-	 parameterCategory = 1 ;
-	 parameterNumber = 38 ;
-	}
-
 #paramId: 502727
 #Percent frozen precipitation
 'CPOFP' = {
@@ -5914,6 +5903,237 @@
 	 typeOfFirstFixedSurface = 1 ;
 	}
 
+#paramId: 503145
+#2m absolute humidity
+'ABSH_2M' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 18 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503154
+#Bulk Richardson number
+'BRN' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 16 ;
+	}
+
+#paramId: 503155
+#Cape of mixed (mean) layer parcel, ascent up to 3 km
+'CAPE_3KM' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 6 ;
+	 typeOfSecondFixedSurface = 192 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 3000 ;
+	}
+
+#paramId: 503166
+#Geostrophic wind direction
+'DD_G' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 43 ;
+	}
+
+#paramId: 503169
+#Dewpoint depression
+'D_TD' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 7 ;
+	}
+
+#paramId: 503170
+#2m dewpoint depression
+'D_TD_2M' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 7 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503173
+#Geostrophic wind speed
+'SP_G' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 44 ;
+	}
+
+#paramId: 503174
+#Downward short wave radiation flux at surface (time average)
+'ASOD_S' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503186
+#Height of lifting condensation level of mixed (mean) layer parcel
+'LCL_ML' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 6 ;
+	 typeOfSecondFixedSurface = 192 ;
+	 typeOfFirstFixedSurface = 5 ;
+	}
+
+#paramId: 503192
+#Humidity mixing ratio
+'MIXRAT' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 2 ;
+	}
+
+#paramId: 503193
+#2m Humidity mixing ratio
+'MIXRAT_2M' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 2 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503195
+#relative humidity over ice
+'RH_ICE' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 94 ;
+	}
+
+#paramId: 503196
+#Gradient Richardson number
+'RI' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 17 ;
+	}
+
+#paramId: 503197
+#Showalter index
+'SI' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 13 ;
+	}
+
+#paramId: 503204
+#Surface lifted index
+'SLI' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 10 ;
+	 typeOfFirstFixedSurface = 10 ;
+	}
+
+#paramId: 503210
+#2m potential temperature
+'PT_2M' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 2 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503211
+#Dew point temperature
+'TD' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 6 ;
+	}
+
+#paramId: 503212
+#2m equivalentTemperature
+'THETAE_2M' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 3 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503213
+#2m virtual potential temperature
+'THETA_V_2M' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 15 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503214
+#Temperature at cloud top
+'TTOP_CON' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 0 ;
+	 typeOfFirstFixedSurface = 3 ;
+	}
+
+#paramId: 503215
+#Wet bulb temperature
+'TW' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 27 ;
+	}
+
+#paramId: 503216
+#2m wet bulb temperature
+'TW_2M' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 27 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503219
+#Universal thermal climate index with direct incident short wave radiation
+'UTCI_SUN' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 21 ;
+	}
+
+#paramId: 503220
+#u-component of geostrophic wind
+'U_G' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 41 ;
+	}
+
+#paramId: 503221
+#v-component of geostrophic wind
+'V_G' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 42 ;
+	}
+
 #paramId: 500092
 #Solar radiation heating rate
 'SOHR_RAD' = {
@@ -6486,7 +6706,7 @@
 	}
 
 #paramId: 500293
-#geostrophische  Vorticityadvektion
+#geostrophische Vorticityadvektion
 'ADVORG' = {
 	 discipline = 0 ;
 	 parameterCategory = 193 ;
@@ -6494,7 +6714,7 @@
 	}
 
 #paramId: 500294
-#Geostrophische Schichtdickenadvektion
+#Geostrophic thickness advection
 'ADVOR' = {
 	 discipline = 0 ;
 	 parameterCategory = 193 ;
@@ -6502,7 +6722,7 @@
 	}
 
 #paramId: 500295
-#Schichtdicken-Advektion
+#Schichtdickenadvektion
 'ADRTG' = {
 	 discipline = 0 ;
 	 parameterCategory = 193 ;
@@ -9777,8 +9997,8 @@
 	}
 
 #paramId: 502352
-#Eddy Dissipation Rate Total Col-Max. FIR (< FL245)
-'EDP_MAX_FIR' = {
+#Eddy Dissipation Rate Total Col-Max. Upper FIR (< FL245)
+'EDP_MAX_UFIR' = {
 	 discipline = 0 ;
 	 parameterCategory = 19 ;
 	 parameterNumber = 224 ;
@@ -9990,7 +10210,7 @@
 'NCRAIN' = {
 	 discipline = 0 ;
 	 parameterCategory = 1 ;
-	 parameterNumber = 216 ;
+	 parameterNumber = 228 ;
 	}
 
 #paramId: 503116
@@ -9998,7 +10218,7 @@
 'NDRAIN' = {
 	 discipline = 0 ;
 	 parameterCategory = 1 ;
-	 parameterNumber = 220 ;
+	 parameterNumber = 229 ;
 	}
 
 #paramId: 503117
@@ -10097,3 +10317,519 @@
 	 parameterNumber = 227 ;
 	}
 
+#paramId: 503137
+#Eddy Dissipation Rate Total Col-Max. Lower FIR (< FL165)
+'EDP_MAX_LFIR' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 228 ;
+	}
+
+#paramId: 503142
+#Lightning Potential Index
+'LPI' = {
+	 discipline = 0 ;
+	 parameterCategory = 17 ;
+	 parameterNumber = 192 ;
+	}
+
+#paramId: 503143
+#rain-drain-from-snowpack
+'RD_SNOW' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 230 ;
+	 typeOfStatisticalProcessing = 1 ;
+	}
+
+#paramId: 503146
+#Height of -10 degree Celsius isotherm
+'HMIN10CL' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 196 ;
+	}
+
+#paramId: 503147
+# probability density function of EDP for turbulence  greater well defined threshold and model grid box
+'EDPP' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 229 ;
+	}
+
+#paramId: 503148
+#Adedokun 2 Index
+'ADEDO2' = {
+	 discipline = 215 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 0 ;
+	}
+
+#paramId: 503149
+#Downward direct short wave radiation flux at surface on horizontal plane (time average)
+'ASWDIR_SH' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 198 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 201 ;
+	}
+
+#paramId: 503150
+#Gauss Boaga Coordinates West to East,East Sector
+'BOAGAE_WE' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 194 ;
+	}
+
+#paramId: 503151
+#Gauss Boaga Coordinates South to North,East Sector
+'BOAGAE_SN' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 195 ;
+	}
+
+#paramId: 503152
+#Gauss Boaga Coordinates West to East, West Sector
+'BOAGAW_WE' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 196 ;
+	}
+
+#paramId: 503153
+#Gauss Boaga Coordinates South to North, West Sector
+'BOAGAW_SN' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 197 ;
+	}
+
+#paramId: 503156
+#Ellrod and Knapp turbulence index1
+'CAT_TI1' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 230 ;
+	}
+
+#paramId: 503157
+#Ellrod and Knapp turbulence index2
+'CAT_TI2' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 231 ;
+	}
+
+#paramId: 503158
+#Deformation of horizontal wind field
+'WDEF_H' = {
+	 discipline = 0 ;
+	 parameterCategory = 193 ;
+	 parameterNumber = 29 ;
+	}
+
+#paramId: 503159
+#Divergence trend (scaled divergence tendency needed for CAT_DVI)
+'CAT_DVT' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 232 ;
+	}
+
+#paramId: 503160
+#Divergence modified turbulence index (Ellrod and Knox)
+'CAT_DTI' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 233 ;
+	}
+
+#paramId: 503161
+#Cloud ice ratio qi/(qc+qi)
+'CLI_RATIO' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 231 ;
+	}
+
+#paramId: 503162
+#Percentage of convective precipitation (from total prec)
+'CONV_PERCENT' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 232 ;
+	}
+
+#paramId: 503163
+#Deep convection index
+'DCI' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 194 ;
+	 typeOfFirstFixedSurface = 10 ;
+	}
+
+#paramId: 503164
+#Wind direction in azimuth class
+'DDCLASS' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 0 ;
+	}
+
+#paramId: 503165
+#Wind direction in azimuth class
+'DDCLASS_10M' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 0 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 10 ;
+	}
+
+#paramId: 503167
+#Possible astronomical maximum of sunshine
+'DURSUN_M' = {
+	 discipline = 0 ;
+	 parameterCategory = 6 ;
+	 parameterNumber = 205 ;
+	 typeOfStatisticalProcessing = 11 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503168
+#Relative duration of sunshine (DURSUN * 100 / DURSON M)
+'DURSUN_R' = {
+	 discipline = 0 ;
+	 parameterCategory = 6 ;
+	 parameterNumber = 206 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503171
+#Enthalpy
+'ENTH' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 195 ;
+	}
+
+#paramId: 503172
+#2m Enthalpy
+'ENTH_2M' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 195 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503175
+#Downward short wave radiation flux at surface on horizontal plane (time average)
+'ASOD_SH' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 201 ;
+	}
+
+#paramId: 503176
+#Downward short wave radiation flux at surface on vertical surface facing east (time average)
+'ASOD_SvE' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 202 ;
+	}
+
+#paramId: 503177
+#Downward short wave radiation flux at surface on vertical surface facing north (time average)
+'ASOD_SvN' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 203 ;
+	}
+
+#paramId: 503178
+#Downward short wave radiation flux at surface on vertical surface facing south (time average)
+'ASOD_SvS' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 204 ;
+	}
+
+#paramId: 503179
+#Downward short wave radiation flux at surface on vertical surface facing west (time average)
+'ASOD_SvW' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 205 ;
+	}
+
+#paramId: 503180
+#Along-wind lagrangian timescale (Hanna)
+'LAGTIMEU' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 1 ;
+	}
+
+#paramId: 503181
+#Cross-wind lagrangian timescale (Hanna)
+'LAGTIMEV' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 2 ;
+	}
+
+#paramId: 503182
+#Vertical lagrangian timescale (Hanna)
+'LAGTIMEW' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 3 ;
+	}
+
+#paramId: 503183
+#Zonal lagrangian timescale (direct) (Hanna)
+'LAGTIMEX' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 4 ;
+	}
+
+#paramId: 503184
+#Meridional lagrangian timescale (direct) (Hanna)
+'LAGTIMEY' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 5 ;
+	}
+
+#paramId: 503185
+#Vertical lagrangian timescale (direct) (Hanna)
+'LAGTIMEZ' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 6 ;
+	}
+
+#paramId: 503187
+#Height of level of free convection of mixed (mean) layer parcel
+'LFC_ML' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 6 ;
+	 typeOfSecondFixedSurface = 192 ;
+	 typeOfFirstFixedSurface = 194 ;
+	}
+
+#paramId: 503188
+#Luminosity
+'LUM' = {
+	 discipline = 215 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 0 ;
+	}
+
+#paramId: 503189
+#Downward long-wave radiation flux at surface based on T_2M (time average)
+'ATHD_S_T2M' = {
+	 discipline = 215 ;
+	 parameterCategory = 5 ;
+	 parameterNumber = 1 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503190
+#Downward long-wave radiation flux at surface based on T_G (time average)
+'ATHD_S_TG' = {
+	 discipline = 215 ;
+	 parameterCategory = 5 ;
+	 parameterNumber = 2 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503191
+#Downward long-wave radiation flux at surface based on T_SO(0) (time average)
+'ATHD_S_TS' = {
+	 discipline = 215 ;
+	 parameterCategory = 5 ;
+	 parameterNumber = 3 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503194
+#Pressure difference between cloud base and cloud top
+'PDIFF_CON' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 197 ;
+	 typeOfSecondFixedSurface = 2 ;
+	 typeOfFirstFixedSurface = 3 ;
+	}
+
+#paramId: 503198
+#Along-wind velocity fluctuation (Hanna)
+'SIGMAU' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 7 ;
+	}
+
+#paramId: 503199
+#Cross-wind velocity fluctuation (Hanna)
+'SIGMAV' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 8 ;
+	}
+
+#paramId: 503200
+#Vertical velocity fluctuation (Hanna)
+'SIGMAW' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 9 ;
+	}
+
+#paramId: 503201
+#Zonal velocity fluctuation (Hanna)
+'SIGMAX' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 10 ;
+	}
+
+#paramId: 503202
+#Meridional velocity fluctuation (Hanna)
+'SIGMAY' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 11 ;
+	}
+
+#paramId: 503203
+#Vertical velocity fluctuation (Hanna)
+'SIGMAZ' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 12 ;
+	}
+
+#paramId: 503205
+#Percentage of precipitation in snow (from total prec.)
+'SNOW_PERCENT' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 233 ;
+	}
+
+#paramId: 503206
+#Thunderstorm index for Switzerland (night time)
+'SWISS00' = {
+	 discipline = 215 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 1 ;
+	}
+
+#paramId: 503207
+#Thunderstorm index for Switzerland (day time)
+'SWISS12' = {
+	 discipline = 215 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 2 ;
+	}
+
+#paramId: 503208
+#Swiss coodinate (south-north)
+'SWISS_SN' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 198 ;
+	}
+
+#paramId: 503209
+#Swiss coodinate (west-east)
+'SWISS_WE' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 199 ;
+	}
+
+#paramId: 503217
+#2m temperature, corrected in presence of snow
+'T_2M_SNOWC' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 195 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503218
+#Universal thermal climate index without direct incident short wave radiation
+'UTCI_SHADOW' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 194 ;
+	}
+
+#paramId: 503222
+#Relative geostrophic vorticity
+'RELV_G' = {
+	 discipline = 0 ;
+	 parameterCategory = 193 ;
+	 parameterNumber = 26 ;
+	}
+
+#paramId: 503223
+#Relative geostrophic vorticity advection
+'RELV_ADV_G' = {
+	 discipline = 0 ;
+	 parameterCategory = 193 ;
+	 parameterNumber = 27 ;
+	}
+
+#paramId: 503226
+#Wind divergence (3D)
+'WDIV_3D' = {
+	 discipline = 0 ;
+	 parameterCategory = 193 ;
+	 parameterNumber = 28 ;
+	}
+
+#paramId: 503227
+#Mean vertical wind shear for specified layer or layer-mean vertical wind shear
+'WSHEAR_INT' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 201 ;
+	}
+
+#paramId: 503228
+#Norm of (vertical) wind shear vector between two levels
+'WSHEAR_DIFF' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 202 ;
+	}
+
diff --git a/definitions/grib2/localConcepts/edzw/units.def b/definitions/grib2/localConcepts/edzw/units.def
old mode 100644
new mode 100755
index 7d26081..f3e3504
--- a/definitions/grib2/localConcepts/edzw/units.def
+++ b/definitions/grib2/localConcepts/edzw/units.def
@@ -1,4 +1,4 @@
-# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2015-02-25 15:30
+# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2016-02-03 10:04
 #paramId: 500000
 #Pressure (S) (not reduced)
 'Pa' = {
@@ -654,7 +654,7 @@
 
 #paramId: 500069
 #Sea Ice Cover ( 0= free, 1=cover)
-'Numeric' = {
+'Proportion' = {
 	 discipline = 10 ;
 	 parameterCategory = 2 ;
 	 parameterNumber = 0 ;
@@ -3143,7 +3143,7 @@
 
 #paramId: 500490
 #Water Fraction
-'Numeric' = {
+'Proportion' = {
 	 discipline = 1 ;
 	 parameterCategory = 2 ;
 	 parameterNumber = 2 ;
@@ -3169,7 +3169,7 @@
 
 #paramId: 500493
 #Attenuation coefficient of water with respect to solar radiation
-'1-m' = {
+'m-1' = {
 	 discipline = 1 ;
 	 parameterCategory = 2 ;
 	 parameterNumber = 11 ;
@@ -3753,10 +3753,8 @@
 	 parameterCategory = 6 ;
 	 parameterNumber = 22 ;
 	 typeOfSecondFixedSurface = 100 ;
-	 scaleFactorOfSecondFixedSurface = 0 ;
 	 scaledValueOfSecondFixedSurface = 80000 ;
 	 typeOfFirstFixedSurface = 100 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 40000 ;
 	}
 
@@ -3768,7 +3766,6 @@
 	 parameterNumber = 22 ;
 	 typeOfSecondFixedSurface = 1 ;
 	 typeOfFirstFixedSurface = 100 ;
-	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 80000 ;
 	}
 
@@ -3814,7 +3811,7 @@
 
 #paramId: 502700
 #Boundary layer dissipation
-'' = {
+'W m-2' = {
 	 discipline = 0 ;
 	 parameterCategory = 2 ;
 	 parameterNumber = 20 ;
@@ -3840,7 +3837,7 @@
 
 #paramId: 502703
 #Heat index
-'Numeric' = {
+'K' = {
 	 discipline = 0 ;
 	 parameterCategory = 0 ;
 	 parameterNumber = 12 ;
@@ -3984,7 +3981,7 @@
 
 #paramId: 502723
 #Categorical freezing rain
-'NUMERIC' = {
+'Numeric' = {
 	 discipline = 0 ;
 	 parameterCategory = 1 ;
 	 parameterNumber = 34 ;
@@ -3992,7 +3989,7 @@
 
 #paramId: 502724
 #Categorical ice pellets
-'NUMERIC' = {
+'Numeric' = {
 	 discipline = 0 ;
 	 parameterCategory = 1 ;
 	 parameterNumber = 35 ;
@@ -4000,20 +3997,12 @@
 
 #paramId: 502725
 #Categorical snow
-'NUMERIC' = {
+'Numeric' = {
 	 discipline = 0 ;
 	 parameterCategory = 1 ;
 	 parameterNumber = 36 ;
 	}
 
-#paramId: 502726
-#Horizontal moisture divergence
-'kg kg-1 s-1' = {
-	 discipline = 0 ;
-	 parameterCategory = 1 ;
-	 parameterNumber = 38 ;
-	}
-
 #paramId: 502727
 #Percent frozen precipitation
 '%' = {
@@ -4048,7 +4037,7 @@
 
 #paramId: 502731
 #Rime factor
-'NUMERIC' = {
+'Numeric' = {
 	 discipline = 0 ;
 	 parameterCategory = 1 ;
 	 parameterNumber = 44 ;
@@ -5914,6 +5903,237 @@
 	 typeOfFirstFixedSurface = 1 ;
 	}
 
+#paramId: 503145
+#2m absolute humidity
+'M' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 18 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503154
+#Bulk Richardson number
+'Numeric' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 16 ;
+	}
+
+#paramId: 503155
+#Cape of mixed (mean) layer parcel, ascent up to 3 km
+'J kg-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 6 ;
+	 typeOfSecondFixedSurface = 192 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 3000 ;
+	}
+
+#paramId: 503166
+#Geostrophic wind direction
+'' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 43 ;
+	}
+
+#paramId: 503169
+#Dewpoint depression
+'K' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 7 ;
+	}
+
+#paramId: 503170
+#2m dewpoint depression
+'K' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 7 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503173
+#Geostrophic wind speed
+'m s-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 44 ;
+	}
+
+#paramId: 503174
+#Downward short wave radiation flux at surface (time average)
+'W m-2' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503186
+#Height of lifting condensation level of mixed (mean) layer parcel
+'m' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 6 ;
+	 typeOfSecondFixedSurface = 192 ;
+	 typeOfFirstFixedSurface = 5 ;
+	}
+
+#paramId: 503192
+#Humidity mixing ratio
+'kg kg-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 2 ;
+	}
+
+#paramId: 503193
+#2m Humidity mixing ratio
+'kg kg-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 2 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503195
+#relative humidity over ice
+'%' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 94 ;
+	}
+
+#paramId: 503196
+#Gradient Richardson number
+'Numeric' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 17 ;
+	}
+
+#paramId: 503197
+#Showalter index
+'K' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 13 ;
+	}
+
+#paramId: 503204
+#Surface lifted index
+'K' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 10 ;
+	 typeOfFirstFixedSurface = 10 ;
+	}
+
+#paramId: 503210
+#2m potential temperature
+'K' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 2 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503211
+#Dew point temperature
+'K' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 6 ;
+	}
+
+#paramId: 503212
+#2m equivalentTemperature
+'K' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 3 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503213
+#2m virtual potential temperature
+'K' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 15 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503214
+#Temperature at cloud top
+'K' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 0 ;
+	 typeOfFirstFixedSurface = 3 ;
+	}
+
+#paramId: 503215
+#Wet bulb temperature
+'K' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 27 ;
+	}
+
+#paramId: 503216
+#2m wet bulb temperature
+'K' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 27 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503219
+#Universal thermal climate index with direct incident short wave radiation
+'K' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 21 ;
+	}
+
+#paramId: 503220
+#u-component of geostrophic wind
+'m s-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 41 ;
+	}
+
+#paramId: 503221
+#v-component of geostrophic wind
+'m s-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 42 ;
+	}
+
 #paramId: 500092
 #Solar radiation heating rate
 'K s-1' = {
@@ -6046,7 +6266,7 @@
 
 #paramId: 500124
 #zonal wind tendency due to convection
-'m s-1' = {
+'m s-2' = {
 	 discipline = 0 ;
 	 parameterCategory = 2 ;
 	 parameterNumber = 192 ;
@@ -6054,7 +6274,7 @@
 
 #paramId: 500125
 #meridional wind tendency due to convection
-'m s-1' = {
+'m s-2' = {
 	 discipline = 0 ;
 	 parameterCategory = 2 ;
 	 parameterNumber = 193 ;
@@ -6206,7 +6426,7 @@
 
 #paramId: 500156
 #Tendency of turbulent kinetic energy
-'m s-1' = {
+'m2 s-3' = {
 	 discipline = 0 ;
 	 parameterCategory = 19 ;
 	 parameterNumber = 192 ;
@@ -6314,7 +6534,7 @@
 
 #paramId: 500198
 #zonal wind tendency due to subgrid scale oro.
-'m s-1' = {
+'m s-2' = {
 	 discipline = 0 ;
 	 parameterCategory = 2 ;
 	 parameterNumber = 194 ;
@@ -6322,7 +6542,7 @@
 
 #paramId: 500199
 #meridional wind tendency due to subgrid scale oro.
-'m s-1' = {
+'m s-2' = {
 	 discipline = 0 ;
 	 parameterCategory = 2 ;
 	 parameterNumber = 195 ;
@@ -6486,7 +6706,7 @@
 	}
 
 #paramId: 500293
-#geostrophische  Vorticityadvektion
+#geostrophische Vorticityadvektion
 's-2' = {
 	 discipline = 0 ;
 	 parameterCategory = 193 ;
@@ -6494,7 +6714,7 @@
 	}
 
 #paramId: 500294
-#Geostrophische Schichtdickenadvektion
+#Geostrophic thickness advection
 'm3 kg-1 s-1' = {
 	 discipline = 0 ;
 	 parameterCategory = 193 ;
@@ -6502,7 +6722,7 @@
 	}
 
 #paramId: 500295
-#Schichtdicken-Advektion
+#Schichtdickenadvektion
 'm3 kg-1 s-1' = {
 	 discipline = 0 ;
 	 parameterCategory = 193 ;
@@ -9777,7 +9997,7 @@
 	}
 
 #paramId: 502352
-#Eddy Dissipation Rate Total Col-Max. FIR (< FL245)
+#Eddy Dissipation Rate Total Col-Max. Upper FIR (< FL245)
 'm2/3 s-1' = {
 	 discipline = 0 ;
 	 parameterCategory = 19 ;
@@ -9826,7 +10046,7 @@
 
 #paramId: 503053
 #Radar Blacklist
-'numeric' = {
+'Numeric' = {
 	 discipline = 0 ;
 	 parameterCategory = 15 ;
 	 parameterNumber = 197 ;
@@ -9917,7 +10137,7 @@
 
 #paramId: 503070
 #precipitation phase,BRD
-'1' = {
+'Numeric' = {
 	 discipline = 0 ;
 	 parameterCategory = 16 ;
 	 parameterNumber = 194 ;
@@ -9953,7 +10173,7 @@
 
 #paramId: 503074
 #Area weights for regular lon-lat grid
-'1' = {
+'Numeric' = {
 	 discipline = 0 ;
 	 parameterCategory = 191 ;
 	 parameterNumber = 193 ;
@@ -9969,7 +10189,7 @@
 
 #paramId: 503079
 #soil moisture index (multilayers)
-'1' = {
+'Numeric' = {
 	 discipline = 2 ;
 	 parameterCategory = 3 ;
 	 parameterNumber = 200 ;
@@ -9990,7 +10210,7 @@
 'kg-1' = {
 	 discipline = 0 ;
 	 parameterCategory = 1 ;
-	 parameterNumber = 216 ;
+	 parameterNumber = 228 ;
 	}
 
 #paramId: 503116
@@ -9998,7 +10218,7 @@
 'm-3' = {
 	 discipline = 0 ;
 	 parameterCategory = 1 ;
-	 parameterNumber = 220 ;
+	 parameterNumber = 229 ;
 	}
 
 #paramId: 503117
@@ -10097,3 +10317,519 @@
 	 parameterNumber = 227 ;
 	}
 
+#paramId: 503137
+#Eddy Dissipation Rate Total Col-Max. Lower FIR (< FL165)
+'m2/3 s-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 228 ;
+	}
+
+#paramId: 503142
+#Lightning Potential Index
+'J kg-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 17 ;
+	 parameterNumber = 192 ;
+	}
+
+#paramId: 503143
+#rain-drain-from-snowpack
+'kg m-2' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 230 ;
+	 typeOfStatisticalProcessing = 1 ;
+	}
+
+#paramId: 503146
+#Height of -10 degree Celsius isotherm
+'m' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 196 ;
+	}
+
+#paramId: 503147
+# probability density function of EDP for turbulence  greater well defined threshold and model grid box
+'%' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 229 ;
+	}
+
+#paramId: 503148
+#Adedokun 2 Index
+'K' = {
+	 discipline = 215 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 0 ;
+	}
+
+#paramId: 503149
+#Downward direct short wave radiation flux at surface on horizontal plane (time average)
+'W m-2' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 198 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 201 ;
+	}
+
+#paramId: 503150
+#Gauss Boaga Coordinates West to East,East Sector
+'m' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 194 ;
+	}
+
+#paramId: 503151
+#Gauss Boaga Coordinates South to North,East Sector
+'m' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 195 ;
+	}
+
+#paramId: 503152
+#Gauss Boaga Coordinates West to East, West Sector
+'m' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 196 ;
+	}
+
+#paramId: 503153
+#Gauss Boaga Coordinates South to North, West Sector
+'m' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 197 ;
+	}
+
+#paramId: 503156
+#Ellrod and Knapp turbulence index1
+'s-2' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 230 ;
+	}
+
+#paramId: 503157
+#Ellrod and Knapp turbulence index2
+'s-2' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 231 ;
+	}
+
+#paramId: 503158
+#Deformation of horizontal wind field
+'s-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 193 ;
+	 parameterNumber = 29 ;
+	}
+
+#paramId: 503159
+#Divergence trend (scaled divergence tendency needed for CAT_DVI)
+'s-2' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 232 ;
+	}
+
+#paramId: 503160
+#Divergence modified turbulence index (Ellrod and Knox)
+'s-2' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 233 ;
+	}
+
+#paramId: 503161
+#Cloud ice ratio qi/(qc+qi)
+'%' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 231 ;
+	}
+
+#paramId: 503162
+#Percentage of convective precipitation (from total prec)
+'%' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 232 ;
+	}
+
+#paramId: 503163
+#Deep convection index
+'K' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 194 ;
+	 typeOfFirstFixedSurface = 10 ;
+	}
+
+#paramId: 503164
+#Wind direction in azimuth class
+'Numeric' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 0 ;
+	}
+
+#paramId: 503165
+#Wind direction in azimuth class
+'Numeric' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 0 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 10 ;
+	}
+
+#paramId: 503167
+#Possible astronomical maximum of sunshine
+'s' = {
+	 discipline = 0 ;
+	 parameterCategory = 6 ;
+	 parameterNumber = 205 ;
+	 typeOfStatisticalProcessing = 11 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503168
+#Relative duration of sunshine (DURSUN * 100 / DURSON M)
+'%' = {
+	 discipline = 0 ;
+	 parameterCategory = 6 ;
+	 parameterNumber = 206 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503171
+#Enthalpy
+'J kg-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 195 ;
+	}
+
+#paramId: 503172
+#2m Enthalpy
+'J kg-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 195 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503175
+#Downward short wave radiation flux at surface on horizontal plane (time average)
+'W m-2' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 201 ;
+	}
+
+#paramId: 503176
+#Downward short wave radiation flux at surface on vertical surface facing east (time average)
+'W m-2' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 202 ;
+	}
+
+#paramId: 503177
+#Downward short wave radiation flux at surface on vertical surface facing north (time average)
+'W m-2' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 203 ;
+	}
+
+#paramId: 503178
+#Downward short wave radiation flux at surface on vertical surface facing south (time average)
+'W m-2' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 204 ;
+	}
+
+#paramId: 503179
+#Downward short wave radiation flux at surface on vertical surface facing west (time average)
+'W m-2' = {
+	 discipline = 0 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 7 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 205 ;
+	}
+
+#paramId: 503180
+#Along-wind lagrangian timescale (Hanna)
+'s' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 1 ;
+	}
+
+#paramId: 503181
+#Cross-wind lagrangian timescale (Hanna)
+'s' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 2 ;
+	}
+
+#paramId: 503182
+#Vertical lagrangian timescale (Hanna)
+'s' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 3 ;
+	}
+
+#paramId: 503183
+#Zonal lagrangian timescale (direct) (Hanna)
+'s' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 4 ;
+	}
+
+#paramId: 503184
+#Meridional lagrangian timescale (direct) (Hanna)
+'s' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 5 ;
+	}
+
+#paramId: 503185
+#Vertical lagrangian timescale (direct) (Hanna)
+'s' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 6 ;
+	}
+
+#paramId: 503187
+#Height of level of free convection of mixed (mean) layer parcel
+'m' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 6 ;
+	 typeOfSecondFixedSurface = 192 ;
+	 typeOfFirstFixedSurface = 194 ;
+	}
+
+#paramId: 503188
+#Luminosity
+'klux' = {
+	 discipline = 215 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 0 ;
+	}
+
+#paramId: 503189
+#Downward long-wave radiation flux at surface based on T_2M (time average)
+'W m-2 ' = {
+	 discipline = 215 ;
+	 parameterCategory = 5 ;
+	 parameterNumber = 1 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503190
+#Downward long-wave radiation flux at surface based on T_G (time average)
+'W m-2 ' = {
+	 discipline = 215 ;
+	 parameterCategory = 5 ;
+	 parameterNumber = 2 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503191
+#Downward long-wave radiation flux at surface based on T_SO(0) (time average)
+'W m-2 ' = {
+	 discipline = 215 ;
+	 parameterCategory = 5 ;
+	 parameterNumber = 3 ;
+	 typeOfStatisticalProcessing = 0 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
+
+#paramId: 503194
+#Pressure difference between cloud base and cloud top
+'Pa' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 197 ;
+	 typeOfSecondFixedSurface = 2 ;
+	 typeOfFirstFixedSurface = 3 ;
+	}
+
+#paramId: 503198
+#Along-wind velocity fluctuation (Hanna)
+'m s-1' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 7 ;
+	}
+
+#paramId: 503199
+#Cross-wind velocity fluctuation (Hanna)
+'m s-1' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 8 ;
+	}
+
+#paramId: 503200
+#Vertical velocity fluctuation (Hanna)
+'m s-1' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 9 ;
+	}
+
+#paramId: 503201
+#Zonal velocity fluctuation (Hanna)
+'m s-1' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 10 ;
+	}
+
+#paramId: 503202
+#Meridional velocity fluctuation (Hanna)
+'m s-1' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 11 ;
+	}
+
+#paramId: 503203
+#Vertical velocity fluctuation (Hanna)
+'m s-1' = {
+	 discipline = 215 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 12 ;
+	}
+
+#paramId: 503205
+#Percentage of precipitation in snow (from total prec.)
+'%' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 233 ;
+	}
+
+#paramId: 503206
+#Thunderstorm index for Switzerland (night time)
+'K' = {
+	 discipline = 215 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 1 ;
+	}
+
+#paramId: 503207
+#Thunderstorm index for Switzerland (day time)
+'K' = {
+	 discipline = 215 ;
+	 parameterCategory = 7 ;
+	 parameterNumber = 2 ;
+	}
+
+#paramId: 503208
+#Swiss coodinate (south-north)
+'m' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 198 ;
+	}
+
+#paramId: 503209
+#Swiss coodinate (west-east)
+'m' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 199 ;
+	}
+
+#paramId: 503217
+#2m temperature, corrected in presence of snow
+'K' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 195 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 0 ;
+	 scaledValueOfFirstFixedSurface = 2 ;
+	}
+
+#paramId: 503218
+#Universal thermal climate index without direct incident short wave radiation
+'K' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 194 ;
+	}
+
+#paramId: 503222
+#Relative geostrophic vorticity
+'s-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 193 ;
+	 parameterNumber = 26 ;
+	}
+
+#paramId: 503223
+#Relative geostrophic vorticity advection
+'s-2' = {
+	 discipline = 0 ;
+	 parameterCategory = 193 ;
+	 parameterNumber = 27 ;
+	}
+
+#paramId: 503226
+#Wind divergence (3D)
+'s-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 193 ;
+	 parameterNumber = 28 ;
+	}
+
+#paramId: 503227
+#Mean vertical wind shear for specified layer or layer-mean vertical wind shear
+'s-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 201 ;
+	}
+
+#paramId: 503228
+#Norm of (vertical) wind shear vector between two levels
+'m s-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 202 ;
+	}
+
diff --git a/definitions/grib2/localConcepts/efkl/name.def b/definitions/grib2/localConcepts/efkl/name.def
new file mode 100644
index 0000000..4df5051
--- /dev/null
+++ b/definitions/grib2/localConcepts/efkl/name.def
@@ -0,0 +1,157 @@
+# Automatically generted. Do not edit.
+# NWP latent heat net flux
+'NWP latent heat net flux' = {
+    discipline = 0 ;
+    parameterCategory = 0 ;
+    parameterNumber = 193 ;
+   }
+# NWP sensible heat net flux
+'NWP sensible heat net flux' = {
+    discipline = 0 ;
+    parameterCategory = 0 ;
+    parameterNumber = 194 ;
+   }
+# NWP Boundary layer height
+'NWP Boundary layer height' = {
+    discipline = 0 ;
+    parameterCategory = 3 ;
+    parameterNumber = 192 ;
+   }
+# MO_length_inv
+'MO_length_inv' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 192 ;
+   }
+# mixing velocity scale "Kz_1m" at surface
+'mixing velocity scale "Kz_1m" at surface' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 193 ;
+   }
+# Convective velocity scale
+'Convective velocity scale' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 194 ;
+   }
+# Temperature scale T_star
+'Temperature scale T_star' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 195 ;
+   }
+# Humidity scale h_star
+'Humidity scale h_star' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 196 ;
+   }
+# Scavenging coefficient
+'Scavenging coefficient' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 197 ;
+   }
+# Dry deposition number flux
+'Dry deposition number flux' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 192 ;
+   }
+# Dry deposition molar flux
+'Dry deposition molar flux' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 193 ;
+   }
+# Dry deposition radioactive flux
+'Dry deposition radioactive flux' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 194 ;
+   }
+# Wet deposition Number Flux
+'Wet deposition Number Flux' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 197 ;
+   }
+# Wet deposition Molar Flux
+'Wet deposition Molar Flux' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 198 ;
+   }
+# Wet deposition Radioactive Flux
+'Wet deposition Radioactive Flux' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 199 ;
+   }
+# Column integrated mass concentration
+'Column integrated mass concentration' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 201 ;
+   }
+# Column integrated number concentration
+'Column integrated number concentration' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 202 ;
+   }
+# Column integrated molar concentration
+'Column integrated molar concentration' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 203 ;
+   }
+# Column integrated radioactive concentration
+'Column integrated radioactive concentration' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 204 ;
+   }
+# Radioactive concentration
+'Radioactive concentration' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 210 ;
+   }
+# Ready to fly pollen
+'Ready to fly pollen' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 220 ;
+   }
+# Ready to fly allergen
+'Ready to fly allergen' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 221 ;
+   }
+# Heatsum for pollen
+'Heatsum for pollen' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 222 ;
+   }
+# Pollen left fraction
+'Pollen left fraction' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 223 ;
+   }
+# Pollen total per m2
+'Pollen total per m2' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 224 ;
+   }
+# Climate correction for total pollen
+'Climate correction for total pollen' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 225 ;
+   }
diff --git a/definitions/grib2/localConcepts/efkl/paramId.def b/definitions/grib2/localConcepts/efkl/paramId.def
new file mode 100644
index 0000000..341e91f
--- /dev/null
+++ b/definitions/grib2/localConcepts/efkl/paramId.def
@@ -0,0 +1,157 @@
+# Automatically generted. Do not edit.
+# NWP latent heat net flux
+'86000193' = {
+    discipline = 0 ;
+    parameterCategory = 0 ;
+    parameterNumber = 193 ;
+   }
+# NWP sensible heat net flux
+'86000194' = {
+    discipline = 0 ;
+    parameterCategory = 0 ;
+    parameterNumber = 194 ;
+   }
+# NWP Boundary layer height
+'86003192' = {
+    discipline = 0 ;
+    parameterCategory = 3 ;
+    parameterNumber = 192 ;
+   }
+# MO_length_inv
+'86007192' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 192 ;
+   }
+# mixing velocity scale "Kz_1m" at surface
+'86007193' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 193 ;
+   }
+# Convective velocity scale
+'86007194' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 194 ;
+   }
+# Temperature scale T_star
+'86007195' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 195 ;
+   }
+# Humidity scale h_star
+'86007196' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 196 ;
+   }
+# Scavenging coefficient
+'86007197' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 197 ;
+   }
+# Dry deposition number flux
+'86020192' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 192 ;
+   }
+# Dry deposition molar flux
+'86020193' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 193 ;
+   }
+# Dry deposition radioactive flux
+'86020194' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 194 ;
+   }
+# Wet deposition Number Flux
+'86020197' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 197 ;
+   }
+# Wet deposition Molar Flux
+'86020198' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 198 ;
+   }
+# Wet deposition Radioactive Flux
+'86020199' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 199 ;
+   }
+# Column integrated mass concentration
+'86020201' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 201 ;
+   }
+# Column integrated number concentration
+'86020202' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 202 ;
+   }
+# Column integrated molar concentration
+'86020203' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 203 ;
+   }
+# Column integrated radioactive concentration
+'86020204' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 204 ;
+   }
+# Radioactive concentration
+'86020210' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 210 ;
+   }
+# Ready to fly pollen
+'86020220' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 220 ;
+   }
+# Ready to fly allergen
+'86020221' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 221 ;
+   }
+# Heatsum for pollen
+'86020222' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 222 ;
+   }
+# Pollen left fraction
+'86020223' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 223 ;
+   }
+# Pollen total per m2
+'86020224' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 224 ;
+   }
+# Climate correction for total pollen
+'86020225' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 225 ;
+   }
diff --git a/definitions/grib2/localConcepts/efkl/shortName.def b/definitions/grib2/localConcepts/efkl/shortName.def
new file mode 100644
index 0000000..ec3794f
--- /dev/null
+++ b/definitions/grib2/localConcepts/efkl/shortName.def
@@ -0,0 +1,157 @@
+# Automatically generted. Do not edit.
+# NWP latent heat net flux
+'nwplhf' = {
+    discipline = 0 ;
+    parameterCategory = 0 ;
+    parameterNumber = 193 ;
+   }
+# NWP sensible heat net flux
+'nwpshf' = {
+    discipline = 0 ;
+    parameterCategory = 0 ;
+    parameterNumber = 194 ;
+   }
+# NWP Boundary layer height
+'nwp_blh' = {
+    discipline = 0 ;
+    parameterCategory = 3 ;
+    parameterNumber = 192 ;
+   }
+# MO_length_inv
+'MO_len_inv' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 192 ;
+   }
+# mixing velocity scale "Kz_1m" at surface
+'Kz_1m' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 193 ;
+   }
+# Convective velocity scale
+'cnv_vel_scale' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 194 ;
+   }
+# Temperature scale T_star
+'turb_temp' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 195 ;
+   }
+# Humidity scale h_star
+'humid_scale' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 196 ;
+   }
+# Scavenging coefficient
+'scav_coef' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 197 ;
+   }
+# Dry deposition number flux
+'ddnumf' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 192 ;
+   }
+# Dry deposition molar flux
+'ddmolf' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 193 ;
+   }
+# Dry deposition radioactive flux
+'ddradf' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 194 ;
+   }
+# Wet deposition Number Flux
+'wdnumf' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 197 ;
+   }
+# Wet deposition Molar Flux
+'wdmolf' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 198 ;
+   }
+# Wet deposition Radioactive Flux
+'wdradf' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 199 ;
+   }
+# Column integrated mass concentration
+'cimassconc' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 201 ;
+   }
+# Column integrated number concentration
+'cinumconc' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 202 ;
+   }
+# Column integrated molar concentration
+'cimolconc' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 203 ;
+   }
+# Column integrated radioactive concentration
+'ciradconc' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 204 ;
+   }
+# Radioactive concentration
+'radconc' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 210 ;
+   }
+# Ready to fly pollen
+'poll_rdy2fly' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 220 ;
+   }
+# Ready to fly allergen
+'alrg_rdy2fly' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 221 ;
+   }
+# Heatsum for pollen
+'heatsum' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 222 ;
+   }
+# Pollen left fraction
+'poll_left' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 223 ;
+   }
+# Pollen total per m2
+'poll_tot_m2' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 224 ;
+   }
+# Climate correction for total pollen
+'pollen_corr' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 225 ;
+   }
diff --git a/definitions/grib2/localConcepts/efkl/units.def b/definitions/grib2/localConcepts/efkl/units.def
new file mode 100644
index 0000000..69e6a30
--- /dev/null
+++ b/definitions/grib2/localConcepts/efkl/units.def
@@ -0,0 +1,157 @@
+# Automatically generted. Do not edit.
+# NWP latent heat net flux
+'W m-2' = {
+    discipline = 0 ;
+    parameterCategory = 0 ;
+    parameterNumber = 193 ;
+   }
+# NWP sensible heat net flux
+'W m-2' = {
+    discipline = 0 ;
+    parameterCategory = 0 ;
+    parameterNumber = 194 ;
+   }
+# NWP Boundary layer height
+'m' = {
+    discipline = 0 ;
+    parameterCategory = 3 ;
+    parameterNumber = 192 ;
+   }
+# MO_length_inv
+'m-1' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 192 ;
+   }
+# mixing velocity scale "Kz_1m" at surface
+'m s-1' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 193 ;
+   }
+# Convective velocity scale
+'m s-1' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 194 ;
+   }
+# Temperature scale T_star
+'K' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 195 ;
+   }
+# Humidity scale h_star
+'kg m-3' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 196 ;
+   }
+# Scavenging coefficient
+'s-1' = {
+    discipline = 0 ;
+    parameterCategory = 7 ;
+    parameterNumber = 197 ;
+   }
+# Dry deposition number flux
+'m-2 s-1' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 192 ;
+   }
+# Dry deposition molar flux
+'mol m-2 s-1' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 193 ;
+   }
+# Dry deposition radioactive flux
+'bq m-2 s-1' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 194 ;
+   }
+# Wet deposition Number Flux
+'m-2 s-1' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 197 ;
+   }
+# Wet deposition Molar Flux
+'mol m-2 s-1' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 198 ;
+   }
+# Wet deposition Radioactive Flux
+'bq m-2 s-1' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 199 ;
+   }
+# Column integrated mass concentration
+'kg m-2' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 201 ;
+   }
+# Column integrated number concentration
+'m-2' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 202 ;
+   }
+# Column integrated molar concentration
+'mol m-2' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 203 ;
+   }
+# Column integrated radioactive concentration
+'bq m-2' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 204 ;
+   }
+# Radioactive concentration
+'bq m-3' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 210 ;
+   }
+# Ready to fly pollen
+'m-2' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 220 ;
+   }
+# Ready to fly allergen
+'m-2' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 221 ;
+   }
+# Heatsum for pollen
+'degreeday' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 222 ;
+   }
+# Pollen left fraction
+'' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 223 ;
+   }
+# Pollen total per m2
+'m-2' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 224 ;
+   }
+# Climate correction for total pollen
+'' = {
+    discipline = 0 ;
+    parameterCategory = 20 ;
+    parameterNumber = 225 ;
+   }
diff --git a/definitions/grib2/localConcepts/egrr/name.def b/definitions/grib2/localConcepts/egrr/name.def
index aaaedf3..97a67b6 100644
--- a/definitions/grib2/localConcepts/egrr/name.def
+++ b/definitions/grib2/localConcepts/egrr/name.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Maximum temperature at 2 metres in the last 6 hours
 'Maximum temperature at 2 metres in the last 6 hours' = {
 	 discipline = 0 ;
@@ -8,6 +8,8 @@
 	 typeOfStatisticalProcessing = 2 ;
 	 scaleFactorOfFirstFixedSurface = 1 ;
 	 scaledValueOfFirstFixedSurface = 15 ;
+	 indicatorOfUnitForTimeRange = 1 ;
+	 lengthOfTimeRange = 6 ;
 	}
 #Minimum temperature at 2 metres in the last 6 hours
 'Minimum temperature at 2 metres in the last 6 hours' = {
@@ -18,6 +20,8 @@
 	 typeOfFirstFixedSurface = 103 ;
 	 scaleFactorOfFirstFixedSurface = 1 ;
 	 scaledValueOfFirstFixedSurface = 15 ;
+	 indicatorOfUnitForTimeRange = 1 ;
+	 lengthOfTimeRange = 6 ;
 	}
 #2 metre temperature
 '2 metre temperature' = {
diff --git a/definitions/grib2/localConcepts/egrr/paramId.def b/definitions/grib2/localConcepts/egrr/paramId.def
index 39a2211..fc84a5e 100644
--- a/definitions/grib2/localConcepts/egrr/paramId.def
+++ b/definitions/grib2/localConcepts/egrr/paramId.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Maximum temperature at 2 metres in the last 6 hours
 '121' = {
 	 discipline = 0 ;
@@ -8,6 +8,8 @@
 	 typeOfFirstFixedSurface = 103 ;
 	 scaleFactorOfFirstFixedSurface = 1 ;
 	 scaledValueOfFirstFixedSurface = 15 ;
+	 indicatorOfUnitForTimeRange = 1 ;
+	 lengthOfTimeRange = 6 ;
 	}
 #Minimum temperature at 2 metres in the last 6 hours
 '122' = {
@@ -18,6 +20,8 @@
 	 typeOfStatisticalProcessing = 3 ;
 	 scaleFactorOfFirstFixedSurface = 1 ;
 	 scaledValueOfFirstFixedSurface = 15 ;
+	 indicatorOfUnitForTimeRange = 1 ;
+	 lengthOfTimeRange = 6 ;
 	}
 #2 metre temperature
 '167' = {
diff --git a/definitions/grib2/localConcepts/egrr/shortName.def b/definitions/grib2/localConcepts/egrr/shortName.def
index 7ebac8d..f6c54f7 100644
--- a/definitions/grib2/localConcepts/egrr/shortName.def
+++ b/definitions/grib2/localConcepts/egrr/shortName.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Maximum temperature at 2 metres in the last 6 hours
 'mx2t6' = {
 	 discipline = 0 ;
@@ -8,6 +8,8 @@
 	 typeOfStatisticalProcessing = 2 ;
 	 scaleFactorOfFirstFixedSurface = 1 ;
 	 scaledValueOfFirstFixedSurface = 15 ;
+	 indicatorOfUnitForTimeRange = 1 ;
+	 lengthOfTimeRange = 6 ;
 	}
 #Minimum temperature at 2 metres in the last 6 hours
 'mn2t6' = {
@@ -18,6 +20,8 @@
 	 typeOfFirstFixedSurface = 103 ;
 	 scaleFactorOfFirstFixedSurface = 1 ;
 	 scaledValueOfFirstFixedSurface = 15 ;
+	 indicatorOfUnitForTimeRange = 1 ;
+	 lengthOfTimeRange = 6 ;
 	}
 #2 metre temperature
 '2t' = {
diff --git a/definitions/grib2/localConcepts/egrr/units.def b/definitions/grib2/localConcepts/egrr/units.def
index 648b8dc..31652c4 100644
--- a/definitions/grib2/localConcepts/egrr/units.def
+++ b/definitions/grib2/localConcepts/egrr/units.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Maximum temperature at 2 metres in the last 6 hours
 'K' = {
 	 discipline = 0 ;
@@ -8,6 +8,8 @@
 	 typeOfStatisticalProcessing = 2 ;
 	 scaleFactorOfFirstFixedSurface = 1 ;
 	 scaledValueOfFirstFixedSurface = 15 ;
+	 indicatorOfUnitForTimeRange = 1 ;
+	 lengthOfTimeRange = 6 ;
 	}
 #Minimum temperature at 2 metres in the last 6 hours
 'K' = {
@@ -18,6 +20,8 @@
 	 typeOfFirstFixedSurface = 103 ;
 	 scaleFactorOfFirstFixedSurface = 1 ;
 	 scaledValueOfFirstFixedSurface = 15 ;
+	 indicatorOfUnitForTimeRange = 1 ;
+	 lengthOfTimeRange = 6 ;
 	}
 #2 metre temperature
 'K' = {
diff --git a/definitions/grib2/localConcepts/kwbc/name.def b/definitions/grib2/localConcepts/kwbc/name.def
index 5a613e9..d756593 100644
--- a/definitions/grib2/localConcepts/kwbc/name.def
+++ b/definitions/grib2/localConcepts/kwbc/name.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Convective available potential energy
 'Convective available potential energy' = {
 	 discipline = 0 ;
@@ -1630,4 +1630,16 @@
 	 discipline = 0 ;
 	 parameterCategory = 1 ;
 	 parameterNumber = 8 ;
-}
+	}
+#Sunshine Duration
+'Sunshine Duration' = {
+	 discipline = 0 ;
+	 parameterCategory = 6 ;
+	 parameterNumber = 201 ;
+	}
+#Ventilation Rate
+'Ventilation Rate' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 224 ;
+	}
diff --git a/definitions/grib2/localConcepts/kwbc/paramId.def b/definitions/grib2/localConcepts/kwbc/paramId.def
index 3571b7a..513a83a 100644
--- a/definitions/grib2/localConcepts/kwbc/paramId.def
+++ b/definitions/grib2/localConcepts/kwbc/paramId.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Convective available potential energy
 '59' = {
 	 discipline = 0 ;
@@ -1630,4 +1630,16 @@
 	 discipline = 0 ;
 	 parameterCategory = 1 ;
 	 parameterNumber = 8 ;
-}
+	}
+#Sunshine Duration
+'7001292' = {
+	 discipline = 0 ;
+	 parameterCategory = 6 ;
+	 parameterNumber = 201 ;
+	}
+#Ventilation Rate
+'7001353' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 224 ;
+	}
diff --git a/definitions/grib2/localConcepts/kwbc/shortName.def b/definitions/grib2/localConcepts/kwbc/shortName.def
index d12d887..01b6974 100644
--- a/definitions/grib2/localConcepts/kwbc/shortName.def
+++ b/definitions/grib2/localConcepts/kwbc/shortName.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Convective available potential energy
 'cape' = {
 	 discipline = 0 ;
@@ -1630,4 +1630,16 @@
 	 discipline = 0 ;
 	 parameterCategory = 1 ;
 	 parameterNumber = 8 ;
-}
+	}
+#Sunshine Duration
+'SUNSD' = {
+	 discipline = 0 ;
+	 parameterCategory = 6 ;
+	 parameterNumber = 201 ;
+	}
+#Ventilation Rate
+'VRATE' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 224 ;
+	}
diff --git a/definitions/grib2/localConcepts/kwbc/units.def b/definitions/grib2/localConcepts/kwbc/units.def
index 20f25ee..f986b31 100644
--- a/definitions/grib2/localConcepts/kwbc/units.def
+++ b/definitions/grib2/localConcepts/kwbc/units.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Convective available potential energy
 'J kg**-1' = {
 	 discipline = 0 ;
@@ -1631,3 +1631,15 @@
 	 parameterCategory = 1 ;
 	 parameterNumber = 8 ;
 }
+#Sunshine Duration
+'s' = {
+	 discipline = 0 ;
+	 parameterCategory = 6 ;
+	 parameterNumber = 201 ;
+	}
+#Ventilation Rate
+'m**2 s**-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 224 ;
+	}
diff --git a/definitions/grib2/localConcepts/lfpw/name.def b/definitions/grib2/localConcepts/lfpw/name.def
index a82876b..097f638 100644
--- a/definitions/grib2/localConcepts/lfpw/name.def
+++ b/definitions/grib2/localConcepts/lfpw/name.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Total convective Precipitation
 'Total convective Precipitation' = {
 	 discipline = 0 ;
diff --git a/definitions/grib2/localConcepts/lfpw/paramId.def b/definitions/grib2/localConcepts/lfpw/paramId.def
index 56830e5..b6d7b9e 100644
--- a/definitions/grib2/localConcepts/lfpw/paramId.def
+++ b/definitions/grib2/localConcepts/lfpw/paramId.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Total convective Precipitation
 '85001156' = {
 	 discipline = 0 ;
diff --git a/definitions/grib2/localConcepts/lfpw/shortName.def b/definitions/grib2/localConcepts/lfpw/shortName.def
index 70a50f6..987bee8 100644
--- a/definitions/grib2/localConcepts/lfpw/shortName.def
+++ b/definitions/grib2/localConcepts/lfpw/shortName.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Total convective Precipitation
 'PREC_CONVEC' = {
 	 discipline = 0 ;
diff --git a/definitions/grib2/localConcepts/lfpw/units.def b/definitions/grib2/localConcepts/lfpw/units.def
index d2bb67a..47b3a45 100644
--- a/definitions/grib2/localConcepts/lfpw/units.def
+++ b/definitions/grib2/localConcepts/lfpw/units.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Total convective Precipitation
 'kg m**-2' = {
 	 discipline = 0 ;
diff --git a/definitions/grib2/localConcepts/lfpw1/name.def b/definitions/grib2/localConcepts/lfpw1/name.def
index d24441b..f0cd73c 100644
--- a/definitions/grib2/localConcepts/lfpw1/name.def
+++ b/definitions/grib2/localConcepts/lfpw1/name.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at balthasar, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Total convective Precipitation
 'Total convective Precipitation' = {
 	 discipline = 0 ;
diff --git a/definitions/grib2/localConcepts/lfpw1/paramId.def b/definitions/grib2/localConcepts/lfpw1/paramId.def
index c63678e..cb432c4 100644
--- a/definitions/grib2/localConcepts/lfpw1/paramId.def
+++ b/definitions/grib2/localConcepts/lfpw1/paramId.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at balthasar, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Total convective Precipitation
 '85001156' = {
 	 discipline = 0 ;
diff --git a/definitions/grib2/localConcepts/lfpw1/shortName.def b/definitions/grib2/localConcepts/lfpw1/shortName.def
index 319fd17..88f6b59 100644
--- a/definitions/grib2/localConcepts/lfpw1/shortName.def
+++ b/definitions/grib2/localConcepts/lfpw1/shortName.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at balthasar, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Total convective Precipitation
 'PREC_CONVEC' = {
 	 discipline = 0 ;
diff --git a/definitions/grib2/localConcepts/lfpw1/units.def b/definitions/grib2/localConcepts/lfpw1/units.def
index db29862..312e72f 100644
--- a/definitions/grib2/localConcepts/lfpw1/units.def
+++ b/definitions/grib2/localConcepts/lfpw1/units.def
@@ -1,4 +1,4 @@
-# Automatically generated by ./create_def.pl from database param at balthasar, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Total convective Precipitation
 'kg m**-2' = {
 	 discipline = 0 ;
diff --git a/definitions/grib2/localConcepts/lssw/modelName.def b/definitions/grib2/localConcepts/lssw/modelName.def
new file mode 100644
index 0000000..6413c0d
--- /dev/null
+++ b/definitions/grib2/localConcepts/lssw/modelName.def
@@ -0,0 +1,17 @@
+# modelName: Contribution from Daniel Lee @ DWD
+# definitions for Zurich
+'cosmo-1' = {
+    generatingProcessIdentifier=101;
+}
+'cosmo-2' = {
+    generatingProcessIdentifier=102;
+}
+'cosmo-7' = {
+    generatingProcessIdentifier=107;
+}
+'cosmo-e' = {
+    generatingProcessIdentifier=103;
+}
+'cosmo-e' = {
+    generatingProcessIdentifier=130;
+}
diff --git a/definitions/grib2/mars_labeling.def b/definitions/grib2/mars_labeling.def
index 30c8ce1..cefcb5f 100644
--- a/definitions/grib2/mars_labeling.def
+++ b/definitions/grib2/mars_labeling.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/meta.def b/definitions/grib2/meta.def
index de3fc7a..23b92fb 100644
--- a/definitions/grib2/meta.def
+++ b/definitions/grib2/meta.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/modelName.def b/definitions/grib2/modelName.def
new file mode 100644
index 0000000..25b89c3
--- /dev/null
+++ b/definitions/grib2/modelName.def
@@ -0,0 +1,43 @@
+# modelName: Contribution from Daniel Lee @ DWD
+
+# COSMO
+# general definition
+'cosmo' = { originatingCentre=250; }
+'cosmo' = { subCentre=250; }
+
+# definitions for ARPA-SIMC
+'cosmo-i2' = { originatingCentre=200;
+                generatingProcessIdentifier=36; }
+'cosmo-i2' = { originatingCentre=200;
+                generatingProcessIdentifier=139; }
+'cosmo-i2' = { originatingCentre=200;
+                generatingProcessIdentifier=144; }
+'cosmo-i2' = { originatingCentre=200;
+                generatingProcessIdentifier=148; }
+'cosmo-i7' = { originatingCentre=200;
+                generatingProcessIdentifier=31; }
+'cosmo-i7' = { originatingCentre=200;
+                generatingProcessIdentifier=32; }
+'cosmo-i7' = { originatingCentre=200;
+                generatingProcessIdentifier=34; }
+'cosmo-i7' = { originatingCentre=200;
+                generatingProcessIdentifier=38; }
+'cosmo-i7' = { originatingCentre=200;
+                generatingProcessIdentifier=42; }
+'cosmo-i7' = { originatingCentre=200;
+                generatingProcessIdentifier=46; }
+'cosmo-i7' = { originatingCentre=200;
+                generatingProcessIdentifier=131; }
+# definitions for Moscow
+'cosmo_ru' = { originatingCentre=76;
+                generatingProcessIdentifier=135; }
+'cosmo_ru-eps' = { originatingCentre=76;
+                generatingProcessIdentifier=235;}
+
+# definitions for Athens
+'cosmo-greece' = { originatingCentre=96;}
+# definitions for Warsaw / Poland
+'cosmo-poland' = { originatingCentre=220;}
+# definitions for Romania
+'cosmo-romania' = { originatingCentre=242;}
+
diff --git a/definitions/grib2/name.def b/definitions/grib2/name.def
index 4144e2d..6e41cdc 100644
--- a/definitions/grib2/name.def
+++ b/definitions/grib2/name.def
@@ -1,4 +1,4 @@
-# Automatically generated by create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Sea-ice cover
 'Sea-ice cover' = {
 	 discipline = 10 ;
@@ -94,6 +94,14 @@
 	 parameterCategory = 6 ;
 	 parameterNumber = 32 ;
 	}
+#large scale precipitation
+'large scale precipitation' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 54 ;
+	 typeOfStatisticalProcessing = 1 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
 #Snow depth
 'Snow depth' = {
 	 discipline = 0 ;
@@ -108,7 +116,9 @@
 	 typeOfFirstFixedSurface = 103 ;
 	 scaledValueOfFirstFixedSurface = 10 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
+	 indicatorOfUnitForTimeRange = 1 ;
 	 typeOfStatisticalProcessing = 2 ;
+	 lengthOfTimeRange = 3 ;
 	}
 #Relative humidity with respect to water
 'Relative humidity with respect to water' = {
@@ -140,6 +150,12 @@
 	 parameterCategory = 6 ;
 	 parameterNumber = 37 ;
 	}
+#Height of convective cloud top
+'Height of convective cloud top' = {
+	 discipline = 0 ;
+	 parameterCategory = 6 ;
+	 parameterNumber = 27 ;
+	}
 #Soil moisture top 20 cm
 'Soil moisture top 20 cm' = {
 	 discipline = 2 ;
@@ -202,6 +218,200 @@
 	 parameterCategory = 0 ;
 	 parameterNumber = 33 ;
 	}
+#Mean temperature tendency due to short-wave radiation
+'Mean temperature tendency due to short-wave radiation' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 22 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean temperature tendency due to long-wave radiation
+'Mean temperature tendency due to long-wave radiation' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 23 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean temperature tendency due to short-wave radiation, clear sky
+'Mean temperature tendency due to short-wave radiation, clear sky' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 24 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean temperature tendency due to long-wave radiation, clear sky
+'Mean temperature tendency due to long-wave radiation, clear sky' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 25 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean temperature tendency due to parametrisations
+'Mean temperature tendency due to parametrisations' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 26 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean specific humidity tendency due to parametrisations
+'Mean specific humidity tendency due to parametrisations' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 108 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean eastward wind tendency due to parametrisations
+'Mean eastward wind tendency due to parametrisations' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 39 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean northward wind tendency due to parametrisations
+'Mean northward wind tendency due to parametrisations' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 40 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean updraught mass flux
+'Mean updraught mass flux' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 27 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean downdraught mass flux
+'Mean downdraught mass flux' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 28 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean updraught detrainment rate
+'Mean updraught detrainment rate' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 29 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean downdraught detrainment rate
+'Mean downdraught detrainment rate' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 30 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean total precipitation flux
+'Mean total precipitation flux' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 52 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean turbulent diffusion coefficient for heat
+'Mean turbulent diffusion coefficient for heat' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 20 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Cross sectional area of flow in channel
+'Cross sectional area of flow in channel' = {
+	 discipline = 1 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 13 ;
+	}
+#Side flow into river channel
+'Side flow into river channel' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 10 ;
+	}
+#Discharge from rivers or streams
+'Discharge from rivers or streams' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 7 ;
+	}
+#River storage of water
+'River storage of water' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 11 ;
+	}
+#Floodplain storage of water
+'Floodplain storage of water' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 12 ;
+	}
+#Water fraction
+'Water fraction' = {
+	 discipline = 1 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 2 ;
+	}
+#Days since last observation
+'Days since last observation' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 3 ;
+	}
+#Frost index
+'Frost index' = {
+	 discipline = 2 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 24 ;
+	}
+#Depth of water on soil surface
+'Depth of water on soil surface' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 13 ;
+	}
+#Upstream accumulated precipitation
+'Upstream accumulated precipitation' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 14 ;
+	}
+#Upstream accumulated snow melt
+'Upstream accumulated snow melt' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 15 ;
+	}
+#Snow depth at elevation bands
+'Snow depth at elevation bands' = {
+	 discipline = 2 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 25 ;
+	}
+#Groundwater upper storage
+'Groundwater upper storage' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 8 ;
+	}
+#Groundwater lower storage
+'Groundwater lower storage' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 9 ;
+	}
+#Apparent temperature
+'Apparent temperature' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 21 ;
+	}
+#Haines Index
+'Haines Index' = {
+	 discipline = 2 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 2 ;
+	}
 #Cloudy brightness temperature
 'Cloudy brightness temperature' = {
          discipline = 3 ;
@@ -322,6 +532,12 @@
 	 parameterCategory = 0 ;
 	 parameterNumber = 1 ;
 	}
+#Virtual potential temperature
+'Virtual potential temperature' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 15 ;
+	}
 #Pseudo-adiabatic potential temperature
 'Pseudo-adiabatic potential temperature' = {
 	 discipline = 0 ;
@@ -429,6 +645,8 @@
 	 typeOfStatisticalProcessing = 2 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
+	 indicatorOfUnitForTimeRange = 1 ;
+	 lengthOfTimeRange = 6 ;
 	}
 #Minimum temperature at 2 metres in the last 6 hours
 'Minimum temperature at 2 metres in the last 6 hours' = {
@@ -439,6 +657,8 @@
 	 typeOfFirstFixedSurface = 103 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
+	 indicatorOfUnitForTimeRange = 1 ;
+	 lengthOfTimeRange = 6 ;
 	}
 #Geopotential
 'Geopotential' = {
@@ -647,14 +867,6 @@
 	 parameterNumber = 17 ;
 	 typeOfFirstFixedSurface = 1 ;
 	}
-#large scale precipitation
-'large scale precipitation' = {
-	 discipline = 0 ;
-	 parameterCategory = 1 ;
-	 parameterNumber = 54 ;
-	 typeOfFirstFixedSurface = 1 ;
-	 typeOfStatisticalProcessing = 1 ;
-	}
 #Latent heat net flux
 'Latent heat net flux' = {
 	 discipline = 0 ;
@@ -2065,6 +2277,12 @@
 	 parameterCategory = 1 ;
 	 parameterNumber = 1 ;
 	}
+#Geometric vertical velocity
+'Geometric vertical velocity' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 9 ;
+	}
 #Ice temperature
 'Ice temperature' = {
 	 discipline = 10 ;
@@ -2113,12 +2331,6 @@
 	 parameterCategory = 3 ;
 	 parameterNumber = 7 ;
 	}
-#Virtual potential temperature
-'Virtual potential temperature' = {
-	 discipline = 0 ;
-	 parameterCategory = 0 ;
-	 parameterNumber = 15 ;
-	}
 #Maximum temperature
 'Maximum temperature' = {
 	 discipline = 0 ;
@@ -2498,7 +2710,7 @@
 	 parameterCategory = 0 ;
 	 parameterNumber = 22 ;
 	}
-#Soil Moisture for TIGGE
+#Soil Moisture
 'Soil Moisture' = {
 	 discipline = 2 ;
 	 parameterCategory = 0 ;
@@ -2517,7 +2729,7 @@
 	 parameterCategory = 0 ;
 	 parameterNumber = 2 ;
 	}
-#Soil temperature for TIGGE
+#Soil Temperature
 'Soil Temperature' = {
 	 discipline = 2 ;
 	 parameterCategory = 0 ;
diff --git a/definitions/grib2/paramId.def b/definitions/grib2/paramId.def
index 7f0d068..fece21a 100644
--- a/definitions/grib2/paramId.def
+++ b/definitions/grib2/paramId.def
@@ -1,4 +1,4 @@
-# Automatically generated by create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Sea-ice cover
 '31' = {
 	 discipline = 10 ;
@@ -94,6 +94,14 @@
 	 parameterCategory = 6 ;
 	 parameterNumber = 32 ;
 	}
+#large scale precipitation
+'3062' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 54 ;
+	 typeOfStatisticalProcessing = 1 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
 #Snow depth
 '3066' = {
 	 discipline = 0 ;
@@ -106,6 +114,8 @@
 	 parameterCategory = 2 ;
 	 parameterNumber = 22 ;
 	 typeOfStatisticalProcessing = 2 ;
+	 lengthOfTimeRange = 3 ;
+	 indicatorOfUnitForTimeRange = 1 ;
 	 typeOfFirstFixedSurface = 103 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 10 ;
@@ -140,6 +150,12 @@
 	 parameterCategory = 6 ;
 	 parameterNumber = 37 ;
 	}
+#Height of convective cloud top
+'228046' = {
+	 discipline = 0 ;
+	 parameterCategory = 6 ;
+	 parameterNumber = 27 ;
+	}
 #Soil moisture top 20 cm
 '228086' = {
 	 discipline = 2 ;
@@ -202,6 +218,200 @@
 	 parameterCategory = 0 ;
 	 parameterNumber = 33 ;
 	}
+#Mean temperature tendency due to short-wave radiation
+'235001' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 22 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean temperature tendency due to long-wave radiation
+'235002' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 23 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean temperature tendency due to short-wave radiation, clear sky
+'235003' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 24 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean temperature tendency due to long-wave radiation, clear sky
+'235004' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 25 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean temperature tendency due to parametrisations
+'235005' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 26 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean specific humidity tendency due to parametrisations
+'235006' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 108 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean eastward wind tendency due to parametrisations
+'235007' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 39 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean northward wind tendency due to parametrisations
+'235008' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 40 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean updraught mass flux
+'235009' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 27 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean downdraught mass flux
+'235010' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 28 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean updraught detrainment rate
+'235011' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 29 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean downdraught detrainment rate
+'235012' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 30 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean total precipitation flux
+'235013' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 52 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean turbulent diffusion coefficient for heat
+'235014' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 20 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Cross sectional area of flow in channel
+'240011' = {
+	 discipline = 1 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 13 ;
+	}
+#Side flow into river channel
+'240012' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 10 ;
+	}
+#Discharge from rivers or streams
+'240013' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 7 ;
+	}
+#River storage of water
+'240014' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 11 ;
+	}
+#Floodplain storage of water
+'240015' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 12 ;
+	}
+#Water fraction
+'240016' = {
+	 discipline = 1 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 2 ;
+	}
+#Days since last observation
+'240017' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 3 ;
+	}
+#Frost index
+'240018' = {
+	 discipline = 2 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 24 ;
+	}
+#Depth of water on soil surface
+'240020' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 13 ;
+	}
+#Upstream accumulated precipitation
+'240021' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 14 ;
+	}
+#Upstream accumulated snow melt
+'240022' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 15 ;
+	}
+#Snow depth at elevation bands
+'240026' = {
+	 discipline = 2 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 25 ;
+	}
+#Groundwater upper storage
+'240028' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 8 ;
+	}
+#Groundwater lower storage
+'240029' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 9 ;
+	}
+#Apparent temperature
+'260255' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 21 ;
+	}
+#Haines Index
+'260256' = {
+	 discipline = 2 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 2 ;
+	}
 #Cloudy brightness temperature
 '260510' = {
          discipline = 3 ;
@@ -322,6 +532,12 @@
 	 parameterCategory = 0 ;
 	 parameterNumber = 1 ;
 	}
+#Virtual potential temperature
+'3012' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 15 ;
+	}
 #Pseudo-adiabatic potential temperature
 '3014' = {
 	 discipline = 0 ;
@@ -429,6 +645,8 @@
 	 typeOfFirstFixedSurface = 103 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
+	 indicatorOfUnitForTimeRange = 1 ;
+	 lengthOfTimeRange = 6 ;
 	}
 #Minimum temperature at 2 metres in the last 6 hours
 '122' = {
@@ -439,6 +657,8 @@
 	 typeOfStatisticalProcessing = 3 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
+	 indicatorOfUnitForTimeRange = 1 ;
+	 lengthOfTimeRange = 6 ;
 	}
 #Geopotential
 '129' = {
@@ -647,14 +867,6 @@
 	 parameterNumber = 17 ;
 	 typeOfFirstFixedSurface = 1 ;
 	}
-#large scale precipitation
-'3062' = {
-	 discipline = 0 ;
-	 parameterCategory = 1 ;
-	 parameterNumber = 54 ;
-	 typeOfFirstFixedSurface = 1 ;
-	 typeOfStatisticalProcessing = 1 ;
-	}
 #Latent heat net flux
 '260002' = {
 	 discipline = 0 ;
@@ -2065,6 +2277,12 @@
 	 parameterCategory = 1 ;
 	 parameterNumber = 1 ;
 	}
+#Geometric vertical velocity
+'260238' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 9 ;
+	}
 #Ice temperature
 '260239' = {
 	 discipline = 10 ;
@@ -2113,12 +2331,6 @@
 	 parameterCategory = 3 ;
 	 parameterNumber = 7 ;
 	}
-#Virtual potential temperature
-'3012' = {
-	 discipline = 0 ;
-	 parameterCategory = 0 ;
-	 parameterNumber = 15 ;
-	}
 #Maximum temperature
 '3015' = {
 	 discipline = 0 ;
@@ -2498,7 +2710,7 @@
 	 parameterCategory = 0 ;
 	 parameterNumber = 22 ;
 	}
-#Soil Moisture for TIGGE
+#Soil Moisture
 '228039' = {
 	 discipline = 2 ;
 	 parameterCategory = 0 ;
@@ -2517,7 +2729,7 @@
 	 parameterCategory = 0 ;
 	 parameterNumber = 2 ;
 	}
-#Soil temperature for TIGGE
+#Soil Temperature
 '228139' = {
 	 discipline = 2 ;
 	 parameterCategory = 0 ;
diff --git a/definitions/grib2/parameters.def b/definitions/grib2/parameters.def
index 2e49c6c..b898b63 100644
--- a/definitions/grib2/parameters.def
+++ b/definitions/grib2/parameters.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -30,7 +30,9 @@ concept cfName (cfNameECMF,"cfName.def",conceptsMasterDir,conceptsLocalDirAll) :
 concept cfVarNameECMF (defaultShortName,"cfVarName.def",conceptsMasterDir,conceptsLocalDirECMF) : no_copy,dump;
 concept cfVarName (cfVarNameECMF,"cfVarName.def",conceptsMasterDir,conceptsLocalDirAll) : no_copy,dump;
 
+# modelName: Contribution from Daniel Lee @ DWD
+concept modelName (defaultName,"modelName.def",conceptsMasterDir,conceptsLocalDirAll): no_copy,dump,read_only;
+
 template_nofail names "grib2/products_[productionStatusOfProcessedData].def";
 
 meta ifsParam ifs_param(paramId,type);
-
diff --git a/definitions/grib2/products_0.def b/definitions/grib2/products_0.def
index 9869dc0..0d0ac6b 100644
--- a/definitions/grib2/products_0.def
+++ b/definitions/grib2/products_0.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/products_1.def b/definitions/grib2/products_1.def
index ac145fc..ada4692 100644
--- a/definitions/grib2/products_1.def
+++ b/definitions/grib2/products_1.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/products_2.def b/definitions/grib2/products_2.def
index 1b61a62..13131af 100644
--- a/definitions/grib2/products_2.def
+++ b/definitions/grib2/products_2.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/products_3.def b/definitions/grib2/products_3.def
index 7652772..0df98d3 100644
--- a/definitions/grib2/products_3.def
+++ b/definitions/grib2/products_3.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/products_4.def b/definitions/grib2/products_4.def
index 7c65367..0334ea5 100644
--- a/definitions/grib2/products_4.def
+++ b/definitions/grib2/products_4.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,95 +9,4 @@
 
 # Tigge
 constant marsExpver = 'prod';
-constant marsClass = 'ti';
-constant marsModel = 'glob';
-alias is_tigge = one;
-
-alias tigge_short_name=shortName;
-alias short_name=shortName;
-alias parameter=paramId;
-alias tigge_name=name;
-
-alias parameter.paramId=paramId;
-alias parameter.shortName=shortName;
-alias parameter.units=units;
-alias parameter.name=name;
-
-if(levtype is "sfc")
-{
-    unalias mars.levelist;
-}
-
-alias mars.expver = marsExpver;
-alias mars.class  = marsClass;
-alias mars.param = paramId;
-alias mars.model = marsModel;
-alias mars.origin = centre;
-
-# Tigge-LAM rules
-# productionStatusOfProcessedData == 4
-if (section2Used == 1) {
-    constant marsLamModel = 'lam';
-    alias mars.model = marsLamModel;    # model redefined. It is not 'glob'
-    alias mars.origin = tiggeSuiteID;   # origin is the suiteName for Tigge-LAM
-    unalias mars.domain;                # No mars domain needed
-}
-
-concept marsType {
-
-   fc = {
-     typeOfProcessedData = 2;
-   }
-   "9" = {
-     typeOfProcessedData = 2;
-   }
-
-   cf = {
-     typeOfProcessedData = 3;
-   }
-   "10" = {
-     typeOfProcessedData = 3;
-   }
-
-   pf = {
-     typeOfProcessedData = 4;
-   }
-   "11" = {
-     typeOfProcessedData = 4;
-   }
-
-   "default" = {
-     dummyc = 0;
-   }
-}
-
-# See GRIB-205 re no_copy
-concept marsStream {
-
-    oper = {
-      typeOfProcessedData = 0;
-    }
-
-    oper = {
-      typeOfProcessedData = 2;
-    }
-
-    enfo = {
-      typeOfProcessedData = 3;
-    }
-
-    enfo = {
-      typeOfProcessedData = 4;
-    }
-
-    enfo = {
-      typeOfProcessedData = 8;
-    }
-
-    "default" = {
-      dummyc = 0;
-    }
-} : no_copy;
-
-alias mars.stream = marsStream;
-alias mars.type   = marsType;
+include "grib2/products_tigge.def"
diff --git a/definitions/grib2/products_5.def b/definitions/grib2/products_5.def
index f3e7591..2e474d9 100644
--- a/definitions/grib2/products_5.def
+++ b/definitions/grib2/products_5.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,95 +9,4 @@
 
 # Tigge
 constant marsExpver = 'test';
-constant marsClass = 'ti';
-constant marsModel = 'glob';
-alias is_tigge = one;
-
-alias tigge_short_name=shortName;
-alias short_name=shortName;
-alias parameter=paramId;
-alias tigge_name=name;
-
-alias parameter.paramId=paramId;
-alias parameter.shortName=shortName;
-alias parameter.units=units;
-alias parameter.name=name;
-
-if(levtype is "sfc")
-{
-    unalias mars.levelist;
-}
-
-alias mars.expver = marsExpver;
-alias mars.class  = marsClass;
-alias mars.param = paramId;
-alias mars.model = marsModel;
-alias mars.origin = centre;
-
-# Tigge-LAM rules
-# productionStatusOfProcessedData == 5
-if (section2Used == 1) {
-    constant marsLamModel = 'lam';
-    alias mars.model = marsLamModel;    # model redefined. It is not 'glob'
-    alias mars.origin = tiggeSuiteID;   # origin is the suiteName for Tigge-LAM
-    unalias mars.domain;                # No mars domain needed
-}
-
-concept marsType {
-
-   fc = {
-     typeOfProcessedData = 2;
-   }
-   "9" = {
-     typeOfProcessedData = 2;
-   }
-
-   cf = {
-     typeOfProcessedData = 3;
-   }
-   "10" = {
-     typeOfProcessedData = 3;
-   }
-
-   pf = {
-     typeOfProcessedData = 4;
-   }
-   "11" = {
-     typeOfProcessedData = 4;
-   }
-
-   "default" = {
-     dummyc = 0;
-   }
-}
-
-# See GRIB-205 re no_copy
-concept marsStream {
-
-    oper = {
-      typeOfProcessedData = 0;
-    }
-
-    oper = {
-      typeOfProcessedData = 2;
-    }
-
-    enfo = {
-      typeOfProcessedData = 3;
-    }
-
-    enfo = {
-      typeOfProcessedData = 4;
-    }
-
-    enfo = {
-      typeOfProcessedData = 8;
-    }
-
-    "default" = {
-      dummyc = 0;
-    }
-} : no_copy;
-
-alias mars.stream = marsStream;
-alias mars.type   = marsType;
+include "grib2/products_tigge.def"
diff --git a/definitions/grib2/products_6.def b/definitions/grib2/products_6.def
index 6dd1d32..37a5fbc 100644
--- a/definitions/grib2/products_6.def
+++ b/definitions/grib2/products_6.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,90 +9,4 @@
 
 # S2S
 constant marsExpver = 'prod';
-constant marsClass  = 's2';
-constant marsModel  = 'glob';
-
-alias parameter.paramId=paramId;
-alias parameter.shortName=shortName;
-alias parameter.units=units;
-alias parameter.name=name;
-
-alias mars.expver = marsExpver;
-alias mars.class  = marsClass;
-alias mars.param = paramId;
-alias mars.model = marsModel;
-alias mars.origin = centre;
-unalias mars.domain;
-
-concept marsType {
-
-   fc = {
-     typeOfProcessedData = 2;
-   }
-   "9" = {
-     typeOfProcessedData = 2;
-   }
-
-   cf = {
-     typeOfProcessedData = 3;
-   }
-   "10" = {
-     typeOfProcessedData = 3;
-   }
-
-   pf = {
-     typeOfProcessedData = 4;
-   }
-   "11" = {
-     typeOfProcessedData = 4;
-   }
-
-   "default" = {
-     dummyc = 0;
-   }
-}
-
-# See GRIB-205 re no_copy
-concept marsStream {
-
-    oper = {
-      typeOfProcessedData = 0;
-    }
-
-    oper = {
-      typeOfProcessedData = 2;
-    }
-
-    enfo = {
-      typeOfProcessedData = 3;
-    }
-
-    enfo = {
-      typeOfProcessedData = 4;
-    }
-
-    enfo = {
-      typeOfProcessedData = 8;
-    }
-
-    "default" = {
-      dummyc = 0;
-    }
-} : no_copy;
-
-alias mars.stream = marsStream;
-alias mars.type   = marsType;
-
-# Normally MARS step is endStep but for monthly means we want stepRange
-if (stepType is "avg") {
-   alias mars.step = stepRange;
-}
-
-if (isHindcast == 1) {
-   # S2S reforecasts
-   constant theHindcastMarsStream = "enfh";
-   alias mars.stream = theHindcastMarsStream;
-   alias mars.hdate = dataDate;
-   alias mars.date  = modelVersionDate;
-   alias mars.time  = modelVersionTime;
-}
+include "grib2/products_s2s.def"
diff --git a/definitions/grib2/products_7.def b/definitions/grib2/products_7.def
index 6e0d3b7..7bb2961 100644
--- a/definitions/grib2/products_7.def
+++ b/definitions/grib2/products_7.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,90 +9,4 @@
 
 # S2S test
 constant marsExpver = 'test';
-constant marsClass  = 's2';
-constant marsModel  = 'glob';
-
-alias parameter.paramId=paramId;
-alias parameter.shortName=shortName;
-alias parameter.units=units;
-alias parameter.name=name;
-
-alias mars.expver = marsExpver;
-alias mars.class  = marsClass;
-alias mars.param = paramId;
-alias mars.model = marsModel;
-alias mars.origin = centre;
-unalias mars.domain;
-
-concept marsType {
-
-   fc = {
-     typeOfProcessedData = 2;
-   }
-   "9" = {
-     typeOfProcessedData = 2;
-   }
-
-   cf = {
-     typeOfProcessedData = 3;
-   }
-   "10" = {
-     typeOfProcessedData = 3;
-   }
-
-   pf = {
-     typeOfProcessedData = 4;
-   }
-   "11" = {
-     typeOfProcessedData = 4;
-   }
-
-   "default" = {
-     dummyc = 0;
-   }
-}
-
-# See GRIB-205 re no_copy
-concept marsStream {
-
-    oper = {
-      typeOfProcessedData = 0;
-    }
-
-    oper = {
-      typeOfProcessedData = 2;
-    }
-
-    enfo = {
-      typeOfProcessedData = 3;
-    }
-
-    enfo = {
-      typeOfProcessedData = 4;
-    }
-
-    enfo = {
-      typeOfProcessedData = 8;
-    }
-
-    "default" = {
-      dummyc = 0;
-    }
-} : no_copy;
-
-alias mars.stream = marsStream;
-alias mars.type   = marsType;
-
-# Normally MARS step is endStep but for monthly means we want stepRange
-if (stepType is "avg") {
-   alias mars.step = stepRange;
-}
-
-if (isHindcast == 1) {
-   # S2S reforecasts
-   constant theHindcastMarsStream = "enfh";
-   alias mars.stream = theHindcastMarsStream;
-   alias mars.hdate = dataDate;
-   alias mars.date  = modelVersionDate;
-   alias mars.time  = modelVersionTime;
-}
+include "grib2/products_s2s.def"
diff --git a/definitions/grib2/products_8.def b/definitions/grib2/products_8.def
index 3620d6f..0263b67 100644
--- a/definitions/grib2/products_8.def
+++ b/definitions/grib2/products_8.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,95 +9,4 @@
 
 # Uncertainties in ensembles of regional re-analysis project (UERRA)
 constant marsExpver = 'prod';
-constant marsClass = 'ur';
-constant marsModel = 'glob';
-#alias is_tigge = one;
-
-alias tigge_short_name=shortName;
-alias short_name=shortName;
-alias parameter=paramId;
-alias tigge_name=name;
-
-alias parameter.paramId=paramId;
-alias parameter.shortName=shortName;
-alias parameter.units=units;
-alias parameter.name=name;
-
-if(levtype is "sfc")
-{
-    unalias mars.levelist;
-}
-
-alias mars.expver = marsExpver;
-alias mars.class  = marsClass;
-alias mars.param = paramId;
-alias mars.model = marsModel;
-alias mars.origin = centre;
-
-# Tigge-LAM rules
-# productionStatusOfProcessedData == 8
-if (section2Used == 1) {
-    constant marsLamModel = 'lam';
-    alias mars.model = marsLamModel;    # model redefined. It is not 'glob'
-    alias mars.origin = tiggeSuiteID;   # origin is the suiteName for Tigge-LAM
-    unalias mars.domain;                # No mars domain needed
-}
-
-concept marsType {
-
-   fc = {
-     typeOfProcessedData = 2;
-   }
-   "9" = {
-     typeOfProcessedData = 2;
-   }
-
-   cf = {
-     typeOfProcessedData = 3;
-   }
-   "10" = {
-     typeOfProcessedData = 3;
-   }
-
-   pf = {
-     typeOfProcessedData = 4;
-   }
-   "11" = {
-     typeOfProcessedData = 4;
-   }
-
-   "default" = {
-     dummyc = 0;
-   }
-}
-
-# See GRIB-205 re no_copy
-concept marsStream {
-
-    oper = {
-      typeOfProcessedData = 0;
-    }
-
-    oper = {
-      typeOfProcessedData = 2;
-    }
-
-    enfo = {
-      typeOfProcessedData = 3;
-    }
-
-    enfo = {
-      typeOfProcessedData = 4;
-    }
-
-    enfo = {
-      typeOfProcessedData = 8;
-    }
-
-    "default" = {
-      dummyc = 0;
-    }
-} : no_copy;
-
-alias mars.stream = marsStream;
-alias mars.type   = marsType;
+include "grib2/products_uerra.def"
diff --git a/definitions/grib2/products_9.def b/definitions/grib2/products_9.def
index 92439a8..3907d56 100644
--- a/definitions/grib2/products_9.def
+++ b/definitions/grib2/products_9.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,95 +9,4 @@
 
 # Uncertainties in ensembles of regional re-analysis project test (UERRA)
 constant marsExpver = 'test';
-constant marsClass = 'ur';
-constant marsModel = 'glob';
-#alias is_tigge = one;
-
-alias tigge_short_name=shortName;
-alias short_name=shortName;
-alias parameter=paramId;
-alias tigge_name=name;
-
-alias parameter.paramId=paramId;
-alias parameter.shortName=shortName;
-alias parameter.units=units;
-alias parameter.name=name;
-
-if(levtype is "sfc")
-{
-    unalias mars.levelist;
-}
-
-alias mars.expver = marsExpver;
-alias mars.class  = marsClass;
-alias mars.param = paramId;
-alias mars.model = marsModel;
-alias mars.origin = centre;
-
-# Tigge-LAM rules
-# productionStatusOfProcessedData == 9
-if (section2Used == 1) {
-    constant marsLamModel = 'lam';
-    alias mars.model = marsLamModel;    # model redefined. It is not 'glob'
-    alias mars.origin = tiggeSuiteID;   # origin is the suiteName for Tigge-LAM
-    unalias mars.domain;                # No mars domain needed
-}
-
-concept marsType {
-
-   fc = {
-     typeOfProcessedData = 2;
-   }
-   "9" = {
-     typeOfProcessedData = 2;
-   }
-
-   cf = {
-     typeOfProcessedData = 3;
-   }
-   "10" = {
-     typeOfProcessedData = 3;
-   }
-
-   pf = {
-     typeOfProcessedData = 4;
-   }
-   "11" = {
-     typeOfProcessedData = 4;
-   }
-
-   "default" = {
-     dummyc = 0;
-   }
-}
-
-# See GRIB-205 re no_copy
-concept marsStream {
-
-    oper = {
-      typeOfProcessedData = 0;
-    }
-
-    oper = {
-      typeOfProcessedData = 2;
-    }
-
-    enfo = {
-      typeOfProcessedData = 3;
-    }
-
-    enfo = {
-      typeOfProcessedData = 4;
-    }
-
-    enfo = {
-      typeOfProcessedData = 8;
-    }
-
-    "default" = {
-      dummyc = 0;
-    }
-} : no_copy;
-
-alias mars.stream = marsStream;
-alias mars.type   = marsType;
+include "grib2/products_uerra.def"
diff --git a/definitions/grib2/products_s2s.def b/definitions/grib2/products_s2s.def
new file mode 100644
index 0000000..a120a68
--- /dev/null
+++ b/definitions/grib2/products_s2s.def
@@ -0,0 +1,106 @@
+# Copyright 2005-2016 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.
+#
+
+# S2S
+constant marsClass  = 's2';
+constant marsModel  = 'glob';
+alias is_s2s = one;
+
+alias parameter.paramId=paramId;
+alias parameter.shortName=shortName;
+alias parameter.units=units;
+alias parameter.name=name;
+
+alias mars.expver = marsExpver;
+alias mars.class  = marsClass;
+alias mars.param = paramId;
+alias mars.model = marsModel;
+
+# See GRIB-761. For Italy, subCentre 102 is ISAC-CNR
+if (centre is "cnmc" && subCentre == 102) {
+    constant cnmc_isac = 'isac';
+    alias mars.origin = cnmc_isac;
+} else {
+    alias mars.origin = centre;
+}
+
+unalias mars.domain;
+
+concept marsType {
+
+   fc = {
+     typeOfProcessedData = 2;
+   }
+   "9" = {
+     typeOfProcessedData = 2;
+   }
+
+   cf = {
+     typeOfProcessedData = 3;
+   }
+   "10" = {
+     typeOfProcessedData = 3;
+   }
+
+   pf = {
+     typeOfProcessedData = 4;
+   }
+   "11" = {
+     typeOfProcessedData = 4;
+   }
+
+   "default" = {
+     dummyc = 0;
+   }
+}
+
+# See GRIB-205 re no_copy
+concept marsStream {
+
+    oper = {
+      typeOfProcessedData = 0;
+    }
+
+    oper = {
+      typeOfProcessedData = 2;
+    }
+
+    enfo = {
+      typeOfProcessedData = 3;
+    }
+
+    enfo = {
+      typeOfProcessedData = 4;
+    }
+
+    enfo = {
+      typeOfProcessedData = 8;
+    }
+
+    "default" = {
+      dummyc = 0;
+    }
+} : no_copy;
+
+alias mars.stream = marsStream;
+alias mars.type   = marsType;
+
+# Normally MARS step is endStep but for monthly means we want stepRange
+if (stepType is "avg") {
+   alias mars.step = stepRange;
+}
+
+if (isHindcast == 1) {
+   # S2S reforecasts
+   constant theHindcastMarsStream = "enfh";
+   alias mars.stream = theHindcastMarsStream;
+   alias mars.hdate = dataDate;
+   alias mars.date  = modelVersionDate;
+   alias mars.time  = modelVersionTime;
+}
diff --git a/definitions/grib2/products_tigge.def b/definitions/grib2/products_tigge.def
new file mode 100644
index 0000000..fbf9523
--- /dev/null
+++ b/definitions/grib2/products_tigge.def
@@ -0,0 +1,102 @@
+# Copyright 2005-2016 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.
+#
+
+# Tigge
+constant marsClass = 'ti';
+constant marsModel = 'glob';
+alias is_tigge = one;
+
+alias tigge_short_name=shortName;
+alias short_name=shortName;
+alias parameter=paramId;
+alias tigge_name=name;
+
+alias parameter.paramId=paramId;
+alias parameter.shortName=shortName;
+alias parameter.units=units;
+alias parameter.name=name;
+
+if(levtype is "sfc")
+{
+    unalias mars.levelist;
+}
+
+alias mars.expver = marsExpver;
+alias mars.class  = marsClass;
+alias mars.param = paramId;
+alias mars.model = marsModel;
+alias mars.origin = centre;
+
+# Tigge-LAM rules
+# productionStatusOfProcessedData == 4
+if (section2Used == 1) {
+    constant marsLamModel = 'lam';
+    alias mars.model = marsLamModel;    # model redefined. It is not 'glob'
+    alias mars.origin = tiggeSuiteID;   # origin is the suiteName for Tigge-LAM
+    unalias mars.domain;                # No mars domain needed
+}
+
+concept marsType {
+
+   fc = {
+     typeOfProcessedData = 2;
+   }
+   "9" = {
+     typeOfProcessedData = 2;
+   }
+
+   cf = {
+     typeOfProcessedData = 3;
+   }
+   "10" = {
+     typeOfProcessedData = 3;
+   }
+
+   pf = {
+     typeOfProcessedData = 4;
+   }
+   "11" = {
+     typeOfProcessedData = 4;
+   }
+
+   "default" = {
+     dummyc = 0;
+   }
+}
+
+# See GRIB-205 re no_copy
+concept marsStream {
+
+    oper = {
+      typeOfProcessedData = 0;
+    }
+
+    oper = {
+      typeOfProcessedData = 2;
+    }
+
+    enfo = {
+      typeOfProcessedData = 3;
+    }
+
+    enfo = {
+      typeOfProcessedData = 4;
+    }
+
+    enfo = {
+      typeOfProcessedData = 8;
+    }
+
+    "default" = {
+      dummyc = 0;
+    }
+} : no_copy;
+
+alias mars.stream = marsStream;
+alias mars.type   = marsType;
diff --git a/definitions/grib2/products_uerra.def b/definitions/grib2/products_uerra.def
new file mode 100644
index 0000000..6ef4f14
--- /dev/null
+++ b/definitions/grib2/products_uerra.def
@@ -0,0 +1,100 @@
+# Copyright 2005-2016 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.
+#
+
+# Uncertainties in ensembles of regional re-analysis project (UERRA)
+constant marsClass = 'ur';
+
+alias tigge_short_name=shortName;
+alias short_name=shortName;
+alias parameter=paramId;
+alias tigge_name=name;
+
+alias parameter.paramId=paramId;
+alias parameter.shortName=shortName;
+alias parameter.units=units;
+alias parameter.name=name;
+
+if(levtype is "sfc")
+{
+    unalias mars.levelist;
+}
+
+# Special UERRA rule for level type 103 'Specified height level above ground (m)'
+if(typeOfFirstFixedSurface == 103) {
+    # Exclude the parameters: 10u, 10v and 2t
+    if (paramId != 165 &&
+        paramId != 166 &&
+        paramId != 167)
+    {
+        constant heightLevelName = 'hl';
+        alias mars.levtype = heightLevelName;
+    }
+}
+
+alias mars.expver = marsExpver;
+alias mars.class  = marsClass;
+alias mars.param = paramId;
+alias mars.origin = centre;
+
+# Tigge-LAM rules
+if (section2Used == 1) {
+    constant marsLamModel = 'lam';
+    alias mars.model = marsLamModel;    # model redefined. It is not 'glob'
+    alias mars.origin = tiggeSuiteID;   # origin is the suiteName for Tigge-LAM
+    unalias mars.domain;                # No mars domain needed
+}
+
+concept marsType {
+
+   fc = {
+     typeOfProcessedData = 2;
+   }
+   "9" = {
+     typeOfProcessedData = 2;
+   }
+
+   an = {
+     typeOfProcessedData = 0;
+   }
+   "2" = {
+     typeOfProcessedData = 0;
+   }
+
+   "default" = {
+     dummyc = 0;
+   }
+}
+
+# See GRIB-205 re no_copy
+# Cannot use typeOfProcessedData for stream. See GRIB-911
+concept marsStream {
+
+    oper = {
+      productDefinitionTemplateNumber = 8;
+    }
+
+    oper = {
+      productDefinitionTemplateNumber = 0;
+    }
+
+    enda = {
+      productDefinitionTemplateNumber = 11;
+    }
+
+    enda = {
+      productDefinitionTemplateNumber = 1;
+    }
+
+    "default" = {
+      dummyc = 0;
+    }
+} : no_copy;
+
+alias mars.stream = marsStream;
+alias mars.type   = marsType;
diff --git a/definitions/grib2/rules.def b/definitions/grib2/rules.def
index b66c33c..b8471a4 100644
--- a/definitions/grib2/rules.def
+++ b/definitions/grib2/rules.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/section.0.def b/definitions/grib2/section.0.def
index 5058f22..e07bb83 100644
--- a/definitions/grib2/section.0.def
+++ b/definitions/grib2/section.0.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/section.1.def b/definitions/grib2/section.1.def
index d7addea..e619bde 100644
--- a/definitions/grib2/section.1.def
+++ b/definitions/grib2/section.1.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/section.2.def b/definitions/grib2/section.2.def
index bf51ccb..a5046e8 100644
--- a/definitions/grib2/section.2.def
+++ b/definitions/grib2/section.2.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/section.3.def b/definitions/grib2/section.3.def
index 541c0eb..c0aa869 100644
--- a/definitions/grib2/section.3.def
+++ b/definitions/grib2/section.3.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -45,6 +45,7 @@ if(numberOfOctectsForNumberOfPoints  == 0){
 codetable[2] gridDefinitionTemplateNumber ('3.1.table',masterDir,localDir) =0 : dump,edition_specific;
 meta gridDefinitionDescription codetable_title(gridDefinitionTemplateNumber);
 
+alias is_rotated_grid=zero;
 
 template gridDefinitionSection "grib2/template.3.[gridDefinitionTemplateNumber:l].def";
 
@@ -79,11 +80,24 @@ concept gridType {
  "polar_stereographic"   = { gridDefinitionTemplateNumber=20; PLPresent=0;  }
  "lambert"               = { gridDefinitionTemplateNumber=30; PLPresent=0;  }
  "albers"                = { gridDefinitionTemplateNumber=31; PLPresent=0;  }
+
  "regular_gg"            = { gridDefinitionTemplateNumber=40; PLPresent=0;  }
  "reduced_gg"            = { gridDefinitionTemplateNumber=40; PLPresent=1; numberOfOctectsForNumberOfPoints=2;iDirectionIncrementGiven=0;numberOfPointsAlongAParallel = missing(); }
+
  "rotated_gg"            = { gridDefinitionTemplateNumber=41; PLPresent=0;  }
+ "reduced_rotated_gg"    = { gridDefinitionTemplateNumber=41; PLPresent=1; numberOfOctectsForNumberOfPoints=2;iDirectionIncrementGiven=0;numberOfPointsAlongAParallel = missing(); }
+
  "stretched_gg"          = { gridDefinitionTemplateNumber=42; PLPresent=0;  }
+ "reduced_stretched_gg"  = { gridDefinitionTemplateNumber=42; PLPresent=1; numberOfOctectsForNumberOfPoints=2;iDirectionIncrementGiven=0;numberOfPointsAlongAParallel = missing(); }
+
  "stretched_rotated_gg"  = { gridDefinitionTemplateNumber=43; PLPresent=0;  }
+ "reduced_stretched_rotated_gg" = { gridDefinitionTemplateNumber=43; PLPresent=1; numberOfOctectsForNumberOfPoints=2;iDirectionIncrementGiven=0;numberOfPointsAlongAParallel = missing(); }
+
+# For consistency add the prefix regular_
+"regular_rotated_gg"           = { gridDefinitionTemplateNumber=41; PLPresent=0; } # = rotated_gg
+"regular_stretched_gg"         = { gridDefinitionTemplateNumber=42; PLPresent=0; } # = stretched_gg
+"regular_stretched_rotated_gg" = { gridDefinitionTemplateNumber=43; PLPresent=0; } # = stretched_rotated_gg
+
  "sh"                    = { gridDefinitionTemplateNumber=50; PLPresent=0;}
  "rotated_sh"            = { gridDefinitionTemplateNumber=51; PLPresent=0;}
  "stretched_sh"          = { gridDefinitionTemplateNumber=52; PLPresent=0;}
diff --git a/definitions/grib2/section.4.def b/definitions/grib2/section.4.def
index 4f341cc..0b878f2 100644
--- a/definitions/grib2/section.4.def
+++ b/definitions/grib2/section.4.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -39,7 +39,7 @@ transient genVertHeightCoords = 0;
 template productDefinition "grib2/template.4.[productDefinitionTemplateNumber:l].def" ;
 
 if (defined(marsStream) && defined(marsType)) {
-   template_nofail marsKeywords1 "mars/grib1.[marsStream:s].[marsType:s].def";
+   template_nofail marsKeywords1 "mars/grib.[marsStream:s].[marsType:s].def";
 }
 
 template parameters "grib2/parameters.def";
diff --git a/definitions/grib2/section.5.def b/definitions/grib2/section.5.def
index 56ca994..4ba952c 100644
--- a/definitions/grib2/section.5.def
+++ b/definitions/grib2/section.5.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/section.6.def b/definitions/grib2/section.6.def
index ae4ebd0..801c79c 100644
--- a/definitions/grib2/section.6.def
+++ b/definitions/grib2/section.6.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/section.7.def b/definitions/grib2/section.7.def
index 6ff0377..1e774ec 100644
--- a/definitions/grib2/section.7.def
+++ b/definitions/grib2/section.7.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/section.8.def b/definitions/grib2/section.8.def
index c1db06a..1a2e090 100644
--- a/definitions/grib2/section.8.def
+++ b/definitions/grib2/section.8.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/sections.def b/definitions/grib2/sections.def
index e90d262..6858e0d 100644
--- a/definitions/grib2/sections.def
+++ b/definitions/grib2/sections.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/shortName.def b/definitions/grib2/shortName.def
index 7c1905c..ec69c11 100644
--- a/definitions/grib2/shortName.def
+++ b/definitions/grib2/shortName.def
@@ -1,4 +1,4 @@
-# Automatically generated by create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Sea-ice cover
 'ci' = {
 	 discipline = 10 ;
@@ -94,6 +94,14 @@
 	 parameterCategory = 6 ;
 	 parameterNumber = 32 ;
 	}
+#large scale precipitation
+'lsp' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 54 ;
+	 typeOfFirstFixedSurface = 1 ;
+	 typeOfStatisticalProcessing = 1 ;
+	}
 #Snow depth
 'sd' = {
 	 discipline = 0 ;
@@ -109,6 +117,8 @@
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 10 ;
 	 typeOfStatisticalProcessing = 2 ;
+	 indicatorOfUnitForTimeRange = 1 ;
+	 lengthOfTimeRange = 3 ;
 	}
 #Relative humidity with respect to water
 'rhw' = {
@@ -140,6 +150,12 @@
 	 parameterCategory = 6 ;
 	 parameterNumber = 37 ;
 	}
+#Height of convective cloud top
+'hcct' = {
+	 discipline = 0 ;
+	 parameterCategory = 6 ;
+	 parameterNumber = 27 ;
+	}
 #Soil moisture top 20 cm
 'sm20' = {
 	 discipline = 2 ;
@@ -202,6 +218,200 @@
 	 parameterCategory = 0 ;
 	 parameterNumber = 33 ;
 	}
+#Mean temperature tendency due to short-wave radiation
+'mttswr' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 22 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean temperature tendency due to long-wave radiation
+'mttlwr' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 23 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean temperature tendency due to short-wave radiation, clear sky
+'mttswrcs' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 24 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean temperature tendency due to long-wave radiation, clear sky
+'mttlwrcs' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 25 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean temperature tendency due to parametrisations
+'mttpm' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 26 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean specific humidity tendency due to parametrisations
+'mqtpm' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 108 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean eastward wind tendency due to parametrisations
+'mutpm' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 39 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean northward wind tendency due to parametrisations
+'mvtpm' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 40 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean updraught mass flux
+'mumf' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 27 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean downdraught mass flux
+'mdmf' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 28 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean updraught detrainment rate
+'mudr' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 29 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean downdraught detrainment rate
+'mddr' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 30 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean total precipitation flux
+'mtpf' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 52 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean turbulent diffusion coefficient for heat
+'mtdch' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 20 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Cross sectional area of flow in channel
+'chcross' = {
+	 discipline = 1 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 13 ;
+	}
+#Side flow into river channel
+'chside' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 10 ;
+	}
+#Discharge from rivers or streams
+'dis' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 7 ;
+	}
+#River storage of water
+'rivsto' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 11 ;
+	}
+#Floodplain storage of water
+'fldsto' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 12 ;
+	}
+#Water fraction
+'fldfrc' = {
+	 discipline = 1 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 2 ;
+	}
+#Days since last observation
+'dslr' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 3 ;
+	}
+#Frost index
+'frost' = {
+	 discipline = 2 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 24 ;
+	}
+#Depth of water on soil surface
+'woss' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 13 ;
+	}
+#Upstream accumulated precipitation
+'tpups' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 14 ;
+	}
+#Upstream accumulated snow melt
+'smups' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 15 ;
+	}
+#Snow depth at elevation bands
+'sd_elev' = {
+	 discipline = 2 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 25 ;
+	}
+#Groundwater upper storage
+'gwus' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 8 ;
+	}
+#Groundwater lower storage
+'gwls' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 9 ;
+	}
+#Apparent temperature
+'aptmp' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 21 ;
+	}
+#Haines Index
+'hindex' = {
+	 discipline = 2 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 2 ;
+	}
 #Cloudy brightness temperature
 'clbt' = {
 	 discipline = 3 ;
@@ -322,6 +532,12 @@
 	 parameterCategory = 0 ;
 	 parameterNumber = 1 ;
 	}
+#Virtual potential temperature
+'vptmp' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 15 ;
+	}
 #Pseudo-adiabatic potential temperature
 'papt' = {
 	 discipline = 0 ;
@@ -429,6 +645,8 @@
 	 typeOfStatisticalProcessing = 2 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
+	 indicatorOfUnitForTimeRange = 1 ;
+	 lengthOfTimeRange = 6 ;
 	}
 #Minimum temperature at 2 metres in the last 6 hours
 'mn2t6' = {
@@ -439,6 +657,8 @@
 	 typeOfFirstFixedSurface = 103 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
+	 indicatorOfUnitForTimeRange = 1 ;
+	 lengthOfTimeRange = 6 ;
 	}
 #Geopotential
 'z' = {
@@ -647,14 +867,6 @@
 	 parameterNumber = 17 ;
 	 typeOfFirstFixedSurface = 1 ;
 	}
-#large scale precipitation
-'lsp' = {
-	 discipline = 0 ;
-	 parameterCategory = 1 ;
-	 parameterNumber = 54 ;
-	 typeOfFirstFixedSurface = 1 ;
-	 typeOfStatisticalProcessing = 1 ;
-	}
 #Latent heat net flux
 'lhtfl' = {
 	 discipline = 0 ;
@@ -848,7 +1060,7 @@
 	 parameterNumber = 37 ;
 	}
 #Horizontal moisture divergence
-'mconv' = {
+'mdiv' = {
 	 discipline = 0 ;
 	 parameterCategory = 1 ;
 	 parameterNumber = 38 ;
@@ -2065,6 +2277,12 @@
 	 parameterCategory = 1 ;
 	 parameterNumber = 1 ;
 	}
+#Geometric vertical velocity
+'wz' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 9 ;
+	}
 #Ice temperature
 'ist' = {
 	 discipline = 10 ;
@@ -2113,12 +2331,6 @@
 	 parameterCategory = 3 ;
 	 parameterNumber = 7 ;
 	}
-#Virtual potential temperature
-'vptmp' = {
-	 discipline = 0 ;
-	 parameterCategory = 0 ;
-	 parameterNumber = 15 ;
-	}
 #Maximum temperature
 'tmax' = {
 	 discipline = 0 ;
@@ -2498,7 +2710,7 @@
 	 parameterCategory = 0 ;
 	 parameterNumber = 22 ;
 	}
-#Soil Moisture for TIGGE
+#Soil Moisture
 'sm' = {
 	 discipline = 2 ;
 	 parameterCategory = 0 ;
@@ -2517,7 +2729,7 @@
 	 parameterCategory = 0 ;
 	 parameterNumber = 2 ;
 	}
-#Soil temperature for TIGGE
+#Soil Temperature
 'st' = {
 	 discipline = 2 ;
 	 parameterCategory = 0 ;
diff --git a/definitions/grib2/tables/1.0.table b/definitions/grib2/tables/1.0.table
index b7ea4db..9d2e109 100644
--- a/definitions/grib2/tables/1.0.table
+++ b/definitions/grib2/tables/1.0.table
@@ -13,7 +13,9 @@
 11 11 Version implemented on 8 May 2013
 12 12 Version implemented on 14 November 2013
 13 13 Version implemented on 7 May 2014
-14 14 Version implemented on 5 November 2014 
-15 15 Pre-operational to be implemented by next amendment 
-# 16-254 Future versions 
+14 14 Version implemented on 5 November 2014
+15 15 Version implemented on 6 May 2015
+16 16 Version implemented on 11 November 2015
+17 17 Pre-operational to be implemented by next amendment
+# 18-254 Future versions 
 255 255 Master tables not used. Local table entries and local templates may use the entire range of the table, not just those sections marked Reserved for local used.
diff --git a/definitions/grib2/tables/14/4.225.table b/definitions/grib2/tables/14/4.225.table
index a37c8bb..537f110 100644
--- a/definitions/grib2/tables/14/4.225.table
+++ b/definitions/grib2/tables/14/4.225.table
@@ -1,4 +1,4 @@
-# Code table 4.225 - Weather (see FM 94 BUFR/FM 95 CREX Code table  0 20 003 - Present weather)
+# Code table 4.225 - Weather (see FM 94 BUFR/FM 95 CREX Code table 0 20 003 - Present weather)
 00 00 Cloud development not observed or not observable
 01 01 Clouds generally dissolving or becoming less developed
 02 02 State of sky on the whole unchanged
@@ -105,13 +105,13 @@
 103 103 Clouds generally forming or developing during the past hour
 104 104 Haze or smoke, or dust in suspension in the air, visibility equal to, or greater than, 1 km
 105 105 Haze or smoke, or dust in suspension in the air, visibility less than 1 km
-# 106-109 Reserved
+#106-109 Reserved
 110 110 Mist
 111 111 Diamond dust
 112 112 Distant lightning
 #113-117 Reserved
 118 118 Squalls
-# 119 Reserved
+#119 Reserved
 120 120 Fog
 121 121 PRECIPITATION
 122 122 Drizzle (not freezing) or snow grains
@@ -138,7 +138,7 @@
 146 146 Solid precipitation, heavy
 147 147 Freezing precipitation, slight or moderate
 148 148 Freezing precipitation, heavy
-# 149 Reserved
+#149 Reserved
 150 150 DRIZZLE
 151 151 Drizzle, not freezing, slight
 152 152 Drizzle, not freezing, moderate
@@ -148,7 +148,7 @@
 156 156 Drizzle, freezing, heavy
 157 157 Drizzle and rain, slight
 158 158 Drizzle and rain, moderate or heavy
-# 159 Reserved
+#159 Reserved
 160 160 RAIN
 161 161 Rain, not freezing, slight
 162 162 Rain, not freezing, moderate
@@ -196,6 +196,7 @@
 210 210 Snow haze
 211 211 Whiteout
 213 213 Lightning, cloud to surface
+#214-216 Not used
 217 217 Dry thunderstorm
 219 219 Tornado cloud (destructive) at or within sight of the station during preceding hour or at the time of observation
 220 220 Deposition of volcanic ash
@@ -259,7 +260,7 @@
 291 291 Precipitation of hail, with snow
 292 292 Shower(s) or thunderstorm over sea
 293 293 Shower(s) or thunderstorm over mountains
-# 300-507 Reserved
+#300-507 Reserved
 508 508 No significant phenomenon to report, present and past weather omitted
 509 509 No observation, data not available, present and past weather omitted
 510 510 Present and past weather missing, but expected
diff --git a/definitions/grib2/tables/14/4.230.table b/definitions/grib2/tables/14/4.230.table
index 454536e..323a3a3 100644
--- a/definitions/grib2/tables/14/4.230.table
+++ b/definitions/grib2/tables/14/4.230.table
@@ -412,7 +412,7 @@
 62016 62016 Particulate organic matter hydrophobic dry
 62017 62017 Nitrate hydrophilic dry
 62018 62018 Nitrate hydrophobic dry
-62019 62019 Reserved
+#62019 Reserved
 62020 62020 Smoke - high absorption
 62021 62021 Smoke - low absorption
 62022 62022 Aerosol - high absorption
diff --git a/definitions/grib2/tables/14/4.233.table b/definitions/grib2/tables/14/4.233.table
index b86d590..b0fb5e9 100644
--- a/definitions/grib2/tables/14/4.233.table
+++ b/definitions/grib2/tables/14/4.233.table
@@ -412,7 +412,7 @@
 62016 62016 Particulate organic matter hydrophobic dry
 62017 62017 Nitrate hydrophilic dry
 62018 62018 Nitrate hydrophobic dry
-62019 62019 Reserved
+#62019 Reserved
 62020 62020 Smoke - high absorption
 62021 62021 Smoke - low absorption
 62022 62022 Aerosol - high absorption
diff --git a/definitions/grib2/tables/15/0.0.table b/definitions/grib2/tables/15/0.0.table
new file mode 100644
index 0000000..b24c505
--- /dev/null
+++ b/definitions/grib2/tables/15/0.0.table
@@ -0,0 +1,10 @@
+# Code table 0.0 - Discipline of processed data in the GRIB message, number of GRIB Master table
+0 0 Meteorological products 
+1 1 Hydrological products 
+2 2 Land surface products 
+3 3 Space products 
+# 4-9 Reserved 
+10 10 Oceanographic products 
+# 11-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/1.0.table b/definitions/grib2/tables/15/1.0.table
new file mode 100644
index 0000000..1d1bde1
--- /dev/null
+++ b/definitions/grib2/tables/15/1.0.table
@@ -0,0 +1,20 @@
+# Code table 1.0 - GRIB master tables version number
+0 0 Experimental 
+1 1 Version implemented on 7 November 2001 
+2 2 Version implemented on 4 November 2003 
+3 3 Version implemented on 2 November 2005 
+4 4 Version implemented on 7 November 2007 
+5 5 Version implemented on 4 November 2009 
+6 6 Version implemented on 15 September 2010 
+7 7 Version implemented on 4 May 2011 
+8 8 Version implemented on 2 November 2011 
+9 9 Version implemented on 2 May 2012 
+10 10 Version implemented on 7 November 2012 
+11 11 Version implemented on 8 May 2013 
+12 12 Version implemented on 14 November 2013 
+13 13 Version implemented on 7 May 2014 
+14 14 Version implemented on 5 November 2014 
+15 15 Version implemented on 6 May 2015
+16 16 Pre-operational to be implemented by next amendment 
+# 17-254 Future versions 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/1.1.table b/definitions/grib2/tables/15/1.1.table
new file mode 100644
index 0000000..d50f8fd
--- /dev/null
+++ b/definitions/grib2/tables/15/1.1.table
@@ -0,0 +1,4 @@
+# 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 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/1.2.table b/definitions/grib2/tables/15/1.2.table
new file mode 100644
index 0000000..934b704
--- /dev/null
+++ b/definitions/grib2/tables/15/1.2.table
@@ -0,0 +1,8 @@
+# Code table 1.2 - Significance of reference time
+0 0 Analysis 
+1 1 Start of forecast 
+2 2 Verifying time of forecast 
+3 3 Observation time 
+# 4-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/1.3.table b/definitions/grib2/tables/15/1.3.table
new file mode 100644
index 0000000..6f061bf
--- /dev/null
+++ b/definitions/grib2/tables/15/1.3.table
@@ -0,0 +1,14 @@
+# Code table 1.3 - Production status of data
+0 0 Operational products 
+1 1 Operational test products 
+2 2 Research products 
+3 3 Re-analysis products 
+4 4 THORPEX Interactive Grand Global Ensemble (TIGGE)
+5 5 THORPEX Interactive Grand Global Ensemble test (TIGGE)
+6 6 S2S operational products
+7 7 S2S test products
+8 8 Uncertainties in ensembles of regional reanalysis project (UERRA)
+9 9 Uncertainties in ensembles of regional reanalysis project test (UERRA)
+# 10-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/1.4.table b/definitions/grib2/tables/15/1.4.table
new file mode 100644
index 0000000..03203d8
--- /dev/null
+++ b/definitions/grib2/tables/15/1.4.table
@@ -0,0 +1,13 @@
+# Code table 1.4 - Type of data
+0 an Analysis products 
+1 fc Forecast products 
+2 af Analysis and forecast products 
+3 cf Control forecast products 
+4 pf Perturbed forecast products 
+5 cp Control and perturbed forecast products 
+6 sa Processed satellite observations 
+7 ra Processed radar observations 
+8 ep Event probability 
+# 9-191 Reserved 
+# 192-254 Reserved for local use 
+255 missing Missing 
diff --git a/definitions/grib2/tables/15/1.5.table b/definitions/grib2/tables/15/1.5.table
new file mode 100644
index 0000000..b2cf9f0
--- /dev/null
+++ b/definitions/grib2/tables/15/1.5.table
@@ -0,0 +1,7 @@
+# Code table 1.5 - Identification template number
+0 0 Calendar definition 
+1 1 Paleontological offset 
+2 2 Calendar definition and paleontological offset 
+# 3-32767 Reserved 
+# 32768-65534 Reserved for local use 
+65535 65535 Missing 
diff --git a/definitions/grib2/tables/15/1.6.table b/definitions/grib2/tables/15/1.6.table
new file mode 100644
index 0000000..5db9219
--- /dev/null
+++ b/definitions/grib2/tables/15/1.6.table
@@ -0,0 +1,8 @@
+# Code table 1.6 - Type of calendar
+0 0 Gregorian 
+1 1 360-day 
+2 2 365-day 
+3 3 Proleptic Gregorian 
+# 4-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/3.0.table b/definitions/grib2/tables/15/3.0.table
new file mode 100644
index 0000000..45187b8
--- /dev/null
+++ b/definitions/grib2/tables/15/3.0.table
@@ -0,0 +1,6 @@
+# Code table 3.0 - Source of grid definition
+0 0 Specified in Code table 3.1 
+1 1 Predetermined grid definition (Defined by originating centre)
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 A grid definition does not apply to this product 
diff --git a/definitions/grib2/tables/15/3.1.table b/definitions/grib2/tables/15/3.1.table
new file mode 100644
index 0000000..aa8d987
--- /dev/null
+++ b/definitions/grib2/tables/15/3.1.table
@@ -0,0 +1,47 @@
+# Code table 3.1 - Grid definition template number
+0 0 Latitude/longitude (Also called equidistant cylindrical, or Plate Carree)
+1 1 Rotated latitude/longitude
+2 2 Stretched latitude/longitude
+3 3 Stretched and rotated latitude/longitude
+4 4 Variable resolution latitude/longitude 
+5 5 Variable resolution rotated latitude/longitude 
+# 6-9 Reserved
+10 10 Mercator
+12 12 Transverse Mercator
+# 13-19 Reserved
+20 20 Polar stereographic projection (Can be south or north)
+# 21-29 Reserved 
+30 30 Lambert conformal (Can be secant or tangent, conical or bipolar)
+31 31 Albers equal area 
+# 32-39 Reserved 
+40 40 Gaussian latitude/longitude 
+41 41 Rotated Gaussian latitude/longitude 
+42 42 Stretched Gaussian latitude/longitude 
+43 43 Stretched and rotated Gaussian latitude/longitude 
+# 44-49 Reserved 
+50 50 Spherical harmonic coefficients 
+51 51 Rotated spherical harmonic coefficients 
+52 52 Stretched spherical harmonic coefficients 
+53 53 Stretched and rotated spherical harmonic coefficients 
+# 54-89 Reserved 
+90 90 Space view perspective or orthographic 
+# 91-99 Reserved 
+100 100 Triangular grid based on an icosahedron 
+101 101 General unstructured grid 
+# 102-109 Reserved 
+110 110 Equatorial azimuthal equidistant projection 
+# 111-119 Reserved 
+120 120 Azimuth-range projection 
+# 121-129 Reserved
+130 130 Irregular latitude/longitude grid
+# 131-139 Reserved
+140 140 Lambert azimuthal equal area projection 
+# 141-999 Reserved 
+1000 1000 Cross-section grid with points equally spaced on the horizontal 
+# 1001-1099 Reserved 
+1100 1100 Hovmoller diagram grid with points equally spaced on the horizontal 
+# 1101-1199 Reserved 
+1200 1200 Time section grid 
+# 1201-32767 Reserved 
+# 32768-65534 Reserved for local use 
+65535 65535 Missing 
diff --git a/definitions/grib2/tables/15/3.10.table b/definitions/grib2/tables/15/3.10.table
new file mode 100644
index 0000000..afa8843
--- /dev/null
+++ b/definitions/grib2/tables/15/3.10.table
@@ -0,0 +1,8 @@
+# Flag table 3.10 - Scanning mode for one diamond
+1 0 Points scan in +i direction, i.e. from pole to Equator 
+1 1 Points scan in -i direction, i.e. from Equator to pole 
+2 0 Points scan in +j direction, i.e. from west to east 
+2 1 Points scan in -j direction, i.e. from east to west 
+3 0 Adjacent points in i direction are consecutive 
+3 1 Adjacent points in j direction are consecutive 
+# 4-8 Reserved 
diff --git a/definitions/grib2/tables/15/3.11.table b/definitions/grib2/tables/15/3.11.table
new file mode 100644
index 0000000..e516a2a
--- /dev/null
+++ b/definitions/grib2/tables/15/3.11.table
@@ -0,0 +1,7 @@
+# Code table 3.11 - Interpretation of list of numbers at end of section 3
+0 0 There is no appended list 
+1 1 Numbers define number of points corresponding to full coordinate circles (i.e. parallels), coordinate values on each circle are multiple of the circle mesh, and extreme coordinate values given in grid definition (i.e. extreme longitudes) may not be reached in all rows 
+2 2 Numbers define number of points corresponding to coordinate lines delimited by extreme coordinate values given in grid definition (i.e. extreme longitudes) which are present in each row 
+3 3 Numbers define the actual latitudes for each row in the grid. The list of numbers are integer values of the valid latitudes in microdegrees (scaled by 10-6) or in unit equal to the ratio of the basic angle and the subdivisions number for each row, in the same order as specified in the scanning mode flag (bit no. 2) 
+# 4-254 Reserved 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/3.15.table b/definitions/grib2/tables/15/3.15.table
new file mode 100644
index 0000000..331217e
--- /dev/null
+++ b/definitions/grib2/tables/15/3.15.table
@@ -0,0 +1,23 @@
+# Code table 3.15 - Physical meaning of vertical coordinate
+# 0-19 Reserved 
+20 20 Temperature (K)
+# 21-99 Reserved 
+100 100 Pressure (Pa)
+101 101 Pressure deviation from mean sea level (Pa)
+102 102 Altitude above mean sea level (m)
+103 103 Height above ground (m)
+104 104 Sigma coordinate 
+105 105 Hybrid coordinate 
+106 106 Depth below land surface (m)
+107 pt Potential temperature (theta) (K)
+108 108 Pressure deviation from ground to level (Pa)
+109 pv Potential vorticity (K m-2 kg-1 s-1)
+110 110 Geometrical height (m)
+111 111 Eta coordinate 
+112 112 Geopotential height (gpm)
+113 113 Logarithmic hybrid coordinate 
+# 114-159 Reserved 
+160 160 Depth below sea level (m)
+# 161-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/3.2.table b/definitions/grib2/tables/15/3.2.table
new file mode 100644
index 0000000..9238dc2
--- /dev/null
+++ b/definitions/grib2/tables/15/3.2.table
@@ -0,0 +1,14 @@
+# Code table 3.2 - Shape of the Earth
+0 0 Earth assumed spherical with radius = 6 367 470.0 m 
+1 1 Earth assumed spherical with radius specified (in m) by data producer 
+2 2 Earth assumed oblate spheroid with size as determined by IAU in 1965 (major axis = 6 378 160.0 m, minor axis = 6 356 775.0 m, f = 1/297.0) 
+3 3 Earth assumed oblate spheroid with major and minor axes specified (in km) by data producer 
+4 4 Earth assumed oblate spheroid as defined in IAG-GRS80 model (major axis = 6 378 137.0 m, minor axis = 6 356 752.314 m, f = 1/298.257 222 101) 
+5 5 Earth assumed represented by WGS84 (as used by ICAO since 1998) 
+6 6 Earth assumed spherical with radius of 6 371 229.0 m 
+7 7 Earth assumed oblate spheroid with major or minor axes specified (in m) by data producer 
+8 8 Earth model assumed spherical with radius of 6 371 200 m, but the horizontal datum of the resulting latitude/longitude field is the WGS84 reference frame 
+9 9 Earth represented by the Ordnance Survey Great Britain 1936 Datum, using the Airy 1830 Spheroid, the Greenwich meridian as 0 longitude, and the Newlyn datum as mean sea level, 0 height 
+# 10-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/3.20.table b/definitions/grib2/tables/15/3.20.table
new file mode 100644
index 0000000..efbf08d
--- /dev/null
+++ b/definitions/grib2/tables/15/3.20.table
@@ -0,0 +1,6 @@
+# Code table 3.20 - Type of horizontal line
+0 0 Rhumb 
+1 1 Great circle 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/3.21.table b/definitions/grib2/tables/15/3.21.table
new file mode 100644
index 0000000..88dbb90
--- /dev/null
+++ b/definitions/grib2/tables/15/3.21.table
@@ -0,0 +1,8 @@
+# Code table 3.21 - Vertical dimension coordinate values definition
+0 0 Explicit coordinate values set 
+1 1 Linear coordinates f(1) = C1, f(n) = f(n-1) + C2 
+# 2-10 Reserved 
+11 11 Geometric coordinates f(1) = C1, f(n) = C2 * f(n-1) 
+# 12-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/3.3.table b/definitions/grib2/tables/15/3.3.table
new file mode 100644
index 0000000..5dd7c70
--- /dev/null
+++ b/definitions/grib2/tables/15/3.3.table
@@ -0,0 +1,9 @@
+# Flag table 3.3 - Resolution and component flags
+# 1-2 Reserved 
+3 0 i direction increments not given 
+3 1 i direction increments given 
+4 0 j direction increments not given 
+4 1 j direction increments given 
+5 0 Resolved u- and v- components of vector quantities relative to easterly and northerly directions 
+5 1 Resolved u- and v- components of vector quantities relative to the defined grid in the direction of increasing x and y (or i and j) coordinates, respectively 
+# 6-8 Reserved - set to zero 
diff --git a/definitions/grib2/tables/15/3.4.table b/definitions/grib2/tables/15/3.4.table
new file mode 100644
index 0000000..897b813
--- /dev/null
+++ b/definitions/grib2/tables/15/3.4.table
@@ -0,0 +1,17 @@
+# Flag table 3.4 - Scanning mode
+1 0 Points of first row or column scan in the +i (+x) direction 
+1 1 Points of first row or column scan in the -i (-x) direction 
+2 0 Points of first row or column scan in the -j (-y) direction 
+2 1 Points of first row or column scan in the +j (+y) direction 
+3 0 Adjacent points in i (x) direction are consecutive 
+3 1 Adjacent points in j (y) direction is consecutive 
+4 0 All rows scan in the same direction 
+4 1 Adjacent rows scans in the opposite direction 
+5 0 Points within odd rows are not offset in i (x) direction 
+5 1 Points within odd rows are offset by Di/2 in i (x) direction 
+6 0 Points within even rows are not offset in i (x) direction 
+6 1 Points within even rows are offset by Di/2 in i (x) direction 
+7 0 Points are not offset in j (y) direction 
+7 1 Points are offset by Dj/2 in j (y) direction 
+8 0 Rows have Ni grid points and columns have Nj grid points 
+8 1 Rows have Ni grid points if points are not offset in i direction  Rows have Ni-1 grid points if points are offset by Di/2 in i direction  Columns have Nj grid points if points are not offset in j direction  Columns have Nj-1 grid points if points are offset by Dj/2 in j direction 
diff --git a/definitions/grib2/tables/15/3.5.table b/definitions/grib2/tables/15/3.5.table
new file mode 100644
index 0000000..eabdde8
--- /dev/null
+++ b/definitions/grib2/tables/15/3.5.table
@@ -0,0 +1,5 @@
+# Flag table 3.5 - Projection centre
+1 0 North Pole is on the projection plane 
+1 1 South Pole is on the projection plane 
+2 0 Only one projection centre is used 
+2 1 Projection is bipolar and symmetric 
diff --git a/definitions/grib2/tables/15/3.6.table b/definitions/grib2/tables/15/3.6.table
new file mode 100644
index 0000000..d381959
--- /dev/null
+++ b/definitions/grib2/tables/15/3.6.table
@@ -0,0 +1,2 @@
+# Code table 3.6 - Spectral data representation type
+1 1 see separate doc or pdf file
diff --git a/definitions/grib2/tables/15/3.7.table b/definitions/grib2/tables/15/3.7.table
new file mode 100644
index 0000000..0a7d6ef
--- /dev/null
+++ b/definitions/grib2/tables/15/3.7.table
@@ -0,0 +1,5 @@
+# Code table 3.7 - Spectral data representation mode
+0 0 Reserved 
+1 1 see separate doc or pdf file
+# 2-254 Reserved 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/3.8.table b/definitions/grib2/tables/15/3.8.table
new file mode 100644
index 0000000..844e742
--- /dev/null
+++ b/definitions/grib2/tables/15/3.8.table
@@ -0,0 +1,7 @@
+# Code table 3.8 - Grid point position
+0 0 Grid points at triangle vertices 
+1 1 Grid points at centres of triangles 
+2 2 Grid points at midpoints of triangle sides 
+# 3-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/3.9.table b/definitions/grib2/tables/15/3.9.table
new file mode 100644
index 0000000..fd730bc
--- /dev/null
+++ b/definitions/grib2/tables/15/3.9.table
@@ -0,0 +1,4 @@
+# Flag table 3.9 - Numbering order of diamonds as seen from the corresponding pole
+1 0 Clockwise orientation 
+1 1 Anti-clockwise (i.e. counter-clockwise) orientation 
+# 2-8 Reserved 
diff --git a/definitions/grib2/tables/15/4.0.table b/definitions/grib2/tables/15/4.0.table
new file mode 100644
index 0000000..b4eff07
--- /dev/null
+++ b/definitions/grib2/tables/15/4.0.table
@@ -0,0 +1,64 @@
+# Code table 4.0 - Product definition template number
+0 0 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time 
+1 1 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time 
+2 2 Derived forecasts based on all ensemble members at a horizontal level or in a horizontal layer at a point in time 
+3 3 Derived forecasts based on a cluster of ensemble members over a rectangular area at a horizontal level or in a horizontal layer at a point in time 
+4 4 Derived forecasts based on a cluster of ensemble members over a circular area at a horizontal level or in a horizontal layer at a point in time 
+5 5 Probability forecasts at a horizontal level or in a horizontal layer at a point in time 
+6 6 Percentile forecasts at a horizontal level or in a horizontal layer at a point in time 
+7 7 Analysis or forecast error at a horizontal level or in a horizontal layer at a point in time 
+8 8 Average, accumulation, extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval 
+9 9 Probability forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval 
+10 10 Percentile forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval 
+11 11 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval 
+12 12 Derived forecasts based on all ensemble members at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval 
+13 13 Derived forecasts based on a cluster of ensemble members over a rectangular area, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval 
+14 14 Derived forecasts based on a cluster of ensemble members over a circular area, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval 
+15 15 Average, accumulation, extreme values, or other statistically processed values over a spatial area at a horizontal level or in a horizontal layer at a point in time 
+# 16-19 Reserved 
+20 20 Radar product 
+# 21-29 Reserved 
+30 30 Satellite product (deprecated) 
+31 31 Satellite product 
+32 32 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data 
+33 33 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data 
+34 34 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval for simulated (synthetic) satellite data 
+# 35-39 Reserved 
+311 311 Satellite product auxiliary information
+40 40 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents 
+41 41 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents 
+42 42 Average, accumulation and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents 
+43 43 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents 
+44 44 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for aerosol 
+45 45 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for aerosol 
+46 46 Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol 
+47 47 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non continuous time interval for aerosol 
+48 48 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol 
+# 49-50 Reserved 
+51 51 Categorical forecasts at a horizontal level or in a horizontal layer at a point in time 
+52 52 Reserved 
+53 53 Partitioned parameters at a horizontal level or in a horizontal layer at a point in time 
+54 54 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for partitioned parameters 
+# 55-56 Reserved 
+57 57 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents based on a distribution function 
+# 58-59 Reserved 
+60 60 Individual ensemble reforecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time 
+61 61 Individual ensemble reforecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
+# 62-90 Reserved 
+91 91 Categorical forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval 
+# 92-253 Reserved 
+254 254 CCITT IA5 character string 
+# 255-999 Reserved 
+1000 1000 Cross-section of analysis and forecast at a point in time 
+1001 1001 Cross-section of averaged or otherwise statistically processed analysis or forecast over a range of time 
+1002 1002 Cross-section of analysis and forecast, averaged or otherwise statistically processed over latitude or longitude 
+# 1003-1099 Reserved 
+1100 1100 Hovmoller-type grid with no averaging or other statistical processing 
+1101 1101 Hovmoller-type grid with averaging or other statistical processing 
+50001 50001 Forecasting Systems with Variable Resolution in a point in time
+50011 50011 Forecasting Systems with Variable Resolution in a continous or non countinous time interval
+# 1102-32767 Reserved 
+# 32768-65534 Reserved for local use 
+40033 40033 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data
+40034 40034 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval for simulated (synthetic) satellite data
+65535 65535 Missing 
diff --git a/definitions/grib2/tables/15/4.1.0.table b/definitions/grib2/tables/15/4.1.0.table
new file mode 100644
index 0000000..04cfd78
--- /dev/null
+++ b/definitions/grib2/tables/15/4.1.0.table
@@ -0,0 +1,27 @@
+# Code table 4.1 - Parameter category by product discipline
+0 0 Temperature 
+1 1 Moisture 
+2 2 Momentum 
+3 3 Mass 
+4 4 Short-wave radiation 
+5 5 Long-wave radiation 
+6 6 Cloud 
+7 7 Thermodynamic stability indices 
+8 8 Kinematic stability indices 
+9 9 Temperature probabilities 
+10 10 Moisture probabilities 
+11 11 Momentum probabilities 
+12 12 Mass probabilities 
+13 13 Aerosols 
+14 14 Trace gases (e.g. ozone, CO2) 
+15 15 Radar 
+16 16 Forecast radar imagery 
+17 17 Electrodynamics 
+18 18 Nuclear/radiology 
+19 19 Physical atmospheric properties 
+20 20 Atmospheric chemical constituents 
+# 21-189 Reserved 
+190 190 CCITT IA5 string 
+191 191 Miscellaneous 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.1.1.table b/definitions/grib2/tables/15/4.1.1.table
new file mode 100644
index 0000000..7b22b6f
--- /dev/null
+++ b/definitions/grib2/tables/15/4.1.1.table
@@ -0,0 +1,7 @@
+# Code table 4.1 - Parameter category by product discipline
+0 0 Hydrology basic products 
+1 1 Hydrology probabilities 
+2 2 Inland water and sediment properties 
+# 3-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.1.10.table b/definitions/grib2/tables/15/4.1.10.table
new file mode 100644
index 0000000..a9b20eb
--- /dev/null
+++ b/definitions/grib2/tables/15/4.1.10.table
@@ -0,0 +1,10 @@
+# Code table 4.1 - Parameter category by product discipline
+0 0 Waves 
+1 1 Currents 
+2 2 Ice 
+3 3 Surface properties 
+4 4 Subsurface properties 
+# 5-190 Reserved 
+191 191 Miscellaneous 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.1.192.table b/definitions/grib2/tables/15/4.1.192.table
new file mode 100644
index 0000000..c428aca
--- /dev/null
+++ b/definitions/grib2/tables/15/4.1.192.table
@@ -0,0 +1,4 @@
+#Discipline 192: ECMWF local parameters
+255 255 Missing
+
+
diff --git a/definitions/grib2/tables/15/4.1.2.table b/definitions/grib2/tables/15/4.1.2.table
new file mode 100644
index 0000000..5b488fe
--- /dev/null
+++ b/definitions/grib2/tables/15/4.1.2.table
@@ -0,0 +1,9 @@
+# Code table 4.1 - Parameter category by product discipline
+0 0 Vegetation/biomass 
+1 1 Agri-/aquacultural special products 
+2 2 Transportation-related products 
+3 3 Soil products 
+4 4 Fire weather products 
+# 5-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.1.3.table b/definitions/grib2/tables/15/4.1.3.table
new file mode 100644
index 0000000..5096a16
--- /dev/null
+++ b/definitions/grib2/tables/15/4.1.3.table
@@ -0,0 +1,6 @@
+# Code table 4.1 - Parameter category by product discipline
+0 0 Image format products 
+1 1 Quantitative products 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.10.table b/definitions/grib2/tables/15/4.10.table
new file mode 100644
index 0000000..1a92baa
--- /dev/null
+++ b/definitions/grib2/tables/15/4.10.table
@@ -0,0 +1,16 @@
+# Code table 4.10 - Type of statistical processing
+0 avg Average 
+1 accum Accumulation 
+2 max Maximum 
+3 min Minimum 
+4 diff Difference (value at the end of time range minus value at the beginning) 
+5 rms Root mean square 
+6 sd Standard deviation 
+7 cov Covariance (temporal variance) 
+8 8 Difference (value at the start of time range minus value at the end) 
+9 ratio Ratio 
+10 10 Standardized anomaly 
+11 11 Summation 
+# 12-191 Reserved 
+# 192-254 Reserved for local use 
+255 missing Missing 
diff --git a/definitions/grib2/tables/15/4.11.table b/definitions/grib2/tables/15/4.11.table
new file mode 100644
index 0000000..7f404c8
--- /dev/null
+++ b/definitions/grib2/tables/15/4.11.table
@@ -0,0 +1,10 @@
+# Code table 4.11 - Type of time intervals
+0 0 Reserved 
+1 1 Successive times processed have same forecast time, start time of forecast is incremented 
+2 2 Successive times processed have same start time of forecast, forecast time is incremented 
+3 3 Successive times processed have start time of forecast incremented and forecast time decremented so that valid time remains constant 
+4 4 Successive times processed have start time of forecast decremented and forecast time incremented so that valid time remains constant 
+5 5 Floating subinterval of time between forecast time and end of overall time interval 
+# 6-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.12.table b/definitions/grib2/tables/15/4.12.table
new file mode 100644
index 0000000..03fd89b
--- /dev/null
+++ b/definitions/grib2/tables/15/4.12.table
@@ -0,0 +1,7 @@
+# Code table 4.12 - Operating mode
+0 0 Maintenance mode 
+1 1 Clear air 
+2 2 Precipitation 
+# 3-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.13.table b/definitions/grib2/tables/15/4.13.table
new file mode 100644
index 0000000..c92854e
--- /dev/null
+++ b/definitions/grib2/tables/15/4.13.table
@@ -0,0 +1,6 @@
+# Code table 4.13 - Quality control indicator
+0 0 No quality control applied 
+1 1 Quality control applied 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.14.table b/definitions/grib2/tables/15/4.14.table
new file mode 100644
index 0000000..a88cb93
--- /dev/null
+++ b/definitions/grib2/tables/15/4.14.table
@@ -0,0 +1,6 @@
+# Code table 4.14 - Clutter filter indicator
+0 0 No clutter filter used 
+1 1 Clutter filter used 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.15.table b/definitions/grib2/tables/15/4.15.table
new file mode 100644
index 0000000..2e5f3de
--- /dev/null
+++ b/definitions/grib2/tables/15/4.15.table
@@ -0,0 +1,11 @@
+# Code table 4.15 - Type of spatial processing used to arrive at given data value from the source data
+0 0 Data is calculated directly from the source grid with no interpolation 
+1 1 Bilinear interpolation using the 4 source grid grid-point values surrounding the nominal grid-point 
+2 2 Bicubic interpolation using the 4 source grid grid-point values surrounding the nominal grid-point 
+3 3 Using the value from the source grid grid-point which is nearest to the nominal grid-point 
+4 4 Budget interpolation using the 4 source grid grid-point values surrounding the nominal grid-point 
+5 5 Spectral interpolation using the 4 source grid grid-point values surrounding the nominal grid-point 
+6 6 Neighbor-budget interpolation using the 4 source grid grid-point values surrounding the nominal grid-point 
+# 7-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.192.table b/definitions/grib2/tables/15/4.192.table
new file mode 100644
index 0000000..e1fd915
--- /dev/null
+++ b/definitions/grib2/tables/15/4.192.table
@@ -0,0 +1,4 @@
+1 1 first
+2 2 second
+3 3 third
+4 4 fourth
diff --git a/definitions/grib2/tables/15/4.2.0.0.table b/definitions/grib2/tables/15/4.2.0.0.table
new file mode 100644
index 0000000..41e5291
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.0.0.table
@@ -0,0 +1,26 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Temperature (K)
+1 1 Virtual temperature (K)
+2 2 Potential temperature (K)
+3 3 Pseudo-adiabatic potential temperature or equivalent potential temperature (K)
+4 4 Maximum temperature (K)
+5 5 Minimum temperature (K)
+6 6 Dewpoint temperature (K)
+7 7 Dewpoint depression (or deficit) (K)
+8 8 Lapse rate (K/m)
+9 9 Temperature anomaly (K)
+10 10 Latent heat net flux (W m-2)
+11 11 Sensible heat net flux (W m-2)
+12 12 Heat index (K)
+13 13 Wind chill factor (K)
+14 14 Minimum dewpoint depression (K)
+15 15 Virtual potential temperature (K)
+16 16 Snow phase change heat flux (W m-2)
+17 17 Skin temperature (K)
+18 18 Snow temperature (top of snow) (K)
+19 19 Turbulent transfer coefficient for heat (Numeric)
+20 20 Turbulent diffusion coefficient for heat (m2/s)
+21 21 Apparent temperature (K)
+# 22-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.0.1.table b/definitions/grib2/tables/15/4.2.0.1.table
new file mode 100644
index 0000000..c90ade1
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.0.1.table
@@ -0,0 +1,110 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Specific humidity (kg/kg)
+1 1 Relative humidity (%)
+2 2 Humidity mixing ratio (kg/kg)
+3 3 Precipitable water (kg m-2)
+4 4 Vapour pressure (Pa)
+5 5 Saturation deficit (Pa)
+6 6 Evaporation (kg m-2)
+7 7 Precipitation rate (kg m-2 s-1)
+8 8 Total precipitation (kg m-2)
+9 9 Large-scale precipitation (non-convective) (kg m-2)
+10 10 Convective precipitation (kg m-2)
+11 11 Snow depth (m)
+12 12 Snowfall rate water equivalent (kg m-2 s-1)
+13 13 Water equivalent of accumulated snow depth (kg m-2)
+14 14 Convective snow (kg m-2)
+15 15 Large-scale snow (kg m-2)
+16 16 Snow melt (kg m-2)
+17 17 Snow age (d)
+18 18 Absolute humidity (kg m-3)
+19 19 Precipitation type ((Code table 4.201))
+20 20 Integrated liquid water (kg m-2)
+21 21 Condensate (kg/kg)
+22 22 Cloud mixing ratio (kg/kg)
+23 23 Ice water mixing ratio (kg/kg)
+24 24 Rain mixing ratio (kg/kg)
+25 25 Snow mixing ratio (kg/kg)
+26 26 Horizontal moisture convergence (kg kg-1 s-1)
+27 27 Maximum relative humidity (%)
+28 28 Maximum absolute humidity (kg m-3)
+29 29 Total snowfall (m)
+30 30 Precipitable water category ((Code table 4.202))
+31 31 Hail (m)
+32 32 Graupel (snow pellets) (kg/kg)
+33 33 Categorical rain ((Code table 4.222))
+34 34 Categorical freezing rain ((Code table 4.222))
+35 35 Categorical ice pellets ((Code table 4.222))
+36 36 Categorical snow ((Code table 4.222))
+37 37 Convective precipitation rate (kg m-2 s-1)
+38 38 Horizontal moisture divergence (kg kg-1 s-1)
+39 39 Per cent frozen precipitation (%)
+40 40 Potential evaporation (kg m-2)
+41 41 Potential evaporation rate (W m-2)
+42 42 Snow cover (%)
+43 43 Rain fraction of total cloud water (Proportion)
+44 44 Rime factor (Numeric)
+45 45 Total column integrated rain (kg m-2)
+46 46 Total column integrated snow (kg m-2)
+47 47 Large scale water precipitation (non-convective) (kg m-2)
+48 48 Convective water precipitation (kg m-2)
+49 49 Total water precipitation (kg m-2)
+50 50 Total snow precipitation (kg m-2)
+51 51 Total column water (Vertically integrated total water (vapour + cloud water/ice)) (kg m-2)
+52 52 Total precipitation rate (kg m-2 s-1)
+53 53 Total snowfall rate water equivalent (kg m-2 s-1)
+54 54 Large scale precipitation rate (kg m-2 s-1)
+55 55 Convective snowfall rate water equivalent (kg m-2 s-1)
+56 56 Large scale snowfall rate water equivalent (kg m-2 s-1)
+57 57 Total snowfall rate (m/s)
+58 58 Convective snowfall rate (m/s)
+59 59 Large scale snowfall rate (m/s)
+60 60 Snow depth water equivalent (kg m-2)
+61 61 Snow density (kg m-3)
+62 62 Snow evaporation (kg m-2)
+63 63 Reserved 
+64 64 Total column integrated water vapour (kg m-2)
+65 65 Rain precipitation rate (kg m-2 s-1)
+66 66 Snow precipitation rate (kg m-2 s-1)
+67 67 Freezing rain precipitation rate (kg m-2 s-1)
+68 68 Ice pellets precipitation rate (kg m-2 s-1)
+69 69 Total column integrated cloud water (kg m-2)
+70 70 Total column integrated cloud ice (kg m-2)
+71 71 Hail mixing ratio (kg/kg)
+72 72 Total column integrated hail (kg m-2)
+73 73 Hail precipitation rate (kg m-2 s-1)
+74 74 Total column integrated graupel (kg m-2)
+75 75 Graupel (snow pellets) precipitation rate (kg m-2 s-1)
+76 76 Convective rain rate (kg m-2 s-1)
+77 77 Large scale rain rate (kg m-2 s-1)
+78 78 Total column integrated water (all components including precipitation) (kg m-2)
+79 79 Evaporation rate (kg m-2 s-1)
+80 80 Total condensate (kg/kg)
+81 81 Total column-integrated condensate (kg m-2)
+82 82 Cloud ice mixing-ratio (kg/kg)
+83 83 Specific cloud liquid water content (kg/kg)
+84 84 Specific cloud ice water content (kg/kg)
+85 85 Specific rainwater content (kg/kg)
+86 86 Specific snow water content (kg/kg)
+# 87-89 Reserved 
+90 90 Total kinematic moisture flux (kg kg-1 m s-1)
+91 91 u-component (zonal) kinematic moisture flux (kg kg-1 m s-1)
+92 92 v-component (meridional) kinematic moisture flux (kg kg-1 m s-1)
+93 93 Relative humidity with respect to water (%)
+94 94 Relative humidity with respect to ice (%)
+95 95 Freezing or frozen precipitation rate (kg m-2 s-1)
+96 96 Mass density of rain (kg m-3)
+97 97 Mass density of snow (kg m-3)
+98 98 Mass density of graupel (kg m-3)
+99 99 Mass density of hail (kg m-3)
+100 100 Specific number concentratoin of rain (kg-1)
+101 101 Specific number concentratoin of sonw (kg-1)
+102 102 Specific number concentratoin of graupel (kg-1)
+103 103 Specific number concentratoin of hail (kg-1)
+104 104 Number density of rain (m-3)
+105 105 Number density of snow (m-3)
+106 106 Number density of graupel (m-3)
+107 107 Number density of hail (m-3)
+# 108-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.0.13.table b/definitions/grib2/tables/15/4.2.0.13.table
new file mode 100644
index 0000000..e9feb09
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.0.13.table
@@ -0,0 +1,5 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Aerosol type ((Code table 4.205))
+# 1-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.0.14.table b/definitions/grib2/tables/15/4.2.0.14.table
new file mode 100644
index 0000000..2158847
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.0.14.table
@@ -0,0 +1,7 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Total ozone (DU)
+1 1 Ozone mixing ratio (kg/kg)
+2 2 Total column integrated ozone (DU)
+# 3-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.0.15.table b/definitions/grib2/tables/15/4.2.0.15.table
new file mode 100644
index 0000000..dfbc4d1
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.0.15.table
@@ -0,0 +1,21 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Base spectrum width (m/s)
+1 1 Base reflectivity (dB)
+2 2 Base radial velocity (m/s)
+3 3 Vertically integrated liquid water (VIL) (kg m-2)
+4 4 Layer-maximum base reflectivity (dB)
+5 5 Precipitation (kg m-2)
+6 6 Radar spectra (1) (-)
+7 7 Radar spectra (2) (-)
+8 8 Radar spectra (3) (-)
+9 9 Reflectivity of cloud droplets (dB)
+10 10 Reflectivity of cloud ice (dB)
+11 11 Reflectivity of snow (dB)
+12 12 Reflectivity of rain (dB)
+13 13 Reflectivity of graupel (dB)
+14 14 Reflectivity of hail (dB)
+15 15 Hybrid scan reflectivity (dB)
+16 16 Hybrid scan reflectivity height (m)
+# 17-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.0.16.table b/definitions/grib2/tables/15/4.2.0.16.table
new file mode 100644
index 0000000..0c240a8
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.0.16.table
@@ -0,0 +1,10 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Equivalent radar reflectivity factor for rain (mm6 m-3)
+1 1 Equivalent radar reflectivity factor for snow (mm6 m-3)
+2 2 Equivalent radar reflectivity factor for parameterized convection (mm6 m-3)
+3 3 Echo top (m)
+4 4 Reflectivity (dB)
+5 5 Composite reflectivity (dB)
+# 6-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.0.17.table b/definitions/grib2/tables/15/4.2.0.17.table
new file mode 100644
index 0000000..d481c02
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.0.17.table
@@ -0,0 +1,2 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Lightning strike density (m-2 s-1)
diff --git a/definitions/grib2/tables/15/4.2.0.18.table b/definitions/grib2/tables/15/4.2.0.18.table
new file mode 100644
index 0000000..18c41aa
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.0.18.table
@@ -0,0 +1,18 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Air concentration of caesium 137 (Bq m-3)
+1 1 Air concentration of iodine 131 (Bq m-3)
+2 2 Air concentration of radioactive pollutant (Bq m-3)
+3 3 Ground deposition of caesium 137 (Bq m-2)
+4 4 Ground deposition of iodine 131 (Bq m-2)
+5 5 Ground deposition of radioactive pollutant (Bq m-2)
+6 6 Time-integrated air concentration of caesium pollutant (Bq s m-3)
+7 7 Time-integrated air concentration of iodine pollutant (Bq s m-3)
+8 8 Time-integrated air concentration of radioactive pollutant (Bq s m-3)
+9 9 Reserved 
+10 10 Air concentration (Bq m-3)
+11 11 Wet deposition (Bq m-2)
+12 12 Dry deposition (Bq m-2)
+13 13 Total deposition (wet + dry) (Bq m-2)
+# 14-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.0.19.table b/definitions/grib2/tables/15/4.2.0.19.table
new file mode 100644
index 0000000..0478ef1
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.0.19.table
@@ -0,0 +1,32 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Visibility (m)
+1 1 Albedo (%)
+2 2 Thunderstorm probability (%)
+3 3 Mixed layer depth (m)
+4 4 Volcanic ash ((Code table 4.206))
+5 5 Icing top (m)
+6 6 Icing base (m)
+7 7 Icing ((Code table 4.207))
+8 8 Turbulence top (m)
+9 9 Turbulence base (m)
+10 10 Turbulence ((Code table 4.208))
+11 11 Turbulent kinetic energy (J/kg)
+12 12 Planetary boundary-layer regime ((Code table 4.209))
+13 13 Contrail intensity ((Code table 4.210))
+14 14 Contrail engine type ((Code table 4.211))
+15 15 Contrail top (m)
+16 16 Contrail base (m)
+17 17 Maximum snow albedo (%)
+18 18 Snow free albedo (%)
+19 19 Snow albedo (%)
+20 20 Icing (%)
+21 21 In-cloud turbulence (%)
+22 22 Clear air turbulence (CAT) (%)
+23 23 Supercooled large droplet probability (%)
+24 24 Convective turbulent kinetic energy (J/kg)
+25 25 Weather ((Code table 4.225))
+26 26 Convective outlook ((Code table 4.224))
+27 27 Icing scenario ((Code table 4.227))
+# 28-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.0.190.table b/definitions/grib2/tables/15/4.2.0.190.table
new file mode 100644
index 0000000..de621a9
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.0.190.table
@@ -0,0 +1,5 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Arbitrary text string (CCITT IA5)
+# 1-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.0.191.table b/definitions/grib2/tables/15/4.2.0.191.table
new file mode 100644
index 0000000..e3bba0e
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.0.191.table
@@ -0,0 +1,8 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Seconds prior to initial reference time (defined in Section 1) (s)
+1 1 Geographical latitude (deg N)
+2 2 Geographical longitude (deg E)
+3 3 Days since last observation (d)
+# 4-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.0.2.table b/definitions/grib2/tables/15/4.2.0.2.table
new file mode 100644
index 0000000..c83b073
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.0.2.table
@@ -0,0 +1,43 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Wind direction (from which blowing) (degree true)
+1 1 Wind speed (m/s)
+2 2 u-component of wind (m/s)
+3 3 v-component of wind (m/s)
+4 4 Stream function (m2/s)
+5 5 Velocity potential (m2/s)
+6 6 Montgomery stream function (m2 s-2)
+7 7 Sigma coordinate vertical velocity (/s)
+8 8 Vertical velocity (pressure) (Pa/s)
+9 9 Vertical velocity (geometric) (m/s)
+10 10 Absolute vorticity (/s)
+11 11 Absolute divergence (/s)
+12 12 Relative vorticity (/s)
+13 13 Relative divergence (/s)
+14 14 Potential vorticity (K m2 kg-1 s-1)
+15 15 Vertical u-component shear (/s)
+16 16 Vertical v-component shear (/s)
+17 17 Momentum flux, u-component (N m-2)
+18 18 Momentum flux, v-component (N m-2)
+19 19 Wind mixing energy (J)
+20 20 Boundary layer dissipation (W m-2)
+21 21 Maximum wind speed (m/s)
+22 22 Wind speed (gust) (m/s)
+23 23 u-component of wind (gust) (m/s)
+24 24 v-component of wind (gust) (m/s)
+25 25 Vertical speed shear (/s)
+26 26 Horizontal momentum flux (N m-2)
+27 27 u-component storm motion (m/s)
+28 28 v-component storm motion (m/s)
+29 29 Drag coefficient (Numeric)
+30 30 Frictional velocity (m/s)
+31 31 Turbulent diffusion coefficient for momentum (m2/s)
+32 32 Eta coordinate vertical velocity (/s)
+33 33 Wind fetch (m)
+34 34 Normal wind component (m/s)
+35 35 Tangential wind component (m/s)
+36 36 Amplitude function for Rossby wave envelope for meridional wind (m/s)
+37 37 Northward turbulent surface stress (N m-2 s)
+38 38 Eastward turbulent surface stress (N m-2 s)
+# 39-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.0.20.table b/definitions/grib2/tables/15/4.2.0.20.table
new file mode 100644
index 0000000..9584f7c
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.0.20.table
@@ -0,0 +1,42 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Mass density (concentration) (kg m-3)
+1 1 Column-integrated mass density (kg m-2)
+2 2 Mass mixing ratio (mass fraction in air) (kg/kg)
+3 3 Atmosphere emission mass flux (kg m-2 s-1)
+4 4 Atmosphere net production mass flux (kg m-2 s-1)
+5 5 Atmosphere net production and emission mass flux (kg m-2 s-1)
+6 6 Surface dry deposition mass flux (kg m-2 s-1)
+7 7 Surface wet deposition mass flux (kg m-2 s-1)
+8 8 Atmosphere re-emission mass flux (kg m-2 s-1)
+9 9 Wet deposition by large-scale precipitation mass flux (kg m-2 s-1)
+10 10 Wet deposition by convective precipitation mass flux (kg m-2 s-1)
+11 11 Sedimentation mass flux (kg m-2 s-1)
+12 12 Dry deposition mass flux (kg m-2 s-1)
+13 13 Transfer from hydrophobic to hydrophilic (kg kg-1 s-1)
+14 14 Transfer from SO2 (sulphur dioxide) to SO4 (sulphate) (kg kg-1 s-1)
+# 15-49 Reserved 
+50 50 Amount in atmosphere (mol)
+51 51 Concentration in air (mol m-3)
+52 52 Volume mixing ratio (fraction in air) (mol/mol)
+53 53 Chemical gross production rate of concentration (mol m-3 s-1)
+54 54 Chemical gross destruction rate of concentration (mol m-3 s-1)
+55 55 Surface flux (mol m-2 s-1)
+56 56 Changes of amount in atmosphere (mol/s)
+57 57 Total yearly average burden of the atmosphere (mol)
+58 58 Total yearly averaged atmospheric loss (mol/s)
+59 59 Aerosol number concentration (m-3)
+# 60-99 Reserved 
+100 100 Surface area density (aerosol) (/m)
+101 101 Vertical visual range (m)
+102 102 Aerosol optical thickness (Numeric)
+103 103 Single scattering albedo (Numeric)
+104 104 Asymmetry factor (Numeric)
+105 105 Aerosol extinction coefficient (/m)
+106 106 Aerosol absorption coefficient (/m)
+107 107 Aerosol lidar backscatter from satellite (m-1 sr-1)
+108 108 Aerosol lidar backscatter from the ground (m-1 sr-1)
+109 109 Aerosol lidar extinction from satellite (/m)
+110 110 Aerosol lidar extinction from the ground (/m)
+# 111-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.0.3.table b/definitions/grib2/tables/15/4.2.0.3.table
new file mode 100644
index 0000000..9a88e00
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.0.3.table
@@ -0,0 +1,31 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Pressure (Pa)
+1 1 Pressure reduced to MSL (Pa)
+2 2 Pressure tendency (Pa/s)
+3 3 ICAO Standard Atmosphere Reference Height (m)
+4 4 Geopotential (m2 s-2)
+5 5 Geopotential height (gpm)
+6 6 Geometric height (m)
+7 7 Standard deviation of height (m)
+8 8 Pressure anomaly (Pa)
+9 9 Geopotential height anomaly (gpm)
+10 10 Density (kg m-3)
+11 11 Altimeter setting (Pa)
+12 12 Thickness (m)
+13 13 Pressure altitude (m)
+14 14 Density altitude (m)
+15 15 5-wave geopotential height (gpm)
+16 16 Zonal flux of gravity wave stress (N m-2)
+17 17 Meridional flux of gravity wave stress (N m-2)
+18 18 Planetary boundary layer height (m)
+19 19 5-wave geopotential height anomaly (gpm)
+20 20 Standard deviation of sub-grid scale orography (m)
+21 21 Angle of sub-gridscale orography (rad)
+22 22 Slope of sub-gridscale orography (Numeric)
+23 23 Gravity wave dissipation (W m-2)
+24 24 Anisotropy of sub-gridscale orography (Numeric)
+25 25 Natural logarithm of pressure in Pa (Numeric)
+26 26 Exner pressure (Numeric)
+# 27-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.0.4.table b/definitions/grib2/tables/15/4.2.0.4.table
new file mode 100644
index 0000000..dbfcbdd
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.0.4.table
@@ -0,0 +1,20 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Net short-wave radiation flux (surface) (W m-2)
+1 1 Net short-wave radiation flux (top of atmosphere) (W m-2)
+2 2 Short-wave radiation flux (W m-2)
+3 3 Global radiation flux (W m-2)
+4 4 Brightness temperature (K)
+5 5 Radiance (with respect to wave number) (W m-1 sr-1)
+6 6 Radiance (with respect to wave length) (W m-3 sr-1)
+7 7 Downward short-wave radiation flux (W m-2)
+8 8 Upward short-wave radiation flux (W m-2)
+9 9 Net short wave radiation flux (W m-2)
+10 10 Photosynthetically active radiation (W m-2)
+11 11 Net short-wave radiation flux, clear sky (W m-2)
+12 12 Downward UV radiation (W m-2)
+# 13-49 Reserved 
+50 50 UV index (under clear sky) (Numeric)
+51 51 UV index (Numeric)
+# 52-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.0.5.table b/definitions/grib2/tables/15/4.2.0.5.table
new file mode 100644
index 0000000..932a12f
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.0.5.table
@@ -0,0 +1,12 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Net long-wave radiation flux (surface) (W m-2)
+1 1 Net long-wave radiation flux (top of atmosphere) (W m-2)
+2 2 Long-wave radiation flux (W m-2)
+3 3 Downward long-wave radiation flux (W m-2)
+4 4 Upward long-wave radiation flux (W m-2)
+5 5 Net long-wave radiation flux (W m-2)
+6 6 Net long-wave radiation flux, clear sky (W m-2)
+7 7 Brightness temperature (K)
+# 8-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.0.6.table b/definitions/grib2/tables/15/4.2.0.6.table
new file mode 100644
index 0000000..906eeb9
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.0.6.table
@@ -0,0 +1,44 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Cloud ice (kg m-2)
+1 1 Total cloud cover (%)
+2 2 Convective cloud cover (%)
+3 3 Low cloud cover (%)
+4 4 Medium cloud cover (%)
+5 5 High cloud cover (%)
+6 6 Cloud water (kg m-2)
+7 7 Cloud amount (%)
+8 8 Cloud type ((Code table 4.203))
+9 9 Thunderstorm maximum tops (m)
+10 10 Thunderstorm coverage ((Code table 4.204))
+11 11 Cloud base (m)
+12 12 Cloud top (m)
+13 13 Ceiling (m)
+14 14 Non-convective cloud cover (%)
+15 15 Cloud work function (J/kg)
+16 16 Convective cloud efficiency (Proportion)
+17 17 Total condensate (kg/kg)
+18 18 Total column-integrated cloud water (kg m-2)
+19 19 Total column-integrated cloud ice (kg m-2)
+20 20 Total column-integrated condensate (kg m-2)
+21 21 Ice fraction of total condensate (Proportion)
+22 22 Cloud cover (%)
+23 23 Cloud ice mixing ratio (kg/kg)
+24 24 Sunshine (Numeric)
+25 25 Horizontal extent of cumulonimbus (CB) (%)
+26 26 Height of convective cloud base (m)
+27 27 Height of convective cloud top (m)
+28 28 Number of cloud droplets per unit mass of air (/kg)
+29 29 Number of cloud ice particles per unit mass of air (/kg)
+30 30 Number density of cloud droplets (m-3)
+31 31 Number density of cloud ice particles (m-3)
+32 32 Fraction of cloud cover (Numeric)
+33 33 Sunshine duration (s)
+34 34 Surface long-wave effective total cloudiness (Numeric)
+35 35 Surface short-wave effective total cloudiness (Numeric)
+36 36 Fraction of stratiform precipitation cover (Proportion)
+37 37 Fraction of convective precipitation cover (Proportion)
+38 38 Mass density of cloud droplets (kg m-3)
+39 39 Mass density of cloud ice (kg m-3)
+# 40-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.0.7.table b/definitions/grib2/tables/15/4.2.0.7.table
new file mode 100644
index 0000000..db47d01
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.0.7.table
@@ -0,0 +1,20 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Parcel lifted index (to 500 hPa) (K)
+1 1 Best lifted index (to 500 hPa) (K)
+2 2 K index (K)
+3 3 KO index (K)
+4 4 Total totals index (K)
+5 5 Sweat index (Numeric)
+6 6 Convective available potential energy (J/kg)
+7 7 Convective inhibition (J/kg)
+8 8 Storm relative helicity (J/kg)
+9 9 Energy helicity index (Numeric)
+10 10 Surface lifted index (K)
+11 11 Best (4-layer) lifted index (K)
+12 12 Richardson number (Numeric)
+13 13 Showalter index (K)
+14 14 Reserved 
+15 15 Updraft helicity (m2 s-2)
+# 16-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.1.0.table b/definitions/grib2/tables/15/4.2.1.0.table
new file mode 100644
index 0000000..989c4ae
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.1.0.table
@@ -0,0 +1,12 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Flash flood guidance (Encoded as an accumulation over a floating subinterval of time between the reference time and valid time) (kg m-2)
+1 1 Flash flood runoff (Encoded as an accumulation over a floating subinterval of time) (kg m-2)
+2 2 Remotely-sensed snow cover ((Code table 4.215))
+3 3 Elevation of snow-covered terrain ((Code table 4.216))
+4 4 Snow water equivalent per cent of normal (%)
+5 5 Baseflow-groundwater runoff (kg m-2)
+6 6 Storm surface runoff (kg m-2)
+7 7 Discharge from rivers or streams (m3/s)
+# 8-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.1.1.table b/definitions/grib2/tables/15/4.2.1.1.table
new file mode 100644
index 0000000..b488eb0
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.1.1.table
@@ -0,0 +1,7 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Conditional per cent precipitation amount fractile for an overall period (Encoded as an accumulation) (kg m-2)
+1 1 Per cent precipitation in a sub-period of an overall period (Encoded as per cent accumulation over the sub-period) (%)
+2 2 Probability of 0.01 inch of precipitation (POP) (%)
+# 3-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.1.2.table b/definitions/grib2/tables/15/4.2.1.2.table
new file mode 100644
index 0000000..8daf51e
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.1.2.table
@@ -0,0 +1,14 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Water depth (m)
+1 1 Water temperature (K)
+2 2 Water fraction (Proportion)
+3 3 Sediment thickness (m)
+4 4 Sediment temperature (K)
+5 5 Ice thickness (m)
+6 6 Ice temperature (K)
+7 7 Ice cover (Proportion)
+8 8 Land cover (0 = water, 1 = land) (Proportion)
+9 9 Shape factor with respect to salinity profile (-)
+10 10 Shape factor with respect to temperature profile in thermocline (-)
+11 11 Attenuation coefficient of water with respect to solar radiation (/m)
+12 12 Salinity (kg/kg)
diff --git a/definitions/grib2/tables/15/4.2.10.0.table b/definitions/grib2/tables/15/4.2.10.0.table
new file mode 100644
index 0000000..095f51b
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.10.0.table
@@ -0,0 +1,50 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Wave spectra (1) (-)
+1 1 Wave spectra (2) (-)
+2 2 Wave spectra (3) (-)
+3 3 Significant height of combined wind waves and swell (m)
+4 4 Direction of wind waves (degree true)
+5 5 Significant height of wind waves (m)
+6 6 Mean period of wind waves (s)
+7 7 Direction of swell waves (degree true)
+8 8 Significant height of swell waves (m)
+9 9 Mean period of swell waves (s)
+10 10 Primary wave direction (degree true)
+11 11 Primary wave mean period (s)
+12 12 Secondary wave direction (degree true)
+13 13 Secondary wave mean period (s)
+14 14 Direction of combined wind waves and swell (degree true)
+15 15 Mean period of combined wind waves and swell (s)
+16 16 Coefficient of drag with waves (-)
+17 17 Friction velocity (m/s)
+18 18 Wave stress (N m-2)
+19 19 Normalized wave stress (-)
+20 20 Mean square slope of waves (-)
+21 21 u-component surface Stokes drift (m/s)
+22 22 v-component surface Stokes drift (m/s)
+23 23 Period of maximum individual wave height (s)
+24 24 Maximum individual wave height (m)
+25 25 Inverse mean wave frequency (s)
+26 26 Inverse mean frequency of wind waves (s)
+27 27 Inverse mean frequency of total swell (s)
+28 28 Mean zero-crossing wave period (s)
+29 29 Mean zero-crossing period of wind waves (s)
+30 30 Mean zero-crossing period of total swell (s)
+31 31 Wave directional width (-)
+32 32 Directional width of wind waves (-)
+33 33 Directional width of total swell (-)
+34 34 Peak wave period (s)
+35 35 Peak period of wind waves (s)
+36 36 Peak period of total swell (s)
+37 37 Altimeter wave height (m)
+38 38 Altimeter corrected wave height (m)
+39 39 Altimeter range relative correction (-)
+40 40 10-metre neutral wind speed over waves (m/s)
+41 41 10-metre wind direction over waves (deg)
+42 42 Wave energy spectrum (m2 s rad-1)
+43 43 Kurtosis of the sea-surface elevation due to waves (-)
+44 44 Benjamin-Feir index (-)
+45 45 Spectral peakedness factor (/s)
+# 46-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.10.1.table b/definitions/grib2/tables/15/4.2.10.1.table
new file mode 100644
index 0000000..5959bfa
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.10.1.table
@@ -0,0 +1,8 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Current direction (degree true)
+1 1 Current speed (m/s)
+2 2 u-component of current (m/s)
+3 3 v-component of current (m/s)
+# 4-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.10.191.table b/definitions/grib2/tables/15/4.2.10.191.table
new file mode 100644
index 0000000..524929e
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.10.191.table
@@ -0,0 +1,8 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Seconds prior to initial reference time (defined in Section 1) (s)
+1 1 Meridional overturning stream function (m3/s)
+2 2 Reserved 
+3 3 Days since last observation (d)
+# 4-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.10.2.table b/definitions/grib2/tables/15/4.2.10.2.table
new file mode 100644
index 0000000..6797062
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.10.2.table
@@ -0,0 +1,17 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Ice cover (Proportion)
+1 1 Ice thickness (m)
+2 2 Direction of ice drift (degree true)
+3 3 Speed of ice drift (m/s)
+4 4 u-component of ice drift (m/s)
+5 5 v-component of ice drift (m/s)
+6 6 Ice growth rate (m/s)
+7 7 Ice divergence (/s)
+8 8 Ice temperature (K)
+9 9 Module of ice internal pressure (Pa m)
+10 10 Zonal vector component of vertically integrated ice internal pressure (Pa m)
+11 11 Meridional vector component of vertically integrated ice internal pressure (Pa m)
+12 12 Compressive ice strength (N/m)
+# 13-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.10.3.table b/definitions/grib2/tables/15/4.2.10.3.table
new file mode 100644
index 0000000..f951bbe
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.10.3.table
@@ -0,0 +1,6 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Water temperature (K)
+1 1 Deviation of sea level from mean (m)
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.10.4.table b/definitions/grib2/tables/15/4.2.10.4.table
new file mode 100644
index 0000000..54774f1
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.10.4.table
@@ -0,0 +1,18 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Main thermocline depth (m)
+1 1 Main thermocline anomaly (m)
+2 2 Transient thermocline depth (m)
+3 3 Salinity (kg/kg)
+4 4 Ocean vertical heat diffusivity (m2/s)
+5 5 Ocean vertical salt diffusivity (m2/s)
+6 6 Ocean vertical momentum diffusivity (m2/s)
+7 7 Bathymetry (m)
+# 8-10 Reserved 
+11 11 Shape factor with respect to salinity profile (-)
+12 12 Shape factor with respect to temperature profile in thermocline (-)
+13 13 Attenuation coefficient of water with respect to solar radiation (/m)
+14 14 Water depth (m)
+15 15 Water temperature (K)
+# 16-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.2.0.table b/definitions/grib2/tables/15/4.2.2.0.table
new file mode 100644
index 0000000..f11616d
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.2.0.table
@@ -0,0 +1,43 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Land cover (0 = sea, 1 = land) (Proportion)
+1 1 Surface roughness (m)
+2 2 Soil temperature (K)
+3 3 Soil moisture content (kg m-2)
+4 4 Vegetation (%)
+5 5 Water runoff (kg m-2)
+6 6 Evapotranspiration (kg-2 s-1)
+7 7 Model terrain height (m)
+8 8 Land use ((Code table 4.212))
+9 9 Volumetric soil moisture content (Proportion)
+10 10 Ground heat flux (W m-2)
+11 11 Moisture availability (%)
+12 12 Exchange coefficient (kg m-2 s-1)
+13 13 Plant canopy surface water (kg m-2)
+14 14 Blackadar's mixing length scale (m)
+15 15 Canopy conductance (m/s)
+16 16 Minimal stomatal resistance (s/m)
+17 17 Wilting point (Proportion)
+18 18 Solar parameter in canopy conductance (Proportion)
+19 19 Temperature parameter in canopy (Proportion)
+20 20 Humidity parameter in canopy conductance (Proportion)
+21 21 Soil moisture parameter in canopy conductance (Proportion)
+22 22 Soil moisture (kg m-3)
+23 23 Column-integrated soil water (kg m-2)
+24 24 Heat flux (W m-2)
+25 25 Volumetric soil moisture (m3 m-3)
+26 26 Wilting point (kg m-3)
+27 27 Volumetric wilting point (m3 m-3)
+28 28 Leaf area index (Numeric)
+29 29 Evergreen forest cover (Proportion)
+30 30 Deciduous forest cover (Proportion)
+31 31 Normalized differential vegetation index (NDVI) (Numeric)
+32 32 Root depth of vegetation (m)
+33 33 Water runoff and drainage (kg m-2)
+34 34 Surface water runoff (kg m-2)
+35 35 Tile class (Code table 4.243)
+36 36 Tile fraction (Proportion)
+37 37 Tile percentage (%)
+38 38 Soil volumetric ice content (water equivalent) (m3 m-3)
+# 39-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.2.3.table b/definitions/grib2/tables/15/4.2.2.3.table
new file mode 100644
index 0000000..56e66c8
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.2.3.table
@@ -0,0 +1,28 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Soil type ((Code table 4.213))
+1 1 Upper layer soil temperature (K)
+2 2 Upper layer soil moisture (kg m-3)
+3 3 Lower layer soil moisture (kg m-3)
+4 4 Bottom layer soil temperature (K)
+5 5 Liquid volumetric soil moisture (non-frozen) (Proportion)
+6 6 Number of soil layers in root zone (Numeric)
+7 7 Transpiration stress-onset (soil moisture) (Proportion)
+8 8 Direct evaporation cease (soil moisture) (Proportion)
+9 9 Soil porosity (Proportion)
+10 10 Liquid volumetric soil moisture (non-frozen) (m3 m-3)
+11 11 Volumetric transpiration stress-onset (soil moisture) (m3 m-3)
+12 12 Transpiration stress-onset (soil moisture) (kg m-3)
+13 13 Volumetric direct evaporation cease (soil moisture) (m3 m-3)
+14 14 Direct evaporation cease (soil moisture) (kg m-3)
+15 15 Soil porosity (m3 m-3)
+16 16 Volumetric saturation of soil moisture (m3 m-3)
+17 17 Saturation of soil moisture (kg m-3)
+18 18 Soil temperature (K)
+19 19 Soil moisture (kg m-3)
+20 20 Column-integrated soil moisture (kg m-2)
+21 21 Soil ice (kg m-3)
+22 22 Column-integrated soil ice (kg m-2)
+23 23 Liquid water in snow pack (kg m-2)
+# 24-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.2.4.table b/definitions/grib2/tables/15/4.2.2.4.table
new file mode 100644
index 0000000..d4ede2f
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.2.4.table
@@ -0,0 +1,9 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Fire outlook (Code table 4.224)
+1 1 Fire outlook due to dry thunderstorm (Code table 4.224)
+2 2 Haines Index (Numeric)
+3 3 Fire burned area (%)
+4 4 Fosberg index (Numeric)
+# 5-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.2.5.table b/definitions/grib2/tables/15/4.2.2.5.table
new file mode 100644
index 0000000..10fb689
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.2.5.table
@@ -0,0 +1,2 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+1 1 Glacier temperature (K)
diff --git a/definitions/grib2/tables/15/4.2.3.0.table b/definitions/grib2/tables/15/4.2.3.0.table
new file mode 100644
index 0000000..c0ffa29
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.3.0.table
@@ -0,0 +1,14 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Scaled radiance (Numeric)
+1 1 Scaled albedo (Numeric)
+2 2 Scaled brightness temperature (Numeric)
+3 3 Scaled precipitable water (Numeric)
+4 4 Scaled lifted index (Numeric)
+5 5 Scaled cloud top pressure (Numeric)
+6 6 Scaled skin temperature (Numeric)
+7 7 Cloud mask (Code table 4.217)
+8 8 Pixel scene type (Code table 4.218)
+9 9 Fire detection indicator (Code table 4.223)
+# 10-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.2.3.1.table b/definitions/grib2/tables/15/4.2.3.1.table
new file mode 100644
index 0000000..0bda530
--- /dev/null
+++ b/definitions/grib2/tables/15/4.2.3.1.table
@@ -0,0 +1,28 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Estimated precipitation (kg m-2)
+1 1 Instantaneous rain rate (kg m-2 s-1)
+2 2 Cloud top height (m)
+3 3 Cloud top height quality indicator (Code table 4.219)
+4 4 Estimated u-component of wind (m/s)
+5 5 Estimated v-component of wind (m/s)
+6 6 Number of pixel used (Numeric)
+7 7 Solar zenith angle (deg)
+8 8 Relative azimuth angle (deg)
+9 9 Reflectance in 0.6 micron channel (%)
+10 10 Reflectance in 0.8 micron channel (%)
+11 11 Reflectance in 1.6 micron channel (%)
+12 12 Reflectance in 3.9 micron channel (%)
+13 13 Atmospheric divergence (/s)
+14 14 Cloudy brightness temperature (K)
+15 15 Clear-sky brightness temperature (K)
+16 16 Cloudy radiance (with respect to wave number) (W m-1 sr-1)
+17 17 Clear-sky radiance (with respect to wave number) (W m-1 sr-1)
+18 18 Reserved 
+19 19 Wind speed (m/s)
+20 20 Aerosol optical thickness at 0.635 um
+21 21 Aerosol optical thickness at 0.810 um
+22 22 Aerosol optical thickness at 1.640 um
+23 23 Angstrom coefficient 
+# 24-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.201.table b/definitions/grib2/tables/15/4.201.table
new file mode 100644
index 0000000..47f1b48
--- /dev/null
+++ b/definitions/grib2/tables/15/4.201.table
@@ -0,0 +1,15 @@
+# Code table 4.201 - Precipitation type
+0 0 Reserved 
+1 1 Rain 
+2 2 Thunderstorm 
+3 3 Freezing rain 
+4 4 Mixed/ice 
+5 5 Snow 
+6 6 Wet snow 
+7 7 Mixture of rain and snow 
+8 8 Ice pellets 
+9 9 Graupel 
+10 10 Hail 
+# 11-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.202.table b/definitions/grib2/tables/15/4.202.table
new file mode 100644
index 0000000..438502f
--- /dev/null
+++ b/definitions/grib2/tables/15/4.202.table
@@ -0,0 +1,4 @@
+# Code table 4.202 - Precipitable water category
+# 0-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.203.table b/definitions/grib2/tables/15/4.203.table
new file mode 100644
index 0000000..8a9aedf
--- /dev/null
+++ b/definitions/grib2/tables/15/4.203.table
@@ -0,0 +1,26 @@
+# Code table 4.203 - Cloud type
+0 0 Clear 
+1 1 Cumulonimbus 
+2 2 Stratus 
+3 3 Stratocumulus 
+4 4 Cumulus 
+5 5 Altostratus 
+6 6 Nimbostratus 
+7 7 Altocumulus 
+8 8 Cirrostratus 
+9 9 Cirrocumulus 
+10 10 Cirrus 
+11 11 Cumulonimbus - ground-based fog beneath the lowest layer 
+12 12 Stratus - ground-based fog beneath the lowest layer 
+13 13 Stratocumulus - ground-based fog beneath the lowest layer 
+14 14 Cumulus - ground-based fog beneath the lowest layer 
+15 15 Altostratus - ground-based fog beneath the lowest layer 
+16 16 Nimbostratus - ground-based fog beneath the lowest layer 
+17 17 Altocumulus - ground-based fog beneath the lowest layer 
+18 18 Cirrostratus - ground-based fog beneath the lowest layer 
+19 19 Cirrocumulus - ground-based fog beneath the lowest layer 
+20 20 Cirrus - ground-based fog beneath the lowest layer 
+# 21-190 Reserved 
+191 191 Unknown 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.204.table b/definitions/grib2/tables/15/4.204.table
new file mode 100644
index 0000000..91bcf18
--- /dev/null
+++ b/definitions/grib2/tables/15/4.204.table
@@ -0,0 +1,9 @@
+# Code table 4.204 - Thunderstorm coverage
+0 0 None 
+1 1 Isolated (1-2%) 
+2 2 Few (3-5%) 
+3 3 Scattered (16-45%) 
+4 4 Numerous (> 45%) 
+# 5-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.205.table b/definitions/grib2/tables/15/4.205.table
new file mode 100644
index 0000000..5b4484d
--- /dev/null
+++ b/definitions/grib2/tables/15/4.205.table
@@ -0,0 +1,6 @@
+# Code table 4.205 - Presence of aerosol
+0 0 Aerosol not present 
+1 1 Aerosol present 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.206.table b/definitions/grib2/tables/15/4.206.table
new file mode 100644
index 0000000..02c3dfd
--- /dev/null
+++ b/definitions/grib2/tables/15/4.206.table
@@ -0,0 +1,6 @@
+# Code table 4.206 - Volcanic ash
+0 0 Not present 
+1 1 Present 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.207.table b/definitions/grib2/tables/15/4.207.table
new file mode 100644
index 0000000..8ddb2e0
--- /dev/null
+++ b/definitions/grib2/tables/15/4.207.table
@@ -0,0 +1,10 @@
+# Code table 4.207 - Icing
+0 0 None 
+1 1 Light 
+2 2 Moderate 
+3 3 Severe 
+4 4 Trace 
+5 5 Heavy 
+# 6-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.208.table b/definitions/grib2/tables/15/4.208.table
new file mode 100644
index 0000000..b83685a
--- /dev/null
+++ b/definitions/grib2/tables/15/4.208.table
@@ -0,0 +1,9 @@
+# Code table 4.208 - Turbulence
+0 0 None (smooth) 
+1 1 Light 
+2 2 Moderate 
+3 3 Severe 
+4 4 Extreme 
+# 5-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.209.table b/definitions/grib2/tables/15/4.209.table
new file mode 100644
index 0000000..cb76170
--- /dev/null
+++ b/definitions/grib2/tables/15/4.209.table
@@ -0,0 +1,9 @@
+# Code table 4.209 - Planetary boundary-layer regime
+0 0 Reserved 
+1 1 Stable 
+2 2 Mechanically driven turbulence 
+3 3 Forced convection 
+4 4 Free convection 
+# 5-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.210.table b/definitions/grib2/tables/15/4.210.table
new file mode 100644
index 0000000..524a6ca
--- /dev/null
+++ b/definitions/grib2/tables/15/4.210.table
@@ -0,0 +1,6 @@
+# Code table 4.210 - Contrail intensity
+0 0 Contrail not present 
+1 1 Contrail present 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.211.table b/definitions/grib2/tables/15/4.211.table
new file mode 100644
index 0000000..098eb2d
--- /dev/null
+++ b/definitions/grib2/tables/15/4.211.table
@@ -0,0 +1,7 @@
+# Code table 4.211 - Contrail engine type
+0 0 Low bypass 
+1 1 High bypass 
+2 2 Non-bypass 
+# 3-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.212.table b/definitions/grib2/tables/15/4.212.table
new file mode 100644
index 0000000..1a085b8
--- /dev/null
+++ b/definitions/grib2/tables/15/4.212.table
@@ -0,0 +1,18 @@
+# Code table 4.212 - Land use
+0 0 Reserved 
+1 1 Urban land 
+2 2 Agriculture 
+3 3 Range land 
+4 4 Deciduous forest 
+5 5 Coniferous forest 
+6 6 Forest/wetland 
+7 7 Water 
+8 8 Wetlands 
+9 9 Desert 
+10 10 Tundra 
+11 11 Ice 
+12 12 Tropical forest 
+13 13 Savannah 
+# 14-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.213.table b/definitions/grib2/tables/15/4.213.table
new file mode 100644
index 0000000..c65784a
--- /dev/null
+++ b/definitions/grib2/tables/15/4.213.table
@@ -0,0 +1,16 @@
+# Code table 4.213 - Soil type
+0 0 Reserved 
+1 1 Sand 
+2 2 Loamy sand 
+3 3 Sandy loam 
+4 4 Silt loam 
+5 5 Organic (redefined) 
+6 6 Sandy clay loam 
+7 7 Silt clay loam 
+8 8 Clay loam 
+9 9 Sandy clay 
+10 10 Silty clay 
+11 11 Clay 
+# 12-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.215.table b/definitions/grib2/tables/15/4.215.table
new file mode 100644
index 0000000..034db72
--- /dev/null
+++ b/definitions/grib2/tables/15/4.215.table
@@ -0,0 +1,9 @@
+# Code table 4.215 - Remotely sensed snow coverage
+# 0-49 Reserved 
+50 50 No-snow/no-cloud 
+# 51-99 Reserved 
+100 100 Clouds 
+# 101-249 Reserved 
+250 250 Snow 
+# 251-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.216.table b/definitions/grib2/tables/15/4.216.table
new file mode 100644
index 0000000..fd785ef
--- /dev/null
+++ b/definitions/grib2/tables/15/4.216.table
@@ -0,0 +1,96 @@
+# Code table 4.216 - Elevation of snow-covered terrain
+# 0-90 Elevation in increments of 100 m 
+0 0  Elevation in increments of 100 m
+1 1  Elevation in increments of 100 m
+2 2  Elevation in increments of 100 m
+3 3  Elevation in increments of 100 m
+4 4  Elevation in increments of 100 m
+5 5  Elevation in increments of 100 m
+6 6  Elevation in increments of 100 m
+7 7  Elevation in increments of 100 m
+8 8  Elevation in increments of 100 m
+9 9  Elevation in increments of 100 m
+10 10  Elevation in increments of 100 m
+11 11  Elevation in increments of 100 m
+12 12  Elevation in increments of 100 m
+13 13  Elevation in increments of 100 m
+14 14  Elevation in increments of 100 m
+15 15  Elevation in increments of 100 m
+16 16  Elevation in increments of 100 m
+17 17  Elevation in increments of 100 m
+18 18  Elevation in increments of 100 m
+19 19  Elevation in increments of 100 m
+20 20  Elevation in increments of 100 m
+21 21  Elevation in increments of 100 m
+22 22  Elevation in increments of 100 m
+23 23  Elevation in increments of 100 m
+24 24  Elevation in increments of 100 m
+25 25  Elevation in increments of 100 m
+26 26  Elevation in increments of 100 m
+27 27  Elevation in increments of 100 m
+28 28  Elevation in increments of 100 m
+29 29  Elevation in increments of 100 m
+30 30  Elevation in increments of 100 m
+31 31  Elevation in increments of 100 m
+32 32  Elevation in increments of 100 m
+33 33  Elevation in increments of 100 m
+34 34  Elevation in increments of 100 m
+35 35  Elevation in increments of 100 m
+36 36  Elevation in increments of 100 m
+37 37  Elevation in increments of 100 m
+38 38  Elevation in increments of 100 m
+39 39  Elevation in increments of 100 m
+40 40  Elevation in increments of 100 m
+41 41  Elevation in increments of 100 m
+42 42  Elevation in increments of 100 m
+43 43  Elevation in increments of 100 m
+44 44  Elevation in increments of 100 m
+45 45  Elevation in increments of 100 m
+46 46  Elevation in increments of 100 m
+47 47  Elevation in increments of 100 m
+48 48  Elevation in increments of 100 m
+49 49  Elevation in increments of 100 m
+50 50  Elevation in increments of 100 m
+51 51  Elevation in increments of 100 m
+52 52  Elevation in increments of 100 m
+53 53  Elevation in increments of 100 m
+54 54  Elevation in increments of 100 m
+55 55  Elevation in increments of 100 m
+56 56  Elevation in increments of 100 m
+57 57  Elevation in increments of 100 m
+58 58  Elevation in increments of 100 m
+59 59  Elevation in increments of 100 m
+60 60  Elevation in increments of 100 m
+61 61  Elevation in increments of 100 m
+62 62  Elevation in increments of 100 m
+63 63  Elevation in increments of 100 m
+64 64  Elevation in increments of 100 m
+65 65  Elevation in increments of 100 m
+66 66  Elevation in increments of 100 m
+67 67  Elevation in increments of 100 m
+68 68  Elevation in increments of 100 m
+69 69  Elevation in increments of 100 m
+70 70  Elevation in increments of 100 m
+71 71  Elevation in increments of 100 m
+72 72  Elevation in increments of 100 m
+73 73  Elevation in increments of 100 m
+74 74  Elevation in increments of 100 m
+75 75  Elevation in increments of 100 m
+76 76  Elevation in increments of 100 m
+77 77  Elevation in increments of 100 m
+78 78  Elevation in increments of 100 m
+79 79  Elevation in increments of 100 m
+80 80  Elevation in increments of 100 m
+81 81  Elevation in increments of 100 m
+82 82  Elevation in increments of 100 m
+83 83  Elevation in increments of 100 m
+84 84  Elevation in increments of 100 m
+85 85  Elevation in increments of 100 m
+86 86  Elevation in increments of 100 m
+87 87  Elevation in increments of 100 m
+88 88  Elevation in increments of 100 m
+89 89  Elevation in increments of 100 m
+90 90  Elevation in increments of 100 m
+# 91-253 Reserved 
+254 254 Clouds 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.217.table b/definitions/grib2/tables/15/4.217.table
new file mode 100644
index 0000000..a445218
--- /dev/null
+++ b/definitions/grib2/tables/15/4.217.table
@@ -0,0 +1,8 @@
+# Code table 4.217 - Cloud mask type
+0 0 Clear over water 
+1 1 Clear over land 
+2 2 Cloud 
+3 3 No data 
+# 4-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.218.table b/definitions/grib2/tables/15/4.218.table
new file mode 100644
index 0000000..bfca92f
--- /dev/null
+++ b/definitions/grib2/tables/15/4.218.table
@@ -0,0 +1,38 @@
+# Code table 4.218 - Pixel scene type
+0 0 No scene identified 
+1 1 Green needle-leafed forest 
+2 2 Green broad-leafed forest 
+3 3 Deciduous needle-leafed forest 
+4 4 Deciduous broad-leafed forest 
+5 5 Deciduous mixed forest 
+6 6 Closed shrub-land 
+7 7 Open shrub-land 
+8 8 Woody savannah 
+9 9 Savannah 
+10 10 Grassland 
+11 11 Permanent wetland 
+12 12 Cropland 
+13 13 Urban 
+14 14 Vegetation/crops 
+15 15 Permanent snow/ice 
+16 16 Barren desert 
+17 17 Water bodies 
+18 18 Tundra 
+# 19-96 Reserved 
+97 97 Snow/ice on land 
+98 98 Snow/ice on water 
+99 99 Sun-glint 
+100 100 General cloud 
+101 101 Low cloud/fog/Stratus 
+102 102 Low cloud/Stratocumulus 
+103 103 Low cloud/unknown type 
+104 104 Medium cloud/Nimbostratus 
+105 105 Medium cloud/Altostratus 
+106 106 Medium cloud/unknown type 
+107 107 High cloud/Cumulus 
+108 108 High cloud/Cirrus 
+109 109 High cloud/unknown 
+110 110 Unknown cloud type 
+# 111-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.219.table b/definitions/grib2/tables/15/4.219.table
new file mode 100644
index 0000000..86df052
--- /dev/null
+++ b/definitions/grib2/tables/15/4.219.table
@@ -0,0 +1,8 @@
+# Code table 4.219 - Cloud top height quality indicator
+0 0 Nominal cloud top height quality 
+1 1 Fog in segment 
+2 2 Poor quality height estimation 
+3 3 Fog in segment and poor quality height estimation 
+# 4-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.220.table b/definitions/grib2/tables/15/4.220.table
new file mode 100644
index 0000000..93e841f
--- /dev/null
+++ b/definitions/grib2/tables/15/4.220.table
@@ -0,0 +1,6 @@
+# Code table 4.220 - Horizontal dimension processed
+0 0 Latitude 
+1 1 Longitude 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.221.table b/definitions/grib2/tables/15/4.221.table
new file mode 100644
index 0000000..8448533
--- /dev/null
+++ b/definitions/grib2/tables/15/4.221.table
@@ -0,0 +1,6 @@
+# Code table 4.221 - Treatment of missing data
+0 0 Not included 
+1 1 Extrapolated 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.222.table b/definitions/grib2/tables/15/4.222.table
new file mode 100644
index 0000000..57f1130
--- /dev/null
+++ b/definitions/grib2/tables/15/4.222.table
@@ -0,0 +1,6 @@
+# Code table 4.222 - Categorical result
+0 0 No 
+1 1 Yes 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.223.table b/definitions/grib2/tables/15/4.223.table
new file mode 100644
index 0000000..f0deb07
--- /dev/null
+++ b/definitions/grib2/tables/15/4.223.table
@@ -0,0 +1,5 @@
+# Code table 4.223 - Fire detection indicator
+0 0 No fire detected 
+1 1 Possible fire detected 
+2 2 Probable fire detected 
+3 3 Missing 
diff --git a/definitions/grib2/tables/15/4.224.table b/definitions/grib2/tables/15/4.224.table
new file mode 100644
index 0000000..e87cde4
--- /dev/null
+++ b/definitions/grib2/tables/15/4.224.table
@@ -0,0 +1,18 @@
+# Code table 4.224 - Categorical outlook
+0 0 No risk area 
+1 1 Reserved 
+2 2 General thunderstorm risk area 
+3 3 Reserved 
+4 4 Slight risk area 
+5 5 Reserved 
+6 6 Moderate risk area 
+7 7 Reserved 
+8 8 High risk area 
+# 9-10 Reserved 
+11 11 Dry thunderstorm (dry lightning) risk area 
+# 12-13 Reserved 
+14 14 Critical risk area 
+# 15-17 Reserved 
+18 18 Extremely critical risk area 
+# 19-254 Reserved 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.225.table b/definitions/grib2/tables/15/4.225.table
new file mode 100644
index 0000000..537f110
--- /dev/null
+++ b/definitions/grib2/tables/15/4.225.table
@@ -0,0 +1,267 @@
+# Code table 4.225 - Weather (see FM 94 BUFR/FM 95 CREX Code table 0 20 003 - Present weather)
+00 00 Cloud development not observed or not observable
+01 01 Clouds generally dissolving or becoming less developed
+02 02 State of sky on the whole unchanged
+03 03 Clouds generally forming or developing
+04 04 Visibility reduced by smoke, e.g. veldt or forest fires, industrial smoke or volcanic ashes
+05 05 Haze
+06 06 Widespread dust in suspension in the air, not raised by wind at or near the station at the time of observation
+07 07 Dust or sand raised by wind at or near the station at the time of observation, but no well developed dust whirl(s) or sand whirl(s), and no duststorm or sandstorm seen; or, in the case of sea stations and coastal stations, blowing spray at the station
+08 08 Well-developed dust whirl(s) or sand whirl(s) seen at or near the station during the preceding hour or at the same time of observation, but no duststorm or sandstorm
+09 09 Duststorm or sandstorm within sight at the time of observation, or at the station during the preceding hour
+10 10 Mist
+11 11 Patches
+12 12 More or less continuous
+13 13 Lightning visible, no thunder heard
+14 14 Precipitation within sight, not reaching the ground or the surface of the sea
+15 15 Precipitation within sight, reaching the ground or the surface of the sea, but distant, i.e. estimated to be more than 5 km from the station
+16 16 Precipitation within sight, reaching the ground or the surface of the sea, near to, but not at the station
+17 17 Thunderstorm, but no precipitation at the time of observation
+18 18 Squalls
+19 19 Funnel cloud(s)
+20 20 Drizzle (not freezing) or snow grains
+21 21 Rain (not freezing)
+22 22 Snow
+23 23 Rain and snow or ice pellets
+24 24 Freezing drizzle or freezing rain
+25 25 Shower(s) of rain
+26 26 Shower(s) of snow, or of rain and snow
+27 27 Shower(s) of hail, or of rain and hail
+28 28 Fog or ice fog
+29 29 Thunderstorm (with or without precipitation)
+30 30 Slight or moderate duststorm or sandstorm has decreased during the preceding hour
+31 31 Slight or moderate duststorm or sandstorm no appreciable change during the preceding hour
+32 32 Slight or moderate duststorm or sandstorm has begun or has increased during the preceding hour
+33 33 Severe duststorm or sandstorm has decreased during the preceding hour
+34 34 Severe duststorm or sandstorm no appreciable change during the preceding hour
+35 35 Severe duststorm or sandstorm has begun or has increased during the preceding hour
+36 36 Slight or moderate drifting snow generally low (below eye level)
+37 37 Heavy drifting snow generally low (below eye level)
+38 38 Slight or moderate blowing snow generally high (above eye level)
+39 39 Heavy blowing snow generally high (above eye level)
+40 40 Fog or ice fog at a distance at the time of observation, but not at the station during the preceding hour, the fog or ice fog extending to a level above that of the observer
+41 41 Fog or ice fog in patches
+42 42 Fog or ice fog, sky visible has become thinner during the preceding hour
+43 43 Fog or ice fog, sky invisible has become thinner during the preceding hour
+44 44 Fog or ice fog, sky visible no appreciable change during the preceding hour
+45 45 Fog or ice fog, sky invisible no appreciable change during the preceding hour
+46 46 Fog or ice fog, sky visible has begun or has become thicker during the preceding hour
+47 47 Fog or ice fog, sky invisible has begun or has become thicker during the preceding hour
+48 48 Fog, depositing rime, sky visible
+49 49 Fog, depositing rime, sky invisible
+50 50 Drizzle, not freezing, intermittent slight at time of observation
+51 51 Drizzle, not freezing, continuous slight at time of observation
+52 52 Drizzle, not freezing, intermittent moderate at time of observation
+53 53 Drizzle, not freezing, continuous moderate at time of observation
+54 54 Drizzle, not freezing, intermittent heavy (dense) at time of observation
+55 55 Drizzle, not freezing, continuous heavy (dense) at time of observation
+56 56 Drizzle, freezing, slight
+57 57 Drizzle, freezing, moderate or heavy (dense)
+58 58 Drizzle and rain, slight
+59 59 Drizzle and rain, moderate or heavy
+60 60 Rain, not freezing, intermittent slight at time of observation
+61 61 Rain, not freezing, continuous slight at time of observation
+62 62 Rain, not freezing, intermittent moderate at time of observation
+63 63 Rain, not freezing, continuous moderate at time of observation
+64 64 Rain, not freezing, intermittent heavy at time of observation
+65 65 Rain, not freezing, continuous heavy at time of observation
+66 66 Rain, freezing, slight
+67 67 Rain, freezing, moderate or heavy
+68 68 Rain or drizzle and snow, slight
+69 69 Rain or drizzle and snow, moderate or heavy
+70 70 Intermittent fall of snowflakes slight at time of observation
+71 71 Continuous fall of snowflakes slight at time of observation
+72 72 Intermittent fall of snowflakes moderate at time of observation
+73 73 Continuous fall of snowflakes moderate at time of observation
+74 74 Intermittent fall of snowflakes heavy at time of observation
+75 75 Continuous fall of snowflakes heavy at time of observation
+76 76 Diamond dust (with or without fog)
+77 77 Snow grains (with or without fog)
+78 78 Isolated star-like snow crystals (with or without fog)
+79 79 Ice pellets
+80 80 Rain shower(s), slight
+81 81 Rain shower(s), moderate or heavy
+82 82 Rain shower(s), violent
+83 83 Shower(s) of rain and snow mixed, slight
+84 84 Shower(s) of rain and snow mixed, moderate or heavy
+85 85 Snow shower(s), slight
+86 86 Snow shower(s), moderate or heavy
+87 87 Shower(s) of snow pellets or small hail, with or without rain or rain and snow mixed slight
+88 88 Shower(s) of snow pellets or small hail, with or without rain or rain and snow mixed moderate or heavy
+89 89 Shower(s) of hail, with or without rain or rain and snow mixed, not associated with thunder slight
+90 90 Shower(s) of hail, with or without rain or rain and snow mixed, not associated with thunder moderate or heavy
+91 91 Slight rain at time of observation
+92 92 Moderate or heavy rain at time of observation
+93 93 Slight snow, or rain and snow mixed or hail at time of observation
+94 94 Moderate or heavy snow, or rain and snow mixed or hail at time of observation
+95 95 Thunderstorm, slight or moderate, without hail, but with rain and/or snow at time of observation
+96 96 Thunderstorm, slight or moderate, with hail at time of observation
+97 97 Thunderstorm, heavy, without hail, but with rain and/or snow at time of observation
+98 98 Thunderstorm combined with duststorm or sandstorm at time of observation
+99 99 Thunderstorm, heavy, with hail at time of observation
+100 100 No significant weather observed
+101 101 Clouds generally dissolving or becoming less developed during the past hour
+102 102 State of sky on the whole unchanged during the past hour
+103 103 Clouds generally forming or developing during the past hour
+104 104 Haze or smoke, or dust in suspension in the air, visibility equal to, or greater than, 1 km
+105 105 Haze or smoke, or dust in suspension in the air, visibility less than 1 km
+#106-109 Reserved
+110 110 Mist
+111 111 Diamond dust
+112 112 Distant lightning
+#113-117 Reserved
+118 118 Squalls
+#119 Reserved
+120 120 Fog
+121 121 PRECIPITATION
+122 122 Drizzle (not freezing) or snow grains
+123 123 Rain (not freezing)
+124 124 Snow
+125 125 Freezing drizzle or freezing rain
+126 126 Thunderstorm (with or without precipitation)
+127 127 BLOWING OR DRIFTING SNOW OR SAND
+128 128 Blowing or drifting snow or sand, visibility equal to, or greater than, 1 km
+129 129 Blowing or drifting snow or sand, visibility less than 1 km
+130 130 FOG
+131 131 Fog or ice fog in patches
+132 132 Fog or ice fog, has become thinner during the past hour
+133 133 Fog or ice fog, no appreciable change during the past hour
+134 134 Fog or ice fog, has begun or become thicker during the past hour
+135 135 Fog, depositing rime
+#136-139 Reserved
+140 140 PRECIPITATION
+141 141 Precipitation, slight or moderate
+142 142 Precipitation, heavy
+143 143 Liquid precipitation, slight or moderate
+144 144 Liquid precipitation, heavy
+145 145 Solid precipitation, slight or moderate
+146 146 Solid precipitation, heavy
+147 147 Freezing precipitation, slight or moderate
+148 148 Freezing precipitation, heavy
+#149 Reserved
+150 150 DRIZZLE
+151 151 Drizzle, not freezing, slight
+152 152 Drizzle, not freezing, moderate
+153 153 Drizzle, not freezing, heavy
+154 154 Drizzle, freezing, slight
+155 155 Drizzle, freezing, moderate
+156 156 Drizzle, freezing, heavy
+157 157 Drizzle and rain, slight
+158 158 Drizzle and rain, moderate or heavy
+#159 Reserved
+160 160 RAIN
+161 161 Rain, not freezing, slight
+162 162 Rain, not freezing, moderate
+163 163 Rain, not freezing, heavy
+164 164 Rain, freezing, slight
+165 165 Rain, freezing, moderate
+166 166 Rain, freezing, heavy
+167 167 Rain (or drizzle) and snow, slight
+168 168 Rain (or drizzle) and snow, moderate or heavy
+#169 Reserved
+170 170 SNOW
+171 171 Snow, slight
+172 172 Snow, moderate
+173 173 Snow, heavy
+174 174 Ice pellets, slight
+175 175 Ice pellets, moderate
+176 176 Ice pellets, heavy
+177 177 Snow grains
+178 178 Ice crystals
+#179 Reserved
+180 180 SHOWER(S) OR INTERMITTENT PRECIPITATION
+181 181 Rain shower(s) or intermittent rain, slight
+182 182 Rain shower(s) or intermittent rain, moderate
+183 183 Rain shower(s) or intermittent rain, heavy
+184 184 Rain shower(s) or intermittent rain, violent
+185 185 Snow shower(s) or intermittent snow, slight
+186 186 Snow shower(s) or intermittent snow, moderate
+187 187 Snow shower(s) or intermittent snow, heavy
+#188 Reserved
+189 189 Hail
+190 190 THUNDERSTORM
+191 191 Thunderstorm, slight or moderate, with no precipitation
+192 192 Thunderstorm, slight or moderate, with rain showers and/or snow showers
+193 193 Thunderstorm, slight or moderate, with hail
+194 194 Thunderstorm, heavy, with no precipitation
+195 195 Thunderstorm, heavy, with rain showers and/or snow showers
+196 196 Thunderstorm, heavy, with hail
+#197-198 Reserved
+199 199 Tornado
+204 204 Volcanic ash suspended in the air aloft
+206 206 Thick dust haze, visibility less than 1 km
+207 207 Blowing spray at the station
+208 208 Drifting dust (sand)
+209 209 Wall of dust or sand in distance (like haboob)
+210 210 Snow haze
+211 211 Whiteout
+213 213 Lightning, cloud to surface
+#214-216 Not used
+217 217 Dry thunderstorm
+219 219 Tornado cloud (destructive) at or within sight of the station during preceding hour or at the time of observation
+220 220 Deposition of volcanic ash
+221 221 Deposition of dust or sand
+222 222 Deposition of dew
+223 223 Deposition of wet snow
+224 224 Deposition of soft rime
+225 225 Deposition of hard rime
+226 226 Deposition of hoar frost
+227 227 Deposition of glaze
+228 228 Deposition of ice crust (ice slick)
+230 230 Duststorm or sandstorm with temperature below 0 degrees
+239 239 Blowing snow, impossible to determine whether snow is falling or not
+241 241 Fog on sea
+242 242 Fog in valleys
+243 243 Arctic or Antarctic sea smoke
+244 244 Steam fog (sea, lake or river)
+245 245 Steam log (land)
+246 246 Fog over ice or snow cover
+247 247 Dense fog, visibility 60-90 m
+248 248 Dense fog, visibility 30-60 m
+249 249 Dense fog, visibility less than 30 m
+250 250 Drizzle, rate of fall - less than 0.10 mm h-1
+251 251 Drizzle, rate of fall - 0.10-0.19 mm h-1
+252 252 Drizzle, rate of fall - 0.20-0.39 mm h-1
+253 253 Drizzle, rate of fall - 0.40-0.79 mm h-1
+254 254 Drizzle, rate of fall - 0.80-1.59 mm h-1
+255 255 Drizzle, rate of fall - 1.60-3.19 mm h-1
+256 256 Drizzle, rate of fall - 3.20-6.39 mm h-1
+257 257 Drizzle, rate of fall - 6.4 mm h-1 or more
+259 259 Drizzle and snow
+260 260 Rain, rate of fall - less than 1.0 mm h-1
+261 261 Rain, rate of fall - 1.0-1.9 mm h-1
+262 262 Rain, rate of fall - 2.0-3.9 mm h-1
+263 263 Rain, rate of fall - 4.0-7.9 mm h-1
+264 264 Rain, rate of fall - 8.0-15.9 mm h-1
+265 265 Rain, rate of fall - 16.0-31.9 mm h-1
+266 266 Rain, rate of fall - 32.0-63.9 mm h-1
+267 267 Rain, rate of fall - 64.0 mm h-1 or more
+270 270 Snow, rate of fall - less than 1.0 cm h-1
+271 271 Snow, rate of fall - 1.0-1.9 cm h-1
+272 272 Snow, rate of fall - 2.0-3.9 cm h-1
+273 273 Snow, rate of fall - 4.0-7.9 cm h-1
+274 274 Snow, rate of fall - 8.0-15.9 cm h-1
+275 275 Snow, rate of fall - 16.0-31.9 cm h-1
+276 276 Snow, rate of fall - 32.0-63.9 cm h-1
+277 277 Snow, rate of fall - 64.0 cm h-1 or more
+278 278 Snow or ice crystal precipitation from a clear sky
+279 279 Wet snow, freezing on contact
+280 280 Precipitation of rain
+281 281 Precipitation of rain, freezing
+282 282 Precipitation of rain and snow mixed
+283 283 Precipitation of snow
+284 284 Precipitation of snow pellets or small hall
+285 285 Precipitation of snow pellets or small hail, with rain
+286 286 Precipitation of snow pellets or small hail, with rain and snow mixed
+287 287 Precipitation of snow pellets or small hail, with snow
+288 288 Precipitation of hail
+289 289 Precipitation of hail, with rain
+290 290 Precipitation of hall, with rain and snow mixed
+291 291 Precipitation of hail, with snow
+292 292 Shower(s) or thunderstorm over sea
+293 293 Shower(s) or thunderstorm over mountains
+#300-507 Reserved
+508 508 No significant phenomenon to report, present and past weather omitted
+509 509 No observation, data not available, present and past weather omitted
+510 510 Present and past weather missing, but expected
+511 511 Missing value
diff --git a/definitions/grib2/tables/15/4.227.table b/definitions/grib2/tables/15/4.227.table
new file mode 100644
index 0000000..27c7655
--- /dev/null
+++ b/definitions/grib2/tables/15/4.227.table
@@ -0,0 +1,9 @@
+# Code table 4.227 - Icing scenario (weather/cloud classification)
+0 0 None 
+1 1 General 
+2 2 Convective 
+3 3 Stratiform 
+4 4 Freezing 
+# 5-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing value 
diff --git a/definitions/grib2/tables/15/4.230.table b/definitions/grib2/tables/15/4.230.table
new file mode 100644
index 0000000..ab995d1
--- /dev/null
+++ b/definitions/grib2/tables/15/4.230.table
@@ -0,0 +1,423 @@
+# Code table 4.230 - Atmospheric chemical constituent type
+0 0 Ozone O3
+1 1 Water vapour H2O
+2 2 Methane CH4
+3 3 Carbon dioxide CO2
+4 4 Carbon monoxide CO
+5 5 Nitrogen dioxide NO2
+6 6 Nitrous oxide N2O
+7 7 Formaldehyde HCHO
+8 8 Sulphur dioxide SO2
+9 9 Ammonia NH3
+10 10 Ammonium NH4+
+11 11 Nitrogen monoxide NO
+12 12 Atomic oxygen O
+13 13 Nitrate radical NO3
+14 14 Hydroperoxyl radical HO2
+15 15 Dinitrogen pentoxide N2O5
+16 16 Nitrous acid HONO
+17 17 Nitric acid HNO3
+18 18 Peroxynitric acid HO2NO2
+19 19 Hydrogen peroxide H2O2
+20 20 Molecular hydrogen H
+21 21 Atomic nitrogen N
+22 22 Sulphate SO42-
+23 23 Radon Rn
+24 24 Elemental mercury Hg(0)
+25 25 Divalent mercury Hg2+
+26 26 Atomic chlorine Cl
+27 27 Chlorine monoxide ClO
+28 28 Dichlorine peroxide Cl2O2
+29 29 Hypochlorous acid HClO
+30 30 Chlorine nitrate ClONO2
+31 31 Chlorine dioxide ClO2
+32 32 Atomic bromine Br
+33 33 Bromine monoxide BrO
+34 34 Bromine chloride BrCl
+35 35 Hydrogen bromide HBr
+36 36 Hypobromous acid HBrO
+37 37 Bromine nitrate BrONO2
+38 38 Oxygen O2
+#39-9999 Reserved
+10000 10000 Hydroxyl radical OH
+10001 10001 Methyl peroxy radical CH3O2
+10002 10002 Methyl hydroperoxide CH3O2H
+10004 10004 Methanol CH3OH
+10005 10005 Formic acid CH3OOH
+10006 10006 Hydrogen cyanide HCN
+10007 10007 Aceto nitrile CH3CN
+10008 10008 Ethane C2H6
+10009 10009 Ethene (= Ethylene) C2H4
+10010 10010 Ethyne (= Acetylene) C2H2
+10011 10011 Ethanol C2H5OH
+10012 10012 Acetic acid C2H5OOH
+10013 10013 Peroxyacetyl nitrate CH3C(O)OONO2
+10014 10014 Propane C3H8
+10015 10015 Propene C3H6
+10016 10016 Butanes C4H10
+10017 10017 Isoprene C5H10
+10018 10018 Alpha pinene C10H16
+10019 10019 Beta pinene C10H16
+10020 10020 Limonene C10H16
+10021 10021 Benzene C6H6
+10022 10022 Toluene C7H8
+10023 10023 Xylene C8H10
+#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...)
+10500 10500 Dimethyl sulphide CH3SCH3 (DMS)
+#10501-20000 Reserved
+20001 20001 Hydrogen chloride
+20002 20002 CFC-11
+20003 20003 CFC-12
+20004 20004 CFC-113
+20005 20005 CFC-113a
+20006 20006 CFC-114
+20007 20007 CFC-115
+20008 20008 HCFC-22
+20009 20009 HCFC-141b
+20010 20010 HCFC-142b
+20011 20011 Halon-1202
+20012 20012 Halon-1211
+20013 20013 Halon-1301
+20014 20014 Halon-2402
+20015 20015 Methyl chloride (HCC-40)
+20016 20016 Carbon tetrachloride (HCC-10)
+20017 20017 HCC-140a CH3CCl3
+20018 20018 Methyl bromide (HBC-40B1)
+20019 20019 Hexachlorocyclohexane (HCH)
+20020 20020 Alpha hexachlorocyclohexane
+20021 20021 Hexachlorobiphenyl (PCB-153)
+#20022-29999 Reserved
+30000 30000 Radioactive pollutant (tracer, defined by originating centre)
+#30001-30009 Reserved
+30010 30010 Hydrogen H-3
+30011 30011 Hydrogen organic bounded H-3o
+30012 30012 Hydrogen inorganic H-3a
+30013 30013 Beryllium 7 Be-7
+30014 30014 Beryllium 10 Be-10
+30015 30015 Carbon 14 C-14
+30016 30016 Carbon 14 CO2 C-14CO2
+30017 30017 Carbon 14 other gases C-14og
+30018 30018 Nitrogen 13 N-13
+30019 30019 Nitrogen 16 N-16
+30020 30020 Fluorine 18 F-18
+30021 30021 Sodium 22 Na-22
+30022 30022 Phosphate 32 P-32
+30023 30023 Phosphate 33 P-33
+30024 30024 Sulphur 35 S-35
+30025 30025 Chlorine 36 Cl-36
+30026 30026 Potassium 40 K-40
+30027 30027 Argon 41 Ar-41
+30028 30028 Calcium 41 Ca-41
+30029 30029 Calcium 45 Ca-45
+30030 30030 Titanium 44 Ti-44
+30031 30031 Scandium 46 Sc-46
+30032 30032 Vanadium 48 V-48
+30033 30033 Vanadium 49 V-49
+30034 30034 Chrome 51 Cr-51
+30035 30035 Manganese 52 Mn-52
+30036 30036 Manganese 54 Mn-54
+30037 30037 Iron 55 Fe-55
+30038 30038 Iron 59 Fe-59
+30039 30039 Cobalt 56 Co-56
+30040 30040 Cobalt 57 Co-57
+30041 30041 Cobalt 58 Co-58
+30042 30042 Cobalt 60 Co-60
+30043 30043 Nickel 59 Ni-59
+30044 30044 Nickel 63 Ni-63
+30045 30045 Zinc 65 Zn-65
+30046 30046 Gallium 67 Ga-67
+30047 30047 Gallium 68 Ga-68
+30048 30048 Germanium 68 Ge-68
+30049 30049 Germanium 69 Ge-69
+30050 30050 Arsenic 73 As-73
+30051 30051 Selenium 75 Se-75
+30052 30052 Selenium 79 Se-79
+30053 30053 Rubidium 81 Rb-81
+30054 30054 Rubidium 83 Rb-83
+30055 30055 Rubidium 84 Rb-84
+30056 30056 Rubidium 86 Rb-86
+30057 30057 Rubidium 87 Rb-87
+30058 30058 Rubidium 88 Rb-88
+30059 30059 Krypton 85 Kr-85
+30060 30060 Krypton 85 metastable Kr-85m
+30061 30061 Krypton 87 Kr-87
+30062 30062 Krypton 88 Kr-88
+30063 30063 Krypton 89 Kr-89
+30064 30064 Strontium 85 Sr-85
+30065 30065 Strontium 89 Sr-89
+30066 30066 Strontium 89/90 Sr-8990
+30067 30067 Strontium 90 Sr-90
+30068 30068 Strontium 91 Sr-91
+30069 30069 Strontium 92 Sr-92
+30070 30070 Yttrium 87 Y-87
+30071 30071 Yttrium 88 Y-88
+30072 30072 Yttrium 90 Y-90
+30073 30073 Yttrium 91 Y-91
+30074 30074 Yttrium 91 metastable Y-91m
+30075 30075 Yttrium 92 Y-92
+30076 30076 Yttrium 93 Y-93
+30077 30077 Zirconium 89 Zr-89
+30078 30078 Zirconium 93 Zr-93
+30079 30079 Zirconium 95 Zr-95
+30080 30080 Zirconium 97 Zr-97
+30081 30081 Niobium 93 metastable Nb-93m
+30082 30082 Niobium 94 Nb-94
+30083 30083 Niobium 95 Nb-95
+30084 30084 Niobium 95 metastable Nb-95m
+30085 30085 Niobium 97 Nb-97
+30086 30086 Niobium 97 metastable Nb-97m
+30087 30087 Molybdenum 93 Mo-93
+30088 30088 Molybdenum 99 Mo-99
+30089 30089 Technetium 95 metastable Tc-95m
+30090 30090 Technetium 96 Tc-96
+30091 30091 Technetium 99 Tc-99
+30092 30092 Technetium 99 metastable Tc-99m
+30093 30093 Rhodium 99 Rh-99
+30094 30094 Rhodium 101 Rh-101
+30095 30095 Rhodium 102 metastable Rh-102m
+30096 30096 Rhodium 103 metastable Rh-103m
+30097 30097 Rhodium 105 Rh-105
+30098 30098 Rhodium 106 Rh-106
+30099 30099 Palladium 100 Pd-100
+30100 30100 Palladium 103 Pd-103
+30101 30101 Palladium 107 Pd-107
+30102 30102 Ruthenium 103 Ru-103
+30103 30103 Ruthenium 105 Ru-105
+30104 30104 Ruthenium 106 Ru-106
+30105 30105 Silver 108 metastable Ag-108m
+30106 30106 Silver 110 metastable Ag-110m
+30107 30107 Cadmium 109 Cd-109
+30108 30108 Cadmium 113 metastable Cd-113m
+30109 30109 Cadmium 115 metastable Cd-115m
+30110 30110 Indium 114 metastable In-114m
+30111 30111 Tin 113 Sn-113
+30112 30112 Tin 119 metastable Sn-119m
+30113 30113 Tin 121 metastable Sn-121m
+30114 30114 Tin 122 Sn-122
+30115 30115 Tin 123 Sn-123
+30116 30116 Tin 126 Sn-126
+30117 30117 Antimony 124 Sb-124
+30118 30118 Antimony 125 Sb-125
+30119 30119 Antimony 126 Sb-126
+30120 30120 Antimony 127 Sb-127
+30121 30121 Antimony 129 Sb-129
+30122 30122 Tellurium 123 metastable Te-123m
+30123 30123 Tellurium 125 metastable Te-125m
+30124 30124 Tellurium 127 Te-127
+30125 30125 Tellurium 127 metastable Te-127m
+30126 30126 Tellurium 129 Te-129
+30127 30127 Tellurium 129 metastable Te-129m
+30128 30128 Tellurium 131 metastable Te-131m
+30129 30129 Tellurium 132 Te-132
+30130 30130 Iodine 123 I-123
+30131 30131 Iodine 124 I-124
+30132 30132 Iodine 125 I-125
+30133 30133 Iodine 126 I-126
+30134 30134 Iodine 129 I-129
+30135 30135 Iodine 129 elementary gaseous I-129g
+30136 30136 Iodine 129 organic bounded I-129o
+30137 30137 Iodine 131 I-131
+30138 30138 Iodine 131 elementary gaseous I-131g
+30139 30139 Iodine 131 organic bounded I-131o
+30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go
+30141 30141 Iodine 131 aerosol I-131a
+30142 30142 Iodine 132 I-132
+30143 30143 Iodine 132 elementary gaseous I-132g
+30144 30144 Iodine 132 organic bounded I-132o
+30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go
+30146 30146 Iodine 132 aerosol I-132a
+30147 30147 Iodine 133 I-133
+30148 30148 Iodine 133 elementary gaseous I-133g
+30149 30149 Iodine 133 organic bounded I-133o
+30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go
+30151 30151 Iodine 133 aerosol I-133a
+30152 30152 Iodine 134 I-134
+30153 30153 Iodine 134 elementary gaseous I-134g
+30154 30154 Iodine 134 organic bounded I-134o
+30155 30155 Iodine 135 I-135
+30156 30156 Iodine 135 elementary gaseous I-135g
+30157 30157 Iodine 135 organic bounded I-135o
+30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go
+30159 30159 Iodine 135 aerosol I-135a
+30160 30160 Xenon 131 metastable Xe-131m
+30161 30161 Xenon 133 Xe-133
+30162 30162 Xenon 133 metastable Xe-133m
+30163 30163 Xenon 135 Xe-135
+30164 30164 Xenon 135 metastable Xe-135m
+30165 30165 Xenon 137 Xe-137
+30166 30166 Xenon 138 Xe-138
+30167 30167 Xenon sum of all Xenon isotopes Xe-sum
+30168 30168 Caesium 131 Cs-131
+30169 30169 Caesium 134 Cs-134
+30170 30170 Caesium 135 Cs-135
+30171 30171 Caesium 136 Cs-136
+30172 30172 Caesium 137 Cs-137
+30173 30173 Barium 133 Ba-133
+30174 30174 Barium 137 metastable Ba-137m
+30175 30175 Barium 140 Ba-140
+30176 30176 Cerium 139 Ce-139
+30177 30177 Cerium 141 Ce-141
+30178 30178 Cerium 143 Ce-143
+30179 30179 Cerium 144 Ce-144
+30180 30180 Lanthanum 140 La-140
+30181 30181 Lanthanum 141 La-141
+30182 30182 Praseodymium 143 Pr-143
+30183 30183 Praseodymium 144 Pr-144
+30184 30184 Praseodymium 144 metastable Pr-144m
+30185 30185 Samarium 145 Sm-145
+30186 30186 Samarium 147 Sm-147
+30187 30187 Samarium 151 Sm-151
+30188 30188 Neodymium 147 Nd-147
+30189 30189 Promethium 146 Pm-146
+30190 30190 Promethium 147 Pm-147
+30191 30191 Promethium 151 Pm-151
+30192 30192 Europium 152 Eu-152
+30193 30193 Europium 154 Eu-154
+30194 30194 Europium 155 Eu-155
+30195 30195 Gadolinium 153 Gd-153
+30196 30196 Terbium 160 Tb-160
+30197 30197 Holmium 166 metastable Ho-166m
+30198 30198 Thulium 170 Tm-170
+30199 30199 Ytterbium 169 Yb-169
+30200 30200 Hafnium 175 Hf-175
+30201 30201 Hafnium 181 Hf-181
+30202 30202 Tantalum 179 Ta-179
+30203 30203 Tantalum 182 Ta-182
+30204 30204 Rhenium 184 Re-184
+30205 30205 Iridium 192 Ir-192
+30206 30206 Mercury 203 Hg-203
+30207 30207 Thallium 204 Tl-204
+30208 30208 Thallium 207 Tl-207
+30209 30209 Thallium 208 Tl-208
+30210 30210 Thallium 209 Tl-209
+30211 30211 Bismuth 205 Bi-205
+30212 30212 Bismuth 207 Bi-207
+30213 30213 Bismuth 210 Bi-210
+30214 30214 Bismuth 211 Bi-211
+30215 30215 Bismuth 212 Bi-212
+30216 30216 Bismuth 213 Bi-213
+30217 30217 Bismuth 214 Bi-214
+30218 30218 Polonium 208 Po-208
+30219 30219 Polonium 210 Po-210
+30220 30220 Polonium 212 Po-212
+30221 30221 Polonium 213 Po-213
+30222 30222 Polonium 214 Po-214
+30223 30223 Polonium 215 Po-215
+30224 30224 Polonium 216 Po-216
+30225 30225 Polonium 218 Po-218
+30226 30226 Lead 209 Pb-209
+30227 30227 Lead 210 Pb-210
+30228 30228 Lead 211 Pb-211
+30229 30229 Lead 212 Pb-212
+30230 30230 Lead 214 Pb-214
+30231 30231 Astatine 217 At-217
+30232 30232 Radon 219 Rn-219
+30233 30233 Radon 220 Rn-220
+30234 30234 Radon 222 Rn-222
+30235 30235 Francium 221 Fr-221
+30236 30236 Francium 223 Fr-223
+30237 30237 Radium 223 Ra-223
+30238 30238 Radium 224 Ra-224
+30239 30239 Radium 225 Ra-225
+30240 30240 Radium 226 Ra-226
+30241 30241 Radium 228 Ra-228
+30242 30242 Actinium 225 Ac-225
+30243 30243 Actinium 227 Ac-227
+30244 30244 Actinium 228 Ac-228
+30245 30245 Thorium 227 Th-227
+30246 30246 Thorium 228 Th-228
+30247 30247 Thorium 229 Th-229
+30248 30248 Thorium 230 Th-230
+30249 30249 Thorium 231 Th-231
+30250 30250 Thorium 232 Th-232
+30251 30251 Thorium 234 Th-234
+30252 30252 Protactinium 231 Pa-231
+30253 30253 Protactinium 233 Pa-233
+30254 30254 Protactinium 234 metastable Pa-234m
+30255 30255 Uranium 232 U-232
+30256 30256 Uranium 233 U-233
+30257 30257 Uranium 234 U-234
+30258 30258 Uranium 235 U-235
+30259 30259 Uranium 236 U-236
+30260 30260 Uranium 237 U-237
+30261 30261 Uranium 238 U-238
+30262 30262 Plutonium 236 Pu-236
+30263 30263 Plutonium 238 Pu-238
+30264 30264 Plutonium 239 Pu-239
+30265 30265 Plutonium 240 Pu-240
+30266 30266 Plutonium 241 Pu-241
+30267 30267 Plutonium 242 Pu-242
+30268 30268 Plutonium 244 Pu-244
+30269 30269 Neptunium 237 Np-237
+30270 30270 Neptunium 238 Np-238
+30271 30271 Neptunium 239 Np-239
+30272 30272 Americium 241 Am-241
+30273 30273 Americium 242 Am-242
+30274 30274 Americium 242 metastable Am-242m
+30275 30275 Americium 243 Am-243
+30276 30276 Curium 242 Cm-242
+30277 30277 Curium 243 Cm-243
+30278 30278 Curium 244 Cm-244
+30279 30279 Curium 245 Cm-245
+30280 30280 Curium 246 Cm-246
+30281 30281 Curium 247 Cm-247
+30282 30282 Curium 248 Cm-248
+30283 30283 Curium 243/244 Cm-243244
+30284 30284 Plutonium 238/Americium 241 Pu-238Am-241
+30285 30285 Plutonium 239/240 Pu-239240
+30286 30286 Berkelium 249 Bk-249
+30287 30287 Californium 249 Cf-249
+30288 30288 Californium 250 Cf-250
+30289 30289 Californium 252 Cf-252
+30290 30290 Sum aerosol particulates SumAer
+30291 30291 Sum Iodine SumIod
+30292 30292 Sum noble gas SumNG
+30293 30293 Activation gas ActGas
+30294 30294 Cs-137 Equivalent EquCs137
+#30295-59999 Reserved
+60000 60000 HOx radical (OH+HO2)
+60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2)
+60002 60002 Passive Ozone
+60003 60003 NOx expressed as nitrogen NOx
+60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy
+60005 60005 Total inorganic chlorine Clx
+60006 60006 Total inorganic bromine Brx
+60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx
+60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx
+60009 60009 Lumped alkanes
+60010 60010 Lumped alkenes
+60011 60011 Lumped aromatic compounds
+60012 60012 Lumped terpenes
+60013 60013 Non-methane volatile organic compounds expressed as carbon
+60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon
+60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon
+60016 60016 Lumped oxygenated hydrocarbons
+60017 60017 NOx expressed as nitrogen dioxide (NO2)
+#60018-61999 Reserved
+62000 62000 Total aerosol
+62001 62001 Dust dry
+62002 62002 Water in ambient
+62003 62003 Ammonium dry
+62004 62004 Nitrate dry
+62005 62005 Nitric acid trihydrate
+62006 62006 Sulphate dry
+62007 62007 Mercury dry
+62008 62008 Sea salt dry
+62009 62009 Black carbon dry
+62010 62010 Particulate organic matter dry
+62011 62011 Primary particulate organic matter dry
+62012 62012 Secondary particulate organic matter dry
+62013 62013 Black carbon hydrophilic dry
+62014 62014 Black carbon hydrophobic dry
+62015 62015 Particulate organic matter hydrophilic dry
+62016 62016 Particulate organic matter hydrophobic dry
+62017 62017 Nitrate hydrophilic dry
+62018 62018 Nitrate hydrophobic dry
+#62019 Reserved
+62020 62020 Smoke - high absorption
+62021 62021 Smoke - low absorption
+62022 62022 Aerosol - high absorption
+62023 62023 Aerosol - low absorption
+62025 62025 Volcanic ash
+#62024-65534 Reserved
+65535 65535 Missing
diff --git a/definitions/grib2/tables/15/4.233.table b/definitions/grib2/tables/15/4.233.table
new file mode 100644
index 0000000..4feba8c
--- /dev/null
+++ b/definitions/grib2/tables/15/4.233.table
@@ -0,0 +1,423 @@
+# Code table 4.233 - Aerosol type
+0 0 Ozone O3
+1 1 Water vapour H2O
+2 2 Methane CH4
+3 3 Carbon dioxide CO2
+4 4 Carbon monoxide CO
+5 5 Nitrogen dioxide NO2
+6 6 Nitrous oxide N2O
+7 7 Formaldehyde HCHO
+8 8 Sulphur dioxide SO2
+9 9 Ammonia NH3
+10 10 Ammonium NH4+
+11 11 Nitrogen monoxide NO
+12 12 Atomic oxygen O
+13 13 Nitrate radical NO3
+14 14 Hydroperoxyl radical HO2
+15 15 Dinitrogen pentoxide N2O5
+16 16 Nitrous acid HONO
+17 17 Nitric acid HNO3
+18 18 Peroxynitric acid HO2NO2
+19 19 Hydrogen peroxide H2O2
+20 20 Molecular hydrogen H
+21 21 Atomic nitrogen N
+22 22 Sulphate SO42-
+23 23 Radon Rn
+24 24 Elemental mercury Hg(0)
+25 25 Divalent mercury Hg2+
+26 26 Atomic chlorine Cl
+27 27 Chlorine monoxide ClO
+28 28 Dichlorine peroxide Cl2O2
+29 29 Hypochlorous acid HClO
+30 30 Chlorine nitrate ClONO2
+31 31 Chlorine dioxide ClO2
+32 32 Atomic bromine Br
+33 33 Bromine monoxide BrO
+34 34 Bromine chloride BrCl
+35 35 Hydrogen bromide HBr
+36 36 Hypobromous acid HBrO
+37 37 Bromine nitrate BrONO2
+38 38 Oxygen O2
+#39-9999 Reserved
+10000 10000 Hydroxyl radical OH
+10001 10001 Methyl peroxy radical CH3O2
+10002 10002 Methyl hydroperoxide CH3O2H
+10004 10004 Methanol CH3OH
+10005 10005 Formic acid CH3OOH
+10006 10006 Hydrogen cyanide HCN
+10007 10007 Aceto nitrile CH3CN
+10008 10008 Ethane C2H6
+10009 10009 Ethene (= Ethylene) C2H4
+10010 10010 Ethyne (= Acetylene) C2H2
+10011 10011 Ethanol C2H5OH
+10012 10012 Acetic acid C2H5OOH
+10013 10013 Peroxyacetyl nitrate CH3C(O)OONO2
+10014 10014 Propane C3H8
+10015 10015 Propene C3H6
+10016 10016 Butanes C4H10
+10017 10017 Isoprene C5H10
+10018 10018 Alpha pinene C10H16
+10019 10019 Beta pinene C10H16
+10020 10020 Limonene C10H16
+10021 10021 Benzene C6H6
+10022 10022 Toluene C7H8
+10023 10023 Xylene C8H10
+#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...)
+10500 10500 Dimethyl sulphide CH3SCH3 (DMS)
+#10501-20000 Reserved
+20001 20001 Hydrogen chloride
+20002 20002 CFC-11
+20003 20003 CFC-12
+20004 20004 CFC-113
+20005 20005 CFC-113a
+20006 20006 CFC-114
+20007 20007 CFC-115
+20008 20008 HCFC-22
+20009 20009 HCFC-141b
+20010 20010 HCFC-142b
+20011 20011 Halon-1202
+20012 20012 Halon-1211
+20013 20013 Halon-1301
+20014 20014 Halon-2402
+20015 20015 Methyl chloride (HCC-40)
+20016 20016 Carbon tetrachloride (HCC-10)
+20017 20017 HCC-140a CH3CCl3
+20018 20018 Methyl bromide (HBC-40B1)
+20019 20019 Hexachlorocyclohexane (HCH)
+20020 20020 Alpha hexachlorocyclohexane
+20021 20021 Hexachlorobiphenyl (PCB-153)
+#20022-29999 Reserved
+30000 30000 Radioactive pollutant (tracer, defined by originating centre)
+#30001-30009 Reserved
+30010 30010 Hydrogen H-3
+30011 30011 Hydrogen organic bounded H-3o
+30012 30012 Hydrogen inorganic H-3a
+30013 30013 Beryllium 7 Be-7
+30014 30014 Beryllium 10 Be-10
+30015 30015 Carbon 14 C-14
+30016 30016 Carbon 14 CO2 C-14CO2
+30017 30017 Carbon 14 other gases C-14og
+30018 30018 Nitrogen 13 N-13
+30019 30019 Nitrogen 16 N-16
+30020 30020 Fluorine 18 F-18
+30021 30021 Sodium 22 Na-22
+30022 30022 Phosphate 32 P-32
+30023 30023 Phosphate 33 P-33
+30024 30024 Sulphur 35 S-35
+30025 30025 Chlorine 36 Cl-36
+30026 30026 Potassium 40 K-40
+30027 30027 Argon 41 Ar-41
+30028 30028 Calcium 41 Ca-41
+30029 30029 Calcium 45 Ca-45
+30030 30030 Titanium 44 Ti-44
+30031 30031 Scandium 46 Sc-46
+30032 30032 Vanadium 48 V-48
+30033 30033 Vanadium 49 V-49
+30034 30034 Chrome 51 Cr-51
+30035 30035 Manganese 52 Mn-52
+30036 30036 Manganese 54 Mn-54
+30037 30037 Iron 55 Fe-55
+30038 30038 Iron 59 Fe-59
+30039 30039 Cobalt 56 Co-56
+30040 30040 Cobalt 57 Co-57
+30041 30041 Cobalt 58 Co-58
+30042 30042 Cobalt 60 Co-60
+30043 30043 Nickel 59 Ni-59
+30044 30044 Nickel 63 Ni-63
+30045 30045 Zinc 65 Zn-65
+30046 30046 Gallium 67 Ga-67
+30047 30047 Gallium 68 Ga-68
+30048 30048 Germanium 68 Ge-68
+30049 30049 Germanium 69 Ge-69
+30050 30050 Arsenic 73 As-73
+30051 30051 Selenium 75 Se-75
+30052 30052 Selenium 79 Se-79
+30053 30053 Rubidium 81 Rb-81
+30054 30054 Rubidium 83 Rb-83
+30055 30055 Rubidium 84 Rb-84
+30056 30056 Rubidium 86 Rb-86
+30057 30057 Rubidium 87 Rb-87
+30058 30058 Rubidium 88 Rb-88
+30059 30059 Krypton 85 Kr-85
+30060 30060 Krypton 85 metastable Kr-85m
+30061 30061 Krypton 87 Kr-87
+30062 30062 Krypton 88 Kr-88
+30063 30063 Krypton 89 Kr-89
+30064 30064 Strontium 85 Sr-85
+30065 30065 Strontium 89 Sr-89
+30066 30066 Strontium 89/90 Sr-8990
+30067 30067 Strontium 90 Sr-90
+30068 30068 Strontium 91 Sr-91
+30069 30069 Strontium 92 Sr-92
+30070 30070 Yttrium 87 Y-87
+30071 30071 Yttrium 88 Y-88
+30072 30072 Yttrium 90 Y-90
+30073 30073 Yttrium 91 Y-91
+30074 30074 Yttrium 91 metastable Y-91m
+30075 30075 Yttrium 92 Y-92
+30076 30076 Yttrium 93 Y-93
+30077 30077 Zirconium 89 Zr-89
+30078 30078 Zirconium 93 Zr-93
+30079 30079 Zirconium 95 Zr-95
+30080 30080 Zirconium 97 Zr-97
+30081 30081 Niobium 93 metastable Nb-93m
+30082 30082 Niobium 94 Nb-94
+30083 30083 Niobium 95 Nb-95
+30084 30084 Niobium 95 metastable Nb-95m
+30085 30085 Niobium 97 Nb-97
+30086 30086 Niobium 97 metastable Nb-97m
+30087 30087 Molybdenum 93 Mo-93
+30088 30088 Molybdenum 99 Mo-99
+30089 30089 Technetium 95 metastable Tc-95m
+30090 30090 Technetium 96 Tc-96
+30091 30091 Technetium 99 Tc-99
+30092 30092 Technetium 99 metastable Tc-99m
+30093 30093 Rhodium 99 Rh-99
+30094 30094 Rhodium 101 Rh-101
+30095 30095 Rhodium 102 metastable Rh-102m
+30096 30096 Rhodium 103 metastable Rh-103m
+30097 30097 Rhodium 105 Rh-105
+30098 30098 Rhodium 106 Rh-106
+30099 30099 Palladium 100 Pd-100
+30100 30100 Palladium 103 Pd-103
+30101 30101 Palladium 107 Pd-107
+30102 30102 Ruthenium 103 Ru-103
+30103 30103 Ruthenium 105 Ru-105
+30104 30104 Ruthenium 106 Ru-106
+30105 30105 Silver 108 metastable Ag-108m
+30106 30106 Silver 110 metastable Ag-110m
+30107 30107 Cadmium 109 Cd-109
+30108 30108 Cadmium 113 metastable Cd-113m
+30109 30109 Cadmium 115 metastable Cd-115m
+30110 30110 Indium 114 metastable In-114m
+30111 30111 Tin 113 Sn-113
+30112 30112 Tin 119 metastable Sn-119m
+30113 30113 Tin 121 metastable Sn-121m
+30114 30114 Tin 122 Sn-122
+30115 30115 Tin 123 Sn-123
+30116 30116 Tin 126 Sn-126
+30117 30117 Antimony 124 Sb-124
+30118 30118 Antimony 125 Sb-125
+30119 30119 Antimony 126 Sb-126
+30120 30120 Antimony 127 Sb-127
+30121 30121 Antimony 129 Sb-129
+30122 30122 Tellurium 123 metastable Te-123m
+30123 30123 Tellurium 125 metastable Te-125m
+30124 30124 Tellurium 127 Te-127
+30125 30125 Tellurium 127 metastable Te-127m
+30126 30126 Tellurium 129 Te-129
+30127 30127 Tellurium 129 metastable Te-129m
+30128 30128 Tellurium 131 metastable Te-131m
+30129 30129 Tellurium 132 Te-132
+30130 30130 Iodine 123 I-123
+30131 30131 Iodine 124 I-124
+30132 30132 Iodine 125 I-125
+30133 30133 Iodine 126 I-126
+30134 30134 Iodine 129 I-129
+30135 30135 Iodine 129 elementary gaseous I-129g
+30136 30136 Iodine 129 organic bounded I-129o
+30137 30137 Iodine 131 I-131
+30138 30138 Iodine 131 elementary gaseous I-131g
+30139 30139 Iodine 131 organic bounded I-131o
+30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go
+30141 30141 Iodine 131 aerosol I-131a
+30142 30142 Iodine 132 I-132
+30143 30143 Iodine 132 elementary gaseous I-132g
+30144 30144 Iodine 132 organic bounded I-132o
+30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go
+30146 30146 Iodine 132 aerosol I-132a
+30147 30147 Iodine 133 I-133
+30148 30148 Iodine 133 elementary gaseous I-133g
+30149 30149 Iodine 133 organic bounded I-133o
+30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go
+30151 30151 Iodine 133 aerosol I-133a
+30152 30152 Iodine 134 I-134
+30153 30153 Iodine 134 elementary gaseous I-134g
+30154 30154 Iodine 134 organic bounded I-134o
+30155 30155 Iodine 135 I-135
+30156 30156 Iodine 135 elementary gaseous I-135g
+30157 30157 Iodine 135 organic bounded I-135o
+30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go
+30159 30159 Iodine 135 aerosol I-135a
+30160 30160 Xenon 131 metastable Xe-131m
+30161 30161 Xenon 133 Xe-133
+30162 30162 Xenon 133 metastable Xe-133m
+30163 30163 Xenon 135 Xe-135
+30164 30164 Xenon 135 metastable Xe-135m
+30165 30165 Xenon 137 Xe-137
+30166 30166 Xenon 138 Xe-138
+30167 30167 Xenon sum of all Xenon isotopes Xe-sum
+30168 30168 Caesium 131 Cs-131
+30169 30169 Caesium 134 Cs-134
+30170 30170 Caesium 135 Cs-135
+30171 30171 Caesium 136 Cs-136
+30172 30172 Caesium 137 Cs-137
+30173 30173 Barium 133 Ba-133
+30174 30174 Barium 137 metastable Ba-137m
+30175 30175 Barium 140 Ba-140
+30176 30176 Cerium 139 Ce-139
+30177 30177 Cerium 141 Ce-141
+30178 30178 Cerium 143 Ce-143
+30179 30179 Cerium 144 Ce-144
+30180 30180 Lanthanum 140 La-140
+30181 30181 Lanthanum 141 La-141
+30182 30182 Praseodymium 143 Pr-143
+30183 30183 Praseodymium 144 Pr-144
+30184 30184 Praseodymium 144 metastable Pr-144m
+30185 30185 Samarium 145 Sm-145
+30186 30186 Samarium 147 Sm-147
+30187 30187 Samarium 151 Sm-151
+30188 30188 Neodymium 147 Nd-147
+30189 30189 Promethium 146 Pm-146
+30190 30190 Promethium 147 Pm-147
+30191 30191 Promethium 151 Pm-151
+30192 30192 Europium 152 Eu-152
+30193 30193 Europium 154 Eu-154
+30194 30194 Europium 155 Eu-155
+30195 30195 Gadolinium 153 Gd-153
+30196 30196 Terbium 160 Tb-160
+30197 30197 Holmium 166 metastable Ho-166m
+30198 30198 Thulium 170 Tm-170
+30199 30199 Ytterbium 169 Yb-169
+30200 30200 Hafnium 175 Hf-175
+30201 30201 Hafnium 181 Hf-181
+30202 30202 Tantalum 179 Ta-179
+30203 30203 Tantalum 182 Ta-182
+30204 30204 Rhenium 184 Re-184
+30205 30205 Iridium 192 Ir-192
+30206 30206 Mercury 203 Hg-203
+30207 30207 Thallium 204 Tl-204
+30208 30208 Thallium 207 Tl-207
+30209 30209 Thallium 208 Tl-208
+30210 30210 Thallium 209 Tl-209
+30211 30211 Bismuth 205 Bi-205
+30212 30212 Bismuth 207 Bi-207
+30213 30213 Bismuth 210 Bi-210
+30214 30214 Bismuth 211 Bi-211
+30215 30215 Bismuth 212 Bi-212
+30216 30216 Bismuth 213 Bi-213
+30217 30217 Bismuth 214 Bi-214
+30218 30218 Polonium 208 Po-208
+30219 30219 Polonium 210 Po-210
+30220 30220 Polonium 212 Po-212
+30221 30221 Polonium 213 Po-213
+30222 30222 Polonium 214 Po-214
+30223 30223 Polonium 215 Po-215
+30224 30224 Polonium 216 Po-216
+30225 30225 Polonium 218 Po-218
+30226 30226 Lead 209 Pb-209
+30227 30227 Lead 210 Pb-210
+30228 30228 Lead 211 Pb-211
+30229 30229 Lead 212 Pb-212
+30230 30230 Lead 214 Pb-214
+30231 30231 Astatine 217 At-217
+30232 30232 Radon 219 Rn-219
+30233 30233 Radon 220 Rn-220
+30234 30234 Radon 222 Rn-222
+30235 30235 Francium 221 Fr-221
+30236 30236 Francium 223 Fr-223
+30237 30237 Radium 223 Ra-223
+30238 30238 Radium 224 Ra-224
+30239 30239 Radium 225 Ra-225
+30240 30240 Radium 226 Ra-226
+30241 30241 Radium 228 Ra-228
+30242 30242 Actinium 225 Ac-225
+30243 30243 Actinium 227 Ac-227
+30244 30244 Actinium 228 Ac-228
+30245 30245 Thorium 227 Th-227
+30246 30246 Thorium 228 Th-228
+30247 30247 Thorium 229 Th-229
+30248 30248 Thorium 230 Th-230
+30249 30249 Thorium 231 Th-231
+30250 30250 Thorium 232 Th-232
+30251 30251 Thorium 234 Th-234
+30252 30252 Protactinium 231 Pa-231
+30253 30253 Protactinium 233 Pa-233
+30254 30254 Protactinium 234 metastable Pa-234m
+30255 30255 Uranium 232 U-232
+30256 30256 Uranium 233 U-233
+30257 30257 Uranium 234 U-234
+30258 30258 Uranium 235 U-235
+30259 30259 Uranium 236 U-236
+30260 30260 Uranium 237 U-237
+30261 30261 Uranium 238 U-238
+30262 30262 Plutonium 236 Pu-236
+30263 30263 Plutonium 238 Pu-238
+30264 30264 Plutonium 239 Pu-239
+30265 30265 Plutonium 240 Pu-240
+30266 30266 Plutonium 241 Pu-241
+30267 30267 Plutonium 242 Pu-242
+30268 30268 Plutonium 244 Pu-244
+30269 30269 Neptunium 237 Np-237
+30270 30270 Neptunium 238 Np-238
+30271 30271 Neptunium 239 Np-239
+30272 30272 Americium 241 Am-241
+30273 30273 Americium 242 Am-242
+30274 30274 Americium 242 metastable Am-242m
+30275 30275 Americium 243 Am-243
+30276 30276 Curium 242 Cm-242
+30277 30277 Curium 243 Cm-243
+30278 30278 Curium 244 Cm-244
+30279 30279 Curium 245 Cm-245
+30280 30280 Curium 246 Cm-246
+30281 30281 Curium 247 Cm-247
+30282 30282 Curium 248 Cm-248
+30283 30283 Curium 243/244 Cm-243244
+30284 30284 Plutonium 238/Americium 241 Pu-238Am-241
+30285 30285 Plutonium 239/240 Pu-239240
+30286 30286 Berkelium 249 Bk-249
+30287 30287 Californium 249 Cf-249
+30288 30288 Californium 250 Cf-250
+30289 30289 Californium 252 Cf-252
+30290 30290 Sum aerosol particulates SumAer
+30291 30291 Sum Iodine SumIod
+30292 30292 Sum noble gas SumNG
+30293 30293 Activation gas ActGas
+30294 30294 Cs-137 Equivalent EquCs137
+#30295-59999 Reserved
+60000 60000 HOx radical (OH+HO2)
+60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2)
+60002 60002 Passive Ozone
+60003 60003 NOx expressed as nitrogen NOx
+60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy
+60005 60005 Total inorganic chlorine Clx
+60006 60006 Total inorganic bromine Brx
+60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx
+60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx
+60009 60009 Lumped alkanes
+60010 60010 Lumped alkenes
+60011 60011 Lumped aromatic compounds
+60012 60012 Lumped terpenes
+60013 60013 Non-methane volatile organic compounds expressed as carbon
+60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon
+60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon
+60016 60016 Lumped oxygenated hydrocarbons
+60017 60017 NOx expressed as nitrogen dioxide (NO2)
+#60018-61999 Reserved
+62000 62000 Total aerosol
+62001 62001 Dust dry
+62002 62002 Water in ambient
+62003 62003 Ammonium dry
+62004 62004 Nitrate dry
+62005 62005 Nitric acid trihydrate
+62006 62006 Sulphate dry
+62007 62007 Mercury dry
+62008 62008 Sea salt dry
+62009 62009 Black carbon dry
+62010 62010 Particulate organic matter dry
+62011 62011 Primary particulate organic matter dry
+62012 62012 Secondary particulate organic matter dry
+62013 62013 Black carbon hydrophilic dry
+62014 62014 Black carbon hydrophobic dry
+62015 62015 Particulate organic matter hydrophilic dry
+62016 62016 Particulate organic matter hydrophobic dry
+62017 62017 Nitrate hydrophilic dry
+62018 62018 Nitrate hydrophobic dry
+#62019 Reserved
+62020 62020 Smoke - high absorption
+62021 62021 Smoke - low absorption
+62022 62022 Aerosol - high absorption
+62023 62023 Aerosol - low absorption
+62025 62025 Volcanic ash
+#62024-65534 Reserved
+65535 65535 Missing
diff --git a/definitions/grib2/tables/15/4.234.table b/definitions/grib2/tables/15/4.234.table
new file mode 100644
index 0000000..9844a91
--- /dev/null
+++ b/definitions/grib2/tables/15/4.234.table
@@ -0,0 +1,21 @@
+# Code table 4.234 - Canopy cover fraction (to be used as partitioned parameter in PDT 4.53 or 4.54)
+1 1 Crops, mixed farming 
+2 2 Short grass 
+3 3 Evergreen needleleaf trees 
+4 4 Deciduous needleleaf trees 
+5 5 Deciduous broadleaf trees 
+6 6 Evergreen broadleaf trees 
+7 7 Tall grass 
+8 8 Desert 
+9 9 Tundra 
+10 10 Irrigated crops 
+11 11 Semidesert 
+12 12 Ice caps and glaciers 
+13 13 Bogs and marshes 
+14 14 Inland water 
+15 15 Ocean 
+16 16 Evergreen shrubs 
+17 17 Deciduous shrubs 
+18 18 Mixed forest 
+19 19 Interrupted forest 
+20 20 Water and land mixtures 
diff --git a/definitions/grib2/tables/15/4.236.table b/definitions/grib2/tables/15/4.236.table
new file mode 100644
index 0000000..08c7f8d
--- /dev/null
+++ b/definitions/grib2/tables/15/4.236.table
@@ -0,0 +1,8 @@
+# Code table 4.236 - Soil texture fraction (to be used as partitioned parameter in PDT 4.53 or 4.54)
+1 1 Coarse 
+2 2 Medium 
+3 3 Medium-fine 
+4 4 Fine 
+5 5 Very-fine 
+6 6 Organic 
+7 7 Tropical-organic 
diff --git a/definitions/grib2/tables/15/4.240.table b/definitions/grib2/tables/15/4.240.table
new file mode 100644
index 0000000..f8bcdf7
--- /dev/null
+++ b/definitions/grib2/tables/15/4.240.table
@@ -0,0 +1,12 @@
+# Code table 4.240 - Type of distribution function
+0 0 No specific distribution function given
+1 1 Delta functions with spatially variable concentration and fixed diameters Dl(p1) in meter
+2 2 Delta functions with spatially variable concentration and fixed masses Ml(p1) in kg
+3 3 Gaussian (Normal) distribution with spatially variable concentration and fixed mean diameter Dl(p1) and variance(p2)
+4 4 Gaussian (Normal) distribution with spatially variable concentration, mean diameter and variance
+5 5 Log-normal distribution with spatially variable number density, mean diameter and variance
+6 6 Log-normal distribution with spatially variable number density, mean diameter and fixed variance(p1)
+7 7 Log-normal distribution with spatially variable number density and mass density and fixed variance(p1) and fixed particle density(p2)
+# 8-49151 Reserved
+# 49152-65534 Reserved for local use
+65535 65535 Missing
diff --git a/definitions/grib2/tables/15/4.241.table b/definitions/grib2/tables/15/4.241.table
new file mode 100644
index 0000000..c0bd3e9
--- /dev/null
+++ b/definitions/grib2/tables/15/4.241.table
@@ -0,0 +1,9 @@
+# Code table 4.241 - Coverage attributes
+0 0 Undefined 
+1 1 Unmodified 
+2 2 Snow covered 
+3 3 Flooded 
+4 4 Ice covered 
+# 5-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.242.table b/definitions/grib2/tables/15/4.242.table
new file mode 100644
index 0000000..083f88c
--- /dev/null
+++ b/definitions/grib2/tables/15/4.242.table
@@ -0,0 +1,7 @@
+# Code table 4.242 - Tile classification
+0 0 Reserved 
+1 1 Land use classes according to ESA-GlobCover GCV2009 
+2 2 Land use classes according to European Commission-Global Land Cover Project GLC2000 
+# 3-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing value 
diff --git a/definitions/grib2/tables/15/4.243.table b/definitions/grib2/tables/15/4.243.table
new file mode 100644
index 0000000..b390533
--- /dev/null
+++ b/definitions/grib2/tables/15/4.243.table
@@ -0,0 +1,43 @@
+# Code table 4.243 - Tile class
+0 0 Reserved 
+1 1 Evergreen broadleaved forest 
+2 2 Deciduous broadleaved closed forest 
+3 3 Deciduous broadleaved open forest 
+4 4 Evergreen needle-leaf forest 
+5 5 Deciduous needle-leaf forest 
+6 6 Mixed leaf trees 
+7 7 Freshwater flooded trees 
+8 8 Saline water flooded trees 
+9 9 Mosaic tree/natural vegetation 
+10 10 Burnt tree cover 
+11 11 Evergreen shrubs closed-open 
+12 12 Deciduous shrubs closed-open 
+13 13 Herbaceous vegetation closed-open 
+14 14 Sparse herbaceous or grass 
+15 15 Flooded shrubs or herbaceous 
+16 16 Cultivated and managed areas 
+17 17 Mosaic crop/tree/natural vegetation 
+18 18 Mosaic crop/shrub/grass 
+19 19 Bare areas 
+20 20 Water 
+21 21 Snow and ice 
+22 22 Artificial surface 
+23 23 Ocean 
+24 24 Irrigated croplands 
+25 25 Rainfed croplands 
+26 26 Mosaic cropland (50-70%) - vegetation (20-50%) 
+27 27 Mosaic vegetation (50-70%) - cropland (20-50%) 
+28 28 Closed broadleaved evergreen forest 
+29 29 Closed needle-leaved evergreen forest 
+30 30 Open needle-leaved deciduous forest 
+31 31 Mixed broadleaved and needle-leaved forest 
+32 32 Mosaic shrubland (50-70%) - grassland (20-50%) 
+33 33 Mosaic grassland (50-70%) - shrubland (20-50%) 
+34 34 Closed to open shrubland 
+35 35 Sparse vegetation 
+36 36 Closed to open forest regularly flooded 
+37 37 Closed forest or shrubland permanently flooded 
+38 38 Closed to open grassland regularly flooded 
+39 39 Undefined 
+# 40-32767 Reserved 
+# 32768- Reserved for local use 
diff --git a/definitions/grib2/tables/15/4.3.table b/definitions/grib2/tables/15/4.3.table
new file mode 100644
index 0000000..f423af2
--- /dev/null
+++ b/definitions/grib2/tables/15/4.3.table
@@ -0,0 +1,20 @@
+# Code table 4.3 - Type of generating process
+0 0 Analysis 
+1 1 Initialization 
+2 2 Forecast 
+3 3 Bias corrected forecast 
+4 4 Ensemble forecast 
+5 5 Probability forecast 
+6 6 Forecast error 
+7 7 Analysis error 
+8 8 Observation 
+9 9 Climatological 
+10 10 Probability-weighted forecast 
+11 11 Bias-corrected ensemble forecast 
+12 12 Post-processed analysis 
+13 13 Post-processed forecast 
+14 14 Nowcast 
+15 15 Hindcast 
+# 16-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.4.table b/definitions/grib2/tables/15/4.4.table
new file mode 100644
index 0000000..7087ebd
--- /dev/null
+++ b/definitions/grib2/tables/15/4.4.table
@@ -0,0 +1,17 @@
+# Code table 4.4 - Indicator of unit of time range
+0 m Minute 
+1 h Hour 
+2 D Day 
+3 M Month 
+4 Y Year 
+5 10Y Decade (10 years) 
+6 30Y Normal (30 years) 
+7 C Century (100 years) 
+# 8-9 Reserved 
+10 3h 3 hours 
+11 6h 6 hours 
+12 12h 12 hours 
+13 s Second 
+# 14-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.5.table b/definitions/grib2/tables/15/4.5.table
new file mode 100644
index 0000000..ccd3251
--- /dev/null
+++ b/definitions/grib2/tables/15/4.5.table
@@ -0,0 +1,63 @@
+# Code table 4.5 - Fixed surface types and units
+0 0 Reserved 
+1 sfc Ground or water surface
+2 2 Cloud base level
+3 3 Level of cloud tops
+4 4 Level of 0 degree C isotherm
+5 5 Level of adiabatic condensation lifted from the surface
+6 6 Maximum wind level
+7 7 Tropopause
+8 sfc Nominal top of the atmosphere
+9 9 Sea bottom
+10 10 Entire atmosphere
+11 11 Cumulonimbus (CB) base (m)
+12 12 Cumulonimbus (CB) top (m)
+# 13-19 Reserved 
+20 20 Isothermal level (K)
+# 21-99 Reserved 
+100 pl Isobaric surface (Pa)
+101 sfc Mean sea level 
+102 102 Specific altitude above mean sea level (m)
+103 sfc Specified height level above ground (m)
+104 104 Sigma level (sigma value)
+105 ml Hybrid level
+106 sfc Depth below land surface (m)
+107 pt Isentropic (theta) level (K)
+108 108 Level at specified pressure difference from ground to level (Pa)
+109 pv Potential vorticity surface (K m2 kg-1 s-1)
+110 110 Reserved 
+111 111 Eta level
+112 112 Reserved 
+113 113 Logarithmic hybrid level 
+114 114 Snow level (Numeric)
+# 115-116 Reserved 
+117 117 Mixed layer depth (m)
+118 hhl Hybrid height level
+119 hpl Hybrid pressure level
+# 120-149 Reserved 
+150 150 Generalized vertical height coordinate 
+# 151-159 Reserved 
+160 160 Depth below sea level (m)
+161 161 Depth below water surface (m)
+162 162 Lake or river bottom
+163 163 Bottom of sediment layer
+164 164 Bottom of thermally active sediment layer
+165 165 Bottom of sediment layer penetrated by thermal wave
+166 166 Mixing layer
+167 167 Bottom of root zone
+# 168-173 Reserved
+# 168-169 Reserved
+174 174 Top surface of ice on sea, lake or river 
+175 175 Top surface of ice, under snow cover, on sea, lake or river 
+176 176 Bottom surface (underside) ice on sea, lake or river 
+177 177 Deep soil (of indefinite depth) 
+178 178 Reserved 
+179 179 Top surface of glacier ice and inland ice 
+180 180 Deep inland or glacier ice (of indefinite depth) 
+181 181 Grid tile land fraction as a model surface 
+182 182 Grid tile water fraction as a model surface 
+183 183 Grid tile ice fraction on sea, lake or river as a model surface 
+184 184 Grid tile glacier ice and inland ice fraction as a model surface 
+# 185-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.6.table b/definitions/grib2/tables/15/4.6.table
new file mode 100644
index 0000000..b2dfeb4
--- /dev/null
+++ b/definitions/grib2/tables/15/4.6.table
@@ -0,0 +1,9 @@
+# Code table 4.6 - Type of ensemble forecast
+0 0 Unperturbed high-resolution control forecast 
+1 1 Unperturbed low-resolution control forecast 
+2 2 Negatively perturbed forecast 
+3 3 Positively perturbed forecast 
+4 4 Multi-model forecast 
+# 5-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.7.table b/definitions/grib2/tables/15/4.7.table
new file mode 100644
index 0000000..e0de0e1
--- /dev/null
+++ b/definitions/grib2/tables/15/4.7.table
@@ -0,0 +1,14 @@
+# Code table 4.7 - Derived forecast
+0 0 Unweighted mean of all members 
+1 1 Weighted mean of all members 
+2 2 Standard deviation with respect to cluster mean 
+3 3 Standard deviation with respect to cluster mean, normalized 
+4 4 Spread of all members 
+5 5 Large anomaly index of all members 
+6 6 Unweighted mean of the cluster members 
+7 7 Interquartile range (range between the 25th and 75th quantile) 
+8 8 Minimum of all ensemble members 
+9 9 Maximum of all ensemble members 
+# 10-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.8.table b/definitions/grib2/tables/15/4.8.table
new file mode 100644
index 0000000..ad88303
--- /dev/null
+++ b/definitions/grib2/tables/15/4.8.table
@@ -0,0 +1,6 @@
+# Code table 4.8 - Clustering method
+0 0 Anomaly correlation 
+1 1 Root mean square 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.9.table b/definitions/grib2/tables/15/4.9.table
new file mode 100644
index 0000000..5878b5a
--- /dev/null
+++ b/definitions/grib2/tables/15/4.9.table
@@ -0,0 +1,9 @@
+# Code table 4.9 - Probability type
+0 0 Probability of event below lower limit 
+1 1 Probability of event above upper limit 
+2 2 Probability of event between lower and upper limits (the range includes the lower limit but not the upper limit) 
+3 3 Probability of event above lower limit 
+4 4 Probability of event below upper limit 
+# 5-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/4.91.table b/definitions/grib2/tables/15/4.91.table
new file mode 100644
index 0000000..44cf25f
--- /dev/null
+++ b/definitions/grib2/tables/15/4.91.table
@@ -0,0 +1,16 @@
+# Code table 4.91 - Type of Interval
+0 0 Smaller than first limit 
+1 1 Greater than second limit 
+2 2 Between first and second limit. The range includes the first limit but not the second limit 
+3 3 Greater than first limit 
+4 4 Smaller than second limit 
+5 5 Smaller or equal first limit 
+6 6 Greater or equal second limit 
+7 7 Between first and second. The range includes the first limit and the second limit 
+8 8 Greater or equal first limit 
+9 9 Smaller or equal second limit 
+10 10 Between first and second limit. The range includes the second limit but not the first limit 
+11 11 Equal to first limit 
+# 12-191 Reserved 
+# 192-254 Reserved for local use 
+255 missing Missing 
diff --git a/definitions/grib2/tables/15/5.0.table b/definitions/grib2/tables/15/5.0.table
new file mode 100644
index 0000000..cd61837
--- /dev/null
+++ b/definitions/grib2/tables/15/5.0.table
@@ -0,0 +1,24 @@
+# Code table 5.0 - Data representation template number
+0 0 Grid point data - simple packing 
+1 1 Matrix value at grid point - simple packing 
+2 2 Grid point data - complex packing 
+3 3 Grid point data - complex packing and spatial differencing 
+4 4 Grid point data - IEEE floating point data 
+6 6 Grid point data - simple packing with pre-processing
+40 40 Grid point data - JPEG 2000 code stream format 
+41 41 Grid point data - Portable Network Graphics (PNG) 
+# 42-49 Reserved 
+50 50 Spectral data - simple packing 
+51 51 Spherical harmonics data - complex packing 
+# 52-60 Reserved 
+61 61 Grid point data - simple packing with logarithm pre-processing 
+# 62-199 Reserved 
+200 200 Run length packing with level values 
+# 201-49151 Reserved 
+# 49152-65534 Reserved for local use 
+40000 40000 JPEG2000 Packing
+40010 40010 PNG pacling
+50000 50000 Sperical harmonics ieee packing
+50001 50001 Second order packing
+50002 50002 Second order packing
+65535 65535 Missing 
diff --git a/definitions/grib2/tables/15/5.1.table b/definitions/grib2/tables/15/5.1.table
new file mode 100644
index 0000000..854330c
--- /dev/null
+++ b/definitions/grib2/tables/15/5.1.table
@@ -0,0 +1,6 @@
+# Code table 5.1 - Type of original field values
+0 0 Floating point 
+1 1 Integer 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/5.2.table b/definitions/grib2/tables/15/5.2.table
new file mode 100644
index 0000000..7a4500e
--- /dev/null
+++ b/definitions/grib2/tables/15/5.2.table
@@ -0,0 +1,8 @@
+# Code table 5.2 - Matrix coordinate value function definition
+0 0 Explicit coordinate values set 
+1 1 Linear coordinates f(1)=C1, f(n)=f(n-1)+C2 
+# 2-10 Reserved 
+11 11 Geometric coordinates f(1)=C1, f(n)=C2*f(n-1)
+# 12-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing
diff --git a/definitions/grib2/tables/15/5.3.table b/definitions/grib2/tables/15/5.3.table
new file mode 100644
index 0000000..c3b7b30
--- /dev/null
+++ b/definitions/grib2/tables/15/5.3.table
@@ -0,0 +1,7 @@
+# Code table 5.3 - Matrix coordinate parameter
+1 1 Direction degrees true 
+2 2 Frequency (s-1) 
+3 3 Radial number (2pi/lambda) (m-1) 
+# 4-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/5.4.table b/definitions/grib2/tables/15/5.4.table
new file mode 100644
index 0000000..8121c18
--- /dev/null
+++ b/definitions/grib2/tables/15/5.4.table
@@ -0,0 +1,6 @@
+# Code table 5.4 - Group splitting method
+0 0 Row by row splitting 
+1 1 General group splitting 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/5.40.table b/definitions/grib2/tables/15/5.40.table
new file mode 100644
index 0000000..b9bad2c
--- /dev/null
+++ b/definitions/grib2/tables/15/5.40.table
@@ -0,0 +1,5 @@
+# Code table 5.40 - Type of compression
+0 0 Lossless 
+1 1 Lossy 
+# 2-254 Reserved 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/5.40000.table b/definitions/grib2/tables/15/5.40000.table
new file mode 100644
index 0000000..1eef7c7
--- /dev/null
+++ b/definitions/grib2/tables/15/5.40000.table
@@ -0,0 +1,5 @@
+# Code Table 5.40: Type of Compression
+0 0 Lossless
+1 1 Lossy
+#2-254 Reserved
+255 255 Missing
diff --git a/definitions/grib2/tables/15/5.5.table b/definitions/grib2/tables/15/5.5.table
new file mode 100644
index 0000000..3ef3eb0
--- /dev/null
+++ b/definitions/grib2/tables/15/5.5.table
@@ -0,0 +1,7 @@
+# Code table 5.5 - Missing value management for complex packing
+0 0 No explicit missing values included within data values 
+1 1 Primary missing values included within data values 
+2 2 Primary and secondary missing values included within data values 
+# 3-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/5.50002.table b/definitions/grib2/tables/15/5.50002.table
new file mode 100644
index 0000000..10c243c
--- /dev/null
+++ b/definitions/grib2/tables/15/5.50002.table
@@ -0,0 +1,19 @@
+# second order packing modes table
+
+1 0 no boustrophedonic
+1 1 boustrophedonic
+2 0 Reserved
+2 1 Reserved
+3 0 Reserved
+3 1 Reserved
+4 0 Reserved
+4 1 Reserved
+5 0 Reserved
+5 1 Reserved
+6 0 Reserved
+6 1 Reserved
+7 0 Reserved
+7 1 Reserved
+8 0 Reserved
+8 1 Reserved
+
diff --git a/definitions/grib2/tables/15/5.6.table b/definitions/grib2/tables/15/5.6.table
new file mode 100644
index 0000000..6d51778
--- /dev/null
+++ b/definitions/grib2/tables/15/5.6.table
@@ -0,0 +1,7 @@
+# Code table 5.6 - Order of spatial differencing
+0 0 Reserved 
+1 1 First-order spatial differencing 
+2 2 Second-order spatial differencing 
+# 3-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/5.7.table b/definitions/grib2/tables/15/5.7.table
new file mode 100644
index 0000000..5ab7800
--- /dev/null
+++ b/definitions/grib2/tables/15/5.7.table
@@ -0,0 +1,7 @@
+# Code table 5.7 - Precision of floating-point numbers
+0 0 Reserved 
+1 1 IEEE 32-bit (I=4 in section 7) 
+2 2 IEEE 64-bit (I=8 in section 7) 
+3 3 IEEE 128-bit (I=16 in section 7) 
+# 4-254 Reserved 
+255 255 Missing 
diff --git a/definitions/grib2/tables/15/6.0.table b/definitions/grib2/tables/15/6.0.table
new file mode 100644
index 0000000..f539b26
--- /dev/null
+++ b/definitions/grib2/tables/15/6.0.table
@@ -0,0 +1,6 @@
+# Code table 6.0 - Bit map indicator
+0 0 A bit map applies to this product and is specified in this Section
+1 1  A bit map pre-determined by the originating/generating centre applies to this product and is not specified in this Section
+# 1-253 A bit map predetermined by the originating/generating centre applies to this product and is not specified in this Section 
+254 254 A bit map defined previously in the same GRIB message applies to this product 
+255 255 A bit map does not apply to this product 
diff --git a/definitions/grib2/tables/15/stepType.table b/definitions/grib2/tables/15/stepType.table
new file mode 100644
index 0000000..d88e441
--- /dev/null
+++ b/definitions/grib2/tables/15/stepType.table
@@ -0,0 +1,4 @@
+# CODE TABLE Step Type
+
+0 instant  Instant
+1 interval Interval
diff --git a/definitions/grib2/tables/16/0.0.table b/definitions/grib2/tables/16/0.0.table
new file mode 100644
index 0000000..b24c505
--- /dev/null
+++ b/definitions/grib2/tables/16/0.0.table
@@ -0,0 +1,10 @@
+# Code table 0.0 - Discipline of processed data in the GRIB message, number of GRIB Master table
+0 0 Meteorological products 
+1 1 Hydrological products 
+2 2 Land surface products 
+3 3 Space products 
+# 4-9 Reserved 
+10 10 Oceanographic products 
+# 11-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/1.0.table b/definitions/grib2/tables/16/1.0.table
new file mode 100644
index 0000000..acb61be
--- /dev/null
+++ b/definitions/grib2/tables/16/1.0.table
@@ -0,0 +1,21 @@
+# Code table 1.0 - GRIB master tables version number
+0 0 Experimental
+1 1 Version implemented on 7 November 2001
+2 2 Version implemented on 4 November 2003
+3 3 Version implemented on 2 November 2005
+4 4 Version implemented on 7 November 2007
+5 5 Version implemented on 4 November 2009
+6 6 Version implemented on 15 September 2010
+7 7 Version implemented on 4 May 2011
+8 8 Version implemented on 2 November 2011
+9 9 Version implemented on 2 May 2012
+10 10 Version implemented on 7 November 2012
+11 11 Version implemented on 8 May 2013
+12 12 Version implemented on 14 November 2013
+13 13 Version implemented on 7 May 2014
+14 14 Version implemented on 5 November 2014
+15 15 Version implemented on 6 May 2015
+16 16 Version implemented on 11 November 2015
+17 17 Pre-operational to be implemented by next amendment
+# 18-254 Future versions
+255 255 Missing
diff --git a/definitions/grib2/tables/16/1.1.table b/definitions/grib2/tables/16/1.1.table
new file mode 100644
index 0000000..d50f8fd
--- /dev/null
+++ b/definitions/grib2/tables/16/1.1.table
@@ -0,0 +1,4 @@
+# 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 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/1.2.table b/definitions/grib2/tables/16/1.2.table
new file mode 100644
index 0000000..934b704
--- /dev/null
+++ b/definitions/grib2/tables/16/1.2.table
@@ -0,0 +1,8 @@
+# Code table 1.2 - Significance of reference time
+0 0 Analysis 
+1 1 Start of forecast 
+2 2 Verifying time of forecast 
+3 3 Observation time 
+# 4-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/1.3.table b/definitions/grib2/tables/16/1.3.table
new file mode 100644
index 0000000..6f061bf
--- /dev/null
+++ b/definitions/grib2/tables/16/1.3.table
@@ -0,0 +1,14 @@
+# Code table 1.3 - Production status of data
+0 0 Operational products 
+1 1 Operational test products 
+2 2 Research products 
+3 3 Re-analysis products 
+4 4 THORPEX Interactive Grand Global Ensemble (TIGGE)
+5 5 THORPEX Interactive Grand Global Ensemble test (TIGGE)
+6 6 S2S operational products
+7 7 S2S test products
+8 8 Uncertainties in ensembles of regional reanalysis project (UERRA)
+9 9 Uncertainties in ensembles of regional reanalysis project test (UERRA)
+# 10-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/1.4.table b/definitions/grib2/tables/16/1.4.table
new file mode 100644
index 0000000..03203d8
--- /dev/null
+++ b/definitions/grib2/tables/16/1.4.table
@@ -0,0 +1,13 @@
+# Code table 1.4 - Type of data
+0 an Analysis products 
+1 fc Forecast products 
+2 af Analysis and forecast products 
+3 cf Control forecast products 
+4 pf Perturbed forecast products 
+5 cp Control and perturbed forecast products 
+6 sa Processed satellite observations 
+7 ra Processed radar observations 
+8 ep Event probability 
+# 9-191 Reserved 
+# 192-254 Reserved for local use 
+255 missing Missing 
diff --git a/definitions/grib2/tables/16/1.5.table b/definitions/grib2/tables/16/1.5.table
new file mode 100644
index 0000000..b2cf9f0
--- /dev/null
+++ b/definitions/grib2/tables/16/1.5.table
@@ -0,0 +1,7 @@
+# Code table 1.5 - Identification template number
+0 0 Calendar definition 
+1 1 Paleontological offset 
+2 2 Calendar definition and paleontological offset 
+# 3-32767 Reserved 
+# 32768-65534 Reserved for local use 
+65535 65535 Missing 
diff --git a/definitions/grib2/tables/16/1.6.table b/definitions/grib2/tables/16/1.6.table
new file mode 100644
index 0000000..5db9219
--- /dev/null
+++ b/definitions/grib2/tables/16/1.6.table
@@ -0,0 +1,8 @@
+# Code table 1.6 - Type of calendar
+0 0 Gregorian 
+1 1 360-day 
+2 2 365-day 
+3 3 Proleptic Gregorian 
+# 4-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/3.0.table b/definitions/grib2/tables/16/3.0.table
new file mode 100644
index 0000000..45187b8
--- /dev/null
+++ b/definitions/grib2/tables/16/3.0.table
@@ -0,0 +1,6 @@
+# Code table 3.0 - Source of grid definition
+0 0 Specified in Code table 3.1 
+1 1 Predetermined grid definition (Defined by originating centre)
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 A grid definition does not apply to this product 
diff --git a/definitions/grib2/tables/16/3.1.table b/definitions/grib2/tables/16/3.1.table
new file mode 100644
index 0000000..aa8d987
--- /dev/null
+++ b/definitions/grib2/tables/16/3.1.table
@@ -0,0 +1,47 @@
+# Code table 3.1 - Grid definition template number
+0 0 Latitude/longitude (Also called equidistant cylindrical, or Plate Carree)
+1 1 Rotated latitude/longitude
+2 2 Stretched latitude/longitude
+3 3 Stretched and rotated latitude/longitude
+4 4 Variable resolution latitude/longitude 
+5 5 Variable resolution rotated latitude/longitude 
+# 6-9 Reserved
+10 10 Mercator
+12 12 Transverse Mercator
+# 13-19 Reserved
+20 20 Polar stereographic projection (Can be south or north)
+# 21-29 Reserved 
+30 30 Lambert conformal (Can be secant or tangent, conical or bipolar)
+31 31 Albers equal area 
+# 32-39 Reserved 
+40 40 Gaussian latitude/longitude 
+41 41 Rotated Gaussian latitude/longitude 
+42 42 Stretched Gaussian latitude/longitude 
+43 43 Stretched and rotated Gaussian latitude/longitude 
+# 44-49 Reserved 
+50 50 Spherical harmonic coefficients 
+51 51 Rotated spherical harmonic coefficients 
+52 52 Stretched spherical harmonic coefficients 
+53 53 Stretched and rotated spherical harmonic coefficients 
+# 54-89 Reserved 
+90 90 Space view perspective or orthographic 
+# 91-99 Reserved 
+100 100 Triangular grid based on an icosahedron 
+101 101 General unstructured grid 
+# 102-109 Reserved 
+110 110 Equatorial azimuthal equidistant projection 
+# 111-119 Reserved 
+120 120 Azimuth-range projection 
+# 121-129 Reserved
+130 130 Irregular latitude/longitude grid
+# 131-139 Reserved
+140 140 Lambert azimuthal equal area projection 
+# 141-999 Reserved 
+1000 1000 Cross-section grid with points equally spaced on the horizontal 
+# 1001-1099 Reserved 
+1100 1100 Hovmoller diagram grid with points equally spaced on the horizontal 
+# 1101-1199 Reserved 
+1200 1200 Time section grid 
+# 1201-32767 Reserved 
+# 32768-65534 Reserved for local use 
+65535 65535 Missing 
diff --git a/definitions/grib2/tables/16/3.10.table b/definitions/grib2/tables/16/3.10.table
new file mode 100644
index 0000000..afa8843
--- /dev/null
+++ b/definitions/grib2/tables/16/3.10.table
@@ -0,0 +1,8 @@
+# Flag table 3.10 - Scanning mode for one diamond
+1 0 Points scan in +i direction, i.e. from pole to Equator 
+1 1 Points scan in -i direction, i.e. from Equator to pole 
+2 0 Points scan in +j direction, i.e. from west to east 
+2 1 Points scan in -j direction, i.e. from east to west 
+3 0 Adjacent points in i direction are consecutive 
+3 1 Adjacent points in j direction are consecutive 
+# 4-8 Reserved 
diff --git a/definitions/grib2/tables/16/3.11.table b/definitions/grib2/tables/16/3.11.table
new file mode 100644
index 0000000..e516a2a
--- /dev/null
+++ b/definitions/grib2/tables/16/3.11.table
@@ -0,0 +1,7 @@
+# Code table 3.11 - Interpretation of list of numbers at end of section 3
+0 0 There is no appended list 
+1 1 Numbers define number of points corresponding to full coordinate circles (i.e. parallels), coordinate values on each circle are multiple of the circle mesh, and extreme coordinate values given in grid definition (i.e. extreme longitudes) may not be reached in all rows 
+2 2 Numbers define number of points corresponding to coordinate lines delimited by extreme coordinate values given in grid definition (i.e. extreme longitudes) which are present in each row 
+3 3 Numbers define the actual latitudes for each row in the grid. The list of numbers are integer values of the valid latitudes in microdegrees (scaled by 10-6) or in unit equal to the ratio of the basic angle and the subdivisions number for each row, in the same order as specified in the scanning mode flag (bit no. 2) 
+# 4-254 Reserved 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/3.15.table b/definitions/grib2/tables/16/3.15.table
new file mode 100644
index 0000000..331217e
--- /dev/null
+++ b/definitions/grib2/tables/16/3.15.table
@@ -0,0 +1,23 @@
+# Code table 3.15 - Physical meaning of vertical coordinate
+# 0-19 Reserved 
+20 20 Temperature (K)
+# 21-99 Reserved 
+100 100 Pressure (Pa)
+101 101 Pressure deviation from mean sea level (Pa)
+102 102 Altitude above mean sea level (m)
+103 103 Height above ground (m)
+104 104 Sigma coordinate 
+105 105 Hybrid coordinate 
+106 106 Depth below land surface (m)
+107 pt Potential temperature (theta) (K)
+108 108 Pressure deviation from ground to level (Pa)
+109 pv Potential vorticity (K m-2 kg-1 s-1)
+110 110 Geometrical height (m)
+111 111 Eta coordinate 
+112 112 Geopotential height (gpm)
+113 113 Logarithmic hybrid coordinate 
+# 114-159 Reserved 
+160 160 Depth below sea level (m)
+# 161-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/3.2.table b/definitions/grib2/tables/16/3.2.table
new file mode 100644
index 0000000..9238dc2
--- /dev/null
+++ b/definitions/grib2/tables/16/3.2.table
@@ -0,0 +1,14 @@
+# Code table 3.2 - Shape of the Earth
+0 0 Earth assumed spherical with radius = 6 367 470.0 m 
+1 1 Earth assumed spherical with radius specified (in m) by data producer 
+2 2 Earth assumed oblate spheroid with size as determined by IAU in 1965 (major axis = 6 378 160.0 m, minor axis = 6 356 775.0 m, f = 1/297.0) 
+3 3 Earth assumed oblate spheroid with major and minor axes specified (in km) by data producer 
+4 4 Earth assumed oblate spheroid as defined in IAG-GRS80 model (major axis = 6 378 137.0 m, minor axis = 6 356 752.314 m, f = 1/298.257 222 101) 
+5 5 Earth assumed represented by WGS84 (as used by ICAO since 1998) 
+6 6 Earth assumed spherical with radius of 6 371 229.0 m 
+7 7 Earth assumed oblate spheroid with major or minor axes specified (in m) by data producer 
+8 8 Earth model assumed spherical with radius of 6 371 200 m, but the horizontal datum of the resulting latitude/longitude field is the WGS84 reference frame 
+9 9 Earth represented by the Ordnance Survey Great Britain 1936 Datum, using the Airy 1830 Spheroid, the Greenwich meridian as 0 longitude, and the Newlyn datum as mean sea level, 0 height 
+# 10-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/3.20.table b/definitions/grib2/tables/16/3.20.table
new file mode 100644
index 0000000..efbf08d
--- /dev/null
+++ b/definitions/grib2/tables/16/3.20.table
@@ -0,0 +1,6 @@
+# Code table 3.20 - Type of horizontal line
+0 0 Rhumb 
+1 1 Great circle 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/3.21.table b/definitions/grib2/tables/16/3.21.table
new file mode 100644
index 0000000..88dbb90
--- /dev/null
+++ b/definitions/grib2/tables/16/3.21.table
@@ -0,0 +1,8 @@
+# Code table 3.21 - Vertical dimension coordinate values definition
+0 0 Explicit coordinate values set 
+1 1 Linear coordinates f(1) = C1, f(n) = f(n-1) + C2 
+# 2-10 Reserved 
+11 11 Geometric coordinates f(1) = C1, f(n) = C2 * f(n-1) 
+# 12-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/3.3.table b/definitions/grib2/tables/16/3.3.table
new file mode 100644
index 0000000..5dd7c70
--- /dev/null
+++ b/definitions/grib2/tables/16/3.3.table
@@ -0,0 +1,9 @@
+# Flag table 3.3 - Resolution and component flags
+# 1-2 Reserved 
+3 0 i direction increments not given 
+3 1 i direction increments given 
+4 0 j direction increments not given 
+4 1 j direction increments given 
+5 0 Resolved u- and v- components of vector quantities relative to easterly and northerly directions 
+5 1 Resolved u- and v- components of vector quantities relative to the defined grid in the direction of increasing x and y (or i and j) coordinates, respectively 
+# 6-8 Reserved - set to zero 
diff --git a/definitions/grib2/tables/16/3.4.table b/definitions/grib2/tables/16/3.4.table
new file mode 100644
index 0000000..897b813
--- /dev/null
+++ b/definitions/grib2/tables/16/3.4.table
@@ -0,0 +1,17 @@
+# Flag table 3.4 - Scanning mode
+1 0 Points of first row or column scan in the +i (+x) direction 
+1 1 Points of first row or column scan in the -i (-x) direction 
+2 0 Points of first row or column scan in the -j (-y) direction 
+2 1 Points of first row or column scan in the +j (+y) direction 
+3 0 Adjacent points in i (x) direction are consecutive 
+3 1 Adjacent points in j (y) direction is consecutive 
+4 0 All rows scan in the same direction 
+4 1 Adjacent rows scans in the opposite direction 
+5 0 Points within odd rows are not offset in i (x) direction 
+5 1 Points within odd rows are offset by Di/2 in i (x) direction 
+6 0 Points within even rows are not offset in i (x) direction 
+6 1 Points within even rows are offset by Di/2 in i (x) direction 
+7 0 Points are not offset in j (y) direction 
+7 1 Points are offset by Dj/2 in j (y) direction 
+8 0 Rows have Ni grid points and columns have Nj grid points 
+8 1 Rows have Ni grid points if points are not offset in i direction  Rows have Ni-1 grid points if points are offset by Di/2 in i direction  Columns have Nj grid points if points are not offset in j direction  Columns have Nj-1 grid points if points are offset by Dj/2 in j direction 
diff --git a/definitions/grib2/tables/16/3.5.table b/definitions/grib2/tables/16/3.5.table
new file mode 100644
index 0000000..eabdde8
--- /dev/null
+++ b/definitions/grib2/tables/16/3.5.table
@@ -0,0 +1,5 @@
+# Flag table 3.5 - Projection centre
+1 0 North Pole is on the projection plane 
+1 1 South Pole is on the projection plane 
+2 0 Only one projection centre is used 
+2 1 Projection is bipolar and symmetric 
diff --git a/definitions/grib2/tables/16/3.6.table b/definitions/grib2/tables/16/3.6.table
new file mode 100644
index 0000000..d381959
--- /dev/null
+++ b/definitions/grib2/tables/16/3.6.table
@@ -0,0 +1,2 @@
+# Code table 3.6 - Spectral data representation type
+1 1 see separate doc or pdf file
diff --git a/definitions/grib2/tables/16/3.7.table b/definitions/grib2/tables/16/3.7.table
new file mode 100644
index 0000000..0a7d6ef
--- /dev/null
+++ b/definitions/grib2/tables/16/3.7.table
@@ -0,0 +1,5 @@
+# Code table 3.7 - Spectral data representation mode
+0 0 Reserved 
+1 1 see separate doc or pdf file
+# 2-254 Reserved 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/3.8.table b/definitions/grib2/tables/16/3.8.table
new file mode 100644
index 0000000..844e742
--- /dev/null
+++ b/definitions/grib2/tables/16/3.8.table
@@ -0,0 +1,7 @@
+# Code table 3.8 - Grid point position
+0 0 Grid points at triangle vertices 
+1 1 Grid points at centres of triangles 
+2 2 Grid points at midpoints of triangle sides 
+# 3-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/3.9.table b/definitions/grib2/tables/16/3.9.table
new file mode 100644
index 0000000..fd730bc
--- /dev/null
+++ b/definitions/grib2/tables/16/3.9.table
@@ -0,0 +1,4 @@
+# Flag table 3.9 - Numbering order of diamonds as seen from the corresponding pole
+1 0 Clockwise orientation 
+1 1 Anti-clockwise (i.e. counter-clockwise) orientation 
+# 2-8 Reserved 
diff --git a/definitions/grib2/tables/16/4.0.table b/definitions/grib2/tables/16/4.0.table
new file mode 100644
index 0000000..05bf243
--- /dev/null
+++ b/definitions/grib2/tables/16/4.0.table
@@ -0,0 +1,65 @@
+# Code table 4.0 - Product definition template number
+0 0 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time 
+1 1 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time 
+2 2 Derived forecasts based on all ensemble members at a horizontal level or in a horizontal layer at a point in time 
+3 3 Derived forecasts based on a cluster of ensemble members over a rectangular area at a horizontal level or in a horizontal layer at a point in time 
+4 4 Derived forecasts based on a cluster of ensemble members over a circular area at a horizontal level or in a horizontal layer at a point in time 
+5 5 Probability forecasts at a horizontal level or in a horizontal layer at a point in time 
+6 6 Percentile forecasts at a horizontal level or in a horizontal layer at a point in time 
+7 7 Analysis or forecast error at a horizontal level or in a horizontal layer at a point in time 
+8 8 Average, accumulation, extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval 
+9 9 Probability forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval 
+10 10 Percentile forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval 
+11 11 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval 
+12 12 Derived forecasts based on all ensemble members at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval 
+13 13 Derived forecasts based on a cluster of ensemble members over a rectangular area, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval 
+14 14 Derived forecasts based on a cluster of ensemble members over a circular area, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval 
+15 15 Average, accumulation, extreme values, or other statistically processed values over a spatial area at a horizontal level or in a horizontal layer at a point in time 
+# 16-19 Reserved 
+20 20 Radar product 
+# 21-29 Reserved 
+30 30 Satellite product (deprecated) 
+31 31 Satellite product 
+32 32 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data 
+33 33 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data 
+34 34 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval for simulated (synthetic) satellite data 
+# 35-39 Reserved 
+311 311 Satellite product auxiliary information
+40 40 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents 
+41 41 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents 
+42 42 Average, accumulation and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents 
+43 43 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents 
+44 44 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for aerosol 
+45 45 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for aerosol 
+46 46 Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol 
+47 47 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non continuous time interval for aerosol 
+48 48 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol 
+# 49-50 Reserved 
+51 51 Categorical forecasts at a horizontal level or in a horizontal layer at a point in time 
+52 52 Reserved 
+53 53 Partitioned parameters at a horizontal level or in a horizontal layer at a point in time 
+54 54 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for partitioned parameters 
+55 55 Spatio-temporal changing tiles at a horizontal level or horizontal layer at a point in time 
+56 56 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for spatio-temporal changing tile parameters 
+57 57 Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents based on a distribution function 
+# 58-59 Reserved 
+60 60 Individual ensemble reforecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time 
+61 61 Individual ensemble reforecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval 
+# 62-90 Reserved 
+91 91 Categorical forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval 
+# 92-253 Reserved 
+254 254 CCITT IA5 character string 
+# 255-999 Reserved 
+1000 1000 Cross-section of analysis and forecast at a point in time 
+1001 1001 Cross-section of averaged or otherwise statistically processed analysis or forecast over a range of time 
+1002 1002 Cross-section of analysis and forecast, averaged or otherwise statistically processed over latitude or longitude 
+# 1003-1099 Reserved 
+1100 1100 Hovmoller-type grid with no averaging or other statistical processing 
+1101 1101 Hovmoller-type grid with averaging or other statistical processing 
+50001 50001 Forecasting Systems with Variable Resolution in a point in time
+50011 50011 Forecasting Systems with Variable Resolution in a continous or non countinous time interval
+# 1102-32767 Reserved 
+# 32768-65534 Reserved for local use 
+40033 40033 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data
+40034 40034 Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval for simulated (synthetic) satellite data
+65535 65535 Missing 
diff --git a/definitions/grib2/tables/16/4.1.0.table b/definitions/grib2/tables/16/4.1.0.table
new file mode 100644
index 0000000..04cfd78
--- /dev/null
+++ b/definitions/grib2/tables/16/4.1.0.table
@@ -0,0 +1,27 @@
+# Code table 4.1 - Parameter category by product discipline
+0 0 Temperature 
+1 1 Moisture 
+2 2 Momentum 
+3 3 Mass 
+4 4 Short-wave radiation 
+5 5 Long-wave radiation 
+6 6 Cloud 
+7 7 Thermodynamic stability indices 
+8 8 Kinematic stability indices 
+9 9 Temperature probabilities 
+10 10 Moisture probabilities 
+11 11 Momentum probabilities 
+12 12 Mass probabilities 
+13 13 Aerosols 
+14 14 Trace gases (e.g. ozone, CO2) 
+15 15 Radar 
+16 16 Forecast radar imagery 
+17 17 Electrodynamics 
+18 18 Nuclear/radiology 
+19 19 Physical atmospheric properties 
+20 20 Atmospheric chemical constituents 
+# 21-189 Reserved 
+190 190 CCITT IA5 string 
+191 191 Miscellaneous 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.1.1.table b/definitions/grib2/tables/16/4.1.1.table
new file mode 100644
index 0000000..7b22b6f
--- /dev/null
+++ b/definitions/grib2/tables/16/4.1.1.table
@@ -0,0 +1,7 @@
+# Code table 4.1 - Parameter category by product discipline
+0 0 Hydrology basic products 
+1 1 Hydrology probabilities 
+2 2 Inland water and sediment properties 
+# 3-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.1.10.table b/definitions/grib2/tables/16/4.1.10.table
new file mode 100644
index 0000000..a9b20eb
--- /dev/null
+++ b/definitions/grib2/tables/16/4.1.10.table
@@ -0,0 +1,10 @@
+# Code table 4.1 - Parameter category by product discipline
+0 0 Waves 
+1 1 Currents 
+2 2 Ice 
+3 3 Surface properties 
+4 4 Subsurface properties 
+# 5-190 Reserved 
+191 191 Miscellaneous 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.1.192.table b/definitions/grib2/tables/16/4.1.192.table
new file mode 100644
index 0000000..c428aca
--- /dev/null
+++ b/definitions/grib2/tables/16/4.1.192.table
@@ -0,0 +1,4 @@
+#Discipline 192: ECMWF local parameters
+255 255 Missing
+
+
diff --git a/definitions/grib2/tables/16/4.1.2.table b/definitions/grib2/tables/16/4.1.2.table
new file mode 100644
index 0000000..5b488fe
--- /dev/null
+++ b/definitions/grib2/tables/16/4.1.2.table
@@ -0,0 +1,9 @@
+# Code table 4.1 - Parameter category by product discipline
+0 0 Vegetation/biomass 
+1 1 Agri-/aquacultural special products 
+2 2 Transportation-related products 
+3 3 Soil products 
+4 4 Fire weather products 
+# 5-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.1.3.table b/definitions/grib2/tables/16/4.1.3.table
new file mode 100644
index 0000000..d2baa13
--- /dev/null
+++ b/definitions/grib2/tables/16/4.1.3.table
@@ -0,0 +1,11 @@
+# Code table 4.1 - Parameter category by product discipline
+0 0 Image format products 
+1 1 Quantitative products 
+2 2 Cloud properties 
+3 3 Flight rules conditions 
+4 4 Volcanic ash 
+5 5 Sea surface temperature 
+6 6 Solar radiation 
+# 7-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.10.table b/definitions/grib2/tables/16/4.10.table
new file mode 100644
index 0000000..1a92baa
--- /dev/null
+++ b/definitions/grib2/tables/16/4.10.table
@@ -0,0 +1,16 @@
+# Code table 4.10 - Type of statistical processing
+0 avg Average 
+1 accum Accumulation 
+2 max Maximum 
+3 min Minimum 
+4 diff Difference (value at the end of time range minus value at the beginning) 
+5 rms Root mean square 
+6 sd Standard deviation 
+7 cov Covariance (temporal variance) 
+8 8 Difference (value at the start of time range minus value at the end) 
+9 ratio Ratio 
+10 10 Standardized anomaly 
+11 11 Summation 
+# 12-191 Reserved 
+# 192-254 Reserved for local use 
+255 missing Missing 
diff --git a/definitions/grib2/tables/16/4.11.table b/definitions/grib2/tables/16/4.11.table
new file mode 100644
index 0000000..7f404c8
--- /dev/null
+++ b/definitions/grib2/tables/16/4.11.table
@@ -0,0 +1,10 @@
+# Code table 4.11 - Type of time intervals
+0 0 Reserved 
+1 1 Successive times processed have same forecast time, start time of forecast is incremented 
+2 2 Successive times processed have same start time of forecast, forecast time is incremented 
+3 3 Successive times processed have start time of forecast incremented and forecast time decremented so that valid time remains constant 
+4 4 Successive times processed have start time of forecast decremented and forecast time incremented so that valid time remains constant 
+5 5 Floating subinterval of time between forecast time and end of overall time interval 
+# 6-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.12.table b/definitions/grib2/tables/16/4.12.table
new file mode 100644
index 0000000..03fd89b
--- /dev/null
+++ b/definitions/grib2/tables/16/4.12.table
@@ -0,0 +1,7 @@
+# Code table 4.12 - Operating mode
+0 0 Maintenance mode 
+1 1 Clear air 
+2 2 Precipitation 
+# 3-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.13.table b/definitions/grib2/tables/16/4.13.table
new file mode 100644
index 0000000..c92854e
--- /dev/null
+++ b/definitions/grib2/tables/16/4.13.table
@@ -0,0 +1,6 @@
+# Code table 4.13 - Quality control indicator
+0 0 No quality control applied 
+1 1 Quality control applied 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.14.table b/definitions/grib2/tables/16/4.14.table
new file mode 100644
index 0000000..a88cb93
--- /dev/null
+++ b/definitions/grib2/tables/16/4.14.table
@@ -0,0 +1,6 @@
+# Code table 4.14 - Clutter filter indicator
+0 0 No clutter filter used 
+1 1 Clutter filter used 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.15.table b/definitions/grib2/tables/16/4.15.table
new file mode 100644
index 0000000..2e5f3de
--- /dev/null
+++ b/definitions/grib2/tables/16/4.15.table
@@ -0,0 +1,11 @@
+# Code table 4.15 - Type of spatial processing used to arrive at given data value from the source data
+0 0 Data is calculated directly from the source grid with no interpolation 
+1 1 Bilinear interpolation using the 4 source grid grid-point values surrounding the nominal grid-point 
+2 2 Bicubic interpolation using the 4 source grid grid-point values surrounding the nominal grid-point 
+3 3 Using the value from the source grid grid-point which is nearest to the nominal grid-point 
+4 4 Budget interpolation using the 4 source grid grid-point values surrounding the nominal grid-point 
+5 5 Spectral interpolation using the 4 source grid grid-point values surrounding the nominal grid-point 
+6 6 Neighbor-budget interpolation using the 4 source grid grid-point values surrounding the nominal grid-point 
+# 7-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.192.table b/definitions/grib2/tables/16/4.192.table
new file mode 100644
index 0000000..e1fd915
--- /dev/null
+++ b/definitions/grib2/tables/16/4.192.table
@@ -0,0 +1,4 @@
+1 1 first
+2 2 second
+3 3 third
+4 4 fourth
diff --git a/definitions/grib2/tables/16/4.2.0.0.table b/definitions/grib2/tables/16/4.2.0.0.table
new file mode 100644
index 0000000..cfadd2d
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.0.0.table
@@ -0,0 +1,32 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Temperature (K)
+1 1 Virtual temperature (K)
+2 2 Potential temperature (K)
+3 3 Pseudo-adiabatic potential temperature or equivalent potential temperature (K)
+4 4 Maximum temperature (K)
+5 5 Minimum temperature (K)
+6 6 Dewpoint temperature (K)
+7 7 Dewpoint depression (or deficit) (K)
+8 8 Lapse rate (K/m)
+9 9 Temperature anomaly (K)
+10 10 Latent heat net flux (W m-2)
+11 11 Sensible heat net flux (W m-2)
+12 12 Heat index (K)
+13 13 Wind chill factor (K)
+14 14 Minimum dewpoint depression (K)
+15 15 Virtual potential temperature (K)
+16 16 Snow phase change heat flux (W m-2)
+17 17 Skin temperature (K)
+18 18 Snow temperature (top of snow) (K)
+19 19 Turbulent transfer coefficient for heat (Numeric)
+20 20 Turbulent diffusion coefficient for heat (m2/s)
+21 21 Apparent temperature (K)
+22 22 Temperature tendency due to short-wave radiation (K s-1)
+23 23 Temperature tendency due to long-wave radiation (K s-1)
+24 24 Temperature tendency due to short-wave radiation, clear sky (K s-1)
+25 25 Temperature tendency due to long-wave radiation, clear sky (K s-1)
+26 26 Temperature tendency due to parameterizations (K s-1)
+27 27 Wet bulb temperature (K)
+# 28-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.0.1.table b/definitions/grib2/tables/16/4.2.0.1.table
new file mode 100644
index 0000000..b012798
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.0.1.table
@@ -0,0 +1,111 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Specific humidity (kg/kg)
+1 1 Relative humidity (%)
+2 2 Humidity mixing ratio (kg/kg)
+3 3 Precipitable water (kg m-2)
+4 4 Vapour pressure (Pa)
+5 5 Saturation deficit (Pa)
+6 6 Evaporation (kg m-2)
+7 7 Precipitation rate (kg m-2 s-1)
+8 8 Total precipitation (kg m-2)
+9 9 Large-scale precipitation (non-convective) (kg m-2)
+10 10 Convective precipitation (kg m-2)
+11 11 Snow depth (m)
+12 12 Snowfall rate water equivalent (kg m-2 s-1)
+13 13 Water equivalent of accumulated snow depth (kg m-2)
+14 14 Convective snow (kg m-2)
+15 15 Large-scale snow (kg m-2)
+16 16 Snow melt (kg m-2)
+17 17 Snow age (d)
+18 18 Absolute humidity (kg m-3)
+19 19 Precipitation type ((Code table 4.201))
+20 20 Integrated liquid water (kg m-2)
+21 21 Condensate (kg/kg)
+22 22 Cloud mixing ratio (kg/kg)
+23 23 Ice water mixing ratio (kg/kg)
+24 24 Rain mixing ratio (kg/kg)
+25 25 Snow mixing ratio (kg/kg)
+26 26 Horizontal moisture convergence (kg kg-1 s-1)
+27 27 Maximum relative humidity (%)
+28 28 Maximum absolute humidity (kg m-3)
+29 29 Total snowfall (m)
+30 30 Precipitable water category ((Code table 4.202))
+31 31 Hail (m)
+32 32 Graupel (snow pellets) (kg/kg)
+33 33 Categorical rain ((Code table 4.222))
+34 34 Categorical freezing rain ((Code table 4.222))
+35 35 Categorical ice pellets ((Code table 4.222))
+36 36 Categorical snow ((Code table 4.222))
+37 37 Convective precipitation rate (kg m-2 s-1)
+38 38 Horizontal moisture divergence (kg kg-1 s-1)
+39 39 Per cent frozen precipitation (%)
+40 40 Potential evaporation (kg m-2)
+41 41 Potential evaporation rate (W m-2)
+42 42 Snow cover (%)
+43 43 Rain fraction of total cloud water (Proportion)
+44 44 Rime factor (Numeric)
+45 45 Total column integrated rain (kg m-2)
+46 46 Total column integrated snow (kg m-2)
+47 47 Large scale water precipitation (non-convective) (kg m-2)
+48 48 Convective water precipitation (kg m-2)
+49 49 Total water precipitation (kg m-2)
+50 50 Total snow precipitation (kg m-2)
+51 51 Total column water (Vertically integrated total water (vapour + cloud water/ice)) (kg m-2)
+52 52 Total precipitation rate (kg m-2 s-1)
+53 53 Total snowfall rate water equivalent (kg m-2 s-1)
+54 54 Large scale precipitation rate (kg m-2 s-1)
+55 55 Convective snowfall rate water equivalent (kg m-2 s-1)
+56 56 Large scale snowfall rate water equivalent (kg m-2 s-1)
+57 57 Total snowfall rate (m/s)
+58 58 Convective snowfall rate (m/s)
+59 59 Large scale snowfall rate (m/s)
+60 60 Snow depth water equivalent (kg m-2)
+61 61 Snow density (kg m-3)
+62 62 Snow evaporation (kg m-2)
+63 63 Reserved 
+64 64 Total column integrated water vapour (kg m-2)
+65 65 Rain precipitation rate (kg m-2 s-1)
+66 66 Snow precipitation rate (kg m-2 s-1)
+67 67 Freezing rain precipitation rate (kg m-2 s-1)
+68 68 Ice pellets precipitation rate (kg m-2 s-1)
+69 69 Total column integrated cloud water (kg m-2)
+70 70 Total column integrated cloud ice (kg m-2)
+71 71 Hail mixing ratio (kg/kg)
+72 72 Total column integrated hail (kg m-2)
+73 73 Hail precipitation rate (kg m-2 s-1)
+74 74 Total column integrated graupel (kg m-2)
+75 75 Graupel (snow pellets) precipitation rate (kg m-2 s-1)
+76 76 Convective rain rate (kg m-2 s-1)
+77 77 Large scale rain rate (kg m-2 s-1)
+78 78 Total column integrated water (all components including precipitation) (kg m-2)
+79 79 Evaporation rate (kg m-2 s-1)
+80 80 Total condensate (kg/kg)
+81 81 Total column-integrated condensate (kg m-2)
+82 82 Cloud ice mixing-ratio (kg/kg)
+83 83 Specific cloud liquid water content (kg/kg)
+84 84 Specific cloud ice water content (kg/kg)
+85 85 Specific rainwater content (kg/kg)
+86 86 Specific snow water content (kg/kg)
+# 87-89 Reserved 
+90 90 Total kinematic moisture flux (kg kg-1 m s-1)
+91 91 u-component (zonal) kinematic moisture flux (kg kg-1 m s-1)
+92 92 v-component (meridional) kinematic moisture flux (kg kg-1 m s-1)
+93 93 Relative humidity with respect to water (%)
+94 94 Relative humidity with respect to ice (%)
+95 95 Freezing or frozen precipitation rate (kg m-2 s-1)
+96 96 Mass density of rain (kg m-3)
+97 97 Mass density of snow (kg m-3)
+98 98 Mass density of graupel (kg m-3)
+99 99 Mass density of hail (kg m-3)
+100 100 Specific number concentration of rain (kg-1)
+101 101 Specific number concentration of snow (kg-1)
+102 102 Specific number concentration of graupel (kg-1)
+103 103 Specific number concentration of hail (kg-1)
+104 104 Number density of rain (m-3)
+105 105 Number density of snow (m-3)
+106 106 Number density of graupel (m-3)
+107 107 Number density of hail (m-3)
+108 108 Specific humidity tendency due to parameterizations (kg kg-1 s-1)
+# 109-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.0.13.table b/definitions/grib2/tables/16/4.2.0.13.table
new file mode 100644
index 0000000..e9feb09
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.0.13.table
@@ -0,0 +1,5 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Aerosol type ((Code table 4.205))
+# 1-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.0.14.table b/definitions/grib2/tables/16/4.2.0.14.table
new file mode 100644
index 0000000..2158847
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.0.14.table
@@ -0,0 +1,7 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Total ozone (DU)
+1 1 Ozone mixing ratio (kg/kg)
+2 2 Total column integrated ozone (DU)
+# 3-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.0.15.table b/definitions/grib2/tables/16/4.2.0.15.table
new file mode 100644
index 0000000..dfbc4d1
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.0.15.table
@@ -0,0 +1,21 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Base spectrum width (m/s)
+1 1 Base reflectivity (dB)
+2 2 Base radial velocity (m/s)
+3 3 Vertically integrated liquid water (VIL) (kg m-2)
+4 4 Layer-maximum base reflectivity (dB)
+5 5 Precipitation (kg m-2)
+6 6 Radar spectra (1) (-)
+7 7 Radar spectra (2) (-)
+8 8 Radar spectra (3) (-)
+9 9 Reflectivity of cloud droplets (dB)
+10 10 Reflectivity of cloud ice (dB)
+11 11 Reflectivity of snow (dB)
+12 12 Reflectivity of rain (dB)
+13 13 Reflectivity of graupel (dB)
+14 14 Reflectivity of hail (dB)
+15 15 Hybrid scan reflectivity (dB)
+16 16 Hybrid scan reflectivity height (m)
+# 17-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.0.16.table b/definitions/grib2/tables/16/4.2.0.16.table
new file mode 100644
index 0000000..0c240a8
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.0.16.table
@@ -0,0 +1,10 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Equivalent radar reflectivity factor for rain (mm6 m-3)
+1 1 Equivalent radar reflectivity factor for snow (mm6 m-3)
+2 2 Equivalent radar reflectivity factor for parameterized convection (mm6 m-3)
+3 3 Echo top (m)
+4 4 Reflectivity (dB)
+5 5 Composite reflectivity (dB)
+# 6-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.0.17.table b/definitions/grib2/tables/16/4.2.0.17.table
new file mode 100644
index 0000000..d481c02
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.0.17.table
@@ -0,0 +1,2 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Lightning strike density (m-2 s-1)
diff --git a/definitions/grib2/tables/16/4.2.0.18.table b/definitions/grib2/tables/16/4.2.0.18.table
new file mode 100644
index 0000000..18c41aa
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.0.18.table
@@ -0,0 +1,18 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Air concentration of caesium 137 (Bq m-3)
+1 1 Air concentration of iodine 131 (Bq m-3)
+2 2 Air concentration of radioactive pollutant (Bq m-3)
+3 3 Ground deposition of caesium 137 (Bq m-2)
+4 4 Ground deposition of iodine 131 (Bq m-2)
+5 5 Ground deposition of radioactive pollutant (Bq m-2)
+6 6 Time-integrated air concentration of caesium pollutant (Bq s m-3)
+7 7 Time-integrated air concentration of iodine pollutant (Bq s m-3)
+8 8 Time-integrated air concentration of radioactive pollutant (Bq s m-3)
+9 9 Reserved 
+10 10 Air concentration (Bq m-3)
+11 11 Wet deposition (Bq m-2)
+12 12 Dry deposition (Bq m-2)
+13 13 Total deposition (wet + dry) (Bq m-2)
+# 14-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.0.19.table b/definitions/grib2/tables/16/4.2.0.19.table
new file mode 100644
index 0000000..35b9deb
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.0.19.table
@@ -0,0 +1,33 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Visibility (m)
+1 1 Albedo (%)
+2 2 Thunderstorm probability (%)
+3 3 Mixed layer depth (m)
+4 4 Volcanic ash ((Code table 4.206))
+5 5 Icing top (m)
+6 6 Icing base (m)
+7 7 Icing ((Code table 4.207))
+8 8 Turbulence top (m)
+9 9 Turbulence base (m)
+10 10 Turbulence ((Code table 4.208))
+11 11 Turbulent kinetic energy (J/kg)
+12 12 Planetary boundary-layer regime ((Code table 4.209))
+13 13 Contrail intensity ((Code table 4.210))
+14 14 Contrail engine type ((Code table 4.211))
+15 15 Contrail top (m)
+16 16 Contrail base (m)
+17 17 Maximum snow albedo (%)
+18 18 Snow free albedo (%)
+19 19 Snow albedo (%)
+20 20 Icing (%)
+21 21 In-cloud turbulence (%)
+22 22 Clear air turbulence (CAT) (%)
+23 23 Supercooled large droplet probability (%)
+24 24 Convective turbulent kinetic energy (J/kg)
+25 25 Weather ((Code table 4.225))
+26 26 Convective outlook ((Code table 4.224))
+27 27 Icing scenario ((Code table 4.227))
+28 28 Mountain wave turbulence (eddy dissipation rate) (m2/3 s-1)
+# 29-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.0.190.table b/definitions/grib2/tables/16/4.2.0.190.table
new file mode 100644
index 0000000..de621a9
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.0.190.table
@@ -0,0 +1,5 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Arbitrary text string (CCITT IA5)
+# 1-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.0.191.table b/definitions/grib2/tables/16/4.2.0.191.table
new file mode 100644
index 0000000..e3bba0e
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.0.191.table
@@ -0,0 +1,8 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Seconds prior to initial reference time (defined in Section 1) (s)
+1 1 Geographical latitude (deg N)
+2 2 Geographical longitude (deg E)
+3 3 Days since last observation (d)
+# 4-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.0.2.table b/definitions/grib2/tables/16/4.2.0.2.table
new file mode 100644
index 0000000..46b0774
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.0.2.table
@@ -0,0 +1,49 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Wind direction (from which blowing) (degree true)
+1 1 Wind speed (m/s)
+2 2 u-component of wind (m/s)
+3 3 v-component of wind (m/s)
+4 4 Stream function (m2/s)
+5 5 Velocity potential (m2/s)
+6 6 Montgomery stream function (m2 s-2)
+7 7 Sigma coordinate vertical velocity (/s)
+8 8 Vertical velocity (pressure) (Pa/s)
+9 9 Vertical velocity (geometric) (m/s)
+10 10 Absolute vorticity (/s)
+11 11 Absolute divergence (/s)
+12 12 Relative vorticity (/s)
+13 13 Relative divergence (/s)
+14 14 Potential vorticity (K m2 kg-1 s-1)
+15 15 Vertical u-component shear (/s)
+16 16 Vertical v-component shear (/s)
+17 17 Momentum flux, u-component (N m-2)
+18 18 Momentum flux, v-component (N m-2)
+19 19 Wind mixing energy (J)
+20 20 Boundary layer dissipation (W m-2)
+21 21 Maximum wind speed (m/s)
+22 22 Wind speed (gust) (m/s)
+23 23 u-component of wind (gust) (m/s)
+24 24 v-component of wind (gust) (m/s)
+25 25 Vertical speed shear (/s)
+26 26 Horizontal momentum flux (N m-2)
+27 27 u-component storm motion (m/s)
+28 28 v-component storm motion (m/s)
+29 29 Drag coefficient (Numeric)
+30 30 Frictional velocity (m/s)
+31 31 Turbulent diffusion coefficient for momentum (m2/s)
+32 32 Eta coordinate vertical velocity (/s)
+33 33 Wind fetch (m)
+34 34 Normal wind component (m/s)
+35 35 Tangential wind component (m/s)
+36 36 Amplitude function for Rossby wave envelope for meridional wind (m/s)
+37 37 Northward turbulent surface stress (N m-2 s)
+38 38 Eastward turbulent surface stress (N m-2 s)
+39 39 Eastward wind tendency due to parameterizations (m s-2)
+40 40 Northward wind tendency due to parameterizations (m s-2)
+41 41 u-component of geostrophic wind (m s-1)
+42 42 v-component of geostrophic wind (m s-1)
+43 43 Geostrophic wind direction (degree true)
+44 44 Geostrophic wind speed (m s-1)
+# 45-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.0.20.table b/definitions/grib2/tables/16/4.2.0.20.table
new file mode 100644
index 0000000..9584f7c
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.0.20.table
@@ -0,0 +1,42 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Mass density (concentration) (kg m-3)
+1 1 Column-integrated mass density (kg m-2)
+2 2 Mass mixing ratio (mass fraction in air) (kg/kg)
+3 3 Atmosphere emission mass flux (kg m-2 s-1)
+4 4 Atmosphere net production mass flux (kg m-2 s-1)
+5 5 Atmosphere net production and emission mass flux (kg m-2 s-1)
+6 6 Surface dry deposition mass flux (kg m-2 s-1)
+7 7 Surface wet deposition mass flux (kg m-2 s-1)
+8 8 Atmosphere re-emission mass flux (kg m-2 s-1)
+9 9 Wet deposition by large-scale precipitation mass flux (kg m-2 s-1)
+10 10 Wet deposition by convective precipitation mass flux (kg m-2 s-1)
+11 11 Sedimentation mass flux (kg m-2 s-1)
+12 12 Dry deposition mass flux (kg m-2 s-1)
+13 13 Transfer from hydrophobic to hydrophilic (kg kg-1 s-1)
+14 14 Transfer from SO2 (sulphur dioxide) to SO4 (sulphate) (kg kg-1 s-1)
+# 15-49 Reserved 
+50 50 Amount in atmosphere (mol)
+51 51 Concentration in air (mol m-3)
+52 52 Volume mixing ratio (fraction in air) (mol/mol)
+53 53 Chemical gross production rate of concentration (mol m-3 s-1)
+54 54 Chemical gross destruction rate of concentration (mol m-3 s-1)
+55 55 Surface flux (mol m-2 s-1)
+56 56 Changes of amount in atmosphere (mol/s)
+57 57 Total yearly average burden of the atmosphere (mol)
+58 58 Total yearly averaged atmospheric loss (mol/s)
+59 59 Aerosol number concentration (m-3)
+# 60-99 Reserved 
+100 100 Surface area density (aerosol) (/m)
+101 101 Vertical visual range (m)
+102 102 Aerosol optical thickness (Numeric)
+103 103 Single scattering albedo (Numeric)
+104 104 Asymmetry factor (Numeric)
+105 105 Aerosol extinction coefficient (/m)
+106 106 Aerosol absorption coefficient (/m)
+107 107 Aerosol lidar backscatter from satellite (m-1 sr-1)
+108 108 Aerosol lidar backscatter from the ground (m-1 sr-1)
+109 109 Aerosol lidar extinction from satellite (/m)
+110 110 Aerosol lidar extinction from the ground (/m)
+# 111-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.0.3.table b/definitions/grib2/tables/16/4.2.0.3.table
new file mode 100644
index 0000000..c7c6359
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.0.3.table
@@ -0,0 +1,35 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Pressure (Pa)
+1 1 Pressure reduced to MSL (Pa)
+2 2 Pressure tendency (Pa/s)
+3 3 ICAO Standard Atmosphere Reference Height (m)
+4 4 Geopotential (m2 s-2)
+5 5 Geopotential height (gpm)
+6 6 Geometric height (m)
+7 7 Standard deviation of height (m)
+8 8 Pressure anomaly (Pa)
+9 9 Geopotential height anomaly (gpm)
+10 10 Density (kg m-3)
+11 11 Altimeter setting (Pa)
+12 12 Thickness (m)
+13 13 Pressure altitude (m)
+14 14 Density altitude (m)
+15 15 5-wave geopotential height (gpm)
+16 16 Zonal flux of gravity wave stress (N m-2)
+17 17 Meridional flux of gravity wave stress (N m-2)
+18 18 Planetary boundary layer height (m)
+19 19 5-wave geopotential height anomaly (gpm)
+20 20 Standard deviation of sub-grid scale orography (m)
+21 21 Angle of sub-gridscale orography (rad)
+22 22 Slope of sub-gridscale orography (Numeric)
+23 23 Gravity wave dissipation (W m-2)
+24 24 Anisotropy of sub-gridscale orography (Numeric)
+25 25 Natural logarithm of pressure in Pa (Numeric)
+26 26 Exner pressure (Numeric)
+27 27 Updraught mass flux (kg m-2 s-1)
+28 28 Downdraught mass flux (kg m-2 s-1)
+29 29 Updraught detrainment rate (kg m-3 s-1)
+30 30 Downdraught detrainment rate (kg m-3 s-1)
+# 31-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.0.4.table b/definitions/grib2/tables/16/4.2.0.4.table
new file mode 100644
index 0000000..bd37ea3
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.0.4.table
@@ -0,0 +1,22 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Net short-wave radiation flux (surface) (W m-2)
+1 1 Net short-wave radiation flux (top of atmosphere) (W m-2)
+2 2 Short-wave radiation flux (W m-2)
+3 3 Global radiation flux (W m-2)
+4 4 Brightness temperature (K)
+5 5 Radiance (with respect to wave number) (W m-1 sr-1)
+6 6 Radiance (with respect to wave length) (W m-3 sr-1)
+7 7 Downward short-wave radiation flux (W m-2)
+8 8 Upward short-wave radiation flux (W m-2)
+9 9 Net short wave radiation flux (W m-2)
+10 10 Photosynthetically active radiation (W m-2)
+11 11 Net short-wave radiation flux, clear sky (W m-2)
+12 12 Downward UV radiation (W m-2)
+13 13 Direct short wave radiation flux (W m-2)
+14 14 Diffuse short wave radiation flux (W m-2)
+# 15-49 Reserved 
+50 50 UV index (under clear sky) (Numeric)
+51 51 UV index (Numeric)
+# 52-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.0.5.table b/definitions/grib2/tables/16/4.2.0.5.table
new file mode 100644
index 0000000..932a12f
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.0.5.table
@@ -0,0 +1,12 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Net long-wave radiation flux (surface) (W m-2)
+1 1 Net long-wave radiation flux (top of atmosphere) (W m-2)
+2 2 Long-wave radiation flux (W m-2)
+3 3 Downward long-wave radiation flux (W m-2)
+4 4 Upward long-wave radiation flux (W m-2)
+5 5 Net long-wave radiation flux (W m-2)
+6 6 Net long-wave radiation flux, clear sky (W m-2)
+7 7 Brightness temperature (K)
+# 8-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.0.6.table b/definitions/grib2/tables/16/4.2.0.6.table
new file mode 100644
index 0000000..1483d8c
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.0.6.table
@@ -0,0 +1,49 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Cloud ice (kg m-2)
+1 1 Total cloud cover (%)
+2 2 Convective cloud cover (%)
+3 3 Low cloud cover (%)
+4 4 Medium cloud cover (%)
+5 5 High cloud cover (%)
+6 6 Cloud water (kg m-2)
+7 7 Cloud amount (%)
+8 8 Cloud type ((Code table 4.203))
+9 9 Thunderstorm maximum tops (m)
+10 10 Thunderstorm coverage ((Code table 4.204))
+11 11 Cloud base (m)
+12 12 Cloud top (m)
+13 13 Ceiling (m)
+14 14 Non-convective cloud cover (%)
+15 15 Cloud work function (J/kg)
+16 16 Convective cloud efficiency (Proportion)
+17 17 Total condensate (kg/kg)
+18 18 Total column-integrated cloud water (kg m-2)
+19 19 Total column-integrated cloud ice (kg m-2)
+20 20 Total column-integrated condensate (kg m-2)
+21 21 Ice fraction of total condensate (Proportion)
+22 22 Cloud cover (%)
+23 23 Cloud ice mixing ratio (kg/kg)
+24 24 Sunshine (Numeric)
+25 25 Horizontal extent of cumulonimbus (CB) (%)
+26 26 Height of convective cloud base (m)
+27 27 Height of convective cloud top (m)
+28 28 Number of cloud droplets per unit mass of air (/kg)
+29 29 Number of cloud ice particles per unit mass of air (/kg)
+30 30 Number density of cloud droplets (m-3)
+31 31 Number density of cloud ice particles (m-3)
+32 32 Fraction of cloud cover (Numeric)
+33 33 Sunshine duration (s)
+34 34 Surface long-wave effective total cloudiness (Numeric)
+35 35 Surface short-wave effective total cloudiness (Numeric)
+36 36 Fraction of stratiform precipitation cover (Proportion)
+37 37 Fraction of convective precipitation cover (Proportion)
+38 38 Mass density of cloud droplets (kg m-3)
+39 39 Mass density of cloud ice (kg m-3)
+40 40 Mass density of convective cloud water droplets (kg m-3)
+# 41-46 Reserved 
+47 47 Volume fraction of cloud water droplets (Numeric)
+48 48 Volume fraction of cloud ice particles (Numeric)
+49 49 Volume fraction of cloud (ice and/or water) (Numeric)
+# 50-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.0.7.table b/definitions/grib2/tables/16/4.2.0.7.table
new file mode 100644
index 0000000..23a1a82
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.0.7.table
@@ -0,0 +1,23 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Parcel lifted index (to 500 hPa) (K)
+1 1 Best lifted index (to 500 hPa) (K)
+2 2 K index (K)
+3 3 KO index (K)
+4 4 Total totals index (K)
+5 5 Sweat index (Numeric)
+6 6 Convective available potential energy (J/kg)
+7 7 Convective inhibition (J/kg)
+8 8 Storm relative helicity (J/kg)
+9 9 Energy helicity index (Numeric)
+10 10 Surface lifted index (K)
+11 11 Best (4-layer) lifted index (K)
+12 12 Richardson number (Numeric)
+13 13 Showalter index (K)
+14 14 Reserved 
+15 15 Updraft helicity (m2 s-2)
+16 16 Bulk Richardson number (Numeric)
+17 17 Gradient Richardson number (Numeric)
+18 18 Flux Richardson number (Numeric)
+# 19-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.1.0.table b/definitions/grib2/tables/16/4.2.1.0.table
new file mode 100644
index 0000000..89083fa
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.1.0.table
@@ -0,0 +1,20 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Flash flood guidance (Encoded as an accumulation over a floating subinterval of time between the reference time and valid time) (kg m-2)
+1 1 Flash flood runoff (Encoded as an accumulation over a floating subinterval of time) (kg m-2)
+2 2 Remotely-sensed snow cover ((Code table 4.215))
+3 3 Elevation of snow-covered terrain ((Code table 4.216))
+4 4 Snow water equivalent per cent of normal (%)
+5 5 Baseflow-groundwater runoff (kg m-2)
+6 6 Storm surface runoff (kg m-2)
+7 7 Discharge from rivers or streams (m3/s)
+8 8 Groundwater upper storage (kg m-2)
+9 9 Groundwater lower storage (kg m-2)
+10 10 Side flow into river channel (m3 s-1 m-1)
+11 11 River storage of water (m3)
+12 12 Floodplain storage of water (m3)
+13 13 Depth of water on soil surface (kg m-2)
+14 14 Upstream accumulated precipitation (kg m-2)
+15 15 Upstream accumulated snow melt (kg m-2)
+# 16-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.1.1.table b/definitions/grib2/tables/16/4.2.1.1.table
new file mode 100644
index 0000000..b488eb0
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.1.1.table
@@ -0,0 +1,7 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Conditional per cent precipitation amount fractile for an overall period (Encoded as an accumulation) (kg m-2)
+1 1 Per cent precipitation in a sub-period of an overall period (Encoded as per cent accumulation over the sub-period) (%)
+2 2 Probability of 0.01 inch of precipitation (POP) (%)
+# 3-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.1.2.table b/definitions/grib2/tables/16/4.2.1.2.table
new file mode 100644
index 0000000..02979ec
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.1.2.table
@@ -0,0 +1,15 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Water depth (m)
+1 1 Water temperature (K)
+2 2 Water fraction (Proportion)
+3 3 Sediment thickness (m)
+4 4 Sediment temperature (K)
+5 5 Ice thickness (m)
+6 6 Ice temperature (K)
+7 7 Ice cover (Proportion)
+8 8 Land cover (0 = water, 1 = land) (Proportion)
+9 9 Shape factor with respect to salinity profile (-)
+10 10 Shape factor with respect to temperature profile in thermocline (-)
+11 11 Attenuation coefficient of water with respect to solar radiation (/m)
+12 12 Salinity (kg/kg)
+13 13 Cross sectional area of flow in channel (m2)
diff --git a/definitions/grib2/tables/16/4.2.10.0.table b/definitions/grib2/tables/16/4.2.10.0.table
new file mode 100644
index 0000000..095f51b
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.10.0.table
@@ -0,0 +1,50 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Wave spectra (1) (-)
+1 1 Wave spectra (2) (-)
+2 2 Wave spectra (3) (-)
+3 3 Significant height of combined wind waves and swell (m)
+4 4 Direction of wind waves (degree true)
+5 5 Significant height of wind waves (m)
+6 6 Mean period of wind waves (s)
+7 7 Direction of swell waves (degree true)
+8 8 Significant height of swell waves (m)
+9 9 Mean period of swell waves (s)
+10 10 Primary wave direction (degree true)
+11 11 Primary wave mean period (s)
+12 12 Secondary wave direction (degree true)
+13 13 Secondary wave mean period (s)
+14 14 Direction of combined wind waves and swell (degree true)
+15 15 Mean period of combined wind waves and swell (s)
+16 16 Coefficient of drag with waves (-)
+17 17 Friction velocity (m/s)
+18 18 Wave stress (N m-2)
+19 19 Normalized wave stress (-)
+20 20 Mean square slope of waves (-)
+21 21 u-component surface Stokes drift (m/s)
+22 22 v-component surface Stokes drift (m/s)
+23 23 Period of maximum individual wave height (s)
+24 24 Maximum individual wave height (m)
+25 25 Inverse mean wave frequency (s)
+26 26 Inverse mean frequency of wind waves (s)
+27 27 Inverse mean frequency of total swell (s)
+28 28 Mean zero-crossing wave period (s)
+29 29 Mean zero-crossing period of wind waves (s)
+30 30 Mean zero-crossing period of total swell (s)
+31 31 Wave directional width (-)
+32 32 Directional width of wind waves (-)
+33 33 Directional width of total swell (-)
+34 34 Peak wave period (s)
+35 35 Peak period of wind waves (s)
+36 36 Peak period of total swell (s)
+37 37 Altimeter wave height (m)
+38 38 Altimeter corrected wave height (m)
+39 39 Altimeter range relative correction (-)
+40 40 10-metre neutral wind speed over waves (m/s)
+41 41 10-metre wind direction over waves (deg)
+42 42 Wave energy spectrum (m2 s rad-1)
+43 43 Kurtosis of the sea-surface elevation due to waves (-)
+44 44 Benjamin-Feir index (-)
+45 45 Spectral peakedness factor (/s)
+# 46-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.10.1.table b/definitions/grib2/tables/16/4.2.10.1.table
new file mode 100644
index 0000000..5959bfa
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.10.1.table
@@ -0,0 +1,8 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Current direction (degree true)
+1 1 Current speed (m/s)
+2 2 u-component of current (m/s)
+3 3 v-component of current (m/s)
+# 4-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.10.191.table b/definitions/grib2/tables/16/4.2.10.191.table
new file mode 100644
index 0000000..524929e
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.10.191.table
@@ -0,0 +1,8 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Seconds prior to initial reference time (defined in Section 1) (s)
+1 1 Meridional overturning stream function (m3/s)
+2 2 Reserved 
+3 3 Days since last observation (d)
+# 4-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.10.2.table b/definitions/grib2/tables/16/4.2.10.2.table
new file mode 100644
index 0000000..6797062
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.10.2.table
@@ -0,0 +1,17 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Ice cover (Proportion)
+1 1 Ice thickness (m)
+2 2 Direction of ice drift (degree true)
+3 3 Speed of ice drift (m/s)
+4 4 u-component of ice drift (m/s)
+5 5 v-component of ice drift (m/s)
+6 6 Ice growth rate (m/s)
+7 7 Ice divergence (/s)
+8 8 Ice temperature (K)
+9 9 Module of ice internal pressure (Pa m)
+10 10 Zonal vector component of vertically integrated ice internal pressure (Pa m)
+11 11 Meridional vector component of vertically integrated ice internal pressure (Pa m)
+12 12 Compressive ice strength (N/m)
+# 13-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.10.3.table b/definitions/grib2/tables/16/4.2.10.3.table
new file mode 100644
index 0000000..f951bbe
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.10.3.table
@@ -0,0 +1,6 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Water temperature (K)
+1 1 Deviation of sea level from mean (m)
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.10.4.table b/definitions/grib2/tables/16/4.2.10.4.table
new file mode 100644
index 0000000..54774f1
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.10.4.table
@@ -0,0 +1,18 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Main thermocline depth (m)
+1 1 Main thermocline anomaly (m)
+2 2 Transient thermocline depth (m)
+3 3 Salinity (kg/kg)
+4 4 Ocean vertical heat diffusivity (m2/s)
+5 5 Ocean vertical salt diffusivity (m2/s)
+6 6 Ocean vertical momentum diffusivity (m2/s)
+7 7 Bathymetry (m)
+# 8-10 Reserved 
+11 11 Shape factor with respect to salinity profile (-)
+12 12 Shape factor with respect to temperature profile in thermocline (-)
+13 13 Attenuation coefficient of water with respect to solar radiation (/m)
+14 14 Water depth (m)
+15 15 Water temperature (K)
+# 16-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.2.0.table b/definitions/grib2/tables/16/4.2.2.0.table
new file mode 100644
index 0000000..f11616d
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.2.0.table
@@ -0,0 +1,43 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Land cover (0 = sea, 1 = land) (Proportion)
+1 1 Surface roughness (m)
+2 2 Soil temperature (K)
+3 3 Soil moisture content (kg m-2)
+4 4 Vegetation (%)
+5 5 Water runoff (kg m-2)
+6 6 Evapotranspiration (kg-2 s-1)
+7 7 Model terrain height (m)
+8 8 Land use ((Code table 4.212))
+9 9 Volumetric soil moisture content (Proportion)
+10 10 Ground heat flux (W m-2)
+11 11 Moisture availability (%)
+12 12 Exchange coefficient (kg m-2 s-1)
+13 13 Plant canopy surface water (kg m-2)
+14 14 Blackadar's mixing length scale (m)
+15 15 Canopy conductance (m/s)
+16 16 Minimal stomatal resistance (s/m)
+17 17 Wilting point (Proportion)
+18 18 Solar parameter in canopy conductance (Proportion)
+19 19 Temperature parameter in canopy (Proportion)
+20 20 Humidity parameter in canopy conductance (Proportion)
+21 21 Soil moisture parameter in canopy conductance (Proportion)
+22 22 Soil moisture (kg m-3)
+23 23 Column-integrated soil water (kg m-2)
+24 24 Heat flux (W m-2)
+25 25 Volumetric soil moisture (m3 m-3)
+26 26 Wilting point (kg m-3)
+27 27 Volumetric wilting point (m3 m-3)
+28 28 Leaf area index (Numeric)
+29 29 Evergreen forest cover (Proportion)
+30 30 Deciduous forest cover (Proportion)
+31 31 Normalized differential vegetation index (NDVI) (Numeric)
+32 32 Root depth of vegetation (m)
+33 33 Water runoff and drainage (kg m-2)
+34 34 Surface water runoff (kg m-2)
+35 35 Tile class (Code table 4.243)
+36 36 Tile fraction (Proportion)
+37 37 Tile percentage (%)
+38 38 Soil volumetric ice content (water equivalent) (m3 m-3)
+# 39-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.2.3.table b/definitions/grib2/tables/16/4.2.2.3.table
new file mode 100644
index 0000000..9dd57a1
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.2.3.table
@@ -0,0 +1,30 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Soil type ((Code table 4.213))
+1 1 Upper layer soil temperature (K)
+2 2 Upper layer soil moisture (kg m-3)
+3 3 Lower layer soil moisture (kg m-3)
+4 4 Bottom layer soil temperature (K)
+5 5 Liquid volumetric soil moisture (non-frozen) (Proportion)
+6 6 Number of soil layers in root zone (Numeric)
+7 7 Transpiration stress-onset (soil moisture) (Proportion)
+8 8 Direct evaporation cease (soil moisture) (Proportion)
+9 9 Soil porosity (Proportion)
+10 10 Liquid volumetric soil moisture (non-frozen) (m3 m-3)
+11 11 Volumetric transpiration stress-onset (soil moisture) (m3 m-3)
+12 12 Transpiration stress-onset (soil moisture) (kg m-3)
+13 13 Volumetric direct evaporation cease (soil moisture) (m3 m-3)
+14 14 Direct evaporation cease (soil moisture) (kg m-3)
+15 15 Soil porosity (m3 m-3)
+16 16 Volumetric saturation of soil moisture (m3 m-3)
+17 17 Saturation of soil moisture (kg m-3)
+18 18 Soil temperature (K)
+19 19 Soil moisture (kg m-3)
+20 20 Column-integrated soil moisture (kg m-2)
+21 21 Soil ice (kg m-3)
+22 22 Column-integrated soil ice (kg m-2)
+23 23 Liquid water in snow pack (kg m-2)
+24 24 Frost index (K day-1)
+25 25 Snow depth at elevation bands (kg m-2)
+# 26-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.2.4.table b/definitions/grib2/tables/16/4.2.2.4.table
new file mode 100644
index 0000000..b9383fe
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.2.4.table
@@ -0,0 +1,16 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Fire outlook (Code table 4.224)
+1 1 Fire outlook due to dry thunderstorm (Code table 4.224)
+2 2 Haines index (Numeric)
+3 3 Fire burned area (%)
+4 4 Fosberg index (Numeric)
+5 5 Fire weather index (Canadian forest service) (Numeric)
+6 6 Fine fuel moisture code (Canadian forest service) (Numeric)
+7 7 Duff moisture code (Canadian forest service) (Numeric)
+8 8 Drought code (Canadian forest service) (Numeric)
+9 9 Initial fire spread index (Canadian forest service) (Numeric)
+10 10 Fire build up index (Canadian forest service) (Numeric)
+11 11 Fire daily severity rating (Canadian forest service) (Numeric)
+# 12-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.2.5.table b/definitions/grib2/tables/16/4.2.2.5.table
new file mode 100644
index 0000000..10fb689
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.2.5.table
@@ -0,0 +1,2 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+1 1 Glacier temperature (K)
diff --git a/definitions/grib2/tables/16/4.2.3.0.table b/definitions/grib2/tables/16/4.2.3.0.table
new file mode 100644
index 0000000..c0ffa29
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.3.0.table
@@ -0,0 +1,14 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Scaled radiance (Numeric)
+1 1 Scaled albedo (Numeric)
+2 2 Scaled brightness temperature (Numeric)
+3 3 Scaled precipitable water (Numeric)
+4 4 Scaled lifted index (Numeric)
+5 5 Scaled cloud top pressure (Numeric)
+6 6 Scaled skin temperature (Numeric)
+7 7 Cloud mask (Code table 4.217)
+8 8 Pixel scene type (Code table 4.218)
+9 9 Fire detection indicator (Code table 4.223)
+# 10-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.3.1.table b/definitions/grib2/tables/16/4.2.3.1.table
new file mode 100644
index 0000000..75911ee
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.3.1.table
@@ -0,0 +1,32 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Estimated precipitation (kg m-2)
+1 1 Instantaneous rain rate (kg m-2 s-1)
+2 2 Cloud top height (m)
+3 3 Cloud top height quality indicator (Code table 4.219)
+4 4 Estimated u-component of wind (m/s)
+5 5 Estimated v-component of wind (m/s)
+6 6 Number of pixel used (Numeric)
+7 7 Solar zenith angle (deg)
+8 8 Relative azimuth angle (deg)
+9 9 Reflectance in 0.6 micron channel (%)
+10 10 Reflectance in 0.8 micron channel (%)
+11 11 Reflectance in 1.6 micron channel (%)
+12 12 Reflectance in 3.9 micron channel (%)
+13 13 Atmospheric divergence (/s)
+14 14 Cloudy brightness temperature (K)
+15 15 Clear-sky brightness temperature (K)
+16 16 Cloudy radiance (with respect to wave number) (W m-1 sr-1)
+17 17 Clear-sky radiance (with respect to wave number) (W m-1 sr-1)
+18 18 Reserved 
+19 19 Wind speed (m/s)
+20 20 Aerosol optical thickness at 0.635 um 
+21 21 Aerosol optical thickness at 0.810 um 
+22 22 Aerosol optical thickness at 1.640 um 
+23 23 Angstrom coefficient 
+# 24-26 Reserved 
+27 27 Bidirectional reflectance factor (Numeric)
+28 28 Brightness temperature (K)
+29 29 Scaled radiance (Numeric)
+# 30-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.2.3.2.table b/definitions/grib2/tables/16/4.2.3.2.table
new file mode 100644
index 0000000..191f352
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.3.2.table
@@ -0,0 +1,13 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Clear sky probability (%)
+1 1 Cloud top temperature (K)
+2 2 Cloud top pressure (Pa)
+3 3 Cloud type (Code table 4.218)
+4 4 Cloud phase (Code table 4.218)
+5 5 Cloud optical depth (Numeric)
+6 6 Cloud particle effective radius (m)
+7 7 Cloud liquid water path (kg m-2)
+8 8 Cloud ice water path (kg m-2)
+9 9 Cloud albedo (Numeric)
+10 10 Cloud emissivity (Numeric)
+11 11 Effective absorption optical depth ratio (Numeric)
diff --git a/definitions/grib2/tables/16/4.2.3.3.table b/definitions/grib2/tables/16/4.2.3.3.table
new file mode 100644
index 0000000..064cfa1
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.3.3.table
@@ -0,0 +1,4 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Probability of encountering marginal visual flight rules conditions (%)
+1 1 Probability of encountering low instrument flight rules conditions (%)
+2 2 Probability of encountering instrument flight rules conditions (%)
diff --git a/definitions/grib2/tables/16/4.2.3.4.table b/definitions/grib2/tables/16/4.2.3.4.table
new file mode 100644
index 0000000..f86d2d6
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.3.4.table
@@ -0,0 +1,10 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Volcanic ash probability (%)
+1 1 Volcanic ash cloud top temperature (K)
+2 2 Volcanic ash cloud top pressure (Pa)
+3 3 Volcanic ash cloud top height (m)
+4 4 Volcanic ash cloud emissivity (Numeric)
+5 5 Volcanic ash effective absorption optical depth ratio (Numeric)
+6 6 Volcanic ash cloud optical depth (Numeric)
+7 7 Volcanic ash column density (kg m-2)
+8 8 Volcanic ash particle effective radius (m)
diff --git a/definitions/grib2/tables/16/4.2.3.5.table b/definitions/grib2/tables/16/4.2.3.5.table
new file mode 100644
index 0000000..e9cfe12
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.3.5.table
@@ -0,0 +1,7 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Interface sea surface temperature (K)
+1 1 Skin sea surface temperature (K)
+2 2 Sub-skin sea surface temperature (K)
+3 3 Foundation sea surface temperature (K)
+4 4 Estimated bias between sea surface temperature and standard (K)
+5 5 Estimated standard deviation between sea surface temperature and standard (K)
diff --git a/definitions/grib2/tables/16/4.2.3.6.table b/definitions/grib2/tables/16/4.2.3.6.table
new file mode 100644
index 0000000..471beed
--- /dev/null
+++ b/definitions/grib2/tables/16/4.2.3.6.table
@@ -0,0 +1,7 @@
+# Code table 4.2 - Parameter number by product discipline and parameter category
+0 0 Global solar irradiance (W m-2)
+1 1 Global solar exposure (J m-2)
+2 2 Direct solar irradiance (W m-2)
+3 3 Direct solar exposure (J m-2)
+4 4 Diffuse solar irradiance (W m-2)
+5 5 Diffuse solar exposure (J m-2)
diff --git a/definitions/grib2/tables/16/4.201.table b/definitions/grib2/tables/16/4.201.table
new file mode 100644
index 0000000..47f1b48
--- /dev/null
+++ b/definitions/grib2/tables/16/4.201.table
@@ -0,0 +1,15 @@
+# Code table 4.201 - Precipitation type
+0 0 Reserved 
+1 1 Rain 
+2 2 Thunderstorm 
+3 3 Freezing rain 
+4 4 Mixed/ice 
+5 5 Snow 
+6 6 Wet snow 
+7 7 Mixture of rain and snow 
+8 8 Ice pellets 
+9 9 Graupel 
+10 10 Hail 
+# 11-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.202.table b/definitions/grib2/tables/16/4.202.table
new file mode 100644
index 0000000..438502f
--- /dev/null
+++ b/definitions/grib2/tables/16/4.202.table
@@ -0,0 +1,4 @@
+# Code table 4.202 - Precipitable water category
+# 0-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.203.table b/definitions/grib2/tables/16/4.203.table
new file mode 100644
index 0000000..8a9aedf
--- /dev/null
+++ b/definitions/grib2/tables/16/4.203.table
@@ -0,0 +1,26 @@
+# Code table 4.203 - Cloud type
+0 0 Clear 
+1 1 Cumulonimbus 
+2 2 Stratus 
+3 3 Stratocumulus 
+4 4 Cumulus 
+5 5 Altostratus 
+6 6 Nimbostratus 
+7 7 Altocumulus 
+8 8 Cirrostratus 
+9 9 Cirrocumulus 
+10 10 Cirrus 
+11 11 Cumulonimbus - ground-based fog beneath the lowest layer 
+12 12 Stratus - ground-based fog beneath the lowest layer 
+13 13 Stratocumulus - ground-based fog beneath the lowest layer 
+14 14 Cumulus - ground-based fog beneath the lowest layer 
+15 15 Altostratus - ground-based fog beneath the lowest layer 
+16 16 Nimbostratus - ground-based fog beneath the lowest layer 
+17 17 Altocumulus - ground-based fog beneath the lowest layer 
+18 18 Cirrostratus - ground-based fog beneath the lowest layer 
+19 19 Cirrocumulus - ground-based fog beneath the lowest layer 
+20 20 Cirrus - ground-based fog beneath the lowest layer 
+# 21-190 Reserved 
+191 191 Unknown 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.204.table b/definitions/grib2/tables/16/4.204.table
new file mode 100644
index 0000000..91bcf18
--- /dev/null
+++ b/definitions/grib2/tables/16/4.204.table
@@ -0,0 +1,9 @@
+# Code table 4.204 - Thunderstorm coverage
+0 0 None 
+1 1 Isolated (1-2%) 
+2 2 Few (3-5%) 
+3 3 Scattered (16-45%) 
+4 4 Numerous (> 45%) 
+# 5-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.205.table b/definitions/grib2/tables/16/4.205.table
new file mode 100644
index 0000000..5b4484d
--- /dev/null
+++ b/definitions/grib2/tables/16/4.205.table
@@ -0,0 +1,6 @@
+# Code table 4.205 - Presence of aerosol
+0 0 Aerosol not present 
+1 1 Aerosol present 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.206.table b/definitions/grib2/tables/16/4.206.table
new file mode 100644
index 0000000..02c3dfd
--- /dev/null
+++ b/definitions/grib2/tables/16/4.206.table
@@ -0,0 +1,6 @@
+# Code table 4.206 - Volcanic ash
+0 0 Not present 
+1 1 Present 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.207.table b/definitions/grib2/tables/16/4.207.table
new file mode 100644
index 0000000..8ddb2e0
--- /dev/null
+++ b/definitions/grib2/tables/16/4.207.table
@@ -0,0 +1,10 @@
+# Code table 4.207 - Icing
+0 0 None 
+1 1 Light 
+2 2 Moderate 
+3 3 Severe 
+4 4 Trace 
+5 5 Heavy 
+# 6-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.208.table b/definitions/grib2/tables/16/4.208.table
new file mode 100644
index 0000000..b83685a
--- /dev/null
+++ b/definitions/grib2/tables/16/4.208.table
@@ -0,0 +1,9 @@
+# Code table 4.208 - Turbulence
+0 0 None (smooth) 
+1 1 Light 
+2 2 Moderate 
+3 3 Severe 
+4 4 Extreme 
+# 5-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.209.table b/definitions/grib2/tables/16/4.209.table
new file mode 100644
index 0000000..cb76170
--- /dev/null
+++ b/definitions/grib2/tables/16/4.209.table
@@ -0,0 +1,9 @@
+# Code table 4.209 - Planetary boundary-layer regime
+0 0 Reserved 
+1 1 Stable 
+2 2 Mechanically driven turbulence 
+3 3 Forced convection 
+4 4 Free convection 
+# 5-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.210.table b/definitions/grib2/tables/16/4.210.table
new file mode 100644
index 0000000..524a6ca
--- /dev/null
+++ b/definitions/grib2/tables/16/4.210.table
@@ -0,0 +1,6 @@
+# Code table 4.210 - Contrail intensity
+0 0 Contrail not present 
+1 1 Contrail present 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.211.table b/definitions/grib2/tables/16/4.211.table
new file mode 100644
index 0000000..098eb2d
--- /dev/null
+++ b/definitions/grib2/tables/16/4.211.table
@@ -0,0 +1,7 @@
+# Code table 4.211 - Contrail engine type
+0 0 Low bypass 
+1 1 High bypass 
+2 2 Non-bypass 
+# 3-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.212.table b/definitions/grib2/tables/16/4.212.table
new file mode 100644
index 0000000..1a085b8
--- /dev/null
+++ b/definitions/grib2/tables/16/4.212.table
@@ -0,0 +1,18 @@
+# Code table 4.212 - Land use
+0 0 Reserved 
+1 1 Urban land 
+2 2 Agriculture 
+3 3 Range land 
+4 4 Deciduous forest 
+5 5 Coniferous forest 
+6 6 Forest/wetland 
+7 7 Water 
+8 8 Wetlands 
+9 9 Desert 
+10 10 Tundra 
+11 11 Ice 
+12 12 Tropical forest 
+13 13 Savannah 
+# 14-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.213.table b/definitions/grib2/tables/16/4.213.table
new file mode 100644
index 0000000..c65784a
--- /dev/null
+++ b/definitions/grib2/tables/16/4.213.table
@@ -0,0 +1,16 @@
+# Code table 4.213 - Soil type
+0 0 Reserved 
+1 1 Sand 
+2 2 Loamy sand 
+3 3 Sandy loam 
+4 4 Silt loam 
+5 5 Organic (redefined) 
+6 6 Sandy clay loam 
+7 7 Silt clay loam 
+8 8 Clay loam 
+9 9 Sandy clay 
+10 10 Silty clay 
+11 11 Clay 
+# 12-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.215.table b/definitions/grib2/tables/16/4.215.table
new file mode 100644
index 0000000..034db72
--- /dev/null
+++ b/definitions/grib2/tables/16/4.215.table
@@ -0,0 +1,9 @@
+# Code table 4.215 - Remotely sensed snow coverage
+# 0-49 Reserved 
+50 50 No-snow/no-cloud 
+# 51-99 Reserved 
+100 100 Clouds 
+# 101-249 Reserved 
+250 250 Snow 
+# 251-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.216.table b/definitions/grib2/tables/16/4.216.table
new file mode 100644
index 0000000..fd785ef
--- /dev/null
+++ b/definitions/grib2/tables/16/4.216.table
@@ -0,0 +1,96 @@
+# Code table 4.216 - Elevation of snow-covered terrain
+# 0-90 Elevation in increments of 100 m 
+0 0  Elevation in increments of 100 m
+1 1  Elevation in increments of 100 m
+2 2  Elevation in increments of 100 m
+3 3  Elevation in increments of 100 m
+4 4  Elevation in increments of 100 m
+5 5  Elevation in increments of 100 m
+6 6  Elevation in increments of 100 m
+7 7  Elevation in increments of 100 m
+8 8  Elevation in increments of 100 m
+9 9  Elevation in increments of 100 m
+10 10  Elevation in increments of 100 m
+11 11  Elevation in increments of 100 m
+12 12  Elevation in increments of 100 m
+13 13  Elevation in increments of 100 m
+14 14  Elevation in increments of 100 m
+15 15  Elevation in increments of 100 m
+16 16  Elevation in increments of 100 m
+17 17  Elevation in increments of 100 m
+18 18  Elevation in increments of 100 m
+19 19  Elevation in increments of 100 m
+20 20  Elevation in increments of 100 m
+21 21  Elevation in increments of 100 m
+22 22  Elevation in increments of 100 m
+23 23  Elevation in increments of 100 m
+24 24  Elevation in increments of 100 m
+25 25  Elevation in increments of 100 m
+26 26  Elevation in increments of 100 m
+27 27  Elevation in increments of 100 m
+28 28  Elevation in increments of 100 m
+29 29  Elevation in increments of 100 m
+30 30  Elevation in increments of 100 m
+31 31  Elevation in increments of 100 m
+32 32  Elevation in increments of 100 m
+33 33  Elevation in increments of 100 m
+34 34  Elevation in increments of 100 m
+35 35  Elevation in increments of 100 m
+36 36  Elevation in increments of 100 m
+37 37  Elevation in increments of 100 m
+38 38  Elevation in increments of 100 m
+39 39  Elevation in increments of 100 m
+40 40  Elevation in increments of 100 m
+41 41  Elevation in increments of 100 m
+42 42  Elevation in increments of 100 m
+43 43  Elevation in increments of 100 m
+44 44  Elevation in increments of 100 m
+45 45  Elevation in increments of 100 m
+46 46  Elevation in increments of 100 m
+47 47  Elevation in increments of 100 m
+48 48  Elevation in increments of 100 m
+49 49  Elevation in increments of 100 m
+50 50  Elevation in increments of 100 m
+51 51  Elevation in increments of 100 m
+52 52  Elevation in increments of 100 m
+53 53  Elevation in increments of 100 m
+54 54  Elevation in increments of 100 m
+55 55  Elevation in increments of 100 m
+56 56  Elevation in increments of 100 m
+57 57  Elevation in increments of 100 m
+58 58  Elevation in increments of 100 m
+59 59  Elevation in increments of 100 m
+60 60  Elevation in increments of 100 m
+61 61  Elevation in increments of 100 m
+62 62  Elevation in increments of 100 m
+63 63  Elevation in increments of 100 m
+64 64  Elevation in increments of 100 m
+65 65  Elevation in increments of 100 m
+66 66  Elevation in increments of 100 m
+67 67  Elevation in increments of 100 m
+68 68  Elevation in increments of 100 m
+69 69  Elevation in increments of 100 m
+70 70  Elevation in increments of 100 m
+71 71  Elevation in increments of 100 m
+72 72  Elevation in increments of 100 m
+73 73  Elevation in increments of 100 m
+74 74  Elevation in increments of 100 m
+75 75  Elevation in increments of 100 m
+76 76  Elevation in increments of 100 m
+77 77  Elevation in increments of 100 m
+78 78  Elevation in increments of 100 m
+79 79  Elevation in increments of 100 m
+80 80  Elevation in increments of 100 m
+81 81  Elevation in increments of 100 m
+82 82  Elevation in increments of 100 m
+83 83  Elevation in increments of 100 m
+84 84  Elevation in increments of 100 m
+85 85  Elevation in increments of 100 m
+86 86  Elevation in increments of 100 m
+87 87  Elevation in increments of 100 m
+88 88  Elevation in increments of 100 m
+89 89  Elevation in increments of 100 m
+90 90  Elevation in increments of 100 m
+# 91-253 Reserved 
+254 254 Clouds 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.217.table b/definitions/grib2/tables/16/4.217.table
new file mode 100644
index 0000000..a445218
--- /dev/null
+++ b/definitions/grib2/tables/16/4.217.table
@@ -0,0 +1,8 @@
+# Code table 4.217 - Cloud mask type
+0 0 Clear over water 
+1 1 Clear over land 
+2 2 Cloud 
+3 3 No data 
+# 4-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.218.table b/definitions/grib2/tables/16/4.218.table
new file mode 100644
index 0000000..c585bed
--- /dev/null
+++ b/definitions/grib2/tables/16/4.218.table
@@ -0,0 +1,44 @@
+# Code table 4.218 - Pixel scene type
+0 0 No scene identified 
+1 1 Green needle-leafed forest 
+2 2 Green broad-leafed forest 
+3 3 Deciduous needle-leafed forest 
+4 4 Deciduous broad-leafed forest 
+5 5 Deciduous mixed forest 
+6 6 Closed shrub-land 
+7 7 Open shrub-land 
+8 8 Woody savannah 
+9 9 Savannah 
+10 10 Grassland 
+11 11 Permanent wetland 
+12 12 Cropland 
+13 13 Urban 
+14 14 Vegetation/crops 
+15 15 Permanent snow/ice 
+16 16 Barren desert 
+17 17 Water bodies 
+18 18 Tundra 
+19 19 Warm liquid water cloud 
+20 20 Supercooled liquid water cloud 
+21 21 Mixed phase cloud 
+22 22 Optically thin ice cloud 
+23 23 Optically thick ice cloud 
+24 24 Multi-layered cloud 
+# 25-96 Reserved 
+97 97 Snow/ice on land 
+98 98 Snow/ice on water 
+99 99 Sun-glint 
+100 100 General cloud 
+101 101 Low cloud/fog/Stratus 
+102 102 Low cloud/Stratocumulus 
+103 103 Low cloud/unknown type 
+104 104 Medium cloud/Nimbostratus 
+105 105 Medium cloud/Altostratus 
+106 106 Medium cloud/unknown type 
+107 107 High cloud/Cumulus 
+108 108 High cloud/Cirrus 
+109 109 High cloud/unknown 
+110 110 Unknown cloud type 
+# 111-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.219.table b/definitions/grib2/tables/16/4.219.table
new file mode 100644
index 0000000..86df052
--- /dev/null
+++ b/definitions/grib2/tables/16/4.219.table
@@ -0,0 +1,8 @@
+# Code table 4.219 - Cloud top height quality indicator
+0 0 Nominal cloud top height quality 
+1 1 Fog in segment 
+2 2 Poor quality height estimation 
+3 3 Fog in segment and poor quality height estimation 
+# 4-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.220.table b/definitions/grib2/tables/16/4.220.table
new file mode 100644
index 0000000..93e841f
--- /dev/null
+++ b/definitions/grib2/tables/16/4.220.table
@@ -0,0 +1,6 @@
+# Code table 4.220 - Horizontal dimension processed
+0 0 Latitude 
+1 1 Longitude 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.221.table b/definitions/grib2/tables/16/4.221.table
new file mode 100644
index 0000000..8448533
--- /dev/null
+++ b/definitions/grib2/tables/16/4.221.table
@@ -0,0 +1,6 @@
+# Code table 4.221 - Treatment of missing data
+0 0 Not included 
+1 1 Extrapolated 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.222.table b/definitions/grib2/tables/16/4.222.table
new file mode 100644
index 0000000..57f1130
--- /dev/null
+++ b/definitions/grib2/tables/16/4.222.table
@@ -0,0 +1,6 @@
+# Code table 4.222 - Categorical result
+0 0 No 
+1 1 Yes 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.223.table b/definitions/grib2/tables/16/4.223.table
new file mode 100644
index 0000000..f0deb07
--- /dev/null
+++ b/definitions/grib2/tables/16/4.223.table
@@ -0,0 +1,5 @@
+# Code table 4.223 - Fire detection indicator
+0 0 No fire detected 
+1 1 Possible fire detected 
+2 2 Probable fire detected 
+3 3 Missing 
diff --git a/definitions/grib2/tables/16/4.224.table b/definitions/grib2/tables/16/4.224.table
new file mode 100644
index 0000000..e87cde4
--- /dev/null
+++ b/definitions/grib2/tables/16/4.224.table
@@ -0,0 +1,18 @@
+# Code table 4.224 - Categorical outlook
+0 0 No risk area 
+1 1 Reserved 
+2 2 General thunderstorm risk area 
+3 3 Reserved 
+4 4 Slight risk area 
+5 5 Reserved 
+6 6 Moderate risk area 
+7 7 Reserved 
+8 8 High risk area 
+# 9-10 Reserved 
+11 11 Dry thunderstorm (dry lightning) risk area 
+# 12-13 Reserved 
+14 14 Critical risk area 
+# 15-17 Reserved 
+18 18 Extremely critical risk area 
+# 19-254 Reserved 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.225.table b/definitions/grib2/tables/16/4.225.table
new file mode 100644
index 0000000..537f110
--- /dev/null
+++ b/definitions/grib2/tables/16/4.225.table
@@ -0,0 +1,267 @@
+# Code table 4.225 - Weather (see FM 94 BUFR/FM 95 CREX Code table 0 20 003 - Present weather)
+00 00 Cloud development not observed or not observable
+01 01 Clouds generally dissolving or becoming less developed
+02 02 State of sky on the whole unchanged
+03 03 Clouds generally forming or developing
+04 04 Visibility reduced by smoke, e.g. veldt or forest fires, industrial smoke or volcanic ashes
+05 05 Haze
+06 06 Widespread dust in suspension in the air, not raised by wind at or near the station at the time of observation
+07 07 Dust or sand raised by wind at or near the station at the time of observation, but no well developed dust whirl(s) or sand whirl(s), and no duststorm or sandstorm seen; or, in the case of sea stations and coastal stations, blowing spray at the station
+08 08 Well-developed dust whirl(s) or sand whirl(s) seen at or near the station during the preceding hour or at the same time of observation, but no duststorm or sandstorm
+09 09 Duststorm or sandstorm within sight at the time of observation, or at the station during the preceding hour
+10 10 Mist
+11 11 Patches
+12 12 More or less continuous
+13 13 Lightning visible, no thunder heard
+14 14 Precipitation within sight, not reaching the ground or the surface of the sea
+15 15 Precipitation within sight, reaching the ground or the surface of the sea, but distant, i.e. estimated to be more than 5 km from the station
+16 16 Precipitation within sight, reaching the ground or the surface of the sea, near to, but not at the station
+17 17 Thunderstorm, but no precipitation at the time of observation
+18 18 Squalls
+19 19 Funnel cloud(s)
+20 20 Drizzle (not freezing) or snow grains
+21 21 Rain (not freezing)
+22 22 Snow
+23 23 Rain and snow or ice pellets
+24 24 Freezing drizzle or freezing rain
+25 25 Shower(s) of rain
+26 26 Shower(s) of snow, or of rain and snow
+27 27 Shower(s) of hail, or of rain and hail
+28 28 Fog or ice fog
+29 29 Thunderstorm (with or without precipitation)
+30 30 Slight or moderate duststorm or sandstorm has decreased during the preceding hour
+31 31 Slight or moderate duststorm or sandstorm no appreciable change during the preceding hour
+32 32 Slight or moderate duststorm or sandstorm has begun or has increased during the preceding hour
+33 33 Severe duststorm or sandstorm has decreased during the preceding hour
+34 34 Severe duststorm or sandstorm no appreciable change during the preceding hour
+35 35 Severe duststorm or sandstorm has begun or has increased during the preceding hour
+36 36 Slight or moderate drifting snow generally low (below eye level)
+37 37 Heavy drifting snow generally low (below eye level)
+38 38 Slight or moderate blowing snow generally high (above eye level)
+39 39 Heavy blowing snow generally high (above eye level)
+40 40 Fog or ice fog at a distance at the time of observation, but not at the station during the preceding hour, the fog or ice fog extending to a level above that of the observer
+41 41 Fog or ice fog in patches
+42 42 Fog or ice fog, sky visible has become thinner during the preceding hour
+43 43 Fog or ice fog, sky invisible has become thinner during the preceding hour
+44 44 Fog or ice fog, sky visible no appreciable change during the preceding hour
+45 45 Fog or ice fog, sky invisible no appreciable change during the preceding hour
+46 46 Fog or ice fog, sky visible has begun or has become thicker during the preceding hour
+47 47 Fog or ice fog, sky invisible has begun or has become thicker during the preceding hour
+48 48 Fog, depositing rime, sky visible
+49 49 Fog, depositing rime, sky invisible
+50 50 Drizzle, not freezing, intermittent slight at time of observation
+51 51 Drizzle, not freezing, continuous slight at time of observation
+52 52 Drizzle, not freezing, intermittent moderate at time of observation
+53 53 Drizzle, not freezing, continuous moderate at time of observation
+54 54 Drizzle, not freezing, intermittent heavy (dense) at time of observation
+55 55 Drizzle, not freezing, continuous heavy (dense) at time of observation
+56 56 Drizzle, freezing, slight
+57 57 Drizzle, freezing, moderate or heavy (dense)
+58 58 Drizzle and rain, slight
+59 59 Drizzle and rain, moderate or heavy
+60 60 Rain, not freezing, intermittent slight at time of observation
+61 61 Rain, not freezing, continuous slight at time of observation
+62 62 Rain, not freezing, intermittent moderate at time of observation
+63 63 Rain, not freezing, continuous moderate at time of observation
+64 64 Rain, not freezing, intermittent heavy at time of observation
+65 65 Rain, not freezing, continuous heavy at time of observation
+66 66 Rain, freezing, slight
+67 67 Rain, freezing, moderate or heavy
+68 68 Rain or drizzle and snow, slight
+69 69 Rain or drizzle and snow, moderate or heavy
+70 70 Intermittent fall of snowflakes slight at time of observation
+71 71 Continuous fall of snowflakes slight at time of observation
+72 72 Intermittent fall of snowflakes moderate at time of observation
+73 73 Continuous fall of snowflakes moderate at time of observation
+74 74 Intermittent fall of snowflakes heavy at time of observation
+75 75 Continuous fall of snowflakes heavy at time of observation
+76 76 Diamond dust (with or without fog)
+77 77 Snow grains (with or without fog)
+78 78 Isolated star-like snow crystals (with or without fog)
+79 79 Ice pellets
+80 80 Rain shower(s), slight
+81 81 Rain shower(s), moderate or heavy
+82 82 Rain shower(s), violent
+83 83 Shower(s) of rain and snow mixed, slight
+84 84 Shower(s) of rain and snow mixed, moderate or heavy
+85 85 Snow shower(s), slight
+86 86 Snow shower(s), moderate or heavy
+87 87 Shower(s) of snow pellets or small hail, with or without rain or rain and snow mixed slight
+88 88 Shower(s) of snow pellets or small hail, with or without rain or rain and snow mixed moderate or heavy
+89 89 Shower(s) of hail, with or without rain or rain and snow mixed, not associated with thunder slight
+90 90 Shower(s) of hail, with or without rain or rain and snow mixed, not associated with thunder moderate or heavy
+91 91 Slight rain at time of observation
+92 92 Moderate or heavy rain at time of observation
+93 93 Slight snow, or rain and snow mixed or hail at time of observation
+94 94 Moderate or heavy snow, or rain and snow mixed or hail at time of observation
+95 95 Thunderstorm, slight or moderate, without hail, but with rain and/or snow at time of observation
+96 96 Thunderstorm, slight or moderate, with hail at time of observation
+97 97 Thunderstorm, heavy, without hail, but with rain and/or snow at time of observation
+98 98 Thunderstorm combined with duststorm or sandstorm at time of observation
+99 99 Thunderstorm, heavy, with hail at time of observation
+100 100 No significant weather observed
+101 101 Clouds generally dissolving or becoming less developed during the past hour
+102 102 State of sky on the whole unchanged during the past hour
+103 103 Clouds generally forming or developing during the past hour
+104 104 Haze or smoke, or dust in suspension in the air, visibility equal to, or greater than, 1 km
+105 105 Haze or smoke, or dust in suspension in the air, visibility less than 1 km
+#106-109 Reserved
+110 110 Mist
+111 111 Diamond dust
+112 112 Distant lightning
+#113-117 Reserved
+118 118 Squalls
+#119 Reserved
+120 120 Fog
+121 121 PRECIPITATION
+122 122 Drizzle (not freezing) or snow grains
+123 123 Rain (not freezing)
+124 124 Snow
+125 125 Freezing drizzle or freezing rain
+126 126 Thunderstorm (with or without precipitation)
+127 127 BLOWING OR DRIFTING SNOW OR SAND
+128 128 Blowing or drifting snow or sand, visibility equal to, or greater than, 1 km
+129 129 Blowing or drifting snow or sand, visibility less than 1 km
+130 130 FOG
+131 131 Fog or ice fog in patches
+132 132 Fog or ice fog, has become thinner during the past hour
+133 133 Fog or ice fog, no appreciable change during the past hour
+134 134 Fog or ice fog, has begun or become thicker during the past hour
+135 135 Fog, depositing rime
+#136-139 Reserved
+140 140 PRECIPITATION
+141 141 Precipitation, slight or moderate
+142 142 Precipitation, heavy
+143 143 Liquid precipitation, slight or moderate
+144 144 Liquid precipitation, heavy
+145 145 Solid precipitation, slight or moderate
+146 146 Solid precipitation, heavy
+147 147 Freezing precipitation, slight or moderate
+148 148 Freezing precipitation, heavy
+#149 Reserved
+150 150 DRIZZLE
+151 151 Drizzle, not freezing, slight
+152 152 Drizzle, not freezing, moderate
+153 153 Drizzle, not freezing, heavy
+154 154 Drizzle, freezing, slight
+155 155 Drizzle, freezing, moderate
+156 156 Drizzle, freezing, heavy
+157 157 Drizzle and rain, slight
+158 158 Drizzle and rain, moderate or heavy
+#159 Reserved
+160 160 RAIN
+161 161 Rain, not freezing, slight
+162 162 Rain, not freezing, moderate
+163 163 Rain, not freezing, heavy
+164 164 Rain, freezing, slight
+165 165 Rain, freezing, moderate
+166 166 Rain, freezing, heavy
+167 167 Rain (or drizzle) and snow, slight
+168 168 Rain (or drizzle) and snow, moderate or heavy
+#169 Reserved
+170 170 SNOW
+171 171 Snow, slight
+172 172 Snow, moderate
+173 173 Snow, heavy
+174 174 Ice pellets, slight
+175 175 Ice pellets, moderate
+176 176 Ice pellets, heavy
+177 177 Snow grains
+178 178 Ice crystals
+#179 Reserved
+180 180 SHOWER(S) OR INTERMITTENT PRECIPITATION
+181 181 Rain shower(s) or intermittent rain, slight
+182 182 Rain shower(s) or intermittent rain, moderate
+183 183 Rain shower(s) or intermittent rain, heavy
+184 184 Rain shower(s) or intermittent rain, violent
+185 185 Snow shower(s) or intermittent snow, slight
+186 186 Snow shower(s) or intermittent snow, moderate
+187 187 Snow shower(s) or intermittent snow, heavy
+#188 Reserved
+189 189 Hail
+190 190 THUNDERSTORM
+191 191 Thunderstorm, slight or moderate, with no precipitation
+192 192 Thunderstorm, slight or moderate, with rain showers and/or snow showers
+193 193 Thunderstorm, slight or moderate, with hail
+194 194 Thunderstorm, heavy, with no precipitation
+195 195 Thunderstorm, heavy, with rain showers and/or snow showers
+196 196 Thunderstorm, heavy, with hail
+#197-198 Reserved
+199 199 Tornado
+204 204 Volcanic ash suspended in the air aloft
+206 206 Thick dust haze, visibility less than 1 km
+207 207 Blowing spray at the station
+208 208 Drifting dust (sand)
+209 209 Wall of dust or sand in distance (like haboob)
+210 210 Snow haze
+211 211 Whiteout
+213 213 Lightning, cloud to surface
+#214-216 Not used
+217 217 Dry thunderstorm
+219 219 Tornado cloud (destructive) at or within sight of the station during preceding hour or at the time of observation
+220 220 Deposition of volcanic ash
+221 221 Deposition of dust or sand
+222 222 Deposition of dew
+223 223 Deposition of wet snow
+224 224 Deposition of soft rime
+225 225 Deposition of hard rime
+226 226 Deposition of hoar frost
+227 227 Deposition of glaze
+228 228 Deposition of ice crust (ice slick)
+230 230 Duststorm or sandstorm with temperature below 0 degrees
+239 239 Blowing snow, impossible to determine whether snow is falling or not
+241 241 Fog on sea
+242 242 Fog in valleys
+243 243 Arctic or Antarctic sea smoke
+244 244 Steam fog (sea, lake or river)
+245 245 Steam log (land)
+246 246 Fog over ice or snow cover
+247 247 Dense fog, visibility 60-90 m
+248 248 Dense fog, visibility 30-60 m
+249 249 Dense fog, visibility less than 30 m
+250 250 Drizzle, rate of fall - less than 0.10 mm h-1
+251 251 Drizzle, rate of fall - 0.10-0.19 mm h-1
+252 252 Drizzle, rate of fall - 0.20-0.39 mm h-1
+253 253 Drizzle, rate of fall - 0.40-0.79 mm h-1
+254 254 Drizzle, rate of fall - 0.80-1.59 mm h-1
+255 255 Drizzle, rate of fall - 1.60-3.19 mm h-1
+256 256 Drizzle, rate of fall - 3.20-6.39 mm h-1
+257 257 Drizzle, rate of fall - 6.4 mm h-1 or more
+259 259 Drizzle and snow
+260 260 Rain, rate of fall - less than 1.0 mm h-1
+261 261 Rain, rate of fall - 1.0-1.9 mm h-1
+262 262 Rain, rate of fall - 2.0-3.9 mm h-1
+263 263 Rain, rate of fall - 4.0-7.9 mm h-1
+264 264 Rain, rate of fall - 8.0-15.9 mm h-1
+265 265 Rain, rate of fall - 16.0-31.9 mm h-1
+266 266 Rain, rate of fall - 32.0-63.9 mm h-1
+267 267 Rain, rate of fall - 64.0 mm h-1 or more
+270 270 Snow, rate of fall - less than 1.0 cm h-1
+271 271 Snow, rate of fall - 1.0-1.9 cm h-1
+272 272 Snow, rate of fall - 2.0-3.9 cm h-1
+273 273 Snow, rate of fall - 4.0-7.9 cm h-1
+274 274 Snow, rate of fall - 8.0-15.9 cm h-1
+275 275 Snow, rate of fall - 16.0-31.9 cm h-1
+276 276 Snow, rate of fall - 32.0-63.9 cm h-1
+277 277 Snow, rate of fall - 64.0 cm h-1 or more
+278 278 Snow or ice crystal precipitation from a clear sky
+279 279 Wet snow, freezing on contact
+280 280 Precipitation of rain
+281 281 Precipitation of rain, freezing
+282 282 Precipitation of rain and snow mixed
+283 283 Precipitation of snow
+284 284 Precipitation of snow pellets or small hall
+285 285 Precipitation of snow pellets or small hail, with rain
+286 286 Precipitation of snow pellets or small hail, with rain and snow mixed
+287 287 Precipitation of snow pellets or small hail, with snow
+288 288 Precipitation of hail
+289 289 Precipitation of hail, with rain
+290 290 Precipitation of hall, with rain and snow mixed
+291 291 Precipitation of hail, with snow
+292 292 Shower(s) or thunderstorm over sea
+293 293 Shower(s) or thunderstorm over mountains
+#300-507 Reserved
+508 508 No significant phenomenon to report, present and past weather omitted
+509 509 No observation, data not available, present and past weather omitted
+510 510 Present and past weather missing, but expected
+511 511 Missing value
diff --git a/definitions/grib2/tables/16/4.227.table b/definitions/grib2/tables/16/4.227.table
new file mode 100644
index 0000000..27c7655
--- /dev/null
+++ b/definitions/grib2/tables/16/4.227.table
@@ -0,0 +1,9 @@
+# Code table 4.227 - Icing scenario (weather/cloud classification)
+0 0 None 
+1 1 General 
+2 2 Convective 
+3 3 Stratiform 
+4 4 Freezing 
+# 5-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing value 
diff --git a/definitions/grib2/tables/16/4.230.table b/definitions/grib2/tables/16/4.230.table
new file mode 100644
index 0000000..ab995d1
--- /dev/null
+++ b/definitions/grib2/tables/16/4.230.table
@@ -0,0 +1,423 @@
+# Code table 4.230 - Atmospheric chemical constituent type
+0 0 Ozone O3
+1 1 Water vapour H2O
+2 2 Methane CH4
+3 3 Carbon dioxide CO2
+4 4 Carbon monoxide CO
+5 5 Nitrogen dioxide NO2
+6 6 Nitrous oxide N2O
+7 7 Formaldehyde HCHO
+8 8 Sulphur dioxide SO2
+9 9 Ammonia NH3
+10 10 Ammonium NH4+
+11 11 Nitrogen monoxide NO
+12 12 Atomic oxygen O
+13 13 Nitrate radical NO3
+14 14 Hydroperoxyl radical HO2
+15 15 Dinitrogen pentoxide N2O5
+16 16 Nitrous acid HONO
+17 17 Nitric acid HNO3
+18 18 Peroxynitric acid HO2NO2
+19 19 Hydrogen peroxide H2O2
+20 20 Molecular hydrogen H
+21 21 Atomic nitrogen N
+22 22 Sulphate SO42-
+23 23 Radon Rn
+24 24 Elemental mercury Hg(0)
+25 25 Divalent mercury Hg2+
+26 26 Atomic chlorine Cl
+27 27 Chlorine monoxide ClO
+28 28 Dichlorine peroxide Cl2O2
+29 29 Hypochlorous acid HClO
+30 30 Chlorine nitrate ClONO2
+31 31 Chlorine dioxide ClO2
+32 32 Atomic bromine Br
+33 33 Bromine monoxide BrO
+34 34 Bromine chloride BrCl
+35 35 Hydrogen bromide HBr
+36 36 Hypobromous acid HBrO
+37 37 Bromine nitrate BrONO2
+38 38 Oxygen O2
+#39-9999 Reserved
+10000 10000 Hydroxyl radical OH
+10001 10001 Methyl peroxy radical CH3O2
+10002 10002 Methyl hydroperoxide CH3O2H
+10004 10004 Methanol CH3OH
+10005 10005 Formic acid CH3OOH
+10006 10006 Hydrogen cyanide HCN
+10007 10007 Aceto nitrile CH3CN
+10008 10008 Ethane C2H6
+10009 10009 Ethene (= Ethylene) C2H4
+10010 10010 Ethyne (= Acetylene) C2H2
+10011 10011 Ethanol C2H5OH
+10012 10012 Acetic acid C2H5OOH
+10013 10013 Peroxyacetyl nitrate CH3C(O)OONO2
+10014 10014 Propane C3H8
+10015 10015 Propene C3H6
+10016 10016 Butanes C4H10
+10017 10017 Isoprene C5H10
+10018 10018 Alpha pinene C10H16
+10019 10019 Beta pinene C10H16
+10020 10020 Limonene C10H16
+10021 10021 Benzene C6H6
+10022 10022 Toluene C7H8
+10023 10023 Xylene C8H10
+#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...)
+10500 10500 Dimethyl sulphide CH3SCH3 (DMS)
+#10501-20000 Reserved
+20001 20001 Hydrogen chloride
+20002 20002 CFC-11
+20003 20003 CFC-12
+20004 20004 CFC-113
+20005 20005 CFC-113a
+20006 20006 CFC-114
+20007 20007 CFC-115
+20008 20008 HCFC-22
+20009 20009 HCFC-141b
+20010 20010 HCFC-142b
+20011 20011 Halon-1202
+20012 20012 Halon-1211
+20013 20013 Halon-1301
+20014 20014 Halon-2402
+20015 20015 Methyl chloride (HCC-40)
+20016 20016 Carbon tetrachloride (HCC-10)
+20017 20017 HCC-140a CH3CCl3
+20018 20018 Methyl bromide (HBC-40B1)
+20019 20019 Hexachlorocyclohexane (HCH)
+20020 20020 Alpha hexachlorocyclohexane
+20021 20021 Hexachlorobiphenyl (PCB-153)
+#20022-29999 Reserved
+30000 30000 Radioactive pollutant (tracer, defined by originating centre)
+#30001-30009 Reserved
+30010 30010 Hydrogen H-3
+30011 30011 Hydrogen organic bounded H-3o
+30012 30012 Hydrogen inorganic H-3a
+30013 30013 Beryllium 7 Be-7
+30014 30014 Beryllium 10 Be-10
+30015 30015 Carbon 14 C-14
+30016 30016 Carbon 14 CO2 C-14CO2
+30017 30017 Carbon 14 other gases C-14og
+30018 30018 Nitrogen 13 N-13
+30019 30019 Nitrogen 16 N-16
+30020 30020 Fluorine 18 F-18
+30021 30021 Sodium 22 Na-22
+30022 30022 Phosphate 32 P-32
+30023 30023 Phosphate 33 P-33
+30024 30024 Sulphur 35 S-35
+30025 30025 Chlorine 36 Cl-36
+30026 30026 Potassium 40 K-40
+30027 30027 Argon 41 Ar-41
+30028 30028 Calcium 41 Ca-41
+30029 30029 Calcium 45 Ca-45
+30030 30030 Titanium 44 Ti-44
+30031 30031 Scandium 46 Sc-46
+30032 30032 Vanadium 48 V-48
+30033 30033 Vanadium 49 V-49
+30034 30034 Chrome 51 Cr-51
+30035 30035 Manganese 52 Mn-52
+30036 30036 Manganese 54 Mn-54
+30037 30037 Iron 55 Fe-55
+30038 30038 Iron 59 Fe-59
+30039 30039 Cobalt 56 Co-56
+30040 30040 Cobalt 57 Co-57
+30041 30041 Cobalt 58 Co-58
+30042 30042 Cobalt 60 Co-60
+30043 30043 Nickel 59 Ni-59
+30044 30044 Nickel 63 Ni-63
+30045 30045 Zinc 65 Zn-65
+30046 30046 Gallium 67 Ga-67
+30047 30047 Gallium 68 Ga-68
+30048 30048 Germanium 68 Ge-68
+30049 30049 Germanium 69 Ge-69
+30050 30050 Arsenic 73 As-73
+30051 30051 Selenium 75 Se-75
+30052 30052 Selenium 79 Se-79
+30053 30053 Rubidium 81 Rb-81
+30054 30054 Rubidium 83 Rb-83
+30055 30055 Rubidium 84 Rb-84
+30056 30056 Rubidium 86 Rb-86
+30057 30057 Rubidium 87 Rb-87
+30058 30058 Rubidium 88 Rb-88
+30059 30059 Krypton 85 Kr-85
+30060 30060 Krypton 85 metastable Kr-85m
+30061 30061 Krypton 87 Kr-87
+30062 30062 Krypton 88 Kr-88
+30063 30063 Krypton 89 Kr-89
+30064 30064 Strontium 85 Sr-85
+30065 30065 Strontium 89 Sr-89
+30066 30066 Strontium 89/90 Sr-8990
+30067 30067 Strontium 90 Sr-90
+30068 30068 Strontium 91 Sr-91
+30069 30069 Strontium 92 Sr-92
+30070 30070 Yttrium 87 Y-87
+30071 30071 Yttrium 88 Y-88
+30072 30072 Yttrium 90 Y-90
+30073 30073 Yttrium 91 Y-91
+30074 30074 Yttrium 91 metastable Y-91m
+30075 30075 Yttrium 92 Y-92
+30076 30076 Yttrium 93 Y-93
+30077 30077 Zirconium 89 Zr-89
+30078 30078 Zirconium 93 Zr-93
+30079 30079 Zirconium 95 Zr-95
+30080 30080 Zirconium 97 Zr-97
+30081 30081 Niobium 93 metastable Nb-93m
+30082 30082 Niobium 94 Nb-94
+30083 30083 Niobium 95 Nb-95
+30084 30084 Niobium 95 metastable Nb-95m
+30085 30085 Niobium 97 Nb-97
+30086 30086 Niobium 97 metastable Nb-97m
+30087 30087 Molybdenum 93 Mo-93
+30088 30088 Molybdenum 99 Mo-99
+30089 30089 Technetium 95 metastable Tc-95m
+30090 30090 Technetium 96 Tc-96
+30091 30091 Technetium 99 Tc-99
+30092 30092 Technetium 99 metastable Tc-99m
+30093 30093 Rhodium 99 Rh-99
+30094 30094 Rhodium 101 Rh-101
+30095 30095 Rhodium 102 metastable Rh-102m
+30096 30096 Rhodium 103 metastable Rh-103m
+30097 30097 Rhodium 105 Rh-105
+30098 30098 Rhodium 106 Rh-106
+30099 30099 Palladium 100 Pd-100
+30100 30100 Palladium 103 Pd-103
+30101 30101 Palladium 107 Pd-107
+30102 30102 Ruthenium 103 Ru-103
+30103 30103 Ruthenium 105 Ru-105
+30104 30104 Ruthenium 106 Ru-106
+30105 30105 Silver 108 metastable Ag-108m
+30106 30106 Silver 110 metastable Ag-110m
+30107 30107 Cadmium 109 Cd-109
+30108 30108 Cadmium 113 metastable Cd-113m
+30109 30109 Cadmium 115 metastable Cd-115m
+30110 30110 Indium 114 metastable In-114m
+30111 30111 Tin 113 Sn-113
+30112 30112 Tin 119 metastable Sn-119m
+30113 30113 Tin 121 metastable Sn-121m
+30114 30114 Tin 122 Sn-122
+30115 30115 Tin 123 Sn-123
+30116 30116 Tin 126 Sn-126
+30117 30117 Antimony 124 Sb-124
+30118 30118 Antimony 125 Sb-125
+30119 30119 Antimony 126 Sb-126
+30120 30120 Antimony 127 Sb-127
+30121 30121 Antimony 129 Sb-129
+30122 30122 Tellurium 123 metastable Te-123m
+30123 30123 Tellurium 125 metastable Te-125m
+30124 30124 Tellurium 127 Te-127
+30125 30125 Tellurium 127 metastable Te-127m
+30126 30126 Tellurium 129 Te-129
+30127 30127 Tellurium 129 metastable Te-129m
+30128 30128 Tellurium 131 metastable Te-131m
+30129 30129 Tellurium 132 Te-132
+30130 30130 Iodine 123 I-123
+30131 30131 Iodine 124 I-124
+30132 30132 Iodine 125 I-125
+30133 30133 Iodine 126 I-126
+30134 30134 Iodine 129 I-129
+30135 30135 Iodine 129 elementary gaseous I-129g
+30136 30136 Iodine 129 organic bounded I-129o
+30137 30137 Iodine 131 I-131
+30138 30138 Iodine 131 elementary gaseous I-131g
+30139 30139 Iodine 131 organic bounded I-131o
+30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go
+30141 30141 Iodine 131 aerosol I-131a
+30142 30142 Iodine 132 I-132
+30143 30143 Iodine 132 elementary gaseous I-132g
+30144 30144 Iodine 132 organic bounded I-132o
+30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go
+30146 30146 Iodine 132 aerosol I-132a
+30147 30147 Iodine 133 I-133
+30148 30148 Iodine 133 elementary gaseous I-133g
+30149 30149 Iodine 133 organic bounded I-133o
+30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go
+30151 30151 Iodine 133 aerosol I-133a
+30152 30152 Iodine 134 I-134
+30153 30153 Iodine 134 elementary gaseous I-134g
+30154 30154 Iodine 134 organic bounded I-134o
+30155 30155 Iodine 135 I-135
+30156 30156 Iodine 135 elementary gaseous I-135g
+30157 30157 Iodine 135 organic bounded I-135o
+30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go
+30159 30159 Iodine 135 aerosol I-135a
+30160 30160 Xenon 131 metastable Xe-131m
+30161 30161 Xenon 133 Xe-133
+30162 30162 Xenon 133 metastable Xe-133m
+30163 30163 Xenon 135 Xe-135
+30164 30164 Xenon 135 metastable Xe-135m
+30165 30165 Xenon 137 Xe-137
+30166 30166 Xenon 138 Xe-138
+30167 30167 Xenon sum of all Xenon isotopes Xe-sum
+30168 30168 Caesium 131 Cs-131
+30169 30169 Caesium 134 Cs-134
+30170 30170 Caesium 135 Cs-135
+30171 30171 Caesium 136 Cs-136
+30172 30172 Caesium 137 Cs-137
+30173 30173 Barium 133 Ba-133
+30174 30174 Barium 137 metastable Ba-137m
+30175 30175 Barium 140 Ba-140
+30176 30176 Cerium 139 Ce-139
+30177 30177 Cerium 141 Ce-141
+30178 30178 Cerium 143 Ce-143
+30179 30179 Cerium 144 Ce-144
+30180 30180 Lanthanum 140 La-140
+30181 30181 Lanthanum 141 La-141
+30182 30182 Praseodymium 143 Pr-143
+30183 30183 Praseodymium 144 Pr-144
+30184 30184 Praseodymium 144 metastable Pr-144m
+30185 30185 Samarium 145 Sm-145
+30186 30186 Samarium 147 Sm-147
+30187 30187 Samarium 151 Sm-151
+30188 30188 Neodymium 147 Nd-147
+30189 30189 Promethium 146 Pm-146
+30190 30190 Promethium 147 Pm-147
+30191 30191 Promethium 151 Pm-151
+30192 30192 Europium 152 Eu-152
+30193 30193 Europium 154 Eu-154
+30194 30194 Europium 155 Eu-155
+30195 30195 Gadolinium 153 Gd-153
+30196 30196 Terbium 160 Tb-160
+30197 30197 Holmium 166 metastable Ho-166m
+30198 30198 Thulium 170 Tm-170
+30199 30199 Ytterbium 169 Yb-169
+30200 30200 Hafnium 175 Hf-175
+30201 30201 Hafnium 181 Hf-181
+30202 30202 Tantalum 179 Ta-179
+30203 30203 Tantalum 182 Ta-182
+30204 30204 Rhenium 184 Re-184
+30205 30205 Iridium 192 Ir-192
+30206 30206 Mercury 203 Hg-203
+30207 30207 Thallium 204 Tl-204
+30208 30208 Thallium 207 Tl-207
+30209 30209 Thallium 208 Tl-208
+30210 30210 Thallium 209 Tl-209
+30211 30211 Bismuth 205 Bi-205
+30212 30212 Bismuth 207 Bi-207
+30213 30213 Bismuth 210 Bi-210
+30214 30214 Bismuth 211 Bi-211
+30215 30215 Bismuth 212 Bi-212
+30216 30216 Bismuth 213 Bi-213
+30217 30217 Bismuth 214 Bi-214
+30218 30218 Polonium 208 Po-208
+30219 30219 Polonium 210 Po-210
+30220 30220 Polonium 212 Po-212
+30221 30221 Polonium 213 Po-213
+30222 30222 Polonium 214 Po-214
+30223 30223 Polonium 215 Po-215
+30224 30224 Polonium 216 Po-216
+30225 30225 Polonium 218 Po-218
+30226 30226 Lead 209 Pb-209
+30227 30227 Lead 210 Pb-210
+30228 30228 Lead 211 Pb-211
+30229 30229 Lead 212 Pb-212
+30230 30230 Lead 214 Pb-214
+30231 30231 Astatine 217 At-217
+30232 30232 Radon 219 Rn-219
+30233 30233 Radon 220 Rn-220
+30234 30234 Radon 222 Rn-222
+30235 30235 Francium 221 Fr-221
+30236 30236 Francium 223 Fr-223
+30237 30237 Radium 223 Ra-223
+30238 30238 Radium 224 Ra-224
+30239 30239 Radium 225 Ra-225
+30240 30240 Radium 226 Ra-226
+30241 30241 Radium 228 Ra-228
+30242 30242 Actinium 225 Ac-225
+30243 30243 Actinium 227 Ac-227
+30244 30244 Actinium 228 Ac-228
+30245 30245 Thorium 227 Th-227
+30246 30246 Thorium 228 Th-228
+30247 30247 Thorium 229 Th-229
+30248 30248 Thorium 230 Th-230
+30249 30249 Thorium 231 Th-231
+30250 30250 Thorium 232 Th-232
+30251 30251 Thorium 234 Th-234
+30252 30252 Protactinium 231 Pa-231
+30253 30253 Protactinium 233 Pa-233
+30254 30254 Protactinium 234 metastable Pa-234m
+30255 30255 Uranium 232 U-232
+30256 30256 Uranium 233 U-233
+30257 30257 Uranium 234 U-234
+30258 30258 Uranium 235 U-235
+30259 30259 Uranium 236 U-236
+30260 30260 Uranium 237 U-237
+30261 30261 Uranium 238 U-238
+30262 30262 Plutonium 236 Pu-236
+30263 30263 Plutonium 238 Pu-238
+30264 30264 Plutonium 239 Pu-239
+30265 30265 Plutonium 240 Pu-240
+30266 30266 Plutonium 241 Pu-241
+30267 30267 Plutonium 242 Pu-242
+30268 30268 Plutonium 244 Pu-244
+30269 30269 Neptunium 237 Np-237
+30270 30270 Neptunium 238 Np-238
+30271 30271 Neptunium 239 Np-239
+30272 30272 Americium 241 Am-241
+30273 30273 Americium 242 Am-242
+30274 30274 Americium 242 metastable Am-242m
+30275 30275 Americium 243 Am-243
+30276 30276 Curium 242 Cm-242
+30277 30277 Curium 243 Cm-243
+30278 30278 Curium 244 Cm-244
+30279 30279 Curium 245 Cm-245
+30280 30280 Curium 246 Cm-246
+30281 30281 Curium 247 Cm-247
+30282 30282 Curium 248 Cm-248
+30283 30283 Curium 243/244 Cm-243244
+30284 30284 Plutonium 238/Americium 241 Pu-238Am-241
+30285 30285 Plutonium 239/240 Pu-239240
+30286 30286 Berkelium 249 Bk-249
+30287 30287 Californium 249 Cf-249
+30288 30288 Californium 250 Cf-250
+30289 30289 Californium 252 Cf-252
+30290 30290 Sum aerosol particulates SumAer
+30291 30291 Sum Iodine SumIod
+30292 30292 Sum noble gas SumNG
+30293 30293 Activation gas ActGas
+30294 30294 Cs-137 Equivalent EquCs137
+#30295-59999 Reserved
+60000 60000 HOx radical (OH+HO2)
+60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2)
+60002 60002 Passive Ozone
+60003 60003 NOx expressed as nitrogen NOx
+60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy
+60005 60005 Total inorganic chlorine Clx
+60006 60006 Total inorganic bromine Brx
+60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx
+60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx
+60009 60009 Lumped alkanes
+60010 60010 Lumped alkenes
+60011 60011 Lumped aromatic compounds
+60012 60012 Lumped terpenes
+60013 60013 Non-methane volatile organic compounds expressed as carbon
+60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon
+60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon
+60016 60016 Lumped oxygenated hydrocarbons
+60017 60017 NOx expressed as nitrogen dioxide (NO2)
+#60018-61999 Reserved
+62000 62000 Total aerosol
+62001 62001 Dust dry
+62002 62002 Water in ambient
+62003 62003 Ammonium dry
+62004 62004 Nitrate dry
+62005 62005 Nitric acid trihydrate
+62006 62006 Sulphate dry
+62007 62007 Mercury dry
+62008 62008 Sea salt dry
+62009 62009 Black carbon dry
+62010 62010 Particulate organic matter dry
+62011 62011 Primary particulate organic matter dry
+62012 62012 Secondary particulate organic matter dry
+62013 62013 Black carbon hydrophilic dry
+62014 62014 Black carbon hydrophobic dry
+62015 62015 Particulate organic matter hydrophilic dry
+62016 62016 Particulate organic matter hydrophobic dry
+62017 62017 Nitrate hydrophilic dry
+62018 62018 Nitrate hydrophobic dry
+#62019 Reserved
+62020 62020 Smoke - high absorption
+62021 62021 Smoke - low absorption
+62022 62022 Aerosol - high absorption
+62023 62023 Aerosol - low absorption
+62025 62025 Volcanic ash
+#62024-65534 Reserved
+65535 65535 Missing
diff --git a/definitions/grib2/tables/16/4.233.table b/definitions/grib2/tables/16/4.233.table
new file mode 100644
index 0000000..4feba8c
--- /dev/null
+++ b/definitions/grib2/tables/16/4.233.table
@@ -0,0 +1,423 @@
+# Code table 4.233 - Aerosol type
+0 0 Ozone O3
+1 1 Water vapour H2O
+2 2 Methane CH4
+3 3 Carbon dioxide CO2
+4 4 Carbon monoxide CO
+5 5 Nitrogen dioxide NO2
+6 6 Nitrous oxide N2O
+7 7 Formaldehyde HCHO
+8 8 Sulphur dioxide SO2
+9 9 Ammonia NH3
+10 10 Ammonium NH4+
+11 11 Nitrogen monoxide NO
+12 12 Atomic oxygen O
+13 13 Nitrate radical NO3
+14 14 Hydroperoxyl radical HO2
+15 15 Dinitrogen pentoxide N2O5
+16 16 Nitrous acid HONO
+17 17 Nitric acid HNO3
+18 18 Peroxynitric acid HO2NO2
+19 19 Hydrogen peroxide H2O2
+20 20 Molecular hydrogen H
+21 21 Atomic nitrogen N
+22 22 Sulphate SO42-
+23 23 Radon Rn
+24 24 Elemental mercury Hg(0)
+25 25 Divalent mercury Hg2+
+26 26 Atomic chlorine Cl
+27 27 Chlorine monoxide ClO
+28 28 Dichlorine peroxide Cl2O2
+29 29 Hypochlorous acid HClO
+30 30 Chlorine nitrate ClONO2
+31 31 Chlorine dioxide ClO2
+32 32 Atomic bromine Br
+33 33 Bromine monoxide BrO
+34 34 Bromine chloride BrCl
+35 35 Hydrogen bromide HBr
+36 36 Hypobromous acid HBrO
+37 37 Bromine nitrate BrONO2
+38 38 Oxygen O2
+#39-9999 Reserved
+10000 10000 Hydroxyl radical OH
+10001 10001 Methyl peroxy radical CH3O2
+10002 10002 Methyl hydroperoxide CH3O2H
+10004 10004 Methanol CH3OH
+10005 10005 Formic acid CH3OOH
+10006 10006 Hydrogen cyanide HCN
+10007 10007 Aceto nitrile CH3CN
+10008 10008 Ethane C2H6
+10009 10009 Ethene (= Ethylene) C2H4
+10010 10010 Ethyne (= Acetylene) C2H2
+10011 10011 Ethanol C2H5OH
+10012 10012 Acetic acid C2H5OOH
+10013 10013 Peroxyacetyl nitrate CH3C(O)OONO2
+10014 10014 Propane C3H8
+10015 10015 Propene C3H6
+10016 10016 Butanes C4H10
+10017 10017 Isoprene C5H10
+10018 10018 Alpha pinene C10H16
+10019 10019 Beta pinene C10H16
+10020 10020 Limonene C10H16
+10021 10021 Benzene C6H6
+10022 10022 Toluene C7H8
+10023 10023 Xylene C8H10
+#10024-10499 Reserved for other simple organic molecules (e.g. higher aldehydes, alcohols, peroxides...)
+10500 10500 Dimethyl sulphide CH3SCH3 (DMS)
+#10501-20000 Reserved
+20001 20001 Hydrogen chloride
+20002 20002 CFC-11
+20003 20003 CFC-12
+20004 20004 CFC-113
+20005 20005 CFC-113a
+20006 20006 CFC-114
+20007 20007 CFC-115
+20008 20008 HCFC-22
+20009 20009 HCFC-141b
+20010 20010 HCFC-142b
+20011 20011 Halon-1202
+20012 20012 Halon-1211
+20013 20013 Halon-1301
+20014 20014 Halon-2402
+20015 20015 Methyl chloride (HCC-40)
+20016 20016 Carbon tetrachloride (HCC-10)
+20017 20017 HCC-140a CH3CCl3
+20018 20018 Methyl bromide (HBC-40B1)
+20019 20019 Hexachlorocyclohexane (HCH)
+20020 20020 Alpha hexachlorocyclohexane
+20021 20021 Hexachlorobiphenyl (PCB-153)
+#20022-29999 Reserved
+30000 30000 Radioactive pollutant (tracer, defined by originating centre)
+#30001-30009 Reserved
+30010 30010 Hydrogen H-3
+30011 30011 Hydrogen organic bounded H-3o
+30012 30012 Hydrogen inorganic H-3a
+30013 30013 Beryllium 7 Be-7
+30014 30014 Beryllium 10 Be-10
+30015 30015 Carbon 14 C-14
+30016 30016 Carbon 14 CO2 C-14CO2
+30017 30017 Carbon 14 other gases C-14og
+30018 30018 Nitrogen 13 N-13
+30019 30019 Nitrogen 16 N-16
+30020 30020 Fluorine 18 F-18
+30021 30021 Sodium 22 Na-22
+30022 30022 Phosphate 32 P-32
+30023 30023 Phosphate 33 P-33
+30024 30024 Sulphur 35 S-35
+30025 30025 Chlorine 36 Cl-36
+30026 30026 Potassium 40 K-40
+30027 30027 Argon 41 Ar-41
+30028 30028 Calcium 41 Ca-41
+30029 30029 Calcium 45 Ca-45
+30030 30030 Titanium 44 Ti-44
+30031 30031 Scandium 46 Sc-46
+30032 30032 Vanadium 48 V-48
+30033 30033 Vanadium 49 V-49
+30034 30034 Chrome 51 Cr-51
+30035 30035 Manganese 52 Mn-52
+30036 30036 Manganese 54 Mn-54
+30037 30037 Iron 55 Fe-55
+30038 30038 Iron 59 Fe-59
+30039 30039 Cobalt 56 Co-56
+30040 30040 Cobalt 57 Co-57
+30041 30041 Cobalt 58 Co-58
+30042 30042 Cobalt 60 Co-60
+30043 30043 Nickel 59 Ni-59
+30044 30044 Nickel 63 Ni-63
+30045 30045 Zinc 65 Zn-65
+30046 30046 Gallium 67 Ga-67
+30047 30047 Gallium 68 Ga-68
+30048 30048 Germanium 68 Ge-68
+30049 30049 Germanium 69 Ge-69
+30050 30050 Arsenic 73 As-73
+30051 30051 Selenium 75 Se-75
+30052 30052 Selenium 79 Se-79
+30053 30053 Rubidium 81 Rb-81
+30054 30054 Rubidium 83 Rb-83
+30055 30055 Rubidium 84 Rb-84
+30056 30056 Rubidium 86 Rb-86
+30057 30057 Rubidium 87 Rb-87
+30058 30058 Rubidium 88 Rb-88
+30059 30059 Krypton 85 Kr-85
+30060 30060 Krypton 85 metastable Kr-85m
+30061 30061 Krypton 87 Kr-87
+30062 30062 Krypton 88 Kr-88
+30063 30063 Krypton 89 Kr-89
+30064 30064 Strontium 85 Sr-85
+30065 30065 Strontium 89 Sr-89
+30066 30066 Strontium 89/90 Sr-8990
+30067 30067 Strontium 90 Sr-90
+30068 30068 Strontium 91 Sr-91
+30069 30069 Strontium 92 Sr-92
+30070 30070 Yttrium 87 Y-87
+30071 30071 Yttrium 88 Y-88
+30072 30072 Yttrium 90 Y-90
+30073 30073 Yttrium 91 Y-91
+30074 30074 Yttrium 91 metastable Y-91m
+30075 30075 Yttrium 92 Y-92
+30076 30076 Yttrium 93 Y-93
+30077 30077 Zirconium 89 Zr-89
+30078 30078 Zirconium 93 Zr-93
+30079 30079 Zirconium 95 Zr-95
+30080 30080 Zirconium 97 Zr-97
+30081 30081 Niobium 93 metastable Nb-93m
+30082 30082 Niobium 94 Nb-94
+30083 30083 Niobium 95 Nb-95
+30084 30084 Niobium 95 metastable Nb-95m
+30085 30085 Niobium 97 Nb-97
+30086 30086 Niobium 97 metastable Nb-97m
+30087 30087 Molybdenum 93 Mo-93
+30088 30088 Molybdenum 99 Mo-99
+30089 30089 Technetium 95 metastable Tc-95m
+30090 30090 Technetium 96 Tc-96
+30091 30091 Technetium 99 Tc-99
+30092 30092 Technetium 99 metastable Tc-99m
+30093 30093 Rhodium 99 Rh-99
+30094 30094 Rhodium 101 Rh-101
+30095 30095 Rhodium 102 metastable Rh-102m
+30096 30096 Rhodium 103 metastable Rh-103m
+30097 30097 Rhodium 105 Rh-105
+30098 30098 Rhodium 106 Rh-106
+30099 30099 Palladium 100 Pd-100
+30100 30100 Palladium 103 Pd-103
+30101 30101 Palladium 107 Pd-107
+30102 30102 Ruthenium 103 Ru-103
+30103 30103 Ruthenium 105 Ru-105
+30104 30104 Ruthenium 106 Ru-106
+30105 30105 Silver 108 metastable Ag-108m
+30106 30106 Silver 110 metastable Ag-110m
+30107 30107 Cadmium 109 Cd-109
+30108 30108 Cadmium 113 metastable Cd-113m
+30109 30109 Cadmium 115 metastable Cd-115m
+30110 30110 Indium 114 metastable In-114m
+30111 30111 Tin 113 Sn-113
+30112 30112 Tin 119 metastable Sn-119m
+30113 30113 Tin 121 metastable Sn-121m
+30114 30114 Tin 122 Sn-122
+30115 30115 Tin 123 Sn-123
+30116 30116 Tin 126 Sn-126
+30117 30117 Antimony 124 Sb-124
+30118 30118 Antimony 125 Sb-125
+30119 30119 Antimony 126 Sb-126
+30120 30120 Antimony 127 Sb-127
+30121 30121 Antimony 129 Sb-129
+30122 30122 Tellurium 123 metastable Te-123m
+30123 30123 Tellurium 125 metastable Te-125m
+30124 30124 Tellurium 127 Te-127
+30125 30125 Tellurium 127 metastable Te-127m
+30126 30126 Tellurium 129 Te-129
+30127 30127 Tellurium 129 metastable Te-129m
+30128 30128 Tellurium 131 metastable Te-131m
+30129 30129 Tellurium 132 Te-132
+30130 30130 Iodine 123 I-123
+30131 30131 Iodine 124 I-124
+30132 30132 Iodine 125 I-125
+30133 30133 Iodine 126 I-126
+30134 30134 Iodine 129 I-129
+30135 30135 Iodine 129 elementary gaseous I-129g
+30136 30136 Iodine 129 organic bounded I-129o
+30137 30137 Iodine 131 I-131
+30138 30138 Iodine 131 elementary gaseous I-131g
+30139 30139 Iodine 131 organic bounded I-131o
+30140 30140 Iodine 131 gaseous elementary and organic bounded I-131go
+30141 30141 Iodine 131 aerosol I-131a
+30142 30142 Iodine 132 I-132
+30143 30143 Iodine 132 elementary gaseous I-132g
+30144 30144 Iodine 132 organic bounded I-132o
+30145 30145 Iodine 132 gaseous elementary and organic bounded I-132go
+30146 30146 Iodine 132 aerosol I-132a
+30147 30147 Iodine 133 I-133
+30148 30148 Iodine 133 elementary gaseous I-133g
+30149 30149 Iodine 133 organic bounded I-133o
+30150 30150 Iodine 133 gaseous elementary and organic bounded I-133go
+30151 30151 Iodine 133 aerosol I-133a
+30152 30152 Iodine 134 I-134
+30153 30153 Iodine 134 elementary gaseous I-134g
+30154 30154 Iodine 134 organic bounded I-134o
+30155 30155 Iodine 135 I-135
+30156 30156 Iodine 135 elementary gaseous I-135g
+30157 30157 Iodine 135 organic bounded I-135o
+30158 30158 Iodine 135 gaseous elementary and organic bounded I-135go
+30159 30159 Iodine 135 aerosol I-135a
+30160 30160 Xenon 131 metastable Xe-131m
+30161 30161 Xenon 133 Xe-133
+30162 30162 Xenon 133 metastable Xe-133m
+30163 30163 Xenon 135 Xe-135
+30164 30164 Xenon 135 metastable Xe-135m
+30165 30165 Xenon 137 Xe-137
+30166 30166 Xenon 138 Xe-138
+30167 30167 Xenon sum of all Xenon isotopes Xe-sum
+30168 30168 Caesium 131 Cs-131
+30169 30169 Caesium 134 Cs-134
+30170 30170 Caesium 135 Cs-135
+30171 30171 Caesium 136 Cs-136
+30172 30172 Caesium 137 Cs-137
+30173 30173 Barium 133 Ba-133
+30174 30174 Barium 137 metastable Ba-137m
+30175 30175 Barium 140 Ba-140
+30176 30176 Cerium 139 Ce-139
+30177 30177 Cerium 141 Ce-141
+30178 30178 Cerium 143 Ce-143
+30179 30179 Cerium 144 Ce-144
+30180 30180 Lanthanum 140 La-140
+30181 30181 Lanthanum 141 La-141
+30182 30182 Praseodymium 143 Pr-143
+30183 30183 Praseodymium 144 Pr-144
+30184 30184 Praseodymium 144 metastable Pr-144m
+30185 30185 Samarium 145 Sm-145
+30186 30186 Samarium 147 Sm-147
+30187 30187 Samarium 151 Sm-151
+30188 30188 Neodymium 147 Nd-147
+30189 30189 Promethium 146 Pm-146
+30190 30190 Promethium 147 Pm-147
+30191 30191 Promethium 151 Pm-151
+30192 30192 Europium 152 Eu-152
+30193 30193 Europium 154 Eu-154
+30194 30194 Europium 155 Eu-155
+30195 30195 Gadolinium 153 Gd-153
+30196 30196 Terbium 160 Tb-160
+30197 30197 Holmium 166 metastable Ho-166m
+30198 30198 Thulium 170 Tm-170
+30199 30199 Ytterbium 169 Yb-169
+30200 30200 Hafnium 175 Hf-175
+30201 30201 Hafnium 181 Hf-181
+30202 30202 Tantalum 179 Ta-179
+30203 30203 Tantalum 182 Ta-182
+30204 30204 Rhenium 184 Re-184
+30205 30205 Iridium 192 Ir-192
+30206 30206 Mercury 203 Hg-203
+30207 30207 Thallium 204 Tl-204
+30208 30208 Thallium 207 Tl-207
+30209 30209 Thallium 208 Tl-208
+30210 30210 Thallium 209 Tl-209
+30211 30211 Bismuth 205 Bi-205
+30212 30212 Bismuth 207 Bi-207
+30213 30213 Bismuth 210 Bi-210
+30214 30214 Bismuth 211 Bi-211
+30215 30215 Bismuth 212 Bi-212
+30216 30216 Bismuth 213 Bi-213
+30217 30217 Bismuth 214 Bi-214
+30218 30218 Polonium 208 Po-208
+30219 30219 Polonium 210 Po-210
+30220 30220 Polonium 212 Po-212
+30221 30221 Polonium 213 Po-213
+30222 30222 Polonium 214 Po-214
+30223 30223 Polonium 215 Po-215
+30224 30224 Polonium 216 Po-216
+30225 30225 Polonium 218 Po-218
+30226 30226 Lead 209 Pb-209
+30227 30227 Lead 210 Pb-210
+30228 30228 Lead 211 Pb-211
+30229 30229 Lead 212 Pb-212
+30230 30230 Lead 214 Pb-214
+30231 30231 Astatine 217 At-217
+30232 30232 Radon 219 Rn-219
+30233 30233 Radon 220 Rn-220
+30234 30234 Radon 222 Rn-222
+30235 30235 Francium 221 Fr-221
+30236 30236 Francium 223 Fr-223
+30237 30237 Radium 223 Ra-223
+30238 30238 Radium 224 Ra-224
+30239 30239 Radium 225 Ra-225
+30240 30240 Radium 226 Ra-226
+30241 30241 Radium 228 Ra-228
+30242 30242 Actinium 225 Ac-225
+30243 30243 Actinium 227 Ac-227
+30244 30244 Actinium 228 Ac-228
+30245 30245 Thorium 227 Th-227
+30246 30246 Thorium 228 Th-228
+30247 30247 Thorium 229 Th-229
+30248 30248 Thorium 230 Th-230
+30249 30249 Thorium 231 Th-231
+30250 30250 Thorium 232 Th-232
+30251 30251 Thorium 234 Th-234
+30252 30252 Protactinium 231 Pa-231
+30253 30253 Protactinium 233 Pa-233
+30254 30254 Protactinium 234 metastable Pa-234m
+30255 30255 Uranium 232 U-232
+30256 30256 Uranium 233 U-233
+30257 30257 Uranium 234 U-234
+30258 30258 Uranium 235 U-235
+30259 30259 Uranium 236 U-236
+30260 30260 Uranium 237 U-237
+30261 30261 Uranium 238 U-238
+30262 30262 Plutonium 236 Pu-236
+30263 30263 Plutonium 238 Pu-238
+30264 30264 Plutonium 239 Pu-239
+30265 30265 Plutonium 240 Pu-240
+30266 30266 Plutonium 241 Pu-241
+30267 30267 Plutonium 242 Pu-242
+30268 30268 Plutonium 244 Pu-244
+30269 30269 Neptunium 237 Np-237
+30270 30270 Neptunium 238 Np-238
+30271 30271 Neptunium 239 Np-239
+30272 30272 Americium 241 Am-241
+30273 30273 Americium 242 Am-242
+30274 30274 Americium 242 metastable Am-242m
+30275 30275 Americium 243 Am-243
+30276 30276 Curium 242 Cm-242
+30277 30277 Curium 243 Cm-243
+30278 30278 Curium 244 Cm-244
+30279 30279 Curium 245 Cm-245
+30280 30280 Curium 246 Cm-246
+30281 30281 Curium 247 Cm-247
+30282 30282 Curium 248 Cm-248
+30283 30283 Curium 243/244 Cm-243244
+30284 30284 Plutonium 238/Americium 241 Pu-238Am-241
+30285 30285 Plutonium 239/240 Pu-239240
+30286 30286 Berkelium 249 Bk-249
+30287 30287 Californium 249 Cf-249
+30288 30288 Californium 250 Cf-250
+30289 30289 Californium 252 Cf-252
+30290 30290 Sum aerosol particulates SumAer
+30291 30291 Sum Iodine SumIod
+30292 30292 Sum noble gas SumNG
+30293 30293 Activation gas ActGas
+30294 30294 Cs-137 Equivalent EquCs137
+#30295-59999 Reserved
+60000 60000 HOx radical (OH+HO2)
+60001 60001 Total inorganic and organic peroxy radicals (HO2 + RO2)
+60002 60002 Passive Ozone
+60003 60003 NOx expressed as nitrogen NOx
+60004 60004 All nitrogen oxides (NOy) expressed as nitrogen NOy
+60005 60005 Total inorganic chlorine Clx
+60006 60006 Total inorganic bromine Brx
+60007 60007 Total inorganic chlorine except HCl, ClONO2: ClOx
+60008 60008 Total inorganic bromine except HBr, BrONO2: BrOx
+60009 60009 Lumped alkanes
+60010 60010 Lumped alkenes
+60011 60011 Lumped aromatic compounds
+60012 60012 Lumped terpenes
+60013 60013 Non-methane volatile organic compounds expressed as carbon
+60014 60014 Anthropogenic non-methane volatile organic compounds expressed as carbon
+60015 60015 Biogenic non-methane volatile organic compounds expressed as carbon
+60016 60016 Lumped oxygenated hydrocarbons
+60017 60017 NOx expressed as nitrogen dioxide (NO2)
+#60018-61999 Reserved
+62000 62000 Total aerosol
+62001 62001 Dust dry
+62002 62002 Water in ambient
+62003 62003 Ammonium dry
+62004 62004 Nitrate dry
+62005 62005 Nitric acid trihydrate
+62006 62006 Sulphate dry
+62007 62007 Mercury dry
+62008 62008 Sea salt dry
+62009 62009 Black carbon dry
+62010 62010 Particulate organic matter dry
+62011 62011 Primary particulate organic matter dry
+62012 62012 Secondary particulate organic matter dry
+62013 62013 Black carbon hydrophilic dry
+62014 62014 Black carbon hydrophobic dry
+62015 62015 Particulate organic matter hydrophilic dry
+62016 62016 Particulate organic matter hydrophobic dry
+62017 62017 Nitrate hydrophilic dry
+62018 62018 Nitrate hydrophobic dry
+#62019 Reserved
+62020 62020 Smoke - high absorption
+62021 62021 Smoke - low absorption
+62022 62022 Aerosol - high absorption
+62023 62023 Aerosol - low absorption
+62025 62025 Volcanic ash
+#62024-65534 Reserved
+65535 65535 Missing
diff --git a/definitions/grib2/tables/16/4.234.table b/definitions/grib2/tables/16/4.234.table
new file mode 100644
index 0000000..9844a91
--- /dev/null
+++ b/definitions/grib2/tables/16/4.234.table
@@ -0,0 +1,21 @@
+# Code table 4.234 - Canopy cover fraction (to be used as partitioned parameter in PDT 4.53 or 4.54)
+1 1 Crops, mixed farming 
+2 2 Short grass 
+3 3 Evergreen needleleaf trees 
+4 4 Deciduous needleleaf trees 
+5 5 Deciduous broadleaf trees 
+6 6 Evergreen broadleaf trees 
+7 7 Tall grass 
+8 8 Desert 
+9 9 Tundra 
+10 10 Irrigated crops 
+11 11 Semidesert 
+12 12 Ice caps and glaciers 
+13 13 Bogs and marshes 
+14 14 Inland water 
+15 15 Ocean 
+16 16 Evergreen shrubs 
+17 17 Deciduous shrubs 
+18 18 Mixed forest 
+19 19 Interrupted forest 
+20 20 Water and land mixtures 
diff --git a/definitions/grib2/tables/16/4.236.table b/definitions/grib2/tables/16/4.236.table
new file mode 100644
index 0000000..08c7f8d
--- /dev/null
+++ b/definitions/grib2/tables/16/4.236.table
@@ -0,0 +1,8 @@
+# Code table 4.236 - Soil texture fraction (to be used as partitioned parameter in PDT 4.53 or 4.54)
+1 1 Coarse 
+2 2 Medium 
+3 3 Medium-fine 
+4 4 Fine 
+5 5 Very-fine 
+6 6 Organic 
+7 7 Tropical-organic 
diff --git a/definitions/grib2/tables/16/4.240.table b/definitions/grib2/tables/16/4.240.table
new file mode 100644
index 0000000..c12ebbb
--- /dev/null
+++ b/definitions/grib2/tables/16/4.240.table
@@ -0,0 +1,12 @@
+# Code table 4.240 - Type of distribution function
+0 0 No specific distribution function given 
+1 1 Delta functions with spatially variable concentration and fixed diameters Dl (p1) in meter 
+2 2 Delta functions with spatially variable concentration and fixed masses Ml (p1) in kg 
+3 3 Gaussian (Normal) distribution with spatially variable concentration and fixed mean diameter Dl(p1) and variance(p2) 
+4 4 Gaussian (Normal) distribution with spatially variable concentration, mean diameter and variance 
+5 5 Log-normal distribution with spatially variable number density, mean diameter and variance 
+6 6 Log-normal distribution with spatially variable number density, mean diameter and fixed variance(p1)
+7 7 Log-normal distribution with spatially variable number density and mass density and fixed variance(p1) and fixed particle density(p2)
+# 8-49151 Reserved 
+# 49152-65534 Reserved for local use 
+65535 65535 Missing value 
diff --git a/definitions/grib2/tables/16/4.241.table b/definitions/grib2/tables/16/4.241.table
new file mode 100644
index 0000000..a037b4b
--- /dev/null
+++ b/definitions/grib2/tables/16/4.241.table
@@ -0,0 +1,9 @@
+# Code table 4.241 - Coverage attributes
+0 0 Undefined 
+1 1 Unmodified 
+2 2 Snow covered 
+3 3 Flooded 
+4 4 Ice covered 
+# 5-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing value 
diff --git a/definitions/grib2/tables/16/4.242.table b/definitions/grib2/tables/16/4.242.table
new file mode 100644
index 0000000..083f88c
--- /dev/null
+++ b/definitions/grib2/tables/16/4.242.table
@@ -0,0 +1,7 @@
+# Code table 4.242 - Tile classification
+0 0 Reserved 
+1 1 Land use classes according to ESA-GlobCover GCV2009 
+2 2 Land use classes according to European Commission-Global Land Cover Project GLC2000 
+# 3-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing value 
diff --git a/definitions/grib2/tables/16/4.243.table b/definitions/grib2/tables/16/4.243.table
new file mode 100644
index 0000000..b390533
--- /dev/null
+++ b/definitions/grib2/tables/16/4.243.table
@@ -0,0 +1,43 @@
+# Code table 4.243 - Tile class
+0 0 Reserved 
+1 1 Evergreen broadleaved forest 
+2 2 Deciduous broadleaved closed forest 
+3 3 Deciduous broadleaved open forest 
+4 4 Evergreen needle-leaf forest 
+5 5 Deciduous needle-leaf forest 
+6 6 Mixed leaf trees 
+7 7 Freshwater flooded trees 
+8 8 Saline water flooded trees 
+9 9 Mosaic tree/natural vegetation 
+10 10 Burnt tree cover 
+11 11 Evergreen shrubs closed-open 
+12 12 Deciduous shrubs closed-open 
+13 13 Herbaceous vegetation closed-open 
+14 14 Sparse herbaceous or grass 
+15 15 Flooded shrubs or herbaceous 
+16 16 Cultivated and managed areas 
+17 17 Mosaic crop/tree/natural vegetation 
+18 18 Mosaic crop/shrub/grass 
+19 19 Bare areas 
+20 20 Water 
+21 21 Snow and ice 
+22 22 Artificial surface 
+23 23 Ocean 
+24 24 Irrigated croplands 
+25 25 Rainfed croplands 
+26 26 Mosaic cropland (50-70%) - vegetation (20-50%) 
+27 27 Mosaic vegetation (50-70%) - cropland (20-50%) 
+28 28 Closed broadleaved evergreen forest 
+29 29 Closed needle-leaved evergreen forest 
+30 30 Open needle-leaved deciduous forest 
+31 31 Mixed broadleaved and needle-leaved forest 
+32 32 Mosaic shrubland (50-70%) - grassland (20-50%) 
+33 33 Mosaic grassland (50-70%) - shrubland (20-50%) 
+34 34 Closed to open shrubland 
+35 35 Sparse vegetation 
+36 36 Closed to open forest regularly flooded 
+37 37 Closed forest or shrubland permanently flooded 
+38 38 Closed to open grassland regularly flooded 
+39 39 Undefined 
+# 40-32767 Reserved 
+# 32768- Reserved for local use 
diff --git a/definitions/grib2/tables/16/4.3.table b/definitions/grib2/tables/16/4.3.table
new file mode 100644
index 0000000..f205ea0
--- /dev/null
+++ b/definitions/grib2/tables/16/4.3.table
@@ -0,0 +1,22 @@
+# Code table 4.3 - Type of generating process
+0 0 Analysis 
+1 1 Initialization 
+2 2 Forecast 
+3 3 Bias corrected forecast 
+4 4 Ensemble forecast 
+5 5 Probability forecast 
+6 6 Forecast error 
+7 7 Analysis error 
+8 8 Observation 
+9 9 Climatological 
+10 10 Probability-weighted forecast 
+11 11 Bias-corrected ensemble forecast 
+12 12 Post-processed analysis 
+13 13 Post-processed forecast 
+14 14 Nowcast 
+15 15 Hindcast 
+16 16 Physical retrieval 
+17 17 Regression analysis 
+# 18-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.4.table b/definitions/grib2/tables/16/4.4.table
new file mode 100644
index 0000000..7087ebd
--- /dev/null
+++ b/definitions/grib2/tables/16/4.4.table
@@ -0,0 +1,17 @@
+# Code table 4.4 - Indicator of unit of time range
+0 m Minute 
+1 h Hour 
+2 D Day 
+3 M Month 
+4 Y Year 
+5 10Y Decade (10 years) 
+6 30Y Normal (30 years) 
+7 C Century (100 years) 
+# 8-9 Reserved 
+10 3h 3 hours 
+11 6h 6 hours 
+12 12h 12 hours 
+13 s Second 
+# 14-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.5.table b/definitions/grib2/tables/16/4.5.table
new file mode 100644
index 0000000..25aeff0
--- /dev/null
+++ b/definitions/grib2/tables/16/4.5.table
@@ -0,0 +1,62 @@
+# Code table 4.5 - Fixed surface types and units
+0 0 Reserved 
+1 sfc Ground or water surface (-)
+2 2 Cloud base level (-)
+3 3 Level of cloud tops (-)
+4 4 Level of 0 degree C isotherm (-)
+5 5 Level of adiabatic condensation lifted from the surface (-)
+6 6 Maximum wind level (-)
+7 7 Tropopause (-)
+8 sfc Nominal top of the atmosphere (-)
+9 9 Sea bottom (-)
+10 10 Entire atmosphere (-)
+11 11 Cumulonimbus (CB) base (m)
+12 12 Cumulonimbus (CB) top (m)
+# 13-19 Reserved 
+20 20 Isothermal level (K)
+# 21-99 Reserved 
+100 pl Isobaric surface (Pa)
+101 sfc Mean sea level 
+102 102 Specific altitude above mean sea level (m)
+103 sfc Specified height level above ground (m)
+104 104 Sigma level (sigma value)
+105 ml Hybrid level (-)
+106 sfc Depth below land surface (m)
+107 pt Isentropic (theta) level (K)
+108 108 Level at specified pressure difference from ground to level (Pa)
+109 pv Potential vorticity surface (K m2 kg-1 s-1)
+110 110 Reserved 
+111 111 Eta level (-)
+112 112 Reserved 
+113 113 Logarithmic hybrid level 
+114 114 Snow level (Numeric)
+# 115-116 Reserved 
+117 117 Mixed layer depth (m)
+118 hhl Hybrid height level (-)
+119 hpl Hybrid pressure level (-)
+# 120-149 Reserved 
+150 150 Generalized vertical height coordinate 
+# 151-159 Reserved 
+160 160 Depth below sea level (m)
+161 161 Depth below water surface (m)
+162 162 Lake or river bottom (-)
+163 163 Bottom of sediment layer (-)
+164 164 Bottom of thermally active sediment layer (-)
+165 165 Bottom of sediment layer penetrated by thermal wave (-)
+166 166 Mixing layer (-)
+167 167 Bottom of root zone (-)
+# 168-173 Reserved 
+174 174 Top surface of ice on sea, lake or river 
+175 175 Top surface of ice, under snow cover, on sea, lake or river 
+176 176 Bottom surface (underside) ice on sea, lake or river 
+177 177 Deep soil (of indefinite depth) 
+178 178 Reserved 
+179 179 Top surface of glacier ice and inland ice 
+180 180 Deep inland or glacier ice (of indefinite depth) 
+181 181 Grid tile land fraction as a model surface 
+182 182 Grid tile water fraction as a model surface 
+183 183 Grid tile ice fraction on sea, lake or river as a model surface 
+184 184 Grid tile glacier ice and inland ice fraction as a model surface 
+# 185-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.6.table b/definitions/grib2/tables/16/4.6.table
new file mode 100644
index 0000000..b2dfeb4
--- /dev/null
+++ b/definitions/grib2/tables/16/4.6.table
@@ -0,0 +1,9 @@
+# Code table 4.6 - Type of ensemble forecast
+0 0 Unperturbed high-resolution control forecast 
+1 1 Unperturbed low-resolution control forecast 
+2 2 Negatively perturbed forecast 
+3 3 Positively perturbed forecast 
+4 4 Multi-model forecast 
+# 5-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.7.table b/definitions/grib2/tables/16/4.7.table
new file mode 100644
index 0000000..e0de0e1
--- /dev/null
+++ b/definitions/grib2/tables/16/4.7.table
@@ -0,0 +1,14 @@
+# Code table 4.7 - Derived forecast
+0 0 Unweighted mean of all members 
+1 1 Weighted mean of all members 
+2 2 Standard deviation with respect to cluster mean 
+3 3 Standard deviation with respect to cluster mean, normalized 
+4 4 Spread of all members 
+5 5 Large anomaly index of all members 
+6 6 Unweighted mean of the cluster members 
+7 7 Interquartile range (range between the 25th and 75th quantile) 
+8 8 Minimum of all ensemble members 
+9 9 Maximum of all ensemble members 
+# 10-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.8.table b/definitions/grib2/tables/16/4.8.table
new file mode 100644
index 0000000..ad88303
--- /dev/null
+++ b/definitions/grib2/tables/16/4.8.table
@@ -0,0 +1,6 @@
+# Code table 4.8 - Clustering method
+0 0 Anomaly correlation 
+1 1 Root mean square 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.9.table b/definitions/grib2/tables/16/4.9.table
new file mode 100644
index 0000000..5878b5a
--- /dev/null
+++ b/definitions/grib2/tables/16/4.9.table
@@ -0,0 +1,9 @@
+# Code table 4.9 - Probability type
+0 0 Probability of event below lower limit 
+1 1 Probability of event above upper limit 
+2 2 Probability of event between lower and upper limits (the range includes the lower limit but not the upper limit) 
+3 3 Probability of event above lower limit 
+4 4 Probability of event below upper limit 
+# 5-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/4.91.table b/definitions/grib2/tables/16/4.91.table
new file mode 100644
index 0000000..44cf25f
--- /dev/null
+++ b/definitions/grib2/tables/16/4.91.table
@@ -0,0 +1,16 @@
+# Code table 4.91 - Type of Interval
+0 0 Smaller than first limit 
+1 1 Greater than second limit 
+2 2 Between first and second limit. The range includes the first limit but not the second limit 
+3 3 Greater than first limit 
+4 4 Smaller than second limit 
+5 5 Smaller or equal first limit 
+6 6 Greater or equal second limit 
+7 7 Between first and second. The range includes the first limit and the second limit 
+8 8 Greater or equal first limit 
+9 9 Smaller or equal second limit 
+10 10 Between first and second limit. The range includes the second limit but not the first limit 
+11 11 Equal to first limit 
+# 12-191 Reserved 
+# 192-254 Reserved for local use 
+255 missing Missing 
diff --git a/definitions/grib2/tables/16/5.0.table b/definitions/grib2/tables/16/5.0.table
new file mode 100644
index 0000000..cd61837
--- /dev/null
+++ b/definitions/grib2/tables/16/5.0.table
@@ -0,0 +1,24 @@
+# Code table 5.0 - Data representation template number
+0 0 Grid point data - simple packing 
+1 1 Matrix value at grid point - simple packing 
+2 2 Grid point data - complex packing 
+3 3 Grid point data - complex packing and spatial differencing 
+4 4 Grid point data - IEEE floating point data 
+6 6 Grid point data - simple packing with pre-processing
+40 40 Grid point data - JPEG 2000 code stream format 
+41 41 Grid point data - Portable Network Graphics (PNG) 
+# 42-49 Reserved 
+50 50 Spectral data - simple packing 
+51 51 Spherical harmonics data - complex packing 
+# 52-60 Reserved 
+61 61 Grid point data - simple packing with logarithm pre-processing 
+# 62-199 Reserved 
+200 200 Run length packing with level values 
+# 201-49151 Reserved 
+# 49152-65534 Reserved for local use 
+40000 40000 JPEG2000 Packing
+40010 40010 PNG pacling
+50000 50000 Sperical harmonics ieee packing
+50001 50001 Second order packing
+50002 50002 Second order packing
+65535 65535 Missing 
diff --git a/definitions/grib2/tables/16/5.1.table b/definitions/grib2/tables/16/5.1.table
new file mode 100644
index 0000000..854330c
--- /dev/null
+++ b/definitions/grib2/tables/16/5.1.table
@@ -0,0 +1,6 @@
+# Code table 5.1 - Type of original field values
+0 0 Floating point 
+1 1 Integer 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/5.2.table b/definitions/grib2/tables/16/5.2.table
new file mode 100644
index 0000000..40586a1
--- /dev/null
+++ b/definitions/grib2/tables/16/5.2.table
@@ -0,0 +1,8 @@
+# Code table 5.2 - Matrix coordinate value function definition
+0 0 Explicit coordinate values set 
+1 1 Linear coordinates f(1) = C1, f(n) = f(n-1) + C2 
+# 2-10 Reserved 
+11 11 Geometric coordinates f(1)=C1, f(n)=C2*f(n-1)
+# 12-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/5.3.table b/definitions/grib2/tables/16/5.3.table
new file mode 100644
index 0000000..c3b7b30
--- /dev/null
+++ b/definitions/grib2/tables/16/5.3.table
@@ -0,0 +1,7 @@
+# Code table 5.3 - Matrix coordinate parameter
+1 1 Direction degrees true 
+2 2 Frequency (s-1) 
+3 3 Radial number (2pi/lambda) (m-1) 
+# 4-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/5.4.table b/definitions/grib2/tables/16/5.4.table
new file mode 100644
index 0000000..8121c18
--- /dev/null
+++ b/definitions/grib2/tables/16/5.4.table
@@ -0,0 +1,6 @@
+# Code table 5.4 - Group splitting method
+0 0 Row by row splitting 
+1 1 General group splitting 
+# 2-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/5.40.table b/definitions/grib2/tables/16/5.40.table
new file mode 100644
index 0000000..b9bad2c
--- /dev/null
+++ b/definitions/grib2/tables/16/5.40.table
@@ -0,0 +1,5 @@
+# Code table 5.40 - Type of compression
+0 0 Lossless 
+1 1 Lossy 
+# 2-254 Reserved 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/5.40000.table b/definitions/grib2/tables/16/5.40000.table
new file mode 100644
index 0000000..1eef7c7
--- /dev/null
+++ b/definitions/grib2/tables/16/5.40000.table
@@ -0,0 +1,5 @@
+# Code Table 5.40: Type of Compression
+0 0 Lossless
+1 1 Lossy
+#2-254 Reserved
+255 255 Missing
diff --git a/definitions/grib2/tables/16/5.5.table b/definitions/grib2/tables/16/5.5.table
new file mode 100644
index 0000000..3ef3eb0
--- /dev/null
+++ b/definitions/grib2/tables/16/5.5.table
@@ -0,0 +1,7 @@
+# Code table 5.5 - Missing value management for complex packing
+0 0 No explicit missing values included within data values 
+1 1 Primary missing values included within data values 
+2 2 Primary and secondary missing values included within data values 
+# 3-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/5.50002.table b/definitions/grib2/tables/16/5.50002.table
new file mode 100644
index 0000000..10c243c
--- /dev/null
+++ b/definitions/grib2/tables/16/5.50002.table
@@ -0,0 +1,19 @@
+# second order packing modes table
+
+1 0 no boustrophedonic
+1 1 boustrophedonic
+2 0 Reserved
+2 1 Reserved
+3 0 Reserved
+3 1 Reserved
+4 0 Reserved
+4 1 Reserved
+5 0 Reserved
+5 1 Reserved
+6 0 Reserved
+6 1 Reserved
+7 0 Reserved
+7 1 Reserved
+8 0 Reserved
+8 1 Reserved
+
diff --git a/definitions/grib2/tables/16/5.6.table b/definitions/grib2/tables/16/5.6.table
new file mode 100644
index 0000000..6d51778
--- /dev/null
+++ b/definitions/grib2/tables/16/5.6.table
@@ -0,0 +1,7 @@
+# Code table 5.6 - Order of spatial differencing
+0 0 Reserved 
+1 1 First-order spatial differencing 
+2 2 Second-order spatial differencing 
+# 3-191 Reserved 
+# 192-254 Reserved for local use 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/5.7.table b/definitions/grib2/tables/16/5.7.table
new file mode 100644
index 0000000..5ab7800
--- /dev/null
+++ b/definitions/grib2/tables/16/5.7.table
@@ -0,0 +1,7 @@
+# Code table 5.7 - Precision of floating-point numbers
+0 0 Reserved 
+1 1 IEEE 32-bit (I=4 in section 7) 
+2 2 IEEE 64-bit (I=8 in section 7) 
+3 3 IEEE 128-bit (I=16 in section 7) 
+# 4-254 Reserved 
+255 255 Missing 
diff --git a/definitions/grib2/tables/16/6.0.table b/definitions/grib2/tables/16/6.0.table
new file mode 100644
index 0000000..f539b26
--- /dev/null
+++ b/definitions/grib2/tables/16/6.0.table
@@ -0,0 +1,6 @@
+# Code table 6.0 - Bit map indicator
+0 0 A bit map applies to this product and is specified in this Section
+1 1  A bit map pre-determined by the originating/generating centre applies to this product and is not specified in this Section
+# 1-253 A bit map predetermined by the originating/generating centre applies to this product and is not specified in this Section 
+254 254 A bit map defined previously in the same GRIB message applies to this product 
+255 255 A bit map does not apply to this product 
diff --git a/definitions/grib2/tables/16/stepType.table b/definitions/grib2/tables/16/stepType.table
new file mode 100644
index 0000000..d88e441
--- /dev/null
+++ b/definitions/grib2/tables/16/stepType.table
@@ -0,0 +1,4 @@
+# CODE TABLE Step Type
+
+0 instant  Instant
+1 interval Interval
diff --git a/definitions/grib2/tables/5/4.2.0.20.table~ b/definitions/grib2/tables/5/4.2.0.20.table~
deleted file mode 100644
index 5a6ce15..0000000
--- a/definitions/grib2/tables/5/4.2.0.20.table~
+++ /dev/null
@@ -1,13 +0,0 @@
-0 0	Mass density (concentration)	(kg m-3)
-1 1	Column-integrated (integrated mass density)	(kg m-2)
-2 2	Volume mixing ratio (mole fraction in air)	mole.mole-1
-3 3	Mass mixing ratio (mass fraction in air)	kg.kg-1
-4 4	Surface dry deposition mass flux	kg.m-2.s-1
-5 5	Surface wet deposition mass flux	kg.m-2.s-1
-6 6	Atmosphere emission mass flux	kg.m-2.s-1
-7 7	Chemical gross production rate of mole concentration	mole.m-3.s-1
-8 8	Chemical gross destruction rate of mole concentration	mole.m-3.s-1
-9 9	Surface dry deposition mass flux into stomata	kg.m-2.s-1
-#10-191	Reserved	
-#192-254	Reserved for local use	
-255 255	Missing	
diff --git a/definitions/grib2/tables/6/1.4.table~ b/definitions/grib2/tables/6/1.4.table~
deleted file mode 100644
index ac21f5c..0000000
--- a/definitions/grib2/tables/6/1.4.table~
+++ /dev/null
@@ -1,13 +0,0 @@
-# CODE TABLE 1.4, Type of data
-0 an Analysis products
-1 fc Forecast products
-2 af  Analysis and forecast products
-3 cf Control forecast products
-4 pf Perturbed forecast products
-5 cp  Control and perturbed forecast products
-6 sa  Processed satellite observations
-7 ra  Processed radar observations
-8 ep  Event Probability
-# 8-191 Reserved
-# 192-254 Reserved for local use
-255 255 Missing
diff --git a/definitions/grib2/tables/6/4.2.0.20.table~ b/definitions/grib2/tables/6/4.2.0.20.table~
deleted file mode 100644
index 5a6ce15..0000000
--- a/definitions/grib2/tables/6/4.2.0.20.table~
+++ /dev/null
@@ -1,13 +0,0 @@
-0 0	Mass density (concentration)	(kg m-3)
-1 1	Column-integrated (integrated mass density)	(kg m-2)
-2 2	Volume mixing ratio (mole fraction in air)	mole.mole-1
-3 3	Mass mixing ratio (mass fraction in air)	kg.kg-1
-4 4	Surface dry deposition mass flux	kg.m-2.s-1
-5 5	Surface wet deposition mass flux	kg.m-2.s-1
-6 6	Atmosphere emission mass flux	kg.m-2.s-1
-7 7	Chemical gross production rate of mole concentration	mole.m-3.s-1
-8 8	Chemical gross destruction rate of mole concentration	mole.m-3.s-1
-9 9	Surface dry deposition mass flux into stomata	kg.m-2.s-1
-#10-191	Reserved	
-#192-254	Reserved for local use	
-255 255	Missing	
diff --git a/definitions/grib2/tables/7/1.4.table~ b/definitions/grib2/tables/7/1.4.table~
deleted file mode 100644
index ac21f5c..0000000
--- a/definitions/grib2/tables/7/1.4.table~
+++ /dev/null
@@ -1,13 +0,0 @@
-# CODE TABLE 1.4, Type of data
-0 an Analysis products
-1 fc Forecast products
-2 af  Analysis and forecast products
-3 cf Control forecast products
-4 pf Perturbed forecast products
-5 cp  Control and perturbed forecast products
-6 sa  Processed satellite observations
-7 ra  Processed radar observations
-8 ep  Event Probability
-# 8-191 Reserved
-# 192-254 Reserved for local use
-255 255 Missing
diff --git a/definitions/grib2/tables/7/4.2.0.20.table~ b/definitions/grib2/tables/7/4.2.0.20.table~
deleted file mode 100644
index 5a6ce15..0000000
--- a/definitions/grib2/tables/7/4.2.0.20.table~
+++ /dev/null
@@ -1,13 +0,0 @@
-0 0	Mass density (concentration)	(kg m-3)
-1 1	Column-integrated (integrated mass density)	(kg m-2)
-2 2	Volume mixing ratio (mole fraction in air)	mole.mole-1
-3 3	Mass mixing ratio (mass fraction in air)	kg.kg-1
-4 4	Surface dry deposition mass flux	kg.m-2.s-1
-5 5	Surface wet deposition mass flux	kg.m-2.s-1
-6 6	Atmosphere emission mass flux	kg.m-2.s-1
-7 7	Chemical gross production rate of mole concentration	mole.m-3.s-1
-8 8	Chemical gross destruction rate of mole concentration	mole.m-3.s-1
-9 9	Surface dry deposition mass flux into stomata	kg.m-2.s-1
-#10-191	Reserved	
-#192-254	Reserved for local use	
-255 255	Missing	
diff --git a/definitions/grib2/template.1.0.def b/definitions/grib2/template.1.0.def
index 84bbc99..b869cfa 100644
--- a/definitions/grib2/template.1.0.def
+++ b/definitions/grib2/template.1.0.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,4 +9,4 @@
 
 # TEMPLATE 1.0, Calendar Definition
 
-include "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 1405ef4..7aa0b13 100644
--- a/definitions/grib2/template.1.1.def
+++ b/definitions/grib2/template.1.1.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,4 +9,4 @@
 
 # TEMPLATE 1.1, Paleontological Offset
 
-include "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 2c92109..df6e826 100644
--- a/definitions/grib2/template.1.2.def
+++ b/definitions/grib2/template.1.2.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,5 +9,5 @@
 
 # TEMPLATE 1.2, Calendar Definition and Paleontological Offset
 
-include "template.1.calendar.def";
-include "template.1.offset.def";
+include "grib2/template.1.calendar.def";
+include "grib2/template.1.offset.def";
diff --git a/definitions/grib2/template.1.calendar.def b/definitions/grib2/template.1.calendar.def
index 6d0c1eb..d9bf24f 100644
--- a/definitions/grib2/template.1.calendar.def
+++ b/definitions/grib2/template.1.calendar.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.1.offset.def b/definitions/grib2/template.1.offset.def
index c494be4..20edad2 100644
--- a/definitions/grib2/template.1.offset.def
+++ b/definitions/grib2/template.1.offset.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.3.0.def b/definitions/grib2/template.3.0.def
index 437da4d..87dc5d9 100644
--- a/definitions/grib2/template.3.0.def
+++ b/definitions/grib2/template.3.0.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,5 +9,5 @@
 
 # TEMPLATE 3.0, Latitude/longitude (or equidistant cylindrical, or Plate Carree)
 
-include "template.3.shape_of_the_earth.def";
-include "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 ef8a19e..af2afc0 100644
--- a/definitions/grib2/template.3.1.def
+++ b/definitions/grib2/template.3.1.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,6 +9,6 @@
 
 # TEMPLATE 3.1, Rotated Latitude/longitude (or equidistant cylindrical, or Plate Carree)
             
-include "template.3.shape_of_the_earth.def";
-include "template.3.latlon.def";
-include "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 ebf5219..75c077f 100644
--- a/definitions/grib2/template.3.10.def
+++ b/definitions/grib2/template.3.10.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 # TEMPLATE 3.10, Mercator
 
-include "template.3.shape_of_the_earth.def";
+include "grib2/template.3.shape_of_the_earth.def";
 
 unsigned[4] Ni : dump;
 alias numberOfPointsAlongAParallel=Ni;
@@ -31,7 +31,7 @@ signed[4] longitudeOfFirstGridPoint : edition_specific,no_copy;
 alias Lo1 =  longitudeOfFirstGridPoint;
 meta geography.longitudeOfFirstGridPointInDegrees scale(longitudeOfFirstGridPoint,oneConstant,grib2divider,truncateDegrees) : dump;
 
-include "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)
@@ -48,7 +48,7 @@ signed[4] longitudeOfLastGridPoint: edition_specific,no_copy ;
 alias Lo2 =  longitudeOfLastGridPoint;
 meta geography.longitudeOfLastGridPointInDegrees scale(longitudeOfLastGridPoint,oneConstant,grib2divider,truncateDegrees) : dump;
 
-include "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 70ab39e..5569e5f 100644
--- a/definitions/grib2/template.3.100.def
+++ b/definitions/grib2/template.3.100.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.3.1000.def b/definitions/grib2/template.3.1000.def
index 768ca86..79b4590 100644
--- a/definitions/grib2/template.3.1000.def
+++ b/definitions/grib2/template.3.1000.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -10,7 +10,7 @@
 
 # TEMPLATE 3.1000, Cross-section grid, with points equally spaced on the horizontal
 
-include "template.3.shape_of_the_earth.def";
+include "grib2/template.3.shape_of_the_earth.def";
 
 
 #  Number of horizontal points
@@ -35,7 +35,7 @@ unsigned[4] longitudeOfFirstGridPoint : edition_specific;
 
 alias Lo1 =  longitudeOfFirstGridPoint;
 
-include "template.3.scanning_mode.def";
+include "grib2/template.3.scanning_mode.def";
 
 #  La2 - latitude of last grid point
 # NOTE 1 NOT FOUND
diff --git a/definitions/grib2/template.3.101.def b/definitions/grib2/template.3.101.def
index 78442a3..95e22ce 100644
--- a/definitions/grib2/template.3.101.def
+++ b/definitions/grib2/template.3.101.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.3.110.def b/definitions/grib2/template.3.110.def
index 016b91a..082e596 100644
--- a/definitions/grib2/template.3.110.def
+++ b/definitions/grib2/template.3.110.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 
 # TEMPLATE 3.110, Equatorial azimuthal equidistant projection
-include "template.3.shape_of_the_earth.def";
+include "grib2/template.3.shape_of_the_earth.def";
 
 #  Nx - number of points along X-axis
 unsigned[4] numberOfPointsAlongXAxis : dump  ;
@@ -40,5 +40,5 @@ unsigned[4] Dy  : dump ;
 #  Projection centre flag
 unsigned[1] projectionCenterFlag  : dump ;
 
-include "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 0f962a8..bfd567b 100644
--- a/definitions/grib2/template.3.1100.def
+++ b/definitions/grib2/template.3.1100.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 
 # TEMPLATE 3.1100, Hovmoller diagram grid with points equally spaced on the horizontal
-include "template.3.shape_of_the_earth.def";
+include "grib2/template.3.shape_of_the_earth.def";
 
 #  Number of horizontal points
 unsigned[5] numberOfHorizontalPoints : dump ;
@@ -33,7 +33,7 @@ unsigned[4] longitudeOfFirstGridPoint : edition_specific,dump;
 
 alias Lo1  =longitudeOfFirstGridPoint;
 
-include "template.3.scanning_mode.def";
+include "grib2/template.3.scanning_mode.def";
 
 #  La2 - latitude of last grid point
 # NOTE 1 NOT FOUND
diff --git a/definitions/grib2/template.3.12.def b/definitions/grib2/template.3.12.def
index b276fb7..879389a 100644
--- a/definitions/grib2/template.3.12.def
+++ b/definitions/grib2/template.3.12.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 # TEMPLATE 3.12, Transverse Mercator
 
-include "template.3.shape_of_the_earth.def";
+include "grib2/template.3.shape_of_the_earth.def";
 
 unsigned[4] Ni : dump;
 alias numberOfPointsAlongAParallel=Ni;
@@ -31,7 +31,7 @@ signed[4] longitudeOfReferencePoint : edition_specific,no_copy;
 alias LoR = longitudeOfReferencePoint;
 meta geography.longitudeOfReferencePointInDegrees scale(longitudeOfReferencePoint,oneConstant,grib2divider,truncateDegrees) : dump;
 
-include "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)
@@ -49,7 +49,7 @@ signed[4] YR : edition_specific,no_copy ;
 alias falseNorthing = YR;
 meta geography.YRInMetres scale(YR,one,hundred) : dump;
 
-include "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 0e0eebd..d36fc46 100644
--- a/definitions/grib2/template.3.120.def
+++ b/definitions/grib2/template.3.120.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -38,7 +38,7 @@ alias Dx  = spacingOfBinsAlongRadials;
 unsigned[4] offsetFromOriginToInnerBound ;
 alias Dstart =  offsetFromOriginToInnerBound;
 
-include "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.1200.def b/definitions/grib2/template.3.1200.def
index debf4f2..3492295 100644
--- a/definitions/grib2/template.3.1200.def
+++ b/definitions/grib2/template.3.1200.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.3.130.def b/definitions/grib2/template.3.130.def
index 648b178..59ef703 100644
--- a/definitions/grib2/template.3.130.def
+++ b/definitions/grib2/template.3.130.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 # TEMPLATE 3.130, Irregular Latitude/longitude grid
 
-include "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 92489e5..e6cfc04 100644
--- a/definitions/grib2/template.3.140.def
+++ b/definitions/grib2/template.3.140.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -10,7 +10,7 @@
 
 # START 2/template.3.140 ----------------------------------------------------------------------
 # TEMPLATE 3.140, Lambert azimuthal equal area projection
-include "template.3.shape_of_the_earth.def";
+include "grib2/template.3.shape_of_the_earth.def";
 
 #  Nx - number of points along X-axis
 unsigned[4] numberOfPointsAlongXAxis : dump  ;
@@ -51,7 +51,7 @@ alias Dx  = xDirectionGridLengthInMillimetres ;
 unsigned[4] yDirectionGridLengthInMillimetres  : dump ;
 alias Dy  = yDirectionGridLengthInMillimetres ;
 
-include "template.3.scanning_mode.def";
+include "grib2/template.3.scanning_mode.def";
 
 iterator lambert_azimuthal_equal_area(numberOfPoints,missingValue,values,
           radius,Nx,Ny,
diff --git a/definitions/grib2/template.3.2.def b/definitions/grib2/template.3.2.def
index f3cde31..2f4c047 100644
--- a/definitions/grib2/template.3.2.def
+++ b/definitions/grib2/template.3.2.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,6 +9,6 @@
 
 # TEMPLATE 3.2, Stretched Latitude/longitude (or equidistant cylindrical, or Plate Carree)
                
-include "template.3.shape_of_the_earth.def";
-include "template.3.latlon.def";
-include "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 952ec15..c5d08df 100644
--- a/definitions/grib2/template.3.20.def
+++ b/definitions/grib2/template.3.20.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -10,7 +10,7 @@
 
 # START 2/template.3.20 ----------------------------------------------------------------------
 # TEMPLATE 3.20, Polar stereographic projection
-include "template.3.shape_of_the_earth.def";
+include "grib2/template.3.shape_of_the_earth.def";
 transient oneThousand=1000;
 
 #  Nx - number of points along X-axis
@@ -70,7 +70,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 "template.3.scanning_mode.def";
+include "grib2/template.3.scanning_mode.def";
 
 
 iterator polar_stereographic(numberOfPoints,missingValue,values,
diff --git a/definitions/grib2/template.3.3.def b/definitions/grib2/template.3.3.def
index b2dece9..221f6f6 100644
--- a/definitions/grib2/template.3.3.def
+++ b/definitions/grib2/template.3.3.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,8 +9,8 @@
 
 # TEMPLATE 3.3, Stretched and Rotated Latitude/longitude (or equidistant cylindrical, or Plate Carree)
 
-include "template.3.shape_of_the_earth.def";
-include "template.3.latlon.def";
-include "template.3.rotation.def";
-include "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 c21f835..8f32e86 100644
--- a/definitions/grib2/template.3.30.def
+++ b/definitions/grib2/template.3.30.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -8,7 +8,7 @@
 #
 
 # TEMPLATE 3.30, Lambert conformal
-include "template.3.shape_of_the_earth.def";
+include "grib2/template.3.shape_of_the_earth.def";
 
 unsigned[4] Nx  : dump;
 alias Ni  = Nx;
@@ -36,7 +36,7 @@ meta  geography.longitudeOfFirstGridPointInDegrees
 alias Lo1InDegrees = longitudeOfFirstGridPointInDegrees;
 #meta longitudeOfFirstGridPointInMicrodegrees times(longitudeOfFirstGridPoint,oneConstant) : no_copy;
 
-include "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 ;
@@ -64,7 +64,7 @@ meta  geography.DyInMetres scale(Dy,one,thousand) : dump;
 #  Projection centre flag
 flags[1] projectionCentreFlag 'grib2/tables/[tablesVersion]/3.5.table' : dump;
 
-include "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 afd1f47..2bd94b8 100644
--- a/definitions/grib2/template.3.31.def
+++ b/definitions/grib2/template.3.31.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -8,7 +8,7 @@
 #
 
 # TEMPLATE 3.31, Albers equal area
-include "template.3.shape_of_the_earth.def";
+include "grib2/template.3.shape_of_the_earth.def";
 
 #  Nx - number of points along the X-axis
 unsigned[4] Nx  : dump;
@@ -28,7 +28,7 @@ alias La1  = latitudeOfFirstGridPoint;
 unsigned[4] longitudeOfFirstGridPoint : edition_specific,dump;
 alias Lo1  = longitudeOfFirstGridPoint;
 
-include "template.3.resolution_flags.def";
+include "grib2/template.3.resolution_flags.def";
 
 #  LaD - Latitude where Dx and Dy are specified
 signed[4] LaD  : dump;
@@ -49,7 +49,7 @@ alias Dy =  yDirectionGridLength;
 
 #  Projection centre flag
 flags[1] projectionCentreFlag 'grib2/tables/[tablesVersion]/3.5.table' : dump;
-include "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 9fe3b4e..3ba12e2 100644
--- a/definitions/grib2/template.3.4.def
+++ b/definitions/grib2/template.3.4.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,5 +9,5 @@
 
 # TEMPLATE 3.4, variable resolution latitude/longitude
             
-include "template.3.shape_of_the_earth.def";
-include "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 15e30c1..079b004 100644
--- a/definitions/grib2/template.3.40.def
+++ b/definitions/grib2/template.3.40.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,5 +9,5 @@
 
 # TEMPLATE 3.40, Gaussian latitude/longitude
 
-include "template.3.shape_of_the_earth.def";
-include "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 bf7785f..f908534 100644
--- a/definitions/grib2/template.3.41.def
+++ b/definitions/grib2/template.3.41.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,6 +9,6 @@
 
 # TEMPLATE 3.41, Rotated Gaussian latitude/longitude
             
-include "template.3.shape_of_the_earth.def";
-include "template.3.gaussian.def";
-include "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 6f5b69e..57819ec 100644
--- a/definitions/grib2/template.3.42.def
+++ b/definitions/grib2/template.3.42.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,6 +9,6 @@
 
 # TEMPLATE 3.42, Stretched Gaussian latitude/longitude
 
-include "template.3.shape_of_the_earth.def";
-include "template.3.gaussian.def";
-include "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 eb81dfb..cf0308c 100644
--- a/definitions/grib2/template.3.43.def
+++ b/definitions/grib2/template.3.43.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 # TEMPLATE 3.43, Stretched and rotated Gaussian latitude/longitude
 
-include "template.3.shape_of_the_earth.def";
-include "template.3.gaussian.def";
-include "template.3.rotation.def";
-include "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 a45d302..6c5a49e 100644
--- a/definitions/grib2/template.3.5.def
+++ b/definitions/grib2/template.3.5.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,6 +9,6 @@
 
 # TEMPLATE 3.5, variable resolution rotated latitude/longitude
             
-include "template.3.shape_of_the_earth.def";
-include "template.3.latlon_vares.def";
-include "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 3a58aa3..64eef71 100644
--- a/definitions/grib2/template.3.50.def
+++ b/definitions/grib2/template.3.50.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,4 +9,4 @@
 
 # TEMPLATE 3.50, Spherical harmonic coefficients
 
-include "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 babf298..d7dc612 100644
--- a/definitions/grib2/template.3.51.def
+++ b/definitions/grib2/template.3.51.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,5 +9,5 @@
 
 # TEMPLATE 3.51, Rotated spherical harmonic coefficients
 
-include "template.3.spherical_harmonics.def";
-include "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 f520f42..417436c 100644
--- a/definitions/grib2/template.3.52.def
+++ b/definitions/grib2/template.3.52.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,5 +9,5 @@
 
 # TEMPLATE 3.52, Stretched spherical harmonic coefficients
 
-include "template.3.spherical_harmonics.def";
-include "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 41dca33..52b5f07 100644
--- a/definitions/grib2/template.3.53.def
+++ b/definitions/grib2/template.3.53.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,6 +9,6 @@
 
 # TEMPLATE 3.53, Stretched and rotated spherical harmonic coefficients
 
-include "template.3.spherical_harmonics.def";
-include "template.3.rotation.def";
-include "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.90.def b/definitions/grib2/template.3.90.def
index c87e418..335ef07 100644
--- a/definitions/grib2/template.3.90.def
+++ b/definitions/grib2/template.3.90.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -10,7 +10,7 @@
 
 # START 2/template.3.90 ----------------------------------------------------------------------
 # TEMPLATE 3.90, Space view perspective or orthographic
-include "template.3.shape_of_the_earth.def";
+include "grib2/template.3.shape_of_the_earth.def";
 
 unsigned[4] Nx  : dump;
 alias Ni  = Nx;
@@ -31,7 +31,7 @@ signed[4] longitudeOfSubSatellitePoint ;
 meta  geography.latitudeOfSubSatellitePointInDegrees   scale(latitudeOfSubSatellitePoint,one,grib2divider,truncateDegrees) : dump;
 meta  geography.longitudeOfSubSatellitePointInDegrees   scale(longitudeOfSubSatellitePoint,one,grib2divider,truncateDegrees) : dump;
 
-include "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;
@@ -53,7 +53,7 @@ unsigned[4] Yp  : no_copy;
 meta  geography.YpInGridLengths scale(Yp,one,thousand) : dump;
 alias yCoordinateOfSubSatellitePoint=YpInGridLengths;
 
-include "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
 signed[4] orientationOfTheGrid : edition_specific;
diff --git a/definitions/grib2/template.3.gaussian.def b/definitions/grib2/template.3.gaussian.def
index 6d6e95b..eb9760d 100755
--- a/definitions/grib2/template.3.gaussian.def
+++ b/definitions/grib2/template.3.gaussian.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,7 +7,7 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-include "template.3.grid.def";
+include "grib2/template.3.grid.def";
 
 #  Di - i direction increment
 unsigned[4] iDirectionIncrement : can_be_missing;
@@ -18,7 +18,7 @@ unsigned[4] N  : dump;
 alias numberOfParallelsBetweenAPoleAndTheEquator=N ;
 alias geography.N=N;
 
-include "template.3.scanning_mode.def";
+include "grib2/template.3.scanning_mode.def";
 
 modify Ni : can_be_missing,dump;
 
@@ -44,6 +44,7 @@ meta global global_gaussian(N,Ni,iDirectionIncrement,
                             longitudeOfFirstGridPoint,
                             latitudeOfLastGridPoint,
                             longitudeOfLastGridPoint,
+                            PLPresent, pl,
                             basicAngleOfTheInitialProductionDomain,
                             subdivisionsOfBasicAngle) = 0 : dump;
 
@@ -70,7 +71,7 @@ if(missing(Ni) && PLPresent == 1){
               Ni,Nj,iScansNegatively,
               latitudeFirstInDegrees, latitudeLastInDegrees,
               N,jScansPositively);
-    nearest regular(values,radius,Ni   ,Nj);
+    nearest regular(values,radius,Ni,Nj);
 }
 meta latLonValues latlonvalues(values);
 alias latitudeLongitudeValues=latLonValues;
@@ -79,6 +80,12 @@ meta longitudes longitudes(values,0);
 meta distinctLatitudes latitudes(values,1);
 meta distinctLongitudes longitudes(values,1);
 
+meta isOctahedral octahedral_gaussian(N, Ni, PLPresent, pl) = 0 : no_copy,dump;
+
+meta gaussianGridName gaussian_grid_name(N, Ni, isOctahedral);
+alias gridName=gaussianGridName;
+
+
 # Useful for sub-areas
 # meta numberOfExpectedPoints number_of_points_gaussian(Ni,Nj,PLPresent,pl,
 #    N,
diff --git a/definitions/grib2/template.3.grid.def b/definitions/grib2/template.3.grid.def
index d06b963..26d899f 100644
--- a/definitions/grib2/template.3.grid.def
+++ b/definitions/grib2/template.3.grid.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -54,7 +54,7 @@ signed[4] longitudeOfFirstGridPoint ;
 alias Lo1  = longitudeOfFirstGridPoint;
 #meta longitudeOfFirstGridPointInMicrodegrees times(longitudeOfFirstGridPoint,mAngleMultiplier,angleDivisor) : no_copy;
 
-include "template.3.resolution_flags.def"
+include "grib2/template.3.resolution_flags.def"
 
 #  La2 - latitude of last grid point
 signed[4] latitudeOfLastGridPoint :  edition_specific;
diff --git a/definitions/grib2/template.3.latlon.def b/definitions/grib2/template.3.latlon.def
index 4cb747f..7cae63c 100755
--- a/definitions/grib2/template.3.latlon.def
+++ b/definitions/grib2/template.3.latlon.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,7 +7,7 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-include "template.3.grid.def";
+include "grib2/template.3.grid.def";
 
 #  Di - i direction increment
 
@@ -21,7 +21,7 @@ unsigned[4] jDirectionIncrement : can_be_missing,edition_specific;
 alias Dj =  jDirectionIncrement;
 alias Dy =  jDirectionIncrement;
 
-include "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 153876b..a00748b 100755
--- a/definitions/grib2/template.3.latlon_vares.def
+++ b/definitions/grib2/template.3.latlon_vares.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -41,9 +41,9 @@ when (missing(subdivisionsOfBasicAngle) || subdivisionsOfBasicAngle == 0) {
   set angleDivisor  = subdivisionsOfBasicAngle;
 }
 
-include "template.3.resolution_flags.def"
+include "grib2/template.3.resolution_flags.def"
 
-include "template.3.scanning_mode.def";
+include "grib2/template.3.scanning_mode.def";
 
 longitudesList list(Ni) {
     unsigned[4] longitudes;
diff --git a/definitions/grib2/template.3.resolution_flags.def b/definitions/grib2/template.3.resolution_flags.def
index 623a8a2..469f17a 100644
--- a/definitions/grib2/template.3.resolution_flags.def
+++ b/definitions/grib2/template.3.resolution_flags.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.3.rotation.def b/definitions/grib2/template.3.rotation.def
index d4f616e..0ec2174 100755
--- a/definitions/grib2/template.3.rotation.def
+++ b/definitions/grib2/template.3.rotation.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -25,3 +25,4 @@ alias geography.angleOfRotationInDegrees=angleOfRotation;
 
 alias angleOfRotationOfProjection=angleOfRotation;
 
+alias is_rotated_grid=one;
diff --git a/definitions/grib2/template.3.scanning_mode.def b/definitions/grib2/template.3.scanning_mode.def
index 3a575f8..63a8d26 100644
--- a/definitions/grib2/template.3.scanning_mode.def
+++ b/definitions/grib2/template.3.scanning_mode.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.3.shape_of_the_earth.def b/definitions/grib2/template.3.shape_of_the_earth.def
index 8c7fe4f..f92d2b8 100755
--- a/definitions/grib2/template.3.shape_of_the_earth.def
+++ b/definitions/grib2/template.3.shape_of_the_earth.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.3.spherical_harmonics.def b/definitions/grib2/template.3.spherical_harmonics.def
index 4c8c314..8bab742 100755
--- a/definitions/grib2/template.3.spherical_harmonics.def
+++ b/definitions/grib2/template.3.spherical_harmonics.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.3.stretching.def b/definitions/grib2/template.3.stretching.def
index f9134f3..c52a067 100755
--- a/definitions/grib2/template.3.stretching.def
+++ b/definitions/grib2/template.3.stretching.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.4.0.def b/definitions/grib2/template.4.0.def
index d63e3bb..e34f061 100644
--- a/definitions/grib2/template.4.0.def
+++ b/definitions/grib2/template.4.0.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 # TEMPLATE 4.0, Analysis or forecast at a horizontal level or in a horizontal layer at a point in time
 
-include "template.4.parameter.def";
-include "template.4.point_in_time.def";
-include "template.4.horizontal.def";
+include "grib2/template.4.parameter.def";
+include "grib2/template.4.point_in_time.def";
+include "grib2/template.4.horizontal.def";
 
diff --git a/definitions/grib2/template.4.1.def b/definitions/grib2/template.4.1.def
index c3fef5c..9415d10 100644
--- a/definitions/grib2/template.4.1.def
+++ b/definitions/grib2/template.4.1.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 # TEMPLATE 4.1, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time
 
-include "template.4.parameter.def"
-include "template.4.point_in_time.def";
-include "template.4.horizontal.def"
-include "template.4.eps.def"
+include "grib2/template.4.parameter.def"
+include "grib2/template.4.point_in_time.def";
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.eps.def"
diff --git a/definitions/grib2/template.4.10.def b/definitions/grib2/template.4.10.def
index a65d4e3..5f21ad9 100644
--- a/definitions/grib2/template.4.10.def
+++ b/definitions/grib2/template.4.10.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 # TEMPLATE 4.10, Percentile forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
 
-include "template.4.parameter.def"
-include "template.4.horizontal.def"
-include "template.4.percentile.def"
-include "template.4.statistical.def"
+include "grib2/template.4.parameter.def"
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.percentile.def"
+include "grib2/template.4.statistical.def"
diff --git a/definitions/grib2/template.4.1000.def b/definitions/grib2/template.4.1000.def
index d4726c3..d1d267c 100644
--- a/definitions/grib2/template.4.1000.def
+++ b/definitions/grib2/template.4.1000.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,5 +9,5 @@
 
 # TEMPLATE 4.1000, Cross section of analysis and forecast at a point in time
 
-include "template.4.parameter.def"
-include "template.4.point_in_time.def";
+include "grib2/template.4.parameter.def"
+include "grib2/template.4.point_in_time.def";
diff --git a/definitions/grib2/template.4.1001.def b/definitions/grib2/template.4.1001.def
index 08277b6..346ed62 100644
--- a/definitions/grib2/template.4.1001.def
+++ b/definitions/grib2/template.4.1001.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,5 +9,5 @@
 
 # TEMPLATE 4.1001, Cross section of averaged or otherwise statistically processed analysis or forecast over a range of time
 
-include "template.4.parameter.def"
-include "template.4.statistical.def"
+include "grib2/template.4.parameter.def"
+include "grib2/template.4.statistical.def"
diff --git a/definitions/grib2/template.4.1002.def b/definitions/grib2/template.4.1002.def
index 05fba3d..ccf92a8 100644
--- a/definitions/grib2/template.4.1002.def
+++ b/definitions/grib2/template.4.1002.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 # TEMPLATE 4.1002, Cross-section of analysis and forecast, averaged or otherwise statistically processed over latitude or longitude
 
-include "template.4.parameter.def"
+include "grib2/template.4.parameter.def"
 
 
 #  Horizontal dimension processed
diff --git a/definitions/grib2/template.4.11.def b/definitions/grib2/template.4.11.def
index 85b1654..9d9e86f 100644
--- a/definitions/grib2/template.4.11.def
+++ b/definitions/grib2/template.4.11.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 # TEMPLATE 4.11, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
 
-include "template.4.parameter.def"
-include "template.4.horizontal.def"
-include "template.4.eps.def"
-include "template.4.statistical.def"
+include "grib2/template.4.parameter.def"
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.eps.def"
+include "grib2/template.4.statistical.def"
diff --git a/definitions/grib2/template.4.1100.def b/definitions/grib2/template.4.1100.def
index 6ec559a..9dc74ba 100644
--- a/definitions/grib2/template.4.1100.def
+++ b/definitions/grib2/template.4.1100.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,5 +9,5 @@
 
 # TEMPLATE 4.1100, Hovm�ller-type grid with no averaging or other statistical processing
 
-include "template.4.parameter.def"
-include "template.4.horizontal.def"
+include "grib2/template.4.parameter.def"
+include "grib2/template.4.horizontal.def"
diff --git a/definitions/grib2/template.4.1101.def b/definitions/grib2/template.4.1101.def
index 620a6be..49796f6 100644
--- a/definitions/grib2/template.4.1101.def
+++ b/definitions/grib2/template.4.1101.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,6 +9,6 @@
 
 # TEMPLATE 4.1101, Hovm�ller-type grid with averaging or other statistical processing
 
-include "template.4.parameter.def"
-include "template.4.horizontal.def"
-include "template.4.statistical.def"
+include "grib2/template.4.parameter.def"
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.statistical.def"
diff --git a/definitions/grib2/template.4.12.def b/definitions/grib2/template.4.12.def
index 1962078..7121dd1 100644
--- a/definitions/grib2/template.4.12.def
+++ b/definitions/grib2/template.4.12.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 # TEMPLATE 4.12, Derived forecasts based on all ensemble members at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
 
-include "template.4.parameter.def"
-include "template.4.horizontal.def"
-include "template.4.derived.def"
-include "template.4.statistical.def"
\ No newline at end of file
+include "grib2/template.4.parameter.def"
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.derived.def"
+include "grib2/template.4.statistical.def"
diff --git a/definitions/grib2/template.4.13.def b/definitions/grib2/template.4.13.def
index 9aff6af..7e17469 100644
--- a/definitions/grib2/template.4.13.def
+++ b/definitions/grib2/template.4.13.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,11 +9,11 @@
 
 # TEMPLATE 4.13, Derived forecasts based on a cluster of ensemble members over a rectangular area at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
 
-include "template.4.parameter.def"
-include "template.4.horizontal.def"
-include "template.4.derived.def"
-include "template.4.rectangular_cluster.def"
-include "template.4.statistical.def"
+include "grib2/template.4.parameter.def"
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.derived.def"
+include "grib2/template.4.rectangular_cluster.def"
+include "grib2/template.4.statistical.def"
 
 ensembleForecastNumbersList list(numberOfForecastsInTheCluster) {
   unsigned[1] ensembleForecastNumbers : dump;
diff --git a/definitions/grib2/template.4.14.def b/definitions/grib2/template.4.14.def
index 7ab75ca..4f62f49 100644
--- a/definitions/grib2/template.4.14.def
+++ b/definitions/grib2/template.4.14.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,11 +9,11 @@
 
 # TEMPLATE 4.14, Derived forecasts based on a cluster of ensemble members over a circular area at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
 
-include "template.4.parameter.def"
-include "template.4.horizontal.def"
-include "template.4.derived.def"
-include "template.4.circular_cluster.def"
-include "template.4.statistical.def"
+include "grib2/template.4.parameter.def"
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.derived.def"
+include "grib2/template.4.circular_cluster.def"
+include "grib2/template.4.statistical.def"
 
 ensembleForecastNumbersList list(numberOfForecastsInTheCluster) {
   unsigned[1] ensembleForecastNumbers : dump;
diff --git a/definitions/grib2/template.4.15.def b/definitions/grib2/template.4.15.def
index f2b1487..3751531 100644
--- a/definitions/grib2/template.4.15.def
+++ b/definitions/grib2/template.4.15.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,9 +9,9 @@
 
 # TEMPLATE 4.15, Average, accumulation, extreme values, or other statistically-processed values over a spatial area at a horizontal level or in a horizontal layer at a point in time
 
-include "template.4.parameter.def";
-include "template.4.point_in_time.def";
-include "template.4.horizontal.def";
+include "grib2/template.4.parameter.def";
+include "grib2/template.4.point_in_time.def";
+include "grib2/template.4.horizontal.def";
 codetable[1] statisticalProcess 'grib2/tables/[tablesVersion]/4.10.table';
 codetable[1] spatialProcessing 'grib2/tables/[tablesVersion]/4.15.table';
 unsigned[1] numberOfPointsUsed;
diff --git a/definitions/grib2/template.4.2.def b/definitions/grib2/template.4.2.def
index ec67190..68cf73e 100644
--- a/definitions/grib2/template.4.2.def
+++ b/definitions/grib2/template.4.2.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 # TEMPLATE 4.2, Derived forecast based on all ensemble members at a horizontal level or in a horizontal layer at a point in time
 
-include "template.4.parameter.def";
-include "template.4.point_in_time.def";
-include "template.4.horizontal.def";
-include "template.4.derived.def";
+include "grib2/template.4.parameter.def";
+include "grib2/template.4.point_in_time.def";
+include "grib2/template.4.horizontal.def";
+include "grib2/template.4.derived.def";
diff --git a/definitions/grib2/template.4.20.def b/definitions/grib2/template.4.20.def
index 0c1a7c7..b8060e0 100644
--- a/definitions/grib2/template.4.20.def
+++ b/definitions/grib2/template.4.20.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.4.2000.def b/definitions/grib2/template.4.2000.def
index 84ff05c..438b279 100644
--- a/definitions/grib2/template.4.2000.def
+++ b/definitions/grib2/template.4.2000.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.4.254.def b/definitions/grib2/template.4.254.def
index aad2cb7..661be5d 100644
--- a/definitions/grib2/template.4.254.def
+++ b/definitions/grib2/template.4.254.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.4.3.def b/definitions/grib2/template.4.3.def
index c91c6ce..b3e500e 100644
--- a/definitions/grib2/template.4.3.def
+++ b/definitions/grib2/template.4.3.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,11 +9,11 @@
 
 # TEMPLATE 4.3, Derived forecasts based on a cluster of ensemble members over a rectangular area at a horizontal level or in a horizontal layer at a point in time
 
-include "template.4.parameter.def"
-include "template.4.point_in_time.def";
-include "template.4.horizontal.def"
-include "template.4.derived.def"
-include "template.4.rectangular_cluster.def"
+include "grib2/template.4.parameter.def"
+include "grib2/template.4.point_in_time.def";
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.derived.def"
+include "grib2/template.4.rectangular_cluster.def"
 
 ensembleForecastNumbersList list(numberOfForecastsInTheCluster) {
   unsigned[1] ensembleForecastNumbers : dump;
diff --git a/definitions/grib2/template.4.30.def b/definitions/grib2/template.4.30.def
index 7171c8e..8cb719e 100644
--- a/definitions/grib2/template.4.30.def
+++ b/definitions/grib2/template.4.30.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.4.31.def b/definitions/grib2/template.4.31.def
index 8eba305..3165a4e 100644
--- a/definitions/grib2/template.4.31.def
+++ b/definitions/grib2/template.4.31.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.4.311.def b/definitions/grib2/template.4.311.def
index 0a2107b..ba34826 100644
--- a/definitions/grib2/template.4.311.def
+++ b/definitions/grib2/template.4.311.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.4.32.def b/definitions/grib2/template.4.32.def
index 5aab7d1..9e0aa44 100644
--- a/definitions/grib2/template.4.32.def
+++ b/definitions/grib2/template.4.32.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -14,8 +14,8 @@ constant dataRepresentationType = 90;
 # START template.4.32 ----------------------------------------------------------------------
 # TEMPLATE 4.32, analysis or forecast at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data
 
-include "template.4.parameter.def"
-include "template.4.point_in_time.def";
+include "grib2/template.4.parameter.def"
+include "grib2/template.4.point_in_time.def";
 
 # Required for interpolation and MARS. The level type is used to decide whether to apply the Land Sea Mask
 constant typeOfLevel="surface";
diff --git a/definitions/grib2/template.4.33.def b/definitions/grib2/template.4.33.def
index dfa95a7..6b039ca 100644
--- a/definitions/grib2/template.4.33.def
+++ b/definitions/grib2/template.4.33.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,8 +9,8 @@
 
 # TEMPLATE 4.33, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data
 
-include "template.4.32.def"
-include "template.4.eps.def"
+include "grib2/template.4.32.def"
+include "grib2/template.4.eps.def"
 
 alias instrument = instrumentType;
 alias ident = satelliteNumber;
diff --git a/definitions/grib2/template.4.34.def b/definitions/grib2/template.4.34.def
index dbf6cc0..277c1df 100644
--- a/definitions/grib2/template.4.34.def
+++ b/definitions/grib2/template.4.34.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,9 +9,9 @@
 
 # TEMPLATE 4.34, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval for simulated (synthetic) satellite data
 
-include "template.4.32.def"
-include "template.4.eps.def"
-include "template.4.statistical.def"
+include "grib2/template.4.32.def"
+include "grib2/template.4.eps.def"
+include "grib2/template.4.statistical.def"
 
 alias instrument = instrumentType;
 alias ident = satelliteNumber;
diff --git a/definitions/grib2/template.4.4.def b/definitions/grib2/template.4.4.def
index f04cb1b..5ccbe13 100644
--- a/definitions/grib2/template.4.4.def
+++ b/definitions/grib2/template.4.4.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,11 +9,11 @@
 
 # TEMPLATE 4.4, Derived forecasts based on a cluster of ensemble members over a circular area at a horizontal level or in a horizontal layer at a point in time
 
-include "template.4.parameter.def"
-include "template.4.point_in_time.def";
-include "template.4.horizontal.def"
-include "template.4.derived.def"
-include "template.4.circular_cluster.def"
+include "grib2/template.4.parameter.def"
+include "grib2/template.4.point_in_time.def";
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.derived.def"
+include "grib2/template.4.circular_cluster.def"
 
 ensembleForecastNumbersList list(numberOfForecastsInTheCluster) {
   unsigned[1] ensembleForecastNumbers : dump;
diff --git a/definitions/grib2/template.4.40.def b/definitions/grib2/template.4.40.def
index 47868d5..7e0b0f1 100644
--- a/definitions/grib2/template.4.40.def
+++ b/definitions/grib2/template.4.40.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,6 +9,6 @@
 
 # TEMPLATE 4.40, Analysis or forecast at a horizontal level or in a horizontal layer at a point in time
 
-include "template.4.parameter_chemical.def";
-include "template.4.point_in_time.def";
-include "template.4.horizontal.def";
+include "grib2/template.4.parameter_chemical.def";
+include "grib2/template.4.point_in_time.def";
+include "grib2/template.4.horizontal.def";
diff --git a/definitions/grib2/template.4.40033.def b/definitions/grib2/template.4.40033.def
index 3410d5c..6b43213 100644
--- a/definitions/grib2/template.4.40033.def
+++ b/definitions/grib2/template.4.40033.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -10,4 +10,4 @@
 #
 # This is deprecated and only included for backward compatibility, use template 4.33
 #
-include "template.4.33.def"
+include "grib2/template.4.33.def"
diff --git a/definitions/grib2/template.4.40034.def b/definitions/grib2/template.4.40034.def
index 7a55811..554e29e 100644
--- a/definitions/grib2/template.4.40034.def
+++ b/definitions/grib2/template.4.40034.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -10,4 +10,4 @@
 #
 # This is deprecated and only included for backward compatibility, use template 4.34
 #
-include "template.4.34.def"
+include "grib2/template.4.34.def"
diff --git a/definitions/grib2/template.4.41.def b/definitions/grib2/template.4.41.def
index 875e55d..cc4ecc5 100644
--- a/definitions/grib2/template.4.41.def
+++ b/definitions/grib2/template.4.41.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 # TEMPLATE 4.41, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time
 
-include "template.4.parameter_chemical.def"
-include "template.4.point_in_time.def";
-include "template.4.horizontal.def"
-include "template.4.eps.def"
+include "grib2/template.4.parameter_chemical.def"
+include "grib2/template.4.point_in_time.def";
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.eps.def"
diff --git a/definitions/grib2/template.4.42.def b/definitions/grib2/template.4.42.def
index 9141fa7..a64d183 100644
--- a/definitions/grib2/template.4.42.def
+++ b/definitions/grib2/template.4.42.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,6 +9,6 @@
 
 # TEMPLATE 4.42, Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
 
-include "template.4.parameter_chemical.def"
-include "template.4.horizontal.def"
-include "template.4.statistical.def"
+include "grib2/template.4.parameter_chemical.def"
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.statistical.def"
diff --git a/definitions/grib2/template.4.43.def b/definitions/grib2/template.4.43.def
index fbd1bc1..d9b60d9 100644
--- a/definitions/grib2/template.4.43.def
+++ b/definitions/grib2/template.4.43.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 # TEMPLATE 4.43, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
 
-include "template.4.parameter_chemical.def"
-include "template.4.horizontal.def"
-include "template.4.eps.def"
-include "template.4.statistical.def"
+include "grib2/template.4.parameter_chemical.def"
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.eps.def"
+include "grib2/template.4.statistical.def"
diff --git a/definitions/grib2/template.4.44.def b/definitions/grib2/template.4.44.def
index 69a2f6f..0567e9f 100644
--- a/definitions/grib2/template.4.44.def
+++ b/definitions/grib2/template.4.44.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,10 +7,12 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-# TEMPLATE 4.44, Analysis or forecast at a horizontal level or in a horizontal layer at a point in time
+# TEMPLATE 4.44, Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for aerosol
+# It is recommended not to use this template. PDT 4.48 should be used instead with optical wave length range set to missing
 
 # GRIB-530: Special case for aerosol thanks to WMO error
-include "template.4.parameter_aerosol_44.def";
+include "grib2/template.4.parameter_aerosol_44.def";
+
+include "grib2/template.4.point_in_time.def";
+include "grib2/template.4.horizontal.def";
 
-include "template.4.point_in_time.def";
-include "template.4.horizontal.def";
diff --git a/definitions/grib2/template.4.45.def b/definitions/grib2/template.4.45.def
index 6fb746a..5bff7a3 100644
--- a/definitions/grib2/template.4.45.def
+++ b/definitions/grib2/template.4.45.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 # TEMPLATE 4.45, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for aerosol
 
-include "template.4.parameter_aerosol.def"
-include "template.4.point_in_time.def";
-include "template.4.horizontal.def"
-include "template.4.eps.def"
+include "grib2/template.4.parameter_aerosol.def"
+include "grib2/template.4.point_in_time.def";
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.eps.def"
diff --git a/definitions/grib2/template.4.46.def b/definitions/grib2/template.4.46.def
index 2583d3b..3894349 100644
--- a/definitions/grib2/template.4.46.def
+++ b/definitions/grib2/template.4.46.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,6 +9,6 @@
 
 # TEMPLATE 4.46, Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol
 
-include "template.4.parameter_aerosol.def"
-include "template.4.horizontal.def"
-include "template.4.statistical.def"
+include "grib2/template.4.parameter_aerosol.def"
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.statistical.def"
diff --git a/definitions/grib2/template.4.47.def b/definitions/grib2/template.4.47.def
index bb2f87f..e82692c 100644
--- a/definitions/grib2/template.4.47.def
+++ b/definitions/grib2/template.4.47.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 # TEMPLATE 4.47, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
 
-include "template.4.parameter_aerosol.def"
-include "template.4.horizontal.def"
-include "template.4.eps.def"
-include "template.4.statistical.def"
+include "grib2/template.4.parameter_aerosol.def"
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.eps.def"
+include "grib2/template.4.statistical.def"
diff --git a/definitions/grib2/template.4.48.def b/definitions/grib2/template.4.48.def
index e630450..616cff7 100644
--- a/definitions/grib2/template.4.48.def
+++ b/definitions/grib2/template.4.48.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,6 +9,6 @@
 
 # TEMPLATE 4.48, Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol
 
-include "template.4.parameter_aerosol_optical.def";
-include "template.4.point_in_time.def";
-include "template.4.horizontal.def";
+include "grib2/template.4.parameter_aerosol_optical.def";
+include "grib2/template.4.point_in_time.def";
+include "grib2/template.4.horizontal.def";
diff --git a/definitions/grib2/template.4.5.def b/definitions/grib2/template.4.5.def
index 85b1105..4c98c69 100644
--- a/definitions/grib2/template.4.5.def
+++ b/definitions/grib2/template.4.5.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 # TEMPLATE 4.5, Probability forecasts at a horizontal level or in a horizontal layer at a point in time
 
-include "template.4.parameter.def"
-include "template.4.point_in_time.def";
-include "template.4.horizontal.def"
-include "template.4.probability.def"
+include "grib2/template.4.parameter.def"
+include "grib2/template.4.point_in_time.def";
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.probability.def"
diff --git a/definitions/grib2/template.4.51.def b/definitions/grib2/template.4.51.def
index 884fcaf..6617565 100644
--- a/definitions/grib2/template.4.51.def
+++ b/definitions/grib2/template.4.51.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 # TEMPLATE 4.51, Categorical forecasts at a horizontal level or in a horizontal layer at a point in time
 
-include "template.4.parameter.def"
-include "template.4.point_in_time.def";
-include "template.4.horizontal.def"
-include "template.4.categorical.def"
+include "grib2/template.4.parameter.def"
+include "grib2/template.4.point_in_time.def";
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.categorical.def"
diff --git a/definitions/grib2/template.4.53.def b/definitions/grib2/template.4.53.def
index 5bee754..38f451f 100644
--- a/definitions/grib2/template.4.53.def
+++ b/definitions/grib2/template.4.53.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -8,9 +8,9 @@
 #
 # TEMPLATE 4.53, Partitioned parameters at a horizontal level or in a horizontal layer at a point in time
 
-include "template.4.parameter_partition.def"
-include "template.4.point_in_time.def";
-include "template.4.horizontal.def";
+include "grib2/template.4.parameter_partition.def"
+include "grib2/template.4.point_in_time.def";
+include "grib2/template.4.horizontal.def";
 constant cat="cat";
 alias mars.levtype=cat;
 alias mars.levelist=partitionNumber;
diff --git a/definitions/grib2/template.4.54.def b/definitions/grib2/template.4.54.def
index c1cf411..aa9db1b 100644
--- a/definitions/grib2/template.4.54.def
+++ b/definitions/grib2/template.4.54.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -8,8 +8,8 @@
 #
 # TEMPLATE 4.54, Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for partitioned parameters
 
-include "template.4.53.def"
-include "template.4.eps.def"
+include "grib2/template.4.53.def"
+include "grib2/template.4.eps.def"
 
 constant cat="cat";
 alias mars.levtype=cat;
diff --git a/definitions/grib2/template.4.55.def b/definitions/grib2/template.4.55.def
new file mode 100644
index 0000000..8139bda
--- /dev/null
+++ b/definitions/grib2/template.4.55.def
@@ -0,0 +1,12 @@
+# Copyright 2005-2016 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.
+#
+# TEMPLATE 4.55, spatio-temporal changing tiles at a horizontal level or horizontal layer at a point in time
+
+include "grib2/template.4.parameter_tile.def"
+include "grib2/template.4.horizontal.def"
diff --git a/definitions/grib2/template.4.56.def b/definitions/grib2/template.4.56.def
new file mode 100644
index 0000000..e4461f2
--- /dev/null
+++ b/definitions/grib2/template.4.56.def
@@ -0,0 +1,26 @@
+# Copyright 2005-2016 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.
+#
+# TEMPLATE 4.56, individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for spatio-temporal changing tile parameters
+
+include "grib2/template.4.parameter_tile.def"
+include "grib2/template.4.horizontal.def"
+
+# Note: This template is missing the entry:
+#  Type of ensemble forecast
+# which is present in all other templates with EPS info! Mistake by WMO?
+
+# So we cannot include the eps template due to this missing entry!
+# include "grib2/template.4.eps.def"
+# Have to manually define the keys
+unsigned[1] perturbationNumber  : dump;
+alias number=perturbationNumber;
+
+unsigned[1] numberOfForecastsInEnsemble  : dump;
+alias totalNumber=numberOfForecastsInEnsemble;
+
diff --git a/definitions/grib2/template.4.6.def b/definitions/grib2/template.4.6.def
index 3e5f79a..a038242 100644
--- a/definitions/grib2/template.4.6.def
+++ b/definitions/grib2/template.4.6.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 # TEMPLATE 4.6, Percentile forecasts at a horizontal level or in a horizontal layer at a point in time
 
-include "template.4.parameter.def"
-include "template.4.point_in_time.def";
-include "template.4.horizontal.def"
-include "template.4.percentile.def"
+include "grib2/template.4.parameter.def"
+include "grib2/template.4.point_in_time.def";
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.percentile.def"
diff --git a/definitions/grib2/template.4.60.def b/definitions/grib2/template.4.60.def
index 6fb148d..f94c8d9 100644
--- a/definitions/grib2/template.4.60.def
+++ b/definitions/grib2/template.4.60.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,8 +9,8 @@
 
 # TEMPLATE 4.60, Individual ensemble re-forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time
 
-include "template.4.parameter.def"
-include "template.4.point_in_time.def";
-include "template.4.horizontal.def"
-include "template.4.eps.def"
-include "template.4.reforecast.def"
+include "grib2/template.4.parameter.def"
+include "grib2/template.4.point_in_time.def";
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.eps.def"
+include "grib2/template.4.reforecast.def"
diff --git a/definitions/grib2/template.4.61.def b/definitions/grib2/template.4.61.def
index ab845fc..9218890 100644
--- a/definitions/grib2/template.4.61.def
+++ b/definitions/grib2/template.4.61.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,8 +9,8 @@
 
 # TEMPLATE 4.61, Individual ensemble re-forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
 
-include "template.4.parameter.def"
-include "template.4.horizontal.def"
-include "template.4.eps.def"
-include "template.4.reforecast.def"
-include "template.4.statistical.def"
+include "grib2/template.4.parameter.def"
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.eps.def"
+include "grib2/template.4.reforecast.def"
+include "grib2/template.4.statistical.def"
diff --git a/definitions/grib2/template.4.7.def b/definitions/grib2/template.4.7.def
index 930c41c..401b687 100644
--- a/definitions/grib2/template.4.7.def
+++ b/definitions/grib2/template.4.7.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -10,4 +10,5 @@
 # TEMPLATE 4.7, Analysis or forecast error at a horizontal level or in a horizontal layer at a point in time
 # Same as 4.0 Should not be used
 
-include "template.4.0.def" 
\ No newline at end of file
+include "grib2/template.4.0.def" 
+
diff --git a/definitions/grib2/template.4.8.def b/definitions/grib2/template.4.8.def
index b61a481..e2e8293 100644
--- a/definitions/grib2/template.4.8.def
+++ b/definitions/grib2/template.4.8.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,6 +9,6 @@
 
 # TEMPLATE 4.8, Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
 
-include "template.4.parameter.def"
-include "template.4.horizontal.def"
-include "template.4.statistical.def"
+include "grib2/template.4.parameter.def"
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.statistical.def"
diff --git a/definitions/grib2/template.4.9.def b/definitions/grib2/template.4.9.def
index 68fc245..4d617bd 100644
--- a/definitions/grib2/template.4.9.def
+++ b/definitions/grib2/template.4.9.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 # TEMPLATE 4.9, Probability forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
 
-include "template.4.parameter.def"
-include "template.4.horizontal.def"
-include "template.4.probability.def"
-include "template.4.statistical.def"
+include "grib2/template.4.parameter.def"
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.probability.def"
+include "grib2/template.4.statistical.def"
diff --git a/definitions/grib2/template.4.91.def b/definitions/grib2/template.4.91.def
index 3fcabf7..0b38c62 100644
--- a/definitions/grib2/template.4.91.def
+++ b/definitions/grib2/template.4.91.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 # TEMPLATE 4.91, Categorical forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval
 
-include "template.4.parameter.def"
-include "template.4.horizontal.def"
-include "template.4.categorical.def"
-include "template.4.statistical.def"
+include "grib2/template.4.parameter.def"
+include "grib2/template.4.horizontal.def"
+include "grib2/template.4.categorical.def"
+include "grib2/template.4.statistical.def"
diff --git a/definitions/grib2/template.4.categorical.def b/definitions/grib2/template.4.categorical.def
index 8254312..eafd697 100755
--- a/definitions/grib2/template.4.categorical.def
+++ b/definitions/grib2/template.4.categorical.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.4.circular_cluster.def b/definitions/grib2/template.4.circular_cluster.def
index d659ab2..4a95b0a 100755
--- a/definitions/grib2/template.4.circular_cluster.def
+++ b/definitions/grib2/template.4.circular_cluster.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.4.derived.def b/definitions/grib2/template.4.derived.def
index 1a365fe..985b0d2 100755
--- a/definitions/grib2/template.4.derived.def
+++ b/definitions/grib2/template.4.derived.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.4.eps.def b/definitions/grib2/template.4.eps.def
index ee3232a..482b22d 100644
--- a/definitions/grib2/template.4.eps.def
+++ b/definitions/grib2/template.4.eps.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.4.horizontal.def b/definitions/grib2/template.4.horizontal.def
index b3c5360..18a4847 100755
--- a/definitions/grib2/template.4.horizontal.def
+++ b/definitions/grib2/template.4.horizontal.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.4.parameter.def b/definitions/grib2/template.4.parameter.def
index ed54c42..d19502d 100644
--- a/definitions/grib2/template.4.parameter.def
+++ b/definitions/grib2/template.4.parameter.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -43,6 +43,6 @@ alias minutesAfterReferenceTimeOfDataCutoff=minutesAfterDataCutoff;
 codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir)  : dump;
 codetable[1] stepUnits 'stepUnits.table' = 1 : transient,dump,no_copy;
 
-#  Forecast time in units defined by octet 18
-unsigned[4] forecastTime  : dump;
+#  Forecast time in units defined by octet 18 (GRIB-29: supports negative forecast time)
+signed[4] forecastTime  : dump;
 
diff --git a/definitions/grib2/template.4.parameter_aerosol.def b/definitions/grib2/template.4.parameter_aerosol.def
index c1c9258..8c4e327 100644
--- a/definitions/grib2/template.4.parameter_aerosol.def
+++ b/definitions/grib2/template.4.parameter_aerosol.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -18,7 +18,7 @@ meta parameterUnits codetable_units(parameterNumber) : dump;
 meta parameterName  codetable_title(parameterNumber) : dump;
 
 # Atmospheric chemical or physical constitutent type
-codetable[2] aerosolType ('4.230.table',masterDir,localDir) : dump;
+codetable[2] aerosolType ('4.233.table',masterDir,localDir) : dump;
 
 codetable[1] typeOfSizeInterval ('4.91.table',masterDir,localDir) : dump;
 alias typeOfIntervalForFirstAndSecondSize=typeOfSizeInterval;
@@ -54,6 +54,6 @@ alias minutesAfterReferenceTimeOfDataCutoff=minutesAfterDataCutoff;
 codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir)  : dump;
 codetable[1] stepUnits 'stepUnits.table' = 1 : transient,dump,no_copy;
 
-#  Forecast time in units defined by octet 18
-unsigned[4] forecastTime  : dump;
+#  Forecast time in units defined by octet 18 (GRIB-29: supports negative forecast time)
+signed[4] forecastTime  : dump;
 
diff --git a/definitions/grib2/template.4.parameter_aerosol_44.def b/definitions/grib2/template.4.parameter_aerosol_44.def
index 5cd1290..34b9438 100644
--- a/definitions/grib2/template.4.parameter_aerosol_44.def
+++ b/definitions/grib2/template.4.parameter_aerosol_44.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -21,7 +21,7 @@ meta parameterUnits codetable_units(parameterNumber) : dump;
 meta parameterName  codetable_title(parameterNumber) : dump;
 
 # Atmospheric chemical or physical constitutent type
-codetable[2] aerosolType ('4.230.table',masterDir,localDir) : dump;
+codetable[2] aerosolType ('4.233.table',masterDir,localDir) : dump;
 
 codetable[1] typeOfSizeInterval ('4.91.table',masterDir,localDir) : dump;
 alias typeOfIntervalForFirstAndSecondSize=typeOfSizeInterval;
@@ -69,7 +69,7 @@ if ( new() || (section4Length - 4*NV == 45) )
 }
 else
 {
-   # This is for existing gribs which were written with 4 octets
-   unsigned[4] forecastTime  : dump;
+   # This is for existing gribs which were written with 4 octets (GRIB-29: supports negative forecast time)
+   signed[4] forecastTime  : dump;
 }
 
diff --git a/definitions/grib2/template.4.parameter_aerosol_optical.def b/definitions/grib2/template.4.parameter_aerosol_optical.def
index 8c67d04..7b257ac 100644
--- a/definitions/grib2/template.4.parameter_aerosol_optical.def
+++ b/definitions/grib2/template.4.parameter_aerosol_optical.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -18,7 +18,7 @@ meta parameterUnits codetable_units(parameterNumber) : dump;
 meta parameterName  codetable_title(parameterNumber) : dump;
 
 # Atmospheric chemical or physical constitutent type
-codetable[2] aerosolType ('4.230.table',masterDir,localDir) : dump;
+codetable[2] aerosolType ('4.233.table',masterDir,localDir) : dump;
 
 codetable[1] typeOfSizeInterval ('4.91.table',masterDir,localDir) : dump;
 alias typeOfIntervalForFirstAndSecondSize=typeOfSizeInterval;
@@ -63,6 +63,6 @@ alias minutesAfterReferenceTimeOfDataCutoff=minutesAfterDataCutoff;
 codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir)  : dump;
 codetable[1] stepUnits 'stepUnits.table' = 1 : transient,dump,no_copy;
 
-#  Forecast time in units defined by octet 18
-unsigned[4] forecastTime  : dump;
+#  Forecast time in units defined by octet 18 (GRIB-29: supports negative forecast time)
+signed[4] forecastTime  : dump;
 
diff --git a/definitions/grib2/template.4.parameter_chemical.def b/definitions/grib2/template.4.parameter_chemical.def
index a8c274c..5a2b89c 100644
--- a/definitions/grib2/template.4.parameter_chemical.def
+++ b/definitions/grib2/template.4.parameter_chemical.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.4.parameter_partition.def b/definitions/grib2/template.4.parameter_partition.def
index 9d30245..4a7d4f9 100644
--- a/definitions/grib2/template.4.parameter_partition.def
+++ b/definitions/grib2/template.4.parameter_partition.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -50,6 +50,6 @@ alias minutesAfterReferenceTimeOfDataCutoff=minutesAfterDataCutoff;
 codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir)  : dump;
 codetable[1] stepUnits 'stepUnits.table' = 1 : transient,dump,no_copy;
 
-#  Forecast time in units defined by octet 18
-unsigned[4] forecastTime  : dump;
+#  Forecast time in units defined by octet 18 (GRIB-29: supports negative forecast time)
+signed[4] forecastTime  : dump;
 
diff --git a/definitions/grib2/template.4.parameter_tile.def b/definitions/grib2/template.4.parameter_tile.def
new file mode 100644
index 0000000..21f9261
--- /dev/null
+++ b/definitions/grib2/template.4.parameter_tile.def
@@ -0,0 +1,59 @@
+# Copyright 2005-2016 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.
+#
+
+label "Tile information";
+
+#  Parameter category
+codetable[1] parameterCategory ('4.1.[discipline:l].table',masterDir,localDir) : dump;
+
+#  Parameter number
+codetable[1] parameterNumber ('4.2.[discipline:l].[parameterCategory:l].table',masterDir,localDir)  : dump;
+meta parameterUnits codetable_units(parameterNumber) : dump;
+meta parameterName  codetable_title(parameterNumber) : dump;
+
+# Tile specifications
+codetable[1] tileClassification ('4.242.table',masterDir,localDir) : dump;
+unsigned[1]  totalNumberOfTileAttributePairs=1 : dump;
+unsigned[1]  numberOfUsedSpatialTiles=1 : dump;
+unsigned[1]  tileIndex : dump;
+unsigned[1]  numberOfUsedTileAttributes=1 : dump;
+codetable[1] attributeOfTile ('4.241.table',masterDir,localDir) : dump;
+alias NT=totalNumberOfTileAttributePairs;
+alias NUT=numberOfUsedSpatialTiles;
+alias ITN=tileIndex;
+alias NAT=numberOfUsedTileAttributes;
+
+#  Type of generating process
+codetable[1] typeOfGeneratingProcess ('4.3.table',masterDir,localDir) : dump;
+
+#  Background generating process identifier
+# (defined by originating centre)
+unsigned[1] backgroundProcess = 255 : edition_specific;
+alias backgroundGeneratingProcessIdentifier=backgroundProcess;
+
+
+#  Analysis or forecast generating processes identifier
+# (defined by originating centre)
+unsigned[1] generatingProcessIdentifier  : dump;
+
+#  Hours of observational data cut-off after reference time
+unsigned[2] hoursAfterDataCutoff =missing() : edition_specific,can_be_missing;
+alias hoursAfterReferenceTimeOfDataCutoff=hoursAfterDataCutoff;
+
+#  Minutes of observational data cut-off after reference time
+unsigned[1]  minutesAfterDataCutoff = missing() : edition_specific,can_be_missing;
+alias minutesAfterReferenceTimeOfDataCutoff=minutesAfterDataCutoff;
+
+#  Indicator of unit of time range
+codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir)  : dump;
+codetable[1] stepUnits 'stepUnits.table' = 1 : transient,dump,no_copy;
+
+#  Forecast time in units defined by octet 24
+signed[4] forecastTime  : dump;
+
diff --git a/definitions/grib2/template.4.percentile.def b/definitions/grib2/template.4.percentile.def
index 671168f..f020c31 100755
--- a/definitions/grib2/template.4.percentile.def
+++ b/definitions/grib2/template.4.percentile.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.4.point_in_time.def b/definitions/grib2/template.4.point_in_time.def
index 60e637a..3803cb0 100644
--- a/definitions/grib2/template.4.point_in_time.def
+++ b/definitions/grib2/template.4.point_in_time.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.4.probability.def b/definitions/grib2/template.4.probability.def
index d3297dc..09df81c 100755
--- a/definitions/grib2/template.4.probability.def
+++ b/definitions/grib2/template.4.probability.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.4.rectangular_cluster.def b/definitions/grib2/template.4.rectangular_cluster.def
index 1b8802d..e4abed8 100755
--- a/definitions/grib2/template.4.rectangular_cluster.def
+++ b/definitions/grib2/template.4.rectangular_cluster.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.4.statistical.def b/definitions/grib2/template.4.statistical.def
index 2321416..d982a1a 100644
--- a/definitions/grib2/template.4.statistical.def
+++ b/definitions/grib2/template.4.statistical.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.5.0.def b/definitions/grib2/template.5.0.def
index 5878750..e8a93c5 100644
--- a/definitions/grib2/template.5.0.def
+++ b/definitions/grib2/template.5.0.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,6 +9,6 @@
 
 # TEMPLATE 5.0, Grid point data - simple packing
 
-include "template.5.packing.def";
-include "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 1f43310..71f35e3 100644
--- a/definitions/grib2/template.5.1.def
+++ b/definitions/grib2/template.5.1.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -11,7 +11,7 @@
 # START 2/template.5.1 ----------------------------------------------------------------------
 # TEMPLATE 5.1, Matrix values at grid point -simple packing
 
-include "template.5.packing.def";
+include "grib2/template.5.packing.def";
 
 
 unsigned[1] matrixBitmapsPresent ;
diff --git a/definitions/grib2/template.5.2.def b/definitions/grib2/template.5.2.def
index adf232a..9a4a80b 100644
--- a/definitions/grib2/template.5.2.def
+++ b/definitions/grib2/template.5.2.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -11,8 +11,8 @@
 # START 2/template.5.2 ----------------------------------------------------------------------
 # TEMPLATE 5.2, Grid point data - complex packing
 
-include "template.5.packing.def";
-include "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 16ecb40..c81a47d 100644
--- a/definitions/grib2/template.5.3.def
+++ b/definitions/grib2/template.5.3.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -11,8 +11,8 @@
 # START 2/template.5.3 ----------------------------------------------------------------------
 # TEMPLATE 5.3, Grid point data - complex packing and spatial differencing
 
-include "template.5.packing.def";
-include "template.5.original_values.def";
+include "grib2/template.5.packing.def";
+include "grib2/template.5.original_values.def";
 
 
 #  Group splitting method used
diff --git a/definitions/grib2/template.5.4.def b/definitions/grib2/template.5.4.def
index 05c4752..2fedd7b 100644
--- a/definitions/grib2/template.5.4.def
+++ b/definitions/grib2/template.5.4.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.5.40.def b/definitions/grib2/template.5.40.def
index e301d40..f9a5f1e 100644
--- a/definitions/grib2/template.5.40.def
+++ b/definitions/grib2/template.5.40.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -10,8 +10,8 @@
 #Data Representation Template 5.40: 
 #Grid point data - JPEG 2000 Code Stream Format
 
-include "template.5.packing.def";
-include "template.5.original_values.def";
+include "grib2/template.5.packing.def";
+include "grib2/template.5.original_values.def";
 
 # Octet 22 : Type of Compression used. (see Code Table 5.40) 
 
diff --git a/definitions/grib2/template.5.40000.def b/definitions/grib2/template.5.40000.def
index a195f28..9a67b8d 100644
--- a/definitions/grib2/template.5.40000.def
+++ b/definitions/grib2/template.5.40000.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,4 +7,4 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-include "template.5.40.def"
\ No newline at end of file
+include "grib2/template.5.40.def"
\ No newline at end of file
diff --git a/definitions/grib2/template.5.40010.def b/definitions/grib2/template.5.40010.def
index 64fd3bc..45c8427 100644
--- a/definitions/grib2/template.5.40010.def
+++ b/definitions/grib2/template.5.40010.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,4 +7,4 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-include "template.5.41.def"
\ No newline at end of file
+include "grib2/template.5.41.def"
diff --git a/definitions/grib2/template.5.41.def b/definitions/grib2/template.5.41.def
index d93b0eb..ae18ee8 100644
--- a/definitions/grib2/template.5.41.def
+++ b/definitions/grib2/template.5.41.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,6 +9,6 @@
 
 # Grid point data - PNG  Code Stream Format SAME AS 5.40010 !!!!!!
 
-include "template.5.packing.def";
-include "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 a745d3f..21bcb3e 100644
--- a/definitions/grib2/template.5.42.def
+++ b/definitions/grib2/template.5.42.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,8 +9,8 @@
 
 # TEMPLATE 5.42, Grid point and spectral data - CCSDS
 
-include "template.5.packing.def";
-include "template.5.original_values.def";
+include "grib2/template.5.packing.def";
+include "grib2/template.5.original_values.def";
 
 unsigned[1] ccsdsFlags : dump;
 
diff --git a/definitions/grib2/template.5.50.def b/definitions/grib2/template.5.50.def
index e885ab5..a6b8cb2 100644
--- a/definitions/grib2/template.5.50.def
+++ b/definitions/grib2/template.5.50.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -8,7 +8,7 @@
 #
 
 # TEMPLATE 5.50, Spectral data - simple packing
-include "template.5.packing.def";
+include "grib2/template.5.packing.def";
 
 #  Real part of (0,0)                                                                
 ieeefloat realPartOf00 ;
diff --git a/definitions/grib2/template.5.50000.def b/definitions/grib2/template.5.50000.def
index ab2c9ab..b07c6d7 100644
--- a/definitions/grib2/template.5.50000.def
+++ b/definitions/grib2/template.5.50000.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -11,7 +11,7 @@
 
 # TEMPLATE 5.51, Spherical harmonics data - complex packing
 
-include "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.50001.def b/definitions/grib2/template.5.50001.def
index e1e8feb..2295e07 100755
--- a/definitions/grib2/template.5.50001.def
+++ b/definitions/grib2/template.5.50001.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.5.50002.def b/definitions/grib2/template.5.50002.def
index 1bd3ae5..647bf49 100755
--- a/definitions/grib2/template.5.50002.def
+++ b/definitions/grib2/template.5.50002.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.5.51.def b/definitions/grib2/template.5.51.def
index 3f29a28..d87cc37 100644
--- a/definitions/grib2/template.5.51.def
+++ b/definitions/grib2/template.5.51.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -11,7 +11,7 @@
 
 # TEMPLATE 5.51, Spherical harmonics data - complex packing
 
-include "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.6.def b/definitions/grib2/template.5.6.def
index 835eb17..f300418 100644
--- a/definitions/grib2/template.5.6.def
+++ b/definitions/grib2/template.5.6.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -11,7 +11,7 @@ label "grib 2 Section 5 template 5.6";
 # START 2/template.5.6 ----------------------------------------------------------------------
 # Grid point data - Simple packing with preprocessing
 
-include "template.5.packing.def";
+include "grib2/template.5.packing.def";
 
 codetable[1] typeOfPreProcessing   ('5.9.table',masterDir,localDir)  :edition_specific;
 ieeefloat   preProcessingParameter  : read_only;
diff --git a/definitions/grib2/template.5.61.def b/definitions/grib2/template.5.61.def
index 47a24c0..91690a5 100644
--- a/definitions/grib2/template.5.61.def
+++ b/definitions/grib2/template.5.61.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -12,7 +12,7 @@ label "grib 2 Section 5 template 5.61";
 # Grid point data - Simple packing with logarithmic preprocessing
 constant typeOfPreProcessing=1;
 
-include "template.5.packing.def";
+include "grib2/template.5.packing.def";
 
 ieeefloat   preProcessingParameter  : read_only;
 
diff --git a/definitions/grib2/template.5.original_values.def b/definitions/grib2/template.5.original_values.def
index ce65b26..e7d4038 100644
--- a/definitions/grib2/template.5.original_values.def
+++ b/definitions/grib2/template.5.original_values.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.5.packing.def b/definitions/grib2/template.5.packing.def
index 26030db..84610de 100755
--- a/definitions/grib2/template.5.packing.def
+++ b/definitions/grib2/template.5.packing.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.5.second_order.def b/definitions/grib2/template.5.second_order.def
index ecb3673..bd2216a 100644
--- a/definitions/grib2/template.5.second_order.def
+++ b/definitions/grib2/template.5.second_order.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.7.0.def b/definitions/grib2/template.7.0.def
index 81cff38..b09f4a4 100644
--- a/definitions/grib2/template.7.0.def
+++ b/definitions/grib2/template.7.0.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.7.1.def b/definitions/grib2/template.7.1.def
index 552d2fb..3d20c9a 100644
--- a/definitions/grib2/template.7.1.def
+++ b/definitions/grib2/template.7.1.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.7.2.def b/definitions/grib2/template.7.2.def
index 89565ad..53d812b 100644
--- a/definitions/grib2/template.7.2.def
+++ b/definitions/grib2/template.7.2.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.7.3.def b/definitions/grib2/template.7.3.def
index 591a23f..9cb1b5a 100644
--- a/definitions/grib2/template.7.3.def
+++ b/definitions/grib2/template.7.3.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.7.4.def b/definitions/grib2/template.7.4.def
index 10ca951..11b8ae5 100644
--- a/definitions/grib2/template.7.4.def
+++ b/definitions/grib2/template.7.4.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.7.40.def b/definitions/grib2/template.7.40.def
index 1819320..88001a6 100644
--- a/definitions/grib2/template.7.40.def
+++ b/definitions/grib2/template.7.40.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.7.40000.def b/definitions/grib2/template.7.40000.def
index 7313976..15901a1 100644
--- a/definitions/grib2/template.7.40000.def
+++ b/definitions/grib2/template.7.40000.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,4 +7,5 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-include "template.7.40.def"
\ No newline at end of file
+include "grib2/template.7.40.def"
+
diff --git a/definitions/grib2/template.7.40010.def b/definitions/grib2/template.7.40010.def
index d708487..1071d0e 100644
--- a/definitions/grib2/template.7.40010.def
+++ b/definitions/grib2/template.7.40010.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -7,4 +7,4 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-include "template.7.41.def"
\ No newline at end of file
+include "grib2/template.7.41.def"
\ No newline at end of file
diff --git a/definitions/grib2/template.7.41.def b/definitions/grib2/template.7.41.def
index ddc2f9a..5852248 100644
--- a/definitions/grib2/template.7.41.def
+++ b/definitions/grib2/template.7.41.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.7.42.def b/definitions/grib2/template.7.42.def
index f6ba650..a400349 100644
--- a/definitions/grib2/template.7.42.def
+++ b/definitions/grib2/template.7.42.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.7.50.def b/definitions/grib2/template.7.50.def
index 66221d2..1b2a175 100644
--- a/definitions/grib2/template.7.50.def
+++ b/definitions/grib2/template.7.50.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.7.50000.def b/definitions/grib2/template.7.50000.def
index ef78dcb..4d431d2 100644
--- a/definitions/grib2/template.7.50000.def
+++ b/definitions/grib2/template.7.50000.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.7.50001.def b/definitions/grib2/template.7.50001.def
index c048dae..deef3a1 100644
--- a/definitions/grib2/template.7.50001.def
+++ b/definitions/grib2/template.7.50001.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.7.50002.def b/definitions/grib2/template.7.50002.def
index 3a3b80c..305094e 100644
--- a/definitions/grib2/template.7.50002.def
+++ b/definitions/grib2/template.7.50002.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.7.51.def b/definitions/grib2/template.7.51.def
index 7d5169a..19483cb 100644
--- a/definitions/grib2/template.7.51.def
+++ b/definitions/grib2/template.7.51.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.7.6.def b/definitions/grib2/template.7.6.def
index 2542143..039a7e0 100644
--- a/definitions/grib2/template.7.6.def
+++ b/definitions/grib2/template.7.6.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.7.61.def b/definitions/grib2/template.7.61.def
index 2542143..039a7e0 100644
--- a/definitions/grib2/template.7.61.def
+++ b/definitions/grib2/template.7.61.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/template.7.second_order.def b/definitions/grib2/template.7.second_order.def
index d083af0..259b0b7 100644
--- a/definitions/grib2/template.7.second_order.def
+++ b/definitions/grib2/template.7.second_order.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/grib2/units.def b/definitions/grib2/units.def
index 25aeb5f..8760313 100644
--- a/definitions/grib2/units.def
+++ b/definitions/grib2/units.def
@@ -1,4 +1,4 @@
-# Automatically generated by create_def.pl from database param at grib-param-db-prod.ecmwf.int, do not edit
+# Automatically generated by ./create_def.pl, do not edit
 #Sea-ice cover
 '(0 - 1)' = {
 	 discipline = 10 ;
@@ -94,6 +94,14 @@
 	 parameterCategory = 6 ;
 	 parameterNumber = 32 ;
 	}
+#large scale precipitation
+'kg m**-2' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 54 ;
+	 typeOfStatisticalProcessing = 1 ;
+	 typeOfFirstFixedSurface = 1 ;
+	}
 #Snow depth
 'm' = {
 	 discipline = 0 ;
@@ -109,6 +117,8 @@
 	 scaledValueOfFirstFixedSurface = 10 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 typeOfStatisticalProcessing = 2 ;
+	 indicatorOfUnitForTimeRange = 1 ;
+	 lengthOfTimeRange = 3 ;
 	}
 #Relative humidity with respect to water
 '%' = {
@@ -140,6 +150,12 @@
 	 parameterCategory = 6 ;
 	 parameterNumber = 37 ;
 	}
+#Height of convective cloud top
+'m' = {
+	 discipline = 0 ;
+	 parameterCategory = 6 ;
+	 parameterNumber = 27 ;
+	}
 #Soil moisture top 20 cm
 'kg m**-3' = {
 	 discipline = 2 ;
@@ -202,6 +218,200 @@
 	 parameterCategory = 0 ;
 	 parameterNumber = 33 ;
 	}
+#Mean temperature tendency due to short-wave radiation
+'K s**-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 22 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean temperature tendency due to long-wave radiation
+'K s**-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 23 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean temperature tendency due to short-wave radiation, clear sky
+'K s**-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 24 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean temperature tendency due to long-wave radiation, clear sky
+'K s**-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 25 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean temperature tendency due to parametrisations
+'K s**-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 26 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean specific humidity tendency due to parametrisations
+'kg kg**-1 s**-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 108 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean eastward wind tendency due to parametrisations
+'m s**-2' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 39 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean northward wind tendency due to parametrisations
+'m s**-2' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 40 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean updraught mass flux
+'kg m**-2 s**-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 27 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean downdraught mass flux
+'kg m**-2 s**-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 28 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean updraught detrainment rate
+'kg m**-3 s**-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 29 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean downdraught detrainment rate
+'kg m**-3 s**-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 30 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean total precipitation flux
+'kg m**-2 s**-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 52 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Mean turbulent diffusion coefficient for heat
+'m**2 s**-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 20 ;
+	 typeOfStatisticalProcessing = 0 ;
+	}
+#Cross sectional area of flow in channel
+'m**2' = {
+	 discipline = 1 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 13 ;
+	}
+#Side flow into river channel
+'m**3 s**-1 m**-1' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 10 ;
+	}
+#Discharge from rivers or streams
+'m**3 s**-1' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 7 ;
+	}
+#River storage of water
+'m**3' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 11 ;
+	}
+#Floodplain storage of water
+'m**3' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 12 ;
+	}
+#Water fraction
+'(0 - 1)' = {
+	 discipline = 1 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 2 ;
+	}
+#Days since last observation
+'Integer' = {
+	 discipline = 0 ;
+	 parameterCategory = 191 ;
+	 parameterNumber = 3 ;
+	}
+#Frost index
+'K' = {
+	 discipline = 2 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 24 ;
+	}
+#Depth of water on soil surface
+'kg m**-2' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 13 ;
+	}
+#Upstream accumulated precipitation
+'kg m**-2' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 14 ;
+	}
+#Upstream accumulated snow melt
+'kg m**-2' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 15 ;
+	}
+#Snow depth at elevation bands
+'kg m**-2' = {
+	 discipline = 2 ;
+	 parameterCategory = 3 ;
+	 parameterNumber = 25 ;
+	}
+#Groundwater upper storage
+'kg m**-2' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 8 ;
+	}
+#Groundwater lower storage
+'kg m**-2' = {
+	 discipline = 1 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 9 ;
+	}
+#Apparent temperature
+'K' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 21 ;
+	}
+#Haines Index
+'Numeric' = {
+	 discipline = 2 ;
+	 parameterCategory = 4 ;
+	 parameterNumber = 2 ;
+	}
 #Cloudy brightness temperature
 'K' = {
 	 discipline = 3 ;
@@ -322,6 +532,12 @@
 	 parameterCategory = 0 ;
 	 parameterNumber = 1 ;
 	}
+#Virtual potential temperature
+'K' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 15 ;
+	}
 #Pseudo-adiabatic potential temperature
 'K' = {
 	 discipline = 0 ;
@@ -429,6 +645,8 @@
 	 typeOfStatisticalProcessing = 2 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
+	 indicatorOfUnitForTimeRange = 1 ;
+	 lengthOfTimeRange = 6 ;
 	}
 #Minimum temperature at 2 metres in the last 6 hours
 'K' = {
@@ -439,6 +657,8 @@
 	 typeOfFirstFixedSurface = 103 ;
 	 scaleFactorOfFirstFixedSurface = 0 ;
 	 scaledValueOfFirstFixedSurface = 2 ;
+	 indicatorOfUnitForTimeRange = 1 ;
+	 lengthOfTimeRange = 6 ;
 	}
 #Geopotential
 'm**2 s**-2' = {
@@ -647,14 +867,6 @@
 	 parameterNumber = 17 ;
 	 typeOfFirstFixedSurface = 1 ;
 	}
-#large scale precipitation
-'kg m**-2' = {
-	 discipline = 0 ;
-	 parameterCategory = 1 ;
-	 parameterNumber = 54 ;
-	 typeOfFirstFixedSurface = 1 ;
-	 typeOfStatisticalProcessing = 1 ;
-	}
 #Latent heat net flux
 'W m**-2' = {
 	 discipline = 0 ;
@@ -2065,6 +2277,12 @@
 	 parameterCategory = 1 ;
 	 parameterNumber = 1 ;
 	}
+#Geometric vertical velocity
+'m s**-1' = {
+	 discipline = 0 ;
+	 parameterCategory = 2 ;
+	 parameterNumber = 9 ;
+	}
 #Ice temperature
 'K' = {
 	 discipline = 10 ;
@@ -2113,12 +2331,6 @@
 	 parameterCategory = 3 ;
 	 parameterNumber = 7 ;
 	}
-#Virtual potential temperature
-'K' = {
-	 discipline = 0 ;
-	 parameterCategory = 0 ;
-	 parameterNumber = 15 ;
-	}
 #Maximum temperature
 'K' = {
 	 discipline = 0 ;
@@ -2498,7 +2710,7 @@
 	 parameterCategory = 0 ;
 	 parameterNumber = 22 ;
 	}
-#Soil Moisture for TIGGE
+#Soil Moisture
 'kg m**-3' = {
 	 discipline = 2 ;
 	 parameterCategory = 0 ;
@@ -2517,7 +2729,7 @@
 	 parameterCategory = 0 ;
 	 parameterNumber = 2 ;
 	}
-#Soil temperature for TIGGE
+#Soil Temperature
 'K' = {
 	 discipline = 2 ;
 	 parameterCategory = 0 ;
diff --git a/definitions/gts/boot.def b/definitions/gts/boot.def
index 4bc07b7..d91bf8b 100644
--- a/definitions/gts/boot.def
+++ b/definitions/gts/boot.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/installDefinitions.sh b/definitions/installDefinitions.sh
index 87145cf..5b0d55f 100755
--- a/definitions/installDefinitions.sh
+++ b/definitions/installDefinitions.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -53,7 +53,7 @@ fi
 echo checking definition files compatibility...
 for file in `find . -name '*.def' -print`
 do
-  ${grib_api_bin}/parser $file 
+  ${grib_api_bin}/codes_parser $file 
 done
 if [ $? != 0 ]
 then
diff --git a/definitions/mars/class.table b/definitions/mars/class.table
index 41a54ef..8887b79 100644
--- a/definitions/mars/class.table
+++ b/definitions/mars/class.table
@@ -20,14 +20,15 @@
 19 mc MACC
 20 pe Permanent experiments
 21 em ERA-CLIM model integration for the 20th-century
-22 e2 ERA-CLIM pilot reanalysis of the 20th-century using surface observations only
-23 ea ERA-CLIM pilot reanalysis of the satellite era
-24 ep ERA-CLIM pilot reanalysis of the pre-satellite era
+22 e2 ERA-CLIM reanalysis of the 20th-century using surface observations only
+23 ea ERA5
+24 ep CERA-20C: ERA-CLIM2 coupled reanalysis of the 20th-century
 25 rm EURO4M
 26 nr NOAA/CIRES 20th Century Reanalysis version II
 27 s2 Sub-seasonal to seasonal prediction project (S2S)
 28 j5 Japanese 55 year Reanalysis (JRA55)
 29 ur UERRA
+30 et CERA-SAT: ERA-CLIM2 coupled reanalysis of the satellite era
 99 te Test
 100 at Austria
 101 be Belgium
diff --git a/definitions/mars/eswi/grib1.expr.3v.def b/definitions/mars/eswi/grib.expr.3v.def
similarity index 100%
rename from definitions/mars/eswi/grib1.expr.3v.def
rename to definitions/mars/eswi/grib.expr.3v.def
diff --git a/definitions/mars/eswi/grib1.expr.4v.def b/definitions/mars/eswi/grib.expr.4v.def
similarity index 100%
rename from definitions/mars/eswi/grib1.expr.4v.def
rename to definitions/mars/eswi/grib.expr.4v.def
diff --git a/definitions/mars/eswi/grib1.expr.an.def b/definitions/mars/eswi/grib.expr.an.def
similarity index 100%
rename from definitions/mars/eswi/grib1.expr.an.def
rename to definitions/mars/eswi/grib.expr.an.def
diff --git a/definitions/mars/eswi/grib1.expr.fc.def b/definitions/mars/eswi/grib.expr.fc.def
similarity index 100%
rename from definitions/mars/eswi/grib1.expr.fc.def
rename to definitions/mars/eswi/grib.expr.fc.def
diff --git a/definitions/mars/eswi/grib1.expr.si.def b/definitions/mars/eswi/grib.expr.si.def
similarity index 100%
rename from definitions/mars/eswi/grib1.expr.si.def
rename to definitions/mars/eswi/grib.expr.si.def
diff --git a/definitions/mars/eswi/grib1.mdfa.fc.def b/definitions/mars/eswi/grib.mdfa.fc.def
old mode 100755
new mode 100644
similarity index 100%
rename from definitions/mars/eswi/grib1.mdfa.fc.def
rename to definitions/mars/eswi/grib.mdfa.fc.def
diff --git a/definitions/mars/eswi/grib1.mnth.an.def b/definitions/mars/eswi/grib.mnth.an.def
old mode 100755
new mode 100644
similarity index 100%
rename from definitions/mars/eswi/grib1.mnth.an.def
rename to definitions/mars/eswi/grib.mnth.an.def
diff --git a/definitions/mars/eswi/grib1.mnth.fc.def b/definitions/mars/eswi/grib.mnth.fc.def
old mode 100755
new mode 100644
similarity index 100%
rename from definitions/mars/eswi/grib1.mnth.fc.def
rename to definitions/mars/eswi/grib.mnth.fc.def
diff --git a/definitions/mars/eswi/grib1.moda.an.def b/definitions/mars/eswi/grib.moda.an.def
old mode 100755
new mode 100644
similarity index 100%
rename from definitions/mars/eswi/grib1.moda.an.def
rename to definitions/mars/eswi/grib.moda.an.def
diff --git a/definitions/mars/eswi/grib1.moda.fc.def b/definitions/mars/eswi/grib.moda.fc.def
old mode 100755
new mode 100644
similarity index 100%
rename from definitions/mars/eswi/grib1.moda.fc.def
rename to definitions/mars/eswi/grib.moda.fc.def
diff --git a/definitions/mars/eswi/grib1.oper.3v.def b/definitions/mars/eswi/grib.oper.3v.def
old mode 100755
new mode 100644
similarity index 100%
rename from definitions/mars/eswi/grib1.oper.3v.def
rename to definitions/mars/eswi/grib.oper.3v.def
diff --git a/definitions/mars/eswi/grib1.oper.4v.def b/definitions/mars/eswi/grib.oper.4v.def
old mode 100755
new mode 100644
similarity index 100%
rename from definitions/mars/eswi/grib1.oper.4v.def
rename to definitions/mars/eswi/grib.oper.4v.def
diff --git a/definitions/mars/eswi/grib1.oper.an.def b/definitions/mars/eswi/grib.oper.an.def
old mode 100755
new mode 100644
similarity index 100%
rename from definitions/mars/eswi/grib1.oper.an.def
rename to definitions/mars/eswi/grib.oper.an.def
diff --git a/definitions/mars/eswi/grib1.oper.fc.def b/definitions/mars/eswi/grib.oper.fc.def
old mode 100755
new mode 100644
similarity index 100%
rename from definitions/mars/eswi/grib1.oper.fc.def
rename to definitions/mars/eswi/grib.oper.fc.def
diff --git a/definitions/mars/eswi/grib1.oper.si.def b/definitions/mars/eswi/grib.oper.si.def
old mode 100755
new mode 100644
similarity index 100%
rename from definitions/mars/eswi/grib1.oper.si.def
rename to definitions/mars/eswi/grib.oper.si.def
diff --git a/definitions/mars/grib1.amap.an.def b/definitions/mars/grib.amap.an.def
similarity index 100%
rename from definitions/mars/grib1.amap.an.def
rename to definitions/mars/grib.amap.an.def
diff --git a/definitions/mars/grib1.dacl.pb.def b/definitions/mars/grib.dacl.pb.def
similarity index 100%
rename from definitions/mars/grib1.dacl.pb.def
rename to definitions/mars/grib.dacl.pb.def
diff --git a/definitions/mars/grib1.dacw.pb.def b/definitions/mars/grib.dacw.pb.def
similarity index 100%
rename from definitions/mars/grib1.dacw.pb.def
rename to definitions/mars/grib.dacw.pb.def
diff --git a/definitions/mars/grib1.dcda.4i.def b/definitions/mars/grib.dcda.4i.def
similarity index 100%
rename from definitions/mars/grib1.dcda.4i.def
rename to definitions/mars/grib.dcda.4i.def
diff --git a/definitions/mars/grib.dcda.me.def b/definitions/mars/grib.dcda.me.def
new file mode 120000
index 0000000..3def55f
--- /dev/null
+++ b/definitions/mars/grib.dcda.me.def
@@ -0,0 +1 @@
+grib.me.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.dcda.sim.def b/definitions/mars/grib.dcda.sim.def
similarity index 100%
rename from definitions/mars/grib1.dcda.sim.def
rename to definitions/mars/grib.dcda.sim.def
diff --git a/definitions/mars/grib1.edmm.an.def b/definitions/mars/grib.edmm.an.def
similarity index 100%
rename from definitions/mars/grib1.edmm.an.def
rename to definitions/mars/grib.edmm.an.def
diff --git a/definitions/mars/grib1.edmm.cl.def b/definitions/mars/grib.edmm.cl.def
similarity index 100%
rename from definitions/mars/grib1.edmm.cl.def
rename to definitions/mars/grib.edmm.cl.def
diff --git a/definitions/mars/grib.edmm.fc.def b/definitions/mars/grib.edmm.fc.def
new file mode 100644
index 0000000..2f346c5
--- /dev/null
+++ b/definitions/mars/grib.edmm.fc.def
@@ -0,0 +1,22 @@
+# assert(local=1)
+meta verificationDate         g1verificationdate(dataDate, dataTime, endStep) : read_only;
+meta monthlyVerificationDate  g1monthlydate(verificationDate) : dump,no_copy;
+alias mars.date             = monthlyVerificationDate;
+
+# class e4
+# constant six = 6;
+
+# There was some forecast data produced incorrectly for stream=edmm with class=em
+# An exception is required for backward compatibility for the wrongly encoded data
+# See GRIB-422, GRIB-497, GRIB-833
+#
+if (class is "em" || class is "e2" || class is "ea" || class is "ep")
+{
+   alias mars.step = endStep;
+}
+else
+{
+   alias mars.step = startStep;
+}
+
+alias mars.number=perturbationNumber;
diff --git a/definitions/mars/grib1.edmm.fg.def b/definitions/mars/grib.edmm.fg.def
similarity index 100%
rename from definitions/mars/grib1.edmm.fg.def
rename to definitions/mars/grib.edmm.fg.def
diff --git a/definitions/mars/grib1.edmm.ia.def b/definitions/mars/grib.edmm.ia.def
similarity index 100%
rename from definitions/mars/grib1.edmm.ia.def
rename to definitions/mars/grib.edmm.ia.def
diff --git a/definitions/mars/grib1.edmm.ssd.def b/definitions/mars/grib.edmm.ssd.def
similarity index 100%
rename from definitions/mars/grib1.edmm.ssd.def
rename to definitions/mars/grib.edmm.ssd.def
diff --git a/definitions/mars/grib1.edmo.an.def b/definitions/mars/grib.edmo.an.def
similarity index 100%
rename from definitions/mars/grib1.edmo.an.def
rename to definitions/mars/grib.edmo.an.def
diff --git a/definitions/mars/grib1.edmo.cl.def b/definitions/mars/grib.edmo.cl.def
similarity index 100%
rename from definitions/mars/grib1.edmo.cl.def
rename to definitions/mars/grib.edmo.cl.def
diff --git a/definitions/mars/grib1.edmo.fc.def b/definitions/mars/grib.edmo.fc.def
similarity index 100%
rename from definitions/mars/grib1.edmo.fc.def
rename to definitions/mars/grib.edmo.fc.def
diff --git a/definitions/mars/grib1.edmo.ssd.def b/definitions/mars/grib.edmo.ssd.def
similarity index 100%
rename from definitions/mars/grib1.edmo.ssd.def
rename to definitions/mars/grib.edmo.ssd.def
diff --git a/definitions/mars/grib1.efhc.cf.def b/definitions/mars/grib.efhc.cf.def
similarity index 100%
rename from definitions/mars/grib1.efhc.cf.def
rename to definitions/mars/grib.efhc.cf.def
diff --git a/definitions/mars/grib1.efhc.icp.def b/definitions/mars/grib.efhc.icp.def
similarity index 100%
rename from definitions/mars/grib1.efhc.icp.def
rename to definitions/mars/grib.efhc.icp.def
diff --git a/definitions/mars/grib1.efhc.pf.def b/definitions/mars/grib.efhc.pf.def
similarity index 100%
rename from definitions/mars/grib1.efhc.pf.def
rename to definitions/mars/grib.efhc.pf.def
diff --git a/definitions/mars/grib1.efho.cf.def b/definitions/mars/grib.efho.cf.def
similarity index 100%
rename from definitions/mars/grib1.efho.cf.def
rename to definitions/mars/grib.efho.cf.def
diff --git a/definitions/mars/grib1.efho.pf.def b/definitions/mars/grib.efho.pf.def
similarity index 100%
rename from definitions/mars/grib1.efho.pf.def
rename to definitions/mars/grib.efho.pf.def
diff --git a/definitions/mars/grib1.efhs.cd.def b/definitions/mars/grib.efhs.cd.def
similarity index 100%
rename from definitions/mars/grib1.efhs.cd.def
rename to definitions/mars/grib.efhs.cd.def
diff --git a/definitions/mars/grib1.efhs.ed.def b/definitions/mars/grib.efhs.ed.def
similarity index 100%
rename from definitions/mars/grib1.efhs.ed.def
rename to definitions/mars/grib.efhs.ed.def
diff --git a/definitions/mars/grib1.efhs.em.def b/definitions/mars/grib.efhs.em.def
similarity index 100%
rename from definitions/mars/grib1.efhs.em.def
rename to definitions/mars/grib.efhs.em.def
diff --git a/definitions/mars/grib1.efhs.es.def b/definitions/mars/grib.efhs.es.def
similarity index 100%
rename from definitions/mars/grib1.efhs.es.def
rename to definitions/mars/grib.efhs.es.def
diff --git a/definitions/mars/grib1.efhs.taem.def b/definitions/mars/grib.efhs.taem.def
similarity index 100%
rename from definitions/mars/grib1.efhs.taem.def
rename to definitions/mars/grib.efhs.taem.def
diff --git a/definitions/mars/grib1.efhs.taes.def b/definitions/mars/grib.efhs.taes.def
similarity index 100%
rename from definitions/mars/grib1.efhs.taes.def
rename to definitions/mars/grib.efhs.taes.def
diff --git a/definitions/mars/grib1.efov.pf.def b/definitions/mars/grib.efov.pf.def
similarity index 100%
rename from definitions/mars/grib1.efov.pf.def
rename to definitions/mars/grib.efov.pf.def
diff --git a/definitions/mars/grib1.ehmm.em.def b/definitions/mars/grib.ehmm.em.def
similarity index 100%
rename from definitions/mars/grib1.ehmm.em.def
rename to definitions/mars/grib.ehmm.em.def
diff --git a/definitions/mars/grib1.elda.4i.def b/definitions/mars/grib.elda.4i.def
similarity index 100%
rename from definitions/mars/grib1.elda.4i.def
rename to definitions/mars/grib.elda.4i.def
diff --git a/definitions/mars/grib1.elda.4v.def b/definitions/mars/grib.elda.4v.def
similarity index 100%
rename from definitions/mars/grib1.elda.4v.def
rename to definitions/mars/grib.elda.4v.def
diff --git a/definitions/mars/grib1.elda.an.def b/definitions/mars/grib.elda.an.def
similarity index 100%
rename from definitions/mars/grib1.elda.an.def
rename to definitions/mars/grib.elda.an.def
diff --git a/definitions/mars/grib1.elda.ea.def b/definitions/mars/grib.elda.ea.def
similarity index 100%
rename from definitions/mars/grib1.elda.ea.def
rename to definitions/mars/grib.elda.ea.def
diff --git a/definitions/mars/grib1.elda.ef.def b/definitions/mars/grib.elda.ef.def
similarity index 100%
rename from definitions/mars/grib1.elda.ef.def
rename to definitions/mars/grib.elda.ef.def
diff --git a/definitions/mars/grib1.elda.em.def b/definitions/mars/grib.elda.em.def
similarity index 100%
rename from definitions/mars/grib1.elda.em.def
rename to definitions/mars/grib.elda.em.def
diff --git a/definitions/mars/grib1.elda.es.def b/definitions/mars/grib.elda.es.def
similarity index 100%
rename from definitions/mars/grib1.elda.es.def
rename to definitions/mars/grib.elda.es.def
diff --git a/definitions/mars/grib1.elda.fc.def b/definitions/mars/grib.elda.fc.def
similarity index 100%
rename from definitions/mars/grib1.elda.fc.def
rename to definitions/mars/grib.elda.fc.def
diff --git a/definitions/mars/grib1.elda.me.def b/definitions/mars/grib.elda.me.def
similarity index 100%
rename from definitions/mars/grib1.elda.me.def
rename to definitions/mars/grib.elda.me.def
diff --git a/definitions/mars/grib1.elda.ses.def b/definitions/mars/grib.elda.ses.def
similarity index 100%
rename from definitions/mars/grib1.elda.ses.def
rename to definitions/mars/grib.elda.ses.def
diff --git a/definitions/mars/grib.enda.4v.def b/definitions/mars/grib.enda.4v.def
new file mode 120000
index 0000000..347c47a
--- /dev/null
+++ b/definitions/mars/grib.enda.4v.def
@@ -0,0 +1 @@
+grib.enda.def
\ No newline at end of file
diff --git a/definitions/mars/grib.enda.an.def b/definitions/mars/grib.enda.an.def
new file mode 120000
index 0000000..347c47a
--- /dev/null
+++ b/definitions/mars/grib.enda.an.def
@@ -0,0 +1 @@
+grib.enda.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.enda.def b/definitions/mars/grib.enda.def
similarity index 100%
rename from definitions/mars/grib1.enda.def
rename to definitions/mars/grib.enda.def
diff --git a/definitions/mars/grib.enda.ea.def b/definitions/mars/grib.enda.ea.def
new file mode 120000
index 0000000..347c47a
--- /dev/null
+++ b/definitions/mars/grib.enda.ea.def
@@ -0,0 +1 @@
+grib.enda.def
\ No newline at end of file
diff --git a/definitions/mars/grib.enda.ef.def b/definitions/mars/grib.enda.ef.def
new file mode 120000
index 0000000..347c47a
--- /dev/null
+++ b/definitions/mars/grib.enda.ef.def
@@ -0,0 +1 @@
+grib.enda.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.enda.em.def b/definitions/mars/grib.enda.em.def
similarity index 100%
rename from definitions/mars/grib1.enda.em.def
rename to definitions/mars/grib.enda.em.def
diff --git a/definitions/mars/grib1.enda.es.def b/definitions/mars/grib.enda.es.def
similarity index 100%
rename from definitions/mars/grib1.enda.es.def
rename to definitions/mars/grib.enda.es.def
diff --git a/definitions/mars/grib1.enda.fc.def b/definitions/mars/grib.enda.fc.def
similarity index 100%
rename from definitions/mars/grib1.enda.fc.def
rename to definitions/mars/grib.enda.fc.def
diff --git a/definitions/mars/grib1.enda.ssd.def b/definitions/mars/grib.enda.ssd.def
similarity index 100%
rename from definitions/mars/grib1.enda.ssd.def
rename to definitions/mars/grib.enda.ssd.def
diff --git a/definitions/mars/grib.enda.sv.def b/definitions/mars/grib.enda.sv.def
new file mode 120000
index 0000000..347c47a
--- /dev/null
+++ b/definitions/mars/grib.enda.sv.def
@@ -0,0 +1 @@
+grib.enda.def
\ No newline at end of file
diff --git a/definitions/mars/grib.enda.svar.def b/definitions/mars/grib.enda.svar.def
new file mode 120000
index 0000000..347c47a
--- /dev/null
+++ b/definitions/mars/grib.enda.svar.def
@@ -0,0 +1 @@
+grib.enda.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.enfh.cf.def b/definitions/mars/grib.enfh.cf.def
similarity index 100%
rename from definitions/mars/grib1.enfh.cf.def
rename to definitions/mars/grib.enfh.cf.def
diff --git a/definitions/mars/grib1.enfh.fcmax.def b/definitions/mars/grib.enfh.fcmax.def
similarity index 100%
rename from definitions/mars/grib1.enfh.fcmax.def
rename to definitions/mars/grib.enfh.fcmax.def
diff --git a/definitions/mars/grib1.enfh.fcmean.def b/definitions/mars/grib.enfh.fcmean.def
similarity index 100%
rename from definitions/mars/grib1.enfh.fcmean.def
rename to definitions/mars/grib.enfh.fcmean.def
diff --git a/definitions/mars/grib1.enfh.fcmin.def b/definitions/mars/grib.enfh.fcmin.def
similarity index 100%
rename from definitions/mars/grib1.enfh.fcmin.def
rename to definitions/mars/grib.enfh.fcmin.def
diff --git a/definitions/mars/grib1.enfh.fcstdev.def b/definitions/mars/grib.enfh.fcstdev.def
similarity index 100%
rename from definitions/mars/grib1.enfh.fcstdev.def
rename to definitions/mars/grib.enfh.fcstdev.def
diff --git a/definitions/mars/grib1.enfh.ff.def b/definitions/mars/grib.enfh.ff.def
similarity index 100%
rename from definitions/mars/grib1.enfh.ff.def
rename to definitions/mars/grib.enfh.ff.def
diff --git a/definitions/mars/grib1.enfh.icp.def b/definitions/mars/grib.enfh.icp.def
similarity index 100%
rename from definitions/mars/grib1.enfh.icp.def
rename to definitions/mars/grib.enfh.icp.def
diff --git a/definitions/mars/grib1.enfh.pf.def b/definitions/mars/grib.enfh.pf.def
similarity index 100%
rename from definitions/mars/grib1.enfh.pf.def
rename to definitions/mars/grib.enfh.pf.def
diff --git a/definitions/mars/grib1.enfh.tims.def b/definitions/mars/grib.enfh.tims.def
similarity index 100%
rename from definitions/mars/grib1.enfh.tims.def
rename to definitions/mars/grib.enfh.tims.def
diff --git a/definitions/mars/grib1.enfo.cf.def b/definitions/mars/grib.enfo.cf.def
similarity index 100%
rename from definitions/mars/grib1.enfo.cf.def
rename to definitions/mars/grib.enfo.cf.def
diff --git a/definitions/mars/grib1.enfo.ci.def b/definitions/mars/grib.enfo.ci.def
similarity index 100%
rename from definitions/mars/grib1.enfo.ci.def
rename to definitions/mars/grib.enfo.ci.def
diff --git a/definitions/mars/grib1.enfo.cm.def b/definitions/mars/grib.enfo.cm.def
similarity index 100%
rename from definitions/mars/grib1.enfo.cm.def
rename to definitions/mars/grib.enfo.cm.def
diff --git a/definitions/mars/grib1.enfo.cr.def b/definitions/mars/grib.enfo.cr.def
similarity index 100%
rename from definitions/mars/grib1.enfo.cr.def
rename to definitions/mars/grib.enfo.cr.def
diff --git a/definitions/mars/grib1.enfo.cs.def b/definitions/mars/grib.enfo.cs.def
similarity index 100%
rename from definitions/mars/grib1.enfo.cs.def
rename to definitions/mars/grib.enfo.cs.def
diff --git a/definitions/mars/grib1.enfo.cv.def b/definitions/mars/grib.enfo.cv.def
similarity index 100%
rename from definitions/mars/grib1.enfo.cv.def
rename to definitions/mars/grib.enfo.cv.def
diff --git a/definitions/mars/grib1.enfo.ed.def b/definitions/mars/grib.enfo.ed.def
similarity index 100%
rename from definitions/mars/grib1.enfo.ed.def
rename to definitions/mars/grib.enfo.ed.def
diff --git a/definitions/mars/grib1.enfo.ef.def b/definitions/mars/grib.enfo.ef.def
similarity index 100%
rename from definitions/mars/grib1.enfo.ef.def
rename to definitions/mars/grib.enfo.ef.def
diff --git a/definitions/mars/grib1.enfo.efi.def b/definitions/mars/grib.enfo.efi.def
similarity index 100%
rename from definitions/mars/grib1.enfo.efi.def
rename to definitions/mars/grib.enfo.efi.def
diff --git a/definitions/mars/grib1.enfo.efic.def b/definitions/mars/grib.enfo.efic.def
similarity index 100%
rename from definitions/mars/grib1.enfo.efic.def
rename to definitions/mars/grib.enfo.efic.def
diff --git a/definitions/mars/grib1.enfo.em.def b/definitions/mars/grib.enfo.em.def
similarity index 100%
rename from definitions/mars/grib1.enfo.em.def
rename to definitions/mars/grib.enfo.em.def
diff --git a/definitions/mars/grib1.enfo.ep.def b/definitions/mars/grib.enfo.ep.def
similarity index 100%
rename from definitions/mars/grib1.enfo.ep.def
rename to definitions/mars/grib.enfo.ep.def
diff --git a/definitions/mars/grib1.enfo.es.def b/definitions/mars/grib.enfo.es.def
similarity index 100%
rename from definitions/mars/grib1.enfo.es.def
rename to definitions/mars/grib.enfo.es.def
diff --git a/definitions/mars/grib1.enfo.fc.def b/definitions/mars/grib.enfo.fc.def
similarity index 100%
rename from definitions/mars/grib1.enfo.fc.def
rename to definitions/mars/grib.enfo.fc.def
diff --git a/definitions/mars/grib1.enfo.fcmax.def b/definitions/mars/grib.enfo.fcmax.def
similarity index 100%
rename from definitions/mars/grib1.enfo.fcmax.def
rename to definitions/mars/grib.enfo.fcmax.def
diff --git a/definitions/mars/grib1.enfo.fcmean.def b/definitions/mars/grib.enfo.fcmean.def
similarity index 100%
rename from definitions/mars/grib1.enfo.fcmean.def
rename to definitions/mars/grib.enfo.fcmean.def
diff --git a/definitions/mars/grib1.enfo.fcmin.def b/definitions/mars/grib.enfo.fcmin.def
similarity index 100%
rename from definitions/mars/grib1.enfo.fcmin.def
rename to definitions/mars/grib.enfo.fcmin.def
diff --git a/definitions/mars/grib1.enfo.fcstdev.def b/definitions/mars/grib.enfo.fcstdev.def
similarity index 100%
rename from definitions/mars/grib1.enfo.fcstdev.def
rename to definitions/mars/grib.enfo.fcstdev.def
diff --git a/definitions/mars/grib1.enfo.ff.def b/definitions/mars/grib.enfo.ff.def
similarity index 100%
rename from definitions/mars/grib1.enfo.ff.def
rename to definitions/mars/grib.enfo.ff.def
diff --git a/definitions/mars/grib1.enfo.fp.def b/definitions/mars/grib.enfo.fp.def
similarity index 100%
rename from definitions/mars/grib1.enfo.fp.def
rename to definitions/mars/grib.enfo.fp.def
diff --git a/definitions/mars/grib1.enfo.icp.def b/definitions/mars/grib.enfo.icp.def
similarity index 100%
rename from definitions/mars/grib1.enfo.icp.def
rename to definitions/mars/grib.enfo.icp.def
diff --git a/definitions/mars/grib1.enfo.pb.def b/definitions/mars/grib.enfo.pb.def
similarity index 100%
rename from definitions/mars/grib1.enfo.pb.def
rename to definitions/mars/grib.enfo.pb.def
diff --git a/definitions/mars/grib1.enfo.pd.def b/definitions/mars/grib.enfo.pd.def
similarity index 100%
rename from definitions/mars/grib1.enfo.pd.def
rename to definitions/mars/grib.enfo.pd.def
diff --git a/definitions/mars/grib1.enfo.pf.def b/definitions/mars/grib.enfo.pf.def
similarity index 100%
rename from definitions/mars/grib1.enfo.pf.def
rename to definitions/mars/grib.enfo.pf.def
diff --git a/definitions/mars/grib1.enfo.sot.def b/definitions/mars/grib.enfo.sot.def
similarity index 100%
rename from definitions/mars/grib1.enfo.sot.def
rename to definitions/mars/grib.enfo.sot.def
diff --git a/definitions/mars/grib1.enfo.sv.def b/definitions/mars/grib.enfo.sv.def
similarity index 100%
rename from definitions/mars/grib1.enfo.sv.def
rename to definitions/mars/grib.enfo.sv.def
diff --git a/definitions/mars/grib1.enfo.svar.def b/definitions/mars/grib.enfo.svar.def
similarity index 100%
rename from definitions/mars/grib1.enfo.svar.def
rename to definitions/mars/grib.enfo.svar.def
diff --git a/definitions/mars/grib1.enfo.taem.def b/definitions/mars/grib.enfo.taem.def
similarity index 100%
rename from definitions/mars/grib1.enfo.taem.def
rename to definitions/mars/grib.enfo.taem.def
diff --git a/definitions/mars/grib1.enfo.taes.def b/definitions/mars/grib.enfo.taes.def
similarity index 100%
rename from definitions/mars/grib1.enfo.taes.def
rename to definitions/mars/grib.enfo.taes.def
diff --git a/definitions/mars/grib1.enfo.tu.def b/definitions/mars/grib.enfo.tu.def
similarity index 100%
rename from definitions/mars/grib1.enfo.tu.def
rename to definitions/mars/grib.enfo.tu.def
diff --git a/definitions/mars/grib1.enwh.cf.def b/definitions/mars/grib.enwh.cf.def
similarity index 100%
rename from definitions/mars/grib1.enwh.cf.def
rename to definitions/mars/grib.enwh.cf.def
diff --git a/definitions/mars/grib1.enwh.fcmax.def b/definitions/mars/grib.enwh.fcmax.def
similarity index 100%
rename from definitions/mars/grib1.enwh.fcmax.def
rename to definitions/mars/grib.enwh.fcmax.def
diff --git a/definitions/mars/grib1.enwh.fcmean.def b/definitions/mars/grib.enwh.fcmean.def
similarity index 100%
rename from definitions/mars/grib1.enwh.fcmean.def
rename to definitions/mars/grib.enwh.fcmean.def
diff --git a/definitions/mars/grib1.enwh.fcmin.def b/definitions/mars/grib.enwh.fcmin.def
similarity index 100%
rename from definitions/mars/grib1.enwh.fcmin.def
rename to definitions/mars/grib.enwh.fcmin.def
diff --git a/definitions/mars/grib1.enwh.fcstdev.def b/definitions/mars/grib.enwh.fcstdev.def
similarity index 100%
rename from definitions/mars/grib1.enwh.fcstdev.def
rename to definitions/mars/grib.enwh.fcstdev.def
diff --git a/definitions/mars/grib1.enwh.pf.def b/definitions/mars/grib.enwh.pf.def
similarity index 100%
rename from definitions/mars/grib1.enwh.pf.def
rename to definitions/mars/grib.enwh.pf.def
diff --git a/definitions/mars/grib1.esmm.em.def b/definitions/mars/grib.esmm.em.def
similarity index 100%
rename from definitions/mars/grib1.esmm.em.def
rename to definitions/mars/grib.esmm.em.def
diff --git a/definitions/mars/grib1.espd.an.def b/definitions/mars/grib.espd.an.def
similarity index 100%
rename from definitions/mars/grib1.espd.an.def
rename to definitions/mars/grib.espd.an.def
diff --git a/definitions/mars/grib.ewda.4v.def b/definitions/mars/grib.ewda.4v.def
new file mode 120000
index 0000000..844ff2f
--- /dev/null
+++ b/definitions/mars/grib.ewda.4v.def
@@ -0,0 +1 @@
+grib.ewda.def
\ No newline at end of file
diff --git a/definitions/mars/grib.ewda.an.def b/definitions/mars/grib.ewda.an.def
new file mode 120000
index 0000000..844ff2f
--- /dev/null
+++ b/definitions/mars/grib.ewda.an.def
@@ -0,0 +1 @@
+grib.ewda.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.ewda.def b/definitions/mars/grib.ewda.def
similarity index 100%
rename from definitions/mars/grib1.ewda.def
rename to definitions/mars/grib.ewda.def
diff --git a/definitions/mars/grib.ewda.fc.def b/definitions/mars/grib.ewda.fc.def
new file mode 120000
index 0000000..844ff2f
--- /dev/null
+++ b/definitions/mars/grib.ewda.fc.def
@@ -0,0 +1 @@
+grib.ewda.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.ewhc.cf.def b/definitions/mars/grib.ewhc.cf.def
similarity index 100%
rename from definitions/mars/grib1.ewhc.cf.def
rename to definitions/mars/grib.ewhc.cf.def
diff --git a/definitions/mars/grib1.ewhc.pf.def b/definitions/mars/grib.ewhc.pf.def
similarity index 100%
rename from definitions/mars/grib1.ewhc.pf.def
rename to definitions/mars/grib.ewhc.pf.def
diff --git a/definitions/mars/grib1.ewho.cf.def b/definitions/mars/grib.ewho.cf.def
similarity index 100%
rename from definitions/mars/grib1.ewho.cf.def
rename to definitions/mars/grib.ewho.cf.def
diff --git a/definitions/mars/grib1.ewho.pf.def b/definitions/mars/grib.ewho.pf.def
similarity index 100%
rename from definitions/mars/grib1.ewho.pf.def
rename to definitions/mars/grib.ewho.pf.def
diff --git a/definitions/mars/grib1.ewla.4v.def b/definitions/mars/grib.ewla.4v.def
similarity index 100%
rename from definitions/mars/grib1.ewla.4v.def
rename to definitions/mars/grib.ewla.4v.def
diff --git a/definitions/mars/grib1.ewla.an.def b/definitions/mars/grib.ewla.an.def
similarity index 100%
rename from definitions/mars/grib1.ewla.an.def
rename to definitions/mars/grib.ewla.an.def
diff --git a/definitions/mars/grib1.ewla.fc.def b/definitions/mars/grib.ewla.fc.def
similarity index 100%
rename from definitions/mars/grib1.ewla.fc.def
rename to definitions/mars/grib.ewla.fc.def
diff --git a/definitions/mars/grib1.ewmm.an.def b/definitions/mars/grib.ewmm.an.def
similarity index 100%
rename from definitions/mars/grib1.ewmm.an.def
rename to definitions/mars/grib.ewmm.an.def
diff --git a/definitions/mars/grib1.ewmm.cl.def b/definitions/mars/grib.ewmm.cl.def
similarity index 100%
rename from definitions/mars/grib1.ewmm.cl.def
rename to definitions/mars/grib.ewmm.cl.def
diff --git a/definitions/mars/grib.ewmm.fc.def b/definitions/mars/grib.ewmm.fc.def
new file mode 100644
index 0000000..726b323
--- /dev/null
+++ b/definitions/mars/grib.ewmm.fc.def
@@ -0,0 +1,18 @@
+# assert(local=1)
+meta verificationDate         g1verificationdate(dataDate, dataTime, endStep) : read_only;
+meta monthlyVerificationDate  g1monthlydate(verificationDate) : dump,no_copy;
+alias mars.date             = monthlyVerificationDate;
+
+#
+# See GRIB-422, GRIB-497, GRIB-766, GRIB-833
+#
+if (class is "em" || class is "e2" || class is "ea" || class is "ep")
+{
+   alias mars.step = endStep;
+}
+else
+{
+   alias mars.step = startStep;
+}
+
+alias mars.number=perturbationNumber;
diff --git a/definitions/mars/grib1.ewmo.an.def b/definitions/mars/grib.ewmo.an.def
similarity index 100%
rename from definitions/mars/grib1.ewmo.an.def
rename to definitions/mars/grib.ewmo.an.def
diff --git a/definitions/mars/grib1.ewmo.cl.def b/definitions/mars/grib.ewmo.cl.def
similarity index 100%
rename from definitions/mars/grib1.ewmo.cl.def
rename to definitions/mars/grib.ewmo.cl.def
diff --git a/definitions/mars/grib1.ewmo.def b/definitions/mars/grib.ewmo.def
similarity index 100%
rename from definitions/mars/grib1.ewmo.def
rename to definitions/mars/grib.ewmo.def
diff --git a/definitions/mars/grib1.ewmo.fc.def b/definitions/mars/grib.ewmo.fc.def
similarity index 100%
rename from definitions/mars/grib1.ewmo.fc.def
rename to definitions/mars/grib.ewmo.fc.def
diff --git a/definitions/mars/grib1.gfas.ga.def b/definitions/mars/grib.gfas.ga.def
similarity index 100%
rename from definitions/mars/grib1.gfas.ga.def
rename to definitions/mars/grib.gfas.ga.def
diff --git a/definitions/mars/grib1.gfas.gsd.def b/definitions/mars/grib.gfas.gsd.def
similarity index 100%
rename from definitions/mars/grib1.gfas.gsd.def
rename to definitions/mars/grib.gfas.gsd.def
diff --git a/definitions/mars/grib1.kwbc.pf.def b/definitions/mars/grib.kwbc.pf.def
similarity index 100%
rename from definitions/mars/grib1.kwbc.pf.def
rename to definitions/mars/grib.kwbc.pf.def
diff --git a/definitions/mars/grib1.lwda.4i.def b/definitions/mars/grib.lwda.4i.def
similarity index 100%
rename from definitions/mars/grib1.lwda.4i.def
rename to definitions/mars/grib.lwda.4i.def
diff --git a/definitions/mars/grib1.lwda.4v.def b/definitions/mars/grib.lwda.4v.def
similarity index 100%
rename from definitions/mars/grib1.lwda.4v.def
rename to definitions/mars/grib.lwda.4v.def
diff --git a/definitions/mars/grib1.lwda.an.def b/definitions/mars/grib.lwda.an.def
similarity index 100%
rename from definitions/mars/grib1.lwda.an.def
rename to definitions/mars/grib.lwda.an.def
diff --git a/definitions/mars/grib1.lwda.ea.def b/definitions/mars/grib.lwda.ea.def
similarity index 100%
rename from definitions/mars/grib1.lwda.ea.def
rename to definitions/mars/grib.lwda.ea.def
diff --git a/definitions/mars/grib1.lwda.ef.def b/definitions/mars/grib.lwda.ef.def
similarity index 100%
rename from definitions/mars/grib1.lwda.ef.def
rename to definitions/mars/grib.lwda.ef.def
diff --git a/definitions/mars/grib1.lwda.fc.def b/definitions/mars/grib.lwda.fc.def
similarity index 100%
rename from definitions/mars/grib1.lwda.fc.def
rename to definitions/mars/grib.lwda.fc.def
diff --git a/definitions/mars/grib1.lwda.me.def b/definitions/mars/grib.lwda.me.def
similarity index 100%
rename from definitions/mars/grib1.lwda.me.def
rename to definitions/mars/grib.lwda.me.def
diff --git a/definitions/mars/grib.lwda.ssd.def b/definitions/mars/grib.lwda.ssd.def
new file mode 100644
index 0000000..cfb9169
--- /dev/null
+++ b/definitions/mars/grib.lwda.ssd.def
@@ -0,0 +1,5 @@
+alias mars.step = endStep;
+alias mars.anoffset=offsetToEndOf4DvarWindow;
+
+alias mars.instrument = instrumentType;
+alias mars.ident = satelliteNumber;
diff --git a/definitions/mars/grib1.lwwv.4v.def b/definitions/mars/grib.lwwv.4v.def
similarity index 100%
rename from definitions/mars/grib1.lwwv.4v.def
rename to definitions/mars/grib.lwwv.4v.def
diff --git a/definitions/mars/grib1.lwwv.an.def b/definitions/mars/grib.lwwv.an.def
similarity index 100%
rename from definitions/mars/grib1.lwwv.an.def
rename to definitions/mars/grib.lwwv.an.def
diff --git a/definitions/mars/grib1.lwwv.fc.def b/definitions/mars/grib.lwwv.fc.def
similarity index 100%
rename from definitions/mars/grib1.lwwv.fc.def
rename to definitions/mars/grib.lwwv.fc.def
diff --git a/definitions/mars/grib1.maed.an.def b/definitions/mars/grib.maed.an.def
similarity index 100%
rename from definitions/mars/grib1.maed.an.def
rename to definitions/mars/grib.maed.an.def
diff --git a/definitions/mars/grib1.maed.fc.def b/definitions/mars/grib.maed.fc.def
similarity index 100%
rename from definitions/mars/grib1.maed.fc.def
rename to definitions/mars/grib.maed.fc.def
diff --git a/definitions/mars/grib1.mawv.fc.def b/definitions/mars/grib.mawv.fc.def
similarity index 100%
rename from definitions/mars/grib1.mawv.fc.def
rename to definitions/mars/grib.mawv.fc.def
diff --git a/definitions/mars/grib1.mdfa.fc.def b/definitions/mars/grib.mdfa.fc.def
similarity index 100%
rename from definitions/mars/grib1.mdfa.fc.def
rename to definitions/mars/grib.mdfa.fc.def
diff --git a/definitions/mars/grib1.me.def b/definitions/mars/grib.me.def
similarity index 100%
rename from definitions/mars/grib1.me.def
rename to definitions/mars/grib.me.def
diff --git a/definitions/mars/grib1.mfam.em.def b/definitions/mars/grib.mfam.em.def
similarity index 100%
rename from definitions/mars/grib1.mfam.em.def
rename to definitions/mars/grib.mfam.em.def
diff --git a/definitions/mars/grib1.mfam.fcmean.def b/definitions/mars/grib.mfam.fcmean.def
similarity index 100%
rename from definitions/mars/grib1.mfam.fcmean.def
rename to definitions/mars/grib.mfam.fcmean.def
diff --git a/definitions/mars/grib1.mfam.fp.def b/definitions/mars/grib.mfam.fp.def
similarity index 100%
rename from definitions/mars/grib1.mfam.fp.def
rename to definitions/mars/grib.mfam.fp.def
diff --git a/definitions/mars/grib1.mfam.pb.def b/definitions/mars/grib.mfam.pb.def
similarity index 100%
rename from definitions/mars/grib1.mfam.pb.def
rename to definitions/mars/grib.mfam.pb.def
diff --git a/definitions/mars/grib1.mfam.pd.def b/definitions/mars/grib.mfam.pd.def
similarity index 100%
rename from definitions/mars/grib1.mfam.pd.def
rename to definitions/mars/grib.mfam.pd.def
diff --git a/definitions/mars/grib1.mfhm.em.def b/definitions/mars/grib.mfhm.em.def
similarity index 100%
rename from definitions/mars/grib1.mfhm.em.def
rename to definitions/mars/grib.mfhm.em.def
diff --git a/definitions/mars/grib1.mfhm.es.def b/definitions/mars/grib.mfhm.es.def
similarity index 100%
rename from definitions/mars/grib1.mfhm.es.def
rename to definitions/mars/grib.mfhm.es.def
diff --git a/definitions/mars/grib1.mfhm.fcmax.def b/definitions/mars/grib.mfhm.fcmax.def
similarity index 100%
rename from definitions/mars/grib1.mfhm.fcmax.def
rename to definitions/mars/grib.mfhm.fcmax.def
diff --git a/definitions/mars/grib1.mfhm.fcmean.def b/definitions/mars/grib.mfhm.fcmean.def
similarity index 100%
rename from definitions/mars/grib1.mfhm.fcmean.def
rename to definitions/mars/grib.mfhm.fcmean.def
diff --git a/definitions/mars/grib1.mfhm.fcmin.def b/definitions/mars/grib.mfhm.fcmin.def
similarity index 100%
rename from definitions/mars/grib1.mfhm.fcmin.def
rename to definitions/mars/grib.mfhm.fcmin.def
diff --git a/definitions/mars/grib1.mfhm.fcstdev.def b/definitions/mars/grib.mfhm.fcstdev.def
similarity index 100%
rename from definitions/mars/grib1.mfhm.fcstdev.def
rename to definitions/mars/grib.mfhm.fcstdev.def
diff --git a/definitions/mars/grib1.mfhw.cf.def b/definitions/mars/grib.mfhw.cf.def
similarity index 100%
rename from definitions/mars/grib1.mfhw.cf.def
rename to definitions/mars/grib.mfhw.cf.def
diff --git a/definitions/mars/grib1.mfhw.fc.def b/definitions/mars/grib.mfhw.fc.def
similarity index 100%
rename from definitions/mars/grib1.mfhw.fc.def
rename to definitions/mars/grib.mfhw.fc.def
diff --git a/definitions/mars/grib1.mfwm.fcmax.def b/definitions/mars/grib.mfwm.fcmax.def
similarity index 100%
rename from definitions/mars/grib1.mfwm.fcmax.def
rename to definitions/mars/grib.mfwm.fcmax.def
diff --git a/definitions/mars/grib1.mfwm.fcmean.def b/definitions/mars/grib.mfwm.fcmean.def
similarity index 100%
rename from definitions/mars/grib1.mfwm.fcmean.def
rename to definitions/mars/grib.mfwm.fcmean.def
diff --git a/definitions/mars/grib1.mfwm.fcmin.def b/definitions/mars/grib.mfwm.fcmin.def
similarity index 100%
rename from definitions/mars/grib1.mfwm.fcmin.def
rename to definitions/mars/grib.mfwm.fcmin.def
diff --git a/definitions/mars/grib1.mfwm.fcstdev.def b/definitions/mars/grib.mfwm.fcstdev.def
similarity index 100%
rename from definitions/mars/grib1.mfwm.fcstdev.def
rename to definitions/mars/grib.mfwm.fcstdev.def
diff --git a/definitions/mars/grib1.mhwm.fcmax.def b/definitions/mars/grib.mhwm.fcmax.def
similarity index 100%
rename from definitions/mars/grib1.mhwm.fcmax.def
rename to definitions/mars/grib.mhwm.fcmax.def
diff --git a/definitions/mars/grib1.mhwm.fcmean.def b/definitions/mars/grib.mhwm.fcmean.def
similarity index 100%
rename from definitions/mars/grib1.mhwm.fcmean.def
rename to definitions/mars/grib.mhwm.fcmean.def
diff --git a/definitions/mars/grib1.mhwm.fcmin.def b/definitions/mars/grib.mhwm.fcmin.def
similarity index 100%
rename from definitions/mars/grib1.mhwm.fcmin.def
rename to definitions/mars/grib.mhwm.fcmin.def
diff --git a/definitions/mars/grib1.mhwm.fcstdev.def b/definitions/mars/grib.mhwm.fcstdev.def
similarity index 100%
rename from definitions/mars/grib1.mhwm.fcstdev.def
rename to definitions/mars/grib.mhwm.fcstdev.def
diff --git a/definitions/mars/grib1.mmaf.fc.def b/definitions/mars/grib.mmaf.fc.def
similarity index 100%
rename from definitions/mars/grib1.mmaf.fc.def
rename to definitions/mars/grib.mmaf.fc.def
diff --git a/definitions/mars/grib1.mmaf.fcmean.def b/definitions/mars/grib.mmaf.fcmean.def
similarity index 100%
rename from definitions/mars/grib1.mmaf.fcmean.def
rename to definitions/mars/grib.mmaf.fcmean.def
diff --git a/definitions/mars/grib1.mmam.fcmean.def b/definitions/mars/grib.mmam.fcmean.def
similarity index 100%
rename from definitions/mars/grib1.mmam.fcmean.def
rename to definitions/mars/grib.mmam.fcmean.def
diff --git a/definitions/mars/grib1.mmsa.em.def b/definitions/mars/grib.mmsa.em.def
similarity index 100%
rename from definitions/mars/grib1.mmsa.em.def
rename to definitions/mars/grib.mmsa.em.def
diff --git a/definitions/mars/grib1.mmsa.fcmean.def b/definitions/mars/grib.mmsa.fcmean.def
similarity index 100%
rename from definitions/mars/grib1.mmsa.fcmean.def
rename to definitions/mars/grib.mmsa.fcmean.def
diff --git a/definitions/mars/grib1.mmsf.fc.def b/definitions/mars/grib.mmsf.fc.def
similarity index 100%
rename from definitions/mars/grib1.mmsf.fc.def
rename to definitions/mars/grib.mmsf.fc.def
diff --git a/definitions/mars/grib1.mmsf.icp.def b/definitions/mars/grib.mmsf.icp.def
similarity index 100%
rename from definitions/mars/grib1.mmsf.icp.def
rename to definitions/mars/grib.mmsf.icp.def
diff --git a/definitions/mars/grib1.mnfc.cf.def b/definitions/mars/grib.mnfc.cf.def
similarity index 100%
rename from definitions/mars/grib1.mnfc.cf.def
rename to definitions/mars/grib.mnfc.cf.def
diff --git a/definitions/mars/grib1.mnfc.ed.def b/definitions/mars/grib.mnfc.ed.def
similarity index 100%
rename from definitions/mars/grib1.mnfc.ed.def
rename to definitions/mars/grib.mnfc.ed.def
diff --git a/definitions/mars/grib1.mnfc.em.def b/definitions/mars/grib.mnfc.em.def
similarity index 100%
rename from definitions/mars/grib1.mnfc.em.def
rename to definitions/mars/grib.mnfc.em.def
diff --git a/definitions/mars/grib1.mnfc.es.def b/definitions/mars/grib.mnfc.es.def
similarity index 100%
rename from definitions/mars/grib1.mnfc.es.def
rename to definitions/mars/grib.mnfc.es.def
diff --git a/definitions/mars/grib1.mnfc.fc.def b/definitions/mars/grib.mnfc.fc.def
similarity index 100%
rename from definitions/mars/grib1.mnfc.fc.def
rename to definitions/mars/grib.mnfc.fc.def
diff --git a/definitions/mars/grib1.mnfc.ff.def b/definitions/mars/grib.mnfc.ff.def
similarity index 100%
rename from definitions/mars/grib1.mnfc.ff.def
rename to definitions/mars/grib.mnfc.ff.def
diff --git a/definitions/mars/grib1.mnfc.icp.def b/definitions/mars/grib.mnfc.icp.def
similarity index 100%
rename from definitions/mars/grib1.mnfc.icp.def
rename to definitions/mars/grib.mnfc.icp.def
diff --git a/definitions/mars/grib1.mnfc.of.def b/definitions/mars/grib.mnfc.of.def
similarity index 100%
rename from definitions/mars/grib1.mnfc.of.def
rename to definitions/mars/grib.mnfc.of.def
diff --git a/definitions/mars/grib1.mnfh.cf.def b/definitions/mars/grib.mnfh.cf.def
similarity index 100%
rename from definitions/mars/grib1.mnfh.cf.def
rename to definitions/mars/grib.mnfh.cf.def
diff --git a/definitions/mars/grib1.mnfh.ed.def b/definitions/mars/grib.mnfh.ed.def
similarity index 100%
rename from definitions/mars/grib1.mnfh.ed.def
rename to definitions/mars/grib.mnfh.ed.def
diff --git a/definitions/mars/grib1.mnfh.em.def b/definitions/mars/grib.mnfh.em.def
similarity index 100%
rename from definitions/mars/grib1.mnfh.em.def
rename to definitions/mars/grib.mnfh.em.def
diff --git a/definitions/mars/grib1.mnfh.es.def b/definitions/mars/grib.mnfh.es.def
similarity index 100%
rename from definitions/mars/grib1.mnfh.es.def
rename to definitions/mars/grib.mnfh.es.def
diff --git a/definitions/mars/grib1.mnfh.fc.def b/definitions/mars/grib.mnfh.fc.def
similarity index 100%
rename from definitions/mars/grib1.mnfh.fc.def
rename to definitions/mars/grib.mnfh.fc.def
diff --git a/definitions/mars/grib1.mnfh.icp.def b/definitions/mars/grib.mnfh.icp.def
similarity index 100%
rename from definitions/mars/grib1.mnfh.icp.def
rename to definitions/mars/grib.mnfh.icp.def
diff --git a/definitions/mars/grib1.mnfm.em.def b/definitions/mars/grib.mnfm.em.def
similarity index 100%
rename from definitions/mars/grib1.mnfm.em.def
rename to definitions/mars/grib.mnfm.em.def
diff --git a/definitions/mars/grib1.mnfm.es.def b/definitions/mars/grib.mnfm.es.def
similarity index 100%
rename from definitions/mars/grib1.mnfm.es.def
rename to definitions/mars/grib.mnfm.es.def
diff --git a/definitions/mars/grib1.mnfm.fcmax.def b/definitions/mars/grib.mnfm.fcmax.def
similarity index 100%
rename from definitions/mars/grib1.mnfm.fcmax.def
rename to definitions/mars/grib.mnfm.fcmax.def
diff --git a/definitions/mars/grib1.mnfm.fcmean.def b/definitions/mars/grib.mnfm.fcmean.def
similarity index 100%
rename from definitions/mars/grib1.mnfm.fcmean.def
rename to definitions/mars/grib.mnfm.fcmean.def
diff --git a/definitions/mars/grib1.mnfm.fcmin.def b/definitions/mars/grib.mnfm.fcmin.def
similarity index 100%
rename from definitions/mars/grib1.mnfm.fcmin.def
rename to definitions/mars/grib.mnfm.fcmin.def
diff --git a/definitions/mars/grib1.mnfm.fcstdev.def b/definitions/mars/grib.mnfm.fcstdev.def
similarity index 100%
rename from definitions/mars/grib1.mnfm.fcstdev.def
rename to definitions/mars/grib.mnfm.fcstdev.def
diff --git a/definitions/mars/grib1.mnfw.cf.def b/definitions/mars/grib.mnfw.cf.def
similarity index 100%
rename from definitions/mars/grib1.mnfw.cf.def
rename to definitions/mars/grib.mnfw.cf.def
diff --git a/definitions/mars/grib1.mnfw.fc.def b/definitions/mars/grib.mnfw.fc.def
similarity index 100%
rename from definitions/mars/grib1.mnfw.fc.def
rename to definitions/mars/grib.mnfw.fc.def
diff --git a/definitions/mars/grib1.mnth.an.def b/definitions/mars/grib.mnth.an.def
similarity index 100%
rename from definitions/mars/grib1.mnth.an.def
rename to definitions/mars/grib.mnth.an.def
diff --git a/definitions/mars/grib1.mnth.cl.def b/definitions/mars/grib.mnth.cl.def
similarity index 100%
rename from definitions/mars/grib1.mnth.cl.def
rename to definitions/mars/grib.mnth.cl.def
diff --git a/definitions/mars/grib.mnth.fc.def b/definitions/mars/grib.mnth.fc.def
new file mode 100644
index 0000000..9e276f2
--- /dev/null
+++ b/definitions/mars/grib.mnth.fc.def
@@ -0,0 +1,16 @@
+# assert(local=1)
+meta verificationDate         g1verificationdate(dataDate, dataTime, endStep) : read_only;
+meta monthlyVerificationDate  g1monthlydate(verificationDate) : dump,no_copy;
+alias mars.date             = monthlyVerificationDate;
+
+#
+# See GRIB-497, GRIB-766, GRIB-833
+#
+if (class is "em" || class is "e2" || class is "ea" || class is "ep")
+{
+   alias mars.step = endStep;
+}
+else
+{
+   alias mars.step = startStep;
+}
diff --git a/definitions/mars/grib1.mnth.fg.def b/definitions/mars/grib.mnth.fg.def
similarity index 100%
rename from definitions/mars/grib1.mnth.fg.def
rename to definitions/mars/grib.mnth.fg.def
diff --git a/definitions/mars/grib1.mnth.ia.def b/definitions/mars/grib.mnth.ia.def
similarity index 100%
rename from definitions/mars/grib1.mnth.ia.def
rename to definitions/mars/grib.mnth.ia.def
diff --git a/definitions/mars/grib1.mnth.ssd.def b/definitions/mars/grib.mnth.ssd.def
similarity index 100%
rename from definitions/mars/grib1.mnth.ssd.def
rename to definitions/mars/grib.mnth.ssd.def
diff --git a/definitions/mars/grib1.moda.an.def b/definitions/mars/grib.moda.an.def
similarity index 100%
rename from definitions/mars/grib1.moda.an.def
rename to definitions/mars/grib.moda.an.def
diff --git a/definitions/mars/grib1.moda.cl.def b/definitions/mars/grib.moda.cl.def
similarity index 100%
rename from definitions/mars/grib1.moda.cl.def
rename to definitions/mars/grib.moda.cl.def
diff --git a/definitions/mars/grib1.moda.fc.def b/definitions/mars/grib.moda.fc.def
similarity index 100%
rename from definitions/mars/grib1.moda.fc.def
rename to definitions/mars/grib.moda.fc.def
diff --git a/definitions/mars/grib1.moda.ssd.def b/definitions/mars/grib.moda.ssd.def
similarity index 100%
rename from definitions/mars/grib1.moda.ssd.def
rename to definitions/mars/grib.moda.ssd.def
diff --git a/definitions/mars/grib1.mofc.cf.def b/definitions/mars/grib.mofc.cf.def
similarity index 100%
rename from definitions/mars/grib1.mofc.cf.def
rename to definitions/mars/grib.mofc.cf.def
diff --git a/definitions/mars/grib1.mofc.ed.def b/definitions/mars/grib.mofc.ed.def
similarity index 100%
rename from definitions/mars/grib1.mofc.ed.def
rename to definitions/mars/grib.mofc.ed.def
diff --git a/definitions/mars/grib1.mofc.em.def b/definitions/mars/grib.mofc.em.def
similarity index 100%
rename from definitions/mars/grib1.mofc.em.def
rename to definitions/mars/grib.mofc.em.def
diff --git a/definitions/mars/grib1.mofc.es.def b/definitions/mars/grib.mofc.es.def
similarity index 100%
rename from definitions/mars/grib1.mofc.es.def
rename to definitions/mars/grib.mofc.es.def
diff --git a/definitions/mars/grib1.mofc.fc.def b/definitions/mars/grib.mofc.fc.def
similarity index 100%
rename from definitions/mars/grib1.mofc.fc.def
rename to definitions/mars/grib.mofc.fc.def
diff --git a/definitions/mars/grib1.mofc.ff.def b/definitions/mars/grib.mofc.ff.def
similarity index 100%
rename from definitions/mars/grib1.mofc.ff.def
rename to definitions/mars/grib.mofc.ff.def
diff --git a/definitions/mars/grib1.mofc.of.def b/definitions/mars/grib.mofc.of.def
similarity index 100%
rename from definitions/mars/grib1.mofc.of.def
rename to definitions/mars/grib.mofc.of.def
diff --git a/definitions/mars/grib1.mofm.fcmax.def b/definitions/mars/grib.mofm.fcmax.def
similarity index 100%
rename from definitions/mars/grib1.mofm.fcmax.def
rename to definitions/mars/grib.mofm.fcmax.def
diff --git a/definitions/mars/grib1.mofm.fcmean.def b/definitions/mars/grib.mofm.fcmean.def
similarity index 100%
rename from definitions/mars/grib1.mofm.fcmean.def
rename to definitions/mars/grib.mofm.fcmean.def
diff --git a/definitions/mars/grib1.mofm.fcmin.def b/definitions/mars/grib.mofm.fcmin.def
similarity index 100%
rename from definitions/mars/grib1.mofm.fcmin.def
rename to definitions/mars/grib.mofm.fcmin.def
diff --git a/definitions/mars/grib1.mofm.fcstdev.def b/definitions/mars/grib.mofm.fcstdev.def
similarity index 100%
rename from definitions/mars/grib1.mofm.fcstdev.def
rename to definitions/mars/grib.mofm.fcstdev.def
diff --git a/definitions/mars/grib1.mpic.s3.def b/definitions/mars/grib.mpic.s3.def
similarity index 100%
rename from definitions/mars/grib1.mpic.s3.def
rename to definitions/mars/grib.mpic.s3.def
diff --git a/definitions/mars/grib1.msda.an.def b/definitions/mars/grib.msda.an.def
similarity index 100%
rename from definitions/mars/grib1.msda.an.def
rename to definitions/mars/grib.msda.an.def
diff --git a/definitions/mars/grib1.msdc.an.def b/definitions/mars/grib.msdc.an.def
similarity index 100%
rename from definitions/mars/grib1.msdc.an.def
rename to definitions/mars/grib.msdc.an.def
diff --git a/definitions/mars/grib1.msdc.fc.def b/definitions/mars/grib.msdc.fc.def
similarity index 100%
rename from definitions/mars/grib1.msdc.fc.def
rename to definitions/mars/grib.msdc.fc.def
diff --git a/definitions/mars/grib1.msmm.em.def b/definitions/mars/grib.msmm.em.def
similarity index 100%
rename from definitions/mars/grib1.msmm.em.def
rename to definitions/mars/grib.msmm.em.def
diff --git a/definitions/mars/grib1.msmm.fcmax.def b/definitions/mars/grib.msmm.fcmax.def
similarity index 100%
rename from definitions/mars/grib1.msmm.fcmax.def
rename to definitions/mars/grib.msmm.fcmax.def
diff --git a/definitions/mars/grib1.msmm.fcmean.def b/definitions/mars/grib.msmm.fcmean.def
similarity index 100%
rename from definitions/mars/grib1.msmm.fcmean.def
rename to definitions/mars/grib.msmm.fcmean.def
diff --git a/definitions/mars/grib1.msmm.fcmin.def b/definitions/mars/grib.msmm.fcmin.def
similarity index 100%
rename from definitions/mars/grib1.msmm.fcmin.def
rename to definitions/mars/grib.msmm.fcmin.def
diff --git a/definitions/mars/grib1.msmm.fcstdev.def b/definitions/mars/grib.msmm.fcstdev.def
similarity index 100%
rename from definitions/mars/grib1.msmm.fcstdev.def
rename to definitions/mars/grib.msmm.fcstdev.def
diff --git a/definitions/mars/grib.msmm.hcmean.def b/definitions/mars/grib.msmm.hcmean.def
new file mode 120000
index 0000000..0b5cb2f
--- /dev/null
+++ b/definitions/mars/grib.msmm.hcmean.def
@@ -0,0 +1 @@
+grib.msmm.em.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.ocea.an.def b/definitions/mars/grib.ocea.an.def
similarity index 100%
rename from definitions/mars/grib1.ocea.an.def
rename to definitions/mars/grib.ocea.an.def
diff --git a/definitions/mars/grib1.ocea.ff.def b/definitions/mars/grib.ocea.ff.def
similarity index 100%
rename from definitions/mars/grib1.ocea.ff.def
rename to definitions/mars/grib.ocea.ff.def
diff --git a/definitions/mars/grib1.ocea.fx.def b/definitions/mars/grib.ocea.fx.def
similarity index 100%
rename from definitions/mars/grib1.ocea.fx.def
rename to definitions/mars/grib.ocea.fx.def
diff --git a/definitions/mars/grib1.ocea.of.def b/definitions/mars/grib.ocea.of.def
similarity index 100%
rename from definitions/mars/grib1.ocea.of.def
rename to definitions/mars/grib.ocea.of.def
diff --git a/definitions/mars/grib1.ocea.or.def b/definitions/mars/grib.ocea.or.def
similarity index 100%
rename from definitions/mars/grib1.ocea.or.def
rename to definitions/mars/grib.ocea.or.def
diff --git a/definitions/mars/grib1.oper.3v.def b/definitions/mars/grib.oper.3v.def
similarity index 100%
rename from definitions/mars/grib1.oper.3v.def
rename to definitions/mars/grib.oper.3v.def
diff --git a/definitions/mars/grib1.oper.4i.def b/definitions/mars/grib.oper.4i.def
similarity index 100%
rename from definitions/mars/grib1.oper.4i.def
rename to definitions/mars/grib.oper.4i.def
diff --git a/definitions/mars/grib1.oper.4v.def b/definitions/mars/grib.oper.4v.def
similarity index 100%
rename from definitions/mars/grib1.oper.4v.def
rename to definitions/mars/grib.oper.4v.def
diff --git a/definitions/mars/grib1.oper.an.def b/definitions/mars/grib.oper.an.def
similarity index 100%
rename from definitions/mars/grib1.oper.an.def
rename to definitions/mars/grib.oper.an.def
diff --git a/definitions/mars/grib1.oper.ea.def b/definitions/mars/grib.oper.ea.def
similarity index 100%
rename from definitions/mars/grib1.oper.ea.def
rename to definitions/mars/grib.oper.ea.def
diff --git a/definitions/mars/grib1.oper.ef.def b/definitions/mars/grib.oper.ef.def
similarity index 100%
rename from definitions/mars/grib1.oper.ef.def
rename to definitions/mars/grib.oper.ef.def
diff --git a/definitions/mars/grib1.oper.fa.def b/definitions/mars/grib.oper.fa.def
similarity index 100%
rename from definitions/mars/grib1.oper.fa.def
rename to definitions/mars/grib.oper.fa.def
diff --git a/definitions/mars/grib1.oper.fc.def b/definitions/mars/grib.oper.fc.def
similarity index 100%
rename from definitions/mars/grib1.oper.fc.def
rename to definitions/mars/grib.oper.fc.def
diff --git a/definitions/mars/grib1.oper.fg.def b/definitions/mars/grib.oper.fg.def
similarity index 100%
rename from definitions/mars/grib1.oper.fg.def
rename to definitions/mars/grib.oper.fg.def
diff --git a/definitions/mars/grib1.oper.go.def b/definitions/mars/grib.oper.go.def
similarity index 100%
rename from definitions/mars/grib1.oper.go.def
rename to definitions/mars/grib.oper.go.def
diff --git a/definitions/mars/grib1.oper.ia.def b/definitions/mars/grib.oper.ia.def
similarity index 100%
rename from definitions/mars/grib1.oper.ia.def
rename to definitions/mars/grib.oper.ia.def
diff --git a/definitions/mars/grib1.oper.im.def b/definitions/mars/grib.oper.im.def
similarity index 100%
rename from definitions/mars/grib1.oper.im.def
rename to definitions/mars/grib.oper.im.def
diff --git a/definitions/mars/grib.oper.me.def b/definitions/mars/grib.oper.me.def
new file mode 120000
index 0000000..3def55f
--- /dev/null
+++ b/definitions/mars/grib.oper.me.def
@@ -0,0 +1 @@
+grib.me.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.oper.oi.def b/definitions/mars/grib.oper.oi.def
similarity index 100%
rename from definitions/mars/grib1.oper.oi.def
rename to definitions/mars/grib.oper.oi.def
diff --git a/definitions/mars/grib1.oper.si.def b/definitions/mars/grib.oper.si.def
similarity index 100%
rename from definitions/mars/grib1.oper.si.def
rename to definitions/mars/grib.oper.si.def
diff --git a/definitions/mars/grib1.oper.sim.def b/definitions/mars/grib.oper.sim.def
similarity index 100%
rename from definitions/mars/grib1.oper.sim.def
rename to definitions/mars/grib.oper.sim.def
diff --git a/definitions/mars/grib1.oper.ssd.def b/definitions/mars/grib.oper.ssd.def
similarity index 100%
rename from definitions/mars/grib1.oper.ssd.def
rename to definitions/mars/grib.oper.ssd.def
diff --git a/definitions/mars/grib1.scda.4i.def b/definitions/mars/grib.scda.4i.def
similarity index 100%
rename from definitions/mars/grib1.scda.4i.def
rename to definitions/mars/grib.scda.4i.def
diff --git a/definitions/mars/grib.scda.me.def b/definitions/mars/grib.scda.me.def
new file mode 120000
index 0000000..3def55f
--- /dev/null
+++ b/definitions/mars/grib.scda.me.def
@@ -0,0 +1 @@
+grib.me.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.seap.an.def b/definitions/mars/grib.seap.an.def
similarity index 100%
rename from definitions/mars/grib1.seap.an.def
rename to definitions/mars/grib.seap.an.def
diff --git a/definitions/mars/grib1.seap.ef.def b/definitions/mars/grib.seap.ef.def
similarity index 100%
rename from definitions/mars/grib1.seap.ef.def
rename to definitions/mars/grib.seap.ef.def
diff --git a/definitions/mars/grib1.seap.es.def b/definitions/mars/grib.seap.es.def
similarity index 100%
rename from definitions/mars/grib1.seap.es.def
rename to definitions/mars/grib.seap.es.def
diff --git a/definitions/mars/grib1.seap.fc.def b/definitions/mars/grib.seap.fc.def
similarity index 100%
rename from definitions/mars/grib1.seap.fc.def
rename to definitions/mars/grib.seap.fc.def
diff --git a/definitions/mars/grib1.seap.sv.def b/definitions/mars/grib.seap.sv.def
similarity index 100%
rename from definitions/mars/grib1.seap.sv.def
rename to definitions/mars/grib.seap.sv.def
diff --git a/definitions/mars/grib1.seap.svar.def b/definitions/mars/grib.seap.svar.def
similarity index 100%
rename from definitions/mars/grib1.seap.svar.def
rename to definitions/mars/grib.seap.svar.def
diff --git a/definitions/mars/grib1.seas.an.def b/definitions/mars/grib.seas.an.def
similarity index 100%
rename from definitions/mars/grib1.seas.an.def
rename to definitions/mars/grib.seas.an.def
diff --git a/definitions/mars/grib1.seas.fc.def b/definitions/mars/grib.seas.fc.def
similarity index 100%
rename from definitions/mars/grib1.seas.fc.def
rename to definitions/mars/grib.seas.fc.def
diff --git a/definitions/mars/grib1.seas.ff.def b/definitions/mars/grib.seas.ff.def
similarity index 100%
rename from definitions/mars/grib1.seas.ff.def
rename to definitions/mars/grib.seas.ff.def
diff --git a/definitions/mars/grib1.seas.fx.def b/definitions/mars/grib.seas.fx.def
similarity index 100%
rename from definitions/mars/grib1.seas.fx.def
rename to definitions/mars/grib.seas.fx.def
diff --git a/definitions/mars/grib1.seas.of.def b/definitions/mars/grib.seas.of.def
similarity index 100%
rename from definitions/mars/grib1.seas.of.def
rename to definitions/mars/grib.seas.of.def
diff --git a/definitions/mars/grib1.seas.or.def b/definitions/mars/grib.seas.or.def
similarity index 100%
rename from definitions/mars/grib1.seas.or.def
rename to definitions/mars/grib.seas.or.def
diff --git a/definitions/mars/grib1.sens.me.def b/definitions/mars/grib.sens.me.def
similarity index 100%
rename from definitions/mars/grib1.sens.me.def
rename to definitions/mars/grib.sens.me.def
diff --git a/definitions/mars/grib1.sens.sf.def b/definitions/mars/grib.sens.sf.def
similarity index 100%
rename from definitions/mars/grib1.sens.sf.def
rename to definitions/mars/grib.sens.sf.def
diff --git a/definitions/mars/grib1.sens.sg.def b/definitions/mars/grib.sens.sg.def
similarity index 100%
rename from definitions/mars/grib1.sens.sg.def
rename to definitions/mars/grib.sens.sg.def
diff --git a/definitions/mars/grib1.sfmm.em.def b/definitions/mars/grib.sfmm.em.def
similarity index 100%
rename from definitions/mars/grib1.sfmm.em.def
rename to definitions/mars/grib.sfmm.em.def
diff --git a/definitions/mars/grib1.sfmm.fcmax.def b/definitions/mars/grib.sfmm.fcmax.def
similarity index 100%
rename from definitions/mars/grib1.sfmm.fcmax.def
rename to definitions/mars/grib.sfmm.fcmax.def
diff --git a/definitions/mars/grib1.sfmm.fcmean.def b/definitions/mars/grib.sfmm.fcmean.def
similarity index 100%
rename from definitions/mars/grib1.sfmm.fcmean.def
rename to definitions/mars/grib.sfmm.fcmean.def
diff --git a/definitions/mars/grib1.sfmm.fcmin.def b/definitions/mars/grib.sfmm.fcmin.def
similarity index 100%
rename from definitions/mars/grib1.sfmm.fcmin.def
rename to definitions/mars/grib.sfmm.fcmin.def
diff --git a/definitions/mars/grib1.sfmm.fcstdev.def b/definitions/mars/grib.sfmm.fcstdev.def
similarity index 100%
rename from definitions/mars/grib1.sfmm.fcstdev.def
rename to definitions/mars/grib.sfmm.fcstdev.def
diff --git a/definitions/mars/grib1.smma.em.def b/definitions/mars/grib.smma.em.def
similarity index 100%
rename from definitions/mars/grib1.smma.em.def
rename to definitions/mars/grib.smma.em.def
diff --git a/definitions/mars/grib1.smma.fcmean.def b/definitions/mars/grib.smma.fcmean.def
similarity index 100%
rename from definitions/mars/grib1.smma.fcmean.def
rename to definitions/mars/grib.smma.fcmean.def
diff --git a/definitions/mars/grib1.supd.an.def b/definitions/mars/grib.supd.an.def
similarity index 100%
rename from definitions/mars/grib1.supd.an.def
rename to definitions/mars/grib.supd.an.def
diff --git a/definitions/mars/grib1.swmm.fcmax.def b/definitions/mars/grib.swmm.fcmax.def
similarity index 100%
rename from definitions/mars/grib1.swmm.fcmax.def
rename to definitions/mars/grib.swmm.fcmax.def
diff --git a/definitions/mars/grib1.swmm.fcmean.def b/definitions/mars/grib.swmm.fcmean.def
similarity index 100%
rename from definitions/mars/grib1.swmm.fcmean.def
rename to definitions/mars/grib.swmm.fcmean.def
diff --git a/definitions/mars/grib1.swmm.fcmin.def b/definitions/mars/grib.swmm.fcmin.def
similarity index 100%
rename from definitions/mars/grib1.swmm.fcmin.def
rename to definitions/mars/grib.swmm.fcmin.def
diff --git a/definitions/mars/grib1.swmm.fcstdev.def b/definitions/mars/grib.swmm.fcstdev.def
similarity index 100%
rename from definitions/mars/grib1.swmm.fcstdev.def
rename to definitions/mars/grib.swmm.fcstdev.def
diff --git a/definitions/mars/grib1.ukmo.s3.def b/definitions/mars/grib.ukmo.s3.def
similarity index 100%
rename from definitions/mars/grib1.ukmo.s3.def
rename to definitions/mars/grib.ukmo.s3.def
diff --git a/definitions/mars/grib1.waef.cv.def b/definitions/mars/grib.waef.cv.def
similarity index 100%
rename from definitions/mars/grib1.waef.cv.def
rename to definitions/mars/grib.waef.cv.def
diff --git a/definitions/mars/grib1.waef.efi.def b/definitions/mars/grib.waef.efi.def
similarity index 100%
rename from definitions/mars/grib1.waef.efi.def
rename to definitions/mars/grib.waef.efi.def
diff --git a/definitions/mars/grib1.waef.efic.def b/definitions/mars/grib.waef.efic.def
similarity index 100%
rename from definitions/mars/grib1.waef.efic.def
rename to definitions/mars/grib.waef.efic.def
diff --git a/definitions/mars/grib1.waef.ep.def b/definitions/mars/grib.waef.ep.def
similarity index 100%
rename from definitions/mars/grib1.waef.ep.def
rename to definitions/mars/grib.waef.ep.def
diff --git a/definitions/mars/grib1.waef.fcmax.def b/definitions/mars/grib.waef.fcmax.def
similarity index 100%
rename from definitions/mars/grib1.waef.fcmax.def
rename to definitions/mars/grib.waef.fcmax.def
diff --git a/definitions/mars/grib1.waef.fcmean.def b/definitions/mars/grib.waef.fcmean.def
similarity index 100%
rename from definitions/mars/grib1.waef.fcmean.def
rename to definitions/mars/grib.waef.fcmean.def
diff --git a/definitions/mars/grib1.waef.fcmin.def b/definitions/mars/grib.waef.fcmin.def
similarity index 100%
rename from definitions/mars/grib1.waef.fcmin.def
rename to definitions/mars/grib.waef.fcmin.def
diff --git a/definitions/mars/grib1.waef.fcstdev.def b/definitions/mars/grib.waef.fcstdev.def
similarity index 100%
rename from definitions/mars/grib1.waef.fcstdev.def
rename to definitions/mars/grib.waef.fcstdev.def
diff --git a/definitions/mars/grib1.waef.fp.def b/definitions/mars/grib.waef.fp.def
similarity index 100%
rename from definitions/mars/grib1.waef.fp.def
rename to definitions/mars/grib.waef.fp.def
diff --git a/definitions/mars/grib1.waef.pf.def b/definitions/mars/grib.waef.pf.def
similarity index 100%
rename from definitions/mars/grib1.waef.pf.def
rename to definitions/mars/grib.waef.pf.def
diff --git a/definitions/mars/grib1.waef.sot.def b/definitions/mars/grib.waef.sot.def
similarity index 100%
rename from definitions/mars/grib1.waef.sot.def
rename to definitions/mars/grib.waef.sot.def
diff --git a/definitions/mars/grib1.wamd.an.def b/definitions/mars/grib.wamd.an.def
similarity index 100%
rename from definitions/mars/grib1.wamd.an.def
rename to definitions/mars/grib.wamd.an.def
diff --git a/definitions/mars/grib1.wamd.fc.def b/definitions/mars/grib.wamd.fc.def
similarity index 100%
rename from definitions/mars/grib1.wamd.fc.def
rename to definitions/mars/grib.wamd.fc.def
diff --git a/definitions/mars/grib1.wamf.cf.def b/definitions/mars/grib.wamf.cf.def
similarity index 100%
rename from definitions/mars/grib1.wamf.cf.def
rename to definitions/mars/grib.wamf.cf.def
diff --git a/definitions/mars/grib1.wamf.fc.def b/definitions/mars/grib.wamf.fc.def
similarity index 100%
rename from definitions/mars/grib1.wamf.fc.def
rename to definitions/mars/grib.wamf.fc.def
diff --git a/definitions/mars/grib1.wamo.an.def b/definitions/mars/grib.wamo.an.def
similarity index 100%
rename from definitions/mars/grib1.wamo.an.def
rename to definitions/mars/grib.wamo.an.def
diff --git a/definitions/mars/grib1.wamo.cl.def b/definitions/mars/grib.wamo.cl.def
similarity index 100%
rename from definitions/mars/grib1.wamo.cl.def
rename to definitions/mars/grib.wamo.cl.def
diff --git a/definitions/mars/grib.wamo.fc.def b/definitions/mars/grib.wamo.fc.def
new file mode 100644
index 0000000..9e276f2
--- /dev/null
+++ b/definitions/mars/grib.wamo.fc.def
@@ -0,0 +1,16 @@
+# assert(local=1)
+meta verificationDate         g1verificationdate(dataDate, dataTime, endStep) : read_only;
+meta monthlyVerificationDate  g1monthlydate(verificationDate) : dump,no_copy;
+alias mars.date             = monthlyVerificationDate;
+
+#
+# See GRIB-497, GRIB-766, GRIB-833
+#
+if (class is "em" || class is "e2" || class is "ea" || class is "ep")
+{
+   alias mars.step = endStep;
+}
+else
+{
+   alias mars.step = startStep;
+}
diff --git a/definitions/mars/grib1.wasf.fc.def b/definitions/mars/grib.wasf.fc.def
similarity index 100%
rename from definitions/mars/grib1.wasf.fc.def
rename to definitions/mars/grib.wasf.fc.def
diff --git a/definitions/mars/grib.wave.4v.def b/definitions/mars/grib.wave.4v.def
new file mode 120000
index 0000000..72a1352
--- /dev/null
+++ b/definitions/mars/grib.wave.4v.def
@@ -0,0 +1 @@
+grib.wave.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.wave.an.def b/definitions/mars/grib.wave.an.def
similarity index 100%
rename from definitions/mars/grib1.wave.an.def
rename to definitions/mars/grib.wave.an.def
diff --git a/definitions/mars/grib1.wave.def b/definitions/mars/grib.wave.def
similarity index 100%
rename from definitions/mars/grib1.wave.def
rename to definitions/mars/grib.wave.def
diff --git a/definitions/mars/grib1.wave.fc.def b/definitions/mars/grib.wave.fc.def
similarity index 100%
rename from definitions/mars/grib1.wave.fc.def
rename to definitions/mars/grib.wave.fc.def
diff --git a/definitions/mars/grib1.wave.fg.def b/definitions/mars/grib.wave.fg.def
similarity index 100%
rename from definitions/mars/grib1.wave.fg.def
rename to definitions/mars/grib.wave.fg.def
diff --git a/definitions/mars/grib1.wehs.cd.def b/definitions/mars/grib.wehs.cd.def
similarity index 100%
rename from definitions/mars/grib1.wehs.cd.def
rename to definitions/mars/grib.wehs.cd.def
diff --git a/definitions/mars/grib1.wehs.ed.def b/definitions/mars/grib.wehs.ed.def
similarity index 100%
rename from definitions/mars/grib1.wehs.ed.def
rename to definitions/mars/grib.wehs.ed.def
diff --git a/definitions/mars/grib1.wehs.em.def b/definitions/mars/grib.wehs.em.def
similarity index 100%
rename from definitions/mars/grib1.wehs.em.def
rename to definitions/mars/grib.wehs.em.def
diff --git a/definitions/mars/grib1.wehs.es.def b/definitions/mars/grib.wehs.es.def
similarity index 100%
rename from definitions/mars/grib1.wehs.es.def
rename to definitions/mars/grib.wehs.es.def
diff --git a/definitions/mars/grib1.weov.pf.def b/definitions/mars/grib.weov.pf.def
similarity index 100%
rename from definitions/mars/grib1.weov.pf.def
rename to definitions/mars/grib.weov.pf.def
diff --git a/definitions/mars/grib1.wmfm.fcmax.def b/definitions/mars/grib.wmfm.fcmax.def
similarity index 100%
rename from definitions/mars/grib1.wmfm.fcmax.def
rename to definitions/mars/grib.wmfm.fcmax.def
diff --git a/definitions/mars/grib1.wmfm.fcmean.def b/definitions/mars/grib.wmfm.fcmean.def
similarity index 100%
rename from definitions/mars/grib1.wmfm.fcmean.def
rename to definitions/mars/grib.wmfm.fcmean.def
diff --git a/definitions/mars/grib1.wmfm.fcmin.def b/definitions/mars/grib.wmfm.fcmin.def
similarity index 100%
rename from definitions/mars/grib1.wmfm.fcmin.def
rename to definitions/mars/grib.wmfm.fcmin.def
diff --git a/definitions/mars/grib1.wmfm.fcstdev.def b/definitions/mars/grib.wmfm.fcstdev.def
similarity index 100%
rename from definitions/mars/grib1.wmfm.fcstdev.def
rename to definitions/mars/grib.wmfm.fcstdev.def
diff --git a/definitions/mars/grib1.dcda.me.def b/definitions/mars/grib1.dcda.me.def
deleted file mode 120000
index 353243e..0000000
--- a/definitions/mars/grib1.dcda.me.def
+++ /dev/null
@@ -1 +0,0 @@
-grib1.me.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.edmm.fc.def b/definitions/mars/grib1.edmm.fc.def
deleted file mode 100644
index 1f9d613..0000000
--- a/definitions/mars/grib1.edmm.fc.def
+++ /dev/null
@@ -1,22 +0,0 @@
-# assert(local=1)
-meta verificationDate         g1verificationdate(dataDate, dataTime, endStep) : read_only;
-meta monthlyVerificationDate  g1monthlydate(verificationDate) : dump,no_copy;
-alias mars.date             = monthlyVerificationDate;
-
-# class e4
-# constant six = 6;
-
-# There was some forecast data produced incorrectly for stream=edmm with class=em
-# An exception is required for backward compatibility for the wrongly encoded data
-# See GRIB-422, GRIB-497
-if (class is "em" || class is "e2")
-{
-   alias mars.step = endStep;
-}
-else
-{
-   alias mars.step = startStep;
-}
-
-alias mars.number=perturbationNumber;
-
diff --git a/definitions/mars/grib1.enda.4v.def b/definitions/mars/grib1.enda.4v.def
deleted file mode 120000
index 977ae5c..0000000
--- a/definitions/mars/grib1.enda.4v.def
+++ /dev/null
@@ -1 +0,0 @@
-grib1.enda.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.enda.an.def b/definitions/mars/grib1.enda.an.def
deleted file mode 120000
index 977ae5c..0000000
--- a/definitions/mars/grib1.enda.an.def
+++ /dev/null
@@ -1 +0,0 @@
-grib1.enda.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.enda.ea.def b/definitions/mars/grib1.enda.ea.def
deleted file mode 120000
index 977ae5c..0000000
--- a/definitions/mars/grib1.enda.ea.def
+++ /dev/null
@@ -1 +0,0 @@
-grib1.enda.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.enda.ef.def b/definitions/mars/grib1.enda.ef.def
deleted file mode 120000
index 977ae5c..0000000
--- a/definitions/mars/grib1.enda.ef.def
+++ /dev/null
@@ -1 +0,0 @@
-grib1.enda.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.enda.sv.def b/definitions/mars/grib1.enda.sv.def
deleted file mode 120000
index 977ae5c..0000000
--- a/definitions/mars/grib1.enda.sv.def
+++ /dev/null
@@ -1 +0,0 @@
-grib1.enda.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.enda.svar.def b/definitions/mars/grib1.enda.svar.def
deleted file mode 120000
index 977ae5c..0000000
--- a/definitions/mars/grib1.enda.svar.def
+++ /dev/null
@@ -1 +0,0 @@
-grib1.enda.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.ewda.4v.def b/definitions/mars/grib1.ewda.4v.def
deleted file mode 120000
index 6dec1a7..0000000
--- a/definitions/mars/grib1.ewda.4v.def
+++ /dev/null
@@ -1 +0,0 @@
-grib1.ewda.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.ewda.an.def b/definitions/mars/grib1.ewda.an.def
deleted file mode 120000
index 6dec1a7..0000000
--- a/definitions/mars/grib1.ewda.an.def
+++ /dev/null
@@ -1 +0,0 @@
-grib1.ewda.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.ewda.fc.def b/definitions/mars/grib1.ewda.fc.def
deleted file mode 120000
index 6dec1a7..0000000
--- a/definitions/mars/grib1.ewda.fc.def
+++ /dev/null
@@ -1 +0,0 @@
-grib1.ewda.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.ewmm.fc.def b/definitions/mars/grib1.ewmm.fc.def
deleted file mode 100644
index 6fe54bb..0000000
--- a/definitions/mars/grib1.ewmm.fc.def
+++ /dev/null
@@ -1,18 +0,0 @@
-# assert(local=1)
-meta verificationDate         g1verificationdate(dataDate, dataTime, endStep) : read_only;
-meta monthlyVerificationDate  g1monthlydate(verificationDate) : dump,no_copy;
-alias mars.date             = monthlyVerificationDate;
-
-# See GRIB-422, GRIB-497
-if (class is "em" || class is "e2")
-{
-   alias mars.step = endStep;
-}
-else
-{
-   alias mars.step = startStep;
-}
-
-
-alias mars.number=perturbationNumber;
-
diff --git a/definitions/mars/grib1.mnth.fc.def b/definitions/mars/grib1.mnth.fc.def
deleted file mode 100644
index c482340..0000000
--- a/definitions/mars/grib1.mnth.fc.def
+++ /dev/null
@@ -1,16 +0,0 @@
-# assert(local=1)
-meta verificationDate         g1verificationdate(dataDate, dataTime, endStep) : read_only;
-meta monthlyVerificationDate  g1monthlydate(verificationDate) : dump,no_copy;
-alias mars.date             = monthlyVerificationDate;
-
-#
-# See GRIB-497
-#
-if (class is "em" || class is "e2")
-{
-   alias mars.step = endStep;
-}
-else
-{
-   alias mars.step = startStep;
-}
diff --git a/definitions/mars/grib1.msmm.hcmean.def b/definitions/mars/grib1.msmm.hcmean.def
deleted file mode 120000
index d273766..0000000
--- a/definitions/mars/grib1.msmm.hcmean.def
+++ /dev/null
@@ -1 +0,0 @@
-grib1.msmm.em.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.oper.me.def b/definitions/mars/grib1.oper.me.def
deleted file mode 120000
index 353243e..0000000
--- a/definitions/mars/grib1.oper.me.def
+++ /dev/null
@@ -1 +0,0 @@
-grib1.me.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.scda.me.def b/definitions/mars/grib1.scda.me.def
deleted file mode 120000
index 353243e..0000000
--- a/definitions/mars/grib1.scda.me.def
+++ /dev/null
@@ -1 +0,0 @@
-grib1.me.def
\ No newline at end of file
diff --git a/definitions/mars/grib1.wamo.fc.def b/definitions/mars/grib1.wamo.fc.def
deleted file mode 100644
index c482340..0000000
--- a/definitions/mars/grib1.wamo.fc.def
+++ /dev/null
@@ -1,16 +0,0 @@
-# assert(local=1)
-meta verificationDate         g1verificationdate(dataDate, dataTime, endStep) : read_only;
-meta monthlyVerificationDate  g1monthlydate(verificationDate) : dump,no_copy;
-alias mars.date             = monthlyVerificationDate;
-
-#
-# See GRIB-497
-#
-if (class is "em" || class is "e2")
-{
-   alias mars.step = endStep;
-}
-else
-{
-   alias mars.step = startStep;
-}
diff --git a/definitions/mars/grib1.wave.4v.def b/definitions/mars/grib1.wave.4v.def
deleted file mode 120000
index ff3ce52..0000000
--- a/definitions/mars/grib1.wave.4v.def
+++ /dev/null
@@ -1 +0,0 @@
-grib1.wave.def
\ No newline at end of file
diff --git a/definitions/mars/make_type_switch_case.sh b/definitions/mars/make_type_switch_case.sh
index 059e14d..ce80c46 100755
--- a/definitions/mars/make_type_switch_case.sh
+++ b/definitions/mars/make_type_switch_case.sh
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/metar/boot.def b/definitions/metar/boot.def
index d27ae11..d6c3d13 100644
--- a/definitions/metar/boot.def
+++ b/definitions/metar/boot.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -36,24 +36,25 @@ if ( g is "COR" ) {
 		alias isCorrection=one;
 		alias status=correction;
 		group g : dump; non_alpha na;
-}  
+}
 if (length(g) == 4) {
-		include "cccc.def";
+		include "metar/cccc.def";
 } else {
 		if (g is "METAR") {
 				rename(g,metarTwice);
 				group g : dump; non_alpha na;
-				if (length(g) == 4) { include  "cccc.def"; }
-				else { 
-						constant CCCC = "unknown"; 
-						constant coordinatesPresent = 0; 
+				if (length(g) == 4) { include "metar/cccc.def"; }
+				else {
+						constant CCCC = "unknown";
+						constant coordinatesPresent = 0;
 				}
 		} else {
-				constant CCCC = "unknown"; 
-				constant coordinatesPresent = 0; 
+				constant CCCC = "unknown";
+				constant coordinatesPresent = 0;
 		}
 }
 
+alias ls.CCCC=CCCC;
 if (substr(g,6,1) is "Z" && is_integer(g,0,6) ) {
 		rename(g,YYGGgg);
 		modify YYGGgg : hidden;
@@ -63,87 +64,90 @@ if (substr(g,6,1) is "Z" && is_integer(g,0,6) ) {
 		day = to_string(YYGGgg,0,2) : dump;
 		hour = to_string(YYGGgg,2,2) : dump;
 		minute = to_string(YYGGgg,4,2) : dump;
+    meta dateTime  sprintf("%s-%s-%s %s:%s",year,month,day,hour,minute);
+    alias ls.dateTime=dateTime;
 }
 
+
 if ( ! isCorrection && g is "COR" ) {
 		rename(g,cor);
 		alias status=correction;
 		alias isCorrection=one;
 		group g : dump; non_alpha na;
-}  
+}
 
-include "wrong_delayed.def";
+include "metar/wrong_delayed.def";
 
-if ( g is "NIL" ) { 
+if ( g is "NIL" ) {
 		rename(g,nil); group g : dump;
 } else {
-		if (g is "AUTO") { 
-				rename(g,auto); 
-				alias isAuto=true; 
-				group g : dump; non_alpha na; 
+		if (g is "AUTO") {
+				rename(g,auto);
+				alias isAuto=true;
+				group g : dump; non_alpha na;
 		}
 
-		include "wind.def";
-		include "horizontalVisibility.def";
+		include "metar/wind.def";
+		include "metar/horizontalVisibility.def";
 
-		if ( ! isCavok ) { 
-				include "present_weather.def"; 
-				include "clouds.def"; 
+		if ( ! isCavok ) {
+				include "metar/present_weather.def";
+				include "metar/clouds.def";
 		}
 
-		include "missing_field.def";
-		include "temperature.def";
-		include "qnh.def";
-		include "colour.def";
-		include "recent_weather.def";
-		include "wind_shear.def";
-		include "sea_state.def";
+		include "metar/missing_field.def";
+		include "metar/temperature.def";
+		include "metar/qnh.def";
+		include "metar/colour.def";
+		include "metar/recent_weather.def";
+		include "metar/wind_shear.def";
+		include "metar/sea_state.def";
 		template runwayState "metar/runwayState.def";
-		include "trend1.def";
-		include "trend2.def";
-		include "trend3.def";
-		include "trend4.def";
+		include "metar/trend1.def";
+		include "metar/trend2.def";
+		include "metar/trend3.def";
+		include "metar/trend4.def";
 
 }
 
-include "remark.def";
+include "metar/remark.def";
 
-if (length(g) == 0) { 
+if (length(g) == 0) {
 		modify g : hidden;
 } else {
-		if ( ! remarkPresent) { 
+		if ( ! remarkPresent) {
 				rename(g,skippedGroup);
 				group g : dump; non_alpha na;
-				include "colour.def";
-				include "recent_weather.def";
-				include "wind_shear.def";
-				include "sea_state.def";
+				include "metar/colour.def";
+				include "metar/recent_weather.def";
+				include "metar/wind_shear.def";
+				include "metar/sea_state.def";
 				template runwayState "metar/runwayState.def";
-				include "temperature.def";
-				include "qnh.def";
+				include "metar/temperature.def";
+				include "metar/qnh.def";
 				if (!presentTrend1) {
-						include "trend1.def";
-						include "trend2.def";
-						include "trend3.def";
-						include "trend4.def";
+						include "metar/trend1.def";
+						include "metar/trend2.def";
+						include "metar/trend3.def";
+						include "metar/trend4.def";
 				}
 		}
-		include "remark.def";
-		if ( ! remarkPresent) { 
+		include "metar/remark.def";
+		if ( ! remarkPresent) {
 				if ( length(g) == 0) {
 						modify g : hidden;
 				} else {
-						rename(g,unknownGroup) ; 
+						rename(g,unknownGroup) ;
 				}
 		}
 		group notDecoded("=") : dump;
-		if (remarkPresent) { 
-				rename(notDecoded,remark); 
+		if (remarkPresent) {
+				rename(notDecoded,remark);
 		}
 }
 ascii[1] endMark :read_only ;
 
-position totalLength; 
+position totalLength;
 position endOfMessage;
 
 meta lengthOfMessage evaluate( endOfMessage-startOfMessage);
diff --git a/definitions/metar/boot.flexible.def b/definitions/metar/boot.flexible.def
index e7f7e35..170cda6 100644
--- a/definitions/metar/boot.flexible.def
+++ b/definitions/metar/boot.flexible.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2012 ECMWF.
+# Copyright 2005-2016 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.
@@ -36,21 +36,21 @@ if ( g is "COR" ) {
 		alias isCorrection=one;
 		alias status=correction;
 		group g : dump; non_alpha na;
-}  
+}
 if (length(g) == 4) {
-		include "cccc.def";
+		include "metar/cccc.def";
 } else {
 		if (g is "METAR") {
 				rename(g,metarTwice);
 				group g : dump; non_alpha na;
-				if (length(g) == 4) { include  "cccc.def"; }
-				else { 
-						constant CCCC = "unknown"; 
-						constant coordinatesPresent = 0; 
+				if (length(g) == 4) { include "metar/cccc.def"; }
+				else {
+						constant CCCC = "unknown";
+						constant coordinatesPresent = 0;
 				}
 		} else {
-				constant CCCC = "unknown"; 
-				constant coordinatesPresent = 0; 
+				constant CCCC = "unknown";
+				constant coordinatesPresent = 0;
 		}
 }
 
@@ -70,80 +70,80 @@ if ( ! isCorrection && g is "COR" ) {
 		alias status=correction;
 		alias isCorrection=one;
 		group g : dump; non_alpha na;
-}  
+}
 
-include "wrong_delayed.def";
+include "metar/wrong_delayed.def";
 
-if ( g is "NIL" ) { 
+if ( g is "NIL" ) {
 		rename(g,nil); group g : dump;
 } else {
-		if (g is "AUTO") { 
-				rename(g,auto); 
-				alias isAuto=true; 
-				group g : dump; non_alpha na; 
+		if (g is "AUTO") {
+				rename(g,auto);
+				alias isAuto=true;
+				group g : dump; non_alpha na;
 		}
 
-		include "wind.def";
-		include "horizontalVisibility.def";
+		include "metar/wind.def";
+		include "metar/horizontalVisibility.def";
 
-		if ( ! isCavok ) { 
-				include "present_weather.def"; 
-				include "clouds.def"; 
+		if ( ! isCavok ) {
+				include "metar/present_weather.def";
+				include "metar/clouds.def";
 		}
 
-		include "missing_field.def";
-		include "temperature.def";
-		include "qnh.def";
-		include "colour.def";
-		include "recent_weather.def";
-		include "wind_shear.def";
-		include "sea_state.def";
+		include "metar/missing_field.def";
+		include "metar/temperature.def";
+		include "metar/qnh.def";
+		include "metar/colour.def";
+		include "metar/recent_weather.def";
+		include "metar/wind_shear.def";
+		include "metar/sea_state.def";
 		template runwayState "metar/runwayState.def";
-		include "trend1.def";
-		include "trend2.def";
-		include "trend3.def";
-		include "trend4.def";
+		include "metar/trend1.def";
+		include "metar/trend2.def";
+		include "metar/trend3.def";
+		include "metar/trend4.def";
 
 }
 
-include "remark.def";
+include "metar/remark.def";
 
-if (length(g) == 0) { 
+if (length(g) == 0) {
 		modify g : hidden;
 } else {
-		if ( ! remarkPresent) { 
+		if ( ! remarkPresent) {
 				rename(g,skippedGroup);
 				group g : dump; non_alpha na;
-				include "colour.def";
-				include "recent_weather.def";
-				include "wind_shear.def";
-				include "sea_state.def";
+				include "metar/colour.def";
+				include "metar/recent_weather.def";
+				include "metar/wind_shear.def";
+				include "metar/sea_state.def";
 				template runwayState "metar/runwayState.def";
-				include "temperature.def";
-				include "qnh.def";
+				include "metar/temperature.def";
+				include "metar/qnh.def";
 				if (!presentTrend1) {
-						include "trend1.def";
-						include "trend2.def";
-						include "trend3.def";
-						include "trend4.def";
+						include "metar/trend1.def";
+						include "metar/trend2.def";
+						include "metar/trend3.def";
+						include "metar/trend4.def";
 				}
 		}
-		include "remark.def";
-		if ( ! remarkPresent) { 
+		include "metar/remark.def";
+		if ( ! remarkPresent) {
 				if ( length(g) == 0) {
 						modify g : hidden;
 				} else {
-						rename(g,unknownGroup) ; 
+						rename(g,unknownGroup) ;
 				}
 		}
 		group notDecoded("=") : dump;
-		if (remarkPresent) { 
-				rename(notDecoded,remark); 
+		if (remarkPresent) {
+				rename(notDecoded,remark);
 		}
 }
 ascii[1] endMark :read_only ;
 
-position totalLength; 
+position totalLength;
 position endOfMessage;
 
 meta lengthOfMessage evaluate( endOfMessage-startOfMessage);
diff --git a/definitions/metar/horizontalVisibility.def b/definitions/metar/horizontalVisibility.def
index 3bd4483..e84e7a0 100644
--- a/definitions/metar/horizontalVisibility.def
+++ b/definitions/metar/horizontalVisibility.def
@@ -61,8 +61,8 @@ if ( g is "CAVOK") {
 				variationOfVisibilityDirection=dict_search("metar/direction.table",directionOfVariation,1) : string_type;
 				variationOfVisibilityDirectionAngle=dict_search("metar/direction.table",directionOfVariation,2) ;
 		}
-		include "rvr1.def";
-		include "rvr2.def";
-		include "rvr3.def";
-		include "rvr4.def";
+		include "metar/rvr1.def";
+		include "metar/rvr2.def";
+		include "metar/rvr3.def";
+		include "metar/rvr4.def";
 } 
diff --git a/definitions/metar/runwayState.def b/definitions/metar/runwayState.def
index 3653738..51025f1 100644
--- a/definitions/metar/runwayState.def
+++ b/definitions/metar/runwayState.def
@@ -1,4 +1,4 @@
-include "runwayState1.def";
-include "runwayState2.def";
-include "runwayState3.def";
-include "runwayState4.def";
+include "metar/runwayState1.def";
+include "metar/runwayState2.def";
+include "metar/runwayState3.def";
+include "metar/runwayState4.def";
diff --git a/definitions/metar/trend1.def b/definitions/metar/trend1.def
index 4f28cc6..689ad13 100644
--- a/definitions/metar/trend1.def
+++ b/definitions/metar/trend1.def
@@ -10,7 +10,7 @@ if (! nosigPresent) {
 				rename(g,changeIndicatorCodedTrend1);
 				constant changeIndicatorTrend1="BECOMING";
 				group g : dump; non_alpha na;
-		} 
+		}
 		if (!defined(changeIndicatorTrend1) && g is "TEMPO" ) {
 				alias presentTrend1=one;
 				rename(g,changeIndicatorCodedTrend1);
@@ -36,13 +36,13 @@ if (! nosigPresent) {
 						endHourTrend1=to_string(untilTrend1,2,2) ;
 						endMinuteTrend1=to_string(untilTrend1,4,2);
 				}
-				include "wind_Trend1.def";
+				include "metar/wind_Trend1.def";
 
-				include "horizontalVisibility_Trend1.def";
+				include "metar/horizontalVisibility_Trend1.def";
 
-				if ( ! isCavokTrend1) { 
-						include "present_weather_Trend1.def";
-						include "clouds_Trend1.def"; 
+				if ( ! isCavokTrend1) {
+						include "metar/present_weather_Trend1.def";
+						include "metar/clouds_Trend1.def";
 				}
 		} else {
 				if (substr(g,0,2) is "FM") {
@@ -52,13 +52,13 @@ if (! nosigPresent) {
 						group g : dump; non_alpha na;
 						beginHourTrend1=to_string(fromTrend1,2,2);
 						beginMinuteTrend1=to_string(fromTrend1,4,2);
-						include "wind_Trend1.def";
+						include "metar/wind_Trend1.def";
 
-						include "horizontalVisibility_Trend1.def";
+						include "metar/horizontalVisibility_Trend1.def";
 
-						if ( ! isCavokTrend1) { 
-								include "present_weather_Trend1.def";
-								include "clouds_Trend1.def"; 
+						if ( ! isCavokTrend1) {
+								include "metar/present_weather_Trend1.def";
+								include "metar/clouds_Trend1.def";
 						}
 				}
 		}
diff --git a/definitions/metar/trend2.def b/definitions/metar/trend2.def
index 4b0d3d9..e658cad 100644
--- a/definitions/metar/trend2.def
+++ b/definitions/metar/trend2.def
@@ -10,7 +10,7 @@ if (! nosigPresent) {
 				rename(g,changeIndicatorCodedTrend2);
 				constant changeIndicatorTrend2="BECOMING";
 				group g : dump; non_alpha na;
-		} 
+		}
 		if (!defined(changeIndicatorTrend2) && g is "TEMPO" ) {
 				alias presentTrend2=one;
 				rename(g,changeIndicatorCodedTrend2);
@@ -36,13 +36,13 @@ if (! nosigPresent) {
 						endHourTrend2=to_string(untilTrend2,2,2) ;
 						endMinuteTrend2=to_string(untilTrend2,4,2);
 				}
-				include "wind_Trend2.def";
+				include "metar/wind_Trend2.def";
 
-				include "horizontalVisibility_Trend2.def";
+				include "metar/horizontalVisibility_Trend2.def";
 
-				if ( ! isCavokTrend2) { 
-						include "present_weather_Trend2.def";
-						include "clouds_Trend2.def"; 
+				if ( ! isCavokTrend2) {
+						include "metar/present_weather_Trend2.def";
+						include "metar/clouds_Trend2.def";
 				}
 		} else {
 				if (substr(g,0,2) is "FM") {
@@ -52,13 +52,13 @@ if (! nosigPresent) {
 						group g : dump; non_alpha na;
 						beginHourTrend2=to_string(fromTrend2,2,2);
 						beginMinuteTrend2=to_string(fromTrend2,4,2);
-						include "wind_Trend2.def";
+						include "metar/wind_Trend2.def";
 
-						include "horizontalVisibility_Trend2.def";
+						include "metar/horizontalVisibility_Trend2.def";
 
-						if ( ! isCavokTrend2) { 
-								include "present_weather_Trend2.def";
-								include "clouds_Trend2.def"; 
+						if ( ! isCavokTrend2) {
+								include "metar/present_weather_Trend2.def";
+								include "metar/clouds_Trend2.def";
 						}
 				}
 		}
diff --git a/definitions/metar/trend3.def b/definitions/metar/trend3.def
index a8b44d1..f0cfe4e 100644
--- a/definitions/metar/trend3.def
+++ b/definitions/metar/trend3.def
@@ -10,7 +10,7 @@ if (! nosigPresent) {
 				rename(g,changeIndicatorCodedTrend3);
 				constant changeIndicatorTrend3="BECOMING";
 				group g : dump; non_alpha na;
-		} 
+		}
 		if (!defined(changeIndicatorTrend3) && g is "TEMPO" ) {
 				alias presentTrend3=one;
 				rename(g,changeIndicatorCodedTrend3);
@@ -36,13 +36,13 @@ if (! nosigPresent) {
 						endHourTrend3=to_string(untilTrend3,2,2) ;
 						endMinuteTrend3=to_string(untilTrend3,4,2);
 				}
-				include "wind_Trend3.def";
+				include "metar/wind_Trend3.def";
 
-				include "horizontalVisibility_Trend3.def";
+				include "metar/horizontalVisibility_Trend3.def";
 
-				if ( ! isCavokTrend3) { 
-						include "present_weather_Trend3.def";
-						include "clouds_Trend3.def"; 
+				if ( ! isCavokTrend3) {
+						include "metar/present_weather_Trend3.def";
+						include "metar/clouds_Trend3.def";
 				}
 		} else {
 				if (substr(g,0,2) is "FM") {
@@ -52,13 +52,13 @@ if (! nosigPresent) {
 						group g : dump; non_alpha na;
 						beginHourTrend3=to_string(fromTrend3,2,2);
 						beginMinuteTrend3=to_string(fromTrend3,4,2);
-						include "wind_Trend3.def";
+						include "metar/wind_Trend3.def";
 
-						include "horizontalVisibility_Trend3.def";
+						include "metar/horizontalVisibility_Trend3.def";
 
-						if ( ! isCavokTrend3) { 
-								include "present_weather_Trend3.def";
-								include "clouds_Trend3.def"; 
+						if ( ! isCavokTrend3) {
+								include "metar/present_weather_Trend3.def";
+								include "metar/clouds_Trend3.def";
 						}
 				}
 		}
diff --git a/definitions/metar/trend4.def b/definitions/metar/trend4.def
index bc460b4..d374226 100644
--- a/definitions/metar/trend4.def
+++ b/definitions/metar/trend4.def
@@ -10,7 +10,7 @@ if (! nosigPresent) {
 				rename(g,changeIndicatorCodedTrend4);
 				constant changeIndicatorTrend4="BECOMING";
 				group g : dump; non_alpha na;
-		} 
+		}
 		if (!defined(changeIndicatorTrend4) && g is "TEMPO" ) {
 				alias presentTrend4=one;
 				rename(g,changeIndicatorCodedTrend4);
@@ -36,13 +36,13 @@ if (! nosigPresent) {
 						endHourTrend4=to_string(untilTrend4,2,2) ;
 						endMinuteTrend4=to_string(untilTrend4,4,2);
 				}
-				include "wind_Trend4.def";
+				include "metar/wind_Trend4.def";
 
-				include "horizontalVisibility_Trend4.def";
+				include "metar/horizontalVisibility_Trend4.def";
 
-				if ( ! isCavokTrend4) { 
-						include "present_weather_Trend4.def";
-						include "clouds_Trend4.def"; 
+				if ( ! isCavokTrend4) {
+						include "metar/present_weather_Trend4.def";
+						include "metar/clouds_Trend4.def";
 				}
 		} else {
 				if (substr(g,0,2) is "FM") {
@@ -52,13 +52,13 @@ if (! nosigPresent) {
 						group g : dump; non_alpha na;
 						beginHourTrend4=to_string(fromTrend4,2,2);
 						beginMinuteTrend4=to_string(fromTrend4,4,2);
-						include "wind_Trend4.def";
+						include "metar/wind_Trend4.def";
 
-						include "horizontalVisibility_Trend4.def";
+						include "metar/horizontalVisibility_Trend4.def";
 
-						if ( ! isCavokTrend4) { 
-								include "present_weather_Trend4.def";
-								include "clouds_Trend4.def"; 
+						if ( ! isCavokTrend4) {
+								include "metar/present_weather_Trend4.def";
+								include "metar/clouds_Trend4.def";
 						}
 				}
 		}
diff --git a/definitions/publish_new_parameters.sh b/definitions/publish_new_parameters.sh
index ec5288a..843a13c 100755
--- a/definitions/publish_new_parameters.sh
+++ b/definitions/publish_new_parameters.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/taf/boot.def b/definitions/taf/boot.def
index d27ae11..4b409c5 100644
--- a/definitions/taf/boot.def
+++ b/definitions/taf/boot.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -38,12 +38,12 @@ if ( g is "COR" ) {
 		group g : dump; non_alpha na;
 }  
 if (length(g) == 4) {
-		include "cccc.def";
+		include "taf/cccc.def";
 } else {
 		if (g is "METAR") {
 				rename(g,metarTwice);
 				group g : dump; non_alpha na;
-				if (length(g) == 4) { include  "cccc.def"; }
+				if (length(g) == 4) { include "taf/cccc.def"; }
 				else { 
 						constant CCCC = "unknown"; 
 						constant coordinatesPresent = 0; 
@@ -72,7 +72,7 @@ if ( ! isCorrection && g is "COR" ) {
 		group g : dump; non_alpha na;
 }  
 
-include "wrong_delayed.def";
+include "taf/wrong_delayed.def";
 
 if ( g is "NIL" ) { 
 		rename(g,nil); group g : dump;
@@ -83,30 +83,30 @@ if ( g is "NIL" ) {
 				group g : dump; non_alpha na; 
 		}
 
-		include "wind.def";
-		include "horizontalVisibility.def";
+		include "taf/wind.def";
+		include "taf/horizontalVisibility.def";
 
 		if ( ! isCavok ) { 
-				include "present_weather.def"; 
-				include "clouds.def"; 
+				include "taf/present_weather.def";
+				include "taf/clouds.def";
 		}
 
-		include "missing_field.def";
-		include "temperature.def";
-		include "qnh.def";
-		include "colour.def";
-		include "recent_weather.def";
-		include "wind_shear.def";
-		include "sea_state.def";
+		include "taf/missing_field.def";
+		include "taf/temperature.def";
+		include "taf/qnh.def";
+		include "taf/colour.def";
+		include "taf/recent_weather.def";
+		include "taf/wind_shear.def";
+		include "taf/sea_state.def";
 		template runwayState "metar/runwayState.def";
-		include "trend1.def";
-		include "trend2.def";
-		include "trend3.def";
-		include "trend4.def";
+		include "taf/trend1.def";
+		include "taf/trend2.def";
+		include "taf/trend3.def";
+		include "taf/trend4.def";
 
 }
 
-include "remark.def";
+include "taf/remark.def";
 
 if (length(g) == 0) { 
 		modify g : hidden;
@@ -114,21 +114,21 @@ if (length(g) == 0) {
 		if ( ! remarkPresent) { 
 				rename(g,skippedGroup);
 				group g : dump; non_alpha na;
-				include "colour.def";
-				include "recent_weather.def";
-				include "wind_shear.def";
-				include "sea_state.def";
+				include "taf/colour.def";
+				include "taf/recent_weather.def";
+				include "taf/wind_shear.def";
+				include "taf/sea_state.def";
 				template runwayState "metar/runwayState.def";
-				include "temperature.def";
-				include "qnh.def";
+				include "taf/temperature.def";
+				include "taf/qnh.def";
 				if (!presentTrend1) {
-						include "trend1.def";
-						include "trend2.def";
-						include "trend3.def";
-						include "trend4.def";
+						include "taf/trend1.def";
+						include "taf/trend2.def";
+						include "taf/trend3.def";
+						include "taf/trend4.def";
 				}
 		}
-		include "remark.def";
+		include "taf/remark.def";
 		if ( ! remarkPresent) { 
 				if ( length(g) == 0) {
 						modify g : hidden;
diff --git a/definitions/taf/horizontalVisibility.def b/definitions/taf/horizontalVisibility.def
index 3bd4483..6cbd754 100644
--- a/definitions/taf/horizontalVisibility.def
+++ b/definitions/taf/horizontalVisibility.def
@@ -61,8 +61,8 @@ if ( g is "CAVOK") {
 				variationOfVisibilityDirection=dict_search("metar/direction.table",directionOfVariation,1) : string_type;
 				variationOfVisibilityDirectionAngle=dict_search("metar/direction.table",directionOfVariation,2) ;
 		}
-		include "rvr1.def";
-		include "rvr2.def";
-		include "rvr3.def";
-		include "rvr4.def";
+		include "taf/rvr1.def";
+		include "taf/rvr2.def";
+		include "taf/rvr3.def";
+		include "taf/rvr4.def";
 } 
diff --git a/definitions/taf/runwayState.def b/definitions/taf/runwayState.def
index 3653738..3413b8c 100644
--- a/definitions/taf/runwayState.def
+++ b/definitions/taf/runwayState.def
@@ -1,4 +1,4 @@
-include "runwayState1.def";
-include "runwayState2.def";
-include "runwayState3.def";
-include "runwayState4.def";
+include "taf/runwayState1.def";
+include "taf/runwayState2.def";
+include "taf/runwayState3.def";
+include "taf/runwayState4.def";
diff --git a/definitions/taf/trend1.def b/definitions/taf/trend1.def
index 4f28cc6..ff1384f 100644
--- a/definitions/taf/trend1.def
+++ b/definitions/taf/trend1.def
@@ -36,13 +36,13 @@ if (! nosigPresent) {
 						endHourTrend1=to_string(untilTrend1,2,2) ;
 						endMinuteTrend1=to_string(untilTrend1,4,2);
 				}
-				include "wind_Trend1.def";
+				include "taf/wind_Trend1.def";
 
-				include "horizontalVisibility_Trend1.def";
+				include "taf/horizontalVisibility_Trend1.def";
 
 				if ( ! isCavokTrend1) { 
-						include "present_weather_Trend1.def";
-						include "clouds_Trend1.def"; 
+						include "taf/present_weather_Trend1.def";
+						include "taf/clouds_Trend1.def"; 
 				}
 		} else {
 				if (substr(g,0,2) is "FM") {
@@ -52,13 +52,13 @@ if (! nosigPresent) {
 						group g : dump; non_alpha na;
 						beginHourTrend1=to_string(fromTrend1,2,2);
 						beginMinuteTrend1=to_string(fromTrend1,4,2);
-						include "wind_Trend1.def";
+						include "taf/wind_Trend1.def";
 
-						include "horizontalVisibility_Trend1.def";
+						include "taf/horizontalVisibility_Trend1.def";
 
 						if ( ! isCavokTrend1) { 
-								include "present_weather_Trend1.def";
-								include "clouds_Trend1.def"; 
+								include "taf/present_weather_Trend1.def";
+								include "taf/clouds_Trend1.def"; 
 						}
 				}
 		}
diff --git a/definitions/taf/trend2.def b/definitions/taf/trend2.def
index 4b0d3d9..5027886 100644
--- a/definitions/taf/trend2.def
+++ b/definitions/taf/trend2.def
@@ -36,13 +36,13 @@ if (! nosigPresent) {
 						endHourTrend2=to_string(untilTrend2,2,2) ;
 						endMinuteTrend2=to_string(untilTrend2,4,2);
 				}
-				include "wind_Trend2.def";
+				include "taf/wind_Trend2.def";
 
-				include "horizontalVisibility_Trend2.def";
+				include "taf/horizontalVisibility_Trend2.def";
 
 				if ( ! isCavokTrend2) { 
-						include "present_weather_Trend2.def";
-						include "clouds_Trend2.def"; 
+						include "taf/present_weather_Trend2.def";
+						include "taf/clouds_Trend2.def"; 
 				}
 		} else {
 				if (substr(g,0,2) is "FM") {
@@ -52,13 +52,13 @@ if (! nosigPresent) {
 						group g : dump; non_alpha na;
 						beginHourTrend2=to_string(fromTrend2,2,2);
 						beginMinuteTrend2=to_string(fromTrend2,4,2);
-						include "wind_Trend2.def";
+						include "taf/wind_Trend2.def";
 
-						include "horizontalVisibility_Trend2.def";
+						include "taf/horizontalVisibility_Trend2.def";
 
 						if ( ! isCavokTrend2) { 
-								include "present_weather_Trend2.def";
-								include "clouds_Trend2.def"; 
+								include "taf/present_weather_Trend2.def";
+								include "taf/clouds_Trend2.def"; 
 						}
 				}
 		}
diff --git a/definitions/taf/trend3.def b/definitions/taf/trend3.def
index a8b44d1..0725d41 100644
--- a/definitions/taf/trend3.def
+++ b/definitions/taf/trend3.def
@@ -36,13 +36,13 @@ if (! nosigPresent) {
 						endHourTrend3=to_string(untilTrend3,2,2) ;
 						endMinuteTrend3=to_string(untilTrend3,4,2);
 				}
-				include "wind_Trend3.def";
+				include "taf/wind_Trend3.def";
 
-				include "horizontalVisibility_Trend3.def";
+				include "taf/horizontalVisibility_Trend3.def";
 
 				if ( ! isCavokTrend3) { 
-						include "present_weather_Trend3.def";
-						include "clouds_Trend3.def"; 
+						include "taf/present_weather_Trend3.def";
+						include "taf/clouds_Trend3.def"; 
 				}
 		} else {
 				if (substr(g,0,2) is "FM") {
@@ -52,13 +52,13 @@ if (! nosigPresent) {
 						group g : dump; non_alpha na;
 						beginHourTrend3=to_string(fromTrend3,2,2);
 						beginMinuteTrend3=to_string(fromTrend3,4,2);
-						include "wind_Trend3.def";
+						include "taf/wind_Trend3.def";
 
-						include "horizontalVisibility_Trend3.def";
+						include "taf/horizontalVisibility_Trend3.def";
 
 						if ( ! isCavokTrend3) { 
-								include "present_weather_Trend3.def";
-								include "clouds_Trend3.def"; 
+								include "taf/present_weather_Trend3.def";
+								include "taf/clouds_Trend3.def"; 
 						}
 				}
 		}
diff --git a/definitions/taf/trend4.def b/definitions/taf/trend4.def
index bc460b4..529bde5 100644
--- a/definitions/taf/trend4.def
+++ b/definitions/taf/trend4.def
@@ -36,13 +36,13 @@ if (! nosigPresent) {
 						endHourTrend4=to_string(untilTrend4,2,2) ;
 						endMinuteTrend4=to_string(untilTrend4,4,2);
 				}
-				include "wind_Trend4.def";
+				include "taf/wind_Trend4.def";
 
-				include "horizontalVisibility_Trend4.def";
+				include "taf/horizontalVisibility_Trend4.def";
 
 				if ( ! isCavokTrend4) { 
-						include "present_weather_Trend4.def";
-						include "clouds_Trend4.def"; 
+						include "taf/present_weather_Trend4.def";
+						include "taf/clouds_Trend4.def"; 
 				}
 		} else {
 				if (substr(g,0,2) is "FM") {
@@ -52,13 +52,13 @@ if (! nosigPresent) {
 						group g : dump; non_alpha na;
 						beginHourTrend4=to_string(fromTrend4,2,2);
 						beginMinuteTrend4=to_string(fromTrend4,4,2);
-						include "wind_Trend4.def";
+						include "taf/wind_Trend4.def";
 
-						include "horizontalVisibility_Trend4.def";
+						include "taf/horizontalVisibility_Trend4.def";
 
 						if ( ! isCavokTrend4) { 
-								include "present_weather_Trend4.def";
-								include "clouds_Trend4.def"; 
+								include "taf/present_weather_Trend4.def";
+								include "taf/clouds_Trend4.def"; 
 						}
 				}
 		}
diff --git a/definitions/tide/boot.def b/definitions/tide/boot.def
index eb7a3c7..e795d8a 100644
--- a/definitions/tide/boot.def
+++ b/definitions/tide/boot.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/tide/mars_labeling.def b/definitions/tide/mars_labeling.def
index f4ddccb..99d972b 100644
--- a/definitions/tide/mars_labeling.def
+++ b/definitions/tide/mars_labeling.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/tide/section.1.def b/definitions/tide/section.1.def
index b0e5fbd..45c1e0f 100644
--- a/definitions/tide/section.1.def
+++ b/definitions/tide/section.1.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/tide/section.4.def b/definitions/tide/section.4.def
index f0c72cb..3c85fae 100644
--- a/definitions/tide/section.4.def
+++ b/definitions/tide/section.4.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/wrap/boot.def b/definitions/wrap/boot.def
index 947f115..80e45a2 100644
--- a/definitions/wrap/boot.def
+++ b/definitions/wrap/boot.def
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/definitions/x.grib b/definitions/x.grib
deleted file mode 100644
index 7565341..0000000
Binary files a/definitions/x.grib and /dev/null differ
diff --git a/eccodes-import.cmake.in b/eccodes-import.cmake.in
new file mode 100644
index 0000000..9a6f783
--- /dev/null
+++ b/eccodes-import.cmake.in
@@ -0,0 +1,9 @@
+if( @PNAME at _IS_BUILD_DIR_EXPORT )
+  set( ECCODES_DEFINITION_PATH  @CMAKE_BINARY_DIR@/@ECCODES_DEFINITION_SUFF@ )
+  set( ECCODES_SAMPLES_PATH     @CMAKE_BINARY_DIR@/@ECCODES_SAMPLES_SUFF@ )
+  set( ECCODES_IFS_SAMPLES_PATH @CMAKE_BINARY_DIR@/@ECCODES_IFS_SAMPLES_SUFF@ )
+else()
+  set( ECCODES_DEFINITION_PATH  @CMAKE_INSTALL_PREFIX@/@ECCODES_DEFINITION_SUFF@ )
+  set( ECCODES_SAMPLES_PATH     @CMAKE_INSTALL_PREFIX@/@ECCODES_SAMPLES_SUFF@ )
+  set( ECCODES_IFS_SAMPLES_PATH @CMAKE_INSTALL_PREFIX@/@ECCODES_IFS_SAMPLES_SUFF@ )
+endif()
diff --git a/eccodes.sublime-project b/eccodes.sublime-project
new file mode 100644
index 0000000..b141dd9
--- /dev/null
+++ b/eccodes.sublime-project
@@ -0,0 +1,18 @@
+{
+    "folders": [
+        {
+            "path": ".", 
+            "follow_symlinks": true
+        }
+    ], 
+    "build_systems": [
+        {
+            "working_dir": "${project_path}/../../build/grib_api", 
+            "cmd": [
+                "make"
+            ], 
+            "file_regex": "([/\\w\\-\\.]+):(\\d+):(\\d+:)?", 
+            "name": "Build"
+        }
+    ]
+}
diff --git a/eccodes_config.h.in b/eccodes_config.h.in
index d09883a..d055a9c 100644
--- a/eccodes_config.h.in
+++ b/eccodes_config.h.in
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -32,6 +32,7 @@
 #define GRIB_MEM_ALIGN      @GRIB_MEM_ALIGN@
 
 #define GRIB_PTHREADS       @GRIB_PTHREADS@
+#define GRIB_OMP_THREADS    @GRIB_OMP_THREADS@
 
 #define ECCODES_SAMPLES_PATH    "@ECCODES_SAMPLES_PATH@"
 
diff --git a/examples/C/.deps/box.Po b/examples/C/.deps/box.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/box.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/bufr_attributes.Po b/examples/C/.deps/bufr_attributes.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/bufr_attributes.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/bufr_clone.Po b/examples/C/.deps/bufr_clone.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/bufr_clone.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/bufr_expanded.Po b/examples/C/.deps/bufr_expanded.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/bufr_expanded.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/bufr_get_keys.Po b/examples/C/.deps/bufr_get_keys.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/bufr_get_keys.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/bufr_keys_iterator.Po b/examples/C/.deps/bufr_keys_iterator.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/bufr_keys_iterator.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/bufr_missing.Po b/examples/C/.deps/bufr_missing.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/bufr_missing.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/bufr_read_header.Po b/examples/C/.deps/bufr_read_header.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/bufr_read_header.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/bufr_read_scatterometer.Po b/examples/C/.deps/bufr_read_scatterometer.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/bufr_read_scatterometer.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/bufr_read_synop.Po b/examples/C/.deps/bufr_read_synop.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/bufr_read_synop.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/bufr_read_temp.Po b/examples/C/.deps/bufr_read_temp.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/bufr_read_temp.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/bufr_set_keys.Po b/examples/C/.deps/bufr_set_keys.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/bufr_set_keys.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/bufr_subset.Po b/examples/C/.deps/bufr_subset.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/bufr_subset.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/check_gaussian_grid.Po b/examples/C/.deps/check_gaussian_grid.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/check_gaussian_grid.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/get_product_kind.Po b/examples/C/.deps/get_product_kind.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/get_product_kind.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/grib_clone.Po b/examples/C/.deps/grib_clone.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/grib_clone.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/grib_ensemble_index.Po b/examples/C/.deps/grib_ensemble_index.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/grib_ensemble_index.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/grib_get_data.Po b/examples/C/.deps/grib_get_data.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/grib_get_data.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/grib_get_keys.Po b/examples/C/.deps/grib_get_keys.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/grib_get_keys.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/grib_index.Po b/examples/C/.deps/grib_index.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/grib_index.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/grib_iterator.Po b/examples/C/.deps/grib_iterator.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/grib_iterator.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/grib_iterator_bitmap.Po b/examples/C/.deps/grib_iterator_bitmap.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/grib_iterator_bitmap.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/grib_keys_iterator.Po b/examples/C/.deps/grib_keys_iterator.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/grib_keys_iterator.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/grib_list.Po b/examples/C/.deps/grib_list.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/grib_list.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/grib_multi.Po b/examples/C/.deps/grib_multi.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/grib_multi.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/grib_multi_write.Po b/examples/C/.deps/grib_multi_write.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/grib_multi_write.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/grib_nearest.Po b/examples/C/.deps/grib_nearest.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/grib_nearest.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/grib_precision.Po b/examples/C/.deps/grib_precision.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/grib_precision.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/grib_print_data.Po b/examples/C/.deps/grib_print_data.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/grib_print_data.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/grib_set_bitmap.Po b/examples/C/.deps/grib_set_bitmap.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/grib_set_bitmap.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/grib_set_data.Po b/examples/C/.deps/grib_set_data.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/grib_set_data.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/grib_set_keys.Po b/examples/C/.deps/grib_set_keys.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/grib_set_keys.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/grib_set_pv.Po b/examples/C/.deps/grib_set_pv.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/grib_set_pv.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/large_grib1.Po b/examples/C/.deps/large_grib1.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/large_grib1.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/mars_param.Po b/examples/C/.deps/mars_param.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/mars_param.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/multi2.Po b/examples/C/.deps/multi2.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/multi2.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/new_sample.Po b/examples/C/.deps/new_sample.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/new_sample.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/points.Po b/examples/C/.deps/points.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/points.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/sections_copy.Po b/examples/C/.deps/sections_copy.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/sections_copy.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/set_missing.Po b/examples/C/.deps/set_missing.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/set_missing.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/.deps/values_check.Po b/examples/C/.deps/values_check.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/C/.deps/values_check.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/C/CMakeLists.txt b/examples/C/CMakeLists.txt
index 0ac60a3..feb50b9 100644
--- a/examples/C/CMakeLists.txt
+++ b/examples/C/CMakeLists.txt
@@ -3,6 +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} )
 
 # Build the executables used by test scripts
 ################################################
@@ -31,7 +32,6 @@ list( APPEND test_bins
       grib_iterator_bitmap
       large_grib1
       grib_clone
-      check_gaussian_grid
       grib_ensemble_index
       get_product_kind
       bufr_attributes
@@ -68,12 +68,12 @@ list( APPEND tests
    grib_precision
    grib_clone
    grib_set_pv
+   grib_set_bitmap
    grib_list
    grib_get_data
    large_grib1
    set_missing
    sections_copy
-   check_gaussian_grids
    bufr_attributes
    bufr_clone
    bufr_expanded
@@ -89,18 +89,17 @@ list( APPEND tests
    get_product_kind
 )
 foreach( test ${tests} )
-    ecbuild_add_test( TARGET c_${test}
+    ecbuild_add_test( TARGET eccodes_c_${test}
                   TYPE       SCRIPT
                   COMMAND    ${CMAKE_CURRENT_SOURCE_DIR}/${test}.sh
-                  RESOURCES  include.sh
-                  TEST_DEPENDS get_gribs get_bufrs
+                  TEST_DEPENDS eccodes_get_gribs eccodes_get_bufrs
     )
 endforeach()
 
 
 #############################################
 # Tests with no script
-ecbuild_add_test( TARGET    c_new_sample
+ecbuild_add_test( TARGET    eccodes_c_new_sample
                   SOURCES   new_sample.c
                   LIBS      eccodes
                   ARGS      "out.grib"
diff --git a/examples/C/Makefile b/examples/C/Makefile
deleted file mode 100644
index 0852921..0000000
--- a/examples/C/Makefile
+++ /dev/null
@@ -1,1715 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# examples/C/Makefile.  Generated from Makefile.in by configure.
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/eccodes
-pkgincludedir = $(includedir)/eccodes
-pkglibdir = $(libdir)/eccodes
-pkglibexecdir = $(libexecdir)/eccodes
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = x86_64-suse-linux-gnu
-host_triplet = x86_64-suse-linux-gnu
-noinst_PROGRAMS = c_grib_nearest$(EXEEXT) c_grib_set_bitmap$(EXEEXT) \
-	c_grib_iterator$(EXEEXT) c_grib_get_keys$(EXEEXT) \
-	c_grib_print_data$(EXEEXT) c_grib_set_keys$(EXEEXT) \
-	c_set_missing$(EXEEXT) c_grib_keys_iterator$(EXEEXT) \
-	c_grib_set_data$(EXEEXT) c_grib_index$(EXEEXT) \
-	c_mars_param$(EXEEXT) c_values_check$(EXEEXT) c_box$(EXEEXT) \
-	c_grib_multi$(EXEEXT) c_multi2$(EXEEXT) \
-	c_grib_multi_write$(EXEEXT) c_grib_precision$(EXEEXT) \
-	c_grib_set_pv$(EXEEXT) c_grib_list$(EXEEXT) \
-	c_sections_copy$(EXEEXT) c_large_grib1$(EXEEXT) \
-	c_grib_get_data$(EXEEXT) c_grib_iterator_bitmap$(EXEEXT) \
-	c_grib_clone$(EXEEXT) c_new_sample$(EXEEXT) \
-	c_check_gaussian_grid$(EXEEXT) c_grib_ensemble_index$(EXEEXT) \
-	c_points$(EXEEXT) c_bufr_attributes$(EXEEXT) \
-	c_bufr_clone$(EXEEXT) c_bufr_expanded$(EXEEXT) \
-	c_bufr_get_keys$(EXEEXT) c_bufr_read_header$(EXEEXT) \
-	c_bufr_read_scatterometer$(EXEEXT) c_bufr_read_synop$(EXEEXT) \
-	c_bufr_get_keys$(EXEEXT) c_bufr_subset$(EXEEXT) \
-	c_bufr_keys_iterator$(EXEEXT) c_bufr_set_keys$(EXEEXT) \
-	c_bufr_missing$(EXEEXT) c_bufr_read_temp$(EXEEXT) \
-	c_get_product_kind$(EXEEXT)
-subdir = examples/C
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/config/depcomp $(top_srcdir)/config/test-driver
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am_c_box_OBJECTS = box.$(OBJEXT)
-c_box_OBJECTS = $(am_c_box_OBJECTS)
-c_box_LDADD = $(LDADD)
-c_box_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-am_c_bufr_attributes_OBJECTS = bufr_attributes.$(OBJEXT)
-c_bufr_attributes_OBJECTS = $(am_c_bufr_attributes_OBJECTS)
-c_bufr_attributes_LDADD = $(LDADD)
-c_bufr_attributes_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_bufr_clone_OBJECTS = bufr_clone.$(OBJEXT)
-c_bufr_clone_OBJECTS = $(am_c_bufr_clone_OBJECTS)
-c_bufr_clone_LDADD = $(LDADD)
-c_bufr_clone_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_bufr_expanded_OBJECTS = bufr_expanded.$(OBJEXT)
-c_bufr_expanded_OBJECTS = $(am_c_bufr_expanded_OBJECTS)
-c_bufr_expanded_LDADD = $(LDADD)
-c_bufr_expanded_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_bufr_get_keys_OBJECTS = bufr_get_keys.$(OBJEXT)
-c_bufr_get_keys_OBJECTS = $(am_c_bufr_get_keys_OBJECTS)
-c_bufr_get_keys_LDADD = $(LDADD)
-c_bufr_get_keys_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_bufr_keys_iterator_OBJECTS = bufr_keys_iterator.$(OBJEXT)
-c_bufr_keys_iterator_OBJECTS = $(am_c_bufr_keys_iterator_OBJECTS)
-c_bufr_keys_iterator_LDADD = $(LDADD)
-c_bufr_keys_iterator_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_bufr_missing_OBJECTS = bufr_missing.$(OBJEXT)
-c_bufr_missing_OBJECTS = $(am_c_bufr_missing_OBJECTS)
-c_bufr_missing_LDADD = $(LDADD)
-c_bufr_missing_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_bufr_read_header_OBJECTS = bufr_read_header.$(OBJEXT)
-c_bufr_read_header_OBJECTS = $(am_c_bufr_read_header_OBJECTS)
-c_bufr_read_header_LDADD = $(LDADD)
-c_bufr_read_header_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_bufr_read_scatterometer_OBJECTS =  \
-	bufr_read_scatterometer.$(OBJEXT)
-c_bufr_read_scatterometer_OBJECTS =  \
-	$(am_c_bufr_read_scatterometer_OBJECTS)
-c_bufr_read_scatterometer_LDADD = $(LDADD)
-c_bufr_read_scatterometer_DEPENDENCIES =  \
-	$(top_builddir)/src/libeccodes.la
-am_c_bufr_read_synop_OBJECTS = bufr_read_synop.$(OBJEXT)
-c_bufr_read_synop_OBJECTS = $(am_c_bufr_read_synop_OBJECTS)
-c_bufr_read_synop_LDADD = $(LDADD)
-c_bufr_read_synop_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_bufr_read_temp_OBJECTS = bufr_read_temp.$(OBJEXT)
-c_bufr_read_temp_OBJECTS = $(am_c_bufr_read_temp_OBJECTS)
-c_bufr_read_temp_LDADD = $(LDADD)
-c_bufr_read_temp_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_bufr_set_keys_OBJECTS = bufr_set_keys.$(OBJEXT)
-c_bufr_set_keys_OBJECTS = $(am_c_bufr_set_keys_OBJECTS)
-c_bufr_set_keys_LDADD = $(LDADD)
-c_bufr_set_keys_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_bufr_subset_OBJECTS = bufr_subset.$(OBJEXT)
-c_bufr_subset_OBJECTS = $(am_c_bufr_subset_OBJECTS)
-c_bufr_subset_LDADD = $(LDADD)
-c_bufr_subset_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_check_gaussian_grid_OBJECTS = check_gaussian_grid.$(OBJEXT)
-c_check_gaussian_grid_OBJECTS = $(am_c_check_gaussian_grid_OBJECTS)
-c_check_gaussian_grid_LDADD = $(LDADD)
-c_check_gaussian_grid_DEPENDENCIES =  \
-	$(top_builddir)/src/libeccodes.la
-am_c_get_product_kind_OBJECTS = get_product_kind.$(OBJEXT)
-c_get_product_kind_OBJECTS = $(am_c_get_product_kind_OBJECTS)
-c_get_product_kind_LDADD = $(LDADD)
-c_get_product_kind_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_clone_OBJECTS = grib_clone.$(OBJEXT)
-c_grib_clone_OBJECTS = $(am_c_grib_clone_OBJECTS)
-c_grib_clone_LDADD = $(LDADD)
-c_grib_clone_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_ensemble_index_OBJECTS = grib_ensemble_index.$(OBJEXT)
-c_grib_ensemble_index_OBJECTS = $(am_c_grib_ensemble_index_OBJECTS)
-c_grib_ensemble_index_LDADD = $(LDADD)
-c_grib_ensemble_index_DEPENDENCIES =  \
-	$(top_builddir)/src/libeccodes.la
-am_c_grib_get_data_OBJECTS = grib_get_data.$(OBJEXT)
-c_grib_get_data_OBJECTS = $(am_c_grib_get_data_OBJECTS)
-c_grib_get_data_LDADD = $(LDADD)
-c_grib_get_data_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_get_keys_OBJECTS = grib_get_keys.$(OBJEXT)
-c_grib_get_keys_OBJECTS = $(am_c_grib_get_keys_OBJECTS)
-c_grib_get_keys_LDADD = $(LDADD)
-c_grib_get_keys_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_index_OBJECTS = grib_index.$(OBJEXT)
-c_grib_index_OBJECTS = $(am_c_grib_index_OBJECTS)
-c_grib_index_LDADD = $(LDADD)
-c_grib_index_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_iterator_OBJECTS = grib_iterator.$(OBJEXT)
-c_grib_iterator_OBJECTS = $(am_c_grib_iterator_OBJECTS)
-c_grib_iterator_LDADD = $(LDADD)
-c_grib_iterator_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_iterator_bitmap_OBJECTS = grib_iterator_bitmap.$(OBJEXT)
-c_grib_iterator_bitmap_OBJECTS = $(am_c_grib_iterator_bitmap_OBJECTS)
-c_grib_iterator_bitmap_LDADD = $(LDADD)
-c_grib_iterator_bitmap_DEPENDENCIES =  \
-	$(top_builddir)/src/libeccodes.la
-am_c_grib_keys_iterator_OBJECTS = grib_keys_iterator.$(OBJEXT)
-c_grib_keys_iterator_OBJECTS = $(am_c_grib_keys_iterator_OBJECTS)
-c_grib_keys_iterator_LDADD = $(LDADD)
-c_grib_keys_iterator_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_list_OBJECTS = grib_list.$(OBJEXT)
-c_grib_list_OBJECTS = $(am_c_grib_list_OBJECTS)
-c_grib_list_LDADD = $(LDADD)
-c_grib_list_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_multi_OBJECTS = grib_multi.$(OBJEXT)
-c_grib_multi_OBJECTS = $(am_c_grib_multi_OBJECTS)
-c_grib_multi_LDADD = $(LDADD)
-c_grib_multi_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_multi_write_OBJECTS = grib_multi_write.$(OBJEXT)
-c_grib_multi_write_OBJECTS = $(am_c_grib_multi_write_OBJECTS)
-c_grib_multi_write_LDADD = $(LDADD)
-c_grib_multi_write_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_nearest_OBJECTS = grib_nearest.$(OBJEXT)
-c_grib_nearest_OBJECTS = $(am_c_grib_nearest_OBJECTS)
-c_grib_nearest_LDADD = $(LDADD)
-c_grib_nearest_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_precision_OBJECTS = grib_precision.$(OBJEXT)
-c_grib_precision_OBJECTS = $(am_c_grib_precision_OBJECTS)
-c_grib_precision_LDADD = $(LDADD)
-c_grib_precision_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_print_data_OBJECTS = grib_print_data.$(OBJEXT)
-c_grib_print_data_OBJECTS = $(am_c_grib_print_data_OBJECTS)
-c_grib_print_data_LDADD = $(LDADD)
-c_grib_print_data_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_set_bitmap_OBJECTS = grib_set_bitmap.$(OBJEXT)
-c_grib_set_bitmap_OBJECTS = $(am_c_grib_set_bitmap_OBJECTS)
-c_grib_set_bitmap_LDADD = $(LDADD)
-c_grib_set_bitmap_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_set_data_OBJECTS = grib_set_data.$(OBJEXT)
-c_grib_set_data_OBJECTS = $(am_c_grib_set_data_OBJECTS)
-c_grib_set_data_LDADD = $(LDADD)
-c_grib_set_data_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_set_keys_OBJECTS = grib_set_keys.$(OBJEXT)
-c_grib_set_keys_OBJECTS = $(am_c_grib_set_keys_OBJECTS)
-c_grib_set_keys_LDADD = $(LDADD)
-c_grib_set_keys_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_set_pv_OBJECTS = grib_set_pv.$(OBJEXT)
-c_grib_set_pv_OBJECTS = $(am_c_grib_set_pv_OBJECTS)
-c_grib_set_pv_LDADD = $(LDADD)
-c_grib_set_pv_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_large_grib1_OBJECTS = large_grib1.$(OBJEXT)
-c_large_grib1_OBJECTS = $(am_c_large_grib1_OBJECTS)
-c_large_grib1_LDADD = $(LDADD)
-c_large_grib1_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_mars_param_OBJECTS = mars_param.$(OBJEXT)
-c_mars_param_OBJECTS = $(am_c_mars_param_OBJECTS)
-c_mars_param_LDADD = $(LDADD)
-c_mars_param_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_multi2_OBJECTS = multi2.$(OBJEXT)
-c_multi2_OBJECTS = $(am_c_multi2_OBJECTS)
-c_multi2_LDADD = $(LDADD)
-c_multi2_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_new_sample_OBJECTS = new_sample.$(OBJEXT)
-c_new_sample_OBJECTS = $(am_c_new_sample_OBJECTS)
-c_new_sample_LDADD = $(LDADD)
-c_new_sample_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_points_OBJECTS = points.$(OBJEXT)
-c_points_OBJECTS = $(am_c_points_OBJECTS)
-c_points_LDADD = $(LDADD)
-c_points_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_sections_copy_OBJECTS = sections_copy.$(OBJEXT)
-c_sections_copy_OBJECTS = $(am_c_sections_copy_OBJECTS)
-c_sections_copy_LDADD = $(LDADD)
-c_sections_copy_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_set_missing_OBJECTS = set_missing.$(OBJEXT)
-c_set_missing_OBJECTS = $(am_c_set_missing_OBJECTS)
-c_set_missing_LDADD = $(LDADD)
-c_set_missing_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_values_check_OBJECTS = values_check.$(OBJEXT)
-c_values_check_OBJECTS = $(am_c_values_check_OBJECTS)
-c_values_check_LDADD = $(LDADD)
-c_values_check_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-AM_V_P = $(am__v_P_$(V))
-am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = $(c_box_SOURCES) $(c_bufr_attributes_SOURCES) \
-	$(c_bufr_clone_SOURCES) $(c_bufr_expanded_SOURCES) \
-	$(c_bufr_get_keys_SOURCES) $(c_bufr_keys_iterator_SOURCES) \
-	$(c_bufr_missing_SOURCES) $(c_bufr_read_header_SOURCES) \
-	$(c_bufr_read_scatterometer_SOURCES) \
-	$(c_bufr_read_synop_SOURCES) $(c_bufr_read_temp_SOURCES) \
-	$(c_bufr_set_keys_SOURCES) $(c_bufr_subset_SOURCES) \
-	$(c_check_gaussian_grid_SOURCES) $(c_get_product_kind_SOURCES) \
-	$(c_grib_clone_SOURCES) $(c_grib_ensemble_index_SOURCES) \
-	$(c_grib_get_data_SOURCES) $(c_grib_get_keys_SOURCES) \
-	$(c_grib_index_SOURCES) $(c_grib_iterator_SOURCES) \
-	$(c_grib_iterator_bitmap_SOURCES) \
-	$(c_grib_keys_iterator_SOURCES) $(c_grib_list_SOURCES) \
-	$(c_grib_multi_SOURCES) $(c_grib_multi_write_SOURCES) \
-	$(c_grib_nearest_SOURCES) $(c_grib_precision_SOURCES) \
-	$(c_grib_print_data_SOURCES) $(c_grib_set_bitmap_SOURCES) \
-	$(c_grib_set_data_SOURCES) $(c_grib_set_keys_SOURCES) \
-	$(c_grib_set_pv_SOURCES) $(c_large_grib1_SOURCES) \
-	$(c_mars_param_SOURCES) $(c_multi2_SOURCES) \
-	$(c_new_sample_SOURCES) $(c_points_SOURCES) \
-	$(c_sections_copy_SOURCES) $(c_set_missing_SOURCES) \
-	$(c_values_check_SOURCES)
-DIST_SOURCES = $(c_box_SOURCES) $(c_bufr_attributes_SOURCES) \
-	$(c_bufr_clone_SOURCES) $(c_bufr_expanded_SOURCES) \
-	$(c_bufr_get_keys_SOURCES) $(c_bufr_keys_iterator_SOURCES) \
-	$(c_bufr_missing_SOURCES) $(c_bufr_read_header_SOURCES) \
-	$(c_bufr_read_scatterometer_SOURCES) \
-	$(c_bufr_read_synop_SOURCES) $(c_bufr_read_temp_SOURCES) \
-	$(c_bufr_set_keys_SOURCES) $(c_bufr_subset_SOURCES) \
-	$(c_check_gaussian_grid_SOURCES) $(c_get_product_kind_SOURCES) \
-	$(c_grib_clone_SOURCES) $(c_grib_ensemble_index_SOURCES) \
-	$(c_grib_get_data_SOURCES) $(c_grib_get_keys_SOURCES) \
-	$(c_grib_index_SOURCES) $(c_grib_iterator_SOURCES) \
-	$(c_grib_iterator_bitmap_SOURCES) \
-	$(c_grib_keys_iterator_SOURCES) $(c_grib_list_SOURCES) \
-	$(c_grib_multi_SOURCES) $(c_grib_multi_write_SOURCES) \
-	$(c_grib_nearest_SOURCES) $(c_grib_precision_SOURCES) \
-	$(c_grib_print_data_SOURCES) $(c_grib_set_bitmap_SOURCES) \
-	$(c_grib_set_data_SOURCES) $(c_grib_set_keys_SOURCES) \
-	$(c_grib_set_pv_SOURCES) $(c_large_grib1_SOURCES) \
-	$(c_mars_param_SOURCES) $(c_multi2_SOURCES) \
-	$(c_new_sample_SOURCES) $(c_points_SOURCES) \
-	$(c_sections_copy_SOURCES) $(c_set_missing_SOURCES) \
-	$(c_values_check_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__tty_colors_dummy = \
-  mgn= red= grn= lgn= blu= brg= std=; \
-  am__color_tests=no
-am__tty_colors = { \
-  $(am__tty_colors_dummy); \
-  if test "X$(AM_COLOR_TESTS)" = Xno; then \
-    am__color_tests=no; \
-  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
-    am__color_tests=yes; \
-  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
-    am__color_tests=yes; \
-  fi; \
-  if test $$am__color_tests = yes; then \
-    red=''; \
-    grn=''; \
-    lgn=''; \
-    blu=''; \
-    mgn=''; \
-    brg=''; \
-    std=''; \
-  fi; \
-}
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__recheck_rx = ^[ 	]*:recheck:[ 	]*
-am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
-am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
-# A command that, given a newline-separated list of test names on the
-# standard input, print the name of the tests that are to be re-run
-# upon "make recheck".
-am__list_recheck_tests = $(AWK) '{ \
-  recheck = 1; \
-  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-    { \
-      if (rc < 0) \
-        { \
-          if ((getline line2 < ($$0 ".log")) < 0) \
-	    recheck = 0; \
-          break; \
-        } \
-      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
-        { \
-          recheck = 0; \
-          break; \
-        } \
-      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
-        { \
-          break; \
-        } \
-    }; \
-  if (recheck) \
-    print $$0; \
-  close ($$0 ".trs"); \
-  close ($$0 ".log"); \
-}'
-# A command that, given a newline-separated list of test names on the
-# standard input, create the global log from their .trs and .log files.
-am__create_global_log = $(AWK) ' \
-function fatal(msg) \
-{ \
-  print "fatal: making $@: " msg | "cat >&2"; \
-  exit 1; \
-} \
-function rst_section(header) \
-{ \
-  print header; \
-  len = length(header); \
-  for (i = 1; i <= len; i = i + 1) \
-    printf "="; \
-  printf "\n\n"; \
-} \
-{ \
-  copy_in_global_log = 1; \
-  global_test_result = "RUN"; \
-  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-    { \
-      if (rc < 0) \
-         fatal("failed to read from " $$0 ".trs"); \
-      if (line ~ /$(am__global_test_result_rx)/) \
-        { \
-          sub("$(am__global_test_result_rx)", "", line); \
-          sub("[ 	]*$$", "", line); \
-          global_test_result = line; \
-        } \
-      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
-        copy_in_global_log = 0; \
-    }; \
-  if (copy_in_global_log) \
-    { \
-      rst_section(global_test_result ": " $$0); \
-      while ((rc = (getline line < ($$0 ".log"))) != 0) \
-      { \
-        if (rc < 0) \
-          fatal("failed to read from " $$0 ".log"); \
-        print line; \
-      }; \
-      printf "\n"; \
-    }; \
-  close ($$0 ".trs"); \
-  close ($$0 ".log"); \
-}'
-# Restructured Text title.
-am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
-# Solaris 10 'make', and several other traditional 'make' implementations,
-# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
-# by disabling -e (using the XSI extension "set +e") if it's set.
-am__sh_e_setup = case $$- in *e*) set +e;; esac
-# Default flags passed to test drivers.
-am__common_driver_flags = \
-  --color-tests "$$am__color_tests" \
-  --enable-hard-errors "$$am__enable_hard_errors" \
-  --expect-failure "$$am__expect_failure"
-# To be inserted before the command running the test.  Creates the
-# directory for the log if needed.  Stores in $dir the directory
-# containing $f, in $tst the test, in $log the log.  Executes the
-# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
-# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
-# will run the test scripts (or their associated LOG_COMPILER, if
-# thy have one).
-am__check_pre = \
-$(am__sh_e_setup);					\
-$(am__vpath_adj_setup) $(am__vpath_adj)			\
-$(am__tty_colors);					\
-srcdir=$(srcdir); export srcdir;			\
-case "$@" in						\
-  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
-    *) am__odir=.;; 					\
-esac;							\
-test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
-  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
-if test -f "./$$f"; then dir=./;			\
-elif test -f "$$f"; then dir=;				\
-else dir="$(srcdir)/"; fi;				\
-tst=$$dir$$f; log='$@'; 				\
-if test -n '$(DISABLE_HARD_ERRORS)'; then		\
-  am__enable_hard_errors=no; 				\
-else							\
-  am__enable_hard_errors=yes; 				\
-fi; 							\
-case " $(XFAIL_TESTS) " in				\
-  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
-    am__expect_failure=yes;;				\
-  *)							\
-    am__expect_failure=no;;				\
-esac; 							\
-$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
-# A shell command to get the names of the tests scripts with any registered
-# extension removed (i.e., equivalently, the names of the test logs, with
-# the '.log' extension removed).  The result is saved in the shell variable
-# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
-# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
-# since that might cause problem with VPATH rewrites for suffix-less tests.
-# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
-am__set_TESTS_bases = \
-  bases='$(TEST_LOGS)'; \
-  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
-  bases=`echo $$bases`
-RECHECK_LOGS = $(TEST_LOGS)
-AM_RECURSIVE_TARGETS = check recheck
-TEST_SUITE_LOG = test-suite.log
-TEST_EXTENSIONS =  .test
-LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
-LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
-am__set_b = \
-  case '$@' in \
-    */*) \
-      case '$*' in \
-        */*) b='$*';; \
-          *) b=`echo '$@' | sed 's/\.log$$//'`; \
-       esac;; \
-    *) \
-      b='$*';; \
-  esac
-am__test_logs1 = $(TESTS:=.log)
-am__test_logs2 = $(am__test_logs1:.log=.log)
-TEST_LOGS = $(am__test_logs2:.test.log=.log)
-TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
-TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
-	$(TEST_LOG_FLAGS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing aclocal-1.13
-AEC_DIR = 
-AMTAR = $${TAR-tar}
-AM_DEFAULT_VERBOSITY = 1
-AR = ar
-AUTOCONF = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoconf
-AUTOHEADER = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoheader
-AUTOMAKE = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing automake-1.13
-AWK = gawk
-CC = gcc
-CCDEPMODE = depmode=gcc3
-CCSDS_TEST = 
-CFLAGS = -g -O2
-CPP = gcc -E
-CPPFLAGS = 
-CYGPATH_W = echo
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DEVEL_RULES = dummy.am
-DLLTOOL = false
-DSYMUTIL = 
-DUMPBIN = 
-ECCODES_AGE = 0
-ECCODES_CURRENT = 1
-ECCODES_DEFINITION_PATH = ${datarootdir}/eccodes/definitions
-ECCODES_MAIN_VERSION = 0.10.0
-ECCODES_MAJOR_VERSION = 0
-ECCODES_MINOR_VERSION = 10
-ECCODES_PATCH_VERSION = 0
-ECCODES_REVISION = 0
-ECCODES_SAMPLES_PATH = ${datarootdir}/eccodes/samples
-ECCODES_VERSION_STR = 0.10.0
-ECHO_C = 
-ECHO_N = -n
-ECHO_T = 
-EGREP = /usr/bin/grep -E
-EMOS_LIB = 
-EXEEXT = 
-F77 = gfortran
-F90_CHECK = examples/F90
-F90_MODULE_FLAG = -I
-FC = gfortran
-FCFLAGS = -g -O2
-FFLAGS = -g -O2
-FGREP = /usr/bin/grep -F
-FORTRAN_MOD = fortran
-GREP = /usr/bin/grep
-GRIB_API_INC = /tmp/masn/git/grib_api/eccodes/src
-GRIB_API_LIB = /tmp/masn/git/grib_api/eccodes/src/grib_api.a
-GRIB_DEVEL = 0
-IFS_SAMPLES_DIR = ${datarootdir}/eccodes/ifs_samples
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-JASPER_DIR = system
-JPEG_TEST = jpeg.sh
-LD = /usr/x86_64-suse-linux/bin/ld -m elf_x86_64
-LDFLAGS = 
-LEX = flex
-LEXLIB = -lfl
-LEX_OUTPUT_ROOT = lex.yy
-LIBOBJS = 
-LIBS = -lm -ljasper 
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LIBTOOL_DEPS = config/ltmain.sh
-LIB_AEC = 
-LIB_JASPER = -ljasper
-LIB_OPENJPEG = 
-LIB_PNG = 
-LINUX_DISTRIBUTION_NAME = openSUSE 13.1 (x86_64)
-LINUX_DISTRIBUTION_VERSION = 
-LIPO = 
-LN_S = ln -s
-LTLIBOBJS = 
-MAKEINFO = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing makeinfo
-MANIFEST_TOOL = :
-MKDIR_P = /usr/bin/mkdir -p
-NETCDF_LDFLAGS = 
-NM = /usr/bin/nm -B
-NMEDIT = 
-NUMPY_INCLUDE = /usr/local/apps/python/2.7.8-01/lib/python2.7/site-packages/numpy/core/include
-OBJDUMP = objdump
-OBJEXT = o
-OPENJPEG_DIR = system
-OTOOL = 
-OTOOL64 = 
-PACKAGE = eccodes
-PACKAGE_BUGREPORT = Software.Support at ecmwf.int
-PACKAGE_NAME = eccodes
-PACKAGE_STRING = eccodes  
-PACKAGE_TARNAME = eccodes
-PACKAGE_URL = 
-PACKAGE_VERSION = 0.10.0
-PATH_SEPARATOR = :
-PERL = 
-PERLDIR = perl
-PERL_INSTALL_OPTIONS = LIB=NONE/perl
-PERL_MAKE_OPTIONS = 
-PYTHON = /usr/local/apps/python/2.7.8-01/bin/python
-PYTHON_CFLAGS = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7 -fno-strict-aliasing -O3 -fpic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
-PYTHON_CHECK = examples/python
-PYTHON_CONFIG = /usr/local/apps/python/2.7.8-01/bin/python2.7-config
-PYTHON_DATA_HANDLER = numpy
-PYTHON_EXEC_PREFIX = ${exec_prefix}
-PYTHON_INCLUDES = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7
-PYTHON_LDFLAGS = -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic
-PYTHON_LIBS = -lpthread -ldl -lutil -lm -lpython2.7
-PYTHON_PLATFORM = linux2
-PYTHON_PREFIX = ${prefix}
-PYTHON_VERSION = 2.7
-RANLIB = ranlib
-RM = rm -f
-RPM_CONFIGURE_ARGS =  '--enable-python' '--disable-shared' 'CC=gcc' 'F77=gfortran' 'FC=gfortran'
-RPM_HOST_CPU = x86_64
-RPM_HOST_OS = linux-gnu
-RPM_HOST_VENDOR = suse
-RPM_RELEASE = 1
-SED = /usr/bin/sed
-SET_MAKE = 
-SHELL = /bin/sh
-STRIP = strip
-VERSION = 0.10.0
-WARN_PEDANTIC = -pedantic -Wall
-WERROR = 
-YACC = bison -y
-YFLAGS = 
-abs_builddir = /tmp/masn/git/grib_api/eccodes/examples/C
-abs_srcdir = /tmp/masn/git/grib_api/eccodes/examples/C
-abs_top_builddir = /tmp/masn/git/grib_api/eccodes
-abs_top_srcdir = /tmp/masn/git/grib_api/eccodes
-ac_ct_AR = ar
-ac_ct_CC = gcc
-ac_ct_DUMPBIN = 
-ac_ct_F77 = 
-ac_ct_FC = 
-am__include = include
-am__leading_dot = .
-am__quote = 
-am__tar = $${TAR-tar} chof - "$$tardir"
-am__untar = $${TAR-tar} xf -
-bindir = ${exec_prefix}/bin
-build = x86_64-suse-linux-gnu
-build_alias = 
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = suse
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-host = x86_64-suse-linux-gnu
-host_alias = 
-host_cpu = x86_64
-host_os = linux-gnu
-host_vendor = suse
-htmldir = ${docdir}
-includedir = ${prefix}/include
-infodir = ${datarootdir}/info
-install_sh = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localedir = ${datarootdir}/locale
-localstatedir = ${prefix}/var
-mandir = ${datarootdir}/man
-mkdir_p = $(MKDIR_P)
-oldincludedir = /usr/include
-pdfdir = ${docdir}
-pkgpyexecdir = ${pyexecdir}/eccodes
-pkgpythondir = ${pythondir}/eccodes
-prefix = /usr/local
-program_transform_name = s,x,x,
-psdir = ${docdir}
-pyexecdir = ${exec_prefix}/lib/python2.7/site-packages
-pythondir = ${prefix}/lib/python2.7/site-packages
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-srcdir = .
-sysconfdir = ${prefix}/etc
-target_alias = 
-top_build_prefix = ../../
-top_builddir = ../..
-top_srcdir = ../..
-AM_CFLAGS = -pedantic -Wall 
-TESTS = grib_iterator.sh \
-        grib_get_keys.sh \
-        grib_print_data.sh \
-        grib_set_keys.sh \
-        grib_keys_iterator.sh \
-        grib_multi.sh \
-        grib_multi_write.sh \
-        grib_precision.sh \
-        grib_list.sh \
-        large_grib1.sh \
-        grib_get_data.sh \
-        sections_copy.sh \
-        set_missing.sh \
-        grib_clone.sh \
-        grib_set_pv.sh \
-        check_gaussian_grids.sh \
-        bufr_attributes.sh \
-        bufr_clone.sh \
-        bufr_expanded.sh \
-        bufr_get_keys.sh \
-        bufr_read_header.sh \
-        bufr_read_scatterometer.sh \
-        bufr_read_synop.sh \
-        bufr_set_keys.sh \
-        bufr_subset.sh \
-        bufr_keys_iterator.sh \
-        bufr_missing.sh \
-        bufr_read_temp.sh \
-        get_product_kind.sh
-
-
-#bin_PROGRAMS            = points
-c_box_SOURCES = box.c
-c_grib_set_data_SOURCES = grib_set_data.c
-c_mars_param_SOURCES = mars_param.c
-c_values_check_SOURCES = values_check.c
-c_grib_nearest_SOURCES = grib_nearest.c
-c_grib_multi_write_SOURCES = grib_multi_write.c
-c_grib_get_keys_SOURCES = grib_get_keys.c
-c_grib_print_data_SOURCES = grib_print_data.c
-c_grib_set_keys_SOURCES = grib_set_keys.c
-c_set_missing_SOURCES = set_missing.c
-c_grib_index_SOURCES = grib_index.c
-c_grib_set_bitmap_SOURCES = grib_set_bitmap.c
-c_grib_multi_SOURCES = grib_multi.c
-c_multi2_SOURCES = multi2.c
-c_grib_keys_iterator_SOURCES = grib_keys_iterator.c
-c_grib_iterator_SOURCES = grib_iterator.c
-c_grib_iterator_bitmap_SOURCES = grib_iterator_bitmap.c
-c_grib_set_pv_SOURCES = grib_set_pv.c
-c_points_SOURCES = points.c
-c_grib_list_SOURCES = grib_list.c
-c_sections_copy_SOURCES = sections_copy.c
-c_large_grib1_SOURCES = large_grib1.c
-c_grib_precision_SOURCES = grib_precision.c
-c_grib_get_data_SOURCES = grib_get_data.c
-c_grib_clone_SOURCES = grib_clone.c
-c_new_sample_SOURCES = new_sample.c
-c_check_gaussian_grid_SOURCES = check_gaussian_grid.c
-c_grib_ensemble_index_SOURCES = grib_ensemble_index.c
-c_bufr_attributes_SOURCES = bufr_attributes.c
-c_bufr_clone_SOURCES = bufr_clone.c
-c_bufr_expanded_SOURCES = bufr_expanded.c
-c_bufr_get_keys_SOURCES = bufr_get_keys.c
-c_bufr_keys_iterator_SOURCES = bufr_keys_iterator.c
-c_bufr_missing_SOURCES = bufr_missing.c
-c_bufr_read_header_SOURCES = bufr_read_header.c
-c_bufr_read_scatterometer_SOURCES = bufr_read_scatterometer.c
-c_bufr_read_synop_SOURCES = bufr_read_synop.c
-c_bufr_read_temp_SOURCES = bufr_read_temp.c
-c_bufr_set_keys_SOURCES = bufr_set_keys.c
-c_bufr_subset_SOURCES = bufr_subset.c
-c_get_product_kind_SOURCES = get_product_kind.c
-INCLUDES = -I$(top_builddir)/src
-LDADD = $(top_builddir)/src/libeccodes.la
-DEPENDENCIES = $(LDADD)
-EXTRA_DIST = $(TESTS) include.sh CMakeLists.txt include.ctest.sh.in
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/C/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu examples/C/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstPROGRAMS:
-	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
-
-c_box$(EXEEXT): $(c_box_OBJECTS) $(c_box_DEPENDENCIES) $(EXTRA_c_box_DEPENDENCIES) 
-	@rm -f c_box$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_box_OBJECTS) $(c_box_LDADD) $(LIBS)
-
-c_bufr_attributes$(EXEEXT): $(c_bufr_attributes_OBJECTS) $(c_bufr_attributes_DEPENDENCIES) $(EXTRA_c_bufr_attributes_DEPENDENCIES) 
-	@rm -f c_bufr_attributes$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_attributes_OBJECTS) $(c_bufr_attributes_LDADD) $(LIBS)
-
-c_bufr_clone$(EXEEXT): $(c_bufr_clone_OBJECTS) $(c_bufr_clone_DEPENDENCIES) $(EXTRA_c_bufr_clone_DEPENDENCIES) 
-	@rm -f c_bufr_clone$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_clone_OBJECTS) $(c_bufr_clone_LDADD) $(LIBS)
-
-c_bufr_expanded$(EXEEXT): $(c_bufr_expanded_OBJECTS) $(c_bufr_expanded_DEPENDENCIES) $(EXTRA_c_bufr_expanded_DEPENDENCIES) 
-	@rm -f c_bufr_expanded$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_expanded_OBJECTS) $(c_bufr_expanded_LDADD) $(LIBS)
-
-c_bufr_get_keys$(EXEEXT): $(c_bufr_get_keys_OBJECTS) $(c_bufr_get_keys_DEPENDENCIES) $(EXTRA_c_bufr_get_keys_DEPENDENCIES) 
-	@rm -f c_bufr_get_keys$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_get_keys_OBJECTS) $(c_bufr_get_keys_LDADD) $(LIBS)
-
-c_bufr_keys_iterator$(EXEEXT): $(c_bufr_keys_iterator_OBJECTS) $(c_bufr_keys_iterator_DEPENDENCIES) $(EXTRA_c_bufr_keys_iterator_DEPENDENCIES) 
-	@rm -f c_bufr_keys_iterator$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_keys_iterator_OBJECTS) $(c_bufr_keys_iterator_LDADD) $(LIBS)
-
-c_bufr_missing$(EXEEXT): $(c_bufr_missing_OBJECTS) $(c_bufr_missing_DEPENDENCIES) $(EXTRA_c_bufr_missing_DEPENDENCIES) 
-	@rm -f c_bufr_missing$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_missing_OBJECTS) $(c_bufr_missing_LDADD) $(LIBS)
-
-c_bufr_read_header$(EXEEXT): $(c_bufr_read_header_OBJECTS) $(c_bufr_read_header_DEPENDENCIES) $(EXTRA_c_bufr_read_header_DEPENDENCIES) 
-	@rm -f c_bufr_read_header$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_read_header_OBJECTS) $(c_bufr_read_header_LDADD) $(LIBS)
-
-c_bufr_read_scatterometer$(EXEEXT): $(c_bufr_read_scatterometer_OBJECTS) $(c_bufr_read_scatterometer_DEPENDENCIES) $(EXTRA_c_bufr_read_scatterometer_DEPENDENCIES) 
-	@rm -f c_bufr_read_scatterometer$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_read_scatterometer_OBJECTS) $(c_bufr_read_scatterometer_LDADD) $(LIBS)
-
-c_bufr_read_synop$(EXEEXT): $(c_bufr_read_synop_OBJECTS) $(c_bufr_read_synop_DEPENDENCIES) $(EXTRA_c_bufr_read_synop_DEPENDENCIES) 
-	@rm -f c_bufr_read_synop$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_read_synop_OBJECTS) $(c_bufr_read_synop_LDADD) $(LIBS)
-
-c_bufr_read_temp$(EXEEXT): $(c_bufr_read_temp_OBJECTS) $(c_bufr_read_temp_DEPENDENCIES) $(EXTRA_c_bufr_read_temp_DEPENDENCIES) 
-	@rm -f c_bufr_read_temp$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_read_temp_OBJECTS) $(c_bufr_read_temp_LDADD) $(LIBS)
-
-c_bufr_set_keys$(EXEEXT): $(c_bufr_set_keys_OBJECTS) $(c_bufr_set_keys_DEPENDENCIES) $(EXTRA_c_bufr_set_keys_DEPENDENCIES) 
-	@rm -f c_bufr_set_keys$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_set_keys_OBJECTS) $(c_bufr_set_keys_LDADD) $(LIBS)
-
-c_bufr_subset$(EXEEXT): $(c_bufr_subset_OBJECTS) $(c_bufr_subset_DEPENDENCIES) $(EXTRA_c_bufr_subset_DEPENDENCIES) 
-	@rm -f c_bufr_subset$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_subset_OBJECTS) $(c_bufr_subset_LDADD) $(LIBS)
-
-c_check_gaussian_grid$(EXEEXT): $(c_check_gaussian_grid_OBJECTS) $(c_check_gaussian_grid_DEPENDENCIES) $(EXTRA_c_check_gaussian_grid_DEPENDENCIES) 
-	@rm -f c_check_gaussian_grid$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_check_gaussian_grid_OBJECTS) $(c_check_gaussian_grid_LDADD) $(LIBS)
-
-c_get_product_kind$(EXEEXT): $(c_get_product_kind_OBJECTS) $(c_get_product_kind_DEPENDENCIES) $(EXTRA_c_get_product_kind_DEPENDENCIES) 
-	@rm -f c_get_product_kind$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_get_product_kind_OBJECTS) $(c_get_product_kind_LDADD) $(LIBS)
-
-c_grib_clone$(EXEEXT): $(c_grib_clone_OBJECTS) $(c_grib_clone_DEPENDENCIES) $(EXTRA_c_grib_clone_DEPENDENCIES) 
-	@rm -f c_grib_clone$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_clone_OBJECTS) $(c_grib_clone_LDADD) $(LIBS)
-
-c_grib_ensemble_index$(EXEEXT): $(c_grib_ensemble_index_OBJECTS) $(c_grib_ensemble_index_DEPENDENCIES) $(EXTRA_c_grib_ensemble_index_DEPENDENCIES) 
-	@rm -f c_grib_ensemble_index$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_ensemble_index_OBJECTS) $(c_grib_ensemble_index_LDADD) $(LIBS)
-
-c_grib_get_data$(EXEEXT): $(c_grib_get_data_OBJECTS) $(c_grib_get_data_DEPENDENCIES) $(EXTRA_c_grib_get_data_DEPENDENCIES) 
-	@rm -f c_grib_get_data$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_get_data_OBJECTS) $(c_grib_get_data_LDADD) $(LIBS)
-
-c_grib_get_keys$(EXEEXT): $(c_grib_get_keys_OBJECTS) $(c_grib_get_keys_DEPENDENCIES) $(EXTRA_c_grib_get_keys_DEPENDENCIES) 
-	@rm -f c_grib_get_keys$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_get_keys_OBJECTS) $(c_grib_get_keys_LDADD) $(LIBS)
-
-c_grib_index$(EXEEXT): $(c_grib_index_OBJECTS) $(c_grib_index_DEPENDENCIES) $(EXTRA_c_grib_index_DEPENDENCIES) 
-	@rm -f c_grib_index$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_index_OBJECTS) $(c_grib_index_LDADD) $(LIBS)
-
-c_grib_iterator$(EXEEXT): $(c_grib_iterator_OBJECTS) $(c_grib_iterator_DEPENDENCIES) $(EXTRA_c_grib_iterator_DEPENDENCIES) 
-	@rm -f c_grib_iterator$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_iterator_OBJECTS) $(c_grib_iterator_LDADD) $(LIBS)
-
-c_grib_iterator_bitmap$(EXEEXT): $(c_grib_iterator_bitmap_OBJECTS) $(c_grib_iterator_bitmap_DEPENDENCIES) $(EXTRA_c_grib_iterator_bitmap_DEPENDENCIES) 
-	@rm -f c_grib_iterator_bitmap$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_iterator_bitmap_OBJECTS) $(c_grib_iterator_bitmap_LDADD) $(LIBS)
-
-c_grib_keys_iterator$(EXEEXT): $(c_grib_keys_iterator_OBJECTS) $(c_grib_keys_iterator_DEPENDENCIES) $(EXTRA_c_grib_keys_iterator_DEPENDENCIES) 
-	@rm -f c_grib_keys_iterator$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_keys_iterator_OBJECTS) $(c_grib_keys_iterator_LDADD) $(LIBS)
-
-c_grib_list$(EXEEXT): $(c_grib_list_OBJECTS) $(c_grib_list_DEPENDENCIES) $(EXTRA_c_grib_list_DEPENDENCIES) 
-	@rm -f c_grib_list$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_list_OBJECTS) $(c_grib_list_LDADD) $(LIBS)
-
-c_grib_multi$(EXEEXT): $(c_grib_multi_OBJECTS) $(c_grib_multi_DEPENDENCIES) $(EXTRA_c_grib_multi_DEPENDENCIES) 
-	@rm -f c_grib_multi$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_multi_OBJECTS) $(c_grib_multi_LDADD) $(LIBS)
-
-c_grib_multi_write$(EXEEXT): $(c_grib_multi_write_OBJECTS) $(c_grib_multi_write_DEPENDENCIES) $(EXTRA_c_grib_multi_write_DEPENDENCIES) 
-	@rm -f c_grib_multi_write$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_multi_write_OBJECTS) $(c_grib_multi_write_LDADD) $(LIBS)
-
-c_grib_nearest$(EXEEXT): $(c_grib_nearest_OBJECTS) $(c_grib_nearest_DEPENDENCIES) $(EXTRA_c_grib_nearest_DEPENDENCIES) 
-	@rm -f c_grib_nearest$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_nearest_OBJECTS) $(c_grib_nearest_LDADD) $(LIBS)
-
-c_grib_precision$(EXEEXT): $(c_grib_precision_OBJECTS) $(c_grib_precision_DEPENDENCIES) $(EXTRA_c_grib_precision_DEPENDENCIES) 
-	@rm -f c_grib_precision$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_precision_OBJECTS) $(c_grib_precision_LDADD) $(LIBS)
-
-c_grib_print_data$(EXEEXT): $(c_grib_print_data_OBJECTS) $(c_grib_print_data_DEPENDENCIES) $(EXTRA_c_grib_print_data_DEPENDENCIES) 
-	@rm -f c_grib_print_data$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_print_data_OBJECTS) $(c_grib_print_data_LDADD) $(LIBS)
-
-c_grib_set_bitmap$(EXEEXT): $(c_grib_set_bitmap_OBJECTS) $(c_grib_set_bitmap_DEPENDENCIES) $(EXTRA_c_grib_set_bitmap_DEPENDENCIES) 
-	@rm -f c_grib_set_bitmap$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_set_bitmap_OBJECTS) $(c_grib_set_bitmap_LDADD) $(LIBS)
-
-c_grib_set_data$(EXEEXT): $(c_grib_set_data_OBJECTS) $(c_grib_set_data_DEPENDENCIES) $(EXTRA_c_grib_set_data_DEPENDENCIES) 
-	@rm -f c_grib_set_data$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_set_data_OBJECTS) $(c_grib_set_data_LDADD) $(LIBS)
-
-c_grib_set_keys$(EXEEXT): $(c_grib_set_keys_OBJECTS) $(c_grib_set_keys_DEPENDENCIES) $(EXTRA_c_grib_set_keys_DEPENDENCIES) 
-	@rm -f c_grib_set_keys$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_set_keys_OBJECTS) $(c_grib_set_keys_LDADD) $(LIBS)
-
-c_grib_set_pv$(EXEEXT): $(c_grib_set_pv_OBJECTS) $(c_grib_set_pv_DEPENDENCIES) $(EXTRA_c_grib_set_pv_DEPENDENCIES) 
-	@rm -f c_grib_set_pv$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_set_pv_OBJECTS) $(c_grib_set_pv_LDADD) $(LIBS)
-
-c_large_grib1$(EXEEXT): $(c_large_grib1_OBJECTS) $(c_large_grib1_DEPENDENCIES) $(EXTRA_c_large_grib1_DEPENDENCIES) 
-	@rm -f c_large_grib1$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_large_grib1_OBJECTS) $(c_large_grib1_LDADD) $(LIBS)
-
-c_mars_param$(EXEEXT): $(c_mars_param_OBJECTS) $(c_mars_param_DEPENDENCIES) $(EXTRA_c_mars_param_DEPENDENCIES) 
-	@rm -f c_mars_param$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_mars_param_OBJECTS) $(c_mars_param_LDADD) $(LIBS)
-
-c_multi2$(EXEEXT): $(c_multi2_OBJECTS) $(c_multi2_DEPENDENCIES) $(EXTRA_c_multi2_DEPENDENCIES) 
-	@rm -f c_multi2$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_multi2_OBJECTS) $(c_multi2_LDADD) $(LIBS)
-
-c_new_sample$(EXEEXT): $(c_new_sample_OBJECTS) $(c_new_sample_DEPENDENCIES) $(EXTRA_c_new_sample_DEPENDENCIES) 
-	@rm -f c_new_sample$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_new_sample_OBJECTS) $(c_new_sample_LDADD) $(LIBS)
-
-c_points$(EXEEXT): $(c_points_OBJECTS) $(c_points_DEPENDENCIES) $(EXTRA_c_points_DEPENDENCIES) 
-	@rm -f c_points$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_points_OBJECTS) $(c_points_LDADD) $(LIBS)
-
-c_sections_copy$(EXEEXT): $(c_sections_copy_OBJECTS) $(c_sections_copy_DEPENDENCIES) $(EXTRA_c_sections_copy_DEPENDENCIES) 
-	@rm -f c_sections_copy$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_sections_copy_OBJECTS) $(c_sections_copy_LDADD) $(LIBS)
-
-c_set_missing$(EXEEXT): $(c_set_missing_OBJECTS) $(c_set_missing_DEPENDENCIES) $(EXTRA_c_set_missing_DEPENDENCIES) 
-	@rm -f c_set_missing$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_set_missing_OBJECTS) $(c_set_missing_LDADD) $(LIBS)
-
-c_values_check$(EXEEXT): $(c_values_check_OBJECTS) $(c_values_check_DEPENDENCIES) $(EXTRA_c_values_check_DEPENDENCIES) 
-	@rm -f c_values_check$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_values_check_OBJECTS) $(c_values_check_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-include ./$(DEPDIR)/box.Po
-include ./$(DEPDIR)/bufr_attributes.Po
-include ./$(DEPDIR)/bufr_clone.Po
-include ./$(DEPDIR)/bufr_expanded.Po
-include ./$(DEPDIR)/bufr_get_keys.Po
-include ./$(DEPDIR)/bufr_keys_iterator.Po
-include ./$(DEPDIR)/bufr_missing.Po
-include ./$(DEPDIR)/bufr_read_header.Po
-include ./$(DEPDIR)/bufr_read_scatterometer.Po
-include ./$(DEPDIR)/bufr_read_synop.Po
-include ./$(DEPDIR)/bufr_read_temp.Po
-include ./$(DEPDIR)/bufr_set_keys.Po
-include ./$(DEPDIR)/bufr_subset.Po
-include ./$(DEPDIR)/check_gaussian_grid.Po
-include ./$(DEPDIR)/get_product_kind.Po
-include ./$(DEPDIR)/grib_clone.Po
-include ./$(DEPDIR)/grib_ensemble_index.Po
-include ./$(DEPDIR)/grib_get_data.Po
-include ./$(DEPDIR)/grib_get_keys.Po
-include ./$(DEPDIR)/grib_index.Po
-include ./$(DEPDIR)/grib_iterator.Po
-include ./$(DEPDIR)/grib_iterator_bitmap.Po
-include ./$(DEPDIR)/grib_keys_iterator.Po
-include ./$(DEPDIR)/grib_list.Po
-include ./$(DEPDIR)/grib_multi.Po
-include ./$(DEPDIR)/grib_multi_write.Po
-include ./$(DEPDIR)/grib_nearest.Po
-include ./$(DEPDIR)/grib_precision.Po
-include ./$(DEPDIR)/grib_print_data.Po
-include ./$(DEPDIR)/grib_set_bitmap.Po
-include ./$(DEPDIR)/grib_set_data.Po
-include ./$(DEPDIR)/grib_set_keys.Po
-include ./$(DEPDIR)/grib_set_pv.Po
-include ./$(DEPDIR)/large_grib1.Po
-include ./$(DEPDIR)/mars_param.Po
-include ./$(DEPDIR)/multi2.Po
-include ./$(DEPDIR)/new_sample.Po
-include ./$(DEPDIR)/points.Po
-include ./$(DEPDIR)/sections_copy.Po
-include ./$(DEPDIR)/set_missing.Po
-include ./$(DEPDIR)/values_check.Po
-
-.c.o:
-	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-#	$(AM_V_CC)source='$<' object='$@' libtool=no \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(COMPILE) -c $<
-
-.c.obj:
-	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-#	$(AM_V_CC)source='$<' object='$@' libtool=no \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-#	$(AM_V_CC)source='$<' object='$@' libtool=yes \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-# Recover from deleted '.trs' file; this should ensure that
-# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
-# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
-# to avoid problems with "make -n".
-.log.trs:
-	rm -f $< $@
-	$(MAKE) $(AM_MAKEFLAGS) $<
-
-# Leading 'am--fnord' is there to ensure the list of targets does not
-# expand to empty, as could happen e.g. with make check TESTS=''.
-am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
-am--force-recheck:
-	@:
-
-$(TEST_SUITE_LOG): $(TEST_LOGS)
-	@$(am__set_TESTS_bases); \
-	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
-	redo_bases=`for i in $$bases; do \
-	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
-	            done`; \
-	if test -n "$$redo_bases"; then \
-	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
-	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
-	  if $(am__make_dryrun); then :; else \
-	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
-	  fi; \
-	fi; \
-	if test -n "$$am__remaking_logs"; then \
-	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
-	       "recursion detected" >&2; \
-	else \
-	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
-	fi; \
-	if $(am__make_dryrun); then :; else \
-	  st=0;  \
-	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
-	  for i in $$redo_bases; do \
-	    test -f $$i.trs && test -r $$i.trs \
-	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
-	    test -f $$i.log && test -r $$i.log \
-	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
-	  done; \
-	  test $$st -eq 0 || exit 1; \
-	fi
-	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
-	ws='[ 	]'; \
-	results=`for b in $$bases; do echo $$b.trs; done`; \
-	test -n "$$results" || results=/dev/null; \
-	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
-	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
-	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
-	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
-	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
-	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
-	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
-	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
-	  success=true; \
-	else \
-	  success=false; \
-	fi; \
-	br='==================='; br=$$br$$br$$br$$br; \
-	result_count () \
-	{ \
-	    if test x"$$1" = x"--maybe-color"; then \
-	      maybe_colorize=yes; \
-	    elif test x"$$1" = x"--no-color"; then \
-	      maybe_colorize=no; \
-	    else \
-	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
-	    fi; \
-	    shift; \
-	    desc=$$1 count=$$2; \
-	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
-	      color_start=$$3 color_end=$$std; \
-	    else \
-	      color_start= color_end=; \
-	    fi; \
-	    echo "$${color_start}# $$desc $$count$${color_end}"; \
-	}; \
-	create_testsuite_report () \
-	{ \
-	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
-	  result_count $$1 "PASS: " $$pass  "$$grn"; \
-	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
-	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
-	  result_count $$1 "FAIL: " $$fail  "$$red"; \
-	  result_count $$1 "XPASS:" $$xpass "$$red"; \
-	  result_count $$1 "ERROR:" $$error "$$mgn"; \
-	}; \
-	{								\
-	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
-	    $(am__rst_title);						\
-	  create_testsuite_report --no-color;				\
-	  echo;								\
-	  echo ".. contents:: :depth: 2";				\
-	  echo;								\
-	  for b in $$bases; do echo $$b; done				\
-	    | $(am__create_global_log);					\
-	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
-	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
-	if $$success; then						\
-	  col="$$grn";							\
-	 else								\
-	  col="$$red";							\
-	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
-	fi;								\
-	echo "$${col}$$br$${std}"; 					\
-	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
-	echo "$${col}$$br$${std}"; 					\
-	create_testsuite_report --maybe-color;				\
-	echo "$$col$$br$$std";						\
-	if $$success; then :; else					\
-	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
-	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
-	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
-	  fi;								\
-	  echo "$$col$$br$$std";					\
-	fi;								\
-	$$success || exit 1
-
-check-TESTS:
-	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
-	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
-	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-	@set +e; $(am__set_TESTS_bases); \
-	log_list=`for i in $$bases; do echo $$i.log; done`; \
-	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
-	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
-	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
-	exit $$?;
-recheck: all 
-	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-	@set +e; $(am__set_TESTS_bases); \
-	bases=`for i in $$bases; do echo $$i; done \
-	         | $(am__list_recheck_tests)` || exit 1; \
-	log_list=`for i in $$bases; do echo $$i.log; done`; \
-	log_list=`echo $$log_list`; \
-	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
-	        am__force_recheck=am--force-recheck \
-	        TEST_LOGS="$$log_list"; \
-	exit $$?
-grib_iterator.sh.log: grib_iterator.sh
-	@p='grib_iterator.sh'; \
-	b='grib_iterator.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_get_keys.sh.log: grib_get_keys.sh
-	@p='grib_get_keys.sh'; \
-	b='grib_get_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_print_data.sh.log: grib_print_data.sh
-	@p='grib_print_data.sh'; \
-	b='grib_print_data.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_set_keys.sh.log: grib_set_keys.sh
-	@p='grib_set_keys.sh'; \
-	b='grib_set_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_keys_iterator.sh.log: grib_keys_iterator.sh
-	@p='grib_keys_iterator.sh'; \
-	b='grib_keys_iterator.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_multi.sh.log: grib_multi.sh
-	@p='grib_multi.sh'; \
-	b='grib_multi.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_multi_write.sh.log: grib_multi_write.sh
-	@p='grib_multi_write.sh'; \
-	b='grib_multi_write.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_precision.sh.log: grib_precision.sh
-	@p='grib_precision.sh'; \
-	b='grib_precision.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_list.sh.log: grib_list.sh
-	@p='grib_list.sh'; \
-	b='grib_list.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-large_grib1.sh.log: large_grib1.sh
-	@p='large_grib1.sh'; \
-	b='large_grib1.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_get_data.sh.log: grib_get_data.sh
-	@p='grib_get_data.sh'; \
-	b='grib_get_data.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-sections_copy.sh.log: sections_copy.sh
-	@p='sections_copy.sh'; \
-	b='sections_copy.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-set_missing.sh.log: set_missing.sh
-	@p='set_missing.sh'; \
-	b='set_missing.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_clone.sh.log: grib_clone.sh
-	@p='grib_clone.sh'; \
-	b='grib_clone.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_set_pv.sh.log: grib_set_pv.sh
-	@p='grib_set_pv.sh'; \
-	b='grib_set_pv.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-check_gaussian_grids.sh.log: check_gaussian_grids.sh
-	@p='check_gaussian_grids.sh'; \
-	b='check_gaussian_grids.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_attributes.sh.log: bufr_attributes.sh
-	@p='bufr_attributes.sh'; \
-	b='bufr_attributes.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_clone.sh.log: bufr_clone.sh
-	@p='bufr_clone.sh'; \
-	b='bufr_clone.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_expanded.sh.log: bufr_expanded.sh
-	@p='bufr_expanded.sh'; \
-	b='bufr_expanded.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_get_keys.sh.log: bufr_get_keys.sh
-	@p='bufr_get_keys.sh'; \
-	b='bufr_get_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_header.sh.log: bufr_read_header.sh
-	@p='bufr_read_header.sh'; \
-	b='bufr_read_header.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_scatterometer.sh.log: bufr_read_scatterometer.sh
-	@p='bufr_read_scatterometer.sh'; \
-	b='bufr_read_scatterometer.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_synop.sh.log: bufr_read_synop.sh
-	@p='bufr_read_synop.sh'; \
-	b='bufr_read_synop.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_set_keys.sh.log: bufr_set_keys.sh
-	@p='bufr_set_keys.sh'; \
-	b='bufr_set_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_subset.sh.log: bufr_subset.sh
-	@p='bufr_subset.sh'; \
-	b='bufr_subset.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_keys_iterator.sh.log: bufr_keys_iterator.sh
-	@p='bufr_keys_iterator.sh'; \
-	b='bufr_keys_iterator.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_missing.sh.log: bufr_missing.sh
-	@p='bufr_missing.sh'; \
-	b='bufr_missing.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_temp.sh.log: bufr_read_temp.sh
-	@p='bufr_read_temp.sh'; \
-	b='bufr_read_temp.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-get_product_kind.sh.log: get_product_kind.sh
-	@p='get_product_kind.sh'; \
-	b='get_product_kind.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-.test.log:
-	@p='$<'; \
-	$(am__set_b); \
-	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-#.test$(EXEEXT).log:
-#	@p='$<'; \
-#	$(am__set_b); \
-#	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
-#	--log-file $$b.log --trs-file $$b.trs \
-#	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
-#	"$$tst" $(AM_TESTS_FD_REDIRECT)
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
-	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
-	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: check-am install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
-	ctags ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	recheck tags tags-am uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/examples/C/Makefile.am b/examples/C/Makefile.am
index de0ab71..791875a 100644
--- a/examples/C/Makefile.am
+++ b/examples/C/Makefile.am
@@ -16,7 +16,7 @@ TESTS = grib_iterator.sh \
         set_missing.sh \
         grib_clone.sh \
         grib_set_pv.sh \
-        check_gaussian_grids.sh \
+        grib_set_bitmap.sh \
         bufr_attributes.sh \
         bufr_clone.sh \
         bufr_expanded.sh \
@@ -56,7 +56,6 @@ noinst_PROGRAMS  = c_grib_nearest \
                    c_grib_iterator_bitmap \
                    c_grib_clone \
                    c_new_sample \
-                   c_check_gaussian_grid \
                    c_grib_ensemble_index \
                    c_points \
                    c_bufr_attributes \
@@ -102,7 +101,6 @@ c_grib_precision_SOURCES       = grib_precision.c
 c_grib_get_data_SOURCES        = grib_get_data.c
 c_grib_clone_SOURCES           = grib_clone.c
 c_new_sample_SOURCES           = new_sample.c
-c_check_gaussian_grid_SOURCES  = check_gaussian_grid.c
 c_grib_ensemble_index_SOURCES  = grib_ensemble_index.c
 c_bufr_attributes_SOURCES      = bufr_attributes.c
 c_bufr_clone_SOURCES           = bufr_clone.c
diff --git a/examples/C/Makefile.in b/examples/C/Makefile.in
index 5e6509c..0cdb62a 100644
--- a/examples/C/Makefile.in
+++ b/examples/C/Makefile.in
@@ -90,15 +90,14 @@ noinst_PROGRAMS = c_grib_nearest$(EXEEXT) c_grib_set_bitmap$(EXEEXT) \
 	c_sections_copy$(EXEEXT) c_large_grib1$(EXEEXT) \
 	c_grib_get_data$(EXEEXT) c_grib_iterator_bitmap$(EXEEXT) \
 	c_grib_clone$(EXEEXT) c_new_sample$(EXEEXT) \
-	c_check_gaussian_grid$(EXEEXT) c_grib_ensemble_index$(EXEEXT) \
-	c_points$(EXEEXT) c_bufr_attributes$(EXEEXT) \
-	c_bufr_clone$(EXEEXT) c_bufr_expanded$(EXEEXT) \
-	c_bufr_get_keys$(EXEEXT) c_bufr_read_header$(EXEEXT) \
-	c_bufr_read_scatterometer$(EXEEXT) c_bufr_read_synop$(EXEEXT) \
-	c_bufr_get_keys$(EXEEXT) c_bufr_subset$(EXEEXT) \
-	c_bufr_keys_iterator$(EXEEXT) c_bufr_set_keys$(EXEEXT) \
-	c_bufr_missing$(EXEEXT) c_bufr_read_temp$(EXEEXT) \
-	c_get_product_kind$(EXEEXT)
+	c_grib_ensemble_index$(EXEEXT) c_points$(EXEEXT) \
+	c_bufr_attributes$(EXEEXT) c_bufr_clone$(EXEEXT) \
+	c_bufr_expanded$(EXEEXT) c_bufr_get_keys$(EXEEXT) \
+	c_bufr_read_header$(EXEEXT) c_bufr_read_scatterometer$(EXEEXT) \
+	c_bufr_read_synop$(EXEEXT) c_bufr_get_keys$(EXEEXT) \
+	c_bufr_subset$(EXEEXT) c_bufr_keys_iterator$(EXEEXT) \
+	c_bufr_set_keys$(EXEEXT) c_bufr_missing$(EXEEXT) \
+	c_bufr_read_temp$(EXEEXT) c_get_product_kind$(EXEEXT)
 subdir = examples/C
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(top_srcdir)/config/depcomp $(top_srcdir)/config/test-driver
@@ -174,11 +173,6 @@ am_c_bufr_subset_OBJECTS = bufr_subset.$(OBJEXT)
 c_bufr_subset_OBJECTS = $(am_c_bufr_subset_OBJECTS)
 c_bufr_subset_LDADD = $(LDADD)
 c_bufr_subset_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_check_gaussian_grid_OBJECTS = check_gaussian_grid.$(OBJEXT)
-c_check_gaussian_grid_OBJECTS = $(am_c_check_gaussian_grid_OBJECTS)
-c_check_gaussian_grid_LDADD = $(LDADD)
-c_check_gaussian_grid_DEPENDENCIES =  \
-	$(top_builddir)/src/libeccodes.la
 am_c_get_product_kind_OBJECTS = get_product_kind.$(OBJEXT)
 c_get_product_kind_OBJECTS = $(am_c_get_product_kind_OBJECTS)
 c_get_product_kind_LDADD = $(LDADD)
@@ -330,11 +324,10 @@ SOURCES = $(c_box_SOURCES) $(c_bufr_attributes_SOURCES) \
 	$(c_bufr_read_scatterometer_SOURCES) \
 	$(c_bufr_read_synop_SOURCES) $(c_bufr_read_temp_SOURCES) \
 	$(c_bufr_set_keys_SOURCES) $(c_bufr_subset_SOURCES) \
-	$(c_check_gaussian_grid_SOURCES) $(c_get_product_kind_SOURCES) \
-	$(c_grib_clone_SOURCES) $(c_grib_ensemble_index_SOURCES) \
-	$(c_grib_get_data_SOURCES) $(c_grib_get_keys_SOURCES) \
-	$(c_grib_index_SOURCES) $(c_grib_iterator_SOURCES) \
-	$(c_grib_iterator_bitmap_SOURCES) \
+	$(c_get_product_kind_SOURCES) $(c_grib_clone_SOURCES) \
+	$(c_grib_ensemble_index_SOURCES) $(c_grib_get_data_SOURCES) \
+	$(c_grib_get_keys_SOURCES) $(c_grib_index_SOURCES) \
+	$(c_grib_iterator_SOURCES) $(c_grib_iterator_bitmap_SOURCES) \
 	$(c_grib_keys_iterator_SOURCES) $(c_grib_list_SOURCES) \
 	$(c_grib_multi_SOURCES) $(c_grib_multi_write_SOURCES) \
 	$(c_grib_nearest_SOURCES) $(c_grib_precision_SOURCES) \
@@ -352,11 +345,10 @@ DIST_SOURCES = $(c_box_SOURCES) $(c_bufr_attributes_SOURCES) \
 	$(c_bufr_read_scatterometer_SOURCES) \
 	$(c_bufr_read_synop_SOURCES) $(c_bufr_read_temp_SOURCES) \
 	$(c_bufr_set_keys_SOURCES) $(c_bufr_subset_SOURCES) \
-	$(c_check_gaussian_grid_SOURCES) $(c_get_product_kind_SOURCES) \
-	$(c_grib_clone_SOURCES) $(c_grib_ensemble_index_SOURCES) \
-	$(c_grib_get_data_SOURCES) $(c_grib_get_keys_SOURCES) \
-	$(c_grib_index_SOURCES) $(c_grib_iterator_SOURCES) \
-	$(c_grib_iterator_bitmap_SOURCES) \
+	$(c_get_product_kind_SOURCES) $(c_grib_clone_SOURCES) \
+	$(c_grib_ensemble_index_SOURCES) $(c_grib_get_data_SOURCES) \
+	$(c_grib_get_keys_SOURCES) $(c_grib_index_SOURCES) \
+	$(c_grib_iterator_SOURCES) $(c_grib_iterator_bitmap_SOURCES) \
 	$(c_grib_keys_iterator_SOURCES) $(c_grib_list_SOURCES) \
 	$(c_grib_multi_SOURCES) $(c_grib_multi_write_SOURCES) \
 	$(c_grib_nearest_SOURCES) $(c_grib_precision_SOURCES) \
@@ -798,7 +790,7 @@ TESTS = grib_iterator.sh \
         set_missing.sh \
         grib_clone.sh \
         grib_set_pv.sh \
-        check_gaussian_grids.sh \
+        grib_set_bitmap.sh \
         bufr_attributes.sh \
         bufr_clone.sh \
         bufr_expanded.sh \
@@ -841,7 +833,6 @@ c_grib_precision_SOURCES = grib_precision.c
 c_grib_get_data_SOURCES = grib_get_data.c
 c_grib_clone_SOURCES = grib_clone.c
 c_new_sample_SOURCES = new_sample.c
-c_check_gaussian_grid_SOURCES = check_gaussian_grid.c
 c_grib_ensemble_index_SOURCES = grib_ensemble_index.c
 c_bufr_attributes_SOURCES = bufr_attributes.c
 c_bufr_clone_SOURCES = bufr_clone.c
@@ -956,10 +947,6 @@ c_bufr_subset$(EXEEXT): $(c_bufr_subset_OBJECTS) $(c_bufr_subset_DEPENDENCIES) $
 	@rm -f c_bufr_subset$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(c_bufr_subset_OBJECTS) $(c_bufr_subset_LDADD) $(LIBS)
 
-c_check_gaussian_grid$(EXEEXT): $(c_check_gaussian_grid_OBJECTS) $(c_check_gaussian_grid_DEPENDENCIES) $(EXTRA_c_check_gaussian_grid_DEPENDENCIES) 
-	@rm -f c_check_gaussian_grid$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_check_gaussian_grid_OBJECTS) $(c_check_gaussian_grid_LDADD) $(LIBS)
-
 c_get_product_kind$(EXEEXT): $(c_get_product_kind_OBJECTS) $(c_get_product_kind_DEPENDENCIES) $(EXTRA_c_get_product_kind_DEPENDENCIES) 
 	@rm -f c_get_product_kind$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(c_get_product_kind_OBJECTS) $(c_get_product_kind_LDADD) $(LIBS)
@@ -1087,7 +1074,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_read_temp.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_set_keys.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_subset.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/check_gaussian_grid.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/get_product_kind.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_clone.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_ensemble_index.Po at am__quote@
@@ -1441,9 +1427,9 @@ grib_set_pv.sh.log: grib_set_pv.sh
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-check_gaussian_grids.sh.log: check_gaussian_grids.sh
-	@p='check_gaussian_grids.sh'; \
-	b='check_gaussian_grids.sh'; \
+grib_set_bitmap.sh.log: grib_set_bitmap.sh
+	@p='grib_set_bitmap.sh'; \
+	b='grib_set_bitmap.sh'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
diff --git a/examples/C/box.c b/examples/C/box.c
index 8e9c18e..42d9527 100644
--- a/examples/C/box.c
+++ b/examples/C/box.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -12,54 +12,54 @@
 
 int main(int argc, char* argv[])
 {
-	FILE* f;
-	int err=0;
-	char infile[]="../../data/reduced_gaussian_model_level.grib1";
-	codes_handle *h=NULL;
-	codes_box* box;
-	codes_points* points;
-	codes_context* c=codes_context_get_default();
-	double north,west,south,east;
-	double* val;
-	int i;
+    FILE* f;
+    int err=0;
+    char infile[]="../../data/reduced_gaussian_model_level.grib1";
+    codes_handle *h=NULL;
+    codes_box* box;
+    codes_points* points;
+    codes_context* c=codes_context_get_default();
+    double north,west,south,east;
+    double* val;
+    int i;
 
-	north=60;
-	south=10;
-	west=-10;
-	east=30;
+    north=60;
+    south=10;
+    west=-10;
+    east=30;
 
-	f=fopen(infile,"r");
-	if (!f) {
-		perror(infile);
-		exit(1);
-	}
+    f=fopen(infile,"r");
+    if (!f) {
+        perror(infile);
+        exit(1);
+    }
 
-	h=codes_handle_new_from_file(c, f, PRODUCT_GRIB, &err);
-	if (!h) {
-		printf("unable to create handle from file %s\n",infile);
-		exit(err);
-	}
+    h=codes_handle_new_from_file(c, f, PRODUCT_GRIB, &err);
+    if (!h) {
+        printf("unable to create handle from file %s\n",infile);
+        exit(err);
+    }
 
-	box=codes_box_new(h,&err);
+    box=codes_box_new(h,&err);
 
-	if (!box) {
-		printf("unable to create box\n");
-		exit(err);
-	}
+    if (!box) {
+        printf("unable to create box\n");
+        exit(err);
+    }
 
-	points=codes_box_get_points(box,north,west,south,east,&err);
+    points=codes_box_get_points(box,north,west,south,east,&err);
 
-	val=(double*)malloc(sizeof(double)*points->n);
-	codes_points_get_values(h,points,val);
+    val=(double*)malloc(sizeof(double)*points->n);
+    codes_points_get_values(h,points,val);
 
-	for (i=0;i<points->n;i++) {
-		printf("%d -- %.3f %.3f %ld %g\n",i,
-			points->latitudes[i], points->longitudes[i], (long)(points->indexes[i]), val[i]);
-	}
+    for (i=0;i<points->n;i++) {
+        printf("%d -- %.3f %.3f %ld %g\n",i,
+                points->latitudes[i], points->longitudes[i], (long)(points->indexes[i]), val[i]);
+    }
 
-	free(val);
+    free(val);
 
-	fclose(f);
-	return 0;
+    fclose(f);
+    return 0;
 
 }
diff --git a/examples/C/bufr_attributes.c b/examples/C/bufr_attributes.c
index 16c6424..a6aab16 100644
--- a/examples/C/bufr_attributes.c
+++ b/examples/C/bufr_attributes.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -29,8 +29,8 @@ int main(int argc,char* argv[])
     char* unitsPercent= NULL;
     long longVal;
     double doubleVal;
-    size_t values_len=0, desc_len=0, len=0;
-    int i, err=0;
+    size_t len=0;
+    int err=0;
     int cnt=0;
     char* infile = "../../data/bufr/syno_multi.bufr";
 
@@ -41,7 +41,7 @@ int main(int argc,char* argv[])
     }
 
     /* loop over the messages in the bufr file */
-    while ((h = codes_handle_new_from_file(NULL,in,PRODUCT_BUFR,&err)) != NULL || err != CODES_SUCCESS)
+    while ((h = codes_handle_new_from_file(NULL, in, PRODUCT_BUFR, &err)) != NULL || err != CODES_SUCCESS)
     {
         if (h == NULL) {
             printf("Error: unable to create handle for message %d\n",cnt);
@@ -53,7 +53,7 @@ int main(int argc,char* argv[])
 
         /* we need to instruct ecCodes to expand the descriptors 
           i.e. unpack the data values */
-        CODES_CHECK(codes_set_long(h,"unpack",1),0);
+        CODES_CHECK(codes_set_long(h, "unpack", 1),0);
 
         /* ----------------------------------------------------------------
            We will read the value and all the attributes available for
@@ -61,11 +61,11 @@ int main(int argc,char* argv[])
         -------------------------------------------------------------------*/ 
 
         /* get the value as double */
-        CODES_CHECK(codes_get_double(h,"airTemperatureAt2M",&doubleVal),0);
+        CODES_CHECK(codes_get_double(h, "airTemperatureAt2M", &doubleVal),0);
         printf("  airTemperatureAt2M: %.2f\n",doubleVal);
 
         /* get the element's code (see BUFR code table B) */
-        CODES_CHECK(codes_get_long(h,"airTemperatureAt2M->code",&longVal),0);
+        CODES_CHECK(codes_get_long(h, "airTemperatureAt2M->code", &longVal),0);
         printf("  airTemperatureAt2M->code: %ld\n",longVal);
 
         /* get the element's units (see BUFR code table B) */
@@ -79,15 +79,15 @@ int main(int argc,char* argv[])
         printf("  airTemperatureAt2M->units: %s\n", units);
 
         /* get the element's scale (see BUFR code table B) */
-        CODES_CHECK(codes_get_long(h,"airTemperatureAt2M->scale",&longVal),0);
+        CODES_CHECK(codes_get_long(h, "airTemperatureAt2M->scale", &longVal),0);
         printf("  airTemperatureAt2M->scale: %ld\n",longVal);
 
         /* get the element's reference (see BUFR code table B) */
-        CODES_CHECK(codes_get_long(h,"airTemperatureAt2M->reference",&longVal),0);
+        CODES_CHECK(codes_get_long(h, "airTemperatureAt2M->reference", &longVal),0);
         printf("  airTemperatureAt2M->reference: %ld\n",longVal);
 
         /* get the element's width (see BUFR code table B) */
-        CODES_CHECK(codes_get_long(h,"airTemperatureAt2M->width",&longVal),0);
+        CODES_CHECK(codes_get_long(h, "airTemperatureAt2M->width", &longVal),0);
         printf("  airTemperatureAt2M->width: %ld\n",longVal);
 
         /* --------------------------------------------------------------------
@@ -97,11 +97,11 @@ int main(int argc,char* argv[])
         -------------------------------------------------------------------*/ 
 
         /* get the value as long */
-        CODES_CHECK(codes_get_long(h,"airTemperatureAt2M->percentConfidence",&longVal),0);
+        CODES_CHECK(codes_get_long(h, "airTemperatureAt2M->percentConfidence", &longVal),0);
         printf("  airTemperatureAt2M->percentConfidence: %ld\n",longVal);
 
         /* get the element's code (see BUFR code table B) */
-        CODES_CHECK(codes_get_long(h,"airTemperatureAt2M->percentConfidence->code",&longVal),0);
+        CODES_CHECK(codes_get_long(h, "airTemperatureAt2M->percentConfidence->code", &longVal),0);
         printf("  airTemperatureAt2M->percentConfidence->code: %ld\n",longVal);
 
         /* get the element's units (see BUFR code table B) */
@@ -115,18 +115,17 @@ int main(int argc,char* argv[])
         printf("  airTemperatureAt2M->percentConfidence->units: %s\n", unitsPercent);
 
         /* get the element's scale (see BUFR code table B) */
-        CODES_CHECK(codes_get_long(h,"airTemperatureAt2M->percentConfidence->scale",&longVal),0);
+        CODES_CHECK(codes_get_long(h, "airTemperatureAt2M->percentConfidence->scale", &longVal),0);
         printf("  airTemperatureAt2M->percentConfidence->scale: %ld\n",longVal);
 
         /* get the element's reference (see BUFR code table B) */
-        CODES_CHECK(codes_get_long(h,"airTemperatureAt2M->percentConfidence->reference",&longVal),0);
+        CODES_CHECK(codes_get_long(h, "airTemperatureAt2M->percentConfidence->reference", &longVal),0);
         printf("  airTemperatureAt2M->percentConfidence->reference: %ld\n",longVal);
 
         /* get the element's width (see BUFR code table B) */
-        CODES_CHECK(codes_get_long(h,"airTemperatureAt2M->percentConfidence->width",&longVal),0);
+        CODES_CHECK(codes_get_long(h, "airTemperatureAt2M->percentConfidence->width", &longVal),0);
         printf("  airTemperatureAt2M->percentConfidence->width: %ld\n",longVal);
 
-
         /* free allocated arrays */      
         free(units);
         free(unitsPercent);
diff --git a/examples/C/bufr_attributes.sh b/examples/C/bufr_attributes.sh
index 7596875..952ef54 100755
--- a/examples/C/bufr_attributes.sh
+++ b/examples/C/bufr_attributes.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/bufr_clone.c b/examples/C/bufr_clone.c
index 8c7390b..bab56d7 100644
--- a/examples/C/bufr_clone.c
+++ b/examples/C/bufr_clone.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -28,7 +28,7 @@ int main(int argc, char *argv[])
     FILE *in = NULL;
     FILE *out = NULL;
 
-    /* message handle. Required in all the eccodes calls acting on a message.*/
+    /* message handle. Required in all the ecCodes calls acting on a message.*/
     codes_handle *source_handle = NULL;
 
     const void *buffer = NULL;
@@ -52,7 +52,7 @@ int main(int argc, char *argv[])
     }
 
     /* create a handle for the first message */
-    source_handle = codes_handle_new_from_file(NULL,in,PRODUCT_BUFR,&err);
+    source_handle = codes_handle_new_from_file(NULL, in, PRODUCT_BUFR, &err);
 
     if (source_handle == NULL) {
         perror("ERROR: could not create handle for message");
@@ -80,10 +80,10 @@ int main(int argc, char *argv[])
         CODES_CHECK(codes_set_long(clone_handle, "bufrHeaderCentre", 222),0);
 
         /* get the coded message in a buffer */
-        CODES_CHECK(codes_get_message(clone_handle,&buffer,&size),0);
+        CODES_CHECK(codes_get_message(clone_handle, &buffer, &size),0);
 
         /* write the buffer to a file */
-        if(fwrite(buffer,1,size,out) != size) {
+        if(fwrite(buffer, 1, size, out) != size) {
             perror("ERROR: could not write message to file");
             return 1;
         }
diff --git a/examples/C/bufr_clone.sh b/examples/C/bufr_clone.sh
index 675f974..932a7f3 100755
--- a/examples/C/bufr_clone.sh
+++ b/examples/C/bufr_clone.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/bufr_expanded.c b/examples/C/bufr_expanded.c
index 9e43cc3..a3b9d4b 100644
--- a/examples/C/bufr_expanded.c
+++ b/examples/C/bufr_expanded.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -27,7 +27,7 @@ int main(int argc,char* argv[])
     char* filename = NULL;
     FILE* in = NULL;
 
-    /* message handle. Required in all the eccodes calls acting on a message.*/
+    /* message handle. Required in all the ecCodes calls acting on a message.*/
     codes_handle* h=NULL;
 
     double *values = NULL;
@@ -47,7 +47,7 @@ int main(int argc,char* argv[])
     }
 
     /* loop over the messages in the bufr file */
-    while ((h = codes_handle_new_from_file(NULL,in,PRODUCT_BUFR,&err)) != NULL || err != CODES_SUCCESS)
+    while ((h = codes_handle_new_from_file(NULL, in, PRODUCT_BUFR, &err)) != NULL || err != CODES_SUCCESS)
     {
         if (h == NULL) {
             printf("Error: unable to create handle for message %d\n",cnt);
@@ -56,14 +56,14 @@ int main(int argc,char* argv[])
         }
 
         /* get the size of the values array*/
-        CODES_CHECK(codes_get_size(h,"numericValues",&values_len),0);    
-        printf("  number of expanded values: %ld\n",values_len);    
+        CODES_CHECK(codes_get_size(h, "numericValues", &values_len),0);
+        printf("  number of expanded values: %ld\n", values_len);
 
         /* allocate array for data values */
-        values = malloc(values_len*sizeof(double));
+        values = (double*)malloc(values_len*sizeof(double));
 
         /* get the exapanded data values*/
-        CODES_CHECK(codes_get_double_array(h,"numericValues",values,&values_len),0);
+        CODES_CHECK(codes_get_double_array(h, "numericValues", values, &values_len),0);
 
         for(i = 0; i < values_len; i++)
         {
diff --git a/examples/C/bufr_expanded.sh b/examples/C/bufr_expanded.sh
index f943085..d0207b0 100755
--- a/examples/C/bufr_expanded.sh
+++ b/examples/C/bufr_expanded.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/bufr_get_keys.c b/examples/C/bufr_get_keys.c
index 6441699..a0240b0 100644
--- a/examples/C/bufr_get_keys.c
+++ b/examples/C/bufr_get_keys.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -17,7 +17,6 @@
 
 #include "eccodes.h"
 
-
 int main(int argc,char* argv[])
 {
     FILE* in = NULL;
@@ -33,7 +32,7 @@ int main(int argc,char* argv[])
     size_t values_len=0, desc_len=0, len=0;
     int i, err=0;
     int cnt=0;
-    char* infile = "../../data/bufr/syno_multi.bufr";
+    const char* infile = "../../data/bufr/syno_multi.bufr";
 
     in=fopen(infile,"r");
     if (!in) {
@@ -42,7 +41,7 @@ int main(int argc,char* argv[])
     }
 
     /* loop over the messages in the bufr file */
-    while ((h = codes_handle_new_from_file(NULL,in,PRODUCT_BUFR,&err)) != NULL || err != CODES_SUCCESS)
+    while ((h = codes_handle_new_from_file(NULL, in, PRODUCT_BUFR, &err)) != NULL || err != CODES_SUCCESS)
     {
         if (h == NULL) {
             printf("Error: unable to create handle for message %d\n",cnt);
@@ -54,21 +53,21 @@ int main(int argc,char* argv[])
 
         /* we need to instruct ecCodes to expand the descriptors 
           i.e. unpack the data values */
-        CODES_CHECK(codes_set_long(h,"unpack",1),0);
+        CODES_CHECK(codes_set_long(h, "unpack", 1),0);
 
         /* read and print some data values */ 
 
         /* long value */
-        CODES_CHECK(codes_get_long(h,"blockNumber",&longVal),0);
-        printf("  blockNumber: %ld\n",longVal);
+        CODES_CHECK(codes_get_long(h, "blockNumber", &longVal),0);
+        printf("  blockNumber: %ld\n", longVal);
 
         /* long value */
-        CODES_CHECK(codes_get_long(h,"stationNumber",&longVal),0);
-        printf("  stationNumber: %ld\n",longVal);
+        CODES_CHECK(codes_get_long(h, "stationNumber", &longVal),0);
+        printf("  stationNumber: %ld\n", longVal);
 
         /* double value */
-        CODES_CHECK(codes_get_double(h,"airTemperatureAt2M",&doubleVal),0);
-        printf("  airTemperatureAt2M: %f\n",doubleVal);
+        CODES_CHECK(codes_get_double(h, "airTemperatureAt2M", &doubleVal),0);
+        printf("  airTemperatureAt2M: %f\n", doubleVal);
 
         /* ---- string value  -----------------*/
 
@@ -83,11 +82,11 @@ int main(int argc,char* argv[])
         /* ---- array of long ----------------*/
 
         /* get the size and allocate memory*/
-        CODES_CHECK(codes_get_size(h,"bufrdcExpandedDescriptors",&desc_len),0);
-        descriptors = malloc(desc_len*sizeof(long));
+        CODES_CHECK(codes_get_size(h, "bufrdcExpandedDescriptors", &desc_len),0);
+        descriptors = (long*)malloc(desc_len*sizeof(long));
 
         /* get the values */
-        CODES_CHECK(codes_get_long_array(h,"bufrdcExpandedDescriptors",descriptors,&desc_len),0);
+        CODES_CHECK(codes_get_long_array(h, "bufrdcExpandedDescriptors", descriptors, &desc_len),0);
         printf("  bufrdcExpandedDescriptors:\n");
         for(i = 0; i < desc_len; i++)
         {
@@ -97,11 +96,11 @@ int main(int argc,char* argv[])
         /* ---- array of double ---------------*/
 
         /* get the size and allocate memory*/
-        CODES_CHECK(codes_get_size(h,"numericValues",&values_len),0);
-        values = malloc(values_len*sizeof(double));
+        CODES_CHECK(codes_get_size(h, "numericValues", &values_len),0);
+        values = (double*)malloc(values_len*sizeof(double));
 
         /* get the values*/
-        CODES_CHECK(codes_get_double_array(h,"numericValues",values,&values_len),0);
+        CODES_CHECK(codes_get_double_array(h, "numericValues", values, &values_len),0);
         printf("  numericValues:\n");
         for(i = 0; i < values_len; i++)
         {
diff --git a/examples/C/bufr_get_keys.sh b/examples/C/bufr_get_keys.sh
index cbe2d5b..4600655 100755
--- a/examples/C/bufr_get_keys.sh
+++ b/examples/C/bufr_get_keys.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/bufr_keys_iterator.c b/examples/C/bufr_keys_iterator.c
index 0450213..aa77806 100644
--- a/examples/C/bufr_keys_iterator.c
+++ b/examples/C/bufr_keys_iterator.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -34,7 +34,6 @@ int main(int argc,char* argv[])
 
     /* message handle. Required in all the eccodes calls acting on a message.*/
     codes_handle* h=NULL;
-    long longVal;
     int err=0, cnt=0;
     int keyType;
 
@@ -102,7 +101,7 @@ int main(int argc,char* argv[])
             CODES_CHECK(codes_get_size(h,name,&klen),0);
 
             /* not array */
-            if(klen ==1 || keyType == CODES_TYPE_STRING)
+            if(klen ==1)
             {    
                 vlen=MAX_VAL_LEN;
                 bzero(value,vlen);
diff --git a/examples/C/bufr_keys_iterator.sh b/examples/C/bufr_keys_iterator.sh
index ff1bbaa..2532525 100755
--- a/examples/C/bufr_keys_iterator.sh
+++ b/examples/C/bufr_keys_iterator.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -8,6 +8,7 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
+set -x
 . ./include.sh
 
 
diff --git a/examples/C/bufr_missing.c b/examples/C/bufr_missing.c
index 9e6917d..8e0b747 100644
--- a/examples/C/bufr_missing.c
+++ b/examples/C/bufr_missing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -26,9 +26,9 @@ int main(int argc,char* argv[])
     codes_handle* h=NULL;
 
     double doubleVal;
-    int i, err=0;
+    int err=0;
     int cnt=0;
-    char* infile = "../../data/bufr/syno_1.bufr";
+    const char* infile = "../../data/bufr/syno_1.bufr";
 
     in=fopen(infile,"r");
     if (!in) 
diff --git a/examples/C/bufr_missing.sh b/examples/C/bufr_missing.sh
index bcf6d73..13d90d9 100755
--- a/examples/C/bufr_missing.sh
+++ b/examples/C/bufr_missing.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/bufr_read_header.c b/examples/C/bufr_read_header.c
index 2e4f8b9..95ed002 100644
--- a/examples/C/bufr_read_header.c
+++ b/examples/C/bufr_read_header.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/C/bufr_read_header.sh b/examples/C/bufr_read_header.sh
index d3e4993..984ff6f 100755
--- a/examples/C/bufr_read_header.sh
+++ b/examples/C/bufr_read_header.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/bufr_read_scatterometer.c b/examples/C/bufr_read_scatterometer.c
index 98add13..d21bcc9 100644
--- a/examples/C/bufr_read_scatterometer.c
+++ b/examples/C/bufr_read_scatterometer.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -31,13 +31,11 @@ int main(int argc,char* argv[])
     codes_handle* h=NULL;
 
     double *lat=NULL, *lon=NULL, *bscatter=NULL;
-    long longVal;
-    double doubleVal;
     long numObs=0;
     size_t len=0;
     int i, err=0;
     int cnt=0;
-    char* infile = "../../data/bufr/asca_139.bufr";
+    const char* infile = "../../data/bufr/asca_139.bufr";
     char key_name[128];
 
     in=fopen(infile,"r");
@@ -75,9 +73,9 @@ int main(int argc,char* argv[])
         
         /* Allocate memory for the values to be read. Each
          * parameter must have the same number of values. */
-        lat = malloc(numObs*sizeof(double));
-        lon = malloc(numObs*sizeof(double));
-        bscatter = malloc(numObs*sizeof(double));
+        lat = (double*)malloc(numObs*sizeof(double));
+        lon = (double*)malloc(numObs*sizeof(double));
+        bscatter = (double*)malloc(numObs*sizeof(double));
 
         /* Get latitude */
         sprintf(key_name,"latitude");
diff --git a/examples/C/bufr_read_scatterometer.sh b/examples/C/bufr_read_scatterometer.sh
index 4d78be5..0994e3a 100755
--- a/examples/C/bufr_read_scatterometer.sh
+++ b/examples/C/bufr_read_scatterometer.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/bufr_read_synop.c b/examples/C/bufr_read_synop.c
index 147d377..851443a 100644
--- a/examples/C/bufr_read_synop.c
+++ b/examples/C/bufr_read_synop.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -100,23 +100,23 @@ int main(int argc,char* argv[])
          * read so we will use the # (occurrence) operator accordingly. */
         
         /* Cloud amount (low and middleclouds) */
-        CODES_CHECK(codes_get_long(h,"cloudAmount#1",&longVal),0);
+        CODES_CHECK(codes_get_long(h,"#1#cloudAmount",&longVal),0);
         printf("  cloudAmount (low and middle): %ld\n",longVal);
         
         /* Height of cloud base */
-        CODES_CHECK(codes_get_long(h,"heightOfBaseOfCloud#1",&longVal),0);
+        CODES_CHECK(codes_get_long(h,"#1#heightOfBaseOfCloud",&longVal),0);
         printf("  heightOfBaseOfCloud: %ld\n",longVal);
         
         /* Cloud type (low clouds) */
-        CODES_CHECK(codes_get_long(h,"cloudType#1",&longVal),0);
+        CODES_CHECK(codes_get_long(h,"#1#cloudType",&longVal),0);
         printf("  cloudType (low): %ld\n",longVal);
         
         /* Cloud type (middle clouds) */
-        CODES_CHECK(codes_get_long(h,"cloudType#2",&longVal),0);
+        CODES_CHECK(codes_get_long(h,"#2#cloudType",&longVal),0);
         printf("  cloudType (middle): %ld\n",longVal);
         
         /* Cloud type (high clouds) */
-        CODES_CHECK(codes_get_long(h,"cloudType#3",&longVal),0);
+        CODES_CHECK(codes_get_long(h,"#3#cloudType",&longVal),0);
         printf("  cloudType (high): %ld\n",longVal);
         
         /* delete handle */
diff --git a/examples/C/bufr_read_synop.sh b/examples/C/bufr_read_synop.sh
index 66353bc..7aca52f 100755
--- a/examples/C/bufr_read_synop.sh
+++ b/examples/C/bufr_read_synop.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/bufr_read_temp.c b/examples/C/bufr_read_temp.c
index e4a5bb9..f8592cb 100644
--- a/examples/C/bufr_read_temp.c
+++ b/examples/C/bufr_read_temp.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -32,12 +32,10 @@ int main(int argc,char* argv[])
 
     double *sigt_pres=NULL, *sigt_geo=NULL, *sigt_t=NULL;
     double *sigt_td=NULL;
-    long longVal;
-    double doubleVal;
-    size_t sigt_len=0, desc_len=0, len=0;
-    int i, err=0;
+    size_t sigt_len=0, len=0, i=0;
+    int err=0;
     int cnt=0;
-    char* infile = "../../data/bufr/temp_101.bufr";
+    const char* infile = "../../data/bufr/temp_101.bufr";
     char key_name[128];
 
     in=fopen(infile,"r");
@@ -84,10 +82,10 @@ int main(int argc,char* argv[])
 
         /* Allocate memory for the values to be read. Each
          * parameter must have the same number of values. */
-        sigt_pres = malloc(sigt_len*sizeof(double));
-        sigt_geo = malloc(sigt_len*sizeof(double));
-        sigt_t = malloc(sigt_len*sizeof(double));
-        sigt_td = malloc(sigt_len*sizeof(double));
+        sigt_pres = (double*)malloc(sigt_len*sizeof(double));
+        sigt_geo = (double*)malloc(sigt_len*sizeof(double));
+        sigt_t = (double*)malloc(sigt_len*sizeof(double));
+        sigt_td = (double*)malloc(sigt_len*sizeof(double));
 
         /* Get pressure */
         sprintf(key_name,"/verticalSoundingSignificance=4/pressure");
@@ -142,7 +140,7 @@ int main(int argc,char* argv[])
 
         for(i=0; i < sigt_len; i++)
         {
-            printf("%3d %6.0f %6.0f %.1f %.1f\n",
+            printf("%3ld %6.0f %6.0f %.1f %.1f\n",
                     i+1,sigt_pres[i],sigt_geo[i],sigt_t[i],sigt_td[i]);
         }
 
diff --git a/examples/C/bufr_read_temp.sh b/examples/C/bufr_read_temp.sh
index da819cd..5dc0859 100755
--- a/examples/C/bufr_read_temp.sh
+++ b/examples/C/bufr_read_temp.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/bufr_set_keys.c b/examples/C/bufr_set_keys.c
index 0448f2a..fdcf1c6 100644
--- a/examples/C/bufr_set_keys.c
+++ b/examples/C/bufr_set_keys.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -32,7 +32,7 @@ int main(int argc,char* argv[])
 
     long longVal;
     /*double doubleVal;*/
-    int i, err=0;
+    int err=0;
     int cnt=0;
     size_t size = 0;
     char* infile = "../../data/bufr/syno_multi.bufr";
diff --git a/examples/C/bufr_set_keys.sh b/examples/C/bufr_set_keys.sh
index 01bff6b..5a3a1f0 100755
--- a/examples/C/bufr_set_keys.sh
+++ b/examples/C/bufr_set_keys.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/bufr_subset.c b/examples/C/bufr_subset.c
index fcbe12b..d71041e 100644
--- a/examples/C/bufr_subset.c
+++ b/examples/C/bufr_subset.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -24,6 +24,7 @@ void usage(char* prog) {
 
 int main(int argc,char* argv[])
 {
+    char key[200]={0,};
     FILE* in = NULL;
 
     /* message handle. Required in all the eccodes calls acting on a message.*/
@@ -31,7 +32,9 @@ int main(int argc,char* argv[])
 
     long numberOfSubsets=0;
     long longVal;
-    /*double doubleVal;*/
+    double doubleVal;
+    size_t stringLen;
+    char stringVal[100]={0,};
     int i,err=0;
     int cnt=0;
     char* infile = "../../data/bufr/synop_multi_subset.bufr";
@@ -63,18 +66,26 @@ int main(int argc,char* argv[])
         /* loop over the subsets */
         for(i=1; i <= numberOfSubsets; i++)
         {
-            /* specify the subset number */
-            CODES_CHECK(codes_set_long(h,"subsetNumber",0),0);
+            sprintf(key,"/subsetNumber=%d/blockNumber",i);
 
-            /* read and print some data values */ 
-            CODES_CHECK(codes_get_long(h,"blockNumber",&longVal),0);
-            printf("  blockNumber: %ld\n",longVal);
+            printf("  subsetNumber=%d",i);
+            /* read and print some data values */
+            CODES_CHECK(codes_get_long(h,key,&longVal),0);
+            printf("  blockNumber=%ld",longVal);
 
-            CODES_CHECK(codes_get_long(h,"stationNumber",&longVal),0);
-            printf("  stationNumber: %ld\n",longVal);
+            sprintf(key,"/subsetNumber=%d/stationNumber",i);
+            CODES_CHECK(codes_get_long(h,key,&longVal),0);
+            printf("  stationNumber=%ld",longVal);
+
+            sprintf(key,"/subsetNumber=%d/stationOrSiteName",i);
+            stringLen=100;
+            CODES_CHECK(codes_get_string(h,key,stringVal,&stringLen),0);
+            printf("  stationOrSiteName=\"%s\"",stringVal);
+
+            sprintf(key,"/subsetNumber=%d/airTemperature",i);
+            CODES_CHECK(codes_get_double(h,key,&doubleVal),0);
+            printf("  airTemperature=%g\n",doubleVal);
 
-            /*CODES_CHECK(codes_get_double(h,"airTemperatureAt2M",&doubleVal),0);
-            printf("  airTemperatureAt2M %f\n",doubleVal);*/
         }
 
         /* delete handle */
diff --git a/examples/C/bufr_subset.sh b/examples/C/bufr_subset.sh
index 520b7bd..be20c2f 100755
--- a/examples/C/bufr_subset.sh
+++ b/examples/C/bufr_subset.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -17,20 +17,35 @@ label="bufr_subset_test_c"
 fTmp=${label}.tmp.txt
 rm -f $fTmp | true
 
+#Prepare ref file
+fRef=${label}.ref
+cat > $fRef <<EOF
+message: 0
+  numberOfSubsets: 12
+  subsetNumber=1  blockNumber=1  stationNumber=27  stationOrSiteName="TROMSO-HOLT"  airTemperature=276.45
+  subsetNumber=2  blockNumber=1  stationNumber=84  stationOrSiteName="PASVIK"  airTemperature=266.55
+  subsetNumber=3  blockNumber=1  stationNumber=270  stationOrSiteName="KVITHAMAR"  airTemperature=275.25
+  subsetNumber=4  blockNumber=1  stationNumber=272  stationOrSiteName="FROSTA"  airTemperature=276.25
+  subsetNumber=5  blockNumber=1  stationNumber=308  stationOrSiteName="FURUNESET"  airTemperature=276.85
+  subsetNumber=6  blockNumber=1  stationNumber=371  stationOrSiteName="LOKEN I VOLBU"  airTemperature=265.35
+  subsetNumber=7  blockNumber=1  stationNumber=381  stationOrSiteName="APELSVOLL"  airTemperature=270.15
+  subsetNumber=8  blockNumber=1  stationNumber=382  stationOrSiteName="KISE"  airTemperature=270.45
+  subsetNumber=9  blockNumber=1  stationNumber=387  stationOrSiteName="FAVANG"  airTemperature=267.55
+  subsetNumber=10  blockNumber=1  stationNumber=413  stationOrSiteName="SAERHEIM"  airTemperature=277.45
+  subsetNumber=11  blockNumber=1  stationNumber=464  stationOrSiteName="LANDVIK"  airTemperature=275.95
+  subsetNumber=12  blockNumber=1  stationNumber=485  stationOrSiteName="SANDE-GALLEBERG"  airTemperature=275.45
+EOF
+
 #We check "synop_multi_subset.bufr". The path is
 #hardcoded in the example
 
 REDIRECT=/dev/null
 
 #Write the values into a file and compare with reference
-${examples_dir}c_bufr_subset #2> $REDIRECT > $fTmp
-
-#TODO: add a proper check when subsets are properly implemented
+${examples_dir}c_bufr_subset 2> $REDIRECT > $fTmp
 
 #We compare output to the reference by ignoring the whitespaces 
-#diff -w $fRef $fTmp >$REDIRECT 2> $REDIRECT
-
-#cat $fTmp
+diff -w $fRef $fTmp >$REDIRECT 2> $REDIRECT
 
 #Clean up
-rm -f $fTmp
+rm -f $fTmp $fRef
diff --git a/examples/C/check_gaussian_grid.c b/examples/C/check_gaussian_grid.c
deleted file mode 100644
index 512db45..0000000
--- a/examples/C/check_gaussian_grid.c
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * Copyright 2005-2015 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.
- */
-
-/*
- *
- * Description: Check the geometry of a global GRIB field
- *              with a Gaussian Grid (reduced or regular)
- *
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-#include <stdarg.h>
-#include "eccodes.h"
-
-#define STR_EQUAL(s1, s2) (strcmp((s1), (s2)) == 0)
-
-int exit_on_error = 1; /* By default exit if any check fails */
-int error_count = 0;
-
-int DBL_EQUAL(double d1, double d2, double tolerance)
-{
-    return fabs(d1-d2) <= tolerance;
-}
-
-void usage(const char* prog)
-{
-    printf("usage: %s [-f] grib_file grib_file ...\n\n",prog);
-    printf("-f  Do not exit on first error\n");
-    exit(1);
-}
-
-/* Print an error message and die */
-void error(const char* fmt, ...)
-{
-    va_list list;
-    va_start(list,fmt);
-    vfprintf(stderr, fmt, list);
-    va_end(list);
-
-    ++error_count;
-    if (exit_on_error) {
-        exit(1);
-    }
-}
-
-double get_precision(long edition)
-{
-    if (edition == 1) return 1.0/1000.0;    /* milli degrees */
-    if (edition == 2) return 1.0/1000000.0; /* micro degrees */
-    assert(!"Invalid edition");
-    return 0.0;
-}
-
-int process_file(const char* filename)
-{
-    int err = 0, msg_num = 0;
-    codes_handle *h = NULL;
-
-    FILE* in = fopen(filename, "r");
-    if(!in) {
-        error("ERROR: unable to open input file %s\n",filename);
-    }
-    
-    printf("Checking file %s\n", filename);
-    
-    while ((h = codes_handle_new_from_file(0, in, PRODUCT_GRIB, &err)) != NULL )
-    {
-        int is_reduced = 0, is_regular = 0, grid_ok = 0;
-        long edition = 0, N = 0, Nj = 0, numberOfDataPoints;
-        size_t len = 0, numberOfValues = 0;
-        double *lats = NULL;
-        long *pl = NULL;
-        char gridType[32] = {0,};
-        double angular_tolerance, lat1, lon1, lat2, lon2, expected_lon2;
-        double iDirectionIncrementInDegrees;
-
-        if (err != CODES_SUCCESS) CODES_CHECK(err,0);
-        ++msg_num;
-        printf("\tProcessing GRIB message #%d\n", msg_num);
-
-        len = 32;
-        CODES_CHECK(codes_get_string(h,"gridType",gridType,&len),0);
-        is_regular = STR_EQUAL(gridType, "regular_gg");
-        is_reduced = STR_EQUAL(gridType, "reduced_gg");
-        grid_ok = is_regular || is_reduced;
-        if( !grid_ok ) {
-            /*error("ERROR: gridType should be Reduced or Regular Gaussian Grid!\n");*/
-            printf("\tWARNING: gridType should be Reduced or Regular Gaussian Grid! Ignoring\n");
-            codes_handle_delete(h);
-            continue;
-        }
-        
-        CODES_CHECK(codes_get_long(h,"edition",&edition),0);
-        CODES_CHECK(codes_get_long(h,"N",&N),0);
-        CODES_CHECK(codes_get_long(h,"Nj",&Nj),0);
-        CODES_CHECK(codes_get_long(h,"numberOfDataPoints",&numberOfDataPoints),0);
-        CODES_CHECK(codes_get_double(h,"latitudeOfFirstGridPointInDegrees", &lat1),0);
-        CODES_CHECK(codes_get_double(h,"longitudeOfFirstGridPointInDegrees",&lon1),0);
-        CODES_CHECK(codes_get_double(h,"latitudeOfLastGridPointInDegrees",  &lat2),0);
-        CODES_CHECK(codes_get_double(h,"longitudeOfLastGridPointInDegrees", &lon2),0);
-        CODES_CHECK(codes_get_double(h,"iDirectionIncrementInDegrees",&iDirectionIncrementInDegrees),0);
-
-        angular_tolerance = get_precision(edition);
-
-        if ( Nj != 2*N ) {
-            error("ERROR: Nj is %ld but should be 2*N (%ld)!\n", Nj, 2*N);
-        }
-
-        if (lon1 != 0) {
-            error("ERROR: latitudeOfFirstGridPointInDegrees=%f but should be 0!\n", lon1);
-        }
-        expected_lon2 = 360.0 - 360.0/(4*N);
-
-        /* Check first and last latitudes */
-        if (lat1 != -lat2) {
-            error("First latitude must be = last latitude but opposite in sign: lat1=%f, lat2=%f\n",
-                    lat1, lat2);
-        }
-        lats = (double*)malloc(sizeof(double)*Nj);
-        CODES_CHECK(codes_get_gaussian_latitudes(N,lats), 0);
-
-        if (!DBL_EQUAL(lats[0], lat1, angular_tolerance)) {
-            error("First latitude %f must be %f\n", lat1, lats[0]);
-        }
-        if (!DBL_EQUAL(lats[Nj-1], lat2, angular_tolerance)) {
-            error("Last latitude %f must be %f\n", lat2, lats[Nj-1]);
-        }
-
-        if (is_reduced) {
-            int pl_sum = 0, max_pl = 0;
-            size_t i = 0, pl_len = 0;
-            int is_missing = codes_is_missing(h, "Ni", &err);
-            assert(err == CODES_SUCCESS);
-            if (!is_missing) {
-                error("ERROR: Ni should be missing!\n");
-            }
-
-            CODES_CHECK(codes_get_size(h, "pl", &pl_len),0);
-            assert(pl_len>0);
-            if (pl_len != 2*N) {
-                error("ERROR: Length of pl array is %ld but should be 2*N (%ld)!\n", pl_len, 2*N);
-            }
-            pl = (long*)malloc(pl_len*sizeof(long));
-            assert(pl);
-            CODES_CHECK(codes_get_long_array(h, "pl", pl, &pl_len),0);
-            max_pl = pl[0];
-
-            /* Check pl is symmetric */
-            for(i=0; i<pl_len/2; ++i) {
-                const long pl_start = pl[i];
-                const long pl_end = pl[pl_len-1-i];
-                if ( pl_start != pl_end ) {
-                    error("ERROR: pl array is not symmetric: pl[%ld]=%ld, pl[%ld]=%ld!\n",
-                            i, pl_start,  pl_len-1-i, pl_end);
-                }
-            }
-
-            /* Check sum of pl array and total number of points */
-            for(i=0; i<pl_len; ++i) {
-                pl_sum += pl[i];
-                if (pl[i] > max_pl) max_pl = pl[i];
-            }
-            if (pl_sum != numberOfDataPoints) {
-                error("ERROR: Sum of pl array %ld does not match numberOfDataPoints %ld!\n", pl_sum, numberOfDataPoints);
-            }
-            if (max_pl != 4*N) {
-                printf("\tThis is an Octahedral Gaussian grid!\n");
-                expected_lon2 = 360.0 - 360.0/max_pl;
-            }
-            free(pl);
-        }
-
-        if (fabs(lon2 - expected_lon2) > angular_tolerance) {
-            error("ERROR: longitudeOfLastGridPointInDegrees=%f but should be %f!\n", lon2, expected_lon2);
-        }
-
-        CODES_CHECK(codes_get_size(h, "values", &numberOfValues),0);
-        if (numberOfValues != numberOfDataPoints) {
-            error("Number of data points %d different from number of values %d\n",
-                  numberOfDataPoints, numberOfValues);
-        }
-
-        free(lats);
-        codes_handle_delete(h);
-    }
-    fclose(in);
-    printf("\nFile %s OK\n\n", filename);
-    return 0;
-}
-
-int main(int argc, char** argv)
-{
-    int i = 0;
-
-    if (argc < 2)
-    {
-        usage(argv[0]);
-        return 1;
-    }
-    
-    for(i=1; i<argc; ++i)
-    {
-        const char* arg = argv[i];
-        if (STR_EQUAL(arg, "-f"))
-        {
-            if (argc < 3) {
-                usage(argv[0]);
-                return 1;
-            }
-            /* Process switches */
-            exit_on_error = 0;
-        }
-        else
-        {
-            /* We have a grib file */
-            process_file(arg);
-        }
-    }
-
-    printf("###############\n");
-    if (error_count == 0)
-    {
-        printf("ALL OK\n");
-    }
-    else
-    {
-        printf("Error count: %d\n", error_count);
-    }
-    
-    return 0;
-}
diff --git a/examples/C/check_gaussian_grids.sh b/examples/C/check_gaussian_grids.sh
deleted file mode 100755
index 49f79d2..0000000
--- a/examples/C/check_gaussian_grids.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-# Copyright 2005-2015 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.sh
-
-# Check all sample GRIBs with a Gaussian grid
-samples_dir=${proj_dir}/samples
-for gg in ${samples_dir}/reduced_gg_* ${samples_dir}/regular_gg_*; do
-   ${examples_dir}c_check_gaussian_grid $gg >/dev/null
-done
diff --git a/examples/C/ecmwf_link.sh b/examples/C/ecmwf_link.sh
index 56839c0..127e4bc 100755
--- a/examples/C/ecmwf_link.sh
+++ b/examples/C/ecmwf_link.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/fieldset.c b/examples/C/fieldset.c
index 4aea273..af12931 100644
--- a/examples/C/fieldset.c
+++ b/examples/C/fieldset.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/C/get_product_kind.c b/examples/C/get_product_kind.c
index 916b367..fc6a477 100644
--- a/examples/C/get_product_kind.c
+++ b/examples/C/get_product_kind.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/C/get_product_kind.sh b/examples/C/get_product_kind.sh
index d8c876e..adc108c 100755
--- a/examples/C/get_product_kind.sh
+++ b/examples/C/get_product_kind.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/grib_clone.c b/examples/C/grib_clone.c
index 5dd6c47..60708de 100644
--- a/examples/C/grib_clone.c
+++ b/examples/C/grib_clone.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/C/grib_clone.sh b/examples/C/grib_clone.sh
index 530af66..6dcc4e8 100755
--- a/examples/C/grib_clone.sh
+++ b/examples/C/grib_clone.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/grib_ensemble_index.c b/examples/C/grib_ensemble_index.c
old mode 100755
new mode 100644
index d0833cb..b17ad63
--- a/examples/C/grib_ensemble_index.c
+++ b/examples/C/grib_ensemble_index.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/C/grib_get_data.c b/examples/C/grib_get_data.c
index 1dae35b..a4ada5b 100644
--- a/examples/C/grib_get_data.c
+++ b/examples/C/grib_get_data.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/C/grib_get_data.sh b/examples/C/grib_get_data.sh
index 85358fd..c309c86 100755
--- a/examples/C/grib_get_data.sh
+++ b/examples/C/grib_get_data.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/grib_get_keys.c b/examples/C/grib_get_keys.c
index c1f0a98..0bd7dd9 100644
--- a/examples/C/grib_get_keys.c
+++ b/examples/C/grib_get_keys.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -50,11 +50,13 @@ int main(int argc, char** argv)
         return 1;
     }
 
-    /* create new handle from a message in a file*/
+    /* create new handle from the first message in the file*/
     h = codes_handle_new_from_file(0, in, PRODUCT_GRIB, &err);
     if (h == NULL) {
         printf("Error: unable to create handle from file %s\n",filename);
+        return 1;
     }
+    fclose(in);
 
     /* Store the filename in the key "file" for this handle */
     len = strlen(filename);
@@ -125,10 +127,10 @@ int main(int argc, char** argv)
         assert(len == 1+strlen(filename));
         codes_get_string(h, "file", file, &len);
         eq = strcmp(file, filename);
-        assert( eq == 0 );
+        if (eq != 0) assert(!"file and filename not equal");
     }
 
     codes_handle_delete(h);
-    fclose(in);
+
     return 0;
 }
diff --git a/examples/C/grib_get_keys.sh b/examples/C/grib_get_keys.sh
index 71055ed..1a8524a 100755
--- a/examples/C/grib_get_keys.sh
+++ b/examples/C/grib_get_keys.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/grib_index.c b/examples/C/grib_index.c
index 2aa6c42..1f3fc0d 100644
--- a/examples/C/grib_index.c
+++ b/examples/C/grib_index.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -7,6 +7,14 @@
  * 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.
  */
+
+/*
+ * C Implementation: grib_index
+ *
+ * Description: How to create and use an index to access GRIB messages from a file
+ *
+ */
+
 #include "grib_api.h"
 
 void usage(char* prog) {
@@ -19,7 +27,6 @@ int main(int argc,char* argv[])
     grib_index* index=NULL;
     grib_handle* h=NULL;
     char* infile=NULL;
-    char* outfile=NULL;
     long *steps,*levels,*numbers; /* arrays */
     char** shortName=NULL;
     int i,j,k,l;
@@ -31,7 +38,6 @@ int main(int argc,char* argv[])
 
     if (argc != 2) usage(argv[0]);
     infile=argv[1];
-    outfile=argv[2];
 
     printf("indexing...\n");
 
diff --git a/examples/C/grib_iterator.c b/examples/C/grib_iterator.c
index 8ec6846..0f3a14b 100644
--- a/examples/C/grib_iterator.c
+++ b/examples/C/grib_iterator.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/C/grib_iterator.sh b/examples/C/grib_iterator.sh
index 1240071..f46e078 100755
--- a/examples/C/grib_iterator.sh
+++ b/examples/C/grib_iterator.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/grib_iterator_bitmap.c b/examples/C/grib_iterator_bitmap.c
index bd655e9..7141944 100644
--- a/examples/C/grib_iterator_bitmap.c
+++ b/examples/C/grib_iterator_bitmap.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -76,6 +76,7 @@ int main(int argc, char** argv)
         /* Loop on all the lat/lon/values. Only print non-missing values */
         while(codes_grib_iterator_next(iter,&lat,&lon,&value))
         {
+            /* Consult bitmap to see if the n'th value is missing */
             int is_missing_val = (bitmapPresent && bitmap[n] == 0);
             if (!is_missing_val) {
                 printf("- %d - lat=%f lon=%f value=%f\n",n,lat,lon,value);
diff --git a/examples/C/grib_keys_iterator.c b/examples/C/grib_keys_iterator.c
index 2c83984..90a9c96 100644
--- a/examples/C/grib_keys_iterator.c
+++ b/examples/C/grib_keys_iterator.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -45,7 +45,7 @@ int main(int argc, char *argv[])
     /* name_space=NULL to get all the keys */
     /* char* name_space=0; */
 
-    FILE* f;
+    FILE* f = NULL;
     codes_handle* h=NULL;
 
     int err=0;
@@ -93,9 +93,8 @@ int main(int argc, char *argv[])
         codes_keys_iterator_delete(kiter);
         codes_handle_delete(h);
     }
-
+    fclose(f);
     return 0;
-
 }
 
 static void usage(char* progname)
diff --git a/examples/C/grib_keys_iterator.sh b/examples/C/grib_keys_iterator.sh
index 42c8bd8..6f8b15f 100755
--- a/examples/C/grib_keys_iterator.sh
+++ b/examples/C/grib_keys_iterator.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/grib_list.c b/examples/C/grib_list.c
index f3ce026..9ce6a21 100644
--- a/examples/C/grib_list.c
+++ b/examples/C/grib_list.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/C/grib_list.sh b/examples/C/grib_list.sh
index 045c529..ccd196d 100755
--- a/examples/C/grib_list.sh
+++ b/examples/C/grib_list.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/grib_multi.c b/examples/C/grib_multi.c
index 657fd8c..97d27ea 100644
--- a/examples/C/grib_multi.c
+++ b/examples/C/grib_multi.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -9,12 +9,12 @@
  */
 
 /*
- * C Implementation: grib_multi  
+ * C Implementation: grib_multi
  *
  * Description: How to decode GRIB messages containing multiple
  *              fields. Try to turn on and off multi support to
  *              see the difference. Default is OFF.
- *  			For all the tools defalut is multi support ON.
+ *              For all the tools defalut is multi support ON.
  *
  */
 #include <stdio.h>
diff --git a/examples/C/grib_multi.sh b/examples/C/grib_multi.sh
index 7705bea..8303abc 100755
--- a/examples/C/grib_multi.sh
+++ b/examples/C/grib_multi.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/grib_multi_write.c b/examples/C/grib_multi_write.c
index f2beec3..db7eff4 100644
--- a/examples/C/grib_multi_write.c
+++ b/examples/C/grib_multi_write.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/C/grib_multi_write.sh b/examples/C/grib_multi_write.sh
index 15d3362..3d4d0a1 100755
--- a/examples/C/grib_multi_write.sh
+++ b/examples/C/grib_multi_write.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/grib_nearest.c b/examples/C/grib_nearest.c
index ae2222d..a8a5c19 100644
--- a/examples/C/grib_nearest.c
+++ b/examples/C/grib_nearest.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -65,16 +65,18 @@ int main(int argc, char** argv)
 
     mode=CODES_NEAREST_SAME_GRID | CODES_NEAREST_SAME_POINT;
     count=1;
+
     while ((h=codes_fieldset_next_handle(set,&err))!=NULL) {
         CODES_CHECK(codes_get_long(h,"step",&step),0);
         len=20;
-        CODES_CHECK(codes_get_string(h,"param",param,&len),0);
+        CODES_CHECK(codes_get_string(h,"shortName",param,&len),0);
 
         printf("%d %ld %s  ",count,step,param);
         if (!nearest) nearest=codes_grib_nearest_new(h,&err);
         CODES_CHECK(err,0);
         CODES_CHECK(codes_grib_nearest_find(nearest,h,lat,lon,mode,lats,lons,values,distances,indexes,&size),0);
-        for (i=0;i<4;i++) printf("%d %.2f %.2f %g %g - ",
+        printf("\nIdx\tlat\tlon\tdist\tval\n");
+        for (i=0;i<4;i++) printf("%d\t%.2f\t%.2f\t%g\t%g\n",
                 (int)indexes[i],lats[i],lons[i],distances[i],values[i]);
         printf("\n");
 
diff --git a/examples/C/grib_precipitation.c b/examples/C/grib_precipitation.c
index e9def46..f287fef 100644
--- a/examples/C/grib_precipitation.c
+++ b/examples/C/grib_precipitation.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/C/grib_precision.c b/examples/C/grib_precision.c
index 5226dcc..4e8e9c0 100644
--- a/examples/C/grib_precision.c
+++ b/examples/C/grib_precision.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/C/grib_precision.sh b/examples/C/grib_precision.sh
index 3cf38e6..16f22a7 100755
--- a/examples/C/grib_precision.sh
+++ b/examples/C/grib_precision.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/grib_print_data.c b/examples/C/grib_print_data.c
index 03bb514..ef3d0b6 100644
--- a/examples/C/grib_print_data.c
+++ b/examples/C/grib_print_data.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/C/grib_print_data.sh b/examples/C/grib_print_data.sh
index ce12310..cf4c97c 100755
--- a/examples/C/grib_print_data.sh
+++ b/examples/C/grib_print_data.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/grib_set_bitmap.c b/examples/C/grib_set_bitmap.c
index 3ad6255..5055de4 100644
--- a/examples/C/grib_set_bitmap.c
+++ b/examples/C/grib_set_bitmap.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -23,70 +23,69 @@
 
 int main(int argc, char** argv)
 {
-  int err = 0;
-  size_t size=0;
-
-  FILE* in = NULL;
-  char* infile = "../../data/regular_latlon_surface.grib1";
-  FILE* out = NULL;
-  char* outfile = "out.grib1";
-  codes_handle *h = NULL;
-  const void* buffer = NULL;
-  size_t values_len;
-  double* values;
-  double missing=9999;
-  int i=0;
-
-  in = fopen(infile,"r");
-  if(!in) {
-    printf("ERROR: unable to open input file %s\n",infile);
-    return 1;
-  }
-
-  out = fopen(outfile,"w");
-  if(!out) {
-    printf("ERROR: unable to open output file %s\n",outfile);
+    int err = 0;
+    size_t size=0;
+
+    FILE* in = NULL;
+    char* infile = "../../data/regular_latlon_surface.grib1";
+    FILE* out = NULL;
+    char* outfile = "out.set_bitmap_c.grib";
+    codes_handle *h = NULL;
+    const void* buffer = NULL;
+    size_t values_len;
+    double* values;
+    double missing=9999;
+    int i=0;
+
+    in = fopen(infile, "r");
+    if(!in) {
+        printf("ERROR: unable to open input file %s\n",infile);
+        return 1;
+    }
+
+    out = fopen(outfile, "w");
+    if(!out) {
+        printf("ERROR: unable to open output file %s\n",outfile);
         fclose(in);
-    return 1;
-  }
+        return 1;
+    }
 
-  h = codes_handle_new_from_file(0, in, PRODUCT_GRIB, &err);
-  if (h == NULL) {
-    printf("Error: unable to create handle from file %s\n",infile);
-  }
+    h = codes_handle_new_from_file(0, in, PRODUCT_GRIB, &err);
+    if (h == NULL) {
+        printf("Error: unable to create handle from file %s\n",infile);
+    }
 
-  CODES_CHECK(codes_set_double(h,"missingValue",missing),0);
+    CODES_CHECK(codes_set_double(h, "missingValue", missing),0);
 
-  /* get the size of the values array*/
-  CODES_CHECK(codes_get_size(h,"values",&values_len),0);
+    /* get the size of the values array*/
+    CODES_CHECK(codes_get_size(h, "values", &values_len),0);
 
-  values = (double*)malloc(values_len*sizeof(double));
+    values = (double*)malloc(values_len*sizeof(double));
 
-  /* get data values*/
-  CODES_CHECK(codes_get_double_array(h,"values",values,&values_len),0);
+    /* get data values*/
+    CODES_CHECK(codes_get_double_array(h, "values", values, &values_len),0);
 
-  CODES_CHECK(codes_set_long(h,"bitmapPresent",1),0);
+    CODES_CHECK(codes_set_long(h, "bitmapPresent", 1),0);
 
-  for(i = 0; i < 10; i++)
-    values[i]=missing;
+    for(i = 0; i < 10; i++) {
+        values[i]=missing;
+    }
 
-  CODES_CHECK(codes_set_double_array(h,"values",values,values_len),0);
+    CODES_CHECK(codes_set_double_array(h, "values", values, values_len),0);
 
-  /* get the coded message in a buffer */
-  CODES_CHECK(codes_get_message(h,&buffer,&size),0);
+    /* get the coded message in a buffer */
+    CODES_CHECK(codes_get_message(h, &buffer, &size),0);
 
-  /* write the buffer in a file*/
-  if(fwrite(buffer,1,size,out) != size)
-  {
-     perror(outfile);
-     exit(1);
-  }
+    /* write the buffer in a file*/
+    if(fwrite(buffer, 1, size, out) != size) {
+        perror(outfile);
+        exit(1);
+    }
 
-  /* delete handle */
-  codes_handle_delete(h);
+    codes_handle_delete(h);
 
-  fclose(in);
-  fclose(out);
+    fclose(in);
+    fclose(out);
 
-  return 0;
+    return 0;
 }
diff --git a/examples/C/grib_set_bitmap.sh b/examples/C/grib_set_bitmap.sh
new file mode 100755
index 0000000..1fb27a9
--- /dev/null
+++ b/examples/C/grib_set_bitmap.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+# Copyright 2005-2016 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.sh
+
+OUT_TMP=out.set_bitmap_c.grib
+
+# The input and output files are hardcoded in the example
+${examples_dir}c_grib_set_bitmap
+
+x=`${tools_dir}/grib_get -p numberOfDataPoints,numberOfCodedValues,numberOfMissing $OUT_TMP`
+[ "$x" = "496 486 10" ]
+
+rm -f $OUT_TMP
diff --git a/examples/C/grib_set_data.c b/examples/C/grib_set_data.c
index 15dff71..5779e62 100644
--- a/examples/C/grib_set_data.c
+++ b/examples/C/grib_set_data.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/C/grib_set_keys.c b/examples/C/grib_set_keys.c
index 73725e2..28d8fb9 100644
--- a/examples/C/grib_set_keys.c
+++ b/examples/C/grib_set_keys.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/C/grib_set_keys.sh b/examples/C/grib_set_keys.sh
index dd04a3d..35b3b62 100755
--- a/examples/C/grib_set_keys.sh
+++ b/examples/C/grib_set_keys.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/grib_set_pv.c b/examples/C/grib_set_pv.c
index 184de6b..7b3f86e 100644
--- a/examples/C/grib_set_pv.c
+++ b/examples/C/grib_set_pv.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -27,7 +27,7 @@ void usage(const char* prog) {
 int main(int argc, char** argv)
 {
     int err = 0;
-    long PVPresent=1, NV = 0;
+    long NV = 0;
     size_t size=0;
     double pv[4]={1,2,3,4};
     size_t pvsize=4;
@@ -42,14 +42,14 @@ int main(int argc, char** argv)
     if (argc != 3) usage(argv[0]);
     infile = argv[1];
     outfile= argv[2];
-    
-    in = fopen(infile,"r");
+
+    in = fopen(infile, "r");
     if(!in) {
         fprintf(stderr, "ERROR: unable to open input file %s\n",infile);
         return 1;
     }
 
-    out = fopen(outfile,"w");
+    out = fopen(outfile, "w");
     if(!out) {
         fprintf(stderr, "ERROR: unable to open output file %s\n",outfile);
         fclose(in);
@@ -62,19 +62,19 @@ int main(int argc, char** argv)
         fprintf(stderr, "Error: unable to create handle from file %s\n",infile);
     }
 
-    CODES_CHECK(codes_set_long(h,"PVPresent",PVPresent),0);
+    CODES_CHECK(codes_set_long(h,"PVPresent", 1),0);
+
+    CODES_CHECK(codes_set_double_array(h, "pv", pv, pvsize),0);
 
-    CODES_CHECK(codes_set_double_array(h,"pv",pv,pvsize),0);
-    
     /* Once we set the pv array, the NV key should be also set */
-    CODES_CHECK(codes_get_long(h,"NV",&NV),0);
+    CODES_CHECK(codes_get_long(h, "NV", &NV),0);
     assert( NV == pvsize );
 
     /* get the coded message in a buffer */
-    CODES_CHECK(codes_get_message(h,&buffer,&size),0);
+    CODES_CHECK(codes_get_message(h, &buffer, &size),0);
 
     /* write the buffer in a file*/
-    if(fwrite(buffer,1,size,out) != size)
+    if(fwrite(buffer, 1, size, out) != size)
     {
         perror(argv[1]);
         exit(1);
diff --git a/examples/C/grib_set_pv.sh b/examples/C/grib_set_pv.sh
index 498f4ea..dd5d671 100755
--- a/examples/C/grib_set_pv.sh
+++ b/examples/C/grib_set_pv.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/include.sh b/examples/C/include.sh
index 29d8206..48899af 100644
--- a/examples/C/include.sh
+++ b/examples/C/include.sh
@@ -1,5 +1,5 @@
 set -ea
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -34,13 +34,17 @@ else
     export ECCODES_SAMPLES_PATH
     tools_dir=$cpath/tools/
     examples_dir=$cpath/examples/C/
+
+#tools_dir="valgrind --error-exitcode=1 -q $cpath/tools/"
+#examples_dir="valgrind --error-exitcode=1 -q $cpath/examples/C/"
+
     data_dir=$cpath/data
   else
     echo "Skipping test $0"
     exit
   fi
 
-  cd ${examples_dir}
+  cd "$cpath/examples/C"
 
   if [ -z "${GRIB_API_INCLUDE}" ]
   then 
diff --git a/examples/C/large_grib1.c b/examples/C/large_grib1.c
index d942873..a7f61d4 100644
--- a/examples/C/large_grib1.c
+++ b/examples/C/large_grib1.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -15,58 +15,58 @@
 /* See JIRA issue GRIB-361 */
 int main()
 {
-  const int ni = 2880;
-  const int nj = 2880;
-  double *values;
-  int i = 0;
-  codes_handle *h = NULL;
-  char* filename = "bigfile.grib";
+    const int ni = 2880;
+    const int nj = 2880;
+    double *values;
+    int i = 0;
+    codes_handle *h = NULL;
+    char* filename = "bigfile.grib";
 
-  values = (double*) malloc(ni*nj*sizeof(double));
-  if (!values) {
-    printf ("Malloc failed\n");
-    exit(1);
-  }
+    values = (double*) malloc(ni*nj*sizeof(double));
+    if (!values) {
+        printf ("Malloc failed\n");
+        exit(1);
+    }
 
-  for (i=0; i<ni*nj; i++) {
-    double rand = random();
-    values[i] = 10*rand;
-  }
+    for (i=0; i<ni*nj; i++) {
+        double rand = random();
+        values[i] = 10*rand;
+    }
 
-  h = codes_handle_new_from_samples(0, "GRIB1");
+    h = codes_handle_new_from_samples(0, "GRIB1");
 
-  CODES_CHECK(codes_set_long(h, "Ni", ni), 0);
-  CODES_CHECK(codes_set_long(h, "Nj", nj), 0);
-  CODES_CHECK(codes_set_long(h, "centre", 86), 0);
-  CODES_CHECK(codes_set_long(h, "process", 100), 0);
-  CODES_CHECK(codes_set_long(h, "indicatorOfTypeOfLevel", 105), 0);
-  CODES_CHECK(codes_set_long(h, "level", 2), 0);
-  CODES_CHECK(codes_set_long(h, "indicatorOfParameter", 1), 0);
-  CODES_CHECK(codes_set_long(h, "table2Version", 1), 0);
-  CODES_CHECK(codes_set_long(h, "dataDate", 20130424), 0);
-  CODES_CHECK(codes_set_long(h, "dataTime", 0), 0);
-  CODES_CHECK(codes_set_long(h, "startStep", 0), 0);
-  CODES_CHECK(codes_set_long(h, "endStep", 0), 0);
+    CODES_CHECK(codes_set_long(h, "Ni", ni), 0);
+    CODES_CHECK(codes_set_long(h, "Nj", nj), 0);
+    CODES_CHECK(codes_set_long(h, "centre", 86), 0);
+    CODES_CHECK(codes_set_long(h, "process", 100), 0);
+    CODES_CHECK(codes_set_long(h, "indicatorOfTypeOfLevel", 105), 0);
+    CODES_CHECK(codes_set_long(h, "level", 2), 0);
+    CODES_CHECK(codes_set_long(h, "indicatorOfParameter", 1), 0);
+    CODES_CHECK(codes_set_long(h, "table2Version", 1), 0);
+    CODES_CHECK(codes_set_long(h, "dataDate", 20130424), 0);
+    CODES_CHECK(codes_set_long(h, "dataTime", 0), 0);
+    CODES_CHECK(codes_set_long(h, "startStep", 0), 0);
+    CODES_CHECK(codes_set_long(h, "endStep", 0), 0);
 
-  CODES_CHECK(codes_set_long(h, "bitmapPresent", 1), 0);
+    CODES_CHECK(codes_set_long(h, "bitmapPresent", 1), 0);
 
-  CODES_CHECK(codes_set_double(h, "iDirectionIncrementInDegrees", 0.125), 0);
-  CODES_CHECK(codes_set_double(h, "jDirectionIncrementInDegrees", 0.125), 0);
-  CODES_CHECK(codes_set_long(h,   "iScansNegatively", 0), 0);
-  CODES_CHECK(codes_set_long(h,   "jScansPositively", 1), 0);
+    CODES_CHECK(codes_set_double(h, "iDirectionIncrementInDegrees", 0.125), 0);
+    CODES_CHECK(codes_set_double(h, "jDirectionIncrementInDegrees", 0.125), 0);
+    CODES_CHECK(codes_set_long(h,   "iScansNegatively", 0), 0);
+    CODES_CHECK(codes_set_long(h,   "jScansPositively", 1), 0);
 
-  CODES_CHECK(codes_set_double(h, "latitudeOfFirstGridPointInDegrees", -90), 0);
-  CODES_CHECK(codes_set_double(h, "latitudeOfLastGridPointInDegrees", 90), 0);
-  CODES_CHECK(codes_set_double(h, "longitudeOfFirstGridPointInDegrees", -180), 0);
-  CODES_CHECK(codes_set_double(h, "longitudeOfLastGridPointInDegrees", 180), 0);
+    CODES_CHECK(codes_set_double(h, "latitudeOfFirstGridPointInDegrees", -90), 0);
+    CODES_CHECK(codes_set_double(h, "latitudeOfLastGridPointInDegrees", 90), 0);
+    CODES_CHECK(codes_set_double(h, "longitudeOfFirstGridPointInDegrees", -180), 0);
+    CODES_CHECK(codes_set_double(h, "longitudeOfLastGridPointInDegrees", 180), 0);
 
-  CODES_CHECK(codes_set_double_array(h, "values", values, ni*nj), 0);
+    CODES_CHECK(codes_set_double_array(h, "values", values, ni*nj), 0);
 
-  codes_write_message(h, filename, "w");
-  /*printf("Wrote file %s\n", filename);*/
+    codes_write_message(h, filename, "w");
+    /*printf("Wrote file %s\n", filename);*/
 
-  codes_handle_delete(h);
-  free (values);
+    codes_handle_delete(h);
+    free (values);
 
-  return 0;
+    return 0;
 }
diff --git a/examples/C/large_grib1.sh b/examples/C/large_grib1.sh
index 2857ebb..98b01fe 100755
--- a/examples/C/large_grib1.sh
+++ b/examples/C/large_grib1.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -12,8 +12,7 @@
 # The executable should produce a GRIB1 file
 ${examples_dir}c_large_grib1
 
-# Make sure it can be listed OK
-output=${examples_dir}bigfile.grib
+# Make sure the newly created file can be listed OK
+output=bigfile.grib
 ${tools_dir}grib_ls $output > /dev/null
 rm -f $output
-
diff --git a/examples/C/mars_param.c b/examples/C/mars_param.c
index 49c5dec..891b583 100644
--- a/examples/C/mars_param.c
+++ b/examples/C/mars_param.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/C/multi2.c b/examples/C/multi2.c
index a1f4131..5f3052a 100644
--- a/examples/C/multi2.c
+++ b/examples/C/multi2.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/C/nc.c b/examples/C/nc.c
index a7f1156..ff8f2e7 100644
--- a/examples/C/nc.c
+++ b/examples/C/nc.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -10,27 +10,27 @@
 #include "eccodes.h"
 
 void usage(char* prog) {
-	printf("usage: %s in.nc\n",prog);
-	exit(1);
+    printf("usage: %s in.nc\n",prog);
+    exit(1);
 }
 
 int main(int argc,char* argv[]) {
 
-	char* file;
-	int err=0;
-	codes_handle* h;
-	char identifier[7]={0,};
-	size_t len=7;
-	codes_context* c=codes_context_get_default();
-	 
-	if (argc>2) usage(argv[0]);
+    char* file;
+    int err=0;
+    codes_handle* h;
+    char identifier[7]={0,};
+    size_t len=7;
+    codes_context* c=codes_context_get_default();
 
-	file=argv[1];
+    if (argc>2) usage(argv[0]);
 
-	h=codes_handle_new_from_nc_file(c,file,&err);
-	codes_get_string(h,"identifier",identifier,&len);
-	printf("%s\n",identifier);
-	CODES_CHECK(err,0);
+    file=argv[1];
 
-	return err;
+    h=codes_handle_new_from_nc_file(c,file,&err);
+    codes_get_string(h,"identifier",identifier,&len);
+    printf("%s\n",identifier);
+    CODES_CHECK(err,0);
+
+    return err;
 }
diff --git a/examples/C/points.c b/examples/C/points.c
index b012ab7..90d1815 100644
--- a/examples/C/points.c
+++ b/examples/C/points.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/C/rename.sh b/examples/C/rename.sh
index 5daa60f..136f60e 100755
--- a/examples/C/rename.sh
+++ b/examples/C/rename.sh
@@ -1,5 +1,5 @@
 #!/bin/ksh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/run_examples.sh b/examples/C/run_examples.sh
index d4fc130..b5e8849 100644
--- a/examples/C/run_examples.sh
+++ b/examples/C/run_examples.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/sections_copy.c b/examples/C/sections_copy.c
index 0233e77..14c901e 100644
--- a/examples/C/sections_copy.c
+++ b/examples/C/sections_copy.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -91,7 +91,7 @@ int main ( int argc, char* argv[])
                     what_str[i]);
         }
     }
-     
+
     h=codes_grib_util_sections_copy(hfrom,hto,what,&err);
     CODES_CHECK(err,0);
 
diff --git a/examples/C/sections_copy.sh b/examples/C/sections_copy.sh
index 1bd2bfb..f5c9b77 100755
--- a/examples/C/sections_copy.sh
+++ b/examples/C/sections_copy.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/set_missing.c b/examples/C/set_missing.c
index 90c2e47..0b6a8f8 100644
--- a/examples/C/set_missing.c
+++ b/examples/C/set_missing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -61,7 +61,7 @@ int main(int argc, char** argv)
     CODES_CHECK(codes_get_long(h,"Ni",&Ni),0);
     is_missing = codes_is_missing(h, "Ni", &err);
     CODES_CHECK(err,0);
-    assert(is_missing == 1);
+    if (is_missing != 1) assert(!"Ni should be missing");
     CODES_CHECK(codes_set_long(h,"Ni", Ni),0);
 
     /* get the coded message in a buffer */
diff --git a/examples/C/set_missing.sh b/examples/C/set_missing.sh
index 3f9b191..2790343 100755
--- a/examples/C/set_missing.sh
+++ b/examples/C/set_missing.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/examples/C/values_check.c b/examples/C/values_check.c
index a114993..5ac77f5 100644
--- a/examples/C/values_check.c
+++ b/examples/C/values_check.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index 89dbb88..08f092e 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -1,4 +1,6 @@
-add_subdirectory(C)
-add_subdirectory(F90)
-add_subdirectory(python)
+if( HAVE_EXAMPLES )
+    add_subdirectory(C)
+    add_subdirectory(F90)
+    add_subdirectory(python)
+endif()
 
diff --git a/examples/F90/CMakeLists.txt b/examples/F90/CMakeLists.txt
index e6bf8a1..a16b176 100644
--- a/examples/F90/CMakeLists.txt
+++ b/examples/F90/CMakeLists.txt
@@ -3,6 +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} )
 
 # Build the executables used by test scripts
 ################################################
@@ -38,39 +39,22 @@ list( APPEND tests
       bufr_read_scatterometer
       bufr_read_synop
       bufr_read_temp
+      bufr_read_tropical_cyclone
       bufr_set_keys
       bufr_subset
       get_product_kind
 )
 
-# Simplify tests: no need to build executable and then test. All in one
-# TODO
-# ecbuild_add_test( TARGET test_f90_samples
-#   LINKER_LANGUAGE Fortran
-#   SOURCES samples.f90
-#   LIBS    eccodes_f90 eccodes
-#   COMMAND  ${CMAKE_CURRENT_SOURCE_DIR}/samples.sh
-#   CONDITION  EC_HAVE_FORTRAN
-# )
-
 foreach( tool ${tests} )
 
-    # Build the Fortran executable
-    ecbuild_add_executable( TARGET    f_${tool}
-                            NOINSTALL
-                            SOURCES   ${tool}.f90
-                            CONDITION EC_HAVE_FORTRAN
-                            LINKER_LANGUAGE Fortran
-                            LIBS      eccodes_f90 eccodes
-    )
-    # Add the test which depends on the above executable
-    ecbuild_add_test( TARGET f_${tool}_test
-                      TYPE SCRIPT
-                      DEPENDS f_${tool}
-                      CONDITION EC_HAVE_FORTRAN
+    ecbuild_add_test( TARGET eccodes_f_${tool}
+                      SOURCES   ${tool}.f90
+                      LINKER_LANGUAGE Fortran
+                      LIBS      eccodes_f90 eccodes
+                      CONDITION HAVE_FORTRAN
+                      RESOURCES bufr_read_scatterometer_f.ref
                       COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/${tool}.sh
-                      RESOURCES include.sh
-                      TEST_DEPENDS get_gribs get_bufrs
+                      TEST_DEPENDS eccodes_get_gribs eccodes_get_bufrs
     )
 endforeach()
 
@@ -79,31 +63,29 @@ endforeach()
 ecbuild_add_executable( TARGET    f_new_from_file
                         NOINSTALL
                         SOURCES   new_from_file.f90
-                        CONDITION EC_HAVE_FORTRAN
+                        CONDITION HAVE_FORTRAN
                         LINKER_LANGUAGE Fortran
                         LIBS      eccodes_f90 eccodes
 )
 ecbuild_add_executable( TARGET    f_copy_namespace
                         NOINSTALL
                         SOURCES   copy_namespace.f90
-                        CONDITION EC_HAVE_FORTRAN
+                        CONDITION HAVE_FORTRAN
                         LINKER_LANGUAGE Fortran
                         LIBS      eccodes_f90 eccodes
 )
-ecbuild_add_executable( TARGET    f_set_gvc
+ecbuild_add_executable( TARGET    eccodes_f_set_gvc
                         NOINSTALL
                         SOURCES   set_gvc.f90
-                        CONDITION EC_HAVE_FORTRAN
+                        CONDITION HAVE_FORTRAN
                         LINKER_LANGUAGE Fortran
                         LIBS      eccodes_f90 eccodes
 )
 
 
 # # Note extra dependency
-# ecbuild_add_test( TARGET f_set_test
+# ecbuild_add_test( TARGET eccodes_f_set_test
 #                   TYPE SCRIPT
 #                   DEPENDS set_gvc set
 #                   COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/set.sh
-#                   RESOURCES include.sh
 # )
-# 
diff --git a/examples/F90/Makefile b/examples/F90/Makefile
deleted file mode 100644
index c6d9ece..0000000
--- a/examples/F90/Makefile
+++ /dev/null
@@ -1,1673 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# examples/F90/Makefile.  Generated from Makefile.in by configure.
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/eccodes
-pkgincludedir = $(includedir)/eccodes
-pkglibdir = $(libdir)/eccodes
-pkglibexecdir = $(libexecdir)/eccodes
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = x86_64-suse-linux-gnu
-host_triplet = x86_64-suse-linux-gnu
-noinst_PROGRAMS = f_grib_index$(EXEEXT) f_copy_message$(EXEEXT) \
-	f_grib_get_keys$(EXEEXT) f_get_data$(EXEEXT) f_get_pl$(EXEEXT) \
-	f_get_pv$(EXEEXT) f_grib_keys_iterator$(EXEEXT) \
-	f_grib_multi_write$(EXEEXT) f_grib_multi$(EXEEXT) \
-	f_grib_nearest$(EXEEXT) f_grib_precision$(EXEEXT) \
-	f_grib_print_data$(EXEEXT) f_grib_set_keys$(EXEEXT) \
-	f_grib_set_bitmap$(EXEEXT) f_set_missing$(EXEEXT) \
-	f_grib_set_pv$(EXEEXT) f_samples$(EXEEXT) \
-	f_count_messages$(EXEEXT) f_read_message$(EXEEXT) \
-	f_read_from_file$(EXEEXT) f_new_from_file$(EXEEXT) \
-	f_copy_namespace$(EXEEXT) f_get_set_uuid$(EXEEXT) \
-	f_set_gvc$(EXEEXT) f_grib_clone$(EXEEXT) f_bufr_clone$(EXEEXT) \
-	f_bufr_expanded$(EXEEXT) f_bufr_get_keys$(EXEEXT) \
-	f_bufr_read_header$(EXEEXT) f_bufr_read_synop$(EXEEXT) \
-	f_bufr_set_keys$(EXEEXT) f_bufr_keys_iterator$(EXEEXT) \
-	f_bufr_subset$(EXEEXT) f_bufr_attributes$(EXEEXT) \
-	f_get_product_kind$(EXEEXT) f_bufr_read_temp$(EXEEXT) \
-	f_bufr_read_scatterometer$(EXEEXT)
-subdir = examples/F90
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/config/test-driver
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am_f_bufr_attributes_OBJECTS = bufr_attributes.$(OBJEXT)
-f_bufr_attributes_OBJECTS = $(am_f_bufr_attributes_OBJECTS)
-f_bufr_attributes_LDADD = $(LDADD)
-f_bufr_attributes_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-am_f_bufr_clone_OBJECTS = bufr_clone.$(OBJEXT)
-f_bufr_clone_OBJECTS = $(am_f_bufr_clone_OBJECTS)
-f_bufr_clone_LDADD = $(LDADD)
-f_bufr_clone_DEPENDENCIES = $(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_bufr_expanded_OBJECTS = bufr_expanded.$(OBJEXT)
-f_bufr_expanded_OBJECTS = $(am_f_bufr_expanded_OBJECTS)
-f_bufr_expanded_LDADD = $(LDADD)
-f_bufr_expanded_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_bufr_get_keys_OBJECTS = bufr_get_keys.$(OBJEXT)
-f_bufr_get_keys_OBJECTS = $(am_f_bufr_get_keys_OBJECTS)
-f_bufr_get_keys_LDADD = $(LDADD)
-f_bufr_get_keys_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_bufr_keys_iterator_OBJECTS = bufr_keys_iterator.$(OBJEXT)
-f_bufr_keys_iterator_OBJECTS = $(am_f_bufr_keys_iterator_OBJECTS)
-f_bufr_keys_iterator_LDADD = $(LDADD)
-f_bufr_keys_iterator_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_bufr_read_header_OBJECTS = bufr_read_header.$(OBJEXT)
-f_bufr_read_header_OBJECTS = $(am_f_bufr_read_header_OBJECTS)
-f_bufr_read_header_LDADD = $(LDADD)
-f_bufr_read_header_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_bufr_read_scatterometer_OBJECTS =  \
-	bufr_read_scatterometer.$(OBJEXT)
-f_bufr_read_scatterometer_OBJECTS =  \
-	$(am_f_bufr_read_scatterometer_OBJECTS)
-f_bufr_read_scatterometer_LDADD = $(LDADD)
-f_bufr_read_scatterometer_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_bufr_read_synop_OBJECTS = bufr_read_synop.$(OBJEXT)
-f_bufr_read_synop_OBJECTS = $(am_f_bufr_read_synop_OBJECTS)
-f_bufr_read_synop_LDADD = $(LDADD)
-f_bufr_read_synop_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_bufr_read_temp_OBJECTS = bufr_read_temp.$(OBJEXT)
-f_bufr_read_temp_OBJECTS = $(am_f_bufr_read_temp_OBJECTS)
-f_bufr_read_temp_LDADD = $(LDADD)
-f_bufr_read_temp_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_bufr_set_keys_OBJECTS = bufr_set_keys.$(OBJEXT)
-f_bufr_set_keys_OBJECTS = $(am_f_bufr_set_keys_OBJECTS)
-f_bufr_set_keys_LDADD = $(LDADD)
-f_bufr_set_keys_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_bufr_subset_OBJECTS = bufr_subset.$(OBJEXT)
-f_bufr_subset_OBJECTS = $(am_f_bufr_subset_OBJECTS)
-f_bufr_subset_LDADD = $(LDADD)
-f_bufr_subset_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_copy_message_OBJECTS = copy_message.$(OBJEXT)
-f_copy_message_OBJECTS = $(am_f_copy_message_OBJECTS)
-f_copy_message_LDADD = $(LDADD)
-f_copy_message_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_copy_namespace_OBJECTS = copy_namespace.$(OBJEXT)
-f_copy_namespace_OBJECTS = $(am_f_copy_namespace_OBJECTS)
-f_copy_namespace_LDADD = $(LDADD)
-f_copy_namespace_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_count_messages_OBJECTS = count_messages.$(OBJEXT)
-f_count_messages_OBJECTS = $(am_f_count_messages_OBJECTS)
-f_count_messages_LDADD = $(LDADD)
-f_count_messages_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_get_data_OBJECTS = get_data.$(OBJEXT)
-f_get_data_OBJECTS = $(am_f_get_data_OBJECTS)
-f_get_data_LDADD = $(LDADD)
-f_get_data_DEPENDENCIES = $(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_get_pl_OBJECTS = get_pl.$(OBJEXT)
-f_get_pl_OBJECTS = $(am_f_get_pl_OBJECTS)
-f_get_pl_LDADD = $(LDADD)
-f_get_pl_DEPENDENCIES = $(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_get_product_kind_OBJECTS = get_product_kind.$(OBJEXT)
-f_get_product_kind_OBJECTS = $(am_f_get_product_kind_OBJECTS)
-f_get_product_kind_LDADD = $(LDADD)
-f_get_product_kind_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_get_pv_OBJECTS = get_pv.$(OBJEXT)
-f_get_pv_OBJECTS = $(am_f_get_pv_OBJECTS)
-f_get_pv_LDADD = $(LDADD)
-f_get_pv_DEPENDENCIES = $(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_get_set_uuid_OBJECTS = get_set_uuid.$(OBJEXT)
-f_get_set_uuid_OBJECTS = $(am_f_get_set_uuid_OBJECTS)
-f_get_set_uuid_LDADD = $(LDADD)
-f_get_set_uuid_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_grib_clone_OBJECTS = grib_clone.$(OBJEXT)
-f_grib_clone_OBJECTS = $(am_f_grib_clone_OBJECTS)
-f_grib_clone_LDADD = $(LDADD)
-f_grib_clone_DEPENDENCIES = $(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_grib_get_keys_OBJECTS = grib_get_keys.$(OBJEXT)
-f_grib_get_keys_OBJECTS = $(am_f_grib_get_keys_OBJECTS)
-f_grib_get_keys_LDADD = $(LDADD)
-f_grib_get_keys_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_grib_index_OBJECTS = grib_index.$(OBJEXT)
-f_grib_index_OBJECTS = $(am_f_grib_index_OBJECTS)
-f_grib_index_LDADD = $(LDADD)
-f_grib_index_DEPENDENCIES = $(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_grib_keys_iterator_OBJECTS = grib_keys_iterator.$(OBJEXT)
-f_grib_keys_iterator_OBJECTS = $(am_f_grib_keys_iterator_OBJECTS)
-f_grib_keys_iterator_LDADD = $(LDADD)
-f_grib_keys_iterator_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_grib_multi_OBJECTS = grib_multi.$(OBJEXT)
-f_grib_multi_OBJECTS = $(am_f_grib_multi_OBJECTS)
-f_grib_multi_LDADD = $(LDADD)
-f_grib_multi_DEPENDENCIES = $(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_grib_multi_write_OBJECTS = grib_multi_write.$(OBJEXT)
-f_grib_multi_write_OBJECTS = $(am_f_grib_multi_write_OBJECTS)
-f_grib_multi_write_LDADD = $(LDADD)
-f_grib_multi_write_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_grib_nearest_OBJECTS = grib_nearest.$(OBJEXT)
-f_grib_nearest_OBJECTS = $(am_f_grib_nearest_OBJECTS)
-f_grib_nearest_LDADD = $(LDADD)
-f_grib_nearest_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_grib_precision_OBJECTS = grib_precision.$(OBJEXT)
-f_grib_precision_OBJECTS = $(am_f_grib_precision_OBJECTS)
-f_grib_precision_LDADD = $(LDADD)
-f_grib_precision_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_grib_print_data_OBJECTS = grib_print_data.$(OBJEXT)
-f_grib_print_data_OBJECTS = $(am_f_grib_print_data_OBJECTS)
-f_grib_print_data_LDADD = $(LDADD)
-f_grib_print_data_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_grib_set_bitmap_OBJECTS = grib_set_bitmap.$(OBJEXT)
-f_grib_set_bitmap_OBJECTS = $(am_f_grib_set_bitmap_OBJECTS)
-f_grib_set_bitmap_LDADD = $(LDADD)
-f_grib_set_bitmap_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_grib_set_keys_OBJECTS = grib_set_keys.$(OBJEXT)
-f_grib_set_keys_OBJECTS = $(am_f_grib_set_keys_OBJECTS)
-f_grib_set_keys_LDADD = $(LDADD)
-f_grib_set_keys_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_grib_set_pv_OBJECTS = grib_set_pv.$(OBJEXT)
-f_grib_set_pv_OBJECTS = $(am_f_grib_set_pv_OBJECTS)
-f_grib_set_pv_LDADD = $(LDADD)
-f_grib_set_pv_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_new_from_file_OBJECTS = new_from_file.$(OBJEXT)
-f_new_from_file_OBJECTS = $(am_f_new_from_file_OBJECTS)
-f_new_from_file_LDADD = $(LDADD)
-f_new_from_file_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_read_from_file_OBJECTS = read_from_file.$(OBJEXT)
-f_read_from_file_OBJECTS = $(am_f_read_from_file_OBJECTS)
-f_read_from_file_LDADD = $(LDADD)
-f_read_from_file_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_read_message_OBJECTS = read_message.$(OBJEXT)
-f_read_message_OBJECTS = $(am_f_read_message_OBJECTS)
-f_read_message_LDADD = $(LDADD)
-f_read_message_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_samples_OBJECTS = samples.$(OBJEXT)
-f_samples_OBJECTS = $(am_f_samples_OBJECTS)
-f_samples_LDADD = $(LDADD)
-f_samples_DEPENDENCIES = $(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_set_gvc_OBJECTS = set_gvc.$(OBJEXT)
-f_set_gvc_OBJECTS = $(am_f_set_gvc_OBJECTS)
-f_set_gvc_LDADD = $(LDADD)
-f_set_gvc_DEPENDENCIES = $(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_f_set_missing_OBJECTS = set_missing.$(OBJEXT)
-f_set_missing_OBJECTS = $(am_f_set_missing_OBJECTS)
-f_set_missing_LDADD = $(LDADD)
-f_set_missing_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-AM_V_P = $(am__v_P_$(V))
-am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. -I$(top_builddir)/src
-FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-LTFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-AM_V_FC = $(am__v_FC_$(V))
-am__v_FC_ = $(am__v_FC_$(AM_DEFAULT_VERBOSITY))
-am__v_FC_0 = @echo "  FC      " $@;
-am__v_FC_1 = 
-FCLD = $(FC)
-FCLINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_FCLD = $(am__v_FCLD_$(V))
-am__v_FCLD_ = $(am__v_FCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_FCLD_0 = @echo "  FCLD    " $@;
-am__v_FCLD_1 = 
-SOURCES = $(f_bufr_attributes_SOURCES) $(f_bufr_clone_SOURCES) \
-	$(f_bufr_expanded_SOURCES) $(f_bufr_get_keys_SOURCES) \
-	$(f_bufr_keys_iterator_SOURCES) $(f_bufr_read_header_SOURCES) \
-	$(f_bufr_read_scatterometer_SOURCES) \
-	$(f_bufr_read_synop_SOURCES) $(f_bufr_read_temp_SOURCES) \
-	$(f_bufr_set_keys_SOURCES) $(f_bufr_subset_SOURCES) \
-	$(f_copy_message_SOURCES) $(f_copy_namespace_SOURCES) \
-	$(f_count_messages_SOURCES) $(f_get_data_SOURCES) \
-	$(f_get_pl_SOURCES) $(f_get_product_kind_SOURCES) \
-	$(f_get_pv_SOURCES) $(f_get_set_uuid_SOURCES) \
-	$(f_grib_clone_SOURCES) $(f_grib_get_keys_SOURCES) \
-	$(f_grib_index_SOURCES) $(f_grib_keys_iterator_SOURCES) \
-	$(f_grib_multi_SOURCES) $(f_grib_multi_write_SOURCES) \
-	$(f_grib_nearest_SOURCES) $(f_grib_precision_SOURCES) \
-	$(f_grib_print_data_SOURCES) $(f_grib_set_bitmap_SOURCES) \
-	$(f_grib_set_keys_SOURCES) $(f_grib_set_pv_SOURCES) \
-	$(f_new_from_file_SOURCES) $(f_read_from_file_SOURCES) \
-	$(f_read_message_SOURCES) $(f_samples_SOURCES) \
-	$(f_set_gvc_SOURCES) $(f_set_missing_SOURCES)
-DIST_SOURCES = $(f_bufr_attributes_SOURCES) $(f_bufr_clone_SOURCES) \
-	$(f_bufr_expanded_SOURCES) $(f_bufr_get_keys_SOURCES) \
-	$(f_bufr_keys_iterator_SOURCES) $(f_bufr_read_header_SOURCES) \
-	$(f_bufr_read_scatterometer_SOURCES) \
-	$(f_bufr_read_synop_SOURCES) $(f_bufr_read_temp_SOURCES) \
-	$(f_bufr_set_keys_SOURCES) $(f_bufr_subset_SOURCES) \
-	$(f_copy_message_SOURCES) $(f_copy_namespace_SOURCES) \
-	$(f_count_messages_SOURCES) $(f_get_data_SOURCES) \
-	$(f_get_pl_SOURCES) $(f_get_product_kind_SOURCES) \
-	$(f_get_pv_SOURCES) $(f_get_set_uuid_SOURCES) \
-	$(f_grib_clone_SOURCES) $(f_grib_get_keys_SOURCES) \
-	$(f_grib_index_SOURCES) $(f_grib_keys_iterator_SOURCES) \
-	$(f_grib_multi_SOURCES) $(f_grib_multi_write_SOURCES) \
-	$(f_grib_nearest_SOURCES) $(f_grib_precision_SOURCES) \
-	$(f_grib_print_data_SOURCES) $(f_grib_set_bitmap_SOURCES) \
-	$(f_grib_set_keys_SOURCES) $(f_grib_set_pv_SOURCES) \
-	$(f_new_from_file_SOURCES) $(f_read_from_file_SOURCES) \
-	$(f_read_message_SOURCES) $(f_samples_SOURCES) \
-	$(f_set_gvc_SOURCES) $(f_set_missing_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__tty_colors_dummy = \
-  mgn= red= grn= lgn= blu= brg= std=; \
-  am__color_tests=no
-am__tty_colors = { \
-  $(am__tty_colors_dummy); \
-  if test "X$(AM_COLOR_TESTS)" = Xno; then \
-    am__color_tests=no; \
-  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
-    am__color_tests=yes; \
-  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
-    am__color_tests=yes; \
-  fi; \
-  if test $$am__color_tests = yes; then \
-    red=''; \
-    grn=''; \
-    lgn=''; \
-    blu=''; \
-    mgn=''; \
-    brg=''; \
-    std=''; \
-  fi; \
-}
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__recheck_rx = ^[ 	]*:recheck:[ 	]*
-am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
-am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
-# A command that, given a newline-separated list of test names on the
-# standard input, print the name of the tests that are to be re-run
-# upon "make recheck".
-am__list_recheck_tests = $(AWK) '{ \
-  recheck = 1; \
-  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-    { \
-      if (rc < 0) \
-        { \
-          if ((getline line2 < ($$0 ".log")) < 0) \
-	    recheck = 0; \
-          break; \
-        } \
-      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
-        { \
-          recheck = 0; \
-          break; \
-        } \
-      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
-        { \
-          break; \
-        } \
-    }; \
-  if (recheck) \
-    print $$0; \
-  close ($$0 ".trs"); \
-  close ($$0 ".log"); \
-}'
-# A command that, given a newline-separated list of test names on the
-# standard input, create the global log from their .trs and .log files.
-am__create_global_log = $(AWK) ' \
-function fatal(msg) \
-{ \
-  print "fatal: making $@: " msg | "cat >&2"; \
-  exit 1; \
-} \
-function rst_section(header) \
-{ \
-  print header; \
-  len = length(header); \
-  for (i = 1; i <= len; i = i + 1) \
-    printf "="; \
-  printf "\n\n"; \
-} \
-{ \
-  copy_in_global_log = 1; \
-  global_test_result = "RUN"; \
-  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-    { \
-      if (rc < 0) \
-         fatal("failed to read from " $$0 ".trs"); \
-      if (line ~ /$(am__global_test_result_rx)/) \
-        { \
-          sub("$(am__global_test_result_rx)", "", line); \
-          sub("[ 	]*$$", "", line); \
-          global_test_result = line; \
-        } \
-      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
-        copy_in_global_log = 0; \
-    }; \
-  if (copy_in_global_log) \
-    { \
-      rst_section(global_test_result ": " $$0); \
-      while ((rc = (getline line < ($$0 ".log"))) != 0) \
-      { \
-        if (rc < 0) \
-          fatal("failed to read from " $$0 ".log"); \
-        print line; \
-      }; \
-      printf "\n"; \
-    }; \
-  close ($$0 ".trs"); \
-  close ($$0 ".log"); \
-}'
-# Restructured Text title.
-am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
-# Solaris 10 'make', and several other traditional 'make' implementations,
-# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
-# by disabling -e (using the XSI extension "set +e") if it's set.
-am__sh_e_setup = case $$- in *e*) set +e;; esac
-# Default flags passed to test drivers.
-am__common_driver_flags = \
-  --color-tests "$$am__color_tests" \
-  --enable-hard-errors "$$am__enable_hard_errors" \
-  --expect-failure "$$am__expect_failure"
-# To be inserted before the command running the test.  Creates the
-# directory for the log if needed.  Stores in $dir the directory
-# containing $f, in $tst the test, in $log the log.  Executes the
-# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
-# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
-# will run the test scripts (or their associated LOG_COMPILER, if
-# thy have one).
-am__check_pre = \
-$(am__sh_e_setup);					\
-$(am__vpath_adj_setup) $(am__vpath_adj)			\
-$(am__tty_colors);					\
-srcdir=$(srcdir); export srcdir;			\
-case "$@" in						\
-  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
-    *) am__odir=.;; 					\
-esac;							\
-test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
-  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
-if test -f "./$$f"; then dir=./;			\
-elif test -f "$$f"; then dir=;				\
-else dir="$(srcdir)/"; fi;				\
-tst=$$dir$$f; log='$@'; 				\
-if test -n '$(DISABLE_HARD_ERRORS)'; then		\
-  am__enable_hard_errors=no; 				\
-else							\
-  am__enable_hard_errors=yes; 				\
-fi; 							\
-case " $(XFAIL_TESTS) " in				\
-  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
-    am__expect_failure=yes;;				\
-  *)							\
-    am__expect_failure=no;;				\
-esac; 							\
-$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
-# A shell command to get the names of the tests scripts with any registered
-# extension removed (i.e., equivalently, the names of the test logs, with
-# the '.log' extension removed).  The result is saved in the shell variable
-# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
-# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
-# since that might cause problem with VPATH rewrites for suffix-less tests.
-# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
-am__set_TESTS_bases = \
-  bases='$(TEST_LOGS)'; \
-  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
-  bases=`echo $$bases`
-RECHECK_LOGS = $(TEST_LOGS)
-AM_RECURSIVE_TARGETS = check recheck
-TEST_SUITE_LOG = test-suite.log
-TEST_EXTENSIONS =  .test
-LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
-LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
-am__set_b = \
-  case '$@' in \
-    */*) \
-      case '$*' in \
-        */*) b='$*';; \
-          *) b=`echo '$@' | sed 's/\.log$$//'`; \
-       esac;; \
-    *) \
-      b='$*';; \
-  esac
-am__test_logs1 = $(TESTS:=.log)
-am__test_logs2 = $(am__test_logs1:.log=.log)
-TEST_LOGS = $(am__test_logs2:.test.log=.log)
-TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
-TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
-	$(TEST_LOG_FLAGS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing aclocal-1.13
-AEC_DIR = 
-AMTAR = $${TAR-tar}
-AM_DEFAULT_VERBOSITY = 1
-AR = ar
-AUTOCONF = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoconf
-AUTOHEADER = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoheader
-AUTOMAKE = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing automake-1.13
-AWK = gawk
-CC = gcc
-CCDEPMODE = depmode=gcc3
-CCSDS_TEST = 
-CFLAGS = -g -O2
-CPP = gcc -E
-CPPFLAGS = 
-CYGPATH_W = echo
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DEVEL_RULES = dummy.am
-DLLTOOL = false
-DSYMUTIL = 
-DUMPBIN = 
-ECCODES_AGE = 0
-ECCODES_CURRENT = 1
-ECCODES_DEFINITION_PATH = ${datarootdir}/eccodes/definitions
-ECCODES_MAIN_VERSION = 0.10.0
-ECCODES_MAJOR_VERSION = 0
-ECCODES_MINOR_VERSION = 10
-ECCODES_PATCH_VERSION = 0
-ECCODES_REVISION = 0
-ECCODES_SAMPLES_PATH = ${datarootdir}/eccodes/samples
-ECCODES_VERSION_STR = 0.10.0
-ECHO_C = 
-ECHO_N = -n
-ECHO_T = 
-EGREP = /usr/bin/grep -E
-EMOS_LIB = 
-EXEEXT = 
-F77 = gfortran
-F90_CHECK = examples/F90
-F90_MODULE_FLAG = -I
-FC = gfortran
-FCFLAGS = -g -O2
-FFLAGS = -g -O2
-FGREP = /usr/bin/grep -F
-FORTRAN_MOD = fortran
-GREP = /usr/bin/grep
-GRIB_API_INC = /tmp/masn/git/grib_api/eccodes/src
-GRIB_API_LIB = /tmp/masn/git/grib_api/eccodes/src/grib_api.a
-GRIB_DEVEL = 0
-IFS_SAMPLES_DIR = ${datarootdir}/eccodes/ifs_samples
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-JASPER_DIR = system
-JPEG_TEST = jpeg.sh
-LD = /usr/x86_64-suse-linux/bin/ld -m elf_x86_64
-LDFLAGS = 
-LEX = flex
-LEXLIB = -lfl
-LEX_OUTPUT_ROOT = lex.yy
-LIBOBJS = 
-LIBS = -lm -ljasper 
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LIBTOOL_DEPS = config/ltmain.sh
-LIB_AEC = 
-LIB_JASPER = -ljasper
-LIB_OPENJPEG = 
-LIB_PNG = 
-LINUX_DISTRIBUTION_NAME = openSUSE 13.1 (x86_64)
-LINUX_DISTRIBUTION_VERSION = 
-LIPO = 
-LN_S = ln -s
-LTLIBOBJS = 
-MAKEINFO = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing makeinfo
-MANIFEST_TOOL = :
-MKDIR_P = /usr/bin/mkdir -p
-NETCDF_LDFLAGS = 
-NM = /usr/bin/nm -B
-NMEDIT = 
-NUMPY_INCLUDE = /usr/local/apps/python/2.7.8-01/lib/python2.7/site-packages/numpy/core/include
-OBJDUMP = objdump
-OBJEXT = o
-OPENJPEG_DIR = system
-OTOOL = 
-OTOOL64 = 
-PACKAGE = eccodes
-PACKAGE_BUGREPORT = Software.Support at ecmwf.int
-PACKAGE_NAME = eccodes
-PACKAGE_STRING = eccodes  
-PACKAGE_TARNAME = eccodes
-PACKAGE_URL = 
-PACKAGE_VERSION = 0.10.0
-PATH_SEPARATOR = :
-PERL = 
-PERLDIR = perl
-PERL_INSTALL_OPTIONS = LIB=NONE/perl
-PERL_MAKE_OPTIONS = 
-PYTHON = /usr/local/apps/python/2.7.8-01/bin/python
-PYTHON_CFLAGS = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7 -fno-strict-aliasing -O3 -fpic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
-PYTHON_CHECK = examples/python
-PYTHON_CONFIG = /usr/local/apps/python/2.7.8-01/bin/python2.7-config
-PYTHON_DATA_HANDLER = numpy
-PYTHON_EXEC_PREFIX = ${exec_prefix}
-PYTHON_INCLUDES = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7
-PYTHON_LDFLAGS = -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic
-PYTHON_LIBS = -lpthread -ldl -lutil -lm -lpython2.7
-PYTHON_PLATFORM = linux2
-PYTHON_PREFIX = ${prefix}
-PYTHON_VERSION = 2.7
-RANLIB = ranlib
-RM = rm -f
-RPM_CONFIGURE_ARGS =  '--enable-python' '--disable-shared' 'CC=gcc' 'F77=gfortran' 'FC=gfortran'
-RPM_HOST_CPU = x86_64
-RPM_HOST_OS = linux-gnu
-RPM_HOST_VENDOR = suse
-RPM_RELEASE = 1
-SED = /usr/bin/sed
-SET_MAKE = 
-SHELL = /bin/sh
-STRIP = strip
-VERSION = 0.10.0
-WARN_PEDANTIC = -pedantic -Wall
-WERROR = 
-YACC = bison -y
-YFLAGS = 
-abs_builddir = /tmp/masn/git/grib_api/eccodes/examples/F90
-abs_srcdir = /tmp/masn/git/grib_api/eccodes/examples/F90
-abs_top_builddir = /tmp/masn/git/grib_api/eccodes
-abs_top_srcdir = /tmp/masn/git/grib_api/eccodes
-ac_ct_AR = ar
-ac_ct_CC = gcc
-ac_ct_DUMPBIN = 
-ac_ct_F77 = 
-ac_ct_FC = 
-am__include = include
-am__leading_dot = .
-am__quote = 
-am__tar = $${TAR-tar} chof - "$$tardir"
-am__untar = $${TAR-tar} xf -
-bindir = ${exec_prefix}/bin
-build = x86_64-suse-linux-gnu
-build_alias = 
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = suse
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-host = x86_64-suse-linux-gnu
-host_alias = 
-host_cpu = x86_64
-host_os = linux-gnu
-host_vendor = suse
-htmldir = ${docdir}
-includedir = ${prefix}/include
-infodir = ${datarootdir}/info
-install_sh = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localedir = ${datarootdir}/locale
-localstatedir = ${prefix}/var
-mandir = ${datarootdir}/man
-mkdir_p = $(MKDIR_P)
-oldincludedir = /usr/include
-pdfdir = ${docdir}
-pkgpyexecdir = ${pyexecdir}/eccodes
-pkgpythondir = ${pythondir}/eccodes
-prefix = /usr/local
-program_transform_name = s,x,x,
-psdir = ${docdir}
-pyexecdir = ${exec_prefix}/lib/python2.7/site-packages
-pythondir = ${prefix}/lib/python2.7/site-packages
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-srcdir = .
-sysconfdir = ${prefix}/etc
-target_alias = 
-top_build_prefix = ../../
-top_builddir = ../..
-top_srcdir = ../..
-AM_CFLAGS = -pedantic -Wall  @FORCE_32_CFLAGS@
-TESTS = copy_message.sh grib_get_keys.sh get_data.sh get_pl.sh get_pv.sh grib_keys_iterator.sh \
-        grib_nearest.sh grib_precision.sh grib_multi_write.sh grib_multi.sh grib_print_data.sh grib_set_keys.sh \
-        grib_set_bitmap.sh set_missing.sh grib_set_pv.sh samples.sh count_messages.sh read_message.sh \
-        read_from_file.sh grib_index.sh get_set_uuid.sh bufr_attributes.sh bufr_clone.sh \
-        bufr_expanded.sh bufr_get_keys.sh bufr_read_header.sh bufr_read_synop.sh \
-        bufr_set_keys.sh bufr_keys_iterator.sh bufr_subset.sh get_product_kind.sh bufr_read_temp.sh bufr_read_scatterometer.sh
-
-f_grib_index_SOURCES = grib_index.f90
-f_copy_message_SOURCES = copy_message.f90
-f_grib_get_keys_SOURCES = grib_get_keys.f90
-f_get_data_SOURCES = get_data.f90
-f_get_pl_SOURCES = get_pl.f90
-f_get_pv_SOURCES = get_pv.f90
-f_grib_keys_iterator_SOURCES = grib_keys_iterator.f90
-f_grib_multi_write_SOURCES = grib_multi_write.f90
-f_grib_multi_SOURCES = grib_multi.f90
-f_grib_nearest_SOURCES = grib_nearest.f90
-f_grib_precision_SOURCES = grib_precision.f90
-f_grib_print_data_SOURCES = grib_print_data.f90
-f_grib_set_keys_SOURCES = grib_set_keys.f90
-f_grib_set_bitmap_SOURCES = grib_set_bitmap.f90
-f_set_missing_SOURCES = set_missing.f90
-f_grib_set_pv_SOURCES = grib_set_pv.f90
-f_samples_SOURCES = samples.f90
-f_count_messages_SOURCES = count_messages.f90
-f_read_message_SOURCES = read_message.f90
-f_read_from_file_SOURCES = read_from_file.f90
-f_new_from_file_SOURCES = new_from_file.f90
-f_copy_namespace_SOURCES = copy_namespace.f90
-f_get_set_uuid_SOURCES = get_set_uuid.f90
-f_set_gvc_SOURCES = set_gvc.f90
-f_grib_clone_SOURCES = grib_clone.f90
-f_bufr_attributes_SOURCES = bufr_attributes.f90
-f_bufr_clone_SOURCES = bufr_clone.f90
-f_bufr_expanded_SOURCES = bufr_expanded.f90
-f_bufr_get_keys_SOURCES = bufr_get_keys.f90
-f_bufr_keys_iterator_SOURCES = bufr_keys_iterator.f90
-f_bufr_read_header_SOURCES = bufr_read_header.f90
-f_bufr_read_scatterometer_SOURCES = bufr_read_scatterometer.f90
-f_bufr_read_synop_SOURCES = bufr_read_synop.f90
-f_bufr_read_temp_SOURCES = bufr_read_temp.f90
-f_bufr_set_keys_SOURCES = bufr_set_keys.f90
-f_bufr_subset_SOURCES = bufr_subset.f90
-f_get_product_kind_SOURCES = get_product_kind.f90
-INCLUDES = -I$(top_builddir)/src
-AM_FCFLAGS = $(F90_MODULE_FLAG)$(top_builddir)/fortran
-LDADD = $(top_builddir)/fortran/libeccodes_f90.la $(top_builddir)/src/libeccodes.la
-DEPENDENCIES = $(LDADD)
-EXTRA_DIST = $(TESTS) include.sh CMakeLists.txt include.ctest.sh.in
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .f90 .lo .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/F90/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu examples/F90/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstPROGRAMS:
-	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
-
-f_bufr_attributes$(EXEEXT): $(f_bufr_attributes_OBJECTS) $(f_bufr_attributes_DEPENDENCIES) $(EXTRA_f_bufr_attributes_DEPENDENCIES) 
-	@rm -f f_bufr_attributes$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_bufr_attributes_OBJECTS) $(f_bufr_attributes_LDADD) $(LIBS)
-
-f_bufr_clone$(EXEEXT): $(f_bufr_clone_OBJECTS) $(f_bufr_clone_DEPENDENCIES) $(EXTRA_f_bufr_clone_DEPENDENCIES) 
-	@rm -f f_bufr_clone$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_bufr_clone_OBJECTS) $(f_bufr_clone_LDADD) $(LIBS)
-
-f_bufr_expanded$(EXEEXT): $(f_bufr_expanded_OBJECTS) $(f_bufr_expanded_DEPENDENCIES) $(EXTRA_f_bufr_expanded_DEPENDENCIES) 
-	@rm -f f_bufr_expanded$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_bufr_expanded_OBJECTS) $(f_bufr_expanded_LDADD) $(LIBS)
-
-f_bufr_get_keys$(EXEEXT): $(f_bufr_get_keys_OBJECTS) $(f_bufr_get_keys_DEPENDENCIES) $(EXTRA_f_bufr_get_keys_DEPENDENCIES) 
-	@rm -f f_bufr_get_keys$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_bufr_get_keys_OBJECTS) $(f_bufr_get_keys_LDADD) $(LIBS)
-
-f_bufr_keys_iterator$(EXEEXT): $(f_bufr_keys_iterator_OBJECTS) $(f_bufr_keys_iterator_DEPENDENCIES) $(EXTRA_f_bufr_keys_iterator_DEPENDENCIES) 
-	@rm -f f_bufr_keys_iterator$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_bufr_keys_iterator_OBJECTS) $(f_bufr_keys_iterator_LDADD) $(LIBS)
-
-f_bufr_read_header$(EXEEXT): $(f_bufr_read_header_OBJECTS) $(f_bufr_read_header_DEPENDENCIES) $(EXTRA_f_bufr_read_header_DEPENDENCIES) 
-	@rm -f f_bufr_read_header$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_bufr_read_header_OBJECTS) $(f_bufr_read_header_LDADD) $(LIBS)
-
-f_bufr_read_scatterometer$(EXEEXT): $(f_bufr_read_scatterometer_OBJECTS) $(f_bufr_read_scatterometer_DEPENDENCIES) $(EXTRA_f_bufr_read_scatterometer_DEPENDENCIES) 
-	@rm -f f_bufr_read_scatterometer$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_bufr_read_scatterometer_OBJECTS) $(f_bufr_read_scatterometer_LDADD) $(LIBS)
-
-f_bufr_read_synop$(EXEEXT): $(f_bufr_read_synop_OBJECTS) $(f_bufr_read_synop_DEPENDENCIES) $(EXTRA_f_bufr_read_synop_DEPENDENCIES) 
-	@rm -f f_bufr_read_synop$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_bufr_read_synop_OBJECTS) $(f_bufr_read_synop_LDADD) $(LIBS)
-
-f_bufr_read_temp$(EXEEXT): $(f_bufr_read_temp_OBJECTS) $(f_bufr_read_temp_DEPENDENCIES) $(EXTRA_f_bufr_read_temp_DEPENDENCIES) 
-	@rm -f f_bufr_read_temp$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_bufr_read_temp_OBJECTS) $(f_bufr_read_temp_LDADD) $(LIBS)
-
-f_bufr_set_keys$(EXEEXT): $(f_bufr_set_keys_OBJECTS) $(f_bufr_set_keys_DEPENDENCIES) $(EXTRA_f_bufr_set_keys_DEPENDENCIES) 
-	@rm -f f_bufr_set_keys$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_bufr_set_keys_OBJECTS) $(f_bufr_set_keys_LDADD) $(LIBS)
-
-f_bufr_subset$(EXEEXT): $(f_bufr_subset_OBJECTS) $(f_bufr_subset_DEPENDENCIES) $(EXTRA_f_bufr_subset_DEPENDENCIES) 
-	@rm -f f_bufr_subset$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_bufr_subset_OBJECTS) $(f_bufr_subset_LDADD) $(LIBS)
-
-f_copy_message$(EXEEXT): $(f_copy_message_OBJECTS) $(f_copy_message_DEPENDENCIES) $(EXTRA_f_copy_message_DEPENDENCIES) 
-	@rm -f f_copy_message$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_copy_message_OBJECTS) $(f_copy_message_LDADD) $(LIBS)
-
-f_copy_namespace$(EXEEXT): $(f_copy_namespace_OBJECTS) $(f_copy_namespace_DEPENDENCIES) $(EXTRA_f_copy_namespace_DEPENDENCIES) 
-	@rm -f f_copy_namespace$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_copy_namespace_OBJECTS) $(f_copy_namespace_LDADD) $(LIBS)
-
-f_count_messages$(EXEEXT): $(f_count_messages_OBJECTS) $(f_count_messages_DEPENDENCIES) $(EXTRA_f_count_messages_DEPENDENCIES) 
-	@rm -f f_count_messages$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_count_messages_OBJECTS) $(f_count_messages_LDADD) $(LIBS)
-
-f_get_data$(EXEEXT): $(f_get_data_OBJECTS) $(f_get_data_DEPENDENCIES) $(EXTRA_f_get_data_DEPENDENCIES) 
-	@rm -f f_get_data$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_get_data_OBJECTS) $(f_get_data_LDADD) $(LIBS)
-
-f_get_pl$(EXEEXT): $(f_get_pl_OBJECTS) $(f_get_pl_DEPENDENCIES) $(EXTRA_f_get_pl_DEPENDENCIES) 
-	@rm -f f_get_pl$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_get_pl_OBJECTS) $(f_get_pl_LDADD) $(LIBS)
-
-f_get_product_kind$(EXEEXT): $(f_get_product_kind_OBJECTS) $(f_get_product_kind_DEPENDENCIES) $(EXTRA_f_get_product_kind_DEPENDENCIES) 
-	@rm -f f_get_product_kind$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_get_product_kind_OBJECTS) $(f_get_product_kind_LDADD) $(LIBS)
-
-f_get_pv$(EXEEXT): $(f_get_pv_OBJECTS) $(f_get_pv_DEPENDENCIES) $(EXTRA_f_get_pv_DEPENDENCIES) 
-	@rm -f f_get_pv$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_get_pv_OBJECTS) $(f_get_pv_LDADD) $(LIBS)
-
-f_get_set_uuid$(EXEEXT): $(f_get_set_uuid_OBJECTS) $(f_get_set_uuid_DEPENDENCIES) $(EXTRA_f_get_set_uuid_DEPENDENCIES) 
-	@rm -f f_get_set_uuid$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_get_set_uuid_OBJECTS) $(f_get_set_uuid_LDADD) $(LIBS)
-
-f_grib_clone$(EXEEXT): $(f_grib_clone_OBJECTS) $(f_grib_clone_DEPENDENCIES) $(EXTRA_f_grib_clone_DEPENDENCIES) 
-	@rm -f f_grib_clone$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_clone_OBJECTS) $(f_grib_clone_LDADD) $(LIBS)
-
-f_grib_get_keys$(EXEEXT): $(f_grib_get_keys_OBJECTS) $(f_grib_get_keys_DEPENDENCIES) $(EXTRA_f_grib_get_keys_DEPENDENCIES) 
-	@rm -f f_grib_get_keys$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_get_keys_OBJECTS) $(f_grib_get_keys_LDADD) $(LIBS)
-
-f_grib_index$(EXEEXT): $(f_grib_index_OBJECTS) $(f_grib_index_DEPENDENCIES) $(EXTRA_f_grib_index_DEPENDENCIES) 
-	@rm -f f_grib_index$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_index_OBJECTS) $(f_grib_index_LDADD) $(LIBS)
-
-f_grib_keys_iterator$(EXEEXT): $(f_grib_keys_iterator_OBJECTS) $(f_grib_keys_iterator_DEPENDENCIES) $(EXTRA_f_grib_keys_iterator_DEPENDENCIES) 
-	@rm -f f_grib_keys_iterator$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_keys_iterator_OBJECTS) $(f_grib_keys_iterator_LDADD) $(LIBS)
-
-f_grib_multi$(EXEEXT): $(f_grib_multi_OBJECTS) $(f_grib_multi_DEPENDENCIES) $(EXTRA_f_grib_multi_DEPENDENCIES) 
-	@rm -f f_grib_multi$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_multi_OBJECTS) $(f_grib_multi_LDADD) $(LIBS)
-
-f_grib_multi_write$(EXEEXT): $(f_grib_multi_write_OBJECTS) $(f_grib_multi_write_DEPENDENCIES) $(EXTRA_f_grib_multi_write_DEPENDENCIES) 
-	@rm -f f_grib_multi_write$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_multi_write_OBJECTS) $(f_grib_multi_write_LDADD) $(LIBS)
-
-f_grib_nearest$(EXEEXT): $(f_grib_nearest_OBJECTS) $(f_grib_nearest_DEPENDENCIES) $(EXTRA_f_grib_nearest_DEPENDENCIES) 
-	@rm -f f_grib_nearest$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_nearest_OBJECTS) $(f_grib_nearest_LDADD) $(LIBS)
-
-f_grib_precision$(EXEEXT): $(f_grib_precision_OBJECTS) $(f_grib_precision_DEPENDENCIES) $(EXTRA_f_grib_precision_DEPENDENCIES) 
-	@rm -f f_grib_precision$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_precision_OBJECTS) $(f_grib_precision_LDADD) $(LIBS)
-
-f_grib_print_data$(EXEEXT): $(f_grib_print_data_OBJECTS) $(f_grib_print_data_DEPENDENCIES) $(EXTRA_f_grib_print_data_DEPENDENCIES) 
-	@rm -f f_grib_print_data$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_print_data_OBJECTS) $(f_grib_print_data_LDADD) $(LIBS)
-
-f_grib_set_bitmap$(EXEEXT): $(f_grib_set_bitmap_OBJECTS) $(f_grib_set_bitmap_DEPENDENCIES) $(EXTRA_f_grib_set_bitmap_DEPENDENCIES) 
-	@rm -f f_grib_set_bitmap$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_set_bitmap_OBJECTS) $(f_grib_set_bitmap_LDADD) $(LIBS)
-
-f_grib_set_keys$(EXEEXT): $(f_grib_set_keys_OBJECTS) $(f_grib_set_keys_DEPENDENCIES) $(EXTRA_f_grib_set_keys_DEPENDENCIES) 
-	@rm -f f_grib_set_keys$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_set_keys_OBJECTS) $(f_grib_set_keys_LDADD) $(LIBS)
-
-f_grib_set_pv$(EXEEXT): $(f_grib_set_pv_OBJECTS) $(f_grib_set_pv_DEPENDENCIES) $(EXTRA_f_grib_set_pv_DEPENDENCIES) 
-	@rm -f f_grib_set_pv$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_set_pv_OBJECTS) $(f_grib_set_pv_LDADD) $(LIBS)
-
-f_new_from_file$(EXEEXT): $(f_new_from_file_OBJECTS) $(f_new_from_file_DEPENDENCIES) $(EXTRA_f_new_from_file_DEPENDENCIES) 
-	@rm -f f_new_from_file$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_new_from_file_OBJECTS) $(f_new_from_file_LDADD) $(LIBS)
-
-f_read_from_file$(EXEEXT): $(f_read_from_file_OBJECTS) $(f_read_from_file_DEPENDENCIES) $(EXTRA_f_read_from_file_DEPENDENCIES) 
-	@rm -f f_read_from_file$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_read_from_file_OBJECTS) $(f_read_from_file_LDADD) $(LIBS)
-
-f_read_message$(EXEEXT): $(f_read_message_OBJECTS) $(f_read_message_DEPENDENCIES) $(EXTRA_f_read_message_DEPENDENCIES) 
-	@rm -f f_read_message$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_read_message_OBJECTS) $(f_read_message_LDADD) $(LIBS)
-
-f_samples$(EXEEXT): $(f_samples_OBJECTS) $(f_samples_DEPENDENCIES) $(EXTRA_f_samples_DEPENDENCIES) 
-	@rm -f f_samples$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_samples_OBJECTS) $(f_samples_LDADD) $(LIBS)
-
-f_set_gvc$(EXEEXT): $(f_set_gvc_OBJECTS) $(f_set_gvc_DEPENDENCIES) $(EXTRA_f_set_gvc_DEPENDENCIES) 
-	@rm -f f_set_gvc$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_set_gvc_OBJECTS) $(f_set_gvc_LDADD) $(LIBS)
-
-f_set_missing$(EXEEXT): $(f_set_missing_OBJECTS) $(f_set_missing_DEPENDENCIES) $(EXTRA_f_set_missing_DEPENDENCIES) 
-	@rm -f f_set_missing$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_set_missing_OBJECTS) $(f_set_missing_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-.f90.o:
-	$(AM_V_FC)$(FCCOMPILE) -c -o $@ $<
-
-.f90.obj:
-	$(AM_V_FC)$(FCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.f90.lo:
-	$(AM_V_FC)$(LTFCCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-# Recover from deleted '.trs' file; this should ensure that
-# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
-# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
-# to avoid problems with "make -n".
-.log.trs:
-	rm -f $< $@
-	$(MAKE) $(AM_MAKEFLAGS) $<
-
-# Leading 'am--fnord' is there to ensure the list of targets does not
-# expand to empty, as could happen e.g. with make check TESTS=''.
-am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
-am--force-recheck:
-	@:
-
-$(TEST_SUITE_LOG): $(TEST_LOGS)
-	@$(am__set_TESTS_bases); \
-	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
-	redo_bases=`for i in $$bases; do \
-	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
-	            done`; \
-	if test -n "$$redo_bases"; then \
-	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
-	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
-	  if $(am__make_dryrun); then :; else \
-	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
-	  fi; \
-	fi; \
-	if test -n "$$am__remaking_logs"; then \
-	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
-	       "recursion detected" >&2; \
-	else \
-	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
-	fi; \
-	if $(am__make_dryrun); then :; else \
-	  st=0;  \
-	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
-	  for i in $$redo_bases; do \
-	    test -f $$i.trs && test -r $$i.trs \
-	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
-	    test -f $$i.log && test -r $$i.log \
-	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
-	  done; \
-	  test $$st -eq 0 || exit 1; \
-	fi
-	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
-	ws='[ 	]'; \
-	results=`for b in $$bases; do echo $$b.trs; done`; \
-	test -n "$$results" || results=/dev/null; \
-	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
-	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
-	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
-	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
-	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
-	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
-	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
-	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
-	  success=true; \
-	else \
-	  success=false; \
-	fi; \
-	br='==================='; br=$$br$$br$$br$$br; \
-	result_count () \
-	{ \
-	    if test x"$$1" = x"--maybe-color"; then \
-	      maybe_colorize=yes; \
-	    elif test x"$$1" = x"--no-color"; then \
-	      maybe_colorize=no; \
-	    else \
-	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
-	    fi; \
-	    shift; \
-	    desc=$$1 count=$$2; \
-	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
-	      color_start=$$3 color_end=$$std; \
-	    else \
-	      color_start= color_end=; \
-	    fi; \
-	    echo "$${color_start}# $$desc $$count$${color_end}"; \
-	}; \
-	create_testsuite_report () \
-	{ \
-	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
-	  result_count $$1 "PASS: " $$pass  "$$grn"; \
-	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
-	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
-	  result_count $$1 "FAIL: " $$fail  "$$red"; \
-	  result_count $$1 "XPASS:" $$xpass "$$red"; \
-	  result_count $$1 "ERROR:" $$error "$$mgn"; \
-	}; \
-	{								\
-	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
-	    $(am__rst_title);						\
-	  create_testsuite_report --no-color;				\
-	  echo;								\
-	  echo ".. contents:: :depth: 2";				\
-	  echo;								\
-	  for b in $$bases; do echo $$b; done				\
-	    | $(am__create_global_log);					\
-	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
-	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
-	if $$success; then						\
-	  col="$$grn";							\
-	 else								\
-	  col="$$red";							\
-	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
-	fi;								\
-	echo "$${col}$$br$${std}"; 					\
-	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
-	echo "$${col}$$br$${std}"; 					\
-	create_testsuite_report --maybe-color;				\
-	echo "$$col$$br$$std";						\
-	if $$success; then :; else					\
-	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
-	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
-	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
-	  fi;								\
-	  echo "$$col$$br$$std";					\
-	fi;								\
-	$$success || exit 1
-
-check-TESTS:
-	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
-	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
-	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-	@set +e; $(am__set_TESTS_bases); \
-	log_list=`for i in $$bases; do echo $$i.log; done`; \
-	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
-	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
-	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
-	exit $$?;
-recheck: all 
-	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-	@set +e; $(am__set_TESTS_bases); \
-	bases=`for i in $$bases; do echo $$i; done \
-	         | $(am__list_recheck_tests)` || exit 1; \
-	log_list=`for i in $$bases; do echo $$i.log; done`; \
-	log_list=`echo $$log_list`; \
-	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
-	        am__force_recheck=am--force-recheck \
-	        TEST_LOGS="$$log_list"; \
-	exit $$?
-copy_message.sh.log: copy_message.sh
-	@p='copy_message.sh'; \
-	b='copy_message.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_get_keys.sh.log: grib_get_keys.sh
-	@p='grib_get_keys.sh'; \
-	b='grib_get_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-get_data.sh.log: get_data.sh
-	@p='get_data.sh'; \
-	b='get_data.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-get_pl.sh.log: get_pl.sh
-	@p='get_pl.sh'; \
-	b='get_pl.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-get_pv.sh.log: get_pv.sh
-	@p='get_pv.sh'; \
-	b='get_pv.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_keys_iterator.sh.log: grib_keys_iterator.sh
-	@p='grib_keys_iterator.sh'; \
-	b='grib_keys_iterator.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_nearest.sh.log: grib_nearest.sh
-	@p='grib_nearest.sh'; \
-	b='grib_nearest.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_precision.sh.log: grib_precision.sh
-	@p='grib_precision.sh'; \
-	b='grib_precision.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_multi_write.sh.log: grib_multi_write.sh
-	@p='grib_multi_write.sh'; \
-	b='grib_multi_write.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_multi.sh.log: grib_multi.sh
-	@p='grib_multi.sh'; \
-	b='grib_multi.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_print_data.sh.log: grib_print_data.sh
-	@p='grib_print_data.sh'; \
-	b='grib_print_data.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_set_keys.sh.log: grib_set_keys.sh
-	@p='grib_set_keys.sh'; \
-	b='grib_set_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_set_bitmap.sh.log: grib_set_bitmap.sh
-	@p='grib_set_bitmap.sh'; \
-	b='grib_set_bitmap.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-set_missing.sh.log: set_missing.sh
-	@p='set_missing.sh'; \
-	b='set_missing.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_set_pv.sh.log: grib_set_pv.sh
-	@p='grib_set_pv.sh'; \
-	b='grib_set_pv.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-samples.sh.log: samples.sh
-	@p='samples.sh'; \
-	b='samples.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-count_messages.sh.log: count_messages.sh
-	@p='count_messages.sh'; \
-	b='count_messages.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-read_message.sh.log: read_message.sh
-	@p='read_message.sh'; \
-	b='read_message.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-read_from_file.sh.log: read_from_file.sh
-	@p='read_from_file.sh'; \
-	b='read_from_file.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_index.sh.log: grib_index.sh
-	@p='grib_index.sh'; \
-	b='grib_index.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-get_set_uuid.sh.log: get_set_uuid.sh
-	@p='get_set_uuid.sh'; \
-	b='get_set_uuid.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_attributes.sh.log: bufr_attributes.sh
-	@p='bufr_attributes.sh'; \
-	b='bufr_attributes.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_clone.sh.log: bufr_clone.sh
-	@p='bufr_clone.sh'; \
-	b='bufr_clone.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_expanded.sh.log: bufr_expanded.sh
-	@p='bufr_expanded.sh'; \
-	b='bufr_expanded.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_get_keys.sh.log: bufr_get_keys.sh
-	@p='bufr_get_keys.sh'; \
-	b='bufr_get_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_header.sh.log: bufr_read_header.sh
-	@p='bufr_read_header.sh'; \
-	b='bufr_read_header.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_synop.sh.log: bufr_read_synop.sh
-	@p='bufr_read_synop.sh'; \
-	b='bufr_read_synop.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_set_keys.sh.log: bufr_set_keys.sh
-	@p='bufr_set_keys.sh'; \
-	b='bufr_set_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_keys_iterator.sh.log: bufr_keys_iterator.sh
-	@p='bufr_keys_iterator.sh'; \
-	b='bufr_keys_iterator.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_subset.sh.log: bufr_subset.sh
-	@p='bufr_subset.sh'; \
-	b='bufr_subset.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-get_product_kind.sh.log: get_product_kind.sh
-	@p='get_product_kind.sh'; \
-	b='get_product_kind.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_temp.sh.log: bufr_read_temp.sh
-	@p='bufr_read_temp.sh'; \
-	b='bufr_read_temp.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_scatterometer.sh.log: bufr_read_scatterometer.sh
-	@p='bufr_read_scatterometer.sh'; \
-	b='bufr_read_scatterometer.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-.test.log:
-	@p='$<'; \
-	$(am__set_b); \
-	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-#.test$(EXEEXT).log:
-#	@p='$<'; \
-#	$(am__set_b); \
-#	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
-#	--log-file $$b.log --trs-file $$b.trs \
-#	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
-#	"$$tst" $(AM_TESTS_FD_REDIRECT)
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
-	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
-	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: check-am install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
-	ctags ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	recheck tags tags-am uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/examples/F90/Makefile.am b/examples/F90/Makefile.am
index e2c765f..8a70b6f 100644
--- a/examples/F90/Makefile.am
+++ b/examples/F90/Makefile.am
@@ -4,55 +4,88 @@ AM_CFLAGS =  @WARN_PEDANTIC@ @WERROR@ @FORCE_32_CFLAGS@
 TESTS = copy_message.sh grib_get_keys.sh get_data.sh get_pl.sh get_pv.sh grib_keys_iterator.sh \
         grib_nearest.sh grib_precision.sh grib_multi_write.sh grib_multi.sh grib_print_data.sh grib_set_keys.sh \
         grib_set_bitmap.sh set_missing.sh grib_set_pv.sh samples.sh count_messages.sh read_message.sh \
-        read_from_file.sh grib_index.sh get_set_uuid.sh bufr_attributes.sh bufr_clone.sh \
+        read_from_file.sh grib_index.sh get_set_uuid.sh bufr_attributes.sh grib_clone.sh bufr_clone.sh \
         bufr_expanded.sh bufr_get_keys.sh bufr_read_header.sh bufr_read_synop.sh \
-        bufr_set_keys.sh bufr_keys_iterator.sh bufr_subset.sh get_product_kind.sh bufr_read_temp.sh bufr_read_scatterometer.sh
+        bufr_set_keys.sh bufr_keys_iterator.sh bufr_subset.sh get_product_kind.sh bufr_read_temp.sh \
+				bufr_read_tropical_cyclone.sh bufr_read_scatterometer.sh
 
-noinst_PROGRAMS  = f_grib_index f_copy_message f_grib_get_keys f_get_data f_get_pl f_get_pv f_grib_keys_iterator \
-                   f_grib_multi_write f_grib_multi f_grib_nearest f_grib_precision f_grib_print_data f_grib_set_keys \
-                   f_grib_set_bitmap f_set_missing f_grib_set_pv f_samples f_count_messages f_read_message \
-                   f_read_from_file f_new_from_file f_copy_namespace f_get_set_uuid f_set_gvc \
-                   f_grib_clone f_bufr_clone f_bufr_expanded f_bufr_get_keys f_bufr_read_header \
-                   f_bufr_read_synop f_bufr_set_keys f_bufr_keys_iterator f_bufr_subset f_bufr_attributes \
-                   f_get_product_kind f_bufr_read_temp f_bufr_read_scatterometer
+noinst_PROGRAMS  = eccodes_f_grib_index \
+                   eccodes_f_copy_message \
+                   eccodes_f_grib_get_keys \
+                   eccodes_f_get_data \
+                   eccodes_f_get_pl \
+                   eccodes_f_get_pv \
+                   eccodes_f_grib_keys_iterator \
+                   eccodes_f_grib_multi_write \
+                   eccodes_f_grib_multi \
+                   eccodes_f_grib_nearest \
+                   eccodes_f_grib_precision \
+                   eccodes_f_grib_print_data \
+                   eccodes_f_grib_set_keys \
+                   eccodes_f_grib_set_bitmap \
+                   eccodes_f_set_missing \
+                   eccodes_f_grib_set_pv \
+                   eccodes_f_samples \
+                   eccodes_f_count_messages \
+                   eccodes_f_read_message \
+                   eccodes_f_read_from_file \
+                   eccodes_f_new_from_file \
+                   eccodes_f_copy_namespace \
+                   eccodes_f_get_set_uuid \
+                   eccodes_f_set_gvc \
+                   eccodes_f_grib_clone \
+                   eccodes_f_bufr_clone \
+                   eccodes_f_bufr_expanded \
+                   eccodes_f_bufr_get_keys \
+                   eccodes_f_bufr_read_header \
+                   eccodes_f_bufr_read_synop \
+                   eccodes_f_bufr_set_keys \
+                   eccodes_f_bufr_keys_iterator \
+                   eccodes_f_bufr_subset \
+                   eccodes_f_bufr_attributes \
+                   eccodes_f_get_product_kind \
+                   eccodes_f_bufr_read_temp \
+                   eccodes_f_bufr_read_tropical_cyclone \
+                   eccodes_f_bufr_read_scatterometer
 
-f_grib_index_SOURCES=grib_index.f90
-f_copy_message_SOURCES=copy_message.f90
-f_grib_get_keys_SOURCES=grib_get_keys.f90
-f_get_data_SOURCES=get_data.f90
-f_get_pl_SOURCES=get_pl.f90
-f_get_pv_SOURCES=get_pv.f90
-f_grib_keys_iterator_SOURCES=grib_keys_iterator.f90
-f_grib_multi_write_SOURCES=grib_multi_write.f90
-f_grib_multi_SOURCES=grib_multi.f90
-f_grib_nearest_SOURCES=grib_nearest.f90
-f_grib_precision_SOURCES=grib_precision.f90
-f_grib_print_data_SOURCES=grib_print_data.f90
-f_grib_set_keys_SOURCES=grib_set_keys.f90
-f_grib_set_bitmap_SOURCES=grib_set_bitmap.f90
-f_set_missing_SOURCES=set_missing.f90
-f_grib_set_pv_SOURCES=grib_set_pv.f90
-f_samples_SOURCES=samples.f90
-f_count_messages_SOURCES=count_messages.f90
-f_read_message_SOURCES=read_message.f90
-f_read_from_file_SOURCES=read_from_file.f90
-f_new_from_file_SOURCES=new_from_file.f90
-f_copy_namespace_SOURCES=copy_namespace.f90
-f_get_set_uuid_SOURCES=get_set_uuid.f90
-f_set_gvc_SOURCES=set_gvc.f90
-f_grib_clone_SOURCES=grib_clone.f90
-f_bufr_attributes_SOURCES=bufr_attributes.f90
-f_bufr_clone_SOURCES=bufr_clone.f90
-f_bufr_expanded_SOURCES=bufr_expanded.f90
-f_bufr_get_keys_SOURCES=bufr_get_keys.f90
-f_bufr_keys_iterator_SOURCES=bufr_keys_iterator.f90
-f_bufr_read_header_SOURCES=bufr_read_header.f90
-f_bufr_read_scatterometer_SOURCES=bufr_read_scatterometer.f90
-f_bufr_read_synop_SOURCES=bufr_read_synop.f90
-f_bufr_read_temp_SOURCES=bufr_read_temp.f90
-f_bufr_set_keys_SOURCES=bufr_set_keys.f90
-f_bufr_subset_SOURCES=bufr_subset.f90
-f_get_product_kind_SOURCES=get_product_kind.f90
+eccodes_f_grib_index_SOURCES=grib_index.f90
+eccodes_f_copy_message_SOURCES=copy_message.f90
+eccodes_f_grib_get_keys_SOURCES=grib_get_keys.f90
+eccodes_f_get_data_SOURCES=get_data.f90
+eccodes_f_get_pl_SOURCES=get_pl.f90
+eccodes_f_get_pv_SOURCES=get_pv.f90
+eccodes_f_grib_keys_iterator_SOURCES=grib_keys_iterator.f90
+eccodes_f_grib_multi_write_SOURCES=grib_multi_write.f90
+eccodes_f_grib_multi_SOURCES=grib_multi.f90
+eccodes_f_grib_nearest_SOURCES=grib_nearest.f90
+eccodes_f_grib_precision_SOURCES=grib_precision.f90
+eccodes_f_grib_print_data_SOURCES=grib_print_data.f90
+eccodes_f_grib_set_keys_SOURCES=grib_set_keys.f90
+eccodes_f_grib_set_bitmap_SOURCES=grib_set_bitmap.f90
+eccodes_f_set_missing_SOURCES=set_missing.f90
+eccodes_f_grib_set_pv_SOURCES=grib_set_pv.f90
+eccodes_f_samples_SOURCES=samples.f90
+eccodes_f_count_messages_SOURCES=count_messages.f90
+eccodes_f_read_message_SOURCES=read_message.f90
+eccodes_f_read_from_file_SOURCES=read_from_file.f90
+eccodes_f_new_from_file_SOURCES=new_from_file.f90
+eccodes_f_copy_namespace_SOURCES=copy_namespace.f90
+eccodes_f_get_set_uuid_SOURCES=get_set_uuid.f90
+eccodes_f_set_gvc_SOURCES=set_gvc.f90
+eccodes_f_grib_clone_SOURCES=grib_clone.f90
+eccodes_f_bufr_attributes_SOURCES=bufr_attributes.f90
+eccodes_f_bufr_clone_SOURCES=bufr_clone.f90
+eccodes_f_bufr_expanded_SOURCES=bufr_expanded.f90
+eccodes_f_bufr_get_keys_SOURCES=bufr_get_keys.f90
+eccodes_f_bufr_keys_iterator_SOURCES=bufr_keys_iterator.f90
+eccodes_f_bufr_read_header_SOURCES=bufr_read_header.f90
+eccodes_f_bufr_read_scatterometer_SOURCES=bufr_read_scatterometer.f90
+eccodes_f_bufr_read_synop_SOURCES=bufr_read_synop.f90
+eccodes_f_bufr_read_temp_SOURCES=bufr_read_temp.f90
+eccodes_f_bufr_set_keys_SOURCES=bufr_set_keys.f90
+eccodes_f_bufr_subset_SOURCES=bufr_subset.f90
+eccodes_f_get_product_kind_SOURCES=get_product_kind.f90
+eccodes_f_bufr_read_tropical_cyclone_SOURCES=bufr_read_tropical_cyclone.f90
 
 INCLUDES =  -I$(top_builddir)/src
 
diff --git a/examples/F90/Makefile.in b/examples/F90/Makefile.in
index 8692f6b..c8bdd0e 100644
--- a/examples/F90/Makefile.in
+++ b/examples/F90/Makefile.in
@@ -78,24 +78,37 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-noinst_PROGRAMS = f_grib_index$(EXEEXT) f_copy_message$(EXEEXT) \
-	f_grib_get_keys$(EXEEXT) f_get_data$(EXEEXT) f_get_pl$(EXEEXT) \
-	f_get_pv$(EXEEXT) f_grib_keys_iterator$(EXEEXT) \
-	f_grib_multi_write$(EXEEXT) f_grib_multi$(EXEEXT) \
-	f_grib_nearest$(EXEEXT) f_grib_precision$(EXEEXT) \
-	f_grib_print_data$(EXEEXT) f_grib_set_keys$(EXEEXT) \
-	f_grib_set_bitmap$(EXEEXT) f_set_missing$(EXEEXT) \
-	f_grib_set_pv$(EXEEXT) f_samples$(EXEEXT) \
-	f_count_messages$(EXEEXT) f_read_message$(EXEEXT) \
-	f_read_from_file$(EXEEXT) f_new_from_file$(EXEEXT) \
-	f_copy_namespace$(EXEEXT) f_get_set_uuid$(EXEEXT) \
-	f_set_gvc$(EXEEXT) f_grib_clone$(EXEEXT) f_bufr_clone$(EXEEXT) \
-	f_bufr_expanded$(EXEEXT) f_bufr_get_keys$(EXEEXT) \
-	f_bufr_read_header$(EXEEXT) f_bufr_read_synop$(EXEEXT) \
-	f_bufr_set_keys$(EXEEXT) f_bufr_keys_iterator$(EXEEXT) \
-	f_bufr_subset$(EXEEXT) f_bufr_attributes$(EXEEXT) \
-	f_get_product_kind$(EXEEXT) f_bufr_read_temp$(EXEEXT) \
-	f_bufr_read_scatterometer$(EXEEXT)
+noinst_PROGRAMS = eccodes_f_grib_index$(EXEEXT) \
+	eccodes_f_copy_message$(EXEEXT) \
+	eccodes_f_grib_get_keys$(EXEEXT) eccodes_f_get_data$(EXEEXT) \
+	eccodes_f_get_pl$(EXEEXT) eccodes_f_get_pv$(EXEEXT) \
+	eccodes_f_grib_keys_iterator$(EXEEXT) \
+	eccodes_f_grib_multi_write$(EXEEXT) \
+	eccodes_f_grib_multi$(EXEEXT) eccodes_f_grib_nearest$(EXEEXT) \
+	eccodes_f_grib_precision$(EXEEXT) \
+	eccodes_f_grib_print_data$(EXEEXT) \
+	eccodes_f_grib_set_keys$(EXEEXT) \
+	eccodes_f_grib_set_bitmap$(EXEEXT) \
+	eccodes_f_set_missing$(EXEEXT) eccodes_f_grib_set_pv$(EXEEXT) \
+	eccodes_f_samples$(EXEEXT) eccodes_f_count_messages$(EXEEXT) \
+	eccodes_f_read_message$(EXEEXT) \
+	eccodes_f_read_from_file$(EXEEXT) \
+	eccodes_f_new_from_file$(EXEEXT) \
+	eccodes_f_copy_namespace$(EXEEXT) \
+	eccodes_f_get_set_uuid$(EXEEXT) eccodes_f_set_gvc$(EXEEXT) \
+	eccodes_f_grib_clone$(EXEEXT) eccodes_f_bufr_clone$(EXEEXT) \
+	eccodes_f_bufr_expanded$(EXEEXT) \
+	eccodes_f_bufr_get_keys$(EXEEXT) \
+	eccodes_f_bufr_read_header$(EXEEXT) \
+	eccodes_f_bufr_read_synop$(EXEEXT) \
+	eccodes_f_bufr_set_keys$(EXEEXT) \
+	eccodes_f_bufr_keys_iterator$(EXEEXT) \
+	eccodes_f_bufr_subset$(EXEEXT) \
+	eccodes_f_bufr_attributes$(EXEEXT) \
+	eccodes_f_get_product_kind$(EXEEXT) \
+	eccodes_f_bufr_read_temp$(EXEEXT) \
+	eccodes_f_bufr_read_tropical_cyclone$(EXEEXT) \
+	eccodes_f_bufr_read_scatterometer$(EXEEXT)
 subdir = examples/F90
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(top_srcdir)/config/test-driver
@@ -112,223 +125,262 @@ CONFIG_HEADER = $(top_builddir)/src/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 PROGRAMS = $(noinst_PROGRAMS)
-am_f_bufr_attributes_OBJECTS = bufr_attributes.$(OBJEXT)
-f_bufr_attributes_OBJECTS = $(am_f_bufr_attributes_OBJECTS)
-f_bufr_attributes_LDADD = $(LDADD)
-f_bufr_attributes_DEPENDENCIES =  \
+am_eccodes_f_bufr_attributes_OBJECTS = bufr_attributes.$(OBJEXT)
+eccodes_f_bufr_attributes_OBJECTS =  \
+	$(am_eccodes_f_bufr_attributes_OBJECTS)
+eccodes_f_bufr_attributes_LDADD = $(LDADD)
+eccodes_f_bufr_attributes_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
 AM_V_lt = $(am__v_lt_ at AM_V@)
 am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 am__v_lt_1 = 
-am_f_bufr_clone_OBJECTS = bufr_clone.$(OBJEXT)
-f_bufr_clone_OBJECTS = $(am_f_bufr_clone_OBJECTS)
-f_bufr_clone_LDADD = $(LDADD)
-f_bufr_clone_DEPENDENCIES = $(top_builddir)/fortran/libeccodes_f90.la \
+am_eccodes_f_bufr_clone_OBJECTS = bufr_clone.$(OBJEXT)
+eccodes_f_bufr_clone_OBJECTS = $(am_eccodes_f_bufr_clone_OBJECTS)
+eccodes_f_bufr_clone_LDADD = $(LDADD)
+eccodes_f_bufr_clone_DEPENDENCIES =  \
+	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_bufr_expanded_OBJECTS = bufr_expanded.$(OBJEXT)
-f_bufr_expanded_OBJECTS = $(am_f_bufr_expanded_OBJECTS)
-f_bufr_expanded_LDADD = $(LDADD)
-f_bufr_expanded_DEPENDENCIES =  \
+am_eccodes_f_bufr_expanded_OBJECTS = bufr_expanded.$(OBJEXT)
+eccodes_f_bufr_expanded_OBJECTS =  \
+	$(am_eccodes_f_bufr_expanded_OBJECTS)
+eccodes_f_bufr_expanded_LDADD = $(LDADD)
+eccodes_f_bufr_expanded_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_bufr_get_keys_OBJECTS = bufr_get_keys.$(OBJEXT)
-f_bufr_get_keys_OBJECTS = $(am_f_bufr_get_keys_OBJECTS)
-f_bufr_get_keys_LDADD = $(LDADD)
-f_bufr_get_keys_DEPENDENCIES =  \
+am_eccodes_f_bufr_get_keys_OBJECTS = bufr_get_keys.$(OBJEXT)
+eccodes_f_bufr_get_keys_OBJECTS =  \
+	$(am_eccodes_f_bufr_get_keys_OBJECTS)
+eccodes_f_bufr_get_keys_LDADD = $(LDADD)
+eccodes_f_bufr_get_keys_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_bufr_keys_iterator_OBJECTS = bufr_keys_iterator.$(OBJEXT)
-f_bufr_keys_iterator_OBJECTS = $(am_f_bufr_keys_iterator_OBJECTS)
-f_bufr_keys_iterator_LDADD = $(LDADD)
-f_bufr_keys_iterator_DEPENDENCIES =  \
+am_eccodes_f_bufr_keys_iterator_OBJECTS =  \
+	bufr_keys_iterator.$(OBJEXT)
+eccodes_f_bufr_keys_iterator_OBJECTS =  \
+	$(am_eccodes_f_bufr_keys_iterator_OBJECTS)
+eccodes_f_bufr_keys_iterator_LDADD = $(LDADD)
+eccodes_f_bufr_keys_iterator_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_bufr_read_header_OBJECTS = bufr_read_header.$(OBJEXT)
-f_bufr_read_header_OBJECTS = $(am_f_bufr_read_header_OBJECTS)
-f_bufr_read_header_LDADD = $(LDADD)
-f_bufr_read_header_DEPENDENCIES =  \
+am_eccodes_f_bufr_read_header_OBJECTS = bufr_read_header.$(OBJEXT)
+eccodes_f_bufr_read_header_OBJECTS =  \
+	$(am_eccodes_f_bufr_read_header_OBJECTS)
+eccodes_f_bufr_read_header_LDADD = $(LDADD)
+eccodes_f_bufr_read_header_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_bufr_read_scatterometer_OBJECTS =  \
+am_eccodes_f_bufr_read_scatterometer_OBJECTS =  \
 	bufr_read_scatterometer.$(OBJEXT)
-f_bufr_read_scatterometer_OBJECTS =  \
-	$(am_f_bufr_read_scatterometer_OBJECTS)
-f_bufr_read_scatterometer_LDADD = $(LDADD)
-f_bufr_read_scatterometer_DEPENDENCIES =  \
+eccodes_f_bufr_read_scatterometer_OBJECTS =  \
+	$(am_eccodes_f_bufr_read_scatterometer_OBJECTS)
+eccodes_f_bufr_read_scatterometer_LDADD = $(LDADD)
+eccodes_f_bufr_read_scatterometer_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_bufr_read_synop_OBJECTS = bufr_read_synop.$(OBJEXT)
-f_bufr_read_synop_OBJECTS = $(am_f_bufr_read_synop_OBJECTS)
-f_bufr_read_synop_LDADD = $(LDADD)
-f_bufr_read_synop_DEPENDENCIES =  \
+am_eccodes_f_bufr_read_synop_OBJECTS = bufr_read_synop.$(OBJEXT)
+eccodes_f_bufr_read_synop_OBJECTS =  \
+	$(am_eccodes_f_bufr_read_synop_OBJECTS)
+eccodes_f_bufr_read_synop_LDADD = $(LDADD)
+eccodes_f_bufr_read_synop_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_bufr_read_temp_OBJECTS = bufr_read_temp.$(OBJEXT)
-f_bufr_read_temp_OBJECTS = $(am_f_bufr_read_temp_OBJECTS)
-f_bufr_read_temp_LDADD = $(LDADD)
-f_bufr_read_temp_DEPENDENCIES =  \
+am_eccodes_f_bufr_read_temp_OBJECTS = bufr_read_temp.$(OBJEXT)
+eccodes_f_bufr_read_temp_OBJECTS =  \
+	$(am_eccodes_f_bufr_read_temp_OBJECTS)
+eccodes_f_bufr_read_temp_LDADD = $(LDADD)
+eccodes_f_bufr_read_temp_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_bufr_set_keys_OBJECTS = bufr_set_keys.$(OBJEXT)
-f_bufr_set_keys_OBJECTS = $(am_f_bufr_set_keys_OBJECTS)
-f_bufr_set_keys_LDADD = $(LDADD)
-f_bufr_set_keys_DEPENDENCIES =  \
+am_eccodes_f_bufr_read_tropical_cyclone_OBJECTS =  \
+	bufr_read_tropical_cyclone.$(OBJEXT)
+eccodes_f_bufr_read_tropical_cyclone_OBJECTS =  \
+	$(am_eccodes_f_bufr_read_tropical_cyclone_OBJECTS)
+eccodes_f_bufr_read_tropical_cyclone_LDADD = $(LDADD)
+eccodes_f_bufr_read_tropical_cyclone_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_bufr_subset_OBJECTS = bufr_subset.$(OBJEXT)
-f_bufr_subset_OBJECTS = $(am_f_bufr_subset_OBJECTS)
-f_bufr_subset_LDADD = $(LDADD)
-f_bufr_subset_DEPENDENCIES =  \
+am_eccodes_f_bufr_set_keys_OBJECTS = bufr_set_keys.$(OBJEXT)
+eccodes_f_bufr_set_keys_OBJECTS =  \
+	$(am_eccodes_f_bufr_set_keys_OBJECTS)
+eccodes_f_bufr_set_keys_LDADD = $(LDADD)
+eccodes_f_bufr_set_keys_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_copy_message_OBJECTS = copy_message.$(OBJEXT)
-f_copy_message_OBJECTS = $(am_f_copy_message_OBJECTS)
-f_copy_message_LDADD = $(LDADD)
-f_copy_message_DEPENDENCIES =  \
+am_eccodes_f_bufr_subset_OBJECTS = bufr_subset.$(OBJEXT)
+eccodes_f_bufr_subset_OBJECTS = $(am_eccodes_f_bufr_subset_OBJECTS)
+eccodes_f_bufr_subset_LDADD = $(LDADD)
+eccodes_f_bufr_subset_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_copy_namespace_OBJECTS = copy_namespace.$(OBJEXT)
-f_copy_namespace_OBJECTS = $(am_f_copy_namespace_OBJECTS)
-f_copy_namespace_LDADD = $(LDADD)
-f_copy_namespace_DEPENDENCIES =  \
+am_eccodes_f_copy_message_OBJECTS = copy_message.$(OBJEXT)
+eccodes_f_copy_message_OBJECTS = $(am_eccodes_f_copy_message_OBJECTS)
+eccodes_f_copy_message_LDADD = $(LDADD)
+eccodes_f_copy_message_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_count_messages_OBJECTS = count_messages.$(OBJEXT)
-f_count_messages_OBJECTS = $(am_f_count_messages_OBJECTS)
-f_count_messages_LDADD = $(LDADD)
-f_count_messages_DEPENDENCIES =  \
+am_eccodes_f_copy_namespace_OBJECTS = copy_namespace.$(OBJEXT)
+eccodes_f_copy_namespace_OBJECTS =  \
+	$(am_eccodes_f_copy_namespace_OBJECTS)
+eccodes_f_copy_namespace_LDADD = $(LDADD)
+eccodes_f_copy_namespace_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_get_data_OBJECTS = get_data.$(OBJEXT)
-f_get_data_OBJECTS = $(am_f_get_data_OBJECTS)
-f_get_data_LDADD = $(LDADD)
-f_get_data_DEPENDENCIES = $(top_builddir)/fortran/libeccodes_f90.la \
+am_eccodes_f_count_messages_OBJECTS = count_messages.$(OBJEXT)
+eccodes_f_count_messages_OBJECTS =  \
+	$(am_eccodes_f_count_messages_OBJECTS)
+eccodes_f_count_messages_LDADD = $(LDADD)
+eccodes_f_count_messages_DEPENDENCIES =  \
+	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_get_pl_OBJECTS = get_pl.$(OBJEXT)
-f_get_pl_OBJECTS = $(am_f_get_pl_OBJECTS)
-f_get_pl_LDADD = $(LDADD)
-f_get_pl_DEPENDENCIES = $(top_builddir)/fortran/libeccodes_f90.la \
+am_eccodes_f_get_data_OBJECTS = get_data.$(OBJEXT)
+eccodes_f_get_data_OBJECTS = $(am_eccodes_f_get_data_OBJECTS)
+eccodes_f_get_data_LDADD = $(LDADD)
+eccodes_f_get_data_DEPENDENCIES =  \
+	$(top_builddir)/fortran/libeccodes_f90.la \
+	$(top_builddir)/src/libeccodes.la
+am_eccodes_f_get_pl_OBJECTS = get_pl.$(OBJEXT)
+eccodes_f_get_pl_OBJECTS = $(am_eccodes_f_get_pl_OBJECTS)
+eccodes_f_get_pl_LDADD = $(LDADD)
+eccodes_f_get_pl_DEPENDENCIES =  \
+	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_get_product_kind_OBJECTS = get_product_kind.$(OBJEXT)
-f_get_product_kind_OBJECTS = $(am_f_get_product_kind_OBJECTS)
-f_get_product_kind_LDADD = $(LDADD)
-f_get_product_kind_DEPENDENCIES =  \
+am_eccodes_f_get_product_kind_OBJECTS = get_product_kind.$(OBJEXT)
+eccodes_f_get_product_kind_OBJECTS =  \
+	$(am_eccodes_f_get_product_kind_OBJECTS)
+eccodes_f_get_product_kind_LDADD = $(LDADD)
+eccodes_f_get_product_kind_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_get_pv_OBJECTS = get_pv.$(OBJEXT)
-f_get_pv_OBJECTS = $(am_f_get_pv_OBJECTS)
-f_get_pv_LDADD = $(LDADD)
-f_get_pv_DEPENDENCIES = $(top_builddir)/fortran/libeccodes_f90.la \
+am_eccodes_f_get_pv_OBJECTS = get_pv.$(OBJEXT)
+eccodes_f_get_pv_OBJECTS = $(am_eccodes_f_get_pv_OBJECTS)
+eccodes_f_get_pv_LDADD = $(LDADD)
+eccodes_f_get_pv_DEPENDENCIES =  \
+	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_get_set_uuid_OBJECTS = get_set_uuid.$(OBJEXT)
-f_get_set_uuid_OBJECTS = $(am_f_get_set_uuid_OBJECTS)
-f_get_set_uuid_LDADD = $(LDADD)
-f_get_set_uuid_DEPENDENCIES =  \
+am_eccodes_f_get_set_uuid_OBJECTS = get_set_uuid.$(OBJEXT)
+eccodes_f_get_set_uuid_OBJECTS = $(am_eccodes_f_get_set_uuid_OBJECTS)
+eccodes_f_get_set_uuid_LDADD = $(LDADD)
+eccodes_f_get_set_uuid_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_grib_clone_OBJECTS = grib_clone.$(OBJEXT)
-f_grib_clone_OBJECTS = $(am_f_grib_clone_OBJECTS)
-f_grib_clone_LDADD = $(LDADD)
-f_grib_clone_DEPENDENCIES = $(top_builddir)/fortran/libeccodes_f90.la \
+am_eccodes_f_grib_clone_OBJECTS = grib_clone.$(OBJEXT)
+eccodes_f_grib_clone_OBJECTS = $(am_eccodes_f_grib_clone_OBJECTS)
+eccodes_f_grib_clone_LDADD = $(LDADD)
+eccodes_f_grib_clone_DEPENDENCIES =  \
+	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_grib_get_keys_OBJECTS = grib_get_keys.$(OBJEXT)
-f_grib_get_keys_OBJECTS = $(am_f_grib_get_keys_OBJECTS)
-f_grib_get_keys_LDADD = $(LDADD)
-f_grib_get_keys_DEPENDENCIES =  \
+am_eccodes_f_grib_get_keys_OBJECTS = grib_get_keys.$(OBJEXT)
+eccodes_f_grib_get_keys_OBJECTS =  \
+	$(am_eccodes_f_grib_get_keys_OBJECTS)
+eccodes_f_grib_get_keys_LDADD = $(LDADD)
+eccodes_f_grib_get_keys_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_grib_index_OBJECTS = grib_index.$(OBJEXT)
-f_grib_index_OBJECTS = $(am_f_grib_index_OBJECTS)
-f_grib_index_LDADD = $(LDADD)
-f_grib_index_DEPENDENCIES = $(top_builddir)/fortran/libeccodes_f90.la \
+am_eccodes_f_grib_index_OBJECTS = grib_index.$(OBJEXT)
+eccodes_f_grib_index_OBJECTS = $(am_eccodes_f_grib_index_OBJECTS)
+eccodes_f_grib_index_LDADD = $(LDADD)
+eccodes_f_grib_index_DEPENDENCIES =  \
+	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_grib_keys_iterator_OBJECTS = grib_keys_iterator.$(OBJEXT)
-f_grib_keys_iterator_OBJECTS = $(am_f_grib_keys_iterator_OBJECTS)
-f_grib_keys_iterator_LDADD = $(LDADD)
-f_grib_keys_iterator_DEPENDENCIES =  \
+am_eccodes_f_grib_keys_iterator_OBJECTS =  \
+	grib_keys_iterator.$(OBJEXT)
+eccodes_f_grib_keys_iterator_OBJECTS =  \
+	$(am_eccodes_f_grib_keys_iterator_OBJECTS)
+eccodes_f_grib_keys_iterator_LDADD = $(LDADD)
+eccodes_f_grib_keys_iterator_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_grib_multi_OBJECTS = grib_multi.$(OBJEXT)
-f_grib_multi_OBJECTS = $(am_f_grib_multi_OBJECTS)
-f_grib_multi_LDADD = $(LDADD)
-f_grib_multi_DEPENDENCIES = $(top_builddir)/fortran/libeccodes_f90.la \
+am_eccodes_f_grib_multi_OBJECTS = grib_multi.$(OBJEXT)
+eccodes_f_grib_multi_OBJECTS = $(am_eccodes_f_grib_multi_OBJECTS)
+eccodes_f_grib_multi_LDADD = $(LDADD)
+eccodes_f_grib_multi_DEPENDENCIES =  \
+	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_grib_multi_write_OBJECTS = grib_multi_write.$(OBJEXT)
-f_grib_multi_write_OBJECTS = $(am_f_grib_multi_write_OBJECTS)
-f_grib_multi_write_LDADD = $(LDADD)
-f_grib_multi_write_DEPENDENCIES =  \
+am_eccodes_f_grib_multi_write_OBJECTS = grib_multi_write.$(OBJEXT)
+eccodes_f_grib_multi_write_OBJECTS =  \
+	$(am_eccodes_f_grib_multi_write_OBJECTS)
+eccodes_f_grib_multi_write_LDADD = $(LDADD)
+eccodes_f_grib_multi_write_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_grib_nearest_OBJECTS = grib_nearest.$(OBJEXT)
-f_grib_nearest_OBJECTS = $(am_f_grib_nearest_OBJECTS)
-f_grib_nearest_LDADD = $(LDADD)
-f_grib_nearest_DEPENDENCIES =  \
+am_eccodes_f_grib_nearest_OBJECTS = grib_nearest.$(OBJEXT)
+eccodes_f_grib_nearest_OBJECTS = $(am_eccodes_f_grib_nearest_OBJECTS)
+eccodes_f_grib_nearest_LDADD = $(LDADD)
+eccodes_f_grib_nearest_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_grib_precision_OBJECTS = grib_precision.$(OBJEXT)
-f_grib_precision_OBJECTS = $(am_f_grib_precision_OBJECTS)
-f_grib_precision_LDADD = $(LDADD)
-f_grib_precision_DEPENDENCIES =  \
+am_eccodes_f_grib_precision_OBJECTS = grib_precision.$(OBJEXT)
+eccodes_f_grib_precision_OBJECTS =  \
+	$(am_eccodes_f_grib_precision_OBJECTS)
+eccodes_f_grib_precision_LDADD = $(LDADD)
+eccodes_f_grib_precision_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_grib_print_data_OBJECTS = grib_print_data.$(OBJEXT)
-f_grib_print_data_OBJECTS = $(am_f_grib_print_data_OBJECTS)
-f_grib_print_data_LDADD = $(LDADD)
-f_grib_print_data_DEPENDENCIES =  \
+am_eccodes_f_grib_print_data_OBJECTS = grib_print_data.$(OBJEXT)
+eccodes_f_grib_print_data_OBJECTS =  \
+	$(am_eccodes_f_grib_print_data_OBJECTS)
+eccodes_f_grib_print_data_LDADD = $(LDADD)
+eccodes_f_grib_print_data_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_grib_set_bitmap_OBJECTS = grib_set_bitmap.$(OBJEXT)
-f_grib_set_bitmap_OBJECTS = $(am_f_grib_set_bitmap_OBJECTS)
-f_grib_set_bitmap_LDADD = $(LDADD)
-f_grib_set_bitmap_DEPENDENCIES =  \
+am_eccodes_f_grib_set_bitmap_OBJECTS = grib_set_bitmap.$(OBJEXT)
+eccodes_f_grib_set_bitmap_OBJECTS =  \
+	$(am_eccodes_f_grib_set_bitmap_OBJECTS)
+eccodes_f_grib_set_bitmap_LDADD = $(LDADD)
+eccodes_f_grib_set_bitmap_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_grib_set_keys_OBJECTS = grib_set_keys.$(OBJEXT)
-f_grib_set_keys_OBJECTS = $(am_f_grib_set_keys_OBJECTS)
-f_grib_set_keys_LDADD = $(LDADD)
-f_grib_set_keys_DEPENDENCIES =  \
+am_eccodes_f_grib_set_keys_OBJECTS = grib_set_keys.$(OBJEXT)
+eccodes_f_grib_set_keys_OBJECTS =  \
+	$(am_eccodes_f_grib_set_keys_OBJECTS)
+eccodes_f_grib_set_keys_LDADD = $(LDADD)
+eccodes_f_grib_set_keys_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_grib_set_pv_OBJECTS = grib_set_pv.$(OBJEXT)
-f_grib_set_pv_OBJECTS = $(am_f_grib_set_pv_OBJECTS)
-f_grib_set_pv_LDADD = $(LDADD)
-f_grib_set_pv_DEPENDENCIES =  \
+am_eccodes_f_grib_set_pv_OBJECTS = grib_set_pv.$(OBJEXT)
+eccodes_f_grib_set_pv_OBJECTS = $(am_eccodes_f_grib_set_pv_OBJECTS)
+eccodes_f_grib_set_pv_LDADD = $(LDADD)
+eccodes_f_grib_set_pv_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_new_from_file_OBJECTS = new_from_file.$(OBJEXT)
-f_new_from_file_OBJECTS = $(am_f_new_from_file_OBJECTS)
-f_new_from_file_LDADD = $(LDADD)
-f_new_from_file_DEPENDENCIES =  \
+am_eccodes_f_new_from_file_OBJECTS = new_from_file.$(OBJEXT)
+eccodes_f_new_from_file_OBJECTS =  \
+	$(am_eccodes_f_new_from_file_OBJECTS)
+eccodes_f_new_from_file_LDADD = $(LDADD)
+eccodes_f_new_from_file_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_read_from_file_OBJECTS = read_from_file.$(OBJEXT)
-f_read_from_file_OBJECTS = $(am_f_read_from_file_OBJECTS)
-f_read_from_file_LDADD = $(LDADD)
-f_read_from_file_DEPENDENCIES =  \
+am_eccodes_f_read_from_file_OBJECTS = read_from_file.$(OBJEXT)
+eccodes_f_read_from_file_OBJECTS =  \
+	$(am_eccodes_f_read_from_file_OBJECTS)
+eccodes_f_read_from_file_LDADD = $(LDADD)
+eccodes_f_read_from_file_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_read_message_OBJECTS = read_message.$(OBJEXT)
-f_read_message_OBJECTS = $(am_f_read_message_OBJECTS)
-f_read_message_LDADD = $(LDADD)
-f_read_message_DEPENDENCIES =  \
+am_eccodes_f_read_message_OBJECTS = read_message.$(OBJEXT)
+eccodes_f_read_message_OBJECTS = $(am_eccodes_f_read_message_OBJECTS)
+eccodes_f_read_message_LDADD = $(LDADD)
+eccodes_f_read_message_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_samples_OBJECTS = samples.$(OBJEXT)
-f_samples_OBJECTS = $(am_f_samples_OBJECTS)
-f_samples_LDADD = $(LDADD)
-f_samples_DEPENDENCIES = $(top_builddir)/fortran/libeccodes_f90.la \
+am_eccodes_f_samples_OBJECTS = samples.$(OBJEXT)
+eccodes_f_samples_OBJECTS = $(am_eccodes_f_samples_OBJECTS)
+eccodes_f_samples_LDADD = $(LDADD)
+eccodes_f_samples_DEPENDENCIES =  \
+	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_set_gvc_OBJECTS = set_gvc.$(OBJEXT)
-f_set_gvc_OBJECTS = $(am_f_set_gvc_OBJECTS)
-f_set_gvc_LDADD = $(LDADD)
-f_set_gvc_DEPENDENCIES = $(top_builddir)/fortran/libeccodes_f90.la \
+am_eccodes_f_set_gvc_OBJECTS = set_gvc.$(OBJEXT)
+eccodes_f_set_gvc_OBJECTS = $(am_eccodes_f_set_gvc_OBJECTS)
+eccodes_f_set_gvc_LDADD = $(LDADD)
+eccodes_f_set_gvc_DEPENDENCIES =  \
+	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
-am_f_set_missing_OBJECTS = set_missing.$(OBJEXT)
-f_set_missing_OBJECTS = $(am_f_set_missing_OBJECTS)
-f_set_missing_LDADD = $(LDADD)
-f_set_missing_DEPENDENCIES =  \
+am_eccodes_f_set_missing_OBJECTS = set_missing.$(OBJEXT)
+eccodes_f_set_missing_OBJECTS = $(am_eccodes_f_set_missing_OBJECTS)
+eccodes_f_set_missing_LDADD = $(LDADD)
+eccodes_f_set_missing_DEPENDENCIES =  \
 	$(top_builddir)/fortran/libeccodes_f90.la \
 	$(top_builddir)/src/libeccodes.la
 AM_V_P = $(am__v_P_ at AM_V@)
@@ -359,44 +411,74 @@ AM_V_FCLD = $(am__v_FCLD_ at AM_V@)
 am__v_FCLD_ = $(am__v_FCLD_ at AM_DEFAULT_V@)
 am__v_FCLD_0 = @echo "  FCLD    " $@;
 am__v_FCLD_1 = 
-SOURCES = $(f_bufr_attributes_SOURCES) $(f_bufr_clone_SOURCES) \
-	$(f_bufr_expanded_SOURCES) $(f_bufr_get_keys_SOURCES) \
-	$(f_bufr_keys_iterator_SOURCES) $(f_bufr_read_header_SOURCES) \
-	$(f_bufr_read_scatterometer_SOURCES) \
-	$(f_bufr_read_synop_SOURCES) $(f_bufr_read_temp_SOURCES) \
-	$(f_bufr_set_keys_SOURCES) $(f_bufr_subset_SOURCES) \
-	$(f_copy_message_SOURCES) $(f_copy_namespace_SOURCES) \
-	$(f_count_messages_SOURCES) $(f_get_data_SOURCES) \
-	$(f_get_pl_SOURCES) $(f_get_product_kind_SOURCES) \
-	$(f_get_pv_SOURCES) $(f_get_set_uuid_SOURCES) \
-	$(f_grib_clone_SOURCES) $(f_grib_get_keys_SOURCES) \
-	$(f_grib_index_SOURCES) $(f_grib_keys_iterator_SOURCES) \
-	$(f_grib_multi_SOURCES) $(f_grib_multi_write_SOURCES) \
-	$(f_grib_nearest_SOURCES) $(f_grib_precision_SOURCES) \
-	$(f_grib_print_data_SOURCES) $(f_grib_set_bitmap_SOURCES) \
-	$(f_grib_set_keys_SOURCES) $(f_grib_set_pv_SOURCES) \
-	$(f_new_from_file_SOURCES) $(f_read_from_file_SOURCES) \
-	$(f_read_message_SOURCES) $(f_samples_SOURCES) \
-	$(f_set_gvc_SOURCES) $(f_set_missing_SOURCES)
-DIST_SOURCES = $(f_bufr_attributes_SOURCES) $(f_bufr_clone_SOURCES) \
-	$(f_bufr_expanded_SOURCES) $(f_bufr_get_keys_SOURCES) \
-	$(f_bufr_keys_iterator_SOURCES) $(f_bufr_read_header_SOURCES) \
-	$(f_bufr_read_scatterometer_SOURCES) \
-	$(f_bufr_read_synop_SOURCES) $(f_bufr_read_temp_SOURCES) \
-	$(f_bufr_set_keys_SOURCES) $(f_bufr_subset_SOURCES) \
-	$(f_copy_message_SOURCES) $(f_copy_namespace_SOURCES) \
-	$(f_count_messages_SOURCES) $(f_get_data_SOURCES) \
-	$(f_get_pl_SOURCES) $(f_get_product_kind_SOURCES) \
-	$(f_get_pv_SOURCES) $(f_get_set_uuid_SOURCES) \
-	$(f_grib_clone_SOURCES) $(f_grib_get_keys_SOURCES) \
-	$(f_grib_index_SOURCES) $(f_grib_keys_iterator_SOURCES) \
-	$(f_grib_multi_SOURCES) $(f_grib_multi_write_SOURCES) \
-	$(f_grib_nearest_SOURCES) $(f_grib_precision_SOURCES) \
-	$(f_grib_print_data_SOURCES) $(f_grib_set_bitmap_SOURCES) \
-	$(f_grib_set_keys_SOURCES) $(f_grib_set_pv_SOURCES) \
-	$(f_new_from_file_SOURCES) $(f_read_from_file_SOURCES) \
-	$(f_read_message_SOURCES) $(f_samples_SOURCES) \
-	$(f_set_gvc_SOURCES) $(f_set_missing_SOURCES)
+SOURCES = $(eccodes_f_bufr_attributes_SOURCES) \
+	$(eccodes_f_bufr_clone_SOURCES) \
+	$(eccodes_f_bufr_expanded_SOURCES) \
+	$(eccodes_f_bufr_get_keys_SOURCES) \
+	$(eccodes_f_bufr_keys_iterator_SOURCES) \
+	$(eccodes_f_bufr_read_header_SOURCES) \
+	$(eccodes_f_bufr_read_scatterometer_SOURCES) \
+	$(eccodes_f_bufr_read_synop_SOURCES) \
+	$(eccodes_f_bufr_read_temp_SOURCES) \
+	$(eccodes_f_bufr_read_tropical_cyclone_SOURCES) \
+	$(eccodes_f_bufr_set_keys_SOURCES) \
+	$(eccodes_f_bufr_subset_SOURCES) \
+	$(eccodes_f_copy_message_SOURCES) \
+	$(eccodes_f_copy_namespace_SOURCES) \
+	$(eccodes_f_count_messages_SOURCES) \
+	$(eccodes_f_get_data_SOURCES) $(eccodes_f_get_pl_SOURCES) \
+	$(eccodes_f_get_product_kind_SOURCES) \
+	$(eccodes_f_get_pv_SOURCES) $(eccodes_f_get_set_uuid_SOURCES) \
+	$(eccodes_f_grib_clone_SOURCES) \
+	$(eccodes_f_grib_get_keys_SOURCES) \
+	$(eccodes_f_grib_index_SOURCES) \
+	$(eccodes_f_grib_keys_iterator_SOURCES) \
+	$(eccodes_f_grib_multi_SOURCES) \
+	$(eccodes_f_grib_multi_write_SOURCES) \
+	$(eccodes_f_grib_nearest_SOURCES) \
+	$(eccodes_f_grib_precision_SOURCES) \
+	$(eccodes_f_grib_print_data_SOURCES) \
+	$(eccodes_f_grib_set_bitmap_SOURCES) \
+	$(eccodes_f_grib_set_keys_SOURCES) \
+	$(eccodes_f_grib_set_pv_SOURCES) \
+	$(eccodes_f_new_from_file_SOURCES) \
+	$(eccodes_f_read_from_file_SOURCES) \
+	$(eccodes_f_read_message_SOURCES) $(eccodes_f_samples_SOURCES) \
+	$(eccodes_f_set_gvc_SOURCES) $(eccodes_f_set_missing_SOURCES)
+DIST_SOURCES = $(eccodes_f_bufr_attributes_SOURCES) \
+	$(eccodes_f_bufr_clone_SOURCES) \
+	$(eccodes_f_bufr_expanded_SOURCES) \
+	$(eccodes_f_bufr_get_keys_SOURCES) \
+	$(eccodes_f_bufr_keys_iterator_SOURCES) \
+	$(eccodes_f_bufr_read_header_SOURCES) \
+	$(eccodes_f_bufr_read_scatterometer_SOURCES) \
+	$(eccodes_f_bufr_read_synop_SOURCES) \
+	$(eccodes_f_bufr_read_temp_SOURCES) \
+	$(eccodes_f_bufr_read_tropical_cyclone_SOURCES) \
+	$(eccodes_f_bufr_set_keys_SOURCES) \
+	$(eccodes_f_bufr_subset_SOURCES) \
+	$(eccodes_f_copy_message_SOURCES) \
+	$(eccodes_f_copy_namespace_SOURCES) \
+	$(eccodes_f_count_messages_SOURCES) \
+	$(eccodes_f_get_data_SOURCES) $(eccodes_f_get_pl_SOURCES) \
+	$(eccodes_f_get_product_kind_SOURCES) \
+	$(eccodes_f_get_pv_SOURCES) $(eccodes_f_get_set_uuid_SOURCES) \
+	$(eccodes_f_grib_clone_SOURCES) \
+	$(eccodes_f_grib_get_keys_SOURCES) \
+	$(eccodes_f_grib_index_SOURCES) \
+	$(eccodes_f_grib_keys_iterator_SOURCES) \
+	$(eccodes_f_grib_multi_SOURCES) \
+	$(eccodes_f_grib_multi_write_SOURCES) \
+	$(eccodes_f_grib_nearest_SOURCES) \
+	$(eccodes_f_grib_precision_SOURCES) \
+	$(eccodes_f_grib_print_data_SOURCES) \
+	$(eccodes_f_grib_set_bitmap_SOURCES) \
+	$(eccodes_f_grib_set_keys_SOURCES) \
+	$(eccodes_f_grib_set_pv_SOURCES) \
+	$(eccodes_f_new_from_file_SOURCES) \
+	$(eccodes_f_read_from_file_SOURCES) \
+	$(eccodes_f_read_message_SOURCES) $(eccodes_f_samples_SOURCES) \
+	$(eccodes_f_set_gvc_SOURCES) $(eccodes_f_set_missing_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -816,47 +898,49 @@ AM_CFLAGS = @WARN_PEDANTIC@ @WERROR@ @FORCE_32_CFLAGS@
 TESTS = copy_message.sh grib_get_keys.sh get_data.sh get_pl.sh get_pv.sh grib_keys_iterator.sh \
         grib_nearest.sh grib_precision.sh grib_multi_write.sh grib_multi.sh grib_print_data.sh grib_set_keys.sh \
         grib_set_bitmap.sh set_missing.sh grib_set_pv.sh samples.sh count_messages.sh read_message.sh \
-        read_from_file.sh grib_index.sh get_set_uuid.sh bufr_attributes.sh bufr_clone.sh \
+        read_from_file.sh grib_index.sh get_set_uuid.sh bufr_attributes.sh grib_clone.sh bufr_clone.sh \
         bufr_expanded.sh bufr_get_keys.sh bufr_read_header.sh bufr_read_synop.sh \
-        bufr_set_keys.sh bufr_keys_iterator.sh bufr_subset.sh get_product_kind.sh bufr_read_temp.sh bufr_read_scatterometer.sh
-
-f_grib_index_SOURCES = grib_index.f90
-f_copy_message_SOURCES = copy_message.f90
-f_grib_get_keys_SOURCES = grib_get_keys.f90
-f_get_data_SOURCES = get_data.f90
-f_get_pl_SOURCES = get_pl.f90
-f_get_pv_SOURCES = get_pv.f90
-f_grib_keys_iterator_SOURCES = grib_keys_iterator.f90
-f_grib_multi_write_SOURCES = grib_multi_write.f90
-f_grib_multi_SOURCES = grib_multi.f90
-f_grib_nearest_SOURCES = grib_nearest.f90
-f_grib_precision_SOURCES = grib_precision.f90
-f_grib_print_data_SOURCES = grib_print_data.f90
-f_grib_set_keys_SOURCES = grib_set_keys.f90
-f_grib_set_bitmap_SOURCES = grib_set_bitmap.f90
-f_set_missing_SOURCES = set_missing.f90
-f_grib_set_pv_SOURCES = grib_set_pv.f90
-f_samples_SOURCES = samples.f90
-f_count_messages_SOURCES = count_messages.f90
-f_read_message_SOURCES = read_message.f90
-f_read_from_file_SOURCES = read_from_file.f90
-f_new_from_file_SOURCES = new_from_file.f90
-f_copy_namespace_SOURCES = copy_namespace.f90
-f_get_set_uuid_SOURCES = get_set_uuid.f90
-f_set_gvc_SOURCES = set_gvc.f90
-f_grib_clone_SOURCES = grib_clone.f90
-f_bufr_attributes_SOURCES = bufr_attributes.f90
-f_bufr_clone_SOURCES = bufr_clone.f90
-f_bufr_expanded_SOURCES = bufr_expanded.f90
-f_bufr_get_keys_SOURCES = bufr_get_keys.f90
-f_bufr_keys_iterator_SOURCES = bufr_keys_iterator.f90
-f_bufr_read_header_SOURCES = bufr_read_header.f90
-f_bufr_read_scatterometer_SOURCES = bufr_read_scatterometer.f90
-f_bufr_read_synop_SOURCES = bufr_read_synop.f90
-f_bufr_read_temp_SOURCES = bufr_read_temp.f90
-f_bufr_set_keys_SOURCES = bufr_set_keys.f90
-f_bufr_subset_SOURCES = bufr_subset.f90
-f_get_product_kind_SOURCES = get_product_kind.f90
+        bufr_set_keys.sh bufr_keys_iterator.sh bufr_subset.sh get_product_kind.sh bufr_read_temp.sh \
+				bufr_read_tropical_cyclone.sh bufr_read_scatterometer.sh
+
+eccodes_f_grib_index_SOURCES = grib_index.f90
+eccodes_f_copy_message_SOURCES = copy_message.f90
+eccodes_f_grib_get_keys_SOURCES = grib_get_keys.f90
+eccodes_f_get_data_SOURCES = get_data.f90
+eccodes_f_get_pl_SOURCES = get_pl.f90
+eccodes_f_get_pv_SOURCES = get_pv.f90
+eccodes_f_grib_keys_iterator_SOURCES = grib_keys_iterator.f90
+eccodes_f_grib_multi_write_SOURCES = grib_multi_write.f90
+eccodes_f_grib_multi_SOURCES = grib_multi.f90
+eccodes_f_grib_nearest_SOURCES = grib_nearest.f90
+eccodes_f_grib_precision_SOURCES = grib_precision.f90
+eccodes_f_grib_print_data_SOURCES = grib_print_data.f90
+eccodes_f_grib_set_keys_SOURCES = grib_set_keys.f90
+eccodes_f_grib_set_bitmap_SOURCES = grib_set_bitmap.f90
+eccodes_f_set_missing_SOURCES = set_missing.f90
+eccodes_f_grib_set_pv_SOURCES = grib_set_pv.f90
+eccodes_f_samples_SOURCES = samples.f90
+eccodes_f_count_messages_SOURCES = count_messages.f90
+eccodes_f_read_message_SOURCES = read_message.f90
+eccodes_f_read_from_file_SOURCES = read_from_file.f90
+eccodes_f_new_from_file_SOURCES = new_from_file.f90
+eccodes_f_copy_namespace_SOURCES = copy_namespace.f90
+eccodes_f_get_set_uuid_SOURCES = get_set_uuid.f90
+eccodes_f_set_gvc_SOURCES = set_gvc.f90
+eccodes_f_grib_clone_SOURCES = grib_clone.f90
+eccodes_f_bufr_attributes_SOURCES = bufr_attributes.f90
+eccodes_f_bufr_clone_SOURCES = bufr_clone.f90
+eccodes_f_bufr_expanded_SOURCES = bufr_expanded.f90
+eccodes_f_bufr_get_keys_SOURCES = bufr_get_keys.f90
+eccodes_f_bufr_keys_iterator_SOURCES = bufr_keys_iterator.f90
+eccodes_f_bufr_read_header_SOURCES = bufr_read_header.f90
+eccodes_f_bufr_read_scatterometer_SOURCES = bufr_read_scatterometer.f90
+eccodes_f_bufr_read_synop_SOURCES = bufr_read_synop.f90
+eccodes_f_bufr_read_temp_SOURCES = bufr_read_temp.f90
+eccodes_f_bufr_set_keys_SOURCES = bufr_set_keys.f90
+eccodes_f_bufr_subset_SOURCES = bufr_subset.f90
+eccodes_f_get_product_kind_SOURCES = get_product_kind.f90
+eccodes_f_bufr_read_tropical_cyclone_SOURCES = bufr_read_tropical_cyclone.f90
 INCLUDES = -I$(top_builddir)/src
 AM_FCFLAGS = $(F90_MODULE_FLAG)$(top_builddir)/fortran
 LDADD = $(top_builddir)/fortran/libeccodes_f90.la $(top_builddir)/src/libeccodes.la
@@ -906,153 +990,157 @@ clean-noinstPROGRAMS:
 	echo " rm -f" $$list; \
 	rm -f $$list
 
-f_bufr_attributes$(EXEEXT): $(f_bufr_attributes_OBJECTS) $(f_bufr_attributes_DEPENDENCIES) $(EXTRA_f_bufr_attributes_DEPENDENCIES) 
-	@rm -f f_bufr_attributes$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_bufr_attributes_OBJECTS) $(f_bufr_attributes_LDADD) $(LIBS)
+eccodes_f_bufr_attributes$(EXEEXT): $(eccodes_f_bufr_attributes_OBJECTS) $(eccodes_f_bufr_attributes_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_attributes_DEPENDENCIES) 
+	@rm -f eccodes_f_bufr_attributes$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_attributes_OBJECTS) $(eccodes_f_bufr_attributes_LDADD) $(LIBS)
+
+eccodes_f_bufr_clone$(EXEEXT): $(eccodes_f_bufr_clone_OBJECTS) $(eccodes_f_bufr_clone_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_clone_DEPENDENCIES) 
+	@rm -f eccodes_f_bufr_clone$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_clone_OBJECTS) $(eccodes_f_bufr_clone_LDADD) $(LIBS)
 
-f_bufr_clone$(EXEEXT): $(f_bufr_clone_OBJECTS) $(f_bufr_clone_DEPENDENCIES) $(EXTRA_f_bufr_clone_DEPENDENCIES) 
-	@rm -f f_bufr_clone$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_bufr_clone_OBJECTS) $(f_bufr_clone_LDADD) $(LIBS)
+eccodes_f_bufr_expanded$(EXEEXT): $(eccodes_f_bufr_expanded_OBJECTS) $(eccodes_f_bufr_expanded_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_expanded_DEPENDENCIES) 
+	@rm -f eccodes_f_bufr_expanded$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_expanded_OBJECTS) $(eccodes_f_bufr_expanded_LDADD) $(LIBS)
 
-f_bufr_expanded$(EXEEXT): $(f_bufr_expanded_OBJECTS) $(f_bufr_expanded_DEPENDENCIES) $(EXTRA_f_bufr_expanded_DEPENDENCIES) 
-	@rm -f f_bufr_expanded$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_bufr_expanded_OBJECTS) $(f_bufr_expanded_LDADD) $(LIBS)
+eccodes_f_bufr_get_keys$(EXEEXT): $(eccodes_f_bufr_get_keys_OBJECTS) $(eccodes_f_bufr_get_keys_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_get_keys_DEPENDENCIES) 
+	@rm -f eccodes_f_bufr_get_keys$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_get_keys_OBJECTS) $(eccodes_f_bufr_get_keys_LDADD) $(LIBS)
 
-f_bufr_get_keys$(EXEEXT): $(f_bufr_get_keys_OBJECTS) $(f_bufr_get_keys_DEPENDENCIES) $(EXTRA_f_bufr_get_keys_DEPENDENCIES) 
-	@rm -f f_bufr_get_keys$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_bufr_get_keys_OBJECTS) $(f_bufr_get_keys_LDADD) $(LIBS)
+eccodes_f_bufr_keys_iterator$(EXEEXT): $(eccodes_f_bufr_keys_iterator_OBJECTS) $(eccodes_f_bufr_keys_iterator_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_keys_iterator_DEPENDENCIES) 
+	@rm -f eccodes_f_bufr_keys_iterator$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_keys_iterator_OBJECTS) $(eccodes_f_bufr_keys_iterator_LDADD) $(LIBS)
 
-f_bufr_keys_iterator$(EXEEXT): $(f_bufr_keys_iterator_OBJECTS) $(f_bufr_keys_iterator_DEPENDENCIES) $(EXTRA_f_bufr_keys_iterator_DEPENDENCIES) 
-	@rm -f f_bufr_keys_iterator$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_bufr_keys_iterator_OBJECTS) $(f_bufr_keys_iterator_LDADD) $(LIBS)
+eccodes_f_bufr_read_header$(EXEEXT): $(eccodes_f_bufr_read_header_OBJECTS) $(eccodes_f_bufr_read_header_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_read_header_DEPENDENCIES) 
+	@rm -f eccodes_f_bufr_read_header$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_read_header_OBJECTS) $(eccodes_f_bufr_read_header_LDADD) $(LIBS)
 
-f_bufr_read_header$(EXEEXT): $(f_bufr_read_header_OBJECTS) $(f_bufr_read_header_DEPENDENCIES) $(EXTRA_f_bufr_read_header_DEPENDENCIES) 
-	@rm -f f_bufr_read_header$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_bufr_read_header_OBJECTS) $(f_bufr_read_header_LDADD) $(LIBS)
+eccodes_f_bufr_read_scatterometer$(EXEEXT): $(eccodes_f_bufr_read_scatterometer_OBJECTS) $(eccodes_f_bufr_read_scatterometer_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_read_scatterometer_DEPENDENCIES) 
+	@rm -f eccodes_f_bufr_read_scatterometer$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_read_scatterometer_OBJECTS) $(eccodes_f_bufr_read_scatterometer_LDADD) $(LIBS)
 
-f_bufr_read_scatterometer$(EXEEXT): $(f_bufr_read_scatterometer_OBJECTS) $(f_bufr_read_scatterometer_DEPENDENCIES) $(EXTRA_f_bufr_read_scatterometer_DEPENDENCIES) 
-	@rm -f f_bufr_read_scatterometer$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_bufr_read_scatterometer_OBJECTS) $(f_bufr_read_scatterometer_LDADD) $(LIBS)
+eccodes_f_bufr_read_synop$(EXEEXT): $(eccodes_f_bufr_read_synop_OBJECTS) $(eccodes_f_bufr_read_synop_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_read_synop_DEPENDENCIES) 
+	@rm -f eccodes_f_bufr_read_synop$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_read_synop_OBJECTS) $(eccodes_f_bufr_read_synop_LDADD) $(LIBS)
 
-f_bufr_read_synop$(EXEEXT): $(f_bufr_read_synop_OBJECTS) $(f_bufr_read_synop_DEPENDENCIES) $(EXTRA_f_bufr_read_synop_DEPENDENCIES) 
-	@rm -f f_bufr_read_synop$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_bufr_read_synop_OBJECTS) $(f_bufr_read_synop_LDADD) $(LIBS)
+eccodes_f_bufr_read_temp$(EXEEXT): $(eccodes_f_bufr_read_temp_OBJECTS) $(eccodes_f_bufr_read_temp_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_read_temp_DEPENDENCIES) 
+	@rm -f eccodes_f_bufr_read_temp$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_read_temp_OBJECTS) $(eccodes_f_bufr_read_temp_LDADD) $(LIBS)
 
-f_bufr_read_temp$(EXEEXT): $(f_bufr_read_temp_OBJECTS) $(f_bufr_read_temp_DEPENDENCIES) $(EXTRA_f_bufr_read_temp_DEPENDENCIES) 
-	@rm -f f_bufr_read_temp$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_bufr_read_temp_OBJECTS) $(f_bufr_read_temp_LDADD) $(LIBS)
+eccodes_f_bufr_read_tropical_cyclone$(EXEEXT): $(eccodes_f_bufr_read_tropical_cyclone_OBJECTS) $(eccodes_f_bufr_read_tropical_cyclone_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_read_tropical_cyclone_DEPENDENCIES) 
+	@rm -f eccodes_f_bufr_read_tropical_cyclone$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_read_tropical_cyclone_OBJECTS) $(eccodes_f_bufr_read_tropical_cyclone_LDADD) $(LIBS)
 
-f_bufr_set_keys$(EXEEXT): $(f_bufr_set_keys_OBJECTS) $(f_bufr_set_keys_DEPENDENCIES) $(EXTRA_f_bufr_set_keys_DEPENDENCIES) 
-	@rm -f f_bufr_set_keys$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_bufr_set_keys_OBJECTS) $(f_bufr_set_keys_LDADD) $(LIBS)
+eccodes_f_bufr_set_keys$(EXEEXT): $(eccodes_f_bufr_set_keys_OBJECTS) $(eccodes_f_bufr_set_keys_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_set_keys_DEPENDENCIES) 
+	@rm -f eccodes_f_bufr_set_keys$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_set_keys_OBJECTS) $(eccodes_f_bufr_set_keys_LDADD) $(LIBS)
 
-f_bufr_subset$(EXEEXT): $(f_bufr_subset_OBJECTS) $(f_bufr_subset_DEPENDENCIES) $(EXTRA_f_bufr_subset_DEPENDENCIES) 
-	@rm -f f_bufr_subset$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_bufr_subset_OBJECTS) $(f_bufr_subset_LDADD) $(LIBS)
+eccodes_f_bufr_subset$(EXEEXT): $(eccodes_f_bufr_subset_OBJECTS) $(eccodes_f_bufr_subset_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_subset_DEPENDENCIES) 
+	@rm -f eccodes_f_bufr_subset$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_subset_OBJECTS) $(eccodes_f_bufr_subset_LDADD) $(LIBS)
 
-f_copy_message$(EXEEXT): $(f_copy_message_OBJECTS) $(f_copy_message_DEPENDENCIES) $(EXTRA_f_copy_message_DEPENDENCIES) 
-	@rm -f f_copy_message$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_copy_message_OBJECTS) $(f_copy_message_LDADD) $(LIBS)
+eccodes_f_copy_message$(EXEEXT): $(eccodes_f_copy_message_OBJECTS) $(eccodes_f_copy_message_DEPENDENCIES) $(EXTRA_eccodes_f_copy_message_DEPENDENCIES) 
+	@rm -f eccodes_f_copy_message$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_copy_message_OBJECTS) $(eccodes_f_copy_message_LDADD) $(LIBS)
 
-f_copy_namespace$(EXEEXT): $(f_copy_namespace_OBJECTS) $(f_copy_namespace_DEPENDENCIES) $(EXTRA_f_copy_namespace_DEPENDENCIES) 
-	@rm -f f_copy_namespace$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_copy_namespace_OBJECTS) $(f_copy_namespace_LDADD) $(LIBS)
+eccodes_f_copy_namespace$(EXEEXT): $(eccodes_f_copy_namespace_OBJECTS) $(eccodes_f_copy_namespace_DEPENDENCIES) $(EXTRA_eccodes_f_copy_namespace_DEPENDENCIES) 
+	@rm -f eccodes_f_copy_namespace$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_copy_namespace_OBJECTS) $(eccodes_f_copy_namespace_LDADD) $(LIBS)
 
-f_count_messages$(EXEEXT): $(f_count_messages_OBJECTS) $(f_count_messages_DEPENDENCIES) $(EXTRA_f_count_messages_DEPENDENCIES) 
-	@rm -f f_count_messages$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_count_messages_OBJECTS) $(f_count_messages_LDADD) $(LIBS)
+eccodes_f_count_messages$(EXEEXT): $(eccodes_f_count_messages_OBJECTS) $(eccodes_f_count_messages_DEPENDENCIES) $(EXTRA_eccodes_f_count_messages_DEPENDENCIES) 
+	@rm -f eccodes_f_count_messages$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_count_messages_OBJECTS) $(eccodes_f_count_messages_LDADD) $(LIBS)
 
-f_get_data$(EXEEXT): $(f_get_data_OBJECTS) $(f_get_data_DEPENDENCIES) $(EXTRA_f_get_data_DEPENDENCIES) 
-	@rm -f f_get_data$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_get_data_OBJECTS) $(f_get_data_LDADD) $(LIBS)
+eccodes_f_get_data$(EXEEXT): $(eccodes_f_get_data_OBJECTS) $(eccodes_f_get_data_DEPENDENCIES) $(EXTRA_eccodes_f_get_data_DEPENDENCIES) 
+	@rm -f eccodes_f_get_data$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_get_data_OBJECTS) $(eccodes_f_get_data_LDADD) $(LIBS)
 
-f_get_pl$(EXEEXT): $(f_get_pl_OBJECTS) $(f_get_pl_DEPENDENCIES) $(EXTRA_f_get_pl_DEPENDENCIES) 
-	@rm -f f_get_pl$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_get_pl_OBJECTS) $(f_get_pl_LDADD) $(LIBS)
+eccodes_f_get_pl$(EXEEXT): $(eccodes_f_get_pl_OBJECTS) $(eccodes_f_get_pl_DEPENDENCIES) $(EXTRA_eccodes_f_get_pl_DEPENDENCIES) 
+	@rm -f eccodes_f_get_pl$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_get_pl_OBJECTS) $(eccodes_f_get_pl_LDADD) $(LIBS)
 
-f_get_product_kind$(EXEEXT): $(f_get_product_kind_OBJECTS) $(f_get_product_kind_DEPENDENCIES) $(EXTRA_f_get_product_kind_DEPENDENCIES) 
-	@rm -f f_get_product_kind$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_get_product_kind_OBJECTS) $(f_get_product_kind_LDADD) $(LIBS)
+eccodes_f_get_product_kind$(EXEEXT): $(eccodes_f_get_product_kind_OBJECTS) $(eccodes_f_get_product_kind_DEPENDENCIES) $(EXTRA_eccodes_f_get_product_kind_DEPENDENCIES) 
+	@rm -f eccodes_f_get_product_kind$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_get_product_kind_OBJECTS) $(eccodes_f_get_product_kind_LDADD) $(LIBS)
 
-f_get_pv$(EXEEXT): $(f_get_pv_OBJECTS) $(f_get_pv_DEPENDENCIES) $(EXTRA_f_get_pv_DEPENDENCIES) 
-	@rm -f f_get_pv$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_get_pv_OBJECTS) $(f_get_pv_LDADD) $(LIBS)
+eccodes_f_get_pv$(EXEEXT): $(eccodes_f_get_pv_OBJECTS) $(eccodes_f_get_pv_DEPENDENCIES) $(EXTRA_eccodes_f_get_pv_DEPENDENCIES) 
+	@rm -f eccodes_f_get_pv$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_get_pv_OBJECTS) $(eccodes_f_get_pv_LDADD) $(LIBS)
 
-f_get_set_uuid$(EXEEXT): $(f_get_set_uuid_OBJECTS) $(f_get_set_uuid_DEPENDENCIES) $(EXTRA_f_get_set_uuid_DEPENDENCIES) 
-	@rm -f f_get_set_uuid$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_get_set_uuid_OBJECTS) $(f_get_set_uuid_LDADD) $(LIBS)
+eccodes_f_get_set_uuid$(EXEEXT): $(eccodes_f_get_set_uuid_OBJECTS) $(eccodes_f_get_set_uuid_DEPENDENCIES) $(EXTRA_eccodes_f_get_set_uuid_DEPENDENCIES) 
+	@rm -f eccodes_f_get_set_uuid$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_get_set_uuid_OBJECTS) $(eccodes_f_get_set_uuid_LDADD) $(LIBS)
 
-f_grib_clone$(EXEEXT): $(f_grib_clone_OBJECTS) $(f_grib_clone_DEPENDENCIES) $(EXTRA_f_grib_clone_DEPENDENCIES) 
-	@rm -f f_grib_clone$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_clone_OBJECTS) $(f_grib_clone_LDADD) $(LIBS)
+eccodes_f_grib_clone$(EXEEXT): $(eccodes_f_grib_clone_OBJECTS) $(eccodes_f_grib_clone_DEPENDENCIES) $(EXTRA_eccodes_f_grib_clone_DEPENDENCIES) 
+	@rm -f eccodes_f_grib_clone$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_clone_OBJECTS) $(eccodes_f_grib_clone_LDADD) $(LIBS)
 
-f_grib_get_keys$(EXEEXT): $(f_grib_get_keys_OBJECTS) $(f_grib_get_keys_DEPENDENCIES) $(EXTRA_f_grib_get_keys_DEPENDENCIES) 
-	@rm -f f_grib_get_keys$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_get_keys_OBJECTS) $(f_grib_get_keys_LDADD) $(LIBS)
+eccodes_f_grib_get_keys$(EXEEXT): $(eccodes_f_grib_get_keys_OBJECTS) $(eccodes_f_grib_get_keys_DEPENDENCIES) $(EXTRA_eccodes_f_grib_get_keys_DEPENDENCIES) 
+	@rm -f eccodes_f_grib_get_keys$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_get_keys_OBJECTS) $(eccodes_f_grib_get_keys_LDADD) $(LIBS)
 
-f_grib_index$(EXEEXT): $(f_grib_index_OBJECTS) $(f_grib_index_DEPENDENCIES) $(EXTRA_f_grib_index_DEPENDENCIES) 
-	@rm -f f_grib_index$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_index_OBJECTS) $(f_grib_index_LDADD) $(LIBS)
+eccodes_f_grib_index$(EXEEXT): $(eccodes_f_grib_index_OBJECTS) $(eccodes_f_grib_index_DEPENDENCIES) $(EXTRA_eccodes_f_grib_index_DEPENDENCIES) 
+	@rm -f eccodes_f_grib_index$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_index_OBJECTS) $(eccodes_f_grib_index_LDADD) $(LIBS)
 
-f_grib_keys_iterator$(EXEEXT): $(f_grib_keys_iterator_OBJECTS) $(f_grib_keys_iterator_DEPENDENCIES) $(EXTRA_f_grib_keys_iterator_DEPENDENCIES) 
-	@rm -f f_grib_keys_iterator$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_keys_iterator_OBJECTS) $(f_grib_keys_iterator_LDADD) $(LIBS)
+eccodes_f_grib_keys_iterator$(EXEEXT): $(eccodes_f_grib_keys_iterator_OBJECTS) $(eccodes_f_grib_keys_iterator_DEPENDENCIES) $(EXTRA_eccodes_f_grib_keys_iterator_DEPENDENCIES) 
+	@rm -f eccodes_f_grib_keys_iterator$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_keys_iterator_OBJECTS) $(eccodes_f_grib_keys_iterator_LDADD) $(LIBS)
 
-f_grib_multi$(EXEEXT): $(f_grib_multi_OBJECTS) $(f_grib_multi_DEPENDENCIES) $(EXTRA_f_grib_multi_DEPENDENCIES) 
-	@rm -f f_grib_multi$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_multi_OBJECTS) $(f_grib_multi_LDADD) $(LIBS)
+eccodes_f_grib_multi$(EXEEXT): $(eccodes_f_grib_multi_OBJECTS) $(eccodes_f_grib_multi_DEPENDENCIES) $(EXTRA_eccodes_f_grib_multi_DEPENDENCIES) 
+	@rm -f eccodes_f_grib_multi$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_multi_OBJECTS) $(eccodes_f_grib_multi_LDADD) $(LIBS)
 
-f_grib_multi_write$(EXEEXT): $(f_grib_multi_write_OBJECTS) $(f_grib_multi_write_DEPENDENCIES) $(EXTRA_f_grib_multi_write_DEPENDENCIES) 
-	@rm -f f_grib_multi_write$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_multi_write_OBJECTS) $(f_grib_multi_write_LDADD) $(LIBS)
+eccodes_f_grib_multi_write$(EXEEXT): $(eccodes_f_grib_multi_write_OBJECTS) $(eccodes_f_grib_multi_write_DEPENDENCIES) $(EXTRA_eccodes_f_grib_multi_write_DEPENDENCIES) 
+	@rm -f eccodes_f_grib_multi_write$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_multi_write_OBJECTS) $(eccodes_f_grib_multi_write_LDADD) $(LIBS)
 
-f_grib_nearest$(EXEEXT): $(f_grib_nearest_OBJECTS) $(f_grib_nearest_DEPENDENCIES) $(EXTRA_f_grib_nearest_DEPENDENCIES) 
-	@rm -f f_grib_nearest$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_nearest_OBJECTS) $(f_grib_nearest_LDADD) $(LIBS)
+eccodes_f_grib_nearest$(EXEEXT): $(eccodes_f_grib_nearest_OBJECTS) $(eccodes_f_grib_nearest_DEPENDENCIES) $(EXTRA_eccodes_f_grib_nearest_DEPENDENCIES) 
+	@rm -f eccodes_f_grib_nearest$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_nearest_OBJECTS) $(eccodes_f_grib_nearest_LDADD) $(LIBS)
 
-f_grib_precision$(EXEEXT): $(f_grib_precision_OBJECTS) $(f_grib_precision_DEPENDENCIES) $(EXTRA_f_grib_precision_DEPENDENCIES) 
-	@rm -f f_grib_precision$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_precision_OBJECTS) $(f_grib_precision_LDADD) $(LIBS)
+eccodes_f_grib_precision$(EXEEXT): $(eccodes_f_grib_precision_OBJECTS) $(eccodes_f_grib_precision_DEPENDENCIES) $(EXTRA_eccodes_f_grib_precision_DEPENDENCIES) 
+	@rm -f eccodes_f_grib_precision$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_precision_OBJECTS) $(eccodes_f_grib_precision_LDADD) $(LIBS)
 
-f_grib_print_data$(EXEEXT): $(f_grib_print_data_OBJECTS) $(f_grib_print_data_DEPENDENCIES) $(EXTRA_f_grib_print_data_DEPENDENCIES) 
-	@rm -f f_grib_print_data$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_print_data_OBJECTS) $(f_grib_print_data_LDADD) $(LIBS)
+eccodes_f_grib_print_data$(EXEEXT): $(eccodes_f_grib_print_data_OBJECTS) $(eccodes_f_grib_print_data_DEPENDENCIES) $(EXTRA_eccodes_f_grib_print_data_DEPENDENCIES) 
+	@rm -f eccodes_f_grib_print_data$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_print_data_OBJECTS) $(eccodes_f_grib_print_data_LDADD) $(LIBS)
 
-f_grib_set_bitmap$(EXEEXT): $(f_grib_set_bitmap_OBJECTS) $(f_grib_set_bitmap_DEPENDENCIES) $(EXTRA_f_grib_set_bitmap_DEPENDENCIES) 
-	@rm -f f_grib_set_bitmap$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_set_bitmap_OBJECTS) $(f_grib_set_bitmap_LDADD) $(LIBS)
+eccodes_f_grib_set_bitmap$(EXEEXT): $(eccodes_f_grib_set_bitmap_OBJECTS) $(eccodes_f_grib_set_bitmap_DEPENDENCIES) $(EXTRA_eccodes_f_grib_set_bitmap_DEPENDENCIES) 
+	@rm -f eccodes_f_grib_set_bitmap$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_set_bitmap_OBJECTS) $(eccodes_f_grib_set_bitmap_LDADD) $(LIBS)
 
-f_grib_set_keys$(EXEEXT): $(f_grib_set_keys_OBJECTS) $(f_grib_set_keys_DEPENDENCIES) $(EXTRA_f_grib_set_keys_DEPENDENCIES) 
-	@rm -f f_grib_set_keys$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_set_keys_OBJECTS) $(f_grib_set_keys_LDADD) $(LIBS)
+eccodes_f_grib_set_keys$(EXEEXT): $(eccodes_f_grib_set_keys_OBJECTS) $(eccodes_f_grib_set_keys_DEPENDENCIES) $(EXTRA_eccodes_f_grib_set_keys_DEPENDENCIES) 
+	@rm -f eccodes_f_grib_set_keys$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_set_keys_OBJECTS) $(eccodes_f_grib_set_keys_LDADD) $(LIBS)
 
-f_grib_set_pv$(EXEEXT): $(f_grib_set_pv_OBJECTS) $(f_grib_set_pv_DEPENDENCIES) $(EXTRA_f_grib_set_pv_DEPENDENCIES) 
-	@rm -f f_grib_set_pv$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_grib_set_pv_OBJECTS) $(f_grib_set_pv_LDADD) $(LIBS)
+eccodes_f_grib_set_pv$(EXEEXT): $(eccodes_f_grib_set_pv_OBJECTS) $(eccodes_f_grib_set_pv_DEPENDENCIES) $(EXTRA_eccodes_f_grib_set_pv_DEPENDENCIES) 
+	@rm -f eccodes_f_grib_set_pv$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_set_pv_OBJECTS) $(eccodes_f_grib_set_pv_LDADD) $(LIBS)
 
-f_new_from_file$(EXEEXT): $(f_new_from_file_OBJECTS) $(f_new_from_file_DEPENDENCIES) $(EXTRA_f_new_from_file_DEPENDENCIES) 
-	@rm -f f_new_from_file$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_new_from_file_OBJECTS) $(f_new_from_file_LDADD) $(LIBS)
+eccodes_f_new_from_file$(EXEEXT): $(eccodes_f_new_from_file_OBJECTS) $(eccodes_f_new_from_file_DEPENDENCIES) $(EXTRA_eccodes_f_new_from_file_DEPENDENCIES) 
+	@rm -f eccodes_f_new_from_file$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_new_from_file_OBJECTS) $(eccodes_f_new_from_file_LDADD) $(LIBS)
 
-f_read_from_file$(EXEEXT): $(f_read_from_file_OBJECTS) $(f_read_from_file_DEPENDENCIES) $(EXTRA_f_read_from_file_DEPENDENCIES) 
-	@rm -f f_read_from_file$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_read_from_file_OBJECTS) $(f_read_from_file_LDADD) $(LIBS)
+eccodes_f_read_from_file$(EXEEXT): $(eccodes_f_read_from_file_OBJECTS) $(eccodes_f_read_from_file_DEPENDENCIES) $(EXTRA_eccodes_f_read_from_file_DEPENDENCIES) 
+	@rm -f eccodes_f_read_from_file$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_read_from_file_OBJECTS) $(eccodes_f_read_from_file_LDADD) $(LIBS)
 
-f_read_message$(EXEEXT): $(f_read_message_OBJECTS) $(f_read_message_DEPENDENCIES) $(EXTRA_f_read_message_DEPENDENCIES) 
-	@rm -f f_read_message$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_read_message_OBJECTS) $(f_read_message_LDADD) $(LIBS)
+eccodes_f_read_message$(EXEEXT): $(eccodes_f_read_message_OBJECTS) $(eccodes_f_read_message_DEPENDENCIES) $(EXTRA_eccodes_f_read_message_DEPENDENCIES) 
+	@rm -f eccodes_f_read_message$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_read_message_OBJECTS) $(eccodes_f_read_message_LDADD) $(LIBS)
 
-f_samples$(EXEEXT): $(f_samples_OBJECTS) $(f_samples_DEPENDENCIES) $(EXTRA_f_samples_DEPENDENCIES) 
-	@rm -f f_samples$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_samples_OBJECTS) $(f_samples_LDADD) $(LIBS)
+eccodes_f_samples$(EXEEXT): $(eccodes_f_samples_OBJECTS) $(eccodes_f_samples_DEPENDENCIES) $(EXTRA_eccodes_f_samples_DEPENDENCIES) 
+	@rm -f eccodes_f_samples$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_samples_OBJECTS) $(eccodes_f_samples_LDADD) $(LIBS)
 
-f_set_gvc$(EXEEXT): $(f_set_gvc_OBJECTS) $(f_set_gvc_DEPENDENCIES) $(EXTRA_f_set_gvc_DEPENDENCIES) 
-	@rm -f f_set_gvc$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_set_gvc_OBJECTS) $(f_set_gvc_LDADD) $(LIBS)
+eccodes_f_set_gvc$(EXEEXT): $(eccodes_f_set_gvc_OBJECTS) $(eccodes_f_set_gvc_DEPENDENCIES) $(EXTRA_eccodes_f_set_gvc_DEPENDENCIES) 
+	@rm -f eccodes_f_set_gvc$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_set_gvc_OBJECTS) $(eccodes_f_set_gvc_LDADD) $(LIBS)
 
-f_set_missing$(EXEEXT): $(f_set_missing_OBJECTS) $(f_set_missing_DEPENDENCIES) $(EXTRA_f_set_missing_DEPENDENCIES) 
-	@rm -f f_set_missing$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(f_set_missing_OBJECTS) $(f_set_missing_LDADD) $(LIBS)
+eccodes_f_set_missing$(EXEEXT): $(eccodes_f_set_missing_OBJECTS) $(eccodes_f_set_missing_DEPENDENCIES) $(EXTRA_eccodes_f_set_missing_DEPENDENCIES) 
+	@rm -f eccodes_f_set_missing$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_set_missing_OBJECTS) $(eccodes_f_set_missing_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -1422,6 +1510,13 @@ bufr_attributes.sh.log: bufr_attributes.sh
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+grib_clone.sh.log: grib_clone.sh
+	@p='grib_clone.sh'; \
+	b='grib_clone.sh'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 bufr_clone.sh.log: bufr_clone.sh
 	@p='bufr_clone.sh'; \
 	b='bufr_clone.sh'; \
@@ -1492,6 +1587,13 @@ bufr_read_temp.sh.log: bufr_read_temp.sh
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bufr_read_tropical_cyclone.sh.log: bufr_read_tropical_cyclone.sh
+	@p='bufr_read_tropical_cyclone.sh'; \
+	b='bufr_read_tropical_cyclone.sh'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 bufr_read_scatterometer.sh.log: bufr_read_scatterometer.sh
 	@p='bufr_read_scatterometer.sh'; \
 	b='bufr_read_scatterometer.sh'; \
diff --git a/examples/F90/bufr_attributes.f90 b/examples/F90/bufr_attributes.f90
index 22c62db..d6ea995 100644
--- a/examples/F90/bufr_attributes.f90
+++ b/examples/F90/bufr_attributes.f90
@@ -1,5 +1,5 @@
 !
-!Copyright 2005-2015 ECMWF.
+!Copyright 2005-2016 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.
diff --git a/examples/F90/bufr_attributes.sh b/examples/F90/bufr_attributes.sh
index 96132e5..599990e 100755
--- a/examples/F90/bufr_attributes.sh
+++ b/examples/F90/bufr_attributes.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -24,7 +24,7 @@ rm -f ${fTmp} | true
 REDIRECT=/dev/null
 
 #Write the values into a file and compare with reference
-${examples_dir}/f_bufr_attributes #2> $REDIRECT > $fTmp
+${examples_dir}/eccodes_f_bufr_attributes #2> $REDIRECT > $fTmp
 
 #TODO: check the results
 
diff --git a/examples/F90/bufr_clone.f90 b/examples/F90/bufr_clone.f90
index a3c574e..038f837 100644
--- a/examples/F90/bufr_clone.f90
+++ b/examples/F90/bufr_clone.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/bufr_clone.sh b/examples/F90/bufr_clone.sh
index ef04be1..d93e766 100755
--- a/examples/F90/bufr_clone.sh
+++ b/examples/F90/bufr_clone.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -22,11 +22,11 @@ f=${data_dir}/bufr/syno_multi.bufr
 REDIRECT=/dev/null
 
 #The input ($f) and output ($fBufrTmp) are hardcoded in the f90 example!!! 
-${examples_dir}/f_bufr_clone >$REDIRECT 2> $REDIRECT 
+${examples_dir}/eccodes_f_bufr_clone >$REDIRECT 2> $REDIRECT
 
 #Compare clone to the original
 set +e
-${tools_dir}/bufr_compare $f $fBufrTmp >$REDIRECT 2> $REDIRECT 
+${tools_dir}/bufr_compare $f $fBufrTmp >$REDIRECT 2> $REDIRECT
 
 #Check if clone is different
 if [ $? -eq 0 ]; then
diff --git a/examples/F90/bufr_expanded.f90 b/examples/F90/bufr_expanded.f90
index 36362b6..303a30a 100644
--- a/examples/F90/bufr_expanded.f90
+++ b/examples/F90/bufr_expanded.f90
@@ -1,5 +1,5 @@
 !
-!Copyright 2005-2015 ECMWF.
+!Copyright 2005-2016 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.
diff --git a/examples/F90/bufr_expanded.sh b/examples/F90/bufr_expanded.sh
index 1617d03..6e472b7 100755
--- a/examples/F90/bufr_expanded.sh
+++ b/examples/F90/bufr_expanded.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -27,7 +27,7 @@ REDIRECT=/dev/null
 #hardcoded in the example
 
 #Write the values into a file
-${examples_dir}/f_bufr_expanded > $fTmp 2> $REDIRECT 
+${examples_dir}/eccodes_f_bufr_expanded > $fTmp 2> $REDIRECT
 
 #TODO: add a better check. It could be compared against the bufrdc
 # references.
diff --git a/examples/F90/bufr_get_keys.f90 b/examples/F90/bufr_get_keys.f90
index 83545f7..e20ef14 100644
--- a/examples/F90/bufr_get_keys.f90
+++ b/examples/F90/bufr_get_keys.f90
@@ -1,5 +1,5 @@
 !
-!Copyright 2005-2015 ECMWF.
+!Copyright 2005-2016 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.
@@ -34,6 +34,9 @@ character(len=9)   :: typicalDate
 
   do while (iret/=CODES_END_OF_FILE)
     
+    ! For debugging
+    call codes_dump(ibufr)
+
     ! get and print some keys form the BUFR header 
     write(*,*) 'message: ',count
 
diff --git a/examples/F90/bufr_get_keys.sh b/examples/F90/bufr_get_keys.sh
index 34d2f0f..7f9d284 100755
--- a/examples/F90/bufr_get_keys.sh
+++ b/examples/F90/bufr_get_keys.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -24,7 +24,7 @@ rm -f ${fTmp} | true
 REDIRECT=/dev/null
 
 #Write the values into a file and compare with reference
-${examples_dir}/f_bufr_get_keys 2> $REDIRECT > $fTmp
+${examples_dir}/eccodes_f_bufr_get_keys 2> $REDIRECT > $fTmp
 
 #TODO: check the results
 
diff --git a/examples/F90/bufr_keys_iterator.f90 b/examples/F90/bufr_keys_iterator.f90
index 97125db..1333180 100644
--- a/examples/F90/bufr_keys_iterator.f90
+++ b/examples/F90/bufr_keys_iterator.f90
@@ -1,5 +1,5 @@
 !
-!Copyright 2005-2015 ECMWF.
+!Copyright 2005-2016 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.
diff --git a/examples/F90/bufr_keys_iterator.sh b/examples/F90/bufr_keys_iterator.sh
index d86f773..5eae2ec 100755
--- a/examples/F90/bufr_keys_iterator.sh
+++ b/examples/F90/bufr_keys_iterator.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -22,7 +22,7 @@ REDIRECT=/dev/null
 f=${data_dir}/bufr/syno_1.bufr
 
 #The input ($f) is hardcoded in the f90 example!!!
-${examples_dir}/f_bufr_keys_iterator 2> $REDIRECT > $fTmp
+${examples_dir}/eccodes_f_bufr_keys_iterator 2> $REDIRECT > $fTmp
 
 #TODO: check the output
 
diff --git a/examples/F90/bufr_read_header.f90 b/examples/F90/bufr_read_header.f90
index 44a5562..3f1c6c6 100644
--- a/examples/F90/bufr_read_header.f90
+++ b/examples/F90/bufr_read_header.f90
@@ -1,5 +1,5 @@
 !
-!Copyright 2005-2015 ECMWF.
+!Copyright 2005-2016 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.
diff --git a/examples/F90/bufr_read_header.sh b/examples/F90/bufr_read_header.sh
index b539011..52a3f5c 100755
--- a/examples/F90/bufr_read_header.sh
+++ b/examples/F90/bufr_read_header.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -27,7 +27,7 @@ fRef=${f}.header.ref
 REDIRECT=/dev/null
 
 #Write the values into a file and compare with reference
-${examples_dir}/f_bufr_read_header  $f 2> $REDIRECT > $fTmp
+${examples_dir}/eccodes_f_bufr_read_header  $f 2> $REDIRECT > $fTmp
 
 #We compare output to the reference by ignoring the whitespaces 
 diff -w $fRef $fTmp >$REDIRECT 2> $REDIRECT
diff --git a/examples/F90/bufr_read_scatterometer.f90 b/examples/F90/bufr_read_scatterometer.f90
index 1a896ec..e0c88ef 100644
--- a/examples/F90/bufr_read_scatterometer.f90
+++ b/examples/F90/bufr_read_scatterometer.f90
@@ -1,5 +1,5 @@
 !
-!Copyright 2005-2015 ECMWF.
+!Copyright 2005-2016 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.
@@ -24,8 +24,9 @@ integer            :: ifile
 integer            :: iret
 integer            :: ibufr
 integer            :: i, count=0
-integer(kind=4)    :: numObs
+integer(kind=4)    :: numObs,ii
 real(kind=8), dimension(:), allocatable :: latVal,lonVal,bscatterVal
+real(kind=8), dimension(:), allocatable :: year
 
   call codes_open_file(ifile,'../../data/bufr/asca_139.bufr','r')
 
@@ -35,7 +36,7 @@ real(kind=8), dimension(:), allocatable :: latVal,lonVal,bscatterVal
 
   do while (iret/=CODES_END_OF_FILE)
 
-    write(*,*) 'message: ',count
+    write(*,'(A,I3)') 'message: ',count
 
     ! we need to instruct ecCodes to expand all the descriptors 
     ! i.e. unpack the data values
@@ -51,7 +52,7 @@ real(kind=8), dimension(:), allocatable :: latVal,lonVal,bscatterVal
     ! Read the total number of subsets.
     call codes_get(ibufr,'numberOfSubsets',numObs)
 
-    write(*,*) "Number of values:",numObs
+    write(*,'(A,I5)') "Number of values:",numObs
  
     !Get latitude (for all the subsets)
     call codes_get(ibufr,'latitude',latVal);
@@ -59,6 +60,12 @@ real(kind=8), dimension(:), allocatable :: latVal,lonVal,bscatterVal
     !Get longitude (for all the subsets)
     call codes_get(ibufr,'latitude',lonVal);
      
+    allocate(year(numObs))
+    call codes_get(ibufr,'year',year);
+    do ii= 1, size(year)
+      write(*,'(A,I4,A,F8.1)') 'year(',ii,')=',year(ii)
+    enddo
+
     !Get backScatter for beam two. We use an access by condition for this key.
     !(for all the subsets)
     call codes_get(ibufr,'/beamIdentifier=2/backscatter',bscatterVal);
@@ -74,7 +81,7 @@ real(kind=8), dimension(:), allocatable :: latVal,lonVal,bscatterVal
     write(*,*) "--------------------------------------" 
      
     do i=1,numObs
-        write(*,*) i,latVal(i),lonVal(i),bscatterVal(i)
+        write(*,'(I4,3F10.5)') i,latVal(i),lonVal(i),bscatterVal(i)
     end do 
      
     ! free arrays 
diff --git a/examples/F90/bufr_read_scatterometer.sh b/examples/F90/bufr_read_scatterometer.sh
index 310838b..b270cd6 100755
--- a/examples/F90/bufr_read_scatterometer.sh
+++ b/examples/F90/bufr_read_scatterometer.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -18,18 +18,16 @@ label="bufr_read_scatterometer_f"
 fTmp=${label}.tmp.txt
 rm -f $fTmp | true
 
-#We check "asca_139.bufr". The path is
-#hardcoded in the example
+#We check "asca_139.bufr". The path is hardcoded in the example
 
 REDIRECT=/dev/null
 
 #Write the key values into a file
-${examples_dir}/f_bufr_read_scatterometer 2> $REDIRECT > $fTmp
+${examples_dir}/eccodes_f_bufr_read_scatterometer 2> $REDIRECT > $fTmp
 
-#TODO: check the results
-
-#cat  $fTmp
+# check the results
+REFERENCE_FILE=bufr_read_scatterometer_f.ref
+diff $REFERENCE_FILE $fTmp
 
 #Clean up
-rm -f $fTmp | true
-
+rm -f $fTmp
diff --git a/examples/F90/bufr_read_scatterometer_f.ref b/examples/F90/bufr_read_scatterometer_f.ref
new file mode 100644
index 0000000..6b52a98
--- /dev/null
+++ b/examples/F90/bufr_read_scatterometer_f.ref
@@ -0,0 +1,4036 @@
+message:   0
+Number of values: 2016
+year(   1)=  2012.0
+year(   2)=  2012.0
+year(   3)=  2012.0
+year(   4)=  2012.0
+year(   5)=  2012.0
+year(   6)=  2012.0
+year(   7)=  2012.0
+year(   8)=  2012.0
+year(   9)=  2012.0
+year(  10)=  2012.0
+year(  11)=  2012.0
+year(  12)=  2012.0
+year(  13)=  2012.0
+year(  14)=  2012.0
+year(  15)=  2012.0
+year(  16)=  2012.0
+year(  17)=  2012.0
+year(  18)=  2012.0
+year(  19)=  2012.0
+year(  20)=  2012.0
+year(  21)=  2012.0
+year(  22)=  2012.0
+year(  23)=  2012.0
+year(  24)=  2012.0
+year(  25)=  2012.0
+year(  26)=  2012.0
+year(  27)=  2012.0
+year(  28)=  2012.0
+year(  29)=  2012.0
+year(  30)=  2012.0
+year(  31)=  2012.0
+year(  32)=  2012.0
+year(  33)=  2012.0
+year(  34)=  2012.0
+year(  35)=  2012.0
+year(  36)=  2012.0
+year(  37)=  2012.0
+year(  38)=  2012.0
+year(  39)=  2012.0
+year(  40)=  2012.0
+year(  41)=  2012.0
+year(  42)=  2012.0
+year(  43)=  2012.0
+year(  44)=  2012.0
+year(  45)=  2012.0
+year(  46)=  2012.0
+year(  47)=  2012.0
+year(  48)=  2012.0
+year(  49)=  2012.0
+year(  50)=  2012.0
+year(  51)=  2012.0
+year(  52)=  2012.0
+year(  53)=  2012.0
+year(  54)=  2012.0
+year(  55)=  2012.0
+year(  56)=  2012.0
+year(  57)=  2012.0
+year(  58)=  2012.0
+year(  59)=  2012.0
+year(  60)=  2012.0
+year(  61)=  2012.0
+year(  62)=  2012.0
+year(  63)=  2012.0
+year(  64)=  2012.0
+year(  65)=  2012.0
+year(  66)=  2012.0
+year(  67)=  2012.0
+year(  68)=  2012.0
+year(  69)=  2012.0
+year(  70)=  2012.0
+year(  71)=  2012.0
+year(  72)=  2012.0
+year(  73)=  2012.0
+year(  74)=  2012.0
+year(  75)=  2012.0
+year(  76)=  2012.0
+year(  77)=  2012.0
+year(  78)=  2012.0
+year(  79)=  2012.0
+year(  80)=  2012.0
+year(  81)=  2012.0
+year(  82)=  2012.0
+year(  83)=  2012.0
+year(  84)=  2012.0
+year(  85)=  2012.0
+year(  86)=  2012.0
+year(  87)=  2012.0
+year(  88)=  2012.0
+year(  89)=  2012.0
+year(  90)=  2012.0
+year(  91)=  2012.0
+year(  92)=  2012.0
+year(  93)=  2012.0
+year(  94)=  2012.0
+year(  95)=  2012.0
+year(  96)=  2012.0
+year(  97)=  2012.0
+year(  98)=  2012.0
+year(  99)=  2012.0
+year( 100)=  2012.0
+year( 101)=  2012.0
+year( 102)=  2012.0
+year( 103)=  2012.0
+year( 104)=  2012.0
+year( 105)=  2012.0
+year( 106)=  2012.0
+year( 107)=  2012.0
+year( 108)=  2012.0
+year( 109)=  2012.0
+year( 110)=  2012.0
+year( 111)=  2012.0
+year( 112)=  2012.0
+year( 113)=  2012.0
+year( 114)=  2012.0
+year( 115)=  2012.0
+year( 116)=  2012.0
+year( 117)=  2012.0
+year( 118)=  2012.0
+year( 119)=  2012.0
+year( 120)=  2012.0
+year( 121)=  2012.0
+year( 122)=  2012.0
+year( 123)=  2012.0
+year( 124)=  2012.0
+year( 125)=  2012.0
+year( 126)=  2012.0
+year( 127)=  2012.0
+year( 128)=  2012.0
+year( 129)=  2012.0
+year( 130)=  2012.0
+year( 131)=  2012.0
+year( 132)=  2012.0
+year( 133)=  2012.0
+year( 134)=  2012.0
+year( 135)=  2012.0
+year( 136)=  2012.0
+year( 137)=  2012.0
+year( 138)=  2012.0
+year( 139)=  2012.0
+year( 140)=  2012.0
+year( 141)=  2012.0
+year( 142)=  2012.0
+year( 143)=  2012.0
+year( 144)=  2012.0
+year( 145)=  2012.0
+year( 146)=  2012.0
+year( 147)=  2012.0
+year( 148)=  2012.0
+year( 149)=  2012.0
+year( 150)=  2012.0
+year( 151)=  2012.0
+year( 152)=  2012.0
+year( 153)=  2012.0
+year( 154)=  2012.0
+year( 155)=  2012.0
+year( 156)=  2012.0
+year( 157)=  2012.0
+year( 158)=  2012.0
+year( 159)=  2012.0
+year( 160)=  2012.0
+year( 161)=  2012.0
+year( 162)=  2012.0
+year( 163)=  2012.0
+year( 164)=  2012.0
+year( 165)=  2012.0
+year( 166)=  2012.0
+year( 167)=  2012.0
+year( 168)=  2012.0
+year( 169)=  2012.0
+year( 170)=  2012.0
+year( 171)=  2012.0
+year( 172)=  2012.0
+year( 173)=  2012.0
+year( 174)=  2012.0
+year( 175)=  2012.0
+year( 176)=  2012.0
+year( 177)=  2012.0
+year( 178)=  2012.0
+year( 179)=  2012.0
+year( 180)=  2012.0
+year( 181)=  2012.0
+year( 182)=  2012.0
+year( 183)=  2012.0
+year( 184)=  2012.0
+year( 185)=  2012.0
+year( 186)=  2012.0
+year( 187)=  2012.0
+year( 188)=  2012.0
+year( 189)=  2012.0
+year( 190)=  2012.0
+year( 191)=  2012.0
+year( 192)=  2012.0
+year( 193)=  2012.0
+year( 194)=  2012.0
+year( 195)=  2012.0
+year( 196)=  2012.0
+year( 197)=  2012.0
+year( 198)=  2012.0
+year( 199)=  2012.0
+year( 200)=  2012.0
+year( 201)=  2012.0
+year( 202)=  2012.0
+year( 203)=  2012.0
+year( 204)=  2012.0
+year( 205)=  2012.0
+year( 206)=  2012.0
+year( 207)=  2012.0
+year( 208)=  2012.0
+year( 209)=  2012.0
+year( 210)=  2012.0
+year( 211)=  2012.0
+year( 212)=  2012.0
+year( 213)=  2012.0
+year( 214)=  2012.0
+year( 215)=  2012.0
+year( 216)=  2012.0
+year( 217)=  2012.0
+year( 218)=  2012.0
+year( 219)=  2012.0
+year( 220)=  2012.0
+year( 221)=  2012.0
+year( 222)=  2012.0
+year( 223)=  2012.0
+year( 224)=  2012.0
+year( 225)=  2012.0
+year( 226)=  2012.0
+year( 227)=  2012.0
+year( 228)=  2012.0
+year( 229)=  2012.0
+year( 230)=  2012.0
+year( 231)=  2012.0
+year( 232)=  2012.0
+year( 233)=  2012.0
+year( 234)=  2012.0
+year( 235)=  2012.0
+year( 236)=  2012.0
+year( 237)=  2012.0
+year( 238)=  2012.0
+year( 239)=  2012.0
+year( 240)=  2012.0
+year( 241)=  2012.0
+year( 242)=  2012.0
+year( 243)=  2012.0
+year( 244)=  2012.0
+year( 245)=  2012.0
+year( 246)=  2012.0
+year( 247)=  2012.0
+year( 248)=  2012.0
+year( 249)=  2012.0
+year( 250)=  2012.0
+year( 251)=  2012.0
+year( 252)=  2012.0
+year( 253)=  2012.0
+year( 254)=  2012.0
+year( 255)=  2012.0
+year( 256)=  2012.0
+year( 257)=  2012.0
+year( 258)=  2012.0
+year( 259)=  2012.0
+year( 260)=  2012.0
+year( 261)=  2012.0
+year( 262)=  2012.0
+year( 263)=  2012.0
+year( 264)=  2012.0
+year( 265)=  2012.0
+year( 266)=  2012.0
+year( 267)=  2012.0
+year( 268)=  2012.0
+year( 269)=  2012.0
+year( 270)=  2012.0
+year( 271)=  2012.0
+year( 272)=  2012.0
+year( 273)=  2012.0
+year( 274)=  2012.0
+year( 275)=  2012.0
+year( 276)=  2012.0
+year( 277)=  2012.0
+year( 278)=  2012.0
+year( 279)=  2012.0
+year( 280)=  2012.0
+year( 281)=  2012.0
+year( 282)=  2012.0
+year( 283)=  2012.0
+year( 284)=  2012.0
+year( 285)=  2012.0
+year( 286)=  2012.0
+year( 287)=  2012.0
+year( 288)=  2012.0
+year( 289)=  2012.0
+year( 290)=  2012.0
+year( 291)=  2012.0
+year( 292)=  2012.0
+year( 293)=  2012.0
+year( 294)=  2012.0
+year( 295)=  2012.0
+year( 296)=  2012.0
+year( 297)=  2012.0
+year( 298)=  2012.0
+year( 299)=  2012.0
+year( 300)=  2012.0
+year( 301)=  2012.0
+year( 302)=  2012.0
+year( 303)=  2012.0
+year( 304)=  2012.0
+year( 305)=  2012.0
+year( 306)=  2012.0
+year( 307)=  2012.0
+year( 308)=  2012.0
+year( 309)=  2012.0
+year( 310)=  2012.0
+year( 311)=  2012.0
+year( 312)=  2012.0
+year( 313)=  2012.0
+year( 314)=  2012.0
+year( 315)=  2012.0
+year( 316)=  2012.0
+year( 317)=  2012.0
+year( 318)=  2012.0
+year( 319)=  2012.0
+year( 320)=  2012.0
+year( 321)=  2012.0
+year( 322)=  2012.0
+year( 323)=  2012.0
+year( 324)=  2012.0
+year( 325)=  2012.0
+year( 326)=  2012.0
+year( 327)=  2012.0
+year( 328)=  2012.0
+year( 329)=  2012.0
+year( 330)=  2012.0
+year( 331)=  2012.0
+year( 332)=  2012.0
+year( 333)=  2012.0
+year( 334)=  2012.0
+year( 335)=  2012.0
+year( 336)=  2012.0
+year( 337)=  2012.0
+year( 338)=  2012.0
+year( 339)=  2012.0
+year( 340)=  2012.0
+year( 341)=  2012.0
+year( 342)=  2012.0
+year( 343)=  2012.0
+year( 344)=  2012.0
+year( 345)=  2012.0
+year( 346)=  2012.0
+year( 347)=  2012.0
+year( 348)=  2012.0
+year( 349)=  2012.0
+year( 350)=  2012.0
+year( 351)=  2012.0
+year( 352)=  2012.0
+year( 353)=  2012.0
+year( 354)=  2012.0
+year( 355)=  2012.0
+year( 356)=  2012.0
+year( 357)=  2012.0
+year( 358)=  2012.0
+year( 359)=  2012.0
+year( 360)=  2012.0
+year( 361)=  2012.0
+year( 362)=  2012.0
+year( 363)=  2012.0
+year( 364)=  2012.0
+year( 365)=  2012.0
+year( 366)=  2012.0
+year( 367)=  2012.0
+year( 368)=  2012.0
+year( 369)=  2012.0
+year( 370)=  2012.0
+year( 371)=  2012.0
+year( 372)=  2012.0
+year( 373)=  2012.0
+year( 374)=  2012.0
+year( 375)=  2012.0
+year( 376)=  2012.0
+year( 377)=  2012.0
+year( 378)=  2012.0
+year( 379)=  2012.0
+year( 380)=  2012.0
+year( 381)=  2012.0
+year( 382)=  2012.0
+year( 383)=  2012.0
+year( 384)=  2012.0
+year( 385)=  2012.0
+year( 386)=  2012.0
+year( 387)=  2012.0
+year( 388)=  2012.0
+year( 389)=  2012.0
+year( 390)=  2012.0
+year( 391)=  2012.0
+year( 392)=  2012.0
+year( 393)=  2012.0
+year( 394)=  2012.0
+year( 395)=  2012.0
+year( 396)=  2012.0
+year( 397)=  2012.0
+year( 398)=  2012.0
+year( 399)=  2012.0
+year( 400)=  2012.0
+year( 401)=  2012.0
+year( 402)=  2012.0
+year( 403)=  2012.0
+year( 404)=  2012.0
+year( 405)=  2012.0
+year( 406)=  2012.0
+year( 407)=  2012.0
+year( 408)=  2012.0
+year( 409)=  2012.0
+year( 410)=  2012.0
+year( 411)=  2012.0
+year( 412)=  2012.0
+year( 413)=  2012.0
+year( 414)=  2012.0
+year( 415)=  2012.0
+year( 416)=  2012.0
+year( 417)=  2012.0
+year( 418)=  2012.0
+year( 419)=  2012.0
+year( 420)=  2012.0
+year( 421)=  2012.0
+year( 422)=  2012.0
+year( 423)=  2012.0
+year( 424)=  2012.0
+year( 425)=  2012.0
+year( 426)=  2012.0
+year( 427)=  2012.0
+year( 428)=  2012.0
+year( 429)=  2012.0
+year( 430)=  2012.0
+year( 431)=  2012.0
+year( 432)=  2012.0
+year( 433)=  2012.0
+year( 434)=  2012.0
+year( 435)=  2012.0
+year( 436)=  2012.0
+year( 437)=  2012.0
+year( 438)=  2012.0
+year( 439)=  2012.0
+year( 440)=  2012.0
+year( 441)=  2012.0
+year( 442)=  2012.0
+year( 443)=  2012.0
+year( 444)=  2012.0
+year( 445)=  2012.0
+year( 446)=  2012.0
+year( 447)=  2012.0
+year( 448)=  2012.0
+year( 449)=  2012.0
+year( 450)=  2012.0
+year( 451)=  2012.0
+year( 452)=  2012.0
+year( 453)=  2012.0
+year( 454)=  2012.0
+year( 455)=  2012.0
+year( 456)=  2012.0
+year( 457)=  2012.0
+year( 458)=  2012.0
+year( 459)=  2012.0
+year( 460)=  2012.0
+year( 461)=  2012.0
+year( 462)=  2012.0
+year( 463)=  2012.0
+year( 464)=  2012.0
+year( 465)=  2012.0
+year( 466)=  2012.0
+year( 467)=  2012.0
+year( 468)=  2012.0
+year( 469)=  2012.0
+year( 470)=  2012.0
+year( 471)=  2012.0
+year( 472)=  2012.0
+year( 473)=  2012.0
+year( 474)=  2012.0
+year( 475)=  2012.0
+year( 476)=  2012.0
+year( 477)=  2012.0
+year( 478)=  2012.0
+year( 479)=  2012.0
+year( 480)=  2012.0
+year( 481)=  2012.0
+year( 482)=  2012.0
+year( 483)=  2012.0
+year( 484)=  2012.0
+year( 485)=  2012.0
+year( 486)=  2012.0
+year( 487)=  2012.0
+year( 488)=  2012.0
+year( 489)=  2012.0
+year( 490)=  2012.0
+year( 491)=  2012.0
+year( 492)=  2012.0
+year( 493)=  2012.0
+year( 494)=  2012.0
+year( 495)=  2012.0
+year( 496)=  2012.0
+year( 497)=  2012.0
+year( 498)=  2012.0
+year( 499)=  2012.0
+year( 500)=  2012.0
+year( 501)=  2012.0
+year( 502)=  2012.0
+year( 503)=  2012.0
+year( 504)=  2012.0
+year( 505)=  2012.0
+year( 506)=  2012.0
+year( 507)=  2012.0
+year( 508)=  2012.0
+year( 509)=  2012.0
+year( 510)=  2012.0
+year( 511)=  2012.0
+year( 512)=  2012.0
+year( 513)=  2012.0
+year( 514)=  2012.0
+year( 515)=  2012.0
+year( 516)=  2012.0
+year( 517)=  2012.0
+year( 518)=  2012.0
+year( 519)=  2012.0
+year( 520)=  2012.0
+year( 521)=  2012.0
+year( 522)=  2012.0
+year( 523)=  2012.0
+year( 524)=  2012.0
+year( 525)=  2012.0
+year( 526)=  2012.0
+year( 527)=  2012.0
+year( 528)=  2012.0
+year( 529)=  2012.0
+year( 530)=  2012.0
+year( 531)=  2012.0
+year( 532)=  2012.0
+year( 533)=  2012.0
+year( 534)=  2012.0
+year( 535)=  2012.0
+year( 536)=  2012.0
+year( 537)=  2012.0
+year( 538)=  2012.0
+year( 539)=  2012.0
+year( 540)=  2012.0
+year( 541)=  2012.0
+year( 542)=  2012.0
+year( 543)=  2012.0
+year( 544)=  2012.0
+year( 545)=  2012.0
+year( 546)=  2012.0
+year( 547)=  2012.0
+year( 548)=  2012.0
+year( 549)=  2012.0
+year( 550)=  2012.0
+year( 551)=  2012.0
+year( 552)=  2012.0
+year( 553)=  2012.0
+year( 554)=  2012.0
+year( 555)=  2012.0
+year( 556)=  2012.0
+year( 557)=  2012.0
+year( 558)=  2012.0
+year( 559)=  2012.0
+year( 560)=  2012.0
+year( 561)=  2012.0
+year( 562)=  2012.0
+year( 563)=  2012.0
+year( 564)=  2012.0
+year( 565)=  2012.0
+year( 566)=  2012.0
+year( 567)=  2012.0
+year( 568)=  2012.0
+year( 569)=  2012.0
+year( 570)=  2012.0
+year( 571)=  2012.0
+year( 572)=  2012.0
+year( 573)=  2012.0
+year( 574)=  2012.0
+year( 575)=  2012.0
+year( 576)=  2012.0
+year( 577)=  2012.0
+year( 578)=  2012.0
+year( 579)=  2012.0
+year( 580)=  2012.0
+year( 581)=  2012.0
+year( 582)=  2012.0
+year( 583)=  2012.0
+year( 584)=  2012.0
+year( 585)=  2012.0
+year( 586)=  2012.0
+year( 587)=  2012.0
+year( 588)=  2012.0
+year( 589)=  2012.0
+year( 590)=  2012.0
+year( 591)=  2012.0
+year( 592)=  2012.0
+year( 593)=  2012.0
+year( 594)=  2012.0
+year( 595)=  2012.0
+year( 596)=  2012.0
+year( 597)=  2012.0
+year( 598)=  2012.0
+year( 599)=  2012.0
+year( 600)=  2012.0
+year( 601)=  2012.0
+year( 602)=  2012.0
+year( 603)=  2012.0
+year( 604)=  2012.0
+year( 605)=  2012.0
+year( 606)=  2012.0
+year( 607)=  2012.0
+year( 608)=  2012.0
+year( 609)=  2012.0
+year( 610)=  2012.0
+year( 611)=  2012.0
+year( 612)=  2012.0
+year( 613)=  2012.0
+year( 614)=  2012.0
+year( 615)=  2012.0
+year( 616)=  2012.0
+year( 617)=  2012.0
+year( 618)=  2012.0
+year( 619)=  2012.0
+year( 620)=  2012.0
+year( 621)=  2012.0
+year( 622)=  2012.0
+year( 623)=  2012.0
+year( 624)=  2012.0
+year( 625)=  2012.0
+year( 626)=  2012.0
+year( 627)=  2012.0
+year( 628)=  2012.0
+year( 629)=  2012.0
+year( 630)=  2012.0
+year( 631)=  2012.0
+year( 632)=  2012.0
+year( 633)=  2012.0
+year( 634)=  2012.0
+year( 635)=  2012.0
+year( 636)=  2012.0
+year( 637)=  2012.0
+year( 638)=  2012.0
+year( 639)=  2012.0
+year( 640)=  2012.0
+year( 641)=  2012.0
+year( 642)=  2012.0
+year( 643)=  2012.0
+year( 644)=  2012.0
+year( 645)=  2012.0
+year( 646)=  2012.0
+year( 647)=  2012.0
+year( 648)=  2012.0
+year( 649)=  2012.0
+year( 650)=  2012.0
+year( 651)=  2012.0
+year( 652)=  2012.0
+year( 653)=  2012.0
+year( 654)=  2012.0
+year( 655)=  2012.0
+year( 656)=  2012.0
+year( 657)=  2012.0
+year( 658)=  2012.0
+year( 659)=  2012.0
+year( 660)=  2012.0
+year( 661)=  2012.0
+year( 662)=  2012.0
+year( 663)=  2012.0
+year( 664)=  2012.0
+year( 665)=  2012.0
+year( 666)=  2012.0
+year( 667)=  2012.0
+year( 668)=  2012.0
+year( 669)=  2012.0
+year( 670)=  2012.0
+year( 671)=  2012.0
+year( 672)=  2012.0
+year( 673)=  2012.0
+year( 674)=  2012.0
+year( 675)=  2012.0
+year( 676)=  2012.0
+year( 677)=  2012.0
+year( 678)=  2012.0
+year( 679)=  2012.0
+year( 680)=  2012.0
+year( 681)=  2012.0
+year( 682)=  2012.0
+year( 683)=  2012.0
+year( 684)=  2012.0
+year( 685)=  2012.0
+year( 686)=  2012.0
+year( 687)=  2012.0
+year( 688)=  2012.0
+year( 689)=  2012.0
+year( 690)=  2012.0
+year( 691)=  2012.0
+year( 692)=  2012.0
+year( 693)=  2012.0
+year( 694)=  2012.0
+year( 695)=  2012.0
+year( 696)=  2012.0
+year( 697)=  2012.0
+year( 698)=  2012.0
+year( 699)=  2012.0
+year( 700)=  2012.0
+year( 701)=  2012.0
+year( 702)=  2012.0
+year( 703)=  2012.0
+year( 704)=  2012.0
+year( 705)=  2012.0
+year( 706)=  2012.0
+year( 707)=  2012.0
+year( 708)=  2012.0
+year( 709)=  2012.0
+year( 710)=  2012.0
+year( 711)=  2012.0
+year( 712)=  2012.0
+year( 713)=  2012.0
+year( 714)=  2012.0
+year( 715)=  2012.0
+year( 716)=  2012.0
+year( 717)=  2012.0
+year( 718)=  2012.0
+year( 719)=  2012.0
+year( 720)=  2012.0
+year( 721)=  2012.0
+year( 722)=  2012.0
+year( 723)=  2012.0
+year( 724)=  2012.0
+year( 725)=  2012.0
+year( 726)=  2012.0
+year( 727)=  2012.0
+year( 728)=  2012.0
+year( 729)=  2012.0
+year( 730)=  2012.0
+year( 731)=  2012.0
+year( 732)=  2012.0
+year( 733)=  2012.0
+year( 734)=  2012.0
+year( 735)=  2012.0
+year( 736)=  2012.0
+year( 737)=  2012.0
+year( 738)=  2012.0
+year( 739)=  2012.0
+year( 740)=  2012.0
+year( 741)=  2012.0
+year( 742)=  2012.0
+year( 743)=  2012.0
+year( 744)=  2012.0
+year( 745)=  2012.0
+year( 746)=  2012.0
+year( 747)=  2012.0
+year( 748)=  2012.0
+year( 749)=  2012.0
+year( 750)=  2012.0
+year( 751)=  2012.0
+year( 752)=  2012.0
+year( 753)=  2012.0
+year( 754)=  2012.0
+year( 755)=  2012.0
+year( 756)=  2012.0
+year( 757)=  2012.0
+year( 758)=  2012.0
+year( 759)=  2012.0
+year( 760)=  2012.0
+year( 761)=  2012.0
+year( 762)=  2012.0
+year( 763)=  2012.0
+year( 764)=  2012.0
+year( 765)=  2012.0
+year( 766)=  2012.0
+year( 767)=  2012.0
+year( 768)=  2012.0
+year( 769)=  2012.0
+year( 770)=  2012.0
+year( 771)=  2012.0
+year( 772)=  2012.0
+year( 773)=  2012.0
+year( 774)=  2012.0
+year( 775)=  2012.0
+year( 776)=  2012.0
+year( 777)=  2012.0
+year( 778)=  2012.0
+year( 779)=  2012.0
+year( 780)=  2012.0
+year( 781)=  2012.0
+year( 782)=  2012.0
+year( 783)=  2012.0
+year( 784)=  2012.0
+year( 785)=  2012.0
+year( 786)=  2012.0
+year( 787)=  2012.0
+year( 788)=  2012.0
+year( 789)=  2012.0
+year( 790)=  2012.0
+year( 791)=  2012.0
+year( 792)=  2012.0
+year( 793)=  2012.0
+year( 794)=  2012.0
+year( 795)=  2012.0
+year( 796)=  2012.0
+year( 797)=  2012.0
+year( 798)=  2012.0
+year( 799)=  2012.0
+year( 800)=  2012.0
+year( 801)=  2012.0
+year( 802)=  2012.0
+year( 803)=  2012.0
+year( 804)=  2012.0
+year( 805)=  2012.0
+year( 806)=  2012.0
+year( 807)=  2012.0
+year( 808)=  2012.0
+year( 809)=  2012.0
+year( 810)=  2012.0
+year( 811)=  2012.0
+year( 812)=  2012.0
+year( 813)=  2012.0
+year( 814)=  2012.0
+year( 815)=  2012.0
+year( 816)=  2012.0
+year( 817)=  2012.0
+year( 818)=  2012.0
+year( 819)=  2012.0
+year( 820)=  2012.0
+year( 821)=  2012.0
+year( 822)=  2012.0
+year( 823)=  2012.0
+year( 824)=  2012.0
+year( 825)=  2012.0
+year( 826)=  2012.0
+year( 827)=  2012.0
+year( 828)=  2012.0
+year( 829)=  2012.0
+year( 830)=  2012.0
+year( 831)=  2012.0
+year( 832)=  2012.0
+year( 833)=  2012.0
+year( 834)=  2012.0
+year( 835)=  2012.0
+year( 836)=  2012.0
+year( 837)=  2012.0
+year( 838)=  2012.0
+year( 839)=  2012.0
+year( 840)=  2012.0
+year( 841)=  2012.0
+year( 842)=  2012.0
+year( 843)=  2012.0
+year( 844)=  2012.0
+year( 845)=  2012.0
+year( 846)=  2012.0
+year( 847)=  2012.0
+year( 848)=  2012.0
+year( 849)=  2012.0
+year( 850)=  2012.0
+year( 851)=  2012.0
+year( 852)=  2012.0
+year( 853)=  2012.0
+year( 854)=  2012.0
+year( 855)=  2012.0
+year( 856)=  2012.0
+year( 857)=  2012.0
+year( 858)=  2012.0
+year( 859)=  2012.0
+year( 860)=  2012.0
+year( 861)=  2012.0
+year( 862)=  2012.0
+year( 863)=  2012.0
+year( 864)=  2012.0
+year( 865)=  2012.0
+year( 866)=  2012.0
+year( 867)=  2012.0
+year( 868)=  2012.0
+year( 869)=  2012.0
+year( 870)=  2012.0
+year( 871)=  2012.0
+year( 872)=  2012.0
+year( 873)=  2012.0
+year( 874)=  2012.0
+year( 875)=  2012.0
+year( 876)=  2012.0
+year( 877)=  2012.0
+year( 878)=  2012.0
+year( 879)=  2012.0
+year( 880)=  2012.0
+year( 881)=  2012.0
+year( 882)=  2012.0
+year( 883)=  2012.0
+year( 884)=  2012.0
+year( 885)=  2012.0
+year( 886)=  2012.0
+year( 887)=  2012.0
+year( 888)=  2012.0
+year( 889)=  2012.0
+year( 890)=  2012.0
+year( 891)=  2012.0
+year( 892)=  2012.0
+year( 893)=  2012.0
+year( 894)=  2012.0
+year( 895)=  2012.0
+year( 896)=  2012.0
+year( 897)=  2012.0
+year( 898)=  2012.0
+year( 899)=  2012.0
+year( 900)=  2012.0
+year( 901)=  2012.0
+year( 902)=  2012.0
+year( 903)=  2012.0
+year( 904)=  2012.0
+year( 905)=  2012.0
+year( 906)=  2012.0
+year( 907)=  2012.0
+year( 908)=  2012.0
+year( 909)=  2012.0
+year( 910)=  2012.0
+year( 911)=  2012.0
+year( 912)=  2012.0
+year( 913)=  2012.0
+year( 914)=  2012.0
+year( 915)=  2012.0
+year( 916)=  2012.0
+year( 917)=  2012.0
+year( 918)=  2012.0
+year( 919)=  2012.0
+year( 920)=  2012.0
+year( 921)=  2012.0
+year( 922)=  2012.0
+year( 923)=  2012.0
+year( 924)=  2012.0
+year( 925)=  2012.0
+year( 926)=  2012.0
+year( 927)=  2012.0
+year( 928)=  2012.0
+year( 929)=  2012.0
+year( 930)=  2012.0
+year( 931)=  2012.0
+year( 932)=  2012.0
+year( 933)=  2012.0
+year( 934)=  2012.0
+year( 935)=  2012.0
+year( 936)=  2012.0
+year( 937)=  2012.0
+year( 938)=  2012.0
+year( 939)=  2012.0
+year( 940)=  2012.0
+year( 941)=  2012.0
+year( 942)=  2012.0
+year( 943)=  2012.0
+year( 944)=  2012.0
+year( 945)=  2012.0
+year( 946)=  2012.0
+year( 947)=  2012.0
+year( 948)=  2012.0
+year( 949)=  2012.0
+year( 950)=  2012.0
+year( 951)=  2012.0
+year( 952)=  2012.0
+year( 953)=  2012.0
+year( 954)=  2012.0
+year( 955)=  2012.0
+year( 956)=  2012.0
+year( 957)=  2012.0
+year( 958)=  2012.0
+year( 959)=  2012.0
+year( 960)=  2012.0
+year( 961)=  2012.0
+year( 962)=  2012.0
+year( 963)=  2012.0
+year( 964)=  2012.0
+year( 965)=  2012.0
+year( 966)=  2012.0
+year( 967)=  2012.0
+year( 968)=  2012.0
+year( 969)=  2012.0
+year( 970)=  2012.0
+year( 971)=  2012.0
+year( 972)=  2012.0
+year( 973)=  2012.0
+year( 974)=  2012.0
+year( 975)=  2012.0
+year( 976)=  2012.0
+year( 977)=  2012.0
+year( 978)=  2012.0
+year( 979)=  2012.0
+year( 980)=  2012.0
+year( 981)=  2012.0
+year( 982)=  2012.0
+year( 983)=  2012.0
+year( 984)=  2012.0
+year( 985)=  2012.0
+year( 986)=  2012.0
+year( 987)=  2012.0
+year( 988)=  2012.0
+year( 989)=  2012.0
+year( 990)=  2012.0
+year( 991)=  2012.0
+year( 992)=  2012.0
+year( 993)=  2012.0
+year( 994)=  2012.0
+year( 995)=  2012.0
+year( 996)=  2012.0
+year( 997)=  2012.0
+year( 998)=  2012.0
+year( 999)=  2012.0
+year(1000)=  2012.0
+year(1001)=  2012.0
+year(1002)=  2012.0
+year(1003)=  2012.0
+year(1004)=  2012.0
+year(1005)=  2012.0
+year(1006)=  2012.0
+year(1007)=  2012.0
+year(1008)=  2012.0
+year(1009)=  2012.0
+year(1010)=  2012.0
+year(1011)=  2012.0
+year(1012)=  2012.0
+year(1013)=  2012.0
+year(1014)=  2012.0
+year(1015)=  2012.0
+year(1016)=  2012.0
+year(1017)=  2012.0
+year(1018)=  2012.0
+year(1019)=  2012.0
+year(1020)=  2012.0
+year(1021)=  2012.0
+year(1022)=  2012.0
+year(1023)=  2012.0
+year(1024)=  2012.0
+year(1025)=  2012.0
+year(1026)=  2012.0
+year(1027)=  2012.0
+year(1028)=  2012.0
+year(1029)=  2012.0
+year(1030)=  2012.0
+year(1031)=  2012.0
+year(1032)=  2012.0
+year(1033)=  2012.0
+year(1034)=  2012.0
+year(1035)=  2012.0
+year(1036)=  2012.0
+year(1037)=  2012.0
+year(1038)=  2012.0
+year(1039)=  2012.0
+year(1040)=  2012.0
+year(1041)=  2012.0
+year(1042)=  2012.0
+year(1043)=  2012.0
+year(1044)=  2012.0
+year(1045)=  2012.0
+year(1046)=  2012.0
+year(1047)=  2012.0
+year(1048)=  2012.0
+year(1049)=  2012.0
+year(1050)=  2012.0
+year(1051)=  2012.0
+year(1052)=  2012.0
+year(1053)=  2012.0
+year(1054)=  2012.0
+year(1055)=  2012.0
+year(1056)=  2012.0
+year(1057)=  2012.0
+year(1058)=  2012.0
+year(1059)=  2012.0
+year(1060)=  2012.0
+year(1061)=  2012.0
+year(1062)=  2012.0
+year(1063)=  2012.0
+year(1064)=  2012.0
+year(1065)=  2012.0
+year(1066)=  2012.0
+year(1067)=  2012.0
+year(1068)=  2012.0
+year(1069)=  2012.0
+year(1070)=  2012.0
+year(1071)=  2012.0
+year(1072)=  2012.0
+year(1073)=  2012.0
+year(1074)=  2012.0
+year(1075)=  2012.0
+year(1076)=  2012.0
+year(1077)=  2012.0
+year(1078)=  2012.0
+year(1079)=  2012.0
+year(1080)=  2012.0
+year(1081)=  2012.0
+year(1082)=  2012.0
+year(1083)=  2012.0
+year(1084)=  2012.0
+year(1085)=  2012.0
+year(1086)=  2012.0
+year(1087)=  2012.0
+year(1088)=  2012.0
+year(1089)=  2012.0
+year(1090)=  2012.0
+year(1091)=  2012.0
+year(1092)=  2012.0
+year(1093)=  2012.0
+year(1094)=  2012.0
+year(1095)=  2012.0
+year(1096)=  2012.0
+year(1097)=  2012.0
+year(1098)=  2012.0
+year(1099)=  2012.0
+year(1100)=  2012.0
+year(1101)=  2012.0
+year(1102)=  2012.0
+year(1103)=  2012.0
+year(1104)=  2012.0
+year(1105)=  2012.0
+year(1106)=  2012.0
+year(1107)=  2012.0
+year(1108)=  2012.0
+year(1109)=  2012.0
+year(1110)=  2012.0
+year(1111)=  2012.0
+year(1112)=  2012.0
+year(1113)=  2012.0
+year(1114)=  2012.0
+year(1115)=  2012.0
+year(1116)=  2012.0
+year(1117)=  2012.0
+year(1118)=  2012.0
+year(1119)=  2012.0
+year(1120)=  2012.0
+year(1121)=  2012.0
+year(1122)=  2012.0
+year(1123)=  2012.0
+year(1124)=  2012.0
+year(1125)=  2012.0
+year(1126)=  2012.0
+year(1127)=  2012.0
+year(1128)=  2012.0
+year(1129)=  2012.0
+year(1130)=  2012.0
+year(1131)=  2012.0
+year(1132)=  2012.0
+year(1133)=  2012.0
+year(1134)=  2012.0
+year(1135)=  2012.0
+year(1136)=  2012.0
+year(1137)=  2012.0
+year(1138)=  2012.0
+year(1139)=  2012.0
+year(1140)=  2012.0
+year(1141)=  2012.0
+year(1142)=  2012.0
+year(1143)=  2012.0
+year(1144)=  2012.0
+year(1145)=  2012.0
+year(1146)=  2012.0
+year(1147)=  2012.0
+year(1148)=  2012.0
+year(1149)=  2012.0
+year(1150)=  2012.0
+year(1151)=  2012.0
+year(1152)=  2012.0
+year(1153)=  2012.0
+year(1154)=  2012.0
+year(1155)=  2012.0
+year(1156)=  2012.0
+year(1157)=  2012.0
+year(1158)=  2012.0
+year(1159)=  2012.0
+year(1160)=  2012.0
+year(1161)=  2012.0
+year(1162)=  2012.0
+year(1163)=  2012.0
+year(1164)=  2012.0
+year(1165)=  2012.0
+year(1166)=  2012.0
+year(1167)=  2012.0
+year(1168)=  2012.0
+year(1169)=  2012.0
+year(1170)=  2012.0
+year(1171)=  2012.0
+year(1172)=  2012.0
+year(1173)=  2012.0
+year(1174)=  2012.0
+year(1175)=  2012.0
+year(1176)=  2012.0
+year(1177)=  2012.0
+year(1178)=  2012.0
+year(1179)=  2012.0
+year(1180)=  2012.0
+year(1181)=  2012.0
+year(1182)=  2012.0
+year(1183)=  2012.0
+year(1184)=  2012.0
+year(1185)=  2012.0
+year(1186)=  2012.0
+year(1187)=  2012.0
+year(1188)=  2012.0
+year(1189)=  2012.0
+year(1190)=  2012.0
+year(1191)=  2012.0
+year(1192)=  2012.0
+year(1193)=  2012.0
+year(1194)=  2012.0
+year(1195)=  2012.0
+year(1196)=  2012.0
+year(1197)=  2012.0
+year(1198)=  2012.0
+year(1199)=  2012.0
+year(1200)=  2012.0
+year(1201)=  2012.0
+year(1202)=  2012.0
+year(1203)=  2012.0
+year(1204)=  2012.0
+year(1205)=  2012.0
+year(1206)=  2012.0
+year(1207)=  2012.0
+year(1208)=  2012.0
+year(1209)=  2012.0
+year(1210)=  2012.0
+year(1211)=  2012.0
+year(1212)=  2012.0
+year(1213)=  2012.0
+year(1214)=  2012.0
+year(1215)=  2012.0
+year(1216)=  2012.0
+year(1217)=  2012.0
+year(1218)=  2012.0
+year(1219)=  2012.0
+year(1220)=  2012.0
+year(1221)=  2012.0
+year(1222)=  2012.0
+year(1223)=  2012.0
+year(1224)=  2012.0
+year(1225)=  2012.0
+year(1226)=  2012.0
+year(1227)=  2012.0
+year(1228)=  2012.0
+year(1229)=  2012.0
+year(1230)=  2012.0
+year(1231)=  2012.0
+year(1232)=  2012.0
+year(1233)=  2012.0
+year(1234)=  2012.0
+year(1235)=  2012.0
+year(1236)=  2012.0
+year(1237)=  2012.0
+year(1238)=  2012.0
+year(1239)=  2012.0
+year(1240)=  2012.0
+year(1241)=  2012.0
+year(1242)=  2012.0
+year(1243)=  2012.0
+year(1244)=  2012.0
+year(1245)=  2012.0
+year(1246)=  2012.0
+year(1247)=  2012.0
+year(1248)=  2012.0
+year(1249)=  2012.0
+year(1250)=  2012.0
+year(1251)=  2012.0
+year(1252)=  2012.0
+year(1253)=  2012.0
+year(1254)=  2012.0
+year(1255)=  2012.0
+year(1256)=  2012.0
+year(1257)=  2012.0
+year(1258)=  2012.0
+year(1259)=  2012.0
+year(1260)=  2012.0
+year(1261)=  2012.0
+year(1262)=  2012.0
+year(1263)=  2012.0
+year(1264)=  2012.0
+year(1265)=  2012.0
+year(1266)=  2012.0
+year(1267)=  2012.0
+year(1268)=  2012.0
+year(1269)=  2012.0
+year(1270)=  2012.0
+year(1271)=  2012.0
+year(1272)=  2012.0
+year(1273)=  2012.0
+year(1274)=  2012.0
+year(1275)=  2012.0
+year(1276)=  2012.0
+year(1277)=  2012.0
+year(1278)=  2012.0
+year(1279)=  2012.0
+year(1280)=  2012.0
+year(1281)=  2012.0
+year(1282)=  2012.0
+year(1283)=  2012.0
+year(1284)=  2012.0
+year(1285)=  2012.0
+year(1286)=  2012.0
+year(1287)=  2012.0
+year(1288)=  2012.0
+year(1289)=  2012.0
+year(1290)=  2012.0
+year(1291)=  2012.0
+year(1292)=  2012.0
+year(1293)=  2012.0
+year(1294)=  2012.0
+year(1295)=  2012.0
+year(1296)=  2012.0
+year(1297)=  2012.0
+year(1298)=  2012.0
+year(1299)=  2012.0
+year(1300)=  2012.0
+year(1301)=  2012.0
+year(1302)=  2012.0
+year(1303)=  2012.0
+year(1304)=  2012.0
+year(1305)=  2012.0
+year(1306)=  2012.0
+year(1307)=  2012.0
+year(1308)=  2012.0
+year(1309)=  2012.0
+year(1310)=  2012.0
+year(1311)=  2012.0
+year(1312)=  2012.0
+year(1313)=  2012.0
+year(1314)=  2012.0
+year(1315)=  2012.0
+year(1316)=  2012.0
+year(1317)=  2012.0
+year(1318)=  2012.0
+year(1319)=  2012.0
+year(1320)=  2012.0
+year(1321)=  2012.0
+year(1322)=  2012.0
+year(1323)=  2012.0
+year(1324)=  2012.0
+year(1325)=  2012.0
+year(1326)=  2012.0
+year(1327)=  2012.0
+year(1328)=  2012.0
+year(1329)=  2012.0
+year(1330)=  2012.0
+year(1331)=  2012.0
+year(1332)=  2012.0
+year(1333)=  2012.0
+year(1334)=  2012.0
+year(1335)=  2012.0
+year(1336)=  2012.0
+year(1337)=  2012.0
+year(1338)=  2012.0
+year(1339)=  2012.0
+year(1340)=  2012.0
+year(1341)=  2012.0
+year(1342)=  2012.0
+year(1343)=  2012.0
+year(1344)=  2012.0
+year(1345)=  2012.0
+year(1346)=  2012.0
+year(1347)=  2012.0
+year(1348)=  2012.0
+year(1349)=  2012.0
+year(1350)=  2012.0
+year(1351)=  2012.0
+year(1352)=  2012.0
+year(1353)=  2012.0
+year(1354)=  2012.0
+year(1355)=  2012.0
+year(1356)=  2012.0
+year(1357)=  2012.0
+year(1358)=  2012.0
+year(1359)=  2012.0
+year(1360)=  2012.0
+year(1361)=  2012.0
+year(1362)=  2012.0
+year(1363)=  2012.0
+year(1364)=  2012.0
+year(1365)=  2012.0
+year(1366)=  2012.0
+year(1367)=  2012.0
+year(1368)=  2012.0
+year(1369)=  2012.0
+year(1370)=  2012.0
+year(1371)=  2012.0
+year(1372)=  2012.0
+year(1373)=  2012.0
+year(1374)=  2012.0
+year(1375)=  2012.0
+year(1376)=  2012.0
+year(1377)=  2012.0
+year(1378)=  2012.0
+year(1379)=  2012.0
+year(1380)=  2012.0
+year(1381)=  2012.0
+year(1382)=  2012.0
+year(1383)=  2012.0
+year(1384)=  2012.0
+year(1385)=  2012.0
+year(1386)=  2012.0
+year(1387)=  2012.0
+year(1388)=  2012.0
+year(1389)=  2012.0
+year(1390)=  2012.0
+year(1391)=  2012.0
+year(1392)=  2012.0
+year(1393)=  2012.0
+year(1394)=  2012.0
+year(1395)=  2012.0
+year(1396)=  2012.0
+year(1397)=  2012.0
+year(1398)=  2012.0
+year(1399)=  2012.0
+year(1400)=  2012.0
+year(1401)=  2012.0
+year(1402)=  2012.0
+year(1403)=  2012.0
+year(1404)=  2012.0
+year(1405)=  2012.0
+year(1406)=  2012.0
+year(1407)=  2012.0
+year(1408)=  2012.0
+year(1409)=  2012.0
+year(1410)=  2012.0
+year(1411)=  2012.0
+year(1412)=  2012.0
+year(1413)=  2012.0
+year(1414)=  2012.0
+year(1415)=  2012.0
+year(1416)=  2012.0
+year(1417)=  2012.0
+year(1418)=  2012.0
+year(1419)=  2012.0
+year(1420)=  2012.0
+year(1421)=  2012.0
+year(1422)=  2012.0
+year(1423)=  2012.0
+year(1424)=  2012.0
+year(1425)=  2012.0
+year(1426)=  2012.0
+year(1427)=  2012.0
+year(1428)=  2012.0
+year(1429)=  2012.0
+year(1430)=  2012.0
+year(1431)=  2012.0
+year(1432)=  2012.0
+year(1433)=  2012.0
+year(1434)=  2012.0
+year(1435)=  2012.0
+year(1436)=  2012.0
+year(1437)=  2012.0
+year(1438)=  2012.0
+year(1439)=  2012.0
+year(1440)=  2012.0
+year(1441)=  2012.0
+year(1442)=  2012.0
+year(1443)=  2012.0
+year(1444)=  2012.0
+year(1445)=  2012.0
+year(1446)=  2012.0
+year(1447)=  2012.0
+year(1448)=  2012.0
+year(1449)=  2012.0
+year(1450)=  2012.0
+year(1451)=  2012.0
+year(1452)=  2012.0
+year(1453)=  2012.0
+year(1454)=  2012.0
+year(1455)=  2012.0
+year(1456)=  2012.0
+year(1457)=  2012.0
+year(1458)=  2012.0
+year(1459)=  2012.0
+year(1460)=  2012.0
+year(1461)=  2012.0
+year(1462)=  2012.0
+year(1463)=  2012.0
+year(1464)=  2012.0
+year(1465)=  2012.0
+year(1466)=  2012.0
+year(1467)=  2012.0
+year(1468)=  2012.0
+year(1469)=  2012.0
+year(1470)=  2012.0
+year(1471)=  2012.0
+year(1472)=  2012.0
+year(1473)=  2012.0
+year(1474)=  2012.0
+year(1475)=  2012.0
+year(1476)=  2012.0
+year(1477)=  2012.0
+year(1478)=  2012.0
+year(1479)=  2012.0
+year(1480)=  2012.0
+year(1481)=  2012.0
+year(1482)=  2012.0
+year(1483)=  2012.0
+year(1484)=  2012.0
+year(1485)=  2012.0
+year(1486)=  2012.0
+year(1487)=  2012.0
+year(1488)=  2012.0
+year(1489)=  2012.0
+year(1490)=  2012.0
+year(1491)=  2012.0
+year(1492)=  2012.0
+year(1493)=  2012.0
+year(1494)=  2012.0
+year(1495)=  2012.0
+year(1496)=  2012.0
+year(1497)=  2012.0
+year(1498)=  2012.0
+year(1499)=  2012.0
+year(1500)=  2012.0
+year(1501)=  2012.0
+year(1502)=  2012.0
+year(1503)=  2012.0
+year(1504)=  2012.0
+year(1505)=  2012.0
+year(1506)=  2012.0
+year(1507)=  2012.0
+year(1508)=  2012.0
+year(1509)=  2012.0
+year(1510)=  2012.0
+year(1511)=  2012.0
+year(1512)=  2012.0
+year(1513)=  2012.0
+year(1514)=  2012.0
+year(1515)=  2012.0
+year(1516)=  2012.0
+year(1517)=  2012.0
+year(1518)=  2012.0
+year(1519)=  2012.0
+year(1520)=  2012.0
+year(1521)=  2012.0
+year(1522)=  2012.0
+year(1523)=  2012.0
+year(1524)=  2012.0
+year(1525)=  2012.0
+year(1526)=  2012.0
+year(1527)=  2012.0
+year(1528)=  2012.0
+year(1529)=  2012.0
+year(1530)=  2012.0
+year(1531)=  2012.0
+year(1532)=  2012.0
+year(1533)=  2012.0
+year(1534)=  2012.0
+year(1535)=  2012.0
+year(1536)=  2012.0
+year(1537)=  2012.0
+year(1538)=  2012.0
+year(1539)=  2012.0
+year(1540)=  2012.0
+year(1541)=  2012.0
+year(1542)=  2012.0
+year(1543)=  2012.0
+year(1544)=  2012.0
+year(1545)=  2012.0
+year(1546)=  2012.0
+year(1547)=  2012.0
+year(1548)=  2012.0
+year(1549)=  2012.0
+year(1550)=  2012.0
+year(1551)=  2012.0
+year(1552)=  2012.0
+year(1553)=  2012.0
+year(1554)=  2012.0
+year(1555)=  2012.0
+year(1556)=  2012.0
+year(1557)=  2012.0
+year(1558)=  2012.0
+year(1559)=  2012.0
+year(1560)=  2012.0
+year(1561)=  2012.0
+year(1562)=  2012.0
+year(1563)=  2012.0
+year(1564)=  2012.0
+year(1565)=  2012.0
+year(1566)=  2012.0
+year(1567)=  2012.0
+year(1568)=  2012.0
+year(1569)=  2012.0
+year(1570)=  2012.0
+year(1571)=  2012.0
+year(1572)=  2012.0
+year(1573)=  2012.0
+year(1574)=  2012.0
+year(1575)=  2012.0
+year(1576)=  2012.0
+year(1577)=  2012.0
+year(1578)=  2012.0
+year(1579)=  2012.0
+year(1580)=  2012.0
+year(1581)=  2012.0
+year(1582)=  2012.0
+year(1583)=  2012.0
+year(1584)=  2012.0
+year(1585)=  2012.0
+year(1586)=  2012.0
+year(1587)=  2012.0
+year(1588)=  2012.0
+year(1589)=  2012.0
+year(1590)=  2012.0
+year(1591)=  2012.0
+year(1592)=  2012.0
+year(1593)=  2012.0
+year(1594)=  2012.0
+year(1595)=  2012.0
+year(1596)=  2012.0
+year(1597)=  2012.0
+year(1598)=  2012.0
+year(1599)=  2012.0
+year(1600)=  2012.0
+year(1601)=  2012.0
+year(1602)=  2012.0
+year(1603)=  2012.0
+year(1604)=  2012.0
+year(1605)=  2012.0
+year(1606)=  2012.0
+year(1607)=  2012.0
+year(1608)=  2012.0
+year(1609)=  2012.0
+year(1610)=  2012.0
+year(1611)=  2012.0
+year(1612)=  2012.0
+year(1613)=  2012.0
+year(1614)=  2012.0
+year(1615)=  2012.0
+year(1616)=  2012.0
+year(1617)=  2012.0
+year(1618)=  2012.0
+year(1619)=  2012.0
+year(1620)=  2012.0
+year(1621)=  2012.0
+year(1622)=  2012.0
+year(1623)=  2012.0
+year(1624)=  2012.0
+year(1625)=  2012.0
+year(1626)=  2012.0
+year(1627)=  2012.0
+year(1628)=  2012.0
+year(1629)=  2012.0
+year(1630)=  2012.0
+year(1631)=  2012.0
+year(1632)=  2012.0
+year(1633)=  2012.0
+year(1634)=  2012.0
+year(1635)=  2012.0
+year(1636)=  2012.0
+year(1637)=  2012.0
+year(1638)=  2012.0
+year(1639)=  2012.0
+year(1640)=  2012.0
+year(1641)=  2012.0
+year(1642)=  2012.0
+year(1643)=  2012.0
+year(1644)=  2012.0
+year(1645)=  2012.0
+year(1646)=  2012.0
+year(1647)=  2012.0
+year(1648)=  2012.0
+year(1649)=  2012.0
+year(1650)=  2012.0
+year(1651)=  2012.0
+year(1652)=  2012.0
+year(1653)=  2012.0
+year(1654)=  2012.0
+year(1655)=  2012.0
+year(1656)=  2012.0
+year(1657)=  2012.0
+year(1658)=  2012.0
+year(1659)=  2012.0
+year(1660)=  2012.0
+year(1661)=  2012.0
+year(1662)=  2012.0
+year(1663)=  2012.0
+year(1664)=  2012.0
+year(1665)=  2012.0
+year(1666)=  2012.0
+year(1667)=  2012.0
+year(1668)=  2012.0
+year(1669)=  2012.0
+year(1670)=  2012.0
+year(1671)=  2012.0
+year(1672)=  2012.0
+year(1673)=  2012.0
+year(1674)=  2012.0
+year(1675)=  2012.0
+year(1676)=  2012.0
+year(1677)=  2012.0
+year(1678)=  2012.0
+year(1679)=  2012.0
+year(1680)=  2012.0
+year(1681)=  2012.0
+year(1682)=  2012.0
+year(1683)=  2012.0
+year(1684)=  2012.0
+year(1685)=  2012.0
+year(1686)=  2012.0
+year(1687)=  2012.0
+year(1688)=  2012.0
+year(1689)=  2012.0
+year(1690)=  2012.0
+year(1691)=  2012.0
+year(1692)=  2012.0
+year(1693)=  2012.0
+year(1694)=  2012.0
+year(1695)=  2012.0
+year(1696)=  2012.0
+year(1697)=  2012.0
+year(1698)=  2012.0
+year(1699)=  2012.0
+year(1700)=  2012.0
+year(1701)=  2012.0
+year(1702)=  2012.0
+year(1703)=  2012.0
+year(1704)=  2012.0
+year(1705)=  2012.0
+year(1706)=  2012.0
+year(1707)=  2012.0
+year(1708)=  2012.0
+year(1709)=  2012.0
+year(1710)=  2012.0
+year(1711)=  2012.0
+year(1712)=  2012.0
+year(1713)=  2012.0
+year(1714)=  2012.0
+year(1715)=  2012.0
+year(1716)=  2012.0
+year(1717)=  2012.0
+year(1718)=  2012.0
+year(1719)=  2012.0
+year(1720)=  2012.0
+year(1721)=  2012.0
+year(1722)=  2012.0
+year(1723)=  2012.0
+year(1724)=  2012.0
+year(1725)=  2012.0
+year(1726)=  2012.0
+year(1727)=  2012.0
+year(1728)=  2012.0
+year(1729)=  2012.0
+year(1730)=  2012.0
+year(1731)=  2012.0
+year(1732)=  2012.0
+year(1733)=  2012.0
+year(1734)=  2012.0
+year(1735)=  2012.0
+year(1736)=  2012.0
+year(1737)=  2012.0
+year(1738)=  2012.0
+year(1739)=  2012.0
+year(1740)=  2012.0
+year(1741)=  2012.0
+year(1742)=  2012.0
+year(1743)=  2012.0
+year(1744)=  2012.0
+year(1745)=  2012.0
+year(1746)=  2012.0
+year(1747)=  2012.0
+year(1748)=  2012.0
+year(1749)=  2012.0
+year(1750)=  2012.0
+year(1751)=  2012.0
+year(1752)=  2012.0
+year(1753)=  2012.0
+year(1754)=  2012.0
+year(1755)=  2012.0
+year(1756)=  2012.0
+year(1757)=  2012.0
+year(1758)=  2012.0
+year(1759)=  2012.0
+year(1760)=  2012.0
+year(1761)=  2012.0
+year(1762)=  2012.0
+year(1763)=  2012.0
+year(1764)=  2012.0
+year(1765)=  2012.0
+year(1766)=  2012.0
+year(1767)=  2012.0
+year(1768)=  2012.0
+year(1769)=  2012.0
+year(1770)=  2012.0
+year(1771)=  2012.0
+year(1772)=  2012.0
+year(1773)=  2012.0
+year(1774)=  2012.0
+year(1775)=  2012.0
+year(1776)=  2012.0
+year(1777)=  2012.0
+year(1778)=  2012.0
+year(1779)=  2012.0
+year(1780)=  2012.0
+year(1781)=  2012.0
+year(1782)=  2012.0
+year(1783)=  2012.0
+year(1784)=  2012.0
+year(1785)=  2012.0
+year(1786)=  2012.0
+year(1787)=  2012.0
+year(1788)=  2012.0
+year(1789)=  2012.0
+year(1790)=  2012.0
+year(1791)=  2012.0
+year(1792)=  2012.0
+year(1793)=  2012.0
+year(1794)=  2012.0
+year(1795)=  2012.0
+year(1796)=  2012.0
+year(1797)=  2012.0
+year(1798)=  2012.0
+year(1799)=  2012.0
+year(1800)=  2012.0
+year(1801)=  2012.0
+year(1802)=  2012.0
+year(1803)=  2012.0
+year(1804)=  2012.0
+year(1805)=  2012.0
+year(1806)=  2012.0
+year(1807)=  2012.0
+year(1808)=  2012.0
+year(1809)=  2012.0
+year(1810)=  2012.0
+year(1811)=  2012.0
+year(1812)=  2012.0
+year(1813)=  2012.0
+year(1814)=  2012.0
+year(1815)=  2012.0
+year(1816)=  2012.0
+year(1817)=  2012.0
+year(1818)=  2012.0
+year(1819)=  2012.0
+year(1820)=  2012.0
+year(1821)=  2012.0
+year(1822)=  2012.0
+year(1823)=  2012.0
+year(1824)=  2012.0
+year(1825)=  2012.0
+year(1826)=  2012.0
+year(1827)=  2012.0
+year(1828)=  2012.0
+year(1829)=  2012.0
+year(1830)=  2012.0
+year(1831)=  2012.0
+year(1832)=  2012.0
+year(1833)=  2012.0
+year(1834)=  2012.0
+year(1835)=  2012.0
+year(1836)=  2012.0
+year(1837)=  2012.0
+year(1838)=  2012.0
+year(1839)=  2012.0
+year(1840)=  2012.0
+year(1841)=  2012.0
+year(1842)=  2012.0
+year(1843)=  2012.0
+year(1844)=  2012.0
+year(1845)=  2012.0
+year(1846)=  2012.0
+year(1847)=  2012.0
+year(1848)=  2012.0
+year(1849)=  2012.0
+year(1850)=  2012.0
+year(1851)=  2012.0
+year(1852)=  2012.0
+year(1853)=  2012.0
+year(1854)=  2012.0
+year(1855)=  2012.0
+year(1856)=  2012.0
+year(1857)=  2012.0
+year(1858)=  2012.0
+year(1859)=  2012.0
+year(1860)=  2012.0
+year(1861)=  2012.0
+year(1862)=  2012.0
+year(1863)=  2012.0
+year(1864)=  2012.0
+year(1865)=  2012.0
+year(1866)=  2012.0
+year(1867)=  2012.0
+year(1868)=  2012.0
+year(1869)=  2012.0
+year(1870)=  2012.0
+year(1871)=  2012.0
+year(1872)=  2012.0
+year(1873)=  2012.0
+year(1874)=  2012.0
+year(1875)=  2012.0
+year(1876)=  2012.0
+year(1877)=  2012.0
+year(1878)=  2012.0
+year(1879)=  2012.0
+year(1880)=  2012.0
+year(1881)=  2012.0
+year(1882)=  2012.0
+year(1883)=  2012.0
+year(1884)=  2012.0
+year(1885)=  2012.0
+year(1886)=  2012.0
+year(1887)=  2012.0
+year(1888)=  2012.0
+year(1889)=  2012.0
+year(1890)=  2012.0
+year(1891)=  2012.0
+year(1892)=  2012.0
+year(1893)=  2012.0
+year(1894)=  2012.0
+year(1895)=  2012.0
+year(1896)=  2012.0
+year(1897)=  2012.0
+year(1898)=  2012.0
+year(1899)=  2012.0
+year(1900)=  2012.0
+year(1901)=  2012.0
+year(1902)=  2012.0
+year(1903)=  2012.0
+year(1904)=  2012.0
+year(1905)=  2012.0
+year(1906)=  2012.0
+year(1907)=  2012.0
+year(1908)=  2012.0
+year(1909)=  2012.0
+year(1910)=  2012.0
+year(1911)=  2012.0
+year(1912)=  2012.0
+year(1913)=  2012.0
+year(1914)=  2012.0
+year(1915)=  2012.0
+year(1916)=  2012.0
+year(1917)=  2012.0
+year(1918)=  2012.0
+year(1919)=  2012.0
+year(1920)=  2012.0
+year(1921)=  2012.0
+year(1922)=  2012.0
+year(1923)=  2012.0
+year(1924)=  2012.0
+year(1925)=  2012.0
+year(1926)=  2012.0
+year(1927)=  2012.0
+year(1928)=  2012.0
+year(1929)=  2012.0
+year(1930)=  2012.0
+year(1931)=  2012.0
+year(1932)=  2012.0
+year(1933)=  2012.0
+year(1934)=  2012.0
+year(1935)=  2012.0
+year(1936)=  2012.0
+year(1937)=  2012.0
+year(1938)=  2012.0
+year(1939)=  2012.0
+year(1940)=  2012.0
+year(1941)=  2012.0
+year(1942)=  2012.0
+year(1943)=  2012.0
+year(1944)=  2012.0
+year(1945)=  2012.0
+year(1946)=  2012.0
+year(1947)=  2012.0
+year(1948)=  2012.0
+year(1949)=  2012.0
+year(1950)=  2012.0
+year(1951)=  2012.0
+year(1952)=  2012.0
+year(1953)=  2012.0
+year(1954)=  2012.0
+year(1955)=  2012.0
+year(1956)=  2012.0
+year(1957)=  2012.0
+year(1958)=  2012.0
+year(1959)=  2012.0
+year(1960)=  2012.0
+year(1961)=  2012.0
+year(1962)=  2012.0
+year(1963)=  2012.0
+year(1964)=  2012.0
+year(1965)=  2012.0
+year(1966)=  2012.0
+year(1967)=  2012.0
+year(1968)=  2012.0
+year(1969)=  2012.0
+year(1970)=  2012.0
+year(1971)=  2012.0
+year(1972)=  2012.0
+year(1973)=  2012.0
+year(1974)=  2012.0
+year(1975)=  2012.0
+year(1976)=  2012.0
+year(1977)=  2012.0
+year(1978)=  2012.0
+year(1979)=  2012.0
+year(1980)=  2012.0
+year(1981)=  2012.0
+year(1982)=  2012.0
+year(1983)=  2012.0
+year(1984)=  2012.0
+year(1985)=  2012.0
+year(1986)=  2012.0
+year(1987)=  2012.0
+year(1988)=  2012.0
+year(1989)=  2012.0
+year(1990)=  2012.0
+year(1991)=  2012.0
+year(1992)=  2012.0
+year(1993)=  2012.0
+year(1994)=  2012.0
+year(1995)=  2012.0
+year(1996)=  2012.0
+year(1997)=  2012.0
+year(1998)=  2012.0
+year(1999)=  2012.0
+year(2000)=  2012.0
+year(2001)=  2012.0
+year(2002)=  2012.0
+year(2003)=  2012.0
+year(2004)=  2012.0
+year(2005)=  2012.0
+year(2006)=  2012.0
+year(2007)=  2012.0
+year(2008)=  2012.0
+year(2009)=  2012.0
+year(2010)=  2012.0
+year(2011)=  2012.0
+year(2012)=  2012.0
+year(2013)=  2012.0
+year(2014)=  2012.0
+year(2015)=  2012.0
+year(2016)=  2012.0
+ pixel   lat    lon     backscatter
+ --------------------------------------
+   1 -58.17421 -58.17421 -24.60000
+   2 -58.15093 -58.15093 -24.78000
+   3 -58.12625 -58.12625 -24.92000
+   4 -58.10018 -58.10018 -25.05000
+   5 -58.07271 -58.07271 -25.04000
+   6 -58.04386 -58.04386 -24.72000
+   7 -58.01363 -58.01363 -23.83000
+   8 -57.98202 -57.98202 -22.57000
+   9 -57.94903 -57.94903 -21.71000
+  10 -57.91468 -57.91468 -21.76000
+  11 -57.87896 -57.87896 -21.81000
+  12 -57.84187 -57.84187 -20.97000
+  13 -57.80343 -57.80343 -19.97000
+  14 -57.76364 -57.76364 -19.01000
+  15 -57.72250 -57.72250 -17.80000
+  16 -57.68002 -57.68002 -16.22000
+  17 -57.63621 -57.63621 -14.67000
+  18 -57.59106 -57.59106 -13.26000
+  19 -57.54459 -57.54459 -12.02000
+  20 -57.49680 -57.49680 -11.01000
+  21 -57.44769 -57.44769  -9.84000
+  22 -55.30908 -55.30908  -7.31000
+  23 -55.22158 -55.22158  -8.76000
+  24 -55.13300 -55.13300 -10.13000
+  25 -55.04337 -55.04337 -11.36000
+  26 -54.95268 -54.95268 -12.58000
+  27 -54.86094 -54.86094 -13.49000
+  28 -54.76817 -54.76817 -13.87000
+  29 -54.67436 -54.67436 -13.77000
+  30 -54.57953 -54.57953 -13.44000
+  31 -54.48369 -54.48369 -13.42000
+  32 -54.38685 -54.38685 -13.58000
+  33 -54.28900 -54.28900 -13.92000
+  34 -54.19017 -54.19017 -14.60000
+  35 -54.09036 -54.09036 -15.36000
+  36 -53.98957 -53.98957 -16.22000
+  37 -53.88783 -53.88783 -17.11000
+  38 -53.78512 -53.78512 -17.98000
+  39 -53.68147 -53.68147 -18.56000
+  40 -53.57688 -53.57688 -18.58000
+  41 -53.47135 -53.47135 -18.49000
+  42 -53.36491 -53.36491 -18.45000
+  43 -57.95660 -57.95660 -22.66000
+  44 -57.93323 -57.93323 -22.99000
+  45 -57.90848 -57.90848 -23.37000
+  46 -57.88235 -57.88235 -23.85000
+  47 -57.85484 -57.85484 -24.27000
+  48 -57.82595 -57.82595 -24.57000
+  49 -57.79569 -57.79569 -24.54000
+  50 -57.76407 -57.76407 -24.17000
+  51 -57.73108 -57.73108 -23.96000
+  52 -57.69674 -57.69674 -24.47000
+  53 -57.66104 -57.66104 -24.53000
+  54 -57.62399 -57.62399 -23.11000
+  55 -57.58559 -57.58559 -21.62000
+  56 -57.54585 -57.54585 -20.27000
+  57 -57.50478 -57.50478 -18.93000
+  58 -57.46238 -57.46238 -17.42000
+  59 -57.41865 -57.41865 -15.78000
+  60 -57.37360 -57.37360 -14.13000
+  61 -57.32724 -57.32724 -12.60000
+  62 -57.27957 -57.27957 -11.35000
+  63 -57.23060 -57.23060 -10.06000
+  64 -55.10109 -55.10109  -7.38000
+  65 -55.01400 -55.01400  -8.57000
+  66 -54.92584 -54.92584  -9.82000
+  67 -54.83663 -54.83663 -11.43000
+  68 -54.74637 -54.74637 -12.88000
+  69 -54.65507 -54.65507 -13.83000
+  70 -54.56273 -54.56273 -14.25000
+  71 -54.46938 -54.46938 -14.21000
+  72 -54.37500 -54.37500 -14.16000
+  73 -54.27962 -54.27962 -14.32000
+  74 -54.18323 -54.18323 -14.44000
+  75 -54.08586 -54.08586 -14.73000
+  76 -53.98750 -53.98750 -15.21000
+  77 -53.88817 -53.88817 -15.94000
+  78 -53.78787 -53.78787 -17.00000
+  79 -53.68661 -53.68661 -17.87000
+  80 -53.58439 -53.58439 -18.64000
+  81 -53.48124 -53.48124 -19.31000
+  82 -53.37715 -53.37715 -19.52000
+  83 -53.27213 -53.27213 -19.49000
+  84 -53.16619 -53.16619 -19.32000
+  85 -57.73897 -57.73897 -21.03000
+  86 -57.71552 -57.71552 -21.35000
+  87 -57.69070 -57.69070 -21.89000
+  88 -57.66451 -57.66451 -22.54000
+  89 -57.63695 -57.63695 -23.05000
+  90 -57.60803 -57.60803 -23.63000
+  91 -57.57774 -57.57774 -24.20000
+  92 -57.54611 -57.54611 -24.67000
+  93 -57.51312 -57.51312 -25.29000
+  94 -57.47878 -57.47878 -26.17000
+  95 -57.44310 -57.44310 -26.72000
+  96 -57.40608 -57.40608 -25.84000
+  97 -57.36773 -57.36773 -23.76000
+  98 -57.32804 -57.32804 -21.40000
+  99 -57.28704 -57.28704 -19.65000
+ 100 -57.24471 -57.24471 -18.37000
+ 101 -57.20107 -57.20107 -16.87000
+ 102 -57.15611 -57.15611 -15.20000
+ 103 -57.10986 -57.10986 -13.55000
+ 104 -57.06230 -57.06230 -12.06000
+ 105 -57.01346 -57.01346 -10.58000
+ 106 -54.89293 -54.89293  -7.89000
+ 107 -54.80624 -54.80624  -8.96000
+ 108 -54.71850 -54.71850 -10.30000
+ 109 -54.62970 -54.62970 -11.99000
+ 110 -54.53987 -54.53987 -13.20000
+ 111 -54.44899 -54.44899 -14.00000
+ 112 -54.35710 -54.35710 -14.65000
+ 113 -54.26418 -54.26418 -14.94000
+ 114 -54.17025 -54.17025 -15.08000
+ 115 -54.07532 -54.07532 -15.41000
+ 116 -53.97940 -53.97940 -15.63000
+ 117 -53.88249 -53.88249 -15.72000
+ 118 -53.78460 -53.78460 -15.86000
+ 119 -53.68574 -53.68574 -16.48000
+ 120 -53.58591 -53.58591 -17.61000
+ 121 -53.48513 -53.48513 -18.16000
+ 122 -53.38341 -53.38341 -18.40000
+ 123 -53.28075 -53.28075 -18.99000
+ 124 -53.17715 -53.17715 -19.69000
+ 125 -53.07264 -53.07264 -19.96000
+ 126 -52.96720 -52.96720 -19.66000
+ 127 -57.52134 -57.52134 -19.85000
+ 128 -57.49781 -57.49781 -20.10000
+ 129 -57.47291 -57.47291 -20.60000
+ 130 -57.44666 -57.44666 -21.03000
+ 131 -57.41905 -57.41905 -21.26000
+ 132 -57.39009 -57.39009 -21.69000
+ 133 -57.35978 -57.35978 -22.36000
+ 134 -57.32813 -57.32813 -23.00000
+ 135 -57.29513 -57.29513 -23.61000
+ 136 -57.26080 -57.26080 -24.14000
+ 137 -57.22514 -57.22514 -24.65000
+ 138 -57.18815 -57.18815 -25.15000
+ 139 -57.14984 -57.14984 -24.67000
+ 140 -57.11021 -57.11021 -22.61000
+ 141 -57.06926 -57.06926 -20.73000
+ 142 -57.02701 -57.02701 -19.69000
+ 143 -56.98345 -56.98345 -18.63000
+ 144 -56.93859 -56.93859 -16.96000
+ 145 -56.89244 -56.89244 -15.02000
+ 146 -56.84500 -56.84500 -13.19000
+ 147 -56.79628 -56.79628 -11.39000
+ 148 -54.68459 -54.68459  -8.81000
+ 149 -54.59831 -54.59831 -10.08000
+ 150 -54.51097 -54.51097 -11.44000
+ 151 -54.42259 -54.42259 -12.70000
+ 152 -54.33317 -54.33317 -13.62000
+ 153 -54.24273 -54.24273 -14.39000
+ 154 -54.15126 -54.15126 -15.05000
+ 155 -54.05878 -54.05878 -15.54000
+ 156 -53.96529 -53.96529 -16.06000
+ 157 -53.87081 -53.87081 -16.61000
+ 158 -53.77534 -53.77534 -16.72000
+ 159 -53.67889 -53.67889 -16.39000
+ 160 -53.58146 -53.58146 -16.03000
+ 161 -53.48307 -53.48307 -16.23000
+ 162 -53.38372 -53.38372 -16.78000
+ 163 -53.28342 -53.28342 -16.77000
+ 164 -53.18217 -53.18217 -16.88000
+ 165 -53.08000 -53.08000 -17.60000
+ 166 -52.97690 -52.97690 -18.42000
+ 167 -52.87287 -52.87287 -18.91000
+ 168 -52.76794 -52.76794 -18.69000
+ 169 -57.30370 -57.30370 -19.15000
+ 170 -57.28008 -57.28008 -19.34000
+ 171 -57.25511 -57.25511 -19.64000
+ 172 -57.22880 -57.22880 -19.75000
+ 173 -57.20114 -57.20114 -19.72000
+ 174 -57.17214 -57.17214 -19.93000
+ 175 -57.14180 -57.14180 -20.39000
+ 176 -57.11013 -57.11013 -20.92000
+ 177 -57.07714 -57.07714 -21.35000
+ 178 -57.04281 -57.04281 -21.57000
+ 179 -57.00717 -57.00717 -21.50000
+ 180 -56.97020 -56.97020 -21.60000
+ 181 -56.93193 -56.93193 -21.86000
+ 182 -56.89235 -56.89235 -21.37000
+ 183 -56.85146 -56.85146 -20.23000
+ 184 -56.80928 -56.80928 -19.44000
+ 185 -56.76580 -56.76580 -19.13000
+ 186 -56.72103 -56.72103 -18.31000
+ 187 -56.67498 -56.67498 -16.75000
+ 188 -56.62766 -56.62766 -14.67000
+ 189 -56.57906 -56.57906 -12.40000
+ 190 -54.47609 -54.47609  -9.59000
+ 191 -54.39020 -54.39020 -11.09000
+ 192 -54.30326 -54.30326 -12.25000
+ 193 -54.21529 -54.21529 -13.21000
+ 194 -54.12629 -54.12629 -14.16000
+ 195 -54.03626 -54.03626 -14.96000
+ 196 -53.94522 -53.94522 -15.52000
+ 197 -53.85317 -53.85317 -16.10000
+ 198 -53.76013 -53.76013 -16.90000
+ 199 -53.66609 -53.66609 -17.52000
+ 200 -53.57106 -53.57106 -17.55000
+ 201 -53.47506 -53.47506 -16.99000
+ 202 -53.37809 -53.37809 -16.10000
+ 203 -53.28017 -53.28017 -15.40000
+ 204 -53.18128 -53.18128 -15.06000
+ 205 -53.08146 -53.08146 -15.00000
+ 206 -52.98069 -52.98069 -15.41000
+ 207 -52.87900 -52.87900 -16.21000
+ 208 -52.77638 -52.77638 -16.92000
+ 209 -52.67285 -52.67285 -17.31000
+ 210 -52.56841 -52.56841 -17.15000
+ 211 -57.08605 -57.08605 -19.07000
+ 212 -57.06235 -57.06235 -19.10000
+ 213 -57.03730 -57.03730 -19.07000
+ 214 -57.01093 -57.01093 -18.98000
+ 215 -56.98322 -56.98322 -18.93000
+ 216 -56.95418 -56.95418 -18.97000
+ 217 -56.92381 -56.92381 -19.13000
+ 218 -56.89213 -56.89213 -19.43000
+ 219 -56.85912 -56.85912 -19.84000
+ 220 -56.82480 -56.82480 -20.11000
+ 221 -56.78917 -56.78917 -19.88000
+ 222 -56.75224 -56.75224 -19.75000
+ 223 -56.71400 -56.71400 -19.94000
+ 224 -56.67446 -56.67446 -19.76000
+ 225 -56.63363 -56.63363 -18.83000
+ 226 -56.59152 -56.59152 -17.94000
+ 227 -56.54812 -56.54812 -17.58000
+ 228 -56.50344 -56.50344 -17.15000
+ 229 -56.45749 -56.45749 -16.44000
+ 230 -56.41028 -56.41028 -14.97000
+ 231 -56.36180 -56.36180 -12.82000
+ 232 -54.26742 -54.26742  -9.96000
+ 233 -54.18192 -54.18192 -11.60000
+ 234 -54.09538 -54.09538 -12.72000
+ 235 -54.00781 -54.00781 -13.70000
+ 236 -53.91922 -53.91922 -14.73000
+ 237 -53.82961 -53.82961 -15.51000
+ 238 -53.73899 -53.73899 -16.07000
+ 239 -53.64737 -53.64737 -16.73000
+ 240 -53.55475 -53.55475 -17.52000
+ 241 -53.46115 -53.46115 -18.03000
+ 242 -53.36657 -53.36657 -17.81000
+ 243 -53.27102 -53.27102 -16.83000
+ 244 -53.17450 -53.17450 -15.45000
+ 245 -53.07703 -53.07703 -14.36000
+ 246 -52.97861 -52.97861 -13.91000
+ 247 -52.87926 -52.87926 -14.13000
+ 248 -52.77896 -52.77896 -14.77000
+ 249 -52.67775 -52.67775 -15.60000
+ 250 -52.57561 -52.57561 -16.27000
+ 251 -52.47257 -52.47257 -16.45000
+ 252 -52.36862 -52.36862 -16.26000
+ 253 -56.86839 -56.86839 -19.69000
+ 254 -56.84460 -56.84460 -19.74000
+ 255 -56.81949 -56.81949 -19.39000
+ 256 -56.79305 -56.79305 -19.17000
+ 257 -56.76529 -56.76529 -19.07000
+ 258 -56.73621 -56.73621 -18.92000
+ 259 -56.70581 -56.70581 -18.77000
+ 260 -56.67411 -56.67411 -18.74000
+ 261 -56.64109 -56.64109 -18.90000
+ 262 -56.60678 -56.60678 -19.14000
+ 263 -56.57116 -56.57116 -19.03000
+ 264 -56.53425 -56.53425 -18.89000
+ 265 -56.49604 -56.49604 -19.18000
+ 266 -56.45655 -56.45655 -19.33000
+ 267 -56.41578 -56.41578 -18.47000
+ 268 -56.37373 -56.37373 -17.42000
+ 269 -56.33041 -56.33041 -16.80000
+ 270 -56.28582 -56.28582 -16.13000
+ 271 -56.23997 -56.23997 -15.33000
+ 272 -56.19286 -56.19286 -14.26000
+ 273 -56.14450 -56.14450 -12.45000
+ 274 -54.05859 -54.05859  -9.94000
+ 275 -53.97347 -53.97347 -11.43000
+ 276 -53.88733 -53.88733 -12.69000
+ 277 -53.80016 -53.80016 -13.89000
+ 278 -53.71197 -53.71197 -14.97000
+ 279 -53.62277 -53.62277 -15.83000
+ 280 -53.53257 -53.53257 -16.45000
+ 281 -53.44137 -53.44137 -16.96000
+ 282 -53.34918 -53.34918 -17.36000
+ 283 -53.25601 -53.25601 -17.29000
+ 284 -53.16187 -53.16187 -16.41000
+ 285 -53.06676 -53.06676 -15.13000
+ 286 -52.97069 -52.97069 -14.08000
+ 287 -52.87368 -52.87368 -13.56000
+ 288 -52.77572 -52.77572 -13.51000
+ 289 -52.67682 -52.67682 -13.87000
+ 290 -52.57700 -52.57700 -14.48000
+ 291 -52.47625 -52.47625 -15.32000
+ 292 -52.37459 -52.37459 -16.01000
+ 293 -52.27203 -52.27203 -16.11000
+ 294 -52.16857 -52.16857 -16.02000
+ 295 -56.65072 -56.65072 -20.39000
+ 296 -56.62685 -56.62685 -20.83000
+ 297 -56.60166 -56.60166 -20.50000
+ 298 -56.57516 -56.57516 -20.14000
+ 299 -56.54734 -56.54734 -19.70000
+ 300 -56.51822 -56.51822 -19.13000
+ 301 -56.48780 -56.48780 -18.59000
+ 302 -56.45607 -56.45607 -18.05000
+ 303 -56.42305 -56.42305 -17.62000
+ 304 -56.38873 -56.38873 -17.48000
+ 305 -56.35313 -56.35313 -17.40000
+ 306 -56.31624 -56.31624 -17.47000
+ 307 -56.27807 -56.27807 -18.03000
+ 308 -56.23862 -56.23862 -18.48000
+ 309 -56.19790 -56.19790 -17.84000
+ 310 -56.15592 -56.15592 -16.89000
+ 311 -56.11267 -56.11267 -16.30000
+ 312 -56.06817 -56.06817 -15.70000
+ 313 -56.02241 -56.02241 -14.82000
+ 314 -55.97540 -55.97540 -13.58000
+ 315 -55.92716 -55.92716 -11.77000
+ 316 -53.84959 -53.84959  -9.62000
+ 317 -53.76486 -53.76486 -10.94000
+ 318 -53.67911 -53.67911 -12.35000
+ 319 -53.59233 -53.59233 -13.56000
+ 320 -53.50454 -53.50454 -14.61000
+ 321 -53.41575 -53.41575 -15.58000
+ 322 -53.32595 -53.32595 -16.04000
+ 323 -53.23517 -53.23517 -16.12000
+ 324 -53.14341 -53.14341 -16.02000
+ 325 -53.05067 -53.05067 -15.41000
+ 326 -52.95696 -52.95696 -14.46000
+ 327 -52.86229 -52.86229 -13.76000
+ 328 -52.76667 -52.76667 -13.49000
+ 329 -52.67010 -52.67010 -13.47000
+ 330 -52.57259 -52.57259 -13.62000
+ 331 -52.47415 -52.47415 -13.96000
+ 332 -52.37479 -52.37479 -14.41000
+ 333 -52.27452 -52.27452 -15.14000
+ 334 -52.17333 -52.17333 -15.77000
+ 335 -52.07124 -52.07124 -15.99000
+ 336 -51.96826 -51.96826 -16.05000
+ 337 -56.43304 -56.43304 -21.20000
+ 338 -56.40908 -56.40908 -21.87000
+ 339 -56.38382 -56.38382 -21.70000
+ 340 -56.35725 -56.35725 -21.21000
+ 341 -56.32939 -56.32939 -20.41000
+ 342 -56.30022 -56.30022 -19.52000
+ 343 -56.26977 -56.26977 -18.84000
+ 344 -56.23802 -56.23802 -18.06000
+ 345 -56.20499 -56.20499 -17.14000
+ 346 -56.17067 -56.17067 -16.49000
+ 347 -56.13508 -56.13508 -16.18000
+ 348 -56.09821 -56.09821 -16.34000
+ 349 -56.06007 -56.06007 -16.89000
+ 350 -56.02067 -56.02067 -17.24000
+ 351 -55.98000 -55.98000 -16.80000
+ 352 -55.93808 -55.93808 -16.03000
+ 353 -55.89490 -55.89490 -15.48000
+ 354 -55.85048 -55.85048 -14.93000
+ 355 -55.80481 -55.80481 -14.03000
+ 356 -55.75791 -55.75791 -12.78000
+ 357 -55.70978 -55.70978 -11.25000
+ 358 -53.64044 -53.64044  -9.42000
+ 359 -53.55609 -53.55609 -10.69000
+ 360 -53.47072 -53.47072 -11.98000
+ 361 -53.38433 -53.38433 -13.04000
+ 362 -53.29693 -53.29693 -13.99000
+ 363 -53.20854 -53.20854 -14.75000
+ 364 -53.11916 -53.11916 -14.93000
+ 365 -53.02879 -53.02879 -14.92000
+ 366 -52.93744 -52.93744 -14.78000
+ 367 -52.84512 -52.84512 -14.24000
+ 368 -52.75184 -52.75184 -13.68000
+ 369 -52.65761 -52.65761 -13.54000
+ 370 -52.56242 -52.56242 -13.65000
+ 371 -52.46630 -52.46630 -13.73000
+ 372 -52.36924 -52.36924 -13.91000
+ 373 -52.27126 -52.27126 -14.22000
+ 374 -52.17236 -52.17236 -14.69000
+ 375 -52.07254 -52.07254 -15.29000
+ 376 -51.97182 -51.97182 -15.82000
+ 377 -51.87021 -51.87021 -16.10000
+ 378 -51.76770 -51.76770 -16.25000
+ 379 -56.21536 -56.21536 -22.32000
+ 380 -56.19131 -56.19131 -22.84000
+ 381 -56.16597 -56.16597 -22.24000
+ 382 -56.13934 -56.13934 -21.41000
+ 383 -56.11142 -56.11142 -20.76000
+ 384 -56.08221 -56.08221 -20.11000
+ 385 -56.05172 -56.05172 -19.55000
+ 386 -56.01996 -56.01996 -18.73000
+ 387 -55.98691 -55.98691 -17.28000
+ 388 -55.95259 -55.95259 -16.02000
+ 389 -55.91701 -55.91701 -15.48000
+ 390 -55.88016 -55.88016 -15.76000
+ 391 -55.84205 -55.84205 -16.39000
+ 392 -55.80269 -55.80269 -16.55000
+ 393 -55.76207 -55.76207 -15.95000
+ 394 -55.72021 -55.72021 -15.21000
+ 395 -55.67711 -55.67711 -14.70000
+ 396 -55.63276 -55.63276 -14.23000
+ 397 -55.58719 -55.58719 -13.47000
+ 398 -55.54039 -55.54039 -12.46000
+ 399 -55.49236 -55.49236 -11.22000
+ 400 -53.43114 -53.43114  -9.44000
+ 401 -53.34716 -53.34716 -10.65000
+ 402 -53.26216 -53.26216 -11.82000
+ 403 -53.17616 -53.17616 -12.87000
+ 404 -53.08916 -53.08916 -13.61000
+ 405 -53.00116 -53.00116 -14.05000
+ 406 -52.91218 -52.91218 -14.21000
+ 407 -52.82221 -52.82221 -14.32000
+ 408 -52.73128 -52.73128 -14.25000
+ 409 -52.63938 -52.63938 -13.98000
+ 410 -52.54653 -52.54653 -13.76000
+ 411 -52.45272 -52.45272 -13.81000
+ 412 -52.35797 -52.35797 -13.97000
+ 413 -52.26229 -52.26229 -14.07000
+ 414 -52.16567 -52.16567 -14.27000
+ 415 -52.06814 -52.06814 -14.62000
+ 416 -51.96969 -51.96969 -15.10000
+ 417 -51.87033 -51.87033 -15.56000
+ 418 -51.77008 -51.77008 -15.99000
+ 419 -51.66893 -51.66893 -16.38000
+ 420 -51.56690 -51.56690 -16.86000
+ 421 -55.99766 -55.99766 -21.55000
+ 422 -55.97353 -55.97353 -21.83000
+ 423 -55.94812 -55.94812 -21.17000
+ 424 -55.92142 -55.92142 -20.33000
+ 425 -55.89344 -55.89344 -20.04000
+ 426 -55.86419 -55.86419 -19.78000
+ 427 -55.83367 -55.83367 -19.07000
+ 428 -55.80188 -55.80188 -18.06000
+ 429 -55.76882 -55.76882 -16.75000
+ 430 -55.73450 -55.73450 -15.59000
+ 431 -55.69892 -55.69892 -14.98000
+ 432 -55.66209 -55.66209 -15.03000
+ 433 -55.62401 -55.62401 -15.48000
+ 434 -55.58469 -55.58469 -15.56000
+ 435 -55.54412 -55.54412 -14.72000
+ 436 -55.50232 -55.50232 -13.86000
+ 437 -55.45928 -55.45928 -13.49000
+ 438 -55.41502 -55.41502 -13.36000
+ 439 -55.36953 -55.36953 -12.93000
+ 440 -55.32282 -55.32282 -11.95000
+ 441 -55.27490 -55.27490 -10.61000
+ 442 -53.22168 -53.22168  -9.38000
+ 443 -53.13807 -53.13807 -10.60000
+ 444 -53.05345 -53.05345 -11.77000
+ 445 -52.96782 -52.96782 -12.78000
+ 446 -52.88121 -52.88121 -13.40000
+ 447 -52.79360 -52.79360 -13.87000
+ 448 -52.70502 -52.70502 -14.20000
+ 449 -52.61546 -52.61546 -14.32000
+ 450 -52.52493 -52.52493 -14.19000
+ 451 -52.43345 -52.43345 -14.11000
+ 452 -52.34101 -52.34101 -14.08000
+ 453 -52.24763 -52.24763 -14.10000
+ 454 -52.15331 -52.15331 -14.28000
+ 455 -52.05806 -52.05806 -14.49000
+ 456 -51.96189 -51.96189 -14.78000
+ 457 -51.86480 -51.86480 -15.17000
+ 458 -51.76680 -51.76680 -15.59000
+ 459 -51.66790 -51.66790 -15.95000
+ 460 -51.56810 -51.56810 -16.31000
+ 461 -51.46741 -51.46741 -16.83000
+ 462 -51.36585 -51.36585 -17.54000
+ 463 -55.77996 -55.77996 -20.78000
+ 464 -55.75574 -55.75574 -20.86000
+ 465 -55.73025 -55.73025 -20.42000
+ 466 -55.70349 -55.70349 -19.88000
+ 467 -55.67546 -55.67546 -19.85000
+ 468 -55.64616 -55.64616 -19.68000
+ 469 -55.61560 -55.61560 -18.62000
+ 470 -55.58379 -55.58379 -17.29000
+ 471 -55.55071 -55.55071 -16.35000
+ 472 -55.51639 -55.51639 -15.91000
+ 473 -55.48082 -55.48082 -15.49000
+ 474 -55.44401 -55.44401 -14.96000
+ 475 -55.40595 -55.40595 -14.61000
+ 476 -55.36667 -55.36667 -14.36000
+ 477 -55.32614 -55.32614 -13.68000
+ 478 -55.28440 -55.28440 -12.73000
+ 479 -55.24143 -55.24143 -12.08000
+ 480 -55.19724 -55.19724 -11.71000
+ 481 -55.15184 -55.15184 -11.28000
+ 482 -55.10523 -55.10523 -10.29000
+ 483 -55.05741 -55.05741  -8.91000
+ 484 -53.01207 -53.01207  -9.25000
+ 485 -52.92882 -52.92882 -10.57000
+ 486 -52.84457 -52.84457 -11.78000
+ 487 -52.75933 -52.75933 -12.63000
+ 488 -52.67309 -52.67309 -13.30000
+ 489 -52.58587 -52.58587 -13.92000
+ 490 -52.49768 -52.49768 -14.40000
+ 491 -52.40852 -52.40852 -14.71000
+ 492 -52.31840 -52.31840 -14.71000
+ 493 -52.22733 -52.22733 -14.70000
+ 494 -52.13531 -52.13531 -14.69000
+ 495 -52.04234 -52.04234 -14.63000
+ 496 -51.94845 -51.94845 -14.70000
+ 497 -51.85363 -51.85363 -14.94000
+ 498 -51.75789 -51.75789 -15.33000
+ 499 -51.66124 -51.66124 -15.81000
+ 500 -51.56369 -51.56369 -16.24000
+ 501 -51.46524 -51.46524 -16.49000
+ 502 -51.36589 -51.36589 -16.77000
+ 503 -51.26566 -51.26566 -17.30000
+ 504 -51.16456 -51.16456 -17.87000
+ 505 -55.56224 -55.56224 -20.68000
+ 506 -55.53794 -55.53794 -20.42000
+ 507 -55.51237 -55.51237 -19.91000
+ 508 -55.48554 -55.48554 -19.75000
+ 509 -55.45746 -55.45746 -20.11000
+ 510 -55.42812 -55.42812 -20.17000
+ 511 -55.39752 -55.39752 -18.91000
+ 512 -55.36568 -55.36568 -17.28000
+ 513 -55.33259 -55.33259 -16.46000
+ 514 -55.29827 -55.29827 -16.60000
+ 515 -55.26270 -55.26270 -16.61000
+ 516 -55.22590 -55.22590 -15.70000
+ 517 -55.18787 -55.18787 -14.65000
+ 518 -55.14862 -55.14862 -14.01000
+ 519 -55.10814 -55.10814 -13.43000
+ 520 -55.06645 -55.06645 -12.57000
+ 521 -55.02355 -55.02355 -11.67000
+ 522 -54.97943 -54.97943 -10.91000
+ 523 -54.93411 -54.93411 -10.29000
+ 524 -54.88760 -54.88760  -9.26000
+ 525 -54.83988 -54.83988  -7.86000
+ 526 -52.80232 -52.80232  -9.39000
+ 527 -52.71943 -52.71943 -10.72000
+ 528 -52.63554 -52.63554 -11.83000
+ 529 -52.55067 -52.55067 -12.54000
+ 530 -52.46481 -52.46481 -13.26000
+ 531 -52.37797 -52.37797 -13.84000
+ 532 -52.29017 -52.29017 -14.36000
+ 533 -52.20141 -52.20141 -14.96000
+ 534 -52.11169 -52.11169 -15.33000
+ 535 -52.02102 -52.02102 -15.46000
+ 536 -51.92941 -51.92941 -15.48000
+ 537 -51.83686 -51.83686 -15.39000
+ 538 -51.74339 -51.74339 -15.28000
+ 539 -51.64899 -51.64899 -15.41000
+ 540 -51.55369 -51.55369 -15.79000
+ 541 -51.45747 -51.45747 -16.31000
+ 542 -51.36036 -51.36036 -16.74000
+ 543 -51.26235 -51.26235 -16.83000
+ 544 -51.16345 -51.16345 -17.06000
+ 545 -51.06368 -51.06368 -17.59000
+ 546 -50.96303 -50.96303 -18.11000
+ 547 -55.34452 -55.34452 -20.69000
+ 548 -55.32013 -55.32013 -20.29000
+ 549 -55.29448 -55.29448 -19.68000
+ 550 -55.26759 -55.26759 -19.60000
+ 551 -55.23945 -55.23945 -20.27000
+ 552 -55.21006 -55.21006 -20.84000
+ 553 -55.17943 -55.17943 -19.82000
+ 554 -55.14756 -55.14756 -18.15000
+ 555 -55.11446 -55.11446 -17.24000
+ 556 -55.08013 -55.08013 -17.30000
+ 557 -55.04456 -55.04456 -17.40000
+ 558 -55.00778 -55.00778 -16.57000
+ 559 -54.96977 -54.96977 -15.37000
+ 560 -54.93055 -54.93055 -14.52000
+ 561 -54.89012 -54.89012 -13.77000
+ 562 -54.84848 -54.84848 -12.92000
+ 563 -54.80564 -54.80564 -12.05000
+ 564 -54.76159 -54.76159 -11.19000
+ 565 -54.71636 -54.71636 -10.31000
+ 566 -54.66993 -54.66993  -9.14000
+ 567 -54.62232 -54.62232  -7.68000
+ 568 -52.59242 -52.59242  -9.55000
+ 569 -52.50988 -52.50988 -10.75000
+ 570 -52.42636 -52.42636 -11.81000
+ 571 -52.34185 -52.34185 -12.63000
+ 572 -52.25636 -52.25636 -13.42000
+ 573 -52.16991 -52.16991 -13.91000
+ 574 -52.08249 -52.08249 -14.31000
+ 575 -51.99412 -51.99412 -14.94000
+ 576 -51.90479 -51.90479 -15.52000
+ 577 -51.81452 -51.81452 -15.86000
+ 578 -51.72332 -51.72332 -15.96000
+ 579 -51.63118 -51.63118 -15.82000
+ 580 -51.53813 -51.53813 -15.69000
+ 581 -51.44416 -51.44416 -15.82000
+ 582 -51.34928 -51.34928 -16.13000
+ 583 -51.25349 -51.25349 -16.50000
+ 584 -51.15681 -51.15681 -16.80000
+ 585 -51.05924 -51.05924 -16.94000
+ 586 -50.96079 -50.96079 -17.24000
+ 587 -50.86147 -50.86147 -17.79000
+ 588 -50.76128 -50.76128 -18.35000
+ 589 -55.12679 -55.12679 -20.91000
+ 590 -55.10231 -55.10231 -20.45000
+ 591 -55.07659 -55.07659 -19.81000
+ 592 -55.04963 -55.04963 -19.44000
+ 593 -55.02143 -55.02143 -19.98000
+ 594 -54.99199 -54.99199 -20.72000
+ 595 -54.96132 -54.96132 -20.12000
+ 596 -54.92943 -54.92943 -18.95000
+ 597 -54.89631 -54.89631 -18.28000
+ 598 -54.86197 -54.86197 -18.08000
+ 599 -54.82641 -54.82641 -17.84000
+ 600 -54.78964 -54.78964 -17.30000
+ 601 -54.75165 -54.75165 -16.39000
+ 602 -54.71247 -54.71247 -15.52000
+ 603 -54.67207 -54.67207 -14.49000
+ 604 -54.63048 -54.63048 -13.48000
+ 605 -54.58770 -54.58770 -12.69000
+ 606 -54.54373 -54.54373 -11.77000
+ 607 -54.49857 -54.49857 -10.52000
+ 608 -54.45223 -54.45223  -9.08000
+ 609 -54.40472 -54.40472  -7.69000
+ 610 -52.38238 -52.38238  -9.60000
+ 611 -52.30019 -52.30019 -10.75000
+ 612 -52.21702 -52.21702 -11.83000
+ 613 -52.13288 -52.13288 -12.84000
+ 614 -52.04776 -52.04776 -13.64000
+ 615 -51.96168 -51.96168 -14.06000
+ 616 -51.87464 -51.87464 -14.45000
+ 617 -51.78665 -51.78665 -15.13000
+ 618 -51.69772 -51.69772 -15.82000
+ 619 -51.60785 -51.60785 -16.24000
+ 620 -51.51705 -51.51705 -16.27000
+ 621 -51.42532 -51.42532 -15.95000
+ 622 -51.33267 -51.33267 -15.87000
+ 623 -51.23912 -51.23912 -16.19000
+ 624 -51.14466 -51.14466 -16.57000
+ 625 -51.04930 -51.04930 -16.77000
+ 626 -50.95306 -50.95306 -16.93000
+ 627 -50.85592 -50.85592 -17.16000
+ 628 -50.75791 -50.75791 -17.60000
+ 629 -50.65903 -50.65903 -18.18000
+ 630 -50.55929 -50.55929 -18.62000
+ 631 -54.90905 -54.90905 -20.82000
+ 632 -54.88448 -54.88448 -20.13000
+ 633 -54.85868 -54.85868 -19.65000
+ 634 -54.83165 -54.83165 -19.25000
+ 635 -54.80339 -54.80339 -19.53000
+ 636 -54.77391 -54.77391 -19.97000
+ 637 -54.74321 -54.74321 -19.55000
+ 638 -54.71128 -54.71128 -18.86000
+ 639 -54.67815 -54.67815 -18.63000
+ 640 -54.64380 -54.64380 -18.44000
+ 641 -54.60824 -54.60824 -17.79000
+ 642 -54.57148 -54.57148 -17.32000
+ 643 -54.53351 -54.53351 -16.84000
+ 644 -54.49436 -54.49436 -16.07000
+ 645 -54.45400 -54.45400 -14.94000
+ 646 -54.41246 -54.41246 -13.94000
+ 647 -54.36974 -54.36974 -13.23000
+ 648 -54.32583 -54.32583 -12.30000
+ 649 -54.28075 -54.28075 -10.82000
+ 650 -54.23450 -54.23450  -9.19000
+ 651 -54.18708 -54.18708  -7.83000
+ 652 -52.17219 -52.17219  -9.63000
+ 653 -52.09036 -52.09036 -10.93000
+ 654 -52.00754 -52.00754 -12.02000
+ 655 -51.92375 -51.92375 -12.92000
+ 656 -51.83900 -51.83900 -13.56000
+ 657 -51.75329 -51.75329 -14.02000
+ 658 -51.66663 -51.66663 -14.60000
+ 659 -51.57902 -51.57902 -15.46000
+ 660 -51.49047 -51.49047 -16.29000
+ 661 -51.40099 -51.40099 -16.70000
+ 662 -51.31059 -51.31059 -16.61000
+ 663 -51.21927 -51.21927 -16.25000
+ 664 -51.12703 -51.12703 -16.24000
+ 665 -51.03389 -51.03389 -16.64000
+ 666 -50.93985 -50.93985 -17.10000
+ 667 -50.84491 -50.84491 -17.26000
+ 668 -50.74909 -50.74909 -17.40000
+ 669 -50.65239 -50.65239 -17.71000
+ 670 -50.55482 -50.55482 -18.18000
+ 671 -50.45638 -50.45638 -18.70000
+ 672 -50.35708 -50.35708 -18.99000
+ 673 -54.69130 -54.69130 -20.59000
+ 674 -54.66664 -54.66664 -19.80000
+ 675 -54.64077 -54.64077 -19.41000
+ 676 -54.61367 -54.61367 -19.23000
+ 677 -54.58535 -54.58535 -19.49000
+ 678 -54.55582 -54.55582 -19.61000
+ 679 -54.52508 -54.52508 -19.22000
+ 680 -54.49312 -54.49312 -18.79000
+ 681 -54.45997 -54.45997 -18.57000
+ 682 -54.42561 -54.42561 -18.23000
+ 683 -54.39005 -54.39005 -17.45000
+ 684 -54.35330 -54.35330 -16.90000
+ 685 -54.31536 -54.31536 -16.60000
+ 686 -54.27622 -54.27622 -16.08000
+ 687 -54.23591 -54.23591 -15.04000
+ 688 -54.19442 -54.19442 -14.14000
+ 689 -54.15175 -54.15175 -13.55000
+ 690 -54.10791 -54.10791 -12.74000
+ 691 -54.06291 -54.06291 -11.24000
+ 692 -54.01674 -54.01674  -9.62000
+ 693 -53.96941 -53.96941  -8.23000
+ 694 -51.96187 -51.96187  -9.57000
+ 695 -51.88038 -51.88038 -11.04000
+ 696 -51.79791 -51.79791 -12.15000
+ 697 -51.71448 -51.71448 -12.90000
+ 698 -51.63009 -51.63009 -13.50000
+ 699 -51.54474 -51.54474 -14.06000
+ 700 -51.45845 -51.45845 -14.68000
+ 701 -51.37122 -51.37122 -15.56000
+ 702 -51.28306 -51.28306 -16.37000
+ 703 -51.19397 -51.19397 -16.83000
+ 704 -51.10395 -51.10395 -16.95000
+ 705 -51.01303 -51.01303 -16.78000
+ 706 -50.92120 -50.92120 -16.84000
+ 707 -50.82846 -50.82846 -17.20000
+ 708 -50.73483 -50.73483 -17.61000
+ 709 -50.64032 -50.64032 -17.85000
+ 710 -50.54492 -50.54492 -18.05000
+ 711 -50.44865 -50.44865 -18.34000
+ 712 -50.35151 -50.35151 -18.64000
+ 713 -50.25350 -50.25350 -19.04000
+ 714 -50.15464 -50.15464 -19.28000
+ 715 -54.47354 -54.47354 -20.85000
+ 716 -54.44880 -54.44880 -20.06000
+ 717 -54.42284 -54.42284 -19.67000
+ 718 -54.39567 -54.39567 -19.57000
+ 719 -54.36730 -54.36730 -19.72000
+ 720 -54.33772 -54.33772 -19.43000
+ 721 -54.30693 -54.30693 -18.91000
+ 722 -54.27495 -54.27495 -18.59000
+ 723 -54.24177 -54.24177 -18.17000
+ 724 -54.20740 -54.20740 -17.60000
+ 725 -54.17185 -54.17185 -17.01000
+ 726 -54.13510 -54.13510 -16.62000
+ 727 -54.09718 -54.09718 -16.35000
+ 728 -54.05807 -54.05807 -15.89000
+ 729 -54.01780 -54.01780 -15.02000
+ 730 -53.97635 -53.97635 -14.20000
+ 731 -53.93374 -53.93374 -13.59000
+ 732 -53.88996 -53.88996 -12.84000
+ 733 -53.84503 -53.84503 -11.46000
+ 734 -53.79894 -53.79894  -9.94000
+ 735 -53.75171 -53.75171  -8.60000
+ 736 -51.75142 -51.75142  -9.26000
+ 737 -51.67026 -51.67026 -10.79000
+ 738 -51.58814 -51.58814 -11.87000
+ 739 -51.50505 -51.50505 -12.70000
+ 740 -51.42102 -51.42102 -13.49000
+ 741 -51.33604 -51.33604 -14.14000
+ 742 -51.25011 -51.25011 -14.71000
+ 743 -51.16326 -51.16326 -15.42000
+ 744 -51.07547 -51.07547 -16.08000
+ 745 -50.98676 -50.98676 -16.72000
+ 746 -50.89714 -50.89714 -17.24000
+ 747 -50.80661 -50.80661 -17.35000
+ 748 -50.71518 -50.71518 -17.48000
+ 749 -50.62285 -50.62285 -17.86000
+ 750 -50.52963 -50.52963 -18.33000
+ 751 -50.43553 -50.43553 -18.68000
+ 752 -50.34055 -50.34055 -18.93000
+ 753 -50.24470 -50.24470 -19.16000
+ 754 -50.14799 -50.14799 -19.34000
+ 755 -50.05042 -50.05042 -19.56000
+ 756 -49.95199 -49.95199 -19.55000
+ 757 -54.25577 -54.25577 -21.72000
+ 758 -54.23094 -54.23094 -20.86000
+ 759 -54.20491 -54.20491 -20.44000
+ 760 -54.17767 -54.17767 -20.34000
+ 761 -54.14923 -54.14923 -20.19000
+ 762 -54.11960 -54.11960 -19.46000
+ 763 -54.08878 -54.08878 -18.66000
+ 764 -54.05677 -54.05677 -18.15000
+ 765 -54.02357 -54.02357 -17.69000
+ 766 -53.98919 -53.98919 -17.21000
+ 767 -53.95363 -53.95363 -16.92000
+ 768 -53.91689 -53.91689 -16.69000
+ 769 -53.87898 -53.87898 -16.27000
+ 770 -53.83990 -53.83990 -15.67000
+ 771 -53.79966 -53.79966 -14.95000
+ 772 -53.75826 -53.75826 -14.11000
+ 773 -53.71570 -53.71570 -13.29000
+ 774 -53.67198 -53.67198 -12.56000
+ 775 -53.62712 -53.62712 -11.41000
+ 776 -53.58112 -53.58112  -9.93000
+ 777 -53.53397 -53.53397  -8.59000
+ 778 -51.54083 -51.54083  -8.83000
+ 779 -51.46000 -51.46000 -10.29000
+ 780 -51.37822 -51.37822 -11.46000
+ 781 -51.29549 -51.29549 -12.51000
+ 782 -51.21180 -51.21180 -13.43000
+ 783 -51.12718 -51.12718 -14.04000
+ 784 -51.04162 -51.04162 -14.63000
+ 785 -50.95513 -50.95513 -15.30000
+ 786 -50.86772 -50.86772 -15.93000
+ 787 -50.77939 -50.77939 -16.71000
+ 788 -50.69016 -50.69016 -17.47000
+ 789 -50.60002 -50.60002 -17.87000
+ 790 -50.50898 -50.50898 -18.09000
+ 791 -50.41705 -50.41705 -18.54000
+ 792 -50.32424 -50.32424 -19.16000
+ 793 -50.23054 -50.23054 -19.62000
+ 794 -50.13598 -50.13598 -19.99000
+ 795 -50.04055 -50.04055 -20.23000
+ 796 -49.94426 -49.94426 -20.30000
+ 797 -49.84712 -49.84712 -20.36000
+ 798 -49.74913 -49.74913 -19.93000
+ 799 -54.03800 -54.03800 -22.54000
+ 800 -54.01308 -54.01308 -21.65000
+ 801 -53.98696 -53.98696 -21.19000
+ 802 -53.95965 -53.95965 -21.05000
+ 803 -53.93116 -53.93116 -20.68000
+ 804 -53.90148 -53.90148 -19.62000
+ 805 -53.87061 -53.87061 -18.55000
+ 806 -53.83857 -53.83857 -17.87000
+ 807 -53.80535 -53.80535 -17.55000
+ 808 -53.77095 -53.77095 -17.31000
+ 809 -53.73539 -53.73539 -17.17000
+ 810 -53.69866 -53.69866 -16.98000
+ 811 -53.66076 -53.66076 -16.40000
+ 812 -53.62171 -53.62171 -15.69000
+ 813 -53.58150 -53.58150 -15.00000
+ 814 -53.54014 -53.54014 -14.08000
+ 815 -53.49763 -53.49763 -13.13000
+ 816 -53.45398 -53.45398 -12.42000
+ 817 -53.40919 -53.40919 -11.36000
+ 818 -53.36326 -53.36326  -9.90000
+ 819 -53.31620 -53.31620  -8.51000
+ 820 -51.33010 -51.33010  -8.70000
+ 821 -51.24961 -51.24961 -10.02000
+ 822 -51.16817 -51.16817 -11.15000
+ 823 -51.08577 -51.08577 -12.34000
+ 824 -51.00244 -51.00244 -13.37000
+ 825 -50.91817 -50.91817 -14.02000
+ 826 -50.83297 -50.83297 -14.70000
+ 827 -50.74685 -50.74685 -15.47000
+ 828 -50.65981 -50.65981 -16.17000
+ 829 -50.57185 -50.57185 -16.89000
+ 830 -50.48300 -50.48300 -17.67000
+ 831 -50.39324 -50.39324 -18.33000
+ 832 -50.30260 -50.30260 -18.74000
+ 833 -50.21107 -50.21107 -19.25000
+ 834 -50.11865 -50.11865 -19.98000
+ 835 -50.02537 -50.02537 -20.59000
+ 836 -49.93121 -49.93121 -21.06000
+ 837 -49.83620 -49.83620 -21.23000
+ 838 -49.74033 -49.74033 -21.17000
+ 839 -49.64361 -49.64361 -21.06000
+ 840 -49.54605 -49.54605 -20.25000
+ 841 -53.82021 -53.82021 -22.71000
+ 842 -53.79520 -53.79520 -21.90000
+ 843 -53.76901 -53.76901 -21.41000
+ 844 -53.74163 -53.74163 -21.11000
+ 845 -53.71307 -53.71307 -20.59000
+ 846 -53.68334 -53.68334 -19.50000
+ 847 -53.65243 -53.65243 -18.53000
+ 848 -53.62036 -53.62036 -18.04000
+ 849 -53.58711 -53.58711 -17.93000
+ 850 -53.55270 -53.55270 -17.70000
+ 851 -53.51713 -53.51713 -17.38000
+ 852 -53.48041 -53.48041 -17.18000
+ 853 -53.44253 -53.44253 -16.58000
+ 854 -53.40350 -53.40350 -15.74000
+ 855 -53.36332 -53.36332 -15.06000
+ 856 -53.32200 -53.32200 -14.15000
+ 857 -53.27954 -53.27954 -13.15000
+ 858 -53.23595 -53.23595 -12.34000
+ 859 -53.19122 -53.19122 -11.25000
+ 860 -53.14537 -53.14537  -9.82000
+ 861 -53.09840 -53.09840  -8.43000
+ 862 -51.11925 -51.11925  -8.86000
+ 863 -51.03909 -51.03909  -9.99000
+ 864 -50.95798 -50.95798 -10.98000
+ 865 -50.87592 -50.87592 -12.22000
+ 866 -50.79293 -50.79293 -13.41000
+ 867 -50.70901 -50.70901 -14.24000
+ 868 -50.62417 -50.62417 -14.98000
+ 869 -50.53840 -50.53840 -15.84000
+ 870 -50.45173 -50.45173 -16.56000
+ 871 -50.36415 -50.36415 -17.22000
+ 872 -50.27567 -50.27567 -18.01000
+ 873 -50.18630 -50.18630 -18.78000
+ 874 -50.09604 -50.09604 -19.35000
+ 875 -50.00490 -50.00490 -19.95000
+ 876 -49.91289 -49.91289 -20.72000
+ 877 -49.82000 -49.82000 -21.32000
+ 878 -49.72625 -49.72625 -21.74000
+ 879 -49.63165 -49.63165 -21.92000
+ 880 -49.53619 -49.53619 -22.00000
+ 881 -49.43990 -49.43990 -21.81000
+ 882 -49.34276 -49.34276 -20.83000
+ 883 -53.60242 -53.60242 -22.64000
+ 884 -53.57732 -53.57732 -22.06000
+ 885 -53.55104 -53.55104 -21.40000
+ 886 -53.52359 -53.52359 -20.80000
+ 887 -53.49498 -53.49498 -20.13000
+ 888 -53.46519 -53.46519 -19.19000
+ 889 -53.43424 -53.43424 -18.51000
+ 890 -53.40213 -53.40213 -18.36000
+ 891 -53.36886 -53.36886 -18.33000
+ 892 -53.33444 -53.33444 -17.98000
+ 893 -53.29886 -53.29886 -17.55000
+ 894 -53.26214 -53.26214 -17.26000
+ 895 -53.22427 -53.22427 -16.54000
+ 896 -53.18526 -53.18526 -15.58000
+ 897 -53.14512 -53.14512 -14.79000
+ 898 -53.10384 -53.10384 -13.84000
+ 899 -53.06143 -53.06143 -12.86000
+ 900 -53.01789 -53.01789 -11.98000
+ 901 -52.97323 -52.97323 -10.88000
+ 902 -52.92745 -52.92745  -9.60000
+ 903 -52.88056 -52.88056  -8.41000
+ 904 -50.90827 -50.90827  -8.96000
+ 905 -50.82843 -50.82843  -9.90000
+ 906 -50.74765 -50.74765 -10.91000
+ 907 -50.66593 -50.66593 -12.20000
+ 908 -50.58328 -50.58328 -13.36000
+ 909 -50.49971 -50.49971 -14.07000
+ 910 -50.41521 -50.41521 -14.76000
+ 911 -50.32981 -50.32981 -15.73000
+ 912 -50.24350 -50.24350 -16.62000
+ 913 -50.15629 -50.15629 -17.38000
+ 914 -50.06818 -50.06818 -18.22000
+ 915 -49.97919 -49.97919 -19.02000
+ 916 -49.88931 -49.88931 -19.67000
+ 917 -49.79856 -49.79856 -20.33000
+ 918 -49.70694 -49.70694 -21.05000
+ 919 -49.61445 -49.61445 -21.50000
+ 920 -49.52110 -49.52110 -21.73000
+ 921 -49.42691 -49.42691 -21.93000
+ 922 -49.33186 -49.33186 -22.16000
+ 923 -49.23598 -49.23598 -22.16000
+ 924 -49.13926 -49.13926 -21.57000
+ 925 -53.38462 -53.38462 -22.38000
+ 926 -53.35943 -53.35943 -22.08000
+ 927 -53.33307 -53.33307 -21.29000
+ 928 -53.30555 -53.30555 -20.51000
+ 929 -53.27687 -53.27687 -19.75000
+ 930 -53.24703 -53.24703 -18.91000
+ 931 -53.21604 -53.21604 -18.42000
+ 932 -53.18389 -53.18389 -18.31000
+ 933 -53.15060 -53.15060 -18.22000
+ 934 -53.11616 -53.11616 -17.90000
+ 935 -53.08058 -53.08058 -17.57000
+ 936 -53.04386 -53.04386 -17.26000
+ 937 -53.00600 -53.00600 -16.42000
+ 938 -52.96701 -52.96701 -15.44000
+ 939 -52.92689 -52.92689 -14.59000
+ 940 -52.88565 -52.88565 -13.62000
+ 941 -52.84329 -52.84329 -12.68000
+ 942 -52.79980 -52.79980 -11.82000
+ 943 -52.75521 -52.75521 -10.77000
+ 944 -52.70951 -52.70951  -9.59000
+ 945 -52.66270 -52.66270  -8.51000
+ 946 -50.69717 -50.69717  -8.91000
+ 947 -50.61765 -50.61765  -9.90000
+ 948 -50.53719 -50.53719 -11.01000
+ 949 -50.45580 -50.45580 -12.15000
+ 950 -50.37349 -50.37349 -13.07000
+ 951 -50.29026 -50.29026 -13.58000
+ 952 -50.20611 -50.20611 -14.16000
+ 953 -50.12106 -50.12106 -15.22000
+ 954 -50.03511 -50.03511 -16.33000
+ 955 -49.94826 -49.94826 -17.11000
+ 956 -49.86053 -49.86053 -17.92000
+ 957 -49.77191 -49.77191 -18.88000
+ 958 -49.68241 -49.68241 -19.76000
+ 959 -49.59204 -49.59204 -20.52000
+ 960 -49.50081 -49.50081 -21.11000
+ 961 -49.40871 -49.40871 -21.20000
+ 962 -49.31577 -49.31577 -21.11000
+ 963 -49.22197 -49.22197 -21.18000
+ 964 -49.12734 -49.12734 -21.46000
+ 965 -49.03187 -49.03187 -21.74000
+ 966 -48.93557 -48.93557 -21.83000
+ 967 -53.16680 -53.16680 -21.82000
+ 968 -53.14152 -53.14152 -21.80000
+ 969 -53.11509 -53.11509 -21.06000
+ 970 -53.08749 -53.08749 -20.28000
+ 971 -53.05875 -53.05875 -19.59000
+ 972 -53.02886 -53.02886 -18.88000
+ 973 -52.99782 -52.99782 -18.48000
+ 974 -52.96564 -52.96564 -18.23000
+ 975 -52.93232 -52.93232 -17.95000
+ 976 -52.89787 -52.89787 -17.68000
+ 977 -52.86228 -52.86228 -17.50000
+ 978 -52.82556 -52.82556 -17.25000
+ 979 -52.78771 -52.78771 -16.42000
+ 980 -52.74874 -52.74874 -15.44000
+ 981 -52.70865 -52.70865 -14.69000
+ 982 -52.66744 -52.66744 -13.83000
+ 983 -52.62512 -52.62512 -12.89000
+ 984 -52.58169 -52.58169 -11.93000
+ 985 -52.53716 -52.53716 -10.80000
+ 986 -52.49153 -52.49153  -9.52000
+ 987 -52.44480 -52.44480  -8.41000
+ 988 -50.48594 -50.48594  -8.94000
+ 989 -50.40673 -50.40673 -10.10000
+ 990 -50.32660 -50.32660 -11.20000
+ 991 -50.24554 -50.24554 -12.09000
+ 992 -50.16356 -50.16356 -12.88000
+ 993 -50.08066 -50.08066 -13.42000
+ 994 -49.99686 -49.99686 -14.01000
+ 995 -49.91216 -49.91216 -15.09000
+ 996 -49.82657 -49.82657 -16.17000
+ 997 -49.74008 -49.74008 -16.71000
+ 998 -49.65271 -49.65271 -17.32000
+ 999 -49.56446 -49.56446 -18.43000
+1000 -49.47534 -49.47534 -19.68000
+1001 -49.38535 -49.38535 -20.57000
+1002 -49.29450 -49.29450 -21.07000
+1003 -49.20280 -49.20280 -20.90000
+1004 -49.11025 -49.11025 -20.54000
+1005 -49.01685 -49.01685 -20.39000
+1006 -48.92262 -48.92262 -20.60000
+1007 -48.82756 -48.82756 -21.15000
+1008 -48.73167 -48.73167 -21.90000
+1009 -52.94898 -52.94898 -21.31000
+1010 -52.92361 -52.92361 -21.32000
+1011 -52.89709 -52.89709 -20.78000
+1012 -52.86943 -52.86943 -20.08000
+1013 -52.84062 -52.84062 -19.60000
+1014 -52.81068 -52.81068 -19.13000
+1015 -52.77960 -52.77960 -18.75000
+1016 -52.74738 -52.74738 -18.38000
+1017 -52.71403 -52.71403 -17.93000
+1018 -52.67956 -52.67956 -17.59000
+1019 -52.64396 -52.64396 -17.47000
+1020 -52.60724 -52.60724 -17.28000
+1021 -52.56940 -52.56940 -16.58000
+1022 -52.53045 -52.53045 -15.63000
+1023 -52.49038 -52.49038 -14.98000
+1024 -52.44921 -52.44921 -14.22000
+1025 -52.40693 -52.40693 -13.25000
+1026 -52.36356 -52.36356 -12.11000
+1027 -52.31909 -52.31909 -10.79000
+1028 -52.27352 -52.27352  -9.41000
+1029 -52.22687 -52.22687  -8.21000
+1030 -50.27459 -50.27459  -9.05000
+1031 -50.19570 -50.19570 -10.42000
+1032 -50.11588 -50.11588 -11.48000
+1033 -50.03514 -50.03514 -12.24000
+1034 -49.95349 -49.95349 -12.96000
+1035 -49.87093 -49.87093 -13.53000
+1036 -49.78747 -49.78747 -14.23000
+1037 -49.70312 -49.70312 -15.28000
+1038 -49.61787 -49.61787 -16.05000
+1039 -49.53174 -49.53174 -16.40000
+1040 -49.44473 -49.44473 -16.99000
+1041 -49.35685 -49.35685 -18.16000
+1042 -49.26810 -49.26810 -19.51000
+1043 -49.17849 -49.17849 -20.42000
+1044 -49.08802 -49.08802 -20.89000
+1045 -48.99671 -48.99671 -20.69000
+1046 -48.90455 -48.90455 -20.24000
+1047 -48.81155 -48.81155 -19.80000
+1048 -48.71772 -48.71772 -19.80000
+1049 -48.62306 -48.62306 -20.48000
+1050 -48.52758 -48.52758 -21.79000
+1051 -52.73115 -52.73115 -21.22000
+1052 -52.70569 -52.70569 -20.90000
+1053 -52.67909 -52.67909 -20.34000
+1054 -52.65135 -52.65135 -19.79000
+1055 -52.62248 -52.62248 -19.47000
+1056 -52.59248 -52.59248 -19.14000
+1057 -52.56136 -52.56136 -18.71000
+1058 -52.52910 -52.52910 -18.30000
+1059 -52.49573 -52.49573 -18.03000
+1060 -52.46124 -52.46124 -17.86000
+1061 -52.42563 -52.42563 -17.69000
+1062 -52.38891 -52.38891 -17.40000
+1063 -52.35107 -52.35107 -16.80000
+1064 -52.31214 -52.31214 -15.84000
+1065 -52.27210 -52.27210 -15.04000
+1066 -52.23096 -52.23096 -14.25000
+1067 -52.18872 -52.18872 -13.27000
+1068 -52.14540 -52.14540 -12.11000
+1069 -52.10098 -52.10098 -10.72000
+1070 -52.05549 -52.05549  -9.30000
+1071 -52.00891 -52.00891  -8.13000
+1072 -50.06312 -50.06312  -9.07000
+1073 -49.98454 -49.98454 -10.57000
+1074 -49.90503 -49.90503 -11.64000
+1075 -49.82462 -49.82462 -12.45000
+1076 -49.74329 -49.74329 -13.12000
+1077 -49.66106 -49.66106 -13.70000
+1078 -49.57794 -49.57794 -14.52000
+1079 -49.49393 -49.49393 -15.50000
+1080 -49.40903 -49.40903 -15.97000
+1081 -49.32325 -49.32325 -16.21000
+1082 -49.23660 -49.23660 -16.87000
+1083 -49.14908 -49.14908 -18.01000
+1084 -49.06070 -49.06070 -19.19000
+1085 -48.97146 -48.97146 -19.99000
+1086 -48.88137 -48.88137 -20.43000
+1087 -48.79044 -48.79044 -20.39000
+1088 -48.69867 -48.69867 -19.98000
+1089 -48.60606 -48.60606 -19.46000
+1090 -48.51262 -48.51262 -19.43000
+1091 -48.41837 -48.41837 -20.07000
+1092 -48.32329 -48.32329 -21.44000
+1093 -52.51331 -52.51331 -21.51000
+1094 -52.48776 -52.48776 -20.73000
+1095 -52.46108 -52.46108 -19.90000
+1096 -52.43327 -52.43327 -19.48000
+1097 -52.40433 -52.40433 -19.24000
+1098 -52.37428 -52.37428 -18.94000
+1099 -52.34311 -52.34311 -18.52000
+1100 -52.31082 -52.31082 -18.11000
+1101 -52.27741 -52.27741 -18.16000
+1102 -52.24290 -52.24290 -18.31000
+1103 -52.20728 -52.20728 -18.02000
+1104 -52.17055 -52.17055 -17.41000
+1105 -52.13273 -52.13273 -16.67000
+1106 -52.09381 -52.09381 -15.75000
+1107 -52.05379 -52.05379 -14.77000
+1108 -52.01268 -52.01268 -13.85000
+1109 -51.97049 -51.97049 -12.89000
+1110 -51.92721 -51.92721 -11.82000
+1111 -51.88286 -51.88286 -10.48000
+1112 -51.83742 -51.83742  -9.11000
+1113 -51.79092 -51.79092  -8.05000
+1114 -49.85154 -49.85154  -8.82000
+1115 -49.77325 -49.77325 -10.33000
+1116 -49.69406 -49.69406 -11.58000
+1117 -49.61396 -49.61396 -12.57000
+1118 -49.53296 -49.53296 -13.30000
+1119 -49.45106 -49.45106 -13.95000
+1120 -49.36827 -49.36827 -14.88000
+1121 -49.28460 -49.28460 -15.83000
+1122 -49.20004 -49.20004 -16.28000
+1123 -49.11461 -49.11461 -16.41000
+1124 -49.02832 -49.02832 -16.99000
+1125 -48.94116 -48.94116 -18.01000
+1126 -48.85314 -48.85314 -18.92000
+1127 -48.76427 -48.76427 -19.49000
+1128 -48.67455 -48.67455 -19.84000
+1129 -48.58400 -48.58400 -19.87000
+1130 -48.49261 -48.49261 -19.55000
+1131 -48.40039 -48.40039 -19.35000
+1132 -48.30735 -48.30735 -19.51000
+1133 -48.21349 -48.21349 -20.17000
+1134 -48.11881 -48.11881 -21.42000
+1135 -52.29546 -52.29546 -21.56000
+1136 -52.26982 -52.26982 -20.75000
+1137 -52.24306 -52.24306 -19.86000
+1138 -52.21517 -52.21517 -19.47000
+1139 -52.18617 -52.18617 -19.26000
+1140 -52.15606 -52.15606 -18.94000
+1141 -52.12484 -52.12484 -18.45000
+1142 -52.09252 -52.09252 -18.03000
+1143 -52.05908 -52.05908 -18.12000
+1144 -52.02455 -52.02455 -18.26000
+1145 -51.98892 -51.98892 -17.88000
+1146 -51.95219 -51.95219 -17.10000
+1147 -51.91437 -51.91437 -16.27000
+1148 -51.87546 -51.87546 -15.44000
+1149 -51.83546 -51.83546 -14.42000
+1150 -51.79439 -51.79439 -13.47000
+1151 -51.75223 -51.75223 -12.57000
+1152 -51.70900 -51.70900 -11.52000
+1153 -51.66470 -51.66470 -10.28000
+1154 -51.61933 -51.61933  -9.02000
+1155 -51.57290 -51.57290  -7.93000
+1156 -49.63983 -49.63983  -8.63000
+1157 -49.56185 -49.56185 -10.13000
+1158 -49.48297 -49.48297 -11.37000
+1159 -49.40318 -49.40318 -12.49000
+1160 -49.32250 -49.32250 -13.42000
+1161 -49.24092 -49.24092 -14.11000
+1162 -49.15846 -49.15846 -14.93000
+1163 -49.07512 -49.07512 -15.93000
+1164 -48.99091 -48.99091 -16.63000
+1165 -48.90582 -48.90582 -16.86000
+1166 -48.81988 -48.81988 -17.36000
+1167 -48.73307 -48.73307 -18.22000
+1168 -48.64542 -48.64542 -18.95000
+1169 -48.55691 -48.55691 -19.41000
+1170 -48.46757 -48.46757 -19.63000
+1171 -48.37739 -48.37739 -19.40000
+1172 -48.28638 -48.28638 -19.16000
+1173 -48.19454 -48.19454 -19.44000
+1174 -48.10189 -48.10189 -19.95000
+1175 -48.00842 -48.00842 -20.65000
+1176 -47.91415 -47.91415 -21.68000
+1177 -52.07761 -52.07761 -21.05000
+1178 -52.05187 -52.05187 -20.56000
+1179 -52.02502 -52.02502 -19.86000
+1180 -51.99707 -51.99707 -19.47000
+1181 -51.96800 -51.96800 -19.31000
+1182 -51.93784 -51.93784 -19.01000
+1183 -51.90657 -51.90657 -18.39000
+1184 -51.87420 -51.87420 -17.94000
+1185 -51.84074 -51.84074 -17.96000
+1186 -51.80618 -51.80618 -17.93000
+1187 -51.77054 -51.77054 -17.47000
+1188 -51.73380 -51.73380 -16.74000
+1189 -51.69599 -51.69599 -15.94000
+1190 -51.65709 -51.65709 -15.14000
+1191 -51.61712 -51.61712 -14.19000
+1192 -51.57607 -51.57607 -13.37000
+1193 -51.53395 -51.53395 -12.61000
+1194 -51.49077 -51.49077 -11.59000
+1195 -51.44652 -51.44652 -10.36000
+1196 -51.40121 -51.40121  -9.12000
+1197 -51.35485 -51.35485  -7.98000
+1198 -49.42801 -49.42801  -8.64000
+1199 -49.35033 -49.35033 -10.07000
+1200 -49.27175 -49.27175 -11.22000
+1201 -49.19227 -49.19227 -12.32000
+1202 -49.11191 -49.11191 -13.36000
+1203 -49.03065 -49.03065 -14.05000
+1204 -48.94852 -48.94852 -14.76000
+1205 -48.86551 -48.86551 -15.82000
+1206 -48.78163 -48.78163 -16.65000
+1207 -48.69689 -48.69689 -17.06000
+1208 -48.61129 -48.61129 -17.58000
+1209 -48.52484 -48.52484 -18.33000
+1210 -48.43754 -48.43754 -19.14000
+1211 -48.34940 -48.34940 -19.64000
+1212 -48.26042 -48.26042 -19.63000
+1213 -48.17061 -48.17061 -19.09000
+1214 -48.07998 -48.07998 -18.91000
+1215 -47.98852 -47.98852 -19.58000
+1216 -47.89625 -47.89625 -20.51000
+1217 -47.80318 -47.80318 -21.26000
+1218 -47.70929 -47.70929 -21.93000
+1219 -51.85974 -51.85974 -20.12000
+1220 -51.83391 -51.83391 -19.88000
+1221 -51.80698 -51.80698 -19.30000
+1222 -51.77895 -51.77895 -18.93000
+1223 -51.74982 -51.74982 -18.82000
+1224 -51.71960 -51.71960 -18.58000
+1225 -51.68828 -51.68828 -18.05000
+1226 -51.65588 -51.65588 -17.66000
+1227 -51.62238 -51.62238 -17.63000
+1228 -51.58780 -51.58780 -17.55000
+1229 -51.55214 -51.55214 -17.17000
+1230 -51.51540 -51.51540 -16.48000
+1231 -51.47759 -51.47759 -15.71000
+1232 -51.43871 -51.43871 -14.96000
+1233 -51.39875 -51.39875 -14.15000
+1234 -51.35773 -51.35773 -13.50000
+1235 -51.31565 -51.31565 -12.85000
+1236 -51.27251 -51.27251 -11.82000
+1237 -51.22831 -51.22831 -10.57000
+1238 -51.18307 -51.18307  -9.43000
+1239 -51.13677 -51.13677  -8.38000
+1240 -49.21608 -49.21608  -8.95000
+1241 -49.13870 -49.13870 -10.28000
+1242 -49.06042 -49.06042 -11.39000
+1243 -48.98125 -48.98125 -12.36000
+1244 -48.90119 -48.90119 -13.25000
+1245 -48.82025 -48.82025 -13.94000
+1246 -48.73844 -48.73844 -14.65000
+1247 -48.65576 -48.65576 -15.64000
+1248 -48.57222 -48.57222 -16.43000
+1249 -48.48781 -48.48781 -17.04000
+1250 -48.40256 -48.40256 -17.78000
+1251 -48.31645 -48.31645 -18.50000
+1252 -48.22951 -48.22951 -19.18000
+1253 -48.14173 -48.14173 -19.70000
+1254 -48.05311 -48.05311 -19.72000
+1255 -47.96367 -47.96367 -19.29000
+1256 -47.87341 -47.87341 -19.25000
+1257 -47.78233 -47.78233 -20.03000
+1258 -47.69044 -47.69044 -21.15000
+1259 -47.59775 -47.59775 -21.94000
+1260 -47.50426 -47.50426 -22.42000
+1261 -51.64186 -51.64186 -18.93000
+1262 -51.61594 -51.61594 -18.86000
+1263 -51.58893 -51.58893 -18.41000
+1264 -51.56083 -51.56083 -18.03000
+1265 -51.53163 -51.53163 -17.84000
+1266 -51.50135 -51.50135 -17.60000
+1267 -51.46999 -51.46999 -17.22000
+1268 -51.43754 -51.43754 -16.91000
+1269 -51.40401 -51.40401 -16.80000
+1270 -51.36941 -51.36941 -16.72000
+1271 -51.33373 -51.33373 -16.61000
+1272 -51.29699 -51.29699 -16.24000
+1273 -51.25918 -51.25918 -15.63000
+1274 -51.22030 -51.22030 -14.95000
+1275 -51.18037 -51.18037 -14.24000
+1276 -51.13937 -51.13937 -13.69000
+1277 -51.09732 -51.09732 -13.03000
+1278 -51.05423 -51.05423 -11.94000
+1279 -51.01008 -51.01008 -10.73000
+1280 -50.96489 -50.96489  -9.66000
+1281 -50.91867 -50.91867  -8.74000
+1282 -49.00404 -49.00404  -9.57000
+1283 -48.92695 -48.92695 -10.66000
+1284 -48.84896 -48.84896 -11.63000
+1285 -48.77010 -48.77010 -12.60000
+1286 -48.69035 -48.69035 -13.42000
+1287 -48.60972 -48.60972 -14.15000
+1288 -48.52823 -48.52823 -14.94000
+1289 -48.44588 -48.44588 -15.72000
+1290 -48.36266 -48.36266 -16.37000
+1291 -48.27860 -48.27860 -17.10000
+1292 -48.19368 -48.19368 -18.04000
+1293 -48.10792 -48.10792 -18.88000
+1294 -48.02132 -48.02132 -19.46000
+1295 -47.93390 -47.93390 -19.85000
+1296 -47.84564 -47.84564 -19.89000
+1297 -47.75656 -47.75656 -19.74000
+1298 -47.66667 -47.66667 -19.86000
+1299 -47.57597 -47.57597 -20.60000
+1300 -47.48446 -47.48446 -21.72000
+1301 -47.39215 -47.39215 -22.55000
+1302 -47.29904 -47.29904 -22.87000
+1303 -51.42398 -51.42398 -17.94000
+1304 -51.39797 -51.39797 -17.98000
+1305 -51.37087 -51.37087 -17.65000
+1306 -51.34269 -51.34269 -17.30000
+1307 -51.31343 -51.31343 -17.10000
+1308 -51.28309 -51.28309 -16.91000
+1309 -51.25168 -51.25168 -16.65000
+1310 -51.21919 -51.21919 -16.35000
+1311 -51.18563 -51.18563 -16.17000
+1312 -51.15100 -51.15100 -16.04000
+1313 -51.11531 -51.11531 -16.00000
+1314 -51.07856 -51.07856 -15.99000
+1315 -51.04075 -51.04075 -15.64000
+1316 -51.00188 -51.00188 -15.02000
+1317 -50.96196 -50.96196 -14.38000
+1318 -50.92099 -50.92099 -13.83000
+1319 -50.87898 -50.87898 -13.12000
+1320 -50.83592 -50.83592 -12.07000
+1321 -50.79183 -50.79183 -10.89000
+1322 -50.74669 -50.74669  -9.70000
+1323 -50.70053 -50.70053  -8.77000
+1324 -48.79189 -48.79189 -10.03000
+1325 -48.71509 -48.71509 -11.04000
+1326 -48.63740 -48.63740 -12.04000
+1327 -48.55883 -48.55883 -13.13000
+1328 -48.47938 -48.47938 -14.02000
+1329 -48.39907 -48.39907 -14.75000
+1330 -48.31790 -48.31790 -15.61000
+1331 -48.23586 -48.23586 -16.31000
+1332 -48.15297 -48.15297 -16.76000
+1333 -48.06924 -48.06924 -17.36000
+1334 -47.98466 -47.98466 -18.37000
+1335 -47.89924 -47.89924 -19.44000
+1336 -47.81299 -47.81299 -20.11000
+1337 -47.72591 -47.72591 -20.19000
+1338 -47.63802 -47.63802 -20.01000
+1339 -47.54930 -47.54930 -20.09000
+1340 -47.45977 -47.45977 -20.44000
+1341 -47.36944 -47.36944 -21.18000
+1342 -47.27830 -47.27830 -22.20000
+1343 -47.18637 -47.18637 -22.91000
+1344 -47.09365 -47.09365 -23.02000
+1345 -51.20608 -51.20608 -17.49000
+1346 -51.17998 -51.17998 -17.44000
+1347 -51.15280 -51.15280 -17.16000
+1348 -51.12455 -51.12455 -16.96000
+1349 -51.09522 -51.09522 -16.91000
+1350 -51.06482 -51.06482 -16.80000
+1351 -51.03335 -51.03335 -16.60000
+1352 -51.00082 -51.00082 -16.26000
+1353 -50.96723 -50.96723 -15.99000
+1354 -50.93258 -50.93258 -15.78000
+1355 -50.89687 -50.89687 -15.71000
+1356 -50.86011 -50.86011 -15.76000
+1357 -50.82230 -50.82230 -15.45000
+1358 -50.78344 -50.78344 -14.90000
+1359 -50.74354 -50.74354 -14.41000
+1360 -50.70259 -50.70259 -13.90000
+1361 -50.66061 -50.66061 -13.21000
+1362 -50.61759 -50.61759 -12.16000
+1363 -50.57354 -50.57354 -10.92000
+1364 -50.52847 -50.52847  -9.73000
+1365 -50.48237 -50.48237  -8.80000
+1366 -48.57963 -48.57963  -9.93000
+1367 -48.50311 -48.50311 -11.26000
+1368 -48.42571 -48.42571 -12.49000
+1369 -48.34744 -48.34744 -13.66000
+1370 -48.26830 -48.26830 -14.71000
+1371 -48.18829 -48.18829 -15.60000
+1372 -48.10743 -48.10743 -16.45000
+1373 -48.02571 -48.02571 -17.14000
+1374 -47.94315 -47.94315 -17.47000
+1375 -47.85974 -47.85974 -17.95000
+1376 -47.77550 -47.77550 -18.86000
+1377 -47.69042 -47.69042 -19.84000
+1378 -47.60451 -47.60451 -20.46000
+1379 -47.51778 -47.51778 -20.32000
+1380 -47.43024 -47.43024 -19.95000
+1381 -47.34188 -47.34188 -20.14000
+1382 -47.25271 -47.25271 -20.87000
+1383 -47.16274 -47.16274 -21.77000
+1384 -47.07198 -47.07198 -22.57000
+1385 -46.98042 -46.98042 -23.08000
+1386 -46.88808 -46.88808 -23.14000
+1387 -50.98818 -50.98818 -17.34000
+1388 -50.96199 -50.96199 -17.11000
+1389 -50.93472 -50.93472 -16.75000
+1390 -50.90639 -50.90639 -16.59000
+1391 -50.87700 -50.87700 -16.64000
+1392 -50.84654 -50.84654 -16.68000
+1393 -50.81502 -50.81502 -16.59000
+1394 -50.78245 -50.78245 -16.30000
+1395 -50.74882 -50.74882 -16.00000
+1396 -50.71415 -50.71415 -15.74000
+1397 -50.67842 -50.67842 -15.65000
+1398 -50.64165 -50.64165 -15.60000
+1399 -50.60384 -50.60384 -15.27000
+1400 -50.56498 -50.56498 -14.78000
+1401 -50.52509 -50.52509 -14.38000
+1402 -50.48417 -50.48417 -14.00000
+1403 -50.44222 -50.44222 -13.38000
+1404 -50.39924 -50.39924 -12.37000
+1405 -50.35524 -50.35524 -11.13000
+1406 -50.31022 -50.31022  -9.93000
+1407 -50.26418 -50.26418  -9.02000
+1408 -48.36727 -48.36727  -9.60000
+1409 -48.29103 -48.29103 -11.08000
+1410 -48.21392 -48.21392 -12.53000
+1411 -48.13594 -48.13594 -13.96000
+1412 -48.05710 -48.05710 -15.27000
+1413 -47.97740 -47.97740 -16.31000
+1414 -47.89684 -47.89684 -17.00000
+1415 -47.81544 -47.81544 -17.46000
+1416 -47.73319 -47.73319 -17.74000
+1417 -47.65011 -47.65011 -18.11000
+1418 -47.56620 -47.56620 -18.86000
+1419 -47.48145 -47.48145 -19.81000
+1420 -47.39588 -47.39588 -20.49000
+1421 -47.30950 -47.30950 -20.31000
+1422 -47.22230 -47.22230 -19.76000
+1423 -47.13430 -47.13430 -19.69000
+1424 -47.04549 -47.04549 -20.43000
+1425 -46.95589 -46.95589 -21.37000
+1426 -46.86549 -46.86549 -22.29000
+1427 -46.77431 -46.77431 -22.98000
+1428 -46.68234 -46.68234 -23.06000
+1429 -50.77027 -50.77027 -17.21000
+1430 -50.74398 -50.74398 -16.95000
+1431 -50.71663 -50.71663 -16.54000
+1432 -50.68822 -50.68822 -16.23000
+1433 -50.65876 -50.65876 -16.22000
+1434 -50.62825 -50.62825 -16.37000
+1435 -50.59668 -50.59668 -16.39000
+1436 -50.56406 -50.56406 -16.18000
+1437 -50.53040 -50.53040 -15.98000
+1438 -50.49570 -50.49570 -15.80000
+1439 -50.45995 -50.45995 -15.68000
+1440 -50.42317 -50.42317 -15.55000
+1441 -50.38535 -50.38535 -15.29000
+1442 -50.34651 -50.34651 -14.84000
+1443 -50.30663 -50.30663 -14.45000
+1444 -50.26573 -50.26573 -14.08000
+1445 -50.22381 -50.22381 -13.40000
+1446 -50.18086 -50.18086 -12.52000
+1447 -50.13691 -50.13691 -11.43000
+1448 -50.09194 -50.09194 -10.18000
+1449 -50.04596 -50.04596  -9.21000
+1450 -48.15480 -48.15480  -9.25000
+1451 -48.07884 -48.07884 -10.60000
+1452 -48.00201 -48.00201 -12.02000
+1453 -47.92432 -47.92432 -13.65000
+1454 -47.84578 -47.84578 -15.16000
+1455 -47.76638 -47.76638 -16.13000
+1456 -47.68613 -47.68613 -16.60000
+1457 -47.60504 -47.60504 -16.94000
+1458 -47.52311 -47.52311 -17.23000
+1459 -47.44035 -47.44035 -17.66000
+1460 -47.35676 -47.35676 -18.51000
+1461 -47.27235 -47.27235 -19.50000
+1462 -47.18711 -47.18711 -20.26000
+1463 -47.10107 -47.10107 -20.32000
+1464 -47.01422 -47.01422 -19.79000
+1465 -46.92657 -46.92657 -19.43000
+1466 -46.83812 -46.83812 -19.77000
+1467 -46.74887 -46.74887 -20.45000
+1468 -46.65884 -46.65884 -21.39000
+1469 -46.56802 -46.56802 -22.17000
+1470 -46.47643 -46.47643 -22.19000
+1471 -50.55235 -50.55235 -17.09000
+1472 -50.52597 -50.52597 -16.87000
+1473 -50.49853 -50.49853 -16.47000
+1474 -50.47005 -50.47005 -16.13000
+1475 -50.44052 -50.44052 -16.09000
+1476 -50.40994 -50.40994 -16.30000
+1477 -50.37832 -50.37832 -16.43000
+1478 -50.34566 -50.34566 -16.21000
+1479 -50.31197 -50.31197 -16.02000
+1480 -50.27724 -50.27724 -15.87000
+1481 -50.24147 -50.24147 -15.78000
+1482 -50.20468 -50.20468 -15.69000
+1483 -50.16686 -50.16686 -15.32000
+1484 -50.12801 -50.12801 -14.83000
+1485 -50.08815 -50.08815 -14.46000
+1486 -50.04727 -50.04727 -13.96000
+1487 -50.00537 -50.00537 -13.27000
+1488 -49.96247 -49.96247 -12.43000
+1489 -49.91855 -49.91855 -11.35000
+1490 -49.87364 -49.87364 -10.17000
+1491 -49.82772 -49.82772  -9.20000
+1492 -47.94223 -47.94223  -8.97000
+1493 -47.86655 -47.86655 -10.24000
+1494 -47.79000 -47.79000 -11.52000
+1495 -47.71260 -47.71260 -12.99000
+1496 -47.63434 -47.63434 -14.29000
+1497 -47.55524 -47.55524 -15.12000
+1498 -47.47529 -47.47529 -15.66000
+1499 -47.39451 -47.39451 -16.16000
+1500 -47.31289 -47.31289 -16.59000
+1501 -47.23045 -47.23045 -17.09000
+1502 -47.14719 -47.14719 -17.84000
+1503 -47.06310 -47.06310 -18.79000
+1504 -46.97820 -46.97820 -19.82000
+1505 -46.89250 -46.89250 -20.25000
+1506 -46.80599 -46.80599 -19.85000
+1507 -46.71868 -46.71868 -19.52000
+1508 -46.63058 -46.63058 -19.63000
+1509 -46.54170 -46.54170 -20.02000
+1510 -46.45203 -46.45203 -20.79000
+1511 -46.36158 -46.36158 -21.45000
+1512 -46.27035 -46.27035 -21.50000
+1513 -50.33442 -50.33442 -17.01000
+1514 -50.30794 -50.30794 -16.85000
+1515 -50.28042 -50.28042 -16.41000
+1516 -50.25186 -50.25186 -16.06000
+1517 -50.22226 -50.22226 -16.11000
+1518 -50.19163 -50.19163 -16.52000
+1519 -50.15996 -50.15996 -16.88000
+1520 -50.12725 -50.12725 -16.73000
+1521 -50.09352 -50.09352 -16.50000
+1522 -50.05876 -50.05876 -16.29000
+1523 -50.02297 -50.02297 -16.15000
+1524 -49.98617 -49.98617 -15.99000
+1525 -49.94834 -49.94834 -15.43000
+1526 -49.90950 -49.90950 -14.84000
+1527 -49.86965 -49.86965 -14.48000
+1528 -49.82879 -49.82879 -13.91000
+1529 -49.78692 -49.78692 -13.22000
+1530 -49.74405 -49.74405 -12.38000
+1531 -49.70018 -49.70018 -11.25000
+1532 -49.65531 -49.65531 -10.17000
+1533 -49.60945 -49.60945  -9.20000
+1534 -47.72956 -47.72956  -8.91000
+1535 -47.65415 -47.65415 -10.17000
+1536 -47.57788 -47.57788 -11.29000
+1537 -47.50076 -47.50076 -12.47000
+1538 -47.42279 -47.42279 -13.55000
+1539 -47.34398 -47.34398 -14.39000
+1540 -47.26434 -47.26434 -15.02000
+1541 -47.18386 -47.18386 -15.74000
+1542 -47.10255 -47.10255 -16.36000
+1543 -47.02043 -47.02043 -16.73000
+1544 -46.93748 -46.93748 -17.26000
+1545 -46.85372 -46.85372 -18.22000
+1546 -46.76915 -46.76915 -19.41000
+1547 -46.68378 -46.68378 -20.03000
+1548 -46.59761 -46.59761 -19.89000
+1549 -46.51065 -46.51065 -19.71000
+1550 -46.42290 -46.42290 -19.64000
+1551 -46.33437 -46.33437 -19.75000
+1552 -46.24505 -46.24505 -20.34000
+1553 -46.15497 -46.15497 -21.09000
+1554 -46.06411 -46.06411 -21.27000
+1555 -50.11648 -50.11648 -16.97000
+1556 -50.08991 -50.08991 -16.91000
+1557 -50.06231 -50.06231 -16.41000
+1558 -50.03367 -50.03367 -15.95000
+1559 -50.00400 -50.00400 -16.14000
+1560 -49.97330 -49.97330 -16.90000
+1561 -49.94158 -49.94158 -17.53000
+1562 -49.90883 -49.90883 -17.55000
+1563 -49.87506 -49.87506 -17.37000
+1564 -49.84027 -49.84027 -17.04000
+1565 -49.80446 -49.80446 -16.70000
+1566 -49.76764 -49.76764 -16.38000
+1567 -49.72981 -49.72981 -15.72000
+1568 -49.69098 -49.69098 -15.01000
+1569 -49.65113 -49.65113 -14.65000
+1570 -49.61029 -49.61029 -14.09000
+1571 -49.56845 -49.56845 -13.31000
+1572 -49.52561 -49.52561 -12.46000
+1573 -49.48177 -49.48177 -11.31000
+1574 -49.43695 -49.43695 -10.22000
+1575 -49.39115 -49.39115  -9.29000
+1576 -47.51678 -47.51678  -9.01000
+1577 -47.44164 -47.44164 -10.12000
+1578 -47.36565 -47.36565 -11.16000
+1579 -47.28881 -47.28881 -12.26000
+1580 -47.21113 -47.21113 -13.28000
+1581 -47.13261 -47.13261 -14.12000
+1582 -47.05326 -47.05326 -14.74000
+1583 -46.97309 -46.97309 -15.60000
+1584 -46.89209 -46.89209 -16.34000
+1585 -46.81027 -46.81027 -16.61000
+1586 -46.72764 -46.72764 -17.06000
+1587 -46.64421 -46.64421 -18.02000
+1588 -46.55997 -46.55997 -19.14000
+1589 -46.47493 -46.47493 -19.69000
+1590 -46.38910 -46.38910 -19.82000
+1591 -46.30247 -46.30247 -19.70000
+1592 -46.21507 -46.21507 -19.46000
+1593 -46.12688 -46.12688 -19.40000
+1594 -46.03792 -46.03792 -19.91000
+1595 -45.94820 -45.94820 -20.64000
+1596 -45.85770 -45.85770 -21.02000
+1597 -49.89853 -49.89853 -17.05000
+1598 -49.87187 -49.87187 -16.98000
+1599 -49.84418 -49.84418 -16.45000
+1600 -49.81546 -49.81546 -15.99000
+1601 -49.78573 -49.78573 -16.35000
+1602 -49.75497 -49.75497 -17.31000
+1603 -49.72319 -49.72319 -17.93000
+1604 -49.69040 -49.69040 -17.97000
+1605 -49.65659 -49.65659 -17.85000
+1606 -49.62177 -49.62177 -17.48000
+1607 -49.58594 -49.58594 -17.02000
+1608 -49.54911 -49.54911 -16.72000
+1609 -49.51127 -49.51127 -16.09000
+1610 -49.47243 -49.47243 -15.30000
+1611 -49.43260 -49.43260 -14.92000
+1612 -49.39177 -49.39177 -14.37000
+1613 -49.34995 -49.34995 -13.51000
+1614 -49.30714 -49.30714 -12.53000
+1615 -49.26335 -49.26335 -11.25000
+1616 -49.21858 -49.21858 -10.06000
+1617 -49.17282 -49.17282  -9.16000
+1618 -47.30391 -47.30391  -9.13000
+1619 -47.22904 -47.22904 -10.16000
+1620 -47.15332 -47.15332 -11.21000
+1621 -47.07675 -47.07675 -12.28000
+1622 -46.99936 -46.99936 -13.27000
+1623 -46.92113 -46.92113 -14.00000
+1624 -46.84207 -46.84207 -14.60000
+1625 -46.76220 -46.76220 -15.44000
+1626 -46.68150 -46.68150 -16.11000
+1627 -46.59999 -46.59999 -16.46000
+1628 -46.51768 -46.51768 -17.11000
+1629 -46.43456 -46.43456 -18.14000
+1630 -46.35064 -46.35064 -18.87000
+1631 -46.26593 -46.26593 -19.12000
+1632 -46.18043 -46.18043 -19.48000
+1633 -46.09415 -46.09415 -19.63000
+1634 -46.00709 -46.00709 -19.51000
+1635 -45.91925 -45.91925 -19.54000
+1636 -45.83064 -45.83064 -19.96000
+1637 -45.74127 -45.74127 -20.40000
+1638 -45.65113 -45.65113 -20.69000
+1639 -49.68057 -49.68057 -17.25000
+1640 -49.65382 -49.65382 -17.07000
+1641 -49.62604 -49.62604 -16.54000
+1642 -49.59725 -49.59725 -16.24000
+1643 -49.56744 -49.56744 -16.75000
+1644 -49.53662 -49.53662 -17.62000
+1645 -49.50479 -49.50479 -17.85000
+1646 -49.47195 -49.47195 -17.70000
+1647 -49.43810 -49.43810 -17.57000
+1648 -49.40325 -49.40325 -17.29000
+1649 -49.36740 -49.36740 -17.06000
+1650 -49.33055 -49.33055 -16.96000
+1651 -49.29271 -49.29271 -16.43000
+1652 -49.25387 -49.25387 -15.72000
+1653 -49.21404 -49.21404 -15.29000
+1654 -49.17323 -49.17323 -14.74000
+1655 -49.13143 -49.13143 -13.78000
+1656 -49.08866 -49.08866 -12.65000
+1657 -49.04490 -49.04490 -11.21000
+1658 -49.00017 -49.00017  -9.83000
+1659 -48.95447 -48.95447  -8.83000
+1660 -47.09094 -47.09094  -9.30000
+1661 -47.01633 -47.01633 -10.33000
+1662 -46.94088 -46.94088 -11.40000
+1663 -46.86459 -46.86459 -12.52000
+1664 -46.78748 -46.78748 -13.55000
+1665 -46.70953 -46.70953 -14.08000
+1666 -46.63077 -46.63077 -14.40000
+1667 -46.55119 -46.55119 -15.11000
+1668 -46.47079 -46.47079 -15.90000
+1669 -46.38959 -46.38959 -16.51000
+1670 -46.30759 -46.30759 -17.34000
+1671 -46.22478 -46.22478 -18.15000
+1672 -46.14119 -46.14119 -18.45000
+1673 -46.05680 -46.05680 -18.75000
+1674 -45.97163 -45.97163 -19.30000
+1675 -45.88568 -45.88568 -19.65000
+1676 -45.79896 -45.79896 -19.78000
+1677 -45.71146 -45.71146 -20.05000
+1678 -45.62320 -45.62320 -20.48000
+1679 -45.53418 -45.53418 -20.70000
+1680 -45.44441 -45.44441 -20.66000
+1681 -49.46260 -49.46260 -17.30000
+1682 -49.43576 -49.43576 -16.95000
+1683 -49.40790 -49.40790 -16.51000
+1684 -49.37903 -49.37903 -16.43000
+1685 -49.34915 -49.34915 -16.89000
+1686 -49.31826 -49.31826 -17.35000
+1687 -49.28638 -49.28638 -17.21000
+1688 -49.25349 -49.25349 -16.88000
+1689 -49.21960 -49.21960 -16.75000
+1690 -49.18472 -49.18472 -16.60000
+1691 -49.14885 -49.14885 -16.56000
+1692 -49.11198 -49.11198 -16.68000
+1693 -49.07413 -49.07413 -16.54000
+1694 -49.03529 -49.03529 -15.99000
+1695 -48.99547 -48.99547 -15.49000
+1696 -48.95467 -48.95467 -14.99000
+1697 -48.91290 -48.91290 -14.05000
+1698 -48.87015 -48.87015 -12.84000
+1699 -48.82643 -48.82643 -11.28000
+1700 -48.78175 -48.78175  -9.77000
+1701 -48.73610 -48.73610  -8.62000
+1702 -46.87788 -46.87788  -9.49000
+1703 -46.80353 -46.80353 -10.59000
+1704 -46.72834 -46.72834 -11.70000
+1705 -46.65233 -46.65233 -12.93000
+1706 -46.57549 -46.57549 -14.07000
+1707 -46.49783 -46.49783 -14.37000
+1708 -46.41935 -46.41935 -14.34000
+1709 -46.34006 -46.34006 -14.91000
+1710 -46.25997 -46.25997 -15.83000
+1711 -46.17907 -46.17907 -16.76000
+1712 -46.09737 -46.09737 -17.73000
+1713 -46.01488 -46.01488 -18.21000
+1714 -45.93160 -45.93160 -18.49000
+1715 -45.84754 -45.84754 -19.09000
+1716 -45.76269 -45.76269 -19.54000
+1717 -45.67708 -45.67708 -19.56000
+1718 -45.59069 -45.59069 -19.77000
+1719 -45.50353 -45.50353 -20.37000
+1720 -45.41562 -45.41562 -20.92000
+1721 -45.32695 -45.32695 -21.10000
+1722 -45.23752 -45.23752 -20.87000
+1723 -49.24463 -49.24463 -17.17000
+1724 -49.21769 -49.21769 -16.54000
+1725 -49.18974 -49.18974 -16.18000
+1726 -49.16079 -49.16079 -16.28000
+1727 -49.13084 -49.13084 -16.48000
+1728 -49.09990 -49.09990 -16.56000
+1729 -49.06795 -49.06795 -16.34000
+1730 -49.03502 -49.03502 -16.12000
+1731 -49.00109 -49.00109 -16.08000
+1732 -48.96618 -48.96618 -15.91000
+1733 -48.93028 -48.93028 -15.73000
+1734 -48.89340 -48.89340 -15.80000
+1735 -48.85554 -48.85554 -16.00000
+1736 -48.81670 -48.81670 -15.87000
+1737 -48.77688 -48.77688 -15.45000
+1738 -48.73610 -48.73610 -14.94000
+1739 -48.69434 -48.69434 -14.03000
+1740 -48.65162 -48.65162 -12.80000
+1741 -48.60794 -48.60794 -11.31000
+1742 -48.56330 -48.56330  -9.78000
+1743 -48.51770 -48.51770  -8.55000
+1744 -46.66472 -46.66472  -9.49000
+1745 -46.59063 -46.59063 -10.86000
+1746 -46.51571 -46.51571 -12.06000
+1747 -46.43996 -46.43996 -13.34000
+1748 -46.36339 -46.36339 -14.46000
+1749 -46.28601 -46.28601 -14.65000
+1750 -46.20782 -46.20782 -14.63000
+1751 -46.12882 -46.12882 -15.18000
+1752 -46.04902 -46.04902 -15.99000
+1753 -45.96842 -45.96842 -17.00000
+1754 -45.88703 -45.88703 -18.07000
+1755 -45.80485 -45.80485 -18.56000
+1756 -45.72188 -45.72188 -19.11000
+1757 -45.63814 -45.63814 -19.85000
+1758 -45.55362 -45.55362 -19.95000
+1759 -45.46833 -45.46833 -19.60000
+1760 -45.38228 -45.38228 -19.88000
+1761 -45.29546 -45.29546 -20.64000
+1762 -45.20789 -45.20789 -21.10000
+1763 -45.11956 -45.11956 -21.09000
+1764 -45.03049 -45.03049 -20.87000
+1765 -49.02664 -49.02664 -16.87000
+1766 -48.99961 -48.99961 -16.07000
+1767 -48.97157 -48.97157 -15.70000
+1768 -48.94255 -48.94255 -15.73000
+1769 -48.91253 -48.91253 -15.76000
+1770 -48.88152 -48.88152 -15.71000
+1771 -48.84952 -48.84952 -15.64000
+1772 -48.81654 -48.81654 -15.62000
+1773 -48.78257 -48.78257 -15.57000
+1774 -48.74763 -48.74763 -15.31000
+1775 -48.71170 -48.71170 -14.94000
+1776 -48.67480 -48.67480 -14.84000
+1777 -48.63693 -48.63693 -15.09000
+1778 -48.59809 -48.59809 -15.44000
+1779 -48.55828 -48.55828 -15.43000
+1780 -48.51750 -48.51750 -14.86000
+1781 -48.47577 -48.47577 -13.88000
+1782 -48.43308 -48.43308 -12.75000
+1783 -48.38943 -48.38943 -11.40000
+1784 -48.34483 -48.34483  -9.87000
+1785 -48.29927 -48.29927  -8.59000
+1786 -46.45147 -46.45147  -9.49000
+1787 -46.37763 -46.37763 -11.09000
+1788 -46.30297 -46.30297 -12.41000
+1789 -46.22749 -46.22749 -13.70000
+1790 -46.15120 -46.15120 -14.67000
+1791 -46.07409 -46.07409 -14.89000
+1792 -45.99618 -45.99618 -15.21000
+1793 -45.91747 -45.91747 -15.75000
+1794 -45.83796 -45.83796 -16.29000
+1795 -45.75766 -45.75766 -17.13000
+1796 -45.67657 -45.67657 -18.14000
+1797 -45.59469 -45.59469 -18.91000
+1798 -45.51204 -45.51204 -19.71000
+1799 -45.42861 -45.42861 -20.42000
+1800 -45.34441 -45.34441 -20.34000
+1801 -45.25945 -45.25945 -20.12000
+1802 -45.17372 -45.17372 -20.53000
+1803 -45.08724 -45.08724 -21.04000
+1804 -45.00001 -45.00001 -21.20000
+1805 -44.91202 -44.91202 -21.13000
+1806 -44.82330 -44.82330 -21.06000
+1807 -48.80865 -48.80865 -16.37000
+1808 -48.78152 -48.78152 -15.53000
+1809 -48.75340 -48.75340 -15.13000
+1810 -48.72429 -48.72429 -15.02000
+1811 -48.69420 -48.69420 -15.09000
+1812 -48.66313 -48.66313 -15.23000
+1813 -48.63108 -48.63108 -15.34000
+1814 -48.59804 -48.59804 -15.33000
+1815 -48.56404 -48.56404 -15.06000
+1816 -48.52906 -48.52906 -14.62000
+1817 -48.49311 -48.49311 -14.24000
+1818 -48.45619 -48.45619 -14.06000
+1819 -48.41831 -48.41831 -14.25000
+1820 -48.37946 -48.37946 -14.85000
+1821 -48.33965 -48.33965 -15.37000
+1822 -48.29889 -48.29889 -14.96000
+1823 -48.25717 -48.25717 -13.96000
+1824 -48.21451 -48.21451 -12.90000
+1825 -48.17089 -48.17089 -11.67000
+1826 -48.12633 -48.12633 -10.14000
+1827 -48.08083 -48.08083  -8.81000
+1828 -46.23812 -46.23812  -9.42000
+1829 -46.16454 -46.16454 -11.01000
+1830 -46.09014 -46.09014 -12.39000
+1831 -46.01492 -46.01492 -13.72000
+1832 -45.93889 -45.93889 -14.72000
+1833 -45.86206 -45.86206 -15.17000
+1834 -45.78443 -45.78443 -15.70000
+1835 -45.70600 -45.70600 -16.13000
+1836 -45.62678 -45.62678 -16.48000
+1837 -45.54677 -45.54677 -17.16000
+1838 -45.46598 -45.46598 -18.09000
+1839 -45.38441 -45.38441 -18.92000
+1840 -45.30207 -45.30207 -19.68000
+1841 -45.21895 -45.21895 -20.36000
+1842 -45.13507 -45.13507 -20.54000
+1843 -45.05043 -45.05043 -20.67000
+1844 -44.96503 -44.96503 -21.05000
+1845 -44.87888 -44.87888 -21.13000
+1846 -44.79198 -44.79198 -21.05000
+1847 -44.70434 -44.70434 -21.19000
+1848 -44.61596 -44.61596 -21.41000
+1849 -48.59065 -48.59065 -15.93000
+1850 -48.56342 -48.56342 -15.10000
+1851 -48.53522 -48.53522 -14.58000
+1852 -48.50603 -48.50603 -14.32000
+1853 -48.47587 -48.47587 -14.46000
+1854 -48.44473 -48.44473 -14.94000
+1855 -48.41262 -48.41262 -15.36000
+1856 -48.37954 -48.37954 -15.21000
+1857 -48.34549 -48.34549 -14.69000
+1858 -48.31048 -48.31048 -14.15000
+1859 -48.27450 -48.27450 -13.82000
+1860 -48.23756 -48.23756 -13.62000
+1861 -48.19967 -48.19967 -13.72000
+1862 -48.16082 -48.16082 -14.35000
+1863 -48.12101 -48.12101 -15.10000
+1864 -48.08026 -48.08026 -15.15000
+1865 -48.03856 -48.03856 -14.24000
+1866 -47.99592 -47.99592 -13.13000
+1867 -47.95233 -47.95233 -12.07000
+1868 -47.90781 -47.90781 -10.71000
+1869 -47.86235 -47.86235  -9.31000
+1870 -46.02469 -46.02469  -9.31000
+1871 -45.95135 -45.95135 -10.80000
+1872 -45.87721 -45.87721 -12.18000
+1873 -45.80225 -45.80225 -13.46000
+1874 -45.72649 -45.72649 -14.63000
+1875 -45.64993 -45.64993 -15.39000
+1876 -45.57258 -45.57258 -15.98000
+1877 -45.49443 -45.49443 -16.34000
+1878 -45.41549 -45.41549 -16.63000
+1879 -45.33578 -45.33578 -17.17000
+1880 -45.25528 -45.25528 -17.98000
+1881 -45.17401 -45.17401 -18.69000
+1882 -45.09197 -45.09197 -19.15000
+1883 -45.00917 -45.00917 -19.64000
+1884 -44.92560 -44.92560 -20.16000
+1885 -44.84128 -44.84128 -20.62000
+1886 -44.75620 -44.75620 -20.91000
+1887 -44.67038 -44.67038 -20.86000
+1888 -44.58382 -44.58382 -20.86000
+1889 -44.49651 -44.49651 -21.23000
+1890 -44.40847 -44.40847 -21.53000
+1891 -48.37263 -48.37263 -15.77000
+1892 -48.34531 -48.34531 -15.12000
+1893 -48.31702 -48.31702 -14.54000
+1894 -48.28776 -48.28776 -14.11000
+1895 -48.25752 -48.25752 -14.15000
+1896 -48.22632 -48.22632 -14.69000
+1897 -48.19415 -48.19415 -15.36000
+1898 -48.16102 -48.16102 -15.23000
+1899 -48.12693 -48.12693 -14.65000
+1900 -48.09188 -48.09188 -14.17000
+1901 -48.05588 -48.05588 -13.85000
+1902 -48.01892 -48.01892 -13.63000
+1903 -47.98101 -47.98101 -13.70000
+1904 -47.94216 -47.94216 -14.22000
+1905 -47.90236 -47.90236 -14.86000
+1906 -47.86161 -47.86161 -15.17000
+1907 -47.81993 -47.81993 -14.57000
+1908 -47.77731 -47.77731 -13.61000
+1909 -47.73375 -47.73375 -12.59000
+1910 -47.68927 -47.68927 -11.24000
+1911 -47.64385 -47.64385  -9.79000
+1912 -45.81117 -45.81117  -9.40000
+1913 -45.73808 -45.73808 -10.80000
+1914 -45.66418 -45.66418 -12.10000
+1915 -45.58949 -45.58949 -13.29000
+1916 -45.51399 -45.51399 -14.53000
+1917 -45.43770 -45.43770 -15.48000
+1918 -45.36061 -45.36061 -16.05000
+1919 -45.28275 -45.28275 -16.50000
+1920 -45.20410 -45.20410 -16.92000
+1921 -45.12467 -45.12467 -17.34000
+1922 -45.04446 -45.04446 -17.85000
+1923 -44.96349 -44.96349 -18.36000
+1924 -44.88175 -44.88175 -18.75000
+1925 -44.79926 -44.79926 -19.20000
+1926 -44.71600 -44.71600 -19.87000
+1927 -44.63200 -44.63200 -20.51000
+1928 -44.54724 -44.54724 -20.87000
+1929 -44.46175 -44.46175 -21.08000
+1930 -44.37551 -44.37551 -21.41000
+1931 -44.28854 -44.28854 -21.77000
+1932 -44.20084 -44.20084 -21.81000
+1933 -48.15461 -48.15461 -16.07000
+1934 -48.12720 -48.12720 -15.58000
+1935 -48.09882 -48.09882 -15.02000
+1936 -48.06947 -48.06947 -14.45000
+1937 -48.03917 -48.03917 -14.28000
+1938 -48.00790 -48.00790 -14.69000
+1939 -47.97568 -47.97568 -15.31000
+1940 -47.94250 -47.94250 -15.28000
+1941 -47.90836 -47.90836 -14.85000
+1942 -47.87328 -47.87328 -14.44000
+1943 -47.83725 -47.83725 -14.10000
+1944 -47.80027 -47.80027 -13.90000
+1945 -47.76234 -47.76234 -13.91000
+1946 -47.72348 -47.72348 -14.17000
+1947 -47.68368 -47.68368 -14.58000
+1948 -47.64294 -47.64294 -14.97000
+1949 -47.60128 -47.60128 -14.83000
+1950 -47.55868 -47.55868 -14.12000
+1951 -47.51515 -47.51515 -13.04000
+1952 -47.47070 -47.47070 -11.65000
+1953 -47.42533 -47.42533 -10.25000
+1954 -45.59755 -45.59755  -9.53000
+1955 -45.52471 -45.52471 -10.86000
+1956 -45.45107 -45.45107 -12.12000
+1957 -45.37662 -45.37662 -13.31000
+1958 -45.30139 -45.30139 -14.48000
+1959 -45.22536 -45.22536 -15.46000
+1960 -45.14855 -45.14855 -16.09000
+1961 -45.07096 -45.07096 -16.67000
+1962 -44.99259 -44.99259 -17.15000
+1963 -44.91344 -44.91344 -17.49000
+1964 -44.83353 -44.83353 -17.81000
+1965 -44.75285 -44.75285 -18.23000
+1966 -44.67142 -44.67142 -18.82000
+1967 -44.58922 -44.58922 -19.46000
+1968 -44.50628 -44.50628 -20.13000
+1969 -44.42259 -44.42259 -20.73000
+1970 -44.33815 -44.33815 -21.31000
+1971 -44.25298 -44.25298 -21.91000
+1972 -44.16707 -44.16707 -22.32000
+1973 -44.08043 -44.08043 -22.51000
+1974 -43.99306 -43.99306 -22.50000
+1975 -47.93658 -47.93658 -17.07000
+1976 -47.90907 -47.90907 -16.57000
+1977 -47.88061 -47.88061 -15.82000
+1978 -47.85118 -47.85118 -15.01000
+1979 -47.82080 -47.82080 -14.72000
+1980 -47.78947 -47.78947 -15.09000
+1981 -47.75719 -47.75719 -15.57000
+1982 -47.72396 -47.72396 -15.55000
+1983 -47.68978 -47.68978 -15.18000
+1984 -47.65466 -47.65466 -14.78000
+1985 -47.61860 -47.61860 -14.42000
+1986 -47.58160 -47.58160 -14.16000
+1987 -47.54366 -47.54366 -14.02000
+1988 -47.50479 -47.50479 -14.07000
+1989 -47.46499 -47.46499 -14.22000
+1990 -47.42426 -47.42426 -14.58000
+1991 -47.38261 -47.38261 -14.78000
+1992 -47.34003 -47.34003 -14.39000
+1993 -47.29653 -47.29653 -13.43000
+1994 -47.25212 -47.25212 -12.14000
+1995 -47.20679 -47.20679 -10.77000
+1996 -45.38386 -45.38386  -9.61000
+1997 -45.31126 -45.31126 -11.03000
+1998 -45.23786 -45.23786 -12.33000
+1999 -45.16367 -45.16367 -13.52000
+2000 -45.08869 -45.08869 -14.62000
+2001 -45.01293 -45.01293 -15.61000
+2002 -44.93638 -44.93638 -16.33000
+2003 -44.85906 -44.85906 -16.92000
+2004 -44.78097 -44.78097 -17.39000
+2005 -44.70211 -44.70211 -17.73000
+2006 -44.62248 -44.62248 -18.10000
+2007 -44.54210 -44.54210 -18.55000
+2008 -44.46096 -44.46096 -19.22000
+2009 -44.37907 -44.37907 -19.97000
+2010 -44.29643 -44.29643 -20.60000
+2011 -44.21305 -44.21305 -21.22000
+2012 -44.12893 -44.12893 -21.94000
+2013 -44.04407 -44.04407 -22.49000
+2014 -43.95849 -43.95849 -22.73000
+2015 -43.87217 -43.87217 -23.02000
+2016 -43.78514 -43.78514 -23.36000
diff --git a/examples/F90/bufr_read_synop.f90 b/examples/F90/bufr_read_synop.f90
index 41ae6e5..efdfb05 100644
--- a/examples/F90/bufr_read_synop.f90
+++ b/examples/F90/bufr_read_synop.f90
@@ -1,5 +1,5 @@
 !
-!Copyright 2005-2015 ECMWF.
+!Copyright 2005-2016 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.
@@ -85,23 +85,23 @@ integer(kind=4)    :: cloudAmount,cloudBaseHeight,lowCloud,midCloud,highCloud
     ! read so we will use the # (occurrence) operator accordingly. 
         
     ! Cloud amount (low and middleclouds)
-    call codes_get(ibufr,'cloudAmount#1',cloudAmount)
+    call codes_get(ibufr,'#1#cloudAmount',cloudAmount)
     write(*,*) '  cloudAmount (low and middle):',cloudAmount
         
     ! Height of cloud base
-    call codes_get(ibufr,'heightOfBaseOfCloud#1',cloudBaseHeight)
+    call codes_get(ibufr,'#1#heightOfBaseOfCloud',cloudBaseHeight)
     write(*,*) '  heightOfBaseOfCloud:',cloudBaseHeight
         
     ! Cloud type (low clouds)
-    call codes_get(ibufr,'cloudType#1',lowCloud)
+    call codes_get(ibufr,'#1#cloudType',lowCloud)
     write(*,*) '  cloudType (low):',lowCloud 
         
     ! Cloud type (middle clouds)
-    call codes_get(ibufr,'cloudType#2',midCloud)
+    call codes_get(ibufr,'#2#cloudType',midCloud)
     write(*,*) '  cloudType (middle):',midCloud 
     
     ! Cloud type (high clouds)
-    call codes_get(ibufr,'cloudType#3',highCloud)
+    call codes_get(ibufr,'#3#cloudType',highCloud)
     write(*,*) '  cloudType (high):',highCloud 
    
     ! release the bufr message
diff --git a/examples/F90/bufr_read_synop.sh b/examples/F90/bufr_read_synop.sh
index 68cbcc3..a8b3c47 100755
--- a/examples/F90/bufr_read_synop.sh
+++ b/examples/F90/bufr_read_synop.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -24,7 +24,7 @@ rm -f $fTmp | true
 REDIRECT=/dev/null
 
 #Write the values into a file and compare with reference
-${examples_dir}/f_bufr_read_synop #2> $REDIRECT > $fTmp
+${examples_dir}/eccodes_f_bufr_read_synop #2> $REDIRECT > $fTmp
 
 #TODO: check the output
 
diff --git a/examples/F90/bufr_read_temp.f90 b/examples/F90/bufr_read_temp.f90
index 7134129..c057a65 100644
--- a/examples/F90/bufr_read_temp.f90
+++ b/examples/F90/bufr_read_temp.f90
@@ -1,103 +1,81 @@
-!
-!Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
+! 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.
 !
 !
-! FOTRAN 90 Implementation: bufr_read_temp
+! FORTRAN 90 Implementation: bufr_read_temp
 !
-! Description: how to read temperature significant levels from TEMP BUFR messages.
+! Description: how to read levels from TEMP BUFR messages.
 !
 ! Please note that TEMP reports can be encoded in various ways in BUFR. Therefore the code
 ! below might not work directly for other types of TEMP messages than the one used in the
 ! example. It is advised to use bufr_dump first to understand the structure of these messages.
-
+!
 program bufr_read_temp
-use eccodes
-implicit none
-integer            :: ifile
-integer            :: iret
-integer            :: ibufr
-integer            :: i, count=0
-integer(kind=4)    :: num
-real(kind=8), dimension(:), allocatable :: presVal,geoVal,tVal ,tdVal
-character(len=128)   :: keyName
+  use eccodes
+  implicit none
+  integer            :: ifile
+  integer            :: iret,ierr
+  integer            :: ibufr
+  integer            :: i, count=0
+  integer(kind=4),dimension(:), allocatable  :: timePeriod,extendedVerticalSoundingSignificance
+  integer(kind=4)  :: blockNumber,stationNumber,numberOfLevels
+  character(len=30) :: str
+  real(kind=8),dimension(:), allocatable :: pressure,airTemperature,dewpointTemperature
+  real(kind=8),dimension(:), allocatable :: geopotentialHeight,latitudeDisplacement,longitudeDisplacement
+  real(kind=8),dimension(:), allocatable :: windDirection,windSpeed
+  character(len=128)   :: keyName
 
-  call codes_open_file(ifile,'../../data/bufr/temp_101.bufr','r')
+  call codes_open_file(ifile,'../../data/bufr/PraticaTemp.bufr','r')
 
-! the first bufr message is loaded from file
-! ibufr is the bufr id to be used in subsequent calls
+  ! the first bufr message is loaded from file
+  ! ibufr is the bufr id to be used in subsequent calls
   call codes_bufr_new_from_file(ifile,ibufr,iret)
-
   do while (iret/=CODES_END_OF_FILE)
-
     write(*,*) 'message: ',count
-
-    ! we need to instruct ecCodes to expand all the descriptors 
-    ! i.e. unpack the data values
-    call codes_set(ibufr,"unpack",1);
- 
-    ! In what follows we rely on the fact that for 
-    ! temperature significant levels the value of key 
-    ! verticalSoundingSignificance is 4 (see flag table 8001 for details).
-    !
-    ! In our BUFR message verticalSoundingSignificance is always followed by
-    !      geopotential, airTemperature, dewpointTemperature,
-    !      windDirection, windSpeed and pressure. 
-    ! 
-    ! So in order to access any of these keys we need to use the
-    ! condition: verticalSoundingSignificance=4.
-
-    ! ---- Get pressure ---------------------------
-    call codes_get(ibufr,'/verticalSoundingSignificance=4/pressure',presVal);
-
-    ! ---- Get gepotential ------------------------
-    call codes_get(ibufr,'/verticalSoundingSignificance=4/geopotential',geoVal)
-
-    ! ---- Get temperature --------------------------------
-    call codes_get(ibufr,'/verticalSoundingSignificance=4/airTemperature',tVal)    
-     
-    ! ---- Get dew point temperature  -----------------------
-    call codes_get(ibufr,'/verticalSoundingSignificance=4/dewpointTemperature',tdVal)        
-
-    ! ---- Check that all arrays are same size
-    if (size(presVal)/=size(geoVal) .or. size(tVal)/=size(tdVal) .or. size(tdVal)/=size(presVal)) then
-      print *,'inconsistent array dimension'
-      exit
-    endif
-    num=size(presVal)
-     
-    ! ---- Print the values --------------------------------
-    write(*,*) 'level    pres    geo    t    td'
-    write(*,*) "--------------------------------------" 
-     
-    do i=1,num
-        write(*,*) i,presVal(i),geoVal(i),tVal(i),tdVal(i)
-    end do 
-     
-    
-    ! free arrays 
-    deallocate(presVal)
-    deallocate(geoVal)
-    deallocate(tVal)
-    deallocate(tdVal) 
-
+    call codes_set(ibufr,'unpack',1)
+    call codes_get(ibufr,'timePeriod',timePeriod)
+    call codes_get(ibufr,'pressure',pressure)
+    call codes_get(ibufr,'extendedVerticalSoundingSignificance',extendedVerticalSoundingSignificance)
+    call codes_get(ibufr,'geopotentialHeight',geopotentialHeight)
+    call codes_get(ibufr,'latitudeDisplacement',latitudeDisplacement)
+    call codes_get(ibufr,'longitudeDisplacement',longitudeDisplacement)
+    call codes_get(ibufr,'airTemperature',airTemperature)
+    call codes_get(ibufr,'dewpointTemperature',dewpointTemperature)
+    call codes_get(ibufr,'windDirection',windDirection)
+    call codes_get(ibufr,'windSpeed',windSpeed)
+    call codes_get(ibufr,'blockNumber',blockNumber)
+    call codes_get(ibufr,'stationNumber',stationNumber)
+    print *,'station',blockNumber,stationNumber
+    print *,'timePeriod pressure geopotentialHeight latitudeDisplacement &
+          &longitudeDisplacement airTemperature windDirection windSpeed significance'
+    do i=1,size(windSpeed)
+      write(*,'(I5,6X,F9.1,2X,F9.2,10X,F8.2,14X,F8.2,16X,F8.2,6X,F8.2,4X,F8.2,4X,I0)') timePeriod(i),pressure(i),&
+          &geopotentialHeight(i),latitudeDisplacement(i),&
+          &longitudeDisplacement(i),airTemperature(i),windDirection(i),windSpeed(i),extendedVerticalSoundingSignificance(i)
+    enddo
+    ! free arrays
+    deallocate(timePeriod)
+    deallocate(pressure)
+    deallocate(geopotentialHeight)
+    deallocate(latitudeDisplacement)
+    deallocate(longitudeDisplacement)
+    deallocate(airTemperature)
+    deallocate(dewpointTemperature)
+    deallocate(windDirection)
+    deallocate(windSpeed)
+    deallocate(extendedVerticalSoundingSignificance)
     ! release the bufr message
     call codes_release(ibufr)
-
     ! load the next bufr message
     call codes_bufr_new_from_file(ifile,ibufr,iret)
-    
     count=count+1
-    
-  end do  
-
-! close file  
+  end do
+  ! close file
   call codes_close_file(ifile)
- 
 
 end program bufr_read_temp
diff --git a/examples/F90/bufr_read_temp.sh b/examples/F90/bufr_read_temp.sh
index 6801263..c563159 100755
--- a/examples/F90/bufr_read_temp.sh
+++ b/examples/F90/bufr_read_temp.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -18,18 +18,15 @@ label="bufr_read_temp_f"
 fTmp=${label}.tmp.txt
 rm -f $fTmp | true
 
-#We check "temp_101.bufr". The path is
-#hardcoded in the example
+# The path to the BUFR file is hardcoded in the example
 
 REDIRECT=/dev/null
 
-#Write the key values into a file
-${examples_dir}/f_bufr_read_temp 2> $REDIRECT > $fTmp
+# Run the example
+${examples_dir}/eccodes_f_bufr_read_temp 2> $REDIRECT > $fTmp
 
 #TODO: check the results
 
-#cat  $fTmp
-
 #Clean up
-rm -f $fTmp | true
+rm -f $fTmp
 
diff --git a/examples/F90/bufr_read_tropical_cyclone.f90 b/examples/F90/bufr_read_tropical_cyclone.f90
new file mode 100644
index 0000000..90b139b
--- /dev/null
+++ b/examples/F90/bufr_read_tropical_cyclone.f90
@@ -0,0 +1,275 @@
+
+!Copyright 2005-2016 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.
+!
+!
+! FOTRAN 90 Implementation: bufr_read_tropical_cyclone
+!
+! Description: how to read data for a tropical cyclone BUFR message.
+! 
+
+program bufr_read_tropical_cyclone
+  use eccodes
+  implicit none
+  integer            :: ifile
+  integer            :: iret
+  integer            :: ibufr,skipMember
+  integer            :: significance
+  integer            :: year,month,day,hour,minute 
+  integer            :: i,j,k,ierr,count=1
+  integer            :: rankPosition,rankSignificance,rankPressure,rankWind
+  integer            :: rankPeriod,numberOfPeriods
+
+  real(kind=8) :: latitudeCentre,longitudeCentre
+  real(kind=8), dimension(:), allocatable :: latitudeMaxWind0,longitudeMaxWind0,windMaxWind0
+  real(kind=8), dimension(:), allocatable :: latitudeAnalysis,longitudeAnalysis,pressureAnalysis
+  real(kind=8), dimension(:,:), allocatable :: latitude,longitude,pressure
+  real(kind=8), dimension(:,:), allocatable :: latitudeWind,longitudeWind,wind
+  integer(kind=4), dimension(:), allocatable :: memberNumber,period
+  real(kind=8), dimension(:), allocatable :: values
+  integer(kind=4), dimension(:), allocatable :: ivalues
+
+  character(len=8)   :: rankSignificanceStr,rankPositionStr,rankPressureStr,rankWindStr
+  character(len=8)   :: stormIdentifier,rankPeriodStr
+
+  call codes_open_file(ifile,'../../data/bufr/tropical_cyclone.bufr','r')
+
+  ! the first BUFR message is loaded from file.
+  ! ibufr is the BUFR id to be used in subsequent calls
+  call codes_bufr_new_from_file(ifile,ibufr,iret)
+
+  do while (iret/=CODES_END_OF_FILE)
+
+    write(*,'(A,I3,A)') '**************** MESSAGE: ',count,'  *****************'
+
+    ! we need to instruct ecCodes to unpack the data values
+    call codes_set(ibufr,"unpack",1);
+
+    call codes_get(ibufr,'year',year);
+    call codes_get(ibufr,'month',month);
+    call codes_get(ibufr,'day',day);
+    call codes_get(ibufr,'hour',hour);
+    call codes_get(ibufr,'minute',minute);
+    write(*,'(A,I0,A,I0,A,I0,A,I0,A,I0,A,I0)')'Date and time: ',day,'.',month,'.',year,'  ',hour,':',minute
+
+    call codes_get(ibufr,'stormIdentifier',stormIdentifier)
+    write(*,'(A,A)')'Storm identifier: ',stormIdentifier
+
+    !How many different timePeriod in the data structure?
+    rankPeriod=0
+    ierr=0
+    do while(ierr==0) 
+      rankPeriod=rankPeriod+1
+      write (rankPeriodStr,'(I0)')rankPeriod 
+      call codes_get(ibufr,'#'//trim(rankPeriodStr)//'#timePeriod',period,ierr)
+      if(allocated(period)) deallocate(period)
+    enddo
+    !the numberOfPeriods includes the analysis (period=0)
+    numberOfPeriods=rankPeriod
+
+    call codes_get(ibufr,'ensembleMemberNumber',memberNumber)
+
+    allocate(latitude(size(memberNumber),numberOfPeriods))
+    allocate(longitude(size(memberNumber),numberOfPeriods))
+    allocate(pressure(size(memberNumber),numberOfPeriods))
+    allocate(latitudeWind(size(memberNumber),numberOfPeriods))
+    allocate(longitudeWind(size(memberNumber),numberOfPeriods))
+    allocate(wind(size(memberNumber),numberOfPeriods))
+    allocate(values(size(memberNumber)))
+    allocate(period(numberOfPeriods))
+    period(1)=0
+
+    ! Observed Storm Centre
+    call codes_get(ibufr,'#1#meteorologicalAttributeSignificance',significance);
+    call codes_get(ibufr,'#1#latitude',latitudeCentre);
+    call codes_get(ibufr,'#1#longitude',longitudeCentre);
+    if (significance/=1) then
+      print *,'ERROR: unexpected #1#meteorologicalAttributeSignificance'
+      stop 1
+    endif
+    if (latitudeCentre==CODES_MISSING_DOUBLE .and. longitudeCentre==CODES_MISSING_DOUBLE) then
+      write(*,'(a)')'Observed storm centre position missing'
+    else
+      write(*,'(A,F8.2,A,F8.2)')'Observed storm centre: latitude=',latitudeCentre,' longitude=',longitudeCentre
+    endif 
+
+    ! Location of storm in perturbed analysis
+    call codes_get(ibufr,'#2#meteorologicalAttributeSignificance',significance);
+    call codes_get(ibufr,'#2#latitude',latitudeAnalysis);
+    call codes_get(ibufr,'#2#longitude',longitudeAnalysis);
+    call codes_get(ibufr,'#1#pressureReducedToMeanSeaLevel',pressureAnalysis);
+    if (significance/=4) then
+      print *,'ERROR: unexpected #2#meteorologicalAttributeSignificance'
+      stop 1
+    endif
+    if (size(latitudeAnalysis)==size(memberNumber)) then
+      latitude(:,1)=latitudeAnalysis
+      longitude(:,1)=longitudeAnalysis
+      pressure(:,1)=pressureAnalysis
+    else
+      latitude(:,1)=latitudeAnalysis(1)
+      longitude(:,1)=longitudeAnalysis(1)
+      pressure(:,1)=pressureAnalysis(1)
+    endif
+
+    ! Location of Maximum Wind
+    call codes_get(ibufr,'#3#meteorologicalAttributeSignificance',significance);
+    call codes_get(ibufr,'#3#latitude',latitudeMaxWind0);
+    call codes_get(ibufr,'#3#longitude',longitudeMaxWind0);
+    if (significance/=3) then
+      print *,'ERROR: unexpected #3#meteorologicalAttributeSignificance=',significance
+      stop 1
+    endif
+    call codes_get(ibufr,'#1#windSpeedAt10M',windMaxWind0);
+    if (size(latitudeMaxWind0)==size(memberNumber)) then
+      latitudeWind(:,1)=latitudeMaxWind0
+      longitudeWind(:,1)=longitudeMaxWind0
+      wind(:,1)=windMaxWind0
+    else
+      latitudeWind(:,1)=latitudeMaxWind0(1)
+      longitudeWind(:,1)=longitudeMaxWind0(1)
+      wind(:,1)=windMaxWind0(1)
+    endif
+
+    rankSignificance=3
+    rankPosition=3
+    rankPressure=1
+    rankWind=1
+    rankPeriod=0
+
+    !loop on all periods excluding analysis period(1)=0
+    do i=2,numberOfPeriods
+
+      rankPeriod=rankPeriod+1
+      write (rankPeriodStr,'(I0)')rankPeriod 
+      call codes_get(ibufr,'#'//trim(rankPeriodStr)//'#timePeriod',ivalues);
+      do k=1,size(ivalues)
+        if (ivalues(k)/=CODES_MISSING_LONG) then
+          period(i)=ivalues(k)
+          exit
+        endif
+      enddo
+      deallocate(ivalues)
+      
+      !Location of the storm
+      rankSignificance=rankSignificance+1
+      write (rankSignificanceStr,'(I0)')rankSignificance 
+      call codes_get(ibufr,'#'//trim(rankSignificanceStr)//'#meteorologicalAttributeSignificance',ivalues);
+      do k=1,size(ivalues)
+        if (ivalues(k)/=CODES_MISSING_LONG) then
+          significance=ivalues(k)
+          exit
+        endif
+      enddo
+      deallocate(ivalues)
+
+      rankPosition=rankPosition+1
+      write (rankPositionStr,'(I0)')rankPosition 
+      call codes_get(ibufr,'#'//trim(rankPositionStr)//'#latitude',values);
+      latitude(:,i)=values
+      call codes_get(ibufr,'#'//trim(rankPositionStr)//'#longitude',values);
+      longitude(:,i)=values
+
+      if (significance==1) then
+        rankPressure=rankPressure+1
+        write (rankPressureStr,'(I0)')rankPressure 
+        call codes_get(ibufr,'#'//trim(rankPressureStr)//'#pressureReducedToMeanSeaLevel',values);
+        pressure(:,i)=values
+      else
+        print *,'ERROR: unexpected meteorologicalAttributeSignificance=',significance
+        stop 1
+      endif
+
+      !Location of maximum wind
+      rankSignificance=rankSignificance+1
+      write (rankSignificanceStr,'(I0)')rankSignificance 
+      call codes_get(ibufr,'#'//trim(rankSignificanceStr)//'#meteorologicalAttributeSignificance',ivalues);
+      do k=1,size(ivalues)
+        if (ivalues(k)/=CODES_MISSING_LONG) then
+          significance=ivalues(k)
+          exit
+        endif
+      enddo
+      deallocate(ivalues)
+
+      rankPosition=rankPosition+1
+      write (rankPositionStr,'(I0)')rankPosition 
+      call codes_get(ibufr,'#'//trim(rankPositionStr)//'#latitude',values);
+      latitudeWind(:,i)=values
+      call codes_get(ibufr,'#'//trim(rankPositionStr)//'#longitude',values);
+      longitudeWind(:,i)=values
+
+      if (significance==3) then
+        rankWind=rankWind+1
+        write (rankWindStr,'(I0)')rankWind 
+        call codes_get(ibufr,'#'//trim(rankWindStr)//'#windSpeedAt10M',values);
+        wind(:,i)=values
+      else
+        print *,'ERROR: unexpected meteorologicalAttributeSignificance=,',significance
+        stop 1
+      endif
+
+    enddo
+
+    ! ---- Print the values --------------------------------
+    do i=1,size(memberNumber)
+      skipMember=1
+      do j=1,size(period)
+        if (latitude(i,j)/=CODES_MISSING_DOUBLE .OR. latitudeWind(i,j)/=CODES_MISSING_DOUBLE) then
+          skipMember=0
+          exit
+        endif
+      enddo
+      if (skipMember/=1) then
+
+        write(*,'(A,I3)') '== Member ',memberNumber(i)
+        write(*,*) 'step  latitude   longitude   pressure    latitude   longitude   wind'
+        do j=1,size(period)
+          if (latitude(i,j)/=CODES_MISSING_DOUBLE .OR. latitudeWind(i,j)/=CODES_MISSING_DOUBLE) then
+          write(*,'( I4,2X,F8.2,4X,F8.2,3X,F9.1,2X,F8.2,4X,F8.2,2X,F8.2)') period(j),latitude(i,j),longitude(i,j),pressure(i,j),&
+          &latitudeWind(i,j),longitudeWind(i,j),wind(i,j)
+          endif
+        enddo
+
+      endif
+    enddo
+
+    ! deallocating the arrays is very important
+    ! because the behaviour of the codes_get functions is as follows:
+    ! if the array is not allocated then allocate
+    ! if the array is already allocated only copy the values
+    deallocate(values)
+    deallocate(latitude)
+    deallocate(longitude)
+    deallocate(pressure)
+    deallocate(latitudeWind)
+    deallocate(longitudeWind)
+    deallocate(wind)
+    deallocate(period)
+    deallocate(latitudeAnalysis)
+    deallocate(longitudeAnalysis)
+    deallocate(pressureAnalysis)
+    deallocate(memberNumber)
+    deallocate(latitudeMaxWind0)
+    deallocate(longitudeMaxWind0)
+    deallocate(windMaxWind0)
+
+    ! release the BUFR message
+    call codes_release(ibufr)
+
+    ! load the next BUFR message
+    call codes_bufr_new_from_file(ifile,ibufr,iret)
+
+    count=count+1
+
+  end do  
+
+  ! close file  
+  call codes_close_file(ifile)
+ 
+end program bufr_read_tropical_cyclone
diff --git a/examples/F90/bufr_read_tropical_cyclone.sh b/examples/F90/bufr_read_tropical_cyclone.sh
new file mode 100755
index 0000000..d4188ea
--- /dev/null
+++ b/examples/F90/bufr_read_tropical_cyclone.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+# Copyright 2005-2016 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.sh
+
+
+#Define a common label for all the tmp files
+label="bufr_read_tropical_cyclone_f"
+
+#Define tmp file
+fTmp=${label}".tmp.txt"
+rm -f $fTmp | true
+
+#We check "tropical_cyclone.bufr". The path is
+#hardcoded in the example
+
+REDIRECT=/dev/null
+
+#Write the values into a file and compare with reference
+${examples_dir}/eccodes_f_bufr_read_tropical_cyclone #2> $REDIRECT > $fTmp
+
+#TODO: check the output
+
+#cat  $fTmp
+
+#Clean up
+rm -f $fTmp | true
diff --git a/examples/F90/bufr_set_keys.f90 b/examples/F90/bufr_set_keys.f90
index 9226b72..2435f91 100644
--- a/examples/F90/bufr_set_keys.f90
+++ b/examples/F90/bufr_set_keys.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/bufr_set_keys.sh b/examples/F90/bufr_set_keys.sh
index c6059a7..4c2e71d 100755
--- a/examples/F90/bufr_set_keys.sh
+++ b/examples/F90/bufr_set_keys.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -21,12 +21,12 @@ f=${data_dir}/bufr/syno_multi.bufr
 
 REDIRECT=/dev/null
 
-#The input ($f) and output ($fBufrTmp) are hardcoded in the f90 example!!! 
-${examples_dir}/f_bufr_set_keys >$REDIRECT 2> $REDIRECT 
+#The input ($f) and output ($fBufrTmp) are hardcoded in the f90 example!!!
+${examples_dir}/eccodes_f_bufr_set_keys >$REDIRECT 2> $REDIRECT
 
 #Compare modified file  to the original
 set +e
-${tools_dir}/bufr_compare $f $fBufrTmp >$REDIRECT 2> $REDIRECT 
+${tools_dir}/bufr_compare $f $fBufrTmp >$REDIRECT 2> $REDIRECT
 
 #Check if they are different
 if [ $? -eq 0 ]; then
diff --git a/examples/F90/bufr_subset.f90 b/examples/F90/bufr_subset.f90
index 0ec8eff..f25e448 100644
--- a/examples/F90/bufr_subset.f90
+++ b/examples/F90/bufr_subset.f90
@@ -1,5 +1,5 @@
 !
-!Copyright 2005-2015 ECMWF.
+!Copyright 2005-2016 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.
@@ -22,6 +22,7 @@ integer            :: ibufr
 integer            :: i, count=0
 integer(kind=4)    :: numberOfSubsets
 integer(kind=4)    :: blockNumber,stationNumber 
+character(100)     :: key
 !real(kind=8)       :: t2m
 
   call codes_open_file(ifile,'../../data/bufr/synop_multi_subset.bufr','r')
@@ -46,20 +47,20 @@ integer(kind=4)    :: blockNumber,stationNumber
     ! loop over the subsets
     do i=1,numberOfSubsets
             
-        ! specify the subset number
-        call codes_set(ibufr,'subsetNumber',0)
+ 100    format('/subsetNumber=',I5.5,'/blockNumber')       
+        write(key,100) I       
+        write(*,*) key
                 
+        write(*,*) ' subsetNumber:',i
         ! read and print some data values
          
-        call codes_get(ibufr,'blockNumber',blockNumber);
+        call codes_get(ibufr,key,blockNumber);
         write(*,*) '  blockNumber:',blockNumber
         
+        write(key,*) '/subsetNumber=',I,'/stationNumber'       
         call codes_get(ibufr,'stationNumber',stationNumber);
         write(*,*) '  stationNumber:',stationNumber
     
-        !call codes_get(ibufr,'airTemperatureAt2M',t2m);
-        !write(*,*) '  airTemperatureAt2M:',t2m
-        
     end do
     
     ! release the bufr message
diff --git a/examples/F90/bufr_subset.sh b/examples/F90/bufr_subset.sh
index 3093eb0..4012f4c 100755
--- a/examples/F90/bufr_subset.sh
+++ b/examples/F90/bufr_subset.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -15,22 +15,77 @@ label="bufr_subset_test_f"
 
 #Prepare tmp file
 fTmp=${label}.tmp.txt
-rm -f $fTmp | true
+fTmp2=${label}.tmp2.txt
+rm -f $fTmp
+
+#Prepare ref file
+fRef=${label}.ref
+cat > $fRef <<EOF
+ message:            0
+   numberOfSubsets:          12
+ /subsetNumber=00001/blockNumber                                                                     
+  subsetNumber:           1
+   blockNumber:           1
+   stationNumber:         485
+ /subsetNumber=00002/blockNumber                                                                     
+  subsetNumber:           2
+   blockNumber:           1
+   stationNumber:         485
+ /subsetNumber=00003/blockNumber                                                                     
+  subsetNumber:           3
+   blockNumber:           1
+   stationNumber:         485
+ /subsetNumber=00004/blockNumber                                                                     
+  subsetNumber:           4
+   blockNumber:           1
+   stationNumber:         485
+ /subsetNumber=00005/blockNumber                                                                     
+  subsetNumber:           5
+   blockNumber:           1
+   stationNumber:         485
+ /subsetNumber=00006/blockNumber                                                                     
+  subsetNumber:           6
+   blockNumber:           1
+   stationNumber:         485
+ /subsetNumber=00007/blockNumber                                                                     
+  subsetNumber:           7
+   blockNumber:           1
+   stationNumber:         485
+ /subsetNumber=00008/blockNumber                                                                     
+  subsetNumber:           8
+   blockNumber:           1
+   stationNumber:         485
+ /subsetNumber=00009/blockNumber                                                                     
+  subsetNumber:           9
+   blockNumber:           1
+   stationNumber:         485
+ /subsetNumber=00010/blockNumber                                                                     
+  subsetNumber:          10
+   blockNumber:           1
+   stationNumber:         485
+ /subsetNumber=00011/blockNumber                                                                     
+  subsetNumber:          11
+   blockNumber:           1
+   stationNumber:         485
+ /subsetNumber=00012/blockNumber                                                                     
+  subsetNumber:          12
+   blockNumber:           1
+   stationNumber:         485
+EOF
 
 #We check "synop_multi_subset.bufr". The path is
 #hardcoded in the example
 
-REDIRECT=/dev/null
+REDIRECT=/dev/stdout
 
 #Write the values into a file and compare with reference
-${examples_dir}/f_bufr_subset 2> $REDIRECT > $fTmp
+${examples_dir}/eccodes_f_bufr_subset 2> $REDIRECT > $fTmp
 
-#TODO: add a proper check when subsets are properly implemented
+# Remove blank lines
+sed '/^\s*$/d' < $fTmp > $fTmp2
 
 #We compare output to the reference by ignoring the whitespaces 
-#diff -w $fRef $fTmp >$REDIRECT 2> $REDIRECT
-
-#cat $fTmp
+diff -w $fRef $fTmp2 >$REDIRECT 2> $REDIRECT
 
 #Clean up
-rm -f $fTmp
+rm -f $fTmp $fTmp2 $fRef
diff --git a/examples/F90/copy_message.f90 b/examples/F90/copy_message.f90
index 1cef66f..e59731c 100644
--- a/examples/F90/copy_message.f90
+++ b/examples/F90/copy_message.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/copy_message.sh b/examples/F90/copy_message.sh
index 28b4639..967ddbb 100755
--- a/examples/F90/copy_message.sh
+++ b/examples/F90/copy_message.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,5 +9,5 @@
 
 . ./include.sh
 
-${examples_dir}f_copy_message > /dev/null
+${examples_dir}eccodes_f_copy_message > /dev/null
 rm -f out.copy.grib1
diff --git a/examples/F90/copy_namespace.f90 b/examples/F90/copy_namespace.f90
index 2be6d57..0cdf087 100644
--- a/examples/F90/copy_namespace.f90
+++ b/examples/F90/copy_namespace.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/count_messages.f90 b/examples/F90/count_messages.f90
index 34eea3e..f056ad4 100644
--- a/examples/F90/count_messages.f90
+++ b/examples/F90/count_messages.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/count_messages.sh b/examples/F90/count_messages.sh
index d3f32b4..d21b2ad 100755
--- a/examples/F90/count_messages.sh
+++ b/examples/F90/count_messages.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,4 +9,4 @@
 
 . ./include.sh
 
-${examples_dir}f_count_messages > /dev/null
+${examples_dir}eccodes_f_count_messages > /dev/null
diff --git a/examples/F90/get_data.f90 b/examples/F90/get_data.f90
index 9eee949..542ec7a 100644
--- a/examples/F90/get_data.f90
+++ b/examples/F90/get_data.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
@@ -10,16 +10,16 @@
 !  Description: how to get lat/lon/values.
 !
 !
-!
 program get_data
 use eccodes
 implicit none
   integer            :: ifile
   integer            :: iret,i
   real(kind=8),dimension(:),allocatable     :: lats,lons,values
+  integer,dimension(:),allocatable          :: bitmap
   integer(4)        :: numberOfPoints
-  real(8)  :: missingValue=9999
-  integer           :: count1=0
+  logical            :: is_missing_value
+  integer            :: count1=0, count2=0, bitmapPresent=0, bmp_len=0
   character(len=256) :: filename
 
 !     Message identifier.
@@ -30,27 +30,43 @@ implicit none
   call codes_open_file(ifile, &
        '../../data/reduced_latlon_surface.grib1','R')
 
-! Loop on all the messages in a file.
-
+  ! Loop on all the messages in a file.
   call codes_grib_new_from_file(ifile,igrib,iret)
 
   do while (iret/=CODES_END_OF_FILE)
     count1=count1+1
     print *, "===== Message #",count1
     call codes_get(igrib,'numberOfPoints',numberOfPoints)
-    call codes_set(igrib,'missingValue',missingValue)
+    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
-      if (values(i) /= missingValue) then
+      ! 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
     enddo
+    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)
@@ -61,7 +77,6 @@ implicit none
 
   end do 
 
-
   call codes_close_file(ifile)
 
 end program 
diff --git a/examples/F90/get_data.sh b/examples/F90/get_data.sh
index 8c57ae3..37c24f2 100755
--- a/examples/F90/get_data.sh
+++ b/examples/F90/get_data.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,4 +9,4 @@
 
 . ./include.sh
 
-${examples_dir}f_get_data > /dev/null
+${examples_dir}eccodes_f_get_data > /dev/null
diff --git a/examples/F90/get_pl.f90 b/examples/F90/get_pl.f90
index 0e75972..9be5fb4 100644
--- a/examples/F90/get_pl.f90
+++ b/examples/F90/get_pl.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
@@ -10,7 +10,6 @@
 !  Description: how to get PL values.
 !
 !
-!
 program get_pl
   use eccodes
   implicit none
@@ -19,29 +18,28 @@ program get_pl
   integer                         :: PLPresent, nb_pl
   real, dimension(:), allocatable :: pl
 
-
   call codes_open_file(infile, &
        '../../data/reduced_gaussian_surface.grib1','r')
-  
-  !     a new grib message is loaded from file
-  !     igrib is the grib id to be used in subsequent calls
+
+  ! A new grib message is loaded from file
+  ! igrib is the grib id to be used in subsequent calls
   call codes_grib_new_from_file(infile,igrib)
-  
-  !     set PVPresent as an integer 
+
+  ! get PLPresent to see if the 'pl' array is there
   call codes_get(igrib,'PLPresent',PLPresent)
   print*, "PLPresent= ", PLPresent
   if (PLPresent == 1) then
-     call codes_get_size(igrib,'pl',nb_pl)
-     print*, "there are ", nb_pl, " PL values"
-     allocate(pl(nb_pl))
-     call codes_get(igrib,'pl',pl)
-     print*, "pl = ", pl
-     deallocate(pl)
+    call codes_get_size(igrib,'pl',nb_pl)
+    print*, "there are ", nb_pl, " PL values"
+    allocate(pl(nb_pl))
+    call codes_get(igrib,'pl',pl)
+    print*, "pl = ", pl
+    deallocate(pl)
   else
-     print*, "There is no PL values in your GRIB message!"
+    print*, "There is no PL values in your GRIB message!"
   end if
   call codes_release(igrib)
-     
+
   call codes_close_file(infile)
 
 end program get_pl
diff --git a/examples/F90/get_pl.sh b/examples/F90/get_pl.sh
index 69f72cb..d09397d 100755
--- a/examples/F90/get_pl.sh
+++ b/examples/F90/get_pl.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,4 +9,4 @@
 
 . ./include.sh
 
-${examples_dir}f_get_pl > /dev/null
+${examples_dir}eccodes_f_get_pl > /dev/null
diff --git a/examples/F90/get_product_kind.f90 b/examples/F90/get_product_kind.f90
index ea68669..fd072d9 100644
--- a/examples/F90/get_product_kind.f90
+++ b/examples/F90/get_product_kind.f90
@@ -1,5 +1,5 @@
 !
-!Copyright 2005-2015 ECMWF.
+!Copyright 2005-2016 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.
diff --git a/examples/F90/get_product_kind.sh b/examples/F90/get_product_kind.sh
index cccbb7b..6ffc8f9 100755
--- a/examples/F90/get_product_kind.sh
+++ b/examples/F90/get_product_kind.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -16,6 +16,6 @@ fTmp=${label}.tmp
 # Create a file containing both GRIB and BUFR messages
 cat ${data_dir}/sample.grib2 ${data_dir}/bufr/syno_multi.bufr >$fTmp
 
-${examples_dir}/f_get_product_kind $fTmp >/dev/null 2>&1
+${examples_dir}/eccodes_f_get_product_kind $fTmp >/dev/null 2>&1
 
 rm -f ${fTmp}
diff --git a/examples/F90/get_pv.f90 b/examples/F90/get_pv.f90
index 0ef0c1f..52f9343 100644
--- a/examples/F90/get_pv.f90
+++ b/examples/F90/get_pv.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
@@ -19,30 +19,29 @@ program get_pv
   integer                         :: igrib
   integer                         :: PVPresent, nb_pv
   real, dimension(:), allocatable :: pv
-  
 
   call codes_open_file(infile, &
        '../../data/reduced_gaussian_model_level.grib1','r')
-  
-  !     a new grib message is loaded from file
-  !     igrib is the grib id to be used in subsequent calls
+
+  ! A new grib message is loaded from file
+  ! igrib is the grib id to be used in subsequent calls
   call codes_grib_new_from_file(infile,igrib)
-  
-  !     set PVPresent as an integer 
+
+  ! Get PVPresent to see if the 'pv' array is there
   call codes_get(igrib,'PVPresent',PVPresent)
   print*, "PVPresent = ", PVPresent
   if (PVPresent == 1) then
-     call codes_get_size(igrib,'pv',nb_pv)
-     print*, "There are ", nb_pv, " PV values"
-     allocate(pv(nb_pv))
-     call codes_get(igrib,'pv',pv)
-     print*, "pv = ", pv
-     deallocate(pv)
+    call codes_get_size(igrib,'pv',nb_pv)
+    print*, "There are ", nb_pv, " PV values"
+    allocate(pv(nb_pv))
+    call codes_get(igrib,'pv',pv)
+    print*, "pv = ", pv
+    deallocate(pv)
   else
-     print*, "There is no PV values in your GRIB message!"
+    print*, "There is no PV values in your GRIB message!"
   end if
   call codes_release(igrib)
-  
+
   call codes_close_file(infile)
-  
+
 end program get_pv
diff --git a/examples/F90/get_pv.sh b/examples/F90/get_pv.sh
index 568aaad..332d7df 100755
--- a/examples/F90/get_pv.sh
+++ b/examples/F90/get_pv.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,4 +9,4 @@
 
 . ./include.sh
 
-${examples_dir}f_get_pv > /dev/null
+${examples_dir}eccodes_f_get_pv > /dev/null
diff --git a/examples/F90/get_set_uuid.sh b/examples/F90/get_set_uuid.sh
index 24ee420..abdb62a 100755
--- a/examples/F90/get_set_uuid.sh
+++ b/examples/F90/get_set_uuid.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -14,7 +14,7 @@ uuid=`${tools_dir}/grib_get -w count=1 -p uuidOfVGrid:s ${data_dir}/test_uuid.gr
 [ "$uuid" = "08b1e836bc6911e1951fb51b5624ad8d" ]
 
 # This reads the file in data/test_uuid.grib2 and creates test_uuid.grib2
-${examples_dir}f_get_set_uuid > /dev/null
+${examples_dir}eccodes_f_get_set_uuid > /dev/null
 
 # Check output was written
 output=out_uuid.grib2
diff --git a/examples/F90/grib_clone.f90 b/examples/F90/grib_clone.f90
index 49f681f..d1f454f 100644
--- a/examples/F90/grib_clone.f90
+++ b/examples/F90/grib_clone.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/grib_clone.sh b/examples/F90/grib_clone.sh
index bc2c006..ee0eea9 100755
--- a/examples/F90/grib_clone.sh
+++ b/examples/F90/grib_clone.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,5 +9,5 @@
 
 . ./include.sh
 
-${examples_dir}f_grib_clone > /dev/null
+${examples_dir}eccodes_f_grib_clone > /dev/null
 rm -f out.clone.grib1
diff --git a/examples/F90/grib_get_keys.f90 b/examples/F90/grib_get_keys.f90
index 0c0e366..1d7fb8d 100644
--- a/examples/F90/grib_get_keys.f90
+++ b/examples/F90/grib_get_keys.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
@@ -26,98 +26,87 @@ program grib_get_keys
   real, dimension(:), allocatable    ::  values
   integer                            ::  numberOfValues
   real                               ::  average,min_val, max_val
-  integer                            ::  is_missing, is_defined
+  integer                            ::  is_missing
   
   call codes_open_file(ifile, &
        '../../data/reduced_latlon_surface.grib1','r')
   
   ! Loop on all the messages in a file.
-  
+
   !     a new grib message is loaded from file
   !     igrib is the grib id to be used in subsequent calls
   call  codes_grib_new_from_file(ifile,igrib, iret) 
-  
+
   LOOP: DO WHILE (iret /= CODES_END_OF_FILE)
 
-     !check if the value of the key is MISSING
-     is_missing=0;
-     call codes_is_missing(igrib,'Ni',is_missing);
-     if ( is_missing /= 1 ) then
+    ! For debugging
+    call grib_dump(igrib)
+
+    !check if the value of the key is MISSING
+    is_missing=0;
+    call codes_is_missing(igrib,'Ni',is_missing);
+    if ( is_missing /= 1 ) then
         !     get as a integer
         call codes_get(igrib,'Ni',numberOfPointsAlongAParallel) 
         write(*,*) 'numberOfPointsAlongAParallel=', &
              numberOfPointsAlongAParallel
-     else
+    else
         write(*,*) 'numberOfPointsAlongAParallel is missing'
-     endif     
-     
-     !check for existence of keys
-     is_defined=0;
-     call codes_is_defined(igrib,'edition',is_defined);
-     if ( is_defined == 0 ) then
-         write(0,*) 'ERROR: An expected key was not defined!!'
-         call exit(1)
-     endif
-     call codes_is_defined(igrib,'ThisIsNoLoveSong',is_defined);
-     if ( is_defined == 1 ) then
-         write(0,*) 'ERROR: An unexpected key was defined!!'
-         call exit(1)
-     endif
+    endif     
 
-     !     get as a integer
-     call codes_get(igrib,'Nj',numberOfPointsAlongAMeridian) 
-     write(*,*) 'numberOfPointsAlongAMeridian=', &
-          numberOfPointsAlongAMeridian
-     
-     !     get as a real
-     call codes_get(igrib, 'latitudeOfFirstGridPointInDegrees', &
+    !     get as a integer
+    call codes_get(igrib,'Nj',numberOfPointsAlongAMeridian) 
+    write(*,*) 'numberOfPointsAlongAMeridian=', &
+         numberOfPointsAlongAMeridian
+
+    !     get as a real
+    call codes_get(igrib, 'latitudeOfFirstGridPointInDegrees', &
           latitudeOfFirstPointInDegrees) 
-     write(*,*) 'latitudeOfFirstGridPointInDegrees=', &
+    write(*,*) 'latitudeOfFirstGridPointInDegrees=', &
           latitudeOfFirstPointInDegrees
-     
-     !     get as a real
-     call codes_get(igrib, 'longitudeOfFirstGridPointInDegrees', &
+
+    !     get as a real
+    call codes_get(igrib, 'longitudeOfFirstGridPointInDegrees', &
           longitudeOfFirstPointInDegrees) 
-     write(*,*) 'longitudeOfFirstGridPointInDegrees=', &
+    write(*,*) 'longitudeOfFirstGridPointInDegrees=', &
           longitudeOfFirstPointInDegrees
-     
-     !     get as a real
-     call codes_get(igrib, 'latitudeOfLastGridPointInDegrees', &
+
+    !     get as a real
+    call codes_get(igrib, 'latitudeOfLastGridPointInDegrees', &
           latitudeOfLastPointInDegrees) 
-     write(*,*) 'latitudeOfLastGridPointInDegrees=', &
+    write(*,*) 'latitudeOfLastGridPointInDegrees=', &
           latitudeOfLastPointInDegrees
-     
-     !     get as a real
-     call codes_get(igrib, 'longitudeOfLastGridPointInDegrees', &
+
+    !     get as a real
+    call codes_get(igrib, 'longitudeOfLastGridPointInDegrees', &
           longitudeOfLastPointInDegrees) 
-     write(*,*) 'longitudeOfLastGridPointInDegrees=', &
+    write(*,*) 'longitudeOfLastGridPointInDegrees=', &
           longitudeOfLastPointInDegrees
-     
-     
-     !     get the size of the values array
-     call codes_get_size(igrib,'values',numberOfValues)
-     write(*,*) 'numberOfValues=',numberOfValues
-     
-     allocate(values(numberOfValues), stat=iret)
-     !     get data values
-     call codes_get(igrib,'values',values)
-     call codes_get(igrib,'min',min_val) ! can also be obtained through minval(values)
-     call codes_get(igrib,'max',max_val) ! can also be obtained through maxval(values)
-     call codes_get(igrib,'average',average) ! can also be obtained through maxval(values)
 
-     deallocate(values)
+    !     get the size of the values array
+    call codes_get_size(igrib,'values',numberOfValues)
+    write(*,*) 'numberOfValues=',numberOfValues
+
+    allocate(values(numberOfValues), stat=iret)
+    !     get data values
+    call codes_get(igrib,'values',values)
+    call codes_get(igrib,'min',min_val) ! can also be obtained through minval(values)
+    call codes_get(igrib,'max',max_val) ! can also be obtained through maxval(values)
+    call codes_get(igrib,'average',average) ! can also be obtained through maxval(values)
+
+    deallocate(values)
           
-     write(*,*)'There are ',numberOfValues, &
+    write(*,*)'There are ',numberOfValues, &
           ' average is ',average, &
           ' min is ',  min_val, &
           ' max is ',  max_val
      
-     call codes_release(igrib)
-     
-     call codes_grib_new_from_file(ifile,igrib, iret)
+    call codes_release(igrib)
      
+    call codes_grib_new_from_file(ifile,igrib, iret)
+
   end do LOOP
-  
+
   call codes_close_file(ifile)
-  
+
 end program grib_get_keys
diff --git a/examples/F90/grib_get_keys.sh b/examples/F90/grib_get_keys.sh
index 120812e..eb46783 100755
--- a/examples/F90/grib_get_keys.sh
+++ b/examples/F90/grib_get_keys.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,4 +9,4 @@
 
 . ./include.sh
 
-${examples_dir}f_grib_get_keys > /dev/null
+${examples_dir}eccodes_f_grib_get_keys > /dev/null
diff --git a/examples/F90/grib_index.f90 b/examples/F90/grib_index.f90
index a09c10c..206f2de 100644
--- a/examples/F90/grib_index.f90
+++ b/examples/F90/grib_index.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/grib_index.sh b/examples/F90/grib_index.sh
index 9727454..a386cec 100755
--- a/examples/F90/grib_index.sh
+++ b/examples/F90/grib_index.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -11,11 +11,11 @@
 
 # if an index file does not exist then
 # create index and save to disk
-${examples_dir}f_grib_index > index_f90.out
+${examples_dir}eccodes_f_grib_index > index_f90.out
 diff index_f90.out ${data_dir}/index_f90.ok
 
 # if an index file exists then load the index from it
-${examples_dir}f_grib_index > index_f90.out
+${examples_dir}eccodes_f_grib_index > index_f90.out
 diff index_f90.out ${data_dir}/index_f90.ok
 
 rm -f index.idx index_f90.out
diff --git a/examples/F90/grib_keys_iterator.f90 b/examples/F90/grib_keys_iterator.f90
index 3649a0b..f2df081 100644
--- a/examples/F90/grib_keys_iterator.f90
+++ b/examples/F90/grib_keys_iterator.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
@@ -29,7 +29,7 @@ program keys_iterator
   ! Loop on all the messages in a file.
   
   call codes_grib_new_from_file(ifile,igrib, iret)
-  
+  grib_count=0
   do while (iret /= CODES_END_OF_FILE)
 
     grib_count=grib_count+1
diff --git a/examples/F90/grib_keys_iterator.sh b/examples/F90/grib_keys_iterator.sh
index 19137e8..7b89d85 100755
--- a/examples/F90/grib_keys_iterator.sh
+++ b/examples/F90/grib_keys_iterator.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,4 +9,4 @@
 
 . ./include.sh
 
-${examples_dir}f_grib_keys_iterator > /dev/null
+${examples_dir}eccodes_f_grib_keys_iterator > /dev/null
diff --git a/examples/F90/grib_multi.f90 b/examples/F90/grib_multi.f90
index b0c59d7..c8b1598 100644
--- a/examples/F90/grib_multi.f90
+++ b/examples/F90/grib_multi.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/grib_multi.sh b/examples/F90/grib_multi.sh
index 97bf93c..1f4a907 100755
--- a/examples/F90/grib_multi.sh
+++ b/examples/F90/grib_multi.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,6 +9,6 @@
 
 . ./include.sh
 
-${examples_dir}f_grib_multi > multi.out
+${examples_dir}eccodes_f_grib_multi > multi.out
 diff multi.out ${data_dir}/multi.ok
 rm -f multi.out
diff --git a/examples/F90/grib_multi_write.f90 b/examples/F90/grib_multi_write.f90
index 6ef8274..6cc0e84 100644
--- a/examples/F90/grib_multi_write.f90
+++ b/examples/F90/grib_multi_write.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/grib_multi_write.sh b/examples/F90/grib_multi_write.sh
index ce63432..8714a62 100755
--- a/examples/F90/grib_multi_write.sh
+++ b/examples/F90/grib_multi_write.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,7 +9,7 @@
 
 . ./include.sh
 
-${examples_dir}f_grib_multi_write > /dev/null
+${examples_dir}eccodes_f_grib_multi_write > /dev/null
 
 ${tools_dir}/grib_compare ${data_dir}/multi_created.grib2 multi_created.grib2
 
diff --git a/examples/F90/grib_nearest.f90 b/examples/F90/grib_nearest.f90
index dbde959..71e5f55 100644
--- a/examples/F90/grib_nearest.f90
+++ b/examples/F90/grib_nearest.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/grib_nearest.sh b/examples/F90/grib_nearest.sh
index ea0cd40..a62ac85 100755
--- a/examples/F90/grib_nearest.sh
+++ b/examples/F90/grib_nearest.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,4 +9,4 @@
 
 . ./include.sh
 
-${examples_dir}f_grib_nearest > /dev/null
+${examples_dir}eccodes_f_grib_nearest > /dev/null
diff --git a/examples/F90/grib_precision.f90 b/examples/F90/grib_precision.f90
index 0e24cc6..b2d965c 100644
--- a/examples/F90/grib_precision.f90
+++ b/examples/F90/grib_precision.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/grib_precision.sh b/examples/F90/grib_precision.sh
index fa63597..8913055 100755
--- a/examples/F90/grib_precision.sh
+++ b/examples/F90/grib_precision.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,5 +9,5 @@
 
 . ./include.sh
 
-${examples_dir}f_grib_precision > /dev/null
+${examples_dir}eccodes_f_grib_precision > /dev/null
 rm -f ${data_dir}/regular_latlon_surface_prec.grib1
diff --git a/examples/F90/grib_print_data.f90 b/examples/F90/grib_print_data.f90
index bf7da48..e051e61 100644
--- a/examples/F90/grib_print_data.f90
+++ b/examples/F90/grib_print_data.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/grib_print_data.sh b/examples/F90/grib_print_data.sh
index d679f3f..c8015ac 100755
--- a/examples/F90/grib_print_data.sh
+++ b/examples/F90/grib_print_data.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,4 +9,4 @@
 
 . ./include.sh
 
-${examples_dir}f_grib_print_data > /dev/null
+${examples_dir}eccodes_f_grib_print_data > /dev/null
diff --git a/examples/F90/grib_set_bitmap.f90 b/examples/F90/grib_set_bitmap.f90
index 6805223..31fa306 100644
--- a/examples/F90/grib_set_bitmap.f90
+++ b/examples/F90/grib_set_bitmap.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
@@ -8,8 +8,7 @@
 !
 !
 !
-!  Description: how to set a bitmap in a grib message 
-!
+!  Description: how to set a bitmap in a GRIB message
 !
 !
 program set_bitmap
@@ -32,16 +31,16 @@ program set_bitmap
     call codes_open_file(infile,'../../data/regular_latlon_surface.grib2','r')
   end if
   
-  call codes_open_file(outfile,'out.bmp.grib','w')
+  call codes_open_file(outfile,'out.set_bitmap_f.grib','w')
   
-  !     a new grib message is loaded from file
-  !     igrib is the grib id to be used in subsequent calls
+  ! A new grib message is loaded from file
+  ! igrib is the grib id to be used in subsequent calls
   call codes_grib_new_from_file(infile,igrib)
   
   ! The missingValue is not coded in the message. 
   ! It is a value we define as a placeholder for a missing value
-  ! in a point of the grid.
-  ! It should be choosen in a way that it cannot be confused 
+  ! at a point in the grid.
+  ! It should be chosen so that it cannot be confused 
   ! with a valid field value
   missingValue=9999
   call codes_set(igrib, 'missingValue',missingValue)
@@ -57,9 +56,9 @@ program set_bitmap
   call codes_get(igrib,'values',values)
   
   ! enable bitmap 
-  call codes_set(igrib,"bitmapPresent",1)
+  call codes_set(igrib, 'bitmapPresent', 1)
 
-  ! some values are missing
+  ! set some values to be missing
   values(1:10) = missingValue
 
   ! set the values (the bitmap will be automatically built)
@@ -68,11 +67,10 @@ program set_bitmap
   !  write modified message to a file
   call codes_write(igrib,outfile)
   
-  ! FREE MEMORY
+  ! free memory
   call codes_release(igrib)
   
   call codes_close_file(infile)
-
   call codes_close_file(outfile)
 
   deallocate(values)
diff --git a/examples/F90/grib_set_bitmap.sh b/examples/F90/grib_set_bitmap.sh
index 86e4b38..de5784f 100755
--- a/examples/F90/grib_set_bitmap.sh
+++ b/examples/F90/grib_set_bitmap.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -8,5 +8,13 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 
 . ./include.sh
-${examples_dir}f_grib_set_bitmap > /dev/null
-rm -f out.bmp.grib
+
+OUT_TMP=out.set_bitmap_f.grib
+
+# The input and output files are hardcoded in the example
+${examples_dir}eccodes_f_grib_set_bitmap
+
+x=`${tools_dir}/grib_get -p numberOfDataPoints,numberOfCodedValues,numberOfMissing $OUT_TMP`
+[ "$x" = "496 486 10" ]
+
+rm -f $OUT_TMP
diff --git a/examples/F90/grib_set_keys.f90 b/examples/F90/grib_set_keys.f90
index fa50d47..c718bb3 100644
--- a/examples/F90/grib_set_keys.f90
+++ b/examples/F90/grib_set_keys.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/grib_set_keys.sh b/examples/F90/grib_set_keys.sh
index e80bd95..92f6c20 100755
--- a/examples/F90/grib_set_keys.sh
+++ b/examples/F90/grib_set_keys.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,9 +9,9 @@
 
 . ./include.sh
 
-${examples_dir}f_grib_set_keys > /dev/null
+${examples_dir}eccodes_f_grib_set_keys > /dev/null
 
-${examples_dir}f_set_gvc > /dev/null
+${examples_dir}eccodes_f_set_gvc > /dev/null
 [ -f out_gvc.grib2 ]
 
 rm -f out.set.grib1 out_gvc.grib2
diff --git a/examples/F90/grib_set_pv.f90 b/examples/F90/grib_set_pv.f90
index 3e84b5b..642c6ac 100644
--- a/examples/F90/grib_set_pv.f90
+++ b/examples/F90/grib_set_pv.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/grib_set_pv.sh b/examples/F90/grib_set_pv.sh
index d5229a6..585f030 100755
--- a/examples/F90/grib_set_pv.sh
+++ b/examples/F90/grib_set_pv.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,5 +9,5 @@
 
 . ./include.sh
 
-${examples_dir}f_grib_set_pv > /dev/null
+${examples_dir}eccodes_f_grib_set_pv > /dev/null
 rm -f out.pv.grib1
diff --git a/examples/F90/include.sh b/examples/F90/include.sh
index cc077ff..c12953f 100755
--- a/examples/F90/include.sh
+++ b/examples/F90/include.sh
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -35,12 +35,16 @@ else
     examples_dir=$cpath/examples/F90/
     data_dir=$cpath/data
     samples_dir=$cpath/samples
+
+#tools_dir="valgrind --error-exitcode=1 -q $cpath/tools/"
+#examples_dir="valgrind --error-exitcode=1 -q $cpath/examples/F90/"
+
   else
     echo "Skipping test $0"
     exit
   fi
 
-  cd ${examples_dir}
+  cd "$cpath/examples/F90"
 
   if [ -z "${GRIB_API_INCLUDE}" ]
   then 
diff --git a/examples/F90/keys_iterator_fortran.f90 b/examples/F90/keys_iterator_fortran.f90
index c3cdaf4..713941d 100644
--- a/examples/F90/keys_iterator_fortran.f90
+++ b/examples/F90/keys_iterator_fortran.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/multi_fortran.f90 b/examples/F90/multi_fortran.f90
index 0a39187..8e22baf 100644
--- a/examples/F90/multi_fortran.f90
+++ b/examples/F90/multi_fortran.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/new_from_file.f90 b/examples/F90/new_from_file.f90
index 79d0d30..c421345 100644
--- a/examples/F90/new_from_file.f90
+++ b/examples/F90/new_from_file.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/precision_fortran.f90 b/examples/F90/precision_fortran.f90
index 02def30..93b338a 100644
--- a/examples/F90/precision_fortran.f90
+++ b/examples/F90/precision_fortran.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/print_data_fortran.f90 b/examples/F90/print_data_fortran.f90
index 161451b..f1ec5b0 100644
--- a/examples/F90/print_data_fortran.f90
+++ b/examples/F90/print_data_fortran.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/read_from_file.f90 b/examples/F90/read_from_file.f90
index f0198d4..4dd3066 100644
--- a/examples/F90/read_from_file.f90
+++ b/examples/F90/read_from_file.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
@@ -30,7 +30,7 @@ contains
 subroutine read_using_size_t
   implicit none
   integer :: size,intsize
-  parameter (intsize=5000000,size=intsize*4)
+  parameter (intsize=100000,size=intsize*4)
   integer            :: ifile
   integer            :: iret
   integer            :: count1=0
@@ -64,7 +64,7 @@ end subroutine read_using_size_t
 subroutine read_using_integer
   implicit none
   integer :: size,intsize
-  parameter (intsize=5000000,size=intsize*4)
+  parameter (intsize=100000,size=intsize*4)
   integer            :: ifile
   integer            :: iret
   integer            :: count1=0
diff --git a/examples/F90/read_from_file.sh b/examples/F90/read_from_file.sh
index f13cb67..1c4acbf 100755
--- a/examples/F90/read_from_file.sh
+++ b/examples/F90/read_from_file.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -13,4 +13,4 @@
 # Check program completed successfully. We have to resort to testing
 # the output as there is no way in Fortran to set the exit code
 #
-${examples_dir}f_read_from_file | grep 'Passed' >/dev/null
+${examples_dir}eccodes_f_read_from_file | grep 'Passed' 
diff --git a/examples/F90/read_message.f90 b/examples/F90/read_message.f90
index 73791ee..c8c709c 100644
--- a/examples/F90/read_message.f90
+++ b/examples/F90/read_message.f90
@@ -1,5 +1,5 @@
 !
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/read_message.sh b/examples/F90/read_message.sh
index a371a46..6165f53 100755
--- a/examples/F90/read_message.sh
+++ b/examples/F90/read_message.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -14,7 +14,7 @@ out=out.readmsg.grib
 
 rm -f $out | true
 
-${examples_dir}f_read_message > /dev/null
+${examples_dir}eccodes_f_read_message > /dev/null
 
 ${tools_dir}grib_compare $in $out
 
diff --git a/examples/F90/samples.f90 b/examples/F90/samples.f90
index c061f21..818d6c8 100644
--- a/examples/F90/samples.f90
+++ b/examples/F90/samples.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/samples.sh b/examples/F90/samples.sh
index 71d4388..e6cc72b 100755
--- a/examples/F90/samples.sh
+++ b/examples/F90/samples.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -16,12 +16,12 @@ cp ${data_dir}/regular_latlon_surface.grib1 ${data_dir}/regular_latlon_surface.g
 # Change the ECCODES_SAMPLES_PATH: put the data dir first
 ECCODES_SAMPLES_PATH=${data_dir}:${samples_dir}
 export ECCODES_SAMPLES_PATH
-${examples_dir}f_samples > /dev/null
+${examples_dir}eccodes_f_samples > /dev/null
 
 # Extend the ECCODES_SAMPLES_PATH: put the data dir second
 ECCODES_SAMPLES_PATH=${samples_dir}:${data_dir}
 export ECCODES_SAMPLES_PATH
-${examples_dir}f_samples > /dev/null
+${examples_dir}eccodes_f_samples > /dev/null
 
 rm -f out.samples.grib1
 rm -f ${data_dir}/regular_latlon_surface.grib1.tmpl
diff --git a/examples/F90/set_fortran.f90 b/examples/F90/set_fortran.f90
index f17ff99..e054b9a 100644
--- a/examples/F90/set_fortran.f90
+++ b/examples/F90/set_fortran.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/set_gvc.f90 b/examples/F90/set_gvc.f90
index f8a3dbd..68a911c 100644
--- a/examples/F90/set_gvc.f90
+++ b/examples/F90/set_gvc.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/set_missing.f90 b/examples/F90/set_missing.f90
index 91b564a..c244fe6 100644
--- a/examples/F90/set_missing.f90
+++ b/examples/F90/set_missing.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/F90/set_missing.sh b/examples/F90/set_missing.sh
index b5bb5cd..ccfb399 100755
--- a/examples/F90/set_missing.sh
+++ b/examples/F90/set_missing.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -9,5 +9,5 @@
 
 . ./include.sh
 
-${examples_dir}f_set_missing > /dev/null
+${examples_dir}eccodes_f_set_missing > /dev/null
 rm -f out_surface_level.grib2
diff --git a/examples/F90/set_missing_fortran.f90 b/examples/F90/set_missing_fortran.f90
index e928d16..0e4f440 100644
--- a/examples/F90/set_missing_fortran.f90
+++ b/examples/F90/set_missing_fortran.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/examples/fieldset.c b/examples/fieldset.c
index bb4d596..99a3844 100644
--- a/examples/fieldset.c
+++ b/examples/fieldset.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/get.c b/examples/get.c
index 4b8cb94..591b624 100644
--- a/examples/get.c
+++ b/examples/get.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/get_fortran.F b/examples/get_fortran.F
index 32b6a74..645a375 100644
--- a/examples/get_fortran.F
+++ b/examples/get_fortran.F
@@ -1,4 +1,4 @@
-C Copyright 2005-2015 ECMWF.
+C Copyright 2005-2016 ECMWF.
 C
 C This software is licensed under the terms of the Apache Licence Version 2.0
 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/examples/grib_precipitation.c b/examples/grib_precipitation.c
index 2beab45..db6263a 100644
--- a/examples/grib_precipitation.c
+++ b/examples/grib_precipitation.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/iterator.c b/examples/iterator.c
index 125529d..a1922c1 100644
--- a/examples/iterator.c
+++ b/examples/iterator.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/iterator_fortran.F b/examples/iterator_fortran.F
index 90a8479..d40bce7 100644
--- a/examples/iterator_fortran.F
+++ b/examples/iterator_fortran.F
@@ -1,4 +1,4 @@
-C Copyright 2005-2015 ECMWF.
+C Copyright 2005-2016 ECMWF.
 C
 C This software is licensed under the terms of the Apache Licence Version 2.0
 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/examples/keys_iterator.c b/examples/keys_iterator.c
index 22b4655..258cb4a 100644
--- a/examples/keys_iterator.c
+++ b/examples/keys_iterator.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/keys_iterator_fortran.F b/examples/keys_iterator_fortran.F
index 3b56312..ff006b6 100644
--- a/examples/keys_iterator_fortran.F
+++ b/examples/keys_iterator_fortran.F
@@ -1,4 +1,4 @@
-C Copyright 2005-2015 ECMWF.
+C Copyright 2005-2016 ECMWF.
 C
 C This software is licensed under the terms of the Apache Licence Version 2.0
 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/examples/multi.c b/examples/multi.c
index 3db19c5..eef04e0 100644
--- a/examples/multi.c
+++ b/examples/multi.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/multi_fortran.F b/examples/multi_fortran.F
index 2970c3a..430bd65 100644
--- a/examples/multi_fortran.F
+++ b/examples/multi_fortran.F
@@ -1,4 +1,4 @@
-C Copyright 2005-2015 ECMWF.
+C Copyright 2005-2016 ECMWF.
 C
 C This software is licensed under the terms of the Apache Licence Version 2.0
 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/examples/nearest.c b/examples/nearest.c
index 89f0f94..da29172 100644
--- a/examples/nearest.c
+++ b/examples/nearest.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/precision.c b/examples/precision.c
index 2b34221..68d3a92 100644
--- a/examples/precision.c
+++ b/examples/precision.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/precision_fortran.F b/examples/precision_fortran.F
index 20cbaeb..559f509 100644
--- a/examples/precision_fortran.F
+++ b/examples/precision_fortran.F
@@ -1,4 +1,4 @@
-C Copyright 2005-2015 ECMWF.
+C Copyright 2005-2016 ECMWF.
 C
 C This software is licensed under the terms of the Apache Licence Version 2.0
 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/examples/print_data.c b/examples/print_data.c
index 99676a8..4e85e53 100644
--- a/examples/print_data.c
+++ b/examples/print_data.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/print_data_fortran.F b/examples/print_data_fortran.F
index 1bf334c..e89ac34 100644
--- a/examples/print_data_fortran.F
+++ b/examples/print_data_fortran.F
@@ -1,4 +1,4 @@
-C Copyright 2005-2015 ECMWF.
+C Copyright 2005-2016 ECMWF.
 C
 C This software is licensed under the terms of the Apache Licence Version 2.0
 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/examples/python/.deps/count_messages.Po b/examples/python/.deps/count_messages.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/python/.deps/count_messages.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/python/.deps/grib_iterator.Po b/examples/python/.deps/grib_iterator.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/python/.deps/grib_iterator.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/python/.deps/grib_keys_iterator.Po b/examples/python/.deps/grib_keys_iterator.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/python/.deps/grib_keys_iterator.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/python/.deps/grib_print_data.Po b/examples/python/.deps/grib_print_data.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/examples/python/.deps/grib_print_data.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/examples/python/CMakeLists.txt b/examples/python/CMakeLists.txt
index 08ea497..b942b7f 100644
--- a/examples/python/CMakeLists.txt
+++ b/examples/python/CMakeLists.txt
@@ -3,6 +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} )
 
 # Build the executables used by test scripts
 ################################################
@@ -12,6 +13,7 @@ list( APPEND test_bins
    grib_iterator
    count_messages
 )
+
 foreach( tool ${test_bins} )
    ecbuild_add_executable( TARGET    p_${tool}
                            NOINSTALL
@@ -22,6 +24,7 @@ foreach( tool ${test_bins} )
    list( APPEND ptools  p_${tool} )
 endforeach()
 
+
 # Now add each test
 #################################################
 list( APPEND tests
@@ -46,20 +49,33 @@ list( APPEND tests
    bufr_keys_iterator
    bufr_read_header
    bufr_read_scatterometer
+   bufr_read_tropical_cyclone
    bufr_read_synop 
    bufr_read_temp
    bufr_set_keys
    bufr_subset
    get_product_kind
+   gts_get_keys
+   metar_get_keys
 )
 foreach( test ${tests} )
-    ecbuild_add_test( TARGET p_${test}_test
+    ecbuild_add_test( TARGET eccodes_p_${test}_test
+                      TYPE       SCRIPT
+                      DEPENDS    ${ptools}
+                      COMMAND    ${CMAKE_CURRENT_SOURCE_DIR}/${test}.sh
+                      CONDITION  HAVE_PYTHON
+                      ENVIRONMENT PYTHON=${PYTHON_EXECUTABLE}
+                      TEST_DEPENDS eccodes_get_gribs eccodes_get_tigge_gribs eccodes_get_bufrs
+    )
+endforeach()
+
+# Add test which requires input CSV file
+ecbuild_add_test( TARGET eccodes_p_bufr_encode_flight_test
                   TYPE       SCRIPT
                   DEPENDS    ${ptools}
-                  COMMAND    ${CMAKE_CURRENT_SOURCE_DIR}/${test}.sh
+                  COMMAND    ${CMAKE_CURRENT_SOURCE_DIR}/bufr_encode_flight.sh
                   CONDITION  HAVE_PYTHON
-                  RESOURCES  include.sh ${test}.py
                   ENVIRONMENT PYTHON=${PYTHON_EXECUTABLE}
-                  TEST_DEPENDS get_gribs get_tigge_gribs get_bufrs
-    )
-endforeach()
+                  RESOURCES   flight_data.csv
+                  TEST_DEPENDS eccodes_get_bufrs
+)
diff --git a/examples/python/Makefile b/examples/python/Makefile
deleted file mode 100644
index 9ca60ff..0000000
--- a/examples/python/Makefile
+++ /dev/null
@@ -1,1260 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# examples/python/Makefile.  Generated from Makefile.in by configure.
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/eccodes
-pkgincludedir = $(includedir)/eccodes
-pkglibdir = $(libdir)/eccodes
-pkglibexecdir = $(libexecdir)/eccodes
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = x86_64-suse-linux-gnu
-host_triplet = x86_64-suse-linux-gnu
-noinst_PROGRAMS = p_grib_keys_iterator$(EXEEXT) \
-	p_grib_print_data$(EXEEXT) \
-	p_grib_iterator$(EXEEXT) \
-	p_count_messages$(EXEEXT)
-subdir = examples/python
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/config/depcomp $(top_srcdir)/config/test-driver
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am__p_count_messages_SOURCES_DIST = count_messages.c
-am_p_count_messages_OBJECTS =  \
-	count_messages.$(OBJEXT)
-p_count_messages_OBJECTS = $(am_p_count_messages_OBJECTS)
-p_count_messages_LDADD = $(LDADD)
-p_count_messages_DEPENDENCIES =  \
-	$(top_builddir)/src/libeccodes.la
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-am__p_grib_iterator_SOURCES_DIST = grib_iterator.c
-am_p_grib_iterator_OBJECTS =  \
-	grib_iterator.$(OBJEXT)
-p_grib_iterator_OBJECTS = $(am_p_grib_iterator_OBJECTS)
-p_grib_iterator_LDADD = $(LDADD)
-p_grib_iterator_DEPENDENCIES =  \
-	$(top_builddir)/src/libeccodes.la
-am__p_grib_keys_iterator_SOURCES_DIST = grib_keys_iterator.c
-am_p_grib_keys_iterator_OBJECTS =  \
-	grib_keys_iterator.$(OBJEXT)
-p_grib_keys_iterator_OBJECTS = $(am_p_grib_keys_iterator_OBJECTS)
-p_grib_keys_iterator_LDADD = $(LDADD)
-p_grib_keys_iterator_DEPENDENCIES =  \
-	$(top_builddir)/src/libeccodes.la
-am__p_grib_print_data_SOURCES_DIST = grib_print_data.c
-am_p_grib_print_data_OBJECTS =  \
-	grib_print_data.$(OBJEXT)
-p_grib_print_data_OBJECTS = $(am_p_grib_print_data_OBJECTS)
-p_grib_print_data_LDADD = $(LDADD)
-p_grib_print_data_DEPENDENCIES =  \
-	$(top_builddir)/src/libeccodes.la
-AM_V_P = $(am__v_P_$(V))
-am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = $(p_count_messages_SOURCES) $(p_grib_iterator_SOURCES) \
-	$(p_grib_keys_iterator_SOURCES) $(p_grib_print_data_SOURCES)
-DIST_SOURCES = $(am__p_count_messages_SOURCES_DIST) \
-	$(am__p_grib_iterator_SOURCES_DIST) \
-	$(am__p_grib_keys_iterator_SOURCES_DIST) \
-	$(am__p_grib_print_data_SOURCES_DIST)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__tty_colors_dummy = \
-  mgn= red= grn= lgn= blu= brg= std=; \
-  am__color_tests=no
-am__tty_colors = { \
-  $(am__tty_colors_dummy); \
-  if test "X$(AM_COLOR_TESTS)" = Xno; then \
-    am__color_tests=no; \
-  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
-    am__color_tests=yes; \
-  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
-    am__color_tests=yes; \
-  fi; \
-  if test $$am__color_tests = yes; then \
-    red=''; \
-    grn=''; \
-    lgn=''; \
-    blu=''; \
-    mgn=''; \
-    brg=''; \
-    std=''; \
-  fi; \
-}
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__recheck_rx = ^[ 	]*:recheck:[ 	]*
-am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
-am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
-# A command that, given a newline-separated list of test names on the
-# standard input, print the name of the tests that are to be re-run
-# upon "make recheck".
-am__list_recheck_tests = $(AWK) '{ \
-  recheck = 1; \
-  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-    { \
-      if (rc < 0) \
-        { \
-          if ((getline line2 < ($$0 ".log")) < 0) \
-	    recheck = 0; \
-          break; \
-        } \
-      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
-        { \
-          recheck = 0; \
-          break; \
-        } \
-      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
-        { \
-          break; \
-        } \
-    }; \
-  if (recheck) \
-    print $$0; \
-  close ($$0 ".trs"); \
-  close ($$0 ".log"); \
-}'
-# A command that, given a newline-separated list of test names on the
-# standard input, create the global log from their .trs and .log files.
-am__create_global_log = $(AWK) ' \
-function fatal(msg) \
-{ \
-  print "fatal: making $@: " msg | "cat >&2"; \
-  exit 1; \
-} \
-function rst_section(header) \
-{ \
-  print header; \
-  len = length(header); \
-  for (i = 1; i <= len; i = i + 1) \
-    printf "="; \
-  printf "\n\n"; \
-} \
-{ \
-  copy_in_global_log = 1; \
-  global_test_result = "RUN"; \
-  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-    { \
-      if (rc < 0) \
-         fatal("failed to read from " $$0 ".trs"); \
-      if (line ~ /$(am__global_test_result_rx)/) \
-        { \
-          sub("$(am__global_test_result_rx)", "", line); \
-          sub("[ 	]*$$", "", line); \
-          global_test_result = line; \
-        } \
-      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
-        copy_in_global_log = 0; \
-    }; \
-  if (copy_in_global_log) \
-    { \
-      rst_section(global_test_result ": " $$0); \
-      while ((rc = (getline line < ($$0 ".log"))) != 0) \
-      { \
-        if (rc < 0) \
-          fatal("failed to read from " $$0 ".log"); \
-        print line; \
-      }; \
-      printf "\n"; \
-    }; \
-  close ($$0 ".trs"); \
-  close ($$0 ".log"); \
-}'
-# Restructured Text title.
-am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
-# Solaris 10 'make', and several other traditional 'make' implementations,
-# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
-# by disabling -e (using the XSI extension "set +e") if it's set.
-am__sh_e_setup = case $$- in *e*) set +e;; esac
-# Default flags passed to test drivers.
-am__common_driver_flags = \
-  --color-tests "$$am__color_tests" \
-  --enable-hard-errors "$$am__enable_hard_errors" \
-  --expect-failure "$$am__expect_failure"
-# To be inserted before the command running the test.  Creates the
-# directory for the log if needed.  Stores in $dir the directory
-# containing $f, in $tst the test, in $log the log.  Executes the
-# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
-# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
-# will run the test scripts (or their associated LOG_COMPILER, if
-# thy have one).
-am__check_pre = \
-$(am__sh_e_setup);					\
-$(am__vpath_adj_setup) $(am__vpath_adj)			\
-$(am__tty_colors);					\
-srcdir=$(srcdir); export srcdir;			\
-case "$@" in						\
-  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
-    *) am__odir=.;; 					\
-esac;							\
-test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
-  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
-if test -f "./$$f"; then dir=./;			\
-elif test -f "$$f"; then dir=;				\
-else dir="$(srcdir)/"; fi;				\
-tst=$$dir$$f; log='$@'; 				\
-if test -n '$(DISABLE_HARD_ERRORS)'; then		\
-  am__enable_hard_errors=no; 				\
-else							\
-  am__enable_hard_errors=yes; 				\
-fi; 							\
-case " $(XFAIL_TESTS) " in				\
-  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
-    am__expect_failure=yes;;				\
-  *)							\
-    am__expect_failure=no;;				\
-esac; 							\
-$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
-# A shell command to get the names of the tests scripts with any registered
-# extension removed (i.e., equivalently, the names of the test logs, with
-# the '.log' extension removed).  The result is saved in the shell variable
-# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
-# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
-# since that might cause problem with VPATH rewrites for suffix-less tests.
-# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
-am__set_TESTS_bases = \
-  bases='$(TEST_LOGS)'; \
-  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
-  bases=`echo $$bases`
-RECHECK_LOGS = $(TEST_LOGS)
-AM_RECURSIVE_TARGETS = check recheck
-TEST_SUITE_LOG = test-suite.log
-TEST_EXTENSIONS =  .test
-LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
-LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
-am__set_b = \
-  case '$@' in \
-    */*) \
-      case '$*' in \
-        */*) b='$*';; \
-          *) b=`echo '$@' | sed 's/\.log$$//'`; \
-       esac;; \
-    *) \
-      b='$*';; \
-  esac
-am__test_logs1 = $(TESTS:=.log)
-am__test_logs2 = $(am__test_logs1:.log=.log)
-TEST_LOGS = $(am__test_logs2:.test.log=.log)
-TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
-TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
-	$(TEST_LOG_FLAGS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing aclocal-1.13
-AEC_DIR = 
-AMTAR = $${TAR-tar}
-AM_DEFAULT_VERBOSITY = 1
-AR = ar
-AUTOCONF = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoconf
-AUTOHEADER = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoheader
-AUTOMAKE = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing automake-1.13
-AWK = gawk
-CC = gcc
-CCDEPMODE = depmode=gcc3
-CCSDS_TEST = 
-CFLAGS = -g -O2
-CPP = gcc -E
-CPPFLAGS = 
-CYGPATH_W = echo
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DEVEL_RULES = dummy.am
-DLLTOOL = false
-DSYMUTIL = 
-DUMPBIN = 
-ECCODES_AGE = 0
-ECCODES_CURRENT = 1
-ECCODES_DEFINITION_PATH = ${datarootdir}/eccodes/definitions
-ECCODES_MAIN_VERSION = 0.10.0
-ECCODES_MAJOR_VERSION = 0
-ECCODES_MINOR_VERSION = 10
-ECCODES_PATCH_VERSION = 0
-ECCODES_REVISION = 0
-ECCODES_SAMPLES_PATH = ${datarootdir}/eccodes/samples
-ECCODES_VERSION_STR = 0.10.0
-ECHO_C = 
-ECHO_N = -n
-ECHO_T = 
-EGREP = /usr/bin/grep -E
-EMOS_LIB = 
-EXEEXT = 
-F77 = gfortran
-F90_CHECK = examples/F90
-F90_MODULE_FLAG = -I
-FC = gfortran
-FCFLAGS = -g -O2
-FFLAGS = -g -O2
-FGREP = /usr/bin/grep -F
-FORTRAN_MOD = fortran
-GREP = /usr/bin/grep
-GRIB_API_INC = /tmp/masn/git/grib_api/eccodes/src
-GRIB_API_LIB = /tmp/masn/git/grib_api/eccodes/src/grib_api.a
-GRIB_DEVEL = 0
-IFS_SAMPLES_DIR = ${datarootdir}/eccodes/ifs_samples
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-JASPER_DIR = system
-JPEG_TEST = jpeg.sh
-LD = /usr/x86_64-suse-linux/bin/ld -m elf_x86_64
-LDFLAGS = 
-LEX = flex
-LEXLIB = -lfl
-LEX_OUTPUT_ROOT = lex.yy
-LIBOBJS = 
-LIBS = -lm -ljasper 
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LIBTOOL_DEPS = config/ltmain.sh
-LIB_AEC = 
-LIB_JASPER = -ljasper
-LIB_OPENJPEG = 
-LIB_PNG = 
-LINUX_DISTRIBUTION_NAME = openSUSE 13.1 (x86_64)
-LINUX_DISTRIBUTION_VERSION = 
-LIPO = 
-LN_S = ln -s
-LTLIBOBJS = 
-MAKEINFO = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing makeinfo
-MANIFEST_TOOL = :
-MKDIR_P = /usr/bin/mkdir -p
-NETCDF_LDFLAGS = 
-NM = /usr/bin/nm -B
-NMEDIT = 
-NUMPY_INCLUDE = /usr/local/apps/python/2.7.8-01/lib/python2.7/site-packages/numpy/core/include
-OBJDUMP = objdump
-OBJEXT = o
-OPENJPEG_DIR = system
-OTOOL = 
-OTOOL64 = 
-PACKAGE = eccodes
-PACKAGE_BUGREPORT = Software.Support at ecmwf.int
-PACKAGE_NAME = eccodes
-PACKAGE_STRING = eccodes  
-PACKAGE_TARNAME = eccodes
-PACKAGE_URL = 
-PACKAGE_VERSION = 0.10.0
-PATH_SEPARATOR = :
-PERL = 
-PERLDIR = perl
-PERL_INSTALL_OPTIONS = LIB=NONE/perl
-PERL_MAKE_OPTIONS = 
-PYTHON = /usr/local/apps/python/2.7.8-01/bin/python
-PYTHON_CFLAGS = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7 -fno-strict-aliasing -O3 -fpic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
-PYTHON_CHECK = examples/python
-PYTHON_CONFIG = /usr/local/apps/python/2.7.8-01/bin/python2.7-config
-PYTHON_DATA_HANDLER = numpy
-PYTHON_EXEC_PREFIX = ${exec_prefix}
-PYTHON_INCLUDES = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7
-PYTHON_LDFLAGS = -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic
-PYTHON_LIBS = -lpthread -ldl -lutil -lm -lpython2.7
-PYTHON_PLATFORM = linux2
-PYTHON_PREFIX = ${prefix}
-PYTHON_VERSION = 2.7
-RANLIB = ranlib
-RM = rm -f
-RPM_CONFIGURE_ARGS =  '--enable-python' '--disable-shared' 'CC=gcc' 'F77=gfortran' 'FC=gfortran'
-RPM_HOST_CPU = x86_64
-RPM_HOST_OS = linux-gnu
-RPM_HOST_VENDOR = suse
-RPM_RELEASE = 1
-SED = /usr/bin/sed
-SET_MAKE = 
-SHELL = /bin/sh
-STRIP = strip
-VERSION = 0.10.0
-WARN_PEDANTIC = -pedantic -Wall
-WERROR = 
-YACC = bison -y
-YFLAGS = 
-abs_builddir = /tmp/masn/git/grib_api/eccodes/examples/python
-abs_srcdir = /tmp/masn/git/grib_api/eccodes/examples/python
-abs_top_builddir = /tmp/masn/git/grib_api/eccodes
-abs_top_srcdir = /tmp/masn/git/grib_api/eccodes
-ac_ct_AR = ar
-ac_ct_CC = gcc
-ac_ct_DUMPBIN = 
-ac_ct_F77 = 
-ac_ct_FC = 
-am__include = include
-am__leading_dot = .
-am__quote = 
-am__tar = $${TAR-tar} chof - "$$tardir"
-am__untar = $${TAR-tar} xf -
-bindir = ${exec_prefix}/bin
-build = x86_64-suse-linux-gnu
-build_alias = 
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = suse
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-host = x86_64-suse-linux-gnu
-host_alias = 
-host_cpu = x86_64
-host_os = linux-gnu
-host_vendor = suse
-htmldir = ${docdir}
-includedir = ${prefix}/include
-infodir = ${datarootdir}/info
-install_sh = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localedir = ${datarootdir}/locale
-localstatedir = ${prefix}/var
-mandir = ${datarootdir}/man
-mkdir_p = $(MKDIR_P)
-oldincludedir = /usr/include
-pdfdir = ${docdir}
-pkgpyexecdir = ${pyexecdir}/eccodes
-pkgpythondir = ${pythondir}/eccodes
-prefix = /usr/local
-program_transform_name = s,x,x,
-psdir = ${docdir}
-pyexecdir = ${exec_prefix}/lib/python2.7/site-packages
-pythondir = ${prefix}/lib/python2.7/site-packages
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-srcdir = .
-sysconfdir = ${prefix}/etc
-target_alias = 
-top_build_prefix = ../../
-top_builddir = ../..
-top_srcdir = ../..
-AM_CFLAGS = -pedantic -Wall 
-TESTS = grib_clone.sh count_messages.sh grib_get_keys.sh grib_index.sh grib_iterator.sh \
-        grib_keys_iterator.sh grib_multi_write.sh grib_nearest.sh grib_print_data.sh \
-        samples.sh grib_set_keys.sh set_missing.sh binary_message.sh grib_set_bitmap.sh \
-        bufr_read_header.sh bufr_read_synop.sh bufr_clone.sh bufr_get_keys.sh \
-        bufr_set_keys.sh bufr_expanded.sh  bufr_keys_iterator.sh bufr_subset.sh \
-        bufr_attributes.sh get_product_kind.sh bufr_read_temp.sh bufr_read_scatterometer.sh
-
-TESTS_ENVIRONMENT = TOPBUILDDIR=$(top_builddir) PYTHON=$(PYTHON)
-p_grib_keys_iterator_SOURCES = grib_keys_iterator.c
-p_grib_print_data_SOURCES = grib_print_data.c
-p_grib_iterator_SOURCES = grib_iterator.c
-p_count_messages_SOURCES = count_messages.c
-INCLUDES = -I$(top_builddir)/src
-LDADD = $(top_builddir)/src/libeccodes.la
-DEPENDENCIES = $(LDADD)
-EXTRA_DIST = $(TESTS) include.sh grib_clone.py count_messages.py grib_get_keys.py grib_index.py \
-             grib_iterator.py grib_keys_iterator.py grib_multi_write.py \
-             grib_nearest.py grib_print_data.py samples.py grib_set_keys.py \
-             set_missing.py binary_message.py grib_set_pv.py grib_set_bitmap.py \
-             bufr_read_header.py  bufr_read_synop.py \
-             bufr_clone.py bufr_get_keys.py bufr_set_keys.py \
-             bufr_expanded.py  bufr_keys_iterator.py bufr_subset.py bufr_attributes.py \
-             get_product_kind.py bufr_read_temp.py bufr_read_scatterometer.py \
-             CMakeLists.txt include.ctest.sh.in 
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/python/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu examples/python/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstPROGRAMS:
-	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
-
-p_count_messages$(EXEEXT): $(p_count_messages_OBJECTS) $(p_count_messages_DEPENDENCIES) $(EXTRA_p_count_messages_DEPENDENCIES) 
-	@rm -f p_count_messages$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(p_count_messages_OBJECTS) $(p_count_messages_LDADD) $(LIBS)
-
-p_grib_iterator$(EXEEXT): $(p_grib_iterator_OBJECTS) $(p_grib_iterator_DEPENDENCIES) $(EXTRA_p_grib_iterator_DEPENDENCIES) 
-	@rm -f p_grib_iterator$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(p_grib_iterator_OBJECTS) $(p_grib_iterator_LDADD) $(LIBS)
-
-p_grib_keys_iterator$(EXEEXT): $(p_grib_keys_iterator_OBJECTS) $(p_grib_keys_iterator_DEPENDENCIES) $(EXTRA_p_grib_keys_iterator_DEPENDENCIES) 
-	@rm -f p_grib_keys_iterator$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(p_grib_keys_iterator_OBJECTS) $(p_grib_keys_iterator_LDADD) $(LIBS)
-
-p_grib_print_data$(EXEEXT): $(p_grib_print_data_OBJECTS) $(p_grib_print_data_DEPENDENCIES) $(EXTRA_p_grib_print_data_DEPENDENCIES) 
-	@rm -f p_grib_print_data$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(p_grib_print_data_OBJECTS) $(p_grib_print_data_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-include ./$(DEPDIR)/count_messages.Po
-include ./$(DEPDIR)/grib_iterator.Po
-include ./$(DEPDIR)/grib_keys_iterator.Po
-include ./$(DEPDIR)/grib_print_data.Po
-
-.c.o:
-	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-#	$(AM_V_CC)source='$<' object='$@' libtool=no \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(COMPILE) -c $<
-
-.c.obj:
-	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-#	$(AM_V_CC)source='$<' object='$@' libtool=no \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-#	$(AM_V_CC)source='$<' object='$@' libtool=yes \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-# Recover from deleted '.trs' file; this should ensure that
-# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
-# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
-# to avoid problems with "make -n".
-.log.trs:
-	rm -f $< $@
-	$(MAKE) $(AM_MAKEFLAGS) $<
-
-# Leading 'am--fnord' is there to ensure the list of targets does not
-# expand to empty, as could happen e.g. with make check TESTS=''.
-am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
-am--force-recheck:
-	@:
-
-$(TEST_SUITE_LOG): $(TEST_LOGS)
-	@$(am__set_TESTS_bases); \
-	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
-	redo_bases=`for i in $$bases; do \
-	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
-	            done`; \
-	if test -n "$$redo_bases"; then \
-	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
-	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
-	  if $(am__make_dryrun); then :; else \
-	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
-	  fi; \
-	fi; \
-	if test -n "$$am__remaking_logs"; then \
-	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
-	       "recursion detected" >&2; \
-	else \
-	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
-	fi; \
-	if $(am__make_dryrun); then :; else \
-	  st=0;  \
-	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
-	  for i in $$redo_bases; do \
-	    test -f $$i.trs && test -r $$i.trs \
-	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
-	    test -f $$i.log && test -r $$i.log \
-	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
-	  done; \
-	  test $$st -eq 0 || exit 1; \
-	fi
-	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
-	ws='[ 	]'; \
-	results=`for b in $$bases; do echo $$b.trs; done`; \
-	test -n "$$results" || results=/dev/null; \
-	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
-	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
-	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
-	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
-	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
-	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
-	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
-	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
-	  success=true; \
-	else \
-	  success=false; \
-	fi; \
-	br='==================='; br=$$br$$br$$br$$br; \
-	result_count () \
-	{ \
-	    if test x"$$1" = x"--maybe-color"; then \
-	      maybe_colorize=yes; \
-	    elif test x"$$1" = x"--no-color"; then \
-	      maybe_colorize=no; \
-	    else \
-	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
-	    fi; \
-	    shift; \
-	    desc=$$1 count=$$2; \
-	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
-	      color_start=$$3 color_end=$$std; \
-	    else \
-	      color_start= color_end=; \
-	    fi; \
-	    echo "$${color_start}# $$desc $$count$${color_end}"; \
-	}; \
-	create_testsuite_report () \
-	{ \
-	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
-	  result_count $$1 "PASS: " $$pass  "$$grn"; \
-	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
-	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
-	  result_count $$1 "FAIL: " $$fail  "$$red"; \
-	  result_count $$1 "XPASS:" $$xpass "$$red"; \
-	  result_count $$1 "ERROR:" $$error "$$mgn"; \
-	}; \
-	{								\
-	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
-	    $(am__rst_title);						\
-	  create_testsuite_report --no-color;				\
-	  echo;								\
-	  echo ".. contents:: :depth: 2";				\
-	  echo;								\
-	  for b in $$bases; do echo $$b; done				\
-	    | $(am__create_global_log);					\
-	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
-	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
-	if $$success; then						\
-	  col="$$grn";							\
-	 else								\
-	  col="$$red";							\
-	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
-	fi;								\
-	echo "$${col}$$br$${std}"; 					\
-	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
-	echo "$${col}$$br$${std}"; 					\
-	create_testsuite_report --maybe-color;				\
-	echo "$$col$$br$$std";						\
-	if $$success; then :; else					\
-	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
-	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
-	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
-	  fi;								\
-	  echo "$$col$$br$$std";					\
-	fi;								\
-	$$success || exit 1
-
-check-TESTS:
-	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
-	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
-	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-	@set +e; $(am__set_TESTS_bases); \
-	log_list=`for i in $$bases; do echo $$i.log; done`; \
-	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
-	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
-	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
-	exit $$?;
-recheck: all 
-	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-	@set +e; $(am__set_TESTS_bases); \
-	bases=`for i in $$bases; do echo $$i; done \
-	         | $(am__list_recheck_tests)` || exit 1; \
-	log_list=`for i in $$bases; do echo $$i.log; done`; \
-	log_list=`echo $$log_list`; \
-	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
-	        am__force_recheck=am--force-recheck \
-	        TEST_LOGS="$$log_list"; \
-	exit $$?
-grib_clone.sh.log: grib_clone.sh
-	@p='grib_clone.sh'; \
-	b='grib_clone.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-count_messages.sh.log: count_messages.sh
-	@p='count_messages.sh'; \
-	b='count_messages.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_get_keys.sh.log: grib_get_keys.sh
-	@p='grib_get_keys.sh'; \
-	b='grib_get_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_index.sh.log: grib_index.sh
-	@p='grib_index.sh'; \
-	b='grib_index.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_iterator.sh.log: grib_iterator.sh
-	@p='grib_iterator.sh'; \
-	b='grib_iterator.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_keys_iterator.sh.log: grib_keys_iterator.sh
-	@p='grib_keys_iterator.sh'; \
-	b='grib_keys_iterator.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_multi_write.sh.log: grib_multi_write.sh
-	@p='grib_multi_write.sh'; \
-	b='grib_multi_write.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_nearest.sh.log: grib_nearest.sh
-	@p='grib_nearest.sh'; \
-	b='grib_nearest.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_print_data.sh.log: grib_print_data.sh
-	@p='grib_print_data.sh'; \
-	b='grib_print_data.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-samples.sh.log: samples.sh
-	@p='samples.sh'; \
-	b='samples.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_set_keys.sh.log: grib_set_keys.sh
-	@p='grib_set_keys.sh'; \
-	b='grib_set_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-set_missing.sh.log: set_missing.sh
-	@p='set_missing.sh'; \
-	b='set_missing.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-binary_message.sh.log: binary_message.sh
-	@p='binary_message.sh'; \
-	b='binary_message.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_set_bitmap.sh.log: grib_set_bitmap.sh
-	@p='grib_set_bitmap.sh'; \
-	b='grib_set_bitmap.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_header.sh.log: bufr_read_header.sh
-	@p='bufr_read_header.sh'; \
-	b='bufr_read_header.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_synop.sh.log: bufr_read_synop.sh
-	@p='bufr_read_synop.sh'; \
-	b='bufr_read_synop.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_clone.sh.log: bufr_clone.sh
-	@p='bufr_clone.sh'; \
-	b='bufr_clone.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_get_keys.sh.log: bufr_get_keys.sh
-	@p='bufr_get_keys.sh'; \
-	b='bufr_get_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_set_keys.sh.log: bufr_set_keys.sh
-	@p='bufr_set_keys.sh'; \
-	b='bufr_set_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_expanded.sh.log: bufr_expanded.sh
-	@p='bufr_expanded.sh'; \
-	b='bufr_expanded.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_keys_iterator.sh.log: bufr_keys_iterator.sh
-	@p='bufr_keys_iterator.sh'; \
-	b='bufr_keys_iterator.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_subset.sh.log: bufr_subset.sh
-	@p='bufr_subset.sh'; \
-	b='bufr_subset.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_attributes.sh.log: bufr_attributes.sh
-	@p='bufr_attributes.sh'; \
-	b='bufr_attributes.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-get_product_kind.sh.log: get_product_kind.sh
-	@p='get_product_kind.sh'; \
-	b='get_product_kind.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_temp.sh.log: bufr_read_temp.sh
-	@p='bufr_read_temp.sh'; \
-	b='bufr_read_temp.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_scatterometer.sh.log: bufr_read_scatterometer.sh
-	@p='bufr_read_scatterometer.sh'; \
-	b='bufr_read_scatterometer.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-.test.log:
-	@p='$<'; \
-	$(am__set_b); \
-	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-#.test$(EXEEXT).log:
-#	@p='$<'; \
-#	$(am__set_b); \
-#	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
-#	--log-file $$b.log --trs-file $$b.trs \
-#	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
-#	"$$tst" $(AM_TESTS_FD_REDIRECT)
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
-	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
-	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: check-am install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
-	ctags ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	recheck tags tags-am uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/examples/python/Makefile.am b/examples/python/Makefile.am
index 4db6822..18dc628 100644
--- a/examples/python/Makefile.am
+++ b/examples/python/Makefile.am
@@ -1,12 +1,35 @@
 if WITH_PYTHON
 AM_CFLAGS =  @WARN_PEDANTIC@ @WERROR@
 
-TESTS = grib_clone.sh count_messages.sh grib_get_keys.sh grib_index.sh grib_iterator.sh \
-        grib_keys_iterator.sh grib_multi_write.sh grib_nearest.sh grib_print_data.sh \
-        samples.sh grib_set_keys.sh set_missing.sh binary_message.sh grib_set_bitmap.sh \
-        bufr_read_header.sh bufr_read_synop.sh bufr_clone.sh bufr_get_keys.sh \
-        bufr_set_keys.sh bufr_expanded.sh  bufr_keys_iterator.sh bufr_subset.sh \
-        bufr_attributes.sh get_product_kind.sh bufr_read_temp.sh bufr_read_scatterometer.sh
+TESTS = grib_clone.sh \
+        count_messages.sh \
+        grib_get_keys.sh \
+        grib_index.sh \
+        grib_iterator.sh \
+        grib_keys_iterator.sh \
+        grib_multi_write.sh \
+        grib_nearest.sh \
+        grib_print_data.sh \
+        samples.sh \
+        grib_set_keys.sh \
+        set_missing.sh \
+        binary_message.sh \
+        grib_set_bitmap.sh \
+        bufr_read_header.sh \
+        bufr_read_synop.sh \
+        bufr_clone.sh \
+        bufr_get_keys.sh \
+        bufr_set_keys.sh \
+        bufr_expanded.sh \
+        bufr_keys_iterator.sh \
+        bufr_subset.sh \
+        bufr_attributes.sh \
+        get_product_kind.sh \
+        bufr_read_temp.sh \
+        bufr_read_scatterometer.sh \
+        gts_get_keys.sh \
+        metar_get_keys.sh
+
 TESTS_ENVIRONMENT = TOPBUILDDIR=$(top_builddir) PYTHON=$(PYTHON)
 
 noinst_PROGRAMS = p_grib_keys_iterator p_grib_print_data p_grib_iterator p_count_messages
@@ -18,13 +41,36 @@ INCLUDES =  -I$(top_builddir)/src
 LDADD = $(top_builddir)/src/libeccodes.la
 DEPENDENCIES = $(LDADD)
 
-EXTRA_DIST = $(TESTS) include.sh grib_clone.py count_messages.py grib_get_keys.py grib_index.py \
-             grib_iterator.py grib_keys_iterator.py grib_multi_write.py \
-             grib_nearest.py grib_print_data.py samples.py grib_set_keys.py \
-             set_missing.py binary_message.py grib_set_pv.py grib_set_bitmap.py \
-             bufr_read_header.py  bufr_read_synop.py \
-             bufr_clone.py bufr_get_keys.py bufr_set_keys.py \
-             bufr_expanded.py  bufr_keys_iterator.py bufr_subset.py bufr_attributes.py \
-             get_product_kind.py bufr_read_temp.py bufr_read_scatterometer.py \
-             CMakeLists.txt include.ctest.sh.in 
+EXTRA_DIST = $(TESTS) include.sh CMakeLists.txt include.ctest.sh.in \
+             grib_clone.py \
+             count_messages.py \
+             grib_get_keys.py \
+             grib_index.py \
+             grib_iterator.py \
+             grib_keys_iterator.py \
+             grib_multi_write.py \
+             grib_nearest.py \
+             grib_print_data.py \
+             samples.py \
+             grib_set_keys.py \
+             set_missing.py \
+             binary_message.py \
+             grib_set_pv.py \
+             grib_set_bitmap.py \
+             bufr_read_header.py \
+             bufr_read_synop.py \
+             bufr_clone.py \
+             bufr_get_keys.py \
+             bufr_set_keys.py \
+             bufr_expanded.py \
+             bufr_keys_iterator.py \
+             bufr_subset.py \
+             bufr_attributes.py \
+             get_product_kind.py \
+             bufr_read_temp.py \
+             bufr_read_scatterometer.py \
+             gts_get_keys.py \
+             metar_get_keys.py
+
 endif
+
diff --git a/examples/python/Makefile.in b/examples/python/Makefile.in
index c4f7d74..52aa76d 100644
--- a/examples/python/Makefile.in
+++ b/examples/python/Makefile.in
@@ -586,12 +586,34 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 @WITH_PYTHON_TRUE at AM_CFLAGS = @WARN_PEDANTIC@ @WERROR@
- at WITH_PYTHON_TRUE@TESTS = grib_clone.sh count_messages.sh grib_get_keys.sh grib_index.sh grib_iterator.sh \
- at WITH_PYTHON_TRUE@        grib_keys_iterator.sh grib_multi_write.sh grib_nearest.sh grib_print_data.sh \
- at WITH_PYTHON_TRUE@        samples.sh grib_set_keys.sh set_missing.sh binary_message.sh grib_set_bitmap.sh \
- at WITH_PYTHON_TRUE@        bufr_read_header.sh bufr_read_synop.sh bufr_clone.sh bufr_get_keys.sh \
- at WITH_PYTHON_TRUE@        bufr_set_keys.sh bufr_expanded.sh  bufr_keys_iterator.sh bufr_subset.sh \
- at WITH_PYTHON_TRUE@        bufr_attributes.sh get_product_kind.sh bufr_read_temp.sh bufr_read_scatterometer.sh
+ at WITH_PYTHON_TRUE@TESTS = grib_clone.sh \
+ at WITH_PYTHON_TRUE@        count_messages.sh \
+ at WITH_PYTHON_TRUE@        grib_get_keys.sh \
+ at WITH_PYTHON_TRUE@        grib_index.sh \
+ at WITH_PYTHON_TRUE@        grib_iterator.sh \
+ at WITH_PYTHON_TRUE@        grib_keys_iterator.sh \
+ at WITH_PYTHON_TRUE@        grib_multi_write.sh \
+ at WITH_PYTHON_TRUE@        grib_nearest.sh \
+ at WITH_PYTHON_TRUE@        grib_print_data.sh \
+ at WITH_PYTHON_TRUE@        samples.sh \
+ at WITH_PYTHON_TRUE@        grib_set_keys.sh \
+ at WITH_PYTHON_TRUE@        set_missing.sh \
+ at WITH_PYTHON_TRUE@        binary_message.sh \
+ at WITH_PYTHON_TRUE@        grib_set_bitmap.sh \
+ at WITH_PYTHON_TRUE@        bufr_read_header.sh \
+ at WITH_PYTHON_TRUE@        bufr_read_synop.sh \
+ at WITH_PYTHON_TRUE@        bufr_clone.sh \
+ at WITH_PYTHON_TRUE@        bufr_get_keys.sh \
+ at WITH_PYTHON_TRUE@        bufr_set_keys.sh \
+ at WITH_PYTHON_TRUE@        bufr_expanded.sh \
+ at WITH_PYTHON_TRUE@        bufr_keys_iterator.sh \
+ at WITH_PYTHON_TRUE@        bufr_subset.sh \
+ at WITH_PYTHON_TRUE@        bufr_attributes.sh \
+ at WITH_PYTHON_TRUE@        get_product_kind.sh \
+ at WITH_PYTHON_TRUE@        bufr_read_temp.sh \
+ at WITH_PYTHON_TRUE@        bufr_read_scatterometer.sh \
+ at WITH_PYTHON_TRUE@        gts_get_keys.sh \
+ at WITH_PYTHON_TRUE@        metar_get_keys.sh
 
 @WITH_PYTHON_TRUE at TESTS_ENVIRONMENT = TOPBUILDDIR=$(top_builddir) PYTHON=$(PYTHON)
 @WITH_PYTHON_TRUE at p_grib_keys_iterator_SOURCES = grib_keys_iterator.c
@@ -601,15 +623,36 @@ top_srcdir = @top_srcdir@
 @WITH_PYTHON_TRUE at INCLUDES = -I$(top_builddir)/src
 @WITH_PYTHON_TRUE at LDADD = $(top_builddir)/src/libeccodes.la
 @WITH_PYTHON_TRUE at DEPENDENCIES = $(LDADD)
- at WITH_PYTHON_TRUE@EXTRA_DIST = $(TESTS) include.sh grib_clone.py count_messages.py grib_get_keys.py grib_index.py \
- at WITH_PYTHON_TRUE@             grib_iterator.py grib_keys_iterator.py grib_multi_write.py \
- at WITH_PYTHON_TRUE@             grib_nearest.py grib_print_data.py samples.py grib_set_keys.py \
- at WITH_PYTHON_TRUE@             set_missing.py binary_message.py grib_set_pv.py grib_set_bitmap.py \
- at WITH_PYTHON_TRUE@             bufr_read_header.py  bufr_read_synop.py \
- at WITH_PYTHON_TRUE@             bufr_clone.py bufr_get_keys.py bufr_set_keys.py \
- at WITH_PYTHON_TRUE@             bufr_expanded.py  bufr_keys_iterator.py bufr_subset.py bufr_attributes.py \
- at WITH_PYTHON_TRUE@             get_product_kind.py bufr_read_temp.py bufr_read_scatterometer.py \
- at WITH_PYTHON_TRUE@             CMakeLists.txt include.ctest.sh.in 
+ at WITH_PYTHON_TRUE@EXTRA_DIST = $(TESTS) include.sh CMakeLists.txt include.ctest.sh.in \
+ at WITH_PYTHON_TRUE@             grib_clone.py \
+ at WITH_PYTHON_TRUE@             count_messages.py \
+ at WITH_PYTHON_TRUE@             grib_get_keys.py \
+ at WITH_PYTHON_TRUE@             grib_index.py \
+ at WITH_PYTHON_TRUE@             grib_iterator.py \
+ at WITH_PYTHON_TRUE@             grib_keys_iterator.py \
+ at WITH_PYTHON_TRUE@             grib_multi_write.py \
+ at WITH_PYTHON_TRUE@             grib_nearest.py \
+ at WITH_PYTHON_TRUE@             grib_print_data.py \
+ at WITH_PYTHON_TRUE@             samples.py \
+ at WITH_PYTHON_TRUE@             grib_set_keys.py \
+ at WITH_PYTHON_TRUE@             set_missing.py \
+ at WITH_PYTHON_TRUE@             binary_message.py \
+ at WITH_PYTHON_TRUE@             grib_set_pv.py \
+ at WITH_PYTHON_TRUE@             grib_set_bitmap.py \
+ at WITH_PYTHON_TRUE@             bufr_read_header.py \
+ at WITH_PYTHON_TRUE@             bufr_read_synop.py \
+ at WITH_PYTHON_TRUE@             bufr_clone.py \
+ at WITH_PYTHON_TRUE@             bufr_get_keys.py \
+ at WITH_PYTHON_TRUE@             bufr_set_keys.py \
+ at WITH_PYTHON_TRUE@             bufr_expanded.py \
+ at WITH_PYTHON_TRUE@             bufr_keys_iterator.py \
+ at WITH_PYTHON_TRUE@             bufr_subset.py \
+ at WITH_PYTHON_TRUE@             bufr_attributes.py \
+ at WITH_PYTHON_TRUE@             get_product_kind.py \
+ at WITH_PYTHON_TRUE@             bufr_read_temp.py \
+ at WITH_PYTHON_TRUE@             bufr_read_scatterometer.py \
+ at WITH_PYTHON_TRUE@             gts_get_keys.py \
+ at WITH_PYTHON_TRUE@             metar_get_keys.py
 
 all: all-am
 
@@ -1084,6 +1127,20 @@ bufr_read_scatterometer.sh.log: bufr_read_scatterometer.sh
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+gts_get_keys.sh.log: gts_get_keys.sh
+	@p='gts_get_keys.sh'; \
+	b='gts_get_keys.sh'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+metar_get_keys.sh.log: metar_get_keys.sh
+	@p='metar_get_keys.sh'; \
+	b='metar_get_keys.sh'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 .test.log:
 	@p='$<'; \
 	$(am__set_b); \
diff --git a/examples/python/binary_message.py b/examples/python/binary_message.py
index 91643d7..34c5d1a 100644
--- a/examples/python/binary_message.py
+++ b/examples/python/binary_message.py
@@ -1,11 +1,12 @@
 #
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 #
 
 import traceback
@@ -13,20 +14,22 @@ import sys
 
 from eccodes import *
 
-VERBOSE=1 # verbose error reporting
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
     f = open(sys.argv[1])
-    out = open(sys.argv[2],'w')
+    out = open(sys.argv[2], 'w')
 
     while 1:
         gid = codes_grib_new_from_file(f)
-        if gid is None: break
+        if gid is None:
+            break
 
         message = codes_get_message(gid)
 
         newgid = codes_new_from_message(message)
-        codes_write(newgid,out)
+        codes_write(newgid, out)
         codes_release(newgid)
 
         codes_release(gid)
@@ -34,14 +37,15 @@ def example():
     out.close()
     f.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/binary_message.sh b/examples/python/binary_message.sh
index 33adf6f..ba9c956 100755
--- a/examples/python/binary_message.sh
+++ b/examples/python/binary_message.sh
@@ -2,12 +2,10 @@
 
 . ./include.sh
 
-REDIRECT=/dev/null
-
 INPUT=${data_dir}/tigge_pf_ecmwf.grib2
 OUTPUT=out.grib
 
-$PYTHON binary_message.py $INPUT $OUTPUT 2> $REDIRECT > $REDIRECT
+$PYTHON $examples_src/binary_message.py $INPUT $OUTPUT
 ${tools_dir}/grib_compare $INPUT $OUTPUT
 rm $OUTPUT || true
 
@@ -15,7 +13,7 @@ rm $OUTPUT || true
 # We are expecting the command to fail so must turn off "set -e"
 INPUT=${data_dir}/bad.grib
 set +e
-$PYTHON binary_message.py $INPUT $OUTPUT 2> $REDIRECT > $REDIRECT
+$PYTHON $examples_src/binary_message.py $INPUT $OUTPUT 2>/dev/null
 status=$?
 set -e
 # Check command did indeed fail
diff --git a/examples/python/bufr_attributes.py b/examples/python/bufr_attributes.py
index 9436252..47c623d 100644
--- a/examples/python/bufr_attributes.py
+++ b/examples/python/bufr_attributes.py
@@ -1,10 +1,11 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 
 #
 # Python implementation: bufr_attributes
@@ -18,15 +19,16 @@ import sys
 
 from eccodes import *
 
-INPUT='../../data/bufr/syno_multi.bufr'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/bufr/syno_multi.bufr'
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
 
     # open bufr file
     f = open(INPUT)
 
-    cnt=0
+    cnt = 0
 
     # define the attributes to be printed (see BUFR code table B)
     attrs = [
@@ -35,63 +37,64 @@ def example():
         'scale',
         'reference',
         'width'
-        ]
+    ]
 
     # loop for the messages in the file
     while 1:
         # get handle for message
         gid = codes_bufr_new_from_file(f)
-        if gid is None: break
+        if gid is None:
+            break
 
         print "message: %s" % cnt
 
         # we need to instruct ecCodes to expand all the descriptors
         # i.e. unpack the data values
-        codes_set(gid,'unpack',1)
+        codes_set(gid, 'unpack', 1)
 
-        #---------------------------------------------------------------
+        # --------------------------------------------------------------
         # We will read the value and all the attributes available for
         # the 2m temperature.
-        #---------------------------------------------------------------
-        #get the value
-        key='airTemperatureAt2M'
+        # --------------------------------------------------------------
+        # get the value
+        key = 'airTemperatureAt2M'
         try:
-            print '  %s: %s' % (key,codes_get(gid,key))
-        except CodesInternalError,err:
-            print 'Error with key="%s" : %s' % (key,err.msg) 
+            print '  %s: %s' % (key, codes_get(gid, key))
+        except CodesInternalError, err:
+            print 'Error with key="%s" : %s' % (key, err.msg)
 
         # print the values of the attributes of the key. Attributes themselves
         # are keys as well. Their name is constructed like:
         # keyname->attributename
         for attr in attrs:
-            key='airTemperatureAt2M' + "->" + attr
+            key = 'airTemperatureAt2M' + "->" + attr
             try:
-                print '  %s: %s' % (key,codes_get(gid,key))
-            except CodesInternalError,err:
-                print 'Error with key="%s" : %s' % (key,err.msg) 
+                print '  %s: %s' % (key, codes_get(gid, key))
+            except CodesInternalError, err:
+                print 'Error with key="%s" : %s' % (key, err.msg)
 
-        #--------------------------------------------------------------------
+        # ------------------------------------------------------------------
         # The 2m temperature data element in this message has an associated
         # field: percentConfidence. Its value and attributes can be accessed
         # in a similar manner as was shown above for 2m temperature.
-        #-------------------------------------------------------------------
+        # ------------------------------------------------------------------
 
-        #get the value
-        key='airTemperatureAt2M->percentConfidence'
+        # get the value
+        key = 'airTemperatureAt2M->percentConfidence'
         try:
-            print '  %s: %s' % (key,codes_get(gid,key))
-        except CodesInternalError,err:
-            print 'Error with key="%s" : %s' % (key,err.msg) 
-                
+            print '  %s: %s' % (key, codes_get(gid, key))
+        except CodesInternalError, err:
+            print 'Error with key="%s" : %s' % (key, err.msg)
+
         # print the values of the attributes of the key.
         for attr in attrs:
-            key='airTemperatureAt2M->percentConfidence' + "->" + attr
+            key = 'airTemperatureAt2M->percentConfidence' + "->" + attr
             try:
-                print '  %s: %s' % (key,codes_get(gid,key))
-            except CodesInternalError,err:
-                print 'Error with key="%s" : %s' % (key,err.msg) 
+                print '  %s: %s' % (key, codes_get(gid, key))
+            except CodesInternalError, err:
+                print 'Error with key="%s" : %s' % (key, err.msg)
 
-        cnt+=1
+        cnt += 1
 
         # delete handle
         codes_release(gid)
@@ -99,14 +102,15 @@ def example():
     # close the file
     f.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/bufr_attributes.sh b/examples/python/bufr_attributes.sh
index 5b55f76..0a723c3 100755
--- a/examples/python/bufr_attributes.sh
+++ b/examples/python/bufr_attributes.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -24,11 +24,12 @@ rm -f $fTmp | true
 REDIRECT=/dev/null
 
 #Write the key values into a file
-$PYTHON bufr_attributes.py  2> $REDIRECT > $fTmp
+$PYTHON $examples_src/bufr_attributes.py  2> $REDIRECT > $fTmp
 
 #TODO: check the results
 
 #cat  $fTmp
 
 #Clean up
-rm -f $fTmp | true
+rm -f $fTmp
+
diff --git a/examples/python/bufr_clone.py b/examples/python/bufr_clone.py
index 0a2f0f0..8cac9d5 100644
--- a/examples/python/bufr_clone.py
+++ b/examples/python/bufr_clone.py
@@ -1,10 +1,11 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 #
 
 #
@@ -20,9 +21,10 @@ import sys
 
 from eccodes import *
 
-INPUT='../../data/bufr/syno_1.bufr'
-OUTPUT='bufr_clone_test_p.clone.bufr'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/bufr/syno_1.bufr'
+OUTPUT = 'bufr_clone_test_p.clone.bufr'
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
 
@@ -30,7 +32,7 @@ def example():
     fin = open(INPUT)
 
     # open otput bufr file
-    fout = open(OUTPUT,'w')
+    fout = open(OUTPUT, 'w')
 
     # get handle for message
     gid = codes_bufr_new_from_file(fin)
@@ -38,16 +40,16 @@ def example():
     # create several clones of this message and alter them
     # in different ways
 
-    for centre in range(0,3):
+    for centre in range(0, 3):
 
         # clone the message
         clone_id = codes_clone(gid)
 
         # this is the place where you may wish to modify the clone
-        codes_set(clone_id,'bufrHeaderCentre',centre)
+        codes_set(clone_id, 'bufrHeaderCentre', centre)
 
         # write the cloned message to a file
-        codes_write(clone_id,fout)
+        codes_write(clone_id, fout)
 
         # relase the clone's handle
         codes_release(clone_id)
@@ -58,14 +60,15 @@ def example():
     fin.close()
     fout.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError as err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/bufr_clone.sh b/examples/python/bufr_clone.sh
index 00f5939..430e813 100755
--- a/examples/python/bufr_clone.sh
+++ b/examples/python/bufr_clone.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -22,7 +22,7 @@ f=${data_dir}/bufr/syno_1.bufr
 REDIRECT=/dev/null
 
 #The input ($f) and output ($fBufrTmp) are hardcoded in the example!!!  
-$PYTHON bufr_clone.py >$REDIRECT 2> $REDIRECT 
+$PYTHON $examples_src/bufr_clone.py >$REDIRECT 2> $REDIRECT 
 
 #TODO: add more checks
 
@@ -39,6 +39,5 @@ fi
 set -e
 
 #Clean up
-rm -f ${fBufrTmp} | true
-
+rm -f ${fBufrTmp}
 
diff --git a/examples/python/bufr_encode_flight.py b/examples/python/bufr_encode_flight.py
new file mode 100644
index 0000000..0f2364e
--- /dev/null
+++ b/examples/python/bufr_encode_flight.py
@@ -0,0 +1,110 @@
+# Copyright 2005-2016 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.
+#
+
+# Description: how to encode flight dataset into BUFR
+
+from datetime import datetime
+import traceback
+import numpy as np
+import sys
+
+from eccodes import *
+
+VERBOSE = 1  # verbose error reporting
+
+def example(csvfile, input_filename, output_filename):
+
+    fbufrin = open(input_filename, 'rb')
+    fbufrout = open(output_filename, 'wb')
+
+    print 'Using ecCodes version: ', codes_get_api_version()
+
+    # The first line in the CSV has the column names
+    print 'Reading input CSV file: ', csvfile
+    parse_date = lambda x: datetime.strptime(x, '%Y%m%d')
+    parse_time = lambda x: datetime.strptime(x, '%H:%M:%S')
+    data = np.genfromtxt(csvfile, delimiter=',', dtype=None, names=True,
+                         converters={0: parse_date, 1: parse_time})
+
+    ymd_column = data['ymd']
+    years = np.array([x.year for x in ymd_column])
+    months = np.array([x.month for x in ymd_column])
+    days = np.array([x.day for x in ymd_column])
+
+    time_column = data['time']
+    hours = np.array([x.hour for x in time_column])
+    minutes = np.array([x.minute for x in time_column])
+    seconds = np.array([x.second for x in time_column])
+
+    latitudes = data['latitude']
+    longitudes = data['longitude']
+    altitudes = data['altitude']
+    pressures = data['pressure']
+    windSpeeds = data['windSpeed']
+    windDirections = data['windDirection']
+    temperatures = data['temperature']
+
+    print 'Reading input BUFR file: ', input_filename
+    bufr = codes_bufr_new_from_file(fbufrin)
+
+    codes_set(bufr, 'masterTablesVersionNumber', 24)
+    codes_set(bufr, 'localTablesVersionNumber', 0)
+    codes_set(bufr, 'compressedData', 1)
+    codes_set(bufr, 'numberOfSubsets', len(years))
+
+    # unexpandedDescriptors and BufrTemplate can be set alternatively
+    # to choose the template for the BUFR message
+
+    #unexpandedDescriptors = [301051,4006,7002,10004,12001,11001,11002,11031,11032,11033,20041]
+    #codes_set_array(bufr, 'unexpandedDescriptors', unexpandedDescriptors)
+
+    codes_set(bufr,'BufrTemplate','aircraftReportWithSecondsAndPressure')
+
+    codes_set_array(bufr, 'year', years)
+    codes_set_array(bufr, 'month', months)
+    codes_set_array(bufr, 'day', days)
+    codes_set_array(bufr, 'hour', hours)
+    codes_set_array(bufr, 'minute', minutes)
+    codes_set_array(bufr, 'second', seconds)
+    codes_set_array(bufr, 'latitude', latitudes)
+    codes_set_array(bufr, 'longitude', longitudes)
+    codes_set_array(bufr, 'height', altitudes)
+    codes_set_array(bufr, 'pressure', pressures)
+    codes_set_array(bufr, 'windSpeed', windSpeeds)
+    codes_set_array(bufr, 'windDirection', windDirections)
+    codes_set_array(bufr, 'airTemperature', temperatures)
+
+    codes_set(bufr, 'pack', 1)
+
+    codes_write(bufr, fbufrout)
+    print 'Created output BUFR file: ', output_filename
+
+
+def main():
+    if len(sys.argv) < 4:
+        print >>sys.stderr, 'Usage: ', sys.argv[0], ' csv bufr_in bufr_out'
+        sys.exit(1)
+
+    csv_filename = sys.argv[1]
+    input_filename = sys.argv[2]
+    output_filename = sys.argv[3]
+
+    try:
+        example(csv_filename, input_filename, output_filename)
+    except CodesInternalError, err:
+        if VERBOSE:
+            traceback.print_exc(file=sys.stderr)
+        else:
+            print >>sys.stderr, err.msg
+
+        return 1
+
+if __name__ == "__main__":
+    sys.exit(main())
diff --git a/examples/python/bufr_encode_flight.sh b/examples/python/bufr_encode_flight.sh
new file mode 100755
index 0000000..4ca5eac
--- /dev/null
+++ b/examples/python/bufr_encode_flight.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+. ./include.sh
+
+#-----------------------------------------------------
+# Create a BUFR from flight data
+#----------------------------------------------------
+label="bufr_encode_flight_p"
+
+bufr_in=${data_dir}"/bufr/syno_1.bufr"
+csv_in="flight_data.csv"
+
+fBufrTmp=${label}.tmp.bufr
+
+REDIRECT=/dev/null
+
+$PYTHON $examples_src/bufr_encode_flight.py $csv_in $bufr_in $fBufrTmp
+
+# Make sure output is OK
+${tools_dir}bufr_dump $fBufrTmp > $REDIRECT
+
+numSubsets=`${tools_dir}bufr_get -p numberOfSubsets $fBufrTmp`
+[ "$numSubsets" = "185" ]
+
+rm -f $fBufrTmp
diff --git a/examples/python/bufr_expanded.py b/examples/python/bufr_expanded.py
index 5857ef4..97303c3 100644
--- a/examples/python/bufr_expanded.py
+++ b/examples/python/bufr_expanded.py
@@ -1,10 +1,11 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 
 #
 # Python implementation: bufr_get_keys
@@ -18,43 +19,45 @@ import sys
 
 from eccodes import *
 
-INPUT='../../data/bufr/syno_1.bufr'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/bufr/syno_1.bufr'
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
 
     # open bufr file
     f = open(INPUT)
 
-    cnt=0
+    cnt = 0
 
     # loop for the messages in the file
     while 1:
         # get handle for message
         gid = codes_bufr_new_from_file(f)
-        if gid is None: break
+        if gid is None:
+            break
 
         print "message: %s" % cnt
 
         # we need to instruct ecCodes to expand all the descriptors
         # i.e. unpack the data values
-        codes_set(gid,'unpack',1)
+        codes_set(gid, 'unpack', 1)
 
-        #-----------------------------------
+        # ----------------------------------
         # get all the expanded data values
-        #-----------------------------------
-        key='numericValues'
+        # ----------------------------------
+        key = 'numericValues'
 
         # get size
-        num=codes_get_size(gid,key)
-        print  '  size of %s is: %s' % (key,num)
+        num = codes_get_size(gid, key)
+        print '  size of %s is: %s' % (key, num)
 
         # get values
-        values=codes_get_array(gid,key)
+        values = codes_get_array(gid, key)
         for i in xrange(len(values)):
-            print "   %d %.10e" % (i+1,values[i])
+            print "   %d %.10e" % (i + 1, values[i])
 
-        cnt+=1
+        cnt += 1
 
         # delete handle
         codes_release(gid)
@@ -62,14 +65,15 @@ def example():
     # close the file
     f.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/bufr_expanded.sh b/examples/python/bufr_expanded.sh
index 60144e5..9d830d9 100755
--- a/examples/python/bufr_expanded.sh
+++ b/examples/python/bufr_expanded.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -27,7 +27,7 @@ REDIRECT=/dev/null
 #hardcoded in the example
 
 #Write the values into a file
-$PYTHON bufr_expanded.py  >$fTmp 2> $REDIRECT 
+$PYTHON $examples_src/bufr_expanded.py  >$fTmp 2> $REDIRECT 
 
 #TODO: add a better check. It could be compared against the bufrdc
 # references.
@@ -39,3 +39,4 @@ $PYTHON bufr_expanded.py  >$fTmp 2> $REDIRECT
 
 #Clean up
 rm -f ${fTmp}
+
diff --git a/examples/python/bufr_get_keys.py b/examples/python/bufr_get_keys.py
index 78e486d..5ed026a 100644
--- a/examples/python/bufr_get_keys.py
+++ b/examples/python/bufr_get_keys.py
@@ -1,10 +1,11 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 
 #
 # Python implementation: bufr_get_keys
@@ -18,88 +19,90 @@ import sys
 
 from eccodes import *
 
-INPUT='../../data/bufr/syno_multi.bufr'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/bufr/syno_multi.bufr'
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
 
     # open bufr file
     f = open(INPUT)
 
-    cnt=0
+    cnt = 0
 
     # loop for the messages in the file
     while 1:
         # get handle for message
         gid = codes_bufr_new_from_file(f)
-        if gid is None: break
+        if gid is None:
+            break
 
         print "message: %s" % cnt
 
         # we need to instruct ecCodes to expand all the descriptors
         # i.e. unpack the data values
-        codes_set(gid,'unpack',1)
+        codes_set(gid, 'unpack', 1)
 
-        #----------------------------------------------
+        # ---------------------------------------------
         # get values for keys holding a single value
-        #----------------------------------------------
-        #Native type integer
-        key='blockNumber'
-        
+        # ---------------------------------------------
+        # Native type integer
+        key = 'blockNumber'
+
         try:
-            print '  %s: %s' % (key,codes_get(gid,key))
-        except CodesInternalError,err:
-            print 'Error with key="%s" : %s' % (key,err.msg)       
+            print '  %s: %s' % (key, codes_get(gid, key))
+        except CodesInternalError, err:
+            print 'Error with key="%s" : %s' % (key, err.msg)
 
-        #Native type integer
-        key='stationNumber'
+        # Native type integer
+        key = 'stationNumber'
         try:
-            print '  %s: %s' % (key,codes_get(gid,key))
-        except CodesInternalError,err:
-            print 'Error with key="%s" : %s' % (key,err.msg) 
+            print '  %s: %s' % (key, codes_get(gid, key))
+        except CodesInternalError, err:
+            print 'Error with key="%s" : %s' % (key, err.msg)
 
-        #Native type float
-        key='airTemperatureAt2M'
+        # Native type float
+        key = 'airTemperatureAt2M'
         try:
-            print '  %s: %s' % (key,codes_get(gid,key))
-        except CodesInternalError,err:
-            print 'Error with key="%s" : %s' % (key,err.msg) 
+            print '  %s: %s' % (key, codes_get(gid, key))
+        except CodesInternalError, err:
+            print 'Error with key="%s" : %s' % (key, err.msg)
 
-        #Native type string
-        key='typicalDate'
+        # Native type string
+        key = 'typicalDate'
         try:
-            print '  %s: %s' % (key,codes_get(gid,key))
-        except CodesInternalError,err:
-            print 'Error with key="%s" : %s' % (key,err.msg) 
+            print '  %s: %s' % (key, codes_get(gid, key))
+        except CodesInternalError, err:
+            print 'Error with key="%s" : %s' % (key, err.msg)
 
-        #---------------------------------
+        # --------------------------------
         # get values for an array
-        #---------------------------------
+        # --------------------------------
         # Native type integer
-        key='bufrdcExpandedDescriptors'
+        key = 'bufrdcExpandedDescriptors'
 
         # get size
-        num=codes_get_size(gid,key)
-        print  '  size of %s is: %s' % (key,num)
+        num = codes_get_size(gid, key)
+        print '  size of %s is: %s' % (key, num)
 
         # get values
-        values=codes_get_array(gid,key)
+        values = codes_get_array(gid, key)
         for i in xrange(len(values)):
-            print "   %d %06d" % (i+1,values[i])
+            print "   %d %06d" % (i + 1, values[i])
 
         # Native type float
-        key='numericValues'
+        key = 'numericValues'
 
         # get size
-        num=codes_get_size(gid,key)
-        print  '  size of %s is: %s' % (key,num)
+        num = codes_get_size(gid, key)
+        print '  size of %s is: %s' % (key, num)
 
         # get values
-        values=codes_get_array(gid,key)
+        values = codes_get_array(gid, key)
         for i in xrange(len(values)):
-            print "   %d %.10e" % (i+1,values[i])
+            print "   %d %.10e" % (i + 1, values[i])
 
-        cnt+=1
+        cnt += 1
 
         # delete handle
         codes_release(gid)
@@ -107,14 +110,15 @@ def example():
     # close the file
     f.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/bufr_get_keys.sh b/examples/python/bufr_get_keys.sh
index f5bfa68..75f5ade 100755
--- a/examples/python/bufr_get_keys.sh
+++ b/examples/python/bufr_get_keys.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -24,11 +24,12 @@ rm -f $fTmp | true
 REDIRECT=/dev/null
 
 #Write the key values into a file
-$PYTHON bufr_get_keys.py  2> $REDIRECT > $fTmp
+$PYTHON $examples_src/bufr_get_keys.py  2> $REDIRECT > $fTmp
 
 #TODO: check the results
 
 #cat  $fTmp
 
 #Clean up
-rm -f $fTmp | true
+rm -f $fTmp
+
diff --git a/examples/python/bufr_keys_iterator.py b/examples/python/bufr_keys_iterator.py
index c1af909..12b8ab8 100644
--- a/examples/python/bufr_keys_iterator.py
+++ b/examples/python/bufr_keys_iterator.py
@@ -1,10 +1,11 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 
 #
 # Python implementation: bufr_keys_iterator
@@ -19,30 +20,32 @@ import sys
 
 from eccodes import *
 
-INPUT='../../data/bufr/syno_1.bufr'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/bufr/syno_1.bufr'
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
 
     # open bufr file
     f = open(INPUT)
 
-    cnt=0
+    cnt = 0
 
     # loop for the messages in the file
     while 1:
         # get handle for message
         gid = codes_bufr_new_from_file(f)
-        if gid is None: break
+        if gid is None:
+            break
 
         print "message: %s" % cnt
 
         # we need to instruct ecCodes to expand all the descriptors
         # i.e. unpack the data values
-        #codes_set(gid,'unpack',1)
+        # codes_set(gid,'unpack',1)
 
         # get key iterator for a given namespace
-        iterid = codes_keys_iterator_new(gid,'ls')
+        iterid = codes_keys_iterator_new(gid, 'ls')
 
         # Different types of keys can be skipped
         # codes_skip_computed(iterid)
@@ -52,19 +55,17 @@ def example():
         # codes_skip_read_only(iterid)
         # codes_skip_function(iterid)
 
-        #loop over the keys
+        # loop over the keys
         while codes_keys_iterator_next(iterid):
 
             # print key name
             keyname = codes_keys_iterator_get_name(iterid)
-            #keyval = codes_get_string(iterid,keyname)
-            #print "%s = %s" % (keyname,keyval)
             print "  %s" % keyname
 
         # delete the key iterator
         codes_keys_iterator_delete(iterid)
 
-        cnt+=1
+        cnt += 1
 
         # delete handle
         codes_release(gid)
@@ -72,14 +73,15 @@ def example():
     # close the file
     f.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/bufr_keys_iterator.sh b/examples/python/bufr_keys_iterator.sh
index 70dff71..cd64f39 100755
--- a/examples/python/bufr_keys_iterator.sh
+++ b/examples/python/bufr_keys_iterator.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -23,11 +23,12 @@ REDIRECT=/dev/null
 f=${data_dir}/bufr/syno_1.bufr
 
 #The input ($f) is hardcoded in the example!!!
-$PYTHON bufr_keys_iterator.py 2> $REDIRECT > $fTmp
+$PYTHON $examples_src/bufr_keys_iterator.py 2> $REDIRECT > $fTmp
 
 #TODO: check the output
 
 #cat  $fTmp
 
 #Clean up
-rm -f $fTmp | true
+rm -f $fTmp
+
diff --git a/examples/python/bufr_read_header.py b/examples/python/bufr_read_header.py
index 2ff53cf..46af8b8 100644
--- a/examples/python/bufr_read_header.py
+++ b/examples/python/bufr_read_header.py
@@ -1,10 +1,11 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 
 
 #
@@ -19,8 +20,9 @@ import sys
 
 from eccodes import *
 
-INPUT='../../data/bufr/syno_multi.bufr'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/bufr/syno_multi.bufr'
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
 
@@ -37,26 +39,27 @@ def example():
         'masterTablesVersionNumber',
         'localTablesVersionNumber',
         'numberOfSubsets',
-        ]
+    ]
 
-    cnt=0
+    cnt = 0
 
     # loop for the messages in the file
     while 1:
         # get handle for message
         gid = codes_bufr_new_from_file(f)
-        if gid is None: break
+        if gid is None:
+            break
 
         print "message: %s" % cnt
 
         # print the values for the selected keys from the message
         for key in keys:
             try:
-                print '  %s: %s' % (key,codes_get(gid,key))
-            except CodesInternalError,err:
-                print 'Error with key="%s" : %s' % (key,err.msg)       
-            
-        cnt+=1
+                print '  %s: %s' % (key, codes_get(gid, key))
+            except CodesInternalError, err:
+                print 'Error with key="%s" : %s' % (key, err.msg)
+
+        cnt += 1
 
         # delete handle
         codes_release(gid)
@@ -64,14 +67,15 @@ def example():
     # close the file
     f.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/bufr_read_header.sh b/examples/python/bufr_read_header.sh
index 9f0a92e..822138f 100755
--- a/examples/python/bufr_read_header.sh
+++ b/examples/python/bufr_read_header.sh
@@ -14,10 +14,10 @@ fRes=$f".header.test.p"
 REDIRECT=/dev/null
 
 #Write the values into a file and compare with reference
-$PYTHON bufr_read_header.py 2> $REDIRECT > $fRes
+$PYTHON $examples_src/bufr_read_header.py 2> $REDIRECT > $fRes
 
 #We compare output to the reference by ignoring the whitespaces
-diff -w $fRef $fRes >$REDIRECT 2> $REDIRECT
+diff -w $fRef $fRes
 
 #cat $fRes
 
diff --git a/examples/python/bufr_read_scatterometer.py b/examples/python/bufr_read_scatterometer.py
index afadb14..f4c1e2f 100644
--- a/examples/python/bufr_read_scatterometer.py
+++ b/examples/python/bufr_read_scatterometer.py
@@ -1,19 +1,22 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 
 #
-# Python implementation:  bufr_read_scatterometer 
+# Python implementation:  bufr_read_scatterometer
 #
-# Description: how to read data for a given beam from scatterometer BUFR messages.
+# Description: how to read data for a given beam from scatterometer BUFR
+# messages.
 #
-# Please note that scatterometer data can be encoded in various ways in BUFR. Therefore the code
-# below might not work directly for other types of messages than the one used in the
-# example. It is advised to use bufr_dump first to understand the structure of these messages.
+# Please note that scatterometer data can be encoded in various ways in BUFR.
+# Therefore the code below might not work directly for other types of messages
+# than the one used in the example. It is advised to use bufr_dump first to
+# understand the structure of these messages.
 #
 
 
@@ -22,53 +25,56 @@ import sys
 
 from eccodes import *
 
-INPUT='../../data/bufr/asca_139.bufr'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/bufr/asca_139.bufr'
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
 
     # open bufr file
     f = open(INPUT)
 
-    cnt=0
+    cnt = 0
 
     # loop for the messages in the file
     while 1:
         # get handle for message
         gid = codes_bufr_new_from_file(f)
-        if gid is None: break
+        if gid is None:
+            break
 
         print "message: %s" % cnt
 
         # we need to instruct ecCodes to expand all the descriptors
         # i.e. unpack the data values
-        codes_set(gid,'unpack',1)
+        codes_set(gid, 'unpack', 1)
 
-        # The BUFR file contains a single message with 2016 subsets in a compressed form.
-        # It means each subset has exactly the same structure: they store one location with
-        # several beams and one backscatter value in each beam. 
+        # The BUFR file contains a single message with 2016 subsets in a
+        # compressed form. It means each subset has exactly the same structure:
+        # they store one location with several beams and one backscatter value
+        # in each beam.
         #
-        # To print the backScatter values for beamIdentifier=2 from all the subsets 
-        # we will simply access the key by condition (see below)
-        
+        # To print the backScatter values for beamIdentifier=2 from all the
+        # subsets we will simply access the key by condition (see below)
+
         # Get the total number of subsets.
-        numObs=codes_get(gid,"numberOfSubsets")
-        
-        print '  Number of values: %ld'  % (numObs)
-        
-        #Get latitude (for all the subsets)
-        lat=codes_get_double_array(gid,"latitude")
-        
-        #Get longitude (for all the subsets)
-        lon=codes_get_double_array(gid,"longitude")
-        
-        #Get backScatter for beam two. We use an access by condition for this key. 
-        #(for all the subsets)
-        bscat=codes_get_double_array(gid,"/beamIdentifier=2/backscatter")
+        numObs = codes_get(gid, "numberOfSubsets")
+
+        print '  Number of values: %ld' % (numObs)
+
+        # Get latitude (for all the subsets)
+        lat = codes_get_array(gid, "latitude")
+
+        # Get longitude (for all the subsets)
+        lon = codes_get_array(gid, "longitude")
+
+        # Get backScatter for beam two. We use an access by condition for this
+        # key (for all the subsets).
+        bscat = codes_get_array(gid, "/beamIdentifier=2/backscatter")
 
         # Check that all arrays are same size
-        if len(lat) != numObs or len(lon) != numObs or len(bscat) != numObs :
-            print 'inconsistent array dimension'       
+        if len(lat) != numObs or len(lon) != numObs or len(bscat) != numObs:
+            print 'inconsistent array dimension'
             return 1
 
         # Print the values
@@ -76,9 +82,9 @@ def example():
         print "-------------------------------"
 
         for i in xrange(numObs):
-            print "%3d %.2f %.2f %.2f" % (i+1,lat[i],lon[i],bscat[i])
+            print "%3d %.2f %.2f %.2f" % (i + 1, lat[i], lon[i], bscat[i])
 
-        cnt+=1
+        cnt += 1
 
         # delete handle
         codes_release(gid)
@@ -86,14 +92,15 @@ def example():
     # close the file
     f.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/bufr_read_scatterometer.sh b/examples/python/bufr_read_scatterometer.sh
index cc0d222..a0a3605 100755
--- a/examples/python/bufr_read_scatterometer.sh
+++ b/examples/python/bufr_read_scatterometer.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -24,11 +24,12 @@ rm -f $fTmp | true
 REDIRECT=/dev/null
 
 #Write the key values into a file
-$PYTHON bufr_read_scatterometer.py 2> $REDIRECT > $fTmp
+$PYTHON $examples_src/bufr_read_scatterometer.py 2> $REDIRECT > $fTmp
 
 #TODO: check the results
 
 #cat  $fTmp
 
 #Clean up
-rm -f $fTmp | true
+rm -f $fTmp
+
diff --git a/examples/python/bufr_read_synop.py b/examples/python/bufr_read_synop.py
index 0231876..4be3975 100644
--- a/examples/python/bufr_read_synop.py
+++ b/examples/python/bufr_read_synop.py
@@ -1,10 +1,11 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 
 #
 # Python implementation: bufr_read_synop
@@ -12,19 +13,19 @@
 # Description: how to read data values from BUFR messages.
 #
 
-#
-# Please note that SYNOP reports can be encoded in various ways in BUFR. Therefore the code
-# below might not work directly for other types of SYNOP messages than the one used in the
-# example. It is advised to use bufr_dump to understand the structure of the messages.
-#
+# Please note that SYNOP reports can be encoded in various ways in BUFR.
+# Therefore the code below might not work directly for other types of SYNOP
+# messages than the one used in the example. It is advised to use bufr_dump to
+# understand the structure of the messages.
 
 import traceback
 import sys
 
 from eccodes import *
 
-INPUT='../../data/bufr/syno_multi.bufr'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/bufr/syno_multi.bufr'
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
 
@@ -41,43 +42,45 @@ def example():
         'dewpointTemperatureAt2M',
         'windSpeedAt10M',
         'windDirectionAt10M',
-        'cloudAmount#1',  #cloud amount (low and mid level)
-        'heightOfBaseOfCloud#1', 
-        'cloudType#1',   #cloud type (low clouds)
-        'cloudType#2',   #cloud type (middle clouds)
-        'cloudType#3'    #cloud type (highclouds)
-        ]
+        '#1#cloudAmount',  # cloud amount (low and mid level)
+        '#1#heightOfBaseOfCloud',
+        '#1#cloudType',  # cloud type (low clouds)
+        '#2#cloudType',  # cloud type (middle clouds)
+        '#3#cloudType'  # cloud type (highclouds)
+    ]
 
     # The cloud information is stored in several blocks in the
     # SYNOP message and the same key means a different thing in different
     # parts of the message. In this example we will read the first
     # cloud block introduced by the key
-    # verticalSignificanceSurfaceObservations=1. 
+    # verticalSignificanceSurfaceObservations=1.
     # We know that this is the first occurrence of the keys we want to
-    # read so in the list above we used the # (occurrence) operator accordingly. 
-        
-    cnt=0
+    # read so in the list above we used the # (occurrence) operator
+    # accordingly.
+
+    cnt = 0
 
     # loop for the messages in the file
     while 1:
         # get handle for message
         gid = codes_bufr_new_from_file(f)
-        if gid is None: break
+        if gid is None:
+            break
 
         print "message: %s" % cnt
 
         # we need to instruct ecCodes to expand all the descriptors
         # i.e. unpack the data values
-        codes_set(gid,'unpack',1)
+        codes_set(gid, 'unpack', 1)
 
         # print the values for the selected keys from the message
         for key in keys:
             try:
-                print '  %s: %s' % (key,codes_get(gid,key))
-            except CodesInternalError,err:
-                print 'Error with key="%s" : %s' % (key,err.msg) 
+                print '  %s: %s' % (key, codes_get(gid, key))
+            except CodesInternalError, err:
+                print 'Error with key="%s" : %s' % (key, err.msg)
 
-        cnt+=1
+        cnt += 1
 
         # delete handle
         codes_release(gid)
@@ -85,14 +88,15 @@ def example():
     # close the file
     f.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/bufr_read_synop.sh b/examples/python/bufr_read_synop.sh
index 8190f6e..b7208d9 100755
--- a/examples/python/bufr_read_synop.sh
+++ b/examples/python/bufr_read_synop.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -24,11 +24,12 @@ rm -f $fTmp | true
 REDIRECT=/dev/null
 
 #Write the values into a file and compare with reference
-$PYTHON bufr_read_synop.py 2> $REDIRECT > $fTmp
+$PYTHON $examples_src/bufr_read_synop.py 2> $REDIRECT > $fTmp
 
 #TODO: check the output
 
 #cat  $fTmp
 
 #Clean up
-rm -f $fTmp | true
+rm -f $fTmp
+
diff --git a/examples/python/bufr_read_temp.py b/examples/python/bufr_read_temp.py
index f52322a..2923686 100644
--- a/examples/python/bufr_read_temp.py
+++ b/examples/python/bufr_read_temp.py
@@ -1,108 +1,77 @@
-# Copyright 2005-2015 ECMWF.
+#
+# Copyright 2005-2016 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.
-
+# 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.
 #
 # Python implementation: bufr_read_temp
 #
-# Description: how to read temperature  significant levels from TEMP BUFR messages.
+# Description: how to read levels from TEMP BUFR messages.
 #
 #
-# Please note that TEMP reports can be encoded in various ways in BUFR. Therefore the code
-# below might not work directly for other types of TEMP messages than the one used in the
-# example. It is advised to use bufr_dump to understand the structure of the messages.
 #
-
+# Please note that TEMP reports can be encoded in various ways in BUFR.
+# Therefore the code below might not work directly for other types of TEMP
+# messages than the one used in the example. It is advised to use bufr_dump to
+# understand the structure of the messages.
+#
 import traceback
 import sys
-
 from eccodes import *
 
-INPUT='../../data/bufr/temp_101.bufr'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/bufr/PraticaTemp.bufr'
+VERBOSE = 1  # verbose error reporting
 
 def example():
-
     # open bufr file
     f = open(INPUT)
-
-    cnt=0
-
-    # loop for the messages in the file
+    cnt = 0
+    # loop over the messages in the file
     while 1:
         # get handle for message
-        gid = codes_bufr_new_from_file(f)
-        if gid is None: break
-
+        bufr = codes_bufr_new_from_file(f)
+        if bufr is None:
+            break
         print "message: %s" % cnt
-
         # we need to instruct ecCodes to expand all the descriptors
-        # i.e. unpack the data values
-        codes_set(gid,'unpack',1)
-
-        # In what follows we rely on the fact that for
-        # temperature  significant levels the value of key
-        # verticalSoundingSignificance is 4 (see flag table 8001 for details).
-
-        # We also make use of the fact that in our BUFR message
-        # verticalSoundingSignificance is always followed by geopotential,
-        # airTemperature, dewpointTemperature,
-        # windDirection, windSpeed and pressure.
-
-        # Get the number of the temperature significant levels.
-
-        # We find out the number of temperature significant levels by
-        # counting how many pressure values we have on these levels.
-
-        numSigT=codes_get_size(gid,"/verticalSoundingSignificance=4/pressure")
-        print  '  Number of temperature significant levels %ld' % (numSigT)
-
-        # Get pressure
-        sigt_pres=codes_get_double_array(gid,"/verticalSoundingSignificance=4/pressure")
-
-        # Get gepotential
-        sigt_geo=codes_get_double_array(gid,"/verticalSoundingSignificance=4/geopotential")
-
-        # Get temperature
-        sigt_t=codes_get_double_array(gid,"/verticalSoundingSignificance=4/airTemperature")
-        
-        # Get dew point
-        sigt_td=codes_get_double_array(gid,"/verticalSoundingSignificance=4/dewpointTemperature")
-
-        # Check that all arrays are same size
-        if len(sigt_pres) != numSigT or len(sigt_geo) != numSigT or len(sigt_t) != numSigT or len(sigt_td) != numSigT :
-            print 'inconsistent array dimension'       
-            return 1
-
-        # Print the values
-        print "lev  pres    geo    t    td"
-        print "-------------------------------"
-
-        for i in xrange(numSigT):
-            print "%3d %6.0f %6.0f %.1f %.1f" % (i+1,sigt_pres[i],sigt_geo[i],sigt_t[i],sigt_td[i])
-
-        cnt+=1
-
+        # i.e. unpack the data section
+        codes_set(bufr, 'unpack', 1)
+        # get all the timePeriods
+        timePeriod = codes_get_array(bufr, "timePeriod")
+        pressure = codes_get_array(bufr, "pressure")
+        extendedVerticalSoundingSignificance = codes_get_array(bufr, "extendedVerticalSoundingSignificance")
+        geopotentialHeight = codes_get_array(bufr, "geopotentialHeight")
+        latitudeDisplacement = codes_get_array(bufr, "latitudeDisplacement")
+        longitudeDisplacement = codes_get_array(bufr, "longitudeDisplacement")
+        airTemperature = codes_get_array(bufr, "airTemperature")
+        dewpointTemperature = codes_get_array(bufr, "dewpointTemperature")
+        windDirection = codes_get_array(bufr, "windDirection")
+        windSpeed = codes_get_array(bufr, "windSpeed")
+        blockNumber = codes_get(bufr, "blockNumber")
+        stationNumber = codes_get(bufr, "stationNumber")
+        print 'station %d%d' % (blockNumber,stationNumber)
+        print 'timePeriod pressure geopotentialHeight latitudeDisplacement longitudeDisplacement airTemperature windDirection windSpeed significance'
+        for i in range(0,len(windSpeed)-1):
+            print timePeriod[i],pressure[i],geopotentialHeight[i],latitudeDisplacement[i],longitudeDisplacement[i],airTemperature[i],windDirection[i],windSpeed[i],extendedVerticalSoundingSignificance[i]
+        cnt += 1
         # delete handle
-        codes_release(gid)
-
+        codes_release(bufr)
     # close the file
     f.close()
 
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
-
+            print >>sys.stderr, err.msg
         return 1
-
 if __name__ == "__main__":
     sys.exit(main())
+
diff --git a/examples/python/bufr_read_temp.sh b/examples/python/bufr_read_temp.sh
index 6bb18aa..e6970bc 100755
--- a/examples/python/bufr_read_temp.sh
+++ b/examples/python/bufr_read_temp.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -16,19 +16,14 @@ label="bufr_read_temp_p"
 
 #Define tmp file
 fTmp=${label}.tmp.txt
-rm -f $fTmp | true
-
-#We check "temp_101.bufr". The path is
-#hardcoded in the example
+rm -f $fTmp
 
 REDIRECT=/dev/null
 
-#Write the key values into a file
-$PYTHON bufr_read_temp.py 2> $REDIRECT > $fTmp
+# Run it. The path to the BUFR file is hardcoded in the example
+$PYTHON $examples_src/bufr_read_temp.py 2> $REDIRECT > $fTmp
 
 #TODO: check the results
 
-#cat  $fTmp
-
 #Clean up
-rm -f $fTmp | true
+rm -f $fTmp
diff --git a/examples/python/bufr_read_tropical_cyclone.py b/examples/python/bufr_read_tropical_cyclone.py
new file mode 100644
index 0000000..fe3fbf8
--- /dev/null
+++ b/examples/python/bufr_read_tropical_cyclone.py
@@ -0,0 +1,204 @@
+# Copyright 2005-2016 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.
+#
+# Python implementation:  bufr_read_tropical_cyclone
+#
+# Description: how to read data of the ECMWF EPS tropical cyclone tracks encoded in BUFR format.
+#
+
+import traceback
+import sys
+import collections
+
+from eccodes import *
+
+INPUT = '../../data/bufr/tropical_cyclone.bufr'
+VERBOSE = 1  # verbose error reporting
+
+
+data=collections.defaultdict(dict)
+
+
+def example():
+
+    # open bufr file
+    f = open(INPUT)
+
+    cnt = 0
+
+    # loop for the messages in the file
+    while 1:
+        # get handle for message
+        gid = codes_bufr_new_from_file(f)
+        if gid is None:
+            break
+
+        print '**************** MESSAGE: ',cnt+1,'  *****************'
+
+        # we need to instruct ecCodes to expand all the descriptors
+        # i.e. unpack the data values
+        codes_set(gid, 'unpack', 1)
+
+        numObs= codes_get(gid,"numberOfSubsets")
+        year  = codes_get(gid, "year")
+        month = codes_get(gid, "month")
+        day   = codes_get(gid, "day")
+        hour  = codes_get(gid, "hour")
+        minute= codes_get(gid, "minute")
+
+        print 'Date and time: ',  day,'.',month,'.',year,'  ',hour,':',minute
+
+        stormIdentifier =  codes_get(gid,"stormIdentifier")
+        print  'Storm identifier: ', stormIdentifier
+
+        #How many different timePeriod in the data structure?
+        numberOfPeriods=0
+        while True:
+            numberOfPeriods=numberOfPeriods+1
+            try:
+                codes_get_array(gid,"#%d#timePeriod" %numberOfPeriods)
+            except CodesInternalError, err:
+                break
+            #the numberOfPeriods includes the analysis (period=0)
+
+        # Get ensembleMemberNumber
+        memberNumber = codes_get_array(gid, "ensembleMemberNumber")
+        memberNumberLen=len(memberNumber)
+
+        # Observed Storm Centre
+        significance    = codes_get(gid,'#1#meteorologicalAttributeSignificance')
+        latitudeCentre  = codes_get(gid,'#1#latitude')
+        longitudeCentre = codes_get(gid,'#1#longitude')
+
+        if significance!=1:
+            print 'ERROR: unexpected #1#meteorologicalAttributeSignificance'
+            return 1
+
+        if (latitudeCentre==CODES_MISSING_DOUBLE) and (longitudeCentre==CODES_MISSING_DOUBLE):
+            print 'Observed storm centre position missing'
+        else:
+            print 'Observed storm centre: latitude=',latitudeCentre,' longitude=',longitudeCentre
+
+        # Location of storm in perturbed analysis
+        significance = codes_get(gid,'#2#meteorologicalAttributeSignificance')
+
+        if significance!=4:
+            print 'ERROR: unexpected #2#meteorologicalAttributeSignificance'
+            return 1
+
+        latitudeAnalysis = codes_get_array(gid,'#2#latitude')
+        longitudeAnalysis = codes_get_array(gid,'#2#longitude')
+        pressureAnalysis = codes_get_array(gid,'#1#pressureReducedToMeanSeaLevel')
+
+        # Location of Maximum Wind
+        significance=codes_get(gid,'#3#meteorologicalAttributeSignificance')
+
+        if significance!=3:
+            print 'ERROR: unexpected #3#meteorologicalAttributeSignificance=', significance
+            return 1
+
+        latitudeMaxWind0=codes_get_array(gid,'#3#latitude')
+        longitudeMaxWind0= codes_get_array(gid,'#3#longitude')
+        windMaxWind0= codes_get_array(gid,'#1#windSpeedAt10M')
+
+        if len(latitudeAnalysis)==len(memberNumber) and len(latitudeMaxWind0)==len(memberNumber):
+            for k in range(len(memberNumber)):
+                data[k][0]=[latitudeAnalysis[k],longitudeAnalysis[k],pressureAnalysis[k],latitudeMaxWind0[k],longitudeMaxWind0[k],windMaxWind0[k]]
+
+        else:
+            for k in range(len(memberNumber)):
+                data[k][0]=[latitudeAnalysis[0],longitudeAnalysis[0],pressureAnalysis[k],latitudeMaxWind0[0],longitudeMaxWind0[0],windMaxWind0[k]]
+
+
+        timePeriod=[0 for x in range(numberOfPeriods)]
+        for i in range(1,numberOfPeriods):
+            rank1 = i * 2 + 2
+            rank3 = i * 2 + 3
+
+            ivalues= codes_get_array(gid,"#%d#timePeriod" %(i))
+
+            if len(ivalues)==1:
+                timePeriod[i]=ivalues[0]
+            else:
+                for j in range(len (ivalues)):
+                    if ivalues[j]!=CODES_MISSING_LONG:
+                        timePeriod[i]=ivalues[j]
+                        break
+
+            #Location of the storm
+            values = codes_get_array(gid, "#%d#meteorologicalAttributeSignificance" % rank1)
+            if len(values)==1:
+                significance=values[0]
+            else:
+                for j in range(len (values)):
+                    if values[j]!=CODES_MISSING_LONG:
+                        significance=values[j]
+                        break
+
+            if significance==1:
+                lat = codes_get_array(gid, "#%d#latitude" % rank1)
+                lon = codes_get_array(gid, "#%d#longitude" % rank1)
+                press = codes_get_array(gid, "#%d#pressureReducedToMeanSeaLevel" % (i + 1))
+            else:
+                print 'ERROR: unexpected meteorologicalAttributeSignificance=',significance
+
+            #Location of maximum wind
+            values = codes_get_array(gid, "#%d#meteorologicalAttributeSignificance" % rank3)
+            if len(values)==1:
+                significanceWind=values[0]
+            else:
+                for j in range(len (values)):
+                    if values[j]!=CODES_MISSING_LONG:
+                        significanceWind=values[j]
+                        break
+
+            if significanceWind==3:
+                latWind = codes_get_array(gid, "#%d#latitude" % rank3)
+                lonWind = codes_get_array(gid, "#%d#longitude" % rank3)
+                wind10m = codes_get_array(gid, "#%d#windSpeedAt10M" % (i + 1))
+            else:
+                print 'ERROR: unexpected meteorologicalAttributeSignificance=',significanceWind
+
+            for k in range(len(memberNumber)):
+                data[k][i]=[lat[k],lon[k],press[k],latWind[k],lonWind[k],wind10m[k]]
+
+
+# ---------------------------------------- Print the values -------------
+
+        for m in range(len(memberNumber)):
+            print "== Member  %d" %memberNumber[m]
+            print "step  latitude  longitude   pressure  latitude   longitude    wind"
+            for s in range(len(timePeriod)):
+                if data[m][s][0]!=CODES_MISSING_DOUBLE and data[m][s][1]!=CODES_MISSING_DOUBLE:
+                    print " {:>3d}{}{:>6.1f}{}{:>6.1f}{}{:>8.1f}{}{:>6.1f}{}{:>6.1f}{}{:>6.1f}".format(\
+                          timePeriod[s],'  ',data[m][s][0],'     ',data[m][s][1],'     ',data[m][s][2],'  ',
+                          data[m][s][3],'     ',data[m][s][4],'     ',data[m][s][5])
+
+# -----------------------------------------------------------------------
+        cnt += 1
+
+        # release the BUFR message
+        codes_release(gid)
+
+    # close the file
+    f.close()
+
+
+def main():
+    try:
+        example()
+    except CodesInternalError, err:
+        if VERBOSE:
+            traceback.print_exc(file=sys.stderr)
+        else:
+            print >>sys.stderr, err.msg
+
+        return 1
+
+if __name__ == "__main__":
+    sys.exit(main())
diff --git a/examples/python/bufr_read_tropical_cyclone.sh b/examples/python/bufr_read_tropical_cyclone.sh
new file mode 100755
index 0000000..e8e38a1
--- /dev/null
+++ b/examples/python/bufr_read_tropical_cyclone.sh
@@ -0,0 +1,39 @@
+#!/bin/sh
+# Copyright 2005-2016 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.sh
+
+
+#Define a common label for all the tmp files
+label="bufr_read_tropical_cyclone_p"
+
+#Define tmp file
+#fTmp=${label}.tmp.txt
+#ref=${label}.tmp.ref
+#rm -f $fTmp | true
+
+#We check "asca_1391.bufr". The path is
+#hardcoded in the example
+
+REDIRECT=/dev/null
+
+echo $PYTHON $examples_src
+#Write the key values into a file
+#$PYTHON $examples_src/bufr_read_tropical_cyclone.py >$fTmp
+$PYTHON $examples_src/bufr_read_tropical_cyclone.py
+
+#TODO: check the results
+
+#cat > $ref <<EOF
+#EOF
+# 
+#diff -w $ref $fTmp
+#Clean up
+#rm -f $ref $fTmp | true
diff --git a/examples/python/bufr_set_keys.py b/examples/python/bufr_set_keys.py
index 58ebe60..2aae846 100644
--- a/examples/python/bufr_set_keys.py
+++ b/examples/python/bufr_set_keys.py
@@ -1,10 +1,11 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 
 #
 # Python implementation: bufr_set_keys
@@ -18,9 +19,10 @@ import sys
 
 from eccodes import *
 
-INPUT='../../data/bufr/syno_multi.bufr'
-OUTPUT='bufr_set_keys_test_p.tmp.bufr'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/bufr/syno_multi.bufr'
+OUTPUT = 'bufr_set_keys_test_p.tmp.bufr'
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
 
@@ -28,43 +30,44 @@ def example():
     fin = open(INPUT)
 
     # open otput bufr file
-    fout = open(OUTPUT,'w')
+    fout = open(OUTPUT, 'w')
 
-    cnt=0
+    cnt = 0
 
     # loop for the messages in the file
     while 1:
 
         # get handle for message
         gid = codes_bufr_new_from_file(fin)
-        if gid is None: break
+        if gid is None:
+            break
 
         print "message: %s" % cnt
 
         # we need to instruct ecCodes to expand all the descriptors
         # i.e. unpack the data values
-        #codes_set(gid,'unpack',1)
+        # codes_set(gid,'unpack',1)
 
         # This is the place where you may wish to modify the message
         # E.g. we change the centre
 
         # set centre
-        val=222
+        val = 222
         print '  set bufrHeaderCentre to: %d' % val
 
-        key='bufrHeaderCentre'
+        key = 'bufrHeaderCentre'
         try:
-            print '  %s: %s' % (key,codes_set(gid,key,val))
-        except CodesInternalError,err:
-            print 'Error with key="%s" : %s' % (key,err.msg) 
-        
-        #check bufrHeaderCentre's value
-        print '  %s''s new value is: %d' % (key,codes_get(gid,key))
+            print '  %s: %s' % (key, codes_set(gid, key, val))
+        except CodesInternalError, err:
+            print 'Error with key="%s" : %s' % (key, err.msg)
+
+        # check bufrHeaderCentre's value
+        print '  %s''s new value is: %d' % (key, codes_get(gid, key))
 
         # write modified message to output
-        codes_write(gid,fout)
+        codes_write(gid, fout)
 
-        cnt+=1
+        cnt += 1
 
         # delete handle
         codes_release(gid)
@@ -76,11 +79,11 @@ def example():
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/bufr_set_keys.sh b/examples/python/bufr_set_keys.sh
index 376aa77..c915b4d 100755
--- a/examples/python/bufr_set_keys.sh
+++ b/examples/python/bufr_set_keys.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -24,11 +24,11 @@ f=${data_dir}/bufr/syno_multi.bufr
 REDIRECT=/dev/null
 
 #The input ($f) and output ($fBufrTmp) are hardcoded in the f90 example!!! 
-$PYTHON bufr_set_keys.py 2> $REDIRECT > $REDIRECT
+$PYTHON $examples_src/bufr_set_keys.py 2> $REDIRECT > $REDIRECT
 
 #Compare modified to the original
 set +e
-${tools_dir}/bufr_compare $f $fBufrTmp >$REDIRECT 2> $REDIRECT 
+${tools_dir}/bufr_compare $f $fBufrTmp 1>$REDIRECT 2> $REDIRECT
 
 #Check if modified is different
 if [ $? -eq 0 ]; then
@@ -42,5 +42,5 @@ set -e
 [ `${tools_dir}bufr_count $f` -eq `${tools_dir}/bufr_count ${fBufrTmp}` ]
 
 #Clean up
-rm -f $fBufrTmp | true
+rm -f $fBufrTmp
 
diff --git a/examples/python/bufr_subset.py b/examples/python/bufr_subset.py
index 23a7c03..47601bb 100644
--- a/examples/python/bufr_subset.py
+++ b/examples/python/bufr_subset.py
@@ -1,10 +1,11 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 
 #
 # Python implementation: bufr_subset
@@ -18,54 +19,50 @@ import sys
 
 from eccodes import *
 
-INPUT='../../data/bufr/synop_multi_subset.bufr'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/bufr/synop_multi_subset.bufr'
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
 
     # open bufr file
     f = open(INPUT)
 
-    cnt=0
+    cnt = 0
 
     # loop for the messages in the file
     while 1:
         # get handle for message
         gid = codes_bufr_new_from_file(f)
-        if gid is None: break
+        if gid is None:
+            break
 
         print "message: %s" % cnt
 
         # we need to instruct ecCodes to expand all the descriptors
         # i.e. unpack the data values
-        codes_set(gid,'unpack',1)
+        codes_set(gid, 'unpack', 1)
 
         # find out the number of subsets
-        key='numberOfSubsets'
-        numberOfSubsets=codes_get(gid,'numberOfSubsets')
-        print ' %s: %d' % (key,numberOfSubsets)
+        key = 'numberOfSubsets'
+        numberOfSubsets = codes_get(gid, 'numberOfSubsets')
+        print ' %s: %d' % (key, numberOfSubsets)
 
         # loop over the subsets
-        for i in range(numberOfSubsets) :
-
-            #specify the subset number
-            codes_set(gid,'subsetNumber',0)
+        for i in range(1, numberOfSubsets + 1):
 
             # read and print some data values
 
-            key='blockNumber'
-            val=codes_get(gid,key)
-            print '  %s: %d' % (key,val)
+            key = '/subsetNumber=%d/blockNumber' % i
+            print key
+            val = codes_get_long(gid, key)
+            print '  %s= %d' % (key, val)
 
-            key='stationNumber'
-            val=codes_get(gid,key)
-            print '  %s: %d' % (key,val)
+            key = '/subsetNumber=%d/stationNumber' % i
+            val = codes_get_long(gid, key)
+            print '  %s: %d' % (key, val)
 
-            #key='airTemperatureAt2M'
-            #val=codes_get(gid,key)
-            #print '  %d: %d' % (key,val)
-
-        cnt+=1
+        cnt += 1
 
         # delete handle
         codes_release(gid)
@@ -73,14 +70,15 @@ def example():
     # close the file
     f.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/bufr_subset.sh b/examples/python/bufr_subset.sh
index e280004..5130b91 100755
--- a/examples/python/bufr_subset.sh
+++ b/examples/python/bufr_subset.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -17,18 +17,59 @@ label="bufr_subset_test_p"
 fTmp=${label}.tmp.txt
 rm -f $fTmp | true
 
+#Prepare ref file
+fRef=${label}.ref
+cat > $fRef<<EOF
+message: 0
+ numberOfSubsets: 12
+/subsetNumber=1/blockNumber
+  /subsetNumber=1/blockNumber= 1
+  /subsetNumber=1/stationNumber: 27
+/subsetNumber=2/blockNumber
+  /subsetNumber=2/blockNumber= 1
+  /subsetNumber=2/stationNumber: 84
+/subsetNumber=3/blockNumber
+  /subsetNumber=3/blockNumber= 1
+  /subsetNumber=3/stationNumber: 270
+/subsetNumber=4/blockNumber
+  /subsetNumber=4/blockNumber= 1
+  /subsetNumber=4/stationNumber: 272
+/subsetNumber=5/blockNumber
+  /subsetNumber=5/blockNumber= 1
+  /subsetNumber=5/stationNumber: 308
+/subsetNumber=6/blockNumber
+  /subsetNumber=6/blockNumber= 1
+  /subsetNumber=6/stationNumber: 371
+/subsetNumber=7/blockNumber
+  /subsetNumber=7/blockNumber= 1
+  /subsetNumber=7/stationNumber: 381
+/subsetNumber=8/blockNumber
+  /subsetNumber=8/blockNumber= 1
+  /subsetNumber=8/stationNumber: 382
+/subsetNumber=9/blockNumber
+  /subsetNumber=9/blockNumber= 1
+  /subsetNumber=9/stationNumber: 387
+/subsetNumber=10/blockNumber
+  /subsetNumber=10/blockNumber= 1
+  /subsetNumber=10/stationNumber: 413
+/subsetNumber=11/blockNumber
+  /subsetNumber=11/blockNumber= 1
+  /subsetNumber=11/stationNumber: 464
+/subsetNumber=12/blockNumber
+  /subsetNumber=12/blockNumber= 1
+  /subsetNumber=12/stationNumber: 485
+EOF
+
 #We check "synop_multi_subset.bufr". The path is
 #hardcoded in the example
 
-REDIRECT=/dev/null
+REDIRECT=/dev/stdout
 
 #
-$PYTHON bufr_subset.py 2> $REDIRECT > $fTmp
-
-#TODO: add a proper check when subsets are properly implemented
+$PYTHON $examples_src/bufr_subset.py 2> $REDIRECT > $fTmp
 
-#cat $fTmp
+diff $fTmp $fRef
 
 #Clean up
-rm -f $fTmp
+rm -f $fTmp $fRef
 
diff --git a/examples/python/count_messages.c b/examples/python/count_messages.c
index 783f841..27df352 100644
--- a/examples/python/count_messages.c
+++ b/examples/python/count_messages.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/python/count_messages.py b/examples/python/count_messages.py
index 6c5c746..0ae7257 100644
--- a/examples/python/count_messages.py
+++ b/examples/python/count_messages.py
@@ -1,11 +1,12 @@
 #
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 #
 
 import traceback
@@ -13,8 +14,9 @@ import sys
 
 from eccodes import *
 
-INPUT='../../data/tigge_pf_ecmwf.grib2'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/tigge_pf_ecmwf.grib2'
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
     f = open(INPUT)
@@ -33,24 +35,24 @@ def example():
         'longitudeOfLastGridPointInDegrees',
         'jDirectionIncrementInDegrees',
         'iDirectionIncrementInDegrees',
-        ]
+    ]
 
     for i in range(mcount):
         gid = gid_list[i]
 
-        print "processing message number",i+1
+        print "processing message number", i + 1
 
         for key in keys:
-            print '%s=%g' % (key,codes_get(gid,key))
+            print '%s=%g' % (key, codes_get(gid, key))
 
         print 'There are %d, average is %g, min is %g, max is %g' % (
-                  codes_get_size(gid,'values'),
-                  codes_get(gid,'average'),
-                  codes_get(gid,'min'),
-                  codes_get(gid,'max')
-               )
+            codes_get_size(gid, 'values'),
+            codes_get(gid, 'average'),
+            codes_get(gid, 'min'),
+            codes_get(gid, 'max')
+        )
 
-        print '-'*100
+        print '-' * 100
 
         codes_release(gid)
 
@@ -58,11 +60,11 @@ def example():
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/count_messages.sh b/examples/python/count_messages.sh
index c515645..28df868 100755
--- a/examples/python/count_messages.sh
+++ b/examples/python/count_messages.sh
@@ -5,7 +5,7 @@
 TEMP1=temp1.$$
 TEMP2=temp2.$$
 
-$PYTHON count_messages.py 2> $TEMP1 > $TEMP1
+$PYTHON $examples_src/count_messages.py 2> $TEMP1 > $TEMP1
 ./p_count_messages ../../data/tigge_pf_ecmwf.grib2 2> $TEMP2 > $TEMP2
 
 diff $TEMP1 $TEMP2
diff --git a/examples/python/flight_data.csv b/examples/python/flight_data.csv
new file mode 100644
index 0000000..0666c39
--- /dev/null
+++ b/examples/python/flight_data.csv
@@ -0,0 +1,186 @@
+ymd,time,latitude,longitude,altitude,pressure,windSpeed,windDirection,temperature
+20150101,05:30:00,51.75794 ,1.7008 ,2362.0,759.32 ,19.28 ,81.95 ,14.18 
+20150101,05:30:01,51.75738 ,1.7014 ,2369.0,758.64 ,19.71 ,81.24 ,14.17 
+20150101,05:30:02,51.75681 ,1.7020 ,2375.0,758.16 ,19.80 ,80.82 ,14.15 
+20150101,05:30:03,51.75624 ,1.7026 ,2382.0,757.66 ,19.84 ,80.84 ,14.13 
+20150101,05:30:04,51.75567 ,1.7031 ,2388.0,757.08 ,19.77 ,80.71 ,14.08 
+20150101,05:30:05,51.75511 ,1.7037 ,2395.0,756.60 ,19.79 ,80.55 ,14.08 
+20150101,05:30:06,51.75454 ,1.7043 ,2401.0,755.96 ,19.70 ,80.24 ,14.11 
+20150101,05:30:07,51.75398 ,1.7049 ,2406.0,755.26 ,19.77 ,80.21 ,14.08 
+20150101,05:33:41,51.61353 ,1.8529 ,2558.0,742.34 ,19.66 ,82.84 ,13.74 
+20150101,05:33:42,51.61281 ,1.8536 ,2558.0,742.30 ,19.54 ,82.59 ,13.76 
+20150101,05:33:43,51.61209 ,1.8543 ,2557.0,742.34 ,19.47 ,82.56 ,13.77 
+20150101,05:33:44,51.61137 ,1.8551 ,2557.0,742.42 ,19.61 ,82.47 ,13.78 
+20150101,05:33:45,51.61065 ,1.8558 ,2557.0,742.40 ,19.55 ,82.83 ,13.75 
+20150101,05:33:46,51.60994 ,1.8565 ,2557.0,742.34 ,19.72 ,82.40 ,13.75 
+20150101,05:33:47,51.60922 ,1.8573 ,2557.0,742.42 ,19.70 ,82.86 ,13.74 
+20150101,05:33:48,51.60851 ,1.8580 ,2558.0,742.42 ,19.72 ,83.18 ,13.74 
+20150101,05:33:49,51.60779 ,1.8588 ,2558.0,742.36 ,19.87 ,83.18 ,13.76 
+20150101,05:33:50,51.60707 ,1.8595 ,2558.0,742.24 ,19.87 ,82.71 ,13.76 
+20150101,05:33:51,51.60635 ,1.8602 ,2558.0,742.20 ,19.89 ,82.98 ,13.76 
+20150101,05:33:52,51.60564 ,1.8609 ,2558.0,742.26 ,19.74 ,82.40 ,13.79 
+20150101,05:33:53,51.60492 ,1.8617 ,2558.0,742.22 ,19.71 ,82.27 ,13.80 
+20150101,05:33:54,51.60420 ,1.8624 ,2558.0,742.20 ,19.51 ,82.61 ,13.84 
+20150101,05:33:55,51.60349 ,1.8631 ,2557.0,742.44 ,19.85 ,81.95 ,13.82 
+20150101,05:33:56,51.60277 ,1.8639 ,2556.0,742.32 ,19.61 ,82.23 ,13.78 
+20150101,05:33:57,51.60205 ,1.8646 ,2555.0,742.54 ,19.57 ,81.95 ,13.81 
+20150101,05:35:59,51.51433 ,1.9565 ,2553.0,742.30 ,18.21 ,81.25 ,14.45 
+20150101,05:36:00,51.51360 ,1.9572 ,2553.0,742.34 ,18.42 ,80.25 ,14.45 
+20150101,05:36:01,51.51288 ,1.9580 ,2553.0,742.40 ,18.38 ,79.72 ,14.43 
+20150101,05:36:02,51.51215 ,1.9588 ,2552.0,742.42 ,18.34 ,79.76 ,14.37 
+20150101,05:36:03,51.51142 ,1.9595 ,2552.0,742.48 ,18.38 ,80.23 ,14.34 
+20150101,05:36:04,51.51070 ,1.9603 ,2552.0,742.58 ,18.39 ,80.07 ,14.35 
+20150101,05:36:05,51.50997 ,1.9610 ,2551.0,742.42 ,18.29 ,80.05 ,14.35 
+20150101,05:36:06,51.50924 ,1.9618 ,2551.0,742.68 ,18.22 ,80.20 ,14.35 
+20150101,05:36:07,51.50852 ,1.9625 ,2551.0,742.54 ,18.21 ,80.20 ,14.35 
+20150101,05:36:08,51.50779 ,1.9633 ,2551.0,742.38 ,18.17 ,80.11 ,14.30 
+20150101,05:36:09,51.50706 ,1.9641 ,2551.0,742.60 ,18.20 ,80.35 ,14.27 
+20150101,05:36:10,51.50634 ,1.9648 ,2551.0,742.48 ,18.05 ,80.69 ,14.27 
+20150101,05:36:11,51.50561 ,1.9656 ,2551.0,742.58 ,18.03 ,80.87 ,14.27 
+20150101,05:36:12,51.50489 ,1.9664 ,2552.0,742.48 ,18.29 ,81.89 ,14.25 
+20150101,05:36:13,51.50416 ,1.9671 ,2552.0,742.52 ,18.14 ,82.59 ,14.31 
+20150101,05:36:14,51.50343 ,1.9679 ,2553.0,742.34 ,18.23 ,83.10 ,14.35 
+20150101,05:36:15,51.50271 ,1.9686 ,2553.0,742.28 ,18.56 ,84.18 ,14.31 
+20150101,05:36:16,51.50198 ,1.9694 ,2554.0,742.30 ,18.55 ,84.49 ,14.33 
+20150101,05:36:17,51.50126 ,1.9702 ,2554.0,742.24 ,18.72 ,84.70 ,14.37 
+20150101,05:36:18,51.50054 ,1.9709 ,2554.0,742.30 ,18.74 ,85.26 ,14.36 
+20150101,05:36:19,51.49981 ,1.9717 ,2554.0,742.12 ,18.80 ,85.39 ,14.37 
+20150101,05:36:20,51.49909 ,1.9724 ,2555.0,742.24 ,18.99 ,85.95 ,14.34 
+20150101,05:36:21,51.49837 ,1.9732 ,2555.0,742.24 ,19.02 ,86.23 ,14.32 
+20150101,05:36:22,51.49765 ,1.9739 ,2555.0,742.12 ,19.06 ,86.45 ,14.31 
+20150101,05:36:23,51.49693 ,1.9747 ,2554.0,742.16 ,19.12 ,86.76 ,14.28 
+20150101,05:36:24,51.49621 ,1.9754 ,2554.0,742.26 ,18.87 ,86.29 ,14.30 
+20150101,05:36:25,51.49549 ,1.9762 ,2554.0,742.26 ,19.11 ,85.92 ,14.26 
+20150101,05:36:26,51.49476 ,1.9769 ,2553.0,742.20 ,19.03 ,86.29 ,14.22 
+20150101,05:36:27,51.49405 ,1.9777 ,2553.0,742.34 ,19.18 ,86.32 ,14.20 
+20150101,05:36:28,51.49333 ,1.9784 ,2553.0,742.24 ,19.24 ,86.36 ,14.17 
+20150101,05:36:29,51.49260 ,1.9792 ,2553.0,742.32 ,19.29 ,85.54 ,14.20 
+20150101,05:36:30,51.49189 ,1.9799 ,2553.0,742.34 ,19.36 ,85.71 ,14.20 
+20150101,05:36:31,51.49117 ,1.9807 ,2554.0,742.38 ,19.39 ,85.95 ,14.19 
+20150101,05:36:32,51.49045 ,1.9814 ,2554.0,742.32 ,19.55 ,86.33 ,14.20 
+20150101,05:36:33,51.48973 ,1.9822 ,2554.0,742.22 ,19.52 ,85.98 ,14.21 
+20150101,05:36:34,51.48902 ,1.9829 ,2554.0,742.36 ,19.51 ,85.53 ,14.23 
+20150101,05:36:35,51.48830 ,1.9837 ,2554.0,742.20 ,19.34 ,85.73 ,14.26 
+20150101,05:36:36,51.48759 ,1.9844 ,2554.0,742.00 ,19.37 ,85.62 ,14.26 
+20150101,05:36:37,51.48688 ,1.9852 ,2554.0,742.24 ,19.40 ,85.86 ,14.27 
+20150101,05:36:38,51.48616 ,1.9859 ,2554.0,742.22 ,19.63 ,86.06 ,14.28 
+20150101,05:36:39,51.48545 ,1.9867 ,2553.0,742.26 ,19.95 ,85.89 ,14.27 
+20150101,05:36:40,51.48474 ,1.9874 ,2553.0,742.16 ,19.81 ,86.01 ,14.22 
+20150101,05:36:41,51.48403 ,1.9881 ,2553.0,742.34 ,19.32 ,87.45 ,14.22 
+20150101,05:36:42,51.48333 ,1.9889 ,2552.0,742.10 ,20.22 ,90.31 ,14.11 
+20150101,05:36:43,51.48262 ,1.9896 ,2552.0,742.50 ,19.74 ,89.33 ,14.24 
+20150101,05:36:44,51.48191 ,1.9904 ,2552.0,742.66 ,18.69 ,87.18 ,14.46 
+20150101,05:36:45,51.48121 ,1.9911 ,2552.0,742.38 ,19.41 ,89.47 ,14.41 
+20150101,05:36:46,51.48050 ,1.9919 ,2551.0,742.40 ,19.71 ,86.92 ,14.45 
+20150101,05:36:47,51.47980 ,1.9926 ,2551.0,742.48 ,18.47 ,86.49 ,14.40 
+20150101,05:36:48,51.47910 ,1.9933 ,2551.0,742.18 ,17.70 ,85.66 ,14.39 
+20150101,05:36:49,51.47840 ,1.9941 ,2551.0,742.58 ,17.84 ,89.68 ,14.39 
+20150101,05:36:50,51.47770 ,1.9948 ,2551.0,742.38 ,19.76 ,83.78 ,14.57 
+20150101,05:36:51,51.47700 ,1.9955 ,2551.0,742.24 ,18.98 ,83.07 ,14.39 
+20150101,05:36:52,51.47630 ,1.9963 ,2551.0,742.34 ,20.36 ,86.14 ,14.28 
+20150101,05:36:53,51.47560 ,1.9970 ,2552.0,742.08 ,20.66 ,84.28 ,14.20 
+20150101,05:36:54,51.47490 ,1.9978 ,2553.0,742.58 ,20.01 ,82.04 ,14.27 
+20150101,05:36:55,51.47420 ,1.9985 ,2553.0,742.04 ,20.43 ,80.02 ,14.13 
+20150101,05:36:56,51.47350 ,1.9992 ,2554.0,742.10 ,18.79 ,80.63 ,14.16 
+20150101,05:36:57,51.47280 ,2.0000 ,2555.0,741.98 ,17.62 ,82.50 ,14.08 
+20150101,05:36:58,51.47209 ,2.0007 ,2556.0,742.06 ,17.42 ,81.05 ,14.06 
+20150101,05:36:59,51.47139 ,2.0014 ,2557.0,742.16 ,16.87 ,83.43 ,13.97 
+20150101,05:37:00,51.47069 ,2.0022 ,2558.0,741.94 ,19.95 ,81.32 ,13.80 
+20150101,05:37:01,51.46999 ,2.0029 ,2557.0,741.52 ,19.05 ,90.09 ,13.45 
+20150101,05:37:02,51.46928 ,2.0036 ,2557.0,741.96 ,18.63 ,89.85 ,13.40 
+20150101,05:37:03,51.46858 ,2.0044 ,2556.0,741.94 ,18.00 ,90.13 ,13.29 
+20150101,05:37:04,51.46787 ,2.0051 ,2556.0,742.08 ,18.69 ,90.18 ,13.13 
+20150101,05:37:05,51.46717 ,2.0058 ,2555.0,742.12 ,19.07 ,88.68 ,13.15 
+20150101,05:37:06,51.46647 ,2.0066 ,2555.0,742.34 ,18.67 ,88.31 ,13.07 
+20150101,05:37:07,51.46577 ,2.0073 ,2555.0,742.38 ,18.84 ,88.24 ,13.04 
+20150101,05:37:08,51.46506 ,2.0080 ,2554.0,742.42 ,18.82 ,88.60 ,13.03 
+20150101,05:37:09,51.46437 ,2.0088 ,2554.0,742.36 ,19.10 ,88.56 ,12.99 
+20150101,05:37:10,51.46366 ,2.0095 ,2553.0,742.40 ,19.04 ,88.77 ,12.93 
+20150101,05:37:11,51.46296 ,2.0102 ,2553.0,742.46 ,18.96 ,89.76 ,12.90 
+20150101,05:37:12,51.46226 ,2.0110 ,2552.0,742.48 ,19.03 ,89.55 ,12.94 
+20150101,05:37:13,51.46156 ,2.0117 ,2552.0,742.40 ,18.97 ,89.18 ,12.89 
+20150101,05:37:14,51.46087 ,2.0124 ,2552.0,742.54 ,19.12 ,89.01 ,12.88 
+20150101,05:37:15,51.46017 ,2.0132 ,2552.0,742.48 ,19.18 ,89.28 ,12.95 
+20150101,05:37:16,51.45947 ,2.0139 ,2552.0,742.70 ,19.05 ,88.65 ,13.01 
+20150101,05:37:17,51.45878 ,2.0146 ,2552.0,742.40 ,19.49 ,88.38 ,13.04 
+20150101,05:37:18,51.45808 ,2.0154 ,2552.0,742.50 ,19.64 ,88.37 ,13.06 
+20150101,05:37:19,51.45739 ,2.0161 ,2552.0,742.30 ,19.56 ,87.36 ,13.11 
+20150101,05:37:20,51.45670 ,2.0168 ,2551.0,742.48 ,19.67 ,88.22 ,13.12 
+20150101,05:37:21,51.45600 ,2.0175 ,2551.0,742.42 ,19.66 ,87.64 ,13.14 
+20150101,05:37:22,51.45531 ,2.0183 ,2551.0,742.42 ,19.82 ,86.73 ,13.19 
+20150101,05:37:23,51.45462 ,2.0190 ,2551.0,742.66 ,19.97 ,86.84 ,13.24 
+20150101,05:37:24,51.45393 ,2.0197 ,2550.0,742.72 ,19.14 ,88.26 ,13.24 
+20150101,05:37:25,51.45324 ,2.0204 ,2550.0,742.68 ,19.32 ,87.69 ,13.28 
+20150101,05:37:26,51.45255 ,2.0212 ,2549.0,742.70 ,19.29 ,87.74 ,13.27 
+20150101,05:37:27,51.45186 ,2.0219 ,2549.0,742.58 ,19.31 ,87.45 ,13.34 
+20150101,05:37:28,51.45117 ,2.0226 ,2549.0,742.48 ,19.05 ,87.32 ,13.34 
+20150101,05:37:29,51.45048 ,2.0233 ,2548.0,742.54 ,19.06 ,86.75 ,13.36 
+20150101,05:37:30,51.44980 ,2.0241 ,2548.0,742.72 ,18.84 ,86.56 ,13.36 
+20150101,05:37:31,51.44911 ,2.0248 ,2548.0,742.56 ,19.01 ,86.95 ,13.35 
+20150101,05:37:32,51.44856 ,2.0254 ,2548.0,742.58 ,19.09 ,86.76 ,13.42 
+20150101,05:37:33,51.44774 ,2.0262 ,2549.0,742.48 ,19.02 ,86.02 ,13.46 
+20150101,05:37:34,51.44719 ,2.0268 ,2549.0,742.40 ,18.97 ,86.71 ,13.46 
+20150101,05:37:35,51.44637 ,2.0277 ,2549.0,742.52 ,19.03 ,86.81 ,13.50 
+20150101,05:37:36,51.44582 ,2.0282 ,2549.0,742.46 ,19.08 ,87.69 ,13.52 
+20150101,05:37:37,51.44500 ,2.0291 ,2549.0,742.60 ,18.94 ,87.25 ,13.57 
+20150101,05:37:38,51.44446 ,2.0297 ,2549.0,742.60 ,18.89 ,87.57 ,13.60 
+20150101,05:37:39,51.44377 ,2.0304 ,2549.0,742.66 ,18.89 ,88.48 ,13.57 
+20150101,05:37:40,51.44295 ,2.0312 ,2549.0,742.50 ,18.79 ,88.90 ,13.65 
+20150101,05:37:41,51.44241 ,2.0318 ,2549.0,742.40 ,19.04 ,88.92 ,13.67 
+20150101,05:37:42,51.44173 ,2.0325 ,2550.0,742.44 ,18.96 ,89.12 ,13.71 
+20150101,05:37:43,51.44105 ,2.0332 ,2550.0,742.34 ,19.05 ,88.92 ,13.75 
+20150101,05:37:44,51.44037 ,2.0340 ,2550.0,742.44 ,19.15 ,90.00 ,13.70 
+20150101,05:37:45,51.43969 ,2.0347 ,2550.0,742.44 ,18.94 ,89.15 ,13.78 
+20150101,05:37:46,51.43901 ,2.0354 ,2551.0,742.40 ,19.10 ,90.27 ,13.74 
+20150101,05:37:47,51.43833 ,2.0361 ,2552.0,742.34 ,19.45 ,90.77 ,13.74 
+20150101,05:37:48,51.43752 ,2.0369 ,2552.0,742.32 ,19.65 ,90.73 ,13.77 
+20150101,05:37:49,51.43698 ,2.0375 ,2553.0,742.22 ,19.68 ,90.82 ,13.79 
+20150101,05:37:50,51.43617 ,2.0383 ,2553.0,742.20 ,19.57 ,91.64 ,13.81 
+20150101,05:37:51,51.43563 ,2.0389 ,2554.0,742.14 ,19.45 ,91.21 ,13.87 
+20150101,05:37:52,51.43482 ,2.0398 ,2554.0,742.12 ,19.60 ,90.35 ,13.88 
+20150101,05:37:53,51.43428 ,2.0403 ,2554.0,742.10 ,18.98 ,90.66 ,13.90 
+20150101,05:37:54,51.43347 ,2.0412 ,2554.0,742.18 ,18.95 ,89.06 ,13.93 
+20150101,05:37:55,51.43293 ,2.0417 ,2554.0,742.16 ,18.98 ,87.92 ,13.93 
+20150101,05:37:56,51.43227 ,2.0424 ,2554.0,742.24 ,19.15 ,88.50 ,13.89 
+20150101,05:37:57,51.43159 ,2.0431 ,2554.0,742.20 ,18.86 ,88.21 ,13.91 
+20150101,05:37:58,51.43092 ,2.0438 ,2554.0,742.06 ,18.80 ,88.54 ,13.89 
+20150101,05:37:59,51.43025 ,2.0445 ,2554.0,742.10 ,18.98 ,89.64 ,13.89 
+20150101,05:38:00,51.42945 ,2.0454 ,2554.0,742.16 ,18.91 ,89.70 ,13.92 
+20150101,05:38:01,51.42891 ,2.0459 ,2555.0,742.14 ,18.91 ,89.12 ,13.91 
+20150101,05:38:02,51.42824 ,2.0466 ,2555.0,742.12 ,18.82 ,89.36 ,13.94 
+20150101,05:38:03,51.42758 ,2.0473 ,2555.0,742.02 ,18.56 ,89.75 ,13.93 
+20150101,05:38:04,51.42691 ,2.0480 ,2555.0,741.92 ,18.64 ,89.48 ,13.93 
+20150101,05:38:05,51.42624 ,2.0487 ,2556.0,742.12 ,18.72 ,89.02 ,13.94 
+20150101,05:38:06,51.42557 ,2.0494 ,2556.0,741.94 ,18.61 ,89.20 ,13.93 
+20150101,05:38:07,51.42490 ,2.0501 ,2556.0,741.98 ,18.80 ,89.66 ,13.95 
+20150101,05:38:08,51.42424 ,2.0508 ,2556.0,742.00 ,18.98 ,89.61 ,13.88 
+20150101,05:38:09,51.42344 ,2.0516 ,2556.0,741.86 ,18.71 ,89.60 ,13.87 
+20150101,05:38:10,51.42291 ,2.0522 ,2557.0,741.88 ,18.74 ,89.72 ,13.90 
+20150101,05:38:11,51.42224 ,2.0529 ,2557.0,741.86 ,18.61 ,90.03 ,13.94 
+20150101,05:45:15,51.15340 ,2.3331 ,3086.0,695.96 ,18.43 ,99.02 ,11.88 
+20150101,05:45:16,51.15277 ,2.3338 ,3085.0,695.94 ,18.38 ,99.05 ,11.92 
+20150101,05:45:17,51.15214 ,2.3344 ,3085.0,695.94 ,18.31 ,98.23 ,11.99 
+20150101,05:45:18,51.15151 ,2.3351 ,3085.0,695.98 ,18.77 ,98.64 ,11.94 
+20150101,05:45:19,51.15089 ,2.3357 ,3084.0,695.98 ,18.85 ,98.20 ,11.86 
+20150101,05:45:20,51.15025 ,2.3364 ,3084.0,696.04 ,18.69 ,98.27 ,11.86 
+20150101,05:45:21,51.14963 ,2.3371 ,3084.0,696.02 ,18.50 ,98.86 ,11.85 
+20150101,05:45:22,51.14899 ,2.3377 ,3084.0,696.16 ,18.60 ,97.66 ,11.89 
+20150101,05:45:23,51.14836 ,2.3384 ,3084.0,696.04 ,18.65 ,98.39 ,11.94 
+20150101,05:45:24,51.14773 ,2.3390 ,3083.0,696.14 ,18.33 ,99.42 ,12.00 
+20150101,05:45:25,51.14710 ,2.3397 ,3083.0,696.18 ,18.32 ,98.28 ,12.05 
+20150101,05:45:26,51.14647 ,2.3404 ,3083.0,696.18 ,18.54 ,97.09 ,12.05 
+20150101,05:45:27,51.14583 ,2.3410 ,3083.0,696.14 ,18.53 ,96.26 ,12.03 
+20150101,05:45:28,51.14520 ,2.3417 ,3082.0,696.24 ,18.54 ,96.85 ,11.98 
+20150101,05:45:29,51.14456 ,2.3424 ,3082.0,696.26 ,18.47 ,97.91 ,12.04 
+20150101,05:45:30,51.14392 ,2.3430 ,3082.0,696.16 ,18.49 ,97.83 ,12.07 
+20150101,05:45:31,51.14328 ,2.3437 ,3082.0,696.32 ,18.88 ,96.75 ,12.06 
+20150101,05:45:32,51.14264 ,2.3444 ,3082.0,696.28 ,18.78 ,97.59 ,12.04 
+20150101,05:45:33,51.14200 ,2.3450 ,3081.0,696.24 ,19.18 ,97.85 ,11.94 
+20150101,05:45:34,51.14137 ,2.3457 ,3081.0,696.18 ,19.32 ,98.90 ,11.89 
+20150101,05:45:35,51.14073 ,2.3464 ,3082.0,696.38 ,19.24 ,99.30 ,11.90 
+20150101,05:45:36,51.14009 ,2.3470 ,3082.0,696.32 ,19.42 ,99.04 ,11.95 
+20150101,05:45:37,51.13945 ,2.3477 ,3081.0,696.42 ,19.30 ,99.94 ,12.01 
+20150101,05:45:38,51.13881 ,2.3484 ,3081.0,696.42 ,19.02 ,99.29 ,12.08 
+20150101,05:45:39,51.13817 ,2.3490 ,3080.0,696.46 ,19.15 ,98.20 ,12.13 
+20150101,05:45:40,51.13753 ,2.3497 ,3079.0,696.52 ,19.25 ,98.24 ,12.11 
+20150101,05:45:41,51.13689 ,2.3504 ,3078.0,696.58 ,19.28 ,98.89 ,12.07 
diff --git a/examples/python/get_product_kind.py b/examples/python/get_product_kind.py
index 58b0e93..5ffe3fa 100644
--- a/examples/python/get_product_kind.py
+++ b/examples/python/get_product_kind.py
@@ -1,11 +1,12 @@
 #
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 #
 
 # Python implementation: get_product_kind
@@ -18,17 +19,19 @@ import traceback
 import sys
 from eccodes import *
 
-VERBOSE=1 # verbose error reporting
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
     if len(sys.argv) < 2:
-        print >>sys.stderr, 'Usage: ',sys.argv[0],' file'
+        print >>sys.stderr, 'Usage: ', sys.argv[0], ' file'
         sys.exit(1)
 
     f = open(sys.argv[1])
     while 1:
         id = codes_new_from_file(f, CODES_PRODUCT_ANY)
-        if id is None: break
+        if id is None:
+            break
 
         print 'product: ', codes_get(id, 'kindOfProduct', str)
 
@@ -36,14 +39,15 @@ def example():
 
     f.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/get_product_kind.sh b/examples/python/get_product_kind.sh
index 804e209..b70a49a 100755
--- a/examples/python/get_product_kind.sh
+++ b/examples/python/get_product_kind.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -16,6 +16,6 @@ fTmp=${label}.tmp
 # Create a file containing both GRIB and BUFR messages
 cat ${data_dir}/sample.grib2 ${data_dir}/bufr/syno_multi.bufr >$fTmp
 
-$PYTHON  get_product_kind.py $fTmp >/dev/null 2>&1
+$PYTHON $examples_src/get_product_kind.py $fTmp >/dev/null 2>&1
 
 rm -f ${fTmp}
diff --git a/examples/python/grib_clone.py b/examples/python/grib_clone.py
index 4e09ac1..71885fa 100644
--- a/examples/python/grib_clone.py
+++ b/examples/python/grib_clone.py
@@ -1,11 +1,12 @@
 #
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 #
 
 import traceback
@@ -14,28 +15,29 @@ import random
 
 from eccodes import *
 
-INPUT='../../data/constant_field.grib1'
-OUTPUT='out.clone.grib'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/constant_field.grib1'
+OUTPUT = 'out.clone.grib'
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
     fin = open(INPUT)
-    fout = open(OUTPUT,'w')
+    fout = open(OUTPUT, 'w')
 
     gid = codes_grib_new_from_file(fin)
 
-    nx = codes_get(gid,'Ni')
-    ny = codes_get(gid,'Nj')
+    nx = codes_get(gid, 'Ni')
+    ny = codes_get(gid, 'Nj')
 
-    for step in range(0,24,6):
+    for step in range(0, 24, 6):
         clone_id = codes_clone(gid)
-        codes_set(clone_id,'step',step)
+        codes_set(clone_id, 'step', step)
 
-        values = [random.random() for i in range(nx*ny)]
+        values = [random.random() for i in range(nx * ny)]
 
-        codes_set_values(clone_id,values)
+        codes_set_values(clone_id, values)
 
-        codes_write(clone_id,fout)
+        codes_write(clone_id, fout)
         codes_release(clone_id)
 
     codes_release(gid)
@@ -43,14 +45,15 @@ def example():
     fin.close()
     fout.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/grib_clone.sh b/examples/python/grib_clone.sh
index f4a3635..0e09827 100755
--- a/examples/python/grib_clone.sh
+++ b/examples/python/grib_clone.sh
@@ -3,5 +3,5 @@
 . ./include.sh
 
 REDIRECT=/dev/null
-$PYTHON grib_clone.py 2> $REDIRECT > $REDIRECT
+$PYTHON $examples_src/grib_clone.py 2> $REDIRECT > $REDIRECT
 rm -f out.clone.grib || true
diff --git a/examples/python/grib_get_keys.py b/examples/python/grib_get_keys.py
index 22724a1..4f9be72 100644
--- a/examples/python/grib_get_keys.py
+++ b/examples/python/grib_get_keys.py
@@ -1,18 +1,20 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 
 import traceback
 import sys
 
 from eccodes import *
 
-INPUT='../../data/reduced_latlon_surface.grib1'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/reduced_latlon_surface.grib1'
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
     f = open(INPUT)
@@ -24,39 +26,39 @@ def example():
         'longitudeOfFirstGridPointInDegrees',
         'latitudeOfLastGridPointInDegrees',
         'longitudeOfLastGridPointInDegrees',
-        ]
+    ]
 
     while 1:
         gid = codes_grib_new_from_file(f)
-        if gid is None: break
+        if gid is None:
+            break
 
         for key in keys:
             try:
-                print '  %s: %s' % (key,codes_get(gid,key))
-            except CodesInternalError,err:
-                print 'Error with key="%s" : %s' % (key,err.msg) 
-            
-        if codes_is_defined(gid,"A_very_silly_key"): raise Exception("Key was defined")
-                
+                print '  %s: %s' % (key, codes_get(gid, key))
+            except CodesInternalError, err:
+                print 'Error with key="%s" : %s' % (key, err.msg)
+
         print 'There are %d values, average is %f, min is %f, max is %f' % (
-                  codes_get_size(gid,'values'),
-                  codes_get(gid,'average'),
-                  codes_get(gid,'min'),
-                  codes_get(gid,'max')
-               )
+            codes_get_size(gid, 'values'),
+            codes_get(gid, 'average'),
+            codes_get(gid, 'min'),
+            codes_get(gid, 'max')
+        )
 
         codes_release(gid)
 
     f.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/grib_get_keys.sh b/examples/python/grib_get_keys.sh
index bc5f764..b902ca8 100755
--- a/examples/python/grib_get_keys.sh
+++ b/examples/python/grib_get_keys.sh
@@ -3,8 +3,8 @@
 . ./include.sh
 
 REDIRECT=/dev/null
-$PYTHON grib_get_keys.py 2> $REDIRECT > $REDIRECT
+$PYTHON $examples_src/grib_get_keys.py 2> $REDIRECT > $REDIRECT
 
 # Rerun test with no type check decorator (See GRIB-51)
 export GRIB_API_PYTHON_NO_TYPE_CHECKS=1
-$PYTHON grib_get_keys.py 2> $REDIRECT > $REDIRECT
+$PYTHON $examples_src/grib_get_keys.py 2> $REDIRECT > $REDIRECT
diff --git a/examples/python/grib_index.py b/examples/python/grib_index.py
index 5a3721a..9db34bb 100644
--- a/examples/python/grib_index.py
+++ b/examples/python/grib_index.py
@@ -1,20 +1,26 @@
 #
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 #
 
+# Description: How to create and use an index to access GRIB messages from
+# a file
+
 import traceback
-import sys,os
+import sys
+import os
 
 from eccodes import *
 
-INPUT='../../data/index.grib'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/index.grib'
+VERBOSE = 1  # verbose error reporting
+
 
 def product(*args, **kwds):
     # product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy
@@ -22,12 +28,13 @@ def product(*args, **kwds):
     pools = map(tuple, args) * kwds.get('repeat', 1)
     result = [[]]
     for pool in pools:
-        result = [x+[y] for x in result for y in pool]
+        result = [x + [y] for x in result for y in pool]
     for prod in result:
         yield tuple(prod)
 
+
 def example():
-    index_keys = ["shortName","level","number","step"]
+    index_keys = ["shortName", "level", "number", "step"]
     index_file = "my.idx"
 
     iid = None
@@ -35,47 +42,49 @@ def example():
     if (os.path.exists(index_file)):
         iid = codes_index_read(index_file)
     else:
-        iid = codes_index_new_from_file(INPUT,index_keys)
+        iid = codes_index_new_from_file(INPUT, index_keys)
 
         # multiple files can be added to an index:
         # codes_index_add_file(iid,"grib file to add")
 
-        codes_index_write(iid,index_file)
+        codes_index_write(iid, index_file)
 
     index_vals = []
 
     for key in index_keys:
         print "%sSize=%d" % (
             key,
-            codes_index_get_size(iid,key)
+            codes_index_get_size(iid, key)
         )
 
-        key_vals = codes_index_get(iid,key)
+        key_vals = codes_index_get(iid, key)
         print " ".join(key_vals)
 
         index_vals.append(key_vals)
 
     for prod in product(*index_vals):
         for i in range(len(index_keys)):
-            codes_index_select(iid,index_keys[i],prod[i])
+            codes_index_select(iid, index_keys[i], prod[i])
 
         while 1:
             gid = codes_new_from_index(iid)
-            if gid is None: break
-            print " ".join(["%s=%s" % (key,codes_get(gid,key)) for key in index_keys])
+            if gid is None:
+                break
+            print " ".join(["%s=%s" % (key, codes_get(gid, key))
+                            for key in index_keys])
             codes_release(gid)
 
     codes_index_release(iid)
-    
+
 
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/grib_index.sh b/examples/python/grib_index.sh
index c28d080..9e1a44e 100755
--- a/examples/python/grib_index.sh
+++ b/examples/python/grib_index.sh
@@ -3,5 +3,5 @@
 . ./include.sh
 
 REDIRECT=/dev/null
-$PYTHON grib_index.py 2> $REDIRECT > $REDIRECT
+$PYTHON $examples_src/grib_index.py 2> $REDIRECT > $REDIRECT
 rm my.idx || true
diff --git a/examples/python/grib_iterator.c b/examples/python/grib_iterator.c
index 3fb4a36..bd92faf 100644
--- a/examples/python/grib_iterator.c
+++ b/examples/python/grib_iterator.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/python/grib_iterator.py b/examples/python/grib_iterator.py
index b2f4471..241c489 100644
--- a/examples/python/grib_iterator.py
+++ b/examples/python/grib_iterator.py
@@ -1,11 +1,12 @@
 #
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 #
 
 import traceback
@@ -13,27 +14,30 @@ import sys
 
 from eccodes import *
 
-VERBOSE=1 # verbose error reporting
+VERBOSE = 1  # verbose error reporting
+
 
 def example(INPUT):
     f = open(INPUT)
 
     while 1:
         gid = codes_grib_new_from_file(f)
-        if gid is None: break
+        if gid is None:
+            break
 
-        iterid = codes_grib_iterator_new(gid,0)
+        iterid = codes_grib_iterator_new(gid, 0)
 
-        missingValue = codes_get_double(gid,"missingValue")
+        missingValue = codes_get_double(gid, "missingValue")
 
-        i=0
+        i = 0
         while 1:
             result = codes_grib_iterator_next(iterid)
-            if not result: break
+            if not result:
+                break
 
-            [lat,lon,value] = result
+            [lat, lon, value] = result
 
-            sys.stdout.write("- %d - lat=%.6e lon=%.6e value=" % (i,lat,lon))
+            sys.stdout.write("- %d - lat=%.6e lon=%.6e value=" % (i, lat, lon))
 
             if value == missingValue:
                 print "missing"
@@ -41,20 +45,21 @@ def example(INPUT):
                 print "%.6f" % value
 
             i += 1
-            
+
         codes_grib_iterator_delete(iterid)
         codes_release(gid)
 
     f.close()
 
+
 def main():
     try:
         example(sys.argv[1])
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/grib_iterator.sh b/examples/python/grib_iterator.sh
index 62b5ea6..54c41de 100755
--- a/examples/python/grib_iterator.sh
+++ b/examples/python/grib_iterator.sh
@@ -6,14 +6,14 @@ TEMP1=temp1.$$
 TEMP2=temp2.$$
 
 FILE="${data_dir}/reduced_latlon_surface.grib1"
-$PYTHON grib_iterator.py $FILE 2> $TEMP1 > $TEMP1
+$PYTHON $examples_src/grib_iterator.py $FILE 2> $TEMP1 > $TEMP1
 ./p_grib_iterator $FILE        2> $TEMP2 > $TEMP2
 diff $TEMP1 $TEMP2
 
 
 # Polar stereographic
 FILE="${ECCODES_SAMPLES_PATH}/polar_stereographic_pl_grib2.tmpl"
-$PYTHON grib_iterator.py $FILE 2> $TEMP1 > $TEMP1
+$PYTHON $examples_src/grib_iterator.py $FILE 2> $TEMP1 > $TEMP1
 ./p_grib_iterator $FILE        2> $TEMP2 > $TEMP2
 diff $TEMP1 $TEMP2
 
diff --git a/examples/python/grib_keys_iterator.c b/examples/python/grib_keys_iterator.c
index 1020766..792f7aa 100644
--- a/examples/python/grib_keys_iterator.c
+++ b/examples/python/grib_keys_iterator.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -13,10 +13,9 @@
  *
  * Description:
  * Example on how to use keys_iterator functions and the
- * grib_keys_iterator structure to get all the available
+ * codes_keys_iterator structure to get all the available
  * keys in a GRIB message.
  *
- *
  */
 
 #include <assert.h>
@@ -25,7 +24,7 @@
 #include <unistd.h>
 #include <string.h>
 
-#include "grib_api.h"
+#include "eccodes.h"
 
 #define MAX_KEY_LEN  255
 #define MAX_VAL_LEN  1024
@@ -35,22 +34,22 @@ static void usage(char* progname);
 int main(int argc, char *argv[])
 {
   /* To skip read only and not coded keys
-     unsigned long key_iterator_filter_flags=GRIB_KEYS_ITERATOR_SKIP_READ_ONLY ||
-     GRIB_KEYS_ITERATOR_SKIP_COMPUTED;
+     unsigned long key_iterator_filter_flags=CODES_KEYS_ITERATOR_SKIP_READ_ONLY ||
+     CODES_KEYS_ITERATOR_SKIP_COMPUTED;
   */
-  unsigned long key_iterator_filter_flags=GRIB_KEYS_ITERATOR_ALL_KEYS;
+    unsigned long key_iterator_filter_flags=CODES_KEYS_ITERATOR_ALL_KEYS;
 
-  /* valid name_spaces are ls and mars */
+  /* Choose a namespace. E.g. "ls", "time", "parameter", "geography", "statistics" */
   char* name_space="ls";
 
   /* name_space=NULL to get all the keys */
   /* char* name_space=0; */
 
-  FILE* f;
-  grib_handle* h=NULL;
-  grib_keys_iterator* kiter=NULL;
+  FILE* f = NULL;
+  codes_handle* h=NULL;
+  
   int err=0;
-  int grib_count=0;
+  int msg_count=0;
 
   char value[MAX_VAL_LEN];
   size_t vlen=MAX_VAL_LEN;
@@ -63,40 +62,40 @@ int main(int argc, char *argv[])
     exit(1);
   }
 
-  while((h = grib_handle_new_from_file(0,f,&err)) != NULL) {
-
-    grib_count++;
-    /*printf("-- GRIB N. %d --\n",grib_count);*/
+  while((h = grib_handle_new_from_file(0,f,&err)) != NULL)
+  {
+    codes_keys_iterator* kiter=NULL;
+    msg_count++;
+    /*printf("-- GRIB N. %d --\n",msg_count);*/
     if(!h) {
       printf("ERROR: Unable to create grib handle\n");
       exit(1);
     }
 
-    kiter=grib_keys_iterator_new(h,key_iterator_filter_flags,name_space);
+        kiter=codes_keys_iterator_new(h,key_iterator_filter_flags,name_space);
     if (!kiter) {
       printf("ERROR: Unable to create keys iterator\n");
       exit(1);
     }
 
-    while(grib_keys_iterator_next(kiter))
+    while(codes_keys_iterator_next(kiter))
     {
-      const char* name = grib_keys_iterator_get_name(kiter);
+      const char* name = codes_keys_iterator_get_name(kiter);
       vlen=MAX_VAL_LEN;
       bzero(value,vlen);
-      GRIB_CHECK(grib_get_string(h,name,value,&vlen),name);
+      CODES_CHECK(codes_get_string(h,name,value,&vlen),name);
       printf("%s = %s\n",name,value);
     }
 
-    grib_keys_iterator_delete(kiter);
-
+    codes_keys_iterator_delete(kiter);
+    codes_handle_delete(h);
   }
-
+  fclose(f);
   return 0;
-
 }
 
-static void usage(char* progname) {
+static void usage(char* progname)
+{
   printf("\nUsage: %s grib_file\n",progname);
   exit(1);
 }
-
diff --git a/examples/python/grib_keys_iterator.py b/examples/python/grib_keys_iterator.py
index 0b9153d..c838162 100644
--- a/examples/python/grib_keys_iterator.py
+++ b/examples/python/grib_keys_iterator.py
@@ -1,11 +1,12 @@
 #
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 #
 
 import traceback
@@ -13,17 +14,19 @@ import sys
 
 from eccodes import *
 
-INPUT='../../data/reduced_latlon_surface.grib1'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/reduced_latlon_surface.grib1'
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
     f = open(INPUT)
 
     while 1:
         gid = codes_grib_new_from_file(f)
-        if gid is None: break
+        if gid is None:
+            break
 
-        iterid = codes_keys_iterator_new(gid,'ls')
+        iterid = codes_keys_iterator_new(gid, 'ls')
 
         # Different types of keys can be skipped
         # codes_skip_computed(iterid)
@@ -35,22 +38,23 @@ def example():
 
         while codes_keys_iterator_next(iterid):
             keyname = codes_keys_iterator_get_name(iterid)
-            keyval = codes_get_string(iterid,keyname)
-            print "%s = %s" % (keyname,keyval)
+            keyval = codes_get_string(iterid, keyname)
+            print "%s = %s" % (keyname, keyval)
 
         codes_keys_iterator_delete(iterid)
         codes_release(gid)
 
     f.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/grib_keys_iterator.sh b/examples/python/grib_keys_iterator.sh
index 99b3b4c..1596f51 100755
--- a/examples/python/grib_keys_iterator.sh
+++ b/examples/python/grib_keys_iterator.sh
@@ -5,7 +5,7 @@
 TEMP1=temp1.$$
 TEMP2=temp2.$$
 
-$PYTHON grib_keys_iterator.py 2> $TEMP1 > $TEMP1
+$PYTHON $examples_src/grib_keys_iterator.py 2> $TEMP1 > $TEMP1
 ./p_grib_keys_iterator ../../data/reduced_latlon_surface.grib1 2> $TEMP2 > $TEMP2
 
 diff $TEMP1 $TEMP2
diff --git a/examples/python/grib_multi_write.py b/examples/python/grib_multi_write.py
index 88424b4..8b9a5a1 100644
--- a/examples/python/grib_multi_write.py
+++ b/examples/python/grib_multi_write.py
@@ -1,11 +1,12 @@
 #
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 #
 
 import traceback
@@ -13,37 +14,39 @@ import sys
 
 from eccodes import *
 
-INPUT='../../data/sample.grib2'
-OUTPUT='out.mw.grib'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/sample.grib2'
+OUTPUT = 'out.mw.grib'
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
     fin = open(INPUT)
-    fout = open(OUTPUT,'w')
+    fout = open(OUTPUT, 'w')
 
     gid = codes_grib_new_from_file(fin)
 
     mgid = codes_grib_multi_new()
 
-    for step in range(12,132,12):
-        codes_set(gid,"step",step)
-        codes_grib_multi_append(gid,4,mgid)
+    for step in range(12, 132, 12):
+        codes_set(gid, "step", step)
+        codes_grib_multi_append(gid, 4, mgid)
 
-    codes_grib_multi_write(mgid,fout)
+    codes_grib_multi_write(mgid, fout)
 
     codes_grib_multi_release(mgid)
     codes_release(gid)
     fin.close()
-    fout.close() 
+    fout.close()
+
 
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/grib_multi_write.sh b/examples/python/grib_multi_write.sh
index 83d8892..689618c 100755
--- a/examples/python/grib_multi_write.sh
+++ b/examples/python/grib_multi_write.sh
@@ -3,5 +3,5 @@
 . ./include.sh
 
 REDIRECT=/dev/null
-$PYTHON grib_multi_write.py 2> $REDIRECT > $REDIRECT
+$PYTHON $examples_src/grib_multi_write.py 2> $REDIRECT > $REDIRECT
 rm -f out.mw.grib || true
diff --git a/examples/python/grib_nearest.py b/examples/python/grib_nearest.py
index d714e10..9dc272b 100644
--- a/examples/python/grib_nearest.py
+++ b/examples/python/grib_nearest.py
@@ -1,11 +1,12 @@
 #
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 #
 
 import traceback
@@ -13,38 +14,41 @@ import sys
 
 from eccodes import *
 
-INPUT='../../data/reduced_gaussian_lsm.grib1'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/reduced_gaussian_lsm.grib1'
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
-    points = ((30,-20),(13,234))
+    points = ((30, -20), (13, 234))
 
-    f = open(INPUT) 
+    f = open(INPUT)
     gid = codes_grib_new_from_file(f)
 
-    for lat,lon in points:
-        nearest = codes_grib_find_nearest(gid,lat,lon)[0]
-        print lat,lon
-        print nearest.lat,nearest.lon,nearest.value,nearest.distance,nearest.index
+    for lat, lon in points:
+        nearest = codes_grib_find_nearest(gid, lat, lon)[0]
+        print lat, lon
+        print nearest.lat, nearest.lon, nearest.value, nearest.distance, \
+            nearest.index
 
-        four = codes_grib_find_nearest(gid,lat,lon,is_lsm = False,npoints = 4)
+        four = codes_grib_find_nearest(gid, lat, lon, is_lsm=False, npoints=4)
         for i in range(len(four)):
             print "- %d -" % i
             print four[i]
 
-        print "-"*100
+        print "-" * 100
 
     codes_release(gid)
     f.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/grib_nearest.sh b/examples/python/grib_nearest.sh
index f1ddc8a..51a6034 100755
--- a/examples/python/grib_nearest.sh
+++ b/examples/python/grib_nearest.sh
@@ -3,4 +3,4 @@
 . ./include.sh
 
 REDIRECT=/dev/null
-$PYTHON grib_nearest.py 2> $REDIRECT > $REDIRECT
+$PYTHON $examples_src/grib_nearest.py 2> $REDIRECT > $REDIRECT
diff --git a/examples/python/grib_print_data.c b/examples/python/grib_print_data.c
index 752d7eb..26d9e63 100644
--- a/examples/python/grib_print_data.c
+++ b/examples/python/grib_print_data.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/python/grib_print_data.py b/examples/python/grib_print_data.py
index b994cf3..98e0b52 100644
--- a/examples/python/grib_print_data.py
+++ b/examples/python/grib_print_data.py
@@ -1,11 +1,12 @@
 #
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 #
 
 import traceback
@@ -13,8 +14,9 @@ import sys
 
 from eccodes import *
 
-INPUT='../../data/regular_latlon_surface.grib1'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/regular_latlon_surface.grib1'
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
     f = open(INPUT)
@@ -22,24 +24,25 @@ def example():
 
     values = codes_get_values(gid)
     for i in xrange(len(values)):
-        print "%d %.10e" % (i+1,values[i])
+        print "%d %.10e" % (i + 1, values[i])
 
-    print '%d values found in %s' % (len(values),INPUT)
+    print '%d values found in %s' % (len(values), INPUT)
 
-    for key in ('max','min','average'):
-        print '%s=%.10e' % (key,codes_get(gid,key))
+    for key in ('max', 'min', 'average'):
+        print '%s=%.10e' % (key, codes_get(gid, key))
 
     codes_release(gid)
     f.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/grib_print_data.sh b/examples/python/grib_print_data.sh
index caaf8dc..172d18c 100755
--- a/examples/python/grib_print_data.sh
+++ b/examples/python/grib_print_data.sh
@@ -5,7 +5,7 @@
 TEMP1=temp1.$$
 TEMP2=temp2.$$
 
-$PYTHON grib_print_data.py 2> $TEMP1 > $TEMP1
+$PYTHON $examples_src/grib_print_data.py 2> $TEMP1 > $TEMP1
 ./p_grib_print_data ../../data/regular_latlon_surface.grib1 2> $TEMP2 > $TEMP2
 
 diff $TEMP1 $TEMP2
diff --git a/examples/python/grib_set_bitmap.py b/examples/python/grib_set_bitmap.py
index 3707264..e56dac0 100644
--- a/examples/python/grib_set_bitmap.py
+++ b/examples/python/grib_set_bitmap.py
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -10,17 +10,18 @@ import traceback
 import sys
 from eccodes import *
 
-INPUT   = '../../data/regular_latlon_surface.grib1'
-OUTPUT  = 'out.bmp.grib'
+INPUT = '../../data/regular_latlon_surface.grib1'
+OUTPUT = 'out.set_bitmap_p.grib'
 MISSING = 9999
-VERBOSE = 1 # verbose error reporting
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
     fin = open(INPUT)
-    fout = open(OUTPUT,'w')
+    fout = open(OUTPUT, 'w')
     gid = codes_grib_new_from_file(fin)
 
-    codes_set(gid,'missingValue', MISSING)
+    codes_set(gid, 'missingValue', MISSING)
     values = codes_get_values(gid)
     codes_set(gid, 'bitmapPresent', 1)
     # Change some data values to be missing
@@ -30,28 +31,28 @@ def example():
             values[i] = MISSING
             num_missing += 1
     codes_set_values(gid, values)
-    
+
     # Check counts of missing and non-missing values
-    num_data = codes_get(gid,'numberOfDataPoints',int)
-    assert(codes_get(gid,'numberOfCodedValues',int) == num_data-num_missing)
-    assert(codes_get(gid,'numberOfMissing',int)     == num_missing)
+    num_data = codes_get(gid, 'numberOfDataPoints', int)
+    assert(codes_get(gid, 'numberOfCodedValues', int) == num_data - num_missing)
+    assert(codes_get(gid, 'numberOfMissing', int) == num_missing)
 
-    codes_write(gid,fout)
+    codes_write(gid, fout)
     codes_release(gid)
     fin.close()
     fout.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >> sys.stderr,err.msg
+            print >> sys.stderr, err.msg
 
         return 1
 
 if __name__ == "__main__":
     sys.exit(main())
-
diff --git a/examples/python/grib_set_bitmap.sh b/examples/python/grib_set_bitmap.sh
index 40f4cda..fda63c0 100755
--- a/examples/python/grib_set_bitmap.sh
+++ b/examples/python/grib_set_bitmap.sh
@@ -3,5 +3,11 @@
 . ./include.sh
 
 REDIRECT=/dev/null
-$PYTHON grib_set_bitmap.py 2> $REDIRECT > $REDIRECT
-rm out.bmp.grib || true
+OUT_TMP=out.set_bitmap_p.grib
+
+$PYTHON $examples_src/grib_set_bitmap.py
+
+x=`${tools_dir}/grib_get -p numberOfDataPoints,numberOfCodedValues,numberOfMissing $OUT_TMP`
+[ "$x" = "496 446 50" ]
+
+rm -f $OUT_TMP
diff --git a/examples/python/grib_set_keys.py b/examples/python/grib_set_keys.py
index 17b4acd..24586d7 100644
--- a/examples/python/grib_set_keys.py
+++ b/examples/python/grib_set_keys.py
@@ -1,10 +1,11 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 
 import traceback
 import sys
@@ -12,59 +13,61 @@ import sys
 from eccodes import *
 from datetime import date
 
-INPUT='../../data/regular_latlon_surface_constant.grib1'
-OUTPUT='out.set.grib'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/regular_latlon_surface_constant.grib1'
+OUTPUT = 'out.set.grib'
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
     fin = open(INPUT)
-    fout = open(OUTPUT,'w')
+    fout = open(OUTPUT, 'w')
     gid = codes_grib_new_from_file(fin)
 
     dt = date.today()
-    today = "%d%02d%02d" % (dt.year,dt.month,dt.day)
-    codes_set(gid,'dataDate',int(today))
-    codes_set(gid,'centre',80)
-
-    centreIntVal = codes_get(gid,'centre',int)
-    centreStrVal = codes_get(gid,'centre',str)
-    dateStrVal   = codes_get(gid,'dataDate',str)
-    assert(centreIntVal == 80)
-    assert(centreStrVal == 'cnmc')
-    assert(dateStrVal   == today)
-    print 'get centre as an integer - centre = %d' % centreIntVal
-    print 'get centre as a string - centre = %s' % centreStrVal
-    print 'get date as a string - date = %s' % dateStrVal
-    
+    today = "%d%02d%02d" % (dt.year, dt.month, dt.day)
+    codes_set(gid, 'dataDate', int(today))
+    codes_set(gid, 'centre', 80)
+
+    centreIntVal = codes_get_array(gid, 'centre', int)
+    centreStrVal = codes_get_array(gid, 'centre', str)
+    dateStrVal = codes_get_array(gid, 'dataDate', str)
+    assert(centreIntVal[0] == 80)
+    assert(centreStrVal[0] == 'cnmc')
+    assert(dateStrVal[0] == today)
+    print 'get centre as an integer - centre = %d' % centreIntVal[0]
+    print 'get centre as a string - centre = %s' % centreStrVal[0]
+    print 'get date as a string - date = %s' % dateStrVal[0]
+
     # Now do the same but using set_key_vals, setting keys all at once
     codes_set_key_vals(gid, 'level=1,centre=98')  # with a String
-    assert(codes_get(gid,'centre',str) == 'ecmf')
-    assert(codes_get(gid,'level',int)  == 1)
-    
-    codes_set_key_vals(gid, ['level=2', 'centre=kwbc']) # with a Tuple
-    assert(codes_get(gid,'centre',int) == 7)
-    assert(codes_get(gid,'level',int)  == 2)
-    
-    codes_set_key_vals(gid, {'level': 3, 'centre': 84}) # with a Dictionary
-    assert(codes_get(gid,'centre',str) == 'lfpw')
-    assert(codes_get(gid,'level',int)  == 3)
-    
+    assert(codes_get(gid, 'centre', str) == 'ecmf')
+    assert(codes_get(gid, 'level', int) == 1)
+
+    codes_set_key_vals(gid, ['level=2', 'centre=kwbc'])  # with a Tuple
+    assert(codes_get(gid, 'centre', int) == 7)
+    assert(codes_get(gid, 'level', int) == 2)
+
+    codes_set_key_vals(gid, {'level': 3, 'centre': 84})  # with a Dictionary
+    assert(codes_get(gid, 'centre', str) == 'lfpw')
+    assert(codes_get(gid, 'level', int) == 3)
+
     codes_gts_header(True)
     codes_gts_header(False)
 
-    codes_write(gid,fout)
+    codes_write(gid, fout)
     codes_release(gid)
     fin.close()
     fout.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/grib_set_keys.sh b/examples/python/grib_set_keys.sh
index e15c857..9bf5935 100755
--- a/examples/python/grib_set_keys.sh
+++ b/examples/python/grib_set_keys.sh
@@ -3,5 +3,5 @@
 . ./include.sh
 
 REDIRECT=/dev/null
-$PYTHON grib_set_keys.py 2> $REDIRECT > $REDIRECT
+$PYTHON $examples_src/grib_set_keys.py 2> $REDIRECT > $REDIRECT
 rm -f out.set.grib || true
diff --git a/examples/python/grib_set_pv.py b/examples/python/grib_set_pv.py
index 1c4e65c..0361f36 100644
--- a/examples/python/grib_set_pv.py
+++ b/examples/python/grib_set_pv.py
@@ -1,11 +1,12 @@
 #
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 #
 
 import traceback
@@ -13,7 +14,8 @@ import sys
 
 from eccodes import *
 
-VERBOSE=1 # verbose error reporting
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
     """
@@ -28,27 +30,28 @@ def example():
     numberOfCoefficients = 2 * (numberOfLevels + 1)
     assert(len(pv) == numberOfCoefficients)
 
-    fout = open('out.pv.grib1','w')
+    fout = open('out.pv.grib1', 'w')
     gid = codes_new_from_samples('reduced_gg_sfc_grib1')
 
-    codes_set(gid,'typeOfLevel','hybrid')
-    codes_set(gid,'level',2)
-    codes_set(gid,'PVPresent',1)
-    codes_set_array(gid,'pv',pv)
+    codes_set(gid, 'typeOfLevel', 'hybrid')
+    codes_set(gid, 'level', 2)
+    codes_set(gid, 'PVPresent', 1)
+    codes_set_array(gid, 'pv', pv)
 
-    codes_write(gid,fout)
+    codes_write(gid, fout)
 
     codes_release(gid)
     fout.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/gts_get_keys.py b/examples/python/gts_get_keys.py
new file mode 100644
index 0000000..6b2f8bb
--- /dev/null
+++ b/examples/python/gts_get_keys.py
@@ -0,0 +1,74 @@
+# Copyright 2005-2016 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.
+
+#
+# Python implementation: bufr_get_keys
+#
+# Description: how to read values of different type of keys from BUFR messages.
+#
+#
+
+import traceback
+import sys
+
+from eccodes import *
+
+INPUT = '../../data/gts/EGRR20150317121020_00493212.DAT'
+VERBOSE = 1  # verbose error reporting
+
+
+def example():
+
+    # open bufr file
+    f = open(INPUT)
+
+    cnt = 0
+
+    # loop for the messages in the file
+    while 1:
+        # get handle for message
+        gid = codes_gts_new_from_file(f)
+        if gid is None:
+            break
+
+        print "message: %s" % cnt
+
+        # ---------------------------------------------
+        # get values for keys holding a single value
+        # ---------------------------------------------
+        keys = ['TT', 'AA', 'II', 'CCCC', 'YY', 'GG', 'gg', 'BBB']
+
+        for key in keys:
+            try:
+                print '  %s: %s' % (key, codes_get(gid, key))
+            except CodesInternalError, err:
+                print 'Error with key="%s" : %s' % (key, err.msg)
+
+        cnt += 1
+
+        # delete handle
+        codes_release(gid)
+
+    # close the file
+    f.close()
+
+
+def main():
+    try:
+        example()
+    except CodesInternalError, err:
+        if VERBOSE:
+            traceback.print_exc(file=sys.stderr)
+        else:
+            print >>sys.stderr, err.msg
+
+        return 1
+
+if __name__ == "__main__":
+    sys.exit(main())
diff --git a/examples/python/gts_get_keys.sh b/examples/python/gts_get_keys.sh
new file mode 100755
index 0000000..9f877ee
--- /dev/null
+++ b/examples/python/gts_get_keys.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+# Copyright 2005-2016 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.sh
+
+
+#Define a common label for all the tmp files
+label="gts_get_keys_test_p"
+
+#Define tmp file
+fTmp=${label}.tmp.txt
+rm -f $fTmp | true
+
+REDIRECT=/dev/null
+
+#Write the key values into a file
+$PYTHON $examples_src/gts_get_keys.py  2> $REDIRECT > $fTmp
+
+#TODO: check the results
+
+#Clean up
+rm -f $fTmp | true
diff --git a/examples/python/include.ctest.sh.in b/examples/python/include.ctest.sh.in
index e3af058..0351a24 100644
--- a/examples/python/include.ctest.sh.in
+++ b/examples/python/include.ctest.sh.in
@@ -17,6 +17,7 @@ export ECCODES_DEFINITION_PATH
 
 tools_dir=@CMAKE_BINARY_DIR@/bin/
 examples_dir=@CMAKE_CURRENT_BINARY_DIR@/
+examples_src=@CMAKE_CURRENT_SOURCE_DIR@/
 
 # use samples from binary dir to test if installation will be correct
 samp_dir="@CMAKE_BINARY_DIR@/share/@PROJECT_NAME@/samples"
diff --git a/examples/python/include.sh b/examples/python/include.sh
index 9da0aa2..caa26df 100644
--- a/examples/python/include.sh
+++ b/examples/python/include.sh
@@ -22,6 +22,7 @@ else
   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
diff --git a/examples/python/keys_iterator_bufr.py b/examples/python/keys_iterator_bufr.py
index cca2b72..b57e0f4 100644
--- a/examples/python/keys_iterator_bufr.py
+++ b/examples/python/keys_iterator_bufr.py
@@ -1,11 +1,12 @@
 #
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 #
 
 import traceback
@@ -13,15 +14,17 @@ import sys
 
 from eccodes import *
 
-INPUT='../../data/gts.bufr'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/gts.bufr'
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
     f = open(INPUT)
 
     while 1:
         bid = bufr_new_from_file(f)
-        if bid is None: break
+        if bid is None:
+            break
 
         iterid = codes_keys_iterator_new(bid)
 
@@ -35,22 +38,23 @@ def example():
 
         while codes_keys_iterator_next(iterid):
             keyname = codes_keys_iterator_get_name(iterid)
-            keyval = codes_get_string(iterid,keyname)
-            print "%s = %s" % (keyname,keyval)
+            keyval = codes_get_string(iterid, keyname)
+            print "%s = %s" % (keyname, keyval)
 
         codes_keys_iterator_delete(iterid)
         codes_release(bid)
 
     f.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/keys_iterator_gts.py b/examples/python/keys_iterator_gts.py
index 8b51704..9744ca0 100644
--- a/examples/python/keys_iterator_gts.py
+++ b/examples/python/keys_iterator_gts.py
@@ -1,11 +1,12 @@
 #
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 #
 
 import traceback
@@ -13,15 +14,17 @@ import sys
 
 from eccodes import *
 
-INPUT='../../data/gts.bufr'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/gts.bufr'
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
     f = open(INPUT)
 
     while 1:
         bid = gts_new_from_file(f)
-        if bid is None: break
+        if bid is None:
+            break
 
         iterid = codes_keys_iterator_new(bid)
 
@@ -32,22 +35,23 @@ def example():
 
         while codes_keys_iterator_next(iterid):
             keyname = codes_keys_iterator_get_name(iterid)
-            keyval = codes_get_string(iterid,keyname)
-            print "%s = %s" % (keyname,keyval)
+            keyval = codes_get_string(iterid, keyname)
+            print "%s = %s" % (keyname, keyval)
 
         codes_keys_iterator_delete(iterid)
         codes_release(bid)
 
     f.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >> sys.stderr,err.msg
+            print >> sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/metar_get_keys.py b/examples/python/metar_get_keys.py
new file mode 100644
index 0000000..9c7584b
--- /dev/null
+++ b/examples/python/metar_get_keys.py
@@ -0,0 +1,75 @@
+# Copyright 2005-2016 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.
+
+#
+# Python implementation: metar_get_keys
+#
+# Description: how to read values of different type of keys from METAR messages
+#
+#
+
+import traceback
+import sys
+
+from eccodes import *
+
+INPUT = '../../data/metar/metar.txt'
+VERBOSE = 1  # verbose error reporting
+
+
+def example():
+
+    # open metar file
+    f = open(INPUT)
+
+    cnt = 0
+
+    # loop for the messages in the file
+    while 1:
+        # get handle for message
+        gid = codes_metar_new_from_file(f)
+        if gid is None:
+            break
+
+        print "message: %s" % cnt
+
+        # ---------------------------------------------
+        # get values for keys holding a single value
+        # ---------------------------------------------
+        keys = ['CCCC', 'latitude', 'longitude', 'dateTime',
+                'elevation', 'temperature', 'dewPointTemperature', 'qnh']
+
+        for key in keys:
+            try:
+                print '  %s: %s' % (key, codes_get(gid, key))
+            except CodesInternalError, err:
+                print 'Error with key="%s" : %s' % (key, err.msg)
+
+        cnt += 1
+
+        # delete handle
+        codes_release(gid)
+
+    # close the file
+    f.close()
+
+
+def main():
+    try:
+        example()
+    except CodesInternalError, err:
+        if VERBOSE:
+            traceback.print_exc(file=sys.stderr)
+        else:
+            print >>sys.stderr, err.msg
+
+        return 1
+
+if __name__ == "__main__":
+    sys.exit(main())
diff --git a/examples/python/metar_get_keys.sh b/examples/python/metar_get_keys.sh
new file mode 100755
index 0000000..d07d2f6
--- /dev/null
+++ b/examples/python/metar_get_keys.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+# Copyright 2005-2016 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.sh
+
+
+#Define a common label for all the tmp files
+label="metar_get_keys_test_p"
+
+#Define tmp file
+fTmp=${label}.tmp.txt
+rm -f $fTmp | true
+
+REDIRECT=/dev/null
+
+#Write the key values into a file
+$PYTHON $examples_src/metar_get_keys.py  2> $REDIRECT > $fTmp
+
+#TODO: check the results
+
+#Clean up
+rm -f $fTmp | true
diff --git a/examples/python/samples.py b/examples/python/samples.py
index 0348514..dbd5f05 100644
--- a/examples/python/samples.py
+++ b/examples/python/samples.py
@@ -1,11 +1,12 @@
 #
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 #
 
 import traceback
@@ -13,29 +14,31 @@ import sys
 
 from eccodes import *
 
-INPUT='../../data/tp_ecmwf.grib'
-OUTPUT='out.samples.grib'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/tp_ecmwf.grib'
+OUTPUT = 'out.samples.grib'
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
     sample_id = codes_new_from_samples("regular_ll_sfc_grib1")
     fin = open(INPUT)
-    fout = open(OUTPUT,'w')
+    fout = open(OUTPUT, 'w')
 
     keys = {
-        'dataDate':20080104,
-        'startStep':0,
-        'endStep':12,
-        'stepType':'accum',
-        'table2Version':2,
-        'indicatorOfParameter':61,
-        'decimalPrecision':2,
-        }
+        'dataDate': 20080104,
+        'startStep': 0,
+        'endStep': 12,
+        'stepType': 'accum',
+        'table2Version': 2,
+        'indicatorOfParameter': 61,
+        'decimalPrecision': 2,
+    }
 
     prev_vals = None
     while 1:
         gid = codes_grib_new_from_file(fin)
-        if gid is None: break
+        if gid is None:
+            break
 
         curr_vals = codes_get_values(gid)
 
@@ -45,7 +48,7 @@ def example():
             try:
                 # works with NumPy
                 result = curr_vals - prev_vals
-            except TypeError: # but not with array
+            except TypeError:  # but not with array
                 result = curr_vals
                 for i in range(len(result)):
                     result[i] -= prev_vals[i]
@@ -57,25 +60,26 @@ def example():
         clone_id = codes_clone(sample_id)
 
         for key in keys:
-            codes_set(clone_id,key,keys[key])
+            codes_set(clone_id, key, keys[key])
 
-        codes_set_values(clone_id,result * 1000)
+        codes_set_values(clone_id, result * 1000)
 
-        codes_write(clone_id,fout)
+        codes_write(clone_id, fout)
 
         codes_release(gid)
 
     fin.close()
     fout.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/samples.sh b/examples/python/samples.sh
index ff939be..c73154c 100755
--- a/examples/python/samples.sh
+++ b/examples/python/samples.sh
@@ -3,5 +3,5 @@
 . ./include.sh
 
 REDIRECT=/dev/null
-$PYTHON samples.py 2> $REDIRECT > $REDIRECT
+$PYTHON $examples_src/samples.py 2> $REDIRECT > $REDIRECT
 rm -f out.samples.grib || true
diff --git a/examples/python/set_missing.py b/examples/python/set_missing.py
index 89a1fd9..675cbc9 100644
--- a/examples/python/set_missing.py
+++ b/examples/python/set_missing.py
@@ -1,11 +1,12 @@
 #
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
+# 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.
 #
 
 import traceback
@@ -13,40 +14,42 @@ import sys
 
 from eccodes import *
 
-INPUT='../../data/tigge/tigge_ecmf_pl_t.grib'
-OUTPUT='out.set_missing.grib'
-VERBOSE=1 # verbose error reporting
+INPUT = '../../data/tigge/tigge_ecmf_pl_t.grib'
+OUTPUT = 'out.set_missing.grib'
+VERBOSE = 1  # verbose error reporting
+
 
 def example():
     fin = open(INPUT)
-    fout = open(OUTPUT,'w')
+    fout = open(OUTPUT, 'w')
 
     gid = codes_grib_new_from_file(fin)
 
-    codes_set_long(gid, "scaledValueOfFirstFixedSurface", 15);
+    codes_set_long(gid, "scaledValueOfFirstFixedSurface", 15)
     codes_set_long(gid, "scaleFactorOfFirstFixedSurface", 1)
-    level=codes_get_double(gid, "level")
-    assert( level == 1.5 )
+    level = codes_get_double(gid, "level")
+    assert(level == 1.5)
 
     # set type of level to surface
-    codes_set(gid,'typeOfFirstFixedSurface','sfc')
-    codes_set_missing(gid,'scaleFactorOfFirstFixedSurface')
-    codes_set_missing(gid,'scaledValueOfFirstFixedSurface')
+    codes_set(gid, 'typeOfFirstFixedSurface', 'sfc')
+    codes_set_missing(gid, 'scaleFactorOfFirstFixedSurface')
+    codes_set_missing(gid, 'scaledValueOfFirstFixedSurface')
 
-    codes_write(gid,fout)
+    codes_write(gid, fout)
 
     codes_release(gid)
     fin.close()
     fout.close()
 
+
 def main():
     try:
         example()
-    except CodesInternalError,err:
+    except CodesInternalError, err:
         if VERBOSE:
             traceback.print_exc(file=sys.stderr)
         else:
-            print >>sys.stderr,err.msg
+            print >>sys.stderr, err.msg
 
         return 1
 
diff --git a/examples/python/set_missing.sh b/examples/python/set_missing.sh
index 9775754..65f85c9 100755
--- a/examples/python/set_missing.sh
+++ b/examples/python/set_missing.sh
@@ -3,5 +3,5 @@
 . ./include.sh
 
 REDIRECT=/dev/null
-$PYTHON set_missing.py 2> $REDIRECT > $REDIRECT
+$PYTHON $examples_src/set_missing.py 2> $REDIRECT > $REDIRECT
 rm -f out.set_missing.grib || true
diff --git a/examples/set.c b/examples/set.c
index b55ed28..93fad8e 100644
--- a/examples/set.c
+++ b/examples/set.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/set_bitmap.c b/examples/set_bitmap.c
index 8c0934c..9664c60 100644
--- a/examples/set_bitmap.c
+++ b/examples/set_bitmap.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/set_fortran.F b/examples/set_fortran.F
index be9777d..caf50ac 100644
--- a/examples/set_fortran.F
+++ b/examples/set_fortran.F
@@ -1,4 +1,4 @@
-C Copyright 2005-2015 ECMWF.
+C Copyright 2005-2016 ECMWF.
 C
 C This software is licensed under the terms of the Apache Licence Version 2.0
 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/examples/set_pv.c b/examples/set_pv.c
index 96e8d43..5dcf264 100644
--- a/examples/set_pv.c
+++ b/examples/set_pv.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/examples/set_pv_fortran.F b/examples/set_pv_fortran.F
index 8701bd6..0a29b5c 100644
--- a/examples/set_pv_fortran.F
+++ b/examples/set_pv_fortran.F
@@ -1,4 +1,4 @@
-C Copyright 2005-2015 ECMWF.
+C Copyright 2005-2016 ECMWF.
 C
 C This software is licensed under the terms of the Apache Licence Version 2.0
 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/fortran/.deps/grib_fortran.Plo b/fortran/.deps/grib_fortran.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/fortran/.deps/grib_fortran.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/fortran/CMakeLists.txt b/fortran/CMakeLists.txt
index a571a44..657c1de 100644
--- a/fortran/CMakeLists.txt
+++ b/fortran/CMakeLists.txt
@@ -1,4 +1,4 @@
-if( EC_HAVE_FORTRAN )
+if( HAVE_FORTRAN )
 
     set( srcdir ${CMAKE_CURRENT_SOURCE_DIR} )
     set( bindir ${CMAKE_CURRENT_BINARY_DIR} )
diff --git a/fortran/Makefile b/fortran/Makefile
deleted file mode 100644
index 43a993e..0000000
--- a/fortran/Makefile
+++ /dev/null
@@ -1,809 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# fortran/Makefile.  Generated from Makefile.in by configure.
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-# See http://www.delorie.com/gnu/docs/automake/automake_48.html
-
-
-
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/eccodes
-pkgincludedir = $(includedir)/eccodes
-pkglibdir = $(libdir)/eccodes
-pkglibexecdir = $(libexecdir)/eccodes
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = x86_64-suse-linux-gnu
-host_triplet = x86_64-suse-linux-gnu
-DIST_COMMON = $(srcdir)/extrules.am $(srcdir)/Makefile.in \
-	$(srcdir)/Makefile.am $(top_srcdir)/config/depcomp
-subdir = fortran
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-libeccodes_f90_la_LIBADD =
-am_libeccodes_f90_la_OBJECTS = grib_fortran.lo grib_f90.lo \
-	eccodes_f90.lo
-libeccodes_f90_la_OBJECTS = $(am_libeccodes_f90_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-libeccodes_f90_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \
-	$(AM_FCFLAGS) $(FCFLAGS) $(libeccodes_f90_la_LDFLAGS) \
-	$(LDFLAGS) -o $@
-AM_V_P = $(am__v_P_$(V))
-am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-LTFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-AM_V_FC = $(am__v_FC_$(V))
-am__v_FC_ = $(am__v_FC_$(AM_DEFAULT_VERBOSITY))
-am__v_FC_0 = @echo "  FC      " $@;
-am__v_FC_1 = 
-FCLD = $(FC)
-FCLINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_FCLD = $(am__v_FCLD_$(V))
-am__v_FCLD_ = $(am__v_FCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_FCLD_0 = @echo "  FCLD    " $@;
-am__v_FCLD_1 = 
-SOURCES = $(libeccodes_f90_la_SOURCES)
-DIST_SOURCES = $(libeccodes_f90_la_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-HEADERS = $(nodist_include_HEADERS)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing aclocal-1.13
-AEC_DIR = 
-AMTAR = $${TAR-tar}
-AM_DEFAULT_VERBOSITY = 1
-AR = ar
-AUTOCONF = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoconf
-AUTOHEADER = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoheader
-AUTOMAKE = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing automake-1.13
-AWK = gawk
-CC = gcc
-CCDEPMODE = depmode=gcc3
-CCSDS_TEST = 
-CFLAGS = -g -O2
-CPP = gcc -E
-CPPFLAGS = 
-CYGPATH_W = echo
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DEVEL_RULES = dummy.am
-DLLTOOL = false
-DSYMUTIL = 
-DUMPBIN = 
-ECCODES_AGE = 0
-ECCODES_CURRENT = 1
-ECCODES_DEFINITION_PATH = ${datarootdir}/eccodes/definitions
-ECCODES_MAIN_VERSION = 0.10.0
-ECCODES_MAJOR_VERSION = 0
-ECCODES_MINOR_VERSION = 10
-ECCODES_PATCH_VERSION = 0
-ECCODES_REVISION = 0
-ECCODES_SAMPLES_PATH = ${datarootdir}/eccodes/samples
-ECCODES_VERSION_STR = 0.10.0
-ECHO_C = 
-ECHO_N = -n
-ECHO_T = 
-EGREP = /usr/bin/grep -E
-EMOS_LIB = 
-EXEEXT = 
-F77 = gfortran
-F90_CHECK = examples/F90
-F90_MODULE_FLAG = -I
-FC = gfortran
-FCFLAGS = -g -O2
-FFLAGS = -g -O2
-FGREP = /usr/bin/grep -F
-FORTRAN_MOD = fortran
-GREP = /usr/bin/grep
-GRIB_API_INC = /tmp/masn/git/grib_api/eccodes/src
-GRIB_API_LIB = /tmp/masn/git/grib_api/eccodes/src/grib_api.a
-GRIB_DEVEL = 0
-IFS_SAMPLES_DIR = ${datarootdir}/eccodes/ifs_samples
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-JASPER_DIR = system
-JPEG_TEST = jpeg.sh
-LD = /usr/x86_64-suse-linux/bin/ld -m elf_x86_64
-LDFLAGS = 
-LEX = flex
-LEXLIB = -lfl
-LEX_OUTPUT_ROOT = lex.yy
-LIBOBJS = 
-LIBS = -lm -ljasper 
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LIBTOOL_DEPS = config/ltmain.sh
-LIB_AEC = 
-LIB_JASPER = -ljasper
-LIB_OPENJPEG = 
-LIB_PNG = 
-LINUX_DISTRIBUTION_NAME = openSUSE 13.1 (x86_64)
-LINUX_DISTRIBUTION_VERSION = 
-LIPO = 
-LN_S = ln -s
-LTLIBOBJS = 
-MAKEINFO = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing makeinfo
-MANIFEST_TOOL = :
-MKDIR_P = /usr/bin/mkdir -p
-NETCDF_LDFLAGS = 
-NM = /usr/bin/nm -B
-NMEDIT = 
-NUMPY_INCLUDE = /usr/local/apps/python/2.7.8-01/lib/python2.7/site-packages/numpy/core/include
-OBJDUMP = objdump
-OBJEXT = o
-OPENJPEG_DIR = system
-OTOOL = 
-OTOOL64 = 
-PACKAGE = eccodes
-PACKAGE_BUGREPORT = Software.Support at ecmwf.int
-PACKAGE_NAME = eccodes
-PACKAGE_STRING = eccodes  
-PACKAGE_TARNAME = eccodes
-PACKAGE_URL = 
-PACKAGE_VERSION = 0.10.0
-PATH_SEPARATOR = :
-PERL = 
-PERLDIR = perl
-PERL_INSTALL_OPTIONS = LIB=NONE/perl
-PERL_MAKE_OPTIONS = 
-PYTHON = /usr/local/apps/python/2.7.8-01/bin/python
-PYTHON_CFLAGS = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7 -fno-strict-aliasing -O3 -fpic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
-PYTHON_CHECK = examples/python
-PYTHON_CONFIG = /usr/local/apps/python/2.7.8-01/bin/python2.7-config
-PYTHON_DATA_HANDLER = numpy
-PYTHON_EXEC_PREFIX = ${exec_prefix}
-PYTHON_INCLUDES = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7
-PYTHON_LDFLAGS = -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic
-PYTHON_LIBS = -lpthread -ldl -lutil -lm -lpython2.7
-PYTHON_PLATFORM = linux2
-PYTHON_PREFIX = ${prefix}
-PYTHON_VERSION = 2.7
-RANLIB = ranlib
-RM = rm -f
-RPM_CONFIGURE_ARGS =  '--enable-python' '--disable-shared' 'CC=gcc' 'F77=gfortran' 'FC=gfortran'
-RPM_HOST_CPU = x86_64
-RPM_HOST_OS = linux-gnu
-RPM_HOST_VENDOR = suse
-RPM_RELEASE = 1
-SED = /usr/bin/sed
-SET_MAKE = 
-SHELL = /bin/sh
-STRIP = strip
-VERSION = 0.10.0
-WARN_PEDANTIC = -pedantic -Wall
-WERROR = 
-YACC = bison -y
-YFLAGS = 
-abs_builddir = /tmp/masn/git/grib_api/eccodes/fortran
-abs_srcdir = /tmp/masn/git/grib_api/eccodes/fortran
-abs_top_builddir = /tmp/masn/git/grib_api/eccodes
-abs_top_srcdir = /tmp/masn/git/grib_api/eccodes
-ac_ct_AR = ar
-ac_ct_CC = gcc
-ac_ct_DUMPBIN = 
-ac_ct_F77 = 
-ac_ct_FC = 
-am__include = include
-am__leading_dot = .
-am__quote = 
-am__tar = $${TAR-tar} chof - "$$tardir"
-am__untar = $${TAR-tar} xf -
-bindir = ${exec_prefix}/bin
-build = x86_64-suse-linux-gnu
-build_alias = 
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = suse
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-host = x86_64-suse-linux-gnu
-host_alias = 
-host_cpu = x86_64
-host_os = linux-gnu
-host_vendor = suse
-htmldir = ${docdir}
-includedir = ${prefix}/include
-infodir = ${datarootdir}/info
-install_sh = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localedir = ${datarootdir}/locale
-localstatedir = ${prefix}/var
-mandir = ${datarootdir}/man
-mkdir_p = $(MKDIR_P)
-oldincludedir = /usr/include
-pdfdir = ${docdir}
-pkgpyexecdir = ${pyexecdir}/eccodes
-pkgpythondir = ${pythondir}/eccodes
-prefix = /usr/local
-program_transform_name = s,x,x,
-psdir = ${docdir}
-pyexecdir = ${exec_prefix}/lib/python2.7/site-packages
-pythondir = ${prefix}/lib/python2.7/site-packages
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-srcdir = .
-sysconfdir = ${prefix}/etc
-target_alias = 
-top_build_prefix = ../
-top_builddir = ..
-top_srcdir = ..
-AM_CFLAGS = -pedantic -Wall
-lib_LTLIBRARIES = libeccodes_f90.la
-libeccodes_f90_la_SOURCES = grib_fortran.c grib_f90.f90 eccodes_f90.f90
-libeccodes_f90_la_DEPENDENCIES = $(top_builddir)/src/libeccodes.la grib_api_externals.h grib_api_visibility.h grib_api_constants.h grib_kinds.h
-libeccodes_f90_la_LDFLAGS = -version-info $(ECCODES_CURRENT):$(ECCODES_REVISION):$(ECCODES_AGE)
-libeccodes_fortran_prototypes = grib_fortran.c
-nodist_include_HEADERS = grib_api.mod eccodes.mod
-#nodist_include_HEADERS = GRIB_API.mod ECCODES.mod
-
-# set the include path
-INCLUDES = -I$(top_builddir)/src
-CLEANFILES = libeccodes_f90.la grib_f90.f90 eccodes_f90.f90 *.mod grib_types grib_kinds.h same_int_long same_int_size_t
-
-#noinst_HEADERS = 
-EXTRA_DIST = grib_fortran_prototypes.h grib_api_constants.h grib_api_externals.h \
-            grib_api_visibility.h grib_types.f90 create_grib_f90.sh \
-            grib_f90_head.f90 grib_f90_tail.f90 grib_f90_int.f90 grib_f90_long_int.f90 \
-            grib_f90_int_size_t.f90 grib_f90_long_size_t.f90 \
-            \
-            eccodes_f90_head.f90 eccodes_f90_tail.f90 eccodes_f90_int.f90 eccodes_f90_long_int.f90 \
-            eccodes_f90_int_size_t.f90 eccodes_f90_long_size_t.f90 \
-            same_int_long.f90 same_int_size_t.f90 grib_fortran_kinds.c \
-            CMakeLists.txt
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .f90 .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/extrules.am $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu fortran/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu fortran/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-$(srcdir)/extrules.am:
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
-	}
-
-uninstall-libLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
-	done
-
-clean-libLTLIBRARIES:
-	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-libeccodes_f90.la: $(libeccodes_f90_la_OBJECTS) $(libeccodes_f90_la_DEPENDENCIES) $(EXTRA_libeccodes_f90_la_DEPENDENCIES) 
-	$(AM_V_FCLD)$(libeccodes_f90_la_LINK) -rpath $(libdir) $(libeccodes_f90_la_OBJECTS) $(libeccodes_f90_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-include ./$(DEPDIR)/grib_fortran.Plo
-
-.c.o:
-	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-#	$(AM_V_CC)source='$<' object='$@' libtool=no \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(COMPILE) -c $<
-
-.c.obj:
-	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-#	$(AM_V_CC)source='$<' object='$@' libtool=no \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-#	$(AM_V_CC)source='$<' object='$@' libtool=yes \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $<
-
-.f90.o:
-	$(AM_V_FC)$(FCCOMPILE) -c -o $@ $<
-
-.f90.obj:
-	$(AM_V_FC)$(FCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.f90.lo:
-	$(AM_V_FC)$(LTFCCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-nodist_includeHEADERS: $(nodist_include_HEADERS)
-	@$(NORMAL_INSTALL)
-	@list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
-	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
-	done
-
-uninstall-nodist_includeHEADERS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
-installdirs:
-	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-nodist_includeHEADERS
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLTLIBRARIES
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-libLTLIBRARIES uninstall-nodist_includeHEADERS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-libLTLIBRARIES install-man \
-	install-nodist_includeHEADERS install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \
-	uninstall-nodist_includeHEADERS
-
-grib_api.mod: grib_f90.o
-eccodes.mod: eccodes_f90.o
-#GRIB_API.mod: grib_f90.o
-#ECCODES.mod: eccodes_f90.o
-
-grib_f90.f90: grib_f90_head.f90 grib_f90_tail.f90 grib_f90_int.f90 grib_f90_long_int.f90 grib_f90_int_size_t.f90 grib_f90_long_size_t.f90 same_int_long same_int_size_t grib_kinds.h
-	./create_grib_f90.sh
-
-eccodes_f90.f90: eccodes_f90_head.f90 eccodes_f90_tail.f90 eccodes_f90_int.f90 eccodes_f90_long_int.f90 eccodes_f90_int_size_t.f90 eccodes_f90_long_size_t.f90 same_int_long same_int_size_t grib_kinds.h
-	./create_grib_f90.sh
-
-grib_f90.o : grib_kinds.h
-
-eccodes_f90.o : grib_kinds.h
-
-grib_kinds.h: grib_types
-	./grib_types > grib_kinds.h
-
-grib_types: grib_types.o grib_fortran_kinds.o
-	$(FC) $(FCFLAGS) -o grib_types grib_types.o grib_fortran_kinds.o
-
-same_int_long: same_int_long.o grib_fortran_kinds.o
-	$(FC) $(FCFLAGS) -o same_int_long same_int_long.o grib_fortran_kinds.o
-
-same_int_size_t: same_int_size_t.o grib_fortran_kinds.o
-	$(FC) $(FCFLAGS) -o same_int_size_t same_int_size_t.o grib_fortran_kinds.o
-proto:;-mkptypes -A $(libgrib_api_fortran_prototypes) > temp && mv temp grib_fortran_prototypes.h; rm -f temp
-
-# Note: hooks are always executed after the main rule's work is done
-#install-data-hook:
-#	( some commands in here .... )
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/fortran/create_grib_f90.sh b/fortran/create_grib_f90.sh
index 06bb220..358305e 100755
--- a/fortran/create_grib_f90.sh
+++ b/fortran/create_grib_f90.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/fortran/eccodes_constants.h b/fortran/eccodes_constants.h
index 5b23bf5..94daa66 100644
--- a/fortran/eccodes_constants.h
+++ b/fortran/eccodes_constants.h
@@ -1,3 +1,5 @@
+  integer, parameter,public :: CODES_OUT_OF_RANGE                                  = -65
+  integer, parameter,public :: CODES_UNSUPPORTED_EDITION                           = -64
   integer, parameter,public :: CODES_ATTRIBUTE_NOT_FOUND                           = -63
   integer, parameter,public :: CODES_TOO_MANY_ATTRIBUTES                           = -62
   integer, parameter,public :: CODES_ATTRIBUTE_CLASH                               = -61
diff --git a/fortran/eccodes_f77.h b/fortran/eccodes_f77.h
index d925149..0c90881 100644
--- a/fortran/eccodes_f77.h
+++ b/fortran/eccodes_f77.h
@@ -67,8 +67,6 @@
       external grib_get_string
       integer grib_is_missing
       external grib_is_missing
-      integer grib_is_defined
-      external grib_is_defined
       integer grib_set_string
       external grib_copy_namespace
       integer grib_copy_namespace
diff --git a/fortran/eccodes_f90_head.f90 b/fortran/eccodes_f90_head.f90
index 06cb786..e65907e 100644
--- a/fortran/eccodes_f90_head.f90
+++ b/fortran/eccodes_f90_head.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
@@ -17,6 +17,9 @@ module eccodes
   include "eccodes_constants.h"
   include "eccodes_visibility.h"
 
+  real(8),    parameter,public :: CODES_MISSING_DOUBLE = -1.D+100
+  integer(4), parameter,public :: CODES_MISSING_LONG   = 2147483647
+
   integer, parameter,public :: CODES_PRODUCT_ANY  = 0
   integer, parameter,public :: CODES_PRODUCT_GRIB = 1
   integer, parameter,public :: CODES_PRODUCT_BUFR = 2
diff --git a/fortran/eccodes_f90_int.f90 b/fortran/eccodes_f90_int.f90
index fa8f6f6..2a63abf 100644
--- a/fortran/eccodes_f90_int.f90
+++ b/fortran/eccodes_f90_int.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/fortran/eccodes_f90_int_size_t.f90 b/fortran/eccodes_f90_int_size_t.f90
index b638aad..729546a 100644
--- a/fortran/eccodes_f90_int_size_t.f90
+++ b/fortran/eccodes_f90_int_size_t.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/fortran/eccodes_f90_long_int.f90 b/fortran/eccodes_f90_long_int.f90
index 976c8a4..4c8fdd4 100644
--- a/fortran/eccodes_f90_long_int.f90
+++ b/fortran/eccodes_f90_long_int.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/fortran/eccodes_f90_long_size_t.f90 b/fortran/eccodes_f90_long_size_t.f90
index c73a4b2..22f7de7 100644
--- a/fortran/eccodes_f90_long_size_t.f90
+++ b/fortran/eccodes_f90_long_size_t.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/fortran/eccodes_f90_tail.f90 b/fortran/eccodes_f90_tail.f90
index 95694bf..f516a92 100644
--- a/fortran/eccodes_f90_tail.f90
+++ b/fortran/eccodes_f90_tail.f90
@@ -832,7 +832,7 @@ end subroutine codes_get_string
 subroutine codes_get_int_array ( gribid, key, value, status )
     integer(kind=kindOfInt),               intent(in)  :: gribid
     character(len=*),      intent(in)  :: key
-    integer(kind=kindOfInt), dimension(:),allocatable,intent(out) :: value
+    integer(kind=kindOfInt), dimension(:),allocatable,intent(inout) :: value
     integer(kind=kindOfInt),optional, intent(out)      :: status
     integer(kind=kindOfInt)                            :: iret
     integer(kind=kindOfInt)                            :: nb_values
@@ -844,7 +844,7 @@ end subroutine codes_get_int_array
 subroutine codes_get_long_array ( gribid, key, value, status )
     integer(kind=kindOfInt),               intent(in)  :: gribid
     character(len=*),      intent(in)  :: key
-    integer(kind=kindOfLong), dimension(:),allocatable,intent(out) :: value
+    integer(kind=kindOfLong), dimension(:),allocatable,intent(inout) :: value
     integer(kind=kindOfInt),optional, intent(out)      :: status
     integer(kind=kindOfInt)                            :: iret
     integer(kind=kindOfInt)                            :: nb_values
@@ -856,7 +856,7 @@ end subroutine codes_get_long_array
 subroutine codes_get_byte_array ( gribid, key, value, length, status )
     integer(kind=kindOfInt),               intent(in)  :: gribid
     character(len=*),                      intent(in)  :: key
-    character(len=1),        dimension(:), intent(out) :: value
+    character(len=1),        dimension(:), intent(inout) :: value
     integer(kind=kindOfInt), optional,     intent(out) :: length
     integer(kind=kindOfInt), optional,     intent(out) :: status
     integer(kind=kindOfInt)                            :: iret
@@ -870,7 +870,7 @@ end subroutine codes_get_byte_array
 subroutine codes_get_real4_array ( gribid, key, value, status)
     integer(kind=kindOfInt),                 intent(in)  :: gribid
     character(len=*),                        intent(in)  :: key
-    real(kind = kindOfFloat), dimension(:),allocatable, intent(out) :: value
+    real(kind = kindOfFloat), dimension(:),allocatable, intent(inout) :: value
     integer(kind=kindOfInt),optional,        intent(out) :: status
     integer(kind=kindOfInt)                              :: iret
     integer(kind=kindOfInt)                              :: nb_values
@@ -882,7 +882,7 @@ end subroutine codes_get_real4_array
 subroutine codes_get_real8_array ( gribid, key, value, status )
     integer(kind=kindOfInt),                   intent(in)  :: gribid
     character(len=*),                          intent(in)  :: key
-    real(kind = kindOfDouble), dimension(:),allocatable,  intent(out) :: value
+    real(kind = kindOfDouble), dimension(:),allocatable, intent(inout) :: value
     integer(kind=kindOfInt),optional,          intent(out) :: status
     integer(kind=kindOfInt)                                :: iret
     integer(kind=kindOfInt)                                :: nb_values
diff --git a/fortran/grib_api_constants.h b/fortran/grib_api_constants.h
index f74d7f4..67d9415 100644
--- a/fortran/grib_api_constants.h
+++ b/fortran/grib_api_constants.h
@@ -1,3 +1,5 @@
+  integer, parameter,public :: GRIB_OUT_OF_RANGE                                  = -65
+  integer, parameter,public :: GRIB_UNSUPPORTED_EDITION                           = -64
   integer, parameter,public :: GRIB_ATTRIBUTE_NOT_FOUND                           = -63
   integer, parameter,public :: GRIB_TOO_MANY_ATTRIBUTES                           = -62
   integer, parameter,public :: GRIB_ATTRIBUTE_CLASH                               = -61
diff --git a/fortran/grib_f77.c b/fortran/grib_f77.c
index 99528d3..3f246e4 100644
--- a/fortran/grib_f77.c
+++ b/fortran/grib_f77.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/fortran/grib_f90_head.f90 b/fortran/grib_f90_head.f90
index 7df844f..a56af1b 100644
--- a/fortran/grib_f90_head.f90
+++ b/fortran/grib_f90_head.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
@@ -18,6 +18,10 @@ module grib_api
   include "grib_api_externals.h"
   include "grib_api_visibility.h"
 
+  real(8),    parameter,public :: GRIB_MISSING_DOUBLE = -1.D+100
+  integer(4), parameter,public :: GRIB_MISSING_LONG   = 2147483647
+
+
   !> Create a new message in memory from an integer or character array containting the coded message.
   !>
   !> The message can be accessed through its gribid and it will be available\n
diff --git a/fortran/grib_f90_int.f90 b/fortran/grib_f90_int.f90
index cf69bec..4e2078e 100644
--- a/fortran/grib_f90_int.f90
+++ b/fortran/grib_f90_int.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/fortran/grib_f90_int_size_t.f90 b/fortran/grib_f90_int_size_t.f90
index fb0c695..b2ad367 100644
--- a/fortran/grib_f90_int_size_t.f90
+++ b/fortran/grib_f90_int_size_t.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/fortran/grib_f90_long_int.f90 b/fortran/grib_f90_long_int.f90
index 1544b9d..c7f360a 100644
--- a/fortran/grib_f90_long_int.f90
+++ b/fortran/grib_f90_long_int.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/fortran/grib_f90_long_size_t.f90 b/fortran/grib_f90_long_size_t.f90
index 3b74b4d..08fea04 100644
--- a/fortran/grib_f90_long_size_t.f90
+++ b/fortran/grib_f90_long_size_t.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/fortran/grib_f90_tail.f90 b/fortran/grib_f90_tail.f90
index 513df3e..adaa4bd 100644
--- a/fortran/grib_f90_tail.f90
+++ b/fortran/grib_f90_tail.f90
@@ -2049,7 +2049,7 @@
   subroutine grib_get_int_array ( gribid, key, value, status )
       integer(kind=kindOfInt),               intent(in)  :: gribid
       character(len=*),      intent(in)  :: key
-      integer(kind=kindOfInt), dimension(:),allocatable,intent(out) :: value
+      integer(kind=kindOfInt), dimension(:),allocatable,intent(inout) :: value
       integer(kind=kindOfInt),optional, intent(out)      :: status
 
       integer(kind=kindOfInt)                            :: iret
@@ -2067,7 +2067,9 @@
         endif
         return
       endif
-      if (.not.allocated(value)) allocate(value(nb_values))
+      if (allocated(value) .eqv. .false.) then
+        allocate(value(nb_values))
+      end if
       size_value=size(value)
       iret=grib_f_get_int_array ( gribid, key, value , nb_values )
       if (iret==0 .and. nb_values==1 .and. size_value/=1) then
@@ -2098,34 +2100,36 @@
   subroutine grib_get_long_array ( gribid, key, value, status )
     integer(kind=kindOfInt),               intent(in)  :: gribid
     character(len=*),      intent(in)  :: key
-    integer(kind = kindOfLong),dimension(:),allocatable,intent(out) :: value
+    integer(kind = kindOfLong),dimension(:),allocatable,intent(inout) :: value
     integer(kind=kindOfInt),optional, intent(out)      :: status
     integer(kind=kindOfInt)                            :: iret
     integer(kind=kindOfInt)                            :: nb_values
     integer(kind=kindOfInt)                            :: size_value
     integer(kind=kindOfInt)                            :: i
 
-      iret=grib_f_get_size_int(gribid,key,nb_values)
-      if (iret /= 0) then
-        call grib_f_write_on_fail(gribid)
-        if (present(status)) then
-           status = iret
-        else
-           call grib_check(iret,'grib_get',key)
-        endif
-        return
-      endif
-      if (.not.allocated(value)) allocate(value(nb_values))
-      size_value=size(value)
-      iret=grib_f_get_long_array ( gribid, key, value , nb_values )
-      if (iret==0 .and. nb_values==1 .and. size_value/=1) then
-        do i=2,size_value
-          value(i)=value(1)
-        enddo
+    iret=grib_f_get_size_int(gribid,key,nb_values)
+    if (iret /= 0) then
+      call grib_f_write_on_fail(gribid)
+      if (present(status)) then
+         status = iret
+      else
+         call grib_check(iret,'grib_get',key)
       endif
-	  if (iret /= 0) then
-	    call grib_f_write_on_fail(gribid)
-	  endif
+      return
+    endif
+    if (allocated(value) .eqv. .false.) then
+      allocate(value(nb_values))
+    end if
+    size_value=size(value)
+    iret=grib_f_get_long_array ( gribid, key, value , nb_values )
+    if (iret==0 .and. nb_values==1 .and. size_value/=1) then
+      do i=2,size_value
+        value(i)=value(1)
+      enddo
+    endif
+    if (iret /= 0) then
+	  call grib_f_write_on_fail(gribid)
+	endif
     if (present(status)) then
       status = iret
     else
@@ -2181,10 +2185,10 @@
   !> @param key     key name
   !> @param value       real(4) array value
   !> @param status       GRIB_SUCCESS if OK, integer value on error
-  subroutine grib_get_real4_array ( gribid, key, value, status)
+  subroutine grib_get_real4_array ( gribid, key, value, status )
       integer(kind=kindOfInt),                 intent(in)  :: gribid
       character(len=*),                        intent(in)  :: key
-      real(kind = kindOfFloat), dimension(:),allocatable,intent(out) :: value
+      real(kind = kindOfFloat), dimension(:),allocatable,intent(inout) :: value
       integer(kind=kindOfInt),optional,        intent(out) :: status
       integer(kind=kindOfInt)                              :: iret
       integer(kind=kindOfInt)                              :: nb_values
@@ -2201,7 +2205,9 @@
         endif
         return
       endif
-      if (.not.allocated(value)) allocate(value(nb_values))
+      if (allocated(value) .eqv. .false.) then
+        allocate(value(nb_values))
+      end if
       size_value=size(value)
       iret=grib_f_get_real4_array ( gribid, key, value , nb_values )
       if (iret==0 .and. nb_values==1 .and. size_value/=1) then
@@ -2232,7 +2238,7 @@
   subroutine grib_get_real8_array ( gribid, key, value, status )
       integer(kind=kindOfInt),                   intent(in)  :: gribid
       character(len=*),                          intent(in)  :: key
-      real(kind = kindOfDouble),dimension(:),allocatable,intent(out) :: value
+      real(kind = kindOfDouble),dimension(:),allocatable,intent(inout) :: value
       integer(kind=kindOfInt),optional,          intent(out) :: status
       integer(kind=kindOfInt)                                :: iret
       integer(kind=kindOfInt)                                :: nb_values
@@ -2249,7 +2255,9 @@
         endif
         return
       endif
-      if (.not.allocated(value)) allocate(value(nb_values))
+      if (allocated(value) .eqv. .false.) then
+        allocate(value(nb_values))
+      end if
       size_value=size(value)
       iret=grib_f_get_real8_array ( gribid, key, value, nb_values )
       if (iret==0 .and. nb_values==1 .and. size_value/=1) then
diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c
index e262a93..532264b 100644
--- a/fortran/grib_fortran.c
+++ b/fortran/grib_fortran.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -32,28 +32,48 @@
 #define MIN_FILE_ID 50000
 
 #if GRIB_PTHREADS
-static pthread_once_t once  = PTHREAD_ONCE_INIT;
-static pthread_mutex_t handle_mutex = PTHREAD_MUTEX_INITIALIZER;
-static pthread_mutex_t index_mutex = PTHREAD_MUTEX_INITIALIZER;
-static pthread_mutex_t multi_handle_mutex = PTHREAD_MUTEX_INITIALIZER;
-static pthread_mutex_t iterator_mutex = PTHREAD_MUTEX_INITIALIZER;
-static pthread_mutex_t keys_iterator_mutex = PTHREAD_MUTEX_INITIALIZER;
-
-
-static void init() {
-  pthread_mutexattr_t attr;
-
-  pthread_mutexattr_init(&attr);
-  pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
-  pthread_mutex_init(&handle_mutex,&attr);
-  pthread_mutex_init(&index_mutex,&attr);
-  pthread_mutex_init(&multi_handle_mutex,&attr);
-  pthread_mutex_init(&iterator_mutex,&attr);
-  pthread_mutex_init(&keys_iterator_mutex,&attr);
-  pthread_mutexattr_destroy(&attr);
-
-}
-
+ static pthread_once_t once  = PTHREAD_ONCE_INIT;
+ static pthread_mutex_t handle_mutex = PTHREAD_MUTEX_INITIALIZER;
+ static pthread_mutex_t index_mutex = PTHREAD_MUTEX_INITIALIZER;
+ static pthread_mutex_t multi_handle_mutex = PTHREAD_MUTEX_INITIALIZER;
+ static pthread_mutex_t iterator_mutex = PTHREAD_MUTEX_INITIALIZER;
+ static pthread_mutex_t keys_iterator_mutex = PTHREAD_MUTEX_INITIALIZER;
+
+ static void init() {
+   pthread_mutexattr_t attr;
+
+   pthread_mutexattr_init(&attr);
+   pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
+   pthread_mutex_init(&handle_mutex,&attr);
+   pthread_mutex_init(&index_mutex,&attr);
+   pthread_mutex_init(&multi_handle_mutex,&attr);
+   pthread_mutex_init(&iterator_mutex,&attr);
+   pthread_mutex_init(&keys_iterator_mutex,&attr);
+   pthread_mutexattr_destroy(&attr);
+ }
+#elif GRIB_OMP_THREADS
+ static int once = 0;
+ static omp_nest_lock_t handle_mutex;
+ static omp_nest_lock_t index_mutex;
+ static omp_nest_lock_t multi_handle_mutex;
+ static omp_nest_lock_t iterator_mutex;
+ static omp_nest_lock_t keys_iterator_mutex;
+
+ static void init()
+ {
+    GRIB_OMP_CRITICAL(lock_fortran)
+    {
+        if (once == 0)
+        {
+            omp_init_nest_lock(&handle_mutex);
+            omp_init_nest_lock(&index_mutex);
+            omp_init_nest_lock(&multi_handle_mutex);
+            omp_init_nest_lock(&iterator_mutex);
+            omp_init_nest_lock(&keys_iterator_mutex);
+            once = 1;
+        }
+    }
+ }
 #endif
 
 int GRIB_NULL=-1;
@@ -350,30 +370,29 @@ static void _push_multi_handle(grib_multi_handle *h,int *gid){
 }
 
 static void push_handle(grib_handle *h,int *gid){
-    GRIB_PTHREAD_ONCE(&once,&init)
-          GRIB_MUTEX_LOCK(&handle_mutex)
-          _push_handle(h,gid);
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
+    GRIB_MUTEX_LOCK(&handle_mutex)
+    _push_handle(h,gid);
     GRIB_MUTEX_UNLOCK(&handle_mutex)
     return;
 }
 
 static void push_index(grib_index *h,int *gid){
-    GRIB_PTHREAD_ONCE(&once,&init)
-              GRIB_MUTEX_LOCK(&index_mutex)
-              _push_index(h,gid);
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
+    GRIB_MUTEX_LOCK(&index_mutex)
+    _push_index(h,gid);
     GRIB_MUTEX_UNLOCK(&index_mutex)
     return;
 }
 
 static void push_multi_handle(grib_multi_handle *h,int *gid){
-    GRIB_PTHREAD_ONCE(&once,&init)
-              GRIB_MUTEX_LOCK(&multi_handle_mutex)
-              _push_multi_handle(h,gid);
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
+    GRIB_MUTEX_LOCK(&multi_handle_mutex)
+    _push_multi_handle(h,gid);
     GRIB_MUTEX_UNLOCK(&multi_handle_mutex)
     return;
 }
 
-
 static int _push_iterator(grib_iterator *i){
     l_grib_iterator* current  = iterator_set;
     l_grib_iterator* previous = iterator_set;
@@ -412,7 +431,7 @@ static int _push_iterator(grib_iterator *i){
 
 static int push_iterator(grib_iterator *i){
     int ret=0;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&iterator_mutex)
     ret=_push_iterator(i);
     GRIB_MUTEX_UNLOCK(&iterator_mutex)
@@ -458,7 +477,7 @@ static int _push_keys_iterator(grib_keys_iterator *i){
 
 static int push_keys_iterator(grib_keys_iterator *i){
     int ret=0;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&keys_iterator_mutex)
     ret=_push_keys_iterator(i);
     GRIB_MUTEX_UNLOCK(&keys_iterator_mutex)
@@ -500,7 +519,7 @@ static grib_multi_handle* _get_multi_handle(int multi_handle_id){
 
 static grib_handle* get_handle(int handle_id){
     grib_handle* h=NULL;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&handle_mutex)
     h=_get_handle(handle_id);
     GRIB_MUTEX_UNLOCK(&handle_mutex)
@@ -509,7 +528,7 @@ static grib_handle* get_handle(int handle_id){
 
 static grib_index* get_index(int index_id){
     grib_index* h=NULL;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&index_mutex)
     h=_get_index(index_id);
     GRIB_MUTEX_UNLOCK(&index_mutex)
@@ -518,7 +537,7 @@ static grib_index* get_index(int index_id){
 
 static grib_multi_handle* get_multi_handle(int multi_handle_id){
     grib_multi_handle* h=NULL;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&multi_handle_mutex)
     h=_get_multi_handle(multi_handle_id);
     GRIB_MUTEX_UNLOCK(&multi_handle_mutex)
@@ -548,7 +567,7 @@ static grib_iterator* _get_iterator(int iterator_id){
 }
 static grib_iterator* get_iterator(int iterator_id){
     grib_iterator* i=NULL;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&iterator_mutex)
     i=_get_iterator(iterator_id);
     GRIB_MUTEX_UNLOCK(&iterator_mutex)
@@ -567,7 +586,7 @@ static grib_keys_iterator* _get_keys_iterator(int keys_iterator_id){
 
 static grib_keys_iterator* get_keys_iterator(int keys_iterator_id){
     grib_keys_iterator* i=NULL;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&keys_iterator_mutex)
     i=_get_keys_iterator(keys_iterator_id);
     GRIB_MUTEX_UNLOCK(&keys_iterator_mutex)
@@ -635,7 +654,7 @@ static int _clear_multi_handle(int multi_handle_id){
 
 static int clear_handle(int handle_id){
     int ret=0;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&handle_mutex)
     ret=_clear_handle(handle_id);
     GRIB_MUTEX_UNLOCK(&handle_mutex)
@@ -644,7 +663,7 @@ static int clear_handle(int handle_id){
 
 static int clear_index(int index_id){
     int ret=0;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&index_mutex)
     ret=_clear_index(index_id);
     GRIB_MUTEX_UNLOCK(&index_mutex)
@@ -653,7 +672,7 @@ static int clear_index(int index_id){
 
 static int clear_multi_handle(int multi_handle_id){
     int ret=0;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&multi_handle_mutex)
     ret=_clear_multi_handle(multi_handle_id);
     GRIB_MUTEX_UNLOCK(&multi_handle_mutex)
@@ -676,7 +695,7 @@ static int _clear_iterator(int iterator_id){
 
 static int clear_iterator(int iterator_id){
     int ret=0;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&iterator_mutex)
     ret=_clear_iterator(iterator_id);
     GRIB_MUTEX_UNLOCK(&iterator_mutex)
@@ -699,7 +718,7 @@ static int _clear_keys_iterator(int keys_iterator_id){
 
 static int clear_keys_iterator(int keys_iterator_id){
     int ret=0;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&keys_iterator_mutex)
     ret=_clear_keys_iterator(keys_iterator_id);
     GRIB_MUTEX_UNLOCK(&keys_iterator_mutex)
@@ -870,7 +889,7 @@ void grib_f_write_on_fail(int* gid) {
         grib_handle* h=NULL;
         pid_t pid=getpid();
 
-        GRIB_PTHREAD_ONCE(&once,&init)
+        GRIB_MUTEX_INIT_ONCE(&once,&init)
         GRIB_MUTEX_LOCK(&handle_mutex)
         file_count++;
         GRIB_MUTEX_UNLOCK(&handle_mutex)
@@ -932,7 +951,7 @@ static int _grib_f_iterator_new_(int* gid,int* iterid,int* mode) {
 }
 int grib_f_iterator_new_(int* gid,int* iterid,int* mode) {
     int ret=0;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&iterator_mutex)
     ret=_grib_f_iterator_new_(gid,iterid,mode);
     GRIB_MUTEX_UNLOCK(&iterator_mutex)
@@ -992,7 +1011,7 @@ static int _grib_f_keys_iterator_new_(int* gid,int* iterid,char* name_space,int
 }
 int grib_f_keys_iterator_new_(int* gid,int* iterid,char* name_space,int len) {
     int ret=0;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&keys_iterator_mutex)
     ret=_grib_f_keys_iterator_new_(gid,iterid,name_space,len);
     GRIB_MUTEX_UNLOCK(&keys_iterator_mutex)
@@ -1590,13 +1609,28 @@ int grib_f_release(int* hid){
 }
 
 /*****************************************************************************/
+static void do_the_dump(grib_handle* h)
+{
+    if (h->product_kind == PRODUCT_GRIB)
+    {
+        const int dump_flags = GRIB_DUMP_FLAG_VALUES
+                |  GRIB_DUMP_FLAG_READ_ONLY
+                |  GRIB_DUMP_FLAG_ALIASES
+                |  GRIB_DUMP_FLAG_TYPE;
+        grib_dump_content(h,stdout,"debug", dump_flags, NULL);
+    }
+    else
+    {
+        grib_dump_content(h,stdout,"wmo",0,NULL);
+    }
+}
 int grib_f_dump_(int* gid){
     grib_handle *h = get_handle(*gid);
 
     if(!h)
         return GRIB_INVALID_GRIB;
     else
-        grib_dump_content(h,stdout,NULL,0,NULL);
+        do_the_dump(h);
 
     return GRIB_SUCCESS;
 }
diff --git a/fortran/grib_fortran_kinds.c b/fortran/grib_fortran_kinds.c
index 631a10d..0433fdc 100644
--- a/fortran/grib_fortran_kinds.c
+++ b/fortran/grib_fortran_kinds.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/fortran/grib_fortran_prototypes.h b/fortran/grib_fortran_prototypes.h
index e5f5849..0682855 100644
--- a/fortran/grib_fortran_prototypes.h
+++ b/fortran/grib_fortran_prototypes.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/fortran/grib_types.f90 b/fortran/grib_types.f90
index 5d187a7..fab3e56 100644
--- a/fortran/grib_types.f90
+++ b/fortran/grib_types.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/fortran/same_int_long.f90 b/fortran/same_int_long.f90
index cc69de6..a7e3273 100644
--- a/fortran/same_int_long.f90
+++ b/fortran/same_int_long.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/fortran/same_int_size_t.f90 b/fortran/same_int_size_t.f90
index 95e0158..3c2a4ea 100644
--- a/fortran/same_int_size_t.f90
+++ b/fortran/same_int_size_t.f90
@@ -1,4 +1,4 @@
-! Copyright 2005-2015 ECMWF.
+! Copyright 2005-2016 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.
diff --git a/grib_api-import.cmake.in b/grib_api-import.cmake.in
deleted file mode 100644
index c750d33..0000000
--- a/grib_api-import.cmake.in
+++ /dev/null
@@ -1,3 +0,0 @@
-set( ECCODES_SAMPLES_PATH     "@ECCODES_SAMPLES_PATH@" )
-set( ECCODES_IFS_SAMPLES_PATH "@ECCODES_IFS_SAMPLES_PATH@" )
-set( ECCODES_DEFINITION_PATH  "@ECCODES_DEFINITION_PATH@" )
diff --git a/html/Makefile.am b/html/Makefile.am
new file mode 100644
index 0000000..e69de29
diff --git a/html/annotated.html b/html/annotated.html
new file mode 100644
index 0000000..e69de29
diff --git a/html/clone_8f90-example.html b/html/clone_8f90-example.html
new file mode 100644
index 0000000..9f2c5d3
--- /dev/null
+++ b/html/clone_8f90-example.html
@@ -0,0 +1,101 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: clone.f90</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>clone.f90</h1>How to clone a message.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
+<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+<a name="l00004"></a>00004 ! 
+<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+<a name="l00007"></a>00007 !
+<a name="l00008"></a>00008 !
+<a name="l00009"></a>00009 !  Description: how to create a <span class="keyword">new</span> GRIB message by cloning 
+<a name="l00010"></a>00010 !               an existing message.
+<a name="l00011"></a>00011 !
+<a name="l00012"></a>00012 !
+<a name="l00013"></a>00013 !  Author: Anne Fouilloux
+<a name="l00014"></a>00014 !
+<a name="l00015"></a>00015 !
+<a name="l00016"></a>00016 program clone
+<a name="l00017"></a>00017   use grib_api
+<a name="l00018"></a>00018   implicit none
+<a name="l00019"></a>00019   integer                                       :: err,i,iret
+<a name="l00020"></a>00020   integer                                       :: nx, ny
+<a name="l00021"></a>00021   integer                                       :: infile,outfile
+<a name="l00022"></a>00022   integer                                       :: igrib_in
+<a name="l00023"></a>00023   integer                                       :: igrib_out
+<a name="l00024"></a>00024   character(len=2)                              :: step
+<a name="l00025"></a>00025   double precision, dimension(:,:), allocatable :: field2D
+<a name="l00026"></a>00026 
+<a name="l00027"></a>00027   
+<a name="l00028"></a>00028   call grib_open_file(infile,'../../data/constant_field.grib1','r')
+<a name="l00029"></a>00029   call grib_open_file(outfile,'out.grib1','w')
+<a name="l00030"></a>00030 
+<a name="l00031"></a>00031   !     a new grib message is loaded from file
+<a name="l00032"></a>00032   !     igrib is the grib id to be used in subsequent calls
+<a name="l00033"></a>00033   call grib_new_from_file(infile,igrib_in)
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035   call grib_get(igrib_in,<span class="stringliteral">"numberOfPointsAlongAParallel"</span>, nx)
+<a name="l00036"></a>00036   
+<a name="l00037"></a>00037   call grib_get(igrib_in,<span class="stringliteral">"numberOfPointsAlongAMeridian"</span>,ny)
+<a name="l00038"></a>00038 
+<a name="l00039"></a>00039   allocate(field2D(nx,ny),stat=err)
+<a name="l00040"></a>00040 
+<a name="l00041"></a>00041   if (err .ne. 0) then
+<a name="l00042"></a>00042      print*, 'Failed to allocate ', nx*ny, ' values'
+<a name="l00043"></a>00043      STOP
+<a name="l00044"></a>00044   end if
+<a name="l00045"></a>00045   ! clone the constant field to create 4 new GRIB messages
+<a name="l00046"></a>00046   do i=0,18,6
+<a name="l00047"></a>00047     call grib_clone(igrib_in, igrib_out)
+<a name="l00048"></a>00048     write(step,'(i2)') i
+<a name="l00049"></a>00049 ! Careful: stepRange is a string (could be 0-6, 12-24, etc.)
+<a name="l00050"></a>00050 ! use adjustl to remove blank from the left.
+<a name="l00051"></a>00051     call grib_set(igrib_out,'stepRange',adjustl(step))
+<a name="l00052"></a>00052 
+<a name="l00053"></a>00053     call generate_field(field2D)
+<a name="l00054"></a>00054 
+<a name="l00055"></a>00055 ! use pack to create 1D values
+<a name="l00056"></a>00056     call grib_set(igrib_out,'values',pack(field2D, mask=.true.))
+<a name="l00057"></a>00057  
+<a name="l00058"></a>00058   !     write cloned messages to a file
+<a name="l00059"></a>00059     call grib_write(igrib_out,outfile)
+<a name="l00060"></a>00060     call grib_release(igrib_out)
+<a name="l00061"></a>00061   end do
+<a name="l00062"></a>00062 
+<a name="l00063"></a>00063   call grib_release(igrib_in)
+<a name="l00064"></a>00064 
+<a name="l00065"></a>00065   call grib_close_file(infile)
+<a name="l00066"></a>00066 
+<a name="l00067"></a>00067   call grib_close_file(outfile)
+<a name="l00068"></a>00068   deallocate(field2D)
+<a name="l00069"></a>00069 
+<a name="l00070"></a>00070 contains
+<a name="l00071"></a>00071 !======================================
+<a name="l00072"></a>00072 subroutine generate_field(gfield2D)
+<a name="l00073"></a>00073  double precision, dimension(:,:) :: gfield2D
+<a name="l00074"></a>00074 
+<a name="l00075"></a>00075  call random_number(gfield2D)
+<a name="l00076"></a>00076 end subroutine generate_field
+<a name="l00077"></a>00077 !======================================
+<a name="l00078"></a>00078 
+<a name="l00079"></a>00079 end program clone
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/copy__message_8f90-example.html b/html/copy__message_8f90-example.html
new file mode 100644
index 0000000..1353a30
--- /dev/null
+++ b/html/copy__message_8f90-example.html
@@ -0,0 +1,76 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: copy_message.f90</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>copy_message.f90</h1>How to copy a message in memory and create a new message.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
+<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+<a name="l00004"></a>00004 ! 
+<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+<a name="l00007"></a>00007 !
+<a name="l00008"></a>00008 !
+<a name="l00009"></a>00009 !  Description: how to copy a message in memory
+<a name="l00010"></a>00010 !
+<a name="l00011"></a>00011 !
+<a name="l00012"></a>00012 !  Author: Anne Fouilloux
+<a name="l00013"></a>00013 !
+<a name="l00014"></a>00014 !
+<a name="l00015"></a>00015 program copy
+<a name="l00016"></a>00016   use grib_api
+<a name="l00017"></a>00017   implicit none
+<a name="l00018"></a>00018   integer                            :: err, centre
+<a name="l00019"></a>00019   integer(kind=kindOfSize)           :: byte_size
+<a name="l00020"></a>00020   integer                            :: infile,outfile
+<a name="l00021"></a>00021   integer                            :: igrib_in,iret
+<a name="l00022"></a>00022   integer                            :: igrib_out
+<a name="l00023"></a>00023   character(len=1), dimension(:), allocatable :: message
+<a name="l00024"></a>00024 
+<a name="l00025"></a>00025   
+<a name="l00026"></a>00026   call grib_open_file(infile,'../../data/constant_field.grib1','r')
+<a name="l00027"></a>00027   call grib_open_file(outfile,'out.grib1','w')
+<a name="l00028"></a>00028 
+<a name="l00029"></a>00029   !     a new grib message is loaded from file
+<a name="l00030"></a>00030   !     igrib is the grib id to be used in subsequent calls
+<a name="l00031"></a>00031   call grib_new_from_file(infile,igrib_in)
+<a name="l00032"></a>00032 
+<a name="l00033"></a>00033   call grib_get_message_size(igrib_in, byte_size)
+<a name="l00034"></a>00034   allocate(message(byte_size), stat=err)
+<a name="l00035"></a>00035 
+<a name="l00036"></a>00036   call grib_copy_message(igrib_in,message)
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038   call grib_new_from_message(igrib_out, message)
+<a name="l00039"></a>00039 
+<a name="l00040"></a>00040   centre=80
+<a name="l00041"></a>00041   call grib_set(igrib_out,<span class="stringliteral">"centre"</span>,centre)
+<a name="l00042"></a>00042 
+<a name="l00043"></a>00043 !  write messages to a file
+<a name="l00044"></a>00044   call grib_write(igrib_out,outfile)
+<a name="l00045"></a>00045 
+<a name="l00046"></a>00046   call grib_release(igrib_out)
+<a name="l00047"></a>00047 
+<a name="l00048"></a>00048   call grib_release(igrib_in)
+<a name="l00049"></a>00049 
+<a name="l00050"></a>00050   call grib_close_file(infile)
+<a name="l00051"></a>00051   call grib_close_file(outfile)
+<a name="l00052"></a>00052   deallocate(message)
+<a name="l00053"></a>00053 
+<a name="l00054"></a>00054 end program copy
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/doxygen.css b/html/doxygen.css
new file mode 100644
index 0000000..8402fd2
--- /dev/null
+++ b/html/doxygen.css
@@ -0,0 +1,322 @@
+
+CAPTION { font-weight: bold }
+DIV.qindex {
+	width: 100%;
+	background-color: #e8eef2;
+	border: 1px solid #84b0c7;
+	text-align: center;
+	margin: 2px;
+	padding: 2px;
+	line-height: 140%;
+}
+DIV.nav {
+	width: 100%;
+	background-color: #e8eef2;
+	border: 1px solid #84b0c7;
+	text-align: center;
+	margin: 2px;
+	padding: 2px;
+	line-height: 140%;
+}
+DIV.navtab {
+       background-color: #e8eef2;
+       border: 1px solid #84b0c7;
+       text-align: center;
+       margin: 2px;
+       margin-right: 15px;
+       padding: 2px;
+}
+TD.navtab {
+       font-size: 70%;
+}
+A.qindex {
+       text-decoration: none;
+       font-weight: bold;
+       color: #1A419D;
+}
+A.qindex:visited {
+       text-decoration: none;
+       font-weight: bold;
+       color: #1A419D
+}
+A.qindexHL {
+	text-decoration: none;
+	font-weight: bold;
+	background-color: #6666cc;
+	color: #ffffff;
+	border: 1px double #9295C2;
+}
+A.el { text-decoration: none; font-weight: bold }
+A.elRef { font-weight: bold }
+A.code:link { text-decoration: none; font-weight: normal; color: #0000FF}
+A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF}
+A.codeRef:link { font-weight: normal; color: #0000FF}
+A.codeRef:visited { font-weight: normal; color: #0000FF}
+DL.el { margin-left: -1cm }
+.fragment {
+       font-family: monospace, fixed;
+       font-size: 95%;
+}
+PRE.fragment {
+	border: 1px solid #CCCCCC;
+	background-color: #f5f5f5;
+	margin-top: 4px;
+	margin-bottom: 4px;
+	margin-left: 2px;
+	margin-right: 8px;
+	padding-left: 6px;
+	padding-right: 6px;
+	padding-top: 4px;
+	padding-bottom: 4px;
+}
+DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
+
+DIV.groupHeader {
+       margin-left: 16px;
+       margin-top: 12px;
+       margin-bottom: 6px;
+       font-weight: bold;
+}
+DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% }
+
+TD.indexkey {
+	background-color: #e8eef2;
+	font-weight: bold;
+	padding-right  : 10px;
+	padding-top    : 2px;
+	padding-left   : 10px;
+	padding-bottom : 2px;
+	margin-left    : 0px;
+	margin-right   : 0px;
+	margin-top     : 2px;
+	margin-bottom  : 2px;
+	border: 1px solid #CCCCCC;
+}
+TD.indexvalue {
+	background-color: #e8eef2;
+	font-style: italic;
+	padding-right  : 10px;
+	padding-top    : 2px;
+	padding-left   : 10px;
+	padding-bottom : 2px;
+	margin-left    : 0px;
+	margin-right   : 0px;
+	margin-top     : 2px;
+	margin-bottom  : 2px;
+	border: 1px solid #CCCCCC;
+}
+TR.memlist {
+   background-color: #f0f0f0; 
+}
+P.formulaDsp { text-align: center; }
+IMG.formulaDsp { }
+IMG.formulaInl { vertical-align: middle; }
+SPAN.keyword       { color: #008000 }
+SPAN.keywordtype   { color: #604020 }
+SPAN.keywordflow   { color: #e08000 }
+SPAN.comment       { color: #800000 }
+SPAN.preprocessor  { color: #806020 }
+SPAN.stringliteral { color: #002080 }
+SPAN.charliteral   { color: #008080 }
+.mdescLeft {
+       padding: 0px 8px 4px 8px;
+	font-size: 80%;
+	font-style: italic;
+	background-color: #FAFAFA;
+	border-top: 1px none #E0E0E0;
+	border-right: 1px none #E0E0E0;
+	border-bottom: 1px none #E0E0E0;
+	border-left: 1px none #E0E0E0;
+	margin: 0px;
+}
+.mdescRight {
+       padding: 0px 8px 4px 8px;
+	font-size: 80%;
+	font-style: italic;
+	background-color: #FAFAFA;
+	border-top: 1px none #E0E0E0;
+	border-right: 1px none #E0E0E0;
+	border-bottom: 1px none #E0E0E0;
+	border-left: 1px none #E0E0E0;
+	margin: 0px;
+}
+.memItemLeft {
+	padding: 1px 0px 0px 8px;
+	margin: 4px;
+	border-top-width: 1px;
+	border-right-width: 1px;
+	border-bottom-width: 1px;
+	border-left-width: 1px;
+	border-top-color: #E0E0E0;
+	border-right-color: #E0E0E0;
+	border-bottom-color: #E0E0E0;
+	border-left-color: #E0E0E0;
+	border-top-style: solid;
+	border-right-style: none;
+	border-bottom-style: none;
+	border-left-style: none;
+	background-color: #FAFAFA;
+	font-size: 80%;
+}
+.memItemRight {
+	padding: 1px 8px 0px 8px;
+	margin: 4px;
+	border-top-width: 1px;
+	border-right-width: 1px;
+	border-bottom-width: 1px;
+	border-left-width: 1px;
+	border-top-color: #E0E0E0;
+	border-right-color: #E0E0E0;
+	border-bottom-color: #E0E0E0;
+	border-left-color: #E0E0E0;
+	border-top-style: solid;
+	border-right-style: none;
+	border-bottom-style: none;
+	border-left-style: none;
+	background-color: #FAFAFA;
+	font-size: 80%;
+}
+.memTemplItemLeft {
+	padding: 1px 0px 0px 8px;
+	margin: 4px;
+	border-top-width: 1px;
+	border-right-width: 1px;
+	border-bottom-width: 1px;
+	border-left-width: 1px;
+	border-top-color: #E0E0E0;
+	border-right-color: #E0E0E0;
+	border-bottom-color: #E0E0E0;
+	border-left-color: #E0E0E0;
+	border-top-style: none;
+	border-right-style: none;
+	border-bottom-style: none;
+	border-left-style: none;
+	background-color: #FAFAFA;
+	font-size: 80%;
+}
+.memTemplItemRight {
+	padding: 1px 8px 0px 8px;
+	margin: 4px;
+	border-top-width: 1px;
+	border-right-width: 1px;
+	border-bottom-width: 1px;
+	border-left-width: 1px;
+	border-top-color: #E0E0E0;
+	border-right-color: #E0E0E0;
+	border-bottom-color: #E0E0E0;
+	border-left-color: #E0E0E0;
+	border-top-style: none;
+	border-right-style: none;
+	border-bottom-style: none;
+	border-left-style: none;
+	background-color: #FAFAFA;
+	font-size: 80%;
+}
+.memTemplParams {
+	padding: 1px 0px 0px 8px;
+	margin: 4px;
+	border-top-width: 1px;
+	border-right-width: 1px;
+	border-bottom-width: 1px;
+	border-left-width: 1px;
+	border-top-color: #E0E0E0;
+	border-right-color: #E0E0E0;
+	border-bottom-color: #E0E0E0;
+	border-left-color: #E0E0E0;
+	border-top-style: solid;
+	border-right-style: none;
+	border-bottom-style: none;
+	border-left-style: none;
+       color: #606060;
+	background-color: #FAFAFA;
+	font-size: 80%;
+}
+.search     { color: #003399;
+              font-weight: bold;
+}
+FORM.search {
+              margin-bottom: 0px;
+              margin-top: 0px;
+}
+INPUT.search { font-size: 75%;
+               color: #000080;
+               font-weight: normal;
+               background-color: #e8eef2;
+}
+TD.tiny      { font-size: 75%;
+}
+
+.dirtab { padding: 4px;
+          border-collapse: collapse;
+          border: 1px solid #84b0c7;
+}
+TH.dirtab { background: #e8eef2;
+            font-weight: bold;
+}
+HR { height: 1px;
+     border: none;
+     border-top: 1px solid black;
+}
+
+/* Style for detailed member documentation */
+.memtemplate {
+  font-size: 80%;
+  color: #606060;
+  font-weight: normal;
+} 
+.memnav { 
+  background-color: #e8eef2;
+  border: 1px solid #84b0c7;
+  text-align: center;
+  margin: 2px;
+  margin-right: 15px;
+  padding: 2px;
+}
+.memitem {
+  padding: 4px;
+  background-color: #eef3f5;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #dedeee;
+  -moz-border-radius: 8px 8px 8px 8px;
+}
+.memname {
+  white-space: nowrap;
+  font-weight: bold;
+}
+.memdoc{
+  padding-left: 10px;
+}
+.memproto {
+  background-color: #d5e1e8;
+  width: 100%;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #84b0c7;
+  font-weight: bold;
+  -moz-border-radius: 8px 8px 8px 8px;
+}
+.paramkey {
+  text-align: right;
+}
+.paramtype {
+  white-space: nowrap;
+}
+.paramname {
+  color: #602020;
+  font-style: italic;
+  white-space: nowrap;
+}
+/* End Styling for detailed member documentation */
+
+/* for the tree view */
+.ftvtree {
+	font-family: sans-serif;
+	margin:0.5em;
+}
+.directory { font-size: 9pt; font-weight: bold; }
+.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; }
+.directory > h3 { margin-top: 0; }
+.directory p { margin: 0px; white-space: nowrap; }
+.directory div { display: none; margin: 0px; }
+.directory img { vertical-align: -30%; }
diff --git a/html/doxygen.png b/html/doxygen.png
new file mode 100644
index 0000000..f0a274b
Binary files /dev/null and b/html/doxygen.png differ
diff --git a/html/examples.html b/html/examples.html
new file mode 100644
index 0000000..9452426
--- /dev/null
+++ b/html/examples.html
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: Examples</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li class="current"><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>grib_api Examples</h1>Here is a list of all examples:<ul>
+<li><a class="el" href="clone_8f90-example.html">clone.f90</a>
+<li><a class="el" href="copy__message_8f90-example.html">copy_message.f90</a>
+<li><a class="el" href="count__messages_8f90-example.html">count_messages.f90</a>
+<li><a class="el" href="get_8c-example.html">get.c</a>
+<li><a class="el" href="get_8f90-example.html">get.f90</a>
+<li><a class="el" href="get__data_8f90-example.html">get_data.f90</a>
+<li><a class="el" href="get__fortran_8_f-example.html">get_fortran.F</a>
+<li><a class="el" href="get__pl_8f90-example.html">get_pl.f90</a>
+<li><a class="el" href="get__pv_8f90-example.html">get_pv.f90</a>
+<li><a class="el" href="index_8f90-example.html">index.f90</a>
+<li><a class="el" href="iterator_8c-example.html">iterator.c</a>
+<li><a class="el" href="iterator__fortran_8_f-example.html">iterator_fortran.F</a>
+<li><a class="el" href="keys__iterator_8c-example.html">keys_iterator.c</a>
+<li><a class="el" href="keys__iterator_8f90-example.html">keys_iterator.f90</a>
+<li><a class="el" href="keys__iterator__fortran_8_f-example.html">keys_iterator_fortran.F</a>
+<li><a class="el" href="multi_8c-example.html">multi.c</a>
+<li><a class="el" href="multi_8f90-example.html">multi.f90</a>
+<li><a class="el" href="multi__fortran_8_f-example.html">multi_fortran.F</a>
+<li><a class="el" href="multi__write_8c-example.html">multi_write.c</a>
+<li><a class="el" href="multi__write_8f90-example.html">multi_write.f90</a>
+<li><a class="el" href="nearest_8c-example.html">nearest.c</a>
+<li><a class="el" href="nearest_8f90-example.html">nearest.f90</a>
+<li><a class="el" href="precision_8c-example.html">precision.c</a>
+<li><a class="el" href="precision_8f90-example.html">precision.f90</a>
+<li><a class="el" href="precision__fortran_8_f-example.html">precision_fortran.F</a>
+<li><a class="el" href="print__data_8c-example.html">print_data.c</a>
+<li><a class="el" href="print__data_8f90-example.html">print_data.f90</a>
+<li><a class="el" href="print__data__fortran_8_f-example.html">print_data_fortran.F</a>
+<li><a class="el" href="samples_8f90-example.html">samples.f90</a>
+<li><a class="el" href="set_8c-example.html">set.c</a>
+<li><a class="el" href="set_8f90-example.html">set.f90</a>
+<li><a class="el" href="set__bitmap_8f90-example.html">set_bitmap.f90</a>
+<li><a class="el" href="set__fortran_8_f-example.html">set_fortran.F</a>
+<li><a class="el" href="set__missing_8f90-example.html">set_missing.f90</a>
+<li><a class="el" href="set__pv_8f90-example.html">set_pv.f90</a>
+</ul>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/files.html b/html/files.html
new file mode 100644
index 0000000..0ec539d
--- /dev/null
+++ b/html/files.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: File Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<div class="tabs">
+  <ul>
+    <li class="current"><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>Globals</span></a></li>
+  </ul>
+</div>
+<h1>grib_api File List</h1>Here is a list of all documented files with brief descriptions:<table>
+  <tr><td class="indexkey"><a class="el" href="grib__api_8h.html">grib_api.h</a></td><td class="indexvalue">Copyright 2005-2016 ECMWF </td></tr>
+</table>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/get_8c-example.html b/html/get_8c-example.html
new file mode 100644
index 0000000..481aaf5
--- /dev/null
+++ b/html/get_8c-example.html
@@ -0,0 +1,128 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: get.c</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>get.c</h1>get.c How to get values through the key names.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00010"></a>00010 <span class="comment">/*</span>
+<a name="l00011"></a>00011 <span class="comment"> * C Implementation: get</span>
+<a name="l00012"></a>00012 <span class="comment"> *</span>
+<a name="l00013"></a>00013 <span class="comment"> * Description: how to get values using keys.</span>
+<a name="l00014"></a>00014 <span class="comment"> *</span>
+<a name="l00015"></a>00015 <span class="comment"> * Author: Enrico Fucile</span>
+<a name="l00016"></a>00016 <span class="comment"> *</span>
+<a name="l00017"></a>00017 <span class="comment"> *</span>
+<a name="l00018"></a>00018 <span class="comment"> */</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include <stdio.h></span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <stdlib.h></span>
+<a name="l00021"></a>00021 
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="grib__api_8h.html" title="Copyright 2005-2016 ECMWF.">grib_api.h</a>"</span>
+<a name="l00023"></a>00023 
+<a name="l00024"></a>00024 <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv) {
+<a name="l00025"></a>00025   <span class="keywordtype">int</span> err = 0;
+<a name="l00026"></a>00026   <span class="keywordtype">double</span> *values = NULL;
+<a name="l00027"></a>00027   <span class="keywordtype">size_t</span> values_len= 0;
+<a name="l00028"></a>00028 
+<a name="l00029"></a>00029   <span class="keywordtype">size_t</span> i = 0;
+<a name="l00030"></a>00030 
+<a name="l00031"></a>00031   <span class="keywordtype">double</span> latitudeOfFirstGridPointInDegrees;
+<a name="l00032"></a>00032   <span class="keywordtype">double</span> longitudeOfFirstGridPointInDegrees;
+<a name="l00033"></a>00033   <span class="keywordtype">double</span> latitudeOfLastGridPointInDegrees;
+<a name="l00034"></a>00034   <span class="keywordtype">double</span> longitudeOfLastGridPointInDegrees;
+<a name="l00035"></a>00035 
+<a name="l00036"></a>00036   <span class="keywordtype">double</span> jDirectionIncrementInDegrees;
+<a name="l00037"></a>00037   <span class="keywordtype">double</span> iDirectionIncrementInDegrees;
+<a name="l00038"></a>00038 
+<a name="l00039"></a>00039   <span class="keywordtype">long</span> numberOfPointsAlongAParallel;
+<a name="l00040"></a>00040   <span class="keywordtype">long</span> numberOfPointsAlongAMeridian;
+<a name="l00041"></a>00041 
+<a name="l00042"></a>00042   <span class="keywordtype">double</span> average = 0;
+<a name="l00043"></a>00043 
+<a name="l00044"></a>00044   FILE* in = NULL;
+<a name="l00045"></a>00045   <span class="keywordtype">char</span>* filename = <span class="stringliteral">"../../data/regular_latlon_surface.grib1"</span>;
+<a name="l00046"></a>00046   <a name="a0"></a><a class="code" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h = NULL;
+<a name="l00047"></a>00047 
+<a name="l00048"></a>00048   in = fopen(filename,<span class="stringliteral">"r"</span>);
+<a name="l00049"></a>00049   <span class="keywordflow">if</span>(!in) {
+<a name="l00050"></a>00050     printf(<span class="stringliteral">"ERROR: unable to open file %s\n"</span>,filename);
+<a name="l00051"></a>00051     <span class="keywordflow">return</span> 1;
+<a name="l00052"></a>00052   }
+<a name="l00053"></a>00053 
+<a name="l00054"></a>00054   <span class="comment">/* create new handle from a message in a file*/</span>
+<a name="l00055"></a>00055   h = <a name="a1"></a><a class="code" href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5" title="Create a handle from a file resource.">grib_handle_new_from_file</a>(0,in,&err);
+<a name="l00056"></a>00056   <span class="keywordflow">if</span> (h == NULL) {
+<a name="l00057"></a>00057     printf(<span class="stringliteral">"Error: unable to create handle from file %s\n"</span>,filename);
+<a name="l00058"></a>00058   }
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060   <span class="comment">/* get as a long*/</span>
+<a name="l00061"></a>00061   GRIB_CHECK(<a name="a2"></a><a class="code" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526" title="Get a long value from a key, if several keys of the same name are present, the last...">grib_get_long</a>(h,<span class="stringliteral">"numberOfPointsAlongAParallel"</span>,&numberOfPointsAlongAParallel),0);
+<a name="l00062"></a>00062   printf(<span class="stringliteral">"numberOfPointsAlongAParallel=%ld\n"</span>,numberOfPointsAlongAParallel);
+<a name="l00063"></a>00063 
+<a name="l00064"></a>00064   <span class="comment">/* get as a long*/</span>
+<a name="l00065"></a>00065   GRIB_CHECK(<a class="code" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526" title="Get a long value from a key, if several keys of the same name are present, the last...">grib_get_long</a>(h,<span class="stringliteral">"numberOfPointsAlongAMeridian"</span>,&numberOfPointsAlongAMeridian),0);
+<a name="l00066"></a>00066   printf(<span class="stringliteral">"numberOfPointsAlongAMeridian=%ld\n"</span>,numberOfPointsAlongAMeridian);
+<a name="l00067"></a>00067 
+<a name="l00068"></a>00068   <span class="comment">/* get as a double*/</span>
+<a name="l00069"></a>00069   GRIB_CHECK(<a name="a3"></a><a class="code" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e" title="Get a double value from a key, if several keys of the same name are present, the...">grib_get_double</a>(h,<span class="stringliteral">"latitudeOfFirstGridPointInDegrees"</span>,&latitudeOfFirstGridPointInDegrees),0);
+<a name="l00070"></a>00070   printf(<span class="stringliteral">"latitudeOfFirstGridPointInDegrees=%g\n"</span>,latitudeOfFirstGridPointInDegrees);
+<a name="l00071"></a>00071 
+<a name="l00072"></a>00072   <span class="comment">/* get as a double*/</span>
+<a name="l00073"></a>00073   GRIB_CHECK(<a class="code" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e" title="Get a double value from a key, if several keys of the same name are present, the...">grib_get_double</a>(h,<span class="stringliteral">"longitudeOfFirstGridPointInDegrees"</span>,&longitudeOfFirstGridPointInDegrees),0);
+<a name="l00074"></a>00074   printf(<span class="stringliteral">"longitudeOfFirstGridPointInDegrees=%g\n"</span>,longitudeOfFirstGridPointInDegrees);
+<a name="l00075"></a>00075 
+<a name="l00076"></a>00076   <span class="comment">/* get as a double*/</span>
+<a name="l00077"></a>00077   GRIB_CHECK(<a class="code" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e" title="Get a double value from a key, if several keys of the same name are present, the...">grib_get_double</a>(h,<span class="stringliteral">"latitudeOfLastGridPointInDegrees"</span>,&latitudeOfLastGridPointInDegrees),0);
+<a name="l00078"></a>00078   printf(<span class="stringliteral">"latitudeOfLastGridPointInDegrees=%g\n"</span>,latitudeOfLastGridPointInDegrees);
+<a name="l00079"></a>00079 
+<a name="l00080"></a>00080   <span class="comment">/* get as a double*/</span>
+<a name="l00081"></a>00081   GRIB_CHECK(<a class="code" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e" title="Get a double value from a key, if several keys of the same name are present, the...">grib_get_double</a>(h,<span class="stringliteral">"longitudeOfLastGridPointInDegrees"</span>,&longitudeOfLastGridPointInDegrees),0);
+<a name="l00082"></a>00082   printf(<span class="stringliteral">"longitudeOfLastGridPointInDegrees=%g\n"</span>,longitudeOfLastGridPointInDegrees);
+<a name="l00083"></a>00083 
+<a name="l00084"></a>00084   <span class="comment">/* get as a double*/</span>
+<a name="l00085"></a>00085   GRIB_CHECK(<a class="code" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e" title="Get a double value from a key, if several keys of the same name are present, the...">grib_get_double</a>(h,<span class="stringliteral">"jDirectionIncrementInDegrees"</span>,&jDirectionIncrementInDegrees),0);
+<a name="l00086"></a>00086   printf(<span class="stringliteral">"jDirectionIncrementInDegrees=%g\n"</span>,jDirectionIncrementInDegrees);
+<a name="l00087"></a>00087 
+<a name="l00088"></a>00088   <span class="comment">/* get as a double*/</span>
+<a name="l00089"></a>00089   GRIB_CHECK(<a class="code" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e" title="Get a double value from a key, if several keys of the same name are present, the...">grib_get_double</a>(h,<span class="stringliteral">"iDirectionIncrementInDegrees"</span>,&iDirectionIncrementInDegrees),0);
+<a name="l00090"></a>00090   printf(<span class="stringliteral">"iDirectionIncrementInDegrees=%g\n"</span>,iDirectionIncrementInDegrees);
+<a name="l00091"></a>00091 
+<a name="l00092"></a>00092   <span class="comment">/* get the size of the values array*/</span>
+<a name="l00093"></a>00093   GRIB_CHECK(<a name="a4"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(h,<span class="stringliteral">"values"</span>,&values_len),0);
+<a name="l00094"></a>00094 
+<a name="l00095"></a>00095   values = malloc(values_len*<span class="keyword">sizeof</span>(<span class="keywordtype">double</span>));
+<a name="l00096"></a>00096 
+<a name="l00097"></a>00097   <span class="comment">/* get data values*/</span>
+<a name="l00098"></a>00098   GRIB_CHECK(<a name="a5"></a><a class="code" href="group__get__set.html#g61f1029d7f37d51f33835e218d58378a" title="Get double array values from a key.">grib_get_double_array</a>(h,<span class="stringliteral">"values"</span>,values,&values_len),0);
+<a name="l00099"></a>00099 
+<a name="l00100"></a>00100   average = 0;
+<a name="l00101"></a>00101   <span class="keywordflow">for</span>(i = 0; i < values_len; i++)
+<a name="l00102"></a>00102     average += values[i];
+<a name="l00103"></a>00103 
+<a name="l00104"></a>00104   average /=(double)values_len;
+<a name="l00105"></a>00105 
+<a name="l00106"></a>00106   free(values);
+<a name="l00107"></a>00107 
+<a name="l00108"></a>00108   printf(<span class="stringliteral">"There are %d values, average is %g\n"</span>,(<span class="keywordtype">int</span>)values_len,average);
+<a name="l00109"></a>00109 
+<a name="l00110"></a>00110   <a name="a6"></a><a class="code" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677" title="Frees a handle, also frees the message if it is not a user message.">grib_handle_delete</a>(h);
+<a name="l00111"></a>00111 
+<a name="l00112"></a>00112   fclose(in);
+<a name="l00113"></a>00113   <span class="keywordflow">return</span> 0;
+<a name="l00114"></a>00114 }
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/get_8f90-example.html b/html/get_8f90-example.html
new file mode 100644
index 0000000..658312c
--- /dev/null
+++ b/html/get_8f90-example.html
@@ -0,0 +1,134 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: get.f90</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>get.f90</h1>How to get values through the key names.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
+<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+<a name="l00004"></a>00004 ! 
+<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+<a name="l00007"></a>00007 !
+<a name="l00008"></a>00008 !
+<a name="l00009"></a>00009 !  Description: how to <span class="keyword">get</span> values <span class="keyword">using</span> keys.
+<a name="l00010"></a>00010 !
+<a name="l00011"></a>00011 !  Author: Enrico Fucile 
+<a name="l00012"></a>00012 !
+<a name="l00013"></a>00013 !
+<a name="l00014"></a>00014 program <span class="keyword">get</span>
+<a name="l00015"></a>00015   use grib_api
+<a name="l00016"></a>00016   implicit none
+<a name="l00017"></a>00017   
+<a name="l00018"></a>00018   integer                            ::  ifile
+<a name="l00019"></a>00019   integer                            ::  iret
+<a name="l00020"></a>00020   integer                            ::  igrib
+<a name="l00021"></a>00021   real                               ::  latitudeOfFirstPointInDegrees
+<a name="l00022"></a>00022   real                               ::  longitudeOfFirstPointInDegrees
+<a name="l00023"></a>00023   real                               ::  latitudeOfLastPointInDegrees
+<a name="l00024"></a>00024   real                               ::  longitudeOfLastPointInDegrees
+<a name="l00025"></a>00025   integer                            ::  numberOfPointsAlongAParallel
+<a name="l00026"></a>00026   integer                            ::  numberOfPointsAlongAMeridian
+<a name="l00027"></a>00027   real, dimension(:), allocatable    ::  values
+<a name="l00028"></a>00028   integer                            ::  numberOfValues
+<a name="l00029"></a>00029   real                               ::  average,min_val, max_val
+<a name="l00030"></a>00030   integer                            ::  is_missing
+<a name="l00031"></a>00031   
+<a name="l00032"></a>00032   call grib_open_file(ifile, &
+<a name="l00033"></a>00033        '../../data/reduced_latlon_surface.grib1<span class="charliteral">','</span>r')
+<a name="l00034"></a>00034   
+<a name="l00035"></a>00035   ! Loop on all the messages in a file.
+<a name="l00036"></a>00036   
+<a name="l00037"></a>00037   !     a <span class="keyword">new</span> grib message is loaded from file
+<a name="l00038"></a>00038   !     igrib is the grib <span class="keywordtype">id</span> to be used in subsequent calls
+<a name="l00039"></a>00039   call  grib_new_from_file(ifile,igrib, iret) 
+<a name="l00040"></a>00040   
+<a name="l00041"></a>00041   LOOP: DO WHILE (iret /= <a name="a0"></a><a class="code" href="grib__api_8h.html#3bd3d72fe8bc116ca08c2d4b99203768" title="End of ressource reached.">GRIB_END_OF_FILE</a>)
+<a name="l00042"></a>00042 
+<a name="l00043"></a>00043      !check if the value of the key is MISSING
+<a name="l00044"></a>00044      is_missing=0;
+<a name="l00045"></a>00045      call grib_is_missing(igrib,'numberOfPointsAlongAParallel', &
+<a name="l00046"></a>00046           is_missing);
+<a name="l00047"></a>00047      if ( is_missing /= 1 ) then
+<a name="l00048"></a>00048         !     get as a integer
+<a name="l00049"></a>00049         call grib_get(igrib,'numberOfPointsAlongAParallel', &
+<a name="l00050"></a>00050              numberOfPointsAlongAParallel) 
+<a name="l00051"></a>00051         write(*,*) 'numberOfPointsAlongAParallel=', &
+<a name="l00052"></a>00052              numberOfPointsAlongAParallel
+<a name="l00053"></a>00053      else
+<a name="l00054"></a>00054         write(*,*) 'numberOfPointsAlongAParallel is missing'
+<a name="l00055"></a>00055      endif     
+<a name="l00056"></a>00056      !     get as a integer
+<a name="l00057"></a>00057      call grib_get(igrib,'numberOfPointsAlongAMeridian', &
+<a name="l00058"></a>00058           numberOfPointsAlongAMeridian) 
+<a name="l00059"></a>00059      write(*,*) 'numberOfPointsAlongAMeridian=', &
+<a name="l00060"></a>00060           numberOfPointsAlongAMeridian
+<a name="l00061"></a>00061      
+<a name="l00062"></a>00062      !     get as a real
+<a name="l00063"></a>00063      call grib_get(igrib, 'latitudeOfFirstGridPointInDegrees', &
+<a name="l00064"></a>00064           latitudeOfFirstPointInDegrees) 
+<a name="l00065"></a>00065      write(*,*) 'latitudeOfFirstGridPointInDegrees=', &
+<a name="l00066"></a>00066           latitudeOfFirstPointInDegrees
+<a name="l00067"></a>00067      
+<a name="l00068"></a>00068      !     get as a real
+<a name="l00069"></a>00069      call grib_get(igrib, 'longitudeOfFirstGridPointInDegrees', &
+<a name="l00070"></a>00070           longitudeOfFirstPointInDegrees) 
+<a name="l00071"></a>00071      write(*,*) 'longitudeOfFirstGridPointInDegrees=', &
+<a name="l00072"></a>00072           longitudeOfFirstPointInDegrees
+<a name="l00073"></a>00073      
+<a name="l00074"></a>00074      !     get as a real
+<a name="l00075"></a>00075      call grib_get(igrib, 'latitudeOfLastGridPointInDegrees', &
+<a name="l00076"></a>00076           latitudeOfLastPointInDegrees) 
+<a name="l00077"></a>00077      write(*,*) 'latitudeOfLastGridPointInDegrees=', &
+<a name="l00078"></a>00078           latitudeOfLastPointInDegrees
+<a name="l00079"></a>00079      
+<a name="l00080"></a>00080      !     get as a real
+<a name="l00081"></a>00081      call grib_get(igrib, 'longitudeOfLastGridPointInDegrees', &
+<a name="l00082"></a>00082           longitudeOfLastPointInDegrees) 
+<a name="l00083"></a>00083      write(*,*) 'longitudeOfLastGridPointInDegrees=', &
+<a name="l00084"></a>00084           longitudeOfLastPointInDegrees
+<a name="l00085"></a>00085      
+<a name="l00086"></a>00086      
+<a name="l00087"></a>00087      !     get the size of the values array
+<a name="l00088"></a>00088      call <a name="a1"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(igrib,'values',numberOfValues)
+<a name="l00089"></a>00089      write(*,*) 'numberOfValues=',numberOfValues
+<a name="l00090"></a>00090      
+<a name="l00091"></a>00091      allocate(values(numberOfValues), stat=iret)
+<a name="l00092"></a>00092      !     get data values
+<a name="l00093"></a>00093      call grib_get(igrib,'values',values)
+<a name="l00094"></a>00094      call grib_get(igrib,'min',min_val) ! can also be obtained through minval(values)
+<a name="l00095"></a>00095      call grib_get(igrib,'max',max_val) ! can also be obtained through maxval(values)
+<a name="l00096"></a>00096      call grib_get(igrib,'average',average) ! can also be obtained through maxval(values)
+<a name="l00097"></a>00097           
+<a name="l00098"></a>00098      write(*,*)'There are ',numberOfValues, &
+<a name="l00099"></a>00099           ' average is ',average, &
+<a name="l00100"></a>00100           ' min is ',  min_val, &
+<a name="l00101"></a>00101           ' max is ',  max_val
+<a name="l00102"></a>00102      
+<a name="l00103"></a>00103      call grib_release(igrib)
+<a name="l00104"></a>00104      
+<a name="l00105"></a>00105      call grib_new_from_file(ifile,igrib, iret)
+<a name="l00106"></a>00106      
+<a name="l00107"></a>00107   end do LOOP
+<a name="l00108"></a>00108   
+<a name="l00109"></a>00109   call grib_close_file(ifile)
+<a name="l00110"></a>00110   
+<a name="l00111"></a>00111   deallocate(values)
+<a name="l00112"></a>00112 end program get
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/get__data_8f90-example.html b/html/get__data_8f90-example.html
new file mode 100644
index 0000000..3d9b4cd
--- /dev/null
+++ b/html/get__data_8f90-example.html
@@ -0,0 +1,90 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: get_data.f90</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>get_data.f90</h1>How to get latitude/longitude/values.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
+<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+<a name="l00004"></a>00004 ! 
+<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+<a name="l00007"></a>00007 !
+<a name="l00008"></a>00008 !
+<a name="l00009"></a>00009 !  Description: how to <span class="keyword">get</span> lat/lon/values.
+<a name="l00010"></a>00010 !
+<a name="l00011"></a>00011 !
+<a name="l00012"></a>00012 !  Author: Enrico Fucile
+<a name="l00013"></a>00013 !
+<a name="l00014"></a>00014 !
+<a name="l00015"></a>00015 program get_data
+<a name="l00016"></a>00016 use grib_api
+<a name="l00017"></a>00017 implicit none
+<a name="l00018"></a>00018   integer            :: ifile
+<a name="l00019"></a>00019   integer            :: iret,i
+<a name="l00020"></a>00020   real(kind=8),dimension(:),allocatable     :: lats,lons,values
+<a name="l00021"></a>00021   integer(4)        :: numberOfPoints
+<a name="l00022"></a>00022   real(8)  :: missingValue=9999
+<a name="l00023"></a>00023   integer           :: count=0
+<a name="l00024"></a>00024   character(len=256) :: filename
+<a name="l00025"></a>00025 
+<a name="l00026"></a>00026 !     Message identifier.
+<a name="l00027"></a>00027   integer            :: igrib
+<a name="l00028"></a>00028 
+<a name="l00029"></a>00029   ifile=5
+<a name="l00030"></a>00030 
+<a name="l00031"></a>00031   call grib_open_file(ifile, &
+<a name="l00032"></a>00032        '../../data/reduced_latlon_surface.grib1','R')
+<a name="l00033"></a>00033 
+<a name="l00034"></a>00034 ! Loop on all the messages in a file.
+<a name="l00035"></a>00035 
+<a name="l00036"></a>00036   call grib_new_from_file(ifile,igrib,iret)
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038   do while (iret/=<a name="a0"></a><a class="code" href="grib__api_8h.html#3bd3d72fe8bc116ca08c2d4b99203768" title="End of ressource reached.">GRIB_END_OF_FILE</a>)
+<a name="l00039"></a>00039     count=count+1
+<a name="l00040"></a>00040     print *, <span class="stringliteral">"===== Message #"</span>,count
+<a name="l00041"></a>00041     call grib_get(igrib,'numberOfPoints',numberOfPoints)
+<a name="l00042"></a>00042     call grib_set(igrib,'missingValue',missingValue)
+<a name="l00043"></a>00043 
+<a name="l00044"></a>00044     allocate(lats(numberOfPoints))
+<a name="l00045"></a>00045     allocate(lons(numberOfPoints))
+<a name="l00046"></a>00046     allocate(values(numberOfPoints))
+<a name="l00047"></a>00047 
+<a name="l00048"></a>00048     call grib_get_data(igrib,lats,lons,values)
+<a name="l00049"></a>00049 
+<a name="l00050"></a>00050     do i=1,numberOfPoints
+<a name="l00051"></a>00051       if (values(i) /= missingValue) then
+<a name="l00052"></a>00052         print *, lats(i),lons(i),values(i)
+<a name="l00053"></a>00053       end if
+<a name="l00054"></a>00054     enddo
+<a name="l00055"></a>00055 
+<a name="l00056"></a>00056     deallocate(lats)
+<a name="l00057"></a>00057     deallocate(lons)
+<a name="l00058"></a>00058     deallocate(values)
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060     call grib_release(igrib)
+<a name="l00061"></a>00061     call grib_new_from_file(ifile,igrib, iret)
+<a name="l00062"></a>00062 
+<a name="l00063"></a>00063   end do 
+<a name="l00064"></a>00064 
+<a name="l00065"></a>00065 
+<a name="l00066"></a>00066   call grib_close_file(ifile)
+<a name="l00067"></a>00067 
+<a name="l00068"></a>00068 end program 
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/get__fortran_8_f-example.html b/html/get__fortran_8_f-example.html
new file mode 100644
index 0000000..ca92966
--- /dev/null
+++ b/html/get__fortran_8_f-example.html
@@ -0,0 +1,151 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: get_fortran.F</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>get_fortran.F</h1>get_fortran.F How to get values through the key names.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 C Copyright 2005-2016 ECMWF
+<a name="l00002"></a>00002 C This software is licensed under the terms of the Apache Licence Version 2.0
+<a name="l00003"></a>00003 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+<a name="l00004"></a>00004 C 
+<a name="l00005"></a>00005 C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+<a name="l00006"></a>00006 C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+<a name="l00007"></a>00007 C
+<a name="l00008"></a>00008 C  Fortran 77  Implementation: get_fortran
+<a name="l00009"></a>00009 C
+<a name="l00010"></a>00010 C  Description: how to <span class="keyword">get</span> values <span class="keyword">using</span> keys.
+<a name="l00011"></a>00011 C
+<a name="l00012"></a>00012 C  Author: Enrico Fucile
+<a name="l00013"></a>00013 C
+<a name="l00014"></a>00014 C
+<a name="l00015"></a>00015 C
+<a name="l00016"></a>00016       program <span class="keyword">get</span>
+<a name="l00017"></a>00017       implicit none
+<a name="l00018"></a>00018       integer maxNumberOfValues
+<a name="l00019"></a>00019       parameter( maxNumberOfValues = 10000 )
+<a name="l00020"></a>00020       include 'grib_api_f77.h'
+<a name="l00021"></a>00021       integer ifile
+<a name="l00022"></a>00022       integer iret
+<a name="l00023"></a>00023       integer igrib
+<a name="l00024"></a>00024       integer i
+<a name="l00025"></a>00025       real*8 latitudeOfFirstPointInDegrees
+<a name="l00026"></a>00026       real*8 longitudeOfFirstPointInDegrees
+<a name="l00027"></a>00027       real*8 latitudeOfLastPointInDegrees
+<a name="l00028"></a>00028       real*8 longitudeOfLastPointInDegrees
+<a name="l00029"></a>00029       real*8 jDirectionIncrementInDegrees
+<a name="l00030"></a>00030       real*8 iDirectionIncrementInDegrees
+<a name="l00031"></a>00031       integer*4 numberOfPointsAlongAParallel
+<a name="l00032"></a>00032       integer*4 numberOfPointsAlongAMeridian
+<a name="l00033"></a>00033       real*8 values(maxNumberOfValues)
+<a name="l00034"></a>00034       integer*4 numberOfValues
+<a name="l00035"></a>00035       real*8 average
+<a name="l00036"></a>00036       character*256 error
+<a name="l00037"></a>00037       integer*4 size
+<a name="l00038"></a>00038 
+<a name="l00039"></a>00039       size=maxNumberOfValues
+<a name="l00040"></a>00040       ifile=5
+<a name="l00041"></a>00041 
+<a name="l00042"></a>00042       iret=grib_open_file(ifile
+<a name="l00043"></a>00043      X,'../../data/regular_latlon_surface.grib1','r')
+<a name="l00044"></a>00044       call grib_check(iret)
+<a name="l00045"></a>00045 
+<a name="l00046"></a>00046 C     a new grib message is loaded from file
+<a name="l00047"></a>00047 C     igrib is the grib <span class="keywordtype">id</span> to be used in subsequent calls
+<a name="l00048"></a>00048       call grib_check( grib_new_from_file(ifile,igrib) )
+<a name="l00049"></a>00049 
+<a name="l00050"></a>00050 C     get as a integer
+<a name="l00051"></a>00051       call grib_check(grib_get_int(igrib,'numberOfPointsAlongAParallel'
+<a name="l00052"></a>00052      X,numberOfPointsAlongAParallel) )
+<a name="l00053"></a>00053       write(*,*) 'numberOfPointsAlongAParallel='
+<a name="l00054"></a>00054      X,numberOfPointsAlongAParallel
+<a name="l00055"></a>00055 
+<a name="l00056"></a>00056 C     get as a integer
+<a name="l00057"></a>00057       call grib_check( grib_get_int(igrib,'numberOfPointsAlongAMeridian'
+<a name="l00058"></a>00058      X,numberOfPointsAlongAMeridian) )
+<a name="l00059"></a>00059       write(*,*) 'numberOfPointsAlongAMeridian='
+<a name="l00060"></a>00060      X,numberOfPointsAlongAMeridian
+<a name="l00061"></a>00061 
+<a name="l00062"></a>00062 C     get as a real8
+<a name="l00063"></a>00063       call grib_check( grib_get_real8(igrib
+<a name="l00064"></a>00064      X,'latitudeOfFirstGridPointInDegrees'
+<a name="l00065"></a>00065      X,latitudeOfFirstPointInDegrees) )
+<a name="l00066"></a>00066        write(*,*) 'latitudeOfFirstGridPointInDegrees='
+<a name="l00067"></a>00067      X,latitudeOfFirstPointInDegrees
+<a name="l00068"></a>00068 
+<a name="l00069"></a>00069 C     get as a real8
+<a name="l00070"></a>00070       call grib_check( grib_get_real8(igrib
+<a name="l00071"></a>00071      X,'longitudeOfFirstGridPointInDegrees'
+<a name="l00072"></a>00072      X,longitudeOfFirstPointInDegrees) )
+<a name="l00073"></a>00073        write(*,*) 'longitudeOfFirstGridPointInDegrees='
+<a name="l00074"></a>00074      X,longitudeOfFirstPointInDegrees
+<a name="l00075"></a>00075 
+<a name="l00076"></a>00076 C     get as a real8
+<a name="l00077"></a>00077       call grib_check( grib_get_real8(igrib
+<a name="l00078"></a>00078      X,'latitudeOfLastGridPointInDegrees'
+<a name="l00079"></a>00079      X,latitudeOfLastPointInDegrees) )
+<a name="l00080"></a>00080        write(*,*) 'latitudeOfLastGridPointInDegrees='
+<a name="l00081"></a>00081      X,latitudeOfLastPointInDegrees
+<a name="l00082"></a>00082 
+<a name="l00083"></a>00083 C     get as a real8
+<a name="l00084"></a>00084       call grib_check( grib_get_real8(igrib
+<a name="l00085"></a>00085      X,'longitudeOfLastGridPointInDegrees'
+<a name="l00086"></a>00086      X,longitudeOfLastPointInDegrees) )
+<a name="l00087"></a>00087       write(*,*) 'longitudeOfLastGridPointInDegrees='
+<a name="l00088"></a>00088      X,longitudeOfLastPointInDegrees
+<a name="l00089"></a>00089 
+<a name="l00090"></a>00090 C     get as a real8
+<a name="l00091"></a>00091       call grib_check( grib_get_real8(igrib
+<a name="l00092"></a>00092      X,'jDirectionIncrementInDegrees'
+<a name="l00093"></a>00093      X,jDirectionIncrementInDegrees) )
+<a name="l00094"></a>00094       write(*,*) 'jDirectionIncrementInDegrees='
+<a name="l00095"></a>00095      X,jDirectionIncrementInDegrees
+<a name="l00096"></a>00096 
+<a name="l00097"></a>00097 C     get as a real8
+<a name="l00098"></a>00098       call grib_check( grib_get_real8(igrib
+<a name="l00099"></a>00099      X,'iDirectionIncrementInDegrees'
+<a name="l00100"></a>00100      X,iDirectionIncrementInDegrees) )
+<a name="l00101"></a>00101       write(*,*) 'iDirectionIncrementInDegrees='
+<a name="l00102"></a>00102      X,iDirectionIncrementInDegrees
+<a name="l00103"></a>00103 
+<a name="l00104"></a>00104 C     get the size of the values array
+<a name="l00105"></a>00105       call grib_check(<a name="a0"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(igrib,'values',numberOfValues))
+<a name="l00106"></a>00106       write(*,*) 'numberOfValues=',numberOfValues
+<a name="l00107"></a>00107 
+<a name="l00108"></a>00108 C     get data values
+<a name="l00109"></a>00109       call grib_check(grib_get_real8_array(igrib,'values',values,size))
+<a name="l00110"></a>00110       if ( size .ne. numberOfValues ) then
+<a name="l00111"></a>00111         write(*,*) 'ERROR: wrong numberOfValues'
+<a name="l00112"></a>00112         stop
+<a name="l00113"></a>00113       endif
+<a name="l00114"></a>00114 
+<a name="l00115"></a>00115       average = 0
+<a name="l00116"></a>00116       do i=1,numberOfValues
+<a name="l00117"></a>00117         average = average + values(i);
+<a name="l00118"></a>00118       enddo
+<a name="l00119"></a>00119 
+<a name="l00120"></a>00120       average =average / numberOfValues
+<a name="l00121"></a>00121 
+<a name="l00122"></a>00122       write(*,*)'There are ',numberOfValues
+<a name="l00123"></a>00123      X,' average is ',average
+<a name="l00124"></a>00124 
+<a name="l00125"></a>00125       call grib_check(grib_release(igrib))
+<a name="l00126"></a>00126 
+<a name="l00127"></a>00127       call grib_check(grib_close_file(ifile))
+<a name="l00128"></a>00128 
+<a name="l00129"></a>00129       end
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/get__pl_8f90-example.html b/html/get__pl_8f90-example.html
new file mode 100644
index 0000000..4895a2a
--- /dev/null
+++ b/html/get__pl_8f90-example.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: get_pl.f90</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>get_pl.f90</h1>How to get the list of number of points for each parallel in reduced grids.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
+<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+<a name="l00004"></a>00004 ! 
+<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+<a name="l00007"></a>00007 !
+<a name="l00008"></a>00008 !
+<a name="l00009"></a>00009 !  Description: how to <span class="keyword">get</span> PL values.
+<a name="l00010"></a>00010 !
+<a name="l00011"></a>00011 !
+<a name="l00012"></a>00012 !  Author: Anne Fouilloux
+<a name="l00013"></a>00013 !
+<a name="l00014"></a>00014 !
+<a name="l00015"></a>00015 program get_pl
+<a name="l00016"></a>00016   use grib_api
+<a name="l00017"></a>00017   implicit none
+<a name="l00018"></a>00018   integer                         :: infile
+<a name="l00019"></a>00019   integer                         :: igrib
+<a name="l00020"></a>00020   integer                         :: PLPresent, nb_pl
+<a name="l00021"></a>00021   real, dimension(:), allocatable :: pl
+<a name="l00022"></a>00022 
+<a name="l00023"></a>00023 
+<a name="l00024"></a>00024   call grib_open_file(infile, &
+<a name="l00025"></a>00025        '../../data/reduced_gaussian_surface.grib1<span class="charliteral">','</span>r')
+<a name="l00026"></a>00026   
+<a name="l00027"></a>00027   !     a <span class="keyword">new</span> grib message is loaded from file
+<a name="l00028"></a>00028   !     igrib is the grib <span class="keywordtype">id</span> to be used in subsequent calls
+<a name="l00029"></a>00029   call grib_new_from_file(infile,igrib)
+<a name="l00030"></a>00030   
+<a name="l00031"></a>00031   !     <span class="keyword">set</span> PVPresent as an integer 
+<a name="l00032"></a>00032   call grib_get(igrib,'PLPresent',PLPresent)
+<a name="l00033"></a>00033   print*, "PLPresent= ", PLPresent
+<a name="l00034"></a>00034   if (PLPresent == 1) then
+<a name="l00035"></a>00035      call <a name="a0"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(igrib,'pl',nb_pl)
+<a name="l00036"></a>00036      print*, "there are ", nb_pl, " PL values"
+<a name="l00037"></a>00037      allocate(pl(nb_pl))
+<a name="l00038"></a>00038      call grib_get(igrib,'pl',pl)
+<a name="l00039"></a>00039      print*, "pl = ", pl
+<a name="l00040"></a>00040      deallocate(pl)
+<a name="l00041"></a>00041   else
+<a name="l00042"></a>00042      print*, "There is no PL values in your GRIB message!"
+<a name="l00043"></a>00043   end if
+<a name="l00044"></a>00044   call grib_release(igrib)
+<a name="l00045"></a>00045      
+<a name="l00046"></a>00046   call grib_close_file(infile)
+<a name="l00047"></a>00047 
+<a name="l00048"></a>00048 end program get_pl
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/get__pv_8f90-example.html b/html/get__pv_8f90-example.html
new file mode 100644
index 0000000..752c8e7
--- /dev/null
+++ b/html/get__pv_8f90-example.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: get_pv.f90</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>get_pv.f90</h1>How to get the list of levels.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
+<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+<a name="l00004"></a>00004 ! 
+<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+<a name="l00007"></a>00007 !
+<a name="l00008"></a>00008 !
+<a name="l00009"></a>00009 !  Description: how to <span class="keyword">get</span> PV values.
+<a name="l00010"></a>00010 !
+<a name="l00011"></a>00011 !
+<a name="l00012"></a>00012 !  Author: Anne Fouilloux
+<a name="l00013"></a>00013 !
+<a name="l00014"></a>00014 !
+<a name="l00015"></a>00015 program get_pv
+<a name="l00016"></a>00016   use grib_api
+<a name="l00017"></a>00017   implicit none
+<a name="l00018"></a>00018   integer                         :: infile
+<a name="l00019"></a>00019   integer                         :: igrib
+<a name="l00020"></a>00020   integer                         :: PVPresent, nb_pv
+<a name="l00021"></a>00021   real, dimension(:), allocatable :: pv
+<a name="l00022"></a>00022   
+<a name="l00023"></a>00023 
+<a name="l00024"></a>00024   call grib_open_file(infile, &
+<a name="l00025"></a>00025        '../../data/reduced_gaussian_model_level.grib1<span class="charliteral">','</span>r')
+<a name="l00026"></a>00026   
+<a name="l00027"></a>00027   !     a <span class="keyword">new</span> grib message is loaded from file
+<a name="l00028"></a>00028   !     igrib is the grib <span class="keywordtype">id</span> to be used in subsequent calls
+<a name="l00029"></a>00029   call grib_new_from_file(infile,igrib)
+<a name="l00030"></a>00030   
+<a name="l00031"></a>00031   !     <span class="keyword">set</span> PVPresent as an integer 
+<a name="l00032"></a>00032   call grib_get(igrib,'PVPresent',PVPresent)
+<a name="l00033"></a>00033   print*, "PVPresent = ", PVPresent
+<a name="l00034"></a>00034   if (PVPresent == 1) then
+<a name="l00035"></a>00035      call <a name="a0"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(igrib,'pv',nb_pv)
+<a name="l00036"></a>00036      print*, "There are ", nb_pv, " PV values"
+<a name="l00037"></a>00037      allocate(pv(nb_pv))
+<a name="l00038"></a>00038      call grib_get(igrib,'pv',pv)
+<a name="l00039"></a>00039      print*, "pv = ", pv
+<a name="l00040"></a>00040      deallocate(pv)
+<a name="l00041"></a>00041   else
+<a name="l00042"></a>00042      print*, "There is no PV values in your GRIB message!"
+<a name="l00043"></a>00043   end if
+<a name="l00044"></a>00044   call grib_release(igrib)
+<a name="l00045"></a>00045   
+<a name="l00046"></a>00046   call grib_close_file(infile)
+<a name="l00047"></a>00047   
+<a name="l00048"></a>00048 end program get_pv
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/globals.html b/html/globals.html
new file mode 100644
index 0000000..62d1ebe
--- /dev/null
+++ b/html/globals.html
@@ -0,0 +1,360 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+  </ul>
+</div>
+<div class="tabs">
+  <ul>
+    <li class="current"><a href="globals.html"><span>All</span></a></li>
+    <li><a href="globals_func.html"><span>Functions</span></a></li>
+    <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+    <li><a href="globals_defs.html"><span>Defines</span></a></li>
+  </ul>
+</div>
+<div class="tabs">
+  <ul>
+    <li><a href="#index_g"><span>g</span></a></li>
+  </ul>
+</div>
+
+<p>
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+<p>
+<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
+<li>GRIB_7777_NOT_FOUND
+: <a class="el" href="grib__api_8h.html#639bb601cfd8d954e49cc7886ea1c6ad">grib_api.h</a>
+<li>GRIB_ARRAY_TOO_SMALL
+: <a class="el" href="grib__api_8h.html#4cfa6d261a3a15912702143929053227">grib_api.h</a>
+<li>GRIB_BUFFER_TOO_SMALL
+: <a class="el" href="grib__api_8h.html#2d8e7aa042bcbaf91aa090a369a33db6">grib_api.h</a>
+<li>GRIB_CODE_NOT_FOUND_IN_TABLE
+: <a class="el" href="grib__api_8h.html#75648d913f443d2a480e408b59884a92">grib_api.h</a>
+<li>GRIB_CONCEPT_NO_MATCH
+: <a class="el" href="grib__api_8h.html#1a973e1ef2c6ae7fb132bdece2563fef">grib_api.h</a>
+<li>GRIB_CONSTANT_FIELD
+: <a class="el" href="grib__api_8h.html#38f3c639d01804ef1240463b2beb44e9">grib_api.h</a>
+<li>grib_context
+: <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_api.h</a>
+<li>grib_context_delete()
+: <a class="el" href="group__context.html#g4bd1c4d8b32c1ae42227420ed2251d57">grib_api.h</a>
+<li>grib_context_get_default()
+: <a class="el" href="group__context.html#g01ce1b8dc121afe1fd8212ceef8c829d">grib_api.h</a>
+<li>grib_context_get_user_data()
+: <a class="el" href="group__context.html#g7063ea5ce72ed460a1978c26dbc6af89">grib_api.h</a>
+<li>grib_context_new()
+: <a class="el" href="group__context.html#gbbb93339feef87a0ef7c415fa484c022">grib_api.h</a>
+<li>grib_context_set_buffer_memory_proc()
+: <a class="el" href="group__context.html#g13ac96fc6a017f896cfe1325fcd7aa6b">grib_api.h</a>
+<li>grib_context_set_dump_mode()
+: <a class="el" href="group__context.html#gd007cf96b681b389dadbbb9e7540e321">grib_api.h</a>
+<li>grib_context_set_logging_proc()
+: <a class="el" href="group__context.html#g09581ce8cdeff9da0f38a78898097b9e">grib_api.h</a>
+<li>grib_context_set_memory_proc()
+: <a class="el" href="group__context.html#gf38d04b9b8438fca7a418b507915030a">grib_api.h</a>
+<li>grib_context_set_path()
+: <a class="el" href="group__context.html#g06f0601960b317f15b78396ed12b1881">grib_api.h</a>
+<li>grib_context_set_persistent_memory_proc()
+: <a class="el" href="group__context.html#g5cd4b2513883a0d5989d5643087c4097">grib_api.h</a>
+<li>grib_context_set_print_proc()
+: <a class="el" href="group__context.html#g68b597e40215c9ced7959c7350980d2f">grib_api.h</a>
+<li>grib_context_set_user_data()
+: <a class="el" href="group__context.html#gec49c14665a9b4faa90a74cb069b9a30">grib_api.h</a>
+<li>grib_copy_namespace()
+: <a class="el" href="group__get__set.html#g6315ad72aaaf7577bc7b9f546c506e74">grib_api.h</a>
+<li>grib_count_in_file()
+: <a class="el" href="group__grib__handle.html#gc7f5cb6af67fd0a42bec5376d5b54682">grib_api.h</a>
+<li>grib_data_eof_proc
+: <a class="el" href="group__context.html#g49b4be77db1a3764ca291e7b45fce366">grib_api.h</a>
+<li>grib_data_read_proc
+: <a class="el" href="group__context.html#gfcaeb1a8fb78e0028906ee1e2ddbfcc0">grib_api.h</a>
+<li>grib_data_seek_proc
+: <a class="el" href="group__context.html#g9d4894f207e7f5d70533371915e45a2d">grib_api.h</a>
+<li>grib_data_tell_proc
+: <a class="el" href="group__context.html#g5fc575ad1d5736763f2d688b82597b09">grib_api.h</a>
+<li>grib_data_write_proc
+: <a class="el" href="group__context.html#g85f5907a2b006b370be8e176e92d0248">grib_api.h</a>
+<li>GRIB_DECODING_ERROR
+: <a class="el" href="grib__api_8h.html#4d24b723749a821f0853a2013d45746c">grib_api.h</a>
+<li>grib_dump_action_tree()
+: <a class="el" href="grib__api_8h.html#e1d347fdb06db3df5b5cba33cd2ea1a1">grib_api.h</a>
+<li>grib_dump_content()
+: <a class="el" href="grib__api_8h.html#67479e527e19f5a5b99696f37994ba21">grib_api.h</a>
+<li>GRIB_ENCODING_ERROR
+: <a class="el" href="grib__api_8h.html#154c771c186435e746ab12d9a48905ab">grib_api.h</a>
+<li>GRIB_END
+: <a class="el" href="grib__api_8h.html#86c56896fe711d7b879f1fbf305fd468">grib_api.h</a>
+<li>GRIB_END_OF_FILE
+: <a class="el" href="grib__api_8h.html#3bd3d72fe8bc116ca08c2d4b99203768">grib_api.h</a>
+<li>GRIB_END_OF_INDEX
+: <a class="el" href="grib__api_8h.html#afa8827ca82c170dc27bcfb723b6ba76">grib_api.h</a>
+<li>GRIB_FILE_NOT_FOUND
+: <a class="el" href="grib__api_8h.html#3441223fb03920c378d38c6f50e98d4a">grib_api.h</a>
+<li>grib_free_proc
+: <a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca">grib_api.h</a>
+<li>GRIB_GEOCALCULUS_PROBLEM
+: <a class="el" href="grib__api_8h.html#482b9d48445b7ad202be877e8cc10ea8">grib_api.h</a>
+<li>grib_get_all_names()
+: <a class="el" href="grib__api_8h.html#289f68694d96f1af8a2c1a8de422e1b2">grib_api.h</a>
+<li>grib_get_api_version()
+: <a class="el" href="grib__api_8h.html#4e9690b3960a8c6607de77d41a47735f">grib_api.h</a>
+<li>grib_get_bytes()
+: <a class="el" href="group__get__set.html#g1b1ac2da661c638dad7d223419d541c6">grib_api.h</a>
+<li>grib_get_context()
+: <a class="el" href="group__context.html#ge4d49e82f57836891aa57fce24b59800">grib_api.h</a>
+<li>grib_get_double()
+: <a class="el" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e">grib_api.h</a>
+<li>grib_get_double_array()
+: <a class="el" href="group__get__set.html#g61f1029d7f37d51f33835e218d58378a">grib_api.h</a>
+<li>grib_get_double_element()
+: <a class="el" href="group__get__set.html#gec894541bbc8c4e9093803ce21146fa5">grib_api.h</a>
+<li>grib_get_double_elements()
+: <a class="el" href="group__get__set.html#gdff349943fef1036fcd1dd7a69738a7a">grib_api.h</a>
+<li>grib_get_error_message()
+: <a class="el" href="grib__api_8h.html#8e3f942fa243dd09f04d4ff6d2f43d36">grib_api.h</a>
+<li>grib_get_long()
+: <a class="el" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526">grib_api.h</a>
+<li>grib_get_long_array()
+: <a class="el" href="group__get__set.html#ga05493cedfee55f0b83d27e356123223">grib_api.h</a>
+<li>grib_get_message()
+: <a class="el" href="group__handling__coded__messages.html#g9d654bd4fc5f422c161edd0a140ea185">grib_api.h</a>
+<li>grib_get_message_copy()
+: <a class="el" href="group__handling__coded__messages.html#g9248c021d985da70cfeb075e469db874">grib_api.h</a>
+<li>grib_get_offset()
+: <a class="el" href="group__get__set.html#g3b40c8174568a6e2b7563a0e89d20ddf">grib_api.h</a>
+<li>grib_get_size()
+: <a class="el" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245">grib_api.h</a>
+<li>grib_get_string()
+: <a class="el" href="group__get__set.html#g8aeaf9f930eea1cc0f15e92f18a25053">grib_api.h</a>
+<li>grib_gribex_mode_off()
+: <a class="el" href="group__context.html#g6f6a5612649241d9ecae7e2a288bc436">grib_api.h</a>
+<li>grib_gribex_mode_on()
+: <a class="el" href="group__context.html#ge8e9e3cce24d282a1b34432926b868c0">grib_api.h</a>
+<li>grib_gts_header_off()
+: <a class="el" href="group__context.html#g9a3ce8e25ef3e59387015f906a79901a">grib_api.h</a>
+<li>grib_gts_header_on()
+: <a class="el" href="group__context.html#g8d72ab772809fba49a41b32909770dd1">grib_api.h</a>
+<li>grib_handle
+: <a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_api.h</a>
+<li>grib_handle_clone()
+: <a class="el" href="group__grib__handle.html#ga63c93533fbbe2c8df482e19ca97c651">grib_api.h</a>
+<li>grib_handle_delete()
+: <a class="el" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677">grib_api.h</a>
+<li>grib_handle_new_from_file()
+: <a class="el" href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5">grib_api.h</a>
+<li>grib_handle_new_from_index()
+: <a class="el" href="group__grib__index.html#ge7b9b1d59bd37a13de7e631e05606d8c">grib_api.h</a>
+<li>grib_handle_new_from_message()
+: <a class="el" href="group__grib__handle.html#gcf9ab4896fac2fbbe30a33b4d6028a01">grib_api.h</a>
+<li>grib_handle_new_from_message_copy()
+: <a class="el" href="group__grib__handle.html#gba8b4cc36b1a882c8a12716ef011d6be">grib_api.h</a>
+<li>grib_handle_new_from_multi_message()
+: <a class="el" href="group__grib__handle.html#g5990754a829e1d7a7ae4c5a1a8296bf2">grib_api.h</a>
+<li>grib_handle_new_from_samples()
+: <a class="el" href="group__grib__handle.html#gadefac64c19fb5ff06cf805ad4af06ff">grib_api.h</a>
+<li>grib_handle_new_from_template()
+: <a class="el" href="group__grib__handle.html#g11d247e5afa10bd52fb895dc4296143f">grib_api.h</a>
+<li>grib_index
+: <a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_api.h</a>
+<li>grib_index_delete()
+: <a class="el" href="group__grib__index.html#g13f2bb63c67bf8792c6678d3cc3daff7">grib_api.h</a>
+<li>grib_index_get_double()
+: <a class="el" href="group__grib__index.html#g814801233070dfd22304cdb06422d13a">grib_api.h</a>
+<li>grib_index_get_long()
+: <a class="el" href="group__grib__index.html#g85b6b4443f0f1230a7508aa15654697f">grib_api.h</a>
+<li>grib_index_get_size()
+: <a class="el" href="group__grib__index.html#g10236732fcb0c8d8e4a6bd8530d24672">grib_api.h</a>
+<li>grib_index_get_string()
+: <a class="el" href="group__grib__index.html#gd593e39f908bb6a7208be37eb9eba066">grib_api.h</a>
+<li>grib_index_new_from_file()
+: <a class="el" href="group__grib__index.html#g877e704bf0454a6a4ce91b382e808861">grib_api.h</a>
+<li>grib_index_select_double()
+: <a class="el" href="group__grib__index.html#g445565c93345d4c2e8fdbfe0b83fd16f">grib_api.h</a>
+<li>grib_index_select_long()
+: <a class="el" href="group__grib__index.html#g3c1009708be6ae6605b63a48f8dbaa0c">grib_api.h</a>
+<li>grib_index_select_string()
+: <a class="el" href="group__grib__index.html#gc3808ccf7101fc437da4a89a2b28f39d">grib_api.h</a>
+<li>GRIB_INTERNAL_ARRAY_TOO_SMALL
+: <a class="el" href="grib__api_8h.html#aaa04f4cf931846628d4e71e40b02349">grib_api.h</a>
+<li>GRIB_INTERNAL_ERROR
+: <a class="el" href="grib__api_8h.html#f8cf05fc5d45cb95ad0972bdcc3f08d3">grib_api.h</a>
+<li>GRIB_INVALID_ARGUMENT
+: <a class="el" href="grib__api_8h.html#9b9c7d3380e2e440d8c16ec1d49a4c17">grib_api.h</a>
+<li>GRIB_INVALID_FILE
+: <a class="el" href="grib__api_8h.html#c8091f4d703636468d7c303be9e4d881">grib_api.h</a>
+<li>GRIB_INVALID_GRIB
+: <a class="el" href="grib__api_8h.html#533ac9a5250151b97b6c7650db56897d">grib_api.h</a>
+<li>GRIB_INVALID_INDEX
+: <a class="el" href="grib__api_8h.html#519a1c9eddd9ce63ef87fd182c008737">grib_api.h</a>
+<li>GRIB_INVALID_ITERATOR
+: <a class="el" href="grib__api_8h.html#45eb384ee2e382f1acac24594d66c6b0">grib_api.h</a>
+<li>GRIB_INVALID_KEYS_ITERATOR
+: <a class="el" href="grib__api_8h.html#36309323248d2ac3729a4552c2fb1c17">grib_api.h</a>
+<li>GRIB_INVALID_MESSAGE
+: <a class="el" href="grib__api_8h.html#926f6ede936bd30c5339c94f2d84c8ae">grib_api.h</a>
+<li>GRIB_INVALID_NEAREST
+: <a class="el" href="grib__api_8h.html#aa0306c1ea428240fce27176dafbd7fe">grib_api.h</a>
+<li>GRIB_INVALID_ORDERBY
+: <a class="el" href="grib__api_8h.html#762034d39b53d2861f2743b0aec8d2a4">grib_api.h</a>
+<li>GRIB_INVALID_SECTION_NUMBER
+: <a class="el" href="grib__api_8h.html#9d2c9bfa553a51b2fcab92ad31bef8ef">grib_api.h</a>
+<li>GRIB_INVALID_TYPE
+: <a class="el" href="grib__api_8h.html#fc09d64f4cb3ba8d272b9e3c9b5dd363">grib_api.h</a>
+<li>GRIB_IO_PROBLEM
+: <a class="el" href="grib__api_8h.html#a7fe5a55b1005f7c3d14e8bfaee33271">grib_api.h</a>
+<li>grib_iterator
+: <a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_api.h</a>
+<li>grib_iterator_delete()
+: <a class="el" href="group__iterators.html#gd46ed73a16af56e6f3b46fe86ee8a759">grib_api.h</a>
+<li>grib_iterator_has_next()
+: <a class="el" href="group__iterators.html#g7beddf03a8335d5058a0760929af9b65">grib_api.h</a>
+<li>grib_iterator_new()
+: <a class="el" href="group__iterators.html#gefb1f87110bdce732edc9154cf0e7d58">grib_api.h</a>
+<li>grib_iterator_next()
+: <a class="el" href="group__iterators.html#g4f73056dbfdda3de0060559b9b39ea34">grib_api.h</a>
+<li>grib_iterator_previous()
+: <a class="el" href="group__iterators.html#ge33e4a6d3a2222f78ffc43eb7239ce3f">grib_api.h</a>
+<li>grib_iterator_reset()
+: <a class="el" href="group__iterators.html#gb8f3830e919c3c11f11530c08e9956c8">grib_api.h</a>
+<li>grib_keys_iterator
+: <a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_api.h</a>
+<li>GRIB_KEYS_ITERATOR_ALL_KEYS
+: <a class="el" href="group__keys__iterator.html#g0e4d2d943ddd61d0b877060e6fbea405">grib_api.h</a>
+<li>grib_keys_iterator_delete()
+: <a class="el" href="group__keys__iterator.html#g79716d2b701c3dbb3d3a8e633f35a40a">grib_api.h</a>
+<li>grib_keys_iterator_get_name()
+: <a class="el" href="group__keys__iterator.html#gec3348471f770965c07964e286249e12">grib_api.h</a>
+<li>grib_keys_iterator_new()
+: <a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_api.h</a>
+<li>grib_keys_iterator_next()
+: <a class="el" href="group__keys__iterator.html#g28f6ac808ecdc324fa3a47bc7b3f6dec">grib_api.h</a>
+<li>grib_keys_iterator_rewind()
+: <a class="el" href="group__keys__iterator.html#g15ceb24c7b8ac673d948ccdaf1ba5fd6">grib_api.h</a>
+<li>GRIB_KEYS_ITERATOR_SKIP_CODED
+: <a class="el" href="group__keys__iterator.html#g52ad3f33022d82a46cd80cb99a1307ff">grib_api.h</a>
+<li>GRIB_KEYS_ITERATOR_SKIP_COMPUTED
+: <a class="el" href="group__keys__iterator.html#g26fe182483e385904cc68695b1c42131">grib_api.h</a>
+<li>GRIB_KEYS_ITERATOR_SKIP_DUPLICATES
+: <a class="el" href="group__keys__iterator.html#ge64e8f24f3094903d6a686a213f92e4e">grib_api.h</a>
+<li>GRIB_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC
+: <a class="el" href="group__keys__iterator.html#g37ad0fca3eb784fed7e2b4a44e1ca2b6">grib_api.h</a>
+<li>GRIB_KEYS_ITERATOR_SKIP_FUNCTION
+: <a class="el" href="group__keys__iterator.html#gcbef496e484e5e18c799f74dd5cdfff7">grib_api.h</a>
+<li>GRIB_KEYS_ITERATOR_SKIP_OPTIONAL
+: <a class="el" href="group__keys__iterator.html#ge665875b6303dab2265bbb088c723860">grib_api.h</a>
+<li>GRIB_KEYS_ITERATOR_SKIP_READ_ONLY
+: <a class="el" href="group__keys__iterator.html#g22b6978a432db7211a270438077f7062">grib_api.h</a>
+<li>grib_log_proc
+: <a class="el" href="group__context.html#gba007477d7d085d602184ae4df95f994">grib_api.h</a>
+<li>grib_malloc_proc
+: <a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_api.h</a>
+<li>GRIB_MESSAGE_TOO_LARGE
+: <a class="el" href="grib__api_8h.html#1e15e27a144761974cea9e90f2ba168d">grib_api.h</a>
+<li>GRIB_MISSING_KEY
+: <a class="el" href="grib__api_8h.html#8fd56a3beb7556606f644091aba1fcbd">grib_api.h</a>
+<li>grib_multi_handle
+: <a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_api.h</a>
+<li>grib_multi_handle_append()
+: <a class="el" href="group__grib__handle.html#gb723d513ef118d0f2d8c440e15387337">grib_api.h</a>
+<li>grib_multi_handle_delete()
+: <a class="el" href="group__grib__handle.html#g706fb50a5a16b6932adb05d27a8ac626">grib_api.h</a>
+<li>grib_multi_handle_new()
+: <a class="el" href="group__grib__handle.html#g9e1911fcd2b32380937e2d60469d2d22">grib_api.h</a>
+<li>grib_multi_handle_write()
+: <a class="el" href="group__grib__handle.html#g48fc85388ca1ee23f6afa12bb0c125ed">grib_api.h</a>
+<li>grib_multi_support_off()
+: <a class="el" href="group__context.html#gc022270a99922ccc57147670ed2a58d4">grib_api.h</a>
+<li>grib_multi_support_on()
+: <a class="el" href="group__context.html#g3266536e68ebb6d4bbc4a22b29f0e8ea">grib_api.h</a>
+<li>grib_nearest
+: <a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_api.h</a>
+<li>grib_nearest_delete()
+: <a class="el" href="group__iterators.html#g2b3c0069013e1ad7b3e34f30b4659c15">grib_api.h</a>
+<li>grib_nearest_find()
+: <a class="el" href="group__iterators.html#g15043a2482608fb93a0385f3c3e86926">grib_api.h</a>
+<li>grib_nearest_find_multiple()
+: <a class="el" href="group__iterators.html#g4923d7a2e414c743410f1de71bb9648c">grib_api.h</a>
+<li>grib_nearest_new()
+: <a class="el" href="group__iterators.html#g4bd616cf0d0c4f5f147f4a207ddc7687">grib_api.h</a>
+<li>GRIB_NO_DEFINITIONS
+: <a class="el" href="grib__api_8h.html#8cd08a4486ad956bf1f20434f84cd04e">grib_api.h</a>
+<li>GRIB_NO_MORE_IN_SET
+: <a class="el" href="grib__api_8h.html#7fc7702ef0de098b4a58e2fb9c9a442c">grib_api.h</a>
+<li>GRIB_NO_VALUES
+: <a class="el" href="grib__api_8h.html#dfdf56b00d215ff68aeb1adbffc348ce">grib_api.h</a>
+<li>GRIB_NOT_FOUND
+: <a class="el" href="grib__api_8h.html#86c4b3873fded7e8ea28644dcbcd5f87">grib_api.h</a>
+<li>GRIB_NOT_IMPLEMENTED
+: <a class="el" href="grib__api_8h.html#5a0fab73e448bc57ddd04b59506ccd71">grib_api.h</a>
+<li>GRIB_NULL_HANDLE
+: <a class="el" href="grib__api_8h.html#1c5efccc4485ae72e7714d2443e6d89c">grib_api.h</a>
+<li>GRIB_NULL_INDEX
+: <a class="el" href="grib__api_8h.html#042ed38858c5cf72be88cfada1737f3b">grib_api.h</a>
+<li>GRIB_OUT_OF_AREA
+: <a class="el" href="grib__api_8h.html#ba25cca898d918763a9a8a9bd3860f00">grib_api.h</a>
+<li>GRIB_OUT_OF_MEMORY
+: <a class="el" href="grib__api_8h.html#b405f321cbb4b4c7dec9eb1bd4b65b50">grib_api.h</a>
+<li>GRIB_PREMATURE_END_OF_FILE
+: <a class="el" href="grib__api_8h.html#3baff96d54517c85e433f8150642ef0b">grib_api.h</a>
+<li>grib_print_api_version()
+: <a class="el" href="grib__api_8h.html#3cd2a817acbefb3089bfa36d2b40f1db">grib_api.h</a>
+<li>grib_print_proc
+: <a class="el" href="group__context.html#gd18d790f8aabf46e6b766eab07b535a0">grib_api.h</a>
+<li>GRIB_READ_ONLY
+: <a class="el" href="grib__api_8h.html#e18012f7fad721db7f865655f2b5956e">grib_api.h</a>
+<li>grib_realloc_proc
+: <a class="el" href="group__context.html#gcfc03db8667b1019d896ab2ab47dc12d">grib_api.h</a>
+<li>grib_set_bytes()
+: <a class="el" href="group__get__set.html#g4437bd0aa70cc2c2f942ace67023f4a1">grib_api.h</a>
+<li>grib_set_double()
+: <a class="el" href="group__get__set.html#g3f8802a5d3f2e7557e35e6e83acfc9e9">grib_api.h</a>
+<li>grib_set_double_array()
+: <a class="el" href="group__get__set.html#ga24d87e236a2469309d1176ee5925d77">grib_api.h</a>
+<li>grib_set_long()
+: <a class="el" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2">grib_api.h</a>
+<li>grib_set_long_array()
+: <a class="el" href="group__get__set.html#g6c4697dc7c6f450ad30d0a24a3f87016">grib_api.h</a>
+<li>grib_set_string()
+: <a class="el" href="group__get__set.html#g78143cc64571b454b0aba14246e9a53a">grib_api.h</a>
+<li>GRIB_STRING_TOO_SMALL_FOR_CODE_NAME
+: <a class="el" href="grib__api_8h.html#4c26f350e2a20a2cd810a7e8a890973f">grib_api.h</a>
+<li>GRIB_SUCCESS
+: <a class="el" href="grib__api_8h.html#5ec59f24fc07a0e9d05768e908b9eb41">grib_api.h</a>
+<li>GRIB_SWITCH_NO_MATCH
+: <a class="el" href="grib__api_8h.html#83d93f23c64220209e5c326a38f32003">grib_api.h</a>
+<li>GRIB_VALUE_CANNOT_BE_MISSING
+: <a class="el" href="grib__api_8h.html#b075c9c53912dc18ea9feee1f710cb18">grib_api.h</a>
+<li>GRIB_WRONG_ARRAY_SIZE
+: <a class="el" href="grib__api_8h.html#b04c311e9de064f156fd238dbf04afef">grib_api.h</a>
+<li>GRIB_WRONG_GRID
+: <a class="el" href="grib__api_8h.html#5a73a75bffabf39673ba9bc3a4b164b6">grib_api.h</a>
+<li>GRIB_WRONG_LENGTH
+: <a class="el" href="grib__api_8h.html#1792ca7e8d3e6f3e4bc2dc406408ec8f">grib_api.h</a>
+<li>GRIB_WRONG_STEP
+: <a class="el" href="grib__api_8h.html#08dcf5be008fd3c7a524ab3de96f88c2">grib_api.h</a>
+<li>GRIB_WRONG_STEP_UNIT
+: <a class="el" href="grib__api_8h.html#c10988d7d2b76f906e1281c2a6602b1a">grib_api.h</a>
+<li>GRIB_WRONG_TYPE
+: <a class="el" href="grib__api_8h.html#53847b78a3259d3df6c76042360cbd97">grib_api.h</a>
+</ul>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/globals_defs.html b/html/globals_defs.html
new file mode 100644
index 0000000..c0beeb5
--- /dev/null
+++ b/html/globals_defs.html
@@ -0,0 +1,162 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+  </ul>
+</div>
+<div class="tabs">
+  <ul>
+    <li><a href="globals.html"><span>All</span></a></li>
+    <li><a href="globals_func.html"><span>Functions</span></a></li>
+    <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+    <li class="current"><a href="globals_defs.html"><span>Defines</span></a></li>
+  </ul>
+</div>
+<div class="tabs">
+  <ul>
+    <li><a href="#index_g"><span>g</span></a></li>
+  </ul>
+</div>
+
+<p>
+ 
+<p>
+<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
+<li>GRIB_7777_NOT_FOUND
+: <a class="el" href="grib__api_8h.html#639bb601cfd8d954e49cc7886ea1c6ad">grib_api.h</a>
+<li>GRIB_ARRAY_TOO_SMALL
+: <a class="el" href="grib__api_8h.html#4cfa6d261a3a15912702143929053227">grib_api.h</a>
+<li>GRIB_BUFFER_TOO_SMALL
+: <a class="el" href="grib__api_8h.html#2d8e7aa042bcbaf91aa090a369a33db6">grib_api.h</a>
+<li>GRIB_CODE_NOT_FOUND_IN_TABLE
+: <a class="el" href="grib__api_8h.html#75648d913f443d2a480e408b59884a92">grib_api.h</a>
+<li>GRIB_CONCEPT_NO_MATCH
+: <a class="el" href="grib__api_8h.html#1a973e1ef2c6ae7fb132bdece2563fef">grib_api.h</a>
+<li>GRIB_CONSTANT_FIELD
+: <a class="el" href="grib__api_8h.html#38f3c639d01804ef1240463b2beb44e9">grib_api.h</a>
+<li>GRIB_DECODING_ERROR
+: <a class="el" href="grib__api_8h.html#4d24b723749a821f0853a2013d45746c">grib_api.h</a>
+<li>GRIB_ENCODING_ERROR
+: <a class="el" href="grib__api_8h.html#154c771c186435e746ab12d9a48905ab">grib_api.h</a>
+<li>GRIB_END
+: <a class="el" href="grib__api_8h.html#86c56896fe711d7b879f1fbf305fd468">grib_api.h</a>
+<li>GRIB_END_OF_FILE
+: <a class="el" href="grib__api_8h.html#3bd3d72fe8bc116ca08c2d4b99203768">grib_api.h</a>
+<li>GRIB_END_OF_INDEX
+: <a class="el" href="grib__api_8h.html#afa8827ca82c170dc27bcfb723b6ba76">grib_api.h</a>
+<li>GRIB_FILE_NOT_FOUND
+: <a class="el" href="grib__api_8h.html#3441223fb03920c378d38c6f50e98d4a">grib_api.h</a>
+<li>GRIB_GEOCALCULUS_PROBLEM
+: <a class="el" href="grib__api_8h.html#482b9d48445b7ad202be877e8cc10ea8">grib_api.h</a>
+<li>GRIB_INTERNAL_ARRAY_TOO_SMALL
+: <a class="el" href="grib__api_8h.html#aaa04f4cf931846628d4e71e40b02349">grib_api.h</a>
+<li>GRIB_INTERNAL_ERROR
+: <a class="el" href="grib__api_8h.html#f8cf05fc5d45cb95ad0972bdcc3f08d3">grib_api.h</a>
+<li>GRIB_INVALID_ARGUMENT
+: <a class="el" href="grib__api_8h.html#9b9c7d3380e2e440d8c16ec1d49a4c17">grib_api.h</a>
+<li>GRIB_INVALID_FILE
+: <a class="el" href="grib__api_8h.html#c8091f4d703636468d7c303be9e4d881">grib_api.h</a>
+<li>GRIB_INVALID_GRIB
+: <a class="el" href="grib__api_8h.html#533ac9a5250151b97b6c7650db56897d">grib_api.h</a>
+<li>GRIB_INVALID_INDEX
+: <a class="el" href="grib__api_8h.html#519a1c9eddd9ce63ef87fd182c008737">grib_api.h</a>
+<li>GRIB_INVALID_ITERATOR
+: <a class="el" href="grib__api_8h.html#45eb384ee2e382f1acac24594d66c6b0">grib_api.h</a>
+<li>GRIB_INVALID_KEYS_ITERATOR
+: <a class="el" href="grib__api_8h.html#36309323248d2ac3729a4552c2fb1c17">grib_api.h</a>
+<li>GRIB_INVALID_MESSAGE
+: <a class="el" href="grib__api_8h.html#926f6ede936bd30c5339c94f2d84c8ae">grib_api.h</a>
+<li>GRIB_INVALID_NEAREST
+: <a class="el" href="grib__api_8h.html#aa0306c1ea428240fce27176dafbd7fe">grib_api.h</a>
+<li>GRIB_INVALID_ORDERBY
+: <a class="el" href="grib__api_8h.html#762034d39b53d2861f2743b0aec8d2a4">grib_api.h</a>
+<li>GRIB_INVALID_SECTION_NUMBER
+: <a class="el" href="grib__api_8h.html#9d2c9bfa553a51b2fcab92ad31bef8ef">grib_api.h</a>
+<li>GRIB_INVALID_TYPE
+: <a class="el" href="grib__api_8h.html#fc09d64f4cb3ba8d272b9e3c9b5dd363">grib_api.h</a>
+<li>GRIB_IO_PROBLEM
+: <a class="el" href="grib__api_8h.html#a7fe5a55b1005f7c3d14e8bfaee33271">grib_api.h</a>
+<li>GRIB_KEYS_ITERATOR_ALL_KEYS
+: <a class="el" href="group__keys__iterator.html#g0e4d2d943ddd61d0b877060e6fbea405">grib_api.h</a>
+<li>GRIB_KEYS_ITERATOR_SKIP_CODED
+: <a class="el" href="group__keys__iterator.html#g52ad3f33022d82a46cd80cb99a1307ff">grib_api.h</a>
+<li>GRIB_KEYS_ITERATOR_SKIP_COMPUTED
+: <a class="el" href="group__keys__iterator.html#g26fe182483e385904cc68695b1c42131">grib_api.h</a>
+<li>GRIB_KEYS_ITERATOR_SKIP_DUPLICATES
+: <a class="el" href="group__keys__iterator.html#ge64e8f24f3094903d6a686a213f92e4e">grib_api.h</a>
+<li>GRIB_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC
+: <a class="el" href="group__keys__iterator.html#g37ad0fca3eb784fed7e2b4a44e1ca2b6">grib_api.h</a>
+<li>GRIB_KEYS_ITERATOR_SKIP_FUNCTION
+: <a class="el" href="group__keys__iterator.html#gcbef496e484e5e18c799f74dd5cdfff7">grib_api.h</a>
+<li>GRIB_KEYS_ITERATOR_SKIP_OPTIONAL
+: <a class="el" href="group__keys__iterator.html#ge665875b6303dab2265bbb088c723860">grib_api.h</a>
+<li>GRIB_KEYS_ITERATOR_SKIP_READ_ONLY
+: <a class="el" href="group__keys__iterator.html#g22b6978a432db7211a270438077f7062">grib_api.h</a>
+<li>GRIB_MESSAGE_TOO_LARGE
+: <a class="el" href="grib__api_8h.html#1e15e27a144761974cea9e90f2ba168d">grib_api.h</a>
+<li>GRIB_MISSING_KEY
+: <a class="el" href="grib__api_8h.html#8fd56a3beb7556606f644091aba1fcbd">grib_api.h</a>
+<li>GRIB_NO_DEFINITIONS
+: <a class="el" href="grib__api_8h.html#8cd08a4486ad956bf1f20434f84cd04e">grib_api.h</a>
+<li>GRIB_NO_MORE_IN_SET
+: <a class="el" href="grib__api_8h.html#7fc7702ef0de098b4a58e2fb9c9a442c">grib_api.h</a>
+<li>GRIB_NO_VALUES
+: <a class="el" href="grib__api_8h.html#dfdf56b00d215ff68aeb1adbffc348ce">grib_api.h</a>
+<li>GRIB_NOT_FOUND
+: <a class="el" href="grib__api_8h.html#86c4b3873fded7e8ea28644dcbcd5f87">grib_api.h</a>
+<li>GRIB_NOT_IMPLEMENTED
+: <a class="el" href="grib__api_8h.html#5a0fab73e448bc57ddd04b59506ccd71">grib_api.h</a>
+<li>GRIB_NULL_HANDLE
+: <a class="el" href="grib__api_8h.html#1c5efccc4485ae72e7714d2443e6d89c">grib_api.h</a>
+<li>GRIB_NULL_INDEX
+: <a class="el" href="grib__api_8h.html#042ed38858c5cf72be88cfada1737f3b">grib_api.h</a>
+<li>GRIB_OUT_OF_AREA
+: <a class="el" href="grib__api_8h.html#ba25cca898d918763a9a8a9bd3860f00">grib_api.h</a>
+<li>GRIB_OUT_OF_MEMORY
+: <a class="el" href="grib__api_8h.html#b405f321cbb4b4c7dec9eb1bd4b65b50">grib_api.h</a>
+<li>GRIB_PREMATURE_END_OF_FILE
+: <a class="el" href="grib__api_8h.html#3baff96d54517c85e433f8150642ef0b">grib_api.h</a>
+<li>GRIB_READ_ONLY
+: <a class="el" href="grib__api_8h.html#e18012f7fad721db7f865655f2b5956e">grib_api.h</a>
+<li>GRIB_STRING_TOO_SMALL_FOR_CODE_NAME
+: <a class="el" href="grib__api_8h.html#4c26f350e2a20a2cd810a7e8a890973f">grib_api.h</a>
+<li>GRIB_SUCCESS
+: <a class="el" href="grib__api_8h.html#5ec59f24fc07a0e9d05768e908b9eb41">grib_api.h</a>
+<li>GRIB_SWITCH_NO_MATCH
+: <a class="el" href="grib__api_8h.html#83d93f23c64220209e5c326a38f32003">grib_api.h</a>
+<li>GRIB_VALUE_CANNOT_BE_MISSING
+: <a class="el" href="grib__api_8h.html#b075c9c53912dc18ea9feee1f710cb18">grib_api.h</a>
+<li>GRIB_WRONG_ARRAY_SIZE
+: <a class="el" href="grib__api_8h.html#b04c311e9de064f156fd238dbf04afef">grib_api.h</a>
+<li>GRIB_WRONG_GRID
+: <a class="el" href="grib__api_8h.html#5a73a75bffabf39673ba9bc3a4b164b6">grib_api.h</a>
+<li>GRIB_WRONG_LENGTH
+: <a class="el" href="grib__api_8h.html#1792ca7e8d3e6f3e4bc2dc406408ec8f">grib_api.h</a>
+<li>GRIB_WRONG_STEP
+: <a class="el" href="grib__api_8h.html#08dcf5be008fd3c7a524ab3de96f88c2">grib_api.h</a>
+<li>GRIB_WRONG_STEP_UNIT
+: <a class="el" href="grib__api_8h.html#c10988d7d2b76f906e1281c2a6602b1a">grib_api.h</a>
+<li>GRIB_WRONG_TYPE
+: <a class="el" href="grib__api_8h.html#53847b78a3259d3df6c76042360cbd97">grib_api.h</a>
+</ul>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/globals_func.html b/html/globals_func.html
new file mode 100644
index 0000000..ab4bfe4
--- /dev/null
+++ b/html/globals_func.html
@@ -0,0 +1,210 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+  </ul>
+</div>
+<div class="tabs">
+  <ul>
+    <li><a href="globals.html"><span>All</span></a></li>
+    <li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
+    <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+    <li><a href="globals_defs.html"><span>Defines</span></a></li>
+  </ul>
+</div>
+<div class="tabs">
+  <ul>
+    <li><a href="#index_g"><span>g</span></a></li>
+  </ul>
+</div>
+
+<p>
+ 
+<p>
+<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
+<li>grib_context_delete()
+: <a class="el" href="group__context.html#g4bd1c4d8b32c1ae42227420ed2251d57">grib_api.h</a>
+<li>grib_context_get_default()
+: <a class="el" href="group__context.html#g01ce1b8dc121afe1fd8212ceef8c829d">grib_api.h</a>
+<li>grib_context_get_user_data()
+: <a class="el" href="group__context.html#g7063ea5ce72ed460a1978c26dbc6af89">grib_api.h</a>
+<li>grib_context_new()
+: <a class="el" href="group__context.html#gbbb93339feef87a0ef7c415fa484c022">grib_api.h</a>
+<li>grib_context_set_buffer_memory_proc()
+: <a class="el" href="group__context.html#g13ac96fc6a017f896cfe1325fcd7aa6b">grib_api.h</a>
+<li>grib_context_set_dump_mode()
+: <a class="el" href="group__context.html#gd007cf96b681b389dadbbb9e7540e321">grib_api.h</a>
+<li>grib_context_set_logging_proc()
+: <a class="el" href="group__context.html#g09581ce8cdeff9da0f38a78898097b9e">grib_api.h</a>
+<li>grib_context_set_memory_proc()
+: <a class="el" href="group__context.html#gf38d04b9b8438fca7a418b507915030a">grib_api.h</a>
+<li>grib_context_set_path()
+: <a class="el" href="group__context.html#g06f0601960b317f15b78396ed12b1881">grib_api.h</a>
+<li>grib_context_set_persistent_memory_proc()
+: <a class="el" href="group__context.html#g5cd4b2513883a0d5989d5643087c4097">grib_api.h</a>
+<li>grib_context_set_print_proc()
+: <a class="el" href="group__context.html#g68b597e40215c9ced7959c7350980d2f">grib_api.h</a>
+<li>grib_context_set_user_data()
+: <a class="el" href="group__context.html#gec49c14665a9b4faa90a74cb069b9a30">grib_api.h</a>
+<li>grib_copy_namespace()
+: <a class="el" href="group__get__set.html#g6315ad72aaaf7577bc7b9f546c506e74">grib_api.h</a>
+<li>grib_count_in_file()
+: <a class="el" href="group__grib__handle.html#gc7f5cb6af67fd0a42bec5376d5b54682">grib_api.h</a>
+<li>grib_dump_action_tree()
+: <a class="el" href="grib__api_8h.html#e1d347fdb06db3df5b5cba33cd2ea1a1">grib_api.h</a>
+<li>grib_dump_content()
+: <a class="el" href="grib__api_8h.html#67479e527e19f5a5b99696f37994ba21">grib_api.h</a>
+<li>grib_get_all_names()
+: <a class="el" href="grib__api_8h.html#289f68694d96f1af8a2c1a8de422e1b2">grib_api.h</a>
+<li>grib_get_api_version()
+: <a class="el" href="grib__api_8h.html#4e9690b3960a8c6607de77d41a47735f">grib_api.h</a>
+<li>grib_get_bytes()
+: <a class="el" href="group__get__set.html#g1b1ac2da661c638dad7d223419d541c6">grib_api.h</a>
+<li>grib_get_context()
+: <a class="el" href="group__context.html#ge4d49e82f57836891aa57fce24b59800">grib_api.h</a>
+<li>grib_get_double()
+: <a class="el" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e">grib_api.h</a>
+<li>grib_get_double_array()
+: <a class="el" href="group__get__set.html#g61f1029d7f37d51f33835e218d58378a">grib_api.h</a>
+<li>grib_get_double_element()
+: <a class="el" href="group__get__set.html#gec894541bbc8c4e9093803ce21146fa5">grib_api.h</a>
+<li>grib_get_double_elements()
+: <a class="el" href="group__get__set.html#gdff349943fef1036fcd1dd7a69738a7a">grib_api.h</a>
+<li>grib_get_error_message()
+: <a class="el" href="grib__api_8h.html#8e3f942fa243dd09f04d4ff6d2f43d36">grib_api.h</a>
+<li>grib_get_long()
+: <a class="el" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526">grib_api.h</a>
+<li>grib_get_long_array()
+: <a class="el" href="group__get__set.html#ga05493cedfee55f0b83d27e356123223">grib_api.h</a>
+<li>grib_get_message()
+: <a class="el" href="group__handling__coded__messages.html#g9d654bd4fc5f422c161edd0a140ea185">grib_api.h</a>
+<li>grib_get_message_copy()
+: <a class="el" href="group__handling__coded__messages.html#g9248c021d985da70cfeb075e469db874">grib_api.h</a>
+<li>grib_get_offset()
+: <a class="el" href="group__get__set.html#g3b40c8174568a6e2b7563a0e89d20ddf">grib_api.h</a>
+<li>grib_get_size()
+: <a class="el" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245">grib_api.h</a>
+<li>grib_get_string()
+: <a class="el" href="group__get__set.html#g8aeaf9f930eea1cc0f15e92f18a25053">grib_api.h</a>
+<li>grib_gribex_mode_off()
+: <a class="el" href="group__context.html#g6f6a5612649241d9ecae7e2a288bc436">grib_api.h</a>
+<li>grib_gribex_mode_on()
+: <a class="el" href="group__context.html#ge8e9e3cce24d282a1b34432926b868c0">grib_api.h</a>
+<li>grib_gts_header_off()
+: <a class="el" href="group__context.html#g9a3ce8e25ef3e59387015f906a79901a">grib_api.h</a>
+<li>grib_gts_header_on()
+: <a class="el" href="group__context.html#g8d72ab772809fba49a41b32909770dd1">grib_api.h</a>
+<li>grib_handle_clone()
+: <a class="el" href="group__grib__handle.html#ga63c93533fbbe2c8df482e19ca97c651">grib_api.h</a>
+<li>grib_handle_delete()
+: <a class="el" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677">grib_api.h</a>
+<li>grib_handle_new_from_file()
+: <a class="el" href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5">grib_api.h</a>
+<li>grib_handle_new_from_index()
+: <a class="el" href="group__grib__index.html#ge7b9b1d59bd37a13de7e631e05606d8c">grib_api.h</a>
+<li>grib_handle_new_from_message()
+: <a class="el" href="group__grib__handle.html#gcf9ab4896fac2fbbe30a33b4d6028a01">grib_api.h</a>
+<li>grib_handle_new_from_message_copy()
+: <a class="el" href="group__grib__handle.html#gba8b4cc36b1a882c8a12716ef011d6be">grib_api.h</a>
+<li>grib_handle_new_from_multi_message()
+: <a class="el" href="group__grib__handle.html#g5990754a829e1d7a7ae4c5a1a8296bf2">grib_api.h</a>
+<li>grib_handle_new_from_samples()
+: <a class="el" href="group__grib__handle.html#gadefac64c19fb5ff06cf805ad4af06ff">grib_api.h</a>
+<li>grib_handle_new_from_template()
+: <a class="el" href="group__grib__handle.html#g11d247e5afa10bd52fb895dc4296143f">grib_api.h</a>
+<li>grib_index_delete()
+: <a class="el" href="group__grib__index.html#g13f2bb63c67bf8792c6678d3cc3daff7">grib_api.h</a>
+<li>grib_index_get_double()
+: <a class="el" href="group__grib__index.html#g814801233070dfd22304cdb06422d13a">grib_api.h</a>
+<li>grib_index_get_long()
+: <a class="el" href="group__grib__index.html#g85b6b4443f0f1230a7508aa15654697f">grib_api.h</a>
+<li>grib_index_get_size()
+: <a class="el" href="group__grib__index.html#g10236732fcb0c8d8e4a6bd8530d24672">grib_api.h</a>
+<li>grib_index_get_string()
+: <a class="el" href="group__grib__index.html#gd593e39f908bb6a7208be37eb9eba066">grib_api.h</a>
+<li>grib_index_new_from_file()
+: <a class="el" href="group__grib__index.html#g877e704bf0454a6a4ce91b382e808861">grib_api.h</a>
+<li>grib_index_select_double()
+: <a class="el" href="group__grib__index.html#g445565c93345d4c2e8fdbfe0b83fd16f">grib_api.h</a>
+<li>grib_index_select_long()
+: <a class="el" href="group__grib__index.html#g3c1009708be6ae6605b63a48f8dbaa0c">grib_api.h</a>
+<li>grib_index_select_string()
+: <a class="el" href="group__grib__index.html#gc3808ccf7101fc437da4a89a2b28f39d">grib_api.h</a>
+<li>grib_iterator_delete()
+: <a class="el" href="group__iterators.html#gd46ed73a16af56e6f3b46fe86ee8a759">grib_api.h</a>
+<li>grib_iterator_has_next()
+: <a class="el" href="group__iterators.html#g7beddf03a8335d5058a0760929af9b65">grib_api.h</a>
+<li>grib_iterator_new()
+: <a class="el" href="group__iterators.html#gefb1f87110bdce732edc9154cf0e7d58">grib_api.h</a>
+<li>grib_iterator_next()
+: <a class="el" href="group__iterators.html#g4f73056dbfdda3de0060559b9b39ea34">grib_api.h</a>
+<li>grib_iterator_previous()
+: <a class="el" href="group__iterators.html#ge33e4a6d3a2222f78ffc43eb7239ce3f">grib_api.h</a>
+<li>grib_iterator_reset()
+: <a class="el" href="group__iterators.html#gb8f3830e919c3c11f11530c08e9956c8">grib_api.h</a>
+<li>grib_keys_iterator_delete()
+: <a class="el" href="group__keys__iterator.html#g79716d2b701c3dbb3d3a8e633f35a40a">grib_api.h</a>
+<li>grib_keys_iterator_get_name()
+: <a class="el" href="group__keys__iterator.html#gec3348471f770965c07964e286249e12">grib_api.h</a>
+<li>grib_keys_iterator_new()
+: <a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_api.h</a>
+<li>grib_keys_iterator_next()
+: <a class="el" href="group__keys__iterator.html#g28f6ac808ecdc324fa3a47bc7b3f6dec">grib_api.h</a>
+<li>grib_keys_iterator_rewind()
+: <a class="el" href="group__keys__iterator.html#g15ceb24c7b8ac673d948ccdaf1ba5fd6">grib_api.h</a>
+<li>grib_multi_handle_append()
+: <a class="el" href="group__grib__handle.html#gb723d513ef118d0f2d8c440e15387337">grib_api.h</a>
+<li>grib_multi_handle_delete()
+: <a class="el" href="group__grib__handle.html#g706fb50a5a16b6932adb05d27a8ac626">grib_api.h</a>
+<li>grib_multi_handle_new()
+: <a class="el" href="group__grib__handle.html#g9e1911fcd2b32380937e2d60469d2d22">grib_api.h</a>
+<li>grib_multi_handle_write()
+: <a class="el" href="group__grib__handle.html#g48fc85388ca1ee23f6afa12bb0c125ed">grib_api.h</a>
+<li>grib_multi_support_off()
+: <a class="el" href="group__context.html#gc022270a99922ccc57147670ed2a58d4">grib_api.h</a>
+<li>grib_multi_support_on()
+: <a class="el" href="group__context.html#g3266536e68ebb6d4bbc4a22b29f0e8ea">grib_api.h</a>
+<li>grib_nearest_delete()
+: <a class="el" href="group__iterators.html#g2b3c0069013e1ad7b3e34f30b4659c15">grib_api.h</a>
+<li>grib_nearest_find()
+: <a class="el" href="group__iterators.html#g15043a2482608fb93a0385f3c3e86926">grib_api.h</a>
+<li>grib_nearest_find_multiple()
+: <a class="el" href="group__iterators.html#g4923d7a2e414c743410f1de71bb9648c">grib_api.h</a>
+<li>grib_nearest_new()
+: <a class="el" href="group__iterators.html#g4bd616cf0d0c4f5f147f4a207ddc7687">grib_api.h</a>
+<li>grib_print_api_version()
+: <a class="el" href="grib__api_8h.html#3cd2a817acbefb3089bfa36d2b40f1db">grib_api.h</a>
+<li>grib_set_bytes()
+: <a class="el" href="group__get__set.html#g4437bd0aa70cc2c2f942ace67023f4a1">grib_api.h</a>
+<li>grib_set_double()
+: <a class="el" href="group__get__set.html#g3f8802a5d3f2e7557e35e6e83acfc9e9">grib_api.h</a>
+<li>grib_set_double_array()
+: <a class="el" href="group__get__set.html#ga24d87e236a2469309d1176ee5925d77">grib_api.h</a>
+<li>grib_set_long()
+: <a class="el" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2">grib_api.h</a>
+<li>grib_set_long_array()
+: <a class="el" href="group__get__set.html#g6c4697dc7c6f450ad30d0a24a3f87016">grib_api.h</a>
+<li>grib_set_string()
+: <a class="el" href="group__get__set.html#g78143cc64571b454b0aba14246e9a53a">grib_api.h</a>
+</ul>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/globals_type.html b/html/globals_type.html
new file mode 100644
index 0000000..5bc06ef
--- /dev/null
+++ b/html/globals_type.html
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+  </ul>
+</div>
+<div class="tabs">
+  <ul>
+    <li><a href="globals.html"><span>All</span></a></li>
+    <li><a href="globals_func.html"><span>Functions</span></a></li>
+    <li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li>
+    <li><a href="globals_defs.html"><span>Defines</span></a></li>
+  </ul>
+</div>
+ 
+<p>
+<ul>
+<li>grib_context
+: <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_api.h</a>
+<li>grib_data_eof_proc
+: <a class="el" href="group__context.html#g49b4be77db1a3764ca291e7b45fce366">grib_api.h</a>
+<li>grib_data_read_proc
+: <a class="el" href="group__context.html#gfcaeb1a8fb78e0028906ee1e2ddbfcc0">grib_api.h</a>
+<li>grib_data_seek_proc
+: <a class="el" href="group__context.html#g9d4894f207e7f5d70533371915e45a2d">grib_api.h</a>
+<li>grib_data_tell_proc
+: <a class="el" href="group__context.html#g5fc575ad1d5736763f2d688b82597b09">grib_api.h</a>
+<li>grib_data_write_proc
+: <a class="el" href="group__context.html#g85f5907a2b006b370be8e176e92d0248">grib_api.h</a>
+<li>grib_free_proc
+: <a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca">grib_api.h</a>
+<li>grib_handle
+: <a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_api.h</a>
+<li>grib_index
+: <a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_api.h</a>
+<li>grib_iterator
+: <a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_api.h</a>
+<li>grib_keys_iterator
+: <a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_api.h</a>
+<li>grib_log_proc
+: <a class="el" href="group__context.html#gba007477d7d085d602184ae4df95f994">grib_api.h</a>
+<li>grib_malloc_proc
+: <a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_api.h</a>
+<li>grib_multi_handle
+: <a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_api.h</a>
+<li>grib_nearest
+: <a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_api.h</a>
+<li>grib_print_proc
+: <a class="el" href="group__context.html#gd18d790f8aabf46e6b766eab07b535a0">grib_api.h</a>
+<li>grib_realloc_proc
+: <a class="el" href="group__context.html#gcfc03db8667b1019d896ab2ab47dc12d">grib_api.h</a>
+</ul>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/grib__api_8h.html b/html/grib__api_8h.html
new file mode 100644
index 0000000..387efb6
--- /dev/null
+++ b/html/grib__api_8h.html
@@ -0,0 +1,1602 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: grib_api.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>grib_api.h File Reference</h1>Copyright 2005-2016 ECMWF. <a href="#_details">More...</a>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g0e4d2d943ddd61d0b877060e6fbea405">GRIB_KEYS_ITERATOR_ALL_KEYS</a>   0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g22b6978a432db7211a270438077f7062">GRIB_KEYS_ITERATOR_SKIP_READ_ONLY</a>   (1<<0)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ge665875b6303dab2265bbb088c723860">GRIB_KEYS_ITERATOR_SKIP_OPTIONAL</a>   (1<<1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g37ad0fca3eb784fed7e2b4a44e1ca2b6">GRIB_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC</a>   (1<<2)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g52ad3f33022d82a46cd80cb99a1307ff">GRIB_KEYS_ITERATOR_SKIP_CODED</a>   (1<<3)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g26fe182483e385904cc68695b1c42131">GRIB_KEYS_ITERATOR_SKIP_COMPUTED</a>   (1<<4)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ge64e8f24f3094903d6a686a213f92e4e">GRIB_KEYS_ITERATOR_SKIP_DUPLICATES</a>   (1<<5)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#gcbef496e484e5e18c799f74dd5cdfff7">GRIB_KEYS_ITERATOR_SKIP_FUNCTION</a>   (1<<6)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#5ec59f24fc07a0e9d05768e908b9eb41">GRIB_SUCCESS</a>   0</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">No error.  <a href="#5ec59f24fc07a0e9d05768e908b9eb41"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#3bd3d72fe8bc116ca08c2d4b99203768">GRIB_END_OF_FILE</a>   -1</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">End of ressource reached.  <a href="#3bd3d72fe8bc116ca08c2d4b99203768"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#f8cf05fc5d45cb95ad0972bdcc3f08d3">GRIB_INTERNAL_ERROR</a>   -2</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Internal error.  <a href="#f8cf05fc5d45cb95ad0972bdcc3f08d3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#2d8e7aa042bcbaf91aa090a369a33db6">GRIB_BUFFER_TOO_SMALL</a>   -3</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Passed buffer is too small.  <a href="#2d8e7aa042bcbaf91aa090a369a33db6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#5a0fab73e448bc57ddd04b59506ccd71">GRIB_NOT_IMPLEMENTED</a>   -4</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Function not yet implemented.  <a href="#5a0fab73e448bc57ddd04b59506ccd71"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#639bb601cfd8d954e49cc7886ea1c6ad">GRIB_7777_NOT_FOUND</a>   -5</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Missing 7777 at end of message.  <a href="#639bb601cfd8d954e49cc7886ea1c6ad"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#4cfa6d261a3a15912702143929053227">GRIB_ARRAY_TOO_SMALL</a>   -6</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Passed array is too small.  <a href="#4cfa6d261a3a15912702143929053227"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#3441223fb03920c378d38c6f50e98d4a">GRIB_FILE_NOT_FOUND</a>   -7</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">File not found.  <a href="#3441223fb03920c378d38c6f50e98d4a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#75648d913f443d2a480e408b59884a92">GRIB_CODE_NOT_FOUND_IN_TABLE</a>   -8</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Code not found in code table.  <a href="#75648d913f443d2a480e408b59884a92"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#4c26f350e2a20a2cd810a7e8a890973f">GRIB_STRING_TOO_SMALL_FOR_CODE_NAME</a>   -9</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Code cannot unpack because of string too small.  <a href="#4c26f350e2a20a2cd810a7e8a890973f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#b04c311e9de064f156fd238dbf04afef">GRIB_WRONG_ARRAY_SIZE</a>   -10</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Array size mismatch.  <a href="#b04c311e9de064f156fd238dbf04afef"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#86c4b3873fded7e8ea28644dcbcd5f87">GRIB_NOT_FOUND</a>   -11</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Key/value not found.  <a href="#86c4b3873fded7e8ea28644dcbcd5f87"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#a7fe5a55b1005f7c3d14e8bfaee33271">GRIB_IO_PROBLEM</a>   -12</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Input output problem.  <a href="#a7fe5a55b1005f7c3d14e8bfaee33271"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#926f6ede936bd30c5339c94f2d84c8ae">GRIB_INVALID_MESSAGE</a>   -13</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Message invalid.  <a href="#926f6ede936bd30c5339c94f2d84c8ae"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#4d24b723749a821f0853a2013d45746c">GRIB_DECODING_ERROR</a>   -14</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Decoding invalid.  <a href="#4d24b723749a821f0853a2013d45746c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#154c771c186435e746ab12d9a48905ab">GRIB_ENCODING_ERROR</a>   -15</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Encoding invalid.  <a href="#154c771c186435e746ab12d9a48905ab"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#7fc7702ef0de098b4a58e2fb9c9a442c">GRIB_NO_MORE_IN_SET</a>   -16</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Code cannot unpack because of string too small.  <a href="#7fc7702ef0de098b4a58e2fb9c9a442c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#482b9d48445b7ad202be877e8cc10ea8">GRIB_GEOCALCULUS_PROBLEM</a>   -17</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Problem with calculation of geographic attributes.  <a href="#482b9d48445b7ad202be877e8cc10ea8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#b405f321cbb4b4c7dec9eb1bd4b65b50">GRIB_OUT_OF_MEMORY</a>   -18</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Out of memory.  <a href="#b405f321cbb4b4c7dec9eb1bd4b65b50"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#e18012f7fad721db7f865655f2b5956e">GRIB_READ_ONLY</a>   -19</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Value is read only.  <a href="#e18012f7fad721db7f865655f2b5956e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#9b9c7d3380e2e440d8c16ec1d49a4c17">GRIB_INVALID_ARGUMENT</a>   -20</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Invalid argument.  <a href="#9b9c7d3380e2e440d8c16ec1d49a4c17"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#1c5efccc4485ae72e7714d2443e6d89c">GRIB_NULL_HANDLE</a>   -21</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Null handle.  <a href="#1c5efccc4485ae72e7714d2443e6d89c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#9d2c9bfa553a51b2fcab92ad31bef8ef">GRIB_INVALID_SECTION_NUMBER</a>   -22</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Invalid section number.  <a href="#9d2c9bfa553a51b2fcab92ad31bef8ef"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#b075c9c53912dc18ea9feee1f710cb18">GRIB_VALUE_CANNOT_BE_MISSING</a>   -23</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Value cannot be missing.  <a href="#b075c9c53912dc18ea9feee1f710cb18"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#1792ca7e8d3e6f3e4bc2dc406408ec8f">GRIB_WRONG_LENGTH</a>   -24</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Wrong message length.  <a href="#1792ca7e8d3e6f3e4bc2dc406408ec8f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#fc09d64f4cb3ba8d272b9e3c9b5dd363">GRIB_INVALID_TYPE</a>   -25</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Invalid key type.  <a href="#fc09d64f4cb3ba8d272b9e3c9b5dd363"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#08dcf5be008fd3c7a524ab3de96f88c2">GRIB_WRONG_STEP</a>   -26</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Unable to set step.  <a href="#08dcf5be008fd3c7a524ab3de96f88c2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#c10988d7d2b76f906e1281c2a6602b1a">GRIB_WRONG_STEP_UNIT</a>   -27</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Wrong units for step (step must be integer).  <a href="#c10988d7d2b76f906e1281c2a6602b1a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#c8091f4d703636468d7c303be9e4d881">GRIB_INVALID_FILE</a>   -28</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Invalid file id.  <a href="#c8091f4d703636468d7c303be9e4d881"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#533ac9a5250151b97b6c7650db56897d">GRIB_INVALID_GRIB</a>   -29</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Invalid grib id.  <a href="#533ac9a5250151b97b6c7650db56897d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#519a1c9eddd9ce63ef87fd182c008737">GRIB_INVALID_INDEX</a>   -30</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Invalid index id.  <a href="#519a1c9eddd9ce63ef87fd182c008737"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#45eb384ee2e382f1acac24594d66c6b0">GRIB_INVALID_ITERATOR</a>   -31</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Invalid iterator id.  <a href="#45eb384ee2e382f1acac24594d66c6b0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#36309323248d2ac3729a4552c2fb1c17">GRIB_INVALID_KEYS_ITERATOR</a>   -32</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Invalid keys iterator id.  <a href="#36309323248d2ac3729a4552c2fb1c17"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#aa0306c1ea428240fce27176dafbd7fe">GRIB_INVALID_NEAREST</a>   -33</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Invalid nearest id.  <a href="#aa0306c1ea428240fce27176dafbd7fe"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#762034d39b53d2861f2743b0aec8d2a4">GRIB_INVALID_ORDERBY</a>   -34</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Invalid order by.  <a href="#762034d39b53d2861f2743b0aec8d2a4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#8fd56a3beb7556606f644091aba1fcbd">GRIB_MISSING_KEY</a>   -35</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Missing a key from the fieldset.  <a href="#8fd56a3beb7556606f644091aba1fcbd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#ba25cca898d918763a9a8a9bd3860f00">GRIB_OUT_OF_AREA</a>   -36</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The point is out of the grid area.  <a href="#ba25cca898d918763a9a8a9bd3860f00"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#1a973e1ef2c6ae7fb132bdece2563fef">GRIB_CONCEPT_NO_MATCH</a>   -37</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Concept no match.  <a href="#1a973e1ef2c6ae7fb132bdece2563fef"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#8cd08a4486ad956bf1f20434f84cd04e">GRIB_NO_DEFINITIONS</a>   -38</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Definitions files not found.  <a href="#8cd08a4486ad956bf1f20434f84cd04e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#53847b78a3259d3df6c76042360cbd97">GRIB_WRONG_TYPE</a>   -39</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Wrong type while packing.  <a href="#53847b78a3259d3df6c76042360cbd97"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#86c56896fe711d7b879f1fbf305fd468">GRIB_END</a>   -40</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">End of resource.  <a href="#86c56896fe711d7b879f1fbf305fd468"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#dfdf56b00d215ff68aeb1adbffc348ce">GRIB_NO_VALUES</a>   -41</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Unable to code a field without values.  <a href="#dfdf56b00d215ff68aeb1adbffc348ce"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#5a73a75bffabf39673ba9bc3a4b164b6">GRIB_WRONG_GRID</a>   -42</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grid description is wrong or inconsistent.  <a href="#5a73a75bffabf39673ba9bc3a4b164b6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#afa8827ca82c170dc27bcfb723b6ba76">GRIB_END_OF_INDEX</a>   -43</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">End of index reached.  <a href="#afa8827ca82c170dc27bcfb723b6ba76"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#042ed38858c5cf72be88cfada1737f3b">GRIB_NULL_INDEX</a>   -44</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Null index.  <a href="#042ed38858c5cf72be88cfada1737f3b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#3baff96d54517c85e433f8150642ef0b">GRIB_PREMATURE_END_OF_FILE</a>   -45</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">End of ressource reached when reading message.  <a href="#3baff96d54517c85e433f8150642ef0b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#aaa04f4cf931846628d4e71e40b02349">GRIB_INTERNAL_ARRAY_TOO_SMALL</a>   -46</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">An internal array is too small.  <a href="#aaa04f4cf931846628d4e71e40b02349"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#1e15e27a144761974cea9e90f2ba168d">GRIB_MESSAGE_TOO_LARGE</a>   -47</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Message is too large for the current architecture.  <a href="#1e15e27a144761974cea9e90f2ba168d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#38f3c639d01804ef1240463b2beb44e9">GRIB_CONSTANT_FIELD</a>   -48</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Constant field.  <a href="#38f3c639d01804ef1240463b2beb44e9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#83d93f23c64220209e5c326a38f32003">GRIB_SWITCH_NO_MATCH</a>   -49</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Switch unable to find a matching case.  <a href="#83d93f23c64220209e5c326a38f32003"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <br>
+<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <br>
+<a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <br>
+<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <br>
+<a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <br>
+<a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <br>
+<a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca">grib_free_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *data)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib free procedure, format of a procedure referenced in the context that is used to free memory.  <a href="group__context.html#g807998f481ebb5ab8916b23669bc38ca"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, size_t length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib malloc procedure, format of a procedure referenced in the context that is used to allocate memory.  <a href="group__context.html#ge40ef151522f628d0a0300861e1869e0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gcfc03db8667b1019d896ab2ab47dc12d">grib_realloc_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *data, size_t length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib realloc procedure, format of a procedure referenced in the context that is used to reallocate memory.  <a href="group__context.html#gcfc03db8667b1019d896ab2ab47dc12d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gba007477d7d085d602184ae4df95f994">grib_log_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, int level, const char *mesg)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib loc proc, format of a procedure referenced in the context that is used to log internal messages.  <a href="group__context.html#gba007477d7d085d602184ae4df95f994"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gd18d790f8aabf46e6b766eab07b535a0">grib_print_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *descriptor, const char *mesg)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib print proc, format of a procedure referenced in the context that is used to print external messages.  <a href="group__context.html#gd18d790f8aabf46e6b766eab07b535a0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef size_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gfcaeb1a8fb78e0028906ee1e2ddbfcc0">grib_data_read_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *ptr, size_t size, void *stream)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib data read proc, format of a procedure referenced in the context that is used to read from a stream in a resource.  <a href="group__context.html#gfcaeb1a8fb78e0028906ee1e2ddbfcc0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef size_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g85f5907a2b006b370be8e176e92d0248">grib_data_write_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, const void *ptr, size_t size, void *stream)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib data read write, format of a procedure referenced in the context that is used to write to a stream from a resource.  <a href="group__context.html#g85f5907a2b006b370be8e176e92d0248"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef off_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g5fc575ad1d5736763f2d688b82597b09">grib_data_tell_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *stream)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib data tell, format of a procedure referenced in the context that is used to tell the current position in a stream.  <a href="group__context.html#g5fc575ad1d5736763f2d688b82597b09"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef off_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g9d4894f207e7f5d70533371915e45a2d">grib_data_seek_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, off_t offset, int whence, void *stream)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib data seek, format of a procedure referenced in the context that is used to seek the current position in a stream.  <a href="group__context.html#g9d4894f207e7f5d70533371915e45a2d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g49b4be77db1a3764ca291e7b45fce366">grib_data_eof_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *stream)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib data eof, format of a procedure referenced in the context that is used to test end of file.  <a href="group__context.html#g49b4be77db1a3764ca291e7b45fce366"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__index.html#g877e704bf0454a6a4ce91b382e808861">grib_index_new_from_file</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, char *filename, const char *keys, int *err)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new index form a file.  <a href="group__grib__index.html#g877e704bf0454a6a4ce91b382e808861"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__index.html#g10236732fcb0c8d8e4a6bd8530d24672">grib_index_get_size</a> (<a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a> *index, const char *key, size_t *size)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the number of distinct values of the key in argument contained in the index.  <a href="group__grib__index.html#g10236732fcb0c8d8e4a6bd8530d24672"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__index.html#g85b6b4443f0f1230a7508aa15654697f">grib_index_get_long</a> (<a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a> *index, const char *key, long *values, size_t *size)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="group__grib__index.html#g85b6b4443f0f1230a7508aa15654697f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__index.html#g814801233070dfd22304cdb06422d13a">grib_index_get_double</a> (<a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a> *index, const char *key, double *values, size_t *size)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="group__grib__index.html#g814801233070dfd22304cdb06422d13a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__index.html#gd593e39f908bb6a7208be37eb9eba066">grib_index_get_string</a> (<a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a> *index, const char *key, char **values, size_t *size)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="group__grib__index.html#gd593e39f908bb6a7208be37eb9eba066"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__index.html#g3c1009708be6ae6605b63a48f8dbaa0c">grib_index_select_long</a> (<a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a> *index, const char *key, long value)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="group__grib__index.html#g3c1009708be6ae6605b63a48f8dbaa0c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__index.html#g445565c93345d4c2e8fdbfe0b83fd16f">grib_index_select_double</a> (<a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a> *index, const char *key, double value)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="group__grib__index.html#g445565c93345d4c2e8fdbfe0b83fd16f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__index.html#gc3808ccf7101fc437da4a89a2b28f39d">grib_index_select_string</a> (<a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a> *index, const char *key, char *value)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="group__grib__index.html#gc3808ccf7101fc437da4a89a2b28f39d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__index.html#ge7b9b1d59bd37a13de7e631e05606d8c">grib_handle_new_from_index</a> (<a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a> *index, int *err)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new handle from an index after having selected the key values.  <a href="group__grib__index.html#ge7b9b1d59bd37a13de7e631e05606d8c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__index.html#g13f2bb63c67bf8792c6678d3cc3daff7">grib_index_delete</a> (<a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a> *index)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Delete the index.  <a href="group__grib__index.html#g13f2bb63c67bf8792c6678d3cc3daff7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#gc7f5cb6af67fd0a42bec5376d5b54682">grib_count_in_file</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, FILE *f, int *n)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Counts the messages contained in a file resource.  <a href="group__grib__handle.html#gc7f5cb6af67fd0a42bec5376d5b54682"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5">grib_handle_new_from_file</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, FILE *f, int *error)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a file resource.  <a href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#gcf9ab4896fac2fbbe30a33b4d6028a01">grib_handle_new_from_message</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *data, size_t data_len)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a user message in memory.  <a href="group__grib__handle.html#gcf9ab4896fac2fbbe30a33b4d6028a01"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g5990754a829e1d7a7ae4c5a1a8296bf2">grib_handle_new_from_multi_message</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void **data, size_t *data_len, int *error)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a user message in memory.  <a href="group__grib__handle.html#g5990754a829e1d7a7ae4c5a1a8296bf2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#gba8b4cc36b1a882c8a12716ef011d6be">grib_handle_new_from_message_copy</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, const void *data, size_t data_len)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a user message.  <a href="group__grib__handle.html#gba8b4cc36b1a882c8a12716ef011d6be"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g11d247e5afa10bd52fb895dc4296143f">grib_handle_new_from_template</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, const char *res_name)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a read_only template resource.  <a href="group__grib__handle.html#g11d247e5afa10bd52fb895dc4296143f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#gadefac64c19fb5ff06cf805ad4af06ff">grib_handle_new_from_samples</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, const char *res_name)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a message contained in a samples directory.  <a href="group__grib__handle.html#gadefac64c19fb5ff06cf805ad4af06ff"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#ga63c93533fbbe2c8df482e19ca97c651">grib_handle_clone</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Clone an existing handle using the context of the original handle, The message is copied and reparsed.  <a href="group__grib__handle.html#ga63c93533fbbe2c8df482e19ca97c651"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677">grib_handle_delete</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees a handle, also frees the message if it is not a user message.  <a href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g9e1911fcd2b32380937e2d60469d2d22">grib_multi_handle_new</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create an empty multi field handle.  <a href="group__grib__handle.html#g9e1911fcd2b32380937e2d60469d2d22"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#gb723d513ef118d0f2d8c440e15387337">grib_multi_handle_append</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, int start_section, <a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> *mh)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Append the sections starting with start_section of the message pointed by h at the end of the multi field handle mh.  <a href="group__grib__handle.html#gb723d513ef118d0f2d8c440e15387337"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g706fb50a5a16b6932adb05d27a8ac626">grib_multi_handle_delete</a> (<a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> *mh)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Delete multi field handle.  <a href="group__grib__handle.html#g706fb50a5a16b6932adb05d27a8ac626"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g48fc85388ca1ee23f6afa12bb0c125ed">grib_multi_handle_write</a> (<a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> *mh, FILE *f)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Write a multi field handle in a file.  <a href="group__grib__handle.html#g48fc85388ca1ee23f6afa12bb0c125ed"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__handling__coded__messages.html#g9d654bd4fc5f422c161edd0a140ea185">grib_get_message</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const void **message, size_t *message_length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">getting the message attached to a handle  <a href="group__handling__coded__messages.html#g9d654bd4fc5f422c161edd0a140ea185"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__handling__coded__messages.html#g9248c021d985da70cfeb075e469db874">grib_get_message_copy</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, void *message, size_t *message_length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">getting a copy of the message attached to a handle  <a href="group__handling__coded__messages.html#g9248c021d985da70cfeb075e469db874"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#gefb1f87110bdce732edc9154cf0e7d58">grib_iterator_new</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, unsigned long flags, int *error)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new iterator from a handle, using current geometry and values.  <a href="group__iterators.html#gefb1f87110bdce732edc9154cf0e7d58"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g4f73056dbfdda3de0060559b9b39ea34">grib_iterator_next</a> (<a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> *i, double *lat, double *lon, double *value)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the next value from an iterator.  <a href="group__iterators.html#g4f73056dbfdda3de0060559b9b39ea34"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ge33e4a6d3a2222f78ffc43eb7239ce3f">grib_iterator_previous</a> (<a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> *i, double *lat, double *lon, double *value)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the previous value from an iterator.  <a href="group__iterators.html#ge33e4a6d3a2222f78ffc43eb7239ce3f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g7beddf03a8335d5058a0760929af9b65">grib_iterator_has_next</a> (<a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> *i)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Test procedure for values in an iterator.  <a href="group__iterators.html#g7beddf03a8335d5058a0760929af9b65"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#gb8f3830e919c3c11f11530c08e9956c8">grib_iterator_reset</a> (<a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> *i)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Test procedure for values in an iterator.  <a href="group__iterators.html#gb8f3830e919c3c11f11530c08e9956c8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#gd46ed73a16af56e6f3b46fe86ee8a759">grib_iterator_delete</a> (<a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> *i)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees an iterator from memory.  <a href="group__iterators.html#gd46ed73a16af56e6f3b46fe86ee8a759"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g4bd616cf0d0c4f5f147f4a207ddc7687">grib_nearest_new</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, int *error)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new nearest from a handle, using current geometry .  <a href="group__iterators.html#g4bd616cf0d0c4f5f147f4a207ddc7687"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g15043a2482608fb93a0385f3c3e86926">grib_nearest_find</a> (<a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a> *nearest, <a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, double inlat, double inlon, unsigned long flags, double *outlats, double *ou [...]
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find the 4 nearest points of a latitude longitude point.  <a href="group__iterators.html#g15043a2482608fb93a0385f3c3e86926"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g2b3c0069013e1ad7b3e34f30b4659c15">grib_nearest_delete</a> (<a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a> *nearest)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees an nearest from memory.  <a href="group__iterators.html#g2b3c0069013e1ad7b3e34f30b4659c15"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g4923d7a2e414c743410f1de71bb9648c">grib_nearest_find_multiple</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, int is_lsm, double *inlats, double *inlons, long npoints, double *outlats, double *outlons, double *values, double *distances, int *indexes)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find the nearest point of a set of points whose latitudes and longitudes are given in the inlats, inlons arrays respectively.  <a href="group__iterators.html#g4923d7a2e414c743410f1de71bb9648c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g3b40c8174568a6e2b7563a0e89d20ddf">grib_get_offset</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, size_t *offset)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the number offset of a key, in a message if several keys of the same name are present, the offset of the last one is returned.  <a href="group__get__set.html#g3b40c8174568a6e2b7563a0e89d20ddf"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245">grib_get_size</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, size_t *size)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the number of coded value from a key, if several keys of the same name are present, the total sum is returned.  <a href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526">grib_get_long</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, long *value)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a long value from a key, if several keys of the same name are present, the last one is returned.  <a href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e">grib_get_double</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, double *value)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a double value from a key, if several keys of the same name are present, the last one is returned.  <a href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#gec894541bbc8c4e9093803ce21146fa5">grib_get_double_element</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, int i, double *value)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get as double the i-th element of the "key" array.  <a href="group__get__set.html#gec894541bbc8c4e9093803ce21146fa5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#gdff349943fef1036fcd1dd7a69738a7a">grib_get_double_elements</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, int *i, long size, double *value)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get as double array the elements of the "key" array whose indexes are listed in the input array i.  <a href="group__get__set.html#gdff349943fef1036fcd1dd7a69738a7a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g8aeaf9f930eea1cc0f15e92f18a25053">grib_get_string</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, char *mesg, size_t *length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a string value from a key, if several keys of the same name are present, the last one is returned.  <a href="group__get__set.html#g8aeaf9f930eea1cc0f15e92f18a25053"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g1b1ac2da661c638dad7d223419d541c6">grib_get_bytes</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, unsigned char *bytes, size_t *length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get raw bytes values from a key.  <a href="group__get__set.html#g1b1ac2da661c638dad7d223419d541c6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g61f1029d7f37d51f33835e218d58378a">grib_get_double_array</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, double *vals, size_t *length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get double array values from a key.  <a href="group__get__set.html#g61f1029d7f37d51f33835e218d58378a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga05493cedfee55f0b83d27e356123223">grib_get_long_array</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, long *vals, size_t *length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get long array values from a key.  <a href="group__get__set.html#ga05493cedfee55f0b83d27e356123223"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g6315ad72aaaf7577bc7b9f546c506e74">grib_copy_namespace</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *dest, const char *name, <a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *src)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy the keys belonging to a given namespace from a source handle to a destination handle.  <a href="group__get__set.html#g6315ad72aaaf7577bc7b9f546c506e74"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2">grib_set_long</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, long val)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a long value from a key.  <a href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g3f8802a5d3f2e7557e35e6e83acfc9e9">grib_set_double</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, double val)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a double value from a key.  <a href="group__get__set.html#g3f8802a5d3f2e7557e35e6e83acfc9e9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g78143cc64571b454b0aba14246e9a53a">grib_set_string</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, const char *mesg, size_t *length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a string value from a key.  <a href="group__get__set.html#g78143cc64571b454b0aba14246e9a53a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g4437bd0aa70cc2c2f942ace67023f4a1">grib_set_bytes</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, const unsigned char *bytes, size_t *length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a bytes array from a key.  <a href="group__get__set.html#g4437bd0aa70cc2c2f942ace67023f4a1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga24d87e236a2469309d1176ee5925d77">grib_set_double_array</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, const double *vals, size_t length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a double array from a key.  <a href="group__get__set.html#ga24d87e236a2469309d1176ee5925d77"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g6c4697dc7c6f450ad30d0a24a3f87016">grib_set_long_array</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, const long *vals, size_t length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a long array from a key.  <a href="group__get__set.html#g6c4697dc7c6f450ad30d0a24a3f87016"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#67479e527e19f5a5b99696f37994ba21">grib_dump_content</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, FILE *out, const char *mode, unsigned long option_flags, void *arg)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Print all keys, with the context print procedure and dump mode to a resource.  <a href="#67479e527e19f5a5b99696f37994ba21"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#289f68694d96f1af8a2c1a8de422e1b2">grib_get_all_names</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, char *names)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Gather all names available in a handle to a string, using a space as separator.  <a href="#289f68694d96f1af8a2c1a8de422e1b2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#e1d347fdb06db3df5b5cba33cd2ea1a1">grib_dump_action_tree</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, FILE *f)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Print all keys from the parsed definition files available in a context.  <a href="#e1d347fdb06db3df5b5cba33cd2ea1a1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ge4d49e82f57836891aa57fce24b59800">grib_get_context</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Retreive the context from a handle.  <a href="group__context.html#ge4d49e82f57836891aa57fce24b59800"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g01ce1b8dc121afe1fd8212ceef8c829d">grib_context_get_default</a> (void)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the static default context.  <a href="group__context.html#g01ce1b8dc121afe1fd8212ceef8c829d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gbbb93339feef87a0ef7c415fa484c022">grib_context_new</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create and allocate a new context from a parent context.  <a href="group__context.html#gbbb93339feef87a0ef7c415fa484c022"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g4bd1c4d8b32c1ae42227420ed2251d57">grib_context_delete</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees the cached definition files of the context.  <a href="group__context.html#g4bd1c4d8b32c1ae42227420ed2251d57"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g8d72ab772809fba49a41b32909770dd1">grib_gts_header_on</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the gts header mode on.  <a href="group__context.html#g8d72ab772809fba49a41b32909770dd1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g9a3ce8e25ef3e59387015f906a79901a">grib_gts_header_off</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the gts header mode off.  <a href="group__context.html#g9a3ce8e25ef3e59387015f906a79901a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ge8e9e3cce24d282a1b34432926b868c0">grib_gribex_mode_on</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the gribex mode on.  <a href="group__context.html#ge8e9e3cce24d282a1b34432926b868c0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g6f6a5612649241d9ecae7e2a288bc436">grib_gribex_mode_off</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the gribex mode off.  <a href="group__context.html#g6f6a5612649241d9ecae7e2a288bc436"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gec49c14665a9b4faa90a74cb069b9a30">grib_context_set_user_data</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *udata)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets user data in a context.  <a href="group__context.html#gec49c14665a9b4faa90a74cb069b9a30"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g7063ea5ce72ed460a1978c26dbc6af89">grib_context_get_user_data</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">get userData from a context  <a href="group__context.html#g7063ea5ce72ed460a1978c26dbc6af89"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gf38d04b9b8438fca7a418b507915030a">grib_context_set_memory_proc</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, <a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a> griballoc, <a class="el" href="group__context.html#g807998f481ebb5ab8916b236 [...]
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets memory procedures of the context.  <a href="group__context.html#gf38d04b9b8438fca7a418b507915030a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g5cd4b2513883a0d5989d5643087c4097">grib_context_set_persistent_memory_proc</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, <a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a> griballoc, <a class="el" href="group__context.html#g807998f481ebb [...]
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets memory procedures of the context for persistent data.  <a href="group__context.html#g5cd4b2513883a0d5989d5643087c4097"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g13ac96fc6a017f896cfe1325fcd7aa6b">grib_context_set_buffer_memory_proc</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, <a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a> griballoc, <a class="el" href="group__context.html#g807998f481ebb5ab8 [...]
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets memory procedures of the context for large buffers.  <a href="group__context.html#g13ac96fc6a017f896cfe1325fcd7aa6b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g06f0601960b317f15b78396ed12b1881">grib_context_set_path</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, const char *path)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the context search path for definition files.  <a href="group__context.html#g06f0601960b317f15b78396ed12b1881"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gd007cf96b681b389dadbbb9e7540e321">grib_context_set_dump_mode</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, int mode)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets context dump mode.  <a href="group__context.html#gd007cf96b681b389dadbbb9e7540e321"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g68b597e40215c9ced7959c7350980d2f">grib_context_set_print_proc</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, <a class="el" href="group__context.html#gd18d790f8aabf46e6b766eab07b535a0">grib_print_proc</a> printp)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the context printing procedure used for user interaction.  <a href="group__context.html#g68b597e40215c9ced7959c7350980d2f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g09581ce8cdeff9da0f38a78898097b9e">grib_context_set_logging_proc</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, <a class="el" href="group__context.html#gba007477d7d085d602184ae4df95f994">grib_log_proc</a> logp)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the context logging procedure used for system (warning, errors, infos .  <a href="group__context.html#g09581ce8cdeff9da0f38a78898097b9e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g3266536e68ebb6d4bbc4a22b29f0e8ea">grib_multi_support_on</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Turn on support for multiple fields in single grib messages.  <a href="group__context.html#g3266536e68ebb6d4bbc4a22b29f0e8ea"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gc022270a99922ccc57147670ed2a58d4">grib_multi_support_off</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Turn off support for multiple fields in single grib messages.  <a href="group__context.html#gc022270a99922ccc57147670ed2a58d4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">long </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#4e9690b3960a8c6607de77d41a47735f">grib_get_api_version</a> (void)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the api version.  <a href="#4e9690b3960a8c6607de77d41a47735f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#3cd2a817acbefb3089bfa36d2b40f1db">grib_print_api_version</a> (FILE *out)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Prints the api version.  <a href="#3cd2a817acbefb3089bfa36d2b40f1db"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, unsigned long filter_flags, char *name_space)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g28f6ac808ecdc324fa3a47bc7b3f6dec">grib_keys_iterator_next</a> (<a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> *kiter)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#gec3348471f770965c07964e286249e12">grib_keys_iterator_get_name</a> (<a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> *kiter)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g79716d2b701c3dbb3d3a8e633f35a40a">grib_keys_iterator_delete</a> (<a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> *kiter)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g15ceb24c7b8ac673d948ccdaf1ba5fd6">grib_keys_iterator_rewind</a> (<a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> *kiter)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#8e3f942fa243dd09f04d4ff6d2f43d36">grib_get_error_message</a> (int code)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Convert an error code into a string.  <a href="#8e3f942fa243dd09f04d4ff6d2f43d36"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Copyright 2005-2016 ECMWF.
+<p>
+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.<br>
+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.<p>
+grib_api C header file<p>
+This is the only file that must be included to use the grib_api library from C. <hr><h2>Define Documentation</h2>
+<a class="anchor" name="639bb601cfd8d954e49cc7886ea1c6ad"></a><!-- doxytag: member="grib_api.h::GRIB_7777_NOT_FOUND" ref="639bb601cfd8d954e49cc7886ea1c6ad" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_7777_NOT_FOUND   -5          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Missing 7777 at end of message. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="4cfa6d261a3a15912702143929053227"></a><!-- doxytag: member="grib_api.h::GRIB_ARRAY_TOO_SMALL" ref="4cfa6d261a3a15912702143929053227" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_ARRAY_TOO_SMALL   -6          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Passed array is too small. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="2d8e7aa042bcbaf91aa090a369a33db6"></a><!-- doxytag: member="grib_api.h::GRIB_BUFFER_TOO_SMALL" ref="2d8e7aa042bcbaf91aa090a369a33db6" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_BUFFER_TOO_SMALL   -3          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Passed buffer is too small. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="75648d913f443d2a480e408b59884a92"></a><!-- doxytag: member="grib_api.h::GRIB_CODE_NOT_FOUND_IN_TABLE" ref="75648d913f443d2a480e408b59884a92" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_CODE_NOT_FOUND_IN_TABLE   -8          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Code not found in code table. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="1a973e1ef2c6ae7fb132bdece2563fef"></a><!-- doxytag: member="grib_api.h::GRIB_CONCEPT_NO_MATCH" ref="1a973e1ef2c6ae7fb132bdece2563fef" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_CONCEPT_NO_MATCH   -37          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Concept no match. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="38f3c639d01804ef1240463b2beb44e9"></a><!-- doxytag: member="grib_api.h::GRIB_CONSTANT_FIELD" ref="38f3c639d01804ef1240463b2beb44e9" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_CONSTANT_FIELD   -48          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Constant field. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="4d24b723749a821f0853a2013d45746c"></a><!-- doxytag: member="grib_api.h::GRIB_DECODING_ERROR" ref="4d24b723749a821f0853a2013d45746c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_DECODING_ERROR   -14          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Decoding invalid. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="154c771c186435e746ab12d9a48905ab"></a><!-- doxytag: member="grib_api.h::GRIB_ENCODING_ERROR" ref="154c771c186435e746ab12d9a48905ab" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_ENCODING_ERROR   -15          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Encoding invalid. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="86c56896fe711d7b879f1fbf305fd468"></a><!-- doxytag: member="grib_api.h::GRIB_END" ref="86c56896fe711d7b879f1fbf305fd468" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_END   -40          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+End of resource. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="3bd3d72fe8bc116ca08c2d4b99203768"></a><!-- doxytag: member="grib_api.h::GRIB_END_OF_FILE" ref="3bd3d72fe8bc116ca08c2d4b99203768" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_END_OF_FILE   -1          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+End of ressource reached. 
+<p>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="get_8f90-example.html#a0">get.f90</a>, <a class="el" href="get__data_8f90-example.html#a0">get_data.f90</a>, <a class="el" href="keys__iterator_8f90-example.html#a0">keys_iterator.f90</a>, <a class="el" href="multi_8f90-example.html#a2">multi.f90</a>, and <a class="el" href="samples_8f90-example.html#a1">samples.f90</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="afa8827ca82c170dc27bcfb723b6ba76"></a><!-- doxytag: member="grib_api.h::GRIB_END_OF_INDEX" ref="afa8827ca82c170dc27bcfb723b6ba76" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_END_OF_INDEX   -43          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+End of index reached. 
+<p>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="index_8f90-example.html#a1">index.f90</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="3441223fb03920c378d38c6f50e98d4a"></a><!-- doxytag: member="grib_api.h::GRIB_FILE_NOT_FOUND" ref="3441223fb03920c378d38c6f50e98d4a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_FILE_NOT_FOUND   -7          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+File not found. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="482b9d48445b7ad202be877e8cc10ea8"></a><!-- doxytag: member="grib_api.h::GRIB_GEOCALCULUS_PROBLEM" ref="482b9d48445b7ad202be877e8cc10ea8" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_GEOCALCULUS_PROBLEM   -17          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Problem with calculation of geographic attributes. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="aaa04f4cf931846628d4e71e40b02349"></a><!-- doxytag: member="grib_api.h::GRIB_INTERNAL_ARRAY_TOO_SMALL" ref="aaa04f4cf931846628d4e71e40b02349" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_INTERNAL_ARRAY_TOO_SMALL   -46          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+An internal array is too small. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="f8cf05fc5d45cb95ad0972bdcc3f08d3"></a><!-- doxytag: member="grib_api.h::GRIB_INTERNAL_ERROR" ref="f8cf05fc5d45cb95ad0972bdcc3f08d3" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_INTERNAL_ERROR   -2          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Internal error. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="9b9c7d3380e2e440d8c16ec1d49a4c17"></a><!-- doxytag: member="grib_api.h::GRIB_INVALID_ARGUMENT" ref="9b9c7d3380e2e440d8c16ec1d49a4c17" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_INVALID_ARGUMENT   -20          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Invalid argument. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="c8091f4d703636468d7c303be9e4d881"></a><!-- doxytag: member="grib_api.h::GRIB_INVALID_FILE" ref="c8091f4d703636468d7c303be9e4d881" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_INVALID_FILE   -28          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Invalid file id. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="533ac9a5250151b97b6c7650db56897d"></a><!-- doxytag: member="grib_api.h::GRIB_INVALID_GRIB" ref="533ac9a5250151b97b6c7650db56897d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_INVALID_GRIB   -29          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Invalid grib id. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="519a1c9eddd9ce63ef87fd182c008737"></a><!-- doxytag: member="grib_api.h::GRIB_INVALID_INDEX" ref="519a1c9eddd9ce63ef87fd182c008737" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_INVALID_INDEX   -30          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Invalid index id. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="45eb384ee2e382f1acac24594d66c6b0"></a><!-- doxytag: member="grib_api.h::GRIB_INVALID_ITERATOR" ref="45eb384ee2e382f1acac24594d66c6b0" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_INVALID_ITERATOR   -31          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Invalid iterator id. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="36309323248d2ac3729a4552c2fb1c17"></a><!-- doxytag: member="grib_api.h::GRIB_INVALID_KEYS_ITERATOR" ref="36309323248d2ac3729a4552c2fb1c17" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_INVALID_KEYS_ITERATOR   -32          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Invalid keys iterator id. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="926f6ede936bd30c5339c94f2d84c8ae"></a><!-- doxytag: member="grib_api.h::GRIB_INVALID_MESSAGE" ref="926f6ede936bd30c5339c94f2d84c8ae" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_INVALID_MESSAGE   -13          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Message invalid. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="aa0306c1ea428240fce27176dafbd7fe"></a><!-- doxytag: member="grib_api.h::GRIB_INVALID_NEAREST" ref="aa0306c1ea428240fce27176dafbd7fe" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_INVALID_NEAREST   -33          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Invalid nearest id. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="762034d39b53d2861f2743b0aec8d2a4"></a><!-- doxytag: member="grib_api.h::GRIB_INVALID_ORDERBY" ref="762034d39b53d2861f2743b0aec8d2a4" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_INVALID_ORDERBY   -34          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Invalid order by. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="9d2c9bfa553a51b2fcab92ad31bef8ef"></a><!-- doxytag: member="grib_api.h::GRIB_INVALID_SECTION_NUMBER" ref="9d2c9bfa553a51b2fcab92ad31bef8ef" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_INVALID_SECTION_NUMBER   -22          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Invalid section number. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="fc09d64f4cb3ba8d272b9e3c9b5dd363"></a><!-- doxytag: member="grib_api.h::GRIB_INVALID_TYPE" ref="fc09d64f4cb3ba8d272b9e3c9b5dd363" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_INVALID_TYPE   -25          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Invalid key type. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="a7fe5a55b1005f7c3d14e8bfaee33271"></a><!-- doxytag: member="grib_api.h::GRIB_IO_PROBLEM" ref="a7fe5a55b1005f7c3d14e8bfaee33271" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_IO_PROBLEM   -12          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Input output problem. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="1e15e27a144761974cea9e90f2ba168d"></a><!-- doxytag: member="grib_api.h::GRIB_MESSAGE_TOO_LARGE" ref="1e15e27a144761974cea9e90f2ba168d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_MESSAGE_TOO_LARGE   -47          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Message is too large for the current architecture. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="8fd56a3beb7556606f644091aba1fcbd"></a><!-- doxytag: member="grib_api.h::GRIB_MISSING_KEY" ref="8fd56a3beb7556606f644091aba1fcbd" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_MISSING_KEY   -35          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Missing a key from the fieldset. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="8cd08a4486ad956bf1f20434f84cd04e"></a><!-- doxytag: member="grib_api.h::GRIB_NO_DEFINITIONS" ref="8cd08a4486ad956bf1f20434f84cd04e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_NO_DEFINITIONS   -38          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Definitions files not found. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="7fc7702ef0de098b4a58e2fb9c9a442c"></a><!-- doxytag: member="grib_api.h::GRIB_NO_MORE_IN_SET" ref="7fc7702ef0de098b4a58e2fb9c9a442c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_NO_MORE_IN_SET   -16          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Code cannot unpack because of string too small. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="dfdf56b00d215ff68aeb1adbffc348ce"></a><!-- doxytag: member="grib_api.h::GRIB_NO_VALUES" ref="dfdf56b00d215ff68aeb1adbffc348ce" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_NO_VALUES   -41          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Unable to code a field without values. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="86c4b3873fded7e8ea28644dcbcd5f87"></a><!-- doxytag: member="grib_api.h::GRIB_NOT_FOUND" ref="86c4b3873fded7e8ea28644dcbcd5f87" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_NOT_FOUND   -11          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Key/value not found. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="5a0fab73e448bc57ddd04b59506ccd71"></a><!-- doxytag: member="grib_api.h::GRIB_NOT_IMPLEMENTED" ref="5a0fab73e448bc57ddd04b59506ccd71" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_NOT_IMPLEMENTED   -4          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Function not yet implemented. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="1c5efccc4485ae72e7714d2443e6d89c"></a><!-- doxytag: member="grib_api.h::GRIB_NULL_HANDLE" ref="1c5efccc4485ae72e7714d2443e6d89c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_NULL_HANDLE   -21          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Null handle. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="042ed38858c5cf72be88cfada1737f3b"></a><!-- doxytag: member="grib_api.h::GRIB_NULL_INDEX" ref="042ed38858c5cf72be88cfada1737f3b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_NULL_INDEX   -44          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Null index. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="ba25cca898d918763a9a8a9bd3860f00"></a><!-- doxytag: member="grib_api.h::GRIB_OUT_OF_AREA" ref="ba25cca898d918763a9a8a9bd3860f00" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_OUT_OF_AREA   -36          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The point is out of the grid area. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="b405f321cbb4b4c7dec9eb1bd4b65b50"></a><!-- doxytag: member="grib_api.h::GRIB_OUT_OF_MEMORY" ref="b405f321cbb4b4c7dec9eb1bd4b65b50" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_OUT_OF_MEMORY   -18          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Out of memory. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="3baff96d54517c85e433f8150642ef0b"></a><!-- doxytag: member="grib_api.h::GRIB_PREMATURE_END_OF_FILE" ref="3baff96d54517c85e433f8150642ef0b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_PREMATURE_END_OF_FILE   -45          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+End of ressource reached when reading message. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="e18012f7fad721db7f865655f2b5956e"></a><!-- doxytag: member="grib_api.h::GRIB_READ_ONLY" ref="e18012f7fad721db7f865655f2b5956e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_READ_ONLY   -19          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Value is read only. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="4c26f350e2a20a2cd810a7e8a890973f"></a><!-- doxytag: member="grib_api.h::GRIB_STRING_TOO_SMALL_FOR_CODE_NAME" ref="4c26f350e2a20a2cd810a7e8a890973f" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_STRING_TOO_SMALL_FOR_CODE_NAME   -9          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Code cannot unpack because of string too small. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="5ec59f24fc07a0e9d05768e908b9eb41"></a><!-- doxytag: member="grib_api.h::GRIB_SUCCESS" ref="5ec59f24fc07a0e9d05768e908b9eb41" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_SUCCESS   0          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+No error. 
+<p>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="iterator_8c-example.html#a3">iterator.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="83d93f23c64220209e5c326a38f32003"></a><!-- doxytag: member="grib_api.h::GRIB_SWITCH_NO_MATCH" ref="83d93f23c64220209e5c326a38f32003" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_SWITCH_NO_MATCH   -49          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Switch unable to find a matching case. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="b075c9c53912dc18ea9feee1f710cb18"></a><!-- doxytag: member="grib_api.h::GRIB_VALUE_CANNOT_BE_MISSING" ref="b075c9c53912dc18ea9feee1f710cb18" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_VALUE_CANNOT_BE_MISSING   -23          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Value cannot be missing. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="b04c311e9de064f156fd238dbf04afef"></a><!-- doxytag: member="grib_api.h::GRIB_WRONG_ARRAY_SIZE" ref="b04c311e9de064f156fd238dbf04afef" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_WRONG_ARRAY_SIZE   -10          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Array size mismatch. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="5a73a75bffabf39673ba9bc3a4b164b6"></a><!-- doxytag: member="grib_api.h::GRIB_WRONG_GRID" ref="5a73a75bffabf39673ba9bc3a4b164b6" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_WRONG_GRID   -42          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Grid description is wrong or inconsistent. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="1792ca7e8d3e6f3e4bc2dc406408ec8f"></a><!-- doxytag: member="grib_api.h::GRIB_WRONG_LENGTH" ref="1792ca7e8d3e6f3e4bc2dc406408ec8f" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_WRONG_LENGTH   -24          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Wrong message length. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="08dcf5be008fd3c7a524ab3de96f88c2"></a><!-- doxytag: member="grib_api.h::GRIB_WRONG_STEP" ref="08dcf5be008fd3c7a524ab3de96f88c2" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_WRONG_STEP   -26          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Unable to set step. 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="c10988d7d2b76f906e1281c2a6602b1a"></a><!-- doxytag: member="grib_api.h::GRIB_WRONG_STEP_UNIT" ref="c10988d7d2b76f906e1281c2a6602b1a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_WRONG_STEP_UNIT   -27          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Wrong units for step (step must be integer). 
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="53847b78a3259d3df6c76042360cbd97"></a><!-- doxytag: member="grib_api.h::GRIB_WRONG_TYPE" ref="53847b78a3259d3df6c76042360cbd97" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_WRONG_TYPE   -39          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Wrong type while packing. 
+<p>
+
+</div>
+</div><p>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="8e7f259b6dec023add23b2a5ddd93bad"></a><!-- doxytag: member="grib_api.h::grib_context" ref="8e7f259b6dec023add23b2a5ddd93bad" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Grib context, structure containing the memory methods, the parsers and the formats. 
+</div>
+</div><p>
+<a class="anchor" name="8f20a42a04122a55dec71774c70a51c5"></a><!-- doxytag: member="grib_api.h::grib_iterator" ref="8f20a42a04122a55dec71774c70a51c5" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> <a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Grib iterator, structure supporting a geographic iteration of values on a grib message. <dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="iterator_8c-example.html#a1">iterator.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="1b47558cfe02835ba44213ee4d45fd9b"></a><!-- doxytag: member="grib_api.h::grib_nearest" ref="1b47558cfe02835ba44213ee4d45fd9b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a> <a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Grib nearest, structure used to find the nearest points of a latitude longitude point. <dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="nearest_8c-example.html#a1">nearest.c</a>.</dl>
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="e1d347fdb06db3df5b5cba33cd2ea1a1"></a><!-- doxytag: member="grib_api.h::grib_dump_action_tree" ref="e1d347fdb06db3df5b5cba33cd2ea1a1" args="(grib_context *c, FILE *f)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void grib_dump_action_tree           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">FILE * </td>
+          <td class="paramname"> <em>f</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Print all keys from the parsed definition files available in a context. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>: the File used to print the keys on </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context that containd the cached definition files to be printed </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="67479e527e19f5a5b99696f37994ba21"></a><!-- doxytag: member="grib_api.h::grib_dump_content" ref="67479e527e19f5a5b99696f37994ba21" args="(grib_handle *h, FILE *out, const char *mode, unsigned long option_flags, void *arg)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void grib_dump_content           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">FILE * </td>
+          <td class="paramname"> <em>out</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>mode</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned long </td>
+          <td class="paramname"> <em>option_flags</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void * </td>
+          <td class="paramname"> <em>arg</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Print all keys, with the context print procedure and dump mode to a resource. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to be printed </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>out</em> </td><td>: output file handle </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>mode</em> </td><td>: available dump modes are: debug wmo c_code </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>option_flags</em> </td><td>: all the GRIB_DUMP_FLAG_x flags can be used </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>arg</em> </td><td>: used to provide a format to output data (experimental) </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="289f68694d96f1af8a2c1a8de422e1b2"></a><!-- doxytag: member="grib_api.h::grib_get_all_names" ref="289f68694d96f1af8a2c1a8de422e1b2" args="(grib_handle *h, char *names)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void grib_get_all_names           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char * </td>
+          <td class="paramname"> <em>names</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Gather all names available in a handle to a string, using a space as separator. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle used to gather the keys </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>names</em> </td><td>: the sting to be filled with the names </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="4e9690b3960a8c6607de77d41a47735f"></a><!-- doxytag: member="grib_api.h::grib_get_api_version" ref="4e9690b3960a8c6607de77d41a47735f" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">long grib_get_api_version           </td>
+          <td>(</td>
+          <td class="paramtype">void </td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the api version. 
+<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>api version </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="8e3f942fa243dd09f04d4ff6d2f43d36"></a><!-- doxytag: member="grib_api.h::grib_get_error_message" ref="8e3f942fa243dd09f04d4ff6d2f43d36" args="(int code)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* grib_get_error_message           </td>
+          <td>(</td>
+          <td class="paramtype">int </td>
+          <td class="paramname"> <em>code</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Convert an error code into a string. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>code</em> </td><td>: the error code </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the error message </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="3cd2a817acbefb3089bfa36d2b40f1db"></a><!-- doxytag: member="grib_api.h::grib_print_api_version" ref="3cd2a817acbefb3089bfa36d2b40f1db" args="(FILE *out)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void grib_print_api_version           </td>
+          <td>(</td>
+          <td class="paramtype">FILE * </td>
+          <td class="paramname"> <em>out</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Prints the api version. 
+<p>
+
+</div>
+</div><p>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/grib_compare.html b/html/grib_compare.html
new file mode 100644
index 0000000..59f34c1
--- /dev/null
+++ b/html/grib_compare.html
@@ -0,0 +1,281 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: grib_compare</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1><a class="anchor" name="grib_compare">grib_compare</a></h1><h2><a class="anchor" name="DESCRIPTION">
+DESCRIPTION</a></h2>
+Compare grib messages contained in two files. If some differences are found it fails returning an error code. Floating point values are compared exactly by default, different tolerance can be defined see -P -A -R. Default behaviour: absolute error=0, bit-by-bit compare, same order in files.<h2><a class="anchor" name="USAGE">
+USAGE</a></h2>
+grib_compare [options] grib_file grib_file<h2><a class="anchor" name="OPTIONS">
+OPTIONS</a></h2>
+-r <br>
+ Compare files in which the messages are not in the same order. This option is time expensive. <br>
+ <br>
+ -b key,key,... <br>
+ All the keys in this list are skipped in the comparison. Bit-by-bit compare on. <br>
+ <br>
+ -e <br>
+ edition independent compare. It is used to compare grib edition 1 and 2. <br>
+ <br>
+ -c key[:l/d/s/n],key[:l/d/s/n],... <br>
+ Only the listed keys or namespaces (:n) are compared. The optional letter after the colon is used to force the type in the comparison: l->integer, d->float, s->string, n->namespace. See -a option. Incompatible with -H option. <br>
+ <br>
+ -a <br>
+ -c option modifier. The keys listed with the option -c will be added to the list of keys compared without -c. <br>
+ <br>
+ -H <br>
+ Compare only message headers. Bit-by-bit compare on. Incompatible with -c option. <br>
+ <br>
+ -R key1=relative_error1,key2=relative_error2,... <br>
+ Compare floating point values using the relative error as tolerance. key1=relative_error will compare key1 using relative_error1. all=relative_error will compare all the floating point keys using relative_error. Default all=0. <br>
+ <br>
+ -A absolute error <br>
+ Compare floating point values using the absolute error as tolerance. Default is absolute error=0 <br>
+ <br>
+ -P <br>
+ Compare data values using the packing error as tolerance. <br>
+ <br>
+ -T factor <br>
+ Compare data values using factor multipied by the tolerance specified in options -P -R -A. <br>
+ <br>
+ -w key[:{s/d/l}]{=/!=}value,key[:{s/d/l}]{=/!=}value,... <br>
+ Where clause. Grib messages are processed only if they match all the key/value constraints. A valid constraint is of type key=value or key!=value. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be specified. Default type is string. <br>
+ <br>
+ -f <br>
+ Force. Force the execution not to fail on error. <br>
+ <br>
+ -V <br>
+ Version. <br>
+ <br>
+ -7 <br>
+ Does not fail when the message has wrong length <br>
+ <br>
+ -v <br>
+ Verbose. <br>
+ <br>
+ <h2><a class="anchor" name="grib_compare_examples">
+grib_compare examples</a></h2>
+<ol type=1>
+<li>The default behaviour for grib_compare without any option is to perform a bit by bit comparison of the two messages. If the messages are found to be bitwise different then grib_compare switches to a "key based" mode to find out which coded keys are different. To see how grib_compare works we first set the shortName=2d (2 metre dew point temperature) in the file regular_latlon_surface.grib1<br>
+ <div class="fragment"><pre class="fragment">
+>grib_set -s shortName=2d regular_latlon_surface.grib1 2d.grib1
+</pre></div> Then we can compare the two fields with grib_compare.<br>
+ <div class="fragment"><pre class="fragment">
+>grib_compare regular_latlon_surface.grib1 2d.grib1
+
+-- GRIB #1 -- shortName=2t paramId=167 stepRange=0 levelType=sfc level=0 packingType=grid_simple gridType=regular_ll --
+long [indicatorOfParameter]: [167] != [168]
+</pre></div> In the output we see that the only "coded" key with different values in the two messages is indicatorOfParameter which is the relevant key for the parameter information. The comparison can be forced to be successful listing the keys with different values in the -b option. <div class="fragment"><pre class="fragment">
+>grib_compare -b indicatorOfParameter regular_latlon_surface.grib1 2d.grib1
+</pre></div> <br>
+<br>
+</li><li>Two grib messages can be very different because they have different edition, but they can contain the same identical information in the header and the same data. To see how grib_compare can help in comparing messages with different edition we do <div class="fragment"><pre class="fragment">
+>grib_set edition=2 reduced_gaussian_model_level.grib1 reduced_gaussian_model_level.grib2
+</pre></div> Then we compare the two fields with grib_compare.<br>
+ <div class="fragment"><pre class="fragment">
+>grib_compare reduced_gaussian_model_level.grib1 reduced_gaussian_model_level.grib2
+
+-- GRIB #1 -- shortName=t paramId=130 stepRange=0 levelType=ml level=1 packingType=grid_simple gridType=reduced_gg --
+long [totalLength]: [10908] != [10996]
+long [editionNumber]: [1] != [2]
+long [section1Length]: [52] != [21]
+[table2Version] not found in 2nd field
+[gridDefinition] not found in 2nd field
+[indicatorOfParameter] not found in 2nd field
+[indicatorOfTypeOfLevel] not found in 2nd field
+[yearOfCentury] not found in 2nd field
+[unitOfTimeRange] not found in 2nd field
+[P1] not found in 2nd field
+[P2] not found in 2nd field
+[numberIncludedInAverage] not found in 2nd field
+[numberMissingFromAveragesOrAccumulations] not found in 2nd field
+[centuryOfReferenceTimeOfData] not found in 2nd field
+[reservedNeedNotBePresent] not found in 2nd field
+[localDefinitionNumber] not found in 2nd field
+[perturbationNumber] not found in 2nd field
+[numberOfForecastsInEnsemble] not found in 2nd field
+[padding_local1_1] not found in 2nd field
+long [section2Length]: [896] != [17]
+[pvlLocation] not found in 2nd field
+[dataRepresentationType] not found in 2nd field
+long [latitudeOfFirstGridPoint]: [87864] != [87864000]
+long [latitudeOfLastGridPoint]: [-87864] != [-87864000]
+long [longitudeOfLastGridPoint]: [357188] != [357188000]
+[padding_grid4_1] not found in 2nd field
+long [section4Length]: [9948] != [770]
+[dataFlag] not found in 2nd field
+</pre></div> It is clear that the two messages are coded in a very different way. If we now add the -e option, the tool will compare only the higher level information common between the two messages. <div class="fragment"><pre class="fragment">
+>grib_compare -e reduced_gaussian_model_level.grib1 reduced_gaussian_model_level.grib2
+</pre></div> The comparison is successful because the two messages contain the same information coded in two different ways. We can display the list of keys used by grib_compare adding the option -v (verbose). <div class="fragment"><pre class="fragment">
+>grib_compare -ve reduced_gaussian_model_level.grib1 reduced_gaussian_model_level.grib2
+reduced_gaussian_model_level.grib2
+  comparing centre as string
+  comparing paramId as string
+  comparing shortName as string
+  comparing typeOfLevel as string
+  comparing level as long
+  comparing pv as double  (184 values) tolerance=0
+  comparing latitudeOfFirstGridPointInDegrees as double  (1 values) tolerance=0.0005
+  comparing longitudeOfFirstGridPointInDegrees as double  (1 values) tolerance=0.0005
+  comparing latitudeOfLastGridPointInDegrees as double  (1 values) tolerance=0.0005
+  comparing longitudeOfLastGridPointInDegrees as double  (1 values) tolerance=0.0005
+  comparing iDirectionIncrementInDegrees is set to missing in both fields
+  comparing N as long
+  comparing iScansNegatively as long
+  comparing jScansPositively as long
+  comparing jPointsAreConsecutive as long
+  comparing pl as long
+  comparing gridType as string
+  comparing packedValues as double  (6114 values) tolerance=0
+  comparing param as string
+  comparing levtype as string
+  comparing levelist as long
+  comparing date as long
+  comparing time as long
+  comparing step as long
+  comparing class as long
+  comparing type as long
+  comparing stream as long
+  comparing expver as string
+  comparing domain as string
+
+1 of 1 grib messages in reduced_gaussian_model_level.grib2
+
+1 of 1 total grib messages in 1 files
+</pre></div> For each key the type used in the comparison is reported and for the floating point keys also the tolerance used is printed. <br>
+<br>
+</li><li>Some options are provided to compare only a set of keys in the messages. The option -H is used to compare only the headers coded in the message, it doesn't compare the data values. The option "-c key1:[l/d/s/n],key2:[l/d/s/n],... " can be used to compare a set of keys or namespaces. The letter after the colon is optional and it is used to force the type used in the comparison which is otherwise assumed to be the native type of the key. The possible types are:<ul>
+<li>:l -> integer (C type long)</li><li>:d -> floating point (C type double)</li><li>:s -> string</li><li>:n -> namespace.</li></ul>
+When the type "n" is used all the set of keys belonging to the specified namespace are compared assuming their own native type. To illustrate how these options work we change the values coded in a message using grib_filter with the following rules file (see <a class="el" href="grib_filter.html">grib_filter</a>). <div class="fragment"><pre class="fragment">
+set bitsPerValue=10;
+set values={1,2.5,3,4,5,6,70};
+write "first.grib1";
+set values={1,2.5,5,4,5,6,70};
+write "second.grib1";
+</pre></div> We first compare the two files using the -H option (only headers are compared). <div class="fragment"><pre class="fragment">
+>grib_compare -H first.grib1 second.grib1
+</pre></div> The comparison is successful because the data are not compared. To compare only the data we have to compare the "data namespace". <div class="fragment"><pre class="fragment">
+>grib_compare -c data:n first.grib1 second.grib1
+
+-- GRIB #1 -- shortName=t paramId=130 stepRange=0 levelType=ml level=1 packingType=grid_simple gridType=reduced_gg --
+double [packedValues]: 1 out of 7 different,  max absolute diff. = 2, relative diff. = 0.4
+	max diff. element 2: 3.00000000000000000000e+00 5.00000000000000000000e+00
+	tolerance=0 packingError: [0.04] [0.04]
+	values max= [70.04]  [70.04]         min= [1] [1]
+</pre></div> The comparison is showing that one of seven values is different in a comparison with the (default) absolute tolerance=0. We can change the tolerance with the -A option: <div class="fragment"><pre class="fragment">
+>grib_compare -A 2 -c data:n first.grib1 second.grib1
+</pre></div> and we see that the comparison is successful if the absolute tolerance is set to 2. We can also set the relative tolerance for each key with the option -R: <div class="fragment"><pre class="fragment">
+>grib_compare -R packedValues=0.4 -c data:n first.grib1 second.grib1
+</pre></div> and we get again a successful comparison because the relative tolerance is bigger than the relative absolute difference of two corresponding values. Another possible choice for the tolerance is to be equal to the packingError, which is the error due to the packing algorithm. If we change the decimalPrecision of a packed field we introduce a packing error sometimes bigger than the original packing error. <div class="fragment"><pre class="fragment">
+>grib_set -s changeDecimalPrecision=0 first.grib1 third.grib1
+</pre></div> and we compare the two fields using the -P option (tolerance=packingError). <div class="fragment"><pre class="fragment">
+>grib_compare -P -c data:n first.grib1 third.grib1
+</pre></div> the comparison is successful because their difference is within the biggest of the two packing error. With the option -P the comparison is failing only if the original data coded are different, not if the packing precision is changed. If we try again to compare the fields without the -P option: <div class="fragment"><pre class="fragment">
+>grib_compare -c data:n first.grib1 third.grib1
+
+-- GRIB #1 -- shortName=t paramId=130 stepRange=0 levelType=ml level=1 packingType=grid_simple gridType=reduced_gg --
+double [packedValues]: 4 out of 7 different,  max absolute diff. = 0.48, relative diff. = 0.16
+	max diff. element 1: 2.52000000000000001776e+00 3.00000000000000000000e+00
+	tolerance=0 packingError: [0.04] [0.5]
+	values max= [70.04]  [70]         min= [1] [1]
+</pre></div> we see that some values are different and that the maximum absolute differenc is close to the biggest packing error (max diff=0.48 packingError=0.5). The packing error was chosen to be 0.5 by setting decimalPrecision to 0 which means that we don't need to preserve any decimal figure.<br>
+<br>
+</li><li>When we already know that the fields are not numerically identical, but have similar statistical characteristics we can compare their statistics namespaces: <div class="fragment"><pre class="fragment">
+>grib_compare -c statistics:n first.grib1 third.grib1
+
+-- GRIB #1 -- shortName=t paramId=130 stepRange=0 levelType=ml level=1 packingType=grid_simple gridType=reduced_gg --
+double [max]: [7.00400000000000062528e+01] != [7.00000000000000000000e+01]
+	absolute diff. = 0.04, relative diff. = 0.000571102
+	tolerance=0
+double [avg]: [1.30914285714285707485e+01] != [1.31428571428571423496e+01]
+	absolute diff. = 0.0514286, relative diff. = 0.00391304
+	tolerance=0
+double [sd]: [2.32994686809877009637e+01] != [2.32589679873534969090e+01]
+	absolute diff. = 0.0405007, relative diff. = 0.00173827
+	tolerance=0
+double [skew]: [-1.41592875700515623549e+01] != [-1.41669971380493855406e+01]
+	absolute diff. = 0.00770957, relative diff. = 0.000544192
+	tolerance=0
+double [kurt]: [7.32364710785659567271e-01] != [7.32723797489455375143e-01]
+	absolute diff. = 0.000359087, relative diff. = 0.000490071
+	tolerance=0
+</pre></div> and we see that maximum, minimum, average, standard deviation, skewness and kurtosis are compared. While the values are different by 0.48 the statistics comparison shows that the difference in the statistical values is never bigger than 0.052 <div class="fragment"><pre class="fragment">
+>grib_compare -A 0.052 -c statistics:n first.grib1 third.grib1
+</pre></div> The statistics namespace is available also for spherical harmonics data and provides information about the field in the geographic space computing them in the spectral space for performance reasons. <br>
+<br>
+</li><li>When a file contains several fields and some keys are different, it is useful to have a summary report of the keys found different in the messages. This can be obtained with the option -f. We change few keys in a file: <div class="fragment"><pre class="fragment">
+>grib_set -w typeOfLevel=surface -s step=48 tigge_pf_ecmwf.grib2 out.grib2
+</pre></div> and comparing with the -f option: <div class="fragment"><pre class="fragment">
+>grib_compare -f tigge_pf_ecmwf.grib2 out.grib2
+
+-- GRIB #9 -- shortName=skt paramId=235 stepRange=96 levelType=sfc level=0 packingType=grid_simple gridType=regular_ll --
+long [forecastTime]: [96] != [48]
+
+-- GRIB #10 -- shortName=sd paramId=228141 stepRange=96 levelType=sfc level=0 packingType=grid_simple gridType=regular_ll --
+long [forecastTime]: [96] != [48]
+
+-- GRIB #11 -- shortName=sf paramId=228144 stepRange=0-96 levelType=sfc level=0 packingType=grid_simple gridType=regular_ll --
+long [dayOfEndOfOverallTimeInterval]: [26] != [24]
+long [lengthOfTimeRange]: [96] != [48]
+
+...  output deleted 
+
+## ERRORS SUMMARY #######
+##
+## Summary of different key values 
+## forecastTime ( 3 different )
+## dayOfEndOfOverallTimeInterval ( 11 different )
+## lengthOfTimeRange ( 11 different )
+##
+## 14 different messages out of 38
+
+</pre></div> we get a list of all the different messages in the files and a summary report of the different keys. <br>
+<br>
+</li><li>We can change the order of the messages in a file using grib_copy with the -B option: <div class="fragment"><pre class="fragment">
+>grib_copy -B typeOfLevel tigge_pf_ecmwf.grib2 out.grib2
+</pre></div> If we now compare the two files: <div class="fragment"><pre class="fragment">
+>grib_compare -f tigge_pf_ecmwf.grib2 out.grib2
+
+-- GRIB #1 -- shortName=10u paramId=165 stepRange=96 levelType=sfc level=10 packingType=grid_simple gridType=regular_ll --
+long [discipline]: [0] != [2]
+long [totalLength]: [1555] != [990]
+long [parameterCategory]: [2] != [0]
+long [parameterNumber]: [2] != [22]
+long [scaledValueOfFirstFixedSurface]: [10] != [0]
+long [typeOfSecondFixedSurface]: [255] != [106]
+scaleFactorOfSecondFixedSurface is set to missing in 1st field is not missing in 2nd field
+scaledValueOfSecondFixedSurface is set to missing in 1st field is not missing in 2nd field
+long [numberOfValues]: [684] != [239]
+double [referenceValue]: [-1.57229328155517578125e+01] != [4.15843811035156250000e+01]
+	absolute diff. = 57.3073, relative diff. = 1.3781
+	tolerance=3.8147e-06
+long [binaryScaleFactor]: [-10] != [-15]
+long [bitsPerValue]: [16] != [24]
+long [section6Length]: [6] != [92]
+long [bitMapIndicator]: [255] != [0]
+long [section7Length]: [1373] != [722]
+[codedValues] has different size: 1st field: 684, 2nd field: 239
+...    very long output 
+</pre></div> the comparison is failing because of the different order of the messages. We can use the -r option to compare the files assuming that the messages are not in the same order: <div class="fragment"><pre class="fragment">
+>grib_compare -r tigge_pf_ecmwf.grib2 out.grib2
+</pre></div> and we have a successful comparison because for each message in the first file an identical message is found in the second file. This option should be used carefully as it is very time expensive.</li></ol>
+<p>
+<br>
+<br>
+ <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/grib_convert.html b/html/grib_convert.html
new file mode 100644
index 0000000..8847a8f
--- /dev/null
+++ b/html/grib_convert.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: grib_convert</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1><a class="anchor" name="grib_convert">grib_convert</a></h1><h2><a class="anchor" name="DESCRIPTION">
+DESCRIPTION</a></h2>
+It converts grib messages applying the rules from a conversion_rules file. The rules are of the type "keyname = value;" and if blocks are allowed as if ( keyname1 == value1 || keyname2 != value2 && keyname3 == value3 ) { keyname4 = value4; }<h2><a class="anchor" name="USAGE">
+USAGE</a></h2>
+grib_convert [options] conversion_rules grib_file grib_file ... output_grib_file<h2><a class="anchor" name="OPTIONS">
+OPTIONS</a></h2>
+-f <br>
+ Force. Force the execution not to fail on error. <br>
+ <br>
+ -M <br>
+ Multi-grib support off. Turn off support for multiple fields in single grib message <br>
+ <br>
+ -g <br>
+ Copy GTS header. <br>
+ <br>
+ -G <br>
+ GRIBEX compatibility mode. <br>
+ <br>
+ -V <br>
+ Version. <br>
+ <br>
+ -7 <br>
+ Does not fail when the message has wrong length <br>
+ <br>
+ -v <br>
+ Verbose. <br>
+ <br>
+ <h2><a class="anchor" name="grib_convert_examples">
+grib_convert examples</a></h2>
+The following grib_convert rules convert all the grib messages contained in the input files in grib edition 2 and if a 2 metre temperature is found also the keys contained in the culy bracket are changed.<br>
+ <div class="fragment"><pre class="fragment">editionNumber = 2;
+<span class="keywordflow">if</span>( indicatorOfParameter == 11 && indicatorOfTypeOfLevel == 105)
+{
+    productDefinitionTemplateNumber = 1;
+    typeOfFirstFixedSurface         = 103;
+    scaleFactorOfFirstFixedSurface  = 0;
+    scaledValueOfFirstFixedSurface  = 2;
+}
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/grib_copy.html b/html/grib_copy.html
new file mode 100644
index 0000000..587f918
--- /dev/null
+++ b/html/grib_copy.html
@@ -0,0 +1,82 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: grib_copy</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1><a class="anchor" name="grib_copy">grib_copy</a></h1><h2><a class="anchor" name="DESCRIPTION">
+DESCRIPTION</a></h2>
+Copies the content of grib files printing values of some keys.<h2><a class="anchor" name="USAGE">
+USAGE</a></h2>
+grib_copy [options] grib_file grib_file ... output_grib_file<h2><a class="anchor" name="OPTIONS">
+OPTIONS</a></h2>
+-f <br>
+ Force. Force the execution not to fail on error. <br>
+ <br>
+ -r <br>
+ Repack data. Sometimes after setting some keys involving properties of the packing algorithm a repacking of data is needed. This repacking is performed setting this -r option. <br>
+ <br>
+ -p key[:{s/d/l}],key[:{s/d/l}],... <br>
+ Declaration of keys to print. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be requested. Default type is string. <br>
+ <br>
+ -P key[:{s/d/l}],key[:{s/d/l}],... <br>
+ As -p adding the declared keys to the default list. <br>
+ <br>
+ -w key[:{s/d/l}]=value,key[:{s/d/l}]=value,... <br>
+ Where clause. Only grib messages matching the key/value constraints are copied to the output_grib_file. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be defined. Default type is string. <br>
+ <br>
+ -B order by directive <br>
+ Order by. The output will be ordered according the order by directive. Order by example: "step asc, centre desc" (step ascending and centre discending) <br>
+ <br>
+ -V <br>
+ Version. <br>
+ <br>
+ -W width <br>
+ Minimum width of each column in output. Default is 10. <br>
+ <br>
+ -M <br>
+ Multi-grib support off. Turn off support for multiple fields in single grib message <br>
+ <br>
+ -g <br>
+ Copy GTS header. <br>
+ <br>
+ -G <br>
+ GRIBEX compatibility mode. <br>
+ <br>
+ -7 <br>
+ Does not fail when the message has wrong length <br>
+ <br>
+ -v <br>
+ Verbose. <br>
+ <br>
+ <h2><a class="anchor" name="grib_copy_examples">
+grib_copy examples</a></h2>
+<ol type=1>
+<li>To copy only the pressure levels from a file<br>
+ <div class="fragment"><pre class="fragment">
+> grib_copy -w levtype=pl ../data/tigge_pf_ecmwf.grib2 out.grib
+</pre></div><br>
+</li><li>To copy only the fields that are not on pressure levels from a file<br>
+ <div class="fragment"><pre class="fragment">
+> grib_copy -w levtype!=pl ../data/tigge_pf_ecmwf.grib2 out.grib
+</pre></div><br>
+</li><li>A grib_file with multi field messages can be converted in single field messages with a simple grib_copy.<br>
+ <div class="fragment"><pre class="fragment">
+> grib_copy multi.grib simple.grib
+</pre></div><br>
+ </li></ol>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/grib_debug.html b/html/grib_debug.html
new file mode 100644
index 0000000..5132e3e
--- /dev/null
+++ b/html/grib_debug.html
@@ -0,0 +1,649 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: grib_debug</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1><a class="anchor" name="grib_debug">grib_debug</a></h1><h2><a class="anchor" name="DESCRIPTION">
+DESCRIPTION</a></h2>
+Dump the content of a grib file in debug mode.<h2><a class="anchor" name="USAGE">
+USAGE</a></h2>
+grib_debug [options] grib_file grib_file ...<h2><a class="anchor" name="OPTIONS">
+OPTIONS</a></h2>
+-V <br>
+ Version. <br>
+ <br>
+ <h2><a class="anchor" name="grib_debug_examples">
+grib_debug examples</a></h2>
+Dumping in a WMO documentation style with hexadecimal octet values (-H)<br>
+ and with the aliases of each key listed in square brackets (-a).<br>
+<br>
+ grib_dump -Ha ../data/reduced_gaussian_model_level.grib1<br>
+ <div class="fragment"><pre class="fragment">
+***** FILE: ../data/reduced_gaussian_model_level.grib1 
+======================   MESSAGE 1 ( length=10142 )            ======================
+======================   SECTION_0 ( length=0, padding=0 )     ======================
+1-4       identifier = GRIB
+5-7       totalLength = 10142 ( 0x00 0x27 0x9E )
+8         editionNumber = 1 ( 0x01 ) [ls.edition]
+======================   SECTION_1 ( length=52, padding=0 )    ======================
+1-3       section1Length = 52 ( 0x00 0x00 0x34 )
+4         gribTablesVersionNo = 128 ( 0x80 ) [table2Version]
+5         identificationOfOriginatingGeneratingCentre = 98 ( 0x62 ) [European Center for Medium-Range Weather Forecasts (grib1/0.table) ] [ls.centre, identificationOfCentre, originatingCentre]
+6         generatingProcessIdentifier = 128 ( 0x80 ) [generatingProcessIdentificationNumber, process]
+7         gridDefinition = 255 ( 0xFF )
+8         section1Flags = 128 [10000000]
+9         indicatorOfParameter = 130 ( 0x82 ) [T Temperature K (grib1/2.98.128.table) ]
+10        indicatorOfTypeOfLevel = 109 ( 0x6D ) [Hybrid level level number (2 octets) (grib1/3.table) ] [ls.levelType, typeOfLevel, typeOfFirstFixedSurface, mars.levtype]
+11-12     lev = 1 ( 0x00 0x01 ) [topLevel, bottomLevel, ls.level, mars.levelist]
+13        yearOfCentury = 7 ( 0x07 )
+14        month = 3 ( 0x03 )
+15        day = 18 ( 0x12 )
+16        hour = 12 ( 0x0C )
+17        minute = 0 ( 0x00 )
+18        indicatorOfUnitOfTimeRange = 1 ( 0x01 ) [Hour (grib1/4.table) ]
+19        periodOfTime = 0 ( 0x00 ) [P1]
+20        periodOfTimeIntervals = 0 ( 0x00 ) [P2]
+21        timeRangeIndicator = 0 ( 0x00 ) [Forecast product valid at reference time + P1 (P1>0) (grib1/5.table) ]
+22-23     numberIncludedInAverage = 0 ( 0x00 0x00 )
+24        numberMissingFromAveragesOrAccumulations = 0 ( 0x00 )
+25        centuryOfReferenceTimeOfData = 21 ( 0x15 )
+26        identificationOfOriginatingGeneratingSubCentre = 0 ( 0x00 ) [Absent (grib1/0.table) ] [subCentre]
+27-28     decimalScaleFactor = 2 ( 0x00 0x02 )
+29-40     reservedNeedNotBePresent = 12 {
+               00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
+            } # pad reservedNeedNotBePresent 
+41        localDefinitionNumber = 1 ( 0x01 )
+42        marsClass = 1 ( 0x01 ) [Operational archive (mars/class.table) ] [mars.class]
+43        marsType = 2 ( 0x02 ) [Analysis (mars/type.table) ] [ls.dataType, mars.type]
+44-45     marsStream = 1025 ( 0x04 0x01 ) [Atmospheric model (mars/stream.table) ] [mars.stream]
+46-49     experimentVersionNumber = 0001 [mars.expver]
+50        perturbationNumber = 0 ( 0x00 )
+51        numberOfForecastsInEnsemble = 0 ( 0x00 )
+52        padding_local1_1 = 1 {
+                     00
+                  } # pad padding_local1_1 
+======================   SECTION_2 ( length=896, padding=0 )   ======================
+1-3       section2Length = 896 ( 0x00 0x03 0x80 )
+4         numberOfVerticalCoordinateValues = 184 ( 0xB8 ) [NV, numberOfCoordinatesValues]
+5         pvlLocation = 33 ( 0x21 )
+6         dataRepresentationType = 4 ( 0x04 ) [Gaussian Latitude/Longitude Grid (grib1/6.table) ]
+7-8       numberOfPointsAlongAParallel = MISSING ( 0xFF 0xFF ) [geography.Ni]
+9-10      numberOfPointsAlongAMeridian = 64 ( 0x00 0x40 ) [geography.Nj]
+11-13     latitudeOfFirstGridPoint = 87864 ( 0x01 0x57 0x38 ) [La1]
+14-16     longitudeOfFirstGridPoint = 0 ( 0x00 0x00 0x00 ) [Lo1]
+17        resolutionAndComponentFlags = 0 [00000000]
+18-20     latitudeOfLastGridPoint = -87864 ( 0x81 0x57 0x38 ) [La2]
+21-23     longitudeOfLastGridPoint = 357188 ( 0x05 0x73 0x44 ) [Lo2]
+24-25     iDirectionIncrement = MISSING ( 0xFF 0xFF ) [Di]
+26-27     numberOfParallelsBetweenAPoleAndTheEquator = 32 ( 0x00 0x20 )
+28        scanningMode = 0 [00000000]
+29-32     padding_grid4_1 = 4 {
+                  00, 00, 00, 00
+               } # pad padding_grid4_1 
+33-768    pv = (184,736) {
+         0,    2.00004,    3.98083,    7.38719,    12.9083,    21.4136,    33.9529,    51.7466, 
+   76.1677,    108.716,    150.986,    204.637,    271.356,    352.824,    450.686,    566.519, 
+   701.813,    857.946,    1036.17,    1237.59,    1463.16,    1713.71,    1989.87,    2292.16, 
+    2620.9,     2976.3,    3358.43,     3767.2,    4202.42,    4663.78,    5150.86,    5663.16, 
+   6199.84,    6759.73,    7341.47,    7942.93,    8564.62,     9208.3,    9873.56,    10558.9, 
+   11262.5,    11982.7,    12713.9,    13453.2,      14192,    14922.7,    15638.1,    16329.6, 
+   16990.6,    17613.3,      18191,      18717,    19184.5,    19587.5,    19919.8,    20175.4, 
+   20348.9,    20434.2,    20426.2,      20319,      20107,    19785.4,    19348.8,    18798.8, 
+   18141.3,    17385.6,    16544.6,    15633.6,    14665.6,    13653.2,    12608.4,    11543.2, 
+   10471.3,    9405.22,    8356.25,    7335.16,    6353.92,     5422.8,    4550.21,    3743.46, 
+   3010.15,     2356.2,    1784.85,    1297.66,    895.194,    576.314,    336.772,    162.043, 
+   54.2083,    6.57563,    0.00316,          0,          0,          0,          0,          0, 
+         0,          0,          0,          0
+... 84 more values
+} # ibmfloat pv 
+769-896   pl = (64,128) {
+        20,         27,         36,         40,         45,         50,         60,         64, 
+        72,         75,         80,         90,         90,         96,        100,        108, 
+       108,        120,        120,        120,        128,        128,        128,        128, 
+       128,        128,        128,        128,        128,        128,        128,        128, 
+       128,        128,        128,        128,        128,        128,        128,        128, 
+       128,        128,        128,        128,        120,        120,        120,        108, 
+       108,        100,         96,         90,         90,         80,         75,         72, 
+        64,         60,         50,         45,         40,         36,         27,         20
+} # unsigned pl 
+======================   SECTION_4 ( length=9182, padding=0 )   ======================
+1-3       section4Length = 9182 ( 0x00 0x23 0xDE )
+4         dataFlag = 0 [00000000]
+5-6       binaryScaleFactor = 0 ( 0x00 0x00 )
+7-10      referenceValue = 17402.8
+11        numberOfBitsContainingEachPackedValue = 12 ( 0x0C ) [nbp, numberOfBits, bitsPerValue]
+12-9182   values = (6114,9171) {
+   203.778,    203.468,    202.958,    202.348,    201.758,    201.278,    200.888,    200.558, 
+   200.268,    200.078,    200.068,    200.318,    200.808,    201.458,    202.138,    202.758, 
+   203.248,    203.588,    203.798,    203.878,    205.968,    205.418,    204.438,    203.218, 
+   202.008,    201.128,    200.708,    200.598,    200.478,    200.228,    199.908,    199.528, 
+   199.108,    198.708,    198.528,    198.748,    199.458,    200.488,    201.548,    202.478, 
+   203.358,    204.178,    204.808,    205.198,    205.508,    205.838,    206.068,    207.338, 
+   206.488,    205.198,    203.798,    202.548,    201.528,    200.848,    200.638,    200.818, 
+   201.028,    200.888,    200.308,    199.638,    199.228,    199.018,    198.738,    198.328, 
+   197.868,    197.358,    196.928,    196.858,    197.348,    198.368,    199.638,    200.758, 
+   201.538,    202.288,    203.338,    204.438,    205.158,    205.558,    205.938,    206.438, 
+   207.008,    207.468,    207.638,    207.178,    206.658,    205.398,    203.788,    202.468, 
+   201.338,    200.298,    199.938,    200.318,    200.608,    200.478,    200.008,    199.208, 
+   198.278,    197.708,    197.558,    197.318
+... 6014 more values
+} # data_g1simple_packing values 
+======================   SECTION_5 ( length=4, padding=0 )     ======================
+1-4       7777 = 7777
+</pre></div><br>
+ <br>
+ <br>
+ How to obtain all the key names available in a grib file.<br>
+<br>
+ grib_dump -D ../data/regular_latlon_surface.grib1 <div class="fragment"><pre class="fragment">
+***** FILE: ../data/regular_latlon_surface.grib1 
+======================   MESSAGE 1 ( length=1100 )             ======================
+0-0 constant oneConstant = 1
+0-0 constant oneMillionConstant = 1000000
+0-0 offset_file offset = 0
+0-0 count_file count = 1
+0-0 count_total countTotal = 1
+0-0 lookup kindOfProduct = 1196575042 [GRIB 1196575042 0-4]
+0-0 lookup GRIBEditionNumber = 1 [? 1 7-1]
+======> section GRIB (1100,1100,0)
+   0-0 constant grib1divider = 1000
+   0-0 constant ieeeFloats = 0
+   0-0 transient dummy = 1
+   ======> section section_0 (0,0,0)
+      ----> label empty 
+   <===== section section_0
+   0-4 ascii identifier = GRIB
+   4-7 g1_message_length totalLength = 1100
+   7-8 unsigned editionNumber = 1 [ls.edition]
+   ======> section section_1 (52,52,0)
+      8-8 constant ECMWF = 98
+      8-8 position offsetSection1 = 8
+      8-11 section_length section1Length = 52
+      11-12 unsigned gribTablesVersionNo = 128 [table2Version]
+      12-13 codetable identificationOfOriginatingGeneratingCentre = 98 [European Center for Medium-Range Weather Forecasts (grib1/0.table) ] [ls.centre, identificationOfCentre, originatingCentre]
+      13-14 unsigned generatingProcessIdentifier = 128 [generatingProcessIdentificationNumber, process]
+      14-15 unsigned gridDefinition = 255
+      15-16 codeflag section1Flags = 128 [10000000:(1=1)  Section 2 included;(2=0)  Section 3 omited:grib1/1.table]
+      16-17 codetable indicatorOfParameter = 167 [2T 2 metre temperature K (grib1/2.98.128.table) ]
+      17-17 sprintf marsParam = 167.128 [mars.param, ls.param]
+      17-18 codetable indicatorOfTypeOfLevel = 1 [Surface (of the Earth, which includes sea surface) (grib1/3.table) ] [ls.levelType, typeOfLevel, typeOfFirstFixedSurface, mars.levtype]
+      18-20 unsigned lev = 0 [topLevel, bottomLevel, ls.level, mars.levelist]
+      20-21 unsigned yearOfCentury = 7
+      21-22 unsigned month = 3
+      22-23 unsigned day = 18
+      23-24 unsigned hour = 12
+      24-25 unsigned minute = 0
+      25-25 constant second = 0
+      25-26 codetable indicatorOfUnitOfTimeRange = 1 [Hour (grib1/4.table) ]
+      26-27 unsigned periodOfTime = 0 [P1]
+      27-28 unsigned periodOfTimeIntervals = 0 [P2]
+      28-29 codetable timeRangeIndicator = 0 [Forecast product valid at reference time + P1 (P1>0) (grib1/5.table) ]
+      29-31 unsigned numberIncludedInAverage = 0
+      31-32 unsigned numberMissingFromAveragesOrAccumulations = 0
+      32-33 unsigned centuryOfReferenceTimeOfData = 21
+      33-34 codetable identificationOfOriginatingGeneratingSubCentre = 0 [Absent (grib1/0.table) ] [subCentre]
+      34-36 signed decimalScaleFactor = 0
+      36-36 transient setLocalDefinition = 0
+      36-48 pad reservedNeedNotBePresent = 12 {
+         00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
+      } # pad reservedNeedNotBePresent 
+      48-48 g1date dataDate = 20070318 [mars.date, ls.date]
+      48-48 evaluate year = 2007
+      48-48 g1monthlydate monthlyDate = 20070301
+      48-48 time dataTime = 1200 [mars.time]
+      48-48 g1startstep marsStartStep = 0 [mars.startStep]
+      48-48 g1endstep marsEndStep = 0 [mars.endStep]
+      48-48 g1step marsStep = 0 [mars.step, ls.step, forecastTime]
+      48-48 g1verificationdate verificationDate = 20070318
+      48-48 g1monthlydate monthlyVerificationDate = 20070301
+      48-48 g1day_of_the_year_date dayOfTheYearDate = 2007-078
+      48-48 constant wrongPadding = 0
+      48-48 constant localUsePresent = 1
+      48-48 g1param parameter = 167
+      48-49 unsigned localDefinitionNumber = 1
+      ======> section localDefinition (11,11,0)
+         ======> section mars_labeling (8,8,0)
+            49-50 codetable marsClass = 1 [Operational archive (mars/class.table) ] [mars.class]
+            50-51 codetable marsType = 2 [Analysis (mars/type.table) ] [ls.dataType, mars.type]
+            51-53 codetable marsStream = 1025 [Atmospheric model (mars/stream.table) ] [mars.stream]
+            53-57 ksec1expver experimentVersionNumber = 0001 [mars.expver]
+            57-57 constant SimulationsOf30Days = s3
+            57-57 constant TYPE_S3 = 22
+         <===== section mars_labeling
+         57-58 unsigned perturbationNumber = 0
+         58-59 unsigned numberOfForecastsInEnsemble = 0
+         59-60 pad padding_local1_1 = 1 {
+            00
+         } # pad padding_local1_1 
+      <===== section localDefinition
+      60-60 transient centreForTableNumber = 98
+      60-60 section_padding localExtensionPadding = 0 {}
+      60-60 section_padding section1Padding = 0 {}
+      60-60 padtoeven evenpadding_sec1 = 0 {}
+      60-60 concept grib1_short_name = 2T [ls.short_name]
+      60-60 concept grib1_name = 2_metre_temperature [name]
+      60-60 concept grib1_units = K [units]
+   <===== section section_1
+   60-60 bit gridDescriptionSectionPresent = 1 [GDSPresent]
+   60-60 bit bitmapPresent = 0 [bitmapSectionPresent]
+   ======> section section_2 (32,32,0)
+      60-60 position offsetSection2 = 60
+      60-63 section_length section2Length = 32
+      63-64 unsigned numberOfVerticalCoordinateValues = 0 [NV, numberOfCoordinatesValues]
+      64-64 constant neitherPresent = 255
+      64-65 unsigned pvlLocation = 255
+      65-66 codetable dataRepresentationType = 0 [Latitude/Longitude Grid (grib1/6.table) ]
+      ======> section dataRepresentation (22,22,0)
+         66-66 constant gridDefinitionTemplateNumber = 0
+         66-68 unsigned numberOfPointsAlongAParallel = 16 [Ni]
+         68-70 unsigned numberOfPointsAlongAMeridian = 31 [Nj]
+         70-73 signed latitudeOfFirstGridPoint = 60000 [La1]
+         73-73 scale latitudeOfFirstGridPointInDegrees = 60 [geography.laFirst]
+         73-76 signed longitudeOfFirstGridPoint = 0 [Lo1]
+         76-76 scale longitudeOfFirstGridPointInDegrees = 0 [geography.loFirst]
+         76-77 codeflag resolutionAndComponentFlags = 128 [10000000:(1=1)  Direction increments given;(2=0)  Earth assumed spherical with radius = 6367.47 km;(5=0)  u and v components resolved relative to easterly and northerly directions:grib1/7.table]
+         77-77 bit ijDirectionIncrementGiven = 1 [iDirectionIncrementGiven, jDirectionIncrementGiven, DiGiven, DjGiven]
+         77-77 bit earthIsOblate = 0
+         77-77 bit resolutionAndComponentFlags3 = 0
+         77-77 bit resolutionAndComponentFlags4 = 0
+         77-77 bit uvRelativeToGrid = 0
+         77-77 bit resolutionAndComponentFlags6 = 0
+         77-77 bit resolutionAndComponentFlags7 = 0
+         77-77 bit resolutionAndComponentFlags8 = 0
+         77-80 signed latitudeOfLastGridPoint = 0 [La2]
+         80-80 scale latitudeOfLastGridPointInDegrees = 0 [geography.laLast]
+         80-83 signed longitudeOfLastGridPoint = 30000 [Lo2]
+         83-83 transient longitudeOfLastGridPointG1to2 = 30000
+         83-83 scale longitudeOfLastGridPointInDegrees = 30 [geography.loLast]
+         83-85 unsigned iDirectionIncrement = 2000 [Di]
+         85-87 unsigned jDirectionIncrement = 2000 [Dj]
+         87-88 codeflag scanningMode = 0 [00000000:(1=0)  Points scan in +i direction;(2=0)  Points scan in -j direction;(3=0)  Adjacent points in i direction are consecutive :grib1/8.table]
+         88-88 bit iScansNegatively = 0
+         88-88 bit jScansPositively = 0
+         88-88 bit jPointsAreConsecutive = 0
+         88-88 constant iScansPositively = 1
+         88-88 bit scanningMode4 = 0
+         88-88 bit scanningMode5 = 0
+         88-88 bit scanningMode6 = 0
+         88-88 bit scanningMode7 = 0
+         88-88 bit scanningMode8 = 0
+         88-88 latlon_increment jDirectionIncrementInDegrees = 2 [geography.jInc, geography.gridNorthSouth]
+         88-88 latlon_increment iDirectionIncrementInDegrees = 2 [geography.iInc, geography.gridWestEast]
+         ----> iterator ITERATOR 
+      <===== section dataRepresentation
+      88-88 position endGridDefinition = 88
+      88-88 transient PVPresent = 0
+      88-88 position offsetBeforePV = 88
+      88-88 position offsetBeforePL = 88
+      88-88 transient PLPresent = 0 [reducedGrid]
+      88-92 padto padding_sec2_1 = 4 {
+         00, 00, 00, 00
+      } # padto padding_sec2_1 
+      92-92 padtoeven padding_sec2_3 = 0 {}
+   <===== section section_2
+   92-92 position endOfHeadersMaker = 92
+   92-92 transient missingValue = 9999
+   92-92 constant tableReference = 0
+   ======> section section_4 (1004,1004,0)
+      92-92 position offsetSection4 = 92
+      92-95 g1_section4_length section4Length = 1004
+      95-95 g1_half_byte_codeflag halfByte = 8
+      95-96 codeflag dataFlag = 8 [00001000:(1=0)  Grid-point data;(2=0)  Simple packing;(3=0)  Floating point values are represented;(4=0)  No additional flags at octet 14:grib1/11.table]
+      96-98 signed binaryScaleFactor = -10
+      98-102 ibmfloat referenceValue = 269.587
+      102-103 unsigned numberOfBitsContainingEachPackedValue = 16 [nbp, numberOfBits, bitsPerValue]
+      103-103 bit sphericalHarmonics = 0
+      103-103 bit complexPacking = 0
+      103-103 bit integerPointValues = 0
+      103-103 bit additionalFlagPresent = 0
+      ======> section dataValues (993,993,0)
+         103-103 constant dataRepresentationTemplateNumber = 0
+         103-103 position offsetBeforeData = 103
+         103-103 constant bitMapIndicator = 255
+         103-1096 data_g1simple_packing values = (496,993) {
+               277.704,    277.797,    278.103,    274.598,    269.587,    278.345,    277.213,     278.19, 
+               277.853,    276.747,    274.361,    273.636,    274.593,    273.782,    273.016,    274.316, 
+               278.492,    278.792,    278.836,    278.333,    277.389,    278.525,    278.175,    277.255, 
+               277.383,    278.047,    277.877,    276.213,     273.99,    278.333,     278.58,    277.642, 
+               278.865,    278.997,    278.509,    278.983,    279.527,    279.414,      278.8,    278.749, 
+               278.895,    279.056,    278.699,    278.426,    276.601,    277.491,    279.646,    279.198, 
+               279.108,    279.156,    279.406,    279.527,    280.344,    280.869,    279.951,    281.621, 
+               281.221,    280.676,    281.049,    280.354,    279.025,    278.192,     280.05,    280.375, 
+                280.68,    281.269,    281.406,    281.483,    279.454,    280.641,    282.984,    282.578, 
+               281.797,    281.542,    281.854,      281.5,    279.917,    280.529,    282.008,    281.102, 
+               282.223,    282.727,    280.315,    278.539,    280.066,    280.789,    280.517,    282.883, 
+               283.897,    285.161,    285.779,    285.847,    281.973,    282.869,    281.926,    280.816, 
+                282.48,    281.894,    281.035,    281.722
+            ... 396 more values
+         } # data_g1simple_packing values 
+      <===== section dataValues
+      1096-1096 size valuesCount = 496
+      1096-1096 concept typeOfGrid = regular_ll [ls.gridType]
+      1096-1096 concept typeOfPacking = grid_simple [ls.packingType, dataRepresentation]
+      1096-1096 padtoeven padding_sec4_1 = 0 {}
+   <===== section section_4
+   ======> section section_5 (4,4,0)
+      ----> label gribSection5 
+      1096-1096 position offsetSection5 = 1096
+      1096-1100 ascii 7777 = 7777
+   <===== section section_5
+<===== section GRIB
+</pre></div><br>
+ <br>
+<br>
+ How to obtain a C code example from a grib file.<br>
+<br>
+ grib_dump -C ../data/regular_latlon_surface.grib1<br>
+ <div class="fragment"><pre class="fragment"><span class="preprocessor">#include <<a class="code" href="grib__api_8h.html" title="Copyright 2005-2016 ECMWF.">grib_api.h</a>></span>
+
+<span class="comment">/* This code was generated automatically */</span>
+
+
+<span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keyword">const</span> <span class="keywordtype">char</span>** argv)
+{
+    <a class="code" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h     = NULL;
+    <span class="keywordtype">size_t</span> size        = 0;
+    <span class="keywordtype">double</span>* v          = NULL;
+    FILE* f            = NULL;
+    <span class="keyword">const</span> <span class="keywordtype">char</span>* p      = NULL;
+    <span class="keyword">const</span> <span class="keywordtype">void</span>* buffer = NULL;
+
+    <span class="keywordflow">if</span>(argc != 2) {
+       fprintf(stderr,<span class="stringliteral">"usage: %s out\n"</span>,argv[0]);
+        exit(1);
+    }
+
+    h = <a class="code" href="group__grib__handle.html#g11d247e5afa10bd52fb895dc4296143f" title="Create a handle from a read_only template resource.">grib_handle_new_from_template</a>(NULL,<span class="stringliteral">"GRIB2"</span>);
+    <span class="keywordflow">if</span>(!h) {
+        fprintf(stderr,<span class="stringliteral">"Cannot create grib handle\n"</span>);
+        exit(1);
+    }
+
+
+    <span class="comment">/* empty */</span>
+
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"editionNumber"</span>,1),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"gribTablesVersionNo"</span>,128),0);
+
+    <span class="comment">/* 98 = European Center for Medium-Range Weather Forecasts (grib1/0.table)  */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"identificationOfOriginatingGeneratingCentre"</span>,98),0);
+
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"generatingProcessIdentifier"</span>,128),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"gridDefinition"</span>,255),0);
+
+    <span class="comment">/* 128 = 10000000</span>
+<span class="comment">    (1=1)  Section 2 included</span>
+<span class="comment">    (2=0)  Section 3 omited</span>
+<span class="comment">    See grib1/1.table */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"section1Flags"</span>,128),0);
+
+
+    <span class="comment">/* 167 = 2T 2 metre temperature K (grib1/2.98.128.table)  */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"indicatorOfParameter"</span>,167),0);
+
+
+    <span class="comment">/* 1 = Surface (of the Earth, which includes sea surface) (grib1/3.table)  */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"indicatorOfTypeOfLevel"</span>,1),0);
+
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"lev"</span>,0),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"yearOfCentury"</span>,7),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"month"</span>,3),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"day"</span>,18),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"hour"</span>,12),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"minute"</span>,0),0);
+
+    <span class="comment">/* 1 = Hour (grib1/4.table)  */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"indicatorOfUnitOfTimeRange"</span>,1),0);
+
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"periodOfTime"</span>,0),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"periodOfTimeIntervals"</span>,0),0);
+
+    <span class="comment">/* 0 = Forecast product valid at reference time + P1 (P1>0) (grib1/5.table)  */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"timeRangeIndicator"</span>,0),0);
+
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"numberIncludedInAverage"</span>,0),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"numberMissingFromAveragesOrAccumulations"</span>,0),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"centuryOfReferenceTimeOfData"</span>,21),0);
+
+    <span class="comment">/* 0 = Absent (grib1/0.table)  */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"identificationOfOriginatingGeneratingSubCentre"</span>,0),0);
+
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"decimalScaleFactor"</span>,0),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"localDefinitionNumber"</span>,1),0);
+
+    <span class="comment">/* 1 = Operational archive (mars/class.table)  */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"marsClass"</span>,1),0);
+
+
+    <span class="comment">/* 2 = Analysis (mars/type.table)  */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"marsType"</span>,2),0);
+
+
+    <span class="comment">/* 1025 = Atmospheric model (mars/stream.table)  */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"marsStream"</span>,1025),0);
+
+    p    = <span class="stringliteral">"0001"</span>;
+    size = strlen(p)+1;
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g78143cc64571b454b0aba14246e9a53a" title="Set a string value from a key.">grib_set_string</a>(h,<span class="stringliteral">"experimentVersionNumber"</span>,p,&size),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"perturbationNumber"</span>,0),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"numberOfForecastsInEnsemble"</span>,0),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"numberOfVerticalCoordinateValues"</span>,0),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"pvlLocation"</span>,255),0);
+
+    <span class="comment">/* 0 = Latitude/Longitude Grid (grib1/6.table)  */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"dataRepresentationType"</span>,0),0);
+
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"numberOfPointsAlongAParallel"</span>,16),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"numberOfPointsAlongAMeridian"</span>,31),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"latitudeOfFirstGridPoint"</span>,60000),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"longitudeOfFirstGridPoint"</span>,0),0);
+
+    <span class="comment">/* 128 = 10000000</span>
+<span class="comment">    (1=1)  Direction increments given</span>
+<span class="comment">    (2=0)  Earth assumed spherical with radius = 6367.47 km</span>
+<span class="comment">    (5=0)  u and v components resolved relative to easterly and northerly directions</span>
+<span class="comment">    See grib1/7.table */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"resolutionAndComponentFlags"</span>,128),0);
+
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"latitudeOfLastGridPoint"</span>,0),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"longitudeOfLastGridPoint"</span>,30000),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"iDirectionIncrement"</span>,2000),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"jDirectionIncrement"</span>,2000),0);
+
+    <span class="comment">/* 0 = 00000000</span>
+<span class="comment">    (1=0)  Points scan in +i direction</span>
+<span class="comment">    (2=0)  Points scan in -j direction</span>
+<span class="comment">    (3=0)  Adjacent points in i direction are consecutive </span>
+<span class="comment">    See grib1/8.table */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"scanningMode"</span>,0),0);
+
+
+    <span class="comment">/* ITERATOR */</span>
+
+
+    <span class="comment">/* 8 = 00001000</span>
+<span class="comment">    (1=0)  Grid-point data</span>
+<span class="comment">    (2=0)  Simple packing</span>
+<span class="comment">    (3=0)  Floating point values are represented</span>
+<span class="comment">    (4=0)  No additional flags at octet 14</span>
+<span class="comment">    See grib1/11.table */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"dataFlag"</span>,8),0);
+
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"numberOfBitsContainingEachPackedValue"</span>,16),0);
+    size = 496;
+    v    = (<span class="keywordtype">double</span>*)calloc(size,<span class="keyword">sizeof</span>(<span class="keywordtype">double</span>));
+    <span class="keywordflow">if</span>(!v) {
+        fprintf(stderr,<span class="stringliteral">"failed to allocate %d bytes\n"</span>,size*<span class="keyword">sizeof</span>(<span class="keywordtype">double</span>));
+        exit(1);
+    }
+
+    v[   0] = 277.704; v[   1] = 277.797; v[   2] = 278.103; v[   3] = 274.598;
+    v[   4] = 269.587; v[   5] = 278.345; v[   6] = 277.213; v[   7] =  278.19;
+    v[   8] = 277.853; v[   9] = 276.747; v[  10] = 274.361; v[  11] = 273.636;
+    v[  12] = 274.593; v[  13] = 273.782; v[  14] = 273.016; v[  15] = 274.316;
+    v[  16] = 278.492; v[  17] = 278.792; v[  18] = 278.836; v[  19] = 278.333;
+    v[  20] = 277.389; v[  21] = 278.525; v[  22] = 278.175; v[  23] = 277.255;
+    v[  24] = 277.383; v[  25] = 278.047; v[  26] = 277.877; v[  27] = 276.213;
+    v[  28] =  273.99; v[  29] = 278.333; v[  30] =  278.58; v[  31] = 277.642;
+    v[  32] = 278.865; v[  33] = 278.997; v[  34] = 278.509; v[  35] = 278.983;
+    v[  36] = 279.527; v[  37] = 279.414; v[  38] =   278.8; v[  39] = 278.749;
+    v[  40] = 278.895; v[  41] = 279.056; v[  42] = 278.699; v[  43] = 278.426;
+    v[  44] = 276.601; v[  45] = 277.491; v[  46] = 279.646; v[  47] = 279.198;
+    v[  48] = 279.108; v[  49] = 279.156; v[  50] = 279.406; v[  51] = 279.527;
+    v[  52] = 280.344; v[  53] = 280.869; v[  54] = 279.951; v[  55] = 281.621;
+    v[  56] = 281.221; v[  57] = 280.676; v[  58] = 281.049; v[  59] = 280.354;
+    v[  60] = 279.025; v[  61] = 278.192; v[  62] =  280.05; v[  63] = 280.375;
+    v[  64] =  280.68; v[  65] = 281.269; v[  66] = 281.406; v[  67] = 281.483;
+    v[  68] = 279.454; v[  69] = 280.641; v[  70] = 282.984; v[  71] = 282.578;
+    v[  72] = 281.797; v[  73] = 281.542; v[  74] = 281.854; v[  75] =   281.5;
+    v[  76] = 279.917; v[  77] = 280.529; v[  78] = 282.008; v[  79] = 281.102;
+    v[  80] = 282.223; v[  81] = 282.727; v[  82] = 280.315; v[  83] = 278.539;
+    v[  84] = 280.066; v[  85] = 280.789; v[  86] = 280.517; v[  87] = 282.883;
+    v[  88] = 283.897; v[  89] = 285.161; v[  90] = 285.779; v[  91] = 285.847;
+    v[  92] = 281.973; v[  93] = 282.869; v[  94] = 281.926; v[  95] = 280.816;
+    v[  96] =  282.48; v[  97] = 281.894; v[  98] = 281.035; v[  99] = 281.722;
+    v[ 100] = 279.978; v[ 101] = 284.138; v[ 102] = 287.234; v[ 103] = 287.831;
+    v[ 104] = 288.452; v[ 105] = 289.882; v[ 106] = 287.776; v[ 107] = 287.946;
+    v[ 108] = 281.466; v[ 109] = 284.771; v[ 110] = 283.343; v[ 111] = 282.477;
+    v[ 112] = 284.723; v[ 113] = 280.869; v[ 114] = 285.693; v[ 115] = 284.132;
+    v[ 116] = 276.881; v[ 117] = 283.388; v[ 118] = 287.295; v[ 119] = 286.764;
+    v[ 120] = 291.798; v[ 121] = 291.607; v[ 122] = 290.086; v[ 123] = 286.769;
+    v[ 124] =  284.24; v[ 125] = 280.884; v[ 126] = 286.866; v[ 127] = 284.694;
+    v[ 128] = 285.417; v[ 129] = 283.823; v[ 130] = 289.898; v[ 131] = 290.317;
+    v[ 132] = 287.031; v[ 133] = 287.949; v[ 134] = 289.263; v[ 135] = 289.869;
+    v[ 136] = 289.926; v[ 137] = 289.535; v[ 138] = 289.817; v[ 139] = 287.768;
+    v[ 140] = 290.394; v[ 141] = 290.294; v[ 142] = 287.069; v[ 143] = 281.759;
+    v[ 144] = 289.132; v[ 145] = 287.316; v[ 146] = 287.548; v[ 147] = 287.181;
+    v[ 148] = 287.645; v[ 149] = 289.492; v[ 150] = 288.956; v[ 151] = 286.634;
+    v[ 152] =   289.7; v[ 153] = 289.189; v[ 154] = 287.704; v[ 155] = 291.151;
+    v[ 156] = 286.208; v[ 157] = 291.093; v[ 158] = 284.818; v[ 159] = 282.097;
+    v[ 160] = 289.244; v[ 161] = 288.263; v[ 162] = 289.545; v[ 163] = 290.018;
+    v[ 164] = 289.881; v[ 165] = 290.215; v[ 166] = 289.999; v[ 167] = 289.447;
+    v[ 168] = 284.105; v[ 169] = 290.686; v[ 170] = 288.128; v[ 171] = 290.241;
+    v[ 172] = 289.116; v[ 173] = 289.576; v[ 174] =   291.8; v[ 175] =  286.35;
+    v[ 176] = 289.239; v[ 177] = 289.525; v[ 178] =  289.45; v[ 179] = 290.114;
+    v[ 180] = 290.301; v[ 181] = 289.429; v[ 182] = 290.005; v[ 183] = 287.195;
+    v[ 184] = 289.823; v[ 185] = 290.313; v[ 186] = 290.792; v[ 187] = 286.693;
+    v[ 188] = 291.941; v[ 189] = 290.783; v[ 190] = 290.818; v[ 191] = 287.234;
+    v[ 192] = 287.001; v[ 193] =  287.49; v[ 194] = 286.791; v[ 195] =  286.71;
+    v[ 196] = 287.182; v[ 197] =  290.49; v[ 198] = 290.322; v[ 199] = 289.957;
+    v[ 200] = 290.056; v[ 201] = 289.915; v[ 202] = 289.917; v[ 203] = 290.251;
+    v[ 204] = 290.502; v[ 205] = 290.782; v[ 206] = 291.367; v[ 207] = 291.025;
+    v[ 208] = 290.326; v[ 209] = 285.912; v[ 210] = 290.003; v[ 211] = 294.341;
+    v[ 212] = 294.048; v[ 213] = 291.771; v[ 214] = 290.675; v[ 215] = 291.203;
+    v[ 216] = 291.478; v[ 217] = 290.939; v[ 218] = 290.555; v[ 219] = 289.821;
+    v[ 220] = 290.126; v[ 221] = 291.021; v[ 222] = 291.243; v[ 223] = 290.761;
+    v[ 224] =  291.05; v[ 225] = 291.556; v[ 226] = 292.386; v[ 227] = 293.149;
+    v[ 228] = 293.301; v[ 229] = 291.821; v[ 230] = 290.157; v[ 231] = 293.427;
+    v[ 232] = 292.629; v[ 233] =  292.25; v[ 234] =  294.59; v[ 235] = 296.421;
+    v[ 236] =  296.16; v[ 237] = 290.221; v[ 238] = 290.882; v[ 239] = 290.864;
+    v[ 240] =  294.69; v[ 241] = 294.224; v[ 242] = 294.332; v[ 243] = 293.917;
+    v[ 244] = 292.863; v[ 245] = 293.005; v[ 246] = 292.814; v[ 247] = 295.443;
+    v[ 248] = 296.665; v[ 249] = 298.566; v[ 250] = 298.846; v[ 251] = 298.165;
+    v[ 252] = 297.105; v[ 253] = 294.729; v[ 254] = 294.968; v[ 255] = 293.305;
+    v[ 256] = 298.003; v[ 257] = 296.402; v[ 258] =  295.03; v[ 259] = 295.649;
+    v[ 260] = 295.811; v[ 261] = 297.203; v[ 262] = 298.222; v[ 263] =  297.12;
+    v[ 264] = 299.167; v[ 265] = 298.919; v[ 266] = 298.372; v[ 267] = 297.932;
+    v[ 268] =  296.47; v[ 269] = 295.208; v[ 270] = 294.647; v[ 271] = 294.034;
+    v[ 272] = 300.407; v[ 273] = 301.659; v[ 274] = 300.621; v[ 275] = 297.093;
+    v[ 276] = 295.676; v[ 277] = 298.434; v[ 278] = 298.906; v[ 279] = 302.369;
+    v[ 280] = 300.815; v[ 281] = 299.277; v[ 282] = 298.643; v[ 283] = 298.381;
+    v[ 284] = 296.632; v[ 285] = 294.887; v[ 286] = 295.411; v[ 287] = 293.665;
+    v[ 288] = 303.051; v[ 289] = 304.741; v[ 290] = 304.555; v[ 291] = 301.901;
+    v[ 292] = 301.846; v[ 293] = 300.793; v[ 294] = 302.141; v[ 295] = 300.521;
+    v[ 296] =  300.74; v[ 297] = 301.164; v[ 298] = 299.811; v[ 299] = 298.146;
+    v[ 300] = 298.443; v[ 301] = 293.905; v[ 302] = 295.545; v[ 303] = 296.185;
+    v[ 304] = 306.254; v[ 305] = 307.698; v[ 306] = 307.503; v[ 307] =  304.62;
+    v[ 308] = 304.458; v[ 309] = 303.097; v[ 310] =  303.69; v[ 311] = 303.482;
+    v[ 312] = 303.514; v[ 313] = 304.001; v[ 314] = 299.346; v[ 315] = 298.529;
+    v[ 316] = 297.935; v[ 317] = 295.495; v[ 318] = 295.846; v[ 319] = 296.122;
+    v[ 320] = 309.596; v[ 321] = 308.059; v[ 322] = 305.473; v[ 323] = 305.581;
+    v[ 324] =  306.11; v[ 325] = 303.994; v[ 326] = 304.602; v[ 327] = 304.286;
+    v[ 328] =  304.18; v[ 329] = 305.511; v[ 330] = 300.083; v[ 331] =  299.69;
+    v[ 332] = 297.061; v[ 333] = 296.252; v[ 334] = 296.508; v[ 335] = 298.427;
+    v[ 336] = 309.837; v[ 337] = 309.568; v[ 338] = 308.175; v[ 339] = 306.983;
+    v[ 340] = 307.399; v[ 341] = 303.002; v[ 342] = 303.582; v[ 343] = 303.765;
+    v[ 344] = 304.829; v[ 345] = 303.815; v[ 346] = 302.952; v[ 347] = 301.263;
+    v[ 348] = 296.397; v[ 349] = 298.184; v[ 350] = 297.765; v[ 351] = 299.807;
+    v[ 352] = 311.829; v[ 353] =  309.43; v[ 354] = 307.672; v[ 355] = 307.068;
+    v[ 356] = 306.384; v[ 357] = 304.862; v[ 358] = 304.397; v[ 359] = 303.944;
+    v[ 360] = 304.673; v[ 361] = 304.326; v[ 362] = 303.948; v[ 363] = 302.827;
+    v[ 364] = 297.377; v[ 365] = 296.722; v[ 366] = 298.711; v[ 367] = 300.744;
+    v[ 368] = 310.353; v[ 369] = 309.716; v[ 370] =  309.28; v[ 371] = 308.163;
+    v[ 372] = 306.711; v[ 373] =  305.75; v[ 374] =  304.74; v[ 375] = 305.384;
+    v[ 376] = 304.885; v[ 377] = 305.735; v[ 378] =  307.71; v[ 379] = 303.764;
+    v[ 380] = 303.073; v[ 381] =  300.87; v[ 382] = 300.858; v[ 383] = 302.205;
+    v[ 384] = 311.264; v[ 385] = 311.085; v[ 386] = 310.432; v[ 387] =  308.94;
+    v[ 388] = 305.619; v[ 389] =     307; v[ 390] = 306.413; v[ 391] = 307.649;
+    v[ 392] = 308.429; v[ 393] = 309.358; v[ 394] = 309.365; v[ 395] = 307.933;
+    v[ 396] =  306.15; v[ 397] = 305.126; v[ 398] = 305.611; v[ 399] = 303.336;
+    v[ 400] = 309.947; v[ 401] = 309.562; v[ 402] = 309.339; v[ 403] = 310.316;
+    v[ 404] = 308.055; v[ 405] = 307.565; v[ 406] = 310.605; v[ 407] =   308.4;
+    v[ 408] = 309.219; v[ 409] = 310.801; v[ 410] = 310.525; v[ 411] =  309.65;
+    v[ 412] = 306.611; v[ 413] = 306.033; v[ 414] = 307.988; v[ 415] = 308.941;
+    v[ 416] =   308.4; v[ 417] = 307.615; v[ 418] = 307.404; v[ 419] = 308.381;
+    v[ 420] = 309.778; v[ 421] = 311.715; v[ 422] = 308.409; v[ 423] = 307.156;
+    v[ 424] = 308.715; v[ 425] = 307.201; v[ 426] = 310.448; v[ 427] =  309.24;
+    v[ 428] = 306.716; v[ 429] = 307.307; v[ 430] = 309.062; v[ 431] = 309.776;
+    v[ 432] = 303.033; v[ 433] =  302.76; v[ 434] = 303.071; v[ 435] = 306.578;
+    v[ 436] = 309.819; v[ 437] = 305.046; v[ 438] = 309.764; v[ 439] = 307.857;
+    v[ 440] = 301.171; v[ 441] = 302.783; v[ 442] = 301.107; v[ 443] = 300.429;
+    v[ 444] = 303.189; v[ 445] = 304.585; v[ 446] = 303.709; v[ 447] = 307.132;
+    v[ 448] = 302.315; v[ 449] = 302.922; v[ 450] = 302.593; v[ 451] = 302.476;
+    v[ 452] = 302.132; v[ 453] = 305.953; v[ 454] = 300.132; v[ 455] = 301.361;
+    v[ 456] = 302.355; v[ 457] = 304.042; v[ 458] = 302.175; v[ 459] = 297.057;
+    v[ 460] = 296.072; v[ 461] = 296.644; v[ 462] = 296.895; v[ 463] =  296.22;
+    v[ 464] = 300.897; v[ 465] = 300.839; v[ 466] = 300.899; v[ 467] = 301.941;
+    v[ 468] = 302.709; v[ 469] = 301.495; v[ 470] = 302.248; v[ 471] = 301.468;
+    v[ 472] = 303.598; v[ 473] = 304.599; v[ 474] = 299.779; v[ 475] =   297.9;
+    v[ 476] = 295.564; v[ 477] = 296.015; v[ 478] = 293.688; v[ 479] = 294.294;
+    v[ 480] = 300.801; v[ 481] = 300.724; v[ 482] = 301.204; v[ 483] = 302.463;
+    v[ 484] = 302.885; v[ 485] = 305.413; v[ 486] = 305.523; v[ 487] = 303.672;
+    v[ 488] = 304.547; v[ 489] = 303.334; v[ 490] = 301.616; v[ 491] = 298.654;
+    v[ 492] = 297.975; v[ 493] = 295.379; v[ 494] =  293.83; v[ 495] = 300.082;
+   
+    GRIB_CHECK(<a class="code" href="group__get__set.html#ga24d87e236a2469309d1176ee5925d77" title="Set a double array from a key.">grib_set_double_array</a>(h,<span class="stringliteral">"values"</span>,v,size),0);
+    free(v);
+
+    <span class="comment">/* gribSection5 */</span>
+
+<span class="comment">/* Save the message */</span>
+
+    f = fopen(argv[1],<span class="stringliteral">"w"</span>);
+    <span class="keywordflow">if</span>(!f) {
+        perror(argv[1]);
+        exit(1);
+    }
+
+    GRIB_CHECK(<a class="code" href="group__handling__coded__messages.html#g9d654bd4fc5f422c161edd0a140ea185" title="getting the message attached to a handle">grib_get_message</a>(h,&buffer,&size),0);
+
+    <span class="keywordflow">if</span>(fwrite(buffer,1,size,f) != size) {
+        perror(argv[1]);
+        exit(1);
+    }
+
+    <span class="keywordflow">if</span>(fclose(f)) {
+        perror(argv[1]);
+        exit(1);
+    }
+
+    <a class="code" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677" title="Frees a handle, also frees the message if it is not a user message.">grib_handle_delete</a>(h);
+    <span class="keywordflow">return</span> 0;
+}
+</pre></div><br>
+ <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/grib_dump.html b/html/grib_dump.html
new file mode 100644
index 0000000..f30b6a4
--- /dev/null
+++ b/html/grib_dump.html
@@ -0,0 +1,242 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: grib_dump</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1><a class="anchor" name="grib_dump">grib_dump</a></h1><h2><a class="anchor" name="DESCRIPTION">
+DESCRIPTION</a></h2>
+Dump the content of a grib file in different formats.<h2><a class="anchor" name="USAGE">
+USAGE</a></h2>
+grib_dump [options] grib_file grib_file ...<h2><a class="anchor" name="OPTIONS">
+OPTIONS</a></h2>
+-O <br>
+ Octet mode. WMO documentation style dump. <br>
+ <br>
+ -D <br>
+ Debug mode. <br>
+ <br>
+ -P key[:{s/d/l}],key[:{s/d/l}],... <br>
+ As -p adding the declared keys to the default list. <br>
+ <br>
+ -d <br>
+ Print all data values. Available only in C mode <br>
+ <br>
+ -C <br>
+ C code mode. A C code program generating the grib message is dumped. <br>
+ <br>
+ -t <br>
+ Print type information. <br>
+ <br>
+ -H <br>
+ Print octet content in hexadecimal format. <br>
+ <br>
+ -a <br>
+ Dump aliases. <br>
+ <br>
+ -w key[:{s/d/l}]{=/!=}value,key[:{s/d/l}]{=/!=}value,... <br>
+ Where clause. Grib messages are processed only if they match all the key/value constraints. A valid constraint is of type key=value or key!=value. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be specified. Default type is string. <br>
+ <br>
+ -M <br>
+ Multi-grib support off. Turn off support for multiple fields in single grib message <br>
+ <br>
+ -7 <br>
+ Does not fail when the message has wrong length <br>
+ <br>
+ -V <br>
+ Version. <br>
+ <br>
+ -G <br>
+ GRIBEX compatibility mode. <br>
+ <br>
+ <h2><a class="anchor" name="grib_dump_examples">
+grib_dump examples</a></h2>
+<ol type=1>
+<li>To dump in a WMO documentation style with hexadecimal octet values (-H)<br>
+ <div class="fragment"><pre class="fragment">
+>grib_dump -H ../data/reduced_gaussian_model_level.grib1
+</pre></div><br>
+</li><li>To obtain all the key names available in a grib file.<br>
+ <div class="fragment"><pre class="fragment">
+> grib_dump -D ../data/regular_latlon_surface.grib1
+</pre></div><br>
+</li><li>To obtain a C code example from a grib file.<br>
+ <div class="fragment"><pre class="fragment">>grib_dump -C ../data/regular_latlon_surface.grib1
+<span class="preprocessor">#include <<a class="code" href="grib__api_8h.html" title="Copyright 2005-2016 ECMWF.">grib_api.h</a>></span>
+
+<span class="comment">/* This code was generated automatically */</span>
+
+
+<span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keyword">const</span> <span class="keywordtype">char</span>** argv)
+{
+    <a class="code" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h     = NULL;
+    <span class="keywordtype">size_t</span> size        = 0;
+    <span class="keywordtype">double</span>* vdouble    = NULL;
+    <span class="keywordtype">long</span>* vlong        = NULL;
+    FILE* f            = NULL;
+    <span class="keyword">const</span> <span class="keywordtype">char</span>* p      = NULL;
+    <span class="keyword">const</span> <span class="keywordtype">void</span>* buffer = NULL;
+
+    <span class="keywordflow">if</span>(argc != 2) {
+       fprintf(stderr,<span class="stringliteral">"usage: %s out\n"</span>,argv[0]);
+        exit(1);
+    }
+
+    h = <a class="code" href="group__grib__handle.html#gadefac64c19fb5ff06cf805ad4af06ff" title="Create a handle from a message contained in a samples directory.">grib_handle_new_from_samples</a>(NULL,<span class="stringliteral">"GRIB1"</span>);
+    <span class="keywordflow">if</span>(!h) {
+        fprintf(stderr,<span class="stringliteral">"Cannot create grib handle\n"</span>);
+        exit(1);
+    }
+
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"editionNumber"</span>,1),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"table2Version"</span>,128),0);
+
+    <span class="comment">/* 98 = European Center for Medium-Range Weather Forecasts (grib1/0.table)  */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"centre"</span>,98),0);
+
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"generatingProcessIdentifier"</span>,130),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"gridDefinition"</span>,255),0);
+
+    <span class="comment">/* 128 = 10000000</span>
+<span class="comment">    (1=1)  Section 2 included</span>
+<span class="comment">    (2=0)  Section 3 omited</span>
+<span class="comment">    See grib1/1.table */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"section1Flags"</span>,128),0);
+
+
+    <span class="comment">/* 167 = 2 metre temperature  (K)  (grib1/2.98.128.table)  */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"indicatorOfParameter"</span>,167),0);
+
+
+    <span class="comment">/* 1 = Surface  (of the Earth, which includes sea surface)  (grib1/3.table)  */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"indicatorOfTypeOfLevel"</span>,1),0);
+
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"level"</span>,0),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"yearOfCentury"</span>,8),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"month"</span>,2),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"day"</span>,6),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"hour"</span>,12),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"minute"</span>,0),0);
+
+    <span class="comment">/* 1 = Hour (grib1/4.table)  */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"unitOfTimeRange"</span>,1),0);
+
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"P1"</span>,0),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"P2"</span>,0),0);
+
+    <span class="comment">/* 0 = Forecast product valid at reference time + P1  (P1>0)  (grib1/5.table)  */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"timeRangeIndicator"</span>,0),0);
+
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"numberIncludedInAverage"</span>,0),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"numberMissingFromAveragesOrAccumulations"</span>,0),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"centuryOfReferenceTimeOfData"</span>,21),0);
+
+    <span class="comment">/* 0 = Unknown code table entry (grib1/0.ecmf.table)  */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"subCentre"</span>,0),0);
+
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"decimalScaleFactor"</span>,0),0);
+
+    <span class="comment">/* 1 = MARS labelling or ensemble forecast data (grib1/localDefinitionNumber.98.table)  */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"localDefinitionNumber"</span>,1),0);
+
+
+    <span class="comment">/* 1 = Operational archive (mars/class.table)  */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"marsClass"</span>,1),0);
+
+
+    <span class="comment">/* 2 = Analysis (mars/type.table)  */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"marsType"</span>,2),0);
+
+
+    <span class="comment">/* 1025 = Atmospheric model (mars/stream.table)  */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"marsStream"</span>,1025),0);
+
+    p    = <span class="stringliteral">"0001"</span>;
+    size = strlen(p)+1;
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g78143cc64571b454b0aba14246e9a53a" title="Set a string value from a key.">grib_set_string</a>(h,<span class="stringliteral">"experimentVersionNumber"</span>,p,&size),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"perturbationNumber"</span>,0),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"numberOfForecastsInEnsemble"</span>,0),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"numberOfVerticalCoordinateValues"</span>,0),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"pvlLocation"</span>,255),0);
+
+    <span class="comment">/* 0 = Latitude/Longitude Grid (grib1/6.table)  */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"dataRepresentationType"</span>,0),0);
+
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"Ni"</span>,16),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"Nj"</span>,31),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"latitudeOfFirstGridPoint"</span>,60000),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"longitudeOfFirstGridPoint"</span>,0),0);
+
+    <span class="comment">/* 128 = 10000000</span>
+<span class="comment">    (1=1)  Direction increments given</span>
+<span class="comment">    (2=0)  Earth assumed spherical with radius = 6367.47 km</span>
+<span class="comment">    (5=0)  u and v components resolved relative to easterly and northerly directions</span>
+<span class="comment">    See grib1/7.table */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"resolutionAndComponentFlags"</span>,128),0);
+
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"latitudeOfLastGridPoint"</span>,0),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"longitudeOfLastGridPoint"</span>,30000),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"iDirectionIncrement"</span>,2000),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"jDirectionIncrement"</span>,2000),0);
+
+    <span class="comment">/* 0 = 00000000</span>
+<span class="comment">    (1=0)  Points scan in +i direction</span>
+<span class="comment">    (2=0)  Points scan in -j direction</span>
+<span class="comment">    (3=0)  Adjacent points in i direction are consecutive </span>
+<span class="comment">    See grib1/8.table */</span>
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"scanningMode"</span>,0),0);
+
+
+    <span class="comment">/* ITERATOR */</span>
+
+
+    <span class="comment">/* NEAREST */</span>
+
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"bitsPerValue"</span>,16),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"sphericalHarmonics"</span>,0),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"complexPacking"</span>,0),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"integerPointValues"</span>,0),0);
+    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"additionalFlagPresent"</span>,0),0);
+
+    <span class="comment">/* gribSection5 */</span>
+
+<span class="comment">/* Save the message */</span>
+
+    f = fopen(argv[1],<span class="stringliteral">"w"</span>);
+    <span class="keywordflow">if</span>(!f) {
+        perror(argv[1]);
+        exit(1);
+    }
+
+    GRIB_CHECK(<a class="code" href="group__handling__coded__messages.html#g9d654bd4fc5f422c161edd0a140ea185" title="getting the message attached to a handle">grib_get_message</a>(h,&buffer,&size),0);
+
+    <span class="keywordflow">if</span>(fwrite(buffer,1,size,f) != size) {
+        perror(argv[1]);
+        exit(1);
+    }
+
+    <span class="keywordflow">if</span>(fclose(f)) {
+        perror(argv[1]);
+        exit(1);
+    }
+
+    <a class="code" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677" title="Frees a handle, also frees the message if it is not a user message.">grib_handle_delete</a>(h);
+    <span class="keywordflow">return</span> 0;
+}
+</pre></div><br>
+ </li></ol>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/grib_dump_examples.html b/html/grib_dump_examples.html
new file mode 100644
index 0000000..e44ec3c
--- /dev/null
+++ b/html/grib_dump_examples.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: grib_dump examples</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1><a class="anchor" name="grib_dump_examples">grib_dump examples</a></h1>With the -O option you can get only the keys actually coded into the message, with the -a option the aliases of each key are printed. <a class="el" href="grib_dump.html">grib_dump</a> -Oa "grib_file" <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/grib_examples.html b/html/grib_examples.html
new file mode 100644
index 0000000..fe57c0b
--- /dev/null
+++ b/html/grib_examples.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: Grib API examples</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1><a class="anchor" name="grib_examples">Grib API examples</a></h1>The main features of the grib_api are explained here through some simple examples that can be taken as a starting point to write more complex programs.<br>
+<h2><a class="anchor" name="fortran90">
+Fortran 90</a></h2>
+<ul>
+<li><a class="el" href="index_8f90-example.html">index.f90</a> how to access a grib file through an index.</li><li><a class="el" href="get_8f90-example.html">get.f90</a> how to get values through the key names.</li><li><a class="el" href="count__messages_8f90-example.html">count_messages.f90</a> count the messages in a file and loop through them.</li><li><a class="el" href="get__pl_8f90-example.html">get_pl.f90</a> how to get the list of number of points for each parallel in reduced grid [...]
+<h2><a class="anchor" name="C">
+C</a></h2>
+<ul>
+<li><a class="el" href="get_8c-example.html">get.c</a> is an example showing how to get values through the key names.</li><li><a class="el" href="set_8c-example.html">set.c</a> is an example illustrating how to set values through the key names.</li><li><a class="el" href="keys__iterator_8c-example.html">keys_iterator.c</a> explains how to get the names of all the keys defined in a message and how to iterate through them.</li><li><a class="el" href="iterator_8c-example.html">iterator.c</a [...]
+<h2><a class="anchor" name="fortran77">
+Fortran 77</a></h2>
+<ul>
+<li><a class="el" href="get__fortran_8_f-example.html">get_fortran.F</a> is an example showing how to get values through the key names.</li><li><a class="el" href="set__fortran_8_f-example.html">set_fortran.F</a> is an example illustrating how to set values through the key names.</li><li><a class="el" href="keys__iterator__fortran_8_f-example.html">keys_iterator_fortran.F</a> explains how to get the names of all the keys defined in a message and how to iterate through them.</li><li><a cl [...]
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/grib_filter.html b/html/grib_filter.html
new file mode 100644
index 0000000..d054d98
--- /dev/null
+++ b/html/grib_filter.html
@@ -0,0 +1,124 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: grib_filter</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1><a class="anchor" name="grib_filter">grib_filter</a></h1><h2><a class="anchor" name="DESCRIPTION">
+DESCRIPTION</a></h2>
+Apply the rules defined in rules_file to each grib message in the grib files provided as arguments.<h2><a class="anchor" name="USAGE">
+USAGE</a></h2>
+grib_filter [options] rules_file grib_file grib_file ...<h2><a class="anchor" name="OPTIONS">
+OPTIONS</a></h2>
+-f <br>
+ Force. Force the execution not to fail on error. <br>
+ <br>
+ -o output_grib_file <br>
+ Output grib is written to ouput_grib_file. If an ouput grib file is required and -o is not used, theouput grib is written to filtered.out <br>
+ <br>
+ -M <br>
+ Multi-grib support off. Turn off support for multiple fields in single grib message <br>
+ <br>
+ -V <br>
+ Version. <br>
+ <br>
+ -g <br>
+ Copy GTS header. <br>
+ <br>
+ -G <br>
+ GRIBEX compatibility mode. <br>
+ <br>
+ -7 <br>
+ Does not fail when the message has wrong length <br>
+ <br>
+ -v <br>
+ Verbose. <br>
+ <br>
+ <h2><a class="anchor" name="grib_filter_examples">
+grib_filter examples</a></h2>
+<ol type=1>
+<li>The rules accepted by grib_filter are different from the grib_convert rules due to the kind of work grib_filter it is supposed to do.<br>
+ The main difference between grib_filter and grib_convert is that the convert is a 1 field in input 1 field in output tool, while the filter is a 1 field in input as many field you need in output. At this aim the filter syntax allows a write in the form: write "filename". So that it is possible repeating as many write you need or using a parametrised write to send the output to many files. <br>
+ The grib_filter processes sequentially all the grib messages contained in the input file and it applies the rules to each one. <br>
+ Since the filename used in the write statement can contain some key values, taken from the grib processed when applying the "write rule", several files are produced in output containing fields with the same value of the keys used in the file name. <br>
+ Indeed if we write a rules_file containing the only statement:<br>
+ <br>
+ <div class="fragment"><pre class="fragment">
+write "../data/split/[centre]_[date]_[dataType]_[levelType].grib[editionNumber]";
+</pre></div><br>
+ Applying this rules_file to the ../data/tigge_pf_ecmwf.grib2 grib file we obtain several files in the ../data/split directory containting fields splitted according their keys values<br>
+ <div class="fragment"><pre class="fragment">
+>grib_filter rules_file ../data/tigge_pf_ecmwf.grib2
+>ls ../data/split
+ecmf_20060619_pf_sfc.grib2
+ecmf_20060630_pf_sfc.grib2
+ecmf_20070122_pf_pl.grib2
+ecmf_20070122_pf_pt.grib2
+ecmf_20070122_pf_pv.grib2
+ecmf_20070122_pf_sfc.grib2
+</pre></div><br>
+</li><li>The key values in the file name can also be obtained in a different format by indicating explicitly the type required after a colon.<ul>
+<li>:l for long</li><li>:d for double</li><li>:s for string</li></ul>
+The following statement works in a slightly different way from the previous example, including in the output file name the long values for centre and dataType.<br>
+ <div class="fragment"><pre class="fragment">
+write "../data/split/[centre:l]_[date]_[dataType:l]_[levelType].grib[editionNumber]";
+</pre></div><br>
+ Running the same command again we obtain a different list of files.<br>
+ <div class="fragment"><pre class="fragment">
+>grib_filter rules_file ../data/tigge_pf_ecmwf.grib2
+>ls ../data/split
+98_20060619_4_sfc.grib2
+98_20060630_4_sfc.grib2
+98_20070122_4_pl.grib2
+98_20070122_4_pt.grib2
+98_20070122_4_pv.grib2
+98_20070122_4_sfc.grib2
+</pre></div><br>
+</li><li>Other statements are allowed in the grib_filter syntax:<ul>
+<li>if ( condition ) { statement;}<br>
+ The condition can be made using ==,!= and joining single block conditions with || and && <br>
+ The statement can be any valid statement also another nested condition<br>
+</li><li>set keyname = keyvalue;</li><li>print "string to print also with key values like in the file name"</li><li>transient keyname1 = keyname2;</li><li>comments beginning with #</li></ul>
+A complex example of grib_filter rules is the following to change temperature in a grib edition 1 file. <div class="fragment"><pre class="fragment">
+# Temperature
+if ( level == 850 && indicatorOfParameter == 11 ) {
+    print "found indicatorOfParameter=[indicatorOfParameter] level=[level] date=[date]";
+    transient oldtype = type ;
+    set identificationOfOriginatingGeneratingSubCentre=98;
+    set gribTablesVersionNo = 128;
+    set indicatorOfParameter = 130;
+    set localDefinitionNumber=1;
+    set marsClass="od";
+    set marsStream="kwbc";
+    # Negatively/Positively Perturbed Forecast
+    if ( oldtype == 2 || oldtype == 3 ) {
+      set marsType="pf";
+      set experimentVersionNumber="4001";
+    }
+    # Control Forecast
+    if ( oldtype == 1 ) {
+      set marsType="cf";
+      set experimentVersionNumber="0001";
+    }
+    set numberOfForecastsInEnsemble=11;
+    write;
+    print "indicatorOfParameter=[indicatorOfParameter] level=[level] date=[date]";
+    print;
+}
+</pre></div><br>
+ </li></ol>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/grib_get.html b/html/grib_get.html
new file mode 100644
index 0000000..ee8b0aa
--- /dev/null
+++ b/html/grib_get.html
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: grib_get</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1><a class="anchor" name="grib_get">grib_get</a></h1><h2><a class="anchor" name="DESCRIPTION">
+DESCRIPTION</a></h2>
+Get values of some keys from a grib file. It is similar to grib_ls, but fails returning an error code when an error occurs (e.g. key not found).<h2><a class="anchor" name="USAGE">
+USAGE</a></h2>
+grib_get [options] grib_file grib_file ...<h2><a class="anchor" name="OPTIONS">
+OPTIONS</a></h2>
+-f <br>
+ Force. Force the execution not to fail on error. <br>
+ <br>
+ -p key[:{s/d/l}],key[:{s/d/l}],... <br>
+ Declaration of keys to print. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be requested. Default type is string. <br>
+ <br>
+ -F format <br>
+ C style format for floating point values. <br>
+ <br>
+ -l Latitude,Longitude[,MODE,file] <br>
+ Value close to the point of a Latitude/Longitude. Allowed values for MODE are: 4 (4 values in the nearest points are printed) Default 1 (the value at the nearest point is printed) file (file is used as mask. The closer point with mask value>=0.5 is printed) <br>
+ <br>
+ -P key[:{s/d/l}],key[:{s/d/l}],... <br>
+ As -p adding the declared keys to the default list. <br>
+ <br>
+ -w key[:{s/d/l}]{=/!=}value,key[:{s/d/l}]{=/!=}value,... <br>
+ Where clause. Grib messages are processed only if they match all the key/value constraints. A valid constraint is of type key=value or key!=value. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be specified. Default type is string. <br>
+ <br>
+ -n namespace <br>
+ All the keys belonging to namespace are printed. <br>
+ <br>
+ -V <br>
+ Version. <br>
+ <br>
+ -W width <br>
+ Minimum width of each column in output. Default is 10. <br>
+ <br>
+ -m <br>
+ Mars keys are printed. <br>
+ <br>
+ -M <br>
+ Multi-grib support off. Turn off support for multiple fields in single grib message <br>
+ <br>
+ -g <br>
+ Copy GTS header. <br>
+ <br>
+ -G <br>
+ GRIBEX compatibility mode. <br>
+ <br>
+ -7 <br>
+ Does not fail when the message has wrong length <br>
+ <br>
+ <h2><a class="anchor" name="grib_get_examples">
+grib_get examples</a></h2>
+<ol type=1>
+<li>grib_get fails if a key is not found.<br>
+ <div class="fragment"><pre class="fragment">
+>grib_get -p gribname ../data/tigge_pf_ecmwf.grib2
+
+</pre></div></li><li>To get the step of the first GRIB message in a file: <br>
+ <div class="fragment"><pre class="fragment">
+>grib_get -w count=1 -p step ../data/tigge_pf_ecmwf.grib2
+</pre></div> </li></ol>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/grib_get_data.html b/html/grib_get_data.html
new file mode 100644
index 0000000..bcb3446
--- /dev/null
+++ b/html/grib_get_data.html
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: grib_get_data</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1><a class="anchor" name="grib_get_data">grib_get_data</a></h1><h2><a class="anchor" name="DESCRIPTION">
+DESCRIPTION</a></h2>
+Print a latitude, longitude, data values list<h2><a class="anchor" name="USAGE">
+USAGE</a></h2>
+grib_get_data [options] grib_file grib_file ...<h2><a class="anchor" name="OPTIONS">
+OPTIONS</a></h2>
+-M <br>
+ Multi-grib support off. Turn off support for multiple fields in single grib message <br>
+ <br>
+ -m missingValue <br>
+ The missing value is given through this option. Any string is allowed and it is printed in place of the missing values. Default is to skip the missing values. <br>
+ <br>
+ -p key[:{s/d/l}],key[:{s/d/l}],... <br>
+ Declaration of keys to print. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be requested. Default type is string. <br>
+ <br>
+ -R key1=relative_error1,key2=relative_error2,... <br>
+ Compare floating point values using the relative error as tolerance. key1=relative_error will compare key1 using relative_error1. all=relative_error will compare all the floating point keys using relative_error. Default all=0. <br>
+ <br>
+ -F format <br>
+ C style format for values. Default is "%.10e" <br>
+ <br>
+ -w key[:{s/d/l}]{=/!=}value,key[:{s/d/l}]{=/!=}value,... <br>
+ Where clause. Grib messages are processed only if they match all the key/value constraints. A valid constraint is of type key=value or key!=value. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be specified. Default type is string. <br>
+ <br>
+ -f <br>
+ Force. Force the execution not to fail on error. <br>
+ <br>
+ -G <br>
+ GRIBEX compatibility mode. <br>
+ <br>
+ -7 <br>
+ Does not fail when the message has wrong length <br>
+ <br>
+ -V <br>
+ Version. <br>
+ <br>
+ <h2><a class="anchor" name="grib_get_data_examples">
+grib_get_data examples</a></h2>
+<ol type=1>
+<li>To get a latitude, longitude, value list, skipping the missing values(=9999) <div class="fragment"><pre class="fragment">
+>grib_get_data ../data/reduced_gaussian_model_level.grib2
+</pre></div></li><li>If you want to define your missing value=1111 and to print the string missing in place of it <div class="fragment"><pre class="fragment">
+>grib_get_data -m 1111:missing ../data/reduced_gaussian_model_level.grib2
+</pre></div></li><li>If you want to print the value of other keys with the data value list <div class="fragment"><pre class="fragment">
+>grib_get_data -p centre,level,step ../data/reduced_gaussian_model_level.grib2
+</pre></div> </li></ol>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/grib_keys.html b/html/grib_keys.html
new file mode 100644
index 0000000..f0e550f
--- /dev/null
+++ b/html/grib_keys.html
@@ -0,0 +1,153 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: grib_keys</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1><a class="anchor" name="grib_keys">grib_keys</a></h1><h2><a class="anchor" name="DESCRIPTION">
+DESCRIPTION</a></h2>
+Lists the keys available for a type of grib (-T option) or in a grib message from a file (-F option).<h2><a class="anchor" name="USAGE">
+USAGE</a></h2>
+grib_keys [options]<h2><a class="anchor" name="OPTIONS">
+OPTIONS</a></h2>
+-T type <br>
+ To print the keys available in the given grib type. For a list of the availeble types see -L option. <br>
+ <br>
+ -F file <br>
+ To print the keys available in the grib file. <br>
+ <br>
+ -x <br>
+ Print the extended set of keys. <br>
+ <br>
+ -c <br>
+ Print only coded keys. <br>
+ <br>
+ -L <br>
+ List of available types. <br>
+ <br>
+ -t <br>
+ Print type information. <br>
+ <br>
+ -a <br>
+ Dump aliases. <br>
+ <br>
+ <h2><a class="anchor" name="grib_keys_examples">
+grib_keys examples</a></h2>
+<ol type=1>
+<li>With the -L option a list of the available templates is printed <br>
+ <div class="fragment"><pre class="fragment">
+> grib_keys -L \n
+GRIB1
+GRIB2
+reduced_gg_ml_grib2
+reduced_gg_pl_grib1
+reduced_gg_sfc_grib1
+reduced_gg_ml_grib1
+reduced_gg_pl_grib2
+reduced_gg_sfc_grib2
+reduced_gg_sfc_jpeg_grib2
+reduced_ll_sfc_grib1
+reduced_ll_sfc_grib2
+regular_gg_ml_grib1
+regular_gg_ml_grib2
+regular_gg_pl_grib1
+regular_gg_pl_grib2
+regular_ll_sfc_grib1
+regular_ll_sfc_grib2
+regular_ll_pl_grib1
+regular_ll_pl_grib2
+sh_ml_grib1
+sh_ml_grib2
+sh_pl_grib1
+sh_pl_grib2
+</pre></div><br>
+</li><li>To print the standard set of key available for a given type<br>
+ <div class="fragment"><pre class="fragment">
+> grib_keys -T regular_ll_sfc_grib1
+=================== regular_ll_sfc_grib1 
+editionNumber
+====> SECTION 1 <==== 
+table2Version
+centre
+generatingProcessIdentifier
+indicatorOfParameter
+marsParam (read only)
+indicatorOfTypeOfLevel
+level
+timeRangeIndicator
+subCentre
+decimalScaleFactor
+dataDate
+dataTime
+stepUnits
+stepRange
+startStep
+endStep
+localDefinitionNumber
+marsClass
+marsType
+marsStream
+experimentVersionNumber
+perturbationNumber
+numberOfForecastsInEnsemble
+name (read only)
+units (read only)
+bitmapPresent
+====> SECTION 2 <==== 
+numberOfVerticalCoordinateValues
+Ni
+Nj
+latitudeOfFirstGridPointInDegrees
+longitudeOfFirstGridPointInDegrees
+earthIsOblate
+uvRelativeToGrid
+latitudeOfLastGridPointInDegrees
+longitudeOfLastGridPointInDegrees
+DjInDegrees
+DiInDegrees
+iScansNegatively
+jScansPositively
+jPointsAreConsecutive
+alternativeRowScanning (read only)
+numberOfDataPoints (read only)
+numberOfValues (read only)
+missingValue
+====> SECTION 4 <==== 
+binaryScaleFactor (read only)
+referenceValue (read only)
+bitsPerValue
+sphericalHarmonics
+complexPacking
+integerPointValues
+additionalFlagPresent
+typeOfPacking
+values
+numberOfCodedValues (read only)
+maximum (read only)
+minimum (read only)
+average (read only)
+numberOfMissing (read only)
+standardDeviation (read only)
+skewness (read only)
+kurtosis (read only)
+isConstant (read only)
+typeOfGrid
+getNumberOfValues (read only)
+====> SECTION 5 <==== 
+</pre></div><br>
+ </li></ol>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/grib_ls.html b/html/grib_ls.html
new file mode 100644
index 0000000..b622cf7
--- /dev/null
+++ b/html/grib_ls.html
@@ -0,0 +1,95 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: grib_ls</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1><a class="anchor" name="grib_ls">grib_ls</a></h1><h2><a class="anchor" name="DESCRIPTION">
+DESCRIPTION</a></h2>
+List content of grib files printing values of some keys. It does not fail when a key is not found.<h2><a class="anchor" name="USAGE">
+USAGE</a></h2>
+grib_ls [options] grib_file grib_file ...<h2><a class="anchor" name="OPTIONS">
+OPTIONS</a></h2>
+-p key[:{s/d/l}],key[:{s/d/l}],... <br>
+ Declaration of keys to print. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be requested. Default type is string. <br>
+ <br>
+ -F format <br>
+ C style format for floating point values. <br>
+ <br>
+ -P key[:{s/d/l}],key[:{s/d/l}],... <br>
+ As -p adding the declared keys to the default list. <br>
+ <br>
+ -w key[:{s/d/l}]{=/!=}value,key[:{s/d/l}]{=/!=}value,... <br>
+ Where clause. Grib messages are processed only if they match all the key/value constraints. A valid constraint is of type key=value or key!=value. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be specified. Default type is string. <br>
+ <br>
+ -B order by directive <br>
+ Order by. The output will be ordered according the order by directive. Order by example: "step asc, centre desc" (step ascending and centre discending) <br>
+ <br>
+ -l Latitude,Longitude[,MODE,file] <br>
+ Value close to the point of a Latitude/Longitude. Allowed values for MODE are: 4 (4 values in the nearest points are printed) Default 1 (the value at the nearest point is printed) file (file is used as mask. The closer point with mask value>=0.5 is printed) <br>
+ <br>
+ -i index <br>
+ Data value corresponding to the given index is printed. <br>
+ <br>
+ -n namespace <br>
+ All the keys belonging to namespace are printed. <br>
+ <br>
+ -m <br>
+ Mars keys are printed. <br>
+ <br>
+ -V <br>
+ Version. <br>
+ <br>
+ -W width <br>
+ Minimum width of each column in output. Default is 10. <br>
+ <br>
+ -M <br>
+ Multi-grib support off. Turn off support for multiple fields in single grib message <br>
+ <br>
+ -g <br>
+ Copy GTS header. <br>
+ <br>
+ -G <br>
+ GRIBEX compatibility mode. <br>
+ <br>
+ -7 <br>
+ Does not fail when the message has wrong length <br>
+ <br>
+ <h2><a class="anchor" name="grib_ls_examples">
+grib_ls examples</a></h2>
+<ol type=1>
+<li>Without options a default list of keys is printed. <br>
+ The default list is different depending on the type of grib message. <br>
+ <div class="fragment"><pre class="fragment">
+> grib_ls ../data/reduced*.grib1 ../data/regular*.grib1 ../data/reduced*.grib2 \n
+</pre></div><br>
+</li><li>To print offset and count number in file use the keys offset and count<br>
+ Also the total count in a set of files is available as countTotal<br>
+ <div class="fragment"><pre class="fragment">
+> grib_ls -p offset,count,countTotal ../data/reduced*.grib1
+</pre></div><br>
+</li><li>To list only a subset of messages use the -w (where option).<br>
+ Only the pressure levels are listed with the following line.<br>
+ <div class="fragment"><pre class="fragment">
+> grib_ls -w levType=pl ../tigge_pf_ecmwf.grib2 
+</pre></div><br>
+</li><li>All the grib messages not on pressure levels are listed as follows:<br>
+ <div class="fragment"><pre class="fragment">
+> grib_ls -w levType!=pl ../tigge_pf_ecmwf.grib2 
+</pre></div><br>
+ </li></ol>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/grib_set.html b/html/grib_set.html
new file mode 100644
index 0000000..9a1976e
--- /dev/null
+++ b/html/grib_set.html
@@ -0,0 +1,103 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: grib_set</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1><a class="anchor" name="grib_set">grib_set</a></h1><h2><a class="anchor" name="DESCRIPTION">
+DESCRIPTION</a></h2>
+Sets key/value pairs in the input grib file and writes each message to the output_grib_file. It fails when an error occurs (e.g. key not found).<h2><a class="anchor" name="USAGE">
+USAGE</a></h2>
+grib_set [options] grib_file grib_file ... output_grib_file<h2><a class="anchor" name="OPTIONS">
+OPTIONS</a></h2>
+-s key[:{s/d/l}]=value,key[:{s/d/l}]=value,... <br>
+ Key/values to set. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be defined. By default the native type is set. <br>
+ <br>
+ -r <br>
+ Repack data. Sometimes after setting some keys involving properties of the packing algorithm a repacking of data is needed. This repacking is performed setting this -r option. <br>
+ <br>
+ -d value <br>
+ Set all the data values to "value". <br>
+ <br>
+ -p key[:{s/d/l}],key[:{s/d/l}],... <br>
+ Declaration of keys to print. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be requested. Default type is string. <br>
+ <br>
+ -P key[:{s/d/l}],key[:{s/d/l}],... <br>
+ As -p adding the declared keys to the default list. <br>
+ <br>
+ -w key[:{s/d/l}]=value,key[:{s/d/l}]=value,... <br>
+ Where clause. Set is only executed for grib messages matching all the key/value constraints. If a grib message does not match the constraints it is copied unchanged to the output_grib_file. This behaviour can be changed setting the option -S. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be defined. Default type is string. <br>
+ <br>
+ -7 <br>
+ Does not fail when the message has wrong length <br>
+ <br>
+ -S <br>
+ Strict. Only grib messages matching all the constraints are copied to the output file <br>
+ <br>
+ -V <br>
+ Version. <br>
+ <br>
+ -M <br>
+ Multi-grib support off. Turn off support for multiple fields in single grib message <br>
+ <br>
+ -g <br>
+ Copy GTS header. <br>
+ <br>
+ -G <br>
+ GRIBEX compatibility mode. <br>
+ <br>
+ -f <br>
+ Force. Force the execution not to fail on error. <br>
+ <br>
+ -v <br>
+ Verbose. <br>
+ <br>
+ <h2><a class="anchor" name="grib_set_examples">
+grib_set examples</a></h2>
+<ol type=1>
+<li>To set productDefinitionTemplateNumber=2 only for the fields with productDefinitionTemplateNumber=11 <br>
+ <div class="fragment"><pre class="fragment">
+>grib_set -s productDefinitionTemplateNumber=2 -w productDefinitionTemplateNumber=11 ../data/tigge_pf_ecmwf.grib2 out.grib2
+</pre></div><br>
+</li><li>To set productDefinitionTemplateNumber=2 only for the fields for which productDefinitionTemplateNumber is not equal to 11 <br>
+ <div class="fragment"><pre class="fragment">
+>grib_set -s productDefinitionTemplateNumber=2 -w productDefinitionTemplateNumber!=11 tigge_pf_ecmwf.grib2 out.grib2
+</pre></div><br>
+</li><li>When a key is not used all the bits of its value should be set to 1 to indicate that it is missing. Since the length (number of octet) is different from a key to another, the value that we have to code for missing keys is not unique. To give an easy way to set a key to missing a string "missing" or "MISSING" is accepted by grib_set as follows:<br>
+ <div class="fragment"><pre class="fragment">
+>grib_set -s scaleFactorOfFirstFixedSurface=missing,scaledValueOfFirstFixedSurface=MISSING ../data/regular_latlon_surface.grib2 out.grib2
+</pre></div><br>
+ Since some values can not be set to missing you can get an error for those keys.</li><li>To set scaleFactorOfSecondFixedSurface to missing only for the fields for which scaleFactorOfSecondFixedSurface is not missing: <br>
+ <div class="fragment"><pre class="fragment">
+>grib_set -s scaleFactorOfSecondFixedSurface=missing -w scaleFactorOfSecondFixedSurface!=missing tigge_pf_ecmwf.grib2 out.grib2
+</pre></div><br>
+</li><li>It's possible to produce a grib edition 2 file from a grib edition 1 just changing the edition number with grib_set. At this stage of development all the geography parameters, level and time information is correctly translated, for the product definition extra set calls must be done. To do this properly <a class="el" href="grib_convert.html">grib_convert</a> is suggested. <br>
+ <div class="fragment"><pre class="fragment">
+grib_set -s editionNumber=2 ../data/reduced_gaussian_pressure_level.grib1
+</pre></div><br>
+</li><li>With grib edition 2 is possible to compress data using the jpeg algorithm. To change packing algorithm from grid_simple (simple packing) to grid_jpeg (jpeg2000 packing):<br>
+ <div class="fragment"><pre class="fragment">
+>grib_set -s packingType=grid_jpeg ../data/regular_gaussian_model_level.grib2 out.grib2
+</pre></div><br>
+</li><li>It's possible to ask grib_api to calculate the number of bits per value needed to pack a given field with a fixed number of decimal digits of precision. For example if we want to pack a temperature expressed in Kelvin with 1 digits of precision after the decimal point we can set changeDecimalPrecision=1 <br>
+ <div class="fragment"><pre class="fragment">
+>grib_set -s changeDecimalPrecision=1 ../data/regular_latlon_surface.grib2 ../data/out.grib2
+rm -f ../data/out.grib2 | true
+./grib_set -s changeDecimalPrecision=1 ../data/regular_latlon_surface.grib2 ../data/out.grib2
+</pre></div><br>
+ </li></ol>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/group__context.html b/html/group__context.html
new file mode 100644
index 0000000..df607bf
--- /dev/null
+++ b/html/group__context.html
@@ -0,0 +1,1016 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: The context object</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>The context object</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca">grib_free_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *data)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib free procedure, format of a procedure referenced in the context that is used to free memory.  <a href="#g807998f481ebb5ab8916b23669bc38ca"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, size_t length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib malloc procedure, format of a procedure referenced in the context that is used to allocate memory.  <a href="#ge40ef151522f628d0a0300861e1869e0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gcfc03db8667b1019d896ab2ab47dc12d">grib_realloc_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *data, size_t length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib realloc procedure, format of a procedure referenced in the context that is used to reallocate memory.  <a href="#gcfc03db8667b1019d896ab2ab47dc12d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gba007477d7d085d602184ae4df95f994">grib_log_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, int level, const char *mesg)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib loc proc, format of a procedure referenced in the context that is used to log internal messages.  <a href="#gba007477d7d085d602184ae4df95f994"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gd18d790f8aabf46e6b766eab07b535a0">grib_print_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *descriptor, const char *mesg)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib print proc, format of a procedure referenced in the context that is used to print external messages.  <a href="#gd18d790f8aabf46e6b766eab07b535a0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef size_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gfcaeb1a8fb78e0028906ee1e2ddbfcc0">grib_data_read_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *ptr, size_t size, void *stream)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib data read proc, format of a procedure referenced in the context that is used to read from a stream in a resource.  <a href="#gfcaeb1a8fb78e0028906ee1e2ddbfcc0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef size_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g85f5907a2b006b370be8e176e92d0248">grib_data_write_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, const void *ptr, size_t size, void *stream)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib data read write, format of a procedure referenced in the context that is used to write to a stream from a resource.  <a href="#g85f5907a2b006b370be8e176e92d0248"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef off_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g5fc575ad1d5736763f2d688b82597b09">grib_data_tell_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *stream)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib data tell, format of a procedure referenced in the context that is used to tell the current position in a stream.  <a href="#g5fc575ad1d5736763f2d688b82597b09"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef off_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g9d4894f207e7f5d70533371915e45a2d">grib_data_seek_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, off_t offset, int whence, void *stream)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib data seek, format of a procedure referenced in the context that is used to seek the current position in a stream.  <a href="#g9d4894f207e7f5d70533371915e45a2d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g49b4be77db1a3764ca291e7b45fce366">grib_data_eof_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *stream)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib data eof, format of a procedure referenced in the context that is used to test end of file.  <a href="#g49b4be77db1a3764ca291e7b45fce366"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ge4d49e82f57836891aa57fce24b59800">grib_get_context</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Retreive the context from a handle.  <a href="#ge4d49e82f57836891aa57fce24b59800"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g01ce1b8dc121afe1fd8212ceef8c829d">grib_context_get_default</a> (void)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the static default context.  <a href="#g01ce1b8dc121afe1fd8212ceef8c829d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gbbb93339feef87a0ef7c415fa484c022">grib_context_new</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create and allocate a new context from a parent context.  <a href="#gbbb93339feef87a0ef7c415fa484c022"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g4bd1c4d8b32c1ae42227420ed2251d57">grib_context_delete</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees the cached definition files of the context.  <a href="#g4bd1c4d8b32c1ae42227420ed2251d57"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g8d72ab772809fba49a41b32909770dd1">grib_gts_header_on</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the gts header mode on.  <a href="#g8d72ab772809fba49a41b32909770dd1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g9a3ce8e25ef3e59387015f906a79901a">grib_gts_header_off</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the gts header mode off.  <a href="#g9a3ce8e25ef3e59387015f906a79901a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ge8e9e3cce24d282a1b34432926b868c0">grib_gribex_mode_on</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the gribex mode on.  <a href="#ge8e9e3cce24d282a1b34432926b868c0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g6f6a5612649241d9ecae7e2a288bc436">grib_gribex_mode_off</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the gribex mode off.  <a href="#g6f6a5612649241d9ecae7e2a288bc436"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gec49c14665a9b4faa90a74cb069b9a30">grib_context_set_user_data</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *udata)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets user data in a context.  <a href="#gec49c14665a9b4faa90a74cb069b9a30"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g7063ea5ce72ed460a1978c26dbc6af89">grib_context_get_user_data</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">get userData from a context  <a href="#g7063ea5ce72ed460a1978c26dbc6af89"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gf38d04b9b8438fca7a418b507915030a">grib_context_set_memory_proc</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, <a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a> griballoc, <a class="el" href="group__context.html#g807998f481ebb5ab8916b236 [...]
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets memory procedures of the context.  <a href="#gf38d04b9b8438fca7a418b507915030a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g5cd4b2513883a0d5989d5643087c4097">grib_context_set_persistent_memory_proc</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, <a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a> griballoc, <a class="el" href="group__context.html#g807998f481ebb [...]
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets memory procedures of the context for persistent data.  <a href="#g5cd4b2513883a0d5989d5643087c4097"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g13ac96fc6a017f896cfe1325fcd7aa6b">grib_context_set_buffer_memory_proc</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, <a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a> griballoc, <a class="el" href="group__context.html#g807998f481ebb5ab8 [...]
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets memory procedures of the context for large buffers.  <a href="#g13ac96fc6a017f896cfe1325fcd7aa6b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g06f0601960b317f15b78396ed12b1881">grib_context_set_path</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, const char *path)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the context search path for definition files.  <a href="#g06f0601960b317f15b78396ed12b1881"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gd007cf96b681b389dadbbb9e7540e321">grib_context_set_dump_mode</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, int mode)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets context dump mode.  <a href="#gd007cf96b681b389dadbbb9e7540e321"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g68b597e40215c9ced7959c7350980d2f">grib_context_set_print_proc</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, <a class="el" href="group__context.html#gd18d790f8aabf46e6b766eab07b535a0">grib_print_proc</a> printp)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the context printing procedure used for user interaction.  <a href="#g68b597e40215c9ced7959c7350980d2f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g09581ce8cdeff9da0f38a78898097b9e">grib_context_set_logging_proc</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, <a class="el" href="group__context.html#gba007477d7d085d602184ae4df95f994">grib_log_proc</a> logp)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the context logging procedure used for system (warning, errors, infos .  <a href="#g09581ce8cdeff9da0f38a78898097b9e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g3266536e68ebb6d4bbc4a22b29f0e8ea">grib_multi_support_on</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Turn on support for multiple fields in single grib messages.  <a href="#g3266536e68ebb6d4bbc4a22b29f0e8ea"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gc022270a99922ccc57147670ed2a58d4">grib_multi_support_off</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Turn off support for multiple fields in single grib messages.  <a href="#gc022270a99922ccc57147670ed2a58d4"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The context is a long life configuration object of the grib_api. It is used to define special allocation and free routines or to set special grib_api behaviours and variables. <hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="g49b4be77db1a3764ca291e7b45fce366"></a><!-- doxytag: member="grib_api.h::grib_data_eof_proc" ref="g49b4be77db1a3764ca291e7b45fce366" args=")(const grib_context *c, void *stream)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int(* <a class="el" href="group__context.html#g49b4be77db1a3764ca291e7b45fce366">grib_data_eof_proc</a>)(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *stream)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Grib data eof, format of a procedure referenced in the context that is used to test end of file. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context where the tell will apply </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>*stream</em> </td><td>: the stream </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the position in the stream </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gfcaeb1a8fb78e0028906ee1e2ddbfcc0"></a><!-- doxytag: member="grib_api.h::grib_data_read_proc" ref="gfcaeb1a8fb78e0028906ee1e2ddbfcc0" args=")(const grib_context *c, void *ptr, size_t size, void *stream)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef size_t(* <a class="el" href="group__context.html#gfcaeb1a8fb78e0028906ee1e2ddbfcc0">grib_data_read_proc</a>)(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *ptr, size_t size, void *stream)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Grib data read proc, format of a procedure referenced in the context that is used to read from a stream in a resource. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context where the read will apply </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>*ptr</em> </td><td>: the resource </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>: size to read </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>*stream</em> </td><td>: the stream </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>size read </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g9d4894f207e7f5d70533371915e45a2d"></a><!-- doxytag: member="grib_api.h::grib_data_seek_proc" ref="g9d4894f207e7f5d70533371915e45a2d" args=")(const grib_context *c, off_t offset, int whence, void *stream)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef off_t(* <a class="el" href="group__context.html#g9d4894f207e7f5d70533371915e45a2d">grib_data_seek_proc</a>)(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, off_t offset, int whence, void *stream)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Grib data seek, format of a procedure referenced in the context that is used to seek the current position in a stream. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context where the tell will apply </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>offset</em> </td><td>: the offset to seek to </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>whence</em> </td><td>: If whence is set to SEEK_SET, SEEK_CUR, or SEEK_END, the offset is relative to the start of the file, the current position indicator, or end-of-file, respectively. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>*stream</em> </td><td>: the stream </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5fc575ad1d5736763f2d688b82597b09"></a><!-- doxytag: member="grib_api.h::grib_data_tell_proc" ref="g5fc575ad1d5736763f2d688b82597b09" args=")(const grib_context *c, void *stream)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef off_t(* <a class="el" href="group__context.html#g5fc575ad1d5736763f2d688b82597b09">grib_data_tell_proc</a>)(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *stream)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Grib data tell, format of a procedure referenced in the context that is used to tell the current position in a stream. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context where the tell will apply </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>*stream</em> </td><td>: the stream </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the position in the stream </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g85f5907a2b006b370be8e176e92d0248"></a><!-- doxytag: member="grib_api.h::grib_data_write_proc" ref="g85f5907a2b006b370be8e176e92d0248" args=")(const grib_context *c, const void *ptr, size_t size, void *stream)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef size_t(* <a class="el" href="group__context.html#g85f5907a2b006b370be8e176e92d0248">grib_data_write_proc</a>)(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, const void *ptr, size_t size, void *stream)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Grib data read write, format of a procedure referenced in the context that is used to write to a stream from a resource. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context where the write will apply </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>*ptr</em> </td><td>: the resource </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>: size to read </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>*stream</em> </td><td>: the stream </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>size written </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g807998f481ebb5ab8916b23669bc38ca"></a><!-- doxytag: member="grib_api.h::grib_free_proc" ref="g807998f481ebb5ab8916b23669bc38ca" args=")(const grib_context *c, void *data)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef void(* <a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca">grib_free_proc</a>)(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *data)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Grib free procedure, format of a procedure referenced in the context that is used to free memory. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context where the memory freeing will apply </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>: pointer to the data to be freed must match </td></tr>
+  </table>
+</dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0" title="Grib malloc procedure, format of a procedure referenced in the context that is used...">grib_malloc_proc</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gba007477d7d085d602184ae4df95f994"></a><!-- doxytag: member="grib_api.h::grib_log_proc" ref="gba007477d7d085d602184ae4df95f994" args=")(const grib_context *c, int level, const char *mesg)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef void(* <a class="el" href="group__context.html#gba007477d7d085d602184ae4df95f994">grib_log_proc</a>)(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, int level, const char *mesg)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Grib loc proc, format of a procedure referenced in the context that is used to log internal messages. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context where the logging will apply </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>level</em> </td><td>: the log level, as defined in log modes </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>mesg</em> </td><td>: the message to be logged </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge40ef151522f628d0a0300861e1869e0"></a><!-- doxytag: member="grib_api.h::grib_malloc_proc" ref="ge40ef151522f628d0a0300861e1869e0" args=")(const grib_context *c, size_t length)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef void*(* <a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a>)(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, size_t length)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Grib malloc procedure, format of a procedure referenced in the context that is used to allocate memory. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context where the memory allocation will apply </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>: length to be allocated in number of bytes </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a pointer to the alocated memory, NULL if no memory can be allocated must match </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca" title="Grib free procedure, format of a procedure referenced in the context that is used...">grib_free_proc</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd18d790f8aabf46e6b766eab07b535a0"></a><!-- doxytag: member="grib_api.h::grib_print_proc" ref="gd18d790f8aabf46e6b766eab07b535a0" args=")(const grib_context *c, void *descriptor, const char *mesg)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef void(* <a class="el" href="group__context.html#gd18d790f8aabf46e6b766eab07b535a0">grib_print_proc</a>)(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *descriptor, const char *mesg)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Grib print proc, format of a procedure referenced in the context that is used to print external messages. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context where the logging will apply </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>descriptor</em> </td><td>: the structure to be printed on, must match the implementation </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>mesg</em> </td><td>: the message to be printed </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gcfc03db8667b1019d896ab2ab47dc12d"></a><!-- doxytag: member="grib_api.h::grib_realloc_proc" ref="gcfc03db8667b1019d896ab2ab47dc12d" args=")(const grib_context *c, void *data, size_t length)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef void*(* <a class="el" href="group__context.html#gcfc03db8667b1019d896ab2ab47dc12d">grib_realloc_proc</a>)(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *data, size_t length)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Grib realloc procedure, format of a procedure referenced in the context that is used to reallocate memory. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context where the memory allocation will apply </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>: pointer to the data to be reallocated </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>: length to be allocated in number of bytes </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a pointer to the alocated memory </dd></dl>
+
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g4bd1c4d8b32c1ae42227420ed2251d57"></a><!-- doxytag: member="grib_api.h::grib_context_delete" ref="g4bd1c4d8b32c1ae42227420ed2251d57" args="(grib_context *c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void grib_context_delete           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Frees the cached definition files of the context. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be deleted </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g01ce1b8dc121afe1fd8212ceef8c829d"></a><!-- doxytag: member="grib_api.h::grib_context_get_default" ref="g01ce1b8dc121afe1fd8212ceef8c829d" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a>* grib_context_get_default           </td>
+          <td>(</td>
+          <td class="paramtype">void </td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the static default context. 
+<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the default context, NULL it the context is not available </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g7063ea5ce72ed460a1978c26dbc6af89"></a><!-- doxytag: member="grib_api.h::grib_context_get_user_data" ref="g7063ea5ce72ed460a1978c26dbc6af89" args="(grib_context *c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void* grib_context_get_user_data           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+get userData from a context 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context from which the user data will be retreived </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the user data referenced in the context </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gbbb93339feef87a0ef7c415fa484c022"></a><!-- doxytag: member="grib_api.h::grib_context_new" ref="gbbb93339feef87a0ef7c415fa484c022" args="(grib_context *c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a>* grib_context_new           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create and allocate a new context from a parent context. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be cloned, NULL for default context </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the new and empty context, NULL if error </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g13ac96fc6a017f896cfe1325fcd7aa6b"></a><!-- doxytag: member="grib_api.h::grib_context_set_buffer_memory_proc" ref="g13ac96fc6a017f896cfe1325fcd7aa6b" args="(grib_context *c, grib_malloc_proc griballoc, grib_free_proc gribfree, grib_realloc_proc gribrealloc)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void grib_context_set_buffer_memory_proc           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a> </td>
+          <td class="paramname"> <em>griballoc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca">grib_free_proc</a> </td>
+          <td class="paramname"> <em>gribfree</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__context.html#gcfc03db8667b1019d896ab2ab47dc12d">grib_realloc_proc</a> </td>
+          <td class="paramname"> <em>gribrealloc</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets memory procedures of the context for large buffers. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be modified </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>griballoc</em> </td><td>: the memory allocation procedure to be set </td></tr>
+  </table>
+</dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0" title="Grib malloc procedure, format of a procedure referenced in the context that is used...">grib_malloc_proc</a> </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>gribfree</em> </td><td>: the memory freeing procedure to be set </td></tr>
+  </table>
+</dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca" title="Grib free procedure, format of a procedure referenced in the context that is used...">grib_free_proc</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd007cf96b681b389dadbbb9e7540e321"></a><!-- doxytag: member="grib_api.h::grib_context_set_dump_mode" ref="gd007cf96b681b389dadbbb9e7540e321" args="(grib_context *c, int mode)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void grib_context_set_dump_mode           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int </td>
+          <td class="paramname"> <em>mode</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets context dump mode. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be modified </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>mode</em> </td><td>: the log mode to be set </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g09581ce8cdeff9da0f38a78898097b9e"></a><!-- doxytag: member="grib_api.h::grib_context_set_logging_proc" ref="g09581ce8cdeff9da0f38a78898097b9e" args="(grib_context *c, grib_log_proc logp)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void grib_context_set_logging_proc           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__context.html#gba007477d7d085d602184ae4df95f994">grib_log_proc</a> </td>
+          <td class="paramname"> <em>logp</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets the context logging procedure used for system (warning, errors, infos . 
+<p>
+..) messages<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be modified </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>logp</em> </td><td>: the logging procedure to be set </td></tr>
+  </table>
+</dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__context.html#gba007477d7d085d602184ae4df95f994" title="Grib loc proc, format of a procedure referenced in the context that is used to log...">grib_log_proc</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf38d04b9b8438fca7a418b507915030a"></a><!-- doxytag: member="grib_api.h::grib_context_set_memory_proc" ref="gf38d04b9b8438fca7a418b507915030a" args="(grib_context *c, grib_malloc_proc griballoc, grib_free_proc gribfree, grib_realloc_proc gribrealloc)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void grib_context_set_memory_proc           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a> </td>
+          <td class="paramname"> <em>griballoc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca">grib_free_proc</a> </td>
+          <td class="paramname"> <em>gribfree</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__context.html#gcfc03db8667b1019d896ab2ab47dc12d">grib_realloc_proc</a> </td>
+          <td class="paramname"> <em>gribrealloc</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets memory procedures of the context. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be modified </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>griballoc</em> </td><td>: the memory allocation procedure to be set </td></tr>
+  </table>
+</dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0" title="Grib malloc procedure, format of a procedure referenced in the context that is used...">grib_malloc_proc</a> </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>gribfree</em> </td><td>: the memory freeing procedure to be set </td></tr>
+  </table>
+</dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca" title="Grib free procedure, format of a procedure referenced in the context that is used...">grib_free_proc</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g06f0601960b317f15b78396ed12b1881"></a><!-- doxytag: member="grib_api.h::grib_context_set_path" ref="g06f0601960b317f15b78396ed12b1881" args="(grib_context *c, const char *path)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void grib_context_set_path           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>path</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets the context search path for definition files. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be modified </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>path</em> </td><td>: the search path to be set </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5cd4b2513883a0d5989d5643087c4097"></a><!-- doxytag: member="grib_api.h::grib_context_set_persistent_memory_proc" ref="g5cd4b2513883a0d5989d5643087c4097" args="(grib_context *c, grib_malloc_proc griballoc, grib_free_proc gribfree)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void grib_context_set_persistent_memory_proc           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a> </td>
+          <td class="paramname"> <em>griballoc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca">grib_free_proc</a> </td>
+          <td class="paramname"> <em>gribfree</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets memory procedures of the context for persistent data. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be modified </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>griballoc</em> </td><td>: the memory allocation procedure to be set </td></tr>
+  </table>
+</dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0" title="Grib malloc procedure, format of a procedure referenced in the context that is used...">grib_malloc_proc</a> </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>gribfree</em> </td><td>: the memory freeing procedure to be set </td></tr>
+  </table>
+</dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca" title="Grib free procedure, format of a procedure referenced in the context that is used...">grib_free_proc</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g68b597e40215c9ced7959c7350980d2f"></a><!-- doxytag: member="grib_api.h::grib_context_set_print_proc" ref="g68b597e40215c9ced7959c7350980d2f" args="(grib_context *c, grib_print_proc printp)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void grib_context_set_print_proc           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__context.html#gd18d790f8aabf46e6b766eab07b535a0">grib_print_proc</a> </td>
+          <td class="paramname"> <em>printp</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets the context printing procedure used for user interaction. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be modified </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>printp</em> </td><td>: the printing procedure to be set </td></tr>
+  </table>
+</dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__context.html#gd18d790f8aabf46e6b766eab07b535a0" title="Grib print proc, format of a procedure referenced in the context that is used to...">grib_print_proc</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gec49c14665a9b4faa90a74cb069b9a30"></a><!-- doxytag: member="grib_api.h::grib_context_set_user_data" ref="gec49c14665a9b4faa90a74cb069b9a30" args="(grib_context *c, void *udata)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void grib_context_set_user_data           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void * </td>
+          <td class="paramname"> <em>udata</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets user data in a context. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be modified </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>udata</em> </td><td>: the user data to set </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge4d49e82f57836891aa57fce24b59800"></a><!-- doxytag: member="grib_api.h::grib_get_context" ref="ge4d49e82f57836891aa57fce24b59800" args="(grib_handle *h)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a>* grib_get_context           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Retreive the context from a handle. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle used to retreive the context from </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>The handle's context, NULL it the handle is invalid </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6f6a5612649241d9ecae7e2a288bc436"></a><!-- doxytag: member="grib_api.h::grib_gribex_mode_off" ref="g6f6a5612649241d9ecae7e2a288bc436" args="(grib_context *c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void grib_gribex_mode_off           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the gribex mode off. 
+<p>
+Grib files won't be always compatible with gribex.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be deleted </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge8e9e3cce24d282a1b34432926b868c0"></a><!-- doxytag: member="grib_api.h::grib_gribex_mode_on" ref="ge8e9e3cce24d282a1b34432926b868c0" args="(grib_context *c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void grib_gribex_mode_on           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the gribex mode on. 
+<p>
+Grib files will be compatible with gribex.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be deleted </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g9a3ce8e25ef3e59387015f906a79901a"></a><!-- doxytag: member="grib_api.h::grib_gts_header_off" ref="g9a3ce8e25ef3e59387015f906a79901a" args="(grib_context *c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void grib_gts_header_off           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the gts header mode off. 
+<p>
+The GTS headers will be deleted.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be deleted </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8d72ab772809fba49a41b32909770dd1"></a><!-- doxytag: member="grib_api.h::grib_gts_header_on" ref="g8d72ab772809fba49a41b32909770dd1" args="(grib_context *c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void grib_gts_header_on           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the gts header mode on. 
+<p>
+The GTS headers will be preserved.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be deleted </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc022270a99922ccc57147670ed2a58d4"></a><!-- doxytag: member="grib_api.h::grib_multi_support_off" ref="gc022270a99922ccc57147670ed2a58d4" args="(grib_context *c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void grib_multi_support_off           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Turn off support for multiple fields in single grib messages. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be modified </td></tr>
+  </table>
+</dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="multi_8f90-example.html#a1">multi.f90</a>, and <a class="el" href="multi__fortran_8_f-example.html#a1">multi_fortran.F</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g3266536e68ebb6d4bbc4a22b29f0e8ea"></a><!-- doxytag: member="grib_api.h::grib_multi_support_on" ref="g3266536e68ebb6d4bbc4a22b29f0e8ea" args="(grib_context *c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void grib_multi_support_on           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Turn on support for multiple fields in single grib messages. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be modified </td></tr>
+  </table>
+</dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="multi_8c-example.html#a1">multi.c</a>, <a class="el" href="multi_8f90-example.html#a0">multi.f90</a>, and <a class="el" href="multi__fortran_8_f-example.html#a0">multi_fortran.F</a>.</dl>
+</div>
+</div><p>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/group__get__set.html b/html/group__get__set.html
new file mode 100644
index 0000000..91fc2c0
--- /dev/null
+++ b/html/group__get__set.html
@@ -0,0 +1,938 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: Accessing header and data values</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>Accessing header and data values</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g3b40c8174568a6e2b7563a0e89d20ddf">grib_get_offset</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, size_t *offset)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the number offset of a key, in a message if several keys of the same name are present, the offset of the last one is returned.  <a href="#g3b40c8174568a6e2b7563a0e89d20ddf"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245">grib_get_size</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, size_t *size)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the number of coded value from a key, if several keys of the same name are present, the total sum is returned.  <a href="#g18b622ed86b24d5e5fcab70c309fc245"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526">grib_get_long</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, long *value)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a long value from a key, if several keys of the same name are present, the last one is returned.  <a href="#g03cfa6762312face1a3cc3ef23e16526"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e">grib_get_double</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, double *value)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a double value from a key, if several keys of the same name are present, the last one is returned.  <a href="#g5d9eeda38bf59ee3fa9ce3f92e65009e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#gec894541bbc8c4e9093803ce21146fa5">grib_get_double_element</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, int i, double *value)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get as double the i-th element of the "key" array.  <a href="#gec894541bbc8c4e9093803ce21146fa5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#gdff349943fef1036fcd1dd7a69738a7a">grib_get_double_elements</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, int *i, long size, double *value)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get as double array the elements of the "key" array whose indexes are listed in the input array i.  <a href="#gdff349943fef1036fcd1dd7a69738a7a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g8aeaf9f930eea1cc0f15e92f18a25053">grib_get_string</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, char *mesg, size_t *length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a string value from a key, if several keys of the same name are present, the last one is returned.  <a href="#g8aeaf9f930eea1cc0f15e92f18a25053"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g1b1ac2da661c638dad7d223419d541c6">grib_get_bytes</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, unsigned char *bytes, size_t *length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get raw bytes values from a key.  <a href="#g1b1ac2da661c638dad7d223419d541c6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g61f1029d7f37d51f33835e218d58378a">grib_get_double_array</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, double *vals, size_t *length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get double array values from a key.  <a href="#g61f1029d7f37d51f33835e218d58378a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga05493cedfee55f0b83d27e356123223">grib_get_long_array</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, long *vals, size_t *length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get long array values from a key.  <a href="#ga05493cedfee55f0b83d27e356123223"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g6315ad72aaaf7577bc7b9f546c506e74">grib_copy_namespace</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *dest, const char *name, <a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *src)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy the keys belonging to a given namespace from a source handle to a destination handle.  <a href="#g6315ad72aaaf7577bc7b9f546c506e74"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2">grib_set_long</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, long val)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a long value from a key.  <a href="#g94c33cfe90c3aa887fb8e14f0bd87fe2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g3f8802a5d3f2e7557e35e6e83acfc9e9">grib_set_double</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, double val)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a double value from a key.  <a href="#g3f8802a5d3f2e7557e35e6e83acfc9e9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g78143cc64571b454b0aba14246e9a53a">grib_set_string</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, const char *mesg, size_t *length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a string value from a key.  <a href="#g78143cc64571b454b0aba14246e9a53a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g4437bd0aa70cc2c2f942ace67023f4a1">grib_set_bytes</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, const unsigned char *bytes, size_t *length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a bytes array from a key.  <a href="#g4437bd0aa70cc2c2f942ace67023f4a1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga24d87e236a2469309d1176ee5925d77">grib_set_double_array</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, const double *vals, size_t length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a double array from a key.  <a href="#ga24d87e236a2469309d1176ee5925d77"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g6c4697dc7c6f450ad30d0a24a3f87016">grib_set_long_array</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, const long *vals, size_t length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a long array from a key.  <a href="#g6c4697dc7c6f450ad30d0a24a3f87016"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g6315ad72aaaf7577bc7b9f546c506e74"></a><!-- doxytag: member="grib_api.h::grib_copy_namespace" ref="g6315ad72aaaf7577bc7b9f546c506e74" args="(grib_handle *dest, const char *name, grib_handle *src)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_copy_namespace           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>dest</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>src</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy the keys belonging to a given namespace from a source handle to a destination handle. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>: destination handle </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>: namespace </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>: source handle </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g1b1ac2da661c638dad7d223419d541c6"></a><!-- doxytag: member="grib_api.h::grib_get_bytes" ref="g1b1ac2da661c638dad7d223419d541c6" args="(grib_handle *h, const char *key, unsigned char *bytes, size_t *length)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_get_bytes           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned char * </td>
+          <td class="paramname"> <em>bytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"> <em>length</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get raw bytes values from a key. 
+<p>
+If several keys of the same name are present, the last one is returned <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#g4437bd0aa70cc2c2f942ace67023f4a1" title="Set a bytes array from a key.">grib_set_bytes</a></dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to get the data from </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>bytes</em> </td><td>: the address of a byte array where the data will be retreived </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>: the address of a size_t that contains allocated length of the byte array on input, and that contains the actual length of the byte array on output </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5d9eeda38bf59ee3fa9ce3f92e65009e"></a><!-- doxytag: member="grib_api.h::grib_get_double" ref="g5d9eeda38bf59ee3fa9ce3f92e65009e" args="(grib_handle *h, const char *key, double *value)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_get_double           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"> <em>value</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a double value from a key, if several keys of the same name are present, the last one is returned. 
+<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#g3f8802a5d3f2e7557e35e6e83acfc9e9" title="Set a double value from a key.">grib_set_double</a></dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to get the data from </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>: the address of a double where the data will be retreived </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="get_8c-example.html#a3">get.c</a>, <a class="el" href="iterator_8c-example.html#a4">iterator.c</a>, and <a class="el" href="print__data_8c-example.html#a4">print_data.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g61f1029d7f37d51f33835e218d58378a"></a><!-- doxytag: member="grib_api.h::grib_get_double_array" ref="g61f1029d7f37d51f33835e218d58378a" args="(grib_handle *h, const char *key, double *vals, size_t *length)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_get_double_array           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"> <em>vals</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"> <em>length</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get double array values from a key. 
+<p>
+If several keys of the same name are present, the last one is returned <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#ga24d87e236a2469309d1176ee5925d77" title="Set a double array from a key.">grib_set_double_array</a></dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to get the data from </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>vals</em> </td><td>: the address of a double array where the data will be retreived </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>: the address of a size_t that contains allocated length of the double array on input, and that contains the actual length of the double array on output </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="get_8c-example.html#a5">get.c</a>, <a class="el" href="precision_8c-example.html#a4">precision.c</a>, and <a class="el" href="print__data_8c-example.html#a3">print_data.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="gec894541bbc8c4e9093803ce21146fa5"></a><!-- doxytag: member="grib_api.h::grib_get_double_element" ref="gec894541bbc8c4e9093803ce21146fa5" args="(grib_handle *h, const char *key, int i, double *value)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_get_double_element           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int </td>
+          <td class="paramname"> <em>i</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"> <em>value</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get as double the i-th element of the "key" array. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to get the data from </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>: zero based index </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>: the address of a double where the data will be retreived </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gdff349943fef1036fcd1dd7a69738a7a"></a><!-- doxytag: member="grib_api.h::grib_get_double_elements" ref="gdff349943fef1036fcd1dd7a69738a7a" args="(grib_handle *h, const char *key, int *i, long size, double *value)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_get_double_elements           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int * </td>
+          <td class="paramname"> <em>i</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">long </td>
+          <td class="paramname"> <em>size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"> <em>value</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get as double array the elements of the "key" array whose indexes are listed in the input array i. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to get the data from </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>: zero based array of indexes </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>: size of the i and value arrays </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>: the address of a double where the data will be retreived </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g03cfa6762312face1a3cc3ef23e16526"></a><!-- doxytag: member="grib_api.h::grib_get_long" ref="g03cfa6762312face1a3cc3ef23e16526" args="(grib_handle *h, const char *key, long *value)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_get_long           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">long * </td>
+          <td class="paramname"> <em>value</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a long value from a key, if several keys of the same name are present, the last one is returned. 
+<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a></dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to get the data from </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>: the address of a long where the data will be retreived </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="get_8c-example.html#a2">get.c</a>, <a class="el" href="multi_8c-example.html#a3">multi.c</a>, <a class="el" href="nearest_8c-example.html#a2">nearest.c</a>, <a class="el" href="precision_8c-example.html#a2">precision.c</a>, and <a class="el" href="set_8c-example.html#a3">set.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="ga05493cedfee55f0b83d27e356123223"></a><!-- doxytag: member="grib_api.h::grib_get_long_array" ref="ga05493cedfee55f0b83d27e356123223" args="(grib_handle *h, const char *key, long *vals, size_t *length)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_get_long_array           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">long * </td>
+          <td class="paramname"> <em>vals</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"> <em>length</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get long array values from a key. 
+<p>
+If several keys of the same name are present, the last one is returned <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#g6c4697dc7c6f450ad30d0a24a3f87016" title="Set a long array from a key.">grib_set_long_array</a></dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to get the data from </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>vals</em> </td><td>: the address of a long array where the data will be retreived </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>: the address of a size_t that contains allocated length of the long array on input, and that contains the actual length of the long array on output </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3b40c8174568a6e2b7563a0e89d20ddf"></a><!-- doxytag: member="grib_api.h::grib_get_offset" ref="g3b40c8174568a6e2b7563a0e89d20ddf" args="(grib_handle *h, const char *key, size_t *offset)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_get_offset           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"> <em>offset</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the number offset of a key, in a message if several keys of the same name are present, the offset of the last one is returned. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to get the offset from </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>offset</em> </td><td>: the address of a size_t where the offset will be set </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g18b622ed86b24d5e5fcab70c309fc245"></a><!-- doxytag: member="grib_api.h::grib_get_size" ref="g18b622ed86b24d5e5fcab70c309fc245" args="(grib_handle *h, const char *key, size_t *size)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_get_size           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"> <em>size</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the number of coded value from a key, if several keys of the same name are present, the total sum is returned. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to get the offset from </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>: the address of a size_t where the size will be set </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="count__messages_8f90-example.html#a1">count_messages.f90</a>, <a class="el" href="get_8c-example.html#a4">get.c</a>, <a class="el" href="get_8f90-example.html#a1">get.f90</a>, <a class="el" href="get__fortran_8_f-example.html#a0">get_fortran.F</a>, <a class="el" href="get__pl_8f90-example.html#a0">get_pl.f90</a>, <a class="el" href="get__pv_8f90-example.html#a0">get_pv.f90</a>, <a class="el" href="precision_8c-example.html#a3">precision.c</a>, <a class="el" href="prec [...]
+</div>
+</div><p>
+<a class="anchor" name="g8aeaf9f930eea1cc0f15e92f18a25053"></a><!-- doxytag: member="grib_api.h::grib_get_string" ref="g8aeaf9f930eea1cc0f15e92f18a25053" args="(grib_handle *h, const char *key, char *mesg, size_t *length)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_get_string           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char * </td>
+          <td class="paramname"> <em>mesg</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"> <em>length</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a string value from a key, if several keys of the same name are present, the last one is returned. 
+<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#g78143cc64571b454b0aba14246e9a53a" title="Set a string value from a key.">grib_set_string</a></dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to get the data from </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>mesg</em> </td><td>: the address of a string where the data will be retreived </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>: the address of a size_t that contains allocated length of the string on input, and that contains the actual length of the string on output </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="keys__iterator_8c-example.html#a7">keys_iterator.c</a>, <a class="el" href="keys__iterator__fortran_8_f-example.html#a3">keys_iterator_fortran.F</a>, <a class="el" href="nearest_8c-example.html#a3">nearest.c</a>, <a class="el" href="set_8c-example.html#a4">set.c</a>, and <a class="el" href="set__fortran_8_f-example.html#a0">set_fortran.F</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g4437bd0aa70cc2c2f942ace67023f4a1"></a><!-- doxytag: member="grib_api.h::grib_set_bytes" ref="g4437bd0aa70cc2c2f942ace67023f4a1" args="(grib_handle *h, const char *key, const unsigned char *bytes, size_t *length)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_set_bytes           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const unsigned char * </td>
+          <td class="paramname"> <em>bytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"> <em>length</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set a bytes array from a key. 
+<p>
+If several keys of the same name are present, the last one is set <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#g1b1ac2da661c638dad7d223419d541c6" title="Get raw bytes values from a key.">grib_get_bytes</a></dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to set the data to </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>bytes</em> </td><td>: the address of a byte array where the data will be read </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>: the address of a size_t that contains the length of the byte array on input, and that contains the actual packed length of the byte array on output </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3f8802a5d3f2e7557e35e6e83acfc9e9"></a><!-- doxytag: member="grib_api.h::grib_set_double" ref="g3f8802a5d3f2e7557e35e6e83acfc9e9" args="(grib_handle *h, const char *key, double val)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_set_double           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double </td>
+          <td class="paramname"> <em>val</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set a double value from a key. 
+<p>
+If several keys of the same name are present, the last one is set <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e" title="Get a double value from a key, if several keys of the same name are present, the...">grib_get_double</a></dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to set the data to </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>val</em> </td><td>: a double where the data will be read </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ga24d87e236a2469309d1176ee5925d77"></a><!-- doxytag: member="grib_api.h::grib_set_double_array" ref="ga24d87e236a2469309d1176ee5925d77" args="(grib_handle *h, const char *key, const double *vals, size_t length)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_set_double_array           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const double * </td>
+          <td class="paramname"> <em>vals</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"> <em>length</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set a double array from a key. 
+<p>
+If several keys of the same name are present, the last one is set <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#g61f1029d7f37d51f33835e218d58378a" title="Get double array values from a key.">grib_get_double_array</a></dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to set the data to </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>vals</em> </td><td>: the address of a double array where the data will be read </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>: a size_t that contains the length of the byte array on input </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g94c33cfe90c3aa887fb8e14f0bd87fe2"></a><!-- doxytag: member="grib_api.h::grib_set_long" ref="g94c33cfe90c3aa887fb8e14f0bd87fe2" args="(grib_handle *h, const char *key, long val)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_set_long           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">long </td>
+          <td class="paramname"> <em>val</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set a long value from a key. 
+<p>
+If several keys of the same name are present, the last one is set <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526" title="Get a long value from a key, if several keys of the same name are present, the last...">grib_get_long</a></dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to set the data to </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>val</em> </td><td>: a long where the data will be read </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="multi__write_8c-example.html#a4">multi_write.c</a>, <a class="el" href="precision_8c-example.html#a5">precision.c</a>, and <a class="el" href="set_8c-example.html#a2">set.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g6c4697dc7c6f450ad30d0a24a3f87016"></a><!-- doxytag: member="grib_api.h::grib_set_long_array" ref="g6c4697dc7c6f450ad30d0a24a3f87016" args="(grib_handle *h, const char *key, const long *vals, size_t length)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_set_long_array           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const long * </td>
+          <td class="paramname"> <em>vals</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"> <em>length</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set a long array from a key. 
+<p>
+If several keys of the same name are present, the last one is set <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#ga05493cedfee55f0b83d27e356123223" title="Get long array values from a key.">grib_get_long_array</a></dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to set the data to </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>vals</em> </td><td>: the address of a long array where the data will be read </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>: a size_t that contains the length of the long array on input </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g78143cc64571b454b0aba14246e9a53a"></a><!-- doxytag: member="grib_api.h::grib_set_string" ref="g78143cc64571b454b0aba14246e9a53a" args="(grib_handle *h, const char *key, const char *mesg, size_t *length)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_set_string           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>mesg</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"> <em>length</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set a string value from a key. 
+<p>
+If several keys of the same name are present, the last one is set <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#g8aeaf9f930eea1cc0f15e92f18a25053" title="Get a string value from a key, if several keys of the same name are present, the...">grib_get_string</a></dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to set the data to </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>mesg</em> </td><td>: the address of a string where the data will be read </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>: the address of a size_t that contains the length of the string on input, and that contains the actual packed length of the string on output </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div><p>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/group__grib__handle.html b/html/group__grib__handle.html
new file mode 100644
index 0000000..7f435cb
--- /dev/null
+++ b/html/group__grib__handle.html
@@ -0,0 +1,625 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: The grib_handle</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>The grib_handle</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <br>
+<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <br>
+<a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#gc7f5cb6af67fd0a42bec5376d5b54682">grib_count_in_file</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, FILE *f, int *n)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Counts the messages contained in a file resource.  <a href="#gc7f5cb6af67fd0a42bec5376d5b54682"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5">grib_handle_new_from_file</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, FILE *f, int *error)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a file resource.  <a href="#g5e24f8499aa7e4178ccc25a5de3145c5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#gcf9ab4896fac2fbbe30a33b4d6028a01">grib_handle_new_from_message</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *data, size_t data_len)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a user message in memory.  <a href="#gcf9ab4896fac2fbbe30a33b4d6028a01"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g5990754a829e1d7a7ae4c5a1a8296bf2">grib_handle_new_from_multi_message</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void **data, size_t *data_len, int *error)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a user message in memory.  <a href="#g5990754a829e1d7a7ae4c5a1a8296bf2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#gba8b4cc36b1a882c8a12716ef011d6be">grib_handle_new_from_message_copy</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, const void *data, size_t data_len)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a user message.  <a href="#gba8b4cc36b1a882c8a12716ef011d6be"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g11d247e5afa10bd52fb895dc4296143f">grib_handle_new_from_template</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, const char *res_name)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a read_only template resource.  <a href="#g11d247e5afa10bd52fb895dc4296143f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#gadefac64c19fb5ff06cf805ad4af06ff">grib_handle_new_from_samples</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, const char *res_name)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a message contained in a samples directory.  <a href="#gadefac64c19fb5ff06cf805ad4af06ff"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#ga63c93533fbbe2c8df482e19ca97c651">grib_handle_clone</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Clone an existing handle using the context of the original handle, The message is copied and reparsed.  <a href="#ga63c93533fbbe2c8df482e19ca97c651"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677">grib_handle_delete</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees a handle, also frees the message if it is not a user message.  <a href="#g0e4b2585f22247c49b930c1579257677"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g9e1911fcd2b32380937e2d60469d2d22">grib_multi_handle_new</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create an empty multi field handle.  <a href="#g9e1911fcd2b32380937e2d60469d2d22"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#gb723d513ef118d0f2d8c440e15387337">grib_multi_handle_append</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, int start_section, <a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> *mh)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Append the sections starting with start_section of the message pointed by h at the end of the multi field handle mh.  <a href="#gb723d513ef118d0f2d8c440e15387337"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g706fb50a5a16b6932adb05d27a8ac626">grib_multi_handle_delete</a> (<a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> *mh)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Delete multi field handle.  <a href="#g706fb50a5a16b6932adb05d27a8ac626"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g48fc85388ca1ee23f6afa12bb0c125ed">grib_multi_handle_write</a> (<a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> *mh, FILE *f)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Write a multi field handle in a file.  <a href="#g48fc85388ca1ee23f6afa12bb0c125ed"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The grib_handle is the structure giving access to parsed grib values by keys. <hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="g309a5ee24f4c730646d3f80ad0ef5f1b"></a><!-- doxytag: member="grib_api.h::grib_handle" ref="g309a5ee24f4c730646d3f80ad0ef5f1b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> <a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Grib handle, structure giving access to parsed grib values by keys <dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="get_8c-example.html#a0">get.c</a>, <a class="el" href="iterator_8c-example.html#a0">iterator.c</a>, <a class="el" href="keys__iterator_8c-example.html#a1">keys_iterator.c</a>, <a class="el" href="multi_8c-example.html#a0">multi.c</a>, <a class="el" href="multi__write_8c-example.html#a0">multi_write.c</a>, <a class="el" href="nearest_8c-example.html#a0">nearest.c</a>, <a class="el" href="precision_8c-example.html#a0">precision.c</a>, <a class="el" href="print__data_8c- [...]
+</div>
+</div><p>
+<a class="anchor" name="g569cc40caa2fa0c4e0e22f9a0ecf25f7"></a><!-- doxytag: member="grib_api.h::grib_multi_handle" ref="g569cc40caa2fa0c4e0e22f9a0ecf25f7" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> <a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Grib multi field handle, structure used to build multi fields messages. <dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="multi__write_8c-example.html#a1">multi_write.c</a>.</dl>
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="gc7f5cb6af67fd0a42bec5376d5b54682"></a><!-- doxytag: member="grib_api.h::grib_count_in_file" ref="gc7f5cb6af67fd0a42bec5376d5b54682" args="(grib_context *c, FILE *f, int *n)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_count_in_file           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">FILE * </td>
+          <td class="paramname"> <em>f</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int * </td>
+          <td class="paramname"> <em>n</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Counts the messages contained in a file resource. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context from wich the handle will be created (NULL for default context) </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>: the file resource </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>: the number of messages in the file </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="count__messages_8f90-example.html#a0">count_messages.f90</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="ga63c93533fbbe2c8df482e19ca97c651"></a><!-- doxytag: member="grib_api.h::grib_handle_clone" ref="ga63c93533fbbe2c8df482e19ca97c651" args="(grib_handle *h)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a>* grib_handle_clone           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Clone an existing handle using the context of the original handle, The message is copied and reparsed. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: The handle to be cloned </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the new handle, NULL if the message is invalid or a problem is encountered </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g0e4b2585f22247c49b930c1579257677"></a><!-- doxytag: member="grib_api.h::grib_handle_delete" ref="g0e4b2585f22247c49b930c1579257677" args="(grib_handle *h)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_handle_delete           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Frees a handle, also frees the message if it is not a user message. 
+<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__grib__handle.html#gcf9ab4896fac2fbbe30a33b4d6028a01" title="Create a handle from a user message in memory.">grib_handle_new_from_message</a> </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: The handle to be deleted </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="get_8c-example.html#a6">get.c</a>, <a class="el" href="iterator_8c-example.html#a8">iterator.c</a>, <a class="el" href="multi_8c-example.html#a4">multi.c</a>, <a class="el" href="multi__write_8c-example.html#a7">multi_write.c</a>, <a class="el" href="nearest_8c-example.html#a6">nearest.c</a>, <a class="el" href="precision_8c-example.html#a7">precision.c</a>, <a class="el" href="print__data_8c-example.html#a5">print_data.c</a>, and <a class="el" href="set_8c-example.ht [...]
+</div>
+</div><p>
+<a class="anchor" name="g5e24f8499aa7e4178ccc25a5de3145c5"></a><!-- doxytag: member="grib_api.h::grib_handle_new_from_file" ref="g5e24f8499aa7e4178ccc25a5de3145c5" args="(grib_context *c, FILE *f, int *error)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a>* grib_handle_new_from_file           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">FILE * </td>
+          <td class="paramname"> <em>f</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int * </td>
+          <td class="paramname"> <em>error</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a handle from a file resource. 
+<p>
+The file is read until a message is found. The message is then copied. Remember always to delete the handle when it is not needed any more to avoid memory leaks.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context from wich the handle will be created (NULL for default context) </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>: the file resource </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>error</em> </td><td>: error code set if the returned handle is NULL and the end of file is not reached </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the new handle, NULL if the resource is invalid or a problem is encountered </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="get_8c-example.html#a1">get.c</a>, <a class="el" href="iterator_8c-example.html#a2">iterator.c</a>, <a class="el" href="keys__iterator_8c-example.html#a3">keys_iterator.c</a>, <a class="el" href="multi_8c-example.html#a2">multi.c</a>, <a class="el" href="multi__write_8c-example.html#a2">multi_write.c</a>, <a class="el" href="precision_8c-example.html#a1">precision.c</a>, <a class="el" href="print__data_8c-example.html#a1">print_data.c</a>, and <a class="el" href="set_ [...]
+</div>
+</div><p>
+<a class="anchor" name="gcf9ab4896fac2fbbe30a33b4d6028a01"></a><!-- doxytag: member="grib_api.h::grib_handle_new_from_message" ref="gcf9ab4896fac2fbbe30a33b4d6028a01" args="(grib_context *c, void *data, size_t data_len)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a>* grib_handle_new_from_message           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void * </td>
+          <td class="paramname"> <em>data</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"> <em>data_len</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a handle from a user message in memory. 
+<p>
+The message will not be freed at the end. The message will be copied as soon as a modification is needed.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context from which the handle will be created (NULL for default context) </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>: the actual message </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>data_len</em> </td><td>: the length of the message in number of bytes </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the new handle, NULL if the message is invalid or a problem is encountered </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gba8b4cc36b1a882c8a12716ef011d6be"></a><!-- doxytag: member="grib_api.h::grib_handle_new_from_message_copy" ref="gba8b4cc36b1a882c8a12716ef011d6be" args="(grib_context *c, const void *data, size_t data_len)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a>* grib_handle_new_from_message_copy           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void * </td>
+          <td class="paramname"> <em>data</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"> <em>data_len</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a handle from a user message. 
+<p>
+The message is copied and will be freed with the handle<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context from wich the handle will be created (NULL for default context) </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>: the actual message </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>data_len</em> </td><td>: the length of the message in number of bytes </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the new handle, NULL if the message is invalid or a problem is encountered </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5990754a829e1d7a7ae4c5a1a8296bf2"></a><!-- doxytag: member="grib_api.h::grib_handle_new_from_multi_message" ref="g5990754a829e1d7a7ae4c5a1a8296bf2" args="(grib_context *c, void **data, size_t *data_len, int *error)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a>* grib_handle_new_from_multi_message           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void ** </td>
+          <td class="paramname"> <em>data</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"> <em>data_len</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int * </td>
+          <td class="paramname"> <em>error</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a handle from a user message in memory. 
+<p>
+The message will not be freed at the end. The message will be copied as soon as a modification is needed. This function works also with multi field messages.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context from which the handle will be created (NULL for default context) </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>: the actual message </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>data_len</em> </td><td>: the length of the message in number of bytes </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>error</em> </td><td>: error code </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the new handle, NULL if the message is invalid or a problem is encountered </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gadefac64c19fb5ff06cf805ad4af06ff"></a><!-- doxytag: member="grib_api.h::grib_handle_new_from_samples" ref="gadefac64c19fb5ff06cf805ad4af06ff" args="(grib_context *c, const char *res_name)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a>* grib_handle_new_from_samples           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>res_name</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a handle from a message contained in a samples directory. 
+<p>
+The message is copied at the creation of the handle<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context from wich the handle will be created (NULL for default context) </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>res_name</em> </td><td>: the resource name </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the new handle, NULL if the resource is invalid or a problem is encountered </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g11d247e5afa10bd52fb895dc4296143f"></a><!-- doxytag: member="grib_api.h::grib_handle_new_from_template" ref="g11d247e5afa10bd52fb895dc4296143f" args="(grib_context *c, const char *res_name)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a>* grib_handle_new_from_template           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>res_name</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a handle from a read_only template resource. 
+<p>
+The message is copied at the creation of the handle<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context from wich the handle will be created (NULL for default context) </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>res_name</em> </td><td>: the resource name </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the new handle, NULL if the resource is invalid or a problem is encountered </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb723d513ef118d0f2d8c440e15387337"></a><!-- doxytag: member="grib_api.h::grib_multi_handle_append" ref="gb723d513ef118d0f2d8c440e15387337" args="(grib_handle *h, int start_section, grib_multi_handle *mh)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_multi_handle_append           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int </td>
+          <td class="paramname"> <em>start_section</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> * </td>
+          <td class="paramname"> <em>mh</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Append the sections starting with start_section of the message pointed by h at the end of the multi field handle mh. 
+<p>
+Remember always to delete the multi handle when it is not needed any more to avoid memory leaks.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: The handle from which the sections are copied. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>start_section</em> </td><td>: section number. Starting from this section all the sections to then end of the message will be copied. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>mh</em> </td><td>: The multi field handle on which the sections are appended. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="multi__write_8c-example.html#a5">multi_write.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g706fb50a5a16b6932adb05d27a8ac626"></a><!-- doxytag: member="grib_api.h::grib_multi_handle_delete" ref="g706fb50a5a16b6932adb05d27a8ac626" args="(grib_multi_handle *mh)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_multi_handle_delete           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> * </td>
+          <td class="paramname"> <em>mh</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Delete multi field handle. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>mh</em> </td><td>: The multi field handle to be deleted. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="multi__write_8c-example.html#a8">multi_write.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g9e1911fcd2b32380937e2d60469d2d22"></a><!-- doxytag: member="grib_api.h::grib_multi_handle_new" ref="g9e1911fcd2b32380937e2d60469d2d22" args="(grib_context *c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a>* grib_multi_handle_new           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
+          <td class="paramname"> <em>c</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create an empty multi field handle. 
+<p>
+Remember always to delete the multi handle when it is not needed any more to avoid memory leaks.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context from wich the handle will be created (NULL for default context) </td></tr>
+  </table>
+</dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="multi__write_8c-example.html#a3">multi_write.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g48fc85388ca1ee23f6afa12bb0c125ed"></a><!-- doxytag: member="grib_api.h::grib_multi_handle_write" ref="g48fc85388ca1ee23f6afa12bb0c125ed" args="(grib_multi_handle *mh, FILE *f)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_multi_handle_write           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> * </td>
+          <td class="paramname"> <em>mh</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">FILE * </td>
+          <td class="paramname"> <em>f</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Write a multi field handle in a file. 
+<p>
+Remember always to delete the multi handle when it is not needed any more to avoid memory leaks.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>mh</em> </td><td>: The multi field handle to be written. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>: File on which the file handle is written. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="multi__write_8c-example.html#a6">multi_write.c</a>.</dl>
+</div>
+</div><p>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/group__handling__coded__messages.html b/html/group__handling__coded__messages.html
new file mode 100644
index 0000000..fb96071
--- /dev/null
+++ b/html/group__handling__coded__messages.html
@@ -0,0 +1,124 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: Handling coded messages</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>Handling coded messages</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__handling__coded__messages.html#g9d654bd4fc5f422c161edd0a140ea185">grib_get_message</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const void **message, size_t *message_length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">getting the message attached to a handle  <a href="#g9d654bd4fc5f422c161edd0a140ea185"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__handling__coded__messages.html#g9248c021d985da70cfeb075e469db874">grib_get_message_copy</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, void *message, size_t *message_length)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">getting a copy of the message attached to a handle  <a href="#g9248c021d985da70cfeb075e469db874"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g9d654bd4fc5f422c161edd0a140ea185"></a><!-- doxytag: member="grib_api.h::grib_get_message" ref="g9d654bd4fc5f422c161edd0a140ea185" args="(grib_handle *h, const void **message, size_t *message_length)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_get_message           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void ** </td>
+          <td class="paramname"> <em>message</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"> <em>message_length</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+getting the message attached to a handle 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the grib handle to wich the buffer should be gathered </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>message</em> </td><td>: the pointer to be set to the handle's data </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>message_length</em> </td><td>: at exist, the message size in number of bytes </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="precision_8c-example.html#a6">precision.c</a>, and <a class="el" href="set_8c-example.html#a5">set.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g9248c021d985da70cfeb075e469db874"></a><!-- doxytag: member="grib_api.h::grib_get_message_copy" ref="g9248c021d985da70cfeb075e469db874" args="(grib_handle *h, void *message, size_t *message_length)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_get_message_copy           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void * </td>
+          <td class="paramname"> <em>message</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"> <em>message_length</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+getting a copy of the message attached to a handle 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the grib handle to wich the buffer should be returned </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>message</em> </td><td>: the pointer to the data buffer to be filled </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>message_length</em> </td><td>: at entry, the size in number of bytes of the allocated empty message. At exist, the actual message length in number of bytes </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div><p>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/group__iterators.html b/html/group__iterators.html
new file mode 100644
index 0000000..aaf0863
--- /dev/null
+++ b/html/group__iterators.html
@@ -0,0 +1,559 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: Iterating on latitude/longitude/values</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>Iterating on latitude/longitude/values</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#gefb1f87110bdce732edc9154cf0e7d58">grib_iterator_new</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, unsigned long flags, int *error)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new iterator from a handle, using current geometry and values.  <a href="#gefb1f87110bdce732edc9154cf0e7d58"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g4f73056dbfdda3de0060559b9b39ea34">grib_iterator_next</a> (<a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> *i, double *lat, double *lon, double *value)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the next value from an iterator.  <a href="#g4f73056dbfdda3de0060559b9b39ea34"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ge33e4a6d3a2222f78ffc43eb7239ce3f">grib_iterator_previous</a> (<a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> *i, double *lat, double *lon, double *value)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the previous value from an iterator.  <a href="#ge33e4a6d3a2222f78ffc43eb7239ce3f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g7beddf03a8335d5058a0760929af9b65">grib_iterator_has_next</a> (<a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> *i)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Test procedure for values in an iterator.  <a href="#g7beddf03a8335d5058a0760929af9b65"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#gb8f3830e919c3c11f11530c08e9956c8">grib_iterator_reset</a> (<a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> *i)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Test procedure for values in an iterator.  <a href="#gb8f3830e919c3c11f11530c08e9956c8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#gd46ed73a16af56e6f3b46fe86ee8a759">grib_iterator_delete</a> (<a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> *i)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees an iterator from memory.  <a href="#gd46ed73a16af56e6f3b46fe86ee8a759"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g4bd616cf0d0c4f5f147f4a207ddc7687">grib_nearest_new</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, int *error)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new nearest from a handle, using current geometry .  <a href="#g4bd616cf0d0c4f5f147f4a207ddc7687"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g15043a2482608fb93a0385f3c3e86926">grib_nearest_find</a> (<a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a> *nearest, <a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, double inlat, double inlon, unsigned long flags, double *outlats, double *ou [...]
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find the 4 nearest points of a latitude longitude point.  <a href="#g15043a2482608fb93a0385f3c3e86926"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g2b3c0069013e1ad7b3e34f30b4659c15">grib_nearest_delete</a> (<a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a> *nearest)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees an nearest from memory.  <a href="#g2b3c0069013e1ad7b3e34f30b4659c15"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g4923d7a2e414c743410f1de71bb9648c">grib_nearest_find_multiple</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, int is_lsm, double *inlats, double *inlons, long npoints, double *outlats, double *outlons, double *values, double *distances, int *indexes)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find the nearest point of a set of points whose latitudes and longitudes are given in the inlats, inlons arrays respectively.  <a href="#g4923d7a2e414c743410f1de71bb9648c"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="gd46ed73a16af56e6f3b46fe86ee8a759"></a><!-- doxytag: member="grib_api.h::grib_iterator_delete" ref="gd46ed73a16af56e6f3b46fe86ee8a759" args="(grib_iterator *i)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_iterator_delete           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> * </td>
+          <td class="paramname"> <em>i</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Frees an iterator from memory. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>: the iterator </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="iterator_8c-example.html#a7">iterator.c</a>, and <a class="el" href="iterator__fortran_8_f-example.html#a2">iterator_fortran.F</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g7beddf03a8335d5058a0760929af9b65"></a><!-- doxytag: member="grib_api.h::grib_iterator_has_next" ref="g7beddf03a8335d5058a0760929af9b65" args="(grib_iterator *i)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_iterator_has_next           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> * </td>
+          <td class="paramname"> <em>i</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Test procedure for values in an iterator. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>: the iterator </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>boolean, 1 if the iterator still nave next values, 0 otherwise </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gefb1f87110bdce732edc9154cf0e7d58"></a><!-- doxytag: member="grib_api.h::grib_iterator_new" ref="gefb1f87110bdce732edc9154cf0e7d58" args="(grib_handle *h, unsigned long flags, int *error)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a>* grib_iterator_new           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned long </td>
+          <td class="paramname"> <em>flags</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int * </td>
+          <td class="paramname"> <em>error</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a new iterator from a handle, using current geometry and values. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle from which the iterator will be created </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>flags</em> </td><td>: flags for future use. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>error</em> </td><td>: error code </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the new iterator, NULL if no iterator can be created </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="iterator_8c-example.html#a5">iterator.c</a>, and <a class="el" href="iterator__fortran_8_f-example.html#a0">iterator_fortran.F</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g4f73056dbfdda3de0060559b9b39ea34"></a><!-- doxytag: member="grib_api.h::grib_iterator_next" ref="g4f73056dbfdda3de0060559b9b39ea34" args="(grib_iterator *i, double *lat, double *lon, double *value)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_iterator_next           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> * </td>
+          <td class="paramname"> <em>i</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"> <em>lat</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"> <em>lon</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"> <em>value</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the next value from an iterator. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>: the iterator </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>lat</em> </td><td>: on output latitude in degree </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>lon</em> </td><td>: on output longitude in degree </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>: on output value of the point </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>positive value if successful, 0 if no more data are available </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="iterator_8c-example.html#a6">iterator.c</a>, and <a class="el" href="iterator__fortran_8_f-example.html#a1">iterator_fortran.F</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="ge33e4a6d3a2222f78ffc43eb7239ce3f"></a><!-- doxytag: member="grib_api.h::grib_iterator_previous" ref="ge33e4a6d3a2222f78ffc43eb7239ce3f" args="(grib_iterator *i, double *lat, double *lon, double *value)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_iterator_previous           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> * </td>
+          <td class="paramname"> <em>i</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"> <em>lat</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"> <em>lon</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"> <em>value</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the previous value from an iterator. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>: the iterator </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>lat</em> </td><td>: on output latitude in degree </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>lon</em> </td><td>: on output longitude in degree </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>: on output value of the point* </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>positive value if successful, 0 if no more data are available </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb8f3830e919c3c11f11530c08e9956c8"></a><!-- doxytag: member="grib_api.h::grib_iterator_reset" ref="gb8f3830e919c3c11f11530c08e9956c8" args="(grib_iterator *i)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_iterator_reset           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> * </td>
+          <td class="paramname"> <em>i</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Test procedure for values in an iterator. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>: the iterator </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2b3c0069013e1ad7b3e34f30b4659c15"></a><!-- doxytag: member="grib_api.h::grib_nearest_delete" ref="g2b3c0069013e1ad7b3e34f30b4659c15" args="(grib_nearest *nearest)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_nearest_delete           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a> * </td>
+          <td class="paramname"> <em>nearest</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Frees an nearest from memory. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>nearest</em> </td><td>: the nearest </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="nearest_8c-example.html#a7">nearest.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g15043a2482608fb93a0385f3c3e86926"></a><!-- doxytag: member="grib_api.h::grib_nearest_find" ref="g15043a2482608fb93a0385f3c3e86926" args="(grib_nearest *nearest, grib_handle *h, double inlat, double inlon, unsigned long flags, double *outlats, double *outlons, double *values, double *distances, int *indexes, size_t *len)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_nearest_find           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a> * </td>
+          <td class="paramname"> <em>nearest</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double </td>
+          <td class="paramname"> <em>inlat</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double </td>
+          <td class="paramname"> <em>inlon</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned long </td>
+          <td class="paramname"> <em>flags</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"> <em>outlats</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"> <em>outlons</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"> <em>values</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"> <em>distances</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int * </td>
+          <td class="paramname"> <em>indexes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"> <em>len</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Find the 4 nearest points of a latitude longitude point. 
+<p>
+The flags are provided to speed up the process of searching. If you are sure that the point you are asking for is not changing from a call to another you can use GRIB_NEAREST_SAME_POINT. The same is valid for the grid. Flags can be used together duing an or.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>nearest</em> </td><td>: nearest structure </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: handle from which geography and data values are taken </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>inlat</em> </td><td>: latitude of the point to search for </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>inlon</em> </td><td>: longitude of the point to search for </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>flags</em> </td><td>: GRIB_NEAREST_SAME_POINT, GRIB_NEAREST_SAME_GRID </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>outlats</em> </td><td>: returned array of latitudes of the nearest points </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>outlons</em> </td><td>: returned array of longitudes of the nearest points </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>values</em> </td><td>: returned array of data values of the nearest points </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>distances</em> </td><td>: returned array of distances from the nearest points </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>indexes</em> </td><td>: returned array of indexes of the nearest points </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>: size of the arrays </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="nearest_8c-example.html#a5">nearest.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g4923d7a2e414c743410f1de71bb9648c"></a><!-- doxytag: member="grib_api.h::grib_nearest_find_multiple" ref="g4923d7a2e414c743410f1de71bb9648c" args="(grib_handle *h, int is_lsm, double *inlats, double *inlons, long npoints, double *outlats, double *outlons, double *values, double *distances, int *indexes)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_nearest_find_multiple           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int </td>
+          <td class="paramname"> <em>is_lsm</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"> <em>inlats</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"> <em>inlons</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">long </td>
+          <td class="paramname"> <em>npoints</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"> <em>outlats</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"> <em>outlons</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"> <em>values</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"> <em>distances</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int * </td>
+          <td class="paramname"> <em>indexes</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Find the nearest point of a set of points whose latitudes and longitudes are given in the inlats, inlons arrays respectively. 
+<p>
+If the flag is_lsm is 1 the nearest land point is returned and the grib passed as handle (h) is considered a land sea mask. The land nearest point is the nearest point with land sea mask value>=0.5. If no nearest land points are found the nearest value is returned. If the flag is_lsm is 0 the nearest point is returned. values, distances, indexes (in the "values" array) for the nearest points (ilons,ilats) are returned.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: handle from which geography and data values are taken </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>is_lsm</em> </td><td>: lsm flag (1-> nearest land, 0-> nearest) </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>inlats</em> </td><td>: latitudes of the points to search for </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>inlons</em> </td><td>: longitudes of the points to search for </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>npoints</em> </td><td>: number of points (size of the inlats,inlons,outlats,outlons,values,distances,indexes arrays) </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>outlats</em> </td><td>: returned array of latitudes of the nearest points </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>outlons</em> </td><td>: returned array of longitudes of the nearest points </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>values</em> </td><td>: returned array of data values of the nearest points </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>distances</em> </td><td>: returned array of distances from the nearest points </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>indexes</em> </td><td>: returned array of indexes of the nearest points </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4bd616cf0d0c4f5f147f4a207ddc7687"></a><!-- doxytag: member="grib_api.h::grib_nearest_new" ref="g4bd616cf0d0c4f5f147f4a207ddc7687" args="(grib_handle *h, int *error)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a>* grib_nearest_new           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int * </td>
+          <td class="paramname"> <em>error</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a new nearest from a handle, using current geometry . 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle from which the iterator will be created </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>error</em> </td><td>: error code </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the new nearest, NULL if no nearest can be created </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="nearest_8c-example.html#a4">nearest.c</a>.</dl>
+</div>
+</div><p>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/group__keys__iterator.html b/html/group__keys__iterator.html
new file mode 100644
index 0000000..2faa8b9
--- /dev/null
+++ b/html/group__keys__iterator.html
@@ -0,0 +1,364 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: Iterating on keys names</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>Iterating on keys names</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g0e4d2d943ddd61d0b877060e6fbea405">GRIB_KEYS_ITERATOR_ALL_KEYS</a>   0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g22b6978a432db7211a270438077f7062">GRIB_KEYS_ITERATOR_SKIP_READ_ONLY</a>   (1<<0)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ge665875b6303dab2265bbb088c723860">GRIB_KEYS_ITERATOR_SKIP_OPTIONAL</a>   (1<<1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g37ad0fca3eb784fed7e2b4a44e1ca2b6">GRIB_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC</a>   (1<<2)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g52ad3f33022d82a46cd80cb99a1307ff">GRIB_KEYS_ITERATOR_SKIP_CODED</a>   (1<<3)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g26fe182483e385904cc68695b1c42131">GRIB_KEYS_ITERATOR_SKIP_COMPUTED</a>   (1<<4)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ge64e8f24f3094903d6a686a213f92e4e">GRIB_KEYS_ITERATOR_SKIP_DUPLICATES</a>   (1<<5)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#gcbef496e484e5e18c799f74dd5cdfff7">GRIB_KEYS_ITERATOR_SKIP_FUNCTION</a>   (1<<6)</td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <br>
+<a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, unsigned long filter_flags, char *name_space)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g28f6ac808ecdc324fa3a47bc7b3f6dec">grib_keys_iterator_next</a> (<a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> *kiter)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#gec3348471f770965c07964e286249e12">grib_keys_iterator_get_name</a> (<a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> *kiter)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g79716d2b701c3dbb3d3a8e633f35a40a">grib_keys_iterator_delete</a> (<a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> *kiter)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g15ceb24c7b8ac673d948ccdaf1ba5fd6">grib_keys_iterator_rewind</a> (<a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> *kiter)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The keys iterator is designed to get the key names defined in a message. Key names on which the iteration is carried out can be filtered through their attributes or by the namespace they belong to. <hr><h2>Define Documentation</h2>
+<a class="anchor" name="g0e4d2d943ddd61d0b877060e6fbea405"></a><!-- doxytag: member="grib_api.h::GRIB_KEYS_ITERATOR_ALL_KEYS" ref="g0e4d2d943ddd61d0b877060e6fbea405" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_KEYS_ITERATOR_ALL_KEYS   0          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Iteration is carried out on all the keys available in the message<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a> </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="keys__iterator_8c-example.html#a0">keys_iterator.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g52ad3f33022d82a46cd80cb99a1307ff"></a><!-- doxytag: member="grib_api.h::GRIB_KEYS_ITERATOR_SKIP_CODED" ref="g52ad3f33022d82a46cd80cb99a1307ff" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_KEYS_ITERATOR_SKIP_CODED   (1<<3)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+coded keys are skipped by keys iterator.<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g26fe182483e385904cc68695b1c42131"></a><!-- doxytag: member="grib_api.h::GRIB_KEYS_ITERATOR_SKIP_COMPUTED" ref="g26fe182483e385904cc68695b1c42131" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_KEYS_ITERATOR_SKIP_COMPUTED   (1<<4)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+computed keys are skipped by keys iterator.<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge64e8f24f3094903d6a686a213f92e4e"></a><!-- doxytag: member="grib_api.h::GRIB_KEYS_ITERATOR_SKIP_DUPLICATES" ref="ge64e8f24f3094903d6a686a213f92e4e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_KEYS_ITERATOR_SKIP_DUPLICATES   (1<<5)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+duplicates of a key are skipped by keys iterator.<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g37ad0fca3eb784fed7e2b4a44e1ca2b6"></a><!-- doxytag: member="grib_api.h::GRIB_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC" ref="g37ad0fca3eb784fed7e2b4a44e1ca2b6" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC   (1<<2)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+edition specific keys are skipped by keys iterator.<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gcbef496e484e5e18c799f74dd5cdfff7"></a><!-- doxytag: member="grib_api.h::GRIB_KEYS_ITERATOR_SKIP_FUNCTION" ref="gcbef496e484e5e18c799f74dd5cdfff7" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_KEYS_ITERATOR_SKIP_FUNCTION   (1<<6)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+function keys are skipped by keys iterator.<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge665875b6303dab2265bbb088c723860"></a><!-- doxytag: member="grib_api.h::GRIB_KEYS_ITERATOR_SKIP_OPTIONAL" ref="ge665875b6303dab2265bbb088c723860" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_KEYS_ITERATOR_SKIP_OPTIONAL   (1<<1)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+optional keys are skipped by keys iterator.<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g22b6978a432db7211a270438077f7062"></a><!-- doxytag: member="grib_api.h::GRIB_KEYS_ITERATOR_SKIP_READ_ONLY" ref="g22b6978a432db7211a270438077f7062" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GRIB_KEYS_ITERATOR_SKIP_READ_ONLY   (1<<0)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+read only keys are skipped by keys iterator.<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a> </dd></dl>
+
+</div>
+</div><p>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="gfa22412541f9d2df9680a82371036dbb"></a><!-- doxytag: member="grib_api.h::grib_keys_iterator" ref="gfa22412541f9d2df9680a82371036dbb" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> <a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Grib keys iterator. Iterator over keys. <dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="keys__iterator_8c-example.html#a2">keys_iterator.c</a>, and <a class="el" href="keys__iterator__fortran_8_f-example.html#a0">keys_iterator_fortran.F</a>.</dl>
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g79716d2b701c3dbb3d3a8e633f35a40a"></a><!-- doxytag: member="grib_api.h::grib_keys_iterator_delete" ref="g79716d2b701c3dbb3d3a8e633f35a40a" args="(grib_keys_iterator *kiter)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_keys_iterator_delete           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> * </td>
+          <td class="paramname"> <em>kiter</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Delete the iterator. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>kiter</em> </td><td>: valid grib_keys_iterator </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="keys__iterator_8c-example.html#a8">keys_iterator.c</a>, <a class="el" href="keys__iterator_8f90-example.html#a4">keys_iterator.f90</a>, and <a class="el" href="keys__iterator__fortran_8_f-example.html#a4">keys_iterator_fortran.F</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="gec3348471f770965c07964e286249e12"></a><!-- doxytag: member="grib_api.h::grib_keys_iterator_get_name" ref="gec3348471f770965c07964e286249e12" args="(grib_keys_iterator *kiter)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* grib_keys_iterator_get_name           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> * </td>
+          <td class="paramname"> <em>kiter</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+get the key name from the iterator <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>kiter</em> </td><td>: valid grib_keys_iterator </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>key name </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="keys__iterator_8c-example.html#a6">keys_iterator.c</a>, <a class="el" href="keys__iterator_8f90-example.html#a3">keys_iterator.f90</a>, and <a class="el" href="keys__iterator__fortran_8_f-example.html#a2">keys_iterator_fortran.F</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g66a11d157fc81e1c27fc2acad0a5b1f4"></a><!-- doxytag: member="grib_api.h::grib_keys_iterator_new" ref="g66a11d157fc81e1c27fc2acad0a5b1f4" args="(grib_handle *h, unsigned long filter_flags, char *name_space)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a>* grib_keys_iterator_new           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
+          <td class="paramname"> <em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned long </td>
+          <td class="paramname"> <em>filter_flags</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char * </td>
+          <td class="paramname"> <em>name_space</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a new iterator from a valid and initialized handle. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle whose keys you want to iterate </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>filter_flags</em> </td><td>: flags to filter out some of the keys through their attributes </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>name_space</em> </td><td>: if not null the iteration is carried out only on keys belongin to the namespace passed. (NULL for all the keys) </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>keys iterator ready to iterate through keys according to filter_flags and namespace </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="keys__iterator_8c-example.html#a4">keys_iterator.c</a>, and <a class="el" href="keys__iterator_8f90-example.html#a1">keys_iterator.f90</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g28f6ac808ecdc324fa3a47bc7b3f6dec"></a><!-- doxytag: member="grib_api.h::grib_keys_iterator_next" ref="g28f6ac808ecdc324fa3a47bc7b3f6dec" args="(grib_keys_iterator *kiter)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_keys_iterator_next           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> * </td>
+          <td class="paramname"> <em>kiter</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Step to the next iterator. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>kiter</em> </td><td>: valid grib_keys_iterator </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 if next iterator exitsts, 0 if no more elements to iterate on </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="keys__iterator_8c-example.html#a5">keys_iterator.c</a>, <a class="el" href="keys__iterator_8f90-example.html#a2">keys_iterator.f90</a>, and <a class="el" href="keys__iterator__fortran_8_f-example.html#a1">keys_iterator_fortran.F</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g15ceb24c7b8ac673d948ccdaf1ba5fd6"></a><!-- doxytag: member="grib_api.h::grib_keys_iterator_rewind" ref="g15ceb24c7b8ac673d948ccdaf1ba5fd6" args="(grib_keys_iterator *kiter)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int grib_keys_iterator_rewind           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> * </td>
+          <td class="paramname"> <em>kiter</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Rewind the iterator. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>kiter</em> </td><td>: valid grib_keys_iterator </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div><p>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/index.html b/html/index.html
new file mode 100644
index 0000000..2c59a1a
--- /dev/null
+++ b/html/index.html
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: GRIB API</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li class="current"><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>GRIB API</h1>
+<p>
+<h2><a class="anchor" name="new">
+New</a></h2>
+<ul>
+<li><a href="/publications/manuals/grib_api/conversion.html">GRIB edition 1 to 2 conversion</a></li><li><a href="/services/archive/d/gribapi/param/">Parameters in GRIB API</a></li><li><b> GRIB API keys </b><ul>
+<li><a href="/services/archive/d/gribapi/fm92/grib1/">GRIB edition 1 </a></li><li><a href="/services/archive/d/gribapi/fm92/grib2/">GRIB edition 2 </a></li><li><a href="/services/archive/d/gribapi/keys/">Edition independent</a></li></ul>
+</li></ul>
+<h2><a class="anchor" name="overview">
+Overview</a></h2>
+The grib_api is the application program interface developed at ECMWF to provide an easy and realiable way for encoding and decoding WMO FM-92 GRIB <a href="http://www.wmo.ch/pages/prog/www/WMOCodes/Manual/WMO306_vol-I-2-PartB-GRIB1.pdf">edition 1</a> and <a href="http://www.wmo.ch/pages/prog/www/DPS/grib-2.html">edition 2</a> messages.<p>
+With the grib_api library, that is written entirely in C, some command line <a class="el" href="tools.html">tools</a> are provided to give a quick way to manipulate grib data. Moreover a Fortran interface 90 is available giving access to the main features of the C library.<p>
+The library is designed to access and modify messages in both editions with the same <a class="el" href="group__get__set.html">function calls</a> using a set of <a class="el" href="keys.html">Grib API keys</a> to access the coded information ( examples: <a class="el" href="get_8f90-example.html">get.f90</a> <a class="el" href="set_8f90-example.html">set.f90</a>, <a class="el" href="get_8c-example.html">get.c</a>, <a class="el" href="set_8c-example.html">set.c</a>, <a class="el" href="gri [...]
+The <a class="el" href="keys.html">keys</a> available for a message are different depending not only on the edition but also and mainly on the type of each message and the information it contains. A list of all the available keys in a message can be obtained dynamically using the library as shown in <a class="el" href="keys__iterator_8c-example.html">keys_iterator.c</a> or using the <a class="el" href="tools.html">Grib tools</a> as shown in <a class="el" href="grib_dump.html">grib_dump</ [...]
+GRIB API will replace the GRIBEX function and a <a href="/publications/manuals/grib_api/gribexkeys/callGribex.html">table of conversion</a> between the numeric encoding of GRIBEX and the alphanumeric keys of GRIB API is provided to help the migration.<p>
+To learn how to use the grib_api we recommend the user works through the <a class="el" href="grib_examples.html">Grib API examples</a>.<p>
+Reference manuals are also provided for the C library (organized in <a class="el" href="modules.html">C interface</a>) and for the Fortran 90 interface.<p>
+<a class="el" href="installation.html">Installation</a> instructions are also provided.<h2><a class="anchor" name="ecwf_users">
+Compiling and linking on ECMWF platforms</a></h2>
+The grib API is installed on all systems at ECMWF with both its components: the library and the tools.<br>
+ The latest version of the tools is always available in the system PATH so that users can begin using the tools immediately by typing directly the tool name (<a class="el" href="tools.html">see tools reference</a>).<br>
+ The latest version of the library is also installed on any platform and it is available for linking through the following two environment variables: $GRIB_API_INCLUDE $GRIB_API_LIB.<br>
+<br>
+ Here is a short summary on how to compile and link on ECMWF systems:<br>
+<p>
+<ul>
+<li>ecgate, hpce, hpcf <div class="fragment"><pre class="fragment">
+> xlc -o foo foo.c $GRIB_API_INCLUDE $GRIB_API_LIB -lm
+</pre></div> <br>
+ <div class="fragment"><pre class="fragment">
+> xlf90 -o foo foo.f90 $GRIB_API_INCLUDE $GRIB_API_LIB
+</pre></div><br>
+</li><li>linux cluster (C programs) <div class="fragment"><pre class="fragment">
+> gcc -m32 -o foo foo.c $GRIB_API_INCLUDE $GRIB_API_LIB 
+</pre></div> <br>
+</li><li>workstation (C programs) <div class="fragment"><pre class="fragment">
+> gcc -o foo foo.c $GRIB_API_INCLUDE $GRIB_API_LIB 
+</pre></div> <br>
+</li><li>linux cluster,workstation (Fortran programs) <div class="fragment"><pre class="fragment">
+> use pgf90
+> pgf90 -o foo foo.f90 $GRIB_API_INCLUDE $GRIB_API_LIB
+</pre></div><br>
+ </li></ul>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/installation.html b/html/installation.html
new file mode 100644
index 0000000..f047092
--- /dev/null
+++ b/html/installation.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: grib_api installation</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1><a class="anchor" name="installation">grib_api installation</a></h1>The grib_api installation is based on the standard configure utility. It is tested on several platforms and with several compilers. However for some platforms modifications to the installation engine may be required. If you encounter any problem during the installation procedure please send an e-mail with your problem to <a href="mailto:Software.Support at ecmwf.int">Software.Support at ecmwf.int</a>.<p>
+The only required package for a standard installation is <a href="http://www.ece.uvic.ca/~mdadams/jasper/">jasper</a> which enables the jpeg2000 packing/unpacking algorithm. It is possible to build grib_api without jasper, by using the --disable-jpeg configure option, but to install a fully functional library, its download is recommended.<h2><a class="anchor" name="standard_installation">
+Standard installation</a></h2>
+<ol type=1>
+<li>Download grib_api from <a href="http://www.ecmwf.int/products/data/software/download/grib_api.html">here</a>.</li><li>Unpack distribution: <div class="fragment"><pre class="fragment">  > gunzip grib_api-X.X.X.tar.gz
+  > tar xf grib_api-X.X.X.tar
+</pre></div></li><li>Create the directory where to install grib_api say <em>grib_api_dir</em> <div class="fragment"><pre class="fragment">  > mkdir grib_api_dir
+</pre></div></li><li>Run the configure in the grib_api-X.X.X <div class="fragment"><pre class="fragment">  > cd grib_api-X.X.X
+  > ./configure --prefix=grib_api_dir 
+</pre></div></li><li>make, check and install <div class="fragment"><pre class="fragment">  > make
+  ...
+  > make check
+  ...
+  > make install
+  ...
+</pre></div> </li></ol>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/interfacegrib__api_1_1grib__find__nearest.html b/html/interfacegrib__api_1_1grib__find__nearest.html
new file mode 100644
index 0000000..e69de29
diff --git a/html/interfacegrib__api_1_1grib__get.html b/html/interfacegrib__api_1_1grib__get.html
new file mode 100644
index 0000000..e69de29
diff --git a/html/interfacegrib__api_1_1grib__get__data.html b/html/interfacegrib__api_1_1grib__get__data.html
new file mode 100644
index 0000000..e69de29
diff --git a/html/interfacegrib__api_1_1grib__get__element.html b/html/interfacegrib__api_1_1grib__get__element.html
new file mode 100644
index 0000000..e69de29
diff --git a/html/interfacegrib__api_1_1grib__set.html b/html/interfacegrib__api_1_1grib__set.html
new file mode 100644
index 0000000..e69de29
diff --git a/html/iterator_8c-example.html b/html/iterator_8c-example.html
new file mode 100644
index 0000000..b40396a
--- /dev/null
+++ b/html/iterator_8c-example.html
@@ -0,0 +1,103 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: iterator.c</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>iterator.c</h1>iterator.c How to use an iterator on latitude, longitude, values.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00010"></a>00010 <span class="comment">/*</span>
+<a name="l00011"></a>00011 <span class="comment"> * C Implementation: iterator</span>
+<a name="l00012"></a>00012 <span class="comment"> *</span>
+<a name="l00013"></a>00013 <span class="comment"> * Description: how to use an iterator on lat/lon/values.</span>
+<a name="l00014"></a>00014 <span class="comment"> *</span>
+<a name="l00015"></a>00015 <span class="comment"> *</span>
+<a name="l00016"></a>00016 <span class="comment"> * Author: Enrico Fucile</span>
+<a name="l00017"></a>00017 <span class="comment"> *</span>
+<a name="l00018"></a>00018 <span class="comment"> *</span>
+<a name="l00019"></a>00019 <span class="comment"> */</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#include <stdio.h></span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include <stdlib.h></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <string.h></span>
+<a name="l00024"></a>00024 
+<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="grib__api_8h.html" title="Copyright 2005-2016 ECMWF.">grib_api.h</a>"</span>  
+<a name="l00026"></a>00026 
+<a name="l00027"></a>00027 <span class="keywordtype">void</span> usage(<span class="keywordtype">char</span>* prog) {
+<a name="l00028"></a>00028   printf(<span class="stringliteral">"Usage: %s grib_file\n"</span>,prog);
+<a name="l00029"></a>00029   exit(1);
+<a name="l00030"></a>00030 }
+<a name="l00031"></a>00031 
+<a name="l00032"></a>00032 <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv) {
+<a name="l00033"></a>00033   FILE* in = NULL;
+<a name="l00034"></a>00034   <span class="keywordtype">int</span> err = 0;
+<a name="l00035"></a>00035   <span class="keywordtype">double</span> lat,lon,value,missingValue=0;
+<a name="l00036"></a>00036   <span class="keywordtype">int</span> n=0;
+<a name="l00037"></a>00037   <span class="keywordtype">char</span>* filename = NULL;
+<a name="l00038"></a>00038 
+<a name="l00039"></a>00039   <span class="comment">/* Message handle. Required in all the grib_api calls acting on a message.*/</span>
+<a name="l00040"></a>00040   <a name="a0"></a><a class="code" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h = NULL;   
+<a name="l00041"></a>00041   <span class="comment">/* Iterator on lat/lon/values.*/</span>
+<a name="l00042"></a>00042   <a name="a1"></a><a class="code" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a>* iter=NULL;  
+<a name="l00043"></a>00043   
+<a name="l00044"></a>00044   <span class="keywordflow">if</span> (argc != 2) usage(argv[0]);
+<a name="l00045"></a>00045 
+<a name="l00046"></a>00046   filename=strdup(argv[1]);
+<a name="l00047"></a>00047 
+<a name="l00048"></a>00048   in = fopen(filename,<span class="stringliteral">"r"</span>);
+<a name="l00049"></a>00049   <span class="keywordflow">if</span>(!in) {
+<a name="l00050"></a>00050     printf(<span class="stringliteral">"ERROR: unable to open file %s\n"</span>,filename);
+<a name="l00051"></a>00051     <span class="keywordflow">return</span> 1;
+<a name="l00052"></a>00052   }
+<a name="l00053"></a>00053 
+<a name="l00054"></a>00054   <span class="comment">/* Loop on all the messages in a file.*/</span>
+<a name="l00055"></a>00055   <span class="keywordflow">while</span> ((h = <a name="a2"></a><a class="code" href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5" title="Create a handle from a file resource.">grib_handle_new_from_file</a>(0,in,&err)) != NULL ) { 
+<a name="l00056"></a>00056         <span class="comment">/* Check of errors after reading a message. */</span>
+<a name="l00057"></a>00057     <span class="keywordflow">if</span> (err != <a name="a3"></a><a class="code" href="grib__api_8h.html#5ec59f24fc07a0e9d05768e908b9eb41" title="No error.">GRIB_SUCCESS</a>) GRIB_CHECK(err,0);                       
+<a name="l00058"></a>00058 
+<a name="l00059"></a>00059         <span class="comment">/* Get the double representing the missing value in the field. */</span>
+<a name="l00060"></a>00060         GRIB_CHECK(<a name="a4"></a><a class="code" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e" title="Get a double value from a key, if several keys of the same name are present, the...">grib_get_double</a>(h,<span class="stringliteral">"missingValue"</span>,&missingValue),0);  
+<a name="l00061"></a>00061 
+<a name="l00062"></a>00062         <span class="comment">/* A new iterator on lat/lon/values is created from the message handle h. */</span>
+<a name="l00063"></a>00063         iter=<a name="a5"></a><a class="code" href="group__iterators.html#gefb1f87110bdce732edc9154cf0e7d58" title="Create a new iterator from a handle, using current geometry and values.">grib_iterator_new</a>(h,0,&err);                                     
+<a name="l00064"></a>00064     <span class="keywordflow">if</span> (err != <a class="code" href="grib__api_8h.html#5ec59f24fc07a0e9d05768e908b9eb41" title="No error.">GRIB_SUCCESS</a>) GRIB_CHECK(err,0);                       
+<a name="l00065"></a>00065 
+<a name="l00066"></a>00066     n = 0;
+<a name="l00067"></a>00067         <span class="comment">/* Loop on all the lat/lon/values. */</span>
+<a name="l00068"></a>00068     <span class="keywordflow">while</span>(<a name="a6"></a><a class="code" href="group__iterators.html#g4f73056dbfdda3de0060559b9b39ea34" title="Get the next value from an iterator.">grib_iterator_next</a>(iter,&lat,&lon,&value)) {   
+<a name="l00069"></a>00069           <span class="comment">/* You can now print lat and lon,  */</span>
+<a name="l00070"></a>00070       printf(<span class="stringliteral">"- %d - lat=%f lon=%f value="</span>,n,lat,lon);   
+<a name="l00071"></a>00071           <span class="comment">/* decide what to print if a missing value is found. */</span>
+<a name="l00072"></a>00072       <span class="keywordflow">if</span> (value == missingValue ) printf(<span class="stringliteral">"missing\n"</span>);   
+<a name="l00073"></a>00073           <span class="comment">/* and print the value if is not missing. */</span>
+<a name="l00074"></a>00074           <span class="keywordflow">else</span> printf(<span class="stringliteral">"%f\n"</span>,value);
+<a name="l00075"></a>00075       n++;
+<a name="l00076"></a>00076     }
+<a name="l00077"></a>00077 
+<a name="l00078"></a>00078         <span class="comment">/* At the end the iterator is deleted to free memory. */</span>
+<a name="l00079"></a>00079     <a name="a7"></a><a class="code" href="group__iterators.html#gd46ed73a16af56e6f3b46fe86ee8a759" title="Frees an iterator from memory.">grib_iterator_delete</a>(iter);               
+<a name="l00080"></a>00080 
+<a name="l00081"></a>00081     <span class="comment">/* At the end the grib_handle is deleted to free memory. */</span>
+<a name="l00082"></a>00082     <a name="a8"></a><a class="code" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677" title="Frees a handle, also frees the message if it is not a user message.">grib_handle_delete</a>(h);            
+<a name="l00083"></a>00083   }
+<a name="l00084"></a>00084 
+<a name="l00085"></a>00085 
+<a name="l00086"></a>00086   fclose(in);
+<a name="l00087"></a>00087 
+<a name="l00088"></a>00088   <span class="keywordflow">return</span> 0;
+<a name="l00089"></a>00089 }
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/iterator__fortran_8_f-example.html b/html/iterator__fortran_8_f-example.html
new file mode 100644
index 0000000..ce78c9e
--- /dev/null
+++ b/html/iterator__fortran_8_f-example.html
@@ -0,0 +1,103 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: iterator_fortran.F</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>iterator_fortran.F</h1>iterator_fortran.F How to use an iterator on latitude, longitude, values.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 C Copyright 2005-2016 ECMWF
+<a name="l00002"></a>00002 C This software is licensed under the terms of the Apache Licence Version 2.0
+<a name="l00003"></a>00003 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+<a name="l00004"></a>00004 C 
+<a name="l00005"></a>00005 C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+<a name="l00006"></a>00006 C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+<a name="l00007"></a>00007 C
+<a name="l00008"></a>00008 C
+<a name="l00009"></a>00009 C  Fortran 77 Implementation: iterator_fortran
+<a name="l00010"></a>00010 C
+<a name="l00011"></a>00011 C  Description: how to use an iterator on lat/lon/values.
+<a name="l00012"></a>00012 C
+<a name="l00013"></a>00013 C
+<a name="l00014"></a>00014 C  Author: Enrico Fucile
+<a name="l00015"></a>00015 C
+<a name="l00016"></a>00016 C
+<a name="l00017"></a>00017 C
+<a name="l00018"></a>00018       program iterator
+<a name="l00019"></a>00019       implicit none
+<a name="l00020"></a>00020       include 'grib_api_f77.h'
+<a name="l00021"></a>00021       integer ifile
+<a name="l00022"></a>00022       integer iret,iter
+<a name="l00023"></a>00023       real*8 lat,lon,value,missingValue
+<a name="l00024"></a>00024       integer n,flags
+<a name="l00025"></a>00025       character*256 filename
+<a name="l00026"></a>00026       character*256 error
+<a name="l00027"></a>00027 
+<a name="l00028"></a>00028 C     Message identifier.
+<a name="l00029"></a>00029       integer igrib
+<a name="l00030"></a>00030 
+<a name="l00031"></a>00031       ifile=5
+<a name="l00032"></a>00032 
+<a name="l00033"></a>00033       call grib_check(grib_open_file(ifile,
+<a name="l00034"></a>00034      X'../../data/regular_latlon_surface.grib1<span class="charliteral">','</span>r'))
+<a name="l00035"></a>00035 
+<a name="l00036"></a>00036 C     Loop on all the messages in a file.
+<a name="l00037"></a>00037   10  iret=grib_new_from_file(ifile,igrib)
+<a name="l00038"></a>00038       if (igrib .eq. -1 )  then
+<a name="l00039"></a>00039         if (iret .ne.0) then
+<a name="l00040"></a>00040            call grib_check(iret)
+<a name="l00041"></a>00041         endif
+<a name="l00042"></a>00042         stop
+<a name="l00043"></a>00043       endif
+<a name="l00044"></a>00044 
+<a name="l00045"></a>00045 C     get as a real8
+<a name="l00046"></a>00046       call grib_check(grib_get_real8(igrib
+<a name="l00047"></a>00047      X,'missingValue',missingValue))
+<a name="l00048"></a>00048       write(*,*) 'missingValue=',missingValue
+<a name="l00049"></a>00049 
+<a name="l00050"></a>00050 C     A new iterator on lat/lon/values is created from the message igrib
+<a name="l00051"></a>00051       flags = 0
+<a name="l00052"></a>00052       call grib_check(<a name="a0"></a><a class="code" href="group__iterators.html#gefb1f87110bdce732edc9154cf0e7d58" title="Create a new iterator from a handle, using current geometry and values.">grib_iterator_new</a>(igrib,iter,flags))
+<a name="l00053"></a>00053 
+<a name="l00054"></a>00054       n = 0
+<a name="l00055"></a>00055 C     Loop on all the lat/lon/values.
+<a name="l00056"></a>00056   20  iret = <a name="a1"></a><a class="code" href="group__iterators.html#g4f73056dbfdda3de0060559b9b39ea34" title="Get the next value from an iterator.">grib_iterator_next</a>(iter,lat,lon,value)
+<a name="l00057"></a>00057       if ( iret .eq. 0 ) goto 30
+<a name="l00058"></a>00058 C     You can now print lat and lon,
+<a name="l00059"></a>00059       if ( value .eq. missingValue ) then
+<a name="l00060"></a>00060 C     decide what to print if a missing value is found.
+<a name="l00061"></a>00061         write(*,*) "- ",n," - lat=",lat," lon=",lon," value=missing"
+<a name="l00062"></a>00062       else
+<a name="l00063"></a>00063 C     or print the value if is not missing.
+<a name="l00064"></a>00064         write(*,*) " ",n," lat=",lat," lon=",lon," value=",value
+<a name="l00065"></a>00065       endif
+<a name="l00066"></a>00066 
+<a name="l00067"></a>00067       n=n+1
+<a name="l00068"></a>00068 
+<a name="l00069"></a>00069       goto 20
+<a name="l00070"></a>00070   30  continue
+<a name="l00071"></a>00071 
+<a name="l00072"></a>00072 C     At the end the iterator is deleted to free memory.
+<a name="l00073"></a>00073       call grib_check(<a name="a2"></a><a class="code" href="group__iterators.html#gd46ed73a16af56e6f3b46fe86ee8a759" title="Frees an iterator from memory.">grib_iterator_delete</a>(iter))
+<a name="l00074"></a>00074 
+<a name="l00075"></a>00075       goto 10
+<a name="l00076"></a>00076 
+<a name="l00077"></a>00077       call grib_check(grib_release(igrib))
+<a name="l00078"></a>00078 
+<a name="l00079"></a>00079       call grib_check(grib_close_file(ifile))
+<a name="l00080"></a>00080 
+<a name="l00081"></a>00081       end
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/keys.html b/html/keys.html
new file mode 100644
index 0000000..1c3a6b5
--- /dev/null
+++ b/html/keys.html
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: Grib API keys</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1><a class="anchor" name="keys">Grib API keys</a></h1>The GRIBEX routine used at ECMWF to encode and decode GRIB messages works on a number based table to retrive all the information from the message. This approach forces the user either to learn a code table or to use the documentation intensively. With grib_api a key name based access is provided so that all the information contained in the GRIB message is retrieved through alphanumeric names. <br>
+ All the key names are built from the official WMO documentation on the GRIB edition 1 and 2 coding standard removing the spaces in the key description and capitalizing the initials so that the caption:<br>
+ <div class="fragment"><pre class="fragment">
+identification of originating generating centre
+</pre></div> is transformed into the key name<br>
+ <div class="fragment"><pre class="fragment">
+identificationOfOriginatingGeneratingCentre
+</pre></div><br>
+ Some short names (aliases) are also provided, e.g. "centre" is an alias for identificationOfOriginatingGeneratingCentre. The names are always easily releated to the meaning of their value.<br>
+ A different set of keys is available for each message because the content is different. It is easy to find the keys available in a message by using the GRIB tools (<a class="el" href="grib_dump.html">grib_dump) </a>or the library (<a class="el" href="keys__iterator_8c-example.html">keys_iterator.c</a>).<br>
+<h2><a class="anchor" name="coded_computed">
+Coded and Computed keys</a></h2>
+There are two different types of keys: coded and computed. <br>
+ The coded keys are directly linked to octets of the GRIB message and their value is obtained by only decoding the octets. A list of all the coded keys in a message can be obtained using <a class="el" href="grib_dump.html">grib_dump</a> without any option (use the -a option to obtain also their aliases).<br>
+ The computed keys are obtained by combining other keys (coded or computed) and when their value is set all the related keys are set in a cascade process.<br>
+ These keys provide a synthesis of the information contained in the GRIB message and are a safe way to set complex attributes such as the type of grid or the type of packing. They are also helpful in the interpretation of some octets such as the scanning mode whose bits are related to the way of scanning the grid. In this case the computed keys:<br>
+ <div class="fragment"><pre class="fragment">
+iScansNegatively
+jScansPositively
+jPointsAreConsecutive
+alternativeRowScanning (available only for edition 2)
+</pre></div><br>
+ will provide access to single bits of the scanning mode octect hiding its structure from the user.<br>
+ The keys can also have some attributes as <em>read</em> <em>only</em>, which means that the key cannot be set (e.g. 7777 at the end of the message), or <em>edition</em> <em>specific</em> that is the attribute of all the keys having different values in the two editions (e.g. longitudeOfFirstGridPoint) or being present in one edition only (e.g. alternativeRowScanning).<br>
+ Moreover there are some computed keys that cannot be "get" and can be considered as functions acting on the grib in some way. These keys are always characterised by a predicate in their name (e.g. setDecimalPrecision).<br>
+ For the computed keys we provide the following preliminary documentation that will be extended soon.<ul>
+<li>MARS keywords.<br>
+ All MARS keywords are available. Some examples are:<ul>
+<li>date</li><li>param</li><li>levtype</li><li>levelist</li><li>step</li><li>stream</li></ul>
+</li><li>angles in degrees. <br>
+ All the angle variables are provided in two versions, a native one with the units coded into the GRIB file and an edition independent one in degrees. It is always better to work with the "in degrees" version that is always provided through the key which has the same name of the native version with the suffix InDegrees <div class="fragment"><pre class="fragment">
+longitudeOfFirstGridPoint -> longitudeOfFirstGridPointInDegrees
+latitudeOfFirstGridPoint -> latitudeOfFirstGridPointInDegrees
+longitudeOfLastGridPoint -> longitudeOfLastGridPointInDegrees
+latitudeOfFirstGridPoint -> latitudeOfLastGridPointInDegrees
+latitudeOfFirstGridPoint -> latitudeOfFirstGridPointInDegrees
+iDirectionIncrement -> iDirectionIncrementInDegrees
+jDirectionIncrement -> jDirectionIncrementInDegrees
+</pre></div></li><li>gridType<br>
+ The type of grid computed from the grid description section.<ul>
+<li>For both editions:<ul>
+<li>regular_ll</li><li>reduced_ll</li><li>mercator</li><li>lambert</li><li>polar_stereographic</li><li>UTM</li><li>simple_polyconic</li><li>albers</li><li>miller</li><li>rotated_ll</li><li>stretched_ll</li><li>stretched_rotated_ll</li><li>regular_gg</li><li>rotated_gg</li><li>stretched_gg</li><li>stretched_rotated_gg</li><li>reduced_gg</li><li>sh</li><li>rotated_sh</li><li>stretched_sh</li><li>stretched_rotated_sh</li><li>space_view<br>
+</li></ul>
+</li><li>For edition 2 only:<ul>
+<li>triangular_grid</li><li>equatorial_azimuthal_equidistant</li><li>azimuth_range</li><li>cross_section</li><li>Hovmoller</li><li>time_section</li></ul>
+</li></ul>
+</li></ul>
+<p>
+<ul>
+<li>packingType<br>
+ The alghorithm used to pack data into the GRIB message.<br>
+<ul>
+<li>For GRIB edition 1:<ul>
+<li>grid_simple</li><li>grid_simple_matrix</li><li>grid_simple_matrix_bitmap</li><li>grid_second_order</li><li>grid_second_order_different_width</li><li>spectral_complex</li><li>spectral_simple</li><li>grid_unknown</li><li>spectral_unknown<br>
+</li></ul>
+</li><li>For GRIB edition 2:<ul>
+<li>grid_simple</li><li>grid_simple_matrix</li><li>grid_simple_matrix_bitmap</li><li>grid_complex</li><li>grid_complex_spatial_differencing</li><li>grid_jpeg</li><li>grid_png</li><li>grid_ieee</li><li>spectral_simple</li><li>spectral_complex</li><li>grid_simple_log_preprocessing</li></ul>
+</li></ul>
+</li></ul>
+<p>
+<ul>
+<li>setDecimalPrecision<br>
+ is a function key used to set the decimal precision see the <a class="el" href="grib_set.html">grib_set</a> page for usage.</li></ul>
+<p>
+<ul>
+<li>getNumberOfValues<br>
+ The number of values coded into the data section of the GRIB message </li></ul>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/keys__iterator_8c-example.html b/html/keys__iterator_8c-example.html
new file mode 100644
index 0000000..b060ca6
--- /dev/null
+++ b/html/keys__iterator_8c-example.html
@@ -0,0 +1,115 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: keys_iterator.c</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>keys_iterator.c</h1>keys_iterator.c How to get the names of all the keys defined in a message and how to iterate through them.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00010"></a>00010 <span class="comment">/*</span>
+<a name="l00011"></a>00011 <span class="comment"> * C Implementation: keys_iterator</span>
+<a name="l00012"></a>00012 <span class="comment"> *</span>
+<a name="l00013"></a>00013 <span class="comment"> * Description:</span>
+<a name="l00014"></a>00014 <span class="comment"> * Example on how to use keys_iterator functions and the</span>
+<a name="l00015"></a>00015 <span class="comment"> * grib_keys_iterator structure to get all the available</span>
+<a name="l00016"></a>00016 <span class="comment"> * keys in a message.</span>
+<a name="l00017"></a>00017 <span class="comment"> *</span>
+<a name="l00018"></a>00018 <span class="comment"> * Author: Enrico Fucile</span>
+<a name="l00019"></a>00019 <span class="comment"> *</span>
+<a name="l00020"></a>00020 <span class="comment"> *</span>
+<a name="l00021"></a>00021 <span class="comment"> */</span>
+<a name="l00022"></a>00022 
+<a name="l00023"></a>00023 <span class="preprocessor">#include <assert.h></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <stdlib.h></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include <stdio.h></span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include <unistd.h></span>
+<a name="l00027"></a>00027 
+<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="grib__api_8h.html" title="Copyright 2005-2016 ECMWF.">grib_api.h</a>"</span>
+<a name="l00029"></a>00029 
+<a name="l00030"></a>00030 <span class="preprocessor">#define MAX_KEY_LEN  255</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#define MAX_VAL_LEN  1024</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span>
+<a name="l00033"></a>00033 <span class="keyword">static</span> <span class="keywordtype">void</span> usage(<span class="keywordtype">char</span>* progname);
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035 <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])
+<a name="l00036"></a>00036 {
+<a name="l00037"></a>00037   <span class="comment">/* To skip read only and not coded keys</span>
+<a name="l00038"></a>00038 <span class="comment">     unsigned long key_iterator_filter_flags=GRIB_KEYS_ITERATOR_SKIP_READ_ONLY ||</span>
+<a name="l00039"></a>00039 <span class="comment">     GRIB_KEYS_ITERATOR_SKIP_COMPUTED;</span>
+<a name="l00040"></a>00040 <span class="comment">  */</span>
+<a name="l00041"></a>00041   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> key_iterator_filter_flags=<a name="a0"></a><a class="code" href="group__keys__iterator.html#g0e4d2d943ddd61d0b877060e6fbea405">GRIB_KEYS_ITERATOR_ALL_KEYS</a>;
+<a name="l00042"></a>00042 
+<a name="l00043"></a>00043   <span class="comment">/* valid name_spaces are ls and mars */</span>
+<a name="l00044"></a>00044   <span class="keywordtype">char</span>* name_space=<span class="stringliteral">"ls"</span>;
+<a name="l00045"></a>00045 
+<a name="l00046"></a>00046   <span class="comment">/* name_space=NULL to get all the keys */</span>
+<a name="l00047"></a>00047   <span class="comment">/* char* name_space=0; */</span>
+<a name="l00048"></a>00048 
+<a name="l00049"></a>00049   FILE* f;
+<a name="l00050"></a>00050   <a name="a1"></a><a class="code" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a>* h=NULL;
+<a name="l00051"></a>00051   <a name="a2"></a><a class="code" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a>* kiter=NULL;
+<a name="l00052"></a>00052   <span class="keywordtype">int</span> err=0;
+<a name="l00053"></a>00053   <span class="keywordtype">int</span> grib_count=0;
+<a name="l00054"></a>00054 
+<a name="l00055"></a>00055   <span class="keywordtype">char</span> value[MAX_VAL_LEN];
+<a name="l00056"></a>00056   <span class="keywordtype">size_t</span> vlen=MAX_VAL_LEN;
+<a name="l00057"></a>00057 
+<a name="l00058"></a>00058   <span class="keywordflow">if</span> (argc != 2) usage(argv[0]);
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060   f = fopen(argv[1],<span class="stringliteral">"r"</span>);
+<a name="l00061"></a>00061   <span class="keywordflow">if</span>(!f) {
+<a name="l00062"></a>00062     perror(argv[1]);
+<a name="l00063"></a>00063     exit(1);
+<a name="l00064"></a>00064   }
+<a name="l00065"></a>00065 
+<a name="l00066"></a>00066   <span class="keywordflow">while</span>((h = <a name="a3"></a><a class="code" href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5" title="Create a handle from a file resource.">grib_handle_new_from_file</a>(0,f,&err)) != NULL) {
+<a name="l00067"></a>00067 
+<a name="l00068"></a>00068     grib_count++;
+<a name="l00069"></a>00069     printf(<span class="stringliteral">"-- GRIB N. %d --\n"</span>,grib_count);
+<a name="l00070"></a>00070     <span class="keywordflow">if</span>(!h) {
+<a name="l00071"></a>00071       printf(<span class="stringliteral">"ERROR: Unable to create grib handle\n"</span>);
+<a name="l00072"></a>00072       exit(1);
+<a name="l00073"></a>00073     }
+<a name="l00074"></a>00074 
+<a name="l00075"></a>00075     kiter=<a name="a4"></a><a class="code" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a>(h,key_iterator_filter_flags,name_space);
+<a name="l00076"></a>00076     <span class="keywordflow">if</span> (!kiter) {
+<a name="l00077"></a>00077       printf(<span class="stringliteral">"ERROR: Unable to create keys iterator\n"</span>);
+<a name="l00078"></a>00078       exit(1);
+<a name="l00079"></a>00079     }
+<a name="l00080"></a>00080 
+<a name="l00081"></a>00081     <span class="keywordflow">while</span>(<a name="a5"></a><a class="code" href="group__keys__iterator.html#g28f6ac808ecdc324fa3a47bc7b3f6dec">grib_keys_iterator_next</a>(kiter))
+<a name="l00082"></a>00082     {
+<a name="l00083"></a>00083       <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <a name="a6"></a><a class="code" href="group__keys__iterator.html#gec3348471f770965c07964e286249e12">grib_keys_iterator_get_name</a>(kiter);
+<a name="l00084"></a>00084       vlen=MAX_VAL_LEN;
+<a name="l00085"></a>00085       GRIB_CHECK(<a name="a7"></a><a class="code" href="group__get__set.html#g8aeaf9f930eea1cc0f15e92f18a25053" title="Get a string value from a key, if several keys of the same name are present, the...">grib_get_string</a>(h,name,value,&vlen),name);
+<a name="l00086"></a>00086       printf(<span class="stringliteral">"%s = %s\n"</span>,name,value);
+<a name="l00087"></a>00087     }
+<a name="l00088"></a>00088 
+<a name="l00089"></a>00089     <a name="a8"></a><a class="code" href="group__keys__iterator.html#g79716d2b701c3dbb3d3a8e633f35a40a">grib_keys_iterator_delete</a>(kiter);
+<a name="l00090"></a>00090 
+<a name="l00091"></a>00091   }
+<a name="l00092"></a>00092 
+<a name="l00093"></a>00093   <span class="keywordflow">return</span> 0;
+<a name="l00094"></a>00094 
+<a name="l00095"></a>00095 }
+<a name="l00096"></a>00096 
+<a name="l00097"></a>00097 <span class="keyword">static</span> <span class="keywordtype">void</span> usage(<span class="keywordtype">char</span>* progname) {
+<a name="l00098"></a>00098   printf(<span class="stringliteral">"\nUsage: %s grib_file\n"</span>,progname);
+<a name="l00099"></a>00099   exit(1);
+<a name="l00100"></a>00100 }
+<a name="l00101"></a>00101 
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/keys__iterator_8f90-example.html b/html/keys__iterator_8f90-example.html
new file mode 100644
index 0000000..999ae5a
--- /dev/null
+++ b/html/keys__iterator_8f90-example.html
@@ -0,0 +1,86 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: keys_iterator.f90</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>keys_iterator.f90</h1>How to get the names of all the keys defined in a message and how to iterate through them.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
+<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+<a name="l00004"></a>00004 ! 
+<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+<a name="l00007"></a>00007 !
+<a name="l00008"></a>00008 !
+<a name="l00009"></a>00009 !  Description:
+<a name="l00010"></a>00010 !       How to use keys_iterator to <span class="keyword">get</span> all the available
+<a name="l00011"></a>00011 !       keys in a message.
+<a name="l00012"></a>00012 !
+<a name="l00013"></a>00013 !  Author: Enrico Fucile 
+<a name="l00014"></a>00014 !
+<a name="l00015"></a>00015 !
+<a name="l00016"></a>00016 program keys_iterator
+<a name="l00017"></a>00017   use grib_api
+<a name="l00018"></a>00018   implicit none
+<a name="l00019"></a>00019   character(len=20)  :: name_space
+<a name="l00020"></a>00020   integer            :: kiter,ifile,igrib,iret
+<a name="l00021"></a>00021   character(len=256) :: key
+<a name="l00022"></a>00022   character(len=256) :: value
+<a name="l00023"></a>00023   character(len=512) :: all
+<a name="l00024"></a>00024   integer            :: grib_count
+<a name="l00025"></a>00025   
+<a name="l00026"></a>00026   call grib_open_file(ifile, &
+<a name="l00027"></a>00027        '../../data/regular_latlon_surface.grib1','r')
+<a name="l00028"></a>00028   
+<a name="l00029"></a>00029   ! Loop on all the messages in a file.
+<a name="l00030"></a>00030   
+<a name="l00031"></a>00031   call grib_new_from_file(ifile,igrib, iret)
+<a name="l00032"></a>00032   
+<a name="l00033"></a>00033   do while (iret /= <a name="a0"></a><a class="code" href="grib__api_8h.html#3bd3d72fe8bc116ca08c2d4b99203768" title="End of ressource reached.">GRIB_END_OF_FILE</a>)
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035      grib_count=grib_count+1
+<a name="l00036"></a>00036      write(*,*) '-- GRIB N. ',grib_count,' --'
+<a name="l00037"></a>00037      
+<a name="l00038"></a>00038      ! valid name_spaces are ls and mars
+<a name="l00039"></a>00039      name_space='ls'
+<a name="l00040"></a>00040      
+<a name="l00041"></a>00041      call <a name="a1"></a><a class="code" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a>(igrib,kiter,name_space)
+<a name="l00042"></a>00042      
+<a name="l00043"></a>00043      do
+<a name="l00044"></a>00044         call <a name="a2"></a><a class="code" href="group__keys__iterator.html#g28f6ac808ecdc324fa3a47bc7b3f6dec">grib_keys_iterator_next</a>(kiter, iret) 
+<a name="l00045"></a>00045         
+<a name="l00046"></a>00046         if (iret .ne. 1) exit
+<a name="l00047"></a>00047         
+<a name="l00048"></a>00048         call <a name="a3"></a><a class="code" href="group__keys__iterator.html#gec3348471f770965c07964e286249e12">grib_keys_iterator_get_name</a>(kiter,key)
+<a name="l00049"></a>00049         call grib_get(igrib,trim(key),value)
+<a name="l00050"></a>00050         all=trim(key)<span class="comment">// ' = ' // trim(value)</span>
+<a name="l00051"></a>00051         write(*,*) trim(all)
+<a name="l00052"></a>00052         
+<a name="l00053"></a>00053      end do
+<a name="l00054"></a>00054      
+<a name="l00055"></a>00055      call <a name="a4"></a><a class="code" href="group__keys__iterator.html#g79716d2b701c3dbb3d3a8e633f35a40a">grib_keys_iterator_delete</a>(kiter)
+<a name="l00056"></a>00056      call grib_release(igrib)
+<a name="l00057"></a>00057      call grib_new_from_file(ifile,igrib, iret)
+<a name="l00058"></a>00058   end do
+<a name="l00059"></a>00059   
+<a name="l00060"></a>00060   
+<a name="l00061"></a>00061   call grib_close_file(ifile)
+<a name="l00062"></a>00062   
+<a name="l00063"></a>00063 end program keys_iterator
+<a name="l00064"></a>00064 
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/keys__iterator__fortran_8_f-example.html b/html/keys__iterator__fortran_8_f-example.html
new file mode 100644
index 0000000..7168966
--- /dev/null
+++ b/html/keys__iterator__fortran_8_f-example.html
@@ -0,0 +1,99 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: keys_iterator_fortran.F</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>keys_iterator_fortran.F</h1>keys_iterator_fortran.F How to get the names of all the keys defined in a message and how to iterate through them.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 C Copyright 2005-2016 ECMWF
+<a name="l00002"></a>00002 C This software is licensed under the terms of the Apache Licence Version 2.0
+<a name="l00003"></a>00003 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+<a name="l00004"></a>00004 C 
+<a name="l00005"></a>00005 C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+<a name="l00006"></a>00006 C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+<a name="l00007"></a>00007 C
+<a name="l00008"></a>00008 C
+<a name="l00009"></a>00009 C  Fortran 77 Implementation: keys_iterator
+<a name="l00010"></a>00010 C
+<a name="l00011"></a>00011 C  Description:
+<a name="l00012"></a>00012 C  Example on how to use keys_iterator functions and the
+<a name="l00013"></a>00013 C  <a name="a0"></a><a class="code" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> structure to <span class="keyword">get</span> all the available
+<a name="l00014"></a>00014 C  keys in a message.
+<a name="l00015"></a>00015 C
+<a name="l00016"></a>00016 C  Author: Enrico Fucile
+<a name="l00017"></a>00017 C
+<a name="l00018"></a>00018 C
+<a name="l00019"></a>00019 C
+<a name="l00020"></a>00020       program keys_iterator
+<a name="l00021"></a>00021       implicit none
+<a name="l00022"></a>00022       include 'grib_api_f77.h'
+<a name="l00023"></a>00023       character*20 name_space
+<a name="l00024"></a>00024       integer kiter,ifile,igrib,iret
+<a name="l00025"></a>00025       character*256 key
+<a name="l00026"></a>00026       character*256 value
+<a name="l00027"></a>00027       character*512 all
+<a name="l00028"></a>00028       integer len,strlen
+<a name="l00029"></a>00029       integer grib_count
+<a name="l00030"></a>00030       len=256
+<a name="l00031"></a>00031 
+<a name="l00032"></a>00032       ifile=5
+<a name="l00033"></a>00033 
+<a name="l00034"></a>00034       call grib_check(grib_open_file(ifile,
+<a name="l00035"></a>00035      X'../../data/regular_latlon_surface.grib1<span class="charliteral">','</span>r'))
+<a name="l00036"></a>00036 
+<a name="l00037"></a>00037       grib_count=0
+<a name="l00038"></a>00038 C     Loop on all the messages in a file.
+<a name="l00039"></a>00039   10  iret=grib_new_from_file(ifile,igrib)
+<a name="l00040"></a>00040       if (igrib .eq. -1 )  then
+<a name="l00041"></a>00041         if (iret .ne.0) then
+<a name="l00042"></a>00042            call grib_check(iret)
+<a name="l00043"></a>00043         endif
+<a name="l00044"></a>00044         stop
+<a name="l00045"></a>00045       endif
+<a name="l00046"></a>00046 
+<a name="l00047"></a>00047       grib_count=grib_count+1
+<a name="l00048"></a>00048       write(*,'("-- GRIB N.",I4," --")') grib_count
+<a name="l00049"></a>00049 
+<a name="l00050"></a>00050 C     valid name_spaces are ls and mars
+<a name="l00051"></a>00051       name_space='ls'
+<a name="l00052"></a>00052 C     name_space=' ' to get all the keys */
+<a name="l00053"></a>00053 C     name_space=' '
+<a name="l00054"></a>00054 
+<a name="l00055"></a>00055       call grib_check(
+<a name="l00056"></a>00056      Xgrib_keys_iterator_new(igrib,kiter,name_space))
+<a name="l00057"></a>00057 C     call grib_check(grib_keys_iterator_skip_read_only(kiter))
+<a name="l00058"></a>00058 C     call grib_check(grib_keys_iterator_skip_function(kiter))
+<a name="l00059"></a>00059 C     call grib_check(grib_keys_iterator_skip_not_coded(kiter))
+<a name="l00060"></a>00060 
+<a name="l00061"></a>00061   20  if (<a name="a1"></a><a class="code" href="group__keys__iterator.html#g28f6ac808ecdc324fa3a47bc7b3f6dec">grib_keys_iterator_next</a>(kiter) .ne. 1) goto 10
+<a name="l00062"></a>00062 
+<a name="l00063"></a>00063       call grib_check(<a name="a2"></a><a class="code" href="group__keys__iterator.html#gec3348471f770965c07964e286249e12">grib_keys_iterator_get_name</a>(kiter,key))
+<a name="l00064"></a>00064       call grib_check(<a name="a3"></a><a class="code" href="group__get__set.html#g8aeaf9f930eea1cc0f15e92f18a25053" title="Get a string value from a key, if several keys of the same name are present, the...">grib_get_string</a>(igrib,key,value))
+<a name="l00065"></a>00065       all='|' <span class="comment">// trim(key)//'|' //  ' = ' //'|' //  trim(value) // '|' </span>
+<a name="l00066"></a>00066       write(*,*) trim(all)
+<a name="l00067"></a>00067 
+<a name="l00068"></a>00068       goto 20
+<a name="l00069"></a>00069 
+<a name="l00070"></a>00070       call grib_check(<a name="a4"></a><a class="code" href="group__keys__iterator.html#g79716d2b701c3dbb3d3a8e633f35a40a">grib_keys_iterator_delete</a>(kiter))
+<a name="l00071"></a>00071 
+<a name="l00072"></a>00072       call grib_check(grib_release(igrib))
+<a name="l00073"></a>00073 
+<a name="l00074"></a>00074       call grib_check(grib_close_file(ifile))
+<a name="l00075"></a>00075 
+<a name="l00076"></a>00076       end
+<a name="l00077"></a>00077 
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/modules.html b/html/modules.html
new file mode 100644
index 0000000..1adb627
--- /dev/null
+++ b/html/modules.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: Module Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li class="current"><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>grib_api Modules</h1>Here is a list of all modules:<ul>
+<li><a class="el" href="group__grib__index.html">The grib_index</a>
+<li><a class="el" href="group__grib__handle.html">The grib_handle</a>
+<li><a class="el" href="group__handling__coded__messages.html">Handling coded messages</a>
+<li><a class="el" href="group__iterators.html">Iterating on latitude/longitude/values</a>
+<li><a class="el" href="group__get__set.html">Accessing header and data values</a>
+<li><a class="el" href="group__context.html">The context object</a>
+<li><a class="el" href="group__keys__iterator.html">Iterating on keys names</a>
+</ul>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/multi_8c-example.html b/html/multi_8c-example.html
new file mode 100644
index 0000000..5c432ba
--- /dev/null
+++ b/html/multi_8c-example.html
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: multi.c</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>multi.c</h1>multi.c How to decode a grib message containing many fields.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00010"></a>00010 <span class="comment">/*</span>
+<a name="l00011"></a>00011 <span class="comment"> * C Implementation: multi  </span>
+<a name="l00012"></a>00012 <span class="comment"> *</span>
+<a name="l00013"></a>00013 <span class="comment"> * Description: How to decode grib messages containing multiple</span>
+<a name="l00014"></a>00014 <span class="comment"> *              fields. Try to turn on and off multi support to</span>
+<a name="l00015"></a>00015 <span class="comment"> *              see the difference. Default is OFF.</span>
+<a name="l00016"></a>00016 <span class="comment"> *                      For all the tools defalut is multi support ON.</span>
+<a name="l00017"></a>00017 <span class="comment"> *</span>
+<a name="l00018"></a>00018 <span class="comment"> *</span>
+<a name="l00019"></a>00019 <span class="comment"> * Author: Enrico Fucile</span>
+<a name="l00020"></a>00020 <span class="comment"> *</span>
+<a name="l00021"></a>00021 <span class="comment"> *</span>
+<a name="l00022"></a>00022 <span class="comment"> */</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <stdio.h></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <stdlib.h></span>
+<a name="l00025"></a>00025 
+<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="grib__api_8h.html" title="Copyright 2005-2016 ECMWF.">grib_api.h</a>"</span>
+<a name="l00027"></a>00027 
+<a name="l00028"></a>00028 <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv) {
+<a name="l00029"></a>00029   <span class="keywordtype">int</span> err = 0;
+<a name="l00030"></a>00030   <span class="keywordtype">long</span> parameterCategory=0,parameterNumber=0,discipline=0;
+<a name="l00031"></a>00031   FILE* in = NULL;
+<a name="l00032"></a>00032   <span class="keywordtype">char</span>* filename = <span class="stringliteral">"../../data/multi.grib2"</span>;
+<a name="l00033"></a>00033   <a name="a0"></a><a class="code" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h = NULL;
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035   <span class="comment">/* turn on support for multi fields messages */</span>
+<a name="l00036"></a>00036   <a name="a1"></a><a class="code" href="group__context.html#g3266536e68ebb6d4bbc4a22b29f0e8ea" title="Turn on support for multiple fields in single grib messages.">grib_multi_support_on</a>(0);
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038   <span class="comment">/* turn off support for multi fields messages */</span>
+<a name="l00039"></a>00039   <span class="comment">/* grib_multi_support_off(0); */</span>
+<a name="l00040"></a>00040 
+<a name="l00041"></a>00041   in = fopen(filename,<span class="stringliteral">"r"</span>);
+<a name="l00042"></a>00042   <span class="keywordflow">if</span>(!in) {
+<a name="l00043"></a>00043     printf(<span class="stringliteral">"ERROR: unable to open file %s\n"</span>,filename);
+<a name="l00044"></a>00044     <span class="keywordflow">return</span> 1;
+<a name="l00045"></a>00045   }
+<a name="l00046"></a>00046 
+<a name="l00047"></a>00047 
+<a name="l00048"></a>00048   <span class="keywordflow">while</span> ((h = <a name="a2"></a><a class="code" href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5" title="Create a handle from a file resource.">grib_handle_new_from_file</a>(0,in,&err)) != NULL ) {
+<a name="l00049"></a>00049 
+<a name="l00050"></a>00050     GRIB_CHECK(err,0);
+<a name="l00051"></a>00051 
+<a name="l00052"></a>00052     GRIB_CHECK(<a name="a3"></a><a class="code" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526" title="Get a long value from a key, if several keys of the same name are present, the last...">grib_get_long</a>(h,<span class="stringliteral">"discipline"</span>,&discipline),0);
+<a name="l00053"></a>00053     printf(<span class="stringliteral">"discipline=%ld\n"</span>,discipline);
+<a name="l00054"></a>00054 
+<a name="l00055"></a>00055     GRIB_CHECK(<a class="code" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526" title="Get a long value from a key, if several keys of the same name are present, the last...">grib_get_long</a>(h,<span class="stringliteral">"parameterCategory"</span>,&parameterCategory),0);
+<a name="l00056"></a>00056     printf(<span class="stringliteral">"parameterCategory=%ld\n"</span>,parameterCategory);
+<a name="l00057"></a>00057 
+<a name="l00058"></a>00058     GRIB_CHECK(<a class="code" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526" title="Get a long value from a key, if several keys of the same name are present, the last...">grib_get_long</a>(h,<span class="stringliteral">"parameterNumber"</span>,&parameterNumber),0);
+<a name="l00059"></a>00059     printf(<span class="stringliteral">"parameterNumber=%ld\n"</span>,parameterNumber);
+<a name="l00060"></a>00060 
+<a name="l00061"></a>00061     <span class="keywordflow">if</span> ( discipline == 0 && parameterCategory==2) {
+<a name="l00062"></a>00062     <span class="keywordflow">if</span> (parameterNumber == 2) printf(<span class="stringliteral">"-------- u -------\n"</span>);
+<a name="l00063"></a>00063     <span class="keywordflow">if</span> (parameterNumber == 3) printf(<span class="stringliteral">"-------- v -------\n"</span>);
+<a name="l00064"></a>00064     }
+<a name="l00065"></a>00065   }
+<a name="l00066"></a>00066 
+<a name="l00067"></a>00067   <a name="a4"></a><a class="code" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677" title="Frees a handle, also frees the message if it is not a user message.">grib_handle_delete</a>(h);
+<a name="l00068"></a>00068 
+<a name="l00069"></a>00069   fclose(in);
+<a name="l00070"></a>00070   <span class="keywordflow">return</span> 0;
+<a name="l00071"></a>00071 }
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/multi_8f90-example.html b/html/multi_8f90-example.html
new file mode 100644
index 0000000..6564020
--- /dev/null
+++ b/html/multi_8f90-example.html
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: multi.f90</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>multi.f90</h1>How to decode a grib message containing many fields.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
+<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+<a name="l00004"></a>00004 ! 
+<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+<a name="l00007"></a>00007 !
+<a name="l00008"></a>00008 !
+<a name="l00009"></a>00009 !  Description: How to decode grib messages containing multiple
+<a name="l00010"></a>00010 !               fields. Try to turn on and off multi support to
+<a name="l00011"></a>00011 !               see the difference. Default is OFF.
+<a name="l00012"></a>00012 !               For all the tools defalut is multi support ON.
+<a name="l00013"></a>00013 !
+<a name="l00014"></a>00014 !
+<a name="l00015"></a>00015 !  Author: Enrico Fucile 
+<a name="l00016"></a>00016 !
+<a name="l00017"></a>00017 !
+<a name="l00018"></a>00018 program multi
+<a name="l00019"></a>00019   use grib_api
+<a name="l00020"></a>00020   implicit none
+<a name="l00021"></a>00021   
+<a name="l00022"></a>00022   integer              :: iret
+<a name="l00023"></a>00023   character(len = 256) :: error
+<a name="l00024"></a>00024   integer(kind = 4)    :: step
+<a name="l00025"></a>00025   integer              :: ifile,igrib
+<a name="l00026"></a>00026 
+<a name="l00027"></a>00027   call grib_open_file(ifile, '../../data/multi_created.grib2','r')
+<a name="l00028"></a>00028 
+<a name="l00029"></a>00029   !     turn on support for multi fields messages */
+<a name="l00030"></a>00030   call <a name="a0"></a><a class="code" href="group__context.html#g3266536e68ebb6d4bbc4a22b29f0e8ea" title="Turn on support for multiple fields in single grib messages.">grib_multi_support_on</a>()
+<a name="l00031"></a>00031 
+<a name="l00032"></a>00032   !     turn off support for multi fields messages */
+<a name="l00033"></a>00033   !call <a name="a1"></a><a class="code" href="group__context.html#gc022270a99922ccc57147670ed2a58d4" title="Turn off support for multiple fields in single grib messages.">grib_multi_support_off</a>()
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035   call grib_new_from_file(ifile,igrib, iret)
+<a name="l00036"></a>00036   !     Loop on all the messages in a file.
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038   write(*,*) 'step'
+<a name="l00039"></a>00039   do while (iret /= <a name="a2"></a><a class="code" href="grib__api_8h.html#3bd3d72fe8bc116ca08c2d4b99203768" title="End of ressource reached.">GRIB_END_OF_FILE</a>)
+<a name="l00040"></a>00040 
+<a name="l00041"></a>00041      call grib_get(igrib,'step', step)
+<a name="l00042"></a>00042      write(*,'(i3)') step
+<a name="l00043"></a>00043      
+<a name="l00044"></a>00044      call grib_new_from_file(ifile,igrib, iret)
+<a name="l00045"></a>00045   
+<a name="l00046"></a>00046   end do
+<a name="l00047"></a>00047   call grib_close_file(ifile)
+<a name="l00048"></a>00048 
+<a name="l00049"></a>00049 end program multi
+<a name="l00050"></a>00050 
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/multi__fortran_8_f-example.html b/html/multi__fortran_8_f-example.html
new file mode 100644
index 0000000..9a8e32d
--- /dev/null
+++ b/html/multi__fortran_8_f-example.html
@@ -0,0 +1,99 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: multi_fortran.F</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>multi_fortran.F</h1>multi_fortran.F How to decode a grib message containing many fields.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 C Copyright 2005-2016 ECMWF
+<a name="l00002"></a>00002 C This software is licensed under the terms of the Apache Licence Version 2.0
+<a name="l00003"></a>00003 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+<a name="l00004"></a>00004 C 
+<a name="l00005"></a>00005 C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+<a name="l00006"></a>00006 C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+<a name="l00007"></a>00007 C
+<a name="l00008"></a>00008 C
+<a name="l00009"></a>00009 C  Fortran 77 Implementation: multi_fortran
+<a name="l00010"></a>00010 C
+<a name="l00011"></a>00011 C  Description: How to decode grib messages containing multiple
+<a name="l00012"></a>00012 C               fields. Try to turn on and off multi support to
+<a name="l00013"></a>00013 C               see the difference. Default is OFF.
+<a name="l00014"></a>00014 C         For all the tools defalut is multi support ON.
+<a name="l00015"></a>00015 C
+<a name="l00016"></a>00016 C
+<a name="l00017"></a>00017 C  Author: Enrico Fucile
+<a name="l00018"></a>00018 C
+<a name="l00019"></a>00019 C
+<a name="l00020"></a>00020 C
+<a name="l00021"></a>00021       program multi
+<a name="l00022"></a>00022       implicit none
+<a name="l00023"></a>00023       include 'grib_api_f77.h'
+<a name="l00024"></a>00024       integer iret
+<a name="l00025"></a>00025       character*256 error
+<a name="l00026"></a>00026       integer*4 parameterCategory,parameterNumber,discipline
+<a name="l00027"></a>00027       integer ifile,igrib
+<a name="l00028"></a>00028 
+<a name="l00029"></a>00029       call grib_check( grib_open_file(ifile
+<a name="l00030"></a>00030      X,'../../data/multi.grib2<span class="charliteral">','</span>r'))
+<a name="l00031"></a>00031 
+<a name="l00032"></a>00032 C     turn on support for multi fields messages */
+<a name="l00033"></a>00033       call grib_check(<a name="a0"></a><a class="code" href="group__context.html#g3266536e68ebb6d4bbc4a22b29f0e8ea" title="Turn on support for multiple fields in single grib messages.">grib_multi_support_on</a>())
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035 C     turn off support for multi fields messages */
+<a name="l00036"></a>00036 C     call grib_check(<a name="a1"></a><a class="code" href="group__context.html#gc022270a99922ccc57147670ed2a58d4" title="Turn off support for multiple fields in single grib messages.">grib_multi_support_off</a>())
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038 C     Loop on all the messages in a file.
+<a name="l00039"></a>00039   10  iret=grib_new_from_file(ifile,igrib)
+<a name="l00040"></a>00040       if (igrib .eq. -1 )  then
+<a name="l00041"></a>00041         if (iret .ne.0) then
+<a name="l00042"></a>00042        call grib_check(iret)
+<a name="l00043"></a>00043         endif
+<a name="l00044"></a>00044         stop
+<a name="l00045"></a>00045       endif
+<a name="l00046"></a>00046 
+<a name="l00047"></a>00047 C     get as a integer*4
+<a name="l00048"></a>00048       call grib_check(grib_get_int(igrib,'discipline',discipline))
+<a name="l00049"></a>00049       write(*,*) 'discipline=',discipline
+<a name="l00050"></a>00050 
+<a name="l00051"></a>00051 C     get as a integer*4
+<a name="l00052"></a>00052       call grib_check(grib_get_int(igrib,'parameterCategory'
+<a name="l00053"></a>00053      X,parameterCategory))
+<a name="l00054"></a>00054       write(*,*) 'parameterCategory=',parameterCategory
+<a name="l00055"></a>00055 
+<a name="l00056"></a>00056 C     get as a integer*4
+<a name="l00057"></a>00057       call grib_check(grib_get_int(igrib,'parameterNumber'
+<a name="l00058"></a>00058      X,parameterNumber))
+<a name="l00059"></a>00059       write(*,*) 'parameterNumber=',parameterNumber
+<a name="l00060"></a>00060 
+<a name="l00061"></a>00061       if ( discipline .eq. 0 .and. parameterCategory .eq. 2) then
+<a name="l00062"></a>00062         if (parameterNumber .eq. 2) then
+<a name="l00063"></a>00063            write(*,*) "-------- u -------"
+<a name="l00064"></a>00064         endif
+<a name="l00065"></a>00065         if (parameterNumber .eq. 3) then
+<a name="l00066"></a>00066            write(*,*) "-------- v -------"
+<a name="l00067"></a>00067         endif
+<a name="l00068"></a>00068       endif
+<a name="l00069"></a>00069 
+<a name="l00070"></a>00070       goto 10
+<a name="l00071"></a>00071 
+<a name="l00072"></a>00072       call grib_check(grib_release(igrib))
+<a name="l00073"></a>00073 
+<a name="l00074"></a>00074       call grib_check(grib_close_file(ifile))
+<a name="l00075"></a>00075 
+<a name="l00076"></a>00076       end
+<a name="l00077"></a>00077 
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/namespacegrib__api.html b/html/namespacegrib__api.html
new file mode 100644
index 0000000..e69de29
diff --git a/html/namespacemembers.html b/html/namespacemembers.html
new file mode 100644
index 0000000..e69de29
diff --git a/html/namespacemembers_func.html b/html/namespacemembers_func.html
new file mode 100644
index 0000000..e69de29
diff --git a/html/namespaces.html b/html/namespaces.html
new file mode 100644
index 0000000..e69de29
diff --git a/html/nearest_8c-example.html b/html/nearest_8c-example.html
new file mode 100644
index 0000000..debce41
--- /dev/null
+++ b/html/nearest_8c-example.html
@@ -0,0 +1,107 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: nearest.c</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>nearest.c</h1>nearest.c How to find the nearest grid points.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00010"></a>00010 <span class="comment">/*</span>
+<a name="l00011"></a>00011 <span class="comment"> * C Implementation: fieldset</span>
+<a name="l00012"></a>00012 <span class="comment"> *</span>
+<a name="l00013"></a>00013 <span class="comment"> * Description: how to use a fieldset.</span>
+<a name="l00014"></a>00014 <span class="comment"> *</span>
+<a name="l00015"></a>00015 <span class="comment"> *</span>
+<a name="l00016"></a>00016 <span class="comment"> * Author: Enrico Fucile</span>
+<a name="l00017"></a>00017 <span class="comment"> *</span>
+<a name="l00018"></a>00018 <span class="comment"> *</span>
+<a name="l00019"></a>00019 <span class="comment"> */</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#include <stdio.h></span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include <stdlib.h></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <string.h></span>
+<a name="l00024"></a>00024 
+<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="grib__api_8h.html" title="Copyright 2005-2016 ECMWF.">grib_api.h</a>"</span>
+<a name="l00026"></a>00026 
+<a name="l00027"></a>00027 <span class="keywordtype">void</span> usage(<span class="keywordtype">char</span>* prog) {
+<a name="l00028"></a>00028   printf(<span class="stringliteral">"Usage: %s grib_file grib_file ...\n"</span>,prog);
+<a name="l00029"></a>00029   exit(1);
+<a name="l00030"></a>00030 }
+<a name="l00031"></a>00031 
+<a name="l00032"></a>00032 <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv) {
+<a name="l00033"></a>00033   <span class="keywordtype">int</span> err = 0;
+<a name="l00034"></a>00034   <span class="keywordtype">long</span> step=0;
+<a name="l00035"></a>00035   <span class="keywordtype">size_t</span> nfiles;
+<a name="l00036"></a>00036   <span class="keywordtype">int</span> i=0;
+<a name="l00037"></a>00037   grib_fieldset* <span class="keyword">set</span>=NULL;
+<a name="l00038"></a>00038   <a name="a0"></a><a class="code" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a>* h=NULL;
+<a name="l00039"></a>00039   <span class="keywordtype">char</span> param[20]={0,};
+<a name="l00040"></a>00040   <span class="keywordtype">size_t</span> len=20;
+<a name="l00041"></a>00041   <span class="keywordtype">double</span> lats[4]={0,};
+<a name="l00042"></a>00042   <span class="keywordtype">double</span> lons[4]={0,};
+<a name="l00043"></a>00043   <span class="keywordtype">double</span> values[4]={0,};
+<a name="l00044"></a>00044   <span class="keywordtype">double</span> distances[4]={0,};
+<a name="l00045"></a>00045   <span class="keywordtype">int</span> indexes[4]={0,};
+<a name="l00046"></a>00046   <span class="keywordtype">char</span>* order_by=<span class="stringliteral">"param,step"</span>;
+<a name="l00047"></a>00047 
+<a name="l00048"></a>00048   <span class="keywordtype">size_t</span> size=4;
+<a name="l00049"></a>00049   <span class="keywordtype">double</span> lat=-40,lon=15;
+<a name="l00050"></a>00050   <span class="keywordtype">int</span> mode=0;
+<a name="l00051"></a>00051   <span class="keywordtype">int</span> count;
+<a name="l00052"></a>00052   <span class="keywordtype">char</span>** filenames;
+<a name="l00053"></a>00053   <a name="a1"></a><a class="code" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a>* nearest=NULL;
+<a name="l00054"></a>00054 
+<a name="l00055"></a>00055   <span class="keywordflow">if</span> (argc < 2) usage(argv[0]);
+<a name="l00056"></a>00056 
+<a name="l00057"></a>00057   nfiles=argc-1;
+<a name="l00058"></a>00058   filenames=(<span class="keywordtype">char</span>**)malloc(<span class="keyword">sizeof</span>(<span class="keywordtype">char</span>*)*nfiles);
+<a name="l00059"></a>00059   <span class="keywordflow">for</span> (i=0;i<nfiles;i++)
+<a name="l00060"></a>00060     filenames[i]=(<span class="keywordtype">char</span>*)strdup(argv[i+1]);
+<a name="l00061"></a>00061 
+<a name="l00062"></a>00062   <span class="keyword">set</span>=grib_fieldset_new_from_files(0,filenames,nfiles,0,0,0,order_by,&err);
+<a name="l00063"></a>00063   GRIB_CHECK(err,0);
+<a name="l00064"></a>00064 
+<a name="l00065"></a>00065   printf(<span class="stringliteral">"\nordering by %s\n"</span>,order_by);
+<a name="l00066"></a>00066   printf(<span class="stringliteral">"\n%d fields in the fieldset\n"</span>,grib_fieldset_count(<span class="keyword">set</span>));
+<a name="l00067"></a>00067   printf(<span class="stringliteral">"n,step,param\n"</span>);
+<a name="l00068"></a>00068 
+<a name="l00069"></a>00069   mode=GRIB_NEAREST_SAME_GRID |  GRIB_NEAREST_SAME_POINT;
+<a name="l00070"></a>00070   count=1;
+<a name="l00071"></a>00071   <span class="keywordflow">while</span> ((h=grib_fieldset_next_handle(<span class="keyword">set</span>,&err))!=NULL) {
+<a name="l00072"></a>00072     GRIB_CHECK(<a name="a2"></a><a class="code" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526" title="Get a long value from a key, if several keys of the same name are present, the last...">grib_get_long</a>(h,<span class="stringliteral">"step"</span>,&step),0);
+<a name="l00073"></a>00073         len=20;
+<a name="l00074"></a>00074     GRIB_CHECK(<a name="a3"></a><a class="code" href="group__get__set.html#g8aeaf9f930eea1cc0f15e92f18a25053" title="Get a string value from a key, if several keys of the same name are present, the...">grib_get_string</a>(h,<span class="stringliteral">"param"</span>,param,&len),0);
+<a name="l00075"></a>00075 
+<a name="l00076"></a>00076     printf(<span class="stringliteral">"%d %ld %s  "</span>,count,step,param);
+<a name="l00077"></a>00077     <span class="keywordflow">if</span> (!nearest) nearest=<a name="a4"></a><a class="code" href="group__iterators.html#g4bd616cf0d0c4f5f147f4a207ddc7687" title="Create a new nearest from a handle, using current geometry .">grib_nearest_new</a>(h,&err);
+<a name="l00078"></a>00078     GRIB_CHECK(err,0);
+<a name="l00079"></a>00079     GRIB_CHECK(<a name="a5"></a><a class="code" href="group__iterators.html#g15043a2482608fb93a0385f3c3e86926" title="Find the 4 nearest points of a latitude longitude point.">grib_nearest_find</a>(nearest,h,lat,lon,mode,lats,lons,values,distances,indexes,&size),0);
+<a name="l00080"></a>00080     <span class="keywordflow">for</span> (i=0;i<4;i++) printf(<span class="stringliteral">"%d %.2f %.2f %g %g - "</span>,
+<a name="l00081"></a>00081          (<span class="keywordtype">int</span>)indexes[i],lats[i],lons[i],distances[i],values[i]);
+<a name="l00082"></a>00082     printf(<span class="stringliteral">"\n"</span>);
+<a name="l00083"></a>00083 
+<a name="l00084"></a>00084     <a name="a6"></a><a class="code" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677" title="Frees a handle, also frees the message if it is not a user message.">grib_handle_delete</a>(h);
+<a name="l00085"></a>00085     count++;
+<a name="l00086"></a>00086   }
+<a name="l00087"></a>00087 
+<a name="l00088"></a>00088   <span class="keywordflow">if</span> (nearest) <a name="a7"></a><a class="code" href="group__iterators.html#g2b3c0069013e1ad7b3e34f30b4659c15" title="Frees an nearest from memory.">grib_nearest_delete</a>(nearest);
+<a name="l00089"></a>00089 
+<a name="l00090"></a>00090   <span class="keywordflow">if</span> (<span class="keyword">set</span>) grib_fieldset_delete(<span class="keyword">set</span>);
+<a name="l00091"></a>00091 
+<a name="l00092"></a>00092   <span class="keywordflow">return</span> 0;
+<a name="l00093"></a>00093 }
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/nearest_8f90-example.html b/html/nearest_8f90-example.html
new file mode 100644
index 0000000..4b615ce
--- /dev/null
+++ b/html/nearest_8f90-example.html
@@ -0,0 +1,104 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: nearest.f90</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>nearest.f90</h1>How to find the nearest grid points.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
+<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+<a name="l00004"></a>00004 ! 
+<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+<a name="l00007"></a>00007 !
+<a name="l00008"></a>00008 !
+<a name="l00009"></a>00009 !  Description: how to use grib_find_nearest and grib_get_element 
+<a name="l00010"></a>00010 !
+<a name="l00011"></a>00011 !
+<a name="l00012"></a>00012 !  Author: Enrico Fucile 
+<a name="l00013"></a>00013 !
+<a name="l00014"></a>00014 !
+<a name="l00015"></a>00015 !
+<a name="l00016"></a>00016 program find
+<a name="l00017"></a>00017   use grib_api
+<a name="l00018"></a>00018   implicit none
+<a name="l00019"></a>00019   integer                                      :: npoints
+<a name="l00020"></a>00020   integer                                      :: infile
+<a name="l00021"></a>00021   integer                                      :: igrib, ios, i
+<a name="l00022"></a>00022   real(8), dimension(:), allocatable  :: lats, lons
+<a name="l00023"></a>00023   real(8), dimension(:), allocatable  :: nearest_lats, nearest_lons
+<a name="l00024"></a>00024   real(8), dimension(:), allocatable  :: distances, values, lsm_values
+<a name="l00025"></a>00025   integer(kind=kindOfInt), dimension(:), allocatable  :: indexes
+<a name="l00026"></a>00026   real(kind=8)                        :: value
+<a name="l00027"></a>00027 
+<a name="l00028"></a>00028 ! initialization
+<a name="l00029"></a>00029   open( unit=1, file=<span class="stringliteral">"../../data/list_points"</span>,form=<span class="stringliteral">"formatted"</span>,action=<span class="stringliteral">"read"</span>)
+<a name="l00030"></a>00030   read(unit=1,fmt=*) npoints
+<a name="l00031"></a>00031   allocate(lats(npoints))
+<a name="l00032"></a>00032   allocate(lons(npoints))
+<a name="l00033"></a>00033   allocate(nearest_lats(npoints))
+<a name="l00034"></a>00034   allocate(nearest_lons(npoints))
+<a name="l00035"></a>00035   allocate(distances(npoints))
+<a name="l00036"></a>00036   allocate(lsm_values(npoints))
+<a name="l00037"></a>00037   allocate(values(npoints))
+<a name="l00038"></a>00038   allocate(indexes(npoints))
+<a name="l00039"></a>00039   do i=1,npoints
+<a name="l00040"></a>00040      read(unit=1,fmt=*, iostat=ios) lats(i), lons(i)
+<a name="l00041"></a>00041      if (ios /= 0) then
+<a name="l00042"></a>00042         npoints = i - 1
+<a name="l00043"></a>00043         exit
+<a name="l00044"></a>00044      end if
+<a name="l00045"></a>00045   end do
+<a name="l00046"></a>00046   close(unit=1)
+<a name="l00047"></a>00047   call grib_open_file(infile, &
+<a name="l00048"></a>00048        '../../data/reduced_gaussian_lsm.grib1','r')
+<a name="l00049"></a>00049   
+<a name="l00050"></a>00050   !     a new grib message is loaded from file
+<a name="l00051"></a>00051   !     igrib is the grib id to be used in subsequent calls
+<a name="l00052"></a>00052   call grib_new_from_file(infile,igrib)
+<a name="l00053"></a>00053   
+<a name="l00054"></a>00054 
+<a name="l00055"></a>00055   call grib_find_nearest(igrib, .true., lats, lons, nearest_lats, nearest_lons,lsm_values, distances, indexes)
+<a name="l00056"></a>00056   call grib_release(igrib)
+<a name="l00057"></a>00057   
+<a name="l00058"></a>00058   call grib_close_file(infile)
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060 ! will apply it to another GRIB
+<a name="l00061"></a>00061   call grib_open_file(infile, &
+<a name="l00062"></a>00062        '../../data/reduced_gaussian_pressure_level.grib1','r')
+<a name="l00063"></a>00063   call grib_new_from_file(infile,igrib)
+<a name="l00064"></a>00064 
+<a name="l00065"></a>00065   call grib_get_element(igrib,<span class="stringliteral">"values"</span>, indexes, values)
+<a name="l00066"></a>00066   call grib_release(igrib)
+<a name="l00067"></a>00067   call grib_close_file(infile)
+<a name="l00068"></a>00068 
+<a name="l00069"></a>00069   do i=1, npoints
+<a name="l00070"></a>00070      print*,lats(i), lons(i), nearest_lats(i), nearest_lons(i), distances(i), lsm_values(i), values(i)
+<a name="l00071"></a>00071   end do
+<a name="l00072"></a>00072 
+<a name="l00073"></a>00073   deallocate(lats)
+<a name="l00074"></a>00074   deallocate(lons)
+<a name="l00075"></a>00075   deallocate(nearest_lats)
+<a name="l00076"></a>00076   deallocate(nearest_lons)
+<a name="l00077"></a>00077   deallocate(distances)
+<a name="l00078"></a>00078   deallocate(lsm_values)
+<a name="l00079"></a>00079   deallocate(values)
+<a name="l00080"></a>00080   deallocate(indexes)
+<a name="l00081"></a>00081 
+<a name="l00082"></a>00082 end program find
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/pages.html b/html/pages.html
new file mode 100644
index 0000000..3afb135
--- /dev/null
+++ b/html/pages.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: Page Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>grib_api Related Pages</h1>Here is a list of all related documentation pages:<ul>
+<li><a class="el" href="keys.html">Grib API keys</a>
+
+<li><a class="el" href="examples.html">Grib API examples</a>
+
+<li><a class="el" href="grib_examples.html">Grib API examples</a>
+
+<li><a class="el" href="modules.html">C interface</a>
+
+<li><a class="el" href="installation.html">grib_api installation</a>
+
+<li><a class="el" href="tools.html">Grib tools</a>
+
+<li><a class="el" href="grib_ls.html">grib_ls</a>
+
+<li><a class="el" href="grib_get.html">grib_get</a>
+
+<li><a class="el" href="grib_get_data.html">grib_get_data</a>
+
+<li><a class="el" href="grib_set.html">grib_set</a>
+
+<li><a class="el" href="grib_dump.html">grib_dump</a>
+
+<li><a class="el" href="grib_dump_examples.html">grib_dump examples</a>
+
+<li><a class="el" href="grib_debug.html">grib_debug</a>
+
+<li><a class="el" href="grib_convert.html">grib_convert</a>
+
+<li><a class="el" href="grib_filter.html">grib_filter</a>
+
+<li><a class="el" href="grib_compare.html">grib_compare</a>
+
+<li><a class="el" href="grib_keys.html">grib_keys</a>
+
+<li><a class="el" href="grib_copy.html">grib_copy</a>
+
+</ul>
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/precision_8c-example.html b/html/precision_8c-example.html
new file mode 100644
index 0000000..b5c045e
--- /dev/null
+++ b/html/precision_8c-example.html
@@ -0,0 +1,138 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: precision.c</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>precision.c</h1>precision.c How to control precision when coding a grib field.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00010"></a>00010 <span class="comment">/*</span>
+<a name="l00011"></a>00011 <span class="comment"> * C Implementation: precision</span>
+<a name="l00012"></a>00012 <span class="comment"> *</span>
+<a name="l00013"></a>00013 <span class="comment"> * Description: how to control decimal precision when packing fields.</span>
+<a name="l00014"></a>00014 <span class="comment"> *</span>
+<a name="l00015"></a>00015 <span class="comment"> *</span>
+<a name="l00016"></a>00016 <span class="comment"> * Author: Enrico Fucile</span>
+<a name="l00017"></a>00017 <span class="comment"> *</span>
+<a name="l00018"></a>00018 <span class="comment"> *</span>
+<a name="l00019"></a>00019 <span class="comment"> */</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <stdio.h></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include <stdlib.h></span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include <math.h></span>
+<a name="l00023"></a>00023 
+<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="grib__api_8h.html" title="Copyright 2005-2016 ECMWF.">grib_api.h</a>"</span>
+<a name="l00025"></a>00025 
+<a name="l00026"></a>00026 <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv) {
+<a name="l00027"></a>00027   <span class="keywordtype">int</span> err = 0;
+<a name="l00028"></a>00028   <span class="keywordtype">size_t</span> size=0;
+<a name="l00029"></a>00029 
+<a name="l00030"></a>00030   FILE* in = NULL;
+<a name="l00031"></a>00031   <span class="keywordtype">char</span>* infile = <span class="stringliteral">"../../data/regular_latlon_surface.grib1"</span>;
+<a name="l00032"></a>00032   FILE* out = NULL;
+<a name="l00033"></a>00033   <span class="keywordtype">char</span>* outfile = <span class="stringliteral">"out.grib1"</span>;
+<a name="l00034"></a>00034   <a name="a0"></a><a class="code" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h = NULL;
+<a name="l00035"></a>00035   <span class="keyword">const</span> <span class="keywordtype">void</span>* buffer = NULL;
+<a name="l00036"></a>00036   <span class="keywordtype">double</span>* values1=NULL;
+<a name="l00037"></a>00037   <span class="keywordtype">double</span>* values2=NULL;
+<a name="l00038"></a>00038   <span class="keywordtype">double</span> maxa=0,a=0;
+<a name="l00039"></a>00039   <span class="keywordtype">double</span> maxv=0,minv=0;
+<a name="l00040"></a>00040   <span class="keywordtype">double</span> maxr=0,r=0;
+<a name="l00041"></a>00041   <span class="keywordtype">long</span> decimalPrecision;
+<a name="l00042"></a>00042   <span class="keywordtype">long</span> bitsPerValue1=0, bitsPerValue2=0;
+<a name="l00043"></a>00043   <span class="keywordtype">int</span> i=0;
+<a name="l00044"></a>00044 
+<a name="l00045"></a>00045   in = fopen(infile,<span class="stringliteral">"r"</span>);
+<a name="l00046"></a>00046   <span class="keywordflow">if</span>(!in) {
+<a name="l00047"></a>00047     printf(<span class="stringliteral">"ERROR: unable to open file %s\n"</span>,infile);
+<a name="l00048"></a>00048     <span class="keywordflow">return</span> 1;
+<a name="l00049"></a>00049   }
+<a name="l00050"></a>00050 
+<a name="l00051"></a>00051   out = fopen(outfile,<span class="stringliteral">"w"</span>);
+<a name="l00052"></a>00052   <span class="keywordflow">if</span>(!in) {
+<a name="l00053"></a>00053     printf(<span class="stringliteral">"ERROR: unable to open file %s\n"</span>,outfile);
+<a name="l00054"></a>00054     <span class="keywordflow">return</span> 1;
+<a name="l00055"></a>00055   }
+<a name="l00056"></a>00056 
+<a name="l00057"></a>00057   <span class="comment">/* create a new handle from a message in a file */</span>
+<a name="l00058"></a>00058   h = <a name="a1"></a><a class="code" href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5" title="Create a handle from a file resource.">grib_handle_new_from_file</a>(0,in,&err);
+<a name="l00059"></a>00059   <span class="keywordflow">if</span> (h == NULL) {
+<a name="l00060"></a>00060     printf(<span class="stringliteral">"Error: unable to create handle from file %s\n"</span>,infile);
+<a name="l00061"></a>00061   }
+<a name="l00062"></a>00062 
+<a name="l00063"></a>00063   <span class="comment">/* bitsPerValue before changing the packing parameters */</span>
+<a name="l00064"></a>00064   GRIB_CHECK(<a name="a2"></a><a class="code" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526" title="Get a long value from a key, if several keys of the same name are present, the last...">grib_get_long</a>(h,<span class="stringliteral">"bitsPerValue"</span>,&bitsPerValue1),0);
+<a name="l00065"></a>00065 
+<a name="l00066"></a>00066   <span class="comment">/* get the size of the values array*/</span>
+<a name="l00067"></a>00067   GRIB_CHECK(<a name="a3"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(h,<span class="stringliteral">"values"</span>,&size),0);
+<a name="l00068"></a>00068 
+<a name="l00069"></a>00069   values1 = malloc(size*<span class="keyword">sizeof</span>(<span class="keywordtype">double</span>));
+<a name="l00070"></a>00070   <span class="comment">/* get data values before changing the packing parameters*/</span>
+<a name="l00071"></a>00071   GRIB_CHECK(<a name="a4"></a><a class="code" href="group__get__set.html#g61f1029d7f37d51f33835e218d58378a" title="Get double array values from a key.">grib_get_double_array</a>(h,<span class="stringliteral">"values"</span>,values1,&size),0);
+<a name="l00072"></a>00072 
+<a name="l00073"></a>00073   <span class="comment">/* changing decimal precition to 2 means that 2 decimal digits</span>
+<a name="l00074"></a>00074 <span class="comment">     are preserved when packing.  */</span>
+<a name="l00075"></a>00075   decimalPrecision=2;
+<a name="l00076"></a>00076   GRIB_CHECK(<a name="a5"></a><a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"changeDecimalPrecision"</span>,decimalPrecision),0);
+<a name="l00077"></a>00077    
+<a name="l00078"></a>00078   <span class="comment">/* bitsPerValue after changing the packing parameters */</span>
+<a name="l00079"></a>00079   GRIB_CHECK(<a class="code" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526" title="Get a long value from a key, if several keys of the same name are present, the last...">grib_get_long</a>(h,<span class="stringliteral">"bitsPerValue"</span>,&bitsPerValue2),0);
+<a name="l00080"></a>00080 
+<a name="l00081"></a>00081   values2 = malloc(size*<span class="keyword">sizeof</span>(<span class="keywordtype">double</span>));
+<a name="l00082"></a>00082   <span class="comment">/* get data values after changing the packing parameters*/</span>
+<a name="l00083"></a>00083   GRIB_CHECK(<a class="code" href="group__get__set.html#g61f1029d7f37d51f33835e218d58378a" title="Get double array values from a key.">grib_get_double_array</a>(h,<span class="stringliteral">"values"</span>,values2,&size),0);
+<a name="l00084"></a>00084 
+<a name="l00085"></a>00085   <span class="comment">/* computing error */</span>
+<a name="l00086"></a>00086   maxa=0;
+<a name="l00087"></a>00087   maxr=0;
+<a name="l00088"></a>00088   maxv=values2[0];
+<a name="l00089"></a>00089   minv=maxv;
+<a name="l00090"></a>00090   <span class="keywordflow">for</span> (i=0;i<size;i++) {
+<a name="l00091"></a>00091      a=fabs(values2[i]-values1[i]);
+<a name="l00092"></a>00092      <span class="keywordflow">if</span> ( values2[i] > maxv ) maxv=values2[i];
+<a name="l00093"></a>00093      <span class="keywordflow">if</span> ( values2[i] < maxv ) minv=values2[i];
+<a name="l00094"></a>00094      <span class="keywordflow">if</span> ( values2[i] !=0 ) r=fabs((values2[i]-values1[i])/values2[i]);
+<a name="l00095"></a>00095      <span class="keywordflow">if</span> ( a > maxa ) maxa=a;
+<a name="l00096"></a>00096      <span class="keywordflow">if</span> ( r > maxr ) maxr=r;
+<a name="l00097"></a>00097   }
+<a name="l00098"></a>00098   printf(<span class="stringliteral">"max absolute error = %g\n"</span>,maxa);
+<a name="l00099"></a>00099   printf(<span class="stringliteral">"max relative error = %g\n"</span>,maxr);
+<a name="l00100"></a>00100   printf(<span class="stringliteral">"min value = %g\n"</span>,minv);
+<a name="l00101"></a>00101   printf(<span class="stringliteral">"max value = %g\n"</span>,maxv);
+<a name="l00102"></a>00102 
+<a name="l00103"></a>00103   printf(<span class="stringliteral">"old number of bits per value=%ld\n"</span>,(<span class="keywordtype">long</span>)bitsPerValue1);
+<a name="l00104"></a>00104   printf(<span class="stringliteral">"new number of bits per value=%ld\n"</span>,(<span class="keywordtype">long</span>)bitsPerValue2);
+<a name="l00105"></a>00105 
+<a name="l00106"></a>00106   <span class="comment">/* get the coded message in a buffer */</span>
+<a name="l00107"></a>00107   GRIB_CHECK(<a name="a6"></a><a class="code" href="group__handling__coded__messages.html#g9d654bd4fc5f422c161edd0a140ea185" title="getting the message attached to a handle">grib_get_message</a>(h,&buffer,&size),0);
+<a name="l00108"></a>00108 
+<a name="l00109"></a>00109   <span class="comment">/* write the buffer in a file*/</span>
+<a name="l00110"></a>00110   <span class="keywordflow">if</span>(fwrite(buffer,1,size,out) != size) 
+<a name="l00111"></a>00111   {
+<a name="l00112"></a>00112      perror(argv[1]);
+<a name="l00113"></a>00113      exit(1);
+<a name="l00114"></a>00114   }
+<a name="l00115"></a>00115 
+<a name="l00116"></a>00116   <span class="comment">/* delete handle */</span>
+<a name="l00117"></a>00117   <a name="a7"></a><a class="code" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677" title="Frees a handle, also frees the message if it is not a user message.">grib_handle_delete</a>(h);
+<a name="l00118"></a>00118 
+<a name="l00119"></a>00119   fclose(in);
+<a name="l00120"></a>00120   fclose(out);
+<a name="l00121"></a>00121 
+<a name="l00122"></a>00122   <span class="keywordflow">return</span> 0;
+<a name="l00123"></a>00123 }
+<a name="l00124"></a>00124 
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/precision_8f90-example.html b/html/precision_8f90-example.html
new file mode 100644
index 0000000..b589c98
--- /dev/null
+++ b/html/precision_8f90-example.html
@@ -0,0 +1,119 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: precision.f90</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>precision.f90</h1>How to control precision when coding a grib field.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
+<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+<a name="l00004"></a>00004 ! 
+<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+<a name="l00007"></a>00007 !
+<a name="l00008"></a>00008 !
+<a name="l00009"></a>00009 !
+<a name="l00010"></a>00010 !  Description: how to control decimal precision when packing fields.
+<a name="l00011"></a>00011 !
+<a name="l00012"></a>00012 !
+<a name="l00013"></a>00013 !  Author: Enrico Fucile 
+<a name="l00014"></a>00014 !
+<a name="l00015"></a>00015 !
+<a name="l00016"></a>00016 !
+<a name="l00017"></a>00017 program precision
+<a name="l00018"></a>00018   use grib_api
+<a name="l00019"></a>00019   implicit none
+<a name="l00020"></a>00020   integer(kind = 4)                             :: size
+<a name="l00021"></a>00021   integer                                       :: infile,outfile
+<a name="l00022"></a>00022   integer                                       :: igrib
+<a name="l00023"></a>00023   real(kind = 8), dimension(:), allocatable     :: values1
+<a name="l00024"></a>00024   real(kind = 8), dimension(:), allocatable     :: values2
+<a name="l00025"></a>00025   real(kind = 8)                                ::  maxa,a,maxv,minv,maxr,r
+<a name="l00026"></a>00026   integer( kind = 4)                            :: decimalPrecision,bitsPerValue1,bitsPerValue2
+<a name="l00027"></a>00027   integer                                       :: i, iret
+<a name="l00028"></a>00028 
+<a name="l00029"></a>00029   call grib_open_file(infile, &
+<a name="l00030"></a>00030        '../../data/regular_latlon_surface_constant.grib1','r')
+<a name="l00031"></a>00031 
+<a name="l00032"></a>00032   call grib_open_file(outfile, &
+<a name="l00033"></a>00033        '../../data/regular_latlon_surface_prec.grib1','w')
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035   !     a new grib message is loaded from file
+<a name="l00036"></a>00036   !     igrib is the grib id to be used in subsequent calls
+<a name="l00037"></a>00037   call grib_new_from_file(infile,igrib)
+<a name="l00038"></a>00038 
+<a name="l00039"></a>00039   !     bitsPerValue before changing the packing parameters
+<a name="l00040"></a>00040   call grib_get(igrib,'bitsPerValue',bitsPerValue1)
+<a name="l00041"></a>00041 
+<a name="l00042"></a>00042   !     get the size of the values array
+<a name="l00043"></a>00043   call <a name="a0"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(igrib,<span class="stringliteral">"values"</span>,size)
+<a name="l00044"></a>00044 
+<a name="l00045"></a>00045   allocate(values1(size), stat=iret)
+<a name="l00046"></a>00046   allocate(values2(size), stat=iret)
+<a name="l00047"></a>00047   !     get data values before changing the packing parameters*/
+<a name="l00048"></a>00048   call grib_get(igrib,<span class="stringliteral">"values"</span>,values1)
+<a name="l00049"></a>00049 
+<a name="l00050"></a>00050   !     setting decimal precision=2 means that 2 decimal digits
+<a name="l00051"></a>00051   !     are preserved when packing.
+<a name="l00052"></a>00052   decimalPrecision=2
+<a name="l00053"></a>00053   call grib_set(igrib,<span class="stringliteral">"changeDecimalPrecision"</span>, &
+<a name="l00054"></a>00054        decimalPrecision)
+<a name="l00055"></a>00055 
+<a name="l00056"></a>00056   !     bitsPerValue after changing the packing parameters
+<a name="l00057"></a>00057   call grib_get(igrib,<span class="stringliteral">"bitsPerValue"</span>,bitsPerValue2)
+<a name="l00058"></a>00058 
+<a name="l00059"></a>00059   !     get data values after changing the packing parameters
+<a name="l00060"></a>00060   call grib_get(igrib,<span class="stringliteral">"values"</span>,values2)
+<a name="l00061"></a>00061 
+<a name="l00062"></a>00062   !     computing error
+<a name="l00063"></a>00063   maxa=0
+<a name="l00064"></a>00064   maxr=0
+<a name="l00065"></a>00065   maxv=values2(1)
+<a name="l00066"></a>00066   minv=maxv
+<a name="l00067"></a>00067   do i=1,size
+<a name="l00068"></a>00068      a=abs(values2(i)-values1(i))
+<a name="l00069"></a>00069      if ( values2(i) .gt. maxv ) maxv=values2(i)
+<a name="l00070"></a>00070      if ( values2(i) .lt. maxv ) minv=values2(i)
+<a name="l00071"></a>00071      if ( values2(i) .ne. 0 ) then
+<a name="l00072"></a>00072         r=abs((values2(i)-values1(i))/values2(i))
+<a name="l00073"></a>00073      endif
+<a name="l00074"></a>00074      if ( a .gt. maxa ) maxa=a
+<a name="l00075"></a>00075      if ( r .gt. maxr ) maxr=r
+<a name="l00076"></a>00076   enddo
+<a name="l00077"></a>00077   write(*,*) <span class="stringliteral">"max absolute error = "</span>,maxa
+<a name="l00078"></a>00078   write(*,*) <span class="stringliteral">"max relative error = "</span>,maxr
+<a name="l00079"></a>00079   write(*,*) <span class="stringliteral">"min value = "</span>,minv
+<a name="l00080"></a>00080   write(*,*) <span class="stringliteral">"max value = "</span>,maxv
+<a name="l00081"></a>00081 
+<a name="l00082"></a>00082   write(*,*) <span class="stringliteral">"old number of bits per value="</span>,bitsPerValue1
+<a name="l00083"></a>00083   write(*,*) <span class="stringliteral">"new number of bits per value="</span>,bitsPerValue2
+<a name="l00084"></a>00084 
+<a name="l00085"></a>00085   !     write modified message to a file
+<a name="l00086"></a>00086   call grib_write(igrib,outfile)
+<a name="l00087"></a>00087 
+<a name="l00088"></a>00088   call grib_release(igrib)
+<a name="l00089"></a>00089 
+<a name="l00090"></a>00090   call grib_close_file(infile)
+<a name="l00091"></a>00091 
+<a name="l00092"></a>00092   call grib_close_file(outfile)
+<a name="l00093"></a>00093 
+<a name="l00094"></a>00094   deallocate(values1)
+<a name="l00095"></a>00095   deallocate(values2)
+<a name="l00096"></a>00096 end program precision
+<a name="l00097"></a>00097 
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/precision__fortran_8_f-example.html b/html/precision__fortran_8_f-example.html
new file mode 100644
index 0000000..ada3bf0
--- /dev/null
+++ b/html/precision__fortran_8_f-example.html
@@ -0,0 +1,118 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: precision_fortran.F</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>precision_fortran.F</h1>precision_fortran.F How to control precision when coding a grib field.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 C Copyright 2005-2016 ECMWF
+<a name="l00002"></a>00002 C This software is licensed under the terms of the Apache Licence Version 2.0
+<a name="l00003"></a>00003 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+<a name="l00004"></a>00004 C 
+<a name="l00005"></a>00005 C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+<a name="l00006"></a>00006 C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+<a name="l00007"></a>00007 C
+<a name="l00008"></a>00008 C
+<a name="l00009"></a>00009 C  Fortran 77 Implementation: precision
+<a name="l00010"></a>00010 C
+<a name="l00011"></a>00011 C  Description: how to control <span class="keyword">decimal precision</span> when packing fields.
+<a name="l00012"></a>00012 C
+<a name="l00013"></a>00013 C
+<a name="l00014"></a>00014 C  Author: Enrico Fucile
+<a name="l00015"></a>00015 C
+<a name="l00016"></a>00016 C
+<a name="l00017"></a>00017 C
+<a name="l00018"></a>00018       program precision
+<a name="l00019"></a>00019       implicit none
+<a name="l00020"></a>00020       integer maxNumberOfValues
+<a name="l00021"></a>00021       parameter (maxNumberOfValues=10000)
+<a name="l00022"></a>00022       include 'grib_api_f77.h'
+<a name="l00023"></a>00023       integer*4 size
+<a name="l00024"></a>00024       integer infile,outfile
+<a name="l00025"></a>00025       integer igrib
+<a name="l00026"></a>00026       real*8 values1(maxNumberOfValues)
+<a name="l00027"></a>00027       real*8 values2(maxNumberOfValues)
+<a name="l00028"></a>00028       real*8 maxa,a,maxv,minv,maxr,r
+<a name="l00029"></a>00029       integer*4 decimalPrecision,bitsPerValue1,bitsPerValue2
+<a name="l00030"></a>00030       integer i
+<a name="l00031"></a>00031 
+<a name="l00032"></a>00032       call grib_check(grib_open_file(infile
+<a name="l00033"></a>00033      X,'../../data/regular_latlon_surface.grib1','r'))
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035       call grib_check(grib_open_file(outfile
+<a name="l00036"></a>00036      X,'../../data/regular_latlon_surface_prec.grib1','w'))
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038 C     a new grib message is loaded from file
+<a name="l00039"></a>00039 C     igrib is the grib <span class="keywordtype">id</span> to be used in subsequent calls
+<a name="l00040"></a>00040       call grib_check(grib_new_from_file(infile,igrib))
+<a name="l00041"></a>00041 
+<a name="l00042"></a>00042 C     bitsPerValue before changing the packing parameters
+<a name="l00043"></a>00043       call grib_check(grib_get_int(igrib,'bitsPerValue',bitsPerValue1))
+<a name="l00044"></a>00044 
+<a name="l00045"></a>00045 C     get the size of the values array
+<a name="l00046"></a>00046       call grib_check(<a name="a0"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(igrib,"values",size))
+<a name="l00047"></a>00047 
+<a name="l00048"></a>00048 C     get data values before changing the packing parameters*/
+<a name="l00049"></a>00049       call grib_check(grib_get_real8_array(igrib,"values",values1,size))
+<a name="l00050"></a>00050 
+<a name="l00051"></a>00051 C     setting decimal precision=2 means that 2 decimal digits
+<a name="l00052"></a>00052 C     are preserved when packing.
+<a name="l00053"></a>00053       decimalPrecision=2
+<a name="l00054"></a>00054       call grib_check(grib_set_int(igrib,"changeDecimalPrecision"
+<a name="l00055"></a>00055      X,decimalPrecision))
+<a name="l00056"></a>00056 
+<a name="l00057"></a>00057 C     bitsPerValue after changing the packing parameters
+<a name="l00058"></a>00058       call grib_check(grib_get_int(igrib,"bitsPerValue",bitsPerValue2))
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060 C     get data values after changing the packing parameters
+<a name="l00061"></a>00061       call grib_check(grib_get_real8_array(igrib,"values",values2,size))
+<a name="l00062"></a>00062 
+<a name="l00063"></a>00063 C     computing error
+<a name="l00064"></a>00064       maxa=0
+<a name="l00065"></a>00065       maxr=0
+<a name="l00066"></a>00066       maxv=values2(1)
+<a name="l00067"></a>00067       minv=maxv
+<a name="l00068"></a>00068       do i=1,size
+<a name="l00069"></a>00069         a=abs(values2(i)-values1(i))
+<a name="l00070"></a>00070         if ( values2(i) .gt. maxv ) maxv=values2(i)
+<a name="l00071"></a>00071         if ( values2(i) .lt. maxv ) minv=values2(i)
+<a name="l00072"></a>00072         if ( values2(i) .ne. 0 ) then
+<a name="l00073"></a>00073          r=abs((values2(i)-values1(i))/values2(i))
+<a name="l00074"></a>00074         endif
+<a name="l00075"></a>00075         if ( a .gt. maxa ) maxa=a
+<a name="l00076"></a>00076         if ( r .gt. maxr ) maxr=r
+<a name="l00077"></a>00077       enddo
+<a name="l00078"></a>00078       write(*,*) "max absolute error = ",maxa
+<a name="l00079"></a>00079       write(*,*) "max relative error = ",maxr
+<a name="l00080"></a>00080       write(*,*) "min value = ",minv
+<a name="l00081"></a>00081       write(*,*) "max value = ",maxv
+<a name="l00082"></a>00082 
+<a name="l00083"></a>00083       write(*,*) "old number of bits per value=",bitsPerValue1
+<a name="l00084"></a>00084       write(*,*) "new number of bits per value=",bitsPerValue2
+<a name="l00085"></a>00085 
+<a name="l00086"></a>00086 C     write modified message to a file
+<a name="l00087"></a>00087       call grib_check(grib_write(igrib,outfile))
+<a name="l00088"></a>00088 
+<a name="l00089"></a>00089       call grib_check(grib_release(igrib))
+<a name="l00090"></a>00090 
+<a name="l00091"></a>00091       call grib_check(grib_close_file(infile))
+<a name="l00092"></a>00092 
+<a name="l00093"></a>00093       call grib_check(grib_close_file(outfile))
+<a name="l00094"></a>00094 
+<a name="l00095"></a>00095       end
+<a name="l00096"></a>00096 
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/print__data_8c-example.html b/html/print__data_8c-example.html
new file mode 100644
index 0000000..dc438e3
--- /dev/null
+++ b/html/print__data_8c-example.html
@@ -0,0 +1,94 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: print_data.c</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>print_data.c</h1>print_data.c How to print all the data from a grib message.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00010"></a>00010 <span class="comment">/*</span>
+<a name="l00011"></a>00011 <span class="comment"> * C Implementation: print_data</span>
+<a name="l00012"></a>00012 <span class="comment"> *</span>
+<a name="l00013"></a>00013 <span class="comment"> * Description: prints all the data contained in a grib file</span>
+<a name="l00014"></a>00014 <span class="comment"> *</span>
+<a name="l00015"></a>00015 <span class="comment"> * Author: Enrico Fucile</span>
+<a name="l00016"></a>00016 <span class="comment"> *</span>
+<a name="l00017"></a>00017 <span class="comment"> *</span>
+<a name="l00018"></a>00018 <span class="comment"> */</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include <stdio.h></span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <stdlib.h></span>
+<a name="l00021"></a>00021 
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="grib__api_8h.html" title="Copyright 2005-2016 ECMWF.">grib_api.h</a>"</span>
+<a name="l00023"></a>00023 
+<a name="l00024"></a>00024 <span class="keywordtype">void</span> usage(<span class="keywordtype">char</span>* prog) {
+<a name="l00025"></a>00025   printf(<span class="stringliteral">"usage: %s filename\n"</span>,prog);
+<a name="l00026"></a>00026   exit(1);
+<a name="l00027"></a>00027 }
+<a name="l00028"></a>00028 
+<a name="l00029"></a>00029 <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv) {
+<a name="l00030"></a>00030   <span class="keywordtype">int</span> err = 0,i;
+<a name="l00031"></a>00031   <span class="keywordtype">double</span> *values = NULL;
+<a name="l00032"></a>00032   <span class="keywordtype">double</span> max,min,average;
+<a name="l00033"></a>00033   <span class="keywordtype">size_t</span> values_len= 0;
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035   FILE* in = NULL;
+<a name="l00036"></a>00036   <span class="keywordtype">char</span>* filename ;
+<a name="l00037"></a>00037   <a name="a0"></a><a class="code" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h = NULL;
+<a name="l00038"></a>00038 
+<a name="l00039"></a>00039   <span class="keywordflow">if</span> (argc<2) usage(argv[0]);
+<a name="l00040"></a>00040   filename=argv[1];
+<a name="l00041"></a>00041 
+<a name="l00042"></a>00042   in = fopen(filename,<span class="stringliteral">"r"</span>);
+<a name="l00043"></a>00043   <span class="keywordflow">if</span>(!in) {
+<a name="l00044"></a>00044     printf(<span class="stringliteral">"ERROR: unable to open file %s\n"</span>,filename);
+<a name="l00045"></a>00045     <span class="keywordflow">return</span> 1;
+<a name="l00046"></a>00046   }
+<a name="l00047"></a>00047 
+<a name="l00048"></a>00048   <span class="comment">/* create new handle from a message in a file*/</span>
+<a name="l00049"></a>00049   h = <a name="a1"></a><a class="code" href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5" title="Create a handle from a file resource.">grib_handle_new_from_file</a>(0,in,&err);
+<a name="l00050"></a>00050   <span class="keywordflow">if</span> (h == NULL) {
+<a name="l00051"></a>00051     printf(<span class="stringliteral">"Error: unable to create handle from file %s\n"</span>,filename);
+<a name="l00052"></a>00052   }
+<a name="l00053"></a>00053 
+<a name="l00054"></a>00054 
+<a name="l00055"></a>00055   <span class="comment">/* get the size of the values array*/</span>
+<a name="l00056"></a>00056   GRIB_CHECK(<a name="a2"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(h,<span class="stringliteral">"values"</span>,&values_len),0);
+<a name="l00057"></a>00057 
+<a name="l00058"></a>00058   values = malloc(values_len*<span class="keyword">sizeof</span>(<span class="keywordtype">double</span>));
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060   <span class="comment">/* get data values*/</span>
+<a name="l00061"></a>00061   GRIB_CHECK(<a name="a3"></a><a class="code" href="group__get__set.html#g61f1029d7f37d51f33835e218d58378a" title="Get double array values from a key.">grib_get_double_array</a>(h,<span class="stringliteral">"values"</span>,values,&values_len),0);
+<a name="l00062"></a>00062 
+<a name="l00063"></a>00063   <span class="keywordflow">for</span>(i = 0; i < values_len; i++)
+<a name="l00064"></a>00064     printf(<span class="stringliteral">"%d  %.10e\n"</span>,i+1,values[i]);
+<a name="l00065"></a>00065 
+<a name="l00066"></a>00066   free(values);
+<a name="l00067"></a>00067 
+<a name="l00068"></a>00068 
+<a name="l00069"></a>00069   GRIB_CHECK(<a name="a4"></a><a class="code" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e" title="Get a double value from a key, if several keys of the same name are present, the...">grib_get_double</a>(h,<span class="stringliteral">"max"</span>,&max),0);
+<a name="l00070"></a>00070   GRIB_CHECK(<a class="code" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e" title="Get a double value from a key, if several keys of the same name are present, the...">grib_get_double</a>(h,<span class="stringliteral">"min"</span>,&min),0);
+<a name="l00071"></a>00071   GRIB_CHECK(<a class="code" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e" title="Get a double value from a key, if several keys of the same name are present, the...">grib_get_double</a>(h,<span class="stringliteral">"average"</span>,&average),0);
+<a name="l00072"></a>00072 
+<a name="l00073"></a>00073   printf(<span class="stringliteral">"%d values found in %s\n"</span>,(<span class="keywordtype">int</span>)values_len,filename);
+<a name="l00074"></a>00074   printf(<span class="stringliteral">"max=%.10e min=%.10e average=%.10e\n"</span>,max,min,average);
+<a name="l00075"></a>00075 
+<a name="l00076"></a>00076   <a name="a5"></a><a class="code" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677" title="Frees a handle, also frees the message if it is not a user message.">grib_handle_delete</a>(h);
+<a name="l00077"></a>00077 
+<a name="l00078"></a>00078   fclose(in);
+<a name="l00079"></a>00079   <span class="keywordflow">return</span> 0;
+<a name="l00080"></a>00080 }
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/print__data_8f90-example.html b/html/print__data_8f90-example.html
new file mode 100644
index 0000000..1a51ec5
--- /dev/null
+++ b/html/print__data_8f90-example.html
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: print_data.f90</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>print_data.f90</h1>How to print all the data contained in a grib file.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
+<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+<a name="l00004"></a>00004 ! 
+<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+<a name="l00007"></a>00007 !
+<a name="l00008"></a>00008 !
+<a name="l00009"></a>00009 !  Description: prints all the data contained in a grib file
+<a name="l00010"></a>00010 !
+<a name="l00011"></a>00011 !
+<a name="l00012"></a>00012 !  Author: Anne Fouilloux
+<a name="l00013"></a>00013 !
+<a name="l00014"></a>00014 !
+<a name="l00015"></a>00015 program print_data
+<a name="l00016"></a>00016 use grib_api
+<a name="l00017"></a>00017 implicit none
+<a name="l00018"></a>00018 integer            :: ifile
+<a name="l00019"></a>00019 integer            :: iret
+<a name="l00020"></a>00020 integer            :: igrib
+<a name="l00021"></a>00021 integer            :: i
+<a name="l00022"></a>00022 real(kind=8), dimension(:), allocatable       :: values
+<a name="l00023"></a>00023 integer(kind=4)    :: numberOfValues
+<a name="l00024"></a>00024 real(kind=8)       :: average
+<a name="l00025"></a>00025 real(kind=8)       :: max
+<a name="l00026"></a>00026 real(kind=8)       :: min
+<a name="l00027"></a>00027 character(len=256) :: error
+<a name="l00028"></a>00028 
+<a name="l00029"></a>00029 call grib_open_file(ifile, &
+<a name="l00030"></a>00030            '../../data/constant_field.grib1','r')
+<a name="l00031"></a>00031 
+<a name="l00032"></a>00032 !     a new grib message is loaded from file
+<a name="l00033"></a>00033 !     igrib is the grib id to be used in subsequent calls
+<a name="l00034"></a>00034       call grib_new_from_file(ifile,igrib)
+<a name="l00035"></a>00035 
+<a name="l00036"></a>00036 
+<a name="l00037"></a>00037 !     get the size of the values array
+<a name="l00038"></a>00038       call <a name="a0"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(igrib,'values',numberOfValues)
+<a name="l00039"></a>00039 
+<a name="l00040"></a>00040 !     get data values
+<a name="l00041"></a>00041   print*, 'number of values ', numberOfValues
+<a name="l00042"></a>00042   allocate(values(numberOfValues), stat=iret)
+<a name="l00043"></a>00043 
+<a name="l00044"></a>00044   call grib_get(igrib,'values',values)
+<a name="l00045"></a>00045 
+<a name="l00046"></a>00046   do i=1,numberOfValues
+<a name="l00047"></a>00047     write(*,*)'  ',i,values(i)
+<a name="l00048"></a>00048   enddo
+<a name="l00049"></a>00049 
+<a name="l00050"></a>00050 
+<a name="l00051"></a>00051   write(*,*)numberOfValues,' values found '
+<a name="l00052"></a>00052 
+<a name="l00053"></a>00053   call grib_get(igrib,'max',max)
+<a name="l00054"></a>00054   write(*,*) 'max=',max
+<a name="l00055"></a>00055   call grib_get(igrib,'min',min)
+<a name="l00056"></a>00056   write(*,*) 'min=',min
+<a name="l00057"></a>00057   call grib_get(igrib,'average',average)
+<a name="l00058"></a>00058   write(*,*) 'average=',average
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060   call grib_release(igrib)
+<a name="l00061"></a>00061 
+<a name="l00062"></a>00062   call grib_close_file(ifile)
+<a name="l00063"></a>00063 
+<a name="l00064"></a>00064   deallocate(values)
+<a name="l00065"></a>00065 
+<a name="l00066"></a>00066 end program print_data
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/print__data__fortran_8_f-example.html b/html/print__data__fortran_8_f-example.html
new file mode 100644
index 0000000..ed14bdd
--- /dev/null
+++ b/html/print__data__fortran_8_f-example.html
@@ -0,0 +1,101 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: print_data_fortran.F</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>print_data_fortran.F</h1>print_data_fortran.F How to print all the data from a grib message.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 C Copyright 2005-2016 ECMWF
+<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+<a name="l00004"></a>00004 ! 
+<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+<a name="l00007"></a>00007 C
+<a name="l00008"></a>00008 C  Fortran 77  Implementation: print_data_fortran
+<a name="l00009"></a>00009 C
+<a name="l00010"></a>00010 C  Description: prints all the data contained in a grib file
+<a name="l00011"></a>00011 C
+<a name="l00012"></a>00012 C  Author: Enrico Fucile
+<a name="l00013"></a>00013 C
+<a name="l00014"></a>00014 C
+<a name="l00015"></a>00015 C
+<a name="l00016"></a>00016       program print_data_fortran
+<a name="l00017"></a>00017       implicit none
+<a name="l00018"></a>00018       integer maxNumberOfValues
+<a name="l00019"></a>00019       parameter( maxNumberOfValues = 100000 )
+<a name="l00020"></a>00020       include 'grib_api_f77.h'
+<a name="l00021"></a>00021       integer ifile
+<a name="l00022"></a>00022       integer iret
+<a name="l00023"></a>00023       integer igrib
+<a name="l00024"></a>00024       integer i
+<a name="l00025"></a>00025       real*8 values(maxNumberOfValues)
+<a name="l00026"></a>00026       integer*4 numberOfValues
+<a name="l00027"></a>00027       real*8 average
+<a name="l00028"></a>00028       real*8 max
+<a name="l00029"></a>00029       real*8 min
+<a name="l00030"></a>00030       character*256 error
+<a name="l00031"></a>00031       integer*4 size
+<a name="l00032"></a>00032 
+<a name="l00033"></a>00033       size=maxNumberOfValues
+<a name="l00034"></a>00034       ifile=5
+<a name="l00035"></a>00035 
+<a name="l00036"></a>00036       iret=grib_open_file(ifile
+<a name="l00037"></a>00037      X,'../../data/constant_field.grib1','r')
+<a name="l00038"></a>00038       call grib_check(iret)
+<a name="l00039"></a>00039 
+<a name="l00040"></a>00040 C     a new grib message is loaded from file
+<a name="l00041"></a>00041 C     igrib is the grib <span class="keywordtype">id</span> to be used in subsequent calls
+<a name="l00042"></a>00042       call grib_check( grib_new_from_file(ifile,igrib) )
+<a name="l00043"></a>00043 
+<a name="l00044"></a>00044 
+<a name="l00045"></a>00045 C     get the size of the values array
+<a name="l00046"></a>00046       call grib_check(<a name="a0"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(igrib,'values',numberOfValues))
+<a name="l00047"></a>00047       if ( numberOfValues .gt. maxNumberOfValues ) then
+<a name="l00048"></a>00048         write(*,*)'ERROR: maxNumberOfValues too small numberOfValues=',
+<a name="l00049"></a>00049      XnumberOfValues
+<a name="l00050"></a>00050             stop
+<a name="l00051"></a>00051       endif
+<a name="l00052"></a>00052 
+<a name="l00053"></a>00053 C     get data values
+<a name="l00054"></a>00054       call grib_check(grib_get_real8_array(igrib,'values',values,size))
+<a name="l00055"></a>00055       if ( size .ne. numberOfValues ) then
+<a name="l00056"></a>00056         write(*,*) 'ERROR: wrong numberOfValues'
+<a name="l00057"></a>00057         stop
+<a name="l00058"></a>00058       endif
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060       do i=1,numberOfValues
+<a name="l00061"></a>00061         write(*,*)'  ',i,values(i)
+<a name="l00062"></a>00062       enddo
+<a name="l00063"></a>00063 
+<a name="l00064"></a>00064       average =average / numberOfValues
+<a name="l00065"></a>00065 
+<a name="l00066"></a>00066       write(*,*)numberOfValues,' values found '
+<a name="l00067"></a>00067 
+<a name="l00068"></a>00068       call grib_check(grib_get_real8(igrib,'max',max))
+<a name="l00069"></a>00069       write(*,*) 'max=',max
+<a name="l00070"></a>00070       call grib_check(grib_get_real8(igrib,'min',min))
+<a name="l00071"></a>00071       write(*,*) 'min=',min
+<a name="l00072"></a>00072       call grib_check(grib_get_real8(igrib,'average',average))
+<a name="l00073"></a>00073       write(*,*) 'average=',average
+<a name="l00074"></a>00074 
+<a name="l00075"></a>00075       call grib_check(grib_release(igrib))
+<a name="l00076"></a>00076 
+<a name="l00077"></a>00077       call grib_check(grib_close_file(ifile))
+<a name="l00078"></a>00078 
+<a name="l00079"></a>00079       end
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/set_8c-example.html b/html/set_8c-example.html
new file mode 100644
index 0000000..3ec5e10
--- /dev/null
+++ b/html/set_8c-example.html
@@ -0,0 +1,100 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: set.c</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>set.c</h1>set.c How to set values through the key names.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00010"></a>00010 <span class="comment">/*</span>
+<a name="l00011"></a>00011 <span class="comment"> * C Implementation: set</span>
+<a name="l00012"></a>00012 <span class="comment"> *</span>
+<a name="l00013"></a>00013 <span class="comment"> * Description: how to set key values.</span>
+<a name="l00014"></a>00014 <span class="comment"> *</span>
+<a name="l00015"></a>00015 <span class="comment"> *</span>
+<a name="l00016"></a>00016 <span class="comment"> * Author: Enrico Fucile</span>
+<a name="l00017"></a>00017 <span class="comment"> *</span>
+<a name="l00018"></a>00018 <span class="comment"> *</span>
+<a name="l00019"></a>00019 <span class="comment"> */</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <stdio.h></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include <stdlib.h></span>
+<a name="l00022"></a>00022 
+<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="grib__api_8h.html" title="Copyright 2005-2016 ECMWF.">grib_api.h</a>"</span>
+<a name="l00024"></a>00024 
+<a name="l00025"></a>00025 <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv) {
+<a name="l00026"></a>00026   <span class="keywordtype">int</span> err = 0;
+<a name="l00027"></a>00027   <span class="keywordtype">long</span> centre=80;
+<a name="l00028"></a>00028   <span class="keywordtype">long</span> long_value=0;
+<a name="l00029"></a>00029   <span class="keywordtype">char</span> string_value[100];
+<a name="l00030"></a>00030   <span class="keywordtype">size_t</span> len = <span class="keyword">sizeof</span>(string_value)/<span class="keyword">sizeof</span>(<span class="keywordtype">char</span>);
+<a name="l00031"></a>00031   <span class="keywordtype">size_t</span> size=0;
+<a name="l00032"></a>00032 
+<a name="l00033"></a>00033   FILE* in = NULL;
+<a name="l00034"></a>00034   <span class="keywordtype">char</span>* infile = <span class="stringliteral">"../../data/regular_latlon_surface.grib1"</span>;
+<a name="l00035"></a>00035   FILE* out = NULL;
+<a name="l00036"></a>00036   <span class="keywordtype">char</span>* outfile = <span class="stringliteral">"out.grib1"</span>;
+<a name="l00037"></a>00037   <a name="a0"></a><a class="code" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h = NULL;
+<a name="l00038"></a>00038   <span class="keyword">const</span> <span class="keywordtype">void</span>* buffer = NULL;
+<a name="l00039"></a>00039 
+<a name="l00040"></a>00040   in = fopen(infile,<span class="stringliteral">"r"</span>);
+<a name="l00041"></a>00041   <span class="keywordflow">if</span>(!in) {
+<a name="l00042"></a>00042     printf(<span class="stringliteral">"ERROR: unable to open file %s\n"</span>,infile);
+<a name="l00043"></a>00043     <span class="keywordflow">return</span> 1;
+<a name="l00044"></a>00044   }
+<a name="l00045"></a>00045 
+<a name="l00046"></a>00046   out = fopen(outfile,<span class="stringliteral">"w"</span>);
+<a name="l00047"></a>00047   <span class="keywordflow">if</span>(!in) {
+<a name="l00048"></a>00048     printf(<span class="stringliteral">"ERROR: unable to open file %s\n"</span>,outfile);
+<a name="l00049"></a>00049     <span class="keywordflow">return</span> 1;
+<a name="l00050"></a>00050   }
+<a name="l00051"></a>00051 
+<a name="l00052"></a>00052   <span class="comment">/* create a new handle from a message in a file */</span>
+<a name="l00053"></a>00053   h = <a name="a1"></a><a class="code" href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5" title="Create a handle from a file resource.">grib_handle_new_from_file</a>(0,in,&err);
+<a name="l00054"></a>00054   <span class="keywordflow">if</span> (h == NULL) {
+<a name="l00055"></a>00055     printf(<span class="stringliteral">"Error: unable to create handle from file %s\n"</span>,infile);
+<a name="l00056"></a>00056   }
+<a name="l00057"></a>00057 
+<a name="l00058"></a>00058   <span class="comment">/* set centre as a long */</span>
+<a name="l00059"></a>00059   GRIB_CHECK(<a name="a2"></a><a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"centre"</span>,centre),0);
+<a name="l00060"></a>00060 
+<a name="l00061"></a>00061   <span class="comment">/* get centre as a long */</span>
+<a name="l00062"></a>00062   GRIB_CHECK(<a name="a3"></a><a class="code" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526" title="Get a long value from a key, if several keys of the same name are present, the last...">grib_get_long</a>(h,<span class="stringliteral">"centre"</span>,&long_value),0);
+<a name="l00063"></a>00063   printf(<span class="stringliteral">"centre long value=%ld\n"</span>,long_value);
+<a name="l00064"></a>00064 
+<a name="l00065"></a>00065   <span class="comment">/* get centre as a string */</span>
+<a name="l00066"></a>00066   GRIB_CHECK(<a name="a4"></a><a class="code" href="group__get__set.html#g8aeaf9f930eea1cc0f15e92f18a25053" title="Get a string value from a key, if several keys of the same name are present, the...">grib_get_string</a>(h,<span class="stringliteral">"centre"</span>,string_value,&len),0);
+<a name="l00067"></a>00067   printf(<span class="stringliteral">"centre string value=%s\n"</span>,string_value);
+<a name="l00068"></a>00068 
+<a name="l00069"></a>00069   <span class="comment">/* get the coded message in a buffer */</span>
+<a name="l00070"></a>00070   GRIB_CHECK(<a name="a5"></a><a class="code" href="group__handling__coded__messages.html#g9d654bd4fc5f422c161edd0a140ea185" title="getting the message attached to a handle">grib_get_message</a>(h,&buffer,&size),0);
+<a name="l00071"></a>00071 
+<a name="l00072"></a>00072   <span class="comment">/* write the buffer in a file*/</span>
+<a name="l00073"></a>00073   <span class="keywordflow">if</span>(fwrite(buffer,1,size,out) != size) 
+<a name="l00074"></a>00074   {
+<a name="l00075"></a>00075      perror(argv[1]);
+<a name="l00076"></a>00076      exit(1);
+<a name="l00077"></a>00077   }
+<a name="l00078"></a>00078 
+<a name="l00079"></a>00079   <span class="comment">/* delete handle */</span>
+<a name="l00080"></a>00080   <a name="a6"></a><a class="code" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677" title="Frees a handle, also frees the message if it is not a user message.">grib_handle_delete</a>(h);
+<a name="l00081"></a>00081 
+<a name="l00082"></a>00082   fclose(in);
+<a name="l00083"></a>00083   fclose(out);
+<a name="l00084"></a>00084 
+<a name="l00085"></a>00085   <span class="keywordflow">return</span> 0;
+<a name="l00086"></a>00086 }
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/set_8f90-example.html b/html/set_8f90-example.html
new file mode 100644
index 0000000..0a93ce9
--- /dev/null
+++ b/html/set_8f90-example.html
@@ -0,0 +1,107 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: set.f90</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>set.f90</h1>How to set values through the key names.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
+<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+<a name="l00004"></a>00004 ! 
+<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+<a name="l00007"></a>00007 !
+<a name="l00008"></a>00008 !
+<a name="l00009"></a>00009 !  Description: how to <span class="keyword">set</span> key values.
+<a name="l00010"></a>00010 !
+<a name="l00011"></a>00011 !
+<a name="l00012"></a>00012 !  Author: Anne Fouilloux                            
+<a name="l00013"></a>00013 !
+<a name="l00014"></a>00014 !
+<a name="l00015"></a>00015 program <span class="keyword">set</span>
+<a name="l00016"></a>00016   use grib_api
+<a name="l00017"></a>00017   implicit none
+<a name="l00018"></a>00018   integer(kind = 4)    :: centre, date
+<a name="l00019"></a>00019   integer              :: infile,outfile
+<a name="l00020"></a>00020   integer              :: igrib
+<a name="l00021"></a>00021 
+<a name="l00022"></a>00022 
+<a name="l00023"></a>00023   centre = 80
+<a name="l00024"></a>00024   call current_date(date)
+<a name="l00025"></a>00025   call grib_open_file(infile, &
+<a name="l00026"></a>00026        '../../data/regular_latlon_surface_constant.grib1','r')
+<a name="l00027"></a>00027 
+<a name="l00028"></a>00028   call grib_open_file(outfile, &
+<a name="l00029"></a>00029        'out.grib1','w')
+<a name="l00030"></a>00030 
+<a name="l00031"></a>00031   !     a new grib message is loaded from file
+<a name="l00032"></a>00032   !     igrib is the grib id to be used in subsequent calls
+<a name="l00033"></a>00033   call grib_new_from_file(infile,igrib)
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035   call grib_set(igrib,'date',date)
+<a name="l00036"></a>00036   !     set centre as a integer */
+<a name="l00037"></a>00037   call grib_set(igrib,'centre',centre)
+<a name="l00038"></a>00038 
+<a name="l00039"></a>00039 ! check if it is correct in the actual GRIB message
+<a name="l00040"></a>00040 
+<a name="l00041"></a>00041   call check_settings(igrib)
+<a name="l00042"></a>00042 
+<a name="l00043"></a>00043   !     write modified message to a file
+<a name="l00044"></a>00044   call grib_write(igrib,outfile)
+<a name="l00045"></a>00045 
+<a name="l00046"></a>00046   call grib_release(igrib)
+<a name="l00047"></a>00047 
+<a name="l00048"></a>00048   call grib_close_file(infile)
+<a name="l00049"></a>00049 
+<a name="l00050"></a>00050   call grib_close_file(outfile)
+<a name="l00051"></a>00051 
+<a name="l00052"></a>00052 contains
+<a name="l00053"></a>00053 
+<a name="l00054"></a>00054 !======================================
+<a name="l00055"></a>00055 subroutine current_date(date)
+<a name="l00056"></a>00056 integer, intent(out) :: date
+<a name="l00057"></a>00057 
+<a name="l00058"></a>00058 integer              :: val_date(8)
+<a name="l00059"></a>00059 call date_and_time ( values = val_date)
+<a name="l00060"></a>00060 
+<a name="l00061"></a>00061 date = val_date(1)* 10000 + val_date(2)*100 + val_date(3) 
+<a name="l00062"></a>00062 end subroutine current_date
+<a name="l00063"></a>00063 !======================================
+<a name="l00064"></a>00064 subroutine check_settings(gribid)
+<a name="l00065"></a>00065   use grib_api
+<a name="l00066"></a>00066   implicit none
+<a name="l00067"></a>00067   integer, intent(in) :: gribid
+<a name="l00068"></a>00068   
+<a name="l00069"></a>00069   integer(kind = 4)    :: int_value
+<a name="l00070"></a>00070   character(len = 10)  :: string_value
+<a name="l00071"></a>00071 
+<a name="l00072"></a>00072   !     get centre as a integer
+<a name="l00073"></a>00073   call grib_get(gribid,'centre',int_value)
+<a name="l00074"></a>00074   write(*,*) <span class="stringliteral">"get centre as a integer - centre = "</span>,int_value
+<a name="l00075"></a>00075   
+<a name="l00076"></a>00076   !     get centre as a string
+<a name="l00077"></a>00077   call grib_get(gribid,'centre',string_value)
+<a name="l00078"></a>00078   write(*,*) <span class="stringliteral">"get centre as a string  - centre = "</span>,string_value
+<a name="l00079"></a>00079   
+<a name="l00080"></a>00080   !     get date as a string
+<a name="l00081"></a>00081   call grib_get(gribid,'dataDate',string_value)
+<a name="l00082"></a>00082   write(*,*) <span class="stringliteral">"get date as a string    - date = "</span>,string_value
+<a name="l00083"></a>00083   
+<a name="l00084"></a>00084 end subroutine check_settings
+<a name="l00085"></a>00085 end program set
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/set__bitmap_8f90-example.html b/html/set__bitmap_8f90-example.html
new file mode 100644
index 0000000..a723bc7
--- /dev/null
+++ b/html/set__bitmap_8f90-example.html
@@ -0,0 +1,102 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: set_bitmap.f90</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>set_bitmap.f90</h1>How to set and use a bitmap.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
+<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+<a name="l00004"></a>00004 ! 
+<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+<a name="l00007"></a>00007 !
+<a name="l00008"></a>00008 !
+<a name="l00009"></a>00009 !  Description: how to <span class="keyword">set</span> a bitmap in a grib message 
+<a name="l00010"></a>00010 !
+<a name="l00011"></a>00011 !
+<a name="l00012"></a>00012 !  Author: Enrico Fucile 
+<a name="l00013"></a>00013 !
+<a name="l00014"></a>00014 !
+<a name="l00015"></a>00015 program set_bitmap
+<a name="l00016"></a>00016   use grib_api
+<a name="l00017"></a>00017   implicit none
+<a name="l00018"></a>00018   integer                         :: infile,outfile
+<a name="l00019"></a>00019   integer                         :: igrib, iret
+<a name="l00020"></a>00020   integer                         :: numberOfValues
+<a name="l00021"></a>00021   real, dimension(:), allocatable :: values
+<a name="l00022"></a>00022   real                            :: missingValue
+<a name="l00023"></a>00023   logical                         :: grib1Example
+<a name="l00024"></a>00024 
+<a name="l00025"></a>00025   grib1Example=.true.
+<a name="l00026"></a>00026 
+<a name="l00027"></a>00027   <span class="keywordflow">if</span> (grib1Example) then
+<a name="l00028"></a>00028     ! GRIB 1 example
+<a name="l00029"></a>00029     call grib_open_file(infile,'../../data/regular_latlon_surface.grib1<span class="charliteral">','</span>r')
+<a name="l00030"></a>00030   else
+<a name="l00031"></a>00031     ! GRIB 2 example
+<a name="l00032"></a>00032     call grib_open_file(infile,'../../data/regular_latlon_surface.grib2','r')
+<a name="l00033"></a>00033   end if
+<a name="l00034"></a>00034   
+<a name="l00035"></a>00035   call grib_open_file(outfile,'out.grib','w')
+<a name="l00036"></a>00036   
+<a name="l00037"></a>00037   !     a new grib message is loaded from file
+<a name="l00038"></a>00038   !     igrib is the grib <span class="keywordtype">id</span> to be used in subsequent calls
+<a name="l00039"></a>00039   call grib_new_from_file(infile,igrib)
+<a name="l00040"></a>00040   
+<a name="l00041"></a>00041   ! The missingValue is not coded in the message. 
+<a name="l00042"></a>00042   ! It is a value we define as a placeholder for a missing value
+<a name="l00043"></a>00043   ! in a point of the grid.
+<a name="l00044"></a>00044   ! It should be choosen in a way that it cannot be confused 
+<a name="l00045"></a>00045   ! with a valid field value
+<a name="l00046"></a>00046   missingValue=9999
+<a name="l00047"></a>00047   call grib_set(igrib, 'missingValue',missingValue)
+<a name="l00048"></a>00048   write(*,*) 'missingValue=',missingValue
+<a name="l00049"></a>00049 
+<a name="l00050"></a>00050   ! get the size of the values array
+<a name="l00051"></a>00051   call <a name="a0"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(igrib,'values',numberOfValues)
+<a name="l00052"></a>00052   write(*,*) 'numberOfValues=',numberOfValues
+<a name="l00053"></a>00053   
+<a name="l00054"></a>00054   allocate(values(numberOfValues), stat=iret)
+<a name="l00055"></a>00055 
+<a name="l00056"></a>00056   ! get data values
+<a name="l00057"></a>00057   call grib_get(igrib,'values',values)
+<a name="l00058"></a>00058   
+<a name="l00059"></a>00059   ! enable bitmap 
+<a name="l00060"></a>00060   call grib_set(igrib,"bitmapPresent",1)
+<a name="l00061"></a>00061 
+<a name="l00062"></a>00062   ! some values are missing
+<a name="l00063"></a>00063   values(1:10) = missingValue
+<a name="l00064"></a>00064 
+<a name="l00065"></a>00065   ! set the values (the bitmap will be automatically built)
+<a name="l00066"></a>00066   call grib_set(igrib,'values', values)
+<a name="l00067"></a>00067 
+<a name="l00068"></a>00068   !  write modified message to a file
+<a name="l00069"></a>00069   call grib_write(igrib,outfile)
+<a name="l00070"></a>00070   
+<a name="l00071"></a>00071   ! FREE MEMORY
+<a name="l00072"></a>00072   call grib_release(igrib)
+<a name="l00073"></a>00073   
+<a name="l00074"></a>00074   call grib_close_file(infile)
+<a name="l00075"></a>00075 
+<a name="l00076"></a>00076   call grib_close_file(outfile)
+<a name="l00077"></a>00077 
+<a name="l00078"></a>00078   deallocate(values)
+<a name="l00079"></a>00079 
+<a name="l00080"></a>00080 end program set_bitmap
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/set__fortran_8_f-example.html b/html/set__fortran_8_f-example.html
new file mode 100644
index 0000000..aa2fd95
--- /dev/null
+++ b/html/set__fortran_8_f-example.html
@@ -0,0 +1,89 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: set_fortran.F</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>set_fortran.F</h1>set_fortran.F How to set values through the key names.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 C Copyright 2005-2016 ECMWF
+<a name="l00002"></a>00002 C This software is licensed under the terms of the Apache Licence Version 2.0
+<a name="l00003"></a>00003 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+<a name="l00004"></a>00004 C 
+<a name="l00005"></a>00005 C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+<a name="l00006"></a>00006 C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+<a name="l00007"></a>00007 C
+<a name="l00008"></a>00008 C
+<a name="l00009"></a>00009 C  Fortran 77 Implementation: set_fortran
+<a name="l00010"></a>00010 C
+<a name="l00011"></a>00011 C  Description: how to <span class="keyword">set</span> key values.
+<a name="l00012"></a>00012 C
+<a name="l00013"></a>00013 C
+<a name="l00014"></a>00014 C  Author: Enrico Fucile
+<a name="l00015"></a>00015 C
+<a name="l00016"></a>00016 C
+<a name="l00017"></a>00017 C
+<a name="l00018"></a>00018       program <span class="keyword">set</span>
+<a name="l00019"></a>00019       implicit none
+<a name="l00020"></a>00020       include 'grib_api_f77.h'
+<a name="l00021"></a>00021       integer err
+<a name="l00022"></a>00022       integer*4 centre
+<a name="l00023"></a>00023       integer*4 int_value
+<a name="l00024"></a>00024       character*10 string_value
+<a name="l00025"></a>00025       character*20 string_centre
+<a name="l00026"></a>00026       integer len
+<a name="l00027"></a>00027       integer size
+<a name="l00028"></a>00028       integer infile,outfile
+<a name="l00029"></a>00029       integer igrib,iret
+<a name="l00030"></a>00030       character*256 error
+<a name="l00031"></a>00031 
+<a name="l00032"></a>00032       infile=5
+<a name="l00033"></a>00033       outfile=6
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035       call grib_check(grib_open_file(infile
+<a name="l00036"></a>00036      X,'../../data/regular_latlon_surface.grib1<span class="charliteral">','</span>r'))
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038       call grib_check(grib_open_file(outfile
+<a name="l00039"></a>00039      X,'../../data/out.grib1','w'))
+<a name="l00040"></a>00040 
+<a name="l00041"></a>00041 C     a new grib message is loaded from file
+<a name="l00042"></a>00042 C     igrib is the grib <span class="keywordtype">id</span> to be used in subsequent calls
+<a name="l00043"></a>00043       call grib_check(grib_new_from_file(infile,igrib))
+<a name="l00044"></a>00044 
+<a name="l00045"></a>00045 C     set centre as a <span class="keywordtype">long</span> */
+<a name="l00046"></a>00046       centre=80
+<a name="l00047"></a>00047       call grib_check(grib_set_int(igrib,'centre',centre))
+<a name="l00048"></a>00048 
+<a name="l00049"></a>00049 C     get centre as a integer*4
+<a name="l00050"></a>00050       call grib_check(grib_get_int(igrib,'centre',int_value))
+<a name="l00051"></a>00051       write(*,*) 'centre=',int_value
+<a name="l00052"></a>00052 
+<a name="l00053"></a>00053 C     get centre as a <span class="keywordtype">string</span>
+<a name="l00054"></a>00054       call grib_check(<a name="a0"></a><a class="code" href="group__get__set.html#g8aeaf9f930eea1cc0f15e92f18a25053" title="Get a string value from a key, if several keys of the same name are present, the...">grib_get_string</a>(igrib,'centre',string_value))
+<a name="l00055"></a>00055       string_centre='centre='<span class="comment">//string_value</span>
+<a name="l00056"></a>00056       write(*,*) string_centre
+<a name="l00057"></a>00057 
+<a name="l00058"></a>00058 C     write modified message to a file
+<a name="l00059"></a>00059       call grib_check(grib_write(igrib,outfile))
+<a name="l00060"></a>00060 
+<a name="l00061"></a>00061       call grib_check(grib_release(igrib))
+<a name="l00062"></a>00062 
+<a name="l00063"></a>00063       call grib_check(grib_close_file(infile))
+<a name="l00064"></a>00064 
+<a name="l00065"></a>00065       call grib_check(grib_close_file(outfile))
+<a name="l00066"></a>00066 
+<a name="l00067"></a>00067       end
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/set__missing_8f90-example.html b/html/set__missing_8f90-example.html
new file mode 100644
index 0000000..4e3ec85
--- /dev/null
+++ b/html/set__missing_8f90-example.html
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: set_missing.f90</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>set_missing.f90</h1>How to set a missing value in the header.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
+<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+<a name="l00004"></a>00004 ! 
+<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+<a name="l00007"></a>00007 !
+<a name="l00008"></a>00008 !
+<a name="l00009"></a>00009 !  Description: how to <span class="keyword">set</span> missing a key value.
+<a name="l00010"></a>00010 !
+<a name="l00011"></a>00011 !
+<a name="l00012"></a>00012 !  Author: Enrico Fucile
+<a name="l00013"></a>00013 !
+<a name="l00014"></a>00014 !
+<a name="l00015"></a>00015 !
+<a name="l00016"></a>00016 program <span class="keyword">set</span>
+<a name="l00017"></a>00017   use grib_api
+<a name="l00018"></a>00018   implicit none
+<a name="l00019"></a>00019   integer              :: infile,outfile
+<a name="l00020"></a>00020   integer              :: igrib
+<a name="l00021"></a>00021 
+<a name="l00022"></a>00022   infile=5
+<a name="l00023"></a>00023   outfile=6
+<a name="l00024"></a>00024 
+<a name="l00025"></a>00025   call grib_open_file(infile, &
+<a name="l00026"></a>00026        '../../data/reduced_gaussian_pressure_level.grib2<span class="charliteral">','</span>r')
+<a name="l00027"></a>00027 
+<a name="l00028"></a>00028   call grib_open_file(outfile, &
+<a name="l00029"></a>00029        'out_surface_level.grib2','w')
+<a name="l00030"></a>00030 
+<a name="l00031"></a>00031   !     a new grib message is loaded from file
+<a name="l00032"></a>00032   !     igrib is the grib <span class="keywordtype">id</span> to be used in subsequent calls
+<a name="l00033"></a>00033   call grib_new_from_file(infile,igrib)
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035   call grib_set(igrib,'typeOfFirstFixedSurface','sfc')
+<a name="l00036"></a>00036   call grib_set_missing(igrib,'scaleFactorOfFirstFixedSurface')
+<a name="l00037"></a>00037   call grib_set_missing(igrib,'scaledValueOfFirstFixedSurface')
+<a name="l00038"></a>00038 
+<a name="l00039"></a>00039   call grib_write(igrib,outfile)
+<a name="l00040"></a>00040 
+<a name="l00041"></a>00041   call grib_release(igrib)
+<a name="l00042"></a>00042 
+<a name="l00043"></a>00043   call grib_close_file(infile)
+<a name="l00044"></a>00044 
+<a name="l00045"></a>00045   call grib_close_file(outfile)
+<a name="l00046"></a>00046 
+<a name="l00047"></a>00047 end program set
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/set__pv_8f90-example.html b/html/set__pv_8f90-example.html
new file mode 100644
index 0000000..8c2ef4f
--- /dev/null
+++ b/html/set__pv_8f90-example.html
@@ -0,0 +1,96 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: set_pv.f90</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1>set_pv.f90</h1>How to set the list of levels.<p>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
+<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+<a name="l00004"></a>00004 ! 
+<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+<a name="l00007"></a>00007 !
+<a name="l00008"></a>00008 !
+<a name="l00009"></a>00009 !  Description: how to <span class="keyword">set</span> pv values.
+<a name="l00010"></a>00010 !
+<a name="l00011"></a>00011 !
+<a name="l00012"></a>00012 !  Author: Anne Fouilloux
+<a name="l00013"></a>00013 !
+<a name="l00014"></a>00014 !
+<a name="l00015"></a>00015 program set_pv
+<a name="l00016"></a>00016   use grib_api
+<a name="l00017"></a>00017   implicit none
+<a name="l00018"></a>00018   integer                         :: numberOfLevels
+<a name="l00019"></a>00019   integer                         :: numberOfCoefficients
+<a name="l00020"></a>00020   integer                         :: outfile, igrib
+<a name="l00021"></a>00021   integer                         :: i, ios
+<a name="l00022"></a>00022   real, dimension(:),allocatable  :: pv
+<a name="l00023"></a>00023   
+<a name="l00024"></a>00024   numberOfLevels=60
+<a name="l00025"></a>00025   numberOfCoefficients=2*(numberOfLevels+1)
+<a name="l00026"></a>00026 
+<a name="l00027"></a>00027   allocate(pv(numberOfCoefficients))
+<a name="l00028"></a>00028 
+<a name="l00029"></a>00029   ! read the model level coefficients from file
+<a name="l00030"></a>00030   open( unit=1, file=<span class="stringliteral">"../../data/60_model_levels"</span>, &
+<a name="l00031"></a>00031                 form=<span class="stringliteral">"formatted"</span>,action=<span class="stringliteral">"read"</span>)
+<a name="l00032"></a>00032 
+<a name="l00033"></a>00033   <span class="keywordflow">do</span> i=1,numberOfCoefficients,2
+<a name="l00034"></a>00034      read(unit=1,fmt=*, iostat=ios) pv(i), pv(i+1)
+<a name="l00035"></a>00035      if (ios /= 0) then
+<a name="l00036"></a>00036         print *, "I/O error: ",ios
+<a name="l00037"></a>00037         exit
+<a name="l00038"></a>00038      end if
+<a name="l00039"></a>00039   end do
+<a name="l00040"></a>00040   
+<a name="l00041"></a>00041   ! print coefficients
+<a name="l00042"></a>00042   !do i=1,numberOfCoefficients,2
+<a name="l00043"></a>00043   !  print *,"  a=",pv(i)," b=",pv(i+1)
+<a name="l00044"></a>00044   !end do
+<a name="l00045"></a>00045 
+<a name="l00046"></a>00046   close(unit=1)
+<a name="l00047"></a>00047 
+<a name="l00048"></a>00048   call grib_open_file(outfile, 'out.grib1','w')
+<a name="l00049"></a>00049   
+<a name="l00050"></a>00050   !     a new grib message is loaded from file
+<a name="l00051"></a>00051   !     igrib is the grib <span class="keywordtype">id</span> to be used in subsequent calls
+<a name="l00052"></a>00052   call grib_new_from_samples(igrib, "reduced_gg_sfc_grib1")
+<a name="l00053"></a>00053 
+<a name="l00054"></a>00054   !     set levtype to ml (model level)
+<a name="l00055"></a>00055   call grib_set(igrib,'levtype','ml')
+<a name="l00056"></a>00056 
+<a name="l00057"></a>00057   !     set level 
+<a name="l00058"></a>00058   call grib_set(igrib,'level',2)
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060   !     set PVPresent as an integer 
+<a name="l00061"></a>00061   call grib_set(igrib,'PVPresent',1)
+<a name="l00062"></a>00062   
+<a name="l00063"></a>00063   call grib_set(igrib,'pv',pv)
+<a name="l00064"></a>00064   
+<a name="l00065"></a>00065   !     write modified message to a file
+<a name="l00066"></a>00066   call grib_write(igrib,outfile)
+<a name="l00067"></a>00067   
+<a name="l00068"></a>00068   !  FREE MEMORY
+<a name="l00069"></a>00069   call grib_release(igrib)
+<a name="l00070"></a>00070   deallocate(pv)
+<a name="l00071"></a>00071 
+<a name="l00072"></a>00072   call grib_close_file(outfile)
+<a name="l00073"></a>00073   
+<a name="l00074"></a>00074 end program set_pv
+</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/html/tab_b.gif b/html/tab_b.gif
new file mode 100644
index 0000000..0d62348
Binary files /dev/null and b/html/tab_b.gif differ
diff --git a/html/tab_l.gif b/html/tab_l.gif
new file mode 100644
index 0000000..9b1e633
Binary files /dev/null and b/html/tab_l.gif differ
diff --git a/html/tab_r.gif b/html/tab_r.gif
new file mode 100644
index 0000000..ce9dd9f
Binary files /dev/null and b/html/tab_r.gif differ
diff --git a/html/tabs.css b/html/tabs.css
new file mode 100644
index 0000000..c37faaf
--- /dev/null
+++ b/html/tabs.css
@@ -0,0 +1,102 @@
+/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
+
+DIV.tabs
+{
+   float            : left;
+   width            : 100%;
+   background       : url("tab_b.gif") repeat-x bottom;
+   margin-bottom    : 4px;
+}
+
+DIV.tabs UL
+{
+   margin           : 0px;
+   padding-left     : 10px;
+   list-style       : none;
+}
+
+DIV.tabs LI, DIV.tabs FORM
+{
+   display          : inline;
+   margin           : 0px;
+   padding          : 0px;
+}
+
+DIV.tabs FORM
+{
+   float            : right;
+}
+
+DIV.tabs A
+{
+   float            : left;
+   background       : url("tab_r.gif") no-repeat right top;
+   border-bottom    : 1px solid #84B0C7;
+   font-size        : x-small;
+   font-weight      : bold;
+   text-decoration  : none;
+}
+
+DIV.tabs A:hover
+{
+   background-position: 100% -150px;
+}
+
+DIV.tabs A:link, DIV.tabs A:visited,
+DIV.tabs A:active, DIV.tabs A:hover
+{
+       color: #1A419D;
+}
+
+DIV.tabs SPAN
+{
+   float            : left;
+   display          : block;
+   background       : url("tab_l.gif") no-repeat left top;
+   padding          : 5px 9px;
+   white-space      : nowrap;
+}
+
+DIV.tabs INPUT
+{
+   float            : right;
+   display          : inline;
+   font-size        : 1em;
+}
+
+DIV.tabs TD
+{
+   font-size        : x-small;
+   font-weight      : bold;
+   text-decoration  : none;
+}
+
+
+
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+DIV.tabs SPAN {float : none;}
+/* End IE5-Mac hack */
+
+DIV.tabs A:hover SPAN
+{
+   background-position: 0% -150px;
+}
+
+DIV.tabs LI.current A
+{
+   background-position: 100% -150px;
+   border-width     : 0px;
+}
+
+DIV.tabs LI.current SPAN
+{
+   background-position: 0% -150px;
+   padding-bottom   : 6px;
+}
+
+DIV.nav
+{
+   background       : none;
+   border           : none;
+   border-bottom    : 1px solid #84B0C7;
+}
diff --git a/html/tools.html b/html/tools.html
new file mode 100644
index 0000000..f8a189f
--- /dev/null
+++ b/html/tools.html
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>grib_api: Grib tools</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.3 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+    <li><a href="examples.html"><span>Examples</span></a></li>
+  </ul>
+</div>
+<h1><a class="anchor" name="tools">Grib tools</a></h1>The following command line tools are provided to help users in all interactive and batch processing of grib data.<br>
+ Use of the tools is recommended whenever possible. They provide a ready and tested solution for many situations and their use will avoid the need to write new cod and thus speeding up your work.<br>
+ To make easier their use the tools are provided with a common set of options so that it's quick to apply the same options to different tools. We suggest to begin with <a class="el" href="grib_dump.html">grib_dump</a>, <a class="el" href="grib_ls.html">grib_ls</a> and <a class="el" href="grib_get.html">grib_get</a> to inspect the content of some files and then to learn about the other tools to change the content of the grib message (<a class="el" href="grib_set.html">grib_set</a>, <a cla [...]
+<ul>
+<li><a class="el" href="grib_dump.html">grib_dump</a></li><li><a class="el" href="grib_ls.html">grib_ls</a></li><li><a class="el" href="grib_get.html">grib_get</a></li><li><a class="el" href="grib_copy.html">grib_copy</a></li><li><a class="el" href="grib_set.html">grib_set</a></li><li><a class="el" href="grib_convert.html">grib_convert</a></li><li><a class="el" href="grib_filter.html">grib_filter</a></li><li><a class="el" href="grib_compare.html">grib_compare</a></li><li><a class="el" hr [...]
+<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</body>
+</html>
diff --git a/ifs_samples/CMakeLists.txt b/ifs_samples/CMakeLists.txt
index 7a49750..eb2507a 100644
--- a/ifs_samples/CMakeLists.txt
+++ b/ifs_samples/CMakeLists.txt
@@ -1,3 +1,19 @@
+function( install_samples samples destination_install destination_build )
+  set( _samples ${${samples}} )
+  # To install the samples
+  install( FILES  ${_samples}
+           DESTINATION ${destination_install}
+           PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ )
+
+  # To symlink the samples to the build-dir for developers
+  execute_process( COMMAND ${CMAKE_COMMAND} -E make_directory ${destination_build} )
+  foreach( _file ${_samples} )
+    get_filename_component(_filename ${_file} NAME)
+    execute_process( COMMAND ${CMAKE_COMMAND} -E create_symlink 
+       ${_file} ${destination_build}/${_filename} )
+  endforeach()
+endfunction()
+
 add_subdirectory( grib1 )
 
 add_subdirectory( grib1_mlgrib2 )
diff --git a/ifs_samples/grib1/CMakeLists.txt b/ifs_samples/grib1/CMakeLists.txt
index 484e3e4..9a8b4e9 100644
--- a/ifs_samples/grib1/CMakeLists.txt
+++ b/ifs_samples/grib1/CMakeLists.txt
@@ -1,15 +1,13 @@
 set( _basedir grib1 )
+set( _destination_install ${CMAKE_INSTALL_PREFIX}/${ECCODES_IFS_SAMPLES_SUFF}/${_basedir} )
+set( _destination_build   ${CMAKE_BINARY_DIR}/${ECCODES_IFS_SAMPLES_SUFF}/${_basedir} )
 
 list( APPEND ifs_samples_${_basedir}
-      gg_ml.tmpl
-      gg_sfc.tmpl
-      sh_ml.tmpl
-      sh_sfc.tmpl
+      ${CMAKE_CURRENT_SOURCE_DIR}/gg_ml.tmpl
+      ${CMAKE_CURRENT_SOURCE_DIR}/gg_sfc.tmpl
+      ${CMAKE_CURRENT_SOURCE_DIR}/sh_ml.tmpl
+      ${CMAKE_CURRENT_SOURCE_DIR}/sh_sfc.tmpl
+      ${ECCODES_SAMPLES_FILES}
 )
 
-install( FILES ${ECCODES_SAMPLES_FILES} ${ifs_samples_${_basedir}}  
-         DESTINATION ${ECCODES_IFS_SAMPLES_PATH}/${_basedir}
-         PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ )
-
-file( COPY ${ifs_samples_${_basedir}}
-      DESTINATION ${CMAKE_BINARY_DIR}/share/${PROJECT_NAME}/ifs_samples/${_basedir} )
+install_samples( ifs_samples_${_basedir} ${_destination_install} ${_destination_build} )
diff --git a/ifs_samples/grib1/Makefile b/ifs_samples/grib1/Makefile
deleted file mode 100644
index 87b7bb1..0000000
--- a/ifs_samples/grib1/Makefile
+++ /dev/null
@@ -1,860 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# ifs_samples/grib1/Makefile.  Generated from Makefile.in by configure.
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-#This file is generated by make_makefile_am.pl
-#  DON'T EDIT!!!
-
-
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/eccodes
-pkgincludedir = $(includedir)/eccodes
-pkglibdir = $(libdir)/eccodes
-pkglibexecdir = $(libexecdir)/eccodes
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = x86_64-suse-linux-gnu
-host_triplet = x86_64-suse-linux-gnu
-subdir = ifs_samples/grib1
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(dist_grib1_DATA)
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_$(V))
-am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(grib1dir)" "$(DESTDIR)$(grib1dir)"
-DATA = $(dist_grib1_DATA) $(nodist_grib1_DATA)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing aclocal-1.13
-AEC_DIR = 
-AMTAR = $${TAR-tar}
-AM_DEFAULT_VERBOSITY = 1
-AR = ar
-AUTOCONF = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoconf
-AUTOHEADER = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoheader
-AUTOMAKE = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing automake-1.13
-AWK = gawk
-CC = gcc
-CCDEPMODE = depmode=gcc3
-CCSDS_TEST = 
-CFLAGS = -g -O2
-CPP = gcc -E
-CPPFLAGS = 
-CYGPATH_W = echo
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DEVEL_RULES = dummy.am
-DLLTOOL = false
-DSYMUTIL = 
-DUMPBIN = 
-ECCODES_AGE = 0
-ECCODES_CURRENT = 1
-ECCODES_DEFINITION_PATH = ${datarootdir}/eccodes/definitions
-ECCODES_MAIN_VERSION = 0.10.0
-ECCODES_MAJOR_VERSION = 0
-ECCODES_MINOR_VERSION = 10
-ECCODES_PATCH_VERSION = 0
-ECCODES_REVISION = 0
-ECCODES_SAMPLES_PATH = ${datarootdir}/eccodes/samples
-ECCODES_VERSION_STR = 0.10.0
-ECHO_C = 
-ECHO_N = -n
-ECHO_T = 
-EGREP = /usr/bin/grep -E
-EMOS_LIB = 
-EXEEXT = 
-F77 = gfortran
-F90_CHECK = examples/F90
-F90_MODULE_FLAG = -I
-FC = gfortran
-FCFLAGS = -g -O2
-FFLAGS = -g -O2
-FGREP = /usr/bin/grep -F
-FORTRAN_MOD = fortran
-GREP = /usr/bin/grep
-GRIB_API_INC = /tmp/masn/git/grib_api/eccodes/src
-GRIB_API_LIB = /tmp/masn/git/grib_api/eccodes/src/grib_api.a
-GRIB_DEVEL = 0
-IFS_SAMPLES_DIR = ${datarootdir}/eccodes/ifs_samples
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-JASPER_DIR = system
-JPEG_TEST = jpeg.sh
-LD = /usr/x86_64-suse-linux/bin/ld -m elf_x86_64
-LDFLAGS = 
-LEX = flex
-LEXLIB = -lfl
-LEX_OUTPUT_ROOT = lex.yy
-LIBOBJS = 
-LIBS = -lm -ljasper 
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LIBTOOL_DEPS = config/ltmain.sh
-LIB_AEC = 
-LIB_JASPER = -ljasper
-LIB_OPENJPEG = 
-LIB_PNG = 
-LINUX_DISTRIBUTION_NAME = openSUSE 13.1 (x86_64)
-LINUX_DISTRIBUTION_VERSION = 
-LIPO = 
-LN_S = ln -s
-LTLIBOBJS = 
-MAKEINFO = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing makeinfo
-MANIFEST_TOOL = :
-MKDIR_P = /usr/bin/mkdir -p
-NETCDF_LDFLAGS = 
-NM = /usr/bin/nm -B
-NMEDIT = 
-NUMPY_INCLUDE = /usr/local/apps/python/2.7.8-01/lib/python2.7/site-packages/numpy/core/include
-OBJDUMP = objdump
-OBJEXT = o
-OPENJPEG_DIR = system
-OTOOL = 
-OTOOL64 = 
-PACKAGE = eccodes
-PACKAGE_BUGREPORT = Software.Support at ecmwf.int
-PACKAGE_NAME = eccodes
-PACKAGE_STRING = eccodes  
-PACKAGE_TARNAME = eccodes
-PACKAGE_URL = 
-PACKAGE_VERSION = 0.10.0
-PATH_SEPARATOR = :
-PERL = 
-PERLDIR = perl
-PERL_INSTALL_OPTIONS = LIB=NONE/perl
-PERL_MAKE_OPTIONS = 
-PYTHON = /usr/local/apps/python/2.7.8-01/bin/python
-PYTHON_CFLAGS = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7 -fno-strict-aliasing -O3 -fpic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
-PYTHON_CHECK = examples/python
-PYTHON_CONFIG = /usr/local/apps/python/2.7.8-01/bin/python2.7-config
-PYTHON_DATA_HANDLER = numpy
-PYTHON_EXEC_PREFIX = ${exec_prefix}
-PYTHON_INCLUDES = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7
-PYTHON_LDFLAGS = -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic
-PYTHON_LIBS = -lpthread -ldl -lutil -lm -lpython2.7
-PYTHON_PLATFORM = linux2
-PYTHON_PREFIX = ${prefix}
-PYTHON_VERSION = 2.7
-RANLIB = ranlib
-RM = rm -f
-RPM_CONFIGURE_ARGS =  '--enable-python' '--disable-shared' 'CC=gcc' 'F77=gfortran' 'FC=gfortran'
-RPM_HOST_CPU = x86_64
-RPM_HOST_OS = linux-gnu
-RPM_HOST_VENDOR = suse
-RPM_RELEASE = 1
-SED = /usr/bin/sed
-SET_MAKE = 
-SHELL = /bin/sh
-STRIP = strip
-VERSION = 0.10.0
-WARN_PEDANTIC = -pedantic -Wall
-WERROR = 
-YACC = bison -y
-YFLAGS = 
-abs_builddir = /tmp/masn/git/grib_api/eccodes/ifs_samples/grib1
-abs_srcdir = /tmp/masn/git/grib_api/eccodes/ifs_samples/grib1
-abs_top_builddir = /tmp/masn/git/grib_api/eccodes
-abs_top_srcdir = /tmp/masn/git/grib_api/eccodes
-ac_ct_AR = ar
-ac_ct_CC = gcc
-ac_ct_DUMPBIN = 
-ac_ct_F77 = 
-ac_ct_FC = 
-am__include = include
-am__leading_dot = .
-am__quote = 
-am__tar = $${TAR-tar} chof - "$$tardir"
-am__untar = $${TAR-tar} xf -
-bindir = ${exec_prefix}/bin
-build = x86_64-suse-linux-gnu
-build_alias = 
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = suse
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-host = x86_64-suse-linux-gnu
-host_alias = 
-host_cpu = x86_64
-host_os = linux-gnu
-host_vendor = suse
-htmldir = ${docdir}
-includedir = ${prefix}/include
-infodir = ${datarootdir}/info
-install_sh = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localedir = ${datarootdir}/locale
-localstatedir = ${prefix}/var
-mandir = ${datarootdir}/man
-mkdir_p = $(MKDIR_P)
-oldincludedir = /usr/include
-pdfdir = ${docdir}
-pkgpyexecdir = ${pyexecdir}/eccodes
-pkgpythondir = ${pythondir}/eccodes
-prefix = /usr/local
-program_transform_name = s,x,x,
-psdir = ${docdir}
-pyexecdir = ${exec_prefix}/lib/python2.7/site-packages
-pythondir = ${prefix}/lib/python2.7/site-packages
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-srcdir = .
-sysconfdir = ${prefix}/etc
-target_alias = 
-top_build_prefix = ../../
-top_builddir = ../..
-top_srcdir = ../..
-grib1dir = ${datarootdir}/eccodes/ifs_samples/grib1
-dist_grib1_DATA = \
-	gg_ml.tmpl \
-	gg_sfc.tmpl \
-	sh_ml.tmpl \
-	sh_sfc.tmpl 
-
-nodist_grib1_DATA = \
-	GRIB1.tmpl \
-	GRIB2.tmpl \
-	budg.tmpl \
-	gg_sfc_grib1.tmpl \
-	gg_sfc_grib2.tmpl \
-	polar_stereographic_pl_grib1.tmpl \
-	polar_stereographic_pl_grib2.tmpl \
-	polar_stereographic_sfc_grib1.tmpl \
-	polar_stereographic_sfc_grib2.tmpl \
-	reduced_gg_ml_grib1.tmpl \
-	reduced_gg_ml_grib2.tmpl \
-	reduced_gg_pl_1024_grib1.tmpl \
-	reduced_gg_pl_1024_grib2.tmpl \
-	reduced_gg_pl_1280_grib1.tmpl \
-	reduced_gg_pl_1280_grib2.tmpl \
-	reduced_gg_pl_128_grib1.tmpl \
-	reduced_gg_pl_128_grib2.tmpl \
-	reduced_gg_pl_160_grib1.tmpl \
-	reduced_gg_pl_160_grib2.tmpl \
-	reduced_gg_pl_2000_grib1.tmpl \
-	reduced_gg_pl_2000_grib2.tmpl \
-	reduced_gg_pl_200_grib1.tmpl \
-	reduced_gg_pl_200_grib2.tmpl \
-	reduced_gg_pl_256_grib1.tmpl \
-	reduced_gg_pl_256_grib2.tmpl \
-	reduced_gg_pl_320_grib1.tmpl \
-	reduced_gg_pl_320_grib2.tmpl \
-	reduced_gg_pl_32_grib1.tmpl \
-	reduced_gg_pl_32_grib2.tmpl \
-	reduced_gg_pl_400_grib1.tmpl \
-	reduced_gg_pl_400_grib2.tmpl \
-	reduced_gg_pl_48_grib1.tmpl \
-	reduced_gg_pl_48_grib2.tmpl \
-	reduced_gg_pl_512_grib1.tmpl \
-	reduced_gg_pl_512_grib2.tmpl \
-	reduced_gg_pl_640_grib1.tmpl \
-	reduced_gg_pl_640_grib2.tmpl \
-	reduced_gg_pl_80_grib1.tmpl \
-	reduced_gg_pl_80_grib2.tmpl \
-	reduced_gg_pl_96_grib1.tmpl \
-	reduced_gg_pl_96_grib2.tmpl \
-	reduced_gg_pl_grib1.tmpl \
-	reduced_gg_pl_grib2.tmpl \
-	reduced_gg_sfc_grib1.tmpl \
-	reduced_gg_sfc_grib2.tmpl \
-	reduced_gg_sfc_jpeg_grib2.tmpl \
-	reduced_ll_sfc_grib1.tmpl \
-	reduced_ll_sfc_grib2.tmpl \
-	regular_gg_ml_grib1.tmpl \
-	regular_gg_ml_grib2.tmpl \
-	regular_gg_pl_grib1.tmpl \
-	regular_gg_pl_grib2.tmpl \
-	regular_gg_sfc_grib1.tmpl \
-	regular_gg_sfc_grib2.tmpl \
-	regular_ll_pl_grib1.tmpl \
-	regular_ll_pl_grib2.tmpl \
-	regular_ll_sfc_grib1.tmpl \
-	regular_ll_sfc_grib2.tmpl \
-	rotated_ll_pl_grib1.tmpl \
-	rotated_ll_pl_grib2.tmpl \
-	rotated_ll_sfc_grib1.tmpl \
-	rotated_ll_sfc_grib2.tmpl \
-	sh_ml_grib1.tmpl \
-	sh_ml_grib2.tmpl \
-	sh_pl_grib1.tmpl \
-	sh_pl_grib2.tmpl \
-	sh_sfc_grib1.tmpl \
-	sh_sfc_grib2.tmpl \
-    clusters_grib1.tmpl
-
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ifs_samples/grib1/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu ifs_samples/grib1/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-dist_grib1DATA: $(dist_grib1_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_grib1_DATA)'; test -n "$(grib1dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(grib1dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(grib1dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(grib1dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(grib1dir)" || exit $$?; \
-	done
-
-uninstall-dist_grib1DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_grib1_DATA)'; test -n "$(grib1dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(grib1dir)'; $(am__uninstall_files_from_dir)
-install-nodist_grib1DATA: $(nodist_grib1_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(nodist_grib1_DATA)'; test -n "$(grib1dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(grib1dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(grib1dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(grib1dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(grib1dir)" || exit $$?; \
-	done
-
-uninstall-nodist_grib1DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(nodist_grib1_DATA)'; test -n "$(grib1dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(grib1dir)'; $(am__uninstall_files_from_dir)
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
-	for dir in "$(DESTDIR)$(grib1dir)" "$(DESTDIR)$(grib1dir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-dist_grib1DATA install-nodist_grib1DATA
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-dist_grib1DATA uninstall-nodist_grib1DATA
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	cscopelist-am ctags-am distclean distclean-generic \
-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-dist_grib1DATA install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-nodist_grib1DATA \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags-am uninstall uninstall-am uninstall-dist_grib1DATA \
-	uninstall-nodist_grib1DATA
-
-
-GRIB1.tmpl: ../../samples/GRIB1.tmpl
-	cp -f ../../samples/GRIB1.tmpl .
-
-GRIB2.tmpl: ../../samples/GRIB2.tmpl
-	cp -f ../../samples/GRIB2.tmpl .
-
-gg_sfc_grib1.tmpl: ../../samples/gg_sfc_grib1.tmpl
-	cp -f ../../samples/gg_sfc_grib1.tmpl .
-
-budg.tmpl: ../../samples/budg.tmpl
-	cp -f ../../samples/budg.tmpl .
-
-gg_sfc_grib2.tmpl: ../../samples/gg_sfc_grib2.tmpl
-	cp -f ../../samples/gg_sfc_grib2.tmpl .
-
-polar_stereographic_pl_grib1.tmpl: ../../samples/polar_stereographic_pl_grib1.tmpl
-	cp -f ../../samples/polar_stereographic_pl_grib1.tmpl .
-
-polar_stereographic_pl_grib2.tmpl: ../../samples/polar_stereographic_pl_grib2.tmpl
-	cp -f ../../samples/polar_stereographic_pl_grib2.tmpl .
-
-polar_stereographic_sfc_grib1.tmpl: ../../samples/polar_stereographic_sfc_grib1.tmpl
-	cp -f ../../samples/polar_stereographic_sfc_grib1.tmpl .
-
-polar_stereographic_sfc_grib2.tmpl: ../../samples/polar_stereographic_sfc_grib2.tmpl
-	cp -f ../../samples/polar_stereographic_sfc_grib2.tmpl .
-
-reduced_gg_ml_grib1.tmpl: ../../samples/reduced_gg_ml_grib1.tmpl
-	cp -f ../../samples/reduced_gg_ml_grib1.tmpl .
-
-reduced_gg_ml_grib2.tmpl: ../../samples/reduced_gg_ml_grib2.tmpl
-	cp -f ../../samples/reduced_gg_ml_grib2.tmpl .
-
-reduced_gg_pl_1024_grib1.tmpl: ../../samples/reduced_gg_pl_1024_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_1024_grib1.tmpl .
-
-reduced_gg_pl_1024_grib2.tmpl: ../../samples/reduced_gg_pl_1024_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_1024_grib2.tmpl .
-
-reduced_gg_pl_1280_grib1.tmpl: ../../samples/reduced_gg_pl_1280_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_1280_grib1.tmpl .
-
-reduced_gg_pl_1280_grib2.tmpl: ../../samples/reduced_gg_pl_1280_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_1280_grib2.tmpl .
-
-reduced_gg_pl_128_grib1.tmpl: ../../samples/reduced_gg_pl_128_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_128_grib1.tmpl .
-
-reduced_gg_pl_128_grib2.tmpl: ../../samples/reduced_gg_pl_128_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_128_grib2.tmpl .
-
-reduced_gg_pl_160_grib1.tmpl: ../../samples/reduced_gg_pl_160_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_160_grib1.tmpl .
-
-reduced_gg_pl_160_grib2.tmpl: ../../samples/reduced_gg_pl_160_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_160_grib2.tmpl .
-
-reduced_gg_pl_2000_grib1.tmpl: ../../samples/reduced_gg_pl_2000_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_2000_grib1.tmpl .
-
-reduced_gg_pl_2000_grib2.tmpl: ../../samples/reduced_gg_pl_2000_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_2000_grib2.tmpl .
-
-reduced_gg_pl_200_grib1.tmpl: ../../samples/reduced_gg_pl_200_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_200_grib1.tmpl .
-
-reduced_gg_pl_200_grib2.tmpl: ../../samples/reduced_gg_pl_200_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_200_grib2.tmpl .
-
-reduced_gg_pl_256_grib1.tmpl: ../../samples/reduced_gg_pl_256_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_256_grib1.tmpl .
-
-reduced_gg_pl_256_grib2.tmpl: ../../samples/reduced_gg_pl_256_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_256_grib2.tmpl .
-
-reduced_gg_pl_320_grib1.tmpl: ../../samples/reduced_gg_pl_320_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_320_grib1.tmpl .
-
-reduced_gg_pl_320_grib2.tmpl: ../../samples/reduced_gg_pl_320_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_320_grib2.tmpl .
-
-reduced_gg_pl_32_grib1.tmpl: ../../samples/reduced_gg_pl_32_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_32_grib1.tmpl .
-
-reduced_gg_pl_32_grib2.tmpl: ../../samples/reduced_gg_pl_32_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_32_grib2.tmpl .
-
-reduced_gg_pl_400_grib1.tmpl: ../../samples/reduced_gg_pl_400_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_400_grib1.tmpl .
-
-reduced_gg_pl_400_grib2.tmpl: ../../samples/reduced_gg_pl_400_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_400_grib2.tmpl .
-
-reduced_gg_pl_48_grib1.tmpl: ../../samples/reduced_gg_pl_48_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_48_grib1.tmpl .
-
-reduced_gg_pl_48_grib2.tmpl: ../../samples/reduced_gg_pl_48_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_48_grib2.tmpl .
-
-reduced_gg_pl_512_grib1.tmpl: ../../samples/reduced_gg_pl_512_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_512_grib1.tmpl .
-
-reduced_gg_pl_512_grib2.tmpl: ../../samples/reduced_gg_pl_512_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_512_grib2.tmpl .
-
-reduced_gg_pl_640_grib1.tmpl: ../../samples/reduced_gg_pl_640_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_640_grib1.tmpl .
-
-reduced_gg_pl_640_grib2.tmpl: ../../samples/reduced_gg_pl_640_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_640_grib2.tmpl .
-
-reduced_gg_pl_80_grib1.tmpl: ../../samples/reduced_gg_pl_80_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_80_grib1.tmpl .
-
-reduced_gg_pl_80_grib2.tmpl: ../../samples/reduced_gg_pl_80_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_80_grib2.tmpl .
-
-reduced_gg_pl_96_grib1.tmpl: ../../samples/reduced_gg_pl_96_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_96_grib1.tmpl .
-
-reduced_gg_pl_96_grib2.tmpl: ../../samples/reduced_gg_pl_96_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_96_grib2.tmpl .
-
-reduced_gg_pl_grib1.tmpl: ../../samples/reduced_gg_pl_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_grib1.tmpl .
-
-reduced_gg_pl_grib2.tmpl: ../../samples/reduced_gg_pl_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_grib2.tmpl .
-
-reduced_gg_sfc_grib1.tmpl: ../../samples/reduced_gg_sfc_grib1.tmpl
-	cp -f ../../samples/reduced_gg_sfc_grib1.tmpl .
-
-reduced_gg_sfc_grib2.tmpl: ../../samples/reduced_gg_sfc_grib2.tmpl
-	cp -f ../../samples/reduced_gg_sfc_grib2.tmpl .
-
-reduced_gg_sfc_jpeg_grib2.tmpl: ../../samples/reduced_gg_sfc_jpeg_grib2.tmpl
-	cp -f ../../samples/reduced_gg_sfc_jpeg_grib2.tmpl .
-
-reduced_ll_sfc_grib1.tmpl: ../../samples/reduced_ll_sfc_grib1.tmpl
-	cp -f ../../samples/reduced_ll_sfc_grib1.tmpl .
-
-reduced_ll_sfc_grib2.tmpl: ../../samples/reduced_ll_sfc_grib2.tmpl
-	cp -f ../../samples/reduced_ll_sfc_grib2.tmpl .
-
-regular_gg_ml_grib1.tmpl: ../../samples/regular_gg_ml_grib1.tmpl
-	cp -f ../../samples/regular_gg_ml_grib1.tmpl .
-
-regular_gg_ml_grib2.tmpl: ../../samples/regular_gg_ml_grib2.tmpl
-	cp -f ../../samples/regular_gg_ml_grib2.tmpl .
-
-regular_gg_pl_grib1.tmpl: ../../samples/regular_gg_pl_grib1.tmpl
-	cp -f ../../samples/regular_gg_pl_grib1.tmpl .
-
-regular_gg_pl_grib2.tmpl: ../../samples/regular_gg_pl_grib2.tmpl
-	cp -f ../../samples/regular_gg_pl_grib2.tmpl .
-
-regular_gg_sfc_grib1.tmpl: ../../samples/regular_gg_sfc_grib1.tmpl
-	cp -f ../../samples/regular_gg_sfc_grib1.tmpl .
-
-regular_gg_sfc_grib2.tmpl: ../../samples/regular_gg_sfc_grib2.tmpl
-	cp -f ../../samples/regular_gg_sfc_grib2.tmpl .
-
-regular_ll_pl_grib1.tmpl: ../../samples/regular_ll_pl_grib1.tmpl
-	cp -f ../../samples/regular_ll_pl_grib1.tmpl .
-
-regular_ll_pl_grib2.tmpl: ../../samples/regular_ll_pl_grib2.tmpl
-	cp -f ../../samples/regular_ll_pl_grib2.tmpl .
-
-regular_ll_sfc_grib1.tmpl: ../../samples/regular_ll_sfc_grib1.tmpl
-	cp -f ../../samples/regular_ll_sfc_grib1.tmpl .
-
-regular_ll_sfc_grib2.tmpl: ../../samples/regular_ll_sfc_grib2.tmpl
-	cp -f ../../samples/regular_ll_sfc_grib2.tmpl .
-
-rotated_ll_pl_grib1.tmpl: ../../samples/rotated_ll_pl_grib1.tmpl
-	cp -f ../../samples/rotated_ll_pl_grib1.tmpl .
-
-rotated_ll_pl_grib2.tmpl: ../../samples/rotated_ll_pl_grib2.tmpl
-	cp -f ../../samples/rotated_ll_pl_grib2.tmpl .
-
-rotated_ll_sfc_grib1.tmpl: ../../samples/rotated_ll_sfc_grib1.tmpl
-	cp -f ../../samples/rotated_ll_sfc_grib1.tmpl .
-
-rotated_ll_sfc_grib2.tmpl: ../../samples/rotated_ll_sfc_grib2.tmpl
-	cp -f ../../samples/rotated_ll_sfc_grib2.tmpl .
-
-sh_ml_grib1.tmpl: ../../samples/sh_ml_grib1.tmpl
-	cp -f ../../samples/sh_ml_grib1.tmpl .
-
-sh_ml_grib2.tmpl: ../../samples/sh_ml_grib2.tmpl
-	cp -f ../../samples/sh_ml_grib2.tmpl .
-
-sh_pl_grib1.tmpl: ../../samples/sh_pl_grib1.tmpl
-	cp -f ../../samples/sh_pl_grib1.tmpl .
-
-sh_pl_grib2.tmpl: ../../samples/sh_pl_grib2.tmpl
-	cp -f ../../samples/sh_pl_grib2.tmpl .
-
-sh_sfc_grib1.tmpl: ../../samples/sh_sfc_grib1.tmpl
-	cp -f ../../samples/sh_sfc_grib1.tmpl .
-
-sh_sfc_grib2.tmpl: ../../samples/sh_sfc_grib2.tmpl
-	cp -f ../../samples/sh_sfc_grib2.tmpl .
-
-clusters_grib1.tmpl: ../../samples/clusters_grib1.tmpl
-	cp -f ../../samples/clusters_grib1.tmpl .
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/ifs_samples/grib1_mlgrib2/CMakeLists.txt b/ifs_samples/grib1_mlgrib2/CMakeLists.txt
index e4e4908..c28663c 100644
--- a/ifs_samples/grib1_mlgrib2/CMakeLists.txt
+++ b/ifs_samples/grib1_mlgrib2/CMakeLists.txt
@@ -1,15 +1,13 @@
 set( _basedir grib1_mlgrib2 )
+set( _destination_install ${CMAKE_INSTALL_PREFIX}/${ECCODES_IFS_SAMPLES_SUFF}/${_basedir} )
+set( _destination_build   ${CMAKE_BINARY_DIR}/${ECCODES_IFS_SAMPLES_SUFF}/${_basedir} )
 
 list( APPEND ifs_samples_${_basedir}
-      gg_ml.tmpl
-      gg_sfc.tmpl
-      sh_ml.tmpl
-      sh_sfc.tmpl
+      ${CMAKE_CURRENT_SOURCE_DIR}/gg_ml.tmpl
+      ${CMAKE_CURRENT_SOURCE_DIR}/gg_sfc.tmpl
+      ${CMAKE_CURRENT_SOURCE_DIR}/sh_ml.tmpl
+      ${CMAKE_CURRENT_SOURCE_DIR}/sh_sfc.tmpl
+      ${ECCODES_SAMPLES_FILES}
 )
 
-install( FILES ${ECCODES_SAMPLES_FILES} ${ifs_samples_${_basedir}}  
-         DESTINATION ${ECCODES_IFS_SAMPLES_PATH}/${_basedir}
-         PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ )
-
-file( COPY ${ifs_samples_${_basedir}}
-      DESTINATION ${CMAKE_BINARY_DIR}/share/${PROJECT_NAME}/ifs_samples/${_basedir} )
+install_samples( ifs_samples_${_basedir} ${_destination_install} ${_destination_build} )
diff --git a/ifs_samples/grib1_mlgrib2/Makefile b/ifs_samples/grib1_mlgrib2/Makefile
deleted file mode 100644
index 047f315..0000000
--- a/ifs_samples/grib1_mlgrib2/Makefile
+++ /dev/null
@@ -1,864 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# ifs_samples/grib1_mlgrib2/Makefile.  Generated from Makefile.in by configure.
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-#This file is generated by make_makefile_am.pl
-#  DON'T EDIT!!!
-
-
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/eccodes
-pkgincludedir = $(includedir)/eccodes
-pkglibdir = $(libdir)/eccodes
-pkglibexecdir = $(libexecdir)/eccodes
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = x86_64-suse-linux-gnu
-host_triplet = x86_64-suse-linux-gnu
-subdir = ifs_samples/grib1_mlgrib2
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(dist_grib1_mlgrib2_DATA)
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_$(V))
-am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(grib1_mlgrib2dir)" \
-	"$(DESTDIR)$(grib1_mlgrib2dir)"
-DATA = $(dist_grib1_mlgrib2_DATA) $(nodist_grib1_mlgrib2_DATA)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing aclocal-1.13
-AEC_DIR = 
-AMTAR = $${TAR-tar}
-AM_DEFAULT_VERBOSITY = 1
-AR = ar
-AUTOCONF = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoconf
-AUTOHEADER = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoheader
-AUTOMAKE = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing automake-1.13
-AWK = gawk
-CC = gcc
-CCDEPMODE = depmode=gcc3
-CCSDS_TEST = 
-CFLAGS = -g -O2
-CPP = gcc -E
-CPPFLAGS = 
-CYGPATH_W = echo
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DEVEL_RULES = dummy.am
-DLLTOOL = false
-DSYMUTIL = 
-DUMPBIN = 
-ECCODES_AGE = 0
-ECCODES_CURRENT = 1
-ECCODES_DEFINITION_PATH = ${datarootdir}/eccodes/definitions
-ECCODES_MAIN_VERSION = 0.10.0
-ECCODES_MAJOR_VERSION = 0
-ECCODES_MINOR_VERSION = 10
-ECCODES_PATCH_VERSION = 0
-ECCODES_REVISION = 0
-ECCODES_SAMPLES_PATH = ${datarootdir}/eccodes/samples
-ECCODES_VERSION_STR = 0.10.0
-ECHO_C = 
-ECHO_N = -n
-ECHO_T = 
-EGREP = /usr/bin/grep -E
-EMOS_LIB = 
-EXEEXT = 
-F77 = gfortran
-F90_CHECK = examples/F90
-F90_MODULE_FLAG = -I
-FC = gfortran
-FCFLAGS = -g -O2
-FFLAGS = -g -O2
-FGREP = /usr/bin/grep -F
-FORTRAN_MOD = fortran
-GREP = /usr/bin/grep
-GRIB_API_INC = /tmp/masn/git/grib_api/eccodes/src
-GRIB_API_LIB = /tmp/masn/git/grib_api/eccodes/src/grib_api.a
-GRIB_DEVEL = 0
-IFS_SAMPLES_DIR = ${datarootdir}/eccodes/ifs_samples
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-JASPER_DIR = system
-JPEG_TEST = jpeg.sh
-LD = /usr/x86_64-suse-linux/bin/ld -m elf_x86_64
-LDFLAGS = 
-LEX = flex
-LEXLIB = -lfl
-LEX_OUTPUT_ROOT = lex.yy
-LIBOBJS = 
-LIBS = -lm -ljasper 
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LIBTOOL_DEPS = config/ltmain.sh
-LIB_AEC = 
-LIB_JASPER = -ljasper
-LIB_OPENJPEG = 
-LIB_PNG = 
-LINUX_DISTRIBUTION_NAME = openSUSE 13.1 (x86_64)
-LINUX_DISTRIBUTION_VERSION = 
-LIPO = 
-LN_S = ln -s
-LTLIBOBJS = 
-MAKEINFO = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing makeinfo
-MANIFEST_TOOL = :
-MKDIR_P = /usr/bin/mkdir -p
-NETCDF_LDFLAGS = 
-NM = /usr/bin/nm -B
-NMEDIT = 
-NUMPY_INCLUDE = /usr/local/apps/python/2.7.8-01/lib/python2.7/site-packages/numpy/core/include
-OBJDUMP = objdump
-OBJEXT = o
-OPENJPEG_DIR = system
-OTOOL = 
-OTOOL64 = 
-PACKAGE = eccodes
-PACKAGE_BUGREPORT = Software.Support at ecmwf.int
-PACKAGE_NAME = eccodes
-PACKAGE_STRING = eccodes  
-PACKAGE_TARNAME = eccodes
-PACKAGE_URL = 
-PACKAGE_VERSION = 0.10.0
-PATH_SEPARATOR = :
-PERL = 
-PERLDIR = perl
-PERL_INSTALL_OPTIONS = LIB=NONE/perl
-PERL_MAKE_OPTIONS = 
-PYTHON = /usr/local/apps/python/2.7.8-01/bin/python
-PYTHON_CFLAGS = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7 -fno-strict-aliasing -O3 -fpic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
-PYTHON_CHECK = examples/python
-PYTHON_CONFIG = /usr/local/apps/python/2.7.8-01/bin/python2.7-config
-PYTHON_DATA_HANDLER = numpy
-PYTHON_EXEC_PREFIX = ${exec_prefix}
-PYTHON_INCLUDES = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7
-PYTHON_LDFLAGS = -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic
-PYTHON_LIBS = -lpthread -ldl -lutil -lm -lpython2.7
-PYTHON_PLATFORM = linux2
-PYTHON_PREFIX = ${prefix}
-PYTHON_VERSION = 2.7
-RANLIB = ranlib
-RM = rm -f
-RPM_CONFIGURE_ARGS =  '--enable-python' '--disable-shared' 'CC=gcc' 'F77=gfortran' 'FC=gfortran'
-RPM_HOST_CPU = x86_64
-RPM_HOST_OS = linux-gnu
-RPM_HOST_VENDOR = suse
-RPM_RELEASE = 1
-SED = /usr/bin/sed
-SET_MAKE = 
-SHELL = /bin/sh
-STRIP = strip
-VERSION = 0.10.0
-WARN_PEDANTIC = -pedantic -Wall
-WERROR = 
-YACC = bison -y
-YFLAGS = 
-abs_builddir = /tmp/masn/git/grib_api/eccodes/ifs_samples/grib1_mlgrib2
-abs_srcdir = /tmp/masn/git/grib_api/eccodes/ifs_samples/grib1_mlgrib2
-abs_top_builddir = /tmp/masn/git/grib_api/eccodes
-abs_top_srcdir = /tmp/masn/git/grib_api/eccodes
-ac_ct_AR = ar
-ac_ct_CC = gcc
-ac_ct_DUMPBIN = 
-ac_ct_F77 = 
-ac_ct_FC = 
-am__include = include
-am__leading_dot = .
-am__quote = 
-am__tar = $${TAR-tar} chof - "$$tardir"
-am__untar = $${TAR-tar} xf -
-bindir = ${exec_prefix}/bin
-build = x86_64-suse-linux-gnu
-build_alias = 
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = suse
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-host = x86_64-suse-linux-gnu
-host_alias = 
-host_cpu = x86_64
-host_os = linux-gnu
-host_vendor = suse
-htmldir = ${docdir}
-includedir = ${prefix}/include
-infodir = ${datarootdir}/info
-install_sh = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localedir = ${datarootdir}/locale
-localstatedir = ${prefix}/var
-mandir = ${datarootdir}/man
-mkdir_p = $(MKDIR_P)
-oldincludedir = /usr/include
-pdfdir = ${docdir}
-pkgpyexecdir = ${pyexecdir}/eccodes
-pkgpythondir = ${pythondir}/eccodes
-prefix = /usr/local
-program_transform_name = s,x,x,
-psdir = ${docdir}
-pyexecdir = ${exec_prefix}/lib/python2.7/site-packages
-pythondir = ${prefix}/lib/python2.7/site-packages
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-srcdir = .
-sysconfdir = ${prefix}/etc
-target_alias = 
-top_build_prefix = ../../
-top_builddir = ../..
-top_srcdir = ../..
-grib1_mlgrib2dir = ${datarootdir}/eccodes/ifs_samples/grib1_mlgrib2
-dist_grib1_mlgrib2_DATA = \
-	gg_ml.tmpl \
-	gg_sfc.tmpl \
-	sh_ml.tmpl \
-	sh_sfc.tmpl 
-
-nodist_grib1_mlgrib2_DATA = \
-	GRIB1.tmpl \
-	GRIB2.tmpl \
-	budg.tmpl \
-	gg_sfc_grib1.tmpl \
-	gg_sfc_grib2.tmpl \
-	polar_stereographic_pl_grib1.tmpl \
-	polar_stereographic_pl_grib2.tmpl \
-	polar_stereographic_sfc_grib1.tmpl \
-	polar_stereographic_sfc_grib2.tmpl \
-	reduced_gg_ml_grib1.tmpl \
-	reduced_gg_ml_grib2.tmpl \
-	reduced_gg_pl_1024_grib1.tmpl \
-	reduced_gg_pl_1024_grib2.tmpl \
-	reduced_gg_pl_1280_grib1.tmpl \
-	reduced_gg_pl_1280_grib2.tmpl \
-	reduced_gg_pl_128_grib1.tmpl \
-	reduced_gg_pl_128_grib2.tmpl \
-	reduced_gg_pl_160_grib1.tmpl \
-	reduced_gg_pl_160_grib2.tmpl \
-	reduced_gg_pl_2000_grib1.tmpl \
-	reduced_gg_pl_2000_grib2.tmpl \
-	reduced_gg_pl_200_grib1.tmpl \
-	reduced_gg_pl_200_grib2.tmpl \
-	reduced_gg_pl_256_grib1.tmpl \
-	reduced_gg_pl_256_grib2.tmpl \
-	reduced_gg_pl_320_grib1.tmpl \
-	reduced_gg_pl_320_grib2.tmpl \
-	reduced_gg_pl_32_grib1.tmpl \
-	reduced_gg_pl_32_grib2.tmpl \
-	reduced_gg_pl_400_grib1.tmpl \
-	reduced_gg_pl_400_grib2.tmpl \
-	reduced_gg_pl_48_grib1.tmpl \
-	reduced_gg_pl_48_grib2.tmpl \
-	reduced_gg_pl_512_grib1.tmpl \
-	reduced_gg_pl_512_grib2.tmpl \
-	reduced_gg_pl_640_grib1.tmpl \
-	reduced_gg_pl_640_grib2.tmpl \
-	reduced_gg_pl_80_grib1.tmpl \
-	reduced_gg_pl_80_grib2.tmpl \
-	reduced_gg_pl_96_grib1.tmpl \
-	reduced_gg_pl_96_grib2.tmpl \
-	reduced_gg_pl_grib1.tmpl \
-	reduced_gg_pl_grib2.tmpl \
-	reduced_gg_sfc_grib1.tmpl \
-	reduced_gg_sfc_grib2.tmpl \
-	reduced_gg_sfc_jpeg_grib2.tmpl \
-	reduced_ll_sfc_grib1.tmpl \
-	reduced_ll_sfc_grib2.tmpl \
-	regular_gg_ml_grib1.tmpl \
-	regular_gg_ml_grib2.tmpl \
-	regular_gg_pl_grib1.tmpl \
-	regular_gg_pl_grib2.tmpl \
-	regular_gg_sfc_grib1.tmpl \
-	regular_gg_sfc_grib2.tmpl \
-	regular_ll_pl_grib1.tmpl \
-	regular_ll_pl_grib2.tmpl \
-	regular_ll_sfc_grib1.tmpl \
-	regular_ll_sfc_grib2.tmpl \
-	rotated_ll_pl_grib1.tmpl \
-	rotated_ll_pl_grib2.tmpl \
-	rotated_ll_sfc_grib1.tmpl \
-	rotated_ll_sfc_grib2.tmpl \
-	sh_ml_grib1.tmpl \
-	sh_ml_grib2.tmpl \
-	sh_pl_grib1.tmpl \
-	sh_pl_grib2.tmpl \
-	sh_sfc_grib1.tmpl \
-	sh_sfc_grib2.tmpl \
-	clusters_grib1.tmpl
-
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ifs_samples/grib1_mlgrib2/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu ifs_samples/grib1_mlgrib2/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-dist_grib1_mlgrib2DATA: $(dist_grib1_mlgrib2_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_grib1_mlgrib2_DATA)'; test -n "$(grib1_mlgrib2dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(grib1_mlgrib2dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(grib1_mlgrib2dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(grib1_mlgrib2dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(grib1_mlgrib2dir)" || exit $$?; \
-	done
-
-uninstall-dist_grib1_mlgrib2DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_grib1_mlgrib2_DATA)'; test -n "$(grib1_mlgrib2dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(grib1_mlgrib2dir)'; $(am__uninstall_files_from_dir)
-install-nodist_grib1_mlgrib2DATA: $(nodist_grib1_mlgrib2_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(nodist_grib1_mlgrib2_DATA)'; test -n "$(grib1_mlgrib2dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(grib1_mlgrib2dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(grib1_mlgrib2dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(grib1_mlgrib2dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(grib1_mlgrib2dir)" || exit $$?; \
-	done
-
-uninstall-nodist_grib1_mlgrib2DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(nodist_grib1_mlgrib2_DATA)'; test -n "$(grib1_mlgrib2dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(grib1_mlgrib2dir)'; $(am__uninstall_files_from_dir)
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
-	for dir in "$(DESTDIR)$(grib1_mlgrib2dir)" "$(DESTDIR)$(grib1_mlgrib2dir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-dist_grib1_mlgrib2DATA \
-	install-nodist_grib1_mlgrib2DATA
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-dist_grib1_mlgrib2DATA \
-	uninstall-nodist_grib1_mlgrib2DATA
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	cscopelist-am ctags-am distclean distclean-generic \
-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-dist_grib1_mlgrib2DATA install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man \
-	install-nodist_grib1_mlgrib2DATA install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
-	uninstall-am uninstall-dist_grib1_mlgrib2DATA \
-	uninstall-nodist_grib1_mlgrib2DATA
-
-
-GRIB1.tmpl: ../../samples/GRIB1.tmpl
-	cp -f ../../samples/GRIB1.tmpl .
-
-GRIB2.tmpl: ../../samples/GRIB2.tmpl
-	cp -f ../../samples/GRIB2.tmpl .
-
-gg_sfc_grib1.tmpl: ../../samples/gg_sfc_grib1.tmpl
-	cp -f ../../samples/gg_sfc_grib1.tmpl .
-
-budg.tmpl: ../../samples/budg.tmpl
-	cp -f ../../samples/budg.tmpl .
-
-gg_sfc_grib2.tmpl: ../../samples/gg_sfc_grib2.tmpl
-	cp -f ../../samples/gg_sfc_grib2.tmpl .
-
-polar_stereographic_pl_grib1.tmpl: ../../samples/polar_stereographic_pl_grib1.tmpl
-	cp -f ../../samples/polar_stereographic_pl_grib1.tmpl .
-
-polar_stereographic_pl_grib2.tmpl: ../../samples/polar_stereographic_pl_grib2.tmpl
-	cp -f ../../samples/polar_stereographic_pl_grib2.tmpl .
-
-polar_stereographic_sfc_grib1.tmpl: ../../samples/polar_stereographic_sfc_grib1.tmpl
-	cp -f ../../samples/polar_stereographic_sfc_grib1.tmpl .
-
-polar_stereographic_sfc_grib2.tmpl: ../../samples/polar_stereographic_sfc_grib2.tmpl
-	cp -f ../../samples/polar_stereographic_sfc_grib2.tmpl .
-
-reduced_gg_ml_grib1.tmpl: ../../samples/reduced_gg_ml_grib1.tmpl
-	cp -f ../../samples/reduced_gg_ml_grib1.tmpl .
-
-reduced_gg_ml_grib2.tmpl: ../../samples/reduced_gg_ml_grib2.tmpl
-	cp -f ../../samples/reduced_gg_ml_grib2.tmpl .
-
-reduced_gg_pl_1024_grib1.tmpl: ../../samples/reduced_gg_pl_1024_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_1024_grib1.tmpl .
-
-reduced_gg_pl_1024_grib2.tmpl: ../../samples/reduced_gg_pl_1024_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_1024_grib2.tmpl .
-
-reduced_gg_pl_1280_grib1.tmpl: ../../samples/reduced_gg_pl_1280_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_1280_grib1.tmpl .
-
-reduced_gg_pl_1280_grib2.tmpl: ../../samples/reduced_gg_pl_1280_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_1280_grib2.tmpl .
-
-reduced_gg_pl_128_grib1.tmpl: ../../samples/reduced_gg_pl_128_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_128_grib1.tmpl .
-
-reduced_gg_pl_128_grib2.tmpl: ../../samples/reduced_gg_pl_128_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_128_grib2.tmpl .
-
-reduced_gg_pl_160_grib1.tmpl: ../../samples/reduced_gg_pl_160_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_160_grib1.tmpl .
-
-reduced_gg_pl_160_grib2.tmpl: ../../samples/reduced_gg_pl_160_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_160_grib2.tmpl .
-
-reduced_gg_pl_2000_grib1.tmpl: ../../samples/reduced_gg_pl_2000_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_2000_grib1.tmpl .
-
-reduced_gg_pl_2000_grib2.tmpl: ../../samples/reduced_gg_pl_2000_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_2000_grib2.tmpl .
-
-reduced_gg_pl_200_grib1.tmpl: ../../samples/reduced_gg_pl_200_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_200_grib1.tmpl .
-
-reduced_gg_pl_200_grib2.tmpl: ../../samples/reduced_gg_pl_200_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_200_grib2.tmpl .
-
-reduced_gg_pl_256_grib1.tmpl: ../../samples/reduced_gg_pl_256_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_256_grib1.tmpl .
-
-reduced_gg_pl_256_grib2.tmpl: ../../samples/reduced_gg_pl_256_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_256_grib2.tmpl .
-
-reduced_gg_pl_320_grib1.tmpl: ../../samples/reduced_gg_pl_320_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_320_grib1.tmpl .
-
-reduced_gg_pl_320_grib2.tmpl: ../../samples/reduced_gg_pl_320_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_320_grib2.tmpl .
-
-reduced_gg_pl_32_grib1.tmpl: ../../samples/reduced_gg_pl_32_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_32_grib1.tmpl .
-
-reduced_gg_pl_32_grib2.tmpl: ../../samples/reduced_gg_pl_32_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_32_grib2.tmpl .
-
-reduced_gg_pl_400_grib1.tmpl: ../../samples/reduced_gg_pl_400_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_400_grib1.tmpl .
-
-reduced_gg_pl_400_grib2.tmpl: ../../samples/reduced_gg_pl_400_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_400_grib2.tmpl .
-
-reduced_gg_pl_48_grib1.tmpl: ../../samples/reduced_gg_pl_48_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_48_grib1.tmpl .
-
-reduced_gg_pl_48_grib2.tmpl: ../../samples/reduced_gg_pl_48_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_48_grib2.tmpl .
-
-reduced_gg_pl_512_grib1.tmpl: ../../samples/reduced_gg_pl_512_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_512_grib1.tmpl .
-
-reduced_gg_pl_512_grib2.tmpl: ../../samples/reduced_gg_pl_512_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_512_grib2.tmpl .
-
-reduced_gg_pl_640_grib1.tmpl: ../../samples/reduced_gg_pl_640_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_640_grib1.tmpl .
-
-reduced_gg_pl_640_grib2.tmpl: ../../samples/reduced_gg_pl_640_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_640_grib2.tmpl .
-
-reduced_gg_pl_80_grib1.tmpl: ../../samples/reduced_gg_pl_80_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_80_grib1.tmpl .
-
-reduced_gg_pl_80_grib2.tmpl: ../../samples/reduced_gg_pl_80_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_80_grib2.tmpl .
-
-reduced_gg_pl_96_grib1.tmpl: ../../samples/reduced_gg_pl_96_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_96_grib1.tmpl .
-
-reduced_gg_pl_96_grib2.tmpl: ../../samples/reduced_gg_pl_96_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_96_grib2.tmpl .
-
-reduced_gg_pl_grib1.tmpl: ../../samples/reduced_gg_pl_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_grib1.tmpl .
-
-reduced_gg_pl_grib2.tmpl: ../../samples/reduced_gg_pl_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_grib2.tmpl .
-
-reduced_gg_sfc_grib1.tmpl: ../../samples/reduced_gg_sfc_grib1.tmpl
-	cp -f ../../samples/reduced_gg_sfc_grib1.tmpl .
-
-reduced_gg_sfc_grib2.tmpl: ../../samples/reduced_gg_sfc_grib2.tmpl
-	cp -f ../../samples/reduced_gg_sfc_grib2.tmpl .
-
-reduced_gg_sfc_jpeg_grib2.tmpl: ../../samples/reduced_gg_sfc_jpeg_grib2.tmpl
-	cp -f ../../samples/reduced_gg_sfc_jpeg_grib2.tmpl .
-
-reduced_ll_sfc_grib1.tmpl: ../../samples/reduced_ll_sfc_grib1.tmpl
-	cp -f ../../samples/reduced_ll_sfc_grib1.tmpl .
-
-reduced_ll_sfc_grib2.tmpl: ../../samples/reduced_ll_sfc_grib2.tmpl
-	cp -f ../../samples/reduced_ll_sfc_grib2.tmpl .
-
-regular_gg_ml_grib1.tmpl: ../../samples/regular_gg_ml_grib1.tmpl
-	cp -f ../../samples/regular_gg_ml_grib1.tmpl .
-
-regular_gg_ml_grib2.tmpl: ../../samples/regular_gg_ml_grib2.tmpl
-	cp -f ../../samples/regular_gg_ml_grib2.tmpl .
-
-regular_gg_pl_grib1.tmpl: ../../samples/regular_gg_pl_grib1.tmpl
-	cp -f ../../samples/regular_gg_pl_grib1.tmpl .
-
-regular_gg_pl_grib2.tmpl: ../../samples/regular_gg_pl_grib2.tmpl
-	cp -f ../../samples/regular_gg_pl_grib2.tmpl .
-
-regular_gg_sfc_grib1.tmpl: ../../samples/regular_gg_sfc_grib1.tmpl
-	cp -f ../../samples/regular_gg_sfc_grib1.tmpl .
-
-regular_gg_sfc_grib2.tmpl: ../../samples/regular_gg_sfc_grib2.tmpl
-	cp -f ../../samples/regular_gg_sfc_grib2.tmpl .
-
-regular_ll_pl_grib1.tmpl: ../../samples/regular_ll_pl_grib1.tmpl
-	cp -f ../../samples/regular_ll_pl_grib1.tmpl .
-
-regular_ll_pl_grib2.tmpl: ../../samples/regular_ll_pl_grib2.tmpl
-	cp -f ../../samples/regular_ll_pl_grib2.tmpl .
-
-regular_ll_sfc_grib1.tmpl: ../../samples/regular_ll_sfc_grib1.tmpl
-	cp -f ../../samples/regular_ll_sfc_grib1.tmpl .
-
-regular_ll_sfc_grib2.tmpl: ../../samples/regular_ll_sfc_grib2.tmpl
-	cp -f ../../samples/regular_ll_sfc_grib2.tmpl .
-
-rotated_ll_pl_grib1.tmpl: ../../samples/rotated_ll_pl_grib1.tmpl
-	cp -f ../../samples/rotated_ll_pl_grib1.tmpl .
-
-rotated_ll_pl_grib2.tmpl: ../../samples/rotated_ll_pl_grib2.tmpl
-	cp -f ../../samples/rotated_ll_pl_grib2.tmpl .
-
-rotated_ll_sfc_grib1.tmpl: ../../samples/rotated_ll_sfc_grib1.tmpl
-	cp -f ../../samples/rotated_ll_sfc_grib1.tmpl .
-
-rotated_ll_sfc_grib2.tmpl: ../../samples/rotated_ll_sfc_grib2.tmpl
-	cp -f ../../samples/rotated_ll_sfc_grib2.tmpl .
-
-sh_ml_grib1.tmpl: ../../samples/sh_ml_grib1.tmpl
-	cp -f ../../samples/sh_ml_grib1.tmpl .
-
-sh_ml_grib2.tmpl: ../../samples/sh_ml_grib2.tmpl
-	cp -f ../../samples/sh_ml_grib2.tmpl .
-
-sh_pl_grib1.tmpl: ../../samples/sh_pl_grib1.tmpl
-	cp -f ../../samples/sh_pl_grib1.tmpl .
-
-sh_pl_grib2.tmpl: ../../samples/sh_pl_grib2.tmpl
-	cp -f ../../samples/sh_pl_grib2.tmpl .
-
-sh_sfc_grib1.tmpl: ../../samples/sh_sfc_grib1.tmpl
-	cp -f ../../samples/sh_sfc_grib1.tmpl .
-
-sh_sfc_grib2.tmpl: ../../samples/sh_sfc_grib2.tmpl
-	cp -f ../../samples/sh_sfc_grib2.tmpl .
-
-clusters_grib1.tmpl: ../../samples/clusters_grib1.tmpl
-	cp -f ../../samples/clusters_grib1.tmpl .
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/ifs_samples/grib1_mlgrib2_ieee32/CMakeLists.txt b/ifs_samples/grib1_mlgrib2_ieee32/CMakeLists.txt
index 87e01f1..3b3e3b5 100644
--- a/ifs_samples/grib1_mlgrib2_ieee32/CMakeLists.txt
+++ b/ifs_samples/grib1_mlgrib2_ieee32/CMakeLists.txt
@@ -1,15 +1,13 @@
 set( _basedir grib1_mlgrib2_ieee32 )
+set( _destination_install ${CMAKE_INSTALL_PREFIX}/${ECCODES_IFS_SAMPLES_SUFF}/${_basedir} )
+set( _destination_build   ${CMAKE_BINARY_DIR}/${ECCODES_IFS_SAMPLES_SUFF}/${_basedir} )
 
 list( APPEND ifs_samples_${_basedir}
-      gg_ml.tmpl
-      gg_sfc.tmpl
-      sh_ml.tmpl
-      sh_sfc.tmpl
+      ${CMAKE_CURRENT_SOURCE_DIR}/gg_ml.tmpl
+      ${CMAKE_CURRENT_SOURCE_DIR}/gg_sfc.tmpl
+      ${CMAKE_CURRENT_SOURCE_DIR}/sh_ml.tmpl
+      ${CMAKE_CURRENT_SOURCE_DIR}/sh_sfc.tmpl
+      ${ECCODES_SAMPLES_FILES}
 )
 
-install( FILES ${ECCODES_SAMPLES_FILES} ${ifs_samples_${_basedir}}  
-         DESTINATION ${ECCODES_IFS_SAMPLES_PATH}/${_basedir}
-         PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ )
-
-file( COPY ${ifs_samples_${_basedir}}
-      DESTINATION ${CMAKE_BINARY_DIR}/share/${PROJECT_NAME}/ifs_samples/${_basedir} )
+install_samples( ifs_samples_${_basedir} ${_destination_install} ${_destination_build} )
diff --git a/ifs_samples/grib1_mlgrib2_ieee64/CMakeLists.txt b/ifs_samples/grib1_mlgrib2_ieee64/CMakeLists.txt
index 4d7974a..c041dc3 100644
--- a/ifs_samples/grib1_mlgrib2_ieee64/CMakeLists.txt
+++ b/ifs_samples/grib1_mlgrib2_ieee64/CMakeLists.txt
@@ -1,15 +1,13 @@
 set( _basedir grib1_mlgrib2_ieee64 )
+set( _destination_install ${CMAKE_INSTALL_PREFIX}/${ECCODES_IFS_SAMPLES_SUFF}/${_basedir} )
+set( _destination_build   ${CMAKE_BINARY_DIR}/${ECCODES_IFS_SAMPLES_SUFF}/${_basedir} )
 
 list( APPEND ifs_samples_${_basedir}
-      gg_ml.tmpl
-      gg_sfc.tmpl
-      sh_ml.tmpl
-      sh_sfc.tmpl
+      ${CMAKE_CURRENT_SOURCE_DIR}/gg_ml.tmpl
+      ${CMAKE_CURRENT_SOURCE_DIR}/gg_sfc.tmpl
+      ${CMAKE_CURRENT_SOURCE_DIR}/sh_ml.tmpl
+      ${CMAKE_CURRENT_SOURCE_DIR}/sh_sfc.tmpl
+      ${ECCODES_SAMPLES_FILES}
 )
 
-install( FILES ${ECCODES_SAMPLES_FILES} ${ifs_samples_${_basedir}}  
-         DESTINATION ${ECCODES_IFS_SAMPLES_PATH}/${_basedir}
-         PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ )
-
-file( COPY ${ifs_samples_${_basedir}}
-      DESTINATION ${CMAKE_BINARY_DIR}/share/${PROJECT_NAME}/ifs_samples/${_basedir} )
+install_samples( ifs_samples_${_basedir} ${_destination_install} ${_destination_build} )
diff --git a/ifs_samples/grib1_mlgrib2_ieee64/Makefile b/ifs_samples/grib1_mlgrib2_ieee64/Makefile
deleted file mode 100644
index c6a6eea..0000000
--- a/ifs_samples/grib1_mlgrib2_ieee64/Makefile
+++ /dev/null
@@ -1,865 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# ifs_samples/grib1_mlgrib2_ieee64/Makefile.  Generated from Makefile.in by configure.
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-#This file is generated by make_makefile_am.pl
-#  DON'T EDIT!!!
-
-
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/eccodes
-pkgincludedir = $(includedir)/eccodes
-pkglibdir = $(libdir)/eccodes
-pkglibexecdir = $(libexecdir)/eccodes
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = x86_64-suse-linux-gnu
-host_triplet = x86_64-suse-linux-gnu
-subdir = ifs_samples/grib1_mlgrib2_ieee64
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(dist_grib1_mlgrib2_ieee64_DATA)
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_$(V))
-am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(grib1_mlgrib2_ieee64dir)" \
-	"$(DESTDIR)$(grib1_mlgrib2_ieee64dir)"
-DATA = $(dist_grib1_mlgrib2_ieee64_DATA) \
-	$(nodist_grib1_mlgrib2_ieee64_DATA)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing aclocal-1.13
-AEC_DIR = 
-AMTAR = $${TAR-tar}
-AM_DEFAULT_VERBOSITY = 1
-AR = ar
-AUTOCONF = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoconf
-AUTOHEADER = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoheader
-AUTOMAKE = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing automake-1.13
-AWK = gawk
-CC = gcc
-CCDEPMODE = depmode=gcc3
-CCSDS_TEST = 
-CFLAGS = -g -O2
-CPP = gcc -E
-CPPFLAGS = 
-CYGPATH_W = echo
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DEVEL_RULES = dummy.am
-DLLTOOL = false
-DSYMUTIL = 
-DUMPBIN = 
-ECCODES_AGE = 0
-ECCODES_CURRENT = 1
-ECCODES_DEFINITION_PATH = ${datarootdir}/eccodes/definitions
-ECCODES_MAIN_VERSION = 0.10.0
-ECCODES_MAJOR_VERSION = 0
-ECCODES_MINOR_VERSION = 10
-ECCODES_PATCH_VERSION = 0
-ECCODES_REVISION = 0
-ECCODES_SAMPLES_PATH = ${datarootdir}/eccodes/samples
-ECCODES_VERSION_STR = 0.10.0
-ECHO_C = 
-ECHO_N = -n
-ECHO_T = 
-EGREP = /usr/bin/grep -E
-EMOS_LIB = 
-EXEEXT = 
-F77 = gfortran
-F90_CHECK = examples/F90
-F90_MODULE_FLAG = -I
-FC = gfortran
-FCFLAGS = -g -O2
-FFLAGS = -g -O2
-FGREP = /usr/bin/grep -F
-FORTRAN_MOD = fortran
-GREP = /usr/bin/grep
-GRIB_API_INC = /tmp/masn/git/grib_api/eccodes/src
-GRIB_API_LIB = /tmp/masn/git/grib_api/eccodes/src/grib_api.a
-GRIB_DEVEL = 0
-IFS_SAMPLES_DIR = ${datarootdir}/eccodes/ifs_samples
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-JASPER_DIR = system
-JPEG_TEST = jpeg.sh
-LD = /usr/x86_64-suse-linux/bin/ld -m elf_x86_64
-LDFLAGS = 
-LEX = flex
-LEXLIB = -lfl
-LEX_OUTPUT_ROOT = lex.yy
-LIBOBJS = 
-LIBS = -lm -ljasper 
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LIBTOOL_DEPS = config/ltmain.sh
-LIB_AEC = 
-LIB_JASPER = -ljasper
-LIB_OPENJPEG = 
-LIB_PNG = 
-LINUX_DISTRIBUTION_NAME = openSUSE 13.1 (x86_64)
-LINUX_DISTRIBUTION_VERSION = 
-LIPO = 
-LN_S = ln -s
-LTLIBOBJS = 
-MAKEINFO = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing makeinfo
-MANIFEST_TOOL = :
-MKDIR_P = /usr/bin/mkdir -p
-NETCDF_LDFLAGS = 
-NM = /usr/bin/nm -B
-NMEDIT = 
-NUMPY_INCLUDE = /usr/local/apps/python/2.7.8-01/lib/python2.7/site-packages/numpy/core/include
-OBJDUMP = objdump
-OBJEXT = o
-OPENJPEG_DIR = system
-OTOOL = 
-OTOOL64 = 
-PACKAGE = eccodes
-PACKAGE_BUGREPORT = Software.Support at ecmwf.int
-PACKAGE_NAME = eccodes
-PACKAGE_STRING = eccodes  
-PACKAGE_TARNAME = eccodes
-PACKAGE_URL = 
-PACKAGE_VERSION = 0.10.0
-PATH_SEPARATOR = :
-PERL = 
-PERLDIR = perl
-PERL_INSTALL_OPTIONS = LIB=NONE/perl
-PERL_MAKE_OPTIONS = 
-PYTHON = /usr/local/apps/python/2.7.8-01/bin/python
-PYTHON_CFLAGS = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7 -fno-strict-aliasing -O3 -fpic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
-PYTHON_CHECK = examples/python
-PYTHON_CONFIG = /usr/local/apps/python/2.7.8-01/bin/python2.7-config
-PYTHON_DATA_HANDLER = numpy
-PYTHON_EXEC_PREFIX = ${exec_prefix}
-PYTHON_INCLUDES = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7
-PYTHON_LDFLAGS = -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic
-PYTHON_LIBS = -lpthread -ldl -lutil -lm -lpython2.7
-PYTHON_PLATFORM = linux2
-PYTHON_PREFIX = ${prefix}
-PYTHON_VERSION = 2.7
-RANLIB = ranlib
-RM = rm -f
-RPM_CONFIGURE_ARGS =  '--enable-python' '--disable-shared' 'CC=gcc' 'F77=gfortran' 'FC=gfortran'
-RPM_HOST_CPU = x86_64
-RPM_HOST_OS = linux-gnu
-RPM_HOST_VENDOR = suse
-RPM_RELEASE = 1
-SED = /usr/bin/sed
-SET_MAKE = 
-SHELL = /bin/sh
-STRIP = strip
-VERSION = 0.10.0
-WARN_PEDANTIC = -pedantic -Wall
-WERROR = 
-YACC = bison -y
-YFLAGS = 
-abs_builddir = /tmp/masn/git/grib_api/eccodes/ifs_samples/grib1_mlgrib2_ieee64
-abs_srcdir = /tmp/masn/git/grib_api/eccodes/ifs_samples/grib1_mlgrib2_ieee64
-abs_top_builddir = /tmp/masn/git/grib_api/eccodes
-abs_top_srcdir = /tmp/masn/git/grib_api/eccodes
-ac_ct_AR = ar
-ac_ct_CC = gcc
-ac_ct_DUMPBIN = 
-ac_ct_F77 = 
-ac_ct_FC = 
-am__include = include
-am__leading_dot = .
-am__quote = 
-am__tar = $${TAR-tar} chof - "$$tardir"
-am__untar = $${TAR-tar} xf -
-bindir = ${exec_prefix}/bin
-build = x86_64-suse-linux-gnu
-build_alias = 
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = suse
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-host = x86_64-suse-linux-gnu
-host_alias = 
-host_cpu = x86_64
-host_os = linux-gnu
-host_vendor = suse
-htmldir = ${docdir}
-includedir = ${prefix}/include
-infodir = ${datarootdir}/info
-install_sh = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localedir = ${datarootdir}/locale
-localstatedir = ${prefix}/var
-mandir = ${datarootdir}/man
-mkdir_p = $(MKDIR_P)
-oldincludedir = /usr/include
-pdfdir = ${docdir}
-pkgpyexecdir = ${pyexecdir}/eccodes
-pkgpythondir = ${pythondir}/eccodes
-prefix = /usr/local
-program_transform_name = s,x,x,
-psdir = ${docdir}
-pyexecdir = ${exec_prefix}/lib/python2.7/site-packages
-pythondir = ${prefix}/lib/python2.7/site-packages
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-srcdir = .
-sysconfdir = ${prefix}/etc
-target_alias = 
-top_build_prefix = ../../
-top_builddir = ../..
-top_srcdir = ../..
-grib1_mlgrib2_ieee64dir = ${datarootdir}/eccodes/ifs_samples/grib1_mlgrib2_ieee64
-dist_grib1_mlgrib2_ieee64_DATA = \
-	gg_ml.tmpl \
-	gg_sfc.tmpl \
-	sh_ml.tmpl \
-	sh_sfc.tmpl 
-
-nodist_grib1_mlgrib2_ieee64_DATA = \
-	GRIB1.tmpl \
-	GRIB2.tmpl \
-	budg.tmpl \
-	gg_sfc_grib1.tmpl \
-	gg_sfc_grib2.tmpl \
-	polar_stereographic_pl_grib1.tmpl \
-	polar_stereographic_pl_grib2.tmpl \
-	polar_stereographic_sfc_grib1.tmpl \
-	polar_stereographic_sfc_grib2.tmpl \
-	reduced_gg_ml_grib1.tmpl \
-	reduced_gg_ml_grib2.tmpl \
-	reduced_gg_pl_1024_grib1.tmpl \
-	reduced_gg_pl_1024_grib2.tmpl \
-	reduced_gg_pl_1280_grib1.tmpl \
-	reduced_gg_pl_1280_grib2.tmpl \
-	reduced_gg_pl_128_grib1.tmpl \
-	reduced_gg_pl_128_grib2.tmpl \
-	reduced_gg_pl_160_grib1.tmpl \
-	reduced_gg_pl_160_grib2.tmpl \
-	reduced_gg_pl_2000_grib1.tmpl \
-	reduced_gg_pl_2000_grib2.tmpl \
-	reduced_gg_pl_200_grib1.tmpl \
-	reduced_gg_pl_200_grib2.tmpl \
-	reduced_gg_pl_256_grib1.tmpl \
-	reduced_gg_pl_256_grib2.tmpl \
-	reduced_gg_pl_320_grib1.tmpl \
-	reduced_gg_pl_320_grib2.tmpl \
-	reduced_gg_pl_32_grib1.tmpl \
-	reduced_gg_pl_32_grib2.tmpl \
-	reduced_gg_pl_400_grib1.tmpl \
-	reduced_gg_pl_400_grib2.tmpl \
-	reduced_gg_pl_48_grib1.tmpl \
-	reduced_gg_pl_48_grib2.tmpl \
-	reduced_gg_pl_512_grib1.tmpl \
-	reduced_gg_pl_512_grib2.tmpl \
-	reduced_gg_pl_640_grib1.tmpl \
-	reduced_gg_pl_640_grib2.tmpl \
-	reduced_gg_pl_80_grib1.tmpl \
-	reduced_gg_pl_80_grib2.tmpl \
-	reduced_gg_pl_96_grib1.tmpl \
-	reduced_gg_pl_96_grib2.tmpl \
-	reduced_gg_pl_grib1.tmpl \
-	reduced_gg_pl_grib2.tmpl \
-	reduced_gg_sfc_grib1.tmpl \
-	reduced_gg_sfc_grib2.tmpl \
-	reduced_gg_sfc_jpeg_grib2.tmpl \
-	reduced_ll_sfc_grib1.tmpl \
-	reduced_ll_sfc_grib2.tmpl \
-	regular_gg_ml_grib1.tmpl \
-	regular_gg_ml_grib2.tmpl \
-	regular_gg_pl_grib1.tmpl \
-	regular_gg_pl_grib2.tmpl \
-	regular_gg_sfc_grib1.tmpl \
-	regular_gg_sfc_grib2.tmpl \
-	regular_ll_pl_grib1.tmpl \
-	regular_ll_pl_grib2.tmpl \
-	regular_ll_sfc_grib1.tmpl \
-	regular_ll_sfc_grib2.tmpl \
-	rotated_ll_pl_grib1.tmpl \
-	rotated_ll_pl_grib2.tmpl \
-	rotated_ll_sfc_grib1.tmpl \
-	rotated_ll_sfc_grib2.tmpl \
-	sh_ml_grib1.tmpl \
-	sh_ml_grib2.tmpl \
-	sh_pl_grib1.tmpl \
-	sh_pl_grib2.tmpl \
-	sh_sfc_grib1.tmpl \
-	sh_sfc_grib2.tmpl \
-	clusters_grib1.tmpl
-
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ifs_samples/grib1_mlgrib2_ieee64/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu ifs_samples/grib1_mlgrib2_ieee64/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-dist_grib1_mlgrib2_ieee64DATA: $(dist_grib1_mlgrib2_ieee64_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_grib1_mlgrib2_ieee64_DATA)'; test -n "$(grib1_mlgrib2_ieee64dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(grib1_mlgrib2_ieee64dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(grib1_mlgrib2_ieee64dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(grib1_mlgrib2_ieee64dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(grib1_mlgrib2_ieee64dir)" || exit $$?; \
-	done
-
-uninstall-dist_grib1_mlgrib2_ieee64DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_grib1_mlgrib2_ieee64_DATA)'; test -n "$(grib1_mlgrib2_ieee64dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(grib1_mlgrib2_ieee64dir)'; $(am__uninstall_files_from_dir)
-install-nodist_grib1_mlgrib2_ieee64DATA: $(nodist_grib1_mlgrib2_ieee64_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(nodist_grib1_mlgrib2_ieee64_DATA)'; test -n "$(grib1_mlgrib2_ieee64dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(grib1_mlgrib2_ieee64dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(grib1_mlgrib2_ieee64dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(grib1_mlgrib2_ieee64dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(grib1_mlgrib2_ieee64dir)" || exit $$?; \
-	done
-
-uninstall-nodist_grib1_mlgrib2_ieee64DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(nodist_grib1_mlgrib2_ieee64_DATA)'; test -n "$(grib1_mlgrib2_ieee64dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(grib1_mlgrib2_ieee64dir)'; $(am__uninstall_files_from_dir)
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
-	for dir in "$(DESTDIR)$(grib1_mlgrib2_ieee64dir)" "$(DESTDIR)$(grib1_mlgrib2_ieee64dir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-dist_grib1_mlgrib2_ieee64DATA \
-	install-nodist_grib1_mlgrib2_ieee64DATA
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-dist_grib1_mlgrib2_ieee64DATA \
-	uninstall-nodist_grib1_mlgrib2_ieee64DATA
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	cscopelist-am ctags-am distclean distclean-generic \
-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-dist_grib1_mlgrib2_ieee64DATA install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-nodist_grib1_mlgrib2_ieee64DATA install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
-	uninstall-am uninstall-dist_grib1_mlgrib2_ieee64DATA \
-	uninstall-nodist_grib1_mlgrib2_ieee64DATA
-
-
-GRIB1.tmpl: ../../samples/GRIB1.tmpl
-	cp -f ../../samples/GRIB1.tmpl .
-
-GRIB2.tmpl: ../../samples/GRIB2.tmpl
-	cp -f ../../samples/GRIB2.tmpl .
-
-gg_sfc_grib1.tmpl: ../../samples/gg_sfc_grib1.tmpl
-	cp -f ../../samples/gg_sfc_grib1.tmpl .
-
-budg.tmpl: ../../samples/budg.tmpl
-	cp -f ../../samples/budg.tmpl .
-
-gg_sfc_grib2.tmpl: ../../samples/gg_sfc_grib2.tmpl
-	cp -f ../../samples/gg_sfc_grib2.tmpl .
-
-polar_stereographic_pl_grib1.tmpl: ../../samples/polar_stereographic_pl_grib1.tmpl
-	cp -f ../../samples/polar_stereographic_pl_grib1.tmpl .
-
-polar_stereographic_pl_grib2.tmpl: ../../samples/polar_stereographic_pl_grib2.tmpl
-	cp -f ../../samples/polar_stereographic_pl_grib2.tmpl .
-
-polar_stereographic_sfc_grib1.tmpl: ../../samples/polar_stereographic_sfc_grib1.tmpl
-	cp -f ../../samples/polar_stereographic_sfc_grib1.tmpl .
-
-polar_stereographic_sfc_grib2.tmpl: ../../samples/polar_stereographic_sfc_grib2.tmpl
-	cp -f ../../samples/polar_stereographic_sfc_grib2.tmpl .
-
-reduced_gg_ml_grib1.tmpl: ../../samples/reduced_gg_ml_grib1.tmpl
-	cp -f ../../samples/reduced_gg_ml_grib1.tmpl .
-
-reduced_gg_ml_grib2.tmpl: ../../samples/reduced_gg_ml_grib2.tmpl
-	cp -f ../../samples/reduced_gg_ml_grib2.tmpl .
-
-reduced_gg_pl_1024_grib1.tmpl: ../../samples/reduced_gg_pl_1024_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_1024_grib1.tmpl .
-
-reduced_gg_pl_1024_grib2.tmpl: ../../samples/reduced_gg_pl_1024_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_1024_grib2.tmpl .
-
-reduced_gg_pl_1280_grib1.tmpl: ../../samples/reduced_gg_pl_1280_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_1280_grib1.tmpl .
-
-reduced_gg_pl_1280_grib2.tmpl: ../../samples/reduced_gg_pl_1280_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_1280_grib2.tmpl .
-
-reduced_gg_pl_128_grib1.tmpl: ../../samples/reduced_gg_pl_128_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_128_grib1.tmpl .
-
-reduced_gg_pl_128_grib2.tmpl: ../../samples/reduced_gg_pl_128_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_128_grib2.tmpl .
-
-reduced_gg_pl_160_grib1.tmpl: ../../samples/reduced_gg_pl_160_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_160_grib1.tmpl .
-
-reduced_gg_pl_160_grib2.tmpl: ../../samples/reduced_gg_pl_160_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_160_grib2.tmpl .
-
-reduced_gg_pl_2000_grib1.tmpl: ../../samples/reduced_gg_pl_2000_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_2000_grib1.tmpl .
-
-reduced_gg_pl_2000_grib2.tmpl: ../../samples/reduced_gg_pl_2000_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_2000_grib2.tmpl .
-
-reduced_gg_pl_200_grib1.tmpl: ../../samples/reduced_gg_pl_200_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_200_grib1.tmpl .
-
-reduced_gg_pl_200_grib2.tmpl: ../../samples/reduced_gg_pl_200_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_200_grib2.tmpl .
-
-reduced_gg_pl_256_grib1.tmpl: ../../samples/reduced_gg_pl_256_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_256_grib1.tmpl .
-
-reduced_gg_pl_256_grib2.tmpl: ../../samples/reduced_gg_pl_256_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_256_grib2.tmpl .
-
-reduced_gg_pl_320_grib1.tmpl: ../../samples/reduced_gg_pl_320_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_320_grib1.tmpl .
-
-reduced_gg_pl_320_grib2.tmpl: ../../samples/reduced_gg_pl_320_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_320_grib2.tmpl .
-
-reduced_gg_pl_32_grib1.tmpl: ../../samples/reduced_gg_pl_32_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_32_grib1.tmpl .
-
-reduced_gg_pl_32_grib2.tmpl: ../../samples/reduced_gg_pl_32_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_32_grib2.tmpl .
-
-reduced_gg_pl_400_grib1.tmpl: ../../samples/reduced_gg_pl_400_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_400_grib1.tmpl .
-
-reduced_gg_pl_400_grib2.tmpl: ../../samples/reduced_gg_pl_400_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_400_grib2.tmpl .
-
-reduced_gg_pl_48_grib1.tmpl: ../../samples/reduced_gg_pl_48_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_48_grib1.tmpl .
-
-reduced_gg_pl_48_grib2.tmpl: ../../samples/reduced_gg_pl_48_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_48_grib2.tmpl .
-
-reduced_gg_pl_512_grib1.tmpl: ../../samples/reduced_gg_pl_512_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_512_grib1.tmpl .
-
-reduced_gg_pl_512_grib2.tmpl: ../../samples/reduced_gg_pl_512_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_512_grib2.tmpl .
-
-reduced_gg_pl_640_grib1.tmpl: ../../samples/reduced_gg_pl_640_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_640_grib1.tmpl .
-
-reduced_gg_pl_640_grib2.tmpl: ../../samples/reduced_gg_pl_640_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_640_grib2.tmpl .
-
-reduced_gg_pl_80_grib1.tmpl: ../../samples/reduced_gg_pl_80_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_80_grib1.tmpl .
-
-reduced_gg_pl_80_grib2.tmpl: ../../samples/reduced_gg_pl_80_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_80_grib2.tmpl .
-
-reduced_gg_pl_96_grib1.tmpl: ../../samples/reduced_gg_pl_96_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_96_grib1.tmpl .
-
-reduced_gg_pl_96_grib2.tmpl: ../../samples/reduced_gg_pl_96_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_96_grib2.tmpl .
-
-reduced_gg_pl_grib1.tmpl: ../../samples/reduced_gg_pl_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_grib1.tmpl .
-
-reduced_gg_pl_grib2.tmpl: ../../samples/reduced_gg_pl_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_grib2.tmpl .
-
-reduced_gg_sfc_grib1.tmpl: ../../samples/reduced_gg_sfc_grib1.tmpl
-	cp -f ../../samples/reduced_gg_sfc_grib1.tmpl .
-
-reduced_gg_sfc_grib2.tmpl: ../../samples/reduced_gg_sfc_grib2.tmpl
-	cp -f ../../samples/reduced_gg_sfc_grib2.tmpl .
-
-reduced_gg_sfc_jpeg_grib2.tmpl: ../../samples/reduced_gg_sfc_jpeg_grib2.tmpl
-	cp -f ../../samples/reduced_gg_sfc_jpeg_grib2.tmpl .
-
-reduced_ll_sfc_grib1.tmpl: ../../samples/reduced_ll_sfc_grib1.tmpl
-	cp -f ../../samples/reduced_ll_sfc_grib1.tmpl .
-
-reduced_ll_sfc_grib2.tmpl: ../../samples/reduced_ll_sfc_grib2.tmpl
-	cp -f ../../samples/reduced_ll_sfc_grib2.tmpl .
-
-regular_gg_ml_grib1.tmpl: ../../samples/regular_gg_ml_grib1.tmpl
-	cp -f ../../samples/regular_gg_ml_grib1.tmpl .
-
-regular_gg_ml_grib2.tmpl: ../../samples/regular_gg_ml_grib2.tmpl
-	cp -f ../../samples/regular_gg_ml_grib2.tmpl .
-
-regular_gg_pl_grib1.tmpl: ../../samples/regular_gg_pl_grib1.tmpl
-	cp -f ../../samples/regular_gg_pl_grib1.tmpl .
-
-regular_gg_pl_grib2.tmpl: ../../samples/regular_gg_pl_grib2.tmpl
-	cp -f ../../samples/regular_gg_pl_grib2.tmpl .
-
-regular_gg_sfc_grib1.tmpl: ../../samples/regular_gg_sfc_grib1.tmpl
-	cp -f ../../samples/regular_gg_sfc_grib1.tmpl .
-
-regular_gg_sfc_grib2.tmpl: ../../samples/regular_gg_sfc_grib2.tmpl
-	cp -f ../../samples/regular_gg_sfc_grib2.tmpl .
-
-regular_ll_pl_grib1.tmpl: ../../samples/regular_ll_pl_grib1.tmpl
-	cp -f ../../samples/regular_ll_pl_grib1.tmpl .
-
-regular_ll_pl_grib2.tmpl: ../../samples/regular_ll_pl_grib2.tmpl
-	cp -f ../../samples/regular_ll_pl_grib2.tmpl .
-
-regular_ll_sfc_grib1.tmpl: ../../samples/regular_ll_sfc_grib1.tmpl
-	cp -f ../../samples/regular_ll_sfc_grib1.tmpl .
-
-regular_ll_sfc_grib2.tmpl: ../../samples/regular_ll_sfc_grib2.tmpl
-	cp -f ../../samples/regular_ll_sfc_grib2.tmpl .
-
-rotated_ll_pl_grib1.tmpl: ../../samples/rotated_ll_pl_grib1.tmpl
-	cp -f ../../samples/rotated_ll_pl_grib1.tmpl .
-
-rotated_ll_pl_grib2.tmpl: ../../samples/rotated_ll_pl_grib2.tmpl
-	cp -f ../../samples/rotated_ll_pl_grib2.tmpl .
-
-rotated_ll_sfc_grib1.tmpl: ../../samples/rotated_ll_sfc_grib1.tmpl
-	cp -f ../../samples/rotated_ll_sfc_grib1.tmpl .
-
-rotated_ll_sfc_grib2.tmpl: ../../samples/rotated_ll_sfc_grib2.tmpl
-	cp -f ../../samples/rotated_ll_sfc_grib2.tmpl .
-
-sh_ml_grib1.tmpl: ../../samples/sh_ml_grib1.tmpl
-	cp -f ../../samples/sh_ml_grib1.tmpl .
-
-sh_ml_grib2.tmpl: ../../samples/sh_ml_grib2.tmpl
-	cp -f ../../samples/sh_ml_grib2.tmpl .
-
-sh_pl_grib1.tmpl: ../../samples/sh_pl_grib1.tmpl
-	cp -f ../../samples/sh_pl_grib1.tmpl .
-
-sh_pl_grib2.tmpl: ../../samples/sh_pl_grib2.tmpl
-	cp -f ../../samples/sh_pl_grib2.tmpl .
-
-sh_sfc_grib1.tmpl: ../../samples/sh_sfc_grib1.tmpl
-	cp -f ../../samples/sh_sfc_grib1.tmpl .
-
-sh_sfc_grib2.tmpl: ../../samples/sh_sfc_grib2.tmpl
-	cp -f ../../samples/sh_sfc_grib2.tmpl .
-
-clusters_grib1.tmpl: ../../samples/clusters_grib1.tmpl
-	cp -f ../../samples/clusters_grib1.tmpl .
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/libtool b/libtool
index 3f45380..f652d08 100755
--- a/libtool
+++ b/libtool
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 # libtool - Provide generalized library-building support services.
-# Generated automatically by config.status (eccodes) 0.10.0
+# Generated automatically by config.status (eccodes) 0.13.0
 # Libtool was configured on host costard:
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 #
@@ -275,7 +275,7 @@ hardcode_into_libs=yes
 sys_lib_search_path_spec="/usr/lib64/gcc/x86_64-suse-linux/4.8 /usr/lib64 /lib64 /usr/x86_64-suse-linux/lib "
 
 # Run-time system search path for libraries.
-sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/local/lib64 /usr/local/lib /usr/lib64/apper /usr/lib64/graphviz /usr/lib64/graphviz/sharp /usr/lib64/graphviz/java /usr/lib64/graphviz/perl /usr/lib64/graphviz/php /usr/lib64/graphviz/ocaml /usr/lib64/graphviz/python /usr/lib64/graphviz/lua /usr/lib64/graphviz/tcl /usr/lib64/graphviz/guile /usr/lib64/graphviz/ruby /opt/kde3/lib64 /opt/kde3/lib /usr/lib64/mysql-workbench /usr/X11R6/lib64 /usr/X11R6/lib /usr/X11R6/lib64 /usr/X11R6/lib /usr/lib [...]
+sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/local/lib64 /usr/local/lib /usr/lib64/apper /usr/lib64/graphviz /usr/lib64/graphviz/sharp /usr/lib64/graphviz/java /usr/lib64/graphviz/perl /usr/lib64/graphviz/php /usr/lib64/graphviz/ocaml /usr/lib64/graphviz/python /usr/lib64/graphviz/lua /usr/lib64/graphviz/tcl /usr/lib64/graphviz/guile /usr/lib64/graphviz/ruby /opt/kde3/lib64 /opt/kde3/lib /usr/lib64/mysql-workbench /usr/X11R6/lib64 /usr/X11R6/lib /usr/lib64/smokegen "
 
 # Whether dlopen is supported.
 dlopen_support=unknown
diff --git a/license.pl b/license.pl
index c931832..8e7223e 100755
--- a/license.pl
+++ b/license.pl
@@ -2,7 +2,7 @@
 use strict;
 
 my $APACHE = <<"EOF";
-Copyright 2005-2015 ECMWF.
+Copyright 2005-2016 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.
diff --git a/mars_tests/include.sh b/mars_tests/include.sh
index 16601d3..426cb75 100644
--- a/mars_tests/include.sh
+++ b/mars_tests/include.sh
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/mars_tests/ls.sh b/mars_tests/ls.sh
index 72a4a2f..e0ecff6 100755
--- a/mars_tests/ls.sh
+++ b/mars_tests/ls.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/perf/jmeter.awk b/perf/jmeter.awk
index 6b031a2..790c913 100644
--- a/perf/jmeter.awk
+++ b/perf/jmeter.awk
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/perf/time.sh b/perf/time.sh
index 35ebbdd..50a8e08 100755
--- a/perf/time.sh
+++ b/perf/time.sh
@@ -1,6 +1,6 @@
 # This script times stuff to get nice reports
 
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/perl/GRIB-API/Makefile.PL b/perl/GRIB-API/Makefile.PL
index 41aba46..7d676c2 100644
--- a/perl/GRIB-API/Makefile.PL
+++ b/perl/GRIB-API/Makefile.PL
@@ -5,7 +5,7 @@ use ExtUtils::MakeMaker;
 WriteMakefile(
     NAME              => 'GRIB::API',
    # Module version
-   'VERSION'   => '0.10.0',
+   'VERSION'   => '0.13.0',
 
    # Preprocessor defines
    'DEFINE' => '-DHAVE_CONFIG_H',     # e.g., '-DHAVE_SOMETHING'
@@ -16,7 +16,7 @@ WriteMakefile(
       (ABSTRACT_FROM  => 'lib/GRIB/API.pm', # retrieve abstract from module
        AUTHOR         => 'Baudouin Raoult <mab at suse.de>') : ()),
     LIBS              => ['-L../../src -lgrib_api -lm @LIB_JP2@ '], # e.g., '-lm'
-    INC               => '-I/tmp/masn/git/grib_api/eccodes/src', # e.g., '-I. -I/usr/include/other'
+    INC               => '-I/home/ma/masn/git/eccodes/src', # e.g., '-I. -I/usr/include/other'
 	# Un-comment this if you add C files to link with later:
     # OBJECT            => '$(O_FILES)', # link all the C files too
 	depend           => { "API.o" => "../../src/libgrib_api.a" }
diff --git a/perl/GRIB-API/README b/perl/GRIB-API/README
index 8879c3e..da0047f 100644
--- a/perl/GRIB-API/README
+++ b/perl/GRIB-API/README
@@ -28,7 +28,7 @@ This module requires these other modules and libraries:
   blah blah blah
 
 COPYRIGHT AND LICENCE
-Copyright 2005-2015 ECMWF.
+Copyright 2005-2016 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.
diff --git a/perl/GRIB-API/convert.pl b/perl/GRIB-API/convert.pl
index c21fec4..5149078 100755
--- a/perl/GRIB-API/convert.pl
+++ b/perl/GRIB-API/convert.pl
@@ -1,5 +1,5 @@
 #!/usr/bin/perl
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/perl/GRIB-API/t/GRIB-API.t b/perl/GRIB-API/t/GRIB-API.t
new file mode 100644
index 0000000..58130ff
--- /dev/null
+++ b/perl/GRIB-API/t/GRIB-API.t
@@ -0,0 +1,27 @@
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl GRIB-API.t'
+
+#########################
+
+# change 'tests => 1' to 'tests => last_test_to_print';
+
+use Test::More tests => 1;
+BEGIN { use_ok('GRIB::API') };
+
+#########################
+
+# Insert your test code below, the Test::More module is use()ed here so read
+# its man page ( perldoc Test::More ) for help writing this test script.
+
+use Data::Dumper;
+
+ok(test1());
+
+sub test1 {
+print "here\n";
+
+open(IN,"</tmp/data.grib");
+my $x = GRIB::API::Read(\*IN);
+print Dumper($x);
+
+}
diff --git a/perl/GRIB-API/test.pl b/perl/GRIB-API/test.pl
index 29a1311..67ceabb 100755
--- a/perl/GRIB-API/test.pl
+++ b/perl/GRIB-API/test.pl
@@ -1,5 +1,5 @@
 #!/usr/local/bin/perl56 
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/perl/Makefile b/perl/Makefile
deleted file mode 100644
index b615804..0000000
--- a/perl/Makefile
+++ /dev/null
@@ -1,532 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# perl/Makefile.  Generated from Makefile.in by configure.
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/eccodes
-pkgincludedir = $(includedir)/eccodes
-pkglibdir = $(libdir)/eccodes
-pkglibexecdir = $(libexecdir)/eccodes
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = x86_64-suse-linux-gnu
-host_triplet = x86_64-suse-linux-gnu
-subdir = perl
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_$(V))
-am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing aclocal-1.13
-AEC_DIR = 
-AMTAR = $${TAR-tar}
-AM_DEFAULT_VERBOSITY = 1
-AR = ar
-AUTOCONF = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoconf
-AUTOHEADER = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoheader
-AUTOMAKE = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing automake-1.13
-AWK = gawk
-CC = gcc
-CCDEPMODE = depmode=gcc3
-CCSDS_TEST = 
-CFLAGS = -g -O2
-CPP = gcc -E
-CPPFLAGS = 
-CYGPATH_W = echo
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DEVEL_RULES = dummy.am
-DLLTOOL = false
-DSYMUTIL = 
-DUMPBIN = 
-ECCODES_AGE = 0
-ECCODES_CURRENT = 1
-ECCODES_DEFINITION_PATH = ${datarootdir}/eccodes/definitions
-ECCODES_MAIN_VERSION = 0.10.0
-ECCODES_MAJOR_VERSION = 0
-ECCODES_MINOR_VERSION = 10
-ECCODES_PATCH_VERSION = 0
-ECCODES_REVISION = 0
-ECCODES_SAMPLES_PATH = ${datarootdir}/eccodes/samples
-ECCODES_VERSION_STR = 0.10.0
-ECHO_C = 
-ECHO_N = -n
-ECHO_T = 
-EGREP = /usr/bin/grep -E
-EMOS_LIB = 
-EXEEXT = 
-F77 = gfortran
-F90_CHECK = examples/F90
-F90_MODULE_FLAG = -I
-FC = gfortran
-FCFLAGS = -g -O2
-FFLAGS = -g -O2
-FGREP = /usr/bin/grep -F
-FORTRAN_MOD = fortran
-GREP = /usr/bin/grep
-GRIB_API_INC = /tmp/masn/git/grib_api/eccodes/src
-GRIB_API_LIB = /tmp/masn/git/grib_api/eccodes/src/grib_api.a
-GRIB_DEVEL = 0
-IFS_SAMPLES_DIR = ${datarootdir}/eccodes/ifs_samples
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-JASPER_DIR = system
-JPEG_TEST = jpeg.sh
-LD = /usr/x86_64-suse-linux/bin/ld -m elf_x86_64
-LDFLAGS = 
-LEX = flex
-LEXLIB = -lfl
-LEX_OUTPUT_ROOT = lex.yy
-LIBOBJS = 
-LIBS = -lm -ljasper 
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LIBTOOL_DEPS = config/ltmain.sh
-LIB_AEC = 
-LIB_JASPER = -ljasper
-LIB_OPENJPEG = 
-LIB_PNG = 
-LINUX_DISTRIBUTION_NAME = openSUSE 13.1 (x86_64)
-LINUX_DISTRIBUTION_VERSION = 
-LIPO = 
-LN_S = ln -s
-LTLIBOBJS = 
-MAKEINFO = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing makeinfo
-MANIFEST_TOOL = :
-MKDIR_P = /usr/bin/mkdir -p
-NETCDF_LDFLAGS = 
-NM = /usr/bin/nm -B
-NMEDIT = 
-NUMPY_INCLUDE = /usr/local/apps/python/2.7.8-01/lib/python2.7/site-packages/numpy/core/include
-OBJDUMP = objdump
-OBJEXT = o
-OPENJPEG_DIR = system
-OTOOL = 
-OTOOL64 = 
-PACKAGE = eccodes
-PACKAGE_BUGREPORT = Software.Support at ecmwf.int
-PACKAGE_NAME = eccodes
-PACKAGE_STRING = eccodes  
-PACKAGE_TARNAME = eccodes
-PACKAGE_URL = 
-PACKAGE_VERSION = 0.10.0
-PATH_SEPARATOR = :
-PERL = 
-PERLDIR = perl
-PERL_INSTALL_OPTIONS = LIB=NONE/perl
-PERL_MAKE_OPTIONS = 
-PYTHON = /usr/local/apps/python/2.7.8-01/bin/python
-PYTHON_CFLAGS = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7 -fno-strict-aliasing -O3 -fpic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
-PYTHON_CHECK = examples/python
-PYTHON_CONFIG = /usr/local/apps/python/2.7.8-01/bin/python2.7-config
-PYTHON_DATA_HANDLER = numpy
-PYTHON_EXEC_PREFIX = ${exec_prefix}
-PYTHON_INCLUDES = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7
-PYTHON_LDFLAGS = -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic
-PYTHON_LIBS = -lpthread -ldl -lutil -lm -lpython2.7
-PYTHON_PLATFORM = linux2
-PYTHON_PREFIX = ${prefix}
-PYTHON_VERSION = 2.7
-RANLIB = ranlib
-RM = rm -f
-RPM_CONFIGURE_ARGS =  '--enable-python' '--disable-shared' 'CC=gcc' 'F77=gfortran' 'FC=gfortran'
-RPM_HOST_CPU = x86_64
-RPM_HOST_OS = linux-gnu
-RPM_HOST_VENDOR = suse
-RPM_RELEASE = 1
-SED = /usr/bin/sed
-SET_MAKE = 
-SHELL = /bin/sh
-STRIP = strip
-VERSION = 0.10.0
-WARN_PEDANTIC = -pedantic -Wall
-WERROR = 
-YACC = bison -y
-YFLAGS = 
-abs_builddir = /tmp/masn/git/grib_api/eccodes/perl
-abs_srcdir = /tmp/masn/git/grib_api/eccodes/perl
-abs_top_builddir = /tmp/masn/git/grib_api/eccodes
-abs_top_srcdir = /tmp/masn/git/grib_api/eccodes
-ac_ct_AR = ar
-ac_ct_CC = gcc
-ac_ct_DUMPBIN = 
-ac_ct_F77 = 
-ac_ct_FC = 
-am__include = include
-am__leading_dot = .
-am__quote = 
-am__tar = $${TAR-tar} chof - "$$tardir"
-am__untar = $${TAR-tar} xf -
-bindir = ${exec_prefix}/bin
-build = x86_64-suse-linux-gnu
-build_alias = 
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = suse
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-host = x86_64-suse-linux-gnu
-host_alias = 
-host_cpu = x86_64
-host_os = linux-gnu
-host_vendor = suse
-htmldir = ${docdir}
-includedir = ${prefix}/include
-infodir = ${datarootdir}/info
-install_sh = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localedir = ${datarootdir}/locale
-localstatedir = ${prefix}/var
-mandir = ${datarootdir}/man
-mkdir_p = $(MKDIR_P)
-oldincludedir = /usr/include
-pdfdir = ${docdir}
-pkgpyexecdir = ${pyexecdir}/eccodes
-pkgpythondir = ${pythondir}/eccodes
-prefix = /usr/local
-program_transform_name = s,x,x,
-psdir = ${docdir}
-pyexecdir = ${exec_prefix}/lib/python2.7/site-packages
-pythondir = ${prefix}/lib/python2.7/site-packages
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-srcdir = .
-sysconfdir = ${prefix}/etc
-target_alias = 
-top_build_prefix = ../
-top_builddir = ..
-top_srcdir = ..
-API_DIR = GRIB-API
-PERLMAKEMAKER = $(API_DIR)/Makefile.PL
-PERLMAKEFILE = $(API_DIR)/Makefile
-PERLLIB = $(API_DIR)/blib/arch/auto/GRIB/API/API.so
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu perl/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu perl/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-	$(MAKE) $(AM_MAKEFLAGS) \
-	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
-	  dist-hook
-check-am: all-am
-check: check-am
-all-am: Makefile all-local
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am all-local check check-am clean clean-generic \
-	clean-libtool cscopelist-am ctags-am dist-hook distclean \
-	distclean-generic distclean-libtool distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
-	uninstall-am
-
-
-dist-hook:
-	( cd $(API_DIR) &&  \
-	   cat MANIFEST \
-	       | cpio -pdum $(distdir)/$(API_DIR) 2> /dev/null ; )
-
-all-local: all-perl
-
-all-perl: $(PERLLIB)
-
-$(PERLMAKEFILE): $(PERLMAKEMAKER)
-	cd $(API_DIR) &&  Makefile.PL LIB=NONE/perl  @PERL_LD_OPTIONS@ 
-
-$(PERLLIB): $(PERLMAKEFILE) $(top_builddir)/src/libgrib_api.a
-	cd $(API_DIR) && $(MAKE)
-
-$(top_builddir)/src/libgrib_api.a: $(top_builddir)/src/Makefile
-	cd $(top_builddir)/src  && $(MAKE)
-
-install-exec-perl: $(PERLMAKEFILE)
-	cd $(API_DIR) && $(MAKE) install && $(MAKE) clean
-
-install-exec-am:install-exec-perl
-
-check-perl: $(PERLMAKEFILE)
-	cd $(API_DIR) && $(MAKE) test
-
-clean-perl: $(PERLMAKEFILE)
-	cd $(API_DIR) && \
-	$(MAKE) clean && \
-	rm -f Makefile.old
-
-distclean-perl: clean-perl
-clean: clean-perl
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/python/.deps/grib_interface.Plo b/python/.deps/grib_interface.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/python/.deps/grib_interface.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/python/.deps/gribapi_swig_wrap.Plo b/python/.deps/gribapi_swig_wrap.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/python/.deps/gribapi_swig_wrap.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
index f73c2de..271bbd2 100644
--- a/python/CMakeLists.txt
+++ b/python/CMakeLists.txt
@@ -1,7 +1,5 @@
 if( HAVE_PYTHON )
 
-    ecbuild_find_python( VERSION 2.5)
-
     #find_package( SWIG )
     #if( SWIG_FOUND )
     #    include( ${SWIG_USE_FILE} )
@@ -13,14 +11,15 @@ if( HAVE_PYTHON )
     ###############################################################################
     # swig python interface
 
-    #if( HAVE_PYTHON AND SWIG_FOUND AND PYTHONLIBS_FOUND )
-    if( HAVE_PYTHON AND PYTHONLIBS_FOUND )
+    #if( SWIG_FOUND AND PYTHONLIBS_FOUND )
+    if( PYTHONLIBS_FOUND )
 
-        set(PYTHON_DEST "lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/eccodes" )
+        set(PYTHON_DEST_ECCODES "${INSTALL_LIB_DIR}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/eccodes" )
+        set(PYTHON_DEST_GRIBAPI "${INSTALL_LIB_DIR}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/gribapi" )
 
-	    file( RELATIVE_PATH relative_rpath "${CMAKE_INSTALL_PREFIX}/${PYTHON_DEST}" "${${PNAME}_FULL_INSTALL_LIB_DIR}" )
+        file( RELATIVE_PATH relative_rpath "${CMAKE_INSTALL_PREFIX}/${PYTHON_DEST_ECCODES}" "${${PNAME}_FULL_INSTALL_LIB_DIR}" )
 
-		# debug_var( relative_rpath )
+        # debug_var( relative_rpath )
 
         ecbuild_append_to_rpath( ${relative_rpath} )
         ecbuild_append_to_rpath( "../../lib" )        # for ctest to find the libs
@@ -89,11 +88,14 @@ if( HAVE_PYTHON )
         add_custom_target(copy_swig_py ALL DEPENDS ${_swig_py})
         #######################
 
-        install(TARGETS _gribapi_swig DESTINATION ${PYTHON_DEST} )
+        install(TARGETS _gribapi_swig DESTINATION ${PYTHON_DEST_GRIBAPI} )
 
-        install(FILES ${CMAKE_CURRENT_BINARY_DIR}/gribapi_swig.py  DESTINATION ${PYTHON_DEST})
-        install(FILES gribapi.py DESTINATION ${PYTHON_DEST})
-        install(FILES eccodes.py DESTINATION ${PYTHON_DEST})
+        install(FILES ${CMAKE_CURRENT_BINARY_DIR}/gribapi_swig.py  DESTINATION ${PYTHON_DEST_GRIBAPI})
+        install(FILES gribapi.py DESTINATION ${PYTHON_DEST_GRIBAPI})
+        install(FILES eccodes.py DESTINATION ${PYTHON_DEST_ECCODES})
+        
+        install(FILES init_gribapi.py DESTINATION ${PYTHON_DEST_GRIBAPI} RENAME __init__.py)
+        install(FILES init_eccodes.py DESTINATION ${PYTHON_DEST_ECCODES} RENAME __init__.py)
 
     endif()
 
diff --git a/python/Makefile b/python/Makefile
deleted file mode 100644
index 5023753..0000000
--- a/python/Makefile
+++ /dev/null
@@ -1,879 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# python/Makefile.  Generated from Makefile.in by configure.
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-
-
-
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/eccodes
-pkgincludedir = $(includedir)/eccodes
-pkglibdir = $(libdir)/eccodes
-pkglibexecdir = $(libexecdir)/eccodes
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = x86_64-suse-linux-gnu
-host_triplet = x86_64-suse-linux-gnu
-subdir = python
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/config/depcomp README
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(pkgpyexecdir)" "$(DESTDIR)$(pdir)" \
-	"$(DESTDIR)$(pkgpyexecdir)"
-LTLIBRARIES = $(pkgpyexec_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-#_gribapi_swig_la_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-#	$(am__DEPENDENCIES_1)
-am___gribapi_swig_la_SOURCES_DIST = gribapi_swig_wrap.c \
-	grib_interface.c grib_interface.h
-#am__gribapi_swig_la_OBJECTS = gribapi_swig_wrap.lo \
-#	grib_interface.lo
-_gribapi_swig_la_OBJECTS = $(am__gribapi_swig_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-_gribapi_swig_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-	$(AM_CFLAGS) $(CFLAGS) $(_gribapi_swig_la_LDFLAGS) $(LDFLAGS) \
-	-o $@
-#am__gribapi_swig_la_rpath =  \
-#	-rpath \
-#	$(pkgpyexecdir)
-SCRIPTS = $(noinst_SCRIPTS)
-AM_V_P = $(am__v_P_$(V))
-am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = $(_gribapi_swig_la_SOURCES)
-DIST_SOURCES = $(am___gribapi_swig_la_SOURCES_DIST)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-DATA = $(p_DATA) $(pkgpyexec_DATA)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing aclocal-1.13
-AEC_DIR = 
-AMTAR = $${TAR-tar}
-AM_DEFAULT_VERBOSITY = 1
-AR = ar
-AUTOCONF = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoconf
-AUTOHEADER = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoheader
-AUTOMAKE = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing automake-1.13
-AWK = gawk
-CC = gcc
-CCDEPMODE = depmode=gcc3
-CCSDS_TEST = 
-CFLAGS = -g -O2
-CPP = gcc -E
-CPPFLAGS = 
-CYGPATH_W = echo
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DEVEL_RULES = dummy.am
-DLLTOOL = false
-DSYMUTIL = 
-DUMPBIN = 
-ECCODES_AGE = 0
-ECCODES_CURRENT = 1
-ECCODES_DEFINITION_PATH = ${datarootdir}/eccodes/definitions
-ECCODES_MAIN_VERSION = 0.10.0
-ECCODES_MAJOR_VERSION = 0
-ECCODES_MINOR_VERSION = 10
-ECCODES_PATCH_VERSION = 0
-ECCODES_REVISION = 0
-ECCODES_SAMPLES_PATH = ${datarootdir}/eccodes/samples
-ECCODES_VERSION_STR = 0.10.0
-ECHO_C = 
-ECHO_N = -n
-ECHO_T = 
-EGREP = /usr/bin/grep -E
-EMOS_LIB = 
-EXEEXT = 
-F77 = gfortran
-F90_CHECK = examples/F90
-F90_MODULE_FLAG = -I
-FC = gfortran
-FCFLAGS = -g -O2
-FFLAGS = -g -O2
-FGREP = /usr/bin/grep -F
-FORTRAN_MOD = fortran
-GREP = /usr/bin/grep
-GRIB_API_INC = /tmp/masn/git/grib_api/eccodes/src
-GRIB_API_LIB = /tmp/masn/git/grib_api/eccodes/src/grib_api.a
-GRIB_DEVEL = 0
-IFS_SAMPLES_DIR = ${datarootdir}/eccodes/ifs_samples
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-JASPER_DIR = system
-JPEG_TEST = jpeg.sh
-LD = /usr/x86_64-suse-linux/bin/ld -m elf_x86_64
-LDFLAGS = 
-LEX = flex
-LEXLIB = -lfl
-LEX_OUTPUT_ROOT = lex.yy
-LIBOBJS = 
-LIBS = -lm -ljasper 
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LIBTOOL_DEPS = config/ltmain.sh
-LIB_AEC = 
-LIB_JASPER = -ljasper
-LIB_OPENJPEG = 
-LIB_PNG = 
-LINUX_DISTRIBUTION_NAME = openSUSE 13.1 (x86_64)
-LINUX_DISTRIBUTION_VERSION = 
-LIPO = 
-LN_S = ln -s
-LTLIBOBJS = 
-MAKEINFO = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing makeinfo
-MANIFEST_TOOL = :
-MKDIR_P = /usr/bin/mkdir -p
-NETCDF_LDFLAGS = 
-NM = /usr/bin/nm -B
-NMEDIT = 
-NUMPY_INCLUDE = /usr/local/apps/python/2.7.8-01/lib/python2.7/site-packages/numpy/core/include
-OBJDUMP = objdump
-OBJEXT = o
-OPENJPEG_DIR = system
-OTOOL = 
-OTOOL64 = 
-PACKAGE = eccodes
-PACKAGE_BUGREPORT = Software.Support at ecmwf.int
-PACKAGE_NAME = eccodes
-PACKAGE_STRING = eccodes  
-PACKAGE_TARNAME = eccodes
-PACKAGE_URL = 
-PACKAGE_VERSION = 0.10.0
-PATH_SEPARATOR = :
-PERL = 
-PERLDIR = perl
-PERL_INSTALL_OPTIONS = LIB=NONE/perl
-PERL_MAKE_OPTIONS = 
-PYTHON = /usr/local/apps/python/2.7.8-01/bin/python
-PYTHON_CFLAGS = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7 -fno-strict-aliasing -O3 -fpic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
-PYTHON_CHECK = examples/python
-PYTHON_CONFIG = /usr/local/apps/python/2.7.8-01/bin/python2.7-config
-PYTHON_DATA_HANDLER = numpy
-PYTHON_EXEC_PREFIX = ${exec_prefix}
-PYTHON_INCLUDES = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7
-PYTHON_LDFLAGS = -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic
-PYTHON_LIBS = -lpthread -ldl -lutil -lm -lpython2.7
-PYTHON_PLATFORM = linux2
-PYTHON_PREFIX = ${prefix}
-PYTHON_VERSION = 2.7
-RANLIB = ranlib
-RM = rm -f
-RPM_CONFIGURE_ARGS =  '--enable-python' '--disable-shared' 'CC=gcc' 'F77=gfortran' 'FC=gfortran'
-RPM_HOST_CPU = x86_64
-RPM_HOST_OS = linux-gnu
-RPM_HOST_VENDOR = suse
-RPM_RELEASE = 1
-SED = /usr/bin/sed
-SET_MAKE = 
-SHELL = /bin/sh
-STRIP = strip
-VERSION = 0.10.0
-WARN_PEDANTIC = -pedantic -Wall
-WERROR = 
-YACC = bison -y
-YFLAGS = 
-abs_builddir = /tmp/masn/git/grib_api/eccodes/python
-abs_srcdir = /tmp/masn/git/grib_api/eccodes/python
-abs_top_builddir = /tmp/masn/git/grib_api/eccodes
-abs_top_srcdir = /tmp/masn/git/grib_api/eccodes
-ac_ct_AR = ar
-ac_ct_CC = gcc
-ac_ct_DUMPBIN = 
-ac_ct_F77 = 
-ac_ct_FC = 
-am__include = include
-am__leading_dot = .
-am__quote = 
-am__tar = $${TAR-tar} chof - "$$tardir"
-am__untar = $${TAR-tar} xf -
-bindir = ${exec_prefix}/bin
-build = x86_64-suse-linux-gnu
-build_alias = 
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = suse
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-host = x86_64-suse-linux-gnu
-host_alias = 
-host_cpu = x86_64
-host_os = linux-gnu
-host_vendor = suse
-htmldir = ${docdir}
-includedir = ${prefix}/include
-infodir = ${datarootdir}/info
-install_sh = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localedir = ${datarootdir}/locale
-localstatedir = ${prefix}/var
-mandir = ${datarootdir}/man
-mkdir_p = $(MKDIR_P)
-oldincludedir = /usr/include
-pdfdir = ${docdir}
-pkgpyexecdir = ${pyexecdir}/eccodes
-pkgpythondir = ${pythondir}/eccodes
-prefix = /usr/local
-program_transform_name = s,x,x,
-psdir = ${docdir}
-pyexecdir = ${exec_prefix}/lib/python2.7/site-packages
-pythondir = ${prefix}/lib/python2.7/site-packages
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-srcdir = .
-sysconfdir = ${prefix}/etc
-target_alias = 
-top_build_prefix = ../
-top_builddir = ..
-top_srcdir = ..
-
-###############################################################################
-# Case when shared libraries are enabled
-###############################################################################
-#pkgpyexec_LTLIBRARIES = _gribapi_swig.la
-#_gribapi_swig_la_SOURCES = gribapi_swig_wrap.c grib_interface.c grib_interface.h
-#_gribapi_swig_la_LIBADD = $(top_builddir)/src/libeccodes.la $(PYTHON_LIBS)
-#_gribapi_swig_la_LDFLAGS = -module -avoid-version $(PYTHON_LDFLAGS)
-#INCLUDES = $(PYTHON_INCLUDES) -I$(NUMPY_INCLUDE)
-
-# Extra stuff to go into the distribution
-EXTRA_DIST = setup.py.in \
-			grib_interface.h \
-			grib_interface.c \
-			gribapi_swig.i \
-			gribapi.py \
-			eccodes.py \
-			numpy.i \
-			grib_errors.h \
-			extrules.am \
-			dummy.am \
-			swig_wrap_array.c \
-			swig_wrap_numpy.c \
-			swig_wrap_array.py \
-			swig_wrap_numpy.py \
-			CMakeLists.txt
-
-
-# Extra stuff to go into the distribution
-#EXTRA_DIST = grib_interface.h \
-#			grib_interface.c \
-#			gribapi_swig.i \
-#			gribapi.py \
-#			eccodes.py \
-#			numpy.i \
-#			grib_errors.h \
-#			extrules.am \
-#			dummy.am \
-#			swig_wrap_array.c \
-#			swig_wrap_numpy.c \
-#			swig_wrap_array.py \
-#			swig_wrap_numpy.py \
-#			CMakeLists.txt
-
-
-# What else I want installed
-#pkgpyexec_DATA = \
-#	gribapi.py \
-#	eccodes.py \
-#	gribapi_swig.py
-
-CLEANFILES = $(noinst_SCRIPTS) \
-			gribapi_swig_wrap.c \
-			gribapi_swig.py \
-			_gribapi_swig.so
-
-#CLEANFILES = \
-#			gribapi_swig_wrap.c \
-#			gribapi_swig.py \
-#			_gribapi_swig.la
-
-
-###############################################################################
-# When shared libraries are disabled.
-# Uses the static library so must have --with-pic
-###############################################################################
-noinst_SCRIPTS = setup.py
-
-# What I want installed
-pdir = $(libdir)/python$(PYTHON_VERSION)/site-packages/eccodes
-p_DATA = \
-	_gribapi_swig.so \
-	gribapi.py \
-	eccodes.py \
-	gribapi_swig.py
-
-do_subst = sed -e 's,[@]LIB_JASPER[@],$(LIB_JASPER),g' \
-			-e 's,[@]JASPER_DIR[@],$(JASPER_DIR),g' \
-			-e 's,[@]LIB_OPENJPEG[@],$(LIB_OPENJPEG),g' \
-			-e 's,[@]OPENJPEG_DIR[@],$(OPENJPEG_DIR),g' \
-			-e   's,[@]LIB_AEC[@],$(LIB_AEC),g' \
-			-e   's,[@]AEC_DIR[@],$(AEC_DIR),g' \
-			-e 's,[@]LIB_PNG[@],$(LIB_PNG),g' \
-			-e 's,[@]BUILD_DIR[@],$(top_builddir),g' \
-			-e 's,[@]DATA_HANDLER[@],$(PYTHON_DATA_HANDLER),g'
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu python/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu python/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-install-pkgpyexecLTLIBRARIES: $(pkgpyexec_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(pkgpyexec_LTLIBRARIES)'; test -n "$(pkgpyexecdir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(pkgpyexecdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(pkgpyexecdir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkgpyexecdir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkgpyexecdir)"; \
-	}
-
-uninstall-pkgpyexecLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(pkgpyexec_LTLIBRARIES)'; test -n "$(pkgpyexecdir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkgpyexecdir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkgpyexecdir)/$$f"; \
-	done
-
-clean-pkgpyexecLTLIBRARIES:
-	-test -z "$(pkgpyexec_LTLIBRARIES)" || rm -f $(pkgpyexec_LTLIBRARIES)
-	@list='$(pkgpyexec_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-_gribapi_swig.la: $(_gribapi_swig_la_OBJECTS) $(_gribapi_swig_la_DEPENDENCIES) $(EXTRA__gribapi_swig_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(_gribapi_swig_la_LINK) $(am__gribapi_swig_la_rpath) $(_gribapi_swig_la_OBJECTS) $(_gribapi_swig_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-include ./$(DEPDIR)/grib_interface.Plo
-include ./$(DEPDIR)/gribapi_swig_wrap.Plo
-
-.c.o:
-	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-#	$(AM_V_CC)source='$<' object='$@' libtool=no \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(COMPILE) -c $<
-
-.c.obj:
-	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-#	$(AM_V_CC)source='$<' object='$@' libtool=no \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-#	$(AM_V_CC)source='$<' object='$@' libtool=yes \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-pDATA: $(p_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(p_DATA)'; test -n "$(pdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(pdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(pdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pdir)" || exit $$?; \
-	done
-
-uninstall-pDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(p_DATA)'; test -n "$(pdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(pdir)'; $(am__uninstall_files_from_dir)
-install-pkgpyexecDATA: $(pkgpyexec_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(pkgpyexec_DATA)'; test -n "$(pkgpyexecdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(pkgpyexecdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(pkgpyexecdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgpyexecdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgpyexecdir)" || exit $$?; \
-	done
-
-uninstall-pkgpyexecDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(pkgpyexec_DATA)'; test -n "$(pkgpyexecdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(pkgpyexecdir)'; $(am__uninstall_files_from_dir)
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(SCRIPTS) $(DATA)
-installdirs:
-	for dir in "$(DESTDIR)$(pkgpyexecdir)" "$(DESTDIR)$(pdir)" "$(DESTDIR)$(pkgpyexecdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-#clean-local:
-#clean-local:
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-local \
-	clean-pkgpyexecLTLIBRARIES mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-pDATA
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-pkgpyexecDATA install-pkgpyexecLTLIBRARIES
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-pDATA uninstall-pkgpyexecDATA \
-	uninstall-pkgpyexecLTLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-local clean-pkgpyexecLTLIBRARIES \
-	cscopelist-am ctags ctags-am distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pDATA \
-	install-pdf install-pdf-am install-pkgpyexecDATA \
-	install-pkgpyexecLTLIBRARIES install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
-	uninstall-pDATA uninstall-pkgpyexecDATA \
-	uninstall-pkgpyexecLTLIBRARIES
-
-
-#gribapi_swig_wrap.c: swig_wrap_$(PYTHON_DATA_HANDLER).c
-#	cp -f swig_wrap_$(PYTHON_DATA_HANDLER).c gribapi_swig_wrap.c
-
-#gribapi_swig.py: swig_wrap_$(PYTHON_DATA_HANDLER).py
-#	cp -f swig_wrap_$(PYTHON_DATA_HANDLER).py gribapi_swig.py
-
-#include $(DEVEL_RULES)
-
-clean-local:
-	-rm -rf build
-
-setup.py: setup.py.in
-	$(do_subst) < setup.py.in > setup.py
-
-gribapi_swig_wrap.c: swig_wrap_$(PYTHON_DATA_HANDLER).c
-	cp -f swig_wrap_$(PYTHON_DATA_HANDLER).c gribapi_swig_wrap.c
-
-gribapi_swig.py: swig_wrap_$(PYTHON_DATA_HANDLER).py
-	cp -f swig_wrap_$(PYTHON_DATA_HANDLER).py gribapi_swig.py
-
-_gribapi_swig.so: setup.py gribapi_swig_wrap.c gribapi_swig.py
-	$(PYTHON) setup.py build_ext --inplace
-
-include $(DEVEL_RULES)
-
-# Case when WITH_PYTHON is not defined. Must add this rule otherwise
-# make dist will fail
-#gribapi_swig_wrap.c: swig_wrap_array.c
-#	cp -f swig_wrap_array.c gribapi_swig_wrap.c
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/python/eccode_swig.i b/python/eccode_swig.i
index a39f71b..c575181 100644
--- a/python/eccode_swig.i
+++ b/python/eccode_swig.i
@@ -32,6 +32,7 @@ import_array();
 }
 
 %pointer_class(int, intp);
+%pointer_class(size_t, sizetp);
 %pointer_class(long, longp);
 %pointer_class(double, doublep);
 %array_functions(double, doubleArray);
@@ -43,6 +44,7 @@ int grib_c_new_from_file(FILE* f, int* INOUT, int headers_only);
 int grib_c_new_any_from_file(FILE* f, int headers_only, int* INOUT);
 int grib_c_new_bufr_from_file(FILE* f, int headers_only, int* INOUT);
 int grib_c_new_gts_from_file(FILE* f, int headers_only, int* INOUT);
+int grib_c_new_metar_from_file(FILE* f, int headers_only, int* INOUT);
 int grib_c_iterator_new(int* INPUT, int* OUTPUT, int* INPUT);
 int grib_c_keys_iterator_new(int* INPUT, int* OUTPUT, char* name_space);
 int grib_c_new_from_samples(int* INOUT, char* name);
diff --git a/python/eccodes.py b/python/eccodes.py
index c32568f..44c5755 100644
--- a/python/eccodes.py
+++ b/python/eccodes.py
@@ -1,10 +1,17 @@
+from gribapi import __version__
+
 from gribapi import GRIB_CHECK as CODES_CHECK
 from gribapi import CODES_PRODUCT_GRIB
 from gribapi import CODES_PRODUCT_BUFR
 from gribapi import CODES_PRODUCT_ANY
 
+from gribapi import GRIB_MISSING_DOUBLE as CODES_MISSING_DOUBLE
+from gribapi import GRIB_MISSING_LONG as CODES_MISSING_LONG
+
 from gribapi import grib_new_from_file as codes_grib_new_from_file
 from gribapi import bufr_new_from_file as codes_bufr_new_from_file
+from gribapi import metar_new_from_file as codes_metar_new_from_file
+from gribapi import gts_new_from_file as codes_gts_new_from_file
 from gribapi import any_new_from_file as codes_any_new_from_file
 from gribapi import codes_new_from_file
 
diff --git a/python/grib_errors.h b/python/grib_errors.h
index f5b12c4..5f8c726 100644
--- a/python/grib_errors.h
+++ b/python/grib_errors.h
@@ -133,5 +133,9 @@ Error codes returned by the grib_api functions.
 #define GRIB_TOO_MANY_ATTRIBUTES		-62
 /** Attribute not found. */
 #define GRIB_ATTRIBUTE_NOT_FOUND		-63
+/** Edition not supported. */
+#define GRIB_UNSUPPORTED_EDITION		-64
+/** Value out of coding range */
+#define GRIB_OUT_OF_RANGE		-65
 /*! @}*/
 #endif
diff --git a/python/grib_interface.c b/python/grib_interface.c
index 85f53eb..a29a00a 100644
--- a/python/grib_interface.c
+++ b/python/grib_interface.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -26,28 +26,49 @@
 #include <ctype.h>
 
 #if GRIB_PTHREADS
-static pthread_once_t once  = PTHREAD_ONCE_INIT;
-static pthread_mutex_t handle_mutex = PTHREAD_MUTEX_INITIALIZER;
-static pthread_mutex_t index_mutex = PTHREAD_MUTEX_INITIALIZER;
-static pthread_mutex_t multi_handle_mutex = PTHREAD_MUTEX_INITIALIZER;
-static pthread_mutex_t iterator_mutex = PTHREAD_MUTEX_INITIALIZER;
-static pthread_mutex_t keys_iterator_mutex = PTHREAD_MUTEX_INITIALIZER;
-
-
-static void init() {
-  pthread_mutexattr_t attr;
-
-  pthread_mutexattr_init(&attr);
-  pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
-  pthread_mutex_init(&handle_mutex,&attr);
-  pthread_mutex_init(&index_mutex,&attr);
-  pthread_mutex_init(&multi_handle_mutex,&attr);
-  pthread_mutex_init(&iterator_mutex,&attr);
-  pthread_mutex_init(&keys_iterator_mutex,&attr);
-  pthread_mutexattr_destroy(&attr);
-
-}
-
+ static pthread_once_t once  = PTHREAD_ONCE_INIT;
+ static pthread_mutex_t handle_mutex = PTHREAD_MUTEX_INITIALIZER;
+ static pthread_mutex_t index_mutex = PTHREAD_MUTEX_INITIALIZER;
+ static pthread_mutex_t multi_handle_mutex = PTHREAD_MUTEX_INITIALIZER;
+ static pthread_mutex_t iterator_mutex = PTHREAD_MUTEX_INITIALIZER;
+ static pthread_mutex_t keys_iterator_mutex = PTHREAD_MUTEX_INITIALIZER;
+
+ static void init() {
+   pthread_mutexattr_t attr;
+
+   pthread_mutexattr_init(&attr);
+   pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
+   pthread_mutex_init(&handle_mutex,&attr);
+   pthread_mutex_init(&index_mutex,&attr);
+   pthread_mutex_init(&multi_handle_mutex,&attr);
+   pthread_mutex_init(&iterator_mutex,&attr);
+   pthread_mutex_init(&keys_iterator_mutex,&attr);
+   pthread_mutexattr_destroy(&attr);
+
+ }
+#elif GRIB_OMP_THREADS
+ static int once = 0;
+ static omp_nest_lock_t handle_mutex;
+ static omp_nest_lock_t index_mutex;
+ static omp_nest_lock_t multi_handle_mutex;
+ static omp_nest_lock_t iterator_mutex;
+ static omp_nest_lock_t keys_iterator_mutex;
+
+ static void init()
+ {
+    GRIB_OMP_CRITICAL(lock_fortran)
+    {
+        if (once == 0)
+        {
+            omp_init_nest_lock(&handle_mutex);
+            omp_init_nest_lock(&index_mutex);
+            omp_init_nest_lock(&multi_handle_mutex);
+            omp_init_nest_lock(&iterator_mutex);
+            omp_init_nest_lock(&keys_iterator_mutex);
+            once = 1;
+        }
+    }
+ }
 #endif
 
 int GRIB_NULL=-1;
@@ -143,7 +164,8 @@ static int push_file(FILE* f){
     return myindex;
 }
 
-static void _push_handle(grib_handle *h,int *gid){
+static void _push_handle(grib_handle *h,int *gid)
+{
     l_grib_handle* current= handle_set;
     l_grib_handle* previous= handle_set;
     l_grib_handle* new= NULL;
@@ -196,7 +218,8 @@ static void _push_handle(grib_handle *h,int *gid){
     return;
 }
 
-static void _push_index(grib_index *h,int *gid){
+static void _push_index(grib_index *h,int *gid)
+{
     l_grib_index* current= index_set;
     l_grib_index* previous= index_set;
     l_grib_index* new= NULL;
@@ -249,7 +272,8 @@ static void _push_index(grib_index *h,int *gid){
     return;
 }
 
-static void _push_multi_handle(grib_multi_handle *h,int *gid){
+static void _push_multi_handle(grib_multi_handle *h,int *gid)
+{
     l_grib_multi_handle* current= multi_handle_set;
     l_grib_multi_handle* previous= multi_handle_set;
     l_grib_multi_handle* new= NULL;
@@ -302,32 +326,35 @@ static void _push_multi_handle(grib_multi_handle *h,int *gid){
     return;
 }
 
-static void push_handle(grib_handle *h,int *gid){
-    GRIB_PTHREAD_ONCE(&once,&init)
-          GRIB_MUTEX_LOCK(&handle_mutex)
-          _push_handle(h,gid);
+static void push_handle(grib_handle *h,int *gid)
+{
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
+    GRIB_MUTEX_LOCK(&handle_mutex)
+    _push_handle(h,gid);
     GRIB_MUTEX_UNLOCK(&handle_mutex)
     return;
 }
 
-static void push_index(grib_index *h,int *gid){
-    GRIB_PTHREAD_ONCE(&once,&init)
-              GRIB_MUTEX_LOCK(&index_mutex)
-              _push_index(h,gid);
+static void push_index(grib_index *h,int *gid)
+{
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
+    GRIB_MUTEX_LOCK(&index_mutex)
+    _push_index(h,gid);
     GRIB_MUTEX_UNLOCK(&index_mutex)
     return;
 }
 
-static void push_multi_handle(grib_multi_handle *h,int *gid){
-    GRIB_PTHREAD_ONCE(&once,&init)
-              GRIB_MUTEX_LOCK(&multi_handle_mutex)
-              _push_multi_handle(h,gid);
+static void push_multi_handle(grib_multi_handle *h,int *gid)
+{
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
+    GRIB_MUTEX_LOCK(&multi_handle_mutex)
+    _push_multi_handle(h,gid);
     GRIB_MUTEX_UNLOCK(&multi_handle_mutex)
     return;
 }
 
-
-static int _push_iterator(grib_iterator *i){
+static int _push_iterator(grib_iterator *i)
+{
     l_grib_iterator* current  = iterator_set;
     l_grib_iterator* previous = iterator_set;
     l_grib_iterator* new      = NULL;
@@ -363,16 +390,18 @@ static int _push_iterator(grib_iterator *i){
     return myindex;
 }
 
-static int push_iterator(grib_iterator *i){
+static int push_iterator(grib_iterator *i)
+{
     int ret=0;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&iterator_mutex)
     ret=_push_iterator(i);
     GRIB_MUTEX_UNLOCK(&iterator_mutex)
     return ret;
 }
 
-static int _push_keys_iterator(grib_keys_iterator *i){
+static int _push_keys_iterator(grib_keys_iterator *i)
+{
     l_grib_keys_iterator* current  = keys_iterator_set;
     l_grib_keys_iterator* previous = keys_iterator_set;
     l_grib_keys_iterator* new      = NULL;
@@ -409,16 +438,18 @@ static int _push_keys_iterator(grib_keys_iterator *i){
     return myindex;
 }
 
-static int push_keys_iterator(grib_keys_iterator *i){
+static int push_keys_iterator(grib_keys_iterator *i)
+{
     int ret=0;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&keys_iterator_mutex)
     ret=_push_keys_iterator(i);
     GRIB_MUTEX_UNLOCK(&keys_iterator_mutex)
     return ret;
 }
 
-static grib_handle* _get_handle(int handle_id){
+static grib_handle* _get_handle(int handle_id)
+{
     l_grib_handle* current= handle_set;
 
     while(current){
@@ -429,7 +460,8 @@ static grib_handle* _get_handle(int handle_id){
     return NULL;
 }
 
-static grib_index* _get_index(int index_id){
+static grib_index* _get_index(int index_id)
+{
     l_grib_index* current= index_set;
 
     while(current){
@@ -440,7 +472,8 @@ static grib_index* _get_index(int index_id){
     return NULL;
 }
 
-static grib_multi_handle* _get_multi_handle(int multi_handle_id){
+static grib_multi_handle* _get_multi_handle(int multi_handle_id)
+{
     l_grib_multi_handle* current= multi_handle_set;
 
     while(current){
@@ -451,34 +484,38 @@ static grib_multi_handle* _get_multi_handle(int multi_handle_id){
     return NULL;
 }
 
-static grib_handle* get_handle(int handle_id){
+static grib_handle* get_handle(int handle_id)
+{
     grib_handle* h=NULL;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&handle_mutex)
     h=_get_handle(handle_id);
     GRIB_MUTEX_UNLOCK(&handle_mutex)
     return h;
 }
 
-static grib_index* get_index(int index_id){
+static grib_index* get_index(int index_id)
+{
     grib_index* h=NULL;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&index_mutex)
     h=_get_index(index_id);
     GRIB_MUTEX_UNLOCK(&index_mutex)
     return h;
 }
 
-static grib_multi_handle* get_multi_handle(int multi_handle_id){
+static grib_multi_handle* get_multi_handle(int multi_handle_id)
+{
     grib_multi_handle* h=NULL;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&multi_handle_mutex)
     h=_get_multi_handle(multi_handle_id);
     GRIB_MUTEX_UNLOCK(&multi_handle_mutex)
     return h;
 }
 
-static FILE* get_file(int file_id){
+static FILE* get_file(int file_id)
+{
     l_grib_file* current  = file_set;
     while(current){
         if(current->id == file_id) return current->f;
@@ -487,7 +524,8 @@ static FILE* get_file(int file_id){
     return NULL;
 }
 
-static grib_iterator* _get_iterator(int iterator_id){
+static grib_iterator* _get_iterator(int iterator_id)
+{
     l_grib_iterator* current  = iterator_set;
 
     while(current){
@@ -496,16 +534,18 @@ static grib_iterator* _get_iterator(int iterator_id){
     }
     return NULL;
 }
-static grib_iterator* get_iterator(int iterator_id){
+static grib_iterator* get_iterator(int iterator_id)
+{
     grib_iterator* i=NULL;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&iterator_mutex)
     i=_get_iterator(iterator_id);
     GRIB_MUTEX_UNLOCK(&iterator_mutex)
     return i;
 }
 
-static grib_keys_iterator* _get_keys_iterator(int keys_iterator_id){
+static grib_keys_iterator* _get_keys_iterator(int keys_iterator_id)
+{
     l_grib_keys_iterator* current  = keys_iterator_set;
 
     while(current){
@@ -515,16 +555,18 @@ static grib_keys_iterator* _get_keys_iterator(int keys_iterator_id){
     return NULL;
 }
 
-static grib_keys_iterator* get_keys_iterator(int keys_iterator_id){
+static grib_keys_iterator* get_keys_iterator(int keys_iterator_id)
+{
     grib_keys_iterator* i=NULL;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&keys_iterator_mutex)
     i=_get_keys_iterator(keys_iterator_id);
     GRIB_MUTEX_UNLOCK(&keys_iterator_mutex)
     return i;
 }
 
-static int clear_file(int file_id){
+static int clear_file(int file_id)
+{
     l_grib_file* current = file_set;
     int ret = 0;
     while(current){
@@ -545,8 +587,8 @@ static int clear_file(int file_id){
     return GRIB_INVALID_FILE;
 }
 
-static int _clear_handle(int handle_id){
-
+static int _clear_handle(int handle_id)
+{
     l_grib_handle* current  = handle_set;
 
     /* look for the input grib id to release it */
@@ -562,8 +604,8 @@ static int _clear_handle(int handle_id){
     return GRIB_INVALID_GRIB;
 }
 
-static int _clear_index(int index_id){
-
+static int _clear_index(int index_id)
+{
     l_grib_index* current  = index_set;
 
     while(current){
@@ -579,8 +621,8 @@ static int _clear_index(int index_id){
     return GRIB_SUCCESS;
 }
 
-static int _clear_multi_handle(int multi_handle_id){
-
+static int _clear_multi_handle(int multi_handle_id)
+{
     l_grib_multi_handle* current  = multi_handle_set;
 
     while(current){
@@ -593,35 +635,38 @@ static int _clear_multi_handle(int multi_handle_id){
     return GRIB_SUCCESS;
 }
 
-static int clear_handle(int handle_id){
+static int clear_handle(int handle_id)
+{
     int ret=0;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&handle_mutex)
     ret=_clear_handle(handle_id);
     GRIB_MUTEX_UNLOCK(&handle_mutex)
     return ret;
 }
 
-static int clear_index(int index_id){
+static int clear_index(int index_id)
+{
     int ret=0;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&index_mutex)
     ret=_clear_index(index_id);
     GRIB_MUTEX_UNLOCK(&index_mutex)
     return ret;
 }
 
-static int clear_multi_handle(int multi_handle_id){
+static int clear_multi_handle(int multi_handle_id)
+{
     int ret=0;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&multi_handle_mutex)
     ret=_clear_multi_handle(multi_handle_id);
     GRIB_MUTEX_UNLOCK(&multi_handle_mutex)
     return ret;
 }
 
-static int _clear_iterator(int iterator_id){
-
+static int _clear_iterator(int iterator_id)
+{
     l_grib_iterator* current  = iterator_set;
 
     while(current){
@@ -634,17 +679,18 @@ static int _clear_iterator(int iterator_id){
     return GRIB_INVALID_ITERATOR;
 }
 
-static int clear_iterator(int iterator_id){
+static int clear_iterator(int iterator_id)
+{
     int ret=0;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&iterator_mutex)
     ret=_clear_iterator(iterator_id);
     GRIB_MUTEX_UNLOCK(&iterator_mutex)
     return ret;
 }
 
-static int _clear_keys_iterator(int keys_iterator_id){
-
+static int _clear_keys_iterator(int keys_iterator_id)
+{
     l_grib_keys_iterator* current  = keys_iterator_set;
 
     while(current){
@@ -657,16 +703,18 @@ static int _clear_keys_iterator(int keys_iterator_id){
     return GRIB_INVALID_KEYS_ITERATOR;
 }
 
-static int clear_keys_iterator(int keys_iterator_id){
+static int clear_keys_iterator(int keys_iterator_id)
+{
     int ret=0;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&keys_iterator_mutex)
     ret=_clear_keys_iterator(keys_iterator_id);
     GRIB_MUTEX_UNLOCK(&keys_iterator_mutex)
     return ret;
 }
 
-int grib_c_read_any_from_file(int* fid, char* buffer, int* nbytes) {
+int grib_c_read_any_from_file(int* fid, char* buffer, int* nbytes)
+{
     grib_context* c;
     int err=0;
     size_t size=(size_t)nbytes;
@@ -682,7 +730,8 @@ int grib_c_read_any_from_file(int* fid, char* buffer, int* nbytes) {
     }
 }
 
-int grib_c_write_file(int* fid, char* buffer, int* nbytes) {
+int grib_c_write_file(int* fid, char* buffer, int* nbytes)
+{
     grib_context* c;
     FILE* f=get_file(*fid);
 
@@ -700,7 +749,8 @@ int grib_c_write_file(int* fid, char* buffer, int* nbytes) {
     }
 }
 
-int grib_c_read_file(int* fid, char* buffer, int* nbytes) {
+int grib_c_read_file(int* fid, char* buffer, int* nbytes)
+{
     grib_context* c;
     FILE* f=get_file(*fid);
 
@@ -718,7 +768,8 @@ int grib_c_read_file(int* fid, char* buffer, int* nbytes) {
     }
 }
 
-int grib_c_open_file(int* fid, char* name , char* op){
+int grib_c_open_file(int* fid, char* name , char* op)
+{
     FILE* f = NULL;
     int ioerr=0;
     int ret=GRIB_SUCCESS;
@@ -754,7 +805,8 @@ int grib_c_multi_support_off(void) {
     return GRIB_SUCCESS;
 }
 
-static int _grib_c_iterator_new_(int* gid,int* iterid,int* mode) {
+static int _grib_c_iterator_new_(int* gid,int* iterid,int* mode)
+{
     int err=0;
     grib_handle* h;
     grib_iterator* iter;
@@ -772,26 +824,30 @@ static int _grib_c_iterator_new_(int* gid,int* iterid,int* mode) {
     return err;
 }
 
-int grib_c_iterator_new(int* gid,int* iterid,int* mode) {
+int grib_c_iterator_new(int* gid,int* iterid,int* mode)
+{
     int ret=0;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&iterator_mutex)
     ret=_grib_c_iterator_new_(gid,iterid,mode);
     GRIB_MUTEX_UNLOCK(&iterator_mutex)
     return ret;
 }
 
-int grib_c_iterator_next(int* iterid,double* lat,double* lon,double* value) {
+int grib_c_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_c_iterator_delete(int* iterid) {
+int grib_c_iterator_delete(int* iterid)
+{
     return clear_iterator(*iterid);
 }
 
-static int _grib_c_keys_iterator_new_(int* gid,int* iterid,char* name_space) {
+static int _grib_c_keys_iterator_new_(int* gid,int* iterid,char* name_space)
+{
     int err=0;
     grib_handle* h;
     grib_keys_iterator* iter;
@@ -809,16 +865,18 @@ static int _grib_c_keys_iterator_new_(int* gid,int* iterid,char* name_space) {
     return err;
 }
 
-int grib_c_keys_iterator_new(int* gid,int* iterid,char* name_space) {
+int grib_c_keys_iterator_new(int* gid,int* iterid,char* name_space)
+{
     int ret=0;
-    GRIB_PTHREAD_ONCE(&once,&init)
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
     GRIB_MUTEX_LOCK(&keys_iterator_mutex)
     ret=_grib_c_keys_iterator_new_(gid,iterid,name_space);
     GRIB_MUTEX_UNLOCK(&keys_iterator_mutex)
     return ret;
 }
 
-int grib_c_keys_iterator_next(int* iterid) {
+int grib_c_keys_iterator_next(int* iterid)
+{
     int ret = 0;
 
     grib_keys_iterator* iter= get_keys_iterator(*iterid);
@@ -830,57 +888,67 @@ int grib_c_keys_iterator_next(int* iterid) {
     return ret;
 }
 
-int grib_c_keys_iterator_delete(int* iterid) {
+int grib_c_keys_iterator_delete(int* iterid)
+{
     return clear_keys_iterator(*iterid);
 }
 
-int grib_c_gribex_mode_on(void) {
+int grib_c_gribex_mode_on(void)
+{
     grib_gribex_mode_on(0);
     return GRIB_SUCCESS;
 }
 
-int grib_c_gribex_mode_off(void) {
+int grib_c_gribex_mode_off(void)
+{
     grib_gribex_mode_off(0);
     return GRIB_SUCCESS;
 }
 
-int grib_c_skip_computed(int* iterid) {
+int grib_c_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_c_skip_coded(int* iterid) {
+int grib_c_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_c_skip_edition_specific(int* iterid) {
+int grib_c_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_c_skip_duplicates(int* iterid) {
+int grib_c_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_c_skip_read_only(int* iterid) {
+int grib_c_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_c_skip_function(int* iterid) {
+int grib_c_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_c_keys_iterator_get_name(int* iterid,char* name,int len) {
+int grib_c_keys_iterator_get_name(int* iterid,char* name,int len)
+{
     size_t lsize=len;
     char buf[1024]={0,};
 
@@ -901,14 +969,16 @@ int grib_c_keys_iterator_get_name(int* iterid,char* name,int len) {
     return 0;
 }
 
-int grib_c_keys_iterator_rewind(int* kiter) {
+int grib_c_keys_iterator_rewind(int* kiter)
+{
     grib_keys_iterator* i=get_keys_iterator(*kiter);
 
     if (!i) return GRIB_INVALID_KEYS_ITERATOR;
     return grib_keys_iterator_rewind(i);
 }
 
-int grib_c_new_from_message(int* gid, void* buffer , size_t* bufsize){
+int grib_c_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){
@@ -920,7 +990,8 @@ int grib_c_new_from_message(int* gid, void* buffer , size_t* bufsize){
     return  GRIB_INTERNAL_ERROR;
 }
 
-int grib_c_new_from_message_copy(int* gid, void* buffer , size_t* bufsize){
+int grib_c_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){
@@ -932,7 +1003,8 @@ int grib_c_new_from_message_copy(int* gid, void* buffer , size_t* bufsize){
     return  GRIB_INTERNAL_ERROR;
 }
 
-int grib_c_new_from_samples(int* gid, char* name){
+int grib_c_new_from_samples(int* gid, char* name)
+{
     grib_handle *h = NULL;
 
     h = grib_handle_new_from_samples(NULL,name);
@@ -947,7 +1019,8 @@ int grib_c_new_from_samples(int* gid, char* name){
     return  GRIB_FILE_NOT_FOUND;
 }
 
-int grib_c_clone(int* gidsrc,int* giddest){
+int grib_c_clone(int* gidsrc,int* giddest)
+{
     grib_handle *src  = get_handle(*gidsrc);
     grib_handle *dest = NULL;
 
@@ -963,7 +1036,8 @@ int grib_c_clone(int* gidsrc,int* giddest){
     return GRIB_INVALID_GRIB;
 }
 
-int grib_c_copy_namespace(int* gidsrc,char* name,int* giddest){
+int grib_c_copy_namespace(int* gidsrc,char* name,int* giddest)
+{
     grib_handle *src  = get_handle(*gidsrc);
     grib_handle *dest = get_handle(*giddest);
 
@@ -973,18 +1047,19 @@ int grib_c_copy_namespace(int* gidsrc,char* name,int* giddest){
     return GRIB_INVALID_GRIB;
 }
 
-int grib_c_count_in_file(FILE* f,int* n) {
+int grib_c_count_in_file(FILE* f,int* n)
+{
     int err = 0;
     if (f) err=grib_count_in_file(0, f,n);
     return err;
 }
 
-int grib_c_new_gts_from_file(FILE* f,int headers_only, int* gid){
+int grib_c_new_gts_from_file(FILE* f,int headers_only, int* gid)
+{
     grib_handle *h = NULL;
     int err = 0;
 
     if(f){
-        /* h = gts_new_from_file(0,f,headers_only,&err); */
         h = gts_new_from_file(0,f,&err);
 
         if(h){
@@ -1000,7 +1075,29 @@ int grib_c_new_gts_from_file(FILE* f,int headers_only, int* gid){
     return GRIB_INVALID_FILE;
 }
 
-int grib_c_new_any_from_file(FILE* f,int headers_only,int* gid){
+int grib_c_new_metar_from_file(FILE* f,int headers_only, int* gid)
+{
+    grib_handle *h = NULL;
+    int err = 0;
+
+    if(f){
+        h = metar_new_from_file(0,f,&err);
+
+        if(h){
+            push_handle(h,gid);
+            return GRIB_SUCCESS;
+        } else {
+            *gid=-1;
+            return GRIB_END_OF_FILE;
+        }
+    }
+
+    *gid=-1;
+    return GRIB_INVALID_FILE;
+}
+
+int grib_c_new_any_from_file(FILE* f,int headers_only,int* gid)
+{
     grib_handle *h = NULL;
     int err = 0;
     if(f){
@@ -1018,7 +1115,8 @@ int grib_c_new_any_from_file(FILE* f,int headers_only,int* gid){
     return GRIB_INVALID_FILE;
 }
 
-int grib_c_new_bufr_from_file(FILE* f,int headers_only,int* gid){
+int grib_c_new_bufr_from_file(FILE* f,int headers_only,int* gid)
+{
     grib_handle *h = NULL;
     int err = 0;
 
@@ -1039,7 +1137,8 @@ int grib_c_new_bufr_from_file(FILE* f,int headers_only,int* gid){
     return GRIB_INVALID_FILE;
 }
 
-int grib_c_new_from_file(FILE* f, int* gid, int headers_only){
+int grib_c_new_from_file(FILE* f, int* gid, int headers_only)
+{
     grib_handle *h = NULL;
     int err = 0;
 
@@ -1134,7 +1233,7 @@ int grib_c_dump(int* gid){
     if(!h)
         return GRIB_INVALID_GRIB;
     else
-        grib_dump_content(h,stdout,NULL,0,NULL);
+        grib_dump_content(h,stdout,"wmo",0,NULL);
 
     return GRIB_SUCCESS;
 }
@@ -1491,7 +1590,8 @@ int grib_c_set_key_vals(int* gid, char* keyvals)
     return GRIB_SUCCESS;
 }
 
-int grib_c_is_missing(int* gid, char* key,int* isMissing){
+int grib_c_is_missing(int* gid, char* key,int* isMissing)
+{
     int err=0;
     grib_handle *h = get_handle(*gid);
     if(!h)  return GRIB_INVALID_GRIB;
@@ -1500,7 +1600,8 @@ int grib_c_is_missing(int* gid, char* key,int* isMissing){
     return err;
 }
 
-int grib_c_is_defined(int* gid, char* key,int* isDefined){
+int grib_c_is_defined(int* gid, char* key,int* isDefined)
+{
     grib_handle *h = get_handle(*gid);
     if(!h) return GRIB_INVALID_GRIB;
 
@@ -1508,8 +1609,8 @@ int grib_c_is_defined(int* gid, char* key,int* isDefined){
     return GRIB_SUCCESS;
 }
 
-int grib_c_set_real4(int* gid, char* key, float* val){
-
+int grib_c_set_real4(int* gid, char* key, float* val)
+{
     grib_handle *h = get_handle(*gid);
     double val8 = *val;
     if(!h)  return GRIB_INVALID_GRIB;
@@ -1517,8 +1618,8 @@ int grib_c_set_real4(int* gid, char* key, float* val){
     return grib_set_double(h, key, val8);
 }
 
-int grib_c_get_real4_element(int* gid, char* key, int* index,float* val){
-
+int grib_c_get_real4_element(int* gid, char* key, int* index,float* val)
+{
     grib_handle *h = get_handle(*gid);
     int err = GRIB_SUCCESS;
     double val8 = 0;
@@ -1530,8 +1631,8 @@ int grib_c_get_real4_element(int* gid, char* key, int* index,float* val){
     return err;
 }
 
-int grib_c_get_real4_elements(int* gid, char* key,int* index, float *val,int* size){
-
+int grib_c_get_real4_elements(int* gid, char* key,int* index, float *val,int* size)
+{
     grib_handle *h = get_handle(*gid);
     int err = GRIB_SUCCESS;
     size_t lsize = *size;
@@ -1558,8 +1659,8 @@ int grib_c_get_real4_elements(int* gid, char* key,int* index, float *val,int* si
     return  err;
 }
 
-int grib_c_get_real4(int* gid, char* key, float* val){
-
+int grib_c_get_real4(int* gid, char* key, float* val)
+{
     grib_handle *h = get_handle(*gid);
     int err = GRIB_SUCCESS;
     double val8 = 0;
@@ -1571,8 +1672,8 @@ int grib_c_get_real4(int* gid, char* key, float* val){
     return err;
 }
 
-int grib_c_get_real4_array(int* gid, char* key, float *val, int* size){
-
+int grib_c_get_real4_array(int* gid, char* key, float *val, int* size)
+{
     grib_handle *h = get_handle(*gid);
     int err = GRIB_SUCCESS;
     size_t lsize = *size;
@@ -1597,8 +1698,8 @@ int grib_c_get_real4_array(int* gid, char* key, float *val, int* size){
     return  err;
 }
 
-int grib_c_set_real4_array(int* gid, char* key, float*val, int* size){
-
+int grib_c_set_real4_array(int* gid, char* key, float*val, int* size)
+{
     grib_handle *h = get_handle(*gid);
     int err = GRIB_SUCCESS;
     size_t lsize = *size;
@@ -1619,27 +1720,26 @@ int grib_c_set_real4_array(int* gid, char* key, float*val, int* size){
     err = grib_set_double_array(h, key, val8, lsize);
     grib_context_free(h->context,val8);
     return err;
-
 }
 
-int grib_c_index_select_real8(int* gid, char* key, double* val){
-
+int grib_c_index_select_real8(int* gid, char* key, double* val)
+{
     grib_index *h = get_index(*gid);
 
     if(!h) return GRIB_INVALID_GRIB;
     return grib_index_select_double(h, key, *val);
 }
 
-int grib_c_index_select_string(int* gid, char* key, char* val){
-
+int grib_c_index_select_string(int* gid, char* key, char* val)
+{
     grib_index *h = get_index(*gid);
 
     if(!h) return GRIB_INVALID_GRIB;
     return grib_index_select_string(h, key, val);
 }
 
-int grib_c_index_select_int(int* gid, char* key, int* val){
-
+int grib_c_index_select_int(int* gid, char* key, int* val)
+{
     grib_index *h = get_index(*gid);
     long lval=*val;
 
@@ -1647,24 +1747,24 @@ int grib_c_index_select_int(int* gid, char* key, int* val){
     return grib_index_select_long(h, key, lval);
 }
 
-int grib_c_index_select_long(int* gid, char* key, long* val){
-
+int grib_c_index_select_long(int* gid, char* key, long* val)
+{
     grib_index *h = get_index(*gid);
 
     if(!h) return GRIB_INVALID_GRIB;
     return grib_index_select_long(h, key, *val);
 }
 
-int grib_c_set_real8(int* gid, char* key, double* val){
-
+int grib_c_set_real8(int* gid, char* key, double* val)
+{
     grib_handle *h = get_handle(*gid);
 
     if(!h) return GRIB_INVALID_GRIB;
     return grib_set_double(h, key, *val);
 }
 
-int grib_c_get_real8(int* gid, char* key, double* val){
-
+int grib_c_get_real8(int* gid, char* key, double* val)
+{
     grib_handle *h = get_handle(*gid);
 
     if(!h) return GRIB_INVALID_GRIB;
@@ -1672,7 +1772,8 @@ int grib_c_get_real8(int* gid, char* key, double* val){
     return grib_get_double(h, key, val);
 }
 
-int grib_c_set_double(int *gid, char *key, double *val) {
+int grib_c_set_double(int *gid, char *key, double *val)
+{
     grib_handle *h = get_handle(*gid);
 
     if(!h) return GRIB_INVALID_GRIB;
@@ -1680,8 +1781,8 @@ int grib_c_set_double(int *gid, char *key, double *val) {
     return grib_set_double(h, key, *val);
 }
 
-int grib_c_get_real8_element(int* gid, char* key,int* index, double* val){
-
+int grib_c_get_real8_element(int* gid, char* key,int* index, double* val)
+{
     grib_handle *h = get_handle(*gid);
 
     if(!h) return GRIB_INVALID_GRIB;
@@ -1689,8 +1790,8 @@ int grib_c_get_real8_element(int* gid, char* key,int* index, double* val){
     return grib_get_double_element(h, key, *index,val);
 }
 
-int grib_c_get_real8_elements(int* gid, char* key,int* index, double* val, int *size){
-
+int grib_c_get_real8_elements(int* gid, char* key,int* index, double* val, int *size)
+{
     grib_handle *h = get_handle(*gid);
 
     if(!h) return GRIB_INVALID_GRIB;
@@ -1702,7 +1803,8 @@ int grib_c_find_nearest_four_single(int* gid,int* is_lsm,
         double* inlat,double* inlon,
         double* outlats,double* outlons,
         double* values,double* distances,
-        int* indexes) {
+        int* indexes)
+{
     grib_nearest* nearest=NULL;
     int err=0, result=0;
     unsigned long flags=0;
@@ -1724,8 +1826,8 @@ int grib_c_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;
@@ -1739,8 +1841,8 @@ int grib_c_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;
@@ -1750,8 +1852,8 @@ int grib_c_find_nearest_multiple(int* gid,int* is_lsm,
             values,distances,indexes);
 }
 
-int grib_c_get_real8_array(int* gid, char* key, double*val, int* size){
-
+int grib_c_get_real8_array(int* gid, char* key, double*val, int* size)
+{
     grib_handle *h = get_handle(*gid);
     int err = GRIB_SUCCESS;
     size_t lsize = *size;
@@ -1765,8 +1867,8 @@ int grib_c_get_real8_array(int* gid, char* key, double*val, int* size){
     }
 }
 
-int grib_c_set_real8_array(int* gid, char* key, double*val, int* size){
-
+int grib_c_set_real8_array(int* gid, char* key, double*val, int* size)
+{
     grib_handle *h = get_handle(*gid);
 
     size_t lsize = *size;
@@ -1774,11 +1876,10 @@ int grib_c_set_real8_array(int* gid, char* key, double*val, int* size){
     if(!h)   return GRIB_INVALID_GRIB;
 
     return grib_set_double_array(h, key, val, lsize);
-
 }
 
-int grib_c_set_double_array(int* gid, char* key, double*val, int* size){
-
+int grib_c_set_double_array(int* gid, char* key, double*val, int* size)
+{
     grib_handle *h = get_handle(*gid);
 
     size_t lsize = *size;
@@ -1786,11 +1887,10 @@ int grib_c_set_double_array(int* gid, char* key, double*val, int* size){
     if(!h)   return GRIB_INVALID_GRIB;
 
     return grib_set_double_array(h, key, val, lsize);
-
 }
 
-int grib_c_get_string(int* gid, char* key, char* val, size_t *lsize){
-
+int grib_c_get_string(int* gid, char* key, char* val, size_t *lsize)
+{
     grib_handle *h = get_handle(*gid);
     int err = GRIB_SUCCESS;
 
@@ -1801,8 +1901,20 @@ int grib_c_get_string(int* gid, char* key, char* val, size_t *lsize){
     return  err;
 }
 
-int grib_c_set_string(int* gid, char* key, char* val, int len2){
+int grib_c_get_string_array(int* gid, char* key, char** val, size_t *lsize)
+{
+    grib_handle *h = get_handle(*gid);
+    int err = GRIB_SUCCESS;
+
+    if(!h) return  GRIB_INVALID_GRIB;
+
+    err = grib_get_string_array(h, key, val, lsize);
+
+    return  err;
+}
 
+int grib_c_set_string(int* gid, char* key, char* val, int len2)
+{
     grib_handle *h = get_handle(*gid);
 
     size_t lsize = len2;
@@ -1812,7 +1924,8 @@ int grib_c_set_string(int* gid, char* key, char* val, int len2){
     return grib_set_string(h, key, val, &lsize);
 }
 
-int grib_c_get_data_real4(int* gid,float* lats, float* lons,float* values,size_t* size) {
+int grib_c_get_data_real4(int* gid,float* lats, float* lons,float* values,size_t* size)
+{
 
     grib_handle *h = get_handle(*gid);
     int err = GRIB_SUCCESS;
@@ -1844,15 +1957,14 @@ int grib_c_get_data_real4(int* gid,float* lats, float* lons,float* values,size_t
 
 }
 
-int grib_c_get_data_real8(int* gid,double* lats, double* lons,double* values,size_t* size) {
-
+int grib_c_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,size);
-
 }
 
-
-int grib_c_copy_message(int* gid, void* mess,size_t* len){
+int grib_c_copy_message(int* gid, void* mess,size_t* len)
+{
     grib_handle *h = get_handle(*gid);
     if(!h)
         return GRIB_INVALID_GRIB;
@@ -1862,14 +1974,13 @@ int grib_c_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;
-
 }
 
-void grib_c_check(int* err,char* call,char* str){
+void grib_c_check(int* err,char* call,char* str)
+{
     grib_context* c=grib_context_get_default();
     if ( *err == GRIB_SUCCESS || *err == GRIB_END_OF_FILE ) return;
     grib_context_log(c,GRIB_LOG_ERROR,"%s: %s %s",
@@ -1877,7 +1988,8 @@ void grib_c_check(int* err,char* call,char* str){
     exit(*err);
 }
 
-int grib_c_write(int* gid, FILE* f) {
+int grib_c_write(int* gid, FILE* f)
+{
     grib_handle *h = get_handle(*gid);
     const void* mess = NULL;
     size_t mess_len = 0;
@@ -1894,14 +2006,16 @@ int grib_c_write(int* gid, FILE* f) {
     return GRIB_SUCCESS;
 }
 
-int grib_c_multi_new(int* mgid) {
+int grib_c_multi_new(int* mgid)
+{
     grib_multi_handle *mh = grib_multi_handle_new(0);
     if (!mh) return GRIB_INVALID_GRIB;
     push_multi_handle(mh,mgid);
     return GRIB_SUCCESS;
 }
 
-int grib_c_multi_write(int* gid, FILE* f) {
+int grib_c_multi_write(int* gid, FILE* f)
+{
     grib_multi_handle *h = get_multi_handle(*gid);
 
     if(!f) return GRIB_INVALID_FILE;
@@ -1910,7 +2024,8 @@ int grib_c_multi_write(int* gid, FILE* f) {
     return grib_multi_handle_write(h,f);
 }
 
-int grib_c_multi_append(int* ingid, int* sec,int* mgid) {
+int grib_c_multi_append(int* ingid, int* sec,int* mgid)
+{
     grib_handle *h = get_handle(*ingid);
     grib_multi_handle *mh = get_multi_handle(*mgid);
 
@@ -1924,7 +2039,8 @@ int grib_c_multi_append(int* ingid, int* sec,int* mgid) {
     return grib_multi_handle_append(h,*sec,mh);
 }
 
-int grib_c_get_native_type(int* gid, char* key, int* type) {
+int grib_c_get_native_type(int* gid, char* key, int* type)
+{
     grib_handle *h = get_handle(*gid);
 
     if (!h) return GRIB_INVALID_GRIB;
@@ -1932,7 +2048,8 @@ int grib_c_get_native_type(int* gid, char* key, int* type) {
     return grib_get_native_type(h, key, type);
 }
 
-int grib_c_index_write(int* gid, char* file) {
+int grib_c_index_write(int* gid, char* file)
+{
     grib_index *i = get_index(*gid);
     int err = GRIB_SUCCESS;
 
@@ -1944,7 +2061,8 @@ int grib_c_index_write(int* gid, char* file) {
     }
 }
 
-int grib_c_index_read(char* file, int* gid) {
+int grib_c_index_read(char* file, int* gid)
+{
     int err = 0;
     grib_index *i = NULL;
 
@@ -1963,7 +2081,8 @@ int grib_c_index_read(char* file, int* gid) {
     return GRIB_INVALID_FILE;
 }
 
-void no_fail_on_wrong_length(int flag) {
+void no_fail_on_wrong_length(int flag)
+{
     grib_context *c = grib_context_get_default();
     int value;
     assert(c != NULL);
@@ -1971,23 +2090,27 @@ void no_fail_on_wrong_length(int flag) {
     c->no_fail_on_wrong_length = value;
 }
 
-void grib_c_gts_header_on(void) {
+void grib_c_gts_header_on(void)
+{
     grib_context *c = grib_context_get_default();
     assert(c != NULL);
     grib_gts_header_on(c);
 }
 
-void grib_c_gts_header_off(void) {
+void grib_c_gts_header_off(void)
+{
     grib_context *c = grib_context_get_default();
     assert(c != NULL);
     grib_gts_header_off(c);
 }
 
-long grib_c_get_api_version(void) {
+long grib_c_get_api_version(void)
+{
     return grib_get_api_version();
 }
 
-int grib_c_get_message(int *gid, const void **msg, size_t *size) {
+int grib_c_get_message(int *gid, const void **msg, size_t *size)
+{
     grib_handle *h = get_handle(*gid);
     return grib_get_message(h,msg,size);
 }
diff --git a/python/gribapi.c b/python/gribapi.c
index 7770ce4..36efd0f 100644
--- a/python/gribapi.c
+++ b/python/gribapi.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/python/gribapi.py b/python/gribapi.py
index b002ffa..1f7fd58 100644
--- a/python/gribapi.py
+++ b/python/gribapi.py
@@ -1,21 +1,17 @@
 """
 @package gribapi
- at brief This package is a low level Python interface to GRIB API. It offers almost one to one bindings to the C API functions.
+ at brief This package is a low level Python interface to ecCodes. It offers almost one to one bindings to the C API functions.
 
-The Python interface to GRIB API uses by default the <a href="http://numpy.scipy.org/"><b>NumPy</b></a> package
+The Python interface to GRIB API uses the <a href="http://numpy.scipy.org/"><b>NumPy</b></a> package
 as the container of choice for the possible arrays of values that can be encoded/decoded in and from a grib message.
 Numpy is a package used for scientific computing in Python and an efficient container for generic data.
 
-Alternatively, the Python interface can be built without Numpy support, in which case, the data container used
-will be Python's native 'array' object.
-
 The Python interface and its support for NumPy can be enabled/disabled from the configure by using the following configure flags:\n
 
 @code
 --enable-python
 --disable-numpy
 
-Ex. ./configure --enable-python --disable-numpy
 @endcode
 
 When the '--enable-python' flag is used, then the system Python will be used to build the interface.
@@ -25,21 +21,22 @@ NumPy support can be disabled by using the '--disable-numpy' flag.
 @em Requirements:
 
     - Python 2.5 or higher
-    - NumPy (optional)
+    - NumPy
 
 """
 import gribapi_swig as _internal
+#from gribapi import gribapi_swig as _internal
 import types
 import sys
 import os
 from array import array
 from functools import wraps
-#import inspect
+# import inspect
 
 KEYTYPES = {
-    1:int,
-    2:float,
-    3:str,
+    1: int,
+    2: float,
+    3: str,
 }
 
 CODES_PRODUCT_ANY=0
@@ -48,29 +45,42 @@ CODES_PRODUCT_GRIB=1
 """ GRIB product kind """
 CODES_PRODUCT_BUFR=2
 """ BUFR product kind """
+CODES_PRODUCT_METAR=3
+""" METAR product kind """
+CODES_PRODUCT_GTS=4
+""" GTS product kind """
+CODES_PRODUCT_TAF=5
+""" TAF product kind """
+
+# Constants for 'missing'
+GRIB_MISSING_DOUBLE = -1e+100
+GRIB_MISSING_LONG = 2147483647
+
 
 # GRIB-51 Skip function arguments type checking if the
 # environment variable is defined
 no_type_checks = os.environ.get('GRIB_API_PYTHON_NO_TYPE_CHECKS') is not None
 
+
 # Function-arguments type-checking decorator
 # inspired from http://code.activestate.com/recipes/454322-type-checking-decorator/
 # modified to support multiple allowed types and all types in the same decorator call
 # This returns a decorator. _params_ is the dict with the type specs
 def require(**_params_):
     # The actual decorator. Receives the target function in _func_
-    def check_types(_func_, _params_ = _params_):
+    def check_types(_func_, _params_=_params_):
         if no_type_checks:
             return _func_
+
         @wraps(_func_)
         # The wrapper function. Replaces the target function and receives its args
         def modified(*args, **kw):
             arg_names = _func_.func_code.co_varnames
-            #argnames, varargs, kwargs, defaults = inspect.getargspec(_func_)
+            # argnames, varargs, kwargs, defaults = inspect.getargspec(_func_)
             kw.update(zip(arg_names, args))
             for name, allowed_types in _params_.iteritems():
                 param = kw[name]
-                if type(allowed_types) == types.TypeType:
+                if isinstance(allowed_types, types.TypeType):
                     allowed_types = (allowed_types,)
                 assert any([isinstance(param, type1) for type1 in allowed_types]), \
                     "Parameter '%s' should be of type %s" % (name, " or ".join([t.__name__ for t in allowed_types]))
@@ -78,6 +88,7 @@ def require(**_params_):
         return modified
     return check_types
 
+
 class GribInternalError(Exception):
     """
     @brief Wrap errors coming from the C API in a Python exception object.
@@ -87,12 +98,14 @@ class GribInternalError(Exception):
         Exception.__init__(self, value)
         if type(value) is int:
             err, self.msg = _internal.grib_c_get_error_string(value, 1024)
-            assert(err == 0)
+            assert err == 0
         else:
             self.msg = value
+
     def __str__(self):
         return self.msg
 
+
 class Bunch(dict):
     """
     The collector of a bunch of named stuff :).
@@ -123,6 +136,7 @@ class Bunch(dict):
                  in self.__dict__.items()]
         return '\n'.join(state)
 
+
 def with_numpy():
     """
     @brief Is numpy enabled?
@@ -137,23 +151,25 @@ def with_numpy():
 
     return numpy
 
+
 @require(errid=int)
 def GRIB_CHECK(errid):
     """
-    Utility function checking the GRIB API error code and raising 
+    Utility function checking the GRIB API error code and raising
     an error if that was set.
 
     @param errid  the C interface error id to check
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     if errid:
         raise GribInternalError(errid)
 
+
 @require(fileobj=file)
-def gts_new_from_file(fileobj, headers_only = False):
+def gts_new_from_file(fileobj, headers_only=False):
     """
     @brief Load in memory a GTS message from a file.
-    
+
     The message can be accessed through its id and it will be available\n
     until @ref grib_release is called.\n
 
@@ -163,13 +179,13 @@ def gts_new_from_file(fileobj, headers_only = False):
     if one is only interested in browsing through messages to retrieve metadata.
     Any attempt to retrieve data values keys when in the headers only mode will
     result in a key not found error.
-    
+
     \b Examples: \ref grib_get_keys.py "grib_get_keys.py"
-    
+
     @param fileobj        python file object
     @param headers_only   whether or not to load the message with the headers only
     @return id of the GTS loaded in memory
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     err, gribid = _internal.grib_c_new_gts_from_file(fileobj, headers_only, 0)
     if err:
@@ -180,12 +196,47 @@ def gts_new_from_file(fileobj, headers_only = False):
     else:
         return gribid
 
+ at require(fileobj=file)
+def metar_new_from_file(fileobj, headers_only = False):
+    """
+    @brief Load in memory a METAR message from a file.
+
+    The message can be accessed through its id and it will be available\n
+    until @ref grib_release is called.\n
+
+    The message can be loaded headers only by using the headers_only argument.
+    Default is to have the headers only option grib_set to off (False). If set to on (True),
+    data values will be skipped. This will result in a significant performance gain
+    if one is only interested in browsing through messages to retrieve metadata.
+    Any attempt to retrieve data values keys when in the headers only mode will
+    result in a key not found error.
+
+    \b Examples: \ref grib_get_keys.py "grib_get_keys.py"
+
+    @param fileobj        python file object
+    @param headers_only   whether or not to load the message with the headers only
+    @return id of the METAR loaded in memory
+    @exception GribInternalError
+    """
+    err, gribid = _internal.grib_c_new_metar_from_file(fileobj, headers_only, 0)
+    if err:
+        if err == _internal.GRIB_END_OF_FILE:
+            return None
+        else:
+            GRIB_CHECK(err)
+    else:
+        return gribid
+
 @require(fileobj=file,product_kind=int)
 def codes_new_from_file(fileobj, product_kind, headers_only = False):
     if product_kind == CODES_PRODUCT_GRIB:
         return grib_new_from_file(fileobj, headers_only)
     if product_kind == CODES_PRODUCT_BUFR:
         return bufr_new_from_file(fileobj, headers_only)
+    if product_kind == CODES_PRODUCT_METAR:
+        return metar_new_from_file(fileobj, headers_only)
+    if product_kind == CODES_PRODUCT_GTS:
+        return gts_new_from_file(fileobj, headers_only)
     if product_kind == CODES_PRODUCT_ANY:
         return any_new_from_file(fileobj, headers_only)
     raise Exception("Invalid product kind: " + product_kind)
@@ -215,10 +266,10 @@ def any_new_from_file(fileobj, headers_only = False):
         return gribid
 
 @require(fileobj=file)
-def bufr_new_from_file(fileobj, headers_only = False):
+def bufr_new_from_file(fileobj, headers_only=False):
     """
     @brief Load in memory a BUFR message from a file.
-    
+
     The message can be accessed through its id and it will be available\n
     until @ref grib_release is called.\n
 
@@ -228,13 +279,13 @@ def bufr_new_from_file(fileobj, headers_only = False):
     if one is only interested in browsing through messages to retrieve metadata.
     Any attempt to retrieve data values keys when in the headers only mode will
     result in a key not found error.
-    
+
     \b Examples: \ref grib_get_keys.py "grib_get_keys.py"
-    
+
     @param fileobj        python file object
     @param headers_only   whether or not to load the message with the headers only
     @return id of the BUFR loaded in memory
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     err, gribid = _internal.grib_c_new_bufr_from_file(fileobj, headers_only, 0)
     if err:
@@ -245,11 +296,12 @@ def bufr_new_from_file(fileobj, headers_only = False):
     else:
         return gribid
 
+
 @require(fileobj=file)
-def grib_new_from_file(fileobj, headers_only = False):
+def grib_new_from_file(fileobj, headers_only=False):
     """
     @brief Load in memory a grib message from a file.
-    
+
     The message can be accessed through its gribid and it will be available\n
     until @ref grib_release is called.\n
 
@@ -259,13 +311,13 @@ def grib_new_from_file(fileobj, headers_only = False):
     if one is only interested in browsing through messages to retrieve metadata.
     Any attempt to retrieve data values keys when in the headers only mode will
     result in a key not found error.
-    
+
     \b Examples: \ref grib_get_keys.py "grib_get_keys.py"
-    
+
     @param fileobj        python file object
     @param headers_only   whether or not to load the message with the headers only
     @return id of the grib loaded in memory
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     err, gribid = _internal.grib_c_new_from_file(fileobj, 0, headers_only)
     if err:
@@ -276,124 +328,135 @@ def grib_new_from_file(fileobj, headers_only = False):
     else:
         return gribid
 
+
 @require(fileobj=file)
 def grib_count_in_file(fileobj):
     """
     @brief Count the messages in a file.
-    
+
     \b Examples: \ref count_messages.py "count_messages.py"
-    
+
     @param fileobj  python file object
     @return number of messages in the file
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     err, num = _internal.grib_c_count_in_file(fileobj)
     GRIB_CHECK(err)
     return num
 
+
 def grib_multi_support_on():
     """
     @brief Turn on the support for multiple fields in a single message.
-    
-    @exception GribInternalError 
+
+    @exception GribInternalError
     """
     _internal.grib_c_multi_support_on()
 
+
 def grib_multi_support_off():
     """
     @brief Turn off the support for multiple fields in a single message.
-    
-    @exception GribInternalError 
+
+    @exception GribInternalError
     """
     _internal.grib_c_multi_support_off()
 
+
 @require(gribid=int)
 def grib_release(gribid):
     """
     @brief Free the memory for the message referred as gribid.
-    
+
     \b Examples: \ref grib_get_keys.py "grib_get_keys.py"
-    
+
     @param gribid      id of the grib loaded in memory
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     GRIB_CHECK(_internal.grib_c_release(gribid))
 
- at require(gribid=int,key=str)
+
+ at require(gribid=int, key=str)
 def grib_get_string(gribid, key):
     """
     @brief Get the string value of a key from a grib message.
-    
+
     @param gribid      id of the grib loaded in memory
     @param key         key name
     @return string value of key
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     length = grib_get_string_length(gribid, key)
-    err,value = _internal.grib_c_get_string(gribid, key, length)
+    err, value = _internal.grib_c_get_string(gribid, key, length)
     GRIB_CHECK(err)
 
     stpos = value.find('\0')
     if stpos != -1:
         value = value[0:stpos]
-        
+
     return value
 
- at require(gribid=int,key=str,value=str)
+
+ at require(gribid=int, key=str, value=str)
 def grib_set_string(gribid, key, value):
     """
     @brief Set the value for a string key in a grib message.
-    
+
     @param gribid      id of the grib loaded in memory
     @param key         key name
     @param value       string value
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    GRIB_CHECK(_internal.grib_c_set_string(gribid,key,value,len(value)))
+    GRIB_CHECK(_internal.grib_c_set_string(gribid, key, value, len(value)))
+
 
 def grib_gribex_mode_on():
     """
     @brief Turn on the compatibility mode with gribex.
-    
-    @exception GribInternalError 
+
+    @exception GribInternalError
     """
     _internal.grib_c_gribex_mode_on()
 
+
 def grib_gribex_mode_off():
     """
     @brief Turn off the compatibility mode with gribex.
-    
-    @exception GribInternalError 
+
+    @exception GribInternalError
     """
     _internal.grib_c_gribex_mode_off()
 
+
 @require(gribid=int, fileobj=file)
 def grib_write(gribid, fileobj):
     """
     @brief Write a message to a file.
 
     \b Examples: \ref grib_set_keys.py "grib_set_keys.py"
-    
+
     @param gribid     id of the grib loaded in memory
     @param fileobj    python file object
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     GRIB_CHECK(_internal.grib_c_write(gribid, fileobj))
 
- at require(multigribid=int,fileobj=file)
+
+ at require(multigribid=int, fileobj=file)
 def grib_multi_write(multigribid, fileobj):
     """
     @brief Write a multi field message to a file.
 
     \b Examples: \ref grib_multi_write.py "grib_multi_write.py"
-    
+
     @param multigribid      id of the multi field grib loaded in memory
     @param fileobj          python file object
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     GRIB_CHECK(_internal.grib_c_multi_write(multigribid, fileobj))
 
- at require(ingribid=int,startsection=int,multigribid=int)
+
+ at require(ingribid=int, startsection=int, multigribid=int)
 def grib_multi_append(ingribid, startsection, multigribid):
     """
     @brief Append a single field grib message to a multi field grib message.
@@ -404,108 +467,116 @@ def grib_multi_append(ingribid, startsection, multigribid):
     \b Examples: \ref grib_multi_write.py "grib_multi_write.py"
 
     @param ingribid      id of the input single grib
-    @param startsection  starting from startsection (included) all the sections are copied 
+    @param startsection  starting from startsection (included) all the sections are copied
                          from the input single grib to the output multi grib
     @param multigribid   id of the output multi filed grib
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     GRIB_CHECK(_internal.grib_c_multi_append(ingribid, startsection, multigribid))
 
- at require(gribid=int,key=str)
-def grib_get_size(gribid,key):
+
+ at require(gribid=int, key=str)
+def grib_get_size(gribid, key):
     """
     @brief Get the size of an array key.
 
     \b Examples: \ref grib_get_keys.py "grib_get_keys.py",\ref count_messages.py "count_messages.py"
-    
+
     @param gribid      id of the grib loaded in memory
     @param key         name of the key
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    err,result = _internal.grib_c_get_size_long(gribid,key)
+    err, result = _internal.grib_c_get_size_long(gribid, key)
     GRIB_CHECK(err)
     return result
 
- at require(gribid=int,key=str)
-def grib_get_string_length(gribid,key):
+
+ at require(gribid=int, key=str)
+def grib_get_string_length(gribid, key):
     """
     @brief Get the length of the string version of a key.
 
     @param gribid      id of the grib loaded in memory
     @param key         name of the key
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    err,result = _internal.grib_c_get_string_length(gribid,key)
+    err, result = _internal.grib_c_get_string_length(gribid, key)
     GRIB_CHECK(err)
     return result
 
+
 @require(iterid=int)
 def grib_skip_computed(iterid):
     """
     @brief Skip the computed keys in a keys iterator.
-    
+
     The computed keys are not coded in the message, they are computed
     from other keys.
-    
+
     @see grib_keys_iterator_new,grib_keys_iterator_next,grib_keys_iterator_delete
-    
+
     @param iterid      keys iterator id
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     GRIB_CHECK(_internal.grib_c_skip_computed(iterid))
 
+
 @require(iterid=int)
 def grib_skip_coded(iterid):
     """
     @brief Skip the coded keys in a keys iterator.
-    
+
     The coded keys are actually coded in the message.
-    
+
     @see grib_keys_iterator_new,grib_keys_iterator_next,grib_keys_iterator_delete
-    
+
     @param iterid      keys iterator id
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     GRIB_CHECK(_internal.grib_c_skip_coded(iterid))
 
+
 @require(iterid=int)
 def grib_skip_edition_specific(iterid):
     """
     @brief Skip the edition specific keys in a keys iterator.
-    
+
     @see grib_keys_iterator_new,grib_keys_iterator_next,grib_keys_iterator_delete
-    
+
     @param iterid      keys iterator id
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     GRIB_CHECK(_internal.grib_c_skip_edition_specific(iterid))
 
+
 @require(iterid=int)
 def grib_skip_duplicates(iterid):
     """
     @brief Skip the duplicate keys in a keys iterator.
-    
+
     @see grib_keys_iterator_new,grib_keys_iterator_next,grib_keys_iterator_delete
-    
+
     @param iterid      keys iterator id
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     GRIB_CHECK(_internal.grib_c_skip_duplicates(iterid))
 
+
 @require(iterid=int)
 def grib_skip_read_only(iterid):
     """
     @brief Skip the read_only keys in a keys iterator.
-    
+
     Read only keys cannot be set.
-    
+
     @see grib_keys_iterator_new,grib_keys_iterator_next,grib_keys_iterator_delete
-    
+
     @param iterid      keys iterator id
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     GRIB_CHECK(_internal.grib_c_skip_read_only(iterid))
 
+
 @require(iterid=int)
 def grib_skip_function(iterid):
     """
@@ -514,12 +585,13 @@ def grib_skip_function(iterid):
     @see grib_keys_iterator_new,grib_keys_iterator_next,grib_keys_iterator_delete
 
     @param iterid      keys iterator id
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     GRIB_CHECK(_internal.grib_c_skip_function(iterid))
 
- at require(gribid=int,mode=int)
-def grib_iterator_new(gribid,mode):
+
+ at require(gribid=int, mode=int)
+def grib_iterator_new(gribid, mode):
     """
     @brief Create a new geoiterator for the given message, using its geometry and values.
 
@@ -532,10 +604,11 @@ def grib_iterator_new(gribid,mode):
     @param mode    flags for future use
     @return geoiterator id
     """
-    err, iterid = _internal.grib_c_iterator_new(gribid,mode)
+    err, iterid = _internal.grib_c_iterator_new(gribid, mode)
     GRIB_CHECK(err)
     return iterid
 
+
 @require(iterid=int)
 def grib_iterator_delete(iterid):
     """
@@ -544,10 +617,11 @@ def grib_iterator_delete(iterid):
     \b Examples: \ref grib_iterator.py "grib_iterator.py"
 
     @param iterid  geoiterator id
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     GRIB_CHECK(_internal.grib_c_iterator_delete(iterid))
 
+
 @require(iterid=int)
 def grib_iterator_next(iterid):
     """
@@ -557,18 +631,19 @@ def grib_iterator_next(iterid):
 
     @param iterid geoiterator id
     @return tuple with the latitude, longitude and value
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    err,lat,lon,value = _internal.grib_c_iterator_next(iterid)
-    if (err == 0):
+    err, lat, lon, value = _internal.grib_c_iterator_next(iterid)
+    if err == 0:
         return []
-    elif (err < 0):
+    elif err < 0:
         GRIB_CHECK(err)
     else:
-        return (lat,lon,value)
+        return (lat, lon, value)
+
 
 @require(gribid=int)
-def grib_keys_iterator_new(gribid,namespace=None):
+def grib_keys_iterator_new(gribid, namespace=None):
     """
     @brief Create a new iterator on the keys.
 
@@ -588,100 +663,107 @@ def grib_keys_iterator_new(gribid,namespace=None):
     @param gribid      id of the grib loaded in memory
     @param namespace   the namespace of the keys to search for (all the keys if None)
     @return keys iterator id to be used in the keys iterator functions
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    err, iterid = _internal.grib_c_keys_iterator_new(gribid,namespace)
+    err, iterid = _internal.grib_c_keys_iterator_new(gribid, namespace)
     GRIB_CHECK(err)
     return iterid
 
+
 @require(iterid=int)
 def grib_keys_iterator_next(iterid):
     """
     @brief Advance to the next keys iterator value.
 
     \b Examples: \ref grib_keys_iterator.py "grib_keys_iterator.py"
-    
+
     @param iterid      keys iterator id created with @ref grib_keys_iterator_new
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     res = _internal.grib_c_keys_iterator_next(iterid)
     if res < 0:
         GRIB_CHECK(res)
     return res
 
+
 @require(iterid=int)
 def grib_keys_iterator_delete(iterid):
     """
     @brief Delete a keys iterator and free memory.
 
     \b Examples: \ref grib_keys_iterator.py "grib_keys_iterator.py"
-    
+
     @param iterid      keys iterator id created with @ref grib_keys_iterator_new
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     GRIB_CHECK(_internal.grib_c_keys_iterator_delete(iterid))
 
+
 @require(iterid=int)
 def grib_keys_iterator_get_name(iterid):
     """
     @brief Get the name of a key from a keys iterator.
 
     \b Examples: \ref grib_keys_iterator.py "grib_keys_iterator.py"
-    
+
     @param iterid      keys iterator id created with @ref grib_keys_iterator_new
     @return key name to be retrieved
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    err, name = _internal.grib_c_keys_iterator_get_name(iterid,1024)
+    err, name = _internal.grib_c_keys_iterator_get_name(iterid, 1024)
     GRIB_CHECK(err)
     return name
 
+
 @require(iterid=int)
 def grib_keys_iterator_rewind(iterid):
     """
     @brief Rewind a keys iterator.
-    
+
     @param iterid      keys iterator id created with @ref grib_keys_iterator_new
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     GRIB_CHECK(_internal.grib_c_keys_iterator_rewind(iterid))
 
- at require(gribid=int,key=str)
-def grib_get_long(gribid,key):
+
+ at require(gribid=int, key=str)
+def grib_get_long(gribid, key):
     """
     @brief Get the value of a key in a grib message as an int.
-    
+
     @param gribid      id of the grib loaded in memory
     @param key         key name
     @return value of key as int
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    err, value = _internal.grib_c_get_long(gribid,key)
+    err, value = _internal.grib_c_get_long(gribid, key)
     GRIB_CHECK(err)
     return value
 
- at require(gribid=int,key=str)
-def grib_get_double(gribid,key):
+
+ at require(gribid=int, key=str)
+def grib_get_double(gribid, key):
     """
     @brief Get the value of a key in a grib message as a float.
-    
+
     @param gribid      id of the grib loaded in memory
     @param key         key name
     @return value of key as float
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    err, value = _internal.grib_c_get_double(gribid,key)
+    err, value = _internal.grib_c_get_double(gribid, key)
     GRIB_CHECK(err)
     return value
 
- at require(gribid=int,key=str,value=(int,long,float,str))
-def grib_set_long(gribid,key,value):
+
+ at require(gribid=int, key=str, value=(int, long, float, str))
+def grib_set_long(gribid, key, value):
     """
     @brief Set the integer value for a key in a grib message.
 
     A TypeError exception will be thrown if value cannot be represented
     as an integer.
-    
+
     @param gribid      id of the grib loaded in memory
     @param key         key name
     @param value       value to set
@@ -689,22 +771,23 @@ def grib_set_long(gribid,key,value):
     """
     try:
         value = int(value)
-    except (ValueError,TypeError):
+    except (ValueError, TypeError):
         raise TypeError("Invalid type")
-    
-    if (value > sys.maxint):
+
+    if value > sys.maxint:
         raise TypeError("Invalid type")
 
-    GRIB_CHECK(_internal.grib_c_set_long(gribid,key,value))
+    GRIB_CHECK(_internal.grib_c_set_long(gribid, key, value))
 
- at require(gribid=int,key=str,value=(int,long,float,str))
-def grib_set_double(gribid,key,value):
+
+ at require(gribid=int, key=str, value=(int, long, float, str))
+def grib_set_double(gribid, key, value):
     """
     @brief Set the double value for a key in a grib message.
 
     A TypeError exception will be thrown if value cannot be represented
     as a float.
-    
+
     @param gribid      id of the grib loaded in memory
     @param key         key name
     @param value       float value to set
@@ -712,10 +795,11 @@ def grib_set_double(gribid,key,value):
     """
     try:
         value = float(value)
-    except (ValueError,TypeError):
+    except (ValueError, TypeError):
         raise TypeError("Invalid type")
 
-    GRIB_CHECK(_internal.grib_c_set_double(gribid,key,value))
+    GRIB_CHECK(_internal.grib_c_set_double(gribid, key, value))
+
 
 @require(samplename=str)
 def grib_new_from_samples(samplename):
@@ -732,10 +816,11 @@ def grib_new_from_samples(samplename):
     @return id of the grib loaded in memory
     @exception GribInternalError
     """
-    err,gribid = _internal.grib_c_new_from_samples(0,samplename)
+    err, gribid = _internal.grib_c_new_from_samples(0, samplename)
     GRIB_CHECK(err)
     return gribid
 
+
 @require(gribid_src=int)
 def grib_clone(gribid_src):
     """
@@ -743,18 +828,19 @@ def grib_clone(gribid_src):
 
     Create a copy of a given message (\em gribid_src) resulting in a new
     message in memory (\em gribid_dest) identical to the original one.
-    
+
     \b Examples: \ref grib_clone.py "grib_clone.py"
-    
+
     @param gribid_src     id of grib to be cloned
     @return id of clone
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    err,newgribid_src = _internal.grib_c_clone(gribid_src,0)
+    err, newgribid_src = _internal.grib_c_clone(gribid_src, 0)
     GRIB_CHECK(err)
     return newgribid_src
 
- at require(gribid=int,key=str)
+
+ at require(gribid=int, key=str)
 def grib_set_double_array(gribid, key, inarray):
     """
     @brief Set the value of the key to a double array.
@@ -769,11 +855,11 @@ def grib_set_double_array(gribid, key, inarray):
 
     @param gribid   id of the grib loaded in memory
     @param key      key name
-    @param inarray  tuple,list,array,numpy.ndarray 
-    @exception GribInternalError 
+    @param inarray  tuple,list,array,numpy.ndarray
+    @exception GribInternalError
     """
     if with_numpy():
-        GRIB_CHECK(_internal.grib_set_double_ndarray(gribid,key,inarray))
+        GRIB_CHECK(_internal.grib_set_double_ndarray(gribid, key, inarray))
     else:
         nval = len(inarray)
         a = _internal.new_doubleArray(nval)
@@ -781,46 +867,72 @@ def grib_set_double_array(gribid, key, inarray):
         s.assign(nval)
 
         for i in range(nval):
-            _internal.doubleArray_setitem(a,i,inarray[i])
+            _internal.doubleArray_setitem(a, i, inarray[i])
 
-        GRIB_CHECK(_internal.grib_c_set_real8_array(gribid,key,a,s))
+        GRIB_CHECK(_internal.grib_c_set_real8_array(gribid, key, a, s))
 
         _internal.delete_doubleArray(a)
 
- at require(gribid=int,key=str)
-def grib_get_double_array(gribid,key):
+
+ at require(gribid=int, key=str)
+def grib_get_double_array(gribid, key):
     """
-    @brief Get the value of the key as a double array. 
-    
+    @brief Get the value of the key as a double array.
+
     If NumPy is enabled, the double array will be stored in a NumPy ndarray.
     Otherwise, Python's native array type will be used.
 
     @param gribid   id of the grib loaded in memory
     @param key      key name
     @return numpy.ndarray or array
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     if with_numpy():
-        nval = grib_get_size(gribid,key)
-        err,result = _internal.grib_get_double_ndarray(gribid,key,nval)
+        nval = grib_get_size(gribid, key)
+        err, result = _internal.grib_get_double_ndarray(gribid, key, nval)
         GRIB_CHECK(err)
         return result
     else:
-        nval = grib_get_size(gribid,key)
+        nval = grib_get_size(gribid, key)
         a = _internal.new_doubleArray(nval)
         s = _internal.intp()
         s.assign(nval)
 
-        GRIB_CHECK(_internal.grib_c_get_real8_array(gribid,key,a,s))
+        GRIB_CHECK(_internal.grib_c_get_real8_array(gribid, key, a, s))
 
         result = array("d")
         for i in range(nval):
-            result.append(_internal.doubleArray_getitem(a,i))
+            result.append(_internal.doubleArray_getitem(a, i))
 
         _internal.delete_doubleArray(a)
 
         return result
 
+ at require(gribid=int, key=str)
+def grib_get_string_array(gribid, key):
+    """
+    @brief Get the value of the key as an array of strings.
+
+    @param gribid   id of the grib loaded in memory
+    @param key      key name
+    @return numpy.ndarray or array
+    @exception GribInternalError
+    """
+    nval = grib_get_size(gribid,key)
+    a = _internal.new_stringArray(nval)
+    s = _internal.sizetp()
+    s.assign(nval)
+
+    GRIB_CHECK(_internal.grib_c_get_string_array(gribid,key,a,s))
+
+    result = list()
+    for i in range(nval):
+        result.append(_internal.stringArray_getitem(a,i))
+
+    _internal.delete_stringArray(a)
+
+    return result
+
 @require(gribid=int,key=str)
 def grib_set_long_array(gribid, key, inarray):
     """
@@ -831,11 +943,11 @@ def grib_set_long_array(gribid, key, inarray):
     allows the construction of arrays from arbitrary python sequences.
 
     The elements of the input sequence need to be convertible to an int.
-    
+
     @param gribid      id of the grib loaded in memory
     @param key         key name
     @param inarray     tuple,list,python array,numpy array
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     if with_numpy():
         GRIB_CHECK(_internal.grib_set_long_ndarray(gribid, key, inarray))
@@ -846,46 +958,48 @@ def grib_set_long_array(gribid, key, inarray):
         s.assign(nval)
 
         for i in range(nval):
-            _internal.longArray_setitem(a,i,inarray[i])
+            _internal.longArray_setitem(a, i, inarray[i])
 
-        GRIB_CHECK(_internal.grib_c_set_long_array(gribid,key,a,s))
+        GRIB_CHECK(_internal.grib_c_set_long_array(gribid, key, a, s))
 
         _internal.delete_longArray(a)
 
- at require(gribid=int,key=str)
-def grib_get_long_array(gribid,key):
+
+ at require(gribid=int, key=str)
+def grib_get_long_array(gribid, key):
     """
     @brief Get the integer array of values for a key from a grib message.
-    
+
     If NumPy is enabled, the integer array will be stored in a NumPy ndarray.
     Otherwise, Python's native array type will be used.
-    
+
     @param gribid      id of the grib loaded in memory
     @param key         key name
     @return numpy.ndarray or array
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     if with_numpy():
-        nval = grib_get_size(gribid,key)
-        err,result = _internal.grib_get_long_ndarray(gribid,key,nval)
+        nval = grib_get_size(gribid, key)
+        err, result = _internal.grib_get_long_ndarray(gribid, key, nval)
         GRIB_CHECK(err)
         return result
     else:
-        nval = grib_get_size(gribid,key)
+        nval = grib_get_size(gribid, key)
         a = _internal.new_longArray(nval)
         s = _internal.intp()
         s.assign(nval)
 
-        GRIB_CHECK(_internal.grib_c_get_long_array(gribid,key,a,s))
+        GRIB_CHECK(_internal.grib_c_get_long_array(gribid, key, a, s))
 
         result = array("l")
         for i in range(nval):
-            result.append(_internal.longArray_getitem(a,i))
+            result.append(_internal.longArray_getitem(a, i))
 
         _internal.delete_longArray(a)
 
         return result
 
+
 def grib_multi_new():
     """
     @brief Create a new multi field and return its id.
@@ -893,12 +1007,13 @@ def grib_multi_new():
     \b Examples: \ref grib_multi_write.py "grib_multi_write.py"
 
     @return id of the multi field
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    err,mgid = _internal.grib_c_multi_new()
+    err, mgid = _internal.grib_c_multi_new()
     GRIB_CHECK(err)
     return mgid
 
+
 @require(gribid=int)
 def grib_multi_release(gribid):
     """
@@ -907,24 +1022,26 @@ def grib_multi_release(gribid):
     \b Examples: \ref grib_multi_write.py "grib_multi_write.py"
 
     @param gribid    id of the multi field we want to release the memory for
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     GRIB_CHECK(_internal.grib_c_multi_release(gribid))
 
- at require(gribid_src=int,namespace=str,gribid_dest=int)
+
+ at require(gribid_src=int, namespace=str, gribid_dest=int)
 def grib_copy_namespace(gribid_src, namespace, gribid_dest):
     """
     @brief Copy the value of all the keys belonging to a namespace from the source message
     to the destination message.
-    
+
     @param gribid_src     id of source message
     @param gribid_dest    id of destination message
     @param namespace      namespace to be copied
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     GRIB_CHECK(_internal.grib_c_copy_namespace(gribid_src, namespace, gribid_dest))
 
- at require(filename=str,keys=(tuple,list))
+
+ at require(filename=str, keys=(tuple, list))
 def grib_index_new_from_file(filename, keys):
     """
     @brief Create a new index from a file.
@@ -934,13 +1051,14 @@ def grib_index_new_from_file(filename, keys):
     @param filename   path of the file to index on
     @param keys       sequence of keys to index on
     @return index id
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     ckeys = ",".join(keys)
-    err,iid = _internal.grib_c_index_new_from_file(filename, ckeys)
+    err, iid = _internal.grib_c_index_new_from_file(filename, ckeys)
     GRIB_CHECK(err)
     return iid
 
+
 @require(indexid=int, filename=str)
 def grib_index_add_file(indexid, filename):
     """
@@ -950,197 +1068,206 @@ def grib_index_add_file(indexid, filename):
 
     @param indexid    id of the index to add the file to
     @param filename   path of the file to be added to index
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     err = _internal.grib_c_index_add_file(indexid, filename)
     GRIB_CHECK(err)
 
+
 @require(indexid=int)
 def grib_index_release(indexid):
     """
     @brief Delete an index.
 
     \b Examples: \ref grib_index.py "grib_index.py"
-    
+
     @param indexid   id of an index created from a file.
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     GRIB_CHECK(_internal.grib_c_index_release(indexid))
 
- at require(indexid=int,key=str)
-def grib_index_get_size(indexid,key):
+
+ at require(indexid=int, key=str)
+def grib_index_get_size(indexid, key):
     """
     @brief Get the number of distinct values for the index key. The key must belong to the index.
-    
+
     \b Examples: \ref grib_index.py "grib_index.py"
-    
+
     @param indexid    id of an index created from a file. The index must have been created on the given key.
     @param key        key for which the number of values is computed
     @return number of distinct values for key in index
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    err,value = _internal.grib_c_index_get_size_long(indexid,key)
+    err, value = _internal.grib_c_index_get_size_long(indexid, key)
     GRIB_CHECK(err)
     return value
 
- at require(indexid=int,key=str)
-def grib_index_get_long(indexid,key):
+
+ at require(indexid=int, key=str)
+def grib_index_get_long(indexid, key):
     """
-    @brief Get the distinct values of the key in argument contained in the index. The key must belong to the index. 
-    
+    @brief Get the distinct values of the key in argument contained in the index. The key must belong to the index.
+
     This function is used when the type of the key was explicitly defined as long or when the native type of the key is long.
-    
+
     \b Examples: \ref grib_index.py "grib_index.py"
-    
+
     @param indexid   id of an index created from a file. The index must have been created with the key in argument.
     @param key       key for wich the values are returned
     @return tuple with values of key in index
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    nval = grib_index_get_size(indexid,key)
+    nval = grib_index_get_size(indexid, key)
 
     a = _internal.new_longArray(nval)
     s = _internal.intp()
     s.assign(nval)
 
-    GRIB_CHECK(_internal.grib_c_index_get_long(indexid,key,a,s))
+    GRIB_CHECK(_internal.grib_c_index_get_long(indexid, key, a, s))
 
     result = []
     for i in range(nval):
-        result.append(_internal.longArray_getitem(a,i))
+        result.append(_internal.longArray_getitem(a, i))
 
     _internal.delete_longArray(a)
 
     return tuple(result)
 
-def grib_index_get_string(indexid,key):
+
+def grib_index_get_string(indexid, key):
     """
-    @brief Get the distinct values of the key in argument contained in the index. The key must belong to the index. 
+    @brief Get the distinct values of the key in argument contained in the index. The key must belong to the index.
 
     This function is used when the type of the key was explicitly defined as string or when the native type of the key is string.
-    
+
     \b Examples: \ref grib_index.py "grib_index.py"
-    
+
     @param indexid   id of an index created from a file. The index must have been created with the key in argument.
     @param key       key for wich the values are returned
     @param return tuple with values of key in index
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    nval = grib_index_get_size(indexid,key)
+    nval = grib_index_get_size(indexid, key)
     max_val_size = 1024
 
-    err,raw_result,outnval = _internal.grib_c_index_get_string(indexid,key,max_val_size,nval)
+    err, raw_result, outnval = _internal.grib_c_index_get_string(indexid, key, max_val_size, nval)
     GRIB_CHECK(err)
 
     assert nval == outnval
 
     result = []
     for i in range(nval):
-        low = i*max_val_size
-        high = (i+1)*max_val_size
+        low = i * max_val_size
+        high = (i + 1) * max_val_size
         value = raw_result[low:high].rstrip()
         result.append(value)
 
     return tuple(result)
 
- at require(iid=int,key=str)
-def grib_index_get_double(iid,key):
+
+ at require(iid=int, key=str)
+def grib_index_get_double(iid, key):
     """
-    @brief Get the distinct values of the key in argument contained in the index. The key must belong to the index. 
-    
+    @brief Get the distinct values of the key in argument contained in the index. The key must belong to the index.
+
     This function is used when the type of the key was explicitly defined as double or when the native type of the key is double.
-    
+
     \b Examples: \ref grib_index.py "grib_index.py"
-    
+
     @param indexid   id of an index created from a file. The index must have been created with the key in argument.
     @param key       key for wich the values are returned
     @return tuple with values of key in index
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    nval = grib_index_get_size(iid,key)
+    nval = grib_index_get_size(iid, key)
 
     a = _internal.new_doubleArray(nval)
     s = _internal.intp()
     s.assign(nval)
 
-    GRIB_CHECK(_internal.grib_c_index_get_real8(iid,key,a,s))
+    GRIB_CHECK(_internal.grib_c_index_get_real8(iid, key, a, s))
 
     result = []
     for i in range(nval):
-        result.append(_internal.doubleArray_getitem(a,i))
+        result.append(_internal.doubleArray_getitem(a, i))
 
     _internal.delete_doubleArray(a)
 
     return tuple(result)
 
- at require(indexid=int,key=str,val=int)
-def grib_index_select_long(indexid,key,val):
+
+ at require(indexid=int, key=str, val=int)
+def grib_index_select_long(indexid, key, val):
     """
     @brief Select the message subset with key==value. The value is an integer.
-    
+
     The key must have been created with integer type or have integer as native type if the type was not explicitly defined in the index creation.
-    
+
     \b Examples: \ref grib_index.py "grib_index.py"
-    
+
     @param indexid   id of an index created from a file. The index must have been created with the key in argument.
     @param key       key to be selected
     @param value     value of the key to select
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    GRIB_CHECK(_internal.grib_c_index_select_long(indexid,key,val))
+    GRIB_CHECK(_internal.grib_c_index_select_long(indexid, key, val))
 
- at require(iid=int,key=str,val=float)
-def grib_index_select_double(iid,key,val):
+
+ at require(iid=int, key=str, val=float)
+def grib_index_select_double(iid, key, val):
     """
     @brief Select the message subset with key==value. The value is a double.
-    
+
     The key must have been created with integer type or have integer as native type if the type was not explicitly defined in the index creation.
-    
+
     \b Examples: \ref grib_index.py "grib_index.py"
-    
+
     @param indexid   id of an index created from a file. The index must have been created with the key in argument.
     @param key       key to be selected
     @param value     value of the key to select
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    GRIB_CHECK(_internal.grib_c_index_select_real8(iid,key,val))
+    GRIB_CHECK(_internal.grib_c_index_select_real8(iid, key, val))
 
- at require(indexid=int,key=str,val=str)
-def grib_index_select_string(indexid,key,val):
+
+ at require(indexid=int, key=str, val=str)
+def grib_index_select_string(indexid, key, val):
     """
-    @brief Select the message subset with key==value. The value is a integer. 
+    @brief Select the message subset with key==value. The value is a integer.
 
     The key must have been created with string type or have string as native type if the type was not explicitly defined in the index creation.
-    
+
     In case of error, if the status parameter (optional) is not given, the program will
     exit with an error message.\n Otherwise the error message can be
     gathered with @ref grib_get_error_string.
-    
+
     \b Examples: \ref grib_index.py "grib_index.py"
-    
+
     @param indexid   id of an index created from a file. The index must have been created with the key in argument.
     @param key       key to be selected
     @param value     value of the key to select
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    GRIB_CHECK(_internal.grib_c_index_select_string(indexid,key,val))
+    GRIB_CHECK(_internal.grib_c_index_select_string(indexid, key, val))
+
 
 def grib_new_from_index(indexid):
     """
     @brief Create a new handle from an index after having selected the key values.
 
-    All the keys belonging to the index must be selected before calling this function. 
+    All the keys belonging to the index must be selected before calling this function.
     Successive calls to this function will return all the handles compatible with the constraints defined selecting the values of the index keys.
-    
+
     The message can be accessed through its gribid and it will be available until @ref grib_release is called.
-    
+
     \b Examples: \ref grib_index.py "grib_index.py"
-    
+
     @param indexid   id of an index created from a file.
     @return id of the grib loaded in memory or None if end of index
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    err,gribid = _internal.grib_c_new_from_index(indexid,0)
+    err, gribid = _internal.grib_c_new_from_index(indexid, 0)
 
     if err:
         if err == _internal.GRIB_END_OF_INDEX:
@@ -1150,34 +1277,37 @@ def grib_new_from_index(indexid):
     else:
         return gribid
 
+
 @require(gribid=int)
 def grib_get_message_size(gribid):
     """
     @brief Get the size of a coded message.
-    
+
     @param gribid      id of the grib loaded in memory
     @return size in bytes of the message
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    err,value = _internal.grib_c_get_message_size(gribid)
+    err, value = _internal.grib_c_get_message_size(gribid)
     GRIB_CHECK(err)
     return value
 
+
 @require(gribid=int)
 def grib_get_message_offset(gribid):
     """
     @brief Get the offset of a coded message.
-    
+
     @param gribid      id of the grib loaded in memory
     @return offset in bytes of the message
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    err,value = _internal.grib_c_get_message_offset(gribid)
+    err, value = _internal.grib_c_get_message_offset(gribid)
     GRIB_CHECK(err)
     return value
 
- at require(gribid=int,key=str,index=int)
-def grib_get_double_element(gribid,key,index):
+
+ at require(gribid=int, key=str, index=int)
+def grib_get_double_element(gribid, key, index):
     """
     @brief Get as double the i-th element of the "key" array.
 
@@ -1185,15 +1315,16 @@ def grib_get_double_element(gribid,key,index):
     @param key         the key to be searched
     @param index       zero based index of value to retrieve
     @return value
-    @exception GribInternalError 
+    @exception GribInternalError
 
     """
-    err,value = _internal.grib_c_get_real8_element(gribid,key,index)
+    err, value = _internal.grib_c_get_real8_element(gribid, key, index)
     GRIB_CHECK(err)
     return value
 
- at require(gribid=int,key=str,indexes=(list,tuple))
-def grib_get_double_elements(gribid,key,indexes):
+
+ at require(gribid=int, key=str, indexes=(list, tuple))
+def grib_get_double_elements(gribid, key, indexes):
     """
     @brief Get as double array the elements of the "key" array whose indexes are listed in the input array.
 
@@ -1201,12 +1332,12 @@ def grib_get_double_elements(gribid,key,indexes):
     @param key         the key to be searched
     @param indexes     list or tuple of indexes
     @return numpy.ndarray or array
-    @exception GribInternalError 
+    @exception GribInternalError
 
     """
     if with_numpy():
         nidx = len(indexes)
-        err,result = _internal.grib_get_double_ndelements(gribid,key,indexes,nidx)
+        err, result = _internal.grib_get_double_ndelements(gribid, key, indexes, nidx)
         GRIB_CHECK(err)
         return result
     else:
@@ -1218,21 +1349,22 @@ def grib_get_double_elements(gribid,key,indexes):
         psize.assign(nidx)
 
         for i in range(len(indexes)):
-            _internal.intArray_setitem(pidx,i,indexes[i])
+            _internal.intArray_setitem(pidx, i, indexes[i])
 
-        err = _internal.grib_c_get_real8_elements(gribid,key,pidx,pval,psize)
+        err = _internal.grib_c_get_real8_elements(gribid, key, pidx, pval, psize)
         GRIB_CHECK(err)
 
         result = array("d")
         for i in range(psize.value()):
-            result.append(_internal.doubleArray_getitem(pval,i))
+            result.append(_internal.doubleArray_getitem(pval, i))
 
         _internal.delete_intArray(pidx)
         _internal.delete_doubleArray(pval)
 
         return result
 
-def grib_get_elements(gribid,key,indexes):
+
+def grib_get_elements(gribid, key, indexes):
     """
     @brief Retrieve the elements of the key array for the indexes specified in the input.
 
@@ -1248,38 +1380,40 @@ def grib_get_elements(gribid,key,indexes):
         indexes = (indexes,)
 
     nidx = len(indexes)
-    err,result = _internal.grib_get_double_ndelements(gribid,key,indexes,nidx)
+    err, result = _internal.grib_get_double_ndelements(gribid, key, indexes, nidx)
     GRIB_CHECK(err)
     return result
 
- at require(gribid=int,key=str)
-def grib_set_missing(gribid,key):
+
+ at require(gribid=int, key=str)
+def grib_set_missing(gribid, key):
     """
     @brief Set as missing the value for a key in a grib message.
-    
-    It can be used to set a missing value in the grib header but not in 
+
+    It can be used to set a missing value in the grib header but not in
     the data values.
-    
+
     \b Examples: \ref set_missing.py "set_missing.py"
-    
+
     @param  gribid     id of the grib loaded in memory
     @param  key        key name
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    GRIB_CHECK(_internal.grib_c_set_missing(gribid,key))
+    GRIB_CHECK(_internal.grib_c_set_missing(gribid, key))
+
 
 @require(gribid=int)
 def grib_set_key_vals(gribid, key_vals):
     """
     Set the values for several keys at once in a grib message.
-    
+
     @param gribid      id of the grib loaded in memory
     @param key_vals    can be a string, list/tuple or dictionary.
                        If a string, format must be "key1=val1,key2=val2"
                        If a list, it must contain strings of the form "key1=val1"
     @exception         GribInternalError
     """
-    if (len(key_vals) == 0):
+    if len(key_vals) == 0:
         raise GribInternalError("Empty key/values argument")
     key_vals_str = ""
     if isinstance(key_vals, str):
@@ -1289,9 +1423,9 @@ def grib_set_key_vals(gribid, key_vals):
         # A list of key=val strings
         for kv in key_vals:
             if not isinstance(kv, str):
-                raise TypeError("Invalid list/tuple element type '%s'"%kv)
-            if not '=' in str(kv):
-                raise GribInternalError("Invalid list/tuple element format '%s'"%kv)
+                raise TypeError("Invalid list/tuple element type '%s'" % kv)
+            if '=' not in str(kv):
+                raise GribInternalError("Invalid list/tuple element format '%s'" % kv)
             if len(key_vals_str) > 0:
                 key_vals_str += ','
             key_vals_str += kv
@@ -1300,14 +1434,15 @@ def grib_set_key_vals(gribid, key_vals):
         for key in key_vals.iterkeys():
             if len(key_vals_str) > 0:
                 key_vals_str += ','
-            key_vals_str += key+'=' + str(key_vals[key])
+            key_vals_str += key + '=' + str(key_vals[key])
     else:
         raise TypeError("Invalid argument type")
 
     GRIB_CHECK(_internal.grib_c_set_key_vals(gribid, key_vals_str))
 
- at require(gribid=int,key=str)
-def grib_is_missing(gribid,key):
+
+ at require(gribid=int, key=str)
+def grib_is_missing(gribid, key):
     """
     @brief Check if the value of a key is MISSING.
 
@@ -1315,50 +1450,52 @@ def grib_is_missing(gribid,key):
     are set to 1. This is different from the actual key missing from the grib message.
     The value of a key MISSING has a special significance and that can be read about
     in the WMO documentation.
-    
+
     @param gribid      id of the grib loaded in memory
     @param key         key name
     @return 0->not missing, 1->missing
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    err,value = _internal.grib_c_is_missing(gribid,key)
+    err, value = _internal.grib_c_is_missing(gribid, key)
     GRIB_CHECK(err)
     return value
 
- at require(gribid=int,key=str)
-def grib_is_defined(gribid,key):
+
+ at require(gribid=int, key=str)
+def grib_is_defined(gribid, key):
     """
     @brief Check if a key is defined (exists)
     @param gribid      id of the grib loaded in memory
     @param key         key name
     @return            0->not defined, 1->defined
-    @exception         GribInternalError 
+    @exception         GribInternalError
     """
-    err,value = _internal.grib_c_is_defined(gribid,key)
+    err, value = _internal.grib_c_is_defined(gribid, key)
     GRIB_CHECK(err)
     return value
 
- at require(gribid=int,inlat=(int,float),inlon=(int,float))
-def grib_find_nearest(gribid,inlat,inlon,is_lsm = False,npoints = 1):
+
+ at require(gribid=int, inlat=(int, float), inlon=(int, float))
+def grib_find_nearest(gribid, inlat, inlon, is_lsm=False, npoints=1):
     """
     @brief Find the nearest grid point or the nearest four grid points to a given latitude/longitude.
 
     The number of nearest points returned can be controled through the npoints function argument.
 
     \b Examples: \ref grib_nearest.py "grib_nearest.py"
-    
+
     @param gribid     id of the grib loaded in memory
     @param inlat      latitude of the point
     @param inlon      longitude of the point
     @param is_lsm     True if the nearest land point is required otherwise False.
     @param npoints    1 or 4 nearest grid points
     @return (npoints*(outlat,outlon,value,dist,index))
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     if npoints == 1:
-        err,outlat,outlon,value,dist,idx = _internal.grib_c_find_nearest_single(gribid,is_lsm,inlat,inlon)
+        err, outlat, outlon, value, dist, idx = _internal.grib_c_find_nearest_single(gribid, is_lsm, inlat, inlon)
         GRIB_CHECK(err)
-        return (Bunch(lat = outlat,lon = outlon,value = value,distance = dist,index = idx),)
+        return (Bunch(lat=outlat, lon=outlon, value=value, distance=dist, index=idx),)
     elif npoints == 4:
         poutlat = _internal.new_doubleArray(4)
         poutlon = _internal.new_doubleArray(4)
@@ -1366,17 +1503,15 @@ def grib_find_nearest(gribid,inlat,inlon,is_lsm = False,npoints = 1):
         pdist = _internal.new_doubleArray(4)
         pidx = _internal.new_intArray(4)
 
-        GRIB_CHECK(_internal.grib_c_find_nearest_four_single(gribid,is_lsm,inlat,inlon,poutlat,poutlon,pvalues,pdist,pidx))
+        GRIB_CHECK(_internal.grib_c_find_nearest_four_single(gribid, is_lsm, inlat, inlon, poutlat, poutlon, pvalues, pdist, pidx))
 
         result = []
         for i in range(4):
-            result.append(Bunch( \
-                lat = _internal.doubleArray_getitem(poutlat,i), \
-                lon = _internal.doubleArray_getitem(poutlon,i), \
-                value = _internal.doubleArray_getitem(pvalues,i), \
-                distance = _internal.doubleArray_getitem(pdist,i), \
-                index = _internal.intArray_getitem(pidx,i), \
-            ))
+            result.append(Bunch(lat=_internal.doubleArray_getitem(poutlat, i),
+                                lon=_internal.doubleArray_getitem(poutlon, i),
+                                value=_internal.doubleArray_getitem(pvalues, i),
+                                distance=_internal.doubleArray_getitem(pdist, i),
+                                index=_internal.intArray_getitem(pidx, i)))
 
         _internal.delete_doubleArray(poutlat)
         _internal.delete_doubleArray(poutlon)
@@ -1388,45 +1523,47 @@ def grib_find_nearest(gribid,inlat,inlon,is_lsm = False,npoints = 1):
     else:
         raise ValueError("Invalid value for npoints. Expecting 1 or 4.")
 
- at require(gribid=int,key=str)
+
+ at require(gribid=int, key=str)
 def grib_get_native_type(gribid, key):
     """
-    @brief Retrieve the native type of a key. 
+    @brief Retrieve the native type of a key.
 
     Possible values can be int, float or string.
 
     @param gribid   id of the grib loaded in memory
     @param key      key we want to find out the type for
     @return type of key given as input or None if not determined
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    err,itype = _internal.grib_c_get_native_type(gribid,key)
+    err, itype = _internal.grib_c_get_native_type(gribid, key)
     GRIB_CHECK(err)
     if itype in KEYTYPES:
         return KEYTYPES[itype]
     else:
         return None
 
- at require(gribid=int,key=str)
-def grib_get(gribid,key, ktype=None):
+
+ at require(gribid=int, key=str)
+def grib_get(gribid, key, ktype=None):
     """
     @brief Get the value of a key in a grib message.
 
     The type of value returned depends on the native type of the requested key.
     The type of value returned can be forced by using the type argument of the
     function. The type argument can be int, float or str.
-    
+
     The \em gribid references a grib message loaded in memory.
-    
+
     \b Examples: \ref grib_get_keys.py "grib_get_keys.py", \ref print_data.py "print_data.py"
-    
+
     @see grib_new_from_file, grib_release, grib_set
-    
+
     @param gribid      id of the grib loaded in memory
     @param key         key name
     @param ktype       the type we want the output in (int, float or str), native type if not specified
     @return scalar value of key as int, float or str
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     if ktype is None:
         ktype = grib_get_native_type(gribid, key)
@@ -1441,13 +1578,14 @@ def grib_get(gribid,key, ktype=None):
 
     return result
 
- at require(gribid=int,key=str)
-def grib_get_array(gribid,key, ktype=None):
+
+ at require(gribid=int, key=str)
+def grib_get_array(gribid, key, ktype=None):
     """
-    @brief Get the contents of an array key. 
-    
-    The output array will be stored in a NumPy ndarray or array. 
-    The type of the array returned depends on the native type of the requested key. 
+    @brief Get the contents of an array key.
+
+    The output array will be stored in a NumPy ndarray or array.
+    The type of the array returned depends on the native type of the requested key.
     The type of value returned can be forced by using the type argument of the function.
     The type argument can be int or float.
 
@@ -1455,36 +1593,40 @@ def grib_get_array(gribid,key, ktype=None):
     @param key         the key to get the value for
     @param ktype       the type we want the output in (can be int or float), native type if not specified
     @return numpy.ndarray or array
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     if ktype is None:
-        ktype = grib_get_native_type(gribid,key)
+        ktype = grib_get_native_type(gribid, key)
 
     result = None
     if ktype is int:
         result = grib_get_long_array(gribid, key)
     elif ktype is float:
         result = grib_get_double_array(gribid, key)
+    elif ktype is str:
+        result = grib_get_string_array(gribid, key)
 
     return result
 
+
 @require(gribid=int)
 def grib_get_values(gribid):
     """
     @brief Retrieve the contents of the 'values' key.
-    
+
     A NumPy ndarray or Python array containing the values in the message is returned.
 
     \b Examples: \ref print_data.py "print_data.py", \ref samples.py "samples.py"
 
     @param gribid   id of the grib loaded in memory
     @return numpy.ndarray or array
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    return grib_get_double_array(gribid,"values")
+    return grib_get_double_array(gribid, "values")
+
 
 @require(gribid=int)
-def grib_set_values(gribid,values):
+def grib_set_values(gribid, values):
     """
     @brief Set the contents of the 'values' key.
 
@@ -1501,35 +1643,37 @@ def grib_set_values(gribid,values):
     @param gribid   id of the grib loaded in memory
     @param values   array of values to set as tuple, list, array or numpy.ndarray
     """
-    grib_set_double_array(gribid,"values",values)
+    grib_set_double_array(gribid, "values", values)
 
- at require(gribid=int,key=str)
-def grib_set(gribid,key,value):
+
+ at require(gribid=int, key=str)
+def grib_set(gribid, key, value):
     """
     @brief Set the value for a scalar key in a grib message.
 
     The input value can be a python int, float or str.
-    
+
     \b Examples: \ref grib_set_keys.py "grib_set_keys.py"
-    
+
     @see grib_new_from_file, grib_release, grib_get
-    
+
     @param gribid      id of the grib loaded in memory
     @param key         key name
     @param value       scalar value to set for key
-    @exception GribInternalError 
-    """
-    if isinstance(value,int):
-        grib_set_long(gribid,key,value)
-    elif isinstance(value,float):
-        grib_set_double(gribid,key,value)
-    elif isinstance(value,str):
-        grib_set_string(gribid,key,value)
+    @exception GribInternalError
+    """
+    if isinstance(value, int):
+        grib_set_long(gribid, key, value)
+    elif isinstance(value, float):
+        grib_set_double(gribid, key, value)
+    elif isinstance(value, str):
+        grib_set_string(gribid, key, value)
     else:
         raise GribInternalError("Invalid type of value when setting key '%s'." % key)
 
- at require(gribid=int,key=str)
-def grib_set_array(gribid,key,value):
+
+ at require(gribid=int, key=str)
+def grib_set_array(gribid, key, value):
     """
     @brief Set the value for an array key in a grib message.
 
@@ -1546,7 +1690,7 @@ def grib_set_array(gribid,key,value):
     @param gribid      id of the grib loaded in memory
     @param key         key name
     @param value       array value to set for key
-    @exception GribInternalError 
+    @exception GribInternalError
 
     """
     val0 = None
@@ -1555,78 +1699,82 @@ def grib_set_array(gribid,key,value):
     except TypeError:
         pass
 
-    if isinstance(val0, int):
-        grib_set_long_array(gribid, key, value)
-    elif isinstance(val0, float):
+    if isinstance(val0, float):
         grib_set_double_array(gribid, key, value)
+    elif isinstance(val0, int):
+        grib_set_long_array(gribid, key, value)
     else:
         raise GribInternalError("Invalid type of value when setting key '%s'." % key)
 
- at require(indexid=int,key=str)
-def grib_index_get(indexid,key, ktype=str):
+
+ at require(indexid=int, key=str)
+def grib_index_get(indexid, key, ktype=str):
     """
     @brief Get the distinct values of an index key. The key must belong to the index.
-    
+
     \b Examples: \ref grib_index.py "grib_index.py"
-    
+
     @param indexid   id of an index created from a file. The index must have been created on the given key.
     @param key       key for which the values are returned
     @return array of values
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     # Cannot get the native type of a key from an index
     # so right now the default is str. The user can overwrite
     # the type but there is no way right now to do it automatically.
 
-    #if ktype is None:
-    #    ktype = grib_get_native_type(indexid,key)
+    # if ktype is None:
+    #     ktype = grib_get_native_type(indexid,key)
 
     result = None
     if ktype is int:
-        result = grib_index_get_long(indexid,key)
+        result = grib_index_get_long(indexid, key)
     elif ktype is float:
-        result = grib_index_get_double(indexid,key)
+        result = grib_index_get_double(indexid, key)
     elif ktype is str:
-        result = grib_index_get_string(indexid,key)
+        result = grib_index_get_string(indexid, key)
 
     return result
 
- at require(indexid=int,key=str)
-def grib_index_select(indexid,key,value):
+
+ at require(indexid=int, key=str)
+def grib_index_select(indexid, key, value):
     """
-    @brief Select the message subset with key==value. 
-    
+    @brief Select the message subset with key==value.
+
     \b Examples: \ref grib_index.py "grib_index.py"
-    
+
     @param indexid   id of an index created from a file. The index must have been created with the key in argument.
     @param key       key to be selected
     @param value     value of the key to select
-    @exception GribInternalError 
-    """
-    if isinstance(value,int):
-        grib_index_select_long(indexid,key,value)
-    elif isinstance(value,float):
-        grib_index_select_double(indexid,key,value)
-    elif isinstance(value,str):
-        grib_index_select_string(indexid,key,value)
+    @exception GribInternalError
+    """
+    if isinstance(value, int):
+        grib_index_select_long(indexid, key, value)
+    elif isinstance(value, float):
+        grib_index_select_double(indexid, key, value)
+    elif isinstance(value, str):
+        grib_index_select_string(indexid, key, value)
     else:
         raise GribInternalError("Invalid type of value when setting key '%s'." % key)
 
+
 @require(indexid=int, filename=str)
 def grib_index_write(indexid, filename):
     """
-    @brief Write an index to a file for later reuse. 
-    
+    @brief Write an index to a file for later reuse.
+
     An index can be loaded back from an index file with \ref grib_index_read.
 
     \b Examples: \ref grib_index.py "grib_index.py"
 
     @param indexid    id of the index
     @param filename   path of file to save the index to
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     GRIB_CHECK(_internal.grib_c_index_write(indexid, filename))
 
+
 @require(filename=str)
 def grib_index_read(filename):
     """
@@ -1636,12 +1784,13 @@ def grib_index_read(filename):
 
     @param filename    path of file to load the index from
     @return id of the loaded index
-    @exception GribInternalError 
+    @exception GribInternalError
     """
     err, indexid = _internal.grib_c_index_read(filename)
     GRIB_CHECK(err)
     return indexid
 
+
 @require(flag=bool)
 def grib_no_fail_on_wrong_length(flag):
     """
@@ -1654,6 +1803,7 @@ def grib_no_fail_on_wrong_length(flag):
     else:
         _internal.no_fail_on_wrong_length(0)
 
+
 @require(flag=bool)
 def grib_gts_header(flag):
     """
@@ -1666,22 +1816,24 @@ def grib_gts_header(flag):
     else:
         _internal.grib_c_gts_header_off()
 
+
 def grib_get_api_version():
     """
     @brief Get the api version.
 
     Returns the version of the api as a string in the format "major.minor.revision".
     """
-    div = lambda v,d: (v/d,v%d)
+    div = lambda v, d: (v / d, v % d)
     v = _internal.grib_c_get_api_version()
-    v,revision = div(v,100)
-    v,minor = div(v,100)
+    v, revision = div(v, 100)
+    v, minor = div(v, 100)
     major = v
 
-    return "%d.%d.%d" % (major,minor,revision)
+    return "%d.%d.%d" % (major, minor, revision)
 
 __version__ = grib_get_api_version()
 
+
 @require(gribid=int)
 def grib_get_message(gribid):
     """
@@ -1690,15 +1842,16 @@ def grib_get_message(gribid):
     Returns the binary string message associated with the grib identified by gribid.
 
     @see grib_new_from_message
-    
+
     @param gribid      id of the grib loaded in memory
     @return binary string message associated with gribid
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    error,message = _internal.grib_c_get_message(gribid)
+    error, message = _internal.grib_c_get_message(gribid)
     GRIB_CHECK(error)
     return message
-    
+
+
 @require(message=str)
 def grib_new_from_message(message):
     """
@@ -1710,9 +1863,8 @@ def grib_new_from_message(message):
 
     @param message binary string message
     @return gribid of the newly created grib message
-    @exception GribInternalError 
+    @exception GribInternalError
     """
-    error,gribid = _internal.grib_c_new_from_message(0,message,len(message))
+    error, gribid = _internal.grib_c_new_from_message(0, message, len(message))
     GRIB_CHECK(error)
     return gribid
-
diff --git a/python/gribapi_swig.i b/python/gribapi_swig.i
index 6c0796e..80e9613 100644
--- a/python/gribapi_swig.i
+++ b/python/gribapi_swig.i
@@ -32,17 +32,20 @@ import_array();
 }
 
 %pointer_class(int, intp);
+%pointer_class(size_t, sizetp);
 %pointer_class(long, longp);
 %pointer_class(double, doublep);
 %array_functions(double, doubleArray);
 %array_functions(long, longArray);
 %array_functions(int, intArray);
+%array_functions(char*, stringArray);
 
 // creation
 int grib_c_new_from_file(FILE* f, int* INOUT, int headers_only);
 int grib_c_new_any_from_file(FILE* f, int headers_only, int* INOUT);
 int grib_c_new_bufr_from_file(FILE* f, int headers_only, int* INOUT);
 int grib_c_new_gts_from_file(FILE* f, int headers_only, int* INOUT);
+int grib_c_new_metar_from_file(FILE* f, int headers_only, int* INOUT);
 int grib_c_iterator_new(int* INPUT, int* OUTPUT, int* INPUT);
 int grib_c_keys_iterator_new(int* INPUT, int* OUTPUT, char* name_space);
 int grib_c_new_from_samples(int* INOUT, char* name);
@@ -124,6 +127,7 @@ int grib_c_iterator_next(int* iterid, double* OUTPUT, double* OUTPUT, double* OU
 // getting/setting key values
 %cstring_output_withsize(char* string_val, size_t* string_size)
 int grib_c_get_string(int* gid, char* key, char* string_val, size_t* string_size);
+int grib_c_get_string_array(int* gid, char* key, char** array_string_val, size_t* size);
 int grib_c_set_string(int* gid, char* key, char* sval, int len2);
 int grib_c_get_long(int* gid, char* key, long* OUTPUT);
 int grib_c_set_long(int* gid, char* key, long* INPUT);
diff --git a/python/init_eccodes.py b/python/init_eccodes.py
new file mode 100644
index 0000000..b6c4997
--- /dev/null
+++ b/python/init_eccodes.py
@@ -0,0 +1,2 @@
+from .eccodes import *
+from .eccodes import __version__
diff --git a/python/init_gribapi.py b/python/init_gribapi.py
new file mode 100644
index 0000000..51f03e0
--- /dev/null
+++ b/python/init_gribapi.py
@@ -0,0 +1,2 @@
+from .gribapi import *                # noqa
+from .gribapi import __version__
diff --git a/python/swig_wrap_array.c b/python/swig_wrap_array.c
index 385d493..484d261 100644
--- a/python/swig_wrap_array.c
+++ b/python/swig_wrap_array.c
@@ -2666,10 +2666,12 @@ SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags)
 #define SWIGTYPE_p_intp swig_types[5]
 #define SWIGTYPE_p_long swig_types[6]
 #define SWIGTYPE_p_longp swig_types[7]
-#define SWIGTYPE_p_p_void swig_types[8]
-#define SWIGTYPE_p_size_t swig_types[9]
-static swig_type_info *swig_types[11];
-static swig_module_info swig_module = {swig_types, 10, 0, 0, 0, 0};
+#define SWIGTYPE_p_p_char swig_types[8]
+#define SWIGTYPE_p_p_void swig_types[9]
+#define SWIGTYPE_p_size_t swig_types[10]
+#define SWIGTYPE_p_sizetp swig_types[11]
+static swig_type_info *swig_types[13];
+static swig_module_info swig_module = {swig_types, 12, 0, 0, 0, 0};
 #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
 #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
 
@@ -2998,6 +3000,42 @@ SWIGINTERN intp *intp_frompointer(int *t){
     return (intp *) t;
   }
 
+typedef size_t sizetp;
+
+SWIGINTERN sizetp *new_sizetp(){
+    return (size_t *)malloc(sizeof(size_t));
+  }
+SWIGINTERN void delete_sizetp(sizetp *self){
+    if (self) free((char*)self);
+  }
+SWIGINTERN void sizetp_assign(sizetp *self,size_t value){
+    *self = value;
+  }
+SWIGINTERN size_t sizetp_value(sizetp *self){
+    return *self;
+  }
+
+SWIGINTERNINLINE PyObject* 
+SWIG_From_unsigned_SS_long  (unsigned long value)
+{
+  return (value > LONG_MAX) ?
+    PyLong_FromUnsignedLong(value) : PyInt_FromLong((long)(value)); 
+}
+
+
+SWIGINTERNINLINE PyObject *
+SWIG_From_size_t  (size_t value)
+{    
+  return SWIG_From_unsigned_SS_long  ((unsigned long)(value));
+}
+
+SWIGINTERN size_t *sizetp_cast(sizetp *self){
+    return self;
+  }
+SWIGINTERN sizetp *sizetp_frompointer(size_t *t){
+    return (sizetp *) t;
+  }
+
 typedef long longp;
 
 SWIGINTERN longp *new_longp(){
@@ -3091,6 +3129,29 @@ SWIGINTERN doublep *doublep_frompointer(double *t){
   }
 
 
+  static char* *new_stringArray(size_t nelements) { 
+    return (char* *)malloc((nelements)*sizeof(char*));
+  }
+
+  static void delete_stringArray(char* *ary) {
+    free((char*)ary);
+  }
+
+  static char* stringArray_getitem(char* *ary, size_t index) {
+    return ary[index];
+  }
+  static void stringArray_setitem(char* *ary, size_t index, char* value) {
+    ary[index] = value;
+  }
+
+
+SWIGINTERNINLINE PyObject * 
+SWIG_FromCharPtr(const char *cptr)
+{ 
+  return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0));
+}
+
+
 SWIGINTERN int
 SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
 {
@@ -3169,28 +3230,6 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
 
 
 
-
-SWIGINTERNINLINE PyObject* 
-SWIG_From_unsigned_SS_long  (unsigned long value)
-{
-  return (value > LONG_MAX) ?
-    PyLong_FromUnsignedLong(value) : PyInt_FromLong((long)(value)); 
-}
-
-
-SWIGINTERNINLINE PyObject *
-SWIG_From_size_t  (size_t value)
-{    
-  return SWIG_From_unsigned_SS_long  ((unsigned long)(value));
-}
-
-
-SWIGINTERNINLINE PyObject * 
-SWIG_FromCharPtr(const char *cptr)
-{ 
-  return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0));
-}
-
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -3397,6 +3436,143 @@ SWIGINTERN PyObject *intp_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject
   return SWIG_Py_Void();
 }
 
+SWIGINTERN PyObject *_wrap_new_sizetp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  sizetp *result = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)":new_sizetp")) SWIG_fail;
+  result = (sizetp *)new_sizetp();
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_sizetp, SWIG_POINTER_NEW |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_delete_sizetp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  sizetp *arg1 = (sizetp *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:delete_sizetp",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_sizetp, SWIG_POINTER_DISOWN |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_sizetp" "', argument " "1"" of type '" "sizetp *""'"); 
+  }
+  arg1 = (sizetp *)(argp1);
+  delete_sizetp(arg1);
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_sizetp_assign(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  sizetp *arg1 = (sizetp *) 0 ;
+  size_t arg2 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  size_t val2 ;
+  int ecode2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OO:sizetp_assign",&obj0,&obj1)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_sizetp, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sizetp_assign" "', argument " "1"" of type '" "sizetp *""'"); 
+  }
+  arg1 = (sizetp *)(argp1);
+  ecode2 = SWIG_AsVal_size_t(obj1, &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sizetp_assign" "', argument " "2"" of type '" "size_t""'");
+  } 
+  arg2 = (size_t)(val2);
+  sizetp_assign(arg1,arg2);
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_sizetp_value(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  sizetp *arg1 = (sizetp *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  size_t result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:sizetp_value",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_sizetp, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sizetp_value" "', argument " "1"" of type '" "sizetp *""'"); 
+  }
+  arg1 = (sizetp *)(argp1);
+  result = sizetp_value(arg1);
+  resultobj = SWIG_From_size_t((size_t)(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_sizetp_cast(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  sizetp *arg1 = (sizetp *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  size_t *result = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:sizetp_cast",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_sizetp, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sizetp_cast" "', argument " "1"" of type '" "sizetp *""'"); 
+  }
+  arg1 = (sizetp *)(argp1);
+  result = (size_t *)sizetp_cast(arg1);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_size_t, 0 |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_sizetp_frompointer(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  size_t *arg1 = (size_t *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  sizetp *result = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:sizetp_frompointer",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_size_t, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sizetp_frompointer" "', argument " "1"" of type '" "size_t *""'"); 
+  }
+  arg1 = (size_t *)(argp1);
+  result = (sizetp *)sizetp_frompointer(arg1);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_sizetp, 0 |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *sizetp_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *obj;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  SWIG_TypeNewClientData(SWIGTYPE_p_sizetp, SWIG_NewClientData(obj));
+  return SWIG_Py_Void();
+}
+
 SWIGINTERN PyObject *_wrap_new_longp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   longp *result = 0 ;
@@ -4010,6 +4186,122 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_new_stringArray(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  size_t arg1 ;
+  size_t val1 ;
+  int ecode1 = 0 ;
+  PyObject * obj0 = 0 ;
+  char **result = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:new_stringArray",&obj0)) SWIG_fail;
+  ecode1 = SWIG_AsVal_size_t(obj0, &val1);
+  if (!SWIG_IsOK(ecode1)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_stringArray" "', argument " "1"" of type '" "size_t""'");
+  } 
+  arg1 = (size_t)(val1);
+  result = (char **)new_stringArray(arg1);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_p_char, 0 |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_delete_stringArray(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  char **arg1 = (char **) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:delete_stringArray",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_p_char, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_stringArray" "', argument " "1"" of type '" "char **""'"); 
+  }
+  arg1 = (char **)(argp1);
+  delete_stringArray(arg1);
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_stringArray_getitem(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  char **arg1 = (char **) 0 ;
+  size_t arg2 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  size_t val2 ;
+  int ecode2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  char *result = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OO:stringArray_getitem",&obj0,&obj1)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_p_char, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "stringArray_getitem" "', argument " "1"" of type '" "char **""'"); 
+  }
+  arg1 = (char **)(argp1);
+  ecode2 = SWIG_AsVal_size_t(obj1, &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "stringArray_getitem" "', argument " "2"" of type '" "size_t""'");
+  } 
+  arg2 = (size_t)(val2);
+  result = (char *)stringArray_getitem(arg1,arg2);
+  resultobj = SWIG_FromCharPtr((const char *)result);
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_stringArray_setitem(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  char **arg1 = (char **) 0 ;
+  size_t arg2 ;
+  char *arg3 = (char *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  size_t val2 ;
+  int ecode2 = 0 ;
+  int res3 ;
+  char *buf3 = 0 ;
+  int alloc3 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  PyObject * obj2 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OOO:stringArray_setitem",&obj0,&obj1,&obj2)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_p_char, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "stringArray_setitem" "', argument " "1"" of type '" "char **""'"); 
+  }
+  arg1 = (char **)(argp1);
+  ecode2 = SWIG_AsVal_size_t(obj1, &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "stringArray_setitem" "', argument " "2"" of type '" "size_t""'");
+  } 
+  arg2 = (size_t)(val2);
+  res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3);
+  if (!SWIG_IsOK(res3)) {
+    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "stringArray_setitem" "', argument " "3"" of type '" "char *""'");
+  }
+  arg3 = (char *)(buf3);
+  stringArray_setitem(arg1,arg2,arg3);
+  resultobj = SWIG_Py_Void();
+  if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
+  return resultobj;
+fail:
+  if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_grib_c_new_from_file(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   FILE *arg1 = (FILE *) 0 ;
@@ -4218,6 +4510,58 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_grib_c_new_metar_from_file(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FILE *arg1 = (FILE *) 0 ;
+  int arg2 ;
+  int *arg3 = (int *) 0 ;
+  int val2 ;
+  int ecode2 = 0 ;
+  int temp3 ;
+  int res3 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  PyObject * obj2 = 0 ;
+  int result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OOO:grib_c_new_metar_from_file",&obj0,&obj1,&obj2)) SWIG_fail;
+  {
+    if ( PyFile_Check(obj0) ){
+      arg1 = PyFile_AsFile(obj0);
+    } else {
+      PyErr_SetString(PyExc_TypeError, "f must be a file type.");
+      return NULL;
+    }
+  }
+  ecode2 = SWIG_AsVal_int(obj1, &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "grib_c_new_metar_from_file" "', argument " "2"" of type '" "int""'");
+  } 
+  arg2 = (int)(val2);
+  if (!(SWIG_IsOK((res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3),SWIGTYPE_p_int,0))))) {
+    int val; 
+    int ecode = SWIG_AsVal_int(obj2, &val);
+    if (!SWIG_IsOK(ecode)) {
+      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_new_metar_from_file" "', argument " "3"" of type '" "int""'");
+    }
+    temp3 = (int)(val);
+    arg3 = &temp3;
+    res3 = SWIG_AddTmpMask(ecode);
+  }
+  result = (int)grib_c_new_metar_from_file(arg1,arg2,arg3);
+  resultobj = SWIG_From_int((int)(result));
+  if (SWIG_IsTmpObj(res3)) {
+    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg3)));
+  } else {
+    int new_flags = SWIG_IsNewObj(res3) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
+    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg3), SWIGTYPE_p_int, new_flags));
+  }
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_grib_c_iterator_new(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   int *arg1 = (int *) 0 ;
@@ -6183,6 +6527,65 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_grib_c_get_string_array(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  int *arg1 = (int *) 0 ;
+  char *arg2 = (char *) 0 ;
+  char **arg3 = (char **) 0 ;
+  size_t *arg4 = (size_t *) 0 ;
+  int temp1 ;
+  int res1 = 0 ;
+  int res2 ;
+  char *buf2 = 0 ;
+  int alloc2 = 0 ;
+  void *argp3 = 0 ;
+  int res3 = 0 ;
+  void *argp4 = 0 ;
+  int res4 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  PyObject * obj2 = 0 ;
+  PyObject * obj3 = 0 ;
+  int result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OOOO:grib_c_get_string_array",&obj0,&obj1,&obj2,&obj3)) SWIG_fail;
+  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
+    int val; 
+    int ecode = SWIG_AsVal_int(obj0, &val);
+    if (!SWIG_IsOK(ecode)) {
+      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_get_string_array" "', argument " "1"" of type '" "int""'");
+    }
+    temp1 = (int)(val);
+    arg1 = &temp1;
+    res1 = SWIG_AddTmpMask(ecode);
+  }
+  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_get_string_array" "', argument " "2"" of type '" "char *""'");
+  }
+  arg2 = (char *)(buf2);
+  res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_p_char, 0 |  0 );
+  if (!SWIG_IsOK(res3)) {
+    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "grib_c_get_string_array" "', argument " "3"" of type '" "char **""'"); 
+  }
+  arg3 = (char **)(argp3);
+  res4 = SWIG_ConvertPtr(obj3, &argp4,SWIGTYPE_p_size_t, 0 |  0 );
+  if (!SWIG_IsOK(res4)) {
+    SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "grib_c_get_string_array" "', argument " "4"" of type '" "size_t *""'"); 
+  }
+  arg4 = (size_t *)(argp4);
+  result = (int)grib_c_get_string_array(arg1,arg2,arg3,arg4);
+  resultobj = SWIG_From_int((int)(result));
+  if (SWIG_IsNewObj(res1)) free((char*)arg1);
+  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
+  return resultobj;
+fail:
+  if (SWIG_IsNewObj(res1)) free((char*)arg1);
+  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_grib_c_set_string(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   int *arg1 = (int *) 0 ;
@@ -7415,6 +7818,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"intp_cast", _wrap_intp_cast, METH_VARARGS, NULL},
 	 { (char *)"intp_frompointer", _wrap_intp_frompointer, METH_VARARGS, NULL},
 	 { (char *)"intp_swigregister", intp_swigregister, METH_VARARGS, NULL},
+	 { (char *)"new_sizetp", _wrap_new_sizetp, METH_VARARGS, NULL},
+	 { (char *)"delete_sizetp", _wrap_delete_sizetp, METH_VARARGS, NULL},
+	 { (char *)"sizetp_assign", _wrap_sizetp_assign, METH_VARARGS, NULL},
+	 { (char *)"sizetp_value", _wrap_sizetp_value, METH_VARARGS, NULL},
+	 { (char *)"sizetp_cast", _wrap_sizetp_cast, METH_VARARGS, NULL},
+	 { (char *)"sizetp_frompointer", _wrap_sizetp_frompointer, METH_VARARGS, NULL},
+	 { (char *)"sizetp_swigregister", sizetp_swigregister, METH_VARARGS, NULL},
 	 { (char *)"new_longp", _wrap_new_longp, METH_VARARGS, NULL},
 	 { (char *)"delete_longp", _wrap_delete_longp, METH_VARARGS, NULL},
 	 { (char *)"longp_assign", _wrap_longp_assign, METH_VARARGS, NULL},
@@ -7441,10 +7851,15 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"delete_intArray", _wrap_delete_intArray, METH_VARARGS, NULL},
 	 { (char *)"intArray_getitem", _wrap_intArray_getitem, METH_VARARGS, NULL},
 	 { (char *)"intArray_setitem", _wrap_intArray_setitem, METH_VARARGS, NULL},
+	 { (char *)"new_stringArray", _wrap_new_stringArray, METH_VARARGS, NULL},
+	 { (char *)"delete_stringArray", _wrap_delete_stringArray, METH_VARARGS, NULL},
+	 { (char *)"stringArray_getitem", _wrap_stringArray_getitem, METH_VARARGS, NULL},
+	 { (char *)"stringArray_setitem", _wrap_stringArray_setitem, METH_VARARGS, NULL},
 	 { (char *)"grib_c_new_from_file", _wrap_grib_c_new_from_file, METH_VARARGS, NULL},
 	 { (char *)"grib_c_new_any_from_file", _wrap_grib_c_new_any_from_file, METH_VARARGS, NULL},
 	 { (char *)"grib_c_new_bufr_from_file", _wrap_grib_c_new_bufr_from_file, METH_VARARGS, NULL},
 	 { (char *)"grib_c_new_gts_from_file", _wrap_grib_c_new_gts_from_file, METH_VARARGS, NULL},
+	 { (char *)"grib_c_new_metar_from_file", _wrap_grib_c_new_metar_from_file, METH_VARARGS, NULL},
 	 { (char *)"grib_c_iterator_new", _wrap_grib_c_iterator_new, METH_VARARGS, NULL},
 	 { (char *)"grib_c_keys_iterator_new", _wrap_grib_c_keys_iterator_new, METH_VARARGS, NULL},
 	 { (char *)"grib_c_new_from_samples", _wrap_grib_c_new_from_samples, METH_VARARGS, NULL},
@@ -7493,6 +7908,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"grib_c_iterator_delete", _wrap_grib_c_iterator_delete, METH_VARARGS, NULL},
 	 { (char *)"grib_c_iterator_next", _wrap_grib_c_iterator_next, METH_VARARGS, NULL},
 	 { (char *)"grib_c_get_string", _wrap_grib_c_get_string, METH_VARARGS, NULL},
+	 { (char *)"grib_c_get_string_array", _wrap_grib_c_get_string_array, METH_VARARGS, NULL},
 	 { (char *)"grib_c_set_string", _wrap_grib_c_set_string, METH_VARARGS, NULL},
 	 { (char *)"grib_c_get_long", _wrap_grib_c_get_long, METH_VARARGS, NULL},
 	 { (char *)"grib_c_set_long", _wrap_grib_c_set_long, METH_VARARGS, NULL},
@@ -7528,6 +7944,9 @@ static void *_p_intpTo_p_int(void *x, int *SWIGUNUSEDPARM(newmemory)) {
 static void *_p_doublepTo_p_double(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((double *)  ((doublep *) x));
 }
+static void *_p_sizetpTo_p_size_t(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((size_t *)  ((sizetp *) x));
+}
 static void *_p_longpTo_p_long(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((long *)  ((longp *) x));
 }
@@ -7539,8 +7958,10 @@ static swig_type_info _swigt__p_int = {"_p_int", "int *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_intp = {"_p_intp", "intp *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_long = {"_p_long", "long *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_longp = {"_p_longp", "longp *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_p_char = {"_p_p_char", "char **", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_p_void = {"_p_p_void", "void **", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_size_t = {"_p_size_t", "size_t *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_sizetp = {"_p_sizetp", "sizetp *", 0, 0, (void*)0, 0};
 
 static swig_type_info *swig_type_initial[] = {
   &_swigt__p_FILE,
@@ -7551,8 +7972,10 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_intp,
   &_swigt__p_long,
   &_swigt__p_longp,
+  &_swigt__p_p_char,
   &_swigt__p_p_void,
   &_swigt__p_size_t,
+  &_swigt__p_sizetp,
 };
 
 static swig_cast_info _swigc__p_FILE[] = {  {&_swigt__p_FILE, 0, 0, 0},{0, 0, 0, 0}};
@@ -7563,8 +7986,10 @@ static swig_cast_info _swigc__p_int[] = {  {&_swigt__p_intp, _p_intpTo_p_int, 0,
 static swig_cast_info _swigc__p_intp[] = {  {&_swigt__p_intp, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_long[] = {  {&_swigt__p_long, 0, 0, 0},  {&_swigt__p_longp, _p_longpTo_p_long, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_longp[] = {  {&_swigt__p_longp, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_p_char[] = {  {&_swigt__p_p_char, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_p_void[] = {  {&_swigt__p_p_void, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_size_t[] = {  {&_swigt__p_size_t, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_size_t[] = {  {&_swigt__p_sizetp, _p_sizetpTo_p_size_t, 0, 0},  {&_swigt__p_size_t, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_sizetp[] = {  {&_swigt__p_sizetp, 0, 0, 0},{0, 0, 0, 0}};
 
 static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_FILE,
@@ -7575,8 +8000,10 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_intp,
   _swigc__p_long,
   _swigc__p_longp,
+  _swigc__p_p_char,
   _swigc__p_p_void,
   _swigc__p_size_t,
+  _swigc__p_sizetp,
 };
 
 
@@ -8234,6 +8661,7 @@ SWIG_init(void) {
   SWIG_Python_SetConstant(d, "GRIB_ATTRIBUTE_CLASH",SWIG_From_int((int)(-61)));
   SWIG_Python_SetConstant(d, "GRIB_TOO_MANY_ATTRIBUTES",SWIG_From_int((int)(-62)));
   SWIG_Python_SetConstant(d, "GRIB_ATTRIBUTE_NOT_FOUND",SWIG_From_int((int)(-63)));
+  SWIG_Python_SetConstant(d, "GRIB_UNSUPPORTED_EDITION",SWIG_From_int((int)(-64)));
 #if PY_VERSION_HEX >= 0x03000000
   return m;
 #else
diff --git a/python/swig_wrap_array.py b/python/swig_wrap_array.py
index 72aae3a..a7ebc5e 100644
--- a/python/swig_wrap_array.py
+++ b/python/swig_wrap_array.py
@@ -138,6 +138,7 @@ GRIB_NULL_POINTER = _gribapi_swig.GRIB_NULL_POINTER
 GRIB_ATTRIBUTE_CLASH = _gribapi_swig.GRIB_ATTRIBUTE_CLASH
 GRIB_TOO_MANY_ATTRIBUTES = _gribapi_swig.GRIB_TOO_MANY_ATTRIBUTES
 GRIB_ATTRIBUTE_NOT_FOUND = _gribapi_swig.GRIB_ATTRIBUTE_NOT_FOUND
+GRIB_UNSUPPORTED_EDITION = _gribapi_swig.GRIB_UNSUPPORTED_EDITION
 class intp(_object):
     __swig_setmethods__ = {}
     __setattr__ = lambda self, name, value: _swig_setattr(self, intp, name, value)
@@ -162,6 +163,30 @@ def intp_frompointer(*args):
   return _gribapi_swig.intp_frompointer(*args)
 intp_frompointer = _gribapi_swig.intp_frompointer
 
+class sizetp(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, sizetp, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, sizetp, name)
+    __repr__ = _swig_repr
+    def __init__(self): 
+        this = _gribapi_swig.new_sizetp()
+        try: self.this.append(this)
+        except: self.this = this
+    __swig_destroy__ = _gribapi_swig.delete_sizetp
+    __del__ = lambda self : None;
+    def assign(self, *args): return _gribapi_swig.sizetp_assign(self, *args)
+    def value(self): return _gribapi_swig.sizetp_value(self)
+    def cast(self): return _gribapi_swig.sizetp_cast(self)
+    __swig_getmethods__["frompointer"] = lambda x: _gribapi_swig.sizetp_frompointer
+    if _newclass:frompointer = staticmethod(_gribapi_swig.sizetp_frompointer)
+sizetp_swigregister = _gribapi_swig.sizetp_swigregister
+sizetp_swigregister(sizetp)
+
+def sizetp_frompointer(*args):
+  return _gribapi_swig.sizetp_frompointer(*args)
+sizetp_frompointer = _gribapi_swig.sizetp_frompointer
+
 class longp(_object):
     __swig_setmethods__ = {}
     __setattr__ = lambda self, name, value: _swig_setattr(self, longp, name, value)
@@ -259,6 +284,22 @@ def intArray_setitem(*args):
   return _gribapi_swig.intArray_setitem(*args)
 intArray_setitem = _gribapi_swig.intArray_setitem
 
+def new_stringArray(*args):
+  return _gribapi_swig.new_stringArray(*args)
+new_stringArray = _gribapi_swig.new_stringArray
+
+def delete_stringArray(*args):
+  return _gribapi_swig.delete_stringArray(*args)
+delete_stringArray = _gribapi_swig.delete_stringArray
+
+def stringArray_getitem(*args):
+  return _gribapi_swig.stringArray_getitem(*args)
+stringArray_getitem = _gribapi_swig.stringArray_getitem
+
+def stringArray_setitem(*args):
+  return _gribapi_swig.stringArray_setitem(*args)
+stringArray_setitem = _gribapi_swig.stringArray_setitem
+
 def grib_c_new_from_file(*args):
   return _gribapi_swig.grib_c_new_from_file(*args)
 grib_c_new_from_file = _gribapi_swig.grib_c_new_from_file
@@ -275,6 +316,10 @@ def grib_c_new_gts_from_file(*args):
   return _gribapi_swig.grib_c_new_gts_from_file(*args)
 grib_c_new_gts_from_file = _gribapi_swig.grib_c_new_gts_from_file
 
+def grib_c_new_metar_from_file(*args):
+  return _gribapi_swig.grib_c_new_metar_from_file(*args)
+grib_c_new_metar_from_file = _gribapi_swig.grib_c_new_metar_from_file
+
 def grib_c_iterator_new(*args):
   return _gribapi_swig.grib_c_iterator_new(*args)
 grib_c_iterator_new = _gribapi_swig.grib_c_iterator_new
@@ -467,6 +512,10 @@ def grib_c_get_string(*args):
   return _gribapi_swig.grib_c_get_string(*args)
 grib_c_get_string = _gribapi_swig.grib_c_get_string
 
+def grib_c_get_string_array(*args):
+  return _gribapi_swig.grib_c_get_string_array(*args)
+grib_c_get_string_array = _gribapi_swig.grib_c_get_string_array
+
 def grib_c_set_string(*args):
   return _gribapi_swig.grib_c_set_string(*args)
 grib_c_set_string = _gribapi_swig.grib_c_set_string
diff --git a/python/swig_wrap_numpy.c b/python/swig_wrap_numpy.c
index 7ba6ee3..1a1f531 100644
--- a/python/swig_wrap_numpy.c
+++ b/python/swig_wrap_numpy.c
@@ -2666,10 +2666,12 @@ SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags)
 #define SWIGTYPE_p_intp swig_types[5]
 #define SWIGTYPE_p_long swig_types[6]
 #define SWIGTYPE_p_longp swig_types[7]
-#define SWIGTYPE_p_p_void swig_types[8]
-#define SWIGTYPE_p_size_t swig_types[9]
-static swig_type_info *swig_types[11];
-static swig_module_info swig_module = {swig_types, 10, 0, 0, 0, 0};
+#define SWIGTYPE_p_p_char swig_types[8]
+#define SWIGTYPE_p_p_void swig_types[9]
+#define SWIGTYPE_p_size_t swig_types[10]
+#define SWIGTYPE_p_sizetp swig_types[11]
+static swig_type_info *swig_types[13];
+static swig_module_info swig_module = {swig_types, 12, 0, 0, 0, 0};
 #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
 #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
 
@@ -3005,6 +3007,42 @@ SWIGINTERN intp *intp_frompointer(int *t){
     return (intp *) t;
   }
 
+typedef size_t sizetp;
+
+SWIGINTERN sizetp *new_sizetp(){
+    return (size_t *)malloc(sizeof(size_t));
+  }
+SWIGINTERN void delete_sizetp(sizetp *self){
+    if (self) free((char*)self);
+  }
+SWIGINTERN void sizetp_assign(sizetp *self,size_t value){
+    *self = value;
+  }
+SWIGINTERN size_t sizetp_value(sizetp *self){
+    return *self;
+  }
+
+SWIGINTERNINLINE PyObject* 
+SWIG_From_unsigned_SS_long  (unsigned long value)
+{
+  return (value > LONG_MAX) ?
+    PyLong_FromUnsignedLong(value) : PyInt_FromLong((long)(value)); 
+}
+
+
+SWIGINTERNINLINE PyObject *
+SWIG_From_size_t  (size_t value)
+{    
+  return SWIG_From_unsigned_SS_long  ((unsigned long)(value));
+}
+
+SWIGINTERN size_t *sizetp_cast(sizetp *self){
+    return self;
+  }
+SWIGINTERN sizetp *sizetp_frompointer(size_t *t){
+    return (sizetp *) t;
+  }
+
 typedef long longp;
 
 SWIGINTERN longp *new_longp(){
@@ -3098,6 +3136,29 @@ SWIGINTERN doublep *doublep_frompointer(double *t){
   }
 
 
+  static char* *new_stringArray(size_t nelements) { 
+    return (char* *)malloc((nelements)*sizeof(char*));
+  }
+
+  static void delete_stringArray(char* *ary) {
+    free((char*)ary);
+  }
+
+  static char* stringArray_getitem(char* *ary, size_t index) {
+    return ary[index];
+  }
+  static void stringArray_setitem(char* *ary, size_t index, char* value) {
+    ary[index] = value;
+  }
+
+
+SWIGINTERNINLINE PyObject * 
+SWIG_FromCharPtr(const char *cptr)
+{ 
+  return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0));
+}
+
+
 SWIGINTERN int
 SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
 {
@@ -3177,28 +3238,6 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
 
 
 
-SWIGINTERNINLINE PyObject* 
-SWIG_From_unsigned_SS_long  (unsigned long value)
-{
-  return (value > LONG_MAX) ?
-    PyLong_FromUnsignedLong(value) : PyInt_FromLong((long)(value)); 
-}
-
-
-SWIGINTERNINLINE PyObject *
-SWIG_From_size_t  (size_t value)
-{    
-  return SWIG_From_unsigned_SS_long  ((unsigned long)(value));
-}
-
-
-SWIGINTERNINLINE PyObject * 
-SWIG_FromCharPtr(const char *cptr)
-{ 
-  return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0));
-}
-
-
 void with_numpy() {
     return;
 }
@@ -3851,6 +3890,143 @@ SWIGINTERN PyObject *intp_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject
   return SWIG_Py_Void();
 }
 
+SWIGINTERN PyObject *_wrap_new_sizetp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  sizetp *result = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)":new_sizetp")) SWIG_fail;
+  result = (sizetp *)new_sizetp();
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_sizetp, SWIG_POINTER_NEW |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_delete_sizetp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  sizetp *arg1 = (sizetp *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:delete_sizetp",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_sizetp, SWIG_POINTER_DISOWN |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_sizetp" "', argument " "1"" of type '" "sizetp *""'"); 
+  }
+  arg1 = (sizetp *)(argp1);
+  delete_sizetp(arg1);
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_sizetp_assign(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  sizetp *arg1 = (sizetp *) 0 ;
+  size_t arg2 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  size_t val2 ;
+  int ecode2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OO:sizetp_assign",&obj0,&obj1)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_sizetp, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sizetp_assign" "', argument " "1"" of type '" "sizetp *""'"); 
+  }
+  arg1 = (sizetp *)(argp1);
+  ecode2 = SWIG_AsVal_size_t(obj1, &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sizetp_assign" "', argument " "2"" of type '" "size_t""'");
+  } 
+  arg2 = (size_t)(val2);
+  sizetp_assign(arg1,arg2);
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_sizetp_value(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  sizetp *arg1 = (sizetp *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  size_t result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:sizetp_value",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_sizetp, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sizetp_value" "', argument " "1"" of type '" "sizetp *""'"); 
+  }
+  arg1 = (sizetp *)(argp1);
+  result = sizetp_value(arg1);
+  resultobj = SWIG_From_size_t((size_t)(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_sizetp_cast(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  sizetp *arg1 = (sizetp *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  size_t *result = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:sizetp_cast",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_sizetp, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sizetp_cast" "', argument " "1"" of type '" "sizetp *""'"); 
+  }
+  arg1 = (sizetp *)(argp1);
+  result = (size_t *)sizetp_cast(arg1);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_size_t, 0 |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_sizetp_frompointer(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  size_t *arg1 = (size_t *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  sizetp *result = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:sizetp_frompointer",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_size_t, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sizetp_frompointer" "', argument " "1"" of type '" "size_t *""'"); 
+  }
+  arg1 = (size_t *)(argp1);
+  result = (sizetp *)sizetp_frompointer(arg1);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_sizetp, 0 |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *sizetp_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *obj;
+  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  SWIG_TypeNewClientData(SWIGTYPE_p_sizetp, SWIG_NewClientData(obj));
+  return SWIG_Py_Void();
+}
+
 SWIGINTERN PyObject *_wrap_new_longp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   longp *result = 0 ;
@@ -4464,6 +4640,122 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_new_stringArray(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  size_t arg1 ;
+  size_t val1 ;
+  int ecode1 = 0 ;
+  PyObject * obj0 = 0 ;
+  char **result = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:new_stringArray",&obj0)) SWIG_fail;
+  ecode1 = SWIG_AsVal_size_t(obj0, &val1);
+  if (!SWIG_IsOK(ecode1)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_stringArray" "', argument " "1"" of type '" "size_t""'");
+  } 
+  arg1 = (size_t)(val1);
+  result = (char **)new_stringArray(arg1);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_p_char, 0 |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_delete_stringArray(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  char **arg1 = (char **) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:delete_stringArray",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_p_char, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_stringArray" "', argument " "1"" of type '" "char **""'"); 
+  }
+  arg1 = (char **)(argp1);
+  delete_stringArray(arg1);
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_stringArray_getitem(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  char **arg1 = (char **) 0 ;
+  size_t arg2 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  size_t val2 ;
+  int ecode2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  char *result = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OO:stringArray_getitem",&obj0,&obj1)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_p_char, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "stringArray_getitem" "', argument " "1"" of type '" "char **""'"); 
+  }
+  arg1 = (char **)(argp1);
+  ecode2 = SWIG_AsVal_size_t(obj1, &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "stringArray_getitem" "', argument " "2"" of type '" "size_t""'");
+  } 
+  arg2 = (size_t)(val2);
+  result = (char *)stringArray_getitem(arg1,arg2);
+  resultobj = SWIG_FromCharPtr((const char *)result);
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_stringArray_setitem(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  char **arg1 = (char **) 0 ;
+  size_t arg2 ;
+  char *arg3 = (char *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  size_t val2 ;
+  int ecode2 = 0 ;
+  int res3 ;
+  char *buf3 = 0 ;
+  int alloc3 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  PyObject * obj2 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OOO:stringArray_setitem",&obj0,&obj1,&obj2)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_p_char, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "stringArray_setitem" "', argument " "1"" of type '" "char **""'"); 
+  }
+  arg1 = (char **)(argp1);
+  ecode2 = SWIG_AsVal_size_t(obj1, &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "stringArray_setitem" "', argument " "2"" of type '" "size_t""'");
+  } 
+  arg2 = (size_t)(val2);
+  res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3);
+  if (!SWIG_IsOK(res3)) {
+    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "stringArray_setitem" "', argument " "3"" of type '" "char *""'");
+  }
+  arg3 = (char *)(buf3);
+  stringArray_setitem(arg1,arg2,arg3);
+  resultobj = SWIG_Py_Void();
+  if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
+  return resultobj;
+fail:
+  if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_grib_c_new_from_file(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   FILE *arg1 = (FILE *) 0 ;
@@ -4672,6 +4964,58 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_grib_c_new_metar_from_file(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  FILE *arg1 = (FILE *) 0 ;
+  int arg2 ;
+  int *arg3 = (int *) 0 ;
+  int val2 ;
+  int ecode2 = 0 ;
+  int temp3 ;
+  int res3 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  PyObject * obj2 = 0 ;
+  int result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OOO:grib_c_new_metar_from_file",&obj0,&obj1,&obj2)) SWIG_fail;
+  {
+    if ( PyFile_Check(obj0) ){
+      arg1 = PyFile_AsFile(obj0);
+    } else {
+      PyErr_SetString(PyExc_TypeError, "f must be a file type.");
+      return NULL;
+    }
+  }
+  ecode2 = SWIG_AsVal_int(obj1, &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "grib_c_new_metar_from_file" "', argument " "2"" of type '" "int""'");
+  } 
+  arg2 = (int)(val2);
+  if (!(SWIG_IsOK((res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3),SWIGTYPE_p_int,0))))) {
+    int val; 
+    int ecode = SWIG_AsVal_int(obj2, &val);
+    if (!SWIG_IsOK(ecode)) {
+      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_new_metar_from_file" "', argument " "3"" of type '" "int""'");
+    }
+    temp3 = (int)(val);
+    arg3 = &temp3;
+    res3 = SWIG_AddTmpMask(ecode);
+  }
+  result = (int)grib_c_new_metar_from_file(arg1,arg2,arg3);
+  resultobj = SWIG_From_int((int)(result));
+  if (SWIG_IsTmpObj(res3)) {
+    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg3)));
+  } else {
+    int new_flags = SWIG_IsNewObj(res3) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
+    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg3), SWIGTYPE_p_int, new_flags));
+  }
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_grib_c_iterator_new(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   int *arg1 = (int *) 0 ;
@@ -6637,6 +6981,65 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_grib_c_get_string_array(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  int *arg1 = (int *) 0 ;
+  char *arg2 = (char *) 0 ;
+  char **arg3 = (char **) 0 ;
+  size_t *arg4 = (size_t *) 0 ;
+  int temp1 ;
+  int res1 = 0 ;
+  int res2 ;
+  char *buf2 = 0 ;
+  int alloc2 = 0 ;
+  void *argp3 = 0 ;
+  int res3 = 0 ;
+  void *argp4 = 0 ;
+  int res4 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  PyObject * obj2 = 0 ;
+  PyObject * obj3 = 0 ;
+  int result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OOOO:grib_c_get_string_array",&obj0,&obj1,&obj2,&obj3)) SWIG_fail;
+  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
+    int val; 
+    int ecode = SWIG_AsVal_int(obj0, &val);
+    if (!SWIG_IsOK(ecode)) {
+      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_get_string_array" "', argument " "1"" of type '" "int""'");
+    }
+    temp1 = (int)(val);
+    arg1 = &temp1;
+    res1 = SWIG_AddTmpMask(ecode);
+  }
+  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_get_string_array" "', argument " "2"" of type '" "char *""'");
+  }
+  arg2 = (char *)(buf2);
+  res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_p_char, 0 |  0 );
+  if (!SWIG_IsOK(res3)) {
+    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "grib_c_get_string_array" "', argument " "3"" of type '" "char **""'"); 
+  }
+  arg3 = (char **)(argp3);
+  res4 = SWIG_ConvertPtr(obj3, &argp4,SWIGTYPE_p_size_t, 0 |  0 );
+  if (!SWIG_IsOK(res4)) {
+    SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "grib_c_get_string_array" "', argument " "4"" of type '" "size_t *""'"); 
+  }
+  arg4 = (size_t *)(argp4);
+  result = (int)grib_c_get_string_array(arg1,arg2,arg3,arg4);
+  resultobj = SWIG_From_int((int)(result));
+  if (SWIG_IsNewObj(res1)) free((char*)arg1);
+  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
+  return resultobj;
+fail:
+  if (SWIG_IsNewObj(res1)) free((char*)arg1);
+  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_grib_c_set_string(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   int *arg1 = (int *) 0 ;
@@ -8239,6 +8642,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"intp_cast", _wrap_intp_cast, METH_VARARGS, NULL},
 	 { (char *)"intp_frompointer", _wrap_intp_frompointer, METH_VARARGS, NULL},
 	 { (char *)"intp_swigregister", intp_swigregister, METH_VARARGS, NULL},
+	 { (char *)"new_sizetp", _wrap_new_sizetp, METH_VARARGS, NULL},
+	 { (char *)"delete_sizetp", _wrap_delete_sizetp, METH_VARARGS, NULL},
+	 { (char *)"sizetp_assign", _wrap_sizetp_assign, METH_VARARGS, NULL},
+	 { (char *)"sizetp_value", _wrap_sizetp_value, METH_VARARGS, NULL},
+	 { (char *)"sizetp_cast", _wrap_sizetp_cast, METH_VARARGS, NULL},
+	 { (char *)"sizetp_frompointer", _wrap_sizetp_frompointer, METH_VARARGS, NULL},
+	 { (char *)"sizetp_swigregister", sizetp_swigregister, METH_VARARGS, NULL},
 	 { (char *)"new_longp", _wrap_new_longp, METH_VARARGS, NULL},
 	 { (char *)"delete_longp", _wrap_delete_longp, METH_VARARGS, NULL},
 	 { (char *)"longp_assign", _wrap_longp_assign, METH_VARARGS, NULL},
@@ -8265,10 +8675,15 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"delete_intArray", _wrap_delete_intArray, METH_VARARGS, NULL},
 	 { (char *)"intArray_getitem", _wrap_intArray_getitem, METH_VARARGS, NULL},
 	 { (char *)"intArray_setitem", _wrap_intArray_setitem, METH_VARARGS, NULL},
+	 { (char *)"new_stringArray", _wrap_new_stringArray, METH_VARARGS, NULL},
+	 { (char *)"delete_stringArray", _wrap_delete_stringArray, METH_VARARGS, NULL},
+	 { (char *)"stringArray_getitem", _wrap_stringArray_getitem, METH_VARARGS, NULL},
+	 { (char *)"stringArray_setitem", _wrap_stringArray_setitem, METH_VARARGS, NULL},
 	 { (char *)"grib_c_new_from_file", _wrap_grib_c_new_from_file, METH_VARARGS, NULL},
 	 { (char *)"grib_c_new_any_from_file", _wrap_grib_c_new_any_from_file, METH_VARARGS, NULL},
 	 { (char *)"grib_c_new_bufr_from_file", _wrap_grib_c_new_bufr_from_file, METH_VARARGS, NULL},
 	 { (char *)"grib_c_new_gts_from_file", _wrap_grib_c_new_gts_from_file, METH_VARARGS, NULL},
+	 { (char *)"grib_c_new_metar_from_file", _wrap_grib_c_new_metar_from_file, METH_VARARGS, NULL},
 	 { (char *)"grib_c_iterator_new", _wrap_grib_c_iterator_new, METH_VARARGS, NULL},
 	 { (char *)"grib_c_keys_iterator_new", _wrap_grib_c_keys_iterator_new, METH_VARARGS, NULL},
 	 { (char *)"grib_c_new_from_samples", _wrap_grib_c_new_from_samples, METH_VARARGS, NULL},
@@ -8317,6 +8732,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"grib_c_iterator_delete", _wrap_grib_c_iterator_delete, METH_VARARGS, NULL},
 	 { (char *)"grib_c_iterator_next", _wrap_grib_c_iterator_next, METH_VARARGS, NULL},
 	 { (char *)"grib_c_get_string", _wrap_grib_c_get_string, METH_VARARGS, NULL},
+	 { (char *)"grib_c_get_string_array", _wrap_grib_c_get_string_array, METH_VARARGS, NULL},
 	 { (char *)"grib_c_set_string", _wrap_grib_c_set_string, METH_VARARGS, NULL},
 	 { (char *)"grib_c_get_long", _wrap_grib_c_get_long, METH_VARARGS, NULL},
 	 { (char *)"grib_c_set_long", _wrap_grib_c_set_long, METH_VARARGS, NULL},
@@ -8358,6 +8774,9 @@ static void *_p_intpTo_p_int(void *x, int *SWIGUNUSEDPARM(newmemory)) {
 static void *_p_doublepTo_p_double(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((double *)  ((doublep *) x));
 }
+static void *_p_sizetpTo_p_size_t(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((size_t *)  ((sizetp *) x));
+}
 static void *_p_longpTo_p_long(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((long *)  ((longp *) x));
 }
@@ -8369,8 +8788,10 @@ static swig_type_info _swigt__p_int = {"_p_int", "int *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_intp = {"_p_intp", "intp *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_long = {"_p_long", "long *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_longp = {"_p_longp", "longp *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_p_char = {"_p_p_char", "char **", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_p_void = {"_p_p_void", "void **", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_size_t = {"_p_size_t", "size_t *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_sizetp = {"_p_sizetp", "sizetp *", 0, 0, (void*)0, 0};
 
 static swig_type_info *swig_type_initial[] = {
   &_swigt__p_FILE,
@@ -8381,8 +8802,10 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_intp,
   &_swigt__p_long,
   &_swigt__p_longp,
+  &_swigt__p_p_char,
   &_swigt__p_p_void,
   &_swigt__p_size_t,
+  &_swigt__p_sizetp,
 };
 
 static swig_cast_info _swigc__p_FILE[] = {  {&_swigt__p_FILE, 0, 0, 0},{0, 0, 0, 0}};
@@ -8393,8 +8816,10 @@ static swig_cast_info _swigc__p_int[] = {  {&_swigt__p_intp, _p_intpTo_p_int, 0,
 static swig_cast_info _swigc__p_intp[] = {  {&_swigt__p_intp, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_long[] = {  {&_swigt__p_long, 0, 0, 0},  {&_swigt__p_longp, _p_longpTo_p_long, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_longp[] = {  {&_swigt__p_longp, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_p_char[] = {  {&_swigt__p_p_char, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_p_void[] = {  {&_swigt__p_p_void, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_size_t[] = {  {&_swigt__p_size_t, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_size_t[] = {  {&_swigt__p_sizetp, _p_sizetpTo_p_size_t, 0, 0},  {&_swigt__p_size_t, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_sizetp[] = {  {&_swigt__p_sizetp, 0, 0, 0},{0, 0, 0, 0}};
 
 static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_FILE,
@@ -8405,8 +8830,10 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_intp,
   _swigc__p_long,
   _swigc__p_longp,
+  _swigc__p_p_char,
   _swigc__p_p_void,
   _swigc__p_size_t,
+  _swigc__p_sizetp,
 };
 
 
@@ -9064,6 +9491,7 @@ SWIG_init(void) {
   SWIG_Python_SetConstant(d, "GRIB_ATTRIBUTE_CLASH",SWIG_From_int((int)(-61)));
   SWIG_Python_SetConstant(d, "GRIB_TOO_MANY_ATTRIBUTES",SWIG_From_int((int)(-62)));
   SWIG_Python_SetConstant(d, "GRIB_ATTRIBUTE_NOT_FOUND",SWIG_From_int((int)(-63)));
+  SWIG_Python_SetConstant(d, "GRIB_UNSUPPORTED_EDITION",SWIG_From_int((int)(-64)));
   
   import_array();
   
diff --git a/python/swig_wrap_numpy.py b/python/swig_wrap_numpy.py
index 09548ab..d41752f 100644
--- a/python/swig_wrap_numpy.py
+++ b/python/swig_wrap_numpy.py
@@ -138,6 +138,7 @@ GRIB_NULL_POINTER = _gribapi_swig.GRIB_NULL_POINTER
 GRIB_ATTRIBUTE_CLASH = _gribapi_swig.GRIB_ATTRIBUTE_CLASH
 GRIB_TOO_MANY_ATTRIBUTES = _gribapi_swig.GRIB_TOO_MANY_ATTRIBUTES
 GRIB_ATTRIBUTE_NOT_FOUND = _gribapi_swig.GRIB_ATTRIBUTE_NOT_FOUND
+GRIB_UNSUPPORTED_EDITION = _gribapi_swig.GRIB_UNSUPPORTED_EDITION
 class intp(_object):
     __swig_setmethods__ = {}
     __setattr__ = lambda self, name, value: _swig_setattr(self, intp, name, value)
@@ -162,6 +163,30 @@ def intp_frompointer(*args):
   return _gribapi_swig.intp_frompointer(*args)
 intp_frompointer = _gribapi_swig.intp_frompointer
 
+class sizetp(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, sizetp, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, sizetp, name)
+    __repr__ = _swig_repr
+    def __init__(self): 
+        this = _gribapi_swig.new_sizetp()
+        try: self.this.append(this)
+        except: self.this = this
+    __swig_destroy__ = _gribapi_swig.delete_sizetp
+    __del__ = lambda self : None;
+    def assign(self, *args): return _gribapi_swig.sizetp_assign(self, *args)
+    def value(self): return _gribapi_swig.sizetp_value(self)
+    def cast(self): return _gribapi_swig.sizetp_cast(self)
+    __swig_getmethods__["frompointer"] = lambda x: _gribapi_swig.sizetp_frompointer
+    if _newclass:frompointer = staticmethod(_gribapi_swig.sizetp_frompointer)
+sizetp_swigregister = _gribapi_swig.sizetp_swigregister
+sizetp_swigregister(sizetp)
+
+def sizetp_frompointer(*args):
+  return _gribapi_swig.sizetp_frompointer(*args)
+sizetp_frompointer = _gribapi_swig.sizetp_frompointer
+
 class longp(_object):
     __swig_setmethods__ = {}
     __setattr__ = lambda self, name, value: _swig_setattr(self, longp, name, value)
@@ -259,6 +284,22 @@ def intArray_setitem(*args):
   return _gribapi_swig.intArray_setitem(*args)
 intArray_setitem = _gribapi_swig.intArray_setitem
 
+def new_stringArray(*args):
+  return _gribapi_swig.new_stringArray(*args)
+new_stringArray = _gribapi_swig.new_stringArray
+
+def delete_stringArray(*args):
+  return _gribapi_swig.delete_stringArray(*args)
+delete_stringArray = _gribapi_swig.delete_stringArray
+
+def stringArray_getitem(*args):
+  return _gribapi_swig.stringArray_getitem(*args)
+stringArray_getitem = _gribapi_swig.stringArray_getitem
+
+def stringArray_setitem(*args):
+  return _gribapi_swig.stringArray_setitem(*args)
+stringArray_setitem = _gribapi_swig.stringArray_setitem
+
 def grib_c_new_from_file(*args):
   return _gribapi_swig.grib_c_new_from_file(*args)
 grib_c_new_from_file = _gribapi_swig.grib_c_new_from_file
@@ -275,6 +316,10 @@ def grib_c_new_gts_from_file(*args):
   return _gribapi_swig.grib_c_new_gts_from_file(*args)
 grib_c_new_gts_from_file = _gribapi_swig.grib_c_new_gts_from_file
 
+def grib_c_new_metar_from_file(*args):
+  return _gribapi_swig.grib_c_new_metar_from_file(*args)
+grib_c_new_metar_from_file = _gribapi_swig.grib_c_new_metar_from_file
+
 def grib_c_iterator_new(*args):
   return _gribapi_swig.grib_c_iterator_new(*args)
 grib_c_iterator_new = _gribapi_swig.grib_c_iterator_new
@@ -467,6 +512,10 @@ def grib_c_get_string(*args):
   return _gribapi_swig.grib_c_get_string(*args)
 grib_c_get_string = _gribapi_swig.grib_c_get_string
 
+def grib_c_get_string_array(*args):
+  return _gribapi_swig.grib_c_get_string_array(*args)
+grib_c_get_string_array = _gribapi_swig.grib_c_get_string_array
+
 def grib_c_set_string(*args):
   return _gribapi_swig.grib_c_set_string(*args)
 grib_c_set_string = _gribapi_swig.grib_c_set_string
diff --git a/python/test_general.py b/python/test_general.py
index 53fb7f3..6ff4674 100755
--- a/python/test_general.py
+++ b/python/test_general.py
@@ -136,11 +136,6 @@ def test():
             new_Ni = grib_get(gid,"Ni")
             print "Set Ni back to its original value --> ",new_Ni
             assert Ni == new_Ni
-            
-            print "Check some keys to see if they are defined"
-            assert grib_is_defined(gid,"Ni")
-            assert grib_is_defined(gid,"edition")
-            assert not grib_is_defined(gid,"DarkThrone")
 
             #grib_multi_write(gid,multi)
 
diff --git a/rpms/eccodes.pc b/rpms/eccodes.pc
index fa2554a..3387121 100644
--- a/rpms/eccodes.pc
+++ b/rpms/eccodes.pc
@@ -6,7 +6,7 @@ libdir=${exec_prefix}/lib
 
 Name: eccodes
 Description: The eccodes library
-Version: 0.10.0
+Version: 0.13.0
 Cflags: -I${includedir}
 Libs: -L${libdir} -leccodes
 Libs.private: -L${libdir} -leccodes -lm -ljasper 
diff --git a/rpms/eccodes.spec b/rpms/eccodes.spec
index a96c934..7f1f914 100644
--- a/rpms/eccodes.spec
+++ b/rpms/eccodes.spec
@@ -2,7 +2,7 @@
 Summary: The ECMWF ecCodes package is an application program interface accessible from C, FORTRAN and Python programs developed for encoding and decoding WMO FM-92 GRIB edition 1 and edition 2 messages.
 %define rel 1
 
-%define version 0.10.0
+%define version 0.13.0
 %define pkgname eccodes
 %define prefix /usr/local
 %define _prefix /usr/local
diff --git a/rpms/eccodes_f90.pc b/rpms/eccodes_f90.pc
index b75773c..bc31dac 100644
--- a/rpms/eccodes_f90.pc
+++ b/rpms/eccodes_f90.pc
@@ -7,7 +7,7 @@ FC=gfortran
 
 Name: eccodes_f90
 Description: The eccodes library for Fortran 90
-Version: 0.10.0
+Version: 0.13.0
 Cflags: -I${prefix}/include
 Libs: -L${libdir} -leccodes_f90 -leccodes
 Libs.private: -L${libdir} -leccodes_f90 -leccodes -lm -ljasper 
diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt
index ce7f196..7262adc 100644
--- a/samples/CMakeLists.txt
+++ b/samples/CMakeLists.txt
@@ -11,7 +11,10 @@ endforeach()
 set( ECCODES_SAMPLES_DIR   ${CMAKE_CURRENT_SOURCE_DIR} PARENT_SCOPE )
 set( ECCODES_SAMPLES_FILES ${ECCODES_SAMPLES_FILES}    PARENT_SCOPE )
 
-# copy the samples to the build directory
-
-file(    COPY ${samples_files}
-		 DESTINATION ${CMAKE_BINARY_DIR}/share/${PROJECT_NAME}/samples )
+# link to the samples in the build directory. See GRIB-786
+file( MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/share/${PROJECT_NAME} )
+if( NOT EXISTS "${CMAKE_BINARY_DIR}/share/${PROJECT_NAME}/samples" )
+  execute_process( COMMAND "${CMAKE_COMMAND}" "-E" "create_symlink"
+    "${CMAKE_CURRENT_SOURCE_DIR}"
+    "${CMAKE_BINARY_DIR}/share/${PROJECT_NAME}/samples" )
+endif()
\ No newline at end of file
diff --git a/samples/Makefile b/samples/Makefile
deleted file mode 100644
index a263c79..0000000
--- a/samples/Makefile
+++ /dev/null
@@ -1,622 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# samples/Makefile.  Generated from Makefile.in by configure.
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/eccodes
-pkgincludedir = $(includedir)/eccodes
-pkglibdir = $(libdir)/eccodes
-pkglibexecdir = $(libexecdir)/eccodes
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = x86_64-suse-linux-gnu
-host_triplet = x86_64-suse-linux-gnu
-subdir = samples
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(dist_samples_DATA)
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_$(V))
-am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(samplesdir)"
-DATA = $(dist_samples_DATA)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing aclocal-1.13
-AEC_DIR = 
-AMTAR = $${TAR-tar}
-AM_DEFAULT_VERBOSITY = 1
-AR = ar
-AUTOCONF = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoconf
-AUTOHEADER = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoheader
-AUTOMAKE = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing automake-1.13
-AWK = gawk
-CC = gcc
-CCDEPMODE = depmode=gcc3
-CCSDS_TEST = 
-CFLAGS = -g -O2
-CPP = gcc -E
-CPPFLAGS = 
-CYGPATH_W = echo
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DEVEL_RULES = dummy.am
-DLLTOOL = false
-DSYMUTIL = 
-DUMPBIN = 
-ECCODES_AGE = 0
-ECCODES_CURRENT = 1
-ECCODES_DEFINITION_PATH = ${datarootdir}/eccodes/definitions
-ECCODES_MAIN_VERSION = 0.10.0
-ECCODES_MAJOR_VERSION = 0
-ECCODES_MINOR_VERSION = 10
-ECCODES_PATCH_VERSION = 0
-ECCODES_REVISION = 0
-ECCODES_SAMPLES_PATH = ${datarootdir}/eccodes/samples
-ECCODES_VERSION_STR = 0.10.0
-ECHO_C = 
-ECHO_N = -n
-ECHO_T = 
-EGREP = /usr/bin/grep -E
-EMOS_LIB = 
-EXEEXT = 
-F77 = gfortran
-F90_CHECK = examples/F90
-F90_MODULE_FLAG = -I
-FC = gfortran
-FCFLAGS = -g -O2
-FFLAGS = -g -O2
-FGREP = /usr/bin/grep -F
-FORTRAN_MOD = fortran
-GREP = /usr/bin/grep
-GRIB_API_INC = /tmp/masn/git/grib_api/eccodes/src
-GRIB_API_LIB = /tmp/masn/git/grib_api/eccodes/src/grib_api.a
-GRIB_DEVEL = 0
-IFS_SAMPLES_DIR = ${datarootdir}/eccodes/ifs_samples
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-JASPER_DIR = system
-JPEG_TEST = jpeg.sh
-LD = /usr/x86_64-suse-linux/bin/ld -m elf_x86_64
-LDFLAGS = 
-LEX = flex
-LEXLIB = -lfl
-LEX_OUTPUT_ROOT = lex.yy
-LIBOBJS = 
-LIBS = -lm -ljasper 
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LIBTOOL_DEPS = config/ltmain.sh
-LIB_AEC = 
-LIB_JASPER = -ljasper
-LIB_OPENJPEG = 
-LIB_PNG = 
-LINUX_DISTRIBUTION_NAME = openSUSE 13.1 (x86_64)
-LINUX_DISTRIBUTION_VERSION = 
-LIPO = 
-LN_S = ln -s
-LTLIBOBJS = 
-MAKEINFO = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing makeinfo
-MANIFEST_TOOL = :
-MKDIR_P = /usr/bin/mkdir -p
-NETCDF_LDFLAGS = 
-NM = /usr/bin/nm -B
-NMEDIT = 
-NUMPY_INCLUDE = /usr/local/apps/python/2.7.8-01/lib/python2.7/site-packages/numpy/core/include
-OBJDUMP = objdump
-OBJEXT = o
-OPENJPEG_DIR = system
-OTOOL = 
-OTOOL64 = 
-PACKAGE = eccodes
-PACKAGE_BUGREPORT = Software.Support at ecmwf.int
-PACKAGE_NAME = eccodes
-PACKAGE_STRING = eccodes  
-PACKAGE_TARNAME = eccodes
-PACKAGE_URL = 
-PACKAGE_VERSION = 0.10.0
-PATH_SEPARATOR = :
-PERL = 
-PERLDIR = perl
-PERL_INSTALL_OPTIONS = LIB=NONE/perl
-PERL_MAKE_OPTIONS = 
-PYTHON = /usr/local/apps/python/2.7.8-01/bin/python
-PYTHON_CFLAGS = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7 -fno-strict-aliasing -O3 -fpic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
-PYTHON_CHECK = examples/python
-PYTHON_CONFIG = /usr/local/apps/python/2.7.8-01/bin/python2.7-config
-PYTHON_DATA_HANDLER = numpy
-PYTHON_EXEC_PREFIX = ${exec_prefix}
-PYTHON_INCLUDES = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7
-PYTHON_LDFLAGS = -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic
-PYTHON_LIBS = -lpthread -ldl -lutil -lm -lpython2.7
-PYTHON_PLATFORM = linux2
-PYTHON_PREFIX = ${prefix}
-PYTHON_VERSION = 2.7
-RANLIB = ranlib
-RM = rm -f
-RPM_CONFIGURE_ARGS =  '--enable-python' '--disable-shared' 'CC=gcc' 'F77=gfortran' 'FC=gfortran'
-RPM_HOST_CPU = x86_64
-RPM_HOST_OS = linux-gnu
-RPM_HOST_VENDOR = suse
-RPM_RELEASE = 1
-SED = /usr/bin/sed
-SET_MAKE = 
-SHELL = /bin/sh
-STRIP = strip
-VERSION = 0.10.0
-WARN_PEDANTIC = -pedantic -Wall
-WERROR = 
-YACC = bison -y
-YFLAGS = 
-abs_builddir = /tmp/masn/git/grib_api/eccodes/samples
-abs_srcdir = /tmp/masn/git/grib_api/eccodes/samples
-abs_top_builddir = /tmp/masn/git/grib_api/eccodes
-abs_top_srcdir = /tmp/masn/git/grib_api/eccodes
-ac_ct_AR = ar
-ac_ct_CC = gcc
-ac_ct_DUMPBIN = 
-ac_ct_F77 = 
-ac_ct_FC = 
-am__include = include
-am__leading_dot = .
-am__quote = 
-am__tar = $${TAR-tar} chof - "$$tardir"
-am__untar = $${TAR-tar} xf -
-bindir = ${exec_prefix}/bin
-build = x86_64-suse-linux-gnu
-build_alias = 
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = suse
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-host = x86_64-suse-linux-gnu
-host_alias = 
-host_cpu = x86_64
-host_os = linux-gnu
-host_vendor = suse
-htmldir = ${docdir}
-includedir = ${prefix}/include
-infodir = ${datarootdir}/info
-install_sh = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localedir = ${datarootdir}/locale
-localstatedir = ${prefix}/var
-mandir = ${datarootdir}/man
-mkdir_p = $(MKDIR_P)
-oldincludedir = /usr/include
-pdfdir = ${docdir}
-pkgpyexecdir = ${pyexecdir}/eccodes
-pkgpythondir = ${pythondir}/eccodes
-prefix = /usr/local
-program_transform_name = s,x,x,
-psdir = ${docdir}
-pyexecdir = ${exec_prefix}/lib/python2.7/site-packages
-pythondir = ${prefix}/lib/python2.7/site-packages
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-srcdir = .
-sysconfdir = ${prefix}/etc
-target_alias = 
-top_build_prefix = ../
-top_builddir = ..
-top_srcdir = ..
-samplesdir = ${datarootdir}/eccodes/samples
-dist_samples_DATA = \
-    GRIB1.tmpl \
-    GRIB2.tmpl \
-    reduced_gg_ml_grib1.tmpl \
-    reduced_gg_ml_grib2.tmpl \
-    reduced_gg_pl_grib1.tmpl \
-    reduced_gg_pl_grib2.tmpl \
-    reduced_gg_sfc_grib1.tmpl \
-    reduced_gg_sfc_grib2.tmpl \
-    reduced_gg_sfc_jpeg_grib2.tmpl \
-    reduced_ll_sfc_grib1.tmpl \
-    reduced_ll_sfc_grib2.tmpl \
-    regular_gg_ml_grib1.tmpl \
-    regular_gg_ml_grib2.tmpl \
-    regular_gg_pl_grib1.tmpl \
-    regular_gg_pl_grib2.tmpl \
-    polar_stereographic_pl_grib1.tmpl \
-    polar_stereographic_pl_grib2.tmpl \
-    polar_stereographic_sfc_grib1.tmpl \
-    polar_stereographic_sfc_grib2.tmpl \
-    regular_ll_pl_grib1.tmpl \
-    regular_ll_pl_grib2.tmpl \
-    regular_ll_sfc_grib1.tmpl \
-    regular_ll_sfc_grib2.tmpl \
-    regular_gg_sfc_grib1.tmpl \
-    regular_gg_sfc_grib2.tmpl \
-    rotated_ll_pl_grib1.tmpl \
-    rotated_ll_pl_grib2.tmpl \
-    rotated_ll_sfc_grib1.tmpl \
-    rotated_ll_sfc_grib2.tmpl \
-    reduced_gg_pl_128_grib1.tmpl \
-    reduced_gg_pl_128_grib2.tmpl \
-    reduced_gg_pl_160_grib1.tmpl \
-    reduced_gg_pl_160_grib2.tmpl \
-    reduced_gg_pl_200_grib1.tmpl \
-    reduced_gg_pl_200_grib2.tmpl \
-    reduced_gg_pl_256_grib1.tmpl \
-    reduced_gg_pl_256_grib2.tmpl \
-    reduced_gg_pl_320_grib1.tmpl \
-    reduced_gg_pl_320_grib2.tmpl \
-    reduced_gg_pl_400_grib1.tmpl \
-    reduced_gg_pl_400_grib2.tmpl \
-    reduced_gg_pl_48_grib1.tmpl \
-    reduced_gg_pl_48_grib2.tmpl \
-    reduced_gg_pl_32_grib1.tmpl \
-    reduced_gg_pl_32_grib2.tmpl \
-    reduced_gg_pl_512_grib1.tmpl \
-    reduced_gg_pl_512_grib2.tmpl \
-    reduced_gg_pl_640_grib1.tmpl \
-    reduced_gg_pl_640_grib2.tmpl \
-    reduced_gg_pl_1024_grib1.tmpl \
-    reduced_gg_pl_1024_grib2.tmpl \
-    reduced_gg_pl_1280_grib1.tmpl \
-    reduced_gg_pl_1280_grib2.tmpl \
-    reduced_gg_pl_2000_grib1.tmpl \
-    reduced_gg_pl_2000_grib2.tmpl \
-    reduced_gg_pl_80_grib1.tmpl \
-    reduced_gg_pl_80_grib2.tmpl \
-    reduced_gg_pl_96_grib1.tmpl \
-    reduced_gg_pl_96_grib2.tmpl \
-    sh_ml_grib1.tmpl \
-    sh_ml_grib2.tmpl \
-    sh_pl_grib1.tmpl \
-    sh_pl_grib2.tmpl \
-    budg.tmpl \
-    gg_sfc_grib1.tmpl \
-    gg_sfc_grib2.tmpl \
-    sh_sfc_grib1.tmpl \
-    sh_sfc_grib2.tmpl \
-    clusters_grib1.tmpl
-
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu samples/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu samples/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-dist_samplesDATA: $(dist_samples_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_samples_DATA)'; test -n "$(samplesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(samplesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(samplesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(samplesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(samplesdir)" || exit $$?; \
-	done
-
-uninstall-dist_samplesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_samples_DATA)'; test -n "$(samplesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(samplesdir)'; $(am__uninstall_files_from_dir)
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
-	for dir in "$(DESTDIR)$(samplesdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-dist_samplesDATA
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-dist_samplesDATA
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	cscopelist-am ctags-am distclean distclean-generic \
-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-dist_samplesDATA install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
-	uninstall-am uninstall-dist_samplesDATA
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/samples/reduced_gg_pl_64_grib1.tmpl b/samples/reduced_gg_pl_64_grib1.tmpl
new file mode 100644
index 0000000..395638b
Binary files /dev/null and b/samples/reduced_gg_pl_64_grib1.tmpl differ
diff --git a/samples/reduced_gg_pl_64_grib2.tmpl b/samples/reduced_gg_pl_64_grib2.tmpl
new file mode 100644
index 0000000..466e982
Binary files /dev/null and b/samples/reduced_gg_pl_64_grib2.tmpl differ
diff --git a/samples/reduced_rotated_gg_ml_grib1.tmpl b/samples/reduced_rotated_gg_ml_grib1.tmpl
new file mode 100644
index 0000000..1e59eef
Binary files /dev/null and b/samples/reduced_rotated_gg_ml_grib1.tmpl differ
diff --git a/samples/reduced_rotated_gg_ml_grib2.tmpl b/samples/reduced_rotated_gg_ml_grib2.tmpl
new file mode 100644
index 0000000..04d8ff8
Binary files /dev/null and b/samples/reduced_rotated_gg_ml_grib2.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_1024_grib1.tmpl b/samples/reduced_rotated_gg_pl_1024_grib1.tmpl
new file mode 100644
index 0000000..3bf123e
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_1024_grib1.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_1024_grib2.tmpl b/samples/reduced_rotated_gg_pl_1024_grib2.tmpl
new file mode 100644
index 0000000..47501f8
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_1024_grib2.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_1280_grib1.tmpl b/samples/reduced_rotated_gg_pl_1280_grib1.tmpl
new file mode 100644
index 0000000..97099bc
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_1280_grib1.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_1280_grib2.tmpl b/samples/reduced_rotated_gg_pl_1280_grib2.tmpl
new file mode 100644
index 0000000..5e77aab
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_1280_grib2.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_128_grib1.tmpl b/samples/reduced_rotated_gg_pl_128_grib1.tmpl
new file mode 100644
index 0000000..de38205
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_128_grib1.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_128_grib2.tmpl b/samples/reduced_rotated_gg_pl_128_grib2.tmpl
new file mode 100644
index 0000000..3739f85
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_128_grib2.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_160_grib1.tmpl b/samples/reduced_rotated_gg_pl_160_grib1.tmpl
new file mode 100644
index 0000000..19ac6cd
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_160_grib1.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_160_grib2.tmpl b/samples/reduced_rotated_gg_pl_160_grib2.tmpl
new file mode 100644
index 0000000..710e5d8
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_160_grib2.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_2000_grib1.tmpl b/samples/reduced_rotated_gg_pl_2000_grib1.tmpl
new file mode 100644
index 0000000..f459a2c
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_2000_grib1.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_2000_grib2.tmpl b/samples/reduced_rotated_gg_pl_2000_grib2.tmpl
new file mode 100644
index 0000000..0cb0be2
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_2000_grib2.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_200_grib1.tmpl b/samples/reduced_rotated_gg_pl_200_grib1.tmpl
new file mode 100644
index 0000000..cd92ddf
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_200_grib1.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_200_grib2.tmpl b/samples/reduced_rotated_gg_pl_200_grib2.tmpl
new file mode 100644
index 0000000..0ece89d
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_200_grib2.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_256_grib1.tmpl b/samples/reduced_rotated_gg_pl_256_grib1.tmpl
new file mode 100644
index 0000000..7a57cfd
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_256_grib1.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_256_grib2.tmpl b/samples/reduced_rotated_gg_pl_256_grib2.tmpl
new file mode 100644
index 0000000..ba85355
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_256_grib2.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_320_grib1.tmpl b/samples/reduced_rotated_gg_pl_320_grib1.tmpl
new file mode 100644
index 0000000..e324fed
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_320_grib1.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_320_grib2.tmpl b/samples/reduced_rotated_gg_pl_320_grib2.tmpl
new file mode 100644
index 0000000..d2ff555
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_320_grib2.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_32_grib1.tmpl b/samples/reduced_rotated_gg_pl_32_grib1.tmpl
new file mode 100644
index 0000000..716ee5e
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_32_grib1.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_32_grib2.tmpl b/samples/reduced_rotated_gg_pl_32_grib2.tmpl
new file mode 100644
index 0000000..90c8dea
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_32_grib2.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_400_grib1.tmpl b/samples/reduced_rotated_gg_pl_400_grib1.tmpl
new file mode 100644
index 0000000..51ae3cb
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_400_grib1.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_400_grib2.tmpl b/samples/reduced_rotated_gg_pl_400_grib2.tmpl
new file mode 100644
index 0000000..bb5d5cb
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_400_grib2.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_48_grib1.tmpl b/samples/reduced_rotated_gg_pl_48_grib1.tmpl
new file mode 100644
index 0000000..39abf6c
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_48_grib1.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_48_grib2.tmpl b/samples/reduced_rotated_gg_pl_48_grib2.tmpl
new file mode 100644
index 0000000..9ecfa63
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_48_grib2.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_512_grib1.tmpl b/samples/reduced_rotated_gg_pl_512_grib1.tmpl
new file mode 100644
index 0000000..a2b05ec
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_512_grib1.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_512_grib2.tmpl b/samples/reduced_rotated_gg_pl_512_grib2.tmpl
new file mode 100644
index 0000000..409eab0
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_512_grib2.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_640_grib1.tmpl b/samples/reduced_rotated_gg_pl_640_grib1.tmpl
new file mode 100644
index 0000000..0d4d526
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_640_grib1.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_640_grib2.tmpl b/samples/reduced_rotated_gg_pl_640_grib2.tmpl
new file mode 100644
index 0000000..ebd4ce9
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_640_grib2.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_80_grib1.tmpl b/samples/reduced_rotated_gg_pl_80_grib1.tmpl
new file mode 100644
index 0000000..9eba4c2
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_80_grib1.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_80_grib2.tmpl b/samples/reduced_rotated_gg_pl_80_grib2.tmpl
new file mode 100644
index 0000000..3e07d47
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_80_grib2.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_96_grib1.tmpl b/samples/reduced_rotated_gg_pl_96_grib1.tmpl
new file mode 100644
index 0000000..f7869af
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_96_grib1.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_96_grib2.tmpl b/samples/reduced_rotated_gg_pl_96_grib2.tmpl
new file mode 100644
index 0000000..3fc755d
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_96_grib2.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_grib1.tmpl b/samples/reduced_rotated_gg_pl_grib1.tmpl
new file mode 100644
index 0000000..867c9a0
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_grib1.tmpl differ
diff --git a/samples/reduced_rotated_gg_pl_grib2.tmpl b/samples/reduced_rotated_gg_pl_grib2.tmpl
new file mode 100644
index 0000000..357c452
Binary files /dev/null and b/samples/reduced_rotated_gg_pl_grib2.tmpl differ
diff --git a/samples/reduced_rotated_gg_sfc_grib1.tmpl b/samples/reduced_rotated_gg_sfc_grib1.tmpl
new file mode 100644
index 0000000..ad9700b
Binary files /dev/null and b/samples/reduced_rotated_gg_sfc_grib1.tmpl differ
diff --git a/samples/reduced_rotated_gg_sfc_grib2.tmpl b/samples/reduced_rotated_gg_sfc_grib2.tmpl
new file mode 100644
index 0000000..9a13163
Binary files /dev/null and b/samples/reduced_rotated_gg_sfc_grib2.tmpl differ
diff --git a/samples/reduced_rotated_gg_sfc_jpeg_grib2.tmpl b/samples/reduced_rotated_gg_sfc_jpeg_grib2.tmpl
new file mode 100644
index 0000000..e5e094c
Binary files /dev/null and b/samples/reduced_rotated_gg_sfc_jpeg_grib2.tmpl differ
diff --git a/samples/rotated_gg_ml_grib1.tmpl b/samples/rotated_gg_ml_grib1.tmpl
new file mode 100644
index 0000000..ac6a901
Binary files /dev/null and b/samples/rotated_gg_ml_grib1.tmpl differ
diff --git a/samples/rotated_gg_ml_grib2.tmpl b/samples/rotated_gg_ml_grib2.tmpl
new file mode 100644
index 0000000..68a52e7
Binary files /dev/null and b/samples/rotated_gg_ml_grib2.tmpl differ
diff --git a/samples/rotated_gg_pl_grib1.tmpl b/samples/rotated_gg_pl_grib1.tmpl
new file mode 100644
index 0000000..ecf5afc
Binary files /dev/null and b/samples/rotated_gg_pl_grib1.tmpl differ
diff --git a/samples/rotated_gg_pl_grib2.tmpl b/samples/rotated_gg_pl_grib2.tmpl
new file mode 100644
index 0000000..2367fd9
Binary files /dev/null and b/samples/rotated_gg_pl_grib2.tmpl differ
diff --git a/samples/rotated_gg_sfc_grib1.tmpl b/samples/rotated_gg_sfc_grib1.tmpl
new file mode 100644
index 0000000..fb07394
Binary files /dev/null and b/samples/rotated_gg_sfc_grib1.tmpl differ
diff --git a/samples/rotated_gg_sfc_grib2.tmpl b/samples/rotated_gg_sfc_grib2.tmpl
new file mode 100644
index 0000000..0c0b0f2
Binary files /dev/null and b/samples/rotated_gg_sfc_grib2.tmpl differ
diff --git a/share/ecbuild/toolchains/ecmwf-XC30-Cray.cmake b/share/ecbuild/toolchains/ecmwf-XC30-Cray.cmake
new file mode 100644
index 0000000..1e12d66
--- /dev/null
+++ b/share/ecbuild/toolchains/ecmwf-XC30-Cray.cmake
@@ -0,0 +1,81 @@
+####################################################################
+# COMPILER
+####################################################################
+
+include(CMakeForceCompiler)
+
+CMAKE_FORCE_C_COMPILER       ( cc  Cray )
+CMAKE_FORCE_CXX_COMPILER     ( CC  Cray )
+CMAKE_FORCE_Fortran_COMPILER ( ftn Cray )
+
+link_libraries("$ENV{CC_X86_64}/lib/x86-64/libcray-c++-rts.so")
+link_libraries("-lmpichf90_cray")
+link_libraries("-lmpichcxx_cray")
+
+set( ECBUILD_FIND_MPI OFF )
+set( ECBUILD_TRUST_FLAGS ON )
+
+####################################################################
+# FLAGS COMMON TO ALL BUILD TYPES
+####################################################################
+
+set( OMP_C_FLAGS             "-homp" )
+set( OMP_CXX_FLAGS           "-homp" )
+set( OMP_Fortran_FLAGS       "-homp" )
+
+set( OMPSTUBS_C_FLAGS        "-hnoomp" )
+set( OMPSTUBS_CXX_FLAGS      "-hnoomp" )
+set( OMPSTUBS_Fortran_FLAGS  "-hnoomp" )
+
+set( CMAKE_C_FLAGS       "" CACHE STRING "" FORCE )
+set( CMAKE_CXX_FLAGS     "" CACHE STRING "" FORCE )
+set( CMAKE_Fortran_FLAGS "-emf -rmoid" CACHE STRING "" FORCE )   # -emf activates .mods and uses lower case -rmoid produces a listing file
+
+####################################################################
+# RELEASE FLAGS
+####################################################################
+
+set( ECBUILD_C_FLAGS_RELEASE       "-O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG" )
+set( ECBUILD_CXX_FLAGS_RELEASE     "-O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG" )
+set( ECBUILD_Fortran_FLAGS_RELEASE "-O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG" )
+
+####################################################################
+# BIT REPRODUCIBLE FLAGS
+####################################################################
+
+set( ECBUILD_C_FLAGS_BIT        "-O1 -G2 -hflex_mp=conservative -hadd_paren -hfp1 -DNDEBUG" )
+set( ECBUILD_CXX_FLAGS_BIT      "-O1 -G2 -hflex_mp=conservative -hadd_paren -hfp1 -DNDEBUG" )
+set( ECBUILD_Fortran_FLAGS_BIT  "-O1 -G2 -hflex_mp=conservative -hadd_paren -hfp1 -DNDEBUG" )
+
+####################################################################
+# RELWITHDEBINFO FLAGS
+####################################################################
+
+set( ECBUILD_C_FLAGS_RELWITHDEBINFO        "-O2 -hfp1 -Gfast -DNDEBUG" )
+set( ECBUILD_CXX_FLAGS_RELWITHDEBINFO      "-O2 -hfp1 -Gfast -DNDEBUG" )
+set( ECBUILD_Fortran_FLAGS_RELWITHDEBINFO  "-O2 -hfp1 -Gfast -DNDEBUG" )
+
+####################################################################
+# DEBUG FLAGS
+####################################################################
+
+set( ECBUILD_C_FLAGS_DEBUG        "-O0 -G0" )
+set( ECBUILD_CXX_FLAGS_DEBUG      "-O0 -G0" )
+set( ECBUILD_Fortran_FLAGS_DEBUG  "-O0 -G0" )
+
+####################################################################
+# PRODUCTION FLAGS
+####################################################################
+
+set( ECBUILD_C_FLAGS_PRODUCTION        "-O2 -hfp1 -G2" )
+set( ECBUILD_CXX_FLAGS_PRODUCTION      "-O2 -hfp1 -G2" )
+set( ECBUILD_Fortran_FLAGS_PRODUCTION  "-O2 -hfp1 -G2" )
+
+####################################################################
+# LINK FLAGS
+####################################################################
+
+set( ECBUILD_C_LINK_FLAGS        "-Wl,-Map,loadmap -Wl,--as-needed -Ktrap=fp" )
+set( ECBUILD_CXX_LINK_FLAGS      "-Wl,-Map,loadmap -Wl,--as-needed -Ktrap=fp" )
+set( ECBUILD_Fortran_LINK_FLAGS  "-Wl,-Map,loadmap -Wl,--as-needed -Ktrap=fp" )
+
diff --git a/share/ecbuild/toolchains/ecmwf-XC30-GNU.cmake b/share/ecbuild/toolchains/ecmwf-XC30-GNU.cmake
new file mode 100644
index 0000000..3c890d5
--- /dev/null
+++ b/share/ecbuild/toolchains/ecmwf-XC30-GNU.cmake
@@ -0,0 +1,73 @@
+####################################################################
+# COMPILER
+####################################################################
+
+include(CMakeForceCompiler)
+
+CMAKE_FORCE_C_COMPILER       ( cc  GNU )
+CMAKE_FORCE_CXX_COMPILER     ( CC  GNU )
+CMAKE_FORCE_Fortran_COMPILER ( ftn GNU )
+
+set( ECBUILD_FIND_MPI OFF )
+set( ECBUILD_TRUST_FLAGS ON )
+
+####################################################################
+# FLAGS COMMON TO ALL BUILD TYPES
+####################################################################
+
+set( OMP_C_FLAGS             "-fopenmp" )
+set( OMP_CXX_FLAGS           "-fopenmp" )
+set( OMP_Fortran_FLAGS       "-fopenmp" )
+
+set( CMAKE_C_FLAGS       "" CACHE STRING "" FORCE )
+set( CMAKE_CXX_FLAGS     "" CACHE STRING "" FORCE )
+set( CMAKE_Fortran_FLAGS "" CACHE STRING "" FORCE )
+
+####################################################################
+# RELEASE FLAGS
+####################################################################
+
+#set( ECBUILD_C_FLAGS_RELEASE       "-O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG" )
+#set( ECBUILD_CXX_FLAGS_RELEASE     "-O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG" )
+#set( ECBUILD_Fortran_FLAGS_RELEASE "-O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG" )
+
+####################################################################
+# BIT REPRODUCIBLE FLAGS
+####################################################################
+
+set( ECBUILD_C_FLAGS_BIT        "-g -O2 -m64 -march=native -DNDEBUG" )
+set( ECBUILD_CXX_FLAGS_BIT      "-g -O2 -m64 -march=native -DNDEBUG" )
+set( ECBUILD_Fortran_FLAGS_BIT  "-g -O2 -m64 -march=native -DNDEBUG -fno-range-check -ffree-line-length-300 -fconvert=big-endian" )
+
+####################################################################
+# RELWITHDEBINFO FLAGS
+####################################################################
+
+#set( ECBUILD_C_FLAGS_RELWITHDEBINFO        "-O2 -hfp1 -Gfast -DNDEBUG" )
+#set( ECBUILD_CXX_FLAGS_RELWITHDEBINFO      "-O2 -hfp1 -Gfast -DNDEBUG" )
+#set( ECBUILD_Fortran_FLAGS_RELWITHDEBINFO  "-O2 -hfp1 -Gfast -DNDEBUG" )
+
+####################################################################
+# DEBUG FLAGS
+####################################################################
+
+#set( ECBUILD_C_FLAGS_DEBUG        "-O0 -G0" )
+#set( ECBUILD_CXX_FLAGS_DEBUG      "-O0 -G0" )
+#set( ECBUILD_Fortran_FLAGS_DEBUG  "-O0 -G0" )
+
+####################################################################
+# PRODUCTION FLAGS
+####################################################################
+
+#set( ECBUILD_C_FLAGS_PRODUCTION        "-O2 -hfp1 -G2" )
+#set( ECBUILD_CXX_FLAGS_PRODUCTION      "-O2 -hfp1 -G2" )
+#set( ECBUILD_Fortran_FLAGS_PRODUCTION  "-O2 -hfp1 -G2" )
+
+####################################################################
+# LINK FLAGS
+####################################################################
+
+set( ECBUILD_C_LINK_FLAGS        "-Wl,-Map,load.map -Wl,--as-needed" )
+set( ECBUILD_CXX_LINK_FLAGS      "-Wl,-Map,load.map -Wl,--as-needed" )
+set( ECBUILD_Fortran_LINK_FLAGS  "-Wl,-Map,load.map -Wl,--as-needed" )
+
diff --git a/share/ecbuild/toolchains/ecmwf-XC30-Intel.cmake b/share/ecbuild/toolchains/ecmwf-XC30-Intel.cmake
new file mode 100644
index 0000000..485b122
--- /dev/null
+++ b/share/ecbuild/toolchains/ecmwf-XC30-Intel.cmake
@@ -0,0 +1,76 @@
+####################################################################
+# COMPILER
+####################################################################
+
+include(CMakeForceCompiler)
+
+CMAKE_FORCE_C_COMPILER       ( cc  Intel )
+CMAKE_FORCE_CXX_COMPILER     ( CC  Intel )
+CMAKE_FORCE_Fortran_COMPILER ( ftn Intel )
+
+set( ECBUILD_FIND_MPI OFF )
+set( ECBUILD_TRUST_FLAGS ON )
+
+####################################################################
+# FLAGS COMMON TO ALL BUILD TYPES
+####################################################################
+
+set( OMP_C_FLAGS             "-qopenmp -qopenmp-threadprivate=compat -qopenmp-report=2 -qopt-report-phase=vec,openmp" )
+set( OMP_CXX_FLAGS           "-qopenmp -qopenmp-threadprivate=compat -qopenmp-report=2 -qopt-report-phase=vec,openmp" )
+set( OMP_Fortran_FLAGS       " -openmp  -openmp-threadprivate=compat  -openmp-report=2  -opt-report-phase=vec,openmp" ) # -[q] is missing on purpose, ifort does not take -q as flag
+
+# for diagnostics:
+#  -diag-enable=vec -diag-file -Winline
+
+set( CMAKE_C_FLAGS       "-fp-speculation=strict -fp-model precise -traceback" CACHE STRING "" FORCE )
+set( CMAKE_CXX_FLAGS     "-fp-speculation=strict -fp-model precise -traceback" CACHE STRING "" FORCE )
+set( CMAKE_Fortran_FLAGS "-fp-speculation=strict -fp-model precise -convert big_endian -assume byterecl -traceback -fpe0" CACHE STRING "" FORCE )
+
+####################################################################
+# RELEASE FLAGS
+####################################################################
+
+#set( ECBUILD_C_FLAGS_RELEASE       "not implemented" )
+#set( ECBUILD_CXX_FLAGS_RELEASE     "not implemented" )
+#set( ECBUILD_Fortran_FLAGS_RELEASE "not implemented" )
+
+####################################################################
+# BIT REPRODUCIBLE FLAGS
+####################################################################
+
+set( ECBUILD_C_FLAGS_BIT        "-O2 -xAVX -finline-function -finline-limit=500" )
+set( ECBUILD_CXX_FLAGS_BIT      "-O2 -xAVX -finline-function -finline-limit=500" )
+set( ECBUILD_Fortran_FLAGS_BIT  "-O2 -xAVX -finline-function -finline-limit=500 -align array64byte" )
+
+####################################################################
+# RELWITHDEBINFO FLAGS
+####################################################################
+
+#set( ECBUILD_C_FLAGS_RELWITHDEBINFO        "not implemented" )
+#set( ECBUILD_CXX_FLAGS_RELWITHDEBINFO      "not implemented" )
+#set( ECBUILD_Fortran_FLAGS_RELWITHDEBINFO  "not implemented" )
+
+####################################################################
+# DEBUG FLAGS
+####################################################################
+
+set( ECBUILD_C_FLAGS_DEBUG        "-g -O0" )
+set( ECBUILD_CXX_FLAGS_DEBUG      "-g -O0" )
+set( ECBUILD_Fortran_FLAGS_DEBUG  "-g -O0" ) # ??? -align array64byte
+
+####################################################################
+# PRODUCTION FLAGS
+####################################################################
+
+#set( ECBUILD_C_FLAGS_PRODUCTION        "not implemented" )
+#set( ECBUILD_CXX_FLAGS_PRODUCTION      "not implemented" )
+#set( ECBUILD_Fortran_FLAGS_PRODUCTION  "not implemented" )
+
+####################################################################
+# LINK FLAGS
+####################################################################
+
+set( ECBUILD_C_LINK_FLAGS        "-Wl,-Map,load.map -Wl,--as-needed" )
+set( ECBUILD_CXX_LINK_FLAGS      "-Wl,-Map,load.map -Wl,--as-needed" )
+set( ECBUILD_Fortran_LINK_FLAGS  "-Wl,-Map,load.map -Wl,--as-needed" )
+
diff --git a/src/.deps/action.Plo b/src/.deps/action.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_alias.Plo b/src/.deps/action_class_alias.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_alias.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_assert.Plo b/src/.deps/action_class_assert.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_assert.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_close.Plo b/src/.deps/action_class_close.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_close.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_concept.Plo b/src/.deps/action_class_concept.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_concept.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_gen.Plo b/src/.deps/action_class_gen.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_gen.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_hash_array.Plo b/src/.deps/action_class_hash_array.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_hash_array.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_if.Plo b/src/.deps/action_class_if.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_if.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_list.Plo b/src/.deps/action_class_list.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_list.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_meta.Plo b/src/.deps/action_class_meta.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_meta.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_modify.Plo b/src/.deps/action_class_modify.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_modify.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_noop.Plo b/src/.deps/action_class_noop.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_noop.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_print.Plo b/src/.deps/action_class_print.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_print.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_put.Plo b/src/.deps/action_class_put.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_put.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_remove.Plo b/src/.deps/action_class_remove.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_remove.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_rename.Plo b/src/.deps/action_class_rename.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_rename.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_section.Plo b/src/.deps/action_class_section.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_section.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_set.Plo b/src/.deps/action_class_set.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_set.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_set_darray.Plo b/src/.deps/action_class_set_darray.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_set_darray.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_set_iarray.Plo b/src/.deps/action_class_set_iarray.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_set_iarray.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_set_missing.Plo b/src/.deps/action_class_set_missing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_set_missing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_switch.Plo b/src/.deps/action_class_switch.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_switch.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_template.Plo b/src/.deps/action_class_template.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_template.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_trigger.Plo b/src/.deps/action_class_trigger.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_trigger.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_variable.Plo b/src/.deps/action_class_variable.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_variable.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_when.Plo b/src/.deps/action_class_when.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_when.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_while.Plo b/src/.deps/action_class_while.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_while.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/action_class_write.Plo b/src/.deps/action_class_write.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/action_class_write.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/compile.Plo b/src/.deps/compile.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/compile.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/eccodes.Plo b/src/.deps/eccodes.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/eccodes.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/functions.Plo b/src/.deps/functions.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/functions.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_2order_packer_simple.Plo b/src/.deps/grib_2order_packer_simple.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_2order_packer_simple.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor.Plo b/src/.deps/grib_accessor.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class.Plo b/src/.deps/grib_accessor_class.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_abstract_long_vector.Plo b/src/.deps/grib_accessor_class_abstract_long_vector.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_abstract_long_vector.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_abstract_vector.Plo b/src/.deps/grib_accessor_class_abstract_vector.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_abstract_vector.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_apply_operators.Plo b/src/.deps/grib_accessor_class_apply_operators.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_apply_operators.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_array.Plo b/src/.deps/grib_accessor_class_array.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_array.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_ascii.Plo b/src/.deps/grib_accessor_class_ascii.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_ascii.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_assert.Plo b/src/.deps/grib_accessor_class_assert.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_assert.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_bit.Plo b/src/.deps/grib_accessor_class_bit.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_bit.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_bitmap.Plo b/src/.deps/grib_accessor_class_bitmap.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_bitmap.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_bits.Plo b/src/.deps/grib_accessor_class_bits.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_bits.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_bits_per_value.Plo b/src/.deps/grib_accessor_class_bits_per_value.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_bits_per_value.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_blob.Plo b/src/.deps/grib_accessor_class_blob.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_blob.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_box.Plo b/src/.deps/grib_accessor_class_box.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_box.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_budgdate.Plo b/src/.deps/grib_accessor_class_budgdate.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_budgdate.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_bufr_data.Plo b/src/.deps/grib_accessor_class_bufr_data.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_bufr_data.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_bufr_data_array.Plo b/src/.deps/grib_accessor_class_bufr_data_array.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_bufr_data_array.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_bufr_data_element.Plo b/src/.deps/grib_accessor_class_bufr_data_element.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_bufr_data_element.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_bufr_elements_table.Plo b/src/.deps/grib_accessor_class_bufr_elements_table.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_bufr_elements_table.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_bufr_group.Plo b/src/.deps/grib_accessor_class_bufr_group.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_bufr_group.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_bufr_has_delayed_replication.Plo b/src/.deps/grib_accessor_class_bufr_has_delayed_replication.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_bufr_has_delayed_replication.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_bufrdc_expanded_descriptors.Plo b/src/.deps/grib_accessor_class_bufrdc_expanded_descriptors.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_bufrdc_expanded_descriptors.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_bytes.Plo b/src/.deps/grib_accessor_class_bytes.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_bytes.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_change_scanning_direction.Plo b/src/.deps/grib_accessor_class_change_scanning_direction.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_change_scanning_direction.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_codeflag.Plo b/src/.deps/grib_accessor_class_codeflag.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_codeflag.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_codetable.Plo b/src/.deps/grib_accessor_class_codetable.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_codetable.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_codetable_title.Plo b/src/.deps/grib_accessor_class_codetable_title.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_codetable_title.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_codetable_units.Plo b/src/.deps/grib_accessor_class_codetable_units.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_codetable_units.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_concept.Plo b/src/.deps/grib_accessor_class_concept.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_concept.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_constant.Plo b/src/.deps/grib_accessor_class_constant.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_constant.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_count_file.Plo b/src/.deps/grib_accessor_class_count_file.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_count_file.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_count_missing.Plo b/src/.deps/grib_accessor_class_count_missing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_count_missing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_count_total.Plo b/src/.deps/grib_accessor_class_count_total.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_count_total.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_2order_packing.Plo b/src/.deps/grib_accessor_class_data_2order_packing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_2order_packing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_2order_packing_count.Plo b/src/.deps/grib_accessor_class_data_2order_packing_count.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_2order_packing_count.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_apply_bitmap.Plo b/src/.deps/grib_accessor_class_data_apply_bitmap.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_apply_bitmap.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_apply_boustrophedonic.Plo b/src/.deps/grib_accessor_class_data_apply_boustrophedonic.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_apply_boustrophedonic.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_apply_boustrophedonic_bitmap.Plo b/src/.deps/grib_accessor_class_data_apply_boustrophedonic_bitmap.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_apply_boustrophedonic_bitmap.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_apply_gdsnotpresent.Plo b/src/.deps/grib_accessor_class_data_apply_gdsnotpresent.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_apply_gdsnotpresent.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_ccsds_packing.Plo b/src/.deps/grib_accessor_class_data_ccsds_packing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_ccsds_packing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_complex_packing.Plo b/src/.deps/grib_accessor_class_data_complex_packing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_complex_packing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_constant_field.Plo b/src/.deps/grib_accessor_class_data_constant_field.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_constant_field.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_dummy_field.Plo b/src/.deps/grib_accessor_class_data_dummy_field.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_dummy_field.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_g1complex_packing.Plo b/src/.deps/grib_accessor_class_data_g1complex_packing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_g1complex_packing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_g1second_order_constant_width_packing.Plo b/src/.deps/grib_accessor_class_data_g1second_order_constant_width_packing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_g1second_order_constant_width_packing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_g1second_order_general_extended_packing.Plo b/src/.deps/grib_accessor_class_data_g1second_order_general_extended_packing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_g1second_order_general_extended_packing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_g1second_order_general_packing.Plo b/src/.deps/grib_accessor_class_data_g1second_order_general_packing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_g1second_order_general_packing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_g1second_order_row_by_row_packing.Plo b/src/.deps/grib_accessor_class_data_g1second_order_row_by_row_packing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_g1second_order_row_by_row_packing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_g1secondary_bitmap.Plo b/src/.deps/grib_accessor_class_data_g1secondary_bitmap.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_g1secondary_bitmap.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_g1shsimple_packing.Plo b/src/.deps/grib_accessor_class_data_g1shsimple_packing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_g1shsimple_packing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_g1simple_packing.Plo b/src/.deps/grib_accessor_class_data_g1simple_packing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_g1simple_packing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_g22order_packing.Plo b/src/.deps/grib_accessor_class_data_g22order_packing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_g22order_packing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_g2complex_packing.Plo b/src/.deps/grib_accessor_class_data_g2complex_packing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_g2complex_packing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_g2secondary_bitmap.Plo b/src/.deps/grib_accessor_class_data_g2secondary_bitmap.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_g2secondary_bitmap.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_g2shsimple_packing.Plo b/src/.deps/grib_accessor_class_data_g2shsimple_packing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_g2shsimple_packing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_g2simple_packing.Plo b/src/.deps/grib_accessor_class_data_g2simple_packing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_g2simple_packing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_g2simple_packing_with_preprocessing.Plo b/src/.deps/grib_accessor_class_data_g2simple_packing_with_preprocessing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_g2simple_packing_with_preprocessing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_jpeg2000_packing.Plo b/src/.deps/grib_accessor_class_data_jpeg2000_packing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_jpeg2000_packing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_png_packing.Plo b/src/.deps/grib_accessor_class_data_png_packing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_png_packing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_raw_packing.Plo b/src/.deps/grib_accessor_class_data_raw_packing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_raw_packing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_secondary_bitmap.Plo b/src/.deps/grib_accessor_class_data_secondary_bitmap.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_secondary_bitmap.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_sh_packed.Plo b/src/.deps/grib_accessor_class_data_sh_packed.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_sh_packed.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_sh_unpacked.Plo b/src/.deps/grib_accessor_class_data_sh_unpacked.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_sh_unpacked.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_shsimple_packing.Plo b/src/.deps/grib_accessor_class_data_shsimple_packing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_shsimple_packing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_data_simple_packing.Plo b/src/.deps/grib_accessor_class_data_simple_packing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_data_simple_packing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_decimal_precision.Plo b/src/.deps/grib_accessor_class_decimal_precision.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_decimal_precision.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_dictionary.Plo b/src/.deps/grib_accessor_class_dictionary.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_dictionary.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_dirty.Plo b/src/.deps/grib_accessor_class_dirty.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_dirty.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_divdouble.Plo b/src/.deps/grib_accessor_class_divdouble.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_divdouble.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_double.Plo b/src/.deps/grib_accessor_class_double.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_double.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_element.Plo b/src/.deps/grib_accessor_class_element.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_element.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_evaluate.Plo b/src/.deps/grib_accessor_class_evaluate.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_evaluate.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_expanded_descriptors.Plo b/src/.deps/grib_accessor_class_expanded_descriptors.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_expanded_descriptors.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_forward.Plo b/src/.deps/grib_accessor_class_forward.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_forward.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_from_scale_factor_scaled_value.Plo b/src/.deps/grib_accessor_class_from_scale_factor_scaled_value.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_from_scale_factor_scaled_value.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g1_half_byte_codeflag.Plo b/src/.deps/grib_accessor_class_g1_half_byte_codeflag.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g1_half_byte_codeflag.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g1_increment.Plo b/src/.deps/grib_accessor_class_g1_increment.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g1_increment.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g1_message_length.Plo b/src/.deps/grib_accessor_class_g1_message_length.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g1_message_length.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g1_section4_length.Plo b/src/.deps/grib_accessor_class_g1_section4_length.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g1_section4_length.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g1area.Plo b/src/.deps/grib_accessor_class_g1area.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g1area.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g1bitmap.Plo b/src/.deps/grib_accessor_class_g1bitmap.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g1bitmap.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g1date.Plo b/src/.deps/grib_accessor_class_g1date.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g1date.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g1day_of_the_year_date.Plo b/src/.deps/grib_accessor_class_g1day_of_the_year_date.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g1day_of_the_year_date.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g1end_of_interval_monthly.Plo b/src/.deps/grib_accessor_class_g1end_of_interval_monthly.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g1end_of_interval_monthly.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g1fcperiod.Plo b/src/.deps/grib_accessor_class_g1fcperiod.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g1fcperiod.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g1forecastmonth.Plo b/src/.deps/grib_accessor_class_g1forecastmonth.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g1forecastmonth.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g1monthlydate.Plo b/src/.deps/grib_accessor_class_g1monthlydate.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g1monthlydate.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g1number_of_coded_values_sh_complex.Plo b/src/.deps/grib_accessor_class_g1number_of_coded_values_sh_complex.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g1number_of_coded_values_sh_complex.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g1number_of_coded_values_sh_simple.Plo b/src/.deps/grib_accessor_class_g1number_of_coded_values_sh_simple.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g1number_of_coded_values_sh_simple.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g1p1p2.Plo b/src/.deps/grib_accessor_class_g1p1p2.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g1p1p2.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g1param.Plo b/src/.deps/grib_accessor_class_g1param.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g1param.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g1step_range.Plo b/src/.deps/grib_accessor_class_g1step_range.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g1step_range.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g1verificationdate.Plo b/src/.deps/grib_accessor_class_g1verificationdate.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g1verificationdate.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g2_chemical.Plo b/src/.deps/grib_accessor_class_g2_chemical.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g2_chemical.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g2_eps.Plo b/src/.deps/grib_accessor_class_g2_eps.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g2_eps.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g2_mars_labeling.Plo b/src/.deps/grib_accessor_class_g2_mars_labeling.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g2_mars_labeling.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g2bitmap.Plo b/src/.deps/grib_accessor_class_g2bitmap.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g2bitmap.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g2bitmap_present.Plo b/src/.deps/grib_accessor_class_g2bitmap_present.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g2bitmap_present.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g2date.Plo b/src/.deps/grib_accessor_class_g2date.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g2date.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g2end_step.Plo b/src/.deps/grib_accessor_class_g2end_step.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g2end_step.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g2grid.Plo b/src/.deps/grib_accessor_class_g2grid.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g2grid.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g2latlon.Plo b/src/.deps/grib_accessor_class_g2latlon.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g2latlon.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g2level.Plo b/src/.deps/grib_accessor_class_g2level.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g2level.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g2lon.Plo b/src/.deps/grib_accessor_class_g2lon.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g2lon.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g2step.Plo b/src/.deps/grib_accessor_class_g2step.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g2step.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_g2step_range.Plo b/src/.deps/grib_accessor_class_g2step_range.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_g2step_range.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_gds_is_present.Plo b/src/.deps/grib_accessor_class_gds_is_present.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_gds_is_present.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_gds_not_present_bitmap.Plo b/src/.deps/grib_accessor_class_gds_not_present_bitmap.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_gds_not_present_bitmap.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_gen.Plo b/src/.deps/grib_accessor_class_gen.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_gen.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_getenv.Plo b/src/.deps/grib_accessor_class_getenv.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_getenv.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_global_gaussian.Plo b/src/.deps/grib_accessor_class_global_gaussian.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_global_gaussian.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_group.Plo b/src/.deps/grib_accessor_class_group.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_group.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_gts_header.Plo b/src/.deps/grib_accessor_class_gts_header.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_gts_header.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_hash_array.Plo b/src/.deps/grib_accessor_class_hash_array.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_hash_array.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_headers_only.Plo b/src/.deps/grib_accessor_class_headers_only.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_headers_only.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_ibmfloat.Plo b/src/.deps/grib_accessor_class_ibmfloat.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_ibmfloat.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_ieeefloat.Plo b/src/.deps/grib_accessor_class_ieeefloat.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_ieeefloat.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_ifs_param.Plo b/src/.deps/grib_accessor_class_ifs_param.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_ifs_param.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_int16.Plo b/src/.deps/grib_accessor_class_int16.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_int16.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_int16_little_endian.Plo b/src/.deps/grib_accessor_class_int16_little_endian.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_int16_little_endian.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_int32.Plo b/src/.deps/grib_accessor_class_int32.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_int32.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_int32_little_endian.Plo b/src/.deps/grib_accessor_class_int32_little_endian.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_int32_little_endian.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_int64.Plo b/src/.deps/grib_accessor_class_int64.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_int64.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_int64_little_endian.Plo b/src/.deps/grib_accessor_class_int64_little_endian.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_int64_little_endian.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_int8.Plo b/src/.deps/grib_accessor_class_int8.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_int8.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_iterator.Plo b/src/.deps/grib_accessor_class_iterator.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_iterator.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_julian_day.Plo b/src/.deps/grib_accessor_class_julian_day.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_julian_day.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_ksec1expver.Plo b/src/.deps/grib_accessor_class_ksec1expver.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_ksec1expver.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_label.Plo b/src/.deps/grib_accessor_class_label.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_label.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_laplacian.Plo b/src/.deps/grib_accessor_class_laplacian.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_laplacian.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_latitudes.Plo b/src/.deps/grib_accessor_class_latitudes.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_latitudes.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_latlon_increment.Plo b/src/.deps/grib_accessor_class_latlon_increment.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_latlon_increment.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_latlonvalues.Plo b/src/.deps/grib_accessor_class_latlonvalues.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_latlonvalues.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_library_version.Plo b/src/.deps/grib_accessor_class_library_version.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_library_version.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_local_definition.Plo b/src/.deps/grib_accessor_class_local_definition.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_local_definition.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_long.Plo b/src/.deps/grib_accessor_class_long.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_long.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_long_vector.Plo b/src/.deps/grib_accessor_class_long_vector.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_long_vector.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_longitudes.Plo b/src/.deps/grib_accessor_class_longitudes.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_longitudes.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_lookup.Plo b/src/.deps/grib_accessor_class_lookup.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_lookup.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_mars_param.Plo b/src/.deps/grib_accessor_class_mars_param.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_mars_param.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_mars_step.Plo b/src/.deps/grib_accessor_class_mars_step.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_mars_step.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_md5.Plo b/src/.deps/grib_accessor_class_md5.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_md5.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_message.Plo b/src/.deps/grib_accessor_class_message.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_message.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_message_copy.Plo b/src/.deps/grib_accessor_class_message_copy.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_message_copy.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_missing.Plo b/src/.deps/grib_accessor_class_missing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_missing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_nearest.Plo b/src/.deps/grib_accessor_class_nearest.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_nearest.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_non_alpha.Plo b/src/.deps/grib_accessor_class_non_alpha.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_non_alpha.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_number_of_coded_values.Plo b/src/.deps/grib_accessor_class_number_of_coded_values.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_number_of_coded_values.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_number_of_points.Plo b/src/.deps/grib_accessor_class_number_of_points.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_number_of_points.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_number_of_points_gaussian.Plo b/src/.deps/grib_accessor_class_number_of_points_gaussian.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_number_of_points_gaussian.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_number_of_values.Plo b/src/.deps/grib_accessor_class_number_of_values.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_number_of_values.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_number_of_values_data_raw_packing.Plo b/src/.deps/grib_accessor_class_number_of_values_data_raw_packing.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_number_of_values_data_raw_packing.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_octect_number.Plo b/src/.deps/grib_accessor_class_octect_number.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_octect_number.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_offset_file.Plo b/src/.deps/grib_accessor_class_offset_file.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_offset_file.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_offset_values.Plo b/src/.deps/grib_accessor_class_offset_values.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_offset_values.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_pad.Plo b/src/.deps/grib_accessor_class_pad.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_pad.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_padding.Plo b/src/.deps/grib_accessor_class_padding.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_padding.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_padto.Plo b/src/.deps/grib_accessor_class_padto.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_padto.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_padtoeven.Plo b/src/.deps/grib_accessor_class_padtoeven.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_padtoeven.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_padtomultiple.Plo b/src/.deps/grib_accessor_class_padtomultiple.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_padtomultiple.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_position.Plo b/src/.deps/grib_accessor_class_position.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_position.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_reference_value_error.Plo b/src/.deps/grib_accessor_class_reference_value_error.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_reference_value_error.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_round.Plo b/src/.deps/grib_accessor_class_round.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_round.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_scale.Plo b/src/.deps/grib_accessor_class_scale.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_scale.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_scale_values.Plo b/src/.deps/grib_accessor_class_scale_values.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_scale_values.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_second_order_bits_per_value.Plo b/src/.deps/grib_accessor_class_second_order_bits_per_value.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_second_order_bits_per_value.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_section.Plo b/src/.deps/grib_accessor_class_section.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_section.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_section_length.Plo b/src/.deps/grib_accessor_class_section_length.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_section_length.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_section_padding.Plo b/src/.deps/grib_accessor_class_section_padding.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_section_padding.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_section_pointer.Plo b/src/.deps/grib_accessor_class_section_pointer.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_section_pointer.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_select_step_template.Plo b/src/.deps/grib_accessor_class_select_step_template.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_select_step_template.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_sexagesimal2decimal.Plo b/src/.deps/grib_accessor_class_sexagesimal2decimal.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_sexagesimal2decimal.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_signed.Plo b/src/.deps/grib_accessor_class_signed.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_signed.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_signed_bits.Plo b/src/.deps/grib_accessor_class_signed_bits.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_signed_bits.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_simple_packing_error.Plo b/src/.deps/grib_accessor_class_simple_packing_error.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_simple_packing_error.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_size.Plo b/src/.deps/grib_accessor_class_size.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_size.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_smart_table.Plo b/src/.deps/grib_accessor_class_smart_table.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_smart_table.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_smart_table_column.Plo b/src/.deps/grib_accessor_class_smart_table_column.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_smart_table_column.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_spd.Plo b/src/.deps/grib_accessor_class_spd.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_spd.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_spectral_truncation.Plo b/src/.deps/grib_accessor_class_spectral_truncation.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_spectral_truncation.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_sprintf.Plo b/src/.deps/grib_accessor_class_sprintf.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_sprintf.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_statistics.Plo b/src/.deps/grib_accessor_class_statistics.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_statistics.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_statistics_spectral.Plo b/src/.deps/grib_accessor_class_statistics_spectral.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_statistics_spectral.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_step_in_units.Plo b/src/.deps/grib_accessor_class_step_in_units.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_step_in_units.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_sum.Plo b/src/.deps/grib_accessor_class_sum.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_sum.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_suppressed.Plo b/src/.deps/grib_accessor_class_suppressed.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_suppressed.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_time.Plo b/src/.deps/grib_accessor_class_time.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_time.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_times.Plo b/src/.deps/grib_accessor_class_times.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_times.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_to_double.Plo b/src/.deps/grib_accessor_class_to_double.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_to_double.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_to_integer.Plo b/src/.deps/grib_accessor_class_to_integer.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_to_integer.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_to_string.Plo b/src/.deps/grib_accessor_class_to_string.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_to_string.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_transient.Plo b/src/.deps/grib_accessor_class_transient.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_transient.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_uint16.Plo b/src/.deps/grib_accessor_class_uint16.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_uint16.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_uint16_little_endian.Plo b/src/.deps/grib_accessor_class_uint16_little_endian.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_uint16_little_endian.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_uint32.Plo b/src/.deps/grib_accessor_class_uint32.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_uint32.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_uint32_little_endian.Plo b/src/.deps/grib_accessor_class_uint32_little_endian.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_uint32_little_endian.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_uint64.Plo b/src/.deps/grib_accessor_class_uint64.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_uint64.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_uint64_little_endian.Plo b/src/.deps/grib_accessor_class_uint64_little_endian.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_uint64_little_endian.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_uint8.Plo b/src/.deps/grib_accessor_class_uint8.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_uint8.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_unexpanded_descriptors.Plo b/src/.deps/grib_accessor_class_unexpanded_descriptors.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_unexpanded_descriptors.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_unpack_bufr_values.Plo b/src/.deps/grib_accessor_class_unpack_bufr_values.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_unpack_bufr_values.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_unsigned.Plo b/src/.deps/grib_accessor_class_unsigned.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_unsigned.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_unsigned_bits.Plo b/src/.deps/grib_accessor_class_unsigned_bits.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_unsigned_bits.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_validity_date.Plo b/src/.deps/grib_accessor_class_validity_date.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_validity_date.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_validity_time.Plo b/src/.deps/grib_accessor_class_validity_time.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_validity_time.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_values.Plo b/src/.deps/grib_accessor_class_values.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_values.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_variable.Plo b/src/.deps/grib_accessor_class_variable.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_variable.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_vector.Plo b/src/.deps/grib_accessor_class_vector.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_vector.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_accessor_class_when.Plo b/src/.deps/grib_accessor_class_when.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_accessor_class_when.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_api_version.Plo b/src/.deps/grib_api_version.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_api_version.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_bits.Plo b/src/.deps/grib_bits.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_bits.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_box.Plo b/src/.deps/grib_box.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_box.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_box_class.Plo b/src/.deps/grib_box_class.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_box_class.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_box_class_gen.Plo b/src/.deps/grib_box_class_gen.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_box_class_gen.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_box_class_reduced_gaussian.Plo b/src/.deps/grib_box_class_reduced_gaussian.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_box_class_reduced_gaussian.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_box_class_regular_gaussian.Plo b/src/.deps/grib_box_class_regular_gaussian.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_box_class_regular_gaussian.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_buffer.Plo b/src/.deps/grib_buffer.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_buffer.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_bufr_descriptor.Plo b/src/.deps/grib_bufr_descriptor.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_bufr_descriptor.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_bufr_descriptors_array.Plo b/src/.deps/grib_bufr_descriptors_array.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_bufr_descriptors_array.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_concept.Plo b/src/.deps/grib_concept.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_concept.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_context.Plo b/src/.deps/grib_context.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_context.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_darray.Plo b/src/.deps/grib_darray.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_darray.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_date.Plo b/src/.deps/grib_date.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_date.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_dependency.Plo b/src/.deps/grib_dependency.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_dependency.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_dumper.Plo b/src/.deps/grib_dumper.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_dumper.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_dumper_class.Plo b/src/.deps/grib_dumper_class.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_dumper_class.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_dumper_class_c_code.Plo b/src/.deps/grib_dumper_class_c_code.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_dumper_class_c_code.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_dumper_class_debug.Plo b/src/.deps/grib_dumper_class_debug.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_dumper_class_debug.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_dumper_class_default.Plo b/src/.deps/grib_dumper_class_default.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_dumper_class_default.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_dumper_class_json.Plo b/src/.deps/grib_dumper_class_json.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_dumper_class_json.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_dumper_class_keys.Plo b/src/.deps/grib_dumper_class_keys.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_dumper_class_keys.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_dumper_class_serialize.Plo b/src/.deps/grib_dumper_class_serialize.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_dumper_class_serialize.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_dumper_class_wmo.Plo b/src/.deps/grib_dumper_class_wmo.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_dumper_class_wmo.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_dumper_class_xml.Plo b/src/.deps/grib_dumper_class_xml.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_dumper_class_xml.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_errors.Plo b/src/.deps/grib_errors.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_errors.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_expression.Plo b/src/.deps/grib_expression.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_expression.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_expression_class_accessor.Plo b/src/.deps/grib_expression_class_accessor.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_expression_class_accessor.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_expression_class_binop.Plo b/src/.deps/grib_expression_class_binop.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_expression_class_binop.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_expression_class_double.Plo b/src/.deps/grib_expression_class_double.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_expression_class_double.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_expression_class_functor.Plo b/src/.deps/grib_expression_class_functor.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_expression_class_functor.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_expression_class_is_in_dict.Plo b/src/.deps/grib_expression_class_is_in_dict.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_expression_class_is_in_dict.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_expression_class_is_in_list.Plo b/src/.deps/grib_expression_class_is_in_list.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_expression_class_is_in_list.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_expression_class_is_integer.Plo b/src/.deps/grib_expression_class_is_integer.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_expression_class_is_integer.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_expression_class_length.Plo b/src/.deps/grib_expression_class_length.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_expression_class_length.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_expression_class_long.Plo b/src/.deps/grib_expression_class_long.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_expression_class_long.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_expression_class_string.Plo b/src/.deps/grib_expression_class_string.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_expression_class_string.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_expression_class_string_compare.Plo b/src/.deps/grib_expression_class_string_compare.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_expression_class_string_compare.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_expression_class_sub_string.Plo b/src/.deps/grib_expression_class_sub_string.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_expression_class_sub_string.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_expression_class_true.Plo b/src/.deps/grib_expression_class_true.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_expression_class_true.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_expression_class_unop.Plo b/src/.deps/grib_expression_class_unop.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_expression_class_unop.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_fieldset.Plo b/src/.deps/grib_fieldset.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_fieldset.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_filepool.Plo b/src/.deps/grib_filepool.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_filepool.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_gaussian_reduced.Plo b/src/.deps/grib_gaussian_reduced.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_gaussian_reduced.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_geography.Plo b/src/.deps/grib_geography.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_geography.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_handle.Plo b/src/.deps/grib_handle.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_handle.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_hash_array.Plo b/src/.deps/grib_hash_array.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_hash_array.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_hash_keys.Plo b/src/.deps/grib_hash_keys.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_hash_keys.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_header_compute.Plo b/src/.deps/grib_header_compute.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_header_compute.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_iarray.Plo b/src/.deps/grib_iarray.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_iarray.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_ibmfloat.Plo b/src/.deps/grib_ibmfloat.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_ibmfloat.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_ieeefloat.Plo b/src/.deps/grib_ieeefloat.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_ieeefloat.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_index.Plo b/src/.deps/grib_index.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_index.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_io.Plo b/src/.deps/grib_io.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_io.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_iterator.Plo b/src/.deps/grib_iterator.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_iterator.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_iterator_class.Plo b/src/.deps/grib_iterator_class.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_iterator_class.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_iterator_class_gaussian.Plo b/src/.deps/grib_iterator_class_gaussian.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_iterator_class_gaussian.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_iterator_class_gaussian_reduced.Plo b/src/.deps/grib_iterator_class_gaussian_reduced.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_iterator_class_gaussian_reduced.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_iterator_class_gen.Plo b/src/.deps/grib_iterator_class_gen.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_iterator_class_gen.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_iterator_class_lambert_azimuthal_equal_area.Plo b/src/.deps/grib_iterator_class_lambert_azimuthal_equal_area.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_iterator_class_lambert_azimuthal_equal_area.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_iterator_class_lambert_conformal.Plo b/src/.deps/grib_iterator_class_lambert_conformal.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_iterator_class_lambert_conformal.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_iterator_class_latlon.Plo b/src/.deps/grib_iterator_class_latlon.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_iterator_class_latlon.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_iterator_class_latlon_reduced.Plo b/src/.deps/grib_iterator_class_latlon_reduced.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_iterator_class_latlon_reduced.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_iterator_class_polar_stereographic.Plo b/src/.deps/grib_iterator_class_polar_stereographic.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_iterator_class_polar_stereographic.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_iterator_class_regular.Plo b/src/.deps/grib_iterator_class_regular.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_iterator_class_regular.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_itrie.Plo b/src/.deps/grib_itrie.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_itrie.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_jasper_encoding.Plo b/src/.deps/grib_jasper_encoding.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_jasper_encoding.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_keys_iterator.Plo b/src/.deps/grib_keys_iterator.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_keys_iterator.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_lex.Plo b/src/.deps/grib_lex.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_lex.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_loader_from_handle.Plo b/src/.deps/grib_loader_from_handle.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_loader_from_handle.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_memory.Plo b/src/.deps/grib_memory.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_memory.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_nearest.Plo b/src/.deps/grib_nearest.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_nearest.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_nearest_class.Plo b/src/.deps/grib_nearest_class.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_nearest_class.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_nearest_class_gen.Plo b/src/.deps/grib_nearest_class_gen.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_nearest_class_gen.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_nearest_class_lambert_conformal.Plo b/src/.deps/grib_nearest_class_lambert_conformal.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_nearest_class_lambert_conformal.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_nearest_class_latlon_reduced.Plo b/src/.deps/grib_nearest_class_latlon_reduced.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_nearest_class_latlon_reduced.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_nearest_class_reduced.Plo b/src/.deps/grib_nearest_class_reduced.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_nearest_class_reduced.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_nearest_class_regular.Plo b/src/.deps/grib_nearest_class_regular.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_nearest_class_regular.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_nearest_class_sh.Plo b/src/.deps/grib_nearest_class_sh.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_nearest_class_sh.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_openjpeg_encoding.Plo b/src/.deps/grib_openjpeg_encoding.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_openjpeg_encoding.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_parse_utils.Plo b/src/.deps/grib_parse_utils.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_parse_utils.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_query.Plo b/src/.deps/grib_query.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_query.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_rules.Plo b/src/.deps/grib_rules.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_rules.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_sarray.Plo b/src/.deps/grib_sarray.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_sarray.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_scaling.Plo b/src/.deps/grib_scaling.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_scaling.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_templates.Plo b/src/.deps/grib_templates.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_templates.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_timer.Plo b/src/.deps/grib_timer.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_timer.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_trie.Plo b/src/.deps/grib_trie.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_trie.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_util.Plo b/src/.deps/grib_util.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_util.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_value.Plo b/src/.deps/grib_value.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_value.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_vdarray.Plo b/src/.deps/grib_vdarray.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_vdarray.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_viarray.Plo b/src/.deps/grib_viarray.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_viarray.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_vsarray.Plo b/src/.deps/grib_vsarray.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_vsarray.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/grib_yacc.Plo b/src/.deps/grib_yacc.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/grib_yacc.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/md5.Plo b/src/.deps/md5.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/src/.deps/md5.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 5b6c0dd..2d36fcb 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -23,6 +23,7 @@ list( APPEND grib_api_srcs
     action_class_concept.c
     action_class_hash_array.c
     action_class_set.c
+    action_class_set_sarray.c
     action_class_set_darray.c
     action_class_set_iarray.c
     action_class_noop.c
@@ -31,6 +32,7 @@ list( APPEND grib_api_srcs
     action_class_close.c
     action_class_variable.c
     action_class_modify.c
+    action_class_transient_darray.c
     eccodes.c
     grib_accessor.c
     grib_concept.c
@@ -55,6 +57,8 @@ list( APPEND grib_api_srcs
     grib_accessor_class_bufr_data_array.c
     grib_accessor_class_bufr_data_element.c
     grib_accessor_class_bufr_group.c
+    grib_accessor_class_bufr_string_values.c
+    grib_accessor_class_pack_bufr_values.c
     grib_accessor_class_unpack_bufr_values.c
     grib_accessor_class_bufr_has_delayed_replication.c
     grib_accessor_class_apply_operators.c
@@ -72,6 +76,7 @@ list( APPEND grib_api_srcs
     grib_accessor_class_bytes.c
     grib_accessor_class.c
     grib_accessor_class_change_scanning_direction.c
+    grib_accessor_class_check_internal_version.c
     grib_accessor_class_codeflag.c
     grib_accessor_class_smart_table.c
     grib_accessor_class_smart_table_column.c
@@ -109,6 +114,7 @@ list( APPEND grib_api_srcs
     grib_accessor_class_g2latlon.c
     grib_accessor_class_g2lon.c
     grib_accessor_class_global_gaussian.c
+    grib_accessor_class_gaussian_grid_name.c
     grib_accessor_class_gen.c
     grib_accessor_class_getenv.c
     grib_accessor_class_gts_header.c
@@ -136,6 +142,7 @@ list( APPEND grib_api_srcs
     grib_accessor_class_label.c
     grib_accessor_class_long.c
     grib_accessor_class_lookup.c
+    grib_accessor_class_octahedral_gaussian.c
     grib_accessor_class_octect_number.c
     grib_accessor_class_headers_only.c
     grib_accessor_class_padding.c
@@ -161,6 +168,7 @@ list( APPEND grib_api_srcs
     grib_accessor_class_spectral_truncation.c
     grib_accessor_class_time.c
     grib_accessor_class_transient.c
+    grib_accessor_class_transient_darray.c
     grib_accessor_class_values.c
     grib_accessor_class_simple_packing_error.c
     grib_accessor_class_data_simple_packing.c
@@ -227,6 +235,8 @@ list( APPEND grib_api_srcs
     grib_accessor_class_statistics_spectral.c
     grib_accessor_class_unsigned.c
     grib_accessor_class_unsigned_bits.c
+    grib_accessor_class_raw.c
+    grib_accessor_class_bufr_extract_subsets.c
     grib_accessor_class_spd.c
     grib_accessor_class_sum.c
     grib_accessor_class_to_integer.c
@@ -390,6 +400,6 @@ ecbuild_add_library(TARGET    eccodes
                     ${CMATH_LIBRARIES}  )
 
 
-install( FILES grib_api.h eccodes.h eccodes_windef.h DESTINATION include )
-install( FILES ${CMAKE_CURRENT_BINARY_DIR}/eccodes_version.h DESTINATION include )
+install( FILES grib_api.h eccodes.h eccodes_windef.h DESTINATION ${INSTALL_INCLUDE_DIR} )
+install( FILES ${CMAKE_CURRENT_BINARY_DIR}/eccodes_version.h DESTINATION ${INSTALL_INCLUDE_DIR} )
 
diff --git a/src/Makefile b/src/Makefile
deleted file mode 100644
index c02908d..0000000
--- a/src/Makefile
+++ /dev/null
@@ -1,1707 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# src/Makefile.  Generated from Makefile.in by configure.
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-# See http://www.delorie.com/gnu/docs/automake/automake_48.html
-
-
-
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/eccodes
-pkgincludedir = $(includedir)/eccodes
-pkglibdir = $(libdir)/eccodes
-pkglibexecdir = $(libexecdir)/eccodes
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = x86_64-suse-linux-gnu
-host_triplet = x86_64-suse-linux-gnu
-subdir = src
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(srcdir)/config.h.in $(srcdir)/eccodes_version.h.in \
-	$(top_srcdir)/config/depcomp $(include_HEADERS) \
-	$(noinst_HEADERS) README TODO
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES = eccodes_version.h
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-am__objects_1 = action.lo action_class_alias.lo action_class_gen.lo \
-	action_class_if.lo action_class_switch.lo \
-	grib_accessor_class_g1fcperiod.lo \
-	grib_accessor_class_g1end_of_interval_monthly.lo \
-	grib_accessor_class_mars_param.lo action_class_section.lo \
-	action_class_list.lo action_class_while.lo action_class_put.lo \
-	action_class_meta.lo action_class_remove.lo \
-	action_class_rename.lo action_class_assert.lo \
-	action_class_template.lo action_class_trigger.lo \
-	action_class_when.lo action_class_concept.lo \
-	action_class_hash_array.lo action_class_set.lo \
-	action_class_set_darray.lo action_class_set_iarray.lo \
-	action_class_noop.lo action_class_write.lo \
-	action_class_print.lo action_class_close.lo \
-	action_class_variable.lo action_class_modify.lo \
-	grib_accessor.lo grib_concept.lo grib_hash_array.lo \
-	grib_bufr_descriptor.lo grib_bufr_descriptors_array.lo \
-	grib_darray.lo grib_sarray.lo grib_iarray.lo grib_vdarray.lo \
-	grib_vsarray.lo grib_viarray.lo grib_accessor_class_array.lo \
-	grib_accessor_class_assert.lo grib_accessor_class_ascii.lo \
-	grib_accessor_class_bit.lo grib_accessor_class_bitmap.lo \
-	grib_accessor_class_bits.lo \
-	grib_accessor_class_bits_per_value.lo \
-	grib_accessor_class_bufr_data.lo \
-	grib_accessor_class_bufr_data_array.lo \
-	grib_accessor_class_bufr_data_element.lo \
-	grib_accessor_class_bufr_elements_table.lo \
-	grib_accessor_class_bufr_group.lo grib_accessor_class_group.lo \
-	grib_accessor_class_unpack_bufr_values.lo \
-	grib_accessor_class_bufr_has_delayed_replication.lo \
-	grib_accessor_class_apply_operators.lo \
-	grib_accessor_class_non_alpha.lo \
-	grib_accessor_class_g1bitmap.lo \
-	grib_accessor_class_g2bitmap.lo grib_accessor_class_concept.lo \
-	grib_accessor_class_hash_array.lo \
-	grib_accessor_class_decimal_precision.lo \
-	grib_accessor_class_divdouble.lo \
-	grib_accessor_class_budgdate.lo \
-	grib_accessor_class_validity_date.lo \
-	grib_accessor_class_validity_time.lo \
-	grib_accessor_class_bytes.lo grib_accessor_class.lo \
-	grib_accessor_class_change_scanning_direction.lo \
-	grib_accessor_class_codeflag.lo \
-	grib_accessor_class_smart_table.lo \
-	grib_accessor_class_smart_table_column.lo \
-	grib_accessor_class_codetable.lo \
-	grib_accessor_class_codetable_units.lo \
-	grib_accessor_class_codetable_title.lo \
-	grib_accessor_class_count_file.lo \
-	grib_accessor_class_count_total.lo \
-	grib_accessor_class_double.lo grib_accessor_class_element.lo \
-	grib_accessor_class_evaluate.lo grib_accessor_class_g1area.lo \
-	grib_accessor_class_g1date.lo \
-	grib_accessor_class_g1monthlydate.lo \
-	grib_accessor_class_library_version.lo \
-	grib_accessor_class_when.lo \
-	grib_accessor_class_g1verificationdate.lo \
-	grib_accessor_class_g1day_of_the_year_date.lo \
-	grib_accessor_class_g1_half_byte_codeflag.lo \
-	grib_accessor_class_g1forecastmonth.lo \
-	grib_accessor_class_g1step_range.lo \
-	grib_accessor_class_g2step_range.lo \
-	grib_accessor_class_data_g22order_packing.lo \
-	grib_accessor_class_mars_step.lo \
-	grib_accessor_class_message_copy.lo \
-	grib_accessor_class_dictionary.lo \
-	grib_accessor_class_g1param.lo grib_accessor_class_g1p1p2.lo \
-	grib_accessor_class_g1_increment.lo \
-	grib_accessor_class_latlon_increment.lo \
-	grib_accessor_class_g2date.lo grib_accessor_class_g2level.lo \
-	grib_accessor_class_g2step.lo \
-	grib_accessor_class_g2end_step.lo \
-	grib_accessor_class_g2latlon.lo grib_accessor_class_g2lon.lo \
-	grib_accessor_class_global_gaussian.lo \
-	grib_accessor_class_gen.lo grib_accessor_class_gts_header.lo \
-	grib_accessor_class_ifs_param.lo grib_accessor_class_int16.lo \
-	grib_accessor_class_int16_little_endian.lo \
-	grib_accessor_class_int32.lo \
-	grib_accessor_class_int32_little_endian.lo \
-	grib_accessor_class_int64.lo \
-	grib_accessor_class_int64_little_endian.lo \
-	grib_accessor_class_int8.lo grib_accessor_class_uint16.lo \
-	grib_accessor_class_uint16_little_endian.lo \
-	grib_accessor_class_uint32.lo \
-	grib_accessor_class_uint32_little_endian.lo \
-	grib_accessor_class_uint64.lo \
-	grib_accessor_class_uint64_little_endian.lo \
-	grib_accessor_class_uint8.lo grib_accessor_class_blob.lo \
-	grib_accessor_class_julian_day.lo \
-	grib_accessor_class_latlonvalues.lo \
-	grib_accessor_class_latitudes.lo \
-	grib_accessor_class_longitudes.lo \
-	grib_accessor_class_missing.lo \
-	grib_accessor_class_offset_file.lo \
-	grib_accessor_class_scale.lo \
-	grib_accessor_class_from_scale_factor_scaled_value.lo \
-	grib_accessor_class_times.lo grib_accessor_class_forward.lo \
-	grib_accessor_class_g2bitmap_present.lo \
-	grib_accessor_class_ibmfloat.lo \
-	grib_accessor_class_ieeefloat.lo \
-	grib_accessor_class_constant.lo \
-	grib_accessor_class_iterator.lo grib_accessor_class_message.lo \
-	grib_accessor_class_nearest.lo grib_accessor_class_box.lo \
-	grib_accessor_class_ksec1expver.lo \
-	grib_accessor_class_laplacian.lo grib_accessor_class_label.lo \
-	grib_accessor_class_long.lo grib_accessor_class_lookup.lo \
-	grib_accessor_class_octect_number.lo \
-	grib_accessor_class_headers_only.lo \
-	grib_accessor_class_padding.lo grib_accessor_class_pad.lo \
-	grib_accessor_class_padto.lo grib_accessor_class_padtoeven.lo \
-	grib_accessor_class_padtomultiple.lo \
-	grib_accessor_class_section_padding.lo \
-	grib_accessor_class_section_pointer.lo \
-	grib_accessor_class_position.lo grib_accessor_class_signed.lo \
-	grib_accessor_class_signed_bits.lo \
-	grib_accessor_class_section.lo \
-	grib_accessor_class_step_in_units.lo \
-	grib_accessor_class_section_length.lo \
-	grib_accessor_class_g1_message_length.lo \
-	grib_accessor_class_g1_section4_length.lo \
-	grib_accessor_class_size.lo \
-	grib_accessor_class_scale_values.lo \
-	grib_accessor_class_offset_values.lo \
-	grib_accessor_class_sprintf.lo grib_accessor_class_getenv.lo \
-	grib_accessor_class_round.lo \
-	grib_accessor_class_spectral_truncation.lo \
-	grib_accessor_class_time.lo grib_accessor_class_transient.lo \
-	grib_accessor_class_values.lo \
-	grib_accessor_class_simple_packing_error.lo \
-	grib_accessor_class_data_simple_packing.lo \
-	grib_accessor_class_data_ccsds_packing.lo \
-	grib_accessor_class_count_missing.lo \
-	grib_accessor_class_data_sh_packed.lo \
-	grib_accessor_class_data_sh_unpacked.lo \
-	grib_accessor_class_number_of_values_data_raw_packing.lo \
-	grib_accessor_class_data_g1simple_packing.lo \
-	grib_accessor_class_data_g1shsimple_packing.lo \
-	grib_accessor_class_data_shsimple_packing.lo \
-	grib_accessor_class_data_constant_field.lo \
-	grib_accessor_class_data_dummy_field.lo \
-	grib_2order_packer_simple.lo grib_accessor_class_variable.lo \
-	grib_accessor_class_second_order_bits_per_value.lo \
-	grib_accessor_class_data_g2simple_packing.lo \
-	grib_accessor_class_data_g2simple_packing_with_preprocessing.lo \
-	grib_accessor_class_data_g2shsimple_packing.lo \
-	grib_accessor_class_data_g2complex_packing.lo \
-	grib_accessor_class_data_2order_packing.lo \
-	grib_accessor_class_data_2order_packing_count.lo \
-	grib_accessor_class_data_g1second_order_row_by_row_packing.lo \
-	grib_accessor_class_data_g1second_order_constant_width_packing.lo \
-	grib_accessor_class_data_g1second_order_general_packing.lo \
-	grib_accessor_class_data_g1second_order_general_extended_packing.lo \
-	grib_accessor_class_g2grid.lo \
-	grib_accessor_class_unexpanded_descriptors.lo \
-	grib_accessor_class_expanded_descriptors.lo \
-	grib_accessor_class_bufrdc_expanded_descriptors.lo \
-	grib_accessor_class_data_apply_bitmap.lo \
-	grib_accessor_class_data_apply_boustrophedonic.lo \
-	grib_accessor_class_data_apply_boustrophedonic_bitmap.lo \
-	grib_accessor_class_data_secondary_bitmap.lo \
-	grib_accessor_class_data_g1secondary_bitmap.lo \
-	grib_accessor_class_data_g2secondary_bitmap.lo \
-	grib_accessor_class_data_jpeg2000_packing.lo \
-	grib_accessor_class_data_png_packing.lo \
-	grib_accessor_class_data_raw_packing.lo \
-	grib_accessor_class_data_complex_packing.lo \
-	grib_accessor_class_data_g1complex_packing.lo \
-	grib_accessor_class_gds_not_present_bitmap.lo \
-	grib_accessor_class_data_apply_gdsnotpresent.lo \
-	grib_accessor_class_gds_is_present.lo \
-	grib_accessor_class_select_step_template.lo \
-	grib_accessor_class_local_definition.lo \
-	grib_accessor_class_g2_eps.lo \
-	grib_accessor_class_g2_chemical.lo \
-	grib_accessor_class_g2_mars_labeling.lo \
-	grib_accessor_class_md5.lo grib_jasper_encoding.lo \
-	grib_openjpeg_encoding.lo action_class_set_missing.lo \
-	grib_accessor_class_number_of_points.lo \
-	grib_accessor_class_suppressed.lo grib_index.lo \
-	grib_accessor_class_number_of_points_gaussian.lo \
-	grib_accessor_class_number_of_values.lo \
-	grib_accessor_class_number_of_coded_values.lo \
-	grib_accessor_class_g1number_of_coded_values_sh_complex.lo \
-	grib_accessor_class_g1number_of_coded_values_sh_simple.lo \
-	grib_accessor_class_dirty.lo grib_accessor_class_statistics.lo \
-	grib_accessor_class_statistics_spectral.lo \
-	grib_accessor_class_unsigned.lo \
-	grib_accessor_class_unsigned_bits.lo \
-	grib_accessor_class_spd.lo grib_accessor_class_sum.lo \
-	grib_accessor_class_to_integer.lo \
-	grib_accessor_class_to_double.lo \
-	grib_accessor_class_to_string.lo \
-	grib_accessor_class_sexagesimal2decimal.lo \
-	grib_accessor_class_vector.lo \
-	grib_accessor_class_long_vector.lo grib_gaussian_reduced.lo \
-	grib_accessor_class_abstract_vector.lo \
-	grib_accessor_class_abstract_long_vector.lo \
-	grib_loader_from_handle.lo grib_bits.lo grib_timer.lo \
-	grib_ibmfloat.lo grib_ieeefloat.lo \
-	grib_accessor_class_reference_value_error.lo grib_memory.lo \
-	grib_buffer.lo grib_dumper.lo grib_dumper_class_serialize.lo \
-	grib_dumper_class_debug.lo grib_dumper_class_default.lo \
-	grib_dumper_class_keys.lo grib_dumper_class_json.lo \
-	grib_dumper_class_xml.lo grib_dumper_class_c_code.lo \
-	grib_dumper_class_wmo.lo grib_dumper_class.lo grib_context.lo \
-	grib_date.lo grib_fieldset.lo grib_filepool.lo \
-	grib_geography.lo grib_handle.lo grib_header_compute.lo \
-	grib_hash_keys.lo grib_io.lo grib_trie.lo grib_itrie.lo \
-	grib_rules.lo grib_keys_iterator.lo grib_parse_utils.lo \
-	grib_query.lo grib_scaling.lo grib_templates.lo \
-	grib_dependency.lo grib_value.lo grib_errors.lo \
-	grib_expression_class_binop.lo \
-	grib_expression_class_is_in_dict.lo \
-	grib_expression_class_true.lo \
-	grib_expression_class_string_compare.lo \
-	grib_expression_class_unop.lo grib_expression_class_functor.lo \
-	grib_expression_class_accessor.lo \
-	grib_expression_class_is_in_list.lo \
-	grib_expression_class_is_integer.lo \
-	grib_expression_class_length.lo grib_expression_class_long.lo \
-	grib_expression_class_double.lo \
-	grib_expression_class_string.lo \
-	grib_expression_class_sub_string.lo grib_box.lo \
-	grib_box_class.lo grib_box_class_gen.lo \
-	grib_box_class_regular_gaussian.lo \
-	grib_box_class_reduced_gaussian.lo grib_nearest.lo \
-	grib_nearest_class.lo grib_nearest_class_gen.lo \
-	grib_nearest_class_regular.lo grib_nearest_class_reduced.lo \
-	grib_nearest_class_latlon_reduced.lo grib_nearest_class_sh.lo \
-	grib_nearest_class_lambert_conformal.lo \
-	grib_iterator_class_polar_stereographic.lo \
-	grib_iterator_class_lambert_azimuthal_equal_area.lo \
-	grib_iterator_class_lambert_conformal.lo grib_iterator.lo \
-	grib_iterator_class.lo grib_iterator_class_gaussian.lo \
-	grib_iterator_class_gaussian_reduced.lo \
-	grib_iterator_class_latlon_reduced.lo \
-	grib_iterator_class_gen.lo grib_iterator_class_latlon.lo \
-	grib_iterator_class_regular.lo grib_expression.lo grib_util.lo \
-	compile.lo functions.lo grib_api_version.lo
-am_libeccodes_la_OBJECTS = $(am__objects_1) eccodes.lo grib_yacc.lo \
-	grib_lex.lo md5.lo
-libeccodes_la_OBJECTS = $(am_libeccodes_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-libeccodes_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(libeccodes_la_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_P = $(am__v_P_$(V))
-am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I.
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = $(libeccodes_la_SOURCES)
-DIST_SOURCES = $(libeccodes_la_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-HEADERS = $(include_HEADERS) $(noinst_HEADERS)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
-	$(LISP)config.h.in
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing aclocal-1.13
-AEC_DIR = 
-AMTAR = $${TAR-tar}
-AM_DEFAULT_VERBOSITY = 1
-AR = ar
-AUTOCONF = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoconf
-AUTOHEADER = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoheader
-AUTOMAKE = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing automake-1.13
-AWK = gawk
-CC = gcc
-CCDEPMODE = depmode=gcc3
-CCSDS_TEST = 
-CFLAGS = -g -O2
-CPP = gcc -E
-CPPFLAGS = 
-CYGPATH_W = echo
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DEVEL_RULES = dummy.am
-DLLTOOL = false
-DSYMUTIL = 
-DUMPBIN = 
-ECCODES_AGE = 0
-ECCODES_CURRENT = 1
-ECCODES_DEFINITION_PATH = ${datarootdir}/eccodes/definitions
-ECCODES_MAIN_VERSION = 0.10.0
-ECCODES_MAJOR_VERSION = 0
-ECCODES_MINOR_VERSION = 10
-ECCODES_PATCH_VERSION = 0
-ECCODES_REVISION = 0
-ECCODES_SAMPLES_PATH = ${datarootdir}/eccodes/samples
-ECCODES_VERSION_STR = 0.10.0
-ECHO_C = 
-ECHO_N = -n
-ECHO_T = 
-EGREP = /usr/bin/grep -E
-EMOS_LIB = 
-EXEEXT = 
-F77 = gfortran
-F90_CHECK = examples/F90
-F90_MODULE_FLAG = -I
-FC = gfortran
-FCFLAGS = -g -O2
-FFLAGS = -g -O2
-FGREP = /usr/bin/grep -F
-FORTRAN_MOD = fortran
-GREP = /usr/bin/grep
-GRIB_API_INC = /tmp/masn/git/grib_api/eccodes/src
-GRIB_API_LIB = /tmp/masn/git/grib_api/eccodes/src/grib_api.a
-GRIB_DEVEL = 0
-IFS_SAMPLES_DIR = ${datarootdir}/eccodes/ifs_samples
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-JASPER_DIR = system
-JPEG_TEST = jpeg.sh
-LD = /usr/x86_64-suse-linux/bin/ld -m elf_x86_64
-LDFLAGS = 
-LEX = flex
-LEXLIB = -lfl
-LEX_OUTPUT_ROOT = lex.yy
-LIBOBJS = 
-LIBS = -lm -ljasper 
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LIBTOOL_DEPS = config/ltmain.sh
-LIB_AEC = 
-LIB_JASPER = -ljasper
-LIB_OPENJPEG = 
-LIB_PNG = 
-LINUX_DISTRIBUTION_NAME = openSUSE 13.1 (x86_64)
-LINUX_DISTRIBUTION_VERSION = 
-LIPO = 
-LN_S = ln -s
-LTLIBOBJS = 
-MAKEINFO = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing makeinfo
-MANIFEST_TOOL = :
-MKDIR_P = /usr/bin/mkdir -p
-NETCDF_LDFLAGS = 
-NM = /usr/bin/nm -B
-NMEDIT = 
-NUMPY_INCLUDE = /usr/local/apps/python/2.7.8-01/lib/python2.7/site-packages/numpy/core/include
-OBJDUMP = objdump
-OBJEXT = o
-OPENJPEG_DIR = system
-OTOOL = 
-OTOOL64 = 
-PACKAGE = eccodes
-PACKAGE_BUGREPORT = Software.Support at ecmwf.int
-PACKAGE_NAME = eccodes
-PACKAGE_STRING = eccodes  
-PACKAGE_TARNAME = eccodes
-PACKAGE_URL = 
-PACKAGE_VERSION = 0.10.0
-PATH_SEPARATOR = :
-PERL = 
-PERLDIR = perl
-PERL_INSTALL_OPTIONS = LIB=NONE/perl
-PERL_MAKE_OPTIONS = 
-PYTHON = /usr/local/apps/python/2.7.8-01/bin/python
-PYTHON_CFLAGS = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7 -fno-strict-aliasing -O3 -fpic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
-PYTHON_CHECK = examples/python
-PYTHON_CONFIG = /usr/local/apps/python/2.7.8-01/bin/python2.7-config
-PYTHON_DATA_HANDLER = numpy
-PYTHON_EXEC_PREFIX = ${exec_prefix}
-PYTHON_INCLUDES = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7
-PYTHON_LDFLAGS = -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic
-PYTHON_LIBS = -lpthread -ldl -lutil -lm -lpython2.7
-PYTHON_PLATFORM = linux2
-PYTHON_PREFIX = ${prefix}
-PYTHON_VERSION = 2.7
-RANLIB = ranlib
-RM = rm -f
-RPM_CONFIGURE_ARGS =  '--enable-python' '--disable-shared' 'CC=gcc' 'F77=gfortran' 'FC=gfortran'
-RPM_HOST_CPU = x86_64
-RPM_HOST_OS = linux-gnu
-RPM_HOST_VENDOR = suse
-RPM_RELEASE = 1
-SED = /usr/bin/sed
-SET_MAKE = 
-SHELL = /bin/sh
-STRIP = strip
-VERSION = 0.10.0
-WARN_PEDANTIC = -pedantic -Wall
-WERROR = 
-YACC = bison -y
-YFLAGS = 
-abs_builddir = /tmp/masn/git/grib_api/eccodes/src
-abs_srcdir = /tmp/masn/git/grib_api/eccodes/src
-abs_top_builddir = /tmp/masn/git/grib_api/eccodes
-abs_top_srcdir = /tmp/masn/git/grib_api/eccodes
-ac_ct_AR = ar
-ac_ct_CC = gcc
-ac_ct_DUMPBIN = 
-ac_ct_F77 = 
-ac_ct_FC = 
-am__include = include
-am__leading_dot = .
-am__quote = 
-am__tar = $${TAR-tar} chof - "$$tardir"
-am__untar = $${TAR-tar} xf -
-bindir = ${exec_prefix}/bin
-build = x86_64-suse-linux-gnu
-build_alias = 
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = suse
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-host = x86_64-suse-linux-gnu
-host_alias = 
-host_cpu = x86_64
-host_os = linux-gnu
-host_vendor = suse
-htmldir = ${docdir}
-includedir = ${prefix}/include
-infodir = ${datarootdir}/info
-install_sh = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localedir = ${datarootdir}/locale
-localstatedir = ${prefix}/var
-mandir = ${datarootdir}/man
-mkdir_p = $(MKDIR_P)
-oldincludedir = /usr/include
-pdfdir = ${docdir}
-pkgpyexecdir = ${pyexecdir}/eccodes
-pkgpythondir = ${pythondir}/eccodes
-prefix = /usr/local
-program_transform_name = s,x,x,
-psdir = ${docdir}
-pyexecdir = ${exec_prefix}/lib/python2.7/site-packages
-pythondir = ${prefix}/lib/python2.7/site-packages
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-srcdir = .
-sysconfdir = ${prefix}/etc
-target_alias = 
-top_build_prefix = ../
-top_builddir = ..
-top_srcdir = ..
-AM_CFLAGS = -pedantic -Wall
-AM_CPPFLAGS = -DECCODES_SAMPLES_PATH=\"$(ECCODES_SAMPLES_PATH)\" \
-	-DECCODES_DEFINITION_PATH=\"$(ECCODES_DEFINITION_PATH)\"
-
-
-# -DUSE_JPEG2000
-#  -DYYDEBUG
-lib_LTLIBRARIES = libeccodes.la
-include_HEADERS = grib_api.h eccodes.h eccodes_windef.h eccodes_version.h
-libeccodes_la_prototypes = \
-	action.c \
-	action_class_alias.c \
-	action_class_gen.c \
-	action_class_if.c \
-	action_class_switch.c \
-	grib_accessor_class_g1fcperiod.c \
-	grib_accessor_class_g1end_of_interval_monthly.c \
-	grib_accessor_class_mars_param.c \
-	action_class_section.c \
-	action_class_list.c \
-	action_class_while.c \
-	action_class_put.c \
-	action_class_meta.c \
-	action_class_remove.c \
-	action_class_rename.c \
-	action_class_assert.c \
-	action_class_template.c \
-	action_class_trigger.c \
-	action_class_when.c \
-	action_class_concept.c \
-    action_class_hash_array.c \
-	action_class_set.c \
-	action_class_set_darray.c \
-	action_class_set_iarray.c \
-	action_class_noop.c \
-	action_class_write.c \
-	action_class_print.c \
-	action_class_close.c \
-	action_class_variable.c \
-	action_class_modify.c \
-	grib_accessor.c \
-	grib_concept.c \
-	grib_hash_array.c \
-	grib_bufr_descriptor.c \
-	grib_bufr_descriptors_array.c \
-	grib_darray.c \
-	grib_sarray.c \
-	grib_iarray.c \
-	grib_vdarray.c \
-	grib_vsarray.c \
-	grib_viarray.c \
-	grib_accessor_class_array.c \
-	grib_accessor_class_assert.c \
-	grib_accessor_class_ascii.c \
-	grib_accessor_class_bit.c \
-	grib_accessor_class_bitmap.c \
-	grib_accessor_class_bits.c  \
-	grib_accessor_class_bits_per_value.c \
-	grib_accessor_class_bufr_data.c \
-	grib_accessor_class_bufr_data_array.c \
-	grib_accessor_class_bufr_data_element.c \
-	grib_accessor_class_bufr_elements_table.c \
-	grib_accessor_class_bufr_group.c \
-	grib_accessor_class_group.c \
-	grib_accessor_class_unpack_bufr_values.c \
-	grib_accessor_class_bufr_has_delayed_replication.c \
-	grib_accessor_class_apply_operators.c \
-	grib_accessor_class_non_alpha.c \
-	grib_accessor_class_g1bitmap.c \
-	grib_accessor_class_g2bitmap.c \
-	grib_accessor_class_concept.c \
-	grib_accessor_class_hash_array.c \
-	grib_accessor_class_decimal_precision.c \
-	grib_accessor_class_divdouble.c \
-	grib_accessor_class_budgdate.c \
-	grib_accessor_class_validity_date.c \
-	grib_accessor_class_validity_time.c \
-	grib_accessor_class_bytes.c \
-	grib_accessor_class.c \
-	grib_accessor_class_change_scanning_direction.c \
-	grib_accessor_class_codeflag.c \
-	grib_accessor_class_smart_table.c \
-	grib_accessor_class_smart_table_column.c \
-	grib_accessor_class_codetable.c \
-	grib_accessor_class_codetable_units.c \
-	grib_accessor_class_codetable_title.c \
-	grib_accessor_class_count_file.c \
-	grib_accessor_class_count_total.c \
-	grib_accessor_class_double.c \
-	grib_accessor_class_element.c \
-	grib_accessor_class_evaluate.c \
-	grib_accessor_class_g1area.c \
-	grib_accessor_class_g1date.c \
-	grib_accessor_class_g1monthlydate.c \
-	grib_accessor_class_library_version.c \
-	grib_accessor_class_when.c \
-	grib_accessor_class_g1verificationdate.c \
-	grib_accessor_class_g1day_of_the_year_date.c \
-	grib_accessor_class_g1_half_byte_codeflag.c \
-	grib_accessor_class_g1forecastmonth.c \
-	grib_accessor_class_g1step_range.c \
-	grib_accessor_class_g2step_range.c \
-	grib_accessor_class_data_g22order_packing.c \
-	grib_accessor_class_mars_step.c \
-	grib_accessor_class_message_copy.c \
-	grib_accessor_class_dictionary.c \
-	grib_accessor_class_g1param.c \
-	grib_accessor_class_g1p1p2.c \
-	grib_accessor_class_g1_increment.c \
-	grib_accessor_class_latlon_increment.c \
-	grib_accessor_class_g2date.c \
-	grib_accessor_class_g2level.c \
-	grib_accessor_class_g2step.c \
-	grib_accessor_class_g2end_step.c \
-	grib_accessor_class_g2latlon.c \
-	grib_accessor_class_g2lon.c \
-	grib_accessor_class_global_gaussian.c \
-	grib_accessor_class_gen.c \
-	grib_accessor_class_gts_header.c \
-	grib_accessor_class_ifs_param.c \
-	grib_accessor_class_int16.c \
-	grib_accessor_class_int16_little_endian.c \
-	grib_accessor_class_int32.c \
-	grib_accessor_class_int32_little_endian.c \
-	grib_accessor_class_int64.c \
-	grib_accessor_class_int64_little_endian.c \
-	grib_accessor_class_int8.c \
-	grib_accessor_class_uint16.c \
-	grib_accessor_class_uint16_little_endian.c \
-	grib_accessor_class_uint32.c \
-	grib_accessor_class_uint32_little_endian.c \
-	grib_accessor_class_uint64.c \
-	grib_accessor_class_uint64_little_endian.c \
-	grib_accessor_class_uint8.c \
-	grib_accessor_class_blob.c \
-	grib_accessor_class_julian_day.c \
-	grib_accessor_class_latlonvalues.c \
-	grib_accessor_class_latitudes.c \
-	grib_accessor_class_longitudes.c \
-	grib_accessor_class_missing.c \
-	grib_accessor_class_offset_file.c \
-	grib_accessor_class_scale.c \
-	grib_accessor_class_from_scale_factor_scaled_value.c \
-	grib_accessor_class_times.c \
-	grib_accessor_class_forward.c \
-	grib_accessor_class_g2bitmap_present.c \
-	grib_accessor_class_ibmfloat.c \
-	grib_accessor_class_ieeefloat.c \
-	grib_accessor_class_constant.c \
-	grib_accessor_class_iterator.c \
-	grib_accessor_class_message.c \
-	grib_accessor_class_nearest.c \
-	grib_accessor_class_box.c \
-	grib_accessor_class_ksec1expver.c \
-	grib_accessor_class_laplacian.c \
-	grib_accessor_class_label.c \
-	grib_accessor_class_long.c \
-	grib_accessor_class_lookup.c \
-	grib_accessor_class_octect_number.c \
-	grib_accessor_class_headers_only.c \
-	grib_accessor_class_padding.c \
-	grib_accessor_class_pad.c \
-	grib_accessor_class_padto.c \
-	grib_accessor_class_padtoeven.c \
-	grib_accessor_class_padtomultiple.c \
-	grib_accessor_class_section_padding.c \
-	grib_accessor_class_section_pointer.c \
-	grib_accessor_class_position.c \
-	grib_accessor_class_signed.c \
-	grib_accessor_class_signed_bits.c \
-	grib_accessor_class_section.c \
-	grib_accessor_class_step_in_units.c \
-	grib_accessor_class_section_length.c \
-	grib_accessor_class_g1_message_length.c \
-	grib_accessor_class_g1_section4_length.c \
-	grib_accessor_class_size.c \
-	grib_accessor_class_scale_values.c \
-	grib_accessor_class_offset_values.c \
-	grib_accessor_class_sprintf.c \
-	grib_accessor_class_getenv.c \
-	grib_accessor_class_round.c \
-	grib_accessor_class_spectral_truncation.c \
-	grib_accessor_class_time.c \
-	grib_accessor_class_transient.c \
-	grib_accessor_class_values.c \
-	grib_accessor_class_simple_packing_error.c \
-	grib_accessor_class_data_simple_packing.c \
-	grib_accessor_class_data_ccsds_packing.c \
-	grib_accessor_class_count_missing.c \
-	grib_accessor_class_data_sh_packed.c \
-	grib_accessor_class_data_sh_unpacked.c \
-	grib_accessor_class_number_of_values_data_raw_packing.c \
-	grib_accessor_class_data_g1simple_packing.c \
-	grib_accessor_class_data_g1shsimple_packing.c \
-	grib_accessor_class_data_shsimple_packing.c \
-	grib_accessor_class_data_constant_field.c \
-	grib_accessor_class_data_dummy_field.c \
-	grib_2order_packer_simple.c \
-	grib_accessor_class_variable.c \
-	grib_accessor_class_second_order_bits_per_value.c \
-	grib_accessor_class_data_g2simple_packing.c \
-	grib_accessor_class_data_g2simple_packing_with_preprocessing.c \
-	grib_accessor_class_data_g2shsimple_packing.c \
-	grib_accessor_class_data_g2complex_packing.c \
-	grib_accessor_class_data_2order_packing.c \
-	grib_accessor_class_data_2order_packing_count.c \
-	grib_accessor_class_data_g1second_order_row_by_row_packing.c \
-	grib_accessor_class_data_g1second_order_constant_width_packing.c \
-	grib_accessor_class_data_g1second_order_general_packing.c \
-	grib_accessor_class_data_g1second_order_general_extended_packing.c \
-	grib_accessor_class_g2grid.c \
-	grib_accessor_class_unexpanded_descriptors.c \
-	grib_accessor_class_expanded_descriptors.c \
-	grib_accessor_class_bufrdc_expanded_descriptors.c \
-	grib_accessor_class_data_apply_bitmap.c \
-	grib_accessor_class_data_apply_boustrophedonic.c \
-	grib_accessor_class_data_apply_boustrophedonic_bitmap.c \
-	grib_accessor_class_data_secondary_bitmap.c \
-	grib_accessor_class_data_g1secondary_bitmap.c \
-	grib_accessor_class_data_g2secondary_bitmap.c \
-	grib_accessor_class_data_jpeg2000_packing.c \
-	grib_accessor_class_data_png_packing.c \
-	grib_accessor_class_data_raw_packing.c \
-	grib_accessor_class_data_complex_packing.c \
-	grib_accessor_class_data_g1complex_packing.c \
-	grib_accessor_class_gds_not_present_bitmap.c \
-	grib_accessor_class_data_apply_gdsnotpresent.c \
-	grib_accessor_class_gds_is_present.c \
-	grib_accessor_class_select_step_template.c \
-	grib_accessor_class_local_definition.c \
-	grib_accessor_class_g2_eps.c \
-	grib_accessor_class_g2_chemical.c \
-	grib_accessor_class_g2_mars_labeling.c \
-	grib_accessor_class_md5.c \
-	grib_jasper_encoding.c \
-	grib_openjpeg_encoding.c \
-	action_class_set_missing.c \
-	grib_accessor_class_number_of_points.c \
-	grib_accessor_class_suppressed.c \
-	grib_index.c \
-	grib_accessor_class_number_of_points_gaussian.c \
-	grib_accessor_class_number_of_values.c \
-	grib_accessor_class_number_of_coded_values.c \
-	grib_accessor_class_g1number_of_coded_values_sh_complex.c \
-	grib_accessor_class_g1number_of_coded_values_sh_simple.c \
-	grib_accessor_class_dirty.c \
-	grib_accessor_class_statistics.c \
-	grib_accessor_class_statistics_spectral.c \
-	grib_accessor_class_unsigned.c  \
-	grib_accessor_class_unsigned_bits.c \
-	grib_accessor_class_spd.c \
-	grib_accessor_class_sum.c \
-	grib_accessor_class_to_integer.c \
-	grib_accessor_class_to_double.c \
-	grib_accessor_class_to_string.c \
-	grib_accessor_class_sexagesimal2decimal.c \
-	grib_accessor_class_vector.c \
-	grib_accessor_class_long_vector.c \
-	grib_gaussian_reduced.c \
-	grib_accessor_class_abstract_vector.c \
-	grib_accessor_class_abstract_long_vector.c \
-	grib_loader_from_handle.c  \
-	grib_bits.c \
-	grib_timer.c \
-	grib_ibmfloat.c \
-	grib_ieeefloat.c \
-	grib_accessor_class_reference_value_error.c \
-	grib_memory.c \
-	grib_buffer.c \
-	grib_dumper.c \
-	grib_dumper_class_serialize.c \
-	grib_dumper_class_debug.c \
-	grib_dumper_class_default.c \
-	grib_dumper_class_keys.c \
-	grib_dumper_class_json.c \
-	grib_dumper_class_xml.c \
-	grib_dumper_class_c_code.c \
-	grib_dumper_class_wmo.c \
-	grib_dumper_class.c \
-	grib_context.c \
-	grib_date.c \
-	grib_fieldset.c \
-	grib_filepool.c \
-	grib_geography.c \
-	grib_handle.c \
-	grib_header_compute.c \
-	grib_hash_keys.c \
-	grib_io.c \
-	grib_trie.c \
-	grib_itrie.c \
-	grib_rules.c \
-	grib_keys_iterator.c \
-	grib_parse_utils.c \
-	grib_query.c \
-	grib_scaling.c \
-	grib_templates.c \
-	grib_dependency.c \
-	grib_value.c \
-	grib_errors.c \
-	grib_expression_class_binop.c \
-	grib_expression_class_is_in_dict.c \
-	grib_expression_class_true.c \
-	grib_expression_class_string_compare.c \
-	grib_expression_class_unop.c \
-	grib_expression_class_functor.c \
-	grib_expression_class_accessor.c \
-	grib_expression_class_is_in_list.c \
-	grib_expression_class_is_integer.c \
-	grib_expression_class_length.c \
-	grib_expression_class_long.c \
-	grib_expression_class_double.c \
-	grib_expression_class_string.c \
-	grib_expression_class_sub_string.c \
-	grib_box.c \
-	grib_box_class.c \
-	grib_box_class_gen.c \
-	grib_box_class_regular_gaussian.c \
-	grib_box_class_reduced_gaussian.c \
-	grib_nearest.c \
-	grib_nearest_class.c \
-	grib_nearest_class_gen.c \
-	grib_nearest_class_regular.c \
-	grib_nearest_class_reduced.c \
-	grib_nearest_class_latlon_reduced.c \
-	grib_nearest_class_sh.c \
-	grib_nearest_class_lambert_conformal.c \
-	grib_iterator_class_polar_stereographic.c \
-	grib_iterator_class_lambert_azimuthal_equal_area.c  \
-	grib_iterator_class_lambert_conformal.c \
-	grib_iterator.c \
-	grib_iterator_class.c \
-	grib_iterator_class_gaussian.c \
-	grib_iterator_class_gaussian_reduced.c \
-	grib_iterator_class_latlon_reduced.c \
-	grib_iterator_class_gen.c \
-	grib_iterator_class_latlon.c \
-	grib_iterator_class_regular.c \
-	grib_expression.c \
-	grib_util.c \
-	compile.c \
-	functions.c \
-	grib_api_version.c
-
-libeccodes_extra_prototypes = grib_bits_any_endian.c grib_bits_any_endian_simple.c
-libeccodes_la_SOURCES = $(libeccodes_la_prototypes) eccodes.c grib_yacc.c  grib_lex.c md5.c
-libeccodes_la_LIBADD = 
-libeccodes_la_DEPENDENCIES = grib_api.h $(libeccodes_la_LIBADD)
-libeccodes_la_LDFLAGS = -version-info $(ECCODES_CURRENT):$(ECCODES_REVISION):$(ECCODES_AGE)
-
-# set the include path
-INCLUDES = -I.
-CLEANFILES = libeccodes.la
-noinst_HEADERS = grib_api_internal.h \
-                 md5.h \
-                 grib_emoslib.h \
-                 grib_api_prototypes.h \
-                 grib_dumper_class.h \
-                 errors.pl \
-                 grib_dumper_factory.h \
-                 grib_accessor_class.h \
-                 grib_accessor_factory.h \
-                 grib_expression.h \
-                 grib_nearest_class.h \
-                 grib_nearest_factory.h \
-                 grib_box_class.h \
-                 grib_box_factory.h \
-                 grib_iterator_class.h \
-                 grib_iterator_factory.h \
-                 grib_templates.h \
-                 grib_yacc.h \
-                 grib2c.pl \
-                 grib_errors_internal.txt \
-                 grib_errors.txt
-
-EXTRA_DIST = dummy.am griby.y gribl.l grib_accessor_classes_hash.c \
-            grib_bits_fast_big_endian.c grib_bits_any_endian.c \
-            grib_bits_fast_big_endian_vector.c grib_bits_any_endian_vector.c \
-            grib_bits_fast_big_endian_simple.c grib_bits_any_endian_simple.c \
-            grib_bits_fast_big_endian_omp.c grib_bits_any_endian_omp.c \
-            encode_double_array.c grib_bits_ibmpow.c grib_bits_ibmpow_opt.c minmax_val.c \
-            CMakeLists.txt grib_api_version.c.in \
-            errors.pl make_class.pl make_hash_keys.ksh make_accessor_class_hash.ksh
-
-all: config.h
-	$(MAKE) $(AM_MAKEFLAGS) all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu src/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-config.h: stamp-h1
-	@if test ! -f $@; then rm -f stamp-h1; else :; fi
-	@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
-
-stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
-	@rm -f stamp-h1
-	cd $(top_builddir) && $(SHELL) ./config.status src/config.h
-$(srcdir)/config.h.in:  $(am__configure_deps) 
-	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
-	rm -f stamp-h1
-	touch $@
-
-distclean-hdr:
-	-rm -f config.h stamp-h1
-eccodes_version.h: $(top_builddir)/config.status $(srcdir)/eccodes_version.h.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
-	}
-
-uninstall-libLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
-	done
-
-clean-libLTLIBRARIES:
-	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-libeccodes.la: $(libeccodes_la_OBJECTS) $(libeccodes_la_DEPENDENCIES) $(EXTRA_libeccodes_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(libeccodes_la_LINK) -rpath $(libdir) $(libeccodes_la_OBJECTS) $(libeccodes_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-include ./$(DEPDIR)/action.Plo
-include ./$(DEPDIR)/action_class_alias.Plo
-include ./$(DEPDIR)/action_class_assert.Plo
-include ./$(DEPDIR)/action_class_close.Plo
-include ./$(DEPDIR)/action_class_concept.Plo
-include ./$(DEPDIR)/action_class_gen.Plo
-include ./$(DEPDIR)/action_class_hash_array.Plo
-include ./$(DEPDIR)/action_class_if.Plo
-include ./$(DEPDIR)/action_class_list.Plo
-include ./$(DEPDIR)/action_class_meta.Plo
-include ./$(DEPDIR)/action_class_modify.Plo
-include ./$(DEPDIR)/action_class_noop.Plo
-include ./$(DEPDIR)/action_class_print.Plo
-include ./$(DEPDIR)/action_class_put.Plo
-include ./$(DEPDIR)/action_class_remove.Plo
-include ./$(DEPDIR)/action_class_rename.Plo
-include ./$(DEPDIR)/action_class_section.Plo
-include ./$(DEPDIR)/action_class_set.Plo
-include ./$(DEPDIR)/action_class_set_darray.Plo
-include ./$(DEPDIR)/action_class_set_iarray.Plo
-include ./$(DEPDIR)/action_class_set_missing.Plo
-include ./$(DEPDIR)/action_class_switch.Plo
-include ./$(DEPDIR)/action_class_template.Plo
-include ./$(DEPDIR)/action_class_trigger.Plo
-include ./$(DEPDIR)/action_class_variable.Plo
-include ./$(DEPDIR)/action_class_when.Plo
-include ./$(DEPDIR)/action_class_while.Plo
-include ./$(DEPDIR)/action_class_write.Plo
-include ./$(DEPDIR)/compile.Plo
-include ./$(DEPDIR)/eccodes.Plo
-include ./$(DEPDIR)/functions.Plo
-include ./$(DEPDIR)/grib_2order_packer_simple.Plo
-include ./$(DEPDIR)/grib_accessor.Plo
-include ./$(DEPDIR)/grib_accessor_class.Plo
-include ./$(DEPDIR)/grib_accessor_class_abstract_long_vector.Plo
-include ./$(DEPDIR)/grib_accessor_class_abstract_vector.Plo
-include ./$(DEPDIR)/grib_accessor_class_apply_operators.Plo
-include ./$(DEPDIR)/grib_accessor_class_array.Plo
-include ./$(DEPDIR)/grib_accessor_class_ascii.Plo
-include ./$(DEPDIR)/grib_accessor_class_assert.Plo
-include ./$(DEPDIR)/grib_accessor_class_bit.Plo
-include ./$(DEPDIR)/grib_accessor_class_bitmap.Plo
-include ./$(DEPDIR)/grib_accessor_class_bits.Plo
-include ./$(DEPDIR)/grib_accessor_class_bits_per_value.Plo
-include ./$(DEPDIR)/grib_accessor_class_blob.Plo
-include ./$(DEPDIR)/grib_accessor_class_box.Plo
-include ./$(DEPDIR)/grib_accessor_class_budgdate.Plo
-include ./$(DEPDIR)/grib_accessor_class_bufr_data.Plo
-include ./$(DEPDIR)/grib_accessor_class_bufr_data_array.Plo
-include ./$(DEPDIR)/grib_accessor_class_bufr_data_element.Plo
-include ./$(DEPDIR)/grib_accessor_class_bufr_elements_table.Plo
-include ./$(DEPDIR)/grib_accessor_class_bufr_group.Plo
-include ./$(DEPDIR)/grib_accessor_class_bufr_has_delayed_replication.Plo
-include ./$(DEPDIR)/grib_accessor_class_bufrdc_expanded_descriptors.Plo
-include ./$(DEPDIR)/grib_accessor_class_bytes.Plo
-include ./$(DEPDIR)/grib_accessor_class_change_scanning_direction.Plo
-include ./$(DEPDIR)/grib_accessor_class_codeflag.Plo
-include ./$(DEPDIR)/grib_accessor_class_codetable.Plo
-include ./$(DEPDIR)/grib_accessor_class_codetable_title.Plo
-include ./$(DEPDIR)/grib_accessor_class_codetable_units.Plo
-include ./$(DEPDIR)/grib_accessor_class_concept.Plo
-include ./$(DEPDIR)/grib_accessor_class_constant.Plo
-include ./$(DEPDIR)/grib_accessor_class_count_file.Plo
-include ./$(DEPDIR)/grib_accessor_class_count_missing.Plo
-include ./$(DEPDIR)/grib_accessor_class_count_total.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_2order_packing.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_2order_packing_count.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_apply_bitmap.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_apply_boustrophedonic.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_apply_boustrophedonic_bitmap.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_apply_gdsnotpresent.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_ccsds_packing.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_complex_packing.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_constant_field.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_dummy_field.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_g1complex_packing.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_g1second_order_constant_width_packing.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_g1second_order_general_extended_packing.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_g1second_order_general_packing.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_g1second_order_row_by_row_packing.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_g1secondary_bitmap.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_g1shsimple_packing.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_g1simple_packing.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_g22order_packing.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_g2complex_packing.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_g2secondary_bitmap.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_g2shsimple_packing.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_g2simple_packing.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_g2simple_packing_with_preprocessing.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_jpeg2000_packing.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_png_packing.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_raw_packing.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_secondary_bitmap.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_sh_packed.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_sh_unpacked.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_shsimple_packing.Plo
-include ./$(DEPDIR)/grib_accessor_class_data_simple_packing.Plo
-include ./$(DEPDIR)/grib_accessor_class_decimal_precision.Plo
-include ./$(DEPDIR)/grib_accessor_class_dictionary.Plo
-include ./$(DEPDIR)/grib_accessor_class_dirty.Plo
-include ./$(DEPDIR)/grib_accessor_class_divdouble.Plo
-include ./$(DEPDIR)/grib_accessor_class_double.Plo
-include ./$(DEPDIR)/grib_accessor_class_element.Plo
-include ./$(DEPDIR)/grib_accessor_class_evaluate.Plo
-include ./$(DEPDIR)/grib_accessor_class_expanded_descriptors.Plo
-include ./$(DEPDIR)/grib_accessor_class_forward.Plo
-include ./$(DEPDIR)/grib_accessor_class_from_scale_factor_scaled_value.Plo
-include ./$(DEPDIR)/grib_accessor_class_g1_half_byte_codeflag.Plo
-include ./$(DEPDIR)/grib_accessor_class_g1_increment.Plo
-include ./$(DEPDIR)/grib_accessor_class_g1_message_length.Plo
-include ./$(DEPDIR)/grib_accessor_class_g1_section4_length.Plo
-include ./$(DEPDIR)/grib_accessor_class_g1area.Plo
-include ./$(DEPDIR)/grib_accessor_class_g1bitmap.Plo
-include ./$(DEPDIR)/grib_accessor_class_g1date.Plo
-include ./$(DEPDIR)/grib_accessor_class_g1day_of_the_year_date.Plo
-include ./$(DEPDIR)/grib_accessor_class_g1end_of_interval_monthly.Plo
-include ./$(DEPDIR)/grib_accessor_class_g1fcperiod.Plo
-include ./$(DEPDIR)/grib_accessor_class_g1forecastmonth.Plo
-include ./$(DEPDIR)/grib_accessor_class_g1monthlydate.Plo
-include ./$(DEPDIR)/grib_accessor_class_g1number_of_coded_values_sh_complex.Plo
-include ./$(DEPDIR)/grib_accessor_class_g1number_of_coded_values_sh_simple.Plo
-include ./$(DEPDIR)/grib_accessor_class_g1p1p2.Plo
-include ./$(DEPDIR)/grib_accessor_class_g1param.Plo
-include ./$(DEPDIR)/grib_accessor_class_g1step_range.Plo
-include ./$(DEPDIR)/grib_accessor_class_g1verificationdate.Plo
-include ./$(DEPDIR)/grib_accessor_class_g2_chemical.Plo
-include ./$(DEPDIR)/grib_accessor_class_g2_eps.Plo
-include ./$(DEPDIR)/grib_accessor_class_g2_mars_labeling.Plo
-include ./$(DEPDIR)/grib_accessor_class_g2bitmap.Plo
-include ./$(DEPDIR)/grib_accessor_class_g2bitmap_present.Plo
-include ./$(DEPDIR)/grib_accessor_class_g2date.Plo
-include ./$(DEPDIR)/grib_accessor_class_g2end_step.Plo
-include ./$(DEPDIR)/grib_accessor_class_g2grid.Plo
-include ./$(DEPDIR)/grib_accessor_class_g2latlon.Plo
-include ./$(DEPDIR)/grib_accessor_class_g2level.Plo
-include ./$(DEPDIR)/grib_accessor_class_g2lon.Plo
-include ./$(DEPDIR)/grib_accessor_class_g2step.Plo
-include ./$(DEPDIR)/grib_accessor_class_g2step_range.Plo
-include ./$(DEPDIR)/grib_accessor_class_gds_is_present.Plo
-include ./$(DEPDIR)/grib_accessor_class_gds_not_present_bitmap.Plo
-include ./$(DEPDIR)/grib_accessor_class_gen.Plo
-include ./$(DEPDIR)/grib_accessor_class_getenv.Plo
-include ./$(DEPDIR)/grib_accessor_class_global_gaussian.Plo
-include ./$(DEPDIR)/grib_accessor_class_group.Plo
-include ./$(DEPDIR)/grib_accessor_class_gts_header.Plo
-include ./$(DEPDIR)/grib_accessor_class_hash_array.Plo
-include ./$(DEPDIR)/grib_accessor_class_headers_only.Plo
-include ./$(DEPDIR)/grib_accessor_class_ibmfloat.Plo
-include ./$(DEPDIR)/grib_accessor_class_ieeefloat.Plo
-include ./$(DEPDIR)/grib_accessor_class_ifs_param.Plo
-include ./$(DEPDIR)/grib_accessor_class_int16.Plo
-include ./$(DEPDIR)/grib_accessor_class_int16_little_endian.Plo
-include ./$(DEPDIR)/grib_accessor_class_int32.Plo
-include ./$(DEPDIR)/grib_accessor_class_int32_little_endian.Plo
-include ./$(DEPDIR)/grib_accessor_class_int64.Plo
-include ./$(DEPDIR)/grib_accessor_class_int64_little_endian.Plo
-include ./$(DEPDIR)/grib_accessor_class_int8.Plo
-include ./$(DEPDIR)/grib_accessor_class_iterator.Plo
-include ./$(DEPDIR)/grib_accessor_class_julian_day.Plo
-include ./$(DEPDIR)/grib_accessor_class_ksec1expver.Plo
-include ./$(DEPDIR)/grib_accessor_class_label.Plo
-include ./$(DEPDIR)/grib_accessor_class_laplacian.Plo
-include ./$(DEPDIR)/grib_accessor_class_latitudes.Plo
-include ./$(DEPDIR)/grib_accessor_class_latlon_increment.Plo
-include ./$(DEPDIR)/grib_accessor_class_latlonvalues.Plo
-include ./$(DEPDIR)/grib_accessor_class_library_version.Plo
-include ./$(DEPDIR)/grib_accessor_class_local_definition.Plo
-include ./$(DEPDIR)/grib_accessor_class_long.Plo
-include ./$(DEPDIR)/grib_accessor_class_long_vector.Plo
-include ./$(DEPDIR)/grib_accessor_class_longitudes.Plo
-include ./$(DEPDIR)/grib_accessor_class_lookup.Plo
-include ./$(DEPDIR)/grib_accessor_class_mars_param.Plo
-include ./$(DEPDIR)/grib_accessor_class_mars_step.Plo
-include ./$(DEPDIR)/grib_accessor_class_md5.Plo
-include ./$(DEPDIR)/grib_accessor_class_message.Plo
-include ./$(DEPDIR)/grib_accessor_class_message_copy.Plo
-include ./$(DEPDIR)/grib_accessor_class_missing.Plo
-include ./$(DEPDIR)/grib_accessor_class_nearest.Plo
-include ./$(DEPDIR)/grib_accessor_class_non_alpha.Plo
-include ./$(DEPDIR)/grib_accessor_class_number_of_coded_values.Plo
-include ./$(DEPDIR)/grib_accessor_class_number_of_points.Plo
-include ./$(DEPDIR)/grib_accessor_class_number_of_points_gaussian.Plo
-include ./$(DEPDIR)/grib_accessor_class_number_of_values.Plo
-include ./$(DEPDIR)/grib_accessor_class_number_of_values_data_raw_packing.Plo
-include ./$(DEPDIR)/grib_accessor_class_octect_number.Plo
-include ./$(DEPDIR)/grib_accessor_class_offset_file.Plo
-include ./$(DEPDIR)/grib_accessor_class_offset_values.Plo
-include ./$(DEPDIR)/grib_accessor_class_pad.Plo
-include ./$(DEPDIR)/grib_accessor_class_padding.Plo
-include ./$(DEPDIR)/grib_accessor_class_padto.Plo
-include ./$(DEPDIR)/grib_accessor_class_padtoeven.Plo
-include ./$(DEPDIR)/grib_accessor_class_padtomultiple.Plo
-include ./$(DEPDIR)/grib_accessor_class_position.Plo
-include ./$(DEPDIR)/grib_accessor_class_reference_value_error.Plo
-include ./$(DEPDIR)/grib_accessor_class_round.Plo
-include ./$(DEPDIR)/grib_accessor_class_scale.Plo
-include ./$(DEPDIR)/grib_accessor_class_scale_values.Plo
-include ./$(DEPDIR)/grib_accessor_class_second_order_bits_per_value.Plo
-include ./$(DEPDIR)/grib_accessor_class_section.Plo
-include ./$(DEPDIR)/grib_accessor_class_section_length.Plo
-include ./$(DEPDIR)/grib_accessor_class_section_padding.Plo
-include ./$(DEPDIR)/grib_accessor_class_section_pointer.Plo
-include ./$(DEPDIR)/grib_accessor_class_select_step_template.Plo
-include ./$(DEPDIR)/grib_accessor_class_sexagesimal2decimal.Plo
-include ./$(DEPDIR)/grib_accessor_class_signed.Plo
-include ./$(DEPDIR)/grib_accessor_class_signed_bits.Plo
-include ./$(DEPDIR)/grib_accessor_class_simple_packing_error.Plo
-include ./$(DEPDIR)/grib_accessor_class_size.Plo
-include ./$(DEPDIR)/grib_accessor_class_smart_table.Plo
-include ./$(DEPDIR)/grib_accessor_class_smart_table_column.Plo
-include ./$(DEPDIR)/grib_accessor_class_spd.Plo
-include ./$(DEPDIR)/grib_accessor_class_spectral_truncation.Plo
-include ./$(DEPDIR)/grib_accessor_class_sprintf.Plo
-include ./$(DEPDIR)/grib_accessor_class_statistics.Plo
-include ./$(DEPDIR)/grib_accessor_class_statistics_spectral.Plo
-include ./$(DEPDIR)/grib_accessor_class_step_in_units.Plo
-include ./$(DEPDIR)/grib_accessor_class_sum.Plo
-include ./$(DEPDIR)/grib_accessor_class_suppressed.Plo
-include ./$(DEPDIR)/grib_accessor_class_time.Plo
-include ./$(DEPDIR)/grib_accessor_class_times.Plo
-include ./$(DEPDIR)/grib_accessor_class_to_double.Plo
-include ./$(DEPDIR)/grib_accessor_class_to_integer.Plo
-include ./$(DEPDIR)/grib_accessor_class_to_string.Plo
-include ./$(DEPDIR)/grib_accessor_class_transient.Plo
-include ./$(DEPDIR)/grib_accessor_class_uint16.Plo
-include ./$(DEPDIR)/grib_accessor_class_uint16_little_endian.Plo
-include ./$(DEPDIR)/grib_accessor_class_uint32.Plo
-include ./$(DEPDIR)/grib_accessor_class_uint32_little_endian.Plo
-include ./$(DEPDIR)/grib_accessor_class_uint64.Plo
-include ./$(DEPDIR)/grib_accessor_class_uint64_little_endian.Plo
-include ./$(DEPDIR)/grib_accessor_class_uint8.Plo
-include ./$(DEPDIR)/grib_accessor_class_unexpanded_descriptors.Plo
-include ./$(DEPDIR)/grib_accessor_class_unpack_bufr_values.Plo
-include ./$(DEPDIR)/grib_accessor_class_unsigned.Plo
-include ./$(DEPDIR)/grib_accessor_class_unsigned_bits.Plo
-include ./$(DEPDIR)/grib_accessor_class_validity_date.Plo
-include ./$(DEPDIR)/grib_accessor_class_validity_time.Plo
-include ./$(DEPDIR)/grib_accessor_class_values.Plo
-include ./$(DEPDIR)/grib_accessor_class_variable.Plo
-include ./$(DEPDIR)/grib_accessor_class_vector.Plo
-include ./$(DEPDIR)/grib_accessor_class_when.Plo
-include ./$(DEPDIR)/grib_api_version.Plo
-include ./$(DEPDIR)/grib_bits.Plo
-include ./$(DEPDIR)/grib_box.Plo
-include ./$(DEPDIR)/grib_box_class.Plo
-include ./$(DEPDIR)/grib_box_class_gen.Plo
-include ./$(DEPDIR)/grib_box_class_reduced_gaussian.Plo
-include ./$(DEPDIR)/grib_box_class_regular_gaussian.Plo
-include ./$(DEPDIR)/grib_buffer.Plo
-include ./$(DEPDIR)/grib_bufr_descriptor.Plo
-include ./$(DEPDIR)/grib_bufr_descriptors_array.Plo
-include ./$(DEPDIR)/grib_concept.Plo
-include ./$(DEPDIR)/grib_context.Plo
-include ./$(DEPDIR)/grib_darray.Plo
-include ./$(DEPDIR)/grib_date.Plo
-include ./$(DEPDIR)/grib_dependency.Plo
-include ./$(DEPDIR)/grib_dumper.Plo
-include ./$(DEPDIR)/grib_dumper_class.Plo
-include ./$(DEPDIR)/grib_dumper_class_c_code.Plo
-include ./$(DEPDIR)/grib_dumper_class_debug.Plo
-include ./$(DEPDIR)/grib_dumper_class_default.Plo
-include ./$(DEPDIR)/grib_dumper_class_json.Plo
-include ./$(DEPDIR)/grib_dumper_class_keys.Plo
-include ./$(DEPDIR)/grib_dumper_class_serialize.Plo
-include ./$(DEPDIR)/grib_dumper_class_wmo.Plo
-include ./$(DEPDIR)/grib_dumper_class_xml.Plo
-include ./$(DEPDIR)/grib_errors.Plo
-include ./$(DEPDIR)/grib_expression.Plo
-include ./$(DEPDIR)/grib_expression_class_accessor.Plo
-include ./$(DEPDIR)/grib_expression_class_binop.Plo
-include ./$(DEPDIR)/grib_expression_class_double.Plo
-include ./$(DEPDIR)/grib_expression_class_functor.Plo
-include ./$(DEPDIR)/grib_expression_class_is_in_dict.Plo
-include ./$(DEPDIR)/grib_expression_class_is_in_list.Plo
-include ./$(DEPDIR)/grib_expression_class_is_integer.Plo
-include ./$(DEPDIR)/grib_expression_class_length.Plo
-include ./$(DEPDIR)/grib_expression_class_long.Plo
-include ./$(DEPDIR)/grib_expression_class_string.Plo
-include ./$(DEPDIR)/grib_expression_class_string_compare.Plo
-include ./$(DEPDIR)/grib_expression_class_sub_string.Plo
-include ./$(DEPDIR)/grib_expression_class_true.Plo
-include ./$(DEPDIR)/grib_expression_class_unop.Plo
-include ./$(DEPDIR)/grib_fieldset.Plo
-include ./$(DEPDIR)/grib_filepool.Plo
-include ./$(DEPDIR)/grib_gaussian_reduced.Plo
-include ./$(DEPDIR)/grib_geography.Plo
-include ./$(DEPDIR)/grib_handle.Plo
-include ./$(DEPDIR)/grib_hash_array.Plo
-include ./$(DEPDIR)/grib_hash_keys.Plo
-include ./$(DEPDIR)/grib_header_compute.Plo
-include ./$(DEPDIR)/grib_iarray.Plo
-include ./$(DEPDIR)/grib_ibmfloat.Plo
-include ./$(DEPDIR)/grib_ieeefloat.Plo
-include ./$(DEPDIR)/grib_index.Plo
-include ./$(DEPDIR)/grib_io.Plo
-include ./$(DEPDIR)/grib_iterator.Plo
-include ./$(DEPDIR)/grib_iterator_class.Plo
-include ./$(DEPDIR)/grib_iterator_class_gaussian.Plo
-include ./$(DEPDIR)/grib_iterator_class_gaussian_reduced.Plo
-include ./$(DEPDIR)/grib_iterator_class_gen.Plo
-include ./$(DEPDIR)/grib_iterator_class_lambert_azimuthal_equal_area.Plo
-include ./$(DEPDIR)/grib_iterator_class_lambert_conformal.Plo
-include ./$(DEPDIR)/grib_iterator_class_latlon.Plo
-include ./$(DEPDIR)/grib_iterator_class_latlon_reduced.Plo
-include ./$(DEPDIR)/grib_iterator_class_polar_stereographic.Plo
-include ./$(DEPDIR)/grib_iterator_class_regular.Plo
-include ./$(DEPDIR)/grib_itrie.Plo
-include ./$(DEPDIR)/grib_jasper_encoding.Plo
-include ./$(DEPDIR)/grib_keys_iterator.Plo
-include ./$(DEPDIR)/grib_lex.Plo
-include ./$(DEPDIR)/grib_loader_from_handle.Plo
-include ./$(DEPDIR)/grib_memory.Plo
-include ./$(DEPDIR)/grib_nearest.Plo
-include ./$(DEPDIR)/grib_nearest_class.Plo
-include ./$(DEPDIR)/grib_nearest_class_gen.Plo
-include ./$(DEPDIR)/grib_nearest_class_lambert_conformal.Plo
-include ./$(DEPDIR)/grib_nearest_class_latlon_reduced.Plo
-include ./$(DEPDIR)/grib_nearest_class_reduced.Plo
-include ./$(DEPDIR)/grib_nearest_class_regular.Plo
-include ./$(DEPDIR)/grib_nearest_class_sh.Plo
-include ./$(DEPDIR)/grib_openjpeg_encoding.Plo
-include ./$(DEPDIR)/grib_parse_utils.Plo
-include ./$(DEPDIR)/grib_query.Plo
-include ./$(DEPDIR)/grib_rules.Plo
-include ./$(DEPDIR)/grib_sarray.Plo
-include ./$(DEPDIR)/grib_scaling.Plo
-include ./$(DEPDIR)/grib_templates.Plo
-include ./$(DEPDIR)/grib_timer.Plo
-include ./$(DEPDIR)/grib_trie.Plo
-include ./$(DEPDIR)/grib_util.Plo
-include ./$(DEPDIR)/grib_value.Plo
-include ./$(DEPDIR)/grib_vdarray.Plo
-include ./$(DEPDIR)/grib_viarray.Plo
-include ./$(DEPDIR)/grib_vsarray.Plo
-include ./$(DEPDIR)/grib_yacc.Plo
-include ./$(DEPDIR)/md5.Plo
-
-.c.o:
-	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-#	$(AM_V_CC)source='$<' object='$@' libtool=no \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(COMPILE) -c $<
-
-.c.obj:
-	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-#	$(AM_V_CC)source='$<' object='$@' libtool=no \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-#	$(AM_V_CC)source='$<' object='$@' libtool=yes \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-includeHEADERS: $(include_HEADERS)
-	@$(NORMAL_INSTALL)
-	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
-	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
-	done
-
-uninstall-includeHEADERS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS) config.h
-installdirs:
-	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-hdr distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-includeHEADERS
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLTLIBRARIES
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES
-
-.MAKE: all install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-hdr distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-includeHEADERS install-info install-info-am \
-	install-libLTLIBRARIES install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am uninstall-includeHEADERS \
-	uninstall-libLTLIBRARIES
-
-
-include $(DEVEL_RULES)
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/Makefile.am b/src/Makefile.am
index 88f0fd9..c267b15 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -37,12 +37,14 @@ libeccodes_la_prototypes= \
 	action_class_set.c \
 	action_class_set_darray.c \
 	action_class_set_iarray.c \
+	action_class_set_sarray.c \
 	action_class_noop.c \
 	action_class_write.c \
 	action_class_print.c \
 	action_class_close.c \
 	action_class_variable.c \
 	action_class_modify.c \
+	action_class_transient_darray.c \
 	grib_accessor.c \
 	grib_concept.c \
 	grib_hash_array.c \
@@ -66,6 +68,8 @@ libeccodes_la_prototypes= \
 	grib_accessor_class_bufr_data_element.c \
 	grib_accessor_class_bufr_elements_table.c \
 	grib_accessor_class_bufr_group.c \
+	grib_accessor_class_bufr_string_values.c \
+	grib_accessor_class_pack_bufr_values.c \
 	grib_accessor_class_group.c \
 	grib_accessor_class_unpack_bufr_values.c \
 	grib_accessor_class_bufr_has_delayed_replication.c \
@@ -83,6 +87,7 @@ libeccodes_la_prototypes= \
 	grib_accessor_class_bytes.c \
 	grib_accessor_class.c \
 	grib_accessor_class_change_scanning_direction.c \
+	grib_accessor_class_check_internal_version.c \
 	grib_accessor_class_codeflag.c \
 	grib_accessor_class_smart_table.c \
 	grib_accessor_class_smart_table_column.c \
@@ -120,6 +125,7 @@ libeccodes_la_prototypes= \
 	grib_accessor_class_g2latlon.c \
 	grib_accessor_class_g2lon.c \
 	grib_accessor_class_global_gaussian.c \
+	grib_accessor_class_gaussian_grid_name.c \
 	grib_accessor_class_gen.c \
 	grib_accessor_class_gts_header.c \
 	grib_accessor_class_ifs_param.c \
@@ -143,6 +149,7 @@ libeccodes_la_prototypes= \
 	grib_accessor_class_latitudes.c \
 	grib_accessor_class_longitudes.c \
 	grib_accessor_class_missing.c \
+	grib_accessor_class_octahedral_gaussian.c \
 	grib_accessor_class_offset_file.c \
 	grib_accessor_class_scale.c \
 	grib_accessor_class_from_scale_factor_scaled_value.c \
@@ -236,6 +243,7 @@ libeccodes_la_prototypes= \
 	grib_accessor_class_g2_eps.c \
 	grib_accessor_class_g2_chemical.c \
 	grib_accessor_class_g2_mars_labeling.c \
+	grib_accessor_class_transient_darray.c \
 	grib_accessor_class_md5.c \
 	grib_jasper_encoding.c \
 	grib_openjpeg_encoding.c \
@@ -253,6 +261,8 @@ libeccodes_la_prototypes= \
 	grib_accessor_class_statistics_spectral.c \
 	grib_accessor_class_unsigned.c  \
 	grib_accessor_class_unsigned_bits.c \
+	grib_accessor_class_raw.c \
+	grib_accessor_class_bufr_extract_subsets.c \
 	grib_accessor_class_spd.c \
 	grib_accessor_class_sum.c \
 	grib_accessor_class_to_integer.c \
diff --git a/src/Makefile.in b/src/Makefile.in
index 22eec1c..342275e 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -139,9 +139,10 @@ am__objects_1 = action.lo action_class_alias.lo action_class_gen.lo \
 	action_class_when.lo action_class_concept.lo \
 	action_class_hash_array.lo action_class_set.lo \
 	action_class_set_darray.lo action_class_set_iarray.lo \
-	action_class_noop.lo action_class_write.lo \
-	action_class_print.lo action_class_close.lo \
-	action_class_variable.lo action_class_modify.lo \
+	action_class_set_sarray.lo action_class_noop.lo \
+	action_class_write.lo action_class_print.lo \
+	action_class_close.lo action_class_variable.lo \
+	action_class_modify.lo action_class_transient_darray.lo \
 	grib_accessor.lo grib_concept.lo grib_hash_array.lo \
 	grib_bufr_descriptor.lo grib_bufr_descriptors_array.lo \
 	grib_darray.lo grib_sarray.lo grib_iarray.lo grib_vdarray.lo \
@@ -154,7 +155,10 @@ am__objects_1 = action.lo action_class_alias.lo action_class_gen.lo \
 	grib_accessor_class_bufr_data_array.lo \
 	grib_accessor_class_bufr_data_element.lo \
 	grib_accessor_class_bufr_elements_table.lo \
-	grib_accessor_class_bufr_group.lo grib_accessor_class_group.lo \
+	grib_accessor_class_bufr_group.lo \
+	grib_accessor_class_bufr_string_values.lo \
+	grib_accessor_class_pack_bufr_values.lo \
+	grib_accessor_class_group.lo \
 	grib_accessor_class_unpack_bufr_values.lo \
 	grib_accessor_class_bufr_has_delayed_replication.lo \
 	grib_accessor_class_apply_operators.lo \
@@ -169,6 +173,7 @@ am__objects_1 = action.lo action_class_alias.lo action_class_gen.lo \
 	grib_accessor_class_validity_time.lo \
 	grib_accessor_class_bytes.lo grib_accessor_class.lo \
 	grib_accessor_class_change_scanning_direction.lo \
+	grib_accessor_class_check_internal_version.lo \
 	grib_accessor_class_codeflag.lo \
 	grib_accessor_class_smart_table.lo \
 	grib_accessor_class_smart_table_column.lo \
@@ -201,6 +206,7 @@ am__objects_1 = action.lo action_class_alias.lo action_class_gen.lo \
 	grib_accessor_class_g2end_step.lo \
 	grib_accessor_class_g2latlon.lo grib_accessor_class_g2lon.lo \
 	grib_accessor_class_global_gaussian.lo \
+	grib_accessor_class_gaussian_grid_name.lo \
 	grib_accessor_class_gen.lo grib_accessor_class_gts_header.lo \
 	grib_accessor_class_ifs_param.lo grib_accessor_class_int16.lo \
 	grib_accessor_class_int16_little_endian.lo \
@@ -220,6 +226,7 @@ am__objects_1 = action.lo action_class_alias.lo action_class_gen.lo \
 	grib_accessor_class_latitudes.lo \
 	grib_accessor_class_longitudes.lo \
 	grib_accessor_class_missing.lo \
+	grib_accessor_class_octahedral_gaussian.lo \
 	grib_accessor_class_offset_file.lo \
 	grib_accessor_class_scale.lo \
 	grib_accessor_class_from_scale_factor_scaled_value.lo \
@@ -302,6 +309,7 @@ am__objects_1 = action.lo action_class_alias.lo action_class_gen.lo \
 	grib_accessor_class_g2_eps.lo \
 	grib_accessor_class_g2_chemical.lo \
 	grib_accessor_class_g2_mars_labeling.lo \
+	grib_accessor_class_transient_darray.lo \
 	grib_accessor_class_md5.lo grib_jasper_encoding.lo \
 	grib_openjpeg_encoding.lo action_class_set_missing.lo \
 	grib_accessor_class_number_of_points.lo \
@@ -315,6 +323,8 @@ am__objects_1 = action.lo action_class_alias.lo action_class_gen.lo \
 	grib_accessor_class_statistics_spectral.lo \
 	grib_accessor_class_unsigned.lo \
 	grib_accessor_class_unsigned_bits.lo \
+	grib_accessor_class_raw.lo \
+	grib_accessor_class_bufr_extract_subsets.lo \
 	grib_accessor_class_spd.lo grib_accessor_class_sum.lo \
 	grib_accessor_class_to_integer.lo \
 	grib_accessor_class_to_double.lo \
@@ -659,12 +669,14 @@ libeccodes_la_prototypes = \
 	action_class_set.c \
 	action_class_set_darray.c \
 	action_class_set_iarray.c \
+	action_class_set_sarray.c \
 	action_class_noop.c \
 	action_class_write.c \
 	action_class_print.c \
 	action_class_close.c \
 	action_class_variable.c \
 	action_class_modify.c \
+	action_class_transient_darray.c \
 	grib_accessor.c \
 	grib_concept.c \
 	grib_hash_array.c \
@@ -688,6 +700,8 @@ libeccodes_la_prototypes = \
 	grib_accessor_class_bufr_data_element.c \
 	grib_accessor_class_bufr_elements_table.c \
 	grib_accessor_class_bufr_group.c \
+	grib_accessor_class_bufr_string_values.c \
+	grib_accessor_class_pack_bufr_values.c \
 	grib_accessor_class_group.c \
 	grib_accessor_class_unpack_bufr_values.c \
 	grib_accessor_class_bufr_has_delayed_replication.c \
@@ -705,6 +719,7 @@ libeccodes_la_prototypes = \
 	grib_accessor_class_bytes.c \
 	grib_accessor_class.c \
 	grib_accessor_class_change_scanning_direction.c \
+	grib_accessor_class_check_internal_version.c \
 	grib_accessor_class_codeflag.c \
 	grib_accessor_class_smart_table.c \
 	grib_accessor_class_smart_table_column.c \
@@ -742,6 +757,7 @@ libeccodes_la_prototypes = \
 	grib_accessor_class_g2latlon.c \
 	grib_accessor_class_g2lon.c \
 	grib_accessor_class_global_gaussian.c \
+	grib_accessor_class_gaussian_grid_name.c \
 	grib_accessor_class_gen.c \
 	grib_accessor_class_gts_header.c \
 	grib_accessor_class_ifs_param.c \
@@ -765,6 +781,7 @@ libeccodes_la_prototypes = \
 	grib_accessor_class_latitudes.c \
 	grib_accessor_class_longitudes.c \
 	grib_accessor_class_missing.c \
+	grib_accessor_class_octahedral_gaussian.c \
 	grib_accessor_class_offset_file.c \
 	grib_accessor_class_scale.c \
 	grib_accessor_class_from_scale_factor_scaled_value.c \
@@ -858,6 +875,7 @@ libeccodes_la_prototypes = \
 	grib_accessor_class_g2_eps.c \
 	grib_accessor_class_g2_chemical.c \
 	grib_accessor_class_g2_mars_labeling.c \
+	grib_accessor_class_transient_darray.c \
 	grib_accessor_class_md5.c \
 	grib_jasper_encoding.c \
 	grib_openjpeg_encoding.c \
@@ -875,6 +893,8 @@ libeccodes_la_prototypes = \
 	grib_accessor_class_statistics_spectral.c \
 	grib_accessor_class_unsigned.c  \
 	grib_accessor_class_unsigned_bits.c \
+	grib_accessor_class_raw.c \
+	grib_accessor_class_bufr_extract_subsets.c \
 	grib_accessor_class_spd.c \
 	grib_accessor_class_sum.c \
 	grib_accessor_class_to_integer.c \
@@ -1126,8 +1146,10 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_set_darray.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_set_iarray.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_set_missing.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_set_sarray.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_switch.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_template.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_transient_darray.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_trigger.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_variable.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_when.Plo at am__quote@
@@ -1156,11 +1178,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bufr_data_array.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bufr_data_element.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bufr_elements_table.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bufr_extract_subsets.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bufr_group.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bufr_has_delayed_replication.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bufr_string_values.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bufrdc_expanded_descriptors.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bytes.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_change_scanning_direction.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_check_internal_version.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_codeflag.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_codetable.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_codetable_title.Plo at am__quote@
@@ -1243,6 +1268,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g2lon.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g2step.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g2step_range.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_gaussian_grid_name.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_gds_is_present.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_gds_not_present_bitmap.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_gen.Plo at am__quote@
@@ -1289,15 +1315,18 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_number_of_points_gaussian.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_number_of_values.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_number_of_values_data_raw_packing.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_octahedral_gaussian.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_octect_number.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_offset_file.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_offset_values.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_pack_bufr_values.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_pad.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_padding.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_padto.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_padtoeven.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_padtomultiple.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_position.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_raw.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_reference_value_error.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_round.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_scale.Plo at am__quote@
@@ -1329,6 +1358,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_to_integer.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_to_string.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_transient.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_transient_darray.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_uint16.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_uint16_little_endian.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_uint32.Plo at am__quote@
diff --git a/src/accessor.class b/src/accessor.class
index 8b4539e..701bb9d 100644
--- a/src/accessor.class
+++ b/src/accessor.class
@@ -33,6 +33,7 @@ static int compare(grib_accessor*, grib_accessor*);
 static int unpack_double_element(grib_accessor*,size_t i, double* val);
 static int unpack_double_subarray(grib_accessor*, double* val,size_t start,size_t len);
 static int clear(grib_accessor*);
+static grib_accessor* make_clone(grib_accessor*,grib_section*,int*);
 
 typedef struct grib_accessor_NAME {
     grib_accessor          att;
@@ -81,6 +82,7 @@ static grib_accessor_class _grib_accessor_class_NAME = {
     &unpack_double_element,     /* unpack only ith value          */
     &unpack_double_subarray,     /* unpack a subarray         */
     &clear,              		/* clear          */
+    &make_clone,               		/* clone accessor          */
 };
 
 
diff --git a/src/action.c b/src/action.c
index 5fba842..38dcd16 100644
--- a/src/action.c
+++ b/src/action.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -27,17 +27,35 @@ static void init_mutex() {
     pthread_mutexattr_destroy(&attr);
 
 }
+#elif GRIB_OMP_THREADS
+static int once = 0;
+static omp_nest_lock_t mutex1;
+
+static void init_mutex()
+{
+    GRIB_OMP_CRITICAL(lock_action_c)
+    {
+        if (once == 0)
+        {
+            omp_init_nest_lock(&mutex1);
+            once = 1;
+        }
+    }
+}
 #endif
 
 
 static void init(grib_action_class *c)
 {
+    GRIB_MUTEX_INIT_ONCE(&once,&init_mutex);
+    GRIB_MUTEX_LOCK(&mutex1);
     if(c && !c->inited)
     {
         init(c->super ? *(c->super) : NULL);
         c->init_class(c);
         c->inited = 1;
     }
+    GRIB_MUTEX_UNLOCK(&mutex1);
 }
 
 void grib_dump(grib_action* a, FILE* f, int l)
@@ -97,7 +115,7 @@ int grib_create_accessor(grib_section* p, grib_action* a,  grib_loader* h)
     {
         if(c->create_accessor) {
 			int ret;
-			GRIB_PTHREAD_ONCE(&once,&init_mutex);
+			GRIB_MUTEX_INIT_ONCE(&once,&init_mutex);
 			GRIB_MUTEX_LOCK(&mutex1);
             ret=c->create_accessor(p, a, h);
 			GRIB_MUTEX_UNLOCK(&mutex1);
@@ -113,13 +131,21 @@ int grib_create_accessor(grib_section* p, grib_action* a,  grib_loader* h)
 int grib_action_notify_change( grib_action* a, grib_accessor *observer, grib_accessor *observed)
 {
     grib_action_class *c = a->cclass;
+
+    GRIB_MUTEX_INIT_ONCE(&once,&init_mutex)
+    GRIB_MUTEX_LOCK(&mutex1)
+
     init(c);
     while(c)
     {
-        if(c->notify_change)
-            return c->notify_change(a,observer,observed);
+        if(c->notify_change) {
+            int result = c->notify_change(a,observer,observed);
+            GRIB_MUTEX_UNLOCK(&mutex1);
+            return result;
+        }
         c = c->super ? *(c->super) : NULL;
     }
+    GRIB_MUTEX_UNLOCK(&mutex1);
     Assert(0);
     return 0;
 }
diff --git a/src/action_class_alias.c b/src/action_class_alias.c
index 27e2eb1..46a068b 100644
--- a/src/action_class_alias.c
+++ b/src/action_class_alias.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -83,222 +83,229 @@ static void init_class(grib_action_class* c)
 
 grib_action* grib_action_create_alias(grib_context* context, const char* name, const char* arg1,const char* name_space,int flags)
 {
-	grib_action_alias* a                            ;
-	grib_action_class* c   =  grib_action_class_alias;
-	grib_action* act       = (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
+    grib_action_alias* a                            ;
+    grib_action_class* c   =  grib_action_class_alias;
+    grib_action* act       = (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
 
-	act->context = context;
+    act->context = context;
 
-	act->op           = NULL;
-	act->name         = grib_context_strdup_persistent(context, name);
-	if(name_space)
-		act->name_space =  grib_context_strdup_persistent(context, name_space);
+    act->op           = NULL;
+    act->name         = grib_context_strdup_persistent(context, name);
+    if(name_space)
+        act->name_space =  grib_context_strdup_persistent(context, name_space);
 
-	act->cclass       = c;
-	act->flags        = flags;
-	a                 = (grib_action_alias*)act;
-	a->target         = arg1 ? grib_context_strdup_persistent(context, arg1) : NULL;
+    act->cclass       = c;
+    act->flags        = flags;
+    a                 = (grib_action_alias*)act;
+    a->target         = arg1 ? grib_context_strdup_persistent(context, arg1) : NULL;
 
-	return act;
+    return act;
 }
 
 static void compile(grib_action* act, grib_compiler *compiler)
 {
-	grib_action_alias* a  = (grib_action_alias*)act;
-	fprintf(compiler->out,"%s = grib_action_create_alias(ctx,",compiler->var);
-	fprintf(compiler->out,"\"%s\",",act->name);
-	if(a->target) {
-		fprintf(compiler->out,"\"%s\",",a->target);
-	}
-	else
-	{
-		fprintf(compiler->out,"NULL,");
-	}
-	if(act->name_space) {
-		fprintf(compiler->out,"\"%s\",",act->name_space);
-	}
-	else
-	{
-		fprintf(compiler->out,"NULL,");
-	}
-	grib_compile_flags(compiler, act->flags);
-	fprintf(compiler->out,");");
-	fprintf(compiler->out,"\n");
+    grib_action_alias* a  = (grib_action_alias*)act;
+    fprintf(compiler->out,"%s = grib_action_create_alias(ctx,",compiler->var);
+    fprintf(compiler->out,"\"%s\",",act->name);
+    if(a->target) {
+        fprintf(compiler->out,"\"%s\",",a->target);
+    }
+    else
+    {
+        fprintf(compiler->out,"NULL,");
+    }
+    if(act->name_space) {
+        fprintf(compiler->out,"\"%s\",",act->name_space);
+    }
+    else
+    {
+        fprintf(compiler->out,"NULL,");
+    }
+    grib_compile_flags(compiler, act->flags);
+    fprintf(compiler->out,");");
+    fprintf(compiler->out,"\n");
 }
 
 static int same(const char* a,const char* b) 
 {
-	if(a == b) return 1;
-	if(a && b) return (strcmp(a,b) == 0);
-	return 0;
+    if(a == b) return 1;
+    if(a && b) return (strcmp(a,b) == 0);
+    return 0;
 }
 
 static int create_accessor( grib_section* p, grib_action* act,grib_loader *h)
 {
-	int i,j,id;
-	grib_action_alias* self = (grib_action_alias*)act;
-	grib_accessor *x=NULL ;
-	grib_accessor *y=NULL ;
-
-	/*if alias and target have the same name add only the namespace */
-	if (self->target && !strcmp(act->name,self->target) && act->name_space!=NULL) {
-		x = grib_find_accessor_fast(p->h,self->target);
-		if(x == NULL)
-		{
-			grib_context_log(p->h->context,GRIB_LOG_WARNING,"alias %s: cannot find %s",
-					act->name,self->target);
-			return GRIB_SUCCESS;
-		}
-
-		if (x->name_space==NULL) 
-			x->name_space=act->name_space;
-
-		i = 0;
-		while(i < MAX_ACCESSOR_NAMES) {
-			if(x->all_names[i] != NULL && !strcmp(x->all_names[i],act->name) ) {
-				if (x->all_name_spaces[i]==NULL) {
-					x->all_name_spaces[i] =  act->name_space;
-					return GRIB_SUCCESS;
-				} else if (!strcmp(x->all_name_spaces[i],act->name_space) ) {
-					return GRIB_SUCCESS;
-				}
-			}
-			i++;
-		}
-		i=0;
-		while(i < MAX_ACCESSOR_NAMES) {
-			if (x->all_names[i]==NULL) {
-				x->all_names[i]=act->name;
-				x->all_name_spaces[i] =  act->name_space;
-				return GRIB_SUCCESS;
-			}
-			i++;
-		}
-		grib_context_log(p->h->context,GRIB_LOG_FATAL,
-				"unable to alias %s : increase MAX_ACCESSOR_NAMES",act->name);
-
-		return GRIB_INTERNAL_ERROR;
-	}
-
-	/* if(self->target == NULL || (act->flags & GRIB_ACCESSOR_FLAG_OVERRIDE)) */
-	y = grib_find_accessor_fast(p->h,act->name);
-
-	/* delete old alias if already defined */
-	if ( y != NULL )
-	{
-		i=0;
-		while ( i < MAX_ACCESSOR_NAMES && y->all_names[i] )
-		{
-			if ( same ( y->all_names[i],act->name ) && same ( y->all_name_spaces[i],act->name_space ) )
-			{
-
-				grib_context_log ( p->h->context,GRIB_LOG_DEBUG,"alias %s.%s already defined for %s. Deleting old alias",
-						act->name_space,act->name,y->name );
-				/* printf("[%s %s]\n",y->all_names[i], y->all_name_spaces[i]); */
-
-				while ( i < MAX_ACCESSOR_NAMES-1 )
-				{
-					y->all_names[i]       = y->all_names[i+1];
-					y->all_name_spaces[i] = y->all_name_spaces[i+1];
-					i++;
-				}
-
-				y->all_names[MAX_ACCESSOR_NAMES-1]       =  NULL;
-				y->all_name_spaces[MAX_ACCESSOR_NAMES-1] =  NULL;
-
-				break;
-			}
-			i++;
-		}
-
-		if ( self->target == NULL )
-			return GRIB_SUCCESS;
-	}
-
-	if (!self->target) return GRIB_SUCCESS;
-
-	x = grib_find_accessor_fast(p->h,self->target);
-	if(x == NULL)
-	{
-		grib_context_log(p->h->context,GRIB_LOG_WARNING,"alias %s: cannot find %s",
-				act->name,self->target);
-		return GRIB_SUCCESS;
-	}
-
-	if (x->parent->h->use_trie) {
-		id=grib_hash_keys_get_id(x->parent->h->context->keys,act->name);
-
-		if (x->parent->h->accessors[id] != x) {
-			/*x->same=x->parent->h->accessors[id];*/
-			x->parent->h->accessors[id]=x;
-		}
-	}
-
-	i = 0;
-	while(i < MAX_ACCESSOR_NAMES) {
-		if(x->all_names[i] == NULL)
-		{
-			/* Only add entries if not already there */
-			int found = 0;
-			for(j=0; j<i && !found; ++j) {
-				int nameSame      = same(x->all_names[j], act->name);
-				int namespaceSame = same(x->all_name_spaces[j], act->name_space);
-				if (nameSame && namespaceSame) {
-					found = 1;
-				}
-			}
-			if (!found) {  /* Not there. So add them */
-				x->all_names[i]       =  act->name;
-				x->all_name_spaces[i] =  act->name_space;
-			}
-			return GRIB_SUCCESS;
-		}
-		i++;
-	}
-
-	for(i = 0 ; i < MAX_ACCESSOR_NAMES; i++)
-		grib_context_log(p->h->context,GRIB_LOG_ERROR,"alias %s= ( %s already bound to %s )",
-				act->name,self->target,x->all_names[i]);
-
-	return GRIB_SUCCESS;
+    int i,j,id;
+    grib_action_alias* self = (grib_action_alias*)act;
+    grib_accessor *x=NULL ;
+    grib_accessor *y=NULL ;
+
+    /*if alias and target have the same name add only the namespace */
+    if (self->target && !strcmp(act->name,self->target) && act->name_space!=NULL) {
+        x = grib_find_accessor_fast(p->h,self->target);
+        if(x == NULL)
+        {
+            grib_context_log(p->h->context,GRIB_LOG_DEBUG,"alias %s: cannot find %s (part 1)",
+                    act->name,self->target);
+            grib_context_log(p->h->context,GRIB_LOG_WARNING,"alias %s: cannot find %s",
+                    act->name,self->target);
+            return GRIB_SUCCESS;
+        }
+
+        if (x->name_space==NULL)
+            x->name_space=act->name_space;
+
+        grib_context_log(p->h->context, GRIB_LOG_DEBUG, "alias: add only namespace: %s.%s",
+                act->name_space, act->name);
+        i = 0;
+        while(i < MAX_ACCESSOR_NAMES) {
+            if(x->all_names[i] != NULL && !strcmp(x->all_names[i],act->name) ) {
+                if (x->all_name_spaces[i]==NULL) {
+                    x->all_name_spaces[i] =  act->name_space;
+                    return GRIB_SUCCESS;
+                } else if (!strcmp(x->all_name_spaces[i],act->name_space) ) {
+                    return GRIB_SUCCESS;
+                }
+            }
+            i++;
+        }
+        i=0;
+        while(i < MAX_ACCESSOR_NAMES) {
+            if (x->all_names[i]==NULL) {
+                x->all_names[i]=act->name;
+                x->all_name_spaces[i] =  act->name_space;
+                return GRIB_SUCCESS;
+            }
+            i++;
+        }
+        grib_context_log(p->h->context,GRIB_LOG_FATAL,
+                "unable to alias %s : increase MAX_ACCESSOR_NAMES",act->name);
+
+        return GRIB_INTERNAL_ERROR;
+    }
+
+    /* if(self->target == NULL || (act->flags & GRIB_ACCESSOR_FLAG_OVERRIDE)) */
+    y = grib_find_accessor_fast(p->h,act->name);
+
+    /* delete old alias if already defined */
+    if ( y != NULL )
+    {
+        i=0;
+        while ( i < MAX_ACCESSOR_NAMES && y->all_names[i] )
+        {
+            if ( same ( y->all_names[i],act->name ) && same ( y->all_name_spaces[i],act->name_space ) )
+            {
+                grib_context_log ( p->h->context,GRIB_LOG_DEBUG,"alias %s.%s already defined for %s. Deleting old alias",
+                        act->name_space,act->name,y->name );
+                /* printf("[%s %s]\n",y->all_names[i], y->all_name_spaces[i]); */
+
+                while ( i < MAX_ACCESSOR_NAMES-1 )
+                {
+                    y->all_names[i]       = y->all_names[i+1];
+                    y->all_name_spaces[i] = y->all_name_spaces[i+1];
+                    i++;
+                }
+
+                y->all_names[MAX_ACCESSOR_NAMES-1]       =  NULL;
+                y->all_name_spaces[MAX_ACCESSOR_NAMES-1] =  NULL;
+
+                break;
+            }
+            i++;
+        }
+
+        if ( self->target == NULL )
+            return GRIB_SUCCESS;
+    }
+
+    if (!self->target) return GRIB_SUCCESS;
+
+    x = grib_find_accessor_fast(p->h,self->target);
+    if(x == NULL)
+    {
+        grib_context_log(p->h->context,GRIB_LOG_DEBUG,"alias %s: cannot find %s (part 2)",
+                act->name,self->target);
+        grib_context_log(p->h->context,GRIB_LOG_WARNING,"alias %s: cannot find %s",
+                act->name,self->target);
+        return GRIB_SUCCESS;
+    }
+
+    if (grib_handle_of_accessor(x)->use_trie) {
+        id=grib_hash_keys_get_id(x->context->keys,act->name);
+
+        if (grib_handle_of_accessor(x)->accessors[id] != x) {
+            /*x->same=grib_handle_of_accessor(x)->accessors[id];*/
+            grib_handle_of_accessor(x)->accessors[id]=x;
+        }
+    }
+
+    i = 0;
+    while(i < MAX_ACCESSOR_NAMES) {
+        if(x->all_names[i] == NULL)
+        {
+            /* Only add entries if not already there */
+            int found = 0;
+            for(j=0; j<i && !found; ++j) {
+                int nameSame      = same(x->all_names[j], act->name);
+                int namespaceSame = same(x->all_name_spaces[j], act->name_space);
+                if (nameSame && namespaceSame) {
+                    found = 1;
+                }
+            }
+            if (!found) {  /* Not there. So add them */
+                x->all_names[i]       =  act->name;
+                x->all_name_spaces[i] =  act->name_space;
+                grib_context_log(p->h->context, GRIB_LOG_DEBUG, "alias %s.%s added (%s)",
+                        act->name_space, act->name, self->target );
+            }
+            return GRIB_SUCCESS;
+        }
+        i++;
+    }
+
+    for(i = 0 ; i < MAX_ACCESSOR_NAMES; i++)
+        grib_context_log(p->h->context,GRIB_LOG_ERROR,"alias %s= ( %s already bound to %s )",
+                act->name,self->target,x->all_names[i]);
+
+    return GRIB_SUCCESS;
 }
 
 static void dump( grib_action* act, FILE* f, int lvl)
 {
-	grib_action_alias* a = (grib_action_alias*)act;
-	int i =0;
-	for (i=0;i<lvl;i++)
-		grib_context_print(act->context,f,"     ");
-	if(a->target)
-		grib_context_print(act->context,f," alias %s  %s \n", act->name, a->target );
-	else
-		grib_context_print(act->context,f," unalias %s  \n", act->name);
+    grib_action_alias* a = (grib_action_alias*)act;
+    int i =0;
+    for (i=0;i<lvl;i++)
+        grib_context_print(act->context,f,"     ");
+    if(a->target)
+        grib_context_print(act->context,f," alias %s  %s \n", act->name, a->target );
+    else
+        grib_context_print(act->context,f," unalias %s  \n", act->name);
 }
 
 static void xref( grib_action* act, FILE* f,const char* path)
 {
-	grib_action_alias* a = (grib_action_alias*)act;
-	if(a->target) {
-		fprintf(f,"bless({name=>'%s', target=>'%s', path=>'%s'},'xref::alias'),\n", act->name, a->target,path );
-		if(act->name_space)
-			fprintf(f,"bless({name=>'%s.%s', target=>'%s', path=>'%s'},'xref::alias'),\n", act->name_space,act->name, a->target,path );
-	}
-	else
-	{
-		fprintf(f,"bless({name=>'%s',  path=>'%s'},'xref::unalias'),\n", act->name, path );
-		if(act->name_space)
-			fprintf(f,"bless({name=>'%s.%s', path=>'%s'},'xref::unalias'),\n", act->name_space,act->name, path );
-	}
+    grib_action_alias* a = (grib_action_alias*)act;
+    if(a->target) {
+        fprintf(f,"bless({name=>'%s', target=>'%s', path=>'%s'},'xref::alias'),\n", act->name, a->target,path );
+        if(act->name_space)
+            fprintf(f,"bless({name=>'%s.%s', target=>'%s', path=>'%s'},'xref::alias'),\n", act->name_space,act->name, a->target,path );
+    }
+    else
+    {
+        fprintf(f,"bless({name=>'%s',  path=>'%s'},'xref::unalias'),\n", act->name, path );
+        if(act->name_space)
+            fprintf(f,"bless({name=>'%s.%s', path=>'%s'},'xref::unalias'),\n", act->name_space,act->name, path );
+    }
 }
 
 static void destroy(grib_context* context,grib_action* act)
 {
-	grib_action_alias* a = (grib_action_alias*)act;
+    grib_action_alias* a = (grib_action_alias*)act;
 
-	if(a->target)
-		grib_context_free_persistent(context, a->target);
+    if(a->target)
+        grib_context_free_persistent(context, a->target);
 
-	grib_context_free_persistent(context, act->name);
-	grib_context_free_persistent(context, act->op);
-	grib_context_free_persistent(context, act->name_space);
+    grib_context_free_persistent(context, act->name);
+    grib_context_free_persistent(context, act->op);
+    grib_context_free_persistent(context, act->name_space);
 }
diff --git a/src/action_class_assert.c b/src/action_class_assert.c
index f2a3253..e7278ec 100644
--- a/src/action_class_assert.c
+++ b/src/action_class_assert.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -149,7 +149,7 @@ static int notify_change(grib_action* a, grib_accessor* observer,grib_accessor*
   int ret = GRIB_SUCCESS;
   long lres;
 
-  if ((ret = grib_expression_evaluate_long(observed->parent->h, self->expression,&lres))
+  if ((ret = grib_expression_evaluate_long(grib_handle_of_accessor(observed), self->expression,&lres))
        != GRIB_SUCCESS) return ret;
 
 
diff --git a/src/action_class_close.c b/src/action_class_close.c
index 1ef5ce5..b06f8be 100644
--- a/src/action_class_close.c
+++ b/src/action_class_close.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/action_class_concept.c b/src/action_class_concept.c
index 68874f4..1548d30 100644
--- a/src/action_class_concept.c
+++ b/src/action_class_concept.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -94,8 +94,47 @@ static void init_class(grib_action_class* c)
 }
 /* END_CLASS_IMP */
 
+#if GRIB_PTHREADS
+static pthread_once_t once  = PTHREAD_ONCE_INIT;
+static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
+
+static void init() {
+    pthread_mutexattr_t attr;
+    pthread_mutexattr_init(&attr);
+    pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
+    pthread_mutex_init(&mutex,&attr);
+    pthread_mutexattr_destroy(&attr);
+}
+#elif GRIB_OMP_THREADS
+static int once = 0;
+static omp_nest_lock_t mutex;
+
+static void init()
+{
+    GRIB_OMP_CRITICAL(lock_action_class_concept_c)
+    {
+        if (once == 0)
+        {
+            omp_init_nest_lock(&mutex);
+            once = 1;
+        }
+    }
+}
+#endif
+
 static grib_concept_value* get_concept(grib_handle* h,grib_action_concept* self);
 
+grib_concept_value* action_concept_get_concept(grib_accessor* a)
+{
+    return get_concept(grib_handle_of_accessor(a),(grib_action_concept*)a->creator);
+}
+
+int action_concept_get_nofail(grib_accessor* a)
+{
+    grib_action_concept* self = (grib_action_concept*)a->creator ;
+    return self->nofail;
+}
+
 grib_action* grib_action_create_concept( grib_context* context,
         const char* name,
         grib_concept_value* concept,
@@ -179,7 +218,7 @@ static void destroy(grib_context* context,grib_action* act)
     grib_context_free_persistent(context, self->basename);
 }
 
-static grib_concept_value* get_concept(grib_handle* h,grib_action_concept* self)
+static grib_concept_value* get_concept_impl(grib_handle* h,grib_action_concept* self)
 {
     char buf[1024]={0,};
     char master[1024]={0,};
@@ -257,170 +296,14 @@ static grib_concept_value* get_concept(grib_handle* h,grib_action_concept* self)
     return h->context->concepts[id];
 }
 
-const char* grib_concept_evaluate(grib_handle* h,grib_action* act)
-{
-    grib_action_concept* self = (grib_action_concept*) act;
-    grib_concept_value*  c = get_concept(h,self);
-    int match = 0;
-    const char* best = 0;
-    const char* prev = 0;
-
-    while(c)
-    {
-        grib_concept_condition* e = c->conditions;
-        int cnt = 0;
-        while(e)
-        {
-            long lval;
-            double dval;
-            long lres=0;
-            double dres=0.0;
-            const char *cval;
-            char buf[80];
-            char tmp[80];
-            size_t len = sizeof(buf);
-            size_t size=sizeof(tmp);
-            int err=0;
-            int ok = 0;
-            int type       = grib_expression_native_type(h,e->expression);
-
-            switch(type)
-            {
-            case GRIB_TYPE_LONG:
-                grib_expression_evaluate_long(h,e->expression,&lres);
-                ok =  (grib_get_long(h,e->name,&lval) == GRIB_SUCCESS) &&
-                        (lval == lres);
-                break;
-
-            case GRIB_TYPE_DOUBLE:
-                grib_expression_evaluate_double(h,e->expression,&dres);
-                ok = (grib_get_double(h,e->name,&dval) == GRIB_SUCCESS) &&
-                        (dval == dres);
-                break;
-
-            case GRIB_TYPE_STRING:
-                ok = (grib_get_string(h,e->name,buf,&len) == GRIB_SUCCESS) &&
-                ((cval = grib_expression_evaluate_string(h,e->expression,tmp,&size,&err)) != NULL) &&
-                (err==0) && (strcmp(buf,cval) == 0);
-                break;
-
-            default:
-                /* TODO: */
-                break;
-            }
-
-            if(!ok)
-                break;
-
-            e = e->next;
-            cnt++;
-        }
-
-        if(e == NULL)
-        {
-            if(cnt >= match) {
-                prev  = (cnt > match) ? NULL : best;
-                match = cnt;
-                best  = c->name;
-            }
-        }
-
-        c = c->next;
-    }
-
-    return best;
-}
-
-static int
-cmpstringp(const void *p1, const void *p2)
-{
-    /* The actual arguments to this function are "pointers to
-       pointers to char", but strcmp(3) arguments are "pointers
-       to char", hence the following cast plus dereference */
-    return strcmp(* (char * const *) p1, * (char * const *) p2);
-}
-
-#define MAX_NUM_CONCEPT_VALUES 40
-int grib_concept_apply(grib_handle* h,grib_action* act,const char* name)
+static grib_concept_value* get_concept(grib_handle* h, grib_action_concept* self)
 {
-    long lres=0;
-    double dres=0.0;
-    int err=0;
-    size_t count = 0;
-    size_t size;
-    grib_concept_condition* e=NULL;
-    grib_values values[1024];
-    char tmp[80][1024];
-    grib_action_concept* self = (grib_action_concept*) act;
-    grib_concept_value*  concepts = get_concept(h,self);
-    grib_concept_value* c=NULL;
-
-    Assert(concepts!=NULL);
-
-    c=(grib_concept_value*)grib_trie_get(concepts->index,name);
-
-    if (!c) c=(grib_concept_value*)grib_trie_get(concepts->index,"default");
-
-    if (!c){
-        err= self->nofail ? GRIB_SUCCESS : GRIB_CONCEPT_NO_MATCH;
-        if (err) {
-            size_t i = 0, count = 0;
-            char* all_concept_vals[MAX_NUM_CONCEPT_VALUES] = {NULL,}; /* sorted array containing concept values */
-            grib_concept_value* pCon = concepts;
-
-            grib_context_log(h->context,GRIB_LOG_ERROR, "concept: no match for %s=%s", act->name,name);
-
-            /* Create a list of all possible values for this concept and sort it */
-            while (pCon) {
-                if (i >= MAX_NUM_CONCEPT_VALUES)
-                    break;
-                all_concept_vals[i++] = pCon->name;
-                pCon = pCon->next;
-            }
-            count = i;
-            /* Printing out all values for concepts like paramId will be silly! */
-            if (count < MAX_NUM_CONCEPT_VALUES) {
-                fprintf(stderr, "Here are the possible values for concept %s:\n", act->name);
-                qsort(&all_concept_vals, count, sizeof(char*), cmpstringp);
-                for(i=0; i<count; ++i) {
-                    if (all_concept_vals[i]) {
-                        fprintf(stderr, "\t%s\n", all_concept_vals[i]);
-                    }
-                }
-            }
-        }
-        return err;
-    }
+    grib_concept_value* result = NULL;
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
+    GRIB_MUTEX_LOCK(&mutex);
 
-    e = c->conditions;
-    while(e)
-    {
-        Assert(count<1024);
-        values[count].name = e->name;
-
-        values[count].type = grib_expression_native_type(h,e->expression);
-        switch(values[count].type)
-        {
-        case GRIB_TYPE_LONG:
-            grib_expression_evaluate_long(h,e->expression,&lres);
-            values[count].long_value = lres;
-            break;
-        case GRIB_TYPE_DOUBLE:
-            grib_expression_evaluate_double(h,e->expression,&dres);
-            values[count].double_value = dres;
-            break;
-        case GRIB_TYPE_STRING:
-            size = sizeof(tmp[count]);
-            values[count].string_value = grib_expression_evaluate_string(h,e->expression,tmp[count],&size,&err);
-            break;
-        default:
-            return GRIB_NOT_IMPLEMENTED;
-            break;
-        }
-
-        count++;
-        e = e->next;
-    }
+    result = get_concept_impl(h, self);
 
-    return grib_set_values(h,values,count);
+    GRIB_MUTEX_UNLOCK(&mutex);
+    return result;
 }
diff --git a/src/action_class_gen.c b/src/action_class_gen.c
index f84199b..3eb6771 100644
--- a/src/action_class_gen.c
+++ b/src/action_class_gen.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -188,7 +188,7 @@ static int create_accessor( grib_section* p, grib_action* act, grib_loader *load
 static int notify_change(grib_action* act, grib_accessor * notified, grib_accessor* changed)
 {
     if(act->default_value)
-        return grib_pack_expression(notified,grib_arguments_get_expression(notified->parent->h,act->default_value,0));
+        return grib_pack_expression(notified,grib_arguments_get_expression(grib_handle_of_accessor(notified),act->default_value,0));
     return GRIB_SUCCESS;
 }
 
diff --git a/src/action_class_hash_array.c b/src/action_class_hash_array.c
index b8ff326..6cd3fc0 100644
--- a/src/action_class_hash_array.c
+++ b/src/action_class_hash_array.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/action_class_if.c b/src/action_class_if.c
index ef05db5..97cfa06 100644
--- a/src/action_class_if.c
+++ b/src/action_class_if.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -264,8 +264,8 @@ static grib_action* reparse(grib_action* a,grib_accessor* acc,int* doit)
 
     /* printf("reparse %s %s\n",a->name,acc->name); */
 
-    if((ret=grib_expression_evaluate_long(acc->parent->h,self->expression,&lres)) != GRIB_SUCCESS)
-        grib_context_log(acc->parent->h->context,
+    if((ret=grib_expression_evaluate_long(grib_handle_of_accessor(acc),self->expression,&lres)) != GRIB_SUCCESS)
+        grib_context_log(acc->context,
                 GRIB_LOG_ERROR,"if reparse  grib_expression_evaluate_long %s",
                 grib_get_error_message(ret));
 
diff --git a/src/action_class_list.c b/src/action_class_list.c
index 93de13b..1390599 100644
--- a/src/action_class_list.c
+++ b/src/action_class_list.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -183,8 +183,8 @@ static grib_action* reparse(grib_action* a,grib_accessor* acc,int *doit)
 	int ret = 0;
 	long val = 0;
 
-	if ((ret=grib_expression_evaluate_long(acc->parent->h,self->expression,&val)) != GRIB_SUCCESS){
-		grib_context_log(acc->parent->h->context, GRIB_LOG_ERROR, " List %s creating %d values unable to evaluate long \n", acc->name, val );
+	if ((ret=grib_expression_evaluate_long(grib_handle_of_accessor(acc),self->expression,&val)) != GRIB_SUCCESS){
+		grib_context_log(acc->context, GRIB_LOG_ERROR, " List %s creating %d values unable to evaluate long \n", acc->name, val );
 	}
 
 	*doit = (val != acc->loop);
diff --git a/src/action_class_meta.c b/src/action_class_meta.c
index d5a22d4..49356db 100644
--- a/src/action_class_meta.c
+++ b/src/action_class_meta.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/action_class_modify.c b/src/action_class_modify.c
index 2f85a66..b908042 100644
--- a/src/action_class_modify.c
+++ b/src/action_class_modify.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -119,8 +119,6 @@ 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;
-
-
 	grib_accessor* ga = NULL;
 
 	ga = grib_find_accessor(p->h, a->name);
@@ -132,11 +130,8 @@ static int create_accessor(grib_section* p, grib_action* act,grib_loader *h)
 		grib_context_log(act->context, GRIB_LOG_DEBUG, "action_class_modify: create_accessor_buffer : No accessor named %s to modify.", a->name);
 	}
 	return GRIB_SUCCESS;
-
-
 }
 
-
 static void destroy(grib_context* context,grib_action* act)
 {
 	grib_action_modify* a = (grib_action_modify*) act;
@@ -144,7 +139,6 @@ static void destroy(grib_context* context,grib_action* act)
 	grib_context_free_persistent(context, a->name);
 	grib_context_free_persistent(context, act->name);
 	grib_context_free_persistent(context, act->op);
-
 }
 
 static void xref(grib_action* d, FILE* f,const char* path)
diff --git a/src/action_class_noop.c b/src/action_class_noop.c
index 77cb37a..110427b 100644
--- a/src/action_class_noop.c
+++ b/src/action_class_noop.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -76,22 +76,22 @@ static void init_class(grib_action_class* c)
 
 grib_action* grib_action_create_noop( grib_context* context,const char* fname)
 {
-  char buf[1024];
+    char buf[1024];
 
-  grib_action_noop* a ;
-  grib_action_class* c   = grib_action_class_noop;
-  grib_action* act       = (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
-  act->op                = grib_context_strdup_persistent(context,"section");
+    grib_action_noop* a ;
+    grib_action_class* c   = grib_action_class_noop;
+    grib_action* act       = (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
+    act->op                = grib_context_strdup_persistent(context,"section");
 
-  act->cclass       = c;
-  a                 = (grib_action_noop*)act;
-  act->context      = context;
+    act->cclass       = c;
+    a                 = (grib_action_noop*)act;
+    act->context      = context;
 
-  sprintf(buf,"_noop%p",(void*)a);
+    sprintf(buf,"_noop%p",(void*)a);
 
-  act->name      = grib_context_strdup_persistent(context,buf);
+    act->name      = grib_context_strdup_persistent(context,buf);
 
-  return act;
+    return act;
 }
 
 static void compile(grib_action* act, grib_compiler *compiler)
@@ -106,11 +106,10 @@ 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);
-  grib_context_free_persistent(context, act->op);
+    grib_context_free_persistent(context, act->name);
+    grib_context_free_persistent(context, act->op);
 }
 
 static void xref(grib_action* d, FILE* f,const char* path)
diff --git a/src/action_class_print.c b/src/action_class_print.c
index 380f2f4..e82526a 100644
--- a/src/action_class_print.c
+++ b/src/action_class_print.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -79,77 +79,74 @@ static void init_class(grib_action_class* c)
 
 grib_action* grib_action_create_print( grib_context* context, const char* name,char* outname)
 {
-  char buf[1024];
-
-  grib_action_print* a ;
-  grib_action_class* c   = grib_action_class_print;
-  grib_action* act       = (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
-  act->op              =  grib_context_strdup_persistent(context,"section");
-
-  act->cclass            = c;
-  a                      = (grib_action_print*)act;
-  act->context           = context;
-
-  a->name            = grib_context_strdup_persistent(context,name);
-
-  if (outname) {
-    FILE* out=NULL;
-    int ioerr=0;
-    a->outname      = grib_context_strdup_persistent(context,outname);
-    out=fopen(outname,"w");
-    ioerr=errno;
-    if (!out)   {
-      grib_context_log(act->context,(GRIB_LOG_ERROR)|(GRIB_LOG_PERROR),
-        "IO ERROR: %s: %s",strerror(ioerr),outname);
+    char buf[1024];
+
+    grib_action_print* a ;
+    grib_action_class* c   = grib_action_class_print;
+    grib_action* act       = (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
+    act->op              =  grib_context_strdup_persistent(context,"section");
+
+    act->cclass            = c;
+    a                      = (grib_action_print*)act;
+    act->context           = context;
+
+    a->name            = grib_context_strdup_persistent(context,name);
+
+    if (outname) {
+        FILE* out=NULL;
+        int ioerr=0;
+        a->outname      = grib_context_strdup_persistent(context,outname);
+        out=fopen(outname,"w");
+        ioerr=errno;
+        if (!out)   {
+            grib_context_log(act->context,(GRIB_LOG_ERROR)|(GRIB_LOG_PERROR),
+                    "IO ERROR: %s: %s",strerror(ioerr),outname);
+        }
+        if (out) fclose(out);
     }
-    if (out) fclose(out);
-  }
 
-  sprintf(buf,"print%p",(void*)a->name);
+    sprintf(buf,"print%p",(void*)a->name);
 
-  act->name      = grib_context_strdup_persistent(context,buf);
+    act->name      = grib_context_strdup_persistent(context,buf);
 
-  return act;
+    return act;
 }
 
 static int execute(grib_action* act, grib_handle *h)
 {
-  grib_action_print* self = (grib_action_print*) act;
-  int err =0;
-  FILE* out=NULL;
-  int ioerr=0;
-
-  if (self->outname) {
-    out=fopen(self->outname,"a");
-    ioerr=errno;
-    if (!out)   {
-      grib_context_log(act->context,(GRIB_LOG_ERROR)|(GRIB_LOG_PERROR),
-        "IO ERROR: %s: %s",strerror(ioerr),self->outname);
-        return GRIB_IO_PROBLEM;
+    grib_action_print* self = (grib_action_print*) act;
+    int err =0;
+    FILE* out=NULL;
+    int ioerr=0;
+
+    if (self->outname) {
+        out=fopen(self->outname,"a");
+        ioerr=errno;
+        if (!out)   {
+            grib_context_log(act->context,(GRIB_LOG_ERROR)|(GRIB_LOG_PERROR),
+                    "IO ERROR: %s: %s",strerror(ioerr),self->outname);
+            return GRIB_IO_PROBLEM;
+        }
+    } else {
+        out=stdout;
     }
-  } else {
-    out=stdout;
-  }
 
-  err=grib_recompose_print(h,NULL,self->name,0,out);
+    err=grib_recompose_print(h,NULL,self->name,0,out);
 
-  if (self->outname) fclose(out);
+    if (self->outname) fclose(out);
 
-  return err;
+    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;
-
-  grib_context_free_persistent(context, a->name);
-  grib_context_free_persistent(context, act->name);
-  grib_context_free_persistent(context, act->op);
+    grib_action_print* a = (grib_action_print*) act;
 
+    grib_context_free_persistent(context, a->name);
+    grib_context_free_persistent(context, act->name);
+    grib_context_free_persistent(context, act->op);
 }
diff --git a/src/action_class_put.c b/src/action_class_put.c
index 72ab542..6bc6d9d 100644
--- a/src/action_class_put.c
+++ b/src/action_class_put.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -79,62 +79,61 @@ 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_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_action_put* a = ( grib_action_put*)act;
 
-	grib_section* ts = NULL;
+    grib_section* ts = NULL;
 
-	grib_accessor* ga = 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;
+    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;
+    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; 
+    }
+    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;
+    grib_action_put* a = ( grib_action_put*)act;
 
-	for (i=0;i<lvl;i++) grib_context_print(act->context,f,"     ");
+    int i = 0;
 
-	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));  
+    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_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_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_remove.c b/src/action_class_remove.c
index ef7ab5c..028b93d 100644
--- a/src/action_class_remove.c
+++ b/src/action_class_remove.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -80,17 +80,17 @@ static void init_class(grib_action_class* c)
 
 grib_action* grib_action_create_remove( grib_context* context, grib_arguments *args )
 {
-  grib_action_remove*  a    =  NULL;
-  grib_action_class* c   =  grib_action_class_remove;
-  grib_action* act       =  (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
-  act->next              =  NULL;
-  act->name              =  grib_context_strdup_persistent(context,"DELETE");
-  act->op                =  grib_context_strdup_persistent(context,"remove");
-  act->cclass            =  c;
-  act->context           =  context;
-  a                      =  (grib_action_remove*)act;
-  a->args                =  args;
-  return act;
+    grib_action_remove*  a    =  NULL;
+    grib_action_class* c   =  grib_action_class_remove;
+    grib_action* act       =  (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
+    act->next              =  NULL;
+    act->name              =  grib_context_strdup_persistent(context,"DELETE");
+    act->op                =  grib_context_strdup_persistent(context,"remove");
+    act->cclass            =  c;
+    act->context           =  context;
+    a                      =  (grib_action_remove*)act;
+    a->args                =  args;
+    return act;
 }
 
 static void compile(grib_action* act, grib_compiler* compiler)
@@ -103,67 +103,65 @@ static void compile(grib_action* act, grib_compiler* compiler)
 
 static void remove_accessor(grib_accessor *a)
 {
-  grib_section* s = NULL;
-  int id;
+    grib_section* s = NULL;
+    int id;
 
-  if (!a || !a->previous) return;
-  s = a->parent;
+    if (!a || !a->previous) return;
+    s = a->parent;
 
-  if (a->parent->h->use_trie && *(a->all_names[0]) != '_') {
-      id=grib_hash_keys_get_id(a->parent->h->context->keys,a->all_names[0]);
-      a->parent->h->accessors[id]=NULL;
-  }
+    if (grib_handle_of_accessor(a)->use_trie && *(a->all_names[0]) != '_') {
+        id=grib_hash_keys_get_id(a->context->keys,a->all_names[0]);
+        grib_handle_of_accessor(a)->accessors[id]=NULL;
+    }
 
-  if (a->next) a->previous->next = a->next;
-  else return;
+    if (a->next) a->previous->next = a->next;
+    else return;
 
-  a->next->previous = a->previous;
+    a->next->previous = a->previous;
 
-  grib_accessor_delete(s->h->context,a);
+    grib_accessor_delete(s->h->context,a);
 
-  return;
+    return;
 }
 
 static int create_accessor(grib_section* p, grib_action* act,grib_loader*h)
 {
-  grib_action_remove* a = ( grib_action_remove*)act;
+    grib_action_remove* a = ( grib_action_remove*)act;
 
 
-  grib_accessor* ga = NULL;
+    grib_accessor* ga = NULL;
 
 
-  ga = grib_find_accessor(p->h, grib_arguments_get_name(p->h,a->args,0));
+    ga = grib_find_accessor(p->h, grib_arguments_get_name(p->h,a->args,0));
 
-  if(ga)
-    remove_accessor(ga);
-
-
-  else{
-    grib_context_log(act->context, GRIB_LOG_DEBUG, "Action_class_remove  : create_accessor_buffer : No accessor named %s to remove ", grib_arguments_get_name(p->h,a->args,0));
-  }
-  return GRIB_SUCCESS;
+    if(ga)
+        remove_accessor(ga);
 
 
+    else{
+        grib_context_log(act->context, GRIB_LOG_DEBUG, "Action_class_remove  : create_accessor_buffer : No accessor named %s to remove ", grib_arguments_get_name(p->h,a->args,0));
+    }
+    return GRIB_SUCCESS;
 }
 
 static void dump( grib_action* act, FILE* f, int lvl)
 {
-  grib_action_remove* a = ( grib_action_remove*)act;
+    grib_action_remove* a = ( grib_action_remove*)act;
 
-  int i = 0;
+    int i = 0;
 
-  for (i=0;i<lvl;i++) grib_context_print(act->context,f,"     ");
+    for (i=0;i<lvl;i++) grib_context_print(act->context,f,"     ");
 
-  grib_context_print(act->context,f,"remove %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_context_print(act->context,f,"remove %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_remove* a = ( grib_action_remove*)act;
+    grib_action_remove* a = ( grib_action_remove*)act;
 
-  grib_arguments_free(context, a->args);
-  grib_context_free_persistent(context, act->name);
-  grib_context_free_persistent(context, act->op);
+    grib_arguments_free(context, a->args);
+    grib_context_free_persistent(context, act->name);
+    grib_context_free_persistent(context, act->op);
 }
 
 static void xref(grib_action* d, FILE* f,const char* path)
diff --git a/src/action_class_rename.c b/src/action_class_rename.c
index 70c9b4a..46a386f 100644
--- a/src/action_class_rename.c
+++ b/src/action_class_rename.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -82,18 +82,18 @@ static void init_class(grib_action_class* c)
 
 grib_action* grib_action_create_rename( grib_context* context, char* the_old, char* the_new)
 {
-  grib_action_rename*  a    =  NULL;
-  grib_action_class* c   =  grib_action_class_rename;
-  grib_action* act       =  (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
-  act->next              =  NULL;
-  act->name              =  grib_context_strdup_persistent(context,"RENAME");
-  act->op                =  grib_context_strdup_persistent(context,"rename");
-  act->cclass            =  c;
-  act->context           =  context;
-  a                      =  (grib_action_rename*)act;
-  a->the_old=grib_context_strdup_persistent(context,the_old);
-  a->the_new=grib_context_strdup_persistent(context,the_new);
-  return act;
+    grib_action_rename*  a    =  NULL;
+    grib_action_class* c   =  grib_action_class_rename;
+    grib_action* act       =  (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
+    act->next              =  NULL;
+    act->name              =  grib_context_strdup_persistent(context,"RENAME");
+    act->op                =  grib_context_strdup_persistent(context,"rename");
+    act->cclass            =  c;
+    act->context           =  context;
+    a                      =  (grib_action_rename*)act;
+    a->the_old=grib_context_strdup_persistent(context,the_old);
+    a->the_new=grib_context_strdup_persistent(context,the_new);
+    return act;
 }
 
 static void compile(grib_action* act, grib_compiler* compiler)
@@ -101,63 +101,58 @@ static void compile(grib_action* act, grib_compiler* compiler)
     Assert(0);
 }
 
-static void rename_accessor(grib_accessor *a,char* name){
-  int id;
-  char* the_old=(char*)a->all_names[0];
-
-  if (a->parent->h->use_trie && *(a->all_names[0]) != '_') {
-      id=grib_hash_keys_get_id(a->parent->h->context->keys,a->all_names[0]);
-      a->parent->h->accessors[id]=NULL;
-      id=grib_hash_keys_get_id(a->parent->h->context->keys,name);
-      a->parent->h->accessors[id]=a;
-  }
-  a->all_names[0]=grib_context_strdup_persistent(a->parent->h->context,name);
-  a->name=a->all_names[0];
-  grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG,"Renaming %s to %s",the_old,name);
-  /* grib_context_free(a->parent->h->context,the_old); */
-
-  return;
+static void rename_accessor(grib_accessor *a,char* name)
+{
+    int id;
+    char* the_old=(char*)a->all_names[0];
+
+    if (grib_handle_of_accessor(a)->use_trie && *(a->all_names[0]) != '_') {
+        id=grib_hash_keys_get_id(a->context->keys,a->all_names[0]);
+        grib_handle_of_accessor(a)->accessors[id]=NULL;
+        id=grib_hash_keys_get_id(a->context->keys,name);
+        grib_handle_of_accessor(a)->accessors[id]=a;
+    }
+    a->all_names[0]=grib_context_strdup_persistent(a->context,name);
+    a->name=a->all_names[0];
+    grib_context_log(a->context,GRIB_LOG_DEBUG,"Renaming %s to %s",the_old,name);
+    /* grib_context_free(a->context,the_old); */
 }
 
 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;
-
+    grib_action_rename* a = ( grib_action_rename*)act;
+    grib_accessor* ga = NULL;
 
-  ga = grib_find_accessor(p->h, a->the_old);
+    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);
-  }
-
-  return GRIB_SUCCESS;
+    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);
+    }
 
+    return GRIB_SUCCESS;
 }
 
 static void dump( grib_action* act, FILE* f, int lvl)
 {
-  grib_action_rename* a = ( grib_action_rename*)act;
-
-  int i = 0;
+    grib_action_rename* a = ( grib_action_rename*)act;
 
-  for (i=0;i<lvl;i++) grib_context_print(act->context,f,"     ");
+    int i = 0;
 
-  grib_context_print(act->context,f,"rename %s as %s in %s\n",a->the_old,act->name,a->the_new);
+    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);
 }
+
 static void destroy(grib_context* context, grib_action* act)
 {
-  grib_action_rename* a = ( grib_action_rename*)act;
+    grib_action_rename* a = ( grib_action_rename*)act;
 
-  grib_context_free_persistent(context, a->the_old);
-  grib_context_free_persistent(context, a->the_new);
-  grib_context_free_persistent(context, act->name);
-  grib_context_free_persistent(context, act->op);
+    grib_context_free_persistent(context, a->the_old);
+    grib_context_free_persistent(context, a->the_new);
+    grib_context_free_persistent(context, act->name);
+    grib_context_free_persistent(context, act->op);
 }
 
 static void xref(grib_action* d, FILE* f,const char* path)
diff --git a/src/action_class_section.c b/src/action_class_section.c
index ac53f1c..b3a2805 100644
--- a/src/action_class_section.c
+++ b/src/action_class_section.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -84,7 +84,7 @@ static void check_sections(grib_section *s,grib_handle* h)
   if(s) Assert(s->h == h);
   while(a)
   {
-    Assert(a->parent->h == h);
+    Assert(grib_handle_of_accessor(a) == h);
     check_sections(a->sub_section,h);
     a = a->next;
   }
@@ -97,7 +97,7 @@ static int notify_change(grib_action* act, grib_accessor * notified,
     grib_loader loader = { 0,0,0,0,0 };
 
     grib_section *old_section = NULL;
-    grib_handle *h = notified->parent->h;
+    grib_handle *h = grib_handle_of_accessor(notified);
     size_t len = 0;
     size_t size = 0;
     int err=0;
diff --git a/src/action_class_set.c b/src/action_class_set.c
index cb6ac31..0374ef3 100644
--- a/src/action_class_set.c
+++ b/src/action_class_set.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -81,29 +81,29 @@ static void init_class(grib_action_class* c)
 /* END_CLASS_IMP */
 
 grib_action* grib_action_create_set( grib_context* context,
-  const char* name,    grib_expression* expression,int nofail)
+        const char* name,    grib_expression* expression,int nofail)
 {
-  char buf[1024];
+    char buf[1024];
 
-  grib_action_set* a ;
-  grib_action_class* c   = grib_action_class_set;
-  grib_action* act       = (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
-  act->op              = grib_context_strdup_persistent(context,"section");
+    grib_action_set* a ;
+    grib_action_class* c   = grib_action_class_set;
+    grib_action* act       = (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
+    act->op              = grib_context_strdup_persistent(context,"section");
 
-  act->cclass       = c;
-  a                 = (grib_action_set*)act;
-  act->context      = context;
+    act->cclass       = c;
+    a                 = (grib_action_set*)act;
+    act->context      = context;
 
-  a->expression  = expression;
-  a->name        = grib_context_strdup_persistent(context,name);
-  a->nofail      = nofail;
+    a->expression  = expression;
+    a->name        = grib_context_strdup_persistent(context,name);
+    a->nofail      = nofail;
 
 
-  sprintf(buf,"set%p",(void*)expression);
+    sprintf(buf,"set%p",(void*)expression);
 
-  act->name      = grib_context_strdup_persistent(context,buf);
+    act->name      = grib_context_strdup_persistent(context,buf);
 
-  return act;
+    return act;
 }
 
 static void compile(grib_action* act, grib_compiler *compiler)
@@ -118,38 +118,35 @@ static void compile(grib_action* act, grib_compiler *compiler)
 
 static int execute(grib_action* a, grib_handle *h)
 {
-  int ret=0;
-  grib_action_set* self = (grib_action_set*) a;
-  ret=grib_set_expression(h,self->name,self->expression);
-  if (self->nofail) return 0;
-  if (ret != GRIB_SUCCESS) {
-    grib_context_log(h->context,GRIB_LOG_ERROR,"Error while setting key %s (%s)",
-                     self->name,grib_get_error_message(ret));
-  }
-  return ret;
+    int ret=0;
+    grib_action_set* self = (grib_action_set*) a;
+    ret=grib_set_expression(h,self->name,self->expression);
+    if (self->nofail) return 0;
+    if (ret != GRIB_SUCCESS) {
+        grib_context_log(h->context,GRIB_LOG_ERROR,"Error while setting key %s (%s)",
+                self->name,grib_get_error_message(ret));
+    }
+    return ret;
 }
 
-
 static void dump(grib_action* act, FILE* f, int lvl)
 {
-  int i =0;
-  grib_action_set* self=(grib_action_set*)act;
-  for (i=0;i<lvl;i++)
-    grib_context_print(act->context,f,"     ");
-  grib_context_print(act->context,f,self->name);
-  printf("\n");
+    int i =0;
+    grib_action_set* self=(grib_action_set*)act;
+    for (i=0;i<lvl;i++)
+        grib_context_print(act->context,f,"     ");
+    grib_context_print(act->context,f,self->name);
+    printf("\n");
 }
 
-
 static void destroy(grib_context* context,grib_action* act)
 {
-  grib_action_set* a = (grib_action_set*) act;
-
-  grib_context_free_persistent(context, a->name);
-  grib_expression_free(context,a->expression);
-  grib_context_free_persistent(context, act->name);
-  grib_context_free_persistent(context, act->op);
+    grib_action_set* a = (grib_action_set*) act;
 
+    grib_context_free_persistent(context, a->name);
+    grib_expression_free(context,a->expression);
+    grib_context_free_persistent(context, act->name);
+    grib_context_free_persistent(context, act->op);
 }
 
 static void xref(grib_action* d, FILE* f,const char *path)
diff --git a/src/action_class_set_darray.c b/src/action_class_set_darray.c
index 1d5cfce..8ad52d6 100644
--- a/src/action_class_set_darray.c
+++ b/src/action_class_set_darray.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -78,59 +78,56 @@ static void init_class(grib_action_class* c)
 /* END_CLASS_IMP */
 
 grib_action* grib_action_create_set_darray( grib_context* context,
-  const char* name,
-    grib_darray* darray)
+        const char* name,
+        grib_darray* darray)
 {
-  char buf[1024];
+    char buf[1024];
 
-  grib_action_set_darray* a ;
-  grib_action_class* c   = grib_action_class_set_darray;
-  grib_action* act       = (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
-  act->op              = grib_context_strdup_persistent(context,"section");
+    grib_action_set_darray* a ;
+    grib_action_class* c   = grib_action_class_set_darray;
+    grib_action* act       = (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
+    act->op              = grib_context_strdup_persistent(context,"section");
 
-  act->cclass       = c;
-  a                 = (grib_action_set_darray*)act;
-  act->context      = context;
+    act->cclass       = c;
+    a                 = (grib_action_set_darray*)act;
+    act->context      = context;
 
-  a->darray  = darray;
-  a->name        = grib_context_strdup_persistent(context,name);
+    a->darray  = darray;
+    a->name        = grib_context_strdup_persistent(context,name);
 
 
-  sprintf(buf,"set_darray%p",(void*)darray);
+    sprintf(buf,"set_darray%p",(void*)darray);
 
-  act->name      = grib_context_strdup_persistent(context,buf);
+    act->name      = grib_context_strdup_persistent(context,buf);
 
-  return act;
+    return act;
 }
 
 static int execute(grib_action* a, grib_handle *h)
 {
-  grib_action_set_darray* self = (grib_action_set_darray*) a;
+    grib_action_set_darray* self = (grib_action_set_darray*) a;
 
-  return grib_set_double_array(h,self->name,self->darray->v,self->darray->n);
+    return grib_set_double_array(h,self->name,self->darray->v,self->darray->n);
 }
 
-
 static void dump(grib_action* act, FILE* f, int lvl)
 {
-  int i =0;
-  grib_action_set_darray* self=(grib_action_set_darray*)act;
-  for (i=0;i<lvl;i++)
-    grib_context_print(act->context,f,"     ");
-  grib_context_print(act->context,f,self->name);
-  printf("\n");
+    int i =0;
+    grib_action_set_darray* self=(grib_action_set_darray*)act;
+    for (i=0;i<lvl;i++)
+        grib_context_print(act->context,f,"     ");
+    grib_context_print(act->context,f,self->name);
+    printf("\n");
 }
 
-
 static void destroy(grib_context* context,grib_action* act)
 {
-  grib_action_set_darray* a = (grib_action_set_darray*) act;
-
-  grib_context_free_persistent(context, a->name);
-  grib_darray_delete(context,a->darray);
-  grib_context_free_persistent(context, act->name);
-  grib_context_free_persistent(context, act->op);
+    grib_action_set_darray* a = (grib_action_set_darray*) act;
 
+    grib_context_free_persistent(context, a->name);
+    grib_darray_delete(context,a->darray);
+    grib_context_free_persistent(context, act->name);
+    grib_context_free_persistent(context, act->op);
 }
 
 static void xref(grib_action* d, FILE* f,const char *path)
diff --git a/src/action_class_set_iarray.c b/src/action_class_set_iarray.c
index 1d4b0ec..50fb092 100644
--- a/src/action_class_set_iarray.c
+++ b/src/action_class_set_iarray.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -78,59 +78,56 @@ static void init_class(grib_action_class* c)
 /* END_CLASS_IMP */
 
 grib_action* grib_action_create_set_iarray( grib_context* context,
-  const char* name,
-    grib_iarray* iarray)
+        const char* name,
+        grib_iarray* iarray)
 {
-  char buf[1024];
+    char buf[1024];
 
-  grib_action_set_iarray* a ;
-  grib_action_class* c   = grib_action_class_set_iarray;
-  grib_action* act       = (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
-  act->op              = grib_context_strdup_persistent(context,"section");
+    grib_action_set_iarray* a ;
+    grib_action_class* c   = grib_action_class_set_iarray;
+    grib_action* act       = (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
+    act->op              = grib_context_strdup_persistent(context,"section");
 
-  act->cclass       = c;
-  a                 = (grib_action_set_iarray*)act;
-  act->context      = context;
+    act->cclass       = c;
+    a                 = (grib_action_set_iarray*)act;
+    act->context      = context;
 
-  a->iarray  = iarray;
-  a->name        = grib_context_strdup_persistent(context,name);
+    a->iarray  = iarray;
+    a->name        = grib_context_strdup_persistent(context,name);
 
 
-  sprintf(buf,"set_iarray%p",(void*)iarray);
+    sprintf(buf,"set_iarray%p",(void*)iarray);
 
-  act->name      = grib_context_strdup_persistent(context,buf);
+    act->name      = grib_context_strdup_persistent(context,buf);
 
-  return act;
+    return act;
 }
 
 static int execute(grib_action* a, grib_handle *h)
 {
-  grib_action_set_iarray* self = (grib_action_set_iarray*) a;
+    grib_action_set_iarray* self = (grib_action_set_iarray*) a;
 
-  return grib_set_long_array(h,self->name,self->iarray->v,self->iarray->n);
+    return grib_set_long_array(h,self->name,self->iarray->v,self->iarray->n);
 }
 
-
 static void dump(grib_action* act, FILE* f, int lvl)
 {
-  int i =0;
-  grib_action_set_iarray* self=(grib_action_set_iarray*)act;
-  for (i=0;i<lvl;i++)
-    grib_context_print(act->context,f,"     ");
-  grib_context_print(act->context,f,self->name);
-  printf("\n");
+    int i =0;
+    grib_action_set_iarray* self=(grib_action_set_iarray*)act;
+    for (i=0;i<lvl;i++)
+        grib_context_print(act->context,f,"     ");
+    grib_context_print(act->context,f,self->name);
+    printf("\n");
 }
 
-
 static void destroy(grib_context* context,grib_action* act)
 {
-  grib_action_set_iarray* a = (grib_action_set_iarray*) act;
-
-  grib_context_free_persistent(context, a->name);
-  grib_iarray_delete(a->iarray);
-  grib_context_free_persistent(context, act->name);
-  grib_context_free_persistent(context, act->op);
+    grib_action_set_iarray* a = (grib_action_set_iarray*) act;
 
+    grib_context_free_persistent(context, a->name);
+    grib_iarray_delete(a->iarray);
+    grib_context_free_persistent(context, act->name);
+    grib_context_free_persistent(context, act->op);
 }
 
 static void xref(grib_action* d, FILE* f,const char *path)
diff --git a/src/action_class_set_missing.c b/src/action_class_set_missing.c
index f7de36f..4eec3f3 100644
--- a/src/action_class_set_missing.c
+++ b/src/action_class_set_missing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -75,55 +75,50 @@ static void init_class(grib_action_class* c)
 /* END_CLASS_IMP */
 
 grib_action* grib_action_create_set_missing( grib_context* context,
-  const char* name)
+        const char* name)
 {
-  char buf[1024];
+    char buf[1024];
 
-  grib_action_set_missing* a ;
-  grib_action_class* c   = grib_action_class_set_missing;
-  grib_action* act       = (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
-  act->op              = grib_context_strdup_persistent(context,"set_missing");
+    grib_action_set_missing* a ;
+    grib_action_class* c   = grib_action_class_set_missing;
+    grib_action* act       = (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
+    act->op              = grib_context_strdup_persistent(context,"set_missing");
 
-  act->cclass       = c;
-  a                 = (grib_action_set_missing*)act;
-  act->context      = context;
+    act->cclass       = c;
+    a                 = (grib_action_set_missing*)act;
+    act->context      = context;
 
-  a->name        = grib_context_strdup_persistent(context,name);
+    a->name        = grib_context_strdup_persistent(context,name);
 
+    sprintf(buf,"set_missing_%s",name);
 
-  sprintf(buf,"set_missing_%s",name);
+    act->name      = grib_context_strdup_persistent(context,buf);
 
-  act->name      = grib_context_strdup_persistent(context,buf);
-
-  return act;
+    return act;
 }
 
 static int execute(grib_action* a, grib_handle *h)
 {
-  grib_action_set_missing* self = (grib_action_set_missing*) a;
+    grib_action_set_missing* self = (grib_action_set_missing*) a;
 
-  return grib_set_missing(h,self->name);
+    return grib_set_missing(h,self->name);
 }
 
-
 static void dump(grib_action* act, FILE* f, int lvl)
 {
-  int i =0;
-  grib_action_set_missing* self=(grib_action_set_missing*)act;
-  for (i=0;i<lvl;i++)
-    grib_context_print(act->context,f,"     ");
-  grib_context_print(act->context,f,self->name);
-  printf("\n");
+    int i =0;
+    grib_action_set_missing* self=(grib_action_set_missing*)act;
+    for (i=0;i<lvl;i++)
+        grib_context_print(act->context,f,"     ");
+    grib_context_print(act->context,f,self->name);
+    printf("\n");
 }
 
-
 static void destroy(grib_context* context,grib_action* act)
 {
-  grib_action_set_missing* a = (grib_action_set_missing*) act;
-
-  grib_context_free_persistent(context, a->name);
-  grib_context_free_persistent(context, act->name);
-  grib_context_free_persistent(context, act->op);
+    grib_action_set_missing* a = (grib_action_set_missing*) act;
 
+    grib_context_free_persistent(context, a->name);
+    grib_context_free_persistent(context, act->name);
+    grib_context_free_persistent(context, act->op);
 }
-
diff --git a/src/action_class_set_sarray.c b/src/action_class_set_sarray.c
new file mode 100644
index 0000000..d4bdd1d
--- /dev/null
+++ b/src/action_class_set_sarray.c
@@ -0,0 +1,135 @@
+/*
+ * Copyright 2005-2016 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"
+/*
+   This is used by make_class.pl
+
+   START_CLASS_DEF
+   CLASS      = action
+   IMPLEMENTS = dump;xref
+   IMPLEMENTS = destroy;execute
+   MEMBERS    = grib_sarray *sarray
+   MEMBERS    = char *name
+   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 xref            (grib_action* d, FILE* f,const char* path);
+static void destroy         (grib_context*,grib_action*);
+static int execute(grib_action* a,grib_handle* h);
+
+
+typedef struct grib_action_set_sarray {
+    grib_action          act;  
+/* Members defined in set_sarray */
+	grib_sarray *sarray;
+	char *name;
+} grib_action_set_sarray;
+
+
+static grib_action_class _grib_action_class_set_sarray = {
+    0,                              /* super                     */
+    "action_class_set_sarray",                              /* name                      */
+    sizeof(grib_action_set_sarray),            /* size                      */
+    0,                                   /* inited */
+    &init_class,                         /* init_class */
+    0,                               /* init                      */
+    &destroy,                            /* destroy */
+
+    &dump,                               /* dump                      */
+    &xref,                               /* xref                      */
+
+    0,             /* create_accessor*/
+
+    0,                            /* notify_change */
+    0,                            /* reparse */
+    &execute,                            /* execute */
+    0,                            /* compile */
+};
+
+grib_action_class* grib_action_class_set_sarray = &_grib_action_class_set_sarray;
+
+static void init_class(grib_action_class* c)
+{
+}
+/* END_CLASS_IMP */
+
+grib_action* grib_action_create_set_sarray( grib_context* context,
+        const char* name,
+        grib_sarray* sarray)
+{
+    char buf[1024];
+
+    grib_action_set_sarray* a ;
+    grib_action_class* c   = grib_action_class_set_sarray;
+    grib_action* act       = (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
+    act->op              = grib_context_strdup_persistent(context,"section");
+
+    act->cclass       = c;
+    a                 = (grib_action_set_sarray*)act;
+    act->context      = context;
+
+    a->sarray  = sarray;
+    a->name        = grib_context_strdup_persistent(context,name);
+
+
+    sprintf(buf,"set_sarray%p",(void*)sarray);
+
+    act->name      = grib_context_strdup_persistent(context,buf);
+
+    return act;
+}
+
+static int execute(grib_action* a, grib_handle *h)
+{
+    grib_action_set_sarray* self = (grib_action_set_sarray*) a;
+
+    return grib_set_string_array(h, self->name, (const char**)self->sarray->v, self->sarray->n);
+}
+
+static void dump(grib_action* act, FILE* f, int lvl)
+{
+    int i =0;
+    grib_action_set_sarray* self=(grib_action_set_sarray*)act;
+    for (i=0;i<lvl;i++)
+        grib_context_print(act->context,f,"     ");
+    grib_context_print(act->context,f,self->name);
+    printf("\n");
+}
+
+static void destroy(grib_context* context,grib_action* act)
+{
+    grib_action_set_sarray* a = (grib_action_set_sarray*) act;
+
+    grib_context_free_persistent(context, a->name);
+    grib_sarray_delete(context,a->sarray);
+    grib_context_free_persistent(context, act->name);
+    grib_context_free_persistent(context, act->op);
+}
+
+static void xref(grib_action* d, FILE* f,const char *path)
+{
+}
diff --git a/src/action_class_switch.c b/src/action_class_switch.c
index 9f80364..42062e2 100644
--- a/src/action_class_switch.c
+++ b/src/action_class_switch.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -89,151 +89,148 @@ static void init_class(grib_action_class* c)
 /* END_CLASS_IMP */
 
 grib_action* grib_action_create_switch( grib_context* context,
-	grib_arguments* args,
-    grib_case* Case,
-    grib_action* Default)
+        grib_arguments* args,
+        grib_case* Case,
+        grib_action* Default)
 {   char name[1024];
-  grib_action_switch* a ;
-  grib_action_class* c   = grib_action_class_switch;
-  grib_action* act       = (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
-  act->op              = grib_context_strdup_persistent(context,"section");
+grib_action_switch* a ;
+grib_action_class* c   = grib_action_class_switch;
+grib_action* act       = (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
+act->op              = grib_context_strdup_persistent(context,"section");
 
-  act->cclass       = c;
-  a                 = (grib_action_switch*)act;
-  act->context      = context;
+act->cclass       = c;
+a                 = (grib_action_switch*)act;
+act->context      = context;
 
-  a->args = args;
-  a->Case = Case;
-  a->Default = Default;
+a->args = args;
+a->Case = Case;
+a->Default = Default;
 
-  sprintf(name,"_switch%p",(void*)a);
+sprintf(name,"_switch%p",(void*)a);
 
-  act->name      = grib_context_strdup_persistent(context,name);
+act->name      = grib_context_strdup_persistent(context,name);
 
-  return act;
+return act;
 }
 
 grib_case* grib_case_new(grib_context* c,grib_arguments* values,grib_action* action)
 {
     grib_case* Case = (grib_case*)grib_context_malloc_clear_persistent(c,sizeof(grib_case));
 
-	Case->values=values;
-	Case->action=action;
+    Case->values=values;
+    Case->action=action;
 
-	return Case;
+    return Case;
 }
 
-
 static int execute(grib_action* act, grib_handle *h) {
-	grib_action_switch* a = (grib_action_switch*)act;
-	grib_case* c=a->Case;
-	grib_action* next = a->Default;
-	grib_arguments* args=a->args;
-	grib_arguments* values;
-	grib_expression* e;
-	grib_expression* value;
-	int ret = 0;
-	long lres=0;
-	double dres=0;
-	long lval=0;
-	double dval=0;
-	int type=0;
-	int  ok=0;
-	const char *cval;
-	const char *cres;
-	char buf[80];
-	char tmp[80];
-	size_t len = sizeof(buf);
-	size_t size=sizeof(tmp);
-	int err=0;
-
-	Assert(args);
-
-	while (c) {
-		e=args->expression;
-		values=c->values;
-		value=values->expression;
-		ok=0;
-		while (e && value) {
-			if (!strcmp(value->cclass->name,"true"))  ok=1;
-			else {
-				type=grib_expression_native_type(h,value);
-
-				switch(type) {
-					case GRIB_TYPE_LONG:
-						ok= ( grib_expression_evaluate_long(h,value,&lres) == GRIB_SUCCESS) &&
-							( grib_expression_evaluate_long(h,e,&lval) == GRIB_SUCCESS) &&
-							(lval == lres);
-						break;
-
-					case GRIB_TYPE_DOUBLE:
-						ok = ( grib_expression_evaluate_double(h,value,&dres) == GRIB_SUCCESS) &&
-							 ( grib_expression_evaluate_double(h,e,&dval) == GRIB_SUCCESS) &&
-							 (dval == dres);
-						break;
-
-					case GRIB_TYPE_STRING:
-						len = sizeof(buf);
-						size=sizeof(tmp);
-						ok = ((cres=grib_expression_evaluate_string(h,e,buf,&len,&err)) != NULL ) &&
-						(err==0) && ((cval = grib_expression_evaluate_string(h,value,tmp,&size,&err)) != NULL) &&
-						(err==0) && ((strcmp(buf,cval) == 0) || (strcmp(cval,"*")==0));
-					break;
-
-					default:
-						/* TODO: */
-						break;
-				}
-			}
-			if (!ok) break;
-
-			args=args->next;
-			if (args) e=args->expression;
-			else e=NULL;
-
-			values=values->next;
-			if (values) value=values->expression;
-			else value=NULL;
-		}
-
-		if(ok) { next=c->action; break; }
-
-		c=c->next;
-	}
-
-	if (!next) return GRIB_SWITCH_NO_MATCH;
-
-	while(next){
-		ret = grib_action_execute(next, h);
-		if(ret != GRIB_SUCCESS) return ret;
-		next= next->next;
-	}
-
-	return GRIB_SUCCESS;
+    grib_action_switch* a = (grib_action_switch*)act;
+    grib_case* c=a->Case;
+    grib_action* next = a->Default;
+    grib_arguments* args=a->args;
+    grib_arguments* values;
+    grib_expression* e;
+    grib_expression* value;
+    int ret = 0;
+    long lres=0;
+    double dres=0;
+    long lval=0;
+    double dval=0;
+    int type=0;
+    int  ok=0;
+    const char *cval;
+    const char *cres;
+    char buf[80];
+    char tmp[80];
+    size_t len = sizeof(buf);
+    size_t size=sizeof(tmp);
+    int err=0;
+
+    Assert(args);
+
+    while (c) {
+        e=args->expression;
+        values=c->values;
+        value=values->expression;
+        ok=0;
+        while (e && value) {
+            if (!strcmp(value->cclass->name,"true"))  ok=1;
+            else {
+                type=grib_expression_native_type(h,value);
+
+                switch(type) {
+                case GRIB_TYPE_LONG:
+                    ok= ( grib_expression_evaluate_long(h,value,&lres) == GRIB_SUCCESS) &&
+                    ( grib_expression_evaluate_long(h,e,&lval) == GRIB_SUCCESS) &&
+                    (lval == lres);
+                    break;
+
+                case GRIB_TYPE_DOUBLE:
+                    ok = ( grib_expression_evaluate_double(h,value,&dres) == GRIB_SUCCESS) &&
+                    ( grib_expression_evaluate_double(h,e,&dval) == GRIB_SUCCESS) &&
+                    (dval == dres);
+                    break;
+
+                case GRIB_TYPE_STRING:
+                    len = sizeof(buf);
+                    size=sizeof(tmp);
+                    ok = ((cres=grib_expression_evaluate_string(h,e,buf,&len,&err)) != NULL ) &&
+                            (err==0) && ((cval = grib_expression_evaluate_string(h,value,tmp,&size,&err)) != NULL) &&
+                            (err==0) && ((strcmp(buf,cval) == 0) || (strcmp(cval,"*")==0));
+                    break;
+
+                default:
+                    /* TODO: */
+                    break;
+                }
+            }
+            if (!ok) break;
+
+            args=args->next;
+            if (args) e=args->expression;
+            else e=NULL;
+
+            values=values->next;
+            if (values) value=values->expression;
+            else value=NULL;
+        }
+
+        if(ok) { next=c->action; break; }
+
+        c=c->next;
+    }
+
+    if (!next) return GRIB_SWITCH_NO_MATCH;
+
+    while(next){
+        ret = grib_action_execute(next, h);
+        if(ret != GRIB_SUCCESS) return ret;
+        next= next->next;
+    }
+
+    return GRIB_SUCCESS;
 }
 
 static void destroy(grib_context* context,grib_action* act)
 {
-  grib_action_switch* a = (grib_action_switch*) act;
-  grib_case *t = a->Case;
-
-  while(t)
-  {
-    grib_case *nt = t->next;
-    grib_action_delete(context,t->action);
-    grib_arguments_free(context,t->values);
-	grib_context_free(context,t);
-    t = nt;
-  }
-
-  grib_action_delete(context,a->Default);
-
-  grib_context_free_persistent(context, act->name);
-  grib_context_free_persistent(context, act->op);
+    grib_action_switch* a = (grib_action_switch*) act;
+    grib_case *t = a->Case;
+
+    while(t)
+    {
+        grib_case *nt = t->next;
+        grib_action_delete(context,t->action);
+        grib_arguments_free(context,t->values);
+        grib_context_free(context,t);
+        t = nt;
+    }
+
+    grib_action_delete(context,a->Default);
+
+    grib_context_free_persistent(context, act->name);
+    grib_context_free_persistent(context, act->op);
 }
 
 static void xref(grib_action* d, FILE* f,const char* path)
 {
 }
-
-
diff --git a/src/action_class_template.c b/src/action_class_template.c
index 17fd8af..6f97e0c 100644
--- a/src/action_class_template.c
+++ b/src/action_class_template.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -92,20 +92,20 @@ static void init_class(grib_action_class* c)
 
 grib_action* grib_action_create_template( grib_context* context,int nofail,const char* name , const char* arg1)
 {
-  grib_action_template* a   ;
-  grib_action_class* c   =  grib_action_class_template;
-  grib_action* act       =  (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
-  act-> name             =  grib_context_strdup_persistent(context,name);
-  act-> op               =  grib_context_strdup_persistent(context,"section");
-  act-> cclass           =  c;
-  act-> next             =  NULL;
-  act->context           =  context;
-  a                      =  (grib_action_template*)act;
-  a->nofail=nofail;
-  if (arg1) a->arg       =  grib_context_strdup_persistent(context,arg1);
-  else  a->arg = NULL;
-
-  return act;
+    grib_action_template* a   ;
+    grib_action_class* c   =  grib_action_class_template;
+    grib_action* act       =  (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
+    act-> name             =  grib_context_strdup_persistent(context,name);
+    act-> op               =  grib_context_strdup_persistent(context,"section");
+    act-> cclass           =  c;
+    act-> next             =  NULL;
+    act->context           =  context;
+    a                      =  (grib_action_template*)act;
+    a->nofail=nofail;
+    if (arg1) a->arg       =  grib_context_strdup_persistent(context,arg1);
+    else  a->arg = NULL;
+
+    return act;
 }
 
 static void compile(grib_action* act, grib_compiler *compiler)
@@ -126,114 +126,111 @@ static void compile(grib_action* act, grib_compiler *compiler)
 
 static void dump( grib_action* act, FILE* f, int lvl)
 {
-  grib_action_template* a = ( grib_action_template*)act;
-  int i = 0;
-  for (i=0;i<lvl;i++) grib_context_print(act->context,f,"     ");
-  grib_context_print(act->context,f,"Template %s  %s\n",act->name , a->arg );
+    grib_action_template* a = ( grib_action_template*)act;
+    int i = 0;
+    for (i=0;i<lvl;i++) grib_context_print(act->context,f,"     ");
+    grib_context_print(act->context,f,"Template %s  %s\n",act->name , a->arg );
 }
 
 grib_action* get_empty_template(grib_context* c,int *err) {
-	char fname[]="empty_template.def";
-	char* path=0;
-	
-	path=grib_context_full_defs_path(c,fname);
-	if (path) {
-		*err=GRIB_SUCCESS;
-		return grib_parse_file(c, path);
-	} else {
-		*err=GRIB_INTERNAL_ERROR;
-		grib_context_log(c,GRIB_LOG_ERROR,"get_empty_template: unable to get template %s",fname);
-		return NULL;
-	}
-	
+    char fname[]="empty_template.def";
+    char* path=0;
+
+    path=grib_context_full_defs_path(c,fname);
+    if (path) {
+        *err=GRIB_SUCCESS;
+        return grib_parse_file(c, path);
+    } else {
+        *err=GRIB_INTERNAL_ERROR;
+        grib_context_log(c,GRIB_LOG_ERROR,"get_empty_template: unable to get template %s",fname);
+        return NULL;
+    }
 }
 
-static int  create_accessor(grib_section* p, grib_action* act, grib_loader *h ){
-  int ret = GRIB_SUCCESS;
-  grib_action_template* a = ( grib_action_template*)act;
-  grib_action* la = NULL;
-  grib_action* next = NULL;
-  grib_accessor* as = NULL;
-  grib_section*         gs = NULL;
-
-  char fname[1024]={0,};
-  char *fpath=0;
-
-  as = grib_accessor_factory(p, act,0,NULL);
-
-  if(!as) return GRIB_INTERNAL_ERROR;
-  if(a->arg){
-    ret = grib_recompose_name(p->h,as,a->arg,fname,1);
-
-	if ((fpath=grib_context_full_defs_path(p->h->context,fname))==NULL) {
-      if (!a->nofail) {
-        grib_context_log(p->h->context,GRIB_LOG_ERROR,
-                         "Unable to find template %s from %s ",act->name,fname);
-        return GRIB_FILE_NOT_FOUND;
-      }
-	  la = get_empty_template(p->h->context,&ret);
-	  if (ret) return ret;
-    } else 
-      la = grib_parse_file(p->h->context, fpath);
-  }
-  as->flags |= GRIB_ACCESSOR_FLAG_HIDDEN;
-  gs = as->sub_section;
-  gs->branch = la; /* Will be used to prevent unecessary reparse */
-
-  grib_push_accessor(as,p->block);
-
-  if(la){
-    next = la;
-
-    while(next){
-      ret = grib_create_accessor(gs, next,h);
-      if(ret != GRIB_SUCCESS) {
-      if(p->h->context->debug)
-    {
-      grib_context_log(p->h->context,GRIB_LOG_ERROR,
-      "Error processing template %s: %s [%s] %04lx",
-      fname,grib_get_error_message(ret),next->name,next->flags);
-    }
-      return ret;
+static int  create_accessor(grib_section* p, grib_action* act, grib_loader *h )
+{
+    int ret = GRIB_SUCCESS;
+    grib_action_template* a = ( grib_action_template*)act;
+    grib_action* la = NULL;
+    grib_action* next = NULL;
+    grib_accessor* as = NULL;
+    grib_section*         gs = NULL;
+
+    char fname[1024]={0,};
+    char *fpath=0;
+
+    as = grib_accessor_factory(p, act,0,NULL);
+
+    if(!as) return GRIB_INTERNAL_ERROR;
+    if(a->arg){
+        ret = grib_recompose_name(p->h,as,a->arg,fname,1);
+
+        if ((fpath=grib_context_full_defs_path(p->h->context,fname))==NULL) {
+            if (!a->nofail) {
+                grib_context_log(p->h->context,GRIB_LOG_ERROR,
+                        "Unable to find template %s from %s ",act->name,fname);
+                return GRIB_FILE_NOT_FOUND;
+            }
+            la = get_empty_template(p->h->context,&ret);
+            if (ret) return ret;
+        } else
+            la = grib_parse_file(p->h->context, fpath);
     }
-      next= next->next;
+    as->flags |= GRIB_ACCESSOR_FLAG_HIDDEN;
+    gs = as->sub_section;
+    gs->branch = la; /* Will be used to prevent unecessary reparse */
+
+    grib_push_accessor(as,p->block);
+
+    if(la){
+        next = la;
+
+        while(next){
+            ret = grib_create_accessor(gs, next,h);
+            if(ret != GRIB_SUCCESS) {
+                if(p->h->context->debug)
+                {
+                    grib_context_log(p->h->context,GRIB_LOG_ERROR,
+                            "Error processing template %s: %s [%s] %04lx",
+                            fname,grib_get_error_message(ret),next->name,next->flags);
+                }
+                return ret;
+            }
+            next= next->next;
+        }
     }
-  }
-  return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
 
-
 static grib_action* reparse(grib_action* a,grib_accessor* acc,int *doit)
 {
-  grib_action_template* self = (grib_action_template*)a;
-  char *fpath=0;
-
-  if(self->arg){
-    char fname[1024];
-    grib_recompose_name(acc->parent->h,NULL,self->arg,fname,1);
-
-    if ((fpath=grib_context_full_defs_path(acc->parent->h->context,fname))==NULL) {
-      if (!self->nofail) {
-        grib_context_log(acc->parent->h->context,GRIB_LOG_ERROR,
-                         "Unable to find template %s from %s ",a->name,fname);
-        return NULL;
-      } return a;
+    grib_action_template* self = (grib_action_template*)a;
+    char *fpath=0;
+
+    if(self->arg){
+        char fname[1024];
+        grib_recompose_name(grib_handle_of_accessor(acc),NULL,self->arg,fname,1);
+
+        if ((fpath=grib_context_full_defs_path(acc->context,fname))==NULL) {
+            if (!self->nofail) {
+                grib_context_log(acc->context,GRIB_LOG_ERROR,
+                        "Unable to find template %s from %s ",a->name,fname);
+                return NULL;
+            } return a;
+        }
+
+        /* printf("REPARSE %s\n",fpath); */
+        return grib_parse_file(acc->context, fpath);
     }
 
-    /* printf("REPARSE %s\n",fpath); */
-    return grib_parse_file(acc->parent->h->context, fpath);
-  }
-
-  return NULL;
-
+    return NULL;
 }
 
-
 static void destroy(grib_context* context,grib_action* act)
 {
-  grib_action_template* a = (grib_action_template*)act;
+    grib_action_template* a = (grib_action_template*)act;
 
-  grib_context_free_persistent(context, a->arg);
-  grib_context_free_persistent(context, act->name);
-  grib_context_free_persistent(context, act->op);
+    grib_context_free_persistent(context, a->arg);
+    grib_context_free_persistent(context, act->name);
+    grib_context_free_persistent(context, act->op);
 }
diff --git a/src/action_class_transient_darray.c b/src/action_class_transient_darray.c
new file mode 100644
index 0000000..378c780
--- /dev/null
+++ b/src/action_class_transient_darray.c
@@ -0,0 +1,148 @@
+/*
+ * Copyright 2005-2016 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"
+/*
+   This is used by make_class.pl
+
+   START_CLASS_DEF
+   CLASS      = action
+   SUPER      = action_class_gen
+   IMPLEMENTS = dump;xref
+   IMPLEMENTS = destroy;execute
+   MEMBERS    = grib_darray *darray
+   MEMBERS    = char *name
+   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 xref            (grib_action* d, FILE* f,const char* path);
+static void destroy         (grib_context*,grib_action*);
+static int execute(grib_action* a,grib_handle* h);
+
+
+typedef struct grib_action_transient_darray {
+    grib_action          act;  
+/* Members defined in gen */
+	long            len;
+	grib_arguments* params;
+/* Members defined in transient_darray */
+	grib_darray *darray;
+	char *name;
+} grib_action_transient_darray;
+
+extern grib_action_class* grib_action_class_gen;
+
+static grib_action_class _grib_action_class_transient_darray = {
+    &grib_action_class_gen,                              /* super                     */
+    "action_class_transient_darray",                              /* name                      */
+    sizeof(grib_action_transient_darray),            /* size                      */
+    0,                                   /* inited */
+    &init_class,                         /* init_class */
+    0,                               /* init                      */
+    &destroy,                            /* destroy */
+
+    &dump,                               /* dump                      */
+    &xref,                               /* xref                      */
+
+    0,             /* create_accessor*/
+
+    0,                            /* notify_change */
+    0,                            /* reparse */
+    &execute,                            /* execute */
+    0,                            /* compile */
+};
+
+grib_action_class* grib_action_class_transient_darray = &_grib_action_class_transient_darray;
+
+static void init_class(grib_action_class* c)
+{
+	c->create_accessor	=	(*(c->super))->create_accessor;
+	c->notify_change	=	(*(c->super))->notify_change;
+	c->reparse	=	(*(c->super))->reparse;
+	c->compile	=	(*(c->super))->compile;
+}
+/* END_CLASS_IMP */
+
+grib_action* grib_action_create_transient_darray( grib_context* context, const char* name, grib_darray* darray)
+{
+    grib_action_transient_darray* a = NULL;
+    grib_action_class* c   = grib_action_class_transient_darray;
+    grib_action* act       = (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
+    act->op              = grib_context_strdup_persistent(context,"transient_darray");
+
+    act->cclass       = c;
+    a                 = (grib_action_transient_darray*)act;
+    act->context      = context;
+
+    a->darray  = darray;
+    a->name        = grib_context_strdup_persistent(context,name);
+
+    act->name      = grib_context_strdup_persistent(context,name);
+
+    return act;
+}
+
+static int execute(grib_action* act, grib_handle *h)
+{
+    grib_action_transient_darray* self = (grib_action_transient_darray*) act;
+    size_t len=grib_darray_used_size(self->darray);
+    grib_accessor* a=NULL;
+    grib_section* p=h->root;
+
+    a = grib_accessor_factory( p, act,self->len,self->params);
+    if(!a) return GRIB_INTERNAL_ERROR;
+
+    grib_push_accessor(a,p->block);
+
+    if(a->flags & GRIB_ACCESSOR_FLAG_CONSTRAINT)
+        grib_dependency_observe_arguments(a,act->default_value);
+
+    return grib_pack_double(a,self->darray->v,&len);
+}
+
+static void dump(grib_action* act, FILE* f, int lvl)
+{
+    int i =0;
+    grib_action_transient_darray* self=(grib_action_transient_darray*)act;
+    for (i=0;i<lvl;i++)
+        grib_context_print(act->context,f,"     ");
+    grib_context_print(act->context,f,self->name);
+    printf("\n");
+}
+
+static void destroy(grib_context* context,grib_action* act)
+{
+    grib_action_transient_darray* a = (grib_action_transient_darray*) act;
+
+    grib_context_free_persistent(context, a->name);
+    grib_darray_delete(context,a->darray);
+    grib_context_free_persistent(context, act->name);
+    grib_context_free_persistent(context, act->op);
+}
+
+static void xref(grib_action* d, FILE* f,const char *path)
+{
+}
diff --git a/src/action_class_trigger.c b/src/action_class_trigger.c
index 451cd54..16d414c 100644
--- a/src/action_class_trigger.c
+++ b/src/action_class_trigger.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -91,91 +91,86 @@ static void init_class(grib_action_class* c)
 
 grib_action *grib_action_create_trigger(grib_context *context, grib_arguments *args, grib_action *block)
 {
-	char name[1024];
+    char name[1024];
 
-	grib_action_trigger* a = 0;
-	grib_action_class* c   =  grib_action_class_trigger;
-	grib_action* act       =  (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
+    grib_action_trigger* a = 0;
+    grib_action_class* c   =  grib_action_class_trigger;
+    grib_action* act       =  (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
 
-	sprintf(name,"_trigger%p",(void*)act);
+    sprintf(name,"_trigger%p",(void*)act);
 
-	act-> name             =  grib_context_strdup_persistent(context,name);
-	act-> op               =  grib_context_strdup_persistent(context,"section");
-	act-> cclass           =  c;
-	act-> next             =  NULL;
-	act->context           =  context;
+    act-> name             =  grib_context_strdup_persistent(context,name);
+    act-> op               =  grib_context_strdup_persistent(context,"section");
+    act-> cclass           =  c;
+    act-> next             =  NULL;
+    act->context           =  context;
 
-	a = ( grib_action_trigger*)act;
-	a->trigger_on        = args;
-	a->block             = block;
+    a = ( grib_action_trigger*)act;
+    a->trigger_on        = args;
+    a->block             = block;
 
-	return act;
+    return act;
 }
 
 static void dump( grib_action* act, FILE* f, int lvl)
 {
-	/* grib_action_trigger* a = ( grib_action_trigger*)act; */
-	int i = 0;
-	for (i=0;i<lvl;i++) grib_context_print(act->context,f,"     ");
-	grib_context_print(act->context,f,"Trigger\n");  
-
+    /* grib_action_trigger* a = ( grib_action_trigger*)act; */
+    int i = 0;
+    for (i=0;i<lvl;i++) grib_context_print(act->context,f,"     ");
+    grib_context_print(act->context,f,"Trigger\n");
 }
 
-
 static int  create_accessor(grib_section* p, grib_action* act, grib_loader *h )
 {
-	int ret = GRIB_SUCCESS;
-	grib_action_trigger* a = ( grib_action_trigger*)act;
-	grib_action* next = NULL;
-	grib_accessor* as = NULL;
-	grib_section*         gs = NULL;
-
+    int ret = GRIB_SUCCESS;
+    grib_action_trigger* a = ( grib_action_trigger*)act;
+    grib_action* next = NULL;
+    grib_accessor* as = NULL;
+    grib_section*         gs = NULL;
 
-	as = grib_accessor_factory(p, act,0,NULL);  
 
-	if(!as) return GRIB_INTERNAL_ERROR;
+    as = grib_accessor_factory(p, act,0,NULL);
 
-	gs = as->sub_section;
-	gs->branch = 0; /* Force a reparse each time */
+    if(!as) return GRIB_INTERNAL_ERROR;
 
-	grib_push_accessor(as,p->block);
-	grib_dependency_observe_arguments(as,a->trigger_on);
+    gs = as->sub_section;
+    gs->branch = 0; /* Force a reparse each time */
 
-	next = a->block;
+    grib_push_accessor(as,p->block);
+    grib_dependency_observe_arguments(as,a->trigger_on);
 
-	while(next){
-		ret = grib_create_accessor(gs, next,h);
-		if(ret != GRIB_SUCCESS) return ret;
-		next= next->next;
-	}
+    next = a->block;
 
-	return GRIB_SUCCESS;
+    while(next){
+        ret = grib_create_accessor(gs, next,h);
+        if(ret != GRIB_SUCCESS) return ret;
+        next= next->next;
+    }
 
+    return GRIB_SUCCESS;
 }
 
-
 static grib_action* reparse(grib_action* a,grib_accessor* acc,int* doit)
 {
-	grib_action_trigger* self = (grib_action_trigger*)a;
-	return self->block;
+    grib_action_trigger* self = (grib_action_trigger*)a;
+    return self->block;
 }
 
-
 /* COMEBACK */
 static void destroy(grib_context* context,grib_action* act)
 {
-	grib_action_trigger* a = (grib_action_trigger*)act;
+    grib_action_trigger* a = (grib_action_trigger*)act;
 
-	grib_action *b = a->block;
+    grib_action *b = a->block;
 
-	while(b)
-	{
-		grib_action *n = b->next;
-		grib_action_delete(context,b);
-		b = n;
-	}
+    while(b)
+    {
+        grib_action *n = b->next;
+        grib_action_delete(context,b);
+        b = n;
+    }
 
-	grib_arguments_free(context, a->trigger_on);
-	grib_context_free_persistent(context, act->name);
-	grib_context_free_persistent(context, act->op);
+    grib_arguments_free(context, a->trigger_on);
+    grib_context_free_persistent(context, act->name);
+    grib_context_free_persistent(context, act->op);
 }
diff --git a/src/action_class_variable.c b/src/action_class_variable.c
index 94fac70..820d315 100644
--- a/src/action_class_variable.c
+++ b/src/action_class_variable.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/action_class_when.c b/src/action_class_when.c
index fbe5d6c..dca224d 100644
--- a/src/action_class_when.c
+++ b/src/action_class_when.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -85,30 +85,30 @@ static void init_class(grib_action_class* c)
 /* END_CLASS_IMP */
 
 grib_action* grib_action_create_when( grib_context* context,
-    grib_expression* expression,
-    grib_action* block_true,grib_action* block_false)
+        grib_expression* expression,
+        grib_action* block_true,grib_action* block_false)
 {
-  char name[1024];
+    char name[1024];
 
-  grib_action_when* a ;
-  grib_action_class* c   = grib_action_class_when;
-  grib_action* act       = (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
-  act->op              = grib_context_strdup_persistent(context,"when");
+    grib_action_when* a ;
+    grib_action_class* c   = grib_action_class_when;
+    grib_action* act       = (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
+    act->op              = grib_context_strdup_persistent(context,"when");
 
-  act->cclass       = c;
-  a                 = (grib_action_when*)act;
-  act->context      = context;
+    act->cclass       = c;
+    a                 = (grib_action_when*)act;
+    act->context      = context;
 
-  a->expression  = expression;
-  a->block_true       = block_true;
-  a->block_false      = block_false;
+    a->expression  = expression;
+    a->block_true       = block_true;
+    a->block_false      = block_false;
 
 
-  sprintf(name,"_when%p",(void*)expression);
+    sprintf(name,"_when%p",(void*)expression);
 
-  act->name      = grib_context_strdup_persistent(context,name);
+    act->name      = grib_context_strdup_persistent(context,name);
 
-  return act;
+    return act;
 }
 
 static void compile(grib_action* act, grib_compiler *compiler)
@@ -132,115 +132,113 @@ static void compile(grib_action* act, grib_compiler *compiler)
     fprintf(compiler->out,",%s,%s);\n", t,f);
 }
 
-
 static int create_accessor(grib_section* p, grib_action* act,grib_loader *h)
 {
-  grib_action_when* self = (grib_action_when*)act;
-  grib_accessor*  as = grib_accessor_factory(p, act,0,0);
-  if(!as)return GRIB_INTERNAL_ERROR;
+    grib_action_when* self = (grib_action_when*)act;
+    grib_accessor*  as = grib_accessor_factory(p, act,0,0);
+    if(!as)return GRIB_INTERNAL_ERROR;
 
-  grib_dependency_observe_expression(as,self->expression);
+    grib_dependency_observe_expression(as,self->expression);
 
-  grib_push_accessor(as,p->block);
+    grib_push_accessor(as,p->block);
 
-  return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
 
-
 static void dump(grib_action* act, FILE* f, int lvl)
 {
-  grib_action_when* a = (grib_action_when*)act;
-  int i = 0;
-
-  for (i=0;i<lvl;i++)
-    grib_context_print(act->context,f,"     ");
+    grib_action_when* a = (grib_action_when*)act;
+    int i = 0;
 
-  printf("when(%s) { ",act->name);
-  grib_expression_print(act->context,a->expression,0);
-  printf("\n");
+    for (i=0;i<lvl;i++)
+        grib_context_print(act->context,f,"     ");
 
-  grib_dump_action_branch(f,a->block_true,lvl+1);
+    printf("when(%s) { ",act->name);
+    grib_expression_print(act->context,a->expression,0);
+    printf("\n");
 
-  for (i=0;i<lvl;i++)
-    grib_context_print(act->context,f,"     ");
-  printf("}");
-  
-  if (a->block_false) {
-    printf(" else { ");
-    
     grib_dump_action_branch(f,a->block_true,lvl+1);
-    
+
     for (i=0;i<lvl;i++)
-      grib_context_print(act->context,f,"     ");
+        grib_context_print(act->context,f,"     ");
     printf("}");
-  }
-  printf("\n");
+
+    if (a->block_false) {
+        printf(" else { ");
+
+        grib_dump_action_branch(f,a->block_true,lvl+1);
+
+        for (i=0;i<lvl;i++)
+            grib_context_print(act->context,f,"     ");
+        printf("}");
+    }
+    printf("\n");
 }
 
 static int notify_change(grib_action* a, grib_accessor* observer,grib_accessor* observed)
 {
-  grib_action_when* self = (grib_action_when*) a;
-  grib_action *b = NULL;
-  int ret = GRIB_SUCCESS;
-  long lres;
-
-  if ((ret = grib_expression_evaluate_long(observed->parent->h, self->expression,&lres))
-    != GRIB_SUCCESS) return ret;
-
-  if(0 && self->loop)
-  {
-    printf("LOOP detected...\n");
-    printf("WHEN triggered by %s %ld\n",observed->name,lres);
-    grib_expression_print(observed->parent->h->context,self->expression,0);
-    printf("\n");
-    return ret;
-  }
-
-  self->loop = 1;
+    grib_action_when* self = (grib_action_when*) a;
+    grib_action *b = NULL;
+    int ret = GRIB_SUCCESS;
+    long lres;
+
+    if ((ret = grib_expression_evaluate_long(grib_handle_of_accessor(observed), self->expression,&lres))
+            != GRIB_SUCCESS) return ret;
+
+    if(0 && self->loop)
+    {
+        printf("LOOP detected...\n");
+        printf("WHEN triggered by %s %ld\n",observed->name,lres);
+        grib_expression_print(observed->context,self->expression,0);
+        printf("\n");
+        return ret;
+    }
 
-  if(lres) 
-    b=self->block_true;
-  else
-    b=self->block_false;
+    self->loop = 1;
 
-  while(b) {
-    ret = grib_action_execute(b,observed->parent->h);
-    if(ret != GRIB_SUCCESS) {
-      self->loop = 0;
-      return ret;
+    if(lres)
+        b=self->block_true;
+    else
+        b=self->block_false;
+
+    while(b) {
+        ret = grib_action_execute(b,grib_handle_of_accessor(observed));
+        if(ret != GRIB_SUCCESS) {
+            self->loop = 0;
+            return ret;
+        }
+        b = b->next;
     }
-    b = b->next;
-  }
 
-  self->loop = 0;
+    self->loop = 0;
 
-  return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
 
 static void destroy(grib_context* context,grib_action* act)
 {
-  grib_action_when* self = (grib_action_when*) act;
-  grib_action *t = self->block_true;
-
-  while(t)
-  {
-    grib_action *nt = t->next;
-    grib_action_delete(context,t);
-    t = nt;
-  }
-
-  t=self->block_false;
-  while(t)
-  {
-    grib_action *nt = t->next;
-    grib_action_delete(context,t);
-    t = nt;
-  }
-
-  grib_expression_free(context,self->expression);
-
-  grib_context_free_persistent(context, act->name);
-  grib_context_free_persistent(context, act->op);
+    grib_action_when* self = (grib_action_when*) act;
+    grib_action *t = self->block_true;
+
+    while(t)
+    {
+        grib_action *nt = t->next;
+        grib_action_delete(context,t);
+        t = nt;
+    }
+
+    t=self->block_false;
+    while(t)
+    {
+        grib_action *nt = t->next;
+        grib_action_delete(context,t);
+        t = nt;
+    }
+
+    grib_expression_free(context,self->expression);
+
+    grib_context_free_persistent(context, act->name);
+    grib_context_free_persistent(context, act->op);
 }
 
 static void xref(grib_action* d, FILE* f,const char* path)
diff --git a/src/action_class_while.c b/src/action_class_while.c
old mode 100755
new mode 100644
index 8b03709..fefc417
--- a/src/action_class_while.c
+++ b/src/action_class_while.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/action_class_write.c b/src/action_class_write.c
old mode 100755
new mode 100644
index b51bc76..3a980ce
--- a/src/action_class_write.c
+++ b/src/action_class_write.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -82,122 +82,115 @@ static void init_class(grib_action_class* c)
 
 grib_action* grib_action_create_write( grib_context* context, const char* name,int append,int padtomultiple)
 {
-  char buf[1024];
+    char buf[1024];
 
-  grib_action_write* a =NULL;
-  grib_action_class* c   = grib_action_class_write;
-  grib_action* act       = (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
-  act->op              =  grib_context_strdup_persistent(context,"section");
+    grib_action_write* a =NULL;
+    grib_action_class* c   = grib_action_class_write;
+    grib_action* act       = (grib_action*)grib_context_malloc_clear_persistent(context,c->size);
+    act->op              =  grib_context_strdup_persistent(context,"section");
 
-  act->cclass            = c;
-  a                      = (grib_action_write*)act;
-  act->context           = context;
+    act->cclass            = c;
+    a                      = (grib_action_write*)act;
+    act->context           = context;
 
-  a->name            = grib_context_strdup_persistent(context,name);
+    a->name            = grib_context_strdup_persistent(context,name);
 
-  sprintf(buf,"write%p",(void*)a->name);
+    sprintf(buf,"write%p",(void*)a->name);
 
-  act->name      = grib_context_strdup_persistent(context,buf);
-  a->append=append;
-  a->padtomultiple=padtomultiple;
+    act->name      = grib_context_strdup_persistent(context,buf);
+    a->append=append;
+    a->padtomultiple=padtomultiple;
 
-  return act;
+    return act;
 }
 
 static int execute(grib_action* act, grib_handle *h)
 {
-  int ioerr = 0;
-	grib_action_write* a = (grib_action_write*) act;
-	int err = GRIB_SUCCESS;
-	size_t size;
-	const void* buffer = NULL;
-	const char* filename;
-	char string[1024] = { 0, };
-
-	grib_file* of = NULL;
-
-	if ((err = grib_get_message(h, &buffer, &size)) != GRIB_SUCCESS) {
-		grib_context_log(act->context, GRIB_LOG_ERROR,"unable to get message\n");
-		return err;
-	}
-
-	if (strlen(a->name) != 0) {
-		err = grib_recompose_name(h, NULL, a->name, string, 0);
-		filename = string;
-	} else {
-		filename = act->context->outfilename ?	act->context->outfilename : "filter.out";
-	}
-
-	if (a->append) of = grib_file_open(filename, "a", &err);
-	else           of = grib_file_open(filename, "w", &err);
-
-	if (!of || !of->handle) {
-		grib_context_log(act->context, GRIB_LOG_ERROR,"unable to open file %s\n", filename);
-		return GRIB_IO_PROBLEM;
-	}
-
-	if (h->gts_header) {
-		if (fwrite(h->gts_header, 1, h->gts_header_len, of->handle) != h->gts_header_len) {
-			ioerr = errno;
-			grib_context_log(act->context, (GRIB_LOG_ERROR) | (GRIB_LOG_PERROR),
-					"Error writing GTS header to %s", filename);
-			return GRIB_IO_PROBLEM;
-		}
-	}
-
-	if (fwrite(buffer, 1, size, of->handle) != size) {
-		ioerr = errno;
-		grib_context_log(act->context, (GRIB_LOG_ERROR) | (GRIB_LOG_PERROR),
-				"Error writing to %s", filename);
-		return GRIB_IO_PROBLEM;
-	}
-
-	if (a->padtomultiple) {
-		char* zeros;
-		size_t padding = a->padtomultiple - size % a->padtomultiple;
-		/* printf("XXX padding=%d size=%d padtomultiple=%d\n",padding,size,a->padtomultiple); */
-		zeros = (char*)calloc(padding, 1);
-		if (fwrite(zeros, 1, padding, of->handle) != padding) {
-			ioerr = errno;
-			grib_context_log(act->context, (GRIB_LOG_ERROR) | (GRIB_LOG_PERROR),
-					"Error writing to %s", filename);
-			free(zeros);
-			return GRIB_IO_PROBLEM;
-		}
-		free(zeros);
-	}
-
-	if (h->gts_header) {
-		char gts_trailer[4] = { '\x0D', '\x0D', '\x0A', '\x03' };
-		if (fwrite(gts_trailer, 1, 4, of->handle) != 4) {
-			ioerr = errno;
-			grib_context_log(act->context, (GRIB_LOG_ERROR) | (GRIB_LOG_PERROR),
-					"Error writing GTS trailer to %s", filename);
-			return GRIB_IO_PROBLEM;
-		}
-	}
-
-	grib_file_close(filename, &err);
-	if (err != GRIB_SUCCESS) {
-		grib_context_log(act->context, GRIB_LOG_ERROR,"unable to write message\n");
-		return err;
-	}
-
-	return err;
+    grib_action_write* a = (grib_action_write*) act;
+    int err = GRIB_SUCCESS;
+    size_t size;
+    const void* buffer = NULL;
+    const char* filename;
+    char string[1024] = { 0, };
+
+    grib_file* of = NULL;
+
+    if ((err = grib_get_message(h, &buffer, &size)) != GRIB_SUCCESS) {
+        grib_context_log(act->context, GRIB_LOG_ERROR,"unable to get message\n");
+        return err;
+    }
+
+    if (strlen(a->name) != 0) {
+        err = grib_recompose_name(h, NULL, a->name, string, 0);
+        filename = string;
+    } else {
+        filename = act->context->outfilename ?	act->context->outfilename : "filter.out";
+    }
+
+    if (a->append) of = grib_file_open(filename, "a", &err);
+    else           of = grib_file_open(filename, "w", &err);
+
+    if (!of || !of->handle) {
+        grib_context_log(act->context, GRIB_LOG_ERROR,"unable to open file %s\n", filename);
+        return GRIB_IO_PROBLEM;
+    }
+
+    if (h->gts_header) {
+        if (fwrite(h->gts_header, 1, h->gts_header_len, of->handle) != h->gts_header_len) {
+            grib_context_log(act->context, (GRIB_LOG_ERROR) | (GRIB_LOG_PERROR),
+                    "Error writing GTS header to %s", filename);
+            return GRIB_IO_PROBLEM;
+        }
+    }
+
+    if (fwrite(buffer, 1, size, of->handle) != size) {
+        grib_context_log(act->context, (GRIB_LOG_ERROR) | (GRIB_LOG_PERROR),
+                "Error writing to %s", filename);
+        return GRIB_IO_PROBLEM;
+    }
+
+    if (a->padtomultiple) {
+        char* zeros;
+        size_t padding = a->padtomultiple - size % a->padtomultiple;
+        /* printf("XXX padding=%d size=%d padtomultiple=%d\n",padding,size,a->padtomultiple); */
+        zeros = (char*)calloc(padding, 1);
+        if (fwrite(zeros, 1, padding, of->handle) != padding) {
+            grib_context_log(act->context, (GRIB_LOG_ERROR) | (GRIB_LOG_PERROR),
+                    "Error writing to %s", filename);
+            free(zeros);
+            return GRIB_IO_PROBLEM;
+        }
+        free(zeros);
+    }
+
+    if (h->gts_header) {
+        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);
+            return GRIB_IO_PROBLEM;
+        }
+    }
+
+    grib_file_close(filename, &err);
+    if (err != GRIB_SUCCESS) {
+        grib_context_log(act->context, GRIB_LOG_ERROR,"unable to write message\n");
+        return err;
+    }
+
+    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;
+    grib_action_write* a = (grib_action_write*) act;
 
-  grib_context_free_persistent(context, a->name);
-  grib_context_free_persistent(context, act->name);
-  grib_context_free_persistent(context, act->op);
+    grib_context_free_persistent(context, a->name);
+    grib_context_free_persistent(context, act->name);
+    grib_context_free_persistent(context, act->op);
 
 }
diff --git a/src/compile.c b/src/compile.c
index e2f996d..7044bc4 100644
--- a/src/compile.c
+++ b/src/compile.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/config.h b/src/config.h
index d77baf0..60bcd32 100644
--- a/src/config.h
+++ b/src/config.h
@@ -11,13 +11,13 @@
 #define ECCODES_CURRENT 1
 
 /* ecCodes version */
-#define ECCODES_MAIN_VERSION 0.10.0
+#define ECCODES_MAIN_VERSION 0.13.0
 
 /* ecCodes Major release */
 #define ECCODES_MAJOR_VERSION 0
 
 /* ecCodes Minor release */
-#define ECCODES_MINOR_VERSION 10
+#define ECCODES_MINOR_VERSION 13
 
 /* ecCodes Revision ABI version */
 #define ECCODES_REVISION 0
diff --git a/src/eccodes.c b/src/eccodes.c
index 7d401cb..f2daa43 100644
--- a/src/eccodes.c
+++ b/src/eccodes.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -423,7 +423,7 @@ void codes_gribex_mode_off(grib_context* c)
 
 /* keys iterator */
 /******************************************************************************/
-grib_keys_iterator* codes_keys_iterator_new(grib_handle* h,unsigned long filter_flags, char* name_space)
+grib_keys_iterator* codes_keys_iterator_new(grib_handle* h,unsigned long filter_flags, const char* name_space)
 {
     return grib_keys_iterator_new(h,filter_flags,name_space);
 }
@@ -510,10 +510,6 @@ int codes_points_get_values(grib_handle* h, grib_points* points, double* val)
 {
     return grib_points_get_values(h,points,val);
 }
-grib_context* codes_context_new(grib_context* c)
-{
-    return grib_context_new(c);
-}
 void codes_context_delete(grib_context* c)
 {
     grib_context_delete(c);
diff --git a/src/eccodes.h b/src/eccodes.h
index 896e1a7..1c3dfcd 100644
--- a/src/eccodes.h
+++ b/src/eccodes.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -70,6 +70,7 @@ Log mode for information for processing information
 #define CODES_DUMP_FLAG_HEXADECIMAL  GRIB_DUMP_FLAG_HEXADECIMAL 
 #define CODES_DUMP_FLAG_NO_DATA      GRIB_DUMP_FLAG_NO_DATA     
 #define CODES_DUMP_FLAG_ALL_DATA     GRIB_DUMP_FLAG_ALL_DATA     
+#define CODES_DUMP_FLAG_ALL_ATTRIBUTES     GRIB_DUMP_FLAG_ALL_ATTRIBUTES     
 
 /* codes_nearest flags */
 #define CODES_NEAREST_SAME_GRID   GRIB_NEAREST_SAME_GRID  
@@ -877,14 +878,6 @@ void codes_dump_action_tree(codes_context* c, FILE* f) ;
 codes_context* codes_context_get_default(void);
 
 /**
-*  Create and allocate a new context from a parent context.
-*
-* @param c           : the context to be cloned, NULL for default context
-* @return            the new and empty context, NULL if error
-*/
-codes_context* codes_context_new(codes_context* c);
-
-/**
 *  Frees the cached definition files of the context
 *
 * @param c           : the context to be deleted
@@ -990,7 +983,7 @@ attributes or by the namespace they belong to.
 *  @return              keys iterator ready to iterate through keys according to filter_flags
 *                         and namespace
 */
-codes_keys_iterator* codes_keys_iterator_new(codes_handle* h,unsigned long filter_flags, char* name_space);
+codes_keys_iterator* codes_keys_iterator_new(codes_handle* h,unsigned long filter_flags, const char* name_space);
 
 /*! Step to the next iterator.
 *  @param kiter         : valid codes_keys_iterator
@@ -1247,6 +1240,10 @@ Error codes returned by the eccodes functions.
 #define CODES_TOO_MANY_ATTRIBUTES GRIB_TOO_MANY_ATTRIBUTES
 /** Attribute not found. */
 #define CODES_ATTRIBUTE_NOT_FOUND GRIB_ATTRIBUTE_NOT_FOUND
+/** Edition not supported. */
+#define CODES_UNSUPPORTED_EDITION GRIB_UNSUPPORTED_EDITION
+/** Value out of coding range */
+#define CODES_OUT_OF_RANGE        GRIB_OUT_OF_RANGE
 
 
 /*! @}*/
diff --git a/src/eccodes_version.h b/src/eccodes_version.h
index 623734c..7cd019c 100644
--- a/src/eccodes_version.h
+++ b/src/eccodes_version.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -11,10 +11,10 @@
 #ifndef eccodes_version_H
 #define eccodes_version_H
 
-#define ECCODES_VERSION_STR      "0.10.0"
+#define ECCODES_VERSION_STR      "0.13.0"
 
 #define ECCODES_MAJOR_VERSION    0
-#define ECCODES_MINOR_VERSION    10
+#define ECCODES_MINOR_VERSION    13
 #define ECCODES_REVISION_VERSION 0
 #define ECCODES_VERSION (ECCODES_MAJOR_VERSION*10000+ECCODES_MINOR_VERSION*100+ECCODES_REVISION_VERSION)
 
diff --git a/src/eccodes_version.h.in b/src/eccodes_version.h.in
index fc141da..5fe0315 100644
--- a/src/eccodes_version.h.in
+++ b/src/eccodes_version.h.in
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/eccodes_windef.h b/src/eccodes_windef.h
index 18679d3..d6325f5 100644
--- a/src/eccodes_windef.h
+++ b/src/eccodes_windef.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/encode_double_array.c b/src/encode_double_array.c
index ea9dd37..9529f04 100644
--- a/src/encode_double_array.c
+++ b/src/encode_double_array.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/errors.pl b/src/errors.pl
index b5a61b4..1cdde7d 100755
--- a/src/errors.pl
+++ b/src/errors.pl
@@ -1,5 +1,5 @@
 #!/usr/bin/perl
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/src/functions.c b/src/functions.c
index 0fccee0..b096b1f 100644
--- a/src/functions.c
+++ b/src/functions.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib2c.pl b/src/grib2c.pl
index 40f30ba..c3c521f 100755
--- a/src/grib2c.pl
+++ b/src/grib2c.pl
@@ -1,5 +1,5 @@
 #!/usr/bin/perl
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/src/grib_2order_packer_simple.c b/src/grib_2order_packer_simple.c
index 5a991b5..f576750 100644
--- a/src/grib_2order_packer_simple.c
+++ b/src/grib_2order_packer_simple.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_accessor.c b/src/grib_accessor.c
index 3e83ea1..cfff7b7 100644
--- a/src/grib_accessor.c
+++ b/src/grib_accessor.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -18,459 +18,473 @@
 
 void  grib_accessor_dump(grib_accessor* a, grib_dumper* f)
 {
-  grib_accessor_class *c = a->cclass;
-  while(c)
-  {
-
-    if(c->dump)
+    grib_accessor_class *c = a->cclass;
+    while(c)
     {
-      c->dump(a, f);
-      return;
+        if(c->dump)
+        {
+            c->dump(a, f);
+            return;
+        }
+        c = c->super ? *(c->super) : NULL;
     }
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
+    Assert(0);
 }
 
-
 int grib_pack_missing(grib_accessor* a)
 {
-  grib_accessor_class *c = a->cclass;
-  /*grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG, "(%s)%s is packing (double) %g",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?(*v):0); */
-  while(c)
-  {
-    if(c->pack_missing)
+    grib_accessor_class *c = a->cclass;
+    /*grib_context_log(a->context, GRIB_LOG_DEBUG, "(%s)%s is packing (double) %g",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?(*v):0); */
+    while(c)
     {
-      return c->pack_missing(a);
+        if(c->pack_missing)
+        {
+            return c->pack_missing(a);
+        }
+        c = c->super ? *(c->super) : NULL;
     }
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    Assert(0);
+    return 0;
 }
 
 int grib_pack_zero(grib_accessor* a)
 {
-  grib_accessor_class *c = a->cclass;
-  /*grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG, "(%s)%s is packing (double) %g",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?(*v):0); */
-  while(c)
-  {
-    if(c->clear)
+    grib_accessor_class *c = a->cclass;
+    /*grib_context_log(a->context, GRIB_LOG_DEBUG, "(%s)%s is packing (double) %g",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?(*v):0); */
+    while(c)
     {
-      return c->clear(a);
+        if(c->clear)
+        {
+            return c->clear(a);
+        }
+        c = c->super ? *(c->super) : NULL;
     }
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    Assert(0);
+    return 0;
 }
 
-
-
 int grib_is_missing_internal(grib_accessor* a)
 {
-  grib_accessor_class *c = a->cclass;
-  /*grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG, "(%s)%s is packing (double) %g",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?(*v):0); */
-  while(c)
-  {
-    if(c->is_missing)
+    grib_accessor_class *c = a->cclass;
+    /*grib_context_log(a->context, GRIB_LOG_DEBUG, "(%s)%s is packing (double) %g",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?(*v):0); */
+    while(c)
     {
-      return c->is_missing(a);
+        if(c->is_missing)
+        {
+            return c->is_missing(a);
+        }
+        c = c->super ? *(c->super) : NULL;
     }
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    Assert(0);
+    return 0;
 }
 int grib_pack_double(grib_accessor* a, const double* v, size_t *len )
 {
-  grib_accessor_class *c = a->cclass;
-  /*grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG, "(%s)%s is packing (double) %g",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?(*v):0); */
-  while(c)
-  {
-    if(c->pack_double)
+    grib_accessor_class *c = a->cclass;
+    /*grib_context_log(a->context, GRIB_LOG_DEBUG, "(%s)%s is packing (double) %g",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?(*v):0); */
+    while(c)
     {
-      return c->pack_double(a,v,len);
+        if(c->pack_double)
+        {
+            return c->pack_double(a,v,len);
+        }
+        c = c->super ? *(c->super) : NULL;
     }
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    Assert(0);
+    return 0;
 }
 
 int grib_pack_expression(grib_accessor* a, grib_expression *e )
 {
-  grib_accessor_class *c = a->cclass;
-  /*grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG, "(%s)%s is packing (double) %g",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?(*v):0); */
-  while(c)
-  {
-    if(c->pack_expression)
+    grib_accessor_class *c = a->cclass;
+    /*grib_context_log(a->context, GRIB_LOG_DEBUG, "(%s)%s is packing (double) %g",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?(*v):0); */
+    while(c)
     {
-      return c->pack_expression(a,e);
+        if(c->pack_expression)
+        {
+            return c->pack_expression(a,e);
+        }
+        c = c->super ? *(c->super) : NULL;
     }
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    Assert(0);
+    return 0;
 }
 
-
 int grib_pack_string(grib_accessor* a, const char* v, size_t *len )
 {
-  grib_accessor_class *c = a->cclass;
-  /*grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG, "(%s)%s is packing (string) %s",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?v:"(null)");*/
-  while(c)
-  {
+    grib_accessor_class *c = a->cclass;
+    /*grib_context_log(a->context, GRIB_LOG_DEBUG, "(%s)%s is packing (string) %s",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?v:"(null)");*/
+    while(c)
+    {
 
-    if(c->pack_string)
+        if(c->pack_string)
+        {
+            return c->pack_string(a,v,len);
+        }
+        c = c->super ? *(c->super) : NULL;
+    }
+    Assert(0);
+    return 0;
+}
+
+int grib_pack_string_array(grib_accessor* a, const char** v, size_t *len )
+{
+    grib_accessor_class *c = a->cclass;
+    /*grib_context_log(a->context, GRIB_LOG_DEBUG, "(%s)%s is packing (string) %s",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?v:"(null)");*/
+    while(c)
     {
-      return c->pack_string(a,v,len);
+        if(c->pack_string_array)
+        {
+            return c->pack_string_array(a,v,len);
+        }
+        c = c->super ? *(c->super) : NULL;
     }
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    Assert(0);
+    return 0;
 }
 
 int grib_pack_long(grib_accessor* a,const long* v, size_t *len )
 {
-  grib_accessor_class *c = a->cclass;
-  /*grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG, "(%s)%s is packing (long) %d",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?(*v):0); */
-  while(c)
-  {
-    if(c->pack_long)
+    grib_accessor_class *c = a->cclass;
+    /*grib_context_log(a->context, GRIB_LOG_DEBUG, "(%s)%s is packing (long) %d",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?(*v):0); */
+    while(c)
     {
-      return c->pack_long(a,v,len);
+        if(c->pack_long)
+        {
+            return c->pack_long(a,v,len);
+        }
+        c = c->super ? *(c->super) : NULL;
     }
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    Assert(0);
+    return 0;
 }
 
 int grib_pack_bytes(grib_accessor* a, const unsigned char* v, size_t *len )
 {
-  grib_accessor_class *c = a->cclass;
-  /*grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG, "(%s)%s is packing (bytes) %d",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?(*v):0); */
-  while(c)
-  {
-    if(c->pack_bytes)
+    grib_accessor_class *c = a->cclass;
+    /*grib_context_log(a->context, GRIB_LOG_DEBUG, "(%s)%s is packing (bytes) %d",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?(*v):0); */
+    while(c)
     {
-      return c->pack_bytes(a,v,len);
+        if(c->pack_bytes)
+        {
+            return c->pack_bytes(a,v,len);
+        }
+        c = c->super ? *(c->super) : NULL;
     }
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    Assert(0);
+    return 0;
 }
 
 int grib_unpack_bytes(grib_accessor* a, unsigned char* v, size_t *len )
 {
-  grib_accessor_class *c = a->cclass;
-  /*grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG, "(%s)%s is unpacking (bytes)",(a->parent->owner)?(a->parent->owner->name):"root", a->name ); */
-  while(c)
-  {
-    if(c->unpack_bytes)
+    grib_accessor_class *c = a->cclass;
+    /*grib_context_log(a->context, GRIB_LOG_DEBUG, "(%s)%s is unpacking (bytes)",(a->parent->owner)?(a->parent->owner->name):"root", a->name ); */
+    while(c)
     {
-      return c->unpack_bytes(a,v,len);
+        if(c->unpack_bytes)
+        {
+            return c->unpack_bytes(a,v,len);
+        }
+        c = c->super ? *(c->super) : NULL;
     }
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    Assert(0);
+    return 0;
 }
 
 int grib_unpack_double_subarray(grib_accessor* a, double* v, size_t start, size_t len )
 {
-  grib_accessor_class *c = a->cclass;
-  while(c)
-  {
-    if(c->unpack_double_subarray)
+    grib_accessor_class *c = a->cclass;
+    while(c)
     {
-      return c->unpack_double_subarray(a,v,start,len);
+        if(c->unpack_double_subarray)
+        {
+            return c->unpack_double_subarray(a,v,start,len);
+        }
+        c = c->super ? *(c->super) : NULL;
     }
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    Assert(0);
+    return 0;
 }
 
 int grib_unpack_double(grib_accessor* a, double* v, size_t *len )
 {
-  grib_accessor_class *c = a->cclass;
-  /*grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG, "(%s)%s is unpacking (double)",(a->parent->owner)?(a->parent->owner->name):"root", a->name ); */
-  while(c)
-  {
-    if(c->unpack_double)
+    grib_accessor_class *c = a->cclass;
+    /*grib_context_log(a->context, GRIB_LOG_DEBUG, "(%s)%s is unpacking (double)",(a->parent->owner)?(a->parent->owner->name):"root", a->name ); */
+    while(c)
     {
-      return c->unpack_double(a,v,len);
+        if(c->unpack_double)
+        {
+            return c->unpack_double(a,v,len);
+        }
+        c = c->super ? *(c->super) : NULL;
     }
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    Assert(0);
+    return 0;
 }
 
 int grib_unpack_double_element(grib_accessor* a, size_t i ,double* v )
 {
-  grib_accessor_class *c = a->cclass;
-  while(c)
-  {
-    if(c->unpack_double_element)
+    grib_accessor_class *c = a->cclass;
+    while(c)
     {
-      return c->unpack_double_element(a,i,v);
+        if(c->unpack_double_element)
+        {
+            return c->unpack_double_element(a,i,v);
+        }
+        c = c->super ? *(c->super) : NULL;
     }
-    c = c->super ? *(c->super) : NULL;
-  }
-  return GRIB_NOT_IMPLEMENTED;
+    return GRIB_NOT_IMPLEMENTED;
 }
 
 int grib_unpack_string(grib_accessor* a, char* v, size_t *len )
 {
-  grib_accessor_class *c = a->cclass;
-  /* grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG, "(%s)%s is unpacking (string)",(a->parent->owner)?(a->parent->owner->name):"root", a->name ); */
-  while(c)
-  {
-    if(c->unpack_string)
+    grib_accessor_class *c = a->cclass;
+    /* grib_context_log(a->context, GRIB_LOG_DEBUG, "(%s)%s is unpacking (string)",(a->parent->owner)?(a->parent->owner->name):"root", a->name ); */
+    while(c)
     {
-      return c->unpack_string(a,v,len);
+        if(c->unpack_string)
+        {
+            return c->unpack_string(a,v,len);
+        }
+        c = c->super ? *(c->super) : NULL;
     }
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    Assert(0);
+    return 0;
 }
 
 int grib_unpack_string_array(grib_accessor* a, char** v, size_t *len )
 {
-  grib_accessor_class *c = a->cclass;
-  while(c)
-  {
-    if(c->unpack_string_array)
+    grib_accessor_class *c = a->cclass;
+    while(c)
     {
-      return c->unpack_string_array(a,v,len);
+        if(c->unpack_string_array)
+        {
+            return c->unpack_string_array(a,v,len);
+        }
+        c = c->super ? *(c->super) : NULL;
     }
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    Assert(0);
+    return 0;
 }
 
-int grib_accessors_list_unpack_long(grib_accessors_list* al,long* val,size_t* buffer_len) {
-  int err=GRIB_SUCCESS;
-  size_t unpacked_len=0;
-  size_t len=0;
+int grib_accessors_list_unpack_long(grib_accessors_list* al,long* val,size_t* buffer_len)
+{
+    int err=GRIB_SUCCESS;
+    size_t unpacked_len=0;
+    size_t len=0;
 
-  while (al && err==GRIB_SUCCESS ) {
-    len=*buffer_len-unpacked_len;
-    err=grib_unpack_long(al->accessor, val + unpacked_len, &len);
-    unpacked_len += len;
-    al=al->next;
-  }
+    while (al && err==GRIB_SUCCESS ) {
+        len=*buffer_len-unpacked_len;
+        err=grib_unpack_long(al->accessor, val + unpacked_len, &len);
+        unpacked_len += len;
+        al=al->next;
+    }
 
-  *buffer_len=unpacked_len;
-  return err;
+    *buffer_len=unpacked_len;
+    return err;
 }
 
-int grib_accessors_list_unpack_double(grib_accessors_list* al,double* val,size_t* buffer_len) {
-  int err=GRIB_SUCCESS;
-  size_t unpacked_len=0;
-  size_t len=0;
+int grib_accessors_list_unpack_double(grib_accessors_list* al,double* val,size_t* buffer_len)
+{
+    int err=GRIB_SUCCESS;
+    size_t unpacked_len=0;
+    size_t len=0;
 
-  while (al && err==GRIB_SUCCESS ) {
-    len=*buffer_len-unpacked_len;
-    err=grib_unpack_double(al->accessor, val + unpacked_len, &len);
-    unpacked_len += len;
-    al=al->next;
-  }
+    while (al && err==GRIB_SUCCESS ) {
+        len=*buffer_len-unpacked_len;
+        err=grib_unpack_double(al->accessor, val + unpacked_len, &len);
+        unpacked_len += len;
+        al=al->next;
+    }
 
-  *buffer_len=unpacked_len;
-  return err;
+    *buffer_len=unpacked_len;
+    return err;
 }
 
-int grib_accessors_list_unpack_string(grib_accessors_list* al,char** val,size_t* buffer_len) {
-  int err=GRIB_SUCCESS;
-  size_t unpacked_len=0;
-  size_t len=0;
+int grib_accessors_list_unpack_string(grib_accessors_list* al,char** val,size_t* buffer_len)
+{
+    int err=GRIB_SUCCESS;
+    size_t unpacked_len=0;
+    size_t len=0;
 
-  while (al && err==GRIB_SUCCESS ) {
-    len=*buffer_len-unpacked_len;
-    err=grib_unpack_string_array(al->accessor, val + unpacked_len, &len);
-    unpacked_len += len;
-    al=al->next;
-  }
+    while (al && err==GRIB_SUCCESS ) {
+        len=*buffer_len-unpacked_len;
+        err=grib_unpack_string_array(al->accessor, val + unpacked_len, &len);
+        unpacked_len += len;
+        al=al->next;
+    }
 
-  *buffer_len=unpacked_len;
-  return err;
+    *buffer_len=unpacked_len;
+    return err;
 }
 
 int grib_unpack_long(grib_accessor* a,long* v, size_t *len )
 {
-  grib_accessor_class *c = a->cclass;
-  /*grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG, "(%s)%s is unpacking (long)",(a->parent->owner)?(a->parent->owner->name):"root", a->name ); */
-  while(c)
-  {
-    if(c->unpack_long)
+    grib_accessor_class *c = a->cclass;
+    /*grib_context_log(a->context, GRIB_LOG_DEBUG, "(%s)%s is unpacking (long)",(a->parent->owner)?(a->parent->owner->name):"root", a->name ); */
+    while(c)
     {
-      return c->unpack_long(a,v,len);
+        if(c->unpack_long)
+        {
+            return c->unpack_long(a,v,len);
+        }
+        c = c->super ? *(c->super) : NULL;
     }
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    Assert(0);
+    return 0;
 }
 
 long grib_accessor_get_native_type(grib_accessor* a)
 {
-  grib_accessor_class *c = NULL;
-  if (a)  c = a->cclass;
+    grib_accessor_class *c = NULL;
+    if (a)  c = a->cclass;
 
-  while(c)
-  {
-    if(c->get_native_type)
-      return c->get_native_type(a);
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    while(c)
+    {
+        if(c->get_native_type)
+            return c->get_native_type(a);
+        c = c->super ? *(c->super) : NULL;
+    }
+    Assert(0);
+    return 0;
 }
 
 long grib_get_next_position_offset(grib_accessor* a)
 {
-  grib_accessor_class *c = NULL;
-  /*grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG, "(%s)%s is checking next (long)",(a->parent->owner)?(a->parent->owner->name):"root", a->name ); */
-  if (a)  c = a->cclass;
+    grib_accessor_class *c = NULL;
+    /*grib_context_log(a->context, GRIB_LOG_DEBUG, "(%s)%s is checking next (long)",(a->parent->owner)?(a->parent->owner->name):"root", a->name ); */
+    if (a)  c = a->cclass;
 
-  while(c)
-  {
-    if(c->next_offset)
-      return c->next_offset(a);
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    while(c)
+    {
+        if(c->next_offset)
+            return c->next_offset(a);
+        c = c->super ? *(c->super) : NULL;
+    }
+    Assert(0);
+    return 0;
 }
 
 long grib_string_length(grib_accessor* a)
 {
-  grib_accessor_class *c = NULL;
-  if (a)  c = a->cclass;
+    grib_accessor_class *c = NULL;
+    if (a)  c = a->cclass;
 
-  while(c)
-  {
-    if(c->string_length)
-      return c->string_length(a);
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    while(c)
+    {
+        if(c->string_length)
+            return c->string_length(a);
+        c = c->super ? *(c->super) : NULL;
+    }
+    Assert(0);
+    return 0;
 }
 
 long grib_byte_offset(grib_accessor* a)
 {
-  grib_accessor_class *c = NULL;
-  if (a)  c = a->cclass;
+    grib_accessor_class *c = NULL;
+    if (a)  c = a->cclass;
 
-  while(c)
-  {
-    if(c->byte_offset)
-      return c->byte_offset(a);
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    while(c)
+    {
+        if(c->byte_offset)
+            return c->byte_offset(a);
+        c = c->super ? *(c->super) : NULL;
+    }
+    Assert(0);
+    return 0;
 }
 
 long grib_byte_count(grib_accessor* a)
 {
-  grib_accessor_class *c = NULL;
-  if (a)  c = a->cclass;
+    grib_accessor_class *c = NULL;
+    if (a)  c = a->cclass;
 
-  while(c)
-  {
-    if(c->byte_count)
-      return c->byte_count(a);
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    while(c)
+    {
+        if(c->byte_count)
+            return c->byte_count(a);
+        c = c->super ? *(c->super) : NULL;
+    }
+    Assert(0);
+    return 0;
 }
 
 int grib_value_count(grib_accessor* a,long* count)
 {
-  grib_accessor_class *c = NULL;
-  int err = 0;
-  if (a) c = a->cclass;
+    grib_accessor_class *c = NULL;
+    int err = 0;
+    if (a) c = a->cclass;
 
-  while(c)
-  {
-    if(c->value_count) {
-        err = c->value_count(a, count);
-        return err;
+    while(c)
+    {
+        if(c->value_count) {
+            err = c->value_count(a, count);
+            return err;
+        }
+        c = c->super ? *(c->super) : NULL;
     }
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    Assert(0);
+    return 0;
 }
 
-int grib_accessors_list_value_count(grib_accessors_list* al,size_t* count) {
-  long lcount=0;
-  *count=0;
-  while (al) {
-    grib_value_count(al->accessor,&lcount);
-    *count+=lcount;
-    al=al->next;
-  }
-  return 0;
+int grib_accessors_list_value_count(grib_accessors_list* al,size_t* count)
+{
+    long lcount=0;
+    *count=0;
+    while (al) {
+        grib_value_count(al->accessor,&lcount);
+        *count+=lcount;
+        al=al->next;
+    }
+    return 0;
 }
 
 int grib_accessor_notify_change(grib_accessor* a,grib_accessor* changed)
 {
-  grib_accessor_class *c = NULL;
-  if (a)  c = a->cclass;
+    grib_accessor_class *c = NULL;
+    if (a)  c = a->cclass;
 
-  while(c)
-  {
-    if(c->notify_change)
-      return c->notify_change(a,changed);
-    c = c->super ? *(c->super) : NULL;
-  }
-  printf("notify_change not implemented for %s %s\n",a->cclass->name,a->name);
-  Assert(0);
-  return 0;
+    while(c)
+    {
+        if(c->notify_change)
+            return c->notify_change(a,changed);
+        c = c->super ? *(c->super) : NULL;
+    }
+    if (a) printf("notify_change not implemented for %s %s\n",a->cclass->name, a->name);
+    Assert(0);
+    return 0;
 }
 
-
 /* For this one, ALL init are called */
 
 static void init_accessor(grib_accessor_class* c,grib_accessor* a, const long len, grib_arguments* args)
 {
-  if(c) {
-    grib_accessor_class *s = c->super ? *(c->super) : NULL;
-    if(!c->inited)
-    {
-      if(c->init_class) c->init_class(c);
-      c->inited = 1;
+    if(c) {
+        grib_accessor_class *s = c->super ? *(c->super) : NULL;
+        if(!c->inited)
+        {
+            if(c->init_class) c->init_class(c);
+            c->inited = 1;
+        }
+        init_accessor(s,a,len,args);
+        if(c->init) c->init(a,len, args);
     }
-    init_accessor(s,a,len,args);
-    if(c->init) c->init(a,len, args);
-  }
 }
 
 void grib_init_accessor(grib_accessor* a, const long len, grib_arguments* args)
 {
-  init_accessor(a->cclass,a,len,args);
+    init_accessor(a->cclass,a,len,args);
 }
 
 #if 0
 static void post_init_accessor(grib_accessor_class* c,grib_accessor* a)
 {
-  if(c) {
-    grib_accessor_class *s = c->super ? *(c->super) : NULL;
-    post_init_accessor(s,a);
-    if(c->post_init) c->post_init(a);
-  }
+    if(c) {
+        grib_accessor_class *s = c->super ? *(c->super) : NULL;
+        post_init_accessor(s,a);
+        if(c->post_init) c->post_init(a);
+    }
 }
 #endif
 
@@ -478,291 +492,343 @@ static void post_init_accessor(grib_accessor_class* c,grib_accessor* a)
 
 void grib_accessor_delete(grib_context *ct, grib_accessor* a)
 {
-  grib_accessor_class *c = a->cclass;
-  while(c)
-  {
-    grib_accessor_class *s = c->super ? *(c->super) : NULL;
-    if(c->destroy) c->destroy(ct,a);
-    c = s;
-  }
-  grib_context_free(ct,a);
+    grib_accessor_class *c = a->cclass;
+    while(c)
+    {
+        grib_accessor_class *s = c->super ? *(c->super) : NULL;
+        grib_context_log(ct,GRIB_LOG_DEBUG,"destroy %s ==> %s",c->name,a->name);
+        if(c->destroy) {
+            c->destroy(ct,a);
+        }
+        c = s;
+    }
+    grib_context_free(ct,a);
 }
 
+grib_accessor* grib_accessor_clone(grib_accessor* a,grib_section* s,int* err)
+{
+    grib_accessor_class *c = a->cclass;
+    grib_context* ct=a->context;
+    while(c)
+    {
+        grib_accessor_class *super = c->super ? *(c->super) : NULL;
+        grib_context_log(ct,GRIB_LOG_DEBUG,"clone %s ==> %s",c->name,a->name);
+        if(c->make_clone) {
+            return c->make_clone(a,s,err);
+        }
+        c = super;
+    }
+    return 0;
+}
 
 void grib_update_size(grib_accessor* a, size_t len )
 {
-  grib_accessor_class *c = a->cclass;
-  /*grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG, "(%s)%s is packing (double) %g",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?(*v):0); */
-  while(c)
-  {
-    if(c->update_size)
+    grib_accessor_class *c = a->cclass;
+    /*grib_context_log(a->context, GRIB_LOG_DEBUG, "(%s)%s is packing (double) %g",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?(*v):0); */
+    while(c)
     {
-      c->update_size(a,len);
-      return;
+        if(c->update_size)
+        {
+            c->update_size(a,len);
+            return;
+        }
+        c = c->super ? *(c->super) : NULL;
     }
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
+    Assert(0);
 }
 
 int grib_nearest_smaller_value(grib_accessor* a,double val,double* nearest)
 {
-  grib_accessor_class *c = a->cclass;
-  while(c)
-  {
-    if(c->nearest_smaller_value)
+    grib_accessor_class *c = a->cclass;
+    while(c)
     {
-      return c->nearest_smaller_value(a,val,nearest);
+        if(c->nearest_smaller_value)
+        {
+            return c->nearest_smaller_value(a,val,nearest);
+        }
+        c = c->super ? *(c->super) : NULL;
     }
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    Assert(0);
+    return 0;
 }
 
 
 size_t grib_preferred_size(grib_accessor* a,int from_handle)
 {
-  grib_accessor_class *c = a->cclass;
-  /*grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG, "(%s)%s is packing (long) %d",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?(*v):0); */
-  while(c)
-  {
-    if(c->preferred_size)
+    grib_accessor_class *c = a->cclass;
+    /*grib_context_log(a->context, GRIB_LOG_DEBUG, "(%s)%s is packing (long) %d",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?(*v):0); */
+    while(c)
     {
-      return c->preferred_size(a,from_handle);
+        if(c->preferred_size)
+        {
+            return c->preferred_size(a,from_handle);
+        }
+        c = c->super ? *(c->super) : NULL;
     }
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    Assert(0);
+    return 0;
 }
 
 grib_accessor* grib_next_accessor(grib_accessor* a)
 {
-  grib_accessor_class *c = a->cclass;
-  while(c)
-  {
-    if(c->next)
+    grib_accessor_class *c = a->cclass;
+    while(c)
     {
-      return c->next(a,1);
+        if(c->next)
+        {
+            return c->next(a,1);
+        }
+        c = c->super ? *(c->super) : NULL;
     }
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return 0;
+    Assert(0);
+    return 0;
 }
 
 void grib_resize(grib_accessor* a,size_t new_size)
 {
-  grib_accessor_class *c = a->cclass;
-  /*grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG, "(%s)%s is packing (long) %d",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?(*v):0); */
-  while(c)
-  {
-    if(c->resize)
+    grib_accessor_class *c = a->cclass;
+    /*grib_context_log(a->context, GRIB_LOG_DEBUG, "(%s)%s is packing (long) %d",(a->parent->owner)?(a->parent->owner->name):"root", a->name ,v?(*v):0); */
+    while(c)
     {
-    c->resize(a,new_size);
-      return ;
+        if(c->resize)
+        {
+            c->resize(a,new_size);
+            return ;
+        }
+        c = c->super ? *(c->super) : NULL;
     }
-    c = c->super ? *(c->super) : NULL;
-  }
-  Assert(0);
-  return;
+    Assert(0);
+    return;
 }
 
-int grib_compare_accessors(grib_accessor* a1,grib_accessor* a2,int compare_flags) {
-  int ret=0;
-  long type1=0;
-  long type2=0;
-  int type_mismatch=0;
-  grib_accessor_class *c1=NULL;
-
-  if ((compare_flags & GRIB_COMPARE_NAMES) && strcmp(a1->name,a2->name))
-      return GRIB_NAME_MISMATCH;
+int grib_compare_accessors(grib_accessor* a1,grib_accessor* a2,int compare_flags)
+{
+    int ret=0;
+    long type1=0;
+    long type2=0;
+    int type_mismatch=0;
+    grib_accessor_class *c1=NULL;
 
-  if ( compare_flags & GRIB_COMPARE_TYPES ) {
-    type1=grib_accessor_get_native_type( a1 );
-    type2=grib_accessor_get_native_type( a2 );
+    if ((compare_flags & GRIB_COMPARE_NAMES) && strcmp(a1->name,a2->name))
+        return GRIB_NAME_MISMATCH;
 
-    type_mismatch = type1 != type2 ? 1 : 0;
-  }
+    if ( compare_flags & GRIB_COMPARE_TYPES ) {
+        type1=grib_accessor_get_native_type( a1 );
+        type2=grib_accessor_get_native_type( a2 );
 
-  ret=GRIB_UNABLE_TO_COMPARE_ACCESSORS;
-  c1 = a1->cclass;
-  while(c1)
-  {
+        type_mismatch = type1 != type2 ? 1 : 0;
+    }
 
-    if(c1->compare)
+    ret=GRIB_UNABLE_TO_COMPARE_ACCESSORS;
+    c1 = a1->cclass;
+    while(c1)
     {
-      ret = c1->compare(a1, a2);
-      break;
+
+        if(c1->compare)
+        {
+            ret = c1->compare(a1, a2);
+            break;
+        }
+        c1 = c1->super ? *(c1->super) : NULL;
     }
-    c1 = c1->super ? *(c1->super) : NULL;
-  }
 
-  if (ret == GRIB_VALUE_MISMATCH && type_mismatch)
-    ret = GRIB_TYPE_AND_VALUE_MISMATCH;
+    if (ret == GRIB_VALUE_MISMATCH && type_mismatch)
+        ret = GRIB_TYPE_AND_VALUE_MISMATCH;
 
-  return ret;
+    return ret;
 }
 
 const char* grib_get_type_name(int type)
 {
-  switch(type)
-  {
+    switch(type)
+    {
     case GRIB_TYPE_LONG:    return "long"; break;
     case GRIB_TYPE_STRING:  return "string"; break;
     case GRIB_TYPE_BYTES:   return "bytes"; break;
     case GRIB_TYPE_DOUBLE:  return "double"; break;
     case GRIB_TYPE_LABEL:   return "label"; break;
     case GRIB_TYPE_SECTION: return "section"; break;
-  }
-
-  return "unknown";
-}
-
-int grib_accessor_add_attribute(grib_accessor* a,grib_accessor* attr) {
-  int id=0;
-  int idx=0;
-  if (_grib_accessor_get_attribute(a,attr->name,&id)) return GRIB_ATTRIBUTE_CLASH;
-  for (id=0;id<MAX_ACCESSOR_ATTRIBUTES;id++) {
-    if (a->attributes[id] == NULL) {
-      a->attributes[id]=attr;
-      attr->parent_as_attribute=a;
-      if (a->same)
-        attr->same=_grib_accessor_get_attribute(a->same,attr->name,&idx);
-
-      return GRIB_SUCCESS;
-    }
-  }
-  return GRIB_TOO_MANY_ATTRIBUTES;
-}
-
-int grib_accessor_replace_attribute(grib_accessor* a,grib_accessor* attr) {
-  int id=0;
-  int idx=0;
-  if (_grib_accessor_get_attribute(a,attr->name,&id) != NULL) {
-    grib_accessor_delete(a->parent->h->context,a->attributes[id]);
-    a->attributes[id]=attr;
-    attr->parent_as_attribute=a;
-    if (a->same)
-      attr->same=_grib_accessor_get_attribute(a->same,attr->name,&idx);
-  } else {
-    grib_accessor_add_attribute(a,attr);
-  }
-  return GRIB_SUCCESS;
-}
-
-int grib_accessor_delete_attribute(grib_accessor* a,const char* name) {
-  int id=0;
-  if (_grib_accessor_get_attribute(a,name,&id) != NULL) {
-    grib_accessor_delete(a->parent->h->context,a->attributes[id]);
-    a->attributes[id]=NULL;
-    return GRIB_SUCCESS;
-  } else {
-    return GRIB_NOT_FOUND;
-  }
+    }
+
+    return "unknown";
+}
+
+int grib_accessor_clear_attributes(grib_accessor* a)
+{
+    int id;
+    for (id=0;id<MAX_ACCESSOR_ATTRIBUTES;id++) {
+        a->attributes[id]=NULL;
+    }
+    return 0;
 }
 
-grib_accessor* grib_accessor_get_attribute_by_index(grib_accessor* a,int index) {
+int grib_accessor_add_attribute(grib_accessor* a,grib_accessor* attr,int nest_if_clash)
+{
+    int id=0;
+    int idx=0;
+    grib_accessor* same=NULL;
+    grib_accessor* aloc=a;
 
-  if (index<MAX_ACCESSOR_ATTRIBUTES) return a->attributes[index];
+    same=_grib_accessor_get_attribute(a,attr->name,&id);
 
-  return NULL;
-}
+    if (same) {
+      if (nest_if_clash==0) return GRIB_ATTRIBUTE_CLASH;
+      aloc=same;
+    }
 
-const char* grib_accessor_get_name(grib_accessor* a) {
-  return a->name;
+    for (id=0;id<MAX_ACCESSOR_ATTRIBUTES;id++) {
+        if (aloc->attributes[id] == NULL) {
+            /* attr->parent=a->parent; */
+            aloc->attributes[id]=attr;
+            attr->parent_as_attribute=aloc;
+            if (aloc->same)
+                attr->same=_grib_accessor_get_attribute(aloc->same,attr->name,&idx);
+
+            grib_context_log(a->context,GRIB_LOG_DEBUG,"added attribute %s->%s",a->name,attr->name);
+            return GRIB_SUCCESS;
+        }
+    }
+    return GRIB_TOO_MANY_ATTRIBUTES;
 }
 
-grib_accessor* _grib_accessor_get_attribute(grib_accessor* a,const char* name,int* index) {
-  int i=0;
-  while (a->attributes[i] && i<MAX_ACCESSOR_ATTRIBUTES) {
-    if (!strcmp(a->attributes[i]->name,name)) {
-      *index=i;
-      return a->attributes[i];
+int grib_accessor_replace_attribute(grib_accessor* a,grib_accessor* attr)
+{
+    int id=0;
+    int idx=0;
+    if (_grib_accessor_get_attribute(a,attr->name,&id) != NULL) {
+        grib_accessor_delete(a->context,a->attributes[id]);
+        a->attributes[id]=attr;
+        attr->parent_as_attribute=a;
+        if (a->same)
+            attr->same=_grib_accessor_get_attribute(a->same,attr->name,&idx);
+    } else {
+        grib_accessor_add_attribute(a,attr,0);
     }
-    i++;
-  }
-  return NULL;
+    return GRIB_SUCCESS;
 }
 
-int grib_accessor_has_attributes(grib_accessor* a) {
-  return a->attributes[0] ? 1 : 0 ;
+int grib_accessor_delete_attribute(grib_accessor* a,const char* name)
+{
+    int id=0;
+    if (_grib_accessor_get_attribute(a,name,&id) != NULL) {
+        grib_accessor_delete(a->context,a->attributes[id]);
+        a->attributes[id]=NULL;
+        return GRIB_SUCCESS;
+    } else {
+        return GRIB_NOT_FOUND;
+    }
 }
 
-grib_accessor* grib_accessor_get_attribute(grib_accessor* a,const char* name) {
-  int i=0,index=0;
-  char* p=0;
-  char* basename=NULL;
-  char* attribute_name=NULL;
-  grib_accessor* acc=NULL;
-  p=(char*)name;
-  while ( *(p+1) != '\0' && ( *p != '-' || *(p+1)!= '>' ) ) p++;
-  if (*(p+1) == '\0') {
-    return _grib_accessor_get_attribute(a,name,&index);
-  } else {
-    size_t size=p-name;
-    attribute_name=p+2;
-    basename=grib_context_malloc_clear(a->parent->h->context,size+1);
-    basename=memcpy(basename,name,size);
-    acc=_grib_accessor_get_attribute(a,basename,&index);
-    grib_context_free(a->parent->h->context,basename);
-    if (acc) return grib_accessor_get_attribute(acc,attribute_name);
-    else return NULL;
-  }
+grib_accessor* grib_accessor_get_attribute_by_index(grib_accessor* a,int index)
+{
+    if (index<MAX_ACCESSOR_ATTRIBUTES) return a->attributes[index];
+
+    return NULL;
 }
 
-grib_accessors_list* grib_accessors_list_create(grib_context* c) {
-  return grib_context_malloc_clear(c,sizeof(grib_accessors_list));
+const char* grib_accessor_get_name(grib_accessor* a) {
+    return a->name;
 }
 
-void grib_accessors_list_push(grib_accessors_list* al,grib_accessor* a) {
-  grib_accessors_list* last;
-  grib_context* c=a->parent->h->context;
+grib_accessor* _grib_accessor_get_attribute(grib_accessor* a,const char* name,int* index)
+{
+    int i=0;
+    while (a->attributes[i] && i<MAX_ACCESSOR_ATTRIBUTES) {
+        if (!strcmp(a->attributes[i]->name,name)) {
+            *index=i;
+            return a->attributes[i];
+        }
+        i++;
+    }
+    return NULL;
+}
+
+int grib_accessor_has_attributes(grib_accessor* a)
+{
+    return a->attributes[0] ? 1 : 0 ;
+}
+
+grib_accessor* grib_accessor_get_attribute(grib_accessor* a,const char* name)
+{
+    int index=0;
+    char* p=0;
+    char* basename=NULL;
+    char* attribute_name=NULL;
+    grib_accessor* acc=NULL;
+    p=(char*)name;
+    while ( *(p+1) != '\0' && ( *p != '-' || *(p+1)!= '>' ) ) p++;
+    if (*(p+1) == '\0') {
+        return _grib_accessor_get_attribute(a,name,&index);
+    } else {
+        size_t size=p-name;
+        attribute_name=p+2;
+        basename=(char*)grib_context_malloc_clear(a->context,size+1);
+        basename=(char*)memcpy(basename,name,size);
+        acc=_grib_accessor_get_attribute(a,basename,&index);
+        grib_context_free(a->context,basename);
+        if (acc) return grib_accessor_get_attribute(acc,attribute_name);
+        else return NULL;
+    }
+}
 
-  last=grib_accessors_list_last(al);
-  if (last->accessor) {
-    last->next=(grib_accessors_list*)grib_context_malloc_clear(c,sizeof(grib_accessors_list));
-    last->next->accessor=a;
-    last->next->prev=last;
-  } else {
-    last->accessor=a;
-  }
+grib_accessors_list* grib_accessors_list_create(grib_context* c)
+{
+    return (grib_accessors_list*)grib_context_malloc_clear(c,sizeof(grib_accessors_list));
 }
 
-grib_accessors_list* grib_accessors_list_last(grib_accessors_list* al) {
-  grib_accessors_list* last=al;
-  grib_accessors_list* next=al->next;
+void grib_accessors_list_push(grib_accessors_list* al,grib_accessor* a)
+{
+    grib_accessors_list* last;
+    grib_context* c=a->context;
+
+    last=grib_accessors_list_last(al);
+    if (last && last->accessor) {
+        last->next=(grib_accessors_list*)grib_context_malloc_clear(c,sizeof(grib_accessors_list));
+        last->next->accessor=a;
+        last->next->prev=last;
+        al->last=last->next;
+    } else {
+        al->accessor=a;
+        al->last=al;
+    }
+}
 
-  while(next) {
-    last=next;
-    next=last->next;
-  }
+grib_accessors_list* grib_accessors_list_last(grib_accessors_list* al)
+{
+    /*grib_accessors_list* last=al;*/
+    /*grib_accessors_list* next=al->next;*/
 
-  return last;
+    /*
+    while(next) {
+      last=next;
+      next=last->next;
+    }
+    */
+    return al->last;
 }
 
-grib_accessors_list* grib_accessors_list_find(grib_accessors_list* al,grib_accessor* a) {
-  grib_accessors_list* last=al;
-  grib_accessors_list* next=al->next;
+grib_accessors_list* grib_accessors_list_find(grib_accessors_list* al,grib_accessor* a)
+{
+    grib_accessors_list* last=al;
+    grib_accessors_list* next=al->next;
 
-  while(next) {
-    if (last->accessor == a) return last;
-    last=next;
-    next=last->next;
-  }
+    while(next) {
+        if (last->accessor == a) return last;
+        last=next;
+        next=last->next;
+    }
 
-  return NULL;
+    return NULL;
 }
 
-void grib_accessors_list_delete(grib_context* c,grib_accessors_list* al) {
-  grib_accessors_list* tmp;
+void grib_accessors_list_delete(grib_context* c,grib_accessors_list* al)
+{
+    grib_accessors_list* tmp;
 
-  while (al) {
-    tmp=al->next;
-    grib_context_free(c,al);
-    al=tmp;
-  }
+    while (al) {
+        tmp=al->next;
+        grib_context_free(c,al);
+        al=tmp;
+    }
 
 }
-
diff --git a/src/grib_accessor_class.c b/src/grib_accessor_class.c
index b0275f3..e8c38da 100644
--- a/src/grib_accessor_class.c
+++ b/src/grib_accessor_class.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -28,6 +28,21 @@ static void init() {
     pthread_mutexattr_destroy(&attr);
 
 }
+#elif GRIB_OMP_THREADS
+static int once = 0;
+static omp_nest_lock_t mutex1;
+
+static void init()
+{
+    GRIB_OMP_CRITICAL(lock_grib_accessor_class_c)
+    {
+        if (once == 0)
+        {
+            omp_init_nest_lock(&mutex1);
+            once = 1;
+        }
+    }
+}
 #endif
 
 struct table_entry
@@ -55,7 +70,7 @@ grib_section*  grib_create_root_section(const grib_context *context, grib_handle
     char* fpath=0;
     grib_section*   s   = (grib_section*) grib_context_malloc_clear(context,sizeof(grib_section));
 
-    GRIB_PTHREAD_ONCE(&once,&init);
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
     GRIB_MUTEX_LOCK(&mutex1);
     if(h->context->grib_reader == NULL) {
         if ((fpath=grib_context_full_defs_path(h->context,"boot.def"))==NULL) {
@@ -113,6 +128,8 @@ grib_accessor* grib_accessor_factory(grib_section* p, grib_action* creator,
     a->all_name_spaces[0]  = creator->name_space;
 
     a->creator             = creator;
+    a->context             = p->h->context;
+    a->h                   = NULL;
     a->next                = NULL;
     a->previous            = NULL;
     a->parent              = p;
@@ -174,7 +191,8 @@ grib_accessor* grib_accessor_factory(grib_section* p, grib_action* creator,
     return a;
 }
 
-static void link_same_attributes(grib_accessor* a,grib_accessor* b) {
+static void link_same_attributes(grib_accessor* a,grib_accessor* b)
+{
   int i=0;
   int idx=0;
   grib_accessor* bAttribute=NULL;
@@ -198,14 +216,14 @@ void grib_push_accessor(grib_accessor* a, grib_block_of_accessors* l)
     l->last = a;
 
 
-    if (a->parent->h->use_trie) {
+    if (grib_handle_of_accessor(a)->use_trie) {
         if (*(a->all_names[0]) != '_') {
-            id=grib_hash_keys_get_id(a->parent->h->context->keys,a->all_names[0]);
+            id=grib_hash_keys_get_id(a->context->keys,a->all_names[0]);
 
 
-            a->same=a->parent->h->accessors[id];
+            a->same=grib_handle_of_accessor(a)->accessors[id];
             link_same_attributes(a,a->same);
-            a->parent->h->accessors[id]=a;
+            grib_handle_of_accessor(a)->accessors[id]=a;
 
             if(a->same == a) {
                 fprintf(stderr,"---> %s\n",a->name);
@@ -241,11 +259,12 @@ int grib_section_adjust_sizes(grib_section* s,int update,int depth)
         /* grib_section_adjust_sizes(grib_get_sub_section(a),update,depth+1); */
         err = grib_section_adjust_sizes(a->sub_section,update,depth+1);
         if (err) return err;
+        grib_context_log(a->context,GRIB_LOG_DEBUG,"grib_section_adjust_sizes: %s %ld [len=%ld] (depth=%d)\n",a->name,(long)a->offset,(long)a->length,depth);
 
         l = a->length;
 
         if(offset != a->offset)    {
-            grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+            grib_context_log(a->context,GRIB_LOG_ERROR,
                     "Offset mismatch %s A->offset %ld offset %ld\n",a->name,(long)a->offset, (long)offset);
             a->offset = offset;
             return GRIB_DECODING_ERROR;
@@ -288,7 +307,10 @@ int grib_section_adjust_sizes(grib_section* s,int update,int depth)
             }
         }
 
-        if(s->owner) s->owner->length = length;
+        if(s->owner) {
+          grib_context_log(s->owner->context,GRIB_LOG_DEBUG,"grib_section_adjust_sizes: updating owner (%s->length old=%ld new=%ld)\n",s->owner->name,(long)s->owner->length,(long)length);
+          s->owner->length = length;
+        }
         s->length = length;
     }
     return err;
diff --git a/src/grib_accessor_class.h b/src/grib_accessor_class.h
index ca52e21..60a8e22 100644
--- a/src/grib_accessor_class.h
+++ b/src/grib_accessor_class.h
@@ -16,11 +16,14 @@ extern grib_accessor_class* grib_accessor_class_bufr_data;
 extern grib_accessor_class* grib_accessor_class_bufr_data_array;
 extern grib_accessor_class* grib_accessor_class_bufr_data_element;
 extern grib_accessor_class* grib_accessor_class_bufr_elements_table;
+extern grib_accessor_class* grib_accessor_class_bufr_extract_subsets;
 extern grib_accessor_class* grib_accessor_class_bufr_group;
 extern grib_accessor_class* grib_accessor_class_bufr_has_delayed_replication;
+extern grib_accessor_class* grib_accessor_class_bufr_string_values;
 extern grib_accessor_class* grib_accessor_class_bufrdc_expanded_descriptors;
 extern grib_accessor_class* grib_accessor_class_bytes;
 extern grib_accessor_class* grib_accessor_class_change_scanning_direction;
+extern grib_accessor_class* grib_accessor_class_check_internal_version;
 extern grib_accessor_class* grib_accessor_class_codeflag;
 extern grib_accessor_class* grib_accessor_class_codetable;
 extern grib_accessor_class* grib_accessor_class_codetable_title;
@@ -103,6 +106,7 @@ extern grib_accessor_class* grib_accessor_class_g2level;
 extern grib_accessor_class* grib_accessor_class_g2lon;
 extern grib_accessor_class* grib_accessor_class_g2step;
 extern grib_accessor_class* grib_accessor_class_g2step_range;
+extern grib_accessor_class* grib_accessor_class_gaussian_grid_name;
 extern grib_accessor_class* grib_accessor_class_gds_is_present;
 extern grib_accessor_class* grib_accessor_class_gds_not_present_bitmap;
 extern grib_accessor_class* grib_accessor_class_gen;
@@ -150,15 +154,18 @@ extern grib_accessor_class* grib_accessor_class_number_of_points;
 extern grib_accessor_class* grib_accessor_class_number_of_points_gaussian;
 extern grib_accessor_class* grib_accessor_class_number_of_values;
 extern grib_accessor_class* grib_accessor_class_number_of_values_data_raw_packing;
+extern grib_accessor_class* grib_accessor_class_octahedral_gaussian;
 extern grib_accessor_class* grib_accessor_class_octect_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_pack_bufr_values;
 extern grib_accessor_class* grib_accessor_class_pad;
 extern grib_accessor_class* grib_accessor_class_padding;
 extern grib_accessor_class* grib_accessor_class_padto;
 extern grib_accessor_class* grib_accessor_class_padtoeven;
 extern grib_accessor_class* grib_accessor_class_padtomultiple;
 extern grib_accessor_class* grib_accessor_class_position;
+extern grib_accessor_class* grib_accessor_class_raw;
 extern grib_accessor_class* grib_accessor_class_reference_value_error;
 extern grib_accessor_class* grib_accessor_class_round;
 extern grib_accessor_class* grib_accessor_class_scale;
@@ -190,6 +197,7 @@ extern grib_accessor_class* grib_accessor_class_to_double;
 extern grib_accessor_class* grib_accessor_class_to_integer;
 extern grib_accessor_class* grib_accessor_class_to_string;
 extern grib_accessor_class* grib_accessor_class_transient;
+extern grib_accessor_class* grib_accessor_class_transient_darray;
 extern grib_accessor_class* grib_accessor_class_uint16;
 extern grib_accessor_class* grib_accessor_class_uint16_little_endian;
 extern grib_accessor_class* grib_accessor_class_uint32;
diff --git a/src/grib_accessor_class_abstract_long_vector.c b/src/grib_accessor_class_abstract_long_vector.c
index d96a419..58f58f7 100644
--- a/src/grib_accessor_class_abstract_long_vector.c
+++ b/src/grib_accessor_class_abstract_long_vector.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -89,6 +89,7 @@ static grib_accessor_class _grib_accessor_class_abstract_long_vector = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -128,6 +129,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
diff --git a/src/grib_accessor_class_abstract_vector.c b/src/grib_accessor_class_abstract_vector.c
index 042aa5b..90997d6 100644
--- a/src/grib_accessor_class_abstract_vector.c
+++ b/src/grib_accessor_class_abstract_vector.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -88,6 +88,7 @@ static grib_accessor_class _grib_accessor_class_abstract_vector = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -127,6 +128,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
diff --git a/src/grib_accessor_class_apply_operators.c b/src/grib_accessor_class_apply_operators.c
index 2dfaf2b..b181792 100644
--- a/src/grib_accessor_class_apply_operators.c
+++ b/src/grib_accessor_class_apply_operators.c
@@ -1,5 +1,5 @@
 /*
-* Copyright 2005-2015 ECMWF.
+* Copyright 2005-2016 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.
@@ -143,6 +143,7 @@ static grib_accessor_class _grib_accessor_class_apply_operators = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -174,6 +175,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -210,15 +212,15 @@ static void init(grib_accessor* a, const long len , grib_arguments* args )
 {
   grib_accessor_apply_operators* self = (grib_accessor_apply_operators*)a;
   int n=0;
-  self->expandedDescriptors=grib_arguments_get_name(a->parent->h,args,n++);
-  self->abbreviation=grib_arguments_get_name(a->parent->h,args,n++);
-  self->type=grib_arguments_get_name(a->parent->h,args,n++);
-  self->name=grib_arguments_get_name(a->parent->h,args,n++);
-  self->unit=grib_arguments_get_name(a->parent->h,args,n++);
-  self->expandedScale=grib_arguments_get_name(a->parent->h,args,n++);
-  self->expandedReference=grib_arguments_get_name(a->parent->h,args,n++);
-  self->expandedWidth=grib_arguments_get_name(a->parent->h,args,n++);
-  self->index=grib_arguments_get_long(a->parent->h,args,n++);
+  self->expandedDescriptors=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->abbreviation=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->type=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->name=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->unit=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->expandedScale=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->expandedReference=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->expandedWidth=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->index=grib_arguments_get_long(grib_handle_of_accessor(a),args,n++);
   self->do_compute=1;
   a->length = 0;
   self->scaleAO=0;
@@ -299,8 +301,8 @@ static void computeDelayedReplication(grib_accessor_apply_operators* self,
 
 static int apply_operators(grib_accessor* a) {
 	grib_accessor_apply_operators* self = (grib_accessor_apply_operators*)a;
-	grib_context* c=a->parent->h->context;
-	grib_handle* h=a->parent->h;
+	grib_context* c=a->context;
+	grib_handle* h=grib_handle_of_accessor(a);
   int useDefinedBitmap;
 	long* descriptors=0;
 	long* scale=0;
@@ -337,7 +339,7 @@ static int apply_operators(grib_accessor* a) {
   if (!self->do_compute) return GRIB_SUCCESS;
   self_clear(c,self);
 
-	err=grib_get_size(a->parent->h,self->expandedDescriptors,&size);
+	err=grib_get_size(grib_handle_of_accessor(a),self->expandedDescriptors,&size);
 	if (err) return err;
   numberOfDescriptors=size;
 
@@ -615,14 +617,14 @@ static int unpack_string_array (grib_accessor* a, char** val, size_t *len)
   grib_accessor_apply_operators* self = (grib_accessor_apply_operators*)a;
   int ret=0;
   int i=0;
-  grib_context* c=a->parent->h->context; 
+  grib_context* c=a->context; 
 
   ret=apply_operators(a);
   if (ret) return ret;
 
   if(*len < self->expandedAOSize)
   {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
+    grib_context_log(a->context, GRIB_LOG_ERROR,
 		    " wrong size (%ld) for %s it contains %d values ",*len, a->name , self->expandedAOSize);
     *len = 0;
     return GRIB_ARRAY_TOO_SMALL;
@@ -631,25 +633,25 @@ static int unpack_string_array (grib_accessor* a, char** val, size_t *len)
   *len = self->expandedAOSize;
   switch (self->index) {
     case 0:
-            long_to_string(a->parent->h->context,self->expandedAO,self->expandedAOSize,val);
+            long_to_string(a->context,self->expandedAO,self->expandedAOSize,val);
             break;
     case 1:
-            long_to_string(a->parent->h->context,self->scaleAO,self->expandedAOSize,val);
+            long_to_string(a->context,self->scaleAO,self->expandedAOSize,val);
             break;
     case 2:
-            double_to_string(a->parent->h->context,self->referenceAO,self->expandedAOSize,val);
+            double_to_string(a->context,self->referenceAO,self->expandedAOSize,val);
             break;
     case 3:
-            long_to_string(a->parent->h->context,self->widthAO,self->expandedAOSize,val);
+            long_to_string(a->context,self->widthAO,self->expandedAOSize,val);
             break;
     case 4:
-            long_to_string(a->parent->h->context,self->bitmapNumber,self->expandedAOSize,val);
+            long_to_string(a->context,self->bitmapNumber,self->expandedAOSize,val);
             break;
     case 5:
-            long_to_string(a->parent->h->context,self->associatedBitmapNumber,self->expandedAOSize,val);
+            long_to_string(a->context,self->associatedBitmapNumber,self->expandedAOSize,val);
             break;
     case 6:
-            long_to_string(a->parent->h->context,self->associatedBitmapIndex,self->expandedAOSize,val);
+            long_to_string(a->context,self->associatedBitmapIndex,self->expandedAOSize,val);
             break;
     case 7:
           for (i=0;i<self->expandedAOSize;i++)
@@ -668,7 +670,7 @@ static int unpack_string_array (grib_accessor* a, char** val, size_t *len)
             val[i]=grib_context_strdup(c,self->units[i]);
           break;
     case 11:
-            long_to_string(a->parent->h->context,self->associatedInfoNumber,self->expandedAOSize,val);
+            long_to_string(a->context,self->associatedInfoNumber,self->expandedAOSize,val);
             break;
 	default:
           Assert(0);
@@ -688,7 +690,7 @@ static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
 
   if(*len < self->expandedAOSize)
   {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
+    grib_context_log(a->context, GRIB_LOG_ERROR,
 		    " wrong size (%ld) for %s it contains %d values ",*len, a->name , self->expandedAOSize);
     *len = 0;
     return GRIB_ARRAY_TOO_SMALL;
@@ -738,7 +740,7 @@ static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
 
   if(*len < self->expandedAOSize)
   {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
+    grib_context_log(a->context, GRIB_LOG_ERROR,
 		    " wrong size (%ld) for %s it contains %d values ",*len, a->name , self->expandedAOSize);
     *len = 0;
     return GRIB_ARRAY_TOO_SMALL;
@@ -797,7 +799,7 @@ static int value_count(grib_accessor* a,long* rlen)
   ret=apply_operators(a);
 
   if (ret) {
-    grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+    grib_context_log(a->context,GRIB_LOG_ERROR,
 		    "%s unable to compute size",a->name);
 		    return ret;
   }
diff --git a/src/grib_accessor_class_array.c b/src/grib_accessor_class_array.c
index 1ad7a3b..881cbf8 100644
--- a/src/grib_accessor_class_array.c
+++ b/src/grib_accessor_class_array.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -89,6 +89,7 @@ static grib_accessor_class _grib_accessor_class_array = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -127,6 +128,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -135,7 +137,7 @@ static void init_class(grib_accessor_class* c)
 static void init(grib_accessor* a, const long len , grib_arguments* arg )
 {
 	grib_accessor_array* self = (grib_accessor_array*)a;
-	self->block = (grib_block_of_accessors*) grib_context_malloc_clear(a->parent->h->context,sizeof(grib_block_of_accessors));
+	self->block = (grib_block_of_accessors*) grib_context_malloc_clear(a->context,sizeof(grib_block_of_accessors));
 	a->length = 0;
 }
 
diff --git a/src/grib_accessor_class_ascii.c b/src/grib_accessor_class_ascii.c
index b3dbe15..343c62f 100644
--- a/src/grib_accessor_class_ascii.c
+++ b/src/grib_accessor_class_ascii.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -101,6 +101,7 @@ static grib_accessor_class _grib_accessor_class_ascii = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -129,6 +130,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -164,13 +166,13 @@ static int unpack_string(grib_accessor* a, char* val, size_t *len)
 
   if(len[0] < (a->length+1))
   {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 );
+    grib_context_log(a->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 );
     len[0] = 0;
     return GRIB_ARRAY_TOO_SMALL;
   }
 
   for ( i = 0; i < a->length; i++)
-    val[i] = a->parent->h->buffer->data[a->offset+i];
+    val[i] = grib_handle_of_accessor(a)->buffer->data[a->offset+i];
   val[i] = 0;
   len[0] = i;
   return GRIB_SUCCESS;
@@ -182,7 +184,7 @@ static int pack_string(grib_accessor* a, const char* val, size_t *len)
   int i = 0;
   if(len[0] > (a->length)+1)
   {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "pack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 );
+    grib_context_log(a->context, GRIB_LOG_ERROR, "pack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 );
     len[0] = 0;
     return GRIB_BUFFER_TOO_SMALL;
   }
@@ -190,21 +192,21 @@ static int pack_string(grib_accessor* a, const char* val, size_t *len)
   for ( i = 0; i < a->length; i++)
   {
     if( i < len[0] )
-      a->parent->h->buffer->data[a->offset+i] = val[i];
+      grib_handle_of_accessor(a)->buffer->data[a->offset+i] = val[i];
     else
-      a->parent->h->buffer->data[a->offset+i] = 0;
+      grib_handle_of_accessor(a)->buffer->data[a->offset+i] = 0;
   }
 
   return GRIB_SUCCESS;
 }
 
 static int pack_long(grib_accessor* a, const long*  v, size_t *len){
-  grib_context_log(a->parent->h->context,GRIB_LOG_ERROR, " Should not pack %s as long", a->name);
+  grib_context_log(a->context,GRIB_LOG_ERROR, " Should not pack %s as long", a->name);
   return GRIB_NOT_IMPLEMENTED;
 }
 
 static int pack_double(grib_accessor* a, const double*v, size_t *len){
-  grib_context_log(a->parent->h->context,GRIB_LOG_ERROR, " Should not pack %s  as double", a->name);
+  grib_context_log(a->context,GRIB_LOG_ERROR, " Should not pack %s  as double", a->name);
   return GRIB_NOT_IMPLEMENTED;
 }
 
@@ -230,7 +232,7 @@ static int  unpack_long   (grib_accessor* a, long*  v, size_t *len){
 
   *v = strtol(val,&last,10);
 
-  grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG, " Casting string %s to long", a->name);
+  grib_context_log(a->context,GRIB_LOG_DEBUG, " Casting string %s to long", a->name);
   return GRIB_SUCCESS;
 
 }
@@ -245,7 +247,7 @@ static int unpack_double (grib_accessor* a, double*v, size_t *len){
 
   if(*last == 0)
   {
-    grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG, " Casting string %s to long", a->name);
+    grib_context_log(a->context,GRIB_LOG_DEBUG, " Casting string %s to long", a->name);
     return GRIB_SUCCESS;
   }
 
@@ -273,8 +275,8 @@ static int compare(grib_accessor* a,grib_accessor* b) {
 
   if (alen != blen) return GRIB_COUNT_MISMATCH;
 
-  aval=(char*)grib_context_malloc(a->parent->h->context,alen*sizeof(char));
-  bval=(char*)grib_context_malloc(b->parent->h->context,blen*sizeof(char));
+  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);
@@ -282,8 +284,8 @@ static int compare(grib_accessor* a,grib_accessor* b) {
   retval = GRIB_SUCCESS;
   if (strcmp(aval,bval)) retval = GRIB_STRING_VALUE_MISMATCH;
 
-  grib_context_free(a->parent->h->context,aval);
-  grib_context_free(b->parent->h->context,bval);
+  grib_context_free(a->context,aval);
+  grib_context_free(b->context,bval);
 
   return retval;
 }
diff --git a/src/grib_accessor_class_assert.c b/src/grib_accessor_class_assert.c
index 4c821a0..1aae0f9 100644
--- a/src/grib_accessor_class_assert.c
+++ b/src/grib_accessor_class_assert.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -89,6 +89,7 @@ static grib_accessor_class _grib_accessor_class_assert = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -126,6 +127,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
diff --git a/src/grib_accessor_class_bit.c b/src/grib_accessor_class_bit.c
index ab225b7..3e75f6f 100644
--- a/src/grib_accessor_class_bit.c
+++ b/src/grib_accessor_class_bit.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -91,6 +91,7 @@ static grib_accessor_class _grib_accessor_class_bit = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -127,6 +128,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -135,8 +137,8 @@ static void init(grib_accessor* a, const long len , grib_arguments* arg )
 {
 	grib_accessor_bit *ac = (grib_accessor_bit*) a;
 	a->length = 0;
-	ac->owner      = grib_arguments_get_name(a->parent->h,arg,0);
-	ac->bit_index = grib_arguments_get_long(a->parent->h,arg,1);
+	ac->owner      = grib_arguments_get_name(grib_handle_of_accessor(a),arg,0);
+	ac->bit_index = grib_arguments_get_long(grib_handle_of_accessor(a),arg,1);
 }
 
 static void dump(grib_accessor* a, grib_dumper* dumper)
@@ -153,12 +155,12 @@ static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
 
 	if(*len < 1)
 	{
-		grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "grib_accessor_bit : unpack_long : Wrong size for %s it contains %d values ", a->name , 1 );
+		grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_bit : unpack_long : Wrong size for %s it contains %d values ", a->name , 1 );
 		*len = 0;
 		return GRIB_ARRAY_TOO_SMALL;
 	}
 	
-	if((ret = grib_get_long_internal(a->parent->h,ac->owner,&data)) != GRIB_SUCCESS){
+	if((ret = grib_get_long_internal(grib_handle_of_accessor(a),ac->owner,&data)) != GRIB_SUCCESS){
 		*len = 0;
 		return ret;
 	}
@@ -179,20 +181,20 @@ static int    pack_long   (grib_accessor* a, const long *val, size_t *len)
 	unsigned char *mdata = 0;
 	if(*len < 1)
 	{
-		grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "grib_accessor_bit : pack_long : At least one value to pack for %s", a->name );
+		grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_bit : pack_long : At least one value to pack for %s", a->name );
 		*len = 0;
 		return GRIB_ARRAY_TOO_SMALL;
 	}
 
-	owner = grib_find_accessor(a->parent->h,ac->owner);
+	owner = grib_find_accessor(grib_handle_of_accessor(a),ac->owner);
 
 	if(!owner){
-		grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "grib_accessor_bit : Cannot get the owner %s for computing the bit value of %s ",ac->owner, a->name);
+		grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_bit : Cannot get the owner %s for computing the bit value of %s ",ac->owner, a->name);
 		*len = 0;
 		return GRIB_NOT_FOUND;
 	}
 
-	mdata = a->parent->h->buffer->data;
+	mdata = grib_handle_of_accessor(a)->buffer->data;
 	mdata += grib_byte_offset(owner);
 
 	grib_set_bit( mdata,7-ac->bit_index , *val>0);
diff --git a/src/grib_accessor_class_bitmap.c b/src/grib_accessor_class_bitmap.c
index 926dc79..79319a2 100644
--- a/src/grib_accessor_class_bitmap.c
+++ b/src/grib_accessor_class_bitmap.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -102,6 +102,7 @@ static grib_accessor_class _grib_accessor_class_bitmap = {
     &unpack_double_element,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -134,6 +135,7 @@ static void init_class(grib_accessor_class* c)
 	c->compare	=	(*(c->super))->compare;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -145,17 +147,17 @@ static void compute_size(grib_accessor* a)
     long off = 0;
 
     grib_accessor_bitmap* self = (grib_accessor_bitmap*)a;
-    grib_get_long_internal(a->parent->h, self->offsetbsec,&off);
-    grib_get_long_internal(a->parent->h, self->sLength, &slen);
+    grib_get_long_internal(grib_handle_of_accessor(a), self->offsetbsec,&off);
+    grib_get_long_internal(grib_handle_of_accessor(a), self->sLength, &slen);
 
     if(slen == 0)
     {
         grib_accessor* seclen;
         size_t size;
         /* Assume reparsing */
-        Assert(a->parent->h->loader != 0);
-        if (a->parent->h->loader != 0) {
-            seclen = grib_find_accessor(a->parent->h, self->sLength);
+        Assert(grib_handle_of_accessor(a)->loader != 0);
+        if (grib_handle_of_accessor(a)->loader != 0) {
+            seclen = grib_find_accessor(grib_handle_of_accessor(a), self->sLength);
             Assert(seclen);
             grib_get_block_length(seclen->parent,&size);
             slen = size;
@@ -172,7 +174,7 @@ static void compute_size(grib_accessor* a)
     if(a->length < 0)
     {
         /* Assume reparsing */
-        /*Assert(a->parent->h->loader != 0);*/
+        /*Assert(grib_handle_of_accessor(a)->loader != 0);*/
         a->length = 0;
     }
 
@@ -185,10 +187,10 @@ static void init(grib_accessor* a, const long len , grib_arguments* arg )
     grib_accessor_bitmap* self = (grib_accessor_bitmap*)a;
     int n = 0;
 
-    self->tableReference = grib_arguments_get_name(a->parent->h,arg,n++);
-    self->missing_value  = grib_arguments_get_name(a->parent->h,arg,n++);
-    self->offsetbsec     = grib_arguments_get_name(a->parent->h,arg,n++);
-    self->sLength        = grib_arguments_get_name(a->parent->h,arg,n++);
+    self->tableReference = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+    self->missing_value  = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+    self->offsetbsec     = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+    self->sLength        = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
 
     compute_size(a);
 }
@@ -221,14 +223,14 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 
     if(*len < tlen)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , tlen );
+        grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , tlen );
         *len = 0;
         return GRIB_ARRAY_TOO_SMALL;
     }
 
     for(i=0;i<tlen;i++)
     {
-        val[i] = (long)grib_decode_unsigned_long(a->parent->h->buffer->data, &pos,1);
+        val[i] = (long)grib_decode_unsigned_long(grib_handle_of_accessor(a)->buffer->data, &pos,1);
     }
     *len = tlen;
     return GRIB_SUCCESS;
@@ -246,14 +248,14 @@ static int unpack_double   (grib_accessor* a, double* val, size_t *len)
 
     if(*len < tlen)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , tlen );
+        grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , tlen );
         *len = 0;
         return GRIB_ARRAY_TOO_SMALL;
     }
 
     for(i=0;i<tlen;i++)
     {
-        val[i] = (double)grib_decode_unsigned_long(a->parent->h->buffer->data, &pos,1);
+        val[i] = (double)grib_decode_unsigned_long(grib_handle_of_accessor(a)->buffer->data, &pos,1);
     }
     *len = tlen;
     return GRIB_SUCCESS;
@@ -264,7 +266,7 @@ static int unpack_double_element   (grib_accessor* a, size_t idx, double* val)
     long pos = a->offset*8;
 
     pos+=idx;
-    *val = (double)grib_decode_unsigned_long(a->parent->h->buffer->data, &pos,1);
+    *val = (double)grib_decode_unsigned_long(grib_handle_of_accessor(a)->buffer->data, &pos,1);
 
     return GRIB_SUCCESS;
 }
@@ -280,13 +282,13 @@ static int unpack_string(grib_accessor* a, char* val, size_t *len)
 
     if(len[0] < (a->length))
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length );
+        grib_context_log(a->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length );
         len[0] = 0;
         return GRIB_ARRAY_TOO_SMALL;
     }
 
     for ( i = 0; i < a->length; i++)
-        val[i] = a->parent->h->buffer->data[a->offset+i];
+        val[i] = grib_handle_of_accessor(a)->buffer->data[a->offset+i];
 
     len[0] = a->length;
 
diff --git a/src/grib_accessor_class_bits.c b/src/grib_accessor_class_bits.c
index af0c91f..70aa442 100644
--- a/src/grib_accessor_class_bits.c
+++ b/src/grib_accessor_class_bits.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -24,6 +24,7 @@
    SUPER      = grib_accessor_class_gen
    IMPLEMENTS = get_native_type
    IMPLEMENTS = unpack_long; pack_long
+   IMPLEMENTS = unpack_bytes; byte_count
    IMPLEMENTS = unpack_double; pack_double
    IMPLEMENTS = unpack_string
    IMPLEMENTS = init
@@ -50,9 +51,11 @@ 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 unpack_bytes (grib_accessor*,unsigned 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 long byte_count(grib_accessor*);
 static void init(grib_accessor*,const long, grib_arguments* );
 static void init_class(grib_accessor_class*);
 
@@ -83,7 +86,7 @@ static grib_accessor_class _grib_accessor_class_bits = {
     0,                /* get length of section     */
     0,              /* get length of string      */
     0,                /* get number of values      */
-    0,                 /* get number of bytes      */
+    &byte_count,                 /* get number of bytes      */
     0,                /* get offset to bytes           */
     &get_native_type,            /* get native type               */
     0,                /* get sub_section                */
@@ -98,7 +101,7 @@ static grib_accessor_class _grib_accessor_class_bits = {
     0,          /* grib_pack array procedures string    */
     0,        /* grib_unpack array procedures string  */
     0,                 /* grib_pack procedures bytes     */
-    0,               /* grib_unpack procedures bytes   */
+    &unpack_bytes,               /* grib_unpack procedures bytes   */
     0,            /* pack_expression */
     0,              /* notify_change   */
     0,                /* update_size   */
@@ -110,6 +113,7 @@ static grib_accessor_class _grib_accessor_class_bits = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -122,7 +126,6 @@ static void init_class(grib_accessor_class* c)
 	c->next_offset	=	(*(c->super))->next_offset;
 	c->string_length	=	(*(c->super))->string_length;
 	c->value_count	=	(*(c->super))->value_count;
-	c->byte_count	=	(*(c->super))->byte_count;
 	c->byte_offset	=	(*(c->super))->byte_offset;
 	c->sub_section	=	(*(c->super))->sub_section;
 	c->pack_missing	=	(*(c->super))->pack_missing;
@@ -131,7 +134,6 @@ static void init_class(grib_accessor_class* c)
 	c->pack_string_array	=	(*(c->super))->pack_string_array;
 	c->unpack_string_array	=	(*(c->super))->unpack_string_array;
 	c->pack_bytes	=	(*(c->super))->pack_bytes;
-	c->unpack_bytes	=	(*(c->super))->unpack_bytes;
 	c->pack_expression	=	(*(c->super))->pack_expression;
 	c->notify_change	=	(*(c->super))->notify_change;
 	c->update_size	=	(*(c->super))->update_size;
@@ -143,6 +145,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -153,18 +156,18 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
     grib_expression* e=NULL;
     int n = 0;
 
-    self->argument = grib_arguments_get_name(a->parent->h,c,n++);
-    self->start    = grib_arguments_get_long(a->parent->h,c,n++);
-    self->len    = grib_arguments_get_long(a->parent->h,c,n++);
-    e=grib_arguments_get_expression(a->parent->h,c,n++);
+    self->argument = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->start    = grib_arguments_get_long(grib_handle_of_accessor(a),c,n++);
+    self->len    = grib_arguments_get_long(grib_handle_of_accessor(a),c,n++);
+    e=grib_arguments_get_expression(grib_handle_of_accessor(a),c,n++);
     if (e) {
-        grib_expression_evaluate_double(a->parent->h,e,&(self->referenceValue));
+        grib_expression_evaluate_double(grib_handle_of_accessor(a),e,&(self->referenceValue));
         self->referenceValuePresent=1;
     } else {
         self->referenceValuePresent=0;
     }
     if (self->referenceValuePresent) {
-        self->scale=grib_arguments_get_double(a->parent->h,c,n++);
+        self->scale=grib_arguments_get_double(grib_handle_of_accessor(a),c,n++);
     }
 
     assert(self->len <= sizeof(long)*8);
@@ -178,7 +181,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
     grib_accessor_bits* self = (grib_accessor_bits*)a;
     grib_accessor* x=NULL;
     unsigned char* p=NULL;
-    grib_handle* h=a->parent->h;
+    grib_handle* h=grib_handle_of_accessor(a);
     long start,length;
     int ret=0;
 
@@ -187,7 +190,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
     start=self->start;
     length=self->len;
 
-    x=grib_find_accessor(a->parent->h,self->argument);
+    x=grib_find_accessor(grib_handle_of_accessor(a),self->argument);
     if (!x) return GRIB_NOT_FOUND;
 
     p  = h->buffer->data + grib_byte_offset(x);
@@ -203,7 +206,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
     grib_accessor_bits* self = (grib_accessor_bits*)a;
     grib_accessor* x=NULL;
     unsigned char* p=NULL;
-    grib_handle* h=a->parent->h;
+    grib_handle* h=grib_handle_of_accessor(a);
     long start,length;
     int ret=0;
 
@@ -212,7 +215,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
     start=self->start;
     length=self->len;
 
-    x=grib_find_accessor(a->parent->h,self->argument);
+    x=grib_find_accessor(grib_handle_of_accessor(a),self->argument);
     if (!x) return GRIB_NOT_FOUND;
 
     p  = h->buffer->data + grib_byte_offset(x);
@@ -229,7 +232,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 {
     grib_accessor_bits* self = (grib_accessor_bits*)a;
     grib_accessor* x=NULL;
-    grib_handle* h=a->parent->h;
+    grib_handle* h=grib_handle_of_accessor(a);
     unsigned char* p=NULL;
     long start,length,lval;
 
@@ -238,7 +241,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     start  = self->start;
     length = self->len;
 
-    x=grib_find_accessor(a->parent->h,self->argument);
+    x=grib_find_accessor(grib_handle_of_accessor(a),self->argument);
     if (!x) return GRIB_NOT_FOUND;
 
     p=h->buffer->data + grib_byte_offset(x);
@@ -252,7 +255,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
 {
     grib_accessor_bits* self = (grib_accessor_bits*)a;
     grib_accessor* x=NULL;
-    grib_handle* h=a->parent->h;
+    grib_handle* h=grib_handle_of_accessor(a);
     unsigned char* p=NULL;
     long start,length, maxval;
 
@@ -261,7 +264,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
     start  = self->start;
     length = self->len;
 
-    x=grib_find_accessor(a->parent->h,self->argument);
+    x=grib_find_accessor(grib_handle_of_accessor(a),self->argument);
     if (!x) return GRIB_NOT_FOUND;
 
     /* Check the input value */
@@ -321,3 +324,22 @@ static int unpack_string(grib_accessor*a , char*  v, size_t *len){
     }
     return ret;
 }
+
+static long byte_count(grib_accessor* a){
+  grib_context_log(a->context,GRIB_LOG_DEBUG,"byte_count of %s = %ld",a->name,a->length);
+  return a->length;
+
+}
+
+static int unpack_bytes (grib_accessor* a,unsigned char* buffer, size_t *len) {
+  if (*len < a->length) {
+    *len = a->length;
+    return GRIB_ARRAY_TOO_SMALL;
+  }
+  *len = a->length;
+
+  memcpy(buffer, grib_handle_of_accessor(a)->buffer->data + a->offset, *len);
+
+  return GRIB_SUCCESS;
+}
+
diff --git a/src/grib_accessor_class_bits_per_value.c b/src/grib_accessor_class_bits_per_value.c
index ee9968d..cdbb81c 100644
--- a/src/grib_accessor_class_bits_per_value.c
+++ b/src/grib_accessor_class_bits_per_value.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -92,6 +92,7 @@ static grib_accessor_class _grib_accessor_class_bits_per_value = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -129,6 +130,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -137,8 +139,8 @@ static void init(grib_accessor* a,const long l, grib_arguments* args)
 {
   int n=0;
   grib_accessor_bits_per_value* self= (grib_accessor_bits_per_value*)a;
-  self->values=grib_arguments_get_name(a->parent->h,args,n++);
-  self->bits_per_value=grib_arguments_get_name(a->parent->h,args,n++);
+  self->values=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->bits_per_value=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
   a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
   a->length=0;
 }
@@ -147,7 +149,7 @@ static int  unpack_long(grib_accessor* a, long* val, size_t *len)
 {
   int ret=0;
   grib_accessor_bits_per_value* self= (grib_accessor_bits_per_value*)a;
-  grib_handle* h=a->parent->h;
+  grib_handle* h=grib_handle_of_accessor(a);
 
   if((ret = grib_get_long_internal(h,self->bits_per_value,val))
        != GRIB_SUCCESS) return ret;
@@ -162,8 +164,8 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
   size_t size=0;
   int ret=0;
   grib_accessor_bits_per_value* self= (grib_accessor_bits_per_value*)a;
-  grib_context* c=a->parent->h->context;
-  grib_handle* h=a->parent->h;
+  grib_context* c=a->context;
+  grib_handle* h=grib_handle_of_accessor(a);
 
   if ( (ret=grib_get_size(h,self->values,&size)) != GRIB_SUCCESS) return ret;
 
diff --git a/src/grib_accessor_class_blob.c b/src/grib_accessor_class_blob.c
index 85dfcc9..a51c6e0 100644
--- a/src/grib_accessor_class_blob.c
+++ b/src/grib_accessor_class_blob.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -85,6 +85,7 @@ static grib_accessor_class _grib_accessor_class_blob = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -121,13 +122,14 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
 
 static void init(grib_accessor* a, const long len , grib_arguments* arg )
 {
-  grib_get_long_internal(a->parent->h, grib_arguments_get_name(a->parent->h, arg, 0), &a->length);
+  grib_get_long_internal(grib_handle_of_accessor(a), grib_arguments_get_name(a->parent->h, arg, 0), &a->length);
   Assert(a->length>=0);
 
 }
@@ -143,7 +145,7 @@ static int unpack_bytes (grib_accessor* a,unsigned char* buffer, size_t *len) {
   }
   *len = a->length;
 
-  memcpy(buffer, a->parent->h->buffer->data + a->offset, *len);
+  memcpy(buffer, grib_handle_of_accessor(a)->buffer->data + a->offset, *len);
 
   return GRIB_SUCCESS;
 }
diff --git a/src/grib_accessor_class_box.c b/src/grib_accessor_class_box.c
index 1f37f22..37bc139 100644
--- a/src/grib_accessor_class_box.c
+++ b/src/grib_accessor_class_box.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -85,6 +85,7 @@ static grib_accessor_class _grib_accessor_class_box = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -123,6 +124,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
diff --git a/src/grib_accessor_class_budgdate.c b/src/grib_accessor_class_budgdate.c
index a230515..7beb3a8 100644
--- a/src/grib_accessor_class_budgdate.c
+++ b/src/grib_accessor_class_budgdate.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -92,6 +92,7 @@ static grib_accessor_class _grib_accessor_class_budgdate = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -129,6 +130,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -138,9 +140,9 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
   grib_accessor_budgdate* self = (grib_accessor_budgdate*)a;
   int n = 0;
 
-  self->year    = grib_arguments_get_name(a->parent->h,c,n++);
-  self->month   = grib_arguments_get_name(a->parent->h,c,n++);
-  self->day     = grib_arguments_get_name(a->parent->h,c,n++);
+  self->year    = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->month   = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->day     = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 }
 
 
@@ -153,11 +155,11 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
   long month = 0;
   long day = 0;
 
-  if ((ret=grib_get_long_internal(a->parent->h, self->day,&day))!=GRIB_SUCCESS)
+  if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->day,&day))!=GRIB_SUCCESS)
     return ret;
-  if ((ret=grib_get_long_internal(a->parent->h, self->month,&month))!=GRIB_SUCCESS)
+  if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->month,&month))!=GRIB_SUCCESS)
     return ret;
-  if ((ret=grib_get_long_internal(a->parent->h, self->year,&year))!=GRIB_SUCCESS)
+  if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->year,&year))!=GRIB_SUCCESS)
     return ret;
 
   if(*len < 1)
@@ -191,11 +193,11 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
 
   Assert(year < 255);
 
-  if ((ret=grib_set_long_internal(a->parent->h,self->day,day))!=GRIB_SUCCESS)
+  if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->day,day))!=GRIB_SUCCESS)
     return ret;
-  if ((ret=grib_set_long_internal(a->parent->h,self->month,month))!=GRIB_SUCCESS)
+  if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->month,month))!=GRIB_SUCCESS)
     return ret;
-  if ((ret=grib_set_long_internal(a->parent->h,self->year,year))!=GRIB_SUCCESS)
+  if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->year,year))!=GRIB_SUCCESS)
     return ret;
 
   return ret;
diff --git a/src/grib_accessor_class_bufr_data.c b/src/grib_accessor_class_bufr_data.c
index a4b1817..f995ec8 100644
--- a/src/grib_accessor_class_bufr_data.c
+++ b/src/grib_accessor_class_bufr_data.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -173,6 +173,7 @@ static grib_accessor_class _grib_accessor_class_bufr_data = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -201,6 +202,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -233,135 +235,138 @@ typedef struct grib_accessor_bufr_data_element {
 
 static int number_of_qualifiers=NUMBER_OF_QUALIFIERS_PER_CATEGORY*NUMBER_OF_QUALIFIERS_CATEGORIES;
 
-static GRIB_INLINE int significanceQualifierIndex(int X,int Y) {
-  int a[]={-1,0,1,-1,-1,-1,-1,-1,2};
-  return Y+a[X]*NUMBER_OF_QUALIFIERS_PER_CATEGORY;
+static GRIB_INLINE int significanceQualifierIndex(int X,int Y)
+{
+    int a[]={-1,0,1,-1,-1,-1,-1,-1,2};
+    return Y+a[X]*NUMBER_OF_QUALIFIERS_PER_CATEGORY;
 }
 
 static long init_length(grib_accessor* a)
 {
-  grib_accessor_bufr_data *self =(grib_accessor_bufr_data*)a;
-  long section4Length=0;
+    grib_accessor_bufr_data *self =(grib_accessor_bufr_data*)a;
+    long section4Length=0;
 
-  grib_handle* h=a->parent->h;
+    grib_handle* h=grib_handle_of_accessor(a);
 
-  grib_get_long(h,self->section4LengthName,&section4Length);
+    grib_get_long(h,self->section4LengthName,&section4Length);
 
-  return section4Length-4;
+    return section4Length-4;
 }
 
 static int get_elements_and_decode(grib_accessor* a);
 
 static void init(grib_accessor* a,const long v, grib_arguments* params)
 {
-  grib_accessor_bufr_data *self =(grib_accessor_bufr_data*)a;
-  int n = 0;
-
-  a->sub_section           = grib_section_create(a->parent->h,a);
-
-  self->offsetSection4Name = grib_arguments_get_name(a->parent->h,params,n++);
-  self->offsetBeforeDataName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->offsetEndSection4Name = grib_arguments_get_name(a->parent->h,params,n++);
-  self->section4LengthName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->numberOfDataSubsetsName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->subsetNumberName    = grib_arguments_get_name(a->parent->h,params,n++);
-  self->expandedDescriptorsName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->abbreviationName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->typeName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->nameName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->unitName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->referenceName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->scaleName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->widthName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->codeFlags = grib_arguments_get_name(a->parent->h,params,n++);
-  self->bitmapNumberName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->associatedBitmapNumberName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->associatedBitmapIndexName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->associatedInfoNumberName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->expandedDescriptors=0;
-  self->numberOfDescriptors=0;
-  self->numberOfElements=0;
-  self->numberOfDataSubsets=0;
-  self->expandedDescriptors=0;
-  self->abbreviation=0;
-  self->type=0;
-  self->names=0;
-  self->units=0;
-  self->reference=0;
-  self->factor=0;
-  self->width=0;
-  self->do_compute=1;
-
-  a->length = init_length(a);
-
-  /* Assert(a->length>=0); */
+    grib_accessor_bufr_data *self =(grib_accessor_bufr_data*)a;
+    int n = 0;
+
+    a->sub_section           = grib_section_create(grib_handle_of_accessor(a),a);
+
+    self->offsetSection4Name = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->offsetBeforeDataName = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->offsetEndSection4Name = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->section4LengthName = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->numberOfDataSubsetsName = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->subsetNumberName    = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->expandedDescriptorsName = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->abbreviationName = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->typeName = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->nameName = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->unitName = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->referenceName = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->scaleName = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->widthName = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->codeFlags = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->bitmapNumberName = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->associatedBitmapNumberName = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->associatedBitmapIndexName = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->associatedInfoNumberName = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->expandedDescriptors=0;
+    self->numberOfDescriptors=0;
+    self->numberOfElements=0;
+    self->numberOfDataSubsets=0;
+    self->expandedDescriptors=0;
+    self->abbreviation=0;
+    self->type=0;
+    self->names=0;
+    self->units=0;
+    self->reference=0;
+    self->factor=0;
+    self->width=0;
+    self->do_compute=1;
+
+    a->length = init_length(a);
+
+    /* Assert(a->length>=0); */
 }
 
-static void self_clear(grib_context* c,grib_accessor_bufr_data* self) {
-  int i=0;
-  for (i=0;i<self->numberOfDescriptors;i++) {
-    grib_context_free(c,self->abbreviation[i]);
-    grib_context_free(c,self->type[i]);
-    grib_context_free(c,self->names[i]);
-    grib_context_free(c,self->units[i]);
-  }
-  grib_context_free(c,self->expandedDescriptors);
-  grib_context_free(c,self->abbreviation);
-  grib_context_free(c,self->type);
-  grib_context_free(c,self->names);
-  grib_context_free(c,self->units);
-  grib_context_free(c,self->reference);
-  grib_context_free(c,self->width);
-  grib_context_free(c,self->bitmapNumber);
-  grib_context_free(c,self->associatedBitmapNumber);
-  grib_context_free(c,self->associatedBitmapIndex);
-  grib_context_free(c,self->associatedInfoNumber);
-  grib_context_free(c,self->factor);
+static void self_clear(grib_context* c,grib_accessor_bufr_data* self)
+{
+    int i=0;
+    for (i=0;i<self->numberOfDescriptors;i++) {
+        grib_context_free(c,self->abbreviation[i]);
+        grib_context_free(c,self->type[i]);
+        grib_context_free(c,self->names[i]);
+        grib_context_free(c,self->units[i]);
+    }
+    grib_context_free(c,self->expandedDescriptors);
+    grib_context_free(c,self->abbreviation);
+    grib_context_free(c,self->type);
+    grib_context_free(c,self->names);
+    grib_context_free(c,self->units);
+    grib_context_free(c,self->reference);
+    grib_context_free(c,self->width);
+    grib_context_free(c,self->bitmapNumber);
+    grib_context_free(c,self->associatedBitmapNumber);
+    grib_context_free(c,self->associatedBitmapIndex);
+    grib_context_free(c,self->associatedInfoNumber);
+    grib_context_free(c,self->factor);
 }
 static int  get_native_type(grib_accessor* a){
-  return GRIB_TYPE_DOUBLE;
+    return GRIB_TYPE_DOUBLE;
 }
 
 static long byte_count(grib_accessor* a){
-  return a->length;
+    return a->length;
 
 }
 
 static long byte_offset(grib_accessor* a){
-  return a->offset;
+    return a->offset;
 }
 
 static long next_offset(grib_accessor* a){
-  return a->offset+a->length;
+    return a->offset+a->length;
 }
 
 static void update_size(grib_accessor* a,size_t s)
 {
-    grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG,"updating size of %s old %ld new %ld",a->name,a->length,s);
-  a->length = s;
-  Assert(a->length>=0);
+    grib_context_log(a->context,GRIB_LOG_DEBUG,"updating size of %s old %ld new %ld",a->name,a->length,s);
+    a->length = s;
+    Assert(a->length>=0);
 }
 
 static int compare(grib_accessor* a, grib_accessor* b) {
-  return GRIB_NOT_IMPLEMENTED;
+    return GRIB_NOT_IMPLEMENTED;
 }
 
 static int pack_long(grib_accessor* a, const long* val, size_t *len)
 {
-  grib_accessor_bufr_data *self =(grib_accessor_bufr_data*)a;
-  self->do_compute=1;
+    grib_accessor_bufr_data *self =(grib_accessor_bufr_data*)a;
+    self->do_compute=1;
 
-  return GRIB_NOT_IMPLEMENTED;
+    return GRIB_NOT_IMPLEMENTED;
 }
 
 static int pack_double(grib_accessor* a, const double* val, size_t *len)
 {
-  grib_accessor_bufr_data *self =(grib_accessor_bufr_data*)a;
-  self->do_compute=1;
-  return GRIB_NOT_IMPLEMENTED;
+    grib_accessor_bufr_data *self =(grib_accessor_bufr_data*)a;
+    self->do_compute=1;
+    return GRIB_NOT_IMPLEMENTED;
 }
 
-static int get_descriptors(grib_accessor* a) {
+static int get_descriptors(grib_accessor* a)
+{
     int err=0;
     size_t size=0;
     long* scale=0;
@@ -369,30 +374,30 @@ static int get_descriptors(grib_accessor* a) {
     int i=0;
     grib_accessor_bufr_data *self =(grib_accessor_bufr_data*)a;
     grib_accessor* expandedDescriptors=0;
-    grib_handle* h=a->parent->h;
-    grib_context* c=a->parent->h->context;
+    grib_handle* h=grib_handle_of_accessor(a);
+    grib_context* c=a->context;
 
-    expandedDescriptors=grib_find_accessor(a->parent->h,self->expandedDescriptorsName);
+    expandedDescriptors=grib_find_accessor(grib_handle_of_accessor(a),self->expandedDescriptorsName);
     if (!expandedDescriptors) {
-          grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
-              "unable to find accessor %s",self->expandedDescriptorsName);
-          return GRIB_NOT_FOUND;
+        grib_context_log(a->context,GRIB_LOG_ERROR,
+                "unable to find accessor %s",self->expandedDescriptorsName);
+        return GRIB_NOT_FOUND;
     }
 
     if (self->numberOfDescriptors) self_clear(c,self);
-    err=_grib_get_size(a->parent->h,expandedDescriptors,&(self->numberOfDescriptors));
+    err=_grib_get_size(grib_handle_of_accessor(a),expandedDescriptors,&(self->numberOfDescriptors));
     if (err) return err;
 
-    self->expandedDescriptors=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*self->numberOfDescriptors);
+    self->expandedDescriptors=(long*)grib_context_malloc_clear(a->context,sizeof(long)*self->numberOfDescriptors);
     if (!self->expandedDescriptors) {
-      grib_context_log(a->parent->h->context,GRIB_LOG_FATAL,
-          "unable to allocate %ld bytes",(long)(self->numberOfDescriptors));
-      return GRIB_OUT_OF_MEMORY;
+        grib_context_log(a->context,GRIB_LOG_FATAL,
+                "unable to allocate %ld bytes",(long)(self->numberOfDescriptors));
+        return GRIB_OUT_OF_MEMORY;
     }
 
     if( (err = grib_unpack_long(expandedDescriptors,self->expandedDescriptors,&(self->numberOfDescriptors)))
-                != GRIB_SUCCESS)
-      return err;
+            != GRIB_SUCCESS)
+        return err;
 
     size=self->numberOfDescriptors;
     self->abbreviation=(char**)grib_context_malloc_clear(c,size*sizeof(char*));
@@ -414,11 +419,11 @@ static int get_descriptors(grib_accessor* a) {
     factor=(double*)grib_context_malloc_clear(c,size*sizeof(double));
     err=grib_get_long_array(h,self->scaleName,scale,&size);
     for (i=0;i<size;i++) {
-      if (scale[i]==GRIB_MISSING_LONG) {
-        grib_context_log(c,GRIB_LOG_FATAL,"Missing table entry for descriptor %ld",self->expandedDescriptors[i]);
-        return GRIB_MISSING_BUFR_ENTRY;
-      }
-      factor[i]=grib_power(-scale[i],10);
+        if (scale[i]==GRIB_MISSING_LONG) {
+            grib_context_log(c,GRIB_LOG_FATAL,"Missing table entry for descriptor %ld",self->expandedDescriptors[i]);
+            return GRIB_MISSING_BUFR_ENTRY;
+        }
+        factor[i]=grib_power(-scale[i],10);
     }
     self->factor=factor;
     grib_context_free(c,scale);
@@ -443,62 +448,64 @@ static int get_descriptors(grib_accessor* a) {
     return err;
 }
 
+static void push_units_accessor(grib_section* section,grib_accessor* a,long groupNumber,long i)
+{
+    char buf[1024]={0,};
+    grib_accessor_bufr_data *self =(grib_accessor_bufr_data*)a;
+    grib_accessor* gaUnits=0;
+    grib_action creatorUnits = {0, };
+    grib_context* c=a->context;
+
+    if (self->units[i][0]=='C' && ( !strcmp(self->units[i],"CCITTIA5") ||
+            !strncmp(self->units[i],"COMMON",6)) )
+        return;
+    if (self->units[i][0]=='N' &&  !strcmp(self->units[i],"NUMERIC") )
+        return;
+
+    creatorUnits.op         = (char*)"variable";
+    creatorUnits.name_space = (char*)"";
+    creatorUnits.set        = 0;
+    creatorUnits.flags      = GRIB_ACCESSOR_FLAG_DUMP;
+
+    sprintf(buf,"%sUnits",self->abbreviation[i]);
+    creatorUnits.name=buf;
+    gaUnits = grib_accessor_factory(section, &creatorUnits, 0, NULL);
+    gaUnits->bufr_group_number=groupNumber;
+    ((grib_accessor_constant*)gaUnits)->type=GRIB_TYPE_STRING;
+
+    if ((self->units[i][0]=='C' && !strncmp(self->units[i],"CODE",4)) ||
+            ( self->units[i][0]=='F' && !strncmp(self->units[i],"FLAG",4) ) ) {
+        sprintf(buf,"codetable %ld",self->expandedDescriptors[i]);
+        ((grib_accessor_constant*)gaUnits)->cval=grib_context_strdup(c,buf);
+    } else {
+        ((grib_accessor_constant*)gaUnits)->cval=grib_context_strdup(c,self->units[i]);
+    }
 
-static void push_units_accessor(grib_section* section,grib_accessor* a,long groupNumber,long i) {
-  char buf[1024]={0,};
-  grib_accessor_bufr_data *self =(grib_accessor_bufr_data*)a;
-  grib_accessor* gaUnits=0;
-  grib_action creatorUnits = {0, };
-  grib_context* c=a->parent->h->context;
-
-  if (self->units[i][0]=='C' && ( !strcmp(self->units[i],"CCITTIA5") ||
-                                  !strncmp(self->units[i],"COMMON",6)) )
-                        return;
-  if (self->units[i][0]=='N' &&  !strcmp(self->units[i],"NUMERIC") )
-                        return;
-
-  creatorUnits.op         = "variable";
-  creatorUnits.name_space = "";
-  creatorUnits.set        = 0;
-  creatorUnits.flags     = GRIB_ACCESSOR_FLAG_DUMP;
-
-  sprintf(buf,"%sUnits",self->abbreviation[i]);
-  creatorUnits.name=buf;
-  gaUnits = grib_accessor_factory(section, &creatorUnits, 0, NULL);
-  gaUnits->bufr_group_number=groupNumber;
-  ((grib_accessor_constant*)gaUnits)->type=GRIB_TYPE_STRING;
-
-  if ((self->units[i][0]=='C' && !strncmp(self->units[i],"CODE",4)) || 
-      ( self->units[i][0]=='F' && !strncmp(self->units[i],"FLAG",4) ) ) {
-    sprintf(buf,"codetable %ld",self->expandedDescriptors[i]);
-    ((grib_accessor_constant*)gaUnits)->cval=grib_context_strdup(c,buf);
-  } else {
-    ((grib_accessor_constant*)gaUnits)->cval=grib_context_strdup(c,self->units[i]);
-  }
-
-  grib_push_accessor(gaUnits,section->block);
+    grib_push_accessor(gaUnits,section->block);
 }
 
-static long computeBitmapStartElement(grib_accessor_bufr_data* self,long length, grib_iarray* index) {
-  int i,startIndex;
-  int idx;
-
-  startIndex=index->n-1;
-  /* printf("======== BITMAP\n"); */
-  for (i=0;i<length;i++) {
-    idx=grib_iarray_get(index,startIndex);
-    if (self->expandedDescriptors[idx]/100000!=2) {
-      startIndex--;
-      /* printf("==> %d %.6ld %s\n",startIndex,self->expandedDescriptors[idx],self->abbreviation[idx]); */
+static long computeBitmapStartElement(grib_accessor_bufr_data* self,long length, grib_iarray* index)
+{
+    int i,startIndex;
+    int idx;
+
+    startIndex=index->n-1;
+    /* printf("======== BITMAP\n"); */
+    for (i=0;i<length;i++) {
+        idx=grib_iarray_get(index,startIndex);
+        if (self->expandedDescriptors[idx]/100000!=2) {
+            startIndex--;
+            /* printf("==> %d %.6ld %s\n",startIndex,self->expandedDescriptors[idx],self->abbreviation[idx]); */
+        }
     }
-  }
 
-  startIndex++;
-  return startIndex;
+    startIndex++;
+    return startIndex;
 }
 
 static grib_section* find_section_of_associated_group(grib_section** groupNumberSection,
-                      long* bitmapStartElement,grib_iarray* groupNumberIndex,long bitmapNumber) {
+        long* bitmapStartElement,grib_iarray* groupNumberIndex,long bitmapNumber)
+{
     grib_section* section=0;
     long indexOfGroupNumber=0;
     long jj=bitmapStartElement[bitmapNumber];
@@ -507,31 +514,33 @@ static grib_section* find_section_of_associated_group(grib_section** groupNumber
     return section;
 }
 
-static GRIB_INLINE void reset_qualifiers(grib_accessor* significanceQualifierGroup[]) {
-  int i;
-  for (i=0;i<number_of_qualifiers;i++) 
-      significanceQualifierGroup[i]=0;
+static GRIB_INLINE void reset_qualifiers(grib_accessor* significanceQualifierGroup[])
+{
+    int i;
+    for (i=0;i<number_of_qualifiers;i++)
+        significanceQualifierGroup[i]=0;
 }
 
-static GRIB_INLINE void reset_deeper_qualifiers(grib_accessor* significanceQualifierGroup[],int* significanceQualifierDepth, int depth) {
-  int i;
-  for (i=0;i<number_of_qualifiers;i++) {
-    if (significanceQualifierDepth[i]>depth) {
-      significanceQualifierGroup[i]=0;
+static GRIB_INLINE void reset_deeper_qualifiers(grib_accessor* significanceQualifierGroup[],int* significanceQualifierDepth, int depth)
+{
+    int i;
+    for (i=0;i<number_of_qualifiers;i++) {
+        if (significanceQualifierDepth[i]>depth) {
+            significanceQualifierGroup[i]=0;
+        }
     }
-  }
 }
 
-
-static int decode_elements(grib_accessor* a) {
+static int decode_elements(grib_accessor* a)
+{
     int err=0;
     grib_accessor_bufr_data *self =(grib_accessor_bufr_data*)a;
     unsigned char* data =NULL;
-    int forceGroupClosure=0,forceOneLevelClosure=0;
+    int forceGroupClosure=0;
     long i=0,k=0,jj=0;
     long pos=0;
     long localReference=0,width,j;
-    long totalNumberOfValues,numberOfValuesPerElement;
+    long numberOfValuesPerElement;
     double* dvalues;
     grib_sarray* svalues = NULL;
     size_t n,nn;
@@ -543,7 +552,7 @@ static int decode_elements(grib_accessor* a) {
     int startRepetition=0;
     int depth;
     int bitmapIndex[10];
-    long bitmapLength[10]={0,};
+    /*long bitmapLength[10]={0,};*/
     long bitmapStartElement[10]={0,};
     grib_section* section=0;
     grib_section* sectionUp=0;
@@ -560,20 +569,20 @@ static int decode_elements(grib_accessor* a) {
     grib_accessor* significanceQualifierGroup[NUMBER_OF_QUALIFIERS_PER_CATEGORY*NUMBER_OF_QUALIFIERS_CATEGORIES]={0,};
     int significanceQualifierDepth[NUMBER_OF_QUALIFIERS_PER_CATEGORY*NUMBER_OF_QUALIFIERS_CATEGORIES]={0,};
 
-    grib_handle* h=a->parent->h;
+    grib_handle* h=grib_handle_of_accessor(a);
     grib_context* c=h->context;
 
     grib_accessor* ga=0;
     grib_action creator = {0, };
-    creator.op         = "bufr_data_element";
-    creator.name_space = "";
+    creator.op         = (char*)"bufr_data_element";
+    creator.name_space = (char*)"";
     creator.flags     = GRIB_ACCESSOR_FLAG_DUMP;
     creator.set        = 0;
 
-    creatorGroup.op         = "bufr_group";
-    creatorGroup.name="groupNumber";
-    creatorGroup.name_space = "";
-    creatorGroup.flags     = GRIB_ACCESSOR_FLAG_DUMP;
+    creatorGroup.op         = (char*)"bufr_group";
+    creatorGroup.name       = (char*)"groupNumber";
+    creatorGroup.name_space = (char*)"";
+    creatorGroup.flags      = GRIB_ACCESSOR_FLAG_DUMP;
     creatorGroup.set        = 0;
 
     data = (unsigned char*)h->buffer->data;
@@ -588,7 +597,7 @@ static int decode_elements(grib_accessor* a) {
     groupNumberIndex=grib_iarray_new(c,self->numberOfDescriptors,100);
     bitmap=grib_iarray_new(c,self->numberOfDescriptors,100);
 
-    totalNumberOfValues=self->numberOfDescriptors*self->numberOfDataSubsets;
+    /*totalNumberOfValues=self->numberOfDescriptors*self->numberOfDataSubsets;*/
     numberOfValuesPerElement=self->numberOfDataSubsets;
 
     F=(int*)grib_context_malloc_clear(c,sizeof(int)*self->numberOfDescriptors);
@@ -606,7 +615,7 @@ static int decode_elements(grib_accessor* a) {
 
     gaGroup = grib_accessor_factory(a->sub_section, &creatorGroup, 0, NULL);
     gaGroup->bufr_group_number=groupNumber;
-    gaGroup->sub_section=grib_section_create(a->parent->h,gaGroup);
+    gaGroup->sub_section=grib_section_create(grib_handle_of_accessor(a),gaGroup);
     section=gaGroup->sub_section;
     sectionUp=a->sub_section;
     ((grib_accessor_constant*)gaGroup)->type=GRIB_TYPE_LONG;
@@ -621,68 +630,66 @@ static int decode_elements(grib_accessor* a) {
     for (i=0;i<self->numberOfDescriptors;i++) {
 
         if (F[i]==0 && IS_QUALIFIER(X[i]) && self->associatedInfoNumber[i]==0) {
-          int idx=significanceQualifierIndex(X[i],Y[i]);
-          groupNumber++;
-
-          if (significanceQualifierGroup[idx]) {
-            groupSection=significanceQualifierGroup[idx]->parent;
-            depth=significanceQualifierDepth[idx];
-            reset_deeper_qualifiers(significanceQualifierGroup,significanceQualifierDepth,depth);
-            forceGroupClosure=0;
-          } else {
-            if (forceGroupClosure) {
-              groupSection=sectionUp;
-              forceGroupClosure=0;
-              forceOneLevelClosure=1;
-              depth=0;
+            int idx=significanceQualifierIndex(X[i],Y[i]);
+            groupNumber++;
+
+            if (significanceQualifierGroup[idx]) {
+                groupSection=significanceQualifierGroup[idx]->parent;
+                depth=significanceQualifierDepth[idx];
+                reset_deeper_qualifiers(significanceQualifierGroup,significanceQualifierDepth,depth);
+                forceGroupClosure=0;
             } else {
-              groupSection=section;
-              depth++;
+                if (forceGroupClosure) {
+                    groupSection=sectionUp;
+                    forceGroupClosure=0;
+                    depth=0;
+                } else {
+                    groupSection=section;
+                    depth++;
+                }
             }
-          }
 
-          gaGroup = grib_accessor_factory(groupSection, &creatorGroup, 0, NULL);
-          a->parent->h->groups[groupNumber]=gaGroup;
-          gaGroup->sub_section=grib_section_create(a->parent->h,gaGroup);
-          gaGroup->bufr_group_number=groupNumber;
-          ((grib_accessor_constant*)gaGroup)->type=GRIB_TYPE_LONG;
-          ((grib_accessor_constant*)gaGroup)->dval=groupNumber;
-          grib_push_accessor(gaGroup,groupSection->block);
+            gaGroup = grib_accessor_factory(groupSection, &creatorGroup, 0, NULL);
+            gaGroup->sub_section=grib_section_create(grib_handle_of_accessor(a),gaGroup);
+            gaGroup->bufr_group_number=groupNumber;
+            ((grib_accessor_constant*)gaGroup)->type=GRIB_TYPE_LONG;
+            ((grib_accessor_constant*)gaGroup)->dval=groupNumber;
+            grib_push_accessor(gaGroup,groupSection->block);
 
-          section=gaGroup->sub_section;
-          sectionUp=gaGroup->parent;
+            section=gaGroup->sub_section;
+            sectionUp=gaGroup->parent;
 
-          significanceQualifierGroup[idx]=gaGroup;
-          significanceQualifierDepth[idx]=depth;
+            significanceQualifierGroup[idx]=gaGroup;
+            significanceQualifierDepth[idx]=depth;
         }
 
         if (F[i]==1) {
-          /* delayed replication */
-          if (! IS_QUALIFIER(X[i-1])) {
-            forceGroupClosure=1;
-            reset_qualifiers(significanceQualifierGroup);
-          }
-          numberOfElementsToRepeat=X[i];
-          nn=numberOfElementsToRepeat;
-          i++;
-          localReference=grib_decode_unsigned_long(data,&pos,self->width[i])+self->reference[i];
-          width=grib_decode_unsigned_long(data,&pos,6);
-          if (width) {
-            /* delayed replication number is not constant. NOT IMPLEMENTED */
-            Assert(0);
-          } else {
-            numberOfRepetitions=localReference*self->factor[i];
-            startRepetition=i;
-          }
-          if (self->bitmapNumber[i+1]) {
-            bitmapLength[self->bitmapNumber[i+1]]=numberOfRepetitions;
-            bitmapStartElement[self->bitmapNumber[i+1]]=computeBitmapStartElement(self,numberOfRepetitions,index);
-          }
-          grib_iarray_push(index,i);
-          grib_iarray_push(groupNumberIndex,groupNumber);
-          groupNumberSection[groupNumber]=section;
-          indexOfGroupNumber=0;
-          continue;
+            /* delayed replication */
+            if (! IS_QUALIFIER(X[i-1])) {
+                forceGroupClosure=1;
+                reset_qualifiers(significanceQualifierGroup);
+            }
+            numberOfElementsToRepeat=X[i];
+            nn=numberOfElementsToRepeat;
+            i++;
+            localReference=grib_decode_unsigned_long(data,&pos,self->width[i])+self->reference[i];
+            width=grib_decode_unsigned_long(data,&pos,6);
+            if (width) {
+                /* delayed replication number is not constant. NOT IMPLEMENTED */
+                Assert(0);
+            } else {
+                numberOfRepetitions=localReference*self->factor[i];
+                startRepetition=i;
+            }
+            if (self->bitmapNumber[i+1]) {
+                /*bitmapLength[self->bitmapNumber[i+1]]=numberOfRepetitions;*/
+                bitmapStartElement[self->bitmapNumber[i+1]]=computeBitmapStartElement(self,numberOfRepetitions,index);
+            }
+            grib_iarray_push(index,i);
+            grib_iarray_push(groupNumberIndex,groupNumber);
+            groupNumberSection[groupNumber]=section;
+            indexOfGroupNumber=0;
+            continue;
         }
 
         if (self->bitmapNumber[i]) {
@@ -700,139 +707,139 @@ static int decode_elements(grib_accessor* a) {
             k=-1;
             jj=0;
         } else if (self->associatedBitmapNumber[i]) {
-          /* bitmap application */
-          char name[1024]={0,};
-
-          if (k==-1) {
-            k=bitmapIndex[self->associatedBitmapNumber[i]];
-            jj=bitmapStartElement[self->associatedBitmapNumber[i]];
-          } else {
-            k++;
-          }
-
-          indexOfReferringElement=grib_iarray_get(index,jj);
-          indexOfGroupNumber=grib_iarray_get(groupNumberIndex,jj);
-          sprintf(name,"%sOf-%s",self->abbreviation[i],self->abbreviation[indexOfReferringElement]);
-          jj++;
-          if (grib_iarray_get(bitmap,k)==0) {
-            creator.name = name;
-          ga = grib_accessor_factory(section, &creator, 0, NULL);
-          ga->bufr_group_number=indexOfGroupNumber;
-          ((grib_accessor_bufr_data_element*)ga)->type=GRIB_TYPE_DOUBLE;
-            lval=grib_decode_unsigned_long(data,&pos,self->width[indexOfReferringElement]);
-            localReference=lval+self->reference[indexOfReferringElement];
-            width=grib_decode_unsigned_long(data,&pos,6);
-            if (width) {
-              ((grib_accessor_bufr_data_element*)ga)->isConstant=0;
-              n=numberOfValuesPerElement;
+            /* bitmap application */
+            char name[1024]={0,};
+
+            if (k==-1) {
+                k=bitmapIndex[self->associatedBitmapNumber[i]];
+                jj=bitmapStartElement[self->associatedBitmapNumber[i]];
             } else {
-              ((grib_accessor_bufr_data_element*)ga)->isConstant=1;
-              n=1;
+                k++;
             }
-            dvalues=(double*)grib_context_malloc_clear(c,sizeof(double)*n);
-            if (((grib_accessor_bufr_data_element*)ga)->isConstant) {
-                 if (!grib_is_all_bits_one(lval,self->width[indexOfReferringElement])) {
-                     dvalues[0]=localReference*self->factor[indexOfReferringElement];
-                 } else dvalues[0]=GRIB_MISSING_DOUBLE;
+
+            indexOfReferringElement=grib_iarray_get(index,jj);
+            indexOfGroupNumber=grib_iarray_get(groupNumberIndex,jj);
+            sprintf(name,"%sOf-%s",self->abbreviation[i],self->abbreviation[indexOfReferringElement]);
+            jj++;
+            if (grib_iarray_get(bitmap,k)==0) {
+                creator.name = name;
+                ga = grib_accessor_factory(section, &creator, 0, NULL);
+                ga->bufr_group_number=indexOfGroupNumber;
+                ((grib_accessor_bufr_data_element*)ga)->type=GRIB_TYPE_DOUBLE;
+                lval=grib_decode_unsigned_long(data,&pos,self->width[indexOfReferringElement]);
+                localReference=lval+self->reference[indexOfReferringElement];
+                width=grib_decode_unsigned_long(data,&pos,6);
+                if (width) {
+                    ((grib_accessor_bufr_data_element*)ga)->isConstant=0;
+                    n=numberOfValuesPerElement;
+                } else {
+                    ((grib_accessor_bufr_data_element*)ga)->isConstant=1;
+                    n=1;
+                }
+                dvalues=(double*)grib_context_malloc_clear(c,sizeof(double)*n);
+                if (((grib_accessor_bufr_data_element*)ga)->isConstant) {
+                    if (!grib_is_all_bits_one(lval,self->width[indexOfReferringElement])) {
+                        dvalues[0]=localReference*self->factor[indexOfReferringElement];
+                    } else dvalues[0]=GRIB_MISSING_DOUBLE;
+                } else {
+                    for (j=0;j<n;j++) {
+                        lval=grib_decode_unsigned_long(data,&pos,width);
+                        if (!grib_is_all_bits_one(lval,width)) {
+                            dvalues[j]=(localReference+lval)*self->factor[indexOfReferringElement];
+                        } else dvalues[j]=GRIB_MISSING_DOUBLE;
+                    }
+                }
+                ((grib_accessor_bufr_data_element*)ga)->type=GRIB_TYPE_DOUBLE;
+                ((grib_accessor_bufr_data_element*)ga)->dvalues=dvalues;
+                ((grib_accessor_bufr_data_element*)ga)->numberOfValues=numberOfValuesPerElement;
+
+                grib_iarray_push(index,i);
+                grib_iarray_push(groupNumberIndex,ga->bufr_group_number);
+                grib_push_accessor(ga,groupNumberSection[ga->bufr_group_number]->block);
             } else {
-                 for (j=0;j<n;j++) {
-                     lval=grib_decode_unsigned_long(data,&pos,width);
-                     if (!grib_is_all_bits_one(lval,width)) {
-                         dvalues[j]=(localReference+lval)*self->factor[indexOfReferringElement];
-                     } else dvalues[j]=GRIB_MISSING_DOUBLE;
-                 }
+                i--;
+                continue;
             }
-            ((grib_accessor_bufr_data_element*)ga)->type=GRIB_TYPE_DOUBLE;
-            ((grib_accessor_bufr_data_element*)ga)->dvalues=dvalues;
+        } else {
+
+            if (*(self->type[i])=='s') {
+                svalues=grib_sarray_new(c,numberOfValuesPerElement,100);
+                sval=(char*)grib_context_malloc_clear(c,self->width[i]/8+1);
+                grib_decode_string(data,&pos,self->width[i]/8,sval);
+                grib_sarray_push(c,svalues,sval);
+            } else {
+                lval=grib_decode_unsigned_long(data,&pos,self->width[i]);
+                localReference=lval+self->reference[i];
+            }
+
+            width=grib_decode_unsigned_long(data,&pos,6);
+            creator.name = self->abbreviation[i];
+            ga = grib_accessor_factory(section, &creator, 0, NULL);
+            ga->bufr_group_number=groupNumber;
             ((grib_accessor_bufr_data_element*)ga)->numberOfValues=numberOfValuesPerElement;
 
-            grib_iarray_push(index,i);
-            grib_iarray_push(groupNumberIndex,ga->bufr_group_number);
-            grib_push_accessor(ga,groupNumberSection[ga->bufr_group_number]->block);
-          } else {
-              i--;
-              continue;
-          }
-        } else {
 
-          if (*(self->type[i])=='s') {
-            svalues=grib_sarray_new(c,numberOfValuesPerElement,100);
-            sval=(char*)grib_context_malloc_clear(c,self->width[i]/8+1);
-            grib_decode_string(data,&pos,self->width[i]/8,sval);
-            grib_sarray_push(c,svalues,sval);
-          } else {
-            lval=grib_decode_unsigned_long(data,&pos,self->width[i]);
-            localReference=lval+self->reference[i];
-          }
-
-          width=grib_decode_unsigned_long(data,&pos,6);
-          creator.name = self->abbreviation[i];
-          ga = grib_accessor_factory(section, &creator, 0, NULL);
-          ga->bufr_group_number=groupNumber;
-          ((grib_accessor_bufr_data_element*)ga)->numberOfValues=numberOfValuesPerElement;
-
-
-          if (width) {
-            ((grib_accessor_bufr_data_element*)ga)->isConstant=0;
-            n=numberOfValuesPerElement;
-          } else {
-            ((grib_accessor_bufr_data_element*)ga)->isConstant=1;
-            n=1;
-          }
-          if (*(self->type[i])=='s') {
-            /* string element */
-            if (!width) {
-              width=self->width[i];
-              n=1;
+            if (width) {
+                ((grib_accessor_bufr_data_element*)ga)->isConstant=0;
+                n=numberOfValuesPerElement;
+            } else {
+                ((grib_accessor_bufr_data_element*)ga)->isConstant=1;
+                n=1;
             }
-            for (j=1;j<n;j++) {
-              sval=(char*)grib_context_malloc_clear(c,width/8+1);
-              grib_decode_string(data,&pos,width/8,sval);
-              grib_sarray_push(c,svalues,sval);
+            if (*(self->type[i])=='s') {
+                /* string element */
+                if (!width) {
+                    width=self->width[i];
+                    n=1;
+                }
+                for (j=1;j<n;j++) {
+                    sval=(char*)grib_context_malloc_clear(c,width/8+1);
+                    grib_decode_string(data,&pos,width/8,sval);
+                    grib_sarray_push(c,svalues,sval);
+                }
+                ((grib_accessor_bufr_data_element*)ga)->type=GRIB_TYPE_STRING;
+                ((grib_accessor_bufr_data_element*)ga)->svalues=svalues;
+            } else {
+                dvalues=(double*)grib_context_malloc_clear(c,sizeof(double)*n);
+                if (((grib_accessor_bufr_data_element*)ga)->isConstant) {
+                    if (!grib_is_all_bits_one(lval,self->width[i])) {
+                        dvalues[0]=localReference*self->factor[i];
+                    } else dvalues[0]=GRIB_MISSING_DOUBLE;
+                } else {
+                    for (j=0;j<n;j++) {
+                        lval=grib_decode_unsigned_long(data,&pos,width);
+                        if (!grib_is_all_bits_one(lval,width)) {
+                            dvalues[j]=(localReference+lval)*self->factor[i];
+                        } else dvalues[j]=GRIB_MISSING_DOUBLE;
+                    }
+                }
+                ((grib_accessor_bufr_data_element*)ga)->type=GRIB_TYPE_DOUBLE;
+                ((grib_accessor_bufr_data_element*)ga)->dvalues=dvalues;
+                if (*(self->type[i])=='l')
+                    ((grib_accessor_bufr_data_element*)ga)->type=GRIB_TYPE_LONG;
             }
-            ((grib_accessor_bufr_data_element*)ga)->type=GRIB_TYPE_STRING;
-            ((grib_accessor_bufr_data_element*)ga)->svalues=svalues;
-          } else {
-            dvalues=(double*)grib_context_malloc_clear(c,sizeof(double)*n);
-            if (((grib_accessor_bufr_data_element*)ga)->isConstant) {
-                 if (!grib_is_all_bits_one(lval,self->width[i])) {
-                     dvalues[0]=localReference*self->factor[i];
-                 } else dvalues[0]=GRIB_MISSING_DOUBLE;
+            grib_iarray_push(index,i);
+            grib_iarray_push(groupNumberIndex,groupNumber);
+            groupNumberSection[groupNumber]=section;
+            /* printf("==== %s %ld\n",ga->name,ga->bufr_group_number); */
+            if (self->associatedInfoNumber[i]) {
+                grib_section* sectionOfAssociatedGroup=find_section_of_associated_group(groupNumberSection,
+                        bitmapStartElement,groupNumberIndex,self->associatedInfoNumber[i]);
+                if (!sectionOfAssociatedGroup) sectionOfAssociatedGroup=section;
+                push_units_accessor(sectionOfAssociatedGroup,a,sectionOfAssociatedGroup->block->first->bufr_group_number,i);
+                ga->bufr_group_number=sectionOfAssociatedGroup->block->first->bufr_group_number;
+                grib_push_accessor(ga,sectionOfAssociatedGroup->block);
             } else {
-                 for (j=0;j<n;j++) {
-                     lval=grib_decode_unsigned_long(data,&pos,width);
-                     if (!grib_is_all_bits_one(lval,width)) {
-                         dvalues[j]=(localReference+lval)*self->factor[i];
-                     } else dvalues[j]=GRIB_MISSING_DOUBLE;
-                 }
+                push_units_accessor(section,a,groupNumber,i);
+                grib_push_accessor(ga,section->block);
             }
-            ((grib_accessor_bufr_data_element*)ga)->type=GRIB_TYPE_DOUBLE;
-            ((grib_accessor_bufr_data_element*)ga)->dvalues=dvalues;
-            if (*(self->type[i])=='l')
-                 ((grib_accessor_bufr_data_element*)ga)->type=GRIB_TYPE_LONG;
-         }
-         grib_iarray_push(index,i);
-         grib_iarray_push(groupNumberIndex,groupNumber);
-         groupNumberSection[groupNumber]=section;
-         /* printf("==== %s %ld\n",ga->name,ga->bufr_group_number); */
-         if (self->associatedInfoNumber[i]) {
-           grib_section* sectionOfAssociatedGroup=find_section_of_associated_group(groupNumberSection,
-                    bitmapStartElement,groupNumberIndex,self->associatedInfoNumber[i]);
-           if (!sectionOfAssociatedGroup) sectionOfAssociatedGroup=section;
-           push_units_accessor(sectionOfAssociatedGroup,a,sectionOfAssociatedGroup->block->first->bufr_group_number,i);
-           ga->bufr_group_number=sectionOfAssociatedGroup->block->first->bufr_group_number;
-           grib_push_accessor(ga,sectionOfAssociatedGroup->block);
-         } else {
-           push_units_accessor(section,a,groupNumber,i);
-           grib_push_accessor(ga,section->block);
-         }
-
-         k=-1;
-         jj=0;
-       }
-
-       /* delayed repetition check */
-       if (numberOfRepetitions)  {
+
+            k=-1;
+            jj=0;
+        }
+
+        /* delayed repetition check */
+        if (numberOfRepetitions)  {
             if (nn>1) {
                 nn--;
             } else {
@@ -840,7 +847,7 @@ static int decode_elements(grib_accessor* a) {
                 numberOfRepetitions--;
                 if (numberOfRepetitions) i=startRepetition;
             }
-       }
+        }
 
     }
     grib_iarray_delete(index);
@@ -854,53 +861,53 @@ static int decode_elements(grib_accessor* a) {
 
 static void dump(grib_accessor* a, grib_dumper* dumper)
 {
-  get_elements_and_decode(a);
-  a->parent->h->unpacked=1;
+    get_elements_and_decode(a);
 
-  grib_dump_section(dumper,a,a->sub_section->block);
+    grib_dump_section(dumper,a,a->sub_section->block);
 
-  return;
+    return;
 }
 
 static int value_count(grib_accessor* a,long* count)
 {
-	int err=0;
-	grib_accessor_bufr_data *self =(grib_accessor_bufr_data*)a;
-        grib_handle* h=a->parent->h;
+    int err=0;
+    grib_accessor_bufr_data *self =(grib_accessor_bufr_data*)a;
+    grib_handle* h=grib_handle_of_accessor(a);
 
-	err=get_descriptors(a);
-	if (err) return err;
+    err=get_descriptors(a);
+    if (err) return err;
 
-	grib_get_long(h,self->numberOfDataSubsetsName,&(self->numberOfDataSubsets));
+    grib_get_long(h,self->numberOfDataSubsetsName,&(self->numberOfDataSubsets));
 
-	*count=self->numberOfElements*self->numberOfDataSubsets;
-	return err;
+    *count=self->numberOfElements*self->numberOfDataSubsets;
+    return err;
 }
 
-static int unpack_double(grib_accessor* a, double* val, size_t *len) {
+static int unpack_double(grib_accessor* a, double* val, size_t *len)
+{
     int err=0;
 
     err=get_elements_and_decode(a);
     if (err) return err;
-    a->parent->h->unpacked=1;
 
     if (!val) return GRIB_SUCCESS;
     else return GRIB_NOT_IMPLEMENTED;
 }
 
-static int get_elements_and_decode(grib_accessor* a) {
-  grib_accessor_bufr_data *self =(grib_accessor_bufr_data*)a;
-  int err=0;
-  if (self->do_compute) {
-     err=decode_elements(a);
-     self->do_compute=0;
-  }
-  return err;
+static int get_elements_and_decode(grib_accessor* a)
+{
+    grib_accessor_bufr_data *self =(grib_accessor_bufr_data*)a;
+    int err=0;
+    if (self->do_compute) {
+        err=decode_elements(a);
+        self->do_compute=0;
+    }
+    return err;
 }
 
-static void destroy(grib_context* c,grib_accessor* a) {
-  grib_accessor_bufr_data *self =(grib_accessor_bufr_data*)a;
-  self_clear(c,self);
-  grib_section_delete(c,a->sub_section);
+static void destroy(grib_context* c,grib_accessor* a)
+{
+    grib_accessor_bufr_data *self =(grib_accessor_bufr_data*)a;
+    self_clear(c,self);
+    grib_section_delete(c,a->sub_section);
 }
-
diff --git a/src/grib_accessor_class_bufr_data_array.c b/src/grib_accessor_class_bufr_data_array.c
index 50e9531..277334a 100644
--- a/src/grib_accessor_class_bufr_data_array.c
+++ b/src/grib_accessor_class_bufr_data_array.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -22,29 +22,22 @@
    IMPLEMENTS = byte_count; value_count
    IMPLEMENTS = byte_offset; unpack_double
    IMPLEMENTS = get_native_type
-   IMPLEMENTS = update_size
    IMPLEMENTS = compare
    IMPLEMENTS = pack_long; unpack_double; pack_double
-   MEMBERS    = const char* offsetSection4Name
-   MEMBERS    = const char* offsetBeforeDataName
-   MEMBERS    = const char* offsetEndSection4Name
-   MEMBERS    = const char* section4LengthName
+   MEMBERS    = const char* bufrDataEncodedName
    MEMBERS    = const char* numberOfSubsetsName
-   MEMBERS    = const char* subsetNumberName
    MEMBERS    = const char* expandedDescriptorsName
    MEMBERS    = const char* flagsName
    MEMBERS    = const char* unitsName
-   MEMBERS    = const char* stringValuesName
    MEMBERS    = const char* elementsDescriptorsIndexName
    MEMBERS    = const char* compressedDataName
    MEMBERS    = bufr_descriptors_array* expanded
    MEMBERS    = grib_accessor* expandedAccessor
    MEMBERS    = int* canBeMissing
-   MEMBERS    = long subsetNumber
    MEMBERS    = long numberOfSubsets
    MEMBERS    = long compressedData
    MEMBERS    = grib_vdarray* numericValues
-   MEMBERS    = grib_sarray* stringValues
+   MEMBERS    = grib_vsarray* stringValues
    MEMBERS    = grib_viarray* elementsDescriptorsIndex
    MEMBERS    = int do_decode
    MEMBERS    = int bitmapStartElementsDescriptorsIndex
@@ -54,6 +47,19 @@
    MEMBERS    = int bitmapCurrent
    MEMBERS    = grib_accessors_list* dataAccessors
    MEMBERS    = int unpackMode
+   MEMBERS    = int bitsToEndData
+   MEMBERS    = grib_section* dataKeys
+   MEMBERS    = long* inputReplications
+   MEMBERS    = int nInputReplications
+   MEMBERS    = int iInputReplications
+   MEMBERS    = long* inputExtendedReplications
+   MEMBERS    = int nInputExtendedReplications
+   MEMBERS    = int iInputExtendedReplications
+   MEMBERS    = long* inputShortReplications
+   MEMBERS    = int nInputShortReplications
+   MEMBERS    = int iInputShortReplications
+   MEMBERS    = int start
+   MEMBERS    = int end
 
    END_CLASS_DEF
 
@@ -81,33 +87,26 @@ static void destroy(grib_context*,grib_accessor*);
 static void dump(grib_accessor*, grib_dumper*);
 static void init(grib_accessor*,const long, grib_arguments* );
 static void init_class(grib_accessor_class*);
-static void update_size(grib_accessor*,size_t);
 static int compare(grib_accessor*, grib_accessor*);
 
 typedef struct grib_accessor_bufr_data_array {
     grib_accessor          att;
 /* Members defined in gen */
 /* Members defined in bufr_data_array */
-	const char* offsetSection4Name;
-	const char* offsetBeforeDataName;
-	const char* offsetEndSection4Name;
-	const char* section4LengthName;
+	const char* bufrDataEncodedName;
 	const char* numberOfSubsetsName;
-	const char* subsetNumberName;
 	const char* expandedDescriptorsName;
 	const char* flagsName;
 	const char* unitsName;
-	const char* stringValuesName;
 	const char* elementsDescriptorsIndexName;
 	const char* compressedDataName;
 	bufr_descriptors_array* expanded;
 	grib_accessor* expandedAccessor;
 	int* canBeMissing;
-	long subsetNumber;
 	long numberOfSubsets;
 	long compressedData;
 	grib_vdarray* numericValues;
-	grib_sarray* stringValues;
+	grib_vsarray* stringValues;
 	grib_viarray* elementsDescriptorsIndex;
 	int do_decode;
 	int bitmapStartElementsDescriptorsIndex;
@@ -117,6 +116,19 @@ typedef struct grib_accessor_bufr_data_array {
 	int bitmapCurrent;
 	grib_accessors_list* dataAccessors;
 	int unpackMode;
+	int bitsToEndData;
+	grib_section* dataKeys;
+	long* inputReplications;
+	int nInputReplications;
+	int iInputReplications;
+	long* inputExtendedReplications;
+	int nInputExtendedReplications;
+	int iInputExtendedReplications;
+	long* inputShortReplications;
+	int nInputShortReplications;
+	int iInputShortReplications;
+	int start;
+	int end;
 } grib_accessor_bufr_data_array;
 
 extern grib_accessor_class* grib_accessor_class_gen;
@@ -152,7 +164,7 @@ static grib_accessor_class _grib_accessor_class_bufr_data_array = {
     0,               /* grib_unpack procedures bytes   */
     0,            /* pack_expression */
     0,              /* notify_change   */
-    &update_size,                /* update_size   */
+    0,                /* update_size   */
     0,            /* preferred_size   */
     0,                    /* resize   */
     0,      /* nearest_smaller_value */
@@ -161,6 +173,7 @@ static grib_accessor_class _grib_accessor_class_bufr_data_array = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -182,6 +195,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_bytes	=	(*(c->super))->unpack_bytes;
 	c->pack_expression	=	(*(c->super))->pack_expression;
 	c->notify_change	=	(*(c->super))->notify_change;
+	c->update_size	=	(*(c->super))->update_size;
 	c->preferred_size	=	(*(c->super))->preferred_size;
 	c->resize	=	(*(c->super))->resize;
 	c->nearest_smaller_value	=	(*(c->super))->nearest_smaller_value;
@@ -189,563 +203,1045 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
 
-static int can_be_missing(int descriptor) {
-  int ret=1;
-  if (descriptor==31031) ret=0;
-  return ret;
+#define MAX_NESTED_REPLICATIONS 8
+
+#define PROCESS_DECODE     0
+#define PROCESS_NEW_DATA   1
+#define PROCESS_ENCODE     2
+
+#ifdef ECCODES_ON_WINDOWS
+#define round(a) ( (a) >=0 ? ((a)+0.5) : ((a)-0.5) )
+#endif
+
+static int process_elements(grib_accessor* a,int flag,long onlySubset,long startSubset,long endSubset);
+
+typedef int (*codec_element_proc) (grib_context* c,grib_accessor_bufr_data_array* self,int subsetIndex, grib_buffer* b,unsigned char* data,long *pos,int i,long elementIndex,grib_darray* dval,grib_sarray* sval); 
+typedef int (*codec_replication_proc) (grib_context* c,grib_accessor_bufr_data_array* self,int subsetIndex,grib_buffer* buff,unsigned char* data,long *pos,int i,long elementIndex,grib_darray* dval,long* numberOfRepetitions);
+
+static int create_keys(grib_accessor* a,long onlySubset,long startSubset,long endSubset);
+
+static int can_be_missing(int descriptor,int width)
+{
+    int ret=1;
+    if (descriptor==31031 || descriptor==999999 ) ret=0;
+    if (width == 1) ret=0;
+    return ret;
 }
 
-static void restart_bitmap(grib_accessor_bufr_data_array *self) { 
-  self->bitmapCurrent=-1;
-  self->bitmapCurrentElementsDescriptorsIndex=self->bitmapStartElementsDescriptorsIndex-1; 
+static void restart_bitmap(grib_accessor_bufr_data_array *self)
+{
+    self->bitmapCurrent=-1;
+    self->bitmapCurrentElementsDescriptorsIndex=self->bitmapStartElementsDescriptorsIndex-1;
 }
 
 static void cancel_bitmap(grib_accessor_bufr_data_array *self) { self->bitmapCurrent=-1;self->bitmapStart=-1; }
 
 static int is_bitmap_start_defined(grib_accessor_bufr_data_array *self) { return self->bitmapStart==-1 ? 0 : 1; }
 
-static long init_length(grib_accessor* a)
+int accessor_bufr_data_array_create_keys(grib_accessor* a,long onlySubset,long startSubset,long endSubset) { return create_keys(a,onlySubset,startSubset,endSubset); }
+
+int accessor_bufr_data_array_process_elements(grib_accessor* a,int flag,long onlySubset,long startSubset,long endSubset) {
+    return process_elements(a,flag,onlySubset,startSubset,endSubset);
+}
+
+static size_t get_length(grib_accessor* a)
 {
-  grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
-  long section4Length=0;
+    grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
+    size_t len=0;
 
-  grib_handle* h=a->parent->h;
+    grib_handle* h=grib_handle_of_accessor(a);
 
-  grib_get_long(h,self->section4LengthName,&section4Length);
+    grib_get_size(h,self->bufrDataEncodedName,&len);
 
-  return section4Length-4;
+    return len;
 }
 
 static void init(grib_accessor* a,const long v, grib_arguments* params)
 {
-  grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
-  int n = 0;
-
-  a->sub_section           = grib_section_create(a->parent->h,a);
-
-  self->offsetSection4Name = grib_arguments_get_name(a->parent->h,params,n++);
-  self->offsetBeforeDataName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->offsetEndSection4Name = grib_arguments_get_name(a->parent->h,params,n++);
-  self->section4LengthName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->numberOfSubsetsName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->subsetNumberName    = grib_arguments_get_name(a->parent->h,params,n++);
-  self->expandedDescriptorsName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->flagsName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->stringValuesName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->elementsDescriptorsIndexName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->compressedDataName = grib_arguments_get_name(a->parent->h,params,n++);
-  self->do_decode=1;
-  self->elementsDescriptorsIndex=0;
-  self->numericValues=0;
-  self->stringValues=0;
-  cancel_bitmap(self);
-  self->expanded=0;
-  self->expandedAccessor=0;
-  a->parent->h->unpacked=0;
-
-  a->length = init_length(a);
-  self->unpackMode=CODES_BUFR_UNPACK_STRUCTURE;
-
-  /* Assert(a->length>=0); */
+    grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
+    int n = 0;
+    const char* dataKeysName=NULL;
+    grib_accessor* dataKeysAcc=NULL;
+
+    self->bufrDataEncodedName = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->numberOfSubsetsName = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->expandedDescriptorsName = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->flagsName = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->elementsDescriptorsIndexName = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->compressedDataName = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    dataKeysName = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+
+    dataKeysAcc=grib_find_accessor(grib_handle_of_accessor(a),dataKeysName);
+    self->dataKeys=dataKeysAcc->parent;
+    self->do_decode=1;
+    self->elementsDescriptorsIndex=0;
+    self->numericValues=0;
+    self->stringValues=0;
+    cancel_bitmap(self);
+    self->expanded=0;
+    self->expandedAccessor=0;
+
+    a->length=0;
+    self->bitsToEndData=get_length(a)*8;
+    self->unpackMode=CODES_BUFR_UNPACK_STRUCTURE;
+
+    /* Assert(a->length>=0); */
 }
 
+/*
+static void clean_string(char* s,int len)
+{
+    int i=len-1;
+    while (i) {
+        if (!isalnum(s[i])) s[i]=0;
+        else break;
+        i--;
+    }
+}
+ */
 
-static void self_clear(grib_context* c,grib_accessor_bufr_data_array* self) {
-  grib_context_free(c,self->canBeMissing);
-	grib_vdarray_delete_content(c,self->numericValues);
-	grib_vdarray_delete(c,self->numericValues);
-	if(self->stringValues) {
-    /* grib_sarray_delete_content(c,self->stringValues); */
-    grib_sarray_delete(c,self->stringValues);
-  }
-	grib_viarray_delete_content(c,self->elementsDescriptorsIndex);
-	grib_viarray_delete(c,self->elementsDescriptorsIndex);
+static int check_end_data(grib_context* c,grib_accessor_bufr_data_array* self,int size)
+{
+    grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tbitsToEndData=%ld elementSize=%ld", self->bitsToEndData,size);
+    self->bitsToEndData-=size;
+    if (self->bitsToEndData<0)
+        return GRIB_DECODING_ERROR;
+    return 0;
 }
 
-static int  get_native_type(grib_accessor* a){
-  return GRIB_TYPE_DOUBLE;
+static void self_clear(grib_context* c,grib_accessor_bufr_data_array* self)
+{
+    grib_context_free(c,self->canBeMissing);
+    grib_vdarray_delete_content(c,self->numericValues);
+    grib_vdarray_delete(c,self->numericValues);
+    if(self->stringValues) {
+        /* grib_vsarray_delete_content(c,self->stringValues); */
+        grib_vsarray_delete(c,self->stringValues);
+    }
+    grib_viarray_delete_content(c,self->elementsDescriptorsIndex);
+    grib_viarray_delete(c,self->elementsDescriptorsIndex);
+    if (self->inputReplications) grib_context_free(c,self->inputReplications);
+    if (self->inputExtendedReplications) grib_context_free(c,self->inputExtendedReplications);
+    if (self->inputShortReplications) grib_context_free(c,self->inputShortReplications);
 }
 
-static long byte_count(grib_accessor* a){
-  return a->length;
+static int  get_native_type(grib_accessor* a)
+{
+    return GRIB_TYPE_DOUBLE;
 }
 
-static long byte_offset(grib_accessor* a){
-  return a->offset;
+static long byte_count(grib_accessor* a)
+{
+    return 0;
 }
 
-static long next_offset(grib_accessor* a){
-  return a->offset+a->length;
+static long byte_offset(grib_accessor* a)
+{
+    return a->offset;
 }
 
-static void update_size(grib_accessor* a,size_t s)
+static long next_offset(grib_accessor* a)
 {
-    grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG,"updating size of %s old %ld new %ld",a->name,a->length,s);
-  a->length = s;
-  Assert(a->length>=0);
+    return a->offset;
 }
 
-static int compare(grib_accessor* a, grib_accessor* b) {
-  return GRIB_NOT_IMPLEMENTED;
+
+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;
-  self->do_decode=1;
-  a->parent->h->unpacked=0;
+    grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
+    self->do_decode=1;
 
-  return GRIB_NOT_IMPLEMENTED;
+    return GRIB_NOT_IMPLEMENTED;
 }
 
 static int pack_double(grib_accessor* a, const double* val, size_t *len)
 {
-  grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
-  self->do_decode=1;
-  a->parent->h->unpacked=0;
-  return GRIB_NOT_IMPLEMENTED;
+    grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
+    self->do_decode=1;
+    return process_elements(a,PROCESS_ENCODE,0,0,0);
+}
+
+grib_vsarray* accessor_bufr_data_array_get_stringValues(grib_accessor* a)
+{
+    grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
+    process_elements(a,PROCESS_DECODE,0,0,0);
+
+    return self->stringValues;
 }
 
-grib_accessors_list* accessor_bufr_data_array_get_dataAccessors(grib_accessor* a) {
-  grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
-  return self->dataAccessors;
+grib_accessors_list* accessor_bufr_data_array_get_dataAccessors(grib_accessor* a)
+{
+    grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
+    return self->dataAccessors;
 }
 
-void accessor_bufr_data_array_set_unpackMode(grib_accessor* a,int unpackMode) {
-  grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
-  self->unpackMode=unpackMode;
+void accessor_bufr_data_array_set_unpackMode(grib_accessor* a,int unpackMode)
+{
+    grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
+    self->unpackMode=unpackMode;
 }
 
-static int get_descriptors(grib_accessor* a) {
-  grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
-  int ret=0,i,numberOfDescriptors;
-  grib_handle* h=a->parent->h;
-  grib_context* c=a->parent->h->context;
+static int get_descriptors(grib_accessor* a)
+{
+    grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
+    int ret=0,i,numberOfDescriptors;
+    grib_handle* h=grib_handle_of_accessor(a);
+    grib_context* c=a->context;
 
-  if (!self->expandedAccessor)
-    self->expandedAccessor=grib_find_accessor(a->parent->h,self->expandedDescriptorsName);
-  self->expanded=grib_accessor_class_expanded_descriptors_get_expanded(self->expandedAccessor,&ret);
+    if (!self->expandedAccessor)
+        self->expandedAccessor=grib_find_accessor(grib_handle_of_accessor(a),self->expandedDescriptorsName);
+    self->expanded=grib_accessor_class_expanded_descriptors_get_expanded(self->expandedAccessor,&ret);
 
-  numberOfDescriptors=grib_bufr_descriptors_array_used_size(self->expanded);
-  self->canBeMissing=(int*)grib_context_malloc_clear(c,numberOfDescriptors*sizeof(int));
-  for (i=0;i<numberOfDescriptors;i++)
-    self->canBeMissing[i]=can_be_missing(self->expanded->v[i]->code);
+    numberOfDescriptors=grib_bufr_descriptors_array_used_size(self->expanded);
+    self->canBeMissing=(int*)grib_context_malloc_clear(c,numberOfDescriptors*sizeof(int));
+    for (i=0;i<numberOfDescriptors;i++)
+        self->canBeMissing[i]=can_be_missing(self->expanded->v[i]->code,self->expanded->v[i]->width);
 
-  ret=grib_get_long(h,self->numberOfSubsetsName,&(self->numberOfSubsets));
-  ret=grib_get_long(h,self->compressedDataName,&(self->compressedData));
-  ret=grib_get_long(h,self->subsetNumberName,&(self->subsetNumber));
+    ret=grib_get_long(h,self->numberOfSubsetsName,&(self->numberOfSubsets));
+    ret=grib_get_long(h,self->compressedDataName,&(self->compressedData));
 
-  return ret;
+    return ret;
 }
 
 static void decode_string_array(grib_context* c,unsigned char* data,long* pos, int i,
-              grib_accessor_bufr_data_array* self) {
-  char* sval=0;
-  int j,modifiedWidth,modifiedReference,width;
-  double modifiedFactor;
-  modifiedWidth= self->expanded->v[i]->width;
-  modifiedReference= self->expanded->v[i]->reference;
-  modifiedFactor= self->expanded->v[i]->factor;
-
-  sval=(char*)grib_context_malloc_clear(c,modifiedWidth/8+1);
-  grib_decode_string(data,pos,modifiedWidth/8,sval);
-  width=grib_decode_unsigned_long(data,pos,6);
-  if (width) {
-    grib_context_free(c,sval);
-    for (j=0;j<self->numberOfSubsets;j++) {
-      sval=(char*)grib_context_malloc_clear(c,width+1);
-      grib_decode_string(data,pos,width,sval);
-      grib_sarray_push(c,self->stringValues,sval);
+        grib_accessor_bufr_data_array* self,int *err)
+{
+    char* sval=0;
+    int j,modifiedWidth,width;
+    grib_sarray* sa=grib_sarray_new(c,self->numberOfSubsets,10);
+
+    modifiedWidth= self->expanded->v[i]->width;
+    /* modifiedReference= self->expanded->v[i]->reference; */
+    /*modifiedFactor= self->expanded->v[i]->factor;*/
+
+    sval=(char*)grib_context_malloc_clear(c,modifiedWidth/8+1);
+    *err=check_end_data(c,self,modifiedWidth);
+    if (*err) return ;
+    grib_decode_string(data,pos,modifiedWidth/8,sval);
+    /* clean_string(sval,modifiedWidth/8); */
+    *err=check_end_data(c,self,6);
+    if (*err) return ;
+    width=grib_decode_unsigned_long(data,pos,6);
+    if (width) {
+        grib_context_free(c,sval);
+        *err=check_end_data(c,self,width*8*self->numberOfSubsets);
+        if (*err) return ;
+        for (j=0;j<self->numberOfSubsets;j++) {
+            sval=(char*)grib_context_malloc_clear(c,width+1);
+            grib_decode_string(data,pos,width,sval);
+            /* clean_string(sval,width); */
+            grib_sarray_push(c,sa,sval);
+        }
+    } else {
+        /* for (j=0;j<self->numberOfSubsets;j++) { */
+        grib_sarray_push(c,sa,sval);
+        /* } */
     }
-  } else {
-    for (j=0;j<self->numberOfSubsets;j++) {
-      grib_sarray_push(c,self->stringValues,sval);
+    grib_vsarray_push(c,self->stringValues,sa);
+}
+
+static grib_darray* decode_double_array(grib_context* c,unsigned char* data,long* pos,int i,
+        grib_accessor_bufr_data_array* self,int *err)
+{
+    grib_darray* ret=NULL;
+    int j;
+    unsigned long lval;
+    int localReference,localWidth,modifiedWidth,modifiedReference;
+    double modifiedFactor,dval;
+
+    *err=0;
+
+    modifiedReference= self->expanded->v[i]->reference;
+    modifiedFactor= self->expanded->v[i]->factor;
+    modifiedWidth= self->expanded->v[i]->width;
+
+    *err=check_end_data(c,self,modifiedWidth+6);
+    if (*err) return NULL;
+    lval=grib_decode_unsigned_long(data,pos,modifiedWidth);
+    localReference=(long)lval+modifiedReference;
+    localWidth=grib_decode_unsigned_long(data,pos,6);
+    grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tlocalWidth=%ld",localWidth);
+    ret=grib_darray_new(c,100,100);
+    if (localWidth) {
+        *err=check_end_data(c,self,localWidth*self->numberOfSubsets);
+        if (*err) return NULL;
+        for (j=0;j<self->numberOfSubsets;j++) {
+            lval=grib_decode_unsigned_long(data,pos,localWidth);
+            if (grib_is_all_bits_one(lval,localWidth) && self->canBeMissing[i]) {
+                dval=GRIB_MISSING_DOUBLE;
+            } else {
+                dval=((long)lval+localReference)*modifiedFactor;
+            }
+            grib_darray_push(c,ret,dval);
+        }
+    } else {
+        if (grib_is_all_bits_one(lval,modifiedWidth) && self->canBeMissing[i]) {
+            dval=GRIB_MISSING_DOUBLE;
+        } else {
+            dval=localReference*modifiedFactor;
+        }
+        grib_darray_push(c,ret,dval);
     }
-  }
 
+    return ret;
 }
 
-static grib_darray* decode_double_array(grib_context* c,unsigned char* data,long* pos,int i,
-              grib_accessor_bufr_data_array* self) {
-  grib_darray* ret=NULL;
-  int j;
-  unsigned long lval;
-  int localReference,localWidth,modifiedWidth,modifiedReference;
-  double modifiedFactor,dval;
-
-  modifiedReference= self->expanded->v[i]->reference;
-  modifiedFactor= self->expanded->v[i]->factor;
-  modifiedWidth= self->expanded->v[i]->width;
-
-  lval=grib_decode_unsigned_long(data,pos,modifiedWidth);
-  localReference=(long)lval+modifiedReference;
-  localWidth=grib_decode_unsigned_long(data,pos,6);
-  ret=grib_darray_new(c,100,100);
-  if (localWidth) {
-    for (j=0;j<self->numberOfSubsets;j++) {
-      lval=grib_decode_unsigned_long(data,pos,localWidth);
-      if (grib_is_all_bits_one(lval,localWidth) && self->canBeMissing[i]) {
-        dval=GRIB_MISSING_DOUBLE;
-      } else {
-        dval=((long)lval+localReference)*modifiedFactor;
-      }
-      grib_darray_push(c,ret,dval);
+static int encode_string_array(grib_context* c,grib_buffer* buff,long* pos, int i,
+        grib_accessor_bufr_data_array* self,grib_sarray* stringValues)
+{
+    int err=0,end,start,n;
+    int j,modifiedWidth,width;
+
+    start=self->start;
+    end=self->end;
+    n=end-start;
+    if (n<=0) return GRIB_NO_VALUES;
+
+    if (grib_sarray_used_size(stringValues)==1) n=1;
+
+    if (n>grib_sarray_used_size(stringValues))
+        return GRIB_ARRAY_TOO_SMALL;
+
+    modifiedWidth= self->expanded->v[i]->width;
+
+    grib_buffer_set_ulength_bits(c,buff,buff->ulength_bits+modifiedWidth);
+    grib_encode_string(buff->data,pos,modifiedWidth/8,stringValues->v[0]);
+    width= n > 1 ? modifiedWidth : 0;
+
+    grib_buffer_set_ulength_bits(c,buff,buff->ulength_bits+6);
+    grib_encode_unsigned_longb(buff->data,width/8,pos,6);
+    if (width) {
+        grib_buffer_set_ulength_bits(c,buff,buff->ulength_bits+width*n);
+        for (j=start;j<end;j++) {
+            grib_encode_string(buff->data,pos,width/8,stringValues->v[j]);
+        }
     }
-  } else {
-    if (grib_is_all_bits_one(lval,modifiedWidth) && self->canBeMissing[i]) {
-      dval=GRIB_MISSING_DOUBLE;
+    return err;
+}
+
+static int encode_double_array(grib_context* c,grib_buffer* buff,long* pos,int i,
+        grib_accessor_bufr_data_array* self,grib_darray* dvalues)
+{
+    int err=0;
+    int j;
+    unsigned long lval;
+    long localReference=0,localWidth=0,modifiedWidth,modifiedReference;
+    long reference,allone;
+    double localRange,modifiedFactor,inverseFactor;
+    size_t nvals,start,ii;
+    double min,max,maxAllowed,minAllowed;
+    double* v=NULL;
+    int thereIsAMissing=0;
+
+    modifiedReference= self->expanded->v[i]->reference;
+    modifiedFactor= self->expanded->v[i]->factor;
+    inverseFactor= grib_power(self->expanded->v[i]->scale,10);
+    modifiedWidth= self->expanded->v[i]->width;
+
+    maxAllowed=(grib_power(modifiedWidth,2)+modifiedReference)*modifiedFactor;
+    minAllowed=modifiedReference*modifiedFactor;
+
+
+    start=self->start;
+    nvals=self->end-self->start;
+    if (nvals<=0) return GRIB_NO_VALUES;
+
+    v=dvalues->v;
+
+    /* is constant */
+    if (grib_darray_used_size(dvalues)==1) {
+        localWidth=0;
+        grib_buffer_set_ulength_bits(c,buff,buff->ulength_bits+modifiedWidth);
+        if (*v == GRIB_MISSING_DOUBLE) {
+            grib_set_bits_on(buff->data,pos,modifiedWidth);
+        } else {
+            lval=round(*v * inverseFactor)-modifiedReference;
+            grib_encode_unsigned_longb(buff->data,lval,pos,modifiedWidth);
+        }
+        grib_buffer_set_ulength_bits(c,buff,buff->ulength_bits+6);
+        grib_encode_unsigned_longb(buff->data,localWidth,pos,6);
+        return err;
+    }
+
+    if (nvals>grib_darray_used_size(dvalues)) return GRIB_ARRAY_TOO_SMALL;
+    v=dvalues->v+start;
+
+    /* encoding only one value out of many*/
+    if (nvals==1) {
+        localWidth=0;
+        grib_buffer_set_ulength_bits(c,buff,buff->ulength_bits+modifiedWidth);
+        if (*v == GRIB_MISSING_DOUBLE) {
+            grib_set_bits_on(buff->data,pos,modifiedWidth);
+        } else {
+            lval=round(*v * inverseFactor)-modifiedReference;
+            grib_encode_unsigned_longb(buff->data,lval,pos,modifiedWidth);
+        }
+        grib_buffer_set_ulength_bits(c,buff,buff->ulength_bits+6);
+        grib_encode_unsigned_longb(buff->data,localWidth,pos,6);
+        return err;
+    }
+
+    ii=0;
+    while (*v==GRIB_MISSING_DOUBLE && ii<nvals) {
+        thereIsAMissing=1;
+        v++;
+        ii++;
+    }
+    min=*v;
+    max=*v;
+    while (ii<nvals) {
+        if (*v<min && *v!=GRIB_MISSING_DOUBLE) min=*v;
+        if (*v>max && *v!=GRIB_MISSING_DOUBLE) max=*v;
+        if (*v == GRIB_MISSING_DOUBLE) thereIsAMissing=1;
+        ii++;
+        v++;
+    }
+    if (max>maxAllowed && max!=GRIB_MISSING_DOUBLE) 
+        return GRIB_OUT_OF_RANGE;
+    if (min<minAllowed && min!=GRIB_MISSING_DOUBLE) 
+        return GRIB_OUT_OF_RANGE;
+
+    reference=round(min*inverseFactor);
+    localReference=reference-modifiedReference;
+    if (max!=min) {
+        localRange = (max-min)*inverseFactor+1;
+        localWidth=ceil(log(localRange)/log(2.0));
+        lval=round(max*inverseFactor)-reference;
+        allone=grib_power(localWidth,2)-1;
+        while (allone <= lval) {
+            localWidth++;
+            allone=grib_power(localWidth,2)-1;
+        }
+        if (localWidth == 1 ) localWidth++;
     } else {
-      dval=localReference*modifiedFactor;
+        if (thereIsAMissing==1) localWidth=1;
+        else localWidth=0;
     }
-    grib_darray_push(c,ret,dval);
-  }
 
-  return ret;
+    grib_buffer_set_ulength_bits(c,buff,buff->ulength_bits+modifiedWidth);
+    if (localWidth) {
+        grib_encode_unsigned_longb(buff->data,localReference,pos,modifiedWidth);
+    } else {
+        if (min==GRIB_MISSING_DOUBLE) {
+            grib_set_bits_on(buff->data,pos,modifiedWidth);
+        } else {
+            lval=localReference-modifiedReference;
+            grib_encode_unsigned_longb(buff->data,lval,pos,modifiedWidth);
+        }
+    }
+    grib_buffer_set_ulength_bits(c,buff,buff->ulength_bits+6);
+    grib_encode_unsigned_longb(buff->data,localWidth,pos,6);
+
+    if (localWidth) {
+        grib_buffer_set_ulength_bits(c,buff,buff->ulength_bits+nvals*localWidth);
+        for (j=self->start;j<self->end;j++) {
+            if (dvalues->v[j]==GRIB_MISSING_DOUBLE) {
+                grib_set_bits_on(buff->data,pos,localWidth);
+            } else {
+                lval=round(dvalues->v[j]*inverseFactor)-reference;
+                grib_encode_unsigned_longb(buff->data,lval,pos,localWidth);
+            }
+        }
+    }
+
+    return err;
+}
+
+static int encode_double_value(grib_context* c,grib_buffer* buff,long* pos,int i,
+        grib_accessor_bufr_data_array* self,double value)
+{
+    unsigned long lval;
+    double maxAllowed,minAllowed;
+    int err=0;
+    int modifiedWidth,modifiedReference;
+    double modifiedFactor;
+
+    modifiedReference= self->expanded->v[i]->reference;
+    modifiedFactor= self->expanded->v[i]->factor;
+    modifiedWidth= self->expanded->v[i]->width;
+
+    grib_buffer_set_ulength_bits(c,buff,buff->ulength_bits+modifiedWidth);
+    if (value==GRIB_MISSING_DOUBLE) {
+        grib_set_bits_on(buff->data,pos,modifiedWidth);
+    } else {
+        maxAllowed=(grib_power(modifiedWidth,2)+modifiedReference)*modifiedFactor;
+        minAllowed=modifiedReference*modifiedFactor;
+        if (value>maxAllowed || value<minAllowed) return GRIB_OUT_OF_RANGE;
+        lval=round(value/modifiedFactor)-modifiedReference;
+        grib_encode_unsigned_longb(buff->data,lval,pos,modifiedWidth);
+    }
+
+    return err;
+}
+
+static int encode_string_value(grib_context* c,grib_buffer* buff,long* pos, int i,
+        grib_accessor_bufr_data_array* self,char* sval)
+{
+    int err=0;
+    int len;
+
+    len= self->expanded->v[i]->width / 8;
+    grib_buffer_set_ulength_bits(c,buff,buff->ulength_bits+self->expanded->v[i]->width);
+
+    grib_encode_string(buff->data,pos,len,sval);
+
+    return err;
 }
 
 static char* decode_string_value(grib_context* c,unsigned char* data,long* pos, int i,
-              grib_accessor_bufr_data_array* self) {
-  char* sval=0;
-  int modifiedWidth,modifiedReference;
-  double modifiedFactor;
-  modifiedWidth= self->expanded->v[i]->width;
-  modifiedReference= self->expanded->v[i]->reference;
-  modifiedFactor= self->expanded->v[i]->factor;
-
-  sval=(char*)grib_context_malloc_clear(c,modifiedWidth/8+1);
-  grib_decode_string(data,pos,modifiedWidth/8,sval);
-
-  return sval;
+        grib_accessor_bufr_data_array* self,int *err)
+{
+    char* sval=0;
+    int len;
+
+    *err=0;
+
+    len= self->expanded->v[i]->width / 8;
+
+    *err=check_end_data(c,self,self->expanded->v[i]->width);
+    if (*err) return NULL;
+    sval=(char*)grib_context_malloc_clear(c,len+1);
+    grib_decode_string(data,pos,len,sval);
+
+    /* clean_string(sval,len); */
+
+    return sval;
 }
 
 static double decode_double_value(grib_context* c,unsigned char* data,long* pos,int i,
-              grib_accessor_bufr_data_array* self) {
-  unsigned long lval;
-  int modifiedWidth,modifiedReference;
-  double modifiedFactor,dval;
-
-  modifiedReference= self->expanded->v[i]->reference;
-  modifiedFactor= self->expanded->v[i]->factor;
-  modifiedWidth= self->expanded->v[i]->width;
-
-  lval=grib_decode_unsigned_long(data,pos,modifiedWidth);
-  if (grib_is_all_bits_one(lval,modifiedWidth) && self->canBeMissing[i]) {
-    dval=GRIB_MISSING_DOUBLE;
-  } else {
-    dval=((long)lval+modifiedReference)*modifiedFactor;
-  }
-  return dval;
+        grib_accessor_bufr_data_array* self,int* err)
+{
+    unsigned long lval;
+    int modifiedWidth,modifiedReference;
+    double modifiedFactor;
+    double dval=0;
+
+    *err=0;
+
+    modifiedReference= self->expanded->v[i]->reference;
+    modifiedFactor= self->expanded->v[i]->factor;
+    modifiedWidth= self->expanded->v[i]->width;
+
+    *err=check_end_data(c,self,modifiedWidth);
+    if (*err) return dval;
+    lval=grib_decode_unsigned_long(data,pos,modifiedWidth);
+    if (grib_is_all_bits_one(lval,modifiedWidth) && self->canBeMissing[i]) {
+        dval=GRIB_MISSING_DOUBLE;
+    } else {
+        dval=((long)lval+modifiedReference)*modifiedFactor;
+    }
+    return dval;
 }
 
-static void decode_element(grib_context* c,grib_accessor_bufr_data_array* self,int subsetIndex,
-            unsigned char* data,long *pos,int i,grib_darray* dval,grib_sarray* sval) {
-  grib_darray* dar=0;
-  grib_sarray* sar=0;
-  int index=0,ii;
-  char* csval=0;
-  double cdval=0,x;
-  if (self->expanded->v[i]->type==BUFR_DESCRIPTOR_TYPE_STRING) {
-    /* string */
+static int decode_element(grib_context* c,grib_accessor_bufr_data_array* self,int subsetIndex,
+        grib_buffer* b,unsigned char* data,long *pos,int i,long elementIndex,grib_darray* dval,grib_sarray* sval)
+{
+    grib_accessor* a=(grib_accessor*)self;
+    grib_darray* dar=0;
+    grib_sarray* sar=0;
+    int index=0,ii,stringValuesLen;
+    char* csval=0;
+    double cdval=0,x;
+    int err=0;
+
+    grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: -%ld- \tcode=%6.6ld width=%ld pos=%ld -> %ld",
+            i,self->expanded->v[i]->code,self->expanded->v[i]->width,(long)*pos,(long)(*pos-a->offset*8));
+    if (self->expanded->v[i]->type==BUFR_DESCRIPTOR_TYPE_STRING) {
+        /* string */
+        if (self->compressedData) {
+            decode_string_array(c,data,pos,i,self,&err);
+            index=grib_vsarray_used_size(self->stringValues);
+            dar=grib_darray_new(c,self->numberOfSubsets,10);
+            index=self->numberOfSubsets*(index-1);
+            for (ii=1;ii<=self->numberOfSubsets;ii++) {
+                x=(index+ii)*1000+self->expanded->v[i]->width/8;
+                grib_darray_push(c,dar,x);
+            }
+            grib_vdarray_push(c,self->numericValues,dar);
+        } else {
+            csval=decode_string_value(c,data,pos,i,self,&err);
+            grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \t %s = %s",
+                    self->expanded->v[i]->shortName,csval);
+            sar=grib_sarray_push(c,sar,csval);
+            grib_vsarray_push(c,self->stringValues,sar);
+            stringValuesLen=grib_vsarray_used_size(self->stringValues);
+            index=0;
+            for (ii=0;ii<stringValuesLen;ii++) {
+                index+=grib_sarray_used_size(self->stringValues->v[ii]);
+            }
+            cdval=index*1000+self->expanded->v[i]->width / 8;
+            grib_darray_push(c,dval,cdval);
+        }
+    } else {
+        /* numeric or codetable or flagtable */
+        if (self->compressedData) {
+            dar=decode_double_array(c,data,pos,i,self,&err);
+            grib_vdarray_push(c,self->numericValues,dar);
+        } else {
+            cdval=decode_double_value(c,data,pos,i,self,&err);
+            grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \t %s = %g",
+                    self->expanded->v[i]->shortName,cdval);
+            grib_darray_push(c,dval,cdval);
+        }
+    }
+    return err;
+}
+
+static int decode_replication(grib_context* c,grib_accessor_bufr_data_array* self,int subsetIndex,
+        grib_buffer* buff,unsigned char* data,long *pos,int i,long elementIndex,grib_darray* dval,long* numberOfRepetitions)
+{
+    int err=0;
+    int localReference,width;
+    bufr_descriptor** descriptors=0;
+    descriptors=self->expanded->v;
+    grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: -%ld- \tcode=%6.6ld width=%ld ",
+            i,self->expanded->v[i]->code,self->expanded->v[i]->width);
     if (self->compressedData) {
-      decode_string_array(c,data,pos,i,self);
-      index=grib_sarray_used_size(self->stringValues)/self->numberOfSubsets;
-      dar=grib_darray_new(c,self->numberOfSubsets,10);
-      index=self->numberOfSubsets*(index-1);
-      for (ii=1;ii<=self->numberOfSubsets;ii++) {
-        x=(index+ii)*1000+self->expanded->v[i]->width/8;
-        grib_darray_push(c,dar,x);
-      }
-      grib_vdarray_push(c,self->numericValues,dar);
+        grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication localReference width=%ld", descriptors[i]->width);
+        err=check_end_data(c,self,descriptors[i]->width+6);
+        if (err) return err;
+        localReference=grib_decode_unsigned_long(data,pos,descriptors[i]->width)+descriptors[i]->reference;
+        grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication localWidth width=6");
+        width=grib_decode_unsigned_long(data,pos,6);
+        if (width) {
+            /* delayed replication number is not constant. NOT IMPLEMENTED */
+            Assert(0);
+        } else {
+            *numberOfRepetitions=localReference*descriptors[i]->factor;
+            grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication value=%ld",*numberOfRepetitions);
+        }
     } else {
-      csval=decode_string_value(c,data,pos,i,self);
-      grib_sarray_push(c,self->stringValues,csval);
-      index=grib_sarray_used_size(self->stringValues);
-      cdval=index*1000+strlen(csval);
-      grib_darray_push(c,dval,cdval);
+        err=check_end_data(c,self,descriptors[i]->width);
+        if (err) return err;
+        *numberOfRepetitions=grib_decode_unsigned_long(data,pos,descriptors[i]->width)+
+                descriptors[i]->reference*descriptors[i]->factor;
+        grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication value=%ld",*numberOfRepetitions);
     }
-  } else {
-    /* numeric or codetable or flagtable */
     if (self->compressedData) {
-      dar=decode_double_array(c,data,pos,i,self);
-      grib_vdarray_push(c,self->numericValues,dar);
+        dval=grib_darray_new(c,1,100);
+        grib_darray_push(c,dval,(double)(*numberOfRepetitions));
+        grib_vdarray_push(c,self->numericValues,dval);
     } else {
-      cdval=decode_double_value(c,data,pos,i,self);
-      grib_darray_push(c,dval,cdval);
+        grib_darray_push(c,dval,(double)(*numberOfRepetitions));
     }
-  }
+    return err;
 }
 
-static int build_bitmap(grib_accessor_bufr_data_array *self,unsigned char* data,long* pos,grib_iarray* elementsDescriptorsIndex,int iBitmapOperator) {
-  int bitmapSize=0,iDelayedReplication=0;
-  int i,localReference,width,bitmapEndElementsDescriptorsIndex;
-  long ppos,n;
-  grib_accessor* a=(grib_accessor*)self;
-  grib_context* c=a->parent->h->context;
-  bufr_descriptor** descriptors=self->expanded->v;
-  long* edi=elementsDescriptorsIndex->v;
-  int iel=grib_iarray_used_size(elementsDescriptorsIndex)-1;
-
-  switch (descriptors[iBitmapOperator]->code) {
-    case 236000:
-      cancel_bitmap(self);
-      while (descriptors[edi[iel]]->code>=100000) iel--;
-      bitmapEndElementsDescriptorsIndex=iel;
-      i=iBitmapOperator+1;
-      if (descriptors[i]->code==101000)  {
-        iDelayedReplication=iBitmapOperator+2;
-        Assert( descriptors[iDelayedReplication]->code==31001 ||
-                descriptors[iDelayedReplication]->code==31002 );
-        i=iDelayedReplication;
+static int encode_new_element(grib_context* c,grib_accessor_bufr_data_array* self,int subsetIndex,
+        grib_buffer* buff,unsigned char* data,long *pos,int i,long elementIndex,grib_darray* dval,grib_sarray* sval)
+{
+    int ii;
+    char* csval=0;
+    unsigned char missingChar=0xFF;
+    double cdval=GRIB_MISSING_DOUBLE;
+    int err=0;
+    size_t slen;
+
+    grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data encoding: \tcode=%6.6ld width=%ld pos=%ld ulength=%ld ulength_bits=%ld",
+            self->expanded->v[i]->code,self->expanded->v[i]->width,(long)*pos,buff->ulength,buff->ulength_bits);
+    if (self->expanded->v[i]->type==BUFR_DESCRIPTOR_TYPE_STRING) {
+        /* string */
+        slen=self->expanded->v[i]->width/8;
+        csval=(char*)grib_context_malloc_clear(c,slen+1);
+        for (ii=0;ii<slen;ii++) csval[ii]=missingChar;
+        grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data encoding: \t %s = %s",
+                self->expanded->v[i]->shortName,csval);
         if (self->compressedData) {
-          ppos=*pos;
-          localReference=grib_decode_unsigned_long(data,pos,descriptors[i]->width)+descriptors[i]->reference;
-          width=grib_decode_unsigned_long(data,pos,6);
-          *pos=ppos;
-          if (width) {
-            /* delayed replication number is not constant. NOT IMPLEMENTED */
-            Assert(0);
-          } else {
-            bitmapSize=localReference*descriptors[i]->factor;
+            grib_sarray* stringValues=grib_sarray_new(c,1,1);
+            grib_sarray_push(c,stringValues,csval);
+            err=encode_string_array(c,buff,pos,i,self,stringValues);
+            grib_sarray_delete_content(c,stringValues);
+            grib_sarray_delete(c,stringValues);
+        } else {
+            err=encode_string_value(c,buff,pos,i,self,csval);
+        }
+    } else {
+        /* numeric or codetable or flagtable */
+        grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data encoding: \t %s = %g",
+                self->expanded->v[i]->shortName,cdval);
+        if (self->expanded->v[i]->code==31031) cdval=0;
+        if (self->compressedData) {
+            grib_darray* doubleValues=grib_darray_new(c,1,1);
+            grib_darray_push(c,doubleValues,cdval);
+            err=encode_double_array(c,buff,pos,i,self,doubleValues);
+            grib_darray_delete(c,doubleValues);
+        } else {
+            err=encode_double_value(c,buff,pos,i,self,cdval);
+        }
+    }
+    return err;
+}
+
+static int encode_new_replication(grib_context* c,grib_accessor_bufr_data_array* self,int subsetIndex,
+        grib_buffer* buff,unsigned char* data,long *pos,int i,long elementIndex,grib_darray* dval,long* numberOfRepetitions)
+{
+    int err=0;
+    unsigned long repetitions=1;
+    bufr_descriptor** descriptors=self->expanded->v;
+
+    switch(descriptors[i]->code) {
+      case 31000:
+        if (self->nInputShortReplications>=0) {
+          if (self->iInputShortReplications>=self->nInputShortReplications) {
+            grib_context_log(c,GRIB_LOG_FATAL,"array inputShortDelayedDescriptorReplicationFactor dimension too small");
           }
+          repetitions=self->inputShortReplications[self->iInputShortReplications];
+          self->iInputShortReplications++;
+        }
+        break;
+      case 31001:
+        if (self->nInputReplications>=0) {
+          if (self->iInputReplications>=self->nInputReplications) {
+            grib_context_log(c,GRIB_LOG_FATAL,"array inputDelayedDescriptorReplicationFactor dimension too small");
+          }
+          repetitions=self->inputReplications[self->iInputReplications];
+          self->iInputReplications++;
+        }
+        break;
+      case 31002:
+        if (self->nInputExtendedReplications>=0) {
+          if (self->iInputExtendedReplications>=self->nInputExtendedReplications) {
+            grib_context_log(c,GRIB_LOG_FATAL,"array inputExtendedDelayedDescriptorReplicationFactor dimension too small");
+          }
+          repetitions=self->inputExtendedReplications[self->iInputExtendedReplications];
+          self->iInputExtendedReplications++;
+        }
+        break;
+      default:
+        Assert(0);
+    }
+
+    grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data encoding replication: \twidth=%ld pos=%ld ulength=%ld ulength_bits=%ld",
+            (long)descriptors[i]->width,(long)*pos,(long)buff->ulength,(long)buff->ulength_bits);
+    grib_buffer_set_ulength_bits(c,buff,buff->ulength_bits+descriptors[i]->width);
+    grib_encode_unsigned_longb(data,repetitions,pos,descriptors[i]->width);
+
+    *numberOfRepetitions=repetitions;
+
+    if (self->compressedData) {
+        grib_buffer_set_ulength_bits(c,buff,buff->ulength_bits+6);
+        grib_encode_unsigned_longb(buff->data,0,pos,6);
+    };
+
+    return err;
+}
+
+static int encode_element(grib_context* c,grib_accessor_bufr_data_array* self,int subsetIndex,
+        grib_buffer* buff,unsigned char* data,long *pos,int i,long elementIndex,grib_darray* dval,grib_sarray* sval)
+{
+    int idx,j;
+    int err=0;
+
+    grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data encoding: -%ld- \tcode=%6.6ld width=%ld pos=%ld ulength=%ld ulength_bits=%ld",
+            i,self->expanded->v[i]->code,self->expanded->v[i]->width,(long)*pos,buff->ulength,buff->ulength_bits);
+    if (self->expanded->v[i]->type==BUFR_DESCRIPTOR_TYPE_STRING) {
+        /* string */
+        /* grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data encoding: \t %s = %s",
+                 self->expanded->v[i]->shortName,csval); */
+        if (self->compressedData) {
+            idx=((int)self->numericValues->v[elementIndex]->v[0]/1000-1)/self->numberOfSubsets;
+            err=encode_string_array(c,buff,pos,i,self,self->stringValues->v[idx]);
+        } else {
+            idx=(int)self->numericValues->v[subsetIndex]->v[elementIndex]/1000-1;
+            err=encode_string_value(c,buff,pos,i,self,self->stringValues->v[idx]->v[0]);
+        }
+    } else {
+        /* numeric or codetable or flagtable */
+        if (self->compressedData) {
+            err=encode_double_array(c,buff,pos,i,self,self->numericValues->v[elementIndex]);
+            if (err) {
+                grib_context_log(c,GRIB_LOG_ERROR,"encoding %s ( code=%6.6ld width=%ld scale=%g reference=%d )",
+                        self->expanded->v[i]->shortName, self->expanded->v[i]->code, self->expanded->v[i]->width,
+                        self->expanded->v[i]->scale, self->expanded->v[i]->reference);
+                for (j=0;j<grib_darray_used_size(self->numericValues->v[elementIndex]);j++)
+                    grib_context_log(c,GRIB_LOG_ERROR,"%g ",self->numericValues->v[elementIndex]->v[i]);
+            }
         } else {
-          ppos=*pos;
-          bitmapSize=grib_decode_unsigned_long(data,pos,descriptors[i]->width)+
-                      descriptors[i]->reference*descriptors[i]->factor;
-          *pos=ppos;
+            err=encode_double_value(c,buff,pos,i,self,self->numericValues->v[subsetIndex]->v[elementIndex]);
+            if (err) {
+                grib_context_log(c,GRIB_LOG_ERROR,"encoding %s=%g",self->expanded->v[i]->shortName,self->numericValues->v[subsetIndex]->v[elementIndex]);
+            }
         }
-      } else if (descriptors[i]->code==31031){
-        bitmapSize=0;
-        while (descriptors[i]->code==31031) {bitmapSize++;i++;}
-      }
-      iel=bitmapEndElementsDescriptorsIndex;
-      n=bitmapSize-1;
-      while ( n>0 && iel>=0 ) {
-        if (descriptors[edi[iel]]->code<100000) n--;
-        iel--;
-      }
-      self->bitmapStartElementsDescriptorsIndex=iel;
-      restart_bitmap(self);
-      break;
+    }
+    return err;
+}
+
+static int encode_replication(grib_context* c,grib_accessor_bufr_data_array* self,int subsetIndex,
+        grib_buffer* buff,unsigned char* data,long *pos,int i,long elementIndex,grib_darray* dval,long* numberOfRepetitions)
+{
+    if (self->compressedData) {
+        Assert(grib_darray_used_size(self->numericValues->v[elementIndex])==1);
+        *numberOfRepetitions=self->numericValues->v[elementIndex]->v[0];
+    } else {
+        *numberOfRepetitions=self->numericValues->v[subsetIndex]->v[elementIndex];
+    }
+
+    return encode_element(c,self,subsetIndex,buff,data,pos,i,elementIndex,dval,0);
+}
+
+static int build_bitmap(grib_accessor_bufr_data_array *self,unsigned char* data,long* pos,int iel,grib_iarray* elementsDescriptorsIndex,int iBitmapOperator)
+{
+    int bitmapSize=0,iDelayedReplication=0;
+    int i,localReference,width,bitmapEndElementsDescriptorsIndex;
+    long ppos,n;
+    grib_accessor* a=(grib_accessor*)self;
+    grib_context* c=a->context;
+    bufr_descriptor** descriptors=self->expanded->v;
+    long* edi=elementsDescriptorsIndex->v;
+    /* int iel=grib_iarray_used_size(elementsDescriptorsIndex)-1; */
+    int err=0;
+
+    switch (descriptors[iBitmapOperator]->code) {
+    case 236000:
+        cancel_bitmap(self);
+        while (descriptors[edi[iel]]->code>=100000) iel--;
+        bitmapEndElementsDescriptorsIndex=iel;
+        i=iBitmapOperator+1;
+        if (descriptors[i]->code==101000)  {
+            iDelayedReplication=iBitmapOperator+2;
+            Assert( descriptors[iDelayedReplication]->code==31001 ||
+                    descriptors[iDelayedReplication]->code==31002 );
+            i=iDelayedReplication;
+            if (self->compressedData) {
+                ppos=*pos;
+                if (err) return err;
+                localReference=grib_decode_unsigned_long(data,pos,descriptors[i]->width)+descriptors[i]->reference;
+                width=grib_decode_unsigned_long(data,pos,6);
+                *pos=ppos;
+                if (width) {
+                    /* delayed replication number is not constant. NOT IMPLEMENTED */
+                    Assert(0);
+                } else {
+                    bitmapSize=localReference*descriptors[i]->factor;
+                }
+            } else {
+                ppos=*pos;
+                if (err) return err;
+                bitmapSize=grib_decode_unsigned_long(data,pos,descriptors[i]->width)+
+                        descriptors[i]->reference*descriptors[i]->factor;
+                *pos=ppos;
+            }
+        } else if (descriptors[i]->code==31031){
+            bitmapSize=0;
+            while (descriptors[i]->code==31031) {bitmapSize++;i++;}
+        }
+        iel=bitmapEndElementsDescriptorsIndex;
+        n=bitmapSize-1;
+        while ( n>0 && iel>=0 ) {
+            if (descriptors[edi[iel]]->code<100000) n--;
+            iel--;
+        }
+        self->bitmapStartElementsDescriptorsIndex=iel;
+        restart_bitmap(self);
+        break;
     default :
-      grib_context_log(c,GRIB_LOG_ERROR,"unsupported operator %d\n",
-            descriptors[iBitmapOperator]->code);
-      return GRIB_INTERNAL_ERROR;
-  }
-  return GRIB_SUCCESS;
+        grib_context_log(c,GRIB_LOG_ERROR,"unsupported operator %d\n",
+                descriptors[iBitmapOperator]->code);
+        return GRIB_INTERNAL_ERROR;
+    }
+    return GRIB_SUCCESS;
 }
 
-static int get_next_bitmap_descriptor_index(grib_accessor_bufr_data_array *self,grib_iarray* elementsDescriptorsIndex,grib_darray* numericValues) {
-  int i;
-  bufr_descriptor** descriptors=self->expanded->v;
-  self->bitmapCurrent++;
-  self->bitmapCurrentElementsDescriptorsIndex++;
-  i=self->bitmapCurrent+self->bitmapStart;
-
-  if (self->compressedData) {
-    while (self->numericValues->v[i]->v[0]==1) {
-      self->bitmapCurrent++;
-      self->bitmapCurrentElementsDescriptorsIndex++;
-      while (descriptors[elementsDescriptorsIndex->v[self->bitmapCurrentElementsDescriptorsIndex]]->code
-                >100000) 
-        self->bitmapCurrentElementsDescriptorsIndex++;
-      i++;
+static int get_next_bitmap_descriptor_index(grib_accessor_bufr_data_array *self,grib_iarray* elementsDescriptorsIndex,grib_darray* numericValues)
+{
+    int i;
+    bufr_descriptor** descriptors=self->expanded->v;
+    self->bitmapCurrent++;
+    self->bitmapCurrentElementsDescriptorsIndex++;
+    i=self->bitmapCurrent+self->bitmapStart;
+
+    if (self->compressedData) {
+        DebugAssert(i<self->numericValues->n);
+        while (self->numericValues->v[i]->v[0]==1) {
+            self->bitmapCurrent++;
+            self->bitmapCurrentElementsDescriptorsIndex++;
+            while (descriptors[elementsDescriptorsIndex->v[self->bitmapCurrentElementsDescriptorsIndex]]->code
+                    >100000)
+                self->bitmapCurrentElementsDescriptorsIndex++;
+            i++;
+        }
+    } else {
+        DebugAssert(i<numericValues->n);
+        while (numericValues->v[i]==1) {
+            self->bitmapCurrent++;
+            self->bitmapCurrentElementsDescriptorsIndex++;
+            while (descriptors[elementsDescriptorsIndex->v[self->bitmapCurrentElementsDescriptorsIndex]]->code
+                    >100000)
+                self->bitmapCurrentElementsDescriptorsIndex++;
+            i++;
+        }
     }
-  } else {
-    while (numericValues->v[i]==1) {
-      self->bitmapCurrent++;
-      self->bitmapCurrentElementsDescriptorsIndex++;
-      while (descriptors[elementsDescriptorsIndex->v[self->bitmapCurrentElementsDescriptorsIndex]]->code
-                >100000) 
+    while (descriptors[elementsDescriptorsIndex->v[self->bitmapCurrentElementsDescriptorsIndex]]->code
+            >100000)
         self->bitmapCurrentElementsDescriptorsIndex++;
-      i++;
-    }
-  }
-  while (descriptors[elementsDescriptorsIndex->v[self->bitmapCurrentElementsDescriptorsIndex]]->code
-              >100000) 
-     self->bitmapCurrentElementsDescriptorsIndex++;
-  return elementsDescriptorsIndex->v[self->bitmapCurrentElementsDescriptorsIndex];
+    return elementsDescriptorsIndex->v[self->bitmapCurrentElementsDescriptorsIndex];
 }
 
-static void push_zero_element(grib_accessor_bufr_data_array* self,grib_darray* dval) {
-  grib_darray* d=0;
-  grib_accessor* a=(grib_accessor*)self;
-  grib_context* c=a->parent->h->context;
-  if (self->compressedData) {
-    d=grib_darray_new(c,1,100);
-    grib_darray_push(c,d,0);
-    grib_vdarray_push(c,self->numericValues,d);
-  } else {
-    grib_darray_push(c,dval,0);
-  }
+static void push_zero_element(grib_accessor_bufr_data_array* self,grib_darray* dval)
+{
+    grib_darray* d=0;
+    grib_accessor* a=(grib_accessor*)self;
+    grib_context* c=a->context;
+    if (self->compressedData) {
+        d=grib_darray_new(c,1,100);
+        grib_darray_push(c,d,0);
+        grib_vdarray_push(c,self->numericValues,d);
+    } else {
+        grib_darray_push(c,dval,0);
+    }
 }
 
-static grib_accessor* create_attribute(char* name,grib_section* section,int type,char* sval,double dval,long lval) {
-  grib_accessor* a=NULL;
-  grib_action creator = {0, };
-  size_t len;
-  creator.op         = "variable";
-  creator.name_space = "";
-  creator.flags     = GRIB_ACCESSOR_FLAG_READ_ONLY | GRIB_ACCESSOR_FLAG_DUMP ;
-  creator.set        = 0;
-
-  creator.name=name;
-  a=grib_accessor_factory(section, &creator, 0, NULL);
-  accessor_variable_set_type(a,type);
-  len=1;
-  switch (type) {
-  	case GRIB_TYPE_LONG:
-		grib_pack_long(a,&lval,&len);
-		break;
-  	case GRIB_TYPE_DOUBLE:
-		grib_pack_double(a,&dval,&len);
-		break;
-  	case GRIB_TYPE_STRING:
-		len=strlen(sval);
-		grib_pack_string(a,sval,&len);
-		break;
-  }
+static grib_accessor* create_attribute_variable(char* name,grib_section* section,int type,char* sval,double dval,long lval,unsigned long flags)
+{
+    grib_accessor* a=NULL;
+    grib_action creator = {0, };
+    size_t len;
+    creator.op         = "variable";
+    creator.name_space = "";
+    creator.flags     = GRIB_ACCESSOR_FLAG_READ_ONLY | flags ;
+    creator.set        = 0;
+
+    creator.name=name;
+    a=grib_accessor_factory(section, &creator, 0, NULL);
+    a->parent=NULL;
+    a->h=section->h;
+    accessor_variable_set_type(a,type);
+    len=1;
+    switch (type) {
+    case GRIB_TYPE_LONG:
+        grib_pack_long(a,&lval,&len);
+        break;
+    case GRIB_TYPE_DOUBLE:
+        grib_pack_double(a,&dval,&len);
+        break;
+    case GRIB_TYPE_STRING:
+        len=strlen(sval);
+        grib_pack_string(a,sval,&len);
+        break;
+    }
 
-  return a;
+    return a;
 }
 
-static void set_creator_name(grib_action* creator,int code) {
-  switch (code) {
+static void set_creator_name(grib_action* creator,int code)
+{
+    switch (code) {
     case 222000:
-      creator->name="qualityInformationFollows";
-      break;
+        creator->name = (char*)"qualityInformationFollows";
+        break;
     case 223000:
-      creator->name="substitutedValuesOperator";
-      break;
+        creator->name = (char*)"substitutedValuesOperator";
+        break;
     case 223255:
-      creator->name="substitutedValue";
-      break;
+        creator->name = (char*)"substitutedValue";
+        break;
     case 224000:
-      creator->name="firstOrderStatiticalValuesFollow";
-      break;
+        creator->name = (char*)"firstOrderStatiticalValuesFollow";
+        break;
     case 224255:
-      creator->name="firstOrderStatisticalValue";
-      break;
+        creator->name = (char*)"firstOrderStatisticalValue";
+        break;
     case 225000:
-      creator->name="differenceStatisticalValuesFollow";
-      break;
+        creator->name = (char*)"differenceStatisticalValuesFollow";
+        break;
     case 225255:
-      creator->name="differenceStatisticalValue";
-      break;
+        creator->name = (char*)"differenceStatisticalValue";
+        break;
     case 232000:
-      creator->name="replacedRetainedValuesFollow";
-      break;
+        creator->name = (char*)"replacedRetainedValuesFollow";
+        break;
     case 232255:
-      creator->name="replacedRetainedValue";
-      break;
+        creator->name = (char*)"replacedRetainedValue";
+        break;
     case 235000:
-      creator->name="cancelBackwardDataReference";
-      break;
+        creator->name = (char*)"cancelBackwardDataReference";
+        break;
     case 236000:
-      creator->name="defineDataPresentBitmap";
-      break;
+        creator->name = (char*)"defineDataPresentBitmap";
+        break;
     case 237000:
-      creator->name="useDefinedDataPresentBitmap";
-      break;
+        creator->name = (char*)"useDefinedDataPresentBitmap";
+        break;
     case 237255:
-      creator->name="cancelUseDefinedDataPresentBitmap";
-      break;
+        creator->name = (char*)"cancelUseDefinedDataPresentBitmap";
+        break;
     case 241000:
-      creator->name="defineEvent";
-      break;
+        creator->name = (char*)"defineEvent";
+        break;
     case 241255:
-      creator->name="cancelDefineEvent";
-      break;
+        creator->name = (char*)"cancelDefineEvent";
+        break;
     case 242000:
-      creator->name="defineConditioningEvent";
-      break;
+        creator->name = (char*)"defineConditioningEvent";
+        break;
     case 242255:
-      creator->name="canceDefineConditioningEvent";
-      break;
+        creator->name = (char*)"canceDefineConditioningEvent";
+        break;
     case 243000:
-      creator->name="categoricalForecastValuesFollow";
-      break;
+        creator->name = (char*)"categoricalForecastValuesFollow";
+        break;
     case 243255:
-      creator->name="cancelCategoricalForecastValuesFollow";
-      break;
+        creator->name = (char*)"cancelCategoricalForecastValuesFollow";
+        break;
+    case 999999:
+        creator->name = (char*)"associatedField";
+        break;
     default :
-      creator->name="operator";
-      break;
-  }
+        creator->name = (char*)"operator";
+        break;
+    }
 }
 
-static grib_accessor* create_accessor_from_descriptor(grib_accessor* a,grib_section* section,long ide,long subset,int dump,int count) {
-  grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
-  char code[7]={0,};
-  int idx=0;
-  grib_accessor* operatorAccessor=NULL;
-  grib_action operatorCreator = {0, };
-  grib_accessor* elementAccessor=NULL;
-  grib_accessor* attribute=NULL;
-  grib_action creator = {0, };
-  creator.op         = "bufr_data_element";
-  creator.name_space = "";
-  creator.set        = 0;
-
-  operatorCreator.op         = "variable";
-  operatorCreator.name_space = "";
-  operatorCreator.flags     = GRIB_ACCESSOR_FLAG_READ_ONLY;
-  operatorCreator.set        = 0;
-  operatorCreator.name="operator";
-
-  if (dump) {
-    creator.flags    = GRIB_ACCESSOR_FLAG_DUMP;
-    operatorCreator.flags  |= GRIB_ACCESSOR_FLAG_DUMP;
-  }
+static grib_accessor* create_accessor_from_descriptor(grib_accessor* a,grib_accessor* attribute,grib_section* section,long ide,long subset,int dump,int count)
+{
+    grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
+    char code[10]={0,};
+    int idx=0;
+    unsigned long flags=0;
+    grib_action operatorCreator = {0, };
+    grib_accessor* elementAccessor=NULL;
+    grib_action creator = {0, };
+    creator.op         = "bufr_data_element";
+    creator.name_space = "";
+    creator.set        = 0;
+
+    operatorCreator.op         = "variable";
+    operatorCreator.name_space = "";
+    operatorCreator.flags     = GRIB_ACCESSOR_FLAG_READ_ONLY;
+    operatorCreator.set        = 0;
+    operatorCreator.name="operator";
+
+    if(attribute) { DebugAssert(attribute->parent==NULL); }
+
+    if (dump) {
+        creator.flags    = GRIB_ACCESSOR_FLAG_DUMP;
+        operatorCreator.flags  |= GRIB_ACCESSOR_FLAG_DUMP;
+    }
 
-  idx = self->compressedData ? self->elementsDescriptorsIndex->v[0]->v[ide] :
-    self->elementsDescriptorsIndex->v[subset]->v[ide] ;
+    idx = self->compressedData ? self->elementsDescriptorsIndex->v[0]->v[ide] :
+            self->elementsDescriptorsIndex->v[subset]->v[ide] ;
 
-  switch (self->expanded->v[idx]->F) {
+    switch (self->expanded->v[idx]->F) {
     case 0:
     case 1:
-      creator.name=self->expanded->v[idx]->shortName;
-      elementAccessor = grib_accessor_factory(section, &creator, 0, NULL);
-      if (self->canBeMissing[idx]) elementAccessor->flags |= GRIB_ACCESSOR_FLAG_CAN_BE_MISSING;
-      accessor_bufr_data_element_set_index(elementAccessor,ide);
-      accessor_bufr_data_element_set_descriptors(elementAccessor,self->expanded);
-      accessor_bufr_data_element_set_numericValues(elementAccessor,self->numericValues);
-      accessor_bufr_data_element_set_stringValues(elementAccessor,self->stringValues);
-      accessor_bufr_data_element_set_compressedData(elementAccessor,self->compressedData);
-      accessor_bufr_data_element_set_type(elementAccessor,self->expanded->v[idx]->type);
-      accessor_bufr_data_element_set_numberOfSubsets(elementAccessor,self->numberOfSubsets);
-      accessor_bufr_data_element_set_subsetNumber(elementAccessor,subset);
-
-      self->expanded->v[idx]->a=elementAccessor;
-      attribute=create_attribute("index",section,GRIB_TYPE_LONG,0,0,count);
-      grib_accessor_add_attribute(elementAccessor,attribute);
-
-      sprintf(code,"%06ld",self->expanded->v[idx]->code);
-      attribute=create_attribute("code",section,GRIB_TYPE_STRING,code,0,0);
-      grib_accessor_add_attribute(elementAccessor,attribute);
-
-      attribute=create_attribute("units",section,GRIB_TYPE_STRING,self->expanded->v[idx]->units,0,0);
-      grib_accessor_add_attribute(elementAccessor,attribute);
-
-      attribute=create_attribute("scale",section,GRIB_TYPE_LONG,0,0,self->expanded->v[idx]->scale);
-      grib_accessor_add_attribute(elementAccessor,attribute);
-
-      attribute=create_attribute("reference",section,GRIB_TYPE_DOUBLE,0,self->expanded->v[idx]->reference,0);
-      grib_accessor_add_attribute(elementAccessor,attribute);
-
-      attribute=create_attribute("width",section,GRIB_TYPE_LONG,0,0,self->expanded->v[idx]->width);
-      grib_accessor_add_attribute(elementAccessor,attribute);
-      break;
-    case 2:
-      set_creator_name(&creator,self->expanded->v[idx]->code);
-      if (self->expanded->v[idx]->isMarker) {
+        creator.name=grib_context_strdup(a->context,self->expanded->v[idx]->shortName);
         elementAccessor = grib_accessor_factory(section, &creator, 0, NULL);
         if (self->canBeMissing[idx]) elementAccessor->flags |= GRIB_ACCESSOR_FLAG_CAN_BE_MISSING;
+        if (self->expanded->v[idx]->code == 31000 || self->expanded->v[idx]->code == 31001 || self->expanded->v[idx]->code == 31002)
+          elementAccessor->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
         accessor_bufr_data_element_set_index(elementAccessor,ide);
         accessor_bufr_data_element_set_descriptors(elementAccessor,self->expanded);
+        accessor_bufr_data_element_set_elementsDescriptorsIndex(elementAccessor,self->elementsDescriptorsIndex);
         accessor_bufr_data_element_set_numericValues(elementAccessor,self->numericValues);
         accessor_bufr_data_element_set_stringValues(elementAccessor,self->stringValues);
         accessor_bufr_data_element_set_compressedData(elementAccessor,self->compressedData);
@@ -753,24 +1249,103 @@ static grib_accessor* create_accessor_from_descriptor(grib_accessor* a,grib_sect
         accessor_bufr_data_element_set_numberOfSubsets(elementAccessor,self->numberOfSubsets);
         accessor_bufr_data_element_set_subsetNumber(elementAccessor,subset);
 
-        attribute=create_attribute("index",section,GRIB_TYPE_LONG,0,0,count);
-        grib_accessor_add_attribute(elementAccessor,attribute);
+        self->expanded->v[idx]->a=elementAccessor;
+
+        if (attribute) {
+            /* attribute->parent=elementAccessor->parent; */
+            /*
+          for (i=0;i<MAX_ACCESSOR_ATTRIBUTES;i++) {
+            if (attribute->attributes[i]) attribute->attributes[i]->parent=elementAccessor->parent;
+          }
+             */
+            grib_accessor_add_attribute(elementAccessor,attribute,0);
+        }
 
-      } else {
-        elementAccessor = grib_accessor_factory(section, &operatorCreator, 0, NULL);
-        accessor_variable_set_type(elementAccessor,GRIB_TYPE_LONG);
-        attribute=create_attribute("index",section,GRIB_TYPE_LONG,0,0,count);
-        grib_accessor_add_attribute(elementAccessor,attribute);
+        attribute=create_attribute_variable("index",section,GRIB_TYPE_LONG,0,0,count,flags);
+        grib_accessor_add_attribute(elementAccessor,attribute,0);
 
         sprintf(code,"%06ld",self->expanded->v[idx]->code);
-        attribute=create_attribute("code",section,GRIB_TYPE_STRING,code,0,0);
-        grib_accessor_add_attribute(elementAccessor,attribute);
-      }
-      self->expanded->v[idx]->a=elementAccessor;
-      break;
-  }
+        attribute=create_attribute_variable("code",section,GRIB_TYPE_STRING,grib_context_strdup(a->context,code),0,0,flags);
+        grib_accessor_add_attribute(elementAccessor,attribute,0);
+
+        attribute=create_attribute_variable("units",section,GRIB_TYPE_STRING,self->expanded->v[idx]->units,0,0,GRIB_ACCESSOR_FLAG_DUMP);
+        grib_accessor_add_attribute(elementAccessor,attribute,0);
+
+        attribute=create_attribute_variable("scale",section,GRIB_TYPE_LONG,0,0,self->expanded->v[idx]->scale,flags);
+        grib_accessor_add_attribute(elementAccessor,attribute,0);
+
+        attribute=create_attribute_variable("reference",section,GRIB_TYPE_DOUBLE,0,self->expanded->v[idx]->reference,0,flags);
+        grib_accessor_add_attribute(elementAccessor,attribute,0);
+
+        attribute=create_attribute_variable("width",section,GRIB_TYPE_LONG,0,0,self->expanded->v[idx]->width,flags);
+        grib_accessor_add_attribute(elementAccessor,attribute,0);
+        break;
+    case 2:
+        set_creator_name(&creator,self->expanded->v[idx]->code);
+        if (bufr_descriptor_is_marker(self->expanded->v[idx])) {
+            elementAccessor = grib_accessor_factory(section, &creator, 0, NULL);
+            if (self->canBeMissing[idx]) elementAccessor->flags |= GRIB_ACCESSOR_FLAG_CAN_BE_MISSING;
+            accessor_bufr_data_element_set_index(elementAccessor,ide);
+            accessor_bufr_data_element_set_descriptors(elementAccessor,self->expanded);
+            accessor_bufr_data_element_set_elementsDescriptorsIndex(elementAccessor,self->elementsDescriptorsIndex);
+            accessor_bufr_data_element_set_numericValues(elementAccessor,self->numericValues);
+            accessor_bufr_data_element_set_stringValues(elementAccessor,self->stringValues);
+            accessor_bufr_data_element_set_compressedData(elementAccessor,self->compressedData);
+            accessor_bufr_data_element_set_type(elementAccessor,self->expanded->v[idx]->type);
+            accessor_bufr_data_element_set_numberOfSubsets(elementAccessor,self->numberOfSubsets);
+            accessor_bufr_data_element_set_subsetNumber(elementAccessor,subset);
+
+            attribute=create_attribute_variable("index",section,GRIB_TYPE_LONG,0,0,count,flags);
+            grib_accessor_add_attribute(elementAccessor,attribute,0);
+
+        } else {
+            elementAccessor = grib_accessor_factory(section, &operatorCreator, 0, NULL);
+            accessor_variable_set_type(elementAccessor,GRIB_TYPE_LONG);
+
+            attribute=create_attribute_variable("index",section,GRIB_TYPE_LONG,0,0,count,flags);
+            grib_accessor_add_attribute(elementAccessor,attribute,0);
+
+            sprintf(code,"%06ld",self->expanded->v[idx]->code);
+            attribute=create_attribute_variable("code",section,GRIB_TYPE_STRING,code,0,0,flags);
+            grib_accessor_add_attribute(elementAccessor,attribute,0);
+        }
+        self->expanded->v[idx]->a=elementAccessor;
+        break;
+    case 9:
+        set_creator_name(&creator,self->expanded->v[idx]->code);
+        elementAccessor = grib_accessor_factory(section, &creator, 0, NULL);
+        accessor_bufr_data_element_set_index(elementAccessor,ide);
+        accessor_bufr_data_element_set_descriptors(elementAccessor,self->expanded);
+        accessor_bufr_data_element_set_elementsDescriptorsIndex(elementAccessor,self->elementsDescriptorsIndex);
+        accessor_bufr_data_element_set_numericValues(elementAccessor,self->numericValues);
+        accessor_bufr_data_element_set_stringValues(elementAccessor,self->stringValues);
+        accessor_bufr_data_element_set_compressedData(elementAccessor,self->compressedData);
+        accessor_bufr_data_element_set_type(elementAccessor,self->expanded->v[idx]->type);
+        accessor_bufr_data_element_set_numberOfSubsets(elementAccessor,self->numberOfSubsets);
+        accessor_bufr_data_element_set_subsetNumber(elementAccessor,subset);
+
+        attribute=create_attribute_variable("index",section,GRIB_TYPE_LONG,0,0,count,flags);
+        grib_accessor_add_attribute(elementAccessor,attribute,0);
+
+        sprintf(code,"%06ld",self->expanded->v[idx]->code);
+        attribute=create_attribute_variable("code",section,GRIB_TYPE_STRING,code,0,0,flags);
+        grib_accessor_add_attribute(elementAccessor,attribute,0);
+
+        attribute=create_attribute_variable("units",section,GRIB_TYPE_STRING,self->expanded->v[idx]->units,0,0,GRIB_ACCESSOR_FLAG_DUMP);
+        grib_accessor_add_attribute(elementAccessor,attribute,0);
+
+        attribute=create_attribute_variable("scale",section,GRIB_TYPE_LONG,0,0,self->expanded->v[idx]->scale,flags);
+        grib_accessor_add_attribute(elementAccessor,attribute,0);
 
-  return elementAccessor;
+        attribute=create_attribute_variable("reference",section,GRIB_TYPE_DOUBLE,0,self->expanded->v[idx]->reference,0,flags);
+        grib_accessor_add_attribute(elementAccessor,attribute,0);
+
+        attribute=create_attribute_variable("width",section,GRIB_TYPE_LONG,0,0,self->expanded->v[idx]->width,flags);
+        grib_accessor_add_attribute(elementAccessor,attribute,0);
+        break;
+    }
+
+    return elementAccessor;
 }
 
 #define IS_QUALIFIER(a) (a==8 || a==1 || a==2 || a==4 || a==5 || a==6 || a==7)
@@ -780,564 +1355,793 @@ static grib_accessor* create_accessor_from_descriptor(grib_accessor* a,grib_sect
 
 static int number_of_qualifiers=NUMBER_OF_QUALIFIERS_PER_CATEGORY*NUMBER_OF_QUALIFIERS_CATEGORIES;
 
-static GRIB_INLINE int significanceQualifierIndex(int X,int Y) {
-  int a[]={-1,0,1,-1,2,3,4,5,6};
-  int ret=Y+a[X]*NUMBER_OF_QUALIFIERS_PER_CATEGORY;
-  Assert(ret>0);
-  return ret;
+static GRIB_INLINE int significanceQualifierIndex(int X,int Y)
+{
+    int a[]={-1,0,1,-1,2,3,4,5,6};
+    int ret=Y+a[X]*NUMBER_OF_QUALIFIERS_PER_CATEGORY;
+    Assert(ret>0);
+    return ret;
 }
 
-
-static GRIB_INLINE void reset_deeper_qualifiers(grib_accessor* significanceQualifierGroup[],int* significanceQualifierDepth, int depth) {
-  int i;
-  for (i=0;i<number_of_qualifiers;i++) {
-    if (significanceQualifierDepth[i]>depth) {
-      significanceQualifierGroup[i]=0;
+static GRIB_INLINE void reset_deeper_qualifiers(grib_accessor* significanceQualifierGroup[],int* significanceQualifierDepth, int depth)
+{
+    int i;
+    for (i=0;i<number_of_qualifiers;i++) {
+        if (significanceQualifierDepth[i]>depth) {
+            significanceQualifierGroup[i]=0;
+        }
     }
-  }
 }
 
 typedef struct bitmap_s {
-  grib_accessors_list* cursor;
-  grib_accessors_list* referredElement;
+    grib_accessors_list* cursor;
+    grib_accessors_list* referredElement;
 } bitmap_s;
 
-static grib_accessor* get_element_from_bitmap(grib_accessor* a,bitmap_s* bitmap) {
-  int ret,idx;
-  long bitmapVal=1;
-  size_t len;
-  grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
+static grib_accessor* get_element_from_bitmap(grib_accessor* a,bitmap_s* bitmap)
+{
+    int ret;
+    long bitmapVal=1;
+    size_t len;
+
+    while (bitmapVal) {
+        len=1;
+        if (bitmap->cursor && bitmap->cursor->accessor) {
+            ret=grib_unpack_long(bitmap->cursor->accessor,&bitmapVal,&len);
+        } else {
+            return NULL;
+        }
+        if (ret!=0) return NULL;
+        bitmap->cursor=bitmap->cursor->next;
+        if(bitmap->referredElement) bitmap->referredElement=bitmap->referredElement->next;
+    }
 
-  while (bitmapVal) {
-    len=1;
-    ret=grib_unpack_long(bitmap->cursor->accessor,&bitmapVal,&len);
-    Assert(ret==0);
-    bitmap->cursor=bitmap->cursor->next;
-    bitmap->referredElement=bitmap->referredElement->next;
+    return bitmap->referredElement ? bitmap->referredElement->prev->accessor : NULL ;
+}
+
+/*
+static GRIB_INLINE void reset_qualifiers(grib_accessor* significanceQualifierGroup[])
+{
+    int i;
+    for (i=0;i<number_of_qualifiers;i++)
+        significanceQualifierGroup[i]=0;
+}
+ */
+
+static void grib_convert_to_attribute(grib_accessor* a)
+{
+    if (a->h==NULL && a->parent!=NULL) {
+        a->h=grib_handle_of_accessor(a);
+        a->parent=NULL;
+    }
+}
+
+static void set_subset_start_end(grib_accessor_bufr_data_array *self,long *onlySubset,long *startSubset,long *endSubset,long *ret_start,long *ret_end)
+{
+  if (*startSubset>0 && *endSubset>=*startSubset) {
+    *ret_start=*startSubset-1;
+    *ret_end= *endSubset;
+  } else if (*onlySubset>0) {
+    *ret_start=*onlySubset-1;
+    *ret_end= *onlySubset;
+  } else {
+    *ret_start=0;
+    *ret_end= self->numberOfSubsets;
   }
+  self->start=*ret_start;
+  self->end=*ret_end;
+  if (self->compressedData==1) {
+    *ret_start=0;
+    *ret_end=1;
+  }
+}
+
 
-  return bitmap->referredElement->prev->accessor;
+static int bitmap_ref_skip(grib_accessors_list* al,int* err) {
+  grib_accessor* acode=NULL;
+  long code[1];
+  size_t l=1;
+
+  if (!al || !al->accessor) return 0;
+
+  acode=grib_accessor_get_attribute(al->accessor,"code");
+
+  if (acode) *err=grib_unpack_long(acode,code,&l);
+  else return 1;
+
+  switch (code[0]) {
+    case 222000:
+    case 224000:
+    case 225000:
+    case 232000:
+    case 236000:
+    case 237000:
+    case 243000:
+    case 31000:
+    case 31001:
+    case 31002:
+      return 1;
+  }
+  return 0;
 }
 
-static int create_keys(grib_accessor* a) {
-  grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
-  int err=0;
-  grib_accessor* elementAccessor=0;
-  long iss,end,elementsInSubset,ide;
-  grib_section* section=NULL;
-  grib_section* rootSection=NULL;
-  bufr_descriptor* descriptor;
-  grib_section* sectionUp=0;
-  grib_section* groupSection=0;
-  long groupNumber=0;
-  long indexOfGroupNumber=0;
-  int depth;
-  int idx;
-  grib_context* c=a->parent->h->context;
-  int qualityPresent=0;
-  bitmap_s bitmap={0,};
-  int extraElement=0;
-
-  grib_accessor* gaGroup=0;
-  grib_action creatorGroup = {0, };
-  grib_accessor* significanceQualifierGroup[NUMBER_OF_QUALIFIERS_PER_CATEGORY*NUMBER_OF_QUALIFIERS_CATEGORIES]={0,};
-  int significanceQualifierDepth[NUMBER_OF_QUALIFIERS_PER_CATEGORY*NUMBER_OF_QUALIFIERS_CATEGORIES]={0,};
-
-  grib_accessor* bitmapGroup[MAX_NUMBER_OF_BITMAPS]={0,};
-  int bitmapDepth[MAX_NUMBER_OF_BITMAPS]={0,};
-  int bitmapSize[MAX_NUMBER_OF_BITMAPS]={0,};
-  grib_accessors_list* bitmapStart[MAX_NUMBER_OF_BITMAPS]={0,};
-  int bitmapIndex=-1;
-  int incrementBitmapIndex=1;
-  grib_accessor* elementFromBitmap=NULL;
-  int reuseBitmap=0;
-  int i,dump=1,count=0;
-
-  creatorGroup.op         = "bufr_group";
-  creatorGroup.name="groupNumber";
-  creatorGroup.name_space = "";
-  creatorGroup.flags     = GRIB_ACCESSOR_FLAG_DUMP;
-  creatorGroup.set        = 0;
-
-
-  if (self->dataAccessors) grib_accessors_list_delete(c,self->dataAccessors);
-  self->dataAccessors=grib_accessors_list_create(c);
-
-  end= self->compressedData ? 1 : self->numberOfSubsets;
-  groupNumber=1;
-
-  gaGroup = grib_accessor_factory(a->sub_section, &creatorGroup, 0, NULL);
-  gaGroup->bufr_group_number=groupNumber;
-  gaGroup->sub_section=grib_section_create(a->parent->h,gaGroup);
-  section=gaGroup->sub_section;
-  rootSection=section;
-  sectionUp=a->sub_section;
-  accessor_constant_set_type(gaGroup,GRIB_TYPE_LONG);
-  accessor_constant_set_dval(gaGroup,groupNumber);
-  grib_push_accessor(gaGroup,a->sub_section->block);
-
-  indexOfGroupNumber=0;
-  depth=0;
-  extraElement=0;
-
-  for (iss=0;iss<end;iss++) {
-    qualityPresent=0;
-    elementsInSubset= self->compressedData ? grib_iarray_used_size(self->elementsDescriptorsIndex->v[0]) :
-      grib_iarray_used_size(self->elementsDescriptorsIndex->v[iss]);
-    for (ide=0;ide<elementsInSubset;ide++) {
-      idx = self->compressedData ? self->elementsDescriptorsIndex->v[0]->v[ide] :
-        self->elementsDescriptorsIndex->v[iss]->v[ide] ;
-
-      descriptor=self->expanded->v[idx];
-      elementFromBitmap=NULL;
-      if (descriptor->F==0 && IS_QUALIFIER(descriptor->X)
-                          && self->unpackMode==CODES_BUFR_UNPACK_STRUCTURE) {
-        int sidx=significanceQualifierIndex(descriptor->X,descriptor->Y);
-        groupNumber++;
-
-        if (significanceQualifierGroup[sidx]) {
-          groupSection=significanceQualifierGroup[sidx]->parent;
-          depth=significanceQualifierDepth[sidx];
-          reset_deeper_qualifiers(significanceQualifierGroup,significanceQualifierDepth,depth);
-        } else {
-          groupSection=section;
-          depth++;
-        }
+static int bitmap_init(bitmap_s* bitmap,grib_accessors_list* bitmapStart,int bitmapSize,grib_accessors_list* lastAccessorInList) {
+  int ret=0,i;
+  bitmap->cursor=bitmapStart->next;
+  bitmap->referredElement=bitmapStart;
+  while (bitmap_ref_skip(bitmap->referredElement,&ret)) bitmap->referredElement=bitmap->referredElement->prev;
+  for (i=1;i<bitmapSize;i++) {
+    if (bitmap->referredElement==NULL) return GRIB_INTERNAL_ERROR;
+    bitmap->referredElement=bitmap->referredElement->prev;
+  }
+  return ret;
+}
 
-        gaGroup = grib_accessor_factory(groupSection, &creatorGroup, 0, NULL);
-        a->parent->h->groups[groupNumber]=gaGroup;
-        gaGroup->sub_section=grib_section_create(a->parent->h,gaGroup);
-        gaGroup->bufr_group_number=groupNumber;
-        accessor_constant_set_type(gaGroup,GRIB_TYPE_LONG);
-        accessor_constant_set_dval(gaGroup,groupNumber);
-        grib_push_accessor(gaGroup,groupSection->block);
-
-        section=gaGroup->sub_section;
-        sectionUp=gaGroup->parent;
-
-        significanceQualifierGroup[sidx]=gaGroup;
-        significanceQualifierDepth[sidx]=depth;
-        incrementBitmapIndex=1;
-        dump=1;
-      } else if (descriptor->code == 31031 && incrementBitmapIndex!=0) {
-        /* bitmap */
-        bitmapIndex++;
-        groupNumber++;
-        incrementBitmapIndex=0;
-        bitmapStart[bitmapIndex]=grib_accessors_list_last(self->dataAccessors);
-        bitmapSize[bitmapIndex]=1;
-        if (self->expanded->v[idx-1]->code ==31002 || self->expanded->v[idx-1]->code==31001)
-          extraElement=1;
-        if (bitmapGroup[bitmapIndex]) {
-          groupSection=bitmapGroup[bitmapIndex]->parent;
-          depth=bitmapDepth[bitmapIndex];
-          reset_deeper_qualifiers(significanceQualifierGroup,significanceQualifierDepth,depth);
-          reset_deeper_qualifiers(bitmapGroup,bitmapDepth,depth);
-        } else {
-          groupSection=section;
-          depth++;
-        }
-        gaGroup = grib_accessor_factory(groupSection, &creatorGroup, 0, NULL);
-        a->parent->h->groups[groupNumber]=gaGroup;
-        gaGroup->sub_section=grib_section_create(a->parent->h,gaGroup);
-        gaGroup->bufr_group_number=groupNumber;
-        accessor_constant_set_type(gaGroup,GRIB_TYPE_LONG);
-        accessor_constant_set_dval(gaGroup,groupNumber);
-        grib_push_accessor(gaGroup,groupSection->block);
-
-        section=gaGroup->sub_section;
-        sectionUp=gaGroup->parent;
-        bitmapGroup[bitmapIndex]=gaGroup;
-        bitmapDepth[bitmapIndex]=depth;
-        dump=1;
-      } else if (descriptor->code == 31031) {
-        dump=1;
-        bitmapSize[bitmapIndex]++;
-        bitmap.cursor=0;
-      } else if (descriptor->code == 222000 || descriptor->code == 224000 ) {
-        bitmap.referredElement=NULL;
-        qualityPresent=1;
-        incrementBitmapIndex=1;
-        dump=1;
-      } else if (descriptor->code == 236000 ) {
-        bitmap.referredElement=NULL;
-        bitmap.cursor=0;
-        reuseBitmap=1;
-        extraElement=1;
-        dump=1;
-      } else if (descriptor->code == 236000 || descriptor->code == 237000 ) {
-        bitmap.referredElement=NULL;
-        bitmap.cursor=0;
-        reuseBitmap=1;
-        dump=1;
-      } else if (descriptor->code == 237255 ) {
-        reuseBitmap=0;
-        incrementBitmapIndex=1;
-        bitmap.cursor=0;
-        dump=1;
-      } else if ( ( descriptor->X==33 || descriptor->isMarker )  && qualityPresent) {
-        if (!bitmap.referredElement) {
-          bitmap.cursor=bitmapStart[bitmapIndex]->next;
-          bitmap.referredElement=bitmapStart[bitmapIndex];
-          for (i=0;i<bitmapSize[bitmapIndex]+extraElement;i++) {
-            bitmap.referredElement=bitmap.referredElement->prev;
-          }
+static int create_keys(grib_accessor* a,long onlySubset,long startSubset,long endSubset)
+{
+    grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
+    int err=0;
+    grib_accessor* elementAccessor=0;
+    grib_accessor* associatedFieldAccessor=0;
+    grib_accessor* associatedFieldSignificanceAccessor=0;
+    long iss,end,elementsInSubset,ide;
+    grib_section* section=NULL;
+    /*grib_section* rootSection=NULL;*/
+    bufr_descriptor* descriptor;
+    /*grib_section* sectionUp=0;*/
+    grib_section* groupSection=0;
+    long groupNumber=0;
+    /*long indexOfGroupNumber=0;*/
+    int depth;
+    int idx;
+    grib_context* c=a->context;
+    int qualityPresent=0;
+    bitmap_s bitmap={0,};
+    int extraElement=0;
+
+    grib_accessor* gaGroup=0;
+    grib_action creatorGroup = {0, };
+    grib_accessor* significanceQualifierGroup[NUMBER_OF_QUALIFIERS_PER_CATEGORY*NUMBER_OF_QUALIFIERS_CATEGORIES]={0,};
+    int significanceQualifierDepth[NUMBER_OF_QUALIFIERS_PER_CATEGORY*NUMBER_OF_QUALIFIERS_CATEGORIES]={0,};
+
+    grib_accessor* bitmapGroup[MAX_NUMBER_OF_BITMAPS]={0,};
+    int bitmapDepth[MAX_NUMBER_OF_BITMAPS]={0,};
+    int bitmapSize[MAX_NUMBER_OF_BITMAPS]={0,};
+    grib_accessors_list* bitmapStart[MAX_NUMBER_OF_BITMAPS]={0,};
+    grib_accessors_list* lastAccessorInList=NULL;
+    int bitmapIndex=-1;
+    int incrementBitmapIndex=1;
+    grib_accessor* elementFromBitmap=NULL;
+    /*int reuseBitmap=0;*/
+    int dump=1,count=0;
+    /*int forceGroupClosure=0;*/
+
+    creatorGroup.op         = "bufr_group";
+    creatorGroup.name="groupNumber";
+    creatorGroup.name_space = "";
+    creatorGroup.flags     = GRIB_ACCESSOR_FLAG_DUMP;
+    creatorGroup.set        = 0;
+
+
+    if (self->dataAccessors) {
+        grib_accessors_list_delete(c,self->dataAccessors);
+        /* grib_empty_section ( c,self->dataKeys ); */
+        /* grib_context_free ( c,self->dataKeys->block ); */
+    }
+    self->dataAccessors=grib_accessors_list_create(c);
+
+    end= self->compressedData ? 1 : self->numberOfSubsets;
+    groupNumber=1;
+
+    gaGroup = grib_accessor_factory(self->dataKeys, &creatorGroup, 0, NULL);
+    gaGroup->bufr_group_number=groupNumber;
+    gaGroup->sub_section=grib_section_create(grib_handle_of_accessor(a),gaGroup);
+    section=gaGroup->sub_section;
+    /*rootSection=section;*/
+    /*sectionUp=self->dataKeys;*/
+    accessor_constant_set_type(gaGroup,GRIB_TYPE_LONG);
+    accessor_constant_set_dval(gaGroup,groupNumber);
+    self->dataKeys->block->first=0;
+    self->dataKeys->block->last=0;
+    grib_push_accessor(gaGroup,self->dataKeys->block);
+
+    /*indexOfGroupNumber=0;*/
+    depth=0;
+    extraElement=0;
+
+    for (iss=0;iss<end;iss++) {
+        qualityPresent=0;
+        /*forceGroupClosure=0;*/
+        elementsInSubset= self->compressedData ? grib_iarray_used_size(self->elementsDescriptorsIndex->v[0]) :
+                grib_iarray_used_size(self->elementsDescriptorsIndex->v[iss]);
+        associatedFieldAccessor=NULL;
+        associatedFieldSignificanceAccessor=NULL;
+        for (ide=0;ide<elementsInSubset;ide++) {
+            idx = self->compressedData ? self->elementsDescriptorsIndex->v[0]->v[ide] :
+                    self->elementsDescriptorsIndex->v[iss]->v[ide] ;
+
+            descriptor=self->expanded->v[idx];
+            elementFromBitmap=NULL;
+            if (descriptor->F==0 && IS_QUALIFIER(descriptor->X)
+            && self->unpackMode==CODES_BUFR_UNPACK_STRUCTURE) {
+                int sidx=significanceQualifierIndex(descriptor->X,descriptor->Y);
+                groupNumber++;
+
+                if (significanceQualifierGroup[sidx]) {
+                    groupSection=significanceQualifierGroup[sidx]->parent;
+                    depth=significanceQualifierDepth[sidx];
+                    reset_deeper_qualifiers(significanceQualifierGroup,significanceQualifierDepth,depth);
+                } else {
+                    /* if (forceGroupClosure) { */
+                    /* groupSection=sectionUp; */
+                    /* forceGroupClosure=0; */
+                    /* depth=0; */
+                    /* } else { */
+                    groupSection=section;
+                    depth++;
+                    /* } */
+                }
+
+                gaGroup = grib_accessor_factory(groupSection, &creatorGroup, 0, NULL);
+                gaGroup->sub_section=grib_section_create(grib_handle_of_accessor(a),gaGroup);
+                gaGroup->bufr_group_number=groupNumber;
+                accessor_constant_set_type(gaGroup,GRIB_TYPE_LONG);
+                accessor_constant_set_dval(gaGroup,groupNumber);
+                grib_push_accessor(gaGroup,groupSection->block);
+
+                section=gaGroup->sub_section;
+                /*sectionUp=gaGroup->parent;*/
+
+                significanceQualifierGroup[sidx]=gaGroup;
+                significanceQualifierDepth[sidx]=depth;
+                incrementBitmapIndex=1;
+                dump=1;
+            } else if (descriptor->code == 31031 && incrementBitmapIndex!=0) {
+                /* bitmap */
+                bitmapIndex++;
+                groupNumber++;
+                incrementBitmapIndex=0;
+                bitmapStart[bitmapIndex]=grib_accessors_list_last(self->dataAccessors);
+                bitmapSize[bitmapIndex]=1;
+                if (self->expanded->v[idx-1]->code ==31002 || self->expanded->v[idx-1]->code==31001)
+                    extraElement+=1;
+                if (bitmapGroup[bitmapIndex]) {
+                    groupSection=bitmapGroup[bitmapIndex]->parent;
+                    depth=bitmapDepth[bitmapIndex];
+                    reset_deeper_qualifiers(significanceQualifierGroup,significanceQualifierDepth,depth);
+                    reset_deeper_qualifiers(bitmapGroup,bitmapDepth,depth);
+                } else {
+                    groupSection=section;
+                    depth++;
+                }
+                gaGroup = grib_accessor_factory(groupSection, &creatorGroup, 0, NULL);
+                gaGroup->sub_section=grib_section_create(grib_handle_of_accessor(a),gaGroup);
+                gaGroup->bufr_group_number=groupNumber;
+                accessor_constant_set_type(gaGroup,GRIB_TYPE_LONG);
+                accessor_constant_set_dval(gaGroup,groupNumber);
+                grib_push_accessor(gaGroup,groupSection->block);
+
+                section=gaGroup->sub_section;
+                /*sectionUp=gaGroup->parent;*/
+                bitmapGroup[bitmapIndex]=gaGroup;
+                bitmapDepth[bitmapIndex]=depth;
+                dump=1;
+            } else if (descriptor->code == 31031) {
+                dump=1;
+                bitmapSize[bitmapIndex]++;
+                bitmap.cursor=0;
+            } else if (descriptor->code == 222000 || descriptor->code == 224000 ) {
+                bitmap.referredElement=NULL;
+                qualityPresent=1;
+                incrementBitmapIndex=1;
+                dump=1;
+                extraElement+=1;
+            } else if (descriptor->code == 236000 || descriptor->code == 237000 ) {
+                bitmap.referredElement=NULL;
+                bitmap.cursor=0;
+                /*reuseBitmap=1;*/
+                extraElement+=1;
+                dump=1;
+            } else if (descriptor->code == 237255 ) {
+                /*reuseBitmap=0;*/
+                incrementBitmapIndex=1;
+                bitmap.cursor=0;
+                dump=1;
+            } else if ( ( descriptor->X==33 || bufr_descriptor_is_marker(descriptor) )  && qualityPresent) {
+                if (!bitmap.referredElement) bitmap_init(&bitmap,bitmapStart[bitmapIndex],bitmapSize[bitmapIndex],lastAccessorInList);
+                elementFromBitmap=get_element_from_bitmap(a,&bitmap);
+                dump=1;
+                /* } else if ( descriptor->Y==1 && IS_QUALIFIER(self->expanded->v[idx-1]->X)==0) { */
+                /* forceGroupClosure=1; */
+                /* reset_qualifiers(significanceQualifierGroup); */
+            }
+
+            if (ide==0 && !self->compressedData) {
+                grib_accessor* asn=NULL;
+                long subsetNumber=iss+1;
+                size_t len=1;
+                grib_action creatorsn = {0, };
+                creatorsn.op         = "variable";
+                creatorsn.name_space = "";
+                creatorsn.flags     = GRIB_ACCESSOR_FLAG_READ_ONLY | GRIB_ACCESSOR_FLAG_DUMP ;
+                creatorsn.set        = 0;
+
+                creatorsn.name="subsetNumber";
+                asn=grib_accessor_factory(section, &creatorsn, 0, NULL);
+                accessor_variable_set_type(asn,GRIB_TYPE_LONG);
+                grib_pack_long(asn,&subsetNumber,&len);
+
+                grib_push_accessor(asn,section->block);
+                grib_accessors_list_push(self->dataAccessors,asn);
+            }
+            count++;
+            elementAccessor=create_accessor_from_descriptor(a,associatedFieldAccessor,section,ide,iss,dump,count);
+            associatedFieldAccessor=NULL;
+            if (elementFromBitmap && self->unpackMode==CODES_BUFR_UNPACK_STRUCTURE) {
+                grib_accessor* newAccessor=grib_accessor_clone(elementAccessor,section,&err);
+                newAccessor->parent=groupSection;
+                newAccessor->name=grib_context_strdup(c,elementFromBitmap->name);
+                grib_push_accessor(newAccessor,groupSection->block);
+                grib_accessors_list_push(self->dataAccessors,newAccessor);
+
+                err=grib_accessor_add_attribute(elementFromBitmap,elementAccessor,1);
+            } else if (elementAccessor) {
+
+                switch (descriptor->code) {
+                case 999999:
+                    associatedFieldAccessor=elementAccessor;
+                    grib_convert_to_attribute(associatedFieldAccessor);
+                    if (associatedFieldSignificanceAccessor) {
+                        grib_accessor* newAccessor=grib_accessor_clone(associatedFieldSignificanceAccessor,section,&err);
+                        if (err) {
+                            grib_context_log(a->context,GRIB_LOG_ERROR,"unable to clone accessor '%s'\n",associatedFieldSignificanceAccessor->name);
+                            return err;
+                        }
+                        grib_accessor_add_attribute(associatedFieldAccessor,newAccessor,1);
+                    }
+                    break;
+                case 31021:
+                    associatedFieldSignificanceAccessor=elementAccessor;
+                    break;
+                default:
+                    grib_push_accessor(elementAccessor,section->block);
+                    grib_accessors_list_push(self->dataAccessors,elementAccessor);
+                    lastAccessorInList=grib_accessors_list_last(self->dataAccessors);
+                }
+            }
         }
-        elementFromBitmap=get_element_from_bitmap(a,&bitmap);
-        dump=1;
-      }
-
-      count++;
-      elementAccessor=create_accessor_from_descriptor(a,section,ide,iss,dump,count);
-      if (elementFromBitmap && self->unpackMode==CODES_BUFR_UNPACK_STRUCTURE) {
-        grib_accessor_add_attribute(elementFromBitmap,elementAccessor);
-      } else if (elementAccessor) {
-        grib_push_accessor(elementAccessor,section->block);
-        grib_accessors_list_push(self->dataAccessors,elementAccessor);
-      }
     }
-  }
 
-  return err;
+    return err;
 }
 
-#define MAX_NESTED_REPLICATIONS 8
+static void set_input_replications(grib_handle* h,grib_accessor_bufr_data_array *self) {
+    size_t nInputReplications;
+    size_t nInputExtendedReplications;
+    size_t nInputShortReplications;
+    self->nInputReplications=-1;
+    self->nInputExtendedReplications=-1;
+    self->nInputShortReplications=-1;
+    self->iInputReplications=0;
+    self->iInputExtendedReplications=0;
+    self->iInputShortReplications=0;
+    if (grib_get_size(h,"inputDelayedDescriptorReplicationFactor",&nInputReplications)==0 && nInputReplications!=0) {
+        if (self->inputReplications) grib_context_free(h->context,self->inputReplications);
+        self->inputReplications=grib_context_malloc_clear(h->context,sizeof(long)*nInputReplications);
+        grib_get_long_array(h,"inputDelayedDescriptorReplicationFactor",self->inputReplications,&nInputReplications);
+        /* default-> no input replications*/
+        if (self->inputReplications[0]<0) self->nInputReplications=-1;
+        else self->nInputReplications=nInputReplications;
+    }
+    if (grib_get_size(h,"inputExtendedDelayedDescriptorReplicationFactor",&nInputExtendedReplications)==0 && nInputExtendedReplications!=0) {
+        if (self->inputExtendedReplications) grib_context_free(h->context,self->inputExtendedReplications);
+        self->inputExtendedReplications=grib_context_malloc_clear(h->context,sizeof(long)*nInputExtendedReplications);
+        grib_get_long_array(h,"inputExtendedDelayedDescriptorReplicationFactor",self->inputExtendedReplications,&nInputExtendedReplications);
+        /* default-> no input replications*/
+        if (self->inputExtendedReplications[0]<0) self->nInputExtendedReplications=-1;
+        else self->nInputExtendedReplications=nInputExtendedReplications;
+    }
+    if (grib_get_size(h,"inputShortDelayedDescriptorReplicationFactor",&nInputShortReplications)==0 && nInputShortReplications!=0) {
+        if (self->inputShortReplications) grib_context_free(h->context,self->inputShortReplications);
+        self->inputShortReplications=grib_context_malloc_clear(h->context,sizeof(long)*nInputShortReplications);
+        grib_get_long_array(h,"inputShortDelayedDescriptorReplicationFactor",self->inputShortReplications,&nInputShortReplications);
+        /* default-> no input replications*/
+        if (self->inputShortReplications[0]<0) self->nInputShortReplications=-1;
+        else self->nInputShortReplications=nInputShortReplications;
+    }
+}
 
-static int decode_elements(grib_accessor* a) {
-  int err=0;
-  int associatedFieldWidth=0,localDescriptorWidth=0;
-  long  inr,innr,ir;
-  long n[MAX_NESTED_REPLICATIONS]={0,};
-  long nn[MAX_NESTED_REPLICATIONS]={0,};
-  long numberOfElementsToRepeat[MAX_NESTED_REPLICATIONS]={0,};
-  long numberOfRepetitions[MAX_NESTED_REPLICATIONS]={0,};
-  long startRepetition[MAX_NESTED_REPLICATIONS]={0,};
-  long numberOfNestedRepetitions=0;
-  unsigned char* data=0;
-  int i;
-  grib_iarray* elementsDescriptorsIndex=0;
-  long localReference=0,width=0;
-  long pos=0;
-  int iss,end,elementIndex,index;
-  long numberOfDescriptors;
-  bufr_descriptor** descriptors=0;
-
-  grib_darray* dval = NULL;
-  grib_sarray* sval = NULL;
-  grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
-
-  grib_handle* h=a->parent->h;
-  grib_context* c=h->context;
-
-  if (!self->do_decode) return 0;
-  self->do_decode=0;
-  a->parent->h->unpacked=1;
-
-  data = (unsigned char*)h->buffer->data;
-  pos=a->offset*8;
-
-  err=get_descriptors(a);
-  if (err) return err;
-
-  descriptors=self->expanded->v;
-
-  if (self->numericValues) {
-    grib_vdarray_delete_content(c,self->numericValues);
-    grib_vdarray_delete(c,self->numericValues);
-    grib_sarray_delete_content(c,self->stringValues);
-    grib_sarray_delete(c,self->stringValues);
-  }
-  self->numericValues=grib_vdarray_new(c,100,100);
-  self->stringValues=grib_sarray_new(c,10,10);
+static int process_elements(grib_accessor* a,int flag,long onlySubset,long startSubset,long endSubset)
+{
+    int err=0;
+    long  inr,innr,ir;
+    long n[MAX_NESTED_REPLICATIONS]={0,};
+    long nn[MAX_NESTED_REPLICATIONS]={0,};
+    long numberOfElementsToRepeat[MAX_NESTED_REPLICATIONS]={0,};
+    long numberOfRepetitions[MAX_NESTED_REPLICATIONS]={0,};
+    long startRepetition[MAX_NESTED_REPLICATIONS]={0,};
+    long numberOfNestedRepetitions=0;
+    unsigned char* data=0;
+    int i;
+    grib_iarray* elementsDescriptorsIndex=0;
+
+    long pos=0,dataOffset=0;
+    long iss,end,start,elementIndex,index;
+    long numberOfDescriptors;
+    long totalSize;
+    bufr_descriptor** descriptors=0;
+    long icount;
+    int decoding=0,do_clean=1;
+    grib_buffer* buffer=NULL;
+    codec_element_proc codec_element;
+    codec_replication_proc codec_replication;
+    grib_accessor* dataAccessor=NULL;
+
+    grib_darray* dval = NULL;
+    grib_sarray* sval = NULL;
+    grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
+
+    grib_handle* h=grib_handle_of_accessor(a);
+    grib_context* c=h->context;
+
+    totalSize=self->bitsToEndData;
+
+    switch (flag) {
+    case PROCESS_DECODE:
+        if (!self->do_decode) return 0;
+        self->do_decode=0;
+        buffer=h->buffer;
+        decoding=1;
+        do_clean=1;
+        dataAccessor=grib_find_accessor(grib_handle_of_accessor(a),self->bufrDataEncodedName);
+        Assert(dataAccessor);
+        dataOffset=accessor_raw_get_offset(dataAccessor);
+        pos=dataOffset*8;
+        codec_element=&decode_element;
+        codec_replication=&decode_replication;
+        break;
+    case PROCESS_NEW_DATA:
+        buffer=grib_create_growable_buffer(c);
+        decoding=0;
+        do_clean=1;
+        self->do_decode=1;
+        pos=0;
+        codec_element=&encode_new_element;
+        codec_replication=&encode_new_replication;
+
+        set_input_replications(h,self);
+
+        break;
+    case PROCESS_ENCODE:
+        buffer=grib_create_growable_buffer(c);
+        decoding=0;
+        do_clean=0;
+        self->do_decode=0;
+        pos=0;
+        codec_element=&encode_element;
+        grib_get_long(grib_handle_of_accessor(a),"extractSubset",&onlySubset);
+        grib_get_long(grib_handle_of_accessor(a),"extractSubsetIntervalStart",&startSubset);
+        grib_get_long(grib_handle_of_accessor(a),"extractSubsetIntervalEnd",&endSubset);
+        codec_replication=&encode_replication;
+        break;
+    default :
+        return GRIB_NOT_IMPLEMENTED;
+    }
+    data=(unsigned char*)buffer->data;
+
+    err=get_descriptors(a);
+    if (err) return err;
 
-  if (self->elementsDescriptorsIndex) grib_viarray_delete(c,self->elementsDescriptorsIndex);
-  self->elementsDescriptorsIndex=grib_viarray_new(c,100,100);
+    descriptors=self->expanded->v;
 
-  end= self->compressedData ? 1 : self->numberOfSubsets;
+    if (do_clean==1 && self->numericValues) {
+        grib_vdarray_delete_content(c,self->numericValues);
+        grib_vdarray_delete(c,self->numericValues);
+        grib_vsarray_delete_content(c,self->stringValues);
+        grib_vsarray_delete(c,self->stringValues);
+    }
 
-  numberOfDescriptors=grib_bufr_descriptors_array_used_size(self->expanded);
+    if (flag!=PROCESS_ENCODE) {
+        self->numericValues=grib_vdarray_new(c,100,100);
+        self->stringValues=grib_vsarray_new(c,10,10);
 
-  for (iss=0;iss<end;iss++) {
-    elementsDescriptorsIndex=grib_iarray_new(c,100,100);
-    if (!self->compressedData) {
-      dval=grib_darray_new(c,100,100);
-      /* sval=grib_sarray_new(c,10,10); */
+        if (self->elementsDescriptorsIndex) grib_viarray_delete(c,self->elementsDescriptorsIndex);
+        self->elementsDescriptorsIndex=grib_viarray_new(c,100,100);
     }
-    for (i=0;i<numberOfDescriptors;i++) {
-      elementIndex=grib_iarray_used_size(elementsDescriptorsIndex);
-      switch(descriptors[i]->F) {
-        case 0:
-          /* Table B element */
-          grib_iarray_push(elementsDescriptorsIndex,i);
-          if (descriptors[i]->code==31031 && !is_bitmap_start_defined(self))
-            self->bitmapStart=grib_iarray_used_size(elementsDescriptorsIndex)-1;
-          decode_element(c,self,iss,data,&pos,i,dval,sval);
-          break;
-        case 1:
-          /* Delayed replication */
-          inr=numberOfNestedRepetitions;
-          numberOfNestedRepetitions++;
-          Assert(numberOfNestedRepetitions<=MAX_NESTED_REPLICATIONS);
-          numberOfElementsToRepeat[inr]=descriptors[i]->X;
-          n[inr]=numberOfElementsToRepeat[inr];
-          i++;
-          if (self->compressedData) {
-            localReference=grib_decode_unsigned_long(data,&pos,descriptors[i]->width)+descriptors[i]->reference;
-            width=grib_decode_unsigned_long(data,&pos,6);
-            if (width) {
-              /* delayed replication number is not constant. NOT IMPLEMENTED */
-              Assert(0);
-            } else {
-              numberOfRepetitions[inr]=localReference*descriptors[i]->factor;
-              startRepetition[inr]=i;
+
+
+    numberOfDescriptors=grib_bufr_descriptors_array_used_size(self->expanded);
+
+    set_subset_start_end(self,&onlySubset,&startSubset,&endSubset,&start,&end);
+
+    for (iss=start;iss<end;iss++) {
+        icount=1;
+        grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data processing: subsetNumber=%ld", iss+1);
+
+        if (flag!=PROCESS_ENCODE) {
+            elementsDescriptorsIndex=grib_iarray_new(c,100,100);
+            if (!self->compressedData) {
+                dval=grib_darray_new(c,100,100);
+                /* sval=grib_sarray_new(c,10,10); */
             }
-          } else {
-            numberOfRepetitions[inr]=grib_decode_unsigned_long(data,&pos,descriptors[i]->width)+
-                                      descriptors[i]->reference*descriptors[i]->factor;
-            startRepetition[inr]=i;
-          }
-          nn[inr]=numberOfRepetitions[inr];
-          grib_iarray_push(elementsDescriptorsIndex,i);
-          if (self->compressedData) {
-            dval=grib_darray_new(c,1,100);
-            grib_darray_push(c,dval,(double)numberOfRepetitions[inr]);
-            grib_vdarray_push(c,self->numericValues,dval);
-          } else {
-            grib_darray_push(c,dval,(double)numberOfRepetitions[inr]);
-          }
-          if (numberOfRepetitions[inr]==0) {
-            i+=numberOfElementsToRepeat[inr];
-            if (inr>0) n[inr-1]-=numberOfElementsToRepeat[inr]+2;
-            numberOfNestedRepetitions--;
-          }
-          continue;
-        case 2:
-          /* Operator */
-          associatedFieldWidth=0;
-          localDescriptorWidth=0;
-          switch(descriptors[i]->X) {
-            case 22:
-            case 26:
-            case 27:
-            case 29:
-            case 30:
-            case 31:
-            case 33:
-            case 34:
-            case 38:
-            case 39:
-            case 40:
-            case 41:
-            case 42:
-              grib_iarray_push(elementsDescriptorsIndex,i);
-              push_zero_element(self,dval);
-              break;
-            case 23:
-              /* substituted values marker operator */
-            case 24:
-              /*first-order statistical values marker operator*/
-            case 32:
-              /*replaced/retained values marker operator*/
-              if (descriptors[i]->Y==255) {
-                index=get_next_bitmap_descriptor_index(self,elementsDescriptorsIndex,dval);
-                decode_element(c,self,iss,data,&pos,index,dval,sval);
-                /* self->expanded->v[index] */
-                grib_iarray_push(elementsDescriptorsIndex,i);
-              } else {
-                grib_iarray_push(elementsDescriptorsIndex,i);
-                push_zero_element(self,dval);
-              }
-              break;
-            case 25:
-              /*difference statistical values marker operator*/
-              break;
-            case 35:
-              /* cancel bitmap */
-              grib_iarray_push(elementsDescriptorsIndex,i);
-              push_zero_element(self,dval);
-              if (descriptors[i]->Y==0) cancel_bitmap(self);
-              break;
-            case 36:
-              /* bitmap */
-              grib_iarray_push(elementsDescriptorsIndex,i);
-              push_zero_element(self,dval);
-              build_bitmap(self,data,&pos,elementsDescriptorsIndex,i);
-              break;
-            case 37:
-              /* reuse defined bitmap */
-              grib_iarray_push(elementsDescriptorsIndex,i);
-              push_zero_element(self,dval);
-              if (descriptors[i]->Y==0) restart_bitmap(self);
-              /* cancel reuse */
-              else cancel_bitmap(self);
-              break;
-            default :
-              grib_context_log(c,GRIB_LOG_ERROR,"unsupported operator %d\n",descriptors[i]->X);
-              return GRIB_INTERNAL_ERROR;
-          }
-          break;
-        case 9:
-          /* associated field */
-          if (descriptors[i]->X==99 && descriptors[i]->Y==999) {
-            grib_iarray_push(elementsDescriptorsIndex,i);
-            decode_element(c,self,iss,data,&pos,i,dval,sval);
-          } else {
-            return GRIB_INTERNAL_ERROR;
-          }
-          break;
-        default:
-          err=GRIB_INTERNAL_ERROR;
-          return err;
-      }
-
-      /* delayed repetition check */
-      innr=numberOfNestedRepetitions-1;
-        for (ir=innr;ir>=0;ir--) {
-          if (nn[ir])  {
-            if (n[ir]>1) {
-                n[ir]--;
+        } else {
+            elementsDescriptorsIndex=self->elementsDescriptorsIndex->v[iss];
+            dval=self->numericValues->v[iss];
+        }
+        elementIndex=0;
+
+        for (i=0;i<numberOfDescriptors;i++) {
+            grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data processing: elementNumber=%ld code=%6.6ld", icount++,descriptors[i]->code);
+            switch(descriptors[i]->F) {
+            case 0:
+                /* Table B element */
+                if (flag!=PROCESS_ENCODE) grib_iarray_push(elementsDescriptorsIndex,i);
+                if (descriptors[i]->code==31031 && !is_bitmap_start_defined(self)) {
+                    /* self->bitmapStart=grib_iarray_used_size(elementsDescriptorsIndex)-1; */
+                    self->bitmapStart=elementIndex;
+                }
+                err=codec_element(c,self,iss,buffer,data,&pos,i,elementIndex,dval,sval);
+                if (err) return err;
+                elementIndex++;
                 break;
-            } else {
-                n[ir]=numberOfElementsToRepeat[ir];
-                nn[ir]--;
-                if (nn[ir]) {
-                  i=startRepetition[ir];
-                  break;
-                } else {
-                  if (ir>0)  {
-                    n[ir-1]-=numberOfElementsToRepeat[ir]+2;
-                  }
-                  i=startRepetition[ir]+numberOfElementsToRepeat[ir];
-                  numberOfNestedRepetitions--;
+            case 1:
+                /* Delayed replication */
+                inr=numberOfNestedRepetitions;
+                numberOfNestedRepetitions++;
+                Assert(numberOfNestedRepetitions<=MAX_NESTED_REPLICATIONS);
+                numberOfElementsToRepeat[inr]=descriptors[i]->X;
+                n[inr]=numberOfElementsToRepeat[inr];
+                i++;
+
+                err=codec_replication(c,self,iss,buffer,data,&pos,i,elementIndex,dval,&(numberOfRepetitions[inr]));
+                if (err) return err;
+
+                startRepetition[inr]=i;
+                nn[inr]=numberOfRepetitions[inr];
+                if (flag!=PROCESS_ENCODE) grib_iarray_push(elementsDescriptorsIndex,i);
+                elementIndex++;
+                if (numberOfRepetitions[inr]==0) {
+                    i+=numberOfElementsToRepeat[inr];
+                    if (inr>0) {
+                        n[inr-1]-=numberOfElementsToRepeat[inr]+2;
+                        /* if the empty nested repetition is at the end of the nesting repetition
+                           we need to re-point to the start of the nesting repetition */
+                        if (n[inr-1]==0) {
+                            nn[inr-1]--;
+                            if (nn[inr-1]<=0) numberOfNestedRepetitions--;
+                        }
+                    }
+                    numberOfNestedRepetitions--;
+                }
+                continue;
+            case 2:
+                /* Operator */
+                switch(descriptors[i]->X) {
+                case 5:
+                    descriptors[i]->width=descriptors[i]->Y*8;
+                    descriptors[i]->type=BUFR_DESCRIPTOR_TYPE_STRING;
+                    err=codec_element(c,self,iss,buffer,data,&pos,i,elementIndex,dval,sval);
+                    if (err) return err;
+                    if (flag!=PROCESS_ENCODE) grib_iarray_push(elementsDescriptorsIndex,i);
+                    elementIndex++;
+                    break;
+                case 22:
+                case 26:
+                case 27:
+                case 29:
+                case 30:
+                case 31:
+                case 33:
+                case 34:
+                case 38:
+                case 39:
+                case 40:
+                case 41:
+                case 42:
+                    if (flag!=PROCESS_ENCODE) grib_iarray_push(elementsDescriptorsIndex,i);
+                    if (decoding) push_zero_element(self,dval);
+                    elementIndex++;
+                    break;
+                case 23:
+                    /* substituted values marker operator */
+                case 24:
+                    /*first-order statistical values marker operator*/
+                case 32:
+                    /*replaced/retained values marker operator*/
+                    if (descriptors[i]->Y==255) {
+                        index=get_next_bitmap_descriptor_index(self,elementsDescriptorsIndex,dval);
+                        err=codec_element(c,self,iss,buffer,data,&pos,index,elementIndex,dval,sval);
+                        if (err) return err;
+                        /* self->expanded->v[index] */
+                        if (flag!=PROCESS_ENCODE) grib_iarray_push(elementsDescriptorsIndex,i);
+                        elementIndex++;
+                    } else {
+                        if (flag!=PROCESS_ENCODE) grib_iarray_push(elementsDescriptorsIndex,i);
+                        if (decoding) push_zero_element(self,dval);
+                        elementIndex++;
+                    }
+                    break;
+                case 25:
+                    /*difference statistical values marker operator*/
+                    break;
+                case 35:
+                    /* cancel bitmap */
+                    if (flag!=PROCESS_ENCODE) {
+                        grib_iarray_push(elementsDescriptorsIndex,i);
+                        if (decoding) push_zero_element(self,dval);
+                        if (descriptors[i]->Y==0) cancel_bitmap(self);
+                    }
+                    elementIndex++;
+                    break;
+                case 36:
+                    /* bitmap */
+                    if (flag!=PROCESS_ENCODE) {
+                        grib_iarray_push(elementsDescriptorsIndex,i);
+                        if (decoding) push_zero_element(self,dval);
+                        build_bitmap(self,data,&pos,elementIndex,elementsDescriptorsIndex,i);
+                    } else {
+                        restart_bitmap(self);
+                    }
+                    elementIndex++;
+                    break;
+                case 37:
+                    /* reuse defined bitmap */
+                    if (flag!=PROCESS_ENCODE) {
+                        grib_iarray_push(elementsDescriptorsIndex,i);
+                        if (decoding) push_zero_element(self,dval);
+                    }
+                    if (descriptors[i]->Y==0) restart_bitmap(self);
+                    /* cancel reuse */
+                    else cancel_bitmap(self);
+                    elementIndex++;
+                    break;
+                default :
+                    grib_context_log(c,GRIB_LOG_ERROR,"unsupported operator %d\n",descriptors[i]->X);
+                    return GRIB_INTERNAL_ERROR;
                 }
+                break;
+                case 9:
+                    /* associated field */
+                    if (descriptors[i]->X==99 && descriptors[i]->Y==999) {
+                        err=codec_element(c,self,iss,buffer,data,&pos,i,elementIndex,dval,sval);
+                        if (err) return err;
+                        if (flag!=PROCESS_ENCODE) grib_iarray_push(elementsDescriptorsIndex,i);
+                        elementIndex++;
+                    } else {
+                        return GRIB_INTERNAL_ERROR;
+                    }
+                    break;
+                default:
+                    err=GRIB_INTERNAL_ERROR;
+                    return err;
             }
-          } else {
-            if (ir==0) {
-              i=startRepetition[ir]+numberOfElementsToRepeat[ir]+1;
-              numberOfNestedRepetitions=0;
-            } else {
-              numberOfNestedRepetitions--;
+
+            /* delayed repetition check */
+            innr=numberOfNestedRepetitions-1;
+            for (ir=innr;ir>=0;ir--) {
+                if (nn[ir])  {
+                    if (n[ir]>1) {
+                        n[ir]--;
+                        break;
+                    } else {
+                        n[ir]=numberOfElementsToRepeat[ir];
+                        nn[ir]--;
+                        if (nn[ir]) {
+                            i=startRepetition[ir];
+                            break;
+                        } else {
+                            if (ir>0)  {
+                                n[ir-1]-=numberOfElementsToRepeat[ir]+2;
+                            }
+                            i=startRepetition[ir]+numberOfElementsToRepeat[ir];
+                            numberOfNestedRepetitions--;
+                        }
+                    }
+                } else {
+                    if (ir==0) {
+                        i=startRepetition[ir]+numberOfElementsToRepeat[ir]+1;
+                        numberOfNestedRepetitions=0;
+                    } else {
+                        numberOfNestedRepetitions--;
+                    }
+                }
             }
-          }
-        }
 
+        }
+        if (flag!=PROCESS_ENCODE) grib_viarray_push(c,self->elementsDescriptorsIndex,elementsDescriptorsIndex);
+        if (decoding && !self->compressedData) {
+            grib_vdarray_push(c,self->numericValues,dval);
+        }
     }
-    grib_viarray_push(c,self->elementsDescriptorsIndex,elementsDescriptorsIndex);
-    if (!self->compressedData) {
-      grib_vdarray_push(c,self->numericValues,dval);
-    }
-  }
 
-  err=create_keys(a);
+    if(decoding) {
+        err=create_keys(a,0,0,0);
+        self->bitsToEndData=totalSize;
+    } else {
+        self->bitsToEndData=buffer->ulength*8;
+        grib_set_bytes(grib_handle_of_accessor(a),self->bufrDataEncodedName,buffer->data,&(buffer->ulength));
+        grib_buffer_delete(c,buffer);
+        if (self->numberOfSubsets != (self->end-self->start) ) {
+            grib_set_long(h,self->numberOfSubsetsName,self->end-self->start);
+        }
+    }
 
-  return err;
+    return err;
 }
 
 static void dump(grib_accessor* a, grib_dumper* dumper)
 {
-  decode_elements(a);
+    /* grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a; */
+    /* int err=process_elements(a,PROCESS_DECODE); */
 
-  grib_dump_section(dumper,a,a->sub_section->block);
+    /* grib_dump_section(dumper,a,self->dataKeys->block); */
 
-  return;
+    return;
 }
 
 static int value_count(grib_accessor* a,long* count)
 {
-	int err=0,l;
-  long i,subsetNumber=0;
-	grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
-  grib_context* c=a->parent->h->context;
-
-  err=decode_elements(a);
-  if (err) return err;
-
-  err=grib_get_long(a->parent->h,self->subsetNumberName,&subsetNumber);
-  if (err) return err;
-  if (subsetNumber>self->numberOfSubsets) {
-    err=GRIB_INVALID_KEY_VALUE;
-    grib_context_log(c,GRIB_LOG_ERROR,"%s=%ld is too big, %s=%ld",self->subsetNumberName,self->numberOfSubsetsName);
-    return err;
-  }
+    int err=0,l;
+    long i;
+    grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
 
-  if (self->compressedData) {
-    l=grib_vdarray_used_size(self->numericValues);
+    err=process_elements(a,PROCESS_DECODE,0,0,0);
+    if (err) return err;
 
-    *count=l;
-    if (subsetNumber<=0) {
-      *count *= self->numberOfSubsets;
-    }
-  } else {
-    if (subsetNumber>0) {
-      *count=grib_iarray_used_size(self->elementsDescriptorsIndex->v[subsetNumber-1]);
+    if (self->compressedData) {
+        l=grib_vdarray_used_size(self->numericValues);
+
+        *count=l*self->numberOfSubsets;
     } else {
-      *count=0;
-      for (i=0;i<self->numberOfSubsets;i++)
-        *count+=grib_iarray_used_size(self->elementsDescriptorsIndex->v[i]);
+        *count=0;
+        for (i=0;i<self->numberOfSubsets;i++)
+            *count+=grib_iarray_used_size(self->elementsDescriptorsIndex->v[i]);
     }
-  }
 
-	return err;
+    return err;
 }
 
-static int unpack_double(grib_accessor* a, double* val, size_t *len) {
+static int unpack_double(grib_accessor* a, double* val, size_t *len)
+{
     int err=0,i,k,ii;
-    long n=0;
+    int proc_flag=PROCESS_DECODE;
     size_t l=0,elementsInSubset;
     long numberOfSubsets=0;
-	  grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
-    grib_context* c=a->parent->h->context;
+    grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
+
+    if (self->unpackMode == CODES_BUFR_NEW_DATA) proc_flag=PROCESS_NEW_DATA;
 
-    err=decode_elements(a);
+    err=process_elements(a,proc_flag,0,0,0);
     if (err) return err;
     if (!val) return err;
 
     l=grib_vdarray_used_size(self->numericValues);
-    err=grib_get_long(a->parent->h,self->subsetNumberName,&n);
+    err=grib_get_long(grib_handle_of_accessor(a),self->numberOfSubsetsName,&numberOfSubsets);
     if (err) return err;
-    err=grib_get_long(a->parent->h,self->numberOfSubsetsName,&numberOfSubsets);
-    if (err) return err;
-    if (n>numberOfSubsets) {
-      err=GRIB_INVALID_KEY_VALUE;
-      grib_context_log(c,GRIB_LOG_ERROR,"%s=%ld is too big, %s=%ld",self->subsetNumberName,self->numberOfSubsetsName);
-      return err;
-    }
 
     if (self->compressedData) {
-      if (n>0) {
-        for (i=0;i<l;i++) {
-          val[i]=self->numericValues->v[i]->n > 1 ? self->numericValues->v[i]->v[n-1] : self->numericValues->v[i]->v[0];
-        }
-      } else {
         ii=0;
         for (k=0;k<numberOfSubsets;k++) {
-          for (i=0;i<l;i++) {
-            val[ii++]=self->numericValues->v[i]->n > 1 ? self->numericValues->v[i]->v[k] : self->numericValues->v[i]->v[0];
-          }
+            for (i=0;i<l;i++) {
+                val[ii++]=self->numericValues->v[i]->n > 1 ? self->numericValues->v[i]->v[k] : self->numericValues->v[i]->v[0];
+            }
         }
-      }
     } else {
-      if (n>0) {
-        elementsInSubset=grib_iarray_used_size(self->elementsDescriptorsIndex->v[n]);
-        for (i=0;i<elementsInSubset;i++) val[i]=self->numericValues->v[n-1]->v[i]; 
-      } else {
         ii=0;
         for (k=0;k<numberOfSubsets;k++) {
-          elementsInSubset=grib_iarray_used_size(self->elementsDescriptorsIndex->v[k]);
-          for (i=0;i<elementsInSubset;i++) {
-            val[ii++]=self->numericValues->v[k]->v[i];
-          }
+            elementsInSubset=grib_iarray_used_size(self->elementsDescriptorsIndex->v[k]);
+            for (i=0;i<elementsInSubset;i++) {
+                val[ii++]=self->numericValues->v[k]->v[i];
+            }
         }
-      }
     }
 
     return GRIB_SUCCESS;
 }
 
-static void destroy(grib_context* c,grib_accessor* a) {
-  grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
-  self_clear(c,self);
-  if (self->dataAccessors) grib_accessors_list_delete(c,self->dataAccessors);
-  grib_section_delete(c,a->sub_section);
+static void destroy(grib_context* c,grib_accessor* a)
+{
+    grib_accessor_bufr_data_array *self =(grib_accessor_bufr_data_array*)a;
+    self_clear(c,self);
+    if (self->dataAccessors) grib_accessors_list_delete(c,self->dataAccessors);
 }
-
diff --git a/src/grib_accessor_class_bufr_data_element.c b/src/grib_accessor_class_bufr_data_element.c
index 70624c5..fabf353 100644
--- a/src/grib_accessor_class_bufr_data_element.c
+++ b/src/grib_accessor_class_bufr_data_element.c
@@ -1,5 +1,5 @@
 /**
-* Copyright 2005-2015 ECMWF
+* Copyright 2005-2016 ECMWF
 *
 * Licensed under the GNU Lesser General Public License which
 * incorporates the terms and conditions of version 3 of the GNU
@@ -22,7 +22,8 @@
    SUPER      = grib_accessor_class_gen
    IMPLEMENTS = init;dump
    IMPLEMENTS = unpack_string;unpack_string_array;unpack_long; unpack_double
-   IMPLEMENTS = value_count; destroy; get_native_type;
+   IMPLEMENTS = pack_long; pack_double ; pack_string_array; pack_string
+   IMPLEMENTS = value_count; get_native_type; make_clone; destroy
    MEMBERS    = long index
    MEMBERS    = int type
    MEMBERS    = long compressedData
@@ -30,7 +31,7 @@
    MEMBERS    = long numberOfSubsets
    MEMBERS    = bufr_descriptors_array* descriptors
    MEMBERS    = grib_vdarray* numericValues
-   MEMBERS    = grib_sarray* stringValues
+   MEMBERS    = grib_vsarray* stringValues
    MEMBERS    = grib_viarray* elementsDescriptorsIndex
 
    END_CLASS_DEF
@@ -48,6 +49,10 @@ 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 pack_string_array(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);
@@ -57,6 +62,7 @@ static void destroy(grib_context*,grib_accessor*);
 static void dump(grib_accessor*, grib_dumper*);
 static void init(grib_accessor*,const long, grib_arguments* );
 static void init_class(grib_accessor_class*);
+static grib_accessor* make_clone(grib_accessor*,grib_section*,int*);
 
 typedef struct grib_accessor_bufr_data_element {
     grib_accessor          att;
@@ -69,7 +75,7 @@ typedef struct grib_accessor_bufr_data_element {
 	long numberOfSubsets;
 	bufr_descriptors_array* descriptors;
 	grib_vdarray* numericValues;
-	grib_sarray* stringValues;
+	grib_vsarray* stringValues;
 	grib_viarray* elementsDescriptorsIndex;
 } grib_accessor_bufr_data_element;
 
@@ -94,13 +100,13 @@ static grib_accessor_class _grib_accessor_class_bufr_data_element = {
     0,                /* get sub_section                */
     0,               /* grib_pack procedures long      */
     0,                 /* grib_pack procedures long      */
-    0,                  /* grib_pack procedures long      */
+    &pack_long,                  /* grib_pack procedures long      */
     &unpack_long,                /* grib_unpack procedures long    */
-    0,                /* grib_pack procedures double    */
+    &pack_double,                /* grib_pack procedures double    */
     &unpack_double,              /* grib_unpack procedures double  */
-    0,                /* grib_pack procedures string    */
+    &pack_string,                /* grib_pack procedures string    */
     &unpack_string,              /* grib_unpack procedures string  */
-    0,          /* grib_pack array procedures string    */
+    &pack_string_array,          /* grib_pack array procedures string    */
     &unpack_string_array,        /* grib_unpack array procedures string  */
     0,                 /* grib_pack procedures bytes     */
     0,               /* grib_unpack procedures bytes   */
@@ -115,6 +121,7 @@ static grib_accessor_class _grib_accessor_class_bufr_data_element = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    &make_clone,               		/* clone accessor          */
 };
 
 
@@ -130,10 +137,6 @@ static void init_class(grib_accessor_class* c)
 	c->sub_section	=	(*(c->super))->sub_section;
 	c->pack_missing	=	(*(c->super))->pack_missing;
 	c->is_missing	=	(*(c->super))->is_missing;
-	c->pack_long	=	(*(c->super))->pack_long;
-	c->pack_double	=	(*(c->super))->pack_double;
-	c->pack_string	=	(*(c->super))->pack_string;
-	c->pack_string_array	=	(*(c->super))->pack_string_array;
 	c->pack_bytes	=	(*(c->super))->pack_bytes;
 	c->unpack_bytes	=	(*(c->super))->unpack_bytes;
 	c->pack_expression	=	(*(c->super))->pack_expression;
@@ -151,240 +154,417 @@ static void init_class(grib_accessor_class* c)
 
 /* END_CLASS_IMP */
 
-void accessor_bufr_data_element_set_index(grib_accessor* a,long index) {
-  grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
-  self->index=index;
+static grib_accessor* make_clone(grib_accessor* a,grib_section* s,int* err)
+{
+    grib_accessor* the_clone=NULL;
+    grib_accessor* attribute=NULL;
+    grib_accessor_bufr_data_element* elementAccessor;
+    grib_accessor_bufr_data_element* self;
+    int i;
+    grib_action creator = {0, };
+    creator.op         = "bufr_data_element";
+    creator.name_space = "";
+    creator.set        = 0;
+    creator.name="unknown";
+    if (strcmp(a->cclass->name,"bufr_data_element")) {
+        grib_context_log(a->context,GRIB_LOG_FATAL,"wrong accessor type: '%s' should be '%s'",a->cclass->name,"bufr_data_element");
+    }
+    *err=0;
+
+    the_clone = grib_accessor_factory(s, &creator, 0, NULL);
+    the_clone->name=grib_context_strdup(a->context,a->name);
+    elementAccessor=(grib_accessor_bufr_data_element*)the_clone;
+    self=(grib_accessor_bufr_data_element*)a;
+    the_clone->flags=a->flags;
+    the_clone->parent=NULL;
+    the_clone->h=s->h;
+    elementAccessor->index=self->index;
+    elementAccessor->type=self->type;
+    elementAccessor->numberOfSubsets=self->numberOfSubsets;
+    elementAccessor->subsetNumber=self->subsetNumber;
+    elementAccessor->compressedData=self->compressedData;
+    elementAccessor->descriptors=self->descriptors;
+    elementAccessor->numericValues=self->numericValues;
+    elementAccessor->stringValues=self->stringValues;
+    elementAccessor->elementsDescriptorsIndex=self->elementsDescriptorsIndex;
+
+    i=0;
+    while (a->attributes[i]) {
+        attribute=grib_accessor_clone(a->attributes[i],s,err);
+        /* attribute->parent=a->parent; */
+        grib_accessor_add_attribute(the_clone,attribute,0);
+        i++;
+    }
+
+    return the_clone;
 }
 
-void accessor_bufr_data_element_set_type(grib_accessor* a,int type) {
-  grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
-  self->type=type;
+void accessor_bufr_data_element_set_index(grib_accessor* a,long index)
+{
+    grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
+    self->index=index;
+}
+
+void accessor_bufr_data_element_set_type(grib_accessor* a,int type)
+{
+    grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
+    self->type=type;
 }
 
-void accessor_bufr_data_element_set_numberOfSubsets(grib_accessor* a,long numberOfSubsets) {
-  grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
-  self->numberOfSubsets=numberOfSubsets;
+void accessor_bufr_data_element_set_numberOfSubsets(grib_accessor* a,long numberOfSubsets)
+{
+    grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
+    self->numberOfSubsets=numberOfSubsets;
 }
 
-void accessor_bufr_data_element_set_subsetNumber(grib_accessor* a,long subsetNumber) {
-  grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
-  self->subsetNumber=subsetNumber;
+void accessor_bufr_data_element_set_subsetNumber(grib_accessor* a,long subsetNumber)
+{
+    grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
+    self->subsetNumber=subsetNumber;
 }
 
-void accessor_bufr_data_element_set_compressedData(grib_accessor* a,int compressedData) {
-  grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
-  self->compressedData=compressedData;
+void accessor_bufr_data_element_set_compressedData(grib_accessor* a,int compressedData)
+{
+    grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
+    self->compressedData=compressedData;
 }
 
-void accessor_bufr_data_element_set_descriptors(grib_accessor* a,bufr_descriptors_array* descriptors) {
-  grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
-  self->descriptors=descriptors;
+void accessor_bufr_data_element_set_descriptors(grib_accessor* a,bufr_descriptors_array* descriptors)
+{
+    grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
+    self->descriptors=descriptors;
 }
 
-void accessor_bufr_data_element_set_numericValues(grib_accessor* a,grib_vdarray* numericValues) {
-  grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
-  self->numericValues=numericValues;
+void accessor_bufr_data_element_set_numericValues(grib_accessor* a,grib_vdarray* numericValues)
+{
+    grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
+    self->numericValues=numericValues;
 }
 
-void accessor_bufr_data_element_set_stringValues(grib_accessor* a,grib_sarray* stringValues) {
-  grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
-  self->stringValues=stringValues;
+void accessor_bufr_data_element_set_stringValues(grib_accessor* a,grib_vsarray* stringValues)
+{
+    grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
+    self->stringValues=stringValues;
 }
 
-void accessor_bufr_data_element_set_elementsDescriptorsIndex(grib_accessor* a,grib_viarray* elementsDescriptorsIndex) {
-  grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
-  self->elementsDescriptorsIndex=elementsDescriptorsIndex;
+void accessor_bufr_data_element_set_elementsDescriptorsIndex(grib_accessor* a,grib_viarray* elementsDescriptorsIndex)
+{
+    grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
+    self->elementsDescriptorsIndex=elementsDescriptorsIndex;
 }
 
-static void init(grib_accessor* a, const long len, grib_arguments* params) {
+static void init(grib_accessor* a, const long len, grib_arguments* params)
+{
 
-  a->length = 0;
-  a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
+    a->length = 0;
+    /* a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; */
 }
 
 static void dump(grib_accessor* a, grib_dumper* dumper)
 {
-  int type=get_native_type(a);
+    int type=get_native_type(a);
 
-  switch (type) {
+    switch (type) {
     case GRIB_TYPE_LONG:
-      grib_dump_long(dumper,a,NULL);
-      break;
+        grib_dump_long(dumper,a,NULL);
+        break;
     case GRIB_TYPE_DOUBLE:
-      grib_dump_values(dumper,a);
-      break;
+        grib_dump_values(dumper,a);
+        break;
     case GRIB_TYPE_STRING:
-      grib_dump_string_array(dumper,a,NULL);
-      break;
-  }
+        grib_dump_string_array(dumper,a,NULL);
+        break;
+    }
 }
 
 static int unpack_string_array (grib_accessor* a, char** val, size_t *len)
 {
-  grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
-
-  int ret=0,i,idx;
-  long count=0;
-  grib_context* c=a->parent->h->context;
-
-  value_count(a,&count);
+    grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
+
+    int ret=0,i,idx;
+    long count=0;
+    grib_context* c=a->context;
+
+    if (self->compressedData) {
+        idx=((int)self->numericValues->v[self->index]->v[0]/1000-1)/self->numberOfSubsets;
+        count=grib_sarray_used_size(self->stringValues->v[idx]);
+        for (i=0;i<count;i++) {
+            val[i]=grib_context_strdup(c,self->stringValues->v[idx]->v[i]);
+        }
+        *len=count;
+    } else {
+        idx=(int)self->numericValues->v[self->subsetNumber]->v[self->index]/1000-1;
+        val[0]=grib_context_strdup(c,self->stringValues->v[idx]->v[0]);
+        *len=1;
+    }
 
-  if (*len<count) return GRIB_ARRAY_TOO_SMALL;
+    return ret;
+}
 
-  if (self->compressedData) {
-    idx=(int)self->numericValues->v[self->index]->v[0]/1000-1;
-    for (i=0;i<count;i++) {
-      val[i]=grib_context_strdup(c,self->stringValues->v[idx++]);
+static int pack_string_array(grib_accessor*a , const char**  v, size_t *len)
+{
+    grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
+
+    int ret=0,i,idx;
+    char* s=NULL;
+    grib_context* c=a->context;
+
+    if (self->compressedData) {
+        idx=((int)self->numericValues->v[self->index]->v[0]/1000-1)/self->numberOfSubsets;
+        if (*len!=1 && *len!=self->numberOfSubsets) {
+            grib_context_log(c,GRIB_LOG_ERROR,"Number of values mismatch for %s: are %ld should be %ld",
+                    self->descriptors->v[self->elementsDescriptorsIndex->v[0]->v[idx]]->shortName,*len,self->numberOfSubsets);
+            return GRIB_ARRAY_TOO_SMALL;
+        }
+        grib_sarray_delete(c,self->stringValues->v[idx]);
+        self->stringValues->v[idx]=grib_sarray_new(c,*len,1);
+        for (i=0;i<*len;i++) {
+            s=grib_context_strdup(c,v[i]);
+            grib_sarray_push(c,self->stringValues->v[idx],s);
+        }
+    } else {
+        ret=GRIB_NOT_IMPLEMENTED;
     }
-    *len=count;
-  } else {
-    idx=(int)self->numericValues->v[self->subsetNumber]->v[self->index]/1000-1;
-    val[0]=grib_context_strdup(c,self->stringValues->v[idx]);
-    *len=1;
-  }
-
-  return ret;
+
+    return ret;
 }
 
 static int unpack_string (grib_accessor* a, char* val, size_t *len)
 {
-  grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
-  char* str=NULL;
-  char* p=0;
-  size_t slen=0;
-
-  int ret=0,i,idx;
-  grib_context* c=a->parent->h->context;
-
-  if (self->compressedData) {
-    idx=(int)self->numericValues->v[self->index]->v[0]/1000-1;
-    str=grib_context_strdup(c,self->stringValues->v[idx]);
-  } else {
-    idx=(int)self->numericValues->v[self->subsetNumber]->v[self->index]/1000-1;
-    str=grib_context_strdup(c,self->stringValues->v[idx]);
-  }
-
-  if (str==0 || strlen(str)==0) {
-    *len=0;
-    *val=0;
-    return ret;
-  }
-
-  p=str;
-  while (*p!=0) p++;
-  p--;
-  while (p!=str) {
-    if (*p!=' ') break;
-    else *p=0;
+    grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
+    char* str=NULL;
+    char* p=0;
+    size_t slen=0;
+    char sval[100]={0,};
+    double dval=0;
+    size_t dlen=1;
+
+    int ret=0,idx;
+    grib_context* c=a->context;
+
+    if (self->type != BUFR_DESCRIPTOR_TYPE_STRING) {
+        unpack_double(a,&dval,&dlen);
+        sprintf(sval,"%g",dval);
+        slen=strlen(sval);
+        if (*len < slen) return GRIB_ARRAY_TOO_SMALL;
+        strcpy(val,sval);
+        return GRIB_SUCCESS;
+    }
+
+    if (self->compressedData) {
+        idx=((int)self->numericValues->v[self->index]->v[0]/1000-1)/self->numberOfSubsets;
+        str=grib_context_strdup(c,self->stringValues->v[idx]->v[0]);
+    } else {
+        idx=(int)self->numericValues->v[self->subsetNumber]->v[self->index]/1000-1;
+        str=grib_context_strdup(c,self->stringValues->v[idx]->v[0]);
+    }
+
+    if (str==0 || strlen(str)==0) {
+        *len=0;
+        *val=0;
+        return ret;
+    }
+
+    p=str;
+    while (*p!=0) p++;
     p--;
-  }
-  slen=strlen(str);
-  if (slen>*len) return GRIB_ARRAY_TOO_SMALL;
+    while (p!=str) {
+        if (*p!=' ') break;
+        else *p=0;
+        p--;
+    }
+    slen=strlen(str);
+    if (slen>*len) return GRIB_ARRAY_TOO_SMALL;
 
-  strcpy(val,str);
-  grib_context_free(c,str);
-  *len=slen;
+    strcpy(val,str);
+    grib_context_free(c,str);
+    *len=slen;
 
-  return ret;
+    return ret;
 }
 
-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)
 {
-  grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
-  int ret=0,i;
-  long count=0;
+    grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
+
+    int ret=0,idx;
+    /*long count=0;*/
+    char* s=NULL;
+    grib_context* c=a->context;
 
-  value_count(a,&count);
+    /*count=self->numberOfSubsets;*/
+    idx=((int)self->numericValues->v[self->index]->v[0]/1000-1)/self->numberOfSubsets;
+    grib_sarray_delete(c,self->stringValues->v[idx]);
+    self->stringValues->v[idx]=grib_sarray_new(c,1,1);
+    s=grib_context_strdup(c,val);
+    grib_sarray_push(c,self->stringValues->v[idx],s);
 
-  if (*len<count) return GRIB_ARRAY_TOO_SMALL;
+    return ret;
+}
 
-  if (self->compressedData) {
-    for (i=0;i<count;i++) {
-      val[i]= self->numericValues->v[self->index]->v[i] == GRIB_MISSING_DOUBLE ? 
-		GRIB_MISSING_LONG : (long)self->numericValues->v[self->index]->v[i];
+static int unpack_long (grib_accessor* a, long* val, size_t *len)
+{
+    grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
+    int ret=0,i;
+    long count=0;
+
+    value_count(a,&count);
+
+    if (*len<count) return GRIB_ARRAY_TOO_SMALL;
+
+    if (self->compressedData) {
+        for (i=0;i<count;i++) {
+            val[i]= self->numericValues->v[self->index]->v[i] == GRIB_MISSING_DOUBLE ?
+                    GRIB_MISSING_LONG : (long)self->numericValues->v[self->index]->v[i];
+        }
+        *len=count;
+    } else {
+        val[0]= self->numericValues->v[self->subsetNumber]->v[self->index] == GRIB_MISSING_DOUBLE ?
+                GRIB_MISSING_LONG : (long)self->numericValues->v[self->subsetNumber]->v[self->index];
+        *len=1;
     }
-    *len=count;
-  } else {
-    val[0]= self->numericValues->v[self->subsetNumber]->v[self->index] == GRIB_MISSING_DOUBLE ?
-		GRIB_MISSING_LONG : (long)self->numericValues->v[self->subsetNumber]->v[self->index];
-    *len=1;
-  }
-
-  return ret;
+
+    return ret;
 }
 
 static int unpack_double (grib_accessor* a, double* val, size_t *len)
 {
-  grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
-  int ret=0,i;
-  long count=0;
+    grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
+    int ret=0,i;
+    long count=0;
+
+    value_count(a,&count);
+
+    if (*len<count) return GRIB_ARRAY_TOO_SMALL;
+
+    if (self->compressedData) {
+        for (i=0;i<count;i++) {
+            val[i]=self->numericValues->v[self->index]->v[i];
+        }
+        *len=count;
+    } else {
+        val[0]=self->numericValues->v[self->subsetNumber]->v[self->index];
+        *len=1;
+    }
 
-  value_count(a,&count);
+    return ret;
+}
 
-  if (*len<count) return GRIB_ARRAY_TOO_SMALL;
+static int pack_double(grib_accessor* a, const double* val, size_t *len)
+{
+    grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
+    int ret=0,i;
+    long count=1;
+    grib_context* c=a->context;
+
+    if (self->compressedData) {
+        count=*len;
+        if (count!=1 && count!=self->numberOfSubsets) {
+            grib_context_log(c,GRIB_LOG_ERROR,"Number of values mismatch for %s: are %ld should be %ld",
+                    self->descriptors->v[self->elementsDescriptorsIndex->v[0]->v[self->index]]->shortName,count,self->numberOfSubsets);
+            return GRIB_ARRAY_TOO_SMALL;
+        }
+        grib_darray_delete(a->context,self->numericValues->v[self->index]);
+        self->numericValues->v[self->index]=grib_darray_new(a->context,count,1);
+
+        for (i=0;i<count;i++)
+            grib_darray_push(a->context,self->numericValues->v[self->index],val[i]);
+
+        *len=count;
+    } else {
+        self->numericValues->v[self->subsetNumber]->v[self->index]=val[0];
+        *len=1;
+    }
 
-  if (self->compressedData) {
-    for (i=0;i<count;i++) {
-      val[i]=self->numericValues->v[self->index]->v[i];
+    return ret;
+}
+
+static int pack_long(grib_accessor* a, const long* val, size_t *len)
+{
+    grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
+    int ret=0,i;
+    long count=1;
+    grib_context* c=a->context;
+
+    if (self->compressedData) {
+        count=*len;
+        if (count!=1 && count!=self->numberOfSubsets) {
+            grib_context_log(c,GRIB_LOG_ERROR,"Number of values mismatch for %s: are %ld should be %ld",
+                    self->descriptors->v[self->elementsDescriptorsIndex->v[0]->v[self->index]]->shortName,count,self->numberOfSubsets);
+            return GRIB_ARRAY_TOO_SMALL;
+        }
+        grib_darray_delete(a->context,self->numericValues->v[self->index]);
+        self->numericValues->v[self->index]=grib_darray_new(a->context,count,1);
+
+        for (i=0;i<count;i++) {
+            grib_darray_push(a->context,self->numericValues->v[self->index], val[i] ==  GRIB_MISSING_LONG ? GRIB_MISSING_DOUBLE : val[i]);
+        }
+        *len=count;
+    } else {
+        self->numericValues->v[self->subsetNumber]->v[self->index] = val[0] ==  GRIB_MISSING_LONG ? GRIB_MISSING_DOUBLE : val[0];
+        *len=1;
     }
-    *len=count;
-  } else {
-    val[0]=self->numericValues->v[self->subsetNumber]->v[self->index];
-    *len=1;
-  }
 
-  return ret;
+    return ret;
 }
 
 static int value_count(grib_accessor* a,long* count)
 {
-  int ret=0,size,type,idx;
-  grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
+    int ret=0,size,type,idx;
+    grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
 
-  if (!self->compressedData) {
-     *count=1;
-     return 0;
-  }
-  type=get_native_type(a);
+    if (!self->compressedData) {
+        *count=1;
+        return 0;
+    }
+    type=get_native_type(a);
 
-  if (type==GRIB_TYPE_STRING) {
-    size=grib_sarray_used_size(self->stringValues);
-  } else {
-    size=grib_darray_used_size(self->numericValues->v[self->index]);
-  }
+    if (type==GRIB_TYPE_STRING) {
+        idx=((int)self->numericValues->v[self->index]->v[0]/1000-1)/self->numberOfSubsets;
+        size=grib_sarray_used_size(self->stringValues->v[idx]);
+    } else {
+        size=grib_darray_used_size(self->numericValues->v[self->index]);
+    }
 
-  *count = size == 1 ? 1 : self->numberOfSubsets;
+    *count = size == 1 ? 1 : self->numberOfSubsets;
 
-  return ret;
+    return ret;
 }
 
-static void destroy(grib_context* context,grib_accessor* a)
+static int  get_native_type(grib_accessor* a)
 {
-}
+    grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
+    int ret=GRIB_TYPE_DOUBLE;
 
-static int  get_native_type(grib_accessor* a){
-  grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
-  int ret=GRIB_TYPE_DOUBLE;
-
-  switch (self->type) {
+    switch (self->type) {
     case BUFR_DESCRIPTOR_TYPE_STRING:
-     ret=GRIB_TYPE_STRING;
-     break;
+        ret=GRIB_TYPE_STRING;
+        break;
     case BUFR_DESCRIPTOR_TYPE_DOUBLE:
-     ret=GRIB_TYPE_DOUBLE;
-     break;
+        ret=GRIB_TYPE_DOUBLE;
+        break;
     case BUFR_DESCRIPTOR_TYPE_LONG:
-     ret=GRIB_TYPE_LONG;
-     break;
+        ret=GRIB_TYPE_LONG;
+        break;
     case BUFR_DESCRIPTOR_TYPE_TABLE:
-     ret=GRIB_TYPE_LONG;
-     break;
+        ret=GRIB_TYPE_LONG;
+        break;
     case BUFR_DESCRIPTOR_TYPE_FLAG:
-     ret=GRIB_TYPE_LONG;
-     break;
-  }
+        ret=GRIB_TYPE_LONG;
+        break;
+    }
 
-  return ret;
+    return ret;
 }
 
-
+static void destroy(grib_context* ct, grib_accessor* a)
+{
+    int i=0;
+    while (i<MAX_ACCESSOR_ATTRIBUTES && a->attributes[i]) {
+        grib_context_log(ct,GRIB_LOG_DEBUG,"deleting attribute %s->%s",a->name,a->attributes[i]->name);
+        /* printf("+++++ %s\n",a->attributes[i]->name); */
+        grib_accessor_delete(ct,a->attributes[i]);
+        a->attributes[i]=NULL;
+        i++;
+    }
+}
diff --git a/src/grib_accessor_class_bufr_elements_table.c b/src/grib_accessor_class_bufr_elements_table.c
index bb0a72d..6426fa3 100644
--- a/src/grib_accessor_class_bufr_elements_table.c
+++ b/src/grib_accessor_class_bufr_elements_table.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -99,6 +99,7 @@ static grib_accessor_class _grib_accessor_class_bufr_elements_table = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -133,21 +134,22 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
 
-static void init(grib_accessor* a, const long len, grib_arguments* params) {
-  int n=0;
-  grib_accessor_bufr_elements_table* self  = (grib_accessor_bufr_elements_table*)a;
-
-  self->dictionary = grib_arguments_get_string(a->parent->h,params,n++);
-  self->masterDir = grib_arguments_get_name(a->parent->h,params,n++);
-  self->localDir = grib_arguments_get_name(a->parent->h,params,n++);
+static void init(grib_accessor* a, const long len, grib_arguments* params)
+{
+    int n=0;
+    grib_accessor_bufr_elements_table* self  = (grib_accessor_bufr_elements_table*)a;
 
-  a->length = 0;
-  a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
+    self->dictionary = grib_arguments_get_string(grib_handle_of_accessor(a),params,n++);
+    self->masterDir = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->localDir = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
 
+    a->length = 0;
+    a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
 }
 
 char** str_split(char* a_str, const char a_delim)
@@ -178,7 +180,7 @@ char** str_split(char* a_str, const char a_delim)
        knows where the list of returned strings ends. */
     count++;
 
-    result = malloc(sizeof(char*) * count);
+    result = (char**)malloc(sizeof(char*) * count);
 
     if (result)
     {
@@ -198,8 +200,8 @@ char** str_split(char* a_str, const char a_delim)
     return result;
 }
 
-static grib_trie* load_bufr_elements_table(grib_accessor* a, int* err) {
-
+static grib_trie* load_bufr_elements_table(grib_accessor* a, int* err)
+{
     grib_accessor_bufr_elements_table* self = (grib_accessor_bufr_elements_table*)a;
 
     char* filename=NULL;
@@ -216,8 +218,8 @@ static grib_trie* load_bufr_elements_table(grib_accessor* a, int* err) {
     size_t len=1024;
     grib_trie* dictionary=NULL;
     FILE* f=NULL;
-    grib_handle* h=a->parent->h;
-    grib_context* c=a->parent->h->context;
+    grib_handle* h=grib_handle_of_accessor(a);
+    grib_context* c=a->context;
 
     *err=GRIB_SUCCESS;
 
@@ -275,8 +277,8 @@ static grib_trie* load_bufr_elements_table(grib_accessor* a, int* err) {
         if (!f) {*err=GRIB_IO_PROBLEM; return NULL;}
 
         while(fgets(line,sizeof(line)-1,f)) {
-          list=str_split(line,'|');
-          grib_trie_insert(dictionary,list[0],list);
+            list=str_split(line,'|');
+            grib_trie_insert(dictionary,list[0],list);
         }
 
         fclose(f);
@@ -285,121 +287,124 @@ static grib_trie* load_bufr_elements_table(grib_accessor* a, int* err) {
     return dictionary;
 }
 
-static int convert_type(char* stype) {
-  int ret=BUFR_DESCRIPTOR_TYPE_UNKNOWN;
-  switch (stype[0]) {
+static int convert_type(char* stype)
+{
+    int ret=BUFR_DESCRIPTOR_TYPE_UNKNOWN;
+    switch (stype[0]) {
     case 's':
-      if (!strcmp(stype,"string") ) ret=BUFR_DESCRIPTOR_TYPE_STRING;
-      break;
+        if (!strcmp(stype,"string") ) ret=BUFR_DESCRIPTOR_TYPE_STRING;
+        break;
     case 'l':
-      if (!strcmp(stype,"long") ) ret=BUFR_DESCRIPTOR_TYPE_LONG;
-      break;
+        if (!strcmp(stype,"long") ) ret=BUFR_DESCRIPTOR_TYPE_LONG;
+        break;
     case 'd':
-      if (!strcmp(stype,"double") ) ret=BUFR_DESCRIPTOR_TYPE_DOUBLE;
-      break;
+        if (!strcmp(stype,"double") ) ret=BUFR_DESCRIPTOR_TYPE_DOUBLE;
+        break;
     case 't':
-      if (!strcmp(stype,"table") ) ret=BUFR_DESCRIPTOR_TYPE_TABLE;
-      break;
+        if (!strcmp(stype,"table") ) ret=BUFR_DESCRIPTOR_TYPE_TABLE;
+        break;
     case 'f':
-      if (!strcmp(stype,"flag") ) ret=BUFR_DESCRIPTOR_TYPE_FLAG;
-      break;
+        if (!strcmp(stype,"flag") ) ret=BUFR_DESCRIPTOR_TYPE_FLAG;
+        break;
     default:
-      ret=BUFR_DESCRIPTOR_TYPE_UNKNOWN;
-  }
+        ret=BUFR_DESCRIPTOR_TYPE_UNKNOWN;
+    }
 
-  return ret;
+    return ret;
 }
 
-static int bufr_get_from_table(grib_accessor* a,bufr_descriptor* v) {
-  int ret=0;
-  char** list=0;
-  char code[7]={0};
-  grib_context* c;
-  char* str=NULL;
-
-  grib_trie* table;
-
-  table=load_bufr_elements_table(a,&ret);
-  if (ret) return ret;
-
-  c=a->parent->h->context;
-
-  sprintf(code,"%06ld",v->code);
-
-  list=(char**)grib_trie_get(table,code);
-  if (!list) return GRIB_NOT_FOUND;
-
-  v->shortName=grib_context_strdup(c,list[1]);
-  v->type=convert_type(list[2]);
-  v->name=grib_context_strdup(c,list[3]);
-  v->units=grib_context_strdup(c,list[4]);
-  str=grib_context_strdup(c,list[5]);
-  v->scale=atol(str);
-  grib_context_free(c,str);
-  v->factor=grib_power(-v->scale,10);
-  str=grib_context_strdup(c,list[6]);
-  v->reference=atol(str);
-  grib_context_free(c,str);
-  str=grib_context_strdup(c,list[7]);
-  v->width=atol(str);
-  grib_context_free(c,str);
-
-  return ret;
+static int bufr_get_from_table(grib_accessor* a,bufr_descriptor* v)
+{
+    int ret=0;
+    char** list=0;
+    char code[7]={0};
+    grib_context* c;
+    char* str=NULL;
+
+    grib_trie* table;
+
+    table=load_bufr_elements_table(a,&ret);
+    if (ret) return ret;
+
+    c=a->context;
+
+    sprintf(code,"%06ld",v->code);
+
+    list=(char**)grib_trie_get(table,code);
+    if (!list) return GRIB_NOT_FOUND;
+
+    v->shortName=grib_context_strdup(c,list[1]);
+    v->type=convert_type(list[2]);
+    v->name=grib_context_strdup(c,list[3]);
+    v->units=grib_context_strdup(c,list[4]);
+    str=grib_context_strdup(c,list[5]);
+    v->scale=atol(str);
+    grib_context_free(c,str);
+    v->factor=grib_power(-v->scale,10);
+    str=grib_context_strdup(c,list[6]);
+    v->reference=atol(str);
+    grib_context_free(c,str);
+    str=grib_context_strdup(c,list[7]);
+    v->width=atol(str);
+    grib_context_free(c,str);
+
+    return ret;
 }
 
-int bufr_is_marker(int code) {
-  switch (code) {
+int bufr_descriptor_is_marker(bufr_descriptor* d)
+{
+    int isMarker=0;
+    switch (d->code) {
     case 223255:
     case 224255:
     case 225255:
     case 232255:
-      return 1;
-    default :
-      return 0;
-  }
+        return 1;
+    }
+    if (d->F==2 && d->X==5) isMarker=1;
+    return isMarker;
 }
 
-bufr_descriptor* accessor_bufr_elements_table_get_descriptor(grib_accessor* a,int code,int *err) {
-  grib_context* c;
-  bufr_descriptor* v=NULL;
-
-  if (!a) return NULL;
-
-  c=a->parent->h->context;
-
-  v=(bufr_descriptor*)grib_context_malloc_clear(c,sizeof(bufr_descriptor));
-  if (!v) {
-    grib_context_log(c,GRIB_LOG_ERROR,
-          "grib_bufr_descriptor_new unable to allocate %d bytes\n",sizeof(bufr_descriptor));
-    *err=GRIB_OUT_OF_MEMORY;
-    return NULL;
-  }
-  v->context=c;
-  v->code=code;
-  v->F=code/100000;
-  v->X=(code-v->F*100000)/1000;
-  v->Y=(code-v->F*100000)%1000;
-  v->isMarker=bufr_is_marker(code);
-
-  switch (v->F) {
+bufr_descriptor* accessor_bufr_elements_table_get_descriptor(grib_accessor* a,int code,int *err)
+{
+    grib_context* c;
+    bufr_descriptor* v=NULL;
+
+    if (!a) return NULL;
+
+    c=a->context;
+
+    v=(bufr_descriptor*)grib_context_malloc_clear(c,sizeof(bufr_descriptor));
+    if (!v) {
+        grib_context_log(c,GRIB_LOG_ERROR,
+                "grib_bufr_descriptor_new unable to allocate %d bytes\n",sizeof(bufr_descriptor));
+        *err=GRIB_OUT_OF_MEMORY;
+        return NULL;
+    }
+    v->context=c;
+    v->code=code;
+    v->F=code/100000;
+    v->X=(code-v->F*100000)/1000;
+    v->Y=(code-v->F*100000)%1000;
+
+    switch (v->F) {
     case 0:
-      *err=bufr_get_from_table(a,v);
-      break;
+        *err=bufr_get_from_table(a,v);
+        break;
     case 1:
-      v->type=BUFR_DESCRIPTOR_TYPE_REPLICATION;
-      break;
+        v->type=BUFR_DESCRIPTOR_TYPE_REPLICATION;
+        break;
     case 2:
-      v->type=BUFR_DESCRIPTOR_TYPE_OPERATOR;
-      break;
+        v->type=BUFR_DESCRIPTOR_TYPE_OPERATOR;
+        break;
     case 3:
-      v->type=BUFR_DESCRIPTOR_TYPE_SEQUENCE;
-      break;
-  }
+        v->type=BUFR_DESCRIPTOR_TYPE_SEQUENCE;
+        break;
+    }
 
-  return v;
+    return v;
 }
 
-
 static int unpack_string (grib_accessor* a, char* buffer, size_t *len)
 {
     return GRIB_NOT_IMPLEMENTED;
@@ -411,18 +416,17 @@ static int value_count(grib_accessor* a,long* count)
     return 0;
 }
 
-static int  get_native_type(grib_accessor* a){
-  return GRIB_TYPE_STRING;
+static int get_native_type(grib_accessor* a)
+{
+    return GRIB_TYPE_STRING;
 }
 
-static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
+static int unpack_long   (grib_accessor* a, long* val, size_t *len)
 {
     return GRIB_NOT_IMPLEMENTED;
 }
 
-static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
+static int unpack_double   (grib_accessor* a, double* val, size_t *len)
 {
     return GRIB_NOT_IMPLEMENTED;
 }
-
-
diff --git a/src/grib_accessor_class_bufr_extract_subsets.c b/src/grib_accessor_class_bufr_extract_subsets.c
new file mode 100644
index 0000000..6c60e2e
--- /dev/null
+++ b/src/grib_accessor_class_bufr_extract_subsets.c
@@ -0,0 +1,202 @@
+/*
+ * Copyright 2005-2016 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 = init; get_native_type
+   IMPLEMENTS = pack_long;
+   MEMBERS    = const char* numericValues
+   MEMBERS    = const char* pack
+   MEMBERS    = const char* numberOfSubsets
+   MEMBERS    = const char* subset
+   MEMBERS    = grib_accessor* numericValuesAccessor
+   MEMBERS    = grib_accessor* packAccessor
+   MEMBERS    = grib_accessor* numberOfSubsetsAccessor
+   MEMBERS    = grib_accessor* subsetAccessor
+   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 void init(grib_accessor*,const long, grib_arguments* );
+static void init_class(grib_accessor_class*);
+
+typedef struct grib_accessor_bufr_extract_subsets {
+    grib_accessor          att;
+/* Members defined in gen */
+/* Members defined in bufr_extract_subsets */
+	const char* numericValues;
+	const char* pack;
+	const char* numberOfSubsets;
+	const char* subset;
+	grib_accessor* numericValuesAccessor;
+	grib_accessor* packAccessor;
+	grib_accessor* numberOfSubsetsAccessor;
+	grib_accessor* subsetAccessor;
+} grib_accessor_bufr_extract_subsets;
+
+extern grib_accessor_class* grib_accessor_class_gen;
+
+static grib_accessor_class _grib_accessor_class_bufr_extract_subsets = {
+    &grib_accessor_class_gen,                      /* super                     */
+    "bufr_extract_subsets",                      /* name                      */
+    sizeof(grib_accessor_bufr_extract_subsets),  /* size                      */
+    0,                           /* inited */
+    &init_class,                 /* init_class */
+    &init,                       /* init                      */
+    0,                  /* post_init                      */
+    0,                    /* free mem                       */
+    0,                       /* describes himself         */
+    0,                /* get length of section     */
+    0,              /* 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,               /* grib_pack procedures long      */
+    0,                 /* grib_pack procedures long      */
+    &pack_long,                  /* grib_pack procedures long      */
+    0,                /* grib_unpack procedures long    */
+    0,                /* grib_pack procedures double    */
+    0,              /* grib_unpack procedures double  */
+    0,                /* grib_pack procedures string    */
+    0,              /* grib_unpack procedures string  */
+    0,          /* grib_pack array procedures string    */
+    0,        /* grib_unpack array procedures string  */
+    0,                 /* grib_pack procedures bytes     */
+    0,               /* grib_unpack procedures 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          */
+    0,     /* unpack a subarray         */
+    0,              		/* clear          */
+    0,               		/* clone accessor          */
+};
+
+
+grib_accessor_class* grib_accessor_class_bufr_extract_subsets = &_grib_accessor_class_bufr_extract_subsets;
+
+
+static void init_class(grib_accessor_class* c)
+{
+	c->dump	=	(*(c->super))->dump;
+	c->next_offset	=	(*(c->super))->next_offset;
+	c->string_length	=	(*(c->super))->string_length;
+	c->value_count	=	(*(c->super))->value_count;
+	c->byte_count	=	(*(c->super))->byte_count;
+	c->byte_offset	=	(*(c->super))->byte_offset;
+	c->sub_section	=	(*(c->super))->sub_section;
+	c->pack_missing	=	(*(c->super))->pack_missing;
+	c->is_missing	=	(*(c->super))->is_missing;
+	c->unpack_long	=	(*(c->super))->unpack_long;
+	c->pack_double	=	(*(c->super))->pack_double;
+	c->unpack_double	=	(*(c->super))->unpack_double;
+	c->pack_string	=	(*(c->super))->pack_string;
+	c->unpack_string	=	(*(c->super))->unpack_string;
+	c->pack_string_array	=	(*(c->super))->pack_string_array;
+	c->unpack_string_array	=	(*(c->super))->unpack_string_array;
+	c->pack_bytes	=	(*(c->super))->pack_bytes;
+	c->unpack_bytes	=	(*(c->super))->unpack_bytes;
+	c->pack_expression	=	(*(c->super))->pack_expression;
+	c->notify_change	=	(*(c->super))->notify_change;
+	c->update_size	=	(*(c->super))->update_size;
+	c->preferred_size	=	(*(c->super))->preferred_size;
+	c->resize	=	(*(c->super))->resize;
+	c->nearest_smaller_value	=	(*(c->super))->nearest_smaller_value;
+	c->next	=	(*(c->super))->next;
+	c->compare	=	(*(c->super))->compare;
+	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
+	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
+	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
+}
+
+/* END_CLASS_IMP */
+
+static void get_accessors(grib_accessor* a)
+{
+    grib_accessor_bufr_extract_subsets *self =(grib_accessor_bufr_extract_subsets*)a;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    if (self->packAccessor) return;
+    self->numericValuesAccessor=grib_find_accessor(h,self->numericValues);
+    self->packAccessor=grib_find_accessor(h,self->pack);
+    self->numberOfSubsetsAccessor=grib_find_accessor(h,self->numberOfSubsets);
+    self->subsetAccessor=grib_find_accessor(h,self->subset);
+}
+
+static void init(grib_accessor* a, const long len , grib_arguments* arg )
+{
+    int n=0;
+    grib_accessor_bufr_extract_subsets *self =(grib_accessor_bufr_extract_subsets*)a;
+
+    a->length=0;
+    self->numericValues = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+    self->pack = 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->subset = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+    a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
+}
+
+static int get_native_type(grib_accessor* a)
+{
+    return GRIB_TYPE_LONG;
+}
+
+#define PROCESS_DECODE     0
+#define PROCESS_NEW_DATA   1
+#define PROCESS_ENCODE     2
+
+static int pack_long(grib_accessor* a, const long* val, size_t *len)
+{
+    int err=0;
+    grib_accessor_bufr_extract_subsets *self =(grib_accessor_bufr_extract_subsets*)a;
+    size_t l=1;
+    long v[1];
+
+    get_accessors(a);
+
+    v[0]=1;
+    err=grib_pack_long(self->packAccessor,v,&l);
+    if (err) return err;
+    err=grib_unpack_long(self->subsetAccessor,v,&l);
+    if (err) return err;
+
+    /* this does not work at the moment, we need to fix it */
+    /* err=accessor_bufr_data_array_process_elements(self->numericValuesAccessor,PROCESS_ENCODE,v[0],0,0); */
+    /* v[0]=1; */
+    /* err=grib_pack_long(self->numberOfSubsetsAccessor,v,&l); */
+    /* if (err) return err; */
+    /* err=accessor_bufr_data_array_create_keys(self->numericValuesAccessor,extractSubset,0,0); */
+    return err;
+}
diff --git a/src/grib_accessor_class_bufr_group.c b/src/grib_accessor_class_bufr_group.c
index d53f80c..e6c26f9 100644
--- a/src/grib_accessor_class_bufr_group.c
+++ b/src/grib_accessor_class_bufr_group.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -16,7 +16,7 @@
    START_CLASS_DEF
    CLASS      = accessor
    SUPER      = grib_accessor_class_variable
-   IMPLEMENTS = init;dump
+   IMPLEMENTS = init;dump;next
    END_CLASS_DEF
 
  */
@@ -34,6 +34,7 @@ or edit "accessor.class" and rerun ./make_class.pl
 static void dump(grib_accessor*, grib_dumper*);
 static void init(grib_accessor*,const long, grib_arguments* );
 static void init_class(grib_accessor_class*);
+static grib_accessor* next(grib_accessor*, int);
 
 typedef struct grib_accessor_bufr_group {
     grib_accessor          att;
@@ -82,11 +83,12 @@ static grib_accessor_class _grib_accessor_class_bufr_group = {
     0,            /* preferred_size   */
     0,                    /* resize   */
     0,      /* nearest_smaller_value */
-    0,                       /* next accessor    */
+    &next,                       /* next accessor    */
     0,                    /* compare vs. another accessor   */
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -120,23 +122,36 @@ static void init_class(grib_accessor_class* c)
 	c->preferred_size	=	(*(c->super))->preferred_size;
 	c->resize	=	(*(c->super))->resize;
 	c->nearest_smaller_value	=	(*(c->super))->nearest_smaller_value;
-	c->next	=	(*(c->super))->next;
 	c->compare	=	(*(c->super))->compare;
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
 
-#define MAX_bufr_group_STRING_LENGTH 255
-
 static void init(grib_accessor* a, const long length , grib_arguments* args )
 {
 }
 
 static void dump(grib_accessor* a, grib_dumper* dumper)
 {
-  grib_dump_section(dumper,a,a->sub_section->block);
+    grib_dump_section(dumper,a,a->sub_section->block);
 }
 
+static grib_accessor* next(grib_accessor* a,int explore)
+{
+    grib_accessor* next=NULL;
+    if (explore) {
+        next=a->sub_section->block->first;
+        if (!next) next=a->next;
+    } else {
+        next=a->next;
+    }
+    if (!next) {
+        if (a->parent->owner)
+            next=a->parent->owner->cclass->next(a->parent->owner,0);
+    }
+    return next;
+}
diff --git a/src/grib_accessor_class_bufr_has_delayed_replication.c b/src/grib_accessor_class_bufr_has_delayed_replication.c
index 7cb77cc..fc33bb9 100644
--- a/src/grib_accessor_class_bufr_has_delayed_replication.c
+++ b/src/grib_accessor_class_bufr_has_delayed_replication.c
@@ -1,5 +1,5 @@
 /*
-* Copyright 2005-2015 ECMWF.
+* Copyright 2005-2016 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.
@@ -91,6 +91,7 @@ static grib_accessor_class _grib_accessor_class_bufr_has_delayed_replication = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -127,57 +128,57 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
 
 static void init(grib_accessor* a, const long len , grib_arguments* args )
 {
-  grib_accessor_bufr_has_delayed_replication* self = (grib_accessor_bufr_has_delayed_replication*)a;
-  int n=0;
-  self->expandedDescriptors=grib_arguments_get_name(a->parent->h,args,n++);
-  a->length = 0;
-  a->flags=GRIB_ACCESSOR_FLAG_HIDDEN;
+    grib_accessor_bufr_has_delayed_replication* self = (grib_accessor_bufr_has_delayed_replication*)a;
+    int n=0;
+    self->expandedDescriptors=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+    a->length = 0;
+    a->flags=GRIB_ACCESSOR_FLAG_HIDDEN;
 }
 
-static int  get_native_type(grib_accessor* a){
-  return GRIB_TYPE_LONG;
+static int  get_native_type(grib_accessor* a)
+{
+    return GRIB_TYPE_LONG;
 }
 
-static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
+static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
-  grib_accessor_bufr_has_delayed_replication* self = (grib_accessor_bufr_has_delayed_replication*)a;
-  size_t size=0,i=0;
-  long* descriptors=0;
-  int err=0;
-  long F;
-  grib_context* c=a->parent->h->context;
-
-  err=grib_get_size(a->parent->h,self->expandedDescriptors,&size);
-  if (err) return err;
-
-  descriptors=(long*)grib_context_malloc_clear(c,sizeof(long)*size);
-
-  err=grib_get_long_array(a->parent->h,self->expandedDescriptors,descriptors,&size);
-  if (err) return err;
-
-  *val=0;
-  for (i=0;i<size;i++) {
-    F=descriptors[i]/100000;
-    if (F==1) {
-      *val=1;
-      break;
+    grib_accessor_bufr_has_delayed_replication* self = (grib_accessor_bufr_has_delayed_replication*)a;
+    size_t size=0,i=0;
+    long* descriptors=0;
+    int err=0;
+    long F;
+    grib_context* c=a->context;
+
+    err=grib_get_size(grib_handle_of_accessor(a),self->expandedDescriptors,&size);
+    if (err) return err;
+
+    descriptors=(long*)grib_context_malloc_clear(c,sizeof(long)*size);
+
+    err=grib_get_long_array(grib_handle_of_accessor(a),self->expandedDescriptors,descriptors,&size);
+    if (err) return err;
+
+    *val=0;
+    for (i=0;i<size;i++) {
+        F=descriptors[i]/100000;
+        if (F==1) {
+            *val=1;
+            break;
+        }
     }
-  }
-  grib_context_free(c,descriptors);
+    grib_context_free(c,descriptors);
 
-  return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
 
-
 static int value_count(grib_accessor* a,long* rlen)
 {
-  *rlen=1;
-  return 0;
+    *rlen=1;
+    return 0;
 }
-
diff --git a/src/grib_accessor_class_bufr_string_values.c b/src/grib_accessor_class_bufr_string_values.c
new file mode 100644
index 0000000..630c336
--- /dev/null
+++ b/src/grib_accessor_class_bufr_string_values.c
@@ -0,0 +1,226 @@
+/*
+* Copyright 2005-2016 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.
+*/
+
+/* Sequences and replication (not delayed) are resolved in this class.
+   Number of elements to which a delayed replication applies are recomputed to
+   take account of the expansion.
+   Expanded descriptors cannot contain sequences and only delayed replication
+   can appear
+*/
+
+#include "grib_api_internal.h"
+/*
+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 = init;dump;destroy
+IMPLEMENTS = value_count
+MEMBERS    = const char* dataAccessorName
+MEMBERS    = grib_accessor* dataAccessor
+
+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 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*);
+static void destroy(grib_context*,grib_accessor*);
+static void dump(grib_accessor*, grib_dumper*);
+static void init(grib_accessor*,const long, grib_arguments* );
+static void init_class(grib_accessor_class*);
+
+typedef struct grib_accessor_bufr_string_values {
+    grib_accessor          att;
+/* Members defined in gen */
+/* Members defined in ascii */
+/* Members defined in bufr_string_values */
+	const char* dataAccessorName;
+	grib_accessor* dataAccessor;
+} grib_accessor_bufr_string_values;
+
+extern grib_accessor_class* grib_accessor_class_ascii;
+
+static grib_accessor_class _grib_accessor_class_bufr_string_values = {
+    &grib_accessor_class_ascii,                      /* super                     */
+    "bufr_string_values",                      /* name                      */
+    sizeof(grib_accessor_bufr_string_values),  /* size                      */
+    0,                           /* inited */
+    &init_class,                 /* init_class */
+    &init,                       /* init                      */
+    0,                  /* post_init                      */
+    &destroy,                    /* free mem                       */
+    &dump,                       /* describes himself         */
+    0,                /* get length of section     */
+    0,              /* get length of string      */
+    &value_count,                /* get number of values      */
+    0,                 /* get number of bytes      */
+    0,                /* get offset to bytes           */
+    0,            /* get native type               */
+    0,                /* get sub_section                */
+    0,               /* grib_pack procedures long      */
+    0,                 /* grib_pack procedures long      */
+    0,                  /* grib_pack procedures long      */
+    0,                /* grib_unpack procedures long    */
+    0,                /* grib_pack procedures double    */
+    0,              /* grib_unpack procedures double  */
+    &pack_string,                /* grib_pack procedures string    */
+    &unpack_string,              /* grib_unpack procedures string  */
+    &pack_string_array,          /* grib_pack array procedures string    */
+    &unpack_string_array,        /* grib_unpack array procedures string  */
+    0,                 /* grib_pack procedures bytes     */
+    0,               /* grib_unpack procedures 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          */
+    0,     /* unpack a subarray         */
+    0,              		/* clear          */
+    0,               		/* clone accessor          */
+};
+
+
+grib_accessor_class* grib_accessor_class_bufr_string_values = &_grib_accessor_class_bufr_string_values;
+
+
+static void init_class(grib_accessor_class* c)
+{
+	c->next_offset	=	(*(c->super))->next_offset;
+	c->string_length	=	(*(c->super))->string_length;
+	c->byte_count	=	(*(c->super))->byte_count;
+	c->byte_offset	=	(*(c->super))->byte_offset;
+	c->get_native_type	=	(*(c->super))->get_native_type;
+	c->sub_section	=	(*(c->super))->sub_section;
+	c->pack_missing	=	(*(c->super))->pack_missing;
+	c->is_missing	=	(*(c->super))->is_missing;
+	c->pack_long	=	(*(c->super))->pack_long;
+	c->unpack_long	=	(*(c->super))->unpack_long;
+	c->pack_double	=	(*(c->super))->pack_double;
+	c->unpack_double	=	(*(c->super))->unpack_double;
+	c->pack_bytes	=	(*(c->super))->pack_bytes;
+	c->unpack_bytes	=	(*(c->super))->unpack_bytes;
+	c->pack_expression	=	(*(c->super))->pack_expression;
+	c->notify_change	=	(*(c->super))->notify_change;
+	c->update_size	=	(*(c->super))->update_size;
+	c->preferred_size	=	(*(c->super))->preferred_size;
+	c->resize	=	(*(c->super))->resize;
+	c->nearest_smaller_value	=	(*(c->super))->nearest_smaller_value;
+	c->next	=	(*(c->super))->next;
+	c->compare	=	(*(c->super))->compare;
+	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
+	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
+	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
+}
+
+/* END_CLASS_IMP */
+
+static void init(grib_accessor* a, const long len , grib_arguments* args )
+{
+    grib_accessor_bufr_string_values* self = (grib_accessor_bufr_string_values*)a;
+    int n=0;
+    self->dataAccessorName=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+    self->dataAccessor=NULL;
+    a->length = 0;
+    a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
+}
+
+static void dump(grib_accessor* a, grib_dumper* dumper)
+{
+    grib_dump_string_array(dumper,a,NULL);
+}
+
+static grib_accessor* get_accessor(grib_accessor* a)
+{
+    grib_accessor_bufr_string_values* self = (grib_accessor_bufr_string_values*)a;
+    if (!self->dataAccessor) {
+        self->dataAccessor=grib_find_accessor(grib_handle_of_accessor(a),self->dataAccessorName);
+    }
+    return self->dataAccessor;
+}
+
+static int unpack_string_array (grib_accessor* a, char** buffer, size_t *len)
+{
+    grib_accessor* data=0;
+    grib_context* c=a->context;
+    grib_vsarray* stringValues=NULL;
+    long l=0,n=0,tl;
+    size_t i,j;
+    /*char buf[25]={0,};*/
+    char** b=buffer;
+
+    data=get_accessor(a);
+    if (!data) return GRIB_NOT_FOUND;
+
+    stringValues=accessor_bufr_data_array_get_stringValues(data);
+
+    n=grib_vsarray_used_size(stringValues);
+
+    tl=0;
+    for (j=0;j<n;j++) {
+        l=grib_sarray_used_size(stringValues->v[j]);
+        tl+=l;
+
+        if (tl>*len) return GRIB_ARRAY_TOO_SMALL;
+
+        for (i=0;i<l;i++) {
+            *(b++)=grib_context_strdup(c,stringValues->v[j]->v[i]);
+        }
+    }
+    *len=tl;
+
+    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);
+    return grib_value_count(descriptors,rlen);
+}
+
+static void destroy(grib_context* c,grib_accessor* a)
+{
+}
diff --git a/src/grib_accessor_class_bufrdc_expanded_descriptors.c b/src/grib_accessor_class_bufrdc_expanded_descriptors.c
index a8b597c..80dee5d 100644
--- a/src/grib_accessor_class_bufrdc_expanded_descriptors.c
+++ b/src/grib_accessor_class_bufrdc_expanded_descriptors.c
@@ -1,5 +1,5 @@
 /*
-* Copyright 2005-2015 ECMWF.
+* Copyright 2005-2016 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.
@@ -9,10 +9,10 @@
 */
 
 /* Sequences and replication (not delayed) are resolved in this class.
-Number of elements to which a delayed replication applies are recomputed to
-take account of the expansion. 
-expanded descriptors cannot contain sequences and only delayed replication
-can appear
+   Number of elements to which a delayed replication applies are recomputed to
+   take account of the expansion.
+   Expanded descriptors cannot contain sequences and only delayed replication
+   can appear
 */
 
 #include "grib_api_internal.h"
@@ -102,6 +102,7 @@ static grib_accessor_class _grib_accessor_class_bufrdc_expanded_descriptors = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -137,95 +138,97 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
 
 static void init(grib_accessor* a, const long len , grib_arguments* args )
 {
-  grib_accessor_bufrdc_expanded_descriptors* self = (grib_accessor_bufrdc_expanded_descriptors*)a;
-  int n=0;
-  self->expandedDescriptors=grib_arguments_get_name(a->parent->h,args,n++);
-  self->expandedDescriptorsAccessor=0;
-  a->length = 0;
-  a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
+    grib_accessor_bufrdc_expanded_descriptors* self = (grib_accessor_bufrdc_expanded_descriptors*)a;
+    int n=0;
+    self->expandedDescriptors=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+    self->expandedDescriptorsAccessor=0;
+    a->length = 0;
+    a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
 }
 
 static void dump(grib_accessor* a, grib_dumper* dumper)
 {
-  grib_dump_long(dumper,a,NULL);
+    grib_dump_long(dumper,a,NULL);
 }
 
-static grib_accessor* get_accessor(grib_accessor* a) {
-  grib_accessor_bufrdc_expanded_descriptors* self = (grib_accessor_bufrdc_expanded_descriptors*)a;
-  if (!self->expandedDescriptorsAccessor) {
-    self->expandedDescriptorsAccessor=grib_find_accessor(a->parent->h,self->expandedDescriptors);
-  }
-  return self->expandedDescriptorsAccessor;
+static grib_accessor* get_accessor(grib_accessor* a)
+{
+    grib_accessor_bufrdc_expanded_descriptors* self = (grib_accessor_bufrdc_expanded_descriptors*)a;
+    if (!self->expandedDescriptorsAccessor) {
+        self->expandedDescriptorsAccessor=grib_find_accessor(grib_handle_of_accessor(a),self->expandedDescriptors);
+    }
+    return self->expandedDescriptorsAccessor;
 }
 
-static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
+static int unpack_long   (grib_accessor* a, long* val, size_t *len)
 {
-  grib_accessor* descriptors=0;
-  size_t rlen=0,l;
-  long lenall=0;
-  size_t i;
-  long* v=0;
-  grib_context* c=a->parent->h->context;
-
-  descriptors=get_accessor(a);
-  if (!descriptors) return GRIB_NOT_FOUND;
-
-  grib_value_count(a,&lenall);
-  v=(long*)grib_context_malloc_clear(c,sizeof(long)*lenall);
-  l=lenall;
-  grib_unpack_long(descriptors,v,&l);
-
-  rlen=0;
-  for (i=0;i<l;i++) {
-    if ((v[i] < 100000 || v[i] > 221999 ) )
-      val[rlen++]=v[i];
-  }
-  *len=rlen;
-
-  return GRIB_SUCCESS;
+    grib_accessor* descriptors=0;
+    size_t rlen=0,l;
+    long lenall=0;
+    size_t i;
+    long* v=0;
+    grib_context* c=a->context;
+
+    descriptors=get_accessor(a);
+    if (!descriptors) return GRIB_NOT_FOUND;
+
+    grib_value_count(a,&lenall);
+    v=(long*)grib_context_malloc_clear(c,sizeof(long)*lenall);
+    l=lenall;
+    grib_unpack_long(descriptors,v,&l);
+
+    rlen=0;
+    for (i=0;i<l;i++) {
+        if ((v[i] < 100000 || v[i] > 221999 ) )
+            val[rlen++]=v[i];
+    }
+    *len=rlen;
+
+    return GRIB_SUCCESS;
 }
 
 static int unpack_string_array (grib_accessor* a, char** buffer, size_t *len)
 {
-  grib_accessor* descriptors=0;
-  grib_context* c=a->parent->h->context;
-  long l=0;
-  size_t size,i;
-  char buf[25]={0,};
-  long* v=0;
-
-  descriptors=get_accessor(a);
-  if (!descriptors) return GRIB_NOT_FOUND;
-
-  value_count(descriptors,&l);
-  if (l>*len) return GRIB_ARRAY_TOO_SMALL;
-
-  v=(long*)grib_context_malloc_clear(c,sizeof(long)*l);
-  size=l;
-  unpack_long(a,v,&size);
-
-  for (i=0;i<size;i++) {
-    sprintf(buf,"%06ld",v[i]);
-    buffer[i]=grib_context_strdup(c,buf);
-  }
-  *len=l;
-
-  return GRIB_SUCCESS;
+    grib_accessor* descriptors=0;
+    grib_context* c=a->context;
+    long l=0;
+    size_t size,i;
+    char buf[25]={0,};
+    long* v=0;
+
+    descriptors=get_accessor(a);
+    if (!descriptors) return GRIB_NOT_FOUND;
+
+    value_count(descriptors,&l);
+    if (l>*len) return GRIB_ARRAY_TOO_SMALL;
+
+    v=(long*)grib_context_malloc_clear(c,sizeof(long)*l);
+    size=l;
+    unpack_long(a,v,&size);
+
+    for (i=0;i<size;i++) {
+        sprintf(buf,"%06ld",v[i]);
+        buffer[i]=grib_context_strdup(c,buf);
+    }
+    *len=l;
+
+    return GRIB_SUCCESS;
 }
 
-
 static int value_count(grib_accessor* a,long* rlen)
 {
-  grib_accessor* descriptors=get_accessor(a);
+    grib_accessor* descriptors=get_accessor(a);
 
-  return grib_value_count(descriptors,rlen);
+    return grib_value_count(descriptors,rlen);
 }
 
-static void destroy(grib_context* c,grib_accessor* a) {
+static void destroy(grib_context* c,grib_accessor* a)
+{
 }
diff --git a/src/grib_accessor_class_bytes.c b/src/grib_accessor_class_bytes.c
index 086906b..cf6aeaa 100644
--- a/src/grib_accessor_class_bytes.c
+++ b/src/grib_accessor_class_bytes.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -85,6 +85,7 @@ static grib_accessor_class _grib_accessor_class_bytes = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -121,6 +122,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -160,7 +162,7 @@ static int unpack_string(grib_accessor *a , char*  v, size_t *len){
 	  return GRIB_ARRAY_TOO_SMALL;
   }
   
-  p  = a->parent->h->buffer->data + grib_byte_offset(a);
+  p  = grib_handle_of_accessor(a)->buffer->data + grib_byte_offset(a);
   
   for (i = 0; i < length; i++)  {
     sprintf (s,"%02x", *(p++));
diff --git a/src/grib_accessor_class_change_scanning_direction.c b/src/grib_accessor_class_change_scanning_direction.c
index c788fe6..32bb2fa 100644
--- a/src/grib_accessor_class_change_scanning_direction.c
+++ b/src/grib_accessor_class_change_scanning_direction.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -104,6 +104,7 @@ static grib_accessor_class _grib_accessor_class_change_scanning_direction = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -141,6 +142,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -150,14 +152,14 @@ 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(a->parent->h,args,n++);
-    self->Ni=grib_arguments_get_name(a->parent->h,args,n++);
-    self->Nj=grib_arguments_get_name(a->parent->h,args,n++);
-    self->i_scans_negatively=grib_arguments_get_name(a->parent->h,args,n++);
-    self->j_scans_positively=grib_arguments_get_name(a->parent->h,args,n++);
-    self->first=grib_arguments_get_name(a->parent->h,args,n++);
-    self->last=grib_arguments_get_name(a->parent->h,args,n++);
-    self->axis=grib_arguments_get_name(a->parent->h,args,n++);
+    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++);
 
     a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
     a->length = 0;
@@ -175,8 +177,8 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
     size_t size=0;
     double* values=NULL;
     grib_accessor_change_scanning_direction* self= (grib_accessor_change_scanning_direction*)a;
-    grib_context* c=a->parent->h->context;
-    grib_handle* h=a->parent->h;
+    grib_context* c=a->context;
+    grib_handle* h=grib_handle_of_accessor(a);
 
     if (*val==0) return 0;
 
diff --git a/src/grib_accessor_class_check_internal_version.c b/src/grib_accessor_class_check_internal_version.c
new file mode 100644
index 0000000..dba4209
--- /dev/null
+++ b/src/grib_accessor_class_check_internal_version.c
@@ -0,0 +1,166 @@
+/*
+ * Copyright 2005-2016 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_ascii
+   IMPLEMENTS = value_count;string_length
+   IMPLEMENTS = init
+   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 size_t string_length(grib_accessor*);
+static int value_count(grib_accessor*,long*);
+static void init(grib_accessor*,const long, grib_arguments* );
+static void init_class(grib_accessor_class*);
+
+typedef struct grib_accessor_check_internal_version {
+    grib_accessor          att;
+/* Members defined in gen */
+/* Members defined in ascii */
+/* Members defined in check_internal_version */
+} grib_accessor_check_internal_version;
+
+extern grib_accessor_class* grib_accessor_class_ascii;
+
+static grib_accessor_class _grib_accessor_class_check_internal_version = {
+    &grib_accessor_class_ascii,                      /* super                     */
+    "check_internal_version",                      /* name                      */
+    sizeof(grib_accessor_check_internal_version),  /* size                      */
+    0,                           /* inited */
+    &init_class,                 /* init_class */
+    &init,                       /* init                      */
+    0,                  /* post_init                      */
+    0,                    /* free mem                       */
+    0,                       /* describes himself         */
+    0,                /* get length of section     */
+    &string_length,              /* get length of string      */
+    &value_count,                /* get number of values      */
+    0,                 /* get number of bytes      */
+    0,                /* get offset to bytes           */
+    0,            /* get native type               */
+    0,                /* get sub_section                */
+    0,               /* grib_pack procedures long      */
+    0,                 /* grib_pack procedures long      */
+    0,                  /* grib_pack procedures long      */
+    0,                /* grib_unpack procedures long    */
+    0,                /* grib_pack procedures double    */
+    0,              /* grib_unpack procedures double  */
+    0,                /* grib_pack procedures string    */
+    0,              /* grib_unpack procedures string  */
+    0,          /* grib_pack array procedures string    */
+    0,        /* grib_unpack array procedures string  */
+    0,                 /* grib_pack procedures bytes     */
+    0,               /* grib_unpack procedures 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          */
+    0,     /* unpack a subarray         */
+    0,              		/* clear          */
+    0,               		/* clone accessor          */
+};
+
+
+grib_accessor_class* grib_accessor_class_check_internal_version = &_grib_accessor_class_check_internal_version;
+
+
+static void init_class(grib_accessor_class* c)
+{
+	c->dump	=	(*(c->super))->dump;
+	c->next_offset	=	(*(c->super))->next_offset;
+	c->byte_count	=	(*(c->super))->byte_count;
+	c->byte_offset	=	(*(c->super))->byte_offset;
+	c->get_native_type	=	(*(c->super))->get_native_type;
+	c->sub_section	=	(*(c->super))->sub_section;
+	c->pack_missing	=	(*(c->super))->pack_missing;
+	c->is_missing	=	(*(c->super))->is_missing;
+	c->pack_long	=	(*(c->super))->pack_long;
+	c->unpack_long	=	(*(c->super))->unpack_long;
+	c->pack_double	=	(*(c->super))->pack_double;
+	c->unpack_double	=	(*(c->super))->unpack_double;
+	c->pack_string	=	(*(c->super))->pack_string;
+	c->unpack_string	=	(*(c->super))->unpack_string;
+	c->pack_string_array	=	(*(c->super))->pack_string_array;
+	c->unpack_string_array	=	(*(c->super))->unpack_string_array;
+	c->pack_bytes	=	(*(c->super))->pack_bytes;
+	c->unpack_bytes	=	(*(c->super))->unpack_bytes;
+	c->pack_expression	=	(*(c->super))->pack_expression;
+	c->notify_change	=	(*(c->super))->notify_change;
+	c->update_size	=	(*(c->super))->update_size;
+	c->preferred_size	=	(*(c->super))->preferred_size;
+	c->resize	=	(*(c->super))->resize;
+	c->nearest_smaller_value	=	(*(c->super))->nearest_smaller_value;
+	c->next	=	(*(c->super))->next;
+	c->compare	=	(*(c->super))->compare;
+	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
+	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
+	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
+}
+
+/* END_CLASS_IMP */
+
+/* This is the internal engine version number */
+/* We check this against the version number found in the definitions boot.def file */
+/* See the key "internalVersion"  */
+#define LATEST_ENGINE_VERSION 30
+
+static void init(grib_accessor* a, const long l, grib_arguments* args)
+{
+    /* Check version of definition files is compatible with the engine */
+    int err = 0;
+    long defs_file_version = 0;
+    grib_handle* h = grib_handle_of_accessor(a);
+    const char* s_defn_version = grib_arguments_get_name(h, args, 0);
+    Assert(s_defn_version);
+
+    err = grib_get_long_internal(h, s_defn_version, &defs_file_version);
+    if (!err) {
+        if (defs_file_version > LATEST_ENGINE_VERSION) {
+            grib_context_log(h->context, GRIB_LOG_FATAL,
+                    "Definition files version (%d) is greater than engine version (%d)!\n"
+                    "                    " /* indent for 2nd line */
+                    "These definition files are for a later version of the ecCodes engine.",
+                    defs_file_version, LATEST_ENGINE_VERSION);
+        }
+    }
+}
+
+static int value_count(grib_accessor* a,long* count)
+{
+    *count=1;
+    return 0;
+}
+
+static size_t string_length(grib_accessor* a)
+{
+    return 255;
+}
diff --git a/src/grib_accessor_class_codeflag.c b/src/grib_accessor_class_codeflag.c
index 6eb0e37..707e09a 100644
--- a/src/grib_accessor_class_codeflag.c
+++ b/src/grib_accessor_class_codeflag.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -94,6 +94,7 @@ static grib_accessor_class _grib_accessor_class_codeflag = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -131,6 +132,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -139,7 +141,7 @@ static void init  (grib_accessor* a,const long len, grib_arguments* param)
 {
     grib_accessor_codeflag* self = (grib_accessor_codeflag*)a;
     a->length = len;
-    self->tablename = grib_arguments_get_string(a->parent->h,param,0);
+    self->tablename = grib_arguments_get_string(grib_handle_of_accessor(a),param,0);
     Assert(a->length>=0);
 }
 
@@ -160,10 +162,10 @@ static int grib_get_codeflag(grib_accessor* a, long code, char* codename)
     size_t i =0;
     int j =0;
 
-    grib_recompose_name(a->parent->h,NULL, self->tablename, fname,1);
+    grib_recompose_name(grib_handle_of_accessor(a),NULL, self->tablename, fname,1);
 
-    if ((filename=grib_context_full_defs_path(a->parent->h->context,fname))==NULL) {
-        grib_context_log(a->parent->h->context,GRIB_LOG_WARNING,"Cannot open flag table %s",filename);
+    if ((filename=grib_context_full_defs_path(a->context,fname))==NULL) {
+        grib_context_log(a->context,GRIB_LOG_WARNING,"Cannot open flag table %s",filename);
         strcpy(codename, "Cannot open flag table");
         return GRIB_FILE_NOT_FOUND;
     }
@@ -172,7 +174,7 @@ static int grib_get_codeflag(grib_accessor* a, long code, char* codename)
 
     if (!f)
     {
-        grib_context_log(a->parent->h->context,(GRIB_LOG_WARNING)|(GRIB_LOG_PERROR),"Cannot open flag table %s",filename);
+        grib_context_log(a->context,(GRIB_LOG_WARNING)|(GRIB_LOG_PERROR),"Cannot open flag table %s",filename);
         strcpy(codename, "Cannot open flag table");
         return GRIB_FILE_NOT_FOUND;
     }
@@ -235,7 +237,7 @@ static void dump(grib_accessor* a, grib_dumper* dumper)
 
     size_t llen = 1;
 
-    grib_recompose_name(a->parent->h,NULL, self->tablename, fname,1);
+    grib_recompose_name(grib_handle_of_accessor(a),NULL, self->tablename, fname,1);
     grib_unpack_long(a, &v, &llen);
 
     grib_get_codeflag(a, v, flagname);
diff --git a/src/grib_accessor_class_codetable.c b/src/grib_accessor_class_codetable.c
index 878da70..23757bc 100644
--- a/src/grib_accessor_class_codetable.c
+++ b/src/grib_accessor_class_codetable.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -123,6 +123,7 @@ static grib_accessor_class _grib_accessor_class_codetable = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -155,6 +156,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -166,9 +168,9 @@ static void init(grib_accessor* a, const long len, grib_arguments* params) {
     grib_accessor_codetable* self  = (grib_accessor_codetable*)a;
     grib_action* act=(grib_action*)(a->creator);
 
-    self->tablename = grib_arguments_get_string(a->parent->h,params,n++);
-    self->masterDir = grib_arguments_get_name(a->parent->h,params,n++);
-    self->localDir = grib_arguments_get_name(a->parent->h,params,n++);
+    self->tablename = grib_arguments_get_string(grib_handle_of_accessor(a),params,n++);
+    self->masterDir = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->localDir = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
 
     /*if (a->flags & GRIB_ACCESSOR_FLAG_STRING_TYPE)
     printf("-------- %s type string (%ld)\n",a->name,a->flags);*/
@@ -176,7 +178,7 @@ static void init(grib_accessor* a, const long len, grib_arguments* params) {
     if (a->flags & GRIB_ACCESSOR_FLAG_TRANSIENT) {
         a->length = 0;
         if (!a->vvalue)
-            a->vvalue = (grib_virtual_value*)grib_context_malloc_clear(a->parent->h->context,sizeof(grib_virtual_value));
+            a->vvalue = (grib_virtual_value*)grib_context_malloc_clear(a->context,sizeof(grib_virtual_value));
         a->vvalue->type=grib_accessor_get_native_type(a);
         a->vvalue->length=len;
         if (act->default_value!=NULL) {
@@ -186,24 +188,24 @@ static void init(grib_accessor* a, const long len, grib_arguments* params) {
             int ret=0;
             double d;
             char tmp[1024];
-            grib_expression* expression=grib_arguments_get_expression(a->parent->h,act->default_value,0);
-            int type = grib_expression_native_type(a->parent->h,expression);
+            grib_expression* expression=grib_arguments_get_expression(grib_handle_of_accessor(a),act->default_value,0);
+            int type = grib_expression_native_type(grib_handle_of_accessor(a),expression);
             switch(type) {
             case GRIB_TYPE_DOUBLE:
-                grib_expression_evaluate_double(a->parent->h,expression,&d);
+                grib_expression_evaluate_double(grib_handle_of_accessor(a),expression,&d);
                 grib_pack_double(a,&d,&len);
                 break;
 
             case GRIB_TYPE_LONG:
-                grib_expression_evaluate_long(a->parent->h,expression,&l);
+                grib_expression_evaluate_long(grib_handle_of_accessor(a),expression,&l);
                 grib_pack_long(a,&l,&len);
                 break;
 
             default:
                 len = sizeof(tmp);
-                p = grib_expression_evaluate_string(a->parent->h,expression,tmp,&len,&ret);
+                p = grib_expression_evaluate_string(grib_handle_of_accessor(a),expression,tmp,&len,&ret);
                 if (ret != GRIB_SUCCESS) {
-                    grib_context_log(a->parent->h->context,GRIB_LOG_FATAL,
+                    grib_context_log(a->context,GRIB_LOG_FATAL,
                             "unable to evaluate %s as string",a->name);
                 }
                 len = strlen(p)+1;
@@ -223,6 +225,7 @@ static int str_eq(const char* a, const char* b)
     return 0;
 }
 
+#ifdef DEBUG
 static void dump_codetable(grib_codetable* atable)
 {
     grib_codetable* next = NULL;
@@ -235,7 +238,7 @@ static void dump_codetable(grib_codetable* atable)
         next = next->next;
     }
 }
-
+#endif
 static grib_codetable* load_table(grib_accessor_codetable* self)
 {
     size_t size = 0;
@@ -594,10 +597,10 @@ static int pack_string(grib_accessor* a, const char* buffer, size_t *len)
 
     typedef int (*cmpproc)(const char*, const char*);
 #ifndef ECCODES_ON_WINDOWS
-    cmpproc cmp = (a->flags | GRIB_ACCESSOR_FLAG_LOWERCASE) ? grib_strcasecmp : strcmp;
+    cmpproc cmp = (a->flags & GRIB_ACCESSOR_FLAG_LOWERCASE) ? grib_strcasecmp : strcmp;
 #else
     /* Microsoft Windows Visual Studio support */
-    cmpproc cmp = (a->flags | GRIB_ACCESSOR_FLAG_LOWERCASE) ? stricmp : strcmp;
+    cmpproc cmp = (a->flags & GRIB_ACCESSOR_FLAG_LOWERCASE) ? stricmp : strcmp;
 #endif
 
     if(!self->table) self->table = load_table(self);
@@ -607,7 +610,7 @@ static int pack_string(grib_accessor* a, const char* buffer, size_t *len)
         return GRIB_ENCODING_ERROR;
 
     if (a->set) {
-        int err=grib_set_string(a->parent->h,a->set,buffer,len);
+        int err=grib_set_string(grib_handle_of_accessor(a),a->set,buffer,len);
         if (err!=0) return err;
     }
 
@@ -625,24 +628,24 @@ static int pack_string(grib_accessor* a, const char* buffer, size_t *len)
             int ret=0;
             double d;
             char tmp[1024];
-            grib_expression* expression=grib_arguments_get_expression(a->parent->h,act->default_value,0);
-            int type = grib_expression_native_type(a->parent->h,expression);
+            grib_expression* expression=grib_arguments_get_expression(grib_handle_of_accessor(a),act->default_value,0);
+            int type = grib_expression_native_type(grib_handle_of_accessor(a),expression);
             switch(type) {
             case GRIB_TYPE_DOUBLE:
-                grib_expression_evaluate_double(a->parent->h,expression,&d);
+                grib_expression_evaluate_double(grib_handle_of_accessor(a),expression,&d);
                 grib_pack_double(a,&d,&len);
                 break;
 
             case GRIB_TYPE_LONG:
-                grib_expression_evaluate_long(a->parent->h,expression,&l);
+                grib_expression_evaluate_long(grib_handle_of_accessor(a),expression,&l);
                 grib_pack_long(a,&l,&len);
                 break;
 
             default:
                 len = sizeof(tmp);
-                p = grib_expression_evaluate_string(a->parent->h,expression,tmp,&len,&ret);
+                p = grib_expression_evaluate_string(grib_handle_of_accessor(a),expression,tmp,&len,&ret);
                 if (ret != GRIB_SUCCESS) {
-                    grib_context_log(a->parent->h->context,GRIB_LOG_FATAL,
+                    grib_context_log(a->context,GRIB_LOG_FATAL,
                             "unable to evaluate %s as string",a->name);
                     return ret;
                 }
@@ -665,13 +668,13 @@ static int pack_expression(grib_accessor* a, grib_expression *e){
     char tmp[1024];
 
     if (strcmp(e->cclass->name,"long")==0) {
-        ret=grib_expression_evaluate_long(a->parent->h,e,&lval);
+        ret=grib_expression_evaluate_long(grib_handle_of_accessor(a),e,&lval);
         ret = grib_pack_long(a,&lval,&len);
     } else {
         len = sizeof(tmp);
-        cval = grib_expression_evaluate_string(a->parent->h,e,tmp,&len,&ret);
+        cval = grib_expression_evaluate_string(grib_handle_of_accessor(a),e,tmp,&len,&ret);
         if (ret!=GRIB_SUCCESS) {
-            grib_context_log(a->parent->h->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.pack_expression: unable to evaluate string %s to be set in %s\n",grib_expression_get_name(e),a->name);
             return ret;
         }
         len = strlen(cval) + 1;
@@ -712,7 +715,7 @@ static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
 
     if(*len < rlen)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, " wrong size (%ld) for %s it contains %d values ",*len, a->name , rlen);
+        grib_context_log(a->context, GRIB_LOG_ERROR, " wrong size (%ld) for %s it contains %d values ",*len, a->name , rlen);
         *len = 0;
         return GRIB_ARRAY_TOO_SMALL;
     }
@@ -724,7 +727,7 @@ static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
     }
 
     for(i=0; i< rlen;i++){
-        val[i] = (long)grib_decode_unsigned_long(a->parent->h->buffer->data , &pos, self->nbytes*8);
+        val[i] = (long)grib_decode_unsigned_long(grib_handle_of_accessor(a)->buffer->data , &pos, self->nbytes*8);
     }
 
     *len = rlen;
diff --git a/src/grib_accessor_class_codetable_title.c b/src/grib_accessor_class_codetable_title.c
index 559b311..0968d4f 100644
--- a/src/grib_accessor_class_codetable_title.c
+++ b/src/grib_accessor_class_codetable_title.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -91,6 +91,7 @@ static grib_accessor_class _grib_accessor_class_codetable_title = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -128,6 +129,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -150,7 +152,7 @@ typedef struct grib_accessor_codetable {
 static void init(grib_accessor* a, const long len, grib_arguments* params) {
 	grib_accessor_codetable_title* self = (grib_accessor_codetable_title*)a;
 	int n=0;
-	self->codetable = grib_arguments_get_name(a->parent->h,params,n++);
+	self->codetable = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
 	a->length=0;
 	a->flags|= GRIB_ACCESSOR_FLAG_READ_ONLY;
 }
@@ -170,7 +172,7 @@ static int unpack_string (grib_accessor* a, char* buffer, size_t *len)
   int err = GRIB_SUCCESS;
   char tmp[1024];
   size_t l = 1024;
-  grib_accessor_codetable* ca=(grib_accessor_codetable*)grib_find_accessor(a->parent->h,self->codetable);
+  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)
     return err;
diff --git a/src/grib_accessor_class_codetable_units.c b/src/grib_accessor_class_codetable_units.c
index 40919ff..5a52091 100644
--- a/src/grib_accessor_class_codetable_units.c
+++ b/src/grib_accessor_class_codetable_units.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -91,6 +91,7 @@ static grib_accessor_class _grib_accessor_class_codetable_units = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -128,6 +129,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -150,7 +152,7 @@ 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(a->parent->h,params,n++);
+	self->codetable = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
 	a->length=0;
 	a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
 }
@@ -170,7 +172,7 @@ static int unpack_string (grib_accessor* a, char* buffer, size_t *len)
   int err = GRIB_SUCCESS;
   char tmp[1024];
   size_t l = 1024;
-  grib_accessor_codetable* ca=(grib_accessor_codetable*)grib_find_accessor(a->parent->h,self->codetable);
+  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)
     return err;
diff --git a/src/grib_accessor_class_concept.c b/src/grib_accessor_class_concept.c
index 8aef4a0..005cfe4 100644
--- a/src/grib_accessor_class_concept.c
+++ b/src/grib_accessor_class_concept.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -103,6 +103,7 @@ static grib_accessor_class _grib_accessor_class_concept = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -131,6 +132,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -154,6 +156,232 @@ static void dump(grib_accessor* a, grib_dumper* dumper)
     grib_dump_string(dumper,a,NULL);
 }
 
+static int concept_condition_expression_true(grib_handle* h,grib_concept_condition* c) {
+  long lval;
+  double dval;
+  long lres=0;
+  double dres=0.0;
+  const char *cval;
+  char buf[80];
+  char tmp[80];
+  size_t len = sizeof(buf);
+  size_t size=sizeof(tmp);
+  int ok = 0;
+  int err=0;
+  int type       = grib_expression_native_type(h,c->expression);
+
+  switch(type)
+  {
+    case GRIB_TYPE_LONG:
+      grib_expression_evaluate_long(h,c->expression,&lres);
+      ok =  (grib_get_long(h,c->name,&lval) == GRIB_SUCCESS) &&
+        (lval == lres);
+      break;
+
+    case GRIB_TYPE_DOUBLE:
+      grib_expression_evaluate_double(h,c->expression,&dres);
+      ok = (grib_get_double(h,c->name,&dval) == GRIB_SUCCESS) &&
+        (dval == dres);
+      break;
+
+    case GRIB_TYPE_STRING:
+      ok = (grib_get_string(h,c->name,buf,&len) == GRIB_SUCCESS) &&
+        ((cval = grib_expression_evaluate_string(h,c->expression,tmp,&size,&err)) != NULL) &&
+        (err==0) && (strcmp(buf,cval) == 0);
+      break;
+
+    default:
+      /* TODO: */
+      break;
+  }
+  return ok;
+}
+
+static int concept_condition_iarray_true(grib_handle* h,grib_concept_condition* c) {
+  long *val;
+  size_t size=0,i;
+  int ret;
+  int err=0;
+
+  err=grib_get_size(h,c->name,&size);
+  if (err==0 || size!=grib_iarray_used_size(c->iarray)) return 0;
+
+  val=(long*)grib_context_malloc_clear(h->context,sizeof(long)*size);
+
+  err=grib_get_long_array(h,c->name,val,&size);
+  if (err==0) return 0;
+
+  ret=1;
+  for (i=0;i<size;i++) {
+    if (val[i]!=c->iarray->v[i]) {
+      ret=0;
+      break;
+    }
+  }
+
+  return ret;
+}
+
+static int concept_condition_true(grib_handle* h,grib_concept_condition* c) {
+  if (c->expression==NULL) return concept_condition_iarray_true(h,c);
+  else return concept_condition_expression_true(h,c);
+}
+
+static const char* concept_evaluate(grib_accessor* a)
+{
+    int match = 0;
+    const char* best = 0;
+    /* const char* prev = 0; */
+    grib_concept_value*  c = action_concept_get_concept(a);
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    while(c)
+    {
+        grib_concept_condition* e = c->conditions;
+        int cnt = 0;
+        while(e)
+        {
+            if(!concept_condition_true(h,e)) break;
+            e = e->next;
+            cnt++;
+        }
+
+        if(e == NULL)
+        {
+            if(cnt >= match) {
+                /* prev  = (cnt > match) ? NULL : best; */
+                match = cnt;
+                best  = c->name;
+            }
+        }
+
+        c = c->next;
+    }
+
+    return best;
+}
+
+#define MAX_NUM_CONCEPT_VALUES 40
+
+int concept_conditions_expression_apply(grib_handle* h,grib_concept_condition* e,grib_values* values,grib_sarray* sa,int* n) {
+  long lres=0;
+  double dres=0.0;
+  int count=*n;
+  size_t size;
+  int err=0;
+
+  Assert(count<1024);
+  values[count].name = e->name;
+
+  values[count].type = grib_expression_native_type(h,e->expression);
+  switch(values[count].type)
+  {
+    case GRIB_TYPE_LONG:
+      grib_expression_evaluate_long(h,e->expression,&lres);
+      values[count].long_value = lres;
+      break;
+    case GRIB_TYPE_DOUBLE:
+      grib_expression_evaluate_double(h,e->expression,&dres);
+      values[count].double_value = dres;
+      break;
+    case GRIB_TYPE_STRING:
+      size = sizeof(sa->v[count]);
+      values[count].string_value = grib_expression_evaluate_string(h,e->expression,sa->v[count],&size,&err);
+      break;
+    default:
+      return GRIB_NOT_IMPLEMENTED;
+      break;
+  }
+  (*n)++;
+  return err;
+}
+
+int concept_conditions_iarray_apply(grib_handle* h,grib_concept_condition* c) {
+  size_t size=grib_iarray_used_size(c->iarray);
+  return grib_set_long_array(h,c->name,c->iarray->v,size);
+}
+
+static int concept_conditions_apply(grib_handle* h,grib_concept_condition* c,grib_values* values,grib_sarray* sa,int* n) {
+  if (c->expression==NULL) return concept_conditions_iarray_apply(h,c);
+  else return concept_conditions_expression_apply(h,c,values,sa,n);
+}
+
+static int
+cmpstringp(const void *p1, const void *p2)
+{
+    /* The actual arguments to this function are "pointers to
+       pointers to char", but strcmp(3) arguments are "pointers
+       to char", hence the following cast plus dereference */
+    return strcmp(* (char * const *) p1, * (char * const *) p2);
+}
+
+int grib_concept_apply(grib_accessor* a, const char* name)
+{
+    int err=0;
+    int count = 0;
+    grib_concept_condition* e=NULL;
+    grib_values values[1024];
+    grib_sarray* sa=NULL;
+    grib_concept_value* c=NULL;
+    grib_concept_value*  concepts = action_concept_get_concept(a);
+    grib_handle* h=grib_handle_of_accessor(a);
+    grib_action* act=a->creator;
+    int nofail=action_concept_get_nofail(a);
+
+    Assert(concepts!=NULL);
+
+    c=(grib_concept_value*)grib_trie_get(concepts->index,name);
+
+    if (!c) c=(grib_concept_value*)grib_trie_get(concepts->index,"default");
+
+    if (!c){
+        err= nofail ? GRIB_SUCCESS : GRIB_CONCEPT_NO_MATCH;
+        if (err) {
+            size_t i = 0, count = 0;
+            char* all_concept_vals[MAX_NUM_CONCEPT_VALUES] = {NULL,}; /* sorted array containing concept values */
+            grib_concept_value* pCon = concepts;
+
+            grib_context_log(h->context,GRIB_LOG_ERROR, "concept: no match for %s=%s", act->name,name);
+
+            /* Create a list of all possible values for this concept and sort it */
+            while (pCon) {
+                if (i >= MAX_NUM_CONCEPT_VALUES)
+                    break;
+                all_concept_vals[i++] = pCon->name;
+                pCon = pCon->next;
+            }
+            count = i;
+            /* Only print out all concepts if fewer than MAX_NUM_CONCEPT_VALUES.
+             * Printing out all values for concepts like paramId would be silly! */
+            if (count < MAX_NUM_CONCEPT_VALUES) {
+                fprintf(stderr, "Here are the possible values for concept %s:\n", act->name);
+                qsort(&all_concept_vals, count, sizeof(char*), cmpstringp);
+                for(i=0; i<count; ++i) {
+                    if (all_concept_vals[i]) {
+                        int print_it = 1;
+                        if (i>0 && strcmp(all_concept_vals[i], all_concept_vals[i-1]) == 0) {
+                            print_it = 0;  /* skip duplicate entries */
+                        }
+                        if (print_it) fprintf(stderr, "\t%s\n", all_concept_vals[i]);
+                    }
+                }
+            }
+        }
+        return err;
+    }
+    e = c->conditions;
+    sa=grib_sarray_new(h->context,10,10);
+    while(e)
+    {
+        concept_conditions_apply(h,e,values,sa,&count);
+        e = e->next;
+    }
+    grib_sarray_delete(h->context,sa);
+
+    if (count) err=grib_set_values(h,values,count);
+    return err;
+}
+
 static int pack_double(grib_accessor* a, const double* val, size_t *len)
 {
     return GRIB_NOT_IMPLEMENTED;
@@ -191,12 +419,12 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
 
 static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
-    /* TODO properly calling grib_concept_evaluate_long ! */
-    const char *p = grib_concept_evaluate(a->parent->h,a->creator);
+    /* TODO properly calling concept_evaluate_long ! */
+    const char *p = concept_evaluate(a);
 
     if(!p) {
         if (a->creator->defaultkey)
-            return grib_get_long_internal(a->parent->h,a->creator->defaultkey,val);
+            return grib_get_long_internal(grib_handle_of_accessor(a),a->creator->defaultkey,val);
 
         return GRIB_NOT_FOUND;
     }
@@ -227,11 +455,11 @@ static void destroy(grib_context* c,grib_accessor* a)
 static int unpack_string (grib_accessor* a, char* val, size_t *len)
 {
     size_t slen ;
-    const char *p = grib_concept_evaluate(a->parent->h,a->creator);
+    const char *p = concept_evaluate(a);
 
     if(!p) {
         if (a->creator->defaultkey)
-            return grib_get_string_internal(a->parent->h,a->creator->defaultkey,val,len);
+            return grib_get_string_internal(grib_handle_of_accessor(a),a->creator->defaultkey,val,len);
 
         return GRIB_NOT_FOUND;
     }
@@ -239,7 +467,7 @@ static int unpack_string (grib_accessor* a, char* val, size_t *len)
     slen = strlen(p) +1;
     if(*len < slen)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Variable unpack_string Wrong size for %s it is %d bytes big (len=%d)", a->name , slen ,*len);
+        grib_context_log(a->context, GRIB_LOG_ERROR, "Variable unpack_string Wrong size for %s it is %d bytes big (len=%d)", a->name , slen ,*len);
         *len = slen;
         return GRIB_BUFFER_TOO_SMALL;
     }
@@ -250,7 +478,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)
 {
-    return  grib_concept_apply(a->parent->h,a->creator,val);
+    return  grib_concept_apply(a,val);
 }
 
 static size_t string_length(grib_accessor* a)
@@ -285,8 +513,8 @@ static int compare(grib_accessor* a,grib_accessor* b)
 
     if (alen != blen) return GRIB_COUNT_MISMATCH;
 
-    aval=(char*)grib_context_malloc(a->parent->h->context,alen*sizeof(char));
-    bval=(char*)grib_context_malloc(b->parent->h->context,blen*sizeof(char));
+    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);
@@ -294,8 +522,9 @@ static int compare(grib_accessor* a,grib_accessor* b)
     retval = GRIB_SUCCESS;
     if (!aval || !bval || grib_inline_strcmp(aval,bval)) retval = GRIB_STRING_VALUE_MISMATCH;
 
-    grib_context_free(a->parent->h->context,aval);
-    grib_context_free(b->parent->h->context,bval);
+    grib_context_free(a->context,aval);
+    grib_context_free(b->context,bval);
 
     return retval;
 }
+
diff --git a/src/grib_accessor_class_constant.c b/src/grib_accessor_class_constant.c
index e9b08d8..f9cafd7 100644
--- a/src/grib_accessor_class_constant.c
+++ b/src/grib_accessor_class_constant.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -94,6 +94,7 @@ static grib_accessor_class _grib_accessor_class_constant = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -129,6 +130,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
diff --git a/src/grib_accessor_class_count_file.c b/src/grib_accessor_class_count_file.c
index d367c8f..14f91ad 100644
--- a/src/grib_accessor_class_count_file.c
+++ b/src/grib_accessor_class_count_file.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -87,6 +87,7 @@ static grib_accessor_class _grib_accessor_class_count_file = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -125,6 +126,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -137,7 +139,7 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 
 static int  unpack_long(grib_accessor* a, long* val, size_t *len)
 {
-  *val = a->parent->h->context->handle_file_count;
+  *val = a->context->handle_file_count;
   *len =1;
   return 0;
 }
diff --git a/src/grib_accessor_class_count_missing.c b/src/grib_accessor_class_count_missing.c
index c044d15..b0388a1 100644
--- a/src/grib_accessor_class_count_missing.c
+++ b/src/grib_accessor_class_count_missing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -92,6 +92,7 @@ static grib_accessor_class _grib_accessor_class_count_missing = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -129,6 +130,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -178,9 +180,9 @@ static void init(grib_accessor* a, const long len , grib_arguments* arg )
   grib_accessor_count_missing* self = (grib_accessor_count_missing*)a;
   a->length=0;
   a->flags|=GRIB_ACCESSOR_FLAG_READ_ONLY;
-  self->bitmap = grib_arguments_get_name(a->parent->h,arg,n++);
-  self->unusedBitsInBitmap = grib_arguments_get_name(a->parent->h,arg,n++);
-  self->numberOfDataPoints = grib_arguments_get_name(a->parent->h,arg,n++);
+  self->bitmap = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+  self->unusedBitsInBitmap = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+  self->numberOfDataPoints = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
 }
 
 static int used[] ={ 0,1,3,7,15,31,63,127,255};
@@ -194,8 +196,8 @@ static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
   long offset=0;
   long unusedBitsInBitmap=0;
   long numberOfDataPoints=0;
-  grib_handle* h=a->parent->h;
-  grib_accessor* bitmap=grib_find_accessor(a->parent->h,self->bitmap);
+  grib_handle* h=grib_handle_of_accessor(a);
+  grib_accessor* bitmap=grib_find_accessor(grib_handle_of_accessor(a),self->bitmap);
 
   *val=0;
   *len=1;
@@ -206,13 +208,13 @@ static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
 
   if (grib_get_long(h,self->unusedBitsInBitmap,&unusedBitsInBitmap) != GRIB_SUCCESS) { 
     if (grib_get_long(h,self->numberOfDataPoints,&numberOfDataPoints) != GRIB_SUCCESS) {
-		grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"unable to count missing values");
+		grib_context_log(a->context,GRIB_LOG_ERROR,"unable to count missing values");
 		return GRIB_INTERNAL_ERROR;
 	} 
 	unusedBitsInBitmap=size*8-numberOfDataPoints;
   }
 
-  p=a->parent->h->buffer->data+offset;
+  p=grib_handle_of_accessor(a)->buffer->data+offset;
 
   size-=unusedBitsInBitmap/8;
   unusedBitsInBitmap= unusedBitsInBitmap % 8;
diff --git a/src/grib_accessor_class_count_total.c b/src/grib_accessor_class_count_total.c
index bc2d24c..0f8c234 100644
--- a/src/grib_accessor_class_count_total.c
+++ b/src/grib_accessor_class_count_total.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -89,6 +89,7 @@ static grib_accessor_class _grib_accessor_class_count_total = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -127,6 +128,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -139,7 +141,7 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 
 static int  unpack_long(grib_accessor* a, long* val, size_t *len)
 {
-  *val = a->parent->h->context->handle_total_count;
+  *val = a->context->handle_total_count;
   *len =1;
   return 0;
 }
diff --git a/src/grib_accessor_class_data_2order_packing.c b/src/grib_accessor_class_data_2order_packing.c
index 128cae6..c8819ea 100644
--- a/src/grib_accessor_class_data_2order_packing.c
+++ b/src/grib_accessor_class_data_2order_packing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -143,6 +143,7 @@ static grib_accessor_class _grib_accessor_class_data_2order_packing = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -179,45 +180,47 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
 
 static void init(grib_accessor* a,const long v, grib_arguments* args)
 {
+    grib_handle* gh = grib_handle_of_accessor(a);
     grib_accessor_data_2order_packing *self =(grib_accessor_data_2order_packing*)a;
 
-    self->bits_per_value  = grib_arguments_get_name(a->parent->h,args,self->carg++);
+    self->bits_per_value  = grib_arguments_get_name(gh,args,self->carg++);
 
-    self->reference_value = grib_arguments_get_name(a->parent->h,args,self->carg++);
+    self->reference_value = grib_arguments_get_name(gh,args,self->carg++);
 
-    self->binary_scale_factor = grib_arguments_get_name(a->parent->h,args,self->carg++);
+    self->binary_scale_factor = grib_arguments_get_name(gh,args,self->carg++);
 
-    self->decimal_scale_factor = grib_arguments_get_name(a->parent->h,args,self->carg++);
+    self->decimal_scale_factor = grib_arguments_get_name(gh,args,self->carg++);
 
-    self->half_byte = grib_arguments_get_name(a->parent->h,args,self->carg++);
+    self->half_byte = grib_arguments_get_name(gh,args,self->carg++);
 
-    self->n1 = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->n2 = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->p1 = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->extraValues = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->p2 = grib_arguments_get_name(a->parent->h,args,self->carg++);
+    self->n1 = grib_arguments_get_name(gh,args,self->carg++);
+    self->n2 = grib_arguments_get_name(gh,args,self->carg++);
+    self->p1 = grib_arguments_get_name(gh,args,self->carg++);
+    self->extraValues = grib_arguments_get_name(gh,args,self->carg++);
+    self->p2 = grib_arguments_get_name(gh,args,self->carg++);
 
-    self->matrix_values = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->snd_bitmap = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->snd_ordr_wdiff = grib_arguments_get_name(a->parent->h,args,self->carg++);
+    self->matrix_values = grib_arguments_get_name(gh ,args,self->carg++);
+    self->snd_bitmap = grib_arguments_get_name(gh ,args,self->carg++);
+    self->snd_ordr_wdiff = grib_arguments_get_name(gh ,args,self->carg++);
 
-    self->general_ext    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->boustrophedonic  = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->two_ordr_spd          = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->plus1_spd    = grib_arguments_get_name(a->parent->h,args,self->carg++);
+    self->general_ext    = grib_arguments_get_name(gh ,args,self->carg++);
+    self->boustrophedonic  = grib_arguments_get_name(gh ,args,self->carg++);
+    self->two_ordr_spd          = grib_arguments_get_name(gh ,args,self->carg++);
+    self->plus1_spd    = grib_arguments_get_name(gh ,args,self->carg++);
 
-    self->width_widths = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->width_lengths = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->octet_start_group = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->width_spd_sp_desc = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->nap = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->bitmap = grib_arguments_get_name(a->parent->h,args,self->carg++);
+    self->width_widths = grib_arguments_get_name(gh ,args,self->carg++);
+    self->width_lengths = grib_arguments_get_name(gh ,args,self->carg++);
+    self->octet_start_group = grib_arguments_get_name(gh ,args,self->carg++);
+    self->width_spd_sp_desc = grib_arguments_get_name(gh ,args,self->carg++);
+    self->nap = grib_arguments_get_name(gh ,args,self->carg++);
+    self->bitmap = grib_arguments_get_name(gh, args,self->carg++);
     a->flags |= GRIB_ACCESSOR_FLAG_DATA;
 
 }
@@ -234,7 +237,8 @@ static const unsigned char left_mask[8]={0,0x80,0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0x
 static const unsigned char right_mask[8]={0,0x80,0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe };
 
 static unsigned char* bitmap_pop_line(unsigned char* bitmap,long* bitmap_len,int *bit_offset,
-        long points_in_line,int *values_in_line) {
+        long points_in_line,int *values_in_line)
+{
     unsigned char* p=bitmap;
     int m=0,bits=0;
     int bytes=0;
@@ -267,7 +271,8 @@ static unsigned char* bitmap_pop_line(unsigned char* bitmap,long* bitmap_len,int
 }
 
 static int reverse_rows (unsigned long* data, long  len, long number_along_parallel,
-        unsigned char* bitmap,long bitmap_len){
+        unsigned char* bitmap,long bitmap_len)
+{
     long count = 0;
     long i = 0;
     long left = 0;
@@ -338,11 +343,9 @@ static int reverse_rows (unsigned long* data, long  len, long number_along_paral
     return 0;
 }
 
-
-static int      spatial_difference (grib_context *c, unsigned long* vals, long  len, long order, long* bias){
-
+static int spatial_difference (grib_context *c, unsigned long* vals, long  len, long order, long* bias)
+{
     long j = 3;
-
     long *v = (long*)grib_context_malloc(c,(len)*sizeof(long));
 
     for(j = 0; j< len;j++)
@@ -350,7 +353,6 @@ static int      spatial_difference (grib_context *c, unsigned long* vals, long
 
     Assert(order == 2);
 
-
     *bias=v[order];
 
     for(j = order; j< len;j++){
@@ -369,10 +371,9 @@ static int      spatial_difference (grib_context *c, unsigned long* vals, long
     return 0;
 }
 
-static int      de_spatial_difference (grib_context *c, unsigned long* vals, long  len, long order, long bias){
-
+static int de_spatial_difference (grib_context *c, unsigned long* vals, long  len, long order, long bias)
+{
     long j = 0;
-
     long i_origin = 0;
     long i_first_diff = 0;
     long i_second_diff = 0;
@@ -446,12 +447,12 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
     long  nbits_per_group_size =0;
     long  octet_start_group =0;
     long  width_spd_sp_desc =0;
+    grib_handle* gh = grib_handle_of_accessor(a);
 
-
-    unsigned char* buf_size_of_groups = (unsigned char*)a->parent->h->buffer->data;
-    unsigned char* buf_width_of_group = (unsigned char*)a->parent->h->buffer->data;
-    unsigned char* bufrefs = (unsigned char*)a->parent->h->buffer->data;
-    unsigned char* bufvals = (unsigned char*)a->parent->h->buffer->data;
+    unsigned char* buf_size_of_groups = (unsigned char*)gh->buffer->data;
+    unsigned char* buf_width_of_group = (unsigned char*)gh->buffer->data;
+    unsigned char* bufrefs = (unsigned char*)gh->buffer->data;
+    unsigned char* bufvals = (unsigned char*)gh->buffer->data;
 
     double s = 0;
     double d = 0;
@@ -479,49 +480,49 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
     err=grib_value_count(a,&nn);
     n_vals=nn;
 
-    if((err = grib_get_long_internal(a->parent->h,self->offsetsection,&offsetsection))
+    if((err = grib_get_long_internal(gh,self->offsetsection,&offsetsection))
             != GRIB_SUCCESS) return err;
-    if((err = grib_get_long_internal(a->parent->h,self->bits_per_value,&bits_per_value))
+    if((err = grib_get_long_internal(gh,self->bits_per_value,&bits_per_value))
             != GRIB_SUCCESS) return err;
-    if((err = grib_get_double_internal(a->parent->h,self->reference_value, &reference_value))
+    if((err = grib_get_double_internal(gh,self->reference_value, &reference_value))
             != GRIB_SUCCESS)return err;
-    if((err = grib_get_long_internal(a->parent->h,self->binary_scale_factor, &binary_scale_factor))
+    if((err = grib_get_long_internal(gh,self->binary_scale_factor, &binary_scale_factor))
             != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->decimal_scale_factor, &decimal_scale_factor))
+    if((err = grib_get_long_internal(gh,self->decimal_scale_factor, &decimal_scale_factor))
             != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->n1,&n1))  != GRIB_SUCCESS) return err;
-    if((err = grib_get_long_internal(a->parent->h,self->n2, &n2)) != GRIB_SUCCESS) return err;
-    if((err = grib_get_long_internal(a->parent->h,self->p1, &p1)) != GRIB_SUCCESS) return err;
-    if((err = grib_get_long_internal(a->parent->h,self->extraValues, &extraValues)) != GRIB_SUCCESS) return err;
+    if((err = grib_get_long_internal(gh,self->n1,&n1))  != GRIB_SUCCESS) return err;
+    if((err = grib_get_long_internal(gh,self->n2, &n2)) != GRIB_SUCCESS) return err;
+    if((err = grib_get_long_internal(gh,self->p1, &p1)) != GRIB_SUCCESS) return err;
+    if((err = grib_get_long_internal(gh,self->extraValues, &extraValues)) != GRIB_SUCCESS) return err;
 
     p1=p1+65536*extraValues;
 
-    if((err = grib_get_long_internal(a->parent->h,self->p2, &p2)) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->matrix_values, &matrix_values))
+    if((err = grib_get_long_internal(gh,self->p2, &p2)) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->matrix_values, &matrix_values))
             != GRIB_SUCCESS)return err;
-    if((err = grib_get_long_internal(a->parent->h,self->snd_bitmap, &snd_bitmap))
+    if((err = grib_get_long_internal(gh,self->snd_bitmap, &snd_bitmap))
             != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->snd_ordr_wdiff, &snd_ordr_wdiff))
+    if((err = grib_get_long_internal(gh,self->snd_ordr_wdiff, &snd_ordr_wdiff))
             != GRIB_SUCCESS) return err;
-    if((err = grib_get_long_internal(a->parent->h,self->general_ext, &general_ext))
+    if((err = grib_get_long_internal(gh,self->general_ext, &general_ext))
             != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->boustrophedonic, &boustrophedonic))
+    if((err = grib_get_long_internal(gh,self->boustrophedonic, &boustrophedonic))
             != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->two_ordr_spd, &two_ordr_spd))
+    if((err = grib_get_long_internal(gh,self->two_ordr_spd, &two_ordr_spd))
             != GRIB_SUCCESS) return err;
-    if((err = grib_get_long_internal(a->parent->h,self->plus1_spd, &plus1_spd))
+    if((err = grib_get_long_internal(gh,self->plus1_spd, &plus1_spd))
             != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->width_widths, &nbits_per_width))
+    if((err = grib_get_long_internal(gh,self->width_widths, &nbits_per_width))
             != GRIB_SUCCESS) return err;
-    if((err = grib_get_long_internal(a->parent->h,self->width_lengths, &nbits_per_group_size))
+    if((err = grib_get_long_internal(gh,self->width_lengths, &nbits_per_group_size))
             != GRIB_SUCCESS) return err;
-    if((err = grib_get_long_internal(a->parent->h,self->octet_start_group, &octet_start_group))
+    if((err = grib_get_long_internal(gh,self->octet_start_group, &octet_start_group))
             != GRIB_SUCCESS) return err;
 
-    if((err = grib_get_long_internal(a->parent->h,self->width_spd_sp_desc, &width_spd_sp_desc))
+    if((err = grib_get_long_internal(gh,self->width_spd_sp_desc, &width_spd_sp_desc))
             != GRIB_SUCCESS) width_spd_sp_desc=-1;
 
-    if((err = grib_get_long_internal(a->parent->h,self->nap, &nap)) != GRIB_SUCCESS) return err;
+    if((err = grib_get_long_internal(gh,self->nap, &nap)) != GRIB_SUCCESS) return err;
 
     self->dirty=0;
 
@@ -529,11 +530,11 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
 
     Assert(bits_per_value < (sizeof(unsigned long)*8)-1);
 
-    if ((abitmap=grib_find_accessor(a->parent->h,self->bitmap))!=NULL) {
+    if ((abitmap=grib_find_accessor(gh,self->bitmap))!=NULL) {
         bitmap_len=grib_byte_count(abitmap);
-        bitmap=(unsigned char*)grib_context_malloc_clear(a->parent->h->context,sizeof(char)*bitmap_len);
+        bitmap=(unsigned char*)grib_context_malloc_clear(a->context,sizeof(char)*bitmap_len);
         err=grib_unpack_bytes(abitmap,bitmap,&bitmap_len);
-        if (err) {grib_context_free(a->parent->h->context,bitmap); return err;}
+        if (err) {grib_context_free(a->context,bitmap); return err;}
     }
 
     if(bits_per_value == 0)
@@ -541,43 +542,38 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
 
     /* I have everything now start decoding       */
     /*
-  fprintf(stdout,"\n****************************************\n");
-  fprintf(stdout," bits_per_value = %ld\n", bits_per_value);
-  fprintf(stdout," reference_value = %g\n", reference_value);
-  fprintf(stdout," binary_scale_factor = %ld\n", binary_scale_factor);
-  fprintf(stdout," decimal_scale_factor = %ld\n", decimal_scale_factor);
-  fprintf(stdout," n1 = %ld\n", n1);
-  fprintf(stdout," n2 = %ld\n", n2);
-  fprintf(stdout," p1 = %ld\n", p1);
-  fprintf(stdout," p2 = %ld\n", p2);
-  fprintf(stdout," matrix_values = %ld\n", matrix_values);
-  fprintf(stdout," snd_bitmap = %ld\n", snd_bitmap);
-  fprintf(stdout," snd_ordr_wdiff = %ld\n", snd_ordr_wdiff);
-  fprintf(stdout," general_ext = %ld\n", general_ext);
-  fprintf(stdout," boustrophedonic = %ld\n", boustrophedonic);
-  fprintf(stdout," two_ordr_spd = %ld \n", two_ordr_spd);
-
-  fprintf(stdout," plus1_spd = %ld\n", plus1_spd);
-
-  fprintf(stdout," n_sp_diff = %d\n", n_sp_diff);
-  fprintf(stdout," width_widths = %ld\n", nbits_per_group_size);
-  fprintf(stdout," width_lengths = %ld\n", nbits_per_width);
-  fprintf(stdout," octet_start_group = %ld\n", octet_start_group);
-  fprintf(stdout," width_spd_sp_desc = %ld\n", width_spd_sp_desc);
-
-
-  fprintf(stdout," offsetsection = %ld\n", offsetsection);
-
-  fprintf(stdout," offset w = %ld\n", octet_start_group + offsetsection);
-
-  fprintf(stdout,"\n****************************************\n");
-     */
+    fprintf(stdout,"\n****************************************\n");
+    fprintf(stdout," bits_per_value = %ld\n", bits_per_value);
+    fprintf(stdout," reference_value = %g\n", reference_value);
+    fprintf(stdout," binary_scale_factor = %ld\n", binary_scale_factor);
+    fprintf(stdout," decimal_scale_factor = %ld\n", decimal_scale_factor);
+    fprintf(stdout," n1 = %ld\n", n1);
+    fprintf(stdout," n2 = %ld\n", n2);
+    fprintf(stdout," p1 = %ld\n", p1);
+    fprintf(stdout," p2 = %ld\n", p2);
+    fprintf(stdout," matrix_values = %ld\n", matrix_values);
+    fprintf(stdout," snd_bitmap = %ld\n", snd_bitmap);
+    fprintf(stdout," snd_ordr_wdiff = %ld\n", snd_ordr_wdiff);
+    fprintf(stdout," general_ext = %ld\n", general_ext);
+    fprintf(stdout," boustrophedonic = %ld\n", boustrophedonic);
+    fprintf(stdout," two_ordr_spd = %ld \n", two_ordr_spd);
+
+    fprintf(stdout," plus1_spd = %ld\n", plus1_spd);
+
+    fprintf(stdout," n_sp_diff = %d\n", n_sp_diff);
+    fprintf(stdout," width_widths = %ld\n", nbits_per_group_size);
+    fprintf(stdout," width_lengths = %ld\n", nbits_per_width);
+    fprintf(stdout," octet_start_group = %ld\n", octet_start_group);
+    fprintf(stdout," width_spd_sp_desc = %ld\n", width_spd_sp_desc);
+
+    fprintf(stdout," offsetsection = %ld\n", offsetsection);
+    fprintf(stdout," offset w = %ld\n", octet_start_group + offsetsection);
+    fprintf(stdout,"\n****************************************\n");
+    */
     if(snd_bitmap || matrix_values)
         return GRIB_NOT_IMPLEMENTED;
 
-    sec_val  = (unsigned long*)grib_context_malloc(a->parent->h->context,(n_vals)*sizeof(unsigned long));
-    grib_context_free(a->parent->h->context,sec_val);
-    sec_val  = (unsigned long*)grib_context_malloc(a->parent->h->context,(n_vals)*sizeof(unsigned long));
+    sec_val  = (unsigned long*)grib_context_malloc(a->context,(n_vals)*sizeof(unsigned long));
 
     buf_width_of_group  +=  a->offset;
     buf_size_of_groups +=  offsetsection+(octet_start_group-1); /* -1 because of documented starting at 1(and not 0)*/
@@ -601,14 +597,14 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
         pointer_of_group_width = 8+(pointer_of_group_width-(pointer_of_group_width%8));
 #if KEEP_OLD == 1
     if(sd == NULL){
-        sd = grib_context_malloc_clear(a->parent->h->context,sizeof(second_order_packed));
+        sd = grib_context_malloc_clear(a->context,sizeof(second_order_packed));
         sd->packed_byte_count      = 0;
         sd->nbits_per_group_size   = nbits_per_group_size;
         sd->nbits_per_widths       = nbits_per_width;
         sd->size_of_group_array    = p1;
-        sd->array_of_group_size    = grib_context_malloc_clear(a->parent->h->context,sizeof(unsigned long)*sd->size_of_group_array);
-        sd->array_of_group_width   = grib_context_malloc_clear(a->parent->h->context,sizeof(unsigned long)*sd->size_of_group_array);
-        sd->array_of_group_refs    = grib_context_malloc_clear(a->parent->h->context,sizeof( long)*sd->size_of_group_array);
+        sd->array_of_group_size    = grib_context_malloc_clear(a->context,sizeof(unsigned long)*sd->size_of_group_array);
+        sd->array_of_group_width   = grib_context_malloc_clear(a->context,sizeof(unsigned long)*sd->size_of_group_array);
+        sd->array_of_group_refs    = grib_context_malloc_clear(a->context,sizeof( long)*sd->size_of_group_array);
     }
 #endif
     for(i=0;i < p1;i++){
@@ -637,7 +633,7 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
     printf("readvalue [%d] %ld     %ld bias %ld <<\n", i,sec_val[i],binary_scale_factor,bias );*/
 
     if(snd_ordr_wdiff)
-        de_spatial_difference(a->parent->h->context,sec_val, n_vals, n_sp_diff, bias);
+        de_spatial_difference(a->context,sec_val, n_vals, n_sp_diff, bias);
 
     if(boustrophedonic)
         reverse_rows(sec_val,n_vals,nap,bitmap,bitmap_len);
@@ -660,8 +656,8 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
     min *= d;
     max *= d;
 
-    grib_context_free(a->parent->h->context,sec_val);
-    if (bitmap!=NULL) grib_context_free(a->parent->h->context,bitmap);
+    grib_context_free(a->context,sec_val);
+    if (bitmap!=NULL) grib_context_free(a->context,bitmap);
 
     return err;
 }
@@ -669,6 +665,7 @@ 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_data_2order_packing* self =  (grib_accessor_data_2order_packing*)a;
+    grib_handle* gh = grib_handle_of_accessor(a);
 
     size_t i = 0;
     size_t j = 0;
@@ -681,7 +678,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     double   reference_value;
     long     binary_scale_factor;
     long     bits_per_value;
-    long     bit_per_val_rectified_for_gribex;
+    /*long     bit_per_val_rectified_for_gribex;*/
     long     decimal_scale_factor;
     long     n1 = 0;
     long     n2 = 0;
@@ -708,7 +705,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     unsigned char* buf_refs   = NULL;
     unsigned char* buf_vals   = NULL;
 
-
     double d = 0;
 
     unsigned long*  sec_val    = NULL;
@@ -740,24 +736,24 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
     if (*len ==0) return GRIB_NO_VALUES;
 
-    if((err = grib_get_long_internal(a->parent->h,self->offsetsection,&offsetsection)) != GRIB_SUCCESS) return err;
-    if((err = grib_get_long_internal(a->parent->h,self->offsetdata,&offsetdata)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(gh,self->offsetsection,&offsetsection)) != GRIB_SUCCESS) return err;
+    if((err = grib_get_long_internal(gh,self->offsetdata,&offsetdata)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_long_internal(a->parent->h,self->bits_per_value,&bits_per_value)) != GRIB_SUCCESS) return err;
-    if((err = grib_get_long_internal(a->parent->h,self->decimal_scale_factor, &decimal_scale_factor))  != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->matrix_values, &matrix_values)) != GRIB_SUCCESS)return err;
-    if((err = grib_get_long_internal(a->parent->h,self->snd_bitmap, &snd_bitmap)) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->snd_ordr_wdiff, &snd_ordr_wdiff)) != GRIB_SUCCESS) return err;
-    if((err = grib_get_long_internal(a->parent->h,self->general_ext, &general_ext)) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->boustrophedonic, &boustrophedonic)) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->width_spd_sp_desc, &width_spd_sp_desc)) != GRIB_SUCCESS) return err;
-    if((err = grib_get_long_internal(a->parent->h,self->nap, &nap)) != GRIB_SUCCESS) return err;
-
-    if ((abitmap=grib_find_accessor(a->parent->h,self->bitmap))!=NULL) {
+    if((err = grib_get_long_internal(gh,self->bits_per_value,&bits_per_value)) != GRIB_SUCCESS) return err;
+    if((err = grib_get_long_internal(gh,self->decimal_scale_factor, &decimal_scale_factor))  != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->matrix_values, &matrix_values)) != GRIB_SUCCESS)return err;
+    if((err = grib_get_long_internal(gh,self->snd_bitmap, &snd_bitmap)) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->snd_ordr_wdiff, &snd_ordr_wdiff)) != GRIB_SUCCESS) return err;
+    if((err = grib_get_long_internal(gh,self->general_ext, &general_ext)) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->boustrophedonic, &boustrophedonic)) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->width_spd_sp_desc, &width_spd_sp_desc)) != GRIB_SUCCESS) return err;
+    if((err = grib_get_long_internal(gh,self->nap, &nap)) != GRIB_SUCCESS) return err;
+
+    if ((abitmap=grib_find_accessor(gh,self->bitmap))!=NULL) {
         bitmap_len=grib_byte_count(abitmap);
-        bitmap=(unsigned char*)grib_context_malloc_clear(a->parent->h->context,sizeof(char)*bitmap_len);
+        bitmap=(unsigned char*)grib_context_malloc_clear(a->context,sizeof(char)*bitmap_len);
         err=grib_unpack_bytes(abitmap,bitmap,&bitmap_len);
-        if (err) {grib_context_free(a->parent->h->context,bitmap); return err;}
+        if (err) {grib_context_free(a->context,bitmap); return err;}
     }
 
     two_ordr_spd = 1;
@@ -769,7 +765,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     n_sp_diff = two_ordr_spd*2+plus1_spd;
     /*     calculation of integer array   */
 
-    sec_val  = (unsigned long*)grib_context_malloc(a->parent->h->context,(n_vals)*sizeof(long));
+    sec_val  = (unsigned long*)grib_context_malloc(a->context,(n_vals)*sizeof(long));
     d = grib_power(decimal_scale_factor,10) ;
     max = val[0];
     min = max;
@@ -781,10 +777,10 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     min *= d;
     max *= d;
 
-    bit_per_val_rectified_for_gribex = bits_per_value+8-bits_per_value%8;
-    if (grib_get_nearest_smaller_value(a->parent->h,self->reference_value,min,&reference_value)
+    /*bit_per_val_rectified_for_gribex = bits_per_value+8-bits_per_value%8;*/
+    if (grib_get_nearest_smaller_value(gh,self->reference_value,min,&reference_value)
             !=GRIB_SUCCESS) {
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+        grib_context_log(a->context,GRIB_LOG_ERROR,
                 "unable to find nearest_smaller_value of %g for %s",min,self->reference_value);
         exit(GRIB_INTERNAL_ERROR);
     }
@@ -804,8 +800,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
 
     if(snd_ordr_wdiff)
-        if((err =  spatial_difference(a->parent->h->context,sec_val, n_vals, n_sp_diff, &bias))){
-            grib_context_free(a->parent->h->context,sec_val);
+        if((err =  spatial_difference(a->context,sec_val, n_vals, n_sp_diff, &bias))){
+            grib_context_free(a->context,sec_val);
             return err;
         }
 
@@ -820,7 +816,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 #if KEEP_OLD == 1
 
 #else
-    sd = grib_get_second_order_groups(a->parent->h->context, group_val, nv);
+    sd = grib_get_second_order_groups(a->context, group_val, nv);
 #endif
 
     bitp   = 0;
@@ -845,7 +841,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     if((a->offset+buff_len)%2) buff_len++;
 
     buf = NULL;
-    buf = (unsigned char*)grib_context_malloc_clear(a->parent->h->context,buff_len);
+    buf = (unsigned char*)grib_context_malloc_clear(a->context,buff_len);
 
     buf_width_of_group    =  buf;
     buf_size_of_groups    =  buf+octet_start_group;
@@ -890,13 +886,13 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     }
 
     octet_start_group += 1+ a->offset-offsetsection;
-    if((err = grib_set_long_internal(a->parent->h,self->octet_start_group, octet_start_group)) != GRIB_SUCCESS) return err;
+    if((err = grib_set_long_internal(gh,self->octet_start_group, octet_start_group)) != GRIB_SUCCESS) return err;
 
     n1 += 1+a->offset-offsetsection;
-    if((err = grib_set_long_internal(a->parent->h,self->n1,n1)) != GRIB_SUCCESS) return err;
+    if((err = grib_set_long_internal(gh,self->n1,n1)) != GRIB_SUCCESS) return err;
 
     n2 += 1+a->offset-offsetsection;
-    if((err = grib_set_long_internal(a->parent->h,self->n2,n2)) != GRIB_SUCCESS) return err;
+    if((err = grib_set_long_internal(gh,self->n2,n2)) != GRIB_SUCCESS) return err;
 
     extraValues=0;
     while (p1 > 65535) {
@@ -904,52 +900,54 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
         extraValues++;
     }
 
-    if((err = grib_set_long_internal(a->parent->h,self->p1,p1)) != GRIB_SUCCESS) return err;
+    if((err = grib_set_long_internal(gh,self->p1,p1)) != GRIB_SUCCESS) return err;
 
-    if((err = grib_set_long_internal(a->parent->h,self->extraValues,extraValues)) != GRIB_SUCCESS) return err;
+    if((err = grib_set_long_internal(gh,self->extraValues,extraValues)) != GRIB_SUCCESS) return err;
 
-    if((err = grib_set_long_internal(a->parent->h,self->p2,n_vals - n_sp_diff)) != GRIB_SUCCESS) return err;
+    if((err = grib_set_long_internal(gh,self->p2,n_vals - n_sp_diff)) != GRIB_SUCCESS) return err;
 
-    if((err = grib_set_double_internal(a->parent->h,self->reference_value,    reference_value)) != GRIB_SUCCESS)return err;
+    if((err = grib_set_double_internal(gh,self->reference_value,    reference_value)) != GRIB_SUCCESS)return err;
 
     {
         /* Make sure we can decode it again */
         double ref = 1e-100;
-        grib_get_double_internal(a->parent->h,self->reference_value,&ref);
+        grib_get_double_internal(gh,self->reference_value,&ref);
         Assert(ref == reference_value);
     }
 
-    if((err = grib_set_long_internal(a->parent->h,self->binary_scale_factor,         binary_scale_factor)) != GRIB_SUCCESS)  return err;
+    if((err = grib_set_long_internal(gh,self->binary_scale_factor,         binary_scale_factor)) != GRIB_SUCCESS)  return err;
 
-    if((err = grib_set_long_internal(a->parent->h,self->decimal_scale_factor, decimal_scale_factor))  != GRIB_SUCCESS)  return err;
-    if((err = grib_set_long_internal(a->parent->h,self->width_widths,  sd->nbits_per_widths)) != GRIB_SUCCESS) return err;
-    if((err = grib_set_long_internal(a->parent->h,self->width_lengths, sd->nbits_per_group_size)) != GRIB_SUCCESS) return err;
+    if((err = grib_set_long_internal(gh,self->decimal_scale_factor, decimal_scale_factor))  != GRIB_SUCCESS)  return err;
+    if((err = grib_set_long_internal(gh,self->width_widths,  sd->nbits_per_widths)) != GRIB_SUCCESS) return err;
+    if((err = grib_set_long_internal(gh,self->width_lengths, sd->nbits_per_group_size)) != GRIB_SUCCESS) return err;
 
 
-    err = grib_set_long_internal(a->parent->h,self->half_byte, n_unused_bits);
+    err = grib_set_long_internal(gh,self->half_byte, n_unused_bits);
     if(err != GRIB_SUCCESS) return err;
 
 #if KEEP_OLD == 1
 
 #else
 
-    grib_free_second_order_groups(a->parent->h->context,sd);
+    grib_free_second_order_groups(a->context,sd);
 #endif
     ;
 
-    grib_context_free(a->parent->h->context,buf);
-    grib_context_free(a->parent->h->context,sec_val);
-    if (bitmap!=NULL) grib_context_free(a->parent->h->context,bitmap);
+    grib_context_free(a->context,buf);
+    grib_context_free(a->context,sec_val);
+    if (bitmap!=NULL) grib_context_free(a->context,bitmap);
 
     return GRIB_SUCCESS;
 }
 
-static int value_count(grib_accessor* a,long* count){
+static int value_count(grib_accessor* a,long* count)
+{
     int err=0;
     grib_accessor_data_2order_packing* self =  (grib_accessor_data_2order_packing*)a;
     long  two_ordr_spd = 0;
     long  plus1_spd    = 0;
-    unsigned char* buf_size_of_groups = (unsigned char*)a->parent->h->buffer->data;
+    grib_handle* gh = grib_handle_of_accessor(a);
+    unsigned char* buf_size_of_groups = (unsigned char*)gh->buffer->data;
     long octet_start_group = 0;
     long offsetsection = 0;
     long nbits_per_lengths = 0;
@@ -959,19 +957,19 @@ static int value_count(grib_accessor* a,long* count){
 
     size_t i = 0;
 
-    if((err=grib_get_long_internal(a->parent->h,self->two_ordr_spd, &two_ordr_spd)) != GRIB_SUCCESS)
+    if((err=grib_get_long_internal(gh,self->two_ordr_spd, &two_ordr_spd)) != GRIB_SUCCESS)
         return err;
-    if( (err=grib_get_long_internal(a->parent->h,self->plus1_spd, &plus1_spd)) != GRIB_SUCCESS)
+    if( (err=grib_get_long_internal(gh,self->plus1_spd, &plus1_spd)) != GRIB_SUCCESS)
         return err;
-    if( (err=grib_get_long_internal(a->parent->h,self->width_lengths, &nbits_per_lengths)) != GRIB_SUCCESS)
+    if( (err=grib_get_long_internal(gh,self->width_lengths, &nbits_per_lengths)) != GRIB_SUCCESS)
         return err;
-    if( (err=grib_get_long_internal(a->parent->h,self->offsetsection, &offsetsection)) != GRIB_SUCCESS)
+    if( (err=grib_get_long_internal(gh,self->offsetsection, &offsetsection)) != GRIB_SUCCESS)
         return err;
-    if( (err=grib_get_long_internal(a->parent->h,self->octet_start_group, &octet_start_group)) != GRIB_SUCCESS)
+    if( (err=grib_get_long_internal(gh,self->octet_start_group, &octet_start_group)) != GRIB_SUCCESS)
         return err;
-    if( (err=grib_get_long_internal(a->parent->h,self->p1, &p1)) != GRIB_SUCCESS)
+    if( (err=grib_get_long_internal(gh,self->p1, &p1)) != GRIB_SUCCESS)
         return err;
-    if( (err=grib_get_long_internal(a->parent->h,self->extraValues, &extraValues)) != GRIB_SUCCESS)
+    if( (err=grib_get_long_internal(gh,self->extraValues, &extraValues)) != GRIB_SUCCESS)
         return err;
 
     p1+=extraValues*65536;
diff --git a/src/grib_accessor_class_data_2order_packing_count.c b/src/grib_accessor_class_data_2order_packing_count.c
index 12eb8d1..ffe73d2 100644
--- a/src/grib_accessor_class_data_2order_packing_count.c
+++ b/src/grib_accessor_class_data_2order_packing_count.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -100,6 +100,7 @@ static grib_accessor_class _grib_accessor_class_data_2order_packing_count = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -138,6 +139,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -147,12 +149,12 @@ static void init(grib_accessor* a,const long v, grib_arguments* args)
   grib_accessor_data_2order_packing_count *self =(grib_accessor_data_2order_packing_count*)a;
   int n=0;
 
-  self->offsetsection = grib_arguments_get_name(a->parent->h,args,n++);
-  self->p1 = grib_arguments_get_name(a->parent->h,args,n++);
-  self->two_ordr_spd          = grib_arguments_get_name(a->parent->h,args,n++);
-  self->plus1_spd    = grib_arguments_get_name(a->parent->h,args,n++);
-  self->width_lengths = grib_arguments_get_name(a->parent->h,args,n++);
-  self->octet_start_group = grib_arguments_get_name(a->parent->h,args,n++);
+  self->offsetsection = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->p1 = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->two_ordr_spd          = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->plus1_spd    = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->width_lengths = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->octet_start_group = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
 
   a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
 
@@ -166,7 +168,7 @@ static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
   long count = 0;
   long  two_ordr_spd = 0;
   long  plus1_spd    = 0;
-  unsigned char* buf_size_of_groups = (unsigned char*)a->parent->h->buffer->data;
+  unsigned char* buf_size_of_groups = (unsigned char*)grib_handle_of_accessor(a)->buffer->data;
   long octet_start_group = 0;
   long offsetsection = 0;
   long nbits_per_lengths = 0;
@@ -175,17 +177,17 @@ static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
 
   size_t i = 0;
 
-  if ((ret=grib_get_long_internal(a->parent->h,self->two_ordr_spd, &two_ordr_spd))
+  if ((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->two_ordr_spd, &two_ordr_spd))
        !=GRIB_SUCCESS) return ret;
-  if ((ret=grib_get_long_internal(a->parent->h,self->plus1_spd, &plus1_spd))
+  if ((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->plus1_spd, &plus1_spd))
        !=GRIB_SUCCESS) return ret;
-  if ((ret=grib_get_long_internal(a->parent->h,self->width_lengths, &nbits_per_lengths))
+  if ((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->width_lengths, &nbits_per_lengths))
        !=GRIB_SUCCESS) return ret;
-  if ((ret=grib_get_long_internal(a->parent->h,self->offsetsection, &offsetsection))
+  if ((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->offsetsection, &offsetsection))
        !=GRIB_SUCCESS) return ret;
-  if ((ret=grib_get_long_internal(a->parent->h,self->octet_start_group, &octet_start_group))
+  if ((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->octet_start_group, &octet_start_group))
        !=GRIB_SUCCESS) return ret;
-  if ((ret=grib_get_long_internal(a->parent->h,self->p1, &p1))
+  if ((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->p1, &p1))
        !=GRIB_SUCCESS) return ret;
 
   buf_size_of_groups +=  offsetsection+(octet_start_group-1);
diff --git a/src/grib_accessor_class_data_apply_bitmap.c b/src/grib_accessor_class_data_apply_bitmap.c
index 3b93620..6b4e799 100644
--- a/src/grib_accessor_class_data_apply_bitmap.c
+++ b/src/grib_accessor_class_data_apply_bitmap.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -103,6 +103,7 @@ static grib_accessor_class _grib_accessor_class_data_apply_bitmap = {
     &unpack_double_element,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -136,6 +137,7 @@ static void init_class(grib_accessor_class* c)
 	c->compare	=	(*(c->super))->compare;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -145,12 +147,12 @@ static void init(grib_accessor* a,const long v, grib_arguments* args)
     int n=0;
     grib_accessor_data_apply_bitmap *self =(grib_accessor_data_apply_bitmap*)a;
 
-    self->coded_values  = grib_arguments_get_name(a->parent->h,args,n++);
-    self->bitmap        = grib_arguments_get_name(a->parent->h,args,n++);
-    self->missing_value = grib_arguments_get_name(a->parent->h,args,n++);
-    self->binary_scale_factor = grib_arguments_get_name(a->parent->h,args,n++);
-    self->number_of_data_points = grib_arguments_get_name(a->parent->h,args,n++);
-    self->number_of_values = grib_arguments_get_name(a->parent->h,args,n++);
+    self->coded_values  = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+    self->bitmap        = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+    self->missing_value = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+    self->binary_scale_factor = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+    self->number_of_data_points = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+    self->number_of_values = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
 
     a->length = 0;
 }
@@ -165,10 +167,10 @@ static int value_count(grib_accessor* a,long* count)
     size_t len = 0;
     int ret = 0;
 
-    if(grib_find_accessor(a->parent->h,self->bitmap))
-        ret =  grib_get_size(a->parent->h,self->bitmap,&len);
+    if(grib_find_accessor(grib_handle_of_accessor(a),self->bitmap))
+        ret =  grib_get_size(grib_handle_of_accessor(a),self->bitmap,&len);
     else
-        ret =  grib_get_size(a->parent->h,self->coded_values,&len);
+        ret =  grib_get_size(grib_handle_of_accessor(a),self->coded_values,&len);
 
     *count=len;
 
@@ -192,13 +194,13 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
     n_vals=nn;
     if (err) return err;
 
-    if(!grib_find_accessor(a->parent->h,self->bitmap))
-        return grib_get_double_array_internal(a->parent->h,self->coded_values,val,len);
+    if(!grib_find_accessor(grib_handle_of_accessor(a),self->bitmap))
+        return grib_get_double_array_internal(grib_handle_of_accessor(a),self->coded_values,val,len);
 
-    if((err = grib_get_size(a->parent->h,self->coded_values,&coded_n_vals)) != GRIB_SUCCESS)
+    if((err = grib_get_size(grib_handle_of_accessor(a),self->coded_values,&coded_n_vals)) != GRIB_SUCCESS)
         return err;
 
-    if((err = grib_get_double_internal(a->parent->h,self->missing_value,&missing_value))
+    if((err = grib_get_double_internal(grib_handle_of_accessor(a),self->missing_value,&missing_value))
             != GRIB_SUCCESS)  return err;
 
     if(*len < n_vals) {
@@ -214,21 +216,21 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
         return GRIB_SUCCESS;
     }
 
-    if((err = grib_get_double_array_internal(a->parent->h,self->bitmap,val,&n_vals))
+    if((err = grib_get_double_array_internal(grib_handle_of_accessor(a),self->bitmap,val,&n_vals))
             != GRIB_SUCCESS)
         return err;
 
-    coded_vals = (double*)grib_context_malloc(a->parent->h->context,coded_n_vals*sizeof(double));
+    coded_vals = (double*)grib_context_malloc(a->context,coded_n_vals*sizeof(double));
     if(coded_vals == NULL) return GRIB_OUT_OF_MEMORY;
 
-    if((err = grib_get_double_array_internal(a->parent->h,self->coded_values,coded_vals,&coded_n_vals))
+    if((err = grib_get_double_array_internal(grib_handle_of_accessor(a),self->coded_values,coded_vals,&coded_n_vals))
             != GRIB_SUCCESS)
     {
-        grib_context_free(a->parent->h->context,coded_vals);
+        grib_context_free(a->context,coded_vals);
         return err;
     }
 
-    grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG,
+    grib_context_log(a->context, GRIB_LOG_DEBUG,
             "grib_accessor_class_data_apply_bitmap: unpack_double : creating %s, %d values",
             a->name, n_vals);
 
@@ -242,8 +244,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
             val[i] = coded_vals[j++];
             if(j>coded_n_vals)
             {
-                grib_context_free(a->parent->h->context,coded_vals);
-                grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
+                grib_context_free(a->context,coded_vals);
+                grib_context_log(a->context, GRIB_LOG_ERROR,
                         "grib_accessor_class_data_apply_bitmap [%s]:"
                         " unpack_double :  number of coded values does not match bitmap %ld %ld",
                         a->name,coded_n_vals,n_vals);
@@ -255,7 +257,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
 
     *len =  n_vals;
 
-    grib_context_free(a->parent->h->context,coded_vals);
+    grib_context_free(a->context,coded_vals);
     return err;
 }
 
@@ -273,29 +275,29 @@ static int unpack_double_element(grib_accessor* a, size_t idx,double* val)
     n_vals=nn;
     if (err) return err;
 
-    if(!grib_find_accessor(a->parent->h,self->bitmap))
-        return grib_get_double_element_internal(a->parent->h,self->coded_values,idx,val);
+    if(!grib_find_accessor(grib_handle_of_accessor(a),self->bitmap))
+        return grib_get_double_element_internal(grib_handle_of_accessor(a),self->coded_values,idx,val);
 
-    if((err = grib_get_double_internal(a->parent->h,self->missing_value,&missing_value)) != GRIB_SUCCESS)
+    if((err = grib_get_double_internal(grib_handle_of_accessor(a),self->missing_value,&missing_value)) != GRIB_SUCCESS)
         return err;
 
-    if((err = grib_get_double_element_internal(a->parent->h,self->bitmap,idx,val)) != GRIB_SUCCESS)
+    if((err = grib_get_double_element_internal(grib_handle_of_accessor(a),self->bitmap,idx,val)) != GRIB_SUCCESS)
         return err;
 
     if (*val == 0) {*val=missing_value;return GRIB_SUCCESS;}
 
-    bvals = (double*)grib_context_malloc(a->parent->h->context,n_vals*sizeof(double));
+    bvals = (double*)grib_context_malloc(a->context,n_vals*sizeof(double));
     if(bvals == NULL) return GRIB_OUT_OF_MEMORY;
 
-    if((err = grib_get_double_array_internal(a->parent->h,self->bitmap,bvals,&n_vals)) != GRIB_SUCCESS)
+    if((err = grib_get_double_array_internal(grib_handle_of_accessor(a),self->bitmap,bvals,&n_vals)) != GRIB_SUCCESS)
         return err;
 
     cidx=0;
     for (i=0;i<idx;i++) {cidx+=bvals[i];}
 
-    grib_context_free(a->parent->h->context,bvals);
+    grib_context_free(a->context,bvals);
 
-    return grib_get_double_element_internal(a->parent->h,self->coded_values,cidx,val);
+    return grib_get_double_element_internal(grib_handle_of_accessor(a),self->coded_values,cidx,val);
 }
 
 static int pack_double(grib_accessor* a, const double* val, size_t *len)
@@ -311,28 +313,28 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
     if (*len ==0) return GRIB_NO_VALUES;
 
-    if(!grib_find_accessor(a->parent->h,self->bitmap)){
-        err = grib_set_double_array_internal(a->parent->h,self->coded_values,val,*len);
+    if(!grib_find_accessor(grib_handle_of_accessor(a),self->bitmap)){
+        err = grib_set_double_array_internal(grib_handle_of_accessor(a),self->coded_values,val,*len);
         /*printf("SETTING TOTAL number_of_data_points %s %ld\n",self->number_of_data_points,*len);*/
         if(self->number_of_data_points)
-            grib_set_long_internal(a->parent->h,self->number_of_data_points,*len);
+            grib_set_long_internal(grib_handle_of_accessor(a),self->number_of_data_points,*len);
         return err;
     }
 
-    if((err = grib_get_double_internal(a->parent->h,self->missing_value,&missing_value)) != GRIB_SUCCESS)
+    if((err = grib_get_double_internal(grib_handle_of_accessor(a),self->missing_value,&missing_value)) != GRIB_SUCCESS)
         return err;
 
-    if((err = grib_set_double_array_internal(a->parent->h,self->bitmap,val,bmaplen)) != GRIB_SUCCESS)
+    if((err = grib_set_double_array_internal(grib_handle_of_accessor(a),self->bitmap,val,bmaplen)) != GRIB_SUCCESS)
         return err;
 
     coded_n_vals = *len;
 
     if(coded_n_vals <  1){
-        err = grib_set_double_array_internal(a->parent->h,self->coded_values,NULL,0);
+        err = grib_set_double_array_internal(grib_handle_of_accessor(a),self->coded_values,NULL,0);
         return err;
     }
 
-    coded_vals = (double*)grib_context_malloc_clear(a->parent->h->context,coded_n_vals*sizeof(double));
+    coded_vals = (double*)grib_context_malloc_clear(a->context,coded_n_vals*sizeof(double));
     if(!coded_vals) return GRIB_OUT_OF_MEMORY;
 
     for(i=0; i<*len ; i++)
@@ -342,15 +344,15 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
         }
     }
 
-    err = grib_set_double_array_internal(a->parent->h,self->coded_values,coded_vals,j);
+    err = grib_set_double_array_internal(grib_handle_of_accessor(a),self->coded_values,coded_vals,j);
     if (j==0) {
         if (self->number_of_values)
-            err=grib_set_long_internal(a->parent->h,self->number_of_values,0);
+            err=grib_set_long_internal(grib_handle_of_accessor(a),self->number_of_values,0);
         if (self->binary_scale_factor)
-            err=grib_set_long_internal(a->parent->h,self->binary_scale_factor,0);
+            err=grib_set_long_internal(grib_handle_of_accessor(a),self->binary_scale_factor,0);
     }
 
-    grib_context_free(a->parent->h->context,coded_vals);
+    grib_context_free(a->context,coded_vals);
 
     return err;
 }
@@ -358,7 +360,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 static int get_native_type(grib_accessor* a)
 {
     /*  grib_accessor_data_apply_bitmap* self =  (grib_accessor_data_apply_bitmap*)a;
-    return grib_accessor_get_native_type(grib_find_accessor(a->parent->h,self->coded_values));*/
+    return grib_accessor_get_native_type(grib_find_accessor(grib_handle_of_accessor(a),self->coded_values));*/
 
     return GRIB_TYPE_DOUBLE;
 }
diff --git a/src/grib_accessor_class_data_apply_boustrophedonic.c b/src/grib_accessor_class_data_apply_boustrophedonic.c
index dd7417a..6e8cb2f 100644
--- a/src/grib_accessor_class_data_apply_boustrophedonic.c
+++ b/src/grib_accessor_class_data_apply_boustrophedonic.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -101,6 +101,7 @@ static grib_accessor_class _grib_accessor_class_data_apply_boustrophedonic = {
     &unpack_double_element,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -134,6 +135,7 @@ static void init_class(grib_accessor_class* c)
 	c->compare	=	(*(c->super))->compare;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -143,11 +145,11 @@ static void init(grib_accessor* a,const long v, grib_arguments* args)
     int n=0;
     grib_accessor_data_apply_boustrophedonic *self =(grib_accessor_data_apply_boustrophedonic*)a;
 
-    self->values  = grib_arguments_get_name(a->parent->h,args,n++);
-    self->numberOfRows = grib_arguments_get_name(a->parent->h,args,n++);
-    self->numberOfColumns = grib_arguments_get_name(a->parent->h,args,n++);
-    self->numberOfPoints = grib_arguments_get_name(a->parent->h,args,n++);
-    self->pl        = grib_arguments_get_name(a->parent->h,args,n++);
+    self->values  = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+    self->numberOfRows = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+    self->numberOfColumns = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+    self->numberOfPoints = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+    self->pl        = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
 
     a->length = 0;
 }
@@ -162,7 +164,7 @@ static int value_count(grib_accessor* a, long* numberOfPoints)
     int ret=0;
 
     *numberOfPoints=0;
-    ret=grib_get_long_internal(a->parent->h,self->numberOfPoints,numberOfPoints);
+    ret=grib_get_long_internal(grib_handle_of_accessor(a),self->numberOfPoints,numberOfPoints);
 
     return ret;
 }
@@ -180,7 +182,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
     int ret;
     long numberOfPoints,numberOfRows,numberOfColumns;
 
-    ret=grib_get_long_internal(a->parent->h,self->numberOfPoints,&numberOfPoints);
+    ret=grib_get_long_internal(grib_handle_of_accessor(a),self->numberOfPoints,&numberOfPoints);
     if (ret) return ret;
 
     if(*len < numberOfPoints) {
@@ -188,35 +190,35 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
         return GRIB_ARRAY_TOO_SMALL;
     }
 
-    ret=grib_get_size(a->parent->h,self->values,&valuesSize);
+    ret=grib_get_size(grib_handle_of_accessor(a),self->values,&valuesSize);
     if (ret) return ret;
 
     /* constant field */
     if (valuesSize==0) return 0;
 
     if (valuesSize!=numberOfPoints) {
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"boustrophedonic ordering error: ( %s=%ld ) != (sizeOf(%s)=%ld)",
+        grib_context_log(a->context,GRIB_LOG_ERROR,"boustrophedonic ordering error: ( %s=%ld ) != (sizeOf(%s)=%ld)",
                 self->numberOfPoints,numberOfPoints,self->values,(long)valuesSize);
         return GRIB_DECODING_ERROR;
     }
 
-    values=(double*)grib_context_malloc_clear(a->parent->h->context,sizeof(double)*numberOfPoints);
-    ret=grib_get_double_array_internal(a->parent->h,self->values,values,&valuesSize);
+    values=(double*)grib_context_malloc_clear(a->context,sizeof(double)*numberOfPoints);
+    ret=grib_get_double_array_internal(grib_handle_of_accessor(a),self->values,values,&valuesSize);
     if (ret) return ret;
 
     pvalues=values;
     pval=val;
 
-    ret=grib_get_long_internal(a->parent->h,self->numberOfRows,&numberOfRows);
+    ret=grib_get_long_internal(grib_handle_of_accessor(a),self->numberOfRows,&numberOfRows);
     if (ret) return ret;
 
-    ret=grib_get_long_internal(a->parent->h,self->numberOfColumns,&numberOfColumns);
+    ret=grib_get_long_internal(grib_handle_of_accessor(a),self->numberOfColumns,&numberOfColumns);
     if (ret) return ret;
 
-    if (grib_get_size(a->parent->h,self->pl,&plSize) == GRIB_SUCCESS) {
+    if (grib_get_size(grib_handle_of_accessor(a),self->pl,&plSize) == GRIB_SUCCESS) {
         Assert(plSize==numberOfRows);
-        pl=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*plSize);
-        ret=grib_get_long_array_internal(a->parent->h,self->pl,pl,&plSize);
+        pl=(long*)grib_context_malloc_clear(a->context,sizeof(long)*plSize);
+        ret=grib_get_long_array_internal(grib_handle_of_accessor(a),self->pl,pl,&plSize);
         if (ret) return ret;
 
         for (j=0;j<numberOfRows;j++) {
@@ -229,7 +231,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
             }
         }
 
-        grib_context_free(a->parent->h->context,pl);
+        grib_context_free(a->context,pl);
 
     } else {
 
@@ -245,14 +247,29 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
 
     }
 
-    grib_context_free(a->parent->h->context,values);
+    grib_context_free(a->context,values);
 
     return GRIB_SUCCESS;
 }
 
 static int unpack_double_element(grib_accessor* a, size_t idx,double* val)
 {
-    return GRIB_NOT_IMPLEMENTED;
+    size_t size;
+    double* values;
+    int err = 0;
+    
+    /* GRIB-564: The index idx relates to codedValues NOT values! */
+
+    err=grib_get_size(a->parent->h,"codedValues",&size);
+    if (err) return err;
+    if (idx > size) return GRIB_INVALID_NEAREST;
+
+    values=(double*)grib_context_malloc_clear(a->parent->h->context,size*sizeof(double));
+    err=grib_get_double_array(a->parent->h,"codedValues",values,&size);
+    if (err) return err;
+    *val=values[idx];
+    grib_context_free(a->parent->h->context,values);
+    return err;
 }
 
 static int pack_double(grib_accessor* a, const double* val, size_t *len)
@@ -268,7 +285,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     int ret;
     long numberOfPoints,numberOfRows,numberOfColumns;
 
-    ret=grib_get_long_internal(a->parent->h,self->numberOfPoints,&numberOfPoints);
+    ret=grib_get_long_internal(grib_handle_of_accessor(a),self->numberOfPoints,&numberOfPoints);
     if (ret) return ret;
 
     if(*len < numberOfPoints) {
@@ -278,21 +295,21 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
     valuesSize=numberOfPoints;
 
-    values=(double*)grib_context_malloc_clear(a->parent->h->context,sizeof(double)*numberOfPoints);
+    values=(double*)grib_context_malloc_clear(a->context,sizeof(double)*numberOfPoints);
 
     pvalues=values;
     pval=(double*)val;
 
-    ret=grib_get_long_internal(a->parent->h,self->numberOfRows,&numberOfRows);
+    ret=grib_get_long_internal(grib_handle_of_accessor(a),self->numberOfRows,&numberOfRows);
     if (ret) return ret;
 
-    ret=grib_get_long_internal(a->parent->h,self->numberOfColumns,&numberOfColumns);
+    ret=grib_get_long_internal(grib_handle_of_accessor(a),self->numberOfColumns,&numberOfColumns);
     if (ret) return ret;
 
-    if (grib_get_size(a->parent->h,self->pl,&plSize) == GRIB_SUCCESS) {
+    if (grib_get_size(grib_handle_of_accessor(a),self->pl,&plSize) == GRIB_SUCCESS) {
         Assert(plSize==numberOfRows);
-        pl=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*plSize);
-        ret=grib_get_long_array_internal(a->parent->h,self->pl,pl,&plSize);
+        pl=(long*)grib_context_malloc_clear(a->context,sizeof(long)*plSize);
+        ret=grib_get_long_array_internal(grib_handle_of_accessor(a),self->pl,pl,&plSize);
         if (ret) return ret;
 
         for (j=0;j<numberOfRows;j++) {
@@ -305,7 +322,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
             }
         }
 
-        grib_context_free(a->parent->h->context,pl);
+        grib_context_free(a->context,pl);
 
     } else {
 
@@ -320,10 +337,10 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
         }
 
     }
-    ret=grib_set_double_array_internal(a->parent->h,self->values,values,valuesSize);
+    ret=grib_set_double_array_internal(grib_handle_of_accessor(a),self->values,values,valuesSize);
     if (ret) return ret;
 
-    grib_context_free(a->parent->h->context,values);
+    grib_context_free(a->context,values);
 
     return ret;
 }
diff --git a/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.c b/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.c
index a826d94..0a940d9 100644
--- a/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.c
+++ b/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -106,6 +106,7 @@ static grib_accessor_class _grib_accessor_class_data_apply_boustrophedonic_bitma
     &unpack_double_element,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -139,6 +140,7 @@ static void init_class(grib_accessor_class* c)
 	c->compare	=	(*(c->super))->compare;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -147,18 +149,20 @@ static void init(grib_accessor* a,const long v, grib_arguments* args)
 {
     int n=0;
     grib_accessor_data_apply_boustrophedonic_bitmap *self =(grib_accessor_data_apply_boustrophedonic_bitmap*)a;
+    grib_handle* gh = grib_handle_of_accessor(a);
 
-    self->coded_values    = grib_arguments_get_name(a->parent->h,args,n++);
-    self->bitmap          = grib_arguments_get_name(a->parent->h,args,n++);
-    self->missing_value   = grib_arguments_get_name(a->parent->h,args,n++);
-    self->binary_scale_factor = grib_arguments_get_name(a->parent->h,args,n++);
+    self->coded_values    = grib_arguments_get_name(gh,args,n++);
+    self->bitmap          = grib_arguments_get_name(gh,args,n++);
+    self->missing_value   = grib_arguments_get_name(gh,args,n++);
+    self->binary_scale_factor = grib_arguments_get_name(gh,args,n++);
 
-    self->numberOfRows    = grib_arguments_get_name(a->parent->h,args,n++);
-    self->numberOfColumns = grib_arguments_get_name(a->parent->h,args,n++);
-    self->numberOfPoints  = grib_arguments_get_name(a->parent->h,args,n++);
+    self->numberOfRows    = grib_arguments_get_name(gh,args,n++);
+    self->numberOfColumns = grib_arguments_get_name(gh,args,n++);
+    self->numberOfPoints  = grib_arguments_get_name(gh,args,n++);
 
     a->length = 0;
 }
+
 static void dump(grib_accessor* a, grib_dumper* dumper)
 {
     grib_dump_values(dumper,a);
@@ -167,13 +171,14 @@ static void dump(grib_accessor* a, grib_dumper* dumper)
 static int value_count(grib_accessor* a,long* count)
 {
     grib_accessor_data_apply_boustrophedonic_bitmap *self =(grib_accessor_data_apply_boustrophedonic_bitmap*)a;
+    grib_handle* gh = grib_handle_of_accessor(a);
     size_t len = 0;
     int ret = 0;
 
     /* This accessor is for data with a bitmap after all */
-    Assert(grib_find_accessor(a->parent->h, self->bitmap));
+    Assert(grib_find_accessor(gh, self->bitmap));
 
-    ret = grib_get_size(a->parent->h, self->bitmap, &len);
+    ret = grib_get_size(gh, self->bitmap, &len);
     *count=len;
     return ret;
 }
@@ -181,6 +186,7 @@ static int value_count(grib_accessor* a,long* count)
 static int unpack_double(grib_accessor* a, double* val, size_t *len)
 {
     grib_accessor_data_apply_boustrophedonic_bitmap* self =  (grib_accessor_data_apply_boustrophedonic_bitmap*)a;
+    grib_handle* gh = grib_handle_of_accessor(a);
 
     size_t i = 0, j = 0, n_vals = 0, irow = 0;
     long nn=0;
@@ -194,21 +200,21 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
     n_vals=nn;
     if (err) return err;
 
-    err=grib_get_long_internal(a->parent->h,self->numberOfRows,&numberOfRows);
+    err=grib_get_long_internal(gh,self->numberOfRows,&numberOfRows);
     if (err) return err;
-    err=grib_get_long_internal(a->parent->h,self->numberOfColumns,&numberOfColumns);
+    err=grib_get_long_internal(gh,self->numberOfColumns,&numberOfColumns);
     if (err) return err;
-    err=grib_get_long_internal(a->parent->h,self->numberOfPoints,&numberOfPoints);
+    err=grib_get_long_internal(gh,self->numberOfPoints,&numberOfPoints);
     if (err) return err;
     Assert(nn == numberOfPoints);
 
-    if(!grib_find_accessor(a->parent->h,self->bitmap))
-        return grib_get_double_array_internal(a->parent->h,self->coded_values,val,len);
+    if(!grib_find_accessor(gh,self->bitmap))
+        return grib_get_double_array_internal(gh,self->coded_values,val,len);
 
-    if((err = grib_get_size(a->parent->h,self->coded_values,&coded_n_vals)) != GRIB_SUCCESS)
+    if((err = grib_get_size(gh,self->coded_values,&coded_n_vals)) != GRIB_SUCCESS)
         return err;
 
-    if((err = grib_get_double_internal(a->parent->h,self->missing_value,&missing_value))
+    if((err = grib_get_double_internal(gh,self->missing_value,&missing_value))
             != GRIB_SUCCESS)  return err;
 
     if(*len < n_vals) {
@@ -224,21 +230,21 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
         return GRIB_SUCCESS;
     }
 
-    if((err = grib_get_double_array_internal(a->parent->h,self->bitmap,val,&n_vals))
+    if((err = grib_get_double_array_internal(gh,self->bitmap,val,&n_vals))
             != GRIB_SUCCESS)
         return err;
 
-    coded_vals = (double*)grib_context_malloc(a->parent->h->context,coded_n_vals*sizeof(double));
+    coded_vals = (double*)grib_context_malloc(a->context,coded_n_vals*sizeof(double));
     if(coded_vals == NULL) return GRIB_OUT_OF_MEMORY;
 
-    if((err = grib_get_double_array_internal(a->parent->h,self->coded_values,coded_vals,&coded_n_vals))
+    if((err = grib_get_double_array_internal(gh,self->coded_values,coded_vals,&coded_n_vals))
             != GRIB_SUCCESS)
     {
-        grib_context_free(a->parent->h->context,coded_vals);
+        grib_context_free(a->context,coded_vals);
         return err;
     }
 
-    grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG,
+    grib_context_log(a->context, GRIB_LOG_DEBUG,
             "grib_accessor_class_data_apply_boustrophedonic_bitmap: unpack_double : creating %s, %d values",
             a->name, n_vals);
 
@@ -274,8 +280,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
             val[i] = coded_vals[j++];
             if(j>coded_n_vals)
             {
-                grib_context_free(a->parent->h->context,coded_vals);
-                grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
+                grib_context_free(a->context,coded_vals);
+                grib_context_log(a->context, GRIB_LOG_ERROR,
                         "grib_accessor_class_data_apply_boustrophedonic_bitmap [%s]:"
                         " unpack_double :  number of coded values does not match bitmap %ld %ld",
                         a->name,coded_n_vals,n_vals);
@@ -287,13 +293,14 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
 
     *len =  n_vals;
 
-    grib_context_free(a->parent->h->context,coded_vals);
+    grib_context_free(a->context,coded_vals);
     return err;
 }
 
 static int unpack_double_element(grib_accessor* a, size_t idx,double* val)
 {
     grib_accessor_data_apply_boustrophedonic_bitmap* self =  (grib_accessor_data_apply_boustrophedonic_bitmap*)a;
+    grib_handle* gh = grib_handle_of_accessor(a);
     int err = 0,i=0;
     size_t cidx=0;
     double missing_value = 0;
@@ -305,34 +312,35 @@ static int unpack_double_element(grib_accessor* a, size_t idx,double* val)
     n_vals=nn;
     if (err) return err;
 
-    if(!grib_find_accessor(a->parent->h,self->bitmap))
-        return grib_get_double_element_internal(a->parent->h,self->coded_values,idx,val);
+    if(!grib_find_accessor(gh,self->bitmap))
+        return grib_get_double_element_internal(gh,self->coded_values,idx,val);
 
-    if((err = grib_get_double_internal(a->parent->h,self->missing_value,&missing_value)) != GRIB_SUCCESS)
+    if((err = grib_get_double_internal(gh,self->missing_value,&missing_value)) != GRIB_SUCCESS)
         return err;
 
-    if((err = grib_get_double_element_internal(a->parent->h,self->bitmap,idx,val)) != GRIB_SUCCESS)
+    if((err = grib_get_double_element_internal(gh,self->bitmap,idx,val)) != GRIB_SUCCESS)
         return err;
 
     if (*val == 0) {*val=missing_value;return GRIB_SUCCESS;}
 
-    bvals = (double*)grib_context_malloc(a->parent->h->context,n_vals*sizeof(double));
+    bvals = (double*)grib_context_malloc(a->context,n_vals*sizeof(double));
     if(bvals == NULL) return GRIB_OUT_OF_MEMORY;
 
-    if((err = grib_get_double_array_internal(a->parent->h,self->bitmap,bvals,&n_vals)) != GRIB_SUCCESS)
+    if((err = grib_get_double_array_internal(gh,self->bitmap,bvals,&n_vals)) != GRIB_SUCCESS)
         return err;
 
     cidx=0;
     for (i=0;i<idx;i++) {cidx+=bvals[i];}
 
-    grib_context_free(a->parent->h->context,bvals);
+    grib_context_free(a->context,bvals);
 
-    return grib_get_double_element_internal(a->parent->h,self->coded_values,cidx,val);
+    return grib_get_double_element_internal(gh,self->coded_values,cidx,val);
 }
 
 static int pack_double(grib_accessor* a, const double* val, size_t *len)
 {
     grib_accessor_data_apply_boustrophedonic_bitmap* self =  (grib_accessor_data_apply_boustrophedonic_bitmap*)a;
+    grib_handle* gh = grib_handle_of_accessor(a);
     int err = 0;
     size_t bmaplen = *len;
     size_t irow = 0;
@@ -346,27 +354,27 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
     if (*len ==0) return GRIB_NO_VALUES;
 
-    if(!grib_find_accessor(a->parent->h,self->bitmap)){
-        err = grib_set_double_array_internal(a->parent->h,self->coded_values,val,*len);
+    if(!grib_find_accessor(gh,self->bitmap)){
+        err = grib_set_double_array_internal(gh,self->coded_values,val,*len);
         /*printf("SETTING TOTAL number_of_data_points %s %ld\n",self->number_of_data_points,*len);*/
         /*if(self->number_of_data_points)
-            grib_set_long_internal(a->parent->h,self->number_of_data_points,*len);*/
+            grib_set_long_internal(gh,self->number_of_data_points,*len);*/
         return err;
     }
 
-    if((err = grib_get_double_internal(a->parent->h,self->missing_value,&missing_value)) != GRIB_SUCCESS)
+    if((err = grib_get_double_internal(gh,self->missing_value,&missing_value)) != GRIB_SUCCESS)
         return err;
 
-    err=grib_get_long_internal(a->parent->h,self->numberOfRows, &numberOfRows);
+    err=grib_get_long_internal(gh,self->numberOfRows, &numberOfRows);
     if (err) return err;
-    err=grib_get_long_internal(a->parent->h,self->numberOfColumns, &numberOfColumns);
+    err=grib_get_long_internal(gh,self->numberOfColumns, &numberOfColumns);
     if (err) return err;
-    err=grib_get_long_internal(a->parent->h,self->numberOfPoints,&numberOfPoints);
+    err=grib_get_long_internal(gh,self->numberOfPoints,&numberOfPoints);
     if (err) return err;
     Assert(numberOfPoints == bmaplen);
 
     /* Create a copy of the incoming 'val' array because we're going to change it */
-    values = (double*)grib_context_malloc_clear(a->parent->h->context, sizeof(double)*numberOfPoints);
+    values = (double*)grib_context_malloc_clear(a->context, sizeof(double)*numberOfPoints);
     if (!values) return GRIB_OUT_OF_MEMORY;
     for(i=0; i<numberOfPoints; ++i) {
         values[i] = val[i];
@@ -390,19 +398,19 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
         }
     }
     /* Now set the bitmap based on the array with the boustrophedonic ordering */
-    if((err = grib_set_double_array_internal(a->parent->h,self->bitmap,values,bmaplen)) != GRIB_SUCCESS)
+    if((err = grib_set_double_array_internal(gh,self->bitmap,values,bmaplen)) != GRIB_SUCCESS)
         return err;
 
-    grib_context_free(a->parent->h->context,values);
+    grib_context_free(a->context,values);
 
     coded_n_vals = *len;
 
     if(coded_n_vals < 1){
-        err = grib_set_double_array_internal(a->parent->h,self->coded_values,NULL,0);
+        err = grib_set_double_array_internal(gh,self->coded_values,NULL,0);
         return err;
     }
 
-    coded_vals = (double*)grib_context_malloc_clear(a->parent->h->context,coded_n_vals*sizeof(double));
+    coded_vals = (double*)grib_context_malloc_clear(a->context,coded_n_vals*sizeof(double));
     if(!coded_vals) return GRIB_OUT_OF_MEMORY;
 
     for(i=0; i<*len ; i++)
@@ -414,15 +422,15 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
         }
     }
 
-    err = grib_set_double_array_internal(a->parent->h,self->coded_values,coded_vals,j);
+    err = grib_set_double_array_internal(gh,self->coded_values,coded_vals,j);
     if (j==0) {
         /*if (self->number_of_values)
-            err=grib_set_long_internal(a->parent->h,self->number_of_values,0);*/
+            err=grib_set_long_internal(gh,self->number_of_values,0);*/
         if (self->binary_scale_factor)
-            err=grib_set_long_internal(a->parent->h,self->binary_scale_factor,0);
+            err=grib_set_long_internal(gh,self->binary_scale_factor,0);
     }
 
-    grib_context_free(a->parent->h->context,coded_vals);
+    grib_context_free(a->context,coded_vals);
 
     return err;
 }
@@ -430,7 +438,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 static int get_native_type(grib_accessor* a)
 {
     /*  grib_accessor_data_apply_boustrophedonic_bitmap* self =  (grib_accessor_data_apply_boustrophedonic_bitmap*)a;
-    return grib_accessor_get_native_type(grib_find_accessor(a->parent->h,self->coded_values));*/
+    return grib_accessor_get_native_type(grib_find_accessor(grib_handle_of_accessor(a),self->coded_values));*/
 
     return GRIB_TYPE_DOUBLE;
 }
diff --git a/src/grib_accessor_class_data_apply_gdsnotpresent.c b/src/grib_accessor_class_data_apply_gdsnotpresent.c
index 5743e7a..694e655 100644
--- a/src/grib_accessor_class_data_apply_gdsnotpresent.c
+++ b/src/grib_accessor_class_data_apply_gdsnotpresent.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -111,6 +111,7 @@ static grib_accessor_class _grib_accessor_class_data_apply_gdsnotpresent = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -145,6 +146,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -154,14 +156,14 @@ static void init(grib_accessor* a,const long v, grib_arguments* args)
   int n=0;
   grib_accessor_data_apply_gdsnotpresent *self =(grib_accessor_data_apply_gdsnotpresent*)a;
 
-  self->coded_values  = grib_arguments_get_name(a->parent->h,args,n++);
-  self->number_of_values        = grib_arguments_get_name(a->parent->h,args,n++);
-  self->number_of_points = grib_arguments_get_name(a->parent->h,args,n++);
-  self->latitude_of_first_point = grib_arguments_get_name(a->parent->h,args,n++);
-  self->ni = grib_arguments_get_name(a->parent->h,args,n++);
-  self->missing_value = grib_arguments_get_name(a->parent->h,args,n++);
-  self->bitmap_present = grib_arguments_get_name(a->parent->h,args,n++);
-  self->bitmap = grib_arguments_get_name(a->parent->h,args,n++);
+  self->coded_values  = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->number_of_values        = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->number_of_points = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->latitude_of_first_point = 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->missing_value = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->bitmap_present = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->bitmap = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
 
   a->length = 0;
 }
@@ -178,9 +180,9 @@ static int value_count(grib_accessor* a,long* number_of_points)
   grib_accessor_data_apply_gdsnotpresent *self =(grib_accessor_data_apply_gdsnotpresent*)a;
 
   *number_of_points=0;
-  if((ret = grib_get_long(a->parent->h,self->number_of_points,number_of_points))
+  if((ret = grib_get_long(grib_handle_of_accessor(a),self->number_of_points,number_of_points))
        !=  GRIB_SUCCESS) {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
+    grib_context_log(a->context, GRIB_LOG_ERROR,
       "grib_accessor_data_apply_gdsnotpresent: value_count: unable to get number of points");
   }
 
@@ -207,19 +209,19 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
   n_vals=nn;
   if (err) return err;
 
-  if((err = grib_get_long(a->parent->h,self->number_of_points,&number_of_points))
+  if((err = grib_get_long(grib_handle_of_accessor(a),self->number_of_points,&number_of_points))
        !=  GRIB_SUCCESS) return err;
 
-  if((err = grib_get_long(a->parent->h,self->number_of_values,&number_of_values))
+  if((err = grib_get_long(grib_handle_of_accessor(a),self->number_of_values,&number_of_values))
        !=  GRIB_SUCCESS) return err;
 
-  if((err = grib_get_long(a->parent->h,self->latitude_of_first_point,&latitude_of_first_point))
+  if((err = grib_get_long(grib_handle_of_accessor(a),self->latitude_of_first_point,&latitude_of_first_point))
        !=  GRIB_SUCCESS) return err;
 
-  if((err = grib_get_long(a->parent->h,self->missing_value,&missing_value))
+  if((err = grib_get_long(grib_handle_of_accessor(a),self->missing_value,&missing_value))
        !=  GRIB_SUCCESS) return err;
 
-  if((err = grib_get_long(a->parent->h,self->ni,&ni))
+  if((err = grib_get_long(grib_handle_of_accessor(a),self->ni,&ni))
        !=  GRIB_SUCCESS) return err;
 
   if(*len < number_of_points)
@@ -229,25 +231,25 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
   }
 
   if(number_of_values > 0){
-    coded_vals = (double*)grib_context_malloc(a->parent->h->context,number_of_values*sizeof(double));
+    coded_vals = (double*)grib_context_malloc(a->context,number_of_values*sizeof(double));
 
     if(coded_vals == NULL)
       return GRIB_OUT_OF_MEMORY;
   }
 
   size=number_of_values;
-  if((err=grib_get_double_array_internal(a->parent->h,self->coded_values,coded_vals,&size))
+  if((err=grib_get_double_array_internal(grib_handle_of_accessor(a),self->coded_values,coded_vals,&size))
     != GRIB_SUCCESS)  {
-    grib_context_free(a->parent->h->context,coded_vals);
+    grib_context_free(a->context,coded_vals);
     return err;
   }
   if (number_of_values!=size) {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
+    grib_context_log(a->context, GRIB_LOG_ERROR,
       "grib_accessor_data_apply_gdsnotpresent : wrong numberOfValues %ld != %ld",
       number_of_values,size);
   }
 
-  grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG,
+  grib_context_log(a->context, GRIB_LOG_DEBUG,
       "grib_accessor_data_apply_gdsnotpresent : unpack_double : creating %s, %d values",
       a->name, number_of_points);
 
@@ -262,7 +264,7 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
 
   *len =  number_of_points;
 
-  grib_context_free(a->parent->h->context,coded_vals);
+  grib_context_free(a->context,coded_vals);
   return err;
 }
 
@@ -276,25 +278,25 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
   if (*len ==0) return GRIB_NO_VALUES;
 
-  ret=grib_set_long(a->parent->h,self->bitmap_present,bitmap_present);
+  ret=grib_set_long(grib_handle_of_accessor(a),self->bitmap_present,bitmap_present);
   if(ret) {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
+    grib_context_log(a->context, GRIB_LOG_ERROR,
        "Accessor %s cannont pack value for %s error %d \n", a->name, self->bitmap_present, ret);
     return ret;
   }
 
 #if 0
-  if(!grib_find_accessor(a->parent->h,self->bitmap)){
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
+  if(!grib_find_accessor(grib_handle_of_accessor(a),self->bitmap)){
+    grib_context_log(a->context, GRIB_LOG_ERROR,
        "Accessor %s cannont access bitmap \n", a->name, self->bitmap_present, ret);
     return ret;
   }
 #endif
 
 
-  ret = grib_set_double_array_internal(a->parent->h,self->coded_values,val,*len);
+  ret = grib_set_double_array_internal(grib_handle_of_accessor(a),self->coded_values,val,*len);
   if(ret) {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
+    grib_context_log(a->context, GRIB_LOG_ERROR,
        "Accessor %s cannont pack value for %s error %d \n", a->name, self->coded_values, ret);
     return ret;
   }
@@ -305,7 +307,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 static int  get_native_type(grib_accessor* a)
 {
 /*  grib_accessor_data_apply_gdsnotpresent* self =  (grib_accessor_data_apply_gdsnotpresent*)a;
-    return grib_accessor_get_native_type(grib_find_accessor(a->parent->h,self->coded_values));*/
+    return grib_accessor_get_native_type(grib_find_accessor(grib_handle_of_accessor(a),self->coded_values));*/
 
    return GRIB_TYPE_DOUBLE;
 }
diff --git a/src/grib_accessor_class_data_ccsds_packing.c b/src/grib_accessor_class_data_ccsds_packing.c
index 0b6c2be..00f7d96 100644
--- a/src/grib_accessor_class_data_ccsds_packing.c
+++ b/src/grib_accessor_class_data_ccsds_packing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -115,6 +115,7 @@ static grib_accessor_class _grib_accessor_class_data_ccsds_packing = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -151,6 +152,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -159,17 +161,17 @@ static void init(grib_accessor* a,const long v, grib_arguments* args)
 {
     grib_accessor_data_ccsds_packing *self =(grib_accessor_data_ccsds_packing*)a;
 
-    self->number_of_values      = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->reference_value       = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->binary_scale_factor   = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->decimal_scale_factor  = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->bits_per_value        = grib_arguments_get_name(a->parent->h,args,self->carg++);
+    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->number_of_data_points  = grib_arguments_get_name(a->parent->h,args,self->carg++);
+    self->number_of_data_points  = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
 
-    self->ccsds_flags  = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->ccsds_block_size  = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->ccsds_rsi  = grib_arguments_get_name(a->parent->h,args,self->carg++);
+    self->ccsds_flags  = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+    self->ccsds_block_size  = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+    self->ccsds_rsi  = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
 
     a->flags |= GRIB_ACCESSOR_FLAG_DATA;
 
@@ -179,7 +181,7 @@ static int value_count(grib_accessor* a, long* count)
 {
     grib_accessor_data_ccsds_packing *self =(grib_accessor_data_ccsds_packing*)a;
     *count = 0;
-    return grib_get_long_internal(a->parent->h,self->number_of_values,count);
+    return grib_get_long_internal(grib_handle_of_accessor(a),self->number_of_values,count);
 }
 
 #if defined (HAVE_LIBAEC) || defined(HAVE_AEC)
@@ -221,20 +223,20 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
         return err;
     n_vals=nn;
 
-    if((err = grib_get_long_internal(a->parent->h,self->bits_per_value,&bits_per_value)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->bits_per_value,&bits_per_value)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_double_internal(a->parent->h,self->reference_value, &reference_value)) != GRIB_SUCCESS)
+    if((err = grib_get_double_internal(grib_handle_of_accessor(a),self->reference_value, &reference_value)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_long_internal(a->parent->h,self->binary_scale_factor, &binary_scale_factor)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->binary_scale_factor, &binary_scale_factor)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_long_internal(a->parent->h,self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS)
         return err;
 
-    if((err = grib_get_long_internal(a->parent->h,self->ccsds_flags,&ccsds_flags)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->ccsds_flags,&ccsds_flags)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_long_internal(a->parent->h,self->ccsds_block_size, &ccsds_block_size)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->ccsds_block_size, &ccsds_block_size)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_long_internal(a->parent->h,self->ccsds_rsi, &ccsds_rsi)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->ccsds_rsi, &ccsds_rsi)) != GRIB_SUCCESS)
         return err;
 
     bscale = grib_power(binary_scale_factor,2);
@@ -254,7 +256,7 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
         return GRIB_SUCCESS;
     }
 
-    buf = (unsigned char*)a->parent->h->buffer->data;
+    buf = (unsigned char*)grib_handle_of_accessor(a)->buffer->data;
     buf += grib_byte_offset(a);
 
     strm.flags = ccsds_flags;
@@ -274,7 +276,7 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
 
     bits8 = ((bits_per_value + 7)/8)*8;
     size = n_vals * (bits_per_value + 7)/8;
-    decoded = grib_context_buffer_malloc_clear(a->parent->h->context,size);
+    decoded = grib_context_buffer_malloc_clear(a->context,size);
     if(!decoded) {
         err = GRIB_OUT_OF_MEMORY;
         goto cleanup;
@@ -303,7 +305,7 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
 
 
 cleanup:
-    grib_context_buffer_free(a->parent->h->context,decoded);
+    grib_context_buffer_free(a->context,decoded);
     return err;
 
 }
@@ -347,21 +349,21 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
         return err;
     n_vals=nn;
 
-    if((err = grib_get_long_internal(a->parent->h,self->bits_per_value,&bits_per_value)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->bits_per_value,&bits_per_value)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_double_internal(a->parent->h,self->reference_value, &reference_value)) != GRIB_SUCCESS)
+    if((err = grib_get_double_internal(grib_handle_of_accessor(a),self->reference_value, &reference_value)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_long_internal(a->parent->h,self->binary_scale_factor, &binary_scale_factor)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->binary_scale_factor, &binary_scale_factor)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_long_internal(a->parent->h,self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS)
         return err;
 
 
-    if((err = grib_get_long_internal(a->parent->h,self->ccsds_flags,&ccsds_flags)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->ccsds_flags,&ccsds_flags)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_long_internal(a->parent->h,self->ccsds_block_size, &ccsds_block_size)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->ccsds_block_size, &ccsds_block_size)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_long_internal(a->parent->h,self->ccsds_rsi, &ccsds_rsi)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->ccsds_rsi, &ccsds_rsi)) != GRIB_SUCCESS)
         return err;
 
 
@@ -379,17 +381,17 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
         for(i = 1 ; i < n_vals; i++)
             Assert(val[i] == val[0]);
 
-        if((err = grib_set_double_internal(a->parent->h,self->reference_value, val[0])) != GRIB_SUCCESS)
+        if((err = grib_set_double_internal(grib_handle_of_accessor(a),self->reference_value, val[0])) != GRIB_SUCCESS)
             return err;
         {
             /* Make sure we can decode it again */
             double ref = 1e-100;
-            grib_get_double_internal(a->parent->h,self->reference_value,&ref);
+            grib_get_double_internal(grib_handle_of_accessor(a),self->reference_value,&ref);
             printf("%g %g %g\n",reference_value,ref,reference_value-ref);
             Assert(ref == reference_value);
         }
 
-        if((err = grib_set_long_internal(a->parent->h,self->number_of_values, n_vals)) !=  GRIB_SUCCESS)
+        if((err = grib_set_long_internal(grib_handle_of_accessor(a),self->number_of_values, n_vals)) !=  GRIB_SUCCESS)
             return err;
 
         grib_buffer_replace(a, NULL, 0,1,1);
@@ -397,7 +399,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
         return GRIB_SUCCESS;
     }
 
-    if((err = grib_get_long_internal(a->parent->h,self->number_of_data_points,&number_of_data_points)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->number_of_data_points,&number_of_data_points)) != GRIB_SUCCESS)
         return err;
 
 
@@ -418,9 +420,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     min *= d;
     max *= d;
 
-    if (grib_get_nearest_smaller_value(a->parent->h,self->reference_value,min,&reference_value)
+    if (grib_get_nearest_smaller_value(grib_handle_of_accessor(a),self->reference_value,min,&reference_value)
             !=GRIB_SUCCESS) {
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+        grib_context_log(a->context,GRIB_LOG_ERROR,
                          "unable to find nearest_smaller_value of %g for %s",min,self->reference_value);
         exit(GRIB_INTERNAL_ERROR);
     }
@@ -435,7 +437,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     divisor = grib_power(-binary_scale_factor,2);
 
     bits8 = (bits_per_value+7)/8*8;
-    encoded = grib_context_buffer_malloc_clear(a->parent->h->context,bits8/8*n_vals);
+    encoded = grib_context_buffer_malloc_clear(a->context,bits8/8*n_vals);
 
     if(!encoded) {
         err = GRIB_OUT_OF_MEMORY;
@@ -457,11 +459,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     }
     /*       buflen = n_vals*(bits_per_value/8);*/
 
-    grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG,
+    grib_context_log(a->context, GRIB_LOG_DEBUG,
                      "grib_accessor_data_ccsds_packing : pack_double : packing %s, %d values", a->name, n_vals);
 
     buflen += 10240;
-    buf = grib_context_buffer_malloc_clear(a->parent->h->context,buflen);
+    buf = grib_context_buffer_malloc_clear(a->context,buflen);
 
     if(!buf) {
         err = GRIB_OUT_OF_MEMORY;
@@ -469,19 +471,19 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     }
 
 
-    if((err = grib_set_double_internal(a->parent->h,self->reference_value, reference_value)) != GRIB_SUCCESS)
+    if((err = grib_set_double_internal(grib_handle_of_accessor(a),self->reference_value, reference_value)) != GRIB_SUCCESS)
         return err;
     {
         /* Make sure we can decode it again */
         double ref = 1e-100;
-        grib_get_double_internal(a->parent->h,self->reference_value,&ref);
+        grib_get_double_internal(grib_handle_of_accessor(a),self->reference_value,&ref);
         Assert(ref == reference_value);
     }
 
-    if((err = grib_set_long_internal(a->parent->h,self->binary_scale_factor, binary_scale_factor)) != GRIB_SUCCESS)
+    if((err = grib_set_long_internal(grib_handle_of_accessor(a),self->binary_scale_factor, binary_scale_factor)) != GRIB_SUCCESS)
         return err;
 
-    if((err = grib_set_long_internal(a->parent->h,self->decimal_scale_factor, decimal_scale_factor)) != GRIB_SUCCESS)
+    if((err = grib_set_long_internal(grib_handle_of_accessor(a),self->decimal_scale_factor, decimal_scale_factor)) != GRIB_SUCCESS)
         return err;
 
 
@@ -524,14 +526,14 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     grib_buffer_replace(a, buf, buflen ,1,1);
 
 cleanup:
-    grib_context_buffer_free(a->parent->h->context,buf);
-    grib_context_buffer_free(a->parent->h->context,encoded);
+    grib_context_buffer_free(a->context,buf);
+    grib_context_buffer_free(a->context,encoded);
 
     if(err == GRIB_SUCCESS)
-        err = grib_set_long_internal(a->parent->h,self->number_of_values, *len);
+        err = grib_set_long_internal(grib_handle_of_accessor(a),self->number_of_values, *len);
 
     if(err == GRIB_SUCCESS)
-        err = grib_set_long_internal(a->parent->h,self->bits_per_value, strm.bits_per_sample);
+        err = grib_set_long_internal(grib_handle_of_accessor(a),self->bits_per_value, strm.bits_per_sample);
 
     return err;
 }
@@ -539,15 +541,15 @@ cleanup:
 
 static int  unpack_double(grib_accessor* a, double* val, size_t *len)
 {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
-                     "grib_accessor_data_ccsds_packing: ccsds support not enabled. Please rerun configure with --with-aec");
+    grib_context_log(a->context, GRIB_LOG_ERROR,
+                     "grib_accessor_data_ccsds_packing: ccsds support not enabled.");
     return GRIB_NOT_IMPLEMENTED;
 }
 
 static int pack_double(grib_accessor* a, const double* val, size_t *len)
 {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
-                     "grib_accessor_data_ccsds_packing: ccsds support not enabled. Please rerun configure with --with-aec");
+    grib_context_log(a->context, GRIB_LOG_ERROR,
+                     "grib_accessor_data_ccsds_packing: ccsds support not enabled.");
     return GRIB_NOT_IMPLEMENTED;
 }
 
diff --git a/src/grib_accessor_class_data_complex_packing.c b/src/grib_accessor_class_data_complex_packing.c
index 168e201..5211998 100644
--- a/src/grib_accessor_class_data_complex_packing.c
+++ b/src/grib_accessor_class_data_complex_packing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -125,6 +125,7 @@ static grib_accessor_class _grib_accessor_class_data_complex_packing = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -161,6 +162,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -170,720 +172,722 @@ typedef double        (*decode_float_proc)(unsigned long);
 
 static void init(grib_accessor* a,const long v, grib_arguments* args)
 {
-  grib_accessor_data_complex_packing *self =(grib_accessor_data_complex_packing*)a;
-
-  self->GRIBEX_sh_bug_present     = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->ieee_floats               = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->laplacianOperatorIsSet    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->laplacianOperator         = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->sub_j                     = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->sub_k                     = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->sub_m                     = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->pen_j                     = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->pen_k                     = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->pen_m                     = grib_arguments_get_name(a->parent->h,args,self->carg++);
-
-  a->flags |= GRIB_ACCESSOR_FLAG_DATA;
+    grib_accessor_data_complex_packing *self =(grib_accessor_data_complex_packing*)a;
+    grib_handle* gh = grib_handle_of_accessor(a);
+
+    self->GRIBEX_sh_bug_present     = grib_arguments_get_name(gh,args,self->carg++);
+    self->ieee_floats               = grib_arguments_get_name(gh,args,self->carg++);
+    self->laplacianOperatorIsSet    = grib_arguments_get_name(gh,args,self->carg++);
+    self->laplacianOperator         = grib_arguments_get_name(gh,args,self->carg++);
+    self->sub_j                     = grib_arguments_get_name(gh,args,self->carg++);
+    self->sub_k                     = grib_arguments_get_name(gh,args,self->carg++);
+    self->sub_m                     = grib_arguments_get_name(gh,args,self->carg++);
+    self->pen_j                     = grib_arguments_get_name(gh,args,self->carg++);
+    self->pen_k                     = grib_arguments_get_name(gh,args,self->carg++);
+    self->pen_m                     = grib_arguments_get_name(gh,args,self->carg++);
+
+    a->flags |= GRIB_ACCESSOR_FLAG_DATA;
 }
 
-
 static int value_count(grib_accessor* a,long* count)
 {
-  grib_accessor_data_complex_packing *self =(grib_accessor_data_complex_packing*)a;
-  int ret = 0;
+    grib_accessor_data_complex_packing *self =(grib_accessor_data_complex_packing*)a;
+    int ret = 0;
+    grib_handle* gh = grib_handle_of_accessor(a);
 
-  long   pen_j= 0;
-  long   pen_k= 0;
-  long   pen_m= 0;
+    long   pen_j= 0;
+    long   pen_k= 0;
+    long   pen_m= 0;
 
-  *count=0;
+    *count=0;
 
-  if(a->length == 0) return 0;
+    if(a->length == 0) return 0;
 
-  if((ret = grib_get_long_internal(a->parent->h,self->pen_j,&pen_j)) != GRIB_SUCCESS)
-    return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->pen_k,&pen_k)) != GRIB_SUCCESS)
-    return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->pen_m,&pen_m)) != GRIB_SUCCESS)
-    return ret;
+    if((ret = grib_get_long_internal(gh,self->pen_j,&pen_j)) != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_long_internal(gh,self->pen_k,&pen_k)) != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_long_internal(gh,self->pen_m,&pen_m)) != GRIB_SUCCESS)
+        return ret;
 
-  if (pen_j != pen_k || pen_j!=pen_m ) {
-    grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"pen_j=%ld, pen_k=%ld, pen_m=%ld\n",pen_j,pen_k,pen_m);
-  	Assert ((pen_j ==  pen_k) && (pen_j == pen_m));
-  }
-  *count=(pen_j+1)*(pen_j+2);
+    if (pen_j != pen_k || pen_j!=pen_m ) {
+        grib_context_log(a->context,GRIB_LOG_ERROR,"pen_j=%ld, pen_k=%ld, pen_m=%ld\n",pen_j,pen_k,pen_m);
+        Assert ((pen_j ==  pen_k) && (pen_j == pen_m));
+    }
+    *count=(pen_j+1)*(pen_j+2);
 
-  return ret;
+    return ret;
 }
 
 
 static int  unpack_double(grib_accessor* a, double* val, size_t *len)
 {
-  grib_accessor_data_complex_packing* self =  (grib_accessor_data_complex_packing*)a;
-
-  size_t i = 0;
-  int ret = GRIB_SUCCESS;
-  long   hcount = 0;
-  long   lcount = 0;
-  long   hpos = 0;
-  long   lup = 0;
-  long   mmax = 0;
-  long   n_vals = 0;
-  double *scals  = NULL;
-  double *pscals=NULL,*pval=NULL;
-
-  double s = 0;
-  double d = 0;
-  double laplacianOperator = 0;
-  unsigned char* buf = NULL;
-  unsigned char* hres = NULL;
-  unsigned char* lres = NULL;
-  unsigned long packed_offset;
-  long   lpos = 0;
-
-  long   maxv = 0;
-  long   GRIBEX_sh_bug_present =0;
-  long ieee_floats  = 0;
-
-  long   offsetdata           = 0;
-  long   bits_per_value          = 0;
-  double reference_value      = 0;
-  long   binary_scale_factor         = 0;
-  long   decimal_scale_factor = 0;
-
-
-  long   sub_j= 0;
-  long   sub_k= 0;
-  long   sub_m= 0;
-  long   pen_j= 0;
-  long   pen_k= 0;
-  long   pen_m= 0;
-
-  double operat= 0;
-  int bytes;
-  int err=0;
-
-  decode_float_proc decode_float = NULL;
-
-  err=grib_value_count(a,&n_vals);
-  if (err) return err;
-
-  if(*len < n_vals){
-    *len = n_vals;
-    return GRIB_ARRAY_TOO_SMALL;
-  }
-
-  if((ret = grib_get_long_internal(a->parent->h,self->offsetdata,&offsetdata))
-      != GRIB_SUCCESS)   return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->bits_per_value,&bits_per_value))
-      != GRIB_SUCCESS)   return ret;
-  if((ret = grib_get_double_internal(a->parent->h,self->reference_value,&reference_value))
-      != GRIB_SUCCESS)   return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->binary_scale_factor,&binary_scale_factor))
-      != GRIB_SUCCESS)           return ret;
-
-  if((ret = grib_get_long_internal(a->parent->h,self->decimal_scale_factor,&decimal_scale_factor))
-      != GRIB_SUCCESS)
-    return ret;
-
-  if((ret = grib_get_long_internal(a->parent->h,self->GRIBEX_sh_bug_present,&GRIBEX_sh_bug_present))
-      != GRIB_SUCCESS)
-    return ret;
-
-  if((ret = grib_get_long_internal(a->parent->h,self->ieee_floats,&ieee_floats)) != GRIB_SUCCESS)
-    return ret;
-
-  if((ret = grib_get_double_internal(a->parent->h,self->laplacianOperator,&laplacianOperator))
-      != GRIB_SUCCESS)
-    return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->sub_j,&sub_j)) != GRIB_SUCCESS)
-    return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->sub_k,&sub_k)) != GRIB_SUCCESS)
-    return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->sub_m,&sub_m)) != GRIB_SUCCESS)
-    return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->pen_j,&pen_j)) != GRIB_SUCCESS)
-    return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->pen_k,&pen_k)) != GRIB_SUCCESS)
-    return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->pen_m,&pen_m)) != GRIB_SUCCESS)
-    return ret;
-
-  self->dirty=0;
+    grib_accessor_data_complex_packing* self =  (grib_accessor_data_complex_packing*)a;
+    grib_handle* gh = grib_handle_of_accessor(a);
+
+    size_t i = 0;
+    int ret = GRIB_SUCCESS;
+    long   hcount = 0;
+    long   lcount = 0;
+    long   hpos = 0;
+    long   lup = 0;
+    long   mmax = 0;
+    long   n_vals = 0;
+    double *scals  = NULL;
+    double *pscals=NULL,*pval=NULL;
+
+    double s = 0;
+    double d = 0;
+    double laplacianOperator = 0;
+    unsigned char* buf = NULL;
+    unsigned char* hres = NULL;
+    unsigned char* lres = NULL;
+    unsigned long packed_offset;
+    long   lpos = 0;
+
+    long   maxv = 0;
+    long   GRIBEX_sh_bug_present =0;
+    long ieee_floats  = 0;
+
+    long   offsetdata           = 0;
+    long   bits_per_value          = 0;
+    double reference_value      = 0;
+    long   binary_scale_factor         = 0;
+    long   decimal_scale_factor = 0;
+
+    long   sub_j= 0;
+    long   sub_k= 0;
+    long   sub_m= 0;
+    long   pen_j= 0;
+    long   pen_k= 0;
+    long   pen_m= 0;
+
+    double operat= 0;
+    int bytes;
+    int err=0;
+
+    decode_float_proc decode_float = NULL;
+
+    err=grib_value_count(a,&n_vals);
+    if (err) return err;
+
+    if(*len < n_vals){
+        *len = n_vals;
+        return GRIB_ARRAY_TOO_SMALL;
+    }
 
-  switch (ieee_floats) {
+    if((ret = grib_get_long_internal(gh,self->offsetdata,&offsetdata))
+            != GRIB_SUCCESS)   return ret;
+    if((ret = grib_get_long_internal(gh,self->bits_per_value,&bits_per_value))
+            != GRIB_SUCCESS)   return ret;
+    if((ret = grib_get_double_internal(gh,self->reference_value,&reference_value))
+            != GRIB_SUCCESS)   return ret;
+    if((ret = grib_get_long_internal(gh,self->binary_scale_factor,&binary_scale_factor))
+            != GRIB_SUCCESS)           return ret;
+
+    if((ret = grib_get_long_internal(gh,self->decimal_scale_factor,&decimal_scale_factor))
+            != GRIB_SUCCESS)
+        return ret;
+
+    if((ret = grib_get_long_internal(gh,self->GRIBEX_sh_bug_present,&GRIBEX_sh_bug_present))
+            != GRIB_SUCCESS)
+        return ret;
+
+    if((ret = grib_get_long_internal(gh,self->ieee_floats,&ieee_floats)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret = grib_get_double_internal(gh,self->laplacianOperator,&laplacianOperator))
+            != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_long_internal(gh,self->sub_j,&sub_j)) != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_long_internal(gh,self->sub_k,&sub_k)) != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_long_internal(gh,self->sub_m,&sub_m)) != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_long_internal(gh,self->pen_j,&pen_j)) != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_long_internal(gh,self->pen_k,&pen_k)) != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_long_internal(gh,self->pen_m,&pen_m)) != GRIB_SUCCESS)
+        return ret;
+
+    self->dirty=0;
+
+    switch (ieee_floats) {
     case 0:
-      decode_float=grib_long_to_ibm;
-	  bytes=4;
-      break;
+        decode_float=grib_long_to_ibm;
+        bytes=4;
+        break;
     case 1:
-      decode_float=grib_long_to_ieee;
-	  bytes=4;
-      break;
+        decode_float=grib_long_to_ieee;
+        bytes=4;
+        break;
     case 2:
-      decode_float=grib_long_to_ieee64;
-	  bytes=8;
-      break;
+        decode_float=grib_long_to_ieee64;
+        bytes=8;
+        break;
     default:
-      return GRIB_NOT_IMPLEMENTED;
-  }
-  
-  Assert (sub_j == sub_k);
-  Assert (sub_j == sub_m);
-  Assert (pen_j == pen_k);
-  Assert (pen_j == pen_m);
-
-  buf = (unsigned char*)a->parent->h->buffer->data;
-
-  maxv = pen_j+1;
-
-  buf  += grib_byte_offset(a);
-  hres = buf;
-  lres = buf;
-
-  if (pen_j == sub_j) {
-	n_vals = (pen_j+1)*(pen_j+2);
-	d = grib_power(-decimal_scale_factor,10) ;
-  	grib_ieee_decode_array(a->parent->h->context,buf,n_vals,bytes,val);
-	if (d) {
-		for (i=0;i<n_vals;i++) val[i]*=d;
-	}
-	return 0;
-  }
-
-  packed_offset = grib_byte_offset(a) +  4*(sub_k+1)*(sub_k+2);
-
-  lpos = 8*(packed_offset-offsetdata);
-
-  s = grib_power(binary_scale_factor,2);
-  d = grib_power(-decimal_scale_factor,10) ;
-
-  scals   = (double*)grib_context_malloc(a->parent->h->context,maxv*sizeof(double));
-  Assert(scals);
-
-  scals[0] = 0;
-  for(i=1;i<maxv;i++){
-    operat = pow(i*(i+1),laplacianOperator);
-    if(operat !=  0)
-      scals[i] = (1.0/operat);
-    else{
-      grib_context_log(a->parent->h->context,GRIB_LOG_WARNING,
-           "COMPLEX_PACKING : problem with operator div by zero at index %d of %d \n",
-           i , maxv);
-      scals[i] = 0;
+        return GRIB_NOT_IMPLEMENTED;
     }
-  }
 
-  /*
+    Assert (sub_j == sub_k);
+    Assert (sub_j == sub_m);
+    Assert (pen_j == pen_k);
+    Assert (pen_j == pen_m);
+
+    buf = (unsigned char*)gh->buffer->data;
+
+    maxv = pen_j+1;
+
+    buf  += grib_byte_offset(a);
+    hres = buf;
+    lres = buf;
+
+    if (pen_j == sub_j) {
+        n_vals = (pen_j+1)*(pen_j+2);
+        d = grib_power(-decimal_scale_factor,10) ;
+        grib_ieee_decode_array(a->context,buf,n_vals,bytes,val);
+        if (d) {
+            for (i=0;i<n_vals;i++) val[i]*=d;
+        }
+        return 0;
+    }
+
+    packed_offset = grib_byte_offset(a) +  4*(sub_k+1)*(sub_k+2);
+
+    lpos = 8*(packed_offset-offsetdata);
+
+    s = grib_power(binary_scale_factor,2);
+    d = grib_power(-decimal_scale_factor,10) ;
+
+    scals   = (double*)grib_context_malloc(a->context,maxv*sizeof(double));
+    Assert(scals);
+
+    scals[0] = 0;
+    for(i=1;i<maxv;i++){
+        operat = pow(i*(i+1),laplacianOperator);
+        if(operat !=  0)
+            scals[i] = (1.0/operat);
+        else{
+            grib_context_log(a->context,GRIB_LOG_WARNING,
+                    "COMPLEX_PACKING : problem with operator div by zero at index %d of %d \n",
+                    i , maxv);
+            scals[i] = 0;
+        }
+    }
+
+    /*
   printf("UNPACKING LAPLACE=%.20f\n",laplacianOperator);
 
   printf("packed offset=%ld\n",packed_offset);
   for(i=0;i<maxv;i++)
     printf("scals[%d]=%g\n",i,scals[i]);*/
 
-  i=0;
+    i=0;
 
-  while(maxv>0)
-  {
-    lup=mmax;
-    if(sub_k>=0)
+    while(maxv>0)
     {
-      for(hcount=0;hcount<sub_k+1;hcount++)
-      {
-        val[i++] =  decode_float(grib_decode_unsigned_long(hres,&hpos,32))*d;
-        val[i++] =  decode_float(grib_decode_unsigned_long(hres,&hpos,32))*d;
-
-        if (GRIBEX_sh_bug_present && hcount==sub_k){
- /*  bug in ecmwf data, last row (K+1)is scaled but should not */
-          val[i-2] *= scals[lup];
-          val[i-1] *= scals[lup];
+        lup=mmax;
+        if(sub_k>=0)
+        {
+            for(hcount=0;hcount<sub_k+1;hcount++)
+            {
+                val[i++] =  decode_float(grib_decode_unsigned_long(hres,&hpos,32))*d;
+                val[i++] =  decode_float(grib_decode_unsigned_long(hres,&hpos,32))*d;
+
+                if (GRIBEX_sh_bug_present && hcount==sub_k){
+                    /*  bug in ecmwf data, last row (K+1)is scaled but should not */
+                    val[i-2] *= scals[lup];
+                    val[i-1] *= scals[lup];
+                }
+                lup++;
+            }
+            sub_k--;
         }
-        lup++;
-      }
-      sub_k--;
-    }
 
-    pscals=scals+lup;
-    pval=val+i;
+        pscals=scals+lup;
+        pval=val+i;
 #if FAST_BIG_ENDIAN
-    grib_decode_double_array_complex(lres,
-                                     &lpos,bits_per_value,
-                                     reference_value,s,pscals,(maxv-hcount)*2,pval);
-    i+=(maxv-hcount)*2;
+        grib_decode_double_array_complex(lres,
+                &lpos,bits_per_value,
+                reference_value,s,pscals,(maxv-hcount)*2,pval);
+        i+=(maxv-hcount)*2;
 #else
-    for(lcount=hcount; lcount < maxv ; lcount++)
-    {
-      val[i++] =  (double) ((grib_decode_unsigned_long(lres, &lpos,
-                   bits_per_value)*s)+reference_value)*scals[lup];
-      val[i++] =  (double) ((grib_decode_unsigned_long(lres, &lpos,
-                   bits_per_value)*s)+reference_value)*scals[lup];
-      lup++;
-    }
+        (void)pscals; /* suppress gcc warning */
+        (void)pval;   /* suppress gcc warning */
+        for(lcount=hcount; lcount < maxv ; lcount++)
+        {
+            val[i++] =  (double) ((grib_decode_unsigned_long(lres, &lpos,
+                    bits_per_value)*s)+reference_value)*scals[lup];
+            val[i++] =  (double) ((grib_decode_unsigned_long(lres, &lpos,
+                    bits_per_value)*s)+reference_value)*scals[lup];
+            lup++;
+        }
 #endif
 
-    maxv--;
-    hcount=0;
-    mmax++;
-  }
-
-  Assert(*len >= i);
-  *len = i;
+        maxv--;
+        hcount=0;
+        mmax++;
+    }
 
-  if(d != 1) {
-    for(i=0;i<*len;i++)
-      val[i++] *= d;
-  }
+    Assert(*len >= i);
+    *len = i;
 
-  grib_context_free(a->parent->h->context,scals);
+    if(d != 1) {
+        for(i=0;i<*len;i++)
+            val[i++] *= d;
+    }
 
-  return ret;
+    grib_context_free(a->context,scals);
 
+    return ret;
 }
 
 
-
 #define MAXVAL(a,b) a>b?a:b
 
 static double calculate_pfactor(grib_context *ctx,const double* spectralField, long fieldTruncation, long subsetTruncation)
 {
-  /*long n_vals = ((fieldTruncation+1)*(fieldTruncation+2));*/
-  long loop, index, m, n = 0;
-  double pFactor, zeps = 1.0e-15;
-  long ismin = (subsetTruncation+1), ismax = (fieldTruncation+1);
-  double* weights, range, * norms;
-  double weightedSumOverX = 0.0, weightedSumOverY = 0.0, sumOfWeights = 0.0, x, y;
-  double numerator = 0.0, denominator = 0.0, slope;
-
-  /* Catch corner case. See GRIB-172 */
-  if (ismax-ismin <= 1) {
-    return 1; /* any value will do! we cannot do linear fit on a single point! */
-  }
-  /*
-  // Setup the weights
-   */
-
-  range = (double) (ismax - ismin +1);
-
-  weights = (double*) grib_context_malloc(ctx,(ismax+1)*sizeof(double));
-  for( loop = ismin; loop <= ismax; loop++ )
-    weights[loop] = range / (double) (loop-ismin+1);
-  /*
-  // Compute norms
-  // Handle values 2 at a time (real and imaginary parts).
-   */
-  norms = (double*) grib_context_malloc(ctx,(ismax+1)*sizeof(double));
-
-  for( loop = 0; loop < ismax+1; loop++ ) norms[loop] = 0.0;
-  /*
-  // Form norms for the rows which contain part of the unscaled subset.
-   */
-
-  index = -2;
-  for( m = 0; m < subsetTruncation; m++ )
-    for( n = m; n <= fieldTruncation; n++ ) {
-      index += 2;
-      if( n >= subsetTruncation ) {
-        norms[n] = MAXVAL(norms[n],fabs(spectralField[index]));
-        norms[n] = MAXVAL(norms[n],fabs(spectralField[index+1]));
-      }
+    /*long n_vals = ((fieldTruncation+1)*(fieldTruncation+2));*/
+    long loop, index, m, n = 0;
+    double pFactor, zeps = 1.0e-15;
+    long ismin = (subsetTruncation+1), ismax = (fieldTruncation+1);
+    double* weights, range, * norms;
+    double weightedSumOverX = 0.0, weightedSumOverY = 0.0, sumOfWeights = 0.0, x, y;
+    double numerator = 0.0, denominator = 0.0, slope;
+
+    /* Catch corner case. See GRIB-172 */
+    if (ismax-ismin <= 1) {
+        return 1; /* any value will do! we cannot do linear fit on a single point! */
     }
-  /*
-  // Form norms for the rows which do not contain part of the unscaled subset.
-   */
-
-  for( m = subsetTruncation; m <= fieldTruncation; m++ )
-    for( n = m; n <= fieldTruncation; n++ ) {
-      index += 2;
-      norms[n] = MAXVAL(norms[n],fabs(spectralField[index]));
-      norms[n] = MAXVAL(norms[n],fabs(spectralField[index+1]));
-    }
-
-  /*
-  // Ensure the norms have a value which is not too small in case of
-  // problems with math functions (e.g. LOG).
-   */
-
-  for( loop = ismin; loop <= ismax; loop++ ) {
-    norms[n] = MAXVAL(norms[n],zeps);
-    if( norms[n] == zeps ) weights[n] = 100.0 * zeps;
-  }
-
-  /*
-  // Do linear fit to find the slope
-   */
-
-  for( loop = ismin; loop <= ismax; loop++ ) {
-    x = log( (double) (loop*(loop+1)) );
-    y = log( norms[loop] );
-    weightedSumOverX = weightedSumOverX + x * weights[loop];
-    weightedSumOverY = weightedSumOverY + y * weights[loop];
-    sumOfWeights = sumOfWeights + weights[loop];
-  }
-  weightedSumOverX = weightedSumOverX / sumOfWeights;
-  weightedSumOverY = weightedSumOverY / sumOfWeights;
-
-  /*
-  // Perform a least square fit for the equation
-   */
-
-  for( loop = ismin; loop <= ismax; loop++ ) {
-
-    x = log( (double)(loop*(loop+1)) );
-    y = log( norms[loop] );
-    numerator =
-      numerator + weights[loop] * (y-weightedSumOverY) * (x-weightedSumOverX);
-    denominator =
-      denominator + weights[loop] * ((x-weightedSumOverX) * (x-weightedSumOverX));
-  }
-  slope = numerator / denominator;
-
-  grib_context_free(ctx,weights);
-  grib_context_free(ctx,norms);
-
-  pFactor = -slope;
-  if( pFactor < -9999.9 ) pFactor = -9999.9;
-  if( pFactor > 9999.9 )  pFactor = 9999.9;
-  return pFactor;
-}
-
-
-static int pack_double(grib_accessor* a, const double* val, size_t *len) {
 
-  grib_accessor_data_complex_packing* self =  (grib_accessor_data_complex_packing*)a;
+    /*
+     * Setup the weights
+     */
+    range = (double) (ismax - ismin +1);
+    weights = (double*) grib_context_malloc(ctx,(ismax+1)*sizeof(double));
+    for( loop = ismin; loop <= ismax; loop++ )
+        weights[loop] = range / (double) (loop-ismin+1);
+
+    /*
+     * Compute norms
+     * Handle values 2 at a time (real and imaginary parts).
+     */
+    norms = (double*) grib_context_malloc(ctx,(ismax+1)*sizeof(double));
+    for( loop = 0; loop < ismax+1; loop++ ) norms[loop] = 0.0;
+
+    /*
+     * Form norms for the rows which contain part of the unscaled subset.
+     */
+
+    index = -2;
+    for( m = 0; m < subsetTruncation; m++ ) {
+        for( n = m; n <= fieldTruncation; n++ ) {
+            index += 2;
+            if( n >= subsetTruncation ) {
+                norms[n] = MAXVAL(norms[n],fabs(spectralField[index]));
+                norms[n] = MAXVAL(norms[n],fabs(spectralField[index+1]));
+            }
+        }
+    }
 
-  size_t i = 0;
-  int ret = GRIB_SUCCESS;
-  long   hcount = 0;
-  long   lcount = 0;
-  long   hpos = 0;
-  long   lup = 0;
-  long   mmax = 0;
-  long   n_vals = 0;
-  double *scals  = NULL;
+    /*
+     * Form norms for the rows which do not contain part of the unscaled subset.
+     */
 
-  double s = 0;
-  double d = 0;
+    for( m = subsetTruncation; m <= fieldTruncation; m++ ) {
+        for( n = m; n <= fieldTruncation; n++ ) {
+            index += 2;
+            norms[n] = MAXVAL(norms[n],fabs(spectralField[index]));
+            norms[n] = MAXVAL(norms[n],fabs(spectralField[index+1]));
+        }
+    }
 
-  unsigned char* buf    = NULL;
+    /*
+     * Ensure the norms have a value which is not too small in case of
+     * problems with math functions (e.g. LOG).
+     */
+    for( loop = ismin; loop <= ismax; loop++ ) {
+        norms[loop] = MAXVAL(norms[loop],zeps);
+        if( norms[loop] == zeps ) weights[loop] = 100.0 * zeps;
+    }
 
-  size_t         buflen = 0;
+    /*
+     * Do linear fit to find the slope
+     */
+    for( loop = ismin; loop <= ismax; loop++ ) {
+        x = log( (double) (loop*(loop+1)) );
+        Assert( norms[loop] > 0 );
+        y = log( norms[loop] );
+        weightedSumOverX = weightedSumOverX + x * weights[loop];
+        weightedSumOverY = weightedSumOverY + y * weights[loop];
+        sumOfWeights = sumOfWeights + weights[loop];
+    }
+    weightedSumOverX = weightedSumOverX / sumOfWeights;
+    weightedSumOverY = weightedSumOverY / sumOfWeights;
+
+    /*
+     * Perform a least square fit for the equation
+     */
+
+    for( loop = ismin; loop <= ismax; loop++ ) {
+        x = log( (double)(loop*(loop+1)) );
+        y = log( norms[loop] );
+        numerator =
+                numerator + weights[loop] * (y-weightedSumOverY) * (x-weightedSumOverX);
+        denominator =
+                denominator + weights[loop] * ((x-weightedSumOverX) * (x-weightedSumOverX));
+    }
+    slope = numerator / denominator;
 
-  size_t         hsize = 0;
-  size_t         lsize = 0;
+    grib_context_free(ctx,weights);
+    grib_context_free(ctx,norms);
 
+    pFactor = -slope;
+    if( pFactor < -9999.9 ) pFactor = -9999.9;
+    if( pFactor > 9999.9 )  pFactor = 9999.9;
+    return pFactor;
+}
 
-  unsigned char* hres = NULL;
-  unsigned char* lres = NULL;
 
-  long   lpos = 0;
-  long   maxv = 0;
+static int pack_double(grib_accessor* a, const double* val, size_t *len) {
 
-  long   offsetdata           = 0;
-  long   bits_per_value          = 0;
-  double reference_value      = 0;
-  long   binary_scale_factor         = 0;
-  long   decimal_scale_factor = 0;
-  long   laplacianOperatorIsSet = 0;
+    grib_accessor_data_complex_packing* self =  (grib_accessor_data_complex_packing*)a;
+    grib_handle* gh = grib_handle_of_accessor(a);
+
+    size_t i = 0;
+    int ret = GRIB_SUCCESS;
+    long   hcount = 0;
+    long   lcount = 0;
+    long   hpos = 0;
+    long   lup = 0;
+    long   mmax = 0;
+    long   n_vals = 0;
+    double *scals  = NULL;
+
+    double s = 0;
+    double d = 0;
+
+    unsigned char* buf    = NULL;
+
+    size_t         buflen = 0;
+    size_t         hsize = 0;
+    size_t         lsize = 0;
+
+    unsigned char* hres = NULL;
+    unsigned char* lres = NULL;
+
+    long   lpos = 0;
+    long   maxv = 0;
+
+    long   offsetdata           = 0;
+    long   bits_per_value          = 0;
+    double reference_value      = 0;
+    long   binary_scale_factor         = 0;
+    long   decimal_scale_factor = 0;
+    long   laplacianOperatorIsSet = 0;
+
+    double laplacianOperator = 0;
+    long   sub_j= 0;
+    long   sub_k= 0;
+    long   sub_m= 0;
+    long   pen_j= 0;
+    long   pen_k= 0;
+    long   pen_m= 0;
+    long   GRIBEX_sh_bug_present =0;
+    long   ieee_floats =0;
+    double min = 0;
+    double max = 0;
+    double current_val = 0;
+    short mixmax_unset = 0;
+    int bytes;
+
+    encode_float_proc encode_float = NULL;
+
+    if (*len ==0) return GRIB_NO_VALUES;
+
+    if((ret = grib_get_long_internal(gh,self->offsetdata,&offsetdata)) != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_long_internal(gh,self->bits_per_value,&bits_per_value)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret = grib_get_long_internal(gh,self->decimal_scale_factor,&decimal_scale_factor)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret = grib_get_long_internal(gh,self->GRIBEX_sh_bug_present,&GRIBEX_sh_bug_present)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret = grib_get_long_internal(gh,self->ieee_floats,&ieee_floats)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret = grib_get_long_internal(gh,self->laplacianOperatorIsSet,&laplacianOperatorIsSet)) != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_double_internal(gh,self->laplacianOperator,&laplacianOperator)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret = grib_get_long_internal(gh,self->sub_j,&sub_j)) != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_long_internal(gh,self->sub_k,&sub_k)) != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_long_internal(gh,self->sub_m,&sub_m)) != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_long_internal(gh,self->pen_j,&pen_j)) != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_long_internal(gh,self->pen_k,&pen_k)) != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_long_internal(gh,self->pen_m,&pen_m)) != GRIB_SUCCESS)
+        return ret;
+
+    self->dirty=1;
+
+
+    switch (ieee_floats) {
+    case 0:
+        encode_float =grib_ibm_to_long;
+        bytes=4;
+        break;
+    case 1:
+        encode_float =grib_ieee_to_long;
+        bytes=4;
+        break;
+    case 2:
+        encode_float =grib_ieee64_to_long;
+        bytes=8;
+        break;
+    default:
+        return GRIB_NOT_IMPLEMENTED;
+    }
 
-  double laplacianOperator = 0;
-  long   sub_j= 0;
-  long   sub_k= 0;
-  long   sub_m= 0;
-  long   pen_j= 0;
-  long   pen_k= 0;
-  long   pen_m= 0;
-  long   GRIBEX_sh_bug_present =0;
-  long   ieee_floats =0;
-  double min = 0;
-  double max = 0;
-  double current_val = 0;
-  short mixmax_unset = 0;
-  int bytes;
+    Assert (sub_j == sub_k); Assert( sub_j == sub_m);
+    Assert (pen_j == pen_k); Assert( pen_j == pen_m);
 
-  encode_float_proc encode_float = NULL;
+    n_vals = (pen_j+1)*(pen_j+2);
+    d = grib_power(decimal_scale_factor,10) ;
 
-  if (*len ==0) return GRIB_NO_VALUES;
+    if(*len != n_vals){
+        grib_context_log(a->context,GRIB_LOG_ERROR,"COMPLEX_PACKING : wrong number of values, expected %d - got %d",n_vals,*len);
+        return GRIB_INTERNAL_ERROR;
+    }
 
-  if((ret = grib_get_long_internal(a->parent->h,self->offsetdata,&offsetdata)) != GRIB_SUCCESS)
-	  return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->bits_per_value,&bits_per_value)) != GRIB_SUCCESS)
-	  return ret;
+    if (pen_j == sub_j) {
+        double* values;
+        if (d) {
+            values=(double*)grib_context_malloc_clear(a->context,sizeof(double)*n_vals);
+            for (i=0;i<n_vals;i++) values[i]=val[i]*d;
+        } else {
+            values=(double*)val;
+        }
+        buflen=n_vals*bytes;
+        buf = (unsigned char*)grib_context_malloc_clear(a->context,buflen);
+        grib_ieee_encode_array(a->context,values,n_vals,bytes,buf);
+        if (d) grib_context_free(a->context,values);
+        grib_buffer_replace(a, buf, buflen,1,1);
+        grib_context_free(a->context,buf);
+        return 0;
+    }
 
-  if((ret = grib_get_long_internal(a->parent->h,self->decimal_scale_factor,&decimal_scale_factor)) != GRIB_SUCCESS)
-    return ret;
+    if(!laplacianOperatorIsSet) {
+        laplacianOperator = calculate_pfactor(a->context,val,pen_j,sub_j);
+        if((ret = grib_set_double_internal(gh,self->laplacianOperator,laplacianOperator))
+                != GRIB_SUCCESS) return ret;
+        grib_get_double_internal(gh,self->laplacianOperator,&laplacianOperator);
+    }
 
-  if((ret = grib_get_long_internal(a->parent->h,self->GRIBEX_sh_bug_present,&GRIBEX_sh_bug_present)) != GRIB_SUCCESS)
-    return ret;
+    /*
+   printf("PACKING LAPLACE set=%ld value=%.20f\n",laplacianOperatorIsSet,laplacianOperator);
+     */
 
-  if((ret = grib_get_long_internal(a->parent->h,self->ieee_floats,&ieee_floats)) != GRIB_SUCCESS)
-    return ret;
+    hsize = 4*(sub_k+1)*(sub_k+2);
+    lsize = ((n_vals - ((sub_k+1)*(sub_k+2)))*bits_per_value)/8;
 
-  if((ret = grib_get_long_internal(a->parent->h,self->laplacianOperatorIsSet,&laplacianOperatorIsSet)) != GRIB_SUCCESS)
-	  return ret;
-  if((ret = grib_get_double_internal(a->parent->h,self->laplacianOperator,&laplacianOperator)) != GRIB_SUCCESS)
-	  return ret;
+    buflen = hsize+lsize;
 
-  if((ret = grib_get_long_internal(a->parent->h,self->sub_j,&sub_j)) != GRIB_SUCCESS)
-	  return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->sub_k,&sub_k)) != GRIB_SUCCESS)
-	  return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->sub_m,&sub_m)) != GRIB_SUCCESS)
-	  return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->pen_j,&pen_j)) != GRIB_SUCCESS)
-	  return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->pen_k,&pen_k)) != GRIB_SUCCESS)
-	  return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->pen_m,&pen_m)) != GRIB_SUCCESS)
-	  return ret;
+    buf  = (unsigned char*)grib_context_malloc(a->context,buflen);
+    hres = buf;
+    lres = buf+hsize;
 
-  self->dirty=1;
+    maxv = pen_j+1;
 
+    lpos = 0;
+    hpos = 0;
 
-  switch (ieee_floats) {
-    case 0:
-      encode_float =grib_ibm_to_long;
-	  bytes=4;
-      break;
-    case 1:
-      encode_float =grib_ieee_to_long;
-	  bytes=4;
-      break;
-    case 2:
-      encode_float =grib_ieee64_to_long;
-	  bytes=8;
-      break;
-    default:
-      return GRIB_NOT_IMPLEMENTED;
-  }
-
-  Assert (sub_j == sub_k); Assert( sub_j == sub_m);
-  Assert (pen_j == pen_k); Assert( pen_j == pen_m);
-
-  n_vals = (pen_j+1)*(pen_j+2);
-  d = grib_power(decimal_scale_factor,10) ;
-
-  if(*len != n_vals){
-    grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"COMPLEX_PACKING : wrong number of values, expected %d - got %d",n_vals,*len);
-    return GRIB_INTERNAL_ERROR;
-  }
-
-  if (pen_j == sub_j) {
-	double* values;
-	if (d) {
-		values=(double*)grib_context_malloc_clear(a->parent->h->context,sizeof(double)*n_vals);
-		for (i=0;i<n_vals;i++) values[i]=val[i]*d;
-	} else {
-		values=(double*)val;
-	}
-	buflen=n_vals*bytes;
-	buf = (unsigned char*)grib_context_malloc_clear(a->parent->h->context,buflen);
-  	grib_ieee_encode_array(a->parent->h->context,values,n_vals,bytes,buf);
-	if (d) grib_context_free(a->parent->h->context,values);
-	grib_buffer_replace(a, buf, buflen,1,1);
-	grib_context_free(a->parent->h->context,buf);
-	return 0;
-  }
-
-  if(!laplacianOperatorIsSet) {
-    laplacianOperator = calculate_pfactor(a->parent->h->context,val,pen_j,sub_j);
-    if((ret = grib_set_double_internal(a->parent->h,self->laplacianOperator,laplacianOperator))
-          != GRIB_SUCCESS) return ret;
-    grib_get_double_internal(a->parent->h,self->laplacianOperator,&laplacianOperator);
-  }
+    scals   = (double*) grib_context_malloc(a->context,maxv*sizeof(double));
+    Assert(scals);
 
-/*
-printf("PACKING LAPLACE set=%ld value=%.20f\n",laplacianOperatorIsSet,laplacianOperator);
-*/
-  hsize = 4*(sub_k+1)*(sub_k+2);
-  lsize = ((n_vals - ((sub_k+1)*(sub_k+2)))*bits_per_value)/8;
+    scals[0] =0;
+    for(i=1;i<maxv;i++)
+        scals[i] = ((double)pow(i*(i+1),laplacianOperator));
 
-  buflen = hsize+lsize;
 
-  buf  = (unsigned char*)grib_context_malloc(a->parent->h->context,buflen);
-  hres = buf;
-  lres = buf+hsize;
+    i=0;
 
-  maxv = pen_j+1;
+    mmax = 0;
+    maxv = pen_j+1;
+    i=0;
+    lcount=0;
+    hcount=0;
+    sub_k = sub_j;
 
-  lpos = 0;
-  hpos = 0;
+    while(maxv>0)
+    {
+        lup=mmax;
+
+        if(sub_k>=0)
+        {
+            i   += 2*(sub_k+1);
+            lup +=    sub_k+1 ;
+            hcount += sub_k+1 ;
+            sub_k--;
+        }
 
-  scals   = (double*) grib_context_malloc(a->parent->h->context,maxv*sizeof(double));
-  Assert(scals);
+        for(lcount=hcount; lcount < maxv ; lcount++)
+        {
+            current_val = ((val[i++]*d) * scals[lup]);
+            if(mixmax_unset == 0){
+                max = current_val;
+                min = current_val;
+                mixmax_unset = 1;
+            }
 
-  scals[0] =0;
-  for(i=1;i<maxv;i++)
-    scals[i] = ((double)pow(i*(i+1),laplacianOperator));
+            if(current_val > max) max = current_val;
+            if(current_val < min) min = current_val;
 
+            current_val = ((val[i++]*d) * scals[lup]);
+            if(current_val > max) max = current_val;
+            if(current_val < min) min = current_val;
 
-  i=0;
+            lup++;
+        }
+        maxv--;
+        hcount=0;
+        mmax++;
+    }
 
-  mmax = 0;
-  maxv = pen_j+1;
-  i=0;
-  lcount=0;
-  hcount=0;
-  sub_k = sub_j;
+    if (grib_get_nearest_smaller_value(gh,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);
+        exit(GRIB_INTERNAL_ERROR);
+    }
+    binary_scale_factor = grib_get_binary_scale_fact(max,reference_value,bits_per_value,&ret);
 
-  while(maxv>0)
-  {
-    lup=mmax;
+    if (ret==GRIB_UNDERFLOW) {
+        d=0;
+        binary_scale_factor = 0;
+        reference_value=0;
 
-    if(sub_k>=0)
-    {
-      i   += 2*(sub_k+1);
-      lup +=    sub_k+1 ;
-      hcount += sub_k+1 ;
-      sub_k--;
     }
+    s = grib_power(-binary_scale_factor,2);
 
-    for(lcount=hcount; lcount < maxv ; lcount++)
-    {
-      current_val = ((val[i++]*d) * scals[lup]);
-      if(mixmax_unset == 0){
-        max = current_val;
-        min = current_val;
-        mixmax_unset = 1;
-      }
-
-      if(current_val > max) max = current_val;
-      if(current_val < min) min = current_val;
+    /* printf("D : %.30f\n",d); */
 
-      current_val = ((val[i++]*d) * scals[lup]);
-      if(current_val > max) max = current_val;
-      if(current_val < min) min = current_val;
+    i=0;
 
-      lup++;
-    }
-    maxv--;
+    mmax = 0;
+    maxv = pen_j+1;
+    i=0;
+    lcount=0;
     hcount=0;
-    mmax++;
-  }
-
-  if (grib_get_nearest_smaller_value(a->parent->h,self->reference_value,min,&reference_value)
-   !=GRIB_SUCCESS) {
-    grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
-     "unable to find nearest_smaller_value of %g for %s",min,self->reference_value);
-    exit(GRIB_INTERNAL_ERROR);
-  }
-  binary_scale_factor = grib_get_binary_scale_fact(max,reference_value,bits_per_value,&ret);
-  
-  if (ret==GRIB_UNDERFLOW) {
-	d=0;
-	binary_scale_factor = 0;
-	reference_value=0;
-
-  }
-  s = grib_power(-binary_scale_factor,2);
-
-  /* printf("D : %.30f\n",d); */
-
-  i=0;
-
-  mmax = 0;
-  maxv = pen_j+1;
-  i=0;
-  lcount=0;
-  hcount=0;
-  sub_k = sub_j;
-
-  while(maxv>0)
-  {
-    lup=mmax;
-
-    if(sub_k>=0)
+    sub_k = sub_j;
+
+    while(maxv>0)
     {
-      for(hcount=0;hcount<sub_k+1;hcount++)
-      {
-        if ( GRIBEX_sh_bug_present && hcount==sub_k ) {
-          /* _test(val[i]*d*scals[lup],1); */
-          grib_encode_unsigned_long(hres, encode_float((val[i++]*d)*scals[lup]) , &hpos, 32);
-          /* _test(val[i]*d*scals[lup],1); */
-          grib_encode_unsigned_long(hres, encode_float((val[i++]*d)*scals[lup]) , &hpos, 32);
-        }else{
-
-          /* _test(val[i]*d,0); */
-
-          grib_encode_unsigned_long(hres, encode_float(val[i++]*d) , &hpos, 32);
-          /* _test(val[i]*d,0); */
-          grib_encode_unsigned_long(hres, encode_float(val[i++]*d) , &hpos, 32);
+        lup=mmax;
+
+        if(sub_k>=0)
+        {
+            for(hcount=0;hcount<sub_k+1;hcount++)
+            {
+                if ( GRIBEX_sh_bug_present && hcount==sub_k ) {
+                    /* _test(val[i]*d*scals[lup],1); */
+                    grib_encode_unsigned_long(hres, encode_float((val[i++]*d)*scals[lup]) , &hpos, 32);
+                    /* _test(val[i]*d*scals[lup],1); */
+                    grib_encode_unsigned_long(hres, encode_float((val[i++]*d)*scals[lup]) , &hpos, 32);
+                }else{
+
+                    /* _test(val[i]*d,0); */
+
+                    grib_encode_unsigned_long(hres, encode_float(val[i++]*d) , &hpos, 32);
+                    /* _test(val[i]*d,0); */
+                    grib_encode_unsigned_long(hres, encode_float(val[i++]*d) , &hpos, 32);
+                }
+                lup++;
+            }
+            sub_k--;
         }
-        lup++;
-      }
-      sub_k--;
-    }
 
 #if FAST_BIG_ENDIAN
-    grib_encode_double_array_complex((maxv-hcount)*2,&(val[i]),bits_per_value,reference_value,&(scals[lup]),d,s,lres,&lpos);
-    i+=(maxv-hcount)*2;
+        grib_encode_double_array_complex((maxv-hcount)*2,&(val[i]),bits_per_value,reference_value,&(scals[lup]),d,s,lres,&lpos);
+        i+=(maxv-hcount)*2;
 #else
-	if (bits_per_value % 8) {
-		for(lcount=hcount; lcount < maxv ; lcount++)
-		{
-		  current_val = (((((val[i++]*d) * scals[lup])-reference_value)*s)+0.5);
-		  if(current_val < 0)
-			grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
-					"COMPLEX_PACKING : negative coput before packing (%g)", current_val);
-		  grib_encode_unsigned_longb(lres, current_val, &lpos, bits_per_value);
-
-		  current_val = (((((val[i++]*d) * scals[lup])-reference_value)*s)+0.5);
-		  if(current_val < 0)
-			grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
-					"COMPLEX_PACKING : negative coput before packing (%g)", current_val);
-		  grib_encode_unsigned_longb(lres, current_val, &lpos, bits_per_value);
-		  lup++;
-		}
-	} else {
-		for(lcount=hcount; lcount < maxv ; lcount++)
-		{
-		  current_val = (((((val[i++]*d) * scals[lup])-reference_value)*s)+0.5);
-		  if(current_val < 0)
-			grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
-				"COMPLEX_PACKING : negative coput before packing (%g)", current_val);
-		  grib_encode_unsigned_long(lres, current_val, &lpos, bits_per_value);
-
-		  current_val = (((((val[i++]*d) * scals[lup])-reference_value)*s)+0.5);
-		  if(current_val < 0)
-			grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
-				"COMPLEX_PACKING : negative coput before packing (%g)", current_val);
-		  grib_encode_unsigned_long(lres, current_val, &lpos, bits_per_value);
-		  lup++;
-		}
-	}
+        if (bits_per_value % 8) {
+            for(lcount=hcount; lcount < maxv ; lcount++)
+            {
+                current_val = (((((val[i++]*d) * scals[lup])-reference_value)*s)+0.5);
+                if(current_val < 0)
+                    grib_context_log(a->context,GRIB_LOG_ERROR,
+                            "COMPLEX_PACKING : negative coput before packing (%g)", current_val);
+                grib_encode_unsigned_longb(lres, current_val, &lpos, bits_per_value);
+
+                current_val = (((((val[i++]*d) * scals[lup])-reference_value)*s)+0.5);
+                if(current_val < 0)
+                    grib_context_log(a->context,GRIB_LOG_ERROR,
+                            "COMPLEX_PACKING : negative coput before packing (%g)", current_val);
+                grib_encode_unsigned_longb(lres, current_val, &lpos, bits_per_value);
+                lup++;
+            }
+        } else {
+            for(lcount=hcount; lcount < maxv ; lcount++)
+            {
+                current_val = (((((val[i++]*d) * scals[lup])-reference_value)*s)+0.5);
+                if(current_val < 0)
+                    grib_context_log(a->context,GRIB_LOG_ERROR,
+                            "COMPLEX_PACKING : negative coput before packing (%g)", current_val);
+                grib_encode_unsigned_long(lres, current_val, &lpos, bits_per_value);
+
+                current_val = (((((val[i++]*d) * scals[lup])-reference_value)*s)+0.5);
+                if(current_val < 0)
+                    grib_context_log(a->context,GRIB_LOG_ERROR,
+                            "COMPLEX_PACKING : negative coput before packing (%g)", current_val);
+                grib_encode_unsigned_long(lres, current_val, &lpos, bits_per_value);
+                lup++;
+            }
+        }
 #endif
 
-    maxv--;
-    hcount=0;
-    mmax++;
-  }
+        maxv--;
+        hcount=0;
+        mmax++;
+    }
+
+    if(((hpos/8) != hsize) &&((lpos/8) != lsize))
+    {
+        grib_context_log(a->context,GRIB_LOG_ERROR,
+                "COMPLEX_PACKING : Mismatch in packing between high resolution and low resolution part");
+        grib_context_free(a->context,buf);
+        grib_context_free(a->context,scals);
+        return GRIB_INTERNAL_ERROR;
+    }
 
-  if(((hpos/8) != hsize) &&((lpos/8) != lsize))
-  {
-    grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
-				"COMPLEX_PACKING : Mismatch in packing between high resolution and low resolution part");
-    grib_context_free(a->parent->h->context,buf);
-    grib_context_free(a->parent->h->context,scals);
-    return GRIB_INTERNAL_ERROR;
-  }
+    buflen = ((hpos + lpos)/8);
 
-  buflen = ((hpos + lpos)/8);
+    if((ret = grib_set_double_internal(gh,self->reference_value, reference_value)) != GRIB_SUCCESS)
+        return ret;
+    {
+        /* Make sure we can decode it again */
+        double ref = 1e-100;
+        grib_get_double_internal(gh,self->reference_value,&ref);
+        Assert(ref == reference_value);
+    }
 
-  if((ret = grib_set_double_internal(a->parent->h,self->reference_value, reference_value)) != GRIB_SUCCESS)
-    return ret;
-  {
-    /* Make sure we can decode it again */
-    double ref = 1e-100;
-    grib_get_double_internal(a->parent->h,self->reference_value,&ref);
-    Assert(ref == reference_value);
-  }
-
-  if((ret = grib_set_long_internal(a->parent->h,self->binary_scale_factor, binary_scale_factor)) != GRIB_SUCCESS)
-    return ret;
+    if((ret = grib_set_long_internal(gh,self->binary_scale_factor, binary_scale_factor)) != GRIB_SUCCESS)
+        return ret;
 
-  grib_buffer_replace(a, buf, buflen,1,1);
-  grib_context_free(a->parent->h->context,buf);
-  grib_context_free(a->parent->h->context,scals);
+    grib_buffer_replace(a, buf, buflen,1,1);
+    grib_context_free(a->context,buf);
+    grib_context_free(a->context,scals);
 
-  return ret;
+    return ret;
 
 }
diff --git a/src/grib_accessor_class_data_constant_field.c b/src/grib_accessor_class_data_constant_field.c
index 5edf1c6..d160841 100644
--- a/src/grib_accessor_class_data_constant_field.c
+++ b/src/grib_accessor_class_data_constant_field.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -100,6 +100,7 @@ static grib_accessor_class _grib_accessor_class_data_constant_field = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -136,6 +137,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -144,9 +146,9 @@ static void init(grib_accessor* a,const long v, grib_arguments* args)
 {
 	grib_accessor_data_constant_field* self =  (grib_accessor_data_constant_field*)a;
 
-	self->ni = grib_arguments_get_name(a->parent->h,args,self->carg++);
-	self->nj = grib_arguments_get_name(a->parent->h,args,self->carg++);
-	self->reference_value = grib_arguments_get_name(a->parent->h,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->reference_value = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
 
 }
 static int value_count(grib_accessor* a,long* count){
@@ -154,9 +156,9 @@ static int value_count(grib_accessor* a,long* count){
 	long ni;
 	long nj;
 	int err = 0;
-	if((err = grib_get_long_internal(a->parent->h,self->ni,&ni)) != GRIB_SUCCESS)
+	if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->ni,&ni)) != GRIB_SUCCESS)
 		return err;
-	if((err = grib_get_long_internal(a->parent->h,self->nj, &nj)) != GRIB_SUCCESS)
+	if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->nj, &nj)) != GRIB_SUCCESS)
 		return err;
 	*count=ni*nj;
 
@@ -179,7 +181,7 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
 		return GRIB_ARRAY_TOO_SMALL;
 	}
 
-	if((err = grib_get_double_internal(a->parent->h,self->reference_value, &reference_value)) != GRIB_SUCCESS)
+	if((err = grib_get_double_internal(grib_handle_of_accessor(a),self->reference_value, &reference_value)) != GRIB_SUCCESS)
 		return err;
 
 	for(i=0;i < n_vals;i++)
diff --git a/src/grib_accessor_class_data_dummy_field.c b/src/grib_accessor_class_data_dummy_field.c
index b72238e..66a6195 100644
--- a/src/grib_accessor_class_data_dummy_field.c
+++ b/src/grib_accessor_class_data_dummy_field.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -115,6 +115,7 @@ static grib_accessor_class _grib_accessor_class_data_dummy_field = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -151,6 +152,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -158,9 +160,9 @@ static void init_class(grib_accessor_class* c)
 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(a->parent->h,args,self->carg++);
-    self->numberOfPoints = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->bitmap = grib_arguments_get_name(a->parent->h,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)
@@ -172,11 +174,11 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
     double missing_value = 0;
     int err = 0;
 
-    if((err = grib_get_long_internal(a->parent->h,self->numberOfPoints, &numberOfPoints))
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->numberOfPoints, &numberOfPoints))
             != GRIB_SUCCESS)  return err;
     n_vals =numberOfPoints;
 
-    if((err = grib_get_double_internal(a->parent->h,self->missing_value, &missing_value))
+    if((err = grib_get_double_internal(grib_handle_of_accessor(a),self->missing_value, &missing_value))
             != GRIB_SUCCESS)		return err;
 
     if(*len < n_vals){
@@ -187,8 +189,8 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
     for(i=0;i < n_vals;i++)
         val[i] = missing_value;
 
-    if(grib_find_accessor(a->parent->h,self->bitmap)) {
-        if((err = grib_set_double_array_internal(a->parent->h,self->bitmap,val,n_vals)) != GRIB_SUCCESS)
+    if(grib_find_accessor(grib_handle_of_accessor(a),self->bitmap)) {
+        if((err = grib_set_double_array_internal(grib_handle_of_accessor(a),self->bitmap,val,n_vals)) != GRIB_SUCCESS)
             return err;
     }
 
@@ -213,23 +215,23 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
     if (*len ==0) return GRIB_NO_VALUES;
 
-    if((err = grib_get_long_internal(a->parent->h,self->bits_per_value,&bits_per_value)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->bits_per_value,&bits_per_value)) != GRIB_SUCCESS)
         return err;
 
     buflen = (1+((bits_per_value*n_vals)/8))*sizeof(unsigned char);
 
-    buf = (unsigned char*)grib_context_malloc_clear(a->parent->h->context,buflen);
+    buf = (unsigned char*)grib_context_malloc_clear(a->context,buflen);
     if (!buf) return GRIB_OUT_OF_MEMORY;
 
     half_byte = (buflen*8)-((*len)*bits_per_value);
 
-    if((err = grib_set_long_internal(a->parent->h,self->half_byte, half_byte)) != GRIB_SUCCESS){
-        grib_context_free(a->parent->h->context,buf);
+    if((err = grib_set_long_internal(grib_handle_of_accessor(a),self->half_byte, half_byte)) != GRIB_SUCCESS){
+        grib_context_free(a->context,buf);
         return err;
     }
     grib_buffer_replace(a, buf, buflen,1,1);
 
-    grib_context_free(a->parent->h->context,buf);
+    grib_context_free(a->context,buf);
 
     return GRIB_SUCCESS;
 
@@ -241,9 +243,9 @@ static int value_count(grib_accessor* a,long* numberOfPoints)
     int err=0;
     *numberOfPoints = 0;
 
-    if((err = grib_get_long_internal(a->parent->h,self->numberOfPoints, numberOfPoints))
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->numberOfPoints, numberOfPoints))
             != GRIB_SUCCESS) {
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"unable to get count of %s (%s)",a->name,grib_get_error_message(err));
+        grib_context_log(a->context,GRIB_LOG_ERROR,"unable to get count of %s (%s)",a->name,grib_get_error_message(err));
     }
 
     return err;
diff --git a/src/grib_accessor_class_data_g1complex_packing.c b/src/grib_accessor_class_data_g1complex_packing.c
index 2518c5d..8edbe58 100644
--- a/src/grib_accessor_class_data_g1complex_packing.c
+++ b/src/grib_accessor_class_data_g1complex_packing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -122,6 +122,7 @@ static grib_accessor_class _grib_accessor_class_data_g1complex_packing = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -160,6 +161,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -167,11 +169,11 @@ static void init_class(grib_accessor_class* c)
 static void init(grib_accessor* a,const long v, grib_arguments* args)
 {
   grib_accessor_data_g1complex_packing *self =(grib_accessor_data_g1complex_packing*)a;
-  self->half_byte    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->N            = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->packingType  = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->ieee_packing = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->precision = grib_arguments_get_name(a->parent->h,args,self->carg++);
+  self->half_byte    = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->N            = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->packingType  = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->ieee_packing = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->precision = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
   self->edition=1;
   a->flags |= GRIB_ACCESSOR_FLAG_DATA;
   }
@@ -190,8 +192,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
   long   half_byte= 0;
   long  bits_per_value =0;
   size_t  buflen =0;
-  grib_context* c=a->parent->h->context;
-  grib_handle* h=a->parent->h;
+  grib_context* c=a->context;
+  grib_handle* h=grib_handle_of_accessor(a);
   char* ieee_packing_s=NULL;
   char* packingType_s=NULL;
   char* precision_s=NULL;
@@ -218,11 +220,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     return grib_set_double_array(h,"values",val,*len);
   }
 
-  if((ret = grib_get_long_internal(a->parent->h,self->sub_j,&sub_j)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_j,&sub_j)) != GRIB_SUCCESS)
     return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->sub_k,&sub_k)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_k,&sub_k)) != GRIB_SUCCESS)
     return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->sub_m,&sub_m)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_m,&sub_m)) != GRIB_SUCCESS)
     return ret;
 
   self->dirty=1;
@@ -235,27 +237,27 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
         n = a->offset + 4*((sub_k+1)*(sub_k+2));
 #if 1
      /*     Octet number starts from beginning of message but shouldn't     */
-    if((ret = grib_set_long_internal(a->parent->h,self->N,n)) != GRIB_SUCCESS)
+    if((ret = grib_set_long_internal(grib_handle_of_accessor(a),self->N,n)) != GRIB_SUCCESS)
       return ret;
 #else
-    ret = grib_get_long_internal(a->parent->h,self->offsetsection,&offsetsection);
+    ret = grib_get_long_internal(grib_handle_of_accessor(a),self->offsetsection,&offsetsection);
     if(ret != GRIB_SUCCESS) return ret;
-    if((ret = grib_set_long_internal(a->parent->h,self->N,n-offsetsection))
+    if((ret = grib_set_long_internal(grib_handle_of_accessor(a),self->N,n-offsetsection))
         != GRIB_SUCCESS) return ret;
 #endif
-    ret = grib_get_long_internal(a->parent->h,self->bits_per_value,&bits_per_value);
+    ret = grib_get_long_internal(grib_handle_of_accessor(a),self->bits_per_value,&bits_per_value);
     if(ret != GRIB_SUCCESS) return ret;
 
-    ret = grib_get_long_internal(a->parent->h,self->seclen,&seclen);
+    ret = grib_get_long_internal(grib_handle_of_accessor(a),self->seclen,&seclen);
     if(ret != GRIB_SUCCESS) return ret;
 
     buflen = 32*(sub_k+1)*(sub_k+2)+(*len-(sub_k+1)*(sub_k+2))*bits_per_value+18*8;
     half_byte = seclen*8-buflen;
-	if (a->parent->h->context->debug==-1) {
-		printf("GRIB_API DEBUG: half_byte=%ld\n",half_byte);
+	if (a->context->debug==-1) {
+		printf("ECCODES DEBUG: half_byte=%ld\n",half_byte);
 	}
 
-    ret = grib_set_long_internal(a->parent->h,self->half_byte, half_byte);
+    ret = grib_set_long_internal(grib_handle_of_accessor(a),self->half_byte, half_byte);
     if(ret != GRIB_SUCCESS) return ret;
   }
   return ret;
diff --git a/src/grib_accessor_class_data_g1second_order_constant_width_packing.c b/src/grib_accessor_class_data_g1second_order_constant_width_packing.c
index baf8b87..4f95d34 100644
--- a/src/grib_accessor_class_data_g1second_order_constant_width_packing.c
+++ b/src/grib_accessor_class_data_g1second_order_constant_width_packing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -137,6 +137,7 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_constant_wid
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -173,6 +174,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -181,22 +183,22 @@ static void init(grib_accessor* a,const long v, grib_arguments* args)
 {
   grib_accessor_data_g1second_order_constant_width_packing *self =(grib_accessor_data_g1second_order_constant_width_packing*)a;
 
-  self->half_byte    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->packingType    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->ieee_packing    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->precision    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->widthOfFirstOrderValues    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->N1 = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->N2 = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->numberOfGroups = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->numberOfSecondOrderPackedValues = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->extraValues = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->Ni = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->Nj = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->pl = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->jPointsAreConsecutive = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->bitmap = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->groupWidth = grib_arguments_get_name(a->parent->h,args,self->carg++);
+  self->half_byte    = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->packingType    = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->ieee_packing    = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->precision    = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->widthOfFirstOrderValues    = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->N1 = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->N2 = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->numberOfGroups = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->numberOfSecondOrderPackedValues = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->extraValues = 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->pl = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->jPointsAreConsecutive = 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->groupWidth = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
   self->edition=1;
   a->flags |= GRIB_ACCESSOR_FLAG_DATA;
 
@@ -208,7 +210,7 @@ static int value_count(grib_accessor* a,long* numberOfSecondOrderPackedValues)
   grib_accessor_data_g1second_order_constant_width_packing *self =(grib_accessor_data_g1second_order_constant_width_packing*)a;
   *numberOfSecondOrderPackedValues=0;
 
-  err=grib_get_long_internal(a->parent->h,self->numberOfSecondOrderPackedValues,numberOfSecondOrderPackedValues);
+  err=grib_get_long_internal(grib_handle_of_accessor(a),self->numberOfSecondOrderPackedValues,numberOfSecondOrderPackedValues);
 
   return err;
 
@@ -226,7 +228,7 @@ static int unpack_double(grib_accessor* a, double* values, size_t *len)
   long pos=0;
   long widthOfFirstOrderValues=0;
   long jPointsAreConsecutive;
-  unsigned char* buf = (unsigned char*)a->parent->h->buffer->data;
+  unsigned char* buf = (unsigned char*)grib_handle_of_accessor(a)->buffer->data;
   long i,n;
   double reference_value;
   long binary_scale_factor;
@@ -236,48 +238,48 @@ static int unpack_double(grib_accessor* a, double* values, size_t *len)
 
   buf += grib_byte_offset(a);
 
-  if((ret=grib_get_long_internal(a->parent->h,self->numberOfGroups,&numberOfGroups)) != GRIB_SUCCESS)
+  if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->numberOfGroups,&numberOfGroups)) != GRIB_SUCCESS)
          return ret;
 
-  if((ret=grib_get_long_internal(a->parent->h,self->jPointsAreConsecutive,&jPointsAreConsecutive)) != GRIB_SUCCESS)
+  if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->jPointsAreConsecutive,&jPointsAreConsecutive)) != GRIB_SUCCESS)
          return ret;
 
 	if (jPointsAreConsecutive) {
-	  if((ret=grib_get_long_internal(a->parent->h,self->Ni,&numberPerRow)) != GRIB_SUCCESS)
+	  if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->Ni,&numberPerRow)) != GRIB_SUCCESS)
          return ret;
 	} else {
-	  if((ret=grib_get_long_internal(a->parent->h,self->Nj,&numberPerRow)) != GRIB_SUCCESS)
+	  if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->Nj,&numberPerRow)) != GRIB_SUCCESS)
          return ret;
 	}
 
-  if((ret=grib_get_long_internal(a->parent->h,self->widthOfFirstOrderValues,&widthOfFirstOrderValues)) != GRIB_SUCCESS)
+  if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->widthOfFirstOrderValues,&widthOfFirstOrderValues)) != GRIB_SUCCESS)
          return ret;
 
-  if((ret=grib_get_long_internal(a->parent->h,self->binary_scale_factor,&binary_scale_factor)) != GRIB_SUCCESS)
+  if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->binary_scale_factor,&binary_scale_factor)) != GRIB_SUCCESS)
          return ret;
 
-  if((ret=grib_get_long_internal(a->parent->h,self->decimal_scale_factor,&decimal_scale_factor)) != GRIB_SUCCESS)
+  if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->decimal_scale_factor,&decimal_scale_factor)) != GRIB_SUCCESS)
          return ret;
 
-  if((ret=grib_get_double_internal(a->parent->h,self->reference_value,&reference_value)) != GRIB_SUCCESS)
+  if((ret=grib_get_double_internal(grib_handle_of_accessor(a),self->reference_value,&reference_value)) != GRIB_SUCCESS)
          return ret;
 
-  if((ret=grib_get_long_internal(a->parent->h,self->numberOfSecondOrderPackedValues,
+  if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->numberOfSecondOrderPackedValues,
   					&numberOfSecondOrderPackedValues)) != GRIB_SUCCESS)
          return ret;
 
-  if((ret=grib_get_long_internal(a->parent->h,self->groupWidth, &groupWidth)) != GRIB_SUCCESS)
+  if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->groupWidth, &groupWidth)) != GRIB_SUCCESS)
          return ret;
 
-	secondaryBitmap=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*numberOfSecondOrderPackedValues);
+	secondaryBitmap=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfSecondOrderPackedValues);
 	grib_decode_long_array(buf,&pos,1,numberOfSecondOrderPackedValues,secondaryBitmap);
 	pos = 8 * ( (pos + 7 ) / 8);
 
-	firstOrderValues=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*numberOfGroups);
+	firstOrderValues=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfGroups);
 	grib_decode_long_array(buf,&pos,widthOfFirstOrderValues,numberOfGroups,firstOrderValues);
 	pos = 8 * ( (pos + 7 ) / 8);
 
-	X=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*numberOfSecondOrderPackedValues);
+	X=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfSecondOrderPackedValues);
 
 	if (groupWidth>0) {
 		grib_decode_long_array(buf,&pos,groupWidth,numberOfSecondOrderPackedValues,X);
@@ -313,16 +315,16 @@ static int unpack_double(grib_accessor* a, double* values, size_t *len)
 	}
 
 	*len=numberOfSecondOrderPackedValues;
-	grib_context_free(a->parent->h->context,secondaryBitmap);
-	grib_context_free(a->parent->h->context,firstOrderValues);
-	grib_context_free(a->parent->h->context,X);
+	grib_context_free(a->context,secondaryBitmap);
+	grib_context_free(a->context,firstOrderValues);
+	grib_context_free(a->context,X);
   
   return ret;
 }
 
 static int pack_double(grib_accessor* a, const double* cval, size_t *len)
 {
-  grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"constant width packing not implemented");
+  grib_context_log(a->context,GRIB_LOG_ERROR,"constant width packing not implemented");
   return GRIB_NOT_IMPLEMENTED;
 
 }
diff --git a/src/grib_accessor_class_data_g1second_order_general_extended_packing.c b/src/grib_accessor_class_data_g1second_order_general_extended_packing.c
index af209c2..1cadde9 100644
--- a/src/grib_accessor_class_data_g1second_order_general_extended_packing.c
+++ b/src/grib_accessor_class_data_g1second_order_general_extended_packing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -158,6 +158,7 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_general_exte
     &unpack_double_element,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -193,6 +194,7 @@ static void init_class(grib_accessor_class* c)
 	c->compare	=	(*(c->super))->compare;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -209,14 +211,19 @@ static unsigned long nbits[32]={
         0x40000000, 0x80000000
 };
 
-static long number_of_bits(unsigned long x) {
+static long number_of_bits(grib_handle*h, unsigned long x)
+{
     unsigned long *n=nbits;
     const int count = sizeof(nbits)/sizeof(nbits[0]);
     long i=0;
     while (x>=*n) {
-      n++;
-      i++;
-      Assert(i<count);
+        n++;
+        i++;
+        if (i>=count) {
+            /*grib_dump_content(h, stdout,"debug", ~0, NULL);*/
+            grib_context_log(h->context, GRIB_LOG_FATAL,
+                    "grib_accessor_class_data_g1second_order_general_extended_packing: Number out of range: %ld", x);
+        }
     }
     return i;
 }
@@ -224,35 +231,35 @@ static long number_of_bits(unsigned long x) {
 static void init(grib_accessor* a,const long v, grib_arguments* args)
 {
     grib_accessor_data_g1second_order_general_extended_packing *self =(grib_accessor_data_g1second_order_general_extended_packing*)a;
-
-    self->half_byte    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->packingType    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->ieee_packing    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->precision    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->widthOfFirstOrderValues    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->firstOrderValues    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->N1 = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->N2 = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->numberOfGroups = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->codedNumberOfGroups = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->numberOfSecondOrderPackedValues = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->extraValues = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->groupWidths = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->widthOfWidths = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->groupLengths = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->widthOfLengths = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->NL = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->SPD = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->widthOfSPD = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->orderOfSPD = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->numberOfPoints = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->dataFlag = grib_arguments_get_name(a->parent->h,args,self->carg++);
+    grib_handle* handle = grib_handle_of_accessor(a);
+
+    self->half_byte    = grib_arguments_get_name(handle,args,self->carg++);
+    self->packingType    = grib_arguments_get_name(handle,args,self->carg++);
+    self->ieee_packing    = grib_arguments_get_name(handle,args,self->carg++);
+    self->precision    = grib_arguments_get_name(handle,args,self->carg++);
+    self->widthOfFirstOrderValues    = grib_arguments_get_name(handle,args,self->carg++);
+    self->firstOrderValues    = grib_arguments_get_name(handle,args,self->carg++);
+    self->N1 = grib_arguments_get_name(handle,args,self->carg++);
+    self->N2 = grib_arguments_get_name(handle,args,self->carg++);
+    self->numberOfGroups = grib_arguments_get_name(handle,args,self->carg++);
+    self->codedNumberOfGroups = grib_arguments_get_name(handle,args,self->carg++);
+    self->numberOfSecondOrderPackedValues = grib_arguments_get_name(handle,args,self->carg++);
+    self->extraValues = grib_arguments_get_name(handle,args,self->carg++);
+    self->groupWidths = grib_arguments_get_name(handle,args,self->carg++);
+    self->widthOfWidths = grib_arguments_get_name(handle,args,self->carg++);
+    self->groupLengths = grib_arguments_get_name(handle,args,self->carg++);
+    self->widthOfLengths = grib_arguments_get_name(handle,args,self->carg++);
+    self->NL = grib_arguments_get_name(handle,args,self->carg++);
+    self->SPD = grib_arguments_get_name(handle,args,self->carg++);
+    self->widthOfSPD = grib_arguments_get_name(handle,args,self->carg++);
+    self->orderOfSPD = grib_arguments_get_name(handle,args,self->carg++);
+    self->numberOfPoints = grib_arguments_get_name(handle,args,self->carg++);
+    self->dataFlag = grib_arguments_get_name(handle,args,self->carg++);
     self->edition=1;
     self->dirty=1;
     self->values=NULL;
     self->size=0;
     a->flags |= GRIB_ACCESSOR_FLAG_DATA;
-
 }
 
 static int value_count(grib_accessor* a,long* count)
@@ -268,20 +275,20 @@ static int value_count(grib_accessor* a,long* count)
 
     *count=0;
 
-    err=grib_get_long(a->parent->h,self->numberOfGroups,&numberOfGroups);
+    err=grib_get_long(grib_handle_of_accessor(a),self->numberOfGroups,&numberOfGroups);
     if (err) return err;
     if (numberOfGroups==0) return 0;
 
-    groupLengths=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*numberOfGroups);
+    groupLengths=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfGroups);
     ngroups=numberOfGroups;
-    err=grib_get_long_array(a->parent->h,self->groupLengths,groupLengths,&ngroups);
+    err=grib_get_long_array(grib_handle_of_accessor(a),self->groupLengths,groupLengths,&ngroups);
     if (err) return err;
 
     for (i=0;i<numberOfGroups;i++) numberOfCodedValues+=groupLengths[i];
 
-    grib_context_free(a->parent->h->context,groupLengths);
+    grib_context_free(a->context,groupLengths);
 
-    err=grib_get_long(a->parent->h,self->orderOfSPD,&orderOfSPD);
+    err=grib_get_long(grib_handle_of_accessor(a),self->orderOfSPD,&orderOfSPD);
 
     *count=numberOfCodedValues+orderOfSPD;
 
@@ -293,18 +300,18 @@ static int unpack_double_element(grib_accessor* a, size_t idx, double* val)
     size_t size;
     double* values;
     int err=0;
-    
+
     /* GRIB-564: The index idx relates to codedValues NOT values! */
 
-    err=grib_get_size(a->parent->h,"codedValues",&size);
+    err=grib_get_size(grib_handle_of_accessor(a),"codedValues",&size);
     if (err) return err;
     if (idx >= size) return GRIB_INVALID_NEAREST;
 
-    values=(double*)grib_context_malloc_clear(a->parent->h->context,size*sizeof(double));
-    err=grib_get_double_array(a->parent->h,"codedValues",values,&size);
+    values=(double*)grib_context_malloc_clear(a->context,size*sizeof(double));
+    err=grib_get_double_array(grib_handle_of_accessor(a),"codedValues",values,&size);
     if (err) return err;
     *val=values[idx];
-    grib_context_free(a->parent->h->context,values);
+    grib_context_free(a->context,values);
     return err;
 }
 
@@ -316,7 +323,8 @@ static int unpack_double(grib_accessor* a, double* values, size_t *len)
     long* firstOrderValues=0;
     long* X=0;
     long pos=0;
-    unsigned char* buf = (unsigned char*)a->parent->h->buffer->data;
+    grib_handle* handle = grib_handle_of_accessor(a);
+    unsigned char* buf = (unsigned char*)handle->buffer->data;
     long i,n;
     double reference_value;
     long binary_scale_factor;
@@ -348,52 +356,59 @@ static int unpack_double(grib_accessor* a, double* values, size_t *len)
     ret=value_count(a,&numberOfValues);
     if (ret) return ret;
 
-    if((ret=grib_get_long_internal(a->parent->h,self->numberOfGroups,&numberOfGroups)) != GRIB_SUCCESS)
+    if((ret=grib_get_long_internal(handle,self->numberOfGroups,&numberOfGroups)) != GRIB_SUCCESS)
         return ret;
 
-    if((ret=grib_get_long_internal(a->parent->h,self->binary_scale_factor,&binary_scale_factor)) != GRIB_SUCCESS)
+    if((ret=grib_get_long_internal(handle,self->binary_scale_factor,&binary_scale_factor)) != GRIB_SUCCESS)
         return ret;
 
     ngroups=numberOfGroups;
-    groupWidths=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*numberOfGroups);
-    ret=grib_get_long_array(a->parent->h,self->groupWidths,groupWidths,&ngroups);
+    groupWidths=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfGroups);
+    ret=grib_get_long_array(handle,self->groupWidths,groupWidths,&ngroups);
     if(ret != GRIB_SUCCESS) return ret;
 
-    groupLengths=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*numberOfGroups);
-    ret=grib_get_long_array(a->parent->h,self->groupLengths,groupLengths,&ngroups);
+    groupLengths=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfGroups);
+    ret=grib_get_long_array(handle,self->groupLengths,groupLengths,&ngroups);
     if(ret != GRIB_SUCCESS) return ret;
 
-    firstOrderValues=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*numberOfGroups);
-    ret=grib_get_long_array(a->parent->h,self->firstOrderValues,firstOrderValues,&ngroups);
+    firstOrderValues=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfGroups);
+    ret=grib_get_long_array(handle,self->firstOrderValues,firstOrderValues,&ngroups);
     if(ret != GRIB_SUCCESS) return ret;
 
-    if((ret=grib_get_long_internal(a->parent->h,self->decimal_scale_factor,&decimal_scale_factor)) != GRIB_SUCCESS)
+    if((ret=grib_get_long_internal(handle,self->decimal_scale_factor,&decimal_scale_factor)) != GRIB_SUCCESS)
         return ret;
 
-    if((ret=grib_get_double_internal(a->parent->h,self->reference_value,&reference_value)) != GRIB_SUCCESS)
+    if((ret=grib_get_double_internal(handle,self->reference_value,&reference_value)) != GRIB_SUCCESS)
         return ret;
 
-    if((ret=grib_get_long_internal(a->parent->h,self->numberOfSecondOrderPackedValues,
+    if((ret=grib_get_long_internal(handle,self->numberOfSecondOrderPackedValues,
             &numberOfSecondOrderPackedValues)) != GRIB_SUCCESS)
         return ret;
 
-    if((ret=grib_get_long_internal(a->parent->h,self->orderOfSPD,&orderOfSPD)) != GRIB_SUCCESS)
+    if((ret=grib_get_long_internal(handle,self->orderOfSPD,&orderOfSPD)) != GRIB_SUCCESS)
         return ret;
 
     if (orderOfSPD) {
         size_t nSPD=orderOfSPD+1;
-        SPD=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*nSPD);
-        ret=grib_get_long_array(a->parent->h,self->SPD,SPD,&nSPD);
+        SPD=(long*)grib_context_malloc_clear(a->context,sizeof(long)*nSPD);
+        ret=grib_get_long_array(handle,self->SPD,SPD,&nSPD);
         bias=SPD[orderOfSPD];
         if(ret != GRIB_SUCCESS) return ret;
     }
 
-    X=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*numberOfValues);
+    X=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues);
 
     n=orderOfSPD;
     for (i=0;i<numberOfGroups;i++) {
         if (groupWidths[i]>0) {
-
+            grib_decode_long_array(buf, &pos, groupWidths[i], groupLengths[i],
+                    &X[n]);
+            for (j=0;j<groupLengths[i];j++) {
+                X[n]+=firstOrderValues[i];
+                count++;
+                n++;
+            }
+#if 0
             for (j=0;j<groupLengths[i];j++) {
                 X[n]=grib_decode_unsigned_long(buf,&pos,groupWidths[i]);
 #if EFDEBUG
@@ -403,6 +418,7 @@ static int unpack_double(grib_accessor* a, double* values, size_t *len)
                 count++;
                 n++;
             }
+#endif
         } else {
             for (j=0;j<groupLengths[i];j++) {
                 X[n]=firstOrderValues[i];
@@ -449,11 +465,11 @@ static int unpack_double(grib_accessor* a, double* values, size_t *len)
 
     if (self->values) {
         if (numberOfValues!=self->size) {
-            grib_context_free(a->parent->h->context,self->values);
-            self->values=(double*)grib_context_malloc_clear(a->parent->h->context,sizeof(double)*numberOfValues);
+            grib_context_free(a->context,self->values);
+            self->values=(double*)grib_context_malloc_clear(a->context,sizeof(double)*numberOfValues);
         }
     } else {
-        self->values=(double*)grib_context_malloc_clear(a->parent->h->context,sizeof(double)*numberOfValues);
+        self->values=(double*)grib_context_malloc_clear(a->context,sizeof(double)*numberOfValues);
     }
 
     s = grib_power(binary_scale_factor,2);
@@ -466,17 +482,17 @@ static int unpack_double(grib_accessor* a, double* values, size_t *len)
     *len=numberOfValues;
     self->size=numberOfValues;
 
-    grib_context_free(a->parent->h->context,X);
-    grib_context_free(a->parent->h->context,groupWidths);
-    grib_context_free(a->parent->h->context,groupLengths);
-    grib_context_free(a->parent->h->context,firstOrderValues);
+    grib_context_free(a->context,X);
+    grib_context_free(a->context,groupWidths);
+    grib_context_free(a->context,groupLengths);
+    grib_context_free(a->context,firstOrderValues);
     if (orderOfSPD)
-        grib_context_free(a->parent->h->context,SPD);
+        grib_context_free(a->context,SPD);
 
     return ret;
 }
 
-static void grib_split_long_groups(grib_context* c,long* numberOfGroups,long* lengthOfSecondOrderValues,
+static void grib_split_long_groups(grib_handle* hand, grib_context* c,long* numberOfGroups,long* lengthOfSecondOrderValues,
         long* groupLengths,long* widthOfLengths,
         long* groupWidths, long widthOfWidths,
         long* firstOrderValues,long widthOfFirstOrderValues) {
@@ -501,7 +517,7 @@ static void grib_split_long_groups(grib_context* c,long* numberOfGroups,long* le
     j=0;
     /* compute the widthOfLengths and the number of big groups */
     for (i=0;i<*numberOfGroups;i++) {
-        widthsOfLengths[i]=number_of_bits(groupLengths[i]);
+        widthsOfLengths[i]=number_of_bits(hand, groupLengths[i]);
         if (*widthOfLengths==widthsOfLengths[i]) {
             j++;
         }
@@ -528,12 +544,12 @@ static void grib_split_long_groups(grib_context* c,long* numberOfGroups,long* le
         for (i=0;i<*numberOfGroups;i++) {
             if (newWidth<widthsOfLengths[i]) {
                 localLengths[j]=groupLengths[i]/2;
-                localWidthsOfLengths[j]=number_of_bits(localLengths[j]);
+                localWidthsOfLengths[j]=number_of_bits(hand, localLengths[j]);
                 localWidths[j]=groupWidths[i];
                 localFirstOrderValues[j]=firstOrderValues[i];
                 j++;
                 localLengths[j]=groupLengths[i]-localLengths[j-1];
-                localWidthsOfLengths[j]=number_of_bits(localLengths[j]);
+                localWidthsOfLengths[j]=number_of_bits(hand, localLengths[j]);
                 localWidths[j]=groupWidths[i];
                 localFirstOrderValues[j]=firstOrderValues[i];
                 if (localWidthsOfLengths[j]>newWidth) {
@@ -604,7 +620,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     long maxWidth,maxLength,widthOfWidths,NL,widthOfLengths,N1,N2,extraValues,codedNumberOfGroups,numberOfSecondOrderPackedValues;
     long pos;
 
-
     long numberOfGroups;
     long groupLengthC,groupLengthA,remainingValues,count;
     long maxA=0,minA=0;
@@ -625,6 +640,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     int computeGroupA=1;
     long dataHeadersLength,widthsLength,lengthsLength,firstOrderValuesLength;
     long decimal_scale_factor;
+    grib_handle* handle = grib_handle_of_accessor(a);
 
     self->dirty=1;
 
@@ -639,10 +655,10 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
     /* For constant fields set decimal scale factor to 0 (See GRIB-165) */
     if (min==max) {
-        grib_set_long_internal(a->parent->h,self->decimal_scale_factor, 0);
+        grib_set_long_internal(handle,self->decimal_scale_factor, 0);
     }
 
-    if((ret = grib_get_long_internal(a->parent->h,self->decimal_scale_factor, &decimal_scale_factor))
+    if((ret = grib_get_long_internal(handle,self->decimal_scale_factor, &decimal_scale_factor))
             != GRIB_SUCCESS)
         return ret;
     decimal = grib_power(decimal_scale_factor,10);
@@ -650,43 +666,43 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     max*=decimal;
     min*=decimal;
 
-    if (grib_get_nearest_smaller_value(a->parent->h,self->reference_value,min,&reference_value)
+    if (grib_get_nearest_smaller_value(handle,self->reference_value,min,&reference_value)
             !=GRIB_SUCCESS) {
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+        grib_context_log(a->context,GRIB_LOG_ERROR,
                 "unable to find nearest_smaller_value of %g for %s",min,self->reference_value);
         exit(GRIB_INTERNAL_ERROR);
     }
-    if((ret = grib_set_double_internal(a->parent->h,self->reference_value, reference_value)) !=
+    if((ret = grib_set_double_internal(handle,self->reference_value, reference_value)) !=
             GRIB_SUCCESS)
         return ret;
 
-    if((ret=grib_get_long_internal(a->parent->h,self->bits_per_value,&bits_per_value)) != GRIB_SUCCESS)
+    if((ret=grib_get_long_internal(handle,self->bits_per_value,&bits_per_value)) != GRIB_SUCCESS)
         return ret;
 
-    if((ret=grib_get_long_internal(a->parent->h,self->offsetdata,&offsetBeforeData)) != GRIB_SUCCESS)
+    if((ret=grib_get_long_internal(handle,self->offsetdata,&offsetBeforeData)) != GRIB_SUCCESS)
         return ret;
 
-    if((ret=grib_get_long_internal(a->parent->h,self->offsetsection,&offsetSection4)) != GRIB_SUCCESS)
+    if((ret=grib_get_long_internal(handle,self->offsetsection,&offsetSection4)) != GRIB_SUCCESS)
         return ret;
 
-    if((ret=grib_get_long_internal(a->parent->h,self->orderOfSPD,&orderOfSPD)) != GRIB_SUCCESS)
+    if((ret=grib_get_long_internal(handle,self->orderOfSPD,&orderOfSPD)) != GRIB_SUCCESS)
         return ret;
 
     binary_scale_factor = grib_get_binary_scale_fact(max,reference_value,bits_per_value,&ret);
 
-    if((ret = grib_set_long_internal(a->parent->h,self->binary_scale_factor, binary_scale_factor)) !=
+    if((ret = grib_set_long_internal(handle,self->binary_scale_factor, binary_scale_factor)) !=
             GRIB_SUCCESS)
         return ret;
 
     divisor = grib_power(-binary_scale_factor,2);
-    X=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*numberOfValues);
+    X=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues);
     for(i=0;i< numberOfValues;i++){
         X[i] = (((val[i]*decimal)-reference_value)*divisor)+0.5;
     }
 
-    groupLengths=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*numberOfValues);
-    groupWidths=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*numberOfValues);
-    firstOrderValues=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*numberOfValues);
+    groupLengths=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues);
+    groupWidths=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues);
+    firstOrderValues=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues);
 
     /* spatial differencing */
     switch (orderOfSPD) {
@@ -719,8 +735,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
             if ( maxSPD < X[i] ) maxSPD=X[i];
         }
         /* widthOfSPD=(long)ceil(log((double)(maxSPD+1))/log(2.0)); */
-        widthOfSPD=number_of_bits(maxSPD);
-        widthOfBias=number_of_bits(abs(bias))+1;
+        widthOfSPD=number_of_bits(handle, maxSPD);
+        widthOfBias=number_of_bits(handle, labs(bias))+1;
 
         if ( widthOfSPD < widthOfBias  ) widthOfSPD=widthOfBias;
 
@@ -732,7 +748,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     numberOfGroups=0;
     incrementGroupLengthA=startGroupLength;
 
-
     computeGroupA=1;
     while (remainingValues) {
         /* group A created with length=incrementGroupLengthA (if enough values remain)
@@ -743,12 +758,12 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
             maxA=X[count];
             minA=X[count];
             for (i=1;i<groupLengthA;i++) {
+                DebugAssertAccess(X, count+i, numberOfValues);
                 if (maxA<X[count+i]) maxA=X[count+i];
                 if (minA>X[count+i]) minA=X[count+i];
             }
-
         }
-        groupWidthA=number_of_bits(maxA-minA);
+        groupWidthA=number_of_bits(handle, maxA-minA);
         range=(long)grib_power(groupWidthA,2)-1;
 
         offsetC=count+groupLengthA;
@@ -773,6 +788,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
         maxC=X[offsetC];
         minC=X[offsetC];
         for (i=1;i<groupLengthC;i++) {
+            DebugAssertAccess(X, offsetC+i, numberOfValues);
             if (maxC<X[offsetC+i]) maxC=X[offsetC+i];
             if (minC>X[offsetC+i]) minC=X[offsetC+i];
         }
@@ -941,7 +957,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
         if (max<firstOrderValues[i]) max=firstOrderValues[i];
         if (min>firstOrderValues[i]) min=firstOrderValues[i];
     }
-    widthOfFirstOrderValues=number_of_bits(max-min);
+    widthOfFirstOrderValues=number_of_bits(handle, max-min);
     firstOrderValuesMax=(long)grib_power(widthOfFirstOrderValues,2)-1;
 
     if (numberOfGroups>2) {
@@ -950,7 +966,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
            Focus on groups which have been shrank as left groups of an A group taking
            some of their elements.
          */
-        offsets=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*numberOfGroups);
+        offsets=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfGroups);
         offsets[0]=orderOfSPD;
         for (i=1;i<numberOfGroups;i++) offsets[i]=offsets[i-1]+groupLengths[i-1];
         for (i=numberOfGroups-2;i>=0;i--) {
@@ -965,7 +981,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
                 if (max<X[offset+j]) max=X[offset+j];
                 if (min>X[offset+j]) min=X[offset+j];
             }
-            groupWidth=number_of_bits(max-min);
+            groupWidth=number_of_bits(handle, max-min);
             range=(long)grib_power(groupWidth,2)-1;
 
             /* width of first order values has to be unchanged.*/
@@ -1006,7 +1022,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
             }
 
         }
-        grib_context_free(a->parent->h->context,offsets);
+        grib_context_free(a->context,offsets);
     }
 
     maxWidth=groupWidths[0];
@@ -1015,16 +1031,21 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
         if (maxWidth<groupWidths[i]) maxWidth=groupWidths[i];
         if (maxLength<groupLengths[i]) maxLength=groupLengths[i];
     }
-    widthOfWidths=number_of_bits(maxWidth);
-    widthOfLengths=number_of_bits(maxLength);
+
+    if (maxWidth < 0 || maxLength < 0) {
+        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Cannot compute parameters for second order packing.");
+        return GRIB_ENCODING_ERROR;
+    }
+    widthOfWidths=number_of_bits(handle, maxWidth);
+    widthOfLengths=number_of_bits(handle, maxLength);
 
     lengthOfSecondOrderValues=0;
     for ( i=0; i<numberOfGroups;i++) {
         lengthOfSecondOrderValues+=groupLengths[i]*groupWidths[i];
     }
 
-    if (!a->parent->h->context->no_big_group_split) {
-        grib_split_long_groups(a->parent->h->context,&numberOfGroups,&lengthOfSecondOrderValues,
+    if (!a->context->no_big_group_split) {
+        grib_split_long_groups(handle, a->context,&numberOfGroups,&lengthOfSecondOrderValues,
                 groupLengths,&widthOfLengths,groupWidths,widthOfWidths,
                 firstOrderValues,widthOfFirstOrderValues);
     }
@@ -1040,15 +1061,13 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
     /* writing SPD */
     if (orderOfSPD) {
-        if((ret = grib_set_long_internal(a->parent->h,self->widthOfSPD, widthOfSPD))
+        if((ret = grib_set_long_internal(handle,self->widthOfSPD, widthOfSPD))
                 != GRIB_SUCCESS)
             return ret;
-
     }
 
     /* end writing SPD */
-
-    if((ret = grib_set_long_internal(a->parent->h,self->widthOfFirstOrderValues, widthOfFirstOrderValues))
+    if((ret = grib_set_long_internal(handle,self->widthOfFirstOrderValues, widthOfFirstOrderValues))
             != GRIB_SUCCESS)
         return ret;
 
@@ -1066,9 +1085,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     N2= N2 > 65535 ? 65535 : N2;
     N1= N1 > 65535 ? 65535 : N1;
 
-    grib_set_long(a->parent->h,self->NL, NL);
-    grib_set_long(a->parent->h,self->N1, N1);
-    grib_set_long(a->parent->h,self->N2, N2);
+    grib_set_long(handle,self->NL, NL);
+    grib_set_long(handle,self->N1, N1);
+    grib_set_long(handle,self->N2, N2);
 
     if (numberOfGroups > 65535 ) {
         extraValues=numberOfGroups/65536;
@@ -1080,34 +1099,34 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
     /* if no extraValues key present it is a GRIB2*/
     grib2=0;
-    if((ret = grib_set_long(a->parent->h,self->extraValues, extraValues)) != GRIB_SUCCESS) {
+    if((ret = grib_set_long(handle,self->extraValues, extraValues)) != GRIB_SUCCESS) {
         codedNumberOfGroups=numberOfGroups;
         grib2=1;
     }
 
-    if((ret = grib_set_long_internal(a->parent->h,self->codedNumberOfGroups, codedNumberOfGroups)) != GRIB_SUCCESS)
+    if((ret = grib_set_long_internal(handle,self->codedNumberOfGroups, codedNumberOfGroups)) != GRIB_SUCCESS)
         return ret;
 
     numberOfSecondOrderPackedValues=numberOfValues-orderOfSPD;
     if (!grib2 && numberOfSecondOrderPackedValues > 65535 )
         numberOfSecondOrderPackedValues= 65535;
 
-    if((ret = grib_set_long_internal(a->parent->h,self->numberOfSecondOrderPackedValues, numberOfSecondOrderPackedValues))
+    if((ret = grib_set_long_internal(handle,self->numberOfSecondOrderPackedValues, numberOfSecondOrderPackedValues))
             != GRIB_SUCCESS)
         return ret;
 
     if (grib2) {
-        if((ret = grib_set_long_internal(a->parent->h,self->bits_per_value, bits_per_value)) != GRIB_SUCCESS)
+        if((ret = grib_set_long_internal(handle,self->bits_per_value, bits_per_value)) != GRIB_SUCCESS)
             return ret;
     } else {
-        if((ret = grib_set_long_internal(a->parent->h,self->bits_per_value, 0)) != GRIB_SUCCESS)
+        if((ret = grib_set_long_internal(handle,self->bits_per_value, 0)) != GRIB_SUCCESS)
             return ret;
     }
 
-    if((ret = grib_set_long_internal(a->parent->h,self->widthOfWidths, widthOfWidths)) != GRIB_SUCCESS)
+    if((ret = grib_set_long_internal(handle,self->widthOfWidths, widthOfWidths)) != GRIB_SUCCESS)
         return ret;
 
-    if((ret = grib_set_long_internal(a->parent->h,self->widthOfLengths, widthOfLengths)) != GRIB_SUCCESS)
+    if((ret = grib_set_long_internal(handle,self->widthOfLengths, widthOfLengths)) != GRIB_SUCCESS)
         return ret;
 
     lengthOfSecondOrderValues=0;
@@ -1121,10 +1140,10 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     /* padding section 4 to an even number of octets*/
     size = (size+offsetBeforeData-offsetSection4) % 2 ? size+1 : size;
     half_byte=8*size-sizebits;
-    if((ret = grib_set_long_internal(a->parent->h,self->half_byte, half_byte)) != GRIB_SUCCESS)
+    if((ret = grib_set_long_internal(handle,self->half_byte, half_byte)) != GRIB_SUCCESS)
         return ret;
 
-    buffer=(unsigned char*)grib_context_malloc_clear(a->parent->h->context,size);
+    buffer=(unsigned char*)grib_context_malloc_clear(a->context,size);
 
     pos=0;
     if (orderOfSPD) {
@@ -1133,17 +1152,17 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
         Assert(orderOfSPD<=3);
         for (i=0;i<orderOfSPD;i++) SPD[i]=X[i];
         SPD[orderOfSPD]=bias;
-        ret=grib_set_long_array_internal(a->parent->h,self->SPD,SPD,nSPD);
+        ret=grib_set_long_array_internal(handle,self->SPD,SPD,nSPD);
         if(ret) return ret;
     }
 
-    ret=grib_set_long_array_internal(a->parent->h,self->groupWidths,groupWidths,(size_t)numberOfGroups);
+    ret=grib_set_long_array_internal(handle,self->groupWidths,groupWidths,(size_t)numberOfGroups);
     if(ret) return ret;
 
-    ret=grib_set_long_array_internal(a->parent->h,self->groupLengths,groupLengths,(size_t)numberOfGroups);
+    ret=grib_set_long_array_internal(handle,self->groupLengths,groupLengths,(size_t)numberOfGroups);
     if(ret) return ret;
 
-    ret=grib_set_long_array_internal(a->parent->h,self->firstOrderValues,firstOrderValues,(size_t)numberOfGroups);
+    ret=grib_set_long_array_internal(handle,self->firstOrderValues,firstOrderValues,(size_t)numberOfGroups);
     if(ret) return ret;
 
     Xp=X+orderOfSPD;
@@ -1168,11 +1187,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
     grib_buffer_replace(a, buffer, size,1,1);
 
-    grib_context_free(a->parent->h->context,buffer);
-    grib_context_free(a->parent->h->context,X);
-    grib_context_free(a->parent->h->context,groupLengths);
-    grib_context_free(a->parent->h->context,groupWidths);
-    grib_context_free(a->parent->h->context,firstOrderValues);
+    grib_context_free(a->context,buffer);
+    grib_context_free(a->context,X);
+    grib_context_free(a->context,groupLengths);
+    grib_context_free(a->context,groupWidths);
+    grib_context_free(a->context,firstOrderValues);
 
     return ret;
 }
diff --git a/src/grib_accessor_class_data_g1second_order_general_packing.c b/src/grib_accessor_class_data_g1second_order_general_packing.c
index 00866bc..1a4807b 100644
--- a/src/grib_accessor_class_data_g1second_order_general_packing.c
+++ b/src/grib_accessor_class_data_g1second_order_general_packing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -137,6 +137,7 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_general_pack
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -173,6 +174,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -181,22 +183,22 @@ static void init(grib_accessor* a,const long v, grib_arguments* args)
 {
   grib_accessor_data_g1second_order_general_packing *self =(grib_accessor_data_g1second_order_general_packing*)a;
 
-  self->half_byte    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->packingType    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->ieee_packing    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->precision    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->widthOfFirstOrderValues    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->N1 = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->N2 = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->numberOfGroups = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->numberOfSecondOrderPackedValues = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->extraValues = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->Ni = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->Nj = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->pl = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->jPointsAreConsecutive = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->bitmap = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->groupWidths = grib_arguments_get_name(a->parent->h,args,self->carg++);
+  self->half_byte    = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->packingType    = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->ieee_packing    = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->precision    = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->widthOfFirstOrderValues    = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->N1 = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->N2 = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->numberOfGroups = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->numberOfSecondOrderPackedValues = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->extraValues = 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->pl = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->jPointsAreConsecutive = 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->groupWidths = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
   self->edition=1;
   a->flags |= GRIB_ACCESSOR_FLAG_DATA;
 
@@ -208,7 +210,7 @@ static int value_count(grib_accessor* a,long* numberOfSecondOrderPackedValues)
   grib_accessor_data_g1second_order_general_packing *self =(grib_accessor_data_g1second_order_general_packing*)a;
   *numberOfSecondOrderPackedValues=0;
 
-  err=grib_get_long_internal(a->parent->h,self->numberOfSecondOrderPackedValues,numberOfSecondOrderPackedValues);
+  err=grib_get_long_internal(grib_handle_of_accessor(a),self->numberOfSecondOrderPackedValues,numberOfSecondOrderPackedValues);
 
   return err;
 
@@ -224,7 +226,7 @@ static int unpack_double(grib_accessor* a, double* values, size_t *len)
   long* X=0;
   long pos=0;
   long widthOfFirstOrderValues=0;
-  unsigned char* buf = (unsigned char*)a->parent->h->buffer->data;
+  unsigned char* buf = (unsigned char*)grib_handle_of_accessor(a)->buffer->data;
   long i,n;
   double reference_value;
   long binary_scale_factor;
@@ -236,40 +238,40 @@ static int unpack_double(grib_accessor* a, double* values, size_t *len)
 
   buf += grib_byte_offset(a);
 
-  if((ret=grib_get_long_internal(a->parent->h,self->numberOfGroups,&numberOfGroups)) != GRIB_SUCCESS)
+  if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->numberOfGroups,&numberOfGroups)) != GRIB_SUCCESS)
          return ret;
 
-  if((ret=grib_get_long_internal(a->parent->h,self->widthOfFirstOrderValues,&widthOfFirstOrderValues)) != GRIB_SUCCESS)
+  if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->widthOfFirstOrderValues,&widthOfFirstOrderValues)) != GRIB_SUCCESS)
          return ret;
 
-  if((ret=grib_get_long_internal(a->parent->h,self->binary_scale_factor,&binary_scale_factor)) != GRIB_SUCCESS)
+  if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->binary_scale_factor,&binary_scale_factor)) != GRIB_SUCCESS)
          return ret;
 
-  if((ret=grib_get_long_internal(a->parent->h,self->decimal_scale_factor,&decimal_scale_factor)) != GRIB_SUCCESS)
+  if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->decimal_scale_factor,&decimal_scale_factor)) != GRIB_SUCCESS)
          return ret;
 
-  if((ret=grib_get_double_internal(a->parent->h,self->reference_value,&reference_value)) != GRIB_SUCCESS)
+  if((ret=grib_get_double_internal(grib_handle_of_accessor(a),self->reference_value,&reference_value)) != GRIB_SUCCESS)
          return ret;
 
-  if((ret=grib_get_long_internal(a->parent->h,self->numberOfSecondOrderPackedValues,
+  if((ret=grib_get_long_internal(grib_handle_of_accessor(a),self->numberOfSecondOrderPackedValues,
   					&numberOfSecondOrderPackedValues)) != GRIB_SUCCESS)
          return ret;
 
-  groupWidths=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*numberOfGroups);
+  groupWidths=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfGroups);
   groupWidthsSize=numberOfGroups;
-  if((ret=grib_get_long_array_internal(a->parent->h,self->groupWidths, groupWidths,&groupWidthsSize)) != GRIB_SUCCESS)
+  if((ret=grib_get_long_array_internal(grib_handle_of_accessor(a),self->groupWidths, groupWidths,&groupWidthsSize)) != GRIB_SUCCESS)
          return ret;
 
-	secondaryBitmap=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*(numberOfSecondOrderPackedValues+1));
+	secondaryBitmap=(long*)grib_context_malloc_clear(a->context,sizeof(long)*(numberOfSecondOrderPackedValues+1));
 	secondaryBitmap[numberOfSecondOrderPackedValues]=1;
 	grib_decode_long_array(buf,&pos,1,numberOfSecondOrderPackedValues,secondaryBitmap);
 	pos = 8 * ( (pos + 7 ) / 8);
 
-	firstOrderValues=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*numberOfGroups);
+	firstOrderValues=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfGroups);
 	grib_decode_long_array(buf,&pos,widthOfFirstOrderValues,numberOfGroups,firstOrderValues);
 	pos = 8 * ( (pos + 7 ) / 8);
 
-	X=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*numberOfSecondOrderPackedValues);
+	X=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfSecondOrderPackedValues);
 
 	n=0;
 	i=-1;
@@ -302,10 +304,10 @@ static int unpack_double(grib_accessor* a, double* values, size_t *len)
 	}
 
 	*len=numberOfSecondOrderPackedValues;
-	grib_context_free(a->parent->h->context,secondaryBitmap);
-	grib_context_free(a->parent->h->context,firstOrderValues);
-	grib_context_free(a->parent->h->context,X);
-	grib_context_free(a->parent->h->context,groupWidths);
+	grib_context_free(a->context,secondaryBitmap);
+	grib_context_free(a->context,firstOrderValues);
+	grib_context_free(a->context,X);
+	grib_context_free(a->context,groupWidths);
   
   return ret;
 }
@@ -316,9 +318,9 @@ static int pack_double(grib_accessor* a, const double* cval, size_t *len)
   char type[]="grid_second_order";
   size_t size=strlen(type);
 
-  grib_set_string(a->parent->h,"packingType",type,&size);
+  grib_set_string(grib_handle_of_accessor(a),"packingType",type,&size);
 
-  return grib_set_double_array(a->parent->h,"values",cval,*len);
+  return grib_set_double_array(grib_handle_of_accessor(a),"values",cval,*len);
 
 }
 
diff --git a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.c b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.c
index 5155eda..adf5e15 100644
--- a/src/grib_accessor_class_data_g1second_order_row_by_row_packing.c
+++ b/src/grib_accessor_class_data_g1second_order_row_by_row_packing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -137,6 +137,7 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_row_by_row_p
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -173,258 +174,259 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
 
 static void init(grib_accessor* a,const long v, grib_arguments* args)
 {
-  grib_accessor_data_g1second_order_row_by_row_packing *self =(grib_accessor_data_g1second_order_row_by_row_packing*)a;
-
-  self->half_byte    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->packingType    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->ieee_packing    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->precision    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->widthOfFirstOrderValues    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->N1 = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->N2 = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->numberOfGroups = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->numberOfSecondOrderPackedValues = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->extraValues = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->Ni = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->Nj = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->pl = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->jPointsAreConsecutive = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->groupWidths = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->bitmap = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->edition=1;
-  a->flags |= GRIB_ACCESSOR_FLAG_DATA;
-
+    grib_accessor_data_g1second_order_row_by_row_packing *self =(grib_accessor_data_g1second_order_row_by_row_packing*)a;
+    grib_handle* gh = grib_handle_of_accessor(a);
+
+    self->half_byte    = grib_arguments_get_name(gh,args,self->carg++);
+    self->packingType    = grib_arguments_get_name(gh,args,self->carg++);
+    self->ieee_packing    = grib_arguments_get_name(gh,args,self->carg++);
+    self->precision    = grib_arguments_get_name(gh,args,self->carg++);
+    self->widthOfFirstOrderValues    = grib_arguments_get_name(gh,args,self->carg++);
+    self->N1 = grib_arguments_get_name(gh,args,self->carg++);
+    self->N2 = grib_arguments_get_name(gh,args,self->carg++);
+    self->numberOfGroups = grib_arguments_get_name(gh,args,self->carg++);
+    self->numberOfSecondOrderPackedValues = grib_arguments_get_name(gh,args,self->carg++);
+    self->extraValues = grib_arguments_get_name(gh,args,self->carg++);
+    self->Ni = grib_arguments_get_name(gh,args,self->carg++);
+    self->Nj = grib_arguments_get_name(gh,args,self->carg++);
+    self->pl = grib_arguments_get_name(gh,args,self->carg++);
+    self->jPointsAreConsecutive = grib_arguments_get_name(gh,args,self->carg++);
+    self->groupWidths = grib_arguments_get_name(gh,args,self->carg++);
+    self->bitmap = grib_arguments_get_name(gh,args,self->carg++);
+    self->edition=1;
+    a->flags |= GRIB_ACCESSOR_FLAG_DATA;
 }
 
 static int value_count(grib_accessor* a,long* count)
 {
-	grib_accessor_data_g1second_order_row_by_row_packing *self =(grib_accessor_data_g1second_order_row_by_row_packing*)a;
-	long n=0,i=0;
-	long numberOfRows=0;
-	long jPointsAreConsecutive=0;
-	long Ni=0,Nj=0;
-	int bitmapPresent=0;
-	size_t plSize=0;
-	long* pl=0;
-	int ret=0;
-	grib_context* c=a->parent->h->context;
-
-	if (self->bitmap) bitmapPresent=1;
-	if((ret=grib_get_long_internal(a->parent->h,self->jPointsAreConsecutive,&jPointsAreConsecutive)) != GRIB_SUCCESS)
-		return ret;
-	if((ret=grib_get_long_internal(a->parent->h,self->Ni,&Ni)) != GRIB_SUCCESS)
-		return ret;
-	if((ret=grib_get_long_internal(a->parent->h,self->Nj,&Nj)) != GRIB_SUCCESS)
-		return ret;
-	if (jPointsAreConsecutive) {
-		numberOfRows=Ni;
-	} else {
-		numberOfRows=Nj;
-	}
-
-	plSize=0;
-	ret=grib_get_size(a->parent->h,self->pl,&plSize);
-	if (ret==GRIB_SUCCESS) {
-        pl=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*plSize);
-		if((ret=grib_get_long_array(a->parent->h,self->pl,pl,&plSize)) != GRIB_SUCCESS)
-			return ret;
-	}
-  ret=0;
-
-	n=0;
-	if (bitmapPresent) {
-		long *bitmap,*pbitmap;
-		size_t numberOfPoints = 0;
-
-		if (plSize) {
-			for (i=0;i<numberOfRows;i++) numberOfPoints+=pl[i];
-			grib_context_free(c,pl);
-		} else {
-			numberOfPoints=Ni*Nj;
-		}
-        bitmap=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*numberOfPoints);
-		pbitmap=bitmap;
-		grib_get_long_array(a->parent->h,self->bitmap,bitmap,&numberOfPoints);
-		for (i=0;i<numberOfPoints;i++) n+=*(bitmap++);
-
-		grib_context_free(a->parent->h->context,pbitmap);
-	} else {
-		if (plSize) {
-			for (i=0;i<numberOfRows;i++) n+=pl[i];
-			grib_context_free(c,pl);
-		} else {
-			n=Ni*Nj;
-		}
-	}
-
-  *count=n;
-  return ret;
-
+    grib_accessor_data_g1second_order_row_by_row_packing *self =(grib_accessor_data_g1second_order_row_by_row_packing*)a;
+    grib_handle* gh = grib_handle_of_accessor(a);
+    long n=0,i=0;
+    long numberOfRows=0;
+    long jPointsAreConsecutive=0;
+    long Ni=0,Nj=0;
+    int bitmapPresent=0;
+    size_t plSize=0;
+    long* pl=0;
+    int ret=0;
+    grib_context* c=a->context;
+
+    if (self->bitmap) bitmapPresent=1;
+    if((ret=grib_get_long_internal(gh,self->jPointsAreConsecutive,&jPointsAreConsecutive)) != GRIB_SUCCESS)
+        return ret;
+    if((ret=grib_get_long_internal(gh,self->Ni,&Ni)) != GRIB_SUCCESS)
+        return ret;
+    if((ret=grib_get_long_internal(gh,self->Nj,&Nj)) != GRIB_SUCCESS)
+        return ret;
+    if (jPointsAreConsecutive) {
+        numberOfRows=Ni;
+    } else {
+        numberOfRows=Nj;
+    }
+
+    plSize=0;
+    ret=grib_get_size(gh,self->pl,&plSize);
+    if (ret==GRIB_SUCCESS) {
+        pl=(long*)grib_context_malloc_clear(a->context,sizeof(long)*plSize);
+        if((ret=grib_get_long_array(gh,self->pl,pl,&plSize)) != GRIB_SUCCESS)
+            return ret;
+    }
+    ret=0;
+
+    n=0;
+    if (bitmapPresent) {
+        long *bitmap,*pbitmap;
+        size_t numberOfPoints = 0;
+
+        if (plSize) {
+            for (i=0;i<numberOfRows;i++) numberOfPoints+=pl[i];
+            grib_context_free(c,pl);
+        } else {
+            numberOfPoints=Ni*Nj;
+        }
+        bitmap=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfPoints);
+        pbitmap=bitmap;
+        grib_get_long_array(gh,self->bitmap,bitmap,&numberOfPoints);
+        for (i=0;i<numberOfPoints;i++) n+=*(bitmap++);
+
+        grib_context_free(a->context,pbitmap);
+    } else {
+        if (plSize) {
+            for (i=0;i<numberOfRows;i++) n+=pl[i];
+            grib_context_free(c,pl);
+        } else {
+            n=Ni*Nj;
+        }
+    }
+
+    *count=n;
+    return ret;
 }
 
-
 static int unpack_double(grib_accessor* a, double* values, size_t *len)
 {
-	grib_accessor_data_g1second_order_row_by_row_packing* self =  (grib_accessor_data_g1second_order_row_by_row_packing*)a;
-	int ret=0;
-	long numberOfGroups,numberOfSecondOrderPackedValues;
-	long* groupWidths=0;
-	long* firstOrderValues=0;
-	long* X=0;
-	long numberOfRows,numberOfColumns;
-	long *numbersPerRow;
-	long pos=0;
-	long widthOfFirstOrderValues=0;
-	long jPointsAreConsecutive;
-	unsigned char* buf = (unsigned char*)a->parent->h->buffer->data;
-	long k,i,j,n,Ni,Nj;
-	double reference_value;
-	long binary_scale_factor;
-	long decimal_scale_factor;
-	double s,d;
-	size_t groupWidthsSize=0;
-	int bitmapPresent=0;
-	size_t plSize=0;
-	long* pl=0;
-
-	buf += grib_byte_offset(a);
-
-	if((ret=grib_get_long_internal(a->parent->h,self->numberOfGroups,&numberOfGroups)) != GRIB_SUCCESS)
-		return ret;
-
-	if((ret=grib_get_long_internal(a->parent->h,self->jPointsAreConsecutive,&jPointsAreConsecutive)) != GRIB_SUCCESS)
-		return ret;
-
-	if (self->bitmap) bitmapPresent=1;
-	ret=grib_get_size(a->parent->h,self->pl,&plSize);
-	if (ret==GRIB_SUCCESS) {
-        pl=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*plSize);
-		if((ret=grib_get_long_array(a->parent->h,self->pl,pl,&plSize)) != GRIB_SUCCESS)
-			return ret;
-	}
-
-	if((ret=grib_get_long_internal(a->parent->h,self->Ni,&Ni)) != GRIB_SUCCESS)
-		return ret;
-	if((ret=grib_get_long_internal(a->parent->h,self->Nj,&Nj)) != GRIB_SUCCESS)
-		return ret;
-	if (jPointsAreConsecutive) {
-		numberOfRows=Ni;
-		numberOfColumns=Nj;
-	} else {
-		numberOfRows=Nj;
-		numberOfColumns=Ni;
-	}
-
-    numbersPerRow=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*numberOfRows);
-	if (bitmapPresent) {
-		long *bitmap,*pbitmap;
-		size_t numberOfPoints=Ni*Nj;
-
-		if (plSize) {
-			numberOfPoints=0;
-			for (i=0;i<numberOfRows;i++) numberOfPoints+=pl[i];
-		}
-        bitmap=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*numberOfPoints);
-		pbitmap=bitmap;
-		grib_get_long_array(a->parent->h,self->bitmap,bitmap,&numberOfPoints);
-		if (plSize) {
-			for (i=0;i<numberOfRows;i++) {
-				for (j=0;j<pl[i];j++) {
-					numbersPerRow[i]+=*(bitmap++);
-				}
-			}
-		} else {
-			for (i=0;i<numberOfRows;i++) {
-				numbersPerRow[i]=0;
-				for (j=0;j<Ni;j++) {
-					numbersPerRow[i]+=*(bitmap++);
-				}
-			}
-		}
-
-		grib_context_free(a->parent->h->context,pbitmap);
-	} else {
-		if (plSize) {
-			for (i=0;i<numberOfRows;i++) numbersPerRow[i]=pl[i];
-		} else {
-			for (i=0;i<numberOfRows;i++)
-				numbersPerRow[i]=numberOfColumns;
-		}
-	}
-
-	if((ret=grib_get_long_internal(a->parent->h,self->widthOfFirstOrderValues,&widthOfFirstOrderValues)) != GRIB_SUCCESS)
-		return ret;
-
-	if((ret=grib_get_long_internal(a->parent->h,self->binary_scale_factor,&binary_scale_factor)) != GRIB_SUCCESS)
-		return ret;
-
-	if((ret=grib_get_long_internal(a->parent->h,self->decimal_scale_factor,&decimal_scale_factor)) != GRIB_SUCCESS)
-		return ret;
-
-	if((ret=grib_get_double_internal(a->parent->h,self->reference_value,&reference_value)) != GRIB_SUCCESS)
-		return ret;
-
-	if((ret=grib_get_long_internal(a->parent->h,self->numberOfSecondOrderPackedValues,
-					&numberOfSecondOrderPackedValues)) != GRIB_SUCCESS)
-		return ret;
-
-    groupWidths=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*numberOfGroups);
-	groupWidthsSize=numberOfGroups;
-	if((ret=grib_get_long_array_internal(a->parent->h,self->groupWidths, groupWidths,&groupWidthsSize)) != GRIB_SUCCESS)
-		return ret;
-
-    firstOrderValues=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*numberOfGroups);
-	grib_decode_long_array(buf,&pos,widthOfFirstOrderValues,numberOfGroups,firstOrderValues);
-	pos = 8 * ( (pos + 7 ) / 8);
-
-	n=0;
-	for (i=0; i<numberOfGroups; i++) n+=numbersPerRow[i];
-
-    X=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*n);
-	n=0;
-	k=0;
-	for (i=0; i<numberOfGroups; i++) {
-		if (groupWidths[i]>0) {
-			for (j=0;j<numbersPerRow[k];j++) {
-				X[n]=grib_decode_unsigned_long(buf,&pos,groupWidths[i]);
-				X[n]+=firstOrderValues[i];
-				n++;
-			}
-		} else {
-			for (j=0;j<numbersPerRow[k];j++) {
-				X[n]=firstOrderValues[i];
-				n++;
-			}
-		}
-		k++;
-	}
-
-	s = grib_power(binary_scale_factor,2);
-	d = grib_power(-decimal_scale_factor,10) ;
-	for (i=0; i<n; i++) {
-		values[i] = (double) (((X[i]*s)+reference_value)*d);
-	}
-	grib_context_free(a->parent->h->context,firstOrderValues);
-	grib_context_free(a->parent->h->context,X);
-	grib_context_free(a->parent->h->context,groupWidths);
-	if (plSize) grib_context_free(a->parent->h->context,pl);
-
-	return ret;
+    grib_accessor_data_g1second_order_row_by_row_packing* self =  (grib_accessor_data_g1second_order_row_by_row_packing*)a;
+    grib_handle* gh = grib_handle_of_accessor(a);
+    int ret=0;
+    long numberOfGroups,numberOfSecondOrderPackedValues;
+    long* groupWidths=0;
+    long* firstOrderValues=0;
+    long* X=0;
+    long numberOfRows,numberOfColumns;
+    long *numbersPerRow;
+    long pos=0;
+    long widthOfFirstOrderValues=0;
+    long jPointsAreConsecutive;
+    unsigned char* buf = (unsigned char*)gh->buffer->data;
+    long k,i,j,n,Ni,Nj;
+    double reference_value;
+    long binary_scale_factor;
+    long decimal_scale_factor;
+    double s,d;
+    size_t groupWidthsSize=0;
+    int bitmapPresent=0;
+    size_t plSize=0;
+    long* pl=0;
+
+    buf += grib_byte_offset(a);
+
+    if((ret=grib_get_long_internal(gh,self->numberOfGroups,&numberOfGroups)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret=grib_get_long_internal(gh,self->jPointsAreConsecutive,&jPointsAreConsecutive)) != GRIB_SUCCESS)
+        return ret;
+
+    if (self->bitmap) bitmapPresent=1;
+    ret=grib_get_size(gh,self->pl,&plSize);
+    if (ret==GRIB_SUCCESS) {
+        pl=(long*)grib_context_malloc_clear(a->context,sizeof(long)*plSize);
+        if((ret=grib_get_long_array(gh,self->pl,pl,&plSize)) != GRIB_SUCCESS)
+            return ret;
+    }
+
+    if((ret=grib_get_long_internal(gh,self->Ni,&Ni)) != GRIB_SUCCESS)
+        return ret;
+    if((ret=grib_get_long_internal(gh,self->Nj,&Nj)) != GRIB_SUCCESS)
+        return ret;
+    if (jPointsAreConsecutive) {
+        numberOfRows=Ni;
+        numberOfColumns=Nj;
+    } else {
+        numberOfRows=Nj;
+        numberOfColumns=Ni;
+    }
+
+    numbersPerRow=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfRows);
+    if (bitmapPresent) {
+        long *bitmap,*pbitmap;
+        size_t numberOfPoints=Ni*Nj;
+
+        if (plSize) {
+            numberOfPoints=0;
+            for (i=0;i<numberOfRows;i++) numberOfPoints+=pl[i];
+        }
+        bitmap=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfPoints);
+        pbitmap=bitmap;
+        grib_get_long_array(gh,self->bitmap,bitmap,&numberOfPoints);
+        if (plSize) {
+            for (i=0;i<numberOfRows;i++) {
+                for (j=0;j<pl[i];j++) {
+                    numbersPerRow[i]+=*(bitmap++);
+                }
+            }
+        } else {
+            for (i=0;i<numberOfRows;i++) {
+                numbersPerRow[i]=0;
+                for (j=0;j<Ni;j++) {
+                    numbersPerRow[i]+=*(bitmap++);
+                }
+            }
+        }
+
+        grib_context_free(a->context,pbitmap);
+    } else {
+        if (plSize) {
+            for (i=0;i<numberOfRows;i++) numbersPerRow[i]=pl[i];
+        } else {
+            for (i=0;i<numberOfRows;i++)
+                numbersPerRow[i]=numberOfColumns;
+        }
+    }
+
+    if((ret=grib_get_long_internal(gh,self->widthOfFirstOrderValues,&widthOfFirstOrderValues)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret=grib_get_long_internal(gh,self->binary_scale_factor,&binary_scale_factor)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret=grib_get_long_internal(gh,self->decimal_scale_factor,&decimal_scale_factor)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret=grib_get_double_internal(gh,self->reference_value,&reference_value)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret=grib_get_long_internal(gh,self->numberOfSecondOrderPackedValues,
+            &numberOfSecondOrderPackedValues)) != GRIB_SUCCESS)
+        return ret;
+
+    groupWidths=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfGroups);
+    groupWidthsSize=numberOfGroups;
+    if((ret=grib_get_long_array_internal(gh,self->groupWidths, groupWidths,&groupWidthsSize)) != GRIB_SUCCESS)
+        return ret;
+
+    firstOrderValues=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfGroups);
+    grib_decode_long_array(buf,&pos,widthOfFirstOrderValues,numberOfGroups,firstOrderValues);
+    pos = 8 * ( (pos + 7 ) / 8);
+
+    n=0;
+    for (i=0; i<numberOfGroups; i++) n+=numbersPerRow[i];
+
+    X=(long*)grib_context_malloc_clear(a->context,sizeof(long)*n);
+    n=0;
+    k=0;
+    for (i=0; i<numberOfGroups; i++) {
+        if (groupWidths[i]>0) {
+            for (j=0;j<numbersPerRow[k];j++) {
+                X[n]=grib_decode_unsigned_long(buf,&pos,groupWidths[i]);
+                X[n]+=firstOrderValues[i];
+                n++;
+            }
+        } else {
+            for (j=0;j<numbersPerRow[k];j++) {
+                X[n]=firstOrderValues[i];
+                n++;
+            }
+        }
+        k++;
+    }
+
+    s = grib_power(binary_scale_factor,2);
+    d = grib_power(-decimal_scale_factor,10) ;
+    for (i=0; i<n; i++) {
+        values[i] = (double) (((X[i]*s)+reference_value)*d);
+    }
+    grib_context_free(a->context,firstOrderValues);
+    grib_context_free(a->context,X);
+    grib_context_free(a->context,groupWidths);
+    if (plSize) grib_context_free(a->context,pl);
+
+    return ret;
 }
 
 static int pack_double(grib_accessor* a, const double* cval, size_t *len)
 {
-	char type[]="grid_second_order";
-	size_t size=strlen(type);
+    grib_handle* gh = grib_handle_of_accessor(a);
+    char type[]="grid_second_order";
+    size_t size=strlen(type);
 
-	grib_set_string(a->parent->h,"packingType",type,&size);
+    grib_set_string(gh,"packingType",type,&size);
 
-	return grib_set_double_array(a->parent->h,"values",cval,*len);
+    return grib_set_double_array(gh,"values",cval,*len);
 }
-
diff --git a/src/grib_accessor_class_data_g1secondary_bitmap.c b/src/grib_accessor_class_data_g1secondary_bitmap.c
index 1b789ef..8d767aa 100644
--- a/src/grib_accessor_class_data_g1secondary_bitmap.c
+++ b/src/grib_accessor_class_data_g1secondary_bitmap.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -92,6 +92,7 @@ static grib_accessor_class _grib_accessor_class_data_g1secondary_bitmap = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -129,6 +130,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -136,7 +138,7 @@ static void init_class(grib_accessor_class* c)
 static void init(grib_accessor* a,const long v, grib_arguments* args)
 {
     grib_accessor_data_g1secondary_bitmap *self =(grib_accessor_data_g1secondary_bitmap*)a;
-    self->number_of_ones   = grib_arguments_get_name(a->parent->h,args,4);
+    self->number_of_ones   = grib_arguments_get_name(grib_handle_of_accessor(a),args,4);
 }
 
 static int value_count(grib_accessor* a,long* count)
@@ -147,10 +149,10 @@ static int value_count(grib_accessor* a,long* count)
     long expand_by;
     *count = 0;
 
-    err = grib_get_long_internal(a->parent->h,self->expand_by,&expand_by);
+    err = grib_get_long_internal(grib_handle_of_accessor(a),self->expand_by,&expand_by);
     if (err) return err;
 
-    err = grib_get_size(a->parent->h,self->primary_bitmap,&len);
+    err = grib_get_size(grib_handle_of_accessor(a),self->primary_bitmap,&len);
     if (err) return err;
 
     *count=expand_by*len;
@@ -178,10 +180,10 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
     if (*len ==0) return GRIB_NO_VALUES;
 
-    if((err = grib_get_long(a->parent->h,self->expand_by,&expand_by)) != GRIB_SUCCESS)
+    if((err = grib_get_long(grib_handle_of_accessor(a),self->expand_by,&expand_by)) != GRIB_SUCCESS)
         return err;
 
-    if((err = grib_get_double_internal(a->parent->h,self->missing_value,&missing_value)) != GRIB_SUCCESS)
+    if((err = grib_get_double_internal(grib_handle_of_accessor(a),self->missing_value,&missing_value)) != GRIB_SUCCESS)
         return err;
 
     Assert(expand_by);
@@ -193,13 +195,13 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     }
 
     primary_len = *len / expand_by;
-    primary_bitmap= (double*)grib_context_malloc_clear(a->parent->h->context,primary_len*sizeof(double));
+    primary_bitmap= (double*)grib_context_malloc_clear(a->context,primary_len*sizeof(double));
     if(!primary_bitmap) return GRIB_OUT_OF_MEMORY;
 
     secondary_len = *len ;
-    secondary_bitmap= (double*)grib_context_malloc_clear(a->parent->h->context,secondary_len*sizeof(double));
+    secondary_bitmap= (double*)grib_context_malloc_clear(a->context,secondary_len*sizeof(double));
     if(!secondary_bitmap) {
-        grib_context_free(a->parent->h->context,primary_bitmap);
+        grib_context_free(a->context,primary_bitmap);
         return GRIB_OUT_OF_MEMORY;
     }
 
@@ -232,15 +234,15 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     /*printf("QQQQQQQ %ld %ld second=%ld\n",primary_len,on,m);*/
     Assert(k == primary_len);
 
-    err = grib_set_double_array_internal(a->parent->h,self->primary_bitmap,primary_bitmap,k);
+    err = grib_set_double_array_internal(grib_handle_of_accessor(a),self->primary_bitmap,primary_bitmap,k);
     if(err == GRIB_SUCCESS)
-        err = grib_set_double_array_internal(a->parent->h,self->secondary_bitmap,secondary_bitmap,m);
+        err = grib_set_double_array_internal(grib_handle_of_accessor(a),self->secondary_bitmap,secondary_bitmap,m);
 
-    grib_context_free(a->parent->h->context,primary_bitmap);
-    grib_context_free(a->parent->h->context,secondary_bitmap);
+    grib_context_free(a->context,primary_bitmap);
+    grib_context_free(a->context,secondary_bitmap);
 
     if(err == GRIB_SUCCESS)
-        err = grib_set_long_internal(a->parent->h,self->number_of_ones,on);
+        err = grib_set_long_internal(grib_handle_of_accessor(a),self->number_of_ones,on);
 
     return err;
 }
diff --git a/src/grib_accessor_class_data_g1shsimple_packing.c b/src/grib_accessor_class_data_g1shsimple_packing.c
index c9bf372..6ed7455 100644
--- a/src/grib_accessor_class_data_g1shsimple_packing.c
+++ b/src/grib_accessor_class_data_g1shsimple_packing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -87,6 +87,7 @@ static grib_accessor_class _grib_accessor_class_data_g1shsimple_packing = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -124,6 +125,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -135,7 +137,7 @@ static int value_count(grib_accessor* a,long* count)
     size_t len = 0;
     int err=0;
 
-    err=grib_get_size(a->parent->h,self->coded_values,&len);
+    err=grib_get_size(grib_handle_of_accessor(a),self->coded_values,&len);
     len += 1;
 
     *count=len;
@@ -150,7 +152,7 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
     size_t coded_n_vals = 0;
     size_t n_vals = 0;
 
-    if((err = grib_get_size(a->parent->h,self->coded_values,&coded_n_vals)) != GRIB_SUCCESS)
+    if((err = grib_get_size(grib_handle_of_accessor(a),self->coded_values,&coded_n_vals)) != GRIB_SUCCESS)
         return err;
 
     n_vals = coded_n_vals + 1;
@@ -161,15 +163,15 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
         return GRIB_ARRAY_TOO_SMALL;
     }
 
-    if((err = grib_get_double_internal(a->parent->h,self->real_part,val)) != GRIB_SUCCESS)
+    if((err = grib_get_double_internal(grib_handle_of_accessor(a),self->real_part,val)) != GRIB_SUCCESS)
         return err;
 
     val++;
 
-    if((err = grib_get_double_array_internal(a->parent->h,self->coded_values,val,&coded_n_vals)) != GRIB_SUCCESS)
+    if((err = grib_get_double_array_internal(grib_handle_of_accessor(a),self->coded_values,val,&coded_n_vals)) != GRIB_SUCCESS)
         return err;
 
-    grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG,
+    grib_context_log(a->context, GRIB_LOG_DEBUG,
             "grib_accessor_data_g1shsimple_packing_bitmap : unpack_double : creating %s, %d values",
             a->name, n_vals);
 
diff --git a/src/grib_accessor_class_data_g1simple_packing.c b/src/grib_accessor_class_data_g1simple_packing.c
index 160214f..bfa0f1f 100644
--- a/src/grib_accessor_class_data_g1simple_packing.c
+++ b/src/grib_accessor_class_data_g1simple_packing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -110,6 +110,7 @@ static grib_accessor_class _grib_accessor_class_data_g1simple_packing = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -147,6 +148,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -155,10 +157,10 @@ static void init(grib_accessor* a,const long v, grib_arguments* args)
 {
     grib_accessor_data_g1simple_packing *self =(grib_accessor_data_g1simple_packing*)a;
 
-    self->half_byte    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->packingType    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->ieee_packing    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->precision    = grib_arguments_get_name(a->parent->h,args,self->carg++);
+    self->half_byte    = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+    self->packingType    = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+    self->ieee_packing    = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+    self->precision    = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
     self->edition=1;
     a->flags |= GRIB_ACCESSOR_FLAG_DATA;
 
@@ -173,7 +175,7 @@ static int value_count(grib_accessor* a,long* number_of_values)
     /*if(a->length == 0)
     return 0;*/
 
-    return grib_get_long_internal(a->parent->h,self->number_of_values,number_of_values);
+    return grib_get_long_internal(grib_handle_of_accessor(a),self->number_of_values,number_of_values);
 }
 
 static int pack_double(grib_accessor* a, const double* cval, size_t *len)
@@ -197,8 +199,8 @@ static int pack_double(grib_accessor* a, const double* cval, size_t *len)
     double divisor = 1;
     int i;
     long off = 0;
-    grib_context* c=a->parent->h->context;
-    grib_handle* h=a->parent->h;
+    grib_context* c=a->context;
+    grib_handle* h=grib_handle_of_accessor(a);
     char* ieee_packing_s=NULL;
     char* packingType_s=NULL;
     char* precision_s=NULL;
@@ -211,13 +213,13 @@ static int pack_double(grib_accessor* a, const double* cval, size_t *len)
 
     if(*len != 0) {
         if(self->units_factor &&
-                (grib_get_double_internal(a->parent->h,self->units_factor,&units_factor)== GRIB_SUCCESS)) {
-            grib_set_double_internal(a->parent->h,self->units_factor,1.0);
+                (grib_get_double_internal(grib_handle_of_accessor(a),self->units_factor,&units_factor)== GRIB_SUCCESS)) {
+            grib_set_double_internal(grib_handle_of_accessor(a),self->units_factor,1.0);
         }
 
         if(self->units_bias &&
-                (grib_get_double_internal(a->parent->h,self->units_bias,&units_bias)== GRIB_SUCCESS)) {
-            grib_set_double_internal(a->parent->h,self->units_bias,0.0);
+                (grib_get_double_internal(grib_handle_of_accessor(a),self->units_bias,&units_bias)== GRIB_SUCCESS)) {
+            grib_set_double_internal(grib_handle_of_accessor(a),self->units_bias,0.0);
         }
 
         if (units_factor != 1.0) {
@@ -249,61 +251,61 @@ static int pack_double(grib_accessor* a, const double* cval, size_t *len)
     ret = super->pack_double(a,val,len);
     switch (ret) {
     case GRIB_CONSTANT_FIELD:
-        ret=grib_get_long(a->parent->h,"constantFieldHalfByte",&constantFieldHalfByte);
+        ret=grib_get_long(grib_handle_of_accessor(a),"constantFieldHalfByte",&constantFieldHalfByte);
         if (ret) constantFieldHalfByte=0;
-        if((ret = grib_set_long_internal(a->parent->h,self->half_byte, constantFieldHalfByte))
+        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);
         return GRIB_SUCCESS;
         break;
     case GRIB_NO_VALUES:
-        ret=grib_get_long(a->parent->h,"constantFieldHalfByte",&constantFieldHalfByte);
+        ret=grib_get_long(grib_handle_of_accessor(a),"constantFieldHalfByte",&constantFieldHalfByte);
         if (ret) constantFieldHalfByte=0;
         /* TODO move to def file */
-        grib_get_double(a->parent->h,"missingValue", &missingValue);
-        if((err = grib_set_double_internal(a->parent->h,self->reference_value, missingValue)) !=
+        grib_get_double(grib_handle_of_accessor(a),"missingValue", &missingValue);
+        if((err = grib_set_double_internal(grib_handle_of_accessor(a),self->reference_value, missingValue)) !=
                 GRIB_SUCCESS)
             return err;
-        if((ret = grib_set_long_internal(a->parent->h,self->binary_scale_factor, binary_scale_factor))
+        if((ret = grib_set_long_internal(grib_handle_of_accessor(a),self->binary_scale_factor, binary_scale_factor))
                 != GRIB_SUCCESS)
             return ret;
-        if((ret = grib_set_long_internal(a->parent->h,self->half_byte, constantFieldHalfByte))
+        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);
         return GRIB_SUCCESS;
         break;
     case GRIB_INVALID_BPV:
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"unable to compute packing parameters\n");
+        grib_context_log(a->context,GRIB_LOG_ERROR,"unable to compute packing parameters\n");
         return ret;
     case GRIB_SUCCESS:
         break;
     default:
-        grib_context_log(a->parent->h->context,GRIB_LOG_FATAL,"unable to compute packing parameters\n");
+        grib_context_log(a->context,GRIB_LOG_FATAL,"unable to compute packing parameters\n");
         return ret;
     }
 
-    if((ret = grib_get_double_internal(a->parent->h,self->reference_value, &reference_value))
+    if((ret = grib_get_double_internal(grib_handle_of_accessor(a),self->reference_value, &reference_value))
             != GRIB_SUCCESS)
         return ret;
 
-    if((ret = grib_get_long_internal(a->parent->h,self->binary_scale_factor, &binary_scale_factor))
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->binary_scale_factor, &binary_scale_factor))
             != GRIB_SUCCESS)
         return ret;
 
-    if((ret = grib_get_long_internal(a->parent->h,self->bits_per_value,&bits_per_value)) !=
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->bits_per_value,&bits_per_value)) !=
             GRIB_SUCCESS)
         return ret;
 
-    if((ret = grib_get_long_internal(a->parent->h,self->decimal_scale_factor, &decimal_scale_factor))
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->decimal_scale_factor, &decimal_scale_factor))
             != GRIB_SUCCESS)
         return ret;
 
-    if((ret = grib_get_long_internal(a->parent->h,self->offsetdata,&offsetdata)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->offsetdata,&offsetdata)) != GRIB_SUCCESS)
         return ret;
 
-    if((ret = grib_get_long_internal(a->parent->h,self->offsetsection,&offsetsection)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->offsetsection,&offsetsection)) != GRIB_SUCCESS)
         return ret;
 
     decimal = grib_power(decimal_scale_factor,10) ;
@@ -314,31 +316,31 @@ static int pack_double(grib_accessor* a, const double* cval, size_t *len)
         buflen++;
         /*
     a->length++;
-    a->parent->h->buffer->ulength++;
+    grib_handle_of_accessor(a)->buffer->ulength++;
          */
     }
     half_byte = (buflen*8)-((*len)*bits_per_value);
-    grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG,
+    grib_context_log(a->context,GRIB_LOG_DEBUG,
             "HALF byte: buflen=%d bits_per_value=%ld len=%d half_byte=%ld\n",
             buflen,bits_per_value,*len,half_byte);
 
     Assert(half_byte <= 0x0f);
 
-    if((ret = grib_set_long_internal(a->parent->h,self->half_byte, half_byte))
+    if((ret = grib_set_long_internal(grib_handle_of_accessor(a),self->half_byte, half_byte))
             != GRIB_SUCCESS)
         return ret;
 
-    buf = (unsigned char*)grib_context_buffer_malloc_clear(a->parent->h->context,buflen);
+    buf = (unsigned char*)grib_context_buffer_malloc_clear(a->context,buflen);
     encoded = buf;
 
     grib_encode_double_array(n_vals,val,bits_per_value,reference_value,decimal,divisor,encoded,&off);
 
-    grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG,
+    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);
 
-    grib_context_buffer_free(a->parent->h->context,buf);
+    grib_context_buffer_free(a->context,buf);
 
     return GRIB_SUCCESS;
 }
diff --git a/src/grib_accessor_class_data_g22order_packing.c b/src/grib_accessor_class_data_g22order_packing.c
index a0028fe..afb286c 100644
--- a/src/grib_accessor_class_data_g22order_packing.c
+++ b/src/grib_accessor_class_data_g22order_packing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -137,6 +137,7 @@ static grib_accessor_class _grib_accessor_class_data_g22order_packing = {
     &unpack_double_element,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -172,6 +173,7 @@ static void init_class(grib_accessor_class* c)
 	c->compare	=	(*(c->super))->compare;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -179,28 +181,29 @@ static void init_class(grib_accessor_class* c)
 static void init(grib_accessor* a,const long v, grib_arguments* args)
 {
     grib_accessor_data_g22order_packing *self =(grib_accessor_data_g22order_packing*)a;
-
-    self->numberOfValues  = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->bits_per_value     = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->reference_value = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->binary_scale_factor    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->decimal_scale_factor = grib_arguments_get_name(a->parent->h,args,self->carg++);
-
-    self->typeOfOriginalFieldValues = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->groupSplittingMethodUsed = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->missingValueManagementUsed = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->primaryMissingValueSubstitute = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->secondaryMissingValueSubstitute = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->numberOfGroupsOfDataValues = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->referenceForGroupWidths =  grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->numberOfBitsUsedForTheGroupWidths = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->referenceForGroupLengths = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->lengthIncrementForTheGroupLengths = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->trueLengthOfLastGroup = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->numberOfBitsUsedForTheScaledGroupLengths = grib_arguments_get_name(a->parent->h,args,self->carg++);
-
-    self->orderOfSpatialDifferencing = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->numberOfOctetsExtraDescriptors = grib_arguments_get_name(a->parent->h,args,self->carg++);
+    grib_handle* gh = grib_handle_of_accessor(a);
+
+    self->numberOfValues  = grib_arguments_get_name(gh,args,self->carg++);
+    self->bits_per_value     = grib_arguments_get_name(gh,args,self->carg++);
+    self->reference_value = grib_arguments_get_name(gh,args,self->carg++);
+    self->binary_scale_factor    = grib_arguments_get_name(gh,args,self->carg++);
+    self->decimal_scale_factor = grib_arguments_get_name(gh,args,self->carg++);
+
+    self->typeOfOriginalFieldValues = grib_arguments_get_name(gh,args,self->carg++);
+    self->groupSplittingMethodUsed = grib_arguments_get_name(gh,args,self->carg++);
+    self->missingValueManagementUsed = grib_arguments_get_name(gh,args,self->carg++);
+    self->primaryMissingValueSubstitute = grib_arguments_get_name(gh,args,self->carg++);
+    self->secondaryMissingValueSubstitute = grib_arguments_get_name(gh,args,self->carg++);
+    self->numberOfGroupsOfDataValues = grib_arguments_get_name(gh,args,self->carg++);
+    self->referenceForGroupWidths =  grib_arguments_get_name(gh,args,self->carg++);
+    self->numberOfBitsUsedForTheGroupWidths = grib_arguments_get_name(gh,args,self->carg++);
+    self->referenceForGroupLengths = grib_arguments_get_name(gh,args,self->carg++);
+    self->lengthIncrementForTheGroupLengths = grib_arguments_get_name(gh,args,self->carg++);
+    self->trueLengthOfLastGroup = grib_arguments_get_name(gh,args,self->carg++);
+    self->numberOfBitsUsedForTheScaledGroupLengths = grib_arguments_get_name(gh,args,self->carg++);
+
+    self->orderOfSpatialDifferencing = grib_arguments_get_name(gh,args,self->carg++);
+    self->numberOfOctetsExtraDescriptors = grib_arguments_get_name(gh,args,self->carg++);
     a->flags |= GRIB_ACCESSOR_FLAG_DATA;
 
 }
@@ -384,8 +387,9 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
     int      err = GRIB_SUCCESS;
 
     unsigned long*  sec_val    = NULL;
+    grib_handle* gh = grib_handle_of_accessor(a);
 
-    unsigned char*  buf = (unsigned char*)a->parent->h->buffer->data;
+    unsigned char*  buf = (unsigned char*)gh->buffer->data;
     unsigned char*  buf_ref = NULL;
     unsigned char*  buf_width = NULL;
     unsigned char*  buf_length = NULL;
@@ -425,25 +429,25 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
     err=grib_value_count(a,&n_vals);
     if (err) return err;
 
-    if((err = grib_get_long_internal(a->parent->h,self->bits_per_value,&bits_per_value )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_double_internal(a->parent->h,self->reference_value,&reference_value )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->binary_scale_factor,&binary_scale_factor )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->decimal_scale_factor,&decimal_scale_factor )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->typeOfOriginalFieldValues,&typeOfOriginalFieldValues )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->groupSplittingMethodUsed,&groupSplittingMethodUsed )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->missingValueManagementUsed,&missingValueManagementUsed )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->primaryMissingValueSubstitute,&primaryMissingValueSubstitute )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->secondaryMissingValueSubstitute,&secondaryMissingValueSubstitute )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->numberOfGroupsOfDataValues,&numberOfGroupsOfDataValues )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->referenceForGroupWidths,&referenceForGroupWidths )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->numberOfBitsUsedForTheGroupWidths,&numberOfBitsUsedForTheGroupWidths )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->referenceForGroupLengths,&referenceForGroupLengths )) != GRIB_SUCCESS)  return err;
-
-    if((err = grib_get_long_internal(a->parent->h,self->lengthIncrementForTheGroupLengths,&lengthIncrementForTheGroupLengths )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->trueLengthOfLastGroup,&trueLengthOfLastGroup )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->numberOfBitsUsedForTheScaledGroupLengths,&numberOfBitsUsedForTheScaledGroupLengths )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->orderOfSpatialDifferencing,&orderOfSpatialDifferencing )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->numberOfOctetsExtraDescriptors,&numberOfOctetsExtraDescriptors )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->bits_per_value,&bits_per_value )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_double_internal(gh,self->reference_value,&reference_value )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->binary_scale_factor,&binary_scale_factor )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->decimal_scale_factor,&decimal_scale_factor )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->typeOfOriginalFieldValues,&typeOfOriginalFieldValues )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->groupSplittingMethodUsed,&groupSplittingMethodUsed )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->missingValueManagementUsed,&missingValueManagementUsed )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->primaryMissingValueSubstitute,&primaryMissingValueSubstitute )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->secondaryMissingValueSubstitute,&secondaryMissingValueSubstitute )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->numberOfGroupsOfDataValues,&numberOfGroupsOfDataValues )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->referenceForGroupWidths,&referenceForGroupWidths )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->numberOfBitsUsedForTheGroupWidths,&numberOfBitsUsedForTheGroupWidths )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->referenceForGroupLengths,&referenceForGroupLengths )) != GRIB_SUCCESS)  return err;
+
+    if((err = grib_get_long_internal(gh,self->lengthIncrementForTheGroupLengths,&lengthIncrementForTheGroupLengths )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->trueLengthOfLastGroup,&trueLengthOfLastGroup )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->numberOfBitsUsedForTheScaledGroupLengths,&numberOfBitsUsedForTheScaledGroupLengths )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->orderOfSpatialDifferencing,&orderOfSpatialDifferencing )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->numberOfOctetsExtraDescriptors,&numberOfOctetsExtraDescriptors )) != GRIB_SUCCESS)  return err;
 
     self->dirty=0;
 
@@ -470,7 +474,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
      fprintf(stdout," orderOfSpatialDifferencing = %d\n", orderOfSpatialDifferencing);
      fprintf(stdout,"\n****************************************\n");
      */
-    sec_val     =   (unsigned long*)grib_context_malloc(a->parent->h->context,(n_vals)*sizeof(unsigned long));
+    sec_val     =   (unsigned long*)grib_context_malloc(a->context,(n_vals)*sizeof(unsigned long));
     if (sec_val) memset(sec_val, 0, (n_vals)*sizeof(unsigned long)); /* See SUP-718 */
 
     buf_ref     =   buf + a->offset ;
@@ -505,8 +509,11 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
         if (i == numberOfGroupsOfDataValues-1) nvals_per_group = trueLengthOfLastGroup;
         Assert (n_vals >= vcount+nvals_per_group);
 
+        /*grib_decode_long_array(buf_vals, &vals_p, nbits_per_group_val, nvals_per_group,
+                               &sec_val[vcount]); */
         for(j=0; j < nvals_per_group;j++){
             sec_val[vcount+j] = group_ref_val + grib_decode_unsigned_long(buf_vals,  &vals_p, nbits_per_group_val);
+            /* sec_val[vcount+j] += group_ref_val; */
         }
 
         vcount += nvals_per_group;
@@ -521,7 +528,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
 
         bias  =  grib_decode_signed_longb(buf_ref, &ref_p, numberOfOctetsExtraDescriptors*8);
 
-        de_spatial_difference (a->parent->h->context, sec_val, n_vals, orderOfSpatialDifferencing, bias);
+        de_spatial_difference (a->context, sec_val, n_vals, orderOfSpatialDifferencing, bias);
     }
 
     binary_s  = grib_power(binary_scale_factor,2);
@@ -530,13 +537,14 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
     for(i=0;i < n_vals;i++)
         val[i] = (double) ((((double)sec_val[i])*binary_s)+reference_value)*decimal_s;
 
-    grib_context_free(a->parent->h->context,sec_val);
+    grib_context_free(a->context,sec_val);
     return err;
 }
 
 static int pack_double(grib_accessor* a, const double* val, size_t *len)
 {
     grib_accessor_data_g22order_packing* self =  (grib_accessor_data_g22order_packing*)a;
+    grib_handle* gh = grib_handle_of_accessor(a);
 
     size_t i = 0;
     size_t j = 0;
@@ -550,7 +558,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     unsigned char*  buf_length = NULL;
     unsigned char*  buf_vals   = NULL;
 
-
     double d = 0;
     double divisor = 0;
 
@@ -576,7 +583,6 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     long nbits_per_group_val    = 0;
     long group_ref_val          = 0;
 
-
     long binary_scale_factor;
     long decimal_scale_factor;
     long typeOfOriginalFieldValues;
@@ -597,15 +603,15 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
     if (*len ==0) return GRIB_NO_VALUES;
 
-    if((err = grib_get_long_internal(a->parent->h,self->bits_per_value,&bits_per_value )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->decimal_scale_factor,&decimal_scale_factor )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->typeOfOriginalFieldValues,&typeOfOriginalFieldValues )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->groupSplittingMethodUsed,&groupSplittingMethodUsed )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->missingValueManagementUsed,&missingValueManagementUsed )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->primaryMissingValueSubstitute,&primaryMissingValueSubstitute )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->secondaryMissingValueSubstitute,&secondaryMissingValueSubstitute )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->numberOfBitsUsedForTheGroupWidths,&numberOfBitsUsedForTheGroupWidths )) != GRIB_SUCCESS)  return err;
-    if((err = grib_get_long_internal(a->parent->h,self->numberOfBitsUsedForTheScaledGroupLengths,&numberOfBitsUsedForTheScaledGroupLengths )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->bits_per_value,&bits_per_value )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->decimal_scale_factor,&decimal_scale_factor )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->typeOfOriginalFieldValues,&typeOfOriginalFieldValues )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->groupSplittingMethodUsed,&groupSplittingMethodUsed )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->missingValueManagementUsed,&missingValueManagementUsed )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->primaryMissingValueSubstitute,&primaryMissingValueSubstitute )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->secondaryMissingValueSubstitute,&secondaryMissingValueSubstitute )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->numberOfBitsUsedForTheGroupWidths,&numberOfBitsUsedForTheGroupWidths )) != GRIB_SUCCESS)  return err;
+    if((err = grib_get_long_internal(gh,self->numberOfBitsUsedForTheScaledGroupLengths,&numberOfBitsUsedForTheScaledGroupLengths )) != GRIB_SUCCESS)  return err;
 
     self->dirty=1;
 
@@ -617,7 +623,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
     /*     calculation of integer array   */
     sec_val  = NULL;
-    sec_val  = (unsigned long*)grib_context_malloc(a->parent->h->context,(n_vals)*sizeof(long));
+    sec_val  = (unsigned long*)grib_context_malloc(a->context,(n_vals)*sizeof(long));
     if(!sec_val) return GRIB_OUT_OF_MEMORY;
 
     d = grib_power(decimal_scale_factor,10) ;
@@ -634,9 +640,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     min *= d;
     max *= d;
 
-    if (grib_get_nearest_smaller_value(a->parent->h,self->reference_value,min,&reference_value)
+    if (grib_get_nearest_smaller_value(gh,self->reference_value,min,&reference_value)
             !=GRIB_SUCCESS) {
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+        grib_context_log(a->context,GRIB_LOG_ERROR,
                 "unable to find nearest_smaller_value of %g for %s",min,self->reference_value);
         exit(GRIB_INTERNAL_ERROR);
     }
@@ -674,7 +680,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
     buf_size  +=  (vals_p/8)  + (vals_p%8?1:0);
 
-    buf = (unsigned char*)grib_context_malloc_clear(a->parent->h->context,buf_size);
+    buf = (unsigned char*)grib_context_malloc_clear(a->context,buf_size);
 
     buf_ref    = buf;
     buf_width  = buf_ref + (7+(numberOfGroupsOfDataValues*bits_per_value))/8;
@@ -704,34 +710,34 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
      */
 
     grib_buffer_replace(a, buf,buf_size,1,1);
-    grib_context_free  (a->parent->h->context,buf);
-    grib_context_free  (a->parent->h->context,sec_val);
+    grib_context_free  (a->context,buf);
+    grib_context_free  (a->context,sec_val);
 
-    if((err = grib_set_long_internal(a->parent->h,self->bits_per_value,bits_per_value )) != GRIB_SUCCESS)  return err;
-    if((err = grib_set_double_internal(a->parent->h,self->reference_value,reference_value )) != GRIB_SUCCESS)  return err;
+    if((err = grib_set_long_internal(gh,self->bits_per_value,bits_per_value )) != GRIB_SUCCESS)  return err;
+    if((err = grib_set_double_internal(gh,self->reference_value,reference_value )) != GRIB_SUCCESS)  return err;
     {
         /* Make sure we can decode it again */
         double ref = 1e-100;
-        grib_get_double_internal(a->parent->h,self->reference_value,&ref);
+        grib_get_double_internal(gh,self->reference_value,&ref);
         Assert(ref == reference_value);
     }
-    if((err = grib_set_long_internal(a->parent->h,self->binary_scale_factor,binary_scale_factor )) != GRIB_SUCCESS)  return err;
-    if((err = grib_set_long_internal(a->parent->h,self->decimal_scale_factor,decimal_scale_factor )) != GRIB_SUCCESS)  return err;
-    if((err = grib_set_long_internal(a->parent->h,self->typeOfOriginalFieldValues,typeOfOriginalFieldValues )) != GRIB_SUCCESS)  return err;
-    if((err = grib_set_long_internal(a->parent->h,self->groupSplittingMethodUsed,groupSplittingMethodUsed )) != GRIB_SUCCESS)  return err;
-    if((err = grib_set_long_internal(a->parent->h,self->missingValueManagementUsed,missingValueManagementUsed )) != GRIB_SUCCESS)  return err;
-    if((err = grib_set_long_internal(a->parent->h,self->primaryMissingValueSubstitute,primaryMissingValueSubstitute )) != GRIB_SUCCESS)  return err;
-    if((err = grib_set_long_internal(a->parent->h,self->secondaryMissingValueSubstitute,secondaryMissingValueSubstitute )) != GRIB_SUCCESS)  return err;
-    if((err = grib_set_long_internal(a->parent->h,self->numberOfGroupsOfDataValues,numberOfGroupsOfDataValues )) != GRIB_SUCCESS)  return err;
-    if((err = grib_set_long_internal(a->parent->h,self->referenceForGroupWidths,referenceForGroupWidths )) != GRIB_SUCCESS)  return err;
-    if((err = grib_set_long_internal(a->parent->h,self->numberOfBitsUsedForTheGroupWidths,numberOfBitsUsedForTheGroupWidths )) != GRIB_SUCCESS)  return err;
-    if((err = grib_set_long_internal(a->parent->h,self->referenceForGroupLengths,referenceForGroupLengths )) != GRIB_SUCCESS)  return err;
-    if((err = grib_set_long_internal(a->parent->h,self->lengthIncrementForTheGroupLengths,lengthIncrementForTheGroupLengths )) != GRIB_SUCCESS)  return err;
-    if((err = grib_set_long_internal(a->parent->h,self->trueLengthOfLastGroup,trueLengthOfLastGroup )) != GRIB_SUCCESS)  return err;
-    if((err = grib_set_long_internal(a->parent->h,self->numberOfBitsUsedForTheScaledGroupLengths,numberOfBitsUsedForTheScaledGroupLengths )) != GRIB_SUCCESS)  return err;
-
-    if((err = grib_set_long_internal(a->parent->h,self->orderOfSpatialDifferencing,0 )) != GRIB_SUCCESS)  return err;
-    if((err = grib_set_long_internal(a->parent->h,self->numberOfOctetsExtraDescriptors,0 )) != GRIB_SUCCESS)  return err;
+    if((err = grib_set_long_internal(gh,self->binary_scale_factor,binary_scale_factor )) != GRIB_SUCCESS)  return err;
+    if((err = grib_set_long_internal(gh,self->decimal_scale_factor,decimal_scale_factor )) != GRIB_SUCCESS)  return err;
+    if((err = grib_set_long_internal(gh,self->typeOfOriginalFieldValues,typeOfOriginalFieldValues )) != GRIB_SUCCESS)  return err;
+    if((err = grib_set_long_internal(gh,self->groupSplittingMethodUsed,groupSplittingMethodUsed )) != GRIB_SUCCESS)  return err;
+    if((err = grib_set_long_internal(gh,self->missingValueManagementUsed,missingValueManagementUsed )) != GRIB_SUCCESS)  return err;
+    if((err = grib_set_long_internal(gh,self->primaryMissingValueSubstitute,primaryMissingValueSubstitute )) != GRIB_SUCCESS)  return err;
+    if((err = grib_set_long_internal(gh,self->secondaryMissingValueSubstitute,secondaryMissingValueSubstitute )) != GRIB_SUCCESS)  return err;
+    if((err = grib_set_long_internal(gh,self->numberOfGroupsOfDataValues,numberOfGroupsOfDataValues )) != GRIB_SUCCESS)  return err;
+    if((err = grib_set_long_internal(gh,self->referenceForGroupWidths,referenceForGroupWidths )) != GRIB_SUCCESS)  return err;
+    if((err = grib_set_long_internal(gh,self->numberOfBitsUsedForTheGroupWidths,numberOfBitsUsedForTheGroupWidths )) != GRIB_SUCCESS)  return err;
+    if((err = grib_set_long_internal(gh,self->referenceForGroupLengths,referenceForGroupLengths )) != GRIB_SUCCESS)  return err;
+    if((err = grib_set_long_internal(gh,self->lengthIncrementForTheGroupLengths,lengthIncrementForTheGroupLengths )) != GRIB_SUCCESS)  return err;
+    if((err = grib_set_long_internal(gh,self->trueLengthOfLastGroup,trueLengthOfLastGroup )) != GRIB_SUCCESS)  return err;
+    if((err = grib_set_long_internal(gh,self->numberOfBitsUsedForTheScaledGroupLengths,numberOfBitsUsedForTheScaledGroupLengths )) != GRIB_SUCCESS)  return err;
+
+    if((err = grib_set_long_internal(gh,self->orderOfSpatialDifferencing,0 )) != GRIB_SUCCESS)  return err;
+    if((err = grib_set_long_internal(gh,self->numberOfOctetsExtraDescriptors,0 )) != GRIB_SUCCESS)  return err;
 
     return GRIB_SUCCESS;
 }
@@ -740,15 +746,15 @@ static int unpack_double_element(grib_accessor* a, size_t idx, double* val)
 {
     size_t size = 0;
     double* values = NULL;
-    int err=grib_get_size(a->parent->h,"codedValues",&size);
+    int err=grib_get_size(grib_handle_of_accessor(a),"codedValues",&size);
     if (err) return err;
     if (idx > size) return GRIB_INVALID_NEAREST;
 
-    values=(double*)grib_context_malloc_clear(a->parent->h->context,size*sizeof(double));
-    err=grib_get_double_array(a->parent->h,"codedValues",values,&size);
+    values=(double*)grib_context_malloc_clear(a->context,size*sizeof(double));
+    err=grib_get_double_array(grib_handle_of_accessor(a),"codedValues",values,&size);
     if (err) return err;
     *val=values[idx];
-    grib_context_free(a->parent->h->context,values);
+    grib_context_free(a->context,values);
     return err;
 }
 
@@ -756,5 +762,5 @@ static int value_count(grib_accessor* a,long* count)
 {
     grib_accessor_data_g22order_packing* self =  (grib_accessor_data_g22order_packing*)a;
     *count = 0;
-    return grib_get_long_internal(a->parent->h,self->numberOfValues, count);
+    return grib_get_long_internal(grib_handle_of_accessor(a),self->numberOfValues, count);
 }
diff --git a/src/grib_accessor_class_data_g2complex_packing.c b/src/grib_accessor_class_data_g2complex_packing.c
index 3f6d806..a765c76 100644
--- a/src/grib_accessor_class_data_g2complex_packing.c
+++ b/src/grib_accessor_class_data_g2complex_packing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -115,6 +115,7 @@ static grib_accessor_class _grib_accessor_class_data_g2complex_packing = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -152,6 +153,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -159,7 +161,7 @@ static void init_class(grib_accessor_class* c)
 static void init(grib_accessor* a,const long v, grib_arguments* args)
 {
     grib_accessor_data_g2complex_packing *self =(grib_accessor_data_g2complex_packing*)a;
-    self->numberOfValues    = grib_arguments_get_name(a->parent->h,args,self->carg++);
+    self->numberOfValues    = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
     self->edition=2;
 
     a->flags |= GRIB_ACCESSOR_FLAG_DATA;
@@ -170,7 +172,7 @@ static int value_count(grib_accessor* a,long* numberOfValues)
     grib_accessor_data_g2complex_packing* self =  (grib_accessor_data_g2complex_packing*)a;
     *numberOfValues = 0;
 
-    return grib_get_long(a->parent->h,self->numberOfValues,numberOfValues);
+    return grib_get_long(grib_handle_of_accessor(a),self->numberOfValues,numberOfValues);
 }
 
 static int pack_double(grib_accessor* a, const double* val, size_t *len)
@@ -184,7 +186,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     ret = super->pack_double(a,val,len);
 
     if(ret == GRIB_SUCCESS)
-        ret = grib_set_long_internal(a->parent->h,self->numberOfValues,*len) ;
+        ret = grib_set_long_internal(grib_handle_of_accessor(a),self->numberOfValues,*len) ;
 
     return ret;
 }
diff --git a/src/grib_accessor_class_data_g2secondary_bitmap.c b/src/grib_accessor_class_data_g2secondary_bitmap.c
index 4bad3c8..14448be 100644
--- a/src/grib_accessor_class_data_g2secondary_bitmap.c
+++ b/src/grib_accessor_class_data_g2secondary_bitmap.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -92,6 +92,7 @@ static grib_accessor_class _grib_accessor_class_data_g2secondary_bitmap = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -129,6 +130,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -136,7 +138,7 @@ static void init_class(grib_accessor_class* c)
 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(a->parent->h,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)
@@ -144,7 +146,7 @@ static int value_count(grib_accessor* a,long* len)
     grib_accessor_data_g2secondary_bitmap *self =(grib_accessor_data_g2secondary_bitmap*)a;
     *len = 0;
 
-    return grib_get_long_internal(a->parent->h,self->number_of_values,len);
+    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)
@@ -168,10 +170,10 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
     if (*len ==0) return GRIB_NO_VALUES;
 
-    if((err = grib_get_long(a->parent->h,self->expand_by,&expand_by)) != GRIB_SUCCESS)
+    if((err = grib_get_long(grib_handle_of_accessor(a),self->expand_by,&expand_by)) != GRIB_SUCCESS)
         return err;
 
-    if((err = grib_get_double_internal(a->parent->h,self->missing_value,&missing_value)) != GRIB_SUCCESS)
+    if((err = grib_get_double_internal(grib_handle_of_accessor(a),self->missing_value,&missing_value)) != GRIB_SUCCESS)
         return err;
 
     Assert(expand_by);
@@ -183,13 +185,13 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     }
 
     primary_len = *len / expand_by;
-    primary_bitmap= (double*)grib_context_malloc_clear(a->parent->h->context,primary_len*sizeof(double));
+    primary_bitmap= (double*)grib_context_malloc_clear(a->context,primary_len*sizeof(double));
     if(!primary_bitmap) return GRIB_OUT_OF_MEMORY;
 
     secondary_len = *len ;
-    secondary_bitmap= (double*)grib_context_malloc_clear(a->parent->h->context,secondary_len*sizeof(double));
+    secondary_bitmap= (double*)grib_context_malloc_clear(a->context,secondary_len*sizeof(double));
     if(!secondary_bitmap) {
-        grib_context_free(a->parent->h->context,primary_bitmap);
+        grib_context_free(a->context,primary_bitmap);
         return GRIB_OUT_OF_MEMORY;
     }
 
@@ -221,15 +223,15 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
     Assert(k == primary_len);
 
-    err = grib_set_double_array_internal(a->parent->h,self->primary_bitmap,primary_bitmap,k);
+    err = grib_set_double_array_internal(grib_handle_of_accessor(a),self->primary_bitmap,primary_bitmap,k);
     if(err == GRIB_SUCCESS)
-        err = grib_set_double_array_internal(a->parent->h,self->secondary_bitmap,secondary_bitmap,m);
+        err = grib_set_double_array_internal(grib_handle_of_accessor(a),self->secondary_bitmap,secondary_bitmap,m);
 
-    grib_context_free(a->parent->h->context,primary_bitmap);
-    grib_context_free(a->parent->h->context,secondary_bitmap);
+    grib_context_free(a->context,primary_bitmap);
+    grib_context_free(a->context,secondary_bitmap);
 
     if(err == GRIB_SUCCESS)
-        err = grib_set_long_internal(a->parent->h,self->number_of_values,*len * expand_by);
+        err = grib_set_long_internal(grib_handle_of_accessor(a),self->number_of_values,*len * expand_by);
 
     return err;
 }
diff --git a/src/grib_accessor_class_data_g2shsimple_packing.c b/src/grib_accessor_class_data_g2shsimple_packing.c
index 9e49d1d..ac33f36 100644
--- a/src/grib_accessor_class_data_g2shsimple_packing.c
+++ b/src/grib_accessor_class_data_g2shsimple_packing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -93,6 +93,7 @@ static grib_accessor_class _grib_accessor_class_data_g2shsimple_packing = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -129,6 +130,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -137,7 +139,7 @@ static void init(grib_accessor* a,const long v, grib_arguments* args)
 {
   grib_accessor_data_g2shsimple_packing *self =(grib_accessor_data_g2shsimple_packing*)a;
 
-  self->numberOfValues  = grib_arguments_get_name(a->parent->h,args,2);
+  self->numberOfValues  = grib_arguments_get_name(grib_handle_of_accessor(a),args,2);
   a->flags |= GRIB_ACCESSOR_FLAG_DATA;
 }
 
@@ -145,7 +147,7 @@ static int value_count(grib_accessor* a,long* len)
 {
   grib_accessor_data_g2shsimple_packing *self =(grib_accessor_data_g2shsimple_packing*)a;
   *len = 0;
-  return grib_get_long(a->parent->h,self->numberOfValues,len);
+  return grib_get_long(grib_handle_of_accessor(a),self->numberOfValues,len);
 }
 
 
@@ -156,7 +158,7 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
 
   size_t n_vals = 0;
 
-  if((err = grib_get_size(a->parent->h,self->coded_values,&n_vals)) != GRIB_SUCCESS)
+  if((err = grib_get_size(grib_handle_of_accessor(a),self->coded_values,&n_vals)) != GRIB_SUCCESS)
     return err;
 
   self->dirty=0;
@@ -169,12 +171,12 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
     return GRIB_ARRAY_TOO_SMALL;
   }
 
-  if((err = grib_get_double_internal(a->parent->h,self->real_part,val)) != GRIB_SUCCESS)
+  if((err = grib_get_double_internal(grib_handle_of_accessor(a),self->real_part,val)) != GRIB_SUCCESS)
     return err;
 
   val++;
 
-  if((err = grib_get_double_array_internal(a->parent->h,self->coded_values,val,&n_vals)) != GRIB_SUCCESS)
+  if((err = grib_get_double_array_internal(grib_handle_of_accessor(a),self->coded_values,val,&n_vals)) != GRIB_SUCCESS)
     return err;
 
   *len =  n_vals;
@@ -194,23 +196,23 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
   self->dirty=1;
 
-  if((err = grib_set_double_internal(a->parent->h,self->real_part,*val)) != GRIB_SUCCESS)
+  if((err = grib_set_double_internal(grib_handle_of_accessor(a),self->real_part,*val)) != GRIB_SUCCESS)
     return err;
   {
     /* Make sure we can decode it again */
     double ref = 1e-100;
-    grib_get_double_internal(a->parent->h,self->real_part,&ref);
+    grib_get_double_internal(grib_handle_of_accessor(a),self->real_part,&ref);
     Assert(ref == *val);
   }
 
   val++;
 
-  if((err = grib_set_double_array_internal(a->parent->h,self->coded_values,val,coded_n_vals)) != GRIB_SUCCESS)
+  if((err = grib_set_double_array_internal(grib_handle_of_accessor(a),self->coded_values,val,coded_n_vals)) != GRIB_SUCCESS)
     return err;
 
   *len =  n_vals;
 
-    if((err = grib_set_long_internal(a->parent->h,self->numberOfValues,(long)n_vals)) != GRIB_SUCCESS)
+    if((err = grib_set_long_internal(grib_handle_of_accessor(a),self->numberOfValues,(long)n_vals)) != GRIB_SUCCESS)
     return err;
 
   return err;
diff --git a/src/grib_accessor_class_data_g2simple_packing.c b/src/grib_accessor_class_data_g2simple_packing.c
index ef1db9c..c445a82 100644
--- a/src/grib_accessor_class_data_g2simple_packing.c
+++ b/src/grib_accessor_class_data_g2simple_packing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -104,6 +104,7 @@ static grib_accessor_class _grib_accessor_class_data_g2simple_packing = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -140,6 +141,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -155,7 +157,7 @@ static int value_count(grib_accessor* a,long* n_vals)
 {
 	grib_accessor_data_g2simple_packing *self =(grib_accessor_data_g2simple_packing*)a;
   *n_vals= 0;
-  return grib_get_long_internal(a->parent->h,self->number_of_values,n_vals);
+  return grib_get_long_internal(grib_handle_of_accessor(a),self->number_of_values,n_vals);
 }
 
 static int pack_double(grib_accessor* a, const double* cval, size_t *len)
@@ -185,18 +187,18 @@ static int pack_double(grib_accessor* a, const double* cval, size_t *len)
 	}
 
 	if(ret == GRIB_SUCCESS)
-		ret = grib_set_long_internal(a->parent->h,self->number_of_values, *len);
+		ret = grib_set_long_internal(grib_handle_of_accessor(a),self->number_of_values, *len);
 
 	if (ret!=GRIB_SUCCESS) return ret;
 
 	if(self->units_factor &&
-			(grib_get_double_internal(a->parent->h,self->units_factor,&units_factor)== GRIB_SUCCESS)) {
-		grib_set_double_internal(a->parent->h,self->units_factor,1.0);
+			(grib_get_double_internal(grib_handle_of_accessor(a),self->units_factor,&units_factor)== GRIB_SUCCESS)) {
+		grib_set_double_internal(grib_handle_of_accessor(a),self->units_factor,1.0);
 	}
 
 	if(self->units_bias &&
-			(grib_get_double_internal(a->parent->h,self->units_bias,&units_bias)== GRIB_SUCCESS)) {
-		grib_set_double_internal(a->parent->h,self->units_bias,0.0);
+			(grib_get_double_internal(grib_handle_of_accessor(a),self->units_bias,&units_bias)== GRIB_SUCCESS)) {
+		grib_set_double_internal(grib_handle_of_accessor(a),self->units_bias,0.0);
 	}
 
 	if (units_factor != 1.0) {
@@ -215,23 +217,23 @@ static int pack_double(grib_accessor* a, const double* cval, size_t *len)
 	case GRIB_SUCCESS:
 		break;
 	default:
-		grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"unable to compute packing parameters\n");
+		grib_context_log(a->context,GRIB_LOG_ERROR,"unable to compute packing parameters\n");
 		return ret;
 	}
 
-	if((ret = grib_get_double_internal(a->parent->h,self->reference_value, &reference_value))
+	if((ret = grib_get_double_internal(grib_handle_of_accessor(a),self->reference_value, &reference_value))
 			!= GRIB_SUCCESS)
 		return ret;
 
-	if((ret = grib_get_long_internal(a->parent->h,self->binary_scale_factor, &binary_scale_factor))
+	if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->binary_scale_factor, &binary_scale_factor))
 			!= GRIB_SUCCESS)
 		return ret;
 
-	if((ret = grib_get_long_internal(a->parent->h,self->bits_per_value,&bits_per_value)) !=
+	if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->bits_per_value,&bits_per_value)) !=
 			GRIB_SUCCESS)
 		return ret;
 
-	if((ret = grib_get_long_internal(a->parent->h,self->decimal_scale_factor, &decimal_scale_factor))
+	if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->decimal_scale_factor, &decimal_scale_factor))
 			!= GRIB_SUCCESS)
 		return ret;
 
@@ -239,17 +241,17 @@ static int pack_double(grib_accessor* a, const double* cval, size_t *len)
 	divisor = grib_power(-binary_scale_factor,2);
 
 	buflen = (((bits_per_value*n_vals)+7)/8)*sizeof(unsigned char);
-	buf = (unsigned char*)grib_context_buffer_malloc_clear(a->parent->h->context,buflen);
+	buf = (unsigned char*)grib_context_buffer_malloc_clear(a->context,buflen);
 	encoded = buf;
 
 	grib_encode_double_array(n_vals,val,bits_per_value,reference_value,decimal,divisor,encoded,&off);
 
-	grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG,
+	grib_context_log(a->context, GRIB_LOG_DEBUG,
 			"grib_accessor_data_g2simple_packing : pack_double : packing %s, %d values", a->name, n_vals);
 
 	grib_buffer_replace(a, buf, buflen,1,1);
 
-	grib_context_buffer_free(a->parent->h->context,buf);
+	grib_context_buffer_free(a->context,buf);
 
 	return ret;
 }
diff --git a/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.c b/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.c
index ae5d685..ffd3066 100644
--- a/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.c
+++ b/src/grib_accessor_class_data_g2simple_packing_with_preprocessing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -119,6 +119,7 @@ static grib_accessor_class _grib_accessor_class_data_g2simple_packing_with_prepr
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -155,6 +156,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -162,8 +164,8 @@ static void init_class(grib_accessor_class* c)
 static void init(grib_accessor* a,const long v, grib_arguments* args)
 {
   grib_accessor_data_g2simple_packing_with_preprocessing *self =(grib_accessor_data_g2simple_packing_with_preprocessing*)a;
-  self->pre_processing = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->pre_processing_parameter = grib_arguments_get_name(a->parent->h,args,self->carg++);
+  self->pre_processing = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->pre_processing_parameter = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
   a->flags |= GRIB_ACCESSOR_FLAG_DATA;
 }
 
@@ -172,7 +174,7 @@ static int value_count(grib_accessor* a,long* n_vals)
   grib_accessor_data_g2simple_packing_with_preprocessing *self =(grib_accessor_data_g2simple_packing_with_preprocessing*)a;
   *n_vals= 0;
 
-  return grib_get_long_internal(a->parent->h,self->number_of_values,n_vals);
+  return grib_get_long_internal(grib_handle_of_accessor(a),self->number_of_values,n_vals);
 }
 
 static int  unpack_double(grib_accessor* a, double* val, size_t *len)
@@ -199,13 +201,13 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
   self->dirty=0;
 
 
-  if((err = grib_get_long_internal(a->parent->h,self->pre_processing, &pre_processing)) != GRIB_SUCCESS){
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->pre_processing, err);
+  if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->pre_processing, &pre_processing)) != GRIB_SUCCESS){
+    grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->pre_processing, err);
     return err;
   }
 
-  if((err = grib_get_double_internal(a->parent->h,self->pre_processing_parameter, &pre_processing_parameter)) != GRIB_SUCCESS){
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->pre_processing_parameter, err);
+  if((err = grib_get_double_internal(grib_handle_of_accessor(a),self->pre_processing_parameter, &pre_processing_parameter)) != GRIB_SUCCESS){
+    grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->pre_processing_parameter, err);
     return err;
   }
 
@@ -233,7 +235,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
   self->dirty=1;
 
-  if((err = grib_get_long_internal(a->parent->h,self->pre_processing, &pre_processing)) != GRIB_SUCCESS)
+  if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->pre_processing, &pre_processing)) != GRIB_SUCCESS)
     return err;
 
   err=pre_processing_func((double*)val,n_vals,pre_processing,&pre_processing_parameter,DIRECT);
@@ -242,11 +244,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
   err =   super->pack_double(a,val,len);
   if (err!=GRIB_SUCCESS) return err;
 
-  if((err = grib_set_double_internal(a->parent->h,self->pre_processing_parameter, pre_processing_parameter)) != GRIB_SUCCESS)
+  if((err = grib_set_double_internal(grib_handle_of_accessor(a),self->pre_processing_parameter, pre_processing_parameter)) != GRIB_SUCCESS)
     return err;
 
 
-  if((err = grib_set_long_internal(a->parent->h,self->number_of_values, n_vals)) != GRIB_SUCCESS)
+  if((err = grib_set_long_internal(grib_handle_of_accessor(a),self->number_of_values, n_vals)) != GRIB_SUCCESS)
     return err;
 
 
diff --git a/src/grib_accessor_class_data_jpeg2000_packing.c b/src/grib_accessor_class_data_jpeg2000_packing.c
index 0017ab7..775ca27 100644
--- a/src/grib_accessor_class_data_jpeg2000_packing.c
+++ b/src/grib_accessor_class_data_jpeg2000_packing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -124,6 +124,7 @@ static grib_accessor_class _grib_accessor_class_data_jpeg2000_packing = {
     &unpack_double_element,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -159,6 +160,7 @@ static void init_class(grib_accessor_class* c)
 	c->compare	=	(*(c->super))->compare;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -173,13 +175,14 @@ static void init(grib_accessor* a,const long v, grib_arguments* args)
     const char * user_lib=NULL;
     grib_accessor_data_jpeg2000_packing *self =(grib_accessor_data_jpeg2000_packing*)a;
 
-    self->type_of_compression_used  = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->target_compression_ratio = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->ni                     = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->nj                     = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->list_defining_points   = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->number_of_data_points  = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->scanning_mode      = grib_arguments_get_name(a->parent->h,args,self->carg++);
+    self->jpeg_lib = 0;
+    self->type_of_compression_used  = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+    self->target_compression_ratio = 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++);
     self->edition=2;
     a->flags |= GRIB_ACCESSOR_FLAG_DATA;
 
@@ -189,7 +192,7 @@ static void init(grib_accessor* a,const long v, grib_arguments* args)
     self->jpeg_lib=OPENJPEG_LIB;
 #endif
 
-    if ((user_lib=getenv("ECCODES_GRIB_JPEG"))!=NULL ) {
+    if ((user_lib=codes_getenv("ECCODES_GRIB_JPEG"))!=NULL ) {
         if (!strcmp(user_lib,"jasper")) {
             self->jpeg_lib=JASPER_LIB;
         } else if (!strcmp(user_lib,"openjpeg")) {
@@ -197,7 +200,7 @@ static void init(grib_accessor* a,const long v, grib_arguments* args)
         }
     }
 
-    self->dump_jpg  = getenv("ECCODES_GRIB_DUMP_JPG_FILE");
+    self->dump_jpg = codes_getenv("ECCODES_GRIB_DUMP_JPG_FILE");
 
     if(first) {
         if(self->dump_jpg)
@@ -211,12 +214,12 @@ static int value_count(grib_accessor* a,long* n_vals)
     grib_accessor_data_jpeg2000_packing *self =(grib_accessor_data_jpeg2000_packing*)a;
     *n_vals= 0;
 
-    return grib_get_long_internal(a->parent->h,self->number_of_values,n_vals);
+    return grib_get_long_internal(grib_handle_of_accessor(a),self->number_of_values,n_vals);
 }
 
 #define EXTRA_BUFFER_SIZE 10240
 
-#ifdef HAVE_JPEG
+#if HAVE_JPEG
 static int  unpack_double(grib_accessor* a, double* val, size_t *len)
 {
     grib_accessor_data_jpeg2000_packing *self =(grib_accessor_data_jpeg2000_packing*)a;
@@ -244,19 +247,19 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
     if (err) return err;
 
     if(self->units_factor)
-        grib_get_double_internal(a->parent->h,self->units_factor,&units_factor);
+        grib_get_double_internal(grib_handle_of_accessor(a),self->units_factor,&units_factor);
 
     if(self->units_bias)
-        grib_get_double_internal(a->parent->h,self->units_bias,&units_bias);
+        grib_get_double_internal(grib_handle_of_accessor(a),self->units_bias,&units_bias);
 
 
-    if((err = grib_get_long_internal(a->parent->h,self->bits_per_value,&bits_per_value)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->bits_per_value,&bits_per_value)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_double_internal(a->parent->h,self->reference_value, &reference_value)) != GRIB_SUCCESS)
+    if((err = grib_get_double_internal(grib_handle_of_accessor(a),self->reference_value, &reference_value)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_long_internal(a->parent->h,self->binary_scale_factor, &binary_scale_factor)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->binary_scale_factor, &binary_scale_factor)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_long_internal(a->parent->h,self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS)
         return err;
 
     self->dirty=0;
@@ -278,18 +281,21 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
         return GRIB_SUCCESS;
     }
 
-    buf = (unsigned char*)a->parent->h->buffer->data;
+    buf = (unsigned char*)grib_handle_of_accessor(a)->buffer->data;
     buf += grib_byte_offset(a);
 
     switch (self->jpeg_lib) {
     case OPENJPEG_LIB:
-        if ((err = grib_openjpeg_decode(a->parent->h->context,buf,&buflen,val,&n_vals)) != GRIB_SUCCESS)
+        if ((err = grib_openjpeg_decode(a->context,buf,&buflen,val,&n_vals)) != GRIB_SUCCESS)
             return err;
         break;
     case JASPER_LIB:
-        if ((err = grib_jasper_decode(a->parent->h->context,buf,&buflen,val,&n_vals)) != GRIB_SUCCESS)
+        if ((err = grib_jasper_decode(a->context,buf,&buflen,val,&n_vals)) != GRIB_SUCCESS)
             return err;
         break;
+    default:
+        grib_context_log(a->context,GRIB_LOG_ERROR,"Unable to unpack. Invalid JPEG library.\n");
+        return GRIB_DECODING_ERROR;
     }
 
     *len = n_vals;
@@ -346,13 +352,13 @@ static int pack_double(grib_accessor* a, const double* cval, size_t *len)
     }
 
     if(self->units_factor &&
-            (grib_get_double_internal(a->parent->h,self->units_factor,&units_factor)== GRIB_SUCCESS)) {
-        grib_set_double_internal(a->parent->h,self->units_factor,1.0);
+            (grib_get_double_internal(grib_handle_of_accessor(a),self->units_factor,&units_factor)== GRIB_SUCCESS)) {
+        grib_set_double_internal(grib_handle_of_accessor(a),self->units_factor,1.0);
     }
 
     if(self->units_bias &&
-            (grib_get_double_internal(a->parent->h,self->units_bias,&units_bias)== GRIB_SUCCESS)) {
-        grib_set_double_internal(a->parent->h,self->units_bias,0.0);
+            (grib_get_double_internal(grib_handle_of_accessor(a),self->units_bias,&units_bias)== GRIB_SUCCESS)) {
+        grib_set_double_internal(grib_handle_of_accessor(a),self->units_bias,0.0);
     }
 
     if (units_factor != 1.0) {
@@ -372,23 +378,23 @@ static int pack_double(grib_accessor* a, const double* cval, size_t *len)
     case GRIB_SUCCESS:
         break;
     default:
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"unable to compute packing parameters\n");
+        grib_context_log(a->context,GRIB_LOG_ERROR,"unable to compute packing parameters\n");
         return ret;
     }
 
-    if((ret = grib_get_double_internal(a->parent->h,self->reference_value, &reference_value))
+    if((ret = grib_get_double_internal(grib_handle_of_accessor(a),self->reference_value, &reference_value))
             != GRIB_SUCCESS)
         return ret;
 
-    if((ret = grib_get_long_internal(a->parent->h,self->binary_scale_factor, &binary_scale_factor))
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->binary_scale_factor, &binary_scale_factor))
             != GRIB_SUCCESS)
         return ret;
 
-    if((ret = grib_get_long_internal(a->parent->h,self->bits_per_value,&bits_per_value)) !=
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->bits_per_value,&bits_per_value)) !=
             GRIB_SUCCESS)
         return ret;
 
-    if((ret = grib_get_long_internal(a->parent->h,self->decimal_scale_factor, &decimal_scale_factor))
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->decimal_scale_factor, &decimal_scale_factor))
             != GRIB_SUCCESS)
         return ret;
 
@@ -396,25 +402,25 @@ static int pack_double(grib_accessor* a, const double* cval, size_t *len)
     divisor = grib_power(-binary_scale_factor,2);
 
     simple_packing_size = (((bits_per_value*n_vals)+7)/8)*sizeof(unsigned char);
-    buf  = (unsigned char*)grib_context_malloc_clear(a->parent->h->context,simple_packing_size+EXTRA_BUFFER_SIZE);
+    buf  = (unsigned char*)grib_context_malloc_clear(a->context,simple_packing_size+EXTRA_BUFFER_SIZE);
     if(!buf) {
         err = GRIB_OUT_OF_MEMORY;
         goto cleanup;
     }
 
-    if((err = grib_get_long_internal(a->parent->h,self->ni,&ni)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->ni,&ni)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_long_internal(a->parent->h,self->nj,&nj)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->nj,&nj)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_long_internal(a->parent->h,self->type_of_compression_used,&type_of_compression_used)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->type_of_compression_used,&type_of_compression_used)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_long_internal(a->parent->h,self->target_compression_ratio,&target_compression_ratio)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->target_compression_ratio,&target_compression_ratio)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_long_internal(a->parent->h,self->scanning_mode,&scanning_mode)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->scanning_mode,&scanning_mode)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_long_internal(a->parent->h,self->list_defining_points,&list_defining_points)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->list_defining_points,&list_defining_points)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_long_internal(a->parent->h,self->number_of_data_points,&number_of_data_points)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->number_of_data_points,&number_of_data_points)) != GRIB_SUCCESS)
         return err;
 
     width  = ni;
@@ -472,7 +478,7 @@ static int pack_double(grib_accessor* a, const double* cval, size_t *len)
     /* See GRIB-438 */
     if (bits_per_value == 0) {
         const long bits_per_value_adjusted = 1;
-        grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG,
+        grib_context_log(a->context, GRIB_LOG_DEBUG,
                 "grib_accessor_class_data_jpeg2000_packing(%s) : bits per value was zero, changed to %d",
                 self->jpeg_lib==OPENJPEG_LIB ? "openjpeg" : "jasper", bits_per_value_adjusted);
         bits_per_value = bits_per_value_adjusted;
@@ -489,15 +495,15 @@ static int pack_double(grib_accessor* a, const double* cval, size_t *len)
 
     switch (self->jpeg_lib) {
     case OPENJPEG_LIB:
-        if ( (err = grib_openjpeg_encode(a->parent->h->context,&helper)) != GRIB_SUCCESS ) goto cleanup;
+        if ( (err = grib_openjpeg_encode(a->context,&helper)) != GRIB_SUCCESS ) goto cleanup;
         break;
     case JASPER_LIB:
-        if ( (err = grib_jasper_encode(a->parent->h->context,&helper)) != GRIB_SUCCESS ) goto cleanup;
+        if ( (err = grib_jasper_encode(a->context,&helper)) != GRIB_SUCCESS ) goto cleanup;
         break;
     }
 
     if(helper.jpeg_length > simple_packing_size)
-        grib_context_log(a->parent->h->context, GRIB_LOG_WARNING,
+        grib_context_log(a->context, GRIB_LOG_WARNING,
                 "grib_accessor_data_jpeg2000_packing(%s) : jpeg data (%ld) larger than input data (%ld)",
                 self->jpeg_lib==OPENJPEG_LIB ? "openjpeg" : "jasper",
                         helper.jpeg_length, simple_packing_size);
@@ -519,10 +525,10 @@ static int pack_double(grib_accessor* a, const double* cval, size_t *len)
 
     cleanup:
 
-    grib_context_free(a->parent->h->context,buf);
+    grib_context_free(a->context,buf);
 
     if(err == GRIB_SUCCESS)
-        err = grib_set_long_internal(a->parent->h,self->number_of_values, *len);
+        err = grib_set_long_internal(grib_handle_of_accessor(a),self->number_of_values, *len);
     return err;
 
 }
@@ -530,15 +536,15 @@ static int pack_double(grib_accessor* a, const double* cval, size_t *len)
 
 static int  unpack_double(grib_accessor* a, double* val, size_t *len)
 {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
-            "jpeg support not enabled. Please rerun configure with the --with-jasper or --with-openjpeg option.");
+    grib_context_log(a->context, GRIB_LOG_ERROR,
+            "JPEG support not enabled.");
     return GRIB_NOT_IMPLEMENTED;
 }
 
 static int pack_double(grib_accessor* a, const double* val, size_t *len)
 {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
-            "jpeg support not enabled. Please rerun configure with the --with-jasper or --with-openjpeg option.");
+    grib_context_log(a->context, GRIB_LOG_ERROR,
+            "JPEG support not enabled.");
     return GRIB_NOT_IMPLEMENTED;
 }
 
@@ -552,14 +558,14 @@ static int  unpack_double_element(grib_accessor* a, size_t idx, double* val)
 
     /* GRIB-564: The index idx relates to codedValues NOT values! */
 
-    err=grib_get_size(a->parent->h,"codedValues",&size);
+    err=grib_get_size(grib_handle_of_accessor(a),"codedValues",&size);
     if (err) return err;
     if (idx > size) return GRIB_INVALID_NEAREST;
 
-    values=(double*)grib_context_malloc_clear(a->parent->h->context,size*sizeof(double));
-    err=grib_get_double_array(a->parent->h,"codedValues",values,&size);
+    values=(double*)grib_context_malloc_clear(a->context,size*sizeof(double));
+    err=grib_get_double_array(grib_handle_of_accessor(a),"codedValues",values,&size);
     if (err) return err;
     *val=values[idx];
-    grib_context_free(a->parent->h->context,values);
+    grib_context_free(a->context,values);
     return err;
 }
diff --git a/src/grib_accessor_class_data_png_packing.c b/src/grib_accessor_class_data_png_packing.c
index 43dc779..189e564 100644
--- a/src/grib_accessor_class_data_png_packing.c
+++ b/src/grib_accessor_class_data_png_packing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -116,6 +116,7 @@ static grib_accessor_class _grib_accessor_class_data_png_packing = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -152,6 +153,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -160,18 +162,18 @@ 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(a->parent->h,args,self->carg++);
-    self->reference_value       = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->binary_scale_factor   = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->decimal_scale_factor  = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->bits_per_value           = grib_arguments_get_name(a->parent->h,args,self->carg++);
+    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(a->parent->h,args,self->carg++);
-    self->nj                     = grib_arguments_get_name(a->parent->h,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(a->parent->h,args,self->carg++);
-    self->number_of_data_points  = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->scanning_mode      = grib_arguments_get_name(a->parent->h,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++);
     a->flags |= GRIB_ACCESSOR_FLAG_DATA;
 }
 
@@ -179,7 +181,7 @@ 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;
-    return grib_get_long_internal(a->parent->h,self->number_of_values,n_vals);
+    return grib_get_long_internal(grib_handle_of_accessor(a),self->number_of_values,n_vals);
 }
 
 #if HAVE_LIBPNG
@@ -250,13 +252,13 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
     n_vals=nn;
     if (err) return err;
 
-    if((err = grib_get_long_internal(a->parent->h,self->bits_per_value,&bits_per_value)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->bits_per_value,&bits_per_value)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_double_internal(a->parent->h,self->reference_value, &reference_value)) != GRIB_SUCCESS)
+    if((err = grib_get_double_internal(grib_handle_of_accessor(a),self->reference_value, &reference_value)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_long_internal(a->parent->h,self->binary_scale_factor, &binary_scale_factor)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->binary_scale_factor, &binary_scale_factor)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_long_internal(a->parent->h,self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS)
         return err;
 
     bscale = grib_power(binary_scale_factor,2);
@@ -276,7 +278,7 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
         return GRIB_SUCCESS;
     }
 
-    buf = (unsigned char*)a->parent->h->buffer->data;
+    buf = (unsigned char*)grib_handle_of_accessor(a)->buffer->data;
     buf += grib_byte_offset(a);
 
 
@@ -412,13 +414,13 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     n_vals=nn;
     if (err) return err;
 
-    if((err = grib_get_long_internal(a->parent->h,self->bits_per_value,&bits_per_value)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->bits_per_value,&bits_per_value)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_double_internal(a->parent->h,self->reference_value, &reference_value)) != GRIB_SUCCESS)
+    if((err = grib_get_double_internal(grib_handle_of_accessor(a),self->reference_value, &reference_value)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_long_internal(a->parent->h,self->binary_scale_factor, &binary_scale_factor)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->binary_scale_factor, &binary_scale_factor)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_get_long_internal(a->parent->h,self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS)
         return err;
 
     /* Special case */
@@ -435,17 +437,17 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
         for(i = 1 ; i < n_vals; i++)
             Assert(val[i] == val[0]);
 
-        if((err = grib_set_double_internal(a->parent->h,self->reference_value, val[0])) != GRIB_SUCCESS)
+        if((err = grib_set_double_internal(grib_handle_of_accessor(a),self->reference_value, val[0])) != GRIB_SUCCESS)
             return err;
         {
             /* Make sure we can decode it again */
             double ref = 1e-100;
-            grib_get_double_internal(a->parent->h,self->reference_value,&ref);
+            grib_get_double_internal(grib_handle_of_accessor(a),self->reference_value,&ref);
             printf("%g %g %g\n",reference_value,ref,reference_value-ref);
             Assert(ref == reference_value);
         }
 
-        if((err = grib_set_long_internal(a->parent->h,self->number_of_values, n_vals)) !=  GRIB_SUCCESS)
+        if((err = grib_set_long_internal(grib_handle_of_accessor(a),self->number_of_values, n_vals)) !=  GRIB_SUCCESS)
             return err;
 
         grib_buffer_replace(a, NULL, 0,1,1);
@@ -453,19 +455,19 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
         return GRIB_SUCCESS;
     }
 
-    if((err = grib_get_long_internal(a->parent->h,self->ni,&ni)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->ni,&ni)) != GRIB_SUCCESS)
         return err;
 
-    if((err = grib_get_long_internal(a->parent->h,self->nj,&nj)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->nj,&nj)) != GRIB_SUCCESS)
         return err;
 
-    if((err = grib_get_long_internal(a->parent->h,self->scanning_mode,&scanning_mode)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->scanning_mode,&scanning_mode)) != GRIB_SUCCESS)
         return err;
 
-    if((err = grib_get_long_internal(a->parent->h,self->list_defining_points,&list_defining_points)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->list_defining_points,&list_defining_points)) != GRIB_SUCCESS)
         return err;
 
-    if((err = grib_get_long_internal(a->parent->h,self->number_of_data_points,&number_of_data_points)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->number_of_data_points,&number_of_data_points)) != GRIB_SUCCESS)
         return err;
 
     width  = ni;
@@ -515,9 +517,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     min *= d;
     max *= d;
 
-    if (grib_get_nearest_smaller_value(a->parent->h,self->reference_value,min,&reference_value)
+    if (grib_get_nearest_smaller_value(grib_handle_of_accessor(a),self->reference_value,min,&reference_value)
             !=GRIB_SUCCESS) {
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+        grib_context_log(a->context,GRIB_LOG_ERROR,
                 "unable to find nearest_smaller_value of %g for %s",min,self->reference_value);
         exit(GRIB_INTERNAL_ERROR);
     }
@@ -535,7 +537,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     Assert(bits_per_value % 8 == 0);
 #endif
     bits8 = (bits_per_value+7)/8*8;
-    encoded = grib_context_buffer_malloc_clear(a->parent->h->context,bits8/8*n_vals);
+    encoded = grib_context_buffer_malloc_clear(a->context,bits8/8*n_vals);
 
     if(!encoded) {
         err = GRIB_OUT_OF_MEMORY;
@@ -557,9 +559,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     }
     /*       buflen = n_vals*(bits_per_value/8);*/
 
-    grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG,
+    grib_context_log(a->context, GRIB_LOG_DEBUG,
             "grib_accessor_data_png_packing : pack_double : packing %s, %d values", a->name, n_vals);
-    buf = grib_context_buffer_malloc_clear(a->parent->h->context,buflen);
+    buf = grib_context_buffer_malloc_clear(a->context,buflen);
 
     if(!buf) {
         err = GRIB_OUT_OF_MEMORY;
@@ -567,23 +569,23 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     }
 
 
-    if((err = grib_set_double_internal(a->parent->h,self->reference_value, reference_value)) != GRIB_SUCCESS)
+    if((err = grib_set_double_internal(grib_handle_of_accessor(a),self->reference_value, reference_value)) != GRIB_SUCCESS)
         return err;
     {
         /* Make sure we can decode it again */
         double ref = 1e-100;
-        grib_get_double_internal(a->parent->h,self->reference_value,&ref);
+        grib_get_double_internal(grib_handle_of_accessor(a),self->reference_value,&ref);
         Assert(ref == reference_value);
     }
-    if((err = grib_set_long_internal(a->parent->h,self->binary_scale_factor, binary_scale_factor)) != GRIB_SUCCESS)
+    if((err = grib_set_long_internal(grib_handle_of_accessor(a),self->binary_scale_factor, binary_scale_factor)) != GRIB_SUCCESS)
         return err;
-    if((err = grib_set_long_internal(a->parent->h,self->decimal_scale_factor, decimal_scale_factor)) != GRIB_SUCCESS)
+    if((err = grib_set_long_internal(grib_handle_of_accessor(a),self->decimal_scale_factor, decimal_scale_factor)) != GRIB_SUCCESS)
         return err;
 
-    if((err = grib_get_long_internal(a->parent->h,self->ni,&ni)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->ni,&ni)) != GRIB_SUCCESS)
         return err;
 
-    if((err = grib_get_long_internal(a->parent->h,self->nj,&nj)) != GRIB_SUCCESS)
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->nj,&nj)) != GRIB_SUCCESS)
         return err;
 
     png = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
@@ -639,7 +641,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     /*bytes=bit_depth/8;*/
     bytes = bits8/8;
 
-    rows = grib_context_buffer_malloc_clear(a->parent->h->context,sizeof(png_bytep)*height);
+    rows = grib_context_buffer_malloc_clear(a->context,sizeof(png_bytep)*height);
 
     rows  = malloc(height*sizeof(png_bytep));
     for (j=0;j<height;j++)
@@ -659,12 +661,12 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
         png_destroy_write_struct(&png, info?&info:NULL);
 
 
-    grib_context_buffer_free(a->parent->h->context,buf);
-    grib_context_buffer_free(a->parent->h->context,encoded);
-    grib_context_buffer_free(a->parent->h->context,rows);
+    grib_context_buffer_free(a->context,buf);
+    grib_context_buffer_free(a->context,encoded);
+    grib_context_buffer_free(a->context,rows);
 
     if(err == GRIB_SUCCESS)
-        err = grib_set_long_internal(a->parent->h,self->number_of_values, *len);
+        err = grib_set_long_internal(grib_handle_of_accessor(a),self->number_of_values, *len);
 
     return err;
 }
@@ -672,15 +674,15 @@ 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_context_log(a->parent->h->context, GRIB_LOG_ERROR,
-            "grib_accessor_data_png_packing: png support not enabled. Please rerun configure with --with-png-support");
+    grib_context_log(a->context, GRIB_LOG_ERROR,
+            "grib_accessor_data_png_packing: PNG support not enabled.");
     return GRIB_NOT_IMPLEMENTED;
 }
 
 static int pack_double(grib_accessor* a, const double* val, size_t *len)
 {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
-            "grib_accessor_data_png_packing: png support not enabled. Please rerun configure with --with-png-support");
+    grib_context_log(a->context, GRIB_LOG_ERROR,
+            "grib_accessor_data_png_packing: PNG support not enabled.");
     return GRIB_NOT_IMPLEMENTED;
 }
 
diff --git a/src/grib_accessor_class_data_raw_packing.c b/src/grib_accessor_class_data_raw_packing.c
index f3d1989..a048213 100644
--- a/src/grib_accessor_class_data_raw_packing.c
+++ b/src/grib_accessor_class_data_raw_packing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -105,6 +105,7 @@ static grib_accessor_class _grib_accessor_class_data_raw_packing = {
     &unpack_double_element,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -140,6 +141,7 @@ static void init_class(grib_accessor_class* c)
 	c->compare	=	(*(c->super))->compare;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -148,8 +150,8 @@ static void init(grib_accessor* a,const long v, grib_arguments* args)
 {
   grib_accessor_data_raw_packing *self =(grib_accessor_data_raw_packing*)a;
 
-  self->number_of_values      = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->precision       = grib_arguments_get_name(a->parent->h,args,self->carg++);
+  self->number_of_values      = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->precision       = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
   a->flags |= GRIB_ACCESSOR_FLAG_DATA;
 }
 
@@ -157,7 +159,7 @@ static int value_count(grib_accessor* a,long* n_vals)
 {
   grib_accessor_data_raw_packing *self =(grib_accessor_data_raw_packing*)a;
   *n_vals= 0;
-  return grib_get_long_internal(a->parent->h,self->number_of_values,n_vals);
+  return grib_get_long_internal(grib_handle_of_accessor(a),self->number_of_values,n_vals);
 }
 
 static int  unpack_double(grib_accessor* a, double* val, size_t *len)
@@ -172,13 +174,13 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
 
   int code = GRIB_SUCCESS;
 
-  if((code = grib_get_long_internal(a->parent->h,self->precision,&precision))
+  if((code = grib_get_long_internal(grib_handle_of_accessor(a),self->precision,&precision))
       != GRIB_SUCCESS)
     return code;
 
   self->dirty=0;
 
-  buf =  (unsigned char*)a->parent->h->buffer->data;
+  buf =  (unsigned char*)grib_handle_of_accessor(a)->buffer->data;
   buf += grib_byte_offset(a);
 
   switch(precision)
@@ -201,7 +203,7 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
   if(*len < nvals)
     return GRIB_ARRAY_TOO_SMALL;
 
-  code=grib_ieee_decode_array(a->parent->h->context,buf,nvals,bytes,val);
+  code=grib_ieee_decode_array(a->context,buf,nvals,bytes,val);
 
   *len = nvals;
 
@@ -229,7 +231,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
   if (*len ==0) return GRIB_NO_VALUES;
 
-  if((code = grib_get_long_internal(a->parent->h,self->precision,&precision))
+  if((code = grib_get_long_internal(grib_handle_of_accessor(a),self->precision,&precision))
       != GRIB_SUCCESS)
     return code;
 
@@ -253,7 +255,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
   bufsize = bytes*inlen;
 
-  buffer = (unsigned char*)grib_context_malloc(a->parent->h->context, bufsize);
+  buffer = (unsigned char*)grib_context_malloc(a->context, bufsize);
 
   if(!buffer)
   {
@@ -261,7 +263,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     goto clean_up;
   }
 
-  code=grib_ieee_encode_array(a->parent->h->context,values,inlen,bytes,buffer);
+  code=grib_ieee_encode_array(a->context,values,inlen,bytes,buffer);
 
 clean_up:
   if(free_buffer) free(buffer);
@@ -269,9 +271,9 @@ clean_up:
 
   grib_buffer_replace(a, buffer, bufsize,1,1);
 
-  grib_context_buffer_free(a->parent->h->context,buffer);
+  grib_context_buffer_free(a->context,buffer);
 
-  code = grib_set_long(a->parent->h,self->number_of_values, inlen);
+  code = grib_set_long(grib_handle_of_accessor(a),self->number_of_values, inlen);
   if(code==GRIB_READ_ONLY) code=0;
 
   return code;
@@ -289,13 +291,13 @@ static int  unpack_double_element(grib_accessor* a, size_t idx, double* val) {
 
   long precision = 0;
 
-  if((ret = grib_get_long_internal(a->parent->h,self->precision,&precision))
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->precision,&precision))
       != GRIB_SUCCESS)
     return ret;
 
   self->dirty=0;
 
-  buf =  (unsigned char*)a->parent->h->buffer->data;
+  buf =  (unsigned char*)grib_handle_of_accessor(a)->buffer->data;
   buf += grib_byte_offset(a);
 
   switch(precision)
@@ -320,7 +322,7 @@ static int  unpack_double_element(grib_accessor* a, size_t idx, double* val) {
   nvals = 1;
   buf+=pos;
   
-  ret=grib_ieee_decode_array(a->parent->h->context,buf,nvals,bytes,val);
+  ret=grib_ieee_decode_array(a->context,buf,nvals,bytes,val);
 
   return ret;
 }
diff --git a/src/grib_accessor_class_data_secondary_bitmap.c b/src/grib_accessor_class_data_secondary_bitmap.c
index 79906a0..668d478 100644
--- a/src/grib_accessor_class_data_secondary_bitmap.c
+++ b/src/grib_accessor_class_data_secondary_bitmap.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -94,6 +94,7 @@ static grib_accessor_class _grib_accessor_class_data_secondary_bitmap = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -130,6 +131,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -139,10 +141,10 @@ static void init(grib_accessor* a,const long v, grib_arguments* args)
   grib_accessor_data_secondary_bitmap *self =(grib_accessor_data_secondary_bitmap*)a;
 
 
-  self->primary_bitmap   = grib_arguments_get_name(a->parent->h,args,0);
-  self->secondary_bitmap = grib_arguments_get_name(a->parent->h,args,1);
-  self->missing_value    = grib_arguments_get_name(a->parent->h,args,2);
-  self->expand_by        = grib_arguments_get_name(a->parent->h,args,3);
+  self->primary_bitmap   = grib_arguments_get_name(grib_handle_of_accessor(a),args,0);
+  self->secondary_bitmap = grib_arguments_get_name(grib_handle_of_accessor(a),args,1);
+  self->missing_value    = grib_arguments_get_name(grib_handle_of_accessor(a),args,2);
+  self->expand_by        = grib_arguments_get_name(grib_handle_of_accessor(a),args,3);
 
   a->length              = 0;
 }
@@ -180,37 +182,37 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
     return GRIB_ARRAY_TOO_SMALL;
   }
 
-  if((err = grib_get_long(a->parent->h,self->expand_by,&expand_by)) != GRIB_SUCCESS)
+  if((err = grib_get_long(grib_handle_of_accessor(a),self->expand_by,&expand_by)) != GRIB_SUCCESS)
     return err;
 
-  if((err = grib_get_size(a->parent->h,self->primary_bitmap,&primary_len)) != GRIB_SUCCESS)
+  if((err = grib_get_size(grib_handle_of_accessor(a),self->primary_bitmap,&primary_len)) != GRIB_SUCCESS)
     return err;
 
-  if((err = grib_get_size(a->parent->h,self->secondary_bitmap,&secondary_len)) != GRIB_SUCCESS)
+  if((err = grib_get_size(grib_handle_of_accessor(a),self->secondary_bitmap,&secondary_len)) != GRIB_SUCCESS)
     return err;
 
-  primary_vals = (double*)grib_context_malloc(a->parent->h->context,primary_len*sizeof(double));
+  primary_vals = (double*)grib_context_malloc(a->context,primary_len*sizeof(double));
   if(!primary_vals)
     return GRIB_OUT_OF_MEMORY;
 
-  secondary_vals = (double*)grib_context_malloc(a->parent->h->context,secondary_len*sizeof(double));
+  secondary_vals = (double*)grib_context_malloc(a->context,secondary_len*sizeof(double));
   if(!secondary_vals)
   {
-    grib_context_free(a->parent->h->context,primary_vals);
+    grib_context_free(a->context,primary_vals);
     return GRIB_OUT_OF_MEMORY;
   }
 
-  if((err = grib_get_double_array_internal(a->parent->h,self->primary_bitmap,primary_vals,&primary_len)) != GRIB_SUCCESS)
+  if((err = grib_get_double_array_internal(grib_handle_of_accessor(a),self->primary_bitmap,primary_vals,&primary_len)) != GRIB_SUCCESS)
   {
-    grib_context_free(a->parent->h->context,secondary_vals);
-    grib_context_free(a->parent->h->context,primary_vals);
+    grib_context_free(a->context,secondary_vals);
+    grib_context_free(a->context,primary_vals);
     return err;
   }
 
-  if((err = grib_get_double_array_internal(a->parent->h,self->secondary_bitmap,secondary_vals,&secondary_len)) != GRIB_SUCCESS)
+  if((err = grib_get_double_array_internal(grib_handle_of_accessor(a),self->secondary_bitmap,secondary_vals,&secondary_len)) != GRIB_SUCCESS)
   {
-    grib_context_free(a->parent->h->context,secondary_vals);
-    grib_context_free(a->parent->h->context,primary_vals);
+    grib_context_free(a->context,secondary_vals);
+    grib_context_free(a->context,primary_vals);
     return err;
   }
 
@@ -238,8 +240,8 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
 
   *len =  n_vals;
 
-  grib_context_free(a->parent->h->context,primary_vals);
-  grib_context_free(a->parent->h->context,secondary_vals);
+  grib_context_free(a->context,primary_vals);
+  grib_context_free(a->context,secondary_vals);
   return err;
 }
 
@@ -247,7 +249,7 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
 static int  get_native_type(grib_accessor* a)
 {
   /*  grib_accessor_data_secondary_bitmap* self =  (grib_accessor_data_secondary_bitmap*)a;
-    return grib_accessor_get_native_type(grib_find_accessor(a->parent->h,self->coded_values));*/
+    return grib_accessor_get_native_type(grib_find_accessor(grib_handle_of_accessor(a),self->coded_values));*/
 
   return GRIB_TYPE_DOUBLE;
 }
diff --git a/src/grib_accessor_class_data_sh_packed.c b/src/grib_accessor_class_data_sh_packed.c
index 6b11746..bc0fbf9 100644
--- a/src/grib_accessor_class_data_sh_packed.c
+++ b/src/grib_accessor_class_data_sh_packed.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -123,6 +123,7 @@ static grib_accessor_class _grib_accessor_class_data_sh_packed = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -160,6 +161,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -171,16 +173,16 @@ static void init(grib_accessor* a,const long v, grib_arguments* args)
 {
     grib_accessor_data_sh_packed *self =(grib_accessor_data_sh_packed*)a;
 
-    self->GRIBEX_sh_bug_present     = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->ieee_floats               = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->laplacianOperatorIsSet    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->laplacianOperator         = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->sub_j                     = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->sub_k                     = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->sub_m                     = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->pen_j                     = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->pen_k                     = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->pen_m                     = grib_arguments_get_name(a->parent->h,args,self->carg++);
+    self->GRIBEX_sh_bug_present     = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+    self->ieee_floats               = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+    self->laplacianOperatorIsSet    = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+    self->laplacianOperator         = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+    self->sub_j                     = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+    self->sub_k                     = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+    self->sub_m                     = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+    self->pen_j                     = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+    self->pen_k                     = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+    self->pen_m                     = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
 
     a->flags |= GRIB_ACCESSOR_FLAG_DATA;
     a->length=0;
@@ -198,22 +200,22 @@ static int value_count(grib_accessor* a,long* count)
     long   pen_k= 0;
     long   pen_m= 0;
 
-    if((ret = grib_get_long_internal(a->parent->h,self->sub_j,&sub_j)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_j,&sub_j)) != GRIB_SUCCESS)
         return ret;
-    if((ret = grib_get_long_internal(a->parent->h,self->sub_k,&sub_k)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_k,&sub_k)) != GRIB_SUCCESS)
         return ret;
-    if((ret = grib_get_long_internal(a->parent->h,self->sub_m,&sub_m)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_m,&sub_m)) != GRIB_SUCCESS)
         return ret;
 
-    if((ret = grib_get_long_internal(a->parent->h,self->pen_j,&pen_j)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->pen_j,&pen_j)) != GRIB_SUCCESS)
         return ret;
-    if((ret = grib_get_long_internal(a->parent->h,self->pen_k,&pen_k)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->pen_k,&pen_k)) != GRIB_SUCCESS)
         return ret;
-    if((ret = grib_get_long_internal(a->parent->h,self->pen_m,&pen_m)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->pen_m,&pen_m)) != GRIB_SUCCESS)
         return ret;
 
     if (pen_j != pen_k || pen_j!=pen_m ) {
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"pen_j=%ld, pen_k=%ld, pen_m=%ld\n",pen_j,pen_k,pen_m);
+        grib_context_log(a->context,GRIB_LOG_ERROR,"pen_j=%ld, pen_k=%ld, pen_m=%ld\n",pen_j,pen_k,pen_m);
         Assert ((pen_j ==  pen_k) && (pen_j == pen_m));
     }
     *count=(pen_j+1)*(pen_j+2)-(sub_j+1)*(sub_j+2);
@@ -233,7 +235,7 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
     long   mmax = 0;
     long   n_vals = 0;
     double *scals  = NULL;
-    double *pscals=NULL;
+    /* double *pscals=NULL; */
     double dummy=0;
 
     double s = 0;
@@ -276,40 +278,40 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
         return GRIB_ARRAY_TOO_SMALL;
     }
 
-    if((ret = grib_get_long_internal(a->parent->h,self->offsetdata,&offsetdata))
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->offsetdata,&offsetdata))
             != GRIB_SUCCESS)   return ret;
-    if((ret = grib_get_long_internal(a->parent->h,self->bits_per_value,&bits_per_value))
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->bits_per_value,&bits_per_value))
             != GRIB_SUCCESS)   return ret;
-    if((ret = grib_get_double_internal(a->parent->h,self->reference_value,&reference_value))
+    if((ret = grib_get_double_internal(grib_handle_of_accessor(a),self->reference_value,&reference_value))
             != GRIB_SUCCESS)   return ret;
-    if((ret = grib_get_long_internal(a->parent->h,self->binary_scale_factor,&binary_scale_factor))
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->binary_scale_factor,&binary_scale_factor))
             != GRIB_SUCCESS)           return ret;
 
-    if((ret = grib_get_long_internal(a->parent->h,self->decimal_scale_factor,&decimal_scale_factor))
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->decimal_scale_factor,&decimal_scale_factor))
             != GRIB_SUCCESS)
         return ret;
 
-    if((ret = grib_get_long_internal(a->parent->h,self->GRIBEX_sh_bug_present,&GRIBEX_sh_bug_present))
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->GRIBEX_sh_bug_present,&GRIBEX_sh_bug_present))
             != GRIB_SUCCESS)
         return ret;
 
-    if((ret = grib_get_long_internal(a->parent->h,self->ieee_floats,&ieee_floats)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->ieee_floats,&ieee_floats)) != GRIB_SUCCESS)
         return ret;
 
-    if((ret = grib_get_double_internal(a->parent->h,self->laplacianOperator,&laplacianOperator))
+    if((ret = grib_get_double_internal(grib_handle_of_accessor(a),self->laplacianOperator,&laplacianOperator))
             != GRIB_SUCCESS)
         return ret;
-    if((ret = grib_get_long_internal(a->parent->h,self->sub_j,&sub_j)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_j,&sub_j)) != GRIB_SUCCESS)
         return ret;
-    if((ret = grib_get_long_internal(a->parent->h,self->sub_k,&sub_k)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_k,&sub_k)) != GRIB_SUCCESS)
         return ret;
-    if((ret = grib_get_long_internal(a->parent->h,self->sub_m,&sub_m)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_m,&sub_m)) != GRIB_SUCCESS)
         return ret;
-    if((ret = grib_get_long_internal(a->parent->h,self->pen_j,&pen_j)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->pen_j,&pen_j)) != GRIB_SUCCESS)
         return ret;
-    if((ret = grib_get_long_internal(a->parent->h,self->pen_k,&pen_k)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->pen_k,&pen_k)) != GRIB_SUCCESS)
         return ret;
-    if((ret = grib_get_long_internal(a->parent->h,self->pen_m,&pen_m)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->pen_m,&pen_m)) != GRIB_SUCCESS)
         return ret;
 
     self->dirty=0;
@@ -333,7 +335,7 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
     Assert (pen_j == pen_k);
     Assert (pen_j == pen_m);
 
-    buf = (unsigned char*)a->parent->h->buffer->data;
+    buf = (unsigned char*)grib_handle_of_accessor(a)->buffer->data;
 
     maxv = pen_j+1;
 
@@ -348,7 +350,7 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
     s = grib_power(binary_scale_factor,2);
     d = grib_power(-decimal_scale_factor,10) ;
 
-    scals   = (double*)grib_context_malloc(a->parent->h->context,maxv*sizeof(double));
+    scals   = (double*)grib_context_malloc(a->context,maxv*sizeof(double));
     Assert(scals);
 
     scals[0] = 0;
@@ -378,7 +380,7 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
             sub_k--;
         }
 
-        pscals=scals+lup;
+        /* pscals=scals+lup; */
         for(lcount=hcount; lcount < maxv ; lcount++)
         {
             val[i++] =  (double) ((grib_decode_unsigned_long(lres, &lpos,
@@ -401,7 +403,8 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
             val[i++] *= d;
     }
 
-    grib_context_free(a->parent->h->context,scals);
+    (void)dummy; /* suppress gcc warning */
+    grib_context_free(a->context,scals);
 
     return ret;
 }
diff --git a/src/grib_accessor_class_data_sh_unpacked.c b/src/grib_accessor_class_data_sh_unpacked.c
index eab1fde..f604594 100644
--- a/src/grib_accessor_class_data_sh_unpacked.c
+++ b/src/grib_accessor_class_data_sh_unpacked.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -123,6 +123,7 @@ static grib_accessor_class _grib_accessor_class_data_sh_unpacked = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -160,6 +161,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -171,16 +173,16 @@ static void init(grib_accessor* a,const long v, grib_arguments* args)
 {
   grib_accessor_data_sh_unpacked *self =(grib_accessor_data_sh_unpacked*)a;
 
-  self->GRIBEX_sh_bug_present     = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->ieee_floats               = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->laplacianOperatorIsSet    = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->laplacianOperator         = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->sub_j                     = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->sub_k                     = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->sub_m                     = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->pen_j                     = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->pen_k                     = grib_arguments_get_name(a->parent->h,args,self->carg++);
-  self->pen_m                     = grib_arguments_get_name(a->parent->h,args,self->carg++);
+  self->GRIBEX_sh_bug_present     = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->ieee_floats               = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->laplacianOperatorIsSet    = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->laplacianOperator         = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->sub_j                     = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->sub_k                     = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->sub_m                     = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->pen_j                     = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->pen_k                     = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
+  self->pen_m                     = grib_arguments_get_name(grib_handle_of_accessor(a),args,self->carg++);
 
   a->flags |= GRIB_ACCESSOR_FLAG_DATA;
   a->length=0;
@@ -196,15 +198,15 @@ static int value_count(grib_accessor* a,long* count)
   long   sub_k= 0;
   long   sub_m= 0;
 
-  if((ret = grib_get_long_internal(a->parent->h,self->sub_j,&sub_j)) != GRIB_SUCCESS)                         
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_j,&sub_j)) != GRIB_SUCCESS)                         
   	return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->sub_k,&sub_k)) != GRIB_SUCCESS)                         
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_k,&sub_k)) != GRIB_SUCCESS)                         
   	return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->sub_m,&sub_m)) != GRIB_SUCCESS)                         
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_m,&sub_m)) != GRIB_SUCCESS)                         
   	return ret;
 
   if (sub_j != sub_k || sub_j!=sub_m ) {
-    grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"sub_j=%ld, sub_k=%ld, sub_m=%ld\n",sub_j,sub_k,sub_m);
+    grib_context_log(a->context,GRIB_LOG_ERROR,"sub_j=%ld, sub_k=%ld, sub_m=%ld\n",sub_j,sub_k,sub_m);
   	Assert ((sub_j ==  sub_k) && (sub_j == sub_m));
   }
   *count=(sub_j+1)*(sub_j+2);
@@ -225,7 +227,7 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
   long   mmax = 0;
   long   n_vals = 0;
   double *scals  = NULL;
-  double *pscals=NULL;
+  /* double *pscals=NULL; */
   double dummy=0;
 
   double s = 0;
@@ -269,27 +271,27 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
     return GRIB_ARRAY_TOO_SMALL;
   }
 
-  if((ret = grib_get_long_internal(a->parent->h,self->offsetdata,&offsetdata))
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->offsetdata,&offsetdata))
       != GRIB_SUCCESS)   return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h,self->GRIBEX_sh_bug_present,&GRIBEX_sh_bug_present))
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->GRIBEX_sh_bug_present,&GRIBEX_sh_bug_present))
       != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h,self->ieee_floats,&ieee_floats)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->ieee_floats,&ieee_floats)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h,self->sub_j,&sub_j)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_j,&sub_j)) != GRIB_SUCCESS)
     return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->sub_k,&sub_k)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_k,&sub_k)) != GRIB_SUCCESS)
     return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->sub_m,&sub_m)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->sub_m,&sub_m)) != GRIB_SUCCESS)
     return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->pen_j,&pen_j)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->pen_j,&pen_j)) != GRIB_SUCCESS)
     return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->pen_k,&pen_k)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->pen_k,&pen_k)) != GRIB_SUCCESS)
     return ret;
-  if((ret = grib_get_long_internal(a->parent->h,self->pen_m,&pen_m)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->pen_m,&pen_m)) != GRIB_SUCCESS)
     return ret;
 
   self->dirty=0;
@@ -313,7 +315,7 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
   Assert (pen_j == pen_k);
   Assert (pen_j == pen_m);
 
-  buf = (unsigned char*)a->parent->h->buffer->data;
+  buf = (unsigned char*)grib_handle_of_accessor(a)->buffer->data;
 
   maxv = pen_j+1;
 
@@ -328,9 +330,9 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
   s = grib_power(binary_scale_factor,2);
   d = grib_power(-decimal_scale_factor,10) ;
 
-  scals   = (double*)grib_context_malloc(a->parent->h->context,maxv*sizeof(double));
+  scals   = (double*)grib_context_malloc(a->context,maxv*sizeof(double));
   Assert(scals);
-  if((ret = grib_get_double_internal(a->parent->h,self->laplacianOperator,&laplacianOperator))
+  if((ret = grib_get_double_internal(grib_handle_of_accessor(a),self->laplacianOperator,&laplacianOperator))
       != GRIB_SUCCESS)
     return ret;
 
@@ -367,7 +369,7 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
       sub_k--;
     }
 
-    pscals=scals+lup;
+    /* pscals=scals+lup; */
     for(lcount=hcount; lcount < maxv ; lcount++)
     {
       dummy =  (double) ((grib_decode_unsigned_long(lres, &lpos,
@@ -390,7 +392,8 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
       val[i++] *= d;
   }
 
-  grib_context_free(a->parent->h->context,scals);
+  (void)dummy; /* suppress gcc warning */
+  grib_context_free(a->context,scals);
 
   return ret;
 
diff --git a/src/grib_accessor_class_data_shsimple_packing.c b/src/grib_accessor_class_data_shsimple_packing.c
index e4216a1..a8f4525 100644
--- a/src/grib_accessor_class_data_shsimple_packing.c
+++ b/src/grib_accessor_class_data_shsimple_packing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -92,6 +92,7 @@ static grib_accessor_class _grib_accessor_class_data_shsimple_packing = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -128,6 +129,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -136,8 +138,8 @@ static void init(grib_accessor* a,const long v, grib_arguments* args)
 {
   grib_accessor_data_shsimple_packing *self =(grib_accessor_data_shsimple_packing*)a;
 
-  self->coded_values  = grib_arguments_get_name(a->parent->h,args,0);
-  self->real_part        = grib_arguments_get_name(a->parent->h,args,1);
+  self->coded_values  = grib_arguments_get_name(grib_handle_of_accessor(a),args,0);
+  self->real_part        = grib_arguments_get_name(grib_handle_of_accessor(a),args,1);
   a->flags |= GRIB_ACCESSOR_FLAG_DATA;
 
   a->length = 0;
@@ -161,13 +163,13 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
   if (*len ==0) return GRIB_NO_VALUES;
 
-  if((err = grib_set_double_internal(a->parent->h,self->real_part,*val)) != GRIB_SUCCESS)
+  if((err = grib_set_double_internal(grib_handle_of_accessor(a),self->real_part,*val)) != GRIB_SUCCESS)
     return err;
 
 
   val++;
 
-  if((err = grib_set_double_array_internal(a->parent->h,self->coded_values,val,coded_n_vals)) != GRIB_SUCCESS)
+  if((err = grib_set_double_array_internal(grib_handle_of_accessor(a),self->coded_values,val,coded_n_vals)) != GRIB_SUCCESS)
   return err;
 
 
diff --git a/src/grib_accessor_class_data_simple_packing.c b/src/grib_accessor_class_data_simple_packing.c
index 4d964e7..0699e01 100644
--- a/src/grib_accessor_class_data_simple_packing.c
+++ b/src/grib_accessor_class_data_simple_packing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -120,6 +120,7 @@ static grib_accessor_class _grib_accessor_class_data_simple_packing = {
     &unpack_double_element,     /* unpack only ith value          */
     &unpack_double_subarray,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -154,6 +155,7 @@ static void init_class(grib_accessor_class* c)
 	c->next	=	(*(c->super))->next;
 	c->compare	=	(*(c->super))->compare;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -161,14 +163,15 @@ static void init_class(grib_accessor_class* c)
 static void init(grib_accessor* a,const long v, grib_arguments* args)
 {
     grib_accessor_data_simple_packing *self =(grib_accessor_data_simple_packing*)a;
-    self->units_factor  = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->units_bias  = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->changing_precision  = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->number_of_values  = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->bits_per_value  = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->reference_value = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->binary_scale_factor = grib_arguments_get_name(a->parent->h,args,self->carg++);
-    self->decimal_scale_factor = grib_arguments_get_name(a->parent->h,args,self->carg++);
+    grib_handle* gh = grib_handle_of_accessor(a);
+    self->units_factor  = grib_arguments_get_name(gh,args,self->carg++);
+    self->units_bias  = grib_arguments_get_name(gh,args,self->carg++);
+    self->changing_precision  = grib_arguments_get_name(gh,args,self->carg++);
+    self->number_of_values  = grib_arguments_get_name(gh,args,self->carg++);
+    self->bits_per_value  = grib_arguments_get_name(gh,args,self->carg++);
+    self->reference_value = grib_arguments_get_name(gh,args,self->carg++);
+    self->binary_scale_factor = grib_arguments_get_name(gh,args,self->carg++);
+    self->decimal_scale_factor = grib_arguments_get_name(gh,args,self->carg++);
     a->flags |= GRIB_ACCESSOR_FLAG_DATA;
     self->dirty=1;
 }
@@ -202,7 +205,7 @@ static int value_count(grib_accessor* a,long* number_of_values)
     grib_accessor_data_simple_packing* self =  (grib_accessor_data_simple_packing*)a;
     *number_of_values=0;
 
-    return grib_get_long_internal(a->parent->h,self->number_of_values,number_of_values);
+    return grib_get_long_internal(grib_handle_of_accessor(a),self->number_of_values,number_of_values);
 }
 
 static int unpack_double_element(grib_accessor* a, size_t idx, double* val)
@@ -211,36 +214,36 @@ static int unpack_double_element(grib_accessor* a, size_t idx, double* val)
 
     long n_vals;
     int err = 0;
+    grib_handle* gh = grib_handle_of_accessor(a);
 
     double reference_value;
     long   binary_scale_factor;
     long   bits_per_value;
     long   decimal_scale_factor;
-    unsigned char* buf = (unsigned char*)a->parent->h->buffer->data;
+    unsigned char* buf = (unsigned char*)gh->buffer->data;
     double s = 0;
     double d = 0;
     long pos = 0;
-    size_t o = 0;
 
     n_vals = 0;
     err=grib_value_count(a,&n_vals);
     if (err) return err;
 
-    if((err = grib_get_long_internal(a->parent->h,self->bits_per_value,&bits_per_value)) !=
+    if((err = grib_get_long_internal(gh,self->bits_per_value,&bits_per_value)) !=
             GRIB_SUCCESS)
         return err;
 
     self->dirty=0;
 
-    if((err = grib_get_double_internal(a->parent->h,self->reference_value, &reference_value)) !=
+    if((err = grib_get_double_internal(gh,self->reference_value, &reference_value)) !=
             GRIB_SUCCESS)
         return err;
 
-    if((err = grib_get_long_internal(a->parent->h,self->binary_scale_factor, &binary_scale_factor))
+    if((err = grib_get_long_internal(gh,self->binary_scale_factor, &binary_scale_factor))
             != GRIB_SUCCESS)
         return err;
 
-    if((err = grib_get_long_internal(a->parent->h,self->decimal_scale_factor, &decimal_scale_factor))
+    if((err = grib_get_long_internal(gh,self->decimal_scale_factor, &decimal_scale_factor))
             != GRIB_SUCCESS)
         return err;
 
@@ -251,22 +254,22 @@ static int unpack_double_element(grib_accessor* a, size_t idx, double* val)
         return GRIB_SUCCESS;
     }
 
+    Assert(idx < n_vals);
     s = grib_power(binary_scale_factor,2);
     d = grib_power(-decimal_scale_factor,10) ;
 
-    grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG,
-            "grib_accessor_data_simple_packing : unpack_double : creating %s, %d values",
-            a->name, n_vals);
+    grib_context_log(a->context, GRIB_LOG_DEBUG,
+            "grib_accessor_data_simple_packing: unpack_double_element: creating %s, %d values (idx=%ld)",
+            a->name, n_vals, idx);
 
     buf += grib_byte_offset(a);
 
-    Assert(((bits_per_value*n_vals)/8) < (1<<29));
-    /*ensure that the bit pointer is not overflown*/
+    /*Assert(((bits_per_value*n_vals)/8) < (1<<29));*/   /* See GRIB-787 */
 
     if(bits_per_value%8)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG,
-                "unpack_double : calling outline function : bpv %d, rv : %g, sf : %d, dsf : %d ",
+        grib_context_log(a->context, GRIB_LOG_DEBUG,
+                "unpack_double_element: calling outline function : bpv %d, rv : %g, sf : %d, dsf : %d ",
                 bits_per_value,reference_value,binary_scale_factor, decimal_scale_factor);
         pos=idx*bits_per_value;
         *val= (double) (((
@@ -276,7 +279,8 @@ static int unpack_double_element(grib_accessor* a, size_t idx, double* val)
     }
     else
     {
-        int bc;
+        int bc = 0;
+        size_t octet = 0;
         long lvalue = 0;
         int l = bits_per_value/8;
 
@@ -284,11 +288,11 @@ static int unpack_double_element(grib_accessor* a, size_t idx, double* val)
         buf+=pos;
         lvalue  = 0;
         lvalue  <<= 8;
-        lvalue |= buf[o++] ;
+        lvalue |= buf[octet++] ;
 
         for ( bc=1; bc<l; bc++ ) {
             lvalue <<= 8;
-            lvalue |= buf[o++] ;
+            lvalue |= buf[octet++] ;
         }
         *val = (double) (((lvalue*s)+reference_value)*d);
     }
@@ -299,6 +303,7 @@ static int unpack_double_element(grib_accessor* a, size_t idx, double* val)
 static int  _unpack_double(grib_accessor* a, double* val, size_t *len,unsigned char* buf,long pos, size_t n_vals)
 {
     grib_accessor_data_simple_packing* self =  (grib_accessor_data_simple_packing*)a;
+    grib_handle* gh = grib_handle_of_accessor(a);
 
     size_t i = 0;
     int err = 0;
@@ -318,7 +323,7 @@ static int  _unpack_double(grib_accessor* a, double* val, size_t *len,unsigned c
         return GRIB_ARRAY_TOO_SMALL;
     }
 
-    if((err = grib_get_long_internal(a->parent->h,self->bits_per_value,&bits_per_value)) !=
+    if((err = grib_get_long_internal(gh,self->bits_per_value,&bits_per_value)) !=
             GRIB_SUCCESS)
         return err;
 
@@ -331,13 +336,13 @@ static int  _unpack_double(grib_accessor* a, double* val, size_t *len,unsigned c
     }
 
     if(self->units_factor &&
-            (grib_get_double_internal(a->parent->h,self->units_factor,&units_factor)== GRIB_SUCCESS)) {
-        grib_set_double_internal(a->parent->h,self->units_factor,1.0);
+            (grib_get_double_internal(gh,self->units_factor,&units_factor)== GRIB_SUCCESS)) {
+        grib_set_double_internal(gh,self->units_factor,1.0);
     }
 
     if(self->units_bias &&
-            (grib_get_double_internal(a->parent->h,self->units_bias,&units_bias)== GRIB_SUCCESS)) {
-        grib_set_double_internal(a->parent->h,self->units_bias,0.0);
+            (grib_get_double_internal(gh,self->units_bias,&units_bias)== GRIB_SUCCESS)) {
+        grib_set_double_internal(gh,self->units_bias,0.0);
     }
 
     if(n_vals==0){
@@ -347,15 +352,15 @@ static int  _unpack_double(grib_accessor* a, double* val, size_t *len,unsigned c
 
     self->dirty=0;
 
-    if((err = grib_get_double_internal(a->parent->h,self->reference_value, &reference_value)) !=
+    if((err = grib_get_double_internal(gh,self->reference_value, &reference_value)) !=
             GRIB_SUCCESS)
         return err;
 
-    if((err = grib_get_long_internal(a->parent->h,self->binary_scale_factor, &binary_scale_factor))
+    if((err = grib_get_long_internal(gh,self->binary_scale_factor, &binary_scale_factor))
             != GRIB_SUCCESS)
         return err;
 
-    if((err = grib_get_long_internal(a->parent->h,self->decimal_scale_factor, &decimal_scale_factor))
+    if((err = grib_get_long_internal(gh,self->decimal_scale_factor, &decimal_scale_factor))
             != GRIB_SUCCESS)
         return err;
 
@@ -372,17 +377,16 @@ static int  _unpack_double(grib_accessor* a, double* val, size_t *len,unsigned c
     s = grib_power(binary_scale_factor,2);
     d = grib_power(-decimal_scale_factor,10) ;
 
-    grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG,
-            "grib_accessor_data_simple_packing : unpack_double : creating %s, %d values",
+    grib_context_log(a->context, GRIB_LOG_DEBUG,
+            "grib_accessor_data_simple_packing: unpack_double : creating %s, %d values",
             a->name, n_vals);
 
     buf += grib_byte_offset(a);
 
-    Assert(((bits_per_value*n_vals)/8) < (1<<29));
-    /*ensure that the bit pointer is not overflown*/
+    /*Assert(((bits_per_value*n_vals)/8) < (1<<29));*/    /* See GRIB-787 */
 
-    grib_context_log(a->parent->h->context, GRIB_LOG_DEBUG,
-            "unpack_double : calling outline function : bpv %d, rv : %g, sf : %d, dsf : %d ",
+    grib_context_log(a->context, GRIB_LOG_DEBUG,
+            "unpack_double: calling outline function : bpv %d, rv : %g, sf : %d, dsf : %d ",
             bits_per_value,reference_value,binary_scale_factor, decimal_scale_factor);
     grib_decode_double_array(buf,&pos,bits_per_value,reference_value,s,d,n_vals,val);
 
@@ -399,17 +403,17 @@ static int  _unpack_double(grib_accessor* a, double* val, size_t *len,unsigned c
     return err;
 }
 
-static int  unpack_double_subarray(grib_accessor* a, double* val, size_t start, size_t len)
+static int unpack_double_subarray(grib_accessor* a, double* val, size_t start, size_t len)
 {
     grib_accessor_data_simple_packing* self =  (grib_accessor_data_simple_packing*)a;
-    unsigned char* buf = (unsigned char*)a->parent->h->buffer->data;
+    unsigned char* buf = (unsigned char*)grib_handle_of_accessor(a)->buffer->data;
     size_t nvals = len;
     size_t *plen=&len;
     long bits_per_value=0;
     long pos;
     int err;
 
-    if((err = grib_get_long_internal(a->parent->h,self->bits_per_value,&bits_per_value)) !=
+    if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->bits_per_value,&bits_per_value)) !=
             GRIB_SUCCESS)
         return err;
 
@@ -418,8 +422,9 @@ static int  unpack_double_subarray(grib_accessor* a, double* val, size_t start,
     return _unpack_double(a,val,plen,buf,pos,nvals);
 }
 
-static int  unpack_double(grib_accessor* a, double* val, size_t *len) {
-    unsigned char* buf = (unsigned char*)a->parent->h->buffer->data;
+static int unpack_double(grib_accessor* a, double* val, size_t *len)
+{
+    unsigned char* buf = (unsigned char*)grib_handle_of_accessor(a)->buffer->data;
     size_t nvals=0;
     long pos=0;
     int err=0;
@@ -438,9 +443,31 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len) {
 #undef restrict
 #endif
 
+/* Return true(1) if large constant fields are to be created, otherwise false(0) */
+static int producing_large_constant_fields(const grib_context* c, grib_handle* h, int edition)
+{
+    /* GRIB-802: If override key is set, ignore env. var and produce compressed fields */
+    if (c->large_constant_fields) {  /* This is set by the environment variable */
+        /* check the override key */
+        int err = 0;
+        long override_large_constant_fields = 0;
+        err = grib_get_long_internal(h, "override_large_constant_fields", &override_large_constant_fields);
+        if (err == GRIB_SUCCESS && override_large_constant_fields) {
+            return 0;
+        }
+        return 1;
+    }
+    if (c->gribex_mode_on==1 && edition==1) {
+        return 1;
+    }
+
+    return 0;
+}
+
 static int pack_double(grib_accessor* a, const double* val, size_t *len)
 {
     grib_accessor_data_simple_packing* self =  (grib_accessor_data_simple_packing*)a;
+    grib_handle* gh = grib_handle_of_accessor(a);
 
     size_t i = 0;
     size_t n_vals = *len;
@@ -460,7 +487,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     double range=0;
     double minrange=0,maxrange=0;
     long changing_precision=0;
-    grib_context* c=a->parent->h->context;
+    grib_context* c=a->context;
 
     decimal_scale_factor=0;
 
@@ -468,13 +495,13 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
         return GRIB_NO_VALUES;
     }
 
-    if((err = grib_get_long_internal(a->parent->h,self->bits_per_value,&bits_per_value)) !=
+    if((err = grib_get_long_internal(gh,self->bits_per_value,&bits_per_value)) !=
             GRIB_SUCCESS)
         return err;
 
     if(*len == 0) return GRIB_SUCCESS;
 
-    if((err = grib_get_long_internal(a->parent->h,self->decimal_scale_factor, &decimal_scale_factor_get))
+    if((err = grib_get_long_internal(gh,self->decimal_scale_factor, &decimal_scale_factor_get))
             != GRIB_SUCCESS)
         return err;
     /*/
@@ -500,36 +527,38 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
     /* constant field only reference_value is set and bits_per_value=0 */
     if(max==min) {
-        if (grib_get_nearest_smaller_value(a->parent->h,self->reference_value,val[0],&reference_value)
+        int large_constant_fields = 0;
+        if (grib_get_nearest_smaller_value(gh,self->reference_value,val[0],&reference_value)
                 !=GRIB_SUCCESS) {
-            grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+            grib_context_log(a->context,GRIB_LOG_ERROR,
                     "unable to find nearest_smaller_value of %g for %s",min,self->reference_value);
             return GRIB_INTERNAL_ERROR;
         }
-        if((err = grib_set_double_internal(a->parent->h,self->reference_value, reference_value)) !=
+        if((err = grib_set_double_internal(gh,self->reference_value, reference_value)) !=
                 GRIB_SUCCESS)
             return err;
 
         {
             /* Make sure we can decode it again */
             double ref = 1e-100;
-            grib_get_double_internal(a->parent->h,self->reference_value,&ref);
+            grib_get_double_internal(gh,self->reference_value,&ref);
             if (ref != reference_value)
                 printf("%.20e  !=  %.20e",ref,reference_value);
             Assert(ref == reference_value);
         }
 
-        if (c->large_constant_fields || (c->gribex_mode_on==1 && self->edition==1)) {
-            if((err = grib_set_long_internal(a->parent->h,self->binary_scale_factor, 0)) !=
+        large_constant_fields = producing_large_constant_fields(c, gh, self->edition);
+        if (large_constant_fields) {
+            if((err = grib_set_long_internal(gh,self->binary_scale_factor, 0)) !=
                     GRIB_SUCCESS)
                 return err;
 
-            if((err = grib_set_long_internal(a->parent->h,self->decimal_scale_factor, 0)) !=
+            if((err = grib_set_long_internal(gh,self->decimal_scale_factor, 0)) !=
                     GRIB_SUCCESS)
                 return err;
 
             if (bits_per_value==0) {
-                if((err = grib_set_long_internal(a->parent->h,self->bits_per_value, 16)) !=
+                if((err = grib_set_long_internal(gh,self->bits_per_value, 16)) !=
                         GRIB_SUCCESS)
                     return err;
             }
@@ -537,7 +566,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
             return GRIB_SUCCESS;
         } else {
             bits_per_value=0;
-            if((err = grib_set_long_internal(a->parent->h,self->bits_per_value, bits_per_value)) !=
+            if((err = grib_set_long_internal(gh,self->bits_per_value, bits_per_value)) !=
                     GRIB_SUCCESS)
                 return err;
 
@@ -545,33 +574,33 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
         }
     }
 
-    if((err = grib_get_long_internal(a->parent->h,self->binary_scale_factor, &binary_scale_factor))
+    if((err = grib_get_long_internal(gh,self->binary_scale_factor, &binary_scale_factor))
             != GRIB_SUCCESS)
         return err;
 
-    if((err = grib_get_long_internal(a->parent->h,self->changing_precision, &changing_precision))
+    if((err = grib_get_long_internal(gh,self->changing_precision, &changing_precision))
             != GRIB_SUCCESS)
         return err;
 
     /* the packing parameters are not properly defined
-  this is a safe way of fixing the problem */
+       this is a safe way of fixing the problem */
     if ( changing_precision==0 && bits_per_value==0  && decimal_scale_factor_get==0) {
 
-        grib_context_log(a->parent->h->context,GRIB_LOG_WARNING,
+        grib_context_log(a->context,GRIB_LOG_WARNING,
                 "%s==0 and %s==0 (setting %s=24)",
                 self->bits_per_value,
                 self->decimal_scale_factor,
                 self->bits_per_value);
 
         bits_per_value=24;
-        if((err = grib_set_long_internal(a->parent->h,self->bits_per_value,
+        if((err = grib_set_long_internal(gh,self->bits_per_value,
                 bits_per_value))!= GRIB_SUCCESS)
             return err;
     }
 
     if ( bits_per_value == 0 || (binary_scale_factor==0 && decimal_scale_factor_get!=0) ) {
         /* decimal_scale_factor is given, binary_scale_factor=0
-       and bits_per_value is computed */
+           and bits_per_value is computed */
         binary_scale_factor=0;
         decimal_scale_factor=decimal_scale_factor_get;
         decimal = grib_power(decimal_scale_factor,10) ;
@@ -582,18 +611,18 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
         /* See GRIB-540 for why we use ceil */
         err = number_of_bits( (unsigned long)ceil(fabs(max-min)), &bits_per_value );
         if (err) {
-            grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+            grib_context_log(a->context,GRIB_LOG_ERROR,
                     "Range of values too large. Try a smaller value for decimal precision (less than %d)",
                     decimal_scale_factor);
             return err;
         }
         /*printf("bits_per_value=%ld\n",bits_per_value);*/
-        if((err = grib_set_long_internal(a->parent->h,self->bits_per_value, bits_per_value)) !=
+        if((err = grib_set_long_internal(gh,self->bits_per_value, bits_per_value)) !=
                 GRIB_SUCCESS)
             return err;
-        if (grib_get_nearest_smaller_value(a->parent->h,self->reference_value,min,&reference_value)
+        if (grib_get_nearest_smaller_value(gh,self->reference_value,min,&reference_value)
                 !=GRIB_SUCCESS) {
-            grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+            grib_context_log(a->context,GRIB_LOG_ERROR,
                     "unable to find nearest_smaller_value of %g for %s",min,self->reference_value);
             return GRIB_INTERNAL_ERROR;
         }
@@ -602,20 +631,20 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
         last=127;
         if (c->gribex_mode_on && self->edition==1) last=99;
         /* bits_per_value is given and decimal_scale_factor
-       and binary_scale_factor are calcualated
+           and binary_scale_factor are calcualated
          */
         if (max == min) {
             binary_scale_factor=0;
             /* divisor=1; */
-            if (grib_get_nearest_smaller_value(a->parent->h,self->reference_value,min,&reference_value)
+            if (grib_get_nearest_smaller_value(gh,self->reference_value,min,&reference_value)
                     !=GRIB_SUCCESS) {
-                grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+                grib_context_log(a->context,GRIB_LOG_ERROR,
                         "unable to find nearest_smaller_value of %g for %s",min,self->reference_value);
                 return GRIB_INTERNAL_ERROR;
             }
         } else {
             /* printf("max=%g reference_value=%g grib_power(-last,2)=%g decimal_scale_factor=%ld bits_per_value=%ld\n",
-            max,reference_value,grib_power(-last,2),decimal_scale_factor,bits_per_value);*/
+               max,reference_value,grib_power(-last,2),decimal_scale_factor,bits_per_value);*/
             /* last must be a parameter coming from the def file*/
             range=(max-min);
             unscaled_min=min;
@@ -639,9 +668,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
                 range=(max-min);
             }
 
-            if (grib_get_nearest_smaller_value(a->parent->h,self->reference_value,
+            if (grib_get_nearest_smaller_value(gh,self->reference_value,
                     min,&reference_value)!=GRIB_SUCCESS) {
-                grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+                grib_context_log(a->context,GRIB_LOG_ERROR,
                         "unable to find nearest_smaller_value of %g for %s",min,self->reference_value);
                 return GRIB_INTERNAL_ERROR;
             }
@@ -650,17 +679,17 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
         }
     }
 
-    if((err = grib_set_double_internal(a->parent->h,self->reference_value, reference_value)) !=
+    if((err = grib_set_double_internal(gh,self->reference_value, reference_value)) !=
             GRIB_SUCCESS)
         return err;
 
-    if((err = grib_set_long_internal(a->parent->h,self->changing_precision, 0)) !=
+    if((err = grib_set_long_internal(gh,self->changing_precision, 0)) !=
             GRIB_SUCCESS)
         return err;
-    if((err = grib_set_long_internal(a->parent->h,self->binary_scale_factor, binary_scale_factor)) !=
+    if((err = grib_set_long_internal(gh,self->binary_scale_factor, binary_scale_factor)) !=
             GRIB_SUCCESS)
         return err;
-    if((err = grib_set_long_internal(a->parent->h,self->decimal_scale_factor, decimal_scale_factor))
+    if((err = grib_set_long_internal(gh,self->decimal_scale_factor, decimal_scale_factor))
             != GRIB_SUCCESS)
         return err;
 
diff --git a/src/grib_accessor_class_decimal_precision.c b/src/grib_accessor_class_decimal_precision.c
index 0824c5b..e64e20c 100644
--- a/src/grib_accessor_class_decimal_precision.c
+++ b/src/grib_accessor_class_decimal_precision.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -96,6 +96,7 @@ static grib_accessor_class _grib_accessor_class_decimal_precision = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -133,101 +134,100 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
 
 static void init(grib_accessor* a,const long l, grib_arguments* args)
 {
-  int n=0;
-  grib_accessor_decimal_precision* self= (grib_accessor_decimal_precision*)a;
-  
-  self->bits_per_value=grib_arguments_get_name(a->parent->h,args,n++);
-  self->decimal_scale_factor=grib_arguments_get_name(a->parent->h,args,n++);
-  self->changing_precision=grib_arguments_get_name(a->parent->h,args,n++);
-  self->values=grib_arguments_get_name(a->parent->h,args,n++);
-  
-  a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
-  a->length=0;
+    int n=0;
+    grib_accessor_decimal_precision* self= (grib_accessor_decimal_precision*)a;
+
+    self->bits_per_value=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+    self->decimal_scale_factor=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+    self->changing_precision=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+    self->values=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+
+    a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
+    a->length=0;
 }
 
 static int  unpack_long(grib_accessor* a, long* val, size_t *len)
 {
-  int ret=0;
-  grib_accessor_decimal_precision* self= (grib_accessor_decimal_precision*)a;
-  grib_handle* h=a->parent->h;
+    int ret=0;
+    grib_accessor_decimal_precision* self= (grib_accessor_decimal_precision*)a;
+    grib_handle* h=grib_handle_of_accessor(a);
 
-  if((ret = grib_get_long_internal(h,self->decimal_scale_factor,val))
-       != GRIB_SUCCESS) return ret;
+    if((ret = grib_get_long_internal(h,self->decimal_scale_factor,val))
+            != GRIB_SUCCESS) return ret;
 
-  *len =1;
-  return ret;
+    *len =1;
+    return ret;
 }
 
 static int pack_long(grib_accessor* a, const long* val, size_t *len)
 {
-  long bitsPerValue=0;
-  double* values=NULL;
-  size_t size=0;
-  int ret=0;
-  grib_accessor_decimal_precision* self= (grib_accessor_decimal_precision*)a;
-  grib_context* c=a->parent->h->context;
-  grib_handle* h=a->parent->h;
-
-  if (!self->values) {
-    if((ret = grib_set_long_internal(h, self->bits_per_value,0))
-        != GRIB_SUCCESS) return ret;
-        
-    if((ret = grib_set_long_internal(h, self->decimal_scale_factor,*val))
-        != GRIB_SUCCESS) return ret;
-
-    if((ret = grib_set_long_internal(h, self->changing_precision,1))
-        != GRIB_SUCCESS) {
-      grib_context_free(c,values);
-      return ret;
+    long bitsPerValue=0;
+    double* values=NULL;
+    size_t size=0;
+    int ret=0;
+    grib_accessor_decimal_precision* self= (grib_accessor_decimal_precision*)a;
+    grib_context* c=a->context;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    if (!self->values) {
+        if((ret = grib_set_long_internal(h, self->bits_per_value,0))
+                != GRIB_SUCCESS) return ret;
+
+        if((ret = grib_set_long_internal(h, self->decimal_scale_factor,*val))
+                != GRIB_SUCCESS) return ret;
+
+        if((ret = grib_set_long_internal(h, self->changing_precision,1))
+                != GRIB_SUCCESS) {
+            grib_context_free(c,values);
+            return ret;
         }
 
-    return GRIB_SUCCESS;
-  }
+        return GRIB_SUCCESS;
+    }
 
-  if ( (ret=grib_get_size(h,self->values,&size)) != GRIB_SUCCESS) return ret;
+    if ( (ret=grib_get_size(h,self->values,&size)) != GRIB_SUCCESS) return ret;
 
-  values=(double*)grib_context_malloc(c,size*sizeof(double));
-  if (!values) return GRIB_OUT_OF_MEMORY;
+    values=(double*)grib_context_malloc(c,size*sizeof(double));
+    if (!values) return GRIB_OUT_OF_MEMORY;
 
-  if((ret = grib_get_double_array_internal(h,self->values,values,&size))
-       != GRIB_SUCCESS) {
+    if((ret = grib_get_double_array_internal(h,self->values,values,&size))
+            != GRIB_SUCCESS) {
         grib_context_buffer_free(c,values);
         return ret;
-  }
+    }
 
-  if((ret = grib_set_long_internal(h, self->decimal_scale_factor,*val))
-      != GRIB_SUCCESS) { 
+    if((ret = grib_set_long_internal(h, self->decimal_scale_factor,*val))
+            != GRIB_SUCCESS) {
         grib_context_buffer_free(c,values);
-	  return ret;
-	  }
+        return ret;
+    }
 
-  if((ret = grib_set_long_internal(h, self->bits_per_value,bitsPerValue))
-      != GRIB_SUCCESS) {
+    if((ret = grib_set_long_internal(h, self->bits_per_value,bitsPerValue))
+            != GRIB_SUCCESS) {
         grib_context_free(c,values);
-	  return ret;
-	 }
+        return ret;
+    }
 
-     if((ret = grib_set_long_internal(h, self->changing_precision,1))
-         != GRIB_SUCCESS) {
-       grib_context_free(c,values);
-       return ret;
-         }
+    if((ret = grib_set_long_internal(h, self->changing_precision,1))
+            != GRIB_SUCCESS) {
+        grib_context_free(c,values);
+        return ret;
+    }
 
-  if((ret = grib_set_double_array_internal(h, self->values,values,size))
-      != GRIB_SUCCESS) {
+    if((ret = grib_set_double_array_internal(h, self->values,values,size))
+            != GRIB_SUCCESS) {
         grib_context_buffer_free(c,values);
-	  return ret;
-	 }
+        return ret;
+    }
 
-  grib_context_free(c,values);
+    grib_context_free(c,values);
 
-  return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
-
-
diff --git a/src/grib_accessor_class_dictionary.c b/src/grib_accessor_class_dictionary.c
index 59dba8b..e7d109d 100644
--- a/src/grib_accessor_class_dictionary.c
+++ b/src/grib_accessor_class_dictionary.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -104,6 +104,7 @@ static grib_accessor_class _grib_accessor_class_dictionary = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -137,27 +138,29 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
 
-static void init(grib_accessor* a, const long len, grib_arguments* params) {
-  int n=0;
-  grib_accessor_dictionary* self  = (grib_accessor_dictionary*)a;
+static void init(grib_accessor* a, const long len, grib_arguments* params)
+{
+    int n=0;
+    grib_accessor_dictionary* self  = (grib_accessor_dictionary*)a;
 
-  self->dictionary = grib_arguments_get_string(a->parent->h,params,n++);
-  self->key = grib_arguments_get_name(a->parent->h,params,n++);
-  self->column = grib_arguments_get_long(a->parent->h,params,n++);
-  self->masterDir = grib_arguments_get_name(a->parent->h,params,n++);
-  self->localDir = grib_arguments_get_name(a->parent->h,params,n++);
+    self->dictionary = grib_arguments_get_string(grib_handle_of_accessor(a),params,n++);
+    self->key = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->column = grib_arguments_get_long(grib_handle_of_accessor(a),params,n++);
+    self->masterDir = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+    self->localDir = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
 
-  a->length = 0;
-  a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
+    a->length = 0;
+    a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
 
 }
 
-static grib_trie* load_dictionary(grib_context* c,grib_accessor* a, int* err) {
-
+static grib_trie* load_dictionary(grib_context* c,grib_accessor* a, int* err)
+{
     grib_accessor_dictionary* self = (grib_accessor_dictionary*)a;
 
     char* filename=NULL;
@@ -176,7 +179,7 @@ static grib_trie* load_dictionary(grib_context* c,grib_accessor* a, int* err) {
     grib_trie* dictionary=NULL;
     FILE* f=NULL;
     int i=0;
-    grib_handle* h=a->parent->h;
+    grib_handle* h=grib_handle_of_accessor(a);
 
     *err=GRIB_SUCCESS;
 
@@ -259,20 +262,19 @@ static grib_trie* load_dictionary(grib_context* c,grib_accessor* a, int* err) {
     return dictionary;
 }
 
-
 static void dump(grib_accessor* a, grib_dumper* dumper)
 {
-  switch (get_native_type(a)) {
+    switch (get_native_type(a)) {
     case GRIB_TYPE_STRING:
-      grib_dump_string(dumper,a,NULL);
-      break;
+        grib_dump_string(dumper,a,NULL);
+        break;
     case GRIB_TYPE_LONG:
-      grib_dump_long(dumper,a,NULL);
-      break;
+        grib_dump_long(dumper,a,NULL);
+        break;
     case GRIB_TYPE_DOUBLE:
-      grib_dump_double(dumper,a,NULL);
-      break;
-  }
+        grib_dump_double(dumper,a,NULL);
+        break;
+    }
 }
 
 static int unpack_string (grib_accessor* a, char* buffer, size_t *len)
@@ -287,17 +289,17 @@ static int unpack_string (grib_accessor* a, char* buffer, size_t *len)
     size_t rsize=0;
     int i=0;
 
-    grib_trie* dictionary=load_dictionary(a->parent->h->context,a,&err);
+    grib_trie* dictionary=load_dictionary(a->context,a,&err);
     if (err) return err;
 
-    if((err=grib_get_string_internal(a->parent->h,self->key,key,&size)) != GRIB_SUCCESS) {
-        grib_trie_delete(dictionary);
+    if((err=grib_get_string_internal(grib_handle_of_accessor(a),self->key,key,&size)) != GRIB_SUCCESS) {
+        /* grib_trie_delete(dictionary); */
         return err;
     }
 
     list=(char*)grib_trie_get(dictionary,key);
     if (!list) {
-        grib_trie_delete(dictionary);
+        /* grib_trie_delete(dictionary); */
         return GRIB_NOT_FOUND;
     }
 
@@ -305,12 +307,15 @@ static int unpack_string (grib_accessor* a, char* buffer, size_t *len)
     for (i=0;i<=self->column;i++) {
         start=end;
         while (*end != '|' && *end!=0) end++;
+        if (! *end ) {
+            break;
+        }
         end++;
     }
     end--;
     rsize=end-start;
     if (*len < rsize) {
-        grib_trie_delete(dictionary);
+        /* grib_trie_delete(dictionary); */
         return GRIB_ARRAY_TOO_SMALL;
     }
 
@@ -318,7 +323,7 @@ static int unpack_string (grib_accessor* a, char* buffer, size_t *len)
     memcpy(buffer,start,rsize);
     buffer[rsize]=0;
 
-    grib_trie_delete(dictionary);
+    /* grib_trie_delete(dictionary); */
 
     return err;
 }
@@ -329,16 +334,17 @@ static int value_count(grib_accessor* a,long* count)
     return 0;
 }
 
-static int  get_native_type(grib_accessor* a){
-  int type=GRIB_TYPE_DOUBLE;
-  if (a->flags & GRIB_ACCESSOR_FLAG_LONG_TYPE)
-    type=GRIB_TYPE_LONG;
-  if (a->flags & GRIB_ACCESSOR_FLAG_STRING_TYPE)
-    type=GRIB_TYPE_STRING;
-  return type;
+static int get_native_type(grib_accessor* a)
+{
+    int type=GRIB_TYPE_DOUBLE;
+    if (a->flags & GRIB_ACCESSOR_FLAG_LONG_TYPE)
+        type=GRIB_TYPE_LONG;
+    if (a->flags & GRIB_ACCESSOR_FLAG_STRING_TYPE)
+        type=GRIB_TYPE_STRING;
+    return type;
 }
 
-static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
+static int unpack_long   (grib_accessor* a, long* val, size_t *len)
 {
     int err=0;
     char buffer[1024]={0,};
@@ -353,7 +359,7 @@ static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
     return err;
 }
 
-static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
+static int unpack_double   (grib_accessor* a, double* val, size_t *len)
 {
     int err=0;
     char buffer[1024]={0,};
@@ -367,5 +373,3 @@ static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
 
     return err;
 }
-
-
diff --git a/src/grib_accessor_class_dirty.c b/src/grib_accessor_class_dirty.c
index 492bd2a..68b68c7 100644
--- a/src/grib_accessor_class_dirty.c
+++ b/src/grib_accessor_class_dirty.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -91,6 +91,7 @@ static grib_accessor_class _grib_accessor_class_dirty = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -128,38 +129,38 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
 
 static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
-  grib_accessor_dirty* self = (grib_accessor_dirty*)a;
-  self->accessor = grib_arguments_get_name(a->parent->h,c,0);
-  a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
-   a->flags |= GRIB_ACCESSOR_FLAG_HIDDEN;
-  a->length=0;
+    grib_accessor_dirty* self = (grib_accessor_dirty*)a;
+    self->accessor = grib_arguments_get_name(grib_handle_of_accessor(a),c,0);
+    a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
+    a->flags |= GRIB_ACCESSOR_FLAG_HIDDEN;
+    a->length=0;
 }
 
-static int    pack_long   (grib_accessor* a, const long* val, size_t *len)
+static int pack_long   (grib_accessor* a, const long* val, size_t *len)
 {
-  grib_accessor_dirty* self = (grib_accessor_dirty*)a;
-  grib_accessor* x=grib_find_accessor(a->parent->h,self->accessor);
+    grib_accessor_dirty* self = (grib_accessor_dirty*)a;
+    grib_accessor* x=grib_find_accessor(grib_handle_of_accessor(a),self->accessor);
 
-  if (x) x->dirty=*val;
+    if (x) x->dirty=*val;
 
-  return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
 
-static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
+static int unpack_long   (grib_accessor* a, long* val, size_t *len)
 {
-  grib_accessor_dirty* self = (grib_accessor_dirty*)a;
-  grib_accessor* x=grib_find_accessor(a->parent->h,self->accessor);
+    grib_accessor_dirty* self = (grib_accessor_dirty*)a;
+    grib_accessor* x=grib_find_accessor(grib_handle_of_accessor(a),self->accessor);
 
-  if (x) x->dirty=1;
+    if (x) x->dirty=1;
 
-  *val=1;
+    *val=1;
 
-  return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
-
diff --git a/src/grib_accessor_class_divdouble.c b/src/grib_accessor_class_divdouble.c
index e94785d..1a69189 100644
--- a/src/grib_accessor_class_divdouble.c
+++ b/src/grib_accessor_class_divdouble.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -92,6 +92,7 @@ static grib_accessor_class _grib_accessor_class_divdouble = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -130,6 +131,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -139,8 +141,8 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 	grib_accessor_divdouble* self = (grib_accessor_divdouble*)a; 
 	int n = 0;
 
-	self->val = grib_arguments_get_name(a->parent->h,c,n++);
-	self->divisor = grib_arguments_get_double(a->parent->h,c,n++);
+	self->val = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+	self->divisor = grib_arguments_get_double(grib_handle_of_accessor(a),c,n++);
 }
 
 static int unpack_double   (grib_accessor* a, double* val, size_t *len)
@@ -157,7 +159,7 @@ static int unpack_double   (grib_accessor* a, double* val, size_t *len)
 	}
 
 
-	ret = grib_get_long_internal(a->parent->h, self->val, &ivalue);
+	ret = grib_get_long_internal(grib_handle_of_accessor(a), self->val, &ivalue);
 
 	value = ivalue;
 
diff --git a/src/grib_accessor_class_double.c b/src/grib_accessor_class_double.c
index b7e44fd..cdc80ae 100644
--- a/src/grib_accessor_class_double.c
+++ b/src/grib_accessor_class_double.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -92,6 +92,7 @@ static grib_accessor_class _grib_accessor_class_double = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -126,6 +127,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -153,12 +155,12 @@ static int unpack_string(grib_accessor*a , char*  v, size_t *len){
   l = strlen(repres)+1;
 
   if(l >*len ){
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "grib_accessor_long : unpack_string : Buffer too small for %s ", a->name );
+    grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_long : unpack_string : Buffer too small for %s ", a->name );
 
     *len = l;
     return GRIB_BUFFER_TOO_SMALL;
   }
-  grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG, "grib_accessor_long: Casting double %s to string  ", a->name);
+  grib_context_log(a->context,GRIB_LOG_DEBUG, "grib_accessor_long: Casting double %s to string  ", a->name);
 
   *len = l;
 
@@ -192,8 +194,8 @@ static int compare(grib_accessor* a, grib_accessor* b) {
 
   if (alen != blen) return GRIB_COUNT_MISMATCH;
 
-  aval=(double*)grib_context_malloc(a->parent->h->context,alen*sizeof(double));
-  bval=(double*)grib_context_malloc(b->parent->h->context,blen*sizeof(double));
+  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);
@@ -204,8 +206,8 @@ static int compare(grib_accessor* a, grib_accessor* b) {
     alen--;
   }
 
-  grib_context_free(a->parent->h->context,aval);
-  grib_context_free(b->parent->h->context,bval);
+  grib_context_free(a->context,aval);
+  grib_context_free(b->context,bval);
 
   return retval;
 
diff --git a/src/grib_accessor_class_element.c b/src/grib_accessor_class_element.c
index 3abd3b0..8af1a79 100644
--- a/src/grib_accessor_class_element.c
+++ b/src/grib_accessor_class_element.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -94,6 +94,7 @@ static grib_accessor_class _grib_accessor_class_element = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -131,6 +132,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -140,8 +142,8 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
   grib_accessor_element* self = (grib_accessor_element*)a;
   int n = 0;
 
-  self->array = grib_arguments_get_name(a->parent->h,c,n++);
-  self->element    = grib_arguments_get_long(a->parent->h,c,n++);
+  self->array = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->element    = grib_arguments_get_long(grib_handle_of_accessor(a),c,n++);
 
 }
 
@@ -151,14 +153,14 @@ static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
   int ret = 0;
   size_t size=0;
   long* ar=NULL;
-  grib_context* c=a->parent->h->context;
+  grib_context* c=a->context;
 
   if(*len < 1){
     ret = GRIB_ARRAY_TOO_SMALL;
     return ret;
   }
 
-  if((ret = grib_get_size(a->parent->h, self->array,&size)) != GRIB_SUCCESS)
+  if((ret = grib_get_size(grib_handle_of_accessor(a), self->array,&size)) != GRIB_SUCCESS)
     return ret;
 
   ar=(long*)grib_context_malloc_clear(c,size*sizeof(long));
@@ -167,7 +169,7 @@ static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
     return GRIB_OUT_OF_MEMORY;
   }
   
-  if((ret = grib_get_long_array_internal(a->parent->h, self->array,ar,&size)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_array_internal(grib_handle_of_accessor(a), self->array,ar,&size)) != GRIB_SUCCESS)
     return ret;
 
   if (self->element>=size) return GRIB_INTERNAL_ERROR;
@@ -184,14 +186,14 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
   int ret = 0;
   size_t size=0;
   long* ar=NULL;
-  grib_context* c=a->parent->h->context;
+  grib_context* c=a->context;
 
   if(*len < 1){
     ret = GRIB_ARRAY_TOO_SMALL;
     return ret;
   }
 
-  if((ret = grib_get_size(a->parent->h, self->array,&size)) != GRIB_SUCCESS)
+  if((ret = grib_get_size(grib_handle_of_accessor(a), self->array,&size)) != GRIB_SUCCESS)
     return ret;
 
   ar=(long*)grib_context_malloc_clear(c,size*sizeof(long));
@@ -200,13 +202,13 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
     return GRIB_OUT_OF_MEMORY;
   }
   
-  if((ret = grib_get_long_array_internal(a->parent->h, self->array,ar,&size)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_array_internal(grib_handle_of_accessor(a), self->array,ar,&size)) != GRIB_SUCCESS)
     return ret;
 
   
   ar[self->element]=*val;
 
-  if((ret = grib_set_long_array_internal(a->parent->h, self->array,ar,size)) != GRIB_SUCCESS)
+  if((ret = grib_set_long_array_internal(grib_handle_of_accessor(a), self->array,ar,size)) != GRIB_SUCCESS)
     return ret;
 
   grib_context_free(c,ar);
diff --git a/src/grib_accessor_class_evaluate.c b/src/grib_accessor_class_evaluate.c
index 9b74df7..fcdb5d4 100644
--- a/src/grib_accessor_class_evaluate.c
+++ b/src/grib_accessor_class_evaluate.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -87,6 +87,7 @@ static grib_accessor_class _grib_accessor_class_evaluate = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -124,6 +125,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -146,10 +148,10 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
   int ret=0;
   grib_accessor_evaluate* self = (grib_accessor_evaluate*)a;
-  grib_expression* e = grib_arguments_get_expression(a->parent->h,self->arg,0);
+  grib_expression* e = grib_arguments_get_expression(grib_handle_of_accessor(a),self->arg,0);
 
 
-  ret = grib_expression_evaluate_long(a->parent->h,e,val);
+  ret = grib_expression_evaluate_long(grib_handle_of_accessor(a),e,val);
   *len = 1;
 
   return ret;
diff --git a/src/grib_accessor_class_expanded_descriptors.c b/src/grib_accessor_class_expanded_descriptors.c
index b409c65..8ac8628 100644
--- a/src/grib_accessor_class_expanded_descriptors.c
+++ b/src/grib_accessor_class_expanded_descriptors.c
@@ -1,5 +1,5 @@
 /*
-* Copyright 2005-2015 ECMWF.
+* Copyright 2005-2016 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.
@@ -9,10 +9,10 @@
 */
 
 /* Sequences and replication (not delayed) are resolved in this class.
-Number of elements to which a delayed replication applies are recomputed to
-take account of the expansion. 
-expanded descriptors cannot contain sequences and only delayed replication
-can appear
+   Number of elements to which a delayed replication applies are recomputed to
+   take account of the expansion.
+   Expanded descriptors cannot contain sequences and only delayed replication
+   can appear
 */
 
 #include "grib_api_internal.h"
@@ -33,7 +33,7 @@ MEMBERS    = const char* tablesAccessorName
 MEMBERS    = bufr_descriptors_array* expanded
 MEMBERS    = int rank
 MEMBERS    = grib_accessor* expandedAccessor
-MEMBERS    = int dirty
+MEMBERS    = int do_expand
 MEMBERS    = grib_accessor* tablesAccessor
 
 END_CLASS_DEF
@@ -72,7 +72,7 @@ typedef struct grib_accessor_expanded_descriptors {
 	bufr_descriptors_array* expanded;
 	int rank;
 	grib_accessor* expandedAccessor;
-	int dirty;
+	int do_expand;
 	grib_accessor* tablesAccessor;
 } grib_accessor_expanded_descriptors;
 
@@ -118,6 +118,7 @@ static grib_accessor_class _grib_accessor_class_expanded_descriptors = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -151,6 +152,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -158,287 +160,296 @@ static void init_class(grib_accessor_class* c)
 #define MYDEBUG 0
 
 typedef struct change_coding_params {
-	int associatedFieldWidth;
-	int localDescriptorWidth;
-	int extraWidth;
-	int extraScale;
-	double referenceFactor;
+    int associatedFieldWidth;
+    int localDescriptorWidth;
+    int extraWidth;
+    int extraScale;
+    int newStringWidth;
+    double referenceFactor;
 } change_coding_params ;
 
 static void init(grib_accessor* a, const long len , grib_arguments* args )
 {
-  grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a;
-  int n=0;
-  self->tablesAccessorName=grib_arguments_get_name(a->parent->h,args,n++);
-  self->expandedName=grib_arguments_get_name(a->parent->h,args,n++);
-  self->rank=grib_arguments_get_long(a->parent->h,args,n++);
-  if (self->rank!=0) {
-    self->expandedAccessor=grib_find_accessor(a->parent->h,self->expandedName);
-  } else {
-    self->expandedAccessor=0;
-  }
-  self->unexpandedDescriptors=grib_arguments_get_name(a->parent->h,args,n++);
-  self->sequence=grib_arguments_get_name(a->parent->h,args,n++);
-  self->dirty=1;
-  self->expanded=0;
-  a->length = 0;
+    grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a;
+    int n=0;
+    self->tablesAccessorName=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+    self->expandedName=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+    self->rank=grib_arguments_get_long(grib_handle_of_accessor(a),args,n++);
+    if (self->rank!=0) {
+        self->expandedAccessor=grib_find_accessor(grib_handle_of_accessor(a),self->expandedName);
+    } else {
+        self->expandedAccessor=0;
+    }
+    self->unexpandedDescriptors=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+    self->sequence=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+    self->do_expand=1;
+    self->expanded=0;
+    a->length = 0;
 }
 
 static void dump(grib_accessor* a, grib_dumper* dumper)
 {
-  grib_dump_long(dumper,a,NULL);
+    grib_dump_long(dumper,a,NULL);
 }
 
-static bufr_descriptors_array* _expand(grib_accessor* a,bufr_descriptors_array* unexpanded,change_coding_params* ccp,int *err);
+static bufr_descriptors_array* do_expand(grib_accessor* a,bufr_descriptors_array* unexpanded,change_coding_params* ccp,int *err);
 
 static int depth=-1;
 
-static size_t __expand(grib_accessor* a,bufr_descriptors_array* unexpanded,bufr_descriptors_array* expanded,
-                change_coding_params* ccp,int* err) {
-  int k,j,i;
-  grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a;
-  size_t size=0;
-  long* v=NULL;
-  bufr_descriptor* u=NULL;
-  bufr_descriptor* vv=NULL;
-  bufr_descriptor** ur=NULL;
-  bufr_descriptor* urc=NULL;
-  int idx;
-  bufr_descriptor* u0=NULL;
-  grib_context* c=a->parent->h->context;
-  bufr_descriptor* us=NULL;
-  bufr_descriptors_array* inner_expanded=NULL;
-  bufr_descriptors_array* inner_unexpanded=NULL;
+static size_t __expand(grib_accessor* a, bufr_descriptors_array* unexpanded, bufr_descriptors_array* expanded,
+        change_coding_params* ccp, int* err)
+{
+    int k,j,i;
+    grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a;
+    size_t size=0;
+    long* v=NULL;
+    bufr_descriptor* u=NULL;
+    bufr_descriptor* vv=NULL;
+    bufr_descriptor** ur=NULL;
+    bufr_descriptor* urc=NULL;
+    int idx;
+    bufr_descriptor* u0=NULL;
+    grib_context* c=a->context;
+    bufr_descriptor* us=NULL;
+    bufr_descriptors_array* inner_expanded=NULL;
+    bufr_descriptors_array* inner_unexpanded=NULL;
 #if MYDEBUG
-  int idepth;
+    int idepth;
 #endif
 
 
-  if (grib_bufr_descriptors_array_used_size(unexpanded)==0) return 0;
+    if (grib_bufr_descriptors_array_used_size(unexpanded)==0) return 0;
 
-  us=grib_bufr_descriptor_clone(grib_bufr_descriptors_array_get(unexpanded,0));
+    us=grib_bufr_descriptor_clone(grib_bufr_descriptors_array_get(unexpanded,0));
 
-  *err=0;
+    *err=0;
 #if MYDEBUG
-  for (idepth=0;idepth<depth;idepth++) printf("\t");
-  printf("expanding ==> %d-%02d-%03d\n",us->F,us->X,us->Y);
+    for (idepth=0;idepth<depth;idepth++) printf("\t");
+    printf("expanding ==> %d-%02d-%03d\n",us->F,us->X,us->Y);
 #endif
-  switch (us->F) {
+    switch (us->F) {
     case 3:
-      /* sequence */
-      u=grib_bufr_descriptors_array_pop_front(unexpanded);
+        /* sequence */
+        u=grib_bufr_descriptors_array_pop_front(unexpanded);
 #if MYDEBUG
-      for (idepth=0;idepth<depth;idepth++) printf("\t");
-      printf("+++ pop  %06ld\n",u->code);
+        for (idepth=0;idepth<depth;idepth++) printf("\t");
+        printf("+++ pop  %06ld\n",u->code);
 #endif
-      /*this is to get the sequence elements of the sequence unexpanded[i] */
-      *err=grib_set_long(a->parent->h,self->sequence,u->code);
-      *err=grib_get_size(a->parent->h,self->sequence,&size);
-      grib_bufr_descriptor_delete(u);
-      if (*err) return 0;
-      v=(long*)grib_context_malloc_clear(c,sizeof(long)*size);
-      *err=grib_get_long_array(a->parent->h,self->sequence,v,&size);
-      if (*err) return 0;
-      inner_unexpanded=grib_bufr_descriptors_array_new(c,100,100);
-      for (i=0;i<size;i++) {
-        vv=grib_bufr_descriptor_new(self->tablesAccessor,v[i],err);
-        inner_unexpanded=grib_bufr_descriptors_array_push(inner_unexpanded,vv);
-      }
-      grib_context_free(c,v);
-      inner_expanded=_expand(a,inner_unexpanded,ccp,err);
-      grib_bufr_descriptors_array_delete(inner_unexpanded);
+        /*this is to get the sequence elements of the sequence unexpanded[i] */
+        *err=grib_set_long(grib_handle_of_accessor(a),self->sequence,u->code);
+        *err=grib_get_size(grib_handle_of_accessor(a),self->sequence,&size);
+        grib_bufr_descriptor_delete(u);
+        if (*err) return 0;
+        v=(long*)grib_context_malloc_clear(c,sizeof(long)*size);
+        *err=grib_get_long_array(grib_handle_of_accessor(a),self->sequence,v,&size);
+        if (*err) return 0;
+        inner_unexpanded=grib_bufr_descriptors_array_new(c,100,100);
+        for (i=0;i<size;i++) {
+            vv=grib_bufr_descriptor_new(self->tablesAccessor,v[i],err);
+            inner_unexpanded=grib_bufr_descriptors_array_push(inner_unexpanded,vv);
+        }
+        grib_context_free(c,v);
+        inner_expanded=do_expand(a,inner_unexpanded,ccp,err);
+        grib_bufr_descriptors_array_delete(inner_unexpanded);
 #if MYDEBUG
-      for (i=0;i<inner_expanded->n;i++) {
-        for (idepth=0;idepth<depth;idepth++) printf("\t");
-        printf("+++ push %06ld\n",inner_expanded->v[i]->code);
-      }
+        for (i=0;i<inner_expanded->n;i++) {
+            for (idepth=0;idepth<depth;idepth++) printf("\t");
+            printf("+++ push %06ld\n",inner_expanded->v[i]->code);
+        }
 #endif
-      size=grib_bufr_descriptors_array_used_size(inner_expanded);
-      expanded=grib_bufr_descriptors_array_append(expanded,inner_expanded);
-      break;
+        size=grib_bufr_descriptors_array_used_size(inner_expanded);
+        expanded=grib_bufr_descriptors_array_append(expanded,inner_expanded);
+        break;
 
     case 1:
-      if (us->Y==0) {
-        /* delayed replication */
-        bufr_descriptor* uidx=0;
-        u=grib_bufr_descriptors_array_pop_front(unexpanded);
+        if (us->Y==0) {
+            /* delayed replication */
+            bufr_descriptor* uidx=0;
+            u=grib_bufr_descriptors_array_pop_front(unexpanded);
 #if MYDEBUG
-      for (idepth=0;idepth<depth;idepth++) printf("\t");
-      printf("+++ pop  %06ld\n",u->code);
-      for (idepth=0;idepth<depth;idepth++) printf("\t");
-      printf("+++ push %06ld\n",u->code);
+            for (idepth=0;idepth<depth;idepth++) printf("\t");
+            printf("+++ pop  %06ld\n",u->code);
+            for (idepth=0;idepth<depth;idepth++) printf("\t");
+            printf("+++ push %06ld\n",u->code);
 #endif
-        grib_bufr_descriptors_array_push(expanded,u);
-        idx=expanded->n-1;
-        size=0;
-        inner_unexpanded=grib_bufr_descriptors_array_new(c,100,100);
-        inner_expanded=grib_bufr_descriptors_array_new(c,100,100);
-        for (j=0;j<us->X+1;j++) {
-          u0=grib_bufr_descriptors_array_pop_front(unexpanded);
-          grib_bufr_descriptors_array_push(inner_unexpanded,u0);
+            grib_bufr_descriptors_array_push(expanded,u);
+            idx=expanded->n-1;
+            size=0;
+            inner_unexpanded=grib_bufr_descriptors_array_new(c,100,100);
+            inner_expanded=grib_bufr_descriptors_array_new(c,100,100);
+            for (j=0;j<us->X+1;j++) {
+                u0=grib_bufr_descriptors_array_pop_front(unexpanded);
+                grib_bufr_descriptors_array_push(inner_unexpanded,u0);
 #if MYDEBUG
-          for (idepth=0;idepth<depth;idepth++) printf("\t");
-          printf("+++ pop  %06ld\n",u0->code);
+                for (idepth=0;idepth<depth;idepth++) printf("\t");
+                printf("+++ pop  %06ld\n",u0->code);
 #endif
-        }
-        inner_expanded=_expand(a,inner_unexpanded,ccp,err);
-        size=grib_bufr_descriptors_array_used_size(inner_expanded);
+            }
+            inner_expanded=do_expand(a,inner_unexpanded,ccp,err);
+            size=grib_bufr_descriptors_array_used_size(inner_expanded);
 #if MYDEBUG
-        for (i=0;i<inner_expanded->n;i++) {
-          for (idepth=0;idepth<depth;idepth++) printf("\t");
-          printf("+++ push %06ld\n",inner_expanded->v[i]->code);
-        }
+            for (i=0;i<inner_expanded->n;i++) {
+                for (idepth=0;idepth<depth;idepth++) printf("\t");
+                printf("+++ push %06ld\n",inner_expanded->v[i]->code);
+            }
 #endif
-        expanded=grib_bufr_descriptors_array_append(expanded,inner_expanded);
-        uidx=grib_bufr_descriptors_array_get(expanded,idx);
-        grib_bufr_descriptor_set_code(0,(size-1)*1000+100000,uidx);
-        size++;
-      } else {
-        u=grib_bufr_descriptors_array_pop_front(unexpanded);
+            expanded=grib_bufr_descriptors_array_append(expanded,inner_expanded);
+            uidx=grib_bufr_descriptors_array_get(expanded,idx);
+            grib_bufr_descriptor_set_code(0,(size-1)*1000+100000,uidx);
+            size++;
+        } else {
+            u=grib_bufr_descriptors_array_pop_front(unexpanded);
 #if MYDEBUG
-        for (idepth=0;idepth<depth;idepth++) printf("\t");
-        printf("+++ pop  %06ld\n",u->code);
+            for (idepth=0;idepth<depth;idepth++) printf("\t");
+            printf("+++ pop  %06ld\n",u->code);
 #endif
-        grib_bufr_descriptor_delete(u);
-        size=us->X*us->Y;
-        ur=(bufr_descriptor**)grib_context_malloc_clear(c,us->X*sizeof(bufr_descriptor));
-        for (j=0;j<us->X;j++) {
-          ur[j]=grib_bufr_descriptors_array_pop_front(unexpanded);
+            grib_bufr_descriptor_delete(u);
+            size=us->X*us->Y;
+            ur=(bufr_descriptor**)grib_context_malloc_clear(c,us->X*sizeof(bufr_descriptor));
+            for (j=0;j<us->X;j++) {
+                ur[j]=grib_bufr_descriptors_array_pop_front(unexpanded);
 #if MYDEBUG
-          for (idepth=0;idepth<depth;idepth++) printf("\t");
-          printf("+++ pop  %06ld\n",ur[j]->code);
+                for (idepth=0;idepth<depth;idepth++) printf("\t");
+                printf("+++ pop  %06ld\n",ur[j]->code);
 #endif
-        }
-        inner_unexpanded=grib_bufr_descriptors_array_new(c,100,100);
-        for (j=0;j<us->X;j++) {
-           urc=grib_bufr_descriptor_clone(ur[j]);
-           grib_bufr_descriptors_array_push(inner_unexpanded,urc);
-        }
-        for (k=1;k<us->Y;k++) {
-              for (j=0;j<us->X;j++) {
-                  urc=grib_bufr_descriptor_clone(ur[j]);
-                  grib_bufr_descriptors_array_push(inner_unexpanded,urc);
-              }
-        }
-        for (i=0;i<us->X;i++) grib_bufr_descriptor_delete(ur[i]);
-        grib_context_free(c,ur);
-        inner_expanded=_expand(a,inner_unexpanded,ccp,err);
-        grib_bufr_descriptors_array_delete(inner_unexpanded);
+            }
+            inner_unexpanded=grib_bufr_descriptors_array_new(c,100,100);
+            for (j=0;j<us->X;j++) {
+                urc=grib_bufr_descriptor_clone(ur[j]);
+                grib_bufr_descriptors_array_push(inner_unexpanded,urc);
+            }
+            for (k=1;k<us->Y;k++) {
+                for (j=0;j<us->X;j++) {
+                    urc=grib_bufr_descriptor_clone(ur[j]);
+                    grib_bufr_descriptors_array_push(inner_unexpanded,urc);
+                }
+            }
+            for (i=0;i<us->X;i++) grib_bufr_descriptor_delete(ur[i]);
+            grib_context_free(c,ur);
+            inner_expanded=do_expand(a,inner_unexpanded,ccp,err);
+            grib_bufr_descriptors_array_delete(inner_unexpanded);
 #if MYDEBUG
-        for (i=0;i<inner_expanded->n;i++) {
-          for (idepth=0;idepth<depth;idepth++) printf("\t");
-          printf("+++ push %06ld\n",inner_expanded->v[i]->code);
-        }
+            for (i=0;i<inner_expanded->n;i++) {
+                for (idepth=0;idepth<depth;idepth++) printf("\t");
+                printf("+++ push %06ld\n",inner_expanded->v[i]->code);
+            }
 #endif
-        size=grib_bufr_descriptors_array_used_size(inner_expanded);
-        expanded=grib_bufr_descriptors_array_append(expanded,inner_expanded);
-      }
-      break;
+            size=grib_bufr_descriptors_array_used_size(inner_expanded);
+            expanded=grib_bufr_descriptors_array_append(expanded,inner_expanded);
+        }
+        break;
 
     case 0:
-      u=grib_bufr_descriptors_array_pop_front(unexpanded);
+        u=grib_bufr_descriptors_array_pop_front(unexpanded);
+        size=1;
+        if (ccp->associatedFieldWidth && u->X!=31) {
+            bufr_descriptor* au=grib_bufr_descriptor_new(self->tablesAccessor,999999,err);
+            au->width=ccp->associatedFieldWidth;
+            grib_bufr_descriptor_set_scale(au,0);
+            au->shortName=grib_context_strdup(c,"associatedField");
+            au->name=grib_context_strdup(c,"associated field");
+            au->units=grib_context_strdup(c,"associated units");
 #if MYDEBUG
-      for (idepth=0;idepth<depth;idepth++) printf("\t");
-      printf("+++ pop  %06ld\n",u->code);
-      for (idepth=0;idepth<depth;idepth++) printf("\t");
-      printf("+++ push %06ld [type=%d] (%ld %g %ld)",u->code,
-          u->type,u->scale,u->reference,u->width);
+            for (idepth=0;idepth<depth;idepth++) printf("\t");
+            printf("+++ push %06ld (%ld %g %ld)",au->code,au->scale,au->reference,au->width);
 #endif
-      if ( u->type!=BUFR_DESCRIPTOR_TYPE_FLAG  &&
-           u->type!=BUFR_DESCRIPTOR_TYPE_TABLE &&
-           u->type!=BUFR_DESCRIPTOR_TYPE_STRING  ) {
-        if (ccp->localDescriptorWidth>0) {
-          u->width=ccp->localDescriptorWidth;
-          u->reference=0;
-          grib_bufr_descriptor_set_scale(u,0);
-          ccp->localDescriptorWidth=0;
-        } else {
-          u->width += ccp->extraWidth;
-          u->reference *= ccp->referenceFactor;
-          grib_bufr_descriptor_set_scale(u,u->scale+ccp->extraScale);
+            grib_bufr_descriptors_array_push(expanded,au);
+            size++;
         }
-      }
 #if MYDEBUG
-      printf("->(%ld %g %ld)\n",u->scale,u->reference,u->width);
+        for (idepth=0;idepth<depth;idepth++) printf("\t");
+        printf("+++ pop  %06ld\n",u->code);
+        for (idepth=0;idepth<depth;idepth++) printf("\t");
+        printf("+++ push %06ld [type=%d] (%ld %g %ld)",u->code,
+                u->type,u->scale,u->reference,u->width);
 #endif
-      grib_bufr_descriptors_array_push(expanded,u);
-      size=1;
-      if (ccp->associatedFieldWidth) {
-        bufr_descriptor* au=grib_bufr_descriptor_new(self->tablesAccessor,999999,err);
-        au->width=ccp->associatedFieldWidth;
+        if ( u->type!=BUFR_DESCRIPTOR_TYPE_FLAG  &&
+                u->type!=BUFR_DESCRIPTOR_TYPE_TABLE &&
+                u->type!=BUFR_DESCRIPTOR_TYPE_STRING  ) {
+            if (ccp->localDescriptorWidth>0) {
+                u->width=ccp->localDescriptorWidth;
+                u->reference=0;
+                grib_bufr_descriptor_set_scale(u,0);
+                ccp->localDescriptorWidth=0;
+            } else {
+                u->width += ccp->extraWidth;
+                u->reference *= ccp->referenceFactor;
+                grib_bufr_descriptor_set_scale(u,u->scale+ccp->extraScale);
+            }
+        } else if (u->type==BUFR_DESCRIPTOR_TYPE_STRING && ccp->newStringWidth!=0) {
+            u->width=ccp->newStringWidth;
+        }
 #if MYDEBUG
-      for (idepth=0;idepth<depth;idepth++) printf("\t");
-      printf("+++ push %06ld (%ld %g %ld)",au->code,au->scale,au->reference,au->width);
+        printf("->(%ld %g %ld)\n",u->scale,u->reference,u->width);
 #endif
-        grib_bufr_descriptors_array_push(expanded,au);
-        size++;
-        /* bufrdc bug!!*/
-        ccp->associatedFieldWidth=0;
-      }
-      break;
+        grib_bufr_descriptors_array_push(expanded,u);
+        break;
 
     case 2:
-      u=grib_bufr_descriptors_array_pop_front(unexpanded);
+        u=grib_bufr_descriptors_array_pop_front(unexpanded);
 #if MYDEBUG
-      for (idepth=0;idepth<depth;idepth++) printf("\t");
-      printf("+++ pop  %06ld\n",u->code);
+        for (idepth=0;idepth<depth;idepth++) printf("\t");
+        printf("+++ pop  %06ld\n",u->code);
 #endif
-      switch(us->X) {
+        switch(us->X) {
         case 1:
-          ccp->extraWidth = us->Y ? us->Y-128 : 0;
-          size=0;
-          grib_bufr_descriptor_delete(u);
-          break;
+            ccp->extraWidth = us->Y ? us->Y-128 : 0;
+            size=0;
+            grib_bufr_descriptor_delete(u);
+            break;
         case 2:
-          ccp->extraScale = us->Y ? us->Y-128 : 0;
-          size=0;
-          grib_bufr_descriptor_delete(u);
-          break;
+            ccp->extraScale = us->Y ? us->Y-128 : 0;
+            size=0;
+            grib_bufr_descriptor_delete(u);
+            break;
         case 4:
-         /* associated field*/
-          ccp->associatedFieldWidth=us->Y;
-          grib_bufr_descriptor_delete(u);
-          break;
+            /* associated field*/
+            ccp->associatedFieldWidth=us->Y;
+            grib_bufr_descriptor_delete(u);
+            break;
         case 6:
-          /*signify data width*/
-          ccp->localDescriptorWidth=us->Y;
-          size=0;
-          grib_bufr_descriptor_delete(u);
-          break;
+            /*signify data width*/
+            ccp->localDescriptorWidth=us->Y;
+            size=0;
+            grib_bufr_descriptor_delete(u);
+            break;
         case 7:
-          if (us->Y) {
-            ccp->extraScale = us->Y;
-            ccp->referenceFactor=grib_power(us->Y,10);
-            ccp->extraWidth=((10*us->Y)+2)/3;
-          } else {
-            ccp->extraWidth=0;
-            ccp->extraScale=0;
-            ccp->referenceFactor=1;
-          }
-          size=0;
-          grib_bufr_descriptor_delete(u);
-          break;
+            if (us->Y) {
+                ccp->extraScale = us->Y;
+                ccp->referenceFactor=grib_power(us->Y,10);
+                ccp->extraWidth=((10*us->Y)+2)/3;
+            } else {
+                ccp->extraWidth=0;
+                ccp->extraScale=0;
+                ccp->referenceFactor=1;
+            }
+            size=0;
+            grib_bufr_descriptor_delete(u);
+            break;
+        case 8:
+            ccp->newStringWidth = us->Y * 8 ;
+            break;
         default:
 #if MYDEBUG
-          for (idepth=0;idepth<depth;idepth++) printf("\t");
-          printf("+++ push %06ld\n",u->code);
+            for (idepth=0;idepth<depth;idepth++) printf("\t");
+            printf("+++ push %06ld\n",u->code);
 #endif
-          grib_bufr_descriptors_array_push(expanded,u);
-          size=1;
-      }
-      break;
+            grib_bufr_descriptors_array_push(expanded,u);
+            size=1;
+        }
+        break;
 
-    default:
-      u=grib_bufr_descriptors_array_pop_front(unexpanded);
+        default:
+            u=grib_bufr_descriptors_array_pop_front(unexpanded);
 #if MYDEBUG
-      for (idepth=0;idepth<depth;idepth++) printf("\t");
-      printf("+++ pop  %06ld\n",u->code);
-      for (idepth=0;idepth<depth;idepth++) printf("\t");
-      printf("+++ push %06ld\n",u->code);
+            for (idepth=0;idepth<depth;idepth++) printf("\t");
+            printf("+++ pop  %06ld\n",u->code);
+            for (idepth=0;idepth<depth;idepth++) printf("\t");
+            printf("+++ push %06ld\n",u->code);
 #endif
-      grib_bufr_descriptors_array_push(expanded,u);
-      size=1;
-  }
+            grib_bufr_descriptors_array_push(expanded,u);
+            size=1;
+    }
 #if MYDEBUG
     for (idepth=0;idepth<depth;idepth++) printf("\t");
     printf("expanding <== %d-%.2d-%.3d (size=%ld)\n\n",us->F,us->X,us->Y,size);
@@ -447,223 +458,232 @@ static size_t __expand(grib_accessor* a,bufr_descriptors_array* unexpanded,bufr_
     return size;
 }
 
-static bufr_descriptors_array* _expand(grib_accessor* a,bufr_descriptors_array* unexpanded,change_coding_params* ccp,int *err)
+bufr_descriptors_array* do_expand(grib_accessor* a,bufr_descriptors_array* unexpanded,change_coding_params* ccp,int *err)
 {
-  bufr_descriptors_array* expanded=NULL;
-  grib_context* c=a->parent->h->context;
+    bufr_descriptors_array* expanded=NULL;
+    grib_context* c=a->context;
 #if MYDEBUG
-  int idepth;
+    int idepth;
 #endif
 
-  depth++;
+    depth++;
 
-  expanded=grib_bufr_descriptors_array_new(c,100,100);
+    expanded=grib_bufr_descriptors_array_new(c,100,100);
 
 #if MYDEBUG
     {
-    int i;
-    for (idepth=0;idepth<depth;idepth++) printf("\t");
-    printf("to be expanded ==> \n");
-         for (i=0;i<unexpanded->n;i++) {
-           bufr_descriptor* xx=grib_bufr_descriptors_array_get(unexpanded,i);
-           for (idepth=0;idepth<depth;idepth++) printf("\t");
-           printf("%06ld\n",xx->code);
-         }
-    for (idepth=0;idepth<depth;idepth++) printf("\t");
-    printf("to be expanded <== \n\n");
+        int i;
+        for (idepth=0;idepth<depth;idepth++) printf("\t");
+        printf("to be expanded ==> \n");
+        for (i=0;i<unexpanded->n;i++) {
+            bufr_descriptor* xx=grib_bufr_descriptors_array_get(unexpanded,i);
+            for (idepth=0;idepth<depth;idepth++) printf("\t");
+            printf("%06ld\n",xx->code);
+        }
+        for (idepth=0;idepth<depth;idepth++) printf("\t");
+        printf("to be expanded <== \n\n");
     }
 #endif
-  while (unexpanded->n) {
-    __expand(a,unexpanded,expanded,ccp,err);
-  }
+    while (unexpanded->n) {
+        __expand(a,unexpanded,expanded,ccp,err);
+    }
 #if MYDEBUG
     {
-    int i;
-    for (idepth=0;idepth<depth;idepth++) printf("\t");
-    printf("expanded ==> \n");
-         for (i=0;i<expanded->n;i++) {
-           bufr_descriptor* xx=grib_bufr_descriptors_array_get(expanded,i);
-           for (idepth=0;idepth<depth;idepth++) printf("\t");
-           printf("==  %-6d== %06ld ",i,xx->code);
-           printf("%ld %g %ld",xx->scale,xx->reference,xx->width);
-           printf("\n");
-         }
-    for (idepth=0;idepth<depth;idepth++) printf("\t");
-    printf("expanded <== \n\n");
+        int i;
+        for (idepth=0;idepth<depth;idepth++) printf("\t");
+        printf("expanded ==> \n");
+        for (i=0;i<expanded->n;i++) {
+            bufr_descriptor* xx=grib_bufr_descriptors_array_get(expanded,i);
+            for (idepth=0;idepth<depth;idepth++) printf("\t");
+            printf("==  %-6d== %06ld ",i,xx->code);
+            printf("%ld %g %ld",xx->scale,xx->reference,xx->width);
+            printf("\n");
+        }
+        for (idepth=0;idepth<depth;idepth++) printf("\t");
+        printf("expanded <== \n\n");
     }
 #endif
 
-  depth--;
+    depth--;
 
-  return expanded;
+    return expanded;
 }
 
 static int expand(grib_accessor* a)
 {
-  grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a;
-  int err=0;
-  size_t unexpandedSize=0;
-  int i;
-  long* u=0;
-  change_coding_params ccp;
-  bufr_descriptors_array* unexpanded=NULL;
-  grib_context* c=a->parent->h->context;
-
-  if (!self->dirty) {
-    return err;
-  }
-  self->dirty=0;
-  if (!self->tablesAccessor) {
-    self->tablesAccessor=grib_find_accessor(a->parent->h,self->tablesAccessorName);
-    Assert(self->tablesAccessor);
-  }
-
-  if (self->rank!=0) {
-    err=expand(self->expandedAccessor);
-    self->expanded=((grib_accessor_expanded_descriptors*)self->expandedAccessor)->expanded;
-    return err;
-  }
+    grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a;
+    int err=0;
+    size_t unexpandedSize=0;
+    int i;
+    long* u=0;
+    change_coding_params ccp;
+    bufr_descriptors_array* unexpanded=NULL;
+    grib_context* c=a->context;
+
+    if (!self->do_expand) {
+        return err;
+    }
+    self->do_expand=0;
+    if (!self->tablesAccessor) {
+        self->tablesAccessor=grib_find_accessor(grib_handle_of_accessor(a),self->tablesAccessorName);
+        Assert(self->tablesAccessor);
+    }
+
+    if (self->rank!=0) {
+        err=expand(self->expandedAccessor);
+        self->expanded=((grib_accessor_expanded_descriptors*)self->expandedAccessor)->expanded;
+        return err;
+    }
+
+    grib_bufr_descriptors_array_delete(self->expanded);
+    err=grib_get_size(grib_handle_of_accessor(a),self->unexpandedDescriptors,&unexpandedSize);
+    if (err) return err;
+    u=(long*)grib_context_malloc_clear(c,sizeof(long)*unexpandedSize);
+    if (!u) {err=GRIB_OUT_OF_MEMORY; return err;}
+    err=grib_get_long_array(grib_handle_of_accessor(a),self->unexpandedDescriptors,u,&unexpandedSize);
+    if (err) return err;
+
+    unexpanded=grib_bufr_descriptors_array_new(c,unexpandedSize,100);
+    for (i=0;i<unexpandedSize;i++) {
+        grib_bufr_descriptors_array_push(unexpanded,grib_bufr_descriptor_new(self->tablesAccessor,u[i],&err));
+    }
 
-  grib_bufr_descriptors_array_delete(self->expanded);
-  err=grib_get_size(a->parent->h,self->unexpandedDescriptors,&unexpandedSize);
-  if (err) return err;
-  u=(long*)grib_context_malloc_clear(c,sizeof(long)*unexpandedSize);
-  if (!u) {err=GRIB_OUT_OF_MEMORY; return err;}
-  err=grib_get_long_array(a->parent->h,self->unexpandedDescriptors,u,&unexpandedSize);
-  if (err) return err;
+    grib_context_free(c,u);
 
-  unexpanded=grib_bufr_descriptors_array_new(c,unexpandedSize,100);
-  for (i=0;i<unexpandedSize;i++) {
-    grib_bufr_descriptors_array_push(unexpanded,grib_bufr_descriptor_new(self->tablesAccessor,u[i],&err));
-  }
+    ccp.extraWidth=0;
+    ccp.localDescriptorWidth=-1;
+    ccp.extraScale=0;
+    ccp.referenceFactor=1;
+    ccp.associatedFieldWidth=0;
+    ccp.newStringWidth=0;
+    self->expanded=do_expand(a,unexpanded,&ccp,&err);
+    grib_bufr_descriptors_array_delete(unexpanded);
 
-  grib_context_free(c,u);
+    return err;
 
-  ccp.extraWidth=0;
-  ccp.localDescriptorWidth=-1;
-  ccp.extraScale=0;
-  ccp.referenceFactor=1;
-  ccp.associatedFieldWidth=0;
-  self->expanded=_expand(a,unexpanded,&ccp,&err);
-  grib_bufr_descriptors_array_delete(unexpanded);
+}
 
-  return err;
+int grib_accessor_class_expanded_descriptors_set_do_expand(grib_accessor* a,long do_expand)
+{
+    grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a;
+    self->do_expand=do_expand;
+    return 0;
+}
 
+bufr_descriptors_array* grib_accessor_class_expanded_descriptors_get_expanded(grib_accessor* a,int* err)
+{
+    grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a;
+    *err=expand(a);
+    return self->expanded;
 }
 
-bufr_descriptors_array* grib_accessor_class_expanded_descriptors_get_expanded(grib_accessor* a,int* err) {
-  grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a;
-  *err=expand(a);
-  return self->expanded;
+static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
+{
+    grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a;
+    int ret=0;
+    int i;
+    size_t expandedSize;
+
+    if (self->rank!=2) {
+        long* lval=(long*)grib_context_malloc_clear(a->context,*len*sizeof(long));
+        ret=unpack_long(a,lval,len);
+        if (ret) return ret;
+        for (i=0;i<*len;i++) val[i]=(double)lval[i];
+        grib_context_free(a->context,lval);
+    } else {
+        ret=expand(a);
+        if (ret) return ret;
+
+        expandedSize=grib_bufr_descriptors_array_used_size(self->expanded);
+        if(*len < expandedSize)
+        {
+            grib_context_log(a->context, GRIB_LOG_ERROR,
+                    " wrong size (%ld) for %s it contains %d values ",*len, a->name , expandedSize);
+            *len = 0;
+            return GRIB_ARRAY_TOO_SMALL;
+        }
+        *len = expandedSize;
+        for (i=0;i<*len;i++) val[i]=self->expanded->v[i]->reference;
+    }
+    return ret;
 }
 
-static int    unpack_double   (grib_accessor* a, double* val, size_t *len) {
-  grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a;
-  int ret=0;
-  int i;
-  size_t expandedSize;
+static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
+{
+    grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a;
+    int ret=0;
+    size_t rlen=0;
+    size_t i;
 
-  if (self->rank!=2) {
-    long* lval=(long*)grib_context_malloc_clear(a->parent->h->context,*len*sizeof(long));
-    ret=unpack_long(a,lval,len);
-    if (ret) return ret;
-    for (i=0;i<*len;i++) val[i]=(double)lval[i];
-    grib_context_free(a->parent->h->context,lval);
-  } else {
     ret=expand(a);
+    rlen=grib_bufr_descriptors_array_used_size(self->expanded);
     if (ret) return ret;
 
-    expandedSize=grib_bufr_descriptors_array_used_size(self->expanded);
-    if(*len < expandedSize)
+    if(*len < rlen)
     {
-      grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
-          " wrong size (%ld) for %s it contains %d values ",*len, a->name , expandedSize);
-      *len = 0;
-      return GRIB_ARRAY_TOO_SMALL;
+        grib_context_log(a->context, GRIB_LOG_ERROR,
+                " wrong size (%ld) for %s it contains %d values ",*len, a->name , rlen);
+        *len = 0;
+        return GRIB_ARRAY_TOO_SMALL;
     }
-    *len = expandedSize;
-    for (i=0;i<*len;i++) val[i]=self->expanded->v[i]->reference;
-  }
-  return ret;
-}
 
-static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
-{
-  grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a;
-  int ret=0;
-  size_t rlen=0;
-  size_t i;
-
-  ret=expand(a);
-  rlen=grib_bufr_descriptors_array_used_size(self->expanded);
-  if (ret) return ret;
-
-  if(*len < rlen)
-  {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
-		    " wrong size (%ld) for %s it contains %d values ",*len, a->name , rlen);
-    *len = 0;
-    return GRIB_ARRAY_TOO_SMALL;
-  }
-
-  *len = rlen;
-  switch (self->rank) {
+    *len = rlen;
+    switch (self->rank) {
     case 0:
-      for (i=0;i<*len;i++) val[i]=self->expanded->v[i]->code;
-      break;
+        for (i=0;i<*len;i++) val[i]=self->expanded->v[i]->code;
+        break;
     case 1:
-      for (i=0;i<*len;i++) val[i]=self->expanded->v[i]->scale;
-      break;
+        for (i=0;i<*len;i++) val[i]=self->expanded->v[i]->scale;
+        break;
     case 2:
-      return GRIB_INVALID_TYPE;
-      break;
+        return GRIB_INVALID_TYPE;
+        break;
     case 3:
-      for (i=0;i<*len;i++) val[i]=self->expanded->v[i]->width;
-      break;
+        for (i=0;i<*len;i++) val[i]=self->expanded->v[i]->width;
+        break;
     case 4:
-      for (i=0;i<*len;i++) val[i]=self->expanded->v[i]->type;
-      break;
-  }
+        for (i=0;i<*len;i++) val[i]=self->expanded->v[i]->type;
+        break;
+    }
 
-  return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
 
 static int    pack_long   (grib_accessor* a, const long* val, size_t *len)
 {
-  grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a;
-  self->dirty=1;
-  return GRIB_NOT_IMPLEMENTED;
+    grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a;
+    self->do_expand=1;
+    return GRIB_NOT_IMPLEMENTED;
 }
 
-
 static int value_count(grib_accessor* a,long* rlen)
 {
-  grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a;
-  int ret=0;
-  grib_context* c=a->parent->h->context;
-  *rlen=0;
-
-  ret=expand(a);
-  *rlen=grib_bufr_descriptors_array_used_size(self->expanded);
-  if (ret) {
-    grib_context_log(c,GRIB_LOG_ERROR,"%s unable to compute size",a->name);
-		return ret;
-  }
-
-  return ret;
+    grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a;
+    int ret=0;
+    grib_context* c=a->context;
+    *rlen=0;
+
+    ret=expand(a);
+    *rlen=grib_bufr_descriptors_array_used_size(self->expanded);
+    if (ret) {
+        grib_context_log(c,GRIB_LOG_ERROR,"%s unable to compute size",a->name);
+        return ret;
+    }
+
+    return ret;
 }
 
-static void destroy(grib_context* c,grib_accessor* a) {
-  grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a;
-  if (self->rank==0 && self->expanded) {
-    grib_bufr_descriptors_array_delete(self->expanded);
-  }
+static void destroy(grib_context* c,grib_accessor* a)
+{
+    grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a;
+    if (self->rank==0 && self->expanded) {
+        grib_bufr_descriptors_array_delete(self->expanded);
+    }
 }
 
 static int  get_native_type(grib_accessor* a)
 {
-  grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a;
-  if (self->rank==2) return GRIB_TYPE_DOUBLE;
-  else return GRIB_TYPE_LONG;
+    grib_accessor_expanded_descriptors* self = (grib_accessor_expanded_descriptors*)a;
+    if (self->rank==2) return GRIB_TYPE_DOUBLE;
+    else return GRIB_TYPE_LONG;
 }
-
diff --git a/src/grib_accessor_class_forward.c b/src/grib_accessor_class_forward.c
index affc9ee..d344817 100644
--- a/src/grib_accessor_class_forward.c
+++ b/src/grib_accessor_class_forward.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -83,6 +83,7 @@ static grib_accessor_class _grib_accessor_class_forward = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -121,13 +122,14 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
 
 static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
-	/* a->alias = grib_arguments_get_name(a->parent->h,c,0); */
+	/* a->alias = grib_arguments_get_name(grib_handle_of_accessor(a),c,0); */
 }
 
 
@@ -136,7 +138,7 @@ static void dump(grib_accessor* a, grib_dumper* dumper)
 
 #if 0
 	/* grib_accessor_forward* self = (grib_accessor_forward*)a; */
-	grib_accessor *target = grib_find_accessor(a->parent->h,a->alias);
+	grib_accessor *target = grib_find_accessor(grib_handle_of_accessor(a),a->alias);
 	if(target) {
 		grib_dump_label(dumper,a,"is:");
 		dumper->depth += 2;
diff --git a/src/grib_accessor_class_from_scale_factor_scaled_value.c b/src/grib_accessor_class_from_scale_factor_scaled_value.c
index 10fea02..3417fe2 100644
--- a/src/grib_accessor_class_from_scale_factor_scaled_value.c
+++ b/src/grib_accessor_class_from_scale_factor_scaled_value.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -94,6 +94,7 @@ static grib_accessor_class _grib_accessor_class_from_scale_factor_scaled_value =
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -131,6 +132,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -140,8 +142,8 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 	grib_accessor_from_scale_factor_scaled_value* self = (grib_accessor_from_scale_factor_scaled_value*)a;
 	int n = 0;
 
-	self->scaleFactor = grib_arguments_get_name(a->parent->h,c,n++);
-	self->scaledValue = grib_arguments_get_name(a->parent->h,c,n++);
+	self->scaleFactor = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+	self->scaledValue = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 
 	a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
 }
@@ -153,10 +155,10 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
 	long scaleFactor=0;
 	long scaledValue=0;
 
-	if((ret = grib_get_long_internal(a->parent->h, self->scaleFactor,&scaleFactor)) != GRIB_SUCCESS)
+	if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->scaleFactor,&scaleFactor)) != GRIB_SUCCESS)
 		return ret;
 
-	if((ret = grib_get_long_internal(a->parent->h, self->scaledValue,&scaledValue)) != GRIB_SUCCESS)
+	if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->scaledValue,&scaledValue)) != GRIB_SUCCESS)
 		return ret;
 
 	*val=scaledValue;
@@ -179,11 +181,11 @@ static int is_missing(grib_accessor* a)
 	long scaleFactor=0;
 	long scaledValue=0;
 
-	if((ret = grib_get_long_internal(a->parent->h, self->scaleFactor,&scaleFactor))
+	if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->scaleFactor,&scaleFactor))
 			!= GRIB_SUCCESS)
 		return ret;
 
-	if((ret = grib_get_long_internal(a->parent->h, self->scaledValue,&scaledValue))
+	if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->scaledValue,&scaledValue))
 			!= GRIB_SUCCESS)
 		return ret;
 
diff --git a/src/grib_accessor_class_g1_half_byte_codeflag.c b/src/grib_accessor_class_g1_half_byte_codeflag.c
index 7094079..eb2aa67 100644
--- a/src/grib_accessor_class_g1_half_byte_codeflag.c
+++ b/src/grib_accessor_class_g1_half_byte_codeflag.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -90,6 +90,7 @@ static grib_accessor_class _grib_accessor_class_g1_half_byte_codeflag = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -124,6 +125,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -146,11 +148,11 @@ static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
     unsigned char dat = 0;
     if(*len < 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 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;
     }
-    dat = a->parent->h->buffer->data[a->offset] & 0x0f;
+    dat = grib_handle_of_accessor(a)->buffer->data[a->offset] & 0x0f;
 
 
     *val = dat;
@@ -163,13 +165,13 @@ static int    pack_long   (grib_accessor* a, const long *val, size_t *len)
     int ret = 0;
     if(*len < 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 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;
     }
-    /*  printf("HALF BYTE pack long %ld %02x\n",*val,a->parent->h->buffer->data[a->offset]);*/
-    a->parent->h->buffer->data[a->offset] = (a->parent->h->buffer->data[a->offset] & 0xf0) | (*val & 0x0f);
-    /*  printf("HALF BYTE pack long %ld %02x\n",*val,a->parent->h->buffer->data[a->offset]);*/
+    /*  printf("HALF BYTE pack long %ld %02x\n",*val,grib_handle_of_accessor(a)->buffer->data[a->offset]);*/
+    grib_handle_of_accessor(a)->buffer->data[a->offset] = (a->parent->h->buffer->data[a->offset] & 0xf0) | (*val & 0x0f);
+    /*  printf("HALF BYTE pack long %ld %02x\n",*val,grib_handle_of_accessor(a)->buffer->data[a->offset]);*/
 
     *len = 1;
     return ret;
diff --git a/src/grib_accessor_class_g1_increment.c b/src/grib_accessor_class_g1_increment.c
index 1858c73..48f30de 100644
--- a/src/grib_accessor_class_g1_increment.c
+++ b/src/grib_accessor_class_g1_increment.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -99,6 +99,7 @@ static grib_accessor_class _grib_accessor_class_g1_increment = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -136,6 +137,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -145,11 +147,11 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 	grib_accessor_g1_increment* self = (grib_accessor_g1_increment*)a; 
 	int n = 0;
 	
-	self->directionIncrementGiven = grib_arguments_get_name(a->parent->h,c,n++);
-	self->directionIncrement    = grib_arguments_get_name(a->parent->h,c,n++);
-	self->first = grib_arguments_get_name(a->parent->h,c,n++);
-	self->last    = grib_arguments_get_name(a->parent->h,c,n++);
-	self->numberOfPoints    = grib_arguments_get_name(a->parent->h,c,n++);
+	self->directionIncrementGiven = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+	self->directionIncrement    = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+	self->first = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+	self->last    = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+	self->numberOfPoints    = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 }
 
 static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
@@ -166,21 +168,21 @@ static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
 	if(*len < 1)
 		ret = GRIB_ARRAY_TOO_SMALL;
 
-	if((ret = grib_get_long_internal(a->parent->h, self->directionIncrementGiven,&directionIncrementGiven)) 
+	if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->directionIncrementGiven,&directionIncrementGiven)) 
 					!= GRIB_SUCCESS)
 		return ret;
 	
-	if((ret = grib_get_long_internal(a->parent->h, self->directionIncrement,&directionIncrement)) 
+	if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->directionIncrement,&directionIncrement)) 
 				!= GRIB_SUCCESS)
 		return ret;
 	
-	if((ret = grib_get_double_internal(a->parent->h, self->first,&first)) != GRIB_SUCCESS)
+	if((ret = grib_get_double_internal(grib_handle_of_accessor(a), self->first,&first)) != GRIB_SUCCESS)
 		return ret;
 	
-	if((ret = grib_get_double_internal(a->parent->h, self->last,&last)) != GRIB_SUCCESS)
+	if((ret = grib_get_double_internal(grib_handle_of_accessor(a), self->last,&last)) != GRIB_SUCCESS)
 		return ret;
 
-	if((ret = grib_get_long_internal(a->parent->h, self->numberOfPoints,&numberOfPoints))
+	if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->numberOfPoints,&numberOfPoints))
        != GRIB_SUCCESS)
 		return ret;
 	
@@ -218,20 +220,20 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 	long numberOfPoints = 0;
 	double incrementInMillidegrees;
 	
-	ret = grib_get_double_internal(a->parent->h, self->first,&first);
+	ret = grib_get_double_internal(grib_handle_of_accessor(a), self->first,&first);
 	if(ret != GRIB_SUCCESS) {
-		grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->first, ret);   
+		grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->first, ret);   
 		return ret;
 	}	
-	ret = grib_get_double_internal(a->parent->h, self->last,&last);
+	ret = grib_get_double_internal(grib_handle_of_accessor(a), self->last,&last);
 	if(ret != GRIB_SUCCESS){
-		grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->last, ret);   
+		grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->last, ret);   
 		return ret;
 	}
 
-	if((ret = grib_get_long_internal(a->parent->h, self->directionIncrementGiven,&directionIncrementGiven)) 
+	if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->directionIncrementGiven,&directionIncrementGiven)) 
 					!= GRIB_SUCCESS){
-		grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->directionIncrementGiven, ret);   
+		grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->directionIncrementGiven, ret);   
 		return ret;
 	}	
 	
@@ -245,21 +247,21 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 		directionIncrementGiven=0;
 	} 
 
-	ret = grib_set_long_internal(a->parent->h, self->numberOfPoints,numberOfPoints);
+	ret = grib_set_long_internal(grib_handle_of_accessor(a), self->numberOfPoints,numberOfPoints);
 	if(ret )
-		grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Accessor %s cannont pack value for %s error %d \n", a->name, self->numberOfPoints, ret);
+		grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont pack value for %s error %d \n", a->name, self->numberOfPoints, ret);
 	
 
-	grib_get_long_internal(a->parent->h, self->numberOfPoints,&codedNumberOfPoints);
+	grib_get_long_internal(grib_handle_of_accessor(a), self->numberOfPoints,&codedNumberOfPoints);
 	
 	
-		ret = grib_set_long_internal(a->parent->h, self->directionIncrement,directionIncrement);
+		ret = grib_set_long_internal(grib_handle_of_accessor(a), self->directionIncrement,directionIncrement);
 	if(ret )
-		grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Accessor %s cannont pack value for %s error %d \n", a->name, self->directionIncrement, ret);
+		grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont pack value for %s error %d \n", a->name, self->directionIncrement, ret);
 	
-		ret = grib_set_long_internal(a->parent->h, self->directionIncrementGiven,directionIncrementGiven);
+		ret = grib_set_long_internal(grib_handle_of_accessor(a), self->directionIncrementGiven,directionIncrementGiven);
 	if(ret )
-		grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Accessor %s cannont pack value for %s error %d \n", a->name, self->directionIncrementGiven, ret);
+		grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont pack value for %s error %d \n", a->name, self->directionIncrementGiven, ret);
 
 #if 0
 	printf("pack -- %s=%ld %s=%ld %s=%f %s=%f %s=%ld codedNumberOfPoints=%ld %s=%f\n",
diff --git a/src/grib_accessor_class_g1_message_length.c b/src/grib_accessor_class_g1_message_length.c
index 15d96df..8ca3667 100644
--- a/src/grib_accessor_class_g1_message_length.c
+++ b/src/grib_accessor_class_g1_message_length.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -90,6 +90,7 @@ static grib_accessor_class _grib_accessor_class_g1_message_length = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -127,6 +128,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -134,7 +136,7 @@ static void init_class(grib_accessor_class* c)
 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(a->parent->h,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,
@@ -187,13 +189,13 @@ static int pack_long(grib_accessor* a, const long* val,size_t *len)
   /* Here we assume that the totalLength will be coded AFTER the section4 length, and
   the section4 length will be overwritten by the totalLength accessor for large GRIBs */
 
-  grib_accessor* s4 = grib_find_accessor(a->parent->h,self->sec4_length);
+  grib_accessor* s4 = grib_find_accessor(grib_handle_of_accessor(a),self->sec4_length);
   long tlen,slen;
   long t120;
   int ret;
 
   tlen = *val;
-  if((tlen < 0x800000 || !a->parent->h->context->gribex_mode_on) && tlen < 0xFFFFFF  )
+  if((tlen < 0x800000 || !a->context->gribex_mode_on) && tlen < 0xFFFFFF  )
   {
     /* printf("ENCODING small grib total = %ld\n",tlen); */
     /*return super->pack_long(a,val,len);*/
@@ -228,9 +230,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(a->parent->h,
+      grib_get_g1_message_size(grib_handle_of_accessor(a),
         a,
-        grib_find_accessor(a->parent->h,self->sec4_length),
+        grib_find_accessor(grib_handle_of_accessor(a),self->sec4_length),
         &total_length,
         &sec4_length);
 
@@ -247,9 +249,9 @@ static int unpack_long(grib_accessor* a, long* val,size_t *len)
 
   long total_length, sec4_length;
 
-  if((ret = grib_get_g1_message_size(a->parent->h,
+  if((ret = grib_get_g1_message_size(grib_handle_of_accessor(a),
     a,
-    grib_find_accessor(a->parent->h,self->sec4_length),
+    grib_find_accessor(grib_handle_of_accessor(a),self->sec4_length),
     &total_length,
     &sec4_length)) != GRIB_SUCCESS)
       return ret;
diff --git a/src/grib_accessor_class_g1_section4_length.c b/src/grib_accessor_class_g1_section4_length.c
index c2e61fc..b63dfd3 100644
--- a/src/grib_accessor_class_g1_section4_length.c
+++ b/src/grib_accessor_class_g1_section4_length.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -90,6 +90,7 @@ static grib_accessor_class _grib_accessor_class_g1_section4_length = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -127,6 +128,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -135,7 +137,7 @@ static void init_class(grib_accessor_class* c)
 static void init(grib_accessor* a, const long len , grib_arguments* args )
 {
     grib_accessor_g1_section4_length *self = (grib_accessor_g1_section4_length*)a;
-	self->total_length = grib_arguments_get_name(a->parent->h,args,0);
+	self->total_length = grib_arguments_get_name(grib_handle_of_accessor(a),args,0);
 }
 
 static int pack_long(grib_accessor* a, const long* val,size_t *len)
@@ -163,8 +165,8 @@ static int unpack_long(grib_accessor* a, long* val,size_t *len)
 
 	long total_length, sec4_length;
 
-	if((ret = grib_get_g1_message_size(a->parent->h,
-			grib_find_accessor(a->parent->h,self->total_length),
+	if((ret = grib_get_g1_message_size(grib_handle_of_accessor(a),
+			grib_find_accessor(grib_handle_of_accessor(a),self->total_length),
 			a,
 			&total_length,
 			&sec4_length)) != GRIB_SUCCESS)
diff --git a/src/grib_accessor_class_g1area.c b/src/grib_accessor_class_g1area.c
index 0751878..732d76a 100644
--- a/src/grib_accessor_class_g1area.c
+++ b/src/grib_accessor_class_g1area.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -98,6 +98,7 @@ static grib_accessor_class _grib_accessor_class_g1area = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -133,6 +134,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -142,10 +144,10 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 	grib_accessor_g1area* self = (grib_accessor_g1area*)a; 
 	int n = 0;
 
-	self->laf = grib_arguments_get_name(a->parent->h,c,n++);
-	self->lof = grib_arguments_get_name(a->parent->h,c,n++);
-	self->lal = grib_arguments_get_name(a->parent->h,c,n++);
-	self->lol = grib_arguments_get_name(a->parent->h,c,n++);
+	self->laf = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+	self->lof = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+	self->lal = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+	self->lol = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 
 }
 
@@ -155,14 +157,14 @@ static int    pack_double   (grib_accessor* a, const double* val, size_t *len)
 	grib_accessor_g1area* self = (grib_accessor_g1area*)a;
 	int ret = 0;
 
-	ret = grib_set_double_internal(a->parent->h, self->laf,val[0]);
+	ret = grib_set_double_internal(grib_handle_of_accessor(a), self->laf,val[0]);
 	if(ret ) return ret;
-	ret = grib_set_double_internal(a->parent->h, self->lof,val[1]);
+	ret = grib_set_double_internal(grib_handle_of_accessor(a), self->lof,val[1]);
   if(ret ) return ret;
-	ret = grib_set_double_internal(a->parent->h, self->lal,val[2]);
+	ret = grib_set_double_internal(grib_handle_of_accessor(a), self->lal,val[2]);
   if(ret) return ret;
 
-	ret = grib_set_double_internal(a->parent->h, self->lol,val[3]);
+	ret = grib_set_double_internal(grib_handle_of_accessor(a), self->lol,val[3]);
   if(ret ) return ret;
 
 	if (ret == GRIB_SUCCESS) *len = 4;
@@ -179,16 +181,16 @@ static int    unpack_double   (grib_accessor* a,  double* val, size_t *len)
 		return GRIB_BUFFER_TOO_SMALL;
 	}
 
-	ret = grib_get_double_internal(a->parent->h, self->laf,val++);
+	ret = grib_get_double_internal(grib_handle_of_accessor(a), self->laf,val++);
   if(ret) return ret;
 
-	ret = grib_get_double_internal(a->parent->h, self->lof,val++);
+	ret = grib_get_double_internal(grib_handle_of_accessor(a), self->lof,val++);
   if(ret) return ret;
 
-	ret = grib_get_double_internal(a->parent->h, self->lal,val++);
+	ret = grib_get_double_internal(grib_handle_of_accessor(a), self->lal,val++);
   if(ret) return ret;
 
-	ret = grib_get_double_internal(a->parent->h, self->lol,val);
+	ret = grib_get_double_internal(grib_handle_of_accessor(a), self->lol,val);
   if(ret ) return ret;
 
 	if (ret == GRIB_SUCCESS) *len = 4;
@@ -208,17 +210,17 @@ static int    unpack_string(grib_accessor* a, char* val, size_t *len)
 
 	double laf,lof,lal,lol;
 
-	ret = grib_get_double_internal(a->parent->h, self->laf,&laf);
+	ret = grib_get_double_internal(grib_handle_of_accessor(a), self->laf,&laf);
   if(ret) return ret;
-	ret = grib_get_double_internal(a->parent->h, self->lof,&lof);
+	ret = grib_get_double_internal(grib_handle_of_accessor(a), self->lof,&lof);
   if(ret) return ret;
-	ret = grib_get_double_internal(a->parent->h, self->lal,&lal);
+	ret = grib_get_double_internal(grib_handle_of_accessor(a), self->lal,&lal);
   if(ret) return ret;
-	ret = grib_get_double_internal(a->parent->h, self->lol,&lol);
+	ret = grib_get_double_internal(grib_handle_of_accessor(a), self->lol,&lol);
   if(ret) return ret;
 	if(*len < 60)
 	{
-		grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, " Buffer too smalle for %s (%d) ", a->name ,*len);
+		grib_context_log(a->context, GRIB_LOG_ERROR, " Buffer too smalle for %s (%d) ", a->name ,*len);
 		len = 0;
 		return GRIB_BUFFER_TOO_SMALL;
 	}
diff --git a/src/grib_accessor_class_g1bitmap.c b/src/grib_accessor_class_g1bitmap.c
index 710fd65..cf5a339 100644
--- a/src/grib_accessor_class_g1bitmap.c
+++ b/src/grib_accessor_class_g1bitmap.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -94,6 +94,7 @@ static grib_accessor_class _grib_accessor_class_g1bitmap = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -130,6 +131,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -142,7 +144,7 @@ static void init(grib_accessor* a, const long len , grib_arguments* arg )
 
     grib_accessor_g1bitmap* self = (grib_accessor_g1bitmap*)a;
 
-    self->unusedBits     = grib_arguments_get_name(a->parent->h,arg,4);
+    self->unusedBits     = grib_arguments_get_name(grib_handle_of_accessor(a),arg,4);
 
 }
 
@@ -161,11 +163,11 @@ static int pack_double(grib_accessor* a, const double* val,size_t *len){
     double miss_values = 0;
     tlen = ((*len+bit_padding-1)/bit_padding*bit_padding)/8;
 
-    if((err = grib_get_double_internal(a->parent->h, self->missing_value, &miss_values))
+    if((err = grib_get_double_internal(grib_handle_of_accessor(a), self->missing_value, &miss_values))
             != GRIB_SUCCESS)
         return err;
 
-    buf = (unsigned char*)grib_context_malloc_clear(a->parent->h->context,tlen);
+    buf = (unsigned char*)grib_context_malloc_clear(a->context,tlen);
     if(!buf) return GRIB_OUT_OF_MEMORY;
     pos=0;
     for(i=0;i<*len;i++)
@@ -178,13 +180,13 @@ static int pack_double(grib_accessor* a, const double* val,size_t *len){
         }
     }
 
-    if((err = grib_set_long_internal(a->parent->h, self->unusedBits,tlen*8 - *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);
 
-    grib_context_free(a->parent->h->context,buf);
+    grib_context_free(a->context,buf);
 
     return GRIB_SUCCESS;
 }
@@ -196,8 +198,8 @@ static int value_count(grib_accessor* a,long* count)
     long tlen;
     int err;
 
-    if ((err=grib_get_long_internal(a->parent->h, self->unusedBits, &tlen)) != GRIB_SUCCESS)
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "grib_accessor_class_bitmap.value_count : cannot get %s err=%d",self->unusedBits,err);
+    if ((err=grib_get_long_internal(grib_handle_of_accessor(a), self->unusedBits, &tlen)) != GRIB_SUCCESS)
+        grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_class_bitmap.value_count : cannot get %s err=%d",self->unusedBits,err);
 
   *count = (a->length*8)-tlen;
   return err;
@@ -205,7 +207,7 @@ static int value_count(grib_accessor* a,long* count)
 
 static int unpack_bytes(grib_accessor* a, unsigned char* val, size_t *len)
 {
-    unsigned char* buf = a->parent->h->buffer->data;
+    unsigned char* buf = grib_handle_of_accessor(a)->buffer->data;
     grib_accessor_g1bitmap* self = (grib_accessor_g1bitmap*)a;
     long tlen;
     int err;
@@ -214,13 +216,13 @@ static int unpack_bytes(grib_accessor* a, unsigned char* val, size_t *len)
 
     if(*len < (size_t)length )
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it is %d bytes long\n", a->name ,length );
+        grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it is %d bytes long\n", a->name ,length );
         *len = length;
         return GRIB_ARRAY_TOO_SMALL;
     }
 
-    if ((err=grib_get_long_internal(a->parent->h, self->unusedBits, &tlen)) != GRIB_SUCCESS)
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
+    if ((err=grib_get_long_internal(grib_handle_of_accessor(a), self->unusedBits, &tlen)) != GRIB_SUCCESS)
+        grib_context_log(a->context, GRIB_LOG_ERROR,
                 "grib_accessor_class_bitmap.unpack_bytes : cannot get %s err=%d",self->unusedBits,err);
 
     length-= tlen/8;
diff --git a/src/grib_accessor_class_g1date.c b/src/grib_accessor_class_g1date.c
index f329233..e1a335c 100644
--- a/src/grib_accessor_class_g1date.c
+++ b/src/grib_accessor_class_g1date.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -101,6 +101,7 @@ static grib_accessor_class _grib_accessor_class_g1date = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -135,6 +136,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -144,10 +146,10 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
     grib_accessor_g1date* self = (grib_accessor_g1date*)a;
     int n = 0;
 
-    self->century = grib_arguments_get_name(a->parent->h,c,n++);
-    self->year    = grib_arguments_get_name(a->parent->h,c,n++);
-    self->month   = grib_arguments_get_name(a->parent->h,c,n++);
-    self->day     = grib_arguments_get_name(a->parent->h,c,n++);
+    self->century = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->year    = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->month   = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->day     = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 }
 
 static void dump(grib_accessor* a, grib_dumper* dumper)
@@ -165,13 +167,13 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
     long month = 0;
     long day = 0;
 
-    if ((ret=grib_get_long_internal(a->parent->h, self->century,&century))!=GRIB_SUCCESS)
+    if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->century,&century))!=GRIB_SUCCESS)
         return ret;
-    if ((ret=grib_get_long_internal(a->parent->h, self->day,&day))!=GRIB_SUCCESS)
+    if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->day,&day))!=GRIB_SUCCESS)
         return ret;
-    if ((ret=grib_get_long_internal(a->parent->h, self->month,&month))!=GRIB_SUCCESS)
+    if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->month,&month))!=GRIB_SUCCESS)
         return ret;
-    if ((ret=grib_get_long_internal(a->parent->h, self->year,&year))!=GRIB_SUCCESS)
+    if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->year,&year))!=GRIB_SUCCESS)
         return ret;
 
     if(*len < 1)
@@ -210,7 +212,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
         long d = grib_julian_to_date((long)grib_date_to_julian(v));
         if(v != d)
         {
-            grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"grib_accessor_g1date: pack_long invalid date %ld, changed to %ld",v,d);
+            grib_context_log(a->context,GRIB_LOG_ERROR,"grib_accessor_g1date: pack_long invalid date %ld, changed to %ld",v,d);
             return GRIB_ENCODING_ERROR;
         }
     }
@@ -225,19 +227,19 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
     else
         century++;
 
-    if ((ret=grib_set_long_internal(a->parent->h,self->century,century))!=GRIB_SUCCESS)
+    if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->century,century))!=GRIB_SUCCESS)
         return ret;
-    if ((ret=grib_set_long_internal(a->parent->h,self->day,day))!=GRIB_SUCCESS)
+    if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->day,day))!=GRIB_SUCCESS)
         return ret;
-    if ((ret=grib_set_long_internal(a->parent->h,self->month,month))!=GRIB_SUCCESS)
+    if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->month,month))!=GRIB_SUCCESS)
         return ret;
-    if ((ret=grib_set_long_internal(a->parent->h,self->year,year))!=GRIB_SUCCESS)
+    if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->year,year))!=GRIB_SUCCESS)
         return ret;
 
     return GRIB_SUCCESS;
 }
 
-static char* months[] = {
+static const char* months[] = {
         "jan","feb","mar","apr",
         "may","jun","jul","aug",
         "sep","oct","nov","dec",
@@ -254,13 +256,13 @@ static int unpack_string(grib_accessor* a, char* val, size_t *len)
     long day = 0;
     size_t l;
 
-    if ((ret=grib_get_long_internal(a->parent->h, self->century,&century))!=GRIB_SUCCESS)
+    if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->century,&century))!=GRIB_SUCCESS)
         return ret;
-    if ((ret=grib_get_long_internal(a->parent->h, self->day,&day))!=GRIB_SUCCESS)
+    if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->day,&day))!=GRIB_SUCCESS)
         return ret;
-    if ((ret=grib_get_long_internal(a->parent->h, self->month,&month))!=GRIB_SUCCESS)
+    if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->month,&month))!=GRIB_SUCCESS)
         return ret;
-    if ((ret=grib_get_long_internal(a->parent->h, self->year,&year))!=GRIB_SUCCESS)
+    if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->year,&year))!=GRIB_SUCCESS)
         return ret;
 
     if(*len < 1)
diff --git a/src/grib_accessor_class_g1day_of_the_year_date.c b/src/grib_accessor_class_g1day_of_the_year_date.c
index 51a2250..a911c1e 100644
--- a/src/grib_accessor_class_g1day_of_the_year_date.c
+++ b/src/grib_accessor_class_g1day_of_the_year_date.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -92,6 +92,7 @@ static grib_accessor_class _grib_accessor_class_g1day_of_the_year_date = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -129,6 +130,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -164,10 +166,10 @@ static int unpack_string(grib_accessor* a, char* val, size_t *len)
 
 	size_t l;
 
-	grib_get_long_internal(a->parent->h, self->century,&century);
-	grib_get_long_internal(a->parent->h, self->day,&day);
-	grib_get_long_internal(a->parent->h, self->month,&month);
-	grib_get_long_internal(a->parent->h, self->year,&year);
+	grib_get_long_internal(grib_handle_of_accessor(a), self->century,&century);
+	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;
diff --git a/src/grib_accessor_class_g1end_of_interval_monthly.c b/src/grib_accessor_class_g1end_of_interval_monthly.c
index 50022f8..fc5a569 100644
--- a/src/grib_accessor_class_g1end_of_interval_monthly.c
+++ b/src/grib_accessor_class_g1end_of_interval_monthly.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -93,6 +93,7 @@ static grib_accessor_class _grib_accessor_class_g1end_of_interval_monthly = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -129,6 +130,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -138,13 +140,13 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
   grib_accessor_g1end_of_interval_monthly* self = (grib_accessor_g1end_of_interval_monthly*)a;
   int n = 0;
 
-  self->verifyingMonth = grib_arguments_get_name(a->parent->h,c,n++);
+  self->verifyingMonth = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
   a->flags  |= GRIB_ACCESSOR_FLAG_READ_ONLY;
   a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
   a->flags |= GRIB_ACCESSOR_FLAG_HIDDEN;
 
   self->number_of_elements=6;
-  self->v=(double*)grib_context_malloc(a->parent->h->context,
+  self->v=(double*)grib_context_malloc(a->context,
                   sizeof(double)*self->number_of_elements);
 
   a->length=0;
@@ -163,7 +165,7 @@ static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
 
   if (!a->dirty) return GRIB_SUCCESS;
 
-  if((ret=grib_get_string(a->parent->h,self->verifyingMonth,verifyingMonth,&slen))
+  if((ret=grib_get_string(grib_handle_of_accessor(a),self->verifyingMonth,verifyingMonth,&slen))
        != GRIB_SUCCESS) return ret;
 
   date=atoi(verifyingMonth);
@@ -208,7 +210,7 @@ static void destroy(grib_context* c,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;
 
@@ -227,8 +229,8 @@ static int compare(grib_accessor* a, grib_accessor* b) {
 
   if (alen != blen) return GRIB_COUNT_MISMATCH;
 
-  aval=(double*)grib_context_malloc(a->parent->h->context,alen*sizeof(double));
-  bval=(double*)grib_context_malloc(b->parent->h->context,blen*sizeof(double));
+  aval=(double*)grib_context_malloc(a->context,alen*sizeof(double));
+  bval=(double*)grib_context_malloc(b->context,blen*sizeof(double));
 
   b->dirty=1;
   a->dirty=1;
@@ -236,16 +238,13 @@ static int compare(grib_accessor* a, grib_accessor* b) {
   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->parent->h->context,aval);
-  grib_context_free(b->parent->h->context,bval);
+  grib_context_free(a->context,aval);
+  grib_context_free(b->context,bval);
 
-  return GRIB_SUCCESS;
+  return retval;
 }
-
-
diff --git a/src/grib_accessor_class_g1fcperiod.c b/src/grib_accessor_class_g1fcperiod.c
index 96dcb40..9d91db8 100644
--- a/src/grib_accessor_class_g1fcperiod.c
+++ b/src/grib_accessor_class_g1fcperiod.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -93,6 +93,7 @@ static grib_accessor_class _grib_accessor_class_g1fcperiod = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -131,6 +132,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
diff --git a/src/grib_accessor_class_g1forecastmonth.c b/src/grib_accessor_class_g1forecastmonth.c
index 05cc78a..d8bbfc5 100644
--- a/src/grib_accessor_class_g1forecastmonth.c
+++ b/src/grib_accessor_class_g1forecastmonth.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -97,6 +97,7 @@ static grib_accessor_class _grib_accessor_class_g1forecastmonth = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -133,6 +134,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -142,11 +144,11 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
   grib_accessor_g1forecastmonth* self = (grib_accessor_g1forecastmonth*)a;
   int n = 0;
 
-  self->verification_yearmonth   = grib_arguments_get_name(a->parent->h,c,n++);
-  self->base_date                = grib_arguments_get_name(a->parent->h,c,n++);
-  self->day                      = grib_arguments_get_name(a->parent->h,c,n++);
-  self->hour                     = grib_arguments_get_name(a->parent->h,c,n++);
-  self->fcmonth                  = grib_arguments_get_name(a->parent->h,c,n++);
+  self->verification_yearmonth   = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->base_date                = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->day                      = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->hour                     = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->fcmonth                  = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 }
 
 static void dump(grib_accessor* a, grib_dumper* dumper)
@@ -173,16 +175,16 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
   long fcmonth = 0;
   long gribForecastMonth = 0;
 
-  if ((ret=grib_get_long_internal(a->parent->h,
+  if ((ret=grib_get_long_internal(grib_handle_of_accessor(a),
        self->verification_yearmonth,&verification_yearmonth))!=GRIB_SUCCESS)
     return ret;
-  if ((ret=grib_get_long_internal(a->parent->h, self->base_date,&base_date))!=GRIB_SUCCESS)
+  if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->base_date,&base_date))!=GRIB_SUCCESS)
     return ret;
-  if ((ret=grib_get_long_internal(a->parent->h, self->day,&day))!=GRIB_SUCCESS)
+  if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->day,&day))!=GRIB_SUCCESS)
     return ret;
-  if ((ret=grib_get_long_internal(a->parent->h, self->hour,&hour))!=GRIB_SUCCESS)
+  if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->hour,&hour))!=GRIB_SUCCESS)
     return ret;
-  if ((ret=grib_get_long_internal(a->parent->h, self->fcmonth,&gribForecastMonth))!=GRIB_SUCCESS)
+  if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->fcmonth,&gribForecastMonth))!=GRIB_SUCCESS)
     return ret;
 
   base_yearmonth = base_date / 100;
@@ -197,7 +199,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
     fcmonth++;
 
   if(gribForecastMonth != 0 && gribForecastMonth!=fcmonth) {
-	  grib_context_log(a->parent->h->context,GRIB_LOG_FATAL,"%s=%ld (%s-%s)=%ld",self->fcmonth,
+	  grib_context_log(a->context,GRIB_LOG_FATAL,"%s=%ld (%s-%s)=%ld",self->fcmonth,
 					   gribForecastMonth,self->base_date,self->verification_yearmonth,fcmonth);
 	  Assert(gribForecastMonth == fcmonth);
   }
@@ -212,6 +214,6 @@ 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_g1forecastmonth* self = (grib_accessor_g1forecastmonth*)a;
-  return grib_set_long_internal(a->parent->h,self->fcmonth, *val);
+  return grib_set_long_internal(grib_handle_of_accessor(a),self->fcmonth, *val);
 
 }
diff --git a/src/grib_accessor_class_g1monthlydate.c b/src/grib_accessor_class_g1monthlydate.c
index 8cb9158..ee38a06 100644
--- a/src/grib_accessor_class_g1monthlydate.c
+++ b/src/grib_accessor_class_g1monthlydate.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -93,6 +93,7 @@ static grib_accessor_class _grib_accessor_class_g1monthlydate = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -130,6 +131,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -139,7 +141,7 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 	grib_accessor_g1monthlydate* self = (grib_accessor_g1monthlydate*)a;
 	int n = 0;
 
-	self->date = grib_arguments_get_name(a->parent->h,c,n++);
+	self->date = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 	a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
 }
 
@@ -154,7 +156,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 
 	long date = 0;
 
-	grib_get_long_internal(a->parent->h, self->date,&date);
+	grib_get_long_internal(grib_handle_of_accessor(a), self->date,&date);
 
 	date /= 100;
 	date*=100;
diff --git a/src/grib_accessor_class_g1number_of_coded_values_sh_complex.c b/src/grib_accessor_class_g1number_of_coded_values_sh_complex.c
index a6320ac..b49573a 100644
--- a/src/grib_accessor_class_g1number_of_coded_values_sh_complex.c
+++ b/src/grib_accessor_class_g1number_of_coded_values_sh_complex.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -103,6 +103,7 @@ static grib_accessor_class _grib_accessor_class_g1number_of_coded_values_sh_comp
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -141,6 +142,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -149,14 +151,14 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
   int n=0;
   grib_accessor_g1number_of_coded_values_sh_complex* self = (grib_accessor_g1number_of_coded_values_sh_complex*)a;
-  self->bitsPerValue = grib_arguments_get_name(a->parent->h,c,n++);
-  self->offsetBeforeData = grib_arguments_get_name(a->parent->h,c,n++);
-  self->offsetAfterData = grib_arguments_get_name(a->parent->h,c,n++);
-  self->unusedBits = grib_arguments_get_name(a->parent->h,c,n++);
-  self->numberOfValues = grib_arguments_get_name(a->parent->h,c,n++);
-  self->JS = grib_arguments_get_name(a->parent->h,c,n++);
-  self->KS = grib_arguments_get_name(a->parent->h,c,n++);
-  self->MS = grib_arguments_get_name(a->parent->h,c,n++);
+  self->bitsPerValue = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->offsetBeforeData = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->offsetAfterData = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->unusedBits = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->numberOfValues = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->JS = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->KS = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->MS = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
   a->flags  |= GRIB_ACCESSOR_FLAG_READ_ONLY;
   a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
   a->length=0;
@@ -171,25 +173,25 @@ static int  unpack_long(grib_accessor* a, long* val, size_t *len)
 
   grib_accessor_g1number_of_coded_values_sh_complex* self = (grib_accessor_g1number_of_coded_values_sh_complex*)a;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->bitsPerValue,&bpv)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->bitsPerValue,&bpv)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->offsetBeforeData,&offsetBeforeData)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetBeforeData,&offsetBeforeData)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->offsetAfterData,&offsetAfterData)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetAfterData,&offsetAfterData)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->unusedBits,&unusedBits)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->unusedBits,&unusedBits)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->JS,&JS)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->JS,&JS)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->KS,&KS)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->KS,&KS)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->MS,&MS)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->MS,&MS)) != GRIB_SUCCESS)
     return ret;
 
   if (JS != KS || KS != MS) return GRIB_NOT_IMPLEMENTED;
@@ -199,7 +201,7 @@ static int  unpack_long(grib_accessor* a, long* val, size_t *len)
   if ( bpv != 0 ) {
 	*val =((offsetAfterData-offsetBeforeData)*8-unusedBits+NS*(bpv-32))/bpv; 
   } else {
-    if((ret = grib_get_long_internal(a->parent->h, self->numberOfValues,&numberOfValues)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->numberOfValues,&numberOfValues)) != GRIB_SUCCESS)
       return ret;
 
     *val=numberOfValues;
diff --git a/src/grib_accessor_class_g1number_of_coded_values_sh_simple.c b/src/grib_accessor_class_g1number_of_coded_values_sh_simple.c
index 42813ce..3c74dc8 100644
--- a/src/grib_accessor_class_g1number_of_coded_values_sh_simple.c
+++ b/src/grib_accessor_class_g1number_of_coded_values_sh_simple.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -97,6 +97,7 @@ static grib_accessor_class _grib_accessor_class_g1number_of_coded_values_sh_simp
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -135,6 +136,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -143,11 +145,11 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
   int n=0;
   grib_accessor_g1number_of_coded_values_sh_simple* self = (grib_accessor_g1number_of_coded_values_sh_simple*)a;
-  self->bitsPerValue = grib_arguments_get_name(a->parent->h,c,n++);
-  self->offsetBeforeData = grib_arguments_get_name(a->parent->h,c,n++);
-  self->offsetAfterData = grib_arguments_get_name(a->parent->h,c,n++);
-  self->unusedBits = grib_arguments_get_name(a->parent->h,c,n++);
-  self->numberOfValues = grib_arguments_get_name(a->parent->h,c,n++);
+  self->bitsPerValue = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->offsetBeforeData = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->offsetAfterData = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->unusedBits = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->numberOfValues = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
   a->flags  |= GRIB_ACCESSOR_FLAG_READ_ONLY;
   a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
   a->length=0;
@@ -161,22 +163,22 @@ static int  unpack_long(grib_accessor* a, long* val, size_t *len)
 
   grib_accessor_g1number_of_coded_values_sh_simple* self = (grib_accessor_g1number_of_coded_values_sh_simple*)a;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->bitsPerValue,&bpv)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->bitsPerValue,&bpv)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->offsetBeforeData,&offsetBeforeData)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetBeforeData,&offsetBeforeData)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->offsetAfterData,&offsetAfterData)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetAfterData,&offsetAfterData)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->unusedBits,&unusedBits)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->unusedBits,&unusedBits)) != GRIB_SUCCESS)
     return ret;
 
   if ( bpv != 0 ) {
      *val=((offsetAfterData-offsetBeforeData)*8-unusedBits)/bpv;
   } else {
-    if((ret = grib_get_long_internal(a->parent->h, self->numberOfValues,&numberOfValues)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->numberOfValues,&numberOfValues)) != GRIB_SUCCESS)
       return ret;
 
     *val=numberOfValues;
diff --git a/src/grib_accessor_class_g1p1p2.c b/src/grib_accessor_class_g1p1p2.c
index 2edc811..0b0412e 100644
--- a/src/grib_accessor_class_g1p1p2.c
+++ b/src/grib_accessor_class_g1p1p2.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -96,6 +96,7 @@ static grib_accessor_class _grib_accessor_class_g1p1p2 = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -131,6 +132,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -139,7 +141,7 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
     grib_accessor_g1p1p2* self = (grib_accessor_g1p1p2*)a;
     int n = 0;
-    self->p1        = grib_arguments_get_name(a->parent->h,c,n++);
+    self->p1        = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 }
 
 static void dump(grib_accessor* a, grib_dumper* dumper)
@@ -153,9 +155,9 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
     int err=0;
     long off=0;
     grib_accessor_g1p1p2* self = (grib_accessor_g1p1p2*)a;
-    grib_accessor* p1_accessor=grib_find_accessor( a->parent->h,self->p1);
+    grib_accessor* p1_accessor=grib_find_accessor( grib_handle_of_accessor(a),self->p1);
     off = p1_accessor->offset*8;
-    *val=grib_decode_unsigned_long(a->parent->h->buffer->data, &off, 16);
+    *val=grib_decode_unsigned_long(grib_handle_of_accessor(a)->buffer->data, &off, 16);
 
     return err;
 }
@@ -165,9 +167,9 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
     long off=0;
     int err=0;
     grib_accessor_g1p1p2* self = (grib_accessor_g1p1p2*)a;
-    grib_accessor* p1_accessor=grib_find_accessor( a->parent->h,self->p1);
+    grib_accessor* p1_accessor=grib_find_accessor( grib_handle_of_accessor(a),self->p1);
     off = p1_accessor->offset*8;
-    err = grib_encode_unsigned_long(a->parent->h->buffer->data, *val,&off,16);
+    err = grib_encode_unsigned_long(grib_handle_of_accessor(a)->buffer->data, *val,&off,16);
     if (err == GRIB_SUCCESS) len[0] = 1;
 
     return err;
diff --git a/src/grib_accessor_class_g1param.c b/src/grib_accessor_class_g1param.c
index 9abed0f..afd5290 100644
--- a/src/grib_accessor_class_g1param.c
+++ b/src/grib_accessor_class_g1param.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -89,6 +89,7 @@ static grib_accessor_class _grib_accessor_class_g1param = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -126,6 +127,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -134,8 +136,8 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
 	grib_accessor_g1param* self = (grib_accessor_g1param*)a; 
 	int n = 0;
-	self->parameter = grib_arguments_get_name(a->parent->h,c,n++);
-	self->table     = grib_arguments_get_name(a->parent->h,c,n++);
+	self->parameter = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+	self->table     = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 }
 
 static int pack_long(grib_accessor* a, const long* val, size_t *len)
@@ -147,10 +149,10 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
 
 	if(table == 0) table = 128;
 
-	err = grib_set_long_internal(a->parent->h,self->parameter,parameter);
+	err = grib_set_long_internal(grib_handle_of_accessor(a),self->parameter,parameter);
 	if(err) return err;
 
-	err = grib_set_long_internal(a->parent->h,self->table,table);
+	err = grib_set_long_internal(grib_handle_of_accessor(a),self->table,table);
 	return err;
 }
 
@@ -162,10 +164,10 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 	long parameter = 0;
 	long table = 0;
 
-	err = grib_get_long_internal(a->parent->h,self->parameter,&parameter);
+	err = grib_get_long_internal(grib_handle_of_accessor(a),self->parameter,&parameter);
 	if(err) return err;
 
-	err = grib_get_long_internal(a->parent->h,self->table,&table);
+	err = grib_get_long_internal(grib_handle_of_accessor(a),self->table,&table);
 	if(err) return err;
 
 	if(*len < 1)
diff --git a/src/grib_accessor_class_g1step_range.c b/src/grib_accessor_class_g1step_range.c
index e3985bc..db2df45 100644
--- a/src/grib_accessor_class_g1step_range.c
+++ b/src/grib_accessor_class_g1step_range.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -115,6 +115,7 @@ static grib_accessor_class _grib_accessor_class_g1step_range = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -146,6 +147,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -153,7 +155,7 @@ static void init_class(grib_accessor_class* c)
 static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
     grib_accessor_g1step_range* self = (grib_accessor_g1step_range*)a;
-    grib_handle* h=a->parent->h;
+    grib_handle* h=grib_handle_of_accessor(a);
     int n = 0;
     self->p1                  = grib_arguments_get_name(h,c,n++);
     self->p2                  = grib_arguments_get_name(h,c,n++);
@@ -236,29 +238,29 @@ int grib_g1_step_get_steps(grib_accessor* a,long* start,long* theEnd)
     long u2sf,u2sf_step_unit;
 
     if (self->step_unit != NULL)
-        grib_get_long_internal(a->parent->h,self->step_unit,&step_unit);
+        grib_get_long_internal(grib_handle_of_accessor(a),self->step_unit,&step_unit);
 
     if (err!=GRIB_SUCCESS) return err;
 
-    err = grib_get_long_internal(a->parent->h,self->unit,&unit);
+    err = grib_get_long_internal(grib_handle_of_accessor(a),self->unit,&unit);
     if(err)           return err;
 
-    err = grib_get_long_internal(a->parent->h,self->p1,&p1);
+    err = grib_get_long_internal(grib_handle_of_accessor(a),self->p1,&p1);
     if(err)               return err;
 
-    err = grib_get_long_internal(a->parent->h,self->p2,&p2);
+    err = grib_get_long_internal(grib_handle_of_accessor(a),self->p2,&p2);
     if(err)               return err;
 
-    err = grib_get_long_internal(a->parent->h,self->timeRangeIndicator,&timeRangeIndicator);
+    err = grib_get_long_internal(grib_handle_of_accessor(a),self->timeRangeIndicator,&timeRangeIndicator);
     if(err)  return err;
 
     /* TODO move to the def file */
-    err = grib_get_long(a->parent->h,"timeRangeIndicatorFromStepRange",&timeRangeIndicatorFromStepRange);
+    err = grib_get_long(grib_handle_of_accessor(a),"timeRangeIndicatorFromStepRange",&timeRangeIndicatorFromStepRange);
 
     if (timeRangeIndicatorFromStepRange==10) timeRangeIndicator=timeRangeIndicatorFromStepRange;
 
     if (self->stepType) {
-        err = grib_get_string_internal(a->parent->h,self->stepType,stepType,&stepTypeLen);
+        err = grib_get_string_internal(grib_handle_of_accessor(a),self->stepType,stepType,&stepTypeLen);
         if(err)  return err;
     } else sprintf(stepType,"unknown");
 
@@ -313,44 +315,45 @@ static int unpack_string(grib_accessor* a, char* val, size_t *len)
         char step_unit_string[10];
 
         if (self->step_unit != NULL)
-            grib_get_string(a->parent->h,self->step_unit,step_unit_string,&step_unit_string_len);
+            grib_get_string(grib_handle_of_accessor(a),self->step_unit,step_unit_string,&step_unit_string_len);
         else
             sprintf(step_unit_string,"h");
 
         if (error_on_units) {
-            grib_get_long_internal(a->parent->h,self->unit,&unit);
-            grib_set_long_internal(a->parent->h,self->step_unit,unit);
-            grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+            grib_get_long_internal(grib_handle_of_accessor(a),self->unit,&unit);
+            grib_set_long_internal(grib_handle_of_accessor(a),self->step_unit,unit);
+            grib_context_log(a->context,GRIB_LOG_ERROR,
                     "unable to represent the step in %s\n                    Hint: try changing the step units",
                     step_unit_string);
         }
         return err;
     }
 
-    err = grib_get_long_internal(a->parent->h,self->timeRangeIndicator,&timeRangeIndicator);
+    err = grib_get_long_internal(grib_handle_of_accessor(a),self->timeRangeIndicator,&timeRangeIndicator);
     if(err)  return err;
 
     if (self->stepType) {
-        err = grib_get_string_internal(a->parent->h,self->stepType,stepType,&stepTypeLen);
+        err = grib_get_string_internal(grib_handle_of_accessor(a),self->stepType,stepType,&stepTypeLen);
         if(err)  return err;
     } else sprintf(stepType,"unknown");
 
     /* Patch for olf forecast probabilities */
-    if(self->patch_fp_precip)
+    if (self->patch_fp_precip)
     {
         start += 24;
     }
 
-    if(strcmp(stepType,"instant") == 0) {
+    if (strcmp(stepType,"instant") == 0) {
         sprintf(buf,"%ld",start);
     }
-    else if( (strcmp(stepType,"avgfc") == 0) ||
-            (strcmp(stepType,"avgua") == 0) ||
-            (strcmp(stepType,"avgia") == 0) )
+    else if ( (strcmp(stepType,"avgfc") == 0)  ||
+              (strcmp(stepType,"avgua") == 0)  ||
+              (strcmp(stepType,"avgia") == 0)  ||
+              (strcmp(stepType,"varins") == 0) )
     {
         sprintf(buf,"%ld",start);
     }
-    else if(
+    else if (
             (strcmp(stepType,"accum") == 0) ||
             (strcmp(stepType,"avg") == 0)   ||
             (strcmp(stepType,"min") == 0)   ||
@@ -361,10 +364,9 @@ static int unpack_string(grib_accessor* a, char* val, size_t *len)
             (strcmp(stepType,"avgad") == 0) ||
             (strcmp(stepType,"avgid") == 0) ||
             (strcmp(stepType,"varas") == 0) ||
-            (strcmp(stepType,"varad") == 0) ||
-            (strcmp(stepType,"vari") == 0) )
+            (strcmp(stepType,"varad") == 0) )
     {
-        if(start == theEnd) {
+        if (start == theEnd) {
             sprintf(buf,"%ld",theEnd);
         }
         else
@@ -373,7 +375,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t *len)
         }
     }
     else {
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR, "Unknown stepType=[%s] timeRangeIndicator=[%ld]",stepType,timeRangeIndicator);
+        grib_context_log(a->context,GRIB_LOG_ERROR, "Unknown stepType=[%s] timeRangeIndicator=[%ld]",stepType,timeRangeIndicator);
         return GRIB_NOT_IMPLEMENTED;
     }
 
@@ -445,7 +447,7 @@ int grib_g1_step_apply_units(long *start,long *theEnd,long* step_unit,
 static int pack_string(grib_accessor* a, const char* val, size_t *len)
 {
     grib_accessor_g1step_range* self = (grib_accessor_g1step_range*)a;
-    grib_handle* h=a->parent->h;
+    grib_handle* h=grib_handle_of_accessor(a);
     long timeRangeIndicator=0,P1=0,P2=0;
     long start=0,theEnd=-1,unit=0,ounit=0,step_unit=1;
     int ret=0;
@@ -456,7 +458,7 @@ static int pack_string(grib_accessor* a, const char* val, size_t *len)
     size_t stepTypeLen=20;
 
     if (self->stepType) {
-        ret = grib_get_string_internal(a->parent->h,self->stepType,stepType,&stepTypeLen);
+        ret = grib_get_string_internal(grib_handle_of_accessor(a),self->stepType,stepType,&stepTypeLen);
         if(ret)  return ret;
     } else sprintf(stepType,"unknown");
 
@@ -517,13 +519,13 @@ static int pack_string(grib_accessor* a, const char* val, size_t *len)
             return ret;
         }
 
-        p1_accessor=grib_find_accessor( a->parent->h,self->p1);
+        p1_accessor=grib_find_accessor( grib_handle_of_accessor(a),self->p1);
         if (p1_accessor==NULL) {
             grib_context_log(h->context,GRIB_LOG_ERROR,"unable to find accessor %s",self->p1);
             return GRIB_NOT_FOUND;
         }
         off = p1_accessor->offset*8;
-        ret = grib_encode_unsigned_long(a->parent->h->buffer->data, P1,&off,16);
+        ret = grib_encode_unsigned_long(grib_handle_of_accessor(a)->buffer->data, P1,&off,16);
         if (ret!=0) return ret;
 
         if (ounit != unit)
@@ -556,13 +558,13 @@ static int pack_string(grib_accessor* a, const char* val, size_t *len)
                 return ret;
             }
 
-            p1_accessor=grib_find_accessor( a->parent->h,self->p1);
+            p1_accessor=grib_find_accessor( grib_handle_of_accessor(a),self->p1);
             if (p1_accessor==NULL) {
                 grib_context_log(h->context,GRIB_LOG_ERROR,"unable to find accessor %s",self->p1);
                 return GRIB_NOT_FOUND;
             }
             off = p1_accessor->offset*8;
-            ret = grib_encode_unsigned_long(a->parent->h->buffer->data, P1,&off,16);
+            ret = grib_encode_unsigned_long(grib_handle_of_accessor(a)->buffer->data, P1,&off,16);
             if (ret!=0) return ret;
 
             if (ounit != unit)
@@ -613,11 +615,11 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
     int err=0;
 
     if (self->stepType) {
-        err = grib_get_string_internal(a->parent->h,self->stepType,stepType,&stepTypeLen);
+        err = grib_get_string_internal(grib_handle_of_accessor(a),self->stepType,stepType,&stepTypeLen);
         if(err)  return err;
     } else sprintf(stepType,"unknown");
 
-    if(self->step_unit!=NULL && (err = grib_get_long_internal(a->parent->h,self->step_unit,&step_unit)))
+    if(self->step_unit!=NULL && (err = grib_get_long_internal(grib_handle_of_accessor(a),self->step_unit,&step_unit)))
         return err;
 
     switch (self->pack_index) {
diff --git a/src/grib_accessor_class_g1verificationdate.c b/src/grib_accessor_class_g1verificationdate.c
index 9e60b7a..c5fde93 100644
--- a/src/grib_accessor_class_g1verificationdate.c
+++ b/src/grib_accessor_class_g1verificationdate.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -92,6 +92,7 @@ static grib_accessor_class _grib_accessor_class_g1verificationdate = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -129,6 +130,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -138,9 +140,9 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 	grib_accessor_g1verificationdate* self = (grib_accessor_g1verificationdate*)a;
 	int n = 0;
 
-	self->date = grib_arguments_get_name(a->parent->h,c,n++);
-	self->time = grib_arguments_get_name(a->parent->h,c,n++);
-	self->step = grib_arguments_get_name(a->parent->h,c,n++);
+	self->date = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+	self->time = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+	self->step = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 
 	a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; 
 }
@@ -163,9 +165,9 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 	long vdate = 0;
 	long vd = 0;
 
-	if ((ret=grib_get_long_internal(a->parent->h, self->date,&date))!=GRIB_SUCCESS) return ret;
-  if ((ret=grib_get_long_internal(a->parent->h, self->time,&time))!=GRIB_SUCCESS) return ret;
-  if ((ret=grib_get_long_internal(a->parent->h, self->step,&step))!=GRIB_SUCCESS) return ret;
+	if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->date,&date))!=GRIB_SUCCESS) return ret;
+  if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->time,&time))!=GRIB_SUCCESS) return ret;
+  if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->step,&step))!=GRIB_SUCCESS) return ret;
 
   time /= 100;
 
diff --git a/src/grib_accessor_class_g2_chemical.c b/src/grib_accessor_class_g2_chemical.c
index fc967b0..aec6a41 100644
--- a/src/grib_accessor_class_g2_chemical.c
+++ b/src/grib_accessor_class_g2_chemical.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -93,6 +93,7 @@ static grib_accessor_class _grib_accessor_class_g2_chemical = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -129,6 +130,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -138,15 +140,15 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
     grib_accessor_g2_chemical* self = (grib_accessor_g2_chemical*)a;
     int n = 0;
 
-    self->productDefinitionTemplateNumber = grib_arguments_get_name(a->parent->h,c,n++);
-    self->stepType = grib_arguments_get_name(a->parent->h,c,n++);
+    self->productDefinitionTemplateNumber = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->stepType = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 }
 
 static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
     grib_accessor_g2_chemical* self = (grib_accessor_g2_chemical*)a;
     long productDefinitionTemplateNumber=0;
-    grib_get_long(a->parent->h, self->productDefinitionTemplateNumber,&productDefinitionTemplateNumber);
+    grib_get_long(grib_handle_of_accessor(a), self->productDefinitionTemplateNumber,&productDefinitionTemplateNumber);
 
     *val=is_productDefinitionTemplateNumber_Chemical(productDefinitionTemplateNumber);
 
@@ -168,14 +170,14 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
     /*long derivedForecast=-1;*/
     int ret = 0;
 
-    if (grib_get_long(a->parent->h, self->productDefinitionTemplateNumber,&productDefinitionTemplateNumber)!=GRIB_SUCCESS)
+    if (grib_get_long(grib_handle_of_accessor(a), self->productDefinitionTemplateNumber,&productDefinitionTemplateNumber)!=GRIB_SUCCESS)
         return GRIB_SUCCESS;
 
     /*
-     grib_get_long(a->parent->h, self->type,&type);
-     grib_get_long(a->parent->h, self->stream,&stream);
+     grib_get_long(grib_handle_of_accessor(a), self->type,&type);
+     grib_get_long(grib_handle_of_accessor(a), self->stream,&stream);
      */
-    ret = grib_get_string(a->parent->h, self->stepType, stepType, &slen);
+    ret = grib_get_string(grib_handle_of_accessor(a), self->stepType, stepType, &slen);
     Assert(ret == GRIB_SUCCESS);
 
     eps = is_productDefinitionTemplateNumber_EPS(productDefinitionTemplateNumber);
@@ -197,8 +199,8 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
     }
 
     if (productDefinitionTemplateNumber != productDefinitionTemplateNumberNew) {
-        grib_set_long(a->parent->h, self->productDefinitionTemplateNumber,productDefinitionTemplateNumberNew);
-        /*if (derivedForecast>=0) grib_set_long(a->parent->h, self->derivedForecast,derivedForecast);*/
+        grib_set_long(grib_handle_of_accessor(a), self->productDefinitionTemplateNumber,productDefinitionTemplateNumberNew);
+        /*if (derivedForecast>=0) grib_set_long(grib_handle_of_accessor(a), self->derivedForecast,derivedForecast);*/
     }
 
     return 0;
diff --git a/src/grib_accessor_class_g2_eps.c b/src/grib_accessor_class_g2_eps.c
index 7e676e4..9d258ad 100644
--- a/src/grib_accessor_class_g2_eps.c
+++ b/src/grib_accessor_class_g2_eps.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -104,6 +104,7 @@ static grib_accessor_class _grib_accessor_class_g2_eps = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -140,6 +141,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -149,11 +151,11 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
     grib_accessor_g2_eps* self = (grib_accessor_g2_eps*)a;
     int n = 0;
 
-    self->productDefinitionTemplateNumber = grib_arguments_get_name(a->parent->h,c,n++);
-    self->type = grib_arguments_get_name(a->parent->h,c,n++);
-    self->stream = grib_arguments_get_name(a->parent->h,c,n++);
-    self->stepType = grib_arguments_get_name(a->parent->h,c,n++);
-    self->derivedForecast = grib_arguments_get_name(a->parent->h,c,n++);
+    self->productDefinitionTemplateNumber = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->type = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->stream = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->stepType = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->derivedForecast = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 }
 
 static int unpack_long(grib_accessor* a, long* val, size_t *len)
@@ -161,7 +163,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
     grib_accessor_g2_eps* self = (grib_accessor_g2_eps*)a;
     long productDefinitionTemplateNumber=0;
 
-    grib_get_long(a->parent->h, self->productDefinitionTemplateNumber,&productDefinitionTemplateNumber);
+    grib_get_long(grib_handle_of_accessor(a), self->productDefinitionTemplateNumber,&productDefinitionTemplateNumber);
 
     *val=0;
     if (is_productDefinitionTemplateNumber_EPS(productDefinitionTemplateNumber))
@@ -183,12 +185,12 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
     int isInstant=0;
     long derivedForecast=-1;
 
-    if (grib_get_long(a->parent->h, self->productDefinitionTemplateNumber,&productDefinitionTemplateNumber)!=GRIB_SUCCESS)
+    if (grib_get_long(grib_handle_of_accessor(a), self->productDefinitionTemplateNumber,&productDefinitionTemplateNumber)!=GRIB_SUCCESS)
         return GRIB_SUCCESS;
 
-    grib_get_long(a->parent->h, self->type,&type);
-    grib_get_long(a->parent->h, self->stream,&stream);
-    grib_get_string(a->parent->h, self->stepType,stepType,&slen);
+    grib_get_long(grib_handle_of_accessor(a), self->type,&type);
+    grib_get_long(grib_handle_of_accessor(a), self->stream,&stream);
+    grib_get_string(grib_handle_of_accessor(a), self->stepType,stepType,&slen);
     if (!strcmp(stepType,"instant")) isInstant=1;
 /*TODO chemicals*/
     /* eps or stream=(enda or elda or ewla) */
@@ -225,9 +227,9 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
     }
 
     if (productDefinitionTemplateNumber != productDefinitionTemplateNumberNew) {
-        grib_set_long(a->parent->h, self->productDefinitionTemplateNumber,productDefinitionTemplateNumberNew);
+        grib_set_long(grib_handle_of_accessor(a), self->productDefinitionTemplateNumber,productDefinitionTemplateNumberNew);
         if (derivedForecast>=0)
-            grib_set_long(a->parent->h, self->derivedForecast,derivedForecast);
+            grib_set_long(grib_handle_of_accessor(a), self->derivedForecast,derivedForecast);
     }
 
     return 0;
diff --git a/src/grib_accessor_class_g2_mars_labeling.c b/src/grib_accessor_class_g2_mars_labeling.c
index 48fd819..02c781f 100644
--- a/src/grib_accessor_class_g2_mars_labeling.c
+++ b/src/grib_accessor_class_g2_mars_labeling.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -115,6 +115,7 @@ static grib_accessor_class _grib_accessor_class_g2_mars_labeling = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -148,6 +149,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -157,16 +159,16 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
     grib_accessor_g2_mars_labeling* self = (grib_accessor_g2_mars_labeling*)a;
     int n = 0;
 
-    self->index = grib_arguments_get_long(a->parent->h,c,n++);
-    self->the_class = grib_arguments_get_name(a->parent->h,c,n++);
-    self->type = grib_arguments_get_name(a->parent->h,c,n++);
-    self->stream = grib_arguments_get_name(a->parent->h,c,n++);
-    self->expver = grib_arguments_get_name(a->parent->h,c,n++);
-    self->typeOfProcessedData = grib_arguments_get_name(a->parent->h,c,n++);
-    self->productDefinitionTemplateNumber = grib_arguments_get_name(a->parent->h,c,n++);
-    self->stepType = grib_arguments_get_name(a->parent->h,c,n++);
-    self->derivedForecast = grib_arguments_get_name(a->parent->h,c,n++);
-    self->typeOfGeneratingProcess = grib_arguments_get_name(a->parent->h,c,n++);
+    self->index = grib_arguments_get_long(grib_handle_of_accessor(a),c,n++);
+    self->the_class = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->type = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->stream = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->expver = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->typeOfProcessedData = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->productDefinitionTemplateNumber = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->stepType = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->derivedForecast = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->typeOfGeneratingProcess = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 }
 
 static int unpack_long(grib_accessor* a, long* val, size_t *len)
@@ -185,13 +187,13 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
         key=(char*)self->stream;
         break;
     default :
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+        grib_context_log(a->context,GRIB_LOG_ERROR,
                 "invalid first argument of g2_mars_labeling in %s",a->name);
         return GRIB_INTERNAL_ERROR;
         break;
     }
 
-    return grib_get_long(a->parent->h, key,val);
+    return grib_get_long(grib_handle_of_accessor(a), key,val);
 }
 
 static int unpack_string(grib_accessor* a, char* val, size_t *len)
@@ -210,13 +212,13 @@ static int unpack_string(grib_accessor* a, char* val, size_t *len)
         key=(char*)self->stream;
         break;
     default :
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+        grib_context_log(a->context,GRIB_LOG_ERROR,
                 "invalid first argument of g2_mars_labeling in %s",a->name);
         return GRIB_INTERNAL_ERROR;
         break;
     }
 
-    return grib_get_string(a->parent->h, key,val,len);
+    return grib_get_string(grib_handle_of_accessor(a), key,val,len);
 
 }
 
@@ -287,7 +289,7 @@ static int extra_set(grib_accessor* a,long val)
             break;
         case 17:	/* Ensemble mean  (em) */
             derivedForecast=0;
-            grib_get_string(a->parent->h,self->stepType,stepType,&stepTypelen);
+            grib_get_string(grib_handle_of_accessor(a),self->stepType,stepType,&stepTypelen);
             if (!strcmp(stepType,"instant")) {
                 productDefinitionTemplateNumberNew=2;
             } else {
@@ -298,7 +300,7 @@ static int extra_set(grib_accessor* a,long val)
             break;
         case 18:	/* Ensemble standard deviation     (es) */
             derivedForecast=4;
-            grib_get_string(a->parent->h,self->stepType,stepType,&stepTypelen);
+            grib_get_string(grib_handle_of_accessor(a),self->stepType,stepType,&stepTypelen);
             if (!strcmp(stepType,"instant")) {
                 productDefinitionTemplateNumberNew=2;
             } else {
@@ -370,6 +372,7 @@ static int extra_set(grib_accessor* a,long val)
         case 81:	/* Forecast maximum     (fcmax) */
         case 82:	/* Forecast minimum     (fcmin) */
         case 83:	/* Forecast standard deviation  (fcstdev) */
+        case 87:	/* Simulated satellite data */
         case 88:	/* Gridded satellite data */
         case 89:	/* GFAS analysis */
             typeOfProcessedData=255;
@@ -381,7 +384,7 @@ static int extra_set(grib_accessor* a,long val)
             typeOfGeneratingProcess=4;
             break;
         default :
-            grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"unknown mars.type %d",(int)val);
+            grib_context_log(a->context,GRIB_LOG_ERROR,"unknown mars.type %d",(int)val);
             return GRIB_ENCODING_ERROR;
         }
         case 2:
@@ -390,7 +393,7 @@ static int extra_set(grib_accessor* a,long val)
             case 1030:  /* enda */
             case 1249:  /* elda */
             case 1250:  /* ewla */
-                grib_get_string(a->parent->h,self->stepType,stepType,&stepTypelen);
+                grib_get_string(grib_handle_of_accessor(a),self->stepType,stepType,&stepTypelen);
                 if (!strcmp(stepType,"instant")) {
                     productDefinitionTemplateNumberNew=1;
                 } else {
@@ -400,26 +403,26 @@ static int extra_set(grib_accessor* a,long val)
             }
             break;
         default :
-            grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+            grib_context_log(a->context,GRIB_LOG_ERROR,
                         "invalid first argument of g2_mars_labeling in %s",a->name);
             return GRIB_INTERNAL_ERROR;
             break;
     }
 
     if (productDefinitionTemplateNumberNew>=0) {
-        grib_get_long(a->parent->h,self->productDefinitionTemplateNumber,&productDefinitionTemplateNumber);
+        grib_get_long(grib_handle_of_accessor(a),self->productDefinitionTemplateNumber,&productDefinitionTemplateNumber);
         if (productDefinitionTemplateNumber!=productDefinitionTemplateNumberNew)
-            grib_set_long(a->parent->h,self->productDefinitionTemplateNumber,productDefinitionTemplateNumberNew);
+            grib_set_long(grib_handle_of_accessor(a),self->productDefinitionTemplateNumber,productDefinitionTemplateNumberNew);
     }
 
     if (derivedForecast>=0) {
-        grib_set_long(a->parent->h,self->derivedForecast,derivedForecast);
+        grib_set_long(grib_handle_of_accessor(a),self->derivedForecast,derivedForecast);
     }
 
     if (typeOfProcessedData>0)
-        grib_set_long(a->parent->h,self->typeOfProcessedData,typeOfProcessedData);
+        grib_set_long(grib_handle_of_accessor(a),self->typeOfProcessedData,typeOfProcessedData);
     if (typeOfGeneratingProcess>0)
-        grib_set_long(a->parent->h,self->typeOfGeneratingProcess,typeOfGeneratingProcess);
+        grib_set_long(grib_handle_of_accessor(a),self->typeOfGeneratingProcess,typeOfGeneratingProcess);
 
     return ret;
 }
@@ -442,16 +445,16 @@ static int pack_string(grib_accessor* a, const char* val, size_t *len)
         key=(char*)self->stream;
         break;
     default :
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+        grib_context_log(a->context,GRIB_LOG_ERROR,
                 "invalid first argument of g2_mars_labeling in %s",a->name);
         return GRIB_INTERNAL_ERROR;
         break;
     }
 
-    ret=grib_set_string(a->parent->h, key,val,len);
+    ret=grib_set_string(grib_handle_of_accessor(a), key,val,len);
     if (ret) return ret; /* failed */
 
-    ret=grib_get_long(a->parent->h, key,&lval);
+    ret=grib_get_long(grib_handle_of_accessor(a), key,&lval);
     if (ret) return ret; /* failed */
 
     return extra_set(a,lval);
@@ -474,13 +477,13 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
         key=(char*)self->stream;
         break;
     default :
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+        grib_context_log(a->context,GRIB_LOG_ERROR,
                 "invalid first argument of g2_mars_labeling in %s",a->name);
         return GRIB_INTERNAL_ERROR;
         break;
     }
 
-    ret=grib_set_long(a->parent->h, key,*val);
+    ret=grib_set_long(grib_handle_of_accessor(a), key,*val);
     if (ret) return ret; /* failed */
 
     return extra_set(a,*val);
@@ -510,14 +513,14 @@ static int  get_native_type(grib_accessor* a)
         key=(char*)self->stream;
         break;
     default :
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+        grib_context_log(a->context,GRIB_LOG_ERROR,
                 "invalid first argument of g2_mars_labeling in %s",a->name);
         return GRIB_INTERNAL_ERROR;
         break;
     }
 
-    ret=grib_get_native_type(a->parent->h,key,&type);
-    if (ret) grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+    ret=grib_get_native_type(grib_handle_of_accessor(a),key,&type);
+    if (ret) grib_context_log(a->context,GRIB_LOG_ERROR,
             "unable to get native type for %s",key);
     return type;
 }
diff --git a/src/grib_accessor_class_g2bitmap.c b/src/grib_accessor_class_g2bitmap.c
index b191b5b..0ccc084 100644
--- a/src/grib_accessor_class_g2bitmap.c
+++ b/src/grib_accessor_class_g2bitmap.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -93,6 +93,7 @@ static grib_accessor_class _grib_accessor_class_g2bitmap = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -130,6 +131,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -141,7 +143,7 @@ static void init(grib_accessor* a, const long len , grib_arguments* arg )
 
 	grib_accessor_g2bitmap* self = (grib_accessor_g2bitmap*)a;
   
-	self->numberOfValues     = grib_arguments_get_name(a->parent->h,arg,4);
+	self->numberOfValues     = grib_arguments_get_name(grib_handle_of_accessor(a),arg,4);
 }
 
 
@@ -166,11 +168,11 @@ static int pack_double(grib_accessor* a, const double* val,size_t *len){
 	double miss_values = 0;
 	tlen = (*len+7)/8;
 
-	if((err = grib_get_double_internal(a->parent->h, self->missing_value, &miss_values))
+	if((err = grib_get_double_internal(grib_handle_of_accessor(a), self->missing_value, &miss_values))
        != GRIB_SUCCESS)
 		return err;
 
-	buf = (unsigned char*)grib_context_malloc_clear(a->parent->h->context,tlen);
+	buf = (unsigned char*)grib_context_malloc_clear(a->context,tlen);
 	if(!buf) return GRIB_OUT_OF_MEMORY;
 	pos=0;
 	for(i=0;i<*len;i++)
@@ -183,14 +185,14 @@ static int pack_double(grib_accessor* a, const double* val,size_t *len){
 		}
 	}
 
-	if((err = grib_set_long_internal(a->parent->h, self->numberOfValues,*len )) != GRIB_SUCCESS) {
-		grib_context_free(a->parent->h->context,buf);
+	if((err = grib_set_long_internal(grib_handle_of_accessor(a), self->numberOfValues,*len )) != GRIB_SUCCESS) {
+		grib_context_free(a->context,buf);
 		return err;
 	}
 
 	grib_buffer_replace(a, buf, tlen,1,1); 
 
-	grib_context_free(a->parent->h->context,buf);
+	grib_context_free(a->context,buf);
 
 	return GRIB_SUCCESS;
 }
@@ -202,7 +204,7 @@ static int value_count(grib_accessor* a,long* tlen)
 	int err;
 	*tlen=0;
 	
-	err=grib_get_long_internal(a->parent->h, self->numberOfValues, tlen);
+	err=grib_get_long_internal(grib_handle_of_accessor(a), self->numberOfValues, tlen);
 	return err;
 }
 
diff --git a/src/grib_accessor_class_g2bitmap_present.c b/src/grib_accessor_class_g2bitmap_present.c
index 061811b..c51f604 100644
--- a/src/grib_accessor_class_g2bitmap_present.c
+++ b/src/grib_accessor_class_g2bitmap_present.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -91,6 +91,7 @@ static grib_accessor_class _grib_accessor_class_g2bitmap_present = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -128,6 +129,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -136,7 +138,7 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
   int n=0;
   grib_accessor_g2bitmap_present* self = (grib_accessor_g2bitmap_present*)a;
-  self->bitmapIndicator = grib_arguments_get_name(a->parent->h,c,n++);
+  self->bitmapIndicator = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 
   a->length=0;
 }
@@ -148,7 +150,7 @@ static int  unpack_long(grib_accessor* a, long* val, size_t *len)
 
   grib_accessor_g2bitmap_present* self = (grib_accessor_g2bitmap_present*)a;
 
-  ret = grib_get_long_internal(a->parent->h, self->bitmapIndicator,&bitmapIndicator);
+  ret = grib_get_long_internal(grib_handle_of_accessor(a), self->bitmapIndicator,&bitmapIndicator);
   if (ret) {
   	if (ret==GRIB_NOT_FOUND) {
 		*val=0;
@@ -171,5 +173,5 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
   if (*val==0) bitmapIndicator=255;
    
   
-  return grib_set_long(a->parent->h,self->bitmapIndicator,bitmapIndicator);
+  return grib_set_long(grib_handle_of_accessor(a),self->bitmapIndicator,bitmapIndicator);
 }
diff --git a/src/grib_accessor_class_g2date.c b/src/grib_accessor_class_g2date.c
index 94437cf..e451af8 100644
--- a/src/grib_accessor_class_g2date.c
+++ b/src/grib_accessor_class_g2date.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -94,6 +94,7 @@ static grib_accessor_class _grib_accessor_class_g2date = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -130,6 +131,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -140,9 +142,9 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 	grib_accessor_g2date* self = (grib_accessor_g2date*)a; 
 	int n = 0;
 
-	self->year  = grib_arguments_get_name(a->parent->h,c,n++);
-	self->month = grib_arguments_get_name(a->parent->h,c,n++);
-	self->day   = grib_arguments_get_name(a->parent->h,c,n++);
+	self->year  = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+	self->month = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+	self->day   = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 
 }
 
@@ -161,9 +163,9 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 	long month = 0;
 	long day = 0;
 
-	if ((ret=grib_get_long_internal(a->parent->h, self->day,&day))!=GRIB_SUCCESS) return ret;
-  if ((ret=grib_get_long_internal(a->parent->h, self->month,&month))!=GRIB_SUCCESS) return ret;
-  if ((ret=grib_get_long_internal(a->parent->h, self->year,&year))!=GRIB_SUCCESS) return ret;
+	if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->day,&day))!=GRIB_SUCCESS) return ret;
+  if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->month,&month))!=GRIB_SUCCESS) return ret;
+  if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->year,&year))!=GRIB_SUCCESS) return ret;
 
 	if(*len < 1)
 		return GRIB_WRONG_ARRAY_SIZE;
@@ -193,9 +195,9 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
 	month   =  v / 100;     v %= 100;
 	day     =  v;
 
-  if ((ret=grib_set_long_internal(a->parent->h,self->day,day))!=GRIB_SUCCESS) return ret;
-  if ((ret=grib_set_long_internal(a->parent->h,self->month,month))!=GRIB_SUCCESS) return ret;
-  if ((ret=grib_set_long_internal(a->parent->h,self->year,year))!=GRIB_SUCCESS) return ret;
+  if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->day,day))!=GRIB_SUCCESS) return ret;
+  if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->month,month))!=GRIB_SUCCESS) return ret;
+  if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->year,year))!=GRIB_SUCCESS) return ret;
 
 	return GRIB_SUCCESS;
 }
diff --git a/src/grib_accessor_class_g2end_step.c b/src/grib_accessor_class_g2end_step.c
index dabe0ba..918d81b 100644
--- a/src/grib_accessor_class_g2end_step.c
+++ b/src/grib_accessor_class_g2end_step.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -126,6 +126,7 @@ static grib_accessor_class _grib_accessor_class_g2end_step = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -162,6 +163,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -171,27 +173,27 @@ 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;
 
-    self->start_step = grib_arguments_get_name(a->parent->h,c,n++);
-    self->unit  = grib_arguments_get_name(a->parent->h,c,n++);
-
-    self->year = grib_arguments_get_name(a->parent->h,c,n++);
-    self->month = grib_arguments_get_name(a->parent->h,c,n++);
-    self->day = grib_arguments_get_name(a->parent->h,c,n++);
-    self->hour  = grib_arguments_get_name(a->parent->h,c,n++);
-    self->minute  = grib_arguments_get_name(a->parent->h,c,n++);
-    self->second  = grib_arguments_get_name(a->parent->h,c,n++);
-
-    self->year_of_end_of_interval = grib_arguments_get_name(a->parent->h,c,n++);
-    self->month_of_end_of_interval  = grib_arguments_get_name(a->parent->h,c,n++);
-    self->day_of_end_of_interval  = grib_arguments_get_name(a->parent->h,c,n++);
-    self->hour_of_end_of_interval = grib_arguments_get_name(a->parent->h,c,n++);
-    self->minute_of_end_of_interval = grib_arguments_get_name(a->parent->h,c,n++);
-    self->second_of_end_of_interval = grib_arguments_get_name(a->parent->h,c,n++);
-
-    self->coded_unit  = grib_arguments_get_name(a->parent->h,c,n++);
-    self->coded_time_range  = grib_arguments_get_name(a->parent->h,c,n++);
-    self->typeOfTimeIncrement = grib_arguments_get_name(a->parent->h,c,n++);
-    self->numberOfTimeRange = grib_arguments_get_name(a->parent->h,c,n++);
+    self->start_step = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->unit  = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+
+    self->year = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->month = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->day = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->hour  = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->minute  = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->second  = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+
+    self->year_of_end_of_interval = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->month_of_end_of_interval  = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->day_of_end_of_interval  = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->hour_of_end_of_interval = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->minute_of_end_of_interval = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->second_of_end_of_interval = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+
+    self->coded_unit  = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->coded_time_range  = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->typeOfTimeIncrement = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->numberOfTimeRange = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 }
 
 static void dump(grib_accessor* a, grib_dumper* dumper)
@@ -238,15 +240,14 @@ static int u2s[] =  {
 /* See GRIB-488 */
 static int is_special_expver(grib_handle* h)
 {
-    if (grib_is_defined(h, "experimentVersionNumber")) {
-        int ret = 0;
-        char strExpVer[50]={0,};
-        size_t slen=50;
-        ret = grib_get_string(h, "experimentVersionNumber", strExpVer, &slen);
-        if (ret == GRIB_SUCCESS && !strcmp(strExpVer, "1605")) {
-            return 1; /* Special case of expVer 1605! */
-        }
+    int ret = 0;
+    char strExpVer[50]={0,};
+    size_t slen=50;
+    ret = grib_get_string(h, "experimentVersionNumber", strExpVer, &slen);
+    if (ret == GRIB_SUCCESS && !strcmp(strExpVer, "1605")) {
+        return 1; /* Special case of expVer 1605! */
     }
+
     return 0;
 }
 
@@ -295,7 +296,7 @@ static int unpack_one_time_range(grib_accessor* a, long* val, size_t *len)
     long coded_time_range, typeOfTimeIncrement;
     int add_time_range = 1; /* whether we add lengthOfTimeRange */
 
-    grib_handle* h = a->parent->h;
+    grib_handle* h = grib_handle_of_accessor(a);
 
     if((err = grib_get_long_internal(h,self->start_step,&start_step))) return err;
     if((err = grib_get_long_internal(h,self->unit,&unit))) return err;
@@ -328,7 +329,7 @@ static int unpack_multiple_time_ranges(grib_accessor* a, long* val, size_t *len)
 {
     grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a;
     int i = 0, err = 0;
-    grib_handle* h = a->parent->h;
+    grib_handle* h = grib_handle_of_accessor(a);
     long numberOfTimeRange = 0, unit = 0, start_step = 0;
 
     size_t count = 0;
@@ -376,7 +377,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
     int err = 0;
     long start_step;
     long numberOfTimeRange;
-    grib_handle* h=a->parent->h;
+    grib_handle* h=grib_handle_of_accessor(a);
 
     if((err = grib_get_long_internal(h,self->start_step,&start_step))) return err;
 
@@ -413,7 +414,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
     long u2sf,u2sf_step_unit;
     int add_time_range = 1; /* whether we add lengthOfTimeRange */
 
-    grib_handle* h=a->parent->h;
+    grib_handle* h=grib_handle_of_accessor(a);
 
     if((err = grib_get_long_internal(h,self->start_step,&start_step))) return err;
 
@@ -476,7 +477,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_g2end_step* self = (grib_accessor_g2end_step*)a;
-    grib_handle* h=a->parent->h;
+    grib_handle* h=grib_handle_of_accessor(a);
 
     int err = 0;
 
@@ -537,16 +538,16 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
             &minute_of_end_of_interval,&second_of_end_of_interval);
     if (err!=GRIB_SUCCESS) return err;
 
-    if((err = grib_set_long_internal(a->parent->h,self->year_of_end_of_interval,  year_of_end_of_interval))) return err;
-    if((err = grib_set_long_internal(a->parent->h,self->month_of_end_of_interval, month_of_end_of_interval))) return err;
-    if((err = grib_set_long_internal(a->parent->h,self->day_of_end_of_interval,   day_of_end_of_interval))) return err;
-    if((err = grib_set_long_internal(a->parent->h,self->hour_of_end_of_interval,  hour_of_end_of_interval))) return err;
-    if((err = grib_set_long_internal(a->parent->h,self->minute_of_end_of_interval, minute_of_end_of_interval))) return err;
-    if((err = grib_set_long_internal(a->parent->h,self->second_of_end_of_interval, second_of_end_of_interval))) return err;
+    if((err = grib_set_long_internal(grib_handle_of_accessor(a),self->year_of_end_of_interval,  year_of_end_of_interval))) return err;
+    if((err = grib_set_long_internal(grib_handle_of_accessor(a),self->month_of_end_of_interval, month_of_end_of_interval))) return err;
+    if((err = grib_set_long_internal(grib_handle_of_accessor(a),self->day_of_end_of_interval,   day_of_end_of_interval))) return err;
+    if((err = grib_set_long_internal(grib_handle_of_accessor(a),self->hour_of_end_of_interval,  hour_of_end_of_interval))) return err;
+    if((err = grib_set_long_internal(grib_handle_of_accessor(a),self->minute_of_end_of_interval, minute_of_end_of_interval))) return err;
+    if((err = grib_set_long_internal(grib_handle_of_accessor(a),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(a->parent->h,self->coded_unit, coded_unit))) return err;
+        if((err = grib_set_long_internal(grib_handle_of_accessor(a),self->coded_unit, coded_unit))) return err;
         coded_time_range=time_range;
     } else
         coded_time_range=(time_range*u2s[unit])/u2s2[coded_unit];
@@ -554,7 +555,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
     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(a->parent->h,self->coded_time_range, coded_time_range))) return err;
+        if((err = grib_set_long_internal(grib_handle_of_accessor(a),self->coded_time_range, coded_time_range))) return err;
     }
 
     return GRIB_SUCCESS;
diff --git a/src/grib_accessor_class_g2grid.c b/src/grib_accessor_class_g2grid.c
index a5a9d59..976da67 100644
--- a/src/grib_accessor_class_g2grid.c
+++ b/src/grib_accessor_class_g2grid.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -107,6 +107,7 @@ static grib_accessor_class _grib_accessor_class_g2grid = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -143,6 +144,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -152,14 +154,14 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
   grib_accessor_g2grid* self = (grib_accessor_g2grid*)a;
   int n = 0;
 
-  self->latitude_first      = grib_arguments_get_name(a->parent->h,c,n++);
-  self->longitude_first     = grib_arguments_get_name(a->parent->h,c,n++);
-  self->latitude_last       = grib_arguments_get_name(a->parent->h,c,n++);
-  self->longitude_last      = grib_arguments_get_name(a->parent->h,c,n++);
-  self->i_increment         = grib_arguments_get_name(a->parent->h,c,n++);
-  self->j_increment         = grib_arguments_get_name(a->parent->h,c,n++);
-  self->basic_angle         = grib_arguments_get_name(a->parent->h,c,n++);
-  self->sub_division        = grib_arguments_get_name(a->parent->h,c,n++);
+  self->latitude_first      = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->longitude_first     = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->latitude_last       = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->longitude_last      = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->i_increment         = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->j_increment         = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->basic_angle         = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->sub_division        = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 
   a->flags |=
     GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC |
@@ -190,10 +192,10 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
     return ret;
   }
 
-  if((ret = grib_get_long_internal(a->parent->h, self->basic_angle,&basic_angle)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->basic_angle,&basic_angle)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->sub_division,&sub_division)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->sub_division,&sub_division)) != GRIB_SUCCESS)
     return ret;
 
 
@@ -206,27 +208,27 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
     basic_angle = 1;
 
   n = 0;
-  if((ret = grib_get_long_internal(a->parent->h, self->latitude_first,&v[n++])) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->latitude_first,&v[n++])) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->longitude_first,&v[n++])) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->longitude_first,&v[n++])) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->latitude_last,&v[n++])) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->latitude_last,&v[n++])) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->longitude_last,&v[n++])) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->longitude_last,&v[n++])) != GRIB_SUCCESS)
     return ret;
 
   if(!self->i_increment)  v[n++] = GRIB_MISSING_LONG;
   else
-    if((ret = grib_get_long_internal(a->parent->h, self->i_increment,&v[n++])) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->i_increment,&v[n++])) != GRIB_SUCCESS)
       return ret;
 
   if(!self->j_increment)  v[n++] = GRIB_MISSING_LONG;
   else
     if(self->j_increment)
-      if((ret = grib_get_long_internal(a->parent->h, self->j_increment,&v[n++])) != GRIB_SUCCESS)
+      if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->j_increment,&v[n++])) != GRIB_SUCCESS)
         return ret;
 
   for(i = 0 ; i < n ; i++)
@@ -346,7 +348,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     sub_division = 1000000;
 
     if(!is_ok(val,v,basic_angle,sub_division))
-      grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG,"Grid cannot be coded with any loss of precision");
+      grib_context_log(a->context,GRIB_LOG_DEBUG,"Grid cannot be coded with any loss of precision");
   }
 
   if(basic_angle == 1 && sub_division == 1000000)
@@ -355,33 +357,33 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     sub_division = GRIB_MISSING_LONG;
   }
 
-  if((ret = grib_set_long_internal(a->parent->h, self->basic_angle,basic_angle)) != GRIB_SUCCESS)
+  if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->basic_angle,basic_angle)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_set_long_internal(a->parent->h, self->sub_division,sub_division)) != GRIB_SUCCESS)
+  if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->sub_division,sub_division)) != GRIB_SUCCESS)
     return ret;
 
   n = 0;
-  if((ret = grib_set_long_internal(a->parent->h, self->latitude_first,v[n++])) != GRIB_SUCCESS)
+  if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->latitude_first,v[n++])) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_set_long_internal(a->parent->h, self->longitude_first,v[n++])) != GRIB_SUCCESS)
+  if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->longitude_first,v[n++])) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_set_long_internal(a->parent->h, self->latitude_last,v[n++])) != GRIB_SUCCESS)
+  if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->latitude_last,v[n++])) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_set_long_internal(a->parent->h, self->longitude_last,v[n++])) != GRIB_SUCCESS)
+  if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->longitude_last,v[n++])) != GRIB_SUCCESS)
     return ret;
 
   if(!self->i_increment) n++;
   else
-    if((ret = grib_set_long_internal(a->parent->h, self->i_increment,v[n++])) != GRIB_SUCCESS)
+    if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->i_increment,v[n++])) != GRIB_SUCCESS)
       return ret;
 
   if(!self->j_increment) n++;
   else
-    if((ret = grib_set_long_internal(a->parent->h, self->j_increment,v[n++])) != GRIB_SUCCESS)
+    if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->j_increment,v[n++])) != GRIB_SUCCESS)
       return ret;
 
 
diff --git a/src/grib_accessor_class_g2latlon.c b/src/grib_accessor_class_g2latlon.c
index 270148d..a01200b 100644
--- a/src/grib_accessor_class_g2latlon.c
+++ b/src/grib_accessor_class_g2latlon.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -98,6 +98,7 @@ static grib_accessor_class _grib_accessor_class_g2latlon = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -133,6 +134,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -142,9 +144,9 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
   grib_accessor_g2latlon* self = (grib_accessor_g2latlon*)a;
   int n = 0;
 
-  self->grid     = grib_arguments_get_name(a->parent->h,c,n++);
-  self->index    = grib_arguments_get_long(a->parent->h,c,n++);
-  self->given    = grib_arguments_get_name(a->parent->h,c,n++);
+  self->grid     = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->index    = grib_arguments_get_long(grib_handle_of_accessor(a),c,n++);
+  self->given    = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 }
 
 static int unpack_double   (grib_accessor* a, double* val, size_t *len)
@@ -162,7 +164,7 @@ static int unpack_double   (grib_accessor* a, double* val, size_t *len)
   }
 
   if(self->given)
-    if((ret = grib_get_long_internal(a->parent->h, self->given,&given)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->given,&given)) != GRIB_SUCCESS)
       return ret;
 
   if(!given)
@@ -172,7 +174,7 @@ static int unpack_double   (grib_accessor* a, double* val, size_t *len)
   }
 
 
-  if((ret = grib_get_double_array_internal(a->parent->h, self->grid,grid,&size)) != GRIB_SUCCESS)
+  if((ret = grib_get_double_array_internal(grib_handle_of_accessor(a), self->grid,grid,&size)) != GRIB_SUCCESS)
     return ret;
 
   *val = grid[self->index];
@@ -197,18 +199,18 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
   if(self->given)
   {
     long given        = *val != GRIB_MISSING_DOUBLE;
-    if((ret = grib_set_long_internal(a->parent->h, self->given,given)) != GRIB_SUCCESS)
+    if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->given,given)) != GRIB_SUCCESS)
       return ret;
   }
 
 
-  if((ret = grib_get_double_array_internal(a->parent->h, self->grid,grid,&size)) != GRIB_SUCCESS)
+  if((ret = grib_get_double_array_internal(grib_handle_of_accessor(a), self->grid,grid,&size)) != GRIB_SUCCESS)
     return ret;
 
   if ( (self->index == 1 || self->index == 3) && *val < 0 ) grid[self->index] = 360+*val;
   else grid[self->index] = *val;
 
-  return grib_set_double_array_internal(a->parent->h, self->grid,grid,size);
+  return grib_set_double_array_internal(grib_handle_of_accessor(a), self->grid,grid,size);
 }
 
 static int pack_missing(grib_accessor* a)
@@ -229,7 +231,7 @@ static int is_missing(grib_accessor* a)
   long given        = 1;
 
 
-  if(self->given) grib_get_long_internal(a->parent->h, self->given,&given);
+  if(self->given) grib_get_long_internal(grib_handle_of_accessor(a), self->given,&given);
 
 
   return !given;
diff --git a/src/grib_accessor_class_g2level.c b/src/grib_accessor_class_g2level.c
index c22cfb4..03d8be7 100644
--- a/src/grib_accessor_class_g2level.c
+++ b/src/grib_accessor_class_g2level.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -98,6 +98,7 @@ static grib_accessor_class _grib_accessor_class_g2level = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -131,6 +132,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -140,10 +142,10 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
   grib_accessor_g2level* self = (grib_accessor_g2level*)a;
   int n = 0;
 
-  self->type_first   = grib_arguments_get_name(a->parent->h,c,n++);
-  self->scale_first  = grib_arguments_get_name(a->parent->h,c,n++);
-  self->value_first  = grib_arguments_get_name(a->parent->h,c,n++);
-  self->pressure_units = grib_arguments_get_name(a->parent->h,c,n++);
+  self->type_first   = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->scale_first  = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->value_first  = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->pressure_units = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 }
 
 static void dump(grib_accessor* a, grib_dumper* dumper)
@@ -164,13 +166,13 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
 
 	double v;
 
-	if((ret = grib_get_long_internal(a->parent->h, self->type_first,&type_first))
+	if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->type_first,&type_first))
 			!=GRIB_SUCCESS) return ret;
-	if((ret = grib_get_long_internal(a->parent->h, self->scale_first,&scale_first))
+	if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->scale_first,&scale_first))
 			!=GRIB_SUCCESS) return ret;
-	if((ret = grib_get_long_internal(a->parent->h, self->value_first,&value_first))
+	if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->value_first,&value_first))
 			!=GRIB_SUCCESS) return ret;
-	if((ret = grib_get_string_internal(a->parent->h, self->pressure_units,pressure_units,&pressure_units_len))
+	if((ret = grib_get_string_internal(grib_handle_of_accessor(a), self->pressure_units,pressure_units,&pressure_units_len))
 			!=GRIB_SUCCESS) return ret;
 
 	if (value_first == GRIB_MISSING_LONG) {
@@ -206,7 +208,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
 				/* Switch to Pa instead of hPa as the value is less than a hectoPascal */
 				char pa[]="Pa";
 				size_t lpa=strlen(pa);
-				if((ret = grib_set_string_internal(a->parent->h, self->pressure_units,pa,&lpa)) !=GRIB_SUCCESS)
+				if((ret = grib_set_string_internal(grib_handle_of_accessor(a), self->pressure_units,pa,&lpa)) !=GRIB_SUCCESS)
 					return ret;
 			}
 			else
@@ -245,10 +247,10 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     if(*len !=  1)
         return GRIB_WRONG_ARRAY_SIZE;
 
-    if((ret = grib_get_long_internal(a->parent->h, self->type_first,&type_first))
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->type_first,&type_first))
             !=GRIB_SUCCESS) return ret;
 
-    if((ret = grib_get_string_internal(a->parent->h, self->pressure_units,pressure_units,&pressure_units_len))
+    if((ret = grib_get_string_internal(grib_handle_of_accessor(a), self->pressure_units,pressure_units,&pressure_units_len))
             !=GRIB_SUCCESS) return ret;
 
     switch(type_first)
@@ -273,9 +275,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     value_first = value_first+0.5; /* round up */
 
     if ( type_first>9 ) {
-        if((ret = grib_set_long_internal(a->parent->h, self->scale_first,scale_first))
+        if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->scale_first,scale_first))
                 !=GRIB_SUCCESS) return ret;
-        if((ret = grib_set_long_internal(a->parent->h, self->value_first,(long)value_first))
+        if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->value_first,(long)value_first))
                 !=GRIB_SUCCESS) return ret;
     }
 
@@ -298,18 +300,18 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
 
 /*Not sure if this is necessary
  *     if (value_first == GRIB_MISSING_LONG) {
- *         if ((ret=grib_set_missing_internal(a->parent->h, self->scale_first)) != GRIB_SUCCESS)
+ *         if ((ret=grib_set_missing_internal(grib_handle_of_accessor(a), self->scale_first)) != GRIB_SUCCESS)
  *             return ret;
- *         if ((ret=grib_set_missing_internal(a->parent->h, self->value_first)) != GRIB_SUCCESS)
+ *         if ((ret=grib_set_missing_internal(grib_handle_of_accessor(a), self->value_first)) != GRIB_SUCCESS)
  *                 return ret;
  *         return GRIB_SUCCESS;
  *     }
  */
 
-  if((ret = grib_get_long_internal(a->parent->h, self->type_first,&type_first))
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->type_first,&type_first))
       !=GRIB_SUCCESS) return ret;
 
-  if((ret = grib_get_string_internal(a->parent->h, self->pressure_units,pressure_units,&pressure_units_len))
+  if((ret = grib_get_string_internal(grib_handle_of_accessor(a), self->pressure_units,pressure_units,&pressure_units_len))
       !=GRIB_SUCCESS) return ret;
   
   switch(type_first)
@@ -325,9 +327,9 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
   }
 
   if ( type_first>9 ) {
-	if((ret = grib_set_long_internal(a->parent->h, self->scale_first,scale_first))
+	if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->scale_first,scale_first))
 		!=GRIB_SUCCESS) return ret;
-	if((ret = grib_set_long_internal(a->parent->h, self->value_first,value_first))
+	if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->value_first,value_first))
 		!=GRIB_SUCCESS) return ret;
   }
   return GRIB_SUCCESS;
@@ -339,7 +341,7 @@ static int is_missing(grib_accessor* a){
   int err=0;
   int ret=0;
 
-  ret=grib_is_missing(a->parent->h, self->scale_first,&err) +
-      grib_is_missing(a->parent->h, self->value_first,&err);
+  ret=grib_is_missing(grib_handle_of_accessor(a), self->scale_first,&err) +
+      grib_is_missing(grib_handle_of_accessor(a), self->value_first,&err);
   return ret;
 }
diff --git a/src/grib_accessor_class_g2lon.c b/src/grib_accessor_class_g2lon.c
index 49851df..ac81d76 100644
--- a/src/grib_accessor_class_g2lon.c
+++ b/src/grib_accessor_class_g2lon.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -91,6 +91,7 @@ static grib_accessor_class _grib_accessor_class_g2lon = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -128,6 +129,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -137,7 +139,7 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
   grib_accessor_g2lon* self = (grib_accessor_g2lon*)a;
   int n = 0;
 
-  self->longitude     = grib_arguments_get_name(a->parent->h,c,n++);
+  self->longitude     = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 }
 
 static int unpack_double   (grib_accessor* a, double* val, size_t *len)
@@ -146,7 +148,7 @@ static int unpack_double   (grib_accessor* a, double* val, size_t *len)
   int ret = 0;
   long longitude;
 
-  if((ret = grib_get_long(a->parent->h, self->longitude,&longitude)) != GRIB_SUCCESS)
+  if((ret = grib_get_long(grib_handle_of_accessor(a), self->longitude,&longitude)) != GRIB_SUCCESS)
       return ret;
 
 
@@ -174,7 +176,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 	if (value<0) value+=360;
   	longitude=value * 1000000;
   }
-  return grib_set_long(a->parent->h, self->longitude,longitude);
+  return grib_set_long(grib_handle_of_accessor(a), self->longitude,longitude);
 }
 
 
diff --git a/src/grib_accessor_class_g2step.c b/src/grib_accessor_class_g2step.c
index c90e423..925e960 100644
--- a/src/grib_accessor_class_g2step.c
+++ b/src/grib_accessor_class_g2step.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -90,6 +90,7 @@ static grib_accessor_class _grib_accessor_class_g2step = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -126,6 +127,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -134,8 +136,8 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
   grib_accessor_g2step* self = (grib_accessor_g2step*)a;
   int n = 0;
-  self->forecast_time   = grib_arguments_get_name(a->parent->h,c,n++);
-  self->unit            = grib_arguments_get_name(a->parent->h,c,n++);
+  self->forecast_time   = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->unit            = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 
 }
 
@@ -162,10 +164,10 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
   int err = 0;
   long forecast_time = 0,unit = 0;
 
-  err = grib_get_long_internal(a->parent->h,self->unit,&unit);
+  err = grib_get_long_internal(grib_handle_of_accessor(a),self->unit,&unit);
   if(err)           return err;
 
-  err = grib_get_long_internal(a->parent->h,self->forecast_time,&forecast_time);
+  err = grib_get_long_internal(grib_handle_of_accessor(a),self->forecast_time,&forecast_time);
   if(err)               return err;
 
   if(!units[unit])
@@ -185,10 +187,10 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
 
   Assert(forecast_time >= 0);
 
-  err = grib_set_long_internal(a->parent->h,self->unit,unit);
+  err = grib_set_long_internal(grib_handle_of_accessor(a),self->unit,unit);
   if(err)           return err;
 
-  err = grib_set_long_internal(a->parent->h,self->forecast_time,forecast_time);
+  err = grib_set_long_internal(grib_handle_of_accessor(a),self->forecast_time,forecast_time);
   if(err)               return err;
 
   return GRIB_SUCCESS;
diff --git a/src/grib_accessor_class_g2step_range.c b/src/grib_accessor_class_g2step_range.c
index a47c13e..14c848a 100644
--- a/src/grib_accessor_class_g2step_range.c
+++ b/src/grib_accessor_class_g2step_range.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -100,6 +100,7 @@ static grib_accessor_class _grib_accessor_class_g2step_range = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -131,6 +132,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -141,8 +143,8 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 
   int n = 0;
 
-  self->startStep   = grib_arguments_get_name(a->parent->h,c,n++);
-  self->endStep     = grib_arguments_get_name(a->parent->h,c,n++);
+  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++);
   
   a->length=0;
 }
@@ -155,7 +157,7 @@ static void dump(grib_accessor* a, grib_dumper* dumper)
 
 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=a->parent->h;
+  grib_handle* h=grib_handle_of_accessor(a);
   char buf[100];
   int ret=0;
   size_t size=0;
@@ -193,7 +195,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_handle* h=a->parent->h;
+  grib_handle* h=grib_handle_of_accessor(a);
 
   long start=0,theEnd=-1;
   int ret=0;
diff --git a/src/grib_accessor_class_gaussian_grid_name.c b/src/grib_accessor_class_gaussian_grid_name.c
new file mode 100644
index 0000000..fa29df4
--- /dev/null
+++ b/src/grib_accessor_class_gaussian_grid_name.c
@@ -0,0 +1,198 @@
+/*
+ * Copyright 2005-2016 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 = init;unpack_string; get_native_type;string_length
+   MEMBERS = const char* N
+   MEMBERS = const char* Ni
+   MEMBERS = const char* isOctahedral
+   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 unpack_string (grib_accessor*, char*, size_t *len);
+static size_t string_length(grib_accessor*);
+static void init(grib_accessor*,const long, grib_arguments* );
+static void init_class(grib_accessor_class*);
+
+typedef struct grib_accessor_gaussian_grid_name {
+    grib_accessor          att;
+/* Members defined in gen */
+/* Members defined in gaussian_grid_name */
+	const char* N;
+	const char* Ni;
+	const char* isOctahedral;
+} grib_accessor_gaussian_grid_name;
+
+extern grib_accessor_class* grib_accessor_class_gen;
+
+static grib_accessor_class _grib_accessor_class_gaussian_grid_name = {
+    &grib_accessor_class_gen,                      /* super                     */
+    "gaussian_grid_name",                      /* name                      */
+    sizeof(grib_accessor_gaussian_grid_name),  /* size                      */
+    0,                           /* inited */
+    &init_class,                 /* init_class */
+    &init,                       /* init                      */
+    0,                  /* post_init                      */
+    0,                    /* free mem                       */
+    0,                       /* describes himself         */
+    0,                /* get length of section     */
+    &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,               /* grib_pack procedures long      */
+    0,                 /* grib_pack procedures long      */
+    0,                  /* grib_pack procedures long      */
+    0,                /* grib_unpack procedures long    */
+    0,                /* grib_pack procedures double    */
+    0,              /* grib_unpack procedures double  */
+    0,                /* grib_pack procedures string    */
+    &unpack_string,              /* grib_unpack procedures string  */
+    0,          /* grib_pack array procedures string    */
+    0,        /* grib_unpack array procedures string  */
+    0,                 /* grib_pack procedures bytes     */
+    0,               /* grib_unpack procedures 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          */
+    0,     /* unpack a subarray         */
+    0,              		/* clear          */
+    0,               		/* clone accessor          */
+};
+
+
+grib_accessor_class* grib_accessor_class_gaussian_grid_name = &_grib_accessor_class_gaussian_grid_name;
+
+
+static void init_class(grib_accessor_class* c)
+{
+	c->dump	=	(*(c->super))->dump;
+	c->next_offset	=	(*(c->super))->next_offset;
+	c->value_count	=	(*(c->super))->value_count;
+	c->byte_count	=	(*(c->super))->byte_count;
+	c->byte_offset	=	(*(c->super))->byte_offset;
+	c->sub_section	=	(*(c->super))->sub_section;
+	c->pack_missing	=	(*(c->super))->pack_missing;
+	c->is_missing	=	(*(c->super))->is_missing;
+	c->pack_long	=	(*(c->super))->pack_long;
+	c->unpack_long	=	(*(c->super))->unpack_long;
+	c->pack_double	=	(*(c->super))->pack_double;
+	c->unpack_double	=	(*(c->super))->unpack_double;
+	c->pack_string	=	(*(c->super))->pack_string;
+	c->pack_string_array	=	(*(c->super))->pack_string_array;
+	c->unpack_string_array	=	(*(c->super))->unpack_string_array;
+	c->pack_bytes	=	(*(c->super))->pack_bytes;
+	c->unpack_bytes	=	(*(c->super))->unpack_bytes;
+	c->pack_expression	=	(*(c->super))->pack_expression;
+	c->notify_change	=	(*(c->super))->notify_change;
+	c->update_size	=	(*(c->super))->update_size;
+	c->preferred_size	=	(*(c->super))->preferred_size;
+	c->resize	=	(*(c->super))->resize;
+	c->nearest_smaller_value	=	(*(c->super))->nearest_smaller_value;
+	c->next	=	(*(c->super))->next;
+	c->compare	=	(*(c->super))->compare;
+	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
+	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
+	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
+}
+
+/* END_CLASS_IMP */
+
+static void init(grib_accessor* a, const long len , grib_arguments* arg )
+{
+    grib_accessor_gaussian_grid_name* self = (grib_accessor_gaussian_grid_name*)a;
+    int n=0;
+
+    self->N = grib_arguments_get_name(a->parent->h,arg,n++);
+    self->Ni = grib_arguments_get_name(a->parent->h,arg,n++);
+    self->isOctahedral = grib_arguments_get_name(a->parent->h,arg,n++);
+    a->length = 0;
+    a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
+    a->flags |= GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC;
+}
+
+static int get_native_type(grib_accessor* a)
+{
+    return GRIB_TYPE_STRING;
+}
+
+#define MAX_GRIDNAME_LEN 16
+
+static int unpack_string(grib_accessor*a , char* v, size_t *len)
+{
+    grib_accessor_gaussian_grid_name* self = (grib_accessor_gaussian_grid_name*)a;
+
+    long N=0, Ni=0, isOctahedral=0;
+    char tmp[MAX_GRIDNAME_LEN] = {0,};
+    size_t length = sizeof(tmp);
+    int ret = GRIB_SUCCESS;
+
+    if ((ret = grib_get_long_internal(a->parent->h,self->N,&N)) != GRIB_SUCCESS)
+        return ret;
+    if ((ret = grib_get_long_internal(a->parent->h,self->Ni,&Ni))!= GRIB_SUCCESS)
+        return ret;
+    if ((ret = grib_get_long_internal(a->parent->h,self->isOctahedral,&isOctahedral)) != GRIB_SUCCESS)
+        return ret;
+
+    if (Ni == GRIB_MISSING_LONG ) {
+        /* reduced gaussian grid */
+        if (isOctahedral == 1) {
+            sprintf(tmp,"O%ld", N);
+        } else {
+            sprintf(tmp,"N%ld", N);
+        }
+    } else {
+        /* regular gaussian grid */
+        sprintf(tmp,"F%ld", N);
+    }
+    length = strlen(tmp)+1;
+
+    if(*len < length) {
+        *len = length;
+        return GRIB_BUFFER_TOO_SMALL;
+    }
+
+    strcpy(v, tmp);
+    *len = length;
+    return GRIB_SUCCESS;
+}
+
+static size_t string_length(grib_accessor* a)
+{
+    return MAX_GRIDNAME_LEN;
+}
diff --git a/src/grib_accessor_class_gds_is_present.c b/src/grib_accessor_class_gds_is_present.c
index 6fc336f..eab3ca4 100644
--- a/src/grib_accessor_class_gds_is_present.c
+++ b/src/grib_accessor_class_gds_is_present.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -97,6 +97,7 @@ static grib_accessor_class _grib_accessor_class_gds_is_present = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -134,6 +135,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -142,10 +144,10 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
   int n=0;
   grib_accessor_gds_is_present* self = (grib_accessor_gds_is_present*)a;
-  self->gds_present = grib_arguments_get_name(a->parent->h,c,n++);
-  self->grid_definition = grib_arguments_get_name(a->parent->h,c,n++);
-  self->bitmap_present = grib_arguments_get_name(a->parent->h,c,n++);
-  self->values = grib_arguments_get_name(a->parent->h,c,n++);
+  self->gds_present = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->grid_definition = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->bitmap_present = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->values = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 
   a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
   a->flags |= GRIB_ACCESSOR_FLAG_HIDDEN;
@@ -158,8 +160,8 @@ static int    pack_long   (grib_accessor* a, const long* val, size_t *len)
   int ret=0;
   size_t size=0;
   double* values;
-  grib_context* c=a->parent->h->context;
-  grib_handle* h=a->parent->h;
+  grib_context* c=a->context;
+  grib_handle* h=grib_handle_of_accessor(a);
   grib_accessor_gds_is_present* self = (grib_accessor_gds_is_present*)a;
 
   if (*val != 1) return GRIB_NOT_IMPLEMENTED;
@@ -197,7 +199,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)
 {
   int ret=0;
-  grib_handle* h=a->parent->h;
+  grib_handle* h=grib_handle_of_accessor(a);
   grib_accessor_gds_is_present* self = (grib_accessor_gds_is_present*)a;
 
   if((ret = grib_get_long_internal(h,self->gds_present,val))
diff --git a/src/grib_accessor_class_gds_not_present_bitmap.c b/src/grib_accessor_class_gds_not_present_bitmap.c
index 555b260..accd4b5 100644
--- a/src/grib_accessor_class_gds_not_present_bitmap.c
+++ b/src/grib_accessor_class_gds_not_present_bitmap.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -102,6 +102,7 @@ static grib_accessor_class _grib_accessor_class_gds_not_present_bitmap = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -138,6 +139,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -147,11 +149,11 @@ static void init(grib_accessor* a,const long v, grib_arguments* args)
   int n=0;
   grib_accessor_gds_not_present_bitmap *self =(grib_accessor_gds_not_present_bitmap*)a;
 
-  self->missing_value = grib_arguments_get_name(a->parent->h,args,n++);
-  self->number_of_values        = grib_arguments_get_name(a->parent->h,args,n++);
-  self->number_of_points = grib_arguments_get_name(a->parent->h,args,n++);
-  self->latitude_of_first_point = grib_arguments_get_name(a->parent->h,args,n++);
-  self->ni = grib_arguments_get_name(a->parent->h,args,n++);
+  self->missing_value = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->number_of_values        = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->number_of_points = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->latitude_of_first_point = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->ni = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
 
 
   a->length = 0;
@@ -163,7 +165,7 @@ static int value_count(grib_accessor* a,long* number_of_points)
   grib_accessor_gds_not_present_bitmap* self = (grib_accessor_gds_not_present_bitmap*)a;
 
   *number_of_points=0;
-  return grib_get_long_internal(a->parent->h, self->number_of_points, number_of_points);
+  return grib_get_long_internal(grib_handle_of_accessor(a), self->number_of_points, number_of_points);
 }
 
 
@@ -185,19 +187,19 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
   n_vals=nn;
   if (err) return err;
 
-  if((err = grib_get_long(a->parent->h,self->number_of_points,&number_of_points))
+  if((err = grib_get_long(grib_handle_of_accessor(a),self->number_of_points,&number_of_points))
        !=  GRIB_SUCCESS) return err;
 
-  if((err = grib_get_long(a->parent->h,self->number_of_values,&number_of_values))
+  if((err = grib_get_long(grib_handle_of_accessor(a),self->number_of_values,&number_of_values))
        !=  GRIB_SUCCESS) return err;
 
-  if((err = grib_get_long(a->parent->h,self->latitude_of_first_point,&latitude_of_first_point))
+  if((err = grib_get_long(grib_handle_of_accessor(a),self->latitude_of_first_point,&latitude_of_first_point))
        !=  GRIB_SUCCESS) return err;
 
-  if((err = grib_get_long(a->parent->h,self->missing_value,&missing_value))
+  if((err = grib_get_long(grib_handle_of_accessor(a),self->missing_value,&missing_value))
        !=  GRIB_SUCCESS) return err;
 
-  if((err = grib_get_long(a->parent->h,self->ni,&ni))
+  if((err = grib_get_long(grib_handle_of_accessor(a),self->ni,&ni))
        !=  GRIB_SUCCESS) return err;
 
   if(*len < number_of_points)
@@ -207,7 +209,7 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
   }
 
   if(number_of_values > 0){
-    coded_vals = (double*)grib_context_malloc(a->parent->h->context,number_of_values*sizeof(double));
+    coded_vals = (double*)grib_context_malloc(a->context,number_of_values*sizeof(double));
 
     if(coded_vals == NULL)
       return GRIB_OUT_OF_MEMORY;
@@ -224,7 +226,7 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
 
   *len =  number_of_points;
 
-  grib_context_free(a->parent->h->context,coded_vals);
+  grib_context_free(a->context,coded_vals);
   return err;
 }
 
@@ -252,13 +254,13 @@ static int pack_double(grib_accessor* a, const double* val,size_t *len){
   double miss_values = 0;
   tlen = ((*len+bit_padding-1)/bit_padding*bit_padding)/8;
 
-  if((err = grib_get_double_internal(a->parent->h, self->missing_value, &miss_values)) != GRIB_SUCCESS)
+  if((err = grib_get_double_internal(grib_handle_of_accessor(a), self->missing_value, &miss_values)) != GRIB_SUCCESS)
   {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "grib_accessor_class_bitmap : pack_double : Cannot unpack %s err=%d ",self->missing_value,err);
+    grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_class_bitmap : pack_double : Cannot unpack %s err=%d ",self->missing_value,err);
     return err;
   }
 
-  buf = grib_context_malloc_clear(a->parent->h->context,tlen);
+  buf = grib_context_malloc_clear(a->context,tlen);
   if(!buf) return GRIB_OUT_OF_MEMORY;
   pos=0;
   for(i=0;i<*len;i++)
@@ -271,16 +273,16 @@ static int pack_double(grib_accessor* a, const double* val,size_t *len){
     }
   }
 
-  if((err = grib_set_long_internal(a->parent->h, self->unusedBits,tlen*8 - *len )) != GRIB_SUCCESS) {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "grib_accessor_class_bitmap : pack_double : Cannot pack %s err=%d ",self->unusedBits,err);
-    grib_context_free(a->parent->h->context,buf);
+  if((err = grib_set_long_internal(grib_handle_of_accessor(a), self->unusedBits,tlen*8 - *len )) != GRIB_SUCCESS) {
+    grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_class_bitmap : pack_double : Cannot pack %s err=%d ",self->unusedBits,err);
+    grib_context_free(a->context,buf);
     return err;
   }
 
 
   grib_buffer_replace(a, buf, tlen,1,1);
 
-  grib_context_free(a->parent->h->context,buf);
+  grib_context_free(a->context,buf);
 
   return GRIB_SUCCESS;
 }
diff --git a/src/grib_accessor_class_gen.c b/src/grib_accessor_class_gen.c
index 698d0b4..e213fc8 100644
--- a/src/grib_accessor_class_gen.c
+++ b/src/grib_accessor_class_gen.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -30,7 +30,7 @@
    IMPLEMENTS = next_offset;value_count;byte_offset;byte_count
    IMPLEMENTS = notify_change;pack_expression
    IMPLEMENTS  = update_size; next; preferred_size
-   IMPLEMENTS = compare;is_missing
+   IMPLEMENTS = compare;is_missing;make_clone
    END_CLASS_DEF
 
  */
@@ -76,6 +76,7 @@ static int compare(grib_accessor*, grib_accessor*);
 static int unpack_double_element(grib_accessor*,size_t i, double* val);
 static int unpack_double_subarray(grib_accessor*, double* val,size_t start,size_t len);
 static int clear(grib_accessor*);
+static grib_accessor* make_clone(grib_accessor*,grib_section*,int*);
 
 typedef struct grib_accessor_gen {
     grib_accessor          att;
@@ -123,6 +124,7 @@ static grib_accessor_class _grib_accessor_class_gen = {
     &unpack_double_element,     /* unpack only ith value          */
     &unpack_double_subarray,     /* unpack a subarray         */
     &clear,              		/* clear          */
+    &make_clone,               		/* clone accessor          */
 };
 
 
@@ -142,7 +144,7 @@ static void init(grib_accessor* a,const long len, grib_arguments* param)
     if (a->flags & GRIB_ACCESSOR_FLAG_TRANSIENT) {
         a->length = 0;
         if (!a->vvalue)
-            a->vvalue = (grib_virtual_value*)grib_context_malloc_clear(a->parent->h->context,sizeof(grib_virtual_value));
+            a->vvalue = (grib_virtual_value*)grib_context_malloc_clear(a->context,sizeof(grib_virtual_value));
         a->vvalue->type=grib_accessor_get_native_type(a);
         a->vvalue->length=len;
         if (act->default_value!=NULL) {
@@ -152,24 +154,24 @@ static void init(grib_accessor* a,const long len, grib_arguments* param)
             int ret=0;
             double d;
             char tmp[1024];
-            grib_expression* expression=grib_arguments_get_expression(a->parent->h,act->default_value,0);
-            int type = grib_expression_native_type(a->parent->h,expression);
+            grib_expression* expression=grib_arguments_get_expression(grib_handle_of_accessor(a),act->default_value,0);
+            int type = grib_expression_native_type(grib_handle_of_accessor(a),expression);
             switch(type) {
             case GRIB_TYPE_DOUBLE:
-                grib_expression_evaluate_double(a->parent->h,expression,&d);
+                grib_expression_evaluate_double(grib_handle_of_accessor(a),expression,&d);
                 grib_pack_double(a,&d,&len);
                 break;
 
             case GRIB_TYPE_LONG:
-                grib_expression_evaluate_long(a->parent->h,expression,&l);
+                grib_expression_evaluate_long(grib_handle_of_accessor(a),expression,&l);
                 grib_pack_long(a,&l,&len);
                 break;
 
             default:
                 len = sizeof(tmp);
-                p = grib_expression_evaluate_string(a->parent->h,expression,tmp,&len,&ret);
+                p = grib_expression_evaluate_string(grib_handle_of_accessor(a),expression,tmp,&len,&ret);
                 if (ret != GRIB_SUCCESS) {
-                    grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"unable to evaluate %s as string",a->name);
+                    grib_context_log(a->context,GRIB_LOG_ERROR,"unable to evaluate %s as string",a->name);
                     Assert(0);
                 }
                 len = strlen(p)+1;
@@ -223,7 +225,7 @@ static long byte_count(grib_accessor* a)
 }
 
 static int  get_native_type(grib_accessor* a){
-    grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+    grib_context_log(a->context,GRIB_LOG_ERROR,
             "Accessor %s [%s] must implement 'get_native_type'", a->name,a->cclass->name);
     return GRIB_TYPE_UNDEFINED;
 }
@@ -235,14 +237,14 @@ static long byte_offset(grib_accessor* a)
 
 static int unpack_bytes(grib_accessor* a, unsigned char* val, size_t *len)
 {
-    unsigned char* buf = a->parent->h->buffer->data;
+    unsigned char* buf = grib_handle_of_accessor(a)->buffer->data;
     long length = grib_byte_count(a);
     long offset = grib_byte_offset(a);
 
 
     if(*len < length )
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it is %d bytes long\n", a->name ,length );
+        grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it is %d bytes long\n", a->name ,length );
         *len = length;
         return GRIB_ARRAY_TOO_SMALL;
     }
@@ -256,7 +258,7 @@ static int unpack_bytes(grib_accessor* a, unsigned char* val, size_t *len)
 
 static int clear(grib_accessor* a)
 {
-    unsigned char* buf = a->parent->h->buffer->data;
+    unsigned char* buf = grib_handle_of_accessor(a)->buffer->data;
     long length = grib_byte_count(a);
     long offset = grib_byte_offset(a);
 
@@ -273,7 +275,7 @@ static int  unpack_long   (grib_accessor* a, long*  v, size_t *len){
         size_t l = 1;
         grib_unpack_double (a , &val, &l);
         *v = (long)val;
-        grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG, " Casting double %s to long", a->name);
+        grib_context_log(a->context,GRIB_LOG_DEBUG, " Casting double %s to long", a->name);
         return GRIB_SUCCESS;
     }
 
@@ -288,7 +290,7 @@ static int  unpack_long   (grib_accessor* a, long*  v, size_t *len){
 
         if(*last == 0)
         {
-            grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG, " Casting string %s to long", a->name);
+            grib_context_log(a->context,GRIB_LOG_DEBUG, " Casting string %s to long", a->name);
             return GRIB_SUCCESS;
         }
     }
@@ -304,7 +306,7 @@ static int unpack_double (grib_accessor* a, double*v, size_t *len){
         size_t l = 1;
         grib_unpack_long (a , &val, &l);
         *v = val;
-        grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG, " Casting long %s to double", a->name);
+        grib_context_log(a->context,GRIB_LOG_DEBUG, " Casting long %s to double", a->name);
         return GRIB_SUCCESS;
     }
 
@@ -319,7 +321,7 @@ static int unpack_double (grib_accessor* a, double*v, size_t *len){
 
         if(*last == 0)
         {
-            grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG, " Casting string %s to long", a->name);
+            grib_context_log(a->context,GRIB_LOG_DEBUG, " Casting string %s to long", a->name);
             return GRIB_SUCCESS;
         }
     }
@@ -336,7 +338,7 @@ static int unpack_string(grib_accessor*a , char*  v, size_t *len){
         grib_unpack_double (a , &val, &l);
         sprintf(v,"%g",val);
         *len = strlen(v);
-        grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG, " Casting double %s to string", a->name);
+        grib_context_log(a->context,GRIB_LOG_DEBUG, " Casting double %s to string", a->name);
         return GRIB_SUCCESS;
     }
 
@@ -347,7 +349,7 @@ static int unpack_string(grib_accessor*a , char*  v, size_t *len){
         grib_unpack_long (a , &val, &l);
         sprintf(v,"%ld",val);
         *len = strlen(v);
-        grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG, " Casting long %s to string  \n", a->name);
+        grib_context_log(a->context,GRIB_LOG_DEBUG, " Casting long %s to string  \n", a->name);
         return GRIB_SUCCESS;
     }
 
@@ -355,7 +357,16 @@ 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){
-  return GRIB_NOT_IMPLEMENTED;
+  int err=0;
+  size_t length=0;
+
+  err= _grib_get_string_length(a,&length);
+  if (err) return err;
+  v[0]=(char*)grib_context_malloc_clear(a->context,length);
+  grib_unpack_string(a,v[0],&length);
+  *len=1;
+
+  return err;
 }
 
 static int pack_expression(grib_accessor* a, grib_expression *e){
@@ -370,9 +381,9 @@ static int pack_expression(grib_accessor* a, grib_expression *e){
     {
     case GRIB_TYPE_LONG:
         len = 1;
-        ret = grib_expression_evaluate_long(a->parent->h,e,&lval);
+        ret = grib_expression_evaluate_long(grib_handle_of_accessor(a),e,&lval);
         if (ret != GRIB_SUCCESS) {
-            grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"unable to set %s as long",a->name);
+            grib_context_log(a->context,GRIB_LOG_ERROR,"unable to set %s as long",a->name);
             return ret;
         }
         return grib_pack_long(a,&lval,&len);
@@ -380,15 +391,15 @@ static int pack_expression(grib_accessor* a, grib_expression *e){
 
     case GRIB_TYPE_DOUBLE:
         len = 1;
-        ret = grib_expression_evaluate_double(a->parent->h,e,&dval);
+        ret = grib_expression_evaluate_double(grib_handle_of_accessor(a),e,&dval);
         return grib_pack_double(a,&dval,&len);
         break;
 
     case GRIB_TYPE_STRING:
         len = sizeof(tmp);
-        cval = grib_expression_evaluate_string(a->parent->h,e,tmp,&len,&ret);
+        cval = grib_expression_evaluate_string(grib_handle_of_accessor(a),e,tmp,&len,&ret);
         if (ret != GRIB_SUCCESS) {
-            grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"unable to set %s as string",a->name);
+            grib_context_log(a->context,GRIB_LOG_ERROR,"unable to set %s as string",a->name);
             return ret;
         }
         len = strlen(cval);
@@ -400,7 +411,7 @@ static int pack_expression(grib_accessor* a, grib_expression *e){
 }
 
 static int pack_long(grib_accessor* a, const long*  v, size_t *len){
-    grib_context* c=a->parent->h->context;
+    grib_context* c=a->context;
     if(a->cclass->pack_double && a->cclass->pack_double != &pack_double)
     {
         int i=0,ret=0;
@@ -421,7 +432,7 @@ static int pack_long(grib_accessor* a, const long*  v, size_t *len){
 }
 
 static int pack_double(grib_accessor* a, const double *v, size_t *len){
-    grib_context* c=a->parent->h->context;
+    grib_context* c=a->context;
     if(a->cclass->pack_long && a->cclass->pack_long != &pack_long)
     {
         int i=0,ret=0;
@@ -459,7 +470,7 @@ static int pack_string(grib_accessor*a , const char*  v, size_t *len){
         return grib_pack_long (a , &val, &l);
     }
 
-    grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+    grib_context_log(a->context,GRIB_LOG_ERROR,
             " Should not grib_pack %s  as string", a->name);
     return GRIB_NOT_IMPLEMENTED;
 }
@@ -473,17 +484,13 @@ static int pack_bytes(grib_accessor* a, const unsigned char* val, size_t *len)
 
 static void destroy(grib_context* ct, grib_accessor* a)
 {
-    int i=0;
     grib_dependency_remove_observed(a);
     grib_dependency_remove_observer(a);
     if (a->vvalue!=NULL) {
         grib_context_free(ct,a->vvalue);
         a->vvalue=NULL;
     }
-    while (a->attributes[i]) {
-      grib_accessor_delete(a->parent->h->context,a->attributes[i]);
-      i++;
-    }
+    grib_context_log(ct,GRIB_LOG_DEBUG,"address=%p",a);
 }
 
 static grib_section* sub_section(grib_accessor* a)
@@ -499,7 +506,7 @@ static int notify_change(grib_accessor* self,grib_accessor* observed)
 
 static void update_size(grib_accessor* a,size_t s)
 {
-    grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+    grib_context_log(a->context,GRIB_LOG_ERROR,
             "Accessor %s [%s] must implement 'update_size'", a->name,a->cclass->name);
     Assert(0 == 1);
 }
@@ -537,14 +544,14 @@ static int is_missing(grib_accessor* a)
 
     if (a->flags & GRIB_ACCESSOR_FLAG_TRANSIENT) {
         if (a->vvalue == NULL) {
-            grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"%s internal error (flags=0x%X)",a->name,a->flags);
+            grib_context_log(a->context,GRIB_LOG_ERROR,"%s internal error (flags=0x%X)",a->name,a->flags);
         }
         Assert(a->vvalue!=NULL);
         return a->vvalue->missing;
     }
     Assert(a->length>=0);
 
-    v=a->parent->h->buffer->data+a->offset;
+    v=grib_handle_of_accessor(a)->buffer->data+a->offset;
 
     for (i=0; i < a->length; i++) {
         if (*v != ones) {
@@ -567,3 +574,8 @@ static int unpack_double_subarray(grib_accessor* a, double* val,size_t start,siz
     return GRIB_NOT_IMPLEMENTED;
 }
 
+static grib_accessor* make_clone(grib_accessor* a,grib_section* s,int* err)
+{
+  *err=GRIB_NOT_IMPLEMENTED;
+  return NULL;
+}
diff --git a/src/grib_accessor_class_getenv.c b/src/grib_accessor_class_getenv.c
index 0be7d25..3c4614b 100644
--- a/src/grib_accessor_class_getenv.c
+++ b/src/grib_accessor_class_getenv.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -93,6 +93,7 @@ static grib_accessor_class _grib_accessor_class_getenv = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -128,6 +129,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -137,8 +139,8 @@ static void init(grib_accessor* a,const long l, grib_arguments* args)
     grib_accessor_getenv* self = (grib_accessor_getenv*)a;
     static char undefined[]="undefined";
 
-    self->name=grib_arguments_get_string(a->parent->h,args,0);
-    self->default_value=grib_arguments_get_string(a->parent->h,args,1);
+    self->name=grib_arguments_get_string(grib_handle_of_accessor(a),args,0);
+    self->default_value=grib_arguments_get_string(grib_handle_of_accessor(a),args,1);
     if (!self->default_value) self->default_value=undefined;
     self->value=0;
 }
diff --git a/src/grib_accessor_class_global_gaussian.c b/src/grib_accessor_class_global_gaussian.c
index 7f2845e..22040b0 100644
--- a/src/grib_accessor_class_global_gaussian.c
+++ b/src/grib_accessor_class_global_gaussian.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -29,6 +29,8 @@
    MEMBERS=const char*                  lonfirst
    MEMBERS=const char*                  latlast
    MEMBERS=const char*                  lonlast
+   MEMBERS=const char*                  plpresent
+   MEMBERS=const char*                  pl
    MEMBERS=const char*                  basic_angle
    MEMBERS=const char*                  subdivision
    END_CLASS_DEF
@@ -62,6 +64,8 @@ typedef struct grib_accessor_global_gaussian {
 	const char*                  lonfirst;
 	const char*                  latlast;
 	const char*                  lonlast;
+	const char*                  plpresent;
+	const char*                  pl;
 	const char*                  basic_angle;
 	const char*                  subdivision;
 } grib_accessor_global_gaussian;
@@ -108,6 +112,7 @@ static grib_accessor_class _grib_accessor_class_global_gaussian = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -145,180 +150,224 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
 
 static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
-  grib_accessor_global_gaussian* self = (grib_accessor_global_gaussian*)a;
-  int n = 0;
-
-  self->N        = grib_arguments_get_name(a->parent->h,c,n++);
-  self->Ni        = grib_arguments_get_name(a->parent->h,c,n++);
-  self->di         = grib_arguments_get_name(a->parent->h,c,n++);
-  self->latfirst      = grib_arguments_get_name(a->parent->h,c,n++);
-  self->lonfirst     = grib_arguments_get_name(a->parent->h,c,n++);
-  self->latlast       = grib_arguments_get_name(a->parent->h,c,n++);
-  self->lonlast      = grib_arguments_get_name(a->parent->h,c,n++);
-  self->basic_angle         = grib_arguments_get_name(a->parent->h,c,n++);
-  self->subdivision         = grib_arguments_get_name(a->parent->h,c,n++);
+    grib_accessor_global_gaussian* self = (grib_accessor_global_gaussian*)a;
+    int n = 0;
+    grib_handle* h = grib_handle_of_accessor(a);
+
+    self->N            = grib_arguments_get_name(h,c,n++);
+    self->Ni           = grib_arguments_get_name(h,c,n++);
+    self->di           = grib_arguments_get_name(h,c,n++);
+    self->latfirst     = grib_arguments_get_name(h,c,n++);
+    self->lonfirst     = grib_arguments_get_name(h,c,n++);
+    self->latlast      = grib_arguments_get_name(h,c,n++);
+    self->lonlast      = grib_arguments_get_name(h,c,n++);
+    self->plpresent    = grib_arguments_get_name(h,c,n++);
+    self->pl           = grib_arguments_get_name(h,c,n++);
+    self->basic_angle  = grib_arguments_get_name(h,c,n++);
+    self->subdivision  = grib_arguments_get_name(h,c,n++);
 }
 
-
 static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
-  grib_accessor_global_gaussian* self = (grib_accessor_global_gaussian*)a;
-  int ret = GRIB_SUCCESS;
-  long latfirst,latlast,lonfirst,lonlast,basic_angle,subdivision,N,Ni;
-  double dlatfirst,dlatlast,dlonfirst,dlonlast,d;
-  double* lats;
-  long factor;
-  grib_context* c=a->parent->h->context;
-
-  if (self->basic_angle && self->subdivision) {
-
-	factor=1000000;
-	if((ret = grib_get_long_internal(a->parent->h, self->basic_angle,&basic_angle)) != GRIB_SUCCESS)
-		return ret;
-
-	if((ret = grib_get_long_internal(a->parent->h, self->subdivision,&subdivision)) != GRIB_SUCCESS)
-		return ret;
-
-	if ( (basic_angle !=0 && basic_angle != GRIB_MISSING_LONG) || 
-      ( subdivision  !=0 && subdivision != GRIB_MISSING_LONG) ) {
-		*val=0;
-		return ret;
-	}
-  } else {
-	factor=1000;
-  }
-
-  if((ret = grib_get_long_internal(a->parent->h, self->N,&N)) != GRIB_SUCCESS)
-    return ret;
-
-  if((ret = grib_get_long_internal(a->parent->h, self->Ni,&Ni)) != GRIB_SUCCESS)
-    return ret;
-
-  if((ret = grib_get_long_internal(a->parent->h, self->latfirst,&latfirst)) != GRIB_SUCCESS)
-    return ret;
-
-  if((ret = grib_get_long_internal(a->parent->h, self->lonfirst,&lonfirst)) != GRIB_SUCCESS)
-    return ret;
+    grib_accessor_global_gaussian* self = (grib_accessor_global_gaussian*)a;
+    int ret = GRIB_SUCCESS;
+    long latfirst,latlast,lonfirst,lonlast,basic_angle,subdivision,N,Ni;
+    double dlatfirst,dlatlast,dlonfirst,dlonlast;
+    double angular_precision = 0;
+    double* lats = NULL;
+    long factor=1000, plpresent=0;
+    long max_pl=0; /* max. element of pl array */
+    grib_context* c=a->context;
+    grib_handle* h = grib_handle_of_accessor(a);
+
+    if (self->basic_angle && self->subdivision) {
+        factor=1000000;
+        if((ret = grib_get_long_internal(h, self->basic_angle,&basic_angle)) != GRIB_SUCCESS)
+            return ret;
+
+        if((ret = grib_get_long_internal(h, self->subdivision,&subdivision)) != GRIB_SUCCESS)
+            return ret;
+
+        if ( (basic_angle !=0 && basic_angle != GRIB_MISSING_LONG) ||
+                ( subdivision  !=0 && subdivision != GRIB_MISSING_LONG) ) {
+            *val=0;
+            return ret;
+        }
+    } else {
+        factor=1000;
+    }
+    angular_precision = 1.0/factor;
+
+    if((ret = grib_get_long_internal(h, self->N,&N)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret = grib_get_long_internal(h, self->Ni,&Ni)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret = grib_get_long_internal(h, self->latfirst,&latfirst)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret = grib_get_long_internal(h, self->lonfirst,&lonfirst)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret = grib_get_long_internal(h, self->latlast,&latlast)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret = grib_get_long_internal(h, self->lonlast,&lonlast)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret = grib_get_long_internal(h, self->plpresent,&plpresent)) != GRIB_SUCCESS)
+        return ret;
+
+    dlatfirst=((double)latfirst)/factor;
+    dlatlast=((double)latlast)/factor;
+    dlonfirst=((double)lonfirst)/factor;
+    dlonlast=((double)lonlast)/factor;
+
+    lats=(double*)grib_context_malloc(c,sizeof(double)*N*2);
+    if (!lats) {
+        grib_context_log(c,GRIB_LOG_FATAL,
+                "global_gaussian: unable to allocate %d bytes",sizeof(double)*N*2);
+    }
+    if((ret = grib_get_gaussian_latitudes(N, lats)) != GRIB_SUCCESS)
+        return ret;
+
+    /* GRIB-704: Work out the maximum element in pl array, if present */
+    max_pl = 4*N; /* default */
+    if (plpresent) {
+        size_t plsize=0, i=0;
+        long* pl=NULL; /* pl array */
+        if((ret = grib_get_size(h,self->pl,&plsize)) != GRIB_SUCCESS)
+            return ret;
+        Assert(plsize);
+        pl=(long*)grib_context_malloc_clear(c,sizeof(long)*plsize);
+        grib_get_long_array_internal(h,self->pl,pl, &plsize);
+
+        max_pl = pl[0];
+        for (i=1; i<plsize; i++) {
+            if (pl[i] > max_pl) max_pl = pl[i];
+        }
+        grib_context_free(c, pl);
+    }
+
+    /* If Ni is missing, then this is a reduced gaussian grid */
+    if (Ni == GRIB_MISSING_LONG ) Ni=max_pl;
+
+    if (is_gaussian_global(dlatfirst,dlatlast,dlonfirst,dlonlast,Ni,lats,angular_precision)) {
+        *val=1;  /* global */
+    } else {
+        *val=0;  /* not global */
+    }
+
+    grib_context_free(c,lats);
 
-  if((ret = grib_get_long_internal(a->parent->h, self->latlast,&latlast)) != GRIB_SUCCESS)
     return ret;
-
-  if((ret = grib_get_long_internal(a->parent->h, self->lonlast,&lonlast)) != GRIB_SUCCESS)
-    return ret;
-
-  dlatfirst=((double)latfirst)/factor;
-  dlatlast=((double)latlast)/factor;
-  dlonfirst=((double)lonfirst)/factor;
-  dlonlast=((double)lonlast)/factor;
-
-  lats=(double*)grib_context_malloc(c,sizeof(double)*N*2);
-  if (!lats) {
-  	grib_context_log(c,GRIB_LOG_FATAL,
-		"global_gaussian: unable to allocate %d bytes",sizeof(double)*N*2);
-  }
-  if((ret = grib_get_gaussian_latitudes(N, lats)) != GRIB_SUCCESS)
-      return ret;
-
-  if (Ni == GRIB_MISSING_LONG ) Ni=N*4;
-  d=fabs(lats[0]-lats[1]);
-  if ( (fabs(dlatfirst-lats[0]) >= d ) ||
-       (fabs(dlatlast+lats[0]) >= d )  ||
-        dlonfirst != 0                 ||
-        fabs(dlonlast  - (360.0-360.0/Ni)) > 360.0/Ni
-     ) 
- {
-	/* not global */
-	*val=0;
-  } else {
-  	/* global */
-	*val=1;
-  }
-
-  grib_context_free(c,lats);
-
-  return ret;
 }
 
 static int pack_long(grib_accessor* a, const long* val, size_t *len)
 {
-  grib_accessor_global_gaussian* self = (grib_accessor_global_gaussian*)a;
-  int ret=GRIB_SUCCESS;
-  long latfirst,latlast,lonfirst,lonlast,di,diold,basic_angle=0,N,Ni;
-  long factor;
-  double* lats;
-  double ddi,dlonlast;
-  double dfactor,dNi;
-  grib_context* c=a->parent->h->context;
-
-  if (*val == 0) return ret;
-
-  if (self->basic_angle)  {
-	  factor=1000000;
-	  if((ret = grib_set_missing(a->parent->h, self->subdivision)) != GRIB_SUCCESS)
-		return ret;
-
-	  if((ret = grib_set_long_internal(a->parent->h, self->basic_angle,basic_angle)) != GRIB_SUCCESS)
-		return ret;
-  } else factor=1000;
-
-  if((ret = grib_get_long_internal(a->parent->h, self->N,&N)) != GRIB_SUCCESS)
-    return ret;
-  if (N==0) return ret;
-
-  if((ret = grib_get_long_internal(a->parent->h, self->Ni,&Ni)) != GRIB_SUCCESS)
-    return ret;
-  if (Ni == GRIB_MISSING_LONG ) Ni=N*4;
-  if (Ni==0) return ret;
-
-  if((ret = grib_get_long_internal(a->parent->h, self->di,&diold)) != GRIB_SUCCESS)
-    return ret;
-
-  lats=(double*)grib_context_malloc(c,sizeof(double)*N*2);
-  if (!lats) {
-  	grib_context_log(c,GRIB_LOG_FATAL,
-		"global_gaussian: unable to allocate %d bytes",sizeof(double)*N*2);
-  }
-  if((ret = grib_get_gaussian_latitudes(N, lats)) != GRIB_SUCCESS)
-      return ret;
-
-  /* rounding */
-  latfirst=(long)(lats[0]*factor+0.5);
-  latlast=-latfirst;
-  lonfirst=0;
-  dfactor=(double)factor;
-  dNi=(double)Ni;
-  ddi=(360.0*dfactor)/dNi;
-  dlonlast=(360.0*dfactor)-ddi+0.5;
-  ddi=ddi+0.5;
-  di=ddi;
-  lonlast=dlonlast;
-
-  grib_context_free(c,lats);
-
-  if((ret = grib_set_long_internal(a->parent->h, self->latfirst,latfirst)) != GRIB_SUCCESS)
-    return ret;
-
-  if((ret = grib_set_long_internal(a->parent->h, self->lonfirst,lonfirst)) != GRIB_SUCCESS)
-    return ret;
-
-  if((ret = grib_set_long_internal(a->parent->h, self->latlast,latlast)) != GRIB_SUCCESS)
-    return ret;
-
-  if((ret = grib_set_long_internal(a->parent->h, self->lonlast,lonlast)) != GRIB_SUCCESS)
-    return ret;
-
-  if (diold != GRIB_MISSING_LONG)
-  	if((ret = grib_set_long_internal(a->parent->h, self->di,di)) != GRIB_SUCCESS)
-		return ret;
-
-  return GRIB_SUCCESS;
+    grib_accessor_global_gaussian* self = (grib_accessor_global_gaussian*)a;
+    int ret=GRIB_SUCCESS;
+    long latfirst,latlast,lonfirst,lonlast,di,diold,basic_angle=0,N,Ni;
+    long factor;
+    double* lats;
+    double ddi,dlonlast;
+    double dfactor,dNi;
+    long plpresent=0;
+    grib_context* c=a->context;
+    grib_handle* h = grib_handle_of_accessor(a);
+
+    if (*val == 0) return ret;
+
+    if (self->basic_angle)  {
+        factor=1000000;
+        if((ret = grib_set_missing(h, self->subdivision)) != GRIB_SUCCESS)
+            return ret;
+
+        if((ret = grib_set_long_internal(h, self->basic_angle,basic_angle)) != GRIB_SUCCESS)
+            return ret;
+    } else factor=1000;
+
+    if((ret = grib_get_long_internal(h, self->N,&N)) != GRIB_SUCCESS)
+        return ret;
+    if (N==0) return ret;
+
+    if((ret = grib_get_long_internal(h, self->Ni,&Ni)) != GRIB_SUCCESS)
+        return ret;
+    if (Ni == GRIB_MISSING_LONG ) Ni=N*4;
+    if (Ni==0) return ret;
+
+    if((ret = grib_get_long_internal(h, self->di,&diold)) != GRIB_SUCCESS)
+        return ret;
+
+    lats=(double*)grib_context_malloc(c,sizeof(double)*N*2);
+    if (!lats) {
+        grib_context_log(c,GRIB_LOG_FATAL,
+                "global_gaussian: unable to allocate %d bytes",sizeof(double)*N*2);
+    }
+    if((ret = grib_get_gaussian_latitudes(N, lats)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret = grib_get_long_internal(h, self->plpresent,&plpresent)) != GRIB_SUCCESS)
+        return ret;
+
+    /* GRIB-854: For octahedral grids, get max of pl array */
+    if (plpresent) {
+        size_t plsize=0, i=0;
+        long* pl=NULL; /* pl array */
+        long max_pl=0; /* max. element of pl array */
+
+        if((ret = grib_get_size(h,self->pl,&plsize)) != GRIB_SUCCESS)
+            return ret;
+        Assert(plsize);
+        pl=(long*)grib_context_malloc_clear(c,sizeof(long)*plsize);
+        grib_get_long_array_internal(h,self->pl,pl, &plsize);
+
+        max_pl = pl[0];
+        for (i=1; i<plsize; i++) {
+            Assert( pl[i] > 0 );
+            if (pl[i] > max_pl) max_pl = pl[i];
+        }
+        grib_context_free(c, pl);
+        Ni = max_pl;
+    }
+
+    /* rounding */
+    latfirst=(long)(lats[0]*factor+0.5);
+    latlast=-latfirst;
+    lonfirst=0;
+    dfactor=(double)factor;
+    dNi=(double)Ni;
+    ddi=(360.0*dfactor)/dNi;
+    dlonlast=(360.0*dfactor)-ddi+0.5;
+    ddi=ddi+0.5;
+    di=ddi;
+    lonlast=dlonlast;
+
+    grib_context_free(c,lats);
+
+    if((ret = grib_set_long_internal(h, self->latfirst,latfirst)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret = grib_set_long_internal(h, self->lonfirst,lonfirst)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret = grib_set_long_internal(h, self->latlast,latlast)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret = grib_set_long_internal(h, self->lonlast,lonlast)) != GRIB_SUCCESS)
+        return ret;
+
+    if (diold != GRIB_MISSING_LONG)
+        if((ret = grib_set_long_internal(h, self->di,di)) != GRIB_SUCCESS)
+            return ret;
+
+    return GRIB_SUCCESS;
 }
-
-
-
diff --git a/src/grib_accessor_class_group.c b/src/grib_accessor_class_group.c
index d22af31..5b1a8c5 100644
--- a/src/grib_accessor_class_group.c
+++ b/src/grib_accessor_class_group.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -106,6 +106,7 @@ static grib_accessor_class _grib_accessor_class_group = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -133,21 +134,22 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
 
 static void init(grib_accessor* a, const long len , grib_arguments* arg )
 {
-  grib_buffer* buffer=a->parent->h->buffer;
+  grib_buffer* buffer=grib_handle_of_accessor(a)->buffer;
   grib_accessor_group* self=(grib_accessor_group*)a;
 
   size_t i=0;
   unsigned char* v;
-  const char *s=grib_arguments_get_string(a->parent->h,arg,0);
+  const char *s=grib_arguments_get_string(grib_handle_of_accessor(a),arg,0);
 
   if (s && strlen(s) > 1) {
-  	grib_context_log(a->parent->h->context,GRIB_LOG_WARNING,
+  	grib_context_log(a->context,GRIB_LOG_WARNING,
 	"Using only first character as group end of %s not the string %s",a->name,s);
   }
 
@@ -195,13 +197,13 @@ static int unpack_string(grib_accessor* a, char* val, size_t *len)
 
   if(len[0] < (a->length+1))
   {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 );
+    grib_context_log(a->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 );
     len[0] = 0;
     return GRIB_ARRAY_TOO_SMALL;
   }
 
   for ( i = 0; i < a->length; i++)
-    val[i] = a->parent->h->buffer->data[a->offset+i];
+    val[i] = grib_handle_of_accessor(a)->buffer->data[a->offset+i];
   val[i] = 0;
   len[0] = i;
   return GRIB_SUCCESS;
@@ -214,12 +216,12 @@ static int pack_string(grib_accessor* a, const char* val, size_t *len)
 }
 
 static int pack_long(grib_accessor* a, const long*  v, size_t *len){
-  grib_context_log(a->parent->h->context,GRIB_LOG_ERROR, " Should not pack %s as long", a->name);
+  grib_context_log(a->context,GRIB_LOG_ERROR, " Should not pack %s as long", a->name);
   return GRIB_NOT_IMPLEMENTED;
 }
 
 static int pack_double(grib_accessor* a, const double*v, size_t *len){
-  grib_context_log(a->parent->h->context,GRIB_LOG_ERROR, " Should not pack %s  as double", a->name);
+  grib_context_log(a->context,GRIB_LOG_ERROR, " Should not pack %s  as double", a->name);
   return GRIB_NOT_IMPLEMENTED;
 }
 
@@ -245,7 +247,7 @@ static int  unpack_long   (grib_accessor* a, long*  v, size_t *len){
 
   *v = strtol(val,&last,10);
 
-  grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG, " Casting string %s to long", a->name);
+  grib_context_log(a->context,GRIB_LOG_DEBUG, " Casting string %s to long", a->name);
   return GRIB_SUCCESS;
 
 }
@@ -260,7 +262,7 @@ static int unpack_double (grib_accessor* a, double*v, size_t *len){
 
   if(*last == 0)
   {
-    grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG, " Casting string %s to long", a->name);
+    grib_context_log(a->context,GRIB_LOG_DEBUG, " Casting string %s to long", a->name);
     return GRIB_SUCCESS;
   }
 
@@ -288,8 +290,8 @@ static int compare(grib_accessor* a,grib_accessor* b) {
 
   if (alen != blen) return GRIB_COUNT_MISMATCH;
 
-  aval=(char*)grib_context_malloc(a->parent->h->context,alen*sizeof(char));
-  bval=(char*)grib_context_malloc(b->parent->h->context,blen*sizeof(char));
+  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);
@@ -297,8 +299,8 @@ static int compare(grib_accessor* a,grib_accessor* b) {
   retval = GRIB_SUCCESS;
   if (strcmp(aval,bval)) retval = GRIB_STRING_VALUE_MISMATCH;
 
-  grib_context_free(a->parent->h->context,aval);
-  grib_context_free(b->parent->h->context,bval);
+  grib_context_free(a->context,aval);
+  grib_context_free(b->context,bval);
 
   return retval;
 }
diff --git a/src/grib_accessor_class_gts_header.c b/src/grib_accessor_class_gts_header.c
index 680c97b..7ca139c 100644
--- a/src/grib_accessor_class_gts_header.c
+++ b/src/grib_accessor_class_gts_header.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -91,6 +91,7 @@ static grib_accessor_class _grib_accessor_class_gts_header = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -126,6 +127,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -135,8 +137,8 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 	grib_accessor_gts_header* self = (grib_accessor_gts_header*)a; 
     self->gts_offset = -1;
 	self->gts_length = -1;
-	self->gts_offset = grib_arguments_get_long(a->parent->h,c,0);
-	self->gts_length = grib_arguments_get_long(a->parent->h,c,1);
+	self->gts_offset = grib_arguments_get_long(grib_handle_of_accessor(a),c,0);
+	self->gts_length = grib_arguments_get_long(grib_handle_of_accessor(a),c,1);
 }
 
 static int pack_string(grib_accessor* a, const char* val, size_t *len){
@@ -149,7 +151,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_gts_header* self=(grib_accessor_gts_header*)a;
-	grib_handle* h=a->parent->h;
+	grib_handle* h=grib_handle_of_accessor(a);
 	int offset=0;
 	int length=0;
 
@@ -178,6 +180,6 @@ static int value_count(grib_accessor* a,long* count)
 
 static size_t string_length(grib_accessor* a)
 {
-	grib_handle* h=a->parent->h;
+	grib_handle* h=grib_handle_of_accessor(a);
 	return h->gts_header_len;
 }
diff --git a/src/grib_accessor_class_hash_array.c b/src/grib_accessor_class_hash_array.c
index 058fd9e..7eef15d 100644
--- a/src/grib_accessor_class_hash_array.c
+++ b/src/grib_accessor_class_hash_array.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -107,6 +107,7 @@ static grib_accessor_class _grib_accessor_class_hash_array = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -135,6 +136,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -160,7 +162,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
    grib_accessor_hash_array* self=(grib_accessor_hash_array*)a;
    char s[200]={0,};
    sprintf(s,"%g",*val);
-   self->key=grib_context_strdup(a->parent->h->context,s);
+   self->key=grib_context_strdup(a->context,s);
    self->ha=0;
   return GRIB_SUCCESS;
 }
@@ -170,15 +172,15 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
    grib_accessor_hash_array* self=(grib_accessor_hash_array*)a;
    char s[200]={0,};
    sprintf(s,"%ld",*val);
-   if (self->key) grib_context_free(a->parent->h->context,self->key);
-   self->key=grib_context_strdup(a->parent->h->context,s);
+   if (self->key) grib_context_free(a->context,self->key);
+   self->key=grib_context_strdup(a->context,s);
    self->ha=0;
    return GRIB_SUCCESS;
 }
 
 static int pack_string(grib_accessor*a , const char*  v, size_t *len){
    grib_accessor_hash_array* self=(grib_accessor_hash_array*)a;
-   self->key=grib_context_strdup(a->parent->h->context,v);
+   self->key=grib_context_strdup(a->context,v);
    self->ha=0;
    return GRIB_SUCCESS;
 }
@@ -193,13 +195,13 @@ static grib_hash_array_value* find_hash_value(grib_accessor* a,int *err) {
   grib_hash_array_value* ha_ret=0;
   grib_hash_array_value* ha=NULL;
 
-  ha=get_hash_array(a->parent->h,a->creator);
+  ha=get_hash_array(grib_handle_of_accessor(a),a->creator);
 
   *err=GRIB_SUCCESS;
 
   Assert(ha!=NULL);
   if (!self->key) {
-    grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+    grib_context_log(a->context,GRIB_LOG_ERROR,
     "unable to get hash value for %s, set before getting",a->creator->name);
     *err=GRIB_HASH_ARRAY_NO_MATCH;
     return NULL;
@@ -210,7 +212,7 @@ static grib_hash_array_value* find_hash_value(grib_accessor* a,int *err) {
 
   if (!ha_ret)  {
       *err=GRIB_HASH_ARRAY_NO_MATCH;
-      grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+      grib_context_log(a->context,GRIB_LOG_ERROR,
                           "hash_array: no match for %s=%s",
                             a->creator->name,self->key);
       return NULL;
diff --git a/src/grib_accessor_class_headers_only.c b/src/grib_accessor_class_headers_only.c
index 1def17a..8911943 100644
--- a/src/grib_accessor_class_headers_only.c
+++ b/src/grib_accessor_class_headers_only.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -83,6 +83,7 @@ static grib_accessor_class _grib_accessor_class_headers_only = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -120,6 +121,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -133,7 +135,7 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 
 static int  unpack_long(grib_accessor* a, long* val, size_t *len)
 {
-  *val = a->parent->h->partial;
+  *val = grib_handle_of_accessor(a)->partial;
   *len =1;
   return 0;
 }
diff --git a/src/grib_accessor_class_ibmfloat.c b/src/grib_accessor_class_ibmfloat.c
index cb3b326..9ae2803 100644
--- a/src/grib_accessor_class_ibmfloat.c
+++ b/src/grib_accessor_class_ibmfloat.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -104,6 +104,7 @@ static grib_accessor_class _grib_accessor_class_ibmfloat = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -135,6 +136,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -164,13 +166,13 @@ static int unpack_double   (grib_accessor* a, double* val, size_t *len)
 
     if(*len < rlen)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, " wrong size (%ld) for %s it contains %d values ", *len,a->name , rlen);
+        grib_context_log(a->context, GRIB_LOG_ERROR, " wrong size (%ld) for %s it contains %d values ", *len,a->name , rlen);
         *len = 0;
         return GRIB_ARRAY_TOO_SMALL;
     }
 
     for(i=0; i< rlen; i++)
-        val[i] = grib_long_to_ibm(grib_decode_unsigned_long(a->parent->h->buffer->data,&bitp,32));
+        val[i] = grib_long_to_ibm(grib_decode_unsigned_long(grib_handle_of_accessor(a)->buffer->data,&bitp,32));
 
     *len = rlen;
     return GRIB_SUCCESS;
@@ -188,7 +190,7 @@ static int pack_double   (grib_accessor* a, const double* val, size_t *len)
 
     if(*len < 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, " wrong size for %s it pack at least 1 values ", a->name , rlen );
+        grib_context_log(a->context, GRIB_LOG_ERROR, " wrong size for %s it pack at least 1 values ", a->name , rlen );
         *len = 0;
         return GRIB_ARRAY_TOO_SMALL;
     }
@@ -201,27 +203,27 @@ static int pack_double   (grib_accessor* a, const double* val, size_t *len)
     printf("IBMFLOAT val=%.20f nearest_smaller_ibm_float=%.20f long_to_ibm=%.20f\n",val[0],x ,y);
          */
         off = byte_offset(a)*8;
-        ret =  grib_encode_unsigned_long(a->parent->h->buffer->data,grib_ibm_to_long(val[0]), &off,  32);
-        if (*len > 1)  grib_context_log(a->parent->h->context, GRIB_LOG_WARNING, "grib_accessor_unsigned : Trying to pack %d values in a scalar %s, packing first value",  *len, a->name  );
+        ret =  grib_encode_unsigned_long(grib_handle_of_accessor(a)->buffer->data,grib_ibm_to_long(val[0]), &off,  32);
+        if (*len > 1)  grib_context_log(a->context, GRIB_LOG_WARNING, "grib_accessor_unsigned : Trying to pack %d values in a scalar %s, packing first value",  *len, a->name  );
         if (ret == GRIB_SUCCESS) len[0] = 1;
         return ret;
     }
 
     buflen = rlen*4;
 
-    buf = (unsigned char*)grib_context_malloc(a->parent->h->context,buflen);
+    buf = (unsigned char*)grib_context_malloc(a->context,buflen);
 
     for(i=0; i < rlen;i++){
         grib_encode_unsigned_longb(buf,grib_ibm_to_long(val[i]), &off,  32);
     }
-    ret = grib_set_long_internal(a->parent->h,grib_arguments_get_name(a->parent->h,self->arg,0),rlen);
+    ret = grib_set_long_internal(grib_handle_of_accessor(a),grib_arguments_get_name(a->parent->h,self->arg,0),rlen);
 
     if(ret == GRIB_SUCCESS)
         grib_buffer_replace(a, buf, buflen,1,1);
     else
         *len = 0;
 
-    grib_context_free(a->parent->h->context,buf);
+    grib_context_free(a->context,buf);
 
     a->length = byte_count(a);
 
@@ -238,7 +240,7 @@ static int value_count(grib_accessor* a,long* len)
     grib_accessor_ibmfloat* self = (grib_accessor_ibmfloat*)a;
     *len = 0;
     if(!self->arg) {*len=1;return 0;}
-    return grib_get_long_internal(a->parent->h,grib_arguments_get_name(a->parent->h,self->arg,0),len);
+    return grib_get_long_internal(grib_handle_of_accessor(a),grib_arguments_get_name(a->parent->h,self->arg,0),len);
 }
 
 static long byte_offset(grib_accessor* a)
@@ -259,8 +261,8 @@ static int nearest_smaller_value(grib_accessor* a, double val,double* nearest)
 {
     int ret=0;
     if (grib_nearest_smaller_ibm_float(val,nearest)==GRIB_INTERNAL_ERROR) {
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"grib_nearest_smaller_ibm_float overflow value=%g\n",val);
-        grib_dump_content(a->parent->h,stderr,"wmo",GRIB_DUMP_FLAG_HEXADECIMAL,0);
+        grib_context_log(a->context,GRIB_LOG_ERROR,"grib_nearest_smaller_ibm_float overflow value=%g\n",val);
+        grib_dump_content(grib_handle_of_accessor(a),stderr,"wmo",GRIB_DUMP_FLAG_HEXADECIMAL,0);
         ret=GRIB_INTERNAL_ERROR;
     }
     return ret;
diff --git a/src/grib_accessor_class_ieeefloat.c b/src/grib_accessor_class_ieeefloat.c
index 9f6adbe..ae6514b 100644
--- a/src/grib_accessor_class_ieeefloat.c
+++ b/src/grib_accessor_class_ieeefloat.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -93,6 +93,7 @@ static grib_accessor_class _grib_accessor_class_ieeefloat = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -127,6 +128,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -148,7 +150,7 @@ static int value_count(grib_accessor* a,long* len)
     *len = 0;
 
     if(!self->arg) {*len=1;return 0;}
-    return grib_get_long_internal(a->parent->h,grib_arguments_get_name(a->parent->h,self->arg,0),len);
+    return grib_get_long_internal(grib_handle_of_accessor(a),grib_arguments_get_name(a->parent->h,self->arg,0),len);
 }
 
 static int pack_double   (grib_accessor* a, const double* val, size_t *len)
@@ -163,34 +165,34 @@ static int pack_double   (grib_accessor* a, const double* val, size_t *len)
 
     if(*len < 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, " wrong size for %s it pack at least 1 values ", a->name , rlen );
+        grib_context_log(a->context, GRIB_LOG_ERROR, " wrong size for %s it pack at least 1 values ", a->name , rlen );
         *len = 0;
         return GRIB_ARRAY_TOO_SMALL;
     }
 
     if (rlen == 1){
         off = a->offset*8;
-        ret =  grib_encode_unsigned_long(a->parent->h->buffer->data,grib_ieee_to_long(val[0]), &off,  32);
-        if (*len > 1)  grib_context_log(a->parent->h->context, GRIB_LOG_WARNING, "grib_accessor_unsigned : Trying to pack %d values in a scalar %s, packing first value",  *len, a->name  );
+        ret =  grib_encode_unsigned_long(grib_handle_of_accessor(a)->buffer->data,grib_ieee_to_long(val[0]), &off,  32);
+        if (*len > 1)  grib_context_log(a->context, GRIB_LOG_WARNING, "grib_accessor_unsigned : Trying to pack %d values in a scalar %s, packing first value",  *len, a->name  );
         if (ret == GRIB_SUCCESS) len[0] = 1;
         return ret;
     }
 
     buflen = rlen*4;
 
-    buf = (unsigned char*)grib_context_malloc(a->parent->h->context,buflen);
+    buf = (unsigned char*)grib_context_malloc(a->context,buflen);
 
     for(i=0; i < rlen;i++){
         grib_encode_unsigned_longb(buf,grib_ieee_to_long(val[i]), &off,  32);
     }
-    ret = grib_set_long_internal(a->parent->h,grib_arguments_get_name(a->parent->h,self->arg,0),rlen);
+    ret = grib_set_long_internal(grib_handle_of_accessor(a),grib_arguments_get_name(a->parent->h,self->arg,0),rlen);
 
     if(ret == GRIB_SUCCESS)
         grib_buffer_replace(a, buf, buflen,1,1);
     else
         *len = 0;
 
-    grib_context_free(a->parent->h->context,buf);
+    grib_context_free(a->context,buf);
 
     return ret;
 }
@@ -207,12 +209,12 @@ static int unpack_double   (grib_accessor* a, double* val, size_t *len)
 
     if(*len < rlen)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, " wrong size (%ld) for %s it contains %d values ", *len,a->name , rlen);
+        grib_context_log(a->context, GRIB_LOG_ERROR, " wrong size (%ld) for %s it contains %d values ", *len,a->name , rlen);
         *len = 0;
         return GRIB_ARRAY_TOO_SMALL;
     }
     for(i=0; i< rlen; i++)
-        val[i] = grib_long_to_ieee(grib_decode_unsigned_long(a->parent->h->buffer->data,&bitp,32));
+        val[i] = grib_long_to_ieee(grib_decode_unsigned_long(grib_handle_of_accessor(a)->buffer->data,&bitp,32));
 
     *len = rlen;
     return GRIB_SUCCESS;
diff --git a/src/grib_accessor_class_ifs_param.c b/src/grib_accessor_class_ifs_param.c
index cdba1d8..74ef574 100644
--- a/src/grib_accessor_class_ifs_param.c
+++ b/src/grib_accessor_class_ifs_param.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -94,6 +94,7 @@ static grib_accessor_class _grib_accessor_class_ifs_param = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -130,6 +131,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -139,8 +141,8 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
   grib_accessor_ifs_param* self = (grib_accessor_ifs_param*)a;
   int n = 0;
 
-  self->paramId = grib_arguments_get_name(a->parent->h,c,n++);
-  self->type = grib_arguments_get_name(a->parent->h,c,n++);
+  self->paramId = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->type = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 
 }
 
@@ -150,7 +152,7 @@ static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
   int ret = 0;
   long paramId = 0;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->paramId,&paramId)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->paramId,&paramId)) != GRIB_SUCCESS)
     return ret;
 
   if (paramId > 129000 && paramId < 129999 ) 
@@ -174,7 +176,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
   long paramId = *val;
   long param;
 
-  grib_get_long(a->parent->h, self->type,&type);
+  grib_get_long(grib_handle_of_accessor(a), self->type,&type);
 
   if (type==33 || type==35) {
 	if (paramId>1000) {
@@ -208,7 +210,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
 	}
   }
 
-  return grib_set_long_internal(a->parent->h,self->paramId,paramId);
+  return grib_set_long_internal(grib_handle_of_accessor(a),self->paramId,paramId);
 }
 
 static int  get_native_type(grib_accessor* a){
diff --git a/src/grib_accessor_class_int16.c b/src/grib_accessor_class_int16.c
index d05be77..a60f948 100644
--- a/src/grib_accessor_class_int16.c
+++ b/src/grib_accessor_class_int16.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -84,6 +84,7 @@ static grib_accessor_class _grib_accessor_class_int16 = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -121,6 +122,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -129,11 +131,11 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
     long value = 0;
     /* long pos = a->offset; */
-    /* unsigned char* data = a->parent->h->buffer->data; */
+    /* unsigned char* data = grib_handle_of_accessor(a)->buffer->data; */
 
     if(*len < 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 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_int16_little_endian.c b/src/grib_accessor_class_int16_little_endian.c
index 65ba19f..97f2a52 100644
--- a/src/grib_accessor_class_int16_little_endian.c
+++ b/src/grib_accessor_class_int16_little_endian.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -84,6 +84,7 @@ static grib_accessor_class _grib_accessor_class_int16_little_endian = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -121,6 +122,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -129,11 +131,11 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
     long value = 0;
     /*long pos = a->offset;*/
-    /*unsigned char* data = a->parent->h->buffer->data;*/
+    /*unsigned char* data = grib_handle_of_accessor(a)->buffer->data;*/
 
     if(*len < 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 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_int32.c b/src/grib_accessor_class_int32.c
index e2e18f3..189e7f2 100644
--- a/src/grib_accessor_class_int32.c
+++ b/src/grib_accessor_class_int32.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -84,6 +84,7 @@ static grib_accessor_class _grib_accessor_class_int32 = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -121,6 +122,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -129,11 +131,11 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
     long value = 0;
     /*long pos = a->offset;*/
-    /*unsigned char* data = a->parent->h->buffer->data;*/
+    /*unsigned char* data = grib_handle_of_accessor(a)->buffer->data;*/
 
     if(*len < 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 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_int32_little_endian.c b/src/grib_accessor_class_int32_little_endian.c
index 2e17ac3..d44dccb 100644
--- a/src/grib_accessor_class_int32_little_endian.c
+++ b/src/grib_accessor_class_int32_little_endian.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -84,6 +84,7 @@ static grib_accessor_class _grib_accessor_class_int32_little_endian = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -121,6 +122,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -129,11 +131,11 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
     long value = 0;
     /* long pos = a->offset; */
-    /* unsigned char* data = a->parent->h->buffer->data; */
+    /* unsigned char* data = grib_handle_of_accessor(a)->buffer->data; */
 
     if(*len < 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 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_int64.c b/src/grib_accessor_class_int64.c
index 8c1fa1a..fa39947 100644
--- a/src/grib_accessor_class_int64.c
+++ b/src/grib_accessor_class_int64.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -84,6 +84,7 @@ static grib_accessor_class _grib_accessor_class_int64 = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -121,6 +122,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -129,13 +131,13 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
     long value = 0;
     long pos = a->offset;
-    unsigned char* data = a->parent->h->buffer->data;
+    unsigned char* data = grib_handle_of_accessor(a)->buffer->data;
     unsigned long long result = 0, tmp;
     int i;
 
     if(*len < 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 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;
     }
@@ -150,7 +152,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 
     /* Result does not fit in long */
     if(tmp != result) {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Value for %s cannot be decoded as a 'long' (%llu)", a->name , result );
+        grib_context_log(a->context, GRIB_LOG_ERROR, "Value for %s cannot be decoded as a 'long' (%llu)", a->name , result );
         return GRIB_DECODING_ERROR;
     }
 
diff --git a/src/grib_accessor_class_int64_little_endian.c b/src/grib_accessor_class_int64_little_endian.c
index 6ca5ffa..21ab771 100644
--- a/src/grib_accessor_class_int64_little_endian.c
+++ b/src/grib_accessor_class_int64_little_endian.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -84,6 +84,7 @@ static grib_accessor_class _grib_accessor_class_int64_little_endian = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -121,6 +122,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -129,13 +131,13 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
     long value = 0;
     long pos = a->offset;
-    unsigned char* data = a->parent->h->buffer->data;
+    unsigned char* data = grib_handle_of_accessor(a)->buffer->data;
     unsigned long long result = 0, tmp;
     int i;
 
     if(*len < 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 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;
     }
@@ -150,7 +152,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 
     /* Result does not fit in long */
     if(tmp != result) {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Value for %s cannot be decoded as a 'long' (%llu)", a->name , result );
+        grib_context_log(a->context, GRIB_LOG_ERROR, "Value for %s cannot be decoded as a 'long' (%llu)", a->name , result );
         return GRIB_DECODING_ERROR;
     }
 
diff --git a/src/grib_accessor_class_int8.c b/src/grib_accessor_class_int8.c
index 759b1d5..7c1f9ce 100644
--- a/src/grib_accessor_class_int8.c
+++ b/src/grib_accessor_class_int8.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -84,6 +84,7 @@ static grib_accessor_class _grib_accessor_class_int8 = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -121,6 +122,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -129,11 +131,11 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
     long value = 0;
     long pos = a->offset;
-    char* data = (char*)a->parent->h->buffer->data;
+    char* data = (char*)grib_handle_of_accessor(a)->buffer->data;
 
     if(*len < 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 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_iterator.c b/src/grib_accessor_class_iterator.c
index 1df5f4c..1dc875c 100644
--- a/src/grib_accessor_class_iterator.c
+++ b/src/grib_accessor_class_iterator.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -88,6 +88,7 @@ static grib_accessor_class _grib_accessor_class_iterator = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -126,6 +127,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
diff --git a/src/grib_accessor_class_julian_day.c b/src/grib_accessor_class_julian_day.c
index 19e2779..9df0892 100644
--- a/src/grib_accessor_class_julian_day.c
+++ b/src/grib_accessor_class_julian_day.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -99,6 +99,7 @@ static grib_accessor_class _grib_accessor_class_julian_day = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -133,6 +134,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -143,10 +145,10 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
   grib_accessor_julian_day* self = (grib_accessor_julian_day*)a;
   int n=0;
 
-  self->date = grib_arguments_get_name(a->parent->h,c,n++);
-  self->hour = grib_arguments_get_name(a->parent->h,c,n++);
-  self->minute = grib_arguments_get_name(a->parent->h,c,n++);
-  self->second = grib_arguments_get_name(a->parent->h,c,n++);
+  self->date = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->hour = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->minute = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->second = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 
   a->length=0;
 }
@@ -177,13 +179,13 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
   date=year * 10000 + month * 100 + day;
 
-  ret=grib_set_long_internal(a->parent->h,self->date,date);
+  ret=grib_set_long_internal(grib_handle_of_accessor(a),self->date,date);
   if (ret!=0) return ret;
-  ret=grib_set_long_internal(a->parent->h,self->hour,hour);
+  ret=grib_set_long_internal(grib_handle_of_accessor(a),self->hour,hour);
   if (ret!=0) return ret;
-  ret=grib_set_long_internal(a->parent->h,self->minute,minute);
+  ret=grib_set_long_internal(grib_handle_of_accessor(a),self->minute,minute);
   if (ret!=0) return ret;
-  ret=grib_set_long_internal(a->parent->h,self->second,second);
+  ret=grib_set_long_internal(grib_handle_of_accessor(a),self->second,second);
 
   return ret;
 }
@@ -206,13 +208,13 @@ static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
   long year,month,day;
   grib_accessor_julian_day* self = (grib_accessor_julian_day*)a;
 
-  ret=grib_get_long_internal(a->parent->h,self->date,&date);
+  ret=grib_get_long_internal(grib_handle_of_accessor(a),self->date,&date);
   if (ret!=GRIB_SUCCESS) return ret;
-  ret=grib_get_long_internal(a->parent->h,self->hour,&hour);
+  ret=grib_get_long_internal(grib_handle_of_accessor(a),self->hour,&hour);
   if (ret!=GRIB_SUCCESS) return ret;
-  ret=grib_get_long_internal(a->parent->h,self->minute,&minute);
+  ret=grib_get_long_internal(grib_handle_of_accessor(a),self->minute,&minute);
   if (ret!=GRIB_SUCCESS) return ret;
-  ret=grib_get_long_internal(a->parent->h,self->second,&second);
+  ret=grib_get_long_internal(grib_handle_of_accessor(a),self->second,&second);
   if (ret!=GRIB_SUCCESS) return ret;
 
   year = date / 10000;
diff --git a/src/grib_accessor_class_ksec1expver.c b/src/grib_accessor_class_ksec1expver.c
index 4e5df84..a2f08e9 100644
--- a/src/grib_accessor_class_ksec1expver.c
+++ b/src/grib_accessor_class_ksec1expver.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -88,6 +88,7 @@ static grib_accessor_class _grib_accessor_class_ksec1expver = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -124,6 +125,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -147,11 +149,11 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 
   if(*len < 1)
   {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 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;
   }
-  value = grib_decode_unsigned_long(a->parent->h->buffer->data , &pos, a->length*8);
+  value = grib_decode_unsigned_long(grib_handle_of_accessor(a)->buffer->data , &pos, a->length*8);
 
   grib_unpack_string(a, refexpver , &llen);
 
@@ -181,18 +183,18 @@ static int pack_string(grib_accessor* a, const char* val, size_t *len)
 {
   int i = 0;
   if (len[0] != 4 ) {
-  	grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong length for %s. It has to be 4",a->name);
+  	grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong length for %s. It has to be 4",a->name);
 	return GRIB_INVALID_KEY_VALUE;
   }
   if(len[0] > (a->length)+1)
   {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "pack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 );
+    grib_context_log(a->context, GRIB_LOG_ERROR, "pack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 );
     len[0] = 0;
     return GRIB_BUFFER_TOO_SMALL;
   }
 
   for ( i = 0; i < a->length; i++)
-        a->parent->h->buffer->data[a->offset+i] = val[i];
+        grib_handle_of_accessor(a)->buffer->data[a->offset+i] = val[i];
 
   return GRIB_SUCCESS;
 }
diff --git a/src/grib_accessor_class_label.c b/src/grib_accessor_class_label.c
index 9442847..06d3a2c 100644
--- a/src/grib_accessor_class_label.c
+++ b/src/grib_accessor_class_label.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -86,6 +86,7 @@ static grib_accessor_class _grib_accessor_class_label = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -121,6 +122,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
diff --git a/src/grib_accessor_class_laplacian.c b/src/grib_accessor_class_laplacian.c
index 3eb3415..870dd8d 100644
--- a/src/grib_accessor_class_laplacian.c
+++ b/src/grib_accessor_class_laplacian.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -103,6 +103,7 @@ static grib_accessor_class _grib_accessor_class_laplacian = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -138,6 +139,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -147,11 +149,11 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
   grib_accessor_laplacian* self = (grib_accessor_laplacian*)a;
   int n = 0;
 
-  self->value = grib_arguments_get_name(a->parent->h,c,n++);
-  self->multiplier    = grib_arguments_get_name(a->parent->h,c,n++);
-  self->divisor    = grib_arguments_get_name(a->parent->h,c,n++);
-  self->truncating    = grib_arguments_get_name(a->parent->h,c,n++);
-  self->computeLaplacianOperator    = grib_arguments_get_name(a->parent->h,c,n++);
+  self->value = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->multiplier    = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->divisor    = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->truncating    = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->computeLaplacianOperator    = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 
 }
 
@@ -165,19 +167,19 @@ static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
 
   if(*len < 1){
     ret = GRIB_ARRAY_TOO_SMALL;
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
+    grib_context_log(a->context, GRIB_LOG_ERROR,
       "Accessor %s cannot gather value for %s and/or %s error %d",
       a->name,self->multiplier, self->divisor, ret);
     return ret;
   }
 
-  if((ret = grib_get_long_internal(a->parent->h, self->divisor,&divisor)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->divisor,&divisor)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->multiplier,&multiplier)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->multiplier,&multiplier)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->value,&value)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->value,&value)) != GRIB_SUCCESS)
     return ret;
 
   if (value == GRIB_MISSING_LONG) *val=GRIB_MISSING_DOUBLE;
@@ -207,28 +209,28 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
   long truncating=0;
   double x;
 
-  grib_set_long(a->parent->h, self->computeLaplacianOperator,0);
+  grib_set_long(grib_handle_of_accessor(a), self->computeLaplacianOperator,0);
 
-  ret = grib_get_long_internal(a->parent->h, self->divisor,&divisor);
+  ret = grib_get_long_internal(grib_handle_of_accessor(a), self->divisor,&divisor);
   if(ret != GRIB_SUCCESS) {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->divisor, ret);
+    grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->divisor, ret);
     return ret;
   }
-  ret = grib_get_long_internal(a->parent->h, self->multiplier,&multiplier);
+  ret = grib_get_long_internal(grib_handle_of_accessor(a), self->multiplier,&multiplier);
   if(ret != GRIB_SUCCESS){
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->divisor, ret);
+    grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->divisor, ret);
     return ret;
   }
   if (self->truncating) {
-    ret = grib_get_long_internal(a->parent->h, self->truncating,&truncating);
+    ret = grib_get_long_internal(grib_handle_of_accessor(a), self->truncating,&truncating);
     if(ret != GRIB_SUCCESS){
-      grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->truncating, ret);
+      grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->truncating, ret);
       return ret;
     }
   }
 
   if (multiplier == 0) {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Accessor %s cannont divide by a zero multiplier %s error %d  \n", a->name, self->multiplier, ret);
+    grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont divide by a zero multiplier %s error %d  \n", a->name, self->multiplier, ret);
     return GRIB_ENCODING_ERROR;
   }
 
@@ -240,9 +242,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 	  value = x > 0 ? (long) (x+0.5) : (long)(x-0.5);
   }
 
-  ret = grib_set_long_internal(a->parent->h, self->value,value);
+  ret = grib_set_long_internal(grib_handle_of_accessor(a), self->value,value);
   if(ret )
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Accessor %s cannont pack value for %s error %d \n", a->name, self->value, ret);
+    grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont pack value for %s error %d \n", a->name, self->value, ret);
 
   if (ret == GRIB_SUCCESS) *len = 1;
 
@@ -251,7 +253,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
 static int is_missing(grib_accessor* a){
   grib_accessor_laplacian* self = (grib_accessor_laplacian*)a;
-  grib_accessor* av=grib_find_accessor(a->parent->h,self->value);
+  grib_accessor* av=grib_find_accessor(grib_handle_of_accessor(a),self->value);
 
   if (!av) return GRIB_NOT_FOUND;
   return grib_is_missing_internal(av);
@@ -259,9 +261,9 @@ static int is_missing(grib_accessor* a){
   int ret=0;
   long value=0;
 
-  if((ret = grib_get_long_internal(a->parent->h,self->value,
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->value,
      &value) )   != GRIB_SUCCESS){
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
+    grib_context_log(a->context, GRIB_LOG_ERROR,
       "Accessor %s cannont gather value for %s error %d \n", a->name,
        self->value, ret);
     return 0;
diff --git a/src/grib_accessor_class_latitudes.c b/src/grib_accessor_class_latitudes.c
index f44781f..5c73bc3 100644
--- a/src/grib_accessor_class_latitudes.c
+++ b/src/grib_accessor_class_latitudes.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -96,6 +96,7 @@ static grib_accessor_class _grib_accessor_class_latitudes = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -133,6 +134,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -164,8 +166,8 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
     grib_accessor_latitudes* self = (grib_accessor_latitudes*)a;
     int n = 0;
 
-    self->values = grib_arguments_get_name(a->parent->h,c,n++);
-    self->distinct = grib_arguments_get_long(a->parent->h,c,n++);
+    self->values = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->distinct = grib_arguments_get_long(grib_handle_of_accessor(a),c,n++);
     self->save=0;
 
     a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
@@ -173,11 +175,11 @@ 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_context* c=a->parent->h->context;
+    grib_context* c=a->context;
     grib_accessor_latitudes* self = (grib_accessor_latitudes*)a;
     int ret = 0;
     double* v=val;
-    double dummy=0;
+    double dummyLon=0, dummyVal=0;
     size_t size=0;
     long count=0;
     grib_iterator* iter=NULL;
@@ -208,14 +210,14 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
         return GRIB_SUCCESS;
     }
 
-    iter=grib_iterator_new(a->parent->h,0,&ret);
+    iter=grib_iterator_new(grib_handle_of_accessor(a),0,&ret);
     if (ret!=GRIB_SUCCESS) {
         if (iter) grib_iterator_delete(iter);
         grib_context_log(c,GRIB_LOG_ERROR,"unable to create iterator");
         return ret;
     }
 
-    while(grib_iterator_next(iter,v++,&dummy,&dummy)) {}
+    while(grib_iterator_next(iter,v++,&dummyLon,&dummyVal)) {}
     grib_iterator_delete(iter);
 
     *len=size;
@@ -226,8 +228,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
 static int value_count(grib_accessor* a,long* len)
 {
     grib_accessor_latitudes* self = (grib_accessor_latitudes*)a;
-    grib_handle* h=a->parent->h;
-    grib_context* c=a->parent->h->context;
+    grib_handle* h=grib_handle_of_accessor(a);
+    grib_context* c=a->context;
     double* val=NULL;
     int ret;
     size_t size;
@@ -258,13 +260,13 @@ static int get_distinct(grib_accessor* a,double** val,long* len) {
     double prev;
     double *v=NULL;
     double *v1=NULL;
-    double dummy;
+    double dummyLon=0, dummyVal=0;
     int ret=0;
     int i;
     long jScansPositively=0; /*default: north to south*/
     size_t size=*len;
-    grib_context* c=a->parent->h->context;
-    grib_iterator* iter=grib_iterator_new(a->parent->h,0,&ret);
+    grib_context* c=a->context;
+    grib_iterator* iter=grib_iterator_new(grib_handle_of_accessor(a),0,&ret);
     if (ret!=GRIB_SUCCESS) {
         if (iter) grib_iterator_delete(iter);
         grib_context_log(c,GRIB_LOG_ERROR,"unable to create iterator");
@@ -278,12 +280,12 @@ static int get_distinct(grib_accessor* a,double** val,long* len) {
     }
     *val=v;
 
-    while(grib_iterator_next(iter,v++,&dummy,&dummy)) {}
+    while(grib_iterator_next(iter,v++,&dummyLon,&dummyVal)) {}
     grib_iterator_delete(iter);
     v=*val;
 
     /* See which direction the latitudes are to be scanned */
-    if((ret = grib_get_long_internal(a->parent->h, "jScansPositively", &jScansPositively))) return ret;
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a), "jScansPositively", &jScansPositively))) return ret;
     if (jScansPositively) {
         qsort(v,*len,sizeof(double),&compare_doubles_ascending);		/*South to North*/
     } else {
diff --git a/src/grib_accessor_class_latlon_increment.c b/src/grib_accessor_class_latlon_increment.c
index 0190560..d3ee53a 100644
--- a/src/grib_accessor_class_latlon_increment.c
+++ b/src/grib_accessor_class_latlon_increment.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -104,6 +104,7 @@ static grib_accessor_class _grib_accessor_class_latlon_increment = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -140,6 +141,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -149,15 +151,15 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
   grib_accessor_latlon_increment* self = (grib_accessor_latlon_increment*)a;
   int n = 0;
 
-  self->directionIncrementGiven = grib_arguments_get_name(a->parent->h,c,n++);
-  self->directionIncrement    = grib_arguments_get_name(a->parent->h,c,n++);
-  self->scansPositively    = grib_arguments_get_name(a->parent->h,c,n++);
-  self->first = grib_arguments_get_name(a->parent->h,c,n++);
-  self->last    = grib_arguments_get_name(a->parent->h,c,n++);
-  self->numberOfPoints    = grib_arguments_get_name(a->parent->h,c,n++);
-  self->angleMultiplier    = grib_arguments_get_name(a->parent->h,c,n++);
-  self->angleDivisor   = grib_arguments_get_name(a->parent->h,c,n++);
-  self->isLongitude=grib_arguments_get_long(a->parent->h, c,n++);
+  self->directionIncrementGiven = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->directionIncrement    = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->scansPositively    = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->first = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->last    = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->numberOfPoints    = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->angleMultiplier    = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->angleDivisor   = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->isLongitude=grib_arguments_get_long(grib_handle_of_accessor(a), c,n++);
 }
 
 static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
@@ -176,28 +178,28 @@ static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
 
   if(*len < 1) return GRIB_ARRAY_TOO_SMALL;
 
-    if((ret = grib_get_long_internal(a->parent->h, self->directionIncrementGiven,&directionIncrementGiven)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->directionIncrementGiven,&directionIncrementGiven)) != GRIB_SUCCESS)
     return ret;
 
-    if((ret = grib_get_long_internal(a->parent->h, self->scansPositively,&scansPositively)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->scansPositively,&scansPositively)) != GRIB_SUCCESS)
     return ret;
 
-    if((ret = grib_get_long_internal(a->parent->h, self->directionIncrement,&directionIncrement)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->directionIncrement,&directionIncrement)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_double_internal(a->parent->h, self->first,&first)) != GRIB_SUCCESS)
+  if((ret = grib_get_double_internal(grib_handle_of_accessor(a), self->first,&first)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_double_internal(a->parent->h, self->last,&last)) != GRIB_SUCCESS)
+  if((ret = grib_get_double_internal(grib_handle_of_accessor(a), self->last,&last)) != GRIB_SUCCESS)
     return ret;
 
-    if((ret = grib_get_long_internal(a->parent->h, self->numberOfPoints,&numberOfPoints)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->numberOfPoints,&numberOfPoints)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->angleMultiplier,&angleMultiplier)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->angleMultiplier,&angleMultiplier)) != GRIB_SUCCESS)
     return ret;
 
-    if((ret = grib_get_long_internal(a->parent->h, self->angleDivisor,&angleDivisor)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->angleDivisor,&angleDivisor)) != GRIB_SUCCESS)
     return ret;
 
   if (self->isLongitude) {
@@ -207,6 +209,7 @@ static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
 
     if (!directionIncrementGiven && numberOfPoints != GRIB_MISSING_LONG)
     {
+        Assert(numberOfPoints>1);
         if (!scansPositively) { /* scans negatively */
             if (first > last){
                 *val=(first-last)/(numberOfPoints-1);
@@ -263,27 +266,27 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
   double first = 0;
   double last = 0;
   long numberOfPoints = 0;
-  long numberOfPointsInternal = 0;
+  /* long numberOfPointsInternal = 0; */
   long scansPositively = 0;
   double directionIncrementDouble=0;
 
-  ret = grib_get_double_internal(a->parent->h, self->first,&first);
+  ret = grib_get_double_internal(grib_handle_of_accessor(a), self->first,&first);
   if(ret != GRIB_SUCCESS) return ret;
   
-  ret = grib_get_double_internal(a->parent->h, self->last,&last);
+  ret = grib_get_double_internal(grib_handle_of_accessor(a), self->last,&last);
   if(ret != GRIB_SUCCESS) return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->directionIncrementGiven,&directionIncrementGiven))
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->directionIncrementGiven,&directionIncrementGiven))
           != GRIB_SUCCESS) return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->numberOfPoints,&numberOfPoints)) != GRIB_SUCCESS) return ret;
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->numberOfPoints,&numberOfPoints)) != GRIB_SUCCESS) return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->scansPositively,&scansPositively))
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->scansPositively,&scansPositively))
           != GRIB_SUCCESS) return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->angleMultiplier,&angleMultiplier)) != GRIB_SUCCESS) return ret;
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->angleMultiplier,&angleMultiplier)) != GRIB_SUCCESS) return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->angleDivisor,&angleDivisor)) != GRIB_SUCCESS) return ret;
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->angleDivisor,&angleDivisor)) != GRIB_SUCCESS) return ret;
 
   if (self->isLongitude) {
     if (last < first && scansPositively) last+=360;
@@ -295,7 +298,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     directionIncrementGiven=1;
     numberOfPoints=GRIB_MISSING_LONG;
   } else {
-    numberOfPointsInternal = 1+rint(fabs((last-first) / *val));
+    /* numberOfPointsInternal = 1+rint(fabs((last-first) / *val)); */
 
     directionIncrementDouble = rint (*val * (double)angleDivisor / (double)angleMultiplier);
 
@@ -306,17 +309,17 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
     }
   }
 
-  /*ret = grib_set_long_internal(a->parent->h, self->numberOfPoints,numberOfPoints);
+  /*ret = grib_set_long_internal(grib_handle_of_accessor(a), self->numberOfPoints,numberOfPoints);
   if(ret )
-     grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Accessor %s cannot pack value for %s error %d \n", a->name, self->numberOfPoints, ret);
+     grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannot pack value for %s error %d \n", a->name, self->numberOfPoints, ret);
     */
 
-  grib_get_long_internal(a->parent->h, self->numberOfPoints,&codedNumberOfPoints);
+  grib_get_long_internal(grib_handle_of_accessor(a), self->numberOfPoints,&codedNumberOfPoints);
 
-  ret = grib_set_long_internal(a->parent->h, self->directionIncrement,directionIncrement);
+  ret = grib_set_long_internal(grib_handle_of_accessor(a), self->directionIncrement,directionIncrement);
   if(ret ) return ret;
 
-  ret = grib_set_long_internal(a->parent->h, self->directionIncrementGiven,directionIncrementGiven);
+  ret = grib_set_long_internal(grib_handle_of_accessor(a), self->directionIncrementGiven,directionIncrementGiven);
   if(ret )return ret;
 
 #if 0
diff --git a/src/grib_accessor_class_latlonvalues.c b/src/grib_accessor_class_latlonvalues.c
index 93ed621..01c2ff5 100644
--- a/src/grib_accessor_class_latlonvalues.c
+++ b/src/grib_accessor_class_latlonvalues.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -93,6 +93,7 @@ static grib_accessor_class _grib_accessor_class_latlonvalues = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -130,6 +131,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -139,20 +141,20 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
     grib_accessor_latlonvalues* self = (grib_accessor_latlonvalues*)a;
     int n = 0;
 
-    self->values = grib_arguments_get_name(a->parent->h,c,n++);
+    self->values = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 
     a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
 }
 
 static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
 {
-    grib_context* c=a->parent->h->context;
+    grib_context* c=a->context;
     int ret = 0;
     double* v=val;
     double lat,lon,value;
     size_t size=0;
     long count=0;
-    grib_iterator* iter=grib_iterator_new(a->parent->h,0,&ret);
+    grib_iterator* iter=grib_iterator_new(grib_handle_of_accessor(a),0,&ret);
     if (ret!=GRIB_SUCCESS) {
         if (iter) grib_iterator_delete(iter);
         grib_context_log(c,GRIB_LOG_ERROR,"unable to create iterator");
@@ -183,7 +185,7 @@ static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
 static int value_count(grib_accessor* a,long* count)
 {
     grib_accessor_latlonvalues* self = (grib_accessor_latlonvalues*)a;
-    grib_handle* h=a->parent->h;
+    grib_handle* h=grib_handle_of_accessor(a);
     int ret;
     size_t size;
     if ((ret=grib_get_size(h,self->values,&size))!=GRIB_SUCCESS) {
diff --git a/src/grib_accessor_class_library_version.c b/src/grib_accessor_class_library_version.c
index 7914650..e1f3d62 100644
--- a/src/grib_accessor_class_library_version.c
+++ b/src/grib_accessor_class_library_version.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -86,6 +86,7 @@ static grib_accessor_class _grib_accessor_class_library_version = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -122,6 +123,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
diff --git a/src/grib_accessor_class_local_definition.c b/src/grib_accessor_class_local_definition.c
index fbaa5e2..c850888 100644
--- a/src/grib_accessor_class_local_definition.c
+++ b/src/grib_accessor_class_local_definition.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -111,6 +111,7 @@ static grib_accessor_class _grib_accessor_class_local_definition = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -147,6 +148,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -156,22 +158,22 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
     grib_accessor_local_definition* self = (grib_accessor_local_definition*)a;
     int n = 0;
 
-    self->grib2LocalSectionNumber = grib_arguments_get_name(a->parent->h,c,n++);
-    self->productDefinitionTemplateNumber = grib_arguments_get_name(a->parent->h,c,n++);
-    self->productDefinitionTemplateNumberInternal = grib_arguments_get_name(a->parent->h,c,n++);
-    self->type = grib_arguments_get_name(a->parent->h,c,n++);
-    self->stream = grib_arguments_get_name(a->parent->h,c,n++);
-    self->the_class = grib_arguments_get_name(a->parent->h,c,n++);
-    self->eps = grib_arguments_get_name(a->parent->h,c,n++);
-    self->stepType = grib_arguments_get_name(a->parent->h,c,n++);
-    self->derivedForecast = grib_arguments_get_name(a->parent->h,c,n++);
+    self->grib2LocalSectionNumber = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->productDefinitionTemplateNumber = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->productDefinitionTemplateNumberInternal = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->type = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->stream = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->the_class = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->eps = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->stepType = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->derivedForecast = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 }
 
 static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
     grib_accessor_local_definition* self = (grib_accessor_local_definition*)a;
 
-    return grib_get_long(a->parent->h, self->grib2LocalSectionNumber,val);
+    return grib_get_long(grib_handle_of_accessor(a), self->grib2LocalSectionNumber,val);
 }
 
 static int pack_long(grib_accessor* a, const long* val, size_t *len)
@@ -193,20 +195,20 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
     long derivedForecast=-1;
     long editionNumber = 0;
 
-    if (grib_get_long(a->parent->h, "editionNumber", &editionNumber)==GRIB_SUCCESS) {
+    if (grib_get_long(grib_handle_of_accessor(a), "editionNumber", &editionNumber)==GRIB_SUCCESS) {
         Assert(editionNumber == 2);
     }
 
-    if (grib_get_long(a->parent->h, self->productDefinitionTemplateNumber,&productDefinitionTemplateNumber)!=GRIB_SUCCESS)
+    if (grib_get_long(grib_handle_of_accessor(a), self->productDefinitionTemplateNumber,&productDefinitionTemplateNumber)!=GRIB_SUCCESS)
         tooEarly=1;
-    grib_get_long(a->parent->h, self->productDefinitionTemplateNumberInternal,&productDefinitionTemplateNumberInternal);
-    grib_get_long(a->parent->h, self->type,&type);
-    grib_get_long(a->parent->h, self->stream,&stream);
-    grib_get_long(a->parent->h, self->the_class,&the_class);
-    grib_get_long(a->parent->h, self->eps,&eps);
-    grib_get_string(a->parent->h, self->stepType,stepType,&slen);
+    grib_get_long(grib_handle_of_accessor(a), self->productDefinitionTemplateNumberInternal,&productDefinitionTemplateNumberInternal);
+    grib_get_long(grib_handle_of_accessor(a), self->type,&type);
+    grib_get_long(grib_handle_of_accessor(a), self->stream,&stream);
+    grib_get_long(grib_handle_of_accessor(a), self->the_class,&the_class);
+    grib_get_long(grib_handle_of_accessor(a), self->eps,&eps);
+    grib_get_string(grib_handle_of_accessor(a), self->stepType,stepType,&slen);
     if (!strcmp(stepType,"instant")) isInstant=1;
-    grib_get_long(a->parent->h, self->grib2LocalSectionNumber,&grib2LocalSectionNumber);
+    grib_get_long(grib_handle_of_accessor(a), self->grib2LocalSectionNumber,&grib2LocalSectionNumber);
 
     if (is_productDefinitionTemplateNumber_EPS(productDefinitionTemplateNumber))
         eps=1;
@@ -279,6 +281,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
     case 28: /* COSMO local area EPS */
     case 38: /* 4D variational increments for long window 4Dvar system */
     case 39: /* 4DVar model errors for long window 4Dvar system */
+    case 192: /* Multiple ECMWF local definitions */
         if (isInstant) {
             productDefinitionTemplateNumberNew=0;
         } else {
@@ -287,21 +290,21 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
         break;
 
     default:
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"Invalid localDefinitionNumber %d",localDefinitionNumber);
+        grib_context_log(a->context,GRIB_LOG_ERROR,"Invalid localDefinitionNumber %d",localDefinitionNumber);
         return GRIB_ENCODING_ERROR;
         break;
     }
 
     if (productDefinitionTemplateNumber != productDefinitionTemplateNumberNew) {
         if (tooEarly)
-            grib_set_long(a->parent->h, self->productDefinitionTemplateNumberInternal,productDefinitionTemplateNumberNew);
+            grib_set_long(grib_handle_of_accessor(a), self->productDefinitionTemplateNumberInternal,productDefinitionTemplateNumberNew);
         else
-            grib_set_long(a->parent->h, self->productDefinitionTemplateNumber,productDefinitionTemplateNumberNew);
+            grib_set_long(grib_handle_of_accessor(a), self->productDefinitionTemplateNumber,productDefinitionTemplateNumberNew);
     }
     if (derivedForecast>=0)
-        grib_set_long(a->parent->h, self->derivedForecast,derivedForecast);
+        grib_set_long(grib_handle_of_accessor(a), self->derivedForecast,derivedForecast);
 
-    grib_set_long(a->parent->h, self->grib2LocalSectionNumber,*val);
+    grib_set_long(grib_handle_of_accessor(a), self->grib2LocalSectionNumber,*val);
 
   return 0;
 }
diff --git a/src/grib_accessor_class_long.c b/src/grib_accessor_class_long.c
index c22c222..e233cea 100644
--- a/src/grib_accessor_class_long.c
+++ b/src/grib_accessor_class_long.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -91,6 +91,7 @@ static grib_accessor_class _grib_accessor_class_long = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -123,6 +124,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -156,12 +158,12 @@ static int unpack_string(grib_accessor*a , char*  v, size_t *len){
   l = strlen(repres)+1;
 
   if(l >*len ){
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "grib_accessor_long : unpack_string : Buffer too small for %s ", a->name );
+    grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_long : unpack_string : Buffer too small for %s ", a->name );
 
     *len = l;
     return GRIB_BUFFER_TOO_SMALL;
   }
-  grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG, "grib_accessor_long: Casting long %s to string ", a->name);
+  grib_context_log(a->context,GRIB_LOG_DEBUG, "grib_accessor_long: Casting long %s to string ", a->name);
 
   *len = l;
 
@@ -213,7 +215,7 @@ static int unpack_double(grib_accessor* a, double* val,size_t *len){
 
   if(*len < rlen)
   {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, " wrong size for %s it contains %d values ", a->name , rlen);
+    grib_context_log(a->context, GRIB_LOG_ERROR, " wrong size for %s it contains %d values ", a->name , rlen);
     *len = 0;
     return GRIB_ARRAY_TOO_SMALL;
   }
@@ -226,19 +228,19 @@ static int unpack_double(grib_accessor* a, double* val,size_t *len){
     return GRIB_SUCCESS;
   }
 
-  values = (long*)grib_context_malloc(a->parent->h->context,rlen*sizeof(long));
+  values = (long*)grib_context_malloc(a->context,rlen*sizeof(long));
   if(!values) return GRIB_INTERNAL_ERROR;
 
 
   ret = grib_unpack_long(a,values,&rlen);
   if(ret != GRIB_SUCCESS){
-    grib_context_free(a->parent->h->context,values);
+    grib_context_free(a->context,values);
     return ret;
   }
   for(i=0; i< rlen;i++)
     val[i] = values[i];
 
-  grib_context_free(a->parent->h->context,values);
+  grib_context_free(a->context,values);
 
   *len = rlen;
   return GRIB_SUCCESS;
@@ -264,8 +266,8 @@ static int compare(grib_accessor* a,grib_accessor* b) {
 
   if (alen != blen) return GRIB_COUNT_MISMATCH;
 
-  aval=(long*)grib_context_malloc(a->parent->h->context,alen*sizeof(long));
-  bval=(long*)grib_context_malloc(b->parent->h->context,blen*sizeof(long));
+  aval=(long*)grib_context_malloc(a->context,alen*sizeof(long));
+  bval=(long*)grib_context_malloc(b->context,blen*sizeof(long));
 
   grib_unpack_long(a,aval,&alen);
   grib_unpack_long(b,bval,&blen);
@@ -273,11 +275,11 @@ static int compare(grib_accessor* a,grib_accessor* b) {
   retval = GRIB_SUCCESS;
   while (alen != 0) {
     if (*bval != *aval) retval = GRIB_LONG_VALUE_MISMATCH;
-  alen--;
+    alen--;
   }
 
-  grib_context_free(a->parent->h->context,aval);
-  grib_context_free(b->parent->h->context,bval);
+  grib_context_free(a->context,aval);
+  grib_context_free(b->context,bval);
 
   return retval;
 }
@@ -287,7 +289,7 @@ static int pack_string(grib_accessor* a, const char* val, size_t *len)
   char* theEnd=NULL;
   long v=strtol(val,&theEnd,10);
   if (theEnd) {
-    grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"trying to pack \"%s\" as long",val);
+    grib_context_log(a->context,GRIB_LOG_ERROR,"trying to pack \"%s\" as long",val);
     return GRIB_WRONG_TYPE;
   }
   return grib_pack_long( a,&v,len);
diff --git a/src/grib_accessor_class_long_vector.c b/src/grib_accessor_class_long_vector.c
index 06abb60..535bd91 100644
--- a/src/grib_accessor_class_long_vector.c
+++ b/src/grib_accessor_class_long_vector.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -100,6 +100,7 @@ static grib_accessor_class _grib_accessor_class_long_vector = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -135,6 +136,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -155,12 +157,12 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
   grib_accessor_abstract_long_vector* v =NULL;
   int n = 0;
 
-  self->vector = grib_arguments_get_name(a->parent->h,c,n++);
+  self->vector = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 
-  va=(grib_accessor*)grib_find_accessor(a->parent->h,self->vector);
+  va=(grib_accessor*)grib_find_accessor(grib_handle_of_accessor(a),self->vector);
   v=(grib_accessor_abstract_long_vector*)va;
 
-  self->index = grib_arguments_get_long(a->parent->h,c,n++);
+  self->index = grib_arguments_get_long(grib_handle_of_accessor(a),c,n++);
 
   /* check self->index on init and never change it */
   Assert(self->index < v->number_of_elements && self->index>=0);
@@ -175,14 +177,14 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len) {
   grib_accessor* va=NULL;
   grib_accessor_abstract_long_vector* v =NULL;
   
-  va=(grib_accessor*)grib_find_accessor(a->parent->h,self->vector);
+  va=(grib_accessor*)grib_find_accessor(grib_handle_of_accessor(a),self->vector);
   v=(grib_accessor_abstract_long_vector*)va;
 
   /*TODO implement the dirty mechanism to avoid to unpack every time */
-  grib_get_size(a->parent->h,self->vector,&size);
-  vector=(long*)grib_context_malloc(a->parent->h->context,sizeof(long)*size);
+  grib_get_size(grib_handle_of_accessor(a),self->vector,&size);
+  vector=(long*)grib_context_malloc(a->context,sizeof(long)*size);
   grib_unpack_long(va,vector,&size);
-  grib_context_free(a->parent->h->context,vector);
+  grib_context_free(a->context,vector);
   
 
   *val = v->v[self->index];
@@ -196,7 +198,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len) {
   grib_accessor_long_vector* self = (grib_accessor_long_vector*)a;
   grib_accessor* va=NULL;
   grib_accessor_abstract_long_vector* v =NULL;
-  va=(grib_accessor*)grib_find_accessor(a->parent->h,self->vector);
+  va=(grib_accessor*)grib_find_accessor(grib_handle_of_accessor(a),self->vector);
   v=(grib_accessor_abstract_long_vector*)va;
   
   err=unpack_long(a,&lval,len);
@@ -212,7 +214,7 @@ static int    pack_long   (grib_accessor* a, const long* val, size_t *len) {
   grib_accessor* va=NULL;
   grib_accessor_abstract_long_vector* v =NULL;
   
-  va=(grib_accessor*)grib_find_accessor(a->parent->h,self->vector);
+  va=(grib_accessor*)grib_find_accessor(grib_handle_of_accessor(a),self->vector);
   v=(grib_accessor_abstract_long_vector*)va;
 
   v->pack_index=self->index;
diff --git a/src/grib_accessor_class_longitudes.c b/src/grib_accessor_class_longitudes.c
index e05ae21..9d72ba5 100644
--- a/src/grib_accessor_class_longitudes.c
+++ b/src/grib_accessor_class_longitudes.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -101,6 +101,7 @@ static grib_accessor_class _grib_accessor_class_longitudes = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -138,6 +139,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -151,8 +153,8 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
     grib_accessor_longitudes* self = (grib_accessor_longitudes*)a;
     int n = 0;
 
-    self->values = grib_arguments_get_name(a->parent->h,c,n++);
-    self->distinct = grib_arguments_get_long(a->parent->h,c,n++);
+    self->values = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->distinct = grib_arguments_get_long(grib_handle_of_accessor(a),c,n++);
     self->save=0;
     self->lons=0;
 
@@ -161,11 +163,11 @@ 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_context* c=a->parent->h->context;
+    grib_context* c=a->context;
     grib_accessor_longitudes* self = (grib_accessor_longitudes*)a;
     int ret = 0;
     double* v=val;
-    double dummy=0;
+    double dummyLat=0, dummyVal=0;
     size_t size=0;
     long count=0;
     grib_iterator* iter=NULL;
@@ -197,14 +199,14 @@ static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
         return GRIB_SUCCESS;
     }
 
-    iter=grib_iterator_new(a->parent->h,0,&ret);
+    iter=grib_iterator_new(grib_handle_of_accessor(a),0,&ret);
     if (ret!=GRIB_SUCCESS) {
         if (iter) grib_iterator_delete(iter);
         grib_context_log(c,GRIB_LOG_ERROR,"unable to create iterator");
         return ret;
     }
 
-    while(grib_iterator_next(iter,&dummy,v++,&dummy)) {}
+    while(grib_iterator_next(iter,&dummyLat,v++,&dummyVal)) {}
     grib_iterator_delete(iter);
 
     *len=size;
@@ -215,8 +217,8 @@ static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
 static int value_count(grib_accessor* a,long* len)
 {
     grib_accessor_longitudes* self = (grib_accessor_longitudes*)a;
-    grib_handle* h=a->parent->h;
-    grib_context* c=a->parent->h->context;
+    grib_handle* h=grib_handle_of_accessor(a);
+    grib_context* c=a->context;
     double* val=NULL;
     int ret;
     size_t size;
@@ -246,12 +248,12 @@ static int get_distinct(grib_accessor* a,double** val,long* len) {
     double prev;
     double *v=NULL;
     double *v1=NULL;
-    double dummy;
+    double dummyLat=0, dummyVal=0;
     int ret=0;
     int i;
     size_t size=*len;
-    grib_context* c=a->parent->h->context;
-    grib_iterator* iter=grib_iterator_new(a->parent->h,0,&ret);
+    grib_context* c=a->context;
+    grib_iterator* iter=grib_iterator_new(grib_handle_of_accessor(a),0,&ret);
     if (ret!=GRIB_SUCCESS) {
         if (iter) grib_iterator_delete(iter);
         grib_context_log(c,GRIB_LOG_ERROR,"unable to create iterator");
@@ -265,7 +267,7 @@ static int get_distinct(grib_accessor* a,double** val,long* len) {
     }
     *val=v;
 
-    while(grib_iterator_next(iter,&dummy,v++,&dummy)) {}
+    while(grib_iterator_next(iter,&dummyLat,v++,&dummyVal)) {}
     grib_iterator_delete(iter);
     v=*val;
 
diff --git a/src/grib_accessor_class_lookup.c b/src/grib_accessor_class_lookup.c
index 160c466..33ee573 100644
--- a/src/grib_accessor_class_lookup.c
+++ b/src/grib_accessor_class_lookup.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -101,6 +101,7 @@ static grib_accessor_class _grib_accessor_class_lookup = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -133,6 +134,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -142,9 +144,9 @@ static void init(grib_accessor* a, const long len, grib_arguments *arg )
   grib_accessor_lookup* self = (grib_accessor_lookup*)a;
   a->length = 0;
   self->llength = len;
-  self->loffset = grib_arguments_get_long(a->parent->h,arg,0);
+  self->loffset = grib_arguments_get_long(grib_handle_of_accessor(a),arg,0);
   a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
-  self->real_name = grib_arguments_get_expression(a->parent->h,arg,1);
+  self->real_name = grib_arguments_get_expression(grib_handle_of_accessor(a),arg,1);
 }
 
 static void post_init(grib_accessor* a)
@@ -208,7 +210,7 @@ static int unpack_string(grib_accessor*a , char*  v, size_t *len){
 static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
   grib_accessor_lookup* al = (grib_accessor_lookup*)a;
-  grib_handle *h = a->parent->h;
+  grib_handle *h = grib_handle_of_accessor(a);
 
 
   long pos = (a->offset+al->loffset)*8;
@@ -216,7 +218,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 
   if(len[0] < 1)
   {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 );
+    grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 );
     len[0] = 0;
     return GRIB_ARRAY_TOO_SMALL;
   }
diff --git a/src/grib_accessor_class_mars_param.c b/src/grib_accessor_class_mars_param.c
index 7dcbd84..224a36f 100644
--- a/src/grib_accessor_class_mars_param.c
+++ b/src/grib_accessor_class_mars_param.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -92,6 +92,7 @@ static grib_accessor_class _grib_accessor_class_mars_param = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -128,6 +129,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -136,9 +138,9 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
 	int n=0;
 	grib_accessor_mars_param* self = (grib_accessor_mars_param*)a;
-	self->paramId= grib_arguments_get_name(a->parent->h,c,n++);
-	self->table= grib_arguments_get_name(a->parent->h,c,n++);
-	self->param= grib_arguments_get_name(a->parent->h,c,n++);
+	self->paramId= grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+	self->table= grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+	self->param= grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 }
 
 static int pack_string(grib_accessor* a, const char* val, size_t *len){
@@ -158,7 +160,7 @@ static int pack_string(grib_accessor* a, const char* val, size_t *len){
 
 	paramId=table*1000+param;
 
-	return grib_set_long_internal(a->parent->h,self->paramId,paramId);
+	return grib_set_long_internal(grib_handle_of_accessor(a),self->paramId,paramId);
 #endif		
 }
 
@@ -171,17 +173,17 @@ static int    unpack_string(grib_accessor* a, char* val, size_t *len)
 	int ret=0;
 
 #if 1
-	if(self->table!=NULL && (ret = grib_get_long_internal(a->parent->h,self->table,&table)) != GRIB_SUCCESS) return ret;
-	if(self->param!=NULL && (ret = grib_get_long_internal(a->parent->h,self->param,&param)) != GRIB_SUCCESS) return ret;
+	if(self->table!=NULL && (ret = grib_get_long_internal(grib_handle_of_accessor(a),self->table,&table)) != GRIB_SUCCESS) return ret;
+	if(self->param!=NULL && (ret = grib_get_long_internal(grib_handle_of_accessor(a),self->param,&param)) != GRIB_SUCCESS) return ret;
 #else
 	{
 	long paramId=0;
-	grib_get_long(a->parent->h,self->paramId,&paramId);
+	grib_get_long(grib_handle_of_accessor(a),self->paramId,&paramId);
 
 	if (paramId==0 || (paramId < 4000 && paramId > 1000 )) {
-		if(self->table!=NULL && (ret = grib_get_long_internal(a->parent->h,self->table,&table))
+		if(self->table!=NULL && (ret = grib_get_long_internal(grib_handle_of_accessor(a),self->table,&table))
 				  != GRIB_SUCCESS) return ret;
-		if(self->param!=NULL && (ret = grib_get_long_internal(a->parent->h,self->param,&param))
+		if(self->param!=NULL && (ret = grib_get_long_internal(grib_handle_of_accessor(a),self->param,&param))
 				 != GRIB_SUCCESS) return ret;
 	} else if (paramId<1000) {
 		table=128;
diff --git a/src/grib_accessor_class_mars_step.c b/src/grib_accessor_class_mars_step.c
index d59d2e1..977ac3b 100644
--- a/src/grib_accessor_class_mars_step.c
+++ b/src/grib_accessor_class_mars_step.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -96,6 +96,7 @@ static grib_accessor_class _grib_accessor_class_mars_step = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -128,6 +129,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -136,8 +138,8 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
     int n=0;
     grib_accessor_mars_step* self = (grib_accessor_mars_step*)a;
-    self->stepRange = grib_arguments_get_name(a->parent->h,c,n++);
-    self->stepType = grib_arguments_get_name(a->parent->h,c,n++);
+    self->stepRange = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->stepType = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 }
 
 static int pack_string(grib_accessor* a, const char* val, size_t *len)
@@ -147,14 +149,14 @@ static int pack_string(grib_accessor* a, const char* val, size_t *len)
     char buf[100]={0,};
     int ret;
     grib_accessor_mars_step* self = (grib_accessor_mars_step*)a;
-    grib_accessor* stepRangeAcc=grib_find_accessor(a->parent->h,self->stepRange);
+    grib_accessor* stepRangeAcc=grib_find_accessor(grib_handle_of_accessor(a),self->stepRange);
 
     if (!stepRangeAcc) {
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"%s not found",self->stepRange);
+        grib_context_log(a->context,GRIB_LOG_ERROR,"%s not found",self->stepRange);
         return GRIB_NOT_FOUND;
     }
 
-    if ((ret=grib_get_string(a->parent->h,self->stepType,stepType,&stepTypeLen))!=GRIB_SUCCESS)
+    if ((ret=grib_get_string(grib_handle_of_accessor(a),self->stepType,stepType,&stepTypeLen))!=GRIB_SUCCESS)
         return ret;
 
     if (!strcmp(stepType,"instant")) sprintf(buf,"%s",val) ;
@@ -171,10 +173,10 @@ static int unpack_string(grib_accessor* a, char* val, size_t *len)
     char* p=NULL;
     size_t buflen=100;
     long step;
-    grib_accessor* stepRangeAcc=grib_find_accessor(a->parent->h,self->stepRange);
+    grib_accessor* stepRangeAcc=grib_find_accessor(grib_handle_of_accessor(a),self->stepRange);
 
     if (!stepRangeAcc) {
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"%s not found",self->stepRange);
+        grib_context_log(a->context,GRIB_LOG_ERROR,"%s not found",self->stepRange);
         return GRIB_NOT_FOUND;
     }
 
@@ -182,7 +184,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t *len)
         return ret;
 
     if (*len < buflen) {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
+        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);
         *len = buflen;
@@ -212,7 +214,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)
 {
     grib_accessor_mars_step* self = (grib_accessor_mars_step*)a;
-    grib_accessor* stepRangeAcc=grib_find_accessor(a->parent->h,self->stepRange);
+    grib_accessor* stepRangeAcc=grib_find_accessor(grib_handle_of_accessor(a),self->stepRange);
 
     if (!stepRangeAcc) return GRIB_NOT_FOUND;
 
diff --git a/src/grib_accessor_class_md5.c b/src/grib_accessor_class_md5.c
index 599b9b1..526facf 100644
--- a/src/grib_accessor_class_md5.c
+++ b/src/grib_accessor_class_md5.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -93,6 +93,7 @@ static grib_accessor_class _grib_accessor_class_md5 = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -128,6 +129,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -138,12 +140,12 @@ static void init(grib_accessor* a, const long len , grib_arguments* arg )
   char* b=0;
     int n=0;
   grib_string_list* current=0;
-  grib_context* context=a->parent->h->context;
+  grib_context* context=a->context;
 
-    self->offset = grib_arguments_get_name(a->parent->h,arg,n++);
-  self->length = grib_arguments_get_expression(a->parent->h,arg,n++);
+    self->offset = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+  self->length = grib_arguments_get_expression(grib_handle_of_accessor(a),arg,n++);
   self->blacklist=0;
-  while ( (b=(char*)grib_arguments_get_name(a->parent->h,arg,n++)) !=NULL) {
+  while ( (b=(char*)grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++)) !=NULL) {
     if (! self->blacklist) {
       self->blacklist=(grib_string_list*)grib_context_malloc_clear(context,sizeof(grib_string_list));
       self->blacklist->value=grib_context_strdup(context,b);
@@ -199,30 +201,30 @@ static int unpack_string(grib_accessor*a , char*  v, size_t *len){
     struct grib_md5_state md5c;
 
     if (*len <32 ) {
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"md5: array too small");
+        grib_context_log(a->context,GRIB_LOG_ERROR,"md5: array too small");
         return GRIB_ARRAY_TOO_SMALL;
     }
 
-    if((ret = grib_get_long_internal(a->parent->h,self->offset,&offset))
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->offset,&offset))
             != GRIB_SUCCESS)
         return ret;
-  if((ret = grib_expression_evaluate_long(a->parent->h,self->length,&length))
+  if((ret = grib_expression_evaluate_long(grib_handle_of_accessor(a),self->length,&length))
             != GRIB_SUCCESS)
         return ret;
 
-    mess=(unsigned char*)grib_context_malloc(a->parent->h->context,length);
-    memcpy(mess,a->parent->h->buffer->data+offset,length);
+    mess=(unsigned char*)grib_context_malloc(a->context,length);
+    memcpy(mess,grib_handle_of_accessor(a)->buffer->data+offset,length);
     mess_len=length;
 
-    blacklist=a->parent->h->context->blacklist;
+    blacklist=a->context->blacklist;
   /* passed blacklist overrides context blacklist. 
      Consider to modify following line to extend context blacklist.
   */
   if (self->blacklist) blacklist=self->blacklist;
     while (blacklist && blacklist->value) {
-        b=grib_find_accessor(a->parent->h,blacklist->value);
+        b=grib_find_accessor(grib_handle_of_accessor(a),blacklist->value);
         if (!b) {
-            grib_context_free(a->parent->h->context,mess);
+            grib_context_free(a->context,mess);
             return GRIB_NOT_FOUND;
         }
 
@@ -235,7 +237,7 @@ static int unpack_string(grib_accessor*a , char*  v, size_t *len){
     grib_md5_init(&md5c);
     grib_md5_add(&md5c,mess,mess_len);
     grib_md5_end(&md5c,v);
-    grib_context_free(a->parent->h->context,mess);
+    grib_context_free(a->context,mess);
 
     return ret;
 }
diff --git a/src/grib_accessor_class_message.c b/src/grib_accessor_class_message.c
index eb19279..947a233 100644
--- a/src/grib_accessor_class_message.c
+++ b/src/grib_accessor_class_message.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -94,6 +94,7 @@ static grib_accessor_class _grib_accessor_class_message = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -127,6 +128,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -136,15 +138,15 @@ static void init(grib_accessor* a, const long len, grib_arguments*arg )
 {
   a->flags |= GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC;
   a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
-  a->length=a->parent->h->buffer->ulength-len-a->offset;
+  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)
 {
   /* printf("update_size: grib_accessor_class_message.c %ld %ld %s %s\n", (long)new_size,(long)a->length,a->cclass->name,a->name); */
@@ -153,11 +155,11 @@ static void update_size(grib_accessor* a,size_t new_size)
 
 static void resize(grib_accessor* a,size_t new_size)
 {
-  void* zero = grib_context_malloc_clear(a->parent->h->context,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->parent->h->context,zero);
-  grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG,"resize: grib_accessor_class_message.c %ld %ld %s %s\n",(long)new_size,(long)a->length,a->cclass->name,a->name);
+  grib_context_free(a->context,zero);
+  grib_context_log(a->context,GRIB_LOG_DEBUG,"resize: grib_accessor_class_message.c %ld %ld %s %s\n",(long)new_size,(long)a->length,a->cclass->name,a->name);
   Assert(new_size == a->length);
 
 }
@@ -171,20 +173,19 @@ static int unpack_string(grib_accessor* a, char* val, size_t *len)
 
   if(len[0] < (a->length+1))
   {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 );
+    grib_context_log(a->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 );
     len[0] = 0;
     return GRIB_ARRAY_TOO_SMALL;
   }
 
   for ( i = 0; i < a->length; i++)
-    val[i] = a->parent->h->buffer->data[a->offset+i];
+    val[i] = grib_handle_of_accessor(a)->buffer->data[a->offset+i];
   val[i] = 0;
   len[0] = i;
   return GRIB_SUCCESS;
 }
 
-static size_t string_length(grib_accessor* a){
+static size_t string_length(grib_accessor* a)
+{
   return a->length;
 }
-
-
diff --git a/src/grib_accessor_class_message_copy.c b/src/grib_accessor_class_message_copy.c
index 66cef43..a2bf6eb 100644
--- a/src/grib_accessor_class_message_copy.c
+++ b/src/grib_accessor_class_message_copy.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -89,6 +89,7 @@ static grib_accessor_class _grib_accessor_class_message_copy = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -123,6 +124,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -144,15 +146,15 @@ static int get_native_type(grib_accessor* a)
 }
 
 static int unpack_string (grib_accessor* a, char* val, size_t *len){
-  size_t slen=a->parent->h->buffer->ulength ;
+  size_t slen=grib_handle_of_accessor(a)->buffer->ulength ;
   size_t i;
   unsigned char* v=0;
 
   if (*len < slen) { return GRIB_ARRAY_TOO_SMALL; }
-  v=a->parent->h->buffer->data;
+  v=grib_handle_of_accessor(a)->buffer->data;
   /* replace unprintable characters with space */
   for (i=0;i<slen;i++) if (v[i]>126) v[i]=32;
-  memcpy(val,a->parent->h->buffer->data,slen);
+  memcpy(val,grib_handle_of_accessor(a)->buffer->data,slen);
 
   *len=slen;
 
@@ -161,7 +163,7 @@ static int unpack_string (grib_accessor* a, char* val, size_t *len){
 
 static size_t string_length(grib_accessor* a)
 {
-  return a->parent->h->buffer->ulength;
+  return grib_handle_of_accessor(a)->buffer->ulength;
 }
 
 static long byte_count(grib_accessor* a) {
diff --git a/src/grib_accessor_class_missing.c b/src/grib_accessor_class_missing.c
index 16ba90e..9d13099 100644
--- a/src/grib_accessor_class_missing.c
+++ b/src/grib_accessor_class_missing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -110,6 +110,7 @@ static grib_accessor_class _grib_accessor_class_missing = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
diff --git a/src/grib_accessor_class_nearest.c b/src/grib_accessor_class_nearest.c
index 0b417cf..e00504d 100644
--- a/src/grib_accessor_class_nearest.c
+++ b/src/grib_accessor_class_nearest.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -84,6 +84,7 @@ static grib_accessor_class _grib_accessor_class_nearest = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -122,6 +123,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
diff --git a/src/grib_accessor_class_non_alpha.c b/src/grib_accessor_class_non_alpha.c
index ea12ca7..18df588 100644
--- a/src/grib_accessor_class_non_alpha.c
+++ b/src/grib_accessor_class_non_alpha.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -103,6 +103,7 @@ static grib_accessor_class _grib_accessor_class_non_alpha = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -130,13 +131,14 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
 
 static void init(grib_accessor* a, const long len , grib_arguments* arg )
 {
-  grib_buffer* buffer=a->parent->h->buffer;
+  grib_buffer* buffer=grib_handle_of_accessor(a)->buffer;
   size_t i=0;
   unsigned char* v;
 
@@ -177,13 +179,13 @@ static int unpack_string(grib_accessor* a, char* val, size_t *len)
 
   if(len[0] < (a->length+1))
   {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 );
+    grib_context_log(a->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 );
     len[0] = 0;
     return GRIB_ARRAY_TOO_SMALL;
   }
 
   for ( i = 0; i < a->length; i++)
-    val[i] = a->parent->h->buffer->data[a->offset+i];
+    val[i] = grib_handle_of_accessor(a)->buffer->data[a->offset+i];
   val[i] = 0;
   len[0] = i;
   return GRIB_SUCCESS;
@@ -196,12 +198,12 @@ static int pack_string(grib_accessor* a, const char* val, size_t *len)
 }
 
 static int pack_long(grib_accessor* a, const long*  v, size_t *len){
-  grib_context_log(a->parent->h->context,GRIB_LOG_ERROR, " Should not pack %s as long", a->name);
+  grib_context_log(a->context,GRIB_LOG_ERROR, " Should not pack %s as long", a->name);
   return GRIB_NOT_IMPLEMENTED;
 }
 
 static int pack_double(grib_accessor* a, const double*v, size_t *len){
-  grib_context_log(a->parent->h->context,GRIB_LOG_ERROR, " Should not pack %s  as double", a->name);
+  grib_context_log(a->context,GRIB_LOG_ERROR, " Should not pack %s  as double", a->name);
   return GRIB_NOT_IMPLEMENTED;
 }
 
@@ -227,7 +229,7 @@ static int  unpack_long   (grib_accessor* a, long*  v, size_t *len){
 
   *v = strtol(val,&last,10);
 
-  grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG, " Casting string %s to long", a->name);
+  grib_context_log(a->context,GRIB_LOG_DEBUG, " Casting string %s to long", a->name);
   return GRIB_SUCCESS;
 
 }
@@ -242,7 +244,7 @@ static int unpack_double (grib_accessor* a, double*v, size_t *len){
 
   if(*last == 0)
   {
-    grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG, " Casting string %s to long", a->name);
+    grib_context_log(a->context,GRIB_LOG_DEBUG, " Casting string %s to long", a->name);
     return GRIB_SUCCESS;
   }
 
@@ -250,7 +252,8 @@ static int unpack_double (grib_accessor* a, double*v, size_t *len){
 }
 
 
-static int compare(grib_accessor* a,grib_accessor* b) {
+static int compare(grib_accessor* a,grib_accessor* b)
+{
   int retval=0;
   char *aval=0;
   char *bval=0;
@@ -270,8 +273,8 @@ static int compare(grib_accessor* a,grib_accessor* b) {
 
   if (alen != blen) return GRIB_COUNT_MISMATCH;
 
-  aval=(char*)grib_context_malloc(a->parent->h->context,alen*sizeof(char));
-  bval=(char*)grib_context_malloc(b->parent->h->context,blen*sizeof(char));
+  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);
@@ -279,8 +282,8 @@ static int compare(grib_accessor* a,grib_accessor* b) {
   retval = GRIB_SUCCESS;
   if (strcmp(aval,bval)) retval = GRIB_STRING_VALUE_MISMATCH;
 
-  grib_context_free(a->parent->h->context,aval);
-  grib_context_free(b->parent->h->context,bval);
+  grib_context_free(a->context,aval);
+  grib_context_free(b->context,bval);
 
   return retval;
 }
diff --git a/src/grib_accessor_class_number_of_coded_values.c b/src/grib_accessor_class_number_of_coded_values.c
index 35db01c..c7d7cb6 100644
--- a/src/grib_accessor_class_number_of_coded_values.c
+++ b/src/grib_accessor_class_number_of_coded_values.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -97,6 +97,7 @@ static grib_accessor_class _grib_accessor_class_number_of_coded_values = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -135,6 +136,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -143,11 +145,11 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
   int n=0;
   grib_accessor_number_of_coded_values* self = (grib_accessor_number_of_coded_values*)a;
-  self->bitsPerValue = grib_arguments_get_name(a->parent->h,c,n++);
-  self->offsetBeforeData = grib_arguments_get_name(a->parent->h,c,n++);
-  self->offsetAfterData = grib_arguments_get_name(a->parent->h,c,n++);
-  self->unusedBits = grib_arguments_get_name(a->parent->h,c,n++);
-  self->numberOfValues = grib_arguments_get_name(a->parent->h,c,n++);
+  self->bitsPerValue = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->offsetBeforeData = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->offsetAfterData = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->unusedBits = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->numberOfValues = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
   a->flags  |= GRIB_ACCESSOR_FLAG_READ_ONLY;
   a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
   a->length=0;
@@ -161,25 +163,25 @@ static int  unpack_long(grib_accessor* a, long* val, size_t *len)
 
   grib_accessor_number_of_coded_values* self = (grib_accessor_number_of_coded_values*)a;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->bitsPerValue,&bpv)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->bitsPerValue,&bpv)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->offsetBeforeData,&offsetBeforeData)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetBeforeData,&offsetBeforeData)) != GRIB_SUCCESS)
     return ret;
 
 
-  if((ret = grib_get_long_internal(a->parent->h, self->offsetAfterData,&offsetAfterData)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetAfterData,&offsetAfterData)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->unusedBits,&unusedBits)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->unusedBits,&unusedBits)) != GRIB_SUCCESS)
     return ret;
 
   if ( bpv != 0 ) {
-    grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG,"grib_accessor_number_of_coded_values: offsetAfterData=%ld offsetBeforeData=%ld unusedBits=%ld bpv=%ld\n",
+    grib_context_log(a->context,GRIB_LOG_DEBUG,"grib_accessor_number_of_coded_values: offsetAfterData=%ld offsetBeforeData=%ld unusedBits=%ld bpv=%ld\n",
     offsetAfterData,offsetBeforeData,unusedBits,bpv);
      *val=((offsetAfterData-offsetBeforeData)*8-unusedBits)/bpv;
   } else {
-    if((ret = grib_get_long_internal(a->parent->h, self->numberOfValues,&numberOfValues)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->numberOfValues,&numberOfValues)) != GRIB_SUCCESS)
       return ret;
 
     *val=numberOfValues;
diff --git a/src/grib_accessor_class_number_of_points.c b/src/grib_accessor_class_number_of_points.c
index cbc3743..dd74fff 100644
--- a/src/grib_accessor_class_number_of_points.c
+++ b/src/grib_accessor_class_number_of_points.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -95,6 +95,7 @@ static grib_accessor_class _grib_accessor_class_number_of_points = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -133,6 +134,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -141,10 +143,10 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
   int n=0;
   grib_accessor_number_of_points* self = (grib_accessor_number_of_points*)a;
-  self->ni = grib_arguments_get_name(a->parent->h,c,n++);
-  self->nj = grib_arguments_get_name(a->parent->h,c,n++);
-  self->plpresent = grib_arguments_get_name(a->parent->h,c,n++);
-  self->pl = grib_arguments_get_name(a->parent->h,c,n++);
+  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++);
   a->flags  |= GRIB_ACCESSOR_FLAG_READ_ONLY;
   a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
   a->length=0;
@@ -158,16 +160,16 @@ static int  unpack_long(grib_accessor* a, long* val, size_t *len)
   long* pl;
   int i;
   grib_accessor_number_of_points* self = (grib_accessor_number_of_points*)a;
-  grib_context* c=a->parent->h->context;
+  grib_context* c=a->context;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->ni,&ni)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->ni,&ni)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->nj,&nj)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->nj,&nj)) != GRIB_SUCCESS)
     return ret;
 
   if(self->plpresent &&
-     ((ret = grib_get_long_internal(a->parent->h, self->plpresent,&plpresent)) != GRIB_SUCCESS) )
+     ((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->plpresent,&plpresent)) != GRIB_SUCCESS) )
     return ret;
 
   if (nj == 0) return GRIB_GEOCALCULUS_PROBLEM;
@@ -176,7 +178,7 @@ static int  unpack_long(grib_accessor* a, long* val, size_t *len)
     /*reduced*/
     plsize=nj;
     pl=(long*)grib_context_malloc(c,sizeof(long)*plsize);
-    grib_get_long_array_internal(a->parent->h,self->pl,pl, &plsize);
+    grib_get_long_array_internal(grib_handle_of_accessor(a),self->pl,pl, &plsize);
     *val=0;
     for (i=0;i<plsize;i++) *val+=pl[i];
 	grib_context_free(c,pl);
diff --git a/src/grib_accessor_class_number_of_points_gaussian.c b/src/grib_accessor_class_number_of_points_gaussian.c
index 76e1601..a2719af 100644
--- a/src/grib_accessor_class_number_of_points_gaussian.c
+++ b/src/grib_accessor_class_number_of_points_gaussian.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -107,6 +107,7 @@ static grib_accessor_class _grib_accessor_class_number_of_points_gaussian = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -145,6 +146,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -153,124 +155,138 @@ static void init_class(grib_accessor_class* c)
 
 static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
-  int n=0;
-  grib_accessor_number_of_points_gaussian* self = (grib_accessor_number_of_points_gaussian*)a;
-  self->ni = grib_arguments_get_name(a->parent->h,c,n++);
-  self->nj = grib_arguments_get_name(a->parent->h,c,n++);
-  self->plpresent = grib_arguments_get_name(a->parent->h,c,n++);
-  self->pl = grib_arguments_get_name(a->parent->h,c,n++);
-  self->order = grib_arguments_get_name(a->parent->h,c,n++);
-  self->lat_first = grib_arguments_get_name(a->parent->h,c,n++);
-  self->lon_first = grib_arguments_get_name(a->parent->h,c,n++);
-  self->lat_last = grib_arguments_get_name(a->parent->h,c,n++);
-  self->lon_last = grib_arguments_get_name(a->parent->h,c,n++);
-  a->flags  |= GRIB_ACCESSOR_FLAG_READ_ONLY;
-  a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
-  a->length=0;
+    int n=0;
+    grib_accessor_number_of_points_gaussian* self = (grib_accessor_number_of_points_gaussian*)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->order = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->lat_first = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->lon_first = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->lat_last = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->lon_last = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    a->flags  |= GRIB_ACCESSOR_FLAG_READ_ONLY;
+    a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
+    a->length=0;
 }
 
-static int  unpack_long(grib_accessor* a, long* val, size_t *len){
-  int ret=GRIB_SUCCESS;
-  long ni=0,nj=0,plpresent=0,order=0;
-  size_t plsize=0;
-  double* lats={0,};
-  double lat_first,lat_last,lon_first,lon_last;
-  float d;
-  long* pl=NULL;
-  long* plsave=NULL;
-  int j=0,i=0;
-  long row_count;
-  long ilon_first=0,ilon_last=0;
-  double lon_first_row=0,lon_last_row=0;
-
-
-  grib_accessor_number_of_points_gaussian* self = (grib_accessor_number_of_points_gaussian*)a;
-  grib_context* c=a->parent->h->context;
-
-  if((ret = grib_get_long_internal(a->parent->h, self->ni,&ni)) != GRIB_SUCCESS)
-    return ret;
-
-  if((ret = grib_get_long_internal(a->parent->h, self->nj,&nj)) != GRIB_SUCCESS)
-    return ret;
-
-  if((ret = grib_get_long_internal(a->parent->h, self->plpresent,&plpresent)) != GRIB_SUCCESS)
-    return ret;
+static int unpack_long(grib_accessor* a, long* val, size_t *len)
+{
+    int ret=GRIB_SUCCESS;
+    int is_global = 0;
+    long ni=0,nj=0,plpresent=0,order=0;
+    size_t plsize=0;
+    double* lats={0,};
+    double lat_first,lat_last,lon_first,lon_last;
+    long* pl=NULL;
+    long* plsave=NULL;
+    long row_count;
+    long ilon_first=0,ilon_last=0;
+    double angular_precision = 1.0/1000000.0;
+    long editionNumber = 0;
+
+    grib_accessor_number_of_points_gaussian* self = (grib_accessor_number_of_points_gaussian*)a;
+    grib_context* c=a->context;
+
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->ni,&ni)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->nj,&nj)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->plpresent,&plpresent)) != GRIB_SUCCESS)
+        return ret;
+
+    if (nj == 0) return GRIB_GEOCALCULUS_PROBLEM;
+
+    if (grib_get_long(grib_handle_of_accessor(a), "editionNumber", &editionNumber)==GRIB_SUCCESS) {
+        if (editionNumber == 1) angular_precision = 1.0/1000;
+    }
 
-  if (nj == 0) return GRIB_GEOCALCULUS_PROBLEM;
-
-  if (plpresent) {
-    /*reduced*/
-    if((ret = grib_get_long_internal(a->parent->h, self->order,&order)) != GRIB_SUCCESS)
-      return ret;
-    if((ret = grib_get_double_internal(a->parent->h, self->lat_first,&lat_first)) != GRIB_SUCCESS)
-      return ret;
-    if((ret = grib_get_double_internal(a->parent->h, self->lon_first,&lon_first)) != GRIB_SUCCESS)
-      return ret;
-    if((ret = grib_get_double_internal(a->parent->h, self->lat_last,&lat_last)) != GRIB_SUCCESS)
-      return ret;
-    if((ret = grib_get_double_internal(a->parent->h, self->lon_last,&lon_last)) != GRIB_SUCCESS)
-      return ret;
-
-    lats=(double*)grib_context_malloc(a->parent->h->context,sizeof(double)*order*2);
-    if((ret = grib_get_gaussian_latitudes(order, lats)) != GRIB_SUCCESS)
-      return ret;
-
-    if((ret = grib_get_size(a->parent->h,self->pl,&plsize)) != GRIB_SUCCESS)
-      return ret;
-
-    pl=(long*)grib_context_malloc_clear(c,sizeof(long)*plsize);
-    plsave=pl;
-    grib_get_long_array_internal(a->parent->h,self->pl,pl, &plsize);
-
-    if (lon_last<0) lon_last+=360;
-    if (lon_first<0) lon_first+=360;
-
-    d=fabs(lats[0]-lats[1]);
-    if ( (fabs(lat_first-lats[0]) >= d ) ||
-         (fabs(lat_last+lats[0]) >= d )  ||
-         lon_first != 0                 ||
-         fabs(lon_last  - (360.0-90.0/order)) > 90.0/order
-         ) {
-      /*sub area*/
+    if (plpresent) {
+        long max_pl=0;
+        float d = 0;
+        int j=0;
+        double lon_first_row=0,lon_last_row=0;
+
+        /*reduced*/
+        if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->order,&order)) != GRIB_SUCCESS)
+            return ret;
+        if((ret = grib_get_double_internal(grib_handle_of_accessor(a), self->lat_first,&lat_first)) != GRIB_SUCCESS)
+            return ret;
+        if((ret = grib_get_double_internal(grib_handle_of_accessor(a), self->lon_first,&lon_first)) != GRIB_SUCCESS)
+            return ret;
+        if((ret = grib_get_double_internal(grib_handle_of_accessor(a), self->lat_last,&lat_last)) != GRIB_SUCCESS)
+            return ret;
+        if((ret = grib_get_double_internal(grib_handle_of_accessor(a), self->lon_last,&lon_last)) != GRIB_SUCCESS)
+            return ret;
+
+        lats=(double*)grib_context_malloc(a->context,sizeof(double)*order*2);
+        if((ret = grib_get_gaussian_latitudes(order, lats)) != GRIB_SUCCESS)
+            return ret;
+
+        if((ret = grib_get_size(grib_handle_of_accessor(a),self->pl,&plsize)) != GRIB_SUCCESS)
+            return ret;
+
+        pl=(long*)grib_context_malloc_clear(c,sizeof(long)*plsize);
+        plsave=pl;
+        grib_get_long_array_internal(grib_handle_of_accessor(a),self->pl,pl, &plsize);
+
+        if (lon_last<0) lon_last+=360;
+        if (lon_first<0) lon_first+=360;
+
+        /* Find the maximum element of "pl" array, do not assume it's 4*N! */
+        /* This could be an Octahedral Gaussian Grid */
+        max_pl = pl[0];
+        for (j=1; j<plsize; j++) {
+            if (pl[j] > max_pl) max_pl = pl[j];
+        }
+
+        is_global=is_gaussian_global(lat_first,lat_last,lon_first,lon_last,max_pl,lats,angular_precision);
+        d=fabs(lats[0]-lats[1]);
+        if ( !is_global ) {
+            /*sub area*/
+            (void)d;
 #if EFDEBUG
-      printf("-------- subarea fabs(lat_first-lats[0])=%g d=%g\n",fabs(lat_first-lats[0]),d);
-      printf("-------- subarea fabs(lat_last+lats[0])=%g d=%g\n",fabs(lat_last+lats[0]),d);
-      printf("-------- subarea lon_last=%g order=%ld 360.0-90.0/order=%g\n",
-      lon_last,order,360.0-90.0/order);
-      printf("-------- subarea lon_first=%g fabs(lon_last  -( 360.0-90.0/order))=%g 90.0/order=%g\n",
-      lon_first,fabs(lon_last  - (360.0-90.0/order)),90.0/order);
+            printf("-------- subarea fabs(lat_first-lats[0])=%g d=%g\n",fabs(lat_first-lats[0]),d);
+            printf("-------- subarea fabs(lat_last+lats[0])=%g d=%g\n",fabs(lat_last+lats[0]),d);
+            printf("-------- subarea lon_last=%g order=%ld 360.0-90.0/order=%g\n",
+                    lon_last,order,360.0-90.0/order);
+            printf("-------- subarea lon_first=%g fabs(lon_last  -( 360.0-90.0/order))=%g 90.0/order=%g\n",
+                    lon_first,fabs(lon_last  - (360.0-90.0/order)),90.0/order);
 #endif
-      *val=0;
-      for (j=0;j<nj;j++) {
-        row_count=0;
+            *val=0;
+            for (j=0;j<nj;j++) {
+                row_count=0;
 #if EFDEBUG
-        printf("--  %d ",j);
+                printf("--  %d ",j);
 #endif
-		grib_get_reduced_row(pl[j],lon_first,lon_last,&row_count,&ilon_first,&ilon_last);
-        lon_first_row=((ilon_first)*360.0)/pl[j];
-        lon_last_row=((ilon_last)*360.0)/pl[j];
-        *val+=row_count;
+                grib_get_reduced_row(pl[j],lon_first,lon_last,&row_count,&ilon_first,&ilon_last);
+                lon_first_row=((ilon_first)*360.0)/pl[j];
+                lon_last_row=((ilon_last)*360.0)/pl[j];
+                *val+=row_count;
+                (void)lon_last_row;
+                (void)lon_first_row;
 #if EFDEBUG
-        printf("        ilon_first=%ld lon_first=%.10e ilon_last=%ld lon_last=%.10e count=%ld row_count=%ld\n",
-            ilon_first,lon_first_row,ilon_last,lon_last_row,*val,row_count);
+                printf("        ilon_first=%ld lon_first=%.10e ilon_last=%ld lon_last=%.10e count=%ld row_count=%ld\n",
+                        ilon_first,lon_first_row,ilon_last,lon_last_row,*val,row_count);
 #endif
-      }
-
+            }
+        } else {
+            int i = 0;
+            *val=0;
+            for (i=0;i<plsize;i++) *val+=pl[i];
+        }
     } else {
-      *val=0;
-      for (i=0;i<plsize;i++) *val+=pl[i];
+        /*regular*/
+        *val=ni*nj;
     }
-  } else {
-    /*regular*/
-    *val=ni*nj;
-  }
 #if EFDEBUG
-  printf("DEBUG:     number_of_points_gaussian=%ld plpresent=%ld plsize=%d\n",*val,plpresent,plsize);
-  for (i=0;i<plsize;i++) printf(" DEBUG: pl[%d]=%ld\n",i,pl[i]);
+    printf("DEBUG:     number_of_points_gaussian=%ld plpresent=%ld plsize=%d\n",*val,plpresent,plsize);
+    for (i=0;i<plsize;i++) printf(" DEBUG: pl[%d]=%ld\n",i,pl[i]);
 #endif
-  if (lats) grib_context_free(c,lats);
-  if (plsave) grib_context_free(c,plsave);
-  return ret;
+    if (lats) grib_context_free(c,lats);
+    if (plsave) grib_context_free(c,plsave);
+    return ret;
 }
-
-
diff --git a/src/grib_accessor_class_number_of_values.c b/src/grib_accessor_class_number_of_values.c
index 2319c68..a0737ff 100644
--- a/src/grib_accessor_class_number_of_values.c
+++ b/src/grib_accessor_class_number_of_values.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -99,6 +99,7 @@ static grib_accessor_class _grib_accessor_class_number_of_values = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -137,6 +138,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -145,12 +147,12 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
   int n=0;
   grib_accessor_number_of_values* self = (grib_accessor_number_of_values*)a;
-  self->values = grib_arguments_get_name(a->parent->h,c,n++);
-  self->bitsPerValue = grib_arguments_get_name(a->parent->h,c,n++);
-  self->numberOfPoints = grib_arguments_get_name(a->parent->h,c,n++);
-  self->bitmapPresent = grib_arguments_get_name(a->parent->h,c,n++);
-  self->bitmap = grib_arguments_get_name(a->parent->h,c,n++);
-  self->numberOfCodedValues = grib_arguments_get_name(a->parent->h,c,n++);
+  self->values = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->bitsPerValue = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->numberOfPoints = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->bitmapPresent = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->bitmap = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->numberOfCodedValues = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
   a->flags  |= GRIB_ACCESSOR_FLAG_READ_ONLY;
   
   a->length=0;
@@ -166,40 +168,40 @@ static int  unpack_long(grib_accessor* a, long* val, size_t *len)
 #if GRIB_WARNING
   long numberOfCodedValues=0;
   long bpv=0;
-  if((ret = grib_get_long_internal(a->parent->h, self->bitsPerValue,&bpv)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->bitsPerValue,&bpv)) != GRIB_SUCCESS)
     return ret;
 #endif
 
-  if((ret = grib_get_long_internal(a->parent->h, self->numberOfPoints,&npoints)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->numberOfPoints,&npoints)) != GRIB_SUCCESS)
       return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->bitmapPresent,&bitmap_present)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->bitmapPresent,&bitmap_present)) != GRIB_SUCCESS)
       return ret;
 
   if (bitmap_present) {
       double* bitmap;
       size=npoints;
-      bitmap=(double*)grib_context_malloc(a->parent->h->context,sizeof(double)*size);
-      if((ret = grib_get_double_array_internal(a->parent->h,self->bitmap,bitmap,&size))
+      bitmap=(double*)grib_context_malloc(a->context,sizeof(double)*size);
+      if((ret = grib_get_double_array_internal(grib_handle_of_accessor(a),self->bitmap,bitmap,&size))
                   != GRIB_SUCCESS) {
-			  grib_context_free(a->parent->h->context,bitmap);
+			  grib_context_free(a->context,bitmap);
 			  return ret;
 	  }
       *val=0;
       for (i=0;i<size;i++)
         if (bitmap[i]!=0) (*val)++;
 
-      grib_context_free(a->parent->h->context,bitmap);
+      grib_context_free(a->context,bitmap);
   } else {
       *val=npoints;
   }
 
 #if GRIB_WARNING
   if ( bpv != 0 ) {
-    if((ret = grib_get_long_internal(a->parent->h, self->numberOfCodedValues,&numberOfCodedValues)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->numberOfCodedValues,&numberOfCodedValues)) != GRIB_SUCCESS)
       return ret;
      if (*val != numberOfCodedValues) {
-       grib_context_log(a->parent->h->context,GRIB_LOG_WARNING,
+       grib_context_log(a->context,GRIB_LOG_WARNING,
        "number of values from data section (%ld) doesn't match geography (%ld)",numberOfCodedValues,*val);
        /* *val=numberOfCodedValues; */
   	}
diff --git a/src/grib_accessor_class_number_of_values_data_raw_packing.c b/src/grib_accessor_class_number_of_values_data_raw_packing.c
index b55889a..937fae9 100644
--- a/src/grib_accessor_class_number_of_values_data_raw_packing.c
+++ b/src/grib_accessor_class_number_of_values_data_raw_packing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -99,6 +99,7 @@ static grib_accessor_class _grib_accessor_class_number_of_values_data_raw_packin
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -137,6 +138,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -146,8 +148,8 @@ static void init(grib_accessor* a,const long v, grib_arguments* args)
   int n=0;
   grib_accessor_number_of_values_data_raw_packing *self =(grib_accessor_number_of_values_data_raw_packing*)a;
   
-  self->values       = grib_arguments_get_name(a->parent->h,args,n++);
-  self->precision       = grib_arguments_get_name(a->parent->h,args,n++);
+  self->values       = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->precision       = grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
   a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
   a->length=0;
 }
@@ -161,11 +163,11 @@ static int  unpack_long(grib_accessor* a, long* val, size_t *len)
   int bytes=0;
   long byte_count =0;
 
-  adata=grib_find_accessor(a->parent->h,self->values);
+  adata=grib_find_accessor(grib_handle_of_accessor(a),self->values);
   Assert(adata!=NULL);
   byte_count=grib_byte_count(adata);
 
-  if((err = grib_get_long_internal(a->parent->h,self->precision,&precision))
+  if((err = grib_get_long_internal(grib_handle_of_accessor(a),self->precision,&precision))
       != GRIB_SUCCESS)
     return err;
 
diff --git a/src/grib_accessor_class_octahedral_gaussian.c b/src/grib_accessor_class_octahedral_gaussian.c
new file mode 100644
index 0000000..356f6ed
--- /dev/null
+++ b/src/grib_accessor_class_octahedral_gaussian.c
@@ -0,0 +1,227 @@
+/*
+ * Copyright 2005-2016 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 <math.h>
+/*
+   This is used by make_class.pl
+
+   START_CLASS_DEF
+   CLASS      = accessor
+   SUPER      = grib_accessor_class_long
+   IMPLEMENTS = unpack_long
+   IMPLEMENTS = init
+   IMPLEMENTS = pack_long
+   MEMBERS=const char*                  N
+   MEMBERS=const char*                  Ni
+   MEMBERS=const char*                  plpresent
+   MEMBERS=const char*                  pl
+   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 pack_long(grib_accessor*, const long* val,size_t *len);
+static int unpack_long(grib_accessor*, long* val,size_t *len);
+static void init(grib_accessor*,const long, grib_arguments* );
+static void init_class(grib_accessor_class*);
+
+typedef struct grib_accessor_octahedral_gaussian {
+    grib_accessor          att;
+/* Members defined in gen */
+/* Members defined in long */
+/* Members defined in octahedral_gaussian */
+	const char*                  N;
+	const char*                  Ni;
+	const char*                  plpresent;
+	const char*                  pl;
+} grib_accessor_octahedral_gaussian;
+
+extern grib_accessor_class* grib_accessor_class_long;
+
+static grib_accessor_class _grib_accessor_class_octahedral_gaussian = {
+    &grib_accessor_class_long,                      /* super                     */
+    "octahedral_gaussian",                      /* name                      */
+    sizeof(grib_accessor_octahedral_gaussian),  /* size                      */
+    0,                           /* inited */
+    &init_class,                 /* init_class */
+    &init,                       /* init                      */
+    0,                  /* post_init                      */
+    0,                    /* free mem                       */
+    0,                       /* describes himself         */
+    0,                /* get length of section     */
+    0,              /* get length of string      */
+    0,                /* get number of values      */
+    0,                 /* get number of bytes      */
+    0,                /* get offset to bytes           */
+    0,            /* get native type               */
+    0,                /* get sub_section                */
+    0,               /* grib_pack procedures long      */
+    0,                 /* grib_pack procedures long      */
+    &pack_long,                  /* grib_pack procedures long      */
+    &unpack_long,                /* grib_unpack procedures long    */
+    0,                /* grib_pack procedures double    */
+    0,              /* grib_unpack procedures double  */
+    0,                /* grib_pack procedures string    */
+    0,              /* grib_unpack procedures string  */
+    0,          /* grib_pack array procedures string    */
+    0,        /* grib_unpack array procedures string  */
+    0,                 /* grib_pack procedures bytes     */
+    0,               /* grib_unpack procedures 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          */
+    0,     /* unpack a subarray         */
+    0,              		/* clear          */
+    0,               		/* clone accessor          */
+};
+
+
+grib_accessor_class* grib_accessor_class_octahedral_gaussian = &_grib_accessor_class_octahedral_gaussian;
+
+
+static void init_class(grib_accessor_class* c)
+{
+	c->dump	=	(*(c->super))->dump;
+	c->next_offset	=	(*(c->super))->next_offset;
+	c->string_length	=	(*(c->super))->string_length;
+	c->value_count	=	(*(c->super))->value_count;
+	c->byte_count	=	(*(c->super))->byte_count;
+	c->byte_offset	=	(*(c->super))->byte_offset;
+	c->get_native_type	=	(*(c->super))->get_native_type;
+	c->sub_section	=	(*(c->super))->sub_section;
+	c->pack_missing	=	(*(c->super))->pack_missing;
+	c->is_missing	=	(*(c->super))->is_missing;
+	c->pack_double	=	(*(c->super))->pack_double;
+	c->unpack_double	=	(*(c->super))->unpack_double;
+	c->pack_string	=	(*(c->super))->pack_string;
+	c->unpack_string	=	(*(c->super))->unpack_string;
+	c->pack_string_array	=	(*(c->super))->pack_string_array;
+	c->unpack_string_array	=	(*(c->super))->unpack_string_array;
+	c->pack_bytes	=	(*(c->super))->pack_bytes;
+	c->unpack_bytes	=	(*(c->super))->unpack_bytes;
+	c->pack_expression	=	(*(c->super))->pack_expression;
+	c->notify_change	=	(*(c->super))->notify_change;
+	c->update_size	=	(*(c->super))->update_size;
+	c->preferred_size	=	(*(c->super))->preferred_size;
+	c->resize	=	(*(c->super))->resize;
+	c->nearest_smaller_value	=	(*(c->super))->nearest_smaller_value;
+	c->next	=	(*(c->super))->next;
+	c->compare	=	(*(c->super))->compare;
+	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
+	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
+	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
+}
+
+/* END_CLASS_IMP */
+
+static void init(grib_accessor* a,const long l, grib_arguments* c)
+{
+    grib_accessor_octahedral_gaussian* self = (grib_accessor_octahedral_gaussian*)a;
+    int n = 0;
+
+    self->N            = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->Ni           = 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++);
+}
+
+/* For an Octahedral grid, this is the number of points on the top-most latitude (near pole) */
+#define NUM_POINTS_ON_LAT_NEAR_POLE 20
+
+static int unpack_long(grib_accessor* a, long* val, size_t *len)
+{
+    grib_accessor_octahedral_gaussian* self = (grib_accessor_octahedral_gaussian*)a;
+    int ret = GRIB_SUCCESS;
+    long N,Ni;
+    long plpresent=0;
+    long* pl=NULL; /* pl array */
+    size_t plsize=0, i=0, mid=0;
+
+    grib_context* c=a->context;
+
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->N,&N)) != GRIB_SUCCESS)
+        return ret;
+
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->Ni,&Ni)) != GRIB_SUCCESS)
+        return ret;
+
+    /* If Ni is not missing, then this is a plain gaussian grid and not reduced. */
+    /* So it cannot be an octahedral grid */
+    if (Ni != GRIB_MISSING_LONG) {
+        *val=0;
+        return GRIB_SUCCESS;
+    }
+
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->plpresent,&plpresent)) != GRIB_SUCCESS)
+        return ret;
+    if (!plpresent) {
+        *val = 0; /* Not octahedral */
+        return GRIB_SUCCESS;
+    }
+
+    if((ret = grib_get_size(grib_handle_of_accessor(a),self->pl,&plsize)) != GRIB_SUCCESS)
+        return ret;
+    Assert(plsize);
+    if (plsize != 2*N) {
+        *val=0; /* Not octahedral */
+        return GRIB_SUCCESS;
+    }
+    pl=(long*)grib_context_malloc_clear(c,sizeof(long)*plsize);
+    if (!pl) {
+        return GRIB_OUT_OF_MEMORY;
+    }
+    if ((ret = grib_get_long_array_internal(grib_handle_of_accessor(a),self->pl,pl, &plsize)) != GRIB_SUCCESS)
+        return ret;
+    if (pl[0] != NUM_POINTS_ON_LAT_NEAR_POLE) {
+        *val=0; /* Not octahedral */
+        grib_context_free(c, pl);
+        return GRIB_SUCCESS;
+    }
+    mid = plsize/2;
+    /* Check pl values and symmetry */
+    for(i=0; i<mid; ++i) {
+        const long expected = 4*(i+1) + 16; /* Octahedral rule */
+        if ( pl[i] != expected || (pl[i] != pl[plsize-1-i]) ) {
+            *val = 0; /* Not octahedral */
+            grib_context_free(c, pl);
+            return GRIB_SUCCESS;
+        }
+    }
+    grib_context_free(c, pl);
+
+    *val=1;  /* It is Octahedral */
+    return ret;
+}
+
+static int pack_long(grib_accessor* a, const long* val, size_t *len)
+{
+    return GRIB_NOT_IMPLEMENTED;
+}
diff --git a/src/grib_accessor_class_octect_number.c b/src/grib_accessor_class_octect_number.c
index 7ff5b33..950b6ca 100644
--- a/src/grib_accessor_class_octect_number.c
+++ b/src/grib_accessor_class_octect_number.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -93,6 +93,7 @@ static grib_accessor_class _grib_accessor_class_octect_number = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -130,6 +131,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -139,8 +141,8 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
   grib_accessor_octect_number* self = (grib_accessor_octect_number*)a;
   int n = 0;
 
-  self->left    = grib_arguments_get_name(a->parent->h,c,n++);
-  self->right   = grib_arguments_get_long(a->parent->h,c,n++);
+  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++);
 
   a->length=0;
 }
@@ -155,7 +157,7 @@ static int  unpack_long(grib_accessor* a, long* val, size_t *len)
 
   /*printf("-------- setting %s to %ld\n", self->left,offset);*/
 
-  if((ret = grib_set_long_internal(a->parent->h, self->left,offset)) != GRIB_SUCCESS)
+  if((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->left,offset)) != GRIB_SUCCESS)
     return ret;
 
   *val = offset;
diff --git a/src/grib_accessor_class_offset_file.c b/src/grib_accessor_class_offset_file.c
index 5fbcdf3..769cfd1 100644
--- a/src/grib_accessor_class_offset_file.c
+++ b/src/grib_accessor_class_offset_file.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -89,6 +89,7 @@ static grib_accessor_class _grib_accessor_class_offset_file = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -126,6 +127,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -138,7 +140,7 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
 
 static int  unpack_double(grib_accessor* a, double* val, size_t *len)
 {
-  *val = (double)a->parent->h->offset;
+  *val = (double)grib_handle_of_accessor(a)->offset;
   *len =1;
   return 0;
 }
@@ -156,12 +158,12 @@ static int unpack_string(grib_accessor*a , char*  v, size_t *len){
   l = strlen(repres)+1;
 
   if(l >*len ){
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "grib_accessor_long : unpack_string : Buffer too small for %s ", a->name );
+    grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_long : unpack_string : Buffer too small for %s ", a->name );
 
     *len = l;
     return GRIB_BUFFER_TOO_SMALL;
   }
-  grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG, "grib_accessor_long: Casting double %s to string  ", a->name);
+  grib_context_log(a->context,GRIB_LOG_DEBUG, "grib_accessor_long: Casting double %s to string  ", a->name);
 
   *len = l;
 
diff --git a/src/grib_accessor_class_offset_values.c b/src/grib_accessor_class_offset_values.c
index d02a5da..af9e555 100644
--- a/src/grib_accessor_class_offset_values.c
+++ b/src/grib_accessor_class_offset_values.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -92,6 +92,7 @@ static grib_accessor_class _grib_accessor_class_offset_values = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -129,6 +130,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -137,8 +139,8 @@ static void init(grib_accessor* a,const long l, grib_arguments* args)
 {
   int n=0;
   grib_accessor_offset_values* self= (grib_accessor_offset_values*)a;
-  self->values=grib_arguments_get_name(a->parent->h,args,n++);
-  self->missingValue=grib_arguments_get_name(a->parent->h,args,n++);
+  self->values=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->missingValue=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
   a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
   a->length=0;
 }
@@ -158,8 +160,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
   double missingValue=0;
   int ret=0,i=0;
   grib_accessor_offset_values* self= (grib_accessor_offset_values*)a;
-  grib_context* c=a->parent->h->context;
-  grib_handle* h=a->parent->h;
+  grib_context* c=a->context;
+  grib_handle* h=grib_handle_of_accessor(a);
 
   if (*val==0) return GRIB_SUCCESS;
 
diff --git a/src/grib_accessor_class_pack_bufr_values.c b/src/grib_accessor_class_pack_bufr_values.c
new file mode 100644
index 0000000..83d0995
--- /dev/null
+++ b/src/grib_accessor_class_pack_bufr_values.c
@@ -0,0 +1,207 @@
+/**
+* Copyright 2005-2016 ECMWF
+*
+* Licensed under the GNU Lesser General Public License which
+* incorporates the terms and conditions of version 3 of the GNU
+* General Public License.
+* See LICENSE and gpl-3.0.txt for details.
+*/
+
+/*****************************************
+ *  Enrico Fucile
+ ****************************************/
+
+#include "grib_api_internal.h"
+#include <ctype.h>
+
+/*
+   This is used by make_class.pl
+
+   START_CLASS_DEF
+   CLASS      = accessor
+   SUPER      = grib_accessor_class_gen
+   IMPLEMENTS = init;dump
+   IMPLEMENTS = unpack_string;unpack_string_array;unpack_long; unpack_double
+   IMPLEMENTS = pack_long; pack_double
+   IMPLEMENTS = value_count; destroy; get_native_type;
+   MEMBERS    = grib_accessor* data_accessor
+
+   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 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 int unpack_string_array (grib_accessor*, char**, size_t *len);
+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 void init_class(grib_accessor_class*);
+
+typedef struct grib_accessor_pack_bufr_values {
+    grib_accessor          att;
+/* Members defined in gen */
+/* Members defined in pack_bufr_values */
+	grib_accessor* data_accessor;
+} grib_accessor_pack_bufr_values;
+
+extern grib_accessor_class* grib_accessor_class_gen;
+
+static grib_accessor_class _grib_accessor_class_pack_bufr_values = {
+    &grib_accessor_class_gen,                      /* super                     */
+    "pack_bufr_values",                      /* name                      */
+    sizeof(grib_accessor_pack_bufr_values),  /* size                      */
+    0,                           /* inited */
+    &init_class,                 /* init_class */
+    &init,                       /* init                      */
+    0,                  /* post_init                      */
+    &destroy,                    /* free mem                       */
+    &dump,                       /* describes himself         */
+    0,                /* get length of section     */
+    0,              /* 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,               /* grib_pack procedures long      */
+    0,                 /* grib_pack procedures long      */
+    &pack_long,                  /* grib_pack procedures long      */
+    &unpack_long,                /* grib_unpack procedures long    */
+    &pack_double,                /* grib_pack procedures double    */
+    &unpack_double,              /* grib_unpack procedures double  */
+    0,                /* grib_pack procedures string    */
+    &unpack_string,              /* grib_unpack procedures string  */
+    0,          /* grib_pack array procedures string    */
+    &unpack_string_array,        /* grib_unpack array procedures string  */
+    0,                 /* grib_pack procedures bytes     */
+    0,               /* grib_unpack procedures 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          */
+    0,     /* unpack a subarray         */
+    0,              		/* clear          */
+    0,               		/* clone accessor          */
+};
+
+
+grib_accessor_class* grib_accessor_class_pack_bufr_values = &_grib_accessor_class_pack_bufr_values;
+
+
+static void init_class(grib_accessor_class* c)
+{
+	c->next_offset	=	(*(c->super))->next_offset;
+	c->string_length	=	(*(c->super))->string_length;
+	c->byte_count	=	(*(c->super))->byte_count;
+	c->byte_offset	=	(*(c->super))->byte_offset;
+	c->sub_section	=	(*(c->super))->sub_section;
+	c->pack_missing	=	(*(c->super))->pack_missing;
+	c->is_missing	=	(*(c->super))->is_missing;
+	c->pack_string	=	(*(c->super))->pack_string;
+	c->pack_string_array	=	(*(c->super))->pack_string_array;
+	c->pack_bytes	=	(*(c->super))->pack_bytes;
+	c->unpack_bytes	=	(*(c->super))->unpack_bytes;
+	c->pack_expression	=	(*(c->super))->pack_expression;
+	c->notify_change	=	(*(c->super))->notify_change;
+	c->update_size	=	(*(c->super))->update_size;
+	c->preferred_size	=	(*(c->super))->preferred_size;
+	c->resize	=	(*(c->super))->resize;
+	c->nearest_smaller_value	=	(*(c->super))->nearest_smaller_value;
+	c->next	=	(*(c->super))->next;
+	c->compare	=	(*(c->super))->compare;
+	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
+	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
+	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
+}
+
+/* END_CLASS_IMP */
+
+static void init(grib_accessor* a, const long len, grib_arguments* params) {
+
+  char* key;
+  grib_accessor_pack_bufr_values* self = (grib_accessor_pack_bufr_values*)a;
+  key = (char*)grib_arguments_get_name(grib_handle_of_accessor(a),params,0);
+  self->data_accessor=grib_find_accessor(grib_handle_of_accessor(a),key);
+
+  a->length = 0;
+}
+
+static void dump(grib_accessor* a, grib_dumper* dumper)
+{
+    return;
+}
+
+static int unpack_string_array (grib_accessor* a, char** buffer, size_t *len)
+{
+  return GRIB_NOT_IMPLEMENTED;
+}
+
+static int unpack_string (grib_accessor* a, char* buffer, size_t *len)
+{
+  return GRIB_NOT_IMPLEMENTED;
+}
+
+static int unpack_long (grib_accessor* a, long* val, size_t *len)
+{
+  return GRIB_NOT_IMPLEMENTED;
+}
+
+static int unpack_double (grib_accessor* a, double* val, size_t *len)
+{
+  return GRIB_NOT_IMPLEMENTED;
+}
+
+static int value_count(grib_accessor* a,long* count)
+{
+  *count=1;
+  return 0;
+}
+
+static void destroy(grib_context* context,grib_accessor* a)
+{
+    return;
+}
+
+static int  get_native_type(grib_accessor* a){
+  return GRIB_TYPE_LONG;
+}
+
+static int    pack_long   (grib_accessor* a, const long* val, size_t *len)
+{
+  grib_accessor_pack_bufr_values* self = (grib_accessor_pack_bufr_values*)a;
+  grib_accessor* data=(grib_accessor*)self->data_accessor;
+
+  return grib_pack_double(data,0,0);
+}
+
+
+static int    pack_double   (grib_accessor* a, const double* val, size_t *len)
+{
+  grib_accessor_pack_bufr_values* self = (grib_accessor_pack_bufr_values*)a;
+  grib_accessor* data=(grib_accessor*)self->data_accessor;
+
+  return grib_pack_double(data,0,0);
+}
+
diff --git a/src/grib_accessor_class_pad.c b/src/grib_accessor_class_pad.c
index 1117557..eb09d5b 100644
--- a/src/grib_accessor_class_pad.c
+++ b/src/grib_accessor_class_pad.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -91,6 +91,7 @@ static grib_accessor_class _grib_accessor_class_pad = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -129,6 +130,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -140,7 +142,7 @@ static size_t preferred_size(grib_accessor* a,int from_handle)
 
 	long length = 0;
 
-	grib_expression_evaluate_long(a->parent->h,self->expression,&length);
+	grib_expression_evaluate_long(grib_handle_of_accessor(a),self->expression,&length);
 
 	return  length > 0 ? length : 0;
 }
@@ -150,7 +152,7 @@ static void init(grib_accessor* a, const long len, grib_arguments*arg )
 {
 	grib_accessor_pad* self = (grib_accessor_pad*)a;
 
-	self->expression  = grib_arguments_get_expression(a->parent->h, arg,0);
+	self->expression  = grib_arguments_get_expression(grib_handle_of_accessor(a), arg,0);
 	a->length         = preferred_size(a,1);
 }
 
diff --git a/src/grib_accessor_class_padding.c b/src/grib_accessor_class_padding.c
index 57a3512..b96968d 100644
--- a/src/grib_accessor_class_padding.c
+++ b/src/grib_accessor_class_padding.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -93,6 +93,7 @@ static grib_accessor_class _grib_accessor_class_padding = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -126,6 +127,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -150,11 +152,11 @@ static void update_size(grib_accessor* a,size_t new_size)
 
 static void resize(grib_accessor* a,size_t new_size)
 {
-  void* zero = grib_context_malloc_clear(a->parent->h->context,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->parent->h->context,zero);
-  grib_context_log(a->parent->h->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_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);
   Assert(new_size == a->length);
 
 }
diff --git a/src/grib_accessor_class_padto.c b/src/grib_accessor_class_padto.c
index 42e6e79..77035ad 100644
--- a/src/grib_accessor_class_padto.c
+++ b/src/grib_accessor_class_padto.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -91,6 +91,7 @@ static grib_accessor_class _grib_accessor_class_padto = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -128,6 +129,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -140,7 +142,7 @@ static size_t preferred_size(grib_accessor* a,int from_handle)
 	long length=0;
 	long theEnd;
 
-	grib_expression_evaluate_long(a->parent->h,self->expression,&theEnd);
+	grib_expression_evaluate_long(grib_handle_of_accessor(a),self->expression,&theEnd);
 
 	length  = theEnd - a->offset;
 
@@ -154,7 +156,7 @@ static void init(grib_accessor* a, const long len, grib_arguments*arg )
 {
 	grib_accessor_padto* self = (grib_accessor_padto*)a;
 
-	self->expression  = grib_arguments_get_expression(a->parent->h, arg,0);
+	self->expression  = grib_arguments_get_expression(grib_handle_of_accessor(a), arg,0);
 	a->length         = preferred_size(a,1);
 }
 
diff --git a/src/grib_accessor_class_padtoeven.c b/src/grib_accessor_class_padtoeven.c
index 8d4171f..19b1fb5 100644
--- a/src/grib_accessor_class_padtoeven.c
+++ b/src/grib_accessor_class_padtoeven.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -93,6 +93,7 @@ static grib_accessor_class _grib_accessor_class_padtoeven = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -131,6 +132,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -142,12 +144,12 @@ static size_t preferred_size(grib_accessor* a,int from_handle)
   long length = 0;
   long seclen;
 
-  grib_get_long_internal(a->parent->h,self->section_offset,&offset);
-  grib_get_long_internal(a->parent->h,self->section_length,&length);
+  grib_get_long_internal(grib_handle_of_accessor(a),self->section_offset,&offset);
+  grib_get_long_internal(grib_handle_of_accessor(a),self->section_length,&length);
 
   if((length%2) && from_handle) {
 #if 0
-    grib_context_log(a->parent->h->context,
+    grib_context_log(a->context,
       GRIB_LOG_ERROR,"GRIB message has an odd length section (%ld, %s)",
         (long)length,a->name);
 #endif
@@ -166,8 +168,8 @@ static void init(grib_accessor* a, const long len, grib_arguments* args)
 {
   grib_accessor_padtoeven* self = (grib_accessor_padtoeven*)a;
 
-  self->section_offset = grib_arguments_get_name(a->parent->h,args,0);
-  self->section_length = grib_arguments_get_name(a->parent->h,args,1);
+  self->section_offset = grib_arguments_get_name(grib_handle_of_accessor(a),args,0);
+  self->section_length = grib_arguments_get_name(grib_handle_of_accessor(a),args,1);
 
   a->length = preferred_size(a,1);
 
diff --git a/src/grib_accessor_class_padtomultiple.c b/src/grib_accessor_class_padtomultiple.c
index 9765f4e..9c7c98a 100644
--- a/src/grib_accessor_class_padtomultiple.c
+++ b/src/grib_accessor_class_padtomultiple.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -93,6 +93,7 @@ static grib_accessor_class _grib_accessor_class_padtomultiple = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -131,6 +132,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -142,8 +144,8 @@ static size_t preferred_size(grib_accessor* a,int from_handle)
 	long begin = 0;
 	long multiple = 0;
 
-	grib_expression_evaluate_long(a->parent->h,self->begin,&begin);
-	grib_expression_evaluate_long(a->parent->h,self->multiple,&multiple);
+	grib_expression_evaluate_long(grib_handle_of_accessor(a),self->begin,&begin);
+	grib_expression_evaluate_long(grib_handle_of_accessor(a),self->multiple,&multiple);
 
 	padding = a->offset - begin;
 	padding = ((padding + multiple - 1)/multiple)*multiple - padding;
@@ -156,7 +158,7 @@ static void init(grib_accessor* a, const long len, grib_arguments *arg )
 {
 	grib_accessor_padtomultiple* self = (grib_accessor_padtomultiple*)a;
 
-	self->begin    =  grib_arguments_get_expression(a->parent->h, arg,0);
-	self->multiple = grib_arguments_get_expression(a->parent->h, arg,1);
+	self->begin    =  grib_arguments_get_expression(grib_handle_of_accessor(a), arg,0);
+	self->multiple = grib_arguments_get_expression(grib_handle_of_accessor(a), arg,1);
 	a->length         = preferred_size(a,1);
 }
diff --git a/src/grib_accessor_class_position.c b/src/grib_accessor_class_position.c
index be11d60..672edec 100644
--- a/src/grib_accessor_class_position.c
+++ b/src/grib_accessor_class_position.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -93,6 +93,7 @@ static grib_accessor_class _grib_accessor_class_position = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -128,6 +129,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -156,7 +158,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 
   if(*len < 1)
   {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 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_raw.c b/src/grib_accessor_class_raw.c
new file mode 100644
index 0000000..bd7e8c8
--- /dev/null
+++ b/src/grib_accessor_class_raw.c
@@ -0,0 +1,233 @@
+/*
+ * Copyright 2005-2016 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 = get_native_type;init;update_size; pack_bytes
+   IMPLEMENTS = compare;unpack_bytes;byte_count;value_count
+   MEMBERS    = const char* totalLength
+   MEMBERS    = const char* sectionLength
+   MEMBERS    = long relativeOffset
+   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_bytes(grib_accessor*,const unsigned char*, size_t *len);
+static int unpack_bytes (grib_accessor*,unsigned char*, size_t *len);
+static long byte_count(grib_accessor*);
+static int value_count(grib_accessor*,long*);
+static void init(grib_accessor*,const long, grib_arguments* );
+static void init_class(grib_accessor_class*);
+static void update_size(grib_accessor*,size_t);
+static int compare(grib_accessor*, grib_accessor*);
+
+typedef struct grib_accessor_raw {
+    grib_accessor          att;
+/* Members defined in gen */
+/* Members defined in raw */
+	const char* totalLength;
+	const char* sectionLength;
+	long relativeOffset;
+} grib_accessor_raw;
+
+extern grib_accessor_class* grib_accessor_class_gen;
+
+static grib_accessor_class _grib_accessor_class_raw = {
+    &grib_accessor_class_gen,                      /* super                     */
+    "raw",                      /* name                      */
+    sizeof(grib_accessor_raw),  /* size                      */
+    0,                           /* inited */
+    &init_class,                 /* init_class */
+    &init,                       /* init                      */
+    0,                  /* post_init                      */
+    0,                    /* free mem                       */
+    0,                       /* describes himself         */
+    0,                /* get length of section     */
+    0,              /* get length of string      */
+    &value_count,                /* get number of values      */
+    &byte_count,                 /* get number of bytes      */
+    0,                /* get offset to bytes           */
+    &get_native_type,            /* get native type               */
+    0,                /* get sub_section                */
+    0,               /* grib_pack procedures long      */
+    0,                 /* grib_pack procedures long      */
+    0,                  /* grib_pack procedures long      */
+    0,                /* grib_unpack procedures long    */
+    0,                /* grib_pack procedures double    */
+    0,              /* grib_unpack procedures double  */
+    0,                /* grib_pack procedures string    */
+    0,              /* grib_unpack procedures string  */
+    0,          /* grib_pack array procedures string    */
+    0,        /* grib_unpack array procedures string  */
+    &pack_bytes,                 /* grib_pack procedures bytes     */
+    &unpack_bytes,               /* grib_unpack procedures bytes   */
+    0,            /* pack_expression */
+    0,              /* notify_change   */
+    &update_size,                /* update_size   */
+    0,            /* preferred_size   */
+    0,                    /* resize   */
+    0,      /* nearest_smaller_value */
+    0,                       /* next accessor    */
+    &compare,                    /* compare vs. another accessor   */
+    0,     /* unpack only ith value          */
+    0,     /* unpack a subarray         */
+    0,              		/* clear          */
+    0,               		/* clone accessor          */
+};
+
+
+grib_accessor_class* grib_accessor_class_raw = &_grib_accessor_class_raw;
+
+
+static void init_class(grib_accessor_class* c)
+{
+	c->dump	=	(*(c->super))->dump;
+	c->next_offset	=	(*(c->super))->next_offset;
+	c->string_length	=	(*(c->super))->string_length;
+	c->byte_offset	=	(*(c->super))->byte_offset;
+	c->sub_section	=	(*(c->super))->sub_section;
+	c->pack_missing	=	(*(c->super))->pack_missing;
+	c->is_missing	=	(*(c->super))->is_missing;
+	c->pack_long	=	(*(c->super))->pack_long;
+	c->unpack_long	=	(*(c->super))->unpack_long;
+	c->pack_double	=	(*(c->super))->pack_double;
+	c->unpack_double	=	(*(c->super))->unpack_double;
+	c->pack_string	=	(*(c->super))->pack_string;
+	c->unpack_string	=	(*(c->super))->unpack_string;
+	c->pack_string_array	=	(*(c->super))->pack_string_array;
+	c->unpack_string_array	=	(*(c->super))->unpack_string_array;
+	c->pack_expression	=	(*(c->super))->pack_expression;
+	c->notify_change	=	(*(c->super))->notify_change;
+	c->preferred_size	=	(*(c->super))->preferred_size;
+	c->resize	=	(*(c->super))->resize;
+	c->nearest_smaller_value	=	(*(c->super))->nearest_smaller_value;
+	c->next	=	(*(c->super))->next;
+	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
+	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
+	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
+}
+
+/* END_CLASS_IMP */
+
+static void init(grib_accessor* a, const long len , grib_arguments* arg )
+{
+    int n=0;
+    int err=0;
+    long sectionLength;
+    grib_accessor_raw *self =(grib_accessor_raw*)a;
+    grib_expression* e;
+
+    a->length=0;
+    self->totalLength = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+    self->sectionLength = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+
+    e=grib_arguments_get_expression(grib_handle_of_accessor(a), arg,n++);
+    grib_expression_evaluate_long(grib_handle_of_accessor(a),e,&(self->relativeOffset));
+    if (err) grib_context_log(grib_handle_of_accessor(a)->context,GRIB_LOG_FATAL,"unable to evaluate relativeOffset");
+
+    grib_get_long(grib_handle_of_accessor(a),self->sectionLength,&sectionLength);
+
+    a->length=sectionLength-self->relativeOffset;
+    if (a->length<0) a->length=0;
+
+    /* Assert(a->length>=0); */
+}
+
+static int  get_native_type(grib_accessor* a){
+    return GRIB_TYPE_BYTES;
+}
+
+
+static int compare(grib_accessor* a, grib_accessor* b) {
+    int retval=GRIB_SUCCESS;
+
+    size_t alen = (size_t)grib_byte_count(a);
+    size_t blen = (size_t)grib_byte_count(b);
+
+    if (alen != blen) return GRIB_COUNT_MISMATCH;
+
+    return retval;
+}
+
+static long byte_count(grib_accessor* a){
+    return a->length;
+}
+
+static int value_count(grib_accessor* a,long* len){
+    *len=a->length;
+    return 0;
+}
+
+static int unpack_bytes (grib_accessor* a,unsigned char* buffer, size_t *len) {
+    if (*len < a->length) {
+        *len = a->length;
+        return GRIB_ARRAY_TOO_SMALL;
+    }
+    *len = a->length;
+
+    memcpy(buffer, grib_handle_of_accessor(a)->buffer->data + a->offset, *len);
+
+    return GRIB_SUCCESS;
+}
+
+static void update_size(grib_accessor* a,size_t s)
+{
+    grib_context_log(a->context,GRIB_LOG_DEBUG,"updating size of %s old %ld new %ld",a->name,a->length,s);
+    a->length = s;
+    Assert(a->length>=0);
+}
+
+void accessor_raw_set_length(grib_accessor* a,size_t len) {
+    a->length=len;
+}
+
+long accessor_raw_get_offset(grib_accessor* a) {
+    return a->offset;
+}
+
+static int pack_bytes(grib_accessor* a, const unsigned char* val, size_t *len)
+{
+    size_t length = *len;
+    long totalLength;
+    long sectionLength;
+    grib_handle* h=grib_handle_of_accessor(a);
+    grib_accessor_raw *self =(grib_accessor_raw*)a;
+    long dlen=length-a->length;
+
+    grib_get_long(h,self->totalLength,&totalLength);
+    totalLength+=dlen;
+    grib_get_long(h,self->sectionLength,&sectionLength);
+    sectionLength+=dlen;
+
+    grib_buffer_replace(a, val, length,1,1);
+
+    grib_set_long(h,self->totalLength,totalLength);
+    grib_set_long(h,self->sectionLength,sectionLength);
+    a->length = length;
+
+    return GRIB_SUCCESS;
+}
diff --git a/src/grib_accessor_class_reference_value_error.c b/src/grib_accessor_class_reference_value_error.c
index f1c74f1..aabf9d0 100644
--- a/src/grib_accessor_class_reference_value_error.c
+++ b/src/grib_accessor_class_reference_value_error.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -93,6 +93,7 @@ static grib_accessor_class _grib_accessor_class_reference_value_error = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -131,6 +132,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -140,8 +142,8 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
   grib_accessor_reference_value_error* self = (grib_accessor_reference_value_error*)a;
   int n = 0;
 
-  self->referenceValue = grib_arguments_get_name(a->parent->h,c,n++);
-  self->floatType = grib_arguments_get_name(a->parent->h,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++);
 
   a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
   a->length=0;
@@ -153,7 +155,7 @@ static int    unpack_double   (grib_accessor* a, double* val, size_t *len) {
   int ret = 0;
   double referenceValue=0;
  
-  if((ret = grib_get_double_internal(a->parent->h,
+  if((ret = grib_get_double_internal(grib_handle_of_accessor(a),
       self->referenceValue,&referenceValue)) != GRIB_SUCCESS)
     return ret;
 
diff --git a/src/grib_accessor_class_round.c b/src/grib_accessor_class_round.c
index 963aead..b6e2809 100644
--- a/src/grib_accessor_class_round.c
+++ b/src/grib_accessor_class_round.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -86,6 +86,7 @@ static grib_accessor_class _grib_accessor_class_round = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -123,6 +124,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -133,7 +135,6 @@ static int    unpack_double(grib_accessor* a, double* val, size_t *len)
 {
   grib_accessor_round* self = (grib_accessor_round*)a;
 
-
   int ret = GRIB_SUCCESS;
 
   size_t replen = 0;
@@ -142,18 +143,15 @@ static int    unpack_double(grib_accessor* a, double* val, size_t *len)
   double toround = 0;
 
   const char* oval = NULL;
-  oval     = grib_arguments_get_name(a->parent->h,self->arg,0);
-
+  oval     = grib_arguments_get_name(grib_handle_of_accessor(a),self->arg,0);
 
-  if( (ret = grib_get_double_internal(a->parent->h, oval, &toround)) != 0)
+  if( (ret = grib_get_double_internal(grib_handle_of_accessor(a), oval, &toround)) != 0)
     return ret;
 
-  rounding_precision = grib_arguments_get_long(a->parent->h,self->arg,1);
+  rounding_precision = grib_arguments_get_long(grib_handle_of_accessor(a),self->arg,1);
 
   rounded = floor(rounding_precision * toround + 0.5) / rounding_precision;
 
-
-
   *len = replen;
 
   *val = rounded;
@@ -163,9 +161,7 @@ static int    unpack_double(grib_accessor* a, double* val, size_t *len)
 
 static int    unpack_string(grib_accessor* a, char* val, size_t *len)
 {
-
-
-  char result[1024]  ;
+  char result[1024];
   int ret = GRIB_SUCCESS;
   size_t replen = 1;
 
@@ -186,5 +182,5 @@ static int    unpack_string(grib_accessor* a, char* val, size_t *len)
 
   sprintf(val,"%s",result);
 
-  return GRIB_SUCCESS;
+  return ret;
 }
diff --git a/src/grib_accessor_class_scale.c b/src/grib_accessor_class_scale.c
index 7b9c4db..01974fe 100644
--- a/src/grib_accessor_class_scale.c
+++ b/src/grib_accessor_class_scale.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -101,6 +101,7 @@ static grib_accessor_class _grib_accessor_class_scale = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -136,6 +137,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -145,10 +147,10 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
   grib_accessor_scale* self = (grib_accessor_scale*)a;
   int n = 0;
 
-  self->value = grib_arguments_get_name(a->parent->h,c,n++);
-  self->multiplier    = grib_arguments_get_name(a->parent->h,c,n++);
-  self->divisor    = grib_arguments_get_name(a->parent->h,c,n++);
-  self->truncating    = grib_arguments_get_name(a->parent->h,c,n++);
+  self->value = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->multiplier    = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->divisor    = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->truncating    = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 
 }
 
@@ -162,19 +164,19 @@ static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
 
   if(*len < 1){
     ret = GRIB_ARRAY_TOO_SMALL;
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
+    grib_context_log(a->context, GRIB_LOG_ERROR,
       "Accessor %s cannot gather value for %s and/or %s error %d",
       a->name,self->multiplier, self->divisor, ret);
     return ret;
   }
 
-  if((ret = grib_get_long_internal(a->parent->h, self->divisor,&divisor)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->divisor,&divisor)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->multiplier,&multiplier)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->multiplier,&multiplier)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->value,&value)) != GRIB_SUCCESS)
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->value,&value)) != GRIB_SUCCESS)
     return ret;
 
   if (value == GRIB_MISSING_LONG) *val=GRIB_MISSING_DOUBLE;
@@ -204,26 +206,26 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
   long truncating=0;
   double x;
 
-  ret = grib_get_long_internal(a->parent->h, self->divisor,&divisor);
+  ret = grib_get_long_internal(grib_handle_of_accessor(a), self->divisor,&divisor);
   if(ret != GRIB_SUCCESS) {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->divisor, ret);
+    grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->divisor, ret);
     return ret;
   }
-  ret = grib_get_long_internal(a->parent->h, self->multiplier,&multiplier);
+  ret = grib_get_long_internal(grib_handle_of_accessor(a), self->multiplier,&multiplier);
   if(ret != GRIB_SUCCESS){
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->divisor, ret);
+    grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->divisor, ret);
     return ret;
   }
   if (self->truncating) {
-    ret = grib_get_long_internal(a->parent->h, self->truncating,&truncating);
+    ret = grib_get_long_internal(grib_handle_of_accessor(a), self->truncating,&truncating);
     if(ret != GRIB_SUCCESS){
-      grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->truncating, ret);
+      grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->truncating, ret);
       return ret;
     }
   }
 
   if (multiplier == 0) {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Accessor %s cannont divide by a zero multiplier %s error %d  \n", a->name, self->multiplier, ret);
+    grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont divide by a zero multiplier %s error %d  \n", a->name, self->multiplier, ret);
     return GRIB_ENCODING_ERROR;
   }
 
@@ -235,9 +237,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 	value = x > 0 ? (long)(x+0.5) : (long)(x-0.5) ;
   }
 
-  ret = grib_set_long_internal(a->parent->h, self->value,value);
+  ret = grib_set_long_internal(grib_handle_of_accessor(a), self->value,value);
   if(ret )
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Accessor %s cannont pack value for %s error %d \n", a->name, self->value, ret);
+    grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannont pack value for %s error %d \n", a->name, self->value, ret);
 
   if (ret == GRIB_SUCCESS) *len = 1;
 
@@ -246,7 +248,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
 static int is_missing(grib_accessor* a){
   grib_accessor_scale* self = (grib_accessor_scale*)a;
-  grib_accessor* av=grib_find_accessor(a->parent->h,self->value);
+  grib_accessor* av=grib_find_accessor(grib_handle_of_accessor(a),self->value);
 
   if (!av) return GRIB_NOT_FOUND;
   return grib_is_missing_internal(av);
@@ -254,9 +256,9 @@ static int is_missing(grib_accessor* a){
   int ret=0;
   long value=0;
 
-  if((ret = grib_get_long_internal(a->parent->h,self->value,
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->value,
      &value) )   != GRIB_SUCCESS){
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
+    grib_context_log(a->context, GRIB_LOG_ERROR,
       "Accessor %s cannont gather value for %s error %d \n", a->name,
        self->value, ret);
     return 0;
diff --git a/src/grib_accessor_class_scale_values.c b/src/grib_accessor_class_scale_values.c
index cd93033..c46c774 100644
--- a/src/grib_accessor_class_scale_values.c
+++ b/src/grib_accessor_class_scale_values.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -92,6 +92,7 @@ static grib_accessor_class _grib_accessor_class_scale_values = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -129,6 +130,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -137,8 +139,8 @@ static void init(grib_accessor* a,const long l, grib_arguments* args)
 {
   int n=0;
   grib_accessor_scale_values* self= (grib_accessor_scale_values*)a;
-  self->values=grib_arguments_get_name(a->parent->h,args,n++);
-  self->missingValue=grib_arguments_get_name(a->parent->h,args,n++);
+  self->values=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+  self->missingValue=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
   a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
   a->length=0;
 }
@@ -158,8 +160,8 @@ 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->parent->h->context;
-  grib_handle* h=a->parent->h;
+  grib_context* c=a->context;
+  grib_handle* h=grib_handle_of_accessor(a);
 
   if (*val==1) return GRIB_SUCCESS;
 
diff --git a/src/grib_accessor_class_second_order_bits_per_value.c b/src/grib_accessor_class_second_order_bits_per_value.c
index a3f53d5..dc7c320 100644
--- a/src/grib_accessor_class_second_order_bits_per_value.c
+++ b/src/grib_accessor_class_second_order_bits_per_value.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -97,6 +97,7 @@ static grib_accessor_class _grib_accessor_class_second_order_bits_per_value = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -134,6 +135,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -147,25 +149,28 @@ static unsigned long nbits[32]={
         0x40000000, 0x80000000
 };
 
-static long number_of_bits(unsigned long x) {
+static int number_of_bits(unsigned long x, long* result)
+{
     unsigned long *n=nbits;
     const int count = sizeof(nbits)/sizeof(nbits[0]);
-    long i=0;
+    *result=0;
     while (x>=*n) {
         n++;
-        i++;
-        Assert(i<count);
+        (*result)++;
+        if (*result >= count) {
+            return GRIB_ENCODING_ERROR;
+    }
     }
-    return i;
+    return GRIB_SUCCESS;
 }
 
 static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
     int n=0;
     grib_accessor_second_order_bits_per_value* self = (grib_accessor_second_order_bits_per_value*)a;
-    self->values = grib_arguments_get_name(a->parent->h,c,n++);
-    self->binaryScaleFactor = grib_arguments_get_name(a->parent->h,c,n++);
-    self->decimalScaleFactor = grib_arguments_get_name(a->parent->h,c,n++);
+    self->values = 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->bitsPerValue=0;
 
     a->length=0;
@@ -195,24 +200,24 @@ static int  unpack_long(grib_accessor* a, long* val, size_t *len)
         return GRIB_SUCCESS;
     }
 
-    if((ret = grib_get_size(a->parent->h, self->values,&size)) != GRIB_SUCCESS) {
+    if((ret = grib_get_size(grib_handle_of_accessor(a), self->values,&size)) != GRIB_SUCCESS) {
         *val=self->bitsPerValue;
         return GRIB_SUCCESS;
     }
 
-    if((ret = grib_get_long(a->parent->h, self->binaryScaleFactor,&binaryScaleFactor)) != GRIB_SUCCESS)
+    if((ret = grib_get_long(grib_handle_of_accessor(a), self->binaryScaleFactor,&binaryScaleFactor)) != GRIB_SUCCESS)
         return ret;
 
-    if((ret = grib_get_long_internal(a->parent->h, self->decimalScaleFactor,&decimalScaleFactor)) != GRIB_SUCCESS)
+    if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->decimalScaleFactor,&decimalScaleFactor)) != GRIB_SUCCESS)
         return ret;
 
-    values=(double*)grib_context_malloc_clear(a->parent->h->context,sizeof(double)*size);
+    values=(double*)grib_context_malloc_clear(a->context,sizeof(double)*size);
     if (!values) {
-        grib_context_log(a->parent->h->context,GRIB_LOG_FATAL,"%s unable to allocate %ld bytes",
+        grib_context_log(a->context,GRIB_LOG_FATAL,"%s unable to allocate %ld bytes",
                 a->name,(long)size);
         return GRIB_OUT_OF_MEMORY;
     }
-    if((ret = grib_get_double_array_internal(a->parent->h, self->values,values,&size)) != GRIB_SUCCESS)
+    if((ret = grib_get_double_array_internal(grib_handle_of_accessor(a), self->values,values,&size)) != GRIB_SUCCESS)
         return ret;
 
     max=values[0];
@@ -227,10 +232,12 @@ static int  unpack_long(grib_accessor* a, long* val, size_t *len)
 
     /* self->bitsPerValue=(long)ceil(log((double)((max-min)*d+1))/log(2.0))-binaryScaleFactor; */
     /* See GRIB-540 for why we use ceil */
-    self->bitsPerValue=number_of_bits( (unsigned long)ceil((fabs(max-min)*b*d)) );
+    ret = number_of_bits( (unsigned long)ceil((fabs(max-min)*b*d)), &(self->bitsPerValue) );
+    if (ret != GRIB_SUCCESS)
+        return ret;
     *val=self->bitsPerValue;
 
-    grib_context_free(a->parent->h->context,values);
+    grib_context_free(a->context,values);
 
     return ret;
 }
diff --git a/src/grib_accessor_class_section.c b/src/grib_accessor_class_section.c
index fcc4f60..e7e3e8c 100644
--- a/src/grib_accessor_class_section.c
+++ b/src/grib_accessor_class_section.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -94,6 +94,7 @@ static grib_accessor_class _grib_accessor_class_section = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -126,6 +127,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -135,7 +137,7 @@ static void init_class(grib_accessor_class* c)
 
 static void init(grib_accessor* a, const long len , grib_arguments* arg )
 {
-  a->sub_section           = grib_section_create(a->parent->h,a);
+  a->sub_section           = grib_section_create(grib_handle_of_accessor(a),a);
   a->length                   = 0;
   a->flags                   |= GRIB_ACCESSOR_FLAG_READ_ONLY;
 }
@@ -148,12 +150,12 @@ static void dump(grib_accessor* a, grib_dumper* dumper)
 static long byte_count(grib_accessor* a)
 {
 
- if( !a->length || a->parent->h->loader ) 
+ if( !a->length || grib_handle_of_accessor(a)->loader ) 
  {
 	if(a->name[1]=='_') return 0;
 
 	/* printf("adjusting sizes SECTION %s is %ld %ld\n",a->name,(long)a->offset,(long)a->length); */
-	grib_section_adjust_sizes(a->sub_section,a->parent->h->loader != NULL,0);
+	grib_section_adjust_sizes(a->sub_section,grib_handle_of_accessor(a)->loader != NULL,0);
 	/* printf("                SECTION %s is %ld %ld\n",a->name,(long)a->offset,(long)a->length);  */
  }
 
diff --git a/src/grib_accessor_class_section_length.c b/src/grib_accessor_class_section_length.c
index 834fcef..12c8160 100644
--- a/src/grib_accessor_class_section_length.c
+++ b/src/grib_accessor_class_section_length.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -88,6 +88,7 @@ static grib_accessor_class _grib_accessor_class_section_length = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -125,6 +126,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
diff --git a/src/grib_accessor_class_section_padding.c b/src/grib_accessor_class_section_padding.c
index f89b3ab..38e262e 100644
--- a/src/grib_accessor_class_section_padding.c
+++ b/src/grib_accessor_class_section_padding.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -86,6 +86,7 @@ static grib_accessor_class _grib_accessor_class_section_padding = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -124,6 +125,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
diff --git a/src/grib_accessor_class_section_pointer.c b/src/grib_accessor_class_section_pointer.c
index 61ec308..dd996a6 100644
--- a/src/grib_accessor_class_section_pointer.c
+++ b/src/grib_accessor_class_section_pointer.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -92,6 +92,7 @@ static grib_accessor_class _grib_accessor_class_section_pointer = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -127,6 +128,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -136,20 +138,20 @@ static void init(grib_accessor* a, const long len , grib_arguments* arg)
   int n=0;
   grib_accessor_section_pointer* self=(grib_accessor_section_pointer*)a;
   
-  self->sectionOffset = grib_arguments_get_name(a->parent->h,arg,n++);
-  self->sectionLength = grib_arguments_get_name(a->parent->h,arg,n++);
-  self->sectionNumber = grib_arguments_get_long(a->parent->h,arg,n++);
+  self->sectionOffset = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+  self->sectionLength = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+  self->sectionNumber = grib_arguments_get_long(grib_handle_of_accessor(a),arg,n++);
 
   Assert (self->sectionNumber < MAX_NUM_SECTIONS );
   
-  a->parent->h->section_offset[self->sectionNumber]=(char*)self->sectionOffset;
-  a->parent->h->section_length[self->sectionNumber]=(char*)self->sectionLength;
+  grib_handle_of_accessor(a)->section_offset[self->sectionNumber]=(char*)self->sectionOffset;
+  grib_handle_of_accessor(a)->section_length[self->sectionNumber]=(char*)self->sectionLength;
 
   /* printf("++++++++++++++ GRIB_API:  creating section_pointer%d %s %s\n", */
 	  /* self->sectionNumber,self->sectionLength,self->sectionLength); */
 
-  if( a->parent->h->sections_count < self->sectionNumber)
-  	a->parent->h->sections_count=self->sectionNumber;
+  if( grib_handle_of_accessor(a)->sections_count < self->sectionNumber)
+  	grib_handle_of_accessor(a)->sections_count=self->sectionNumber;
   
   a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
   a->flags |= GRIB_ACCESSOR_FLAG_HIDDEN;
@@ -173,7 +175,7 @@ static int unpack_string(grib_accessor *a , char*  v, size_t *len){
 
   if (*len < length) return GRIB_ARRAY_TOO_SMALL;
   
-  p  = a->parent->h->buffer->data + grib_byte_offset(a);
+  p  = grib_handle_of_accessor(a)->buffer->data + grib_byte_offset(a);
   
   for (i = 0; i < length; i++)  {
     sprintf (s,"%02x", *(p++));
@@ -191,9 +193,9 @@ static long byte_count(grib_accessor* a){
   long sectionLength=0;
   int ret=0;
   
-  ret=grib_get_long(a->parent->h,self->sectionLength,&sectionLength);
+  ret=grib_get_long(grib_handle_of_accessor(a),self->sectionLength,&sectionLength);
   if (ret) {
-    grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+    grib_context_log(a->context,GRIB_LOG_ERROR,
                      "unable to get %s %s",
                      self->sectionLength,grib_get_error_message(ret));
     return -1;
@@ -207,9 +209,9 @@ static long byte_offset(grib_accessor* a){
   long sectionOffset=0;
   int ret=0;
   
-  ret=grib_get_long(a->parent->h,self->sectionOffset,&sectionOffset);
+  ret=grib_get_long(grib_handle_of_accessor(a),self->sectionOffset,&sectionOffset);
   if (ret) {
-    grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+    grib_context_log(a->context,GRIB_LOG_ERROR,
                      "unable to get %s %s",
                      self->sectionOffset,grib_get_error_message(ret));
     return -1;
diff --git a/src/grib_accessor_class_select_step_template.c b/src/grib_accessor_class_select_step_template.c
index 0eba9c0..3dd3005 100644
--- a/src/grib_accessor_class_select_step_template.c
+++ b/src/grib_accessor_class_select_step_template.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -98,6 +98,7 @@ static grib_accessor_class _grib_accessor_class_select_step_template = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -134,6 +135,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -143,8 +145,8 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
     grib_accessor_select_step_template* self = (grib_accessor_select_step_template*)a;
     int n = 0;
 
-    self->productDefinitionTemplateNumber = grib_arguments_get_name(a->parent->h,c,n++);
-    self->instant = grib_arguments_get_long(a->parent->h,c,n++);
+    self->productDefinitionTemplateNumber = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->instant = grib_arguments_get_long(grib_handle_of_accessor(a),c,n++);
 }
 
 static int unpack_long(grib_accessor* a, long* val, size_t *len)
@@ -159,7 +161,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len)
     long productDefinitionTemplateNumber=0;
     long productDefinitionTemplateNumberNew=0;
 /*TODO chemicals*/
-    grib_get_long(a->parent->h, self->productDefinitionTemplateNumber,&productDefinitionTemplateNumber);
+    grib_get_long(grib_handle_of_accessor(a), self->productDefinitionTemplateNumber,&productDefinitionTemplateNumber);
 
     if (self->instant) {
         /* Going from continuous or non-continuous interval to a point-in-time (instantaneous) */
@@ -265,7 +267,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len)
     }
 
     if (productDefinitionTemplateNumber != productDefinitionTemplateNumberNew)
-        grib_set_long(a->parent->h, self->productDefinitionTemplateNumber,productDefinitionTemplateNumberNew);
+        grib_set_long(grib_handle_of_accessor(a), self->productDefinitionTemplateNumber,productDefinitionTemplateNumberNew);
 
     return 0;
 }
diff --git a/src/grib_accessor_class_sexagesimal2decimal.c b/src/grib_accessor_class_sexagesimal2decimal.c
index 976d629..9d750fd 100644
--- a/src/grib_accessor_class_sexagesimal2decimal.c
+++ b/src/grib_accessor_class_sexagesimal2decimal.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -94,6 +94,7 @@ static grib_accessor_class _grib_accessor_class_sexagesimal2decimal = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -130,6 +131,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -161,7 +163,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t *len)
   double dd,mm=0,ss=0;
   int dd_sign=1;
 
-  err=grib_get_string(a->parent->h,self->key,buff,&size);
+  err=grib_get_string(grib_handle_of_accessor(a),self->key,buff,&size);
   if (err) return err;
   q=buff+self->start;
   if (self->length) q[length]=0;
@@ -244,7 +246,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t *len)
 
   if( len[0] < length+1 )
   {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 );
+    grib_context_log(a->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 );
     len[0] = 0;
     return GRIB_ARRAY_TOO_SMALL;
   }
diff --git a/src/grib_accessor_class_signed.c b/src/grib_accessor_class_signed.c
index b0ef871..c035c97 100644
--- a/src/grib_accessor_class_signed.c
+++ b/src/grib_accessor_class_signed.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -102,6 +102,7 @@ static grib_accessor_class _grib_accessor_class_signed = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -132,6 +133,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -186,7 +188,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 
     if(*len < rlen)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, " wrong size for %s it contains %d values ", a->name , rlen);
+        grib_context_log(a->context, GRIB_LOG_ERROR, " wrong size for %s it contains %d values ", a->name , rlen);
         *len = 0;
         return GRIB_ARRAY_TOO_SMALL;
     }
@@ -199,7 +201,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 
 
     for(i=0; i< rlen;i++){
-        val[i] = (long)grib_decode_signed_long(a->parent->h->buffer->data , pos, self->nbytes);
+        val[i] = (long)grib_decode_signed_long(grib_handle_of_accessor(a)->buffer->data , pos, self->nbytes);
         if(missing)
             if(val[i] == missing)
                 val[i] = GRIB_MISSING_LONG;
@@ -229,7 +231,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
 
     if(*len < 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 );
+        grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 );
         len[0] = 0;
         return GRIB_ARRAY_TOO_SMALL;
     }
@@ -247,9 +249,9 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
                 v = missing;
 
         off = a->offset;
-        ret = grib_encode_signed_long(a->parent->h->buffer->data, v ,  off,  a->length);
+        ret = grib_encode_signed_long(grib_handle_of_accessor(a)->buffer->data, v ,  off,  a->length);
         if (ret == GRIB_SUCCESS) len[0] = 1;
-        if (*len > 1)  grib_context_log(a->parent->h->context, GRIB_LOG_WARNING, "grib_accessor_signed : Trying to pack %d values in a scalar %s, packing first value",  *len, a->name  );
+        if (*len > 1)  grib_context_log(a->context, GRIB_LOG_WARNING, "grib_accessor_signed : Trying to pack %d values in a scalar %s, packing first value",  *len, a->name  );
         len[0] = 1;
         return ret;
     }
@@ -258,20 +260,20 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
 
     buflen = *len*a->length;
 
-    buf = (unsigned char*)grib_context_malloc(a->parent->h->context,buflen);
+    buf = (unsigned char*)grib_context_malloc(a->context,buflen);
 
     for(i=0; i < *len;i++){
         grib_encode_signed_long(buf, val[i] ,  off,  a->length);
         off+=  a->length;
     }
-    ret = grib_set_long_internal(a->parent->h,grib_arguments_get_name(a->parent->h,self->arg,0),*len);
+    ret = grib_set_long_internal(grib_handle_of_accessor(a),grib_arguments_get_name(a->parent->h,self->arg,0),*len);
 
     if(ret == GRIB_SUCCESS)
         grib_buffer_replace(a, buf, buflen,1,1);
     else
         *len = 0;
 
-    grib_context_free(a->parent->h->context,buf);
+    grib_context_free(a->context,buf);
     return ret;
 }
 
@@ -284,7 +286,7 @@ static int value_count(grib_accessor* a,long* len)
     grib_accessor_signed* self = (grib_accessor_signed*)a;
     *len = 0;
     if(!self->arg) {*len=1;return 0;}
-    return grib_get_long_internal(a->parent->h,grib_arguments_get_name(a->parent->h,self->arg,0),len);
+    return grib_get_long_internal(grib_handle_of_accessor(a),grib_arguments_get_name(a->parent->h,self->arg,0),len);
 }
 
 static long byte_offset(grib_accessor* a){
@@ -312,7 +314,7 @@ static int is_missing(grib_accessor* a){
     }
 
     for (i=0;i<a->length;i++) {
-        if (a->parent->h->buffer->data[offset] != ff) return 0;
+        if (grib_handle_of_accessor(a)->buffer->data[offset] != ff) return 0;
         offset++;
     }
 
diff --git a/src/grib_accessor_class_signed_bits.c b/src/grib_accessor_class_signed_bits.c
index 9c6cf3a..1ecc50d 100644
--- a/src/grib_accessor_class_signed_bits.c
+++ b/src/grib_accessor_class_signed_bits.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -101,6 +101,7 @@ static grib_accessor_class _grib_accessor_class_signed_bits = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -132,6 +133,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -146,16 +148,16 @@ static long compute_byte_count(grib_accessor* a){
     long numberOfElements;
     int ret=0;
 
-    ret=grib_get_long(a->parent->h,self->numberOfBits,&numberOfBits);
+    ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfBits,&numberOfBits);
     if (ret) {
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+        grib_context_log(a->context,GRIB_LOG_ERROR,
                 "%s unable to get %s to compute size",a->name,self->numberOfBits);
         return 0;
     }
 
-    ret=grib_get_long(a->parent->h,self->numberOfElements,&numberOfElements);
+    ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfElements,&numberOfElements);
     if (ret) {
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+        grib_context_log(a->context,GRIB_LOG_ERROR,
                 "%s unable to get %s to compute size",a->name,self->numberOfElements);
         return 0;
     }
@@ -167,8 +169,8 @@ static void init(grib_accessor* a, const long len , grib_arguments* args )
 {
     grib_accessor_signed_bits* self = (grib_accessor_signed_bits*)a;
     int n=0;
-    self->numberOfBits=grib_arguments_get_name(a->parent->h,args,n++);
-    self->numberOfElements=grib_arguments_get_name(a->parent->h,args,n++);
+    self->numberOfBits=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+    self->numberOfElements=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
     a->length = compute_byte_count(a);
 }
 
@@ -191,13 +193,13 @@ static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
 
     if(*len < rlen)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
+        grib_context_log(a->context, GRIB_LOG_ERROR,
                 " wrong size (%ld) for %s it contains %d values ",*len, a->name , rlen);
         *len = 0;
         return GRIB_ARRAY_TOO_SMALL;
     }
 
-    ret=grib_get_long(a->parent->h,self->numberOfBits,&numberOfBits);
+    ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfBits,&numberOfBits);
     if (ret) return ret;
 
     if (numberOfBits==0) {
@@ -207,7 +209,7 @@ static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
     }
 
     for (i=0;i<rlen;i++)
-        val[i] =  grib_decode_signed_longb(a->parent->h->buffer->data,  &pos,  numberOfBits);
+        val[i] =  grib_decode_signed_longb(grib_handle_of_accessor(a)->buffer->data,  &pos,  numberOfBits);
 
     *len = rlen;
 
@@ -230,21 +232,21 @@ static int    pack_long   (grib_accessor* a, const long* val, size_t *len)
     if (ret) return ret;
     rlen=count;
     if(*len != rlen) {
-        ret=grib_set_long(a->parent->h,self->numberOfElements,rlen);
+        ret=grib_set_long(grib_handle_of_accessor(a),self->numberOfElements,rlen);
     }
 
-    ret=grib_get_long(a->parent->h,self->numberOfBits,&numberOfBits);
+    ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfBits,&numberOfBits);
     if (ret) return ret;
 
     buflen = compute_byte_count(a);
-	buf = (unsigned char*)grib_context_malloc_clear(a->parent->h->context,buflen+sizeof(long));
+	buf = (unsigned char*)grib_context_malloc_clear(a->context,buflen+sizeof(long));
 
     for(i=0; i < rlen;i++)
         grib_encode_signed_longb(buf, val[i] ,  &off,  numberOfBits);
 
     grib_buffer_replace(a, buf, buflen,1,1);
 
-    grib_context_free(a->parent->h->context,buf);
+    grib_context_free(a->context,buf);
 
     return ret;
 }
@@ -254,7 +256,7 @@ static int value_count(grib_accessor* a,long* numberOfElements)
     grib_accessor_signed_bits* self = (grib_accessor_signed_bits*)a;
     *numberOfElements=0;
 
-    return grib_get_long(a->parent->h,self->numberOfElements,numberOfElements);
+    return grib_get_long(grib_handle_of_accessor(a),self->numberOfElements,numberOfElements);
 }
 
 static long byte_offset(grib_accessor* a)
diff --git a/src/grib_accessor_class_simple_packing_error.c b/src/grib_accessor_class_simple_packing_error.c
index 12102d5..3094d0f 100644
--- a/src/grib_accessor_class_simple_packing_error.c
+++ b/src/grib_accessor_class_simple_packing_error.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -99,6 +99,7 @@ static grib_accessor_class _grib_accessor_class_simple_packing_error = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -137,6 +138,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -146,11 +148,11 @@ 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;
 
-  self->bitsPerValue = grib_arguments_get_name(a->parent->h,c,n++);
-  self->binaryScaleFactor = grib_arguments_get_name(a->parent->h,c,n++);
-  self->decimalScaleFactor = grib_arguments_get_name(a->parent->h,c,n++);
-  self->referenceValue = grib_arguments_get_name(a->parent->h,c,n++);
-  self->floatType = grib_arguments_get_name(a->parent->h,c,n++);
+  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++);
 
   a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
   a->length=0;
@@ -165,18 +167,18 @@ static int    unpack_double   (grib_accessor* a, double* val, size_t *len) {
   long decimalScaleFactor=0;
   double referenceValue=0;
  
-  if((ret = grib_get_long_internal(a->parent->h,
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a),
       self->binaryScaleFactor,&binaryScaleFactor)) != GRIB_SUCCESS)
     return ret;
-  if((ret = grib_get_long_internal(a->parent->h,
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a),
       self->bitsPerValue,&bitsPerValue)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h,
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a),
       self->decimalScaleFactor,&decimalScaleFactor)) != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_double_internal(a->parent->h,
+  if((ret = grib_get_double_internal(grib_handle_of_accessor(a),
       self->referenceValue,&referenceValue)) != GRIB_SUCCESS)
     return ret;
 
diff --git a/src/grib_accessor_class_size.c b/src/grib_accessor_class_size.c
index de44317..ae25cd9 100644
--- a/src/grib_accessor_class_size.c
+++ b/src/grib_accessor_class_size.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -85,6 +85,7 @@ static grib_accessor_class _grib_accessor_class_size = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -123,6 +124,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -130,7 +132,7 @@ static void init_class(grib_accessor_class* c)
 static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
   grib_accessor_size* self = (grib_accessor_size*)a;
-  self->accessor = grib_arguments_get_name(a->parent->h,c,0);
+  self->accessor = grib_arguments_get_name(grib_handle_of_accessor(a),c,0);
   a->flags  |= GRIB_ACCESSOR_FLAG_READ_ONLY;
   a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
   a->length=0;
@@ -141,7 +143,7 @@ static int  unpack_long(grib_accessor* a, long* val, size_t *len)
   int ret=0;
   size_t size=0;
   grib_accessor_size* self = (grib_accessor_size*)a;
-  ret=grib_get_size(a->parent->h,self->accessor,&size);
+  ret=grib_get_size(grib_handle_of_accessor(a),self->accessor,&size);
   *val=(long)size;
   *len =1;
   return ret;
diff --git a/src/grib_accessor_class_smart_table.c b/src/grib_accessor_class_smart_table.c
index 7a28db3..2443aa8 100644
--- a/src/grib_accessor_class_smart_table.c
+++ b/src/grib_accessor_class_smart_table.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -120,6 +120,7 @@ static grib_accessor_class _grib_accessor_class_smart_table = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -154,6 +155,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -171,6 +173,21 @@ static void thread_init() {
   pthread_mutexattr_destroy(&attr);
 
 }
+#elif GRIB_OMP_THREADS
+static int once = 0;
+static omp_nest_lock_t mutex;
+
+static void thread_init()
+{
+    GRIB_OMP_CRITICAL(lock_grib_accessor_class_smart_table_c)
+    {
+        if (once == 0)
+        {
+            omp_init_nest_lock(&mutex);
+            once = 1;
+        }
+    }
+}
 #endif
 
 static int grib_load_smart_table(grib_context* c,const char* filename,
@@ -180,13 +197,13 @@ static void init(grib_accessor* a, const long len, grib_arguments* params) {
   int n=0;
   grib_accessor_smart_table* self  = (grib_accessor_smart_table*)a;
 
-  self->values = grib_arguments_get_name(a->parent->h,params,n++);
-  self->tablename = grib_arguments_get_string(a->parent->h,params,n++);
-  self->masterDir = grib_arguments_get_name(a->parent->h,params,n++);
-  self->localDir = grib_arguments_get_name(a->parent->h,params,n++);
-  self->widthOfCode = grib_arguments_get_long(a->parent->h,params,n++);
-  self->extraDir = grib_arguments_get_name(a->parent->h,params,n++);
-  self->extraTable = grib_arguments_get_string(a->parent->h,params,n++);
+  self->values = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+  self->tablename = grib_arguments_get_string(grib_handle_of_accessor(a),params,n++);
+  self->masterDir = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+  self->localDir = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+  self->widthOfCode = grib_arguments_get_long(grib_handle_of_accessor(a),params,n++);
+  self->extraDir = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+  self->extraTable = grib_arguments_get_string(grib_handle_of_accessor(a),params,n++);
 
   a->length = 0;
   a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
@@ -306,7 +323,7 @@ static int grib_load_smart_table(grib_context* c,const char* filename,
     t->recomposed_name[0]  = grib_context_strdup_persistent(c,recomposed_name);
     t->next      = c->smart_table;
     t->numberOfEntries      = size;
-    GRIB_PTHREAD_ONCE(&once,&thread_init)
+    GRIB_MUTEX_INIT_ONCE(&once,&thread_init)
     GRIB_MUTEX_LOCK(&mutex)
     c->smart_table = t;
     GRIB_MUTEX_UNLOCK(&mutex)
@@ -465,29 +482,29 @@ static int get_table_codes(grib_accessor* a)
   if(!self->table)
     self->table = load_table(self);
 
-  err=grib_get_size(a->parent->h,self->values,&size);
+  err=grib_get_size(grib_handle_of_accessor(a),self->values,&size);
   if (err) {
-    grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+    grib_context_log(a->context,GRIB_LOG_ERROR,
         "unable to get size of %s",a->name);
     return err;
   }
 
-  v=(long*)grib_context_malloc_clear(a->parent->h->context,size*sizeof(long));
+  v=(long*)grib_context_malloc_clear(a->context,size*sizeof(long));
 
-  grib_get_long_array(a->parent->h,self->values,v,&size);
+  grib_get_long_array(grib_handle_of_accessor(a),self->values,v,&size);
 
   count=0;
   for (i=0;i<size;i++) {
     if (v[i] < table_size) count++;
   }
-  if (self->tableCodes) grib_context_free(a->parent->h->context,self->tableCodes);
-  self->tableCodes=(long*)grib_context_malloc_clear(a->parent->h->context,count*sizeof(long));
+  if (self->tableCodes) grib_context_free(a->context,self->tableCodes);
+  self->tableCodes=(long*)grib_context_malloc_clear(a->context,count*sizeof(long));
   j=0;
   for (i=0;i<size;i++) {
     if (v[i] < table_size) self->tableCodes[j++]=v[i];
   }
 
-  grib_context_free(a->parent->h->context,v);
+  grib_context_free(a->context,v);
 
   self->tableCodesSize=count;
   self->dirty=0;
@@ -516,7 +533,7 @@ static void destroy(grib_context* context,grib_accessor* a)
 	grib_context_free(context, a->vvalue);
 	a->vvalue=NULL;
     }
-    if (self->tableCodes) grib_context_free(a->parent->h->context,self->tableCodes);
+    if (self->tableCodes) grib_context_free(a->context,self->tableCodes);
 
 }
 
diff --git a/src/grib_accessor_class_smart_table_column.c b/src/grib_accessor_class_smart_table_column.c
index e6efd95..f6a7eee 100644
--- a/src/grib_accessor_class_smart_table_column.c
+++ b/src/grib_accessor_class_smart_table_column.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -98,6 +98,7 @@ static grib_accessor_class _grib_accessor_class_smart_table_column = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -132,6 +133,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -161,8 +163,8 @@ static void init(grib_accessor* a, const long len, grib_arguments* params) {
   int n=0;
   grib_accessor_smart_table_column* self  = (grib_accessor_smart_table_column*)a;
 
-  self->smartTable = grib_arguments_get_name(a->parent->h,params,n++);
-  self->index = grib_arguments_get_long(a->parent->h,params,n++);
+  self->smartTable = grib_arguments_get_name(grib_handle_of_accessor(a),params,n++);
+  self->index = grib_arguments_get_long(grib_handle_of_accessor(a),params,n++);
 
   a->length = 0;
   a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
@@ -195,22 +197,22 @@ static int unpack_string_array (grib_accessor* a, char** buffer, size_t *len)
   char tmp[1024]={0,};
   int i=0;
 
-  tableAccessor=(grib_accessor_smart_table*)grib_find_accessor(a->parent->h,self->smartTable);
+  tableAccessor=(grib_accessor_smart_table*)grib_find_accessor(grib_handle_of_accessor(a),self->smartTable);
   if (!tableAccessor) {
-  	grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+  	grib_context_log(a->context,GRIB_LOG_ERROR,
 		"unable to find accessor %s",self->smartTable);
 	return GRIB_NOT_FOUND;
   }
 
-  err=_grib_get_size(a->parent->h,(grib_accessor*)tableAccessor,&size);
+  err=_grib_get_size(grib_handle_of_accessor(a),(grib_accessor*)tableAccessor,&size);
   if (err) return err;
   if (*len<size) {
     return GRIB_BUFFER_TOO_SMALL;
   }
 
-  code=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*size);
+  code=(long*)grib_context_malloc_clear(a->context,sizeof(long)*size);
   if (!code) {
-    grib_context_log(a->parent->h->context,GRIB_LOG_FATAL,
+    grib_context_log(a->context,GRIB_LOG_FATAL,
         "unable to allocate %ld bytes",(long)size);
     return GRIB_OUT_OF_MEMORY;
   }
@@ -233,11 +235,11 @@ static int unpack_string_array (grib_accessor* a, char** buffer, size_t *len)
         sprintf(tmp,"%d",(int)code[i]);
       }
 
-      buffer[i]=grib_context_strdup(a->parent->h->context,tmp);
+      buffer[i]=grib_context_strdup(a->context,tmp);
 
   }
   *len = size;
-  grib_context_free(a->parent->h->context,code);
+  grib_context_free(a->context,code);
 
   return GRIB_SUCCESS;
 }
@@ -255,22 +257,22 @@ static int unpack_long (grib_accessor* a, long* val, size_t *len)
 
   for (i=0;i<*len;i++) val[i]=GRIB_MISSING_LONG;
 
-  tableAccessor=(grib_accessor_smart_table*)grib_find_accessor(a->parent->h,self->smartTable);
+  tableAccessor=(grib_accessor_smart_table*)grib_find_accessor(grib_handle_of_accessor(a),self->smartTable);
   if (!tableAccessor) {
-  	grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+  	grib_context_log(a->context,GRIB_LOG_ERROR,
 		"unable to find accessor %s",self->smartTable);
 	return GRIB_NOT_FOUND;
   }
 
-  err=_grib_get_size(a->parent->h,(grib_accessor*)tableAccessor,&size);
+  err=_grib_get_size(grib_handle_of_accessor(a),(grib_accessor*)tableAccessor,&size);
   if (err) return err;
   if (*len<size) {
     return GRIB_BUFFER_TOO_SMALL;
   }
 
-  code=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*size);
+  code=(long*)grib_context_malloc_clear(a->context,sizeof(long)*size);
   if (!code) {
-    grib_context_log(a->parent->h->context,GRIB_LOG_FATAL,
+    grib_context_log(a->context,GRIB_LOG_FATAL,
         "unable to allocate %ld bytes",(long)size);
     return GRIB_OUT_OF_MEMORY;
   }
@@ -289,7 +291,7 @@ static int unpack_long (grib_accessor* a, long* val, size_t *len)
       }
   }
   *len = size;
-  grib_context_free(a->parent->h->context,code);
+  grib_context_free(a->context,code);
 
   return GRIB_SUCCESS;
 }
@@ -303,7 +305,7 @@ static int value_count(grib_accessor* a,long* count)
 
   if (!self->smartTable) return 0; 
 
-  err=grib_get_size(a->parent->h,self->smartTable,&size);
+  err=grib_get_size(grib_handle_of_accessor(a),self->smartTable,&size);
   *count=size;
   return err;
 }
diff --git a/src/grib_accessor_class_spd.c b/src/grib_accessor_class_spd.c
index 5b434a2..952159f 100644
--- a/src/grib_accessor_class_spd.c
+++ b/src/grib_accessor_class_spd.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -101,6 +101,7 @@ static grib_accessor_class _grib_accessor_class_spd = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -132,6 +133,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -148,16 +150,16 @@ static long compute_byte_count(grib_accessor* a){
   long numberOfElements;
   int ret=0;
 
-  ret=grib_get_long(a->parent->h,self->numberOfBits,&numberOfBits);
+  ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfBits,&numberOfBits);
   if (ret) {
-		grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+		grib_context_log(a->context,GRIB_LOG_ERROR,
 			"%s unable to get %s to compute size",a->name,self->numberOfBits);
 		return 0;
   }
 
-  ret=grib_get_long(a->parent->h,self->numberOfElements,&numberOfElements);
+  ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfElements,&numberOfElements);
   if (ret) {
-		grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+		grib_context_log(a->context,GRIB_LOG_ERROR,
 			"%s unable to get %s to compute size",a->name,self->numberOfElements);
 		return 0;
   }
@@ -171,8 +173,8 @@ static void init(grib_accessor* a, const long len , grib_arguments* args )
 {
 	grib_accessor_spd* self = (grib_accessor_spd*)a;
 	int n=0;
-	self->numberOfBits=grib_arguments_get_name(a->parent->h,args,n++);
-	self->numberOfElements=grib_arguments_get_name(a->parent->h,args,n++);
+	self->numberOfBits=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+	self->numberOfElements=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
 	a->length = compute_byte_count(a);
 }
 
@@ -195,19 +197,19 @@ static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
 
 	if(*len < rlen)
 	{
-		grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, 
+		grib_context_log(a->context, GRIB_LOG_ERROR, 
 			" wrong size (%ld) for %s it contains %d values ",*len, a->name , rlen);
 		*len = 0;
 		return GRIB_ARRAY_TOO_SMALL;
 	}
 
-	ret=grib_get_long(a->parent->h,self->numberOfBits,&numberOfBits);
+	ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfBits,&numberOfBits);
 	if (ret) return ret;
 
 	for (i=0;i<rlen-1;i++) 
-		val[i] =  grib_decode_unsigned_long(a->parent->h->buffer->data,  &pos,  numberOfBits);
+		val[i] =  grib_decode_unsigned_long(grib_handle_of_accessor(a)->buffer->data,  &pos,  numberOfBits);
 
-	val[rlen-1] =  grib_decode_signed_longb(a->parent->h->buffer->data,  &pos,  numberOfBits);
+	val[rlen-1] =  grib_decode_signed_longb(grib_handle_of_accessor(a)->buffer->data,  &pos,  numberOfBits);
 
 	*len = rlen;
 
@@ -230,14 +232,14 @@ static int    pack_long   (grib_accessor* a, const long* val, size_t *len)
 
 	if(*len != rlen)
 	{
-	  ret=grib_set_long(a->parent->h,self->numberOfElements,(*len)-1);
+	  ret=grib_set_long(grib_handle_of_accessor(a),self->numberOfElements,(*len)-1);
 	}
 
-	ret=grib_get_long(a->parent->h,self->numberOfBits,&numberOfBits);
+	ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfBits,&numberOfBits);
 	if (ret) return ret;
 
 	buflen = compute_byte_count(a);
-    buf = (unsigned char*)grib_context_malloc_clear(a->parent->h->context,buflen);
+    buf = (unsigned char*)grib_context_malloc_clear(a->context,buflen);
 
 	for(i=0; i < rlen-1;i++) {
 		grib_encode_unsigned_longb(buf, val[i] ,  &off,  numberOfBits);
@@ -247,7 +249,7 @@ static int    pack_long   (grib_accessor* a, const long* val, size_t *len)
 
 	grib_buffer_replace(a, buf, buflen,1,1);
 
-	grib_context_free(a->parent->h->context,buf);
+	grib_context_free(a->context,buf);
 
 	*len=rlen;
 	return ret;
@@ -260,9 +262,9 @@ static int value_count(grib_accessor* a,long* numberOfElements)
   int ret;
   *numberOfElements=0;
 
-  ret=grib_get_long(a->parent->h,self->numberOfElements,numberOfElements);
+  ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfElements,numberOfElements);
   if (ret) {
-		grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+		grib_context_log(a->context,GRIB_LOG_ERROR,
 			"%s unable to get %s to compute size",a->name,self->numberOfElements);
 		return ret;
   }
diff --git a/src/grib_accessor_class_spectral_truncation.c b/src/grib_accessor_class_spectral_truncation.c
index b82e022..3253f87 100644
--- a/src/grib_accessor_class_spectral_truncation.c
+++ b/src/grib_accessor_class_spectral_truncation.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -97,6 +97,7 @@ static grib_accessor_class _grib_accessor_class_spectral_truncation = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -135,6 +136,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -144,10 +146,10 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
   grib_accessor_spectral_truncation* self = (grib_accessor_spectral_truncation*)a;
   int n = 0;
 
-  self->J = grib_arguments_get_name(a->parent->h,c,n++);
-  self->K    = grib_arguments_get_name(a->parent->h,c,n++);
-  self->M = grib_arguments_get_name(a->parent->h,c,n++);
-  self->T    = grib_arguments_get_name(a->parent->h,c,n++);
+  self->J = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->K    = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->M = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->T    = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 
   a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
 }
@@ -161,15 +163,15 @@ static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
 
   if(*len < 1) return GRIB_ARRAY_TOO_SMALL;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->J,&J))
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->J,&J))
           != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->K,&K))
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->K,&K))
           != GRIB_SUCCESS)
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->M,&M))
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->M,&M))
           != GRIB_SUCCESS)
     return ret;
 
@@ -189,20 +191,20 @@ static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
 
   *val=Tc;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->T,&T))
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->T,&T))
           != GRIB_SUCCESS) {
 
     if (Tc == -1)
-      grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
+      grib_context_log(a->context, GRIB_LOG_ERROR,
         "%s. Spectral Truncation Type Unknown: %s=%d %s=%d %s=%d \n",
         a->name, self->J,J, self->K,K, self->M,M);
 
     Tc=0;
-    grib_set_long(a->parent->h, self->T,Tc);
+    grib_set_long(grib_handle_of_accessor(a), self->T,Tc);
 
   } else {
 
-    if (Tc != -1 && Tc != T ) grib_set_long(a->parent->h, self->T,Tc);
+    if (Tc != -1 && Tc != T ) grib_set_long(grib_handle_of_accessor(a), self->T,Tc);
 
   }
 
diff --git a/src/grib_accessor_class_sprintf.c b/src/grib_accessor_class_sprintf.c
index b7255ba..3056e46 100644
--- a/src/grib_accessor_class_sprintf.c
+++ b/src/grib_accessor_class_sprintf.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -89,6 +89,7 @@ static grib_accessor_class _grib_accessor_class_sprintf = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -124,130 +125,125 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
 
 static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
-	grib_accessor_sprintf* self = (grib_accessor_sprintf*)a; 
-	self->args = c;
-
+    grib_accessor_sprintf* self = (grib_accessor_sprintf*)a;
+    self->args = c;
 }
 
-static int pack_string(grib_accessor* a, const 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    unpack_string(grib_accessor* a, char* val, size_t *len)
+static int unpack_string(grib_accessor* a, char* val, size_t *len)
 {
-	grib_accessor_sprintf* self = (grib_accessor_sprintf*)a;
-
-	char result[1024]  ;
-	char sres[1024]  ;
-	long ires = 0;
-	double dres= 0;
-
-	int  i = 0;
-	size_t replen = 1024;
-
-	int ret = GRIB_SUCCESS;
-
-	int carg= 0;
-	int is_missing = 0;
-	const char* uname = NULL;
-	const char* tempname = NULL;
-
-
-	uname = grib_arguments_get_string(a->parent->h,self->args,carg++);
-	sprintf(result,"%s",""); 
-
-	for(i=0;i<strlen(uname);i++)
-	{
-
-		if(uname[i]=='%'){
-			int precision=999;
-			i++;
-			if (uname[i]=='.') {
-				char *theEnd=NULL,*start;
-				start=(char*)&(uname[++i]);
-				precision=strtol(start,&theEnd,10);
-				Assert(*theEnd!=0);
-				while (uname[i] != *theEnd) i++;
-			} 
-			switch(uname[i]){
-
-				case 'd':
-					tempname = grib_arguments_get_name(a->parent->h,self->args,carg++);
-
-					if((ret = grib_get_long_internal(a->parent->h,tempname,&ires)) != GRIB_SUCCESS)
-						return ret;
-					/* Bug GRIB-56: Check to see if the key is missing */
-					is_missing = grib_is_missing(a->parent->h,tempname,&ret);
-					if (ret != GRIB_SUCCESS)
-						return ret;
-					if (is_missing) {
-						sprintf(result, "%sMISSING",result);
-					}
-					else {
-						/* Not missing so print it */
-						if (precision!=999) {
-							sprintf(result,"%s%.*ld",result,precision, ires); 
-						} else {
-							sprintf(result,"%s%ld",result, ires); 
-						}
-					}
-					break;
-
-				case 'g':
-					tempname = grib_arguments_get_name(a->parent->h,self->args,carg++);
-					if((ret = grib_get_double_internal(a->parent->h,tempname,&dres)) != GRIB_SUCCESS) 
-						return ret;
-					sprintf(result,"%s%g",result, dres); 
-
-
-					break;
-
-				case 's':
-					tempname = grib_arguments_get_name(a->parent->h,self->args,carg++);
-					if((ret = grib_get_string_internal(a->parent->h,tempname,sres, &replen )) != GRIB_SUCCESS)
-						return ret;
-					sprintf(result,"%s%s",result, sres); 
-					replen = 1024;
-
-
-			}
-		}
-		else
-			sprintf(result,"%s%c",result, uname[i]);
-
-
-	}
-
-	replen = strlen(result)+1;
-
-	if(*len < replen){
-		*len = replen;
-		return GRIB_ARRAY_TOO_SMALL;
-	}
-	*len = replen;
-
-	sprintf(val,"%s",result);
-
-	return GRIB_SUCCESS;
+    grib_accessor_sprintf* self = (grib_accessor_sprintf*)a;
+    char result[1024]  ;
+    char tempBuffer[1024];
+    char sres[1024]  ;
+    long ires = 0;
+    double dres= 0;
+    int  i = 0;
+    size_t replen = 1024;
+    int ret = GRIB_SUCCESS;
+    int carg= 0;
+    int is_missing = 0;
+    const char* uname = NULL;
+    const char* tempname = NULL;
+    size_t uname_len = 0;
+
+    uname = grib_arguments_get_string(grib_handle_of_accessor(a),self->args,carg++);
+    sprintf(result,"%s","");
+    uname_len = strlen(uname);
+
+    for(i=0; i<uname_len; i++)
+    {
+        if(uname[i]=='%'){
+            int precision=999;
+            i++;
+            if (uname[i]=='.') {
+                char *theEnd=NULL,*start;
+                start=(char*)&(uname[++i]);
+                precision=strtol(start,&theEnd,10);
+                Assert(*theEnd!=0);
+                while (uname[i] != *theEnd) i++;
+            }
+            switch(uname[i]){
+            case 'd':
+                tempname = grib_arguments_get_name(grib_handle_of_accessor(a),self->args,carg++);
+
+                if((ret = grib_get_long_internal(grib_handle_of_accessor(a),tempname,&ires)) != GRIB_SUCCESS)
+                    return ret;
+                /* Bug GRIB-56: Check to see if the key is missing */
+                is_missing = grib_is_missing(grib_handle_of_accessor(a),tempname,&ret);
+                if (ret != GRIB_SUCCESS)
+                    return ret;
+                if (is_missing) {
+                    sprintf(tempBuffer,"%sMISSING",result);
+                    strcpy(result, tempBuffer);
+                }
+                else {
+                    /* Not missing so print it */
+                    if (precision!=999) {
+                        sprintf(tempBuffer,"%s%.*ld",result, precision, ires);
+                        strcpy(result, tempBuffer);
+                    } else {
+                        sprintf(tempBuffer,"%s%ld",result, ires);
+                        strcpy(result, tempBuffer);
+                    }
+                }
+                break;
+
+            case 'g':
+                tempname = grib_arguments_get_name(grib_handle_of_accessor(a),self->args,carg++);
+                if((ret = grib_get_double_internal(grib_handle_of_accessor(a),tempname,&dres)) != GRIB_SUCCESS)
+                    return ret;
+                sprintf(tempBuffer,"%s%g",result, dres);
+                strcpy(result, tempBuffer);
+
+                break;
+
+            case 's':
+                tempname = grib_arguments_get_name(grib_handle_of_accessor(a),self->args,carg++);
+                if((ret = grib_get_string_internal(grib_handle_of_accessor(a),tempname,sres, &replen )) != GRIB_SUCCESS)
+                    return ret;
+                sprintf(tempBuffer, "%s%s",result, sres);
+                strcpy(result, tempBuffer);
+                replen = 1024;
+            }
+        }
+        else {
+            sprintf(tempBuffer,"%s%c",result, uname[i]);
+            strcpy(result, tempBuffer);
+        }
+    }
+
+    replen = strlen(result)+1;
+
+    if(*len < replen){
+        *len = replen;
+        return GRIB_ARRAY_TOO_SMALL;
+    }
+    *len = replen;
+
+    sprintf(val,"%s",result);
+
+    return GRIB_SUCCESS;
 }
 
 static int value_count(grib_accessor* a,long* count)
 {
-	*count=1;
-	return 0;
+    *count=1;
+    return 0;
 }
 
 static size_t string_length(grib_accessor* a)
 {
     return 1024;
 }
-
diff --git a/src/grib_accessor_class_statistics.c b/src/grib_accessor_class_statistics.c
index f1dba5d..7f040f4 100644
--- a/src/grib_accessor_class_statistics.c
+++ b/src/grib_accessor_class_statistics.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -102,6 +102,7 @@ static grib_accessor_class _grib_accessor_class_statistics = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -137,6 +138,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -146,14 +148,14 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
     grib_accessor_statistics* self = (grib_accessor_statistics*)a;
     int n = 0;
 
-    self->missing_value = grib_arguments_get_name(a->parent->h,c,n++);
-    self->values = grib_arguments_get_name(a->parent->h,c,n++);
+    self->missing_value = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->values = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
     a->flags  |= GRIB_ACCESSOR_FLAG_READ_ONLY;
     a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
     a->flags |= GRIB_ACCESSOR_FLAG_HIDDEN;
 
     self->number_of_elements=8;
-    self->v=(double*)grib_context_malloc(a->parent->h->context,
+    self->v=(double*)grib_context_malloc(a->context,
             sizeof(double)*self->number_of_elements);
 
     a->length=0;
@@ -169,17 +171,17 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
     double max,min,avg,sd,value,skew,kurt, m2=0,m3=0,m4=0;
     double missing=0;
     size_t number_of_missing=0;
-    grib_context* c=a->parent->h->context;
-    grib_handle* h=a->parent->h;
+    grib_context* c=a->context;
+    grib_handle* h=grib_handle_of_accessor(a);
 
     if (!a->dirty) return GRIB_SUCCESS;
 
     if ( (ret=grib_get_size(h,self->values,&size)) != GRIB_SUCCESS) return ret;
 
-    grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG,
+    grib_context_log(a->context,GRIB_LOG_DEBUG,
             "grib_accessor_statistics: computing statistics for %d values",size);
 
-    if((ret=grib_get_double(a->parent->h,self->missing_value,&missing))
+    if((ret=grib_get_double(grib_handle_of_accessor(a),self->missing_value,&missing))
             != GRIB_SUCCESS) return ret;
 
     values=(double*)grib_context_malloc_clear(c,size*sizeof(double));
@@ -265,7 +267,7 @@ static void destroy(grib_context* c,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;
 
@@ -284,8 +286,8 @@ static int compare(grib_accessor* a, grib_accessor* b)
 
     if (alen != blen) return GRIB_COUNT_MISMATCH;
 
-    aval=(double*)grib_context_malloc(a->parent->h->context,alen*sizeof(double));
-    bval=(double*)grib_context_malloc(b->parent->h->context,blen*sizeof(double));
+    aval=(double*)grib_context_malloc(a->context,alen*sizeof(double));
+    bval=(double*)grib_context_malloc(b->context,blen*sizeof(double));
 
     b->dirty=1;
     a->dirty=1;
@@ -293,16 +295,15 @@ static int compare(grib_accessor* a, grib_accessor* b)
     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->parent->h->context,aval);
-    grib_context_free(b->parent->h->context,bval);
+    grib_context_free(a->context,aval);
+    grib_context_free(b->context,bval);
 
-    return GRIB_SUCCESS;
+    return retval;
 }
 
 static int unpack_string(grib_accessor*a , char*  v, size_t *len)
diff --git a/src/grib_accessor_class_statistics_spectral.c b/src/grib_accessor_class_statistics_spectral.c
index d957cad..e6fc38b 100644
--- a/src/grib_accessor_class_statistics_spectral.c
+++ b/src/grib_accessor_class_statistics_spectral.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -106,6 +106,7 @@ static grib_accessor_class _grib_accessor_class_statistics_spectral = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -142,6 +143,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -151,17 +153,17 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
   grib_accessor_statistics_spectral* self = (grib_accessor_statistics_spectral*)a;
   int n = 0;
 
-  self->values = grib_arguments_get_name(a->parent->h,c,n++);
-  self->J = grib_arguments_get_name(a->parent->h,c,n++);
-  self->K = grib_arguments_get_name(a->parent->h,c,n++);
-  self->M = grib_arguments_get_name(a->parent->h,c,n++);
-  self->JS = grib_arguments_get_name(a->parent->h,c,n++);
+  self->values = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->J = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->K = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->M = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->JS = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
   
   a->flags  |= GRIB_ACCESSOR_FLAG_READ_ONLY;
   a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
 
   self->number_of_elements=4;
-  self->v=(double*)grib_context_malloc(a->parent->h->context,
+  self->v=(double*)grib_context_malloc(a->context,
                 sizeof(double)*self->number_of_elements);
 
   a->length=0;
@@ -177,20 +179,20 @@ static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
   size_t size=0;
   long J,K,M,N;
   double avg,enorm,sd;
-  grib_context* c=a->parent->h->context;
-  grib_handle* h=a->parent->h;
+  grib_context* c=a->context;
+  grib_handle* h=grib_handle_of_accessor(a);
 
   if (!a->dirty) return GRIB_SUCCESS;
 
   if ( (ret=grib_get_size(h,self->values,&size)) != GRIB_SUCCESS) return ret;
 
-  if((ret=grib_get_long(a->parent->h,self->J,&J))
+  if((ret=grib_get_long(grib_handle_of_accessor(a),self->J,&J))
        != GRIB_SUCCESS) return ret;
 
-  if((ret=grib_get_long(a->parent->h,self->K,&K))
+  if((ret=grib_get_long(grib_handle_of_accessor(a),self->K,&K))
       != GRIB_SUCCESS) return ret;
 
-  if((ret=grib_get_long(a->parent->h,self->M,&M))
+  if((ret=grib_get_long(grib_handle_of_accessor(a),self->M,&M))
       != GRIB_SUCCESS) return ret;
 
   if (J != M || M != K) return GRIB_NOT_IMPLEMENTED;
@@ -198,7 +200,7 @@ static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
   N=(M+1)*(M+2)/2;
 
   if (2*N != size) {
-    grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+    grib_context_log(a->context,GRIB_LOG_ERROR,
                      "wrong number of components for spherical harmonics %ld != %ld",2*N,size);
     return GRIB_WRONG_ARRAY_SIZE;
   }
@@ -242,7 +244,8 @@ static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
   return ret;
 }
 
-static int value_count(grib_accessor* a,long* count) {
+static int value_count(grib_accessor* a,long* count)
+{
   grib_accessor_statistics_spectral* self = (grib_accessor_statistics_spectral*)a;
   *count= self->number_of_elements;
   return 0;
@@ -254,8 +257,9 @@ static void destroy(grib_context* c,grib_accessor* a)
   grib_context_free(c,self->v);
 }
 
-static int compare(grib_accessor* a, grib_accessor* b) {
-  int retval=0;
+static int compare(grib_accessor* a, grib_accessor* b)
+{
+  int retval=GRIB_SUCCESS;
   double *aval=0;
   double *bval=0;
 
@@ -274,8 +278,8 @@ static int compare(grib_accessor* a, grib_accessor* b) {
 
   if (alen != blen) return GRIB_COUNT_MISMATCH;
 
-  aval=(double*)grib_context_malloc(a->parent->h->context,alen*sizeof(double));
-  bval=(double*)grib_context_malloc(b->parent->h->context,blen*sizeof(double));
+  aval=(double*)grib_context_malloc(a->context,alen*sizeof(double));
+  bval=(double*)grib_context_malloc(b->context,blen*sizeof(double));
 
   b->dirty=1;
   a->dirty=1;
@@ -289,10 +293,8 @@ static int compare(grib_accessor* a, grib_accessor* b) {
     alen--;
   }
 
-  grib_context_free(a->parent->h->context,aval);
-  grib_context_free(b->parent->h->context,bval);
+  grib_context_free(a->context,aval);
+  grib_context_free(b->context,bval);
 
-  return GRIB_SUCCESS;
+  return retval;
 }
-
-
diff --git a/src/grib_accessor_class_step_in_units.c b/src/grib_accessor_class_step_in_units.c
index ee087b6..ae4c951 100644
--- a/src/grib_accessor_class_step_in_units.c
+++ b/src/grib_accessor_class_step_in_units.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -97,6 +97,7 @@ static grib_accessor_class _grib_accessor_class_step_in_units = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -133,6 +134,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -142,11 +144,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(a->parent->h,c,n++);
-	self->codedUnits  = grib_arguments_get_name(a->parent->h,c,n++);
-	self->stepUnits  = grib_arguments_get_name(a->parent->h,c,n++);
-	self->indicatorOfUnitForTimeRange  = grib_arguments_get_name(a->parent->h,c,n++);
-	self->lengthOfTimeRange  = grib_arguments_get_name(a->parent->h,c,n++);
+	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++);
 }
 
 static void dump(grib_accessor* a, grib_dumper* dumper)
@@ -198,7 +200,7 @@ 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=a->parent->h;
+	grib_handle* h=grib_handle_of_accessor(a);
 	int factor=0;
 	long u2sf,u2sf_step_unit;
 
@@ -234,7 +236,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_handle* h=a->parent->h;
+	grib_handle* h=grib_handle_of_accessor(a);
 	int err = 0;
 	long codedStep,codedUnits,stepUnits;
 	long oldStep=0;
@@ -270,9 +272,9 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
 			lengthOfTimeRange-=codedStep-oldStep;
 		else lengthOfTimeRange-=codedStep * u2s2[codedUnits]/u2s2[indicatorOfUnitForTimeRange];
 		lengthOfTimeRange = lengthOfTimeRange > 0 ? lengthOfTimeRange : 0 ;
-		err = grib_set_long_internal(a->parent->h,self->lengthOfTimeRange,lengthOfTimeRange);
+		err = grib_set_long_internal(grib_handle_of_accessor(a),self->lengthOfTimeRange,lengthOfTimeRange);
 		if (err!=GRIB_SUCCESS) return err;
 	}
 
-	return grib_set_long_internal(a->parent->h,self->codedStep,codedStep);
+	return grib_set_long_internal(grib_handle_of_accessor(a),self->codedStep,codedStep);
 }
diff --git a/src/grib_accessor_class_sum.c b/src/grib_accessor_class_sum.c
index aa90e8c..792e2b7 100644
--- a/src/grib_accessor_class_sum.c
+++ b/src/grib_accessor_class_sum.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -95,6 +95,7 @@ static grib_accessor_class _grib_accessor_class_sum = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -131,95 +132,94 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
 
 static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
-  grib_accessor_sum* self = (grib_accessor_sum*)a;
-  int n = 0;
-  self->values = grib_arguments_get_name(a->parent->h,c,n++);
-  a->length=0;
-  a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
-
+    grib_accessor_sum* self = (grib_accessor_sum*)a;
+    int n = 0;
+    self->values = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    a->length=0;
+    a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
 }
 
-static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
+static int unpack_long   (grib_accessor* a, long* val, size_t *len)
 {
-  grib_accessor_sum* self = (grib_accessor_sum*)a;
-  int ret = 0;
-  size_t size=0;
-  long* values=0;
-  long i;
-  long count=0;
+    grib_accessor_sum* self = (grib_accessor_sum*)a;
+    int ret = 0;
+    size_t size=0;
+    long* values=0;
+    long i;
+    long count=0;
 
-  ret=value_count(a,&count);
-  if (ret) return ret;
-  size=count;
+    ret=value_count(a,&count);
+    if (ret) return ret;
+    size=count;
 
-  if (size==0) {
-  	*val=0;
-	return ret;
-  }
-  values=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*size);
-  if (!values) return GRIB_OUT_OF_MEMORY;
+    if (size==0) {
+        *val=0;
+        return ret;
+    }
+    values=(long*)grib_context_malloc_clear(a->context,sizeof(long)*size);
+    if (!values) return GRIB_OUT_OF_MEMORY;
 
-  grib_get_long_array(a->parent->h,self->values,values,&size);
+    grib_get_long_array(grib_handle_of_accessor(a),self->values,values,&size);
 
-  *val=0;
-  for (i=0;i<size;i++) 
-  	*val+=values[i];
+    *val=0;
+    for (i=0;i<size;i++)
+        *val+=values[i];
 
-  grib_context_free(a->parent->h->context,values);
+    grib_context_free(a->context,values);
 
-  return ret;
+    return ret;
 }
 
-static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
+static int unpack_double   (grib_accessor* a, double* val, size_t *len)
 {
-  grib_accessor_sum* self = (grib_accessor_sum*)a;
-  int ret = 0;
-  size_t size=0;
-  double* values=0;
-  long i;
-  long count=0;
+    grib_accessor_sum* self = (grib_accessor_sum*)a;
+    int ret = 0;
+    size_t size=0;
+    double* values=0;
+    long i;
+    long count=0;
 
-  ret=value_count(a,&count);
-  if (ret) return ret;
-  size=count;
+    ret=value_count(a,&count);
+    if (ret) return ret;
+    size=count;
 
-  if (size==0) {
-  	*val=0;
-	return ret;
-  }
-  values=(double*)grib_context_malloc_clear(a->parent->h->context,sizeof(double)*size);
-  if (!values) return GRIB_OUT_OF_MEMORY;
+    if (size==0) {
+        *val=0;
+        return ret;
+    }
+    values=(double*)grib_context_malloc_clear(a->context,sizeof(double)*size);
+    if (!values) return GRIB_OUT_OF_MEMORY;
 
-  grib_get_double_array(a->parent->h,self->values,values,&size);
+    grib_get_double_array(grib_handle_of_accessor(a),self->values,values,&size);
 
-  *val=0;
-  for (i=0;i<size;i++) 
-  	*val+=values[i];
+    *val=0;
+    for (i=0;i<size;i++)
+        *val+=values[i];
 
-  grib_context_free(a->parent->h->context,values);
+    grib_context_free(a->context,values);
 
-  return ret;
+    return ret;
 }
 
-
 static int value_count(grib_accessor* a,long* count)
 {
-	grib_accessor_sum* self = (grib_accessor_sum*)a;
-	size_t n=0;
-	int ret=0;
+    grib_accessor_sum* self = (grib_accessor_sum*)a;
+    size_t n=0;
+    int ret=0;
 
-    ret = grib_get_size(a->parent->h, self->values,&n);
-	*count=n;
+    ret = grib_get_size(grib_handle_of_accessor(a), self->values,&n);
+    *count=n;
 
-	if (ret) 
-		grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
-				"%s is unable to get size of %s",a->name,self->values);
+    if (ret)
+        grib_context_log(a->context,GRIB_LOG_ERROR,
+                "%s is unable to get size of %s",a->name,self->values);
 
-	return ret;
+    return ret;
 }
diff --git a/src/grib_accessor_class_suppressed.c b/src/grib_accessor_class_suppressed.c
index 72f587c..d682f1c 100644
--- a/src/grib_accessor_class_suppressed.c
+++ b/src/grib_accessor_class_suppressed.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -96,6 +96,7 @@ static grib_accessor_class _grib_accessor_class_suppressed = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -127,79 +128,80 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
 
 static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
-	grib_accessor_suppressed* self = (grib_accessor_suppressed*)a; 
-	self->args = c;
-  a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
-  a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
-  a->length=0;
+    grib_accessor_suppressed* self = (grib_accessor_suppressed*)a;
+    self->args = c;
+    a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
+    a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
+    a->length=0;
 }
 
-static void log_message(grib_accessor* a) {
-  grib_accessor_suppressed* self = (grib_accessor_suppressed*)a;
-  int i=0;
-  
-  grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
-                   "key %s is unvailable in this version.",a->name);
-  grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
-                   "Please use the following keys:");
-  while (grib_arguments_get_name(a->parent->h,self->args,i)) {
-    grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
-                     "\t- %s",
-                     grib_arguments_get_name(a->parent->h,self->args,i));
-    i++;
-  }
+static void log_message(grib_accessor* a)
+{
+    grib_accessor_suppressed* self = (grib_accessor_suppressed*)a;
+    int i=0;
+
+    grib_context_log(a->context,GRIB_LOG_ERROR,
+            "key %s is unavailable in this version.",a->name);
+    grib_context_log(a->context,GRIB_LOG_ERROR,
+            "Please use the following keys:");
+    while (grib_arguments_get_name(grib_handle_of_accessor(a),self->args,i)) {
+        grib_context_log(a->context,GRIB_LOG_ERROR,
+                "\t- %s",
+                grib_arguments_get_name(grib_handle_of_accessor(a),self->args,i));
+        i++;
+    }
 }
 
-static int pack_string(grib_accessor* a, const char* val, size_t *len){
-
-  log_message(a);
-	return GRIB_NOT_IMPLEMENTED;
-
+static int pack_string(grib_accessor* a, const char* val, size_t *len)
+{
+    log_message(a);
+    return GRIB_NOT_IMPLEMENTED;
 }
 
-static int pack_long(grib_accessor* a, const long* val, size_t *len){
-
-  log_message(a);
-  return GRIB_NOT_IMPLEMENTED;
-
+static int pack_long(grib_accessor* a, const long* val, size_t *len)
+{
+    log_message(a);
+    return GRIB_NOT_IMPLEMENTED;
 }
 
-static int pack_double(grib_accessor* a, const double* val, size_t *len){
-
-  log_message(a);
-  return GRIB_NOT_IMPLEMENTED;
-
+static int pack_double(grib_accessor* a, const double* val, size_t *len)
+{
+    log_message(a);
+    return GRIB_NOT_IMPLEMENTED;
 }
 
-
-static int    unpack_string(grib_accessor* a, char* val, size_t *len)
+static int unpack_string(grib_accessor* a, char* val, size_t *len)
 {   
-  /*log_message(a);*/
-	return GRIB_NOT_IMPLEMENTED;
+    /*log_message(a);*/
+    return GRIB_NOT_IMPLEMENTED;
 }
 
 static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {   
-  log_message(a);
-  return GRIB_NOT_IMPLEMENTED;
+    log_message(a);
+    return GRIB_NOT_IMPLEMENTED;
 }
 
 static int unpack_double(grib_accessor* a, double* val, size_t *len)
 {
-  log_message(a);
-  return GRIB_NOT_IMPLEMENTED;
+    log_message(a);
+    return GRIB_NOT_IMPLEMENTED;
 }
 
-
-static int value_count(grib_accessor* a,long* count) { *count=1;return 0; }
-
-static int  get_native_type(grib_accessor* a){
-  return GRIB_TYPE_STRING;
+static int value_count(grib_accessor* a,long* count)
+{
+    *count=1;
+    return 0;
 }
 
+static int get_native_type(grib_accessor* a)
+{
+    return GRIB_TYPE_STRING;
+}
diff --git a/src/grib_accessor_class_time.c b/src/grib_accessor_class_time.c
index adb640d..a77224e 100644
--- a/src/grib_accessor_class_time.c
+++ b/src/grib_accessor_class_time.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -95,6 +95,7 @@ static grib_accessor_class _grib_accessor_class_time = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -130,107 +131,108 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
 
 static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
-  grib_accessor_time* self = (grib_accessor_time*)a;
-  int n = 0;
+    grib_accessor_time* self = (grib_accessor_time*)a;
+    int n = 0;
 
-  self->hour = grib_arguments_get_name(a->parent->h,c,n++);
-  self->minute    = grib_arguments_get_name(a->parent->h,c,n++);
-  self->second   = grib_arguments_get_name(a->parent->h,c,n++);
+    self->hour = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->minute    = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->second   = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 }
 
 static void dump(grib_accessor* a, grib_dumper* dumper)
 {
-  grib_dump_long(dumper,a,NULL);
+    grib_dump_long(dumper,a,NULL);
 }
 
 static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
-  int ret=0;
-  grib_accessor_time* self = (grib_accessor_time*)a;
+    int ret=0;
+    grib_accessor_time* self = (grib_accessor_time*)a;
 
-  long hour = 0;
-  long minute = 0;
-  long second = 0;
+    long hour = 0;
+    long minute = 0;
+    long second = 0;
 
-  if ((ret=grib_get_long_internal(a->parent->h, self->hour,&hour))!=GRIB_SUCCESS)
-    return ret;
-  if ((ret=grib_get_long_internal(a->parent->h, self->minute,&minute))!=GRIB_SUCCESS)
-    return ret;
-  if ((ret=grib_get_long_internal(a->parent->h, self->second,&second))!=GRIB_SUCCESS)
-    return ret;
+    if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->hour,&hour))!=GRIB_SUCCESS)
+        return ret;
+    if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->minute,&minute))!=GRIB_SUCCESS)
+        return ret;
+    if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->second,&second))!=GRIB_SUCCESS)
+        return ret;
 
-  /* We ignore the 'seconds' in our time calculation! */
-  if (second != 0) {
-     grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
-                  "Truncating time: non-zero seconds(%d) ignored", second);
-  }
+    /* We ignore the 'seconds' in our time calculation! */
+    if (second != 0) {
+        grib_context_log(a->context, GRIB_LOG_ERROR,
+                "Truncating time: non-zero seconds(%d) ignored", second);
+    }
 
-  if(*len < 1)
-    return GRIB_WRONG_ARRAY_SIZE;
+    if(*len < 1)
+        return GRIB_WRONG_ARRAY_SIZE;
 
-  *val = hour*100 + minute;
+    *val = hour*100 + minute;
 
-  if(hour == 255)
-    *val = 12*100;
+    if(hour == 255)
+        *val = 12*100;
 
-  if(hour != 255 && minute == 255)
-    *val = hour*100;
+    if(hour != 255 && minute == 255)
+        *val = hour*100;
 
-  return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
 
 /* TODO: Check for a valid date */
 
 static int pack_long(grib_accessor* a, const long* val, size_t *len)
 {
-  int ret=0;
-  long v = val[0];
-  grib_accessor_time* self = (grib_accessor_time*)a;
+    int ret=0;
+    long v = val[0];
+    grib_accessor_time* self = (grib_accessor_time*)a;
 
-  long hour = 0;
-  long minute = 0;
-  long second = 0;
+    long hour = 0;
+    long minute = 0;
+    long second = 0;
 
-  if(*len !=  1)
-    return GRIB_WRONG_ARRAY_SIZE;
+    if(*len !=  1)
+        return GRIB_WRONG_ARRAY_SIZE;
 
-  hour    =  v / 100;
-  minute  =  v % 100;
-  second  =  0; /* We ignore the 'seconds' in our time calculation! */
+    hour    =  v / 100;
+    minute  =  v % 100;
+    second  =  0; /* We ignore the 'seconds' in our time calculation! */
 
-  if ((ret=grib_set_long_internal(a->parent->h,self->hour,hour))!=GRIB_SUCCESS)
-    return ret;
-  if ((ret=grib_set_long_internal(a->parent->h,self->minute,minute))!=GRIB_SUCCESS)
-    return ret;
-  if ((ret=grib_set_long_internal(a->parent->h,self->second,second))!=GRIB_SUCCESS)
-    return ret;
+    if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->hour,hour))!=GRIB_SUCCESS)
+        return ret;
+    if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->minute,minute))!=GRIB_SUCCESS)
+        return ret;
+    if ((ret=grib_set_long_internal(grib_handle_of_accessor(a),self->second,second))!=GRIB_SUCCESS)
+        return ret;
 
-  return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
 
 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;
 
-  unpack_long(a, &v, &lsize);
+    unpack_long(a, &v, &lsize);
 
-  if(*len < 5)
-  {
-    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "grib_accessor_time : unpack_string : Buffer too small for %s ", a->name );
+    if(*len < 5)
+    {
+        grib_context_log(a->context, GRIB_LOG_ERROR, "grib_accessor_time : unpack_string : Buffer too small for %s ", a->name );
 
-    *len = 5;
-    return GRIB_BUFFER_TOO_SMALL;
-  }
+        *len = 5;
+        return GRIB_BUFFER_TOO_SMALL;
+    }
 
-  sprintf(val,"%04ld",v);
+    sprintf(val,"%04ld",v);
 
-  len[0] = 5;
-  return GRIB_SUCCESS;
+    len[0] = 5;
+    return GRIB_SUCCESS;
 }
diff --git a/src/grib_accessor_class_times.c b/src/grib_accessor_class_times.c
old mode 100755
new mode 100644
index 4229c44..6075459
--- a/src/grib_accessor_class_times.c
+++ b/src/grib_accessor_class_times.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -95,6 +95,7 @@ static grib_accessor_class _grib_accessor_class_times = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -131,6 +132,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -140,9 +142,9 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
     grib_accessor_times* self = (grib_accessor_times*)a;
     int n = 0;
 
-    self->value = grib_arguments_get_name(a->parent->h,c,n++);
-    self->factor = grib_arguments_get_name(a->parent->h,c,n++);
-    self->divisor = grib_arguments_get_name(a->parent->h,c,n++);
+    self->value = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->factor = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->divisor = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
     a->length=0;
 }
 
@@ -158,18 +160,18 @@ static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
     if(*len < 1)
         return GRIB_ARRAY_TOO_SMALL;
 
-    if (grib_is_missing(a->parent->h,self->value,err)!=0) {
+    if (grib_is_missing(grib_handle_of_accessor(a),self->value,err)!=0) {
         *val=GRIB_MISSING_LONG;
         return GRIB_SUCCESS;
     }
     if(ret ) return ret;
 
-    ret = grib_get_long_internal(a->parent->h, self->factor,&factor);
+    ret = grib_get_long_internal(grib_handle_of_accessor(a), self->factor,&factor);
     if(ret ) return ret;
     if (self->divisor)
-        ret = grib_get_long_internal(a->parent->h, self->divisor,&divisor);
+        ret = grib_get_long_internal(grib_handle_of_accessor(a), self->divisor,&divisor);
     if(ret ) return ret;
-    ret = grib_get_long_internal(a->parent->h, self->value,&value);
+    ret = grib_get_long_internal(grib_handle_of_accessor(a), self->value,&value);
     if(ret ) return ret;
     /* printf("factor=%ld divisor=%ld value=%ld\n",factor,divisor,value); */
 
@@ -189,12 +191,12 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
     long factor,v,divisor=1;
 
     if (*val==GRIB_MISSING_LONG)
-        return grib_set_missing(a->parent->h,self->value);
+        return grib_set_missing(grib_handle_of_accessor(a),self->value);
 
-    ret = grib_get_long_internal(a->parent->h, self->factor,&factor);
+    ret = grib_get_long_internal(grib_handle_of_accessor(a), self->factor,&factor);
     if(ret ) return ret;
     if (self->divisor)
-        ret = grib_get_long_internal(a->parent->h, self->divisor,&divisor);
+        ret = grib_get_long_internal(grib_handle_of_accessor(a), self->divisor,&divisor);
     if(ret ) return ret;
 
     /*Assert((*val%self->factor)==0);*/
@@ -204,10 +206,10 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
     } else {
         value = v > 0 ? ((double)v)/factor+0.5 :
                 ((double)v)/factor-0.5;
-        /* grib_context_log(a->parent->h->context,GRIB_LOG_WARNING,"%s/%ld = %ld/%ld = %ld. Rounding to convert key.",a->name,self->factor,*val,self->factor,value); */
+        /* grib_context_log(a->context,GRIB_LOG_WARNING,"%s/%ld = %ld/%ld = %ld. Rounding to convert key.",a->name,self->factor,*val,self->factor,value); */
     }
 
-    ret = grib_set_long_internal(a->parent->h, self->value,value);
+    ret = grib_set_long_internal(grib_handle_of_accessor(a), self->value,value);
     if(ret ) return ret;
 
     *len = 1;
diff --git a/src/grib_accessor_class_to_double.c b/src/grib_accessor_class_to_double.c
index 49938ed..35c9d9c 100644
--- a/src/grib_accessor_class_to_double.c
+++ b/src/grib_accessor_class_to_double.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -112,6 +112,7 @@ static grib_accessor_class _grib_accessor_class_to_double = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -139,178 +140,181 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
 
 static void init(grib_accessor* a, const long len , grib_arguments* arg )
 {
-  grib_accessor_to_double* self=(grib_accessor_to_double*)a;
+    grib_accessor_to_double* self=(grib_accessor_to_double*)a;
 
-  self->key=grib_arguments_get_name(a->parent->h,arg,0);
-  self->start=grib_arguments_get_long(a->parent->h,arg,1);
-  self->length=grib_arguments_get_long(a->parent->h,arg,2);
-  self->scale=grib_arguments_get_long(a->parent->h,arg,3);
-  if (!self->scale) self->scale=1;
+    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);
+    self->scale=grib_arguments_get_long(grib_handle_of_accessor(a),arg,3);
+    if (!self->scale) self->scale=1;
 
-  a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
-  a->length=0;
+    a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
+    a->length=0;
 }
 
 static void post_init(grib_accessor* a )
 {
-  return;
+    return;
 }
 
-static int value_count(grib_accessor* a,long* count){
-  grib_accessor_to_double* self=(grib_accessor_to_double*)a;
-  size_t size=0;
+static int value_count(grib_accessor* a,long* count)
+{
+    grib_accessor_to_double* self=(grib_accessor_to_double*)a;
+    size_t size=0;
 
-  int err=grib_get_size(a->parent->h, self->key,&size);
-  *count=size;
+    int err=grib_get_size(grib_handle_of_accessor(a), self->key,&size);
+    *count=size;
 
-  return err;
+    return err;
 }
 
-static size_t string_length(grib_accessor* a){
-  grib_accessor_to_double* self=(grib_accessor_to_double*)a;
-  size_t size=0;
+static size_t string_length(grib_accessor* a)
+{
+    grib_accessor_to_double* self=(grib_accessor_to_double*)a;
+    size_t size=0;
 
-  if (self->length) return self->length;
+    if (self->length) return self->length;
 
-  _grib_get_string_length(a,&size);
-  return size;
+    _grib_get_string_length(a,&size);
+    return size;
 }
 
 static void dump(grib_accessor* a, grib_dumper* dumper)
 {
-  grib_dump_string(dumper,a,NULL);
+    grib_dump_string(dumper,a,NULL);
 }
 
-static int  get_native_type(grib_accessor* a){
-  return GRIB_TYPE_LONG;
+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_double* self=(grib_accessor_to_double*)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->parent->h->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 );
-    len[0] = 0;
-    return GRIB_ARRAY_TOO_SMALL;
-  }
-
-  err=grib_get_string(a->parent->h,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;
+    int err=0;
+    grib_accessor_to_double* self=(grib_accessor_to_double*)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 (%d) for %s it contains %d 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;
+    return GRIB_NOT_IMPLEMENTED;
 }
 
-static int pack_long(grib_accessor* a, const long*  v, size_t *len){
-  grib_context_log(a->parent->h->context,GRIB_LOG_ERROR, " Should not pack %s as long", a->name);
-  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 long", a->name);
+    return GRIB_NOT_IMPLEMENTED;
 }
 
-static int pack_double(grib_accessor* a, const double*v, size_t *len){
-  grib_context_log(a->parent->h->context,GRIB_LOG_ERROR, " Should not pack %s  as double", 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 double", a->name);
+    return GRIB_NOT_IMPLEMENTED;
 }
 
+static int  unpack_long   (grib_accessor* a, long*  v, size_t *len)
+{
+    grib_accessor_to_double* self=(grib_accessor_to_double*)a;
+    char val[1024]={0,};
+    size_t l = sizeof(val);
+    char  *last = NULL;
+    int err=grib_unpack_string (a , val, &l);
 
-static int  unpack_long   (grib_accessor* a, long*  v, size_t *len){
-
-  grib_accessor_to_double* self=(grib_accessor_to_double*)a;
-  char val[1024]={0,};
-  size_t l = sizeof(val);
-  char  *last = NULL;
-  int err=grib_unpack_string (a , val, &l);
-
-  if (err) return err;
-
-  *v = strtol(val,&last,10);
-  if (*last) {err=GRIB_WRONG_CONVERSION;}
-  *v/=self->scale;
+    if (err) return err;
 
-  return err;
+    *v = strtol(val,&last,10);
+    if (*last) {err=GRIB_WRONG_CONVERSION;}
+    *v/=self->scale;
 
+    return err;
 }
 
-static int  unpack_double   (grib_accessor* a, double*  v, size_t *len){
-
-  grib_accessor_to_double* self=(grib_accessor_to_double*)a;
-  char val[1024]={0,};
-  size_t l = sizeof(val);
-  char  *last = NULL;
-  int err=grib_unpack_string (a , val, &l);
+static int  unpack_double   (grib_accessor* a, double*  v, size_t *len)
+{
+    grib_accessor_to_double* self=(grib_accessor_to_double*)a;
+    char val[1024]={0,};
+    size_t l = sizeof(val);
+    char  *last = NULL;
+    int err=grib_unpack_string (a , val, &l);
 
-  if (err) return err;
+    if (err) return err;
 
-  *v = strtod(val,&last);
-  if (*last) {err=GRIB_WRONG_CONVERSION;}
-  *v/=self->scale;
+    *v = strtod(val,&last);
+    if (*last) {err=GRIB_WRONG_CONVERSION;}
+    *v/=self->scale;
 
-  return err;
+    return err;
 }
 
 static long next_offset(grib_accessor* a)
 {
-  return a->offset+a->length;
+    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;
+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;
+    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(a,&count);
+    if (err) return err;
+    alen=count;
 
-  err=grib_value_count(b,&count);
-  if (err) return err;
-  blen=count;
+    err=grib_value_count(b,&count);
+    if (err) return err;
+    blen=count;
 
-  if (alen != blen) return GRIB_COUNT_MISMATCH;
+    if (alen != blen) return GRIB_COUNT_MISMATCH;
 
-  aval=(char*)grib_context_malloc(a->parent->h->context,alen*sizeof(char));
-  bval=(char*)grib_context_malloc(b->parent->h->context,blen*sizeof(char));
+    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);
+    grib_unpack_string(a,aval,&alen);
+    grib_unpack_string(b,bval,&blen);
 
-  retval = GRIB_SUCCESS;
-  if (strcmp(aval,bval)) retval = GRIB_STRING_VALUE_MISMATCH;
+    retval = GRIB_SUCCESS;
+    if (strcmp(aval,bval)) retval = GRIB_STRING_VALUE_MISMATCH;
 
-  grib_context_free(a->parent->h->context,aval);
-  grib_context_free(b->parent->h->context,bval);
+    grib_context_free(a->context,aval);
+    grib_context_free(b->context,bval);
 
-  return retval;
+    return retval;
 }
-
diff --git a/src/grib_accessor_class_to_integer.c b/src/grib_accessor_class_to_integer.c
index f76c52b..71b7d3f 100644
--- a/src/grib_accessor_class_to_integer.c
+++ b/src/grib_accessor_class_to_integer.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -110,6 +110,7 @@ static grib_accessor_class _grib_accessor_class_to_integer = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -137,167 +138,170 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* 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;
+    grib_accessor_to_integer* self=(grib_accessor_to_integer*)a;
 
-  self->key=grib_arguments_get_name(a->parent->h,arg,0);
-  self->start=grib_arguments_get_long(a->parent->h,arg,1);
-  self->length=grib_arguments_get_long(a->parent->h,arg,2);
+    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;
+    a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
+    a->length=0;
 }
 
 static void post_init(grib_accessor* a )
 {
-  return;
+    return;
 }
 
-static int value_count(grib_accessor* a,long* count){
-  grib_accessor_to_integer* self=(grib_accessor_to_integer*)a;
-  size_t size=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(a->parent->h, self->key,&size);
-  *count=size;
+    int err=grib_get_size(grib_handle_of_accessor(a), self->key,&size);
+    *count=size;
 
-  return err;
+    return err;
 }
 
-static size_t string_length(grib_accessor* a){
-  grib_accessor_to_integer* self=(grib_accessor_to_integer*)a;
-  size_t size=0;
+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;
+    if (self->length) return self->length;
 
-  _grib_get_string_length(a,&size);
-  return size;
+    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);
+    grib_dump_long(dumper,a,NULL);
 }
 
-static int  get_native_type(grib_accessor* a){
-  return GRIB_TYPE_LONG;
+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->parent->h->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 );
-    len[0] = 0;
-    return GRIB_ARRAY_TOO_SMALL;
-  }
-
-  err=grib_get_string(a->parent->h,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;
+    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 (%d) for %s it contains %d 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;
+    return GRIB_NOT_IMPLEMENTED;
 }
 
-static int pack_long(grib_accessor* a, const long*  v, size_t *len){
-  grib_context_log(a->parent->h->context,GRIB_LOG_ERROR, " Should not pack %s as long", a->name);
-  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 long", a->name);
+    return GRIB_NOT_IMPLEMENTED;
 }
 
-static int pack_double(grib_accessor* a, const double*v, size_t *len){
-  grib_context_log(a->parent->h->context,GRIB_LOG_ERROR, " Should not pack %s  as double", 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 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);
 
-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;} */
+    if (err) return err;
 
-  return err;
+    *v = strtol(val,&last,10);
+    /* if (*last) {err=GRIB_WRONG_CONVERSION;} */
 
+    return err;
 }
 
-static int unpack_double (grib_accessor* a, double *v, size_t *len){
-  size_t l=1;
-  long val;
-  int err = unpack_long (a , &val, &l);
+static int unpack_double (grib_accessor* a, double *v, size_t *len)
+{
+    size_t l=1;
+    long val;
+    int err = unpack_long (a , &val, &l);
 
-  *v = (double)val;
-  return err;
+    *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;
 
-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;
+    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(a,&count);
+    if (err) return err;
+    alen=count;
 
-  err=grib_value_count(b,&count);
-  if (err) return err;
-  blen=count;
+    err=grib_value_count(b,&count);
+    if (err) return err;
+    blen=count;
 
-  if (alen != blen) return GRIB_COUNT_MISMATCH;
+    if (alen != blen) return GRIB_COUNT_MISMATCH;
 
-  aval=(char*)grib_context_malloc(a->parent->h->context,alen*sizeof(char));
-  bval=(char*)grib_context_malloc(b->parent->h->context,blen*sizeof(char));
+    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);
+    grib_unpack_string(a,aval,&alen);
+    grib_unpack_string(b,bval,&blen);
 
-  retval = GRIB_SUCCESS;
-  if (strcmp(aval,bval)) retval = GRIB_STRING_VALUE_MISMATCH;
+    retval = GRIB_SUCCESS;
+    if (strcmp(aval,bval)) retval = GRIB_STRING_VALUE_MISMATCH;
 
-  grib_context_free(a->parent->h->context,aval);
-  grib_context_free(b->parent->h->context,bval);
+    grib_context_free(a->context,aval);
+    grib_context_free(b->context,bval);
 
-  return retval;
+    return retval;
 }
 
 static long next_offset(grib_accessor* a)
 {
-  return a->offset+a->length;
+    return a->offset+a->length;
 }
-
diff --git a/src/grib_accessor_class_to_string.c b/src/grib_accessor_class_to_string.c
index faa27c3..06a4546 100644
--- a/src/grib_accessor_class_to_string.c
+++ b/src/grib_accessor_class_to_string.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -110,6 +110,7 @@ static grib_accessor_class _grib_accessor_class_to_string = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -137,167 +138,170 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
 
 static void init(grib_accessor* a, const long len , grib_arguments* arg )
 {
-  grib_accessor_to_string* self=(grib_accessor_to_string*)a;
+    grib_accessor_to_string* self=(grib_accessor_to_string*)a;
 
-  self->key=grib_arguments_get_name(a->parent->h,arg,0);
-  self->start=grib_arguments_get_long(a->parent->h,arg,1);
-  self->length=grib_arguments_get_long(a->parent->h,arg,2);
+    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;
+    a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
+    a->length=0;
 }
 
 static void post_init(grib_accessor* a )
 {
-  return;
+    return;
 }
 
-static int value_count(grib_accessor* a,long* count){
-  grib_accessor_to_string* self=(grib_accessor_to_string*)a;
-  size_t size=0;
+static int value_count(grib_accessor* a,long* count)
+{
+    grib_accessor_to_string* self=(grib_accessor_to_string*)a;
+    size_t size=0;
 
-  int err=grib_get_size(a->parent->h, self->key,&size);
-  *count=size;
+    int err=grib_get_size(grib_handle_of_accessor(a), self->key,&size);
+    *count=size;
 
-  return err;
+    return err;
 }
 
-static size_t string_length(grib_accessor* a){
-  grib_accessor_to_string* self=(grib_accessor_to_string*)a;
-  size_t size=0;
+static size_t string_length(grib_accessor* a)
+{
+    grib_accessor_to_string* self=(grib_accessor_to_string*)a;
+    size_t size=0;
 
-  if (self->length) return self->length;
+    if (self->length) return self->length;
 
-  _grib_get_string_length(a,&size);
-  return size;
+    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_string(dumper,a,NULL);
+    grib_dump_string(dumper,a,NULL);
 }
 
-static int  get_native_type(grib_accessor* a){
-  return GRIB_TYPE_STRING;
+static int  get_native_type(grib_accessor* a)
+{
+    return GRIB_TYPE_STRING;
 }
 
 static int unpack_string(grib_accessor* a, char* val, size_t *len)
 {
-  int err=0;
-  grib_accessor_to_string* self=(grib_accessor_to_string*)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->parent->h->context, GRIB_LOG_ERROR, "unpack_string: Wrong size (%d) for %s it contains %d values ", len[0], a->name , a->length+1 );
-    len[0] = 0;
-    return GRIB_ARRAY_TOO_SMALL;
-  }
-
-  err=grib_get_string(a->parent->h,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;
+    int err=0;
+    grib_accessor_to_string* self=(grib_accessor_to_string*)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 (%d) for %s it contains %d 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;
+    return GRIB_NOT_IMPLEMENTED;
 }
 
-static int pack_long(grib_accessor* a, const long*  v, size_t *len){
-  grib_context_log(a->parent->h->context,GRIB_LOG_ERROR, " Should not pack %s as long", a->name);
-  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 long", a->name);
+    return GRIB_NOT_IMPLEMENTED;
 }
 
-static int pack_double(grib_accessor* a, const double*v, size_t *len){
-  grib_context_log(a->parent->h->context,GRIB_LOG_ERROR, " Should not pack %s  as double", 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 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);
 
-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;}
+    if (err) return err;
 
-  return err;
+    *v = strtol(val,&last,10);
+    if (*last) {err=GRIB_WRONG_CONVERSION;}
 
+    return err;
 }
 
-static int unpack_double (grib_accessor* a, double *v, size_t *len){
-  size_t l=1;
-  long val;
-  int err = unpack_long (a , &val, &l);
+static int unpack_double (grib_accessor* a, double *v, size_t *len)
+{
+    size_t l=1;
+    long val;
+    int err = unpack_long (a , &val, &l);
 
-  *v = (double)val;
-  return err;
+    *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;
 
-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;
+    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(a,&count);
+    if (err) return err;
+    alen=count;
 
-  err=grib_value_count(b,&count);
-  if (err) return err;
-  blen=count;
+    err=grib_value_count(b,&count);
+    if (err) return err;
+    blen=count;
 
-  if (alen != blen) return GRIB_COUNT_MISMATCH;
+    if (alen != blen) return GRIB_COUNT_MISMATCH;
 
-  aval=(char*)grib_context_malloc(a->parent->h->context,alen*sizeof(char));
-  bval=(char*)grib_context_malloc(b->parent->h->context,blen*sizeof(char));
+    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);
+    grib_unpack_string(a,aval,&alen);
+    grib_unpack_string(b,bval,&blen);
 
-  retval = GRIB_SUCCESS;
-  if (strcmp(aval,bval)) retval = GRIB_STRING_VALUE_MISMATCH;
+    retval = GRIB_SUCCESS;
+    if (strcmp(aval,bval)) retval = GRIB_STRING_VALUE_MISMATCH;
 
-  grib_context_free(a->parent->h->context,aval);
-  grib_context_free(b->parent->h->context,bval);
+    grib_context_free(a->context,aval);
+    grib_context_free(b->context,bval);
 
-  return retval;
+    return retval;
 }
 
 static long next_offset(grib_accessor* a)
 {
-  return a->offset+a->length;
+    return a->offset+a->length;
 }
-
diff --git a/src/grib_accessor_class_transient.c b/src/grib_accessor_class_transient.c
index a8d6dde..8abdbcc 100644
--- a/src/grib_accessor_class_transient.c
+++ b/src/grib_accessor_class_transient.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -84,6 +84,7 @@ static grib_accessor_class _grib_accessor_class_transient = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -123,6 +124,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
diff --git a/src/grib_accessor_class_transient_darray.c b/src/grib_accessor_class_transient_darray.c
new file mode 100644
index 0000000..bf297e4
--- /dev/null
+++ b/src/grib_accessor_class_transient_darray.c
@@ -0,0 +1,284 @@
+/*
+ * Copyright 2005-2016 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 <limits.h>
+/*
+   This is used by make_class.pl
+
+   START_CLASS_DEF
+   CLASS      = accessor
+   SUPER      = grib_accessor_class_gen
+   IMPLEMENTS = unpack_double;pack_double
+   IMPLEMENTS = unpack_long;pack_long;destroy
+   IMPLEMENTS = init;dump;value_count
+   IMPLEMENTS = compare;get_native_type
+   MEMBERS=grib_darray* arr
+   MEMBERS=int type;
+   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 unpack_double(grib_accessor*, double* val,size_t *len);
+static int unpack_long(grib_accessor*, long* val,size_t *len);
+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 void init_class(grib_accessor_class*);
+static int compare(grib_accessor*, grib_accessor*);
+
+typedef struct grib_accessor_transient_darray {
+    grib_accessor          att;
+/* Members defined in gen */
+/* Members defined in transient_darray */
+	grib_darray* arr;
+	int type;
+} grib_accessor_transient_darray;
+
+extern grib_accessor_class* grib_accessor_class_gen;
+
+static grib_accessor_class _grib_accessor_class_transient_darray = {
+    &grib_accessor_class_gen,                      /* super                     */
+    "transient_darray",                      /* name                      */
+    sizeof(grib_accessor_transient_darray),  /* size                      */
+    0,                           /* inited */
+    &init_class,                 /* init_class */
+    &init,                       /* init                      */
+    0,                  /* post_init                      */
+    &destroy,                    /* free mem                       */
+    &dump,                       /* describes himself         */
+    0,                /* get length of section     */
+    0,              /* 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,               /* grib_pack procedures long      */
+    0,                 /* grib_pack procedures long      */
+    &pack_long,                  /* grib_pack procedures long      */
+    &unpack_long,                /* grib_unpack procedures long    */
+    &pack_double,                /* grib_pack procedures double    */
+    &unpack_double,              /* grib_unpack procedures double  */
+    0,                /* grib_pack procedures string    */
+    0,              /* grib_unpack procedures string  */
+    0,          /* grib_pack array procedures string    */
+    0,        /* grib_unpack array procedures string  */
+    0,                 /* grib_pack procedures bytes     */
+    0,               /* grib_unpack procedures 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          */
+    0,     /* unpack a subarray         */
+    0,              		/* clear          */
+    0,               		/* clone accessor          */
+};
+
+
+grib_accessor_class* grib_accessor_class_transient_darray = &_grib_accessor_class_transient_darray;
+
+
+static void init_class(grib_accessor_class* c)
+{
+	c->next_offset	=	(*(c->super))->next_offset;
+	c->string_length	=	(*(c->super))->string_length;
+	c->byte_count	=	(*(c->super))->byte_count;
+	c->byte_offset	=	(*(c->super))->byte_offset;
+	c->sub_section	=	(*(c->super))->sub_section;
+	c->pack_missing	=	(*(c->super))->pack_missing;
+	c->is_missing	=	(*(c->super))->is_missing;
+	c->pack_string	=	(*(c->super))->pack_string;
+	c->unpack_string	=	(*(c->super))->unpack_string;
+	c->pack_string_array	=	(*(c->super))->pack_string_array;
+	c->unpack_string_array	=	(*(c->super))->unpack_string_array;
+	c->pack_bytes	=	(*(c->super))->pack_bytes;
+	c->unpack_bytes	=	(*(c->super))->unpack_bytes;
+	c->pack_expression	=	(*(c->super))->pack_expression;
+	c->notify_change	=	(*(c->super))->notify_change;
+	c->update_size	=	(*(c->super))->update_size;
+	c->preferred_size	=	(*(c->super))->preferred_size;
+	c->resize	=	(*(c->super))->resize;
+	c->nearest_smaller_value	=	(*(c->super))->nearest_smaller_value;
+	c->next	=	(*(c->super))->next;
+	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
+	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
+	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
+}
+
+/* END_CLASS_IMP */
+
+static void init(grib_accessor* a, const long length , grib_arguments* args )
+{
+
+    grib_accessor_transient_darray *self = (grib_accessor_transient_darray*)a;
+    self->arr=NULL;
+    self->type=GRIB_TYPE_DOUBLE;
+    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++)
+      grib_darray_push(a->context,self->arr,val[i]);
+
+    return GRIB_SUCCESS;
+}
+
+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++)
+      grib_darray_push(a->context,self->arr,(double)val[i]);
+
+    return GRIB_SUCCESS;
+}
+
+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;
+
+    value_count(a,&count);
+
+    if(*len < count)
+    {
+        grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s (setting %d, required %d) ", a->name , *len,count );
+        return GRIB_ARRAY_TOO_SMALL;
+    }
+
+    *len=count;
+    for (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;
+
+    value_count(a,&count);
+
+    if(*len < count)
+    {
+        grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s (setting %d, required %d) ", a->name , *len,count );
+        return GRIB_ARRAY_TOO_SMALL;
+    }
+
+    *len=count;
+    for (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;
+    if (self->arr) grib_darray_delete(a->context,self->arr);
+}
+
+static int value_count(grib_accessor* a,long* count)
+{
+    grib_accessor_transient_darray *self = (grib_accessor_transient_darray*)a;
+    if (self->arr) *count=grib_darray_used_size(self->arr);
+    else *count=0;
+
+    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;
+    return self->type;
+}
+
diff --git a/src/grib_accessor_class_uint16.c b/src/grib_accessor_class_uint16.c
index 8ecdfd1..2e4891b 100644
--- a/src/grib_accessor_class_uint16.c
+++ b/src/grib_accessor_class_uint16.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -84,6 +84,7 @@ static grib_accessor_class _grib_accessor_class_uint16 = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -121,6 +122,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -129,11 +131,11 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
     long value = 0;
     /*long pos = a->offset;*/
-    /*unsigned char* data = a->parent->h->buffer->data;*/
+    /*unsigned char* data = grib_handle_of_accessor(a)->buffer->data;*/
 
     if(*len < 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 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_uint16_little_endian.c b/src/grib_accessor_class_uint16_little_endian.c
index c733831..a4767bd 100644
--- a/src/grib_accessor_class_uint16_little_endian.c
+++ b/src/grib_accessor_class_uint16_little_endian.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -84,6 +84,7 @@ static grib_accessor_class _grib_accessor_class_uint16_little_endian = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -121,6 +122,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -129,11 +131,11 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
     long value = 0;
     /*long pos = a->offset;*/
-    /*unsigned char* data = a->parent->h->buffer->data;*/
+    /*unsigned char* data = grib_handle_of_accessor(a)->buffer->data;*/
 
     if(*len < 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 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.c b/src/grib_accessor_class_uint32.c
index 2193b79..e474c5c 100644
--- a/src/grib_accessor_class_uint32.c
+++ b/src/grib_accessor_class_uint32.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -86,6 +86,7 @@ static grib_accessor_class _grib_accessor_class_uint32 = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -122,6 +123,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -130,11 +132,11 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
     long value = 0;
     /* long pos = a->offset; */
-    /* unsigned char* data = a->parent->h->buffer->data; */
+    /* unsigned char* data = grib_handle_of_accessor(a)->buffer->data; */
 
     if(*len < 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 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.c b/src/grib_accessor_class_uint32_little_endian.c
index 8f47d41..e2183e5 100644
--- a/src/grib_accessor_class_uint32_little_endian.c
+++ b/src/grib_accessor_class_uint32_little_endian.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -86,6 +86,7 @@ static grib_accessor_class _grib_accessor_class_uint32_little_endian = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -122,6 +123,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -130,11 +132,11 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
     long value = 0;
     /* long pos = a->offset; */
-    /* unsigned char* data = a->parent->h->buffer->data; */
+    /* unsigned char* data = grib_handle_of_accessor(a)->buffer->data; */
 
     if(*len < 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 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.c b/src/grib_accessor_class_uint64.c
index fedb47d..9343f8d 100644
--- a/src/grib_accessor_class_uint64.c
+++ b/src/grib_accessor_class_uint64.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -86,6 +86,7 @@ static grib_accessor_class _grib_accessor_class_uint64 = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -122,6 +123,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -130,13 +132,13 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
     long value = 0;
     long pos = a->offset;
-    unsigned char* data = a->parent->h->buffer->data;
+    unsigned char* data = grib_handle_of_accessor(a)->buffer->data;
     unsigned long long result = 0, tmp;
     int i;
 
     if(*len < 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 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;
     }
@@ -151,7 +153,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 
     /* Result does not fit in long */
     if(tmp != result) {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Value for %s cannot be decoded as a 'long' (%llu)", a->name , result );
+        grib_context_log(a->context, GRIB_LOG_ERROR, "Value for %s cannot be decoded as a 'long' (%llu)", a->name , result );
         return GRIB_DECODING_ERROR;
     }
 
diff --git a/src/grib_accessor_class_uint64_little_endian.c b/src/grib_accessor_class_uint64_little_endian.c
index ff6e6ab..2e9846f 100644
--- a/src/grib_accessor_class_uint64_little_endian.c
+++ b/src/grib_accessor_class_uint64_little_endian.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -86,6 +86,7 @@ static grib_accessor_class _grib_accessor_class_uint64_little_endian = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -122,6 +123,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -130,13 +132,13 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
       long value = 0;
     long pos = a->offset;
-    unsigned char* data = a->parent->h->buffer->data;
+    unsigned char* data = grib_handle_of_accessor(a)->buffer->data;
     unsigned long long result = 0, tmp;
     int i;
 
     if(*len < 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 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;
     }
@@ -151,7 +153,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 
     /* Result does not fit in long */
     if(tmp != result) {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Value for %s cannot be decoded as a 'long' (%llu)", a->name , result );
+        grib_context_log(a->context, GRIB_LOG_ERROR, "Value for %s cannot be decoded as a 'long' (%llu)", a->name , result );
         return GRIB_DECODING_ERROR;
     }
 
diff --git a/src/grib_accessor_class_uint8.c b/src/grib_accessor_class_uint8.c
index aa60b80..e0c18b9 100644
--- a/src/grib_accessor_class_uint8.c
+++ b/src/grib_accessor_class_uint8.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -86,6 +86,7 @@ static grib_accessor_class _grib_accessor_class_uint8 = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -122,6 +123,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -130,11 +132,11 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
     long value = 0;
     long pos = a->offset;
-    unsigned char* data = a->parent->h->buffer->data;
+    unsigned char* data = grib_handle_of_accessor(a)->buffer->data;
 
     if(*len < 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 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_unexpanded_descriptors.c b/src/grib_accessor_class_unexpanded_descriptors.c
index dfc57ea..f32ca2c 100644
--- a/src/grib_accessor_class_unexpanded_descriptors.c
+++ b/src/grib_accessor_class_unexpanded_descriptors.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -18,11 +18,11 @@
    IMPLEMENTS = unpack_long;pack_long
    IMPLEMENTS = init;dump
    IMPLEMENTS = next_offset
-   IMPLEMENTS = byte_count
    IMPLEMENTS = value_count
    IMPLEMENTS = byte_offset
    IMPLEMENTS = update_size
-   MEMBERS    = const char* numberOfUnexpandedDescriptors
+   MEMBERS    = grib_accessor* unexpandedDescriptorsEncoded
+   MEMBERS    = const char* createNewData
 
    END_CLASS_DEF
 
@@ -40,7 +40,6 @@ 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 long byte_count(grib_accessor*);
 static long byte_offset(grib_accessor*);
 static long next_offset(grib_accessor*);
 static int value_count(grib_accessor*,long*);
@@ -54,7 +53,8 @@ typedef struct grib_accessor_unexpanded_descriptors {
 /* Members defined in gen */
 /* Members defined in long */
 /* Members defined in unexpanded_descriptors */
-	const char* numberOfUnexpandedDescriptors;
+	grib_accessor* unexpandedDescriptorsEncoded;
+	const char* createNewData;
 } grib_accessor_unexpanded_descriptors;
 
 extern grib_accessor_class* grib_accessor_class_long;
@@ -72,7 +72,7 @@ static grib_accessor_class _grib_accessor_class_unexpanded_descriptors = {
     &next_offset,                /* get length of section     */
     0,              /* get length of string      */
     &value_count,                /* get number of values      */
-    &byte_count,                 /* get number of bytes      */
+    0,                 /* get number of bytes      */
     &byte_offset,                /* get offset to bytes           */
     0,            /* get native type               */
     0,                /* get sub_section                */
@@ -99,6 +99,7 @@ static grib_accessor_class _grib_accessor_class_unexpanded_descriptors = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -108,6 +109,7 @@ grib_accessor_class* grib_accessor_class_unexpanded_descriptors = &_grib_accesso
 static void init_class(grib_accessor_class* c)
 {
 	c->string_length	=	(*(c->super))->string_length;
+	c->byte_count	=	(*(c->super))->byte_count;
 	c->get_native_type	=	(*(c->super))->get_native_type;
 	c->sub_section	=	(*(c->super))->sub_section;
 	c->pack_missing	=	(*(c->super))->pack_missing;
@@ -130,125 +132,124 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
 
-
-static long compute_byte_count(grib_accessor* a){
-  grib_accessor_unexpanded_descriptors* self = (grib_accessor_unexpanded_descriptors*)a;
-  long numberOfUnexpandedDescriptors;
-  int ret=0;
-
-  ret=grib_get_long(a->parent->h,self->numberOfUnexpandedDescriptors,&numberOfUnexpandedDescriptors);
-  if (ret) {
-		grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
-			"%s unable to get %s to compute size",a->name,self->numberOfUnexpandedDescriptors);
-		return 0;
-  }
-
-  return 2*numberOfUnexpandedDescriptors;
-}
-
-
 static void init(grib_accessor* a, const long len , grib_arguments* args )
 {
-	grib_accessor_unexpanded_descriptors* self = (grib_accessor_unexpanded_descriptors*)a;
-	int n=0;
-	self->numberOfUnexpandedDescriptors=grib_arguments_get_name(a->parent->h,args,n++);
-	a->length = compute_byte_count(a);
+    grib_accessor_unexpanded_descriptors* self = (grib_accessor_unexpanded_descriptors*)a;
+    int n=0;
+    self->unexpandedDescriptorsEncoded=grib_find_accessor(grib_handle_of_accessor(a),grib_arguments_get_name(grib_handle_of_accessor(a),args,n++));
+    self->createNewData=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+    a->length = 0;
 }
 
 static void dump(grib_accessor* a, grib_dumper* dumper)
 {
-  grib_dump_long(dumper,a,NULL);
+    grib_dump_long(dumper,a,NULL);
 }
 
 static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
 {
-	grib_accessor_unexpanded_descriptors* self = (grib_accessor_unexpanded_descriptors*)a;
-	int ret=0;
-	long pos = a->offset*8;
-	long rlen =0;
-	long numberOfUnexpandedDescriptors = 0;
-	long f,x,y;
-  long *v=val;
-  int i;
-
-  ret=value_count(a,&rlen);
-  if (ret) return ret;
-
-  if (rlen==0) {
-    grib_context_log(a->parent->h->context,GRIB_LOG_FATAL,
-        "No descriptors in section 3. Malformed message.");
-    return GRIB_MESSAGE_MALFORMED;
-  }
-
-	if(*len < rlen)
-	{
-		grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, 
-			" wrong size (%ld) for %s it contains %d values ",*len, a->name , rlen);
-		*len = 0;
-		return GRIB_ARRAY_TOO_SMALL;
-	}
-
-	ret=grib_get_long(a->parent->h,self->numberOfUnexpandedDescriptors,&numberOfUnexpandedDescriptors);
-	if (ret) return ret;
-
-  for (i=0;i<rlen;i++) {
-    f=grib_decode_unsigned_long(a->parent->h->buffer->data,&pos,2);
-    x=grib_decode_unsigned_long(a->parent->h->buffer->data,&pos,6);
-    y=grib_decode_unsigned_long(a->parent->h->buffer->data,&pos,8);
-    *v++=f*100000+x*1000+y;
-  }
-
-	*len = rlen;
-
-	return GRIB_SUCCESS;
+    grib_accessor_unexpanded_descriptors* self = (grib_accessor_unexpanded_descriptors*)a;
+    int ret=0;
+    long pos = 0;
+    long rlen =0;
+    long f,x,y;
+    long *v=val;
+    int i;
+
+    pos=accessor_raw_get_offset(self->unexpandedDescriptorsEncoded)*8;
+
+    ret=value_count(a,&rlen);
+    if (ret) return ret;
+
+    if (rlen==0) {
+        grib_context_log(a->context,GRIB_LOG_FATAL,
+                "No descriptors in section 3. Malformed message.");
+        return GRIB_MESSAGE_MALFORMED;
+    }
+
+    if(*len < rlen)
+    {
+        /* grib_context_log(a->context, GRIB_LOG_ERROR, */
+                /* " wrong size (%ld) for %s it contains %d values ",*len, a->name , rlen); */
+        *len = 0;
+        return GRIB_ARRAY_TOO_SMALL;
+    }
+
+    for (i=0;i<rlen;i++) {
+        f=grib_decode_unsigned_long(grib_handle_of_accessor(a)->buffer->data,&pos,2);
+        x=grib_decode_unsigned_long(grib_handle_of_accessor(a)->buffer->data,&pos,6);
+        y=grib_decode_unsigned_long(grib_handle_of_accessor(a)->buffer->data,&pos,8);
+        *v++=f*100000+x*1000+y;
+    }
+    *len = rlen;
+    return GRIB_SUCCESS;
 }
 
 static int    pack_long   (grib_accessor* a, const long* val, size_t *len)
 {
-	int ret=0,i;
-	long pos = a->offset*8;
-	unsigned long f,x,y;
-
-        for (i=0;i<*len;i++) {
-	    f=val[i]/100000;
-	    x=(val[i]%100000)/1000;
-	    y=(val[i]%100000)%1000;
-            printf("f=%ld x=%ld y=%ld new=%ld\n",f,x,y,*val);
-            grib_encode_unsigned_longb(a->parent->h->buffer->data,f,&pos,2);
-            grib_encode_unsigned_longb(a->parent->h->buffer->data,x,&pos,6);
-            grib_encode_unsigned_longb(a->parent->h->buffer->data,y,&pos,8);
-        }
-
-	return ret;
-
+    grib_accessor_unexpanded_descriptors* self = (grib_accessor_unexpanded_descriptors*)a;
+    int ret=0,i;
+    long pos = 0;
+    unsigned long f,x,y;
+    unsigned char* buf        = NULL;
+    grib_accessor* expanded=NULL;
+    size_t buflen=*len*2;
+    long createNewData=1;
+
+    grib_get_long(grib_handle_of_accessor(a),self->createNewData,&createNewData);
+
+    buf=(unsigned char*)grib_context_malloc_clear(a->context,buflen);
+
+    for (i=0;i<*len;i++) {
+        f=val[i]/100000;
+        x=(val[i]%100000)/1000;
+        y=(val[i]%100000)%1000;
+        grib_encode_unsigned_longb(buf,f,&pos,2);
+        grib_encode_unsigned_longb(buf,x,&pos,6);
+        grib_encode_unsigned_longb(buf,y,&pos,8);
+    }
+
+    grib_pack_bytes(self->unexpandedDescriptorsEncoded,buf,&buflen);
+    grib_context_free(grib_handle_of_accessor(a)->context,buf);
+
+    if (createNewData==0) return ret;
+
+    expanded=grib_find_accessor(grib_handle_of_accessor(a),"expandedCodes");
+    Assert(expanded!=NULL);
+    grib_accessor_class_expanded_descriptors_set_do_expand(expanded,1);
+    grib_set_long(grib_handle_of_accessor(a),"unpack",3);
+    grib_set_long(grib_handle_of_accessor(a),"unpack",1);
+
+    return ret;
 }
 
-static long byte_count(grib_accessor* a){
-	return a->length;
-}
 
 static int value_count(grib_accessor* a,long* numberOfUnexpandedDescriptors)
 {
-  grib_accessor_unexpanded_descriptors* self = (grib_accessor_unexpanded_descriptors*)a;
-  *numberOfUnexpandedDescriptors=0;
+    grib_accessor_unexpanded_descriptors* self = (grib_accessor_unexpanded_descriptors*)a;
+    long n=0;
+
+    grib_value_count(self->unexpandedDescriptorsEncoded,&n);
+    *numberOfUnexpandedDescriptors=n/2;
 
-  return grib_get_long(a->parent->h,self->numberOfUnexpandedDescriptors,numberOfUnexpandedDescriptors);
+    return 0;
 }
 
 static long byte_offset(grib_accessor* a){
-  return a->offset;
+    return a->offset;
 }
 
 static void update_size(grib_accessor* a,size_t s)
 {
-  a->length = s;
+    a->length = s;
 }
 
 static long next_offset(grib_accessor* a){
-  return byte_offset(a)+a->length;
+    return byte_offset(a)+a->length;
 }
 
diff --git a/src/grib_accessor_class_unpack_bufr_values.c b/src/grib_accessor_class_unpack_bufr_values.c
index 4db2f81..ef051e4 100644
--- a/src/grib_accessor_class_unpack_bufr_values.c
+++ b/src/grib_accessor_class_unpack_bufr_values.c
@@ -1,5 +1,5 @@
 /**
-* Copyright 2005-2015 ECMWF
+* Copyright 2005-2016 ECMWF
 *
 * Licensed under the GNU Lesser General Public License which
 * incorporates the terms and conditions of version 3 of the GNU
@@ -102,6 +102,7 @@ static grib_accessor_class _grib_accessor_class_unpack_bufr_values = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -132,6 +133,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -140,8 +142,8 @@ static void init(grib_accessor* a, const long len, grib_arguments* params) {
 
   char* key;
   grib_accessor_unpack_bufr_values* self = (grib_accessor_unpack_bufr_values*)a;
-  key = (char*)grib_arguments_get_name(a->parent->h,params,0);
-  self->data_accessor=grib_find_accessor(a->parent->h,key);
+  key = (char*)grib_arguments_get_name(grib_handle_of_accessor(a),params,0);
+  self->data_accessor=grib_find_accessor(grib_handle_of_accessor(a),key);
 
   a->length = 0;
 }
@@ -205,6 +207,7 @@ static int    pack_long   (grib_accessor* a, const long* val, size_t *len)
   grib_accessor* data=(grib_accessor*)self->data_accessor;
 
   if (*val==2) unpackMode=CODES_BUFR_UNPACK_FLAT;
+  if (*val==3) unpackMode=CODES_BUFR_NEW_DATA;
 
   accessor_bufr_data_array_set_unpackMode(data,unpackMode);
 
diff --git a/src/grib_accessor_class_unsigned.c b/src/grib_accessor_class_unsigned.c
index 51c1b82..e1f1351 100644
--- a/src/grib_accessor_class_unsigned.c
+++ b/src/grib_accessor_class_unsigned.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -102,6 +102,7 @@ static grib_accessor_class _grib_accessor_class_unsigned = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -132,6 +133,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -146,7 +148,7 @@ static void init(grib_accessor* a, const long len , grib_arguments* arg )
     if (a->flags & GRIB_ACCESSOR_FLAG_TRANSIENT) {
         a->length=0;
         if (!a->vvalue)
-            a->vvalue=(grib_virtual_value*)grib_context_malloc_clear(a->parent->h->context,sizeof(grib_virtual_value));
+            a->vvalue=(grib_virtual_value*)grib_context_malloc_clear(a->context,sizeof(grib_virtual_value));
         a->vvalue->type=GRIB_TYPE_LONG;
         a->vvalue->length=len;
     } else {
@@ -218,7 +220,7 @@ int pack_long_unsigned_helper(grib_accessor* a, const long* val, size_t *len, in
 
     if(*len < 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 );
+        grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 );
         len[0] = 0;
         return GRIB_ARRAY_TOO_SMALL;
     }
@@ -236,14 +238,14 @@ int pack_long_unsigned_helper(grib_accessor* a, const long* val, size_t *len, in
             /* See GRIB-23 and GRIB-262 */
             if (! value_is_missing(v) ) {
                 if (v < 0) {
-                    grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
+                    grib_context_log(a->context, GRIB_LOG_ERROR,
                             "Key \"%s\": Trying to encode a negative value of %ld for key of type unsigned\n", a->name, v);
                     return GRIB_ENCODING_ERROR;
                 }
                 if (nbits < 32) {
                     unsigned long maxval = (1 << nbits)-1;
                     if (v > maxval) {
-                        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
+                        grib_context_log(a->context, GRIB_LOG_ERROR,
                                 "Key \"%s\": Trying to encode value of %ld but the maximum allowable value is %ld (number of bits=%ld)\n",
                                 a->name, v, maxval, nbits);
                         return GRIB_ENCODING_ERROR;
@@ -253,9 +255,9 @@ int pack_long_unsigned_helper(grib_accessor* a, const long* val, size_t *len, in
         }
 
         off = a->offset*8;
-        ret = grib_encode_unsigned_long(a->parent->h->buffer->data, v, &off, self->nbytes*8);
+        ret = grib_encode_unsigned_long(grib_handle_of_accessor(a)->buffer->data, v, &off, self->nbytes*8);
         if (ret == GRIB_SUCCESS) len[0] = 1;
-        if (*len > 1)  grib_context_log(a->parent->h->context, GRIB_LOG_WARNING, "grib_accessor_unsigned : Trying to pack %d values in a scalar %s, packing first value",  *len, a->name  );
+        if (*len > 1)  grib_context_log(a->context, GRIB_LOG_WARNING, "grib_accessor_unsigned : Trying to pack %d values in a scalar %s, packing first value",  *len, a->name  );
         len[0] = 1;
         return ret;
     }
@@ -263,19 +265,19 @@ int pack_long_unsigned_helper(grib_accessor* a, const long* val, size_t *len, in
     /* TODO: We assume that there are no missing values if there are more that 1 value */
     buflen = *len*self->nbytes;
 
-    buf = (unsigned char*)grib_context_malloc(a->parent->h->context,buflen);
+    buf = (unsigned char*)grib_context_malloc(a->context,buflen);
 
     for(i=0; i < *len;i++)
         grib_encode_unsigned_long(buf, val[i] ,  &off,  self->nbytes*8);
 
-    ret = grib_set_long_internal(a->parent->h,grib_arguments_get_name(a->parent->h,self->arg,0),*len);
+    ret = grib_set_long_internal(grib_handle_of_accessor(a),grib_arguments_get_name(a->parent->h,self->arg,0),*len);
 
     if(ret == GRIB_SUCCESS)
         grib_buffer_replace(a, buf, buflen,1,1);
     else
         *len = 0;
 
-    grib_context_free(a->parent->h->context,buf);
+    grib_context_free(a->context,buf);
     return ret;
 }
 
@@ -295,7 +297,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 
     if(*len < rlen)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, " wrong size (%ld) for %s it contains %d values ",*len, a->name , rlen);
+        grib_context_log(a->context, GRIB_LOG_ERROR, " wrong size (%ld) for %s it contains %d values ",*len, a->name , rlen);
         *len = 0;
         return GRIB_ARRAY_TOO_SMALL;
     }
@@ -313,7 +315,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
     }
 
     for(i=0; i< rlen;i++){
-        val[i] = (long)grib_decode_unsigned_long(a->parent->h->buffer->data , &pos, self->nbytes*8);
+        val[i] = (long)grib_decode_unsigned_long(grib_handle_of_accessor(a)->buffer->data , &pos, self->nbytes*8);
         if(missing)
             if(val[i] == missing)
                 val[i] = GRIB_MISSING_LONG;
@@ -338,7 +340,7 @@ static int value_count(grib_accessor* a,long* len)
 {
     grib_accessor_unsigned* self = (grib_accessor_unsigned*)a;
     if(!self->arg) {*len=1;return 0;}
-    return grib_get_long_internal(a->parent->h,grib_arguments_get_name(a->parent->h,self->arg,0),len);
+    return grib_get_long_internal(grib_handle_of_accessor(a),grib_arguments_get_name(a->parent->h,self->arg,0),len);
 }
 
 static long byte_offset(grib_accessor* a)
@@ -368,7 +370,7 @@ static int is_missing(grib_accessor* a)
     }
 
     for (i=0;i<a->length;i++) {
-        if (a->parent->h->buffer->data[offset] != ff) {
+        if (grib_handle_of_accessor(a)->buffer->data[offset] != ff) {
             return 0;
         }
         offset++;
diff --git a/src/grib_accessor_class_unsigned_bits.c b/src/grib_accessor_class_unsigned_bits.c
index cef85da..66304c9 100644
--- a/src/grib_accessor_class_unsigned_bits.c
+++ b/src/grib_accessor_class_unsigned_bits.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -101,6 +101,7 @@ static grib_accessor_class _grib_accessor_class_unsigned_bits = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -132,6 +133,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -143,16 +145,16 @@ static long compute_byte_count(grib_accessor* a){
     long numberOfElements;
     int ret=0;
 
-    ret=grib_get_long(a->parent->h,self->numberOfBits,&numberOfBits);
+    ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfBits,&numberOfBits);
     if (ret) {
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+        grib_context_log(a->context,GRIB_LOG_ERROR,
                 "%s unable to get %s to compute size",a->name,self->numberOfBits);
         return 0;
     }
 
-    ret=grib_get_long(a->parent->h,self->numberOfElements,&numberOfElements);
+    ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfElements,&numberOfElements);
     if (ret) {
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+        grib_context_log(a->context,GRIB_LOG_ERROR,
                 "%s unable to get %s to compute size",a->name,self->numberOfElements);
         return 0;
     }
@@ -165,8 +167,8 @@ static void init(grib_accessor* a, const long len , grib_arguments* args )
 {
     grib_accessor_unsigned_bits* self = (grib_accessor_unsigned_bits*)a;
     int n=0;
-    self->numberOfBits=grib_arguments_get_name(a->parent->h,args,n++);
-    self->numberOfElements=grib_arguments_get_name(a->parent->h,args,n++);
+    self->numberOfBits=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
+    self->numberOfElements=grib_arguments_get_name(grib_handle_of_accessor(a),args,n++);
     a->length = compute_byte_count(a);
 }
 
@@ -188,13 +190,13 @@ static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
 
     if(*len < rlen)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR,
+        grib_context_log(a->context, GRIB_LOG_ERROR,
                 " wrong size (%ld) for %s it contains %d values ",*len, a->name , rlen);
         *len = 0;
         return GRIB_ARRAY_TOO_SMALL;
     }
 
-    ret=grib_get_long(a->parent->h,self->numberOfBits,&numberOfBits);
+    ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfBits,&numberOfBits);
     if (ret) return ret;
     if (numberOfBits==0) {
         int i;
@@ -202,7 +204,7 @@ static int    unpack_long   (grib_accessor* a, long* val, size_t *len)
         return GRIB_SUCCESS;
     }
 
-    grib_decode_long_array(a->parent->h->buffer->data,&pos,numberOfBits,rlen,val);
+    grib_decode_long_array(grib_handle_of_accessor(a)->buffer->data,&pos,numberOfBits,rlen,val);
 
     *len = rlen;
 
@@ -225,15 +227,15 @@ static int    pack_long   (grib_accessor* a, const long* val, size_t *len)
     /*
 	if(*len < rlen)
 	{
-		grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, 
+		grib_context_log(a->context, GRIB_LOG_ERROR, 
 			"Wrong size for %s it contains %d values ", a->name , rlen );
 		return GRIB_ARRAY_TOO_SMALL;
 	}
      */
     if (*len!=rlen)
-        ret=grib_set_long(a->parent->h,self->numberOfElements,*len);
+        ret=grib_set_long(grib_handle_of_accessor(a),self->numberOfElements,*len);
 
-    ret=grib_get_long(a->parent->h,self->numberOfBits,&numberOfBits);
+    ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfBits,&numberOfBits);
     if (ret) return ret;
     if (numberOfBits==0) {
         grib_buffer_replace(a, NULL, 0,1,1);
@@ -241,14 +243,14 @@ static int    pack_long   (grib_accessor* a, const long* val, size_t *len)
     }
 
     buflen = compute_byte_count(a);
-    buf = (unsigned char*)grib_context_malloc_clear(a->parent->h->context,buflen+sizeof(long));
+    buf = (unsigned char*)grib_context_malloc_clear(a->context,buflen+sizeof(long));
 
     for(i=0; i < *len;i++)
         grib_encode_unsigned_longb(buf, val[i] ,  &off,  numberOfBits);
 
     grib_buffer_replace(a, buf, buflen,1,1);
 
-    grib_context_free(a->parent->h->context,buf);
+    grib_context_free(a->context,buf);
 
     return ret;
 
@@ -264,9 +266,9 @@ static int value_count(grib_accessor* a,long* numberOfElements)
     int ret;
     *numberOfElements=0;
 
-    ret=grib_get_long(a->parent->h,self->numberOfElements,numberOfElements);
+    ret=grib_get_long(grib_handle_of_accessor(a),self->numberOfElements,numberOfElements);
     if (ret) {
-        grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,
+        grib_context_log(a->context,GRIB_LOG_ERROR,
                 "%s unable to get %s to compute size",a->name,self->numberOfElements);
     }
 
diff --git a/src/grib_accessor_class_validity_date.c b/src/grib_accessor_class_validity_date.c
index 5f9394e..0f623f4 100644
--- a/src/grib_accessor_class_validity_date.c
+++ b/src/grib_accessor_class_validity_date.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -101,6 +101,7 @@ static grib_accessor_class _grib_accessor_class_validity_date = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -138,6 +139,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -179,13 +181,13 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
     grib_accessor_validity_date* self = (grib_accessor_validity_date*)a;
     int n = 0;
 
-    self->date = grib_arguments_get_name(a->parent->h,c,n++);
-    self->time = grib_arguments_get_name(a->parent->h,c,n++);
-    self->step = grib_arguments_get_name(a->parent->h,c,n++);
-    self->stepUnits = grib_arguments_get_name(a->parent->h,c,n++);
-    self->year = grib_arguments_get_name(a->parent->h,c,n++);
-    self->month = grib_arguments_get_name(a->parent->h,c,n++);
-    self->day = grib_arguments_get_name(a->parent->h,c,n++);
+    self->date = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->time = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->step = 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->year = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->month = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->day = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 
     a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
 }
@@ -203,31 +205,29 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
     long time = 0;
     long step = 0;
     long stepUnits = 0;
-    long hours = 0, minutes=0, step_mins=0, tmp, tmp_hrs, tmp_mins;
+    long hours = 0, minutes=0, step_mins=0, tmp, tmp_hrs;
 
     if (self->year) {
         long year,month,day;
-        if ((ret=grib_get_long_internal(a->parent->h, self->year,&year))!=GRIB_SUCCESS) return ret;
-        if ((ret=grib_get_long_internal(a->parent->h, self->month,&month))!=GRIB_SUCCESS) return ret;
-        if ((ret=grib_get_long_internal(a->parent->h, self->day,&day))!=GRIB_SUCCESS) return ret;
+        if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->year,&year))!=GRIB_SUCCESS) return ret;
+        if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->month,&month))!=GRIB_SUCCESS) return ret;
+        if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->day,&day))!=GRIB_SUCCESS) return ret;
         *val=year*10000+month*100+day;
         return GRIB_SUCCESS;
     }
-    if ((ret=grib_get_long_internal(a->parent->h, self->date,&date))!=GRIB_SUCCESS) return ret;
-    if ((ret=grib_get_long_internal(a->parent->h, self->time,&time))!=GRIB_SUCCESS) return ret;
-    if ((ret=grib_get_long_internal(a->parent->h, self->step,&step))!=GRIB_SUCCESS) return ret;
+    if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->date,&date))!=GRIB_SUCCESS) return ret;
+    if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->time,&time))!=GRIB_SUCCESS) return ret;
+    if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->step,&step))!=GRIB_SUCCESS) return ret;
 
     if (self->stepUnits) {
-        if ((ret=grib_get_long_internal(a->parent->h, self->stepUnits,&stepUnits))!=GRIB_SUCCESS) return ret;
+        if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->stepUnits,&stepUnits))!=GRIB_SUCCESS) return ret;
         step_mins = convert_to_minutes(step, stepUnits);
-        Assert(step_mins>=0);
     }
 
     minutes = time % 100;
     hours = time / 100;
     tmp = minutes + step_mins; /* add the step to our minutes */
     tmp_hrs = tmp/60;          /* how many hours and mins is that? */
-    tmp_mins = tmp%60;
     hours += tmp_hrs;          /* increment hours */
 
     date = grib_date_to_julian (date);
@@ -236,6 +236,11 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
         date ++;
         hours -= 24;
     }
+    /* GRIB-29: Negative forecast time */
+    while(hours<0) {
+        date--;
+        hours += 24;
+    }
 
     if(*len < 1)
         return GRIB_ARRAY_TOO_SMALL;
diff --git a/src/grib_accessor_class_validity_time.c b/src/grib_accessor_class_validity_time.c
index d3cbbca..ad2ebec 100644
--- a/src/grib_accessor_class_validity_time.c
+++ b/src/grib_accessor_class_validity_time.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -99,6 +99,7 @@ static grib_accessor_class _grib_accessor_class_validity_time = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -136,6 +137,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -177,12 +179,12 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
     grib_accessor_validity_time* self = (grib_accessor_validity_time*)a;
     int n = 0;
 
-    self->date = grib_arguments_get_name(a->parent->h,c,n++);
-    self->time = grib_arguments_get_name(a->parent->h,c,n++);
-    self->step = grib_arguments_get_name(a->parent->h,c,n++);
-    self->stepUnits = grib_arguments_get_name(a->parent->h,c,n++);
-    self->hours = grib_arguments_get_name(a->parent->h,c,n++);
-    self->minutes = grib_arguments_get_name(a->parent->h,c,n++);
+    self->date = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->time = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->step = 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->hours = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+    self->minutes = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
 
     a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
 }
@@ -204,20 +206,19 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 
     if (self->hours) {
         long hours,minutes;
-        if ((ret=grib_get_long_internal(a->parent->h, self->hours,&hours))!=GRIB_SUCCESS) return ret;
-        if ((ret=grib_get_long_internal(a->parent->h, self->minutes,&minutes))!=GRIB_SUCCESS) return ret;
+        if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->hours,&hours))!=GRIB_SUCCESS) return ret;
+        if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->minutes,&minutes))!=GRIB_SUCCESS) return ret;
         *val=hours*100+minutes;
         return GRIB_SUCCESS;
     }
-    if ((ret=grib_get_long_internal(a->parent->h, self->date,&date))!=GRIB_SUCCESS) return ret;
-    if ((ret=grib_get_long_internal(a->parent->h, self->time,&time))!=GRIB_SUCCESS) return ret;
-    if ((ret=grib_get_long_internal(a->parent->h, self->step,&step))!=GRIB_SUCCESS) return ret;
+    if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->date,&date))!=GRIB_SUCCESS) return ret;
+    if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->time,&time))!=GRIB_SUCCESS) return ret;
+    if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->step,&step))!=GRIB_SUCCESS) return ret;
 
     /* Seconds will always be zero. So convert to minutes */
     if (self->stepUnits) {
-        if ((ret=grib_get_long_internal(a->parent->h, self->stepUnits,&stepUnits))!=GRIB_SUCCESS) return ret;
+        if ((ret=grib_get_long_internal(grib_handle_of_accessor(a), self->stepUnits,&stepUnits))!=GRIB_SUCCESS) return ret;
         step_mins = convert_to_minutes(step, stepUnits);
-        Assert(step_mins>=0);
     }
 
     minutes = time % 100;
@@ -226,7 +227,14 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
     tmp_hrs = tmp/60;          /* how many hours and mins is that? */
     tmp_mins = tmp%60;
     hours += tmp_hrs;          /* increment hours */
-    hours = hours % 24;        /* wrap round if >= 24 */
+    if (hours>0) {
+        hours = hours % 24;        /* wrap round if >= 24 */
+    } else {
+        /* GRIB-29: Negative forecast time */
+        while (hours<0) {
+            hours += 24;
+        }
+    }
     time = hours * 100 + tmp_mins;
 
     if(*len < 1)
diff --git a/src/grib_accessor_class_values.c b/src/grib_accessor_class_values.c
index 4e059f3..678a109 100644
--- a/src/grib_accessor_class_values.c
+++ b/src/grib_accessor_class_values.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -108,6 +108,7 @@ static grib_accessor_class _grib_accessor_class_values = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -139,6 +140,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -151,7 +153,7 @@ static long init_length(grib_accessor* a)
   long offsetsection = 0;
   long offsetdata    = 0;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->seclen,&seclen)))
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->seclen,&seclen)))
     return ret;
 
   if(seclen == 0)
@@ -160,17 +162,17 @@ static long init_length(grib_accessor* a)
     return 0;
   }
 
-  if((ret = grib_get_long_internal(a->parent->h, self->offsetsection,&offsetsection)))
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetsection,&offsetsection)))
     return ret;
 
-  if((ret = grib_get_long_internal(a->parent->h, self->offsetdata,&offsetdata)))
+  if((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetdata,&offsetdata)))
     return ret;
 
   /* When reparsing */
   if(offsetdata < offsetsection)
   {
     /* printf("init_length offsetdata < offsetsection=0\n"); */
-    Assert(a->parent->h->loader);
+    Assert(grib_handle_of_accessor(a)->loader);
     return 0;
   }
   
@@ -182,9 +184,9 @@ static void init(grib_accessor* a,const long v, grib_arguments* params)
   grib_accessor_values *self =(grib_accessor_values*)a;
   self->carg = 0;
 
-  self->seclen        = grib_arguments_get_name(a->parent->h,params,self->carg++);
-  self->offsetdata    = grib_arguments_get_name(a->parent->h,params,self->carg++);
-  self->offsetsection = grib_arguments_get_name(a->parent->h,params,self->carg++);
+  self->seclen        = grib_arguments_get_name(grib_handle_of_accessor(a),params,self->carg++);
+  self->offsetdata    = grib_arguments_get_name(grib_handle_of_accessor(a),params,self->carg++);
+  self->offsetsection = grib_arguments_get_name(grib_handle_of_accessor(a),params,self->carg++);
   self->dirty =1;
 
   a->length = init_length(a);
@@ -203,7 +205,7 @@ static void dump(grib_accessor* a, grib_dumper* dumper)
 
 
 static long byte_count(grib_accessor* a){
-    grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG,"byte_count of %s = %ld",a->name,a->length);
+    grib_context_log(a->context,GRIB_LOG_DEBUG,"byte_count of %s = %ld",a->name,a->length);
   return a->length;
 
 }
@@ -218,7 +220,7 @@ static long next_offset(grib_accessor* a){
 
 static void update_size(grib_accessor* a,size_t s)
 {
-    grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG,"updating size of %s old %ld new %ld",a->name,a->length,s);
+    grib_context_log(a->context,GRIB_LOG_DEBUG,"updating size of %s old %ld new %ld",a->name,a->length,s);
   a->length = s;
   Assert(a->length>=0);
 }
@@ -243,8 +245,8 @@ static int compare(grib_accessor* a, grib_accessor* b) {
 
   if (alen != blen) return GRIB_COUNT_MISMATCH;
 
-  aval=(double*)grib_context_malloc(a->parent->h->context,alen*sizeof(double));
-  bval=(double*)grib_context_malloc(b->parent->h->context,blen*sizeof(double));
+  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);
@@ -255,8 +257,8 @@ static int compare(grib_accessor* a, grib_accessor* b) {
     alen--;
   }
 
-  grib_context_free(a->parent->h->context,aval);
-  grib_context_free(b->parent->h->context,bval);
+  grib_context_free(a->context,aval);
+  grib_context_free(b->context,bval);
 
   return retval;
 }
@@ -266,13 +268,13 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
   int ret=0;
   grib_accessor_values *self =(grib_accessor_values*)a;
   int i;
-  double* dval=(double*)grib_context_malloc(a->parent->h->context,*len*sizeof(double));
+  double* dval=(double*)grib_context_malloc(a->context,*len*sizeof(double));
 
   for (i=0;i<*len;i++) dval[i]=(double)val[i];
 
   ret=grib_pack_double(a,dval,len);
 
-  grib_context_free(a->parent->h->context,dval);
+  grib_context_free(a->context,dval);
 
   self->dirty=1;
 
diff --git a/src/grib_accessor_class_variable.c b/src/grib_accessor_class_variable.c
index 4e3d28f..ff9e0ef 100644
--- a/src/grib_accessor_class_variable.c
+++ b/src/grib_accessor_class_variable.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -20,7 +20,7 @@
    IMPLEMENTS = unpack_string;pack_string;string_length
    IMPLEMENTS = unpack_long;pack_long;destroy;byte_count
    IMPLEMENTS = init;dump;value_count;get_native_type
-   IMPLEMENTS = compare
+   IMPLEMENTS = compare; make_clone
    MEMBERS=double dval
    MEMBERS=char*  cval
    MEMBERS=int    type
@@ -53,6 +53,7 @@ static void dump(grib_accessor*, grib_dumper*);
 static void init(grib_accessor*,const long, grib_arguments* );
 static void init_class(grib_accessor_class*);
 static int compare(grib_accessor*, grib_accessor*);
+static grib_accessor* make_clone(grib_accessor*,grib_section*,int*);
 
 typedef struct grib_accessor_variable {
     grib_accessor          att;
@@ -105,6 +106,7 @@ static grib_accessor_class _grib_accessor_class_variable = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    &make_clone,               		/* clone accessor          */
 };
 
 
@@ -141,7 +143,7 @@ static void init_class(grib_accessor_class* c)
 static void init(grib_accessor* a, const long length , grib_arguments* args )
 {
     grib_accessor_variable* self = (grib_accessor_variable*)a;
-    grib_expression *expression = grib_arguments_get_expression(a->parent->h,args,0);
+    grib_expression *expression = grib_arguments_get_expression(grib_handle_of_accessor(a),args,0);
     const char* p = 0;
     size_t len = 1;
     long l;
@@ -151,25 +153,25 @@ static void init(grib_accessor* a, const long length , grib_arguments* args )
 
     a->length = 0;
     if (self->type==GRIB_TYPE_UNDEFINED && expression) {
-    self->type = grib_expression_native_type(a->parent->h,expression);
+    self->type = grib_expression_native_type(grib_handle_of_accessor(a),expression);
 
     switch(self->type)
     {
     case GRIB_TYPE_DOUBLE:
-        grib_expression_evaluate_double(a->parent->h,expression,&d);
+        grib_expression_evaluate_double(grib_handle_of_accessor(a),expression,&d);
         pack_double(a,&d,&len);
         break;
 
     case GRIB_TYPE_LONG:
-        grib_expression_evaluate_long(a->parent->h,expression,&l);
+        grib_expression_evaluate_long(grib_handle_of_accessor(a),expression,&l);
         pack_long(a,&l,&len);
         break;
 
     default:
         len = sizeof(tmp);
-        p = grib_expression_evaluate_string(a->parent->h,expression,tmp,&len,&ret);
+        p = grib_expression_evaluate_string(grib_handle_of_accessor(a),expression,tmp,&len,&ret);
         if (ret != GRIB_SUCCESS) {
-            grib_context_log(a->parent->h->context,GRIB_LOG_ERROR,"unable to evaluate %s as string",a->name);
+            grib_context_log(a->context,GRIB_LOG_ERROR,"unable to evaluate %s as string",a->name);
             Assert(0);
         }
         len = strlen(p)+1;
@@ -209,7 +211,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
     if(*len != 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 );
+        grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 );
         *len = 1;
         return GRIB_ARRAY_TOO_SMALL;
     }
@@ -229,7 +231,7 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
 
     if(*len != 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 );
+        grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 );
         *len = 1;
         return GRIB_ARRAY_TOO_SMALL;
     }
@@ -246,7 +248,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
 
     if(*len < 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 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;
     }
@@ -261,7 +263,7 @@ static int unpack_long(grib_accessor* a, long* val, size_t *len)
 
     if(*len < 1)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 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;
     }
@@ -283,7 +285,7 @@ static void destroy(grib_context* c,grib_accessor* a)
     grib_context_free(c,self->cval);
 }
 
-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_variable *self = (grib_accessor_variable*)a;
 
     char buf[80];
@@ -299,7 +301,7 @@ static int unpack_string (grib_accessor* a, char* val, size_t *len){
     slen = strlen(p) +1;
     if(*len < slen)
     {
-        grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Variable unpack_string Wrong size for %s it is %d bytes big (len=%d)", a->name , slen ,*len);
+        grib_context_log(a->context, GRIB_LOG_ERROR, "Variable unpack_string Wrong size for %s it is %d bytes big (len=%d)", a->name , slen ,*len);
         *len = slen;
         return GRIB_BUFFER_TOO_SMALL;
     }
@@ -313,11 +315,11 @@ 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_variable *self = (grib_accessor_variable*)a;
-    grib_context *c = a->parent->h->context;
+    grib_context *c = a->context;
 
     grib_context_free(c,self->cval);
     self->cval = grib_context_strdup(c,val);
-    self->dval = atof(self->cval);
+    self->dval = atof(val);
     self->type = GRIB_TYPE_STRING;
     return GRIB_SUCCESS;
 }
@@ -376,8 +378,8 @@ static int compare(grib_accessor* a, grib_accessor* b) {
 
     if (alen != blen) return GRIB_COUNT_MISMATCH;
 
-    aval=(double*)grib_context_malloc(a->parent->h->context,alen*sizeof(double));
-    bval=(double*)grib_context_malloc(b->parent->h->context,blen*sizeof(double));
+    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);
@@ -388,9 +390,36 @@ static int compare(grib_accessor* a, grib_accessor* b) {
         alen--;
     }
 
-    grib_context_free(a->parent->h->context,aval);
-    grib_context_free(b->parent->h->context,bval);
+    grib_context_free(a->context,aval);
+    grib_context_free(b->context,bval);
 
     return retval;
 }
 
+static grib_accessor* make_clone(grib_accessor* a,grib_section* s,int* err)
+{
+  grib_accessor* the_clone=NULL;
+  grib_accessor_variable *self = (grib_accessor_variable*)a;
+  grib_accessor_variable* variableAccessor=NULL;
+  grib_action creator = {0, };
+  creator.op         = "variable";
+  creator.name_space = "";
+  creator.set        = 0;
+
+  creator.name=grib_context_strdup(a->context,a->name);
+  the_clone=grib_accessor_factory(s, &creator, 0, NULL);
+  the_clone->parent=NULL;
+  the_clone->h=s->h;
+  variableAccessor=(grib_accessor_variable*)the_clone;
+
+  *err=0;
+  variableAccessor->type=self->type;
+  if(self->type == GRIB_TYPE_STRING && self->cval!=NULL) {
+    variableAccessor->cval=grib_context_strdup(a->context,self->cval);
+  } else {
+    variableAccessor->dval=self->dval;
+  }
+
+  return the_clone;
+}
+
diff --git a/src/grib_accessor_class_vector.c b/src/grib_accessor_class_vector.c
index e04f2c0..22bc534 100644
--- a/src/grib_accessor_class_vector.c
+++ b/src/grib_accessor_class_vector.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -96,6 +96,7 @@ static grib_accessor_class _grib_accessor_class_vector = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -134,6 +135,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
@@ -152,8 +154,8 @@ static void init(grib_accessor* a,const long l, grib_arguments* c)
   grib_accessor_vector* self = (grib_accessor_vector*)a;
   int n = 0;
 
-  self->vector = grib_arguments_get_name(a->parent->h,c,n++);
-  self->index = grib_arguments_get_long(a->parent->h,c,n++);
+  self->vector = grib_arguments_get_name(grib_handle_of_accessor(a),c,n++);
+  self->index = grib_arguments_get_long(grib_handle_of_accessor(a),c,n++);
   a->flags  |= GRIB_ACCESSOR_FLAG_READ_ONLY;
   a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
   a->length=0;
@@ -164,21 +166,21 @@ static int    unpack_double   (grib_accessor* a, double* val, size_t *len)
   size_t size=0;
   double* stat;
   grib_accessor_vector* self = (grib_accessor_vector*)a;
-  grib_accessor* va=(grib_accessor*)grib_find_accessor(a->parent->h,self->vector);
+  grib_accessor* va=(grib_accessor*)grib_find_accessor(grib_handle_of_accessor(a),self->vector);
   grib_accessor_abstract_vector* v = (grib_accessor_abstract_vector*)va;
 
   Assert(self->index>=0);
 
   if (self->index>=v->number_of_elements) {
-    grib_context_log(a->parent->h->context,GRIB_LOG_FATAL,"index=%d number_of_elements=%d for %s",self->index,v->number_of_elements,a->name);
+    grib_context_log(a->context,GRIB_LOG_FATAL,"index=%d number_of_elements=%d for %s",self->index,v->number_of_elements,a->name);
     Assert(self->index < v->number_of_elements);
   }
 
   if (va->dirty) {
-    grib_get_size(a->parent->h,self->vector,&size);
-    stat=(double*)grib_context_malloc_clear(a->parent->h->context,sizeof(double)*size);
+    grib_get_size(grib_handle_of_accessor(a),self->vector,&size);
+    stat=(double*)grib_context_malloc_clear(a->context,sizeof(double)*size);
     grib_unpack_double(va,stat,&size);
-    grib_context_free(a->parent->h->context,stat);
+    grib_context_free(a->context,stat);
   }
 
   
diff --git a/src/grib_accessor_class_when.c b/src/grib_accessor_class_when.c
index 9db3704..7c15d7d 100644
--- a/src/grib_accessor_class_when.c
+++ b/src/grib_accessor_class_when.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -89,6 +89,7 @@ static grib_accessor_class _grib_accessor_class_when = {
     0,     /* unpack only ith value          */
     0,     /* unpack a subarray         */
     0,              		/* clear          */
+    0,               		/* clone accessor          */
 };
 
 
@@ -126,6 +127,7 @@ static void init_class(grib_accessor_class* c)
 	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
 	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
 	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
 }
 
 /* END_CLASS_IMP */
diff --git a/src/grib_accessor_classes_hash.c b/src/grib_accessor_classes_hash.c
index a363a4a..52c791c 100644
--- a/src/grib_accessor_classes_hash.c
+++ b/src/grib_accessor_classes_hash.c
@@ -3,7 +3,7 @@
 /* Computed positions: -k'2-3,7,11' */
 
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_accessor_factory.h b/src/grib_accessor_factory.h
index 6f3c439..f825d47 100644
--- a/src/grib_accessor_factory.h
+++ b/src/grib_accessor_factory.h
@@ -16,11 +16,14 @@
 { "bufr_data_array", &grib_accessor_class_bufr_data_array, },
 { "bufr_data_element", &grib_accessor_class_bufr_data_element, },
 { "bufr_elements_table", &grib_accessor_class_bufr_elements_table, },
+{ "bufr_extract_subsets", &grib_accessor_class_bufr_extract_subsets, },
 { "bufr_group", &grib_accessor_class_bufr_group, },
 { "bufr_has_delayed_replication", &grib_accessor_class_bufr_has_delayed_replication, },
+{ "bufr_string_values", &grib_accessor_class_bufr_string_values, },
 { "bufrdc_expanded_descriptors", &grib_accessor_class_bufrdc_expanded_descriptors, },
 { "bytes", &grib_accessor_class_bytes, },
 { "change_scanning_direction", &grib_accessor_class_change_scanning_direction, },
+{ "check_internal_version", &grib_accessor_class_check_internal_version, },
 { "codeflag", &grib_accessor_class_codeflag, },
 { "codetable", &grib_accessor_class_codetable, },
 { "codetable_title", &grib_accessor_class_codetable_title, },
@@ -103,6 +106,7 @@
 { "g2lon", &grib_accessor_class_g2lon, },
 { "g2step", &grib_accessor_class_g2step, },
 { "g2step_range", &grib_accessor_class_g2step_range, },
+{ "gaussian_grid_name", &grib_accessor_class_gaussian_grid_name, },
 { "gds_is_present", &grib_accessor_class_gds_is_present, },
 { "gds_not_present_bitmap", &grib_accessor_class_gds_not_present_bitmap, },
 { "gen", &grib_accessor_class_gen, },
@@ -149,15 +153,18 @@
 { "number_of_points_gaussian", &grib_accessor_class_number_of_points_gaussian, },
 { "number_of_values", &grib_accessor_class_number_of_values, },
 { "number_of_values_data_raw_packing", &grib_accessor_class_number_of_values_data_raw_packing, },
+{ "octahedral_gaussian", &grib_accessor_class_octahedral_gaussian, },
 { "octect_number", &grib_accessor_class_octect_number, },
 { "offset_file", &grib_accessor_class_offset_file, },
 { "offset_values", &grib_accessor_class_offset_values, },
+{ "pack_bufr_values", &grib_accessor_class_pack_bufr_values, },
 { "pad", &grib_accessor_class_pad, },
 { "padding", &grib_accessor_class_padding, },
 { "padto", &grib_accessor_class_padto, },
 { "padtoeven", &grib_accessor_class_padtoeven, },
 { "padtomultiple", &grib_accessor_class_padtomultiple, },
 { "position", &grib_accessor_class_position, },
+{ "raw", &grib_accessor_class_raw, },
 { "reference_value_error", &grib_accessor_class_reference_value_error, },
 { "round", &grib_accessor_class_round, },
 { "scale", &grib_accessor_class_scale, },
@@ -189,6 +196,7 @@
 { "to_integer", &grib_accessor_class_to_integer, },
 { "to_string", &grib_accessor_class_to_string, },
 { "transient", &grib_accessor_class_transient, },
+{ "transient_darray", &grib_accessor_class_transient_darray, },
 { "uint16", &grib_accessor_class_uint16, },
 { "uint16_little_endian", &grib_accessor_class_uint16_little_endian, },
 { "uint32", &grib_accessor_class_uint32, },
diff --git a/src/grib_accessor_factory_hash_list b/src/grib_accessor_factory_hash_list
index 4c1abc2..dcb564c 100644
--- a/src/grib_accessor_factory_hash_list
+++ b/src/grib_accessor_factory_hash_list
@@ -17,14 +17,17 @@ bufr_data_array, &grib_accessor_class_bufr_data_array
 bufr_data_element, &grib_accessor_class_bufr_data_element
 bufr_element, &grib_accessor_class_bufr_element
 bufr_elements_table, &grib_accessor_class_bufr_elements_table
+bufr_extract_subsets, &grib_accessor_class_bufr_extract_subsets
 bufr_group, &grib_accessor_class_bufr_group
 bufr_group_number, &grib_accessor_class_bufr_group_number
 bufr_has_delayed_replication, &grib_accessor_class_bufr_has_delayed_replication
+bufr_string_values, &grib_accessor_class_bufr_string_values
 bufr_subset_number, &grib_accessor_class_bufr_subset_number
 bufr_uncompressed_data, &grib_accessor_class_bufr_uncompressed_data
 bufrdc_expanded_descriptors, &grib_accessor_class_bufrdc_expanded_descriptors
 bytes, &grib_accessor_class_bytes
 change_scanning_direction, &grib_accessor_class_change_scanning_direction
+check_internal_version, &grib_accessor_class_check_internal_version
 codeflag, &grib_accessor_class_codeflag
 codetable, &grib_accessor_class_codetable
 codetable_title, &grib_accessor_class_codetable_title
@@ -112,6 +115,7 @@ g2level, &grib_accessor_class_g2level
 g2lon, &grib_accessor_class_g2lon
 g2step, &grib_accessor_class_g2step
 g2step_range, &grib_accessor_class_g2step_range
+gaussian_grid_name, &grib_accessor_class_gaussian_grid_name
 gds_is_present, &grib_accessor_class_gds_is_present
 gds_not_present_bitmap, &grib_accessor_class_gds_not_present_bitmap
 gen, &grib_accessor_class_gen
@@ -158,15 +162,18 @@ number_of_points, &grib_accessor_class_number_of_points
 number_of_points_gaussian, &grib_accessor_class_number_of_points_gaussian
 number_of_values, &grib_accessor_class_number_of_values
 number_of_values_data_raw_packing, &grib_accessor_class_number_of_values_data_raw_packing
+octahedral_gaussian, &grib_accessor_class_octahedral_gaussian
 octect_number, &grib_accessor_class_octect_number
 offset_file, &grib_accessor_class_offset_file
 offset_values, &grib_accessor_class_offset_values
+pack_bufr_values, &grib_accessor_class_pack_bufr_values
 pad, &grib_accessor_class_pad
 padding, &grib_accessor_class_padding
 padto, &grib_accessor_class_padto
 padtoeven, &grib_accessor_class_padtoeven
 padtomultiple, &grib_accessor_class_padtomultiple
 position, &grib_accessor_class_position
+raw, &grib_accessor_class_raw
 reference_value_error, &grib_accessor_class_reference_value_error
 round, &grib_accessor_class_round
 scale, &grib_accessor_class_scale
@@ -199,6 +206,7 @@ to_double, &grib_accessor_class_to_double
 to_integer, &grib_accessor_class_to_integer
 to_string, &grib_accessor_class_to_string
 transient, &grib_accessor_class_transient
+transient_darray, &grib_accessor_class_transient_darray
 uint16, &grib_accessor_class_uint16
 uint16_little_endian, &grib_accessor_class_uint16_little_endian
 uint32, &grib_accessor_class_uint32
diff --git a/src/grib_api.h b/src/grib_api.h
index 8193276..999e846 100644
--- a/src/grib_api.h
+++ b/src/grib_api.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -34,12 +34,12 @@ extern "C" {
 #include <math.h>
 
 #if defined( __GNUC__) || defined(__clang__)
-#define DEPRECATED __attribute__((deprecated))
+#define ECCODES_DEPRECATED __attribute__((deprecated))
 #else
-#define DEPRECATED
+#define ECCODES_DEPRECATED
 #endif
 
-typedef enum ProductKind {PRODUCT_ANY, PRODUCT_GRIB, PRODUCT_BUFR} ProductKind;
+typedef enum ProductKind {PRODUCT_ANY, PRODUCT_GRIB, PRODUCT_BUFR, PRODUCT_METAR, PRODUCT_GTS, PRODUCT_TAF} ProductKind;
 
 #include "eccodes_version.h"
 
@@ -85,7 +85,8 @@ Log mode for information for processing information
 
 /* Missing values */
 /* #define GRIB_MISSING_LONG   0x80000001*/
-#define GRIB_MISSING_LONG 0xffffffff
+/* #define GRIB_MISSING_LONG 0xffffffff */
+#define GRIB_MISSING_LONG 2147483647
 #define GRIB_MISSING_DOUBLE -1e+100
 
 /*set spec flags*/
@@ -102,6 +103,7 @@ Log mode for information for processing information
 #define GRIB_DUMP_FLAG_HEXADECIMAL  (1<<7)
 #define GRIB_DUMP_FLAG_NO_DATA      (1<<8)
 #define GRIB_DUMP_FLAG_ALL_DATA      (1<<9)
+#define GRIB_DUMP_FLAG_ALL_ATTRIBUTES      (1<<10)
 
 /* grib_nearest flags */
 #define GRIB_NEAREST_SAME_GRID   (1<<0)
@@ -153,7 +155,7 @@ Log mode for information for processing information
 typedef struct grib_key_value_list grib_key_value_list;
 
 typedef struct grib_values grib_values;
-         
+
 struct grib_values {
   const char* name;
   int         type;
@@ -266,7 +268,7 @@ grib_index* grib_index_new_from_file(grib_context* c,
 grib_index* grib_index_new(grib_context* c, const char* keys,int *err);
 
 /**
- *  Indexes the file given in argument in the index given in argument. 
+ *  Indexes the file given in argument in the index given in argument.
  *
  * @param index       : index
  * @param filename    : name of the file of messages to be indexed
@@ -407,13 +409,12 @@ int grib_count_in_file(grib_context* c, FILE* f,int* n);
 */
 grib_handle* grib_handle_new_from_file(grib_context* c, FILE* f, int* error);
 
-
 /**
-*  Write a coded message in a file.     
+*  Write a coded message in a file.
 *
 * @param h           : grib_handle to be written
-* @param file        : name of the file 
-* @param mode        : mode 
+* @param file        : name of the file
+* @param mode        : mode
 * @return            0 if OK, integer value on error
 */
 int grib_write_message(grib_handle* h,const char* file,const char* mode);
@@ -546,7 +547,7 @@ int grib_multi_handle_write(grib_multi_handle* mh,FILE* f);
 * @param message_length : On exit, the message size in number of bytes
 * @return            0 if OK, integer value on error
 */
-int grib_get_message(grib_handle* h ,const void** message, size_t *message_length  );
+int grib_get_message(grib_handle* h ,const void** message, size_t *message_length);
 
 
 /**
@@ -558,7 +559,7 @@ int grib_get_message(grib_handle* h ,const void** message, size_t *message_lengt
 *                         On exit, the actual message length in number of bytes
 * @return            0 if OK, integer value on error
 */
-int grib_get_message_copy(grib_handle* h ,  void* message,size_t *message_length );
+int grib_get_message_copy(grib_handle* h ,  void* message,size_t *message_length);
 /*! @} */
 
 /*! \defgroup iterators Iterating on latitude/longitude/values */
@@ -748,7 +749,7 @@ int         grib_get_length(grib_handle* h, const char* key,size_t *length);
 * @param value       : the address of a long where the data will be retrieved
 * @return            0 if OK, integer value on error
 */
-int          grib_get_long         (grib_handle* h, const char* key, long*   value  );
+int          grib_get_long         (grib_handle* h, const char* key, long*   value);
 
 /**
 *  Get a double value from a key, if several keys of the same name are present, the last one is returned
@@ -759,7 +760,7 @@ int          grib_get_long         (grib_handle* h, const char* key, long*   val
 * @param value       : the address of a double where the data will be retrieved
 * @return            0 if OK, integer value on error
 */
-int grib_get_double       (grib_handle* h, const char* key, double* value                             );
+int grib_get_double       (grib_handle* h, const char* key, double* value);
 
 /**
 *  Get as double the i-th element of the "key" array
@@ -770,7 +771,7 @@ int grib_get_double       (grib_handle* h, const char* key, double* value
 * @param value       : the address of a double where the data will be retrieved
 * @return            0 if OK, integer value on error
 */
-int grib_get_double_element(grib_handle* h, const char* key, int i, double* value           );
+int grib_get_double_element(grib_handle* h, const char* key, int i, double* value);
 
 /**
 *  Get as double array the elements of the "key" array whose indexes are listed in the input array i
@@ -794,7 +795,7 @@ int grib_get_double_elements(grib_handle* h, const char* key, int* i, long size,
 * @param length      : the address of a size_t that contains allocated length of the string on input, and that contains the actual length of the string on output
 * @return            0 if OK, integer value on error
 */
-int grib_get_string       (grib_handle* h, const char* key, char*   mesg,             size_t *length  );
+int grib_get_string       (grib_handle* h, const char* key, char*   mesg,             size_t *length);
 
 int grib_get_string_array(grib_handle* h, const char* name, char** val, size_t *length);
 
@@ -808,7 +809,7 @@ int grib_get_string_array(grib_handle* h, const char* name, char** val, size_t *
 * @param length      : the address of a size_t that contains allocated length of the byte array on input, and that contains the actual length of the byte array on output
 * @return            0 if OK, integer value on error
 */
-int grib_get_bytes        (grib_handle* h, const char* key, unsigned char*  bytes,    size_t *length  );
+int grib_get_bytes        (grib_handle* h, const char* key, unsigned char*  bytes, size_t *length);
 /**
 *  Get double array values from a key. If several keys of the same name are present, the last one is returned
 * @see  grib_set_double_array
@@ -819,7 +820,7 @@ int grib_get_bytes        (grib_handle* h, const char* key, unsigned char*  byte
 * @param length      : the address of a size_t that contains allocated length of the double array on input, and that contains the actual length of the double array on output
 * @return            0 if OK, integer value on error
 */
-int grib_get_double_array (grib_handle* h, const char* key, double* vals,           size_t *length  );
+int grib_get_double_array (grib_handle* h, const char* key, double* vals, size_t *length);
 
 /**
 *  Get long array values from a key. If several keys of the same name are present, the last one is returned
@@ -831,8 +832,7 @@ int grib_get_double_array (grib_handle* h, const char* key, double* vals,
 * @param length      : the address of a size_t that contains allocated length of the long array on input, and that contains the actual length of the long array on output
 * @return            0 if OK, integer value on error
 */
-int grib_get_long_array(grib_handle* h, const char* key, long*   vals, size_t *length);
-
+int grib_get_long_array(grib_handle* h, const char* key, long* vals, size_t *length);
 
 
 /*   setting      data         */
@@ -846,7 +846,7 @@ int grib_get_long_array(grib_handle* h, const char* key, long*   vals, size_t *l
 * @return          0 if OK, integer value on error
 */
 int grib_copy_namespace(grib_handle* dest, const char* name, grib_handle* src);
-  
+
 /**
 *  Set a long value from a key. If several keys of the same name are present, the last one is set
 *  @see  grib_get_long
@@ -856,7 +856,7 @@ int grib_copy_namespace(grib_handle* dest, const char* name, grib_handle* src);
 * @param val         : a long where the data will be read
 * @return            0 if OK, integer value on error
 */
-int grib_set_long         (grib_handle* h, const char*  key , long val     );
+int grib_set_long         (grib_handle* h, const char*  key , long val);
 
 /**
 *  Set a double value from a key. If several keys of the same name are present, the last one is set
@@ -867,7 +867,7 @@ int grib_set_long         (grib_handle* h, const char*  key , long val     );
 * @param val       : a double where the data will be read
 * @return            0 if OK, integer value on error
 */
-int grib_set_double       (grib_handle* h, const char*  key , double   val   );
+int grib_set_double       (grib_handle* h, const char*  key , double   val);
 
 /**
 *  Set a string value from a key. If several keys of the same name are present, the last one is set
@@ -879,7 +879,7 @@ int grib_set_double       (grib_handle* h, const char*  key , double   val   );
 * @param length      : the address of a size_t that contains the length of the string on input, and that contains the actual packed length of the string on output
 * @return            0 if OK, integer value on error
 */
-int grib_set_string       (grib_handle* h, const char*  key , const char* mesg, size_t *length );
+int grib_set_string       (grib_handle* h, const char*  key , const char* mesg, size_t *length);
 
 /**
 *  Set a bytes array from a key. If several keys of the same name are present, the last one is set
@@ -891,7 +891,7 @@ int grib_set_string       (grib_handle* h, const char*  key , const char* mesg,
 * @param length      : the address of a size_t that contains the length of the byte array on input, and that contains the actual packed length of the byte array  on output
 * @return            0 if OK, integer value on error
 */
-int grib_set_bytes        (grib_handle* h, const char*  key, const unsigned char* bytes, size_t *length  );
+int grib_set_bytes        (grib_handle* h, const char*  key, const unsigned char* bytes, size_t *length);
 
 /**
 *  Set a double array from a key. If several keys of the same name are present, the last one is set
@@ -903,7 +903,7 @@ int grib_set_bytes        (grib_handle* h, const char*  key, const unsigned char
 * @param length      : a size_t that contains the length of the byte array on input
 * @return            0 if OK, integer value on error
 */
-int grib_set_double_array (grib_handle* h, const char*  key , const double*        vals   , size_t length  );
+int grib_set_double_array (grib_handle* h, const char*  key , const double*        vals   , size_t length);
 
 /**
 * Same as grib_set_double_array but allows setting of READ-ONLY keys like codedValues.
@@ -922,7 +922,7 @@ int grib_set_force_double_array(grib_handle* h, const char* key, const double* v
 * @param length      : a size_t that contains the length of the long array on input
 * @return            0 if OK, integer value on error
 */
-int grib_set_long_array   (grib_handle* h, const char*  key , const long*          vals   , size_t length  );
+int grib_set_long_array   (grib_handle* h, const char*  key , const long*          vals   , size_t length);
 /*! @} */
 
 
@@ -1058,14 +1058,6 @@ typedef int    (*grib_data_eof_proc) (const grib_context* c, void *stream);
 grib_context*    grib_context_get_default(void);
 
 /**
-*  Create and allocate a new context from a parent context.
-*
-* @param c           : the context to be cloned, NULL for default context
-* @return            the new and empty context, NULL if error
-*/
-grib_context*    grib_context_new                        (grib_context* c);
-
-/**
 *  Frees the cached definition files of the context
 *
 * @param c           : the context to be deleted
@@ -1219,7 +1211,7 @@ attributes or by the namespace they belong to.
 *  @return              keys iterator ready to iterate through keys according to filter_flags
 *                         and namespace
 */
-grib_keys_iterator* grib_keys_iterator_new(grib_handle* h,unsigned long filter_flags, char* name_space);
+grib_keys_iterator* grib_keys_iterator_new(grib_handle* h,unsigned long filter_flags, const char* name_space);
 
 /*! Step to the next iterator.
 *  @param kiter         : valid grib_keys_iterator
@@ -1287,7 +1279,7 @@ int grib_datetime_to_julian(long year, long month, long day, long hour, long min
 long grib_julian_to_date(long jdate);
 long grib_date_to_julian(long ddate);
 
-void grib_get_reduced_row(long pl,double lon_first,double lon_last,long* npoints,long* ilon_first, long* ilon_last );
+void grib_get_reduced_row(long pl,double lon_first,double lon_last,long* npoints,long* ilon_first, long* ilon_last);
 
 /* read products */
 int wmo_read_any_from_file(FILE *f, void *buffer, size_t *len);
@@ -1298,8 +1290,8 @@ int wmo_read_any_from_stream(void *stream_data, long (*stream_proc )(void *, voi
 void *wmo_read_any_from_file_malloc(FILE* f,int headers_only,size_t *size,off_t *offset,int* err);
 void *wmo_read_gts_from_file_malloc(FILE* f,int headers_only,size_t *size,off_t *offset,int* err);
 void *wmo_read_bufr_from_file_malloc(FILE* f,int headers_only,size_t *size,off_t *offset,int* err);
-int grib_get_message_offset ( grib_handle* h,off_t* offset );
-int grib_get_message_size ( grib_handle* h,size_t* size );
+int grib_get_message_offset ( grib_handle* h,off_t* offset);
+int grib_get_message_size ( grib_handle* h,size_t* size);
 
 struct grib_points {
     grib_context* context;
@@ -1334,6 +1326,8 @@ int grib_points_get_values(grib_handle* h, grib_points* points, double* val);
 #define GRIB_UTIL_GRID_SPEC_REDUCED_LL 7
 #define GRIB_UTIL_GRID_SPEC_POLAR_STEREOGRAPHIC 8
 
+#define GRIB_UTIL_GRID_SPEC_REDUCED_ROTATED_GG 9
+
 
 typedef struct grib_util_grid_spec {
 
@@ -1369,7 +1363,7 @@ typedef struct grib_util_grid_spec {
 	double missingValue;
 
 	/* pl list for reduced */
-	long *pl;
+	const long *pl;
 	long pl_size;
 
 	/* Spherical harmonics */
@@ -1382,7 +1376,56 @@ typedef struct grib_util_grid_spec {
 
 } grib_util_grid_spec;
 
+typedef struct grib_util_grid_spec2 {
+
+    int grid_type;
+    const char* grid_name; /* e.g. N320 */
+
+    /* Grid */
+    long   Ni;
+    long   Nj;
+
+    double iDirectionIncrementInDegrees;
+    double jDirectionIncrementInDegrees;
+
+    double longitudeOfFirstGridPointInDegrees;
+    double longitudeOfLastGridPointInDegrees;
+
+    double latitudeOfFirstGridPointInDegrees;
+    double latitudeOfLastGridPointInDegrees;
+
+    /* Rotation */
+    long uvRelativeToGrid;
+    double latitudeOfSouthernPoleInDegrees;
+    double longitudeOfSouthernPoleInDegrees;
+    double angleOfRotationInDegrees;
+
+    /* Scanning mode */
+    long iScansNegatively;
+    long jScansPositively;
+
+    /* Gaussian number */
+    long N;
+
+    /* bitmap */
+    long bitmapPresent;
+    double missingValue;
+
+    /* pl list for reduced */
+    const long *pl;
+    long pl_size;
+
+    /* Spherical harmonics */
+    long truncation;
+
+    /* polar stereographic */
+    double orientationOfTheGridInDegrees;
+    long DyInMetres;
+    long DxInMetres;
+
+} grib_util_grid_spec2;
 
+#define GRIB_UTIL_PACKING_TYPE_SAME_AS_INPUT      0
 #define GRIB_UTIL_PACKING_TYPE_SPECTRAL_COMPLEX 1
 #define GRIB_UTIL_PACKING_TYPE_SPECTRAL_SIMPLE    2
 #define GRIB_UTIL_PACKING_TYPE_JPEG    3
@@ -1394,7 +1437,7 @@ typedef struct grib_util_grid_spec {
 #define GRIB_UTIL_PACKING_SAME_AS_INPUT    	0
 #define GRIB_UTIL_PACKING_USE_PROVIDED  	1
 
-#define GRIB_UTIL_ACCURACY_SAME_BITS_PER_VALUES_AS_INPUT      0 
+#define GRIB_UTIL_ACCURACY_SAME_BITS_PER_VALUES_AS_INPUT      0
 #define GRIB_UTIL_ACCURACY_USE_PROVIDED_BITS_PER_VALUES       1
 #define GRIB_UTIL_ACCURACY_SAME_DECIMAL_SCALE_FACTOR_AS_INPUT 2
 #define GRIB_UTIL_ACCURACY_USE_PROVIDED_DECIMAL_SCALE_FACTOR  3
@@ -1403,15 +1446,15 @@ typedef struct grib_util_packing_spec {
 
 	/* Packing options */
 	long packing_type;
-	long packing;      
+	long packing;
 	long boustrophedonic;
 
 	long editionNumber; /* =0 for default value */
 
 	/* Accuracy */
-	long accuracy; 
-	long bitsPerValue;          
-	long decimalScaleFactor;  
+	long accuracy;
+	long bitsPerValue;
+	long decimalScaleFactor;
 
 	long computeLaplacianOperator;
 	int truncateLaplacian;
@@ -1421,19 +1464,26 @@ typedef struct grib_util_packing_spec {
 	long deleteLocalDefinition; /* default(=0) local definition is taken from the input field */
 
 	/* Extra values when packing */
-	grib_values extra_settings[80]; 
+	grib_values extra_settings[80];
 	long        extra_settings_count;
 } grib_util_packing_spec;
 
 
-grib_handle *grib_util_set_spec(grib_handle *h, 
-	const grib_util_grid_spec    *grid_spec, 
+grib_handle *grib_util_set_spec(grib_handle *h,
+	const grib_util_grid_spec    *grid_spec,
 	const grib_util_packing_spec *packing_spec,  /* NULL for defaults (same as input) */
 	int flags,
-	const double *data_values, 
-	size_t data_values_count, 
+	const double *data_values,
+	size_t data_values_count,
 	int *err);
 
+grib_handle *grib_util_set_spec2(grib_handle *h,
+    const grib_util_grid_spec2   *grid_spec,
+    const grib_util_packing_spec *packing_spec,  /* NULL for defaults (same as input) */
+    int flags,
+    const double *data_values,
+    size_t data_values_count,
+    int *err);
 
 /* --------------------------------------- */
 
@@ -1577,5 +1627,9 @@ Error codes returned by the grib_api functions.
 #define GRIB_TOO_MANY_ATTRIBUTES		-62
 /** Attribute not found. */
 #define GRIB_ATTRIBUTE_NOT_FOUND		-63
+/** Edition not supported. */
+#define GRIB_UNSUPPORTED_EDITION		-64
+/** Value out of coding range */
+#define GRIB_OUT_OF_RANGE		-65
 /*! @}*/
 #endif
diff --git a/src/grib_api_internal.h b/src/grib_api_internal.h
index 1491079..ff52db4 100644
--- a/src/grib_api_internal.h
+++ b/src/grib_api_internal.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -71,8 +71,10 @@ extern "C" {
    #include <direct.h>
    #include <io.h>
 
-   /* Replace Unix rint() for Windows */
-   double rint(double x);
+   /* Replace C99/Unix rint() for Windows Visual C++ (only before VC++ 2013 versions) */
+   #if defined _MSC_VER && _MSC_VER < 1800
+      double rint(double x);
+   #endif
 
    #ifndef S_ISREG
      #define S_ISREG(mode) (mode & S_IFREG)
@@ -122,15 +124,27 @@ extern "C" {
 
 #if GRIB_PTHREADS
  #include <pthread.h>
- #define GRIB_PTHREAD_ONCE(a,b) pthread_once(a,b);
+ #define GRIB_MUTEX_INIT_ONCE(a,b) pthread_once(a,b);
  #define GRIB_MUTEX_LOCK(a) pthread_mutex_lock(a); 
  #define GRIB_MUTEX_UNLOCK(a) pthread_mutex_unlock(a);
-/*
-#define GRIB_MUTEX_LOCK(a) {pthread_mutex_lock(a); printf("MUTEX LOCK %p %s line %d\n",(void*)a,__FILE__,__LINE__);}
-#define GRIB_MUTEX_UNLOCK(a) {pthread_mutex_unlock(a);printf("MUTEX UNLOCK %p %s line %d\n",(void*)a,__FILE__,__LINE__);} 
-*/
+ /*
+ #define GRIB_MUTEX_LOCK(a) {pthread_mutex_lock(a); printf("MUTEX LOCK %p %s line %d\n",(void*)a,__FILE__,__LINE__);}
+ #define GRIB_MUTEX_UNLOCK(a) {pthread_mutex_unlock(a);printf("MUTEX UNLOCK %p %s line %d\n",(void*)a,__FILE__,__LINE__);} 
+ */
+#elif GRIB_OMP_THREADS
+ #include <omp.h>
+ #ifdef _MSC_VER
+  #define GRIB_OMP_CRITICAL(a) __pragma(omp critical (a))
+ #else
+  #define GRIB_OMP_STR(a) #a
+  #define GRIB_OMP_XSTR(a) GRIB_OMP_STR(a)
+  #define GRIB_OMP_CRITICAL(a) _Pragma( GRIB_OMP_XSTR(omp critical (a) ) )
+ #endif
+ #define GRIB_MUTEX_INIT_ONCE(a,b) (*(b))();
+ #define GRIB_MUTEX_LOCK(a)  omp_set_nest_lock(a);
+ #define GRIB_MUTEX_UNLOCK(a)  omp_unset_nest_lock(a);
 #else
- #define GRIB_PTHREAD_ONCE(a,b)
+ #define GRIB_MUTEX_INIT_ONCE(a,b)
  #define GRIB_MUTEX_LOCK(a)
  #define GRIB_MUTEX_UNLOCK(a)
 #endif
@@ -151,12 +165,29 @@ extern "C" {
 #define Assert(a) {if(!(a)) grib_fail(#a,__FILE__,__LINE__,0);}
 #define AssertSilent(a) {if(!(a)) grib_fail(#a,__FILE__,__LINE__,1);}
 
- /* Compile time assertion - Thanks to Ralf Holly */
+#ifndef NDEBUG
+ #define DebugAssert(a) Assert(a)
+#else
+ #define DebugAssert(a)
+#endif
+
+/* Compile time assertion - Thanks to Ralf Holly */
 #define COMPILE_TIME_ASSERT(e) \
    do { \
        enum { assert_static__ = 1/(e) }; \
       } while (0)
 
+
+#ifndef NDEBUG
+ #define DebugAssertAccess(array, index, size) \
+   do { \
+    if (!((index) >= 0 && (index) < (size)) ) {printf("ARRAY ACCESS ERROR: array=%s idx=%ld size=%ld @ %s +%d \n", #array, index, size, __FILE__, __LINE__); abort();} \
+   } while(0)
+#else
+ #define DebugAssertAccess(array, index, size)
+#endif
+
+
 #include "grib_api.h"
 
 #define GRIB_UNKNOWN_VALUE   -9999.999
@@ -179,7 +210,6 @@ extern "C" {
 #define GRIB_REAL_MODE8    8
 
 #define MAX_NUM_SECTIONS  9
-#define MAX_NUM_GROUPS  10000
 
 #define GRIB_DISPOSABLE_MEMORY      0
 #define GRIB_LONG_LASTING_MEMORY    1
@@ -193,9 +223,12 @@ extern "C" {
 
 #define CODES_GRIB    1
 #define CODES_BUFR    2
+#define CODES_METAR   3
+#define CODES_GTS     4
 
 #define CODES_BUFR_UNPACK_STRUCTURE 0
-#define CODES_BUFR_UNPACK_FLAT 1
+#define CODES_BUFR_UNPACK_FLAT      1
+#define CODES_BUFR_NEW_DATA         2
 
 #define MAX_SMART_TABLE_COLUMNS 20
 #define MAX_CODETABLE_ENTRIES 65536
@@ -288,6 +321,7 @@ typedef  int   (*accessor_pack_string_array_proc)        (grib_accessor*, const
 typedef  int   (*accessor_pack_bytes_proc)               (grib_accessor*, const unsigned char*, size_t *len);
 typedef  int   (*accessor_pack_expression_proc)           (grib_accessor*, grib_expression*);
 typedef  int   (*accessor_clear_proc)                     (grib_accessor*);
+typedef  grib_accessor*   (*accessor_clone_proc)         (grib_accessor*,grib_section*,int*);
 
 typedef  void  (*accessor_init_class_proc)               (grib_accessor_class*);
 
@@ -392,6 +426,7 @@ struct grib_accessors_list {
 	grib_accessor* accessor;
 	grib_accessors_list* next;
 	grib_accessors_list* prev;
+  grib_accessors_list* last;
 };
 
 /* compile */
@@ -462,6 +497,7 @@ struct grib_buffer
     int              growable;   /** < buffer can be grown         */
     size_t           length;     /** < Buffer length                        */
     size_t           ulength;    /** < length used of the buffer            */
+    size_t           ulength_bits;    /** < length used of the buffer in bits */
     unsigned char*   data;       /** < the data byte array                  */
 };
 
@@ -488,6 +524,8 @@ struct grib_accessor
 {
   const char             *name  ;     /** < name of the accessor                       */
   const char*             name_space;  /** < namespace to which the accessor belongs    */
+  grib_context*          context;
+  grib_handle*           h;
   grib_action            *creator  ;  /** < action that created the accessor           */
   long                   length ;     /** < byte length of the accessor                */
   long                   offset ;     /** < offset of the data in the buffer           */
@@ -766,7 +804,6 @@ struct bufr_descriptor {
   double factor;
   double reference;
   long width;
-  int isMarker;
   grib_accessor* a;
 } ;
 
@@ -818,10 +855,10 @@ struct grib_handle
     off_t offset;
     long bufr_subset_number;   /* bufr subset number */
     long bufr_group_number;    /* used in bufr */
-    grib_accessor* groups[MAX_NUM_GROUPS];
-    int unpacked;
+    /* grib_accessor* groups[MAX_NUM_GROUPS]; */
     long missingValueLong;
     double missingValueDouble;
+    ProductKind product_kind;
 };
 
 struct grib_multi_handle {
@@ -890,6 +927,7 @@ struct grib_accessor_class
     accessor_unpack_double_element_proc     unpack_double_element;
     accessor_unpack_double_subarray_proc    unpack_double_subarray;
     accessor_clear_proc             clear;
+    accessor_clone_proc             make_clone;
 };
 
 typedef struct grib_multi_support grib_multi_support;
@@ -927,6 +965,7 @@ struct grib_concept_condition {
   grib_concept_condition* next;
   char*               name;
   grib_expression*    expression;
+  grib_iarray*    iarray;
 };
 
 typedef struct grib_concept_value_name grib_concept_value_name;
@@ -1014,6 +1053,8 @@ struct grib_context
 	grib_trie*                      lists;
 #if GRIB_PTHREADS
     pthread_mutex_t                 mutex;
+#elif GRIB_OMP_THREADS
+    omp_nest_lock_t                 mutex;
 #endif
 
 };
@@ -1287,7 +1328,7 @@ struct grib_math{
   int         arity;
 };
 
-typedef double (*mathproc)();
+typedef double (*mathproc)(void);
 typedef int    (*funcproc)(grib_math*,mathproc);
 
 typedef struct func {
@@ -1425,7 +1466,6 @@ typedef struct j2k_encode_helper {
 } j2k_encode_helper;
 
 
-
 #include "grib_api_prototypes.h"
 
 
diff --git a/src/grib_api_prototypes.h b/src/grib_api_prototypes.h
index 7bea96e..f14c7a7 100644
--- a/src/grib_api_prototypes.h
+++ b/src/grib_api_prototypes.h
@@ -58,6 +58,9 @@ grib_action *grib_action_create_assert(grib_context *context, grib_expression *e
 grib_action *grib_action_create_template(grib_context *context, int nofail, const char *name, const char *arg1);
 grib_action *get_empty_template(grib_context *c, int *err);
 
+/* action_class_transient_darray.c */
+grib_action* grib_action_create_transient_darray(grib_context* context, const char* name, grib_darray* darray);
+
 /* action_class_trigger.c */
 grib_action *grib_action_create_trigger(grib_context *context, grib_arguments *args, grib_action *block);
 
@@ -65,9 +68,9 @@ grib_action *grib_action_create_trigger(grib_context *context, grib_arguments *a
 grib_action *grib_action_create_when(grib_context *context, grib_expression *expression, grib_action *block_true, grib_action *block_false);
 
 /* action_class_concept.c */
+grib_concept_value* action_concept_get_concept(grib_accessor* a);
+int action_concept_get_nofail(grib_accessor* a) ;
 grib_action *grib_action_create_concept(grib_context *context, const char *name, grib_concept_value *concept, const char *basename, const char *name_space, const char *defaultkey, const char *masterDir, const char *localDir, const char *ecmfDir, int flags, int nofail);
-const char *grib_concept_evaluate(grib_handle *h, grib_action *act);
-int grib_concept_apply(grib_handle *h, grib_action *act, const char *name);
 
 /* action_class_hash_array.c */
 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);
@@ -82,6 +85,9 @@ grib_action *grib_action_create_set_darray(grib_context *context, const char *na
 /* action_class_set_iarray.c */
 grib_action *grib_action_create_set_iarray(grib_context *context, const char *name, grib_iarray *iarray);
 
+/* action_class_set_sarray.c */
+grib_action* grib_action_create_set_sarray(grib_context* context, const char* name, grib_sarray* sarray);
+
 /* action_class_noop.c */
 grib_action *grib_action_create_noop(grib_context *context, const char *fname);
 
@@ -108,6 +114,7 @@ int grib_is_missing_internal(grib_accessor *a);
 int grib_pack_double(grib_accessor *a, const double *v, size_t *len);
 int grib_pack_expression(grib_accessor *a, grib_expression *e);
 int grib_pack_string(grib_accessor *a, const char *v, size_t *len);
+int grib_pack_string_array(grib_accessor *a, const char **v, size_t *len);
 int grib_pack_long(grib_accessor *a, const long *v, size_t *len);
 int grib_pack_bytes(grib_accessor *a, const unsigned char *v, size_t *len);
 int grib_unpack_bytes(grib_accessor *a, unsigned char *v, size_t *len);
@@ -137,7 +144,7 @@ grib_accessor *grib_next_accessor(grib_accessor *a);
 void grib_resize(grib_accessor *a, size_t new_size);
 int grib_compare_accessors(grib_accessor *a1, grib_accessor *a2, int compare_flags);
 const char *grib_get_type_name(int type);
-int grib_accessor_add_attribute(grib_accessor *a, grib_accessor *attr);
+int grib_accessor_add_attribute(grib_accessor *a, grib_accessor *attr,int nest_if_clash);
 int grib_accessor_replace_attribute(grib_accessor *a, grib_accessor *attr);
 int grib_accessor_delete_attribute(grib_accessor *a, const char *name);
 grib_accessor *grib_accessor_get_attribute_by_index(grib_accessor *a, int index);
@@ -154,7 +161,7 @@ void grib_accessors_list_delete(grib_context *c, grib_accessors_list *al);
 /* grib_concept.c */
 grib_concept_value *grib_concept_value_new(grib_context *c, const char *name, grib_concept_condition *conditions);
 void grib_concept_value_delete(grib_context *c, grib_concept_value *v);
-grib_concept_condition *grib_concept_condition_new(grib_context *c, const char *name, grib_expression *expression);
+grib_concept_condition *grib_concept_condition_new(grib_context *c, const char *name, grib_expression *expression, grib_iarray* iarray);
 void grib_concept_condition_delete(grib_context *c, grib_concept_condition *v);
 
 /* grib_hash_array.c */
@@ -266,10 +273,13 @@ size_t grib_viarray_used_size(grib_viarray *v);
 /* grib_accessor_class_bufr_data.c */
 
 /* grib_accessor_class_bufr_data_array.c */
+grib_accessor* accessor_bufr_data_element_clone(grib_accessor* a,grib_section* s);
+grib_vsarray *accessor_bufr_data_array_get_stringValues(grib_accessor *a);
 grib_accessors_list *accessor_bufr_data_array_get_dataAccessors(grib_accessor *a);
 void accessor_bufr_data_array_set_unpackMode(grib_accessor *a, int unpackMode);
 
 /* grib_accessor_class_bufr_data_element.c */
+grib_accessor* grib_accessor_clone(grib_accessor* a,grib_section* s,int* err);
 void accessor_bufr_data_element_set_index(grib_accessor *a, long index);
 void accessor_bufr_data_element_set_type(grib_accessor *a, int type);
 void accessor_bufr_data_element_set_numberOfSubsets(grib_accessor *a, long numberOfSubsets);
@@ -277,16 +287,20 @@ void accessor_bufr_data_element_set_subsetNumber(grib_accessor *a, long subsetNu
 void accessor_bufr_data_element_set_compressedData(grib_accessor *a, int compressedData);
 void accessor_bufr_data_element_set_descriptors(grib_accessor *a, bufr_descriptors_array *descriptors);
 void accessor_bufr_data_element_set_numericValues(grib_accessor *a, grib_vdarray *numericValues);
-void accessor_bufr_data_element_set_stringValues(grib_accessor *a, grib_sarray *stringValues);
+void accessor_bufr_data_element_set_stringValues(grib_accessor *a, grib_vsarray *stringValues);
 void accessor_bufr_data_element_set_elementsDescriptorsIndex(grib_accessor *a, grib_viarray *elementsDescriptorsIndex);
 
 /* grib_accessor_class_bufr_elements_table.c */
 char **str_split(char *a_str, const char a_delim);
-int bufr_is_marker(int code);
+int bufr_descriptor_is_marker(bufr_descriptor* d);
 bufr_descriptor *accessor_bufr_elements_table_get_descriptor(grib_accessor *a, int code, int *err);
 
 /* grib_accessor_class_bufr_group.c */
 
+/* grib_accessor_class_bufr_string_values.c */
+
+/* grib_accessor_class_pack_bufr_values.c */
+
 /* grib_accessor_class_group.c */
 
 /* grib_accessor_class_unpack_bufr_values.c */
@@ -330,6 +344,8 @@ void grib_update_paddings(grib_section *s);
 
 /* grib_accessor_class_change_scanning_direction.c */
 
+/* grib_accessor_class_check_internal_version.c */
+
 /* grib_accessor_class_codeflag.c */
 
 /* grib_accessor_class_smart_table.c */
@@ -455,6 +471,8 @@ int grib_g1_step_apply_units(long *start, long *theEnd, long *step_unit, long *P
 
 /* grib_accessor_class_missing.c */
 
+/* grib_accessor_class_octahedral_gaussian.c */
+
 /* grib_accessor_class_offset_file.c */
 
 /* grib_accessor_class_scale.c */
@@ -609,6 +627,7 @@ void accessor_variable_set_type(grib_accessor *a, int type);
 /* grib_accessor_class_unexpanded_descriptors.c */
 
 /* grib_accessor_class_expanded_descriptors.c */
+int grib_accessor_class_expanded_descriptors_set_do_expand(grib_accessor *a, long do_expand);
 bufr_descriptors_array *grib_accessor_class_expanded_descriptors_get_expanded(grib_accessor *a, int *err);
 
 /* grib_accessor_class_bufrdc_expanded_descriptors.c */
@@ -767,6 +786,7 @@ int grib_init_accessor_from_handle(grib_loader *loader, grib_accessor *ga, grib_
 unsigned long grib_decode_unsigned_byte_long(const unsigned char *p, long o, int l);
 long grib_decode_signed_long(const unsigned char *p, long o, int l);
 int grib_encode_signed_long(unsigned char *p, long val, long o, int l);
+void grib_set_bits_on(unsigned char *p, long *bitp, long nbits);
 int grib_get_bit(const unsigned char *p, long bitp);
 void grib_set_bit(unsigned char *p, long bitp, int val);
 long grib_decode_signed_longb(const unsigned char *p, long *bitp, long nbits);
@@ -840,6 +860,7 @@ grib_buffer *grib_create_growable_buffer(const grib_context *c);
 grib_buffer *grib_new_buffer(const grib_context *c, unsigned char *data, size_t buflen);
 void grib_buffer_delete(const grib_context *c, grib_buffer *b);
 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);
@@ -896,7 +917,6 @@ void grib_context_set_logging_proc(grib_context *c, grib_log_proc p);
 long grib_get_api_version(void);
 void grib_print_api_version(FILE *out);
 grib_context *grib_context_get_default(void);
-grib_context *grib_context_new(grib_context *parent);
 char *grib_context_full_defs_path(grib_context *c, const char *basename);
 char *grib_samples_path(const grib_context *c);
 void grib_context_free(const grib_context *c, void *p);
@@ -972,6 +992,8 @@ grib_handle *grib_handle_clone(grib_handle *h);
 grib_handle *codes_handle_new_from_file(grib_context *c, FILE *f, ProductKind product, int *error);
 grib_handle *codes_grib_handle_new_from_file(grib_context *c, FILE *f, int *error);
 grib_handle *codes_bufr_handle_new_from_file(grib_context *c, FILE *f, int *error);
+grib_handle *codes_metar_handle_new_from_file(grib_context *c, FILE *f, int *error);
+grib_handle *codes_gts_handle_new_from_file(grib_context *c, FILE *f, int *error);
 grib_handle *grib_handle_new_from_message_copy(grib_context *c, const void *data, size_t size);
 grib_handle *grib_handle_new_from_partial_message_copy(grib_context *c, const void *data, size_t size);
 grib_handle *grib_handle_new_from_partial_message(grib_context *c, void *data, size_t buflen);
@@ -1026,6 +1048,7 @@ int grib_hash_keys_get_size(grib_itrie *t);
 /* grib_io.c */
 off_t stdio_tell(void *data);
 int stdio_seek(void *data, off_t len);
+int stdio_seek_from_start(void *data, off_t len);
 size_t stdio_read(void *data, void *buf, size_t len, int *err);
 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);
@@ -1066,7 +1089,7 @@ grib_rule_entry *grib_new_rule_entry(grib_context *c, const char *name, grib_exp
 grib_rule *grib_new_rule(grib_context *c, grib_expression *condition, grib_rule_entry *entries);
 
 /* grib_keys_iterator.c */
-grib_keys_iterator *grib_keys_iterator_new(grib_handle *h, unsigned long filter_flags, char *name_space);
+grib_keys_iterator *grib_keys_iterator_new(grib_handle *h, unsigned long filter_flags, const char *name_space);
 int grib_keys_iterator_set_flags(grib_keys_iterator *ki, unsigned long flags);
 int grib_keys_iterator_rewind(grib_keys_iterator *ki);
 int grib_keys_iterator_next(grib_keys_iterator *kiter);
@@ -1081,14 +1104,14 @@ int grib_keys_iterator_get_native_type(grib_keys_iterator *kiter);
 
 /* grib_parse_utils.c */
 int grib_recompose_name(grib_handle *h, grib_accessor *observer, const char *uname, char *fname, int fail);
-int grib_accessor_print(grib_accessor *a, int has_rank, const char *name, int type, const char *format, const char *separator, int maxcols, int *newline, FILE *out);
-int grib_accessors_list_print(grib_accessors_list *al, const char *name, int type, const char *format, const char *separator, int maxcols, int *newline, FILE *out);
+int grib_accessor_print(grib_accessor *a, const char *name, int type, const char *format, const char *separator, int maxcols, int *newline, FILE *out);
+int grib_accessors_list_print(grib_handle *h,grib_accessors_list *al, const char *name, int type, const char *format, const char *separator, int maxcols, int *newline, FILE *out);
 int grib_recompose_print(grib_handle *h, grib_accessor *observer, const char *uname, int fail, FILE *out);
 grib_action_file *grib_find_action_file(const char *fname, grib_action_file_list *afl);
 void grib_push_action_file(grib_action_file *af, grib_action_file_list *afl);
 int grib_yywrap(void);
 int grib_yyerror(const char *msg);
-void grib_parser_include(const char *fname);
+void grib_parser_include(const char *included_fname);
 grib_concept_value *grib_parse_concept_file(grib_context *gc, const char *filename);
 grib_hash_array_value *grib_parse_hash_array_file(grib_context *gc, const char *filename);
 grib_rule *grib_parse_rules_file(grib_context *gc, const char *filename);
@@ -1099,7 +1122,6 @@ int grib_type_to_int(char id);
 char *get_rank(const char *name, long *rank);
 char *get_condition(const char *name, codes_condition *condition);
 grib_accessors_list *grib_find_accessors_list(grib_handle *h, const char *name);
-int has_rank(const char *name);
 char *grib_split_name_attribute(grib_context *c, const char *name, char *attribute_name);
 grib_accessor *grib_find_accessor(grib_handle *h, const char *name);
 grib_accessor *grib_find_attribute(grib_handle *h, const char *name, const char *attr_name, int *err);
@@ -1118,6 +1140,7 @@ grib_handle *grib_external_template(grib_context *c, const char *name);
 char *grib_external_template_path(grib_context *c, const char *name);
 
 /* grib_dependency.c */
+grib_handle* grib_handle_of_accessor(grib_accessor* a);
 void grib_dependency_add(grib_accessor *observer, grib_accessor *observed);
 void grib_dependency_remove_observed(grib_accessor *observed);
 int grib_dependency_notify_change(grib_accessor *observed);
@@ -1135,6 +1158,7 @@ int grib_copy_namespace(grib_handle *dest, const char *name, grib_handle *src);
 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_clear(grib_handle *h, const char *name);
@@ -1306,6 +1330,7 @@ grib_iterator *grib_iterator_factory(grib_handle *h, grib_arguments *args, unsig
 /* grib_iterator_class_gen.c */
 
 /* grib_iterator_class_latlon.c */
+void unrotate(grib_handle *h, const double inlat, const double inlon, const double angleOfRot, const double southPoleLat, const double southPoleLon, double *outlat, double *outlon);
 
 /* grib_iterator_class_regular.c */
 
@@ -1330,7 +1355,6 @@ double grib_arguments_get_double(grib_handle *h, grib_arguments *args, int n);
 grib_expression *grib_arguments_get_expression(grib_handle *h, grib_arguments *args, int n);
 
 /* grib_util.c */
-double rint(double x);
 grib_handle *grib_util_sections_copy(grib_handle *hfrom, grib_handle *hto, int what, int *err);
 grib_string_list *grib_util_get_param_id(const char *mars_param);
 grib_string_list *grib_util_get_mars_param(const char *param_id);
@@ -1341,6 +1365,15 @@ int is_productDefinitionTemplateNumber_EPS(long productDefinitionTemplateNumber)
 int is_productDefinitionTemplateNumber_Chemical(long productDefinitionTemplateNumber);
 int is_productDefinitionTemplateNumber_Aerosol(long productDefinitionTemplateNumber);
 int is_index_file(const char *filename);
+char get_dir_separator_char(void);
+const char *extract_filename(const char *filepath);
+int is_gaussian_global(
+        double lat1, double lat2, double lon1, double lon2,/* bounding box*/
+        long num_points_equator, /* num points on latitude at equator */
+        const double* latitudes, /* array of Gaussian latitudes (size 2*N) */
+        double angular_precision /* tolerance for angle comparison */
+);
+char *codes_getenv(const char *name);
 
 /* compile.c */
 void grib_compile_flags(grib_compiler *c, long flags);
@@ -1388,6 +1421,7 @@ const char *grib_get_git_sha1(void);
 
 /* grib_bits_any_endian.c */
 int grib_is_all_bits_one(long val, long nbits);
+int grib_encode_string(const unsigned char *bitStream, long *bitOffset, size_t numberOfCharacters, char *string);
 char *grib_decode_string(const unsigned char *bitStream, long *bitOffset, size_t numberOfCharacters, char *string);
 unsigned long grib_decode_unsigned_long(const unsigned char *p, long *bitp, long nbits);
 int grib_encode_unsigned_long(unsigned char *p, unsigned long val, long *bitp, long nbits);
@@ -1400,3 +1434,9 @@ int grib_decode_double_array_complex(const unsigned char *p, long *bitp, long nb
 int grib_encode_long_array(size_t n_vals, const long *val, long bits_per_value, unsigned char *p, long *off);
 int grib_encode_double_array(size_t n_vals, const double *val, long bits_per_value, double reference_value, double d, double divisor, unsigned char *p, long *off);
 int grib_encode_double_array_complex(size_t n_vals, double *val, long nbits, double reference_value, double *scal, double d, double divisor, unsigned char *p, long *bitp);
+
+
+long accessor_raw_get_offset(grib_accessor* a);
+void accessor_raw_set_length(grib_accessor* a,size_t len);
+int accessor_bufr_data_array_create_keys(grib_accessor* a,long onlySubset,long startSubset,long endSubset);
+int accessor_bufr_data_array_process_elements(grib_accessor* a,int flag,long onlySubset,long startSubset,long endSubset);
diff --git a/src/grib_bits.c b/src/grib_bits.c
index 8cfda5a..f975903 100644
--- a/src/grib_bits.c
+++ b/src/grib_bits.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -108,6 +108,13 @@ static void grib_set_bit_on( unsigned char* p, long* bitp){
     (*bitp)++;
 }
 
+void grib_set_bits_on( unsigned char* p, long* bitp,long nbits){
+    int i;
+    for (i=0;i<nbits;i++) {
+      grib_set_bit_on(p,bitp);
+    }
+}
+
 static void grib_set_bit_off( unsigned char* p, long* bitp){
 
     p +=  *bitp/8;
diff --git a/src/grib_bits_any_endian.c b/src/grib_bits_any_endian.c
index da9f94d..1a6cca0 100644
--- a/src/grib_bits_any_endian.c
+++ b/src/grib_bits_any_endian.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -22,14 +22,14 @@ typedef struct bits_all_one_t {
 static bits_all_one_t bits_all_one={0,0,{0,}};
 
 static void init_bits_all_one() {
-   int size=sizeof(long)*8;
-   long* v=0;
-   unsigned long cmask=-1;
-   bits_all_one.size=size;
-   bits_all_one.inited=1;
-   v=bits_all_one.v+size;
-   *v= cmask << size;
-   while (size>0)  *(--v)= ~(cmask << --size);
+    int size=sizeof(long)*8;
+    long* v=0;
+    unsigned long cmask=-1;
+    bits_all_one.size=size;
+    bits_all_one.inited=1;
+    v=bits_all_one.v+size;
+    *v= cmask << size;
+    while (size>0)  *(--v)= ~(cmask << --size);
 
 }
 
@@ -40,173 +40,241 @@ int grib_is_all_bits_one(long val, long nbits) {
 
 }
 
-
-char* grib_decode_string(const unsigned char* bitStream, long *bitOffset, size_t numberOfCharacters,char* string)
+int grib_encode_string(const unsigned char* bitStream, long *bitOffset, size_t numberOfCharacters,char* string)
 {
-  size_t i;
-  long byteOffset = *bitOffset / 8;
-  int remainder = *bitOffset % 8;
-  unsigned char c;
-  unsigned char* p;
-  char* s=string;
-  unsigned char mask[] ={ 0, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE };
-  int remainderComplement=8-remainder;
+    size_t i;
+    int err=0;
+    long byteOffset = *bitOffset / 8;
+    int remainder = *bitOffset % 8;
+    unsigned char c;
+    unsigned char* p;
+    unsigned char mask[] ={ 0, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE };
+    int remainderComplement=8-remainder;
+    char str[512]={0,};
+    char *s=str;
+
+    Assert(numberOfCharacters<512);
+
+    if (string) memcpy(s,string,strlen(string));
+
+    /* if (remainder) byteOffset++; */
 
-  if (numberOfCharacters==0) return string;
+    if (numberOfCharacters==0) return err;
 
-  p=(unsigned char*)bitStream+byteOffset;
+    p=(unsigned char*)bitStream+byteOffset;
 
-  if ( remainder == 0 )  {
-    memcpy(string,bitStream+byteOffset,numberOfCharacters);
+    if ( remainder == 0 )  {
+        memcpy(p,str,numberOfCharacters);
+        *bitOffset+=numberOfCharacters*8;
+        return err;
+    }
+
+    for (i=0;i<numberOfCharacters;i++) {
+        c=((*s)>>remainder) & ~mask[remainder];
+        *p |= c;
+        p++;
+        *p = ((*s)<<remainderComplement) & mask[remainder];
+        s++;
+    }
     *bitOffset+=numberOfCharacters*8;
-    return string;
-  }
-
-  for (i=0;i<numberOfCharacters;i++) {
-    c=(*p)<<remainder;
-    p++;
-    *s = ( c | ( (*p) & mask[remainder] )>>remainderComplement );
-    s++;
-  }
-  *bitOffset+=numberOfCharacters*8;
-  return string;
+    return err;
 }
 
-unsigned long grib_decode_unsigned_long(const unsigned char* p, long *bitp, long nbits)
+char* grib_decode_string(const unsigned char* bitStream, long *bitOffset, size_t numberOfCharacters,char* string)
 {
-  int i;
-  long ret = 0;
-  long o = *bitp/8;
-  int l = nbits/8;
+    size_t i;
+    long byteOffset = *bitOffset / 8;
+    int remainder = *bitOffset % 8;
+    unsigned char c;
+    unsigned char* p;
+    char* s=string;
+    unsigned char mask[] ={ 0, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE };
+    int remainderComplement=8-remainder;
+
+    if (numberOfCharacters==0) return string;
+
+    p=(unsigned char*)bitStream+byteOffset;
+
+    if ( remainder == 0 )  {
+        memcpy(string,bitStream+byteOffset,numberOfCharacters);
+        *bitOffset+=numberOfCharacters*8;
+        return string;
+    }
 
-  if (nbits==0) return 0;
+    for (i=0;i<numberOfCharacters;i++) {
+        c=(*p)<<remainder;
+        p++;
+        *s = ( c | ( (*p) & mask[remainder] )>>remainderComplement );
+        s++;
+    }
+    *bitOffset+=numberOfCharacters*8;
+    return string;
+}
 
-  if(nbits > max_nbits)
-  {
-    int bits = nbits;
-    int mod = bits % max_nbits;
+/* A mask with x least-significant bits set, possibly 0 or >=32 */
+/* -1UL is 1111111... in every bit in binary representation */
+#define BIT_MASK(x) \
+        (((x) >= sizeof(unsigned long) * 8) ? \
+                (unsigned long) -1UL : (1UL << (x)) - 1)
+/**
+ * decode a value consisting of nbits from an octet-bitstream to long-representation
+ *
+ * @param p input bitstream, for technical reasons put into octets
+ * @param bitp current start position in the bitstream
+ * @param nbits number of bits needed to build a number (e.g. 8=byte, 16=short, 32=int, but also other sizes allowed)
+ * @return value encoded as 32/64bit numbers
+ */
+unsigned long grib_decode_unsigned_long(const unsigned char* p, long *bitp, long nbits)
+{
+    unsigned long ret = 0;
+    long oc = *bitp/8;
+    unsigned long mask = 0;
+    long pi = 0;
+    int usefulBitsInByte = 0;
+    long bitsToRead = 0;
 
-    if(mod != 0)
-    {
-      int e=grib_decode_unsigned_long(p,bitp,mod);
-      Assert( e == 0);
-      bits -= mod;
-    }
+    if (nbits==0) return 0;
 
-    while(bits > max_nbits)
+    if(nbits > max_nbits)
     {
-      int e=grib_decode_unsigned_long(p,bitp,max_nbits);
-      Assert( e == 0);
-      bits -= max_nbits;
+        int bits = nbits;
+        int mod = bits % max_nbits;
+
+        if(mod != 0)
+        {
+            int e=grib_decode_unsigned_long(p,bitp,mod);
+            Assert( e == 0);
+            bits -= mod;
+        }
+
+        while(bits > max_nbits)
+        {
+            int e=grib_decode_unsigned_long(p,bitp,max_nbits);
+            Assert( e == 0);
+            bits -= max_nbits;
+        }
+
+        return grib_decode_unsigned_long(p,bitp,bits);
     }
-
-    return grib_decode_unsigned_long(p,bitp,bits);
-  }
-
-  if((nbits%8 > 0)||(*bitp%8 > 0)) {
+#if 0
+    long ret2 = 0;
     for(i=0; i< nbits;i++){
-      ret <<= 1;
-      if(grib_get_bit( p, *bitp)) ret += 1;
-      *bitp += 1;
+        ret2 <<= 1;
+        if(grib_get_bit( p, *bitp)) ret2 += 1;
+        *bitp += 1;
     }
+    *bitp -= nbits;
+#else
+    mask = BIT_MASK(nbits);
+    /* pi: position of bitp in p[]. >>3 == /8 */
+    pi = oc;
+    /* number of useful bits in current byte */
+    usefulBitsInByte = 8-(*bitp & 7);
+    /* read at least enough bits (byte by byte) from input */
+    bitsToRead = nbits;
+    while (bitsToRead > 0) {
+        ret  <<= 8;
+        /*   ret += p[pi];     */
+        DebugAssert( (ret & p[pi]) == 0 );
+        ret = ret | p[pi];
+        pi++;
+        bitsToRead -= usefulBitsInByte;
+        usefulBitsInByte = 8;
+    }
+    *bitp += nbits;
+    /* printf("%d %d %d\n", pi, ret, offset); */
+    /* bitsToRead might now be negative (too many bits read) */
+    /* remove those which are too much */
+    ret >>= -1*bitsToRead;
+    /* remove leading bits (from previous value) */
+    ret &= mask;
+    /* printf("%d %d\n", ret2, ret);*/
+#endif
     return ret;
-  }
-
-  ret  <<= 8;
-  ret |= p[o++] ;
-
-  for ( i=1; i<l; i++ )
-  {
-    ret <<= 8;
-    ret |= p[o++] ;
-  }
-  *bitp += nbits;
-
-  return ret;
 }
 
 int grib_encode_unsigned_long(unsigned char* p, unsigned long val ,long *bitp, long nbits)
 {
-  long len = nbits;
-  int s = *bitp % 8;
-  int n = 8 - s;
-  unsigned char tmp = 0; /*for temporary results*/
-
-  if (nbits > max_nbits) {
-    /* TODO: Do some real code here, to support long longs */
-    int bits = nbits;
-    int mod = bits % max_nbits;
-    long zero = 0;
-
-    if (mod != 0) {
-      int e = grib_encode_unsigned_long(p, zero, bitp, mod);
-      /* printf(" -> : encoding %ld bits=%ld %ld\n",zero,(long)mod,*bitp); */
-      Assert(e == 0);
-      bits -= mod;
+    long len = nbits;
+    int s = *bitp % 8;
+    int n = 8 - s;
+    unsigned char tmp = 0; /*for temporary results*/
+
+    if (nbits > max_nbits) {
+        /* TODO: Do some real code here, to support long longs */
+        int bits = nbits;
+        int mod = bits % max_nbits;
+        long zero = 0;
+
+        if (mod != 0) {
+            int e = grib_encode_unsigned_long(p, zero, bitp, mod);
+            /* printf(" -> : encoding %ld bits=%ld %ld\n",zero,(long)mod,*bitp); */
+            Assert(e == 0);
+            bits -= mod;
+        }
+
+        while (bits > max_nbits) {
+            int e = grib_encode_unsigned_long(p, zero, bitp, max_nbits);
+            /* printf(" -> : encoding %ld bits=%ld %ld\n",zero,(long)max_nbits,*bitp); */
+            Assert(e == 0);
+            bits -= max_nbits;
+        }
+
+        /* printf(" -> : encoding %ld bits=%ld %ld\n",val,(long)bits,*bitp); */
+        return grib_encode_unsigned_long(p, val, bitp, bits);
     }
 
-    while (bits > max_nbits) {
-      int e = grib_encode_unsigned_long(p, zero, bitp, max_nbits);
-      /* printf(" -> : encoding %ld bits=%ld %ld\n",zero,(long)max_nbits,*bitp); */
-      Assert(e == 0);
-      bits -= max_nbits;
+    if (s)
+        p += (*bitp >> 3); /* skip the bytes */
+    else
+        p += (*bitp >> 3); /* skip the bytes */
+
+    /* head */
+    if (s) {
+        len -= n;
+        if (len < 0) {
+            tmp = ((val << -len) | ((*p) & dmasks[n]));
+        } else {
+            tmp = ((val >> len) | ((*p) & dmasks[n]));
+        }
+        *p = tmp;
+        (*p)++;
+
+        /*Beware of code like this! compiler warning: operation may be undefined
+      Read GCC manual on -Wsequence-point*/
+        /* *p  = ((val << -len) | ((*p)++ & dmasks[n])); */
     }
 
-    /* printf(" -> : encoding %ld bits=%ld %ld\n",val,(long)bits,*bitp); */
-    return grib_encode_unsigned_long(p, val, bitp, bits);
-  }
-
-  if (s)
-    p += (*bitp >> 3); /* skip the bytes */
-  else
-    p += (*bitp >> 3); /* skip the bytes */
-
-  /* head */
-  if (s) {
-    len -= n;
-    if (len < 0) {
-      tmp = ((val << -len) | ((*p) & dmasks[n]));
-    } else {
-      tmp = ((val >> len) | ((*p) & dmasks[n]));
+    /*  write the middle words */
+    while (len >= 8) {
+        len -= 8;
+        *p++ = (val >> len);
     }
-    *p = tmp;
-    (*p)++;
-
-    /*Beware of code like this! compiler warning: operation may be undefined
-      Read GCC manual on -Wsequence-point*/
-    /* *p  = ((val << -len) | ((*p)++ & dmasks[n])); */
-  }
-
-  /*  write the middle words */
-  while (len >= 8) {
-    len -= 8;
-    *p++ = (val >> len);
-  }
 
-  /*  write the end bits */
-  if (len)
-    *p = (val << (8 - len));
+    /*  write the end bits */
+    if (len)
+        *p = (val << (8 - len));
 
-  *bitp += nbits;
-  return GRIB_SUCCESS;
+    *bitp += nbits;
+    return GRIB_SUCCESS;
 }
 
 int grib_encode_unsigned_longb(unsigned char* p, unsigned long val ,long *bitp, long nb)
 {
-	long  i = 0;
-
-	if (nb > max_nbits) {
-		fprintf(stderr, "Number of bits (%ld) exceeds maximum number of bits (%d)\n", nb, max_nbits);
-		Assert(0);
-	}
-
-	for(i=nb-1; i >= 0; i--){
-		if(test(val,i))
-			grib_set_bit_on (p, bitp);
-		else
-			grib_set_bit_off(p, bitp);
-	}
-	return GRIB_SUCCESS;
+    long  i = 0;
+
+    if (nb > max_nbits) {
+        fprintf(stderr, "Number of bits (%ld) exceeds maximum number of bits (%d)\n", nb, max_nbits);
+        Assert(0);
+    }
+
+    for(i=nb-1; i >= 0; i--){
+        if(test(val,i))
+            grib_set_bit_on (p, bitp);
+        else
+            grib_set_bit_off(p, bitp);
+    }
+    return GRIB_SUCCESS;
 }
 
 #if OMP_PACKING
diff --git a/src/grib_bits_any_endian_omp.c b/src/grib_bits_any_endian_omp.c
index d5ca93c..01740ae 100644
--- a/src/grib_bits_any_endian_omp.c
+++ b/src/grib_bits_any_endian_omp.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -96,6 +96,8 @@ int grib_decode_double_array(const unsigned char* p, long *bitp, long bitsPerVal
   return 0;
 }
 
+
+
 int grib_decode_double_array_complex(const unsigned char* p, long *bitp, long nbits,double reference_value,double s,double* d,size_t size,double* val) {
   return GRIB_NOT_IMPLEMENTED;
 }
diff --git a/src/grib_bits_any_endian_simple.c b/src/grib_bits_any_endian_simple.c
index 26231b6..114cb53 100644
--- a/src/grib_bits_any_endian_simple.c
+++ b/src/grib_bits_any_endian_simple.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -12,156 +12,191 @@
  *   Enrico Fucile  - 19.06.2007                                           *
  *                                                                         *
  ***************************************************************************/
-
+/**
+ * decode an array of n_vals values from a octet-stream
+ *
+ * @param p input bitstream, for technical reasons put into octets
+ * @param bitp current position in the bitstream
+ * @param bitsPerValue number of bits needed to build a number (e.g. 8=byte, 16=short, 32=int, but also other sizes allowed)
+ * @param n_vals number of values to decode
+ * @param val output, values encoded as 32/64bit numbers
+ */
 int grib_decode_long_array(const unsigned char* p, long *bitp, long bitsPerValue,
-                             size_t n_vals,long* val) {
-  long i=0;
-  unsigned long lvalue = 0;
+        size_t n_vals,long* val)
+{
+    unsigned long mask = BIT_MASK(bitsPerValue);
 
-  if(bitsPerValue%8)
-  {
-    int j=0;
+    /* pi: position of bitp in p[]. >>3 == /8 */
+    long pi = *bitp / 8;
+    size_t i;
+    /* number of useful bits in current byte */
+    int usefulBitsInByte = 8-(*bitp & 7);
     for(i=0;i < n_vals;i++) {
-      lvalue=0;
-      for(j=0; j< bitsPerValue;j++){
-        lvalue <<= 1;
-        if(grib_get_bit( p, *bitp)) lvalue += 1;
-        *bitp += 1;
-      }
-      val[i] = lvalue;
+        /* read at least enough bits (byte by byte) from input */
+        long bitsToRead = bitsPerValue;
+        long ret = 0;
+        while (bitsToRead > 0) {
+            ret <<= 8;
+            /*   ret += p[pi];         */
+            /*   Assert( (ret & p[pi]) == 0 ); */
+            ret = ret | p[pi];
+            pi++;
+            bitsToRead -= usefulBitsInByte;
+            usefulBitsInByte = 8;
+        }
+        *bitp += bitsPerValue;
+        /*fprintf(stderr, "%d %d %d %d %d\n", bitsPerValue, *bitp, pi, ret, bitsToRead);*/
+        /* bitsToRead might now be negative (too many bits read) */
+        /* remove those which are too much */
+        ret >>= -1*bitsToRead;
+        /* remove leading bits (from previous value) */
+        ret &= mask;
+        val[i] = ret;
+
+        usefulBitsInByte = -1*bitsToRead; /* prepare for next round */
+        if (usefulBitsInByte > 0) {
+            pi--; /* reread the current byte */
+        } else {
+            usefulBitsInByte = 8; /* start with next full byte */
+        }
     }
-  }  else  {
-    int bc;
-    int l = bitsPerValue/8;
-    size_t o = *bitp/8;
-
-    for(i=0;i < n_vals;i++)
-    {
-      lvalue  = 0;
-      lvalue  <<= 8;
-      lvalue |= p[o++] ;
-
-      for ( bc=1; bc<l; bc++ )
-      {
-        lvalue <<= 8;
-        lvalue |= p[o++] ;
-      }
-      val[i] = lvalue;
-    }
-	*bitp+=bitsPerValue*n_vals;
-  }
-
-  return 0;
+    return 0;
 }
 
-
+/**
+ * decode an array of n_vals values from an octet-bitstream to double-representation
+ *
+ * @param p input bitstream, for technical reasons put into octets
+ * @param bitp current position in the bitstream
+ * @param bitsPerValue number of bits needed to build a number (e.g. 8=byte, 16=short, 32=int, but also other sizes allowed)
+ * @param n_vals number of values to decode
+ * @param val output, values encoded as 32/64bit numbers
+ */
 int grib_decode_double_array(const unsigned char* p, long *bitp, long bitsPerValue,
-                             double reference_value,double s,double d,
-                             size_t n_vals,double* val) {
-  long i=0;
-  unsigned long lvalue = 0;
-  double x;
-
-  if(bitsPerValue%8)
-  {
+        double reference_value,double s,double d,
+        size_t n_vals,double* val) {
+    long i=0;
+    unsigned long lvalue = 0;
+    double x;
+
+#if 0
+    /* slow reference code */
     int j=0;
     for(i=0;i < n_vals;i++) {
-      lvalue=0;
-      for(j=0; j< bitsPerValue;j++){
-        lvalue <<= 1;
-        if(grib_get_bit( p, *bitp)) lvalue += 1;
-        *bitp += 1;
-      }
-	  x=((lvalue*s)+reference_value)*d;
-      val[i] = (double)x; 
+        lvalue=0;
+        for(j=0; j< bitsPerValue;j++){
+            lvalue <<= 1;
+            if(grib_get_bit( p, *bitp)) lvalue += 1;
+            *bitp += 1;
+        }
+        x=((lvalue*s)+reference_value)*d;
+        val[i] = (double)x;
     }
-  }  else  {
-    int bc;
-    int l = bitsPerValue/8;
-    size_t o = 0;
-
-    for(i=0;i < n_vals;i++)
-    {
-      lvalue  = 0;
-      lvalue  <<= 8;
-      lvalue |= p[o++] ;
-
-      for ( bc=1; bc<l; bc++ )
-      {
-        lvalue <<= 8;
-        lvalue |= p[o++] ;
-      }
-	  x=((lvalue*s)+reference_value)*d;
-      val[i] = (double)x;
+}
+#endif
+unsigned long mask = BIT_MASK(bitsPerValue);
+
+/* pi: positin of bitp in p[]. >>3 == /8 */
+long pi = *bitp / 8;
+/* some bits might of the current byte at pi might be used */
+/* by the previous number usefulBitsInByte gives remaining unused bits */
+/* number of useful bits in current byte */
+int usefulBitsInByte = 8-(*bitp & 7);
+for(i=0;i < n_vals;i++) {
+    /* value read as long */
+    long bitsToRead = 0;
+    lvalue  = 0;
+    bitsToRead = bitsPerValue;
+    /* read one byte after the other to lvalue until >= bitsPerValue are read */
+    while (bitsToRead > 0) {
+        lvalue  <<= 8;
+        lvalue += p[pi];
+        pi++;
+        bitsToRead -= usefulBitsInByte;
+        usefulBitsInByte = 8;
     }
-  }
-
-  return 0;
+    *bitp += bitsPerValue;
+    /* bitsToRead is now <= 0, remove the last bits */
+    lvalue >>= -1*bitsToRead;
+    /* set leading bits to 0 - removing bits used for previous number */
+    lvalue &= mask;
+
+    usefulBitsInByte = -1*bitsToRead; /* prepare for next round */
+    if (usefulBitsInByte > 0) {
+        pi--; /* reread the current byte */
+    } else {
+        usefulBitsInByte = 8; /* start with next full byte */
+    }
+    /* scaling and move value to output */
+    x=((lvalue*s)+reference_value)*d;
+    val[i] = (double)x;
+}
+return 0;
 }
 
 int grib_decode_double_array_complex(const unsigned char* p, long *bitp, long nbits,double reference_value,double s,double* d,size_t size,double* val) {
-  return GRIB_NOT_IMPLEMENTED;
+    return GRIB_NOT_IMPLEMENTED;
 }
 
 int grib_encode_long_array(size_t n_vals,const long* val,long bits_per_value,unsigned char* p,long *off)
 {
-  size_t i=0;
-  unsigned long unsigned_val=0;
-  unsigned char *encoded=p;
-  if(bits_per_value%8){
-    for(i=0;i< n_vals;i++){
-	  unsigned_val=val[i];
-      grib_encode_unsigned_longb(encoded, unsigned_val, off , bits_per_value);
+    size_t i=0;
+    unsigned long unsigned_val=0;
+    unsigned char *encoded=p;
+    if(bits_per_value%8){
+        for(i=0;i< n_vals;i++){
+            unsigned_val=val[i];
+            grib_encode_unsigned_longb(encoded, unsigned_val, off , bits_per_value);
+        }
+    } else{
+        for(i=0;i< n_vals;i++){
+            int blen=0;
+            blen = bits_per_value;
+            unsigned_val = val[i];
+            while(blen >= 8)
+            {
+                blen   -= 8;
+                *encoded = (unsigned_val >> blen);
+                encoded++;
+                *off+=8;
+            }
+        }
     }
-  } else{
-    for(i=0;i< n_vals;i++){
-    int blen=0;
-      blen = bits_per_value;
-      unsigned_val = val[i];
-      while(blen >= 8)
-      {
-        blen   -= 8;
-        *encoded = (unsigned_val >> blen);
-        encoded++;
-        *off+=8;
-      }
-    }
-  }
-  return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
 
 int grib_encode_double_array(size_t n_vals,const double* val,long bits_per_value,double reference_value,double d,double divisor,unsigned char* p,long *off)
 {
-  size_t i=0;
-  unsigned long unsigned_val=0;
-  unsigned char *encoded=p;
-  double x;
-  if(bits_per_value%8){
-    for(i=0;i< n_vals;i++){
-	  x=(((val[i]*d)-reference_value)*divisor)+0.5;
-      unsigned_val = (unsigned long)x;
-      grib_encode_unsigned_longb(encoded, unsigned_val, off , bits_per_value);
-    }
-  } else{
-    for(i=0;i< n_vals;i++){
-    int blen=0;
-      blen = bits_per_value;
-      x = ((((val[i]*d)-reference_value)*divisor)+0.5);
-      unsigned_val = (unsigned long)x;
-      while(blen >= 8)
-      {
-        blen   -= 8;
-        *encoded = (unsigned_val >> blen);
-        encoded++;
-        *off+=8;
-      }
+    size_t i=0;
+    unsigned long unsigned_val=0;
+    unsigned char *encoded=p;
+    double x;
+    if(bits_per_value%8){
+        for(i=0;i< n_vals;i++){
+            x=(((val[i]*d)-reference_value)*divisor)+0.5;
+            unsigned_val = (unsigned long)x;
+            grib_encode_unsigned_longb(encoded, unsigned_val, off , bits_per_value);
+        }
+    } else{
+        for(i=0;i< n_vals;i++){
+            int blen=0;
+            blen = bits_per_value;
+            x = ((((val[i]*d)-reference_value)*divisor)+0.5);
+            unsigned_val = (unsigned long)x;
+            while(blen >= 8)
+            {
+                blen   -= 8;
+                *encoded = (unsigned_val >> blen);
+                encoded++;
+                *off+=8;
+            }
+        }
     }
-  }
-  return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
 
 int grib_encode_double_array_complex(size_t n_vals,double* val,long nbits,double reference_value,
         double* scal,double d,double divisor,unsigned char* p,long *bitp) {
-  return GRIB_NOT_IMPLEMENTED;
+    return GRIB_NOT_IMPLEMENTED;
 }
 
diff --git a/src/grib_bits_any_endian_vector.c b/src/grib_bits_any_endian_vector.c
index 2f186ca..0b95398 100644
--- a/src/grib_bits_any_endian_vector.c
+++ b/src/grib_bits_any_endian_vector.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_bits_fast_big_endian.c b/src/grib_bits_fast_big_endian.c
index 04b1b42..dacc996 100644
--- a/src/grib_bits_fast_big_endian.c
+++ b/src/grib_bits_fast_big_endian.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_bits_fast_big_endian_omp.c b/src/grib_bits_fast_big_endian_omp.c
index aec667e..ed0d136 100644
--- a/src/grib_bits_fast_big_endian_omp.c
+++ b/src/grib_bits_fast_big_endian_omp.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_bits_fast_big_endian_simple.c b/src/grib_bits_fast_big_endian_simple.c
index 33c2421..2816d63 100644
--- a/src/grib_bits_fast_big_endian_simple.c
+++ b/src/grib_bits_fast_big_endian_simple.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_bits_fast_big_endian_vector.c b/src/grib_bits_fast_big_endian_vector.c
index 5bd4be7..308c3f3 100644
--- a/src/grib_bits_fast_big_endian_vector.c
+++ b/src/grib_bits_fast_big_endian_vector.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -31,7 +31,7 @@ int grib_decode_long_array(const unsigned char* p, long *bitp, long nbits,size_t
   if (size*nbits%max_nbits) sizel++;
 
   x=malloc(sizel*sizeof(unsigned long));
-  memcpy(x,p+bitpv/8,sizel*sizeof(x));
+  memcpy(x,p+bitpv/8,sizel*sizeof(*x));
 /* (void) ftrace_region_end  ("gdda-1"); */
 
   if ( (max_nbits%nbits == 0) && (bitpv%nbits == 0) ) {
@@ -129,7 +129,7 @@ int grib_decode_double_array(const unsigned char* p, long *bitp, long nbits,doub
   if (size*nbits%max_nbits) sizel++;
 
   x=malloc(sizel*sizeof(unsigned long));
-  memcpy(x,p+bitpv/8,sizel*sizeof(x));
+  memcpy(x,p+bitpv/8,sizel*sizeof(*x));
 /* (void) ftrace_region_end  ("gdda-1"); */
 
   if ( (max_nbits%nbits == 0) && (bitpv%nbits == 0) ) {
@@ -220,7 +220,7 @@ int grib_decode_double_array_complex(const unsigned char* p, long *bitp, long nb
   if (size*nbits%max_nbits) sizel++;
 
   x=malloc(sizel*sizeof(unsigned long));
-  memcpy(x,p+bitpv/8,sizel*sizeof(x));
+  memcpy(x,p+bitpv/8,sizel*sizeof(*x));
 
   if ( (max_nbits%nbits == 0) && (bitpv%nbits == 0) ) {
 
diff --git a/src/grib_bits_ibmpow.c b/src/grib_bits_ibmpow.c
index 9e5cfdb..d13d46d 100644
--- a/src/grib_bits_ibmpow.c
+++ b/src/grib_bits_ibmpow.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_bits_ibmpow_opt.c b/src/grib_bits_ibmpow_opt.c
index 0adb0c5..d008b36 100644
--- a/src/grib_bits_ibmpow_opt.c
+++ b/src/grib_bits_ibmpow_opt.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_box.c b/src/grib_box.c
index 5b7a58e..06e6ba7 100644
--- a/src/grib_box.c
+++ b/src/grib_box.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_box_class.c b/src/grib_box_class.c
index 9d6db2f..d559c97 100644
--- a/src/grib_box_class.c
+++ b/src/grib_box_class.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_box_class_gen.c b/src/grib_box_class_gen.c
index 21f47ca..5848ba8 100644
--- a/src/grib_box_class_gen.c
+++ b/src/grib_box_class_gen.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_box_class_reduced_gaussian.c b/src/grib_box_class_reduced_gaussian.c
index ba33750..6d4e825 100644
--- a/src/grib_box_class_reduced_gaussian.c
+++ b/src/grib_box_class_reduced_gaussian.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_box_class_regular_gaussian.c b/src/grib_box_class_regular_gaussian.c
index 60d588c..304b546 100644
--- a/src/grib_box_class_regular_gaussian.c
+++ b/src/grib_box_class_regular_gaussian.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_buffer.c b/src/grib_buffer.c
index f4ef7fd..7b57cae 100644
--- a/src/grib_buffer.c
+++ b/src/grib_buffer.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -65,6 +65,7 @@ grib_buffer* grib_new_buffer(const grib_context* c,unsigned char* data,size_t bu
   b->property = GRIB_USER_BUFFER;
   b->length   = buflen;
   b->ulength  = buflen;
+  b->ulength_bits  = buflen*8;
   b->data     = data;
 
   return b;
@@ -100,10 +101,20 @@ void grib_grow_buffer(const grib_context *c, grib_buffer *b, size_t new_size)
   grib_grow_buffer_to(c,b,len);
 }
 
+void grib_buffer_set_ulength_bits(const grib_context *c, grib_buffer *b, size_t length_bits)
+{
+  size_t length=length_bits/8;
+  if (length_bits%8) length++;
+  grib_grow_buffer_to(c,b,length);
+  b->ulength_bits = length_bits;
+  b->ulength = length;
+}
+
 void grib_buffer_set_ulength(const grib_context *c, grib_buffer *b, size_t length)
 {
   grib_grow_buffer_to(c,b,length);
   b->ulength = length;
+  b->ulength_bits = length*8;
 }
 
 static void update_offsets(grib_accessor* a,long len)
@@ -112,7 +123,7 @@ static void update_offsets(grib_accessor* a,long len)
   {
     grib_section* s = a->sub_section;
     a->offset += len;
-    grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG, "::::: grib_buffer : accessor %s is moving by %d bytes to %ld",a->name ,len, a->offset);
+    grib_context_log(a->context,GRIB_LOG_DEBUG, "::::: grib_buffer : accessor %s is moving by %d bytes to %ld",a->name ,len, a->offset);
     if(s) update_offsets(s->block->first,len);
     a = a->next;
   }
@@ -216,14 +227,14 @@ void grib_buffer_replace( grib_accessor *a, const unsigned char* data,
   long   oldsize  = grib_get_next_position_offset(a)-offset;
   long   increase = (long)newsize - (long)oldsize;
 
-  grib_buffer *buffer     = a->parent->h->buffer;
+  grib_buffer *buffer     = grib_handle_of_accessor(a)->buffer;
   size_t message_length   = buffer->ulength;
 
-  grib_context_log(a->parent->h->context,GRIB_LOG_DEBUG,
+  grib_context_log(a->context,GRIB_LOG_DEBUG,
      "grib_buffer_replace %s offset=%ld oldsize=%ld newsize=%ld message_length=%ld update_paddings=%d\n",
       a->name,(long)offset,oldsize,(long)newsize,(long)message_length,update_paddings);
 
-    grib_buffer_set_ulength(a->parent->h->context,
+    grib_buffer_set_ulength(a->context,
         buffer,
         buffer->ulength+increase);
 
@@ -244,9 +255,9 @@ void grib_buffer_replace( grib_accessor *a, const unsigned char* data,
     if(update_lengths)
     {
       grib_update_size(a,newsize);
-      grib_section_adjust_sizes(a->parent->h->root,1,0);
+      grib_section_adjust_sizes(grib_handle_of_accessor(a)->root,1,0);
       if(update_paddings)
-        grib_update_paddings(a->parent->h->root);
+        grib_update_paddings(grib_handle_of_accessor(a)->root);
     }
   }
 
diff --git a/src/grib_bufr_descriptor.c b/src/grib_bufr_descriptor.c
index 241fedf..5b7f133 100644
--- a/src/grib_bufr_descriptor.c
+++ b/src/grib_bufr_descriptor.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -13,7 +13,7 @@
 
 bufr_descriptor* grib_bufr_descriptor_new(grib_accessor* tables_accessor,int code,int *err) {
   bufr_descriptor* ret=accessor_bufr_elements_table_get_descriptor(tables_accessor,code,err);
-  if (*err) grib_context_log(tables_accessor->parent->h->context,GRIB_LOG_ERROR,
+  if (*err) grib_context_log(tables_accessor->context,GRIB_LOG_ERROR,
       "unable to get descriptor %06d from table",code);
   return ret;
 }
@@ -24,7 +24,7 @@ bufr_descriptor* grib_bufr_descriptor_clone(bufr_descriptor* d) {
 
   if (!d) return NULL;
 
-  cd=grib_context_malloc_clear(d->context,sizeof(bufr_descriptor));
+  cd=(bufr_descriptor*)grib_context_malloc_clear(d->context,sizeof(bufr_descriptor));
 
   cd->code=d->code;
   cd->F=d->F;
@@ -63,7 +63,6 @@ int grib_bufr_descriptor_set_code(grib_accessor* tables_accessor,int code,bufr_d
     v->F=code/100000;
     v->X=(code-v->F*100000)/1000;
     v->Y=(code-v->F*100000)%1000;
-    v->isMarker=bufr_is_marker(code);
   } else {
     if (tables_accessor==NULL) return GRIB_NULL_POINTER;
     d=accessor_bufr_elements_table_get_descriptor(tables_accessor,code,&err);
@@ -100,6 +99,7 @@ void grib_bufr_descriptor_set_width(bufr_descriptor* v,long width) {
 void grib_bufr_descriptor_set_scale(bufr_descriptor* v,long scale) {
   if (!v) return;
   v->scale=scale;
+  if (scale!=0) v->type=BUFR_DESCRIPTOR_TYPE_DOUBLE;
   v->factor=grib_power(-scale,10);
 }
 
diff --git a/src/grib_bufr_descriptors_array.c b/src/grib_bufr_descriptors_array.c
index 563da36..960f85f 100644
--- a/src/grib_bufr_descriptors_array.c
+++ b/src/grib_bufr_descriptors_array.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_compressor.c b/src/grib_compressor.c
index 6de28ed..ead1739 100644
--- a/src/grib_compressor.c
+++ b/src/grib_compressor.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_concept.c b/src/grib_concept.c
index 54c74f2..64f9589 100644
--- a/src/grib_concept.c
+++ b/src/grib_concept.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -33,11 +33,12 @@ void grib_concept_value_delete(grib_context* c,grib_concept_value* v)
 	grib_context_free_persistent(c,v);
 }
 
-grib_concept_condition* grib_concept_condition_new(grib_context* c,const char* name,grib_expression* expression)
+grib_concept_condition* grib_concept_condition_new(grib_context* c,const char* name,grib_expression* expression, grib_iarray* iarray)
 {
 	grib_concept_condition* v = (grib_concept_condition*)grib_context_malloc_clear_persistent(c,sizeof(grib_concept_condition));
 	v->name = grib_context_strdup_persistent(c,name);
 	v->expression = expression;
+  v->iarray=iarray;
 	return v;
 }
 
diff --git a/src/grib_concept_index.c b/src/grib_concept_index.c
index 17c7b6b..24d7685 100644
--- a/src/grib_concept_index.c
+++ b/src/grib_concept_index.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_context.c b/src/grib_context.c
index 03d4bbd..395ae1d 100644
--- a/src/grib_context.c
+++ b/src/grib_context.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -17,6 +17,12 @@
 #include <fcntl.h> /* Windows: for _O_BINARY */
 #endif
 
+#ifdef ENABLE_FLOATING_POINT_EXCEPTIONS
+#define _GNU_SOURCE
+#include <fenv.h>
+int feenableexcept(int excepts);
+#endif
+
 grib_string_list grib_file_not_found;
 
 #if GRIB_PTHREADS
@@ -34,7 +40,23 @@ static void init()
     pthread_mutex_init(&mutex_mem,&attr);
     pthread_mutexattr_destroy(&attr);
 }
+#elif GRIB_OMP_THREADS
+static int once = 0;
+static omp_nest_lock_t mutex_mem;
+static omp_nest_lock_t mutex_c;
 
+static void init()
+{
+    GRIB_OMP_CRITICAL(lock_grib_context_c)
+    {
+        if (once == 0)
+        {
+            omp_init_nest_lock(&mutex_mem);
+            omp_init_nest_lock(&mutex_c);
+            once = 1;
+        }
+    }
+}
 #endif
 
 
@@ -46,7 +68,7 @@ static long cntp = 0;
 
 static void default_long_lasting_free(const grib_context* c, void* p)
 {
-    GRIB_PTHREAD_ONCE(&once,&init);
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
     free(p);
     GRIB_MUTEX_LOCK(&mutex_mem);
     cntp--;
@@ -56,7 +78,7 @@ static void default_long_lasting_free(const grib_context* c, void* p)
 static void* default_long_lasting_malloc(const grib_context* c, size_t size)
 {
     void* ret;
-    GRIB_PTHREAD_ONCE(&once,&init);
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
     GRIB_MUTEX_LOCK(&mutex_mem);
     cntp++;
     GRIB_MUTEX_UNLOCK(&mutex_mem);
@@ -66,7 +88,7 @@ static void* default_long_lasting_malloc(const grib_context* c, size_t size)
 
 static void default_buffer_free(const grib_context* c, void* p)
 {
-    GRIB_PTHREAD_ONCE(&once,&init);
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
     free(p);
     GRIB_MUTEX_LOCK(&mutex_mem);
     cntp--;
@@ -76,7 +98,7 @@ static void default_buffer_free(const grib_context* c, void* p)
 static void* default_buffer_malloc(const grib_context* c, size_t size)
 {
     void* ret;
-    GRIB_PTHREAD_ONCE(&once,&init);
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
     GRIB_MUTEX_LOCK(&mutex_mem);
     cntp++;
     GRIB_MUTEX_UNLOCK(&mutex_mem);
@@ -93,7 +115,7 @@ static void* default_buffer_realloc(const grib_context* c, void* p, size_t size)
 
 static void default_free(const grib_context* c, void* p)
 {
-    GRIB_PTHREAD_ONCE(&once,&init);
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
     free(p);
     GRIB_MUTEX_LOCK(&mutex_mem);
     cnt--;
@@ -103,7 +125,7 @@ static void default_free(const grib_context* c, void* p)
 static void* default_malloc(const grib_context* c, size_t size)
 {
     void* ret;
-    GRIB_PTHREAD_ONCE(&once,&init);
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
     GRIB_MUTEX_LOCK(&mutex_mem);
     cnt++;
     GRIB_MUTEX_UNLOCK(&mutex_mem);
@@ -178,13 +200,13 @@ static void default_log(const grib_context* c, int level, const char* mess)
 {
     if (!c) c=grib_context_get_default();
     if(level == GRIB_LOG_ERROR)   {
-        fprintf(c->log_stream, "GRIB_API ERROR   :  %s\n", mess);
+        fprintf(c->log_stream, "ECCODES ERROR   :  %s\n", mess);
         /*Assert(1==0);*/
     }
-    if(level == GRIB_LOG_FATAL)   fprintf(c->log_stream, "GRIB_API ERROR   :  %s\n", mess);
-    if(level == GRIB_LOG_DEBUG && c->debug>0)   fprintf(c->log_stream, "GRIB_API DEBUG   :  %s\n", mess);
-    if(level == GRIB_LOG_WARNING) fprintf(c->log_stream, "GRIB_API WARNING :  %s\n", mess);
-    if(level == GRIB_LOG_INFO)    fprintf(c->log_stream, "GRIB_API INFO    :  %s\n", mess);
+    if(level == GRIB_LOG_FATAL)   fprintf(c->log_stream, "ECCODES ERROR   :  %s\n", mess);
+    if(level == GRIB_LOG_DEBUG && c->debug>0)   fprintf(c->log_stream, "ECCODES DEBUG   :  %s\n", mess);
+    if(level == GRIB_LOG_WARNING) fprintf(c->log_stream, "ECCODES WARNING :  %s\n", mess);
+    if(level == GRIB_LOG_INFO)    fprintf(c->log_stream, "ECCODES INFO    :  %s\n", mess);
 
     if(level == GRIB_LOG_FATAL) { Assert(0);}
 
@@ -320,9 +342,17 @@ static grib_context default_grib_context = {
 #endif
 };
 
+/* Hopefully big enough. Note: GRIB_DEFINITION_PATH can contain SEVERAL colon-separated sub-paths */
+#define DEF_PATH_MAXLEN 8192
+
 grib_context* grib_context_get_default()
 {
-    GRIB_PTHREAD_ONCE(&once,&init);
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
+    GRIB_MUTEX_LOCK(&mutex_c);
+
+#ifdef ENABLE_FLOATING_POINT_EXCEPTIONS
+    feenableexcept(FE_ALL_EXCEPT & ~FE_INEXACT);
+#endif
 
     if(!default_grib_context.inited)
     {
@@ -339,20 +369,18 @@ grib_context* grib_context_get_default()
         const char *keep_matrix=NULL;
         const char *nounpack=NULL;
 
-        GRIB_MUTEX_LOCK(&mutex_c);
-
-        write_on_fail = getenv("ECCODES_GRIB_WRITE_ON_FAIL");
-        large_constant_fields = getenv("ECCODES_GRIB_LARGE_CONSTANT_FIELDS");
-        no_abort = getenv("ECCODES_NO_ABORT");
-        debug = getenv("ECCODES_DEBUG");
-        gribex=getenv("ECCODES_GRIBEX_MODE_ON");
-        ieee_packing=getenv("ECCODES_GRIB_IEEE_PACKING");
-        io_buffer_size=getenv("ECCODES_IO_BUFFER_SIZE");
-        log_stream=getenv("ECCODES_LOG_STREAM");
-        no_big_group_split=getenv("ECCODES_GRIB_NO_BIG_GROUP_SPLIT");
-        no_spd=getenv("ECCODES_GRIB_NO_SPD");
-        keep_matrix=getenv("ECCODES_GRIB_KEEP_MATRIX");
-        nounpack=getenv("ECCODES_NO_UNPACK");
+        write_on_fail = codes_getenv("ECCODES_GRIB_WRITE_ON_FAIL");
+        large_constant_fields = codes_getenv("ECCODES_GRIB_LARGE_CONSTANT_FIELDS");
+        no_abort = codes_getenv("ECCODES_NO_ABORT");
+        debug = codes_getenv("ECCODES_DEBUG");
+        gribex = codes_getenv("ECCODES_GRIBEX_MODE_ON");
+        ieee_packing = codes_getenv("ECCODES_GRIB_IEEE_PACKING");
+        io_buffer_size = codes_getenv("ECCODES_IO_BUFFER_SIZE");
+        log_stream = codes_getenv("ECCODES_LOG_STREAM");
+        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");
+        nounpack = codes_getenv("ECCODES_NO_UNPACK");
 
         /* 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.
@@ -373,7 +401,7 @@ grib_context* grib_context_get_default()
         default_grib_context.gribex_mode_on=gribex ? atoi(gribex) : 0;
         default_grib_context.large_constant_fields = large_constant_fields ? atoi(large_constant_fields) : 0;
         default_grib_context.ieee_packing=ieee_packing ? atoi(ieee_packing) : 0;
-        default_grib_context.grib_samples_path = getenv("ECCODES_SAMPLES_PATH");
+        default_grib_context.grib_samples_path = codes_getenv("ECCODES_SAMPLES_PATH");
         default_grib_context.log_stream=stderr;
         if (!log_stream) {
             default_grib_context.log_stream=stderr;
@@ -388,7 +416,7 @@ grib_context* grib_context_get_default()
             default_grib_context.grib_samples_path = ECCODES_SAMPLES_PATH ;
 #endif
 
-        default_grib_context.grib_definition_files_path = getenv("ECCODES_DEFINITION_PATH");
+        default_grib_context.grib_definition_files_path = codes_getenv("ECCODES_DEFINITION_PATH");
 #ifdef ECCODES_DEFINITION_PATH
         if(!default_grib_context.grib_definition_files_path) {
             default_grib_context.grib_definition_files_path = ECCODES_DEFINITION_PATH ;
@@ -399,6 +427,27 @@ grib_context* grib_context_get_default()
         }
 #endif
 
+        /* GRIB-779: Special case for ECMWF testing. Not for external use! */
+        /* Append the new path to our existing path */
+        {
+            const char* test_defs = codes_getenv("_ECCODES_ECMWF_TEST_DEFINITION_PATH");
+            const char* test_samp = codes_getenv("_ECCODES_ECMWF_TEST_SAMPLES_PATH");
+            if (test_defs) {
+                char buffer[DEF_PATH_MAXLEN];
+                strcpy(buffer, default_grib_context.grib_definition_files_path);
+                strcat(buffer, ":");
+                strcat(buffer, strdup(test_defs));
+                default_grib_context.grib_definition_files_path = strdup(buffer);
+            }
+            if (test_samp) {
+                char buffer[DEF_PATH_MAXLEN];
+                strcpy(buffer, default_grib_context.grib_samples_path);
+                strcat(buffer, ":");
+                strcat(buffer, strdup(test_samp));
+                default_grib_context.grib_samples_path = strdup(buffer);
+            }
+        }
+
         grib_context_log(&default_grib_context, GRIB_LOG_DEBUG, "Definitions path: %s",
                 default_grib_context.grib_definition_files_path);
         grib_context_log(&default_grib_context, GRIB_LOG_DEBUG, "Samples path:     %s",
@@ -415,15 +464,13 @@ grib_context* grib_context_get_default()
         default_grib_context.def_files=grib_trie_new(&(default_grib_context));
         default_grib_context.lists=grib_trie_new(&(default_grib_context));
         default_grib_context.classes=grib_trie_new(&(default_grib_context));
-
-        GRIB_MUTEX_UNLOCK(&mutex_c);
     }
 
+    GRIB_MUTEX_UNLOCK(&mutex_c);
     return &default_grib_context;
 }
 
-/* TODO: use parent */
-
+#if 0  /* function removed */
 grib_context* grib_context_new(grib_context* parent)
 {
     grib_context* c;
@@ -433,7 +480,7 @@ grib_context* grib_context_new(grib_context* parent)
 
     if (!parent) parent=grib_context_get_default();
 
-    GRIB_PTHREAD_ONCE(&once,&init);
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
     GRIB_MUTEX_LOCK(&(parent->mutex));
 
     c = (grib_context*)grib_context_malloc_clear_persistent(&default_grib_context,sizeof(grib_context));
@@ -468,9 +515,7 @@ grib_context* grib_context_new(grib_context* parent)
     GRIB_MUTEX_UNLOCK(&(parent->mutex));
     return c;
 }
-
-/* Hopefully big enough. Note: ECCODES_DEFINITION_PATH can contain SEVERAL colon-separated sub-paths */
-#define DEF_PATH_MAXLEN 8192
+#endif /* function removed */
 
 /* GRIB-235: Resolve path to expand symbolic links etc */
 static char* resolve_path(grib_context* c, char* path)
@@ -504,7 +549,6 @@ static int init_definition_files_dir(grib_context* c)
     int err=0;
     char path[DEF_PATH_MAXLEN];
     char* p=NULL;
-    char* dir=NULL;
     grib_string_list* next=NULL;
 
     if (!c) c=grib_context_get_default();
@@ -515,7 +559,7 @@ static int init_definition_files_dir(grib_context* c)
     /* Note: strtok modifies its first argument so we copy */
     strncpy(path, c->grib_definition_files_path, DEF_PATH_MAXLEN);
 
-    GRIB_PTHREAD_ONCE(&once,&init);
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
     GRIB_MUTEX_LOCK(&mutex_c);
 
     p=path;
@@ -528,6 +572,7 @@ static int init_definition_files_dir(grib_context* c)
         c->grib_definition_files_dir->value = resolve_path(c, path);
     } else {
         /* Definitions path contains multiple directories */
+        char* dir=NULL;
         dir=strtok(path, DEFS_PATH_DELIMITER_STR);
 
         while (dir != NULL) {
@@ -556,7 +601,7 @@ char *grib_context_full_defs_path(grib_context* c,const char* basename)
     grib_string_list* fullpath=0;
     if (!c) c=grib_context_get_default();
 
-    GRIB_PTHREAD_ONCE(&once,&init);
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
 
     if(*basename == '/' || *basename ==  '.') {
         return (char*)basename;
diff --git a/src/grib_darray.c b/src/grib_darray.c
index a95feb8..8065ef2 100644
--- a/src/grib_darray.c
+++ b/src/grib_darray.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_date.c b/src/grib_date.c
index 4f48243..a370f56 100644
--- a/src/grib_date.c
+++ b/src/grib_date.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_db.c b/src/grib_db.c
index 18c2cde..fd89873 100644
--- a/src/grib_db.c
+++ b/src/grib_db.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_dependency.c b/src/grib_dependency.c
index e116064..7cb850e 100644
--- a/src/grib_dependency.c
+++ b/src/grib_dependency.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -15,141 +15,158 @@
  ***************************************************************************/
 #include "grib_api_internal.h"
 
+grib_handle* grib_handle_of_accessor(grib_accessor* a)
+{
+    if (a->parent==NULL) {
+        return a->h;
+    } else {
+        return a->parent->h;
+    }
+}
+
 static grib_handle* handle_of(grib_accessor* observed)
 {
-	grib_handle *h = observed->parent->h;
-	while(h->main) h = h->main;
-	return h;
+    grib_handle *h=NULL ;
+    /* printf("+++++ %s->parent = %p\n",observed->name,observed->parent); */
+    /* printf("+++++ %s = %p\n",observed->name,observed); */
+    /* printf("+++++       h=%p\n",observed->h); */
+    /* special case for BUFR attributes parentless */
+    if (observed->parent==NULL) {
+        return observed->h;
+    }
+    h = grib_handle_of_accessor(observed);
+    while(h->main) h = h->main;
+    return h;
 }
 
 void grib_dependency_add(grib_accessor* observer,grib_accessor* observed)
 {
-	grib_handle     *h = handle_of(observed);
-	grib_dependency *d = h->dependencies;
-	grib_dependency *last = 0;
+    grib_handle     *h = handle_of(observed);
+    grib_dependency *d = h->dependencies;
+    grib_dependency *last = 0;
 
-	/*printf("observe %p %p %s %s\n",(void*)observed,(void*)observer, observed?observed->name:"NULL",
+    /*printf("observe %p %p %s %s\n",(void*)observed,(void*)observer, observed?observed->name:"NULL",
     observer?observer->name:"NULL");*/
 
-	if(!observer || !observed)
-	{
-		return;
-	}
+    if(!observer || !observed)
+    {
+        return;
+    }
 
-	/* Assert(h == handle_of(observer)); */
+    /* Assert(h == handle_of(observer)); */
 
-	/* Check if already in list */
-	while(d)
-	{
-		if(d->observer == observer && d->observed == observed)
-			return;
-		last = d;
-		d = d->next;
-	}
+    /* Check if already in list */
+    while(d)
+    {
+        if(d->observer == observer && d->observed == observed)
+            return;
+        last = d;
+        d = d->next;
+    }
 
 #if 0
-	d = h->dependencies;
-	while(d)
-	{
-		last = d;
-		d = d->next;
-	}
+    d = h->dependencies;
+    while(d)
+    {
+        last = d;
+        d = d->next;
+    }
 
 #endif
 
-	d = (grib_dependency*)grib_context_malloc_clear(h->context,sizeof(grib_dependency));
-	Assert(d);
+    d = (grib_dependency*)grib_context_malloc_clear(h->context,sizeof(grib_dependency));
+    Assert(d);
 
-	d->observed = observed;
-	d->observer = observer;
-	d->next     = 0;
+    d->observed = observed;
+    d->observer = observer;
+    d->next     = 0;
 
-	/*printf("observe %p %p %s %s\n",(void*)observed,(void*)observer, observed->name,observer->name);*/
+    /*printf("observe %p %p %s %s\n",(void*)observed,(void*)observer, observed->name,observer->name);*/
 #if 0
-	d->next     = h->dependencies;
-	h->dependencies = d;
+    d->next     = h->dependencies;
+    h->dependencies = d;
 #endif
 
-	if(last)
-		last->next = d;
-	else
-		h->dependencies = d;
+    if(last)
+        last->next = d;
+    else
+        h->dependencies = d;
 
 }
 
 void grib_dependency_remove_observed(grib_accessor* observed)
 {
-	grib_handle     *h = handle_of(observed);
-	grib_dependency *d = h->dependencies;
-	/* printf("%s\n",observed->name); */
-
-	while(d)
-	{
-		if(d->observed == observed)
-		{
-			/*  TODO: Notify observer...*/
-			d->observed = 0;/*printf("grib_dependency_remove_observed %s\n",observed->name); */
-		}
-		d = d->next;
-	}
+    grib_handle     *h = handle_of(observed);
+    grib_dependency *d = h->dependencies;
+    /* printf("%s\n",observed->name); */
+
+    while(d)
+    {
+        if(d->observed == observed)
+        {
+            /*  TODO: Notify observer...*/
+            d->observed = 0;/*printf("grib_dependency_remove_observed %s\n",observed->name); */
+        }
+        d = d->next;
+    }
 }
 
 /* TODO: Notification must go from outer blocks to inner block */
 
 int grib_dependency_notify_change(grib_accessor* observed)
 {
-	grib_handle     *h = handle_of(observed);
-	grib_dependency *d = h->dependencies;
-	int ret = GRIB_SUCCESS;
-
-	/*Do a two pass mark&sweep, in case some dependencies are added while we notify*/
-	while(d)
-	{
-		d->run = (d->observed == observed && d->observer != 0);
-		d = d->next;
-	}
-
-	d = h->dependencies;
-	while(d)
-	{
-		if(d->run)
-		{
-			/*printf("grib_dependency_notify_change %s %s %p\n",observed->name,d->observer ? d->observer->name : "?", (void*)d->observer);*/
-			if( d->observer && (ret = grib_accessor_notify_change(d->observer,observed))
-					!= GRIB_SUCCESS) return ret;
-		}
-		d = d->next;
-	}
-	return ret;
+    grib_handle     *h = handle_of(observed);
+    grib_dependency *d = h->dependencies;
+    int ret = GRIB_SUCCESS;
+
+    /*Do a two pass mark&sweep, in case some dependencies are added while we notify*/
+    while(d)
+    {
+        d->run = (d->observed == observed && d->observer != 0);
+        d = d->next;
+    }
+
+    d = h->dependencies;
+    while(d)
+    {
+        if(d->run)
+        {
+            /*printf("grib_dependency_notify_change %s %s %p\n",observed->name,d->observer ? d->observer->name : "?", (void*)d->observer);*/
+            if( d->observer && (ret = grib_accessor_notify_change(d->observer,observed))
+                    != GRIB_SUCCESS) return ret;
+        }
+        d = d->next;
+    }
+    return ret;
 }
 
 void grib_dependency_remove_observer(grib_accessor* observer)
 {
-	grib_handle     *h = handle_of(observer);
-	grib_dependency *d = h->dependencies;
-
-	if (!observer) return;
-
-	while(d)
-	{
-		if(d->observer == observer)
-		{
-			d->observer = 0;
-		}
-		d = d->next;
-	}
+    grib_handle     *h = handle_of(observer);
+    grib_dependency *d = h->dependencies;
+
+    if (!observer) return;
+
+    while(d)
+    {
+        if(d->observer == observer)
+        {
+            d->observer = 0;
+        }
+        d = d->next;
+    }
 }
 
 void grib_dependency_observe_expression(grib_accessor* observer,grib_expression* e)
 {
-	grib_expression_add_dependency(e,observer);
+    grib_expression_add_dependency(e,observer);
 }
 
 void grib_dependency_observe_arguments(grib_accessor* observer,grib_arguments* a)
 {
-	while(a)
-	{
-		grib_dependency_observe_expression(observer,a->expression);
-		a = a->next;
-	}
+    while(a)
+    {
+        grib_dependency_observe_expression(observer,a->expression);
+        a = a->next;
+    }
 }
diff --git a/src/grib_dumper.c b/src/grib_dumper.c
index 89780bb..9ccbb32 100644
--- a/src/grib_dumper.c
+++ b/src/grib_dumper.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_dumper_class.c b/src/grib_dumper_class.c
index 0ef40e0..686686d 100644
--- a/src/grib_dumper_class.c
+++ b/src/grib_dumper_class.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_dumper_class_c_code.c b/src/grib_dumper_class_c_code.c
index a57cf1f..eaaba47 100644
--- a/src/grib_dumper_class_c_code.c
+++ b/src/grib_dumper_class_c_code.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_dumper_class_debug.c b/src/grib_dumper_class_debug.c
index c166c59..2f6eb90 100644
--- a/src/grib_dumper_class_debug.c
+++ b/src/grib_dumper_class_debug.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -128,7 +128,7 @@ static void aliases(grib_dumper* d,grib_accessor* a)
 static void dump_long(grib_dumper* d,grib_accessor* a,const char* comment)
 {
     grib_dumper_debug *self = (grib_dumper_debug*)d;
-    long value; size_t size = 1;
+    long value=0; size_t size = 1;
     int err = grib_unpack_long(a,&value,&size);
     int i;
 
@@ -163,7 +163,7 @@ static int test_bit(long a, long b) {return a&(1<<b);}
 static void dump_bits(grib_dumper* d,grib_accessor* a,const char* comment)
 {
     grib_dumper_debug *self = (grib_dumper_debug*)d;
-    long value; size_t size = 1;
+    long value=0; size_t size = 1;
     int err = grib_unpack_long(a,&value,&size);
     int i;
 
@@ -198,7 +198,7 @@ static void dump_bits(grib_dumper* d,grib_accessor* a,const char* comment)
 static void dump_double(grib_dumper* d,grib_accessor* a,const char* comment)
 {
     grib_dumper_debug *self = (grib_dumper_debug*)d;
-    double value; size_t size = 1;
+    double value=0; size_t size = 1;
     int err = grib_unpack_double(a,&value,&size);
     int i;
 
@@ -236,7 +236,7 @@ static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment)
         size = 10; /* big enough to hold the string "missing" */
     }
 
-    value=(char*)grib_context_malloc_clear(a->parent->h->context,size);
+    value=(char*)grib_context_malloc_clear(a->context,size);
     if (!value) return;
     err=grib_unpack_string(a,value,&size);
 
@@ -244,7 +244,7 @@ static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment)
 
     p=value;
 
-    if( a->length == 0  && (d->option_flags & GRIB_DUMP_FLAG_CODED) != 0)
+    if( a->length == 0 && (d->option_flags & GRIB_DUMP_FLAG_CODED) != 0)
         return;
 
     set_begin_end(d,a);
@@ -260,7 +260,7 @@ static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment)
     aliases(d,a);
     fprintf(self->dumper.out,"\n");
 
-    if (value) grib_context_free(a->parent->h->context,value);
+    if (value) grib_context_free(a->context,value);
 }
 
 static void dump_bytes(grib_dumper* d,grib_accessor* a,const char* comment)
diff --git a/src/grib_dumper_class_default.c b/src/grib_dumper_class_default.c
index e07c0f1..8906278 100644
--- a/src/grib_dumper_class_default.c
+++ b/src/grib_dumper_class_default.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -159,7 +159,7 @@ static void dump_long(grib_dumper* d,grib_accessor* a,const char* comment)
   }
 
   if (size>1) {
-    values=(long *)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*size);
+    values=(long *)grib_context_malloc_clear(a->context,sizeof(long)*size);
     err=grib_unpack_long(a,values,&size);
   } else {
     err=grib_unpack_long(a,&value,&size);
@@ -187,7 +187,7 @@ static void dump_long(grib_dumper* d,grib_accessor* a,const char* comment)
         count++;
     }
     fprintf(self->dumper.out,"}\n");
-    grib_context_free(a->parent->h->context,values);
+    grib_context_free(a->context,values);
   } else {
 	  if( ((a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) != 0) && grib_is_missing_internal(a) )
 		fprintf(self->dumper.out,"%s = MISSING;",a->name);
@@ -331,7 +331,7 @@ static void dump_string_array(grib_dumper* d,grib_accessor* a,const char* commen
   int tab=0;
   long count=0;
 
-  c=a->parent->h->context;
+  c=a->context;
 
   grib_value_count(a,&count);
   size=count;
@@ -397,7 +397,7 @@ static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment)
   grib_context* c=NULL;
   int err = _grib_get_string_length(a,&size);
 
-  c=a->parent->h->context;
+  c=a->context;
   if (size==0) return;
 
   value=(char*)grib_context_malloc_clear(c,size);
@@ -668,6 +668,7 @@ static void print_offset(FILE* out,grib_dumper* d,grib_accessor* a) {
   long theBegin=0,theEnd=0;
   size_t size=0,more=0;
   grib_dumper_default *self = (grib_dumper_default*)d;
+  grib_handle* h=grib_handle_of_accessor(a);
 
   theBegin=a->offset-self->section_offset+1;;
   theEnd =grib_get_next_position_offset(a)-self->section_offset;
@@ -695,7 +696,7 @@ static void print_offset(FILE* out,grib_dumper* d,grib_accessor* a) {
     while(k < size)  {
       offset=a->offset;
       for (i=0;i<14 && k<size;i++,k++) {
-        fprintf(out," 0x%.2X",a->parent->h->buffer->data[offset]);
+        fprintf(out," 0x%.2X",h->buffer->data[offset]);
         offset++;
       }
       if (k<size) fprintf(self->dumper.out,"\n  #");
diff --git a/src/grib_dumper_class_json.c b/src/grib_dumper_class_json.c
index c60516b..5b59657 100644
--- a/src/grib_dumper_class_json.c
+++ b/src/grib_dumper_class_json.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -128,16 +128,16 @@ static void dump_values(grib_dumper* d,grib_accessor* a)
     int cols=9;
     long count=0;
     double missing_value = GRIB_MISSING_DOUBLE;
-
+    grib_handle* h=grib_handle_of_accessor(a);
 
     grib_value_count(a,&count);
     size=count;
 
-    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0)
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 )
         return;
 
     if (size>1) {
-        values=(double*)grib_context_malloc_clear(a->parent->h->context,sizeof(double)*size);
+        values=(double*)grib_context_malloc_clear(a->context,sizeof(double)*size);
         err=grib_unpack_double(a,values,&size);
     } else {
         err=grib_unpack_double(a,&value,&size);
@@ -155,7 +155,7 @@ static void dump_values(grib_dumper* d,grib_accessor* a)
       fprintf(self->dumper.out,"\"key\" : \"%s\",\n",a->name);
     }
 
-    err = grib_set_double(a->parent->h, "missingValue", missing_value);
+    err = grib_set_double(h, "missingValue", missing_value);
     if (size>1) {
         int count=0;
         if (self->isLeaf==0) {
@@ -180,8 +180,8 @@ static void dump_values(grib_dumper* d,grib_accessor* a)
 
         depth-=2;
         fprintf(self->dumper.out,"\n%-*s]",depth," ");
-        if (a->attributes[0]) fprintf(self->dumper.out,",");
-        grib_context_free(a->parent->h->context,values);
+        /* if (a->attributes[0]) fprintf(self->dumper.out,","); */
+        grib_context_free(a->context,values);
     } else {
         if (self->isLeaf==0) {
           fprintf(self->dumper.out,"%-*s",depth," ");
@@ -191,7 +191,6 @@ static void dump_values(grib_dumper* d,grib_accessor* a)
             fprintf(self->dumper.out,"null");
         else
             fprintf(self->dumper.out,"%g",value);
-        if (a->attributes[0]) fprintf(self->dumper.out,",");
     }
 
     if (self->isLeaf==0) {
@@ -199,6 +198,8 @@ static void dump_values(grib_dumper* d,grib_accessor* a)
       depth-=2;
       fprintf(self->dumper.out,"\n%-*s}",depth," ");
     }
+    
+    (void)err; /* TODO */
 }
 
 
@@ -215,11 +216,11 @@ static void dump_long(grib_dumper* d,grib_accessor* a,const char* comment)
     grib_value_count(a,&count);
     size=count;
 
-    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0)
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 )
         return;
 
     if (size>1) {
-        values=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*size);
+        values=(long*)grib_context_malloc_clear(a->context,sizeof(long)*size);
         err=grib_unpack_long(a,values,&size);
     } else {
         err=grib_unpack_long(a,&value,&size);
@@ -259,8 +260,8 @@ static void dump_long(grib_dumper* d,grib_accessor* a,const char* comment)
 
         depth-=2;
         fprintf(self->dumper.out,"\n%-*s]",depth," ");
-        if (a->attributes[0]) fprintf(self->dumper.out,",");
-        grib_context_free(a->parent->h->context,values);
+        /* if (a->attributes[0]) fprintf(self->dumper.out,","); */
+        grib_context_free(a->context,values);
     } else {
         if (self->isLeaf==0) {
           fprintf(self->dumper.out,"%-*s",depth," ");
@@ -270,7 +271,7 @@ static void dump_long(grib_dumper* d,grib_accessor* a,const char* comment)
             fprintf(self->dumper.out,"null");
         else
             fprintf(self->dumper.out,"%ld",value);
-        if (a->attributes[0]) fprintf(self->dumper.out,",");
+        /* if (a->attributes[0]) fprintf(self->dumper.out,","); */
     }
 
     if (self->isLeaf==0) {
@@ -278,7 +279,7 @@ static void dump_long(grib_dumper* d,grib_accessor* a,const char* comment)
       depth-=2;
       fprintf(self->dumper.out,"\n%-*s}",depth," ");
     }
-
+    (void)err; /* TODO */
 }
 
 static void dump_bits(grib_dumper* d,grib_accessor* a,const char* comment)
@@ -314,7 +315,7 @@ static void dump_double(grib_dumper* d,grib_accessor* a,const char* comment)
     else
         fprintf(self->dumper.out,"%g",value);
 
-    if (a->attributes[0]) fprintf(self->dumper.out,",");
+    /* if (a->attributes[0]) fprintf(self->dumper.out,","); */
 
     if (self->isLeaf==0) {
       dump_attributes(d,a);
@@ -332,9 +333,9 @@ static void dump_string_array(grib_dumper* d,grib_accessor* a,const char* commen
   int err = 0;
   long count=0;
 
-  c=a->parent->h->context;
+  c=a->context;
 
-  if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0)
+  if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 )
     return;
 
   grib_value_count(a,&count);
@@ -378,7 +379,7 @@ static void dump_string_array(grib_dumper* d,grib_accessor* a,const char* commen
   depth-=2;
   fprintf(self->dumper.out,"\n%-*s]",depth," ");
 
-    if (a->attributes[0]) fprintf(self->dumper.out,",");
+    /* if (a->attributes[0]) fprintf(self->dumper.out,","); */
 
   if (self->isLeaf==0) {
     dump_attributes(d,a);
@@ -387,6 +388,7 @@ static void dump_string_array(grib_dumper* d,grib_accessor* a,const char* commen
   }
 
   grib_context_free(c,values);
+  (void)err; /* TODO */
 }
 
 static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment)
@@ -398,7 +400,7 @@ static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment)
     grib_context* c=NULL;
     int err = _grib_get_string_length(a,&size);
 
-    c=a->parent->h->context;
+    c=a->context;
     if (size==0) return;
 
     if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0)
@@ -430,7 +432,7 @@ static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment)
     }
     fprintf(self->dumper.out,"\"%s\"",value);
 
-    if (a->attributes[0]) fprintf(self->dumper.out,",");
+    /* if (a->attributes[0]) fprintf(self->dumper.out,","); */
 
     if (self->isLeaf==0) {
       dump_attributes(d,a);
@@ -439,6 +441,7 @@ static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment)
     }
 
     grib_context_free(c,value);
+    (void)err; /* TODO */
 }
 
 static void dump_bytes(grib_dumper* d,grib_accessor* a,const char* comment)
@@ -492,11 +495,21 @@ static void dump_attributes(grib_dumper* d,grib_accessor* a) {
   int i=0;
   grib_dumper_json *self = (grib_dumper_json*)d;
   FILE* out=self->dumper.out;
+  unsigned long flags;
   while (a->attributes[i] && i < MAX_ACCESSOR_ATTRIBUTES) {
     self->isAttribute=1;
+    if (  (d->option_flags & GRIB_DUMP_FLAG_ALL_ATTRIBUTES ) == 0
+       && (a->attributes[i]->flags & GRIB_ACCESSOR_FLAG_DUMP)== 0 )
+    {
+      i++;
+      continue;
+    }
     self->isLeaf=a->attributes[i]->attributes[0]==NULL ? 1 : 0;
+    fprintf(self->dumper.out,",");
     fprintf(self->dumper.out,"\n%-*s",depth," ");
     fprintf(out,"\"%s\" : ",a->attributes[i]->name);
+    flags=a->attributes[i]->flags;
+    a->attributes[i]->flags |= GRIB_ACCESSOR_FLAG_DUMP;
     switch (grib_accessor_get_native_type(a->attributes[i])) {
       case GRIB_TYPE_LONG:
         dump_long(d,a->attributes[i],0);
@@ -508,9 +521,8 @@ static void dump_attributes(grib_dumper* d,grib_accessor* a) {
         dump_string_array(d,a->attributes[i],0);
         break;
     }
+    a->attributes[i]->flags=flags;
     i++;
-    if (a->attributes[i] && i < MAX_ACCESSOR_ATTRIBUTES)
-      fprintf(self->dumper.out,",");
   }
   self->isLeaf=0;
   self->isAttribute=0;
diff --git a/src/grib_dumper_class_keys.c b/src/grib_dumper_class_keys.c
index 7754aac..acd9da5 100644
--- a/src/grib_dumper_class_keys.c
+++ b/src/grib_dumper_class_keys.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_dumper_class_serialize.c b/src/grib_dumper_class_serialize.c
index e09923f..3604c26 100644
--- a/src/grib_dumper_class_serialize.c
+++ b/src/grib_dumper_class_serialize.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -99,7 +99,7 @@ static int  destroy  (grib_dumper* d){
 static void dump_long(grib_dumper* d,grib_accessor* a,const char* comment)
 {
   grib_dumper_serialize *self = (grib_dumper_serialize*)d;
-  long value; size_t size = 1;
+  long value=0; size_t size = 1;
   int err = grib_unpack_long(a,&value,&size);
 
   if(  (a->flags & GRIB_ACCESSOR_FLAG_HIDDEN) != 0 )
@@ -203,7 +203,7 @@ static void dump_double(grib_dumper* d,grib_accessor* a,const char* comment)
 static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment)
 {
   grib_dumper_serialize *self = (grib_dumper_serialize*)d;
-  char value[1024]; size_t size = sizeof(value);
+  char value[1024]={0,}; size_t size = sizeof(value);
   int err = grib_unpack_string(a,value,&size);
   int i;
 
diff --git a/src/grib_dumper_class_wmo.c b/src/grib_dumper_class_wmo.c
index cfe8e56..2c8eb75 100644
--- a/src/grib_dumper_class_wmo.c
+++ b/src/grib_dumper_class_wmo.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -97,397 +97,398 @@ static void init_class      (grib_dumper_class* c){}
 
 static int  init(grib_dumper* d)
 {
-  grib_dumper_wmo *self = (grib_dumper_wmo*)d;
-  self->section_offset=0;
+    grib_dumper_wmo *self = (grib_dumper_wmo*)d;
+    self->section_offset=0;
 
-  return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
 
 static int  destroy  (grib_dumper* d){
-  return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
 
 
 static void aliases(grib_dumper* d,grib_accessor* a)
 {
-int i;
-  grib_dumper_wmo *self = (grib_dumper_wmo*)d;
+    int i;
+    grib_dumper_wmo *self = (grib_dumper_wmo*)d;
 
-  if( (d->option_flags & GRIB_DUMP_FLAG_ALIASES) == 0)
-    return;
+    if( (d->option_flags & GRIB_DUMP_FLAG_ALIASES) == 0)
+        return;
 
-  if(a->all_names[1])
-  {
-    char *sep = "";
-    fprintf(self->dumper.out," [");
-
-    for(i = 1; i < MAX_ACCESSOR_NAMES; i++)
+    if(a->all_names[1])
     {
-      if(a->all_names[i])
-      {
-        if(a->all_name_spaces[i])
-          fprintf(self->dumper.out,"%s%s.%s", sep,a->all_name_spaces[i],a->all_names[i]);
-        else
-          fprintf(self->dumper.out,"%s%s", sep,a->all_names[i]);
-      }
-    sep = ", ";
+        char *sep = "";
+        fprintf(self->dumper.out," [");
+
+        for(i = 1; i < MAX_ACCESSOR_NAMES; i++)
+        {
+            if(a->all_names[i])
+            {
+                if(a->all_name_spaces[i])
+                    fprintf(self->dumper.out,"%s%s.%s", sep,a->all_name_spaces[i],a->all_names[i]);
+                else
+                    fprintf(self->dumper.out,"%s%s", sep,a->all_names[i]);
+            }
+            sep = ", ";
+        }
+        fprintf(self->dumper.out,"]");
     }
-    fprintf(self->dumper.out,"]");
-  }
 }
 
 static void dump_long(grib_dumper* d,grib_accessor* a,const char* comment)
 {
-  grib_dumper_wmo *self = (grib_dumper_wmo*)d;
-  long value = 0; size_t size =0;
-  long *values=NULL;
-  int err = 0;
-  int i=0;
-  long count=0;
+    grib_dumper_wmo *self = (grib_dumper_wmo*)d;
+    long value = 0; size_t size =0;
+    long *values=NULL;
+    int err = 0;
+    int i=0;
+    long count=0;
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if (size>1) {
+        values=(long*)grib_context_malloc_clear(a->context,sizeof(long)*size);
+        err=grib_unpack_long(a,values,&size);
+    } else {
+        err=grib_unpack_long(a,&value,&size);
+    }
 
-  grib_value_count(a,&count);
-  size=count;
+    if( a->length == 0  &&
+            (d->option_flags & GRIB_DUMP_FLAG_CODED) != 0)
+        return;
 
-  
-  if (size>1) {
-  	values=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*size);
-	err=grib_unpack_long(a,values,&size);
-  } else {
-	err=grib_unpack_long(a,&value,&size);
-  }
+    if( (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0 &&
+            (d->option_flags & GRIB_DUMP_FLAG_READ_ONLY) == 0)
+        return;
 
-  if( a->length == 0  &&
-      (d->option_flags & GRIB_DUMP_FLAG_CODED) != 0)
-    return;
+    set_begin_end(d,a);
 
-  if( (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0 &&
-      (d->option_flags & GRIB_DUMP_FLAG_READ_ONLY) == 0)
-    return;
 
-  set_begin_end(d,a);
+    print_offset(self->dumper.out,self->begin,self->theEnd);
 
+    if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0)
+        fprintf(self->dumper.out,"%s ",a->creator->op);
 
-  print_offset(self->dumper.out,self->begin,self->theEnd);
+    if (size>1) {
+        int cols=19;
+        int count=0;
+        fprintf(self->dumper.out,"%s = { \t",a->name);
+        if (values) {
+            for (i=0;i<size;i++) {
+                if (count>cols) {fprintf(self->dumper.out,"\n\t\t\t\t");count=0;}
+                fprintf(self->dumper.out,"%ld ",values[i]);
+                count++;
+            }
+            fprintf(self->dumper.out,"}\n");
+            grib_context_free(a->context,values);
+        }
+    } else {
+        if( ((a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) != 0) && grib_is_missing_internal(a) )
+            fprintf(self->dumper.out,"%s = MISSING",a->name);
+        else
+            fprintf(self->dumper.out,"%s = %ld",a->name,value);
+
+        print_hexadecimal(self->dumper.out,d->option_flags,a);
+
+        if(comment) fprintf(self->dumper.out," [%s]",comment);
+    }
+    if(err)
+        fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_wmo::dump_long]",err,grib_get_error_message(err));
+
+    aliases(d,a);
 
-  if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0)
-        fprintf(self->dumper.out,"%s ",a->creator->op);
 
-  if (size>1) {
-	int cols=19;
-	int count=0;
-	fprintf(self->dumper.out,"%s = { \t",a->name);
-	for (i=0;i<size;i++) {
-		if (count>cols) {fprintf(self->dumper.out,"\n\t\t\t\t");count=0;}
-		fprintf(self->dumper.out,"%ld ",values[i]);
-		count++;
-	}
-	fprintf(self->dumper.out,"}\n");
-	grib_context_free(a->parent->h->context,values);
-  } else {
-	  if( ((a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) != 0) && grib_is_missing_internal(a) )
-		fprintf(self->dumper.out,"%s = MISSING",a->name);
-	  else
-		fprintf(self->dumper.out,"%s = %ld",a->name,value);
-
-	  print_hexadecimal(self->dumper.out,d->option_flags,a);
-
-	  if(comment) fprintf(self->dumper.out," [%s]",comment);
-  }
-  if(err)
-    fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_wmo::dump_long]",err,grib_get_error_message(err));
-
-  aliases(d,a);
-
-
-  fprintf(self->dumper.out,"\n");
+    fprintf(self->dumper.out,"\n");
 }
 
 static int test_bit(long a, long b) {return a&(1<<b);}
 
 static void dump_bits(grib_dumper* d,grib_accessor* a,const char* comment)
 {
-  grib_dumper_wmo *self = (grib_dumper_wmo*)d;
-  int i;
-  long value = 0; size_t size = 1;
-  int err = grib_unpack_long(a,&value,&size);
+    grib_dumper_wmo *self = (grib_dumper_wmo*)d;
+    int i;
+    long value = 0; size_t size = 1;
+    int err = grib_unpack_long(a,&value,&size);
 
-  if( a->length == 0  &&
-      (d->option_flags & GRIB_DUMP_FLAG_CODED) != 0)
-    return;
+    if( a->length == 0  &&
+            (d->option_flags & GRIB_DUMP_FLAG_CODED) != 0)
+        return;
 
-  set_begin_end(d,a);
+    set_begin_end(d,a);
 
-  /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/
-  print_offset(self->dumper.out,self->begin,self->theEnd);
-  if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0)
+    /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/
+    print_offset(self->dumper.out,self->begin,self->theEnd);
+    if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0)
         fprintf(self->dumper.out,"%s ",a->creator->op);
 
-  fprintf(self->dumper.out,"%s = %ld [",a->name,value);
+    fprintf(self->dumper.out,"%s = %ld [",a->name,value);
 
-  for(i=0;i<(a->length*8);i++) {
-    if(test_bit(value,a->length*8-i-1))
-      fprintf(self->dumper.out,"1");
-    else
-      fprintf(self->dumper.out,"0");
-  }
-/*
+    for(i=0;i<(a->length*8);i++) {
+        if(test_bit(value,a->length*8-i-1))
+            fprintf(self->dumper.out,"1");
+        else
+            fprintf(self->dumper.out,"0");
+    }
+    /*
   if(comment)
     fprintf(self->dumper.out,":%s]",comment);
   else
-*/
-  fprintf(self->dumper.out,"]");
+     */
+    fprintf(self->dumper.out,"]");
 
-  if (err==0) print_hexadecimal(self->dumper.out,d->option_flags,a);
+    if (err==0) print_hexadecimal(self->dumper.out,d->option_flags,a);
 
-  if(err)
-    fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_wmo::dump_bits]",err,grib_get_error_message(err));
+    if(err)
+        fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_wmo::dump_bits]",err,grib_get_error_message(err));
 
-  aliases(d,a);
-  fprintf(self->dumper.out,"\n");
+    aliases(d,a);
+    fprintf(self->dumper.out,"\n");
 }
 
 static void dump_double(grib_dumper* d,grib_accessor* a,const char* comment)
 {
-  grib_dumper_wmo *self = (grib_dumper_wmo*)d;
-  double value; size_t size = 1;
-  int err = grib_unpack_double(a,&value,&size);
+    grib_dumper_wmo *self = (grib_dumper_wmo*)d;
+    double value; size_t size = 1;
+    int err = grib_unpack_double(a,&value,&size);
 
 
-  if( a->length == 0  &&
-      (d->option_flags & GRIB_DUMP_FLAG_CODED) != 0)
-    return;
+    if( a->length == 0  &&
+            (d->option_flags & GRIB_DUMP_FLAG_CODED) != 0)
+        return;
 
-  set_begin_end(d,a);
+    set_begin_end(d,a);
 
-  /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/
+    /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/
 
-  print_offset(self->dumper.out,self->begin,self->theEnd);
-  if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0)
+    print_offset(self->dumper.out,self->begin,self->theEnd);
+    if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0)
         fprintf(self->dumper.out,"%s ",a->creator->op);
 
-  if( ((a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) != 0) && grib_is_missing_internal(a))
-    fprintf(self->dumper.out,"%s = MISSING",a->name);
-  else
-    fprintf(self->dumper.out,"%s = %g",a->name,value);
-  /*if(comment) fprintf(self->dumper.out," [%s]",comment);*/
+    if( ((a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) != 0) && grib_is_missing_internal(a))
+        fprintf(self->dumper.out,"%s = MISSING",a->name);
+    else
+        fprintf(self->dumper.out,"%s = %g",a->name,value);
+    /*if(comment) fprintf(self->dumper.out," [%s]",comment);*/
 
-  if (err==0) print_hexadecimal(self->dumper.out,d->option_flags,a);
+    if (err==0) print_hexadecimal(self->dumper.out,d->option_flags,a);
 
-  if(err)
-    fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_wmo::dump_double]",err,grib_get_error_message(err));
-  aliases(d,a);
-  fprintf(self->dumper.out,"\n");
+    if(err)
+        fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_wmo::dump_double]",err,grib_get_error_message(err));
+    aliases(d,a);
+    fprintf(self->dumper.out,"\n");
 }
 
 static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment)
 {
-  grib_dumper_wmo *self = (grib_dumper_wmo*)d;
-  size_t size=0;
-  char *value=NULL;
-  char *p=NULL;
-  int err = _grib_get_string_length(a,&size);
-
-  value=(char*)grib_context_malloc_clear(a->parent->h->context,size);
-  if (!value) {
-  	grib_context_log(a->parent->h->context,GRIB_LOG_FATAL,"unable to allocate %d bytes",(int)size);
-	return;
-  }
-  err=grib_unpack_string(a,value,&size);
-  p=value;
-
-  if( a->length == 0  &&
-      (d->option_flags & GRIB_DUMP_FLAG_CODED) != 0) {
-	grib_context_free(a->parent->h->context,value);
-    return;
-  }
-
-  set_begin_end(d,a);
-
-  while(*p) { if(!isprint(*p)) *p = '.'; p++; }
-
-  /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/
-  print_offset(self->dumper.out,self->begin,self->theEnd);
-  if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0)
+    grib_dumper_wmo *self = (grib_dumper_wmo*)d;
+    size_t size=0;
+    char *value=NULL;
+    char *p=NULL;
+    int err = _grib_get_string_length(a,&size);
+
+    value=(char*)grib_context_malloc_clear(a->context,size);
+    if (!value) {
+        grib_context_log(a->context,GRIB_LOG_FATAL,"unable to allocate %d bytes",(int)size);
+        return;
+    }
+    err=grib_unpack_string(a,value,&size);
+    p=value;
+
+    if( a->length == 0  &&
+            (d->option_flags & GRIB_DUMP_FLAG_CODED) != 0) {
+        grib_context_free(a->context,value);
+        return;
+    }
+
+    set_begin_end(d,a);
+
+    while(*p) { if(!isprint(*p)) *p = '.'; p++; }
+
+    /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/
+    print_offset(self->dumper.out,self->begin,self->theEnd);
+    if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0)
         fprintf(self->dumper.out,"%s ",a->creator->op);
 
-  fprintf(self->dumper.out,"%s = %s",a->name,value);
+    fprintf(self->dumper.out,"%s = %s",a->name,value);
 
-  if (err==0) print_hexadecimal(self->dumper.out,d->option_flags,a);
+    if (err==0) print_hexadecimal(self->dumper.out,d->option_flags,a);
 
-  /*if(comment) fprintf(self->dumper.out," [%s]",comment);*/
-  if(err)
-    fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_wmo::dump_string]",err,grib_get_error_message(err));
-  aliases(d,a);
-  fprintf(self->dumper.out,"\n");
-  if (value) grib_context_free(a->parent->h->context,value);
+    /*if(comment) fprintf(self->dumper.out," [%s]",comment);*/
+    if(err)
+        fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_wmo::dump_string]",err,grib_get_error_message(err));
+    aliases(d,a);
+    fprintf(self->dumper.out,"\n");
+    if (value) grib_context_free(a->context,value);
 }
 
 static void dump_bytes(grib_dumper* d,grib_accessor* a,const char* comment)
 {
-  grib_dumper_wmo *self = (grib_dumper_wmo*)d;
-  int i,k,err =0;
-  int more = 0;
-  size_t size = a->length;
-  unsigned char* buf = (unsigned char*)grib_context_malloc(d->handle->context,size);
+    grib_dumper_wmo *self = (grib_dumper_wmo*)d;
+    int i,k,err =0;
+    int more = 0;
+    size_t size = a->length;
+    unsigned char* buf = (unsigned char*)grib_context_malloc(d->handle->context,size);
 
-  if( a->length == 0  &&
-      (d->option_flags & GRIB_DUMP_FLAG_CODED) != 0)
-    return;
+    if( a->length == 0  &&
+            (d->option_flags & GRIB_DUMP_FLAG_CODED) != 0)
+        return;
 
-  set_begin_end(d,a);
+    set_begin_end(d,a);
 
-  /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/
-  print_offset(self->dumper.out,self->begin,self->theEnd);
-  if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0)
+    /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/
+    print_offset(self->dumper.out,self->begin,self->theEnd);
+    if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0)
         fprintf(self->dumper.out,"%s ",a->creator->op);
 
-  fprintf(self->dumper.out,"%s = %ld",a->name,a->length);
-  aliases(d,a);
-  fprintf(self->dumper.out," {");
+    fprintf(self->dumper.out,"%s = %ld",a->name,a->length);
+    aliases(d,a);
+    fprintf(self->dumper.out," {");
 
-  if(!buf)
-  {
-    if(size == 0)
-      fprintf(self->dumper.out,"}\n");
-    else
-      fprintf(self->dumper.out," *** ERR cannot malloc(%ld) }\n",(long)size);
-    return;
-  }
+    if(!buf)
+    {
+        if(size == 0)
+            fprintf(self->dumper.out,"}\n");
+        else
+            fprintf(self->dumper.out," *** ERR cannot malloc(%ld) }\n",(long)size);
+        return;
+    }
 
-  print_hexadecimal(self->dumper.out,d->option_flags,a);
+    print_hexadecimal(self->dumper.out,d->option_flags,a);
 
-  fprintf(self->dumper.out,"\n");
+    fprintf(self->dumper.out,"\n");
 
-  err = grib_unpack_bytes(a,buf,&size);
-  if(err){
-    grib_context_free(d->handle->context,buf);
-    fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_wmo::dump_bytes]\n}",err,grib_get_error_message(err));
-    return ;
-  }
-
-  if(size > 100) {
-    more = size - 100;
-    size = 100;
-  }
-
-  k = 0;
-  /* if(size > 100) size = 100;  */
-  while(k < size)
-  {
-    int j;
-    for(i = 0; i < d->depth + 3 ; i++) fprintf(self->dumper.out," ");
-    for(j = 0; j < 16 && k < size; j++, k++)
+    err = grib_unpack_bytes(a,buf,&size);
+    if(err){
+        grib_context_free(d->handle->context,buf);
+        fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_wmo::dump_bytes]\n}",err,grib_get_error_message(err));
+        return ;
+    }
+
+    if(size > 100) {
+        more = size - 100;
+        size = 100;
+    }
+
+    k = 0;
+    /* if(size > 100) size = 100;  */
+    while(k < size)
     {
-      fprintf(self->dumper.out,"%02x",buf[k]);
-      if(k != size-1)
-        fprintf(self->dumper.out,", ");
+        int j;
+        for(i = 0; i < d->depth + 3 ; i++) fprintf(self->dumper.out," ");
+        for(j = 0; j < 16 && k < size; j++, k++)
+        {
+            fprintf(self->dumper.out,"%02x",buf[k]);
+            if(k != size-1)
+                fprintf(self->dumper.out,", ");
+        }
+        fprintf(self->dumper.out,"\n");
     }
-    fprintf(self->dumper.out,"\n");
-  }
 
-  if(more)
-  {
-    for(i = 0; i < d->depth + 3 ; i++) fprintf(self->dumper.out," ");
-    fprintf(self->dumper.out,"... %d more values\n",more);
-  }
+    if(more)
+    {
+        for(i = 0; i < d->depth + 3 ; i++) fprintf(self->dumper.out," ");
+        fprintf(self->dumper.out,"... %d more values\n",more);
+    }
 
-  for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");
-  fprintf(self->dumper.out,"} # %s %s \n",a->creator->op, a->name);
-  grib_context_free(d->handle->context,buf);
+    for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");
+    fprintf(self->dumper.out,"} # %s %s \n",a->creator->op, a->name);
+    grib_context_free(d->handle->context,buf);
 }
 
 static void dump_values(grib_dumper* d,grib_accessor* a)
 {
-  grib_dumper_wmo *self = (grib_dumper_wmo*)d;
-  int k,err =0;
-  int more = 0;
-  double*  buf = NULL;
-  size_t size=0;
-  long count=0;
-
-  if( a->length == 0  &&
-      (d->option_flags & GRIB_DUMP_FLAG_CODED) != 0)
-    return;
-
-  grib_value_count(a,&count);
-  size=count;
-
-  if(size == 1){
-    dump_double(d,a,NULL);
-    return ;
-  }
-  buf = (double*)grib_context_malloc(d->handle->context,size * sizeof(double));
-
-  set_begin_end(d,a);
-
-  /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/
-  print_offset(self->dumper.out,self->begin,self->theEnd);
-  if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0)
+    grib_dumper_wmo *self = (grib_dumper_wmo*)d;
+    int k,err =0;
+    int more = 0;
+    double*  buf = NULL;
+    size_t size=0;
+    long count=0;
+
+    if( a->length == 0  &&
+            (d->option_flags & GRIB_DUMP_FLAG_CODED) != 0)
+        return;
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if(size == 1){
+        dump_double(d,a,NULL);
+        return ;
+    }
+    buf = (double*)grib_context_malloc(d->handle->context,size * sizeof(double));
+
+    set_begin_end(d,a);
+
+    /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/
+    print_offset(self->dumper.out,self->begin,self->theEnd);
+    if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0)
         fprintf(self->dumper.out,"%s ",a->creator->op);
 
-  fprintf(self->dumper.out,"%s = (%ld,%ld)",a->name,(long)size,a->length);
-  aliases(d,a);
-  fprintf(self->dumper.out," {");
+    fprintf(self->dumper.out,"%s = (%ld,%ld)",a->name,(long)size,a->length);
+    aliases(d,a);
+    fprintf(self->dumper.out," {");
 
-  if(!buf)
-  {
-    if(size == 0)
-      fprintf(self->dumper.out,"}\n");
-    else
-      fprintf(self->dumper.out," *** ERR cannot malloc(%ld) }\n",(long)size);
-    return;
-  }
+    if(!buf)
+    {
+        if(size == 0)
+            fprintf(self->dumper.out,"}\n");
+        else
+            fprintf(self->dumper.out," *** ERR cannot malloc(%ld) }\n",(long)size);
+        return;
+    }
 
-  fprintf(self->dumper.out,"\n");
+    fprintf(self->dumper.out,"\n");
 
-  err =  grib_unpack_double(a,buf,&size);
+    err =  grib_unpack_double(a,buf,&size);
 
-  if(err){
-    grib_context_free(d->handle->context,buf);
-    fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_wmo::dump_values]\n}",err,grib_get_error_message(err));
-    return ;
-  }
+    if(err){
+        grib_context_free(d->handle->context,buf);
+        fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_wmo::dump_values]\n}",err,grib_get_error_message(err));
+        return ;
+    }
 
-  if(size > 100) {
-    more = size - 100;
-    size = 100;
-  }
+    if(size > 100) {
+        more = size - 100;
+        size = 100;
+    }
 
 
-  k = 0;
-  while(k < size)
-  {
-#if 1
-    int j;
-    /*for(i = 0; i < d->depth + 3 ; i++) fprintf(self->dumper.out," ");*/
-    for(j = 0; j < 8 && k < size; j++, k++)
+    k = 0;
+    while(k < size)
     {
-      fprintf(self->dumper.out,"%.10e",buf[k]);
-      if(k != size-1)
-        fprintf(self->dumper.out,", ");
-    }
-    fprintf(self->dumper.out,"\n");
+#if 1
+        int j;
+        /*for(i = 0; i < d->depth + 3 ; i++) fprintf(self->dumper.out," ");*/
+        for(j = 0; j < 8 && k < size; j++, k++)
+        {
+            fprintf(self->dumper.out,"%.10e",buf[k]);
+            if(k != size-1)
+                fprintf(self->dumper.out,", ");
+        }
+        fprintf(self->dumper.out,"\n");
 #else
 
-    fprintf(self->dumper.out,"%d %g\n",k,buf[k]);
+        fprintf(self->dumper.out,"%d %g\n",k,buf[k]);
 
 #endif
 
-  }
-  if(more)
-  {
-    /*for(i = 0; i < d->depth + 3 ; i++) fprintf(self->dumper.out," ");*/
-    fprintf(self->dumper.out,"... %d more values\n",more);
-  }
+    }
+    if(more)
+    {
+        /*for(i = 0; i < d->depth + 3 ; i++) fprintf(self->dumper.out," ");*/
+        fprintf(self->dumper.out,"... %d more values\n",more);
+    }
 
-  /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/
-  fprintf(self->dumper.out,"} # %s %s \n",a->creator->op, a->name);
-  grib_context_free(d->handle->context,buf);
+    /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/
+    fprintf(self->dumper.out,"} # %s %s \n",a->creator->op, a->name);
+    grib_context_free(d->handle->context,buf);
 }
 
 static void dump_label(grib_dumper* d,grib_accessor* a,const char* comment)
 {
-  /*grib_dumper_wmo *self = (grib_dumper_wmo*)d;
+    /*grib_dumper_wmo *self = (grib_dumper_wmo*)d;
 
   for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");
   fprintf(self->dumper.out,"----> %s %s %s\n",a->creator->op, a->name,comment?comment:"");*/
@@ -495,143 +496,145 @@ static void dump_label(grib_dumper* d,grib_accessor* a,const char* comment)
 
 static void dump_section(grib_dumper* d,grib_accessor* a,grib_block_of_accessors* block)
 {
-  grib_dumper_wmo *self = (grib_dumper_wmo*)d;
-  grib_section* s = a->sub_section;
-  int is_wmo_section=0;
-  char* upper=NULL;
-  char tmp[512];
-  char *p=NULL,*q=NULL;
-  if (!strncmp(a->name,"section",7)) is_wmo_section=1;
-
-  /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/
-  if (is_wmo_section) {
-    upper=(char*)malloc(strlen(a->name)+1);
-    p=(char*)a->name;
-    q=upper;
-    while (*p != '\0') {
-      *q=toupper(*p);
-      q++;
-      p++;
+    grib_dumper_wmo *self = (grib_dumper_wmo*)d;
+    grib_section* s = a->sub_section;
+    int is_wmo_section=0;
+    char* upper=NULL;
+    char tmp[512];
+    char *p=NULL,*q=NULL;
+    if (!strncmp(a->name,"section",7)) is_wmo_section=1;
+
+    /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/
+    if (is_wmo_section) {
+        upper=(char*)malloc(strlen(a->name)+1);
+        p=(char*)a->name;
+        q=upper;
+        while (*p != '\0') {
+            *q=toupper(*p);
+            q++;
+            p++;
+        }
+        *q='\0';
+        sprintf(tmp,"%s ( length=%ld, padding=%ld )",upper,(long)s->length,(long)s->padding);
+        fprintf(self->dumper.out,"======================   %-35s   ======================\n",tmp);
+        free(upper);
+        self->section_offset=a->offset;
+    } else {
+
     }
-    *q='\0';
-    sprintf(tmp,"%s ( length=%ld, padding=%ld )",upper,(long)s->length,(long)s->padding);
-    fprintf(self->dumper.out,"======================   %-35s   ======================\n",tmp);
-    free(upper);
-    self->section_offset=a->offset;
-  } else {
-
-  }
-
-  /*printf("------------- section_offset = %ld\n",self->section_offset);*/
-  d->depth += 3;
-  grib_dump_accessors_block(d,block);
-  d->depth -= 3;
-
-  /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/
-  /*fprintf(self->dumper.out,"<===== %s %s\n",a->creator->op, a->name);*/
+
+    /*printf("------------- section_offset = %ld\n",self->section_offset);*/
+    d->depth += 3;
+    grib_dump_accessors_block(d,block);
+    d->depth -= 3;
+
+    /*for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," ");*/
+    /*fprintf(self->dumper.out,"<===== %s %s\n",a->creator->op, a->name);*/
 }
 
 static void set_begin_end(grib_dumper* d,grib_accessor* a) {
-  grib_dumper_wmo *self = (grib_dumper_wmo*)d;
-  if ((d->option_flags & GRIB_DUMP_FLAG_OCTECT) != 0) {
-
-    self->begin=a->offset-self->section_offset+1;
-    self->theEnd=grib_get_next_position_offset(a)-self->section_offset;
-  } else {
-    self->begin=a->offset;
-    self->theEnd=grib_get_next_position_offset(a);
-  }
+    grib_dumper_wmo *self = (grib_dumper_wmo*)d;
+    if ((d->option_flags & GRIB_DUMP_FLAG_OCTECT) != 0) {
+
+        self->begin=a->offset-self->section_offset+1;
+        self->theEnd=grib_get_next_position_offset(a)-self->section_offset;
+    } else {
+        self->begin=a->offset;
+        self->theEnd=grib_get_next_position_offset(a);
+    }
 }
 
 static void print_offset(FILE* out,long begin,long theEnd) {
-  char tmp[50];
-  if (begin == theEnd)
-    fprintf(out,"%-10ld" ,begin);
-  else {
-    sprintf(tmp,"%ld-%ld" ,begin,theEnd);
-    fprintf(out,"%-10s",tmp);
-  }
+    char tmp[50];
+    if (begin == theEnd)
+        fprintf(out,"%-10ld" ,begin);
+    else {
+        sprintf(tmp,"%ld-%ld" ,begin,theEnd);
+        fprintf(out,"%-10s",tmp);
+    }
 }
 
 static void print_hexadecimal(FILE* out,unsigned long flags,grib_accessor* a) {
-  int i=0;
-  unsigned long offset=0;
-  if ((flags & GRIB_DUMP_FLAG_HEXADECIMAL) != 0 && a->length != 0) {
-    fprintf(out," (");
-    offset=a->offset;
-    for (i=0;i<a->length;i++) {
-      fprintf(out," 0x%.2X",a->parent->h->buffer->data[offset]);
-      offset++;
+    int i=0;
+    unsigned long offset=0;
+    grib_handle* h=grib_handle_of_accessor(a);
+    if ((flags & GRIB_DUMP_FLAG_HEXADECIMAL) != 0 && a->length != 0) {
+        fprintf(out," (");
+        offset=a->offset;
+        for (i=0;i<a->length;i++) {
+            fprintf(out," 0x%.2X",h->buffer->data[offset]);
+            offset++;
+        }
+        fprintf(out," )");
     }
-    fprintf(out," )");
-  }
 }
 
 
 static void dump_string_array(grib_dumper* d,grib_accessor* a,const char* comment)
 {
-  grib_dumper_wmo *self = (grib_dumper_wmo*)d;
-  char **values;
-  size_t size = 0,i=0;
-  grib_context* c=NULL;
-  int err = 0;
-  int tab=0;
-  long count=0;
-
-  c=a->parent->h->context;
-
-  grib_value_count(a,&count);
-  size=count;
-  if (size==1) {
-    dump_string(d,a,comment);
-    return;
-  }
-
-  values=(char**)grib_context_malloc_clear(c,size*sizeof(char*));
-  if (!values) {
-    grib_context_log(c,GRIB_LOG_FATAL,"unable to allocate %d bytes",(int)size);
-  return;
-  }
-
-  err = grib_unpack_string_array(a,values,&size);
-
-  if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0)
-    return;
-
-
-  /* print_offset(self->dumper.out,d,a); */
-  print_offset(self->dumper.out,self->begin,self->theEnd);
-
-  if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0) {
-    fprintf(self->dumper.out,"  ");
-    fprintf(self->dumper.out,"# type %s \n",a->creator->op);
-  }
-
-  aliases(d,a);
-  if(comment) {
-    fprintf(self->dumper.out,"  ");
-    fprintf(self->dumper.out,"# %s \n",comment);
-  }
-  if (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) {
-    fprintf(self->dumper.out,"  ");
-    fprintf(self->dumper.out,"#-READ ONLY- ");
-    tab=13;
-  } else
-    fprintf(self->dumper.out,"  ");
-
-  tab++;
-  fprintf(self->dumper.out,"%s = {\n",a->name);
-  for  (i=0;i<size;i++) {
-      fprintf(self->dumper.out,"%-*s\"%s\",\n",(int)(tab+strlen(a->name)+4)," ",values[i]);
-  }
-  fprintf(self->dumper.out,"  }");
-
-  if(err) {
-    fprintf(self->dumper.out,"  ");
-    fprintf(self->dumper.out,"# *** ERR=%d (%s)",err,grib_get_error_message(err));
-  }
-
-  fprintf(self->dumper.out,"\n");
-  grib_context_free(c,values);
+    grib_dumper_wmo *self = (grib_dumper_wmo*)d;
+    char **values;
+    size_t size = 0,i=0;
+    grib_context* c=NULL;
+    int err = 0;
+    int tab=0;
+    long count=0;
+
+    c=a->context;
+
+    grib_value_count(a,&count);
+    if (count==0) return;
+    size=count;
+    if (size==1) {
+        dump_string(d,a,comment);
+        return;
+    }
+
+    values=(char**)grib_context_malloc_clear(c,size*sizeof(char*));
+    if (!values) {
+        grib_context_log(c,GRIB_LOG_FATAL,"unable to allocate %d bytes",(int)size);
+        return;
+    }
+
+    err = grib_unpack_string_array(a,values,&size);
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0)
+        return;
+
+
+    /* print_offset(self->dumper.out,d,a); */
+    print_offset(self->dumper.out,self->begin,self->theEnd);
+
+    if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0) {
+        fprintf(self->dumper.out,"  ");
+        fprintf(self->dumper.out,"# type %s \n",a->creator->op);
+    }
+
+    aliases(d,a);
+    if(comment) {
+        fprintf(self->dumper.out,"  ");
+        fprintf(self->dumper.out,"# %s \n",comment);
+    }
+    if (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) {
+        fprintf(self->dumper.out,"  ");
+        fprintf(self->dumper.out,"#-READ ONLY- ");
+        tab=13;
+    } else
+        fprintf(self->dumper.out,"  ");
+
+    tab++;
+    fprintf(self->dumper.out,"%s = {\n",a->name);
+    for  (i=0;i<size;i++) {
+        fprintf(self->dumper.out,"%-*s\"%s\",\n",(int)(tab+strlen(a->name)+4)," ",values[i]);
+    }
+    fprintf(self->dumper.out,"  }");
+
+    if(err) {
+        fprintf(self->dumper.out,"  ");
+        fprintf(self->dumper.out,"# *** ERR=%d (%s)",err,grib_get_error_message(err));
+    }
+
+    fprintf(self->dumper.out,"\n");
+    grib_context_free(c,values);
 }
 
diff --git a/src/grib_dumper_class_xml.c b/src/grib_dumper_class_xml.c
index f95d8e0..7b36523 100644
--- a/src/grib_dumper_class_xml.c
+++ b/src/grib_dumper_class_xml.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -159,7 +159,7 @@ static void dump_long(grib_dumper* d,grib_accessor* a,const char* comment)
   }
 
   if (size>1) {
-    values=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*size);
+    values=(long*)grib_context_malloc_clear(a->context,sizeof(long)*size);
     err=grib_unpack_long(a,values,&size);
   } else {
     err=grib_unpack_long(a,&value,&size);
@@ -188,7 +188,7 @@ static void dump_long(grib_dumper* d,grib_accessor* a,const char* comment)
         count++;
     }
     fprintf(self->dumper.out,"\n%-*s}",lens+5," ");
-    grib_context_free(a->parent->h->context,values);
+    grib_context_free(a->context,values);
   } else {
 	  if( ((a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) != 0) && grib_is_missing_internal(a) )
 		fprintf(self->dumper.out,"%s = MISSING;",a->name);
@@ -331,7 +331,7 @@ static void dump_string_array(grib_dumper* d,grib_accessor* a,const char* commen
   int tab=0;
   long count=0;
 
-  c=a->parent->h->context;
+  c=a->context;
 
   grib_value_count(a,&count);
   size=count;
@@ -393,7 +393,7 @@ static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment)
   grib_context* c=NULL;
   int err = _grib_get_string_length(a,&size);
 
-  c=a->parent->h->context;
+  c=a->context;
   if (size==0) return;
 
   value=(char*)grib_context_malloc_clear(c,size);
@@ -653,6 +653,7 @@ static void print_offset(FILE* out,grib_dumper* d,grib_accessor* a) {
   long begin=0,end=0;
   size_t size=0,more=0;
   grib_dumper_xml *self = (grib_dumper_xml*)d;
+  grib_handle* h=grib_handle_of_accessor(a);
 
   begin=a->offset-self->section_offset+1;;
   end =grib_get_next_position_offset(a)-self->section_offset;
@@ -680,7 +681,7 @@ static void print_offset(FILE* out,grib_dumper* d,grib_accessor* a) {
     while(k < size)  {
       offset=a->offset;
       for (i=0;i<14 && k<size;i++,k++) {
-        fprintf(out," 0x%.2X",a->parent->h->buffer->data[offset]);
+        fprintf(out," 0x%.2X",h->buffer->data[offset]);
         offset++;
       }
       if (k<size) fprintf(self->dumper.out,"\n  #");
diff --git a/src/grib_emoslib.h b/src/grib_emoslib.h
index e66edff..171af85 100644
--- a/src/grib_emoslib.h
+++ b/src/grib_emoslib.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_errors.c b/src/grib_errors.c
index 0528915..31540cd 100644
--- a/src/grib_errors.c
+++ b/src/grib_errors.c
@@ -67,6 +67,8 @@ static const char *errors[] = {
 "Attribute is already present, cannot add",		/* -61 GRIB_ATTRIBUTE_CLASH */
 "Too many attributes. Increase MAX_ACCESSOR_ATTRIBUTES",		/* -62 GRIB_TOO_MANY_ATTRIBUTES */
 "Attribute not found.",		/* -63 GRIB_ATTRIBUTE_NOT_FOUND */
+"Edition not supported.",		/* -64 GRIB_UNSUPPORTED_EDITION */
+"Value out of coding range",		/* -65 GRIB_OUT_OF_RANGE */
 "Value mismatch",		/* 1 GRIB_VALUE_MISMATCH */
 "double values are different",		/* 2 GRIB_DOUBLE_VALUE_MISMATCH */
 "long values are different",		/* 3 GRIB_LONG_VALUE_MISMATCH */
@@ -86,35 +88,33 @@ static const char *errors[] = {
 
 const char* grib_get_error_message(int code)
 {
-  code = -code;
-  if(code <0 || code >= NUMBER(errors)) {
-    static char mess[80];
-    sprintf(mess,"Unknown error %d",code);
-    return mess;
+    code = -code;
+    if(code <0 || code >= NUMBER(errors)) {
+        static char mess[80];
+        sprintf(mess,"Unknown error %d",code);
+        return mess;
     }
-  return errors[code];
+    return errors[code];
 }
 
 void grib_check(const char* call,const char*  file,int line,int e,const char* msg)
 {
-	grib_context* c=grib_context_get_default();
+    grib_context* c=grib_context_get_default();
     if(e) {
-		if (file) {
-			fprintf(stderr,"%s at line %d: %s failed: %s",
-				file,line, call,grib_get_error_message(e));
-			if (msg) fprintf(stderr," (%s)",msg);
-			printf("\n");
-		} else {
-			grib_context_log(c,GRIB_LOG_ERROR,"%s",grib_get_error_message(e));
-		}
+        if (file) {
+            fprintf(stderr,"%s at line %d: %s failed: %s",
+                    file,line, call,grib_get_error_message(e));
+            if (msg) fprintf(stderr," (%s)",msg);
+            printf("\n");
+        } else {
+            grib_context_log(c,GRIB_LOG_ERROR,"%s",grib_get_error_message(e));
+        }
         exit(e);
     }
 }
 
-
 void grib_fail(const char* expr,const char* file,int line,int silent) {
-	 if (!silent)
-   fprintf(stderr,"%s at line %d: assertion failure Assert(%s)\n",file,line,expr);
-   abort();
+    if (!silent)
+        fprintf(stderr,"%s at line %d: assertion failure Assert(%s)\n",file,line,expr);
+    abort();
 }
-
diff --git a/src/grib_errors.txt b/src/grib_errors.txt
index ba9a0db..30d076f 100644
--- a/src/grib_errors.txt
+++ b/src/grib_errors.txt
@@ -69,3 +69,5 @@ GRIB_NULL_POINTER             Null pointer
 GRIB_ATTRIBUTE_CLASH          Attribute is already present, cannot add
 GRIB_TOO_MANY_ATTRIBUTES      Too many attributes. Increase MAX_ACCESSOR_ATTRIBUTES
 GRIB_ATTRIBUTE_NOT_FOUND      Attribute not found.
+GRIB_UNSUPPORTED_EDITION      Edition not supported.
+GRIB_OUT_OF_RANGE             Value out of coding range
diff --git a/src/grib_expression.c b/src/grib_expression.c
index 18ed822..9055a4c 100644
--- a/src/grib_expression.c
+++ b/src/grib_expression.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -25,7 +25,6 @@ int grib_expression_native_type(grib_handle* h,grib_expression* g)
     return 0;
 }
 
-
 int grib_expression_evaluate_long(grib_handle* h,grib_expression* g,long* result)
 {
     grib_expression_class *c = g->cclass;
@@ -127,7 +126,6 @@ void grib_expression_free(grib_context* ctx,grib_expression* g)
     grib_context_free_persistent(ctx,g);
 }
 
-
 void grib_expression_add_dependency(grib_expression* e, grib_accessor* observer)
 {
     grib_expression_class *c = e->cclass;
@@ -144,7 +142,6 @@ void grib_expression_add_dependency(grib_expression* e, grib_accessor* observer)
 }
 
 /*----------------------------------------*/
-
 int grib_expression_set_value(grib_handle* h,grib_expression* g,grib_values* v)
 {
     char buffer[1024];
@@ -181,7 +178,6 @@ int grib_expression_set_value(grib_handle* h,grib_expression* g,grib_values* v)
 }
 
 /*----------------------------------------*/
-
 grib_arguments *grib_arguments_new(grib_context* c,grib_expression* g, grib_arguments* n)
 {
     grib_arguments* l = (grib_arguments*)grib_context_malloc_clear_persistent(c,sizeof(grib_arguments));
@@ -246,6 +242,7 @@ long grib_arguments_get_long(grib_handle* h,grib_arguments* args,int n)
 
     e = args->expression;
     ret = grib_expression_evaluate_long(h,e,&lres);
+    (void)ret;
     return lres;
 }
 
@@ -261,8 +258,8 @@ double grib_arguments_get_double(grib_handle* h,grib_arguments* args,int n)
 
     e = args->expression;
     ret = grib_expression_evaluate_double(h,e,&dres);
+    (void)ret;
     return dres;
-
 }
 
 grib_expression* grib_arguments_get_expression(grib_handle* h,grib_arguments* args,int n)
diff --git a/src/grib_expression.h b/src/grib_expression.h
index ca90ee5..5b20db4 100644
--- a/src/grib_expression.h
+++ b/src/grib_expression.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_expression_class_accessor.c b/src/grib_expression_class_accessor.c
index 4f8f334..2a9fa3c 100644
--- a/src/grib_expression_class_accessor.c
+++ b/src/grib_expression_class_accessor.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -158,11 +158,11 @@ static void destroy(grib_context* c,grib_expression* g)
 
 static void  add_dependency(grib_expression* g, grib_accessor* observer){
   grib_expression_accessor* e = (grib_expression_accessor*)g;
-  grib_accessor *observed = grib_find_accessor(observer->parent->h,e->name);
+  grib_accessor *observed = grib_find_accessor(grib_handle_of_accessor(observer),e->name);
 
   if(!observed)
   {
-    /* grib_context_log(observer->parent->h->context, GRIB_LOG_ERROR, */
+    /* grib_context_log(observer->context, GRIB_LOG_ERROR, */
          /* "Error in accessor_add_dependency: cannot find [%s]", e->name); */
        /* Assert(observed); */
     return;
diff --git a/src/grib_expression_class_binop.c b/src/grib_expression_class_binop.c
index 199a066..c722bef 100644
--- a/src/grib_expression_class_binop.c
+++ b/src/grib_expression_class_binop.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_expression_class_column.c b/src/grib_expression_class_column.c
index 0a2a06e..bc57374 100644
--- a/src/grib_expression_class_column.c
+++ b/src/grib_expression_class_column.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_expression_class_constant.c b/src/grib_expression_class_constant.c
index 471816c..6c4ca2e 100644
--- a/src/grib_expression_class_constant.c
+++ b/src/grib_expression_class_constant.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_expression_class_double.c b/src/grib_expression_class_double.c
index 47bd8ec..a43ce58 100644
--- a/src/grib_expression_class_double.c
+++ b/src/grib_expression_class_double.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_expression_class_functor.c b/src/grib_expression_class_functor.c
index d56903c..d81f49b 100644
--- a/src/grib_expression_class_functor.c
+++ b/src/grib_expression_class_functor.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -90,100 +90,102 @@ static void init_class(grib_expression_class* c)
 
 static int evaluate_long(grib_expression* g,grib_handle* h,long* lres)
 {
-	grib_expression_functor* e = (grib_expression_functor*)g;
-  
-	/*
+    grib_expression_functor* e = (grib_expression_functor*)g;
+
+    /*
 	TODO: needs OO code here
-	*/
-
-	if(strcmp(e->name,"lookup") == 0) {
-		return GRIB_SUCCESS;
-	}
-	
-	if(strcmp(e->name,"new") == 0) {
-		*lres=h->loader != NULL;
-		return GRIB_SUCCESS;
-	}
-		
-	if(strcmp(e->name,"missing") == 0)
-	{
-		const char *p = grib_arguments_get_name(h,e->args,0);
-
-		if(p)
-		{
-
-			long val = 0;
-			grib_get_long_internal(h,p,&val);
-			*lres = (val == GRIB_MISSING_LONG);
-			return GRIB_SUCCESS;
-		}
-		else
-			*lres=GRIB_MISSING_LONG;
-			return GRIB_SUCCESS;
-	}
-
-  if(strcmp(e->name,"defined") == 0)
-  {
-    const char *p = grib_arguments_get_name(h,e->args,0);
-
-    if(p)  {
-      grib_accessor* a=grib_find_accessor(h,p);
-      *lres=a!=NULL ? 1 : 0;
-      return GRIB_SUCCESS;
+     */
+    if(strcmp(e->name,"lookup") == 0) {
+        return GRIB_SUCCESS;
+    }
+
+    if(strcmp(e->name,"new") == 0) {
+        *lres=h->loader != NULL;
+        return GRIB_SUCCESS;
+    }
+
+    if(strcmp(e->name,"missing") == 0)
+    {
+        const char *p = grib_arguments_get_name(h,e->args,0);
+        if(p)
+        {
+            long val = 0;
+            int ktype = 0;
+            grib_get_long_internal(h,p,&val);
+            if (grib_get_native_type(h, p, &ktype) == GRIB_SUCCESS) {
+                /* Currently only supported for integer keys. Not double or string */
+                Assert( ktype == GRIB_TYPE_LONG);
+            }
+            *lres = (val == GRIB_MISSING_LONG);
+            return GRIB_SUCCESS;
+        }
+        else
+            *lres=GRIB_MISSING_LONG;
+        return GRIB_SUCCESS;
+    }
+
+    if(strcmp(e->name,"defined") == 0)
+    {
+        const char *p = grib_arguments_get_name(h,e->args,0);
+
+        if(p)  {
+            grib_accessor* a=grib_find_accessor(h,p);
+            *lres=a!=NULL ? 1 : 0;
+            return GRIB_SUCCESS;
+        }
+        *lres=0;
+        return GRIB_SUCCESS;
     }
-    *lres=0;
-    return GRIB_SUCCESS;
-  }
-
-  if(strcmp(e->name,"changed") == 0)
-  {
-    *lres=1;
-    return GRIB_SUCCESS;
-  }
-
-  if(strcmp(e->name,"gribex_mode_on") == 0)
-  {
-    *lres= h->context->gribex_mode_on ? 1 : 0;
-    return GRIB_SUCCESS;
-  }
-		
-	return GRIB_NOT_IMPLEMENTED;
+
+    if(strcmp(e->name,"changed") == 0)
+    {
+        *lres=1;
+        return GRIB_SUCCESS;
+    }
+
+    if(strcmp(e->name,"gribex_mode_on") == 0)
+    {
+        *lres= h->context->gribex_mode_on ? 1 : 0;
+        return GRIB_SUCCESS;
+    }
+
+    return GRIB_NOT_IMPLEMENTED;
 }
 
 static void print(grib_context* c,grib_expression* g,grib_handle* f)
 {
-	grib_expression_functor* e = (grib_expression_functor*)g;
-	printf("%s(",e->name);
-	/*grib_expression_print(c,e->args,f);*/
-	printf(")");
+    grib_expression_functor* e = (grib_expression_functor*)g;
+    printf("%s(",e->name);
+    /*grib_expression_print(c,e->args,f);*/
+    printf(")");
 }
 
 static void destroy(grib_context* c,grib_expression* g)
 {
-	grib_expression_functor* e = (grib_expression_functor*)g;
-	grib_context_free_persistent(c,e->name);
-	grib_arguments_free(c,e->args);
+    grib_expression_functor* e = (grib_expression_functor*)g;
+    grib_context_free_persistent(c,e->name);
+    grib_arguments_free(c,e->args);
 }
 
-
-static void  add_dependency(grib_expression* g, grib_accessor* observer){
-	grib_expression_functor* e = (grib_expression_functor*)g;
-	if (strcmp(e->name,"defined")) 
-		grib_dependency_observe_arguments(observer,e->args);
+static void  add_dependency(grib_expression* g, grib_accessor* observer)
+{
+    grib_expression_functor* e = (grib_expression_functor*)g;
+    if (strcmp(e->name,"defined"))
+        grib_dependency_observe_arguments(observer,e->args);
 }
 
 grib_expression* new_func_expression(grib_context* c,const char *name,grib_arguments* args)
 {
-	grib_expression_functor* e = (grib_expression_functor*)grib_context_malloc_clear_persistent(c,sizeof(grib_expression_functor));
-	e->base.cclass                 = grib_expression_class_functor;
-	e->name                   = grib_context_strdup_persistent(c,name);
-	e->args                  = args;
-	return (grib_expression*)e;
+    grib_expression_functor* e = (grib_expression_functor*)grib_context_malloc_clear_persistent(c,sizeof(grib_expression_functor));
+    e->base.cclass                 = grib_expression_class_functor;
+    e->name                   = grib_context_strdup_persistent(c,name);
+    e->args                  = args;
+    return (grib_expression*)e;
 }
 
 static void compile(grib_expression* g,grib_compiler* c)
 {
-	grib_expression_functor* e = (grib_expression_functor*)g;
+    grib_expression_functor* e = (grib_expression_functor*)g;
     fprintf(c->out,"new_func_expression(ctx,");
     fprintf(c->out,"\"%s\",",e->name);
     grib_compile_arguments(e->args,c);
@@ -192,5 +194,5 @@ static void compile(grib_expression* g,grib_compiler* c)
 
 static int native_type(grib_expression* g,grib_handle *h)
 {
-	return GRIB_TYPE_LONG;
+    return GRIB_TYPE_LONG;
 }
diff --git a/src/grib_expression_class_is_in_dict.c b/src/grib_expression_class_is_in_dict.c
index fc5f9d7..4b670a5 100644
--- a/src/grib_expression_class_is_in_dict.c
+++ b/src/grib_expression_class_is_in_dict.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -253,11 +253,11 @@ static int native_type(grib_expression* g,grib_handle *h)
 
 static void  add_dependency(grib_expression* g, grib_accessor* observer){
   grib_expression_is_in_dict* e = (grib_expression_is_in_dict*)g;
-  grib_accessor *observed = grib_find_accessor(observer->parent->h,e->key);
+  grib_accessor *observed = grib_find_accessor(grib_handle_of_accessor(observer),e->key);
 
   if(!observed)
   {
-    /* grib_context_log(observer->parent->h->context, GRIB_LOG_ERROR, */
+    /* grib_context_log(observer->context, GRIB_LOG_ERROR, */
          /* "Error in accessor_add_dependency: cannot find [%s]", e->name); */
        /* Assert(observed); */
     return;
diff --git a/src/grib_expression_class_is_in_list.c b/src/grib_expression_class_is_in_list.c
index c65e37a..040d9b3 100644
--- a/src/grib_expression_class_is_in_list.c
+++ b/src/grib_expression_class_is_in_list.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -226,11 +226,11 @@ static void destroy(grib_context* c,grib_expression* g)
 
 static void  add_dependency(grib_expression* g, grib_accessor* observer){
   grib_expression_is_in_list* e = (grib_expression_is_in_list*)g;
-  grib_accessor *observed = grib_find_accessor(observer->parent->h,e->name);
+  grib_accessor *observed = grib_find_accessor(grib_handle_of_accessor(observer),e->name);
 
   if(!observed)
   {
-    /* grib_context_log(observer->parent->h->context, GRIB_LOG_ERROR, */
+    /* grib_context_log(observer->context, GRIB_LOG_ERROR, */
          /* "Error in accessor_add_dependency: cannot find [%s]", e->name); */
        /* Assert(observed); */
     return;
diff --git a/src/grib_expression_class_is_integer.c b/src/grib_expression_class_is_integer.c
index 4abbeb2..b732467 100644
--- a/src/grib_expression_class_is_integer.c
+++ b/src/grib_expression_class_is_integer.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -126,6 +126,7 @@ static int evaluate_long(grib_expression* g,grib_handle *h,long* result)
    else
       *result=1;
 
+  (void)val;
   return err;
 }
 
@@ -170,11 +171,11 @@ static void destroy(grib_context* c,grib_expression* g)
 
 static void  add_dependency(grib_expression* g, grib_accessor* observer){
   grib_expression_is_integer* e = (grib_expression_is_integer*)g;
-  grib_accessor *observed = grib_find_accessor(observer->parent->h,e->name);
+  grib_accessor *observed = grib_find_accessor(grib_handle_of_accessor(observer),e->name);
 
   if(!observed)
   {
-    /* grib_context_log(observer->parent->h->context, GRIB_LOG_ERROR, */
+    /* grib_context_log(observer->context, GRIB_LOG_ERROR, */
          /* "Error in accessor_add_dependency: cannot find [%s]", e->name); */
        /* Assert(observed); */
     return;
diff --git a/src/grib_expression_class_length.c b/src/grib_expression_class_length.c
index a913bf2..ae2434b 100644
--- a/src/grib_expression_class_length.c
+++ b/src/grib_expression_class_length.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -98,105 +98,104 @@ static void init_class(grib_expression_class* c)
 
 static const char* get_name(grib_expression* g)
 {
-  grib_expression_length* e = (grib_expression_length*)g;
-  return e->name;
+    grib_expression_length* e = (grib_expression_length*)g;
+    return e->name;
 }
 
 static int evaluate_long(grib_expression* g,grib_handle *h,long* result)
 {
-  grib_expression_length* e = (grib_expression_length*)g;
-  int err=0;
-  char mybuf[1024]={0,};
-  size_t size=1024;
-  if((err=grib_get_string_internal(h,e->name,mybuf,&size)) != GRIB_SUCCESS)
-      return err;
-
-  *result=strlen(mybuf);
-  return err;
+    grib_expression_length* e = (grib_expression_length*)g;
+    int err=0;
+    char mybuf[1024]={0,};
+    size_t size=1024;
+    if((err=grib_get_string_internal(h,e->name,mybuf,&size)) != GRIB_SUCCESS)
+        return err;
+
+    *result=strlen(mybuf);
+    return err;
 }
 
 static int evaluate_double(grib_expression *g,grib_handle *h,double* result)
 {
-  grib_expression_length* e = (grib_expression_length*)g;
-  char mybuf[1024]={0,};
-  size_t size=1024;
-  int err=0;
-  if((err=grib_get_string_internal(h,e->name,mybuf,&size)) != GRIB_SUCCESS)
-      return err;
-
-  *result=strlen(mybuf);
-  return err;
+    grib_expression_length* e = (grib_expression_length*)g;
+    char mybuf[1024]={0,};
+    size_t size=1024;
+    int err=0;
+    if((err=grib_get_string_internal(h,e->name,mybuf,&size)) != GRIB_SUCCESS)
+        return err;
+
+    *result=strlen(mybuf);
+    return err;
 }
 
 static string evaluate_string(grib_expression* g,grib_handle* h,char* buf,size_t* size,int* err)
 {
-  grib_expression_length* e = (grib_expression_length*)g;
-  char mybuf[1024]={0,};
-  Assert(buf);
-  if((*err=grib_get_string_internal(h,e->name,mybuf,size)) != GRIB_SUCCESS)
-      return NULL;
-
-  sprintf(buf,"%ld",(long)strlen(mybuf));
-  return buf;
+    grib_expression_length* e = (grib_expression_length*)g;
+    char mybuf[1024]={0,};
+    Assert(buf);
+    if((*err=grib_get_string_internal(h,e->name,mybuf,size)) != GRIB_SUCCESS)
+        return NULL;
+
+    sprintf(buf,"%ld",(long)strlen(mybuf));
+    return buf;
 }
 
 static void print(grib_context* c,grib_expression* g,grib_handle* f)
 {
-  grib_expression_length* e = (grib_expression_length*)g;
-  printf("access('%s",e->name);
-  if(f)
-  {
-    long s = 0;
-    grib_get_long(f,e->name,&s);
-    printf("=%ld",s);
-  }
-  printf("')");
+    grib_expression_length* e = (grib_expression_length*)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)
 {
-  grib_expression_length* e = (grib_expression_length*)g;
-  grib_context_free_persistent(c,e->name);
+    grib_expression_length* e = (grib_expression_length*)g;
+    grib_context_free_persistent(c,e->name);
 }
 
-
-static void  add_dependency(grib_expression* g, grib_accessor* observer){
-  grib_expression_length* e = (grib_expression_length*)g;
-  grib_accessor *observed = grib_find_accessor(observer->parent->h,e->name);
-
-  if(!observed)
-  {
-    /* grib_context_log(observer->parent->h->context, GRIB_LOG_ERROR, */
-         /* "Error in accessor_add_dependency: cannot find [%s]", e->name); */
-       /* Assert(observed); */
-    return;
-  }
-
-  grib_dependency_add(observer,observed);
+static void  add_dependency(grib_expression* g, grib_accessor* observer)
+{
+    grib_expression_length* e = (grib_expression_length*)g;
+    grib_accessor *observed = grib_find_accessor(grib_handle_of_accessor(observer),e->name);
+
+    if(!observed)
+    {
+        /* grib_context_log(observer->context, GRIB_LOG_ERROR, */
+        /* "Error in accessor_add_dependency: cannot find [%s]", e->name); */
+        /* Assert(observed); */
+        return;
+    }
+
+    grib_dependency_add(observer,observed);
 }
 
 grib_expression* new_length_expression(grib_context* c,const char *name)
 {
-  grib_expression_length* e = (grib_expression_length*)grib_context_malloc_clear_persistent(c,sizeof(grib_expression_length));
-  e->base.cclass            = grib_expression_class_length;
-  e->name                   = grib_context_strdup_persistent(c,name);
-  return (grib_expression*)e;
+    grib_expression_length* e = (grib_expression_length*)grib_context_malloc_clear_persistent(c,sizeof(grib_expression_length));
+    e->base.cclass            = grib_expression_class_length;
+    e->name                   = grib_context_strdup_persistent(c,name);
+    return (grib_expression*)e;
 }
 
 static void compile(grib_expression* g,grib_compiler* c)
 {
-	grib_expression_length* e = (grib_expression_length*)g;
+    grib_expression_length* e = (grib_expression_length*)g;
     fprintf(c->out,"new_length_expression(ctx,\"%s\")",e->name);
 }
 
 static int native_type(grib_expression* g,grib_handle *h)
 {
-  grib_expression_length* e = (grib_expression_length*)g;
-  int type = 0;
-  int err;
-  if((err=grib_get_native_type(h,e->name,&type)) != GRIB_SUCCESS)
-    grib_context_log(h->context, GRIB_LOG_ERROR,
-    "Error in native_type %s : %s", e->name,grib_get_error_message(err));
-  return type;
+    grib_expression_length* e = (grib_expression_length*)g;
+    int type = 0;
+    int err;
+    if((err=grib_get_native_type(h,e->name,&type)) != GRIB_SUCCESS)
+        grib_context_log(h->context, GRIB_LOG_ERROR,
+                "Error in native_type %s : %s", e->name,grib_get_error_message(err));
+    return type;
 }
-
diff --git a/src/grib_expression_class_long.c b/src/grib_expression_class_long.c
index 6f93b1c..78b6b33 100644
--- a/src/grib_expression_class_long.c
+++ b/src/grib_expression_class_long.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_expression_class_string.c b/src/grib_expression_class_string.c
index 4daadd6..7dacf0d 100644
--- a/src/grib_expression_class_string.c
+++ b/src/grib_expression_class_string.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_expression_class_string_compare.c b/src/grib_expression_class_string_compare.c
index 3edd222..1613db9 100644
--- a/src/grib_expression_class_string_compare.c
+++ b/src/grib_expression_class_string_compare.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -89,77 +89,78 @@ static void init_class(grib_expression_class* c)
 }
 /* END_CLASS_IMP */
 
-GRIB_INLINE static int grib_inline_strcmp(const char* a,const char* b) {
-  if (*a != *b) return 1;
-  while((*a!=0 && *b!=0) &&  *(a) == *(b) ) {a++;b++;}
-  return (*a==0 && *b==0) ? 0 : 1;
+GRIB_INLINE static int grib_inline_strcmp(const char* a,const char* b)
+{
+    if (*a != *b) return 1;
+    while((*a!=0 && *b!=0) &&  *(a) == *(b) ) {a++;b++;}
+    return (*a==0 && *b==0) ? 0 : 1;
 }
 
 static int evaluate_long(grib_expression *g,grib_handle* h,long* lres)
 {
-  int ret=0;
-  char b1[1024]; size_t l1 = sizeof(b1);
-  char b2[1024]; size_t l2 = sizeof(b2);
-  const char *v1;
-  const char *v2;
+    int ret=0;
+    char b1[1024]; size_t l1 = sizeof(b1);
+    char b2[1024]; size_t l2 = sizeof(b2);
+    const char *v1;
+    const char *v2;
 
-  grib_expression_string_compare* e = (grib_expression_string_compare*)g;
+    grib_expression_string_compare* e = (grib_expression_string_compare*)g;
 
-  v1 = grib_expression_evaluate_string(h,e->left,b1,&l1,&ret);
-  if(!v1) {*lres=0;return ret;}
+    v1 = grib_expression_evaluate_string(h,e->left,b1,&l1,&ret);
+    if(!v1) {*lres=0;return ret;}
 
-  v2 = grib_expression_evaluate_string(h,e->right,b2,&l2,&ret);
-  if(!v2) {*lres=0;return ret;}
+    v2 = grib_expression_evaluate_string(h,e->right,b2,&l2,&ret);
+    if(!v2) {*lres=0;return ret;}
 
-  *lres = (grib_inline_strcmp(v1,v2) == 0);
-  return GRIB_SUCCESS;
+    *lres = (grib_inline_strcmp(v1,v2) == 0);
+    return GRIB_SUCCESS;
 }
 
 static int evaluate_double(grib_expression *g,grib_handle* h,double* dres)
 {
-  long n;
-  int ret = evaluate_long(g,h,&n);
-  *dres = n;
-  return ret;
+    long n;
+    int ret = evaluate_long(g,h,&n);
+    *dres = n;
+    return ret;
 }
 
 static void print(grib_context* c,grib_expression* g,grib_handle* f)
 {
-  grib_expression_string_compare* e = (grib_expression_string_compare*)g;
-  printf("string_compare(");
-  grib_expression_print(c,e->left,f);
-  printf(",");
-  grib_expression_print(c,e->right,f);
-  printf(")");
+    grib_expression_string_compare* e = (grib_expression_string_compare*)g;
+    printf("string_compare(");
+    grib_expression_print(c,e->left,f);
+    printf(",");
+    grib_expression_print(c,e->right,f);
+    printf(")");
 }
 
 static void destroy(grib_context* c,grib_expression* g)
 {
-  grib_expression_string_compare* e = (grib_expression_string_compare*)g;
-  grib_expression_free(c,e->left);
-  grib_expression_free(c,e->right);
+    grib_expression_string_compare* e = (grib_expression_string_compare*)g;
+    grib_expression_free(c,e->left);
+    grib_expression_free(c,e->right);
 }
 
-
-static void  add_dependency(grib_expression* g, grib_accessor* observer){
-  grib_expression_string_compare* e = (grib_expression_string_compare*)g;
-  grib_dependency_observe_expression(observer,e->left);
-  grib_dependency_observe_expression(observer,e->right);
+static void  add_dependency(grib_expression* g, grib_accessor* observer)
+{
+    grib_expression_string_compare* e = (grib_expression_string_compare*)g;
+    grib_dependency_observe_expression(observer,e->left);
+    grib_dependency_observe_expression(observer,e->right);
 }
 
 grib_expression* new_string_compare_expression(grib_context* c,
-  grib_expression* left,grib_expression* right)
+        grib_expression* left,grib_expression* right)
 {
-  grib_expression_string_compare* e = (grib_expression_string_compare*)grib_context_malloc_clear_persistent(c,sizeof(grib_expression_string_compare));
-  e->base.cclass                 = grib_expression_class_string_compare;
-  e->left                = left;
-  e->right               = right;
-  return (grib_expression*)e;
+    grib_expression_string_compare* e = (grib_expression_string_compare*)grib_context_malloc_clear_persistent(c,sizeof(grib_expression_string_compare));
+    e->base.cclass                 = grib_expression_class_string_compare;
+    e->left                = left;
+    e->right               = right;
+    return (grib_expression*)e;
 }
 
 static void compile(grib_expression* g,grib_compiler* c)
 {
-	grib_expression_string_compare* e = (grib_expression_string_compare*)g;
+    grib_expression_string_compare* e = (grib_expression_string_compare*)g;
     fprintf(c->out,"new_string_compare_expression(ctx,");
     grib_expression_compile(e->left,c);
     fprintf(c->out,",");
@@ -169,5 +170,5 @@ static void compile(grib_expression* g,grib_compiler* c)
 
 static int native_type(grib_expression* g,grib_handle *h)
 {
-  return GRIB_TYPE_LONG ;
+    return GRIB_TYPE_LONG ;
 }
diff --git a/src/grib_expression_class_sub_string.c b/src/grib_expression_class_sub_string.c
index 26f51bc..72b97ca 100644
--- a/src/grib_expression_class_sub_string.c
+++ b/src/grib_expression_class_sub_string.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_expression_class_true.c b/src/grib_expression_class_true.c
index 978f122..9d7726b 100644
--- a/src/grib_expression_class_true.c
+++ b/src/grib_expression_class_true.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_expression_class_unop.c b/src/grib_expression_class_unop.c
index 4bd779d..0ccf0c0 100644
--- a/src/grib_expression_class_unop.c
+++ b/src/grib_expression_class_unop.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_fieldset.c b/src/grib_fieldset.c
index b68da46..0bd6d40 100644
--- a/src/grib_fieldset.c
+++ b/src/grib_fieldset.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -48,781 +48,799 @@ static int grib_fieldset_set_order_by(grib_fieldset* set,grib_order_by* ob);
 
 
 /* --------------- grib_column functions ------------------*/
-int grib_fieldset_new_column(grib_fieldset* set,int id,char* key,int type) {
-  grib_column* column=0;
-  grib_context* c;
-  int err=0;
+int grib_fieldset_new_column(grib_fieldset* set,int id,char* key,int type)
+{
+    grib_column* column=0;
+    grib_context* c;
+    int err=0;
 
-  if (!set) return GRIB_INVALID_ARGUMENT;
+    if (!set) return GRIB_INVALID_ARGUMENT;
 
-  c=set->context;
+    c=set->context;
 
-  set->columns[id].errors=(int*)grib_context_malloc_clear(c,
-             sizeof(int)*GRIB_START_ARRAY_SIZE);
+    set->columns[id].errors=(int*)grib_context_malloc_clear(c,
+            sizeof(int)*GRIB_START_ARRAY_SIZE);
 
-  switch (type) {
+    switch (type) {
     case GRIB_TYPE_LONG:
-      set->columns[id].long_values=(long*)grib_context_malloc_clear(c,
-             sizeof(long)*GRIB_START_ARRAY_SIZE);
-      if (!set->columns[id].long_values) {
-        grib_context_log(c, GRIB_LOG_ERROR,
-          "grib_fieldset_new_column : Cannot malloc %d bytes",
-          sizeof(long)*GRIB_START_ARRAY_SIZE);
-        err=GRIB_OUT_OF_MEMORY;
-        return err;
-      }
-      break;
+        set->columns[id].long_values=(long*)grib_context_malloc_clear(c,
+                sizeof(long)*GRIB_START_ARRAY_SIZE);
+        if (!set->columns[id].long_values) {
+            grib_context_log(c, GRIB_LOG_ERROR,
+                    "grib_fieldset_new_column : Cannot malloc %d bytes",
+                    sizeof(long)*GRIB_START_ARRAY_SIZE);
+            err=GRIB_OUT_OF_MEMORY;
+            return err;
+        }
+        break;
     case GRIB_TYPE_DOUBLE:
-      set->columns[id].double_values=(double*)grib_context_malloc_clear(c,
-             sizeof(double)*GRIB_START_ARRAY_SIZE);
-      if (!set->columns[id].double_values) {
-        grib_context_log(c, GRIB_LOG_ERROR,
-          "grib_fieldset_new_column : Cannot malloc %d bytes",
-          sizeof(double)*GRIB_START_ARRAY_SIZE);
-        err=GRIB_OUT_OF_MEMORY;
-        return err;
-      }
-      break;
+        set->columns[id].double_values=(double*)grib_context_malloc_clear(c,
+                sizeof(double)*GRIB_START_ARRAY_SIZE);
+        if (!set->columns[id].double_values) {
+            grib_context_log(c, GRIB_LOG_ERROR,
+                    "grib_fieldset_new_column : Cannot malloc %d bytes",
+                    sizeof(double)*GRIB_START_ARRAY_SIZE);
+            err=GRIB_OUT_OF_MEMORY;
+            return err;
+        }
+        break;
     case GRIB_TYPE_STRING:
-      set->columns[id].string_values=(char**)grib_context_malloc_clear(c,
-             sizeof(char*)*GRIB_START_ARRAY_SIZE);
-      if (!set->columns[id].string_values) {
+        set->columns[id].string_values=(char**)grib_context_malloc_clear(c,
+                sizeof(char*)*GRIB_START_ARRAY_SIZE);
+        if (!set->columns[id].string_values) {
+            grib_context_log(c, GRIB_LOG_ERROR,
+                    "grib_fieldset_new_column : Cannot malloc %d bytes",
+                    sizeof(char*)*GRIB_START_ARRAY_SIZE);
+            err=GRIB_OUT_OF_MEMORY;
+            return err;
+        }
+        break;
+    default:
         grib_context_log(c, GRIB_LOG_ERROR,
-          "grib_fieldset_new_column : Cannot malloc %d bytes",
-          sizeof(char*)*GRIB_START_ARRAY_SIZE);
-        err=GRIB_OUT_OF_MEMORY;
+                "grib_fieldset_new_column : unknown column type %d",type);
+        grib_context_free(c,column);
         return err;
-      }
-      break;
-    default:
-      grib_context_log(c, GRIB_LOG_ERROR,
-        "grib_fieldset_new_column : unknown column type %d",type);
-      grib_context_free(c,column);
-      return err;
-  }
-
-  set->columns[id].context=c;
-  set->columns[id].name=grib_context_strdup(c,key);
-  set->columns[id].type=type;
-  set->columns[id].values_array_size=GRIB_START_ARRAY_SIZE;
-  set->columns[id].size=0;
-  return err;
-}
-
-static void grib_fieldset_delete_columns(grib_fieldset* set) {
-  int i=0;
-  grib_context* c;
+    }
 
-  if (!set) return;
-  c=set->context;
+    set->columns[id].context=c;
+    set->columns[id].name=grib_context_strdup(c,key);
+    set->columns[id].type=type;
+    set->columns[id].values_array_size=GRIB_START_ARRAY_SIZE;
+    set->columns[id].size=0;
+    return err;
+}
 
-  for (i=0;i<set->columns_size;i++) {
-    int j=0;
-    switch (set->columns[i].type) {
-      case GRIB_TYPE_LONG:
-        grib_context_free(c,set->columns[i].long_values);
-        break;
-      case GRIB_TYPE_DOUBLE:
-        grib_context_free(c,set->columns[i].double_values);
-        break;
-      case GRIB_TYPE_STRING:
-        for (j=0;j<set->columns[i].size;j++)
-          grib_context_free(c,set->columns[i].string_values[j]);
-        break;
-      default:
-        grib_context_log(c, GRIB_LOG_ERROR,
-          "grib_fieldset_new_column : unknown column type %d",set->columns[i].type);
+static void grib_fieldset_delete_columns(grib_fieldset* set)
+{
+    int i=0;
+    grib_context* c;
+
+    if (!set) return;
+    c=set->context;
+
+    for (i=0;i<set->columns_size;i++) {
+        int j=0;
+        switch (set->columns[i].type) {
+        case GRIB_TYPE_LONG:
+            grib_context_free(c,set->columns[i].long_values);
+            break;
+        case GRIB_TYPE_DOUBLE:
+            grib_context_free(c,set->columns[i].double_values);
+            break;
+        case GRIB_TYPE_STRING:
+            for (j=0;j<set->columns[i].size;j++)
+                grib_context_free(c,set->columns[i].string_values[j]);
+            break;
+        default:
+            grib_context_log(c, GRIB_LOG_ERROR,
+                    "grib_fieldset_new_column : unknown column type %d",set->columns[i].type);
+        }
+        grib_context_free(c,set->columns[i].errors);
+        grib_context_free(c,set->columns[i].name);
     }
-    grib_context_free(c,set->columns[i].errors);
-    grib_context_free(c,set->columns[i].name);
-  }
-  grib_context_free(c,set->columns);
+    grib_context_free(c,set->columns);
 }
 
-static int grib_fieldset_columns_resize(grib_fieldset* set,size_t newsize) {
-  double* newdoubles;
-  long* newlongs;
-  char** newstrings;
-  int* newerrors;
-  int i=0;
-  grib_context* c;
+static int grib_fieldset_columns_resize(grib_fieldset* set,size_t newsize)
+{
+    double* newdoubles;
+    long* newlongs;
+    char** newstrings;
+    int* newerrors;
+    int i=0;
+    grib_context* c;
+
+    if (!set || !set->columns) return GRIB_INVALID_ARGUMENT;
+
+    c=set->context;
+
+    if (newsize <= set->columns[0].values_array_size) return 0;
+
+    for (i=0;i<set->columns_size;i++) {
+
+        switch (set->columns[i].type) {
+        case GRIB_TYPE_LONG:
+            newlongs=(long*)grib_context_realloc(c,set->columns[i].long_values,
+                    newsize*sizeof(long));
+            if (!newlongs ) {
+                grib_context_log(c, GRIB_LOG_ERROR,
+                        "grib_fieldset_columns_resize : Cannot malloc %d bytes",newsize-set->columns[i].values_array_size);
+                return GRIB_OUT_OF_MEMORY;
+            } else set->columns[i].long_values=newlongs;
+            break;
+        case GRIB_TYPE_DOUBLE:
+            newdoubles=(double*)grib_context_realloc(c,set->columns[i].double_values,
+                    newsize*sizeof(double));
+            if (!newdoubles) {
+                grib_context_log(c, GRIB_LOG_ERROR,
+                        "grib_fieldset_columns_resize : Cannot malloc %d bytes",newsize-set->columns[i].values_array_size);
+                return GRIB_OUT_OF_MEMORY;
+            } else set->columns[i].double_values=newdoubles;
+            break;
+        case GRIB_TYPE_STRING:
+            newstrings=(char**)grib_context_realloc(c,set->columns[i].string_values,
+                    newsize*sizeof(char*));
+            if (!newstrings) {
+                grib_context_log(c, GRIB_LOG_ERROR,
+                        "grib_fieldset_columns_resize : Cannot malloc %d bytes",newsize-set->columns[i].values_array_size);
+                return GRIB_OUT_OF_MEMORY;
+            } else set->columns[i].string_values=newstrings;
+            break;
+        }
+        newerrors=(int*)grib_context_realloc(c,set->columns[i].errors,newsize*sizeof(int));
+        if (!newerrors) {
+            grib_context_log(c, GRIB_LOG_ERROR,
+                    "grib_fieldset_columns_resize : Cannot malloc %d bytes",
+                    set->columns[i].errors,newsize*sizeof(int));
+            return GRIB_OUT_OF_MEMORY;
+        } else set->columns[i].errors=newerrors;
+
+        set->columns[i].values_array_size=newsize;
 
-  if (!set || !set->columns) return GRIB_INVALID_ARGUMENT;
+    }
 
-  c=set->context;
+    return GRIB_SUCCESS;
+}
 
-  if (newsize <= set->columns[0].values_array_size) return 0;
+int grib_fieldset_column_copy_from_handle(grib_handle* h,grib_fieldset* set,int i)
+{
+    int err=0;
+    long lval=0;
+    double dval=0;
+    char sval[1024];
+    size_t slen=1024;
+    if (!set || !h || set->columns[i].type == 0)
+        return GRIB_INVALID_ARGUMENT;
 
-  for (i=0;i<set->columns_size;i++) {
+    if (set->columns[i].size >= set->columns[i].values_array_size)
+        grib_fieldset_columns_resize(set,set->columns[i].values_array_size+GRIB_ARRAY_INCREMENT);
 
     switch (set->columns[i].type) {
-      case GRIB_TYPE_LONG:
-        newlongs=(long*)grib_context_realloc(c,set->columns[i].long_values,
-              newsize*sizeof(long));
-        if (!newlongs ) {
-          grib_context_log(c, GRIB_LOG_ERROR,
-              "grib_fieldset_columns_resize : Cannot malloc %d bytes",newsize-set->columns[i].values_array_size);
-          return GRIB_OUT_OF_MEMORY;
-        } else set->columns[i].long_values=newlongs;
+    case GRIB_TYPE_LONG:
+        err=grib_get_long(h,set->columns[i].name,&lval);
+        set->columns[i].long_values[set->columns[i].size]=lval;
         break;
-      case GRIB_TYPE_DOUBLE:
-        newdoubles=(double*)grib_context_realloc(c,set->columns[i].double_values,
-             newsize*sizeof(double));
-        if (!newdoubles) {
-          grib_context_log(c, GRIB_LOG_ERROR,
-              "grib_fieldset_columns_resize : Cannot malloc %d bytes",newsize-set->columns[i].values_array_size);
-          return GRIB_OUT_OF_MEMORY;
-        } else set->columns[i].double_values=newdoubles;
+    case GRIB_TYPE_DOUBLE:
+        err=grib_get_double(h,set->columns[i].name,&dval);
+        set->columns[i].double_values[set->columns[i].size]=dval;
         break;
-      case GRIB_TYPE_STRING:
-        newstrings=(char**)grib_context_realloc(c,set->columns[i].string_values,
-              newsize*sizeof(char*));
-        if (!newstrings) {
-          grib_context_log(c, GRIB_LOG_ERROR,
-              "grib_fieldset_columns_resize : Cannot malloc %d bytes",newsize-set->columns[i].values_array_size);
-          return GRIB_OUT_OF_MEMORY;
-        } else set->columns[i].string_values=newstrings;
+    case GRIB_TYPE_STRING:
+        err=grib_get_string(h,set->columns[i].name,sval,&slen);
+        set->columns[i].string_values[set->columns[i].size]=grib_context_strdup(h->context,sval);
         break;
     }
-    newerrors=(int*)grib_context_realloc(c,set->columns[i].errors,newsize*sizeof(int));
-    if (!newerrors) {
-      grib_context_log(c, GRIB_LOG_ERROR,
-          "grib_fieldset_columns_resize : Cannot malloc %d bytes",
-          set->columns[i].errors,newsize*sizeof(int));
-      return GRIB_OUT_OF_MEMORY;
-    } else set->columns[i].errors=newerrors;
-
-    set->columns[i].values_array_size=newsize;
 
-  }
+    set->columns[i].errors[set->columns[i].size]=err;
+    set->columns[i].size++;
 
-  return GRIB_SUCCESS;
+    return err;
 }
 
-int grib_fieldset_column_copy_from_handle(grib_handle* h,grib_fieldset* set,int i) {
-  int err=0;
-  long lval=0;
-  double dval=0;
-  char sval[1024];
-  size_t slen=1024;
-  if (!set || !h || set->columns[i].type == 0)
-    return GRIB_INVALID_ARGUMENT;
+/* --------------- grib_fieldset functions ------------------*/
+grib_fieldset* grib_fieldset_new_from_files(grib_context* c,char* filenames[],
+        int nfiles, char** keys,int nkeys,
+        char* where_string,char* order_by_string,int* err)
+{
+    int i=0;
+    int ret=GRIB_SUCCESS;
+    grib_order_by* ob=NULL;
 
-  if (set->columns[i].size >= set->columns[i].values_array_size)
-    grib_fieldset_columns_resize(set,set->columns[i].values_array_size+GRIB_ARRAY_INCREMENT);
+    grib_fieldset* set=0;
 
-  switch (set->columns[i].type) {
-    case GRIB_TYPE_LONG:
-      err=grib_get_long(h,set->columns[i].name,&lval);
-      set->columns[i].long_values[set->columns[i].size]=lval;
-      break;
-    case GRIB_TYPE_DOUBLE:
-      err=grib_get_double(h,set->columns[i].name,&dval);
-      set->columns[i].double_values[set->columns[i].size]=dval;
-      break;
-    case GRIB_TYPE_STRING:
-      err=grib_get_string(h,set->columns[i].name,sval,&slen);
-      set->columns[i].string_values[set->columns[i].size]=grib_context_strdup(h->context,sval);
-      break;
-  }
+    if (!c) c=grib_context_get_default( );
 
-  set->columns[i].errors[set->columns[i].size]=err;
-  set->columns[i].size++;
+    if (( (!keys || nkeys==0) && !order_by_string )
+            || !filenames ) {
+        *err=GRIB_INVALID_ARGUMENT;
+        return NULL;
+    }
 
-  return err;
-}
+    if (order_by_string) {
+        ob=grib_fieldset_new_order_by(c,order_by_string);
+        if (!ob) {
+            *err=GRIB_INVALID_ORDERBY;
+            return NULL;
+        }
+    }
 
-/* --------------- grib_fieldset functions ------------------*/
-grib_fieldset* grib_fieldset_new_from_files(grib_context* c,char* filenames[],
-            int nfiles, char** keys,int nkeys,
-            char* where_string,char* order_by_string,int* err) {
-   int i=0;
-   int ret=GRIB_SUCCESS;
-   grib_order_by* ob=NULL;
-
-   grib_fieldset* set=0;
-
-   if (!c) c=grib_context_get_default( );
-
-   if (( (!keys || nkeys==0) && !order_by_string )
-        || !filenames ) {
-     *err=GRIB_INVALID_ARGUMENT;
-     return NULL;
-   }
-
-   if (order_by_string) {
-     ob=grib_fieldset_new_order_by(c,order_by_string);
-     if (!ob) {
-       *err=GRIB_INVALID_ORDERBY;
-       return NULL;
-     }
-   }
-
-   if ( !keys || nkeys==0 ) {
-     set=grib_fieldset_create_from_order_by(c,ob,err);
-   } else {
-     set=grib_fieldset_create_from_keys(c,keys,nkeys,err);
-   }
-
-   *err=GRIB_SUCCESS;
-   for (i=0;i<nfiles;i++) {
-     ret=grib_fieldset_add(set,filenames[i]);
-     if (ret != GRIB_SUCCESS) {
-       *err=ret;
-       return NULL;
-     }
-   }
-
-   if (where_string) grib_fieldset_apply_where(set,where_string);
-
-   if (order_by_string) {
-      if (!set->order_by && ob) *err=grib_fieldset_set_order_by(set,ob);
-      if (*err!=GRIB_SUCCESS) return NULL;
-      grib_fieldset_sort(set,0,set->size-1);
-      grib_fieldset_rewind(set);
-   }
-
-   return set;
-}
+    if ( !keys || nkeys==0 ) {
+        set=grib_fieldset_create_from_order_by(c,ob,err);
+    } else {
+        set=grib_fieldset_create_from_keys(c,keys,nkeys,err);
+    }
 
-static grib_fieldset* grib_fieldset_create_from_keys(grib_context* c,char** keys,int nkeys,
-                                           int* err) {
-   grib_fieldset* set=0;
-   size_t msize=0,size=0;
-   int i=0;
-   int type=0;
-   int default_type=GRIB_TYPE_STRING;
-
-   if (!c) c=grib_context_get_default( );
-
-   size=GRIB_START_ARRAY_SIZE;
-
-   msize=sizeof(grib_fieldset);
-   set=(grib_fieldset*)grib_context_malloc_clear(c,msize);
-   if (!set) {
-     grib_context_log(c, GRIB_LOG_ERROR,
-        "grib_fieldset_create : Cannot malloc %d bytes",msize);
-      return NULL;
-   }
-
-   set->context=c;
-   set->fields_array_size=size;
-   set->size=0;
-   set->current=-1;
-   set->fields=0;
-   set->filter=0;
-   set->order=0;
-   set->columns=0;
-   set->where=0;
-   set->order_by=0;
-
-   set->fields=grib_fieldset_create_fields(set->context,size);
-
-   set->order=grib_fieldset_create_int_array(c,size);
-   set->filter=grib_fieldset_create_int_array(c,size);
-   for (i=0;i<set->filter->size;i++)
-     set->filter->el[i]=i;
-
-   set->columns=(grib_column*)grib_context_malloc_clear(c,sizeof(grib_column)*nkeys);
-   if (!set->columns) {
-       grib_context_log(c,GRIB_LOG_ERROR,"grib_fieldset_new_query: memory allocation error");
-       *err=GRIB_OUT_OF_MEMORY;
-       return NULL;
-   }
-   for (i=0;i<nkeys;i++) {
-     char* key=grib_context_strdup(c,keys[i]);
-     char* p=key;
-     while(*p != ':' && *p != '\0') p++;
-     if (*p==':') {
-       type = grib_type_to_int(*(p+1));
-       *p='\0';
-     } else {
-       type = default_type;
-     }
-     *err=grib_fieldset_new_column(set,i,key,type);
-     grib_context_free(c,key);
-   }
-
-   set->columns_size=nkeys;
-
-   return set;
+    *err=GRIB_SUCCESS;
+    for (i=0;i<nfiles;i++) {
+        ret=grib_fieldset_add(set,filenames[i]);
+        if (ret != GRIB_SUCCESS) {
+            *err=ret;
+            return NULL;
+        }
+    }
 
+    if (where_string) grib_fieldset_apply_where(set,where_string);
+
+    if (order_by_string) {
+        if (!set->order_by && ob) *err=grib_fieldset_set_order_by(set,ob);
+        if (*err!=GRIB_SUCCESS) return NULL;
+        grib_fieldset_sort(set,0,set->size-1);
+        grib_fieldset_rewind(set);
+    }
+
+    return set;
 }
 
-static grib_fieldset* grib_fieldset_create_from_order_by(grib_context* c,grib_order_by* ob,
-                                           int* err) {
-  char** keys=NULL;
-  size_t nkeys=0;
-  int i=0;
-  grib_fieldset* set=NULL;
-  grib_order_by* next=ob;
+static grib_fieldset* grib_fieldset_create_from_keys(grib_context* c,char** keys,int nkeys,
+        int* err)
+{
+    grib_fieldset* set=0;
+    size_t msize=0,size=0;
+    int i=0;
+    int type=0;
+    int default_type=GRIB_TYPE_STRING;
 
-  while(next) {nkeys++;next=next->next;}
+    if (!c) c=grib_context_get_default( );
 
-  keys=(char**)grib_context_malloc_clear( c,nkeys*sizeof(char*));
+    size=GRIB_START_ARRAY_SIZE;
 
-  next=ob;
-  i=0;
-  while(next) {keys[i++]=next->key;next=next->next;}
+    msize=sizeof(grib_fieldset);
+    set=(grib_fieldset*)grib_context_malloc_clear(c,msize);
+    if (!set) {
+        grib_context_log(c, GRIB_LOG_ERROR,
+                "grib_fieldset_create : Cannot malloc %d bytes",msize);
+        return NULL;
+    }
 
-  set=grib_fieldset_create_from_keys(c,keys,nkeys,err);
-  grib_context_free(c,keys);
+    set->context=c;
+    set->fields_array_size=size;
+    set->size=0;
+    set->current=-1;
+    set->fields=0;
+    set->filter=0;
+    set->order=0;
+    set->columns=0;
+    set->where=0;
+    set->order_by=0;
+
+    set->fields=grib_fieldset_create_fields(set->context,size);
+
+    set->order=grib_fieldset_create_int_array(c,size);
+    set->filter=grib_fieldset_create_int_array(c,size);
+    for (i=0;i<set->filter->size;i++)
+        set->filter->el[i]=i;
+
+    set->columns=(grib_column*)grib_context_malloc_clear(c,sizeof(grib_column)*nkeys);
+    if (!set->columns) {
+        grib_context_log(c,GRIB_LOG_ERROR,"grib_fieldset_new_query: memory allocation error");
+        *err=GRIB_OUT_OF_MEMORY;
+        return NULL;
+    }
+    for (i=0;i<nkeys;i++) {
+        char* key=grib_context_strdup(c,keys[i]);
+        char* p=key;
+        while(*p != ':' && *p != '\0') p++;
+        if (*p==':') {
+            type = grib_type_to_int(*(p+1));
+            *p='\0';
+        } else {
+            type = default_type;
+        }
+        *err=grib_fieldset_new_column(set,i,key,type);
+        grib_context_free(c,key);
+    }
+
+    set->columns_size=nkeys;
 
-  return set;
+    return set;
 }
 
-int grib_fieldset_apply_where(grib_fieldset* set,const char* where_string) {
-  int err=GRIB_NOT_IMPLEMENTED;
-  grib_math* m=0;
+static grib_fieldset* grib_fieldset_create_from_order_by(grib_context* c,grib_order_by* ob,
+        int* err)
+{
+    char** keys=NULL;
+    size_t nkeys=0;
+    int i=0;
+    grib_fieldset* set=NULL;
+    grib_order_by* next=ob;
+
+    while(next) {nkeys++;next=next->next;}
 
-  if (!set) return GRIB_INVALID_ARGUMENT;
+    keys=(char**)grib_context_malloc_clear( c,nkeys*sizeof(char*));
 
-  m=grib_math_new(set->context,where_string,&err);
+    next=ob;
+    i=0;
+    while(next) {keys[i++]=next->key;next=next->next;}
 
-  print_math(m);
-  printf("\n");
-  return err;
+    set=grib_fieldset_create_from_keys(c,keys,nkeys,err);
+    grib_context_free(c,keys);
+
+    return set;
 }
 
-int grib_fieldset_apply_order_by(grib_fieldset* set,const char* order_by_string) {
-  int err=0;
-  grib_order_by* ob=NULL;
+int grib_fieldset_apply_where(grib_fieldset* set,const char* where_string)
+{
+    int err=GRIB_NOT_IMPLEMENTED;
+    grib_math* m=0;
 
-  if (!set) return GRIB_INVALID_ARGUMENT;
+    if (!set) return GRIB_INVALID_ARGUMENT;
 
-  if (set->order_by) {
-   grib_fieldset_delete_order_by(set->context,set->order_by);
-   set->order_by=0;
-  }
+    m=grib_math_new(set->context,where_string,&err);
 
-  ob=grib_fieldset_new_order_by(set->context,(char*)order_by_string);
-  if ((err=grib_fieldset_set_order_by(set,ob)) != GRIB_SUCCESS)
+    print_math(m);
+    printf("\n");
     return err;
+}
 
-  if (set->order_by) grib_fieldset_sort(set,0,set->size-1);
+int grib_fieldset_apply_order_by(grib_fieldset* set,const char* order_by_string)
+{
+    int err=0;
+    grib_order_by* ob=NULL;
 
-  grib_fieldset_rewind(set);
+    if (!set) return GRIB_INVALID_ARGUMENT;
 
-  return err;
-}
+    if (set->order_by) {
+        grib_fieldset_delete_order_by(set->context,set->order_by);
+        set->order_by=0;
+    }
 
+    ob=grib_fieldset_new_order_by(set->context,(char*)order_by_string);
+    if ((err=grib_fieldset_set_order_by(set,ob)) != GRIB_SUCCESS)
+        return err;
 
-static int grib_fieldset_compare(grib_fieldset* set,int* i,int* j) {
-  int ret=0;
-  double d=0;
-  int idkey=0;
-  grib_order_by* ob=0;
-  int ii=0,jj=0;
-  int *order=0,*filter=0;
-
-  if (!set || !set->order_by) return GRIB_INVALID_ARGUMENT;
-  ob=set->order_by;
-  order=set->order->el;
-  filter=set->filter->el;
-
-  ii=*(set->filter->el+*(order+*i));
-  jj=*(set->filter->el+*(order+*j));
-
-  while (ob) {
-    idkey=ob->idkey;
-    switch (set->columns[idkey].type) {
-      case GRIB_TYPE_STRING:
-        ret=strcmp(set->columns[idkey].string_values[ii],
-                   set->columns[idkey].string_values[jj]);
-        break;
+    if (set->order_by) grib_fieldset_sort(set,0,set->size-1);
 
-      case GRIB_TYPE_DOUBLE:
-        d=set->columns[idkey].double_values[ii]-
-          set->columns[idkey].double_values[jj];
-        if (d > 0 ) ret=1;
-        else if ( d == 0) ret=0;
-        else ret=-1;
-        break;
+    grib_fieldset_rewind(set);
+
+    return err;
+}
 
-      case GRIB_TYPE_LONG:
-        ret=set->columns[idkey].long_values[ii]-
+static int grib_fieldset_compare(grib_fieldset* set,int* i,int* j)
+{
+    int ret=0;
+    double d=0;
+    int idkey=0;
+    grib_order_by* ob=0;
+    int ii=0,jj=0;
+    int *order=0;
+
+    if (!set || !set->order_by) return GRIB_INVALID_ARGUMENT;
+    ob=set->order_by;
+    order=set->order->el;
+
+    ii=*(set->filter->el+*(order+*i));
+    jj=*(set->filter->el+*(order+*j));
+
+    while (ob) {
+        idkey=ob->idkey;
+        switch (set->columns[idkey].type) {
+        case GRIB_TYPE_STRING:
+            ret=strcmp(set->columns[idkey].string_values[ii],
+                    set->columns[idkey].string_values[jj]);
+            break;
+
+        case GRIB_TYPE_DOUBLE:
+            d=set->columns[idkey].double_values[ii]-
+            set->columns[idkey].double_values[jj];
+            if (d > 0 ) ret=1;
+            else if ( d == 0) ret=0;
+            else ret=-1;
+            break;
+
+        case GRIB_TYPE_LONG:
+            ret=set->columns[idkey].long_values[ii]-
             set->columns[idkey].long_values[jj];
-        break;
-      default:
-        return GRIB_INVALID_TYPE;
+            break;
+        default:
+            return GRIB_INVALID_TYPE;
+        }
+        if (ret!=0) {
+            ret*=ob->mode;
+            break;
+        }
+        ob=ob->next;
     }
-    if (ret!=0) {
-      ret*=ob->mode;
-      break;
-    }
-    ob=ob->next;
-  }
 
-  return ret;
+    return ret;
 }
 
-static void grib_fieldset_sort(grib_fieldset* set, int beg, int theEnd) {
-   double temp;
-   int l=0,r=0;
-   if (theEnd > beg) {
-      l = beg + 1;
-      r = theEnd;
-      while (l < r) {
-         if ( grib_fieldset_compare(set,&l,&beg) <= 0 ) {
-           l++;
-         } else if(grib_fieldset_compare(set,&r,&beg) >= 0 ) {
-           r--;
-         } else {
-           SWAP(set->order->el[l],set->order->el[r])
-         }
-      }
-
-      if (grib_fieldset_compare(set,&l,&beg) < 0) {
-        SWAP(set->order->el[l],set->order->el[beg])
-        l--;
-      } else {
-        l--;
-        SWAP(set->order->el[l],set->order->el[beg])
-      }
-
-      grib_fieldset_sort(set, beg, l);
-      grib_fieldset_sort(set, r, theEnd);
-   }
+static void grib_fieldset_sort(grib_fieldset* set, int beg, int theEnd)
+{
+    double temp;
+    int l=0,r=0;
+    if (theEnd > beg) {
+        l = beg + 1;
+        r = theEnd;
+        while (l < r) {
+            if ( grib_fieldset_compare(set,&l,&beg) <= 0 ) {
+                l++;
+            } else if(grib_fieldset_compare(set,&r,&beg) >= 0 ) {
+                r--;
+            } else {
+                SWAP(set->order->el[l],set->order->el[r])
+            }
+        }
+
+        if (grib_fieldset_compare(set,&l,&beg) < 0) {
+            SWAP(set->order->el[l],set->order->el[beg])
+                        l--;
+        } else {
+            l--;
+            SWAP(set->order->el[l],set->order->el[beg])
+        }
+
+        grib_fieldset_sort(set, beg, l);
+        grib_fieldset_sort(set, r, theEnd);
+    }
 }
 
-void grib_fieldset_delete_order_by(grib_context* c,grib_order_by* order_by) {
-  grib_order_by* ob=order_by;
+void grib_fieldset_delete_order_by(grib_context* c,grib_order_by* order_by)
+{
+    grib_order_by* ob=order_by;
 
-  if (!c) c=grib_context_get_default();
+    if (!c) c=grib_context_get_default();
 
-  while (order_by) {
-    if (order_by->key) free(order_by->key);
-    ob=order_by;
-    order_by=order_by->next;
-    grib_context_free( c,ob);
-  }
+    while (order_by) {
+        if (order_by->key) free(order_by->key);
+        ob=order_by;
+        order_by=order_by->next;
+        grib_context_free( c,ob);
+    }
 
-  return;
+    return;
 }
 
-
-static grib_order_by* grib_fieldset_new_order_by(grib_context* c,char* obstr) {
-  char *t1=0,*t2=0,*p=0;
-  int id=0;
-  char *z=0,*zs=0;
-  int mode,mode_default=GRIB_ORDER_BY_ASC;
-  grib_order_by *ob,*sob;
-
-  if (!obstr) return NULL;
-
-  z=grib_context_strdup(c,obstr);
-  zs=z;
-  grib_trim(&z);
-
-  if (strlen(z)==0) {return 0;}
-
-  ob=(grib_order_by*)grib_context_malloc_clear(c,sizeof(grib_order_by));
-  sob=ob;
-  ob->key=0;
-  ob->idkey=0;
-  ob->mode=0;
-  ob->next=0;
-
-  if (z) t1=strtok(z,",");
-
-  while (t1) {
-    grib_trim(&t1);
-    t2=grib_context_strdup(c,t1);
-    p=t2;
-    while ( *p != ' ' && *p != '\0' ) p++;
-    mode=mode_default;
-    if (p != t2) {
-      while ( *p == ' ' && *p != '\0' ) p++;
-      if (*p != '\0') {
-        *(p-1)='\0';
-        if (!grib_inline_strcmp(p,"asc")) mode=GRIB_ORDER_BY_ASC;
-        if (!grib_inline_strcmp(p,"desc")) mode=GRIB_ORDER_BY_DESC;
-      }
-      grib_trim(&p);
-    }
-    grib_trim(&t2);
-    id=-1;
-    t1=strtok(NULL,",");
-
-    if (ob->key) {
-      ob->next=(grib_order_by*)grib_context_malloc_clear(c,sizeof(grib_order_by));
-      ob=ob->next;
-      ob->key=0;
-      ob->next=0;
+static grib_order_by* grib_fieldset_new_order_by(grib_context* c,char* obstr)
+{
+    char *t1=0,*t2=0,*p=0;
+    int id=0;
+    char *z=0;
+    int mode,mode_default=GRIB_ORDER_BY_ASC;
+    grib_order_by *ob,*sob;
+
+    if (!obstr) return NULL;
+
+    z=grib_context_strdup(c,obstr);
+    if(!z) return 0;
+    grib_trim(&z);
+
+    if (strlen(z)==0) {return 0;}
+
+    ob=(grib_order_by*)grib_context_malloc_clear(c,sizeof(grib_order_by));
+    sob=ob;
+    ob->key=0;
+    ob->idkey=0;
+    ob->mode=0;
+    ob->next=0;
+
+    t1=strtok(z,",");
+
+    while (t1) {
+        grib_trim(&t1);
+        t2=grib_context_strdup(c,t1);
+        p=t2;
+        while ( *p != ' ' && *p != '\0' ) p++;
+        mode=mode_default;
+        if (p != t2) {
+            while ( *p == ' ' && *p != '\0' ) p++;
+            if (*p != '\0') {
+                *(p-1)='\0';
+                if (!grib_inline_strcmp(p,"asc")) mode=GRIB_ORDER_BY_ASC;
+                if (!grib_inline_strcmp(p,"desc")) mode=GRIB_ORDER_BY_DESC;
+            }
+            grib_trim(&p);
+        }
+        grib_trim(&t2);
+        id=-1;
+        t1=strtok(NULL,",");
+
+        if (ob->key) {
+            ob->next=(grib_order_by*)grib_context_malloc_clear(c,sizeof(grib_order_by));
+            ob=ob->next;
+            ob->key=0;
+            ob->next=0;
+        }
+        ob->mode=mode;
+        ob->key=t2;
+        ob->idkey=id;
     }
-    ob->mode=mode;
-    ob->key=t2;
-    ob->idkey=id;
-  }
 
-  if (z) grib_context_free(c,z);
-  return sob;
+    if (z) grib_context_free(c,z);
+    return sob;
 }
 
+void grib_fieldset_delete(grib_fieldset* set)
+{
+    grib_context* c=0;
+    if (!set) return;
 
-void grib_fieldset_delete(grib_fieldset* set) {
-  grib_context* c=0;
-  if (!set) return;
-
-  c=set->context;
+    c=set->context;
 
-  grib_fieldset_delete_columns(set);
+    grib_fieldset_delete_columns(set);
 
-  grib_fieldset_delete_fields(set);
-  grib_fieldset_delete_int_array(set->order);
-  grib_fieldset_delete_int_array(set->filter);
+    grib_fieldset_delete_fields(set);
+    grib_fieldset_delete_int_array(set->order);
+    grib_fieldset_delete_int_array(set->filter);
 
-  grib_context_free( c, set);
+    grib_context_free( c, set);
 }
 
+int grib_fieldset_add(grib_fieldset* set,char* filename)
+{
+    int ret=GRIB_SUCCESS;
+    int err=0;
+    int i=0;
+    grib_handle* h=0;
+   /* int nkeys; */
+    grib_file* file;
+    double offset=0;
+    long length=0;
+    grib_context* c=0;
+
+    if (!set || !filename ) return GRIB_INVALID_ARGUMENT;
+    c=set->context;
+
+   /* nkeys=set->columns_size; */
+
+    file=grib_file_open(filename,"r",&err);
+    if (!file || !file->handle) return err;
+
+    while((h = grib_handle_new_from_file(c,file->handle,&ret))
+            != NULL || ret != GRIB_SUCCESS ) {
+        if (!h) return ret;
+
+        err=GRIB_SUCCESS;
+        for (i=0;i<set->columns_size;i++) {
+            err=grib_fieldset_column_copy_from_handle(h,set,i);
+            if (err != GRIB_SUCCESS) ret=err;
+        }
+        if (err==GRIB_SUCCESS || err==GRIB_NOT_FOUND) {
+            if (set->fields_array_size < set->columns[0].values_array_size) {
+                ret=grib_fieldset_resize(set,set->columns[0].values_array_size);
+                if (ret!=GRIB_SUCCESS) return ret;
+            }
+            offset=0;
+            ret=grib_get_double(h,"offset",&offset);
+            set->fields[set->size]=(grib_field*)grib_context_malloc_clear(c,sizeof(grib_field));
+            set->fields[set->size]->file=file;
+            file->refcount++;
+            set->fields[set->size]->offset=(off_t)offset;
+            ret=grib_get_long(h,"totalLength",&length);
+            set->fields[set->size]->length=length;
+            set->filter->el[set->size]=set->size;
+            set->order->el[set->size]=set->size;
+            set->size=set->columns[0].size;
+        }
+        grib_handle_delete(h);
+    }
+    if (h) grib_handle_delete(h);
+
+    grib_file_close(file->name,&err);
+
+    grib_fieldset_rewind(set);
 
-int grib_fieldset_add(grib_fieldset* set,char* filename) {
-   int ret=GRIB_SUCCESS;
-   int err=0;
-   int i=0;
-   grib_handle* h=0;
-   int nkeys;
-   grib_file* file;
-   double offset=0;
-   long length=0;
-   grib_context* c=0;
-
-   if (!set || !filename ) return GRIB_INVALID_ARGUMENT;
-   c=set->context;
-
-   nkeys=set->columns_size;
-
-   file=grib_file_open(filename,"r",&err);
-   if (!file || !file->handle) return err;
-
-   while((h = grib_handle_new_from_file(c,file->handle,&ret))
-         != NULL || ret != GRIB_SUCCESS ) {
-     if (!h) return ret;
-
-     err=GRIB_SUCCESS;
-     for (i=0;i<set->columns_size;i++) {
-       err=grib_fieldset_column_copy_from_handle(h,set,i);
-       if (err != GRIB_SUCCESS) ret=err;
-     }
-     if (err==GRIB_SUCCESS || err==GRIB_NOT_FOUND) {
-       if (set->fields_array_size < set->columns[0].values_array_size) {
-         ret=grib_fieldset_resize(set,set->columns[0].values_array_size);
-         if (ret!=GRIB_SUCCESS) return ret;
-       }
-       offset=0;
-       ret=grib_get_double(h,"offset",&offset);
-       set->fields[set->size]=(grib_field*)grib_context_malloc_clear(c,sizeof(grib_field));
-       set->fields[set->size]->file=file;
-       file->refcount++;
-       set->fields[set->size]->offset=(off_t)offset;
-       ret=grib_get_long(h,"totalLength",&length);
-       set->fields[set->size]->length=length;
-       set->filter->el[set->size]=set->size;
-       set->order->el[set->size]=set->size;
-       set->size=set->columns[0].size;
-     }
-     grib_handle_delete(h);
-   }
-   if (h) grib_handle_delete(h);
-
-   grib_file_close(file->name,&err);
-
-   grib_fieldset_rewind(set);
-
-   return ret;
+    return ret;
 }
 
-static int grib_fieldset_resize(grib_fieldset* set,size_t newsize) {
-  int err=0;
+static int grib_fieldset_resize(grib_fieldset* set,size_t newsize)
+{
+    int err=0;
 
-  err=grib_fieldset_resize_fields(set,newsize);
-  if (err != 0) return err;
-  grib_fieldset_resize_int_array(set->order,newsize);
-  if (err != 0) return err;
-  grib_fieldset_resize_int_array(set->filter,newsize);
-  if (err != 0) return err;
+    err=grib_fieldset_resize_fields(set,newsize);
+    if (err != 0) return err;
+    grib_fieldset_resize_int_array(set->order,newsize);
+    if (err != 0) return err;
+    grib_fieldset_resize_int_array(set->filter,newsize);
+    if (err != 0) return err;
 
-  set->fields_array_size=newsize;
+    set->fields_array_size=newsize;
 
-  return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
 
-void grib_fieldset_rewind(grib_fieldset* set) {
-  if (set) set->current=0;
+void grib_fieldset_rewind(grib_fieldset* set)
+{
+    if (set) set->current=0;
 }
 
-grib_handle* grib_fieldset_next_handle(grib_fieldset* set,int* err) {
-  grib_handle* h;
-  *err=GRIB_SUCCESS;
-  h=grib_fieldset_retrieve(set,set->current,err);
-  if (*err==GRIB_SUCCESS) {
-    set->current++;
-  }
-  return h;
+grib_handle* grib_fieldset_next_handle(grib_fieldset* set,int* err)
+{
+    grib_handle* h;
+    *err=GRIB_SUCCESS;
+    h=grib_fieldset_retrieve(set,set->current,err);
+    if (*err==GRIB_SUCCESS) {
+        set->current++;
+    }
+    return h;
 }
 
-int grib_fieldset_count(grib_fieldset* set) {
-  return set->size;
+int grib_fieldset_count(grib_fieldset* set)
+{
+    return set->size;
 }
 
-grib_handle* grib_fieldset_retrieve(grib_fieldset* set,int i,int* err) {
-   grib_handle* h=0;
-   grib_field* field=0;
-   *err=GRIB_SUCCESS;
-   if ( !set  ) {
-    *err=GRIB_INVALID_ARGUMENT;
-    return NULL;
-   }
-   if (i >= set->size) return NULL;
+grib_handle* grib_fieldset_retrieve(grib_fieldset* set,int i,int* err)
+{
+    grib_handle* h=0;
+    grib_field* field=0;
+    *err=GRIB_SUCCESS;
+    if ( !set  ) {
+        *err=GRIB_INVALID_ARGUMENT;
+        return NULL;
+    }
+    if (i >= set->size) return NULL;
 
-   field=set->fields[set->filter->el[set->order->el[i]]];
-   grib_file_open(field->file->name,"r",err);
-   if (*err!=GRIB_SUCCESS) return NULL;
+    field=set->fields[set->filter->el[set->order->el[i]]];
+    grib_file_open(field->file->name,"r",err);
+    if (*err!=GRIB_SUCCESS) return NULL;
 
-   fseeko(field->file->handle,field->offset,SEEK_SET);
-   h=grib_handle_new_from_file(set->context,field->file->handle,err);
-   if (*err!=GRIB_SUCCESS) return NULL;
+    fseeko(field->file->handle,field->offset,SEEK_SET);
+    h=grib_handle_new_from_file(set->context,field->file->handle,err);
+    if (*err!=GRIB_SUCCESS) return NULL;
 
-   grib_file_close(field->file->name,err);
+    grib_file_close(field->file->name,err);
 
-   return h;
+    return h;
 }
 
-static grib_int_array* grib_fieldset_create_int_array(grib_context* c,size_t size) {
-  grib_int_array* a;
-  int i=0;
+static grib_int_array* grib_fieldset_create_int_array(grib_context* c,size_t size)
+{
+    grib_int_array* a;
+    int i=0;
 
-  if (!c) c=grib_context_get_default();
+    if (!c) c=grib_context_get_default();
 
-  a=(grib_int_array*)grib_context_malloc_clear(c,sizeof(grib_int_array));
+    a=(grib_int_array*)grib_context_malloc_clear(c,sizeof(grib_int_array));
 
-  if (!a) {
-    grib_context_log(c, GRIB_LOG_ERROR,
-        "grib_fieldset_create_int_array : Cannot malloc %d bytes",
-        sizeof(grib_int_array));
-    return NULL;
-  }
+    if (!a) {
+        grib_context_log(c, GRIB_LOG_ERROR,
+                "grib_fieldset_create_int_array : Cannot malloc %d bytes",
+                sizeof(grib_int_array));
+        return NULL;
+    }
 
-  a->el=(int*)grib_context_malloc_clear(c,sizeof(int)*size);
-  if (!a->el) {
-    grib_context_log(c, GRIB_LOG_ERROR,
-        "grib_fieldset_create_int_array : Cannot malloc %d bytes",
-        sizeof(int)*size);
-    return NULL;
-  }
+    a->el=(int*)grib_context_malloc_clear(c,sizeof(int)*size);
+    if (!a->el) {
+        grib_context_log(c, GRIB_LOG_ERROR,
+                "grib_fieldset_create_int_array : Cannot malloc %d bytes",
+                sizeof(int)*size);
+        return NULL;
+    }
 
-  a->size=size;
-  a->context=c;
-  for (i=0;i<size;i++) a->el[i]=i;
+    a->size=size;
+    a->context=c;
+    for (i=0;i<size;i++) a->el[i]=i;
 
-  return a;
+    return a;
 }
 
-static int grib_fieldset_resize_int_array(grib_int_array* a,size_t newsize) {
-  int* el;
-  int err=0;
-  if (!a) return GRIB_INVALID_ARGUMENT;
-
-  newsize=newsize*sizeof(int);
-
-  el=(int*)grib_context_realloc(a->context,a->el,newsize);
-  if (!el) {
-    grib_context_log(a->context, GRIB_LOG_ERROR,
-        "grib_fieldset_resize_int_array : Cannot malloc %d bytes",
-        newsize);
-    return GRIB_OUT_OF_MEMORY;
-  } else a->el=el;
-  a->size=newsize;
-  return err;
+static int grib_fieldset_resize_int_array(grib_int_array* a,size_t newsize)
+{
+    int* el;
+    int err=0;
+    if (!a) return GRIB_INVALID_ARGUMENT;
+
+    newsize=newsize*sizeof(int);
+
+    el=(int*)grib_context_realloc(a->context,a->el,newsize);
+    if (!el) {
+        grib_context_log(a->context, GRIB_LOG_ERROR,
+                "grib_fieldset_resize_int_array : Cannot malloc %d bytes",
+                newsize);
+        return GRIB_OUT_OF_MEMORY;
+    } else a->el=el;
+    a->size=newsize;
+    return err;
 }
 
 static void grib_fieldset_delete_int_array(grib_int_array* f)
 {
-  grib_context* c = NULL;
+    grib_context* c = NULL;
 
-  if (!f) return;
-  c = f->context;
-
-  grib_context_free(c,f->el);
-  grib_context_free(c,f);
+    if (!f) return;
+    c = f->context;
 
+    grib_context_free(c,f->el);
+    grib_context_free(c,f);
 }
 
-static grib_field** grib_fieldset_create_fields(grib_context* c,size_t size) {
-  int i;
-  grib_field** fields=(grib_field**)grib_context_malloc_clear(c,size*sizeof(grib_field*));
-  if (!fields) return NULL;
-  for (i=0;i<size;i++) fields[i]=0;
-  return fields;
+static grib_field** grib_fieldset_create_fields(grib_context* c,size_t size)
+{
+    int i;
+    grib_field** fields=(grib_field**)grib_context_malloc_clear(c,size*sizeof(grib_field*));
+    if (!fields) return NULL;
+    for (i=0;i<size;i++) fields[i]=0;
+    return fields;
 }
 
-static int grib_fieldset_resize_fields(grib_fieldset* set,size_t newsize) {
-  int err=0;
-  int i;
-  grib_field** fields;
-  if (!set) return GRIB_INVALID_ARGUMENT;
-
-  fields=(grib_field**)grib_context_realloc(set->context,set->fields,newsize*sizeof(grib_field*));
-  if (!fields) {
-    grib_context_log(set->context, GRIB_LOG_ERROR,
-        "grib_fieldset_resize_fields : Cannot malloc %d bytes",
-        newsize*sizeof(grib_field*));
-    return GRIB_OUT_OF_MEMORY;
-  } else set->fields=fields;
-
-  for (i=set->fields_array_size;i<newsize;i++)
-    set->fields[i]=0;
-
-  set->fields_array_size=newsize;
-  return err;
+static int grib_fieldset_resize_fields(grib_fieldset* set,size_t newsize)
+{
+    int err=0;
+    int i;
+    grib_field** fields;
+    if (!set) return GRIB_INVALID_ARGUMENT;
+
+    fields=(grib_field**)grib_context_realloc(set->context,set->fields,newsize*sizeof(grib_field*));
+    if (!fields) {
+        grib_context_log(set->context, GRIB_LOG_ERROR,
+                "grib_fieldset_resize_fields : Cannot malloc %d bytes",
+                newsize*sizeof(grib_field*));
+        return GRIB_OUT_OF_MEMORY;
+    } else set->fields=fields;
+
+    for (i=set->fields_array_size;i<newsize;i++)
+        set->fields[i]=0;
+
+    set->fields_array_size=newsize;
+    return err;
 }
 
-static void grib_fieldset_delete_fields(grib_fieldset* set) {
-  int i;
-  for (i=0;i<set->size;i++) {
-   if (!set->fields[i]) continue;
-   set->fields[i]->file->refcount--;
-   grib_context_free(set->context,set->fields[i]);
- }
- grib_context_free(set->context,set->fields);
+static void grib_fieldset_delete_fields(grib_fieldset* set)
+{
+    int i;
+    for (i=0;i<set->size;i++) {
+        if (!set->fields[i]) continue;
+        set->fields[i]->file->refcount--;
+        grib_context_free(set->context,set->fields[i]);
+    }
+    grib_context_free(set->context,set->fields);
 }
 
-static void grib_trim(char** x) {
-  char* p=0;
-  while (**x == ' ' && **x != '\0' ) (*x)++;
-  if (**x == '\0') return;
-  p=(*x)+strlen(*x)-1;
-  while ( *p == ' ' ) {*p='\0';p--;}
-  if ( *p == ' ' ) *p='\0';
+static void grib_trim(char** x)
+{
+    char* p=0;
+    while (**x == ' ' && **x != '\0' ) (*x)++;
+    if (**x == '\0') return;
+    p=(*x)+strlen(*x)-1;
+    while ( *p == ' ' ) {*p='\0';p--;}
+    if ( *p == ' ' ) *p='\0';
 }
 
-static int grib_fieldset_set_order_by(grib_fieldset* set,grib_order_by* ob) {
-  grib_order_by* next=ob;
-  char* p=NULL;
-  int i=0;
-
-  while(next) {
-    next->idkey=-1;
-    p=next->key;
-    while (*p!= 0 && *p != ':') p++;
-    if (*p ==':') *p=0;
-    for (i=0;i<set->columns_size; i++) {
-      if (!grib_inline_strcmp(next->key,set->columns[i].name)) {
-        next->idkey=i;
-        break;
-      }
-    }
-    if (next->idkey == -1) {
-      grib_context_log(set->context,GRIB_LOG_ERROR,
-        "Unable to apply the order by. Key missing from the fieldset.\n");
-      return GRIB_MISSING_KEY;
+static int grib_fieldset_set_order_by(grib_fieldset* set,grib_order_by* ob)
+{
+    grib_order_by* next=ob;
+    char* p=NULL;
+    int i=0;
+
+    while(next) {
+        next->idkey=-1;
+        p=next->key;
+        while (*p!= 0 && *p != ':') p++;
+        if (*p ==':') *p=0;
+        for (i=0;i<set->columns_size; i++) {
+            if (!grib_inline_strcmp(next->key,set->columns[i].name)) {
+                next->idkey=i;
+                break;
+            }
+        }
+        if (next->idkey == -1) {
+            grib_context_log(set->context,GRIB_LOG_ERROR,
+                    "Unable to apply the order by. Key missing from the fieldset.\n");
+            return GRIB_MISSING_KEY;
+        }
+        next=next->next;
     }
-    next=next->next;
-  }
-
-  set->order_by=ob;
 
-  return GRIB_SUCCESS;
+    set->order_by=ob;
 
+    return GRIB_SUCCESS;
 }
-
diff --git a/src/grib_filepool.c b/src/grib_filepool.c
index a444494..7c5af31 100644
--- a/src/grib_filepool.c
+++ b/src/grib_filepool.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -29,393 +29,417 @@ static void init() {
     pthread_mutexattr_destroy(&attr);
 
 }
+#elif GRIB_OMP_THREADS
+static int once = 0;
+static omp_nest_lock_t mutex1;
+
+static void init()
+{
+    GRIB_OMP_CRITICAL(lock_grib_filepool_c)
+    {
+        if (once == 0)
+        {
+            omp_init_nest_lock(&mutex1);
+            once = 1;
+        }
+    }
+}
 #endif
 
 static short next_id=0;
 
 GRIB_INLINE static int grib_inline_strcmp(const char* a,const char* b)
 {
-	if (*a != *b) return 1;
-	while((*a!=0 && *b!=0) &&  *(a) == *(b) ) {a++;b++;}
-	return (*a==0 && *b==0) ? 0 : 1;
+    if (*a != *b) return 1;
+    while((*a!=0 && *b!=0) &&  *(a) == *(b) ) {a++;b++;}
+    return (*a==0 && *b==0) ? 0 : 1;
 }
 
 static grib_file_pool file_pool= {
-             0,                    /* grib_context* context;*/
-             0,                    /* grib_file* first;*/
-             0,                    /* grib_file* current; */
-             0,                    /* size_t size;*/
-             0,                    /* int number_of_opened_files;*/
-  GRIB_MAX_OPENED_FILES            /* int max_opened_files; */
+        0,                    /* grib_context* context;*/
+        0,                    /* grib_file* first;*/
+        0,                    /* grib_file* current; */
+        0,                    /* size_t size;*/
+        0,                    /* int number_of_opened_files;*/
+        GRIB_MAX_OPENED_FILES            /* int max_opened_files; */
 };
 
 void grib_file_pool_clean()
 {
-	grib_file *file,*next;
+    grib_file *file,*next;
 
-	if (!file_pool.first) return;
+    if (!file_pool.first) return;
 
-	file=file_pool.first;
-	while(file) {
-		next=file->next;
-		grib_file_delete(file);
-		file=next;
-	}
+    file=file_pool.first;
+    while(file) {
+        next=file->next;
+        grib_file_delete(file);
+        file=next;
+    }
 }
 
 static void grib_file_pool_change_id()
 {
-	grib_file *file;
+    grib_file *file;
 
-	if (!file_pool.first) return;
+    if (!file_pool.first) return;
 
-	file=file_pool.first;
-	while(file) {
-		file->id+=1000;
-		file=file->next;
-	}
+    file=file_pool.first;
+    while(file) {
+        file->id+=1000;
+        file=file->next;
+    }
 }
 
 static grib_file* grib_read_file(grib_context *c,FILE* fh,int *err)
 {
-	short marker=0;
-	short id=0;
-	grib_file* file;
-	*err = grib_read_short(fh,&marker);
-	if(!marker) return NULL;
+    short marker=0;
+    short id=0;
+    grib_file* file;
+    *err = grib_read_short(fh,&marker);
+    if(!marker) return NULL;
 
-	file=(grib_file*)grib_context_malloc_clear(c,sizeof(grib_file));
-	file->buffer=0;
-	file->name=grib_read_string(c,fh,err);
-	if (*err) return NULL;
+    file=(grib_file*)grib_context_malloc_clear(c,sizeof(grib_file));
+    file->buffer=0;
+    file->name=grib_read_string(c,fh,err);
+    if (*err) return NULL;
 
-	*err=grib_read_short(fh,&id);
-	file->id=id;
-	if (*err) return NULL;
+    *err=grib_read_short(fh,&id);
+    file->id=id;
+    if (*err) return NULL;
 
-	file->next=grib_read_file(c,fh,err);
-	if (*err) return NULL;
+    file->next=grib_read_file(c,fh,err);
+    if (*err) return NULL;
 
-	return file;
+    return file;
 }
 
 static int grib_write_file(FILE *fh,grib_file* file)
 {
-	int err=0;
+    int err=0;
 
-	if (!file)
-		return grib_write_null_marker(fh);
+    if (!file)
+        return grib_write_null_marker(fh);
 
-	err=grib_write_not_null_marker(fh);
-	if (err) return err;
+    err=grib_write_not_null_marker(fh);
+    if (err) return err;
 
-	err=grib_write_string(fh,file->name);
-	if (err) return err;
+    err=grib_write_string(fh,file->name);
+    if (err) return err;
 
-	err=grib_write_short(fh,(short)file->id);
-	if (err) return err;
+    err=grib_write_short(fh,(short)file->id);
+    if (err) return err;
 
-	return grib_write_file(fh,file->next);
+    return grib_write_file(fh,file->next);
 }
 
 grib_file* grib_file_pool_get_files()
 {
-	return file_pool.first;
+    return file_pool.first;
 }
 
 int grib_file_pool_read(grib_context* c,FILE* fh)
 {
-	int err=0;
-	short marker=0;
-	grib_file* file;
+    int err=0;
+    short marker=0;
+    grib_file* file;
 
-	if (!c) c=grib_context_get_default();
+    if (!c) c=grib_context_get_default();
 
-	err = grib_read_short(fh,&marker);
-	if(!marker) {
-		grib_context_log(c,GRIB_LOG_ERROR,
-				"Unable to find file information in index file\n");
-		return GRIB_INVALID_FILE;
-	}
+    err = grib_read_short(fh,&marker);
+    if(!marker) {
+        grib_context_log(c,GRIB_LOG_ERROR,
+                "Unable to find file information in index file\n");
+        return GRIB_INVALID_FILE;
+    }
 
-	grib_file_pool_change_id();
-	file=file_pool.first;
+    grib_file_pool_change_id();
+    file=file_pool.first;
 
-	while (file->next) 
-		file=file->next;
+    while (file->next)
+        file=file->next;
 
-	file->next=grib_read_file(c,fh,&err);
-	if (err) return err;
+    file->next=grib_read_file(c,fh,&err);
+    if (err) return err;
 
-	return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
 
 int grib_file_pool_write(FILE* fh)
 {
-	int err=0;
-	if (!file_pool.first)
-		return grib_write_null_marker(fh);
+    int err=0;
+    if (!file_pool.first)
+        return grib_write_null_marker(fh);
 
-	err=grib_write_not_null_marker(fh);
-	if (err) return err;
+    err=grib_write_not_null_marker(fh);
+    if (err) return err;
 
-	return grib_write_file(fh,file_pool.first);
+    return grib_write_file(fh,file_pool.first);
 }
 
 grib_file* grib_file_open(const char* filename, const char* mode,int* err)
 {
-	grib_file *file=0,*prev=0;
-	int same_mode=0;
-	int is_new=0;
-	GRIB_PTHREAD_ONCE(&once,&init);
-
-	if (!file_pool.context) file_pool.context=grib_context_get_default();
-
-	if (file_pool.current && !grib_inline_strcmp(filename,file_pool.current->name)) {
-		file=file_pool.current;
-	} else {
-		GRIB_MUTEX_LOCK(&mutex1);
-		file=file_pool.first;
-		while (file) {
-			if (!grib_inline_strcmp(filename,file->name)) break;
-			prev=file;
-			file=file->next;
-		}
-		if (!file) {
-			is_new=1;
-			file=grib_file_new(file_pool.context,filename,err);
-			if (prev) prev->next=file;
-			file_pool.current=file;
-			if (!prev) file_pool.first=file;
-			file_pool.size++;
-		}
-		GRIB_MUTEX_UNLOCK(&mutex1);
-	}
-
-	if (file->mode) same_mode=grib_inline_strcmp(mode,file->mode) ? 0 : 1;
-	if (file->handle && same_mode) {
-		*err=0;
-		return file;
-	}
-
-	GRIB_MUTEX_LOCK(&mutex1);
-	if (!same_mode && file->handle) {
-		/*printf("========== mode=%s file->mode=%s\n",mode,file->mode);*/
-		fclose(file->handle);
-	}
-
-	if (!file->handle) {
-       /*printf("-- opening file %s %s\n",file->name,mode);*/
-       if (!is_new && *mode == 'w') {
-          /* fprintf(stderr,"++++ opening %s as append\n",file->name); */
-          file->handle = fopen(file->name,"a");
-       } else {
-          file->handle = fopen(file->name,mode);
-          /* fprintf(stderr,"++++ opening %s as mode\n",file->name); */
-       }
-
-		file->mode=strdup(mode);
-		if (!file->handle) {
-			grib_context_log(file->context,GRIB_LOG_PERROR,"grib_file_open: cannot open file %s",file->name);
-			*err=GRIB_IO_PROBLEM;
-			return NULL;
-		}
-		if (file_pool.context->io_buffer_size) {
+    grib_file *file=0,*prev=0;
+    int same_mode=0;
+    int is_new=0;
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
+
+    if (!file_pool.context) file_pool.context=grib_context_get_default();
+
+    if (file_pool.current && !grib_inline_strcmp(filename,file_pool.current->name)) {
+        file=file_pool.current;
+    } else {
+        GRIB_MUTEX_LOCK(&mutex1);
+        file=file_pool.first;
+        while (file) {
+            if (!grib_inline_strcmp(filename,file->name)) break;
+            prev=file;
+            file=file->next;
+        }
+        if (!file) {
+            is_new=1;
+            file=grib_file_new(file_pool.context,filename,err);
+            if (prev) prev->next=file;
+            file_pool.current=file;
+            if (!prev) file_pool.first=file;
+            file_pool.size++;
+        }
+        GRIB_MUTEX_UNLOCK(&mutex1);
+    }
+
+    if (file->mode) same_mode=grib_inline_strcmp(mode,file->mode) ? 0 : 1;
+    if (file->handle && same_mode) {
+        *err=0;
+        return file;
+    }
+
+    GRIB_MUTEX_LOCK(&mutex1);
+    if (!same_mode && file->handle) {
+        /*printf("========== mode=%s file->mode=%s\n",mode,file->mode);*/
+        fclose(file->handle);
+    }
+
+    if (!file->handle) {
+        /*printf("-- opening file %s %s\n",file->name,mode);*/
+        if (!is_new && *mode == 'w') {
+            /* fprintf(stderr,"++++ opening %s as append\n",file->name); */
+            file->handle = fopen(file->name,"a");
+        } else {
+            file->handle = fopen(file->name,mode);
+            /* fprintf(stderr,"++++ opening %s as mode\n",file->name); */
+        }
+
+        file->mode=strdup(mode);
+        if (!file->handle) {
+            grib_context_log(file->context,GRIB_LOG_PERROR,"grib_file_open: cannot open file %s",file->name);
+            *err=GRIB_IO_PROBLEM;
+            GRIB_MUTEX_UNLOCK(&mutex1);
+            return NULL;
+        }
+        if (file_pool.context->io_buffer_size) {
 #ifdef POSIX_MEMALIGN
-			if (posix_memalign((void**)&(file->buffer),sysconf(_SC_PAGESIZE),file_pool.context->io_buffer_size) ) {
-				grib_context_log(file->context,GRIB_LOG_FATAL,"posix_memalign unable to allocate io_buffer\n");
-			}
+            if (posix_memalign((void**)&(file->buffer),sysconf(_SC_PAGESIZE),file_pool.context->io_buffer_size) ) {
+                grib_context_log(file->context,GRIB_LOG_FATAL,"posix_memalign unable to allocate io_buffer\n");
+            }
 #else
-			file->buffer = (void*)malloc(file_pool.context->io_buffer_size);
-			if (!file->buffer) {
-				grib_context_log(file->context,GRIB_LOG_FATAL,"Unable to allocate io_buffer\n");
-			}
+            file->buffer = (void*)malloc(file_pool.context->io_buffer_size);
+            if (!file->buffer) {
+                grib_context_log(file->context,GRIB_LOG_FATAL,"Unable to allocate io_buffer\n");
+            }
 #endif
-			setvbuf(file->handle,file->buffer,_IOFBF,file_pool.context->io_buffer_size);
-		}
+            setvbuf(file->handle,file->buffer,_IOFBF,file_pool.context->io_buffer_size);
+        }
 
-		file_pool.number_of_opened_files++;
+        file_pool.number_of_opened_files++;
+    }
 
-		GRIB_MUTEX_UNLOCK(&mutex1);
-
-	}
-	return file;
+    GRIB_MUTEX_UNLOCK(&mutex1);
+    return file;
 }
 
 void grib_file_pool_delete_file(grib_file* file) {
     grib_file* prev=NULL;
-	GRIB_PTHREAD_ONCE(&once,&init);
-	GRIB_MUTEX_LOCK(&mutex1);
-
-   if (file==file_pool.first) {
-      file_pool.first=file->next;
-      file_pool.current=file->next;
-   } else {
-
-     prev=file_pool.first;
-     file_pool.current=file_pool.first;
-     while (prev) {
-       if (prev->next==file) break;
-       prev=prev->next;
-     }
-     Assert(prev);
-     prev->next=file->next;
-   }
-
-   if (file->handle) {
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
+    GRIB_MUTEX_LOCK(&mutex1);
+
+    if (file==file_pool.first) {
+        file_pool.first=file->next;
+        file_pool.current=file->next;
+    } else {
+
+        prev=file_pool.first;
+        file_pool.current=file_pool.first;
+        while (prev) {
+            if (prev->next==file) break;
+            prev=prev->next;
+        }
+        Assert(prev);
+        prev->next=file->next;
+    }
+
+    if (file->handle) {
         file_pool.number_of_opened_files--;
-   }
-   grib_file_delete(file);
-	GRIB_MUTEX_UNLOCK(&mutex1);
+    }
+    grib_file_delete(file);
+    GRIB_MUTEX_UNLOCK(&mutex1);
 
 }
 
 void grib_file_close_force(const char* filename,int* err)
 {
-  grib_file* file=NULL;
+    grib_file* file=NULL;
 
     /* fprintf(stderr,"++++ closing file %s\n",filename); */
-	GRIB_PTHREAD_ONCE(&once,&init);
-	GRIB_MUTEX_LOCK(&mutex1);
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
+    GRIB_MUTEX_LOCK(&mutex1);
     file=grib_get_file(filename,err);
     fclose(file->handle);
-	if (file->buffer) {
-		free(file->buffer);
-		file->buffer=0;
-	}
+    if (file->buffer) {
+        free(file->buffer);
+        file->buffer=0;
+    }
     file->handle=NULL;
     file_pool.number_of_opened_files--;
-	GRIB_MUTEX_UNLOCK(&mutex1);
+    GRIB_MUTEX_UNLOCK(&mutex1);
 }
 
 void grib_file_close(const char* filename,int* err)
 {
-	grib_file* file=NULL;
-
-	/* Performance: keep the files open to avoid opening and closing files when writing the output. */
-	/* So only call fclose() when too many files are open */
-	if ( file_pool.number_of_opened_files > GRIB_MAX_OPENED_FILES ) {
-		/*printf("++ closing file %s\n",filename);*/
-		GRIB_PTHREAD_ONCE(&once,&init);
-		GRIB_MUTEX_LOCK(&mutex1);
-		file=grib_get_file(filename,err);
-		if (file->handle) {
-			if (fclose(file->handle) != 0) {
-				*err=GRIB_IO_PROBLEM;
-			}
-			if (file->buffer) {
-				free(file->buffer);
-				file->buffer=0;
-			}
-			file->handle=NULL;
-			file_pool.number_of_opened_files--;
-		}
-		GRIB_MUTEX_UNLOCK(&mutex1);
-	}
+    grib_file* file=NULL;
+
+    /* Performance: keep the files open to avoid opening and closing files when writing the output. */
+    /* So only call fclose() when too many files are open */
+    if ( file_pool.number_of_opened_files > GRIB_MAX_OPENED_FILES ) {
+        /*printf("++ closing file %s\n",filename);*/
+        GRIB_MUTEX_INIT_ONCE(&once,&init);
+        GRIB_MUTEX_LOCK(&mutex1);
+        file=grib_get_file(filename,err);
+        if (file->handle) {
+            if (fclose(file->handle) != 0) {
+                *err=GRIB_IO_PROBLEM;
+            }
+            if (file->buffer) {
+                free(file->buffer);
+                file->buffer=0;
+            }
+            file->handle=NULL;
+            file_pool.number_of_opened_files--;
+        }
+        GRIB_MUTEX_UNLOCK(&mutex1);
+    }
 }
 
 void grib_file_close_all(int *err)
 {
-	grib_file* file = NULL;
-	if (!file_pool.first) return;
-
-	GRIB_PTHREAD_ONCE(&once,&init);
-	GRIB_MUTEX_LOCK(&mutex1);
-
-	file = file_pool.first;
-	while (file) {
-		if (file->handle) {
-			if (fclose(file->handle) != 0) {
-				*err=GRIB_IO_PROBLEM;
-			}
-			file->handle=NULL;
-		}
-		file = file->next;
-	}
-
-	GRIB_MUTEX_UNLOCK(&mutex1);
+    grib_file* file = NULL;
+    if (!file_pool.first) return;
+
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
+    GRIB_MUTEX_LOCK(&mutex1);
+
+    file = file_pool.first;
+    while (file) {
+        if (file->handle) {
+            if (fclose(file->handle) != 0) {
+                *err=GRIB_IO_PROBLEM;
+            }
+            file->handle=NULL;
+        }
+        file = file->next;
+    }
+
+    GRIB_MUTEX_UNLOCK(&mutex1);
 }
 
 grib_file* grib_get_file(const char* filename,int* err)
 {
-	grib_file* file=NULL;
+    grib_file* file=NULL;
 
-	if (file_pool.current->name && !grib_inline_strcmp(filename,file_pool.current->name)) {
-		return file_pool.current;
-	}
+    if (file_pool.current->name && !grib_inline_strcmp(filename,file_pool.current->name)) {
+        return file_pool.current;
+    }
 
-	file=file_pool.first;
-	while (file) {
-		if (!grib_inline_strcmp(filename,file->name)) break;
-		file=file->next;
-	}
-	if (!file) file=grib_file_new(0,filename,err);
+    file=file_pool.first;
+    while (file) {
+        if (!grib_inline_strcmp(filename,file->name)) break;
+        file=file->next;
+    }
+    if (!file) file=grib_file_new(0,filename,err);
 
-	return file;
+    return file;
 }
 
 grib_file* grib_find_file(short id)
 {
-	grib_file* file=NULL;
+    grib_file* file=NULL;
 
-	if (file_pool.current->name && id==file_pool.current->id) {
-		return file_pool.current;
-	}
+    if (file_pool.current->name && id==file_pool.current->id) {
+        return file_pool.current;
+    }
 
-	file=file_pool.first;
-	while (file) {
-		if (id==file->id) break;
-		file=file->next;
-	}
+    file=file_pool.first;
+    while (file) {
+        if (id==file->id) break;
+        file=file->next;
+    }
 
-	return file;
+    return file;
 }
 
 grib_file* grib_file_new(grib_context* c, const char* name, int* err)
 {
-	grib_file* file;
+    grib_file* file;
 
-	if (!c) c=grib_context_get_default( );
+    if (!c) c=grib_context_get_default( );
 
-	file=(grib_file*)grib_context_malloc_clear( c,sizeof(grib_file));
+    file=(grib_file*)grib_context_malloc_clear( c,sizeof(grib_file));
 
-	if (!file) {
-		grib_context_log(c,GRIB_LOG_ERROR,"grib_file_new: unable to allocate memory");
-		*err=GRIB_OUT_OF_MEMORY;
-		return NULL;
-	}
-	GRIB_PTHREAD_ONCE(&once,&init);
+    if (!file) {
+        grib_context_log(c,GRIB_LOG_ERROR,"grib_file_new: unable to allocate memory");
+        *err=GRIB_OUT_OF_MEMORY;
+        return NULL;
+    }
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
 
-	file->name=strdup(name);
-	file->id=next_id;
+    file->name=strdup(name);
+    file->id=next_id;
 
-	GRIB_MUTEX_LOCK(&mutex1);
-	next_id++;
-	GRIB_MUTEX_UNLOCK(&mutex1);
+    GRIB_MUTEX_LOCK(&mutex1);
+    next_id++;
+    GRIB_MUTEX_UNLOCK(&mutex1);
 
-	file->mode=0;
-	file->handle=0;
-	file->refcount=0;
-	file->context=c;
-	file->next=0;
-	file->buffer=0;
-	return file;
+    file->mode=0;
+    file->handle=0;
+    file->refcount=0;
+    file->context=c;
+    file->next=0;
+    file->buffer=0;
+    return file;
 }
 
 void grib_file_delete(grib_file* file)
 {
-	GRIB_PTHREAD_ONCE(&once,&init);
-	GRIB_MUTEX_LOCK(&mutex1);
-	if (!file) return;
-	if(file->name) free(file->name);
-	if (file->mode) free(file->mode);
-	if (file->handle) {
-		fclose(file->handle);
-	}
-	if (file->buffer) {
-		free(file->buffer);
-	}
-	grib_context_free(file->context,file);
-	file=NULL;
-	GRIB_MUTEX_UNLOCK(&mutex1);
+    {
+        if (!file) return;
+    }
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
+    GRIB_MUTEX_LOCK(&mutex1);
+    /* GRIB-803: cannot call fclose yet! Causes crash */
+    /* TODO: Set handle to NULL in filepool too */
+#if 0
+    if (file->handle) {
+        if (fclose(file->handle) != 0) {
+            perror(file->name);
+        }
+    }
+#endif
+    if (file->name) free(file->name);
+    if (file->mode) free(file->mode);
+
+    if (file->buffer) {
+        free(file->buffer);
+    }
+    grib_context_free(file->context,file);
+    file=NULL;
+    GRIB_MUTEX_UNLOCK(&mutex1);
 }
diff --git a/src/grib_gaussian_reduced.c b/src/grib_gaussian_reduced.c
index 74f35e1..77bec34 100644
--- a/src/grib_gaussian_reduced.c
+++ b/src/grib_gaussian_reduced.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_geography.c b/src/grib_geography.c
index 09a89a4..6685c58 100644
--- a/src/grib_geography.c
+++ b/src/grib_geography.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_handle.c b/src/grib_handle.c
index 4d4eb7a..d3b8b53 100644
--- a/src/grib_handle.c
+++ b/src/grib_handle.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -15,28 +15,37 @@
  ***************************************************************************/
 #include "grib_api_internal.h"
 
-/* This is the internal version number of our definition files. We need to change it whenever an older engine */
-/* will not be able to work with the current definitions. See the key "internalVersion" in boot,def  */
-#define LATEST_VERSION  22
-
-/* #if GRIB_PTHREADS */
 #if 0
-static pthread_once_t once  = PTHREAD_ONCE_INIT;
-static pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
-static pthread_mutex_t mutex2 = PTHREAD_MUTEX_INITIALIZER;
-
-static void init() {
+ /* #if GRIB_PTHREADS */
+ static pthread_once_t once  = PTHREAD_ONCE_INIT;
+ static pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
+ static pthread_mutex_t mutex2 = PTHREAD_MUTEX_INITIALIZER;
+ static void init() {
 	pthread_mutexattr_t attr;
 	pthread_mutexattr_init(&attr);
 	pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
 	pthread_mutex_init(&mutex1,&attr);
 	pthread_mutex_init(&mutex2,&attr);
 	pthread_mutexattr_destroy(&attr);
-
-}
+ }
+ /* #elif GRIB_OMP_THREADS */
+ static int once = 0;
+ static omp_nest_lock_t mutex1;
+ static omp_nest_lock_t mutex2;
+ static void init()
+ {
+    GRIB_OMP_CRITICAL(lock_grib_handle_c)
+    {
+        if (once == 0)
+        {
+            omp_init_nest_lock(&mutex1);
+            omp_init_nest_lock(&mutex2);
+            once = 1;
+        }
+    }
+ }
 #endif
 
-
 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 );
@@ -44,234 +53,213 @@ static int grib2_has_next_section ( unsigned char* msgbegin,size_t msglen,unsign
 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 );
-static grib_handle* grib_handle_new_multi ( grib_context* c,unsigned char** idata,
-		size_t *buflen,int* error );
+static grib_handle* grib_handle_new_multi ( grib_context* c,unsigned char** idata, size_t *buflen,int* error );
 
 grib_section* grib_section_create ( grib_handle* h,grib_accessor* owner )
 {
-	grib_section* s = ( grib_section* ) grib_context_malloc_clear ( h->context,sizeof ( grib_section ) );
-	s->owner       = owner;
-	s->aclength   = NULL;
-	s->h          = h;
-	s->block      = ( grib_block_of_accessors* ) grib_context_malloc_clear ( h->context, sizeof ( grib_block_of_accessors ) );
-	return s;
+    grib_section* s = ( grib_section* ) grib_context_malloc_clear ( h->context,sizeof ( grib_section ) );
+    s->owner       = owner;
+    s->aclength   = NULL;
+    s->h          = h;
+    s->block      = ( grib_block_of_accessors* ) grib_context_malloc_clear ( h->context, sizeof ( grib_block_of_accessors ) );
+    return s;
 }
 
 static void update_sections ( grib_section *s,grib_handle* h,long offset )
 {
-	grib_accessor *a = s?s->block->first:NULL;
-	if ( s ) s->h = h;
-	while ( a )
-	{
-		a->offset += offset;
-		/* update_sections ( grib_get_sub_section ( a ),h,offset ); */
-		update_sections ( a->sub_section,h,offset );
-		a = a->next;
-	}
+    grib_accessor *a = s?s->block->first:NULL;
+    if ( s ) s->h = h;
+    while ( a )
+    {
+        a->offset += offset;
+        /* update_sections ( grib_get_sub_section ( a ),h,offset ); */
+        update_sections ( a->sub_section,h,offset );
+        a = a->next;
+    }
 }
 
 void grib_swap_sections ( grib_section* the_old, grib_section *the_new )
 {
-	grib_accessor* a;
-	grib_block_of_accessors* b = the_old->block;
+    grib_accessor* a;
+    grib_block_of_accessors* b = the_old->block;
 
-	/* printf("SWAPPING -----\n"); grib_dump_section_content(new,stdout); */
-	the_old->block = the_new->block;
-	the_new->block = b;
+    /* printf("SWAPPING -----\n"); grib_dump_section_content(new,stdout); */
+    the_old->block = the_new->block;
+    the_new->block = b;
 
-	a = the_old->aclength;
-	the_old->aclength = the_new->aclength;
-	the_new->aclength = a;
+    a = the_old->aclength;
+    the_old->aclength = the_new->aclength;
+    the_new->aclength = a;
 
-	a = the_old->block->first;
-	while ( a )
-	{
-		a->parent = the_old;
-		a = a->next;
-	}
+    a = the_old->block->first;
+    while ( a )
+    {
+        a->parent = the_old;
+        a = a->next;
+    }
 
-	update_sections ( the_old, the_old->h, the_old->owner->offset );
-	/* update_sections(new,new->h,new->owner->offset); */
+    update_sections ( the_old, the_old->h, the_old->owner->offset );
+    /* update_sections(new,new->h,new->owner->offset); */
 
-	/* printf("SWAPPING -----\n"); grib_dump_section_content(old,stdout); */
+    /* printf("SWAPPING -----\n"); grib_dump_section_content(old,stdout); */
 
 }
 
 void grib_empty_section ( grib_context   *c,grib_section* b )
 {
-	grib_accessor* current = NULL;
-	if ( !b ) return;
+    grib_accessor* current = NULL;
+    if ( !b ) return;
 
-	b->aclength = NULL;
+    b->aclength = NULL;
 
-	current = b->block->first;
-
-	while ( current )
-	{
-		grib_accessor* next = current->next;
-		if (current->sub_section) {
-			grib_section_delete(c,current->sub_section);
-			current->sub_section=0;
-		}
-		grib_accessor_delete ( c,current );
-		current = next;
-	}
-	b->block->first = b->block->last = 0;
+    current = b->block->first;
 
+    while ( current )
+    {
+        grib_accessor* next = current->next;
+        if (current->sub_section) {
+            grib_section_delete(c,current->sub_section);
+            current->sub_section=0;
+        }
+        grib_accessor_delete ( c,current );
+        current = next;
+    }
+    b->block->first = b->block->last = 0;
 }
 
 void grib_section_delete ( grib_context   *c, grib_section* b )
 {
-	if ( !b ) return;
+    if ( !b ) return;
 
-	grib_empty_section ( c,b );
-	grib_context_free ( c,b->block );
-	grib_context_free ( c,b );
+    grib_empty_section ( c,b );
+    grib_context_free ( c,b->block );
+    /* printf("++++ deleted %p\n",b); */
+    grib_context_free ( c,b );
 }
 
 int grib_handle_delete ( grib_handle* h )
 {
-	if ( h != NULL )
-	{
-		grib_context   *ct =h->context;
-		grib_dependency *d = h->dependencies;
-		grib_dependency *n;
-
-		Assert ( h->kid == NULL );
-
-		while ( d )
-		{
-			n = d->next;
-			grib_context_free ( ct,d );
-			d = n;
-		}
-		h->dependencies=0;
-
-		grib_buffer_delete ( ct,h->buffer );
-		grib_section_delete ( ct,h->root );
-
-		grib_context_log ( ct,GRIB_LOG_DEBUG,"grib_handle_delete: deleting handle %p",h );
-		grib_context_free ( ct,h );
-		h=NULL;
-	}
-	return GRIB_SUCCESS;
+    if ( h != NULL )
+    {
+        grib_context   *ct =h->context;
+        grib_dependency *d = h->dependencies;
+        grib_dependency *n;
+
+        Assert ( h->kid == NULL );
+
+        while ( d )
+        {
+            n = d->next;
+            grib_context_free ( ct,d );
+            d = n;
+        }
+        h->dependencies=0;
+
+        grib_buffer_delete ( ct,h->buffer );
+        grib_section_delete ( ct,h->root );
+
+        grib_context_log ( ct,GRIB_LOG_DEBUG,"grib_handle_delete: deleting handle %p",h );
+        grib_context_free ( ct,h );
+        h=NULL;
+    }
+    return GRIB_SUCCESS;
 }
 
 grib_handle* grib_new_handle ( grib_context* c )
 {
-	grib_handle    *g = NULL;
-	if ( c == NULL ) c = grib_context_get_default();
-	g = ( grib_handle* ) grib_context_malloc_clear ( c,sizeof ( grib_handle ) );
-
+    grib_handle    *g = NULL;
+    if ( c == NULL ) c = grib_context_get_default();
+    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" );
-	} else {
-		g->context = c;
-	}
+    if ( g == NULL ) {
+        grib_context_log ( c,GRIB_LOG_ERROR,"grib_new_handle: cannot allocate handle" );
+    } 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",g );
+    grib_context_log ( c,GRIB_LOG_DEBUG,"grib_new_handle: allocated handle %p",g );
 
-	return g;
-}
-
-static void check_definitions_version(grib_handle* h)
-{
-	/* Check version of definition files is compatible with the engine */
-	int ret = 0;
-	long defs_file_version = 0;
-	if (grib_is_defined(h, "internalVersion")) {
-		ret = grib_get_long_internal(h, "internalVersion", &defs_file_version);
-		if (ret == GRIB_SUCCESS && (defs_file_version > LATEST_VERSION)) {
-			grib_context_log(h->context, GRIB_LOG_FATAL,
-					"Definition files version (%d) is greater than engine version (%d)!\n"
-					"These definition files are for a later version of the grib api engine.\n",
-					defs_file_version, LATEST_VERSION);
-
-		}
-	}
+    return g;
 }
 
 static grib_handle* grib_handle_create ( grib_handle  *gl, grib_context* c,void* data, size_t buflen )
 {
-	grib_action* next = NULL;
-	int err = 0;
+    grib_action* next = NULL;
+    int err = 0;
 
-	if ( gl == NULL )
-		return NULL;
-
-	gl->use_trie = 1;
-	gl->trie_invalid=0;
-	gl->buffer = grib_new_buffer ( gl->context,(unsigned char*)data,buflen );
-
-	if ( gl->buffer == NULL )
-	{
-		grib_handle_delete ( gl );
-		return NULL;
-	}
+    if ( gl == NULL )
+        return NULL;
 
-	gl->root     = grib_create_root_section ( gl->context,gl );
+    gl->use_trie = 1;
+    gl->trie_invalid=0;
+    gl->buffer = grib_new_buffer ( gl->context,(unsigned char*)data,buflen );
 
-	if ( !gl->root )
-	{
-		grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_message: cannot create root section" );
-		grib_handle_delete ( gl );
-		return NULL;
-	}
+    if ( gl->buffer == NULL )
+    {
+        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_new_from_message: cannot create handle, no definitions found" );
-		grib_handle_delete ( gl );
-		return NULL;
-	}
+    gl->root     = grib_create_root_section ( gl->context,gl );
 
-	gl->buffer->property = GRIB_USER_BUFFER;
+    if ( !gl->root )
+    {
+        grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_message: cannot create root section" );
+        grib_handle_delete ( gl );
+        return NULL;
+    }
 
-	next = gl->context->grib_reader->first->root;
-	while ( next )
-	{
-		if ( grib_create_accessor ( gl->root, next, NULL ) != GRIB_SUCCESS )
-			break;
-		next = next->next;
-	}
+    if ( !gl->context->grib_reader || !gl->context->grib_reader->first )
+    {
+        grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_message: cannot create handle, no definitions found" );
+        grib_handle_delete ( gl );
+        return NULL;
+    }
 
-	err = grib_section_adjust_sizes ( gl->root,0,0 );
-	if (err)
-	{
-		grib_handle_delete ( gl );
-		return NULL;
-	}
+    gl->buffer->property = GRIB_USER_BUFFER;
 
-	grib_section_post_init ( gl->root );
+    next = gl->context->grib_reader->first->root;
+    while ( next )
+    {
+        if ( grib_create_accessor ( gl->root, next, NULL ) != GRIB_SUCCESS )
+            break;
+        next = next->next;
+    }
 
-	check_definitions_version(gl);
+    err = grib_section_adjust_sizes ( gl->root,0,0 );
+    if (err)
+    {
+        grib_handle_delete ( gl );
+        return NULL;
+    }
 
-	return gl;
+    grib_section_post_init ( gl->root );
 
+    return gl;
 }
 
 grib_handle* grib_handle_new_from_samples ( grib_context* c, const char* name )
 {
-	grib_handle* g = 0;
-	if ( c == NULL ) c = grib_context_get_default();
-	c->handle_file_count=0;
-	c->handle_total_count=0;
-
-	/*
-	   g = grib_internal_template(c,name);
-	   if(g) return g;
-	 */
-	if (c->debug==-1) {
-		printf("GRIB_API DEBUG: grib_handle_new_from_samples '%s'\n", name);
-	}
-
-	g=grib_external_template ( c,name );
-	if ( !g )
-		grib_context_log ( c,GRIB_LOG_ERROR,"Unable to load sample file %s.tmpl\n                    in %s",
-				name, c->grib_samples_path );
-
-	return g;
+    grib_handle* g = 0;
+    if ( c == NULL ) c = grib_context_get_default();
+    c->handle_file_count=0;
+    c->handle_total_count=0;
+
+    /*
+       g = grib_internal_template(c,name);
+       if(g) return g;
+     */
+    if (c->debug) {
+        printf("ECCODES DEBUG: grib_handle_new_from_samples '%s'\n", name);
+    }
+
+    g=grib_external_template ( c,name );
+    if ( !g )
+        grib_context_log ( c,GRIB_LOG_ERROR,"Unable to load sample file %s.tmpl\n                    in %s",
+                name, c->grib_samples_path );
+
+    return g;
 }
 
 int grib_write_message(grib_handle* h,const char* file,const char* mode)
@@ -305,7 +293,7 @@ int grib_write_message(grib_handle* h,const char* file,const char* mode)
 
 grib_handle* grib_handle_clone ( grib_handle* h )
 {
-	return grib_handle_new_from_message_copy ( h->context, h->buffer->data, h->buffer->ulength );
+    return grib_handle_new_from_message_copy ( h->context, h->buffer->data, h->buffer->ulength );
 }
 
 grib_handle* codes_handle_new_from_file(grib_context* c, FILE* f, ProductKind product, int* error)
@@ -314,6 +302,10 @@ grib_handle* codes_handle_new_from_file(grib_context* c, FILE* f, ProductKind pr
         return grib_handle_new_from_file(c, f, error);
     if (product == PRODUCT_BUFR)
         return bufr_new_from_file(c, f, error);
+    if (product == PRODUCT_METAR)
+        return metar_new_from_file(c, f, error);
+    if (product == PRODUCT_GTS)
+        return gts_new_from_file(c, f, error);
     if (product == PRODUCT_ANY)
         return any_new_from_file(c, f, error);
 
@@ -329,561 +321,575 @@ grib_handle* codes_bufr_handle_new_from_file(grib_context* c, FILE* f, int* erro
 {
     return bufr_new_from_file(c, f, error);
 }
+grib_handle* codes_metar_handle_new_from_file(grib_context* c, FILE* f, int* error)
+{
+    return metar_new_from_file(c, f, error);
+}
+grib_handle* codes_gts_handle_new_from_file(grib_context* c, FILE* f, int* error)
+{
+    return gts_new_from_file(c, f, error);
+}
 
 grib_handle* grib_handle_new_from_message_copy ( grib_context* c, const void* data, size_t size )
 {
-	grib_handle *g = NULL;
-	void* copy =NULL;
-	if ( c == NULL ) c = grib_context_get_default();
+    grib_handle *g = NULL;
+    void* copy =NULL;
+    if ( c == NULL ) c = grib_context_get_default();
 
-	c->handle_file_count=0;
-	c->handle_total_count=0;
-	copy = grib_context_malloc ( c,size );
-	if ( !copy ) {
-		return NULL;
-	}
+    c->handle_file_count=0;
+    c->handle_total_count=0;
+    copy = grib_context_malloc ( c,size );
+    if ( !copy ) {
+        return NULL;
+    }
 
-	memcpy ( copy,data,size );
+    memcpy ( copy,data,size );
 
-	g = grib_handle_new_from_message ( c,copy, size );
-	g->buffer->property = GRIB_MY_BUFFER;
+    g = grib_handle_new_from_message ( c,copy, size );
+    g->buffer->property = GRIB_MY_BUFFER;
 
-	return g;
+    return g;
 }
 
 grib_handle* grib_handle_new_from_partial_message_copy ( grib_context* c, const void* data, size_t size )
 {
-	grib_handle *g = NULL;
-	void* copy =NULL;
-	if ( c == NULL ) c = grib_context_get_default();
-	c->handle_file_count=0;
-	c->handle_total_count=0;
-	copy = grib_context_malloc ( c,size );
-	if ( !copy )
-		return NULL;
+    grib_handle *g = NULL;
+    void* copy =NULL;
+    if ( c == NULL ) c = grib_context_get_default();
+    c->handle_file_count=0;
+    c->handle_total_count=0;
+    copy = grib_context_malloc ( c,size );
+    if ( !copy )
+        return NULL;
 
-	memcpy ( copy,data,size );
+    memcpy ( copy,data,size );
 
-	g = grib_handle_new_from_partial_message ( c,copy, size );
-	g->buffer->property = GRIB_MY_BUFFER;
+    g = grib_handle_new_from_partial_message ( c,copy, size );
+    g->buffer->property = GRIB_MY_BUFFER;
 
-	return g;
+    return g;
 }
 
 grib_handle* grib_handle_new_from_partial_message ( grib_context* c,void* data, size_t buflen )
 {
-	grib_handle  *gl = NULL;
-	if ( c == NULL ) c = grib_context_get_default();
-	c->handle_file_count=0;
-	c->handle_total_count=0;
-	gl = grib_new_handle ( c );
-	gl->partial = 1;
-	return grib_handle_create ( gl,  c, data,  buflen );
+    grib_handle  *gl = NULL;
+    if ( c == NULL ) c = grib_context_get_default();
+    c->handle_file_count=0;
+    c->handle_total_count=0;
+    gl = grib_new_handle ( c );
+    gl->partial = 1;
+    return grib_handle_create ( gl,  c, data,  buflen );
 }
 
 grib_handle* grib_handle_new_from_message ( grib_context* c,void* data, size_t buflen )
 {
-	grib_handle  *gl = NULL;
-	grib_handle  *h = NULL;
-	if ( c == NULL ) c = grib_context_get_default();
-	gl = grib_new_handle ( c );
-	h=grib_handle_create ( gl,  c, data,  buflen );
-	return h;
+    grib_handle  *gl = NULL;
+    grib_handle  *h = NULL;
+    if ( c == NULL ) c = grib_context_get_default();
+    gl = grib_new_handle ( c );
+    h=grib_handle_create ( gl,  c, data,  buflen );
+    return h;
 }
 
-
-
 grib_handle* grib_handle_new_from_multi_message ( grib_context* c,void** data,
-		size_t *buflen,int* error )
+        size_t *buflen,int* error )
 {
-	grib_handle  *h = NULL;
-	unsigned char** d= ( unsigned char** ) data;
-	if ( c == NULL ) c = grib_context_get_default();
-
-	if ( c->multi_support_on ) h=grib_handle_new_multi ( c,d,  buflen,error );
-	else
-	{
-		size_t olen=0;
-		void * message=NULL;
-		*error = grib_read_any_from_memory_alloc ( c, d,buflen,&message, &olen );
-		if ( message==NULL ) return NULL;
-		h = grib_new_handle ( c );
-		grib_handle_create ( h,  c, message,  olen );
-	}
-
-	return h;
+    grib_handle  *h = NULL;
+    unsigned char** d= ( unsigned char** ) data;
+    if ( c == NULL ) c = grib_context_get_default();
+
+    if ( c->multi_support_on ) h=grib_handle_new_multi ( c,d,  buflen,error );
+    else
+    {
+        size_t olen=0;
+        void * message=NULL;
+        *error = grib_read_any_from_memory_alloc ( c, d,buflen,&message, &olen );
+        if ( message==NULL ) return NULL;
+        h = grib_new_handle ( c );
+        grib_handle_create ( h,  c, message,  olen );
+    }
+
+    return h;
 }
 
 grib_handle* grib_handle_new_from_file ( grib_context* c, FILE* f,int *error )
 {
-	return grib_new_from_file(c,f,0,error);
+    return grib_new_from_file(c,f,0,error);
 }
 
 static grib_handle* grib_handle_new_multi ( grib_context* c,unsigned char** data,
-		size_t *buflen,int* error )
+        size_t *buflen,int* error )
 {
-	void * message=NULL;
-	size_t olen = 0,len=0;
-	grib_handle  *gl = NULL;
-	long edition=0;
-	size_t seclen=0;
-	unsigned char* secbegin=0;
-	int secnum=0,seccount=0;
-	int err=0,i=0;
-	grib_multi_support* gm=NULL;
-
-	if ( c == NULL ) c = grib_context_get_default();
-
-	gm=grib_get_multi_support ( c,0 );
-
-	if ( !gm->message )
-	{
-		*error = grib_read_any_from_memory_alloc ( c, data,buflen,&message, &olen );
-		gm->message_length=olen;
-		gm->message=(unsigned char*)message;
-		if ( *error != GRIB_SUCCESS || !message )
-		{
-			if ( *error == GRIB_END_OF_FILE ) *error = GRIB_SUCCESS;
-			gm->message_length = 0;
-			return NULL;
-		}
-	}
-	else
-	{
-		message=gm->message;
-	}
-
-	edition=grib_decode_unsigned_byte_long ( (const unsigned char*)message,7,1 );
-
-	if ( edition == 2 )
-	{
-		olen=gm->message_length;
-		if ( gm->section_number == 0 )
-		{
-			gm->sections[0]=(unsigned char*)message;
-		}
-		secbegin=gm->sections[gm->section_number];
-		seclen=gm->sections_length[gm->section_number];
-		secnum=gm->section_number;
-		seccount=0;
-		while ( grib2_get_next_section ( (unsigned char*)message,olen,&secbegin,&seclen,&secnum,&err ) )
-		{
-			seccount++;
-			/*printf("   - %d - section %d length=%d\n",(int)seccount,(int)secnum,(int)seclen);*/
-
-			gm->sections[secnum]=secbegin;
-			gm->sections_length[secnum]=seclen;
-
-			if ( secnum == 6 )
-			{
-				/* Special case for inherited bitmaps */
-				if ( grib_decode_unsigned_byte_long ( secbegin,5,1 ) == 254 )
-				{
-					if ( !gm->bitmap_section )
-					{
-						grib_context_log ( gl->context, GRIB_LOG_ERROR,
-								"grib_handle_new_from_file : cannot create handle, missing bitmap\n" );
-						return NULL;
-					}
-					gm->sections[secnum]= gm->bitmap_section;
-					gm->sections_length[secnum]=gm->bitmap_section_length;
-				}
-				else
-				{
-					if ( gm->bitmap_section )
-					{
-						grib_context_free ( c,gm->bitmap_section );
-						gm->bitmap_section=NULL;
-					}
-					gm->bitmap_section = ( unsigned char* ) grib_context_malloc ( c,seclen );
-					gm->bitmap_section = (unsigned char*)memcpy ( gm->bitmap_section,secbegin,seclen );
-					gm->bitmap_section_length=seclen;
-				}
-			}
-
-			if ( secnum == 7 )
-			{
-				void* p=message;
-				len=olen;
-				grib2_build_message ( c,gm->sections,gm->sections_length,&message,&len );
-
-				if ( grib2_has_next_section ( (unsigned char*)p,olen,secbegin,seclen,&err ) )
-				{
-					gm->message=(unsigned char*)p;
-					gm->section_number=secnum;
-					olen=len;
-				}
-				else
-				{
-					grib_context_free ( c,gm->message );
-					gm->message=NULL;
-					for ( i=0;i<8;i++ ) gm->sections[i]=NULL;
-					gm->section_number=0;
-					gm->message_length=0;
-					olen=len;
-				}
-
-				break;
-			}
-		}
-
-	}
-	else
-	{
-		gm->message_length=0;
-		gm->message=NULL;
-	}
-
-	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_from_file : cannot create handle \n" );
-		return NULL;
-	}
-
-	gl->buffer->property = GRIB_MY_BUFFER;
-	c->handle_file_count++;
-	c->handle_total_count++;
-
-	return gl;
+    void * message=NULL;
+    size_t olen = 0,len=0;
+    grib_handle  *gl = NULL;
+    long edition=0;
+    size_t seclen=0;
+    unsigned char* secbegin=0;
+    int secnum=0,seccount=0;
+    int err=0,i=0;
+    grib_multi_support* gm=NULL;
+
+    if ( c == NULL ) c = grib_context_get_default();
+
+    gm=grib_get_multi_support ( c,0 );
+
+    if ( !gm->message )
+    {
+        *error = grib_read_any_from_memory_alloc ( c, data,buflen,&message, &olen );
+        gm->message_length=olen;
+        gm->message=(unsigned char*)message;
+        if ( *error != GRIB_SUCCESS || !message )
+        {
+            if ( *error == GRIB_END_OF_FILE ) *error = GRIB_SUCCESS;
+            gm->message_length = 0;
+            return NULL;
+        }
+    }
+    else
+    {
+        message=gm->message;
+    }
+
+    edition=grib_decode_unsigned_byte_long ( (const unsigned char*)message,7,1 );
+
+    if ( edition == 2 )
+    {
+        olen=gm->message_length;
+        if ( gm->section_number == 0 )
+        {
+            gm->sections[0]=(unsigned char*)message;
+        }
+        secbegin=gm->sections[gm->section_number];
+        seclen=gm->sections_length[gm->section_number];
+        secnum=gm->section_number;
+        seccount=0;
+        while ( grib2_get_next_section ( (unsigned char*)message,olen,&secbegin,&seclen,&secnum,&err ) )
+        {
+            seccount++;
+            /*printf("   - %d - section %d length=%d\n",(int)seccount,(int)secnum,(int)seclen);*/
+
+            gm->sections[secnum]=secbegin;
+            gm->sections_length[secnum]=seclen;
+
+            if ( secnum == 6 )
+            {
+                /* 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 : cannot create handle, missing bitmap\n" );
+                        return NULL;
+                    }
+                    gm->sections[secnum]= gm->bitmap_section;
+                    gm->sections_length[secnum]=gm->bitmap_section_length;
+                }
+                else
+                {
+                    if ( gm->bitmap_section )
+                    {
+                        grib_context_free ( c,gm->bitmap_section );
+                        gm->bitmap_section=NULL;
+                    }
+                    gm->bitmap_section = ( unsigned char* ) grib_context_malloc ( c,seclen );
+                    gm->bitmap_section = (unsigned char*)memcpy ( gm->bitmap_section,secbegin,seclen );
+                    gm->bitmap_section_length=seclen;
+                }
+            }
+
+            if ( secnum == 7 )
+            {
+                void* p=message;
+                len=olen;
+                grib2_build_message ( c,gm->sections,gm->sections_length,&message,&len );
+
+                if ( grib2_has_next_section ( (unsigned char*)p,olen,secbegin,seclen,&err ) )
+                {
+                    gm->message=(unsigned char*)p;
+                    gm->section_number=secnum;
+                    olen=len;
+                }
+                else
+                {
+                    grib_context_free ( c,gm->message );
+                    gm->message=NULL;
+                    for ( i=0;i<8;i++ ) gm->sections[i]=NULL;
+                    gm->section_number=0;
+                    gm->message_length=0;
+                    olen=len;
+                }
+
+                break;
+            }
+        }
+
+    }
+    else
+    {
+        gm->message_length=0;
+        gm->message=NULL;
+    }
+
+    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_from_file : cannot create handle \n" );
+        return NULL;
+    }
+
+    gl->buffer->property = GRIB_MY_BUFFER;
+    c->handle_file_count++;
+    c->handle_total_count++;
+
+    return gl;
 }
 
 static grib_handle* grib_handle_new_from_file_multi ( grib_context* c, FILE* f,int *error )
 {
-	void* data = NULL,*old_data=NULL;
-	size_t olen = 0,len=0;
-	grib_handle  *gl = NULL;
-	long edition=0;
-	size_t seclen=0;
-	unsigned char* secbegin=0;
-	int secnum=0,seccount=0;
-	int err=0,i=0;
-	grib_multi_support* gm=NULL;
-	off_t gts_header_offset=0;
-	off_t end_msg_offset=0,offset=0;
-	char *gts_header=0,*save_gts_header=0;
-	int gtslen=0;
-
-	if ( c == NULL ) c = grib_context_get_default();
-
-	gm=grib_get_multi_support ( c,f );
-
-	if ( !gm->message )
-	{
-		gts_header_offset=grib_context_tell( c,f);
-		data = wmo_read_grib_from_file_malloc ( f,0, &olen,&offset,error );
-		end_msg_offset=grib_context_tell ( c,f );
-
-		gm->message_length=olen;
-		gm->message=(unsigned char*)data;
-		gm->offset=offset;
-		if ( *error != GRIB_SUCCESS || !data )
-		{
-			if ( data ) grib_context_free ( c,data );
-
-			if ( *error == GRIB_END_OF_FILE ) *error = GRIB_SUCCESS;
-			gm->message_length = 0;
-			gm->message=NULL;
-			return NULL;
-		}
-		if ( c->gts_header_on )
-		{
-			int g=0;
-			grib_context_seek ( c,gts_header_offset,SEEK_SET,f );
-			gtslen=offset-gts_header_offset;
-			gts_header=(char*)grib_context_malloc_clear ( c,sizeof ( unsigned char ) *gtslen );
-			save_gts_header=gts_header;
-			grib_context_read ( c,gts_header,gtslen,f );
-			g=gtslen;
-			while ( gts_header!=NULL && g != 0 && *gts_header != '\03' )
-			{
-				/*printf("--------%d %X \n",gtslen,*gts_header);*/
-				gts_header++;
-				g--;
-			}
-			if ( g>8 ) {gts_header++;gtslen=g-1;}
-			else gts_header=save_gts_header;
-			grib_context_seek ( c,end_msg_offset,SEEK_SET,f );
-		}
-
-	}
-	else
-		data=gm->message;
-
-	edition=grib_decode_unsigned_byte_long ( (const unsigned char*)data,7,1 );
-
-	if ( edition == 2 )
-	{
-		olen=gm->message_length;
-		if ( gm->section_number == 0 )
-		{
-			gm->sections[0]=(unsigned char*)data;
-		}
-		secbegin=gm->sections[gm->section_number];
-		seclen=gm->sections_length[gm->section_number];
-		secnum=gm->section_number;
-		seccount=0;
-		while ( grib2_get_next_section ( (unsigned char*)data,olen,&secbegin,&seclen,&secnum,&err ) )
-		{
-			seccount++;
-			/*printf("   - %d - section %d length=%d\n",(int)seccount,(int)secnum,(int)seclen);*/
-
-			gm->sections[secnum]=secbegin;
-			gm->sections_length[secnum]=seclen;
-
-			if ( secnum == 6 )
-			{
-				/* Special case for inherited bitmaps */
-				if ( grib_decode_unsigned_byte_long ( secbegin,5,1 ) == 254 )
-				{
-					if ( !gm->bitmap_section )
-					{
-						grib_context_log ( gl->context, GRIB_LOG_ERROR, "grib_handle_new_from_file : cannot create handle, missing bitmap\n" );
-						grib_context_free ( c,data );
-						return NULL;
-					}
-					gm->sections[secnum]= gm->bitmap_section;
-					gm->sections_length[secnum]=gm->bitmap_section_length;
-				}
-				else
-				{
-					if ( gm->bitmap_section )
-					{
-						grib_context_free ( c,gm->bitmap_section );
-						gm->bitmap_section=NULL;
-					}
-					gm->bitmap_section = ( unsigned char* ) grib_context_malloc ( c,seclen );
-					gm->bitmap_section = (unsigned char*)memcpy ( gm->bitmap_section,secbegin,seclen );
-					gm->bitmap_section_length=seclen;
-				}
-			}
-
-			if ( secnum == 7 )
-			{
-				old_data=data;
-				len=olen;
-				grib2_build_message ( c,gm->sections,gm->sections_length,&data,&len );
-
-				if ( grib2_has_next_section ( (unsigned char*)old_data,olen,secbegin,seclen,&err ) )
-				{
-					gm->message=(unsigned char*)old_data;
-					gm->section_number=secnum;
-					olen=len;
-				}
-				else
-				{
-					if ( gm->message ) grib_context_free ( c,gm->message );
-					gm->message=NULL;
-					for ( i=0;i<8;i++ ) gm->sections[i]=NULL;
-					gm->section_number=0;
-					gm->message_length=0;
-					olen=len;
-				}
-				break;
-			}
-		}
-
-	}
-	else
-	{
-		gm->message_length=0;
-		gm->message=NULL;
-	}
-
-	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 : cannot create handle \n" );
-		grib_context_free ( c,data );
-		return NULL;
-	}
-
-	gl->offset=gm->offset;
-	gl->buffer->property = GRIB_MY_BUFFER;
-	c->handle_file_count++;
-	c->handle_total_count++;
-
-	if ( c->gts_header_on && gtslen >=8 )
-	{
-		gl->gts_header=(char*)grib_context_malloc_clear ( c,sizeof ( unsigned char ) *gtslen );
-		memcpy ( gl->gts_header,gts_header,gtslen );
-		gl->gts_header_len=gtslen;
-		grib_context_free ( c,save_gts_header );
-		gtslen=0;
-	} else gl->gts_header=NULL;
-
-	return gl;
+    void* data = NULL,*old_data=NULL;
+    size_t olen = 0,len=0;
+    grib_handle  *gl = NULL;
+    long edition=0;
+    size_t seclen=0;
+    unsigned char* secbegin=0;
+    int secnum=0,seccount=0;
+    int err=0,i=0;
+    grib_multi_support* gm=NULL;
+    off_t gts_header_offset=0;
+    off_t end_msg_offset=0,offset=0;
+    char *gts_header=0,*save_gts_header=0;
+    int gtslen=0;
+
+    if ( c == NULL ) c = grib_context_get_default();
+
+    gm=grib_get_multi_support ( c,f );
+
+    if ( !gm->message )
+    {
+        gts_header_offset=grib_context_tell( c,f);
+        data = wmo_read_grib_from_file_malloc ( f,0, &olen,&offset,error );
+        end_msg_offset=grib_context_tell ( c,f );
+
+        gm->message_length=olen;
+        gm->message=(unsigned char*)data;
+        gm->offset=offset;
+        if ( *error != GRIB_SUCCESS || !data )
+        {
+            if ( data ) grib_context_free ( c,data );
+
+            if ( *error == GRIB_END_OF_FILE ) *error = GRIB_SUCCESS;
+            gm->message_length = 0;
+            gm->message=NULL;
+            return NULL;
+        }
+        if ( c->gts_header_on )
+        {
+            int g=0;
+            grib_context_seek ( c,gts_header_offset,SEEK_SET,f );
+            gtslen=offset-gts_header_offset;
+            gts_header=(char*)grib_context_malloc_clear ( c,sizeof ( unsigned char ) *gtslen );
+            save_gts_header=gts_header;
+            grib_context_read ( c,gts_header,gtslen,f );
+            g=gtslen;
+            while ( gts_header!=NULL && g != 0 && *gts_header != '\03' )
+            {
+                /*printf("--------%d %X \n",gtslen,*gts_header);*/
+                gts_header++;
+                g--;
+            }
+            if ( g>8 ) {gts_header++;gtslen=g-1;}
+            else gts_header=save_gts_header;
+            grib_context_seek ( c,end_msg_offset,SEEK_SET,f );
+        }
+
+    }
+    else
+        data=gm->message;
+
+    edition=grib_decode_unsigned_byte_long ( (const unsigned char*)data,7,1 );
+
+    if ( edition == 2 )
+    {
+        olen=gm->message_length;
+        if ( gm->section_number == 0 )
+        {
+            gm->sections[0]=(unsigned char*)data;
+        }
+        secbegin=gm->sections[gm->section_number];
+        seclen=gm->sections_length[gm->section_number];
+        secnum=gm->section_number;
+        seccount=0;
+        while ( grib2_get_next_section ( (unsigned char*)data,olen,&secbegin,&seclen,&secnum,&err ) )
+        {
+            seccount++;
+            /*printf("   - %d - section %d length=%d\n",(int)seccount,(int)secnum,(int)seclen);*/
+
+            gm->sections[secnum]=secbegin;
+            gm->sections_length[secnum]=seclen;
+
+            if ( secnum == 6 )
+            {
+                /* 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 : cannot create handle, missing bitmap\n" );
+                        grib_context_free ( c,data );
+                        return NULL;
+                    }
+                    gm->sections[secnum]= gm->bitmap_section;
+                    gm->sections_length[secnum]=gm->bitmap_section_length;
+                }
+                else
+                {
+                    if ( gm->bitmap_section )
+                    {
+                        grib_context_free ( c,gm->bitmap_section );
+                        gm->bitmap_section=NULL;
+                    }
+                    gm->bitmap_section = ( unsigned char* ) grib_context_malloc ( c,seclen );
+                    gm->bitmap_section = (unsigned char*)memcpy ( gm->bitmap_section,secbegin,seclen );
+                    gm->bitmap_section_length=seclen;
+                }
+            }
+
+            if ( secnum == 7 )
+            {
+                old_data=data;
+                len=olen;
+                grib2_build_message ( c,gm->sections,gm->sections_length,&data,&len );
+
+                if ( grib2_has_next_section ( (unsigned char*)old_data,olen,secbegin,seclen,&err ) )
+                {
+                    gm->message=(unsigned char*)old_data;
+                    gm->section_number=secnum;
+                    olen=len;
+                }
+                else
+                {
+                    if ( gm->message ) grib_context_free ( c,gm->message );
+                    gm->message=NULL;
+                    for ( i=0;i<8;i++ ) gm->sections[i]=NULL;
+                    gm->section_number=0;
+                    gm->message_length=0;
+                    olen=len;
+                }
+                break;
+            }
+        }
+
+    }
+    else
+    {
+        gm->message_length=0;
+        gm->message=NULL;
+    }
+
+    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 : cannot create handle \n" );
+        grib_context_free ( c,data );
+        return NULL;
+    }
+
+    gl->offset=gm->offset;
+    gl->buffer->property = GRIB_MY_BUFFER;
+    c->handle_file_count++;
+    c->handle_total_count++;
+
+    if ( c->gts_header_on && gtslen >=8 )
+    {
+        gl->gts_header=(char*)grib_context_malloc_clear ( c,sizeof ( unsigned char ) *gtslen );
+        memcpy ( gl->gts_header,gts_header,gtslen );
+        gl->gts_header_len=gtslen;
+        grib_context_free ( c,save_gts_header );
+        gtslen=0;
+    } else gl->gts_header=NULL;
+
+    return gl;
 }
 
 grib_handle* grib_new_from_file ( grib_context* c, FILE* f,int headers_only,int *error )
 {
-	grib_handle* h=0;
-	if (!f) {*error=GRIB_IO_PROBLEM; return NULL;}
+    grib_handle* h=0;
+    if (!f) {*error=GRIB_IO_PROBLEM; return NULL;}
 
-	if ( c == NULL ) c = grib_context_get_default();
+    if ( c == NULL ) c = grib_context_get_default();
 
-	if ( c->multi_support_on ) h=grib_handle_new_from_file_multi ( c,f,error );
-	else h=grib_handle_new_from_file_no_multi ( c,f,headers_only,error );
+    if ( c->multi_support_on ) h=grib_handle_new_from_file_multi ( c,f,error );
+    else h=grib_handle_new_from_file_no_multi ( c,f,headers_only,error );
 
-	if ( h && h->offset == 0 ) c->handle_file_count=1;
+    if ( h && h->offset == 0 ) c->handle_file_count=1;
 
-	if ( !c->no_fail_on_wrong_length && *error == GRIB_WRONG_LENGTH )
-	{
-		grib_handle_delete ( h );
-		h=NULL;
-	}
+    if (h) {
+        h->product_kind = PRODUCT_GRIB;
+    }
 
-	return h;
+    if ( !c->no_fail_on_wrong_length && *error == GRIB_WRONG_LENGTH )
+    {
+        grib_handle_delete ( h );
+        h=NULL;
+    }
+
+    return h;
 }
 
 grib_handle* gts_new_from_file ( grib_context* c, FILE* f,int *error )
 {
-	void *data = NULL;
-	size_t olen = 0;
-	grib_handle  *gl = NULL;
-	off_t offset=0;
+    void *data = NULL;
+    size_t olen = 0;
+    grib_handle  *gl = NULL;
+    off_t offset=0;
 
-	if ( c == NULL ) c = grib_context_get_default();
+    if ( c == NULL ) c = grib_context_get_default();
 
-	data = wmo_read_gts_from_file_malloc ( f, 0,&olen,&offset,error );
+    data = wmo_read_gts_from_file_malloc ( f, 0,&olen,&offset,error );
 
-	if ( *error != GRIB_SUCCESS )
-	{
-		if ( data ) grib_context_free ( c,data );
+    if ( *error != GRIB_SUCCESS )
+    {
+        if ( data ) grib_context_free ( c,data );
 
-		if ( *error == GRIB_END_OF_FILE ) *error = GRIB_SUCCESS;
-		return NULL;
-	}
+        if ( *error == GRIB_END_OF_FILE ) *error = GRIB_SUCCESS;
+        return NULL;
+    }
 
-	gl = grib_handle_new_from_message ( c, data, olen );
+    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 : cannot create handle \n" );
-		grib_context_free ( c,data );
-		return NULL;
-	}
+    if ( !gl )
+    {
+        *error = GRIB_DECODING_ERROR;
+        grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_file : cannot create handle \n" );
+        grib_context_free ( c,data );
+        return NULL;
+    }
 
-	gl->offset=offset;
-	gl->buffer->property = GRIB_MY_BUFFER;
-	c->handle_file_count++;
-	c->handle_total_count++;
+    gl->offset=offset;
+    gl->buffer->property = GRIB_MY_BUFFER;
+    gl->product_kind = PRODUCT_GTS;
+    c->handle_file_count++;
+    c->handle_total_count++;
 
-	return gl;
+    return gl;
 }
 
 grib_handle* taf_new_from_file ( grib_context* c, FILE* f,int *error )
 {
-	void *data = NULL;
-	size_t olen = 0;
-	grib_handle  *gl = NULL;
-	off_t offset=0;
+    void *data = NULL;
+    size_t olen = 0;
+    grib_handle  *gl = NULL;
+    off_t offset=0;
 
-	if ( c == NULL ) c = grib_context_get_default();
+    if ( c == NULL ) c = grib_context_get_default();
 
-	data = wmo_read_taf_from_file_malloc ( f, 0,&olen,&offset,error );
+    data = wmo_read_taf_from_file_malloc ( f, 0,&olen,&offset,error );
 
-	if ( *error != GRIB_SUCCESS )
-	{
-		if ( data ) grib_context_free ( c,data );
+    if ( *error != GRIB_SUCCESS )
+    {
+        if ( data ) grib_context_free ( c,data );
 
-		if ( *error == GRIB_END_OF_FILE ) *error = GRIB_SUCCESS;
-		return NULL;
-	}
+        if ( *error == GRIB_END_OF_FILE ) *error = GRIB_SUCCESS;
+        return NULL;
+    }
 
-	gl = grib_handle_new_from_message ( c, data, olen );
+    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 : cannot create handle \n" );
-		grib_context_free ( c,data );
-		return NULL;
-	}
+    if ( !gl )
+    {
+        *error = GRIB_DECODING_ERROR;
+        grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_file : cannot create handle \n" );
+        grib_context_free ( c,data );
+        return NULL;
+    }
 
     gl->offset=offset;
-	gl->buffer->property = GRIB_MY_BUFFER;
-	c->handle_file_count++;
-	c->handle_total_count++;
+    gl->buffer->property = GRIB_MY_BUFFER;
+    gl->product_kind = PRODUCT_TAF;
+    c->handle_file_count++;
+    c->handle_total_count++;
 
-	return gl;
+    return gl;
 }
 
 grib_handle* metar_new_from_file ( grib_context* c, FILE* f,int *error )
 {
-	void *data = NULL;
-	size_t olen = 0;
-	grib_handle  *gl = NULL;
-	off_t offset=0;
+    void *data = NULL;
+    size_t olen = 0;
+    grib_handle  *gl = NULL;
+    off_t offset=0;
 
-	if ( c == NULL ) c = grib_context_get_default();
+    if ( c == NULL ) c = grib_context_get_default();
 
-	data = wmo_read_metar_from_file_malloc ( f, 0,&olen,&offset,error );
+    data = wmo_read_metar_from_file_malloc ( f, 0,&olen,&offset,error );
 
-	if ( *error != GRIB_SUCCESS )
-	{
-		if ( data ) grib_context_free ( c,data );
+    if ( *error != GRIB_SUCCESS )
+    {
+        if ( data ) grib_context_free ( c,data );
 
-		if ( *error == GRIB_END_OF_FILE ) *error = GRIB_SUCCESS;
-		return NULL;
-	}
+        if ( *error == GRIB_END_OF_FILE ) *error = GRIB_SUCCESS;
+        return NULL;
+    }
 
-	gl = grib_handle_new_from_message ( c, data, olen );
+    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 : cannot create handle \n" );
-		grib_context_free ( c,data );
-		return NULL;
-	}
+    if ( !gl )
+    {
+        *error = GRIB_DECODING_ERROR;
+        grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_file : cannot create handle \n" );
+        grib_context_free ( c,data );
+        return NULL;
+    }
 
     gl->offset=offset;
-	gl->buffer->property = GRIB_MY_BUFFER;
-	c->handle_file_count++;
-	c->handle_total_count++;
+    gl->buffer->property = GRIB_MY_BUFFER;
+    gl->product_kind = PRODUCT_METAR;
+    c->handle_file_count++;
+    c->handle_total_count++;
 
-	return gl;
+    return gl;
 }
 
 grib_handle* bufr_new_from_file ( grib_context* c, FILE* f,int *error )
 {
-	void *data = NULL;
-	size_t olen = 0;
-	grib_handle  *gl = NULL;
-	off_t offset=0;
+    void *data = NULL;
+    size_t olen = 0;
+    grib_handle  *gl = NULL;
+    off_t offset=0;
 
-	if ( c == NULL ) c = grib_context_get_default();
+    if ( c == NULL ) c = grib_context_get_default();
 
-	data = wmo_read_bufr_from_file_malloc ( f, 0,&olen,&offset,error );
+    data = wmo_read_bufr_from_file_malloc ( f, 0,&olen,&offset,error );
 
-	if ( *error != GRIB_SUCCESS )
-	{
-		if ( data ) grib_context_free ( c,data );
+    if ( *error != GRIB_SUCCESS )
+    {
+        if ( data ) grib_context_free ( c,data );
 
-		if ( *error == GRIB_END_OF_FILE ) *error = GRIB_SUCCESS;
-		return NULL;
-	}
+        if ( *error == GRIB_END_OF_FILE ) *error = GRIB_SUCCESS;
+        return NULL;
+    }
 
-	gl = grib_handle_new_from_message ( c, data, olen );
+    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 : cannot create handle \n" );
-		grib_context_free ( c,data );
-		return NULL;
-	}
+    if ( !gl )
+    {
+        *error = GRIB_DECODING_ERROR;
+        grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_file : cannot create handle \n" );
+        grib_context_free ( c,data );
+        return NULL;
+    }
 
-	gl->offset=offset;
-	gl->buffer->property = GRIB_MY_BUFFER;
-	c->handle_file_count++;
-	c->handle_total_count++;
+    gl->offset=offset;
+    gl->buffer->property = GRIB_MY_BUFFER;
+    gl->product_kind = PRODUCT_BUFR;
+    c->handle_file_count++;
+    c->handle_total_count++;
 
-	return gl;
+    return gl;
 }
 
 grib_handle* any_new_from_file ( grib_context* c, FILE* f,int *error )
@@ -917,6 +923,7 @@ grib_handle* any_new_from_file ( grib_context* c, FILE* f,int *error )
 
     gl->offset=offset;
     gl->buffer->property = GRIB_MY_BUFFER;
+    gl->product_kind = PRODUCT_ANY;
     c->handle_file_count++;
     c->handle_total_count++;
 
@@ -925,561 +932,558 @@ grib_handle* any_new_from_file ( grib_context* c, FILE* f,int *error )
 
 static grib_handle* grib_handle_new_from_file_no_multi ( grib_context* c,FILE* f,int headers_only,int *error )
 {
-	void *data = NULL;
-	size_t olen = 0;
-	grib_handle  *gl = NULL;
-	off_t gts_header_offset=0;
-	off_t offset=0,end_msg_offset=0;
-	char *gts_header=0,*save_gts_header=0;
-	int gtslen=0;
-
-	if ( c == NULL ) c = grib_context_get_default();
-	data = wmo_read_grib_from_file_malloc ( f, headers_only,&olen,&offset,error );
-	end_msg_offset=offset+olen;
-
-	if ( *error != GRIB_SUCCESS )
-	{
-		if ( data ) grib_context_free ( c,data );
-
-		if ( *error == GRIB_END_OF_FILE ) *error = GRIB_SUCCESS;
-		return NULL;
-	}
-
-	if ( c->gts_header_on )
-	{
-		int g=0;
-		grib_context_seek ( c,gts_header_offset,SEEK_SET,f );
-		gtslen=offset-gts_header_offset;
-		gts_header=(char*)grib_context_malloc ( c,sizeof ( unsigned char ) *gtslen );
-		save_gts_header=gts_header;
-		grib_context_read ( c,gts_header,gtslen,f );
-		g=gtslen;
-		while ( gts_header!=NULL && g != 0 && *gts_header != '\03' )
-		{
-			/*printf("--------%d %X \n",gtslen,*gts_header);*/
-			gts_header++;
-			g--;
-		}
-		if ( g>8 ) {gts_header++;gtslen=g-1;}
-		else gts_header=save_gts_header;
-		grib_context_seek ( c,end_msg_offset,SEEK_SET,f );
-	}
-
-	if (headers_only) {
-		gl = grib_handle_new_from_partial_message ( c, data, olen );
-	} else {
-		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 : cannot create handle \n" );
-		grib_context_free ( c,data );
-		return NULL;
-	}
-
-	gl->offset=offset;
-	gl->buffer->property = GRIB_MY_BUFFER;
-
-	c->handle_file_count++;
-	c->handle_total_count++;
-
-	if ( c->gts_header_on && gtslen >=8 )
-	{
-		gl->gts_header=(char*)grib_context_malloc ( c,sizeof ( unsigned char ) *gtslen );
-		memcpy ( gl->gts_header,gts_header,gtslen );
-		gl->gts_header_len=gtslen;
-		grib_context_free ( c,save_gts_header );
-		gtslen=0;
-	}
-
-	return gl;
+    void *data = NULL;
+    size_t olen = 0;
+    grib_handle  *gl = NULL;
+    off_t gts_header_offset=0;
+    off_t offset=0,end_msg_offset=0;
+    char *gts_header=0,*save_gts_header=0;
+    int gtslen=0;
+
+    if ( c == NULL ) c = grib_context_get_default();
+    data = wmo_read_grib_from_file_malloc ( f, headers_only,&olen,&offset,error );
+    end_msg_offset=offset+olen;
+
+    if ( *error != GRIB_SUCCESS )
+    {
+        if ( data ) grib_context_free ( c,data );
+
+        if ( *error == GRIB_END_OF_FILE ) *error = GRIB_SUCCESS;
+        return NULL;
+    }
+
+    if ( c->gts_header_on )
+    {
+        int g=0;
+        grib_context_seek ( c,gts_header_offset,SEEK_SET,f );
+        gtslen=offset-gts_header_offset;
+        gts_header=(char*)grib_context_malloc ( c,sizeof ( unsigned char ) *gtslen );
+        save_gts_header=gts_header;
+        grib_context_read ( c,gts_header,gtslen,f );
+        g=gtslen;
+        while ( gts_header!=NULL && g != 0 && *gts_header != '\03' )
+        {
+            /*printf("--------%d %X \n",gtslen,*gts_header);*/
+            gts_header++;
+            g--;
+        }
+        if ( g>8 ) {gts_header++;gtslen=g-1;}
+        else gts_header=save_gts_header;
+        grib_context_seek ( c,end_msg_offset,SEEK_SET,f );
+    }
+
+    if (headers_only) {
+        gl = grib_handle_new_from_partial_message ( c, data, olen );
+    } else {
+        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 : cannot create handle \n" );
+        grib_context_free ( c,data );
+        return NULL;
+    }
+
+    gl->offset=offset;
+    gl->buffer->property = GRIB_MY_BUFFER;
+
+    c->handle_file_count++;
+    c->handle_total_count++;
+
+    if ( c->gts_header_on && gtslen >=8 )
+    {
+        gl->gts_header=(char*)grib_context_malloc ( c,sizeof ( unsigned char ) *gtslen );
+        memcpy ( gl->gts_header,gts_header,gtslen );
+        gl->gts_header_len=gtslen;
+        grib_context_free ( c,save_gts_header );
+        gtslen=0;
+    }
+
+    return gl;
 }
 
 grib_multi_handle* grib_multi_handle_new ( grib_context* c )
 {
-	grib_multi_handle* h;
-	if ( c==NULL ) c=grib_context_get_default();
-	if ( !c->multi_support_on ) c->multi_support_on=1;
-
-	h= ( grib_multi_handle* ) grib_context_malloc_clear ( c,sizeof ( grib_multi_handle ) );
-	if ( h==NULL )
-	{
-		grib_context_log ( c,GRIB_LOG_ERROR,
-				"grib_multi_handle_new: unable to allocate memory. %s",
-				grib_get_error_message ( GRIB_OUT_OF_MEMORY ) );
-		return NULL;
-	}
-	h->buffer = grib_create_growable_buffer ( c );
-	h->buffer->ulength=0;
-	h->context=c;
-
-	return h;
+    grib_multi_handle* h;
+    if ( c==NULL ) c=grib_context_get_default();
+    if ( !c->multi_support_on ) c->multi_support_on=1;
+
+    h= ( grib_multi_handle* ) grib_context_malloc_clear ( c,sizeof ( grib_multi_handle ) );
+    if ( h==NULL )
+    {
+        grib_context_log ( c,GRIB_LOG_ERROR,
+                "grib_multi_handle_new: unable to allocate memory. %s",
+                grib_get_error_message ( GRIB_OUT_OF_MEMORY ) );
+        return NULL;
+    }
+    h->buffer = grib_create_growable_buffer ( c );
+    h->buffer->ulength=0;
+    h->context=c;
+
+    return h;
 }
 
 int grib_multi_handle_delete ( grib_multi_handle* h )
 {
-	if ( h==NULL ) return GRIB_SUCCESS;
+    if ( h==NULL ) return GRIB_SUCCESS;
 
-	grib_buffer_delete ( h->context,h->buffer );
-	grib_context_free ( h->context,h );
-	return GRIB_SUCCESS;
+    grib_buffer_delete ( h->context,h->buffer );
+    grib_context_free ( h->context,h );
+    return GRIB_SUCCESS;
 }
 
 int grib_multi_handle_append ( grib_handle* h,int start_section,grib_multi_handle* mh )
 {
-	const void* mess=NULL;
-	unsigned char* p=NULL;
-	int err=0;
-	size_t mess_len = 0;
-	size_t total_len=0;
-
-	if ( !h )  return GRIB_NULL_HANDLE;
-	if ( !mh ) return GRIB_NULL_HANDLE;
-
-	if ( start_section==0 || mh->buffer->ulength==0 )
-	{
-		err=grib_get_message ( h,&mess,&mess_len );
-		if ( err!=0 ) return err;
-		total_len=mh->buffer->ulength+mess_len;
-
-		if ( total_len > mh->buffer->length )
-			grib_grow_buffer ( h->context,mh->buffer,total_len );
-
-		p=mh->buffer->data+mh->buffer->ulength;
-		memcpy ( p,mess,mess_len );
-		mh->offset=mh->buffer->ulength;
-		mh->buffer->ulength=total_len;
-		mh->length=mess_len;
-
-	}
-	else
-	{
-		long off=0;
-		err=grib_get_partial_message ( h,&mess,&mess_len,start_section );
-		if ( err!=0 ) return err;
-		total_len=mh->buffer->ulength+mess_len-4;
-
-		while ( total_len > mh->buffer->length )
-			grib_grow_buffer ( h->context,mh->buffer,total_len );
-
-		p=mh->buffer->data+mh->buffer->ulength-4;
-		memcpy ( p,mess,mess_len );
-		mh->length+=mess_len-4;
-
-		off=mh->offset+64;
-
-		grib_encode_unsigned_long ( mh->buffer->data, mh->length,  &off,  64 );
-		mh->buffer->ulength=total_len;
-	}
-	return err;
+    const void* mess=NULL;
+    unsigned char* p=NULL;
+    int err=0;
+    size_t mess_len = 0;
+    size_t total_len=0;
+
+    if ( !h )  return GRIB_NULL_HANDLE;
+    if ( !mh ) return GRIB_NULL_HANDLE;
+
+    if ( start_section==0 || mh->buffer->ulength==0 )
+    {
+        err=grib_get_message ( h,&mess,&mess_len );
+        if ( err!=0 ) return err;
+        total_len=mh->buffer->ulength+mess_len;
+
+        if ( total_len > mh->buffer->length )
+            grib_grow_buffer ( h->context,mh->buffer,total_len );
+
+        p=mh->buffer->data+mh->buffer->ulength;
+        memcpy ( p,mess,mess_len );
+        mh->offset=mh->buffer->ulength;
+        mh->buffer->ulength=total_len;
+        mh->length=mess_len;
+
+    }
+    else
+    {
+        long off=0;
+        err=grib_get_partial_message ( h,&mess,&mess_len,start_section );
+        if ( err!=0 ) return err;
+        total_len=mh->buffer->ulength+mess_len-4;
+
+        while ( total_len > mh->buffer->length )
+            grib_grow_buffer ( h->context,mh->buffer,total_len );
+
+        p=mh->buffer->data+mh->buffer->ulength-4;
+        memcpy ( p,mess,mess_len );
+        mh->length+=mess_len-4;
+
+        off=mh->offset+64;
+
+        grib_encode_unsigned_long ( mh->buffer->data, mh->length,  &off,  64 );
+        mh->buffer->ulength=total_len;
+    }
+    return err;
 }
 
 int grib_multi_handle_write ( grib_multi_handle* h,FILE* f )
 {
-	if ( f==NULL ) return GRIB_INVALID_FILE;
-	if ( h==NULL ) return GRIB_INVALID_GRIB;
+    if ( f==NULL ) return GRIB_INVALID_FILE;
+    if ( h==NULL ) 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" );
-		return GRIB_IO_PROBLEM;
-	}
+    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" );
+        return GRIB_IO_PROBLEM;
+    }
 
-	return 0;
+    return 0;
 }
 
 int grib_get_partial_message ( grib_handle* h,const void** msg,size_t* len,int start_section )
 {
-	size_t partial_len=0;
-	long section_offset=0;
-	if ( !h ) return GRIB_NULL_HANDLE;
+    size_t partial_len=0;
+    long section_offset=0;
+    if ( !h ) return GRIB_NULL_HANDLE;
 
-	if ( start_section>h->sections_count )
-		return GRIB_INVALID_SECTION_NUMBER;
+    if ( start_section>h->sections_count )
+        return GRIB_INVALID_SECTION_NUMBER;
 
-	grib_get_long ( h,h->section_offset[start_section],&section_offset );
-	partial_len=h->buffer->ulength-section_offset;
+    grib_get_long ( h,h->section_offset[start_section],&section_offset );
+    partial_len=h->buffer->ulength-section_offset;
 
-	*len=partial_len;
-	*msg  = h->buffer->data+section_offset;
+    *len=partial_len;
+    *msg  = h->buffer->data+section_offset;
 
-	return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
 
 int grib_get_partial_message_copy ( grib_handle* h ,  void* message,size_t *len,
-		int start_section )
+        int start_section )
 {
-	size_t partial_len=0;
-	long section_offset=0;
-	if ( !h ) return GRIB_NULL_HANDLE;
+    size_t partial_len=0;
+    long section_offset=0;
+    if ( !h ) return GRIB_NULL_HANDLE;
 
-	if ( start_section>h->sections_count )
-		return GRIB_INVALID_SECTION_NUMBER;
+    if ( start_section>h->sections_count )
+        return GRIB_INVALID_SECTION_NUMBER;
 
-	grib_get_long ( h,h->section_offset[start_section],&section_offset );
-	partial_len=h->buffer->ulength-section_offset;
+    grib_get_long ( h,h->section_offset[start_section],&section_offset );
+    partial_len=h->buffer->ulength-section_offset;
 
-	if ( *len < partial_len ) return GRIB_BUFFER_TOO_SMALL;
+    if ( *len < partial_len ) return GRIB_BUFFER_TOO_SMALL;
 
-	*len=partial_len;
+    *len=partial_len;
 
-	memcpy ( message,h->buffer->data+section_offset,*len );
-	return GRIB_SUCCESS;
+    memcpy ( message,h->buffer->data+section_offset,*len );
+    return GRIB_SUCCESS;
 }
 
 int grib_get_message_copy ( grib_handle* h ,  void* message,size_t *len )
 {
-	if ( !h )
-		return GRIB_NOT_FOUND;
+    if ( !h )
+        return GRIB_NOT_FOUND;
 
-	if ( *len < h->buffer->ulength )
-		return GRIB_BUFFER_TOO_SMALL;
+    if ( *len < h->buffer->ulength )
+        return GRIB_BUFFER_TOO_SMALL;
 
-	*len=h->buffer->ulength;
+    *len=h->buffer->ulength;
 
-	memcpy ( message,h->buffer->data,*len );
-	return GRIB_SUCCESS;
+    memcpy ( message,h->buffer->data,*len );
+    return GRIB_SUCCESS;
 }
 
-int grib_get_message_offset ( grib_handle* h,off_t* offset ) {
-
-	if (h) *offset=h->offset;
-	else return GRIB_INTERNAL_ERROR;
+int grib_get_message_offset ( grib_handle* h,off_t* offset )
+{
+    if (h) *offset=h->offset;
+    else return GRIB_INTERNAL_ERROR;
 
-	return 0;
+    return 0;
 }
 
-int grib_get_message_size ( grib_handle* h,size_t* size ) {
-	long totalLength=0;
-	int ret=0;
-	*size =  h->buffer->ulength;
-	ret=grib_get_long(h,"totalLength",&totalLength);
-	if (!ret) *size=totalLength;
-	return ret;
+int grib_get_message_size ( grib_handle* h,size_t* size )
+{
+    long totalLength=0;
+    int ret=0;
+    *size =  h->buffer->ulength;
+    ret=grib_get_long(h,"totalLength",&totalLength);
+    if (!ret) *size=totalLength;
+    return ret;
 }
 
 int grib_get_message ( grib_handle* h,const void** msg,size_t* size )
 {
-	long totalLength=0;
-	int ret=0;
-	*msg  =  h->buffer->data;
-	*size =  h->buffer->ulength;
-
-	ret=grib_get_long(h,"totalLength",&totalLength);
-	if (!ret) *size=totalLength;
-
-	if ( h->context->gts_header_on && h->gts_header )
-	{
-		char strbuf[10];
-		sprintf ( strbuf,"%.8d", ( int ) ( h->buffer->ulength+h->gts_header_len-6 ) );
-		memcpy ( h->gts_header,strbuf,8 );
-	}
-	return 0;
+    long totalLength=0;
+    int ret=0;
+    *msg  =  h->buffer->data;
+    *size =  h->buffer->ulength;
+
+    ret=grib_get_long(h,"totalLength",&totalLength);
+    if (!ret) *size=totalLength;
+
+    if ( h->context->gts_header_on && h->gts_header )
+    {
+        char strbuf[10];
+        sprintf ( strbuf,"%.8d", ( int ) ( h->buffer->ulength+h->gts_header_len-6 ) );
+        memcpy ( h->gts_header,strbuf,8 );
+    }
+    return 0;
 }
 
 int grib_get_message_headers ( grib_handle* h,const void** msg,size_t* size )
 {
-	int ret=0;
-	size_t endOfHeadersMaker;
-	*msg  =  h->buffer->data;
-	*size =  h->buffer->ulength;
-
-	if ((ret=grib_get_offset(h,"endOfHeadersMaker",&endOfHeadersMaker))!=GRIB_SUCCESS) {
-		grib_context_log(h->context,GRIB_LOG_FATAL,
-				"grib_get_message_headers unable to get offset of endOfHeadersMaker");
-		return ret;
-	}
+    int ret=0;
+    size_t endOfHeadersMaker;
+    *msg  =  h->buffer->data;
+    *size =  h->buffer->ulength;
+
+    if ((ret=grib_get_offset(h,"endOfHeadersMaker",&endOfHeadersMaker))!=GRIB_SUCCESS) {
+        grib_context_log(h->context,GRIB_LOG_FATAL,
+                "grib_get_message_headers unable to get offset of endOfHeadersMaker");
+        return ret;
+    }
 
-	*size=endOfHeadersMaker;
+    *size=endOfHeadersMaker;
 
-	return ret;
+    return ret;
 }
 
 grib_handle *grib_handle_new ( grib_context* c )
 {
-	grib_handle* h;
-
-	if ( !c ) c = grib_context_get_default();
-	h  = grib_new_handle ( c );
-	h->buffer = grib_create_growable_buffer ( c );
-	if ( h->buffer == NULL )
-	{
-		grib_handle_delete ( h );
-		return NULL;
-	}
-	h->root   = grib_create_root_section ( h->context,h );
-
-	if ( !h->root )
-	{
-		grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_message: cannot create root section" );
-		grib_handle_delete ( h );
-		return NULL;
-	}
-
-	if ( !h->context->grib_reader || !h->context->grib_reader->first )
-	{
-		grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_message: cannot create handle, no definitions found" );
-		grib_handle_delete ( h );
-		return NULL;
-	}
-
-	h->buffer->property = GRIB_USER_BUFFER;
-
-	h->header_mode=1;
-
-	check_definitions_version(h);
-
-	return h;
+    grib_handle* h;
+
+    if ( !c ) c = grib_context_get_default();
+    h  = grib_new_handle ( c );
+    h->buffer = grib_create_growable_buffer ( c );
+    if ( h->buffer == NULL )
+    {
+        grib_handle_delete ( h );
+        return NULL;
+    }
+    h->root   = grib_create_root_section ( h->context,h );
+
+    if ( !h->root )
+    {
+        grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_message: cannot create root section" );
+        grib_handle_delete ( h );
+        return NULL;
+    }
+
+    if ( !h->context->grib_reader || !h->context->grib_reader->first )
+    {
+        grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_message: cannot create handle, no definitions found" );
+        grib_handle_delete ( h );
+        return NULL;
+    }
+
+    h->buffer->property = GRIB_USER_BUFFER;
+
+    h->header_mode=1;
+
+    return h;
 }
 
 grib_action* grib_action_from_filter ( const char* filter )
 {
-	grib_action* a = NULL;
-	grib_context* context=grib_context_get_default();
-	a = grib_parse_file ( context, filter );
-	context->grib_reader=NULL;
-	return a;
+    grib_action* a = NULL;
+    grib_context* context=grib_context_get_default();
+    a = grib_parse_file ( context, filter );
+    context->grib_reader=NULL;
+    return a;
 }
 
 int grib_handle_apply_action ( grib_handle* h,grib_action* a )
 {
-	int err;
-	grib_action* ao = a;
+    int err;
+    grib_action* ao = a;
 
-	if ( !a ) return GRIB_SUCCESS; /* TODO: return error */
+    if ( !a ) return GRIB_SUCCESS; /* TODO: return error */
 
-	while ( a )
-	{
-		err = grib_action_execute ( a,h );
-		if ( err != GRIB_SUCCESS )
-			return err;
-		a = a->next;
-	}
+    while ( a )
+    {
+        err = grib_action_execute ( a,h );
+        if ( err != GRIB_SUCCESS )
+            return err;
+        a = a->next;
+    }
 
-	a=ao;
+    a=ao;
 
-	return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
 
 int grib_handle_prepare_action ( grib_handle* h,grib_action* a )
 {
-	int err;
-	grib_action* ao = a;
+    int err;
+    grib_action* ao = a;
 
-	if ( !a ) return GRIB_SUCCESS; /* TODO: return error */
+    if ( !a ) return GRIB_SUCCESS; /* TODO: return error */
 
-	while ( a )
-	{
-		err = grib_action_execute ( a,h );
-		if ( err != GRIB_SUCCESS )
-			return err;
-		a = a->next;
-	}
+    while ( a )
+    {
+        err = grib_action_execute ( a,h );
+        if ( err != GRIB_SUCCESS )
+            return err;
+        a = a->next;
+    }
 
-	a=ao;
+    a=ao;
 
-	return GRIB_SUCCESS;
+    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 )
 {
+    if ( !grib2_has_next_section ( msgbegin,msglen,*secbegin,*seclen,err ) )
+        return 0;
 
-	if ( !grib2_has_next_section ( msgbegin,msglen,*secbegin,*seclen,err ) )
-		return 0;
+    *secbegin+=*seclen;
+    *seclen=grib_decode_unsigned_byte_long ( *secbegin,0,4 );
+    *secnum=grib_decode_unsigned_byte_long ( *secbegin,4,1 );
 
-	*secbegin+=*seclen;
-	*seclen=grib_decode_unsigned_byte_long ( *secbegin,0,4 );
-	*secnum=grib_decode_unsigned_byte_long ( *secbegin,4,1 );
-
-	if ( *secnum < 1 || *secnum > 7 )
-	{
-		*err=GRIB_INVALID_SECTION_NUMBER;
-		return 0;
-	}
-	return 1;
+    if ( *secnum < 1 || *secnum > 7 )
+    {
+        *err=GRIB_INVALID_SECTION_NUMBER;
+        return 0;
+    }
+    return 1;
 }
 
 static int grib2_has_next_section ( unsigned char* msgbegin,size_t msglen,unsigned char* secbegin,size_t seclen,int* err )
 {
-	long next_seclen;
-	*err=0;
+    long next_seclen;
+    *err=0;
 
-	next_seclen= ( msgbegin+msglen )- ( secbegin+seclen );
+    next_seclen= ( msgbegin+msglen )- ( secbegin+seclen );
 
-	if ( next_seclen < 5 )
-	{
-		if ( ( next_seclen > 3 ) && !strncmp ( ( char* ) secbegin,"7777",4 ) )
-			*err=GRIB_SUCCESS;
-		else *err=GRIB_7777_NOT_FOUND;
-		return 0;
-	}
+    if ( next_seclen < 5 )
+    {
+        if ( ( next_seclen > 3 ) && !strncmp ( ( char* ) secbegin,"7777",4 ) )
+            *err=GRIB_SUCCESS;
+        else *err=GRIB_7777_NOT_FOUND;
+        return 0;
+    }
 
-	secbegin+=seclen;
+    secbegin+=seclen;
 
-	return 1;
+    return 1;
 }
 
 static void grib2_build_message ( grib_context* context,unsigned char* sections[],size_t sections_len[],void** data,size_t* len )
 {
-	int i=0;
-	char* theEnd="7777";
-	unsigned char* sec0;
-	unsigned char* p=0;
-	size_t msglen=0;
-	long bitp=64;
-	if ( !sections[0] )
-	{
-		*data=NULL;
-		return;
-	}
-	sec0=sections[0];
-	for ( i=0;i<8;i++ ) msglen+= sections_len[i];
-	msglen+=4;
-	if ( *len<msglen ) msglen=*len;
-
-	*data= ( unsigned char* ) grib_context_malloc ( context,msglen );
-	p=(unsigned char*)*data;
-
-	for ( i=0;i<8;i++ )
-	{
-		if ( sections[i] )
-		{
-			memcpy ( p,sections[i],sections_len[i] );
-			p+=sections_len[i];
-		}
-	}
-
-	memcpy ( p,theEnd,4 );
-
-	grib_encode_unsigned_long ( (unsigned char*)*data,msglen,&bitp,64 );
-
-	*len=msglen;
+    int i=0;
+    char* theEnd="7777";
+    unsigned char* p=0;
+    size_t msglen=0;
+    long bitp=64;
+    if ( !sections[0] )
+    {
+        *data=NULL;
+        return;
+    }
+
+    for ( i=0;i<8;i++ ) msglen+= sections_len[i];
+    msglen+=4;
+    if ( *len<msglen ) msglen=*len;
+
+    *data= ( unsigned char* ) grib_context_malloc ( context,msglen );
+    p=(unsigned char*)*data;
+
+    for ( i=0;i<8;i++ )
+    {
+        if ( sections[i] )
+        {
+            memcpy ( p,sections[i],sections_len[i] );
+            p+=sections_len[i];
+        }
+    }
+
+    memcpy ( p,theEnd,4 );
+
+    grib_encode_unsigned_long ( (unsigned char*)*data,msglen,&bitp,64 );
+
+    *len=msglen;
 }
 
 void grib_multi_support_on ( grib_context* c )
 {
-	if ( !c ) c=grib_context_get_default();
-	c->multi_support_on=1;
+    if ( !c ) c=grib_context_get_default();
+    c->multi_support_on=1;
 }
 
 void grib_multi_support_off ( grib_context* c )
 {
-	if ( !c ) c=grib_context_get_default();
-	c->multi_support_on=0;
+    if ( !c ) c=grib_context_get_default();
+    c->multi_support_on=0;
 }
 
 /* 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;
-	while ( gm ) {
-		if ( gm->file == f ) {
-			gm->file = NULL;
-		}
-		gm=gm->next;
-	}
+    grib_multi_support* gm = NULL;
+    if ( !c ) c = grib_context_get_default();
+    gm = c->multi_support;
+    while ( gm ) {
+        if ( gm->file == f ) {
+            gm->file = NULL;
+        }
+        gm=gm->next;
+    }
 }
 
 void grib_gts_header_on ( grib_context* c )
 {
-	if ( !c ) c=grib_context_get_default();
-	c->gts_header_on=1;
+    if ( !c ) c=grib_context_get_default();
+    c->gts_header_on=1;
 }
 
 void grib_gts_header_off ( grib_context* c )
 {
-	if ( !c ) c=grib_context_get_default();
-	c->gts_header_on=0;
+    if ( !c ) c=grib_context_get_default();
+    c->gts_header_on=0;
 }
 
 int grib_get_gribex_mode ( grib_context* c)
 {
-	if ( !c ) c=grib_context_get_default();
-	return c->gribex_mode_on;
+    if ( !c ) c=grib_context_get_default();
+    return c->gribex_mode_on;
 }
 
 void grib_gribex_mode_on ( grib_context* c )
 {
-	if ( !c ) c=grib_context_get_default();
-	c->gribex_mode_on=1;
+    if ( !c ) c=grib_context_get_default();
+    c->gribex_mode_on=1;
 }
 
 void grib_gribex_mode_off ( grib_context* c )
 {
-	if ( !c ) c=grib_context_get_default();
-	c->gribex_mode_on=0;
+    if ( !c ) c=grib_context_get_default();
+    c->gribex_mode_on=0;
 }
 
 static grib_multi_support* grib_get_multi_support ( grib_context* c, FILE* f )
 {
-	int i=0;
-	grib_multi_support* gm=c->multi_support;
-	grib_multi_support* prev=NULL;
-
-	while ( gm )
-	{
-		if ( gm->file == f ) return gm;
-		prev=gm;
-		gm=gm->next;
-	}
-
-	if ( !gm )
-	{
-		gm=grib_multi_support_new ( c );
-		if ( !c->multi_support ) c->multi_support=gm;
-		else prev->next=gm;
-	}
-
-	gm->next=0;
-	if ( gm->message ) grib_context_free ( c,gm->message );
-	gm->message=NULL;
-	gm->section_number=0;
-	gm->sections_length[0]=16;
-	for ( i=1;i<8;i++ ) gm->sections_length[i]=0;
-	gm->sections_length[8]=4;
-	gm->file=f;
-
-	return gm;
+    int i=0;
+    grib_multi_support* gm=c->multi_support;
+    grib_multi_support* prev=NULL;
+
+    while ( gm )
+    {
+        if ( gm->file == f ) return gm;
+        prev=gm;
+        gm=gm->next;
+    }
+
+    if ( !gm )
+    {
+        gm=grib_multi_support_new ( c );
+        if ( !c->multi_support ) c->multi_support=gm;
+        else prev->next=gm;
+    }
+
+    gm->next=0;
+    if ( gm->message ) grib_context_free ( c,gm->message );
+    gm->message=NULL;
+    gm->section_number=0;
+    gm->sections_length[0]=16;
+    for ( i=1;i<8;i++ ) gm->sections_length[i]=0;
+    gm->sections_length[8]=4;
+    gm->file=f;
+
+    return gm;
 }
 
 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 ( gm->file ) fclose ( gm->file );
-		if ( gm->message ) grib_context_free ( c,gm->message );
-		gm->message=NULL;
-		for ( i=0;i<8;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_multi_support* gm=c->multi_support;
+    grib_multi_support* next=NULL;
+    int i=0;
+    while ( next )
+    {
+        next=gm->next;
+        if ( gm->file ) fclose ( gm->file );
+        if ( gm->message ) grib_context_free ( c,gm->message );
+        gm->message=NULL;
+        for ( i=0;i<8;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;
+    }
 }
 
 static grib_multi_support* grib_multi_support_new ( grib_context* c )
 {
-	int i=0;
-	grib_multi_support* gm=
-			( grib_multi_support* ) grib_context_malloc_clear ( c,sizeof ( grib_multi_support ) );
-	gm->file=NULL;
-	gm->message=NULL;
-	gm->message_length=0;
-	gm->bitmap_section=NULL;
-	gm->bitmap_section_length=0;
-	gm->section_number=0;
-	gm->next=0;
-	gm->sections_length[0]=16;
-	for ( i=1;i<8;i++ ) gm->sections_length[i]=0;
-	gm->sections_length[8]=4;
-
-	return gm;
+    int i=0;
+    grib_multi_support* gm=
+            ( grib_multi_support* ) grib_context_malloc_clear ( c,sizeof ( grib_multi_support ) );
+    gm->file=NULL;
+    gm->message=NULL;
+    gm->message_length=0;
+    gm->bitmap_section=NULL;
+    gm->bitmap_section_length=0;
+    gm->section_number=0;
+    gm->next=0;
+    gm->sections_length[0]=16;
+    for ( i=1;i<8;i++ ) gm->sections_length[i]=0;
+    gm->sections_length[8]=4;
+
+    return gm;
 }
diff --git a/src/grib_hash_array.c b/src/grib_hash_array.c
index a614830..960b571 100644
--- a/src/grib_hash_array.c
+++ b/src/grib_hash_array.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_hash_keys.c b/src/grib_hash_keys.c
index 2b8a500..0596244 100644
--- a/src/grib_hash_keys.c
+++ b/src/grib_hash_keys.c
@@ -51,9 +51,7 @@ struct grib_keys_hash { char* name; int id;};
 #endif
 #endif
 static unsigned int
-hash_keys (str, len)
-     register const char *str;
-     register unsigned int len;
+hash_keys (const char *str, unsigned int len)
 {
   static unsigned short asso_values[] =
     {
@@ -7171,9 +7169,7 @@ static struct grib_keys_hash wordlist[] =
 #endif
 #endif
 struct grib_keys_hash *
-grib_keys_hash_get (str, len)
-     register const char *str;
-     register unsigned int len;
+grib_keys_hash_get (const char *str, unsigned int len)
 {
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
     {
@@ -7190,7 +7186,7 @@ grib_keys_hash_get (str, len)
   return 0;
 }
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -7476,6 +7472,21 @@ static void init() {
   pthread_mutexattr_destroy(&attr);
 
 }
+#elif GRIB_OMP_THREADS
+static int once = 0;
+static omp_nest_lock_t mutex;
+
+static void init()
+{
+    GRIB_OMP_CRITICAL(lock_grib_hash_keys_c)
+    {
+        if (once == 0)
+        {
+            omp_init_nest_lock(&mutex);
+            once = 1;
+        }
+    }
+}
 #endif
 struct grib_itrie {
   grib_itrie* next[SIZE];
@@ -7494,7 +7505,7 @@ grib_itrie *grib_hash_keys_new(grib_context* c,int* count) {
 }
 
 void grib_hash_keys_delete(grib_itrie *t) {
-  GRIB_PTHREAD_ONCE(&once,&init)
+  GRIB_MUTEX_INIT_ONCE(&once,&init)
   GRIB_MUTEX_LOCK(&mutex)
 
   if(t)  {
@@ -7524,7 +7535,7 @@ int grib_hash_keys_get_id(grib_itrie* t,const char* key)
 
   /* printf("+++ \"%s\"\n",key); */
 
-  GRIB_PTHREAD_ONCE(&once,&init)
+  GRIB_MUTEX_INIT_ONCE(&once,&init)
   GRIB_MUTEX_LOCK(&mutex)
 
   while(*k && t)  t = t->next[mapping[(int)*k++]];
@@ -7545,8 +7556,7 @@ int grib_hash_keys_insert(grib_itrie* t,const char* key)
   grib_itrie *last = t;
   int* count;
 
-  GRIB_PTHREAD_ONCE(&once,&init)
-
+  GRIB_MUTEX_INIT_ONCE(&once,&init)
   GRIB_MUTEX_LOCK(&mutex)
 
   count=t->count;
diff --git a/src/grib_header_compute.c b/src/grib_header_compute.c
index 24e4799..9948362 100644
--- a/src/grib_header_compute.c
+++ b/src/grib_header_compute.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -128,336 +128,345 @@ typedef real (*fop1)(real);
 typedef real (*fop2)(real,real);
 
 
-static void advance(char** form) {
-  (*form)++;
-  while(isspace(**form)) (*form)++;
+static void advance(char** form)
+{
+    (*form)++;
+    while(isspace(**form)) (*form)++;
 }
 
-static grib_math *readatom(grib_context* c,char** form,int *err) {
-  grib_math *p;
-  int i;
-  char buf[1024];
-
-  switch(**form)
-  {
-  case '(':
-    advance(form);
-    p = reador(c,form,err);
-    if(**form != ')') {
-      grib_context_log(c, GRIB_LOG_ERROR,"Formula: missing )");
-      *err = GRIB_INTERNAL_ERROR;
-    }
-    advance(form);
-    break;
-
-  case '-':
-    p        = (grib_math*)grib_context_malloc(c,sizeof(grib_math));
-    p->arity = 1;
-    p->name  = strdup("neg");
-    advance(form);
-    p->left  = readatom(c,form,err);
-    break;
-
-  case '!':
-    p        = (grib_math*)grib_context_malloc(c,sizeof(grib_math));
-    p->arity = 1;
-    p->name  = strdup("neg");
-    advance(form);
-    p->left  = readatom(c,form,err);
-    break;
-
-  case '\0':
-    grib_context_log(c, GRIB_LOG_ERROR,"Formula: syntax error");
-    *err = GRIB_INTERNAL_ERROR;
-    return NULL;
-    /*NOTREACHED*/
-    break;
-
-  default:
-    i = 0;
-
-    if(**form == '\'' || **form == '"')
-    {
-      char c = *((*form)++);
-      while(**form && **form != c)
-        buf[i++] = *((*form)++);
-        if(**form) (*form)++;
-    } else
-      while(isalpha(**form)||isdigit(**form)
-            || **form =='.' || **form == '_')
-                buf[i++] = *((*form)++);
-
-    buf[i] = 0;
-    if(isspace(**form)) advance(form);
-
-    p = (grib_math*)grib_context_malloc(c,sizeof(grib_math));
-    p->name  = strdup(buf);
-    p->left=0;
+static grib_math *readatom(grib_context* c,char** form,int *err)
+{
+    grib_math *p;
+    int i;
+    char buf[1024];
 
     switch(**form)
     {
     case '(':
-      advance(form);
-      p->arity = 0;
-      p->left = readlist(c,form,&p->arity,err);
-      if(**form != ')')
-      {
-        grib_context_log(c, GRIB_LOG_ERROR,"Formula: missing )");
-        *err = GRIB_INTERNAL_ERROR;
-      }
-      advance(form);
-      break;
-
-    case '[':
-      advance(form);
-      p->arity = 0;
-      p->left = readlist(c,form,&p->arity,err);
-      if(**form != ']') {
-        grib_context_log(c, GRIB_LOG_ERROR,"Formula: missing ]");
+        advance(form);
+        p = reador(c,form,err);
+        if(**form != ')') {
+            grib_context_log(c, GRIB_LOG_ERROR,"Formula: missing )");
+            *err = GRIB_INTERNAL_ERROR;
+        }
+        advance(form);
+        break;
+
+    case '-':
+        p        = (grib_math*)grib_context_malloc(c,sizeof(grib_math));
+        p->arity = 1;
+        p->name  = strdup("neg");
+        advance(form);
+        p->left  = readatom(c,form,err);
+        break;
+
+    case '!':
+        p        = (grib_math*)grib_context_malloc(c,sizeof(grib_math));
+        p->arity = 1;
+        p->name  = strdup("neg");
+        advance(form);
+        p->left  = readatom(c,form,err);
+        break;
+
+    case '\0':
+        grib_context_log(c, GRIB_LOG_ERROR,"Formula: syntax error");
         *err = GRIB_INTERNAL_ERROR;
-      }
-      p->arity = -p->arity;
-      advance(form);
-      break;
+        return NULL;
+        /*NOTREACHED*/
+        break;
 
     default:
-      p->arity = 0;
-      break;
-    }
+        i = 0;
 
-    break;
-  }
+        if(**form == '\'' || **form == '"')
+        {
+            char c = *((*form)++);
+            while(**form && **form != c)
+                buf[i++] = *((*form)++);
+            if(**form) (*form)++;
+        } else
+            while(isalpha(**form)||isdigit(**form)
+                    || **form =='.' || **form == '_')
+                buf[i++] = *((*form)++);
+
+        buf[i] = 0;
+        if(isspace(**form)) advance(form);
+
+        p = (grib_math*)grib_context_malloc(c,sizeof(grib_math));
+        p->name  = strdup(buf);
+        p->left=0;
+
+        switch(**form)
+        {
+        case '(':
+            advance(form);
+            p->arity = 0;
+            p->left = readlist(c,form,&p->arity,err);
+            if(**form != ')')
+            {
+                grib_context_log(c, GRIB_LOG_ERROR,"Formula: missing )");
+                *err = GRIB_INTERNAL_ERROR;
+            }
+            advance(form);
+            break;
+
+        case '[':
+            advance(form);
+            p->arity = 0;
+            p->left = readlist(c,form,&p->arity,err);
+            if(**form != ']') {
+                grib_context_log(c, GRIB_LOG_ERROR,"Formula: missing ]");
+                *err = GRIB_INTERNAL_ERROR;
+            }
+            p->arity = -p->arity;
+            advance(form);
+            break;
+
+        default:
+            p->arity = 0;
+            break;
+        }
+
+        break;
+    }
 
-  return p;
+    return p;
 }
 
 static char *opname(char *p,int n)
 {
-  char buf[5];
-  strncpy(buf,p,n);
-  buf[n] = 0;
-  return strdup(buf);
+    char buf[5];
+    strncpy(buf,p,n);
+    buf[n] = 0;
+    return strdup(buf);
 }
 
 void print_math(grib_math *m)
 {
-  if(m)
-  {
-    putchar('(');
-    print_math(m->left);
-    printf("%s",m->name);
-    print_math(m->right);
-    putchar(')');
-  }
+    if(m)
+    {
+        putchar('(');
+        print_math(m->left);
+        printf("%s",m->name);
+        print_math(m->right);
+        putchar(')');
+    }
 }
 
 static grib_math *readpower(grib_context* c,char** form,int *err)
 {
-  grib_math *p = readatom(c,form,err);
+    grib_math *p = readatom(c,form,err);
 
 
-  while(**form == '^' || (**form == '*' && *(*form + 1) == '*') )
-  {
-    grib_math *q  = (grib_math*)grib_context_malloc(c,sizeof(grib_math));
-    q->left  = p;
-    q->arity = 2;
+    while(**form == '^' || (**form == '*' && *(*form + 1) == '*') )
+    {
+        grib_math *q  = (grib_math*)grib_context_malloc(c,sizeof(grib_math));
+        q->left  = p;
+        q->arity = 2;
 
-    if(**form == '*') { advance(form); **form = '^'; }
+        if(**form == '*') { advance(form); **form = '^'; }
 
-    q->name     = opname(*form,1);
-    advance(form);
-    q->right    = readatom(c,form,err);
-    p = q;
-  }
-  return p;
+        q->name     = opname(*form,1);
+        advance(form);
+        q->right    = readatom(c,form,err);
+        p = q;
+    }
+    return p;
 }
 
 static grib_math *readlist(grib_context* c,char** form,int *n,int * err)
 {
-  grib_math *p;
+    grib_math *p;
 
-  if(**form == ')') return NULL;
+    if(**form == ')') return NULL;
 
-  p  = readtest(c,form,err);
-  *n = 1;
+    p  = readtest(c,form,err);
+    *n = 1;
 
-  while(**form == ',')  {
-    grib_math *q = (grib_math*)grib_context_malloc(c,sizeof(grib_math));
+    while(**form == ',')  {
+        grib_math *q = (grib_math*)grib_context_malloc(c,sizeof(grib_math));
 
-    (*n)++;
+        (*n)++;
 
-    q->left  = p;
+        q->left  = p;
 
-    advance(form);
+        advance(form);
 
-    q->right    = readtest(c,form,err);
+        q->right    = readtest(c,form,err);
 
-    p = q;
-  }
-  return p;
+        p = q;
+    }
+    return p;
 }
 
-static grib_math *readfactor(grib_context* c,char** form,int* err) {
-  grib_math *p = readpower(c,form,err);
+static grib_math *readfactor(grib_context* c,char** form,int* err)
+{
+    grib_math *p = readpower(c,form,err);
 
-  while(**form == '*' || **form == '/')  {
-    grib_math *q = (grib_math*)grib_context_malloc(c,sizeof(grib_math));
+    while(**form == '*' || **form == '/')  {
+        grib_math *q = (grib_math*)grib_context_malloc(c,sizeof(grib_math));
 
-    q->arity    = 2;
-    q->left     = p;
-    q->name     = opname(*form,1);
+        q->arity    = 2;
+        q->left     = p;
+        q->name     = opname(*form,1);
 
-    advance(form);
+        advance(form);
 
-    q->right    = readpower(c,form,err);
+        q->right    = readpower(c,form,err);
 
-    p = q;
-  }
-  return p;
+        p = q;
+    }
+    return p;
 }
 
-static grib_math *readterm(grib_context* c,char** form,int* err) {
-  grib_math *p = readfactor(c,form,err);
-  while(**form == '+' || **form == '-' )  {
-    grib_math *q = (grib_math*)grib_context_malloc(c,sizeof(grib_math));
+static grib_math *readterm(grib_context* c,char** form,int* err)
+{
+    grib_math *p = readfactor(c,form,err);
+    while(**form == '+' || **form == '-' )  {
+        grib_math *q = (grib_math*)grib_context_malloc(c,sizeof(grib_math));
 
-    q->arity    = 2;
-    q->left     = p;
-    q->name     = opname(*form,1);
+        q->arity    = 2;
+        q->left     = p;
+        q->name     = opname(*form,1);
 
-    advance(form);
+        advance(form);
 
-    q->right    = readfactor(c,form,err);
+        q->right    = readfactor(c,form,err);
 
-    p = q;
+        p = q;
 
-  }
-  return p;
+    }
+    return p;
 }
 
-static grib_math *readtest(grib_context* c,char** form,int* err) {
-  grib_math *p = readterm(c,form,err);
-  while(**form == '<' || **form == '>' || **form == '=')  {
-    grib_math *q = (grib_math*)grib_context_malloc(c,sizeof(grib_math));
-    char *x = *form;
-    int   n = 1;
+static grib_math *readtest(grib_context* c,char** form,int* err)
+{
+    grib_math *p = readterm(c,form,err);
+    while(**form == '<' || **form == '>' || **form == '=')  {
+        grib_math *q = (grib_math*)grib_context_malloc(c,sizeof(grib_math));
+        char *x = *form;
+        int   n = 1;
 
-    q->arity    = 2;
-    q->left     = p;
+        q->arity    = 2;
+        q->left     = p;
 
-    advance(form);
-    if(**form == '=' || **form == '>') {
-      n = 2;
-      advance(form);
-    }
+        advance(form);
+        if(**form == '=' || **form == '>') {
+            n = 2;
+            advance(form);
+        }
 
-    q->name = opname(x,n);
+        q->name = opname(x,n);
 
-    q->right    = readterm(c,form,err);
+        q->right    = readterm(c,form,err);
 
-    p = q;
+        p = q;
 
-  }
-  return p;
+    }
+    return p;
 }
 
-static grib_math *readand(grib_context* c,char** form,int* err) {
-  grib_math *p = readtest(c,form,err);
-  while(**form == '&' )  {
-    grib_math *q = (grib_math*)grib_context_malloc(c,sizeof(grib_math));
-    char *x = *form;
-    int   n = 1;
+static grib_math *readand(grib_context* c,char** form,int* err)
+{
+    grib_math *p = readtest(c,form,err);
+    while(**form == '&' )  {
+        grib_math *q = (grib_math*)grib_context_malloc(c,sizeof(grib_math));
+        char *x = *form;
+        int   n = 1;
 
-    q->arity    = 2;
-    q->left     = p;
+        q->arity    = 2;
+        q->left     = p;
 
-    advance(form);
-    if(**form == '&') {
-      n = 2;
-      advance(form);
-    }
+        advance(form);
+        if(**form == '&') {
+            n = 2;
+            advance(form);
+        }
 
-    q->name = opname(x,n);
+        q->name = opname(x,n);
 
-    q->right    = readtest(c,form,err);
+        q->right    = readtest(c,form,err);
 
-    p = q;
+        p = q;
 
-  }
-  return p;
+    }
+    return p;
 }
 
-static grib_math *reador(grib_context* c,char** form,int* err) {
-  grib_math *p = readand(c,form,err);
-  while(**form == '|' )  {
-    grib_math *q = (grib_math*)grib_context_malloc(c,sizeof(grib_math));
-    char *x = *form;
-    int   n = 1;
+static grib_math *reador(grib_context* c,char** form,int* err)
+{
+    grib_math *p = readand(c,form,err);
+    while(**form == '|' )  {
+        grib_math *q = (grib_math*)grib_context_malloc(c,sizeof(grib_math));
+        char *x = *form;
+        int   n = 1;
 
-    q->arity    = 2;
-    q->left     = p;
+        q->arity    = 2;
+        q->left     = p;
 
-    advance(form);
-    if(**form == '|' ) {
-      n = 2;
-      advance(form);
-    }
+        advance(form);
+        if(**form == '|' ) {
+            n = 2;
+            advance(form);
+        }
 
-    q->name = opname(x,n);
+        q->name = opname(x,n);
 
-    q->right    = readand(c,form,err);
+        q->right    = readand(c,form,err);
 
-    p = q;
+        p = q;
 
-  }
-  return p;
+    }
+    return p;
 }
 
-grib_math *grib_math_clone(grib_context* c,grib_math *m) {
-  grib_math *n = NULL;
-  if(m)  {
-    n = (grib_math*)grib_context_malloc(c,sizeof(grib_math));
-    n->arity = m->arity;
-    n->name  = strdup(m->name);
-    n->left  = grib_math_clone(c,m->left);
-    n->right = grib_math_clone(c,m->right);
-  }
-  return n;
+grib_math *grib_math_clone(grib_context* c,grib_math *m)
+{
+    grib_math *n = NULL;
+    if(m)  {
+        n = (grib_math*)grib_context_malloc(c,sizeof(grib_math));
+        n->arity = m->arity;
+        n->name  = strdup(m->name);
+        n->left  = grib_math_clone(c,m->left);
+        n->right = grib_math_clone(c,m->right);
+    }
+    return n;
 }
 
-void grib_math_delete (grib_context* c,grib_math* m) {
-     grib_math *left=0,*right=0;
-     left=m->left;
-     right=m->right;
-     if (m->name) free(m->name);
-     grib_context_free(c,m);
-     if (left) grib_math_delete(c,left);
-     if (right) grib_math_delete(c,right);
+void grib_math_delete (grib_context* c,grib_math* m)
+{
+    grib_math *left=0,*right=0;
+    left=m->left;
+    right=m->right;
+    if (m->name) free(m->name);
+    grib_context_free(c,m);
+    if (left) grib_math_delete(c,left);
+    if (right) grib_math_delete(c,right);
 }
 
-grib_math *grib_math_new(grib_context* c,const char* formula,int *err) {
-  grib_math *x;
-  char* f=0;
-  char* fsave=0;
+grib_math *grib_math_new(grib_context* c,const char* formula,int *err)
+{
+    grib_math *x;
+    char* f=0;
+    char* fsave=0;
 
-  *err=0;
+    *err=0;
 
-  if (!formula) {*err=GRIB_INVALID_ARGUMENT;return NULL;}
+    if (!formula) {*err=GRIB_INVALID_ARGUMENT;return NULL;}
 
-  f=strdup(formula);
-  fsave=f;
+    f=strdup(formula);
+    fsave=f;
 
-  x = reador(c,&f,err);
-  if(*err!=GRIB_SUCCESS) return NULL;
+    x = reador(c,&f,err);
+    if(*err!=GRIB_SUCCESS) return NULL;
 
-  if(*f) {
-    grib_context_log(c, GRIB_LOG_ERROR,
-          "grib_math_new : Part of the formula was not processed: '%s'",f);
-    return NULL;
-  }
+    if(*f) {
+        grib_context_log(c, GRIB_LOG_ERROR,
+                "grib_math_new : Part of the formula was not processed: '%s'",f);
+        return NULL;
+    }
 
-  free(fsave);
+    free(fsave);
 
-  return x;
+    return x;
 }
-
diff --git a/src/grib_iarray.c b/src/grib_iarray.c
index aaf2ec0..1376f52 100644
--- a/src/grib_iarray.c
+++ b/src/grib_iarray.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -16,7 +16,8 @@
 
 #include "grib_api_internal.h"
 
-grib_iarray* grib_iarray_new_from_array(grib_context* c,long* a,size_t size) {
+grib_iarray* grib_iarray_new_from_array(grib_context* c,long* a,size_t size)
+{
     size_t i;
     grib_iarray* v;
 
@@ -30,37 +31,40 @@ grib_iarray* grib_iarray_new_from_array(grib_context* c,long* a,size_t size) {
     return v;
 }
 
-grib_iarray* grib_iarray_new(grib_context* c,size_t size,size_t incsize) {
-  grib_iarray* v=NULL;
-
-  if (!c) c=grib_context_get_default();
-
-  v=(grib_iarray*)grib_context_malloc(c,sizeof(grib_iarray));
-  if (!v) {
-    grib_context_log(c,GRIB_LOG_ERROR,
-          "grib_iarray_new unable to allocate %d bytes\n",sizeof(grib_iarray));
-    return NULL;
-  }
-  v->context=c;
-  v->size=size;
-  v->n=0;
-  v->incsize=incsize;
-  v->v=(long*)grib_context_malloc(c,sizeof(long)*size);
-  v->number_of_pop_front=0;
-  if (!v->v) {
-    grib_context_log(c,GRIB_LOG_ERROR,
-          "grib_iarray_new unable to allocate %d bytes\n",sizeof(long)*size);
-    return NULL;
-  }
-  return v;
+grib_iarray* grib_iarray_new(grib_context* c,size_t size,size_t incsize)
+{
+    grib_iarray* v=NULL;
+
+    if (!c) c=grib_context_get_default();
+
+    v=(grib_iarray*)grib_context_malloc(c,sizeof(grib_iarray));
+    if (!v) {
+        grib_context_log(c,GRIB_LOG_ERROR,
+                "grib_iarray_new unable to allocate %d bytes\n",sizeof(grib_iarray));
+        return NULL;
+    }
+    v->context=c;
+    v->size=size;
+    v->n=0;
+    v->incsize=incsize;
+    v->v=(long*)grib_context_malloc(c,sizeof(long)*size);
+    v->number_of_pop_front=0;
+    if (!v->v) {
+        grib_context_log(c,GRIB_LOG_ERROR,
+                "grib_iarray_new unable to allocate %d bytes\n",sizeof(long)*size);
+        return NULL;
+    }
+    return v;
 }
 
-long grib_iarray_pop(grib_iarray* a) {
+long grib_iarray_pop(grib_iarray* a)
+{
     a->n-=1;
     return a->v[a->n];
 }
 
-long grib_iarray_pop_front(grib_iarray* a) {
+long grib_iarray_pop_front(grib_iarray* a)
+{
     long v=a->v[0];
     /* size_t i=0; */
     if (a->n==0) Assert(0);
@@ -72,123 +76,132 @@ long grib_iarray_pop_front(grib_iarray* a) {
     return v;
 }
 
-grib_iarray* grib_iarray_resize_to(grib_iarray* v,size_t newsize) {
-  long* newv;
-  size_t i;
-  grib_context* c=v->context;
+grib_iarray* grib_iarray_resize_to(grib_iarray* v,size_t newsize)
+{
+    long* newv;
+    size_t i;
+    grib_context* c=v->context;
 
-  if (newsize<v->size) return v;
+    if (newsize<v->size) return v;
 
-  if (!c) c=grib_context_get_default();
+    if (!c) c=grib_context_get_default();
 
-  newv=(long*)grib_context_malloc_clear(c,newsize*sizeof(long));
-  if (!newv) {
-    grib_context_log(c,GRIB_LOG_ERROR,
-          "grib_iarray_resize unable to allocate %d bytes\n",sizeof(long)*newsize);
-    return NULL;
-  }
+    newv=(long*)grib_context_malloc_clear(c,newsize*sizeof(long));
+    if (!newv) {
+        grib_context_log(c,GRIB_LOG_ERROR,
+                "grib_iarray_resize unable to allocate %d bytes\n",sizeof(long)*newsize);
+        return NULL;
+    }
 
-  for (i=0;i<v->n;i++) newv[i]=v->v[i];
+    for (i=0;i<v->n;i++) newv[i]=v->v[i];
 
-  v->v-=v->number_of_pop_front;
-  grib_context_free(c,v->v);
+    v->v-=v->number_of_pop_front;
+    grib_context_free(c,v->v);
 
-  v->v=newv;
-  v->size=newsize;
-  v->number_of_pop_front=0;
+    v->v=newv;
+    v->size=newsize;
+    v->number_of_pop_front=0;
 
-  return v;
+    return v;
 }
 
-grib_iarray* grib_iarray_resize(grib_iarray* v) {
-  int newsize=v->incsize+v->size;
+grib_iarray* grib_iarray_resize(grib_iarray* v)
+{
+    int newsize=v->incsize+v->size;
 
-  return grib_iarray_resize_to(v,newsize);
+    return grib_iarray_resize_to(v,newsize);
 }
 
-grib_iarray* grib_iarray_push(grib_iarray* v,long val) {
-  size_t start_size=100;
-  size_t start_incsize=100;
+grib_iarray* grib_iarray_push(grib_iarray* v,long val)
+{
+    size_t start_size=100;
+    size_t start_incsize=100;
 
-  if (!v) v=grib_iarray_new(0,start_size,start_incsize);
+    if (!v) v=grib_iarray_new(0,start_size,start_incsize);
 
-  if (v->n >= v->size-v->number_of_pop_front)
-    v=grib_iarray_resize(v);
+    if (v->n >= v->size-v->number_of_pop_front)
+        v=grib_iarray_resize(v);
 
-  v->v[v->n]=val;
-  v->n++;
-  return v;
+    v->v[v->n]=val;
+    v->n++;
+    return v;
 }
 
-grib_iarray* grib_iarray_push_front(grib_iarray* v,long val) {
-  size_t start_size=100;
-  size_t start_incsize=100;
-  int i;
-  if (!v) v=grib_iarray_new(0,start_size,start_incsize);
-
-  if (v->number_of_pop_front) {
-    v->v--;
-    v->number_of_pop_front--;
-  } else {
-    if (v->n >= v->size) v=grib_iarray_resize(v);
-    for (i=v->n;i>0;i--) v[i]=v[i-1];
-  }
-  v->v[0]=val;
-  v->n++;
-
-  return v;
-}
+grib_iarray* grib_iarray_push_front(grib_iarray* v,long val)
+{
+    size_t start_size=100;
+    size_t start_incsize=100;
+    int i;
+    if (!v) v=grib_iarray_new(0,start_size,start_incsize);
+
+    if (v->number_of_pop_front) {
+        v->v--;
+        v->number_of_pop_front--;
+    } else {
+        if (v->n >= v->size) v=grib_iarray_resize(v);
+        for (i=v->n;i>0;i--) v[i]=v[i-1];
+    }
+    v->v[0]=val;
+    v->n++;
 
-grib_iarray* grib_iarray_push_array(grib_iarray* v,long *val,size_t size) {
-  size_t start_size=size;
-  size_t start_incsize=100;
-  long* vp=0;
-  long* valp=val;
-  if (!v) v=grib_iarray_new(0,start_size,start_incsize);
-
-  v=grib_iarray_resize_to(v,size+v->n);
-  vp=v->v+v->n+v->number_of_pop_front;
-  v->n+=size;
-  while (size) {
-      *(vp++)=*(valp++);
-      size--;
-  }
-  return v;
+    return v;
 }
 
+grib_iarray* grib_iarray_push_array(grib_iarray* v,long *val,size_t size)
+{
+    size_t start_size=size;
+    size_t start_incsize=100;
+    long* vp=0;
+    long* valp=val;
+    if (!v) v=grib_iarray_new(0,start_size,start_incsize);
+
+    v=grib_iarray_resize_to(v,size+v->n);
+    vp=v->v+v->n+v->number_of_pop_front;
+    v->n+=size;
+    while (size) {
+        *(vp++)=*(valp++);
+        size--;
+    }
+    return v;
+}
 
-long grib_iarray_get(grib_iarray* a,size_t i) {
-  return a->v[i];
+long grib_iarray_get(grib_iarray* a,size_t i)
+{
+    return a->v[i];
 }
 
-void grib_iarray_set(grib_iarray* a,size_t i,long v) {
-  a->v[i]=v;
+void grib_iarray_set(grib_iarray* a,size_t i,long v)
+{
+    a->v[i]=v;
 }
 
-void grib_iarray_delete(grib_iarray* v) {
-  grib_context* c;
+void grib_iarray_delete(grib_iarray* v)
+{
+    grib_context* c;
 
-  if (!v) return;
-  c=v->context;
+    if (!v) return;
+    c=v->context;
 
-  grib_iarray_delete_array(v);
+    grib_iarray_delete_array(v);
 
-  grib_context_free(c,v);
+    grib_context_free(c,v);
 }
 
-void grib_iarray_delete_array(grib_iarray* v) {
-  grib_context* c;
+void grib_iarray_delete_array(grib_iarray* v)
+{
+    grib_context* c;
 
-  if (!v) return;
-  c=v->context;
+    if (!v) return;
+    c=v->context;
 
-  if (v->v) {
-    long* vv = v->v - v->number_of_pop_front;
-    grib_context_free(c,vv);
-  }
+    if (v->v) {
+        long* vv = v->v - v->number_of_pop_front;
+        grib_context_free(c,vv);
+    }
 }
 
-long* grib_iarray_get_array(grib_iarray* v) {
+long* grib_iarray_get_array(grib_iarray* v)
+{
     long* vv;
     size_t i;
     grib_context* c=grib_context_get_default();
@@ -199,5 +212,4 @@ long* grib_iarray_get_array(grib_iarray* v) {
     return vv;
 }
 
-size_t grib_iarray_used_size(grib_iarray* v) {return v->n;}
-
+size_t grib_iarray_used_size(grib_iarray* v) {return v==NULL ? 0 : v->n;}
diff --git a/src/grib_ibmfloat.c b/src/grib_ibmfloat.c
index 320c340..69c5fbb 100644
--- a/src/grib_ibmfloat.c
+++ b/src/grib_ibmfloat.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -10,7 +10,33 @@
 
 #include "grib_api_internal.h"
 
-static void init_ibm_table();
+#if GRIB_PTHREADS
+static pthread_once_t once  = PTHREAD_ONCE_INIT;
+static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
+
+static void init() {
+    pthread_mutexattr_t attr;
+    pthread_mutexattr_init(&attr);
+    pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
+    pthread_mutex_init(&mutex,&attr);
+    pthread_mutexattr_destroy(&attr);
+}
+#elif GRIB_OMP_THREADS
+static int once = 0;
+static omp_nest_lock_t mutex;
+
+static void init()
+{
+    GRIB_OMP_CRITICAL(lock_grib_ibmfloat_c)
+    {
+        if (once == 0)
+        {
+            omp_init_nest_lock(&mutex);
+            once = 1;
+        }
+    }
+}
+#endif
 
 typedef struct ibm_table_t ibm_table_t;
 
@@ -43,6 +69,16 @@ static void init_ibm_table()
     }
 }
 
+static void init_table_if_needed()
+{
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
+    GRIB_MUTEX_LOCK(&mutex)
+
+    if (!ibm_table.inited) init_ibm_table();
+
+    GRIB_MUTEX_UNLOCK(&mutex)
+}
+
 static void binary_search(double xx[], const unsigned long n, double x, unsigned long *j)
 {
     /*These routine works only on ascending ordered arrays*/
@@ -68,7 +104,7 @@ unsigned long grib_ibm_to_long(double x)
     unsigned long e=0;
     double rmmax=mmax+0.5;
 
-    if (!ibm_table.inited) init_ibm_table();
+    init_table_if_needed();
 
     /* printf("\ngrib_ibm_to_long: x=%.20e\n",x); */
     if (x < 0)  {  s  = 1; x = -x; }
@@ -117,7 +153,7 @@ double grib_ibmfloat_error(double x)
 {
     unsigned long e=0;
 
-    if (!ibm_table.inited) init_ibm_table();
+    init_table_if_needed();
 
     if (x < 0)  x = -x;
 
@@ -144,7 +180,7 @@ double grib_long_to_ibm(unsigned long x)
 
     double val = m;
 
-    if (!ibm_table.inited) init_ibm_table();
+    init_table_if_needed();
 
     /*if(x == 0) return 0;*/
     if (c==0 && m <= 1 ) return 0;
@@ -158,13 +194,13 @@ double grib_long_to_ibm(unsigned long x)
 
 double grib_ibm_table_e(unsigned long e)
 {
-    if (!ibm_table.inited) init_ibm_table();
+    init_table_if_needed();
     return ibm_table.e[e];
 }
 
 double grib_ibm_table_v(unsigned long e)
 {
-    if (!ibm_table.inited) init_ibm_table();
+    init_table_if_needed();
     return ibm_table.v[e];
 }
 
@@ -179,7 +215,7 @@ unsigned long grib_ibm_nearest_smaller_to_long(double x)
 
     if(x == 0) return 0;
 
-    if (!ibm_table.inited) init_ibm_table();
+    init_table_if_needed();
 
     l=grib_ibm_to_long(x);
     y=grib_long_to_ibm(l);
@@ -223,7 +259,7 @@ int grib_nearest_smaller_ibm_float(double a,double* ret)
 {
     unsigned long l=0;
 
-    if (!ibm_table.inited) init_ibm_table();
+    init_table_if_needed();
 
     if (a>ibm_table.vmax) return GRIB_INTERNAL_ERROR;
 
diff --git a/src/grib_ieeefloat.c b/src/grib_ieeefloat.c
index 76c04e7..3c1c21a 100644
--- a/src/grib_ieeefloat.c
+++ b/src/grib_ieeefloat.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -14,9 +14,35 @@
  ***************************************************************************/
 #include "grib_api_internal.h"
 
-#if 1
+#if GRIB_PTHREADS
+static pthread_once_t once  = PTHREAD_ONCE_INIT;
+static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
 
-static void init_ieee_table();
+static void init() {
+    pthread_mutexattr_t attr;
+    pthread_mutexattr_init(&attr);
+    pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
+    pthread_mutex_init(&mutex,&attr);
+    pthread_mutexattr_destroy(&attr);
+}
+#elif GRIB_OMP_THREADS
+static int once = 0;
+static omp_nest_lock_t mutex;
+
+static void init()
+{
+    GRIB_OMP_CRITICAL(lock_grib_ieeefloat_c)
+    {
+        if (once == 0)
+        {
+            omp_init_nest_lock(&mutex);
+            once = 1;
+        }
+    }
+}
+#endif
+
+#if 1
 
 typedef struct ieee_table_t ieee_table_t;
 
@@ -57,6 +83,16 @@ static void init_ieee_table()
     }
 }
 
+static void init_table_if_needed()
+{
+    GRIB_MUTEX_INIT_ONCE(&once,&init)
+    GRIB_MUTEX_LOCK(&mutex)
+
+    if (!ieee_table.inited) init_ieee_table();
+
+    GRIB_MUTEX_UNLOCK(&mutex)
+}
+
 static void binary_search(double xx[], const unsigned long n, double x, unsigned long *j)
 {
     /*These routine works only on ascending ordered arrays*/
@@ -75,13 +111,13 @@ static void binary_search(double xx[], const unsigned long n, double x, unsigned
 
 double grib_ieee_table_e(unsigned long e)
 {
-    if (!ieee_table.inited) init_ieee_table();
+    init_table_if_needed();
     return ieee_table.e[e];
 }
 
 double grib_ieee_table_v(unsigned long e)
 {
-    if (!ieee_table.inited) init_ieee_table();
+    init_table_if_needed();
     return ieee_table.v[e];
 }
 
@@ -94,7 +130,7 @@ unsigned long grib_ieee_to_long(double x)
     unsigned long e=0;
     double rmmax=mmax+0.5;
 
-    if (!ieee_table.inited) init_ieee_table();
+    init_table_if_needed();
 
     /* printf("\ngrib_ieee_to_long: x=%.20e\n",x); */
     if (x < 0)  {  s  = 1; x = -x; }
@@ -143,7 +179,7 @@ double grib_ieeefloat_error(double x)
 {
     unsigned long e=0;
 
-    if (!ieee_table.inited) init_ieee_table();
+    init_table_if_needed();
 
     if (x < 0)  x = -x;
 
@@ -170,7 +206,7 @@ double grib_long_to_ieee(unsigned long x)
 
     double val;
 
-    if (!ieee_table.inited) init_ieee_table();
+    init_table_if_needed();
 
     if (c == 0 && m==0) return 0;
 
@@ -196,7 +232,7 @@ unsigned long grib_ieee_nearest_smaller_to_long(double x)
 
     if(x == 0) return 0;
 
-    if (!ieee_table.inited) init_ieee_table();
+    init_table_if_needed();
 
     l=grib_ieee_to_long(x);
     y=grib_long_to_ieee(l);
@@ -237,7 +273,7 @@ int grib_nearest_smaller_ieee_float(double a,double* ret)
 {
     unsigned long l=0;
 
-    if (!ieee_table.inited) init_ieee_table();
+    init_table_if_needed();
 
     if (a>ieee_table.vmax) return GRIB_INTERNAL_ERROR;
 
diff --git a/src/grib_index.c b/src/grib_index.c
index aedaecc..62034e6 100644
--- a/src/grib_index.c
+++ b/src/grib_index.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -38,6 +38,23 @@ static void init() {
     pthread_mutexattr_destroy(&attr);
 
 }
+/* #elif GRIB_OMP_THREADS */
+static int once = 0;
+static omp_nest_lock_t mutex1;
+static omp_nest_lock_t mutex2;
+
+static void init()
+{
+    GRIB_OMP_CRITICAL(lock_grib_index_c)
+    {
+        if (once == 0)
+        {
+            omp_init_nest_lock(&mutex1);
+            omp_init_nest_lock(&mutex2);
+            once = 1;
+        }
+    }
+}
 #endif
 
 
@@ -606,7 +623,8 @@ static int grib_write_index_keys(FILE* fh,grib_index_key* keys)
     err=grib_write_uchar(fh,(unsigned char)keys->type);
     if (err) return err;
 
-    grib_write_key_values(fh,keys->values);
+    err=grib_write_key_values(fh,keys->values);
+    if (err) return err;
 
     err=grib_write_index_keys(fh,keys->next);
     if (err) return err;
@@ -628,7 +646,6 @@ static void grib_field_delete(grib_context* c,grib_field* field)
     }
 
     grib_context_free(c,field);
-
 }
 
 static void grib_field_tree_delete(grib_context* c,grib_field_tree* tree)
@@ -907,7 +924,7 @@ int grib_index_search_same(grib_index* index, grib_handle* h)
 }
 
 int grib_index_add_file(grib_index* index,const char* filename) {
-  return _codes_index_add_file(index,filename,CODES_GRIB);
+    return _codes_index_add_file(index,filename,CODES_GRIB);
 }
 
 grib_handle* new_message_from_file(int message_type, grib_context *c, FILE *f, int *error)
@@ -922,155 +939,157 @@ grib_handle* new_message_from_file(int message_type, grib_context *c, FILE *f, i
 
 int _codes_index_add_file(grib_index* index,const char* filename,int message_type)
 {
-	double dval;
-	size_t svallen;
-	long length,lval;
-	char buf[1024]={0,};
-	int err=0;
-	grib_file* indfile;
-	grib_file* newfile;
-
-	grib_index_key* index_key=NULL;
-	grib_handle* h=NULL;
-	grib_field* field;
-	grib_field_tree* field_tree;
-	grib_file* file=NULL;
-	grib_context* c;
+    double dval;
+    size_t svallen;
+    long length,lval;
+    char buf[1024]={0,};
+    int err=0;
+    grib_file* indfile;
+    grib_file* newfile;
+
+    grib_index_key* index_key=NULL;
+    grib_handle* h=NULL;
+    grib_field* field;
+    grib_field_tree* field_tree;
+    grib_file* file=NULL;
+    grib_context* c;
 
     if (!index) return GRIB_NULL_INDEX;
-	c=index->context;
-
-	file=grib_file_open(filename,"r",&err);
-
-	if (!file || !file->handle) return err;
-
-	if (!index->files) {
-		grib_filesid++;
-		newfile=(grib_file*)grib_context_malloc_clear(c,sizeof(grib_file));
-		newfile->id=grib_filesid;
-		newfile->name=strdup(file->name);
-		index->files=newfile;
-	} else {
-		indfile=index->files;
-		while(indfile) {
-			if (!strcmp(indfile->name,file->name)) return 0;
-			indfile=indfile->next;
-		}
-		indfile=index->files;
-		while(indfile->next) indfile=indfile->next;
-		grib_filesid++;
-		newfile=(grib_file*)grib_context_malloc_clear(c,sizeof(grib_file));
-		newfile->id=grib_filesid;
-		newfile->name=strdup(file->name);
-		indfile->next=newfile;
-	}
-
-	fseeko(file->handle,0,SEEK_SET);
-
-	while ((h=new_message_from_file(message_type, c, file->handle, &err))!=NULL) {
-		grib_string_list* v=0;
-		index_key=index->keys;
-		field_tree=index->fields;
-		index_key->value[0]=0;
-
-		while (index_key) {
-			if (index_key->type==GRIB_TYPE_UNDEFINED) {
-				err=grib_get_native_type(h,index_key->name,&(index_key->type));
-				if (err) index_key->type=GRIB_TYPE_STRING;
-			}
-			svallen=1024;
-			switch (index_key->type) {
-				case GRIB_TYPE_STRING:
-					err=grib_get_string(h,index_key->name,buf,&svallen);
-					if (err==GRIB_NOT_FOUND) sprintf(buf,GRIB_KEY_UNDEF);
-					break;
-				case GRIB_TYPE_LONG:
-					err=grib_get_long(h,index_key->name,&lval);
-					if (err==GRIB_NOT_FOUND) sprintf(buf,GRIB_KEY_UNDEF);
-					else sprintf(buf,"%ld",lval);
-					break;
-				case GRIB_TYPE_DOUBLE:
-					err=grib_get_double(h,index_key->name,&dval);
-					if (err==GRIB_NOT_FOUND) sprintf(buf,GRIB_KEY_UNDEF);
-					else sprintf(buf,"%g",dval);
-					break;
-				default :
-					err=GRIB_WRONG_TYPE;
-					return err;
-			}
-			if (err && err != GRIB_NOT_FOUND) {
-				grib_context_log(c,GRIB_LOG_ERROR,"unable to create index. \"%s\": %s",index_key->name,grib_get_error_message(err));
-				return err;
-			}
-
-			if (!index_key->values->value) {
-				index_key->values->value=grib_context_strdup(c,buf);
-				index_key->values_count++;
-			} else {
-				v=index_key->values;
-				while (v->next && strcmp(v->value,buf)) v=v->next;
-				if (strcmp(v->value,buf)) {
-					index_key->values_count++;
-					if (v->next) v=v->next;
-					v->next=(grib_string_list*)grib_context_malloc_clear(c,sizeof(grib_string_list));
-					v->next->value=grib_context_strdup(c,buf);
-				}
-			}
-
-			if (!field_tree->value) {
-				field_tree->value=grib_context_strdup(c,buf);
-			} else {
-				while (field_tree->next &&
-								   (field_tree->value==NULL ||
-								   strcmp(field_tree->value,buf)))
-					field_tree=field_tree->next;
-
-				if (!field_tree->value || strcmp(field_tree->value,buf)){
-					field_tree->next=
-							(grib_field_tree*)grib_context_malloc_clear(c,
-							 sizeof(grib_field_tree));
-					field_tree=field_tree->next;
-					field_tree->value=grib_context_strdup(c,buf);
-				}
-			}
-
-			if (index_key->next) {
-				if (!field_tree->next_level) {
-					field_tree->next_level=
-							(grib_field_tree*)grib_context_malloc_clear(c,sizeof(grib_field_tree));
-				}
-				field_tree=field_tree->next_level;
-			}
-			index_key=index_key->next;
-		}
-
-		field=(grib_field*)grib_context_malloc_clear(c,sizeof(grib_field));
-		field->file=file;
-		index->count++;
-		field->offset=h->offset;;
-
-		err=grib_get_long(h,"totalLength",&length);
-		if (err) return err;
-		field->length=length;
-
-
-		if (field_tree->field) {
-			grib_field* pfield=field_tree->field;
-			while (pfield->next) pfield=pfield->next;
-			pfield->next=field;
-		} else
-			field_tree->field=field;
-
-		if (h) grib_handle_delete(h);
-
-	}
-
-	grib_file_close(file->name,&err);
-
-	if (err) return err;
-	index->rewind=1;
-	return GRIB_SUCCESS;
-	
+    c=index->context;
+
+    file=grib_file_open(filename,"r",&err);
+
+    if (!file || !file->handle) return err;
+
+    if (!index->files) {
+        grib_filesid++;
+        newfile=(grib_file*)grib_context_malloc_clear(c,sizeof(grib_file));
+        newfile->id=grib_filesid;
+        newfile->name=strdup(file->name);
+        newfile->handle = file->handle;
+        index->files=newfile;
+    } else {
+        indfile=index->files;
+        while(indfile) {
+            if (!strcmp(indfile->name,file->name)) return 0;
+            indfile=indfile->next;
+        }
+        indfile=index->files;
+        while(indfile->next) indfile=indfile->next;
+        grib_filesid++;
+        newfile=(grib_file*)grib_context_malloc_clear(c,sizeof(grib_file));
+        newfile->id=grib_filesid;
+        newfile->name=strdup(file->name);
+        newfile->handle = file->handle;
+        indfile->next=newfile;
+    }
+
+    fseeko(file->handle,0,SEEK_SET);
+
+    while ((h=new_message_from_file(message_type, c, file->handle, &err))!=NULL) {
+        grib_string_list* v=0;
+        index_key=index->keys;
+        field_tree=index->fields;
+        index_key->value[0]=0;
+
+        while (index_key) {
+            if (index_key->type==GRIB_TYPE_UNDEFINED) {
+                err=grib_get_native_type(h,index_key->name,&(index_key->type));
+                if (err) index_key->type=GRIB_TYPE_STRING;
+            }
+            svallen=1024;
+            switch (index_key->type) {
+            case GRIB_TYPE_STRING:
+                err=grib_get_string(h,index_key->name,buf,&svallen);
+                if (err==GRIB_NOT_FOUND) sprintf(buf,GRIB_KEY_UNDEF);
+                break;
+            case GRIB_TYPE_LONG:
+                err=grib_get_long(h,index_key->name,&lval);
+                if (err==GRIB_NOT_FOUND) sprintf(buf,GRIB_KEY_UNDEF);
+                else sprintf(buf,"%ld",lval);
+                break;
+            case GRIB_TYPE_DOUBLE:
+                err=grib_get_double(h,index_key->name,&dval);
+                if (err==GRIB_NOT_FOUND) sprintf(buf,GRIB_KEY_UNDEF);
+                else sprintf(buf,"%g",dval);
+                break;
+            default :
+                err=GRIB_WRONG_TYPE;
+                return err;
+            }
+            if (err && err != GRIB_NOT_FOUND) {
+                grib_context_log(c,GRIB_LOG_ERROR,"unable to create index. \"%s\": %s",index_key->name,grib_get_error_message(err));
+                return err;
+            }
+
+            if (!index_key->values->value) {
+                index_key->values->value=grib_context_strdup(c,buf);
+                index_key->values_count++;
+            } else {
+                v=index_key->values;
+                while (v->next && strcmp(v->value,buf)) v=v->next;
+                if (strcmp(v->value,buf)) {
+                    index_key->values_count++;
+                    if (v->next) v=v->next;
+                    v->next=(grib_string_list*)grib_context_malloc_clear(c,sizeof(grib_string_list));
+                    v->next->value=grib_context_strdup(c,buf);
+                }
+            }
+
+            if (!field_tree->value) {
+                field_tree->value=grib_context_strdup(c,buf);
+            } else {
+                while (field_tree->next &&
+                        (field_tree->value==NULL ||
+                                strcmp(field_tree->value,buf)))
+                    field_tree=field_tree->next;
+
+                if (!field_tree->value || strcmp(field_tree->value,buf)){
+                    field_tree->next=
+                            (grib_field_tree*)grib_context_malloc_clear(c,
+                                    sizeof(grib_field_tree));
+                    field_tree=field_tree->next;
+                    field_tree->value=grib_context_strdup(c,buf);
+                }
+            }
+
+            if (index_key->next) {
+                if (!field_tree->next_level) {
+                    field_tree->next_level=
+                            (grib_field_tree*)grib_context_malloc_clear(c,sizeof(grib_field_tree));
+                }
+                field_tree=field_tree->next_level;
+            }
+            index_key=index_key->next;
+        }
+
+        field=(grib_field*)grib_context_malloc_clear(c,sizeof(grib_field));
+        field->file=file;
+        index->count++;
+        field->offset=h->offset;;
+
+        err=grib_get_long(h,"totalLength",&length);
+        if (err) return err;
+        field->length=length;
+
+
+        if (field_tree->field) {
+            grib_field* pfield=field_tree->field;
+            while (pfield->next) pfield=pfield->next;
+            pfield->next=field;
+        } else
+            field_tree->field=field;
+
+        if (h) grib_handle_delete(h);
+
+    }
+
+    grib_file_close(file->name,&err);
+
+    if (err) return err;
+    index->rewind=1;
+    return GRIB_SUCCESS;
+
 }
 
 #if 0
@@ -1103,6 +1122,7 @@ int grib_index_add_file(grib_index* index, const char* filename)
         newfile=(grib_file*)grib_context_malloc_clear(c,sizeof(grib_file));
         newfile->id=grib_filesid;
         newfile->name=strdup(file->name);
+        newfile->handle = file->handle;
         index->files=newfile;
     } else {
         indfile=index->files;
@@ -1116,6 +1136,7 @@ int grib_index_add_file(grib_index* index, const char* filename)
         newfile=(grib_file*)grib_context_malloc_clear(c,sizeof(grib_file));
         newfile->id=grib_filesid;
         newfile->name=strdup(file->name);
+        newfile->handle = file->handle;
         indfile->next=newfile;
     }
 
@@ -1431,37 +1452,38 @@ int grib_index_select_string(grib_index* index,const char* skey,char* value)
     return 0;
 }
 
-grib_handle* grib_index_get_handle(grib_field* field,int *err) {
-  return codes_index_get_handle(field,CODES_GRIB,err);
+grib_handle* grib_index_get_handle(grib_field* field,int *err)
+{
+    return codes_index_get_handle(field,CODES_GRIB,err);
 }
 
 grib_handle* codes_index_get_handle(grib_field* field,int message_type,int *err)
 {
-  grib_handle* h=NULL;
-  typedef grib_handle* (*message_new_proc) ( grib_context*,FILE*,int,int* );
-  message_new_proc message_new=NULL;
-  Assert(field->file);
-  grib_file_open(field->file->name,"r",err);
-
-  if (*err!=GRIB_SUCCESS) return NULL;
-  switch (message_type) {
-     case CODES_GRIB:
-       message_new=grib_new_from_file;
-       break;
-     case CODES_BUFR:
-       Assert(!"_codes_index_add_file for BUFR: not yet implemented");
-       /* message_new=bufr_new_from_file; */
-       break;
-     default :
-       Assert(0);
-  }
-
-  fseeko(field->file->handle,field->offset,SEEK_SET);
-  h=message_new(0,field->file->handle,0,err);
-  if (*err!=GRIB_SUCCESS) return NULL;
-
-  grib_file_close(field->file->name,err);
-  return h;
+    grib_handle* h=NULL;
+    typedef grib_handle* (*message_new_proc) ( grib_context*,FILE*,int,int* );
+    message_new_proc message_new=NULL;
+    Assert(field->file);
+    grib_file_open(field->file->name,"r",err);
+
+    if (*err!=GRIB_SUCCESS) return NULL;
+    switch (message_type) {
+    case CODES_GRIB:
+        message_new=grib_new_from_file;
+        break;
+    case CODES_BUFR:
+        Assert(!"_codes_index_add_file for BUFR: not yet implemented");
+        /* message_new=bufr_new_from_file; */
+        break;
+    default :
+        Assert(0);
+    }
+
+    fseeko(field->file->handle,field->offset,SEEK_SET);
+    h=message_new(0,field->file->handle,0,err);
+    if (*err!=GRIB_SUCCESS) return NULL;
+
+    grib_file_close(field->file->name,err);
+    return h;
 }
 
 static int grib_index_execute(grib_index* index)
@@ -1540,9 +1562,9 @@ static void grib_dump_field(FILE* fout, grib_field* field)
     if (!field) return;
     fprintf(fout, "field name = %s\n", field->file->name);
     /*fprintf(fout, "field FID = %d\n", field->file->id);
-    * fprintf(fout, "field offset = %ld\n", field->offset);
-    * fprintf(fout, "field length = %ld\n", field->length);
-    */
+     * fprintf(fout, "field offset = %ld\n", field->offset);
+     * fprintf(fout, "field length = %ld\n", field->length);
+     */
 
     grib_dump_field(fout, field->next);
 }
@@ -1569,7 +1591,7 @@ int grib_index_dump_file(FILE* fout, const char* filename)
     Assert(filename);
     index = grib_index_read(c, filename, &err);
     if (err) return err;
-    
+
     /* To get the GRIB files referenced we have */
     /* to resort to low level reading of the index file! */
     fh=fopen(filename,"r");
@@ -1592,10 +1614,10 @@ int grib_index_dump_file(FILE* fout, const char* filename)
         }
         fclose(fh);
     }
-    
+
     grib_index_dump(fout, index);
     grib_index_delete(index);
-    
+
     return GRIB_SUCCESS;
 }
 
@@ -1612,9 +1634,9 @@ void grib_index_dump(FILE* fout, grib_index* index)
     grib_dump_index_keys(fout, index->keys);
 
     /*
-    * fprintf(fout, "Index field tree:\n");
-    * grib_dump_field_tree(fout, index->fields);
-    */
+     * fprintf(fout, "Index field tree:\n");
+     * grib_dump_field_tree(fout, index->fields);
+     */
 
     fprintf(fout, "Index count = %d\n", index->count);
 }
@@ -1631,68 +1653,68 @@ char* grib_get_field_file(grib_index* index,off_t *offset)
 
 grib_handle* grib_handle_new_from_index(grib_index* index,int *err)
 {
-  return codes_new_from_index(index,CODES_GRIB,err);
+    return codes_new_from_index(index,CODES_GRIB,err);
 }
 
 grib_handle* codes_new_from_index(grib_index* index,int message_type,int *err)
 {
-	grib_index_key* keys;
-	grib_field_list *fieldset,*next;
-	grib_handle* h=NULL;
-	grib_context* c=NULL;
-
-	if (!index) return NULL;
-	c=index->context;
-	if (!index->rewind) {
-		if (!index->current) {
-                *err=GRIB_END_OF_INDEX;
-                return NULL;
-            }
+    /*grib_index_key* keys;*/
+    grib_field_list *fieldset,*next;
+    grib_handle* h=NULL;
+    grib_context* c=NULL;
+
+    if (!index) return NULL;
+    c=index->context;
+    if (!index->rewind) {
+        if (!index->current) {
+            *err=GRIB_END_OF_INDEX;
+            return NULL;
+        }
+
+        if (index->current->field->next)
+            index->current->field=index->current->field->next;
+        else if(index->current->next)
+            index->current=index->current->next;
+        else  {*err=GRIB_END_OF_INDEX;return NULL;}
 
-		if (index->current->field->next)
-			index->current->field=index->current->field->next;
-		else if(index->current->next)
-			index->current=index->current->next;
-		else  {*err=GRIB_END_OF_INDEX;return NULL;}
-
-		h=codes_index_get_handle(index->current->field,message_type,err);
-		return h;
-	}
-
-	if (!index->fieldset) {
-		index->fieldset=(grib_field_list*)grib_context_malloc_clear(index->context,
-				sizeof(grib_field_list));
-		if (!index->fieldset) {
-			grib_context_log(index->context,GRIB_LOG_ERROR,
-					"unable to allocate %d bytes",
-					sizeof(grib_field_list));
-			return NULL;
-		}
-		index->current=index->fieldset;
-	} else {
-		fieldset=index->fieldset;
-		while(fieldset->next) {
-			next=fieldset->next;
-			grib_context_free(c,fieldset);
-			fieldset=next;
-		}
-		fieldset->field=NULL;
-		fieldset->next=NULL;
-		index->fieldset=fieldset;
-		index->current=fieldset;
-	}
-
-	*err=GRIB_END_OF_INDEX;
-	h=NULL;
-	keys=index->keys;
-
-	if ((*err=grib_index_execute(index))==GRIB_SUCCESS) {
-
-		if (!index->fieldset) {*err=GRIB_END_OF_INDEX;return NULL;}
-		index->current=index->fieldset;
-		h=codes_index_get_handle(index->current->field,message_type,err);
-	}
-	return h;
+        h=codes_index_get_handle(index->current->field,message_type,err);
+        return h;
+    }
+
+    if (!index->fieldset) {
+        index->fieldset=(grib_field_list*)grib_context_malloc_clear(index->context,
+                sizeof(grib_field_list));
+        if (!index->fieldset) {
+            grib_context_log(index->context,GRIB_LOG_ERROR,
+                    "unable to allocate %d bytes",
+                    sizeof(grib_field_list));
+            return NULL;
+        }
+        index->current=index->fieldset;
+    } else {
+        fieldset=index->fieldset;
+        while(fieldset->next) {
+            next=fieldset->next;
+            grib_context_free(c,fieldset);
+            fieldset=next;
+        }
+        fieldset->field=NULL;
+        fieldset->next=NULL;
+        index->fieldset=fieldset;
+        index->current=fieldset;
+    }
+
+    *err=GRIB_END_OF_INDEX;
+    h=NULL;
+    /*keys=index->keys;*/
+
+    if ((*err=grib_index_execute(index))==GRIB_SUCCESS) {
+
+        if (!index->fieldset) {*err=GRIB_END_OF_INDEX;return NULL;}
+        index->current=index->fieldset;
+        h=codes_index_get_handle(index->current->field,message_type,err);
+    }
+    return h;
 }
 
 void grib_index_rewind(grib_index* index)
diff --git a/src/grib_io.c b/src/grib_io.c
index 6790b0f..40fb3db 100644
--- a/src/grib_io.c
+++ b/src/grib_io.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -44,6 +44,7 @@ typedef struct reader {
     int headers_only;
 
     seekproc seek;
+    seekproc seek_from_start;
     tellproc tell;
     off_t offset;
 
@@ -364,13 +365,15 @@ static int read_GRIB(reader* r)
         break;
 
     default:
-        /* fprintf(stderr,"GRIB edition is %d len=%d\n",(int)edition,length); */
-        return GRIB_NOT_IMPLEMENTED;
+        r->seek_from_start(r->read_data,r->offset+4);
+        return GRIB_UNSUPPORTED_EDITION;
         break;
     }
 
     /* Assert(i <= buf->length); */
     err=read_the_rest(r, length, tmp, i, 1);
+    if (err)
+      r->seek_from_start(r->read_data,r->offset+4);
 
     grib_buffer_delete(c,buf);
 
@@ -575,8 +578,6 @@ static int read_BUFR(reader *r)
     /* unsigned char tmp[65536];*/ /* Should be enough */
     size_t length = 0;
     long edition = 0;
-    size_t sec1len = 0;
-    size_t sec2len = 0;
     int  err = 0;
     int i = 0 ,j;
     size_t buflen=2048;
@@ -614,8 +615,9 @@ static int read_BUFR(reader *r)
 
     /* assert(edition != 1); */
 
-    if(edition<2)
-    {
+    switch (edition) {
+      case 1:
+        {
         int n;
         size_t sec1len = 0;
         size_t sec2len = 0;
@@ -698,50 +700,22 @@ static int read_BUFR(reader *r)
         /* fprintf(stderr," sec1len=%d sec2len=%d sec3len=%d sec4len=%d\n",sec1len, sec2len,sec3len,sec4len); */
         length = 4 + sec1len + sec2len + sec3len + sec4len + 4;
         /* fprintf(stderr,"length = %d i = %d\n",length,i); */
-    } 
-    #if 0
-    /* reading only headers is disabled for BUFR for the moment */
-    else if (r->headers_only) {
-        /* Section 1 */
-        for(j=0;j<3;j++)
-        {
-            if(r->read(r->read_data,&tmp[i],1,&err) != 1 || err)
-                return err;
-
-            sec1len <<= 8;
-            sec1len |= tmp[i];
-            i++;
         }
-        GROW_BUF_IF_REQUIRED(sec1len +  8 + 3);
-        if((r->read(r->read_data,tmp+i,sec1len-3,&err) != sec1len-3) || err)
-            return err;
-        i += sec1len-3;
-
-        if (( edition==3 && (tmp[15] & (1<<7))) ||
-                ( edition==4 && (tmp[17] & (1<<7))) ) {
-            /* Section 2 */
-            for(j=0;j<3;j++)
-            {
-                if(r->read(r->read_data,&tmp[i],1,&err) != 1 || err)
-                    return err;
-
-                sec2len <<= 8;
-                sec2len |= tmp[i];
-                i++;
-            }
-            GROW_BUF_IF_REQUIRED(sec1len + sec2len +  8 + 3);
-            if((r->read(r->read_data,tmp+i,sec2len-3,&err) != sec2len-3) || err)
-                return err;
-            i += sec2len-3;
-
-        }
-        err=r->seek(r->read_data,length-i-1);
-        length=i;
+        break;
+      case 2:
+      case 3:
+      case 4:
+        break;
+      default :
+        r->seek_from_start(r->read_data,r->offset+4);
+        return GRIB_UNSUPPORTED_EDITION;
     }
-    #endif
+
 
     /* Assert(i <= sizeof(tmp)); */
     err=read_the_rest(r, length, tmp, i, 1);
+    if (err)
+      r->seek_from_start(r->read_data,r->offset+4);
 
     grib_buffer_delete(c,buf);
 
@@ -992,6 +966,14 @@ int stdio_seek(void* data,off_t len)
     return err;
 }
 
+int stdio_seek_from_start(void* data,off_t len)
+{
+    FILE* f = (FILE*)data;
+    int err=0;
+    if (fseeko(f,len,SEEK_SET)) err=GRIB_IO_PROBLEM;
+    return err;
+}
+
 size_t stdio_read(void* data,void* buf,size_t len,int* err)
 {
     FILE* f = (FILE*)data;
@@ -1039,6 +1021,7 @@ int _wmo_read_any_from_file(FILE* f,void* buffer,size_t* len,int grib_ok,int buf
     r.read_data    = f;
     r.read         = &stdio_read;
     r.seek         = &stdio_seek;
+    r.seek_from_start         = &stdio_seek_from_start;
     r.tell         = &stdio_tell;
     r.alloc_data   = &u;
     r.alloc        = &user_provider_buffer;
@@ -1078,6 +1061,7 @@ int wmo_read_gts_from_file(FILE* f,void* buffer,size_t* len)
     r.read_data    = f;
     r.read         = &stdio_read;
     r.seek         = &stdio_seek;
+    r.seek_from_start         = &stdio_seek_from_start;
     r.tell         = &stdio_tell;
     r.alloc_data   = &u;
     r.alloc        = &user_provider_buffer;
@@ -1101,6 +1085,7 @@ int wmo_read_taf_from_file(FILE* f,void* buffer,size_t* len)
 	r.read_data    = f;
 	r.read         = &stdio_read;
 	r.seek		   = &stdio_seek;
+	r.seek_from_start	   = &stdio_seek_from_start;
 	r.tell		   = &stdio_tell;
 	r.alloc_data   = &u;
 	r.alloc        = &user_provider_buffer;
@@ -1124,6 +1109,7 @@ int wmo_read_metar_from_file(FILE* f,void* buffer,size_t* len)
 	r.read_data    = f;
 	r.read         = &stdio_read;
 	r.seek		   = &stdio_seek;
+	r.seek_from_start= &stdio_seek_from_start;
 	r.tell		   = &stdio_tell;
 	r.alloc_data   = &u;
 	r.alloc        = &user_provider_buffer;
@@ -1189,6 +1175,7 @@ int wmo_read_any_from_stream(void* stream_data,long (*stream_proc)(void*,void* b
     r.read_data    = &s;
     r.read         = &stream_read;
     r.seek         = &stream_seek;
+    r.seek_from_start= &stream_seek;
     r.tell         = &stream_tell;
     r.alloc_data   = &u;
     r.alloc        = &user_provider_buffer;
@@ -1224,6 +1211,7 @@ void *wmo_read_gts_from_file_malloc(FILE* f,int headers_only,size_t *size,off_t
     r.read_data    = f;
     r.read         = &stdio_read;
     r.seek         = &stdio_seek;
+    r.seek_from_start= &stdio_seek_from_start;
     r.tell         = &stdio_tell;
     r.alloc_data   = &u;
     r.alloc        = &allocate_buffer;
@@ -1246,6 +1234,7 @@ void *wmo_read_taf_from_file_malloc(FILE* f,int headers_only,size_t *size,off_t
 	r.read_data    = f;
 	r.read         = &stdio_read;
 	r.seek         = &stdio_seek;
+	r.seek_from_start         = &stdio_seek_from_start;
 	r.tell         = &stdio_tell;
 	r.alloc_data   = &u;
 	r.alloc        = &allocate_buffer;
@@ -1268,6 +1257,7 @@ void *wmo_read_metar_from_file_malloc(FILE* f,int headers_only,size_t *size,off_
 	r.read_data    = f;
 	r.read         = &stdio_read;
 	r.seek         = &stdio_seek;
+	r.seek_from_start         = &stdio_seek_from_start;
 	r.tell         = &stdio_tell;
 	r.alloc_data   = &u;
 	r.alloc        = &allocate_buffer;
@@ -1293,6 +1283,7 @@ static void *_wmo_read_any_from_file_malloc(FILE* f,int* err,size_t *size,off_t
     r.read_data    = f;
     r.read         = &stdio_read;
     r.seek         = &stdio_seek;
+    r.seek_from_start         = &stdio_seek_from_start;
     r.tell         = &stdio_tell;
     r.alloc_data   = &u;
     r.alloc        = &allocate_buffer;
@@ -1341,59 +1332,6 @@ static void* context_allocate_buffer(void *data,size_t* length,int *err)
 }
 
 
-/*
-int grib_read_any_headers_only_from_file_alloc(grib_context* ctx,FILE* f,void **buffer,size_t* length,off_t* offset)
-{
-    int err;
-    context_alloc_buffer u;
-    reader       r;
-
-    u.buffer       = NULL;
-    u.length       = 0;
-    u.ctx          = ctx ? ctx : grib_context_get_default();
-
-    r.read_data    = f;
-    r.read         = &stdio_read;
-    r.seek         = &stdio_seek;
-    r.tell         = &stdio_tell;
-    r.alloc_data   = &u;
-    r.alloc        = &context_allocate_buffer;
-    r.headers_only = 1;
-
-    err            = read_any(&r,1,GRIB_API_READS_BUFR);
-    *buffer        = u.buffer;
-    *length        = u.length;
-    *offset           = r.offset;
-
-    return err;
-}
-
-int grib_read_any_from_file_alloc(grib_context* ctx,FILE* f,void **buffer,size_t* length)
-{
-    int err;
-    context_alloc_buffer u;
-    reader       r;
-
-    u.buffer       = NULL;
-    u.length       = 0;
-    u.ctx          = ctx ? ctx : grib_context_get_default();
-
-    r.read_data    = f;
-    r.read         = &stdio_read;
-    r.seek         = &stdio_seek;
-    r.tell         = &stdio_tell;
-    r.alloc_data   = &u;
-    r.alloc        = &context_allocate_buffer;
-    r.headers_only = 0;
-
-    err            = read_any(&r,1,GRIB_API_READS_BUFR);
-    *buffer        = u.buffer;
-    *length        = u.length;
-
-    return err;
-}
-*/
-
 int grib_read_any_headers_only_from_file(grib_context* ctx,FILE* f,void* buffer,size_t* len)
 {
     int         err;
@@ -1407,6 +1345,7 @@ int grib_read_any_headers_only_from_file(grib_context* ctx,FILE* f,void* buffer,
     r.read_data    = f;
     r.read         = &stdio_read;
     r.seek         = &stdio_seek;
+    r.seek_from_start         = &stdio_seek_from_start;
     r.tell         = &stdio_tell;
     r.alloc_data   = &u;
     r.alloc        = &user_provider_buffer;
@@ -1433,6 +1372,7 @@ int grib_read_any_from_file(grib_context* ctx,FILE* f,void* buffer,size_t* len)
     r.read_data    = f;
     r.read         = &stdio_read;
     r.seek         = &stdio_seek;
+    r.seek_from_start         = &stdio_seek_from_start;
     r.tell         = &stdio_tell;
     r.alloc_data   = &u;
     r.alloc        = &user_provider_buffer;
@@ -1505,6 +1445,7 @@ int grib_read_any_from_memory_alloc(grib_context* ctx,unsigned char** data,size_
     r.read_data    = &m;
     r.read         = &memory_read;
     r.seek         = &memory_seek;
+    r.seek_from_start         = &memory_seek;
     r.tell         = &memory_tell;
     r.alloc_data   = &u;
     r.alloc        = &context_allocate_buffer;
@@ -1537,6 +1478,7 @@ int grib_read_any_from_memory(grib_context* ctx,unsigned char** data,size_t* dat
     r.read_data    = &m;
     r.read         = &memory_read;
     r.seek         = &memory_seek;
+    r.seek_from_start         = &memory_seek;
     r.tell         = &memory_tell;
     r.alloc_data   = &u;
     r.alloc        = &user_provider_buffer;
@@ -1569,5 +1511,4 @@ int grib_count_in_file(grib_context* c, FILE* f,int* n)
     rewind(f);
 
     return err==GRIB_END_OF_FILE ? 0 : err;
-
 }
diff --git a/src/grib_iterator.c b/src/grib_iterator.c
index 1279789..6fa5df1 100644
--- a/src/grib_iterator.c
+++ b/src/grib_iterator.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -16,75 +16,72 @@
 #include "grib_api_internal.h"
 
 int grib_get_data(grib_handle* h,double* lats, double* lons,double* values,size_t* size) {
-  int err=0;
-  grib_iterator* iter=NULL;
-  double *lat,*lon,*val;
+    int err=0;
+    grib_iterator* iter=NULL;
+    double *lat,*lon,*val;
 
-  iter=grib_iterator_new(h,0,&err);
-  if (!iter || err!=GRIB_SUCCESS) return err;
+    iter=grib_iterator_new(h,0,&err);
+    if (!iter || err!=GRIB_SUCCESS) return err;
 
-  if (iter) {
     lat=lats; lon=lons; val=values;
     while(grib_iterator_next(iter,lat++,lon++,val++)) {}
-  }
 
-  grib_iterator_delete( iter);
+    grib_iterator_delete( iter);
 
-  return err;
+    return err;
 }
 
 int grib_iterator_next(grib_iterator *i,double* lat,double* lon,double* value)
 {
-  grib_iterator_class *c = i->cclass;
-  while(c)
-  {
-    grib_iterator_class *s = c->super ? *(c->super) : NULL;
-    if(c->next) return  c->next(i, lat, lon, value);
-    c = s;
-  }
-  Assert(0);
-  return 0;
+    grib_iterator_class *c = i->cclass;
+    while(c)
+    {
+        grib_iterator_class *s = c->super ? *(c->super) : NULL;
+        if(c->next) return  c->next(i, lat, lon, value);
+        c = s;
+    }
+    Assert(0);
+    return 0;
 }
 
 int grib_iterator_has_next(grib_iterator *i)
 {
-  grib_iterator_class *c = i->cclass;
-  while(c)
-  {
-    grib_iterator_class *s = c->super ? *(c->super) : NULL;
-    if(c->has_next) return  c->has_next(i);
-    c = s;
-  }
-  Assert(0);
-  return 0;
+    grib_iterator_class *c = i->cclass;
+    while(c)
+    {
+        grib_iterator_class *s = c->super ? *(c->super) : NULL;
+        if(c->has_next) return  c->has_next(i);
+        c = s;
+    }
+    Assert(0);
+    return 0;
 }
 
-
 int grib_iterator_previous(grib_iterator *i,double* lat,double* lon,double* value)
 {
-  grib_iterator_class *c = i->cclass;
-  while(c)
-  {
-    grib_iterator_class *s = c->super ? *(c->super) : NULL;
-    if(c->previous) return  c->previous(i, lat, lon, value);
-    c = s;
-  }
-  Assert(0);
-  return 0;
+    grib_iterator_class *c = i->cclass;
+    while(c)
+    {
+        grib_iterator_class *s = c->super ? *(c->super) : NULL;
+        if(c->previous) return  c->previous(i, lat, lon, value);
+        c = s;
+    }
+    Assert(0);
+    return 0;
 }
 
 
 int grib_iterator_reset(grib_iterator *i)
 {
-  grib_iterator_class *c = i->cclass;
-  while(c)
-  {
-    grib_iterator_class *s = c->super ? *(c->super) : NULL;
-    if(c->reset)  return  c->reset(i);
-    c = s;
-  }
-  Assert(0);
-  return 0;
+    grib_iterator_class *c = i->cclass;
+    while(c)
+    {
+        grib_iterator_class *s = c->super ? *(c->super) : NULL;
+        if(c->reset)  return  c->reset(i);
+        c = s;
+    }
+    Assert(0);
+    return 0;
 }
 
 
@@ -93,42 +90,40 @@ int grib_iterator_reset(grib_iterator *i)
 static int init_iterator(grib_iterator_class* c,grib_iterator* i, grib_handle *h, grib_arguments* args)
 {
 
-  if(c) {
-    int ret = GRIB_SUCCESS;
-    grib_iterator_class *s = c->super ? *(c->super) : NULL;
-    if(!c->inited)
-    {
-      if(c->init_class) c->init_class(c);
-      c->inited = 1;
-    }
-    if(s) ret = init_iterator(s,i,h,args);
+    if(c) {
+        int ret = GRIB_SUCCESS;
+        grib_iterator_class *s = c->super ? *(c->super) : NULL;
+        if(!c->inited)
+        {
+            if(c->init_class) c->init_class(c);
+            c->inited = 1;
+        }
+        if(s) ret = init_iterator(s,i,h,args);
 
-    if(ret != GRIB_SUCCESS) return ret;
+        if(ret != GRIB_SUCCESS) return ret;
 
-    if(c->init) return c->init(i,h, args);
-  }
-  return GRIB_INTERNAL_ERROR;
+        if(c->init) return c->init(i,h, args);
+    }
+    return GRIB_INTERNAL_ERROR;
 }
 
 int grib_iterator_init(grib_iterator* i, grib_handle *h, grib_arguments* args)
 {
-  return init_iterator(i->cclass,i,h,args);
+    return init_iterator(i->cclass,i,h,args);
 }
 
 /* For this one, ALL destroy are called */
 
 int grib_iterator_delete(grib_iterator *i)
 {
-  grib_iterator_class *c = i->cclass;
-  while(c)
-  {
-    grib_iterator_class *s = c->super ? *(c->super) : NULL;
-    if(c->destroy) c->destroy(i);
-    c = s;
-  }
-  /* This should go in a top class */
-  grib_context_free(i->h->context,i);
-  return 0;
+    grib_iterator_class *c = i->cclass;
+    while(c)
+    {
+        grib_iterator_class *s = c->super ? *(c->super) : NULL;
+        if(c->destroy) c->destroy(i);
+        c = s;
+    }
+    /* This should go in a top class */
+    grib_context_free(i->h->context,i);
+    return 0;
 }
-
-
diff --git a/src/grib_iterator_class.c b/src/grib_iterator_class.c
index 3b49513..1f49c48 100644
--- a/src/grib_iterator_class.c
+++ b/src/grib_iterator_class.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_iterator_class_gaussian.c b/src/grib_iterator_class_gaussian.c
index f0d4982..0cecae4 100644
--- a/src/grib_iterator_class_gaussian.c
+++ b/src/grib_iterator_class_gaussian.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -53,6 +53,10 @@ typedef struct grib_iterator_gaussian{
 	long      nap;
 	long      nam;
 	long iScansNegatively;
+	long isRotated;
+	double angleOfRotation;
+	double southPoleLat;
+	double southPoleLon;
 /* Members defined in gaussian */
 } grib_iterator_gaussian;
 
@@ -123,13 +127,13 @@ static int init(grib_iterator* i,grib_handle* h,grib_arguments *args){
         grib_context_log(h->context, GRIB_LOG_ERROR,"error %d calculating gaussian points",ret);
         return ret;
     }
-/*
+    /*
   for(loi=(trunc*2)-1;loi>=0;loi--)
     if(fabs(lats[loi] - lal) < glatPrecision) break;
   for(j=(trunc*2)-1;j>0;j--) {
     if(fabs(lats[j] - laf) < glatPrecision) break;
   }
-*/
+     */
 
     binary_search(lats,size-1,start,&istart);
     Assert(istart < size);
diff --git a/src/grib_iterator_class_gaussian_reduced.c b/src/grib_iterator_class_gaussian_reduced.c
index e6b3ffc..c9633bb 100644
--- a/src/grib_iterator_class_gaussian_reduced.c
+++ b/src/grib_iterator_class_gaussian_reduced.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -89,30 +89,31 @@ static void init_class(grib_iterator_class* c)
 
 static int next(grib_iterator* i, double *lat, double *lon, double *val)
 {
+    grib_iterator_gaussian_reduced* self = (grib_iterator_gaussian_reduced*)i;
 
-  grib_iterator_gaussian_reduced* self = (grib_iterator_gaussian_reduced*)i;
-
-  if((long)i->e >= (long)(i->nv-1))
-    return 0;
-  i->e++;
+    if((long)i->e >= (long)(i->nv-1))
+        return 0;
+    i->e++;
 
-  *lat = self->las[i->e];
-  *lon = self->los[i->e];
-  *val = i->data[i->e];
+    *lat = self->las[i->e];
+    *lon = self->los[i->e];
+    *val = i->data[i->e];
 
-  return 1;
+    return 1;
 }
 
 static int init(grib_iterator* iter,grib_handle* h,grib_arguments* args)
 {
-    int ret=GRIB_SUCCESS,j;
-    double lat_first=0,lon_first=0,lat_last=0,lon_last=0,d=0;
+    int ret=GRIB_SUCCESS, j, is_global=0;
+    double lat_first=0,lon_first=0,lat_last=0,lon_last=0;
+    double angular_precision = 1.0/1000000.0;
     double* lats;
     size_t plsize=0;
-    int l=0;
     long* pl;
+    long max_pl=0;
     long nj=0,order=0,ilon_first,ilon_last,i;
     long row_count=0;
+    long editionNumber = 0;
     grib_context* c=h->context;
     grib_iterator_gaussian_reduced* self = (grib_iterator_gaussian_reduced*)iter;
     const char* slat_first   = grib_arguments_get_name(h,args,self->carg++);
@@ -137,6 +138,10 @@ static int init(grib_iterator* iter,grib_handle* h,grib_arguments* args)
     if((ret = grib_get_long_internal(h, snj,&nj)) != GRIB_SUCCESS)
         return ret;
 
+    if (grib_get_long(h, "editionNumber", &editionNumber)==GRIB_SUCCESS) {
+        if (editionNumber == 1) angular_precision = 1.0/1000;
+    }
+
     lats=(double*)grib_context_malloc(h->context,sizeof(double)*order*2);
     if (!lats) return GRIB_OUT_OF_MEMORY;
     if((ret = grib_get_gaussian_latitudes(order, lats)) != GRIB_SUCCESS)
@@ -145,6 +150,7 @@ static int init(grib_iterator* iter,grib_handle* h,grib_arguments* args)
     if((ret = grib_get_size(h,spl,&plsize)) != GRIB_SUCCESS)
         return ret;
 
+    Assert(plsize);
     pl=(long*)grib_context_malloc(c,sizeof(long)*plsize);
     if (!pl) return GRIB_OUT_OF_MEMORY;
 
@@ -158,14 +164,19 @@ static int init(grib_iterator* iter,grib_handle* h,grib_arguments* args)
     while (lon_last<0) lon_last+=360;
     while (lon_first<0) lon_first+=360;
 
-    d=fabs(lats[0]-lats[1]);
-    if ( (fabs(lat_first-lats[0]) >= d ) ||
-            (fabs(lat_last+lats[0]) >= d )  ||
-            lon_first != 0                 ||
-            fabs(lon_last  - (360.0-90.0/order)) > 90.0/order
-    ) {
+    /* Find the maximum element of "pl" array, do not assume it's 4*N! */
+    /* This could be an Octahedral Gaussian Grid */
+    max_pl = pl[0];
+    for (j=1; j<plsize; j++) {
+        if (pl[j] > max_pl) max_pl = pl[j];
+    }
+
+    is_global = is_gaussian_global(lat_first, lat_last, lon_first, lon_last, max_pl, lats, angular_precision);
+    if ( !is_global ) {
+        int l=0;
         /*sub area*/
         /*find starting latitude */
+        const double d = fabs(lats[0] - lats[1]);
         while (fabs(lat_first-lats[l]) > d ) {l++;}
         iter->e=0;
         for (j=0;j<plsize;j++) {
@@ -215,4 +226,3 @@ static int destroy(grib_iterator* i)
     grib_context_free(c,self->los);
     return 1;
 }
-
diff --git a/src/grib_iterator_class_gen.c b/src/grib_iterator_class_gen.c
index c0c362f..44daf4b 100644
--- a/src/grib_iterator_class_gen.c
+++ b/src/grib_iterator_class_gen.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -76,55 +76,57 @@ static void init_class(grib_iterator_class* c)
 
 static int init(grib_iterator* i,grib_handle *h, grib_arguments* args)
 {
-  grib_iterator_gen* self = (grib_iterator_gen*) i;
-  size_t dli=0;
-  int ret = GRIB_SUCCESS;
-  const char* rawdat  = NULL;
-  const char* snumberOfPoints=NULL;
-  long numberOfPoints=0;
-  self->carg = 1;
-  
-  snumberOfPoints = grib_arguments_get_name(h,args,self->carg++);
-  self->missingValue  = grib_arguments_get_name(h,args,self->carg++);
-  rawdat      = grib_arguments_get_name(h,args,self->carg++);
-
-  i->h    = h; /* We may not need to keep them */
-  i->args = args;
-  if( (ret =  grib_get_size(h,rawdat,&dli))!= GRIB_SUCCESS) return ret;
-
-  if( (ret =  grib_get_long_internal(h,snumberOfPoints,&numberOfPoints))
-       != GRIB_SUCCESS)
-    return ret;
-
-  if (numberOfPoints!=dli) {
-    grib_context_log(h->context,GRIB_LOG_ERROR,"%s != size(%s) (%ld!=%ld)",
-                     snumberOfPoints,rawdat,numberOfPoints,dli);
-    return GRIB_WRONG_GRID;
-  }
-  i->nv = dli;
-  i->data = (double*)grib_context_malloc(h->context,(i->nv)*sizeof(double));
+    grib_iterator_gen* self = (grib_iterator_gen*) i;
+    size_t dli=0;
+    int ret = GRIB_SUCCESS;
+    const char* rawdat  = NULL;
+    const char* snumberOfPoints=NULL;
+    long numberOfPoints=0;
+    self->carg = 1;
+
+    snumberOfPoints = grib_arguments_get_name(h,args,self->carg++);
+    self->missingValue  = grib_arguments_get_name(h,args,self->carg++);
+    rawdat      = grib_arguments_get_name(h,args,self->carg++);
+
+    i->h    = h; /* We may not need to keep them */
+    i->args = args;
+    if( (ret =  grib_get_size(h,rawdat,&dli))!= GRIB_SUCCESS) return ret;
+
+    if( (ret =  grib_get_long_internal(h,snumberOfPoints,&numberOfPoints))
+            != GRIB_SUCCESS)
+        return ret;
+
+    if (numberOfPoints!=dli) {
+        grib_context_log(h->context,GRIB_LOG_ERROR,"%s != size(%s) (%ld!=%ld)",
+                snumberOfPoints,rawdat,numberOfPoints,dli);
+        return GRIB_WRONG_GRID;
+    }
+    i->nv = dli;
+    i->data = (double*)grib_context_malloc(h->context,(i->nv)*sizeof(double));
+
+    if( (ret = grib_get_double_array_internal(h,rawdat,i->data ,&(i->nv))))
+        return ret;
+
+    i->e = -1;
 
-  if( (ret = grib_get_double_array_internal(h,rawdat,i->data ,&(i->nv))))
     return ret;
-
-  i->e = -1;
-
-  return ret;
 }
 
-static int reset(grib_iterator* i){
-  i->e = -1;
-  return 0;
+static int reset(grib_iterator* i)
+{
+    i->e = -1;
+    return 0;
 }
 
-static int destroy(grib_iterator* ei){
-  const grib_context *c = ei->h->context;
-  grib_context_free(c,ei->data);
-  return 1;
+static int destroy(grib_iterator* ei)
+{
+    const grib_context *c = ei->h->context;
+    grib_context_free(c,ei->data);
+    return 1;
 }
 
-
-static long has_next(grib_iterator* i){
-  if(i->data == NULL) return 0;
-  return   i->nv - i->e;
+static long has_next(grib_iterator* i)
+{
+    if(i->data == NULL) return 0;
+    return   i->nv - i->e;
 }
diff --git a/src/grib_iterator_class_lambert_azimuthal_equal_area.c b/src/grib_iterator_class_lambert_azimuthal_equal_area.c
index 516bfe5..9cdb6db 100644
--- a/src/grib_iterator_class_lambert_azimuthal_equal_area.c
+++ b/src/grib_iterator_class_lambert_azimuthal_equal_area.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -89,200 +89,197 @@ static void init_class(grib_iterator_class* c)
 static int next(grib_iterator* i, double *lat, double *lon, double *val)
 {
 
-  grib_iterator_lambert_azimuthal_equal_area* self = (grib_iterator_lambert_azimuthal_equal_area*)i;
+    grib_iterator_lambert_azimuthal_equal_area* self = (grib_iterator_lambert_azimuthal_equal_area*)i;
 
-  if((long)i->e >= (long)(i->nv-1))
-    return 0;
-  i->e++;
+    if((long)i->e >= (long)(i->nv-1))
+        return 0;
+    i->e++;
 
-  *lat = self->lats[i->e];
-  *lon = self->lons[i->e];
-  *val = i->data[i->e];
+    *lat = self->lats[i->e];
+    *lon = self->lons[i->e];
+    *val = i->data[i->e];
 
-  return 1;
+    return 1;
 }
 
-
 static int init(grib_iterator* iter,grib_handle* h,grib_arguments* args)
 {
-  int ret=0;
-  double *lats,*lons;
-  double lonFirstInDegrees,latFirstInDegrees,lonFirst,latFirst,radius=0;
-  long nx,ny,standardParallel,centralLongitude;
-  double phi1,lambda0,xFirst,yFirst,x,y,Dx,Dy;
-  double kp,sinphi1,cosphi1;
-  long alternativeRowScanning,iScansNegatively;
-  long jScansPositively,jPointsAreConsecutive;
-  double sinphi,cosphi,cosdlambda,sindlambda;
-  double cosc,sinc;
-  long i,j;
-  
-  grib_iterator_lambert_azimuthal_equal_area* self =
-      (grib_iterator_lambert_azimuthal_equal_area*)iter;
-
-  const char* sradius           = grib_arguments_get_name(h,args,self->carg++);
-  const char* snx               = grib_arguments_get_name(h,args,self->carg++);
-  const char* sny               = grib_arguments_get_name(h,args,self->carg++);
-  const char* slatFirstInDegrees = grib_arguments_get_name(h,args,self->carg++);
-  const char* slonFirstInDegrees = grib_arguments_get_name(h,args,self->carg++);
-  const char* sstandardParallel = grib_arguments_get_name(h,args,self->carg++);
-  const char* scentralLongitude = grib_arguments_get_name(h,args,self->carg++);
-  const char* sDx = grib_arguments_get_name(h,args,self->carg++);
-  const char* sDy = grib_arguments_get_name(h,args,self->carg++);
-  const char* siScansNegatively = grib_arguments_get_name(h,args,self->carg++);
-  const char* sjScansPositively = grib_arguments_get_name(h,args,self->carg++);
-  const char* sjPointsAreConsecutive = grib_arguments_get_name(h,args,self->carg++);
-  const char* salternativeRowScanning = grib_arguments_get_name(h,args,self->carg++);
-  double c,rho;
-  double epsilon=1.0e-20;
-  double d2r=acos(0.0)/90.0;
-  
-  if((ret = grib_get_double_internal(h, sradius,&radius)) != GRIB_SUCCESS)
-    return ret;
-  if((ret = grib_get_long_internal(h, snx,&nx)) != GRIB_SUCCESS)
-    return ret;
-  if((ret = grib_get_long_internal(h, sny,&ny)) != GRIB_SUCCESS)
-    return ret;
-
-  if (iter->nv!=nx*ny) {
-    grib_context_log(h->context,GRIB_LOG_ERROR,
-                     "Wrong number of points (%ld!=%ldx%ld)",
-                     iter->nv,nx,ny);
-    return GRIB_WRONG_GRID;
-  }
-  if((ret = grib_get_double_internal(h, slatFirstInDegrees,&latFirstInDegrees))
-      != GRIB_SUCCESS)
-    return ret;
-  if((ret = grib_get_double_internal(h, slonFirstInDegrees,&lonFirstInDegrees))
-      != GRIB_SUCCESS)
-    return ret;
-  if((ret = grib_get_long_internal(h, sstandardParallel,&standardParallel))
-      != GRIB_SUCCESS)
-    return ret;
-  if((ret = grib_get_long_internal(h, scentralLongitude,&centralLongitude))
-      != GRIB_SUCCESS)
-    return ret;
-  if((ret = grib_get_double_internal(h, sDx,&Dx)) != GRIB_SUCCESS)
-    return ret;
-  if((ret = grib_get_double_internal(h, sDy,&Dy)) != GRIB_SUCCESS)
-    return ret;
-  if((ret = grib_get_long_internal(h,
-      sjPointsAreConsecutive,&jPointsAreConsecutive))
-      != GRIB_SUCCESS)
-    return ret;
-  if((ret = grib_get_long_internal(h, sjScansPositively,&jScansPositively))
-      != GRIB_SUCCESS)
-    return ret;
-  if((ret = grib_get_long_internal(h, siScansNegatively,&iScansNegatively))
-      != GRIB_SUCCESS)
-    return ret;
-  if((ret = grib_get_long_internal(h,
-      salternativeRowScanning,&alternativeRowScanning))
-      != GRIB_SUCCESS)
-    return ret;
-
-  lambda0=d2r*centralLongitude/1000000;
-  phi1=d2r*standardParallel/1000000;
-  latFirst=latFirstInDegrees*d2r;
-  lonFirst=lonFirstInDegrees*d2r;
-
-  cosphi1=cos(phi1);
-  sinphi1=sin(phi1);
-
-  Dx = iScansNegatively == 0 ? Dx/1000 : -Dx/1000;
-  Dy = jScansPositively == 1 ? Dy/1000 : -Dy/1000;
-  self->lats = (double*)grib_context_malloc(h->context,iter->nv*sizeof(double));
-  if (!self->lats) {
-    grib_context_log(h->context,GRIB_LOG_ERROR,
-                     "unable to allocate %ld bytes",iter->nv*sizeof(double));
-    return GRIB_OUT_OF_MEMORY;
-  }
-  self->lons = (double*)grib_context_malloc(h->context,iter->nv*sizeof(double));
-  if (!self->lats) {
-    grib_context_log(h->context,GRIB_LOG_ERROR,
-                     "unable to allocate %ld bytes",iter->nv*sizeof(double));
-    return GRIB_OUT_OF_MEMORY;
-  }
-  lats=self->lats;
-  lons=self->lons;
-
-  /* compute xFirst,yFirst in metres */
-  sinphi=sin(latFirst);
-  cosphi=cos(latFirst);
-  cosdlambda=cos(lonFirst-lambda0);
-  sindlambda=sin(lonFirst-lambda0);
-  kp=radius*sqrt(2.0/(1+sinphi1*sinphi+cosphi1*cosphi*cosdlambda));
-  xFirst=kp*cosphi*sindlambda;
-  yFirst=kp*(cosphi1*sinphi-sinphi1*cosphi*cosdlambda);
-  
-  if (jPointsAreConsecutive) {
-  
-    x=xFirst;
-    for (i=0;i<nx;i++) {
-      double xsq = x*x;
-      y=yFirst;
-      for (j=0;j<ny;j++) {
-        rho=sqrt(xsq+y*y);
-        if (rho>epsilon) {
-          c=2*asin(rho/(2.0*radius));
-          cosc=cos(c);
-          sinc=sin(c);
-          *lats=asin(cosc*sinphi1+y*sinc*cosphi1/rho)/d2r;
-          *lons=(lambda0+atan2(x*sinc,rho*cosphi1*cosc-y*sinphi1*sinc))/d2r;
-        } else {
-          *lats=phi1/d2r;
-          *lons=lambda0/d2r;
-        }
-        if (*lons<0) *lons+=360;
-        lons++;
-        lats++;
-
-        y+=Dy;
-      }
-      x+=Dx;
+    int ret=0;
+    double *lats,*lons;
+    double lonFirstInDegrees,latFirstInDegrees,lonFirst,latFirst,radius=0;
+    long nx,ny,standardParallel,centralLongitude;
+    double phi1,lambda0,xFirst,yFirst,x,y,Dx,Dy;
+    double kp,sinphi1,cosphi1;
+    long alternativeRowScanning,iScansNegatively;
+    long jScansPositively,jPointsAreConsecutive;
+    double sinphi,cosphi,cosdlambda,sindlambda;
+    double cosc,sinc;
+    long i,j;
+
+    grib_iterator_lambert_azimuthal_equal_area* self =
+            (grib_iterator_lambert_azimuthal_equal_area*)iter;
+
+    const char* sradius           = grib_arguments_get_name(h,args,self->carg++);
+    const char* snx               = grib_arguments_get_name(h,args,self->carg++);
+    const char* sny               = grib_arguments_get_name(h,args,self->carg++);
+    const char* slatFirstInDegrees = grib_arguments_get_name(h,args,self->carg++);
+    const char* slonFirstInDegrees = grib_arguments_get_name(h,args,self->carg++);
+    const char* sstandardParallel = grib_arguments_get_name(h,args,self->carg++);
+    const char* scentralLongitude = grib_arguments_get_name(h,args,self->carg++);
+    const char* sDx = grib_arguments_get_name(h,args,self->carg++);
+    const char* sDy = grib_arguments_get_name(h,args,self->carg++);
+    const char* siScansNegatively = grib_arguments_get_name(h,args,self->carg++);
+    const char* sjScansPositively = grib_arguments_get_name(h,args,self->carg++);
+    const char* sjPointsAreConsecutive = grib_arguments_get_name(h,args,self->carg++);
+    const char* salternativeRowScanning = grib_arguments_get_name(h,args,self->carg++);
+    double c,rho;
+    double epsilon=1.0e-20;
+    double d2r=acos(0.0)/90.0;
+
+    if((ret = grib_get_double_internal(h, sradius,&radius)) != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_long_internal(h, snx,&nx)) != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_long_internal(h, sny,&ny)) != GRIB_SUCCESS)
+        return ret;
+
+    if (iter->nv!=nx*ny) {
+        grib_context_log(h->context,GRIB_LOG_ERROR,
+                "Wrong number of points (%ld!=%ldx%ld)",
+                iter->nv,nx,ny);
+        return GRIB_WRONG_GRID;
     }
-    
-  } else {
-
-    y=yFirst;
-    for (j=0;j<ny;j++) {
-      double ysq = y*y;
-      x=xFirst;
-      for (i=0;i<nx;i++) {
-        rho=sqrt(x*x+ysq);
-        if (rho>epsilon) {
-          c=2*asin(rho/(2.0*radius));
-          cosc=cos(c);
-          sinc=sin(c);
-          *lats=asin(cosc*sinphi1+y*sinc*cosphi1/rho)/d2r;
-          *lons=(lambda0+atan2(x*sinc,rho*cosphi1*cosc-y*sinphi1*sinc))/d2r;
-        } else {
-          *lats=phi1/d2r;
-          *lons=lambda0/d2r;
+    if((ret = grib_get_double_internal(h, slatFirstInDegrees,&latFirstInDegrees))
+            != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_double_internal(h, slonFirstInDegrees,&lonFirstInDegrees))
+            != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_long_internal(h, sstandardParallel,&standardParallel))
+            != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_long_internal(h, scentralLongitude,&centralLongitude))
+            != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_double_internal(h, sDx,&Dx)) != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_double_internal(h, sDy,&Dy)) != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_long_internal(h,
+            sjPointsAreConsecutive,&jPointsAreConsecutive))
+            != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_long_internal(h, sjScansPositively,&jScansPositively))
+            != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_long_internal(h, siScansNegatively,&iScansNegatively))
+            != GRIB_SUCCESS)
+        return ret;
+    if((ret = grib_get_long_internal(h,
+            salternativeRowScanning,&alternativeRowScanning))
+            != GRIB_SUCCESS)
+        return ret;
+
+    lambda0=d2r*centralLongitude/1000000;
+    phi1=d2r*standardParallel/1000000;
+    latFirst=latFirstInDegrees*d2r;
+    lonFirst=lonFirstInDegrees*d2r;
+
+    cosphi1=cos(phi1);
+    sinphi1=sin(phi1);
+
+    Dx = iScansNegatively == 0 ? Dx/1000 : -Dx/1000;
+    Dy = jScansPositively == 1 ? Dy/1000 : -Dy/1000;
+    self->lats = (double*)grib_context_malloc(h->context,iter->nv*sizeof(double));
+    if (!self->lats) {
+        grib_context_log(h->context,GRIB_LOG_ERROR,
+                "unable to allocate %ld bytes",iter->nv*sizeof(double));
+        return GRIB_OUT_OF_MEMORY;
+    }
+    self->lons = (double*)grib_context_malloc(h->context,iter->nv*sizeof(double));
+    if (!self->lats) {
+        grib_context_log(h->context,GRIB_LOG_ERROR,
+                "unable to allocate %ld bytes",iter->nv*sizeof(double));
+        return GRIB_OUT_OF_MEMORY;
+    }
+    lats=self->lats;
+    lons=self->lons;
+
+    /* compute xFirst,yFirst in metres */
+    sinphi=sin(latFirst);
+    cosphi=cos(latFirst);
+    cosdlambda=cos(lonFirst-lambda0);
+    sindlambda=sin(lonFirst-lambda0);
+    kp=radius*sqrt(2.0/(1+sinphi1*sinphi+cosphi1*cosphi*cosdlambda));
+    xFirst=kp*cosphi*sindlambda;
+    yFirst=kp*(cosphi1*sinphi-sinphi1*cosphi*cosdlambda);
+
+    if (jPointsAreConsecutive) {
+
+        x=xFirst;
+        for (i=0;i<nx;i++) {
+            double xsq = x*x;
+            y=yFirst;
+            for (j=0;j<ny;j++) {
+                rho=sqrt(xsq+y*y);
+                if (rho>epsilon) {
+                    c=2*asin(rho/(2.0*radius));
+                    cosc=cos(c);
+                    sinc=sin(c);
+                    *lats=asin(cosc*sinphi1+y*sinc*cosphi1/rho)/d2r;
+                    *lons=(lambda0+atan2(x*sinc,rho*cosphi1*cosc-y*sinphi1*sinc))/d2r;
+                } else {
+                    *lats=phi1/d2r;
+                    *lons=lambda0/d2r;
+                }
+                if (*lons<0) *lons+=360;
+                lons++;
+                lats++;
+
+                y+=Dy;
+            }
+            x+=Dx;
         }
-        if (*lons<0) *lons+=360;
-        lons++;
-        lats++;
 
-        x+=Dx;
-      }
-      y+=Dy;
+    } else {
+
+        y=yFirst;
+        for (j=0;j<ny;j++) {
+            double ysq = y*y;
+            x=xFirst;
+            for (i=0;i<nx;i++) {
+                rho=sqrt(x*x+ysq);
+                if (rho>epsilon) {
+                    c=2*asin(rho/(2.0*radius));
+                    cosc=cos(c);
+                    sinc=sin(c);
+                    *lats=asin(cosc*sinphi1+y*sinc*cosphi1/rho)/d2r;
+                    *lons=(lambda0+atan2(x*sinc,rho*cosphi1*cosc-y*sinphi1*sinc))/d2r;
+                } else {
+                    *lats=phi1/d2r;
+                    *lons=lambda0/d2r;
+                }
+                if (*lons<0) *lons+=360;
+                lons++;
+                lats++;
+
+                x+=Dx;
+            }
+            y+=Dy;
+        }
     }
 
-  }
-  
-  iter->e = -1;
+    iter->e = -1;
 
-  return ret;
+    return ret;
 }
 
 static int destroy(grib_iterator* i)
 {
-  grib_iterator_lambert_azimuthal_equal_area* self = (grib_iterator_lambert_azimuthal_equal_area*)i;
-  const grib_context *c = i->h->context;
+    grib_iterator_lambert_azimuthal_equal_area* self = (grib_iterator_lambert_azimuthal_equal_area*)i;
+    const grib_context *c = i->h->context;
 
-  grib_context_free(c,self->lats);
-  grib_context_free(c,self->lons);
-  return 1;
+    grib_context_free(c,self->lats);
+    grib_context_free(c,self->lons);
+    return 1;
 }
-
diff --git a/src/grib_iterator_class_lambert_conformal.c b/src/grib_iterator_class_lambert_conformal.c
index f4097e3..2a66d65 100644
--- a/src/grib_iterator_class_lambert_conformal.c
+++ b/src/grib_iterator_class_lambert_conformal.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_iterator_class_latlon.c b/src/grib_iterator_class_latlon.c
index 7fcff9c..2c71169 100644
--- a/src/grib_iterator_class_latlon.c
+++ b/src/grib_iterator_class_latlon.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -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"
 
 /*
@@ -20,7 +16,7 @@
    START_CLASS_DEF
    CLASS      = iterator
    SUPER      = grib_iterator_class_regular
-   IMPLEMENTS = init
+   IMPLEMENTS = init;next
    END_CLASS_DEF
 
  */
@@ -39,6 +35,7 @@ or edit "iterator.class" and rerun ./make_class.pl
 static void init_class              (grib_iterator_class*);
 
 static int init               (grib_iterator* i,grib_handle*,grib_arguments*);
+static int next               (grib_iterator* i, double *lat, double *lon, double *val);
 
 
 typedef struct grib_iterator_latlon{
@@ -52,6 +49,10 @@ typedef struct grib_iterator_latlon{
 	long      nap;
 	long      nam;
 	long iScansNegatively;
+	long isRotated;
+	double angleOfRotation;
+	double southPoleLat;
+	double southPoleLon;
 /* Members defined in latlon */
 } grib_iterator_latlon;
 
@@ -65,7 +66,7 @@ static grib_iterator_class _grib_iterator_class_latlon = {
     &init_class,                 /* init_class */
     &init,                     /* constructor               */
     0,                  /* destructor                */
-    0,                     /* Next Value                */
+    &next,                     /* Next Value                */
     0,                 /*  Previous Value           */
     0,                    /* Reset the counter         */
     0,                 /* has next values           */
@@ -76,40 +77,138 @@ grib_iterator_class* grib_iterator_class_latlon = &_grib_iterator_class_latlon;
 
 static void init_class(grib_iterator_class* c)
 {
-	c->next	=	(*(c->super))->next;
 	c->previous	=	(*(c->super))->previous;
 	c->reset	=	(*(c->super))->reset;
 	c->has_next	=	(*(c->super))->has_next;
 }
 /* END_CLASS_IMP */
 
+#define RAD2DEG   57.29577951308232087684  /* 180 over pi */
+#define DEG2RAD    0.01745329251994329576  /* pi over 180 */
 
-static int init(grib_iterator* i,grib_handle* h,grib_arguments* args)
+void unrotate(grib_handle* h,
+        const double inlat, const double inlon,
+        const double angleOfRot, const double southPoleLat, const double southPoleLon,
+        double* outlat, double* outlon)
+{
+    /* Algorithm taken from ecKit */
+    const double lon_x = inlon;
+    const double lat_y = inlat;
+    /* First convert the data point from spherical lat lon to (x',y',z') */
+    double latr = lat_y * DEG2RAD;
+    double lonr = lon_x * DEG2RAD;
+    double xd = cos(lonr)*cos(latr);
+    double yd = sin(lonr)*cos(latr);
+    double zd = sin(latr);
+
+    double t = -(90.0 + southPoleLat);
+    double o = -southPoleLon;
+
+    double sin_t = sin(DEG2RAD * t);
+    double cos_t = cos(DEG2RAD * t);
+    double sin_o = sin(DEG2RAD * o);
+    double cos_o = cos(DEG2RAD * o);
+
+    double x = cos_t*cos_o*xd + sin_o*yd + sin_t*cos_o*zd;
+    double y = -cos_t*sin_o*xd + cos_o*yd - sin_t*sin_o*zd;
+    double z = -sin_t*xd + cos_t*zd;
+
+    double ret_lat=0, ret_lon=0;
+
+    /* Then convert back to 'normal' (lat,lon)
+     * Uses arcsin, to convert back to degrees, put in range -1 to 1 in case of slight rounding error
+     * avoid error on calculating e.g. asin(1.00000001) */
+    if (z > 1.0)  z = 1.0;
+    if (z < -1.0) z = -1.0;
+
+    ret_lat = asin(z) * RAD2DEG;
+    ret_lon = atan2(y, x) * RAD2DEG;
+
+    /* Still get a very small rounding error, round to 6 decimal places */
+    /* TODO: roundf implementation missing on MSVC! */
+#ifndef ECCODES_ON_WINDOWS
+    ret_lat = roundf( ret_lat * 1000000.0 )/1000000.0;
+    ret_lon = roundf( ret_lon * 1000000.0 )/1000000.0;
+#endif
+
+    ret_lon -= angleOfRot;
+
+    /* Make sure ret_lon is in range*/
+    /*
+    while (ret_lon < lonmin_) ret_lon += 360.0;
+    while (ret_lon >= lonmax_) ret_lon -= 360.0;
+     */
+    *outlat = ret_lat;
+    *outlon = ret_lon;
+}
+
+static int next(grib_iterator* i, double *lat, double *lon, double *val)
 {
-  grib_iterator_latlon* self = (grib_iterator_latlon*)i;
-  int ret = GRIB_SUCCESS;
-  double jdir;
-  double laf;
-  long jScansPositively;
+    /* GRIB-238: Support rotated lat/lon grids */
 
-  long lai;
+    double ret_lat, ret_lon, ret_val;
+    grib_iterator_latlon* self = (grib_iterator_latlon*)i;
 
-  const char* latofirst   = grib_arguments_get_name(h,args,self->carg++);
-  const char* jdirec      = grib_arguments_get_name(h,args,self->carg++);
-  const char* s_jScansPositively   = grib_arguments_get_name(h,args,self->carg++);
+    if((long)i->e >= (long)(i->nv-1))  return 0;
 
-  if((ret = grib_get_double_internal(h,latofirst,     &laf))) return ret;
-  if((ret = grib_get_double_internal(h,jdirec,        &jdir))) return ret;
-  if((ret = grib_get_long_internal(h,s_jScansPositively,&jScansPositively)))
-      return ret;
+    i->e++;
 
-  if (jScansPositively) jdir=-jdir;
+    ret_lat = self->las[(long)floor(i->e/self->nap)];
+    ret_lon = self->los[(long)i->e%self->nap];
+    ret_val = i->data[i->e];
 
-  for( lai = 0; lai <  self->nam; lai++ )  {
-    self->las[lai] = laf;
-    laf -= jdir ;
-  }
+    if (self->isRotated)
+    {
+        double new_lat = 0, new_lon = 0;
+        unrotate(i->h, ret_lat, ret_lon,
+                self->angleOfRotation, self->southPoleLat, self->southPoleLon,
+                &new_lat, &new_lon);
+        ret_lat = new_lat;
+        ret_lon = new_lon;
+    }
 
-  i->e = -1;
-  return ret;
+    *lat = ret_lat;
+    *lon = ret_lon;
+    *val = ret_val;
+    return 1;
+}
+
+static int init(grib_iterator* i,grib_handle* h,grib_arguments* args)
+{
+    grib_iterator_latlon* self = (grib_iterator_latlon*)i;
+    int ret = GRIB_SUCCESS;
+    double jdir;
+    double laf;
+    long jScansPositively;
+    long lai;
+
+    const char* latofirst   = grib_arguments_get_name(h,args,self->carg++);
+    const char* jdirec      = grib_arguments_get_name(h,args,self->carg++);
+    const char* s_jScansPositively   = grib_arguments_get_name(h,args,self->carg++);
+    self->angleOfRotation = 0;
+    self->isRotated = 0;
+    self->southPoleLat = 0;
+    self->southPoleLon = 0;
+
+    if ((ret = grib_get_long(h, "is_rotated_grid", &self->isRotated))) return ret;
+    if (self->isRotated) {
+        if ((ret = grib_get_double_internal(h,"angleOfRotation",                  &self->angleOfRotation))) return ret;
+        if ((ret = grib_get_double_internal(h,"latitudeOfSouthernPoleInDegrees",  &self->southPoleLat))) return ret;
+        if ((ret = grib_get_double_internal(h,"longitudeOfSouthernPoleInDegrees", &self->southPoleLon))) return ret;
+    }
+
+    if((ret = grib_get_double_internal(h,latofirst,     &laf))) return ret;
+    if((ret = grib_get_double_internal(h,jdirec,        &jdir))) return ret;
+    if((ret = grib_get_long_internal(h,s_jScansPositively,&jScansPositively)))
+        return ret;
+
+    if (jScansPositively) jdir=-jdir;
+
+    for( lai = 0; lai <  self->nam; lai++ )  {
+        self->las[lai] = laf;
+        laf -= jdir ;
+    }
+
+    i->e = -1;
+    return ret;
 }
diff --git a/src/grib_iterator_class_latlon_reduced.c b/src/grib_iterator_class_latlon_reduced.c
index a815145..45440f1 100644
--- a/src/grib_iterator_class_latlon_reduced.c
+++ b/src/grib_iterator_class_latlon_reduced.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_iterator_class_polar_stereographic.c b/src/grib_iterator_class_polar_stereographic.c
index 53bf189..7a21b2c 100644
--- a/src/grib_iterator_class_polar_stereographic.c
+++ b/src/grib_iterator_class_polar_stereographic.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_iterator_class_regular.c b/src/grib_iterator_class_regular.c
index d9b8117..3c12544 100644
--- a/src/grib_iterator_class_regular.c
+++ b/src/grib_iterator_class_regular.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -19,11 +19,15 @@
    SUPER      = grib_iterator_class_gen
    IMPLEMENTS = previous;next
    IMPLEMENTS = init;destroy
-   MEMBERS     =  double   *las
-   MEMBERS     =  double   *los
-   MEMBERS     =  long      nap
-   MEMBERS     =  long      nam
-   MEMBERS     =  long iScansNegatively
+   MEMBERS    =  double   *las
+   MEMBERS    =  double   *los
+   MEMBERS    =  long      nap
+   MEMBERS    =  long      nam
+   MEMBERS    =  long iScansNegatively
+   MEMBERS    = long isRotated
+   MEMBERS    = double angleOfRotation
+   MEMBERS    = double southPoleLat
+   MEMBERS    = double southPoleLon
    END_CLASS_DEF
 
  */
@@ -58,6 +62,10 @@ typedef struct grib_iterator_regular{
 	long      nap;
 	long      nam;
 	long iScansNegatively;
+	long isRotated;
+	double angleOfRotation;
+	double southPoleLat;
+	double southPoleLon;
 } grib_iterator_regular;
 
 extern grib_iterator_class* grib_iterator_class_gen;
@@ -126,8 +134,8 @@ static int init(grib_iterator* i,grib_handle* h,grib_arguments* args)
     grib_iterator_regular* self = (grib_iterator_regular*)i;
     int ret = GRIB_SUCCESS;
 
-    long nap; /* Ni */
-    long nam; /* Nj */
+    long nap; /* Number of points along a parallel = Ni */
+    long nam; /* Number of points along a meridian = Nj */
     double idir, lof,lol;
     long loi;
 
@@ -145,24 +153,26 @@ static int init(grib_iterator* i,grib_handle* h,grib_arguments* args)
     if((ret = grib_get_long_internal(h,iScansNegatively,&self->iScansNegatively)))
         return ret;
 
-    /* Note: If first and last longitudes are equal I assume you wanna go round the globe */
-    if (self->iScansNegatively) {
-        if (lof > lol){
-            idir=(lof-lol)/(nap-1);
-        }
-        else {
-            idir=(lof+360.0-lol)/(nap-1);
-        }
-    }
-    else {
-        if (lol > lof){
-            idir=(lol-lof)/(nap-1);
+    /* GRIB-801: Careful of case with a single point! nap==1 */
+    if (nap > 1) {
+        /* Note: If first and last longitudes are equal I assume you wanna go round the globe */
+        if (self->iScansNegatively) {
+            if (lof > lol){
+                idir=(lof-lol)/(nap-1);
+            }
+            else {
+                idir=(lof+360.0-lol)/(nap-1);
+            }
         }
         else {
-            idir=(lol+360.0-lof)/(nap-1);
+            if (lol > lof){
+                idir=(lol-lof)/(nap-1);
+            }
+            else {
+                idir=(lol+360.0-lof)/(nap-1);
+            }
         }
     }
-
     if (self->iScansNegatively) {
         idir=-idir;
     } else {
diff --git a/src/grib_itrie.c b/src/grib_itrie.c
old mode 100755
new mode 100644
index ab6ade9..01b0b14
--- a/src/grib_itrie.c
+++ b/src/grib_itrie.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -284,6 +284,21 @@ static void init() {
   pthread_mutexattr_destroy(&attr);
 
 }
+#elif GRIB_OMP_THREADS
+static int once = 0;
+static omp_nest_lock_t mutex;
+
+static void init()
+{
+    GRIB_OMP_CRITICAL(lock_grib_itrie_c)
+    {
+        if (once == 0)
+        {
+            omp_init_nest_lock(&mutex);
+            once = 1;
+        }
+    }
+}
 #endif
 struct grib_itrie {
   grib_itrie* next[SIZE];
@@ -303,7 +318,7 @@ grib_itrie *grib_itrie_new(grib_context* c,int* count)
 }
 
 void grib_itrie_delete(grib_itrie *t) {
-  GRIB_PTHREAD_ONCE(&once,&init)
+  GRIB_MUTEX_INIT_ONCE(&once,&init)
   GRIB_MUTEX_LOCK(&mutex)
 
   if(t)  {
@@ -324,7 +339,7 @@ int grib_itrie_get_id(grib_itrie* t,const char* key)
   const char *k=key;
   grib_itrie* last=t;
 
-  GRIB_PTHREAD_ONCE(&once,&init)
+  GRIB_MUTEX_INIT_ONCE(&once,&init)
   GRIB_MUTEX_LOCK(&mutex)
 
   while(*k && t)  t = t->next[mapping[(int)*k++]];
@@ -345,7 +360,7 @@ int grib_itrie_insert(grib_itrie* t,const char* key)
   grib_itrie *last = t;
   int* count;
 
-  GRIB_PTHREAD_ONCE(&once,&init)
+  GRIB_MUTEX_INIT_ONCE(&once,&init)
 
   GRIB_MUTEX_LOCK(&mutex)
 
diff --git a/src/grib_itrie_keys.c b/src/grib_itrie_keys.c
old mode 100755
new mode 100644
index ea146a1..3b50cbb
--- a/src/grib_itrie_keys.c
+++ b/src/grib_itrie_keys.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -303,7 +303,7 @@ grib_itrie *grib_hash_keys_new(grib_context* c,int* count) {
 }
 
 void grib_hash_keys_delete(grib_itrie *t) {
-  GRIB_PTHREAD_ONCE(&once,&init)
+  GRIB_MUTEX_INIT_ONCE(&once,&init)
   GRIB_MUTEX_LOCK(&mutex)
 
   if(t)  {
@@ -333,7 +333,7 @@ int grib_hash_keys_get_id(grib_itrie* t,const char* key)
 
   /* printf("+++ \"%s\"\n",key); */
 
-  GRIB_PTHREAD_ONCE(&once,&init)
+  GRIB_MUTEX_INIT_ONCE(&once,&init)
   GRIB_MUTEX_LOCK(&mutex)
 
   while(*k && t)  t = t->next[mapping[(int)*k++]];
@@ -354,7 +354,7 @@ int grib_hash_keys_insert(grib_itrie* t,const char* key)
   grib_itrie *last = t;
   int* count;
 
-  GRIB_PTHREAD_ONCE(&once,&init)
+  GRIB_MUTEX_INIT_ONCE(&once,&init)
 
   GRIB_MUTEX_LOCK(&mutex)
 
diff --git a/src/grib_jasper_encoding.c b/src/grib_jasper_encoding.c
index 8c82bf2..b9fbafc 100644
--- a/src/grib_jasper_encoding.c
+++ b/src/grib_jasper_encoding.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -209,13 +209,13 @@ cleanup:
 
 int grib_jasper_decode(grib_context *c, unsigned char *buf, size_t *buflen, double *val, size_t *n_vals) {
     grib_context_log(c, GRIB_LOG_ERROR,
-            "grib_accessor_data_jpeg2000_packing: jasper jpeg support not enabled. Please rerun configure with --with-jasper");
+            "grib_accessor_data_jpeg2000_packing: Jasper JPEG support not enabled.");
     return GRIB_NOT_IMPLEMENTED;
 }
 
 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. Please rerun configure with --with-jasper");
+            "grib_accessor_data_jpeg2000_packing: Jasper JPEG support not enabled.");
     return GRIB_NOT_IMPLEMENTED;
 }
 
diff --git a/src/grib_keys_iterator.c b/src/grib_keys_iterator.c
index 30cbeb8..a369379 100644
--- a/src/grib_keys_iterator.c
+++ b/src/grib_keys_iterator.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -33,7 +33,7 @@ struct grib_keys_iterator{
     grib_trie     *seen;
 };
 
-grib_keys_iterator*  grib_keys_iterator_new(grib_handle* h,unsigned long filter_flags, char* name_space)
+grib_keys_iterator*  grib_keys_iterator_new(grib_handle* h,unsigned long filter_flags, const char* name_space)
 {
     grib_keys_iterator* ki=NULL;
 
diff --git a/src/grib_lex.c b/src/grib_lex.c
index baa7c44..3e8345f 100644
--- a/src/grib_lex.c
+++ b/src/grib_lex.c
@@ -1,5 +1,6 @@
+#line 2 "gribl.c"
 
-#line 3 "lex.grib_yy.c"
+#line 4 "gribl.c"
 
 #define  YY_INT_ALIGNED short int
 
@@ -8,7 +9,7 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 35
+#define YY_FLEX_SUBMINOR_VERSION 37
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -53,7 +54,6 @@ typedef int flex_int32_t;
 typedef unsigned char flex_uint8_t; 
 typedef unsigned short int flex_uint16_t;
 typedef unsigned int flex_uint32_t;
-#endif /* ! C99 */
 
 /* Limits of integral types. */
 #ifndef INT8_MIN
@@ -84,6 +84,8 @@ typedef unsigned int flex_uint32_t;
 #define UINT32_MAX             (4294967295U)
 #endif
 
+#endif /* ! C99 */
+
 #endif /* ! FLEXINT_H */
 
 #ifdef __cplusplus
@@ -152,7 +154,12 @@ typedef unsigned int flex_uint32_t;
 typedef struct grib_yy_buffer_state *YY_BUFFER_STATE;
 #endif
 
-extern int grib_yyleng;
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t grib_yy_size_t;
+#endif
+
+extern grib_yy_size_t grib_yyleng;
 
 extern FILE *grib_yyin, *grib_yyout;
 
@@ -178,11 +185,6 @@ extern FILE *grib_yyin, *grib_yyout;
 
 #define unput(c) grib_yyunput( c, (grib_yytext_ptr)  )
 
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t grib_yy_size_t;
-#endif
-
 #ifndef YY_STRUCT_YY_BUFFER_STATE
 #define YY_STRUCT_YY_BUFFER_STATE
 struct grib_yy_buffer_state
@@ -200,7 +202,7 @@ struct grib_yy_buffer_state
 	/* Number of characters read into grib_yy_ch_buf, not including EOB
 	 * characters.
 	 */
-	int grib_yy_n_chars;
+	grib_yy_size_t grib_yy_n_chars;
 
 	/* Whether we "own" the buffer - i.e., we know we created it,
 	 * and can realloc() it to grow it, and should free() it to
@@ -270,8 +272,8 @@ static YY_BUFFER_STATE * grib_yy_buffer_stack = 0; /**< Stack as an array. */
 
 /* grib_yy_hold_char holds the character lost when grib_yytext is formed. */
 static char grib_yy_hold_char;
-static int grib_yy_n_chars;		/* number of characters read into grib_yy_ch_buf */
-int grib_yyleng;
+static grib_yy_size_t grib_yy_n_chars;		/* number of characters read into grib_yy_ch_buf */
+grib_yy_size_t grib_yyleng;
 
 /* Points to current character in buffer. */
 static char *grib_yy_c_buf_p = (char *) 0;
@@ -299,7 +301,7 @@ static void grib_yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
 
 YY_BUFFER_STATE grib_yy_scan_buffer (char *base,grib_yy_size_t size  );
 YY_BUFFER_STATE grib_yy_scan_string (grib_yyconst char *grib_yy_str  );
-YY_BUFFER_STATE grib_yy_scan_bytes (grib_yyconst char *bytes,int len  );
+YY_BUFFER_STATE grib_yy_scan_bytes (grib_yyconst char *bytes,grib_yy_size_t len  );
 
 void *grib_yyalloc (grib_yy_size_t  );
 void *grib_yyrealloc (void *,grib_yy_size_t  );
@@ -368,91 +370,96 @@ struct grib_yy_trans_info
 	flex_int32_t grib_yy_verify;
 	flex_int32_t grib_yy_nxt;
 	};
-static grib_yyconst flex_int16_t grib_yy_accept[760] =
+static grib_yyconst flex_int16_t grib_yy_accept[794] =
     {   0,
       137,  137,  141,  139,  137,  138,   12,  128,  136,  139,
-      139,  139,  131,    5,  139,    3,  130,  130,  130,  129,
+      139,  139,  139,  131,    5,  139,    3,  130,  130,  130,
+      129,  130,  130,  130,  130,  130,  130,  130,  130,  130,
       130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
+      130,  130,  130,  139,   18,  137,    6,    0,   14,  132,
+      134,    0,    0,  133,  131,    0,    4,    7,    1,    2,
       130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,  139,   18,  137,    6,   14,  132,  134,    0,
-      133,  131,    0,    4,    7,    1,    2,  130,  130,  130,
       130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
       130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,  130,   23,  130,
-       10,  130,  130,  130,  130,  130,  130,  130,  130,  130,
+      130,   23,  130,   10,  130,  130,  130,  130,  130,  130,
 
-      130,  130,  130,   15,  130,  130,  130,  130,  130,  130,
+      130,  130,  130,  130,  130,  130,   15,  130,  130,  130,
+      130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
+      130,  130,  130,  130,  130,  130,  130,   16,    0,    0,
+        0,    0,    0,  135,  133,    0,    0,  135,  130,   24,
+      130,   13,  130,  130,  130,    8,  130,   66,  130,  130,
       130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,   16,    0,  135,  133,    0,    0,
-      135,  130,   24,  130,   13,  130,  130,  130,    8,  130,
-       66,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,   35,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  100,  130,  130,  130,
+      130,  130,   35,  130,  130,  130,  130,  130,  130,  130,
+      130,  130,  130,  100,  130,  130,  130,  130,  130,  130,
       130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,   11,  130,  130,   52,  130,  130,  130,
-      130,  130,  130,  114,  130,  130,  130,  130,  130,  130,
+       11,  130,  130,   52,  130,  130,  130,  130,  130,  130,
 
+      114,  130,  130,  130,  130,  130,  130,  130,  130,  130,
+      130,  130,  130,  130,  130,  130,  130,  130,   91,  130,
+        0,  134,    0,    0,    0,    0,    0,  133,  130,  130,
+      130,  130,  130,  113,   28,  130,  117,  130,  130,  130,
+      130,  130,  130,  130,  130,  130,   89,  130,   25,  130,
       130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,   91,    0,  134,    0,    0,  133,  130,  130,  130,
-      130,  130,  113,   28,  130,  117,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,   89,  130,   25,  130,  130,
+      130,  130,  130,  130,  130,  130,  130,   90,   67,  130,
+      130,   30,  130,  130,  130,  130,   48,  130,  130,  130,
+      130,  130,  130,   17,  130,  130,  130,  130,  130,  130,
+      130,  130,  130,  130,  130,  126,  130,  130,  130,  130,
+
+      130,  130,  130,  130,  130,  130,  130,  130,  116,  130,
+      130,  130,  130,    0,    0,    0,    0,    0,    0,  133,
+      130,   56,  130,   27,  130,  130,   20,  130,  130,  130,
+      130,  130,  130,  130,  130,  130,  130,  130,   44,  130,
+      130,  130,  130,   46,  130,  130,  130,  130,  130,  102,
+      106,  110,  130,  130,  130,  130,   29,  130,  130,  130,
+      130,  130,  130,  130,  130,  130,  130,  130,  130,   50,
+      130,  125,  130,  130,  130,  130,  130,  130,  130,  130,
       130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,   90,   67,  130,  130,
-       30,  130,  130,  130,  130,   48,  130,  130,  130,  130,
-      130,  130,   17,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  126,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,  116,  130,  130,
+      130,   99,  130,  130,   31,  123,    0,    0,    0,    0,
+
+      130,    0,    0,  130,  124,   85,  130,  130,  130,  130,
+      130,  130,  130,  130,  130,  130,  130,   74,  130,  130,
+      130,  130,   40,  130,   93,  130,  130,  130,  130,  130,
+      130,  130,  130,  130,  130,  130,   21,  130,   45,  130,
+      130,   70,  130,  130,  130,  130,    9,  130,  130,  130,
+      130,  130,   75,   76,  130,  130,  130,   38,  130,  130,
+       19,  118,  130,  130,  130,  130,  130,  101,  105,  109,
+      130,  130,    0,    0,    0,    0,    0,  130,  130,   95,
+      130,  130,  130,  120,  130,  130,   98,  119,  130,  130,
+      130,   68,  130,  130,  130,  130,  130,  130,  127,  130,
 
-        0,  133,  130,   56,  130,   27,  130,  130,   20,  130,
       130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-       44,  130,  130,  130,  130,   46,  130,  130,  130,  130,
-      130,  102,  106,  110,  130,  130,  130,  130,   29,  130,
+       54,   65,   87,   92,  130,  130,  130,  130,  130,  130,
+      130,  130,  130,  130,  130,  130,  130,  130,  130,   34,
+      130,  130,  130,   57,  130,    0,    0,  130,  130,  130,
+      130,   59,  130,  130,  130,  130,  130,  130,  130,  130,
+       36,  130,  130,  130,  130,  130,  130,  130,  130,   64,
+      130,  130,  130,  130,  130,   97,  130,  130,   58,  130,
+      130,  130,  130,  130,  130,   32,  130,  130,  130,  130,
+      130,  130,   26,  130,   39,  130,  130,  130,  130,  130,
+      130,  130,  130,  130,  130,   37,  130,  130,  130,  130,
+
+      130,  130,   83,  130,   62,   22,  130,   47,   49,  130,
+       86,  130,  130,  130,  130,  130,  130,  130,  130,   80,
+       60,  130,  130,  130,  130,  130,  130,   96,  130,  130,
+      130,  130,  130,  130,  122,  130,  130,  130,   78,   77,
+       82,  130,  130,  130,  130,  130,  115,  130,  130,  130,
+      130,   79,  130,  130,  130,  130,  130,  130,   42,   63,
+      130,  130,  130,  130,  130,  130,  130,   69,  130,  130,
+      130,  130,  130,   41,   61,  130,  130,  130,  130,  130,
+      130,  130,  130,  130,  130,  130,  130,  130,  130,   55,
       130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,   50,  130,  125,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,   99,  130,  130,   31,  123,  130,  124,
-       85,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,   74,  130,  130,  130,  130,   40,  130,   93,
 
+      130,  130,  130,  130,  130,  130,  130,  130,   51,  130,
+      130,  130,  130,  130,  130,  130,   94,  130,  121,  130,
+      130,  130,  130,  130,  130,  130,   84,  130,  130,  130,
       130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,   21,  130,   45,  130,  130,   70,  130,  130,  130,
-      130,    9,  130,  130,  130,  130,  130,   75,   76,  130,
-      130,  130,   38,  130,  130,   19,  118,  130,  130,  130,
-      130,  130,  101,  105,  109,  130,  130,   95,  130,  130,
-      130,  120,  130,  130,   98,  119,  130,  130,  130,   68,
-      130,  130,  130,  130,  130,  130,  127,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,  130,   54,   65,
-       87,   92,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,   34,  130,  130,
-
-      130,   57,  130,  130,  130,  130,  130,   59,  130,  130,
-      130,  130,  130,  130,  130,  130,   36,  130,  130,  130,
-      130,  130,  130,  130,  130,   64,  130,  130,  130,  130,
-      130,   97,  130,  130,   58,  130,  130,  130,  130,  130,
-      130,   32,  130,  130,  130,  130,  130,  130,   26,  130,
-       39,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,   37,  130,  130,  130,  130,  130,  130,   83,  130,
-       62,   22,  130,   47,   49,  130,   86,  130,  130,  130,
-      130,  130,  130,  130,  130,   80,   60,  130,  130,  130,
-      130,  130,  130,   96,  130,  130,  130,  130,  130,  130,
-
-      122,  130,  130,  130,   78,   77,   82,  130,  130,  130,
-      130,  130,  115,  130,  130,  130,  130,   79,  130,  130,
-      130,  130,  130,  130,   42,   63,  130,  130,  130,  130,
-      130,  130,  130,   69,  130,  130,  130,  130,  130,   41,
-       61,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,   55,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,   51,  130,  130,  130,  130,  130,
-      130,  130,   94,  130,  121,  130,  130,  130,  130,  130,
-      130,  130,   84,  130,  130,  130,  130,  130,  130,  130,
-
-      130,  130,  130,  130,  130,  130,  130,   53,  130,   33,
-      130,  130,  130,  130,   88,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,   43,  130,   72,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,   73,  130,  130,
-      130,  130,  130,  130,  130,  130,  104,  108,  112,   81,
-      130,  130,  130,  130,  103,  107,  111,   71,    0
+      130,   53,  130,   33,  130,  130,  130,  130,   88,  130,
+      130,  130,  130,  130,  130,  130,  130,  130,  130,   43,
+      130,   72,  130,  130,  130,  130,  130,  130,  130,  130,
+      130,   73,  130,  130,  130,  130,  130,  130,  130,  130,
+      104,  108,  112,   81,  130,  130,  130,  130,  103,  107,
+      111,   71,    0
+
     } ;
 
 static grib_yyconst flex_int32_t grib_yy_ec[256] =
@@ -461,16 +468,16 @@ static grib_yyconst flex_int32_t grib_yy_ec[256] =
         1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    2,    4,    5,    6,    1,    1,    7,    8,    1,
-        1,    1,    9,    1,    9,   10,    1,   11,   12,   13,
-       14,   15,   11,   16,   11,   17,   11,    1,    1,   18,
-       19,   20,    1,    1,   21,   21,   21,   21,   22,   21,
-       23,   21,   24,   21,   21,   21,   25,   26,   21,   21,
-       21,   21,   27,   21,   21,   21,   21,   21,   21,   21,
-        1,    1,    1,    1,   28,   29,   30,   31,   32,   33,
-
-       34,   35,   36,   37,   38,   39,   40,   41,   42,   43,
-       44,   45,   21,   46,   47,   48,   49,   50,   51,   52,
-       53,   21,    1,   54,    1,   55,    1,    1,    1,    1,
+        1,    1,    9,    1,    9,   10,   11,   12,   13,   14,
+       15,   16,   12,   17,   12,   18,   12,    1,    1,   19,
+       20,   21,    1,    1,   22,   22,   22,   22,   23,   22,
+       24,   22,   25,   22,   22,   22,   26,   27,   22,   22,
+       22,   22,   28,   22,   22,   22,   22,   22,   22,   22,
+        1,    1,    1,    1,   29,   30,   31,   32,   33,   34,
+
+       35,   36,   37,   38,   39,   40,   41,   42,   43,   44,
+       45,   46,   22,   47,   48,   49,   50,   51,   52,   53,
+       54,   22,    1,   55,    1,   56,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -487,530 +494,596 @@ static grib_yyconst flex_int32_t grib_yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static grib_yyconst flex_int32_t grib_yy_meta[56] =
+static grib_yyconst flex_int32_t grib_yy_meta[57] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    2,    2,
-        3,    3,    3,    3,    3,    3,    3,    1,    1,    1,
-        4,    3,    4,    4,    4,    4,    4,    4,    1,    4,
-        4,    4,    4,    3,    4,    4,    4,    4,    4,    4,
-        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
-        4,    4,    4,    1,    1
+        3,    4,    4,    4,    4,    4,    4,    4,    1,    5,
+        1,    6,    7,    6,    6,    6,    6,    6,    6,    1,
+        6,    6,    6,    6,    7,    6,    6,    6,    6,    6,
+        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
+        6,    6,    6,    6,    1,    1
     } ;
 
-static grib_yyconst flex_int16_t grib_yy_base[767] =
+static grib_yyconst flex_int16_t grib_yy_base[813] =
     {   0,
-        0,    0, 1454, 1455, 1451, 1455, 1433, 1455, 1455, 1444,
-       45,   52,   61,   53, 1431, 1430,   63,   73,   58, 1455,
-       57,   67,   69,   83,   82,   68,  102,   92,  104,   77,
-       94,  116,  109,  121,  113,  132,   95,  133,  145,  134,
-      137,   70, 1394, 1455, 1445, 1455, 1455,  176,  146,  188,
-      172,  186,  200, 1455, 1455, 1455, 1455,    0, 1422,  163,
-      107,  169,  164,  194,  195,  197,  120,  198,  199,  201,
-      202,  210,  200,  204,  205,  207,  213,  209,  208,  214,
-      233, 1417,  216,  234,  236,  237,  238,  241, 1420,  242,
-      243,  245,  244,  248,  253,  249,  252,  257,  262,  261,
-
-      263,  274,  125, 1419,  271,  273,  265,  280,  283,  279,
-      292,  291,  290,  295,  299,  297,  300,  308,  309,  310,
-      313,  314,  316,  320, 1455,  353,  341,  323,  365,  372,
-      379,  322, 1418,  373, 1417,  374,  334,  375, 1416,  376,
-     1415,  377,  331,  378,  380,  381,  386,  382,  389,  392,
-      393,  394,  395,  396,  399, 1414,  402,  400,  401,  411,
-      404,  397,  406,  423,  425,  332,  438,  413,  431,  433,
-      436,  437,  439,  440,  442,  441,  445,  443,  450,  446,
-      448,  461,  458,  467,  459,  449,  463,  465,  473,  468,
-      475,  478,  480,  481,  482,  483,  486,  489,  491,  490,
-
-      493,  494,  496,  497,  500,  498,  501,  506,  508,  509,
-      499, 1413,  541,  548,  557,  564,  571, 1412,  543,  565,
-      567,  503, 1411, 1410,  514, 1409,  568,  569,  570,  572,
-      571,  573,  574,  575,  580, 1408,  576, 1407,  583,  585,
-     1400, 1395, 1394,  588,  589,  594,  586,  600,  591,  601,
-     1411, 1413, 1410,  603,  604,  606, 1400,  621,  611,  613,
-     1399,  614,  615,  616,  619, 1398,  620,  623,  624,  630,
-      635,  632, 1397,  627,  634,  639,  642,  643,  645,  650,
-      648,  651,  652,  655, 1396,  653,  656,  657,  659,  661,
-      660,  658,  669,  672,  695,  676,  674, 1395,  689,  691,
-
-      715,  722,  694, 1394,  716, 1393,  673,  717, 1392,  718,
-      719,  700,  720,  723,  722,  728,  730,  732,  731,  733,
-     1391, 1373, 1366, 1380,  734, 1387,  735,  737,  738,  736,
-      745, 1382, 1381, 1380,  744,  680,  746, 1373, 1382,  749,
-      750,  757,  759,  761,  763,  764,  765,  766,  771,  769,
-      775,  772,  777, 1381,  776,  784,  785,  779,  781,  797,
-      800,  798,  803,  783,  804,  806,  808,  811,  810,  813,
-     1388, 1390, 1387,    0,  814,  816, 1377, 1376,  819, 1375,
-     1374,  821,  822,  826,  827,  828,  830,  834,  831,  838,
-      837,  839, 1373,  840, 1361, 1348, 1346, 1369,  843, 1368,
-
-      846,  842,  849, 1350, 1349, 1348,  844,  856,  860,  857,
-     1336, 1363,  845, 1362,  863,  868, 1361,  870,  871,  872,
-      875, 1360,  873,  876,  879,  881,  880, 1359, 1358,  884,
-      886,  883, 1357,  885,  887, 1356, 1355,  888,  895,  893,
-      898,  892, 1350, 1349, 1348,  890,  910, 1351,  911,  915,
-      917,  918,  916,  919, 1350, 1349,  924,  923,  927, 1348,
-     1343, 1340, 1331,  926,  925,  928, 1344, 1329, 1328, 1327,
-      936,  937,  941,  935,  938, 1319,  942,  939,  952, 1339,
-     1338, 1337,  944,  954,  955,  958,  959,  966,  967,  968,
-      970,  973,  961,  972,  969,  976,  977, 1336, 1318, 1317,
-
-     1316, 1332,  980,  986,  987,  990,  988, 1331,  991,  992,
-      993,  994, 1323, 1317, 1308,  999, 1327, 1001, 1302, 1301,
-     1300, 1003, 1004, 1002, 1006, 1323, 1296, 1008, 1009, 1013,
-     1020, 1321, 1015, 1016, 1320, 1023, 1024, 1029, 1030, 1031,
-     1032, 1033, 1036, 1035, 1039, 1305, 1304, 1303, 1316, 1042,
-     1315, 1044, 1049, 1050, 1051, 1054, 1055, 1285, 1303, 1293,
-     1053, 1311, 1286, 1285, 1284, 1056, 1057, 1062, 1307, 1296,
-     1305, 1304, 1058, 1303, 1302, 1071, 1301, 1060, 1066, 1073,
-     1077, 1079, 1067, 1068, 1086, 1300, 1299, 1274, 1273, 1272,
-     1089, 1091, 1092, 1295, 1093, 1094, 1095, 1270, 1289, 1301,
-
-     1291, 1273, 1272, 1271, 1287, 1286, 1285, 1262, 1097, 1098,
-     1101, 1102, 1283, 1099, 1107, 1113, 1109, 1282, 1257, 1256,
-     1255, 1110, 1115, 1121, 1278, 1277, 1114, 1266, 1258, 1270,
-     1263, 1262, 1261,    0, 1126, 1128, 1130, 1131, 1143, 1270,
-     1269, 1133, 1251, 1250, 1249, 1134, 1135, 1136, 1137, 1261,
-     1254, 1246, 1258, 1257, 1256, 1259, 1138, 1139, 1146, 1249,
-     1141, 1247, 1246, 1245, 1149, 1152, 1154, 1156, 1246, 1234,
-     1242, 1241, 1240, 1239, 1248, 1157, 1162, 1237, 1164, 1242,
-     1241, 1240, 1243, 1165, 1242, 1166, 1221, 1228, 1220, 1219,
-     1218, 1217, 1235, 1173, 1226, 1169, 1223, 1222, 1221, 1174,
-
-     1168, 1221, 1205, 1216, 1218, 1217, 1216, 1224, 1209, 1222,
-     1202, 1201, 1200, 1177, 1218, 1207, 1203, 1191, 1200, 1199,
-     1198, 1193, 1201, 1200, 1199, 1207, 1195,    0, 1192, 1198,
-     1197, 1196, 1184, 1175, 1174, 1170, 1166,    0, 1163, 1160,
-     1156,  929,  937,  687,  518,  402,    0,    0,    0,    0,
-      328,  253,  248,  194,    0,    0,    0,    0, 1455, 1214,
-     1215, 1218,  189,  100, 1219, 1222
+        0,    0, 1697, 1698, 1694, 1698, 1675, 1698,   45, 1687,
+       52,   59,    0,   69,   60, 1673, 1672,   70,   81,   64,
+     1698,   65,   75,   77,   91,   90,   76,  110,  100,  112,
+       80,   85,  124,  117,  129,  121,  140,  115,  141,  153,
+      142,  145,  152, 1636, 1698, 1688, 1698,  190, 1698,  200,
+      166,  199,  212,  197,  224,  227, 1698, 1698, 1698, 1698,
+        0, 1664,  169,  102,  212,   87,  206,  213,  126,  128,
+      196,  223,  174,  225,  230,  229,  233,  228,  232,  238,
+      231,  235,  237,  255, 1659,  242,  243,  246,  256,  257,
+      260, 1662,  259,  264,  262,  271,  274,  273,  276,  277,
+
+      278,  279,  281,  282,  285,  293, 1661,  286,  292,  294,
+      299,  306,  307,  308,  314,  316,  311,  319,  318,  321,
+      323,  330,  329,  334,  337,  338,  341, 1698,    0,  372,
+     1665,  358,  379,  391,  375,  403,  390,  415,  346, 1659,
+      409, 1658,  345,  384,  400, 1657,  411, 1656,  412,  350,
+      413,  397,  414,  416,  417,  399,  421,  419,  426,  429,
+      430,  431, 1655,  432,  434,  426,  435,  436,  438,  447,
+      442,  448,  455,  474,  457,  459,  460,  465,  467,  463,
+      468,  470,  469,  478,  480,  483,  484,  486,  491,  490,
+      493,  487,  495,  496,  497,  505,  501,  506,  507,  509,
+
+      512,  515,  518,  514,  519,  522,  523,  525,  527,  528,
+      531,  532,  529,  530,  538,  539,  540,  543, 1654,  572,
+      581,  588,  595,  602,  612,  615,  624,  636, 1653,  609,
+      600,  620,  534, 1652, 1651,  630, 1650,  545,  618,  621,
+      631,  633,  635,  636,  640,  643, 1649,  645, 1648,  646,
+      647, 1641, 1636, 1635,  648,  650,  649,  652,  655,  658,
+      651, 1652, 1654, 1651,  656,  663,  673, 1641,  566,  664,
+      665, 1640,  674,  666,  677,  680, 1639,  682,  684,  683,
+      690,  692,  687, 1638,  685,  695,  697,  700,  702,  704,
+      705,  708,  709,  713,  710, 1637,  711,  712,  714,  718,
+
+      716,  717,  719,  727,  729,  752,  732,  737, 1636,  747,
+      748,    0,  772,  768,  780,  788,    0,  792,  800,  812,
+      386, 1635,  797, 1634,  751,  807, 1633,  808,  809,  734,
+      810,  795,  739,  811,  812,  813,  753,  821, 1632, 1614,
+     1607, 1621,  794, 1628,  818,  823,  825,  826,  827, 1623,
+     1622, 1621,  837,  828,  829, 1614, 1623,  831,  830,  838,
+      839,  840,  848,  849,  850,  851,  856,  855,  860,  857,
+      862, 1622,  858,  870,  881,  863,  864,  882,  885,  886,
+      887,  866,  889,  895,  869,  896,  897,  898, 1629, 1631,
+     1628,    0,  900,  903, 1618, 1617,  936,  946,  954,  958,
+
+      970,  978,  986,  905, 1616, 1615,  909,  907,  915,  917,
+      980,  910,  981,  982,  983,  984,  985, 1614,  986, 1602,
+     1589, 1587, 1610,  987, 1609,  989,  991,  990, 1591, 1590,
+     1589,  996,  992,  912,  994, 1577, 1604,  998, 1603, 1001,
+     1008, 1602, 1012, 1003, 1016, 1017, 1601, 1015, 1019, 1021,
+     1020, 1022, 1600, 1599, 1023, 1026, 1025, 1598, 1028, 1030,
+     1597, 1596, 1029, 1039, 1043, 1044, 1047, 1591, 1590, 1589,
+     1035, 1050, 1074, 1084, 1094, 1101, 1109,    0, 1116, 1592,
+     1110, 1051, 1055, 1111, 1056, 1112, 1591, 1590, 1113, 1114,
+     1116, 1589, 1584, 1581, 1572, 1117, 1118, 1121, 1585, 1570,
+
+     1569, 1568, 1122, 1123, 1129, 1124, 1125, 1560, 1130, 1131,
+     1140, 1580, 1579, 1578, 1132, 1133, 1146, 1135, 1148, 1149,
+     1153, 1155, 1150, 1159, 1158, 1160, 1162, 1168, 1169, 1577,
+     1559, 1558, 1557, 1573, 1163, 1188, 1203, 1171, 1173, 1197,
+     1184, 1572, 1198, 1186, 1199, 1200, 1564, 1558, 1549, 1201,
+     1568, 1202, 1543, 1542, 1541, 1204, 1206, 1209, 1210, 1564,
+     1537, 1211, 1214, 1222, 1225, 1562, 1215, 1213, 1561, 1216,
+     1218, 1227, 1220, 1233, 1236, 1242, 1243, 1244, 1247, 1546,
+     1545, 1544, 1557, 1249, 1556, 1248, 1250, 1251, 1252, 1255,
+     1257, 1526, 1544, 1534, 1254, 1552, 1527, 1526, 1525, 1258,
+
+     1261, 1259, 1548, 1537, 1546, 1545, 1264, 1544, 1543, 1263,
+     1542, 1269, 1267, 1274, 1280, 1287, 1288, 1289, 1290, 1541,
+     1540, 1515, 1514, 1513, 1292, 1293, 1294, 1536, 1297, 1296,
+     1301, 1511, 1530, 1542, 1532, 1514, 1513, 1512, 1528, 1527,
+     1526, 1503, 1295, 1298, 1299, 1313, 1524, 1300, 1314, 1320,
+     1303, 1523, 1498, 1497, 1496, 1307, 1325, 1326, 1519, 1518,
+     1328, 1507, 1499, 1511, 1504, 1503, 1502,    0, 1327, 1329,
+     1331, 1333, 1345, 1511, 1510, 1337, 1492, 1491, 1490, 1338,
+     1339, 1340, 1341, 1502, 1495, 1487, 1499, 1498, 1497, 1500,
+     1349, 1344, 1347, 1490, 1352, 1488, 1487, 1486, 1350, 1360,
+
+     1353, 1364, 1487, 1475, 1483, 1482, 1481, 1480, 1489, 1365,
+     1367, 1478, 1369, 1483, 1482, 1481, 1484, 1372, 1483, 1371,
+     1462, 1469, 1461, 1460, 1459, 1458, 1476, 1376, 1467, 1373,
+     1464, 1463, 1462, 1374, 1381, 1462, 1446, 1457, 1457, 1453,
+     1448, 1456, 1438, 1451, 1427, 1423, 1420, 1377, 1438, 1426,
+     1420, 1399, 1406, 1405, 1398, 1393, 1399, 1398, 1396, 1401,
+     1387,    0, 1384, 1389, 1378, 1376, 1374, 1337, 1252, 1248,
+     1062,    0, 1012,  936,  935,  936,  915,  862,  790,  595,
+        0,    0,    0,    0,  334,  268,  114,   54,    0,    0,
+        0,    0, 1698, 1411, 1417, 1421, 1427, 1431, 1435, 1439,
+
+     1443, 1445, 1449, 1455, 1458, 1462, 1466, 1471, 1476, 1478,
+     1482, 1486
     } ;
 
-static grib_yyconst flex_int16_t grib_yy_def[767] =
+static grib_yyconst flex_int16_t grib_yy_def[813] =
     {   0,
-      759,    1,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  760,  759,  759,  759,  761,  761,   18,  759,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,  759,  759,  759,  759,  759,  762,  763,  759,
-      764,  760,  759,  759,  759,  759,  759,  765,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,  765,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,  759,  759,  766,  764,  759,  759,
-      759,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,  765,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,  759,  759,  759,  759,  759,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-      765,  765,  765,   18,   18,   18,   18,   18,   18,   18,
-      765,  765,  765,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-
-      759,  759,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,  765,  765,  765,   18,   18,   18,   18,   18,   18,
-       18,  765,  765,  765,   18,   18,   18,  765,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-      765,  765,  765,  765,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,  765,  765,  765,   18,   18,   18,
-
-       18,   18,   18,  765,  765,  765,   18,   18,   18,   18,
-      765,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,  765,  765,  765,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-      765,  765,  765,   18,   18,   18,   18,  765,  765,  765,
-       18,   18,   18,   18,   18,  765,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,  765,  765,
-
-      765,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,  765,  765,  765,   18,   18,   18,  765,  765,
-      765,   18,   18,   18,   18,   18,  765,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,  765,  765,  765,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,  765,  765,  765,
-       18,   18,  765,  765,  765,   18,   18,   18,   18,  765,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,  765,  765,  765,
-       18,   18,   18,   18,   18,   18,   18,  765,  765,  765,
-
-       18,  765,  765,  765,   18,   18,   18,  765,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,  765,  765,
-      765,   18,   18,   18,   18,   18,   18,  765,  765,  765,
-      765,  765,  765,  765,   18,   18,   18,   18,   18,   18,
-       18,   18,  765,  765,  765,   18,   18,   18,   18,  765,
-      765,  765,  765,  765,  765,   18,   18,   18,   18,  765,
-       18,  765,  765,  765,   18,   18,   18,   18,  765,  765,
-      765,  765,  765,  765,   18,   18,   18,  765,   18,  765,
-      765,  765,   18,   18,   18,   18,  765,  765,  765,  765,
-      765,  765,   18,   18,  765,   18,  765,  765,  765,   18,
-
-       18,  765,  765,  765,  765,  765,  765,   18,  765,   18,
-      765,  765,  765,   18,   18,  765,  765,  765,  765,  765,
-      765,  765,  765,  765,  765,   18,  765,  765,  765,  765,
-      765,  765,  765,  765,  765,  765,  765,  765,  765,  765,
-      765,  765,  765,  765,  765,  765,  765,  765,  765,  765,
-      765,  765,  765,  765,  765,  765,  765,  765,    0,  759,
-      759,  759,  759,  759,  759,  759
+      793,    1,  793,  793,  793,  793,  793,  793,  793,  793,
+      793,  793,  794,  795,  793,  793,  793,  796,  796,   19,
+      793,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,  793,  793,  793,  793,  793,  793,  797,
+      798,  799,  793,  800,  795,  793,  793,  793,  793,  793,
+      801,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,  801,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,  793,  802,  793,
+      803,  804,  799,  805,  800,  793,  793,  793,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,  801,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,  806,
+      793,  793,  793,  793,  804,  793,  793,  793,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,  801,  801,  801,   19,   19,   19,   19,   19,   19,
+       19,  801,  801,  801,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,  807,  806,  808,  793,  809,  810,  793,  793,  793,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,  801,
+      801,  801,   19,   19,   19,   19,   19,   19,   19,  801,
+      801,  801,   19,   19,   19,  801,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,  801,  801,
+      801,  801,   19,   19,   19,   19,  793,  793,  809,  793,
+
+      811,  793,  793,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,  801,
+      801,  801,   19,   19,   19,   19,   19,   19,  801,  801,
+      801,   19,   19,   19,   19,  801,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,  801,  801,  801,
+       19,   19,  793,  793,  793,  793,  793,  812,  811,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,  801,  801,  801,   19,   19,   19,   19,  801,
+
+      801,  801,   19,   19,   19,   19,   19,  801,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+      801,  801,  801,   19,   19,  793,  793,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,  801,  801,  801,   19,
+       19,   19,  801,  801,  801,   19,   19,   19,   19,   19,
+      801,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,  801,
+      801,  801,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,  801,  801,  801,   19,   19,  801,  801,  801,   19,
+
+       19,   19,   19,  801,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,  801,  801,  801,   19,   19,   19,   19,   19,   19,
+       19,  801,  801,  801,   19,  801,  801,  801,   19,   19,
+       19,  801,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,  801,  801,  801,   19,   19,   19,   19,   19,
+       19,  801,  801,  801,  801,  801,  801,  801,   19,   19,
+       19,   19,   19,   19,   19,   19,  801,  801,  801,   19,
+       19,   19,   19,  801,  801,  801,  801,  801,  801,   19,
+       19,   19,   19,  801,   19,  801,  801,  801,   19,   19,
+
+       19,   19,  801,  801,  801,  801,  801,  801,   19,   19,
+       19,  801,   19,  801,  801,  801,   19,   19,   19,   19,
+      801,  801,  801,  801,  801,  801,   19,   19,  801,   19,
+      801,  801,  801,   19,   19,  801,  801,  801,  801,  801,
+      801,   19,  801,   19,  801,  801,  801,   19,   19,  801,
+      801,  801,  801,  801,  801,  801,  801,  801,  801,   19,
+      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
+      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
+      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
+      801,  801,    0,  793,  793,  793,  793,  793,  793,  793,
+
+      793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
+      793,  793
     } ;
 
-static grib_yyconst flex_int16_t grib_yy_nxt[1511] =
+static grib_yyconst flex_int16_t grib_yy_nxt[1755] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,    8,   11,   12,
-       13,   13,   13,   13,   13,   13,   13,   14,   15,   16,
-       17,   17,   17,   17,   18,   17,   17,   19,   20,   21,
+       13,   14,   14,   14,   14,   14,   14,   14,   15,   16,
+       17,   18,   18,   18,   18,   19,   18,   18,   20,   21,
        22,   23,   24,   25,   26,   27,   28,   29,   30,   31,
-       32,   33,   34,   35,   36,   37,   38,   39,   40,   17,
-       41,   42,   17,   43,   44,   48,   48,   48,   48,   48,
-       48,   48,   49,   49,   49,   49,   49,   49,   49,   50,
-       51,   54,   55,   58,   58,   58,   58,   58,   58,   58,
-       59,   59,   53,   58,   58,   58,   58,   58,   58,   58,
-       59,   59,   59,   59,   53,   61,   60,   62,   70,   63,
-
-       59,   64,  128,   65,   66,   59,   59,   67,   81,   71,
-       68,  124,   72,   82,   77,   59,   73,   59,   59,   69,
-       74,   85,   78,   93,   79,   59,   75,   59,  109,   86,
-       59,   76,   59,   80,   87,   83,   59,   88,   89,   59,
-       94,  133,   99,   59,   59,   95,   90,   84,   59,   96,
-       91,   92,  100,   97,  101,   59,   59,   59,  104,   98,
-       59,  106,  105,  140,  102,  185,  110,  126,   59,  103,
-      111,  120,  112,  122,  113,  107,  121,  108,  117,  126,
-      114,  115,  123,  116,   50,   51,   59,   59,  118,  132,
-      119,   49,   59,  129,   50,   51,  135,   53,  127,  127,
-
-      127,  127,  127,  127,  127,  129,  134,   53,  130,   53,
-      131,  131,  131,  131,  131,  131,  131,   59,   59,   53,
-       59,   59,   59,   59,   59,   59,  137,   59,   59,  758,
-       59,   59,   59,   59,  150,  151,   59,   59,  136,   59,
-      156,  138,  146,  143,  139,  145,  142,  144,  153,  141,
-      154,  147,  148,  152,  149,  155,   59,   59,  157,   59,
-       59,   59,  158,  160,   59,   59,   59,   59,   59,  163,
-      168,   59,   59,  166,  165,   59,   59,  161,  169,  164,
-       59,  171,  162,  172,   59,   59,   59,  170,   59,  167,
-      757,  173,  181,  180,   59,  756,   59,   59,  174,  175,
-
-      176,  182,   59,   59,  186,  187,   59,  177,  178,  179,
-      193,  188,  190,   59,   59,   59,  183,  189,   59,  198,
-       59,  184,   59,   59,  191,  192,  194,  196,  197,  200,
-      195,   59,   59,   59,  201,  203,   59,   59,  204,   59,
-      199,  202,  207,   59,  215,   59,  205,  209,  218,   50,
-       51,  210,  206,  211,   59,   59,  215,   59,  225,  208,
-      212,  213,   53,  214,  214,  214,  214,  214,  214,  214,
-      755,  221,  250,  216,   53,  217,  217,  217,  217,  217,
-      217,  217,  131,  131,  131,  131,  131,  131,  131,  131,
-      131,  131,  131,  131,  131,  131,   59,   59,   59,   59,
-
-       59,   59,  219,   59,   59,   59,  223,  220,  222,   59,
-      224,  226,   59,  230,  228,   59,   59,   59,   59,   59,
-       59,  233,   59,   59,  235,   59,  227,   59,  231,   59,
-      229,  754,  238,  246,   59,  240,   59,  241,  247,  236,
-      234,  232,  242,  237,  244,  239,   59,  243,   59,  251,
-      254,  252,  245,  253,   59,  255,   59,  248,  249,   59,
-       59,   59,   59,   59,   59,   59,   59,  258,   59,   59,
-      259,   59,   59,   59,  260,  257,  256,  262,  264,  266,
-      263,   59,   59,  267,   59,  271,   59,  261,   59,  265,
-       59,   59,  269,  268,  274,  270,   59,  272,   59,  273,
-
-      278,   59,  276,   59,   59,   59,   59,  280,  282,   59,
-      275,  283,   59,   59,   59,  277,   59,   59,  279,   59,
-       59,   59,   59,   59,   59,  284,   59,  281,  287,   59,
-      285,   59,   59,  291,  286,  294,  288,   59,  290,  293,
-      289,  296,  292,  297,  308,  295,  300,  753,  307,  299,
-      298,  214,  214,  214,  214,  214,  214,  214,  214,  214,
-      214,  214,  214,  214,  214,  301,   59,  302,  302,  302,
-      302,  302,  302,  302,  217,  217,  217,  217,  217,  217,
-      217,  217,  217,  217,  217,  217,  217,  217,   59,  304,
-       59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
-
-      314,  309,  316,   59,  306,  312,   59,  305,   59,   59,
-      311,   59,   59,  318,   59,  320,  310,   59,  313,  328,
-      317,  327,  315,   59,   59,  330,   59,   59,  319,   59,
-      325,  321,  338,  326,   59,  337,   59,   59,   59,   59,
-      329,  341,   59,   59,   59,  335,   59,   59,  344,  331,
-       59,  339,  336,   59,  345,   59,  346,   59,   59,  348,
-      340,  343,   59,  342,  349,   59,   59,  347,   59,  350,
-      355,   59,  351,   59,   59,   59,   59,  352,   59,   59,
-       59,   59,   59,   59,   59,  358,  353,  360,  361,  354,
-      365,  357,   59,  359,  356,   59,   59,   59,  363,   59,
-
-      362,  366,  367,   59,  364,  368,  371,  370,  372,  376,
-      373,  374,   59,  375,   59,  369,  752,   59,   59,  379,
-      381,  409,  377,   59,  378,  302,  302,  302,  302,  302,
-      302,  302,  302,  302,  302,  302,  302,  302,  302,   59,
-       59,   59,   59,   59,  385,   59,   59,  383,  380,  386,
-      382,   59,  384,   59,   59,   59,   59,   59,   59,   59,
-       59,   59,  389,  391,  399,  387,  388,   59,   59,   59,
-      394,  407,   59,   59,  390,  392,  402,  403,  393,  400,
-       59,  401,   59,  398,   59,  412,   59,   59,   59,   59,
-      415,  408,   59,  410,   59,   59,  416,  413,   59,   59,
-
-       59,  414,   59,  420,   59,  424,   59,   59,   59,  419,
-      418,  421,  423,  425,  426,  417,  422,  428,  429,  427,
-       59,   59,  430,   59,  431,  434,   59,   59,  436,   59,
-      432,   59,  433,   59,   59,  438,   59,   59,  435,   59,
-      437,  448,   59,  446,   59,   59,  442,  441,  449,   59,
-       59,   59,  450,   59,   59,  439,  440,   59,  447,  454,
-       59,   59,   59,   59,  458,   59,   59,   59,   59,   59,
-      453,  457,   59,  455,  452,  465,  471,  451,  456,   59,
-       59,  459,  467,   59,  472,  466,   59,  460,  464,  473,
-      474,   59,  478,   59,   59,   59,   59,  477,   59,   59,
-
-      475,  479,   59,   59,   59,  484,   59,   59,   59,   59,
-       59,   59,  482,   59,  493,   59,   59,  480,   59,  483,
-      490,   59,  488,  481,  487,  485,  489,  486,  495,  491,
-      496,  497,  492,   59,   59,  494,  502,  498,   59,   59,
-       59,   59,   59,  503,  506,  507,   59,   59,   59,   59,
-       59,   59,  504,  510,  512,  505,  509,  518,   59,   59,
-       59,   59,   59,  508,   59,   59,  751,   59,  525,  750,
-      511,  516,  517,  522,  523,   59,  524,   59,   59,  530,
-      531,   59,   59,  526,   59,  529,  528,  532,  533,   59,
-       59,   59,   59,   59,  537,   59,   59,  538,  534,   59,
-
-       59,  535,  540,   59,  543,  542,  536,  539,  541,   59,
-       59,   59,  549,   59,   59,   59,   59,   59,  544,  545,
-      551,  552,   59,  550,   59,   59,   59,   59,  561,   59,
-      553,   59,   59,  554,  566,  568,   59,  555,   59,   59,
-      557,  571,  572,   59,  573,  556,   59,   59,  562,  574,
-      567,  569,   59,   59,   59,   59,   59,  575,   59,   59,
-      584,  582,   59,  576,  578,   59,  580,   59,  579,  585,
-      586,  581,   59,   59,   59,  577,   59,   59,   59,   59,
-       59,   59,  595,   59,  583,   59,  587,  592,  591,   59,
-       59,   59,  593,  611,   59,  612,   59,  594,  596,  597,
-
-       59,  609,   59,  605,  606,  601,  614,  607,  610,   59,
-      617,  616,   59,  613,   59,   59,   59,   59,   59,  615,
-       59,   59,   59,  623,   59,   59,  624,  626,  627,  625,
-       59,  618,   59,   59,  638,  622,   59,   59,   59,  639,
-      640,  635,  636,  637,   59,  649,  641,  646,  647,   59,
-      648,   59,  642,   59,   59,  660,   59,   59,   59,   59,
-       59,   59,   59,  659,   59,  658,   59,  661,  657,   59,
-      679,  675,   59,  667,  668,   59,  665,   59,  656,   59,
-       59,  684,  666,  677,  683,   59,  676,   59,   59,   59,
-      686,   59,   59,  693,  685,  700,   59,   59,  749,  715,
-
-       59,  696,  748,  701,  694,  747,  746,  745,  708,  710,
-      726,  744,  743,  742,  714,   52,   52,   59,   59,   48,
-       48,   58,   58,  127,  127,  741,  740,  739,  738,  737,
-       59,  736,  735,  734,  733,  732,  731,  730,  729,  728,
-      727,   59,  725,  724,  723,   59,  722,   59,  721,  720,
-      719,  718,  717,  716,  713,  712,  711,  709,   59,  707,
-      706,  705,  704,  703,  702,   59,   59,  699,  698,  697,
-      695,   59,  692,  691,  690,  689,  688,  687,  682,  681,
-      680,  678,   59,  674,  673,  672,  671,  670,  669,  664,
-      663,  662,   59,   59,  655,  654,  653,  652,  651,  650,
-
-       59,   59,  645,  644,  643,   59,   59,  634,   59,   59,
-       59,  633,  632,  631,   59,  630,  629,  628,   59,  621,
-      620,  619,   59,   59,   59,   59,   59,   59,   59,  608,
-       59,  604,  603,  602,   59,  600,  599,  598,   59,   59,
-      590,  589,  588,   59,   59,  570,   59,  565,  564,  563,
-       59,  560,  559,  558,   59,   59,  548,  547,  546,   59,
-       59,   59,   59,  527,  521,  520,  519,   59,  515,  514,
-      513,   59,   59,   59,   59,  501,  500,  499,   59,   59,
-       59,   59,   59,   59,   59,   59,   59,  476,  470,  469,
-      468,   59,   59,  463,  462,  461,   59,   59,   59,   59,
-
-       59,  445,  444,  443,   59,   59,  411,  406,  405,  404,
-       59,  397,  396,  395,   59,   59,   59,   59,   59,   59,
-       59,   59,   59,   59,  334,  333,  332,  324,  323,  322,
-       59,   59,   59,   59,   59,  303,   59,   59,   59,   59,
-       59,   59,   59,   59,  159,   59,   45,  125,   57,   56,
-       47,   46,   45,  759,    3,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759
+       32,   33,   34,   35,   36,   37,   38,   39,   40,   41,
+       18,   42,   43,   18,   44,   45,   48,   48,   48,   48,
+       48,   48,   48,   50,   50,   50,   50,   50,   50,   50,
+       51,   51,   51,   51,   51,   51,   51,   53,   54,   57,
+       58,   61,   61,   61,   61,   61,   61,   61,   62,   62,
+      792,   56,   61,   61,   61,   61,   61,   61,   61,   62,
+
+       62,   62,   64,   56,   62,   63,   65,   73,   66,   62,
+       67,   62,   68,   69,   62,   62,   70,   84,   74,   71,
+      142,   75,   85,   80,   62,   76,   62,   96,   72,   77,
+       88,   81,   97,   82,   62,   78,   62,  140,   89,   62,
+       79,   62,   83,   90,   86,   62,   91,   92,   62,  112,
+       62,  102,   62,   62,   98,   93,   87,  791,   99,   94,
+       95,  103,  100,  104,   62,   62,   62,  107,  101,   62,
+      109,  108,  147,  105,  146,  113,   62,   62,  106,  114,
+      123,  115,  125,  116,  110,  124,  111,  120,  130,  117,
+      118,  126,  119,   62,  127,  129,  139,  121,   62,  122,
+
+      130,   48,   48,   48,   48,   48,   48,   48,   53,   54,
+      131,  131,  131,  131,  131,  131,  131,  150,  132,  136,
+       62,  151,   56,  134,  134,  134,  134,  134,  134,  134,
+       62,  136,   53,   54,   56,  137,   62,   62,  138,  138,
+      138,  138,  138,  138,  138,  144,   56,   62,  148,   62,
+      141,  143,   62,   62,   62,   62,   62,   62,   56,   62,
+      145,   62,   62,  153,  157,  158,   62,   62,  163,  152,
+       62,  149,  154,  155,  160,  156,  161,  159,  162,   62,
+       62,   62,  164,   62,   62,  165,   62,  168,   62,  170,
+      167,  173,  175,  169,  172,   62,  176,   62,   62,  171,
+
+       62,   62,   62,   62,  179,   62,   62,  174,  178,   62,
+       62,  790,  188,  189,  187,  177,   62,   62,   62,  180,
+      193,  182,  183,   62,  181,  194,  185,  186,  190,  184,
+       62,   62,   62,  191,  192,   62,  197,  196,   62,  200,
+       62,  195,   62,   62,  203,   62,  205,   62,  198,  199,
+      207,  210,  204,   62,   62,  201,  208,  206,   62,  202,
+      211,   62,   62,  209,  214,   62,  223,  224,  212,   62,
+       62,  216,  213,  229,   62,  217,  218,  789,  236,  231,
+      221,  215,  219,  222,  222,  222,  222,  222,  222,  222,
+      131,  131,  131,  131,  131,  131,  131,  226,  132,   53,
+
+       54,  138,  138,  138,  138,  138,  138,  138,   62,  226,
+       62,  227,  404,   56,  228,  228,  228,  228,  228,  228,
+      228,   62,  232,   62,   62,   56,  138,  138,  138,  138,
+      138,  138,  138,   62,  233,   62,   62,   62,   62,  230,
+       62,   62,  234,   62,  238,   62,  235,  237,  239,  241,
+       62,  244,  243,   62,   62,   62,   62,  246,   62,   62,
+       62,  240,   62,  252,  242,  249,   62,  245,  253,  255,
+      251,   62,   62,  254,  247,  257,  250,  259,  248,   62,
+      258,   62,  260,   62,   62,  256,  262,   62,  263,   62,
+      264,   62,   62,   62,   62,  265,  261,  269,   62,  271,
+
+      266,  270,   62,  268,   62,  267,  273,   62,   62,  274,
+       62,   62,  275,  277,   62,   62,  272,   62,  282,   62,
+       62,   62,  278,  280,  283,   62,  281,  276,  284,   62,
+       62,   62,  279,   62,  289,  287,   62,  291,   62,   62,
+      293,  285,   62,   62,  286,  294,   62,   62,  288,   62,
+      290,   62,   62,   62,   62,   62,   62,  292,   62,  296,
+      298,  295,   62,   62,   62,  297,  302,   62,  305,   62,
+      299,  307,  301,  300,  304,  303,  308,  306,  356,  327,
+      325,  310,  309,  312,  312,  312,  312,  312,  312,  312,
+       62,  311,  222,  222,  222,  222,  222,  222,  222,  222,
+
+      222,  222,  222,  222,  222,  222,  225,  225,  225,  225,
+      225,  225,  225,  314,  314,  314,  314,  314,  314,  314,
+      315,  316,  317,  319,   62,  788,  320,  320,  320,  320,
+      320,  320,  320,   62,  318,  228,  228,  228,  228,  228,
+      228,  228,   62,  323,   62,   62,  318,  228,  228,  228,
+      228,  228,  228,  228,   62,   62,  322,   62,  324,   62,
+       62,  326,  329,  332,   62,  330,  328,   62,  334,   62,
+       62,   62,   62,   62,   62,   62,   62,  345,  338,   62,
+       62,  331,   62,  336,  335,  333,  346,   62,   62,   62,
+       62,  343,  337,  348,  339,  344,  347,   62,   62,  353,
+
+      349,   62,  359,  355,   62,  357,   62,   62,   62,   62,
+      362,   62,  354,  358,   62,  360,   62,  363,  364,   62,
+      366,   62,  367,  361,   62,  368,   62,  365,   62,   62,
+      373,  369,   62,   62,   62,   62,   62,   62,   62,  370,
+       62,   62,   62,   62,  379,  371,  376,  375,  372,  378,
+      383,   62,  377,   62,  374,  381,   62,  384,   62,  380,
+      385,   62,  382,   62,  389,  388,  390,  386,  391,  392,
+      393,   62,   62,  394,  387,   62,   62,   62,  317,  410,
+      414,  395,  396,  312,  312,  312,  312,  312,  312,  312,
+      397,  398,  398,  398,  398,  398,  398,  398,  317,  406,
+
+      402,  418,  397,  403,  403,  403,  403,  403,  403,  403,
+      400,  320,  320,  320,  320,  320,  320,  320,   62,   62,
+      787,   62,  400,  320,  320,  320,  320,  320,  320,  320,
+      405,   62,   62,   62,   62,   62,   62,   62,  408,  413,
+      411,  407,   62,  409,  423,   62,  416,   62,  424,   62,
+       62,   62,   62,   62,   62,   62,  412,  417,  415,  419,
+      428,   62,   62,   62,   62,  432,  425,  427,  437,  426,
+      434,  440,   62,   62,   62,   62,  441,  435,  438,   62,
+       62,   62,   62,  439,   62,  433,   62,   62,   62,  445,
+       62,  449,  786,   62,   62,  444,  443,  446,  448,  450,
+
+      451,  442,  452,  447,  453,   62,   62,  455,  456,   62,
+       62,   62,  461,   62,  459,  454,  457,  464,  458,   62,
+       62,   62,   62,  460,   62,  463,  462,   62,  480,   62,
+      471,   62,  467,   62,   62,  466,   62,  481,  482,   62,
+      486,   62,  465,  506,  473,  785,  472,  474,  474,  474,
+      474,  474,  474,  474,  315,  316,  317,  398,  398,  398,
+      398,  398,  398,  398,  317,  484,  476,  483,  318,  477,
+      477,  477,  477,  477,  477,  477,  475,  784,  783,  782,
+      318,  478,  478,  478,  478,  478,  478,  478,  475,  403,
+      403,  403,  403,  403,  403,  403,  317,  403,  403,  403,
+
+      403,  403,  403,  403,   62,   62,   62,   62,   62,   62,
+       62,   62,  490,   62,   62,   62,   62,  489,   62,  497,
+       62,  487,   62,  485,  499,   62,  505,   62,  491,  503,
+      488,  510,   62,  496,  492,  498,   62,  504,  507,   62,
+       62,   62,  511,   62,   62,   62,   62,   62,  516,   62,
+       62,  509,   62,   62,   62,  781,  513,  514,  525,   62,
+      512,  522,  515,   62,  519,  520,  521,   62,   62,  517,
+      518,   62,  523,  527,   62,   62,  524,  526,  529,   62,
+       62,  528,  534,  540,  535,  474,  474,  474,  474,  474,
+      474,  474,  539,  530,  317,  474,  474,  474,  474,  474,
+
+      474,  474,  536,  780,  542,  537,  537,  537,  537,  537,
+      537,  537,  477,  477,  477,  477,  477,  477,  477,  317,
+      477,  477,  477,  477,  477,  477,  477,  478,  478,  478,
+      478,  478,  478,  478,   62,   62,   62,   62,   62,  541,
+       62,   62,   62,  544,  546,   62,   62,   62,   62,   62,
+      543,  552,  538,   62,   62,   62,   62,   62,  559,   62,
+      556,  557,  545,  550,   62,  558,  551,  566,  564,  565,
+       62,  560,   62,   62,   62,  562,  568,   62,  563,   62,
+      567,  571,   62,   62,   62,  572,   62,   62,  573,  574,
+      570,  569,   62,   62,  576,   62,  583,   62,  577,  537,
+
+      537,  537,  537,  537,  537,  537,  575,  585,   62,  584,
+       62,  578,  579,  317,  537,  537,  537,  537,  537,  537,
+      537,   62,   62,   62,   62,   62,   62,  587,   62,  586,
+       62,  595,  589,   62,   62,   62,  600,   62,   62,   62,
+       62,  588,   62,  602,   62,  605,   62,  591,  606,   62,
+      596,   62,  590,  601,  607,  608,  603,   62,  609,  612,
+       62,  610,  615,  613,  616,  614,   62,   62,   62,  611,
+      618,   62,   62,   62,   62,   62,   62,  619,   62,   62,
+      620,   62,   62,   62,  629,   62,  779,   62,   62,  617,
+      778,   62,  626,   62,  627,  621,  625,  646,   62,  628,
+
+      630,  644,  631,  645,   62,  641,  639,  635,  643,  640,
+      648,   62,   62,   62,   62,  647,   62,   62,   62,   62,
+       62,   62,   62,   62,   62,   62,  657,   62,  649,  658,
+      660,   62,  651,  650,  659,  661,  652,   62,   62,  656,
+      669,  673,  671,  670,   62,  680,  672,  676,  674,   62,
+       62,   62,   62,   62,  675,   62,  682,   62,  694,  681,
+      683,   62,   62,   62,   62,   62,  693,  692,   62,   62,
+      691,   62,  695,   62,   62,  777,   62,   62,  701,  702,
+      690,  699,  713,  709,   62,  711,  717,  700,   62,   62,
+      718,   62,  710,   62,  719,   62,   62,   62,   62,  720,
+
+       62,   62,  727,  734,  776,   62,  775,  730,  774,  735,
+      728,  760,  742,  749,  744,  748,   52,   52,   55,  773,
+       55,  772,  771,   55,   62,   62,   62,   62,   50,  770,
+       50,  769,  768,   50,   51,  767,  766,   51,  133,  133,
+      133,  133,  135,  765,  764,  135,   61,  763,   61,   61,
+      220,  220,  131,  131,  131,  131,  225,  762,  225,  134,
+      761,  134,   62,  759,  134,  313,  758,  313,  313,  312,
+      757,  312,  312,  314,  314,   62,  756,  314,  399,  399,
+       62,  755,  399,  401,  401,  479,  754,  479,  479,  478,
+      753,  478,  478,  752,  751,  750,  747,  746,  745,  743,
+
+       62,  741,  740,  739,  738,  737,  736,   62,   62,  733,
+      732,  731,  729,   62,  726,  725,  724,  723,  722,  721,
+      716,  715,  714,  712,   62,  708,  707,  706,  705,  704,
+      703,  698,  697,  696,   62,   62,  689,  688,  687,  686,
+      685,  684,   62,   62,  679,  678,  677,   62,   62,  668,
+       62,   62,   62,  667,  666,  665,   62,  664,  663,  662,
+       62,  655,  654,  653,   62,   62,   62,   62,   62,   62,
+       62,  642,   62,  638,  637,  636,   62,  634,  633,  632,
+       62,   62,  624,  623,  622,   62,   62,  604,   62,  599,
+      598,  597,   62,  594,  593,  592,   62,   62,  582,  581,
+
+      580,   62,   62,   62,   62,  561,  555,  554,  553,   62,
+      549,  548,  547,   62,   62,   62,   62,  533,  532,  531,
+       62,   62,   62,   62,   62,   62,   62,   62,   62,  508,
+      502,  501,  500,   62,   62,  495,  494,  493,   62,   62,
+       62,   62,   62,  470,  469,  468,   62,   62,  436,  431,
+      430,  429,   62,  422,  421,  420,   62,   62,   62,   62,
+       62,   62,   62,   62,   62,   62,  352,  351,  350,  342,
+      341,  340,   62,   62,   62,   62,   62,  321,   62,   62,
+       62,   62,   62,   62,  132,   62,   62,  166,   62,   46,
+      128,   60,   59,   49,   47,   46,  793,    3,  793,  793,
+
+      793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
+      793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
+      793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
+      793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
+      793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
+      793,  793,  793,  793
     } ;
 
-static grib_yyconst flex_int16_t grib_yy_chk[1511] =
+static grib_yyconst flex_int16_t grib_yy_chk[1755] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,   11,   11,   11,   11,   11,
-       11,   11,   12,   12,   12,   12,   12,   12,   12,   13,
-       13,   14,   14,   17,   17,   17,   17,   17,   17,   17,
-       21,   19,   13,   18,   18,   18,   18,   18,   18,   18,
-       22,   26,   23,   42,   13,   19,   18,   21,   23,   21,
-
-       30,   21,  764,   21,   22,   25,   24,   22,   26,   23,
-       22,   42,   23,   27,   25,   28,   24,   31,   37,   22,
-       24,   28,   25,   30,   25,   27,   24,   29,   37,   28,
-       61,   24,   33,   25,   29,   27,   35,   29,   29,   32,
-       31,   61,   33,   67,   34,   32,   29,   27,  103,   32,
-       29,   29,   33,   32,   34,   36,   38,   40,   35,   32,
-       41,   36,   35,   67,   34,  103,   38,   49,   39,   34,
-       38,   40,   38,   41,   38,   36,   40,   36,   39,   49,
-       38,   38,   41,   38,   48,   48,   60,   63,   39,   60,
-       39,  763,   62,   51,   52,   52,   63,   48,   50,   50,
-
-       50,   50,   50,   50,   50,   51,   62,   52,   53,   48,
-       53,   53,   53,   53,   53,   53,   53,   64,   65,   52,
-       66,   68,   69,   73,   70,   71,   65,   74,   75,  754,
-       76,   79,   78,   72,   73,   74,   77,   80,   64,   83,
-       79,   65,   72,   70,   66,   71,   69,   70,   76,   68,
-       77,   72,   72,   75,   72,   78,   81,   84,   80,   85,
-       86,   87,   81,   83,   88,   90,   91,   93,   92,   86,
-       91,   94,   96,   90,   88,   97,   95,   84,   92,   87,
-       98,   94,   85,   95,  100,   99,  101,   93,  107,   90,
-      753,   96,  101,  100,  105,  752,  106,  102,   97,   98,
-
-       98,  102,  110,  108,  105,  106,  109,   98,   99,   99,
-      110,  107,  109,  113,  112,  111,  102,  108,  114,  113,
-      116,  102,  115,  117,  109,  109,  110,  111,  112,  115,
-      110,  118,  119,  120,  116,  118,  121,  122,  119,  123,
-      114,  117,  121,  124,  128,  132,  119,  122,  132,  127,
-      127,  122,  120,  123,  143,  166,  128,  137,  143,  121,
-      124,  126,  127,  126,  126,  126,  126,  126,  126,  126,
-      751,  137,  166,  129,  127,  129,  129,  129,  129,  129,
-      129,  129,  130,  130,  130,  130,  130,  130,  130,  131,
-      131,  131,  131,  131,  131,  131,  134,  136,  138,  140,
-
-      142,  144,  134,  145,  146,  148,  140,  136,  138,  147,
-      142,  144,  149,  148,  146,  150,  151,  152,  153,  154,
-      162,  150,  155,  158,  152,  157,  145,  161,  148,  163,
-      147,  746,  155,  162,  160,  158,  168,  159,  163,  153,
-      151,  149,  159,  154,  160,  157,  164,  159,  165,  167,
-      168,  167,  161,  167,  169,  168,  170,  164,  165,  171,
-      172,  167,  173,  174,  176,  175,  178,  171,  177,  180,
-      172,  181,  186,  179,  173,  170,  169,  175,  177,  179,
-      176,  183,  185,  180,  182,  183,  187,  174,  188,  178,
-      184,  190,  182,  181,  186,  182,  189,  184,  191,  185,
-
-      190,  192,  188,  193,  194,  195,  196,  192,  194,  197,
-      187,  195,  198,  200,  199,  189,  201,  202,  191,  203,
-      204,  206,  211,  205,  207,  196,  222,  193,  199,  208,
-      197,  209,  210,  203,  198,  205,  200,  225,  202,  204,
-      201,  207,  203,  208,  225,  206,  211,  745,  222,  210,
-      209,  213,  213,  213,  213,  213,  213,  213,  214,  214,
-      214,  214,  214,  214,  214,  215,  219,  215,  215,  215,
-      215,  215,  215,  215,  216,  216,  216,  216,  216,  216,
-      216,  217,  217,  217,  217,  217,  217,  217,  220,  219,
-      221,  227,  228,  229,  231,  230,  232,  233,  234,  237,
-
-      232,  227,  234,  235,  221,  230,  239,  220,  240,  247,
-      229,  244,  245,  237,  249,  240,  228,  246,  231,  247,
-      235,  246,  233,  248,  250,  249,  254,  255,  239,  256,
-      244,  240,  258,  245,  259,  256,  260,  262,  263,  264,
-      248,  262,  265,  267,  258,  254,  268,  269,  265,  250,
-      274,  259,  255,  270,  267,  272,  268,  275,  271,  270,
-      260,  264,  276,  263,  271,  277,  278,  269,  279,  272,
-      278,  281,  274,  280,  282,  283,  286,  275,  284,  287,
-      288,  292,  289,  291,  290,  281,  276,  283,  284,  277,
-      289,  280,  293,  282,  279,  294,  307,  297,  287,  296,
-
-      286,  290,  291,  336,  288,  292,  295,  294,  295,  297,
-      295,  295,  299,  296,  300,  293,  744,  303,  295,  303,
-      307,  336,  299,  312,  300,  301,  301,  301,  301,  301,
-      301,  301,  302,  302,  302,  302,  302,  302,  302,  305,
-      308,  310,  311,  313,  312,  315,  314,  310,  305,  313,
-      308,  316,  311,  317,  319,  318,  320,  325,  327,  330,
-      328,  329,  315,  317,  327,  313,  314,  335,  331,  337,
-      320,  335,  340,  341,  316,  318,  330,  331,  319,  328,
-      342,  329,  343,  325,  344,  340,  345,  346,  347,  348,
-      343,  335,  350,  337,  349,  352,  344,  341,  351,  355,
-
-      353,  342,  358,  348,  359,  352,  364,  356,  357,  347,
-      346,  349,  351,  352,  353,  345,  350,  356,  357,  355,
-      360,  362,  358,  361,  359,  362,  363,  365,  364,  366,
-      360,  367,  361,  369,  368,  366,  370,  375,  363,  376,
-      365,  379,  379,  375,  382,  383,  370,  369,  382,  384,
-      385,  386,  383,  387,  389,  367,  368,  388,  376,  387,
-      391,  390,  392,  394,  391,  402,  399,  407,  413,  401,
-      386,  390,  403,  388,  385,  401,  407,  384,  389,  408,
-      410,  392,  403,  409,  407,  402,  415,  394,  399,  408,
-      409,  416,  415,  418,  419,  420,  423,  413,  421,  424,
-
-      410,  416,  425,  427,  426,  423,  432,  430,  434,  431,
-      435,  438,  420,  446,  435,  442,  440,  418,  439,  421,
-      431,  441,  427,  419,  426,  424,  430,  425,  439,  432,
-      440,  441,  434,  447,  449,  438,  446,  442,  450,  453,
-      451,  452,  454,  447,  451,  452,  458,  457,  465,  464,
-      459,  466,  449,  457,  459,  450,  454,  466,  474,  471,
-      472,  475,  478,  453,  473,  477,  743,  483,  474,  742,
-      458,  464,  465,  471,  472,  479,  473,  484,  485,  479,
-      483,  486,  487,  475,  493,  478,  477,  484,  485,  488,
-      489,  490,  495,  491,  489,  494,  492,  490,  486,  496,
-
-      497,  487,  492,  503,  495,  494,  488,  491,  493,  504,
-      505,  507,  503,  506,  509,  510,  511,  512,  496,  497,
-      505,  506,  516,  504,  518,  524,  522,  523,  516,  525,
-      507,  528,  529,  509,  522,  524,  530,  510,  533,  534,
-      512,  528,  529,  531,  530,  511,  536,  537,  518,  531,
-      523,  525,  538,  539,  540,  541,  542,  533,  544,  543,
-      542,  540,  545,  534,  537,  550,  538,  552,  537,  543,
-      544,  539,  553,  554,  555,  536,  561,  556,  557,  566,
-      567,  573,  555,  578,  541,  568,  545,  552,  550,  579,
-      583,  584,  553,  578,  576,  579,  580,  554,  556,  557,
-
-      581,  573,  582,  566,  567,  561,  581,  568,  576,  585,
-      584,  583,  591,  580,  592,  593,  595,  596,  597,  582,
-      609,  610,  614,  592,  611,  612,  593,  596,  597,  595,
-      615,  585,  617,  622,  612,  591,  616,  627,  623,  614,
-      615,  609,  610,  611,  624,  627,  616,  622,  623,  635,
-      624,  636,  617,  637,  638,  639,  642,  646,  647,  648,
-      649,  657,  658,  638,  661,  637,  639,  642,  636,  659,
-      661,  657,  665,  648,  649,  666,  646,  667,  635,  668,
-      676,  666,  647,  659,  665,  677,  658,  679,  684,  686,
-      668,  701,  696,  676,  667,  684,  694,  700,  741,  701,
-
-      714,  679,  740,  686,  677,  739,  737,  736,  694,  696,
-      714,  735,  734,  733,  700,  760,  760,  761,  761,  762,
-      762,  765,  765,  766,  766,  732,  731,  730,  729,  727,
-      726,  725,  724,  723,  722,  721,  720,  719,  718,  717,
-      716,  715,  713,  712,  711,  710,  709,  708,  707,  706,
-      705,  704,  703,  702,  699,  698,  697,  695,  693,  692,
-      691,  690,  689,  688,  687,  685,  683,  682,  681,  680,
-      678,  675,  674,  673,  672,  671,  670,  669,  664,  663,
-      662,  660,  656,  655,  654,  653,  652,  651,  650,  645,
-      644,  643,  641,  640,  633,  632,  631,  630,  629,  628,
-
-      626,  625,  621,  620,  619,  618,  613,  608,  607,  606,
-      605,  604,  603,  602,  601,  600,  599,  598,  594,  590,
-      589,  588,  587,  586,  577,  575,  574,  572,  571,  570,
-      569,  565,  564,  563,  562,  560,  559,  558,  551,  549,
-      548,  547,  546,  535,  532,  527,  526,  521,  520,  519,
-      517,  515,  514,  513,  508,  502,  501,  500,  499,  498,
-      482,  481,  480,  476,  470,  469,  468,  467,  463,  462,
-      461,  460,  456,  455,  448,  445,  444,  443,  437,  436,
-      433,  429,  428,  422,  417,  414,  412,  411,  406,  405,
-      404,  400,  398,  397,  396,  395,  393,  381,  380,  378,
-
-      377,  373,  372,  371,  354,  339,  338,  334,  333,  332,
-      326,  324,  323,  322,  321,  309,  306,  304,  298,  285,
-      273,  266,  261,  257,  253,  252,  251,  243,  242,  241,
-      238,  236,  226,  224,  223,  218,  212,  156,  141,  139,
-      135,  133,  104,   89,   82,   59,   45,   43,   16,   15,
-       10,    7,    5,    3,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759
+        1,    1,    1,    1,    1,    1,    9,    9,    9,    9,
+        9,    9,    9,   11,   11,   11,   11,   11,   11,   11,
+       12,   12,   12,   12,   12,   12,   12,   14,   14,   15,
+       15,   18,   18,   18,   18,   18,   18,   18,   20,   22,
+      788,   14,   19,   19,   19,   19,   19,   19,   19,   23,
+
+       27,   24,   20,   14,   31,   19,   22,   24,   22,   32,
+       22,   66,   22,   23,   26,   25,   23,   27,   24,   23,
+       66,   24,   28,   26,   29,   25,   64,   31,   23,   25,
+       29,   26,   32,   26,   28,   25,   30,   64,   29,   38,
+       25,   34,   26,   30,   28,   36,   30,   30,   33,   38,
+       69,   34,   70,   35,   33,   30,   28,  787,   33,   30,
+       30,   34,   33,   35,   37,   39,   41,   36,   33,   42,
+       37,   36,   70,   35,   69,   39,   43,   40,   35,   39,
+       41,   39,   42,   39,   37,   41,   37,   40,   51,   39,
+       39,   42,   39,   63,   43,   48,   63,   40,   73,   40,
+
+       51,   48,   48,   48,   48,   48,   48,   48,   50,   50,
+       52,   52,   52,   52,   52,   52,   52,   73,   52,   54,
+       71,   73,   50,   53,   53,   53,   53,   53,   53,   53,
+       67,   54,   55,   55,   50,   56,   65,   68,   56,   56,
+       56,   56,   56,   56,   56,   68,   55,   72,   71,   74,
+       65,   67,   78,   76,   75,   81,   79,   77,   55,   82,
+       68,   83,   80,   75,   76,   77,   86,   87,   82,   74,
+       88,   72,   75,   75,   79,   75,   80,   78,   81,   84,
+       89,   90,   83,   93,   91,   84,   95,   87,   94,   89,
+       86,   93,   94,   88,   91,   96,   95,   98,   97,   90,
+
+       99,  100,  101,  102,   98,  103,  104,   93,   97,  105,
+      108,  786,  104,  105,  103,   96,  109,  106,  110,   99,
+      108,  101,  101,  111,  100,  109,  102,  102,  105,  101,
+      112,  113,  114,  105,  106,  117,  112,  111,  115,  113,
+      116,  110,  119,  118,  114,  120,  116,  121,  112,  112,
+      118,  121,  115,  123,  122,  113,  119,  117,  124,  113,
+      122,  125,  126,  120,  124,  127,  132,  132,  122,  143,
+      139,  125,  123,  139,  150,  125,  126,  785,  150,  143,
+      130,  124,  127,  130,  130,  130,  130,  130,  130,  130,
+      133,  133,  133,  133,  133,  133,  133,  135,  133,  134,
+
+      134,  137,  137,  137,  137,  137,  137,  137,  144,  135,
+      321,  136,  321,  134,  136,  136,  136,  136,  136,  136,
+      136,  152,  144,  156,  145,  134,  138,  138,  138,  138,
+      138,  138,  138,  141,  145,  147,  149,  151,  153,  141,
+      154,  155,  147,  158,  152,  157,  149,  151,  153,  155,
+      159,  157,  156,  160,  161,  162,  164,  159,  165,  167,
+      168,  154,  169,  166,  155,  162,  171,  158,  166,  167,
+      165,  170,  172,  166,  160,  169,  164,  171,  161,  173,
+      170,  175,  172,  176,  177,  168,  174,  180,  174,  178,
+      174,  179,  181,  183,  182,  175,  173,  178,  174,  180,
+
+      175,  179,  184,  177,  185,  176,  182,  186,  187,  183,
+      188,  192,  184,  186,  190,  189,  181,  191,  190,  193,
+      194,  195,  187,  189,  191,  197,  189,  185,  192,  196,
+      198,  199,  188,  200,  197,  195,  201,  199,  204,  202,
+      201,  193,  203,  205,  194,  202,  206,  207,  196,  208,
+      198,  209,  210,  213,  214,  211,  212,  200,  233,  204,
+      206,  203,  215,  216,  217,  205,  210,  218,  212,  238,
+      207,  214,  209,  208,  211,  210,  215,  213,  269,  238,
+      233,  217,  216,  220,  220,  220,  220,  220,  220,  220,
+      269,  218,  221,  221,  221,  221,  221,  221,  221,  222,
+
+      222,  222,  222,  222,  222,  222,  223,  223,  223,  223,
+      223,  223,  223,  224,  224,  224,  224,  224,  224,  224,
+      225,  225,  225,  226,  231,  780,  226,  226,  226,  226,
+      226,  226,  226,  230,  225,  227,  227,  227,  227,  227,
+      227,  227,  239,  231,  232,  240,  225,  228,  228,  228,
+      228,  228,  228,  228,  236,  241,  230,  242,  232,  243,
+      244,  236,  240,  243,  245,  241,  239,  246,  245,  248,
+      250,  251,  255,  257,  256,  261,  258,  257,  251,  259,
+      265,  242,  260,  248,  246,  244,  258,  266,  270,  271,
+      274,  255,  250,  260,  251,  256,  259,  267,  273,  265,
+
+      261,  275,  273,  267,  276,  270,  278,  280,  279,  285,
+      276,  283,  266,  271,  281,  274,  282,  278,  279,  286,
+      281,  287,  282,  275,  288,  283,  289,  280,  290,  291,
+      289,  285,  292,  293,  295,  297,  298,  294,  299,  286,
+      301,  302,  300,  303,  295,  287,  292,  291,  288,  294,
+      300,  304,  293,  305,  290,  298,  307,  301,  330,  297,
+      302,  308,  299,  333,  306,  305,  306,  303,  306,  306,
+      307,  310,  311,  308,  304,  325,  306,  337,  314,  330,
+      333,  310,  311,  313,  313,  313,  313,  313,  313,  313,
+      314,  315,  315,  315,  315,  315,  315,  315,  316,  325,
+
+      318,  337,  314,  318,  318,  318,  318,  318,  318,  318,
+      316,  319,  319,  319,  319,  319,  319,  319,  343,  332,
+      779,  323,  316,  320,  320,  320,  320,  320,  320,  320,
+      323,  326,  328,  329,  331,  334,  335,  336,  328,  332,
+      331,  326,  345,  329,  343,  338,  335,  346,  345,  347,
+      348,  349,  354,  355,  359,  358,  331,  336,  334,  338,
+      349,  353,  360,  361,  362,  353,  346,  348,  358,  347,
+      354,  361,  363,  364,  365,  366,  362,  355,  359,  368,
+      367,  370,  373,  360,  369,  353,  371,  376,  377,  366,
+      382,  370,  778,  385,  374,  365,  364,  367,  369,  370,
+
+      371,  363,  373,  368,  374,  375,  378,  376,  377,  379,
+      380,  381,  382,  383,  380,  375,  378,  385,  379,  384,
+      386,  387,  388,  381,  393,  384,  383,  394,  404,  404,
+      393,  408,  388,  407,  412,  387,  434,  407,  408,  409,
+      412,  410,  386,  434,  397,  777,  394,  397,  397,  397,
+      397,  397,  397,  397,  398,  398,  398,  398,  398,  398,
+      398,  398,  398,  398,  399,  410,  400,  409,  398,  400,
+      400,  400,  400,  400,  400,  400,  399,  776,  775,  774,
+      398,  401,  401,  401,  401,  401,  401,  401,  399,  402,
+      402,  402,  402,  402,  402,  402,  403,  403,  403,  403,
+
+      403,  403,  403,  403,  411,  413,  414,  415,  416,  417,
+      419,  424,  416,  426,  428,  427,  433,  415,  435,  426,
+      432,  413,  438,  411,  428,  440,  433,  444,  417,  432,
+      414,  440,  441,  424,  419,  427,  443,  432,  435,  448,
+      445,  446,  441,  449,  451,  450,  452,  455,  448,  457,
+      456,  438,  459,  463,  460,  773,  444,  445,  460,  471,
+      443,  456,  446,  464,  451,  452,  455,  465,  466,  449,
+      450,  467,  457,  464,  472,  482,  459,  463,  466,  483,
+      485,  465,  471,  483,  472,  473,  473,  473,  473,  473,
+      473,  473,  482,  467,  474,  474,  474,  474,  474,  474,
+
+      474,  474,  475,  771,  485,  475,  475,  475,  475,  475,
+      475,  475,  476,  476,  476,  476,  476,  476,  476,  477,
+      477,  477,  477,  477,  477,  477,  477,  479,  479,  479,
+      479,  479,  479,  479,  481,  484,  486,  489,  490,  484,
+      491,  496,  497,  489,  491,  498,  503,  504,  506,  507,
+      486,  498,  481,  505,  509,  510,  515,  516,  506,  518,
+      503,  504,  490,  496,  511,  505,  497,  516,  511,  515,
+      517,  507,  519,  520,  523,  509,  518,  521,  510,  522,
+      517,  521,  525,  524,  526,  522,  527,  535,  523,  524,
+      520,  519,  528,  529,  526,  538,  535,  539,  527,  536,
+
+      536,  536,  536,  536,  536,  536,  525,  539,  541,  538,
+      544,  528,  529,  537,  537,  537,  537,  537,  537,  537,
+      537,  540,  543,  545,  546,  550,  552,  541,  556,  540,
+      557,  550,  544,  558,  559,  562,  556,  568,  563,  567,
+      570,  543,  571,  558,  573,  562,  564,  546,  563,  565,
+      552,  572,  545,  557,  564,  565,  559,  574,  567,  571,
+      575,  568,  573,  571,  574,  572,  576,  577,  578,  570,
+      576,  579,  586,  584,  587,  588,  589,  577,  595,  590,
+      578,  591,  600,  602,  589,  601,  770,  610,  607,  575,
+      769,  613,  586,  612,  587,  579,  584,  613,  614,  588,
+
+      590,  610,  591,  612,  615,  602,  600,  595,  607,  601,
+      615,  616,  617,  618,  619,  614,  625,  626,  627,  643,
+      630,  629,  644,  645,  648,  631,  626,  651,  616,  627,
+      630,  656,  618,  617,  629,  631,  619,  646,  649,  625,
+      643,  648,  645,  644,  650,  656,  646,  651,  649,  657,
+      658,  669,  661,  670,  650,  671,  658,  672,  673,  657,
+      661,  676,  680,  681,  682,  683,  672,  671,  692,  673,
+      670,  693,  676,  691,  699,  768,  695,  701,  682,  683,
+      669,  680,  695,  691,  700,  693,  699,  681,  702,  710,
+      700,  711,  692,  713,  701,  720,  718,  730,  734,  702,
+
+      728,  748,  710,  718,  767,  735,  766,  713,  765,  720,
+      711,  748,  728,  735,  730,  734,  794,  794,  795,  764,
+      795,  763,  761,  795,  796,  760,  796,  796,  797,  759,
+      797,  758,  757,  797,  798,  756,  755,  798,  799,  799,
+      799,  799,  800,  754,  753,  800,  801,  752,  801,  801,
+      802,  802,  803,  803,  803,  803,  804,  751,  804,  805,
+      750,  805,  749,  747,  805,  806,  746,  806,  806,  807,
+      745,  807,  807,  808,  808,  744,  743,  808,  809,  809,
+      742,  741,  809,  810,  810,  811,  740,  811,  811,  812,
+      739,  812,  812,  738,  737,  736,  733,  732,  731,  729,
+
+      727,  726,  725,  724,  723,  722,  721,  719,  717,  716,
+      715,  714,  712,  709,  708,  707,  706,  705,  704,  703,
+      698,  697,  696,  694,  690,  689,  688,  687,  686,  685,
+      684,  679,  678,  677,  675,  674,  667,  666,  665,  664,
+      663,  662,  660,  659,  655,  654,  653,  652,  647,  642,
+      641,  640,  639,  638,  637,  636,  635,  634,  633,  632,
+      628,  624,  623,  622,  621,  620,  611,  609,  608,  606,
+      605,  604,  603,  599,  598,  597,  596,  594,  593,  592,
+      585,  583,  582,  581,  580,  569,  566,  561,  560,  555,
+      554,  553,  551,  549,  548,  547,  542,  534,  533,  532,
+
+      531,  530,  514,  513,  512,  508,  502,  501,  500,  499,
+      495,  494,  493,  492,  488,  487,  480,  470,  469,  468,
+      462,  461,  458,  454,  453,  447,  442,  439,  437,  436,
+      431,  430,  429,  425,  423,  422,  421,  420,  418,  406,
+      405,  396,  395,  391,  390,  389,  372,  357,  356,  352,
+      351,  350,  344,  342,  341,  340,  339,  327,  324,  322,
+      309,  296,  284,  277,  272,  268,  264,  263,  262,  254,
+      253,  252,  249,  247,  237,  235,  234,  229,  219,  163,
+      148,  146,  142,  140,  131,  107,   92,   85,   62,   46,
+       44,   17,   16,   10,    7,    5,    3,  793,  793,  793,
+
+      793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
+      793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
+      793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
+      793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
+      793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
+      793,  793,  793,  793
     } ;
 
 static grib_yy_state_type grib_yy_last_accepting_state;
@@ -1029,7 +1102,7 @@ int grib_yy_flex_debug = 0;
 char *grib_yytext;
 #line 1 "gribl.l"
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -1076,7 +1149,7 @@ void _grib_ignore_grib_yyunput_unused_error() { grib_yyunput(0,0); }
  #define GET_INPUT input
 #endif
 
-#line 1080 "lex.grib_yy.c"
+#line 1153 "gribl.c"
 
 #define INITIAL 0
 
@@ -1115,7 +1188,7 @@ FILE *grib_yyget_out (void );
 
 void grib_yyset_out  (FILE * out_str  );
 
-int grib_yyget_leng (void );
+grib_yy_size_t grib_yyget_leng (void );
 
 char *grib_yyget_text (void );
 
@@ -1165,7 +1238,7 @@ static int input (void );
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO fwrite( grib_yytext, grib_yyleng, 1, grib_yyout )
+#define ECHO do { if (fwrite( grib_yytext, grib_yyleng, 1, grib_yyout )) {} } while (0)
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -1176,7 +1249,7 @@ static int input (void );
 	if ( YY_CURRENT_BUFFER_LVALUE->grib_yy_is_interactive ) \
 		{ \
 		int c = '*'; \
-		int n; \
+		size_t n; \
 		for ( n = 0; n < max_size && \
 			     (c = getc( grib_yyin )) != EOF && c != '\n'; ++n ) \
 			buf[n] = (char) c; \
@@ -1258,11 +1331,11 @@ YY_DECL
 	register char *grib_yy_cp, *grib_yy_bp;
 	register int grib_yy_act;
     
-#line 65 "gribl.l"
+#line 68 "gribl.l"
 
 
 
-#line 1266 "lex.grib_yy.c"
+#line 1339 "gribl.c"
 
 	if ( !(grib_yy_init) )
 		{
@@ -1315,13 +1388,13 @@ grib_yy_match:
 			while ( grib_yy_chk[grib_yy_base[grib_yy_current_state] + grib_yy_c] != grib_yy_current_state )
 				{
 				grib_yy_current_state = (int) grib_yy_def[grib_yy_current_state];
-				if ( grib_yy_current_state >= 760 )
+				if ( grib_yy_current_state >= 794 )
 					grib_yy_c = grib_yy_meta[(unsigned int) grib_yy_c];
 				}
 			grib_yy_current_state = grib_yy_nxt[grib_yy_base[grib_yy_current_state] + (unsigned int) grib_yy_c];
 			++grib_yy_cp;
 			}
-		while ( grib_yy_base[grib_yy_current_state] != 1455 );
+		while ( grib_yy_base[grib_yy_current_state] != 1698 );
 
 grib_yy_find_action:
 		grib_yy_act = grib_yy_accept[grib_yy_current_state];
@@ -1347,637 +1420,637 @@ do_action:	/* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 68 "gribl.l"
+#line 71 "gribl.l"
 return EQ       ;
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 69 "gribl.l"
+#line 72 "gribl.l"
 return GE       ;
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 70 "gribl.l"
+#line 73 "gribl.l"
 return GT       ;
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 71 "gribl.l"
+#line 74 "gribl.l"
 return LE       ;
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 72 "gribl.l"
+#line 75 "gribl.l"
 return LT       ;
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 73 "gribl.l"
+#line 76 "gribl.l"
 return NE       ;
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 74 "gribl.l"
+#line 77 "gribl.l"
 return NE       ;
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 75 "gribl.l"
+#line 78 "gribl.l"
 return BIT      ;
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 76 "gribl.l"
+#line 79 "gribl.l"
 return BITOFF   ;
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 78 "gribl.l"
+#line 81 "gribl.l"
 return IS   ;
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 79 "gribl.l"
+#line 82 "gribl.l"
 return NOT   ;
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 80 "gribl.l"
+#line 83 "gribl.l"
 return NOT   ;
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 81 "gribl.l"
+#line 84 "gribl.l"
 return AND   ;
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 82 "gribl.l"
+#line 85 "gribl.l"
 return AND   ;
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 83 "gribl.l"
+#line 86 "gribl.l"
 return OR   ;
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 84 "gribl.l"
+#line 87 "gribl.l"
 return OR   ;
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 86 "gribl.l"
+#line 89 "gribl.l"
 return NIL   ;
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 87 "gribl.l"
+#line 90 "gribl.l"
 return DUMMY   ;
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 89 "gribl.l"
+#line 92 "gribl.l"
 return SUBSTR   ;
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 90 "gribl.l"
+#line 93 "gribl.l"
 return CLOSE   ;
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 91 "gribl.l"
+#line 94 "gribl.l"
 return LENGTH   ;
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 92 "gribl.l"
+#line 95 "gribl.l"
 return LOWERCASE;
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 93 "gribl.l"
+#line 96 "gribl.l"
 return IF       ;
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 94 "gribl.l"
+#line 97 "gribl.l"
 return IF_TRANSIENT       ;
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 95 "gribl.l"
+#line 98 "gribl.l"
 return ELSE       ;
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 96 "gribl.l"
+#line 99 "gribl.l"
 return UNSIGNED ;
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 97 "gribl.l"
+#line 100 "gribl.l"
 return ASCII    ;
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 98 "gribl.l"
+#line 101 "gribl.l"
 return BYTE    ;
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 99 "gribl.l"
+#line 102 "gribl.l"
 return LABEL    ;
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 100 "gribl.l"
+#line 103 "gribl.l"
 return LIST     ;
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 101 "gribl.l"
+#line 104 "gribl.l"
 return WHILE     ;
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 102 "gribl.l"
+#line 105 "gribl.l"
 return TEMPLATE ;
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 103 "gribl.l"
+#line 106 "gribl.l"
 return TEMPLATE_NOFAIL ;
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 104 "gribl.l"
+#line 107 "gribl.l"
 return TRIGGER ;
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 105 "gribl.l"
+#line 108 "gribl.l"
 return END      ;
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 106 "gribl.l"
+#line 109 "gribl.l"
 return IBMFLOAT ;
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 107 "gribl.l"
+#line 110 "gribl.l"
 return FLOAT ;
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 108 "gribl.l"
+#line 111 "gribl.l"
 return SIGNED   ;
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 109 "gribl.l"
+#line 112 "gribl.l"
 return CODETABLE;
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 110 "gribl.l"
+#line 113 "gribl.l"
 return GETENV;
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 111 "gribl.l"
+#line 114 "gribl.l"
 return SMART_TABLE;
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 112 "gribl.l"
+#line 115 "gribl.l"
 return DICTIONARY;
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 113 "gribl.l"
+#line 116 "gribl.l"
 return CODETABLE;
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 114 "gribl.l"
+#line 117 "gribl.l"
 return FLAG     ;
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 115 "gribl.l"
+#line 118 "gribl.l"
 return LOOKUP   ;
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 116 "gribl.l"
+#line 119 "gribl.l"
 return GROUP  ;
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 117 "gribl.l"
+#line 120 "gribl.l"
 return NON_ALPHA   ;
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 118 "gribl.l"
+#line 121 "gribl.l"
 return META     ;
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 119 "gribl.l"
+#line 122 "gribl.l"
 return PADTOEVEN    ;
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 120 "gribl.l"
+#line 123 "gribl.l"
 return PADTO    ;
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 121 "gribl.l"
+#line 124 "gribl.l"
 return PADTOMULTIPLE    ;
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 122 "gribl.l"
+#line 125 "gribl.l"
 return PAD      ;
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 123 "gribl.l"
+#line 126 "gribl.l"
 return SECTION_PADDING      ;
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 124 "gribl.l"
+#line 127 "gribl.l"
 return MESSAGE      ;
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 125 "gribl.l"
+#line 128 "gribl.l"
 return MESSAGE_COPY      ;
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 126 "gribl.l"
+#line 129 "gribl.l"
 return ALIAS    ;
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 127 "gribl.l"
+#line 130 "gribl.l"
 return UNALIAS    ;
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 128 "gribl.l"
+#line 131 "gribl.l"
 return POS      ;
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 129 "gribl.l"
+#line 132 "gribl.l"
 return INTCONST ;
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 130 "gribl.l"
+#line 133 "gribl.l"
 return TRANS    ;
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 131 "gribl.l"
+#line 134 "gribl.l"
 return STRING_TYPE   ;
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 132 "gribl.l"
+#line 135 "gribl.l"
 return LONG_TYPE   ;
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 133 "gribl.l"
+#line 136 "gribl.l"
 return DOUBLE_TYPE   ;
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 134 "gribl.l"
+#line 137 "gribl.l"
 return ITERATOR ;
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 135 "gribl.l"
+#line 138 "gribl.l"
 return NEAREST ;
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 136 "gribl.l"
+#line 139 "gribl.l"
 return BOX ;
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 137 "gribl.l"
+#line 140 "gribl.l"
 return KSEC    ;
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 138 "gribl.l"
+#line 141 "gribl.l"
 return FLAGBIT    ;
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 139 "gribl.l"
+#line 142 "gribl.l"
 return KSEC1EXPVER    ;
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 140 "gribl.l"
+#line 143 "gribl.l"
 return MODIFY    ;
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 142 "gribl.l"
+#line 145 "gribl.l"
 return G1_HALF_BYTE    ;
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 143 "gribl.l"
+#line 146 "gribl.l"
 return G1_MESSAGE_LENGTH    ;
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 144 "gribl.l"
+#line 147 "gribl.l"
 return G1_SECTION4_LENGTH    ;
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 146 "gribl.l"
+#line 149 "gribl.l"
 return EXPORT;
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 147 "gribl.l"
+#line 150 "gribl.l"
 return REMOVE;
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 148 "gribl.l"
+#line 151 "gribl.l"
 return RENAME;
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 149 "gribl.l"
+#line 152 "gribl.l"
 return IS_IN_LIST;
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 150 "gribl.l"
+#line 153 "gribl.l"
 return IS_IN_DICT;
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 151 "gribl.l"
+#line 154 "gribl.l"
 return TO_INTEGER;
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 152 "gribl.l"
+#line 155 "gribl.l"
 return TO_STRING;
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 153 "gribl.l"
+#line 156 "gribl.l"
 return SEX2DEC;
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 154 "gribl.l"
+#line 157 "gribl.l"
 return IS_INTEGER;
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 155 "gribl.l"
+#line 158 "gribl.l"
 return IS_INTEGER;
 	YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 157 "gribl.l"
+#line 160 "gribl.l"
 return SECTION_LENGTH     ;
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 159 "gribl.l"
+#line 162 "gribl.l"
 return ASSERT    ;
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 161 "gribl.l"
+#line 164 "gribl.l"
 return READ_ONLY;
 	YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 162 "gribl.l"
+#line 165 "gribl.l"
 return NO_COPY;
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 163 "gribl.l"
+#line 166 "gribl.l"
 return EDITION_SPECIFIC;
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 164 "gribl.l"
+#line 167 "gribl.l"
 return DUMP;
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 165 "gribl.l"
+#line 168 "gribl.l"
 return JSON;
 	YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 166 "gribl.l"
+#line 169 "gribl.l"
 return XML;
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 167 "gribl.l"
+#line 170 "gribl.l"
 return NO_FAIL;
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 168 "gribl.l"
+#line 171 "gribl.l"
 return HIDDEN;
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 169 "gribl.l"
+#line 172 "gribl.l"
 return CAN_BE_MISSING;
 	YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 170 "gribl.l"
+#line 173 "gribl.l"
 return MISSING;
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 171 "gribl.l"
+#line 174 "gribl.l"
 return CONSTRAINT;
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 172 "gribl.l"
+#line 175 "gribl.l"
 return OVERRIDE;
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 173 "gribl.l"
+#line 176 "gribl.l"
 return COPY_OK;
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 175 "gribl.l"
+#line 178 "gribl.l"
 return UINT8;
 	YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 176 "gribl.l"
+#line 179 "gribl.l"
 return INT8;
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 178 "gribl.l"
+#line 181 "gribl.l"
 return UINT16;
 	YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 179 "gribl.l"
+#line 182 "gribl.l"
 return INT16;
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 180 "gribl.l"
+#line 183 "gribl.l"
 return UINT16_LITTLE_ENDIAN;
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 181 "gribl.l"
+#line 184 "gribl.l"
 return INT16_LITTLE_ENDIAN;
 	YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 183 "gribl.l"
+#line 186 "gribl.l"
 return UINT32;
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 184 "gribl.l"
+#line 187 "gribl.l"
 return INT32;
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 185 "gribl.l"
+#line 188 "gribl.l"
 return UINT32_LITTLE_ENDIAN;
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 186 "gribl.l"
+#line 189 "gribl.l"
 return INT32_LITTLE_ENDIAN;
 	YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 188 "gribl.l"
+#line 191 "gribl.l"
 return UINT64;
 	YY_BREAK
 case 110:
 YY_RULE_SETUP
-#line 189 "gribl.l"
+#line 192 "gribl.l"
 return INT64;
 	YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 190 "gribl.l"
+#line 193 "gribl.l"
 return UINT64_LITTLE_ENDIAN;
 	YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 191 "gribl.l"
+#line 194 "gribl.l"
 return INT64_LITTLE_ENDIAN;
 	YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 193 "gribl.l"
+#line 196 "gribl.l"
 return BLOB;
 	YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 195 "gribl.l"
+#line 198 "gribl.l"
 return SET;
 	YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 196 "gribl.l"
+#line 199 "gribl.l"
 return SET_NOFAIL;
 	YY_BREAK
 case 116:
 YY_RULE_SETUP
-#line 197 "gribl.l"
+#line 200 "gribl.l"
 return WHEN;
 	YY_BREAK
 case 117:
 YY_RULE_SETUP
-#line 198 "gribl.l"
+#line 201 "gribl.l"
 return CASE;
 	YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 199 "gribl.l"
+#line 202 "gribl.l"
 return SWITCH;
 	YY_BREAK
 case 119:
 YY_RULE_SETUP
-#line 200 "gribl.l"
+#line 203 "gribl.l"
 return DEFAULT;
 	YY_BREAK
 case 120:
 YY_RULE_SETUP
-#line 201 "gribl.l"
+#line 204 "gribl.l"
 return CONCEPT;
 	YY_BREAK
 case 121:
 YY_RULE_SETUP
-#line 202 "gribl.l"
+#line 205 "gribl.l"
 return CONCEPT_NOFAIL;
 	YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 203 "gribl.l"
+#line 206 "gribl.l"
 return HASH_ARRAY;
 	YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 204 "gribl.l"
+#line 207 "gribl.l"
 return WRITE;
 	YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 205 "gribl.l"
+#line 208 "gribl.l"
 return APPEND;
 	YY_BREAK
 case 125:
 YY_RULE_SETUP
-#line 206 "gribl.l"
+#line 209 "gribl.l"
 return PRINT;
 	YY_BREAK
 case 126:
 YY_RULE_SETUP
-#line 207 "gribl.l"
+#line 210 "gribl.l"
 return SKIP;
 	YY_BREAK
 case 127:
 YY_RULE_SETUP
-#line 209 "gribl.l"
+#line 212 "gribl.l"
 {
           int c,q;
           while((c = GET_INPUT()) && isspace(c) && c != '\n') ;
@@ -1997,7 +2070,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 128:
 YY_RULE_SETUP
-#line 226 "gribl.l"
+#line 229 "gribl.l"
 {
            int c,q = grib_yytext[0];
 
@@ -2019,7 +2092,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 129:
 YY_RULE_SETUP
-#line 245 "gribl.l"
+#line 248 "gribl.l"
 {
            int c;
            unsigned long val = 0;
@@ -2035,37 +2108,37 @@ YY_RULE_SETUP
 	YY_BREAK
 case 130:
 YY_RULE_SETUP
-#line 259 "gribl.l"
+#line 262 "gribl.l"
 { grib_yylval.str = strdup(grib_yytext); return IDENT; }
 	YY_BREAK
 case 131:
 YY_RULE_SETUP
-#line 260 "gribl.l"
+#line 263 "gribl.l"
 { grib_yylval.lval = atol((const char *)grib_yytext); return INTEGER; }
 	YY_BREAK
 case 132:
 YY_RULE_SETUP
-#line 261 "gribl.l"
+#line 264 "gribl.l"
 { grib_yylval.lval = atol((const char *)grib_yytext); return INTEGER; }
 	YY_BREAK
 case 133:
 YY_RULE_SETUP
-#line 262 "gribl.l"
+#line 265 "gribl.l"
 { grib_yylval.dval = atof((const char *)grib_yytext); return FLOAT; }
 	YY_BREAK
 case 134:
 YY_RULE_SETUP
-#line 263 "gribl.l"
+#line 266 "gribl.l"
 { grib_yylval.dval = atof((const char *)grib_yytext); return FLOAT; }
 	YY_BREAK
 case 135:
 YY_RULE_SETUP
-#line 264 "gribl.l"
+#line 267 "gribl.l"
 { grib_yylval.dval = atof((const char *)grib_yytext); return FLOAT; }
 	YY_BREAK
 case 136:
 YY_RULE_SETUP
-#line 267 "gribl.l"
+#line 270 "gribl.l"
 {
            int c;
            while((c = GET_INPUT()) && (c != '\n')){}
@@ -2075,26 +2148,26 @@ YY_RULE_SETUP
 	YY_BREAK
 case 137:
 YY_RULE_SETUP
-#line 273 "gribl.l"
+#line 276 "gribl.l"
 ;
 	YY_BREAK
 case 138:
 /* rule 138 can match eol */
 YY_RULE_SETUP
-#line 274 "gribl.l"
+#line 277 "gribl.l"
 grib_yylineno++;
 	YY_BREAK
 case 139:
 YY_RULE_SETUP
-#line 278 "gribl.l"
+#line 281 "gribl.l"
 return *grib_yytext;
 	YY_BREAK
 case 140:
 YY_RULE_SETUP
-#line 280 "gribl.l"
+#line 283 "gribl.l"
 ECHO;
 	YY_BREAK
-#line 2098 "lex.grib_yy.c"
+#line 2171 "gribl.c"
 case YY_STATE_EOF(INITIAL):
 	grib_yyterminate();
 
@@ -2280,21 +2353,21 @@ static int grib_yy_get_next_buffer (void)
 
 	else
 		{
-			int num_to_read =
+			grib_yy_size_t num_to_read =
 			YY_CURRENT_BUFFER_LVALUE->grib_yy_buf_size - number_to_move - 1;
 
 		while ( num_to_read <= 0 )
 			{ /* Not enough room in the buffer - grow it. */
 
 			/* just a shorter name for the current buffer */
-			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+			YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
 
 			int grib_yy_c_buf_p_offset =
 				(int) ((grib_yy_c_buf_p) - b->grib_yy_ch_buf);
 
 			if ( b->grib_yy_is_our_buffer )
 				{
-				int new_size = b->grib_yy_buf_size * 2;
+				grib_yy_size_t new_size = b->grib_yy_buf_size * 2;
 
 				if ( new_size <= 0 )
 					b->grib_yy_buf_size += b->grib_yy_buf_size / 8;
@@ -2325,7 +2398,7 @@ static int grib_yy_get_next_buffer (void)
 
 		/* Read in more data. */
 		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->grib_yy_ch_buf[number_to_move]),
-			(grib_yy_n_chars), (size_t) num_to_read );
+			(grib_yy_n_chars), num_to_read );
 
 		YY_CURRENT_BUFFER_LVALUE->grib_yy_n_chars = (grib_yy_n_chars);
 		}
@@ -2386,7 +2459,7 @@ static int grib_yy_get_next_buffer (void)
 		while ( grib_yy_chk[grib_yy_base[grib_yy_current_state] + grib_yy_c] != grib_yy_current_state )
 			{
 			grib_yy_current_state = (int) grib_yy_def[grib_yy_current_state];
-			if ( grib_yy_current_state >= 760 )
+			if ( grib_yy_current_state >= 794 )
 				grib_yy_c = grib_yy_meta[(unsigned int) grib_yy_c];
 			}
 		grib_yy_current_state = grib_yy_nxt[grib_yy_base[grib_yy_current_state] + (unsigned int) grib_yy_c];
@@ -2414,13 +2487,13 @@ static int grib_yy_get_next_buffer (void)
 	while ( grib_yy_chk[grib_yy_base[grib_yy_current_state] + grib_yy_c] != grib_yy_current_state )
 		{
 		grib_yy_current_state = (int) grib_yy_def[grib_yy_current_state];
-		if ( grib_yy_current_state >= 760 )
+		if ( grib_yy_current_state >= 794 )
 			grib_yy_c = grib_yy_meta[(unsigned int) grib_yy_c];
 		}
 	grib_yy_current_state = grib_yy_nxt[grib_yy_base[grib_yy_current_state] + (unsigned int) grib_yy_c];
-	grib_yy_is_jam = (grib_yy_current_state == 759);
+	grib_yy_is_jam = (grib_yy_current_state == 793);
 
-	return grib_yy_is_jam ? 0 : grib_yy_current_state;
+		return grib_yy_is_jam ? 0 : grib_yy_current_state;
 }
 
     void grib_yyunput (int c, register char * grib_yy_bp )
@@ -2435,7 +2508,7 @@ static int grib_yy_get_next_buffer (void)
 	if ( grib_yy_cp < YY_CURRENT_BUFFER_LVALUE->grib_yy_ch_buf + 2 )
 		{ /* need to shift things up to make room */
 		/* +2 for EOB chars. */
-		register int number_to_move = (grib_yy_n_chars) + 2;
+		register grib_yy_size_t number_to_move = (grib_yy_n_chars) + 2;
 		register char *dest = &YY_CURRENT_BUFFER_LVALUE->grib_yy_ch_buf[
 					YY_CURRENT_BUFFER_LVALUE->grib_yy_buf_size + 2];
 		register char *source =
@@ -2484,7 +2557,7 @@ static int grib_yy_get_next_buffer (void)
 
 		else
 			{ /* need more input */
-			int offset = (grib_yy_c_buf_p) - (grib_yytext_ptr);
+			grib_yy_size_t offset = (grib_yy_c_buf_p) - (grib_yytext_ptr);
 			++(grib_yy_c_buf_p);
 
 			switch ( grib_yy_get_next_buffer(  ) )
@@ -2644,10 +2717,6 @@ static void grib_yy_load_buffer_state  (void)
 	grib_yyfree((void *) b  );
 }
 
-#ifndef __cplusplus
-extern int isatty (int );
-#endif /* __cplusplus */
-    
 /* Initializes or reinitializes a buffer.
  * This function is sometimes called more than once on the same buffer,
  * such as during a grib_yyrestart() or at EOF.
@@ -2760,7 +2829,7 @@ void grib_yypop_buffer_state (void)
  */
 static void grib_yyensure_buffer_stack (void)
 {
-	int num_to_alloc;
+	grib_yy_size_t num_to_alloc;
     
 	if (!(grib_yy_buffer_stack)) {
 
@@ -2852,12 +2921,12 @@ YY_BUFFER_STATE grib_yy_scan_string (grib_yyconst char * grib_yystr )
 
 /** Setup the input buffer state to scan the given bytes. The next call to grib_yylex() will
  * scan from a @e copy of @a bytes.
- * @param bytes the byte buffer to scan
- * @param len the number of bytes in the buffer pointed to by @a bytes.
+ * @param grib_yybytes the byte buffer to scan
+ * @param _grib_yybytes_len the number of bytes in the buffer pointed to by @a bytes.
  * 
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE grib_yy_scan_bytes  (grib_yyconst char * grib_yybytes, int  _grib_yybytes_len )
+YY_BUFFER_STATE grib_yy_scan_bytes  (grib_yyconst char * grib_yybytes, grib_yy_size_t  _grib_yybytes_len )
 {
 	YY_BUFFER_STATE b;
 	char *buf;
@@ -2944,7 +3013,7 @@ FILE *grib_yyget_out  (void)
 /** Get the length of the current token.
  * 
  */
-int grib_yyget_leng  (void)
+grib_yy_size_t grib_yyget_leng  (void)
 {
         return grib_yyleng;
 }
@@ -3092,7 +3161,7 @@ void grib_yyfree (void * ptr )
 
 #define YYTABLES_NAME "grib_yytables"
 
-#line 280 "gribl.l"
+#line 283 "gribl.l"
 
 
 
diff --git a/src/grib_loader_from_array.c b/src/grib_loader_from_array.c
index 061de21..fb37955 100644
--- a/src/grib_loader_from_array.c
+++ b/src/grib_loader_from_array.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -17,7 +17,6 @@
 
 int grib_lookup_long_from_array(grib_context* gc,grib_loader* loader,const char* name,long* lvalue)
 {
-
     char* strvalue=0;
     size_t size=0;
     char* pstr=NULL;
@@ -60,173 +59,172 @@ int grib_lookup_long_from_array(grib_context* gc,grib_loader* loader,const char*
 
 int grib_init_accessor_from_array(grib_loader* loader,grib_accessor* ga,grib_arguments* default_value)
 {
-  grib_handle* h = ga->parent->h;
-  int retval =GRIB_SUCCESS;
-  char* strvalue;
-  size_t len=0;
-  int type=0;
-  double* dvalue=0;
-  long* lvalue=0;
-  long lval=0;
-  double dval=0;
-  int i=0;
-  grib_associative_array* ar=NULL;
-  grib_runtime_type* value=NULL;
-
-  ar=(grib_associative_array*)loader->data;
-
-  grib_context_log(h->context,GRIB_LOG_DEBUG, "Initialize  %s",   ga->name);
-
-  retval= grib_associative_array_get(ar,ga->name,&value);
-
-  if((retval != GRIB_ARRAY_SUCCESS) && default_value) {
-      grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to default value", ga->name);
-      grib_pack_expression(ga,grib_arguments_get_expression(h,default_value,0));
-      return GRIB_SUCCESS;
-  }
-
-  if(ga->flags & GRIB_ACCESSOR_FLAG_READ_ONLY)
-  {
-    grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting  %s  ignored (read only)",   ga->name);
-    return GRIB_SUCCESS;
-  }
-
-  if (retval != GRIB_ARRAY_SUCCESS) {
-    grib_context_log(h->context,GRIB_LOG_DEBUG,
-        "Grib array error %d",retval);
-    if ((ga->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING)) {
-      grib_context_log(h->context,GRIB_LOG_DEBUG,
-        "Setting  %s  ignored (optional or can be missing)",   ga->name);
-      return GRIB_SUCCESS;
-    } else {
-      grib_context_log(h->context,GRIB_LOG_ERROR, "%s  required",   ga->name);
-      return retval;
-    }
-  }
+    grib_handle* h = grib_handle_of_accessor(ga);
+    int retval =GRIB_SUCCESS;
+    char* strvalue;
+    size_t len=0;
+    int type=0;
+    double* dvalue=0;
+    long* lvalue=0;
+    long lval=0;
+    double dval=0;
+    int i=0;
+    grib_associative_array* ar=NULL;
+    grib_runtime_type* value=NULL;
 
-  if (value && grib_runtimetype_get_type(value,&type) == GRIB_RUNTIMETYPE_SUCCESS) {
-    if (type == GRIB_RUNTIMETYPE_CHAR ) {
-      grib_runtimetype_get_char(value,&strvalue,&len);
-        switch(grib_accessor_get_native_type(ga))  {
+    ar=(grib_associative_array*)loader->data;
 
-          case GRIB_TYPE_STRING:
-            grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to string %s",
-                              ga->name, strvalue);
-            grib_set_string_internal(h,ga->name,strvalue,&len);
-            break;
+    grib_context_log(h->context,GRIB_LOG_DEBUG, "Initialize  %s",   ga->name);
+
+    retval= grib_associative_array_get(ar,ga->name,&value);
+
+    if((retval != GRIB_ARRAY_SUCCESS) && default_value) {
+        grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to default value", ga->name);
+        grib_pack_expression(ga,grib_arguments_get_expression(h,default_value,0));
+        return GRIB_SUCCESS;
+    }
+
+    if(ga->flags & GRIB_ACCESSOR_FLAG_READ_ONLY)
+    {
+        grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting  %s  ignored (read only)",   ga->name);
+        return GRIB_SUCCESS;
+    }
 
-          case GRIB_TYPE_LONG:
-           if (!strcmp(strvalue,"MISSING")) lval=GRIB_MISSING_LONG;
-           else lval=atol(strvalue);
-           grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to long %d", ga->name, lval);
-           grib_set_long_internal(h,ga->name,lval);
-           break;
-
-          case GRIB_TYPE_DOUBLE:
-           if (!strcmp(strvalue,"MISSING")) dval=GRIB_MISSING_DOUBLE;
-           else if (sscanf(strvalue,"%lg",&dval)!=1) {
-             grib_context_log(h->context,GRIB_LOG_ERROR, "Unable to set %s wrong value format",   ga->name);
-           }
-           grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to double %lg (%s)", ga->name, dval,strvalue);
-           grib_set_double_internal(h,ga->name,dval);
-           break;
-
-          case GRIB_TYPE_BYTES:
-           grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to string %s",
-                            ga->name, strvalue);
-           grib_set_bytes_internal(h,ga->name,(unsigned char*)strvalue,&len);
-           break;
-
-         case GRIB_TYPE_LABEL:
-           break;
-
-         default:
-           grib_context_log(h->context,GRIB_LOG_ERROR, "Setting %s, cannot establish type %d [%s]"
-            , ga->name,grib_accessor_get_native_type(ga),ga->creator->cclass->name);
-           break;
+    if (retval != GRIB_ARRAY_SUCCESS) {
+        grib_context_log(h->context,GRIB_LOG_DEBUG,
+                "Grib array error %d",retval);
+        if ((ga->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING)) {
+            grib_context_log(h->context,GRIB_LOG_DEBUG,
+                    "Setting  %s  ignored (optional or can be missing)",   ga->name);
+            return GRIB_SUCCESS;
+        } else {
+            grib_context_log(h->context,GRIB_LOG_ERROR, "%s  required",   ga->name);
+            return retval;
         }
-   } else {
-
-      if (grib_runtimetype_get_double(value,&dvalue,&len) == GRIB_RUNTIMETYPE_SUCCESS) {
-        switch(grib_accessor_get_native_type(ga))  {
-
-          case GRIB_TYPE_LONG:
-           lvalue=(long*)malloc(sizeof(long)*len);
-           for (i=0;i<len;i++) lvalue[i]=(long)dvalue[i];
-           grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting long array %s",ga->name);
-           grib_set_long_array(h,ga->name,lvalue,len);
-           free(lvalue);
-           break;
-
-          case GRIB_TYPE_DOUBLE:
-           grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting double array %s",ga->name);
-           grib_set_double_array(h,ga->name,dvalue,len);
-           break;
-
-          default:
-           grib_context_log(h->context,GRIB_LOG_ERROR, "Setting array %s, wrong type [%d]"
-            , ga->name,grib_accessor_get_native_type(ga));
-           break;
-         }
-
-      } else
-          grib_context_log(h->context,GRIB_LOG_ERROR, "Unable to set %s to double, wrong type (%d)",
-          ga->name,type);
     }
+
+    if (value && grib_runtimetype_get_type(value,&type) == GRIB_RUNTIMETYPE_SUCCESS) {
+        if (type == GRIB_RUNTIMETYPE_CHAR ) {
+            grib_runtimetype_get_char(value,&strvalue,&len);
+            switch(grib_accessor_get_native_type(ga))  {
+
+            case GRIB_TYPE_STRING:
+                grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to string %s",
+                        ga->name, strvalue);
+                grib_set_string_internal(h,ga->name,strvalue,&len);
+                break;
+
+            case GRIB_TYPE_LONG:
+                if (!strcmp(strvalue,"MISSING")) lval=GRIB_MISSING_LONG;
+                else lval=atol(strvalue);
+                grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to long %d", ga->name, lval);
+                grib_set_long_internal(h,ga->name,lval);
+                break;
+
+            case GRIB_TYPE_DOUBLE:
+                if (!strcmp(strvalue,"MISSING")) dval=GRIB_MISSING_DOUBLE;
+                else if (sscanf(strvalue,"%lg",&dval)!=1) {
+                    grib_context_log(h->context,GRIB_LOG_ERROR, "Unable to set %s wrong value format",   ga->name);
+                }
+                grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to double %lg (%s)", ga->name, dval,strvalue);
+                grib_set_double_internal(h,ga->name,dval);
+                break;
+
+            case GRIB_TYPE_BYTES:
+                grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to string %s",
+                        ga->name, strvalue);
+                grib_set_bytes_internal(h,ga->name,(unsigned char*)strvalue,&len);
+                break;
+
+            case GRIB_TYPE_LABEL:
+                break;
+
+            default:
+                grib_context_log(h->context,GRIB_LOG_ERROR, "Setting %s, cannot establish type %d [%s]"
+                        , ga->name,grib_accessor_get_native_type(ga),ga->creator->cclass->name);
+                break;
+            }
+        } else {
+
+            if (grib_runtimetype_get_double(value,&dvalue,&len) == GRIB_RUNTIMETYPE_SUCCESS) {
+                switch(grib_accessor_get_native_type(ga))  {
+
+                case GRIB_TYPE_LONG:
+                    lvalue=(long*)malloc(sizeof(long)*len);
+                    for (i=0;i<len;i++) lvalue[i]=(long)dvalue[i];
+                    grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting long array %s",ga->name);
+                    grib_set_long_array(h,ga->name,lvalue,len);
+                    free(lvalue);
+                    break;
+
+                case GRIB_TYPE_DOUBLE:
+                    grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting double array %s",ga->name);
+                    grib_set_double_array(h,ga->name,dvalue,len);
+                    break;
+
+                default:
+                    grib_context_log(h->context,GRIB_LOG_ERROR, "Setting array %s, wrong type [%d]"
+                            , ga->name,grib_accessor_get_native_type(ga));
+                    break;
+                }
+
+            } else
+                grib_context_log(h->context,GRIB_LOG_ERROR, "Unable to set %s to double, wrong type (%d)",
+                        ga->name,type);
+        }
 #if 0
-    switch(grib_accessor_get_native_type(ga))
-    {
-      case GRIB_TYPE_STRING:
-        if (grib_runtimetype_get_char(value,&strvalue,&strvalue_size) == GRIB_RUNTIMETYPE_SUCCESS) {
-          grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to string %s",
-          ga->name, strvalue);
-          len=strlen(strvalue);
-          grib_set_string_internal(h,ga->name,strvalue,&len);
-        } else
-          grib_context_log(h->context,GRIB_LOG_ERROR, "Unable to set %s to string, wrong type",
-          ga->name);
-        break;
+        switch(grib_accessor_get_native_type(ga))
+        {
+        case GRIB_TYPE_STRING:
+            if (grib_runtimetype_get_char(value,&strvalue,&strvalue_size) == GRIB_RUNTIMETYPE_SUCCESS) {
+                grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to string %s",
+                        ga->name, strvalue);
+                len=strlen(strvalue);
+                grib_set_string_internal(h,ga->name,strvalue,&len);
+            } else
+                grib_context_log(h->context,GRIB_LOG_ERROR, "Unable to set %s to string, wrong type",
+                        ga->name);
+            break;
 
-      case GRIB_TYPE_LONG:
-        if (grib_runtimetype_get_long(value,&lval,&len) == GRIB_RUNTIMETYPE_SUCCESS) {
-          grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to long %d", ga->name, lval);
-          grib_set_long_internal(h,ga->name,*lval);
-        } else
-          grib_context_log(h->context,GRIB_LOG_ERROR, "Unable to set %s to long, wrong type",
-          ga->name);
-        break;
+        case GRIB_TYPE_LONG:
+            if (grib_runtimetype_get_long(value,&lval,&len) == GRIB_RUNTIMETYPE_SUCCESS) {
+                grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to long %d", ga->name, lval);
+                grib_set_long_internal(h,ga->name,*lval);
+            } else
+                grib_context_log(h->context,GRIB_LOG_ERROR, "Unable to set %s to long, wrong type",
+                        ga->name);
+            break;
 
-      case GRIB_TYPE_DOUBLE:
-        if (grib_runtimetype_get_double(value,&dval,&len) == GRIB_RUNTIMETYPE_SUCCESS) {
-          grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to long %d", ga->name, dval);
-          grib_set_double_internal(h,ga->name,*dval);
-        } else
-          grib_context_log(h->context,GRIB_LOG_ERROR, "Unable to set %s to double, wrong type",
-          ga->name);
-        break;
+        case GRIB_TYPE_DOUBLE:
+            if (grib_runtimetype_get_double(value,&dval,&len) == GRIB_RUNTIMETYPE_SUCCESS) {
+                grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to long %d", ga->name, dval);
+                grib_set_double_internal(h,ga->name,*dval);
+            } else
+                grib_context_log(h->context,GRIB_LOG_ERROR, "Unable to set %s to double, wrong type",
+                        ga->name);
+            break;
 
-      case GRIB_TYPE_BYTES:
-        if (grib_runtimetype_get_char(value,&strvalue,&len) == GRIB_RUNTIMETYPE_SUCCESS) {
-          grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to string %s",
-          ga->name, strvalue);
-          grib_set_bytes_internal(h,ga->name,(unsigned char*)strvalue,&len);
-        } else
-          grib_context_log(h->context,GRIB_LOG_ERROR, "Unable to set %s to string, wrong type",
-          ga->name);
-        break;
+        case GRIB_TYPE_BYTES:
+            if (grib_runtimetype_get_char(value,&strvalue,&len) == GRIB_RUNTIMETYPE_SUCCESS) {
+                grib_context_log(h->context,GRIB_LOG_DEBUG, "Setting %s to string %s",
+                        ga->name, strvalue);
+                grib_set_bytes_internal(h,ga->name,(unsigned char*)strvalue,&len);
+            } else
+                grib_context_log(h->context,GRIB_LOG_ERROR, "Unable to set %s to string, wrong type",
+                        ga->name);
+            break;
 
-      case GRIB_TYPE_LABEL:
-        break;
+        case GRIB_TYPE_LABEL:
+            break;
 
-      default:
-        grib_context_log(h->context,GRIB_LOG_ERROR, "Setting %s, cannot establish type %d [%s]"
-            , ga->name,grib_accessor_get_native_type(ga),ga->creator->cclass->name);
-        break;
-    }
+        default:
+            grib_context_log(h->context,GRIB_LOG_ERROR, "Setting %s, cannot establish type %d [%s]"
+                    , ga->name,grib_accessor_get_native_type(ga),ga->creator->cclass->name);
+            break;
+        }
 #endif
 
-  }
-
-  return retval;
+    }
 
+    return retval;
 }
diff --git a/src/grib_loader_from_file.c b/src/grib_loader_from_file.c
index 8ee5bf0..ae66cd9 100644
--- a/src/grib_loader_from_file.c
+++ b/src/grib_loader_from_file.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -50,7 +50,7 @@ int grib_lookup_long_from_file(grib_context* gc,grib_loader* loader,const char*
 
 int grib_init_accessor_from_file(grib_loader* loader,grib_accessor* ga,grib_arguments* default_value)
 {
-	grib_handle* h = ga->parent->h;
+	grib_handle* h = grib_handle_of_accessor(ga);
 
 	FILE       *in = (FILE*)loader->data;
 	int retval =GRIB_SUCCESS;
diff --git a/src/grib_loader_from_handle.c b/src/grib_loader_from_handle.c
index 755b858..811e250 100644
--- a/src/grib_loader_from_handle.c
+++ b/src/grib_loader_from_handle.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -12,264 +12,264 @@
 
 static int copy_values(grib_handle* h,grib_accessor* ga)
 {
-	int i,j,k;
-	/* printf("copy_values stack is %ld\n",(long)h->values_stack);*/
-	for(j = 0; j < h->values_stack; j++)
-	{
-		for(i = 0; i < h->values_count[j]; i++)
-		{
-			for(k = 0; (k < MAX_ACCESSOR_NAMES) && (ga->all_names[k] != NULL); k++)
-			{
-				/*printf("copy_values: %s %s\n",h->values[j][i].name,ga->all_names[k]);*/
-				if(strcmp(h->values[j][i].name,ga->all_names[k]) == 0)
-				{
-					size_t len = 1;
-					/*printf("SET VALUES %s\n",h->values[j][i].name);*/
-					switch(h->values[j][i].type)
-					{
-					case GRIB_TYPE_LONG:
-						return grib_pack_long(ga,&h->values[j][i].long_value,&len);
-						break;
-
-					case GRIB_TYPE_DOUBLE:
-						return grib_pack_double(ga,&h->values[j][i].double_value,&len);
-						break;
-
-					case GRIB_TYPE_STRING:
-						len = strlen(h->values[j][i].string_value);
-						return grib_pack_string(ga,h->values[j][i].string_value,&len);
-						break;
-					}
-				}
-			}
-		}
-	}
-
-	return GRIB_NOT_FOUND;
+    int i,j,k;
+    /* printf("copy_values stack is %ld\n",(long)h->values_stack);*/
+    for(j = 0; j < h->values_stack; j++)
+    {
+        for(i = 0; i < h->values_count[j]; i++)
+        {
+            for(k = 0; (k < MAX_ACCESSOR_NAMES) && (ga->all_names[k] != NULL); k++)
+            {
+                /*printf("copy_values: %s %s\n",h->values[j][i].name,ga->all_names[k]);*/
+                if(strcmp(h->values[j][i].name,ga->all_names[k]) == 0)
+                {
+                    size_t len = 1;
+                    /*printf("SET VALUES %s\n",h->values[j][i].name);*/
+                    switch(h->values[j][i].type)
+                    {
+                    case GRIB_TYPE_LONG:
+                        return grib_pack_long(ga,&h->values[j][i].long_value,&len);
+                        break;
+
+                    case GRIB_TYPE_DOUBLE:
+                        return grib_pack_double(ga,&h->values[j][i].double_value,&len);
+                        break;
+
+                    case GRIB_TYPE_STRING:
+                        len = strlen(h->values[j][i].string_value);
+                        return grib_pack_string(ga,h->values[j][i].string_value,&len);
+                        break;
+                    }
+                }
+            }
+        }
+    }
+
+    return GRIB_NOT_FOUND;
 }
 
-
 int grib_lookup_long_from_handle(grib_context* gc,grib_loader* loader,const char* name,long* value)
 {
-	grib_handle* h = (grib_handle*)loader->data;
-	grib_accessor *b = grib_find_accessor(h,name);
-	size_t len = 1;
-	if(b) return grib_unpack_long(b,value,&len);
+    grib_handle* h = (grib_handle*)loader->data;
+    grib_accessor *b = grib_find_accessor(h,name);
+    size_t len = 1;
+    if(b) return grib_unpack_long(b,value,&len);
 
-	/* TODO: fix me. For now, we don't fail on a lookup. */
+    /* TODO: fix me. For now, we don't fail on a lookup. */
 #if 1
-	*value = -1;
-	return GRIB_SUCCESS;
+    *value = -1;
+    return GRIB_SUCCESS;
 #else
-	return GRIB_NOT_FOUND;
+    return GRIB_NOT_FOUND;
 #endif
 }
 
 int grib_init_accessor_from_handle(grib_loader* loader,grib_accessor* ga,grib_arguments* default_value)
 {
-	grib_handle* h = (grib_handle*)loader->data;
-	int ret = GRIB_SUCCESS;
-	size_t len = 0;
-	char*   sval = NULL;
-	unsigned char*   uval = NULL;
-	long*   lval = NULL;
-	double* dval = NULL;
-	static int first  = 1;
-	static const char* missing = 0;
-	const char* name = NULL;
-	int k = 0;
-	grib_handle *g;
-	int e, pack_missing = 0;
-	grib_context_log(h->context,GRIB_LOG_DEBUG, "XXXXX Copying  %s",   ga->name);
-
-	if(default_value)
-	{
-		grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying:  setting %s to default value",
-				ga->name);
-		grib_pack_expression(ga,grib_arguments_get_expression(h,default_value,0));
-	}
-
-	if( (ga->flags & GRIB_ACCESSOR_FLAG_NO_COPY)  ||
-		 ((ga->flags & GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC) &&
-					loader->changing_edition )        ||
-		 (ga->flags & GRIB_ACCESSOR_FLAG_FUNCTION) ||
-		 ( (ga->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) &&
-					!(ga->flags & GRIB_ACCESSOR_FLAG_COPY_OK) ) )
-	{
-		grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying %s ignored",   ga->name);
-		return GRIB_SUCCESS;
-	}
+    grib_handle* h = (grib_handle*)loader->data;
+    int ret = GRIB_SUCCESS;
+    size_t len = 0;
+    char*   sval = NULL;
+    unsigned char*   uval = NULL;
+    long*   lval = NULL;
+    double* dval = NULL;
+    static int first  = 1;
+    static const char* missing = 0;
+    const char* name = NULL;
+    int k = 0;
+    grib_handle *g;
+    grib_accessor* ao=NULL;
+    int e, pack_missing = 0;
+    grib_context_log(h->context,GRIB_LOG_DEBUG, "XXXXX Copying  %s",   ga->name);
+
+    if(default_value)
+    {
+        grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying:  setting %s to default value",
+                ga->name);
+        grib_pack_expression(ga,grib_arguments_get_expression(h,default_value,0));
+    }
+
+    if( (ga->flags & GRIB_ACCESSOR_FLAG_NO_COPY)  ||
+            ((ga->flags & GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC) &&
+                    loader->changing_edition )        ||
+                    (ga->flags & GRIB_ACCESSOR_FLAG_FUNCTION) ||
+                    ( (ga->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) &&
+                            !(ga->flags & GRIB_ACCESSOR_FLAG_COPY_OK) ) )
+    {
+        grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying %s ignored",   ga->name);
+        return GRIB_SUCCESS;
+    }
 
 #if 0
-	if(h->values)
-		if(copy_values(h,ga) == GRIB_SUCCESS)
-		{
-			grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying: setting %s to multi-set-value",   ga->name);
-			return GRIB_SUCCESS;
-		}
+    if(h->values)
+        if(copy_values(h,ga) == GRIB_SUCCESS)
+        {
+            grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying: setting %s to multi-set-value",   ga->name);
+            return GRIB_SUCCESS;
+        }
 #endif
 
 #if 0
-	if(h->loader)
-		h->loader->init_accessor(h->loader,ga,default_value);
+    if(h->loader)
+        h->loader->init_accessor(h->loader,ga,default_value);
 #else
-	/* COMEBACK here
+    /* COMEBACK here
      this is needed if we reparse during reparse....
-	 */
-
-	g = h;
-	while(g)
-	{
-		if(g->values) {
-			if(copy_values(g,ga) == GRIB_SUCCESS) {
-				grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying: setting %s to multi-set-value",   ga->name);
-				return GRIB_SUCCESS;
-			}
-		}
-		g = g->main;
-	}
+     */
+
+    g = h;
+    while(g)
+    {
+        if(copy_values(g,ga) == GRIB_SUCCESS) {
+            grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying: setting %s to multi-set-value",   ga->name);
+            return GRIB_SUCCESS;
+        }
+        g = g->main;
+    }
 #endif
 
-	/* Check if the same name exists in the original message ... */
-	k = 0;
-	while( (k < MAX_ACCESSOR_NAMES)            &&
-			((name = ga->all_names[k]) != NULL) &&
-			((ret = grib_get_size(h,name,&len)) != GRIB_SUCCESS)) k++;
-
-	if(ret != GRIB_SUCCESS)
-	{
-		name = ga->name;
-
-		if(first)
-		{
-			missing = getenv("ECCODES_PRINT_MISSING");
-			first = 0;
-		}
-
-		grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying [%s] failed: %s",
-				name,grib_get_error_message(ret));
-
-		if(missing)
-		{
-			fprintf(stdout,"REPARSE: no value for %s",name);
-			if(default_value)
-				fprintf(stdout," (default value)");
-			fprintf(stdout,"\n");
-		}
-
-		return GRIB_SUCCESS;
-	}
-
-	/* we copy also virtual keys*/
-	if(len == 0) {
-		grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying %s failed, length is 0",   name);
-		return GRIB_SUCCESS;
-	}
-
-	if((ga->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) && grib_is_missing(h,name,&e) && e == GRIB_SUCCESS && len == 1)
-	{
-		grib_pack_missing(ga);
-		pack_missing = 1;
-	}
-
-	switch(grib_accessor_get_native_type(ga))
-	{
-	case GRIB_TYPE_STRING:
-
-		/* len = len > 1024 ? len : 1024; */
-		_grib_get_string_length(ga,&len);
-		sval = (char*)grib_context_malloc(h->context,len);
-		ret = grib_get_string_internal(h,name,sval,&len);
-		if(ret == GRIB_SUCCESS)
-		{
-			grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying string %s to %s",  sval, name);
-			ret = grib_pack_string(ga,sval,&len);
-		}
-		grib_context_free(h->context,sval);
-
-		break;
-
-	case GRIB_TYPE_LONG:
-		lval = (long*)grib_context_malloc(h->context,len*sizeof(long));
-		ret = grib_get_long_array_internal(h,name,lval,&len);
-		if(ret == GRIB_SUCCESS)
-		{
-			grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying %d long(s) %d to %s",  len, lval[0], name);
-			if(ga->same)
-			{
-				ret = grib_set_long_array(ga->parent->h,ga->name,lval,len);
-
-				/* Allow for lists to be resized */
-				if((ret == GRIB_WRONG_ARRAY_SIZE || ret == GRIB_ARRAY_TOO_SMALL) && loader->list_is_resized)
-					ret = GRIB_SUCCESS;
-			}
-			else
-			{
-			    /* See GRIB-492. This is NOT an ideal solution! */
-			    if (*lval == GRIB_MISSING_LONG || pack_missing)
-			    {
-			        ;        /* No checks needed */
-			    }
-			    else
-			    {
-			        /* If we have just one key of type long which has one octet, then do not exceed maximum value */
-			        const long num_octets = ga->length;
-			        if (len == 1 && num_octets == 1 && *lval > 255)
-			        {
-			            *lval = 0; /* Reset to a reasonable value */
-			        }
-			    }
-				ret = grib_pack_long(ga,lval,&len);
-			}
-		}
-
-		grib_context_free(h->context,lval);
-
-		break;
-
-	case GRIB_TYPE_DOUBLE:
-		dval = (double*)grib_context_malloc(h->context,len*sizeof(double));
-		ret = grib_get_double_array_internal(h,name,dval,&len);
-		if(ret == GRIB_SUCCESS)
-		{
-			grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying %d double(s) %g to %s",  len, dval[0], name);
-			if(ga->same)
-			{
-				ret = grib_set_double_array(ga->parent->h,ga->name,dval,len);
-
-				/* Allow for lists to be resized */
-				if((ret == GRIB_WRONG_ARRAY_SIZE || ret == GRIB_ARRAY_TOO_SMALL) && loader->list_is_resized)
-					ret = GRIB_SUCCESS;
-			}
-			else ret = grib_pack_double(ga,dval,&len);
-		}
-
-		grib_context_free(h->context,dval);
-		break;
-
-	case GRIB_TYPE_BYTES:
-
-		uval = (unsigned char*)grib_context_malloc(h->context,len*sizeof(char));
-		ret = grib_get_bytes_internal(h,name,uval,&len);
-		if(ret == GRIB_SUCCESS)
-		{
-			grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying %d byte(s) to %s",  len, name);
-			ret = grib_pack_bytes(ga,uval,&len);
-		}
-
-		grib_context_free(h->context,uval);
-
-		break;
-
-	case GRIB_TYPE_LABEL:
-		break;
-
-	default:
-		grib_context_log(h->context,GRIB_LOG_ERROR, "Copying %s, cannot establish type %d [%s]"
-				, name,grib_accessor_get_native_type(ga),ga->creator->cclass->name);
-		break;
-	}
-
-	return ret;
-
+    /* Check if the same name exists in the original message ... */
+    k = 0;
+    while( (k < MAX_ACCESSOR_NAMES)            &&
+            ((name = ga->all_names[k]) != NULL) &&
+            ((ret = grib_get_size(h,name,&len)) != GRIB_SUCCESS)) k++;
+
+    if(ret != GRIB_SUCCESS)
+    {
+        name = ga->name;
+
+        if(first)
+        {
+            missing = codes_getenv("ECCODES_PRINT_MISSING");
+            first = 0;
+        }
+
+        grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying [%s] failed: %s",
+                name,grib_get_error_message(ret));
+
+        if(missing)
+        {
+            fprintf(stdout,"REPARSE: no value for %s",name);
+            if(default_value)
+                fprintf(stdout," (default value)");
+            fprintf(stdout,"\n");
+        }
+
+        return GRIB_SUCCESS;
+    }
+
+    /* we copy also virtual keys*/
+    if(len == 0) {
+        grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying %s failed, length is 0",   name);
+        return GRIB_SUCCESS;
+    }
+
+    if((ga->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) && grib_is_missing(h,name,&e) && e == GRIB_SUCCESS && len == 1)
+    {
+        grib_pack_missing(ga);
+        pack_missing = 1;
+    }
+
+    switch(grib_accessor_get_native_type(ga))
+    {
+    case GRIB_TYPE_STRING:
+
+        /* len = len > 1024 ? len : 1024; */
+        _grib_get_string_length(ga,&len);
+        sval = (char*)grib_context_malloc(h->context,len);
+        ret = grib_get_string_internal(h,name,sval,&len);
+        if(ret == GRIB_SUCCESS)
+        {
+            grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying string %s to %s",  sval, name);
+            ret = grib_pack_string(ga,sval,&len);
+        }
+        grib_context_free(h->context,sval);
+
+        break;
+
+    case GRIB_TYPE_LONG:
+        lval = (long*)grib_context_malloc(h->context,len*sizeof(long));
+        ret = grib_get_long_array_internal(h,name,lval,&len);
+        if(ret == GRIB_SUCCESS)
+        {
+            grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying %d long(s) %d to %s",  len, lval[0], name);
+            if(ga->same)
+            {
+                ret = grib_set_long_array(grib_handle_of_accessor(ga),ga->name,lval,len);
+
+                /* Allow for lists to be resized */
+                if((ret == GRIB_WRONG_ARRAY_SIZE || ret == GRIB_ARRAY_TOO_SMALL) && loader->list_is_resized)
+                    ret = GRIB_SUCCESS;
+            }
+            else
+            {
+                /* See GRIB-492. This is NOT an ideal solution! */
+                if (*lval == GRIB_MISSING_LONG || pack_missing)
+                {
+                    ;        /* No checks needed */
+                }
+                else
+                {
+                    /* If we have just one key of type long which has one octet, then do not exceed maximum value */
+                    const long num_octets = ga->length;
+                    if (len == 1 && num_octets == 1 && *lval > 255)
+                    {
+                        *lval = 0; /* Reset to a reasonable value */
+                    }
+                }
+                ret = grib_pack_long(ga,lval,&len);
+            }
+        }
+
+        grib_context_free(h->context,lval);
+
+        break;
+
+    case GRIB_TYPE_DOUBLE:
+        dval = (double*)grib_context_malloc(h->context,len*sizeof(double));
+        ret = grib_get_double_array(h,name,dval,&len); /* GRIB-898 */
+        if(ret == GRIB_SUCCESS)
+        {
+            grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying %d double(s) %g to %s",  len, dval[0], name);
+            if(ga->same)
+            {
+                ret = grib_set_double_array(grib_handle_of_accessor(ga),ga->name,dval,len);
+
+                /* Allow for lists to be resized */
+                if((ret == GRIB_WRONG_ARRAY_SIZE || ret == GRIB_ARRAY_TOO_SMALL) && loader->list_is_resized)
+                    ret = GRIB_SUCCESS;
+            }
+            else ret = grib_pack_double(ga,dval,&len);
+        }
+
+        grib_context_free(h->context,dval);
+        break;
+
+    case GRIB_TYPE_BYTES:
+
+        ao=grib_find_accessor(h,name);
+        len=grib_byte_count(ao);
+        uval = (unsigned char*)grib_context_malloc(h->context,len*sizeof(char));
+        ret=grib_unpack_bytes(ao,uval,&len);
+        /* ret = grib_get_bytes_internal(h,name,uval,&len); */
+        if(ret == GRIB_SUCCESS)
+        {
+            grib_context_log(h->context,GRIB_LOG_DEBUG, "Copying %d byte(s) to %s",  len, name);
+            ret = grib_pack_bytes(ga,uval,&len);
+        }
+
+        grib_context_free(h->context,uval);
+
+        break;
+
+    case GRIB_TYPE_LABEL:
+        break;
+
+    default:
+        grib_context_log(h->context,GRIB_LOG_ERROR, "Copying %s, cannot establish type %d [%s]"
+                , name,grib_accessor_get_native_type(ga),ga->creator->cclass->name);
+        break;
+    }
+
+    return ret;
 }
diff --git a/src/grib_memory.c b/src/grib_memory.c
old mode 100755
new mode 100644
index 19da30f..6b051eb
--- a/src/grib_memory.c
+++ b/src/grib_memory.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -27,6 +27,21 @@ static void init() {
   pthread_mutexattr_destroy(&attr);
 
 }
+#elif GRIB_OMP_THREADS
+static int once  = 0;
+static omp_nest_lock_t mutex;
+
+static void init()
+{
+    GRIB_OMP_CRITICAL(lock_grib_memory_c)
+    {
+        if (once == 0)
+        {
+            omp_init_nest_lock(&mutex);
+            once = 1;
+        }
+    }
+}
 #endif
 
 union align {
@@ -91,7 +106,7 @@ static void *fast_new(size_t s,mempool *pool)
   char *p;
   memblk *m;
 
-  GRIB_PTHREAD_ONCE(&once,&init)
+  GRIB_MUTEX_INIT_ONCE(&once,&init)
   GRIB_MUTEX_LOCK(&mutex)
 
   m = (memblk*)pool->priv;
@@ -153,7 +168,7 @@ static void fast_delete(void *p,mempool *pool)
   memblk *m ;
   memblk *n = NULL;
 
-  GRIB_PTHREAD_ONCE(&once,&init)
+  GRIB_MUTEX_INIT_ONCE(&once,&init)
   GRIB_MUTEX_LOCK(&mutex)
 
   m = (memblk*)pool->priv;
@@ -265,7 +280,7 @@ void *grib_buffer_malloc(const grib_context* c,size_t s)
 {
   memblk *r;
 
-  GRIB_PTHREAD_ONCE(&once,&init)
+  GRIB_MUTEX_INIT_ONCE(&once,&init)
   GRIB_MUTEX_LOCK(&mutex)
 
   s = ((s+WORD-1)/WORD)*WORD;
@@ -304,7 +319,7 @@ void grib_buffer_free(const grib_context* c,void *p)
   memblk *r;
   memblk *s;
 
-  GRIB_PTHREAD_ONCE(&once,&init)
+  GRIB_MUTEX_INIT_ONCE(&once,&init)
   GRIB_MUTEX_LOCK(&mutex)
 
   r = (memblk*)(((char*)p) - HEADER_SIZE);
diff --git a/src/grib_nearest.c b/src/grib_nearest.c
index f2d6a4a..ebb39f6 100644
--- a/src/grib_nearest.c
+++ b/src/grib_nearest.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -23,7 +23,9 @@ int grib_nearest_find(
         double* outlats,double* outlons,
         double* values, double* distances, int* indexes, size_t *len)
 {
-    grib_nearest_class *c = nearest->cclass;
+    grib_nearest_class *c = NULL;
+    Assert(nearest);
+    c = nearest->cclass;
     Assert( flags <= (GRIB_NEAREST_SAME_GRID|GRIB_NEAREST_SAME_DATA|GRIB_NEAREST_SAME_POINT) );
 
     while(c)
@@ -73,7 +75,9 @@ int grib_nearest_init(grib_nearest* i, grib_handle *h, grib_arguments* args)
 
 int grib_nearest_delete(grib_nearest *i)
 {
-    grib_nearest_class *c = i->cclass;
+    grib_nearest_class *c = NULL;
+    Assert(i);
+    c = i->cclass;
     while(c)
     {
         grib_nearest_class *s = c->super ? *(c->super) : NULL;
diff --git a/src/grib_nearest_class.c b/src/grib_nearest_class.c
index b10bd5c..85e8a89 100644
--- a/src/grib_nearest_class.c
+++ b/src/grib_nearest_class.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_nearest_class_gen.c b/src/grib_nearest_class_gen.c
index 588e8d9..538bf17 100644
--- a/src/grib_nearest_class_gen.c
+++ b/src/grib_nearest_class_gen.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -72,31 +72,31 @@ static void init_class(grib_nearest_class* c)
 
 static int init(grib_nearest* nearest,grib_handle* h,grib_arguments* args)
 {
-  grib_nearest_gen* self = (grib_nearest_gen*) nearest;
-  int ret = GRIB_SUCCESS;
+    grib_nearest_gen* self = (grib_nearest_gen*) nearest;
+    int ret = GRIB_SUCCESS;
 
-  self->cargs = 1;
+    self->cargs = 1;
 
-  self->values_key  = grib_arguments_get_name(h,args,self->cargs++);
-  self->radius  = grib_arguments_get_name(h,args,self->cargs++);
-  nearest->values=NULL;
+    self->values_key  = grib_arguments_get_name(h,args,self->cargs++);
+    self->radius  = grib_arguments_get_name(h,args,self->cargs++);
+    nearest->values=NULL;
 
-  nearest->context=h->context;
+    nearest->context=h->context;
 
-  return ret;
+    return ret;
 }
 
-static int destroy(grib_nearest* nearest) {
-  if (nearest->values) grib_context_free(nearest->context,nearest->values);
-  grib_context_free(nearest->context,nearest);
-  return GRIB_SUCCESS;
+static int destroy(grib_nearest* nearest)
+{
+    if (nearest->values) grib_context_free(nearest->context,nearest->values);
+    grib_context_free(nearest->context,nearest);
+    return GRIB_SUCCESS;
 }
 
 static int find(grib_nearest* nearest, grib_handle* h,
-                double inlat, double inlon,unsigned long flags,
-                double* outlats,double* outlons, double *values,
-                double *distances,int *indexes, size_t *len) {
-
-  return GRIB_NOT_IMPLEMENTED;
+        double inlat, double inlon,unsigned long flags,
+        double* outlats,double* outlons, double *values,
+        double *distances,int *indexes, size_t *len)
+{
+    return GRIB_NOT_IMPLEMENTED;
 }
-
diff --git a/src/grib_nearest_class_lambert_conformal.c b/src/grib_nearest_class_lambert_conformal.c
index 750b03a..8dc2d4b 100644
--- a/src/grib_nearest_class_lambert_conformal.c
+++ b/src/grib_nearest_class_lambert_conformal.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -178,14 +178,16 @@ static int find(grib_nearest* nearest, grib_handle* h,
         neighbours[i].m_index=0;
     }
 
-    if (!nearest->h || (flags & GRIB_NEAREST_SAME_GRID)==0) {
+    /* GRIB_NEAREST_SAME_GRID not yet implemented */
+    {
         double the_value = 0;
         double min_dist = 1e10;
         size_t the_index = 0;
         int ilat=0, ilon=0;
         int idx_upper=0, idx_lower=0;
         double lat1=0, lat2=0; /* inlat will be between these */
-        double dist=0, lat_delta=0.1;
+        double dist=0;
+        const double LAT_DELTA = 10.0; /* in degrees */
 
         if (grib_is_missing(h,self->Ni,&ret)) {
             grib_context_log(h->context, GRIB_LOG_DEBUG,"Key '%s' is missing", self->Ni);
@@ -219,7 +221,7 @@ static int find(grib_nearest* nearest, grib_handle* h,
             self->lats[ilat++]=lat;
             self->lons[ilon++]=lon;
         }
-        
+
         /* See between which 2 latitudes our point lies */
         qsort(self->lats, nvalues, sizeof(double), &compare_doubles_ascending);
         grib_binary_search(self->lats, self->lats_count-1, inlat, &idx_upper, &idx_lower);
@@ -233,7 +235,7 @@ static int find(grib_nearest* nearest, grib_handle* h,
         i = 0;
         while(grib_iterator_next(iter,&lat,&lon,&the_value))
         {
-            if (lat > lat2+lat_delta || lat < lat1-lat_delta) {
+            if (lat > lat2+LAT_DELTA || lat < lat1-LAT_DELTA) {
                 /* Ignore latitudes too far from our point */
             }
             else {
@@ -253,7 +255,7 @@ static int find(grib_nearest* nearest, grib_handle* h,
         /* Sort the candidate neighbours in ascending order of distance */
         /* The first 4 entries will now be the closest 4 neighbours */
         qsort(neighbours, nvalues, sizeof(PointStore), &compare_points);
-        
+
         grib_iterator_delete(iter);
     }
     nearest->h=h;
@@ -265,17 +267,14 @@ static int find(grib_nearest* nearest, grib_handle* h,
     }
 #endif
 
-    if (!self->distances || (flags & GRIB_NEAREST_SAME_POINT)==0
-                         || (flags & GRIB_NEAREST_SAME_GRID)==0) {
-
-        if (!self->distances) {
-            self->distances=(double*)grib_context_malloc( nearest->context,4*sizeof(double));
-        }
-        self->distances[0] = neighbours[0].m_dist;
-        self->distances[1] = neighbours[1].m_dist;
-        self->distances[2] = neighbours[2].m_dist;
-        self->distances[3] = neighbours[3].m_dist;
+    /* GRIB_NEAREST_SAME_XXX not yet implemented */
+    if (!self->distances) {
+        self->distances=(double*)grib_context_malloc( nearest->context,4*sizeof(double));
     }
+    self->distances[0] = neighbours[0].m_dist;
+    self->distances[1] = neighbours[1].m_dist;
+    self->distances[2] = neighbours[2].m_dist;
+    self->distances[3] = neighbours[3].m_dist;
 
     for(i=0; i <4; ++i)
     {
diff --git a/src/grib_nearest_class_latlon_reduced.c b/src/grib_nearest_class_latlon_reduced.c
index 5caa6f0..f19fe32 100644
--- a/src/grib_nearest_class_latlon_reduced.c
+++ b/src/grib_nearest_class_latlon_reduced.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_nearest_class_reduced.c b/src/grib_nearest_class_reduced.c
index 0a8fe59..94b0093 100644
--- a/src/grib_nearest_class_reduced.c
+++ b/src/grib_nearest_class_reduced.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -25,6 +25,9 @@
    MEMBERS    = int* j
    MEMBERS    = const char* Nj
    MEMBERS    = const char* pl
+   MEMBERS    = long global
+   MEMBERS    = double lon_first
+   MEMBERS    = double lon_last
    END_CLASS_DEF
 
  */
@@ -61,6 +64,9 @@ typedef struct grib_nearest_reduced{
 	int* j;
 	const char* Nj;
 	const char* pl;
+	long global;
+	double lon_first;
+	double lon_last;
 } grib_nearest_reduced;
 
 extern grib_nearest_class* grib_nearest_class_gen;
@@ -86,420 +92,411 @@ static void init_class(grib_nearest_class* c)
 
 static int init(grib_nearest* nearest,grib_handle* h,grib_arguments* args)
 {
-  grib_nearest_reduced* self = (grib_nearest_reduced*) nearest;
-  self->Nj  = grib_arguments_get_name(h,args,self->cargs++);
-  self->pl  = grib_arguments_get_name(h,args,self->cargs++);
-  self->j=(int*)grib_context_malloc(h->context,2*sizeof(int));
-  if (!self->j) return GRIB_OUT_OF_MEMORY;
-  self->k=(int*)grib_context_malloc( nearest->context,4*sizeof(int));
-  if (!self->k) return GRIB_OUT_OF_MEMORY;
-
-  return 0;
+    grib_nearest_reduced* self = (grib_nearest_reduced*) nearest;
+    self->Nj  = grib_arguments_get_name(h,args,self->cargs++);
+    self->pl  = grib_arguments_get_name(h,args,self->cargs++);
+    self->j=(int*)grib_context_malloc(h->context,2*sizeof(int));
+    if (!self->j) return GRIB_OUT_OF_MEMORY;
+    self->k=(int*)grib_context_malloc( nearest->context,4*sizeof(int));
+    if (!self->k) return GRIB_OUT_OF_MEMORY;
+    grib_get_long(h,"global",&self->global);
+    if (!self->global)
+    {
+        int ret;
+        /*TODO longitudeOfFirstGridPointInDegrees from the def file*/
+        if ((ret=grib_get_double(h,"longitudeOfFirstGridPointInDegrees",&self->lon_first))!=GRIB_SUCCESS) {
+            grib_context_log(h->context,GRIB_LOG_ERROR,
+                    "grib_nearest_reduced.find(): unable to get longitudeOfFirstGridPointInDegrees %s\n",
+                    grib_get_error_message(ret));
+            return ret;
+        }
+        /*TODO longitudeOfLastGridPointInDegrees from the def file*/
+        if ((ret=grib_get_double(h,"longitudeOfLastGridPointInDegrees",&self->lon_last))!=GRIB_SUCCESS) {
+            grib_context_log(h->context,GRIB_LOG_ERROR,
+                    "grib_nearest_reduced.find(): unable to get longitudeOfLastGridPointInDegrees %s\n",
+                    grib_get_error_message(ret));
+            return ret;
+        }
+    }
 
+    return 0;
 }
 
 #if 1
 static int find(grib_nearest* nearest, grib_handle* h,
-                double inlat, double inlon,unsigned long flags,
-                double* outlats,double* outlons, double *values,
-                double *distances,int *indexes, size_t *len) {
-  grib_nearest_reduced* self = (grib_nearest_reduced*) nearest;
-  int ret=0,kk=0,ii=0,jj=0;
-  long* pla=NULL;
-  long* pl=NULL;
-  size_t nvalues=0;
-  grib_iterator* iter=NULL;
-  double lat=0,lon=0;
-  long iradius;
-  double radius;
-  int ilat=0,ilon=0;
-
-
-  if( (ret =  grib_get_size(h,self->values_key,&nvalues))!= GRIB_SUCCESS)
-     return ret;
-  nearest->values_count = nvalues;
-
-  if (grib_is_missing(h,self->radius,&ret)) {
-    grib_context_log(h->context, GRIB_LOG_DEBUG,"Key '%s' is missing", self->radius);
-    return ret ? ret : GRIB_GEOCALCULUS_PROBLEM;
-  }
-
-  if( (ret =  grib_get_long(h,self->radius,&iradius))!= GRIB_SUCCESS)
-    return ret;
-  radius=((double)iradius)/1000.0;
-
-  if (!nearest->h || (flags & GRIB_NEAREST_SAME_GRID)==0) {
-    double dummy=0;
-    double olat=1.e10;
-    long n=0;
-
-	ilat=0,ilon=0;
-    if (grib_is_missing(h,self->Nj,&ret)) {
-      grib_context_log(h->context, GRIB_LOG_DEBUG,"Key '%s' is missing", self->Nj);
-      return ret ? ret : GRIB_GEOCALCULUS_PROBLEM;
-    }
-
-    if( (ret =  grib_get_long(h,self->Nj,&n))!= GRIB_SUCCESS)
-     return ret;
-    self->lats_count=n;
-
-    if (self->lats) grib_context_free(nearest->context,self->lats);
-    self->lats=(double*)grib_context_malloc( nearest->context,
-                               self->lats_count* sizeof(double));
-    if (!self->lats) return GRIB_OUT_OF_MEMORY;
+        double inlat, double inlon,unsigned long flags,
+        double* outlats,double* outlons, double *values,
+        double *distances,int *indexes, size_t *len) {
+    grib_nearest_reduced* self = (grib_nearest_reduced*) nearest;
+    int ret=0,kk=0,ii=0,jj=0;
+    long* pla=NULL;
+    long* pl=NULL;
+    size_t nvalues=0;
+    grib_iterator* iter=NULL;
+    double lat=0,lon=0;
+    long iradius;
+    double radius;
+    int ilat=0,ilon=0;
 
-    if (self->lons) grib_context_free(nearest->context,self->lons);
-    self->lons=(double*)grib_context_malloc( nearest->context,
-                               nearest->values_count*sizeof(double));
-    if (!self->lons) return GRIB_OUT_OF_MEMORY;
-
-    iter=grib_iterator_new(h,0,&ret);
-    while(grib_iterator_next(iter,&lat,&lon,&dummy)) {
-		if (olat!=lat) {
-			self->lats[ilat++]=lat;
-			olat=lat;
-		}
-      self->lons[ilon++]=lon;
-    }
-	self->lats_count=ilat;
-	grib_iterator_delete(iter);
-	
-  }
-  nearest->h=h;
-
-  if (!self->distances || (flags & GRIB_NEAREST_SAME_POINT)==0
-                       || (flags & GRIB_NEAREST_SAME_GRID)==0) {
-    double* lons=NULL;
-    int nlon=0;
-    size_t plsize=0;
-    long nplm1=0;
-    int nearest_lons_found=0;
-	long global=0;
-	double lon_first,lon_last;
-	long row_count,ilon_first,ilon_last;
-
-	/*TODO global from the def file*/
-	global=1;
-	grib_get_long(h,"global",&global);
-
-	if (!global) {
-		/*TODO longitudeOfFirstGridPointInDegrees from the def file*/
-		if ((ret=grib_get_double(h,"longitudeOfFirstGridPointInDegrees",&lon_first))!=GRIB_SUCCESS) {
-			grib_context_log(h->context,GRIB_LOG_ERROR,
-				"grib_nearest_reduced.find(): unable to get longitudeOfFirstGridPointInDegrees %s\n",
-				grib_get_error_message(ret));
-			return ret;
-		}
-		/*TODO longitudeOfLastGridPointInDegrees from the def file*/
-		if ((ret=grib_get_double(h,"longitudeOfLastGridPointInDegrees",&lon_last))!=GRIB_SUCCESS) {
-			grib_context_log(h->context,GRIB_LOG_ERROR,
-				"grib_nearest_reduced.find(): unable to get longitudeOfLastGridPointInDegrees %s\n",
-				grib_get_error_message(ret));
-			return ret;
-		}
-		/* if (lon_last<0) lon_last+=360; */
-		/* if (lon_first<0) lon_first+=360; */
-	} else {
-	  while (inlon<0) inlon+=360;
-	  while (inlon>360) inlon-=360;
-	}
-
-	ilat=self->lats_count;
-    if (self->lats[ilat-1] > self->lats[0]) {
-       if (inlat < self->lats[0] || inlat > self->lats[ilat-1])
-		   return GRIB_OUT_OF_AREA;
-    } else {
-      if (inlat > self->lats[0] || inlat < self->lats[ilat-1])
-         return GRIB_OUT_OF_AREA;
-    }
+    if( (ret =  grib_get_size(h,self->values_key,&nvalues))!= GRIB_SUCCESS)
+        return ret;
+    nearest->values_count = nvalues;
 
-    if (!self->distances)
-      self->distances=(double*)grib_context_malloc( nearest->context,4*sizeof(double));
-    if (!self->distances) return GRIB_OUT_OF_MEMORY;
-
-    grib_binary_search(self->lats,ilat-1,inlat,
-                                &(self->j[0]),&(self->j[1]));
-
-    plsize=self->lats_count;
-	if( (ret=grib_get_size(h,self->pl,&plsize))!= GRIB_SUCCESS)
-	       return ret;
-    pla=(long*)grib_context_malloc(h->context,plsize*sizeof(long));
-    if (!pla) return GRIB_OUT_OF_MEMORY;
-    if( (ret=grib_get_long_array(h,self->pl,pla,&plsize))!= GRIB_SUCCESS)
-       return ret;
-
-	pl=pla;
-	while ((*pl)==0) {pl++;}
-
-	nlon=0;
-	if (global) {
-		for (jj=0;jj<self->j[0];jj++) nlon+=pl[jj];
-		nplm1=pl[self->j[0]]-1;
-	} else {
-		nlon=0;
-		for (jj=0;jj<self->j[0];jj++) {
-	    	row_count=0;ilon_first=0;ilon_last=0;
-	       	grib_get_reduced_row(pl[jj],lon_first,lon_last,&row_count,&ilon_first,&ilon_last);
-		   	nlon+=row_count;
-		}
-	    row_count=0;ilon_first=0;ilon_last=0;
-	    grib_get_reduced_row(pl[self->j[0]],lon_first,lon_last,&row_count,&ilon_first,&ilon_last);
-		nplm1=row_count-1;
-	}
-    lons=self->lons+nlon;
-
-    nearest_lons_found=0;
-    if (lons[nplm1]>lons[0]) {
-      if (inlon< lons[0] || inlon > lons[nplm1]) {
-        if (lons[nplm1]-lons[0]-360 <=
-             lons[nplm1]-lons[nplm1-1]) {
-           self->k[0]=0;
-           self->k[1]=nplm1;
-           nearest_lons_found=1;
-         } else return GRIB_OUT_OF_AREA;
-       }
-    } else {
-      if (inlon >lons[0] || inlon< lons[nplm1]) {
-         if (lons[0]-lons[nplm1]-360 <=
-             lons[0]-lons[1]) {
-           self->k[0]=0;
-           self->k[1]=nplm1;
-           nearest_lons_found=1;
-         } else return GRIB_OUT_OF_AREA;
-       }
+    if (grib_is_missing(h,self->radius,&ret)) {
+        grib_context_log(h->context, GRIB_LOG_DEBUG,"Key '%s' is missing", self->radius);
+        return ret ? ret : GRIB_GEOCALCULUS_PROBLEM;
     }
 
-    if (!nearest_lons_found) {
-	  if (!global) {
-		  row_count=0;ilon_first=0;ilon_last=0;
-		  grib_get_reduced_row(pl[self->j[0]],lon_first,lon_last,&row_count,&ilon_first,&ilon_last);
-	  } else {
-		  row_count=pl[self->j[0]];
-	  }
-
-      grib_binary_search(lons,row_count-1,inlon,
-                                &(self->k[0]),&(self->k[1]));
-	}
-    self->k[0]+=nlon;
-    self->k[1]+=nlon;
-
-	nlon=0;
-	if (global) {
-		for (jj=0;jj<self->j[1];jj++) nlon+=pl[jj];
-		nplm1=pl[self->j[1]]-1;
-	} else {
-	    long row_count,ilon_first,ilon_last;
-		for (jj=0;jj<self->j[1];jj++) {
-	    	row_count=0;ilon_first=0;ilon_last=0;
-	       	grib_get_reduced_row(pl[jj],lon_first,lon_last,&row_count,&ilon_first,&ilon_last);
-		   	nlon+=row_count;
-		}
-	    row_count=0;ilon_first=0;ilon_last=0;
-	    grib_get_reduced_row(pl[self->j[1]],lon_first,lon_last,&nplm1,&ilon_first,&ilon_last);
-		nplm1--;
-	}
-    lons=self->lons+nlon;
-
-    nearest_lons_found=0;
-    if (lons[nplm1]>lons[0]) {
-      if (inlon<lons[0] || inlon>lons[nplm1]) {
-        if (lons[nplm1]-lons[0]-360 <=
-             lons[nplm1]-lons[nplm1-1]) {
-           self->k[2]=0;
-           self->k[3]=nplm1;
-           nearest_lons_found=1;
-         } else return GRIB_OUT_OF_AREA;
-       }
-    } else {
-      if (inlon>lons[0] || inlon<lons[nplm1]) {
-         if (lons[0]-lons[nplm1]-360 <=
-             lons[0]-lons[1]) {
-           self->k[2]=0;
-           self->k[3]=nplm1;
-           nearest_lons_found=1;
-         } else return GRIB_OUT_OF_AREA;
-       }
-    }
+    if( (ret =  grib_get_long(h,self->radius,&iradius))!= GRIB_SUCCESS)
+        return ret;
+    radius=((double)iradius)/1000.0;
 
-    if (!nearest_lons_found) {
-	  if (!global) {
-		  row_count=0;ilon_first=0;ilon_last=0;
-		  grib_get_reduced_row(pl[self->j[1]],lon_first,lon_last,&row_count,&ilon_first,&ilon_last);
-	  } else {
-		  row_count=pl[self->j[1]];
-	  }
+    if (!nearest->h || (flags & GRIB_NEAREST_SAME_GRID)==0) {
+        double dummy=0;
+        double olat=1.e10;
+        long n=0;
+
+        ilat=0,ilon=0;
+        if (grib_is_missing(h,self->Nj,&ret)) {
+            grib_context_log(h->context, GRIB_LOG_DEBUG,"Key '%s' is missing", self->Nj);
+            return ret ? ret : GRIB_GEOCALCULUS_PROBLEM;
+        }
+
+        if( (ret =  grib_get_long(h,self->Nj,&n))!= GRIB_SUCCESS)
+            return ret;
+        self->lats_count=n;
+
+        if (self->lats) grib_context_free(nearest->context,self->lats);
+        self->lats=(double*)grib_context_malloc( nearest->context,
+                self->lats_count* sizeof(double));
+        if (!self->lats) return GRIB_OUT_OF_MEMORY;
+
+        if (self->lons) grib_context_free(nearest->context,self->lons);
+        self->lons=(double*)grib_context_malloc( nearest->context,
+                nearest->values_count*sizeof(double));
+        if (!self->lons) return GRIB_OUT_OF_MEMORY;
+
+        iter=grib_iterator_new(h,0,&ret);
+        while(grib_iterator_next(iter,&lat,&lon,&dummy)) {
+            if (olat!=lat) {
+                self->lats[ilat++]=lat;
+                olat=lat;
+            }
+            self->lons[ilon++]=lon;
+        }
+        self->lats_count=ilat;
+        grib_iterator_delete(iter);
 
-      grib_binary_search(lons,row_count-1,inlon,
-                                &(self->k[2]),&(self->k[3]));
-	}
+    }
+    nearest->h=h;
 
-    self->k[2]+=nlon;
-    self->k[3]+=nlon;
+    if (!self->distances || (flags & GRIB_NEAREST_SAME_POINT)==0
+            || (flags & GRIB_NEAREST_SAME_GRID)==0) {
+        double* lons=NULL;
+        int nlon=0;
+        size_t plsize=0;
+        long nplm1=0;
+        int nearest_lons_found=0;
+        long row_count,ilon_first,ilon_last;
+
+        if (self->global) {
+            while (inlon<0) inlon+=360;
+            while (inlon>360) inlon-=360;
+        }
+
+        ilat=self->lats_count;
+        if (self->lats[ilat-1] > self->lats[0]) {
+            if (inlat < self->lats[0] || inlat > self->lats[ilat-1])
+                return GRIB_OUT_OF_AREA;
+        } else {
+            if (inlat > self->lats[0] || inlat < self->lats[ilat-1])
+                return GRIB_OUT_OF_AREA;
+        }
+
+        if (!self->distances)
+            self->distances=(double*)grib_context_malloc( nearest->context,4*sizeof(double));
+        if (!self->distances) return GRIB_OUT_OF_MEMORY;
+
+        grib_binary_search(self->lats,ilat-1,inlat,
+                &(self->j[0]),&(self->j[1]));
+
+        plsize=self->lats_count;
+        if( (ret=grib_get_size(h,self->pl,&plsize))!= GRIB_SUCCESS)
+            return ret;
+        pla=(long*)grib_context_malloc(h->context,plsize*sizeof(long));
+        if (!pla) return GRIB_OUT_OF_MEMORY;
+        if( (ret=grib_get_long_array(h,self->pl,pla,&plsize))!= GRIB_SUCCESS)
+            return ret;
+
+        pl=pla;
+        while ((*pl)==0) {pl++;}
+
+        nlon=0;
+        if (self->global) {
+            for (jj=0;jj<self->j[0];jj++) nlon+=pl[jj];
+            nplm1=pl[self->j[0]]-1;
+        } else {
+            nlon=0;
+            for (jj=0;jj<self->j[0];jj++) {
+                row_count=0;ilon_first=0;ilon_last=0;
+                grib_get_reduced_row(pl[jj],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last);
+                nlon+=row_count;
+            }
+            row_count=0;ilon_first=0;ilon_last=0;
+            grib_get_reduced_row(pl[self->j[0]],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last);
+            nplm1=row_count-1;
+        }
+        lons=self->lons+nlon;
+
+        nearest_lons_found=0;
+        if (lons[nplm1]>lons[0]) {
+            if (inlon< lons[0] || inlon > lons[nplm1]) {
+                if (lons[nplm1]-lons[0]-360 <=
+                        lons[nplm1]-lons[nplm1-1]) {
+                    self->k[0]=0;
+                    self->k[1]=nplm1;
+                    nearest_lons_found=1;
+                } else return GRIB_OUT_OF_AREA;
+            }
+        } else {
+            if (inlon >lons[0] || inlon< lons[nplm1]) {
+                if (lons[0]-lons[nplm1]-360 <=
+                        lons[0]-lons[1]) {
+                    self->k[0]=0;
+                    self->k[1]=nplm1;
+                    nearest_lons_found=1;
+                } else return GRIB_OUT_OF_AREA;
+            }
+        }
+
+        if (!nearest_lons_found) {
+            if (!self->global) {
+                row_count=0;ilon_first=0;ilon_last=0;
+                grib_get_reduced_row(pl[self->j[0]],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last);
+            } else {
+                row_count=pl[self->j[0]];
+            }
+
+            grib_binary_search(lons,row_count-1,inlon,
+                    &(self->k[0]),&(self->k[1]));
+        }
+        self->k[0]+=nlon;
+        self->k[1]+=nlon;
+
+        nlon=0;
+        if (self->global) {
+            for (jj=0;jj<self->j[1];jj++) nlon+=pl[jj];
+            nplm1=pl[self->j[1]]-1;
+        } else {
+            long row_count,ilon_first,ilon_last;
+            for (jj=0;jj<self->j[1];jj++) {
+                row_count=0;ilon_first=0;ilon_last=0;
+                grib_get_reduced_row(pl[jj],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last);
+                nlon+=row_count;
+            }
+            row_count=0;ilon_first=0;ilon_last=0;
+            grib_get_reduced_row(pl[self->j[1]],self->lon_first,self->lon_last,&nplm1,&ilon_first,&ilon_last);
+            nplm1--;
+        }
+        lons=self->lons+nlon;
+
+        nearest_lons_found=0;
+        if (lons[nplm1]>lons[0]) {
+            if (inlon<lons[0] || inlon>lons[nplm1]) {
+                if (lons[nplm1]-lons[0]-360 <=
+                        lons[nplm1]-lons[nplm1-1]) {
+                    self->k[2]=0;
+                    self->k[3]=nplm1;
+                    nearest_lons_found=1;
+                } else return GRIB_OUT_OF_AREA;
+            }
+        } else {
+            if (inlon>lons[0] || inlon<lons[nplm1]) {
+                if (lons[0]-lons[nplm1]-360 <=
+                        lons[0]-lons[1]) {
+                    self->k[2]=0;
+                    self->k[3]=nplm1;
+                    nearest_lons_found=1;
+                } else return GRIB_OUT_OF_AREA;
+            }
+        }
+
+        if (!nearest_lons_found) {
+            if (!self->global) {
+                row_count=0;ilon_first=0;ilon_last=0;
+                grib_get_reduced_row(pl[self->j[1]],self->lon_first,self->lon_last,&row_count,&ilon_first,&ilon_last);
+            } else {
+                row_count=pl[self->j[1]];
+            }
+
+            grib_binary_search(lons,row_count-1,inlon,
+                    &(self->k[2]),&(self->k[3]));
+        }
+
+        self->k[2]+=nlon;
+        self->k[3]+=nlon;
+
+        kk=0;
+        for (jj=0;jj<2;jj++) {
+            for (ii=0;ii<2;ii++) {
+                self->distances[kk]=grib_nearest_distance(radius,inlon,inlat,
+                        self->lons[self->k[kk]],self->lats[self->j[jj]]);
+                kk++;
+            }
+        }
+
+        grib_context_free(h->context,pla);
+    }
 
     kk=0;
     for (jj=0;jj<2;jj++) {
-      for (ii=0;ii<2;ii++) {
-        self->distances[kk]=grib_nearest_distance(radius,inlon,inlat,
-                     self->lons[self->k[kk]],self->lats[self->j[jj]]);
-        kk++;
-      }
+        for (ii=0;ii<2;ii++) {
+            distances[kk]=self->distances[kk];
+            outlats[kk]=self->lats[self->j[jj]];
+            outlons[kk]=self->lons[self->k[kk]];
+            grib_get_double_element_internal(h,self->values_key,self->k[kk],&(values[kk]));
+            indexes[kk]=self->k[kk];
+            kk++;
+        }
     }
 
-    grib_context_free(h->context,pla);
-  }
-
-  kk=0;
-  for (jj=0;jj<2;jj++) {
-    for (ii=0;ii<2;ii++) {
-      distances[kk]=self->distances[kk];
-      outlats[kk]=self->lats[self->j[jj]];
-      outlons[kk]=self->lons[self->k[kk]];
-      grib_get_double_element_internal(h,self->values_key,self->k[kk],&(values[kk]));
-      indexes[kk]=self->k[kk];
-      kk++;
-    }
-  }
-
-  return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
 #else
 static int find(grib_nearest* nearest, grib_handle* h,
-                double inlat, double inlon,unsigned long flags,
-                double* outlats,double* outlons, double *values,
-                double *distances,double *distances,int *indexes,size_t *len) {
-  grib_nearest_reduced* self = (grib_nearest_reduced*) nearest;
-  int ret=0,kk=0,ii=0,jj=0;
-  double* pl=NULL;
-  int ilat;
-  size_t nvalues=0;
-  if (!nearest->h || (flags & GRIB_NEAREST_SAME_DATA)==0 || nearest->h!=h) {
-    grib_iterator* iter=NULL;
-    double lat=0,lon=0;
+        double inlat, double inlon,unsigned long flags,
+        double* outlats,double* outlons, double *values,
+        double *distances,double *distances,int *indexes,size_t *len) {
+    grib_nearest_reduced* self = (grib_nearest_reduced*) nearest;
+    int ret=0,kk=0,ii=0,jj=0;
+    double* pl=NULL;
+    int ilat;
+    size_t nvalues=0;
+    if (!nearest->h || (flags & GRIB_NEAREST_SAME_DATA)==0 || nearest->h!=h) {
+        grib_iterator* iter=NULL;
+        double lat=0,lon=0;
+
+        if( (ret =  grib_get_size(h,self->values_key,&nvalues))!= GRIB_SUCCESS)
+            return ret;
+        nearest->values_count = nvalues;
+        if (nearest->values) grib_context_free(nearest->context,nearest->values);
+        nearest->values = grib_context_malloc(h->context,nvalues*sizeof(double));
+        if (!nearest->values) return GRIB_OUT_OF_MEMORY;
+
+        ret=grib_get_double_array_internal( h,self->values_key,
+                nearest->values,&(nearest->values_count));
+        if (ret!=GRIB_SUCCESS) grib_context_log(nearest->context,GRIB_LOG_ERROR,
+                "nearest: unable to get values array");
+
+        if (!nearest->h || (flags & GRIB_NEAREST_SAME_GRID)==0) {
+            double dummy=0;
+            double olat=1.e10;
+            ilat=0,ilon=0;
+            long n=0;
+
+            if (grib_is_missing(h,self->Nj,&ret)) {
+                grib_context_log(h->context, GRIB_LOG_DEBUG,"Key '%s' is missing", self->Nj);
+                return ret ? ret : GRIB_GEOCALCULUS_PROBLEM;
+            }
+
+            if( (ret =  grib_get_long(h,self->Nj,&n))!= GRIB_SUCCESS)
+                return ret;
+            self->lats_count=n;
+
+            if (self->lats) grib_context_free(nearest->context,self->lats);
+            self->lats=grib_context_malloc( nearest->context,
+                    self->lats_count* sizeof(double));
+            if (!self->lats) return GRIB_OUT_OF_MEMORY;
+
+            if (self->lons) grib_context_free(nearest->context,self->lons);
+            self->lons=grib_context_malloc( nearest->context,
+                    nearest->values_count*sizeof(double));
+            if (!self->lons) return GRIB_OUT_OF_MEMORY;
+
+            iter=grib_iterator_new(h,0,&ret);
+            while(grib_iterator_next(iter,&lat,&lon,&dummy)) {
+                if (olat!=lat) {self->lats[ilat++]=lat;olat=lat;}
+                self->lons[ilon++]=lon;
+            }
+            grib_iterator_delete(iter);
+        }
+        nearest->h=h;
 
-    if( (ret =  grib_get_size(h,self->values_key,&nvalues))!= GRIB_SUCCESS)
-       return ret;
-    nearest->values_count = nvalues;
-    if (nearest->values) grib_context_free(nearest->context,nearest->values);
-    nearest->values = grib_context_malloc(h->context,nvalues*sizeof(double));
-    if (!nearest->values) return GRIB_OUT_OF_MEMORY;
-
-    ret=grib_get_double_array_internal( h,self->values_key,
-                                   nearest->values,&(nearest->values_count));
-    if (ret!=GRIB_SUCCESS) grib_context_log(nearest->context,GRIB_LOG_ERROR,
-       "nearest: unable to get values array");
-
-    if (!nearest->h || (flags & GRIB_NEAREST_SAME_GRID)==0) {
-      double dummy=0;
-      double olat=1.e10;
-      ilat=0,ilon=0;
-      long n=0;
-
-      if (grib_is_missing(h,self->Nj,&ret)) {
-        grib_context_log(h->context, GRIB_LOG_DEBUG,"Key '%s' is missing", self->Nj);
-        return ret ? ret : GRIB_GEOCALCULUS_PROBLEM;
-      }
-
-      if( (ret =  grib_get_long(h,self->Nj,&n))!= GRIB_SUCCESS)
-       return ret;
-      self->lats_count=n;
-
-      if (self->lats) grib_context_free(nearest->context,self->lats);
-      self->lats=grib_context_malloc( nearest->context,
-                                 self->lats_count* sizeof(double));
-      if (!self->lats) return GRIB_OUT_OF_MEMORY;
-
-      if (self->lons) grib_context_free(nearest->context,self->lons);
-      self->lons=grib_context_malloc( nearest->context,
-                                 nearest->values_count*sizeof(double));
-      if (!self->lons) return GRIB_OUT_OF_MEMORY;
-
-      iter=grib_iterator_new(h,0,&ret);
-      while(grib_iterator_next(iter,&lat,&lon,&dummy)) {
-        if (olat!=lat) {self->lats[ilat++]=lat;olat=lat;}
-        self->lons[ilon++]=lon;
-      }
-      grib_iterator_delete(iter);
     }
-    nearest->h=h;
-
-  }
-
-  if (!self->distances || (flags & GRIB_NEAREST_SAME_POINT)==0
-                       || (flags & GRIB_NEAREST_SAME_GRID)==0) {
-    double* lons=NULL;
-    int nlon=0;
-    int plsize=0;
-
-    self->distances=(double*)grib_context_malloc( nearest->context,4*sizeof(double));
-    if (!self->distances) return GRIB_OUT_OF_MEMORY;
-
-    grib_binary_search(self->lats,self->lats_count-1,inlat,
-                                &(self->j[0]),&(self->j[1]));
 
-    plsize=self->lats_count;
-    pl=(double*)grib_context_malloc(h->context,plsize*sizeof(double));
-    if (!pl) return GRIB_OUT_OF_MEMORY;
-    if( (ret=grib_get_double_array(h,"pl",pl,&plsize))!= GRIB_SUCCESS)
-       return ret;
-
-    nlon=0;
-    for (jj=0;jj<self->j[0];jj++) {
-      nlon+=pl[jj];
-    }
-    lons=self->lons+nlon;
-    grib_binary_search(lons,pl[self->j[0]]-1,inlon,
-                                &(self->k[0]),&(self->k[1]));
-    self->k[0]+=nlon;
-    self->k[1]+=nlon;
-
-    nlon=0;
-    for (jj=0;jj<self->j[1];jj++) {
-      nlon+=pl[jj];
+    if (!self->distances || (flags & GRIB_NEAREST_SAME_POINT)==0
+            || (flags & GRIB_NEAREST_SAME_GRID)==0) {
+        double* lons=NULL;
+        int nlon=0;
+        int plsize=0;
+
+        self->distances=(double*)grib_context_malloc( nearest->context,4*sizeof(double));
+        if (!self->distances) return GRIB_OUT_OF_MEMORY;
+
+        grib_binary_search(self->lats,self->lats_count-1,inlat,
+                &(self->j[0]),&(self->j[1]));
+
+        plsize=self->lats_count;
+        pl=(double*)grib_context_malloc(h->context,plsize*sizeof(double));
+        if (!pl) return GRIB_OUT_OF_MEMORY;
+        if( (ret=grib_get_double_array(h,"pl",pl,&plsize))!= GRIB_SUCCESS)
+            return ret;
+
+        nlon=0;
+        for (jj=0;jj<self->j[0];jj++) {
+            nlon+=pl[jj];
+        }
+        lons=self->lons+nlon;
+        grib_binary_search(lons,pl[self->j[0]]-1,inlon,
+                &(self->k[0]),&(self->k[1]));
+        self->k[0]+=nlon;
+        self->k[1]+=nlon;
+
+        nlon=0;
+        for (jj=0;jj<self->j[1];jj++) {
+            nlon+=pl[jj];
+        }
+        lons=self->lons+nlon;
+        grib_binary_search(lons,pl[self->j[1]]-1,inlon,
+                &(self->k[2]),&(self->k[3]));
+        self->k[2]+=nlon;
+        self->k[3]+=nlon;
+
+        kk=0;
+        for (ii=0;ii<2;ii++) {
+            for (jj=0;jj<2;jj++) {
+                self->distances[kk]=grib_nearest_distance(radius,inlon,inlat,
+                        self->lons[self->k[kk]],self->lats[self->j[jj]]);
+                kk++;
+            }
+        }
+
+        grib_context_free(h->context,pl);
     }
-    lons=self->lons+nlon;
-    grib_binary_search(lons,pl[self->j[1]]-1,inlon,
-                                &(self->k[2]),&(self->k[3]));
-    self->k[2]+=nlon;
-    self->k[3]+=nlon;
 
     kk=0;
     for (ii=0;ii<2;ii++) {
-      for (jj=0;jj<2;jj++) {
-        self->distances[kk]=grib_nearest_distance(radius,inlon,inlat,
-                     self->lons[self->k[kk]],self->lats[self->j[jj]]);
-        kk++;
-      }
-    }
-
-    grib_context_free(h->context,pl);
-  }
-
-  kk=0;
-  for (ii=0;ii<2;ii++) {
-    for (jj=0;jj<2;jj++) {
-      distances[kk]=self->distances[kk];
-      outlats[kk]=self->lats[self->j[jj]];
-      outlons[kk]=self->lons[self->k[kk]];
-      values[kk]=nearest->values[self->k[kk]];
-      indexes[kk]=self->k[kk];
-      kk++;
+        for (jj=0;jj<2;jj++) {
+            distances[kk]=self->distances[kk];
+            outlats[kk]=self->lats[self->j[jj]];
+            outlons[kk]=self->lons[self->k[kk]];
+            values[kk]=nearest->values[self->k[kk]];
+            indexes[kk]=self->k[kk];
+            kk++;
+        }
     }
-  }
 
-  return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
 #endif
 
-
 static int destroy(grib_nearest* nearest) {
-  grib_nearest_reduced* self = (grib_nearest_reduced*) nearest;
-  if (self->lats) grib_context_free(nearest->context,self->lats);
-  if (self->lons) grib_context_free(nearest->context,self->lons);
-  if (self->j) grib_context_free(nearest->context,self->j);
-  if (self->k) grib_context_free(nearest->context,self->k);
-  if (self->distances) grib_context_free(nearest->context,self->distances);
-
-  return GRIB_SUCCESS;
-}
-
+    grib_nearest_reduced* self = (grib_nearest_reduced*) nearest;
+    if (self->lats) grib_context_free(nearest->context,self->lats);
+    if (self->lons) grib_context_free(nearest->context,self->lons);
+    if (self->j) grib_context_free(nearest->context,self->j);
+    if (self->k) grib_context_free(nearest->context,self->k);
+    if (self->distances) grib_context_free(nearest->context,self->distances);
 
+    return GRIB_SUCCESS;
+}
diff --git a/src/grib_nearest_class_regular.c b/src/grib_nearest_class_regular.c
index 50e1af9..0a702ad 100644
--- a/src/grib_nearest_class_regular.c
+++ b/src/grib_nearest_class_regular.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -92,318 +92,332 @@ static void init_class(grib_nearest_class* c)
 
 static int init(grib_nearest* nearest,grib_handle* h,grib_arguments* args)
 {
-  grib_nearest_regular* self = (grib_nearest_regular*) nearest;
-  self->Ni  = grib_arguments_get_name(h,args,self->cargs++);
-  self->Nj  = grib_arguments_get_name(h,args,self->cargs++);
-  self->i=(int*)grib_context_malloc(h->context,2*sizeof(int));
-  self->j=(int*)grib_context_malloc(h->context,2*sizeof(int));
-  return 0;
+    grib_nearest_regular* self = (grib_nearest_regular*) nearest;
+    self->Ni  = grib_arguments_get_name(h,args,self->cargs++);
+    self->Nj  = grib_arguments_get_name(h,args,self->cargs++);
+    self->i=(int*)grib_context_malloc(h->context,2*sizeof(int));
+    self->j=(int*)grib_context_malloc(h->context,2*sizeof(int));
+    return 0;
 }
 
 #if 0
 static int find(grib_nearest* nearest, grib_handle* h,
-                double inlat, double inlon,unsigned long flags,
-                double* outlats,double* outlons,
-                double *values,double *distances,int* indexes, size_t *len) {
-  grib_nearest_regular* self = (grib_nearest_regular*) nearest;
-  int ret=0,kk=0,ii=0,jj=0;
-  size_t nvalues=0;
-
-  long iradius;
-  double radius;
-
-  if( (ret =  grib_get_long(h,self->radius,&iradius))!= GRIB_SUCCESS)
-    return ret;
-  radius=((double)iradius)/1000.0;
-  
-  if (!nearest->h || (flags & GRIB_NEAREST_SAME_DATA)==0 || nearest->h!=h) {
-    grib_iterator* iter=NULL;
-    double lat=0,lon=0;
+        double inlat, double inlon,unsigned long flags,
+        double* outlats,double* outlons,
+        double *values,double *distances,int* indexes, size_t *len) {
+    grib_nearest_regular* self = (grib_nearest_regular*) nearest;
+    int ret=0,kk=0,ii=0,jj=0;
+    size_t nvalues=0;
+
+    long iradius;
+    double radius;
+
+    if( (ret =  grib_get_long(h,self->radius,&iradius))!= GRIB_SUCCESS)
+        return ret;
+    radius=((double)iradius)/1000.0;
+
+    if (!nearest->h || (flags & GRIB_NEAREST_SAME_DATA)==0 || nearest->h!=h) {
+        grib_iterator* iter=NULL;
+        double lat=0,lon=0;
+
+        if( (ret =  grib_get_size(h,self->values_key,&nvalues))!= GRIB_SUCCESS)
+            return ret;
+        nearest->values_count = nvalues;
+        if (nearest->values) grib_context_free(nearest->context,nearest->values);
+        nearest->values = grib_context_malloc(h->context,nvalues*sizeof(double));
+        if (!nearest->values) return GRIB_OUT_OF_MEMORY;
+
+        ret=grib_get_double_array_internal( h,self->values_key,
+                nearest->values,&(nearest->values_count));
+        if (ret!=GRIB_SUCCESS) grib_context_log(nearest->context,GRIB_LOG_ERROR,
+                "nearest: unable to get values array");
+
+        if (!nearest->h || (flags & GRIB_NEAREST_SAME_GRID)==0) {
+            double dummy=0;
+            double olat=1.e10, olon=1.e10;
+            int ilat=0,ilon=0;
+            long n=0;
+
+            if( (ret =  grib_get_long(h,self->Ni,&n))!= GRIB_SUCCESS)
+                return ret;
+            self->lons_count=n;
+
+            if( (ret =  grib_get_long(h,self->Nj,&n))!= GRIB_SUCCESS)
+                return ret;
+            self->lats_count=n;
+
+            if (self->lats) grib_context_free(nearest->context,self->lats);
+            self->lats=grib_context_malloc( nearest->context,
+                    self->lats_count* sizeof(double));
+            if (!self->lats) return GRIB_OUT_OF_MEMORY;
+
+            if (self->lons) grib_context_free(nearest->context,self->lons);
+            self->lons=grib_context_malloc( nearest->context,
+                    self->lons_count*sizeof(double));
+            if (!self->lons) return GRIB_OUT_OF_MEMORY;
+
+            iter=grib_iterator_new(h,0,&ret);
+            if (ret) {
+                grib_context_log(nearest->context,GRIB_LOG_ERROR,"unable to create iterator");
+                return ret;
+            }
+            while(grib_iterator_next(iter,&lat,&lon,&dummy)) {
+                if (olat != lat) {
+                    self->lats[ilat++]=lat;
+                    olat=lat;
+                }
+                if (ilon<self->lons_count && olon != lon) {
+                    self->lons[ilon++]=lon;
+                    olon=lon;
+                }
+            }
+            grib_iterator_delete(iter);
 
-    if( (ret =  grib_get_size(h,self->values_key,&nvalues))!= GRIB_SUCCESS)
-       return ret;
-    nearest->values_count = nvalues;
-    if (nearest->values) grib_context_free(nearest->context,nearest->values);
-    nearest->values = grib_context_malloc(h->context,nvalues*sizeof(double));
-    if (!nearest->values) return GRIB_OUT_OF_MEMORY;
-
-    ret=grib_get_double_array_internal( h,self->values_key,
-                                   nearest->values,&(nearest->values_count));
-    if (ret!=GRIB_SUCCESS) grib_context_log(nearest->context,GRIB_LOG_ERROR,
-       "nearest: unable to get values array");
-
-    if (!nearest->h || (flags & GRIB_NEAREST_SAME_GRID)==0) {
-      double dummy=0;
-      double olat=1.e10, olon=1.e10;
-      int ilat=0,ilon=0;
-      long n=0;
-
-      if( (ret =  grib_get_long(h,self->Ni,&n))!= GRIB_SUCCESS)
-       return ret;
-      self->lons_count=n;
-
-      if( (ret =  grib_get_long(h,self->Nj,&n))!= GRIB_SUCCESS)
-       return ret;
-      self->lats_count=n;
-
-      if (self->lats) grib_context_free(nearest->context,self->lats);
-      self->lats=grib_context_malloc( nearest->context,
-                                 self->lats_count* sizeof(double));
-      if (!self->lats) return GRIB_OUT_OF_MEMORY;
-
-      if (self->lons) grib_context_free(nearest->context,self->lons);
-      self->lons=grib_context_malloc( nearest->context,
-                                 self->lons_count*sizeof(double));
-      if (!self->lons) return GRIB_OUT_OF_MEMORY;
-
-      iter=grib_iterator_new(h,0,&ret);
-      if (ret) {
-          grib_context_log(nearest->context,GRIB_LOG_ERROR,"unable to create iterator");
-          return ret;
-      }
-      while(grib_iterator_next(iter,&lat,&lon,&dummy)) {
-        if (olat != lat) {
-          self->lats[ilat++]=lat;
-          olat=lat;
         }
-        if (ilon<self->lons_count && olon != lon) {
-          self->lons[ilon++]=lon;
-          olon=lon;
-        }
-      }
-      grib_iterator_delete(iter);
+        nearest->h=h;
 
     }
-    nearest->h=h;
 
-  }
-
-  if (!self->distances || (flags & GRIB_NEAREST_SAME_POINT)==0
-                       || (flags & GRIB_NEAREST_SAME_GRID)==0) {
+    if (!self->distances || (flags & GRIB_NEAREST_SAME_POINT)==0
+            || (flags & GRIB_NEAREST_SAME_GRID)==0) {
+
+        grib_binary_search(self->lats,self->lats_count-1,inlat,
+                &(self->j[0]),&(self->j[1]));
+        grib_binary_search(self->lons,self->lons_count-1,inlon,
+                &(self->i[0]),&(self->i[1]));
+        if (!self->distances)
+            self->distances=(double*)grib_context_malloc( nearest->context,4*sizeof(double));
+        if (!self->k)
+            self->k=(int*)grib_context_malloc( nearest->context,4*sizeof(int));
+        kk=0;
+        for (ii=0;ii<2;ii++) {
+            for (jj=0;jj<2;jj++) {
+                self->k[kk]=self->i[ii]+self->lons_count*self->j[jj]-1;
+                self->distances[kk]=grib_nearest_distance(radius,inlon,inlat,
+                        self->lons[self->i[ii]],self->lats[self->j[jj]]);
+                kk++;
+            }
+        }
+    }
 
-    grib_binary_search(self->lats,self->lats_count-1,inlat,
-                                &(self->j[0]),&(self->j[1]));
-    grib_binary_search(self->lons,self->lons_count-1,inlon,
-                                &(self->i[0]),&(self->i[1]));
-    if (!self->distances)
-      self->distances=(double*)grib_context_malloc( nearest->context,4*sizeof(double));
-    if (!self->k)
-      self->k=(int*)grib_context_malloc( nearest->context,4*sizeof(int));
     kk=0;
     for (ii=0;ii<2;ii++) {
-      for (jj=0;jj<2;jj++) {
-        self->k[kk]=self->i[ii]+self->lons_count*self->j[jj]-1;
-        self->distances[kk]=grib_nearest_distance(radius,inlon,inlat,
-                     self->lons[self->i[ii]],self->lats[self->j[jj]]);
-        kk++;
-      }
-    }
-  }
-
-  kk=0;
-  for (ii=0;ii<2;ii++) {
-    for (jj=0;jj<2;jj++) {
-      distances[kk]=self->distances[kk];
-      outlats[kk]=self->lats[self->j[jj]];
-      outlons[kk]=self->lons[self->i[ii]];
-      values[kk]=nearest->values[self->k[kk]];
-      indexes[kk]=self->k[kk];
-      kk++;
+        for (jj=0;jj<2;jj++) {
+            distances[kk]=self->distances[kk];
+            outlats[kk]=self->lats[self->j[jj]];
+            outlons[kk]=self->lons[self->i[ii]];
+            values[kk]=nearest->values[self->k[kk]];
+            indexes[kk]=self->k[kk];
+            kk++;
+        }
     }
-  }
 
-  return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
 #else
-static int find(grib_nearest* nearest, grib_handle* h,
-                double inlat, double inlon,unsigned long flags,
-                double* outlats,double* outlons,
-                double *values,double *distances,int* indexes, size_t *len)
+static int is_rotated_grid(grib_handle* h)
 {
-  grib_nearest_regular* self = (grib_nearest_regular*) nearest;
-  int ret=0,kk=0,ii=0,jj=0;
-  size_t nvalues=0;
-  long iradius;
-  double radius;
-
-  grib_iterator* iter=NULL;
-  double lat=0,lon=0;
-
-  while (inlon<0) inlon+=360;
-  while (inlon>360) inlon-=360;
-
-  if( (ret =  grib_get_size(h,self->values_key,&nvalues))!= GRIB_SUCCESS)
-     return ret;
-  nearest->values_count = nvalues;
-
-  if (grib_is_missing(h,self->radius,&ret)) {
-    grib_context_log(h->context, GRIB_LOG_DEBUG,"Key '%s' is missing", self->radius);
-    return ret ? ret : GRIB_GEOCALCULUS_PROBLEM;
-  }
-
-  if( (ret =  grib_get_long(h,self->radius,&iradius))!= GRIB_SUCCESS)
-    return ret;
-  radius=((double)iradius)/1000.0;
-  
-  if (!nearest->h || (flags & GRIB_NEAREST_SAME_GRID)==0) {
-    double dummy=0;
-    double olat=1.e10, olon=1.e10;
-    int ilat=0,ilon=0;
-    long n=0;
-
-    if (grib_is_missing(h,self->Ni,&ret)) {
-      grib_context_log(h->context, GRIB_LOG_DEBUG,"Key '%s' is missing", self->Ni);
-      return ret ? ret : GRIB_GEOCALCULUS_PROBLEM;
-    }
+    long is_rotated = 0;
+    int err = grib_get_long(h, "is_rotated_grid", &is_rotated);
+    if (!err && is_rotated ) return 1;
+    return 0;
+}
 
-    if (grib_is_missing(h,self->Nj,&ret)) {
-      grib_context_log(h->context, GRIB_LOG_DEBUG,"Key '%s' is missing", self->Nj);
-      return ret ? ret : GRIB_GEOCALCULUS_PROBLEM;
-    }
+static int find(grib_nearest* nearest, grib_handle* h,
+        double inlat, double inlon,unsigned long flags,
+        double* outlats,double* outlons,
+        double *values,double *distances,int* indexes, size_t *len)
+{
+    grib_nearest_regular* self = (grib_nearest_regular*) nearest;
+    int ret=0,kk=0,ii=0,jj=0;
+    size_t nvalues=0;
+    long iradius;
+    double radius;
 
-    if ((ret =  grib_get_long(h,self->Ni,&n))!= GRIB_SUCCESS)
-     return ret;
-    self->lons_count=n;
+    grib_iterator* iter=NULL;
+    double lat=0,lon=0;
 
-    if ((ret =  grib_get_long(h,self->Nj,&n))!= GRIB_SUCCESS)
-     return ret;
-    self->lats_count=n;
+    while (inlon<0) inlon+=360;
+    while (inlon>360) inlon-=360;
 
-    if (self->lats) grib_context_free(nearest->context,self->lats);
-    self->lats=(double*)grib_context_malloc( nearest->context,
-                               self->lats_count* sizeof(double));
-    if (!self->lats) return GRIB_OUT_OF_MEMORY;
+    if( (ret =  grib_get_size(h,self->values_key,&nvalues))!= GRIB_SUCCESS)
+        return ret;
+    nearest->values_count = nvalues;
 
-    if (self->lons) grib_context_free(nearest->context,self->lons);
-    self->lons=(double*)grib_context_malloc( nearest->context,
-                               self->lons_count*sizeof(double));
-    if (!self->lons) return GRIB_OUT_OF_MEMORY;
-
-    iter=grib_iterator_new(h,0,&ret);
-    while(grib_iterator_next(iter,&lat,&lon,&dummy)) {
-      if (olat != lat) {
-        self->lats[ilat++]=lat;
-        olat=lat;
-      }
-      if (ilon<self->lons_count && olon != lon) {
-        self->lons[ilon++]=lon ;
-        olon=lon;
-      }
+    if (grib_is_missing(h,self->radius,&ret)) {
+        grib_context_log(h->context, GRIB_LOG_DEBUG,"Key '%s' is missing", self->radius);
+        return ret ? ret : GRIB_GEOCALCULUS_PROBLEM;
     }
-    grib_iterator_delete(iter);
 
-  }
-  nearest->h=h;
+    if( (ret =  grib_get_long(h,self->radius,&iradius))!= GRIB_SUCCESS)
+        return ret;
+    radius=((double)iradius)/1000.0;
 
-  if (!self->distances || (flags & GRIB_NEAREST_SAME_POINT)==0
-                       || (flags & GRIB_NEAREST_SAME_GRID)==0) {
-    int nearest_lons_found=0;
+    if (!nearest->h || (flags & GRIB_NEAREST_SAME_GRID)==0) {
+        double dummy=0;
+        double olat=1.e10, olon=1.e10;
+        int ilat=0,ilon=0;
+        long n=0;
+
+        if (grib_is_missing(h,self->Ni,&ret)) {
+            grib_context_log(h->context, GRIB_LOG_DEBUG,"Key '%s' is missing", self->Ni);
+            return ret ? ret : GRIB_GEOCALCULUS_PROBLEM;
+        }
 
-    if (self->lats[self->lats_count-1] > self->lats[0]) {
-       if (inlat<self->lats[0] || inlat>self->lats[self->lats_count-1])
-         return GRIB_OUT_OF_AREA;
-    } else {
-      if (inlat > self->lats[0] || inlat < self->lats[self->lats_count-1])
-         return GRIB_OUT_OF_AREA;
-    }
+        if (grib_is_missing(h,self->Nj,&ret)) {
+            grib_context_log(h->context, GRIB_LOG_DEBUG,"Key '%s' is missing", self->Nj);
+            return ret ? ret : GRIB_GEOCALCULUS_PROBLEM;
+        }
+
+        /* Support for rotated grids not yet implemented */
+        if (is_rotated_grid(h)) {
+            grib_context_log(h->context,GRIB_LOG_ERROR,
+                    "Nearest neighbour functionality is not supported for rotated grids.");
+            return GRIB_NOT_IMPLEMENTED;
+        }
+
+        if ((ret =  grib_get_long(h,self->Ni,&n))!= GRIB_SUCCESS)
+            return ret;
+        self->lons_count=n;
+
+        if ((ret =  grib_get_long(h,self->Nj,&n))!= GRIB_SUCCESS)
+            return ret;
+        self->lats_count=n;
+
+        if (self->lats) grib_context_free(nearest->context,self->lats);
+        self->lats=(double*)grib_context_malloc( nearest->context,
+                self->lats_count* sizeof(double));
+        if (!self->lats) return GRIB_OUT_OF_MEMORY;
+
+        if (self->lons) grib_context_free(nearest->context,self->lons);
+        self->lons=(double*)grib_context_malloc( nearest->context,
+                self->lons_count*sizeof(double));
+        if (!self->lons) return GRIB_OUT_OF_MEMORY;
+
+        iter=grib_iterator_new(h,0,&ret);
+        while(grib_iterator_next(iter,&lat,&lon,&dummy)) {
+            if (olat != lat) {
+                Assert( ilat < self->lats_count );
+                self->lats[ilat++]=lat;
+                olat=lat;
+            }
+            if (ilon<self->lons_count && olon != lon) {
+                self->lons[ilon++]=lon ;
+                olon=lon;
+            }
+        }
+        grib_iterator_delete(iter);
 
-    if (self->lons[self->lons_count-1] > self->lons[0]) {
-      if (inlon<self->lons[0] || inlon>self->lons[self->lons_count-1]) {
-		/* try to scale*/
-		if (inlon>0) inlon-=360;
-		else inlon+=360;
-		
-		if (inlon<self->lons[0] || inlon>self->lons[self->lons_count-1]) {
-		  	if (	self->lons[0]+360-self->lons[self->lons_count-1]<=
-				self->lons[1]-self->lons[0]) {
-			/*it's a global field in longitude*/
-			self->i[0]=0;
-			self->i[1]=self->lons_count-1;
-			nearest_lons_found=1;
-	  		} else 
-				return GRIB_OUT_OF_AREA;
-		}
-       }
-    } else {
-      if (inlon>self->lons[0] || inlon<self->lons[self->lons_count-1]) {
-		  /* try to scale*/
-		  if (inlon>0) inlon-=360;
-		  else inlon+=360;
-         if (self->lons[0]-self->lons[self->lons_count-1]-360 <=
-             self->lons[0]-self->lons[1]) {
-			 /*it's a global field in longitude*/
-           self->i[0]=0;
-           self->i[1]=self->lons_count-1;
-           nearest_lons_found=1;
-			 } else if (inlon>self->lons[0] || inlon<self->lons[self->lons_count-1])
-				 return GRIB_OUT_OF_AREA;
-       }
     }
+    nearest->h=h;
 
-    grib_binary_search(self->lats,self->lats_count-1,inlat,
-                                &(self->j[0]),&(self->j[1]));
+    if (!self->distances || (flags & GRIB_NEAREST_SAME_POINT)==0
+            || (flags & GRIB_NEAREST_SAME_GRID)==0) {
+        int nearest_lons_found=0;
 
-    if (!nearest_lons_found)
-       grib_binary_search(self->lons,self->lons_count-1,inlon,
-                                &(self->i[0]),&(self->i[1]));
+        if (self->lats[self->lats_count-1] > self->lats[0]) {
+            if (inlat<self->lats[0] || inlat>self->lats[self->lats_count-1])
+                return GRIB_OUT_OF_AREA;
+        } else {
+            if (inlat > self->lats[0] || inlat < self->lats[self->lats_count-1])
+                return GRIB_OUT_OF_AREA;
+        }
 
-    if (!self->distances)
-      self->distances=(double*)grib_context_malloc( nearest->context,4*sizeof(double));
-    if (!self->k)
-      self->k=(int*)grib_context_malloc( nearest->context,4*sizeof(int));
-    kk=0;
-    for (jj=0;jj<2;jj++) {
-      for (ii=0;ii<2;ii++) {
-        self->k[kk]=self->i[ii]+self->lons_count*self->j[jj];
-        self->distances[kk]=grib_nearest_distance(radius,inlon,inlat,
-                     self->lons[self->i[ii]],self->lats[self->j[jj]]);
-        kk++;
-      }
+        if (self->lons[self->lons_count-1] > self->lons[0]) {
+            if (inlon<self->lons[0] || inlon>self->lons[self->lons_count-1]) {
+                /* try to scale*/
+                if (inlon>0) inlon-=360;
+                else inlon+=360;
+
+                if (inlon<self->lons[0] || inlon>self->lons[self->lons_count-1]) {
+                    if (	self->lons[0]+360-self->lons[self->lons_count-1]<=
+                            self->lons[1]-self->lons[0]) {
+                        /*it's a global field in longitude*/
+                        self->i[0]=0;
+                        self->i[1]=self->lons_count-1;
+                        nearest_lons_found=1;
+                    } else
+                        return GRIB_OUT_OF_AREA;
+                }
+            }
+        } else {
+            if (inlon>self->lons[0] || inlon<self->lons[self->lons_count-1]) {
+                /* try to scale*/
+                if (inlon>0) inlon-=360;
+                else inlon+=360;
+                if (self->lons[0]-self->lons[self->lons_count-1]-360 <=
+                        self->lons[0]-self->lons[1]) {
+                    /*it's a global field in longitude*/
+                    self->i[0]=0;
+                    self->i[1]=self->lons_count-1;
+                    nearest_lons_found=1;
+                } else if (inlon>self->lons[0] || inlon<self->lons[self->lons_count-1])
+                    return GRIB_OUT_OF_AREA;
+            }
+        }
+
+        grib_binary_search(self->lats,self->lats_count-1,inlat,
+                &(self->j[0]),&(self->j[1]));
+
+        if (!nearest_lons_found)
+            grib_binary_search(self->lons,self->lons_count-1,inlon,
+                    &(self->i[0]),&(self->i[1]));
+
+        if (!self->distances)
+            self->distances=(double*)grib_context_malloc( nearest->context,4*sizeof(double));
+        if (!self->k)
+            self->k=(int*)grib_context_malloc( nearest->context,4*sizeof(int));
+        kk=0;
+        for (jj=0;jj<2;jj++) {
+            for (ii=0;ii<2;ii++) {
+                self->k[kk]=self->i[ii]+self->lons_count*self->j[jj];
+                self->distances[kk]=grib_nearest_distance(radius,inlon,inlat,
+                        self->lons[self->i[ii]],self->lats[self->j[jj]]);
+                kk++;
+            }
+        }
     }
-  }
 
-  kk=0;
+    kk=0;
 
-/*
- * Brute force algorithm:
- * First unpack all the values into an array. Then when we need the 4 points
- * we just index into this array so no need to call grib_get_double_element_internal
- * 
- *   if (nearest->values) grib_context_free(nearest->context,nearest->values);
- *   nearest->values = grib_context_malloc(h->context,nvalues*sizeof(double));
- *   if (!nearest->values) return GRIB_OUT_OF_MEMORY;
- *   ret = grib_get_double_array(h, self->values_key, nearest->values ,&nvalues);
- *   if (ret) return ret;
- */
+    /*
+     * Brute force algorithm:
+     * First unpack all the values into an array. Then when we need the 4 points
+     * we just index into this array so no need to call grib_get_double_element_internal
+     *
+     *   if (nearest->values) grib_context_free(nearest->context,nearest->values);
+     *   nearest->values = grib_context_malloc(h->context,nvalues*sizeof(double));
+     *   if (!nearest->values) return GRIB_OUT_OF_MEMORY;
+     *   ret = grib_get_double_array(h, self->values_key, nearest->values ,&nvalues);
+     *   if (ret) return ret;
+     */
 
-  for (jj=0;jj<2;jj++) {
-    for (ii=0;ii<2;ii++) {
-      distances[kk]=self->distances[kk];
-      outlats[kk]=self->lats[self->j[jj]];
-      outlons[kk]=self->lons[self->i[ii]];
-      grib_get_double_element_internal(h,self->values_key,self->k[kk],&(values[kk]));
-      /* Using the brute force approach described above */
-      /* Assert(self->k[kk] < nvalues); */
-      /* values[kk]=nearest->values[self->k[kk]]; */
-
-      indexes[kk]=self->k[kk];
-      kk++;
+    for (jj=0;jj<2;jj++) {
+        for (ii=0;ii<2;ii++) {
+            distances[kk]=self->distances[kk];
+            outlats[kk]=self->lats[self->j[jj]];
+            outlons[kk]=self->lons[self->i[ii]];
+            grib_get_double_element_internal(h,self->values_key,self->k[kk],&(values[kk]));
+            /* Using the brute force approach described above */
+            /* Assert(self->k[kk] < nvalues); */
+            /* values[kk]=nearest->values[self->k[kk]]; */
+
+            indexes[kk]=self->k[kk];
+            kk++;
+        }
     }
-  }
 
-  return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
 #endif
 
-
 static int destroy(grib_nearest* nearest) {
-  grib_nearest_regular* self = (grib_nearest_regular*) nearest;
-  if (self->lats) grib_context_free(nearest->context,self->lats);
-  if (self->lons) grib_context_free(nearest->context,self->lons);
-  if (self->i) grib_context_free(nearest->context,self->i);
-  if (self->j) grib_context_free(nearest->context,self->j);
-  if (self->k) grib_context_free(nearest->context,self->k);
-  if (self->distances) grib_context_free(nearest->context,self->distances);
-  return GRIB_SUCCESS;
+    grib_nearest_regular* self = (grib_nearest_regular*) nearest;
+    if (self->lats) grib_context_free(nearest->context,self->lats);
+    if (self->lons) grib_context_free(nearest->context,self->lons);
+    if (self->i) grib_context_free(nearest->context,self->i);
+    if (self->j) grib_context_free(nearest->context,self->j);
+    if (self->k) grib_context_free(nearest->context,self->k);
+    if (self->distances) grib_context_free(nearest->context,self->distances);
+    return GRIB_SUCCESS;
 }
-
diff --git a/src/grib_nearest_class_sh.c b/src/grib_nearest_class_sh.c
index df9df54..35d7bd7 100644
--- a/src/grib_nearest_class_sh.c
+++ b/src/grib_nearest_class_sh.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -86,200 +86,204 @@ static double grib_invtrans(grib_context *c,int L,double latdeg,double londeg,do
 
 static int init(grib_nearest* nearest,grib_handle* h,grib_arguments* args)
 {
-  grib_nearest_sh* self = (grib_nearest_sh*) nearest;
-  self->J  = grib_arguments_get_name(h,args,self->cargs++);
-  self->K  = grib_arguments_get_name(h,args,self->cargs++);
-  self->M  = grib_arguments_get_name(h,args,self->cargs++);
-  return 0;
+    grib_nearest_sh* self = (grib_nearest_sh*) nearest;
+    self->J  = grib_arguments_get_name(h,args,self->cargs++);
+    self->K  = grib_arguments_get_name(h,args,self->cargs++);
+    self->M  = grib_arguments_get_name(h,args,self->cargs++);
+    return 0;
 }
 
 static int find(grib_nearest* nearest, grib_handle* h,
-                double inlat, double inlon,unsigned long flags,
-                double* outlats,double* outlons,
-                double *outvalues,double *distances,int* indexes, size_t *len) {
-  grib_nearest_sh* self = (grib_nearest_sh*) nearest;
-  long J,K,M;
-  double *values;
-  int size,i,ret;
-  size_t vsize=0;
-  double val;
-
-  if( (ret =  grib_get_long(h,self->J,&J))!= GRIB_SUCCESS)
-    return ret;
-  if( (ret =  grib_get_long(h,self->K,&K))!= GRIB_SUCCESS)
-    return ret;
-  if( (ret =  grib_get_long(h,self->M,&M))!= GRIB_SUCCESS)
-    return ret;
+        double inlat, double inlon,unsigned long flags,
+        double* outlats,double* outlons,
+        double *outvalues,double *distances,int* indexes, size_t *len)
+{
+    grib_nearest_sh* self = (grib_nearest_sh*) nearest;
+    long J,K,M;
+    double *values;
+    int size,i,ret;
+    size_t vsize=0;
+    double val;
+
+    if( (ret =  grib_get_long(h,self->J,&J))!= GRIB_SUCCESS)
+        return ret;
+    if( (ret =  grib_get_long(h,self->K,&K))!= GRIB_SUCCESS)
+        return ret;
+    if( (ret =  grib_get_long(h,self->M,&M))!= GRIB_SUCCESS)
+        return ret;
+
+    size=2*LEGENDRE_SIZE(J);
+    vsize=size;
+    values=(double*)grib_context_malloc_clear(h->context,sizeof(double)*size);
+    if (!values) {
+        grib_context_log(h->context,GRIB_LOG_ERROR,
+                "nearest_sh: unable to allocate %d bytes",
+                sizeof(double)*size);
+        return GRIB_OUT_OF_MEMORY;
+    }
 
-  size=2*LEGENDRE_SIZE(J);
-  vsize=size;
-  values=(double*)grib_context_malloc_clear(h->context,sizeof(double)*size);
-  if (!values) {
-    grib_context_log(h->context,GRIB_LOG_ERROR,
-                     "nearest_sh: unable to allocate %d bytes",
-                     sizeof(double)*size);
-    return GRIB_OUT_OF_MEMORY;
-  }
-  
-  if( (ret =  grib_get_double_array(h,self->values_key,values,&vsize))
-       != GRIB_SUCCESS)
-    return ret;
-  
-  Assert(vsize==size);
+    if( (ret =  grib_get_double_array(h,self->values_key,values,&vsize))
+            != GRIB_SUCCESS)
+        return ret;
 
-  val=grib_invtrans(h->context,J,inlat,inlon,values);
+    Assert(vsize==size);
 
-  grib_context_free(h->context,values);
+    val=grib_invtrans(h->context,J,inlat,inlon,values);
 
-  for (i=0;i<4;i++) {
-    outlats[i]=inlat;
-    outlons[i]=inlon;
-    outvalues[i]=val;
-    indexes[i]=-1;
-  }
-  
-  return GRIB_SUCCESS;
-}
+    grib_context_free(h->context,values);
 
-static int destroy(grib_nearest* nearest) {
-  return GRIB_SUCCESS;
+    for (i=0;i<4;i++) {
+        outlats[i]=inlat;
+        outlons[i]=inlon;
+        outvalues[i]=val;
+        indexes[i]=-1;
+    }
+
+    return GRIB_SUCCESS;
 }
 
+static int destroy(grib_nearest* nearest)
+{
+    return GRIB_SUCCESS;
+}
 
-static void grib_trigs(int m,double lambda,double* c,double* s) {
-  int i;
-  double a,b;
+static void grib_trigs(int m,double lambda,double* c,double* s)
+{
+    int i;
+    double a,b;
 
-  b=sin(lambda);
-  a=1-2*sin(lambda/2.0)*sin(lambda/2.0);
-  c[0]=1.0; s[0]=0.0;
+    b=sin(lambda);
+    a=1-2*sin(lambda/2.0)*sin(lambda/2.0);
+    c[0]=1.0; s[0]=0.0;
 
-  for (i=1;i<=m;i++) {
-    c[i]=a*c[i-1]-b*s[i-1];
-    s[i]=a*s[i-1]+b*c[i-1];
-  }
+    for (i=1;i<=m;i++) {
+        c[i]=a*c[i-1]-b*s[i-1];
+        s[i]=a*s[i-1]+b*c[i-1];
+    }
 
 }
 
-static double grib_invtrans_trig(int L,double* TR,double* TI,double *c,double *s) {
-  double ret=0;
-  int m=0;
-
-  for (m=1;m<=L;m++) {
-    ret+= TR[m] * c[m];
-    printf("++ %d ++ %.20e %g %g\n",m,ret,TR[m],c[m]);
-    ret-= TI[m] * s[m];
-    printf("+- %d ++ %.20e %g %g\n",m,ret,TI[m],s[m]);
-  }
-  ret=2*ret+TR[0];
+static double grib_invtrans_trig(int L,double* TR,double* TI,double *c,double *s)
+{
+    double ret=0;
+    int m=0;
+
+    for (m=1;m<=L;m++) {
+        ret+= TR[m] * c[m];
+        printf("++ %d ++ %.20e %g %g\n",m,ret,TR[m],c[m]);
+        ret-= TI[m] * s[m];
+        printf("+- %d ++ %.20e %g %g\n",m,ret,TI[m],s[m]);
+    }
+    ret=2*ret+TR[0];
 
-  return ret;
+    return ret;
 }
 
 static void grib_invtrans_legendre(int L,double x,
-                                   double* RI,double* TR,double* TI) {
-  int l,m;
-  double y2;
-  double f,of,fx,p0;
-  double *pP,*oP,*pRI;
-
-  if (abs(x) > 1.0) {
-    printf("grib_legendreP: invalid x=%g must be abs(x)>0\n",x);
-    exit(1);
-  }
-  if (L<0) {
-    printf("grib_legendreP: invalid L=%d must be >0\n",L);
-    exit(1);
-  }
-
-  pP=(double*)malloc(sizeof(double)*(L+1));
-  if (!pP) {
-    printf("unable to allocate %d bytes\n",(int)sizeof(double)*(L+1));
-    exit(1);
-  }
-
-  y2=(1.0-x*x); fx=1; p0=1; oP=pP; pRI=RI;
-  for (m=0;m<L;m++) {
-    /* printf("\n"); */
-    pP[0]=sqrt((2*m+1)*p0);
-    if (m & 1) pP[0]=-pP[0];
-    TR[m]=pP[0] * *(pRI++);
-    TI[m]=pP[0] * *(pRI++);
-    printf("-- (%d,%d) %.20e %.20e\n",m,m,TR[m],pP[0]);  
-    of=sqrt(2*m+3);
-    pP[1]=x*of*pP[0];
-    TR[m]+=pP[1] * *(pRI++);
-    TI[m]+=pP[1] * *(pRI++);
-    printf("-- (%d,%d) %.20e %.20e\n",m+1,m,TR[m],pP[1]);
-    for (l=m+2;l<=L;l++) {
-      f=sqrt((4.0*l*l-1.0)/(l*l-m*m));
-      pP[2]=(x*pP[1]-pP[0]/of)*f;
-      TR[m]+=pP[2] * *(pRI++);
-      TI[m]+=pP[2] * *(pRI++);
-      printf("-- (%d,%d) %.20e %.20e\n",l,m,TR[m],pP[2]);
-      of=f;
-      pP++;
+        double* RI,double* TR,double* TI)
+{
+    int l,m;
+    double y2;
+    double f,of,fx,p0;
+    double *pP,*oP,*pRI;
+
+    if (fabs(x) > 1.0) {
+        printf("grib_legendreP: invalid x=%g must be abs(x)>0\n",x);
+        exit(1);
+    }
+    if (L<0) {
+        printf("grib_legendreP: invalid L=%d must be >0\n",L);
+        exit(1);
     }
-    pP=oP;
-    p0*=y2*fx/(fx+1.0);
-    fx+=2;
-  }
-  /* printf("\n"); */
-  pP[0]=sqrt((2*L+1)*p0);
-  if (L & 1) pP[0]=-pP[0];
-  TR[L]=pP[0] * *(pRI++);
-  TI[L]=pP[0] * *(pRI++);
-  printf("-- (%d,%d) %.20e %.20e\n",L,L,TR[m],pP[0]);
-}
 
-static double grib_invtrans(grib_context* context,int L,double latdeg,double londeg,double* values) {
-  double val;
-  double *c,*s,*TR,*TI;
-  double sinlat,deg2rad,lonrad;
-  int Lp1=L+1;
-
-  deg2rad=acos(0.0)/90.0;
-  sinlat=sin(latdeg*deg2rad);
-  lonrad=londeg*deg2rad;
-  
-  c=(double*)grib_context_malloc_clear(context,sizeof(double)*Lp1);
-  if (!c) {
-    grib_context_log(context,GRIB_LOG_ERROR,
-      "nearest_sh: unable to allocate %d bytes",sizeof(double)*Lp1);
-    return GRIB_OUT_OF_MEMORY;
-  }
-  
-  s=(double*)grib_context_malloc_clear(context,sizeof(double)*Lp1);
-  if (!s) {
-    grib_context_log(context,GRIB_LOG_ERROR,
-     "nearest_sh: unable to allocate %d bytes",sizeof(double)*Lp1);
-    return GRIB_OUT_OF_MEMORY;
-  }
-  
-  grib_trigs(L,lonrad,c,s);
-
-  TR=(double*)grib_context_malloc_clear(context,sizeof(double)*Lp1);
-  if (!TR) {
-    grib_context_log(context,GRIB_LOG_ERROR,
-      "nearest_sh: unable to allocate %d bytes",sizeof(double)*Lp1);
-    return GRIB_OUT_OF_MEMORY;
-  }
-  TI=(double*)grib_context_malloc_clear(context,sizeof(double)*Lp1);
-  if (!TI) {
-    grib_context_log(context,GRIB_LOG_ERROR,
-     "nearest_sh: unable to allocate %d bytes",sizeof(double)*Lp1);
-    return GRIB_OUT_OF_MEMORY;
-  }
-  
-  grib_invtrans_legendre(L,sinlat,values,TR,TI);
-
-  val=grib_invtrans_trig(L,TR,TI,c,s);
-
-  grib_context_free(context,c);
-  grib_context_free(context,s);
-  grib_context_free(context,TR);
-  grib_context_free(context,TI);
-
-  return val;
+    pP=(double*)malloc(sizeof(double)*(L+1));
+    if (!pP) {
+        printf("unable to allocate %d bytes\n",(int)sizeof(double)*(L+1));
+        exit(1);
+    }
+
+    y2=(1.0-x*x); fx=1; p0=1; oP=pP; pRI=RI;
+    for (m=0;m<L;m++) {
+        /* printf("\n"); */
+        pP[0]=sqrt((2*m+1)*p0);
+        if (m & 1) pP[0]=-pP[0];
+        TR[m]=pP[0] * *(pRI++);
+        TI[m]=pP[0] * *(pRI++);
+        printf("-- (%d,%d) %.20e %.20e\n",m,m,TR[m],pP[0]);
+        of=sqrt(2*m+3);
+        pP[1]=x*of*pP[0];
+        TR[m]+=pP[1] * *(pRI++);
+        TI[m]+=pP[1] * *(pRI++);
+        printf("-- (%d,%d) %.20e %.20e\n",m+1,m,TR[m],pP[1]);
+        for (l=m+2;l<=L;l++) {
+            f=sqrt((4.0*l*l-1.0)/(l*l-m*m));
+            pP[2]=(x*pP[1]-pP[0]/of)*f;
+            TR[m]+=pP[2] * *(pRI++);
+            TI[m]+=pP[2] * *(pRI++);
+            printf("-- (%d,%d) %.20e %.20e\n",l,m,TR[m],pP[2]);
+            of=f;
+            pP++;
+        }
+        pP=oP;
+        p0*=y2*fx/(fx+1.0);
+        fx+=2;
+    }
+    /* printf("\n"); */
+    pP[0]=sqrt((2*L+1)*p0);
+    if (L & 1) pP[0]=-pP[0];
+    TR[L]=pP[0] * *(pRI++);
+    TI[L]=pP[0] * *(pRI++);
+    printf("-- (%d,%d) %.20e %.20e\n",L,L,TR[m],pP[0]);
 }
 
+static double grib_invtrans(grib_context* context,int L,double latdeg,double londeg,double* values)
+{
+    double val;
+    double *c,*s,*TR,*TI;
+    double sinlat,deg2rad,lonrad;
+    int Lp1=L+1;
+
+    deg2rad=acos(0.0)/90.0;
+    sinlat=sin(latdeg*deg2rad);
+    lonrad=londeg*deg2rad;
+
+    c=(double*)grib_context_malloc_clear(context,sizeof(double)*Lp1);
+    if (!c) {
+        grib_context_log(context,GRIB_LOG_ERROR,
+                "nearest_sh: unable to allocate %d bytes",sizeof(double)*Lp1);
+        return GRIB_OUT_OF_MEMORY;
+    }
+
+    s=(double*)grib_context_malloc_clear(context,sizeof(double)*Lp1);
+    if (!s) {
+        grib_context_log(context,GRIB_LOG_ERROR,
+                "nearest_sh: unable to allocate %d bytes",sizeof(double)*Lp1);
+        return GRIB_OUT_OF_MEMORY;
+    }
+
+    grib_trigs(L,lonrad,c,s);
+
+    TR=(double*)grib_context_malloc_clear(context,sizeof(double)*Lp1);
+    if (!TR) {
+        grib_context_log(context,GRIB_LOG_ERROR,
+                "nearest_sh: unable to allocate %d bytes",sizeof(double)*Lp1);
+        return GRIB_OUT_OF_MEMORY;
+    }
+    TI=(double*)grib_context_malloc_clear(context,sizeof(double)*Lp1);
+    if (!TI) {
+        grib_context_log(context,GRIB_LOG_ERROR,
+                "nearest_sh: unable to allocate %d bytes",sizeof(double)*Lp1);
+        return GRIB_OUT_OF_MEMORY;
+    }
+
+    grib_invtrans_legendre(L,sinlat,values,TR,TI);
+
+    val=grib_invtrans_trig(L,TR,TI,c,s);
+
+    grib_context_free(context,c);
+    grib_context_free(context,s);
+    grib_context_free(context,TR);
+    grib_context_free(context,TI);
+
+    return val;
+}
diff --git a/src/grib_openjpeg_encoding.c b/src/grib_openjpeg_encoding.c
index d2779e9..9271bb6 100644
--- a/src/grib_openjpeg_encoding.c
+++ b/src/grib_openjpeg_encoding.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -205,13 +205,13 @@ cleanup:
 
 int grib_openjpeg_decode(grib_context *c, unsigned char *buf, size_t *buflen, double *val, size_t *n_vals) {
 	grib_context_log(c, GRIB_LOG_ERROR,
-			"grib_accessor_data_jpeg2000_packing: openjpeg jpeg support not enabled. Please rerun configure with --with-openjpeg");
+			"grib_accessor_data_jpeg2000_packing: OpenJPEG JPEG support not enabled.");
 	return GRIB_NOT_IMPLEMENTED;
 }
 
 int grib_openjpeg_encode(grib_context *c, j2k_encode_helper *helper) {
 	grib_context_log(c, GRIB_LOG_ERROR,
-			"grib_accessor_data_jpeg2000_packing: openjpeg jpeg support not enabled. Please rerun configure with --with-openjpeg");
+			"grib_accessor_data_jpeg2000_packing: OpenJPEG JPEG support not enabled.");
 	return GRIB_NOT_IMPLEMENTED;
 }
 
diff --git a/src/grib_parse_utils.c b/src/grib_parse_utils.c
index 0a39175..a143c7e 100644
--- a/src/grib_parse_utils.c
+++ b/src/grib_parse_utils.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -48,9 +48,34 @@ static void init()
     pthread_mutex_init(&mutex_parse,&attr);
     pthread_mutexattr_destroy(&attr);
 }
+#elif GRIB_OMP_THREADS
+static int once = 0;
+static omp_nest_lock_t mutex_file;
+static omp_nest_lock_t mutex_rules;
+static omp_nest_lock_t mutex_concept;
+static omp_nest_lock_t mutex_hash_array;
+static omp_nest_lock_t mutex_stream;
+static omp_nest_lock_t mutex_parse;
+
+static void init()
+{
+    GRIB_OMP_CRITICAL(lock_grib_parse_utils_c)
+    {
+        if (once == 0)
+        {
+            omp_init_nest_lock(&mutex_file);
+            omp_init_nest_lock(&mutex_rules);
+            omp_init_nest_lock(&mutex_concept);
+            omp_init_nest_lock(&mutex_hash_array);
+            omp_init_nest_lock(&mutex_stream);
+            omp_init_nest_lock(&mutex_parse);
+            once = 1;
+        }
+    }
+}
 #endif
 
-int grib_recompose_name(grib_handle* h, grib_accessor *observer, const char* uname, char* fname,int fail)
+int grib_recompose_name(grib_handle* h, grib_accessor *observer, const char* uname, char* fname, int fail)
 {
     grib_accessor* a;
     char loc[1024]={0,};
@@ -62,10 +87,11 @@ int grib_recompose_name(grib_handle* h, grib_accessor *observer, const char* una
     long lval=0;
     int type=GRIB_TYPE_STRING;
     size_t replen = 0;
+    const size_t uname_len = strlen(uname);
 
     loc[0] = 0 ;
     fname[0] = 0 ;
-    for(i=0;i<strlen(uname);i++)
+    for(i=0; i<uname_len; i++)
     {
         if(mode > -1)
         {
@@ -93,7 +119,7 @@ int grib_recompose_name(grib_handle* h, grib_accessor *observer, const char* una
                     case GRIB_TYPE_DOUBLE:
                         replen=1;
                         ret = grib_unpack_double(a,&dval,&replen);
-                        sprintf(val,"%g",dval);
+                        sprintf(val,"%.12g",dval);
                         break;
                     case GRIB_TYPE_LONG:
                         replen=1;
@@ -141,10 +167,9 @@ int grib_recompose_name(grib_handle* h, grib_accessor *observer, const char* una
     return GRIB_SUCCESS;
 }
 
-int grib_accessor_print(grib_accessor* a,int has_rank,const char* name,int type,const char* format,const char* separator,int maxcols,int* newline,FILE* out)
+int grib_accessor_print(grib_accessor* a,const char* name,int type,const char* format,const char* separator,int maxcols,int* newline,FILE* out)
 {
     size_t size=0;
-    char val[1024] = {0,};
     char* sval=NULL;
     char* p=NULL;
     double* dval=0;
@@ -154,10 +179,10 @@ int grib_accessor_print(grib_accessor* a,int has_rank,const char* name,int type,
     int ret=0;
     char* myformat=NULL;
     char* myseparator=NULL;
-    char double_format[]="%g"; /* default format for printing double keys */
+    char double_format[]="%.12g"; /* default format for printing double keys */
     char long_format[]="%ld";  /* default format for printing integer keys */
     char default_separator[]=" ";
-    grib_handle* h=a->parent->h;
+    grib_handle* h=grib_handle_of_accessor(a);
 
     if (type==-1) type=grib_accessor_get_native_type(a);
     switch (type) {
@@ -169,7 +194,7 @@ int grib_accessor_print(grib_accessor* a,int has_rank,const char* name,int type,
     case GRIB_TYPE_DOUBLE:
         myformat= format ? (char*)format : double_format;
         myseparator= separator ? (char*)separator : default_separator;
-        if (name[0]=='/' || has_rank!=0) {
+        if (name[0]=='/' || name[0]=='#') {
             long count;
             ret=grib_value_count(a,&count);
             size=count;
@@ -177,7 +202,7 @@ int grib_accessor_print(grib_accessor* a,int has_rank,const char* name,int type,
             ret=_grib_get_size(h,a,&size);
         }
         dval=(double*)grib_context_malloc_clear(h->context,sizeof(double)*size);
-        if (name[0]=='/' || has_rank!=0) {
+        if (name[0]=='/' || name[0]=='#') {
             replen=size;
             ret=grib_unpack_double(a,dval,&replen);
         } else {
@@ -205,7 +230,7 @@ int grib_accessor_print(grib_accessor* a,int has_rank,const char* name,int type,
     case GRIB_TYPE_LONG:
         myformat= format ? (char*)format : long_format;
         myseparator= separator ? (char*)separator : default_separator;
-        if (name[0]=='/' || has_rank!=0) {
+        if (name[0]=='/' || name[0]=='#') {
             long count;
             ret=grib_value_count(a,&count);
             size=count;
@@ -213,7 +238,7 @@ int grib_accessor_print(grib_accessor* a,int has_rank,const char* name,int type,
             ret=_grib_get_size(h,a,&size);
         }
         lval=(long*)grib_context_malloc_clear(h->context,sizeof(long)*size);
-        if (name[0]=='/' || has_rank!=0) {
+        if (name[0]=='/' || name[0]=='#') {
             replen=size;
             ret=grib_unpack_long(a,lval,&replen);
         } else {
@@ -253,10 +278,9 @@ int grib_accessor_print(grib_accessor* a,int has_rank,const char* name,int type,
     return ret;
 }
 
-int grib_accessors_list_print(grib_accessors_list* al,const char* name,int type,const char* format,const char* separator,int maxcols,int* newline,FILE* out)
+int grib_accessors_list_print(grib_handle* h,grib_accessors_list* al,const char* name,int type,const char* format,const char* separator,int maxcols,int* newline,FILE* out)
 {
     size_t size=0,len=0,replen=0;
-    char val[1024] = {0,};
     char* sval=NULL;
     char* p=NULL;
     double* dval=0;
@@ -266,10 +290,9 @@ int grib_accessors_list_print(grib_accessors_list* al,const char* name,int type,
     int ret=0;
     char* myformat=NULL;
     char* myseparator=NULL;
-    char double_format[]="%g"; /* default format for printing double keys */
+    char double_format[]="%.12g"; /* default format for printing double keys */
     char long_format[]="%ld";  /* default format for printing integer keys */
     char default_separator[]=" ";
-    grib_handle* h=al->accessor->parent->h;
     grib_accessor* a=al->accessor;
 
     if (type==-1) type=grib_accessor_get_native_type(al->accessor);
@@ -284,7 +307,7 @@ int grib_accessors_list_print(grib_accessors_list* al,const char* name,int type,
         } else {
             int i=0;
             int cols=0;
-            cvals=grib_context_malloc_clear(h->context,sizeof(char*)*size);
+            cvals=(char**)grib_context_malloc_clear(h->context,sizeof(char*)*size);
             grib_accessors_list_unpack_string(al,cvals,&size);
             for (i=0;i<size;i++) {
                 *newline=1;
@@ -378,10 +401,11 @@ int grib_recompose_print(grib_handle* h, grib_accessor *observer, const char* un
     int maxcolsd=8;
     int maxcols;
     int newline=1;
+    const size_t uname_len = strlen(uname);
 
     maxcols=maxcolsd;
     loc[0] = 0 ;
-    for(i=0;i<strlen(uname);i++)
+    for(i=0; i<uname_len; i++)
     {
         if(mode > -1)
         {
@@ -424,7 +448,7 @@ int grib_recompose_print(grib_handle* h, grib_accessor *observer, const char* un
                         return GRIB_NOT_FOUND;
                     }
                 } else {
-                    ret=grib_accessors_list_print(al,loc,type,format,separator,maxcols,&newline,out);
+                    ret=grib_accessors_list_print(h,al,loc,type,format,separator,maxcols,&newline,out);
 
                     if(ret != GRIB_SUCCESS)
                     {
@@ -529,48 +553,45 @@ int grib_yyerror(const char* msg)
 {
     grib_context_log(grib_parser_context, GRIB_LOG_ERROR,
             "grib_parser: %s at line %d of %s", msg, grib_yylineno + 1,parse_file);
+    grib_context_log(grib_parser_context, GRIB_LOG_ERROR,
+            "ecCodes Version: %s", ECCODES_VERSION_STR);
     error = 1;
     return 1;
 }
 
-void grib_parser_include(const char* fname)
+void grib_parser_include(const char* included_fname)
 {
     FILE *f = NULL;
-    char path[1204];
     char* io_buffer=0;
     /* int i; */
     Assert(top < MAXINCLUDE);
-    Assert(fname);
+    Assert(included_fname);
 
     if(parse_file == 0)
     {
-        parse_file = fname;
+        parse_file = included_fname;
         Assert(top == 0);
     }
     else
     {
-        const char *p = parse_file;
-        const char *q = NULL;
+        /* When parse_file is not NULL, it's the path of the parent file (includer) */
+        /* and 'included_fname' is the name of the file being included (includee) */
+
+        /* GRIB-796: Search for the included file in ECCODES_DEFINITION_PATH */
+        char* new_path = NULL;
+        Assert(*included_fname != '/');
+        new_path = grib_context_full_defs_path(grib_parser_context, included_fname);
+        if (!new_path) {
+            fprintf(stderr, "ecCodes Version:       %s\nDefinition files path: %s\n",
+                    ECCODES_VERSION_STR,
+                    grib_parser_context->grib_definition_files_path);
 
-        while(*p) {
-            if(*p == '/') q = p;
-            p++;
-        }
-
-        if(!q) {
             grib_context_log(grib_parser_context, GRIB_LOG_FATAL,
-                    "grib_parser_include: path '%s' does not contain a '/'\n",fname);
+                    "grib_parser_include: Could not resolve '%s' (included in %s)", included_fname, parse_file);
+
             return;
         }
-        q++;
-
-        strncpy(path,parse_file,q-parse_file);
-        path[q-parse_file] = 0;
-        strcat(path,fname);
-
-        Assert(*fname != '/');
-
-        parse_file = path;
+        parse_file = new_path;
     }
 
     if (strcmp(parse_file,"-")==0) {
@@ -600,15 +621,14 @@ void grib_parser_include(const char* fname)
             }
             setvbuf(f,io_buffer,_IOFBF,c->io_buffer_size);
         }
-         */
-
-        grib_yyin            = f;
+        */
+        grib_yyin       = f;
         stack[top].file = f;
         stack[top].io_buffer = io_buffer;
         stack[top].name = grib_context_strdup(grib_parser_context,parse_file);
         parse_file      = stack[top].name;
         stack[top].line = grib_yylineno;
-        grib_yylineno = 0;
+        grib_yylineno   = 0;
         top++;
         /* grib_yyrestart(f); */
     }
@@ -619,7 +639,7 @@ extern int grib_yyparse(void);
 static int parse(grib_context* gc, const char* filename)
 {
     int err = 0;
-    GRIB_PTHREAD_ONCE(&once,&init);
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
     GRIB_MUTEX_LOCK(&mutex_parse);
 
 #ifdef YYDEBUG
@@ -652,7 +672,7 @@ static int parse(grib_context* gc, const char* filename)
 
 static grib_action* grib_parse_stream(grib_context* gc, const char* filename)
 {
-    GRIB_PTHREAD_ONCE(&once,&init);
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
     GRIB_MUTEX_LOCK(&mutex_stream);
 
     grib_parser_all_actions = 0;
@@ -660,7 +680,7 @@ static grib_action* grib_parse_stream(grib_context* gc, const char* filename)
     if (parse(gc,filename) == 0) {
         if (grib_parser_all_actions) {
             GRIB_MUTEX_UNLOCK(&mutex_stream)
-                    return grib_parser_all_actions;
+            return grib_parser_all_actions;
         } else {
             grib_action* ret=grib_action_create_noop(gc,filename);
             GRIB_MUTEX_UNLOCK(&mutex_stream)
@@ -674,7 +694,7 @@ static grib_action* grib_parse_stream(grib_context* gc, const char* filename)
 
 grib_concept_value* grib_parse_concept_file( grib_context* gc,const char* filename)
 {
-    GRIB_PTHREAD_ONCE(&once,&init);
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
     GRIB_MUTEX_LOCK(&mutex_concept);
 
     gc = gc ? gc : grib_context_get_default();
@@ -691,7 +711,7 @@ grib_concept_value* grib_parse_concept_file( grib_context* gc,const char* filena
 
 grib_hash_array_value* grib_parse_hash_array_file( grib_context* gc,const char* filename)
 {
-    GRIB_PTHREAD_ONCE(&once,&init);
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
     GRIB_MUTEX_LOCK(&mutex_hash_array);
 
     gc = gc ? gc : grib_context_get_default();
@@ -710,7 +730,7 @@ grib_rule* grib_parse_rules_file( grib_context* gc,const char* filename)
 {
     if (!gc) gc=grib_context_get_default();
 
-    GRIB_PTHREAD_ONCE(&once,&init);
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
     GRIB_MUTEX_LOCK(&mutex_rules);
 
     gc = gc ? gc : grib_context_get_default();
@@ -729,7 +749,7 @@ grib_action* grib_parse_file( grib_context* gc,const char* filename)
 {
     grib_action_file* af;
 
-    GRIB_PTHREAD_ONCE(&once,&init);
+    GRIB_MUTEX_INIT_ONCE(&once,&init);
     GRIB_MUTEX_LOCK(&mutex_file);
 
     af =0;
@@ -774,7 +794,8 @@ grib_action* grib_parse_file( grib_context* gc,const char* filename)
     return af->root;
 }
 
-int grib_type_to_int(char id) {
+int grib_type_to_int(char id)
+{
     switch (id) {
     case 'd':
         return GRIB_TYPE_DOUBLE;
diff --git a/src/grib_query.c b/src/grib_query.c
index d655ea6..6dff5c4 100644
--- a/src/grib_query.c
+++ b/src/grib_query.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -17,485 +17,482 @@
 
 #if 0
 GRIB_INLINE static int strcmp(const char* a,const char* b) {
-	if (*a != *b) return 1;
-	while((*a!=0 && *b!=0) &&  *(a) == *(b) ) {a++;b++;}
-	return (*a==0 && *b==0) ? 0 : 1;
+    if (*a != *b) return 1;
+    while((*a!=0 && *b!=0) &&  *(a) == *(b) ) {a++;b++;}
+    return (*a==0 && *b==0) ? 0 : 1;
 }
 #endif
 
-
 static int matching(grib_accessor* a,const char* name,const char* name_space)
 {
-	int i = 0;
-	while(i < MAX_ACCESSOR_NAMES)
-	{
-		if(a->all_names[i] == 0) return 0;
-
-		if((strcmp(name,a->all_names[i]) == 0) &&
-				((name_space == NULL) || (a->all_name_spaces[i] != NULL &&
-										  strcmp(a->all_name_spaces[i],name_space) == 0))
-		  )
-			return 1;
-		i++;
-	}
-	return 0;
+    int i = 0;
+    while(i < MAX_ACCESSOR_NAMES)
+    {
+        if(a->all_names[i] == 0) return 0;
+
+        if((strcmp(name,a->all_names[i]) == 0) &&
+                ((name_space == NULL) || (a->all_name_spaces[i] != NULL &&
+                        strcmp(a->all_name_spaces[i],name_space) == 0))
+        )
+            return 1;
+        i++;
+    }
+    return 0;
 }
 
-
 static grib_accessor* search(grib_section* s,const char* name,const char* name_space)
 {
+    grib_accessor* match = NULL;
 
-	grib_accessor* match = NULL;
-
+    grib_accessor* a = s ? s->block->first : NULL;
+    grib_accessor* b=NULL;
 
-	grib_accessor* a = s ? s->block->first : NULL;
-	grib_accessor* b=NULL;
+    if(!a || !s) return NULL;
 
-	if(!a || !s) return NULL;
-
-	while(a)
-	{
-		grib_section* sub = a->sub_section;
+    while(a)
+    {
+        grib_section* sub = a->sub_section;
 
-		if(matching(a,name,name_space)) 
-			match = a;
+        if(matching(a,name,name_space))
+            match = a;
 
-		if((b = search(sub,name,name_space) ) != NULL )
-			match = b;
+        if((b = search(sub,name,name_space) ) != NULL )
+            match = b;
 
-		a = a->next;
-	}
+        a = a->next;
+    }
 
-	return match;
+    return match;
 }
 
 static void rebuild_hash_keys (grib_handle* h,grib_section* s)
 {
-	grib_accessor* a = s ? s->block->first : NULL;
-
-	while(a)
-	{
-		grib_section* sub = a->sub_section;
-		int i=0;
-		int id=-1;
-		const char *p;
-		Assert(h == a->parent->h);
-
-		while(i<MAX_ACCESSOR_NAMES && ((p = a->all_names[i]) != NULL)) {
-			if(*p != '_')   {
-				id=grib_hash_keys_get_id(a->parent->h->context->keys,p);
-
-				if (a->same != a && i==0) {
-					a->same=a->parent->h->accessors[id];
-					a->parent->h->accessors[id]=a;
-					Assert(a->same != a);
-				}
-
-			}
-			i++;
-		}
-		rebuild_hash_keys(h,sub);
-		a = a->next;
-	}
+    grib_accessor* a = s ? s->block->first : NULL;
+
+    while(a)
+    {
+        grib_section* sub = a->sub_section;
+        int i=0;
+        int id=-1;
+        const char *p;
+        Assert(h == grib_handle_of_accessor(a));
+
+        while(i<MAX_ACCESSOR_NAMES && ((p = a->all_names[i]) != NULL)) {
+            if(*p != '_')   {
+                id=grib_hash_keys_get_id(a->context->keys,p);
+
+                if (a->same != a && i==0) {
+                    a->same=grib_handle_of_accessor(a)->accessors[id];
+                    grib_handle_of_accessor(a)->accessors[id]=a;
+                    Assert(a->same != a);
+                }
+
+            }
+            i++;
+        }
+        rebuild_hash_keys(h,sub);
+        a = a->next;
+    }
 }
 
 static grib_accessor* search_and_cache(grib_handle* h, const char* name,const char *the_namespace);
 
 static grib_accessor* _search_and_cache(grib_handle* h, const char* name,const char *the_namespace)
 {
-  if (h->use_trie)
-  {
-    grib_accessor* a = NULL;
-    int id=-1;
-
-    if (h->trie_invalid && h->kid == NULL)
+    if (h->use_trie)
     {
-      int i=0;
-      for (i=0;i<ACCESSORS_ARRAY_SIZE;i++)
-        h->accessors[i]=NULL;
+        grib_accessor* a = NULL;
+        int id=-1;
 
-      if (h->root)
-        rebuild_hash_keys(h,h->root);
+        if (h->trie_invalid && h->kid == NULL)
+        {
+            int i=0;
+            for (i=0;i<ACCESSORS_ARRAY_SIZE;i++)
+                h->accessors[i]=NULL;
 
-      h->trie_invalid=0;
-      id = grib_hash_keys_get_id(h->context->keys,name);
+            if (h->root)
+                rebuild_hash_keys(h,h->root);
 
-    } else {
-      id = grib_hash_keys_get_id(h->context->keys,name);
+            h->trie_invalid=0;
+            id = grib_hash_keys_get_id(h->context->keys,name);
 
-      if ((a=h->accessors[id])!=NULL &&
-          (the_namespace==NULL || matching(a,name,the_namespace) ))
-        return a;
-    }
+        } else {
+            id = grib_hash_keys_get_id(h->context->keys,name);
 
-    a = search(h->root,name,the_namespace);
-    h->accessors[id] = a;
+            if ((a=h->accessors[id])!=NULL &&
+                    (the_namespace==NULL || matching(a,name,the_namespace) ))
+                return a;
+        }
 
-    return a;
-  } else {
-    return search(h->root,name,the_namespace);
-  }
+        a = search(h->root,name,the_namespace);
+        h->accessors[id] = a;
 
+        return a;
+    } else {
+        return search(h->root,name,the_namespace);
+    }
 }
 
 char* get_rank(const char* name,long *rank) {
-  char* p=(char*)name;
-  char* end=p;
-  char* ret=NULL;
-  size_t len;
-
-  *rank=-1;
-  while (*p!=0 && *p!='#') p++;
-
-  if (*p=='#') {
-    *rank=strtol(++p,&end,10);
-    if ( *end != 0) {
-      *rank=-1;
-    } else {
-      grib_context* c=grib_context_get_default();
-      len=p-name;
-      ret=grib_context_malloc_clear(c,len);
-      memcpy(ret,name,len-1);
+    char* p=(char*)name;
+    char* end=p;
+    char* ret=NULL;
+
+    *rank=-1;
+
+    if (*p=='#') {
+        *rank=strtol(++p,&end,10);
+        if ( *end != '#') {
+            *rank=-1;
+        } else {
+            grib_context* c=grib_context_get_default();
+            end++;
+            ret=grib_context_strdup(c,end);
+        }
     }
-  }
-  return ret;
+    return ret;
 }
 
-char* get_condition(const char* name,codes_condition* condition) {
-  char* equal=(char*)name;
-  char* endCondition=NULL;
-  char* startLeft=NULL;
-  char* str=NULL;
-  char* end=NULL;
-  size_t len;
-  long lval;
-  double dval;
-  grib_context* c=grib_context_get_default();
+char* get_condition(const char* name,codes_condition* condition)
+{
+    char* equal=(char*)name;
+    char* endCondition=NULL;
+    char* str=NULL;
+    char* end=NULL;
+    long lval;
+    grib_context* c=grib_context_get_default();
 
-  condition->rightType=GRIB_TYPE_UNDEFINED;
+    condition->rightType=GRIB_TYPE_UNDEFINED;
 
-  Assert(name[0]=='/');
+    Assert(name[0]=='/');
 
-  while (*equal!=0 && *equal!='=') equal++;
-  if (*equal==0) return NULL;
+    while (*equal!=0 && *equal!='=') equal++;
+    if (*equal==0) return NULL;
 
-  endCondition=equal;
-  while (*endCondition!=0 && *endCondition!='/') endCondition++;
-  if (*endCondition==0) return NULL;
+    endCondition=equal;
+    while (*endCondition!=0 && *endCondition!='/') endCondition++;
+    if (*endCondition==0) return NULL;
 
-  str=grib_context_malloc_clear(c,strlen(name));
-  memcpy(str,equal+1,endCondition-equal-1);
+    str=(char*)grib_context_malloc_clear(c,strlen(name));
+    memcpy(str,equal+1,endCondition-equal-1);
 
-  end=NULL;
-  lval=strtol(str,&end,10);
-  if (*end != 0) {
-    dval=strtod(str,&end);
+    end=NULL;
+    lval=strtol(str,&end,10);
     if (*end != 0) {
-      condition->rightType=GRIB_TYPE_DOUBLE;
-      condition->rightDouble=dval;
+        double dval;
+        dval=strtod(str,&end);
+        if (*end != 0) {
+            condition->rightType=GRIB_TYPE_DOUBLE;
+            condition->rightDouble=dval;
+        }
+    } else {
+        condition->rightType=GRIB_TYPE_LONG;
+        condition->rightLong=lval;
     }
-  } else {
-    condition->rightType=GRIB_TYPE_LONG;
-    condition->rightLong=lval;
-  }
-
-  if (condition->rightType!=GRIB_TYPE_UNDEFINED) {
-    strcpy(str,endCondition+1);
-    condition->left=grib_context_malloc_clear(c,equal-name);
-    memcpy(condition->left,name+1,equal-name-1);
-  } else {
-    grib_context_free(c,str);
-    str=NULL;
-  }
-
-  return str;
+
+    if (condition->rightType!=GRIB_TYPE_UNDEFINED) {
+        strcpy(str,endCondition+1);
+        condition->left=(char*)grib_context_malloc_clear(c,equal-name);
+        memcpy(condition->left,name+1,equal-name-1);
+    } else {
+        grib_context_free(c,str);
+        str=NULL;
+    }
+    return str;
 }
 
 static grib_accessor* _search_by_rank(grib_accessor* a,const char* name,long rank) {
-  long r=1;
-  grib_accessors_list* al=accessor_bufr_data_array_get_dataAccessors(a);
-
-  while (al) {
-    if (!strcmp(al->accessor->name,name)) {
-      if (r==rank) return al->accessor;
-      r++;
+    long r=1;
+    grib_accessors_list* al=accessor_bufr_data_array_get_dataAccessors(a);
+
+    while (al) {
+        if (!strcmp(al->accessor->name,name)) {
+            if (r==rank) return al->accessor;
+            r++;
+        }
+        al=al->next;
     }
-    al=al->next;
-  }
 
-  return NULL;
+    return NULL;
 }
 
 static grib_accessor* search_by_rank(grib_handle* h, const char* name,const char *the_namespace,long rank)
 {
-  grib_accessor* data=search_and_cache(h,"dataAccessors",the_namespace);
-  if (data) {
-    return _search_by_rank(data,name,rank);
-  } else {
-    return _search_and_cache(h,name,the_namespace);
-  }
+    grib_accessor* data=search_and_cache(h,"dataAccessors",the_namespace);
+    if (data) {
+        return _search_by_rank(data,name,rank);
+    } else {
+        return _search_and_cache(h,name,the_namespace);
+    }
 }
 
 static int condition_true(grib_accessor* a,codes_condition* condition) {
-  int ret=0;
-  size_t size=1;
-  long lval;
-  double dval;
-  switch (condition->rightType) {
+    int ret=0, err=0;
+    size_t size=1;
+    long lval=0;
+    double dval=0;
+    switch (condition->rightType) {
     case GRIB_TYPE_LONG:
-      grib_unpack_long(a,&lval,&size);
-      ret = lval==condition->rightLong ? 1 : 0;
-      break;
+        err = grib_unpack_long(a,&lval,&size);
+        if (err) ret = 0;
+        else     ret = lval==condition->rightLong ? 1 : 0;
+        break;
     case GRIB_TYPE_DOUBLE:
-      grib_unpack_double(a,&dval,&size);
-      ret = dval==condition->rightDouble ? 1 : 0;
-      break;
+        err = grib_unpack_double(a,&dval,&size);
+        if (err) ret = 0;
+        else     ret = dval==condition->rightDouble ? 1 : 0;
+        break;
     default :
-      ret=0;
-      break;
-  }
-  return ret;
+        ret=0;
+        break;
+    }
+    return ret;
 }
 
-static void search_from_accessors_list(grib_accessors_list* al,grib_accessors_list* end,const char* name,grib_accessors_list* result) {
-  while (al && al!=end && al->accessor) {
-    if (!strcmp(al->accessor->name,name))
-      grib_accessors_list_push(result,al->accessor);
-    al=al->next;
-  }
+static void search_from_accessors_list(grib_accessors_list* al,grib_accessors_list* end,const char* name,grib_accessors_list* result)
+{
+    char* accessor_name=NULL;
+    char attribute_name[200]={0,};
+    grib_accessor* accessor_result=0;
+
+    accessor_name=grib_split_name_attribute(al->accessor->context,name,attribute_name);
+
+    while (al && al!=end && al->accessor) {
+        if (strcmp(al->accessor->name,accessor_name)==0) {
+            if (attribute_name[0]) {
+                accessor_result=grib_accessor_get_attribute(al->accessor,attribute_name);
+            } else {
+                accessor_result=al->accessor;
+            }
+            if (accessor_result) {
+                grib_accessors_list_push(result,accessor_result);
+            }
+        }
+        al=al->next;
+    }
 }
 
-static void search_accessors_list_by_condition(grib_accessors_list* al,const char* name,codes_condition* condition,grib_accessors_list* result) {
-
-  grib_accessors_list* start=NULL;
-  grib_accessors_list* end=NULL;
-
-  while (al) {
-    if (!strcmp(al->accessor->name,condition->left)) {
-      if (start==NULL && condition_true(al->accessor,condition)) start=al;
-      if (start && !condition_true(al->accessor,condition)) end=al;
-    }
-    al=al->next;
-    if (start && end) {
-      search_from_accessors_list(start,end,name,result);
-      al=end;
-      start=NULL;
-      end=NULL;
+static void search_accessors_list_by_condition(grib_accessors_list* al,const char* name,codes_condition* condition,grib_accessors_list* result)
+{
+    grib_accessors_list* start=NULL;
+    grib_accessors_list* end=NULL;
+
+    while (al) {
+        if (!strcmp(al->accessor->name,condition->left)) {
+            if (start==NULL && condition_true(al->accessor,condition)) start=al;
+            if (start && !condition_true(al->accessor,condition)) end=al;
+        }
+        if (start!=NULL && ( end!=NULL || al->next==NULL) ) {
+            if (end==NULL) end=al;
+            search_from_accessors_list(start,end,name,result);
+            al=end;
+            start=NULL;
+            end=NULL;
+        }
+        al=al->next;
     }
-  }
-
 }
 
-static grib_accessors_list* search_by_condition(grib_handle* h,const char* name,codes_condition* condition) {
-  grib_accessors_list* al;
-  grib_accessors_list* result=NULL;
-  grib_accessor* data=search_and_cache(h,"dataAccessors",0);
-  if (data && condition->left) {
-    al=accessor_bufr_data_array_get_dataAccessors(data);
-    result=grib_context_malloc_clear(al->accessor->parent->h->context,sizeof(grib_accessors_list));
-    search_accessors_list_by_condition(al,name,condition,result);
-    if (!result->accessor) {
-      grib_accessors_list_delete(h->context,result);
-      result=NULL;
+static grib_accessors_list* search_by_condition(grib_handle* h,const char* name,codes_condition* condition)
+{
+    grib_accessors_list* al;
+    grib_accessors_list* result=NULL;
+    grib_accessor* data=search_and_cache(h,"dataAccessors",0);
+    if (data && condition->left) {
+        al=accessor_bufr_data_array_get_dataAccessors(data);
+        if (!al) return NULL;
+        result=(grib_accessors_list*)grib_context_malloc_clear(al->accessor->context,sizeof(grib_accessors_list));
+        search_accessors_list_by_condition(al,name,condition,result);
+        if (!result->accessor) {
+            grib_accessors_list_delete(h->context,result);
+            result=NULL;
+        }
     }
-  }
 
-  return result;
+    return result;
 }
 
-static void grib_find_same_and_push(grib_accessors_list* al,grib_accessor* a) {
-  if (a) {
-    grib_find_same_and_push(al,a->same);
-    grib_accessors_list_push(al,a);
-  }
-}
-
-grib_accessors_list* grib_find_accessors_list(grib_handle* h,const char* name) {
-  char* str=NULL;
-  grib_accessors_list* al=NULL;
-  codes_condition* condition=NULL;
-  grib_accessor* a=NULL;
-
-  if (name[0]=='/') {
-    condition=grib_context_malloc_clear(h->context,sizeof(codes_condition));
-    str=get_condition(name,condition);
-    if (str) {
-      al=search_by_condition(h,str,condition);
-      grib_context_free(h->context,str);
-      if (condition->left) grib_context_free(h->context,condition->left);
-      if (condition->rightString) grib_context_free(h->context,condition->rightString);
-    }
-    grib_context_free(h->context,condition);
-  } else if (has_rank(name)) {
-    a=grib_find_accessor(h, name);
+static void grib_find_same_and_push(grib_accessors_list* al,grib_accessor* a)
+{
     if (a) {
-      al=grib_context_malloc_clear(h->context,sizeof(grib_accessors_list));
-      grib_accessors_list_push(al,a);
+        grib_find_same_and_push(al,a->same);
+        grib_accessors_list_push(al,a);
     }
-  } else {
-    a=grib_find_accessor(h, name);
-    if (a) {
-      al=grib_context_malloc_clear(h->context,sizeof(grib_accessors_list));
-      grib_find_same_and_push(al,a);
+}
+
+grib_accessors_list* grib_find_accessors_list(grib_handle* h,const char* name)
+{
+    char* str=NULL;
+    grib_accessors_list* al=NULL;
+    codes_condition* condition=NULL;
+    grib_accessor* a=NULL;
+
+    if (name[0]=='/') {
+        condition=(codes_condition*)grib_context_malloc_clear(h->context,sizeof(codes_condition));
+        str=get_condition(name,condition);
+        if (str) {
+            al=search_by_condition(h,str,condition);
+            grib_context_free(h->context,str);
+            if (condition->left) grib_context_free(h->context,condition->left);
+            if (condition->rightString) grib_context_free(h->context,condition->rightString);
+        }
+        grib_context_free(h->context,condition);
+    } else if (name[0]=='#') {
+        a=grib_find_accessor(h, name);
+        if (a) {
+            al=(grib_accessors_list*)grib_context_malloc_clear(h->context,sizeof(grib_accessors_list));
+            grib_accessors_list_push(al,a);
+        }
+    } else {
+        a=grib_find_accessor(h, name);
+        if (a) {
+            al=(grib_accessors_list*)grib_context_malloc_clear(h->context,sizeof(grib_accessors_list));
+            grib_find_same_and_push(al,a);
+        }
     }
-  }
 
-  return al;
+    return al;
 }
 
 static grib_accessor* search_and_cache(grib_handle* h, const char* name,const char *the_namespace)
 {
-  char* str=0;
-  grib_accessor* a=NULL;
-  codes_condition* condition=NULL;
-  long rank;
-
-  str=get_rank(name,&rank);
-  if (rank>0) {
-    a=search_by_rank(h,str,the_namespace,rank);
-    grib_context_free(h->context,str);
-  } else {
-    a=_search_and_cache(h,name,the_namespace);
-  }
-
-  return a;
+    char* str=0;
+    grib_accessor* a=NULL;
+    long rank;
+
+    if (name[0]=='#') {
+        str=get_rank(name,&rank);
+        a=search_by_rank(h,str,the_namespace,rank);
+        grib_context_free(h->context,str);
+    } else {
+        a=_search_and_cache(h,name,the_namespace);
+    }
+
+    return a;
 }
 
 static grib_accessor* _grib_find_accessor(grib_handle* h, const char* name)
 {
-	grib_accessor* a = NULL;
-	char* p=NULL;
-	char* basename=NULL;
-	char name_space[1024];
-	int i=0,len=0;
-
-	p=(char*)name;
-	Assert(name);
-
-	while ( *p != '.' && *p != '\0' ) p++;
-	if ( *p == '.' ) {
-		basename=p+1;
-		p--;
-		i=0;
-		len=p-name+1;
+    grib_accessor* a = NULL;
+    char* p = (char*)name;
+    DebugAssert(name);
 
-		for ( i=0;i<len;i++ ) name_space[i] = *(name+i);
+    while ( *p != '.' && *p != '\0' ) p++;
+    if ( *p == '.' ) {
+        int i=0,len=0;
+        char name_space[1024];
+        char* basename=NULL;
+        basename=p+1;
+        p--;
+        i=0;
+        len=p-name+1;
 
-		name_space[len]='\0';
+        for ( i=0;i<len;i++ ) name_space[i] = *(name+i);
 
-		a = search_and_cache(h,basename,name_space);
-	} else {
-		a = search_and_cache(h,name,NULL);
-	}
+        name_space[len]='\0';
 
-	if(a == NULL && h->main)
-		a = grib_find_accessor(h->main,name);
+        a = search_and_cache(h,basename,name_space);
+    } else {
+        a = search_and_cache(h,name,NULL);
+    }
 
-	return a;
-}
+    if(a == NULL && h->main)
+        a = grib_find_accessor(h->main,name);
 
-int has_rank(const char* name) {
-  char* p=(char*)name;
-  while (*p!=0) {
-    if (*p == '#') return 1;
-    p++;
-  }
-  return 0;
+    return a;
 }
 
-char* grib_split_name_attribute(grib_context* c,const char* name,char* attribute_name) {
-  /*returns accessor name and attribute*/
-  char* p=0;
-  size_t size=0;
-  char* accessor_name=NULL;
-  p=(char*)name;
-  while ( *(p+1) != '\0' && ( *p != '-' || *(p+1)!= '>' ) ) p++;
-  if (*(p+1) == '\0') {
-    *attribute_name=0;
-    return (char*)name;
-  }
-  size=p-name;
-  accessor_name=grib_context_malloc_clear(c,size+1);
-  accessor_name=memcpy(accessor_name,name,size);
-  p+=2;
-  strcpy(attribute_name,p);
-  return accessor_name;
+char* grib_split_name_attribute(grib_context* c,const char* name,char* attribute_name)
+{
+    /*returns accessor name and attribute*/
+    char* p=0;
+    size_t size=0;
+    char* accessor_name=NULL;
+    p=(char*)name;
+    while ( *(p+1) != '\0' && ( *p != '-' || *(p+1)!= '>' ) ) p++;
+    if (*(p+1) == '\0') {
+        *attribute_name=0;
+        return (char*)name;
+    }
+    size=p-name;
+    accessor_name=(char*)grib_context_malloc_clear(c,size+1);
+    accessor_name=(char*)memcpy(accessor_name,name,size);
+    p+=2;
+    strcpy(attribute_name,p);
+    return accessor_name;
 }
 
 grib_accessor* grib_find_accessor(grib_handle* h, const char* name)
 {
-  char* accessor_name=NULL;
-  char attribute_name[512]={0,};
-  grib_accessor* a=NULL;
-  grib_accessor* aret=NULL;
+    grib_accessor* aret = NULL;
 
-  accessor_name=grib_split_name_attribute(h->context,name,attribute_name);
+    if (h->product_kind == PRODUCT_GRIB) {
+        aret = _grib_find_accessor(h, name); /* ECC-144: Performance */
+    }
+    else {
+        char* accessor_name=NULL;
+        char attribute_name[512]={0,};
+        grib_accessor* a=NULL;
 
-  a=_grib_find_accessor(h,accessor_name);
+        accessor_name=grib_split_name_attribute(h->context,name,attribute_name);
 
-  if (*attribute_name==0) {
-    aret=a;
-  } else if (a) {
-    aret=grib_accessor_get_attribute(a,attribute_name);
-    grib_context_free(h->context,accessor_name);
-  }
+        a=_grib_find_accessor(h,accessor_name);
 
-  return aret;
+        if (*attribute_name==0) {
+            aret=a;
+        } else if (a) {
+            aret=grib_accessor_get_attribute(a,attribute_name);
+            grib_context_free(h->context,accessor_name);
+        }
+    }
+    return aret;
 }
 
 grib_accessor* grib_find_attribute(grib_handle* h, const char* name,const char* attr_name, int* err)
 {
     grib_accessor* a = NULL;
     grib_accessor* act = NULL;
-	int id=0;
 
     if ((a = grib_find_accessor(h, name))==NULL) {
-		*err=GRIB_NOT_FOUND;
-		return NULL;
-	}
+        *err=GRIB_NOT_FOUND;
+        return NULL;
+    }
 
     if((act=grib_accessor_get_attribute(a,attr_name))==NULL) {
-		*err=GRIB_ATTRIBUTE_NOT_FOUND;
-		return NULL;
-	}
-	return act;
+        *err=GRIB_ATTRIBUTE_NOT_FOUND;
+        return NULL;
+    }
+    return act;
 }
 
 /* Only look in trie. Used only in alias. Should not be used in other cases.*/
 grib_accessor* grib_find_accessor_fast(grib_handle* h, const char* name)
 {
-	grib_accessor* a = NULL;
-	char* p=NULL;
-	char* basename=NULL;
-	char name_space[1024];
-	int i=0,len=0;
-
-	p=(char*)name;
+    grib_accessor* a = NULL;
+    char* p = (char*)name;
 
-	while ( *p != '.' && *p != '\0' ) p++;
-	if ( *p == '.' ) {
-		basename=p+1;
-		p--;
-		i=0;
-		len=p-name+1;
+    while ( *p != '.' && *p != '\0' ) p++;
+    if ( *p == '.' ) {
+        int i=0,len=0;
+        char name_space[1024];
+        p--;
+        i=0;
+        len=p-name+1;
 
-		for ( i=0;i<len;i++ ) name_space[i] = *(name+i);
+        for ( i=0;i<len;i++ ) name_space[i] = *(name+i);
 
-		name_space[len]='\0';
+        name_space[len]='\0';
 
-		a = h->accessors[grib_hash_keys_get_id(h->context->keys,name)];
-		if(a && !matching(a,name,name_space))
-			a = NULL;
+        a = h->accessors[grib_hash_keys_get_id(h->context->keys,name)];
+        if(a && !matching(a,name,name_space))
+            a = NULL;
 
-	} else {
-		a = h->accessors[grib_hash_keys_get_id(h->context->keys,name)];
-	}
+    } else {
+        a = h->accessors[grib_hash_keys_get_id(h->context->keys,name)];
+    }
 
-	if(a == NULL && h->main)
-		a = grib_find_accessor_fast(h->main,name);
+    if(a == NULL && h->main)
+        a = grib_find_accessor_fast(h->main,name);
 
-	return a;
+    return a;
 }
-
-
-
diff --git a/src/grib_rules.c b/src/grib_rules.c
index e15a21b..1f7e85b 100644
--- a/src/grib_rules.c
+++ b/src/grib_rules.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_sarray.c b/src/grib_sarray.c
index 8337f21..12c51c3 100644
--- a/src/grib_sarray.c
+++ b/src/grib_sarray.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -16,78 +16,84 @@
 
 #include "grib_api_internal.h"
 
-grib_sarray* grib_sarray_new(grib_context* c,size_t size,size_t incsize) {
-  grib_sarray* v=NULL;
-  if (!c) c=grib_context_get_default();
-  v=(grib_sarray*)grib_context_malloc_clear(c,sizeof(grib_sarray));
-  if (!v) {
-    grib_context_log(c,GRIB_LOG_ERROR,
-          "grib_sarray_new unable to allocate %d bytes\n",sizeof(grib_sarray));
-    return NULL;
-  }
-  v->size=size;
-  v->n=0;
-  v->incsize=incsize;
-  v->v=(char**)grib_context_malloc_clear(c,sizeof(char*)*size);
-  if (!v->v) {
-    grib_context_log(c,GRIB_LOG_ERROR,
-          "grib_sarray_new unable to allocate %d bytes\n",sizeof(char*)*size);
-    return NULL;
-  }
-  return v;
+grib_sarray* grib_sarray_new(grib_context* c,size_t size,size_t incsize)
+{
+    grib_sarray* v=NULL;
+    if (!c) c=grib_context_get_default();
+    v=(grib_sarray*)grib_context_malloc_clear(c,sizeof(grib_sarray));
+    if (!v) {
+        grib_context_log(c,GRIB_LOG_ERROR,
+                "grib_sarray_new unable to allocate %d bytes\n",sizeof(grib_sarray));
+        return NULL;
+    }
+    v->size=size;
+    v->n=0;
+    v->incsize=incsize;
+    v->v=(char**)grib_context_malloc_clear(c,sizeof(char*)*size);
+    if (!v->v) {
+        grib_context_log(c,GRIB_LOG_ERROR,
+                "grib_sarray_new unable to allocate %d bytes\n",sizeof(char*)*size);
+        return NULL;
+    }
+    return v;
 }
 
-grib_sarray* grib_sarray_resize(grib_context* c,grib_sarray* v) {
-  int newsize=v->incsize+v->size;
+grib_sarray* grib_sarray_resize(grib_context* c,grib_sarray* v)
+{
+    int newsize=v->incsize+v->size;
 
-  if (!c) c=grib_context_get_default();
+    if (!c) c=grib_context_get_default();
 
-  v->v=(char**)grib_context_realloc(c,v->v,newsize*sizeof(char*));
-  v->size=newsize;
-  if (!v->v) {
-    grib_context_log(c,GRIB_LOG_ERROR,
-          "grib_sarray_resize unable to allocate %d bytes\n",sizeof(char*)*newsize);
-    return NULL;
-  }
-  return v;
+    v->v=(char**)grib_context_realloc(c,v->v,newsize*sizeof(char*));
+    v->size=newsize;
+    if (!v->v) {
+        grib_context_log(c,GRIB_LOG_ERROR,
+                "grib_sarray_resize unable to allocate %d bytes\n",sizeof(char*)*newsize);
+        return NULL;
+    }
+    return v;
 }
 
-grib_sarray* grib_sarray_push(grib_context* c,grib_sarray* v,char* val) {
-  size_t start_size=100;
-  size_t start_incsize=100;
-  if (!v) v=grib_sarray_new(c,start_size,start_incsize);
+grib_sarray* grib_sarray_push(grib_context* c,grib_sarray* v,char* val)
+{
+    size_t start_size=100;
+    size_t start_incsize=100;
+    if (!v) v=grib_sarray_new(c,start_size,start_incsize);
 
-  if (v->n >= v->size) v=grib_sarray_resize(c,v);
-  v->v[v->n]=val;
-  v->n++;
-  return v;
+    if (v->n >= v->size) v=grib_sarray_resize(c,v);
+    v->v[v->n]=val;
+    v->n++;
+    return v;
 }
 
-void grib_sarray_delete(grib_context* c,grib_sarray* v) {
-  if (!v) return;
-  if (!c) grib_context_get_default();
-  if (v->v) grib_context_free(c,v->v);
-  grib_context_free(c,v);
+void grib_sarray_delete(grib_context* c,grib_sarray* v)
+{
+    if (!v) return;
+    if (!c) grib_context_get_default();
+    if (v->v) grib_context_free(c,v->v);
+    grib_context_free(c,v);
 }
 
-void grib_sarray_delete_content(grib_context* c,grib_sarray* v) {
-  int i;
-  if (!v | !v->v) return;
-  if (!c) grib_context_get_default();
-  for (i=0;i<v->n;i++) {
-    if (v->v[i]) grib_context_free(c,v->v[i]);
-    v->v[i]=0;
-  }
-  v->n=0;
+void grib_sarray_delete_content(grib_context* c,grib_sarray* v)
+{
+    int i;
+    if (!v | !v->v) return;
+    if (!c) grib_context_get_default();
+    for (i=0;i<v->n;i++) {
+        if (v->v[i]) grib_context_free(c,v->v[i]);
+        v->v[i]=0;
+    }
+    v->n=0;
 }
 
-char** grib_sarray_get_array(grib_context* c,grib_sarray* v) {
-  char** ret;
-  int i;
-  if (!v) return NULL;
-  ret=(char**)grib_context_malloc_clear(c,sizeof(char*)*v->n);
-  for (i=0;i<v->n;i++) ret[i]=v->v[i];
-  return ret;
+char** grib_sarray_get_array(grib_context* c,grib_sarray* v)
+{
+    char** ret;
+    int i;
+    if (!v) return NULL;
+    ret=(char**)grib_context_malloc_clear(c,sizeof(char*)*v->n);
+    for (i=0;i<v->n;i++) ret[i]=v->v[i];
+    return ret;
 }
 
 size_t grib_sarray_used_size(grib_sarray* v) { return v->n;}
diff --git a/src/grib_scaling.c b/src/grib_scaling.c
index d1c6b51..7376303 100644
--- a/src/grib_scaling.c
+++ b/src/grib_scaling.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -12,160 +12,148 @@
  *  Enrico Fucile
  **************************************/
 
-
 #include "grib_api_internal.h"
 
 #define GRIB_EPSILON  10E-12
 
 double grib_power(long s,long n)
 {
-  double divisor = 1.0;
-  while(s < 0)
-  {
-    divisor /= n;
-    s++;
-  }
-  while(s > 0)
-  {
-    divisor *= n;
-    s--;
-  }
-  return divisor;
+    double divisor = 1.0;
+    while(s < 0)
+    {
+        divisor /= n;
+        s++;
+    }
+    while(s > 0)
+    {
+        divisor *= n;
+        s--;
+    }
+    return divisor;
 }
 
 long grib_get_binary_scale_fact(double max, double min, long bpval,int *ret)
 {
-
-  double range         = max - min;
-  double  zs           = 1;
-  long          scale  = 0;
-  const long last = 127; /* Depends on edition, should be parameter */
-
-  unsigned long maxint = grib_power(bpval,2) - 1;
-  double dmaxint=(double)maxint;
-  
-  *ret=0;
-
-  Assert (bpval >= 1);
-/*
-  printf("---- Maxint %ld range=%g\n",maxint,range);
-*/
-  if(range == 0)
-    return 0;
-
-  /* range -= 1e-10; */
-  while( (range * zs)  <= dmaxint) {
-    scale--;
-    zs *= 2;
-  }
-
-  while( (range * zs ) > dmaxint) {
-    scale++;
-    zs /= 2;
-  }
-
-  while( (unsigned long)(range * zs + 0.5)  <= maxint) {
-    scale--;
-    zs *= 2;
-  }
-
-  while( (unsigned long)(range * zs + 0.5) > maxint) {
-    scale++;
-    zs /= 2;
-  }
-
-  if (scale < -last) {
-	  *ret=GRIB_UNDERFLOW;
-	  /*printf("grib_get_binary_scale_fact: max=%g min=%g\n",max,min);*/
-	  scale = -last;
-  }
-  Assert(scale <= last);
-
-  return scale;
-
+    double range         = max - min;
+    double  zs           = 1;
+    long          scale  = 0;
+    const long last = 127; /* Depends on edition, should be parameter */
+
+    unsigned long maxint = grib_power(bpval,2) - 1;
+    double dmaxint=(double)maxint;
+
+    *ret=0;
+
+    Assert (bpval >= 1);
+    /*  printf("---- Maxint %ld range=%g\n",maxint,range);      */
+    if(range == 0)
+        return 0;
+
+    /* range -= 1e-10; */
+    while( (range * zs)  <= dmaxint) {
+        scale--;
+        zs *= 2;
+    }
+
+    while( (range * zs ) > dmaxint) {
+        scale++;
+        zs /= 2;
+    }
+
+    while( (unsigned long)(range * zs + 0.5)  <= maxint) {
+        scale--;
+        zs *= 2;
+    }
+
+    while( (unsigned long)(range * zs + 0.5) > maxint) {
+        scale++;
+        zs /= 2;
+    }
+
+    if (scale < -last) {
+        *ret=GRIB_UNDERFLOW;
+        /*printf("grib_get_binary_scale_fact: max=%g min=%g\n",max,min);*/
+        scale = -last;
+    }
+    Assert(scale <= last);
+
+    return scale;
 }
 
 long grib_get_bits_per_value(double max, double min, long binary_scale_factor)
 {
+    double range         = max - min;
+    double  zs           = 1;
+    long          scale  = 0;
+    const long last = 127; /* Depends on edition, should be parameter */
 
-  double range         = max - min;
-  double  zs           = 1;
-  long          scale  = 0;
-  const long last = 127; /* Depends on edition, should be parameter */
+    unsigned long maxint = grib_power(binary_scale_factor,2) - 1;
+    double dmaxint=(double)maxint;
 
-  unsigned long maxint = grib_power(binary_scale_factor,2) - 1;
-  double dmaxint=(double)maxint;
+    if (maxint==0) maxint=1;
 
-  if (maxint==0) maxint=1;
+    /*  printf("---- Maxint %ld range=%g\n",maxint,range);   */
+    if(range == 0)
+        return 0;
 
-/*
-  printf("---- Maxint %ld range=%g\n",maxint,range);
-*/
-  if(range == 0)
-    return 0;
-
-  /* range -= 1e-10; */
-  while( (range * zs)  <= dmaxint) { scale--;zs *= 2;}
-
-  while( (range * zs ) > dmaxint) {scale++;zs /= 2;}
+    /* range -= 1e-10; */
+    while( (range * zs)  <= dmaxint) { scale--;zs *= 2;}
 
-  while( (unsigned long)(range * zs + 0.5)  <= maxint) {
-    scale--;
-    zs *= 2;
-  }
+    while( (range * zs ) > dmaxint) {scale++;zs /= 2;}
 
-  while( (unsigned long)(range * zs + 0.5) > maxint) {
-    scale++;
-    zs /= 2;
-  }
+    while( (unsigned long)(range * zs + 0.5)  <= maxint) {
+        scale--;
+        zs *= 2;
+    }
 
-  Assert(scale >= -last && scale <= last);
- /* printf("---- scale=%ld\n",scale);*/
+    while( (unsigned long)(range * zs + 0.5) > maxint) {
+        scale++;
+        zs /= 2;
+    }
 
-  return scale;
+    Assert(scale >= -last && scale <= last);
+    /* printf("---- scale=%ld\n",scale);*/
 
+    return scale;
 }
 
 long grib_get_decimal_scale_fact(double max, double min, long bpval,long binary_scale)
 {
-  double range         = max - min;
-  double  zs           = 1;
-  long          scale  = 0;
-  const long last = 127; /* Depends on edition, should be parameter */
-
-  unsigned long maxint = grib_power(bpval,2) - 1;
-  double dmaxint=(double)maxint;
-
-  range*=grib_power(-binary_scale,2);
-
-  Assert (bpval >= 1);
-  if(range == 0)
-    return 0;
-
-  while( (range * zs ) > dmaxint) {
-    scale--;
-    zs /= 10;
-  }
-  while( (range * zs)  <= dmaxint) {
-    scale++;
-    zs *= 10;
-  }
-
-  while( (unsigned long)(range * zs + 0.5) > maxint) {
-    scale--;
-    zs /= 10;
-  }
-  while( (unsigned long)(range * zs + 0.5)  <= maxint) {
-    scale++;
-    zs *= 10;
-  }
+    double range         = max - min;
+    double  zs           = 1;
+    long          scale  = 0;
+    const long last = 127; /* Depends on edition, should be parameter */
+
+    unsigned long maxint = grib_power(bpval,2) - 1;
+    double dmaxint=(double)maxint;
+
+    range*=grib_power(-binary_scale,2);
+
+    Assert (bpval >= 1);
+    if(range == 0)
+        return 0;
+
+    while( (range * zs ) > dmaxint) {
+        scale--;
+        zs /= 10;
+    }
+    while( (range * zs)  <= dmaxint) {
+        scale++;
+        zs *= 10;
+    }
+
+    while( (unsigned long)(range * zs + 0.5) > maxint) {
+        scale--;
+        zs /= 10;
+    }
+    while( (unsigned long)(range * zs + 0.5)  <= maxint) {
+        scale++;
+        zs *= 10;
+    }
 
     /* printf("grib_api: decimal_scale_fact=%ld max=%g min=%g bits_per_value=%ld binary_scale=%ld\n",scale,max,min,bpval,binary_scale); */
 
-  Assert(scale >= -last && scale <= last);
+    Assert(scale >= -last && scale <= last);
 
-  return scale;
+    return scale;
 }
-
-
-
diff --git a/src/grib_templates.c b/src/grib_templates.c
index b1a7202..4297503 100644
--- a/src/grib_templates.c
+++ b/src/grib_templates.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -15,9 +15,9 @@
 #endif
 
 typedef struct grib_templates {
-  const char*           name;
-  const unsigned char* data;
-  size_t               size;
+    const char*           name;
+    const unsigned char* data;
+    size_t               size;
 } grib_templates;
 
 #if 1
@@ -27,111 +27,111 @@ typedef struct grib_templates {
 
 grib_handle* grib_internal_template(grib_context* c,const char* name)
 {
-  int i;
-  for(i = 0; i < NUMBER(templates); i++)
-    if(strcmp(name,templates[i].name) == 0)
-      return grib_handle_new_from_message_copy(c,templates[i].data,templates[i].size);
-  return NULL;
+    int i;
+    for(i = 0; i < NUMBER(templates); i++)
+        if(strcmp(name,templates[i].name) == 0)
+            return grib_handle_new_from_message_copy(c,templates[i].data,templates[i].size);
+    return NULL;
 }
 #else
 grib_handle* grib_internal_template(grib_context* c,const char* name)
 {
-      return NULL;
+    return NULL;
 }
 #endif
 
 static grib_handle* try_template(grib_context* c,const char* dir,const char* name)
 {
-  char path[1024];
-  grib_handle *g = NULL;
-  int err = 0;
+    char path[1024];
+    grib_handle *g = NULL;
+    int err = 0;
 
-  sprintf(path,"%s/%s.tmpl",dir,name);
+    sprintf(path,"%s/%s.tmpl",dir,name);
 
-  if (c->debug==-1) {
-    printf("GRIB_API DEBUG: try_template path='%s'\n", path);
-  }
+    if (c->debug==-1) {
+        printf("ECCODES DEBUG: try_template path='%s'\n", path);
+    }
 
-  if(access(path,F_OK) == 0)
-  {
-    FILE* f = fopen(path,"r");
-    if(!f)
+    if(access(path,F_OK) == 0)
     {
-      grib_context_log(c,GRIB_LOG_PERROR,"cannot open %s",path);
-      return NULL;
-    }
-    g = grib_handle_new_from_file(c,f,&err);
-    if (!g) {
-       grib_context_log(c,GRIB_LOG_ERROR,"cannot create GRIB handle from %s",path);
+        FILE* f = fopen(path,"r");
+        if(!f)
+        {
+            grib_context_log(c,GRIB_LOG_PERROR,"cannot open %s",path);
+            return NULL;
+        }
+        g = grib_handle_new_from_file(c,f,&err);
+        if (!g) {
+            grib_context_log(c,GRIB_LOG_ERROR,"cannot create GRIB handle from %s",path);
+        }
+        fclose(f);
     }
-    fclose(f);
-  }
 
-  return g;
+    return g;
 }
 
 static char* try_template_path(grib_context* c,const char* dir,const char* name)
 {
-  char path[1024];
+    char path[1024];
 
-  sprintf(path,"%s/%s.tmpl",dir,name);
+    sprintf(path,"%s/%s.tmpl",dir,name);
 
-  if(access(path,R_OK) == 0)
-  {
-    return grib_context_strdup(c,path);
-  }
+    if(access(path,R_OK) == 0)
+    {
+        return grib_context_strdup(c,path);
+    }
 
-  return NULL;
+    return NULL;
 }
 
 grib_handle* grib_external_template(grib_context* c,const char* name)
 {
-	const char *base = c->grib_samples_path;
-	char buffer[1024];
-	char *p = buffer;
-	grib_handle *g = NULL;
-
-	if(!base) return NULL;
-
-	while(*base)
-	{
-		if(*base == ':')
-		{
-			*p = 0;
-			g = try_template(c,buffer,name);
-			if(g) return g;
-			p = buffer;
-			base++; /*advance past delimiter*/
-		}
-		*p++ = *base++;
-	}
-
-	*p = 0;
-	return g = try_template(c,buffer,name);
+    const char *base = c->grib_samples_path;
+    char buffer[1024];
+    char *p = buffer;
+    grib_handle *g = NULL;
+
+    if(!base) return NULL;
+
+    while(*base)
+    {
+        if(*base == ':')
+        {
+            *p = 0;
+            g = try_template(c,buffer,name);
+            if(g) return g;
+            p = buffer;
+            base++; /*advance past delimiter*/
+        }
+        *p++ = *base++;
+    }
+
+    *p = 0;
+    return g = try_template(c,buffer,name);
 }
 
 char* grib_external_template_path(grib_context* c,const char* name)
 {
-	const char *base = c->grib_samples_path;
-	char buffer[1024];
-	char *p = buffer;
-	char *g = NULL;
-
-	if(!base) return NULL;
-
-	while(*base)
-	{
-		if(*base == ':')
-		{
-			*p = 0;
-			g = try_template_path(c,buffer,name);
-			if(g) return g;
-			p = buffer;
-			base++;
-		}
-		*p++ = *base++;
-	}
-
-	*p = 0;
-	return g = try_template_path(c,buffer,name);
+    const char *base = c->grib_samples_path;
+    char buffer[1024];
+    char *p = buffer;
+    char *g = NULL;
+
+    if(!base) return NULL;
+
+    while(*base)
+    {
+        if(*base == ':')
+        {
+            *p = 0;
+            g = try_template_path(c,buffer,name);
+            if(g) return g;
+            p = buffer;
+            base++;
+        }
+        *p++ = *base++;
+    }
+
+    *p = 0;
+    return g = try_template_path(c,buffer,name);
 }
diff --git a/src/grib_templates.h b/src/grib_templates.h
index 0a5bbfe..7b4d972 100644
--- a/src/grib_templates.h
+++ b/src/grib_templates.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/grib_timer.c b/src/grib_timer.c
index 3b08945..ea9f6a7 100644
--- a/src/grib_timer.c
+++ b/src/grib_timer.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -32,7 +32,7 @@ double proc_cpu()
     if(getrusage(RUSAGE_SELF,&rup) != -1)
     {
         return (rup.ru_utime.tv_sec + rup.ru_utime.tv_usec / 1000000.0 +
-               rup.ru_stime.tv_sec + rup.ru_stime.tv_usec / 1000000.0);
+                rup.ru_stime.tv_sec + rup.ru_stime.tv_usec / 1000000.0);
     }
     return clock()/(double)CLOCKS_PER_SEC;
 }
@@ -74,91 +74,91 @@ char *timename(double t)
 
 grib_timer *grib_get_timer(grib_context* c,const char* name, const char *statname, int elapsed)
 {
-  grib_timer *t = timers;
-  if (!c) c=grib_context_get_default( );
+    grib_timer *t = timers;
+    if (!c) c=grib_context_get_default( );
 
-  while(t)
-  {
-    if(strcmp(name,t->name_) == 0)
-      return t;
-    t = t->next_;
-  }
+    while(t)
+    {
+        if(strcmp(name,t->name_) == 0)
+            return t;
+        t = t->next_;
+    }
 
-  t = (grib_timer*)grib_context_malloc_clear(c,sizeof(grib_timer));
-  t->name_  = (char*) name;
-  t->context =c;
-  t->active_  = value_false;
-  t->count_   = 0;
-  t->timer_   = 0;
-  t->total_   = 0;
+    t = (grib_timer*)grib_context_malloc_clear(c,sizeof(grib_timer));
+    t->name_  = (char*) name;
+    t->context =c;
+    t->active_  = value_false;
+    t->count_   = 0;
+    t->timer_   = 0;
+    t->total_   = 0;
 
-  t->elapsed_    = elapsed; /* Whether to print CPU usage */
-  t->cpu_        = 0;
-  t->total_cpu_  = 0;
+    t->elapsed_    = elapsed; /* Whether to print CPU usage */
+    t->cpu_        = 0;
+    t->total_cpu_  = 0;
 
-  t->statname_ = 0;
-  if(statname)
-    t->statname_ = (char*)statname;
+    t->statname_ = 0;
+    if(statname)
+        t->statname_ = (char*)statname;
 
-  t->next_    = timers;
-  timers      = t;
+    t->next_    = timers;
+    timers      = t;
 
-  return t;
+    return t;
 }
 
 int grib_timer_start(grib_timer* t)
 {
-  int e = gettimeofday(&t->start_,NULL);
-  if(e != 0)
-    grib_context_log(t->context,GRIB_LOG_WARNING|GRIB_LOG_PERROR,"Error starting timer '%s'",t->name_?t->name_:"unnamed");
-  t->active_ = value_true;
-  t->cpu_    = proc_cpu();
-  return e;
+    int e = gettimeofday(&t->start_,NULL);
+    if(e != 0)
+        grib_context_log(t->context,GRIB_LOG_WARNING|GRIB_LOG_PERROR,"Error starting timer '%s'",t->name_?t->name_:"unnamed");
+    t->active_ = value_true;
+    t->cpu_    = proc_cpu();
+    return e;
 }
 
 int grib_timer_stop(grib_timer* t, long total)
 {
 
-  struct timeval stop, diff;
-  int e = gettimeofday(&stop,NULL);
-  double c = proc_cpu();
+    struct timeval stop, diff;
+    int e = gettimeofday(&stop,NULL);
+    double c = proc_cpu();
 
-  if(e != 0)
-    grib_context_log(t->context,GRIB_LOG_WARNING|GRIB_LOG_PERROR,"Error stopping timer '%s'",t->name_?t->name_:"unnamed");
+    if(e != 0)
+        grib_context_log(t->context,GRIB_LOG_WARNING|GRIB_LOG_PERROR,"Error stopping timer '%s'",t->name_?t->name_:"unnamed");
 
-  if(!t->active_)
-  {
-    grib_context_log(t->context,GRIB_LOG_WARNING,"Stopping non-started timer '%s'",t->name_?t->name_:"unnamed");
-    return 1;
-  }
+    if(!t->active_)
+    {
+        grib_context_log(t->context,GRIB_LOG_WARNING,"Stopping non-started timer '%s'",t->name_?t->name_:"unnamed");
+        return 1;
+    }
 
-  diff.tv_sec  = stop.tv_sec  - t->start_.tv_sec;
-  diff.tv_usec = stop.tv_usec - t->start_.tv_usec;
-  if (diff.tv_usec < 0)
-  {
-    diff.tv_sec--;
-    diff.tv_usec += 1000000;
-  }
+    diff.tv_sec  = stop.tv_sec  - t->start_.tv_sec;
+    diff.tv_usec = stop.tv_usec - t->start_.tv_usec;
+    if (diff.tv_usec < 0)
+    {
+        diff.tv_sec--;
+        diff.tv_usec += 1000000;
+    }
 
-  t->timer_ += (double)diff.tv_sec + ((double)diff.tv_usec / 1000000.);
-  t->total_ += total;
-  t->total_cpu_ += (c - t->cpu_);
+    t->timer_ += (double)diff.tv_sec + ((double)diff.tv_usec / 1000000.);
+    t->total_ += total;
+    t->total_cpu_ += (c - t->cpu_);
 
-  t->active_=value_false;
-  t->count_++;
+    t->active_=value_false;
+    t->count_++;
 
-  return e;
+    return e;
 }
 
 double grib_timer_value(grib_timer *t)
 {
-  return t->timer_;
+    return t->timer_;
 }
 
 const char *bytename(double bytes)
 {
     static char *names[] = {
-        "","K","M","G","T"                                      };
+            "","K","M","G","T"                                      };
     double x = bytes;
     int    n = 0;
     static char buf[20];
@@ -176,74 +176,74 @@ const char *bytename(double bytes)
 
 void grib_timer_print(grib_timer* t)
 {
-  char cpu[1024] = "";
-  const char *name = t->name_ ? t->name_ : "";
-  if(t->timer_>=1)  {
-    if(! t->elapsed_ && t->total_cpu_ >= 1.0)
-      sprintf(cpu,"cpu: %s",timename(t->total_cpu_));
-
-    if(t->total_ != 0)
-    {
-      double rate = (double)t->total_/t->timer_;
-      char bytes[80];
-      sprintf(bytes,"%sbyte(s)",bytename(t->total_));
-      grib_context_print(t->context,stdout,"  %s: %s in %s [%sbyte/sec] %s\n",
-               name,bytes,timename(t->timer_),bytename(rate),cpu);
-    }
-    else {
-      char* ctimename=timename(t->timer_);
-      grib_context_print(t->context,stdout,"  %s: wall: %s%s\n",name,ctimename,cpu);
-    }
-/*
+    char cpu[1024] = "";
+    const char *name = t->name_ ? t->name_ : "";
+    if(t->timer_>=1)  {
+        if(! t->elapsed_ && t->total_cpu_ >= 1.0)
+            sprintf(cpu,"cpu: %s",timename(t->total_cpu_));
+
+        if(t->total_ != 0)
+        {
+            double rate = (double)t->total_/t->timer_;
+            char bytes[80];
+            sprintf(bytes,"%sbyte(s)",bytename(t->total_));
+            grib_context_print(t->context,stdout,"  %s: %s in %s [%sbyte/sec] %s\n",
+                    name,bytes,timename(t->timer_),bytename(rate),cpu);
+        }
+        else {
+            char* ctimename=timename(t->timer_);
+            grib_context_print(t->context,stdout,"  %s: wall: %s%s\n",name,ctimename,cpu);
+        }
+        /*
     if(t->statname_)
       log_statistics(t->statname_,"%ld",(long)t->timer_);
-    */
-  }
+         */
+    }
 }
 
 void grib_timer_partial_rate(grib_timer *t, double start, long total)
 {
-  double ptime = t->timer_ - start;
-  long ptotal = total;
-  const char *name = t->name_?t->name_:"";
-  if(ptime>=1)
-  {
-    double rate = (double)ptotal/ptime;
-    char bytes[80];
-    sprintf(bytes,"%sbyte(s)",bytename(ptotal));
-    grib_context_log(t->context,GRIB_LOG_INFO,"  %s: %s in %s [%sbyte/sec]",
-            name,bytes,timename(ptime),bytename(rate));
-  }
+    double ptime = t->timer_ - start;
+    long ptotal = total;
+    const char *name = t->name_?t->name_:"";
+    if(ptime>=1)
+    {
+        double rate = (double)ptotal/ptime;
+        char bytes[80];
+        sprintf(bytes,"%sbyte(s)",bytename(ptotal));
+        grib_context_log(t->context,GRIB_LOG_INFO,"  %s: %s in %s [%sbyte/sec]",
+                name,bytes,timename(ptime),bytename(rate));
+    }
 }
 
 void grib_print_all_timers()
 {
-  grib_timer *t = timers;
-  while(t)
-  {
-    grib_timer_print(t);
-    t = t->next_;
-  }
+    grib_timer *t = timers;
+    while(t)
+    {
+        grib_timer_print(t);
+        t = t->next_;
+    }
 }
 
 void grib_reset_all_timers()
 {
-  grib_timer *t = timers;
-  while(t)
-  {
-    t->count_  = 0;
-    t->timer_  = 0;
-    t->active_ = 0;
-    t->total_  = 0;
-    t->total_cpu_  = 0;
-    t = t->next_;
-  }
+    grib_timer *t = timers;
+    while(t)
+    {
+        t->count_  = 0;
+        t->timer_  = 0;
+        t->active_ = 0;
+        t->total_  = 0;
+        t->total_cpu_  = 0;
+        t = t->next_;
+    }
 }
 
 
 /*************************************************
-* Timed functions
-**************************************************/
+ * Timed functions
+ **************************************************/
 /*
 int timed_fread(char *buffer, int n, int length, FILE *f, grib_timer *t)
 {
@@ -337,20 +337,20 @@ int timed_readany(FILE *f, char *buffer, long *length, grib_timer *t)
 
   return e;
 }
-*/
+ */
 
 #else
 
 grib_timer *grib_get_timer(grib_context* c,const char* name, const char *statname, int elapsed)
 {
-if (!c) c=grib_context_get_default();
-grib_context_log(c,GRIB_LOG_FATAL,"grib_get_timer function not available");
-return NULL;
+    if (!c) c=grib_context_get_default();
+    grib_context_log(c,GRIB_LOG_FATAL,"grib_get_timer function not available");
+    return NULL;
 } 
 
 int grib_timer_start(grib_timer* t)
 {
-return 0;
+    return 0;
 }
 
 int grib_timer_stop(grib_timer* t, long total)
@@ -358,7 +358,7 @@ int grib_timer_stop(grib_timer* t, long total)
 
 double grib_timer_value(grib_timer *t)
 {
-return 0;
+    return 0;
 }
 
 void grib_timer_print(grib_timer* t)
diff --git a/src/grib_trie.c b/src/grib_trie.c
old mode 100755
new mode 100644
index e02b56c..6adc532
--- a/src/grib_trie.c
+++ b/src/grib_trie.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -272,6 +272,34 @@ static int mapping[] = {
 
 #define SIZE 38
 
+#if GRIB_PTHREADS
+static pthread_once_t once  = PTHREAD_ONCE_INIT;
+static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
+
+static void init() {
+  pthread_mutexattr_t attr;
+  pthread_mutexattr_init(&attr);
+  pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
+  pthread_mutex_init(&mutex,&attr);
+  pthread_mutexattr_destroy(&attr);
+}
+#elif GRIB_OMP_THREADS
+static int once = 0;
+static omp_nest_lock_t mutex;
+
+static void init()
+{
+    GRIB_OMP_CRITICAL(lock_grib_trie_c)
+    {
+        if (once == 0)
+        {
+            omp_init_nest_lock(&mutex);
+            once = 1;
+        }
+    }
+}
+#endif
+
 struct grib_trie {
   grib_trie* next[SIZE];
   grib_context *context;
@@ -293,6 +321,8 @@ grib_trie *grib_trie_new(grib_context* c) {
 }
 
 void grib_trie_delete(grib_trie *t) {
+  GRIB_MUTEX_INIT_ONCE(&once,&init)
+  GRIB_MUTEX_LOCK(&mutex)
   if(t)  {
     int i;
     for(i = t->first; i <= t->last; i++)
@@ -306,6 +336,7 @@ void grib_trie_delete(grib_trie *t) {
     grib_context_free(t->context,t);
 #endif
   }
+  GRIB_MUTEX_UNLOCK(&mutex)
 }
 
 void grib_trie_clear(grib_trie *t) {
@@ -324,6 +355,9 @@ void* grib_trie_insert(grib_trie* t,const char* key,void* data)
   const char *k = key;
   void* old = NULL;
 
+  GRIB_MUTEX_INIT_ONCE(&once,&init)
+  GRIB_MUTEX_LOCK(&mutex)
+
   while(*k && t) {
     last = t;
     t = t->next[mapping[(int)*k]];
@@ -344,6 +378,7 @@ void* grib_trie_insert(grib_trie* t,const char* key,void* data)
 	old = t->data;
     t->data=data;
   }
+  GRIB_MUTEX_UNLOCK(&mutex)
   return data == old ? NULL : old;
 }
 
@@ -376,13 +411,17 @@ void* grib_trie_insert_no_replace(grib_trie* t,const char* key,void* data)
 void *grib_trie_get(grib_trie* t,const char* key)
 {
   const char *k = key;
+  GRIB_MUTEX_INIT_ONCE(&once,&init)
+  GRIB_MUTEX_LOCK(&mutex)
 
   while(*k && t)
     t = t->next[mapping[(int)*k++]];
 
-  if(*k == 0 && t != NULL && t->data!=NULL)
+  if(*k == 0 && t != NULL && t->data!=NULL) {
+    GRIB_MUTEX_UNLOCK(&mutex)
     return t->data;
-
+  }
+  GRIB_MUTEX_UNLOCK(&mutex)
   return NULL;
 }
 
diff --git a/src/grib_util.c b/src/grib_util.c
index 96b005e..8fe31c3 100644
--- a/src/grib_util.c
+++ b/src/grib_util.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -8,33 +8,31 @@
  * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
  */
 
-/***************************************************************************
- *   Enrico Fucile
- *                                                                         *
- ***************************************************************************/
 #include "grib_api_internal.h"
 
 #ifdef ECCODES_ON_WINDOWS
-/* Microsoft Windows Visual Studio support. Implementation of Unix rint() */
-double rint(double x)
-{
-    char * buf = 0;
-    int decimal=0, sign=0, err = 0;
-    double result = 0;
-    buf = (char*) malloc(_CVTBUFSIZE);
-    err = _fcvt_s(buf, _CVTBUFSIZE, x, 0, &decimal, &sign);
-    Assert(err == 0);
-    result = atof(buf);
-    if(sign == 1) {
-        result = result * -1;
-    }
-    free(buf);
-    return result;
-}
+ /* Replace C99/Unix rint() for Windows Visual C++ (only before VC++ 2013 versions) */
+ #if defined _MSC_VER && _MSC_VER < 1800
+ double rint(double x)
+ {
+     char * buf = 0;
+     int decimal=0, sign=0, err = 0;
+     double result = 0;
+     buf = (char*) malloc(_CVTBUFSIZE);
+     err = _fcvt_s(buf, _CVTBUFSIZE, x, 0, &decimal, &sign);
+     Assert(err == 0);
+     result = atof(buf);
+     if(sign == 1) {
+         result = result * -1;
+     }
+     free(buf);
+     return result;
+ }
+ #endif
 #endif
 
-
-static void set_total_length(unsigned char* buffer,long *section_length,long *section_offset,int edition,size_t totalLength) {
+static void set_total_length(unsigned char* buffer,long *section_length,long *section_offset,int edition,size_t totalLength)
+{
     long off;
     switch (edition) {
     case 1:
@@ -58,10 +56,10 @@ static void set_total_length(unsigned char* buffer,long *section_length,long *se
         grib_encode_unsigned_long(buffer, (unsigned long)totalLength ,  &off, 64);
         break;
     }
-
 }
 
-static grib_handle* grib_sections_copy_internal(grib_handle* hfrom,grib_handle* hto,int sections[],int *err) {
+static grib_handle* grib_sections_copy_internal(grib_handle* hfrom,grib_handle* hto,int sections[],int *err)
+{
     int i;
     size_t totalLength=0;
     unsigned char* buffer;
@@ -183,7 +181,8 @@ static grib_handle* grib_sections_copy_internal(grib_handle* hfrom,grib_handle*
     return h;
 }
 
-grib_handle* grib_util_sections_copy(grib_handle* hfrom,grib_handle* hto,int what,int *err) {
+grib_handle* grib_util_sections_copy(grib_handle* hfrom,grib_handle* hto,int what,int *err)
+{
     long edition_from=0;
     long edition_to=0;
     long localDefinitionNumber=-1;
@@ -268,24 +267,26 @@ grib_handle* grib_util_sections_copy(grib_handle* hfrom,grib_handle* hto,int wha
     }
 
     return grib_sections_copy_internal(hfrom,hto,sections_to_copy,err);
-
 }
 
 static grib_trie* init_list(const char* name);
 static grib_trie* param_id_list = NULL;
 static grib_trie* mars_param_list = NULL;
 /* TODO thread safe */
-grib_string_list* grib_util_get_param_id(const char* mars_param) {
+grib_string_list* grib_util_get_param_id(const char* mars_param)
+{
     if (!mars_param_list && (mars_param_list=init_list("mars_param.table"))==NULL) return NULL;
     return (grib_string_list*)grib_trie_get(mars_param_list,mars_param);
 }
 
-grib_string_list* grib_util_get_mars_param(const char* param_id) {
+grib_string_list* grib_util_get_mars_param(const char* param_id)
+{
     if (!param_id_list && (param_id_list=init_list("param_id.table"))==NULL) return NULL;
     return (grib_string_list*)grib_trie_get(param_id_list,param_id);
 }
 
-static grib_trie* init_list(const char* name) {
+static grib_trie* init_list(const char* name)
+{
     char *full_path=0;
     FILE* fh;
     char s[101];
@@ -333,43 +334,232 @@ static grib_trie* init_list(const char* name) {
     return 0;
 }
 
-static void print_values(grib_context* c,const grib_util_grid_spec* spec,const double* data_values,size_t data_values_count,const grib_values *values,int count) {
+static void print_values(grib_context* c, const grib_util_grid_spec2* spec, const double* data_values,size_t data_values_count,const grib_values *values,int count)
+{
     int i;
-    printf("GRIB_API DEBUG grib_util grib_set_values: setting %d values \n",count);
+    printf("ECCODES DEBUG grib_util grib_set_values: setting %d values \n",count);
 
     for(i = 0; i < count ; i++)
     {
         switch(values[i].type)
         {
-        case GRIB_TYPE_LONG: printf("GRIB_API DEBUG grib_util: => %s =  %ld;\n"
+        case GRIB_TYPE_LONG: printf("ECCODES DEBUG grib_util: => %s =  %ld;\n"
                 ,values[i].name,(long)values[i].long_value); break;
-        case GRIB_TYPE_DOUBLE: printf("GRIB_API DEBUG grib_util: => %s = %.16e;\n"
+        case GRIB_TYPE_DOUBLE: printf("ECCODES DEBUG grib_util: => %s = %.16e;\n"
                 ,values[i].name,values[i].double_value); break;
-        case GRIB_TYPE_STRING: printf("GRIB_API DEBUG grib_util: => %s = \"%s\";\n"
+        case GRIB_TYPE_STRING: printf("ECCODES DEBUG grib_util: => %s = \"%s\";\n"
                 ,values[i].name,values[i].string_value); break;
         }
     }
 
     if(spec->bitmapPresent) {
         int missing = 0;
+        size_t j = 0;
         double min = 1e100;
-        for(i = 0; i < data_values_count ; i++)
+        for(j = 0; j < data_values_count ; j++)
         {
-            double d = data_values[i] - spec->missingValue;
+            double d = data_values[j] - spec->missingValue;
             if(d < 0) d = -d;
 
             if(d < min) {
                 min = d;
             }
 
-            if(data_values[i] == spec->missingValue)
+            if(data_values[j] == spec->missingValue)
                 missing++;
         }
     }
 }
 
-#define     ISECTION_2  3000
-#define     ISECTION_4  512
+static int DBL_EQUAL(double d1, double d2, double tolerance)
+{
+    return fabs(d1-d2) < tolerance;
+}
+
+/* Returns a boolean: 1 if angle can be encoded, 0 otherwise */
+static int grib1_angle_can_be_encoded(const double angle)
+{
+    const double angle_milliDegrees = angle * 1000;
+    double rounded = (int)(angle_milliDegrees+0.5)/1000.0;
+    if (angle<0) {
+        rounded = (int)(angle_milliDegrees-0.5)/1000.0;
+    }
+    if (angle == rounded) return 1;
+    return 0; /* sub millidegree. Cannot be encoded in grib1 */
+}
+
+/* Returns a boolean: 1 if angle is too small, 0 otherwise */
+static int angle_too_small(const double angle, const double angular_precision)
+{
+    const double a = fabs(angle);
+    if (a > 0 && a < angular_precision) return 1;
+    return 0;
+}
+
+static double normalise_angle(double angle)
+{
+    while (angle<0)   angle += 360;
+    while (angle>360) angle -= 360;
+    return angle;
+}
+
+/* Check what is coded in the handle is what is requested by the spec. */
+/* Return GRIB_SUCCESS if the geometry matches, otherwise the error code */
+static int check_handle_against_spec(grib_handle* handle, const long edition,
+        const grib_util_grid_spec2* spec, int global_grid)
+{
+    int err = 0;
+    int check_latitudes = 1;
+    int check_longitudes = 1;
+    double angular_precision = 1.0/1000.0; /* millidegree */
+    double tolerance = angular_precision/2.0; /* half a millidegree */
+
+    if (edition == 2) {
+        angular_precision = 1.0/1000000.0; /* microdegree */
+        tolerance = angular_precision/2.0;
+    }
+
+    if (edition == 2) {
+        return GRIB_SUCCESS;  /* For now only do checks on edition 1 */
+    }
+
+    if (spec->grid_type == GRIB_UTIL_GRID_SPEC_POLAR_STEREOGRAPHIC ||
+        spec->grid_type == GRIB_UTIL_GRID_SPEC_SH)
+    {
+        return GRIB_SUCCESS;
+    }
+
+    /* Cannot check latitudes of Gaussian grids because are always sub-millidegree */
+    /* and for GRIB1 will differ from the encoded values. We accept this discrepancy! */
+    if (spec->grid_type == GRIB_UTIL_GRID_SPEC_REGULAR_GG ||
+        spec->grid_type == GRIB_UTIL_GRID_SPEC_ROTATED_GG ||
+        spec->grid_type == GRIB_UTIL_GRID_SPEC_REDUCED_GG ||
+        spec->grid_type == GRIB_UTIL_GRID_SPEC_REDUCED_ROTATED_GG)
+    {
+        if (edition == 1) {
+            check_latitudes = 0;
+        }
+    }
+
+    /* GRIB-922 */
+    /* Specification was to make the resulting grid global so no point checking for */
+    /* input lat/lon values as they would be reset by setting the "global" key to 1 */
+    if (global_grid)
+    {
+        check_latitudes = check_longitudes = 0;
+    }
+
+    if (check_latitudes) {
+        double lat1, lat2;
+        const double lat1spec = normalise_angle(spec->latitudeOfFirstGridPointInDegrees);
+        const double lat2spec = normalise_angle(spec->latitudeOfLastGridPointInDegrees);
+        if ((err = grib_get_double(handle, "latitudeOfFirstGridPointInDegrees", &lat1))!=0)  return err;
+        if ((err = grib_get_double(handle, "latitudeOfLastGridPointInDegrees", &lat2))!=0)   return err;
+        lat1 = normalise_angle(lat1);
+        lat2 = normalise_angle(lat2);
+
+        if (angle_too_small(lat1spec, angular_precision)) {
+            fprintf(stderr, "Failed to encode latitude of first grid point %.10e: less than angular precision\n",lat1spec);
+            return GRIB_WRONG_GRID;
+        }
+        if (angle_too_small(lat2spec, angular_precision)) {
+            fprintf(stderr, "Failed to encode latitude of last grid point %.10e: less than angular precision\n", lat2spec);
+            return GRIB_WRONG_GRID;
+        }
+
+        if (!DBL_EQUAL(lat1spec, lat1, tolerance)) {
+            fprintf(stderr, "Failed to encode latitude of first grid point: spec=%.10e val=%.10e\n", lat1spec, lat1);
+            return GRIB_WRONG_GRID;
+        }
+        if (!DBL_EQUAL(lat2spec, lat2, tolerance)) {
+            fprintf(stderr, "Failed to encode latitude of last grid point: spec=%.10e val=%.10e\n", lat2spec, lat2);
+            return GRIB_WRONG_GRID;
+        }
+    }
+
+    if (check_longitudes) {
+        double lon1, lon2;
+        const double lon1spec = normalise_angle(spec->longitudeOfFirstGridPointInDegrees);
+        const double lon2spec = normalise_angle(spec->longitudeOfLastGridPointInDegrees);
+        if ((err = grib_get_double(handle, "longitudeOfFirstGridPointInDegrees", &lon1))!=0) return err;
+        if ((err = grib_get_double(handle, "longitudeOfLastGridPointInDegrees", &lon2))!=0)  return err;
+        lon1 = normalise_angle(lon1);
+        lon2 = normalise_angle(lon2);
+
+        if (angle_too_small(lon1spec, angular_precision)) {
+            fprintf(stderr, "Failed to encode longitude of first grid point %.10e: less than angular precision\n", lon1spec);
+            return GRIB_WRONG_GRID;
+        }
+        if (angle_too_small(lon2spec, angular_precision)) {
+            fprintf(stderr, "Failed to encode longitude of last grid point %.10e: less than angular precision\n", lon2spec);
+            return GRIB_WRONG_GRID;
+        }
+
+        if (!DBL_EQUAL(lon1spec, lon1, tolerance)) {
+            fprintf(stderr, "Failed to encode longitude of first grid point: spec=%.10e val=%.10e\n", lon1spec, lon1);
+            return GRIB_WRONG_GRID;
+        }
+        if (!DBL_EQUAL(lon2spec, lon2, tolerance)){
+            fprintf(stderr, "Failed to encode longitude of last grid point: spec=%.10e val=%.10e\n",  lon2spec, lon2);
+            return GRIB_WRONG_GRID;
+        }
+    }
+
+    if (spec->grid_type == GRIB_UTIL_GRID_SPEC_ROTATED_LL ||
+        spec->grid_type == GRIB_UTIL_GRID_SPEC_ROTATED_GG ||
+        spec->grid_type == GRIB_UTIL_GRID_SPEC_REDUCED_ROTATED_GG)
+    {
+        double latp, lonp;
+        const double latspec = normalise_angle(spec->latitudeOfSouthernPoleInDegrees);
+        const double lonspec = normalise_angle(spec->longitudeOfSouthernPoleInDegrees);
+        if ((err = grib_get_double(handle, "latitudeOfSouthernPoleInDegrees", &latp))!=0)  return err;
+        if ((err = grib_get_double(handle, "longitudeOfSouthernPoleInDegrees", &lonp))!=0)  return err;
+        latp = normalise_angle(latp);
+        lonp = normalise_angle(lonp);
+
+        if (!DBL_EQUAL(latspec, latp, tolerance)) {
+            fprintf(stderr, "Failed to encode latitude of southern pole: spec=%.10e val=%.10e\n",latspec,latp);
+            return GRIB_WRONG_GRID;
+        }
+        if (!DBL_EQUAL(lonspec, lonp, tolerance)) {
+            fprintf(stderr, "Failed to encode longitude of southern pole: spec=%.10e val=%.10e\n",lonspec,lonp);
+            return GRIB_WRONG_GRID;
+        }
+    }
+    return GRIB_SUCCESS;
+}
+
+static const char* get_grid_type_name(const int spec_grid_type)
+{
+    if (spec_grid_type == GRIB_UTIL_GRID_SPEC_REGULAR_LL)
+        return "regular_ll";
+
+    if (spec_grid_type == GRIB_UTIL_GRID_SPEC_ROTATED_LL)
+        return "rotated_ll";
+
+    if (spec_grid_type == GRIB_UTIL_GRID_SPEC_REGULAR_GG)
+        return "regular_gg";
+
+    if (spec_grid_type == GRIB_UTIL_GRID_SPEC_ROTATED_GG)
+        return "rotated_gg";
+
+    if (spec_grid_type == GRIB_UTIL_GRID_SPEC_REDUCED_LL)
+        return "reduced_ll";
+
+    if (spec_grid_type == GRIB_UTIL_GRID_SPEC_POLAR_STEREOGRAPHIC)
+        return "polar_stereographic";
+
+    if (spec_grid_type == GRIB_UTIL_GRID_SPEC_REDUCED_GG)
+        return "reduced_gg";
+
+    if (spec_grid_type == GRIB_UTIL_GRID_SPEC_SH)
+        return "sh";
+
+    if (spec_grid_type == GRIB_UTIL_GRID_SPEC_REDUCED_ROTATED_GG)
+        return "reduced_rotated_gg";
+
+    return NULL;
+}
 
 grib_handle* grib_util_set_spec(grib_handle* h,
         const grib_util_grid_spec    *spec,
@@ -379,6 +569,56 @@ grib_handle* grib_util_set_spec(grib_handle* h,
         size_t                        data_values_count,
         int*                          err)
 {
+    /* Create a spec v2 from spec v1 */
+    grib_util_grid_spec2 spec2;
+    Assert(h);
+
+    spec2.grid_type=spec->grid_type;
+    spec2.Ni=spec->Ni;
+    spec2.Nj=spec->Nj;
+    spec2.iDirectionIncrementInDegrees=spec->iDirectionIncrementInDegrees;
+    spec2.jDirectionIncrementInDegrees=spec->jDirectionIncrementInDegrees;
+    spec2.longitudeOfFirstGridPointInDegrees=spec->longitudeOfFirstGridPointInDegrees;
+    spec2.longitudeOfLastGridPointInDegrees=spec->longitudeOfLastGridPointInDegrees;
+    spec2.latitudeOfFirstGridPointInDegrees=spec->latitudeOfFirstGridPointInDegrees;
+    spec2.latitudeOfLastGridPointInDegrees=spec->latitudeOfLastGridPointInDegrees;
+    spec2.uvRelativeToGrid=spec->uvRelativeToGrid;
+    spec2.latitudeOfSouthernPoleInDegrees=spec->latitudeOfSouthernPoleInDegrees;
+    spec2.longitudeOfSouthernPoleInDegrees=spec->longitudeOfSouthernPoleInDegrees;
+    spec2.iScansNegatively=spec->iScansNegatively;
+    spec2.jScansPositively=spec->jScansPositively;
+    spec2.N=spec->N;
+    spec2.bitmapPresent=spec->bitmapPresent;
+    spec2.missingValue=spec->missingValue;
+    spec2.pl=spec->pl;
+    spec2.pl_size=spec->pl_size;
+    spec2.truncation=spec->truncation;
+    spec2.orientationOfTheGridInDegrees=spec->orientationOfTheGridInDegrees;
+    spec2.DyInMetres=spec->DyInMetres;
+    spec2.DxInMetres=spec->DxInMetres;
+
+    /* New data members of spec2 take default values */
+    spec2.angleOfRotationInDegrees = 0;
+    spec2.grid_name= NULL;
+
+    return grib_util_set_spec2(
+            h,
+            &spec2,
+            packing_spec,
+            flags,
+            data_values,
+            data_values_count,
+            err);
+}
+
+grib_handle* grib_util_set_spec2(grib_handle* h,
+        const grib_util_grid_spec2   *spec,
+        const grib_util_packing_spec *packing_spec,
+        int                           flags,
+        const double*                 data_values,
+        size_t                        data_values_count,
+        int*                          err)
+{
 
 #define SET_LONG_VALUE(n,v)   do { Assert(count<1024); values[count].name = n; values[count].type = GRIB_TYPE_LONG;   values[count].long_value = v; count++; } while(0)
 #define SET_DOUBLE_VALUE(n,v) do { Assert(count<1024); values[count].name = n; values[count].type = GRIB_TYPE_DOUBLE; values[count].double_value = v; count++; } while(0)
@@ -405,8 +645,11 @@ grib_handle* grib_util_set_spec(grib_handle* h,
     int packingTypeIsSet=0;
     int setSecondOrder=0;
     size_t slen=17;
+    int grib1_high_resolution_fix = 0; /* boolean: See GRIB-863 */
+    int global_grid = 0; /* boolean */
 
     static grib_util_packing_spec default_packing_spec = {0, };
+    Assert(h);
 
     if(!packing_spec) {
         packing_spec = &default_packing_spec;
@@ -431,9 +674,9 @@ grib_handle* grib_util_set_spec(grib_handle* h,
     grib_get_long(h,"bitsPerValue",&input_bits_per_value);
     grib_get_long(h,"decimalScaleFactor",&input_decimal_scale_factor);
     if (h->context->debug==-1) {
-        printf("GRIB_API DEBUG grib_util: input_packing_type = %s\n",input_packing_type);
-        printf("GRIB_API DEBUG grib_util: input_bits_per_value = %ld\n",input_bits_per_value);
-        printf("GRIB_API DEBUG grib_util: input_decimal_scale_factor = %ld\n",input_decimal_scale_factor);
+        printf("ECCODES DEBUG grib_util: input_packing_type = %s\n",input_packing_type);
+        printf("ECCODES DEBUG grib_util: input_bits_per_value = %ld\n",input_bits_per_value);
+        printf("ECCODES DEBUG grib_util: input_decimal_scale_factor = %ld\n",input_decimal_scale_factor);
     }
 
     if (flags & GRIB_UTIL_SET_SPEC_FLAGS_ONLY_PACKING) {
@@ -519,9 +762,9 @@ grib_handle* grib_util_set_spec(grib_handle* h,
         }
         if (h->context->debug==-1) {
             int j=0;
-            printf("GRIB_API DEBUG grib_util: grib_set_double_array\n");
-            for (j=0;j<20;j++) printf("GRIB_API DEBUG grib_util %g\n",data_values[j]);
-            printf("GRIB_API DEBUG grib_util: data_values_count=%d \n",(int)data_values_count);
+            printf("ECCODES DEBUG grib_util: grib_set_double_array\n");
+            for (j=0;j<20;j++) printf("ECCODES DEBUG grib_util %g\n",data_values[j]);
+            printf("ECCODES DEBUG grib_util: data_values_count=%d \n",(int)data_values_count);
         }
 
         if((*err = grib_set_double_array(h,"values",data_values,data_values_count)) != 0)
@@ -529,7 +772,7 @@ grib_handle* grib_util_set_spec(grib_handle* h,
             goto cleanup;
         }
         if (h->context->debug==-1)
-            printf("GRIB_API DEBUG grib_util: done grib_set_double_array \n");
+            printf("ECCODES DEBUG grib_util: done grib_set_double_array \n");
 
 
         /* convert to second_order if not constant field */
@@ -587,45 +830,11 @@ grib_handle* grib_util_set_spec(grib_handle* h,
         return h;
     }
 
-
-    switch(spec->grid_type) {
-
-    case GRIB_UTIL_GRID_SPEC_REGULAR_LL:
-        grid_type = "regular_ll";
-        break;
-
-    case GRIB_UTIL_GRID_SPEC_ROTATED_LL:
-        grid_type = "rotated_ll";
-        break;
-
-    case GRIB_UTIL_GRID_SPEC_REGULAR_GG:
-        grid_type = "regular_gg";
-        break;
-
-    case GRIB_UTIL_GRID_SPEC_ROTATED_GG:
-        grid_type = "rotated_gg";
-        break;
-
-    case GRIB_UTIL_GRID_SPEC_REDUCED_LL:
-        grid_type = "reduced_ll";
-        break;
-
-    case GRIB_UTIL_GRID_SPEC_POLAR_STEREOGRAPHIC:
-        grid_type = "polar_stereographic";
-        break;
-
-    case GRIB_UTIL_GRID_SPEC_REDUCED_GG:
-        grid_type = "reduced_gg";
-        break;
-
-    case GRIB_UTIL_GRID_SPEC_SH:
-        grid_type = "sh";
-        break;
-
-    default:
+    grid_type = get_grid_type_name(spec->grid_type);
+    if (grid_type == NULL) {
+        fprintf(stderr,"GRIB_UTIL_SET_SPEC: Unknown grid type: %d\n", spec->grid_type);
         *err = GRIB_NOT_IMPLEMENTED;
         return NULL;
-
     }
 
     SET_STRING_VALUE("gridType", grid_type);
@@ -638,11 +847,26 @@ grib_handle* grib_util_set_spec(grib_handle* h,
         Assert(grib_get_string(h,"levelType",levtype,&n) == 0);
         switch (spec->grid_type) {
         case GRIB_UTIL_GRID_SPEC_REDUCED_GG:
+        case GRIB_UTIL_GRID_SPEC_REDUCED_ROTATED_GG:
+            /* Choose a sample with the right Gaussian number and edition */
             sprintf(name, "%s_pl_%ld_grib%ld", grid_type,spec->N, editionNumber);
+            if (spec->pl && spec->pl_size) {
+                /* GRIB-834: pl is given so can use any of the reduced_gg_pl samples */
+                sprintf(name, "%s_pl_grib%ld", grid_type, editionNumber);
+            }
             break;
         default :
             sprintf(name, "%s_pl_grib%ld", grid_type, editionNumber);
         }
+
+        if (spec->pl && spec->grid_name) {
+            /* Cannot have BOTH pl and grid name specified */
+            fprintf(stderr,"GRIB_UTIL_SET_SPEC: Cannot set BOTH pl and grid_name.\n");
+            goto cleanup;
+        }
+        if (spec->grid_name) {
+            sprintf(name, "%s_grib%ld", spec->grid_name, editionNumber);
+        }
     }
 
     /* TODO: recycle tmp handle */
@@ -661,6 +885,16 @@ grib_handle* grib_util_set_spec(grib_handle* h,
         if (spec->missingValue) COPY_SPEC_DOUBLE(missingValue);
 
         SET_LONG_VALUE  ("ijDirectionIncrementGiven",    1);
+        if (editionNumber == 1) {
+            /* GRIB-863: GRIB1 cannot represent increments less than a millidegree */
+            if (!grib1_angle_can_be_encoded(spec->iDirectionIncrementInDegrees) ||
+                !grib1_angle_can_be_encoded(spec->jDirectionIncrementInDegrees))
+            {
+                grib1_high_resolution_fix = 1;
+                /* Set flag to compute the increments */
+                SET_LONG_VALUE("ijDirectionIncrementGiven", 0);
+            }
+        }
 
         /* default iScansNegatively=0 jScansPositively=0 is ok */
         COPY_SPEC_LONG(iScansNegatively);
@@ -739,6 +973,8 @@ grib_handle* grib_util_set_spec(grib_handle* h,
         break;
 
     case GRIB_UTIL_GRID_SPEC_REDUCED_GG:
+    case GRIB_UTIL_GRID_SPEC_REDUCED_ROTATED_GG:
+
         COPY_SPEC_LONG  (bitmapPresent);
         if (spec->missingValue) COPY_SPEC_DOUBLE(missingValue);
         SET_LONG_VALUE("ijDirectionIncrementGiven", 0);
@@ -783,21 +1019,20 @@ grib_handle* grib_util_set_spec(grib_handle* h,
                     SET_DOUBLE_VALUE("laplacianOperator", laplacianOperator);
                 }
             }
-
         }
 
         break;
     }
 
-
     /* Set rotation */
-
     switch(spec->grid_type) {
     case GRIB_UTIL_GRID_SPEC_ROTATED_LL:
     case GRIB_UTIL_GRID_SPEC_ROTATED_GG:
+    case GRIB_UTIL_GRID_SPEC_REDUCED_ROTATED_GG:
         COPY_SPEC_LONG(uvRelativeToGrid);
         COPY_SPEC_DOUBLE(latitudeOfSouthernPoleInDegrees);
         COPY_SPEC_DOUBLE(longitudeOfSouthernPoleInDegrees);
+        COPY_SPEC_DOUBLE(angleOfRotationInDegrees);
         break;
     }
 
@@ -859,9 +1094,7 @@ grib_handle* grib_util_set_spec(grib_handle* h,
         }
     }
 
-
     switch(packing_spec->accuracy) {
-
     case GRIB_UTIL_ACCURACY_SAME_BITS_PER_VALUES_AS_INPUT:
     {
         long bitsPerValue = 0;
@@ -896,10 +1129,18 @@ grib_handle* grib_util_set_spec(grib_handle* h,
         for(i = 0; i < packing_spec->extra_settings_count; i++) {
             Assert(count < 1024);
             values[count++] = packing_spec->extra_settings[i];
+            if (strcmp(packing_spec->extra_settings[i].name, "global")==0 &&
+                packing_spec->extra_settings[i].long_value == 1)
+            {
+                /* GRIB-922: Request is for a global grid. Setting this key will
+                 * calculate the lat/lon values. So the spec's lat/lon can be ignored */
+                global_grid = 1;
+            }
         }
     }
     /* grib_write_message(h,"input.grib","w"); */
     /* grib_write_message(tmp,"geo.grib","w"); */
+    /* copy product and local sections from h to tmp handle and store in outh */
     if((outh = grib_util_sections_copy(h, tmp, GRIB_SECTION_PRODUCT | GRIB_SECTION_LOCAL,err)) == NULL)
     {
         goto cleanup;
@@ -908,6 +1149,27 @@ grib_handle* grib_util_set_spec(grib_handle* h,
     grib_handle_delete(tmp);
     Assert(*err == 0);
 
+    /* Set "pl" array if provided (For reduced Gaussian grids) */
+    /* See GRIB-857 */
+    Assert(spec->pl_size >= 0);
+    if (spec->pl && spec->pl_size == 0) {
+        fprintf(stderr, "pl array not NULL but pl_size == 0!\n");
+        goto cleanup;
+    }
+    if (spec->pl_size > 0 && spec->pl == NULL) {
+        fprintf(stderr, "pl_size not zero but pl array == NULL!\n");
+        goto cleanup;
+    }
+
+    if (spec->pl_size!=0 && (spec->grid_type==GRIB_UTIL_GRID_SPEC_REDUCED_GG || spec->grid_type==GRIB_UTIL_GRID_SPEC_REDUCED_ROTATED_GG))
+    {
+        *err=grib_set_long_array(outh,"pl",spec->pl,spec->pl_size);
+        if (*err) {
+            fprintf(stderr,"SET_GRID_DATA_DESCRIPTION: Cannot set pl  %s\n",grib_get_error_message(*err));
+            goto cleanup;
+        }
+    }
+
     if (h->context->debug==-1)
         print_values(h->context,spec,data_values,data_values_count,values,count);
 
@@ -920,13 +1182,6 @@ grib_handle* grib_util_set_spec(grib_handle* h,
                 fprintf(stderr," %s %s\n",values[i].name,grib_get_error_message(values[i].error));
         goto cleanup;
     }
-    if (spec->pl_size!=0 && spec->grid_type==GRIB_UTIL_GRID_SPEC_REDUCED_GG) {
-        *err=grib_set_long_array(outh,"pl",spec->pl,spec->pl_size);
-        if (*err) {
-            fprintf(stderr,"SET_GRID_DATA_DESCRIPTION: Cannot set pl  %s\n",grib_get_error_message(*err));
-            goto cleanup;
-        }
-    }
 
     if((*err = grib_set_double_array(outh,"values",data_values,data_values_count)) != 0)
     {
@@ -962,6 +1217,21 @@ grib_handle* grib_util_set_spec(grib_handle* h,
 	}
      */
 
+    if (grib1_high_resolution_fix) {
+        /* GRIB-863: must set increments to MISSING */
+        /* increments are not coded in message but computed */
+        if ( (*err = grib_set_missing(outh, "iDirectionIncrement"))!=0 ) {
+            fprintf(stderr,"GRIB_UTIL_SET_SPEC: Cannot set Di to missing: %s\n",grib_get_error_message(*err));
+            goto cleanup;
+        }
+        if ( (*err = grib_set_missing(outh, "jDirectionIncrement"))!=0 ){
+            fprintf(stderr,"GRIB_UTIL_SET_SPEC: Cannot set Dj to missing: %s\n",grib_get_error_message(*err));
+            goto cleanup;
+        }
+    }
+
+    /*grib_dump_content(outh, stdout,"debug", ~0, NULL);*/
+
     /* convert to second_order if not constant field */
     if (setSecondOrder ) {
         int ii=0;
@@ -1016,8 +1286,20 @@ grib_handle* grib_util_set_spec(grib_handle* h,
     if(packing_spec->editionNumber && packing_spec->editionNumber!=editionNumber)
         grib_set_long(outh,"edition", packing_spec->editionNumber);
 
+    if ( (*err = check_handle_against_spec(outh, editionNumber, spec, global_grid)) != GRIB_SUCCESS)
+    {
+        grib_context* c=grib_context_get_default();
+        fprintf(stderr,"GRIB_UTIL_SET_SPEC: Geometry check failed! %s\n", grib_get_error_message(*err));
+        if (editionNumber == 1) {
+            fprintf(stderr,"Note: in GRIB edition 1 latitude and longitude values cannot be represented with sub-millidegree precision.\n");
+        }
+        if (c->write_on_fail)
+            grib_write_message(outh,"error.grib","w");
+        goto cleanup;
+    }
+
     if (h->context->debug==-1)
-        printf("GRIB_API DEBUG: grib_util_set_spec end\n");
+        printf("ECCODES DEBUG: grib_util_set_spec end\n");
 
     return outh;
 
@@ -1026,8 +1308,8 @@ grib_handle* grib_util_set_spec(grib_handle* h,
     return NULL;
 }
 
-
-int grib_moments(grib_handle* h,double east,double north,double west,double south,int order,double* moments,long *count) {
+int grib_moments(grib_handle* h,double east,double north,double west,double south,int order,double* moments,long *count)
+{
     grib_iterator* iter=NULL;
     int ret=0,i,j,l;
     size_t n=0,numberOfPoints=0;
@@ -1295,7 +1577,7 @@ int is_index_file(const char* filename)
 {
     FILE* fh;
     char buf[8]={0,};
-    char* str="GRBIDX";
+    const char* str="GRBIDX";
     int ret=0;
 
     fh=fopen(filename,"r");
@@ -1310,3 +1592,87 @@ int is_index_file(const char* filename)
 
     return ret;
 }
+
+char get_dir_separator_char(void)
+{
+#ifdef ECCODES_ON_WINDOWS
+#   define DIR_SEPARATOR_CHAR '\\'
+#else
+#   define DIR_SEPARATOR_CHAR '/'
+#endif
+    return DIR_SEPARATOR_CHAR;
+}
+
+/* Return the component after final slash */
+/*  "/tmp/x"  -> "x"  */
+/*  "/tmp/"   -> ""   */
+const char* extract_filename(const char* filepath)
+{
+    const char* s = strrchr(filepath, get_dir_separator_char());
+    if (!s) return filepath;
+    else    return s + 1;
+}
+
+/* Boolean return type: 1 if the reduced gaussian field is global, 0 for sub area */
+int is_gaussian_global(
+        double lat1, double lat2, double lon1, double lon2,/* bounding box*/
+        long num_points_equator, /* num points on latitude at equator */
+        const double* latitudes, /* array of Gaussian latitudes (size 2*N) */
+        double angular_precision /* tolerance for angle comparison */
+)
+{
+    int global = 1;
+    const double d = fabs(latitudes[0] - latitudes[1]);
+    /* Compute the expected last longitude for a global field */
+    const double lon2_global = 360.0 - 360.0/num_points_equator;
+    /* Compute difference between expected longitude and actual one */
+    const double lon2_diff = fabs( lon2  - lon2_global ) - 360.0/num_points_equator;
+
+    /* Note: final gaussian latitude = -first latitude */
+    if ( (fabs(lat1 - latitudes[0]) >= d ) ||
+         (fabs(lat2 + latitudes[0]) >= d ) ||
+         lon1 != 0                         ||
+         lon2_diff > angular_precision
+    )
+    {
+        global = 0; /* sub area */
+    }
+    return global;
+}
+
+#define STR_EQUAL(s1, s2) (strcmp((s1), (s2)) == 0)
+char* codes_getenv(const char* name)
+{
+    /* Look for the new ecCodes environment variable names */
+    /* if not found, then look for old grib_api ones for backward compatibility */
+    const char* old_name = name;
+    char* result = NULL;
+
+    /* Test the most commonly used variables first */
+    if      (STR_EQUAL(name, "ECCODES_SAMPLES_PATH")) old_name="GRIB_SAMPLES_PATH";
+    else if (STR_EQUAL(name, "ECCODES_DEFINITION_PATH")) old_name="GRIB_DEFINITION_PATH";
+    else if (STR_EQUAL(name, "ECCODES_DEBUG")) old_name="GRIB_API_DEBUG";
+
+    else if (STR_EQUAL(name, "ECCODES_FAIL_IF_LOG_MESSAGE")) old_name="GRIB_API_FAIL_IF_LOG_MESSAGE";
+    else if (STR_EQUAL(name, "ECCODES_GRIB_WRITE_ON_FAIL")) old_name="GRIB_API_WRITE_ON_FAIL";
+    else if (STR_EQUAL(name, "ECCODES_GRIB_LARGE_CONSTANT_FIELDS")) old_name="GRIB_API_LARGE_CONSTANT_FIELDS";
+    else if (STR_EQUAL(name, "ECCODES_NO_ABORT")) old_name="GRIB_API_NO_ABORT";
+    else if (STR_EQUAL(name, "ECCODES_GRIBEX_MODE_ON")) old_name="GRIB_GRIBEX_MODE_ON";
+    else if (STR_EQUAL(name, "ECCODES_GRIB_IEEE_PACKING")) old_name="GRIB_IEEE_PACKING";
+    else if (STR_EQUAL(name, "ECCODES_IO_BUFFER_SIZE")) old_name="GRIB_API_IO_BUFFER_SIZE";
+    else if (STR_EQUAL(name, "ECCODES_LOG_STREAM")) old_name="GRIB_API_LOG_STREAM";
+    else if (STR_EQUAL(name, "ECCODES_GRIB_NO_BIG_GROUP_SPLIT")) old_name="GRIB_API_NO_BIG_GROUP_SPLIT";
+    else if (STR_EQUAL(name, "ECCODES_GRIB_NO_SPD")) old_name="GRIB_API_NO_SPD";
+    else if (STR_EQUAL(name, "ECCODES_GRIB_KEEP_MATRIX")) old_name="GRIB_API_KEEP_MATRIX";
+    else if (STR_EQUAL(name, "_ECCODES_ECMWF_TEST_DEFINITION_PATH")) old_name="_GRIB_API_ECMWF_TEST_DEFINITION_PATH";
+    else if (STR_EQUAL(name, "_ECCODES_ECMWF_TEST_SAMPLES_PATH")) old_name="_GRIB_API_ECMWF_TEST_SAMPLES_PATH";
+    else if (STR_EQUAL(name, "ECCODES_GRIB_JPEG")) old_name="GRIB_JPEG";
+    else if (STR_EQUAL(name, "ECCODES_GRIB_DUMP_JPG_FILE")) old_name="GRIB_DUMP_JPG_FILE";
+    else if (STR_EQUAL(name, "ECCODES_PRINT_MISSING")) old_name="GRIB_PRINT_MISSING";
+
+    result = getenv(name);
+    if (result == NULL) {
+        result = getenv(old_name);
+    }
+    return result;
+}
diff --git a/src/grib_value.c b/src/grib_value.c
index b7c2182..f7cee5e 100644
--- a/src/grib_value.c
+++ b/src/grib_value.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -13,7 +13,8 @@
  ***************************************************************************/
 #include "grib_api_internal.h"
 
-GRIB_INLINE static int grib_inline_strcmp(const char* a,const char* b) {
+GRIB_INLINE static int grib_inline_strcmp(const char* a,const char* b)
+{
     if (*a != *b) return 1;
     while((*a!=0 && *b!=0) &&  *(a) == *(b) ) {a++;b++;}
     return (*a==0 && *b==0) ? 0 : 1;
@@ -21,7 +22,8 @@ GRIB_INLINE static int grib_inline_strcmp(const char* a,const char* b) {
 
 #define SWAP(a,b) temp=(a);(a)=(b);(b)=temp;
 
-int grib_set_expression(grib_handle* h, const char* name,grib_expression* e) {
+int grib_set_expression(grib_handle* h, const char* name,grib_expression* e)
+{
     grib_accessor* a = grib_find_accessor(h, name);
     int ret = GRIB_SUCCESS;
 
@@ -39,7 +41,8 @@ int grib_set_expression(grib_handle* h, const char* name,grib_expression* e) {
     return GRIB_NOT_FOUND;
 }
 
-int grib_set_expression_internal(grib_handle* h, const char* name,grib_expression* e) {
+int grib_set_expression_internal(grib_handle* h, const char* name,grib_expression* e)
+{
     grib_accessor* a = grib_find_accessor(h, name);
 
     int ret = GRIB_SUCCESS;
@@ -53,7 +56,8 @@ int grib_set_expression_internal(grib_handle* h, const char* name,grib_expressio
     return GRIB_NOT_FOUND;
 }
 
-int grib_set_long_internal(grib_handle* h, const char* name, long val) {
+int grib_set_long_internal(grib_handle* h, const char* name, long val)
+{
     grib_context* c=h->context;
     int ret = GRIB_SUCCESS;
     grib_accessor* a =NULL;
@@ -61,8 +65,8 @@ int grib_set_long_internal(grib_handle* h, const char* name, long val) {
 
     a = grib_find_accessor(h, name);
 
-    if (h->context->debug==-1)
-        printf("GRIB_API DEBUG grib_set_long_internal %s=%ld\n",name,(long)val);
+    if (h->context->debug)
+        printf("ECCODES DEBUG grib_set_long_internal %s=%ld\n",name,(long)val);
 
     if(a){
         ret = grib_pack_long(a, &val, &l);
@@ -79,15 +83,16 @@ int grib_set_long_internal(grib_handle* h, const char* name, long val) {
     return GRIB_NOT_FOUND;
 }
 
-int grib_set_long(grib_handle* h, const char* name, long val) {
+int grib_set_long(grib_handle* h, const char* name, long val)
+{
     int ret = GRIB_SUCCESS;
     grib_accessor* a =NULL;
     size_t l = 1;
 
     a = grib_find_accessor(h, name);
 
-    if (h->context->debug==-1)
-        printf("GRIB_API DEBUG grib_set_long %s=%ld\n",name,(long)val);
+    if (h->context->debug)
+        printf("ECCODES DEBUG grib_set_long %s=%ld\n",name,(long)val);
 
     if(a){
         if(a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY)
@@ -102,15 +107,16 @@ int grib_set_long(grib_handle* h, const char* name, long val) {
     return GRIB_NOT_FOUND;
 }
 
-int grib_set_double_internal(grib_handle* h, const char* name, double val) {
+int grib_set_double_internal(grib_handle* h, const char* name, double val)
+{
     int ret = GRIB_SUCCESS;
     grib_accessor* a =NULL;
     size_t l = 1;
 
     a = grib_find_accessor(h, name);
 
-    if (h->context->debug==-1)
-        printf("GRIB_API DEBUG grib_set_double_internal %s=%g\n",name,val);
+    if (h->context->debug)
+        printf("ECCODES DEBUG grib_set_double_internal %s=%g\n",name,val);
 
     if(a){
         ret = grib_pack_double(a, &val, &l);
@@ -134,7 +140,8 @@ struct grib_key_err {
     grib_key_err* next;
 };
 
-int grib_copy_namespace(grib_handle* dest, const char* name, grib_handle* src) {
+int grib_copy_namespace(grib_handle* dest, const char* name, grib_handle* src)
+{
     int *err=0;
     int type;
     size_t len;
@@ -146,7 +153,6 @@ int grib_copy_namespace(grib_handle* dest, const char* name, grib_handle* src) {
     grib_key_err* first=NULL;
     int todo=1,count=0;
 
-
     grib_keys_iterator* iter=NULL;
 
     if (!dest || !src) return GRIB_NULL_HANDLE;
@@ -291,16 +297,16 @@ int grib_copy_namespace(grib_handle* dest, const char* name, grib_handle* src) {
     return *err;
 }
 
-
-int grib_set_double(grib_handle* h, const char* name, double val) {
+int grib_set_double(grib_handle* h, const char* name, double val)
+{
     int ret = GRIB_SUCCESS;
     grib_accessor* a =NULL;
     size_t l = 1;
 
     a = grib_find_accessor(h, name);
 
-    if (h->context->debug==-1)
-        printf("GRIB_API DEBUG grib_set_double %s=%g\n",name,val);
+    if (h->context->debug)
+        printf("ECCODES DEBUG grib_set_double %s=%g\n",name,val);
 
     if(a){
 
@@ -324,8 +330,8 @@ int grib_set_string_internal(grib_handle* h, const char* name,
 
     a = grib_find_accessor(h, name);
 
-    if (h->context->debug==-1)
-        printf("GRIB_API DEBUG grib_set_string_internal %s=%s\n",name,val);
+    if (h->context->debug)
+        printf("ECCODES DEBUG grib_set_string_internal %s=%s\n",name,val);
 
     if(a){
         ret = grib_pack_string(a, val, length);
@@ -347,21 +353,34 @@ int grib_set_string(grib_handle* h, const char* name, const char* val, size_t *l
     int ret=0;
     grib_accessor* a;
 
-#if 1
-    /*second order doesn't have a proper representation for constant fields
-  the best is not to do the change of packing type if bitsPerValue=0
+    /* Second order doesn't have a proper representation for constant fields.
+       So best not to do the change of packing type
      */
     if (!grib_inline_strcmp(name,"packingType") && !grib_inline_strcmp(val,"grid_second_order")) {
         long bitsPerValue=0;
+        size_t numCodedVals = 0;
         grib_get_long(h,"bitsPerValue",&bitsPerValue);
-        if (bitsPerValue==0) return 0;
+        if (bitsPerValue==0) {
+            if (h->context->debug) {
+                printf("ECCODES DEBUG grib_set_string packingType: Constant field cannot be encoded in second order. Packing not changed\n");
+            }
+            return 0;
+        }
+
+        /* GRIB-883: check if there are enough coded values */
+        ret = grib_get_size(h, "codedValues", &numCodedVals);
+        if (ret == GRIB_SUCCESS && numCodedVals < 3) {
+            if (h->context->debug) {
+                printf("ECCODES DEBUG grib_set_string packingType: not enough coded values for second order. Packing not changed\n");
+            }
+            return 0;
+        }
     }
-#endif
 
     a = grib_find_accessor(h, name);
 
-    if (h->context->debug==-1)
-        printf("GRIB_API DEBUG grib_set_string %s=%s\n",name,val);
+    if (h->context->debug)
+        printf("ECCODES DEBUG grib_set_string %s=%s\n",name,val);
 
     if(a)
     {
@@ -377,6 +396,29 @@ int grib_set_string(grib_handle* h, const char* name, const char* val, size_t *l
     return GRIB_NOT_FOUND;
 }
 
+int grib_set_string_array(grib_handle* h, const char* name, const char** val, size_t length)
+{
+    int ret=0;
+    grib_accessor* a;
+
+    a = grib_find_accessor(h, name);
+
+    grib_context_log(h->context,GRIB_LOG_DEBUG,"grib_set_string %s=%s\n",name,val);
+
+    if(a)
+    {
+        if(a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY)
+            return GRIB_READ_ONLY;
+
+        ret=grib_pack_string_array(a, val, &length);
+        if(ret == GRIB_SUCCESS){
+            return grib_dependency_notify_change(a);
+        }
+        return ret;
+    }
+    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;
@@ -437,7 +479,8 @@ int grib_clear(grib_handle* h, const char* name)
     return GRIB_NOT_FOUND;
 }
 
-int grib_set_missing_internal(grib_handle* h, const char* name) {
+int grib_set_missing_internal(grib_handle* h, const char* name)
+{
     int ret=0;
     grib_accessor* a =NULL;
 
@@ -472,6 +515,8 @@ int grib_set_missing(grib_handle* h, const char* name)
             return GRIB_READ_ONLY;
 
         if(a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) {
+            if (h->context->debug) printf("ECCODES DEBUG grib_set_missing %s\n",name);
+
             ret=grib_pack_missing(a);
             if(ret == GRIB_SUCCESS)
                 return grib_dependency_notify_change(a);
@@ -486,30 +531,32 @@ int grib_set_missing(grib_handle* h, const char* name)
     return GRIB_NOT_FOUND;
 }
 
-int grib_is_missing_long(grib_accessor* a,long x) { 
+int grib_is_missing_long(grib_accessor* a,long x)
+{
     int ret = ( a==NULL || (a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING)) && (x==GRIB_MISSING_LONG) ? 1 : 0;
     return ret;
 }
-int grib_is_missing_double(grib_accessor* a,double x) { 
+int grib_is_missing_double(grib_accessor* a,double x)
+{
     int ret = ( a==NULL || (a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING)) && (x==GRIB_MISSING_DOUBLE) ? 1 : 0;
     return ret;
 }
 
 int grib_accessor_is_missing(grib_accessor* a,int* err)
 {
-  *err=GRIB_SUCCESS;
-  if(a)
-  {
-    if(a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING)
-      return grib_is_missing_internal(a);
+    *err=GRIB_SUCCESS;
+    if(a)
+    {
+        if(a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING)
+            return grib_is_missing_internal(a);
+        else
+            return 0;
+    }
     else
-      return 0;
-  }
-  else
-  {
-    *err=GRIB_NOT_FOUND;
-    return 1;
-  }
+    {
+        *err=GRIB_NOT_FOUND;
+        return 1;
+    }
 }
 
 int grib_is_missing(grib_handle* h, const char* name,int* err)
@@ -525,7 +572,8 @@ int grib_is_defined(grib_handle* h, const char* name)
     return (a ? 1 : 0);
 }
 
-int grib_set_flag(grib_handle *h,const char* name,unsigned long flag) {
+int grib_set_flag(grib_handle *h,const char* name,unsigned long flag)
+{
     grib_accessor* a=grib_find_accessor(h,name);
 
     if (!a) return GRIB_NOT_FOUND;
@@ -571,32 +619,33 @@ static int _grib_set_double_array_internal(grib_handle* h,grib_accessor* a,
 static int _grib_set_double_array(grib_handle* h, const char* name,
         const double* val, size_t length,int check)
 {
-  size_t encoded = 0;
-  grib_accessor* a = grib_find_accessor(h, name);
-  int err=0;
+    size_t encoded = 0;
+    grib_accessor* a = grib_find_accessor(h, name);
+    int err=0;
 
-  if (!a) return GRIB_NOT_FOUND ;
-  if (name[0]=='/' || has_rank(name)) {
-    if(check && (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY))
-      return GRIB_READ_ONLY;
-    err=grib_pack_double(a, val, &length);
-  } else err=_grib_set_double_array_internal(h,a,val,length,&encoded,check);
+    if (!a) return GRIB_NOT_FOUND ;
+    if (name[0]=='/' || name[0]=='#' ) {
+        if(check && (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY))
+            return GRIB_READ_ONLY;
+        err=grib_pack_double(a, val, &length);
+        encoded=length;
+    } else err=_grib_set_double_array_internal(h,a,val,length,&encoded,check);
 
-  if(err == GRIB_SUCCESS && length > encoded)
-    err = GRIB_ARRAY_TOO_SMALL;
+    if(err == GRIB_SUCCESS && length > encoded)
+        err = GRIB_ARRAY_TOO_SMALL;
 
-  if(err == GRIB_SUCCESS)
-    return grib_dependency_notify_change(a);
+    if(err == GRIB_SUCCESS)
+        return grib_dependency_notify_change(a);
 
-  return err;
+    return err;
 }
 
 int grib_set_double_array_internal(grib_handle* h, const char* name, const double* val, size_t length)
 {
     int ret=0;
 
-    if (h->context->debug==-1)
-        printf("GRIB_API DEBUG grib_set_double_array_internal key=%s %ld values\n",name, (long)length);
+    if (h->context->debug)
+        printf("ECCODES DEBUG grib_set_double_array_internal key=%s %ld values\n",name, (long)length);
 
     if (length==0) {
         grib_accessor* a = grib_find_accessor(h, name);
@@ -608,7 +657,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)",
                 name,grib_get_error_message(ret));
-    /*if (h->context->debug==-1) printf("GRIB_API DEBUG grib_set_double_array_internal key=%s --DONE\n",name);*/
+    /*if (h->context->debug) printf("ECCODES DEBUG grib_set_double_array_internal key=%s --DONE\n",name);*/
     return ret;
 }
 
@@ -617,8 +666,8 @@ static int __grib_set_double_array(grib_handle* h, const char* name, const doubl
     double v=val[0];
     int constant,i;
 
-    if (h->context->debug==-1)
-        printf("GRIB_API DEBUG grib_set_double_array key=%s %ld values\n",name,(long)length);
+    if (h->context->debug)
+        printf("ECCODES DEBUG grib_set_double_array key=%s %ld values\n",name,(long)length);
 
     if (length==0) {
         grib_accessor* a = grib_find_accessor(h, name);
@@ -658,10 +707,17 @@ static int __grib_set_double_array(grib_handle* h, const char* name, const doubl
                     !strcmp(packingType,"grid_second_order_SPD2") ||
                     !strcmp(packingType,"grid_second_order_SPD3")
             ) {
+                int ret = 0;
                 slen=11; /*length of 'grid_simple' */
-                if (h->context->debug == -1)
-                    printf("GRIB_API DEBUG grib_set_double_array forcing grid_simple\n");
-                grib_set_string(h,"packingType","grid_simple",&slen);
+                if (h->context->debug) {
+                    printf("ECCODES DEBUG __grib_set_double_array: Cannot use second order packing for constant fields. Using simple packing\n");
+                }
+                ret = grib_set_string(h,"packingType","grid_simple",&slen);
+                if (ret != GRIB_SUCCESS) {
+                    if (h->context->debug) {
+                        printf("ECCODES DEBUG __grib_set_double_array: could not switch to simple packing!\n");
+                    }
+                }
             }
         }
     }
@@ -752,7 +808,8 @@ 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(grib_handle* h, const char* name)
+{
     grib_accessor* a=grib_find_accessor(h, name);
     if (a!=NULL && (a->flags & GRIB_ACCESSOR_FLAG_DUMP))
         return 1;
@@ -760,28 +817,34 @@ int grib_is_in_dump(grib_handle* h, const char* name) {
         return 0;
 }
 
-int grib_attributes_count(grib_accessor* a, size_t* size) {
+int grib_attributes_count(grib_accessor* a, size_t* size)
+{
     if (a) {
-      *size=0;
-      while (a->attributes[*size]!=NULL) {(*size)++;}
-      return GRIB_SUCCESS;
+        *size=0;
+        while (a->attributes[*size]!=NULL) {(*size)++;}
+        return GRIB_SUCCESS;
     }
 
     return GRIB_NOT_FOUND;
 }
 
-
 int grib_get_long(grib_handle* h, const char* name, long* val)
 {
-    grib_accessor* act = NULL;
-    size_t l = 1;
+    size_t length = 1;
+    grib_accessor* a = NULL;
+    grib_accessors_list* al=NULL;
     int ret=0;
-    char* attribute_name=NULL;
-
-    act = grib_find_accessor(h, name);
-
-    ret = act ? grib_unpack_long(act, val, &l) : GRIB_NOT_FOUND;
 
+    if (name[0] == '/' ) {
+        al=grib_find_accessors_list(h,name);
+        if (!al) return GRIB_NOT_FOUND;
+        ret=grib_unpack_long(al->accessor, val , &length);
+        grib_context_free(h->context,al);
+    } else  {
+        a=grib_find_accessor(h, name);
+        if(!a) return GRIB_NOT_FOUND;
+        ret=grib_unpack_long(a, val , &length);
+    }
     return ret;
 }
 
@@ -799,13 +862,22 @@ int grib_get_double_internal(grib_handle* h, const char* name, double* val)
 
 int grib_get_double(grib_handle* h, const char* name, double* val)
 {
-    grib_accessor* act = grib_find_accessor(h, name);
-    size_t l = 1;
-
-    if(act)
-        return grib_unpack_double(act, val, &l);
+    size_t length = 1;
+    grib_accessor* a = NULL;
+    grib_accessors_list* al=NULL;
+    int ret=0;
 
-    return GRIB_NOT_FOUND;
+    if (name[0] == '/' ) {
+        al=grib_find_accessors_list(h,name);
+        if (!al) return GRIB_NOT_FOUND;
+        ret=grib_unpack_double(al->accessor, val , &length);
+        grib_context_free(h->context,al);
+    } else  {
+        a=grib_find_accessor(h, name);
+        if(!a) return GRIB_NOT_FOUND;
+        ret=grib_unpack_double(a, val , &length);
+    }
+    return ret;
 }
 
 int grib_get_double_element_internal(grib_handle* h, const char* name, int i,double* val)
@@ -853,7 +925,6 @@ int grib_get_double_elements(grib_handle* h, const char* name, int* i, long len,
     int j=0;
     grib_accessor* act =NULL;
 
-
     act= grib_find_accessor(h, name);
 
     ret=_grib_get_size(h,act,&size);
@@ -892,15 +963,24 @@ int grib_get_string_internal(grib_handle* h, const char* name, char* val, size_t
     return ret;
 }
 
-
 int grib_get_string(grib_handle* h, const char* name, char* val, size_t *length)
 {
-    grib_accessor* act = grib_find_accessor(h, name);
-    if(act)
-        return grib_unpack_string(act, val, length);
-    return GRIB_NOT_FOUND;
-}
+    grib_accessor* a = NULL;
+    grib_accessors_list* al=NULL;
+    int ret=0;
 
+    if (name[0] == '/' ) {
+        al=grib_find_accessors_list(h,name);
+        if (!al) return GRIB_NOT_FOUND;
+        ret=grib_unpack_string(al->accessor, val, length);
+        grib_context_free(h->context,al);
+        return ret;
+    } else  {
+        a=grib_find_accessor(h, name);
+        if(!a) return GRIB_NOT_FOUND;
+        return grib_unpack_string(a, val , length);
+    }
+}
 
 int grib_get_bytes_internal(grib_handle* h, const char* name, unsigned char* val, size_t *length)
 {
@@ -926,14 +1006,22 @@ int grib_get_bytes(grib_handle* h, const char* name, unsigned char* val, size_t
 
 int grib_get_native_type(grib_handle* h, const char* name,int* type)
 {
-    grib_accessor* act = grib_find_accessor(h, name);
+    grib_accessors_list* al=NULL;
+    grib_accessor* a =NULL;
     *type = GRIB_TYPE_UNDEFINED;
 
-    if(act) {
-        *type = grib_accessor_get_native_type(act);
-        return GRIB_SUCCESS;
+    if (name[0] == '/' ) {
+        al=grib_find_accessors_list(h,name);
+        if (!al) return GRIB_NOT_FOUND;
+        *type = grib_accessor_get_native_type(al->accessor);
+        grib_context_free(h->context,al);
+    } else  {
+        a=grib_find_accessor(h, name);
+        if(!a) return GRIB_NOT_FOUND;
+        *type = grib_accessor_get_native_type(a);
     }
-    return GRIB_NOT_FOUND;
+
+    return GRIB_SUCCESS;
 }
 
 const char* grib_get_accessor_class_name(grib_handle* h, const char* name)
@@ -944,9 +1032,8 @@ const char* grib_get_accessor_class_name(grib_handle* h, const char* name)
 
 int _grib_get_double_array_internal(grib_handle* h,grib_accessor* a,double* val, size_t buffer_len,size_t *decoded_length)
 {
-    int err;
     if(a) {
-        err = _grib_get_double_array_internal(h,a->same,val,buffer_len,decoded_length);
+        int err = _grib_get_double_array_internal(h,a->same,val,buffer_len,decoded_length);
 
         if ( err == GRIB_SUCCESS )
         {
@@ -956,7 +1043,6 @@ int _grib_get_double_array_internal(grib_handle* h,grib_accessor* a,double* val,
         }
 
         return err;
-
     }
     else {
         return GRIB_SUCCESS;
@@ -975,33 +1061,31 @@ int grib_get_double_array_internal(grib_handle* h, const char* name, double* val
     return ret;
 }
 
-
 int grib_get_double_array(grib_handle* h, const char* name, double* val, size_t *length)
 {
-  size_t len = *length;
-  grib_accessor* a = NULL;
-  grib_accessors_list* al=NULL;
-  int ret=0;
+    size_t len = *length;
+    grib_accessor* a = NULL;
+    grib_accessors_list* al=NULL;
+    int ret=0;
 
-  if (name[0] == '/' ) {
-    al=grib_find_accessors_list(h,name);
-    if (!al) return GRIB_NOT_FOUND;
-    ret=grib_accessors_list_unpack_double(al,val,length);
-    grib_context_free(h->context,al);
-    return ret;
-  } else  {
-    a=grib_find_accessor(h, name);
-    if(!a) return GRIB_NOT_FOUND;
-    if (has_rank(name)) {
-      return grib_unpack_double(a, val , length);
-    } else {
-      *length = 0;
-      return _grib_get_double_array_internal(h,a,val,len,length);
+    if (name[0] == '/' ) {
+        al=grib_find_accessors_list(h,name);
+        if (!al) return GRIB_NOT_FOUND;
+        ret=grib_accessors_list_unpack_double(al,val,length);
+        grib_context_free(h->context,al);
+        return ret;
+    } else  {
+        a=grib_find_accessor(h, name);
+        if(!a) return GRIB_NOT_FOUND;
+        if (name[0] == '#') {
+            return grib_unpack_double(a, val , length);
+        } else {
+            *length = 0;
+            return _grib_get_double_array_internal(h,a,val,len,length);
+        }
     }
-  }
 }
 
-
 int _grib_get_string_length(grib_accessor* a, size_t* size)
 {
     size_t s=0;
@@ -1047,28 +1131,28 @@ int _grib_get_size(grib_handle* h, grib_accessor* a,size_t* size)
 
 int grib_get_size(grib_handle* h, const char* name,size_t* size)
 {
-  grib_accessor* a =NULL;
-  grib_accessors_list* al=NULL;
-  int ret=0;
-  *size=0;
+    grib_accessor* a =NULL;
+    grib_accessors_list* al=NULL;
+    int ret=0;
+    *size=0;
 
-  if (name[0] == '/') {
-    al=grib_find_accessors_list(h,name);
-    if (!al) return GRIB_NOT_FOUND;
-    ret=grib_accessors_list_value_count(al,size);
-    grib_context_free(h->context,al);
-    return ret;
-  } else {
-    a=grib_find_accessor(h, name);
-    if(!a) return GRIB_NOT_FOUND;
-    if (has_rank(name)) {
-      int ret;
-      long count=*size;
-      ret=grib_value_count(a,&count);
-      *size=count;
-      return ret;
-    } else return _grib_get_size(h, a,size);
-  }
+    if (name[0] == '/') {
+        al=grib_find_accessors_list(h,name);
+        if (!al) return GRIB_NOT_FOUND;
+        ret=grib_accessors_list_value_count(al,size);
+        grib_context_free(h->context,al);
+        return ret;
+    } else {
+        a=grib_find_accessor(h, name);
+        if(!a) return GRIB_NOT_FOUND;
+        if (name[0]=='#') {
+            int ret;
+            long count=*size;
+            ret=grib_value_count(a,&count);
+            *size=count;
+            return ret;
+        } else return _grib_get_size(h, a,size);
+    }
 }
 
 int grib_get_length(grib_handle* h, const char* name, size_t* length)
@@ -1089,7 +1173,6 @@ int grib_get_count(grib_handle* h, const char* name,size_t* size)
     return GRIB_SUCCESS;
 }
 
-
 int grib_get_offset(grib_handle* h, const char* key,size_t* val)
 {
     grib_accessor* act = grib_find_accessor(h, key);
@@ -1121,27 +1204,27 @@ int _grib_get_string_array_internal(grib_handle* h,grib_accessor* a,char** val,
 
 int grib_get_string_array(grib_handle* h, const char* name, char** val, size_t *length)
 {
-  size_t len = *length;
-  grib_accessor* a = NULL;
-  grib_accessors_list* al=NULL;
-  int ret=0;
+    size_t len = *length;
+    grib_accessor* a = NULL;
+    grib_accessors_list* al=NULL;
+    int ret=0;
 
-  if (name[0] == '/' ) {
-    al=grib_find_accessors_list(h,name);
-    if (!al) return GRIB_NOT_FOUND;
-    ret=grib_accessors_list_unpack_string(al,val,length);
-    grib_context_free(h->context,al);
-    return ret;
-  } else  {
-    a=grib_find_accessor(h, name);
-    if(!a) return GRIB_NOT_FOUND;
-    if (has_rank(name)) {
-      return grib_unpack_string_array(a, val , length);
-    } else {
-      *length = 0;
-      return _grib_get_string_array_internal(h,a,val,len,length);
+    if (name[0] == '/' ) {
+        al=grib_find_accessors_list(h,name);
+        if (!al) return GRIB_NOT_FOUND;
+        ret=grib_accessors_list_unpack_string(al,val,length);
+        grib_context_free(h->context,al);
+        return ret;
+    } else  {
+        a=grib_find_accessor(h, name);
+        if(!a) return GRIB_NOT_FOUND;
+        if (name[0]=='#') {
+            return grib_unpack_string_array(a, val , length);
+        } else {
+            *length = 0;
+            return _grib_get_string_array_internal(h,a,val,len,length);
+        }
     }
-  }
 }
 
 int _grib_get_long_array_internal(grib_handle* h,grib_accessor* a,long* val, size_t buffer_len,size_t *decoded_length)
@@ -1177,32 +1260,32 @@ int grib_get_long_array_internal(grib_handle* h, const char* name, long* val, si
 
 int grib_get_long_array(grib_handle* h, const char* name, long* val, size_t *length)
 {
-  size_t len = *length;
-  grib_accessor* a = NULL;
-  grib_accessors_list* al=NULL;
-  int ret=0;
+    size_t len = *length;
+    grib_accessor* a = NULL;
+    grib_accessors_list* al=NULL;
+    int ret=0;
 
-  if (name[0] == '/' ) {
-    al=grib_find_accessors_list(h,name);
-    if (!al) return GRIB_NOT_FOUND;
-    ret=grib_accessors_list_unpack_long(al,val,length);
-    grib_context_free(h->context,al);
-    return ret;
-  } else  {
-    a=grib_find_accessor(h, name);
-    if(!a) return GRIB_NOT_FOUND;
-    if (has_rank(name)) {
-      return grib_unpack_long(a, val , length);
-    } else {
-      *length = 0;
-      return _grib_get_long_array_internal(h,a,val,len,length);
+    if (name[0] == '/' ) {
+        al=grib_find_accessors_list(h,name);
+        if (!al) return GRIB_NOT_FOUND;
+        ret=grib_accessors_list_unpack_long(al,val,length);
+        grib_context_free(h->context,al);
+        return ret;
+    } else  {
+        a=grib_find_accessor(h, name);
+        if(!a) return GRIB_NOT_FOUND;
+        if (name[0]=='#') {
+            return grib_unpack_long(a, val , length);
+        } else {
+            *length = 0;
+            return _grib_get_long_array_internal(h,a,val,len,length);
+        }
     }
-  }
-  return ret;
+    return ret;
 }
 
-
-static void grib_clean_key_value(grib_context* c,grib_key_value_list* kv) {
+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);
@@ -1216,7 +1299,8 @@ 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) {
+static int grib_get_key_value(grib_handle* h,grib_key_value_list* kv)
+{
     int ret=0;
     size_t size=0;
     grib_keys_iterator* iter=NULL;
@@ -1277,20 +1361,22 @@ static int grib_get_key_value(grib_handle* h,grib_key_value_list* kv) {
     return ret;
 }
 
-grib_key_value_list* grib_key_value_list_clone(grib_context* c,grib_key_value_list* list) {
+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* clone=(grib_key_value_list*)grib_context_malloc_clear(c,sizeof(grib_key_value_list));
-    grib_key_value_list* p=clone;
+    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 clone;
+    return the_clone;
 }
 
-void grib_key_value_list_delete(grib_context* c,grib_key_value_list* kvl) {
+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) {
@@ -1304,7 +1390,8 @@ 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_key_value_list(grib_handle* h,grib_key_value_list* list)
+{
     int ret=0;
     grib_key_value_list* kvl=list;
     while (kvl) {
@@ -1314,7 +1401,8 @@ int grib_get_key_value_list(grib_handle* h,grib_key_value_list* list) {
     return ret;
 }
 
-int grib_get_values(grib_handle* h,grib_values* args,size_t count) {
+int grib_get_values(grib_handle* h,grib_values* args,size_t count)
+{
     int ret=0;
     int i=0;
 
@@ -1416,7 +1504,6 @@ int grib_set_values(grib_handle* h,grib_values* args,size_t count)
         }
     }
 
-
     h->values[stack]       = NULL;
     h->values_count[stack] = 0;
 
@@ -1459,7 +1546,8 @@ void grib_print_values(grib_values* values,int count)
     }
 }
 
-int grib_values_check(grib_handle* h, grib_values* values, int count) {
+int grib_values_check(grib_handle* h, grib_values* values, int count)
+{
     int i=0;
     long long_value;
     double double_value;
@@ -1520,7 +1608,8 @@ 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(grib_handle* h1,grib_handle* h2,const char* key,int type,int *err)
+{
     double d1,d2;
     long l1,l2;
     char s1[500]={0,};
diff --git a/src/grib_vdarray.c b/src/grib_vdarray.c
index ee63682..cf1e4cb 100644
--- a/src/grib_vdarray.c
+++ b/src/grib_vdarray.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -16,78 +16,84 @@
 
 #include "grib_api_internal.h"
 
-grib_vdarray* grib_vdarray_new(grib_context* c,size_t size,size_t incsize) {
-  grib_vdarray* v=NULL;
-  if (!c) c=grib_context_get_default();
-  v=(grib_vdarray*)grib_context_malloc_clear(c,sizeof(grib_vdarray));
-  if (!v) {
-    grib_context_log(c,GRIB_LOG_ERROR,
-          "grib_vdarray_new unable to allocate %d bytes\n",sizeof(grib_vdarray));
-    return NULL;
-  }
-  v->size=size;
-  v->n=0;
-  v->incsize=incsize;
-  v->v=(grib_darray**)grib_context_malloc_clear(c,sizeof(grib_darray*)*size);
-  if (!v->v) {
-    grib_context_log(c,GRIB_LOG_ERROR,
-          "grib_vdarray_new unable to allocate %d bytes\n",sizeof(grib_darray*)*size);
-    return NULL;
-  }
-  return v;
+grib_vdarray* grib_vdarray_new(grib_context* c,size_t size,size_t incsize)
+{
+    grib_vdarray* v=NULL;
+    if (!c) c=grib_context_get_default();
+    v=(grib_vdarray*)grib_context_malloc_clear(c,sizeof(grib_vdarray));
+    if (!v) {
+        grib_context_log(c,GRIB_LOG_ERROR,
+                "grib_vdarray_new unable to allocate %d bytes\n",sizeof(grib_vdarray));
+        return NULL;
+    }
+    v->size=size;
+    v->n=0;
+    v->incsize=incsize;
+    v->v=(grib_darray**)grib_context_malloc_clear(c,sizeof(grib_darray*)*size);
+    if (!v->v) {
+        grib_context_log(c,GRIB_LOG_ERROR,
+                "grib_vdarray_new unable to allocate %d bytes\n",sizeof(grib_darray*)*size);
+        return NULL;
+    }
+    return v;
 }
 
-grib_vdarray* grib_vdarray_resize(grib_context* c,grib_vdarray* v) {
-  int newsize=v->incsize+v->size;
+grib_vdarray* grib_vdarray_resize(grib_context* c,grib_vdarray* v)
+{
+    int newsize=v->incsize+v->size;
 
-  if (!c) c=grib_context_get_default();
+    if (!c) c=grib_context_get_default();
 
-  v->v=(grib_darray**)grib_context_realloc(c,v->v,newsize*sizeof(grib_darray*));
-  v->size=newsize;
-  if (!v->v) {
-    grib_context_log(c,GRIB_LOG_ERROR,
-          "grib_vdarray_resize unable to allocate %d bytes\n",sizeof(grib_darray*)*newsize);
-    return NULL;
-  }
-  return v;
+    v->v=(grib_darray**)grib_context_realloc(c,v->v,newsize*sizeof(grib_darray*));
+    v->size=newsize;
+    if (!v->v) {
+        grib_context_log(c,GRIB_LOG_ERROR,
+                "grib_vdarray_resize unable to allocate %d bytes\n",sizeof(grib_darray*)*newsize);
+        return NULL;
+    }
+    return v;
 }
 
-grib_vdarray* grib_vdarray_push(grib_context* c,grib_vdarray* v,grib_darray* val) {
-  size_t start_size=100;
-  size_t start_incsize=100;
-  if (!v) v=grib_vdarray_new(c,start_size,start_incsize);
+grib_vdarray* grib_vdarray_push(grib_context* c,grib_vdarray* v,grib_darray* val)
+{
+    size_t start_size=100;
+    size_t start_incsize=100;
+    if (!v) v=grib_vdarray_new(c,start_size,start_incsize);
 
-  if (v->n >= v->size) v=grib_vdarray_resize(c,v);
-  v->v[v->n]=val;
-  v->n++;
-  return v;
+    if (v->n >= v->size) v=grib_vdarray_resize(c,v);
+    v->v[v->n]=val;
+    v->n++;
+    return v;
 }
 
-void grib_vdarray_delete(grib_context* c,grib_vdarray* v) {
-  if (!v) return;
-  if (!c) grib_context_get_default();
-  if (v->v) grib_context_free(c,v->v);
-  grib_context_free(c,v);
+void grib_vdarray_delete(grib_context* c,grib_vdarray* v)
+{
+    if (!v) return;
+    if (!c) grib_context_get_default();
+    if (v->v) grib_context_free(c,v->v);
+    grib_context_free(c,v);
 }
 
-void grib_vdarray_delete_content(grib_context* c,grib_vdarray* v) {
-  int i;
-  if (!v || !v->v) return;
-  if (!c) grib_context_get_default();
-  for (i=0;i<v->n;i++) {
-    grib_darray_delete(c,v->v[i]);
-    v->v[i]=0;
-  }
-  v->n=0;
+void grib_vdarray_delete_content(grib_context* c,grib_vdarray* v)
+{
+    int i;
+    if (!v || !v->v) return;
+    if (!c) grib_context_get_default();
+    for (i=0;i<v->n;i++) {
+        grib_darray_delete(c,v->v[i]);
+        v->v[i]=0;
+    }
+    v->n=0;
 }
 
-grib_darray** grib_vdarray_get_array(grib_context* c,grib_vdarray* v) {
-  grib_darray** ret;
-  int i;
-  if (!v) return NULL;
-  ret=(grib_darray**)grib_context_malloc_clear(c,sizeof(grib_darray*)*v->n);
-  for (i=0;i<v->n;i++) ret[i]=v->v[i];
-  return ret;
+grib_darray** grib_vdarray_get_array(grib_context* c,grib_vdarray* v)
+{
+    grib_darray** ret;
+    int i;
+    if (!v) return NULL;
+    ret=(grib_darray**)grib_context_malloc_clear(c,sizeof(grib_darray*)*v->n);
+    for (i=0;i<v->n;i++) ret[i]=v->v[i];
+    return ret;
 }
 
 size_t grib_vdarray_used_size(grib_vdarray* v) { return v->n;}
diff --git a/src/grib_viarray.c b/src/grib_viarray.c
index 8c00c8a..df14b2e 100644
--- a/src/grib_viarray.c
+++ b/src/grib_viarray.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -16,78 +16,84 @@
 
 #include "grib_api_internal.h"
 
-grib_viarray* grib_viarray_new(grib_context* c,size_t size,size_t incsize) {
-  grib_viarray* v=NULL;
-  if (!c) c=grib_context_get_default();
-  v=(grib_viarray*)grib_context_malloc_clear(c,sizeof(grib_viarray));
-  if (!v) {
-    grib_context_log(c,GRIB_LOG_ERROR,
-          "grib_viarray_new unable to allocate %d bytes\n",sizeof(grib_viarray));
-    return NULL;
-  }
-  v->size=size;
-  v->n=0;
-  v->incsize=incsize;
-  v->v=(grib_iarray**)grib_context_malloc_clear(c,sizeof(grib_iarray*)*size);
-  if (!v->v) {
-    grib_context_log(c,GRIB_LOG_ERROR,
-          "grib_viarray_new unable to allocate %d bytes\n",sizeof(grib_iarray*)*size);
-    return NULL;
-  }
-  return v;
+grib_viarray* grib_viarray_new(grib_context* c,size_t size,size_t incsize)
+{
+    grib_viarray* v=NULL;
+    if (!c) c=grib_context_get_default();
+    v=(grib_viarray*)grib_context_malloc_clear(c,sizeof(grib_viarray));
+    if (!v) {
+        grib_context_log(c,GRIB_LOG_ERROR,
+                "grib_viarray_new unable to allocate %d bytes\n",sizeof(grib_viarray));
+        return NULL;
+    }
+    v->size=size;
+    v->n=0;
+    v->incsize=incsize;
+    v->v=(grib_iarray**)grib_context_malloc_clear(c,sizeof(grib_iarray*)*size);
+    if (!v->v) {
+        grib_context_log(c,GRIB_LOG_ERROR,
+                "grib_viarray_new unable to allocate %d bytes\n",sizeof(grib_iarray*)*size);
+        return NULL;
+    }
+    return v;
 }
 
-grib_viarray* grib_viarray_resize(grib_context* c,grib_viarray* v) {
-  int newsize=v->incsize+v->size;
+grib_viarray* grib_viarray_resize(grib_context* c,grib_viarray* v)
+{
+    int newsize=v->incsize+v->size;
 
-  if (!c) c=grib_context_get_default();
+    if (!c) c=grib_context_get_default();
 
-  v->v=(grib_iarray**)grib_context_realloc(c,v->v,newsize*sizeof(grib_iarray*));
-  v->size=newsize;
-  if (!v->v) {
-    grib_context_log(c,GRIB_LOG_ERROR,
-          "grib_viarray_resize unable to allocate %d bytes\n",sizeof(grib_iarray*)*newsize);
-    return NULL;
-  }
-  return v;
+    v->v=(grib_iarray**)grib_context_realloc(c,v->v,newsize*sizeof(grib_iarray*));
+    v->size=newsize;
+    if (!v->v) {
+        grib_context_log(c,GRIB_LOG_ERROR,
+                "grib_viarray_resize unable to allocate %d bytes\n",sizeof(grib_iarray*)*newsize);
+        return NULL;
+    }
+    return v;
 }
 
-grib_viarray* grib_viarray_push(grib_context* c,grib_viarray* v,grib_iarray* val) {
-  size_t start_size=100;
-  size_t start_incsize=100;
-  if (!v) v=grib_viarray_new(c,start_size,start_incsize);
+grib_viarray* grib_viarray_push(grib_context* c,grib_viarray* v,grib_iarray* val)
+{
+    size_t start_size=100;
+    size_t start_incsize=100;
+    if (!v) v=grib_viarray_new(c,start_size,start_incsize);
 
-  if (v->n >= v->size) v=grib_viarray_resize(c,v);
-  v->v[v->n]=val;
-  v->n++;
-  return v;
+    if (v->n >= v->size) v=grib_viarray_resize(c,v);
+    v->v[v->n]=val;
+    v->n++;
+    return v;
 }
 
-void grib_viarray_delete(grib_context* c,grib_viarray* v) {
-  if (!v) return;
-  if (!c) grib_context_get_default();
-  if (v->v) grib_context_free(c,v->v);
-  grib_context_free(c,v);
+void grib_viarray_delete(grib_context* c,grib_viarray* v)
+{
+    if (!v) return;
+    if (!c) grib_context_get_default();
+    if (v->v) grib_context_free(c,v->v);
+    grib_context_free(c,v);
 }
 
-void grib_viarray_delete_content(grib_context* c,grib_viarray* v) {
-  int i;
-  if (!v || !v->v) return;
-  if (!c) grib_context_get_default();
-  for (i=0;i<v->n;i++) {
-    grib_iarray_delete(v->v[i]);
-    v->v[i]=0;
-  }
-  v->n=0;
+void grib_viarray_delete_content(grib_context* c,grib_viarray* v)
+{
+    int i;
+    if (!v || !v->v) return;
+    if (!c) grib_context_get_default();
+    for (i=0;i<v->n;i++) {
+        grib_iarray_delete(v->v[i]);
+        v->v[i]=0;
+    }
+    v->n=0;
 }
 
-grib_iarray** grib_viarray_get_array(grib_context* c,grib_viarray* v) {
-  grib_iarray** ret;
-  int i;
-  if (!v) return NULL;
-  ret=(grib_iarray**)grib_context_malloc_clear(c,sizeof(grib_iarray*)*v->n);
-  for (i=0;i<v->n;i++) ret[i]=v->v[i];
-  return ret;
+grib_iarray** grib_viarray_get_array(grib_context* c,grib_viarray* v)
+{
+    grib_iarray** ret;
+    int i;
+    if (!v) return NULL;
+    ret=(grib_iarray**)grib_context_malloc_clear(c,sizeof(grib_iarray*)*v->n);
+    for (i=0;i<v->n;i++) ret[i]=v->v[i];
+    return ret;
 }
 
 size_t grib_viarray_used_size(grib_viarray* v) { return v->n;}
diff --git a/src/grib_vsarray.c b/src/grib_vsarray.c
index 3d05337..ce301d3 100644
--- a/src/grib_vsarray.c
+++ b/src/grib_vsarray.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -16,79 +16,85 @@
 
 #include "grib_api_internal.h"
 
-grib_vsarray* grib_vsarray_new(grib_context* c,size_t size,size_t incsize) {
-  grib_vsarray* v=NULL;
-  if (!c) c=grib_context_get_default();
-  v=(grib_vsarray*)grib_context_malloc_clear(c,sizeof(grib_vsarray));
-  if (!v) {
-    grib_context_log(c,GRIB_LOG_ERROR,
-          "grib_vsarray_new unable to allocate %d bytes\n",sizeof(grib_vsarray));
-    return NULL;
-  }
-  v->size=size;
-  v->n=0;
-  v->incsize=incsize;
-  v->v=(grib_sarray**)grib_context_malloc_clear(c,sizeof(grib_sarray*)*size);
-  if (!v->v) {
-    grib_context_log(c,GRIB_LOG_ERROR,
-          "grib_vsarray_new unable to allocate %d bytes\n",sizeof(grib_sarray*)*size);
-    return NULL;
-  }
-  return v;
+grib_vsarray* grib_vsarray_new(grib_context* c,size_t size,size_t incsize)
+{
+    grib_vsarray* v=NULL;
+    if (!c) c=grib_context_get_default();
+    v=(grib_vsarray*)grib_context_malloc_clear(c,sizeof(grib_vsarray));
+    if (!v) {
+        grib_context_log(c,GRIB_LOG_ERROR,
+                "grib_vsarray_new unable to allocate %d bytes\n",sizeof(grib_vsarray));
+        return NULL;
+    }
+    v->size=size;
+    v->n=0;
+    v->incsize=incsize;
+    v->v=(grib_sarray**)grib_context_malloc_clear(c,sizeof(grib_sarray*)*size);
+    if (!v->v) {
+        grib_context_log(c,GRIB_LOG_ERROR,
+                "grib_vsarray_new unable to allocate %d bytes\n",sizeof(grib_sarray*)*size);
+        return NULL;
+    }
+    return v;
 }
 
-grib_vsarray* grib_vsarray_resize(grib_context* c,grib_vsarray* v) {
-  int newsize=v->incsize+v->size;
+grib_vsarray* grib_vsarray_resize(grib_context* c,grib_vsarray* v)
+{
+    int newsize=v->incsize+v->size;
 
-  if (!c) c=grib_context_get_default();
+    if (!c) c=grib_context_get_default();
 
-  v->v=(grib_sarray**)grib_context_realloc(c,v->v,newsize*sizeof(grib_sarray*));
-  v->size=newsize;
-  if (!v->v) {
-    grib_context_log(c,GRIB_LOG_ERROR,
-          "grib_vsarray_resize unable to allocate %d bytes\n",sizeof(grib_sarray*)*newsize);
-    return NULL;
-  }
-  return v;
+    v->v=(grib_sarray**)grib_context_realloc(c,v->v,newsize*sizeof(grib_sarray*));
+    v->size=newsize;
+    if (!v->v) {
+        grib_context_log(c,GRIB_LOG_ERROR,
+                "grib_vsarray_resize unable to allocate %d bytes\n",sizeof(grib_sarray*)*newsize);
+        return NULL;
+    }
+    return v;
 }
 
-grib_vsarray* grib_vsarray_push(grib_context* c,grib_vsarray* v,grib_sarray* val) {
-  size_t start_size=100;
-  size_t start_incsize=100;
-  if (!v) v=grib_vsarray_new(c,start_size,start_incsize);
+grib_vsarray* grib_vsarray_push(grib_context* c,grib_vsarray* v,grib_sarray* val)
+{
+    size_t start_size=100;
+    size_t start_incsize=100;
+    if (!v) v=grib_vsarray_new(c,start_size,start_incsize);
 
-  if (v->n >= v->size) v=grib_vsarray_resize(c,v);
-  v->v[v->n]=val;
-  v->n++;
-  return v;
+    if (v->n >= v->size) v=grib_vsarray_resize(c,v);
+    v->v[v->n]=val;
+    v->n++;
+    return v;
 }
 
-void grib_vsarray_delete(grib_context* c,grib_vsarray* v) {
-  if (!v) return;
-  if (!c) grib_context_get_default();
-  if (v->v) grib_context_free(c,v->v);
-  grib_context_free(c,v);
+void grib_vsarray_delete(grib_context* c,grib_vsarray* v)
+{
+    if (!v) return;
+    if (!c) grib_context_get_default();
+    if (v->v) grib_context_free(c,v->v);
+    grib_context_free(c,v);
 }
 
-void grib_vsarray_delete_content(grib_context* c,grib_vsarray* v) {
-  int i;
-  if (!v || !v->v) return;
-  if (!c) grib_context_get_default();
-  for (i=0;i<v->n;i++) {
-    grib_sarray_delete_content(c,v->v[i]);
-    grib_sarray_delete(c,v->v[i]);
-    v->v[i]=0;
-  }
-  v->n=0;
+void grib_vsarray_delete_content(grib_context* c,grib_vsarray* v)
+{
+    int i;
+    if (!v || !v->v) return;
+    if (!c) grib_context_get_default();
+    for (i=0;i<v->n;i++) {
+        grib_sarray_delete_content(c,v->v[i]);
+        grib_sarray_delete(c,v->v[i]);
+        v->v[i]=0;
+    }
+    v->n=0;
 }
 
-grib_sarray** grib_vsarray_get_array(grib_context* c,grib_vsarray* v) {
-  grib_sarray** ret;
-  int i;
-  if (!v) return NULL;
-  ret=(grib_sarray**)grib_context_malloc_clear(c,sizeof(grib_sarray*)*v->n);
-  for (i=0;i<v->n;i++) ret[i]=v->v[i];
-  return ret;
+grib_sarray** grib_vsarray_get_array(grib_context* c,grib_vsarray* v)
+{
+    grib_sarray** ret;
+    int i;
+    if (!v) return NULL;
+    ret=(grib_sarray**)grib_context_malloc_clear(c,sizeof(grib_sarray*)*v->n);
+    for (i=0;i<v->n;i++) ret[i]=v->v[i];
+    return ret;
 }
 
 size_t grib_vsarray_used_size(grib_vsarray* v) { return v->n;}
diff --git a/src/grib_yacc.c b/src/grib_yacc.c
index 12290de..da508ae 100644
--- a/src/grib_yacc.c
+++ b/src/grib_yacc.c
@@ -1,10 +1,8 @@
+/* A Bison parser, made by GNU Bison 2.7.  */
 
-/* A Bison parser, made by GNU Bison 2.4.1.  */
-
-/* Skeleton implementation for Bison's Yacc-like parsers in C
+/* Bison implementation for Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
    
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -46,7 +44,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4.1"
+#define YYBISON_VERSION "2.7"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -60,14 +58,11 @@
 /* Pull parsers.  */
 #define YYPULL 1
 
-/* Using locations.  */
-#define YYLSP_NEEDED 0
 
 
 
 /* Copy the first part of user declarations.  */
-
-/* Line 189 of yacc.c  */
+/* Line 371 of yacc.c  */
 #line 12 "griby.y"
 
 
@@ -93,14 +88,16 @@ static grib_hash_array_value *_reverse_hash_array(grib_hash_array_value *r,grib_
 
 
 
+/* Line 371 of yacc.c  */
+#line 93 "y.tab.c"
 
-/* Line 189 of yacc.c  */
-#line 99 "y.tab.c"
-
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
+# ifndef YY_NULL
+#  if defined __cplusplus && 201103L <= __cplusplus
+#   define YY_NULL nullptr
+#  else
+#   define YY_NULL 0
+#  endif
+# endif
 
 /* Enabling verbose error messages.  */
 #ifdef YYERROR_VERBOSE
@@ -110,11 +107,17 @@ static grib_hash_array_value *_reverse_hash_array(grib_hash_array_value *r,grib_
 # define YYERROR_VERBOSE 0
 #endif
 
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
+/* In a future release of Bison, this section will be replaced
+   by #include "y.tab.h".  */
+#ifndef YY_YY_Y_TAB_H_INCLUDED
+# define YY_YY_Y_TAB_H_INCLUDED
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int grib_yydebug;
 #endif
-
 
 /* Tokens.  */
 #ifndef YYTOKENTYPE
@@ -376,18 +379,17 @@ static grib_hash_array_value *_reverse_hash_array(grib_hash_array_value *r,grib_
 
 
 
-
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
 {
-
-/* Line 214 of yacc.c  */
+/* Line 387 of yacc.c  */
 #line 37 "griby.y"
 
     char                    *str;
     long                    lval;
     double                  dval;
     grib_darray             *dvalue;
+    grib_sarray             *svalue;
     grib_iarray             *ivalue;
     grib_action             *act;
     grib_arguments          *explist;
@@ -400,21 +402,36 @@ typedef union YYSTYPE
   grib_rule_entry         *rule_entry;
 
 
-
-/* Line 214 of yacc.c  */
-#line 406 "y.tab.c"
+/* Line 387 of yacc.c  */
+#line 407 "y.tab.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define grib_yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
+extern YYSTYPE grib_yylval;
 
-/* Copy the second part of user declarations.  */
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int grib_yyparse (void *YYPARSE_PARAM);
+#else
+int grib_yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int grib_yyparse (void);
+#else
+int grib_yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+#endif /* !YY_YY_Y_TAB_H_INCLUDED  */
 
+/* Copy the second part of user declarations.  */
 
-/* Line 264 of yacc.c  */
-#line 418 "y.tab.c"
+/* Line 390 of yacc.c  */
+#line 435 "y.tab.c"
 
 #ifdef short
 # undef short
@@ -464,27 +481,27 @@ typedef short int grib_yytype_int16;
 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
 
 #ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
 #  endif
 # endif
 # ifndef YY_
-#  define YY_(msgid) msgid
+#  define YY_(Msgid) Msgid
 # endif
 #endif
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
+# define YYUSE(E) ((void) (E))
 #else
-# define YYUSE(e) /* empty */
+# define YYUSE(E) /* empty */
 #endif
 
 /* Identity function, used to suppress warnings about constant conditions.  */
 #ifndef lint
-# define YYID(n) (n)
+# define YYID(N) (N)
 #else
 #if (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
@@ -517,11 +534,12 @@ YYID (grib_yyi)
 #    define alloca _alloca
 #   else
 #    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#     ifndef _STDLIB_H
-#      define _STDLIB_H 1
+      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
+#     ifndef EXIT_SUCCESS
+#      define EXIT_SUCCESS 0
 #     endif
 #    endif
 #   endif
@@ -544,24 +562,24 @@ YYID (grib_yyi)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
 #  endif
-#  if (defined __cplusplus && ! defined _STDLIB_H \
+#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
        && ! ((defined YYMALLOC || defined malloc) \
 	     && (defined YYFREE || defined free)))
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef _STDLIB_H
-#    define _STDLIB_H 1
+#   ifndef EXIT_SUCCESS
+#    define EXIT_SUCCESS 0
 #   endif
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC malloc
-#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+#   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 #  ifndef YYFREE
 #   define YYFREE free
-#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+#   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 void free (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
@@ -590,23 +608,7 @@ union grib_yyalloc
      ((N) * (sizeof (grib_yytype_int16) + sizeof (YYSTYPE)) \
       + YYSTACK_GAP_MAXIMUM)
 
-/* Copy COUNT objects from FROM to TO.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(To, From, Count) \
-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-#  else
-#   define YYCOPY(To, From, Count)		\
-      do					\
-	{					\
-	  YYSIZE_T grib_yyi;				\
-	  for (grib_yyi = 0; grib_yyi < (Count); grib_yyi++)	\
-	    (To)[grib_yyi] = (From)[grib_yyi];		\
-	}					\
-      while (YYID (0))
-#  endif
-# endif
+# define YYCOPY_NEEDED 1
 
 /* Relocate STACK from its old location to the new one.  The
    local variables YYSIZE and YYSTACKSIZE give the old and new number of
@@ -626,19 +628,39 @@ union grib_yyalloc
 
 #endif
 
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from SRC to DST.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ && 1 < __GNUC__
+#   define YYCOPY(Dst, Src, Count) \
+      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+#  else
+#   define YYCOPY(Dst, Src, Count)              \
+      do                                        \
+        {                                       \
+          YYSIZE_T grib_yyi;                         \
+          for (grib_yyi = 0; grib_yyi < (Count); grib_yyi++)   \
+            (Dst)[grib_yyi] = (Src)[grib_yyi];            \
+        }                                       \
+      while (YYID (0))
+#  endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  214
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1760
+#define YYLAST   1789
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  144
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  49
+#define YYNNTS  50
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  264
+#define YYNRULES  270
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  886
+#define YYNSTATES  899
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -697,214 +719,219 @@ static const grib_yytype_uint8 grib_yytranslate[] =
 static const grib_yytype_uint16 grib_yyprhs[] =
 {
        0,     0,     3,     5,     7,     9,    11,    13,    15,    16,
-      18,    22,    24,    28,    30,    34,    36,    39,    43,    46,
-      49,    51,    53,    55,    57,    59,    61,    63,    65,    67,
-      70,    72,    74,    76,    80,    82,    90,   101,   109,   120,
-     128,   133,   141,   149,   157,   165,   170,   178,   186,   197,
-     205,   213,   224,   232,   243,   252,   265,   276,   284,   293,
-     302,   311,   322,   331,   341,   349,   352,   355,   360,   365,
-     370,   375,   380,   385,   390,   395,   400,   405,   410,   415,
-     420,   425,   430,   438,   445,   453,   456,   462,   468,   473,
-     480,   488,   491,   497,   506,   515,   519,   525,   531,   537,
-     543,   550,   554,   558,   562,   566,   572,   575,   583,   588,
-     597,   608,   614,   620,   626,   632,   635,   642,   647,   651,
-     656,   661,   668,   673,   676,   678,   684,   689,   692,   694,
-     700,   705,   710,   713,   719,   725,   727,   735,   747,   755,
-     767,   774,   782,   794,   799,   804,   807,   811,   813,   816,
-     818,   821,   823,   827,   829,   831,   833,   835,   837,   839,
-     841,   843,   845,   847,   849,   851,   853,   855,   857,   859,
-     861,   870,   878,   886,   893,   903,   916,   931,   942,   957,
-     970,   979,   991,   998,  1008,  1021,  1032,  1047,  1060,  1069,
-    1081,  1083,  1086,  1088,  1091,  1098,  1111,  1113,  1116,  1121,
-    1132,  1142,  1150,  1156,  1162,  1168,  1174,  1176,  1179,  1184,
-    1190,  1196,  1205,  1207,  1216,  1218,  1220,  1222,  1224,  1226,
-    1228,  1232,  1235,  1239,  1244,  1248,  1250,  1254,  1258,  1262,
-    1266,  1270,  1272,  1277,  1284,  1291,  1298,  1307,  1312,  1316,
-    1320,  1322,  1326,  1330,  1334,  1338,  1342,  1346,  1350,  1353,
-    1355,  1359,  1361,  1365,  1367,  1369,  1371,  1373,  1378,  1381,
-    1383,  1386,  1388,  1396,  1398
+      18,    22,    24,    28,    30,    34,    36,    40,    42,    45,
+      49,    52,    55,    57,    59,    61,    63,    65,    67,    69,
+      71,    73,    76,    78,    80,    82,    86,    88,    96,   107,
+     115,   126,   134,   139,   147,   155,   163,   171,   176,   184,
+     192,   203,   211,   219,   230,   238,   249,   258,   271,   282,
+     290,   299,   308,   317,   328,   337,   347,   355,   358,   361,
+     366,   371,   376,   381,   386,   391,   396,   401,   406,   411,
+     416,   421,   426,   431,   436,   444,   451,   459,   462,   468,
+     474,   481,   486,   493,   501,   504,   510,   517,   526,   535,
+     539,   545,   551,   557,   563,   570,   574,   578,   582,   586,
+     592,   595,   603,   608,   617,   628,   634,   640,   646,   652,
+     655,   662,   667,   671,   676,   681,   688,   695,   700,   703,
+     705,   711,   716,   719,   721,   727,   732,   737,   740,   746,
+     752,   754,   762,   774,   782,   794,   801,   809,   821,   826,
+     831,   834,   838,   840,   843,   845,   848,   850,   854,   856,
+     858,   860,   862,   864,   866,   868,   870,   872,   874,   876,
+     878,   880,   882,   884,   886,   888,   897,   905,   913,   920,
+     930,   943,   958,   969,   984,   997,  1006,  1018,  1025,  1035,
+    1048,  1059,  1074,  1087,  1096,  1108,  1110,  1113,  1115,  1118,
+    1125,  1138,  1140,  1143,  1148,  1159,  1169,  1177,  1183,  1189,
+    1195,  1201,  1203,  1206,  1211,  1218,  1224,  1230,  1239,  1241,
+    1250,  1252,  1254,  1256,  1258,  1260,  1262,  1266,  1269,  1273,
+    1278,  1282,  1284,  1288,  1292,  1296,  1300,  1304,  1306,  1311,
+    1318,  1325,  1332,  1341,  1346,  1350,  1354,  1356,  1360,  1364,
+    1368,  1372,  1376,  1380,  1384,  1387,  1389,  1393,  1395,  1399,
+    1401,  1403,  1405,  1407,  1412,  1415,  1417,  1420,  1422,  1430,
+    1432
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const grib_yytype_int16 grib_yyrhs[] =
 {
-     145,     0,    -1,   146,    -1,   168,    -1,   169,    -1,   149,
-      -1,   192,    -1,     1,    -1,    -1,   126,    -1,   147,   127,
-     126,    -1,   125,    -1,   147,   127,   125,    -1,   125,    -1,
-     148,   127,   125,    -1,   150,    -1,   150,   149,    -1,   150,
-     128,   149,    -1,   150,   128,    -1,   155,   128,    -1,   156,
-      -1,   164,    -1,   165,    -1,   166,    -1,   167,    -1,   170,
-      -1,   157,    -1,   173,    -1,   128,    -1,   151,   128,    -1,
-     146,    -1,   153,    -1,   154,    -1,   154,   127,   153,    -1,
-     186,    -1,     9,   129,   125,   130,   123,   160,   161,    -1,
-       9,   129,   125,   130,   123,   129,   152,   130,   160,   161,
-      -1,     9,   131,   125,   132,   123,   160,   161,    -1,     9,
-     131,   125,   132,   123,   129,   152,   130,   160,   161,    -1,
-      13,   129,   125,   130,   123,   160,   161,    -1,    14,   123,
-     160,   161,    -1,    14,   123,   131,   152,   132,   160,   161,
-      -1,   123,   133,    22,   131,   152,   132,   161,    -1,   123,
-     133,    24,   131,   152,   132,   161,    -1,   123,   133,    23,
-     131,   152,   132,   161,    -1,    15,   123,   160,   161,    -1,
-      13,   129,   125,   130,   124,   160,   161,    -1,    43,   129,
-     125,   130,   123,   160,   161,    -1,    43,   129,   125,   130,
-     123,   129,   152,   130,   160,   161,    -1,    16,   129,   125,
-     130,   123,   160,   161,    -1,    27,   129,   125,   130,   123,
-     160,   161,    -1,    27,   129,   125,   130,   123,   129,   152,
-     130,   160,   161,    -1,    27,   131,   125,   132,   123,   160,
-     161,    -1,    27,   131,   125,   132,   123,   129,   152,   130,
-     160,   161,    -1,    44,   129,   125,   130,   123,   154,   160,
-     161,    -1,    44,   129,   125,   130,   123,   154,   160,    80,
-     131,   123,   132,   161,    -1,    44,   129,   125,   130,   123,
-     131,   152,   132,   160,   161,    -1,    45,   123,   131,   152,
-     132,   160,   161,    -1,   123,   133,    46,   131,   152,   132,
-     160,   161,    -1,   123,   133,    57,   131,   152,   132,   160,
-     161,    -1,    47,   129,   125,   130,   123,   154,   160,   161,
-      -1,    47,   129,   125,   130,   123,   131,   152,   132,   160,
-     161,    -1,   101,   129,   125,   130,   123,   154,   160,   161,
-      -1,    48,   129,   125,   130,   123,   131,   152,   132,   161,
-      -1,    55,   123,   131,   152,   132,   160,   161,    -1,    17,
-     123,    -1,    17,   124,    -1,    26,   123,   160,   161,    -1,
-      29,   123,   160,   161,    -1,    28,   123,   160,   161,    -1,
-      31,   123,   160,   161,    -1,    30,   123,   160,   161,    -1,
-      33,   123,   160,   161,    -1,    32,   123,   160,   161,    -1,
-      35,   123,   160,   161,    -1,    34,   123,   160,   161,    -1,
-      37,   123,   160,   161,    -1,    36,   123,   160,   161,    -1,
-      39,   123,   160,   161,    -1,    38,   123,   160,   161,    -1,
-      41,   123,   160,   161,    -1,    40,   123,   160,   161,    -1,
-      42,   123,   129,   152,   130,   160,   161,    -1,    26,   123,
-     134,   123,   160,   161,    -1,    26,   123,   129,   154,   130,
-     160,   161,    -1,    52,   123,    -1,    53,   123,   133,   154,
-     161,    -1,    54,   123,   133,   154,   161,    -1,   126,   123,
-     160,   161,    -1,   126,   123,   134,   123,   160,   161,    -1,
-     126,   123,   129,   154,   130,   160,   161,    -1,    96,   123,
-      -1,    99,   129,   125,   130,   123,    -1,    97,   129,   125,
-     130,   123,   131,   152,   132,    -1,    98,   129,   125,   130,
-     123,   131,   152,   132,    -1,   105,   123,   154,    -1,    89,
-     123,   131,   152,   132,    -1,    93,   123,   131,   152,   132,
-      -1,    94,   123,   131,   152,   132,    -1,    95,   123,   131,
-     152,   132,    -1,    91,   129,   125,   130,   123,   161,    -1,
-      92,   123,   161,    -1,    90,   123,   161,    -1,    10,   123,
+     145,     0,    -1,   146,    -1,   169,    -1,   170,    -1,   150,
+      -1,   193,    -1,     1,    -1,    -1,   126,    -1,   147,   127,
+     126,    -1,   125,    -1,   147,   127,   125,    -1,   124,    -1,
+     148,   127,   124,    -1,   125,    -1,   149,   127,   125,    -1,
+     151,    -1,   151,   150,    -1,   151,   128,   150,    -1,   151,
+     128,    -1,   156,   128,    -1,   157,    -1,   165,    -1,   166,
+      -1,   167,    -1,   168,    -1,   171,    -1,   158,    -1,   174,
+      -1,   128,    -1,   152,   128,    -1,   146,    -1,   154,    -1,
+     155,    -1,   155,   127,   154,    -1,   187,    -1,     9,   129,
+     125,   130,   123,   161,   162,    -1,     9,   129,   125,   130,
+     123,   129,   153,   130,   161,   162,    -1,     9,   131,   125,
+     132,   123,   161,   162,    -1,     9,   131,   125,   132,   123,
+     129,   153,   130,   161,   162,    -1,    13,   129,   125,   130,
+     123,   161,   162,    -1,    14,   123,   161,   162,    -1,    14,
+     123,   131,   153,   132,   161,   162,    -1,   123,   133,    22,
+     131,   153,   132,   162,    -1,   123,   133,    24,   131,   153,
+     132,   162,    -1,   123,   133,    23,   131,   153,   132,   162,
+      -1,    15,   123,   161,   162,    -1,    13,   129,   125,   130,
+     124,   161,   162,    -1,    43,   129,   125,   130,   123,   161,
+     162,    -1,    43,   129,   125,   130,   123,   129,   153,   130,
+     161,   162,    -1,    16,   129,   125,   130,   123,   161,   162,
+      -1,    27,   129,   125,   130,   123,   161,   162,    -1,    27,
+     129,   125,   130,   123,   129,   153,   130,   161,   162,    -1,
+      27,   131,   125,   132,   123,   161,   162,    -1,    27,   131,
+     125,   132,   123,   129,   153,   130,   161,   162,    -1,    44,
+     129,   125,   130,   123,   155,   161,   162,    -1,    44,   129,
+     125,   130,   123,   155,   161,    80,   131,   123,   132,   162,
+      -1,    44,   129,   125,   130,   123,   131,   153,   132,   161,
+     162,    -1,    45,   123,   131,   153,   132,   161,   162,    -1,
+     123,   133,    46,   131,   153,   132,   161,   162,    -1,   123,
+     133,    57,   131,   153,   132,   161,   162,    -1,    47,   129,
+     125,   130,   123,   155,   161,   162,    -1,    47,   129,   125,
+     130,   123,   131,   153,   132,   161,   162,    -1,   101,   129,
+     125,   130,   123,   155,   161,   162,    -1,    48,   129,   125,
+     130,   123,   131,   153,   132,   162,    -1,    55,   123,   131,
+     153,   132,   161,   162,    -1,    17,   123,    -1,    17,   124,
+      -1,    26,   123,   161,   162,    -1,    29,   123,   161,   162,
+      -1,    28,   123,   161,   162,    -1,    31,   123,   161,   162,
+      -1,    30,   123,   161,   162,    -1,    33,   123,   161,   162,
+      -1,    32,   123,   161,   162,    -1,    35,   123,   161,   162,
+      -1,    34,   123,   161,   162,    -1,    37,   123,   161,   162,
+      -1,    36,   123,   161,   162,    -1,    39,   123,   161,   162,
+      -1,    38,   123,   161,   162,    -1,    41,   123,   161,   162,
+      -1,    40,   123,   161,   162,    -1,    42,   123,   129,   153,
+     130,   161,   162,    -1,    26,   123,   134,   123,   161,   162,
+      -1,    26,   123,   129,   155,   130,   161,   162,    -1,    52,
+     123,    -1,    53,   123,   133,   155,   162,    -1,    54,   123,
+     133,   155,   162,    -1,    54,   123,   133,   135,   147,   136,
+      -1,   126,   123,   161,   162,    -1,   126,   123,   134,   123,
+     161,   162,    -1,   126,   123,   129,   155,   130,   161,   162,
+      -1,    96,   123,    -1,    99,   129,   125,   130,   123,    -1,
+      99,   129,   125,   130,   123,   161,    -1,    97,   129,   125,
+     130,   123,   131,   153,   132,    -1,    98,   129,   125,   130,
+     123,   131,   153,   132,    -1,   105,   123,   155,    -1,    89,
+     123,   131,   153,   132,    -1,    93,   123,   131,   153,   132,
+      -1,    94,   123,   131,   153,   132,    -1,    95,   123,   131,
+     153,   132,    -1,    91,   129,   125,   130,   123,   162,    -1,
+      92,   123,   162,    -1,    90,   123,   162,    -1,    10,   123,
      124,    -1,    11,   123,   124,    -1,    49,   123,   133,   123,
-     161,    -1,    50,   123,    -1,    49,   123,   134,   123,   133,
-     123,   161,    -1,    50,   123,   134,   123,    -1,    51,   123,
-     123,   131,   152,   132,   160,   161,    -1,    51,   123,   134,
-     123,   123,   131,   152,   132,   160,   161,    -1,   102,   123,
-     131,   152,   132,    -1,   103,   123,   131,   152,   132,    -1,
-     104,   123,   131,   152,   132,    -1,    85,   123,   131,   152,
-     132,    -1,    86,   152,    -1,    87,   131,   123,   127,   123,
-     132,    -1,   106,   131,   186,   132,    -1,    62,   123,   161,
-      -1,    80,   123,   133,    76,    -1,    80,   123,   133,   186,
-      -1,    80,   123,   133,   135,   147,   136,    -1,    81,   123,
-     133,   186,    -1,    82,   124,    -1,    82,    -1,    82,   131,
-     125,   132,   124,    -1,    82,   131,   125,   132,    -1,    83,
-     124,    -1,    83,    -1,    83,   131,   125,   132,   124,    -1,
-      83,   131,   125,   132,    -1,     8,   131,   123,   132,    -1,
-      84,   124,    -1,    84,   131,   124,   132,   124,    -1,    84,
-     131,   123,   132,   124,    -1,    84,    -1,     4,   131,   186,
-     132,   135,   149,   136,    -1,     4,   131,   186,   132,   135,
-     149,   136,     6,   135,   149,   136,    -1,     5,   131,   186,
-     132,   135,   149,   136,    -1,     5,   131,   186,   132,   135,
-     149,   136,     6,   135,   149,   136,    -1,    79,   131,   186,
-     132,   158,   151,    -1,    79,   131,   186,   132,   135,   159,
-     136,    -1,    79,   131,   186,   132,   135,   159,   136,     6,
-     135,   159,   136,    -1,    80,   123,   133,   186,    -1,    81,
-     123,   133,   186,    -1,   158,   151,    -1,   159,   158,   151,
-      -1,   146,    -1,   133,   152,    -1,   146,    -1,   137,   162,
-      -1,   163,    -1,   162,   127,   163,    -1,    63,    -1,     3,
-      -1,    68,    -1,    69,    -1,    70,    -1,    67,    -1,    71,
-      -1,    74,    -1,    72,    -1,    75,    -1,    77,    -1,    73,
-      -1,    78,    -1,    54,    -1,    64,    -1,    65,    -1,    66,
-      -1,   123,    18,   131,   186,   132,   135,   149,   136,    -1,
-      25,   131,   186,   132,   135,   149,   136,    -1,    12,   131,
-     152,   132,   135,   149,   136,    -1,    56,   123,   135,   168,
-     136,   161,    -1,    56,   123,   131,   123,   132,   135,   168,
-     136,   161,    -1,    56,   123,   131,   123,   127,   124,   127,
-     123,   127,   123,   132,   161,    -1,    56,   123,   131,   123,
-     127,   124,   127,   123,   127,   123,   127,   123,   132,   161,
-      -1,    56,   123,   131,   123,   127,   124,   127,   123,   132,
-     161,    -1,    56,   123,   134,   123,   131,   123,   127,   124,
-     127,   123,   127,   123,   132,   161,    -1,    56,   123,   134,
-     123,   131,   123,   127,   124,   127,   123,   132,   161,    -1,
-      56,   123,   134,   123,   135,   168,   136,   161,    -1,    56,
-     123,   134,   123,   131,   123,   132,   135,   168,   136,   161,
-      -1,    59,   123,   135,   168,   136,   161,    -1,    59,   123,
-     131,   123,   132,   135,   168,   136,   161,    -1,    59,   123,
-     131,   123,   127,   124,   127,   123,   127,   123,   132,   161,
-      -1,    59,   123,   131,   123,   127,   124,   127,   123,   132,
-     161,    -1,    59,   123,   134,   123,   131,   123,   127,   124,
-     127,   123,   127,   123,   132,   161,    -1,    59,   123,   134,
-     123,   131,   123,   127,   124,   127,   123,   132,   161,    -1,
-      59,   123,   134,   123,   135,   168,   136,   161,    -1,    59,
-     123,   134,   123,   131,   123,   132,   135,   168,   136,   161,
-      -1,   174,    -1,   168,   174,    -1,   177,    -1,   169,   177,
-      -1,    58,   123,   135,   169,   136,   161,    -1,    58,   123,
-     131,   123,   127,   124,   127,   123,   127,   123,   132,   161,
-      -1,   172,    -1,   171,   172,    -1,   108,   153,   137,   149,
-      -1,   109,   131,   152,   132,   135,   171,   110,   137,   149,
-     136,    -1,   109,   131,   152,   132,   135,   171,   110,   137,
-     136,    -1,   109,   131,   152,   132,   135,   171,   136,    -1,
-     124,   133,   135,   175,   136,    -1,   123,   133,   135,   175,
-     136,    -1,   125,   133,   135,   175,   136,    -1,   126,   133,
-     135,   175,   136,    -1,   176,    -1,   176,   175,    -1,   123,
-     133,   186,   128,    -1,   124,   133,   129,   148,   130,    -1,
-     123,   133,   129,   148,   130,    -1,   107,   131,   123,   127,
-     125,   127,   125,   132,    -1,   123,    -1,   107,   131,   124,
-     127,   125,   127,   125,   132,    -1,   124,    -1,   178,    -1,
-     125,    -1,   126,    -1,    60,    -1,    61,    -1,   131,   186,
-     132,    -1,   138,   179,    -1,   123,   131,   132,    -1,   123,
-     131,   152,   132,    -1,   179,   139,   180,    -1,   179,    -1,
-     181,   140,   180,    -1,   181,   141,   180,    -1,   181,   142,
-     180,    -1,   181,   117,   180,    -1,   181,   118,   180,    -1,
-     180,    -1,   100,   131,   123,   132,    -1,    19,   131,   123,
-     127,   124,   132,    -1,    20,   131,   123,   127,   124,   132,
-      -1,    21,   131,   123,   127,   125,   132,    -1,    21,   131,
-     123,   127,   125,   127,   125,   132,    -1,    21,   131,   123,
-     132,    -1,   182,   143,   181,    -1,   182,   138,   181,    -1,
-     181,    -1,   183,   116,   182,    -1,   183,   111,   182,    -1,
-     183,   115,   182,    -1,   183,   113,   182,    -1,   183,   114,
-     182,    -1,   183,   112,   182,    -1,   178,   122,   178,    -1,
-     121,   183,    -1,   182,    -1,   184,   119,   183,    -1,   183,
-      -1,   185,   120,   184,    -1,   184,    -1,   185,    -1,   190,
-      -1,   191,    -1,   123,   133,   186,   128,    -1,    88,   128,
-      -1,   188,    -1,   188,   189,    -1,   188,    -1,     4,   131,
-     186,   132,   135,   189,   136,    -1,   187,    -1,   187,   192,
-      -1
+     162,    -1,    50,   123,    -1,    49,   123,   134,   123,   133,
+     123,   162,    -1,    50,   123,   134,   123,    -1,    51,   123,
+     123,   131,   153,   132,   161,   162,    -1,    51,   123,   134,
+     123,   123,   131,   153,   132,   161,   162,    -1,   102,   123,
+     131,   153,   132,    -1,   103,   123,   131,   153,   132,    -1,
+     104,   123,   131,   153,   132,    -1,    85,   123,   131,   153,
+     132,    -1,    86,   153,    -1,    87,   131,   123,   127,   123,
+     132,    -1,   106,   131,   187,   132,    -1,    62,   123,   162,
+      -1,    80,   123,   133,    76,    -1,    80,   123,   133,   187,
+      -1,    80,   123,   133,   135,   147,   136,    -1,    80,   123,
+     133,   135,   148,   136,    -1,    81,   123,   133,   187,    -1,
+      82,   124,    -1,    82,    -1,    82,   131,   125,   132,   124,
+      -1,    82,   131,   125,   132,    -1,    83,   124,    -1,    83,
+      -1,    83,   131,   125,   132,   124,    -1,    83,   131,   125,
+     132,    -1,     8,   131,   123,   132,    -1,    84,   124,    -1,
+      84,   131,   124,   132,   124,    -1,    84,   131,   123,   132,
+     124,    -1,    84,    -1,     4,   131,   187,   132,   135,   150,
+     136,    -1,     4,   131,   187,   132,   135,   150,   136,     6,
+     135,   150,   136,    -1,     5,   131,   187,   132,   135,   150,
+     136,    -1,     5,   131,   187,   132,   135,   150,   136,     6,
+     135,   150,   136,    -1,    79,   131,   187,   132,   159,   152,
+      -1,    79,   131,   187,   132,   135,   160,   136,    -1,    79,
+     131,   187,   132,   135,   160,   136,     6,   135,   160,   136,
+      -1,    80,   123,   133,   187,    -1,    81,   123,   133,   187,
+      -1,   159,   152,    -1,   160,   159,   152,    -1,   146,    -1,
+     133,   153,    -1,   146,    -1,   137,   163,    -1,   164,    -1,
+     163,   127,   164,    -1,    63,    -1,     3,    -1,    68,    -1,
+      69,    -1,    70,    -1,    67,    -1,    71,    -1,    74,    -1,
+      72,    -1,    75,    -1,    77,    -1,    73,    -1,    78,    -1,
+      54,    -1,    64,    -1,    65,    -1,    66,    -1,   123,    18,
+     131,   187,   132,   135,   150,   136,    -1,    25,   131,   187,
+     132,   135,   150,   136,    -1,    12,   131,   153,   132,   135,
+     150,   136,    -1,    56,   123,   135,   169,   136,   162,    -1,
+      56,   123,   131,   123,   132,   135,   169,   136,   162,    -1,
+      56,   123,   131,   123,   127,   124,   127,   123,   127,   123,
+     132,   162,    -1,    56,   123,   131,   123,   127,   124,   127,
+     123,   127,   123,   127,   123,   132,   162,    -1,    56,   123,
+     131,   123,   127,   124,   127,   123,   132,   162,    -1,    56,
+     123,   134,   123,   131,   123,   127,   124,   127,   123,   127,
+     123,   132,   162,    -1,    56,   123,   134,   123,   131,   123,
+     127,   124,   127,   123,   132,   162,    -1,    56,   123,   134,
+     123,   135,   169,   136,   162,    -1,    56,   123,   134,   123,
+     131,   123,   132,   135,   169,   136,   162,    -1,    59,   123,
+     135,   169,   136,   162,    -1,    59,   123,   131,   123,   132,
+     135,   169,   136,   162,    -1,    59,   123,   131,   123,   127,
+     124,   127,   123,   127,   123,   132,   162,    -1,    59,   123,
+     131,   123,   127,   124,   127,   123,   132,   162,    -1,    59,
+     123,   134,   123,   131,   123,   127,   124,   127,   123,   127,
+     123,   132,   162,    -1,    59,   123,   134,   123,   131,   123,
+     127,   124,   127,   123,   132,   162,    -1,    59,   123,   134,
+     123,   135,   169,   136,   162,    -1,    59,   123,   134,   123,
+     131,   123,   132,   135,   169,   136,   162,    -1,   175,    -1,
+     169,   175,    -1,   178,    -1,   170,   178,    -1,    58,   123,
+     135,   170,   136,   162,    -1,    58,   123,   131,   123,   127,
+     124,   127,   123,   127,   123,   132,   162,    -1,   173,    -1,
+     172,   173,    -1,   108,   154,   137,   150,    -1,   109,   131,
+     153,   132,   135,   172,   110,   137,   150,   136,    -1,   109,
+     131,   153,   132,   135,   172,   110,   137,   136,    -1,   109,
+     131,   153,   132,   135,   172,   136,    -1,   124,   133,   135,
+     176,   136,    -1,   123,   133,   135,   176,   136,    -1,   125,
+     133,   135,   176,   136,    -1,   126,   133,   135,   176,   136,
+      -1,   177,    -1,   177,   176,    -1,   123,   133,   187,   128,
+      -1,   123,   133,   129,   149,   130,   128,    -1,   124,   133,
+     129,   149,   130,    -1,   123,   133,   129,   149,   130,    -1,
+     107,   131,   123,   127,   125,   127,   125,   132,    -1,   123,
+      -1,   107,   131,   124,   127,   125,   127,   125,   132,    -1,
+     124,    -1,   179,    -1,   125,    -1,   126,    -1,    60,    -1,
+      61,    -1,   131,   187,   132,    -1,   138,   180,    -1,   123,
+     131,   132,    -1,   123,   131,   153,   132,    -1,   180,   139,
+     181,    -1,   180,    -1,   182,   140,   181,    -1,   182,   141,
+     181,    -1,   182,   142,   181,    -1,   182,   117,   181,    -1,
+     182,   118,   181,    -1,   181,    -1,   100,   131,   123,   132,
+      -1,    19,   131,   123,   127,   124,   132,    -1,    20,   131,
+     123,   127,   124,   132,    -1,    21,   131,   123,   127,   125,
+     132,    -1,    21,   131,   123,   127,   125,   127,   125,   132,
+      -1,    21,   131,   123,   132,    -1,   183,   143,   182,    -1,
+     183,   138,   182,    -1,   182,    -1,   184,   116,   183,    -1,
+     184,   111,   183,    -1,   184,   115,   183,    -1,   184,   113,
+     183,    -1,   184,   114,   183,    -1,   184,   112,   183,    -1,
+     179,   122,   179,    -1,   121,   184,    -1,   183,    -1,   185,
+     119,   184,    -1,   184,    -1,   186,   120,   185,    -1,   185,
+      -1,   186,    -1,   191,    -1,   192,    -1,   123,   133,   187,
+     128,    -1,    88,   128,    -1,   189,    -1,   189,   190,    -1,
+     189,    -1,     4,   131,   187,   132,   135,   190,   136,    -1,
+     188,    -1,   188,   193,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const grib_yytype_uint16 grib_yyrline[] =
 {
-       0,   258,   258,   260,   261,   262,   263,   265,   269,   272,
-     273,   274,   275,   278,   279,   282,   283,   284,   285,   288,
-     289,   290,   291,   292,   293,   294,   295,   296,   300,   301,
-     304,   305,   308,   309,   312,   316,   319,   322,   325,   328,
-     331,   334,   337,   340,   343,   346,   350,   353,   356,   359,
-     362,   365,   368,   371,   374,   377,   381,   384,   387,   390,
-     393,   396,   399,   402,   405,   408,   411,   414,   418,   421,
-     424,   427,   430,   433,   436,   439,   442,   445,   448,   451,
-     454,   457,   460,   464,   467,   470,   473,   476,   479,   482,
+       0,   260,   260,   262,   263,   264,   265,   267,   271,   274,
+     275,   276,   277,   280,   281,   285,   286,   289,   290,   291,
+     292,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+     307,   308,   311,   312,   315,   316,   319,   323,   326,   329,
+     332,   335,   338,   341,   344,   347,   350,   353,   357,   360,
+     363,   366,   369,   372,   375,   378,   381,   384,   388,   391,
+     394,   397,   400,   403,   406,   409,   412,   415,   418,   421,
+     425,   428,   431,   434,   437,   440,   443,   446,   449,   452,
+     455,   458,   461,   464,   467,   471,   474,   477,   480,   483,
      485,   488,   491,   494,   497,   500,   503,   506,   509,   512,
-     515,   518,   521,   523,   525,   528,   531,   534,   538,   542,
-     545,   548,   560,   572,   584,   587,   590,   592,   595,   598,
-     599,   600,   602,   605,   606,   607,   608,   609,   610,   611,
-     612,   614,   615,   616,   617,   618,   622,   623,   624,   625,
-     629,   630,   631,   634,   635,   638,   639,   643,   644,   647,
-     648,   651,   652,   655,   656,   657,   658,   659,   660,   661,
-     662,   663,   664,   665,   666,   667,   668,   669,   670,   671,
-     674,   677,   680,   683,   684,   685,   686,   687,   688,   689,
-     690,   691,   692,   693,   694,   695,   696,   697,   698,   699,
-     703,   704,   707,   708,   711,   712,   715,   716,   719,   723,
-     724,   725,   728,   730,   732,   734,   738,   739,   742,   746,
-     748,   752,   753,   754,   755,   758,   759,   760,   762,   763,
-     764,   765,   766,   767,   771,   772,   775,   776,   777,   778,
-     779,   780,   781,   782,   783,   784,   785,   786,   789,   790,
-     791,   794,   796,   797,   798,   799,   800,   801,   806,   807,
-     810,   811,   814,   815,   818,   824,   825,   828,   829,   832,
-     833,   836,   840,   843,   844
+     515,   518,   521,   524,   527,   530,   533,   535,   537,   540,
+     543,   546,   550,   554,   557,   560,   572,   584,   596,   599,
+     602,   604,   607,   610,   611,   612,   613,   615,   618,   619,
+     620,   621,   622,   623,   624,   625,   627,   628,   629,   630,
+     631,   635,   636,   637,   638,   642,   643,   644,   647,   648,
+     651,   652,   656,   657,   660,   661,   664,   665,   668,   669,
+     670,   671,   672,   673,   674,   675,   676,   677,   678,   679,
+     680,   681,   682,   683,   684,   687,   690,   693,   696,   697,
+     698,   699,   700,   701,   702,   703,   704,   705,   706,   707,
+     708,   709,   710,   711,   712,   716,   717,   720,   721,   724,
+     725,   728,   729,   732,   736,   737,   738,   741,   743,   745,
+     747,   751,   752,   755,   756,   760,   762,   766,   767,   768,
+     769,   772,   773,   774,   776,   777,   778,   779,   780,   781,
+     785,   786,   789,   790,   791,   792,   793,   794,   795,   796,
+     797,   798,   799,   800,   803,   804,   805,   808,   810,   811,
+     812,   813,   814,   815,   820,   821,   824,   825,   828,   829,
+     832,   838,   839,   842,   843,   846,   847,   850,   854,   857,
+     858
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+#if YYDEBUG || YYERROR_VERBOSE || 0
 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const grib_yytname[] =
@@ -932,16 +959,16 @@ static const char *const grib_yytname[] =
   "LT", "GT", "BIT", "BITOFF", "AND", "OR", "NOT", "IS", "IDENT", "STRING",
   "INTEGER", "FLOAT", "','", "';'", "'['", "']'", "'('", "')'", "'='",
   "'.'", "'{'", "'}'", "':'", "'-'", "'^'", "'*'", "'/'", "'%'", "'+'",
-  "$accept", "all", "empty", "dvalues", "integer_array", "instructions",
-  "instruction", "semi", "argument_list", "arguments", "argument",
-  "simple", "if_block", "when_block", "set", "set_list", "default",
-  "flags", "flag_list", "flag", "list_block", "while_block",
+  "$accept", "all", "empty", "dvalues", "svalues", "integer_array",
+  "instructions", "instruction", "semi", "argument_list", "arguments",
+  "argument", "simple", "if_block", "when_block", "set", "set_list",
+  "default", "flags", "flag_list", "flag", "list_block", "while_block",
   "trigger_block", "concept_block", "concept_list", "hash_array_list",
   "hash_array_block", "case_list", "case_value", "switch_block",
   "concept_value", "concept_conditions", "concept_condition",
   "hash_array_value", "string_or_ident", "atom", "power", "factor", "term",
   "condition", "conjonction", "disjonction", "expression", "rule",
-  "rule_entry", "rule_entries", "fact", "conditional_rule", "rules", 0
+  "rule_entry", "rule_entries", "fact", "conditional_rule", "rules", YY_NULL
 };
 #endif
 
@@ -972,68 +999,70 @@ static const grib_yytype_uint16 grib_yytoknum[] =
 static const grib_yytype_uint8 grib_yyr1[] =
 {
        0,   144,   145,   145,   145,   145,   145,   145,   146,   147,
-     147,   147,   147,   148,   148,   149,   149,   149,   149,   150,
-     150,   150,   150,   150,   150,   150,   150,   150,   151,   151,
-     152,   152,   153,   153,   154,   155,   155,   155,   155,   155,
-     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
-     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
-     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
-     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
-     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
-     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
-     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
-     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
-     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
-     155,   155,   155,   155,   155,   155,   156,   156,   156,   156,
-     157,   157,   157,   158,   158,   159,   159,   160,   160,   161,
-     161,   162,   162,   163,   163,   163,   163,   163,   163,   163,
-     163,   163,   163,   163,   163,   163,   163,   163,   163,   163,
-     164,   165,   166,   167,   167,   167,   167,   167,   167,   167,
-     167,   167,   167,   167,   167,   167,   167,   167,   167,   167,
-     168,   168,   169,   169,   170,   170,   171,   171,   172,   173,
-     173,   173,   174,   174,   174,   174,   175,   175,   176,   177,
-     177,   178,   178,   178,   178,   179,   179,   179,   179,   179,
-     179,   179,   179,   179,   180,   180,   181,   181,   181,   181,
-     181,   181,   181,   181,   181,   181,   181,   181,   182,   182,
-     182,   183,   183,   183,   183,   183,   183,   183,   183,   183,
-     184,   184,   185,   185,   186,   187,   187,   188,   188,   189,
-     189,   190,   191,   192,   192
+     147,   147,   147,   148,   148,   149,   149,   150,   150,   150,
+     150,   151,   151,   151,   151,   151,   151,   151,   151,   151,
+     152,   152,   153,   153,   154,   154,   155,   156,   156,   156,
+     156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
+     156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
+     156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
+     156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
+     156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
+     156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
+     156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
+     156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
+     156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
+     156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
+     156,   157,   157,   157,   157,   158,   158,   158,   159,   159,
+     160,   160,   161,   161,   162,   162,   163,   163,   164,   164,
+     164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
+     164,   164,   164,   164,   164,   165,   166,   167,   168,   168,
+     168,   168,   168,   168,   168,   168,   168,   168,   168,   168,
+     168,   168,   168,   168,   168,   169,   169,   170,   170,   171,
+     171,   172,   172,   173,   174,   174,   174,   175,   175,   175,
+     175,   176,   176,   177,   177,   178,   178,   179,   179,   179,
+     179,   180,   180,   180,   180,   180,   180,   180,   180,   180,
+     181,   181,   182,   182,   182,   182,   182,   182,   182,   182,
+     182,   182,   182,   182,   183,   183,   183,   184,   184,   184,
+     184,   184,   184,   184,   184,   184,   185,   185,   186,   186,
+     187,   188,   188,   189,   189,   190,   190,   191,   192,   193,
+     193
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
 static const grib_yytype_uint8 grib_yyr2[] =
 {
        0,     2,     1,     1,     1,     1,     1,     1,     0,     1,
-       3,     1,     3,     1,     3,     1,     2,     3,     2,     2,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
-       1,     1,     1,     3,     1,     7,    10,     7,    10,     7,
-       4,     7,     7,     7,     7,     4,     7,     7,    10,     7,
-       7,    10,     7,    10,     8,    12,    10,     7,     8,     8,
-       8,    10,     8,     9,     7,     2,     2,     4,     4,     4,
+       3,     1,     3,     1,     3,     1,     3,     1,     2,     3,
+       2,     2,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     2,     1,     1,     1,     3,     1,     7,    10,     7,
+      10,     7,     4,     7,     7,     7,     7,     4,     7,     7,
+      10,     7,     7,    10,     7,    10,     8,    12,    10,     7,
+       8,     8,     8,    10,     8,     9,     7,     2,     2,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     7,     6,     7,     2,     5,     5,     4,     6,
-       7,     2,     5,     8,     8,     3,     5,     5,     5,     5,
-       6,     3,     3,     3,     3,     5,     2,     7,     4,     8,
-      10,     5,     5,     5,     5,     2,     6,     4,     3,     4,
-       4,     6,     4,     2,     1,     5,     4,     2,     1,     5,
-       4,     4,     2,     5,     5,     1,     7,    11,     7,    11,
-       6,     7,    11,     4,     4,     2,     3,     1,     2,     1,
-       2,     1,     3,     1,     1,     1,     1,     1,     1,     1,
+       4,     4,     4,     4,     7,     6,     7,     2,     5,     5,
+       6,     4,     6,     7,     2,     5,     6,     8,     8,     3,
+       5,     5,     5,     5,     6,     3,     3,     3,     3,     5,
+       2,     7,     4,     8,    10,     5,     5,     5,     5,     2,
+       6,     4,     3,     4,     4,     6,     6,     4,     2,     1,
+       5,     4,     2,     1,     5,     4,     4,     2,     5,     5,
+       1,     7,    11,     7,    11,     6,     7,    11,     4,     4,
+       2,     3,     1,     2,     1,     2,     1,     3,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       8,     7,     7,     6,     9,    12,    14,    10,    14,    12,
-       8,    11,     6,     9,    12,    10,    14,    12,     8,    11,
-       1,     2,     1,     2,     6,    12,     1,     2,     4,    10,
-       9,     7,     5,     5,     5,     5,     1,     2,     4,     5,
-       5,     8,     1,     8,     1,     1,     1,     1,     1,     1,
-       3,     2,     3,     4,     3,     1,     3,     3,     3,     3,
-       3,     1,     4,     6,     6,     6,     8,     4,     3,     3,
-       1,     3,     3,     3,     3,     3,     3,     3,     2,     1,
-       3,     1,     3,     1,     1,     1,     1,     4,     2,     1,
-       2,     1,     7,     1,     2
+       1,     1,     1,     1,     1,     8,     7,     7,     6,     9,
+      12,    14,    10,    14,    12,     8,    11,     6,     9,    12,
+      10,    14,    12,     8,    11,     1,     2,     1,     2,     6,
+      12,     1,     2,     4,    10,     9,     7,     5,     5,     5,
+       5,     1,     2,     4,     6,     5,     5,     8,     1,     8,
+       1,     1,     1,     1,     1,     1,     3,     2,     3,     4,
+       3,     1,     3,     3,     3,     3,     3,     1,     4,     6,
+       6,     6,     8,     4,     3,     3,     1,     3,     3,     3,
+       3,     3,     3,     3,     2,     1,     3,     1,     3,     1,
+       1,     1,     1,     4,     2,     1,     2,     1,     7,     1,
+       2
 };
 
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+   Performed when YYTABLE doesn't specify something else to do.  Zero
    means the default is an error.  */
 static const grib_yytype_uint16 grib_yydefact[] =
 {
@@ -1042,573 +1071,584 @@ static const grib_yytype_uint16 grib_yydefact[] =
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   124,   128,   135,     0,     8,     0,     0,     0,     0,
+       0,   129,   133,   140,     0,     8,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     2,     5,    15,     0,    20,    26,    21,    22,    23,
-      24,     3,     4,    25,    27,   190,   192,   263,   261,   255,
-     256,     6,     0,     0,     0,     0,     0,     0,     0,     8,
-       0,     8,     8,     0,    65,    66,     0,     8,     0,     0,
+       0,     2,     5,    17,     0,    22,    28,    23,    24,    25,
+      26,     3,     4,    27,    29,   195,   197,   269,   267,   261,
+     262,     6,     0,     0,     0,     0,     0,     0,     0,     8,
+       0,     8,     8,     0,    67,    68,     0,     8,     0,     0,
        8,     8,     8,     8,     8,     8,     8,     8,     8,     8,
        8,     8,     8,     8,     0,     0,     0,     0,     0,     0,
-       0,   106,     0,    85,     0,     0,     0,     0,     0,     0,
-       8,     0,     0,     0,   123,     0,   127,     0,   132,     0,
-       0,     0,     0,     0,   218,   219,     0,     0,     0,   212,
-     214,   216,   217,     0,     0,    30,   115,    31,    32,   215,
-     225,   231,   240,   249,   251,   253,   254,    34,     0,   258,
-       0,     8,     0,     8,     0,     0,     0,    91,     0,     0,
+       0,   110,     0,    87,     0,     0,     0,     0,     0,     0,
+       8,     0,     0,     0,   128,     0,   132,     0,   137,     0,
+       0,     0,     0,     0,   224,   225,     0,     0,     0,   218,
+     220,   222,   223,     0,     0,    32,   119,    33,    34,   221,
+     231,   237,   246,   255,   257,   259,   260,    36,     0,   264,
+       0,     8,     0,     8,     0,     0,     0,    94,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     8,     0,     0,
-       0,     0,     8,     0,     1,     0,     0,     0,    18,    16,
-      19,     0,     0,     0,   191,     0,     0,   193,     0,     0,
-     264,     0,     0,     0,     0,     0,   103,   104,     0,     0,
-       8,     8,   147,     8,     8,     0,     0,     0,     0,     8,
+       0,     0,     8,     0,     1,     0,     0,     0,    20,    18,
+      21,     0,     0,     0,   196,     0,     0,   198,     0,     0,
+     270,     0,     0,     0,     0,     0,   107,   108,     0,     0,
+       8,     8,   152,     8,     8,     0,     0,     0,     0,     8,
        0,     0,     8,     8,     8,     8,     8,     8,     8,     8,
        8,     8,     8,     8,     8,     8,     8,     0,     0,     8,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     8,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   149,
-     118,     0,     0,     0,     0,     0,     0,     0,     8,     0,
-       0,     0,     0,     0,   248,     0,     0,   215,   221,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   154,
+     122,     0,     0,     0,     0,     0,     0,     0,     8,     0,
+       0,     0,     0,     0,   254,     0,     0,   221,   227,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     8,   102,
-       0,   101,     8,     8,     8,     0,     0,     0,     0,     8,
-       8,     8,    95,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     8,   106,
+       0,   105,     8,     8,     8,     0,     0,     0,     0,     8,
+       8,     8,    99,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     8,
-       0,     0,     0,    17,     0,     0,     0,     0,     0,     0,
-       0,     0,   131,     0,     0,     0,     0,     0,   148,    40,
-      45,     0,     0,     0,     8,    67,     0,     0,    69,    68,
-      71,    70,    73,    72,    75,    74,    77,    76,    79,    78,
-      81,    80,     0,     0,     0,     0,     0,     0,     8,     0,
-     108,     8,     0,     8,     8,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   154,   166,   153,   167,   168,   169,
-     158,   155,   156,   157,   159,   161,   164,   160,   162,   163,
-     165,   150,   151,     0,   119,     0,   120,   122,   126,   130,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   222,
-       0,   220,    33,   212,   247,   224,   229,   230,   226,   227,
-     228,   239,   238,   242,   246,   244,   245,   243,   241,   250,
-     252,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   117,     0,     0,     8,     8,     8,
-       8,     8,    13,     0,     0,     0,   206,   257,     0,     0,
-       0,     0,     8,    88,     0,     0,     0,     0,     0,     8,
-       8,     0,     8,     8,     8,     8,     0,     8,     8,     8,
-       8,     8,     8,     0,     8,     0,     0,   105,     0,     0,
-       0,    86,    87,     8,     0,     0,     0,     0,     8,     0,
-       8,     0,     0,     0,     0,     8,     0,     0,     0,     0,
-       0,    11,     9,     0,   125,   129,   134,   133,   114,     0,
-       0,     0,   237,   232,     0,     0,   223,     0,    96,     8,
-      97,    98,    99,     0,     0,    92,     0,   111,   112,   113,
-       0,     0,     0,     0,     0,     0,     0,     0,   210,     0,
-     203,   207,   209,   202,   204,     8,     8,   205,     0,     0,
-       0,     0,   259,     0,     0,     8,     8,     8,     8,     0,
-       8,     8,     8,     8,     0,     8,    83,     8,     8,     8,
-       8,     8,     8,     8,     8,     8,     8,     8,     8,     8,
-       8,     8,     8,     8,     0,     0,     0,     0,   173,     0,
-     194,     0,     0,     0,     0,   182,   152,     0,     0,     0,
-       0,    28,   140,     0,   121,     0,     0,     0,     0,     0,
-     116,   100,     8,     8,     8,     0,     0,   196,     0,     8,
-       8,     8,     8,     8,    14,     0,     8,    89,     0,     0,
-       0,   136,   260,   262,   138,     0,    35,     0,    37,   172,
-      39,    46,    41,    49,   171,    84,     0,    50,     0,    52,
-      82,     0,    47,     0,    34,     8,    57,     0,     8,     0,
-     107,     8,     0,    64,     0,     0,     0,     0,     8,     0,
-       0,     0,     0,     0,     8,     0,     0,   145,   141,     0,
-      29,    12,    10,   233,   234,     0,   235,     0,     0,     0,
-       0,     8,     0,     0,   201,   197,     0,    42,    44,    43,
-       8,     8,   208,    90,     0,     0,     8,     8,     8,     8,
-       8,     8,     0,    54,     8,    60,     8,   109,     8,     0,
-       8,     0,     0,   180,     0,     0,     8,     0,     0,   188,
-     143,   144,     0,   146,     0,     0,     0,    93,    94,    62,
-       0,     0,   170,    58,    59,     0,     0,     8,     8,     8,
-       8,     8,     8,     0,     8,    63,     8,     0,     8,   174,
-       0,     0,     0,     0,     8,   183,     0,     0,     0,   236,
-     211,   213,   198,   200,     0,     0,     0,    36,    38,    51,
-      53,    48,    56,     0,    61,   110,     0,   177,     0,     8,
-       0,     0,   185,     0,     8,     0,   199,   137,   139,     8,
-       0,     8,     0,     8,   181,     8,     8,     0,     8,   189,
-     142,    55,     0,   175,     0,   179,   195,   184,     0,   187,
-       8,     8,     8,   176,   178,   186
+       0,     0,     0,    19,     0,     0,     0,     0,     0,     0,
+       0,     0,   136,     0,     0,     0,     0,     0,   153,    42,
+      47,     0,     0,     0,     8,    69,     0,     0,    71,    70,
+      73,    72,    75,    74,    77,    76,    79,    78,    81,    80,
+      83,    82,     0,     0,     0,     0,     0,     0,     8,     0,
+     112,     8,     0,     8,     0,     8,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   159,   171,   158,   172,   173,
+     174,   163,   160,   161,   162,   164,   166,   169,   165,   167,
+     168,   170,   155,   156,     0,   123,     0,   124,   127,   131,
+     135,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     228,     0,   226,    35,   218,   253,   230,   235,   236,   232,
+     233,   234,   245,   244,   248,   252,   250,   251,   249,   247,
+     256,   258,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   121,     0,     0,     8,     8,
+       8,     8,     8,    15,     0,     0,     0,   211,   263,     0,
+       0,     0,     0,     8,    91,     0,     0,     0,     0,     0,
+       8,     8,     0,     8,     8,     8,     8,     0,     8,     8,
+       8,     8,     8,     8,     0,     8,     0,     0,   109,     0,
+       0,     0,    88,    11,     9,     0,    89,     8,     0,     0,
+       0,     0,     8,     0,     8,     0,     0,     0,     0,     8,
+       0,     0,     0,     0,     0,    13,     0,     0,   130,   134,
+     139,   138,   118,     0,     0,     0,   243,   238,     0,     0,
+     229,     0,   100,     8,   101,   102,   103,     0,     0,     8,
+       0,   115,   116,   117,     0,     0,     0,     0,     0,     0,
+       0,     0,   216,     0,   208,   212,   215,   207,   209,     8,
+       8,   210,     0,     0,     0,     0,   265,     0,     0,     8,
+       8,     8,     8,     0,     8,     8,     8,     8,     0,     8,
+      85,     8,     8,     8,     8,     8,     8,     8,     8,     8,
+       8,     8,     8,     8,     8,     8,     8,     0,    90,     8,
+       0,     0,     0,     0,   178,     0,   199,     0,     0,     0,
+       0,   187,   157,     0,     0,     0,     0,    30,   145,   125,
+       0,   126,     0,     0,     0,     0,     0,   120,   104,     8,
+       8,    96,     8,     0,     0,   201,     0,     8,     8,     8,
+       8,     8,    16,     0,     0,     8,    92,     0,     0,     0,
+     141,   266,   268,   143,     0,    37,     0,    39,   177,    41,
+      48,    43,    51,   176,    86,     0,    52,     0,    54,    84,
+       0,    49,     0,    36,     8,    59,     0,     8,     0,   111,
+       8,     0,    12,    10,    66,     0,     0,     0,     0,     8,
+       0,     0,     0,     0,     0,     8,     0,     0,   150,   146,
+       0,    31,    14,   239,   240,     0,   241,     0,     0,     0,
+       0,     8,     0,     0,   206,   202,     0,    44,    46,    45,
+       8,     8,     0,   213,    93,     0,     0,     8,     8,     8,
+       8,     8,     8,     0,    56,     8,    62,     8,   113,     8,
+       0,     8,     0,     0,   185,     0,     0,     8,     0,     0,
+     193,   148,   149,     0,   151,     0,     0,     0,    97,    98,
+      64,     0,     0,   175,    60,    61,     0,     0,     0,     8,
+       8,     8,     8,     8,     8,     0,     8,    65,     8,     0,
+       8,   179,     0,     0,     0,     0,     8,   188,     0,     0,
+       0,   242,   217,   219,   203,   205,     0,   214,     0,     0,
+      38,    40,    53,    55,    50,    58,     0,    63,   114,     0,
+     182,     0,     8,     0,     0,   190,     0,     8,     0,   204,
+     142,   144,     8,     0,     8,     0,     8,   186,     8,     8,
+       0,     8,   194,   147,    57,     0,   180,     0,   184,   200,
+     189,     0,   192,     8,     8,     8,   181,   183,   191
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const grib_yytype_int16 grib_yydefgoto[] =
 {
-      -1,    80,   289,   563,   503,   611,    83,   662,   176,   177,
-     178,    84,    85,    86,   659,   660,   243,   290,   441,   442,
-      87,    88,    89,    90,    91,    92,    93,   676,   677,    94,
-      95,   505,   506,    96,   179,   180,   181,   182,   183,   184,
-     185,   186,   187,    97,   612,   613,    99,   100,   101
+      -1,    80,   289,   545,   567,   504,   615,    83,   668,   176,
+     177,   178,    84,    85,    86,   665,   666,   243,   290,   442,
+     443,    87,    88,    89,    90,    91,    92,    93,   684,   685,
+      94,    95,   506,   507,    96,   179,   180,   181,   182,   183,
+     184,   185,   186,   187,    97,   616,   617,    99,   100,   101
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -650
+#define YYPACT_NINF -655
 static const grib_yytype_int16 grib_yypact[] =
 {
-    1303,  -650,  -114,   -96,   -69,   164,   -39,   -26,   -10,   -15,
-       3,    31,    69,    41,   106,   108,   234,   121,   128,   139,
-     207,   214,   220,   245,   258,   260,   275,   277,   285,   287,
-     288,   289,   248,   286,   294,   291,   292,   295,   299,   300,
-     301,   302,   303,   304,   305,   306,   307,   308,   183,   309,
-     310,  -109,   -18,   -16,   314,   493,   311,   329,   315,   316,
-     312,   335,   337,   338,   339,   340,   336,   344,   346,   351,
-     341,   345,   359,   360,   353,   354,    -6,   355,   356,   -83,
-     436,  -650,  -650,  1406,   358,  -650,  -650,  -650,  -650,  -650,
-    -650,   247,   100,  -650,  -650,  -650,  -650,    19,  -650,  -650,
-    -650,  -650,   493,   493,   364,   366,   367,   369,   370,   493,
-     371,   233,   362,   372,  -650,  -650,   493,    16,   373,   374,
-     362,   362,   362,   362,   362,   362,   362,   362,   362,   362,
-     362,   362,   362,   362,   382,   375,   376,   384,   377,   378,
-      57,   383,   -68,  -650,   386,   389,   385,    32,    86,   185,
-     387,   493,   390,   392,  -650,   404,  -650,   409,  -650,   161,
-     405,   410,   412,   413,  -650,  -650,   414,   415,   493,   416,
-    -650,  -650,  -650,   493,   -22,  -650,  -650,  -650,   422,   433,
-     417,  -650,     6,   -90,   240,   438,   439,  -650,   435,  -650,
-     432,   387,   440,   387,   437,   441,   442,  -650,   444,   445,
-     446,   450,   447,   448,   449,   493,   493,   493,   453,   278,
-     -17,   429,    27,   431,  -650,   456,    10,   454,  1634,  -650,
-    -650,   434,   443,   457,  -650,   458,   459,  -650,   463,   462,
-    -650,   464,   465,   466,   473,   474,  -650,  -650,   475,   478,
-     493,   493,  -650,   387,   387,   479,   480,   493,   487,   387,
-     481,   483,   387,   387,   387,   387,   387,   387,   387,   387,
-     387,   387,   387,   387,   387,   387,   493,   490,   492,   493,
-     496,   497,   505,   510,   513,   507,   521,   493,   493,   493,
-     528,   530,   247,   531,   100,   532,   533,   247,   629,  -650,
-    -650,   527,   132,   493,   529,   536,   537,   538,   493,   534,
-     540,   548,   551,   210,   240,   541,   543,  -650,  -650,   493,
-     -82,   -22,   -22,   -22,   -22,   -22,   -22,   866,   866,   866,
-     866,   866,   866,   866,   866,   493,   493,   549,   493,  -650,
-     547,  -650,   493,   493,   493,   556,   557,   558,   559,   493,
-     493,   493,  -650,   573,   576,   493,   578,   579,   580,   581,
-     589,   535,   599,   461,   535,   599,   599,   493,   600,   387,
-     599,   493,    -3,  -650,   591,   592,   595,   601,   493,   493,
-     593,   594,  -650,   608,   610,   602,   252,   603,  -650,  -650,
-    -650,   611,   605,   606,   362,  -650,   615,   619,  -650,  -650,
-    -650,  -650,  -650,  -650,  -650,  -650,  -650,  -650,  -650,  -650,
-    -650,  -650,   613,   621,   622,   617,   624,   627,   387,   618,
-    -650,   493,   630,   387,   387,   620,   -71,   129,   -79,   628,
-     -25,    82,   140,   -31,  -650,  -650,  -650,  -650,  -650,  -650,
-    -650,  -650,  -650,  -650,  -650,  -650,  -650,  -650,  -650,  -650,
-    -650,   631,  -650,   -44,  -650,   254,  -650,  -650,   632,   633,
-     635,   636,   637,   634,   640,   111,   639,   641,   645,  -650,
-     648,  -650,  -650,  -650,  -650,  -650,  -650,  -650,  -650,  -650,
-    -650,     6,     6,   -90,   -90,   -90,   -90,   -90,   -90,   240,
-     438,   650,   649,   660,   652,   653,   655,   665,   666,   667,
-     669,   661,   663,   664,  -650,   668,   670,   493,   493,   493,
-     493,   493,  -650,    83,   675,   626,   599,  -650,   178,   662,
-     674,   685,   362,  -650,   681,   686,   688,  1531,  1634,   182,
-     192,  1634,   362,   362,   362,   362,  1634,   362,   387,   193,
-     194,   362,   199,   822,   362,   855,   694,  -650,   676,   696,
-     695,  -650,  -650,   362,   705,   697,   710,   247,   387,   711,
-     387,   712,   702,   715,   247,   387,   629,   716,   717,   313,
-     718,  -650,  -650,   -40,  -650,  -650,  -650,  -650,  -650,   720,
-     721,   638,  -650,  -650,   722,   723,  -650,   719,  -650,   387,
-    -650,  -650,  -650,   724,   725,  -650,   493,  -650,  -650,  -650,
-     656,   714,   728,   729,   730,   731,   735,   727,  -650,   493,
-    -650,  -650,  -650,  -650,  -650,   362,   387,  -650,   733,   734,
-      11,   737,   -74,   742,   743,   493,   387,   493,   387,   744,
-     387,   387,   387,   387,   745,   387,  -650,   493,   387,   493,
-     387,   387,   493,   387,   493,   362,   387,   493,   362,   493,
-     387,   362,   493,   387,   757,   247,   118,    71,  -650,   761,
-    -650,   762,   247,   120,    76,  -650,  -650,   758,   759,   718,
-     -54,  -650,   726,   270,  -650,   763,   764,   127,   766,   767,
-    -650,  -650,   493,   493,   362,   493,   -76,  -650,  1634,   387,
-     387,   387,   362,   362,  -650,   769,   387,  -650,  1634,   -74,
-     165,   844,  -650,  -650,   884,   768,  -650,   770,  -650,  -650,
-    -650,  -650,  -650,  -650,  -650,  -650,   771,  -650,   772,  -650,
-    -650,   773,  -650,   775,   543,   -56,  -650,   776,   387,   778,
-    -650,   387,   779,  -650,   781,    80,   789,   782,   387,   791,
-     795,   104,   796,   786,   387,   493,   493,   726,   893,   718,
-    -650,  -650,  -650,  -650,  -650,   780,  -650,   798,   799,   800,
-     801,   387,   793,   794,  -650,  -650,   792,  -650,  -650,  -650,
-     387,   387,  -650,  -650,   802,   803,   362,   362,   362,   362,
-     362,   362,   804,  -650,   362,  -650,   387,  -650,   362,   134,
-     387,   807,   247,  -650,   812,   141,   387,   813,   247,  -650,
-    -650,  -650,   806,   726,   817,   818,   824,  -650,  -650,  -650,
-    1634,  1174,  -650,  -650,  -650,  1634,  1634,   387,   387,   387,
-     387,   387,   387,   821,   387,  -650,   387,   831,   387,  -650,
-     834,   110,   835,   836,   387,  -650,   838,   156,   313,  -650,
-    -650,  -650,  -650,  -650,   827,   828,   829,  -650,  -650,  -650,
-    -650,  -650,  -650,   837,  -650,  -650,   151,  -650,   177,   387,
-     840,   842,  -650,   180,   387,   -50,  -650,  -650,  -650,   387,
-     845,   387,   847,   387,  -650,   387,   387,   852,   387,  -650,
-    -650,  -650,   850,  -650,   851,  -650,  -650,  -650,   853,  -650,
-     387,   387,   387,  -650,  -650,  -650
+    1332,  -655,  -107,   -78,   -33,   131,   -15,    18,    20,    28,
+      55,    64,    93,    78,   130,   150,   141,   173,   211,   213,
+     220,   232,   236,   265,   267,   268,   269,   270,   271,   273,
+     275,   276,   165,   192,   277,   272,   274,   279,   282,   283,
+     284,   285,   286,   287,   288,   290,   291,   292,   289,   294,
+     295,   -85,   -49,    25,   296,   897,   293,   299,   298,   300,
+     301,   305,   306,   308,   309,   310,   319,   322,   323,   330,
+     311,   337,   338,   339,   332,   333,   -12,   335,   336,   -42,
+     422,  -655,  -655,  1435,   342,  -655,  -655,  -655,  -655,  -655,
+    -655,   224,   118,  -655,  -655,  -655,  -655,    16,  -655,  -655,
+    -655,  -655,   897,   897,   343,   340,   346,   348,   355,   897,
+     356,   -86,   354,   363,  -655,  -655,   897,    59,   364,   365,
+     354,   354,   354,   354,   354,   354,   354,   354,   354,   354,
+     354,   354,   354,   354,   367,   368,   373,   361,   374,   376,
+     186,   375,   -29,  -655,   369,   377,   366,    46,   -11,   171,
+     371,   897,   379,   380,  -655,   392,  -655,   395,  -655,   128,
+     393,   401,   411,   412,  -655,  -655,   413,   415,   897,   416,
+    -655,  -655,  -655,   897,   -46,  -655,  -655,  -655,   421,   428,
+     414,  -655,   -53,   -48,   143,   432,   436,  -655,   439,  -655,
+     433,   371,   438,   371,   435,   437,   440,  -655,   442,   445,
+     448,   449,   450,   451,   455,   897,   897,   897,   457,   454,
+      24,   456,    61,   458,  -655,   459,     7,   472,  1663,  -655,
+    -655,   463,   464,   465,  -655,   466,   467,  -655,   470,   469,
+    -655,   474,   475,   476,   479,   478,  -655,  -655,   480,   481,
+     897,   897,  -655,   371,   371,   483,   484,   897,   495,   371,
+     489,   491,   371,   371,   371,   371,   371,   371,   371,   371,
+     371,   371,   371,   371,   371,   371,   897,   498,   499,   897,
+     501,   502,   510,   511,   512,   473,   516,   897,   739,   897,
+     517,   519,   224,   526,   118,   530,   531,   224,   372,  -655,
+    -655,   523,   702,   897,   524,   525,   527,   533,   897,   545,
+     560,   565,   566,   206,   143,    82,   558,  -655,  -655,   897,
+     -73,   -46,   -46,   -46,   -46,   -46,   -46,  1029,  1029,  1029,
+    1029,  1029,  1029,  1029,  1029,   897,   897,   494,   897,  -655,
+     564,  -655,   897,   897,   897,   567,   568,   569,   570,   897,
+     897,   897,  -655,   571,   572,   897,   574,   575,   576,   577,
+     578,   585,   579,   573,   585,   579,   579,   897,   588,   371,
+     579,   897,    13,  -655,   580,   581,   583,   584,   897,   897,
+     582,   589,  -655,   591,   596,   590,   230,   594,  -655,  -655,
+    -655,   597,   592,   599,   354,  -655,   608,   613,  -655,  -655,
+    -655,  -655,  -655,  -655,  -655,  -655,  -655,  -655,  -655,  -655,
+    -655,  -655,   609,   615,   618,   612,   623,   624,   371,   617,
+    -655,   897,   628,   371,   254,   371,   621,    77,    19,   -82,
+     627,   -52,    84,   178,   -68,  -655,  -655,  -655,  -655,  -655,
+    -655,  -655,  -655,  -655,  -655,  -655,  -655,  -655,  -655,  -655,
+    -655,  -655,   629,  -655,   -59,  -655,   107,  -655,  -655,   640,
+     641,   642,   643,   636,   644,   645,    94,   637,   646,   647,
+    -655,   638,  -655,  -655,  -655,  -655,  -655,  -655,  -655,  -655,
+    -655,  -655,   -53,   -53,   -48,   -48,   -48,   -48,   -48,   -48,
+     143,   432,   652,   648,   653,   649,   656,   657,   654,   668,
+     669,   670,   666,   672,   673,  -655,   671,   675,   897,   897,
+     897,   897,   897,  -655,   181,   677,   665,   579,  -655,   247,
+     678,   679,   683,   354,  -655,   680,   676,   687,  1560,  1663,
+     -66,    86,  1663,   354,   354,   354,   354,  1663,   354,   371,
+     193,   198,   354,   199,   933,   354,   986,   689,  -655,   698,
+     690,   693,  -655,  -655,  -655,  -104,  -655,   354,   655,   694,
+     707,   224,   371,   710,   371,   712,   696,   718,   224,   371,
+     372,   719,   720,   302,   716,  -655,   -21,   -18,  -655,  -655,
+    -655,  -655,  -655,   721,   724,   725,  -655,  -655,   726,   727,
+    -655,   717,  -655,   371,  -655,  -655,  -655,   723,   728,   354,
+     897,  -655,  -655,  -655,   747,   722,   729,   734,   735,   736,
+     740,   731,  -655,   888,  -655,  -655,  -655,  -655,  -655,   354,
+     371,  -655,   738,   741,    11,   744,   -71,   745,   746,   897,
+     371,   897,   371,   748,   371,   371,   371,   371,   749,   371,
+    -655,   897,   371,   897,   371,   371,   897,   371,   897,   354,
+     371,   897,   354,   897,   371,   354,   897,   259,  -655,   371,
+     756,   224,   116,   -13,  -655,   759,  -655,   760,   224,   117,
+      22,  -655,  -655,   742,   755,   716,   -62,  -655,   730,  -655,
+     765,  -655,   758,   761,   154,   764,   767,  -655,  -655,   897,
+     897,  -655,   354,   897,   -70,  -655,  1663,   371,   371,   371,
+     354,   354,  -655,   585,   743,   371,  -655,  1663,   -71,   434,
+     886,  -655,  -655,   890,   768,  -655,   770,  -655,  -655,  -655,
+    -655,  -655,  -655,  -655,  -655,   771,  -655,   772,  -655,  -655,
+     773,  -655,   774,   558,   -64,  -655,   778,   371,   779,  -655,
+     371,   780,  -655,  -655,  -655,   781,    60,   789,   762,   371,
+     791,   792,    74,   795,   785,   371,   897,   897,   730,   915,
+     716,  -655,  -655,  -655,  -655,   797,  -655,   798,   799,   793,
+     794,   371,   800,   802,  -655,  -655,   804,  -655,  -655,  -655,
+     371,   371,   251,  -655,  -655,   806,   807,   354,   354,   354,
+     354,   354,   354,   812,  -655,   354,  -655,   371,  -655,   354,
+     156,   371,   808,   224,  -655,   818,   158,   371,   819,   224,
+    -655,  -655,  -655,   815,   730,   823,   824,   827,  -655,  -655,
+    -655,  1663,  1170,  -655,  -655,  -655,   832,  1663,  1663,   371,
+     371,   371,   371,   371,   371,   828,   371,  -655,   371,   838,
+     371,  -655,   839,   104,   840,   841,   371,  -655,   842,   111,
+     302,  -655,  -655,  -655,  -655,  -655,   811,  -655,   830,   831,
+    -655,  -655,  -655,  -655,  -655,  -655,   836,  -655,  -655,   160,
+    -655,   166,   371,   837,   844,  -655,   168,   371,   -50,  -655,
+    -655,  -655,   371,   848,   371,   849,   371,  -655,   371,   371,
+     850,   371,  -655,  -655,  -655,   845,  -655,   846,  -655,  -655,
+    -655,   847,  -655,   371,   371,   371,  -655,  -655,  -655
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const grib_yytype_int16 grib_yypgoto[] =
 {
-    -650,  -650,     8,  -650,   642,     0,  -650,  -649,   525,  -306,
-    -189,  -650,  -650,  -650,  -441,   159,   -53,   191,  -650,   428,
-    -650,  -650,  -650,  -650,  -278,   704,  -650,  -650,   318,  -650,
-     -73,  -349,  -650,   -91,  -141,   832,    46,    88,    67,  -163,
-     682,  -650,   -51,  -650,    13,   398,  -650,  -650,   898
+    -655,  -655,     5,   528,  -655,  -351,     0,  -655,  -654,   -16,
+    -307,  -178,  -655,  -655,  -655,  -443,   145,   549,   108,  -655,
+     423,  -655,  -655,  -655,  -655,  -254,   697,  -655,  -655,   307,
+    -655,   -84,  -347,  -655,   -80,  -148,   816,   -47,    69,   -44,
+    -164,   674,  -655,   -54,  -655,    10,   382,  -655,  -655,   895
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If zero, do what YYDEFACT says.
-   If YYTABLE_NINF, syntax error.  */
+   number is the opposite.  If YYTABLE_NINF, syntax error.  */
 #define YYTABLE_NINF -9
 static const grib_yytype_int16 grib_yytable[] =
 {
-      82,   227,   560,   462,   418,   304,   509,   510,    81,   423,
-     737,   514,   208,    98,    57,   154,   342,   102,   224,   346,
-     347,   348,   155,   228,   772,   167,   557,   558,   208,   208,
-     557,   558,   675,   307,   753,   103,   557,   558,   164,   165,
-     212,   463,   170,   349,   221,   222,    78,   223,   317,   229,
-     213,   231,   232,   318,   350,   275,   544,   548,   383,   244,
-     754,   545,   104,   175,   249,   246,   276,   252,   253,   254,
-     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   288,   738,   219,   107,   167,   870,   663,   413,   414,
-     793,   559,   221,   222,    78,   223,   664,   108,   225,   226,
-     291,   169,   170,   171,   172,   555,   156,    57,   158,   173,
-      98,   550,   354,   157,   110,   159,   174,   175,   355,   242,
-     242,   109,   306,   312,   313,   242,   111,   209,   242,   242,
-     242,   242,   242,   242,   242,   242,   242,   242,   242,   242,
-     242,   242,   229,   362,   690,   247,   314,   315,   316,   241,
-     248,   161,   162,   163,   112,   343,   357,   601,   353,   359,
-     241,   358,   479,   280,   114,   115,   281,   282,   511,   464,
-     307,   307,   307,   307,   307,   307,   307,   307,   307,   307,
-     307,   307,   307,   307,   161,   162,   163,   346,   347,   348,
-     272,   273,   164,   165,   221,   222,    78,   223,   113,   221,
-     222,    78,   223,   221,   222,    78,   223,   728,   444,   551,
-     597,   349,   734,   598,   552,   175,   780,   283,   363,   739,
-     242,   284,   350,   225,   226,   164,   165,   221,   222,    78,
-     223,   117,   166,   221,   222,    78,   223,   116,   571,   167,
-     786,   446,   447,   572,   120,   726,   849,   732,   175,   175,
-     727,   121,   733,   168,   745,   169,   170,   171,   172,   746,
-     546,   817,   122,   173,   547,   166,   818,   445,   823,   647,
-     174,   553,   167,   824,   175,   554,   654,   175,   860,   221,
-     222,    78,   223,   861,   296,   297,   168,   175,   169,   170,
-     171,   172,   854,   105,   496,   106,   173,   161,   162,   163,
-     346,   347,   348,   174,   862,   597,   175,   867,   602,   863,
-     515,   615,   868,   175,   151,   241,   285,   516,   353,   286,
-     287,   617,   627,   629,   349,   241,   241,   241,   632,   227,
-     123,   528,   241,   457,   458,   350,   175,   124,   164,   165,
-     175,   175,   175,   125,   635,   224,   638,   175,   175,   175,
-     224,   319,   320,   321,   322,   323,   324,   465,   466,   467,
-     468,   469,   470,   118,   240,   119,   241,   725,   126,   752,
-     221,   222,    78,   223,   731,   522,   523,   135,   166,   561,
-     562,   127,   329,   128,   331,   167,   473,   474,   475,   476,
-     477,   478,   242,   557,   558,   741,   742,   674,   129,   168,
-     130,   169,   170,   171,   172,   471,   472,   351,   131,   173,
-     132,   133,   134,   352,   739,   136,   174,   137,   140,   175,
-     138,   139,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   152,   153,   379,   380,   214,   160,   190,   191,
-     385,   192,   188,   388,   389,   390,   391,   392,   393,   394,
-     395,   396,   397,   398,   399,   400,   401,   189,   193,   606,
-     194,   195,   196,   197,   202,   198,   616,   618,   203,   620,
-     621,   622,   623,   199,   625,   200,   628,   630,   631,   633,
-     201,   636,   204,   205,   206,   207,   220,   233,   210,   211,
-     643,   234,   235,   236,   237,   241,   239,   245,   250,   251,
-     267,   268,   270,   271,   821,   175,   175,   175,   175,   175,
-     827,   266,   161,   162,   163,   269,   279,   274,   614,   277,
-     242,   619,   278,   292,   288,   293,   624,   242,   242,   294,
-     242,   242,   242,   242,   295,   242,   298,   242,   242,   242,
-     242,   299,   242,   300,   301,   302,   303,   305,   685,   309,
-     513,   242,   686,   164,   165,   310,   311,   325,   327,   326,
-     161,   162,   163,   328,   356,   330,   360,   364,   332,   335,
-     336,   337,   333,   334,   224,   338,   365,   212,   339,   340,
-     341,   224,   715,   714,   345,   718,   714,   361,   721,   507,
-     213,   366,   367,   166,   368,   369,   370,   371,   372,   537,
-     167,   164,   165,   373,   541,   542,   374,   375,   376,   381,
-     384,   386,   382,   242,   168,   387,   169,   170,   171,   172,
-     403,   751,   404,   175,   173,   175,   406,   407,   408,   760,
-     761,   174,   424,   409,   238,   175,   410,   175,   411,   353,
-     175,   166,   175,   242,   412,   175,   242,   175,   167,   242,
-     175,   416,   224,   417,   419,   421,   422,   453,   224,   443,
-     502,   448,   168,   454,   169,   170,   171,   172,   449,   450,
-     451,   455,   173,   459,   456,   461,   481,   483,   756,   174,
-     175,   175,   242,   425,   790,   791,   487,   488,   489,   490,
-     242,   242,   426,   427,   428,   429,   430,   431,   432,   433,
-     434,   435,   436,   437,   438,   494,   439,   440,   495,   497,
-     498,   499,   500,   807,   808,   809,   810,   811,   812,   626,
-     501,   814,   504,   512,   351,   816,   352,   355,   517,   518,
-     354,   519,   344,   520,   525,   524,   527,   521,   529,   648,
-     526,   650,   530,   531,   532,   533,   655,   535,   224,   534,
-     536,   538,   543,   540,   224,   549,   564,   565,   556,   566,
-     567,   569,   600,   667,   675,   377,   378,   570,   574,   568,
-     671,   573,   575,   577,   242,   242,   242,   242,   242,   242,
-     576,   578,   242,   579,   580,   581,   242,   582,   583,   584,
-     585,   402,   586,   587,   405,   588,   589,   687,   603,   640,
-     832,   834,   591,   590,   415,   835,   836,   696,   599,   698,
-     604,   700,   701,   702,   703,   605,   705,   607,   608,   707,
-     609,   709,   710,   452,   712,   639,   642,   716,   641,   644,
-     460,   720,   645,   646,   723,   649,   651,   652,   653,   657,
-     658,   161,   162,   163,   665,   666,   661,   668,   669,   678,
-     764,   670,   684,   482,   740,   672,   673,   484,   485,   486,
-     679,   680,   681,   682,   491,   492,   493,   683,   688,   689,
-     757,   758,   759,   691,   161,   162,   163,   763,   693,   694,
-     699,   704,   164,   165,   724,   161,   162,   163,   729,   730,
-     765,   735,   736,   747,   748,   743,   744,   762,   766,   792,
-     767,   768,   769,   770,   779,   794,   773,   771,   774,   775,
-     776,   778,   777,   781,   784,   164,   165,   782,   785,   783,
-     787,   788,   166,   795,   796,   789,   164,   165,   802,   167,
-     800,   801,   797,   798,   820,   813,   539,   805,   806,   822,
-     826,   828,   799,   168,   843,   169,   170,   171,   172,   829,
-     830,   803,   804,   634,   846,   166,   831,   848,   850,   851,
-     174,   853,   167,   856,   857,   858,   166,   815,   872,   859,
-     874,   819,   865,   167,   866,   878,   168,   825,   169,   170,
-     171,   172,   880,   881,   656,   882,   637,   855,   420,   169,
-     170,   171,   172,   174,   755,   230,   508,   173,   837,   838,
-     839,   840,   841,   842,   174,   844,   308,   845,   480,   847,
-     692,     0,     0,     0,     0,   852,     0,     0,     0,     0,
-       0,     0,   592,   593,   594,   595,   596,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     864,     0,     0,     0,     0,   869,     0,     0,     0,     0,
-     871,     0,   873,     0,   875,     0,   876,   877,     0,   879,
+      82,   564,   463,   509,   304,    81,   208,   224,   510,   511,
+      98,   748,   227,   515,   164,   165,   783,    57,   561,   562,
+     228,   561,   562,   647,   102,   208,   307,   342,   419,   208,
+     561,   562,   648,   424,   167,   346,   347,   348,   683,   154,
+     763,   221,   222,    78,   223,   240,   155,   241,   231,   232,
+     464,   170,   229,   103,   552,   221,   222,    78,   223,   349,
+     175,   167,   246,   619,   312,   313,   764,   241,   559,   383,
+     350,   225,   226,   288,   749,   156,   563,   169,   170,   171,
+     172,   212,   157,   219,   554,   173,   883,   314,   315,   316,
+     317,   213,   174,   238,   275,   318,   804,   291,   104,   413,
+     415,   161,   162,   163,    57,   276,   647,    98,   107,   670,
+     221,   222,    78,   223,   175,   669,   242,   242,   671,   306,
+     283,   209,   242,   739,   284,   242,   242,   242,   242,   242,
+     242,   242,   242,   242,   242,   242,   242,   242,   242,   229,
+     362,   108,   164,   165,   699,   221,   222,    78,   223,   158,
+     550,   109,   343,   354,   551,   353,   159,   110,   745,   355,
+     605,   480,   465,   307,   307,   307,   307,   307,   307,   307,
+     307,   307,   307,   307,   307,   307,   307,   280,   111,   512,
+     281,   282,   166,   221,   222,    78,   223,   112,   247,   167,
+     357,   344,   241,   248,   241,   358,   791,   221,   222,    78,
+     223,   114,   115,   168,   548,   169,   170,   171,   172,   549,
+     797,   555,   175,   173,   460,   621,   556,   242,   363,   241,
+     174,   575,   113,   750,   377,   378,   576,   221,   222,    78,
+     223,   565,   543,   544,   221,   222,    78,   223,   447,   448,
+     862,   225,   226,   737,   743,   175,   175,   867,   738,   744,
+     402,   296,   297,   405,   319,   320,   321,   322,   323,   324,
+     105,   116,   106,   416,   466,   467,   468,   469,   470,   471,
+     118,   175,   119,   117,   175,   474,   475,   476,   477,   478,
+     479,   755,   453,   829,   175,   835,   756,   873,   830,   461,
+     836,   497,   874,   875,   135,   880,   120,   653,   876,   329,
+     881,   331,   285,   175,   660,   286,   287,   516,   601,   557,
+     175,   602,   483,   558,   517,   353,   485,   486,   487,   272,
+     273,   136,   631,   492,   493,   494,   241,   633,   636,   458,
+     459,   241,   241,   175,   121,   224,   122,   175,   175,   175,
+     224,   227,   772,   123,   175,   175,   175,   221,   222,    78,
+     223,   379,   380,   523,   524,   124,   639,   385,   642,   125,
+     388,   389,   390,   391,   392,   393,   394,   395,   396,   397,
+     398,   399,   400,   401,   601,   425,   762,   606,   601,   543,
+     544,   816,   561,   562,   732,   733,   472,   473,   126,   242,
+     127,   128,   129,   130,   131,   540,   132,   736,   133,   134,
+     137,   138,   140,   139,   742,   141,   142,   143,   144,   145,
+     146,   147,   682,   148,   149,   150,   175,   152,   153,   160,
+     151,   190,   214,   191,   188,   750,   426,   189,   193,   194,
+     192,   195,   196,   197,   202,   427,   428,   429,   430,   431,
+     432,   433,   434,   435,   436,   437,   438,   439,   198,   440,
+     441,   199,   200,   161,   162,   163,   346,   347,   348,   201,
+     203,   204,   205,   206,   207,   234,   233,   514,   210,   211,
+     220,   235,   236,   161,   162,   163,   346,   347,   348,   237,
+     349,   239,   596,   597,   598,   599,   600,   241,   245,   250,
+     251,   350,   269,   267,   164,   165,   266,   279,   268,   270,
+     349,   271,   277,   175,   175,   175,   175,   175,   288,   274,
+     278,   350,   292,   293,   164,   165,   538,   294,   242,   618,
+     295,   542,   623,   546,   298,   242,   242,   628,   242,   242,
+     242,   242,   299,   242,   166,   242,   242,   242,   242,   833,
+     242,   167,   300,   301,   302,   839,   303,   305,   309,   694,
+     310,   325,   242,   311,   166,   168,   326,   169,   170,   171,
+     172,   167,   327,   330,   328,   173,   332,   335,   333,   224,
+     336,   334,   174,   337,   338,   168,   224,   169,   170,   171,
+     172,   339,   340,   351,   723,   173,   341,   723,   345,   352,
+     361,   356,   174,   360,   242,   212,   364,   365,   213,   366,
+     367,   368,   369,   704,   411,   706,   370,   371,   372,   373,
+     374,   376,   375,   381,   242,   715,   382,   717,   384,   386,
+     720,   482,   722,   387,   175,   726,   175,   728,   403,   404,
+     731,   406,   407,   408,   409,   410,   175,   630,   175,   412,
+     417,   175,   418,   175,   242,   353,   175,   242,   175,   420,
+     242,   175,   224,   422,   423,   444,   449,   450,   224,   451,
+     654,   244,   656,   759,   760,   452,   249,   661,   454,   252,
+     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
+     263,   264,   265,   455,   175,   175,   766,   242,   456,   457,
+     462,   678,   801,   802,   484,   242,   242,   488,   489,   490,
+     491,   508,   505,   495,   496,   498,   499,   500,   501,   502,
+     503,   513,   351,   354,   520,   352,   355,   518,   696,   521,
+     526,   161,   162,   163,   519,   522,   525,   527,   705,   528,
+     707,   530,   709,   710,   711,   712,   531,   714,   533,   532,
+     716,   534,   718,   719,   535,   721,   536,   537,   725,   224,
+     539,   541,   729,   547,   553,   224,   560,   734,   161,   162,
+     163,   359,   164,   165,   568,   569,   570,   571,   572,   577,
+     580,   573,   574,   578,   579,   581,   583,   587,   445,   650,
+     582,   584,   242,   242,   242,   242,   242,   242,   585,   586,
+     242,   588,   589,   590,   242,   767,   768,   769,   591,   164,
+     165,   604,   166,   774,   592,   593,   594,   595,   612,   167,
+     603,   844,   846,   609,   607,   608,   611,   848,   849,   613,
+     643,   644,   645,   168,   646,   169,   170,   171,   172,   651,
+     652,   658,   784,   173,   655,   786,   657,   446,   788,   166,
+     174,   659,   663,   664,   667,   672,   167,   794,   673,   677,
+     674,   675,   676,   800,   679,   683,   692,   686,   751,   680,
+     168,   687,   169,   170,   171,   172,   688,   689,   690,   810,
+     173,   773,   691,   697,   414,   746,   698,   174,   814,   815,
+     700,   702,   703,   735,   708,   713,   740,   741,   747,   752,
+     753,   757,   775,   754,   758,   827,   776,   793,   777,   831,
+     778,   779,   780,   781,   790,   837,   782,   161,   162,   163,
+     785,   787,   789,   792,   795,   796,   161,   162,   163,   798,
+     799,   803,   805,   806,   807,   808,   809,   850,   851,   852,
+     853,   854,   855,   529,   857,   832,   858,   811,   860,   812,
+     813,   817,   818,   825,   865,   834,   838,   869,   164,   165,
+     840,   856,   161,   162,   163,   841,   842,   164,   165,   843,
+     847,   859,   861,   863,   864,   866,   870,   871,   872,   878,
+     877,   885,   887,   891,   566,   882,   879,   893,   894,   895,
+     884,   421,   886,   662,   888,   868,   889,   890,   166,   892,
+     308,   765,   230,   164,   165,   167,     0,   166,   701,     0,
+     481,   896,   897,   898,   167,   161,   162,   163,     0,   168,
+       0,   169,   170,   171,   172,     0,     0,   693,   168,   173,
+     169,   170,   171,   172,     0,     0,   174,     0,   173,     0,
+       0,     0,     0,   166,     0,   174,     0,     0,     0,     0,
+     167,     0,     0,     0,     0,     0,   164,   165,   161,   162,
+     163,     0,     0,     0,   168,     0,   169,   170,   171,   172,
+       0,     0,   610,     0,   638,     0,     0,     0,     0,   620,
+     622,   174,   624,   625,   626,   627,     0,   629,     0,   632,
+     634,   635,   637,     0,   640,     0,   166,     0,     0,   164,
+     165,     0,     0,   167,     0,     0,   649,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   168,     0,   169,
+     170,   171,   172,     0,     0,     0,     0,   641,     0,     0,
+       0,     0,     0,     0,   174,     0,     0,     0,     0,   166,
+       0,     0,     0,     0,     0,     0,   167,     0,   681,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   883,   884,   885,     0,     0,     0,     0,     0,     0,
+       0,     0,   169,   170,   171,   172,     0,     0,   695,     0,
+     173,     0,     0,     0,     0,     0,     0,   174,     0,     0,
+       0,     0,     0,     0,   215,     3,     0,     0,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,   724,     0,
+       0,   727,     0,     0,   730,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,     0,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,     0,    45,    46,
+       0,   761,    47,     0,     0,     0,     0,     0,     0,   770,
+     771,     0,     0,     0,     0,     0,     0,     0,     0,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,     0,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+       0,    69,    70,    71,    72,    73,    74,     0,     0,    75,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   216,     0,     0,   217,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   845,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   819,   820,   821,   822,
+     823,   824,    -8,     1,   826,     0,     2,     3,   828,     0,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+       0,     0,     0,     0,     0,     0,     0,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,     0,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,     0,
+      45,    46,     0,     0,    47,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+      67,    68,     0,    69,    70,    71,    72,    73,    74,   215,
+       3,    75,     0,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,     0,     0,    76,    77,    78,    79,     0,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+      34,     0,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,     0,    45,    46,     0,     0,    47,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     695,     0,   697,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   706,     0,   708,     0,     0,   711,     0,   713,
-       0,     0,   717,     0,   719,     0,     0,   722,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   215,     3,
-       0,     0,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,     0,     0,     0,     0,     0,   749,   750,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-       0,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,     0,    45,    46,     0,     0,    47,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,     0,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,     0,    69,    70,    71,    72,    73,
-      74,     0,     0,    75,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   216,     0,     0,
-     217,     0,     0,    -8,     1,     0,     0,     2,     3,     0,
-     833,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,     0,     0,     0,     0,     0,     0,     0,    14,    15,
+       0,     0,     0,     0,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,     0,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,     0,    69,    70,    71,    72,
+      73,    74,     0,     0,    75,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   216,     0,
+       0,   217,     0,   218,   215,     3,     0,     0,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,     0,     0,
+       0,     0,     0,     0,     0,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,     0,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,     0,    45,    46,
+       0,     0,    47,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+       0,    69,    70,    71,    72,    73,    74,   215,     3,    75,
+       0,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,     0,     0,   614,     0,     0,   217,     0,    14,    15,
       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
       26,    27,    28,    29,    30,    31,    32,    33,    34,     0,
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
        0,    45,    46,     0,     0,    47,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      56,     0,    58,    59,    60,    61,    62,    63,    64,    65,
       66,    67,    68,     0,    69,    70,    71,    72,    73,    74,
-     215,     3,    75,     0,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,     0,     0,    76,    77,    78,    79,
-       0,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,     0,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,     0,    45,    46,     0,     0,    47,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,     0,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,     0,    69,    70,    71,
-      72,    73,    74,     0,     0,    75,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   216,
-       0,     0,   217,     0,   218,   215,     3,     0,     0,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,     0,
-       0,     0,     0,     0,     0,     0,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,     0,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,     0,    45,
-      46,     0,     0,    47,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,     0,    69,    70,    71,    72,    73,    74,   215,     3,
-      75,     0,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,     0,     0,   610,     0,     0,   217,     0,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-       0,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,     0,    45,    46,     0,     0,    47,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,     0,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,     0,    69,    70,    71,    72,    73,
-      74,     0,     0,    75,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   216,     0,     0,
-     217
+       0,     0,    75,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   216,     0,     0,   217
 };
 
+#define grib_yypact_value_is_default(Yystate) \
+  (!!((Yystate) == (-655)))
+
+#define grib_yytable_value_is_error(Yytable_value) \
+  YYID (0)
+
 static const grib_yytype_int16 grib_yycheck[] =
 {
-       0,    92,   443,   309,   282,   168,   355,   356,     0,   287,
-     659,   360,    18,     0,    88,   124,   205,   131,    91,    22,
-      23,    24,   131,     4,    80,   107,    80,    81,    18,    18,
-      80,    81,   108,   174,   110,   131,    80,    81,    60,    61,
-     123,   123,   124,    46,   123,   124,   125,   126,   138,   123,
-     133,   102,   103,   143,    57,   123,   127,   136,   247,   112,
-     136,   132,   131,    55,   117,   116,   134,   120,   121,   122,
-     123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
-     133,   137,   136,    83,   123,   107,   136,   127,   277,   278,
-     739,   135,   123,   124,   125,   126,   136,   123,   123,   124,
-     151,   123,   124,   125,   126,   136,   124,    88,   124,   131,
-      97,   136,   129,   131,   129,   131,   138,   109,   135,   111,
-     112,   131,   173,   117,   118,   117,   123,   133,   120,   121,
-     122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
-     132,   133,   123,   133,   133,   129,   140,   141,   142,   133,
-     134,    19,    20,    21,   123,   206,   129,   506,   209,   212,
-     133,   134,   325,   131,   123,   124,   134,   135,   357,   310,
-     311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
-     321,   322,   323,   324,    19,    20,    21,    22,    23,    24,
-     133,   134,    60,    61,   123,   124,   125,   126,   129,   123,
-     124,   125,   126,   123,   124,   125,   126,   136,    76,   127,
-     127,    46,   136,   130,   132,   207,   136,   131,   218,   660,
-     212,   135,    57,   123,   124,    60,    61,   123,   124,   125,
-     126,   123,   100,   123,   124,   125,   126,   131,   127,   107,
-     136,   292,   293,   132,   123,   127,   136,   127,   240,   241,
-     132,   123,   132,   121,   127,   123,   124,   125,   126,   132,
-     131,   127,   123,   131,   135,   100,   132,   135,   127,   547,
-     138,   131,   107,   132,   266,   135,   554,   269,   127,   123,
-     124,   125,   126,   132,   123,   124,   121,   279,   123,   124,
-     125,   126,   136,   129,   345,   131,   131,    19,    20,    21,
-      22,    23,    24,   138,   127,   127,   298,   127,   130,   132,
-     361,   129,   132,   305,   131,   133,   131,   368,   369,   134,
-     135,   129,   129,   129,    46,   133,   133,   133,   129,   420,
-     123,   384,   133,   123,   124,    57,   328,   123,    60,    61,
-     332,   333,   334,   123,   533,   418,   535,   339,   340,   341,
-     423,   111,   112,   113,   114,   115,   116,   311,   312,   313,
-     314,   315,   316,   129,   131,   131,   133,   645,   123,   675,
-     123,   124,   125,   126,   652,   123,   124,   129,   100,   125,
-     126,   123,   191,   123,   193,   107,   319,   320,   321,   322,
-     323,   324,   384,    80,    81,   125,   126,   586,   123,   121,
-     123,   123,   124,   125,   126,   317,   318,   129,   123,   131,
-     123,   123,   123,   135,   855,   129,   138,   123,   123,   411,
-     129,   129,   123,   123,   123,   123,   123,   123,   123,   123,
-     123,   123,   123,   123,   243,   244,     0,   123,   123,   123,
-     249,   129,   131,   252,   253,   254,   255,   256,   257,   258,
-     259,   260,   261,   262,   263,   264,   265,   128,   123,   512,
-     123,   123,   123,   123,   123,   129,   519,   520,   123,   522,
-     523,   524,   525,   129,   527,   129,   529,   530,   531,   532,
-     129,   534,   123,   123,   131,   131,   128,   123,   133,   133,
-     543,   125,   125,   124,   124,   133,   125,   125,   125,   125,
-     125,   125,   125,   125,   782,   497,   498,   499,   500,   501,
-     788,   129,    19,    20,    21,   131,   131,   134,   518,   133,
-     512,   521,   133,   133,   137,   133,   526,   519,   520,   125,
-     522,   523,   524,   525,   125,   527,   131,   529,   530,   531,
-     532,   131,   534,   131,   131,   131,   131,   131,   599,   127,
-     359,   543,   605,    60,    61,   122,   139,   119,   123,   120,
-      19,    20,    21,   131,   135,   125,   135,   133,   131,   125,
-     125,   125,   131,   131,   647,   125,   133,   123,   131,   131,
-     131,   654,   635,   634,   131,   638,   637,   131,   641,   128,
-     133,   133,   133,   100,   131,   133,   132,   132,   132,   408,
-     107,    60,    61,   130,   413,   414,   132,   132,   130,   130,
-     123,   130,   132,   605,   121,   132,   123,   124,   125,   126,
-     130,   674,   130,   615,   131,   617,   130,   130,   123,   682,
-     683,   138,     3,   123,   109,   627,   123,   629,   131,   690,
-     632,   100,   634,   635,   123,   637,   638,   639,   107,   641,
-     642,   123,   725,   123,   123,   123,   123,   123,   731,   132,
-     125,   132,   121,   123,   123,   124,   125,   126,   132,   132,
-     132,   123,   131,   132,   123,   132,   127,   130,   678,   138,
-     672,   673,   674,    54,   735,   736,   130,   130,   130,   130,
-     682,   683,    63,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,    73,    74,    75,   132,    77,    78,   132,   131,
-     131,   131,   131,   766,   767,   768,   769,   770,   771,   528,
-     131,   774,   123,   123,   129,   778,   135,   135,   135,   135,
-     129,   123,   207,   123,   123,   132,   130,   135,   123,   548,
-     135,   550,   123,   130,   123,   123,   555,   123,   821,   132,
-     123,   133,   132,   123,   827,   127,   124,   124,   127,   124,
-     124,   127,   136,   125,   108,   240,   241,   127,   127,   132,
-     579,   132,   127,   123,   766,   767,   768,   769,   770,   771,
-     132,   132,   774,   123,   132,   132,   778,   132,   123,   123,
-     123,   266,   123,   132,   269,   132,   132,   606,   136,   123,
-     800,   801,   132,   135,   279,   805,   806,   616,   133,   618,
-     136,   620,   621,   622,   623,   130,   625,   136,   132,   628,
-     132,   630,   631,   298,   633,   131,   131,   636,   132,   124,
-     305,   640,   135,   123,   643,   124,   124,   135,   123,   123,
-     123,    19,    20,    21,   124,   124,   128,   125,   125,   135,
-       6,   132,   125,   328,   128,   131,   131,   332,   333,   334,
-     132,   132,   132,   132,   339,   340,   341,   132,   135,   135,
-     679,   680,   681,   136,    19,    20,    21,   686,   136,   136,
-     136,   136,    60,    61,   127,    19,    20,    21,   127,   127,
-       6,   133,   133,   127,   127,   132,   132,   128,   130,     6,
-     130,   130,   130,   130,   123,   125,   715,   132,   132,   718,
-     132,   132,   721,   124,   123,    60,    61,   135,   123,   728,
-     124,   135,   100,   125,   125,   734,    60,    61,   136,   107,
-     137,   137,   132,   132,   127,   131,   411,   135,   135,   127,
-     127,   135,   751,   121,   123,   123,   124,   125,   126,   132,
-     132,   760,   761,   131,   123,   100,   132,   123,   123,   123,
-     138,   123,   107,   136,   136,   136,   100,   776,   123,   132,
-     123,   780,   132,   107,   132,   123,   121,   786,   123,   124,
-     125,   126,   132,   132,   556,   132,   131,   828,   284,   123,
-     124,   125,   126,   138,   676,    97,   354,   131,   807,   808,
-     809,   810,   811,   812,   138,   814,   174,   816,   326,   818,
-     612,    -1,    -1,    -1,    -1,   824,    -1,    -1,    -1,    -1,
-      -1,    -1,   497,   498,   499,   500,   501,    -1,    -1,    -1,
+       0,   444,   309,   354,   168,     0,    18,    91,   355,   356,
+       0,   665,    92,   360,    60,    61,    80,    88,    80,    81,
+       4,    80,    81,   127,   131,    18,   174,   205,   282,    18,
+      80,    81,   136,   287,   107,    22,    23,    24,   108,   124,
+     110,   123,   124,   125,   126,   131,   131,   133,   102,   103,
+     123,   124,   123,   131,   136,   123,   124,   125,   126,    46,
+      55,   107,   116,   129,   117,   118,   136,   133,   136,   247,
+      57,   123,   124,   137,   136,   124,   135,   123,   124,   125,
+     126,   123,   131,    83,   136,   131,   136,   140,   141,   142,
+     138,   133,   138,   109,   123,   143,   750,   151,   131,   277,
+     278,    19,    20,    21,    88,   134,   127,    97,   123,   127,
+     123,   124,   125,   126,   109,   136,   111,   112,   136,   173,
+     131,   133,   117,   136,   135,   120,   121,   122,   123,   124,
+     125,   126,   127,   128,   129,   130,   131,   132,   133,   123,
+     133,   123,    60,    61,   133,   123,   124,   125,   126,   124,
+     131,   131,   206,   129,   135,   209,   131,   129,   136,   135,
+     507,   325,   310,   311,   312,   313,   314,   315,   316,   317,
+     318,   319,   320,   321,   322,   323,   324,   131,   123,   357,
+     134,   135,   100,   123,   124,   125,   126,   123,   129,   107,
+     129,   207,   133,   134,   133,   134,   136,   123,   124,   125,
+     126,   123,   124,   121,   127,   123,   124,   125,   126,   132,
+     136,   127,   207,   131,   132,   129,   132,   212,   218,   133,
+     138,   127,   129,   666,   240,   241,   132,   123,   124,   125,
+     126,   124,   125,   126,   123,   124,   125,   126,   292,   293,
+     136,   123,   124,   127,   127,   240,   241,   136,   132,   132,
+     266,   123,   124,   269,   111,   112,   113,   114,   115,   116,
+     129,   131,   131,   279,   311,   312,   313,   314,   315,   316,
+     129,   266,   131,   123,   269,   319,   320,   321,   322,   323,
+     324,   127,   298,   127,   279,   127,   132,   127,   132,   305,
+     132,   345,   132,   127,   129,   127,   123,   551,   132,   191,
+     132,   193,   131,   298,   558,   134,   135,   361,   127,   131,
+     305,   130,   328,   135,   368,   369,   332,   333,   334,   133,
+     134,   129,   129,   339,   340,   341,   133,   129,   129,   123,
+     124,   133,   133,   328,   123,   419,   123,   332,   333,   334,
+     424,   421,   693,   123,   339,   340,   341,   123,   124,   125,
+     126,   243,   244,   123,   124,   123,   534,   249,   536,   123,
+     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
+     262,   263,   264,   265,   127,     3,   683,   130,   127,   125,
+     126,   130,    80,    81,   125,   126,   317,   318,   123,   384,
+     123,   123,   123,   123,   123,   411,   123,   651,   123,   123,
+     123,   129,   123,   129,   658,   123,   123,   123,   123,   123,
+     123,   123,   590,   123,   123,   123,   411,   123,   123,   123,
+     131,   123,     0,   123,   131,   868,    54,   128,   123,   123,
+     129,   123,   123,   123,   123,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,   129,    77,
+      78,   129,   129,    19,    20,    21,    22,    23,    24,   129,
+     123,   123,   123,   131,   131,   125,   123,   359,   133,   133,
+     128,   125,   124,    19,    20,    21,    22,    23,    24,   124,
+      46,   125,   498,   499,   500,   501,   502,   133,   125,   125,
+     125,    57,   131,   125,    60,    61,   129,   131,   125,   125,
+      46,   125,   133,   498,   499,   500,   501,   502,   137,   134,
+     133,    57,   133,   133,    60,    61,   408,   125,   513,   519,
+     125,   413,   522,   415,   131,   520,   521,   527,   523,   524,
+     525,   526,   131,   528,   100,   530,   531,   532,   533,   793,
+     535,   107,   131,   131,   131,   799,   131,   131,   127,   603,
+     122,   119,   547,   139,   100,   121,   120,   123,   124,   125,
+     126,   107,   123,   125,   131,   131,   131,   125,   131,   653,
+     125,   131,   138,   125,   125,   121,   660,   123,   124,   125,
+     126,   131,   131,   129,   638,   131,   131,   641,   131,   135,
+     131,   135,   138,   135,   589,   123,   133,   133,   133,   133,
+     133,   131,   133,   619,   131,   621,   132,   132,   132,   130,
+     132,   130,   132,   130,   609,   631,   132,   633,   123,   130,
+     636,   127,   638,   132,   619,   641,   621,   643,   130,   130,
+     646,   130,   130,   123,   123,   123,   631,   529,   633,   123,
+     123,   636,   123,   638,   639,   699,   641,   642,   643,   123,
+     645,   646,   736,   123,   123,   132,   132,   132,   742,   132,
+     552,   112,   554,   679,   680,   132,   117,   559,   123,   120,
+     121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
+     131,   132,   133,   123,   679,   680,   686,   682,   123,   123,
+     132,   583,   746,   747,   130,   690,   691,   130,   130,   130,
+     130,   128,   123,   132,   132,   131,   131,   131,   131,   131,
+     125,   123,   129,   129,   123,   135,   135,   135,   610,   123,
+     123,    19,    20,    21,   135,   135,   132,   135,   620,   130,
+     622,   123,   624,   625,   626,   627,   123,   629,   123,   130,
+     632,   123,   634,   635,   132,   637,   123,   123,   640,   833,
+     133,   123,   644,   132,   127,   839,   127,   649,    19,    20,
+      21,   212,    60,    61,   124,   124,   124,   124,   132,   132,
+     132,   127,   127,   127,   127,   123,   123,   123,    76,   124,
+     132,   132,   777,   778,   779,   780,   781,   782,   132,   132,
+     785,   123,   123,   123,   789,   687,   688,   689,   132,    60,
+      61,   136,   100,   695,   132,   132,   135,   132,   132,   107,
+     133,   811,   812,   130,   136,   136,   136,   817,   818,   132,
+     131,   123,   132,   121,   131,   123,   124,   125,   126,   135,
+     123,   135,   724,   131,   124,   727,   124,   135,   730,   100,
+     138,   123,   123,   123,   128,   124,   107,   739,   124,   132,
+     125,   125,   125,   745,   131,   108,   125,   135,   128,   131,
+     121,   132,   123,   124,   125,   126,   132,   132,   132,   761,
+     131,   128,   132,   135,   135,   133,   135,   138,   770,   771,
+     136,   136,   136,   127,   136,   136,   127,   127,   133,   124,
+     132,   127,     6,   132,   127,   787,     6,   135,   130,   791,
+     130,   130,   130,   130,   123,   797,   132,    19,    20,    21,
+     132,   132,   132,   124,   123,   123,    19,    20,    21,   124,
+     135,     6,   125,   125,   125,   132,   132,   819,   820,   821,
+     822,   823,   824,   384,   826,   127,   828,   137,   830,   137,
+     136,   135,   135,   131,   836,   127,   127,   136,    60,    61,
+     135,   123,    19,    20,    21,   132,   132,    60,    61,   132,
+     128,   123,   123,   123,   123,   123,   136,   136,   132,   132,
+     862,   123,   123,   123,   446,   867,   132,   132,   132,   132,
+     872,   284,   874,   560,   876,   840,   878,   879,   100,   881,
+     174,   684,    97,    60,    61,   107,    -1,   100,   616,    -1,
+     326,   893,   894,   895,   107,    19,    20,    21,    -1,   121,
+      -1,   123,   124,   125,   126,    -1,    -1,   129,   121,   131,
+     123,   124,   125,   126,    -1,    -1,   138,    -1,   131,    -1,
+      -1,    -1,    -1,   100,    -1,   138,    -1,    -1,    -1,    -1,
+     107,    -1,    -1,    -1,    -1,    -1,    60,    61,    19,    20,
+      21,    -1,    -1,    -1,   121,    -1,   123,   124,   125,   126,
+      -1,    -1,   513,    -1,   131,    -1,    -1,    -1,    -1,   520,
+     521,   138,   523,   524,   525,   526,    -1,   528,    -1,   530,
+     531,   532,   533,    -1,   535,    -1,   100,    -1,    -1,    60,
+      61,    -1,    -1,   107,    -1,    -1,   547,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   121,    -1,   123,
+     124,   125,   126,    -1,    -1,    -1,    -1,   131,    -1,    -1,
+      -1,    -1,    -1,    -1,   138,    -1,    -1,    -1,    -1,   100,
+      -1,    -1,    -1,    -1,    -1,    -1,   107,    -1,   589,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     849,    -1,    -1,    -1,    -1,   854,    -1,    -1,    -1,    -1,
-     859,    -1,   861,    -1,   863,    -1,   865,   866,    -1,   868,
+      -1,    -1,   123,   124,   125,   126,    -1,    -1,   609,    -1,
+     131,    -1,    -1,    -1,    -1,    -1,    -1,   138,    -1,    -1,
+      -1,    -1,    -1,    -1,     4,     5,    -1,    -1,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,   639,    -1,
+      -1,   642,    -1,    -1,   645,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    -1,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
+      -1,   682,    62,    -1,    -1,    -1,    -1,    -1,    -1,   690,
+     691,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
+      80,    81,    82,    83,    84,    85,    86,    87,    -1,    89,
+      90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
+      -1,   101,   102,   103,   104,   105,   106,    -1,    -1,   109,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   880,   881,   882,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   123,    -1,    -1,   126,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   136,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   777,   778,   779,   780,
+     781,   782,     0,     1,   785,    -1,     4,     5,   789,    -1,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    -1,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    -1,
+      58,    59,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    79,    80,    81,    82,    83,    84,    85,    86,    87,
+      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
+      98,    99,    -1,   101,   102,   103,   104,   105,   106,     4,
+       5,   109,    -1,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    -1,    -1,   123,   124,   125,   126,    -1,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    -1,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    -1,    58,    59,    -1,    -1,    62,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     615,    -1,   617,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   627,    -1,   629,    -1,    -1,   632,    -1,   634,
-      -1,    -1,   637,    -1,   639,    -1,    -1,   642,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     4,     5,
-      -1,    -1,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    -1,    -1,    -1,    -1,    -1,   672,   673,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      -1,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    -1,    58,    59,    -1,    -1,    62,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    79,    80,    81,    82,    83,    84,    85,
-      86,    87,    -1,    89,    90,    91,    92,    93,    94,    95,
-      96,    97,    98,    99,    -1,   101,   102,   103,   104,   105,
-     106,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   123,    -1,    -1,
-     126,    -1,    -1,     0,     1,    -1,    -1,     4,     5,    -1,
-     136,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,    26,
+      -1,    -1,    -1,    -1,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    -1,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,    99,    -1,   101,   102,   103,   104,
+     105,   106,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   123,    -1,
+      -1,   126,    -1,   128,     4,     5,    -1,    -1,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    -1,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
+      -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
+      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
+      90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
+      -1,   101,   102,   103,   104,   105,   106,     4,     5,   109,
+      -1,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    -1,    -1,   123,    -1,    -1,   126,    -1,    25,    26,
       27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
       37,    38,    39,    40,    41,    42,    43,    44,    45,    -1,
       47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
       -1,    58,    59,    -1,    -1,    62,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    79,    80,    81,    82,    83,    84,    85,    86,
-      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
+      87,    -1,    89,    90,    91,    92,    93,    94,    95,    96,
       97,    98,    99,    -1,   101,   102,   103,   104,   105,   106,
-       4,     5,   109,    -1,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    -1,    -1,   123,   124,   125,   126,
-      -1,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    -1,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    -1,    58,    59,    -1,    -1,    62,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    79,    80,    81,    82,    83,
-      84,    85,    86,    87,    -1,    89,    90,    91,    92,    93,
-      94,    95,    96,    97,    98,    99,    -1,   101,   102,   103,
-     104,   105,   106,    -1,    -1,   109,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   123,
-      -1,    -1,   126,    -1,   128,     4,     5,    -1,    -1,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    25,    26,    27,    28,
-      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    -1,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    -1,    58,
-      59,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
-      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
-      99,    -1,   101,   102,   103,   104,   105,   106,     4,     5,
-     109,    -1,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    -1,    -1,   123,    -1,    -1,   126,    -1,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      -1,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    -1,    58,    59,    -1,    -1,    62,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    79,    80,    81,    82,    83,    84,    85,
-      86,    87,    -1,    89,    90,    91,    92,    93,    94,    95,
-      96,    97,    98,    99,    -1,   101,   102,   103,   104,   105,
-     106,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   123,    -1,    -1,
-     126
+      -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   123,    -1,    -1,   126
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1623,87 +1663,88 @@ static const grib_yytype_uint8 grib_yystos[] =
       81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
       91,    92,    93,    94,    95,    96,    97,    98,    99,   101,
      102,   103,   104,   105,   106,   109,   123,   124,   125,   126,
-     145,   146,   149,   150,   155,   156,   157,   164,   165,   166,
-     167,   168,   169,   170,   173,   174,   177,   187,   188,   190,
-     191,   192,   131,   131,   131,   129,   131,   123,   123,   131,
+     145,   146,   150,   151,   156,   157,   158,   165,   166,   167,
+     168,   169,   170,   171,   174,   175,   178,   188,   189,   191,
+     192,   193,   131,   131,   131,   129,   131,   123,   123,   131,
      129,   123,   123,   129,   123,   124,   131,   123,   129,   131,
      123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
      123,   123,   123,   123,   123,   129,   129,   123,   129,   129,
      123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
      123,   131,   123,   123,   124,   131,   124,   131,   124,   131,
      123,    19,    20,    21,    60,    61,   100,   107,   121,   123,
-     124,   125,   126,   131,   138,   146,   152,   153,   154,   178,
-     179,   180,   181,   182,   183,   184,   185,   186,   131,   128,
+     124,   125,   126,   131,   138,   146,   153,   154,   155,   179,
+     180,   181,   182,   183,   184,   185,   186,   187,   131,   128,
      123,   123,   129,   123,   123,   123,   123,   123,   129,   129,
      129,   129,   123,   123,   123,   123,   131,   131,    18,   133,
-     133,   133,   123,   133,     0,     4,   123,   126,   128,   149,
-     128,   123,   124,   126,   174,   123,   124,   177,     4,   123,
-     192,   186,   186,   123,   125,   125,   124,   124,   152,   125,
-     131,   133,   146,   160,   160,   125,   186,   129,   134,   160,
-     125,   125,   160,   160,   160,   160,   160,   160,   160,   160,
-     160,   160,   160,   160,   160,   160,   129,   125,   125,   131,
+     133,   133,   123,   133,     0,     4,   123,   126,   128,   150,
+     128,   123,   124,   126,   175,   123,   124,   178,     4,   123,
+     193,   187,   187,   123,   125,   125,   124,   124,   153,   125,
+     131,   133,   146,   161,   161,   125,   187,   129,   134,   161,
+     125,   125,   161,   161,   161,   161,   161,   161,   161,   161,
+     161,   161,   161,   161,   161,   161,   129,   125,   125,   131,
      125,   125,   133,   134,   134,   123,   134,   133,   133,   131,
      131,   134,   135,   131,   135,   131,   134,   135,   137,   146,
-     161,   186,   133,   133,   125,   125,   123,   124,   131,   131,
-     131,   131,   131,   131,   183,   131,   186,   178,   179,   127,
+     162,   187,   133,   133,   125,   125,   123,   124,   131,   131,
+     131,   131,   131,   131,   184,   131,   187,   179,   180,   127,
      122,   139,   117,   118,   140,   141,   142,   138,   143,   111,
-     112,   113,   114,   115,   116,   119,   120,   123,   131,   161,
-     125,   161,   131,   131,   131,   125,   125,   125,   125,   131,
-     131,   131,   154,   186,   152,   131,    22,    23,    24,    46,
-      57,   129,   135,   186,   129,   135,   135,   129,   134,   160,
-     135,   131,   133,   149,   133,   133,   133,   133,   131,   133,
-     132,   132,   132,   130,   132,   132,   130,   152,   152,   161,
-     161,   130,   132,   154,   123,   161,   130,   132,   161,   161,
-     161,   161,   161,   161,   161,   161,   161,   161,   161,   161,
-     161,   161,   152,   130,   130,   152,   130,   130,   123,   123,
-     123,   131,   123,   154,   154,   152,   123,   123,   168,   123,
-     169,   123,   123,   168,     3,    54,    63,    64,    65,    66,
-      67,    68,    69,    70,    71,    72,    73,    74,    75,    77,
-      78,   162,   163,   132,    76,   135,   186,   186,   132,   132,
-     132,   132,   152,   123,   123,   123,   123,   123,   124,   132,
-     152,   132,   153,   123,   178,   180,   180,   180,   180,   180,
-     180,   181,   181,   182,   182,   182,   182,   182,   182,   183,
-     184,   127,   152,   130,   152,   152,   152,   130,   130,   130,
-     130,   152,   152,   152,   132,   132,   186,   131,   131,   131,
-     131,   131,   125,   148,   123,   175,   176,   128,   148,   175,
-     175,   154,   123,   161,   175,   186,   186,   135,   135,   123,
-     123,   135,   123,   124,   132,   123,   135,   130,   160,   123,
-     123,   130,   123,   123,   132,   123,   123,   161,   133,   152,
-     123,   161,   161,   132,   127,   132,   131,   135,   136,   127,
-     136,   127,   132,   131,   135,   136,   127,    80,    81,   135,
-     158,   125,   126,   147,   124,   124,   124,   124,   132,   127,
-     127,   127,   132,   132,   127,   127,   132,   123,   132,   123,
-     132,   132,   132,   123,   123,   123,   123,   132,   132,   132,
-     135,   132,   152,   152,   152,   152,   152,   127,   130,   133,
-     136,   175,   130,   136,   136,   130,   160,   136,   132,   132,
-     123,   149,   188,   189,   149,   129,   160,   129,   160,   149,
-     160,   160,   160,   160,   149,   160,   161,   129,   160,   129,
-     160,   160,   129,   160,   131,   154,   160,   131,   154,   131,
-     123,   132,   131,   160,   124,   135,   123,   168,   161,   124,
-     161,   124,   135,   123,   168,   161,   163,   123,   123,   158,
-     159,   128,   151,   127,   136,   124,   124,   125,   125,   125,
-     132,   161,   131,   131,   154,   108,   171,   172,   135,   132,
-     132,   132,   132,   132,   125,   186,   160,   161,   135,   135,
-     133,   136,   189,   136,   136,   152,   161,   152,   161,   136,
-     161,   161,   161,   161,   136,   161,   152,   161,   152,   161,
-     161,   152,   161,   152,   186,   160,   161,   152,   160,   152,
-     161,   160,   152,   161,   127,   168,   127,   132,   136,   127,
-     127,   168,   127,   132,   136,   133,   133,   151,   136,   158,
-     128,   125,   126,   132,   132,   127,   132,   127,   127,   152,
-     152,   160,   153,   110,   136,   172,   149,   161,   161,   161,
-     160,   160,   128,   161,     6,     6,   130,   130,   130,   130,
-     130,   132,    80,   161,   132,   161,   132,   161,   132,   123,
-     136,   124,   135,   161,   123,   123,   136,   124,   135,   161,
-     186,   186,     6,   151,   125,   125,   125,   132,   132,   161,
-     137,   137,   136,   161,   161,   135,   135,   160,   160,   160,
-     160,   160,   160,   131,   160,   161,   160,   127,   132,   161,
-     127,   168,   127,   127,   132,   161,   127,   168,   135,   132,
-     132,   132,   149,   136,   149,   149,   149,   161,   161,   161,
-     161,   161,   161,   123,   161,   161,   123,   161,   123,   136,
-     123,   123,   161,   123,   136,   159,   136,   136,   136,   132,
-     127,   132,   127,   132,   161,   132,   132,   127,   132,   161,
-     136,   161,   123,   161,   123,   161,   161,   161,   123,   161,
-     132,   132,   132,   161,   161,   161
+     112,   113,   114,   115,   116,   119,   120,   123,   131,   162,
+     125,   162,   131,   131,   131,   125,   125,   125,   125,   131,
+     131,   131,   155,   187,   153,   131,    22,    23,    24,    46,
+      57,   129,   135,   187,   129,   135,   135,   129,   134,   161,
+     135,   131,   133,   150,   133,   133,   133,   133,   131,   133,
+     132,   132,   132,   130,   132,   132,   130,   153,   153,   162,
+     162,   130,   132,   155,   123,   162,   130,   132,   162,   162,
+     162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
+     162,   162,   153,   130,   130,   153,   130,   130,   123,   123,
+     123,   131,   123,   155,   135,   155,   153,   123,   123,   169,
+     123,   170,   123,   123,   169,     3,    54,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      77,    78,   163,   164,   132,    76,   135,   187,   187,   132,
+     132,   132,   132,   153,   123,   123,   123,   123,   123,   124,
+     132,   153,   132,   154,   123,   179,   181,   181,   181,   181,
+     181,   181,   182,   182,   183,   183,   183,   183,   183,   183,
+     184,   185,   127,   153,   130,   153,   153,   153,   130,   130,
+     130,   130,   153,   153,   153,   132,   132,   187,   131,   131,
+     131,   131,   131,   125,   149,   123,   176,   177,   128,   149,
+     176,   176,   155,   123,   162,   176,   187,   187,   135,   135,
+     123,   123,   135,   123,   124,   132,   123,   135,   130,   161,
+     123,   123,   130,   123,   123,   132,   123,   123,   162,   133,
+     153,   123,   162,   125,   126,   147,   162,   132,   127,   132,
+     131,   135,   136,   127,   136,   127,   132,   131,   135,   136,
+     127,    80,    81,   135,   159,   124,   147,   148,   124,   124,
+     124,   124,   132,   127,   127,   127,   132,   132,   127,   127,
+     132,   123,   132,   123,   132,   132,   132,   123,   123,   123,
+     123,   132,   132,   132,   135,   132,   153,   153,   153,   153,
+     153,   127,   130,   133,   136,   176,   130,   136,   136,   130,
+     161,   136,   132,   132,   123,   150,   189,   190,   150,   129,
+     161,   129,   161,   150,   161,   161,   161,   161,   150,   161,
+     162,   129,   161,   129,   161,   161,   129,   161,   131,   155,
+     161,   131,   155,   131,   123,   132,   131,   127,   136,   161,
+     124,   135,   123,   169,   162,   124,   162,   124,   135,   123,
+     169,   162,   164,   123,   123,   159,   160,   128,   152,   136,
+     127,   136,   124,   124,   125,   125,   125,   132,   162,   131,
+     131,   161,   155,   108,   172,   173,   135,   132,   132,   132,
+     132,   132,   125,   129,   187,   161,   162,   135,   135,   133,
+     136,   190,   136,   136,   153,   162,   153,   162,   136,   162,
+     162,   162,   162,   136,   162,   153,   162,   153,   162,   162,
+     153,   162,   153,   187,   161,   162,   153,   161,   153,   162,
+     161,   153,   125,   126,   162,   127,   169,   127,   132,   136,
+     127,   127,   169,   127,   132,   136,   133,   133,   152,   136,
+     159,   128,   124,   132,   132,   127,   132,   127,   127,   153,
+     153,   161,   154,   110,   136,   173,   150,   162,   162,   162,
+     161,   161,   149,   128,   162,     6,     6,   130,   130,   130,
+     130,   130,   132,    80,   162,   132,   162,   132,   162,   132,
+     123,   136,   124,   135,   162,   123,   123,   136,   124,   135,
+     162,   187,   187,     6,   152,   125,   125,   125,   132,   132,
+     162,   137,   137,   136,   162,   162,   130,   135,   135,   161,
+     161,   161,   161,   161,   161,   131,   161,   162,   161,   127,
+     132,   162,   127,   169,   127,   127,   132,   162,   127,   169,
+     135,   132,   132,   132,   150,   136,   150,   128,   150,   150,
+     162,   162,   162,   162,   162,   162,   123,   162,   162,   123,
+     162,   123,   136,   123,   123,   162,   123,   136,   160,   136,
+     136,   136,   132,   127,   132,   127,   132,   162,   132,   132,
+     127,   132,   162,   136,   162,   123,   162,   123,   162,   162,
+     162,   123,   162,   132,   132,   132,   162,   162,   162
 };
 
 #define grib_yyerrok		(grib_yyerrstatus = 0)
@@ -1718,78 +1759,50 @@ static const grib_yytype_uint8 grib_yystos[] =
 
 /* Like YYERROR except do call grib_yyerror.  This remains here temporarily
    to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
+   Once GCC version 2 has supplanted version 1, this can go.  However,
+   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
+   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+   discussed.  */
 
 #define YYFAIL		goto grib_yyerrlab
+#if defined YYFAIL
+  /* This is here to suppress warnings from the GCC cpp's
+     -Wunused-macros.  Normally we don't worry about that warning, but
+     some users do, and we want to make it easy for users to remove
+     YYFAIL uses, which will produce warnings from Bison 2.5.  */
+#endif
 
 #define YYRECOVERING()  (!!grib_yyerrstatus)
 
-#define YYBACKUP(Token, Value)					\
-do								\
-  if (grib_yychar == YYEMPTY && grib_yylen == 1)				\
-    {								\
-      grib_yychar = (Token);						\
-      grib_yylval = (Value);						\
-      grib_yytoken = YYTRANSLATE (grib_yychar);				\
-      YYPOPSTACK (1);						\
-      goto grib_yybackup;						\
-    }								\
-  else								\
-    {								\
+#define YYBACKUP(Token, Value)                                  \
+do                                                              \
+  if (grib_yychar == YYEMPTY)                                        \
+    {                                                           \
+      grib_yychar = (Token);                                         \
+      grib_yylval = (Value);                                         \
+      YYPOPSTACK (grib_yylen);                                       \
+      grib_yystate = *grib_yyssp;                                         \
+      goto grib_yybackup;                                            \
+    }                                                           \
+  else                                                          \
+    {                                                           \
       grib_yyerror (YY_("syntax error: cannot back up")); \
       YYERROR;							\
     }								\
 while (YYID (0))
 
-
+/* Error token number */
 #define YYTERROR	1
 #define YYERRCODE	256
 
 
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-   If N is 0, then set CURRENT to the empty location which ends
-   the previous symbol: RHS[0] (always defined).  */
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)				\
-    do									\
-      if (YYID (N))                                                    \
-	{								\
-	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
-	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
-	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
-	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-	}								\
-      else								\
-	{								\
-	  (Current).first_line   = (Current).last_line   =		\
-	    YYRHSLOC (Rhs, 0).last_line;				\
-	  (Current).first_column = (Current).last_column =		\
-	    YYRHSLOC (Rhs, 0).last_column;				\
-	}								\
-    while (YYID (0))
-#endif
-
-
-/* YY_LOCATION_PRINT -- Print the location on the stream.
-   This macro was not mandated originally: define only if we know
-   we won't break user code: when these are the locations we know.  */
-
+/* This macro is provided for backward compatibility. */
 #ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
-#  define YY_LOCATION_PRINT(File, Loc)			\
-     fprintf (File, "%d.%d-%d.%d",			\
-	      (Loc).first_line, (Loc).first_column,	\
-	      (Loc).last_line,  (Loc).last_column)
-# else
-#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
 #endif
 
 
 /* YYLEX -- calling `grib_yylex' with the right arguments.  */
-
 #ifdef YYLEX_PARAM
 # define YYLEX grib_yylex (YYLEX_PARAM)
 #else
@@ -1839,6 +1852,8 @@ grib_yy_symbol_value_print (grib_yyoutput, grib_yytype, grib_yyvaluep)
     YYSTYPE const * const grib_yyvaluep;
 #endif
 {
+  FILE *grib_yyo = grib_yyoutput;
+  YYUSE (grib_yyo);
   if (!grib_yyvaluep)
     return;
 # ifdef YYPRINT
@@ -1850,7 +1865,7 @@ grib_yy_symbol_value_print (grib_yyoutput, grib_yytype, grib_yyvaluep)
   switch (grib_yytype)
     {
       default:
-	break;
+        break;
     }
 }
 
@@ -1976,7 +1991,6 @@ int grib_yydebug;
 # define YYMAXDEPTH 10000
 #endif
 
-

 
 #if YYERROR_VERBOSE
 
@@ -2079,115 +2093,145 @@ grib_yytnamerr (char *grib_yyres, const char *grib_yystr)
 }
 # endif
 
-/* Copy into YYRESULT an error message about the unexpected token
-   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-   including the terminating null byte.  If YYRESULT is null, do not
-   copy anything; just return the number of bytes that would be
-   copied.  As a special case, return 0 if an ordinary "syntax error"
-   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-   size calculation.  */
-static YYSIZE_T
-grib_yysyntax_error (char *grib_yyresult, int grib_yystate, int grib_yychar)
-{
-  int grib_yyn = grib_yypact[grib_yystate];
+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+   about the unexpected token YYTOKEN for the state stack whose top is
+   YYSSP.
 
-  if (! (YYPACT_NINF < grib_yyn && grib_yyn <= YYLAST))
-    return 0;
-  else
+   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
+   not large enough to hold the message.  In that case, also set
+   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
+   required number of bytes is too large to store.  */
+static int
+grib_yysyntax_error (YYSIZE_T *grib_yymsg_alloc, char **grib_yymsg,
+                grib_yytype_int16 *grib_yyssp, int grib_yytoken)
+{
+  YYSIZE_T grib_yysize0 = grib_yytnamerr (YY_NULL, grib_yytname[grib_yytoken]);
+  YYSIZE_T grib_yysize = grib_yysize0;
+  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+  /* Internationalized format string. */
+  const char *grib_yyformat = YY_NULL;
+  /* Arguments of grib_yyformat. */
+  char const *grib_yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+  /* Number of reported tokens (one for the "unexpected", one per
+     "expected"). */
+  int grib_yycount = 0;
+
+  /* There are many possibilities here to consider:
+     - Assume YYFAIL is not used.  It's too flawed to consider.  See
+       <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
+       for details.  YYERROR is fine as it does not invoke this
+       function.
+     - If this state is a consistent state with a default action, then
+       the only way this function was invoked is if the default action
+       is an error action.  In that case, don't check for expected
+       tokens because there are none.
+     - The only way there can be no lookahead present (in grib_yychar) is if
+       this state is a consistent state with a default action.  Thus,
+       detecting the absence of a lookahead is sufficient to determine
+       that there is no unexpected or expected token to report.  In that
+       case, just report a simple "syntax error".
+     - Don't assume there isn't a lookahead just because this state is a
+       consistent state with a default action.  There might have been a
+       previous inconsistent state, consistent state with a non-default
+       action, or user semantic action that manipulated grib_yychar.
+     - Of course, the expected token list depends on states to have
+       correct lookahead information, and it depends on the parser not
+       to perform extra reductions after fetching a lookahead from the
+       scanner and before detecting a syntax error.  Thus, state merging
+       (from LALR or IELR) and default reductions corrupt the expected
+       token list.  However, the list is correct for canonical LR with
+       one exception: it will still contain any token that will not be
+       accepted due to an error action in a later state.
+  */
+  if (grib_yytoken != YYEMPTY)
     {
-      int grib_yytype = YYTRANSLATE (grib_yychar);
-      YYSIZE_T grib_yysize0 = grib_yytnamerr (0, grib_yytname[grib_yytype]);
-      YYSIZE_T grib_yysize = grib_yysize0;
-      YYSIZE_T grib_yysize1;
-      int grib_yysize_overflow = 0;
-      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-      char const *grib_yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-      int grib_yyx;
-
-# if 0
-      /* This is so xgettext sees the translatable formats that are
-	 constructed on the fly.  */
-      YY_("syntax error, unexpected %s");
-      YY_("syntax error, unexpected %s, expecting %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
-      char *grib_yyfmt;
-      char const *grib_yyf;
-      static char const grib_yyunexpected[] = "syntax error, unexpected %s";
-      static char const grib_yyexpecting[] = ", expecting %s";
-      static char const grib_yyor[] = " or %s";
-      char grib_yyformat[sizeof grib_yyunexpected
-		    + sizeof grib_yyexpecting - 1
-		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-		       * (sizeof grib_yyor - 1))];
-      char const *grib_yyprefix = grib_yyexpecting;
-
-      /* Start YYX at -YYN if negative to avoid negative indexes in
-	 YYCHECK.  */
-      int grib_yyxbegin = grib_yyn < 0 ? -grib_yyn : 0;
-
-      /* Stay within bounds of both grib_yycheck and grib_yytname.  */
-      int grib_yychecklim = YYLAST - grib_yyn + 1;
-      int grib_yyxend = grib_yychecklim < YYNTOKENS ? grib_yychecklim : YYNTOKENS;
-      int grib_yycount = 1;
-
-      grib_yyarg[0] = grib_yytname[grib_yytype];
-      grib_yyfmt = grib_yystpcpy (grib_yyformat, grib_yyunexpected);
-
-      for (grib_yyx = grib_yyxbegin; grib_yyx < grib_yyxend; ++grib_yyx)
-	if (grib_yycheck[grib_yyx + grib_yyn] == grib_yyx && grib_yyx != YYTERROR)
-	  {
-	    if (grib_yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-	      {
-		grib_yycount = 1;
-		grib_yysize = grib_yysize0;
-		grib_yyformat[sizeof grib_yyunexpected - 1] = '\0';
-		break;
-	      }
-	    grib_yyarg[grib_yycount++] = grib_yytname[grib_yyx];
-	    grib_yysize1 = grib_yysize + grib_yytnamerr (0, grib_yytname[grib_yyx]);
-	    grib_yysize_overflow |= (grib_yysize1 < grib_yysize);
-	    grib_yysize = grib_yysize1;
-	    grib_yyfmt = grib_yystpcpy (grib_yyfmt, grib_yyprefix);
-	    grib_yyprefix = grib_yyor;
-	  }
+      int grib_yyn = grib_yypact[*grib_yyssp];
+      grib_yyarg[grib_yycount++] = grib_yytname[grib_yytoken];
+      if (!grib_yypact_value_is_default (grib_yyn))
+        {
+          /* Start YYX at -YYN if negative to avoid negative indexes in
+             YYCHECK.  In other words, skip the first -YYN actions for
+             this state because they are default actions.  */
+          int grib_yyxbegin = grib_yyn < 0 ? -grib_yyn : 0;
+          /* Stay within bounds of both grib_yycheck and grib_yytname.  */
+          int grib_yychecklim = YYLAST - grib_yyn + 1;
+          int grib_yyxend = grib_yychecklim < YYNTOKENS ? grib_yychecklim : YYNTOKENS;
+          int grib_yyx;
+
+          for (grib_yyx = grib_yyxbegin; grib_yyx < grib_yyxend; ++grib_yyx)
+            if (grib_yycheck[grib_yyx + grib_yyn] == grib_yyx && grib_yyx != YYTERROR
+                && !grib_yytable_value_is_error (grib_yytable[grib_yyx + grib_yyn]))
+              {
+                if (grib_yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+                  {
+                    grib_yycount = 1;
+                    grib_yysize = grib_yysize0;
+                    break;
+                  }
+                grib_yyarg[grib_yycount++] = grib_yytname[grib_yyx];
+                {
+                  YYSIZE_T grib_yysize1 = grib_yysize + grib_yytnamerr (YY_NULL, grib_yytname[grib_yyx]);
+                  if (! (grib_yysize <= grib_yysize1
+                         && grib_yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+                    return 2;
+                  grib_yysize = grib_yysize1;
+                }
+              }
+        }
+    }
 
-      grib_yyf = YY_(grib_yyformat);
-      grib_yysize1 = grib_yysize + grib_yystrlen (grib_yyf);
-      grib_yysize_overflow |= (grib_yysize1 < grib_yysize);
-      grib_yysize = grib_yysize1;
+  switch (grib_yycount)
+    {
+# define YYCASE_(N, S)                      \
+      case N:                               \
+        grib_yyformat = S;                       \
+      break
+      YYCASE_(0, YY_("syntax error"));
+      YYCASE_(1, YY_("syntax error, unexpected %s"));
+      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+# undef YYCASE_
+    }
 
-      if (grib_yysize_overflow)
-	return YYSIZE_MAXIMUM;
+  {
+    YYSIZE_T grib_yysize1 = grib_yysize + grib_yystrlen (grib_yyformat);
+    if (! (grib_yysize <= grib_yysize1 && grib_yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+      return 2;
+    grib_yysize = grib_yysize1;
+  }
 
-      if (grib_yyresult)
-	{
-	  /* Avoid sprintf, as that infringes on the user's name space.
-	     Don't have undefined behavior even if the translation
-	     produced a string with the wrong number of "%s"s.  */
-	  char *grib_yyp = grib_yyresult;
-	  int grib_yyi = 0;
-	  while ((*grib_yyp = *grib_yyf) != '\0')
-	    {
-	      if (*grib_yyp == '%' && grib_yyf[1] == 's' && grib_yyi < grib_yycount)
-		{
-		  grib_yyp += grib_yytnamerr (grib_yyp, grib_yyarg[grib_yyi++]);
-		  grib_yyf += 2;
-		}
-	      else
-		{
-		  grib_yyp++;
-		  grib_yyf++;
-		}
-	    }
-	}
-      return grib_yysize;
+  if (*grib_yymsg_alloc < grib_yysize)
+    {
+      *grib_yymsg_alloc = 2 * grib_yysize;
+      if (! (grib_yysize <= *grib_yymsg_alloc
+             && *grib_yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+        *grib_yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+      return 1;
     }
+
+  /* Avoid sprintf, as that infringes on the user's name space.
+     Don't have undefined behavior even if the translation
+     produced a string with the wrong number of "%s"s.  */
+  {
+    char *grib_yyp = *grib_yymsg;
+    int grib_yyi = 0;
+    while ((*grib_yyp = *grib_yyformat) != '\0')
+      if (*grib_yyp == '%' && grib_yyformat[1] == 's' && grib_yyi < grib_yycount)
+        {
+          grib_yyp += grib_yytnamerr (grib_yyp, grib_yyarg[grib_yyi++]);
+          grib_yyformat += 2;
+        }
+      else
+        {
+          grib_yyp++;
+          grib_yyformat++;
+        }
+  }
+  return 0;
 }
 #endif /* YYERROR_VERBOSE */
-

 
 /*-----------------------------------------------.
 | Release the memory associated to this symbol.  |
@@ -2216,40 +2260,35 @@ grib_yydestruct (grib_yymsg, grib_yytype, grib_yyvaluep)
     {
 
       default:
-	break;
+        break;
     }
 }
 
-/* Prevent warnings from -Wmissing-prototypes.  */
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int grib_yyparse (void *YYPARSE_PARAM);
-#else
-int grib_yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int grib_yyparse (void);
-#else
-int grib_yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
+
 
 
 /* The lookahead symbol.  */
 int grib_yychar;
 
+
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
 /* The semantic value of the lookahead symbol.  */
-YYSTYPE grib_yylval;
+YYSTYPE grib_yylval YY_INITIAL_VALUE(grib_yyval_default);
 
 /* Number of syntax errors so far.  */
 int grib_yynerrs;
 
 
-
-/*-------------------------.
-| grib_yyparse or grib_yypush_parse.  |
-`-------------------------*/
+/*----------.
+| grib_yyparse.  |
+`----------*/
 
 #ifdef YYPARSE_PARAM
 #if (defined __STDC__ || defined __C99__FUNC__ \
@@ -2273,8 +2312,6 @@ grib_yyparse ()
 #endif
 #endif
 {
-
-
     int grib_yystate;
     /* Number of tokens to shift before error messages enabled.  */
     int grib_yyerrstatus;
@@ -2283,7 +2320,7 @@ grib_yyparse ()
        `grib_yyss': related to states.
        `grib_yyvs': related to semantic values.
 
-       Refer to the stacks thru separate pointers, to allow grib_yyoverflow
+       Refer to the stacks through separate pointers, to allow grib_yyoverflow
        to reallocate them elsewhere.  */
 
     /* The state stack.  */
@@ -2301,7 +2338,7 @@ grib_yyparse ()
   int grib_yyn;
   int grib_yyresult;
   /* Lookahead token as an internal (translated) token number.  */
-  int grib_yytoken;
+  int grib_yytoken = 0;
   /* The variables used to return semantic value and location from the
      action routines.  */
   YYSTYPE grib_yyval;
@@ -2319,9 +2356,8 @@ grib_yyparse ()
      Keep to zero when no symbol should be popped.  */
   int grib_yylen = 0;
 
-  grib_yytoken = 0;
-  grib_yyss = grib_yyssa;
-  grib_yyvs = grib_yyvsa;
+  grib_yyssp = grib_yyss = grib_yyssa;
+  grib_yyvsp = grib_yyvs = grib_yyvsa;
   grib_yystacksize = YYINITDEPTH;
 
   YYDPRINTF ((stderr, "Starting parse\n"));
@@ -2330,14 +2366,6 @@ grib_yyparse ()
   grib_yyerrstatus = 0;
   grib_yynerrs = 0;
   grib_yychar = YYEMPTY; /* Cause a token to be read.  */
-
-  /* Initialize stack pointers.
-     Waste one element of value and location stack
-     so that they stay on the same level as the state stack.
-     The wasted elements are never initialized.  */
-  grib_yyssp = grib_yyss;
-  grib_yyvsp = grib_yyvs;
-
   goto grib_yysetstate;
 
 /*------------------------------------------------------------.
@@ -2429,7 +2457,7 @@ grib_yybackup:
 
   /* First try to decide what to do without reference to lookahead token.  */
   grib_yyn = grib_yypact[grib_yystate];
-  if (grib_yyn == YYPACT_NINF)
+  if (grib_yypact_value_is_default (grib_yyn))
     goto grib_yydefault;
 
   /* Not known => get a lookahead token if don't already have one.  */
@@ -2460,8 +2488,8 @@ grib_yybackup:
   grib_yyn = grib_yytable[grib_yyn];
   if (grib_yyn <= 0)
     {
-      if (grib_yyn == 0 || grib_yyn == YYTABLE_NINF)
-	goto grib_yyerrlab;
+      if (grib_yytable_value_is_error (grib_yyn))
+        goto grib_yyerrlab;
       grib_yyn = -grib_yyn;
       goto grib_yyreduce;
     }
@@ -2478,7 +2506,9 @@ grib_yybackup:
   grib_yychar = YYEMPTY;
 
   grib_yystate = grib_yyn;
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++grib_yyvsp = grib_yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
   goto grib_yynewstate;
 
@@ -2515,674 +2545,603 @@ grib_yyreduce:
   switch (grib_yyn)
     {
         case 2:
-
-/* Line 1455 of yacc.c  */
-#line 258 "griby.y"
+/* Line 1792 of yacc.c  */
+#line 260 "griby.y"
     { grib_parser_all_actions = 0;grib_parser_concept=0; 
                             grib_parser_hash_array=0;grib_parser_rules=0; }
     break;
 
   case 3:
-
-/* Line 1455 of yacc.c  */
-#line 260 "griby.y"
+/* Line 1792 of yacc.c  */
+#line 262 "griby.y"
     { grib_parser_concept     = reverse_concept((grib_yyvsp[(1) - (1)].concept_value)); }
     break;
 
   case 4:
-
-/* Line 1455 of yacc.c  */
-#line 261 "griby.y"
+/* Line 1792 of yacc.c  */
+#line 263 "griby.y"
     { grib_parser_hash_array     = reverse_hash_array((grib_yyvsp[(1) - (1)].hash_array_value)); }
     break;
 
   case 5:
-
-/* Line 1455 of yacc.c  */
-#line 262 "griby.y"
+/* Line 1792 of yacc.c  */
+#line 264 "griby.y"
     { grib_parser_all_actions = (grib_yyvsp[(1) - (1)].act); }
     break;
 
   case 6:
-
-/* Line 1455 of yacc.c  */
-#line 263 "griby.y"
+/* Line 1792 of yacc.c  */
+#line 265 "griby.y"
     { grib_parser_rules       = (grib_yyvsp[(1) - (1)].rules); }
     break;
 
   case 7:
-
-/* Line 1455 of yacc.c  */
-#line 265 "griby.y"
+/* Line 1792 of yacc.c  */
+#line 267 "griby.y"
     { grib_parser_all_actions = 0; grib_parser_concept=0; 
 	                    grib_parser_hash_array=0; grib_parser_rules=0; }
     break;
 
   case 9:
-
-/* Line 1455 of yacc.c  */
-#line 272 "griby.y"
+/* Line 1792 of yacc.c  */
+#line 274 "griby.y"
     { (grib_yyval.dvalue)=grib_darray_push(0,0,(grib_yyvsp[(1) - (1)].dval));}
     break;
 
   case 10:
-
-/* Line 1455 of yacc.c  */
-#line 273 "griby.y"
+/* Line 1792 of yacc.c  */
+#line 275 "griby.y"
     { (grib_yyval.dvalue)=grib_darray_push(0,(grib_yyvsp[(1) - (3)].dvalue),(grib_yyvsp[(3) - (3)].dval));}
     break;
 
   case 11:
-
-/* Line 1455 of yacc.c  */
-#line 274 "griby.y"
+/* Line 1792 of yacc.c  */
+#line 276 "griby.y"
     { (grib_yyval.dvalue)=grib_darray_push(0,0,(grib_yyvsp[(1) - (1)].lval));}
     break;
 
   case 12:
-
-/* Line 1455 of yacc.c  */
-#line 275 "griby.y"
+/* Line 1792 of yacc.c  */
+#line 277 "griby.y"
     { (grib_yyval.dvalue)=grib_darray_push(0,(grib_yyvsp[(1) - (3)].dvalue),(grib_yyvsp[(3) - (3)].lval));}
     break;
 
   case 13:
-
-/* Line 1455 of yacc.c  */
-#line 278 "griby.y"
-    { (grib_yyval.ivalue)=grib_iarray_push(0,(grib_yyvsp[(1) - (1)].lval));}
+/* Line 1792 of yacc.c  */
+#line 280 "griby.y"
+    { (grib_yyval.svalue)=grib_sarray_push(0,0,(grib_yyvsp[(1) - (1)].str));}
     break;
 
   case 14:
+/* Line 1792 of yacc.c  */
+#line 281 "griby.y"
+    { (grib_yyval.svalue)=grib_sarray_push(0,(grib_yyvsp[(1) - (3)].svalue),(grib_yyvsp[(3) - (3)].str));}
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 279 "griby.y"
-    { (grib_yyval.ivalue)=grib_iarray_push((grib_yyvsp[(1) - (3)].ivalue),(grib_yyvsp[(3) - (3)].lval));}
+  case 15:
+/* Line 1792 of yacc.c  */
+#line 285 "griby.y"
+    { (grib_yyval.ivalue)=grib_iarray_push(0,(grib_yyvsp[(1) - (1)].lval));}
     break;
 
   case 16:
+/* Line 1792 of yacc.c  */
+#line 286 "griby.y"
+    { (grib_yyval.ivalue)=grib_iarray_push((grib_yyvsp[(1) - (3)].ivalue),(grib_yyvsp[(3) - (3)].lval));}
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 283 "griby.y"
+  case 18:
+/* Line 1792 of yacc.c  */
+#line 290 "griby.y"
     { (grib_yyvsp[(1) - (2)].act)->next = (grib_yyvsp[(2) - (2)].act); (grib_yyval.act) = (grib_yyvsp[(1) - (2)].act); }
     break;
 
-  case 17:
-
-/* Line 1455 of yacc.c  */
-#line 284 "griby.y"
+  case 19:
+/* Line 1792 of yacc.c  */
+#line 291 "griby.y"
     { (grib_yyvsp[(1) - (3)].act)->next = (grib_yyvsp[(3) - (3)].act); (grib_yyval.act) = (grib_yyvsp[(1) - (3)].act); }
     break;
 
-  case 18:
-
-/* Line 1455 of yacc.c  */
-#line 285 "griby.y"
+  case 20:
+/* Line 1792 of yacc.c  */
+#line 292 "griby.y"
     {  (grib_yyval.act) = (grib_yyvsp[(1) - (2)].act);}
     break;
 
-  case 30:
-
-/* Line 1455 of yacc.c  */
-#line 304 "griby.y"
+  case 32:
+/* Line 1792 of yacc.c  */
+#line 311 "griby.y"
     { (grib_yyval.explist) = 0; }
     break;
 
-  case 33:
-
-/* Line 1455 of yacc.c  */
-#line 309 "griby.y"
-    { (grib_yyvsp[(1) - (3)].explist)->next = (grib_yyvsp[(3) - (3)].explist); (grib_yyval.explist) = (grib_yyvsp[(1) - (3)].explist); }
-    break;
-
-  case 34:
-
-/* Line 1455 of yacc.c  */
-#line 312 "griby.y"
-    { (grib_yyval.explist) = grib_arguments_new(grib_parser_context,(grib_yyvsp[(1) - (1)].exp),NULL); }
-    break;
-
   case 35:
-
-/* Line 1455 of yacc.c  */
-#line 317 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"unsigned",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);        free((grib_yyvsp[(5) - (7)].str));  }
+/* Line 1792 of yacc.c  */
+#line 316 "griby.y"
+    { (grib_yyvsp[(1) - (3)].explist)->next = (grib_yyvsp[(3) - (3)].explist); (grib_yyval.explist) = (grib_yyvsp[(1) - (3)].explist); }
     break;
 
   case 36:
-
-/* Line 1455 of yacc.c  */
-#line 320 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"unsigned",(grib_yyvsp[(3) - (10)].lval),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL);        free((grib_yyvsp[(5) - (10)].str));  }
+/* Line 1792 of yacc.c  */
+#line 319 "griby.y"
+    { (grib_yyval.explist) = grib_arguments_new(grib_parser_context,(grib_yyvsp[(1) - (1)].exp),NULL); }
     break;
 
   case 37:
-
-/* Line 1455 of yacc.c  */
-#line 323 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"unsigned_bits",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);        free((grib_yyvsp[(5) - (7)].str));  }
+/* Line 1792 of yacc.c  */
+#line 324 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"unsigned",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);        free((grib_yyvsp[(5) - (7)].str));  }
     break;
 
   case 38:
-
-/* Line 1455 of yacc.c  */
-#line 326 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"unsigned_bits",(grib_yyvsp[(3) - (10)].lval),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL);        free((grib_yyvsp[(5) - (10)].str));  }
+/* Line 1792 of yacc.c  */
+#line 327 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"unsigned",(grib_yyvsp[(3) - (10)].lval),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL);        free((grib_yyvsp[(5) - (10)].str));  }
     break;
 
   case 39:
-
-/* Line 1455 of yacc.c  */
-#line 329 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"ascii",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);  free((grib_yyvsp[(5) - (7)].str));  }
+/* Line 1792 of yacc.c  */
+#line 330 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"unsigned_bits",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);        free((grib_yyvsp[(5) - (7)].str));  }
     break;
 
   case 40:
-
-/* Line 1455 of yacc.c  */
-#line 332 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"group",0,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);  free((grib_yyvsp[(2) - (4)].str));  }
+/* Line 1792 of yacc.c  */
+#line 333 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"unsigned_bits",(grib_yyvsp[(3) - (10)].lval),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL);        free((grib_yyvsp[(5) - (10)].str));  }
     break;
 
   case 41:
-
-/* Line 1455 of yacc.c  */
-#line 335 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"group",0,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);  free((grib_yyvsp[(2) - (7)].str));  }
+/* Line 1792 of yacc.c  */
+#line 336 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"ascii",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);  free((grib_yyvsp[(5) - (7)].str));  }
     break;
 
   case 42:
-
-/* Line 1455 of yacc.c  */
-#line 338 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(1) - (7)].str),"to_integer",0,(grib_yyvsp[(5) - (7)].explist),0,(grib_yyvsp[(7) - (7)].lval),NULL,NULL);  free((grib_yyvsp[(1) - (7)].str));  }
+/* Line 1792 of yacc.c  */
+#line 339 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"group",0,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);  free((grib_yyvsp[(2) - (4)].str));  }
     break;
 
   case 43:
-
-/* Line 1455 of yacc.c  */
-#line 341 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(1) - (7)].str),"sexagesimal2decimal",0,(grib_yyvsp[(5) - (7)].explist),0,(grib_yyvsp[(7) - (7)].lval),NULL,NULL);  free((grib_yyvsp[(1) - (7)].str));  }
+/* Line 1792 of yacc.c  */
+#line 342 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"group",0,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);  free((grib_yyvsp[(2) - (7)].str));  }
     break;
 
   case 44:
-
-/* Line 1455 of yacc.c  */
-#line 344 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(1) - (7)].str),"to_string",0,(grib_yyvsp[(5) - (7)].explist),0,(grib_yyvsp[(7) - (7)].lval),NULL,NULL);  free((grib_yyvsp[(1) - (7)].str));  }
+/* Line 1792 of yacc.c  */
+#line 345 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(1) - (7)].str),"to_integer",0,(grib_yyvsp[(5) - (7)].explist),0,(grib_yyvsp[(7) - (7)].lval),NULL,NULL);  free((grib_yyvsp[(1) - (7)].str));  }
     break;
 
   case 45:
-
-/* Line 1455 of yacc.c  */
-#line 347 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"non_alpha",0,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);  free((grib_yyvsp[(2) - (4)].str));  }
+/* Line 1792 of yacc.c  */
+#line 348 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(1) - (7)].str),"sexagesimal2decimal",0,(grib_yyvsp[(5) - (7)].explist),0,(grib_yyvsp[(7) - (7)].lval),NULL,NULL);  free((grib_yyvsp[(1) - (7)].str));  }
     break;
 
   case 46:
-
-/* Line 1455 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 351 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"ascii",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);  free((grib_yyvsp[(5) - (7)].str));  }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(1) - (7)].str),"to_string",0,(grib_yyvsp[(5) - (7)].explist),0,(grib_yyvsp[(7) - (7)].lval),NULL,NULL);  free((grib_yyvsp[(1) - (7)].str));  }
     break;
 
   case 47:
-
-/* Line 1455 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 354 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"bytes",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);      free((grib_yyvsp[(5) - (7)].str));  }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"non_alpha",0,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);  free((grib_yyvsp[(2) - (4)].str));  }
     break;
 
   case 48:
-
-/* Line 1455 of yacc.c  */
-#line 357 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"bytes",(grib_yyvsp[(3) - (10)].lval),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL);      free((grib_yyvsp[(5) - (10)].str));  }
+/* Line 1792 of yacc.c  */
+#line 358 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"ascii",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);  free((grib_yyvsp[(5) - (7)].str));  }
     break;
 
   case 49:
-
-/* Line 1455 of yacc.c  */
-#line 360 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"ksec1expver",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);  free((grib_yyvsp[(5) - (7)].str));  }
+/* Line 1792 of yacc.c  */
+#line 361 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"bytes",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);      free((grib_yyvsp[(5) - (7)].str));  }
     break;
 
   case 50:
-
-/* Line 1455 of yacc.c  */
-#line 363 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"signed",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);      free((grib_yyvsp[(5) - (7)].str));  }
+/* Line 1792 of yacc.c  */
+#line 364 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"bytes",(grib_yyvsp[(3) - (10)].lval),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL);      free((grib_yyvsp[(5) - (10)].str));  }
     break;
 
   case 51:
-
-/* Line 1455 of yacc.c  */
-#line 366 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"signed",(grib_yyvsp[(3) - (10)].lval),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL);      free((grib_yyvsp[(5) - (10)].str));  }
+/* Line 1792 of yacc.c  */
+#line 367 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"ksec1expver",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);  free((grib_yyvsp[(5) - (7)].str));  }
     break;
 
   case 52:
-
-/* Line 1455 of yacc.c  */
-#line 369 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"signed_bits",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);      free((grib_yyvsp[(5) - (7)].str));  }
+/* Line 1792 of yacc.c  */
+#line 370 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"signed",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);      free((grib_yyvsp[(5) - (7)].str));  }
     break;
 
   case 53:
-
-/* Line 1455 of yacc.c  */
-#line 372 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"signed_bits",(grib_yyvsp[(3) - (10)].lval),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL);      free((grib_yyvsp[(5) - (10)].str));  }
+/* Line 1792 of yacc.c  */
+#line 373 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"signed",(grib_yyvsp[(3) - (10)].lval),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL);      free((grib_yyvsp[(5) - (10)].str));  }
     break;
 
   case 54:
-
-/* Line 1455 of yacc.c  */
-#line 375 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"codetable",(grib_yyvsp[(3) - (8)].lval), (grib_yyvsp[(6) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL,NULL);    free((grib_yyvsp[(5) - (8)].str)); }
+/* Line 1792 of yacc.c  */
+#line 376 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"signed_bits",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);      free((grib_yyvsp[(5) - (7)].str));  }
     break;
 
   case 55:
-
-/* Line 1455 of yacc.c  */
-#line 378 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (12)].str),"codetable",(grib_yyvsp[(3) - (12)].lval), (grib_yyvsp[(6) - (12)].explist),(grib_yyvsp[(7) - (12)].explist),(grib_yyvsp[(12) - (12)].lval),NULL,(grib_yyvsp[(10) - (12)].str));
-					free((grib_yyvsp[(5) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); }
+/* Line 1792 of yacc.c  */
+#line 379 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"signed_bits",(grib_yyvsp[(3) - (10)].lval),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL);      free((grib_yyvsp[(5) - (10)].str));  }
     break;
 
   case 56:
-
-/* Line 1455 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 382 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"codetable",(grib_yyvsp[(3) - (10)].lval), (grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL);    free((grib_yyvsp[(5) - (10)].str)); }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"codetable",(grib_yyvsp[(3) - (8)].lval), (grib_yyvsp[(6) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL,NULL);    free((grib_yyvsp[(5) - (8)].str)); }
     break;
 
   case 57:
-
-/* Line 1455 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 385 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"smart_table",0,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);    free((grib_yyvsp[(2) - (7)].str)); }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (12)].str),"codetable",(grib_yyvsp[(3) - (12)].lval), (grib_yyvsp[(6) - (12)].explist),(grib_yyvsp[(7) - (12)].explist),(grib_yyvsp[(12) - (12)].lval),NULL,(grib_yyvsp[(10) - (12)].str));
+					free((grib_yyvsp[(5) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); }
     break;
 
   case 58:
-
-/* Line 1455 of yacc.c  */
-#line 388 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(1) - (8)].str),"dictionary",0,(grib_yyvsp[(5) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL,NULL);    free((grib_yyvsp[(1) - (8)].str)); }
+/* Line 1792 of yacc.c  */
+#line 389 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"codetable",(grib_yyvsp[(3) - (10)].lval), (grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL);    free((grib_yyvsp[(5) - (10)].str)); }
     break;
 
   case 59:
-
-/* Line 1455 of yacc.c  */
-#line 391 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(1) - (8)].str),"getenv",0,(grib_yyvsp[(5) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL,NULL);    free((grib_yyvsp[(1) - (8)].str)); }
+/* Line 1792 of yacc.c  */
+#line 392 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"smart_table",0,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);    free((grib_yyvsp[(2) - (7)].str)); }
     break;
 
   case 60:
-
-/* Line 1455 of yacc.c  */
-#line 394 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"complex_codetable",(grib_yyvsp[(3) - (8)].lval), (grib_yyvsp[(6) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL,NULL);    free((grib_yyvsp[(5) - (8)].str)); }
+/* Line 1792 of yacc.c  */
+#line 395 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(1) - (8)].str),"dictionary",0,(grib_yyvsp[(5) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL,NULL);    free((grib_yyvsp[(1) - (8)].str)); }
     break;
 
   case 61:
-
-/* Line 1455 of yacc.c  */
-#line 397 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"complex_codetable",(grib_yyvsp[(3) - (10)].lval), (grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL);    free((grib_yyvsp[(5) - (10)].str)); }
+/* Line 1792 of yacc.c  */
+#line 398 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(1) - (8)].str),"getenv",0,(grib_yyvsp[(5) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL,NULL);    free((grib_yyvsp[(1) - (8)].str)); }
     break;
 
   case 62:
-
-/* Line 1455 of yacc.c  */
-#line 400 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"codeflag",(grib_yyvsp[(3) - (8)].lval), (grib_yyvsp[(6) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL,NULL);  free((grib_yyvsp[(5) - (8)].str)); }
+/* Line 1792 of yacc.c  */
+#line 401 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"complex_codetable",(grib_yyvsp[(3) - (8)].lval), (grib_yyvsp[(6) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL,NULL);    free((grib_yyvsp[(5) - (8)].str)); }
     break;
 
   case 63:
-
-/* Line 1455 of yacc.c  */
-#line 403 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (9)].str),"lookup",(grib_yyvsp[(3) - (9)].lval),(grib_yyvsp[(7) - (9)].explist),NULL,(grib_yyvsp[(9) - (9)].lval),NULL,NULL); free((grib_yyvsp[(5) - (9)].str)); }
+/* Line 1792 of yacc.c  */
+#line 404 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"complex_codetable",(grib_yyvsp[(3) - (10)].lval), (grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL);    free((grib_yyvsp[(5) - (10)].str)); }
     break;
 
   case 64:
-
-/* Line 1455 of yacc.c  */
-#line 406 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"bit",0,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(2) - (7)].str)); }
+/* Line 1792 of yacc.c  */
+#line 407 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"codeflag",(grib_yyvsp[(3) - (8)].lval), (grib_yyvsp[(6) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL,NULL);  free((grib_yyvsp[(5) - (8)].str)); }
     break;
 
   case 65:
-
-/* Line 1455 of yacc.c  */
-#line 409 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (2)].str),"label",0,NULL,NULL,0,NULL,NULL);   free((grib_yyvsp[(2) - (2)].str));  }
+/* Line 1792 of yacc.c  */
+#line 410 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (9)].str),"lookup",(grib_yyvsp[(3) - (9)].lval),(grib_yyvsp[(7) - (9)].explist),NULL,(grib_yyvsp[(9) - (9)].lval),NULL,NULL); free((grib_yyvsp[(5) - (9)].str)); }
     break;
 
   case 66:
-
-/* Line 1455 of yacc.c  */
-#line 412 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (2)].str),"label",0,NULL,NULL,0,NULL,NULL);   free((grib_yyvsp[(2) - (2)].str));  }
+/* Line 1792 of yacc.c  */
+#line 413 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"bit",0,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(2) - (7)].str)); }
     break;
 
   case 67:
-
-/* Line 1455 of yacc.c  */
-#line 415 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"ibmfloat",4,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
+/* Line 1792 of yacc.c  */
+#line 416 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (2)].str),"label",0,NULL,NULL,0,NULL,NULL);   free((grib_yyvsp[(2) - (2)].str));  }
     break;
 
   case 68:
-
-/* Line 1455 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 419 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"int8",1,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (2)].str),"label",0,NULL,NULL,0,NULL,NULL);   free((grib_yyvsp[(2) - (2)].str));  }
     break;
 
   case 69:
-
-/* Line 1455 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 422 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"uint8",1,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"ibmfloat",4,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
     break;
 
   case 70:
-
-/* Line 1455 of yacc.c  */
-#line 425 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"int16",2,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
+/* Line 1792 of yacc.c  */
+#line 426 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"int8",1,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
     break;
 
   case 71:
-
-/* Line 1455 of yacc.c  */
-#line 428 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"uint16",2,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
+/* Line 1792 of yacc.c  */
+#line 429 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"uint8",1,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
     break;
 
   case 72:
-
-/* Line 1455 of yacc.c  */
-#line 431 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"int16_little_endian",2,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
+/* Line 1792 of yacc.c  */
+#line 432 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"int16",2,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
     break;
 
   case 73:
-
-/* Line 1455 of yacc.c  */
-#line 434 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"uint16_little_endian",2,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
+/* Line 1792 of yacc.c  */
+#line 435 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"uint16",2,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
     break;
 
   case 74:
-
-/* Line 1455 of yacc.c  */
-#line 437 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"int32",4,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
+/* Line 1792 of yacc.c  */
+#line 438 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"int16_little_endian",2,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
     break;
 
   case 75:
-
-/* Line 1455 of yacc.c  */
-#line 440 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"uint32",4,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
+/* Line 1792 of yacc.c  */
+#line 441 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"uint16_little_endian",2,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
     break;
 
   case 76:
-
-/* Line 1455 of yacc.c  */
-#line 443 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"int32_little_endian",4,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
+/* Line 1792 of yacc.c  */
+#line 444 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"int32",4,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
     break;
 
   case 77:
-
-/* Line 1455 of yacc.c  */
-#line 446 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"uint32_little_endian",4,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
+/* Line 1792 of yacc.c  */
+#line 447 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"uint32",4,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
     break;
 
   case 78:
-
-/* Line 1455 of yacc.c  */
-#line 449 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"int64",8,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
+/* Line 1792 of yacc.c  */
+#line 450 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"int32_little_endian",4,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
     break;
 
   case 79:
-
-/* Line 1455 of yacc.c  */
-#line 452 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"uint64",8,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
+/* Line 1792 of yacc.c  */
+#line 453 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"uint32_little_endian",4,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
     break;
 
   case 80:
-
-/* Line 1455 of yacc.c  */
-#line 455 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"int64_little_endian",8,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
+/* Line 1792 of yacc.c  */
+#line 456 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"int64",8,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
     break;
 
   case 81:
-
-/* Line 1455 of yacc.c  */
-#line 458 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"uint64_little_endian",8,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
+/* Line 1792 of yacc.c  */
+#line 459 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"uint64",8,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
     break;
 
   case 82:
-
-/* Line 1455 of yacc.c  */
-#line 461 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"blob",0,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);        free((grib_yyvsp[(2) - (7)].str));  }
+/* Line 1792 of yacc.c  */
+#line 462 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"int64_little_endian",8,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
     break;
 
   case 83:
-
-/* Line 1455 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 465 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(4) - (6)].str),"ibmfloat",4,NULL,(grib_yyvsp[(5) - (6)].explist),(grib_yyvsp[(6) - (6)].lval),(grib_yyvsp[(2) - (6)].str),NULL);free((grib_yyvsp[(4) - (6)].str)); free((grib_yyvsp[(2) - (6)].str)); }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"uint64_little_endian",8,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str));  }
     break;
 
   case 84:
-
-/* Line 1455 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 468 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"ibmfloat",4,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);free((grib_yyvsp[(2) - (7)].str));  }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"blob",0,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);        free((grib_yyvsp[(2) - (7)].str));  }
     break;
 
   case 85:
-
-/* Line 1455 of yacc.c  */
-#line 471 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (2)].str),"position",0,NULL,NULL,0,NULL,NULL);     free((grib_yyvsp[(2) - (2)].str));  }
+/* Line 1792 of yacc.c  */
+#line 472 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(4) - (6)].str),"ibmfloat",4,NULL,(grib_yyvsp[(5) - (6)].explist),(grib_yyvsp[(6) - (6)].lval),(grib_yyvsp[(2) - (6)].str),NULL);free((grib_yyvsp[(4) - (6)].str)); free((grib_yyvsp[(2) - (6)].str)); }
     break;
 
   case 86:
-
-/* Line 1455 of yacc.c  */
-#line 474 "griby.y"
-    { (grib_yyval.act) = grib_action_create_variable(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"constant",0,(grib_yyvsp[(4) - (5)].explist),NULL,(grib_yyvsp[(5) - (5)].lval),NULL);free((grib_yyvsp[(2) - (5)].str)); }
+/* Line 1792 of yacc.c  */
+#line 475 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"ibmfloat",4,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);free((grib_yyvsp[(2) - (7)].str));  }
     break;
 
   case 87:
-
-/* Line 1455 of yacc.c  */
-#line 477 "griby.y"
-    { (grib_yyval.act) = grib_action_create_variable(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"transient",0,(grib_yyvsp[(4) - (5)].explist),(grib_yyvsp[(4) - (5)].explist),(grib_yyvsp[(5) - (5)].lval),NULL);   free((grib_yyvsp[(2) - (5)].str)); }
+/* Line 1792 of yacc.c  */
+#line 478 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (2)].str),"position",0,NULL,NULL,0,NULL,NULL);     free((grib_yyvsp[(2) - (2)].str));  }
     break;
 
   case 88:
-
-/* Line 1455 of yacc.c  */
-#line 480 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"ieeefloat",4,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);   free((grib_yyvsp[(2) - (4)].str));  }
+/* Line 1792 of yacc.c  */
+#line 481 "griby.y"
+    { (grib_yyval.act) = grib_action_create_variable(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"constant",0,(grib_yyvsp[(4) - (5)].explist),NULL,(grib_yyvsp[(5) - (5)].lval),NULL);free((grib_yyvsp[(2) - (5)].str)); }
     break;
 
   case 89:
-
-/* Line 1455 of yacc.c  */
-#line 483 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(4) - (6)].str),"ieeefloat",4,NULL,(grib_yyvsp[(5) - (6)].explist),(grib_yyvsp[(6) - (6)].lval),(grib_yyvsp[(2) - (6)].str),NULL);  free((grib_yyvsp[(4) - (6)].str));free((grib_yyvsp[(2) - (6)].str));}
+/* Line 1792 of yacc.c  */
+#line 484 "griby.y"
+    { (grib_yyval.act) = grib_action_create_variable(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"transient",0,(grib_yyvsp[(4) - (5)].explist),(grib_yyvsp[(4) - (5)].explist),(grib_yyvsp[(5) - (5)].lval),NULL);   free((grib_yyvsp[(2) - (5)].str)); }
     break;
 
   case 90:
-
-/* Line 1455 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 486 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"ieeefloat",4,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);free((grib_yyvsp[(2) - (7)].str));  }
+    { (grib_yyval.act) = grib_action_create_transient_darray(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(5) - (6)].dvalue)); free((grib_yyvsp[(2) - (6)].str)); }
     break;
 
   case 91:
-
-/* Line 1455 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 489 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (2)].str),"g1_half_byte_codeflag",0,NULL,NULL,0,NULL,NULL);free((grib_yyvsp[(2) - (2)].str));  }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"ieeefloat",4,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);   free((grib_yyvsp[(2) - (4)].str));  }
     break;
 
   case 92:
-
-/* Line 1455 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 492 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (5)].str),"section_length",(grib_yyvsp[(3) - (5)].lval),NULL,NULL,0,NULL,NULL);free((grib_yyvsp[(5) - (5)].str));  }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(4) - (6)].str),"ieeefloat",4,NULL,(grib_yyvsp[(5) - (6)].explist),(grib_yyvsp[(6) - (6)].lval),(grib_yyvsp[(2) - (6)].str),NULL);  free((grib_yyvsp[(4) - (6)].str));free((grib_yyvsp[(2) - (6)].str));}
     break;
 
   case 93:
-
-/* Line 1455 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 495 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"g1_message_length",(grib_yyvsp[(3) - (8)].lval),(grib_yyvsp[(7) - (8)].explist),NULL,0,NULL,NULL);free((grib_yyvsp[(5) - (8)].str));  }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"ieeefloat",4,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);free((grib_yyvsp[(2) - (7)].str));  }
     break;
 
   case 94:
-
-/* Line 1455 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 498 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"g1_section4_length",(grib_yyvsp[(3) - (8)].lval),(grib_yyvsp[(7) - (8)].explist),NULL,0,NULL,NULL);free((grib_yyvsp[(5) - (8)].str));  }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (2)].str),"g1_half_byte_codeflag",0,NULL,NULL,0,NULL,NULL);free((grib_yyvsp[(2) - (2)].str));  }
     break;
 
   case 95:
-
-/* Line 1455 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 501 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (3)].str),"ksec",0,(grib_yyvsp[(3) - (3)].explist),NULL,0,NULL,NULL);free((grib_yyvsp[(2) - (3)].str)); }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (5)].str),"section_length",(grib_yyvsp[(3) - (5)].lval),NULL,NULL,0,NULL,NULL);free((grib_yyvsp[(5) - (5)].str));  }
     break;
 
   case 96:
-
-/* Line 1455 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 504 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"pad",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL);   free((grib_yyvsp[(2) - (5)].str)); }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (6)].str),"section_length",(grib_yyvsp[(3) - (6)].lval),NULL,(grib_yyvsp[(6) - (6)].explist),0,NULL,NULL);free((grib_yyvsp[(5) - (6)].str));  }
     break;
 
   case 97:
-
-/* Line 1455 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 507 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"padto",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL);   free((grib_yyvsp[(2) - (5)].str)); }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"g1_message_length",(grib_yyvsp[(3) - (8)].lval),(grib_yyvsp[(7) - (8)].explist),NULL,0,NULL,NULL);free((grib_yyvsp[(5) - (8)].str));  }
     break;
 
   case 98:
-
-/* Line 1455 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 510 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"padtoeven",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL);   free((grib_yyvsp[(2) - (5)].str)); }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"g1_section4_length",(grib_yyvsp[(3) - (8)].lval),(grib_yyvsp[(7) - (8)].explist),NULL,0,NULL,NULL);free((grib_yyvsp[(5) - (8)].str));  }
     break;
 
   case 99:
-
-/* Line 1455 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 513 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"padtomultiple",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL);   free((grib_yyvsp[(2) - (5)].str)); }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (3)].str),"ksec",0,(grib_yyvsp[(3) - (3)].explist),NULL,0,NULL,NULL);free((grib_yyvsp[(2) - (3)].str)); }
     break;
 
   case 100:
-
-/* Line 1455 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 516 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (6)].str),"message",(grib_yyvsp[(3) - (6)].lval),0,0,(grib_yyvsp[(6) - (6)].lval),NULL,NULL);   free((grib_yyvsp[(5) - (6)].str));  }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"pad",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL);   free((grib_yyvsp[(2) - (5)].str)); }
     break;
 
   case 101:
-
-/* Line 1455 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 519 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (3)].str),"message_copy",0,0,0,(grib_yyvsp[(3) - (3)].lval),NULL,NULL);   free((grib_yyvsp[(2) - (3)].str));  }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"padto",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL);   free((grib_yyvsp[(2) - (5)].str)); }
     break;
 
   case 102:
-
-/* Line 1455 of yacc.c  */
+/* Line 1792 of yacc.c  */
 #line 522 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (3)].str),"section_padding",0,0,0,(grib_yyvsp[(3) - (3)].lval),NULL,NULL);   free((grib_yyvsp[(2) - (3)].str));  }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"padtoeven",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL);   free((grib_yyvsp[(2) - (5)].str)); }
     break;
 
   case 103:
-
-/* Line 1455 of yacc.c  */
-#line 524 "griby.y"
-    { (grib_yyval.act) = grib_action_create_template(grib_parser_context,0,(grib_yyvsp[(2) - (3)].str),(grib_yyvsp[(3) - (3)].str)); free((grib_yyvsp[(2) - (3)].str)); free((grib_yyvsp[(3) - (3)].str));}
+/* Line 1792 of yacc.c  */
+#line 525 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"padtomultiple",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL);   free((grib_yyvsp[(2) - (5)].str)); }
     break;
 
   case 104:
-
-/* Line 1455 of yacc.c  */
-#line 526 "griby.y"
-    { (grib_yyval.act) = grib_action_create_template(grib_parser_context,1,(grib_yyvsp[(2) - (3)].str),(grib_yyvsp[(3) - (3)].str)); free((grib_yyvsp[(2) - (3)].str)); free((grib_yyvsp[(3) - (3)].str));}
+/* Line 1792 of yacc.c  */
+#line 528 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (6)].str),"message",(grib_yyvsp[(3) - (6)].lval),0,0,(grib_yyvsp[(6) - (6)].lval),NULL,NULL);   free((grib_yyvsp[(5) - (6)].str));  }
     break;
 
   case 105:
-
-/* Line 1455 of yacc.c  */
-#line 529 "griby.y"
-    { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(2) - (5)].str),(grib_yyvsp[(4) - (5)].str),NULL,(grib_yyvsp[(5) - (5)].lval));  free((grib_yyvsp[(2) - (5)].str)); free((grib_yyvsp[(4) - (5)].str)); }
+/* Line 1792 of yacc.c  */
+#line 531 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (3)].str),"message_copy",0,0,0,(grib_yyvsp[(3) - (3)].lval),NULL,NULL);   free((grib_yyvsp[(2) - (3)].str));  }
     break;
 
   case 106:
-
-/* Line 1455 of yacc.c  */
-#line 532 "griby.y"
-    { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(2) - (2)].str),NULL,NULL,0);  free((grib_yyvsp[(2) - (2)].str)); }
+/* Line 1792 of yacc.c  */
+#line 534 "griby.y"
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (3)].str),"section_padding",0,0,0,(grib_yyvsp[(3) - (3)].lval),NULL,NULL);   free((grib_yyvsp[(2) - (3)].str));  }
     break;
 
   case 107:
+/* Line 1792 of yacc.c  */
+#line 536 "griby.y"
+    { (grib_yyval.act) = grib_action_create_template(grib_parser_context,0,(grib_yyvsp[(2) - (3)].str),(grib_yyvsp[(3) - (3)].str)); free((grib_yyvsp[(2) - (3)].str)); free((grib_yyvsp[(3) - (3)].str));}
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 535 "griby.y"
+  case 108:
+/* Line 1792 of yacc.c  */
+#line 538 "griby.y"
+    { (grib_yyval.act) = grib_action_create_template(grib_parser_context,1,(grib_yyvsp[(2) - (3)].str),(grib_yyvsp[(3) - (3)].str)); free((grib_yyvsp[(2) - (3)].str)); free((grib_yyvsp[(3) - (3)].str));}
+    break;
+
+  case 109:
+/* Line 1792 of yacc.c  */
+#line 541 "griby.y"
+    { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(2) - (5)].str),(grib_yyvsp[(4) - (5)].str),NULL,(grib_yyvsp[(5) - (5)].lval));  free((grib_yyvsp[(2) - (5)].str)); free((grib_yyvsp[(4) - (5)].str)); }
+    break;
+
+  case 110:
+/* Line 1792 of yacc.c  */
+#line 544 "griby.y"
+    { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(2) - (2)].str),NULL,NULL,0);  free((grib_yyvsp[(2) - (2)].str)); }
+    break;
+
+  case 111:
+/* Line 1792 of yacc.c  */
+#line 547 "griby.y"
     {
          (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(4) - (7)].str),(grib_yyvsp[(6) - (7)].str),(grib_yyvsp[(2) - (7)].str),(grib_yyvsp[(7) - (7)].lval));  free((grib_yyvsp[(2) - (7)].str)); free((grib_yyvsp[(4) - (7)].str)); free((grib_yyvsp[(6) - (7)].str));
     }
     break;
 
-  case 108:
-
-/* Line 1455 of yacc.c  */
-#line 539 "griby.y"
+  case 112:
+/* Line 1792 of yacc.c  */
+#line 551 "griby.y"
     {
          (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(4) - (4)].str),NULL,(grib_yyvsp[(2) - (4)].str),0);  free((grib_yyvsp[(2) - (4)].str)); free((grib_yyvsp[(4) - (4)].str)); 
     }
     break;
 
-  case 109:
-
-/* Line 1455 of yacc.c  */
-#line 543 "griby.y"
+  case 113:
+/* Line 1792 of yacc.c  */
+#line 555 "griby.y"
     { (grib_yyval.act) = grib_action_create_meta(grib_parser_context,(grib_yyvsp[(2) - (8)].str),(grib_yyvsp[(3) - (8)].str),(grib_yyvsp[(5) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL); free((grib_yyvsp[(2) - (8)].str));free((grib_yyvsp[(3) - (8)].str));}
     break;
 
-  case 110:
-
-/* Line 1455 of yacc.c  */
-#line 546 "griby.y"
+  case 114:
+/* Line 1792 of yacc.c  */
+#line 558 "griby.y"
     { (grib_yyval.act) = grib_action_create_meta(grib_parser_context,(grib_yyvsp[(4) - (10)].str),(grib_yyvsp[(5) - (10)].str),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),(grib_yyvsp[(2) - (10)].str)); free((grib_yyvsp[(4) - (10)].str));free((grib_yyvsp[(5) - (10)].str));free((grib_yyvsp[(2) - (10)].str));}
     break;
 
-  case 111:
-
-/* Line 1455 of yacc.c  */
-#line 549 "griby.y"
+  case 115:
+/* Line 1792 of yacc.c  */
+#line 561 "griby.y"
     {
       grib_arguments* a = grib_arguments_new(
         grib_parser_context,
@@ -3196,10 +3155,9 @@ grib_yyreduce:
     }
     break;
 
-  case 112:
-
-/* Line 1455 of yacc.c  */
-#line 561 "griby.y"
+  case 116:
+/* Line 1792 of yacc.c  */
+#line 573 "griby.y"
     {
       grib_arguments* a = grib_arguments_new(
         grib_parser_context,
@@ -3213,10 +3171,9 @@ grib_yyreduce:
     }
     break;
 
-  case 113:
-
-/* Line 1455 of yacc.c  */
-#line 573 "griby.y"
+  case 117:
+/* Line 1792 of yacc.c  */
+#line 585 "griby.y"
     {
       grib_arguments* a = grib_arguments_new(
         grib_parser_context,
@@ -3230,949 +3187,838 @@ grib_yyreduce:
     }
     break;
 
-  case 114:
-
-/* Line 1455 of yacc.c  */
-#line 585 "griby.y"
+  case 118:
+/* Line 1792 of yacc.c  */
+#line 597 "griby.y"
     { (grib_yyval.act) = grib_action_create_put(grib_parser_context,(grib_yyvsp[(2) - (5)].str),(grib_yyvsp[(4) - (5)].explist));free((grib_yyvsp[(2) - (5)].str));}
     break;
 
-  case 115:
-
-/* Line 1455 of yacc.c  */
-#line 588 "griby.y"
+  case 119:
+/* Line 1792 of yacc.c  */
+#line 600 "griby.y"
     { (grib_yyval.act) = grib_action_create_remove(grib_parser_context,(grib_yyvsp[(2) - (2)].explist));}
     break;
 
-  case 116:
-
-/* Line 1455 of yacc.c  */
-#line 590 "griby.y"
+  case 120:
+/* Line 1792 of yacc.c  */
+#line 602 "griby.y"
     { (grib_yyval.act) = grib_action_create_rename(grib_parser_context,(grib_yyvsp[(3) - (6)].str),(grib_yyvsp[(5) - (6)].str));free((grib_yyvsp[(3) - (6)].str));free((grib_yyvsp[(5) - (6)].str));}
     break;
 
-  case 117:
-
-/* Line 1455 of yacc.c  */
-#line 593 "griby.y"
+  case 121:
+/* Line 1792 of yacc.c  */
+#line 605 "griby.y"
     { (grib_yyval.act) = grib_action_create_assert(grib_parser_context,(grib_yyvsp[(3) - (4)].exp));}
     break;
 
-  case 118:
-
-/* Line 1455 of yacc.c  */
-#line 596 "griby.y"
+  case 122:
+/* Line 1792 of yacc.c  */
+#line 608 "griby.y"
     { (grib_yyval.act) = grib_action_create_modify(grib_parser_context,(grib_yyvsp[(2) - (3)].str),(grib_yyvsp[(3) - (3)].lval)); free((grib_yyvsp[(2) - (3)].str));}
     break;
 
-  case 119:
-
-/* Line 1455 of yacc.c  */
-#line 598 "griby.y"
+  case 123:
+/* Line 1792 of yacc.c  */
+#line 610 "griby.y"
     { (grib_yyval.act) = grib_action_create_set_missing(grib_parser_context,(grib_yyvsp[(2) - (4)].str)); free((grib_yyvsp[(2) - (4)].str)); }
     break;
 
-  case 120:
-
-/* Line 1455 of yacc.c  */
-#line 599 "griby.y"
+  case 124:
+/* Line 1792 of yacc.c  */
+#line 611 "griby.y"
     { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),0); free((grib_yyvsp[(2) - (4)].str)); }
     break;
 
-  case 121:
-
-/* Line 1455 of yacc.c  */
-#line 600 "griby.y"
+  case 125:
+/* Line 1792 of yacc.c  */
+#line 612 "griby.y"
     { (grib_yyval.act) = grib_action_create_set_darray(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(5) - (6)].dvalue)); free((grib_yyvsp[(2) - (6)].str)); }
     break;
 
-  case 122:
+  case 126:
+/* Line 1792 of yacc.c  */
+#line 613 "griby.y"
+    { (grib_yyval.act) = grib_action_create_set_sarray(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(5) - (6)].svalue)); free((grib_yyvsp[(2) - (6)].str)); }
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 602 "griby.y"
+  case 127:
+/* Line 1792 of yacc.c  */
+#line 615 "griby.y"
     { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),1); free((grib_yyvsp[(2) - (4)].str)); }
     break;
 
-  case 123:
-
-/* Line 1455 of yacc.c  */
-#line 605 "griby.y"
+  case 128:
+/* Line 1792 of yacc.c  */
+#line 618 "griby.y"
     { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(2) - (2)].str),0,0); free((grib_yyvsp[(2) - (2)].str));}
     break;
 
-  case 124:
-
-/* Line 1455 of yacc.c  */
-#line 606 "griby.y"
+  case 129:
+/* Line 1792 of yacc.c  */
+#line 619 "griby.y"
     { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",0,0); }
     break;
 
-  case 125:
-
-/* Line 1455 of yacc.c  */
-#line 607 "griby.y"
+  case 130:
+/* Line 1792 of yacc.c  */
+#line 620 "griby.y"
     { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(5) - (5)].str),0,(grib_yyvsp[(3) - (5)].lval)); free((grib_yyvsp[(5) - (5)].str));}
     break;
 
-  case 126:
-
-/* Line 1455 of yacc.c  */
-#line 608 "griby.y"
+  case 131:
+/* Line 1792 of yacc.c  */
+#line 621 "griby.y"
     { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",0,(grib_yyvsp[(3) - (4)].lval)); }
     break;
 
-  case 127:
-
-/* Line 1455 of yacc.c  */
-#line 609 "griby.y"
+  case 132:
+/* Line 1792 of yacc.c  */
+#line 622 "griby.y"
     { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(2) - (2)].str),1,0); free((grib_yyvsp[(2) - (2)].str));}
     break;
 
-  case 128:
-
-/* Line 1455 of yacc.c  */
-#line 610 "griby.y"
+  case 133:
+/* Line 1792 of yacc.c  */
+#line 623 "griby.y"
     { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",1,0); }
     break;
 
-  case 129:
-
-/* Line 1455 of yacc.c  */
-#line 611 "griby.y"
+  case 134:
+/* Line 1792 of yacc.c  */
+#line 624 "griby.y"
     { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(5) - (5)].str),1,(grib_yyvsp[(3) - (5)].lval)); free((grib_yyvsp[(5) - (5)].str));}
     break;
 
-  case 130:
-
-/* Line 1455 of yacc.c  */
-#line 612 "griby.y"
+  case 135:
+/* Line 1792 of yacc.c  */
+#line 625 "griby.y"
     { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",1,(grib_yyvsp[(3) - (4)].lval)); }
     break;
 
-  case 131:
-
-/* Line 1455 of yacc.c  */
-#line 614 "griby.y"
+  case 136:
+/* Line 1792 of yacc.c  */
+#line 627 "griby.y"
     { (grib_yyval.act) = grib_action_create_close(grib_parser_context,(grib_yyvsp[(3) - (4)].str)); free((grib_yyvsp[(3) - (4)].str));}
     break;
 
-  case 132:
-
-/* Line 1455 of yacc.c  */
-#line 615 "griby.y"
+  case 137:
+/* Line 1792 of yacc.c  */
+#line 628 "griby.y"
     { (grib_yyval.act) = grib_action_create_print(grib_parser_context,(grib_yyvsp[(2) - (2)].str),0); free((grib_yyvsp[(2) - (2)].str)); }
     break;
 
-  case 133:
-
-/* Line 1455 of yacc.c  */
-#line 616 "griby.y"
+  case 138:
+/* Line 1792 of yacc.c  */
+#line 629 "griby.y"
     { (grib_yyval.act) = grib_action_create_print(grib_parser_context,(grib_yyvsp[(5) - (5)].str),(grib_yyvsp[(3) - (5)].str)); free((grib_yyvsp[(5) - (5)].str)); free((grib_yyvsp[(3) - (5)].str));}
     break;
 
-  case 134:
-
-/* Line 1455 of yacc.c  */
-#line 617 "griby.y"
+  case 139:
+/* Line 1792 of yacc.c  */
+#line 630 "griby.y"
     { (grib_yyval.act) = grib_action_create_print(grib_parser_context,(grib_yyvsp[(5) - (5)].str),(grib_yyvsp[(3) - (5)].str)); free((grib_yyvsp[(5) - (5)].str)); free((grib_yyvsp[(3) - (5)].str));}
     break;
 
-  case 135:
-
-/* Line 1455 of yacc.c  */
-#line 618 "griby.y"
+  case 140:
+/* Line 1792 of yacc.c  */
+#line 631 "griby.y"
     { (grib_yyval.act) = grib_action_create_print(grib_parser_context,"",0);  }
     break;
 
-  case 136:
-
-/* Line 1455 of yacc.c  */
-#line 622 "griby.y"
+  case 141:
+/* Line 1792 of yacc.c  */
+#line 635 "griby.y"
     { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act),0,0); }
     break;
 
-  case 137:
-
-/* Line 1455 of yacc.c  */
-#line 623 "griby.y"
+  case 142:
+/* Line 1792 of yacc.c  */
+#line 636 "griby.y"
     { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (11)].exp),(grib_yyvsp[(6) - (11)].act),(grib_yyvsp[(10) - (11)].act),0); }
     break;
 
-  case 138:
-
-/* Line 1455 of yacc.c  */
-#line 624 "griby.y"
+  case 143:
+/* Line 1792 of yacc.c  */
+#line 637 "griby.y"
     { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act),0,1); }
     break;
 
-  case 139:
-
-/* Line 1455 of yacc.c  */
-#line 625 "griby.y"
+  case 144:
+/* Line 1792 of yacc.c  */
+#line 638 "griby.y"
     { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (11)].exp),(grib_yyvsp[(6) - (11)].act),(grib_yyvsp[(10) - (11)].act),1); }
     break;
 
-  case 140:
-
-/* Line 1455 of yacc.c  */
-#line 629 "griby.y"
+  case 145:
+/* Line 1792 of yacc.c  */
+#line 642 "griby.y"
     { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[(3) - (6)].exp),(grib_yyvsp[(5) - (6)].act),NULL); }
     break;
 
-  case 141:
-
-/* Line 1455 of yacc.c  */
-#line 630 "griby.y"
+  case 146:
+/* Line 1792 of yacc.c  */
+#line 643 "griby.y"
     { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act),NULL); }
     break;
 
-  case 142:
-
-/* Line 1455 of yacc.c  */
-#line 631 "griby.y"
+  case 147:
+/* Line 1792 of yacc.c  */
+#line 644 "griby.y"
     { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[(3) - (11)].exp),(grib_yyvsp[(6) - (11)].act),(grib_yyvsp[(10) - (11)].act)); }
     break;
 
-  case 143:
-
-/* Line 1455 of yacc.c  */
-#line 634 "griby.y"
+  case 148:
+/* Line 1792 of yacc.c  */
+#line 647 "griby.y"
     { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),0); free((grib_yyvsp[(2) - (4)].str)); }
     break;
 
-  case 144:
-
-/* Line 1455 of yacc.c  */
-#line 635 "griby.y"
+  case 149:
+/* Line 1792 of yacc.c  */
+#line 648 "griby.y"
     { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),1); free((grib_yyvsp[(2) - (4)].str)); }
     break;
 
-  case 146:
-
-/* Line 1455 of yacc.c  */
-#line 639 "griby.y"
+  case 151:
+/* Line 1792 of yacc.c  */
+#line 652 "griby.y"
     { (grib_yyvsp[(1) - (3)].act)->next = (grib_yyvsp[(2) - (3)].act); (grib_yyval.act) = (grib_yyvsp[(1) - (3)].act); }
     break;
 
-  case 147:
-
-/* Line 1455 of yacc.c  */
-#line 643 "griby.y"
+  case 152:
+/* Line 1792 of yacc.c  */
+#line 656 "griby.y"
     { (grib_yyval.explist) = NULL ;}
     break;
 
-  case 148:
-
-/* Line 1455 of yacc.c  */
-#line 644 "griby.y"
+  case 153:
+/* Line 1792 of yacc.c  */
+#line 657 "griby.y"
     { (grib_yyval.explist) = (grib_yyvsp[(2) - (2)].explist) ;}
     break;
 
-  case 149:
-
-/* Line 1455 of yacc.c  */
-#line 647 "griby.y"
+  case 154:
+/* Line 1792 of yacc.c  */
+#line 660 "griby.y"
     { (grib_yyval.lval) = 0 ; }
     break;
 
-  case 150:
-
-/* Line 1455 of yacc.c  */
-#line 648 "griby.y"
+  case 155:
+/* Line 1792 of yacc.c  */
+#line 661 "griby.y"
     { (grib_yyval.lval) = (grib_yyvsp[(2) - (2)].lval); }
     break;
 
-  case 152:
-
-/* Line 1455 of yacc.c  */
-#line 652 "griby.y"
+  case 157:
+/* Line 1792 of yacc.c  */
+#line 665 "griby.y"
     { (grib_yyval.lval) = (grib_yyvsp[(1) - (3)].lval) | (grib_yyvsp[(3) - (3)].lval); }
     break;
 
-  case 153:
-
-/* Line 1455 of yacc.c  */
-#line 655 "griby.y"
+  case 158:
+/* Line 1792 of yacc.c  */
+#line 668 "griby.y"
     { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_READ_ONLY; }
     break;
 
-  case 154:
-
-/* Line 1455 of yacc.c  */
-#line 656 "griby.y"
+  case 159:
+/* Line 1792 of yacc.c  */
+#line 669 "griby.y"
     { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_LOWERCASE; }
     break;
 
-  case 155:
-
-/* Line 1455 of yacc.c  */
-#line 657 "griby.y"
+  case 160:
+/* Line 1792 of yacc.c  */
+#line 670 "griby.y"
     { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_DUMP; }
     break;
 
-  case 156:
-
-/* Line 1455 of yacc.c  */
-#line 658 "griby.y"
+  case 161:
+/* Line 1792 of yacc.c  */
+#line 671 "griby.y"
     { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_JSON; }
     break;
 
-  case 157:
-
-/* Line 1455 of yacc.c  */
-#line 659 "griby.y"
+  case 162:
+/* Line 1792 of yacc.c  */
+#line 672 "griby.y"
     { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_XML; }
     break;
 
-  case 158:
-
-/* Line 1455 of yacc.c  */
-#line 660 "griby.y"
+  case 163:
+/* Line 1792 of yacc.c  */
+#line 673 "griby.y"
     { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_NO_COPY; }
     break;
 
-  case 159:
-
-/* Line 1455 of yacc.c  */
-#line 661 "griby.y"
+  case 164:
+/* Line 1792 of yacc.c  */
+#line 674 "griby.y"
     { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_NO_FAIL; }
     break;
 
-  case 160:
-
-/* Line 1455 of yacc.c  */
-#line 662 "griby.y"
+  case 165:
+/* Line 1792 of yacc.c  */
+#line 675 "griby.y"
     { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_HIDDEN; }
     break;
 
-  case 161:
-
-/* Line 1455 of yacc.c  */
-#line 663 "griby.y"
+  case 166:
+/* Line 1792 of yacc.c  */
+#line 676 "griby.y"
     { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC; }
     break;
 
-  case 162:
-
-/* Line 1455 of yacc.c  */
-#line 664 "griby.y"
+  case 167:
+/* Line 1792 of yacc.c  */
+#line 677 "griby.y"
     { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_CAN_BE_MISSING; }
     break;
 
-  case 163:
-
-/* Line 1455 of yacc.c  */
-#line 665 "griby.y"
+  case 168:
+/* Line 1792 of yacc.c  */
+#line 678 "griby.y"
     { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_CONSTRAINT; }
     break;
 
-  case 164:
-
-/* Line 1455 of yacc.c  */
-#line 666 "griby.y"
+  case 169:
+/* Line 1792 of yacc.c  */
+#line 679 "griby.y"
     { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_OVERRIDE; }
     break;
 
-  case 165:
-
-/* Line 1455 of yacc.c  */
-#line 667 "griby.y"
+  case 170:
+/* Line 1792 of yacc.c  */
+#line 680 "griby.y"
     { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_COPY_OK; }
     break;
 
-  case 166:
-
-/* Line 1455 of yacc.c  */
-#line 668 "griby.y"
+  case 171:
+/* Line 1792 of yacc.c  */
+#line 681 "griby.y"
     { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_TRANSIENT; }
     break;
 
-  case 167:
-
-/* Line 1455 of yacc.c  */
-#line 669 "griby.y"
+  case 172:
+/* Line 1792 of yacc.c  */
+#line 682 "griby.y"
     { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_STRING_TYPE; }
     break;
 
-  case 168:
-
-/* Line 1455 of yacc.c  */
-#line 670 "griby.y"
+  case 173:
+/* Line 1792 of yacc.c  */
+#line 683 "griby.y"
     { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_LONG_TYPE; }
     break;
 
-  case 169:
-
-/* Line 1455 of yacc.c  */
-#line 671 "griby.y"
+  case 174:
+/* Line 1792 of yacc.c  */
+#line 684 "griby.y"
     { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_DOUBLE_TYPE; }
     break;
 
-  case 170:
-
-/* Line 1455 of yacc.c  */
-#line 674 "griby.y"
+  case 175:
+/* Line 1792 of yacc.c  */
+#line 687 "griby.y"
     { (grib_yyval.act) = grib_action_create_list(grib_parser_context,(grib_yyvsp[(1) - (8)].str),(grib_yyvsp[(4) - (8)].exp),(grib_yyvsp[(7) - (8)].act)); free((grib_yyvsp[(1) - (8)].str)); }
     break;
 
-  case 171:
-
-/* Line 1455 of yacc.c  */
-#line 677 "griby.y"
+  case 176:
+/* Line 1792 of yacc.c  */
+#line 690 "griby.y"
     { (grib_yyval.act) = grib_action_create_while(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act));  }
     break;
 
-  case 172:
-
-/* Line 1455 of yacc.c  */
-#line 680 "griby.y"
+  case 177:
+/* Line 1792 of yacc.c  */
+#line 693 "griby.y"
     { (grib_yyval.act) = grib_action_create_trigger(grib_parser_context,(grib_yyvsp[(3) - (7)].explist),(grib_yyvsp[(6) - (7)].act));  }
     break;
 
-  case 173:
-
-/* Line 1455 of yacc.c  */
-#line 683 "griby.y"
+  case 178:
+/* Line 1792 of yacc.c  */
+#line 696 "griby.y"
     { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(4) - (6)].concept_value),0,0,0,0,0,0,(grib_yyvsp[(6) - (6)].lval),0);  free((grib_yyvsp[(2) - (6)].str)); }
     break;
 
-  case 174:
-
-/* Line 1455 of yacc.c  */
-#line 684 "griby.y"
+  case 179:
+/* Line 1792 of yacc.c  */
+#line 697 "griby.y"
     { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (9)].str),(grib_yyvsp[(7) - (9)].concept_value),0,0,(grib_yyvsp[(4) - (9)].str),0,0,0,(grib_yyvsp[(9) - (9)].lval),0);  free((grib_yyvsp[(2) - (9)].str));free((grib_yyvsp[(4) - (9)].str)); }
     break;
 
-  case 175:
-
-/* Line 1455 of yacc.c  */
-#line 685 "griby.y"
+  case 180:
+/* Line 1792 of yacc.c  */
+#line 698 "griby.y"
     { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (12)].str),0,(grib_yyvsp[(6) - (12)].str),0,(grib_yyvsp[(4) - (12)].str),(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,(grib_yyvsp[(12) - (12)].lval),0);  free((grib_yyvsp[(2) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); }
     break;
 
-  case 176:
-
-/* Line 1455 of yacc.c  */
-#line 686 "griby.y"
+  case 181:
+/* Line 1792 of yacc.c  */
+#line 699 "griby.y"
     { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (14)].str),0,(grib_yyvsp[(6) - (14)].str),0,(grib_yyvsp[(4) - (14)].str),(grib_yyvsp[(8) - (14)].str),(grib_yyvsp[(10) - (14)].str),(grib_yyvsp[(12) - (14)].str),(grib_yyvsp[(14) - (14)].lval),0);  free((grib_yyvsp[(2) - (14)].str));free((grib_yyvsp[(6) - (14)].str));free((grib_yyvsp[(4) - (14)].str));free((grib_yyvsp[(8) - (14)].str));free((grib_yyvsp[(10) - (14)].str));free((grib_yyvsp[(12) - (14) [...]
     break;
 
-  case 177:
-
-/* Line 1455 of yacc.c  */
-#line 687 "griby.y"
+  case 182:
+/* Line 1792 of yacc.c  */
+#line 700 "griby.y"
     { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (10)].str),0,(grib_yyvsp[(6) - (10)].str),0,(grib_yyvsp[(4) - (10)].str),(grib_yyvsp[(8) - (10)].str),0,0,(grib_yyvsp[(10) - (10)].lval),0);  free((grib_yyvsp[(2) - (10)].str));free((grib_yyvsp[(6) - (10)].str));free((grib_yyvsp[(4) - (10)].str));free((grib_yyvsp[(8) - (10)].str)); }
     break;
 
-  case 178:
-
-/* Line 1455 of yacc.c  */
-#line 688 "griby.y"
+  case 183:
+/* Line 1792 of yacc.c  */
+#line 701 "griby.y"
     { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (14)].str),0,(grib_yyvsp[(8) - (14)].str),(grib_yyvsp[(2) - (14)].str),(grib_yyvsp[(6) - (14)].str),(grib_yyvsp[(10) - (14)].str),(grib_yyvsp[(12) - (14)].str),0,(grib_yyvsp[(14) - (14)].lval),0);  free((grib_yyvsp[(4) - (14)].str));free((grib_yyvsp[(8) - (14)].str));free((grib_yyvsp[(6) - (14)].str));free((grib_yyvsp[(10) - (14)].str)); free((grib_yyvsp[(12) - (14)].str)); free((grib_yyvsp[(2) - (1 [...]
     break;
 
-  case 179:
-
-/* Line 1455 of yacc.c  */
-#line 689 "griby.y"
+  case 184:
+/* Line 1792 of yacc.c  */
+#line 702 "griby.y"
     { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (12)].str),0,(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(2) - (12)].str),(grib_yyvsp[(6) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,0,(grib_yyvsp[(12) - (12)].lval),0);  free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); free((grib_yyvsp[(2) - (12)].str));}
     break;
 
-  case 180:
-
-/* Line 1455 of yacc.c  */
-#line 690 "griby.y"
+  case 185:
+/* Line 1792 of yacc.c  */
+#line 703 "griby.y"
     { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (8)].str),(grib_yyvsp[(6) - (8)].concept_value),0,(grib_yyvsp[(2) - (8)].str),0,0,0,0,(grib_yyvsp[(8) - (8)].lval),0);  free((grib_yyvsp[(2) - (8)].str));free((grib_yyvsp[(4) - (8)].str)); }
     break;
 
-  case 181:
-
-/* Line 1455 of yacc.c  */
-#line 691 "griby.y"
+  case 186:
+/* Line 1792 of yacc.c  */
+#line 704 "griby.y"
     { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (11)].str),(grib_yyvsp[(9) - (11)].concept_value),0,(grib_yyvsp[(2) - (11)].str),(grib_yyvsp[(6) - (11)].str),0,0,0,(grib_yyvsp[(11) - (11)].lval),0);  free((grib_yyvsp[(2) - (11)].str));free((grib_yyvsp[(4) - (11)].str));free((grib_yyvsp[(6) - (11)].str)); }
     break;
 
-  case 182:
-
-/* Line 1455 of yacc.c  */
-#line 692 "griby.y"
+  case 187:
+/* Line 1792 of yacc.c  */
+#line 705 "griby.y"
     { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(4) - (6)].concept_value),0,0,0,0,0,0,(grib_yyvsp[(6) - (6)].lval),1);  free((grib_yyvsp[(2) - (6)].str)); }
     break;
 
-  case 183:
-
-/* Line 1455 of yacc.c  */
-#line 693 "griby.y"
+  case 188:
+/* Line 1792 of yacc.c  */
+#line 706 "griby.y"
     { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (9)].str),(grib_yyvsp[(7) - (9)].concept_value),0,0,(grib_yyvsp[(4) - (9)].str),0,0,0,(grib_yyvsp[(9) - (9)].lval),1);  free((grib_yyvsp[(2) - (9)].str));free((grib_yyvsp[(4) - (9)].str)); }
     break;
 
-  case 184:
-
-/* Line 1455 of yacc.c  */
-#line 694 "griby.y"
+  case 189:
+/* Line 1792 of yacc.c  */
+#line 707 "griby.y"
     { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (12)].str),0,(grib_yyvsp[(6) - (12)].str),0,(grib_yyvsp[(4) - (12)].str),(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,(grib_yyvsp[(12) - (12)].lval),1);  free((grib_yyvsp[(2) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); }
     break;
 
-  case 185:
-
-/* Line 1455 of yacc.c  */
-#line 695 "griby.y"
+  case 190:
+/* Line 1792 of yacc.c  */
+#line 708 "griby.y"
     { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (10)].str),0,(grib_yyvsp[(6) - (10)].str),0,(grib_yyvsp[(4) - (10)].str),(grib_yyvsp[(8) - (10)].str),0,0,(grib_yyvsp[(10) - (10)].lval),1);  free((grib_yyvsp[(2) - (10)].str));free((grib_yyvsp[(6) - (10)].str));free((grib_yyvsp[(4) - (10)].str));free((grib_yyvsp[(8) - (10)].str)); }
     break;
 
-  case 186:
-
-/* Line 1455 of yacc.c  */
-#line 696 "griby.y"
+  case 191:
+/* Line 1792 of yacc.c  */
+#line 709 "griby.y"
     { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (14)].str),0,(grib_yyvsp[(8) - (14)].str),(grib_yyvsp[(2) - (14)].str),(grib_yyvsp[(6) - (14)].str),(grib_yyvsp[(10) - (14)].str),(grib_yyvsp[(12) - (14)].str),0,(grib_yyvsp[(14) - (14)].lval),1);  free((grib_yyvsp[(4) - (14)].str));free((grib_yyvsp[(8) - (14)].str));free((grib_yyvsp[(6) - (14)].str));free((grib_yyvsp[(10) - (14)].str));free((grib_yyvsp[(12) - (14)].str)); free((grib_yyvsp[(2) - (14 [...]
     break;
 
-  case 187:
-
-/* Line 1455 of yacc.c  */
-#line 697 "griby.y"
+  case 192:
+/* Line 1792 of yacc.c  */
+#line 710 "griby.y"
     { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (12)].str),0,(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(2) - (12)].str),(grib_yyvsp[(6) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,0,(grib_yyvsp[(12) - (12)].lval),1);  free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); free((grib_yyvsp[(2) - (12)].str));}
     break;
 
-  case 188:
-
-/* Line 1455 of yacc.c  */
-#line 698 "griby.y"
+  case 193:
+/* Line 1792 of yacc.c  */
+#line 711 "griby.y"
     { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (8)].str),(grib_yyvsp[(6) - (8)].concept_value),0,(grib_yyvsp[(2) - (8)].str),0,0,0,0,(grib_yyvsp[(8) - (8)].lval),1);  free((grib_yyvsp[(2) - (8)].str));free((grib_yyvsp[(4) - (8)].str)); }
     break;
 
-  case 189:
-
-/* Line 1455 of yacc.c  */
-#line 699 "griby.y"
+  case 194:
+/* Line 1792 of yacc.c  */
+#line 712 "griby.y"
     { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (11)].str),(grib_yyvsp[(9) - (11)].concept_value),0,(grib_yyvsp[(2) - (11)].str),(grib_yyvsp[(6) - (11)].str),0,0,0,(grib_yyvsp[(11) - (11)].lval),1);  free((grib_yyvsp[(2) - (11)].str));free((grib_yyvsp[(4) - (11)].str));free((grib_yyvsp[(6) - (11)].str)); }
     break;
 
-  case 191:
-
-/* Line 1455 of yacc.c  */
-#line 704 "griby.y"
+  case 196:
+/* Line 1792 of yacc.c  */
+#line 717 "griby.y"
     { (grib_yyval.concept_value) = (grib_yyvsp[(2) - (2)].concept_value); (grib_yyvsp[(2) - (2)].concept_value)->next = (grib_yyvsp[(1) - (2)].concept_value);   }
     break;
 
-  case 193:
-
-/* Line 1455 of yacc.c  */
-#line 708 "griby.y"
+  case 198:
+/* Line 1792 of yacc.c  */
+#line 721 "griby.y"
     { (grib_yyval.hash_array_value) = (grib_yyvsp[(2) - (2)].hash_array_value); (grib_yyvsp[(2) - (2)].hash_array_value)->next = (grib_yyvsp[(1) - (2)].hash_array_value);   }
     break;
 
-  case 194:
-
-/* Line 1455 of yacc.c  */
-#line 711 "griby.y"
+  case 199:
+/* Line 1792 of yacc.c  */
+#line 724 "griby.y"
     { (grib_yyval.act) = grib_action_create_hash_array(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(4) - (6)].hash_array_value),0,0,0,0,0,0,(grib_yyvsp[(6) - (6)].lval),0);  free((grib_yyvsp[(2) - (6)].str)); }
     break;
 
-  case 195:
-
-/* Line 1455 of yacc.c  */
-#line 712 "griby.y"
+  case 200:
+/* Line 1792 of yacc.c  */
+#line 725 "griby.y"
     { (grib_yyval.act) = grib_action_create_hash_array(grib_parser_context,(grib_yyvsp[(2) - (12)].str),0,(grib_yyvsp[(6) - (12)].str),0,(grib_yyvsp[(4) - (12)].str),(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,(grib_yyvsp[(12) - (12)].lval),0);  free((grib_yyvsp[(2) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); }
     break;
 
-  case 197:
-
-/* Line 1455 of yacc.c  */
-#line 716 "griby.y"
+  case 202:
+/* Line 1792 of yacc.c  */
+#line 729 "griby.y"
     { (grib_yyval.case_value) = (grib_yyvsp[(2) - (2)].case_value); (grib_yyvsp[(2) - (2)].case_value)->next = (grib_yyvsp[(1) - (2)].case_value);   }
     break;
 
-  case 198:
-
-/* Line 1455 of yacc.c  */
-#line 719 "griby.y"
+  case 203:
+/* Line 1792 of yacc.c  */
+#line 732 "griby.y"
     { (grib_yyval.case_value) = grib_case_new(grib_parser_context,(grib_yyvsp[(2) - (4)].explist),(grib_yyvsp[(4) - (4)].act));  }
     break;
 
-  case 199:
-
-/* Line 1455 of yacc.c  */
-#line 723 "griby.y"
+  case 204:
+/* Line 1792 of yacc.c  */
+#line 736 "griby.y"
     { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[(3) - (10)].explist),(grib_yyvsp[(6) - (10)].case_value),(grib_yyvsp[(9) - (10)].act)); }
     break;
 
-  case 200:
-
-/* Line 1455 of yacc.c  */
-#line 724 "griby.y"
+  case 205:
+/* Line 1792 of yacc.c  */
+#line 737 "griby.y"
     { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[(3) - (9)].explist),(grib_yyvsp[(6) - (9)].case_value),grib_action_create_noop(grib_parser_context,"continue")); }
     break;
 
-  case 201:
-
-/* Line 1455 of yacc.c  */
-#line 725 "griby.y"
+  case 206:
+/* Line 1792 of yacc.c  */
+#line 738 "griby.y"
     { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[(3) - (7)].explist),(grib_yyvsp[(6) - (7)].case_value),0); }
     break;
 
-  case 202:
-
-/* Line 1455 of yacc.c  */
-#line 728 "griby.y"
+  case 207:
+/* Line 1792 of yacc.c  */
+#line 741 "griby.y"
     {
 	  				(grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,(grib_yyvsp[(1) - (5)].str),(grib_yyvsp[(4) - (5)].concept_condition)); free((grib_yyvsp[(1) - (5)].str));}
     break;
 
-  case 203:
-
-/* Line 1455 of yacc.c  */
-#line 730 "griby.y"
+  case 208:
+/* Line 1792 of yacc.c  */
+#line 743 "griby.y"
     {
 	  				(grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,(grib_yyvsp[(1) - (5)].str),(grib_yyvsp[(4) - (5)].concept_condition)); free((grib_yyvsp[(1) - (5)].str));}
     break;
 
-  case 204:
-
-/* Line 1455 of yacc.c  */
-#line 732 "griby.y"
+  case 209:
+/* Line 1792 of yacc.c  */
+#line 745 "griby.y"
     {
 					char buf[80]; sprintf(buf,"%ld",(long)(grib_yyvsp[(1) - (5)].lval)); (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,buf,(grib_yyvsp[(4) - (5)].concept_condition));}
     break;
 
-  case 205:
-
-/* Line 1455 of yacc.c  */
-#line 734 "griby.y"
+  case 210:
+/* Line 1792 of yacc.c  */
+#line 747 "griby.y"
     {
 					char buf[80]; sprintf(buf,"%g",(double)(grib_yyvsp[(1) - (5)].dval)); (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,buf,(grib_yyvsp[(4) - (5)].concept_condition));}
     break;
 
-  case 207:
-
-/* Line 1455 of yacc.c  */
-#line 739 "griby.y"
+  case 212:
+/* Line 1792 of yacc.c  */
+#line 752 "griby.y"
     { (grib_yyvsp[(1) - (2)].concept_condition)->next = (grib_yyvsp[(2) - (2)].concept_condition); (grib_yyval.concept_condition) = (grib_yyvsp[(1) - (2)].concept_condition); }
     break;
 
-  case 208:
-
-/* Line 1455 of yacc.c  */
-#line 742 "griby.y"
-    { (grib_yyval.concept_condition) = grib_concept_condition_new(grib_parser_context,(grib_yyvsp[(1) - (4)].str),(grib_yyvsp[(3) - (4)].exp)); free((grib_yyvsp[(1) - (4)].str)); }
+  case 213:
+/* Line 1792 of yacc.c  */
+#line 755 "griby.y"
+    { (grib_yyval.concept_condition) = grib_concept_condition_new(grib_parser_context,(grib_yyvsp[(1) - (4)].str),(grib_yyvsp[(3) - (4)].exp),0); free((grib_yyvsp[(1) - (4)].str)); }
     break;
 
-  case 209:
+  case 214:
+/* Line 1792 of yacc.c  */
+#line 756 "griby.y"
+    { (grib_yyval.concept_condition) = grib_concept_condition_new(grib_parser_context,(grib_yyvsp[(1) - (6)].str),0,(grib_yyvsp[(4) - (6)].ivalue)); free((grib_yyvsp[(1) - (6)].str)); }
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 746 "griby.y"
+  case 215:
+/* Line 1792 of yacc.c  */
+#line 760 "griby.y"
     {
 	  				(grib_yyval.hash_array_value) = grib_integer_hash_array_value_new(grib_parser_context,(grib_yyvsp[(1) - (5)].str),(grib_yyvsp[(4) - (5)].ivalue)); free((grib_yyvsp[(1) - (5)].str));}
     break;
 
-  case 210:
-
-/* Line 1455 of yacc.c  */
-#line 748 "griby.y"
+  case 216:
+/* Line 1792 of yacc.c  */
+#line 762 "griby.y"
     {
 	  				(grib_yyval.hash_array_value) = grib_integer_hash_array_value_new(grib_parser_context,(grib_yyvsp[(1) - (5)].str),(grib_yyvsp[(4) - (5)].ivalue)); free((grib_yyvsp[(1) - (5)].str));}
     break;
 
-  case 211:
-
-/* Line 1455 of yacc.c  */
-#line 752 "griby.y"
+  case 217:
+/* Line 1792 of yacc.c  */
+#line 766 "griby.y"
     { (grib_yyval.exp) = new_accessor_expression(grib_parser_context,(grib_yyvsp[(3) - (8)].str),(grib_yyvsp[(5) - (8)].lval),(grib_yyvsp[(7) - (8)].lval));  free((grib_yyvsp[(3) - (8)].str)); }
     break;
 
-  case 212:
-
-/* Line 1455 of yacc.c  */
-#line 753 "griby.y"
+  case 218:
+/* Line 1792 of yacc.c  */
+#line 767 "griby.y"
     { (grib_yyval.exp) = new_accessor_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].str),0,0); free((grib_yyvsp[(1) - (1)].str)); }
     break;
 
-  case 213:
-
-/* Line 1455 of yacc.c  */
-#line 754 "griby.y"
+  case 219:
+/* Line 1792 of yacc.c  */
+#line 768 "griby.y"
     { (grib_yyval.exp) = new_sub_string_expression(grib_parser_context,(grib_yyvsp[(3) - (8)].str),(grib_yyvsp[(5) - (8)].lval),(grib_yyvsp[(7) - (8)].lval));  free((grib_yyvsp[(3) - (8)].str)); }
     break;
 
-  case 214:
-
-/* Line 1455 of yacc.c  */
-#line 755 "griby.y"
+  case 220:
+/* Line 1792 of yacc.c  */
+#line 769 "griby.y"
     { (grib_yyval.exp) = new_string_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].str));  free((grib_yyvsp[(1) - (1)].str)); }
     break;
 
-  case 216:
-
-/* Line 1455 of yacc.c  */
-#line 759 "griby.y"
+  case 222:
+/* Line 1792 of yacc.c  */
+#line 773 "griby.y"
     { (grib_yyval.exp) = new_long_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].lval));  }
     break;
 
-  case 217:
-
-/* Line 1455 of yacc.c  */
-#line 760 "griby.y"
+  case 223:
+/* Line 1792 of yacc.c  */
+#line 774 "griby.y"
     { (grib_yyval.exp) = new_double_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].dval));  /* TODO: change to new_float_expression*/}
     break;
 
-  case 218:
-
-/* Line 1455 of yacc.c  */
-#line 762 "griby.y"
+  case 224:
+/* Line 1792 of yacc.c  */
+#line 776 "griby.y"
     { (grib_yyval.exp) = NULL; }
     break;
 
-  case 219:
-
-/* Line 1455 of yacc.c  */
-#line 763 "griby.y"
+  case 225:
+/* Line 1792 of yacc.c  */
+#line 777 "griby.y"
     { (grib_yyval.exp) = new_true_expression(grib_parser_context); }
     break;
 
-  case 220:
-
-/* Line 1455 of yacc.c  */
-#line 764 "griby.y"
+  case 226:
+/* Line 1792 of yacc.c  */
+#line 778 "griby.y"
     { (grib_yyval.exp) = (grib_yyvsp[(2) - (3)].exp); }
     break;
 
-  case 221:
-
-/* Line 1455 of yacc.c  */
-#line 765 "griby.y"
+  case 227:
+/* Line 1792 of yacc.c  */
+#line 779 "griby.y"
     { (grib_yyval.exp) = new_unop_expression(grib_parser_context,&grib_op_neg,&grib_op_neg_d,(grib_yyvsp[(2) - (2)].exp)); }
     break;
 
-  case 222:
-
-/* Line 1455 of yacc.c  */
-#line 766 "griby.y"
+  case 228:
+/* Line 1792 of yacc.c  */
+#line 780 "griby.y"
     { (grib_yyval.exp) = new_func_expression(grib_parser_context,(grib_yyvsp[(1) - (3)].str),NULL); free((grib_yyvsp[(1) - (3)].str));}
     break;
 
-  case 223:
-
-/* Line 1455 of yacc.c  */
-#line 767 "griby.y"
+  case 229:
+/* Line 1792 of yacc.c  */
+#line 781 "griby.y"
     { (grib_yyval.exp) = new_func_expression(grib_parser_context,(grib_yyvsp[(1) - (4)].str),(grib_yyvsp[(3) - (4)].explist)); free((grib_yyvsp[(1) - (4)].str));}
     break;
 
-  case 224:
-
-/* Line 1455 of yacc.c  */
-#line 771 "griby.y"
+  case 230:
+/* Line 1792 of yacc.c  */
+#line 785 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_pow,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 226:
-
-/* Line 1455 of yacc.c  */
-#line 775 "griby.y"
+  case 232:
+/* Line 1792 of yacc.c  */
+#line 789 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_mul,&grib_op_mul_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 227:
-
-/* Line 1455 of yacc.c  */
-#line 776 "griby.y"
+  case 233:
+/* Line 1792 of yacc.c  */
+#line 790 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_div,&grib_op_div_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 228:
-
-/* Line 1455 of yacc.c  */
-#line 777 "griby.y"
+  case 234:
+/* Line 1792 of yacc.c  */
+#line 791 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_modulo,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 229:
-
-/* Line 1455 of yacc.c  */
-#line 778 "griby.y"
+  case 235:
+/* Line 1792 of yacc.c  */
+#line 792 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_bit,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 230:
-
-/* Line 1455 of yacc.c  */
-#line 779 "griby.y"
+  case 236:
+/* Line 1792 of yacc.c  */
+#line 793 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_bitoff,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 232:
-
-/* Line 1455 of yacc.c  */
-#line 781 "griby.y"
+  case 238:
+/* Line 1792 of yacc.c  */
+#line 795 "griby.y"
     { (grib_yyval.exp) = new_length_expression(grib_parser_context,(grib_yyvsp[(3) - (4)].str)); free((grib_yyvsp[(3) - (4)].str));}
     break;
 
-  case 233:
-
-/* Line 1455 of yacc.c  */
-#line 782 "griby.y"
+  case 239:
+/* Line 1792 of yacc.c  */
+#line 796 "griby.y"
     { (grib_yyval.exp) = new_is_in_list_expression(grib_parser_context,(grib_yyvsp[(3) - (6)].str),(grib_yyvsp[(5) - (6)].str)); free((grib_yyvsp[(3) - (6)].str));free((grib_yyvsp[(5) - (6)].str));}
     break;
 
-  case 234:
-
-/* Line 1455 of yacc.c  */
-#line 783 "griby.y"
+  case 240:
+/* Line 1792 of yacc.c  */
+#line 797 "griby.y"
     { (grib_yyval.exp) = new_is_in_dict_expression(grib_parser_context,(grib_yyvsp[(3) - (6)].str),(grib_yyvsp[(5) - (6)].str)); free((grib_yyvsp[(3) - (6)].str));free((grib_yyvsp[(5) - (6)].str));}
     break;
 
-  case 235:
-
-/* Line 1455 of yacc.c  */
-#line 784 "griby.y"
+  case 241:
+/* Line 1792 of yacc.c  */
+#line 798 "griby.y"
     { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[(3) - (6)].str),(grib_yyvsp[(5) - (6)].lval),0); free((grib_yyvsp[(3) - (6)].str));}
     break;
 
-  case 236:
-
-/* Line 1455 of yacc.c  */
-#line 785 "griby.y"
+  case 242:
+/* Line 1792 of yacc.c  */
+#line 799 "griby.y"
     { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[(3) - (8)].str),(grib_yyvsp[(5) - (8)].lval),(grib_yyvsp[(7) - (8)].lval)); free((grib_yyvsp[(3) - (8)].str));}
     break;
 
-  case 237:
-
-/* Line 1455 of yacc.c  */
-#line 786 "griby.y"
+  case 243:
+/* Line 1792 of yacc.c  */
+#line 800 "griby.y"
     { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[(3) - (4)].str),0,0); free((grib_yyvsp[(3) - (4)].str));}
     break;
 
-  case 238:
-
-/* Line 1455 of yacc.c  */
-#line 789 "griby.y"
+  case 244:
+/* Line 1792 of yacc.c  */
+#line 803 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_add,&grib_op_add_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 239:
-
-/* Line 1455 of yacc.c  */
-#line 790 "griby.y"
+  case 245:
+/* Line 1792 of yacc.c  */
+#line 804 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_sub,&grib_op_sub_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 241:
-
-/* Line 1455 of yacc.c  */
-#line 794 "griby.y"
+  case 247:
+/* Line 1792 of yacc.c  */
+#line 808 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_gt,&grib_op_gt_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 242:
-
-/* Line 1455 of yacc.c  */
-#line 796 "griby.y"
+  case 248:
+/* Line 1792 of yacc.c  */
+#line 810 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_eq,&grib_op_eq_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 243:
-
-/* Line 1455 of yacc.c  */
-#line 797 "griby.y"
+  case 249:
+/* Line 1792 of yacc.c  */
+#line 811 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_lt,&grib_op_lt_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 244:
-
-/* Line 1455 of yacc.c  */
-#line 798 "griby.y"
+  case 250:
+/* Line 1792 of yacc.c  */
+#line 812 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_ge,&grib_op_ge_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 245:
-
-/* Line 1455 of yacc.c  */
-#line 799 "griby.y"
+  case 251:
+/* Line 1792 of yacc.c  */
+#line 813 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_le,&grib_op_le_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 246:
-
-/* Line 1455 of yacc.c  */
-#line 800 "griby.y"
+  case 252:
+/* Line 1792 of yacc.c  */
+#line 814 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_ne,&grib_op_ne_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 247:
-
-/* Line 1455 of yacc.c  */
-#line 801 "griby.y"
+  case 253:
+/* Line 1792 of yacc.c  */
+#line 815 "griby.y"
     { (grib_yyval.exp) = new_string_compare_expression(grib_parser_context,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 248:
-
-/* Line 1455 of yacc.c  */
-#line 806 "griby.y"
+  case 254:
+/* Line 1792 of yacc.c  */
+#line 820 "griby.y"
     { (grib_yyval.exp) = new_unop_expression(grib_parser_context,&grib_op_not,NULL,(grib_yyvsp[(2) - (2)].exp)); }
     break;
 
-  case 250:
-
-/* Line 1455 of yacc.c  */
-#line 810 "griby.y"
+  case 256:
+/* Line 1792 of yacc.c  */
+#line 824 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_and,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 252:
-
-/* Line 1455 of yacc.c  */
-#line 814 "griby.y"
+  case 258:
+/* Line 1792 of yacc.c  */
+#line 828 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_or,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp));}
     break;
 
-  case 257:
-
-/* Line 1455 of yacc.c  */
-#line 828 "griby.y"
+  case 263:
+/* Line 1792 of yacc.c  */
+#line 842 "griby.y"
     { (grib_yyval.rule_entry) = grib_new_rule_entry(grib_parser_context,(grib_yyvsp[(1) - (4)].str),(grib_yyvsp[(3) - (4)].exp)); free((grib_yyvsp[(1) - (4)].str)); }
     break;
 
-  case 258:
-
-/* Line 1455 of yacc.c  */
-#line 829 "griby.y"
+  case 264:
+/* Line 1792 of yacc.c  */
+#line 843 "griby.y"
     { (grib_yyval.rule_entry) = grib_new_rule_entry(grib_parser_context,"skip",0);}
     break;
 
-  case 260:
-
-/* Line 1455 of yacc.c  */
-#line 833 "griby.y"
+  case 266:
+/* Line 1792 of yacc.c  */
+#line 847 "griby.y"
     { (grib_yyvsp[(1) - (2)].rule_entry)->next = (grib_yyvsp[(2) - (2)].rule_entry); (grib_yyval.rule_entry) = (grib_yyvsp[(1) - (2)].rule_entry); }
     break;
 
-  case 261:
-
-/* Line 1455 of yacc.c  */
-#line 836 "griby.y"
+  case 267:
+/* Line 1792 of yacc.c  */
+#line 850 "griby.y"
     { (grib_yyval.rules) = grib_new_rule(grib_parser_context,NULL,(grib_yyvsp[(1) - (1)].rule_entry)); }
     break;
 
-  case 262:
-
-/* Line 1455 of yacc.c  */
-#line 840 "griby.y"
+  case 268:
+/* Line 1792 of yacc.c  */
+#line 854 "griby.y"
     { (grib_yyval.rules) = grib_new_rule(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].rule_entry)); }
     break;
 
-  case 264:
-
-/* Line 1455 of yacc.c  */
-#line 844 "griby.y"
+  case 270:
+/* Line 1792 of yacc.c  */
+#line 858 "griby.y"
     { (grib_yyvsp[(1) - (2)].rules)->next = (grib_yyvsp[(2) - (2)].rules); (grib_yyval.rules) = (grib_yyvsp[(1) - (2)].rules); }
     break;
 
 
-
-/* Line 1455 of yacc.c  */
-#line 4174 "y.tab.c"
+/* Line 1792 of yacc.c  */
+#line 4009 "y.tab.c"
       default: break;
     }
+  /* User semantic actions sometimes alter grib_yychar, and that requires
+     that grib_yytoken be updated with the new translation.  We take the
+     approach of translating immediately before every use of grib_yytoken.
+     One alternative is translating here after every semantic action,
+     but that translation would be missed if the semantic action invokes
+     YYABORT, YYACCEPT, or YYERROR immediately after altering grib_yychar or
+     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
+     incorrect destructor might then be invoked immediately.  In the
+     case of YYERROR or YYBACKUP, subsequent parser actions might lead
+     to an incorrect destructor call or verbose syntax error message
+     before the lookahead is translated.  */
   YY_SYMBOL_PRINT ("-> $$ =", grib_yyr1[grib_yyn], &grib_yyval, &grib_yyloc);
 
   YYPOPSTACK (grib_yylen);
@@ -4200,6 +4046,10 @@ grib_yyreduce:
 | grib_yyerrlab -- here on detecting error |
 `------------------------------------*/
 grib_yyerrlab:
+  /* Make sure we have latest lookahead translation.  See comments at
+     user semantic actions for why this is necessary.  */
+  grib_yytoken = grib_yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (grib_yychar);
+
   /* If not already recovering from an error, report this error.  */
   if (!grib_yyerrstatus)
     {
@@ -4207,37 +4057,36 @@ grib_yyerrlab:
 #if ! YYERROR_VERBOSE
       grib_yyerror (YY_("syntax error"));
 #else
+# define YYSYNTAX_ERROR grib_yysyntax_error (&grib_yymsg_alloc, &grib_yymsg, \
+                                        grib_yyssp, grib_yytoken)
       {
-	YYSIZE_T grib_yysize = grib_yysyntax_error (0, grib_yystate, grib_yychar);
-	if (grib_yymsg_alloc < grib_yysize && grib_yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-	  {
-	    YYSIZE_T grib_yyalloc = 2 * grib_yysize;
-	    if (! (grib_yysize <= grib_yyalloc && grib_yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-	      grib_yyalloc = YYSTACK_ALLOC_MAXIMUM;
-	    if (grib_yymsg != grib_yymsgbuf)
-	      YYSTACK_FREE (grib_yymsg);
-	    grib_yymsg = (char *) YYSTACK_ALLOC (grib_yyalloc);
-	    if (grib_yymsg)
-	      grib_yymsg_alloc = grib_yyalloc;
-	    else
-	      {
-		grib_yymsg = grib_yymsgbuf;
-		grib_yymsg_alloc = sizeof grib_yymsgbuf;
-	      }
-	  }
-
-	if (0 < grib_yysize && grib_yysize <= grib_yymsg_alloc)
-	  {
-	    (void) grib_yysyntax_error (grib_yymsg, grib_yystate, grib_yychar);
-	    grib_yyerror (grib_yymsg);
-	  }
-	else
-	  {
-	    grib_yyerror (YY_("syntax error"));
-	    if (grib_yysize != 0)
-	      goto grib_yyexhaustedlab;
-	  }
+        char const *grib_yymsgp = YY_("syntax error");
+        int grib_yysyntax_error_status;
+        grib_yysyntax_error_status = YYSYNTAX_ERROR;
+        if (grib_yysyntax_error_status == 0)
+          grib_yymsgp = grib_yymsg;
+        else if (grib_yysyntax_error_status == 1)
+          {
+            if (grib_yymsg != grib_yymsgbuf)
+              YYSTACK_FREE (grib_yymsg);
+            grib_yymsg = (char *) YYSTACK_ALLOC (grib_yymsg_alloc);
+            if (!grib_yymsg)
+              {
+                grib_yymsg = grib_yymsgbuf;
+                grib_yymsg_alloc = sizeof grib_yymsgbuf;
+                grib_yysyntax_error_status = 2;
+              }
+            else
+              {
+                grib_yysyntax_error_status = YYSYNTAX_ERROR;
+                grib_yymsgp = grib_yymsg;
+              }
+          }
+        grib_yyerror (grib_yymsgp);
+        if (grib_yysyntax_error_status == 2)
+          goto grib_yyexhaustedlab;
       }
+# undef YYSYNTAX_ERROR
 #endif
     }
 
@@ -4296,7 +4145,7 @@ grib_yyerrlab1:
   for (;;)
     {
       grib_yyn = grib_yypact[grib_yystate];
-      if (grib_yyn != YYPACT_NINF)
+      if (!grib_yypact_value_is_default (grib_yyn))
 	{
 	  grib_yyn += YYTERROR;
 	  if (0 <= grib_yyn && grib_yyn <= YYLAST && grib_yycheck[grib_yyn] == YYTERROR)
@@ -4319,7 +4168,9 @@ grib_yyerrlab1:
       YY_STACK_PRINT (grib_yyss, grib_yyssp);
     }
 
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++grib_yyvsp = grib_yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
 
   /* Shift the error token.  */
@@ -4343,7 +4194,7 @@ grib_yyabortlab:
   grib_yyresult = 1;
   goto grib_yyreturn;
 
-#if !defined(grib_yyoverflow) || YYERROR_VERBOSE
+#if !defined grib_yyoverflow || YYERROR_VERBOSE
 /*-------------------------------------------------.
 | grib_yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -4355,8 +4206,13 @@ grib_yyexhaustedlab:
 
 grib_yyreturn:
   if (grib_yychar != YYEMPTY)
-     grib_yydestruct ("Cleanup: discarding lookahead",
-		 grib_yytoken, &grib_yylval);
+    {
+      /* Make sure we have latest lookahead translation.  See comments at
+         user semantic actions for why this is necessary.  */
+      grib_yytoken = YYTRANSLATE (grib_yychar);
+      grib_yydestruct ("Cleanup: discarding lookahead",
+                  grib_yytoken, &grib_yylval);
+    }
   /* Do not reclaim the symbols of the rule which action triggered
      this YYABORT or YYACCEPT.  */
   YYPOPSTACK (grib_yylen);
@@ -4380,9 +4236,8 @@ grib_yyreturn:
 }
 
 
-
-/* Line 1675 of yacc.c  */
-#line 848 "griby.y"
+/* Line 2055 of yacc.c  */
+#line 862 "griby.y"
 
 
 static grib_concept_value *_reverse_concept(grib_concept_value *r,grib_concept_value *s)
@@ -4420,4 +4275,3 @@ static grib_hash_array_value* reverse_hash_array(grib_hash_array_value* r)
 
 
 
-
diff --git a/src/grib_yacc.h b/src/grib_yacc.h
index 38c57b6..f042272 100644
--- a/src/grib_yacc.h
+++ b/src/grib_yacc.h
@@ -1,10 +1,8 @@
+/* A Bison parser, made by GNU Bison 2.7.  */
 
-/* A Bison parser, made by GNU Bison 2.4.1.  */
-
-/* Skeleton interface for Bison's Yacc-like parsers in C
+/* Bison interface for Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
    
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -32,6 +30,15 @@
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
+#ifndef YY_YY_Y_TAB_H_INCLUDED
+# define YY_YY_Y_TAB_H_INCLUDED
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int grib_yydebug;
+#endif
 
 /* Tokens.  */
 #ifndef YYTOKENTYPE
@@ -293,18 +300,17 @@
 
 
 
-
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
 {
-
-/* Line 1676 of yacc.c  */
+/* Line 2058 of yacc.c  */
 #line 37 "griby.y"
 
     char                    *str;
     long                    lval;
     double                  dval;
     grib_darray             *dvalue;
+    grib_sarray             *svalue;
     grib_iarray             *ivalue;
     grib_action             *act;
     grib_arguments          *explist;
@@ -317,9 +323,8 @@ typedef union YYSTYPE
   grib_rule_entry         *rule_entry;
 
 
-
-/* Line 1676 of yacc.c  */
-#line 323 "y.tab.h"
+/* Line 2058 of yacc.c  */
+#line 328 "y.tab.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define grib_yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -328,4 +333,18 @@ typedef union YYSTYPE
 
 extern YYSTYPE grib_yylval;
 
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int grib_yyparse (void *YYPARSE_PARAM);
+#else
+int grib_yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int grib_yyparse (void);
+#else
+int grib_yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
 
+#endif /* !YY_YY_Y_TAB_H_INCLUDED  */
diff --git a/src/gribl.l b/src/gribl.l
index 39de0e8..ee873e3 100644
--- a/src/gribl.l
+++ b/src/gribl.l
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -57,10 +57,13 @@ DIGIT     [0-9]
 NSIGNED   {SIGN}?{DIGIT}+
 NUMB      {DIGIT}+
 EXP       {E}{NSIGNED}
-IDENT     [_A-Za-z]+[_0-9A-Za-z]*
 FLOAT1    {NSIGNED}+"."{DIGIT}*{EXP}?
 FLOAT2    {NSIGNED}*"."{DIGIT}+{EXP}?
 FLOAT3    {NSIGNED}+{EXP}?
+IDENT1     [_A-Za-z]+[_0-9A-Za-z]*
+IDENT2     "\/"{IDENT1}"\="({NSIGNED}|{FLOAT1}|{FLOAT2}|{FLOAT3})"\/"{IDENT1}
+IDENT3     "\#"{NUMB}"\#"{IDENT1}
+IDENT     {IDENT1}|{IDENT2}|{IDENT3}
 
 %%
 
diff --git a/src/griby.y b/src/griby.y
index 17d1427..d72411e 100644
--- a/src/griby.y
+++ b/src/griby.y
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -39,6 +39,7 @@ static grib_hash_array_value *_reverse_hash_array(grib_hash_array_value *r,grib_
     long                    lval;
     double                  dval;
     grib_darray             *dvalue;
+    grib_sarray             *svalue;
     grib_iarray             *ivalue;
     grib_action             *act;
     grib_arguments          *explist;
@@ -196,6 +197,7 @@ static grib_hash_array_value *_reverse_hash_array(grib_hash_array_value *r,grib_
 %token <dval>FLOAT
 
 %type <dvalue> dvalues
+%type <svalue> svalues
 %type <ivalue> integer_array
 
 %type <act>  instructions
@@ -275,6 +277,11 @@ dvalues :  FLOAT  { $$=grib_darray_push(0,0,$1);}
     |  dvalues ',' INTEGER { $$=grib_darray_push(0,$1,$3);}
    ;
 
+svalues : STRING { $$=grib_sarray_push(0,0,$1);}
+    |  svalues ',' STRING { $$=grib_sarray_push(0,$1,$3);}
+    ;
+
+
 integer_array :  INTEGER  { $$=grib_iarray_push(0,$1);}
     |  integer_array ',' INTEGER { $$=grib_iarray_push($1,$3);}
    ;
@@ -475,6 +482,8 @@ simple : UNSIGNED '[' INTEGER ']'   IDENT   default flags
 
     | TRANS       IDENT   '=' argument  flags
         { $$ = grib_action_create_variable(grib_parser_context,$2,"transient",0,$4,$4,$5,NULL);   free($2); }
+    | TRANS       IDENT   '=' '{' dvalues '}' 
+        { $$ = grib_action_create_transient_darray(grib_parser_context,$2,$5); free($2); }
 
     | FLOAT       IDENT    default   flags
 	{ $$ = grib_action_create_gen(grib_parser_context,$2,"ieeefloat",4,NULL,$3,$4,NULL,NULL);   free($2);  }
@@ -491,6 +500,9 @@ simple : UNSIGNED '[' INTEGER ']'   IDENT   default flags
     | SECTION_LENGTH  '[' INTEGER ']'   IDENT
 	{ $$ = grib_action_create_gen(grib_parser_context,$5,"section_length",$3,NULL,NULL,0,NULL,NULL);free($5);  }
 
+    | SECTION_LENGTH  '[' INTEGER ']'   IDENT default
+	{ $$ = grib_action_create_gen(grib_parser_context,$5,"section_length",$3,NULL,$6,0,NULL,NULL);free($5);  }
+
    | G1_MESSAGE_LENGTH  '[' INTEGER ']'   IDENT '(' argument_list ')'
    { $$ = grib_action_create_gen(grib_parser_context,$5,"g1_message_length",$3,$7,NULL,0,NULL,NULL);free($5);  }
 
@@ -598,6 +610,7 @@ simple : UNSIGNED '[' INTEGER ']'   IDENT   default flags
   | SET IDENT '=' MISSING { $$ = grib_action_create_set_missing(grib_parser_context,$2); free($2); }
   | SET IDENT '=' expression { $$ = grib_action_create_set(grib_parser_context,$2,$4,0); free($2); }
   | SET IDENT '=' '{' dvalues '}' { $$ = grib_action_create_set_darray(grib_parser_context,$2,$5); free($2); }
+  | SET IDENT '=' '{' svalues '}' { $$ = grib_action_create_set_sarray(grib_parser_context,$2,$5); free($2); }
 
   | SET_NOFAIL IDENT '=' expression { $$ = grib_action_create_set(grib_parser_context,$2,$4,1); free($2); }
 
@@ -739,7 +752,8 @@ concept_conditions : concept_condition
                 | concept_condition concept_conditions { $1->next = $2; $$ = $1; }
         ;
 
-concept_condition   : IDENT '=' expression ';' { $$ = grib_concept_condition_new(grib_parser_context,$1,$3); free($1); }
+concept_condition   : IDENT '=' expression ';' { $$ = grib_concept_condition_new(grib_parser_context,$1,$3,0); free($1); }
+         | IDENT '=' '[' integer_array ']' ';' { $$ = grib_concept_condition_new(grib_parser_context,$1,0,$4); free($1); }
         ;
 
 
diff --git a/src/hash.c b/src/hash.c
old mode 100755
new mode 100644
index bc94d38..0f1cb01
--- a/src/hash.c
+++ b/src/hash.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/jgribapi_GribFile.h b/src/jgribapi_GribFile.h
index b4fd594..1479a0d 100644
--- a/src/jgribapi_GribFile.h
+++ b/src/jgribapi_GribFile.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/jgribapi_GribHandle.h b/src/jgribapi_GribHandle.h
index f0d19cf..81044e3 100644
--- a/src/jgribapi_GribHandle.h
+++ b/src/jgribapi_GribHandle.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/jgribapi_GribIterator.h b/src/jgribapi_GribIterator.h
index 0a940cd..76df976 100644
--- a/src/jgribapi_GribIterator.h
+++ b/src/jgribapi_GribIterator.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/make_class.pl b/src/make_class.pl
index b2b37e9..4d08341 100755
--- a/src/make_class.pl
+++ b/src/make_class.pl
@@ -249,6 +249,9 @@ EOF
         print OUT $_;
     }
 
+  # disabled for the moment
+  # the problem with this is that for pointers we need proper clone, not an assignement
+  if (0) {
 	foreach my $proc ( grep { /clone/ } @procs ) { 
 		my $done=0;
 		print OUT "static grib_$class* clone(grib_$class* s) {\n";
@@ -279,6 +282,7 @@ EOF
 		}
 		print OUT "\treturn (grib_$class*)c;\n}\n\n"
 	}
+  }
 
 	delete $delegates{init};
 	delete $delegates{post_init};
diff --git a/src/makeyacc b/src/makeyacc
new file mode 100755
index 0000000..e04fdd8
--- /dev/null
+++ b/src/makeyacc
@@ -0,0 +1,15 @@
+set -x
+export LEX=flex
+export LEX_OUT=gribl.c
+$LEX -o gribl.c gribl.l
+sed 's/yy/grib_yy/g' < $LEX_OUT | sed 's/static void grib_yyunput/void grib_yyunput/' > grib_lex1.c
+sed 's/fgetc/getc/g' < grib_lex1.c > grib_lex.c
+rm -f grib_lex1.c
+rm -f $LEX_OUT
+
+yacc -d griby.y
+sed 's/yy/grib_yy/g' < y.tab.c > grib_yacc1.c
+sed 's/fgetc/getc/g' < grib_yacc1.c > grib_yacc.c
+rm -f grib_yacc1.c
+sed 's/yy/grib_yy/g' < y.tab.h > grib_yacc.h
+rm -f y.tab.c y.tab.h
diff --git a/src/md5.c b/src/md5.c
index c66db60..f56b8e2 100644
--- a/src/md5.c
+++ b/src/md5.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -14,6 +14,11 @@
 #include <string.h>
 #include <assert.h>
 
+/* On CRAY, disable all automatic optimisations for this module */
+#if _CRAYC
+    #pragma _CRI noopt
+#endif
+
 static unsigned long r[] = {
     7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,
     5,  9, 14, 20, 5,  9, 14, 20, 5,  9, 14, 20, 5,  9, 14, 20,
diff --git a/src/md5.h b/src/md5.h
index 5b9bb07..5aeff05 100644
--- a/src/md5.h
+++ b/src/md5.h
@@ -2,7 +2,7 @@
 #define md5_H
 
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/src/minmax_val.c b/src/minmax_val.c
index 96114c6..cf15d21 100644
--- a/src/minmax_val.c
+++ b/src/minmax_val.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tests/.deps/bpv_limit.Po b/tests/.deps/bpv_limit.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tests/.deps/bpv_limit.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tests/.deps/ccsds_perf.Po b/tests/.deps/ccsds_perf.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tests/.deps/ccsds_perf.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tests/.deps/double_cmp.Po b/tests/.deps/double_cmp.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tests/.deps/double_cmp.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tests/.deps/gauss_sub.Po b/tests/.deps/gauss_sub.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tests/.deps/gauss_sub.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tests/.deps/gribex_perf.Po b/tests/.deps/gribex_perf.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tests/.deps/gribex_perf.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tests/.deps/index.Po b/tests/.deps/index.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tests/.deps/index.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tests/.deps/jpeg_perf.Po b/tests/.deps/jpeg_perf.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tests/.deps/jpeg_perf.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tests/.deps/julian.Po b/tests/.deps/julian.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tests/.deps/julian.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tests/.deps/laplacian.Po b/tests/.deps/laplacian.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tests/.deps/laplacian.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tests/.deps/multi_from_message.Po b/tests/.deps/multi_from_message.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tests/.deps/multi_from_message.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tests/.deps/pack_unpack.Po b/tests/.deps/pack_unpack.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tests/.deps/pack_unpack.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tests/.deps/packing.Po b/tests/.deps/packing.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tests/.deps/packing.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tests/.deps/packing_check.Po b/tests/.deps/packing_check.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tests/.deps/packing_check.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tests/.deps/png_perf.Po b/tests/.deps/png_perf.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tests/.deps/png_perf.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tests/.deps/read_any.Po b/tests/.deps/read_any.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tests/.deps/read_any.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tests/.deps/read_index.Po b/tests/.deps/read_index.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tests/.deps/read_index.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tests/.deps/so_perf.Po b/tests/.deps/so_perf.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tests/.deps/so_perf.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tests/.deps/unit_tests.Po b/tests/.deps/unit_tests.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tests/.deps/unit_tests.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 7baf1ac..e36b6b8 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -3,6 +3,10 @@
 # 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}/utils.sh   ${CMAKE_CURRENT_BINARY_DIR} )
+execute_process( COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/number_compare.pl ${CMAKE_CURRENT_BINARY_DIR} )
+
 # Build the executables used by test scripts
 ################################################
 list( APPEND test_bins
@@ -13,6 +17,7 @@ list( APPEND test_bins
       read_index
       unit_tests
       gauss_sub
+      grib_util_set_spec
 )
 
 foreach( tool ${test_bins} )
@@ -30,6 +35,8 @@ list( APPEND tests1
     definitions
     calendar
     unit_tests
+    md5
+    uerra
 )
 list( APPEND tests2
     bufr_dump
@@ -42,7 +49,11 @@ list( APPEND tests2
     bufr_filter
     bufr_json
     bufr_ls
+    bufr_change_edition
+    ecc-197
     gts_ls
+    metar_ls
+    metar_dump
     bufr_set
     ieee
     grib1to2
@@ -53,6 +64,8 @@ list( APPEND tests2
     multi
     budg
     gridType
+    octahedral
+    global
     concept
     decimalPrecision
     bitsPerValue
@@ -77,60 +90,63 @@ list( APPEND tests2
     read_any
     padding
     debug
+    grib_util_set_spec
+	neg_fctime
 )
 
 # These tests do not require any data downloads
 foreach( test ${tests1} )
-    ecbuild_add_test( TARGET t_${test}
-                  TYPE SCRIPT
-                  COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/${test}.sh
-                  RESOURCES include.sh number_compare.pl
+    ecbuild_add_test( TARGET eccodes_t_${test}
+                      TYPE SCRIPT
+                      COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/${test}.sh
     )
 endforeach()
+ecbuild_add_test( TARGET eccodes_t_check_gaussian_grids
+                  TYPE SCRIPT
+                  CONDITION  ECCODES_INSTALL_EXTRA_TOOLS
+                  COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/check_gaussian_grids.sh
+)
+
 
 # Note: making the test dependent on the grib files (with DEPENDS)
 #       means they will be downloaded at "make" time
 #       rather than when you do "make test". Use TEST_DEPENDS instead
 foreach( test ${tests2} )
-    ecbuild_add_test( TARGET t_${test}
+    ecbuild_add_test( TARGET eccodes_t_${test}
                   TYPE SCRIPT
                   COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/${test}.sh
-                  RESOURCES include.sh number_compare.pl
-                  TEST_DEPENDS get_gribs get_tigge_gribs get_bufrs get_gts
+                  RESOURCES asca_139.t1.ref
+                  TEST_DEPENDS eccodes_get_gribs eccodes_get_tigge_gribs eccodes_get_bufrs eccodes_get_metars eccodes_get_gts
     )
 endforeach()
 
 ###########################################
 # Note: the reference file is in the tests dir not data dir!
-ecbuild_add_test( TARGET t_lamb_az_eq_area
+ecbuild_add_test( TARGET eccodes_t_lamb_az_eq_area
                   TYPE SCRIPT
                   COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lamb_az_eq_area.sh
-                  RESOURCES include.sh lamb_az_eq_area.ref
-                  TEST_DEPENDS get_gribs
+                  RESOURCES lamb_az_eq_area.ref
+                  TEST_DEPENDS eccodes_get_gribs
 )
 
 # These ones are conditional
-ecbuild_add_test( TARGET t_grib_to_netcdf
+ecbuild_add_test( TARGET eccodes_t_grib_to_netcdf
                   TYPE SCRIPT
                   CONDITION HAVE_NETCDF
                   COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/grib_to_netcdf.sh
-                  RESOURCES include.sh
-                  TEST_DEPENDS get_gribs
+                  TEST_DEPENDS eccodes_get_gribs
 )
 
-ecbuild_add_test( TARGET t_jpeg
+ecbuild_add_test( TARGET eccodes_t_jpeg
                   TYPE SCRIPT
                   CONDITION HAVE_JPEG
                   COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/jpeg.sh
-                  RESOURCES include.sh
-                  TEST_DEPENDS get_gribs
+                  TEST_DEPENDS eccodes_get_gribs
 )
 
-ecbuild_add_test( TARGET t_ccsds
+ecbuild_add_test( TARGET eccodes_t_ccsds
                   TYPE SCRIPT
                   CONDITION HAVE_AEC
                   COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/ccsds.sh
-                  RESOURCES include.sh
-                  TEST_DEPENDS get_gribs
+                  TEST_DEPENDS eccodes_get_gribs
 )
-
diff --git a/tests/ECC-197/element.table b/tests/ECC-197/element.table
new file mode 100644
index 0000000..1a1b840
--- /dev/null
+++ b/tests/ECC-197/element.table
@@ -0,0 +1,1536 @@
+#code|abbreviation|type|name|unit|scale|reference|width|crex_unit|crex_scale|crex_width
+003001|surfaceStationType|table|SURFACE STATION TYPE|Code table|0|0|5|Code table|0|2
+001114|encryptedShipOrMobileLandStationIdentifier|string|ENCRYPTED SHIP OR MOBILE LAND STATION IDENTIFIER|CCITT IA5|0|0|352|Character|0|44
+025185|encryptionMethod|table|ENCRYPTION METHOD|Code table|0|0|8|Code table|0|3
+025186|encryptionKeyVersion|string|ENCRYPTION KEY VERSION|CCITT IA5|0|0|96|Character|0|12
+025188|methodForReducingPressureToSeaLevel|table|Method for reducing pressure to sea level|Code table|0|0|5|Code table|0|12
+003024|psychrometricCoefficient|double|Psychrometric coefficient|K-1|6|0|10|K-1|6|3
+003021|hygrometerHeating|table|Hygrometer heating|Code table|0|0|2|Code table|0|1
+003005|horizontalWidthOfScreenOrShieldX|double|HORIZONTAL WIDTH OF SCREEN OR SHIELD (X)|m|3|0|16|m|3|5
+003006|horizontalDepthOfScreenOrShieldY|double|HORIZONTAL DEPTH OF SCREEN OR SHIELD (Y)|m|3|0|16|m|3|5
+003007|verticalHeightOfScreenOrShieldZ|double|VERTICAL HEIGHT OF SCREEN OR SHIELD (Z)|m|3|0|16|m|3|5
+003022|instrumentOwner|table|INSTRUMENT OWNER|Code table|0|0|3|Code table|0|1
+003003|thermometerHygrometerHousing|table|Thermometer hygrometer housing|Code table|0|0|4|Code table|0|2
+003004|typeOfScreenShelterRadiationShield|table|Type of screen  shelter  radiation shield|Code table|0|0|4|Code table|0|2
+003023|configurationOfLouversForThermometerHygrometerScreen|table|Configuration of louvers for thermometer hygrometer screen|Code table|0|0|3|Code table|0|1
+003020|materialForThermometerHygrometer housing|table|Material for thermometer hygrometer housing|Code table|0|0|3|Code table|0|1
+003008|artificiallyVentilatedScreenOrShield|table|Artificially ventilated screen or shield|Code table|0|0|3|Code table|0|1
+003009|amountOfForcedVentilationAtTimeOfReading|double|Amount of forced ventilation at time of reading|m s-1|1|0|9|m s-1|1|3
+010038|maximumHeightOfDeckCargoAboveSummerLoadLine|long|Maximum height of deck cargo above summer load line|m|0|0|6|m|0|2
+010039|departureOfReferenceLevelFromActualSeaLevel|long|Departure of reference level from actual sea level|m|0|-32|6|m|0|3
+011007|relativeWindDirection|long|Relative wind direction|deg|0|0|9|deg|0|3  
+011008|relativeWindSpeed|double|Relative wind speed|m s-1|1|0|12|m s-1|1|4
+041001|pCO2|double|pCO2|Pa|3|0|18|Pa|3|6
+041002|fluorescence|double|Fluorescence|kg l-1|12|0|16|kg l-1|12|5
+041003|dissolvedNitrates|double|Dissolved nitrates|PPPP|3|0|17|PPPP|3|5
+041005|turbidity|double|Turbidity|NTU|2|0|12|NTU|2|4
+015028|moleFractionOfAtmosphericConstituentPollutantInDryAir|double|Mole fraction of atmospheric constituent pollutant in dry air|PPP|5|0|16|PPP|5|5
+000001|tableAEntry|string|TABLE A: ENTRY|CCITT IA5|0|0|24|Character|0|3
+000002|tableALine1|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 1|CCITT IA5|0|0|256|Character|0|32
+000003|tableALine2|string|TABLE A: DATA CATEGORY DESCRIPTION, LINE 2|CCITT IA5|0|0|256|Character|0|32
+000004|masterTable|string|BUFR/CREX MASTER TABLE|CCITT IA5|0|0|16|Character|0|2
+000005|editionNumber|string|BUFR/CREX EDITION NUMBER|CCITT IA5|0|0|24|Character|0|3
+000006|bufrMasterTableVersionNumber|string|BUFR MASTER TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000007|crexMasterTableVersionNumber|string|CREX MASTER TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000008|bufrLocalTableVersionNumber|string|BUFR LOCAL TABLE VERSION NUMBER|CCITT IA5|0|0|16|Character|0|2
+000010|fDescriptorToBeAddedOrDefined|string|F DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|8|Character|0|1
+000011|xDescriptorToBeAddedOrDefined|string|X DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|16|Character|0|2
+000012|yDescriptorToBeAddedOrDefined|string|Y DESCRIPTOR TO BE ADDED OR DEFINED|CCITT IA5|0|0|24|Character|0|3
+000013|elementNameLine1|string|ELEMENT NAME, LINE 1|CCITT IA5|0|0|256|Character|0|32
+000014|elementNameLine2|string|ELEMENT NAME, LINE 2|CCITT IA5|0|0|256|Character|0|32
+000015|unitsName|string|UNITS NAME|CCITT IA5|0|0|192|Character|0|24
+000016|unitsScaleSign|string|UNITS SCALE SIGN|CCITT IA5|0|0|8|Character|0|1
+000017|unitsScale|string|UNITS SCALE|CCITT IA5|0|0|24|Character|0|3
+000018|unitsReferenceSign|string|UNITS REFERENCE SIGN|CCITT IA5|0|0|8|Character|0|1
+000019|unitsReferenceValue|string|UNITS REFERENCE VALUE|CCITT IA5|0|0|80|Character|0|10
+000020|elementDataWidth|string|ELEMENT DATA WIDTH|CCITT IA5|0|0|24|Character|0|3
+000024|codeFigure|string|CODE FIGURE|CCITT IA5|0|0|64|Character|0|8
+000025|codeFigureMeaning|string|CODE FIGURE MEANING|CCITT IA5|0|0|496|Character|0|62
+000026|bitNumber|string|BIT NUMBER|CCITT IA5|0|0|48|Character|0|6
+000027|bitNumberMeaning|string|BIT NUMBER MEANING|CCITT IA5|0|0|496|Character|0|62
+000030|descriptorDefiningSequence|string|DESCRIPTOR DEFINING SEQUENCE|CCITT IA5|0|0|48|Character|0|6
+001001|blockNumber|long|WMO BLOCK NUMBER|Numeric|0|0|7|Numeric|0|2
+001002|stationNumber|long|WMO STATION NUMBER|Numeric|0|0|10|Numeric|0|3
+001003|regionNumber|table|WMO REGION NUMBER/GEOGRAPHICAL AREA|CODE TABLE|0|0|3|CODE TABLE|0|1
+001004|wmoRegionSubArea|long|WMO REGION SUB-AREA|Numeric|0|0|3|Numeric|0|1
+001005|buoyOrPlatformIdentifier|long|BUOY/PLATFORM IDENTIFIER|Numeric|0|0|17|Numeric|0|5
+001006|aircraftFlightNumber|string|AIRCRAFT FLIGHT NUMBER|CCITT IA5|0|0|64|Character|0|8
+001007|satelliteIdentifier|table|SATELLITE IDENTIFIER|CODE TABLE|0|0|10|CODE TABLE|0|4
+001008|aircraftRegistrationNumberOrOtherIdentification|string|AIRCRAFT REGISTRATION NUMBER OR OTHER IDENTIFICATION|CCITT IA5|0|0|64|Character|0|8
+001009|commercialAircraftType|string|TYPE OF COMMERCIAL AIRCRAFT|CCITT IA5|0|0|64|Character|0|8
+001010|stationaryBuoyPlatformIdentifierEGCManBuoys|string|STATIONARY BUOY PLATFORM IDENTIFIER; E.G. C-MAN BUOYS|CCITT IA5|0|0|64|Character|0|8
+001011|shipOrMobileLandStationIdentifier|string|SHIP OR MOBILE LAND STATION IDENTIFIER|CCITT IA5|0|0|72|Character|0|9
+001012|directionOfMotionOfMovingObservingPlatform|long|DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM|deg|0|0|9|deg|0|3
+001013|movingObservingPlatformSpeed|long|SPEED OF MOTION OF MOVING OBSERVING PLATFORM|m/s|0|0|10|m/s|0|3
+001014|platformDriftSpeed|double|PLATFORM DRIFT SPEED (HIGH PRECISION)|m/s|2|0|10|m/s|2|4
+001015|stationOrSiteName|string|STATION OR SITE NAME|CCITT IA5|0|0|160|Character|0|20
+001018|shortStationName|string|SHORT STATION OR SITE NAME|CCITT IA5|0|0|40|Character|0|5
+001019|longStationName|string|LONG STATION OR SITE NAME|CCITT IA5|0|0|256|Character|0|32
+001020|wmoRegionSubArea|long|WMO REGION SUB-AREA|Numeric|0|0|4|Numeric|0|2
+001021|synopticFeatureIdentifier|long|SYNOPTIC FEATURE IDENTIFIER|Numeric|0|0|14|Numeric|0|4
+001022|featureName|string|NAME OF FEATURE|CCITT IA5|0|0|224|Character|0|28
+001023|observationSequenceNumber|long|OBSERVATION SEQUENCE NUMBER|Numeric|0|0|9|Numeric|0|3
+001024|windSpeedSource|table|WIND SPEED SOURCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+001025|stormIdentifier|string|STORM IDENTIFIER|CCITT IA5|0|0|24|Character|0|3
+001026|stormName|string|WMO STORM NAME|CCITT IA5|0|0|64|Character|0|8
+001027|longStormName|string|WMO LONG STORM NAME|CCITT IA5|0|0|80|Character|0|10
+001028|aerosolOpticalDepthSource|table|AEROSOL OPTICAL DEPTH (AOD) SOURCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+001029|ssiSource|table|SSI SOURCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+001030|numericalModelIdentifier|string|NUMERICAL MODEL IDENTIFIER|CCITT IA5|0|0|128|Character|0|16
+001031|centre|table|IDENTIFICATION OF ORIGINATING/GENERATING CENTRE|CODE TABLE|0|0|16|CODE TABLE|0|5
+001032|generatingApplication|table|GENERATING APPLICATION|CODE TABLE defined by originating/generating centre|0|0|8|CODE TABLE|0|3
+001033|centre|table|IDENTIFICATION OF ORIGINATING/GENERATING CENTRE|Common CODE TABLE C-1|0|0|8|Common CODE TABLE C-1|0|3
+001034|subCentre|table|IDENTIFICATION OF ORIGINATING/GENERATING SUB-CENTRE|Common CODE TABLE C-12|0|0|8|Common CODE TABLE C-12|0|3
+001035|centre|table|ORIGINATING CENTRE|Common CODE TABLE C-11|0|0|16|Common CODE TABLE C-11|0|5
+001036|agencyInChargeOfOperatingObservingPlatform|table|AGENCY IN CHARGE OF OPERATING THE OBSERVING PLATFORM|CODE TABLE|0|0|20|CODE TABLE|0|7
+001037|sigmetSequenceIdentifier|string|SIGMET SEQUENCE IDENTIFIER|CCITT IA5|0|0|24|Character|0|3
+001038|sourceOfSeaIceFraction|table|SOURCE OF SEA ICE FRACTION|CODE TABLE|0|0|5|CODE TABLE|0|2
+001039|graphicalAreaForecastSequenceIdentifier|string|GRAPHICAL AREA FORECAST (GFA) SEQUENCE IDENTIFIER|CCITT IA5|0|0|40|Character|0|5
+001040|processingCentreIdCode|string|PROCESSING CENTRE ID CODE|CCITT IA5|0|0|48|Character|0|6
+001041|absolutePlatformVelocityFirstComponent|double|ABSOLUTE PLATFORM VELOCITY - FIRST COMPONENT|m/s|5|-1073741824|31|m/s|5|10
+001042|absolutePlatformVelocitySecondComponent|double|ABSOLUTE PLATFORM VELOCITY - SECOND COMPONENT|m/s|5|-1073741824|31|m/s|5|10
+001043|absolutePlatformVelocityThirdComponent|double|ABSOLUTE PLATFORM VELOCITY - THIRD COMPONENT|m/s|5|-1073741824|31|m/s|5|10
+001050|platformTransmitterIdNumber|long|PLATFORM TRANSMITTER ID NUMBER|Numeric|0|0|17|Numeric|0|6
+001051|platformTransmitterIdNumber|string|PLATFORM TRANSMITTER ID NUMBER|CCITT IA5|0|0|96|Character|0|12
+001052|platformTransmitterId|table|PLATFORM TRANSMITTER ID|CODE TABLE|0|0|3|CODE TABLE|0|1
+001053|tsunameterReportSequenceNumber|long|TSUNAMETER REPORT SEQUENCE NUMBER TRIGGERED BY A TSUNAMI EVENT|Numeric|0|0|7|Numeric|0|2
+001060|aircraftReportingPointBeaconIdentifier|string|AIRCRAFT REPORTING POINT (BEACON IDENTIFIER)|CCITT IA5|0|0|64|Character|0|8
+001062|shortIcaoLocationIndicator|string|SHORT ICAO LOCATION INDICATOR|CCITT IA5|0|0|32|Character|0|4
+001063|icaoLocationIndicator|string|ICAO LOCATION INDICATOR|CCITT IA5|0|0|64|Character|0|8
+001064|runwayDesignator|string|RUNWAY DESIGNATOR|CCITT IA5|0|0|32|Character|0|4
+001065|icaoRegionIdentifier|string|ICAO REGION IDENTIFIER|CCITT IA5|0|0|256|Character|0|32
+001075|tideStationIdentification|string|TIDE STATION IDENTIFICATION|CCITT IA5|0|0|40|Character|0|5
+001079|uniqueIdentifierForProfile|string|UNIQUE IDENTIFIER FOR THE PROFILE|CCITT IA5|0|0|64|Character|0|8
+001080|shipLineNumberAccordingToSoop|string|SHIP LINE NUMBER ACCORDING TO SOOP|CCITT IA5|0|0|32|Character|0|4
+001081|radiosondeSerialNumber|string|RADIOSONDE SERIAL NUMBER|CCITT IA5|0|0|160|Character|0|20
+001082|radiosondeAscensionNumber|long|RADIOSONDE ASCENSION NUMBER|Numeric|0|0|14|Numeric|0|4
+001083|radiosondeReleaseNumber|long|RADIOSONDE RELEASE NUMBER|Numeric|0|0|3|Numeric|0|1
+001085|observingPlatformManufacturerModel|string|OBSERVING PLATFORM MANUFACTURER'S MODEL|CCITT IA5|0|0|160|Character|0|20
+001086|observingPlatformManufacturerSerialNumber|string|OBSERVING PLATFORM MANUFACTURER'S SERIAL NUMBER|CCITT IA5|0|0|256|Character|0|32
+001087|marineObservingPlatformIdentifier|long|WMO MARINE OBSERVING PLATFORM EXTENDED IDENTIFIER|Numeric|0|0|23|Numeric|0|7
+001090|techniqueForMakingUpInitialPerturbations|table|TECHNIQUE FOR MAKING UP INITIAL PERTURBATIONS|CODE TABLE|0|0|8|CODE TABLE|0|3
+001091|ensembleMemberNumber|long|ENSEMBLE MEMBER NUMBER|Numeric|0|0|10|Numeric|0|4
+001092|ensembleForecastType|table|TYPE OF ENSEMBLE FORECAST|CODE TABLE|0|0|8|CODE TABLE|0|3
+001093|balloonLotNumber|string|BALLOON LOT NUMBER|CCITT IA5|0|0|96|Character|0|12
+001094|wbanNumber|long|WBAN NUMBER|Numeric|0|0|17|Numeric|0|5
+001095|observerIdentification|string|OBSERVER IDENTIFICATION|CCITT IA5|0|0|32|Character|0|4
+001096|stationAcquisition|string|STATION ACQUISITION|CCITT IA5|0|0|160|Character|0|20
+001099|uniqueProductDefinition|string|UNIQUE PRODUCT DEFINITION|CCITT IA5|0|0|248|Character|0|31
+001101|stateIdentifier|table|STATE IDENTIFIER|CODE TABLE|0|0|10|CODE TABLE|0|3
+001102|stationNumber|long|NATIONAL STATION NUMBER|Numeric|0|0|30|Numeric|0|9
+001103|imoNumber|long|IMO NUMBER. UNIQUE LLOYD'S REGISTER|Numeric|0|0|24|Numeric|0|7
+001110|aircraftTailNumber|string|AIRCRAFT TAIL NUMBER|CCITT IA5|0|0|48|Character|0|6
+001111|originationAirport|string|ORIGINATION AIRPORT|CCITT IA5|0|0|24|Character|0|3
+001112|destinationAirport|string|DESTINATION AIRPORT|CCITT IA5|0|0|24|Character|0|3
+001113|templateVersionNumberDefinedByOriginatingCentre|long|TEMPLATE VERSION NUMBER DEFINED BY ORIGINATING CENTRE|Numeric|1|0|9|Numeric|1|3
+001115|identifierOfTheCruiseOrMission|string|IDENTIFIER OF THE CRUISE OR MISSION UNDER WHICH THE DATA WERE COLLECTED|CCITT IA5|0|0|160|Character|0|20
+001124|gridPointIdentifier|long|GRID POINT IDENTIFIER|Numeric|0|0|24|Numeric|0|8
+001144|snapshotIdentifier|long|SNAPSHOT IDENTIFIER|Numeric|0|0|31|Numeric|0|10
+002001|stationType|table|TYPE OF STATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002002|instrumentationForWindMeasurement|flag|TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+002003|measuringEquipmentType|table|TYPE OF MEASURING EQUIPMENT USED|CODE TABLE|0|0|4|CODE TABLE|0|2
+002004|typeOfInstrumentationForEvaporationMeasurement|table|TYPE OF INSTRUMENTATION FOR EVAPORATION MEASUREMENT OR TYPE OF CROP FOR WHICH EVAPOTRANSPIRATION IS REPORTED|CODE TABLE|0|0|4|CODE TABLE|0|2
+002005|temperatureObservationPrecision|double|PRECISION OF TEMPERATURE OBSERVATION|K|2|0|7|K|2|3
+002007|sensorForWaterLevelMeasuringInstrumentType|table|TYPE OF SENSOR FOR WATER LEVEL MEASURING INSTRUMENT|CODE TABLE|0|0|6|CODE TABLE|0|2
+002011|radiosondeType|table|RADIOSONDE TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+002012|radiosondeComputationalMethod|table|RADIOSONDE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002013|solarAndInfraredRadiationCorrection|table|SOLAR AND INFRARED RADIATION CORRECTION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002014|trackingTechniqueOrStatusOfSystem|table|TRACKING TECHNIQUE/STATUS OF SYSTEM USED|CODE TABLE|0|0|7|CODE TABLE|0|3
+002015|radiosondeCompleteness|table|RADIOSONDE COMPLETENESS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002016|radiosondeConfiguration|flag|RADIOSONDE CONFIGURATION|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+002017|correctionAlgorithmsForHumidityMeasurements|table|CORRECTION ALGORITHMS FOR HUMIDITY MEASUREMENTS|CODE TABLE|0|0|5|CODE TABLE|0|2
+002019|satelliteInstruments|table|SATELLITE INSTRUMENTS|CODE TABLE|0|0|11|CODE TABLE|0|4
+002020|satelliteClassification|table|SATELLITE CLASSIFICATION|CODE TABLE|0|0|9|CODE TABLE|0|3
+002021|satelliteInstrumentDataUsedInProcessing|flag|SATELLITE INSTRUMENT DATA USED IN PROCESSING|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+002022|satelliteDataProcessingTechnique|flag|SATELLITE DATA-PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002023|satelliteDerivedWindComputationMethod|table|SATELLITE-DERIVED WIND COMPUTATION METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002024|meanHumidityComputationalMethod|table|INTEGRATED MEAN HUMIDITY COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002025|satelliteChannelsUsedInComputation|flag|SATELLITE CHANNEL(S) USED IN COMPUTATION|FLAG TABLE|0|0|25|FLAG TABLE|0|9
+002026|crossTrackResolution|double|CROSS-TRACK RESOLUTION|m|2|0|12|m|2|4
+002027|alongTrackResolution|double|ALONG-TRACK RESOLUTION|m|2|0|12|m|2|4
+002028|segmentSizeAtNadirInXDirection|long|SEGMENT SIZE AT NADIR IN X-DIRECTION|m|0|0|18|m|0|6
+002029|segmentSizeAtNadirInYDirection|long|SEGMENT SIZE AT NADIR IN Y-DIRECTION|m|0|0|18|m|0|6
+002030|methodOfCurrentMeasurement|table|METHOD OF CURRENT MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002031|durationAndTimeOfCurrentMeasurement|table|DURATION AND TIME OF CURRENT MEASUREMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+002032|indicatorForDigitization|table|INDICATOR FOR DIGITIZATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002033|methodOfSalinityOrDepthMeasurement|table|METHOD OF SALINITY/DEPTH MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002034|drogueType|table|DROGUE TYPE|CODE TABLE|0|0|5|CODE TABLE|0|2
+002035|cableLength|long|CABLE LENGTH|m|0|0|9|m|0|3
+002036|buoyType|table|BUOY TYPE|CODE TABLE|0|0|2|CODE TABLE|0|1
+002037|methodOfTidalObservation|table|METHOD OF TIDAL OBSERVATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+002038|methodOfWaterTemperatureAndOrOrSalinityMeasurement|table|METHOD OF WATER TEMPERATURE AND/OR SALINITY MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002039|methodOfWetBulbTemperatureMeasurement|table|METHOD OF WET-BULB TEMPERATURE MEASUREMENT|CODE TABLE|0|0|3|CODE TABLE|0|1
+002040|methodOfRemovingVelocityAndMotionOfPlatformFromCurrent|table|METHOD OF REMOVING VELOCITY AND MOTION OF PLATFORM FROM CURRENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002041|methodForEstimatingReportsRelatedToSynopticFeatures|table|METHOD FOR ESTIMATING REPORTS RELATED TO SYNOPTIC FEATURES|CODE TABLE|0|0|6|CODE TABLE|0|2
+002042|indicatorForSeaSurfaceCurrentSpeed|table|INDICATOR FOR SEA-SURFACE CURRENT SPEED|CODE TABLE|0|0|2|CODE TABLE|0|1
+002044|indicatorForMethodOfCalculatingSpectralWaveData|table|INDICATOR FOR METHOD OF CALCULATING SPECTRAL WAVE DATA|CODE TABLE|0|0|4|CODE TABLE|0|2
+002045|platformType|table|INDICATOR FOR TYPE OF PLATFORM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002046|waveMeasurementInstrumentation|table|WAVE MEASUREMENT INSTRUMENTATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002047|deepOceanTsunameterType|table|DEEP-OCEAN TSUNAMETER TYPE|CODE TABLE|0|0|7|CODE TABLE|0|2
+002048|satelliteSensorIndicator|table|SATELLITE SENSOR INDICATOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002049|geostationarySatelliteDataProcessingTechnique|flag|GEOSTATIONARY SATELLITE DATA-PROCESSING TECHNIQUE USED|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002050|geostationarySounderSatelliteChannels|flag|GEOSTATIONARY SOUNDER SATELLITE CHANNELS USED|FLAG TABLE|0|0|20|FLAG TABLE|0|7
+002051|indicatorToSpecifyObservingMethodForExtremeTemperatures|table|INDICATOR TO SPECIFY OBSERVING METHOD FOR EXTREME TEMPERATURES|CODE TABLE|0|0|4|CODE TABLE|0|2
+002052|geostationaryImagerSatelliteChannels|flag|GEOSTATIONARY IMAGER SATELLITE CHANNELS USED|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+002053|goesBrightnessTemperatureCharacteristics|table|GOES-I/M BRIGHTNESS TEMPERATURE CHARACTERISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002054|goesSoundingsParameter|table|GOES-I/M SOUNDINGS PARAMETER CHARACTERISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002055|geostationarySoundingsStatisticalParameters|table|GEOSTATIONARY SOUNDINGS STATISTICAL PARAMETERS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002056|geostationarySoundingsAccuracyStatistics|table|GEOSTATIONARY SOUNDINGS ACCURACY STATISTICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002057|originOfFirstGuessInformationForGoesIOrMSoundings|table|ORIGIN OF FIRST-GUESS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002058|validTimesOfFirstGuessInformationForGoesIOrMSoundings|table|VALID TIMES OF FIRST-GUESS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002059|originOfAnalysisInformationForGoesIOrMSoundings|table|ORIGIN OF ANALYSIS INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002060|originOfSurfaceInformationForGoesIOrMSoundings|table|ORIGIN OF SURFACE INFORMATION FOR GOES-I/M SOUNDINGS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002061|aircraftNavigationalSystem|table|AIRCRAFT NAVIGATIONAL SYSTEM|CODE TABLE|0|0|3|CODE TABLE|0|1
+002062|aircraftDataRelaySystemType|table|TYPE OF AIRCRAFT DATA RELAY SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002063|aircraftRollAngle|double|AIRCRAFT ROLL ANGLE|deg|2|-18000|16|deg|2|5
+002064|aircraftRollAngleQuality|table|AIRCRAFT ROLL ANGLE QUALITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+002065|acarsGroundReceivingStation|string|ACARS GROUND-RECEIVING STATION|CCITT IA5|0|0|40|Character|0|5
+002066|radiosondeGroundReceivingSystem|table|RADIOSONDE GROUND RECEIVING SYSTEM|CODE TABLE|0|0|6|CODE TABLE|0|2
+002067|radiosondeOperatingFrequency|long|RADIOSONDE OPERATING FREQUENCY|Hz|-5|0|15|Hz|-5|5
+002070|originalSpecificationOfLatitudeOrLongitude|table|ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002071|spectrographicWavelength|double|SPECTROGRAPHIC WAVELENGTH|m|13|0|30|m|13|10
+002072|spectrographicWidth|double|SPECTROGRAPHIC WIDTH|m|13|0|30|m|13|10
+002080|balloonManufacturer|table|BALLOON MANUFACTURER|CODE TABLE|0|0|6|CODE TABLE|0|2
+002081|balloonType|table|TYPE OF BALLOON|CODE TABLE|0|0|5|CODE TABLE|0|2
+002082|weightOfBalloon|double|WEIGHT OF BALLOON|kg|3|0|12|kg|3|4
+002083|balloonShelterType|table|TYPE OF BALLOON SHELTER|CODE TABLE|0|0|4|CODE TABLE|0|2
+002084|typeOfGasUsedInBalloon|table|TYPE OF GAS USED IN BALLOON|CODE TABLE|0|0|4|CODE TABLE|0|2
+002085|amountOfGasUsedInBalloon|double|AMOUNT OF GAS USED IN BALLOON|kg|3|0|13|kg|3|4
+002086|balloonFlightTrainLength|double|BALLOON FLIGHT TRAIN LENGTH|m|1|0|10|m|1|4
+002091|entrySensor4Or20Ma|double|ENTRY SENSOR 4/20 MA|A|4|0|10|A|4|3
+002095|pressureSensorType|table|TYPE OF PRESSURE SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002096|temperatureSensorType|table|TYPE OF TEMPERATURE SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002097|humiditySensorType|table|TYPE OF HUMIDITY SENSOR|CODE TABLE|0|0|5|CODE TABLE|0|2
+002099|polarization|table|POLARIZATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+002100|radarConstant|double|RADAR CONSTANT|dB|1|0|12|dB|1|4
+002101|antennaType|table|TYPE OF ANTENNA|CODE TABLE|0|0|4|CODE TABLE|0|2
+002102|antennaHeightAboveTowerBase|long|ANTENNA HEIGHT ABOVE TOWER BASE|m|0|0|8|m|0|3
+002103|radome|flag|RADOME|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+002104|antennaPolarization|table|ANTENNA POLARIZATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002105|maximumAntennaGain|long|MAXIMUM ANTENNA GAIN|dB|0|0|6|dB|0|2
+002106|3DbBeamwidth|double|3-DB BEAMWIDTH|deg|1|0|6|deg|1|2
+002107|sidelobeSuppression|long|SIDELOBE SUPPRESSION|dB|0|0|6|dB|0|2
+002108|crosspolDiscriminationOnAxis|long|CROSSPOL DISCRIMINATION (ON AXIS)|dB|0|0|6|dB|0|2
+002109|antennaSpeedAzimuth|double|ANTENNA SPEED (AZIMUTH)|deg/s|2|0|12|deg/s|2|4
+002110|antennaSpeedElevation|double|ANTENNA SPEED (ELEVATION)|deg/s|2|0|12|deg/s|2|4
+002111|radarIncidenceAngle|double|RADAR INCIDENCE ANGLE|deg|1|0|10|deg|1|4
+002112|radarLookAngle|double|RADAR LOOK ANGLE|deg|1|0|12|deg|1|4
+002113|numberOfAzimuthLooks|long|NUMBER OF AZIMUTH LOOKS|Numeric|0|0|4|Numeric|0|2
+002114|antennaEffectiveSurfaceArea|long|ANTENNA EFFECTIVE SURFACE AREA|m2|0|0|15|m2|0|5
+002115|surfaceObservingEquipmentType|table|TYPE OF SURFACE OBSERVING EQUIPMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+002116|percentageOf320MhzBandProcessed|long|PERCENTAGE OF 320 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002117|percentageOf80MhzBandProcessed|long|PERCENTAGE OF 80 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002118|percentageOf20MhzBandProcessed|long|PERCENTAGE OF 20 MHZ BAND PROCESSED|%|0|0|7|%|0|3
+002119|ra2InstrumentOperations|table|RA-2 INSTRUMENT OPERATIONS|CODE TABLE|0|0|3|CODE TABLE|0|1
+002120|oceanWaveFrequency|double|OCEAN WAVE FREQUENCY|Hz|3|0|10|Hz|3|4
+002121|meanFrequency|long|MEAN FREQUENCY|Hz|-8|0|7|Hz|-8|3
+002122|frequencyAgilityRange|long|FREQUENCY AGILITY RANGE|Hz|-6|-128|8|Hz|-6|3
+002123|peakPower|long|PEAK POWER|W|-4|0|7|W|-4|3
+002124|averagePower|long|AVERAGE POWER|W|-1|0|7|W|-1|3
+002125|pulseRepetitionFrequency|long|PULSE REPETITION FREQUENCY|Hz|-1|0|8|Hz|-1|3
+002126|pulseWidth|double|PULSE WIDTH|s|7|0|6|s|7|2
+002127|receiverIntermediateFrequency|long|RECEIVER INTERMEDIATE FREQUENCY|Hz|-6|0|7|Hz|-6|3
+002128|intermediateFrequencyBandwidth|long|INTERMEDIATE FREQUENCY BANDWIDTH|Hz|-5|0|6|Hz|-5|2
+002129|minimumDetectableSignal|long|MINIMUM DETECTABLE SIGNAL|dB|0|-150|5|dB|0|3
+002130|dynamicRange|long|DYNAMIC RANGE|dB|0|0|7|dB|0|3
+002131|sensitivityTimeControl|flag|SENSITIVITY TIME CONTROL (STC)|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+002132|azimuthPointingAccuracy|double|AZIMUTH POINTING ACCURACY|deg|2|0|6|deg|2|2
+002133|elevationPointingAccuracy|double|ELEVATION POINTING ACCURACY|deg|2|0|6|deg|2|2
+002134|antennaBeamAzimuth|double|ANTENNA BEAM AZIMUTH|deg|2|0|16|deg|2|5
+002135|antennaElevation|double|ANTENNA ELEVATION|deg|2|-9000|15|deg|2|5
+002136|rangeProcessedByRangeAttenuationCorrection|long|RANGE PROCESSED BY RANGE ATTENUATION CORRECTION|m|-3|0|16|m|-3|5
+002137|radarDualPrfRatio|table|RADAR DUAL PRF RATIO|CODE TABLE|0|0|4|CODE TABLE|0|2
+002138|antennaRotationDirection|table|ANTENNA ROTATION DIRECTION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002139|siralInstrumentConfiguration|table|SIRAL INSTRUMENT CONFIGURATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+002140|satelliteRadarBeamAzimuthAngle|long|SATELLITE RADAR BEAM AZIMUTH ANGLE|deg|0|0|9|deg|0|3
+002141|measurementType|string|MEASUREMENT TYPE|CCITT IA5|0|0|24|Character|0|3
+002142|ozoneInstrument|string|OZONE INSTRUMENT SERIAL NUMBER/IDENTIFICATION|CCITT IA5|0|0|32|Character|0|4
+002143|ozoneInstrumentType|table|OZONE INSTRUMENT TYPE|CODE TABLE|0|0|7|CODE TABLE|0|3
+002144|lightSourceTypeForBrewerSpectrophotometer|table|LIGHT SOURCE TYPE FOR BREWER SPECTROPHOTOMETER|CODE TABLE|0|0|4|CODE TABLE|0|2
+002145|wavelengthSettingForDobsonInstruments|table|WAVELENGTH SETTING FOR DOBSON INSTRUMENTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002146|sourceConditionsForDobsonInstruments|table|SOURCE CONDITIONS FOR DOBSON INSTRUMENTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+002147|methodOfTransmissionToCollectionCentre|table|METHOD OF TRANSMISSION TO COLLECTION CENTRE|CODE TABLE|0|0|6|CODE TABLE|0|2
+002148|dataCollectionLocationSystem|table|DATA COLLECTION AND/OR LOCATION SYSTEM|CODE TABLE|0|0|5|CODE TABLE|0|2
+002149|dataBuoyType|table|TYPE OF DATA BUOY|CODE TABLE|0|0|6|CODE TABLE|0|2
+002150|tovsOrAtovsOrAvhrrInstrumentationChannelNumber|table|TOVS/ATOVS/AVHRR INSTRUMENTATION CHANNEL NUMBER|CODE TABLE|0|0|6|CODE TABLE|0|2
+002151|radiometerIdentifier|table|RADIOMETER IDENTIFIER|CODE TABLE|0|0|11|CODE TABLE|0|4
+002152|satelliteInstrumentUsedInDataProcessing|flag|SATELLITE INSTRUMENT USED IN DATA PROCESSING|FLAG TABLE|0|0|31|FLAG TABLE|0|10
+002153|satelliteChannelCentreFrequency|long|SATELLITE CHANNEL CENTRE FREQUENCY|Hz|-8|0|26|Hz|-8|8
+002154|satelliteChannelBandWidth|long|SATELLITE CHANNEL BAND WIDTH|Hz|-8|0|26|Hz|-8|8
+002155|satelliteChannelWavelength|double|SATELLITE CHANNEL WAVELENGTH|m|9|0|16|m|9|5
+002156|percentageOfValidKuOceanRetrackerMeasurements|long|PERCENTAGE OF VALID KU OCEAN RETRACKER MEASUREMENTS|%|0|0|7|%|0|3
+002157|percentageOfValidSOceanRetrackerMeasurements|long|PERCENTAGE OF VALID S OCEAN RETRACKER MEASUREMENTS|%|0|0|7|%|0|3
+002158|ra2Instrument|flag|RA-2 INSTRUMENT|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+002159|mwrInstrument|flag|MWR INSTRUMENT|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+002160|radarWaveLength|table|WAVE LENGTH OF THE RADAR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002163|heightAssignmentMethod|table|HEIGHT ASSIGNMENT METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002164|tracerCorrelationMethod|table|TRACER CORRELATION METHOD|CODE TABLE|0|0|3|CODE TABLE|0|1
+002165|radianceTypeFlags|flag|RADIANCE TYPE FLAGS|FLAG TABLE|0|0|15|FLAG TABLE|0|5
+002166|radianceType|table|RADIANCE TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002167|radianceComputationalMethod|table|RADIANCE COMPUTATIONAL METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+002168|hydrostaticPressureOfLowerEndOfCableThermistorString|long|HYDROSTATIC PRESSURE OF LOWER END OF CABLE (THERMISTOR STRING)|Pa|-3|0|16|kPa|0|5
+002169|anemometerType|table|ANEMOMETER TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+002170|aircraftHumiditySensors|table|AIRCRAFT HUMIDITY SENSORS|CODE TABLE|0|0|6|CODE TABLE|0|2
+002171|instrumentSerialNumberForWaterTemperatureProfile|string|INSTRUMENT SERIAL NUMBER FOR WATER TEMPERATURE PROFILE MEASUREMENT|CCITT IA5|0|0|64|Character|0|8
+002172|productTypeForRetrievedAtmosphericGases|table|PRODUCT TYPE FOR RETRIEVED ATMOSPHERIC GASES|CODE TABLE|0|0|8|CODE TABLE|0|3
+002173|squareOfOffNadirAngle|double|SQUARE OF THE OFF-NADIR ANGLE|deg2|4|0|10|deg2|4|4
+002174|meanAcrossTrackPixelNumber|long|MEAN ACROSS TRACK PIXEL NUMBER|Numeric|0|0|9|Numeric|0|3
+002175|methodOfPrecipitationMeasurement|table|METHOD OF PRECIPITATION MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002176|methodOfStateOfGroundMeasurement|table|METHOD OF STATE OF GROUND MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002177|methodOfSnowDepthMeasurement|table|METHOD OF SNOW DEPTH MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002178|methodOfLiquidContentMeasurementOfPrecipitation|table|METHOD OF LIQUID CONTENT MEASUREMENT OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+002179|skyConditionAlgorithmType|table|TYPE OF SKY CONDITION ALGORITHM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002180|mainPresentWeatherDetectingSystem|table|MAIN PRESENT WEATHER DETECTING SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002181|supplementaryPresentWeatherSensor|flag|SUPPLEMENTARY PRESENT WEATHER SENSOR|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+002182|visibilityMeasurementSystem|table|VISIBILITY MEASUREMENT SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002183|cloudDetectionSystem|table|CLOUD DETECTION SYSTEM|CODE TABLE|0|0|4|CODE TABLE|0|2
+002184|lightningDetectionSensorType|table|TYPE OF LIGHTNING DETECTION SENSOR|CODE TABLE|0|0|4|CODE TABLE|0|2
+002185|methodOfEvaporationMeasurement|table|METHOD OF EVAPORATION MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+002186|capabilityToDetectPrecipitationPhenomena|flag|CAPABILITY TO DETECT PRECIPITATION PHENOMENA|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+002187|capabilityToDetectOtherWeatherPhenomena|flag|CAPABILITY TO DETECT OTHER WEATHER PHENOMENA|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+002188|capabilityToDetectObscuration|flag|CAPABILITY TO DETECT OBSCURATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+002189|capabilityToDiscriminateLightningStrikes|flag|CAPABILITY TO DISCRIMINATE LIGHTNING STRIKES|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+002190|lagrangianDrifterSubmergenceTimeSubmerged|long|LAGRANGIAN DRIFTER SUBMERGENCE (% TIME SUBMERGED)|%|0|0|7|%|0|3
+002191|geopotentialHeightCalculation|table|GEOPOTENTIAL HEIGHT CALCULATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+003010|methodOfSeaOrWaterCurrentMeasurement|table|METHOD OF SEA/WATER CURRENT MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+003011|methodOfDepthCalculation|table|METHOD OF DEPTH CALCULATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+003012|instrumentTypeOrSensorForDissolvedOxygenMeasurement|table|INSTRUMENT TYPE/SENSOR FOR DISSOLVED OXYGEN MEASUREMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+004001|year|long|YEAR|a|0|0|12|a|0|4
+004002|month|long|MONTH|mon|0|0|4|mon|0|2
+004003|day|long|DAY|d|0|0|6|d|0|2
+004004|hour|long|HOUR|h|0|0|5|h|0|2
+004005|minute|long|MINUTE|min|0|0|6|min|0|2
+004006|second|long|SECOND|s|0|0|6|s|0|2
+004007|secondsWithinAMinuteMicrosecond|double|SECONDS WITHIN A MINUTE (MICROSECOND ACCURACY)|s|6|0|26|s|6|8
+004011|timeIncrement|long|TIME INCREMENT|a|0|-1024|11|a|0|4
+004012|timeIncrement|long|TIME INCREMENT|mon|0|-1024|11|mon|0|4
+004013|timeIncrement|long|TIME INCREMENT|d|0|-1024|11|d|0|4
+004014|timeIncrement|long|TIME INCREMENT|h|0|-1024|11|h|0|4
+004015|timeIncrement|long|TIME INCREMENT|min|0|-2048|12|min|0|4
+004016|timeIncrement|long|TIME INCREMENT|s|0|-4096|13|s|0|4
+004017|referenceTimePeriodForAccumulatedOrExtremeData|long|REFERENCE TIME PERIOD FOR ACCUMULATED OR EXTREME DATA|min|0|-1440|12|min|0|4
+004021|timePeriod|long|TIME PERIOD OR DISPLACEMENT|a|0|-1024|11|a|0|4
+004022|timePeriod|long|TIME PERIOD OR DISPLACEMENT|mon|0|-1024|11|mon|0|4
+004023|timePeriod|long|TIME PERIOD OR DISPLACEMENT|d|0|-1024|11|d|0|4
+004024|timePeriod|long|TIME PERIOD OR DISPLACEMENT|h|0|-2048|12|h|0|4
+004025|timePeriod|long|TIME PERIOD OR DISPLACEMENT|min|0|-2048|12|min|0|4
+004026|timePeriod|long|TIME PERIOD OR DISPLACEMENT|s|0|-4096|13|s|0|4
+004031|durationOfTimeRelatingToFollowingValue|long|DURATION OF TIME RELATING TO FOLLOWING VALUE|h|0|0|8|h|0|3
+004032|durationOfTimeRelatingToFollowingValue|long|DURATION OF TIME RELATING TO FOLLOWING VALUE|min|0|0|6|min|0|2
+004041|timeDifferenceUtcLmt|long|TIME DIFFERENCE, UTC - LMT|min|0|-1440|12|min|0|4
+004043|dayOfYear|long|DAY OF THE YEAR|d|0|0|9|d|0|3
+004051|principalTimeOfDailyReadingOfMaximumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MAXIMUM TEMPERATURE|h|0|0|5|h|0|2
+004052|principalTimeOfDailyReadingOfMinimumTemperature|long|PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE|h|0|0|5|h|0|2
+004053|numberOfDaysWithPrecipitationEqualToOrMoreThan1Mm|long|NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM|Numeric|0|0|6|Numeric|0|2
+004059|timesOfObservationUsedToComputeReportedMeanValues|flag|TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+004065|timeIncrement|long|SHORT TIME INCREMENT|min|0|-128|8|min|0|2
+004066|timeIncrement|long|SHORT TIME INCREMENT|s|0|-128|8|s|0|2
+004073|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|d|0|-128|8|d|0|2
+004074|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|h|0|-128|8|h|0|2
+004075|timePeriod|long|SHORT TIME PERIOD OR DISPLACEMENT|min|0|-128|8|min|0|2
+004080|averagingPeriodForFollowingValue|table|AVERAGING PERIOD FOR FOLLOWING VALUE|CODE TABLE|0|0|4|CODE TABLE|0|2
+004086|timePeriod|long|LONG TIME PERIOD OR DISPLACEMENT|s|0|-8192|15|s|0|5
+005001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005011|latitudeIncrement|double|LATITUDE INCREMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005012|latitudeIncrement|double|LATITUDE INCREMENT (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005015|latitudeDisplacement|double|LATITUDE DISPLACEMENT (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+005016|latitudeDisplacement|double|LATITUDE DISPLACEMENT (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+005021|bearingOrAzimuth|double|BEARING OR AZIMUTH|deg|2|0|16|deg|2|5
+005022|solarAzimuth|double|SOLAR AZIMUTH|deg|2|0|16|deg|2|5
+005023|sunToSatelliteAzimuthDifference|double|SUN TO SATELLITE AZIMUTH DIFFERENCE|deg|1|-1800|12|deg|1|4
+005030|directionSpectral|long|DIRECTION (SPECTRAL)|deg|0|0|12|deg|0|4
+005031|rowNumber|long|ROW NUMBER|Numeric|0|0|12|Numeric|0|4
+005033|pixelSizeOnHorizontal1|long|PIXEL SIZE ON HORIZONTAL - 1|m|-1|0|16|m|-1|5
+005034|alongTrackRowNumber|long|ALONG TRACK ROW NUMBER|Numeric|0|0|11|Numeric|0|4
+005035|xDimensionMaximumSize|long|MAXIMUM SIZE OF X-DIMENSION|Numeric|0|0|12|Numeric|0|4
+005036|shipTransectNumberAccordingToSoop|long|SHIP TRANSECT NUMBER ACCORDING TO SOOP|Numeric|0|0|7|Numeric|0|2
+005040|orbitNumber|long|ORBIT NUMBER|Numeric|0|0|24|Numeric|0|8
+005041|scanLineNumber|long|SCAN LINE NUMBER|Numeric|0|0|8|Numeric|0|3
+005042|channelNumber|long|CHANNEL NUMBER|Numeric|0|0|6|Numeric|0|2
+005043|fieldOfViewNumber|long|FIELD OF VIEW NUMBER|Numeric|0|0|8|Numeric|0|3
+005044|satelliteCycleNumber|long|SATELLITE CYCLE NUMBER|Numeric|0|0|11|Numeric|0|4
+005045|fieldOfRegardNumber|long|FIELD OF REGARD NUMBER|Numeric|0|0|8|Numeric|0|3
+005052|channelNumberIncrement|long|CHANNEL NUMBER INCREMENT|Numeric|0|0|5|Numeric|0|2
+005053|fieldOfViewNumberIncrement|long|FIELD OF VIEW NUMBER INCREMENT|Numeric|0|0|5|Numeric|0|2
+005060|yAngularPositionFromCentreOfGravity|double|Y ANGULAR POSITION FROM CENTRE OF GRAVITY|deg|6|-8000000|24|deg|6|8
+005061|zAngularPositionFromCentreOfGravity|double|Z ANGULAR POSITION FROM CENTRE OF GRAVITY|deg|6|-8000000|24|deg|6|8
+006001|longitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006002|longitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006011|longitudeIncrement|double|LONGITUDE INCREMENT (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006012|longitudeIncrement|double|LONGITUDE INCREMENT (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006015|longitudeDisplacement|double|LONGITUDE DISPLACEMENT (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+006016|longitudeDisplacement|double|LONGITUDE DISPLACEMENT (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+006021|distance|long|DISTANCE|m|-1|0|13|m|-1|4
+006029|waveNumber|double|WAVE NUMBER|/m|1|0|22|/m|1|7
+006030|waveNumberSpectral|double|WAVE NUMBER (SPECTRAL)|rad/m|5|0|13|rad/m|5|4
+006031|columnNumber|long|COLUMN NUMBER|Numeric|0|0|12|Numeric|0|4
+006033|pixelSizeOnHorizontal2|long|PIXEL SIZE ON HORIZONTAL - 2|m|-1|0|16|m|-1|5
+006034|crossTrackCellNumber|long|CROSS-TRACK CELL NUMBER|Numeric|0|0|7|Numeric|0|3
+006035|yDimensionMaximumSize|long|MAXIMUM SIZE OF Y-DIMENSION|Numeric|0|0|12|Numeric|0|4
+006040|radiusOfConfidence|long|RADIUS OF CONFIDENCE|m|0|0|13|m|0|4
+007001|heightOfStation|long|HEIGHT OF STATION|m|0|-400|15|m|0|5
+007002|height|long|HEIGHT OR ALTITUDE|m|-1|-40|16|m|-1|5
+007003|geopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|m2 s-2|-1|6
+007004|pressure|long|PRESSURE|Pa|-1|0|14|Pa|-1|5
+007005|heightIncrement|long|HEIGHT INCREMENT|m|0|-400|12|m|0|4
+007006|heightAboveStation|long|HEIGHT ABOVE STATION|m|0|0|15|m|0|5
+007007|height|long|HEIGHT|m|0|-1000|17|m|0|6
+007008|geopotential|long|GEOPOTENTIAL|m2 s-2|0|-10000|20|m2 s-2|0|7
+007009|geopotentialHeight|long|GEOPOTENTIAL HEIGHT|gpm|0|-1000|17|gpm|0|5
+007010|flightLevel|long|FLIGHT LEVEL|m|0|-1024|16|ft|-1|5
+007012|gridPointAltitude|double|GRID POINT ALTITUDE|m|2|-50000|20|m|2|7
+007021|elevation|double|ELEVATION|deg|2|-9000|15|deg|2|5
+007022|solarElevation|double|SOLAR ELEVATION|deg|2|-9000|15|deg|2|5
+007024|satelliteZenithAngle|double|SATELLITE ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+007025|solarZenithAngle|double|SOLAR ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+007026|satelliteZenithAngle|double|SATELLITE ZENITH ANGLE|deg|4|-900000|21|deg|4|7
+007030|heightOfStationGroundAboveMeanSeaLevel|double|HEIGHT OF STATION GROUND ABOVE MEAN SEA LEVEL|m|1|-4000|17|m|1|5
+007031|heightOfBarometerAboveMeanSeaLevel|double|HEIGHT OF BAROMETER ABOVE MEAN SEA LEVEL|m|1|-4000|17|m|1|5
+007032|heightOfSensorAboveLocalGroundOrDeckOfMarinePlatform|double|HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM)|m|2|0|16|m|2|5
+007033|heightOfSensorAboveWaterSurface|double|HEIGHT OF SENSOR ABOVE WATER SURFACE|m|1|0|12|m|1|4
+007035|zDimensionMaximumSize|long|MAXIMUM SIZE OF Z-DIMENSION|Numeric|0|0|12|Numeric|0|4
+007036|levelIndexOfZ|long|LEVEL INDEX OF Z|Numeric|0|0|12|Numeric|0|4
+007040|impactParameter|double|IMPACT PARAMETER|m|1|62000000|22|m|1|8
+007061|depthBelowLandSurface|double|DEPTH BELOW LAND SURFACE|m|2|0|14|m|2|5
+007062|depthBelowWaterSurface|double|DEPTH BELOW SEA/WATER SURFACE|m|1|0|17|m|1|6
+007063|depthBelowWaterSurface|double|DEPTH BELOW SEA/WATER SURFACE (CM)|m|2|0|20|m|2|7
+007064|representativeHeightOfSensorAboveStation|long|REPRESENTATIVE HEIGHT OF SENSOR ABOVE STATION|m|0|0|4|m|0|2
+007065|waterPressure|long|WATER PRESSURE|Pa|-3|0|17|Pa|-3|6
+007070|drogueDepth|long|DROGUE DEPTH|m|0|0|10|m|0|4
+008001|verticalSoundingSignificance|flag|VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|7|FLAG TABLE|0|3
+008002|verticalSignificanceSurfaceObservations|table|VERTICAL SIGNIFICANCE (SURFACE OBSERVATIONS)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008003|verticalSignificanceSatelliteObservations|table|VERTICAL SIGNIFICANCE (SATELLITE OBSERVATIONS)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008004|phaseOfAircraftFlight|table|PHASE OF AIRCRAFT FLIGHT|CODE TABLE|0|0|3|CODE TABLE|0|1
+008005|meteorologicalAttributeSignificance|table|METEOROLOGICAL ATTRIBUTE SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008006|ozoneVerticalSoundingSignificance|flag|OZONE VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+008007|dimensionalSignificance|table|DIMENSIONAL SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008008|radiationVerticalSoundingSignificance|flag|RADIATION VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+008009|detailedPhaseOfFlight|table|DETAILED PHASE OF FLIGHT|CODE TABLE|0|0|4|CODE TABLE|0|2
+008010|surfaceQualifierForTemperatureData|table|SURFACE QUALIFIER (TEMPERATURE DATA)|CODE TABLE|0|0|5|CODE TABLE|0|2
+008011|meteorologicalFeature|table|METEOROLOGICAL FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008012|landOrSeaQualifier|table|LAND/SEA QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008013|dayOrNightQualifier|table|DAY/NIGHT QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008014|qualifierForRunwayVisualRange|table|QUALIFIER FOR RUNWAY VISUAL RANGE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008015|significantQualifierForSensor|table|SIGNIFICANT QUALIFIER FOR SENSOR|CODE TABLE|0|0|3|CODE TABLE|0|1
+008016|changeQualifierOfATrendTypeForecastOrAnAerodromeForecast|table|CHANGE QUALIFIER OF A TREND-TYPE FORECAST OR AN AERODROME FORECAST|CODE TABLE|0|0|3|CODE TABLE|0|1
+008017|qualifierOfTimeWhenForecastChangeExpected|table|QUALIFIER OF THE TIME WHEN THE FORECAST CHANGE IS EXPECTED|CODE TABLE|0|0|2|CODE TABLE|0|1
+008018|seawindsLandOrIceSurfaceType|flag|SEAWINDS LAND/ICE SURFACE TYPE|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+008019|qualifierForFollowingCentreIdentifier|table|QUALIFIER FOR FOLLOWING CENTRE IDENTIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008020|totalNumberOfMissingEntitiesWithRespectToAccumulationOrAverage|long|TOTAL NUMBER OF MISSING ENTITIES (WITH RESPECT TO ACCUMULATION OR AVERAGE)|Numeric|0|0|16|Numeric|0|5
+008021|timeSignificance|table|TIME SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+008022|totalNumberWithRespectToAccumulationOrAverage|long|TOTAL NUMBER (WITH RESPECT TO ACCUMULATION OR AVERAGE)|Numeric|0|0|16|Numeric|0|5
+008023|firstOrderStatistics|table|FIRST-ORDER STATISTICS|CODE TABLE|0|0|6|CODE TABLE|0|2
+008024|differenceStatistics|table|DIFFERENCE STATISTICS|CODE TABLE|0|0|6|CODE TABLE|0|2
+008025|timeDifferenceQualifier|table|TIME DIFFERENCE QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008026|matrixSignificance|table|MATRIX SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008029|surfaceType|table|SURFACE TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+008030|manualOnCodesVolumeI1SectionCCodeTableFromWhichDataAreDerived|long|MANUAL ON CODES (VOLUME I.1, SECTION C) CODE TABLE FROM WHICH DATA ARE DERIVED|Numeric|0|0|13|Numeric|0|4
+008031|dataCategoryCrexTableA|long|DATA CATEGORY - CREX TABLE A|Numeric|0|0|8|Numeric|0|3
+008032|statusOfOperation|table|STATUS OF OPERATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+008033|methodOfDerivationOfPercentageConfidence|table|METHOD OF DERIVATION OF PERCENTAGE CONFIDENCE|CODE TABLE|0|0|7|CODE TABLE|0|3
+008035|monitoringExerciseType|table|TYPE OF MONITORING EXERCISE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008036|typeOfCentreOrStationPerformingMonitoring|table|TYPE OF CENTRE OR STATION PERFORMING MONITORING|CODE TABLE|0|0|3|CODE TABLE|0|1
+008039|timeSignificanceAviationForecast|table|TIME SIGNIFICANCE (AVIATION FORECAST)|CODE TABLE|0|0|6|CODE TABLE|0|2
+008040|flightLevelSignificance|table|FLIGHT LEVEL SIGNIFICANCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+008041|dataSignificance|table|DATA SIGNIFICANCE|CODE TABLE|0|0|5|CODE TABLE|0|2
+008042|extendedVerticalSoundingSignificance|flag|EXTENDED VERTICAL SOUNDING SIGNIFICANCE|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+008043|atmosphericChemical|table|ATMOSPHERIC CHEMICAL OR PHYSICAL CONSTITUENT TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+008044|casRegistryNumber|string|CAS REGISTRY NUMBER|CCITT IA5|0|0|88|Character|0|11
+008046|atmosphericChemical|table|ATMOSPHERIC CHEMICAL OR PHYSICAL CONSTITUENT TYPE|Common CODE TABLE C-14|0|0|16|Common CODE TABLE C-14|0|5
+008049|numberOfObservations|long|NUMBER OF OBSERVATIONS|Numeric|0|0|8|Numeric|0|3
+008050|qualifierForNumberOfMissingValuesInCalculationOfStatistic|table|QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATISTIC|CODE TABLE|0|0|4|CODE TABLE|0|2
+008051|qualifierForNumberOfMissingValuesInCalculationOfStatistic|table|QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATISTIC|CODE TABLE|0|0|3|CODE TABLE|0|1
+008052|conditionForWhichNumberOfDaysOfOccurrenceFollows|table|CONDITION FOR WHICH NUMBER OF DAYS OF OCCURRENCE FOLLOWS|CODE TABLE|0|0|5|CODE TABLE|0|2
+008053|dayOfOccurrenceQualifier|table|DAY OF OCCURRENCE QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008054|qualifierForWindSpeedOrWindGusts|table|QUALIFIER FOR WIND SPEED OR WIND GUSTS|CODE TABLE|0|0|3|CODE TABLE|0|1
+008060|sampleScanningModeSignificance|table|SAMPLE SCANNING MODE SIGNIFICANCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+008065|sunGlintIndicator|table|SUN-GLINT INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+008066|semiTransparencyIndicator|table|SEMI-TRANSPARENCY INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+008070|tovsOrAtovsProductQualifier|table|TOVS/ATOVS PRODUCT QUALIFIER|CODE TABLE|0|0|4|CODE TABLE|0|2
+008072|pixelType|table|PIXEL(S) TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008074|altimeterEchoType|table|ALTIMETER ECHO TYPE|CODE TABLE|0|0|2|CODE TABLE|0|1
+008075|orbitQualifier|table|ASCENDING/DESCENDING ORBIT QUALIFIER|CODE TABLE|0|0|2|CODE TABLE|0|1
+008076|band|table|TYPE OF BAND|CODE TABLE|0|0|6|CODE TABLE|0|2
+008077|radiometerSensedSurfaceType|table|RADIOMETER SENSED SURFACE TYPE|CODE TABLE|0|0|7|CODE TABLE|0|3
+008079|productStatus|table|PRODUCT STATUS|CODE TABLE|0|0|4|CODE TABLE|0|2
+008080|qualifierForGtsppQualityFlag|table|QUALIFIER FOR GTSPP QUALITY FLAG|CODE TABLE|0|0|6|CODE TABLE|0|2
+008081|equipmentType|table|TYPE OF EQUIPMENT|CODE TABLE|0|0|6|CODE TABLE|0|2
+008082|modificationOfSensorHeightToAnotherValue|table|MODIFICATION OF SENSOR HEIGHT TO ANOTHER VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+008083|nominalValueIndicator|flag|NOMINAL VALUE INDICATOR|FLAG TABLE|0|0|15|FLAG TABLE|0|5
+008085|beamIdentifier|table|BEAM IDENTIFIER|CODE TABLE|0|0|3|CODE TABLE|0|1
+008086|verticalSignificanceForNwp|flag|VERTICAL SIGNIFICANCE FOR NWP|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+008087|cornerPositionOfObservation|table|CORNER POSITION OF OBSERVATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+008090|decimalScaleOfFollowingSignificands|long|DECIMAL SCALE OF FOLLOWING SIGNIFICANDS|Numeric|0|-127|8|Numeric|0|3
+010001|heightOfLandSurface|long|HEIGHT OF LAND SURFACE|m|0|-400|15|m|0|5
+010002|height|long|HEIGHT|m|-1|-40|16|m|-1|5
+010003|geopotential|long|GEOPOTENTIAL|m2 s-2|-1|-400|17|m2 s-2|-1|6
+010004|pressure|long|PRESSURE|Pa|-1|0|14|Pa|-1|5
+010007|height|long|HEIGHT|m|0|-1000|17|m|0|6
+010008|geopotential|long|GEOPOTENTIAL|m2 s-2|0|-10000|20|m2 s-2|0|7
+010009|geopotentialHeight|long|GEOPOTENTIAL HEIGHT|gpm|0|-1000|17|gpm|0|5
+010010|minimumPressureReducedToMeanSeaLevel|long|MINIMUM PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010011|maximumPressureReducedToMeanSeaLevel|long|MAXIMUM PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010031|DistanceFromEarthCentreInDirectionOfNorthPole|double|IN DIRECTION OF THE NORTH POLE, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10
+010032|satelliteDistanceToEarthCentre|double|SATELLITE DISTANCE TO EARTH'S CENTRE|m|1|0|27|m|2|9
+010033|altitudePlatformToEllipsoid|double|ALTITUDE (PLATFORM TO ELLIPSOID)|m|1|0|27|m|2|9
+010034|earthRadius|double|EARTH'S RADIUS|m|1|0|27|m|2|9
+010035|earthLocalRadiusOfCurvature|double|EARTH'S LOCAL RADIUS OF CURVATURE|m|1|62000000|22|m|1|8
+010036|geoidUndulation|double|GEOID UNDULATION|m|2|-15000|15|m|2|6
+010040|numberOfRetrievedLayers|long|NUMBER OF RETRIEVED LAYERS|Numeric|0|0|10|Numeric|0|4
+010050|standardDeviationAltitude|double|STANDARD DEVIATION ALTITUDE|m|2|0|16|m|2|5
+010051|pressureReducedToMeanSeaLevel|long|PRESSURE REDUCED TO MEAN SEA LEVEL|Pa|-1|0|14|Pa|-1|5
+010052|altimeterSettingQnh|long|ALTIMETER SETTING (QNH)|Pa|-1|0|14|Pa|-1|5
+010053|globalNavigationSatelliteSystemAltitude|long|GLOBAL NAVIGATION SATELLITE SYSTEM ALTITUDE|m|0|-1000|17|m|0|5
+010060|pressureChange|long|PRESSURE CHANGE|Pa|-1|-1024|11|Pa|-1|4
+010061|3HourPressureChange|long|3-HOUR PRESSURE CHANGE|Pa|-1|-500|10|Pa|-1|4
+010062|24HourPressureChange|long|24-HOUR PRESSURE CHANGE|Pa|-1|-1000|11|Pa|-1|4
+010063|characteristicOfPressureTendency|table|CHARACTERISTIC OF PRESSURE TENDENCY|CODE TABLE|0|0|4|CODE TABLE|0|2
+010064|sigmetCruisingLevel|table|SIGMET CRUISING LEVEL|CODE TABLE|0|0|3|CODE TABLE|0|1
+010070|indicatedAircraftAltitude|long|INDICATED AIRCRAFT ALTITUDE|m|0|-400|16|m|0|5
+010079|offNadirAngleOfTheSatelliteFromPlatformData|double|OFF-NADIR ANGLE OF THE SATELLITE FROM PLATFORM DATA|deg|4|0|16|deg|4|5
+010080|viewingZenithAngle|double|VIEWING ZENITH ANGLE|deg|2|-9000|15|deg|2|5
+010081|cogAltitudeAboveReferenceEllipsoid|double|ALTITUDE OF COG ABOVE REFERENCE ELLIPSOID|m|3|0|31|m|3|10
+010082|instantaneousAltitudeRate|double|INSTANTANEOUS ALTITUDE RATE|m/s|3|-65536|17|m/s|3|6
+010083|squaredOffNadirAngleOfSatelliteFromPlatformData|double|SQUARED OFF-NADIR ANGLE OF THE SATELLITE FROM PLATFORM DATA|deg2|2|0|16|deg2|2|5
+010084|squaredOffNadirAngleOfSatelliteFromWaveformData|double|SQUARED OFF-NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA|deg2|2|0|16|deg2|2|5
+010085|meanSeaSurfaceHeight|double|MEAN SEA-SURFACE HEIGHT|m|3|-131072|18|m|3|6
+010086|geoidHeight|double|GEOID'S HEIGHT|m|3|-131072|18|m|3|6
+010087|oceanDepthOrLandElevation|double|OCEAN DEPTH/LAND ELEVATION|m|1|-131072|18|m|1|6
+010088|totalGeocentricOceanTideHeightSolution1|double|TOTAL GEOCENTRIC OCEAN TIDE HEIGHT (SOLUTION 1)|m|3|-32768|16|m|3|5
+010089|totalGeocentricOceanTideHeightSolution2|double|TOTAL GEOCENTRIC OCEAN TIDE HEIGHT (SOLUTION 2)|m|3|-32768|16|m|3|5
+010090|longPeriodTideHeight|double|LONG PERIOD TIDE HEIGHT|m|3|-32768|16|m|3|5
+010091|tidalLoadingHeight|double|TIDAL LOADING HEIGHT|m|3|-32768|16|m|3|5
+010092|solidEarthTideHeight|double|SOLID EARTH TIDE HEIGHT|m|3|-32768|16|m|3|5
+010093|geocentricPoleTideHeight|double|GEOCENTRIC POLE TIDE HEIGHT|m|3|-32768|16|m|3|5
+010095|heightOfAtmosphere|long|HEIGHT OF ATMOSPHERE USED|m|0|0|16|m|0|5
+010096|meanDynamicTopography|double|MEAN DYNAMIC TOPOGRAPHY|m|3|-131072|18|m|3|6
+010097|meanSeaSurfaceHeightFromAltimeterOnly|double|MEAN SEA-SURFACE HEIGHT FROM ALTIMETER ONLY|m|3|-131072|18|m|3|6
+010098|loadingTideHeightGeocentricOceanTideSolution1|double|LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 1|m|4|-2000|12|m|4|4
+010099|loadingTideHeightGeocentricOceanTideSolution2|double|LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 2|m|4|-2000|12|m|4|4
+010100|nonEquilibriumLongPeriodTideHeight|double|NON-EQUILIBRIUM LONG PERIOD TIDE HEIGHT|m|4|-2000|12|m|4|4
+010101|squaredOffNadirAngleOfSatelliteFromWaveformData|double|SQUARED OFF-NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA|deg2|2|-32768|16|deg2|2|5
+010102|seaSurfaceHeightAnomaly|double|SEA-SURFACE HEIGHT ANOMALY|m|3|-32768|16|m|3|5
+011001|windDirection|long|WIND DIRECTION|deg|0|0|9|deg|0|3
+011002|windSpeed|double|WIND SPEED|m/s|1|0|12|m/s|1|4
+011003|u|double|U-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011004|v|double|V-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011005|w|double|W-COMPONENT|Pa/s|1|-512|10|Pa/s|1|4
+011006|w|double|W-COMPONENT|m/s|2|-4096|13|m/s|2|4
+011010|windDirectionAssociatedWithWindSpeedWhichFollows|long|WIND DIRECTION ASSOCIATED WITH WIND SPEED WHICH FOLLOWS|deg|0|0|9|deg|0|3
+011011|windDirectionAt10M|long|WIND DIRECTION AT 10 M|deg|0|0|9|deg|0|3
+011012|windSpeedAt10M|double|WIND SPEED AT 10 M|m/s|1|0|12|m/s|1|4
+011013|windDirectionAt5M|long|WIND DIRECTION AT 5 M|deg|0|0|9|deg|0|3
+011014|windSpeedAt5M|double|WIND SPEED AT 5 M|m/s|1|0|12|m/s|1|4
+011016|extremeCounterclockwiseWindDirectionOfAVariableWind|long|EXTREME COUNTERCLOCKWISE WIND DIRECTION OF A VARIABLE WIND|deg|0|0|9|deg|0|3
+011017|extremeClockwiseWindDirectionOfAVariableWind|long|EXTREME CLOCKWISE WIND DIRECTION OF A VARIABLE WIND|deg|0|0|9|deg|0|3
+011019|steadinessOfWind|long|STEADINESS OF WIND|%|0|0|7|%|0|3
+011021|relativeVorticity|double|RELATIVE VORTICITY|/s|9|-65536|17|/s|9|6
+011022|divergence|double|DIVERGENCE|/s|9|-65536|17|/s|9|6
+011023|velocityPotential|long|VELOCITY POTENTIAL|m2/s|-2|-65536|17|m2/s|-2|6
+011030|extendedDegreeOfTurbulence|table|EXTENDED DEGREE OF TURBULENCE|CODE TABLE|0|0|6|CODE TABLE|0|2
+011031|degreeOfTurbulence|table|DEGREE OF TURBULENCE|CODE TABLE|0|0|4|CODE TABLE|0|2
+011032|heightOfBaseOfTurbulence|long|HEIGHT OF BASE OF TURBULENCE|m|-1|-40|16|m|-1|5
+011033|heightOfTopOfTurbulence|long|HEIGHT OF TOP OF TURBULENCE|m|-1|-40|16|m|-1|5
+011034|verticalGustVelocity|double|VERTICAL GUST VELOCITY|m/s|1|-1024|11|m/s|1|4
+011035|verticalGustAcceleration|double|VERTICAL GUST ACCELERATION|m s-2|2|-8192|14|m s-2|2|5
+011036|maximumDerivedEquivalentVerticalGustSpeed|double|MAXIMUM DERIVED EQUIVALENT VERTICAL GUST SPEED|m/s|1|0|10|m/s|1|4
+011037|turbulenceIndex|table|TURBULENCE INDEX|CODE TABLE|0|0|6|CODE TABLE|0|2
+011038|timeOfOccurrenceOfPeakEddyDissipationRate|table|TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|5|CODE TABLE|0|2
+011039|extendedTimeOfOccurrenceOfPeakEddyDissipationRate|table|EXTENDED TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE|CODE TABLE|0|0|6|CODE TABLE|0|2
+011040|maximumWindSpeedMeanWind|double|MAXIMUM WIND SPEED (MEAN WIND)|m/s|1|0|12|m/s|1|4
+011041|maximumWindGustSpeed|double|MAXIMUM WIND GUST SPEED|m/s|1|0|12|m/s|1|4
+011042|maximumWindSpeed10MinuteMeanWind|double|MAXIMUM WIND SPEED (10-MINUTE MEAN WIND)|m/s|1|0|12|m/s|1|4
+011043|maximumWindGustDirection|long|MAXIMUM WIND GUST DIRECTION|deg|0|0|9|deg|0|3
+011044|meanWindDirectionForSurfaceTo1500M|long|MEAN WIND DIRECTION FOR SURFACE - 1 500 M (5 000 FEET)|deg|0|0|9|deg|0|3
+011045|meanWindSpeedForSurfaceTo1500M|double|MEAN WIND SPEED FOR SURFACE - 1 500 M (5 000 FEET)|m/s|1|0|12|m/s|1|4
+011046|maximumInstantaneousWindSpeed|double|MAXIMUM INSTANTANEOUS WIND SPEED|m/s|1|0|12|m/s|1|4
+011047|maximumInstantaneousWindSpeedOver10Minutes|double|MAXIMUM INSTANTANEOUS WIND SPEED OVER 10 MINUTES|m/s|1|0|12|m/s|1|4
+011049|windDirectionStandardDeviation|long|STANDARD DEVIATION OF WIND DIRECTION|deg|0|0|9|deg|0|3
+011050|standardDeviationOfHorizontalWindSpeed|double|STANDARD DEVIATION OF HORIZONTAL WIND SPEED|m/s|1|0|12|m/s|1|4
+011051|standardDeviationOfVerticalWindSpeed|double|STANDARD DEVIATION OF VERTICAL WIND SPEED|m/s|1|0|8|m/s|1|3
+011052|formalUncertaintyInWindSpeed|double|FORMAL UNCERTAINTY IN WIND SPEED|m/s|2|0|13|m/s|2|5
+011053|formalUncertaintyInWindDirection|double|FORMAL UNCERTAINTY IN WIND DIRECTION|deg|2|0|15|deg|2|5
+011054|meanWindDirectionFor1500To3000M|long|MEAN WIND DIRECTION FOR 1 500 - 3 000 M|deg|0|0|9|deg|0|3
+011055|meanWindSpeedFor1500To3000M|double|MEAN WIND SPEED FOR 1 500 - 3 000 M|m/s|1|0|12|m/s|1|4
+011061|absoluteWindShearIn1KmLayerBelow|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW|m/s|1|0|12|m/s|1|4
+011062|absoluteWindShearIn1KmLayerAbove|double|ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE|m/s|1|0|12|m/s|1|4
+011070|designatorOfRunwayAffectedByWindShearIncludingAll|string|DESIGNATOR OF THE RUNWAY AFFECTED BY WIND SHEAR (INCLUDING ALL)|CCITT IA5|0|0|32|Character|0|4
+011071|turbulentVerticalMomentumFlux|double|TURBULENT VERTICAL MOMENTUM FLUX|m2 s-2|3|-128|14|m2 s-2|3|5
+011072|turbulentVerticalBuoyancyFlux|double|TURBULENT VERTICAL BUOYANCY FLUX|K m s-1|3|-128|11|K m s-1|3|4
+011073|turbulentKineticEnergy|double|TURBULENT KINETIC ENERGY|m2 s-2|2|-1024|13|m2 s-2|2|4
+011074|dissipationEnergy|double|DISSIPATION ENERGY|m2 s-2|2|-1024|10|m2 s-2|2|4
+011075|meanTurbulenceIntensityEddyDissipationRate|double|MEAN TURBULENCE INTENSITY (EDDY DISSIPATION RATE)|m2/3 s-1|2|0|8|m2/3 s-1|2|3
+011076|peakTurbulenceIntensityEddyDissipationRate|double|PEAK TURBULENCE INTENSITY (EDDY DISSIPATION RATE)|m2/3 s-1|2|0|8|m2/3 s-1|2|3
+011077|reportingIntervalOrAveragingTimeForEddyDissipationRate|long|REPORTING INTERVAL OR AVERAGING TIME FOR EDDY DISSIPATION RATE|s|0|0|12|s|0|4
+011081|modelWindDirectionAt10M|double|MODEL WIND DIRECTION AT 10 M|deg|2|0|16|deg|2|5
+011082|modelWindSpeedAt10M|double|MODEL WIND SPEED AT 10 M|m/s|2|0|14|m/s|2|4
+011083|windSpeed|long|WIND SPEED|km/h|0|0|9|km/h|0|3
+011084|windSpeed|long|WIND SPEED|kt|0|0|8|kt|0|3
+011085|maximumWindGustSpeed|long|MAXIMUM WIND GUST SPEED|km/h|0|0|9|km/h|0|3
+011086|maximumWindGustSpeed|long|MAXIMUM WIND GUST SPEED|kt|0|0|8|kt|0|3
+011095|u|double|U-COMPONENT OF THE MODEL WIND VECTOR|m/s|1|-4096|13|m/s|1|4
+011096|v|double|V-COMPONENT OF THE MODEL WIND VECTOR|m/s|1|-4096|13|m/s|1|4
+011097|windSpeedFromAltimeter|double|WIND SPEED FROM ALTIMETER|m/s|2|0|12|m/s|2|4
+011098|windSpeedFromRadiometer|double|WIND SPEED FROM RADIOMETER|m/s|2|0|12|m/s|2|4
+011100|aircraftTrueAirspeed|double|AIRCRAFT TRUE AIRSPEED|m/s|1|0|12|m/s|1|4
+011101|aircraftGroundSpeedUComponent|double|AIRCRAFT GROUND SPEED U-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011102|aircraftGroundSpeedVComponent|double|AIRCRAFT GROUND SPEED V-COMPONENT|m/s|1|-4096|13|m/s|1|4
+011103|aircraftGroundSpeedWComponent|double|AIRCRAFT GROUND SPEED W-COMPONENT|m/s|1|-512|10|m/s|1|3
+011104|aircraftTrueHeading|long|AIRCRAFT TRUE HEADING|deg|0|0|9|deg|0|3
+011105|edrAlgorithmVersion|long|EDR ALGORITHM VERSION|Numeric|0|0|6|Numeric|0|2
+011106|runningMinimumConfidence|long|RUNNING MINIMUM CONFIDENCE|Numeric|1|0|4|Numeric|1|2
+011107|maximumNumberBadInputs|long|MAXIMUM NUMBER BAD INPUTS|Numeric|0|0|5|Numeric|0|2
+011108|peakLocation|long|PEAK LOCATION|Numeric|1|0|4|Numeric|1|2
+011109|numberOfGoodEdr|long|NUMBER OF GOOD EDR|Numeric|0|0|4|Numeric|0|2
+012001|airTemperature|double|TEMPERATURE/AIR TEMPERATURE|K|1|0|12|C|1|3
+012002|wetBulbTemperature|double|WET-BULB TEMPERATURE|K|1|0|12|C|1|3
+012003|dewpointTemperature|double|DEWPOINT TEMPERATURE|K|1|0|12|C|1|3
+012004|airTemperatureAt2M|double|AIR TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012005|wetBulbTemperatureAt2M|double|WET-BULB TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012006|dewpointTemperatureAt2M|double|DEWPOINT TEMPERATURE AT 2 M|K|1|0|12|C|1|3
+012007|virtualTemperature|double|VIRTUAL TEMPERATURE|K|1|0|12|C|1|3
+012011|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|C|1|3
+012012|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|1|0|12|C|1|3
+012013|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE, PAST 12 HOURS|K|1|0|12|C|1|3
+012014|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|1|0|12|C|1|3
+012015|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|1|0|12|C|1|3
+012016|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|1|0|12|C|1|3
+012017|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|1|0|12|C|1|3
+012021|maximumTemperatureAt2M|double|MAXIMUM TEMPERATURE AT 2 M|K|2|0|16|C|2|4
+012022|minimumTemperatureAt2M|double|MINIMUM TEMPERATURE AT 2 M|K|2|0|16|C|2|4
+012023|temperature|long|TEMPERATURE|C|0|-99|8|C|0|2
+012024|dewpointTemperature|long|DEWPOINT TEMPERATURE|C|0|-99|8|C|0|2
+012030|soilTemperature|double|SOIL TEMPERATURE|K|1|0|12|C|1|3
+012049|temperatureChangeOverSpecifiedPeriod|long|TEMPERATURE CHANGE OVER SPECIFIED PERIOD|K|0|-30|6|C|0|2
+012051|standardDeviationTemperature|double|STANDARD DEVIATION TEMPERATURE|K|1|0|10|C|1|3
+012052|highestDailyMeanTemperature|double|HIGHEST DAILY MEAN TEMPERATURE|K|1|0|12|C|1|3
+012053|lowestDailyMeanTemperature|double|LOWEST DAILY MEAN TEMPERATURE|K|1|0|12|C|1|3
+012060|awsEnclosureInternalTemperature|double|AWS ENCLOSURE INTERNAL TEMPERATURE|K|1|0|12|C|1|3
+012061|skinTemperature|double|SKIN TEMPERATURE|K|1|0|12|C|1|3
+012062|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|1|0|12|C|1|3
+012063|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|1|0|12|C|1|3
+012064|instrumentTemperature|double|INSTRUMENT TEMPERATURE|K|1|0|12|K|1|4
+012065|standardDeviationBrightnessTemperature|double|STANDARD DEVIATION BRIGHTNESS TEMPERATURE|K|1|0|12|K|1|4
+012066|antennaTemperature|double|ANTENNA TEMPERATURE|K|2|0|16|C|2|5
+012070|warmLoadTemperature|double|WARM LOAD TEMPERATURE|K|2|0|16|K|2|5
+012071|coldestClusterTemperature|double|COLDEST CLUSTER TEMPERATURE|K|1|0|12|K|1|4
+012072|radiance|double|RADIANCE|W m-2 sr-1|6|0|31|W m-2 sr-1|6|9
+012075|spectralRadiance|long|SPECTRAL RADIANCE|W m-3 sr-1|-3|0|16|W m-3 sr-1|-3|5
+012076|radiance|double|RADIANCE|W m-2 sr-1|3|0|16|W m-2 sr-1|3|5
+012080|brightnessTemperatureRealPart|double|BRIGHTNESS TEMPERATURE REAL PART|K|2|-10000|16|K|2|5
+012081|brightnessTemperatureImaginaryPart|double|BRIGHTNESS TEMPERATURE IMAGINARY PART|K|2|-10000|16|K|2|5
+012082|pixelRadiometricAccuracy|double|PIXEL RADIOMETRIC ACCURACY|K|2|0|12|K|2|4
+012101|airTemperature|double|TEMPERATURE/AIR TEMPERATURE|K|2|0|16|C|2|4
+012102|wetBulbTemperature|double|WET-BULB TEMPERATURE|K|2|0|16|C|2|4
+012103|dewpointTemperature|double|DEWPOINT TEMPERATURE|K|2|0|16|C|2|4
+012104|airTemperatureAt2M|double|AIR TEMPERATURE AT 2 M|K|2|0|16|C|2|4
+012105|webBulbTemperatureAt2M|double|WEB-BULB TEMPERATURE AT 2 M|K|2|0|16|C|2|4
+012106|dewpointTemperatureAt2M|double|DEWPOINT TEMPERATURE AT 2 M|K|2|0|16|C|2|4
+012107|virtualTemperature|double|VIRTUAL TEMPERATURE|K|2|0|16|C|2|4
+012111|maximumTemperatureAtHeightAndOverPeriodSpecified|double|MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|2|0|16|C|2|4
+012112|minimumTemperatureAtHeightAndOverPeriodSpecified|double|MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED|K|2|0|16|C|2|4
+012113|groundMinimumTemperaturePast12Hours|double|GROUND MINIMUM TEMPERATURE, PAST 12 HOURS|K|2|0|16|C|2|4
+012114|maximumTemperatureAt2MPast12Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|2|0|16|C|2|4
+012115|minimumTemperatureAt2MPast12Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 12 HOURS|K|2|0|16|C|2|4
+012116|maximumTemperatureAt2MPast24Hours|double|MAXIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|2|0|16|C|2|4
+012117|minimumTemperatureAt2MPast24Hours|double|MINIMUM TEMPERATURE AT 2 M, PAST 24 HOURS|K|2|0|16|C|2|4
+012118|maximumTemperatureAtHeightSpecifiedPast24Hours|double|MAXIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS|K|2|0|16|C|2|4
+012119|minimumTemperatureAtHeightSpecifiedPast24Hours|double|MINIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS|K|2|0|16|C|2|4
+012120|groundTemperature|double|GROUND TEMPERATURE|K|2|0|16|C|2|4
+012121|groundMinimumTemperature|double|GROUND MINIMUM TEMPERATURE|K|2|0|16|C|2|4
+012122|groundMinimumTemperatureOfPrecedingNight|double|GROUND MINIMUM TEMPERATURE OF THE PRECEDING NIGHT|K|2|0|16|C|2|4
+012130|soilTemperature|double|SOIL TEMPERATURE|K|2|0|16|C|2|4
+012131|snowTemperature|double|SNOW TEMPERATURE|K|2|0|16|C|2|4
+012132|iceSurfaceTemperature|double|ICE SURFACE TEMPERATURE|K|2|0|16|C|2|4
+012151|dailyMeanTemperatureStandardDeviation|double|STANDARD DEVIATION OF DAILY MEAN TEMPERATURE|K|2|0|12|C|2|4
+012152|highestDailyMeanTemperature|double|HIGHEST DAILY MEAN TEMPERATURE|K|2|0|16|C|2|4
+012153|lowestDailyMeanTemperature|double|LOWEST DAILY MEAN TEMPERATURE|K|2|0|16|C|2|4
+012158|noiseEquivalentDeltaTemperatureWhileViewingColdTarget|double|NOISE-EQUIVALENT DELTA TEMPERATURE WHILE VIEWING COLD TARGET|K|2|0|12|C|2|4
+012159|noiseEquivalentDeltaTemperatureWhileViewingWarmTarget|double|NOISE-EQUIVALENT DELTA TEMPERATURE WHILE VIEWING WARM TARGET|K|2|0|12|C|2|4
+012161|skinTemperature|double|SKIN TEMPERATURE|K|2|0|16|C|2|4
+012162|equivalentBlackBodyTemperature|double|EQUIVALENT BLACK BODY TEMPERATURE|K|2|0|16|C|2|4
+012163|brightnessTemperature|double|BRIGHTNESS TEMPERATURE|K|2|0|16|C|2|4
+012164|instrumentTemperature|double|INSTRUMENT TEMPERATURE|K|2|0|16|K|2|5
+012165|directSunBrightnessTemperature|long|DIRECT SUN BRIGHTNESS TEMPERATURE|K|0|0|23|K|0|7
+012166|snapshotAccuracy|double|SNAPSHOT ACCURACY|K|1|-4000|13|K|1|4
+012167|radiometricAccuracyPurePolarization|double|RADIOMETRIC ACCURACY (PURE POLARIZATION)|K|1|0|9|K|1|3
+012168|radiometricAccuracyCrossPolarization|double|RADIOMETRIC ACCURACY (CROSS POLARIZATION)|K|1|0|9|K|1|3
+012171|coldestClusterTemperature|double|COLDEST CLUSTER TEMPERATURE|K|2|0|16|K|2|5
+012180|averaged12MicronBtForAllClearPixelsAtNadir|double|AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012181|averaged11MicronBtForAllClearPixelsAtNadir|double|AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012182|averaged37MicronBtForAllClearPixelsAtNadir|double|AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS AT NADIR|K|2|0|16|K|2|5
+012183|averaged12MicronBtForAllClearPixelsForwardView|double|AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012184|averaged11MicronBtForAllClearPixelsForwardView|double|AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012185|averaged37MicronBtForAllClearPixelsForwardView|double|AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW|K|2|0|16|K|2|5
+012186|meanNadirSeaSurfaceTemperature|double|MEAN NADIR SEA-SURFACE TEMPERATURE|K|2|0|16|K|2|5
+012187|meanDualViewSeaSurfaceTemperature|double|MEAN DUAL VIEW SEA-SURFACE TEMPERATURE|K|2|0|16|K|2|5
+012188|interpolated238GhzBrightnessTFromMwr|double|INTERPOLATED 23.8 GHZ BRIGHTNESS T FROM MWR|K|2|0|16|K|2|5
+012189|interpolated365GhzBrightnessTFromMwr|double|INTERPOLATED 36.5 GHZ BRIGHTNESS T FROM MWR|K|2|0|16|K|2|5
+013001|specificHumidity|double|SPECIFIC HUMIDITY|kg/kg|5|0|14|kg/kg|5|5
+013002|mixingRatio|double|MIXING RATIO|kg/kg|5|0|14|kg/kg|5|5
+013003|relativeHumidity|long|RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013004|vapourPressure|long|VAPOUR PRESSURE|Pa|-1|0|10|Pa|-1|4
+013005|vapourDensity|double|VAPOUR DENSITY|kg m-3|3|0|7|kg m-3|3|3
+013006|mixingHeights|long|MIXING HEIGHTS|m|-1|-40|16|m|-1|5
+013007|minimumRelativeHumidity|long|MINIMUM RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013008|maximumRelativeHumidity|long|MAXIMUM RELATIVE HUMIDITY|%|0|0|7|%|0|3
+013009|relativeHumidity|double|RELATIVE HUMIDITY|%|1|-1000|12|%|1|4
+013011|totalPrecipitationOrTotalWaterEquivalent|double|TOTAL PRECIPITATION/TOTAL WATER EQUIVALENT|kg m-2|1|-1|14|kg m-2|1|5
+013012|depthOfFreshSnow|double|DEPTH OF FRESH SNOW|m|2|-2|12|m|2|4
+013013|totalSnowDepth|double|TOTAL SNOW DEPTH|m|2|-2|16|m|2|5
+013014|rainfallOrWaterEquivalentOfSnowAveragedRate|double|RAINFALL/WATER EQUIVALENT OF SNOW (AVERAGED RATE)|kg m-2 s-1|4|0|12|kg m-2 s-1|4|4
+013015|snowfallAveragedRate|double|SNOWFALL (AVERAGED RATE)|m/s|7|0|12|m/s|7|4
+013016|precipitableWater|long|PRECIPITABLE WATER|kg m-2|0|0|7|kg m-2|0|3
+013019|totalPrecipitationPast1Hour|double|TOTAL PRECIPITATION PAST 1 HOUR|kg m-2|1|-1|14|kg m-2|1|4
+013020|totalPrecipitationPast3Hours|double|TOTAL PRECIPITATION PAST 3 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013021|totalPrecipitationPast6Hours|double|TOTAL PRECIPITATION PAST 6 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013022|totalPrecipitationPast12Hours|double|TOTAL PRECIPITATION PAST 12 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013023|totalPrecipitationPast24Hours|double|TOTAL PRECIPITATION PAST 24 HOURS|kg m-2|1|-1|14|kg m-2|1|5
+013031|evapotranspiration|long|EVAPOTRANSPIRATION|kg m-2|0|0|7|kg m-2|0|3
+013032|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|8|kg m-2|1|3
+013033|evaporation|double|EVAPORATION/EVAPOTRANSPIRATION|kg m-2|1|0|10|kg m-2|1|4
+013038|superadiabaticIndicator|table|SUPERADIABATIC INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+013039|terrainTypeIceOrSnow|table|TERRAIN TYPE (ICE/SNOW)|CODE TABLE|0|0|3|CODE TABLE|0|1
+013040|surfaceFlag|table|SURFACE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+013041|pasquillGiffordStabilityCategory|table|PASQUILL-GIFFORD STABILITY CATEGORY|CODE TABLE|0|0|4|CODE TABLE|0|2
+013042|parcelLiftedIndexTo500Hpa|long|PARCEL LIFTED INDEX (TO 500 HPA)|K|0|-20|6|K|0|2
+013043|bestLiftedIndexTo500Hpa|long|BEST LIFTED INDEX (TO 500 HPA)|K|0|-20|6|K|0|2
+013044|kIndex|long|K INDEX|K|0|-30|8|K|0|3
+013045|koIndex|long|KO INDEX|K|0|-30|8|K|0|3
+013046|maximumBuoyancy|long|MAXIMUM BUOYANCY|K|0|-30|8|K|0|3
+013047|modifiedShowalterStabilityIndex|long|MODIFIED SHOWALTER STABILITY INDEX|K|0|-60|6|C|0|2
+013048|waterFraction|double|WATER FRACTION|%|1|0|10|%|1|4
+013051|frequencyGroupPrecipitation|table|FREQUENCY GROUP, PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013052|highestDailyAmountOfPrecipitation|double|HIGHEST DAILY AMOUNT OF PRECIPITATION|kg m-2|1|-1|14|kg m-2|1|5
+013055|intensityOfPrecipitation|double|INTENSITY OF PRECIPITATION|kg m-2 s-1|4|0|8|mm/h|1|4
+013056|characterAndIntensityOfPrecipitation|table|CHARACTER AND INTENSITY OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013057|timeOfBeginningOrEndOfPrecipitation|table|TIME OF BEGINNING OR END OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+013058|sizeOfPrecipitatingElement|double|SIZE OF PRECIPITATING ELEMENT|m|4|0|7|mm|1|3
+013059|numberOfFlashesThunderstorm|long|NUMBER OF FLASHES (THUNDERSTORM)|Numeric|0|0|7|Numeric|0|3
+013060|totalAccumulatedPrecipitation|double|TOTAL ACCUMULATED PRECIPITATION|kg m-2|1|-1|17|kg m-2|1|5
+013071|upstreamWaterLevel|double|UPSTREAM WATER LEVEL|m|2|0|14|m|2|4
+013072|downstreamWaterLevel|double|DOWNSTREAM WATER LEVEL|m|2|0|14|m|2|4
+013073|maximumWaterLevel|double|MAXIMUM WATER LEVEL|m|2|0|14|m|2|4
+013074|groundWaterLevel|double|GROUND WATER LEVEL|m|2|0|18|m|2|6
+013080|waterPh|double|WATER PH|pH unit|1|0|10|pH unit|1|3
+013081|waterConductivity|double|WATER CONDUCTIVITY|S/m|3|0|14|S/m|3|4
+013082|waterTemperature|double|WATER TEMPERATURE|K|1|0|12|K|1|4
+013083|dissolvedOxygen|double|DISSOLVED OXYGEN|kg m-3|6|0|15|kg m-3|6|5
+013084|turbidity|long|TURBIDITY|lm|0|0|14|lm|0|4
+013085|oxidationReductionPotential|double|OXIDATION REDUCTION POTENTIAL (ORP)|V|3|0|14|V|3|4
+013090|radiometerWaterVapourContent|double|RADIOMETER WATER VAPOUR CONTENT|kg m-2|1|0|10|kg m-2|1|4
+013091|radiometerLiquidContent|double|RADIOMETER LIQUID CONTENT|kg m-2|2|0|8|kg m-2|2|3
+013093|cloudOpticalThickness|long|CLOUD OPTICAL THICKNESS|Numeric|0|0|8|Numeric|0|3
+013095|totalColumnWaterVapour|double|TOTAL COLUMN WATER VAPOUR|kg m-2|4|0|19|kg m-2|4|6
+013096|mwrWaterVapourContent|double|MWR WATER VAPOUR CONTENT|kg m-2|2|0|14|kg m-2|2|5
+013097|mwrLiquidWaterContent|double|MWR LIQUID WATER CONTENT|kg m-2|2|0|14|kg m-2|2|5
+013098|integratedWaterVapourDensity|double|INTEGRATED WATER VAPOUR DENSITY|kg m-2|8|0|30|kg m-2|8|10
+013099|log10OfIntegratedCloudParticleDensity|double|LOG10 OF INTEGRATED CLOUD PARTICLE DENSITY|log (m-2)|1|0|7|log (m-2)|1|3
+013100|log10OfIntegratedCloudParticleArea|double|LOG10 OF INTEGRATED CLOUD PARTICLE AREA|log (m2 m-2)|1|-70|7|log (m2 m-2)|1|2
+013101|log10OfIntegratedCloudParticleVolume|double|LOG10 OF INTEGRATED CLOUD PARTICLE VOLUME|log (m3 m-2)|1|-140|7|log (m3 m-2)|1|3
+013110|massMixingRatio|long|MASS MIXING RATIO|%|0|0|7|%|0|3
+013111|soilMoisture|long|SOIL MOISTURE|g/kg|0|0|10|g/kg|0|4
+013112|objectWetnessDuration|long|OBJECT WETNESS DURATION|s|0|0|17|s|0|5
+013114|rateOfIceAccretion|double|RATE OF ICE ACCRETION|kg m-2 h-1|1|0|11|kg m-2 h-1|1|4
+013115|iceThickness|double|ICE THICKNESS|m|2|0|19|m|2|6
+013117|snowDensityLiquidWaterContent|long|SNOW DENSITY (LIQUID WATER CONTENT)|kg m-3|0|0|10|kg m-3|0|3
+013118|freshSnowDepth|double|DEPTH OF FRESH SNOW (HIGH ACCURACY)|m|3|-2|14|m|3|5
+013155|precipitationIntensityHighAccuracy|double|INTENSITY OF PRECIPITATION (HIGH ACCURACY)|kg m-2 s-1|5|-1|16|mm/h|2|5
+013160|radiometerLiquidContent|double|RADIOMETER LIQUID CONTENT|kg m-2|2|-350|10|kg m-2|2|3
+014001|longWaveRadiationIntegratedOver24Hours|long|LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-65536|17|J m-2|-3|5
+014002|longWaveRadiationIntegratedOverPeriodSpecified|long|LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-65536|17|J m-2|-3|5
+014003|shortWaveRadiationIntegratedOver24Hours|long|SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-65536|17|J m-2|-3|5
+014004|shortWaveRadiationIntegratedOverPeriodSpecified|long|SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-65536|17|J m-2|-3|5
+014011|netLongWaveRadiationIntegratedOver24Hours|long|NET LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-65536|17|J m-2|-3|5
+014012|netLongWaveRadiationIntegratedOverPeriodSpecified|long|NET LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-65536|17|J m-2|-3|5
+014013|netShortWaveRadiation24Hours|long|NET SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-3|-65536|17|J m-2|-3|5
+014014|netShortWaveRadiationIntegratedOverPeriodSpecified|long|NET SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|-65536|17|J m-2|-3|5
+014015|netRadiationIntegratedOver24Hours|long|NET RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|-16384|15|J m-2|-4|5
+014016|netRadiationIntegratedOverPeriodSpecified|long|NET RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|-16384|15|J m-2|-4|5
+014017|instantaneousLongWaveRadiation|long|INSTANTANEOUS LONG-WAVE RADIATION|W m-2|0|-512|10|W m-2|0|4
+014018|instantaneousShortWaveRadiation|long|INSTANTANEOUS SHORT-WAVE RADIATION|W m-2|0|-2048|12|W m-2|0|4
+014019|surfaceAlbedo|long|SURFACE ALBEDO|%|0|0|7|%|0|3
+014020|globalSolarRadiation24Hours|long|GLOBAL SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014021|globalSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014022|diffuseSolarRadiationIntegratedOver24Hours|long|DIFFUSE SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014023|diffuseSolarRadiationIntegratedOverPeriodSpecified|long|DIFFUSE SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014024|directSolarRadiationIntegratedOver24Hours|long|DIRECT SOLAR RADIATION, INTEGRATED OVER 24 HOURS|J m-2|-4|0|15|J m-2|-4|5
+014025|directSolarRadiationIntegratedOverPeriodSpecified|long|DIRECT SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-4|0|15|J m-2|-4|5
+014026|cloudTopAlbedo|long|ALBEDO AT THE TOP OF CLOUDS|%|0|0|7|%|0|3
+014027|albedo|long|ALBEDO|%|0|0|7|%|0|3
+014028|globalSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|0|20|J m-2|-2|6
+014029|diffuseSolarRadiationIntegratedOverPeriodSpecified|long|DIFFUSE SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|0|20|J m-2|-2|6
+014030|directSolarRadiationIntegratedOverPeriodSpecified|long|DIRECT SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|0|20|J m-2|-2|6
+014031|totalSunshine|long|TOTAL SUNSHINE|min|0|0|11|min|0|4
+014032|totalSunshine|long|TOTAL SUNSHINE|h|0|0|10|h|0|4
+014033|totalSunshine|long|TOTAL SUNSHINE|%|0|0|9|%|0|3
+014034|sunshineOverPeriodSpecified|long|SUNSHINE OVER PERIOD SPECIFIED|min|0|0|11|min|0|4
+014035|solarRadiationFlux|double|SOLAR RADIATION FLUX|W m-2|1|0|14|W m-2|1|5
+014042|bidirectionalReflectance|long|BIDIRECTIONAL REFLECTANCE|%|0|0|7|%|0|3
+014043|channelRadiance|double|CHANNEL RADIANCE|W m-2 sr-1 um-1|4|0|23|W m-2 sr-1 um-1|4|7
+014044|channelRadiance|double|CHANNEL RADIANCE|W m-2 sr-1 cm|7|-100000|22|W m-2 sr-1 cm|7|7
+014045|channelRadiance|long|CHANNEL RADIANCE|W m-2 sr-1 cm|0|0|11|W m-2 sr-1 cm|0|4
+014046|scaledIasiRadiance|long|SCALED IASI RADIANCE|W m-2 sr-1 m|0|-5000|16|W m-2 sr-1 m|0|5
+014047|scaledMeanAvhrrRadiance|long|SCALED MEAN AVHRR RADIANCE|W m-2 sr-1 m|0|0|31|W m-2 sr-1 m|0|10
+014048|scaledStandardDeviationAvhrrRadiance|long|SCALED STANDARD DEVIATION AVHRR RADIANCE|W m-2 sr-1 m|0|0|31|W m-2 sr-1 m|0|10
+014050|emissivity|double|EMISSIVITY|%|1|0|10|%|1|4
+014051|directSolarRadiationIntegratedOverLastHour|long|DIRECT SOLAR RADIATION INTEGRATED OVER LAST HOUR|J m-2|-3|0|14|J m-2|-3|4
+014052|globalUpwardSolarRadiationIntegratedOverPeriodSpecified|long|GLOBAL UPWARD SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|-1048574|20|J m-2|-2|7
+014053|netRadiationIntegratedOverPeriodSpecified|long|NET RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD SPECIFIED|J m-2|-2|-1048574|21|J m-2|-2|7
+014054|photosyntheticallyActiveRadiationIntegratedOverPeriodSpecified|long|PHOTOSYNTHETICALLY ACTIVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED|J m-2|-3|0|16|J m-2|-3|5
+014055|solarActivityIndex|long|SOLAR ACTIVITY INDEX|Numeric|0|-32768|16|Numeric|0|5
+014056|backgroundLuminance|long|BACKGROUND LUMINANCE|cd m-2|0|0|18|cd m-2|0|6
+014057|soilHeatFlux|long|SOIL HEAT FLUX|J m-2|-2|-1048574|21|J m-2|-2|7
+014072|globalUvIrradiation|long|GLOBAL UV IRRADIATION|J m-2|0|-4000000|23|J m-2|0|7
+015001|totalOzone|long|TOTAL OZONE|DU|0|0|10|DU|0|4
+015002|airMassSlantPathAt22Km|long|AIR MASS (SLANT PATH AT 22 KM)|Numeric|2|0|10|Numeric|2|3
+015003|measuredOzonePartialPressureSounding|double|MEASURED OZONE PARTIAL PRESSURE (SOUNDING)|Pa|4|0|9|nbar|0|3
+015004|ozoneSoundingCorrectionFactor|long|OZONE SOUNDING CORRECTION FACTOR (CF)|Numeric|3|0|11|Numeric|3|4
+015005|ozoneP|long|OZONE P|DU|0|0|10|DU|0|3
+015008|significandOfVolumetricMixingRatio|long|SIGNIFICAND OF VOLUMETRIC MIXING RATIO|Numeric|0|0|10|Numeric|0|4
+015011|log10IntegratedElectronDensity|double|LOG10 OF INTEGRATED ELECTRON DENSITY|log (m-2)|3|14000|13|log (m-2)|3|4
+015012|totalElectronCountPerSquareMetre|long|TOTAL ELECTRON COUNT PER SQUARE METRE|m-2|-16|0|6|m-2|-16|2
+015015|maxImageSpectralComponentBeforeNormalization|long|MAXIMUM IMAGE SPECTRAL COMPONENT BEFORE NORMALIZATION|Numeric|0|0|31|Numeric|0|10
+015020|integratedOzoneDensity|double|INTEGRATED OZONE DENSITY|kg m-2|8|0|21|kg m-2|8|7
+015021|integratedMassDensity|double|INTEGRATED MASS DENSITY|kg m-2|11|0|31|kg m-2|11|10
+015024|opticalDepth|long|OPTICAL DEPTH|Numeric|4|0|24|Numeric|4|8
+015025|pollutantType|table|TYPE OF POLLUTANT|CODE TABLE|0|0|4|CODE TABLE|0|2
+015026|moleFractionOfPollutant|double|CONCENTRATION OF POLLUTANT (MOL MOL-1)|mol/mol|9|0|9|mol/mol|9|3
+015027|massConcentrationOfPollutant|double|CONCENTRATION OF POLLUTANT (KG M-3)|kg m-3|9|0|10|kg m-3|9|4
+015029|extinctionCoefficient|double|EXTINCTION COEFFICIENT|/m|9|0|30|/m|9|10
+015030|aerosolContaminationIndex|long|AEROSOL CONTAMINATION INDEX|Numeric|2|-1000|12|Numeric|2|4
+015031|atmosphericPathDelayInSatelliteSignal|double|ATMOSPHERIC PATH DELAY IN SATELLITE SIGNAL|m|4|10000|15|m|4|5
+015032|estimatedErrorInAtmosphericPathDelay|double|ESTIMATED ERROR IN ATMOSPHERIC PATH DELAY|m|4|0|10|m|4|4
+015033|differenceInPathDelaysForLimbViewsAtExtremesOfScan|double|DIFFERENCE IN PATH DELAYS FOR LIMB VIEWS AT EXTREMES OF SCAN|m|5|-10000|15|m|5|5
+015034|estimatedErrorInPathDelayDifference|double|ESTIMATED ERROR IN PATH DELAY DIFFERENCE|m|5|0|14|m|5|5
+015035|componentOfZenithPathDelayDueToWaterVapour|double|COMPONENT OF ZENITH PATH DELAY DUE TO WATER VAPOUR|m|4|0|14|m|4|5
+015036|atmosphericRefractivity|double|ATMOSPHERIC REFRACTIVITY|N units|3|0|19|N units|3|6
+015037|bendingAngle|double|BENDING ANGLE|rad|8|-100000|23|rad|8|7
+015041|sulphurDioxideIndex|long|SULPHUR DIOXIDE INDEX|Numeric|2|-1200|14|Numeric|2|4
+015042|reflectance|double|REFLECTANCE|%|2|0|14|%|2|5
+015045|sulphurDioxide|double|SULPHUR DIOXIDE|DU|2|-2000|15|DU|2|5
+015046|volcanoContaminationIndex|long|VOLCANO CONTAMINATION INDEX|Numeric|2|-1000|11|Numeric|2|4
+015049|aerosolAngstromWavelengthExponent|long|AEROSOL ANGSTROM WAVELENGTH EXPONENT|Numeric|3|-2000|14|Numeric|3|5
+015051|meteorologicalOpticalRange|long|METEOROLOGICAL OPTICAL RANGE|m|0|0|18|m|0|6
+015052|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan5Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 5 NM|log (m-3)|1|60|6|log (m-3)|1|3
+015053|log10OfNumberDensityOfAerosolParticlesWithDiameterGreaterThan14Nm|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREATER THAN 14 NM|log (m-3)|2|600|9|log (m-3)|2|4
+015054|log10OfNumberDensityOfAerosolParticlesWithDiameterBetween025And25M|double|LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWEEN 0.25 AND 2.5 µM|log (m-3)|2|550|9|log (m-3)|2|4
+015055|nonVolatileAerosolRatio|long|NON VOLATILE AEROSOL RATIO|Numeric|2|0|7|Numeric|2|3
+015062|aerosolOpticalThickness|long|AEROSOL OPTICAL THICKNESS|Numeric|3|-1000|14|Numeric|3|5
+019001|synopticFeatureType|table|TYPE OF SYNOPTIC FEATURE|CODE TABLE|0|0|6|CODE TABLE|0|2
+019002|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-2|0|12|m|-2|4
+019003|windSpeedThreshold|long|WIND SPEED THRESHOLD|m/s|0|0|8|m/s|0|3
+019004|effectiveRadiusWithRespectToWindSpeedsAboveThreshold|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD|m|-2|0|12|m|-2|4
+019005|featureDirectionOfMotion|long|DIRECTION OF MOTION OF FEATURE|deg|0|0|9|deg|0|3
+019006|speedOfMotionOfFeature|double|SPEED OF MOTION OF FEATURE|m/s|2|0|14|m/s|2|5
+019007|effectiveRadiusOfFeature|long|EFFECTIVE RADIUS OF FEATURE|m|-3|0|12|m|-3|4
+019008|verticalExtentOfCirculation|table|VERTICAL EXTENT OF CIRCULATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+019009|effectiveRadiusWithRespectToWindSpeedsAboveThresholdLargeStorms|long|EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD (LARGE STORMS)|m|-3|0|12|m|-3|4
+019010|methodForTrackingCentreOfSynopticFeature|table|METHOD FOR TRACKING THE CENTRE OF SYNOPTIC FEATURE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019100|timeIntervalToCalculateMovementOfTropicalCyclone|table|TIME INTERVAL TO CALCULATE THE MOVEMENT OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019101|accuracyOfPositionOfCentreOfTropicalCyclone|table|ACCURACY OF THE POSITION OF THE CENTRE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019102|shapeAndDefinitionOfEyeOfTropicalCyclone|table|SHAPE AND DEFINITION OF THE EYE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|3|CODE TABLE|0|1
+019103|diameterOfMajorAxisOfEyeOfTropicalCyclone|table|DIAMETER OF MAJOR AXIS OF THE EYE OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019104|changeInCharacterOfEyeDuring30Minutes|table|CHANGE IN CHARACTER OF THE EYE DURING THE 30 MINUTES|CODE TABLE|0|0|4|CODE TABLE|0|2
+019105|distanceBetweenEndOfSpiralBandAndCentre|table|DISTANCE BETWEEN THE END OF SPIRAL BAND AND THE CENTRE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019106|identificationNumberOfTropicalCyclone|long|IDENTIFICATION NUMBER OF TROPICAL CYCLONE|Numeric|0|0|7|Numeric|0|3
+019107|timeIntervalOverWhichMovementOfTropicalCycloneHasBeenCalculated|table|TIME INTERVAL OVER WHICH THE MOVEMENT OF THE TROPICAL CYCLONE HAS BEEN CALCULATED|CODE TABLE|0|0|4|CODE TABLE|0|2
+019108|accuracyOfGeographicalPositionOfTropicalCyclone|table|ACCURACY OF GEOGRAPHICAL POSITION OF THE TROPICAL CYCLONE|CODE TABLE|0|0|3|CODE TABLE|0|1
+019109|meanDiameterOfOvercastCloudOfTropicalCyclone|table|MEAN DIAMETER OF THE OVERCAST CLOUD OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019110|apparent24HourChangeInIntensityOfTropicalCyclone|table|APPARENT 24-HOUR CHANGE IN INTENSITY OF THE TROPICAL CYCLONE|CODE TABLE|0|0|4|CODE TABLE|0|2
+019111|currentIntensityNumberOfTropicalCyclone|long|CURRENT INTENSITY (CI) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019112|dataTropicalNumberOfTropicalCyclone|long|DATA TROPICAL (DT) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019113|cloudPatternTypeOfDtNumber|table|CLOUD PATTERN TYPE OF THE DT-NUMBER|CODE TABLE|0|0|4|CODE TABLE|0|2
+019114|modelExpectedTropicalNumberOfTropicalCyclone|long|MODEL EXPECTED TROPICAL (MET) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019115|trendOfPast24HourChangeDevelopedWeakened|long|TREND OF THE PAST 24-HOUR CHANGE (+: DEVELOPED, -: WEAKENED)|Numeric|1|-30|6|Numeric|1|2
+019116|patternTropicalNumberOfTropicalCyclone|long|PATTERN TROPICAL (PT) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019117|cloudPictureTypeOfPtNumber|table|CLOUD PICTURE TYPE OF THE PT-NUMBER|CODE TABLE|0|0|3|CODE TABLE|0|1
+019118|finalTropicalNumberOfTropicalCyclone|long|FINAL TROPICAL (T) NUMBER OF THE TROPICAL CYCLONE|Numeric|1|0|7|Numeric|1|3
+019119|finalTNumberType|table|TYPE OF THE FINAL T-NUMBER|CODE TABLE|0|0|3|CODE TABLE|0|1
+019150|typhoonInternationalCommonNumberTyphoonCommittee|string|TYPHOON INTERNATIONAL COMMON NUMBER (TYPHOON COMMITTEE)|CCITT IA5|0|0|32|Character|0|4
+020001|horizontalVisibility|long|HORIZONTAL VISIBILITY|m|-1|0|13|m|-1|4
+020002|verticalVisibility|long|VERTICAL VISIBILITY|m|-1|0|7|m|-1|3
+020003|presentWeather|table|PRESENT WEATHER|CODE TABLE|0|0|9|CODE TABLE|0|3
+020004|pastWeather1|table|PAST WEATHER (1)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020005|pastWeather2|table|PAST WEATHER (2)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020006|flightRules|table|FLIGHT RULES|CODE TABLE|0|0|3|CODE TABLE|0|1
+020008|cloudDistributionForAviation|table|CLOUD DISTRIBUTION FOR AVIATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020009|generalWeatherIndicatorTafOrMetar|table|GENERAL WEATHER INDICATOR (TAF/METAR)|CODE TABLE|0|0|4|CODE TABLE|0|2
+020010|cloudCoverTotal|long|CLOUD COVER (TOTAL)|%|0|0|7|%|0|3
+020011|cloudAmount|table|CLOUD AMOUNT|CODE TABLE|0|0|4|CODE TABLE|0|2
+020012|cloudType|table|CLOUD TYPE|CODE TABLE|0|0|6|CODE TABLE|0|2
+020013|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|m|-1|-40|11|m|-1|4
+020014|heightOfTopOfCloud|long|HEIGHT OF TOP OF CLOUD|m|-1|-40|11|m|-1|4
+020015|pressureAtBaseOfCloud|long|PRESSURE AT BASE OF CLOUD|Pa|-1|0|14|Pa|-1|5
+020016|pressureAtTopOfCloud|long|PRESSURE AT TOP OF CLOUD|Pa|-1|0|14|Pa|-1|5
+020017|cloudTopDescription|table|CLOUD TOP DESCRIPTION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020018|tendencyOfRunwayVisualRange|table|TENDENCY OF RUNWAY VISUAL RANGE|CODE TABLE|0|0|2|CODE TABLE|0|1
+020019|significantWeather|string|SIGNIFICANT PRESENT OR FORECAST WEATHER|CCITT IA5|0|0|72|Character|0|9
+020020|significantRecentWeatherPhenomena|string|SIGNIFICANT RECENT WEATHER PHENOMENA|CCITT IA5|0|0|32|Character|0|4
+020021|precipitationType|flag|TYPE OF PRECIPITATION|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+020022|characterOfPrecipitation|table|CHARACTER OF PRECIPITATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020023|otherWeatherPhenomena|flag|OTHER WEATHER PHENOMENA|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+020024|intensityOfPhenomena|table|INTENSITY OF PHENOMENA|CODE TABLE|0|0|3|CODE TABLE|0|1
+020025|obscuration|flag|OBSCURATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+020026|characterOfObscuration|table|CHARACTER OF OBSCURATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020027|phenomenaOccurrence|flag|PHENOMENA OCCURRENCE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+020028|expectedChangeInIntensity|table|EXPECTED CHANGE IN INTENSITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+020029|rainFlag|table|RAIN FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+020031|iceDepositThickness|double|ICE DEPOSIT (THICKNESS)|m|2|0|7|m|2|3
+020032|rateOfIceAccretionEstimated|table|RATE OF ICE ACCRETION (ESTIMATED)|CODE TABLE|0|0|3|CODE TABLE|0|1
+020033|causeOfIceAccretion|flag|CAUSE OF ICE ACCRETION|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+020034|seaIceConcentration|table|SEA ICE CONCENTRATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020035|amountAndTypeOfIce|table|AMOUNT AND TYPE OF ICE|CODE TABLE|0|0|4|CODE TABLE|0|2
+020036|iceSituation|table|ICE SITUATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+020037|iceDevelopment|table|ICE DEVELOPMENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+020038|iceEdgeBearing|long|BEARING OF ICE EDGE|deg|0|0|12|deg|0|3
+020039|iceDistance|long|ICE DISTANCE|m|-1|0|13|m|-1|4
+020040|evolutionOfDriftSnow|table|EVOLUTION OF DRIFT SNOW|CODE TABLE|0|0|4|CODE TABLE|0|2
+020041|airframeIcing|table|AIRFRAME ICING|CODE TABLE|0|0|4|CODE TABLE|0|2
+020042|airframeIcingPresent|table|AIRFRAME ICING PRESENT|CODE TABLE|0|0|2|CODE TABLE|0|1
+020043|peakLiquidWaterContent|double|PEAK LIQUID WATER CONTENT|kg m-3|4|0|7|kg m-3|4|2
+020044|averageLiquidWaterContent|double|AVERAGE LIQUID WATER CONTENT|kg m-3|4|0|7|kg m-3|4|2
+020045|supercooledLargeDropletConditions|table|SUPERCOOLED LARGE DROPLET (SLD) CONDITIONS|CODE TABLE|0|0|2|CODE TABLE|0|1
+020048|evolutionOfFeature|table|EVOLUTION OF FEATURE|CODE TABLE|0|0|4|CODE TABLE|0|2
+020050|cloudIndex|table|CLOUD INDEX|CODE TABLE|0|0|8|CODE TABLE|0|3
+020051|amountOfLowClouds|long|AMOUNT OF LOW CLOUDS|%|0|0|7|%|0|3
+020052|amountOfMiddleClouds|long|AMOUNT OF MIDDLE CLOUDS|%|0|0|7|%|0|3
+020053|amountOfHighClouds|long|AMOUNT OF HIGH CLOUDS|%|0|0|7|%|0|3
+020054|trueDirectionFromWhichAPhenomenonOrCloudsAreMovingOrInWhichTheyAreObserved|long|TRUE DIRECTION FROM WHICH A PHENOMENON OR CLOUDS ARE MOVING OR IN WHICH THEY ARE OBSERVED|deg|0|0|9|deg|0|3
+020055|stateOfSkyInTropics|table|STATE OF SKY IN THE TROPICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020056|cloudPhase|table|CLOUD PHASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+020058|visibilitySeawardsFromACoastalStation|long|VISIBILITY SEAWARDS FROM A COASTAL STATION|m|-1|0|13|m|-1|4
+020059|minimumHorizontalVisibility|long|MINIMUM HORIZONTAL VISIBILITY|m|-1|0|9|m|-1|3
+020060|prevailingHorizontalVisibility|long|PREVAILING HORIZONTAL VISIBILITY|m|-1|0|10|m|-1|4
+020061|runwayVisualRangeRvr|long|RUNWAY VISUAL RANGE (RVR)|m|0|0|12|m|0|4
+020062|stateOfGround|table|STATE OF THE GROUND (WITH OR WITHOUT SNOW)|CODE TABLE|0|0|5|CODE TABLE|0|2
+020063|specialPhenomena|table|SPECIAL PHENOMENA|CODE TABLE|0|0|10|CODE TABLE|0|4
+020065|snowCover|long|SNOW COVER|%|0|0|7|%|0|3
+020066|maximumDiameterOfHailstones|double|MAXIMUM DIAMETER OF HAILSTONES|m|3|0|8|m|3|3
+020067|diameterOfDeposit|double|DIAMETER OF DEPOSIT|m|3|0|9|m|3|3
+020070|minimumNumberOfAtmospherics|long|MINIMUM NUMBER OF ATMOSPHERICS|Numeric|0|0|7|Numeric|0|3
+020071|accuracyOfFixAndRateOfAtmospherics|table|ACCURACY OF FIX AND RATE OF ATMOSPHERICS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020081|cloudAmountInSegment|long|CLOUD AMOUNT IN SEGMENT|%|0|0|7|%|0|3
+020082|amountSegmentCloudFree|long|AMOUNT SEGMENT CLOUD FREE|%|0|0|7|%|0|3
+020083|amountOfSegmentCoveredByScene|long|AMOUNT OF SEGMENT COVERED BY SCENE|%|0|0|7|%|0|3
+020085|generalConditionOfRunway|table|GENERAL CONDITION OF RUNWAY|CODE TABLE|0|0|4|CODE TABLE|0|1
+020086|runwayDeposits|table|RUNWAY DEPOSITS|CODE TABLE|0|0|4|CODE TABLE|0|1
+020087|runwayContamination|table|RUNWAY CONTAMINATION|CODE TABLE|0|0|4|CODE TABLE|0|1
+020088|depthOfRunwayDeposits|double|DEPTH OF RUNWAY DEPOSITS|m|3|0|12|m|0|4
+020089|runwayFrictionCoefficient|table|RUNWAY FRICTION COEFFICIENT|CODE TABLE|0|0|7|CODE TABLE|0|2
+020090|specialClouds|table|SPECIAL CLOUDS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020091|verticalVisibility|long|VERTICAL VISIBILITY|ft|-2|0|10|ft|-2|3
+020092|heightOfBaseOfCloud|long|HEIGHT OF BASE OF CLOUD|ft|-2|0|10|ft|-2|3
+020093|heightOfInversion|long|HEIGHT OF INVERSION|m|-1|0|8|m|-1|3
+020095|iceProbability|long|ICE PROBABILITY|Numeric|3|0|10|Numeric|3|4
+020096|iceAgeAParameter|double|ICE AGE (A PARAMETER)|dB|2|-4096|13|dB|2|4
+020101|locustAcridianName|table|LOCUST (ACRIDIAN) NAME|CODE TABLE|0|0|4|CODE TABLE|0|2
+020102|locustMaturityColour|table|LOCUST (MATURITY) COLOUR|CODE TABLE|0|0|4|CODE TABLE|0|2
+020103|stageOfDevelopmentOfLocusts|table|STAGE OF DEVELOPMENT OF LOCUSTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020104|organizationStateOfSwarm|table|ORGANIZATION STATE OF SWARM OR BAND OF LOCUSTS|CODE TABLE|0|0|4|CODE TABLE|0|2
+020105|sizeOfSwarmOrBandOfLocustsAndDurationOfPassageOfSwarm|table|SIZE OF SWARM OR BAND OF LOCUSTS AND DURATION OF PASSAGE OF SWARM|CODE TABLE|0|0|4|CODE TABLE|0|2
+020106|locustPopulationDensity|table|LOCUST POPULATION DENSITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+020107|directionOfMovementsOfLocustSwarm|table|DIRECTION OF MOVEMENTS OF LOCUST SWARM|CODE TABLE|0|0|4|CODE TABLE|0|2
+020108|extentOfVegetation|table|EXTENT OF VEGETATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+020111|xAxisErrorEllipseMajorComponent|long|X-AXIS ERROR ELLIPSE MAJOR COMPONENT|m|-1|0|17|m|-1|6
+020112|yAxisErrorEllipseMinorComponent|long|Y-AXIS ERROR ELLIPSE MINOR COMPONENT|m|-1|0|17|m|-1|6
+020113|zAxisErrorEllipseComponent|long|Z-AXIS ERROR ELLIPSE COMPONENT|m|-1|0|17|m|-1|6
+020114|angleOfXAxisInErrorEllipse|double|ANGLE OF X-AXIS IN ERROR ELLIPSE|deg|2|-18000|16|deg|2|5
+020115|angleOfZAxisInErrorEllipse|double|ANGLE OF Z-AXIS IN ERROR ELLIPSE|deg|2|-18000|16|deg|2|5
+020116|emissionHeightOfCloudStroke|long|EMISSION HEIGHT OF CLOUD STROKE|m|0|0|16|m|0|5
+020117|amplitudeOfLightningStrike|long|AMPLITUDE OF LIGHTNING STRIKE|A|-1|-32000|16|A|-1|5
+020118|lightningDetectionError|long|LIGHTNING DETECTION ERROR|m|0|0|19|m|0|6
+020119|lightningDischargePolarity|table|LIGHTNING DISCHARGE POLARITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+020121|thresholdValueForPolarityDecision|double|THRESHOLD VALUE FOR POLARITY DECISION|V|3|0|16|V|3|5
+020122|thresholdValueForPolarityDecision|long|THRESHOLD VALUE FOR POLARITY DECISION|A|0|0|16|A|0|5
+020123|minimumDirectionThreshold|double|MINIMUM THRESHOLD FOR DETECTION|V/m|3|0|16|V/m|3|5
+020124|lightningStrokeOrFlash|table|LIGHTNING STROKE OR FLASH|CODE TABLE|0|0|2|CODE TABLE|0|1
+020126|lightningRateOfDischarge|long|LIGHTNING RATE OF DISCHARGE|/h|0|0|23|/h|0|7
+020127|lightningDistanceFromStation|long|LIGHTNING - DISTANCE FROM STATION|m|-3|0|8|m|-3|3
+020128|lightningDirectionFromStation|double|LIGHTNING - DIRECTION FROM STATION|deg|1|0|12|deg|1|4
+020130|cloudHydrometeorConcentration|long|CLOUD HYDROMETEOR CONCENTRATION|Numeric|0|0|10|Numeric|0|3
+020131|effectiveRadiusOfCloudHydrometeors|double|EFFECTIVE RADIUS OF CLOUD HYDROMETEORS|m|5|0|6|m|5|2
+020132|cloudLiquidWaterContent|double|CLOUD LIQUID WATER CONTENT|kg m-3|5|0|11|kg m-3|5|4
+020133|hydrometeorRadius|double|HYDROMETEOR RADIUS|m|5|0|6|m|5|2
+020135|iceMassOnARod|double|ICE MASS (ON A ROD)|kg/m|1|0|10|kg/m|1|3
+020136|supplementaryCloudType|table|SUPPLEMENTARY CLOUD TYPE|CODE TABLE|0|0|9|CODE TABLE|0|3
+020137|evolutionOfClouds|table|EVOLUTION OF CLOUDS|CODE TABLE|0|0|4|CODE TABLE|0|2
+021001|horizontalReflectivity|long|HORIZONTAL REFLECTIVITY|dB|0|-64|7|dB|0|3
+021002|verticalReflectivity|long|VERTICAL REFLECTIVITY|dB|0|-64|7|dB|0|3
+021003|differentialReflectivity|double|DIFFERENTIAL REFLECTIVITY|dB|1|-5|7|dB|1|3
+021005|linearDepolarizationRatio|long|LINEAR DEPOLARIZATION RATIO|dB|0|-65|6|dB|0|2
+021006|circularDepolarizationRatio|long|CIRCULAR DEPOLARIZATION RATIO|dB|0|-65|6|dB|0|2
+021011|dopplerMeanVelocityXDirection|long|DOPPLER MEAN VELOCITY IN X-DIRECTION|m/s|0|-128|8|m/s|0|3
+021012|dopplerMeanVelocityYDirection|long|DOPPLER MEAN VELOCITY IN Y-DIRECTION|m/s|0|-128|8|m/s|0|3
+021013|dopplerMeanVelocityZDirection|long|DOPPLER MEAN VELOCITY IN Z-DIRECTION|m/s|0|-128|8|m/s|0|3
+021014|dopplerMeanVelocityRadial|double|DOPPLER MEAN VELOCITY (RADIAL)|m/s|1|-4096|13|m/s|1|4
+021017|dopplerVelocitySpectralWidth|double|DOPPLER VELOCITY SPECTRAL WIDTH|m/s|1|0|8|m/s|1|3
+021018|extendedNyquistVelocity|double|EXTENDED NYQUIST VELOCITY|m/s|1|0|10|m/s|1|4
+021019|highNyquistVelocity|double|HIGH NYQUIST VELOCITY|m/s|1|0|10|m/s|1|3
+021021|echoTops|long|ECHO TOPS|m|-3|0|4|m|-3|2
+021022|rangeBinOffset|double|RANGE BIN OFFSET|m|1|0|14|m|1|5
+021023|rangeBinSize|long|RANGE BIN SIZE|m|0|0|14|m|0|5
+021024|azimuthOffset|double|AZIMUTH OFFSET|deg|1|0|12|deg|1|4
+021025|azimuthalResolution|double|AZIMUTHAL RESOLUTION|deg|1|0|8|deg|1|3
+021030|signalToNoiseRatio|long|SIGNAL TO NOISE RATIO|dB|0|-32|8|dB|0|3
+021031|verticallyIntegratedLiquidWaterContent|long|VERTICALLY INTEGRATED LIQUID-WATER CONTENT|kg m-2|0|0|7|kg m-2|0|3
+021036|radarRainfallIntensity|double|RADAR RAINFALL INTENSITY|m/s|7|0|12|m/s|7|4
+021041|brightBandHeight|long|BRIGHT-BAND HEIGHT|m|-2|0|8|m|-2|3
+021051|signalPowerAbove1Mw|long|SIGNAL POWER ABOVE 1 MW|dB|0|-256|8|dB|0|3
+021062|backscatter|double|BACKSCATTER|dB|2|-5000|13|dB|2|4
+021063|radiometricResolutionNoiseValue|double|RADIOMETRIC RESOLUTION (NOISE VALUE)|%|1|0|10|%|1|4
+021064|clutterNoiseEstimate|long|CLUTTER NOISE ESTIMATE|Numeric|0|0|8|Numeric|0|3
+021065|missingPacketCounter|long|MISSING PACKET COUNTER|Numeric|0|-127|8|Numeric|0|3
+021066|waveScatterometerProductConfidenceData|flag|WAVE SCATTEROMETER PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+021067|windProductConfidenceData|flag|WIND PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|13|FLAG TABLE|0|5
+021068|radarAltimeterProductConfidenceData|flag|RADAR ALTIMETER PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+021069|sstProductConfidenceData|flag|SST PRODUCT CONFIDENCE DATA|FLAG TABLE|0|0|10|FLAG TABLE|0|4
+021070|sstProductConfidenceDataSadist2|flag|SST PRODUCT CONFIDENCE DATA (SADIST-2)|FLAG TABLE|0|0|23|FLAG TABLE|0|6
+021071|peakiness|long|PEAKINESS|Numeric|0|0|16|Numeric|0|5
+021072|satelliteAltimeterCalibrationStatus|flag|SATELLITE ALTIMETER CALIBRATION STATUS|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+021073|satelliteAltimeterInstrumentMode|flag|SATELLITE ALTIMETER INSTRUMENT MODE|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+021075|imageSpectrumIntensity|long|IMAGE SPECTRUM INTENSITY|Numeric|0|0|8|Numeric|0|3
+021076|representationOfIntensities|table|REPRESENTATION OF INTENSITIES|CODE TABLE|0|0|3|CODE TABLE|0|1
+021077|altitudeCorrectionIonosphere|double|ALTITUDE CORRECTION (IONOSPHERE)|m|3|0|14|m|3|5
+021078|altitudeCorrectionDryTroposphere|double|ALTITUDE CORRECTION (DRY TROPOSPHERE)|m|3|0|9|m|3|3
+021079|altitudeCorrectionWetTroposphere|double|ALTITUDE CORRECTION (WET TROPOSPHERE)|m|3|2000|10|m|3|4
+021080|altitudeCorrectionCalibrationConstant|double|ALTITUDE CORRECTION (CALIBRATION CONSTANT)|m|3|0|11|m|3|4
+021081|openLoopCorrectionHeightTimeLoop|double|OPEN LOOP CORRECTION (HEIGHT-TIME LOOP)|m|3|0|10|m|3|4
+021082|openLoopCorrectionAutoGainControl|double|OPEN LOOP CORRECTION (AUTO GAIN CONTROL)|dB|3|-3000|14|dB|3|5
+021083|warmTargetCalibration|long|WARM TARGET CALIBRATION|Numeric|0|0|16|Numeric|0|5
+021084|coldTargetCalibration|long|COLD TARGET CALIBRATION|Numeric|0|0|16|Numeric|0|5
+021085|atsrSeaSurfaceTemperatureAcrossTrackBandNumber|long|ATSR SEA-SURFACE TEMPERATURE ACROSS-TRACK BAND NUMBER|Numeric|0|0|4|Numeric|0|2
+021086|numberOfPixelsInNadirOnlyAverage|long|NUMBER OF PIXELS IN NADIR ONLY, AVERAGE|Numeric|0|0|9|Numeric|0|3
+021087|numberOfPixelsInDualViewAverage|long|NUMBER OF PIXELS IN DUAL VIEW, AVERAGE|Numeric|0|0|9|Numeric|0|3
+021088|wetBackscatter|double|WET BACKSCATTER|dB|2|-5000|13|dB|2|4
+021091|radarSignalDopplerSpectrum0thMoment|long|RADAR SIGNAL DOPPLER SPECTRUM 0TH MOMENT|dB|0|-100|8|dB|0|3
+021092|rassSignalDopplerSpectrum0thMomentReferringToRassSignal|long|RASS SIGNAL DOPPLER SPECTRUM 0TH MOMENT, REFERRING TO RASS SIGNAL|dB|0|-100|8|dB|0|3
+021093|kuBandPeakiness|long|KU BAND PEAKINESS|Numeric|3|0|16|Numeric|3|5
+021094|sBandPeakiness|long|S BAND PEAKINESS|Numeric|3|0|16|Numeric|3|5
+021101|numberOfVectorAmbiguities|long|NUMBER OF VECTOR AMBIGUITIES|Numeric|0|0|3|Numeric|0|1
+021102|indexOfSelectedWindVector|long|INDEX OF SELECTED WIND VECTOR|Numeric|0|0|3|Numeric|0|1
+021103|totalNumberOfSigma0Measurements|long|TOTAL NUMBER OF SIGMA-0 MEASUREMENTS|Numeric|0|0|5|Numeric|0|2
+021104|likelihoodComputedForSolution|long|LIKELIHOOD COMPUTED FOR SOLUTION|Numeric|3|-30000|15|Numeric|3|5
+021105|normalizedRadarCrossSection|double|NORMALIZED RADAR CROSS-SECTION|dB|2|-10000|14|dB|2|5
+021106|kpVarianceCoefficientAlpha|long|KP VARIANCE COEFFICIENT (ALPHA)|Numeric|3|0|14|Numeric|3|5
+021107|kpVarianceCoefficientBeta|long|KP VARIANCE COEFFICIENT (BETA)|Numeric|8|0|16|Numeric|8|5
+021109|seawindsWindVectorCellQuality|flag|SEAWINDS WIND VECTOR CELL QUALITY|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021110|numberOfInnerBeamSigma0ForwardOfSatellite|long|NUMBER OF INNER-BEAM SIGMA-0 (FORWARD OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021111|numberOfOuterBeamSigma0ForwardOfSatellite|long|NUMBER OF OUTER-BEAM SIGMA-0 (FORWARD OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021112|numberOfInnerBeamSigma0AftOfSatellite|long|NUMBER OF INNER-BEAM SIGMA-0 (AFT OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021113|numberOfOuterBeamSigma0AftOfSatellite|long|NUMBER OF OUTER-BEAM SIGMA-0 (AFT OF SATELLITE)|Numeric|0|0|6|Numeric|0|2
+021114|kpVarianceCoefficientGamma|double|KP VARIANCE COEFFICIENT (GAMMA)|dB|3|-140000|18|dB|3|6
+021115|seawindsSigma0Quality|flag|SEAWINDS SIGMA-0 QUALITY|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021116|seawindsSigma0Mode|flag|SEAWINDS SIGMA-0 MODE|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+021117|sigma0VarianceQualityControl|long|SIGMA-0 VARIANCE QUALITY CONTROL|Numeric|2|0|16|Numeric|2|5
+021118|attenuationCorrectionOnSigma0|double|ATTENUATION CORRECTION ON SIGMA-0|dB|2|-10000|14|dB|2|5
+021119|windScatterometerGeophysicalModelFunction|table|WIND SCATTEROMETER GEOPHYSICAL MODEL FUNCTION|CODE TABLE|0|0|6|CODE TABLE|0|2
+021120|probabilityOfRain|long|PROBABILITY OF RAIN|Numeric|3|0|10|Numeric|3|4
+021121|seawindsNofRainIndex|long|SEAWINDS NOF* RAIN INDEX|Numeric|0|0|8|Numeric|0|3
+021122|attenuationCorrectionOnSigma0FromTb|double|ATTENUATION CORRECTION ON SIGMA-0 (FROM TB)|dB|2|-10000|14|dB|2|5
+021123|seawindsNormalizedRadarCrossSection|double|SEAWINDS NORMALIZED RADAR CROSS-SECTION|dB|2|-30000|15|dB|2|5
+021128|numberOfValidPointsPerSecondUsedToDerivePreviousParameters|long|NUMBER OF VALID POINTS PER SECOND USED TO DERIVE PREVIOUS PARAMETERS|Numeric|0|0|8|Numeric|0|3
+021130|spectrumTotalEnergy|long|SPECTRUM TOTAL ENERGY|Numeric|6|0|28|Numeric|6|9
+021131|spectrumMaxEnergy|long|SPECTRUM MAX ENERGY|Numeric|6|0|28|Numeric|6|9
+021132|directionOfSpectrumMaxOnHigherResolutionGrid|double|DIRECTION OF SPECTRUM MAX ON HIGHER RESOLUTION GRID|deg|3|0|19|deg|3|6
+021133|wavelengthOfSpectrumMaxOnHigherResolutionGrid|double|WAVELENGTH OF SPECTRUM MAX ON HIGHER RESOLUTION GRID|m|3|0|29|m|3|9
+021134|rangeResolutionOfCressCovarianceSpectrum|double|RANGE RESOLUTION OF CRESS COVARIANCE SPECTRUM|rad/m|3|0|19|rad/m|3|6
+021135|realPartOfCrossSpectraPolarGridNumberOfBins|long|REAL PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS|Numeric|3|-524288|20|Numeric|3|7
+021136|imaginaryPartOfCrossSpectraPolarGridNumberOfBins|long|IMAGINARY PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS|Numeric|3|-524288|20|Numeric|3|7
+021137|kuBandCorrectedOceanBackscatterCoefficient|double|KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021138|stdKuBandCorrectedOceanBackscatterCoefficient|double|STD KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021139|kuBandNetInstrumentalCorrectionForAgc|double|KU BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|dB|2|4
+021140|sBandCorrectedOceanBackscatterCoefficient|double|S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021141|stdSBandCorrectedOceanBackscatterCoefficient|double|STD S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021142|sBandNetInstrumentalCorrectionForAgc|double|S BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-1024|11|dB|2|4
+021143|kuBandRainAttenuation|double|KU BAND RAIN ATTENUATION|dB|2|-1073741824|31|dB|2|10
+021144|altimeterRainFlag|flag|ALTIMETER RAIN FLAG|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+021145|kuBandAutomaticGainControl|double|KU BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|dB|2|4
+021146|rmsKuBandAutomaticGainControl|double|RMS KU BAND AUTOMATIC GAIN CONTROL|dB|2|0|8|dB|2|3
+021147|numberOfValidPointsForKuBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR KU BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|5|Numeric|0|2
+021148|trailingEdgeVariationFlag|flag|TRAILING EDGE VARIATION FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+021150|beamCollocation|table|BEAM COLLOCATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+021151|estimatedErrorInSigma0At40DegreesIncidenceAngle|double|ESTIMATED ERROR IN SIGMA-0 AT 40 DEGREES INCIDENCE ANGLE|dB|2|0|9|dB|2|3
+021152|slopeAt40DegreesIncidenceAngle|double|SLOPE AT 40 DEGREES INCIDENCE ANGLE|dB/deg|2|-80|7|dB/deg|2|2
+021153|estimatedErrorInSlopeAt40DegreesIncidenceAngle|double|ESTIMATED ERROR IN SLOPE AT 40 DEGREES INCIDENCE ANGLE|dB/deg|2|-40|6|dB/deg|2|2
+021154|soilMoistureSensitivity|double|SOIL MOISTURE SENSITIVITY|dB|2|0|12|dB|2|4
+021155|windVectorCellQuality|flag|WIND VECTOR CELL QUALITY|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+021156|backscatterDistance|long|BACKSCATTER DISTANCE|Numeric|1|-4096|13|Numeric|1|4
+021157|lossPerUnitLengthOfAtmosphere|double|LOSS PER UNIT LENGTH OF ATMOSPHERE USED|dB/m|10|0|22|dB/m|10|7
+021158|ascatKpEstimateQuality|table|ASCAT KP ESTIMATE QUALITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+021159|ascatSigma0Usability|table|ASCAT SIGMA-0 USABILITY|CODE TABLE|0|0|2|CODE TABLE|0|1
+021160|ascatUseOfSyntheticData|long|ASCAT USE OF SYNTHETIC DATA|Numeric|3|0|10|Numeric|3|4
+021161|ascatSyntheticDataQuantity|long|ASCAT SYNTHETIC DATA QUANTITY|Numeric|3|0|10|Numeric|3|4
+021162|ascatSatelliteOrbitAndAttitudeQuality|long|ASCAT SATELLITE ORBIT AND ATTITUDE QUALITY|Numeric|3|0|10|Numeric|3|4
+021163|ascatSolarArrayReflectionContamination|long|ASCAT SOLAR ARRAY REFLECTION CONTAMINATION|Numeric|3|0|10|Numeric|3|4
+021164|ascatTelemetryPresenceAndQuality|long|ASCAT TELEMETRY PRESENCE AND QUALITY|Numeric|3|0|10|Numeric|3|4
+021165|ascatExtrapolatedReferenceFunctionPresence|long|ASCAT EXTRAPOLATED REFERENCE FUNCTION PRESENCE|Numeric|3|0|10|Numeric|3|4
+021166|landFraction|long|LAND FRACTION|Numeric|3|0|10|Numeric|3|4
+021169|icePresenceIndicator|table|ICE PRESENCE INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+021170|cBandCorrectedOceanBackscatterCoefficient|double|C BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021171|rmsCBandCorrectedOceanBackscatterCoefficient|double|RMS C BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021172|cBandNetInstrumentalCorrectionForAgc|double|C BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|dB|2|4
+021173|cBandAutomaticGainControl|double|C BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|dB|2|4
+021174|rmsCBandAutomaticGainControl|double|RMS C BAND AUTOMATIC GAIN CONTROL|dB|2|0|9|dB|2|3
+021175|numberOfValidPointsForCBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR C BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|10|Numeric|0|4
+021176|highFrequencyVariabilityCorrection|double|HIGH FREQUENCY VARIABILITY CORRECTION|m|3|0|16|m|3|5
+021177|correctedOcogBackscatterCoefficient|double|CORRECTED OCOG* BACKSCATTER COEFFICIENT|dB|2|0|16|dB|2|5
+021178|stdOf20HzOcogBackscatterCoefficient|double|STD OF 20 HZ OCOG BACKSCATTER COEFFICIENT|dB|2|0|16|dB|2|5
+021179|numberOf20HzValidPointsForOcogBackscatterCoefficient|long|NUMBER OF 20 HZ VALID POINTS FOR OCOG BACKSCATTER COEFFICIENT|Numeric|0|0|16|Numeric|0|5
+021180|numberOf20HzValidPointsForOceanBackscatterCoefficient|long|NUMBER OF 20 HZ VALID POINTS FOR OCEAN BACKSCATTER COEFFICIENT|Numeric|0|0|8|Numeric|0|3
+021181|20HzOceanBackscatterCoefficient|double|20 HZ OCEAN BACKSCATTER COEFFICIENT|dB|2|0|16|dB|2|5
+021182|20HzKuBandPeakiness|long|20 HZ KU BAND PEAKINESS|Numeric|3|0|16|Numeric|3|5
+021183|specificBandCorrectedOceanBackscatterCoefficient|double|SPECIFIC BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021184|stdSpecificBandCorrectedOceanBackscatterCoefficient|double|STD SPECIFIC BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT|dB|2|-32768|16|dB|2|5
+021185|specificBandNetInstrumentalCorrectionForAgc|double|SPECIFIC BAND NET INSTRUMENTAL CORRECTION FOR AGC|dB|2|-2048|12|dB|2|4
+021186|specificBandAutomaticGainControl|double|SPECIFIC BAND AUTOMATIC GAIN CONTROL|dB|2|0|13|dB|2|4
+021187|rmsSpecificBandAutomaticGainControl|double|RMS SPECIFIC BAND AUTOMATIC GAIN CONTROL|dB|2|0|8|dB|2|3
+021188|numberOfValidPointsForSpecificBandAutomaticGainControl|long|NUMBER OF VALID POINTS FOR SPECIFIC BAND AUTOMATIC GAIN CONTROL|Numeric|0|0|7|Numeric|0|3
+022001|wavesDirection|long|DIRECTION OF WAVES|deg|0|0|9|deg|0|3
+022002|windWavesDirection|long|DIRECTION OF WIND WAVES|deg|0|0|9|deg|0|3
+022003|swellWavesDirection|long|DIRECTION OF SWELL WAVES|deg|0|0|9|deg|0|3
+022004|currentDirection|long|DIRECTION OF CURRENT|deg|0|0|9|deg|0|3
+022005|seaSurfaceCurrentDirection|long|DIRECTION OF SEA-SURFACE CURRENT|deg|0|0|9|deg|0|3
+022011|periodOfWaves|long|PERIOD OF WAVES|s|0|0|6|s|0|2
+022012|periodOfWindWaves|long|PERIOD OF WIND WAVES|s|0|0|6|s|0|2
+022013|periodOfSwellWaves|long|PERIOD OF SWELL WAVES|s|0|0|6|s|0|2
+022021|heightOfWaves|double|HEIGHT OF WAVES|m|1|0|10|m|1|4
+022022|heightOfWindWaves|double|HEIGHT OF WIND WAVES|m|1|0|10|m|1|4
+022023|heightOfSwellWaves|double|HEIGHT OF SWELL WAVES|m|1|0|10|m|1|4
+022025|standardDeviationWaveHeight|double|STANDARD DEVIATION WAVE HEIGHT|m|2|0|10|m|2|4
+022026|standardDeviationOfSignificantWaveHeight|double|STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT|m|2|0|10|m|2|4
+022031|speedOfCurrent|double|SPEED OF CURRENT|m/s|2|0|13|m/s|2|4
+022032|speedOfSeaSurfaceCurrent|double|SPEED OF SEA-SURFACE CURRENT|m/s|2|0|13|m/s|2|4
+022035|tidalElevationWithRespectToLocalChartDatum|double|TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM|m|2|0|14|m|2|4
+022036|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|2|0|14|m|2|4
+022037|tidalElevationWithRespectToNationalLandDatum|double|TIDAL ELEVATION WITH RESPECT TO NATIONAL LAND DATUM|m|3|-10000|15|m|3|5
+022038|tidalElevationWithRespectToLocalChartDatum|double|TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM|m|3|-10000|15|m|3|5
+022039|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|3|-5000|13|m|3|4
+022040|meteorologicalResidualTidalElevationSurgeOrOffset|double|METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET)|m|3|-5000|14|m|3|5
+022041|seaSurfaceTemperature15DayRunningMean|double|SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN)|K|1|0|12|K|1|4
+022042|waterTemperature|double|SEA/WATER TEMPERATURE|K|1|0|12|K|1|4
+022043|waterTemperature|double|SEA/WATER TEMPERATURE|K|2|0|15|K|2|5
+022044|soundVelocity|double|SOUND VELOCITY|m/s|1|0|14|m/s|1|5
+022045|waterTemperature|double|SEA/WATER TEMPERATURE|K|3|0|19|K|3|6
+022046|seaIceFraction|long|SEA ICE FRACTION|Numeric|2|0|7|Numeric|2|3
+022049|seaSurfaceTemperature|double|SEA-SURFACE TEMPERATURE|K|2|0|15|K|2|5
+022050|standardDeviationSeaSurfaceTemperature|double|STANDARD DEVIATION SEA-SURFACE TEMPERATURE|K|2|0|8|K|2|3
+022055|floatCycleNumber|long|FLOAT CYCLE NUMBER|Numeric|0|0|10|Numeric|0|3
+022056|directionOfProfile|table|DIRECTION OF PROFILE|CODE TABLE|0|0|2|CODE TABLE|0|1
+022059|seaSurfaceSalinity|double|SEA-SURFACE SALINITY|0/00|2|0|14|0/00|2|5
+022060|lagrangianDrifterDrogueStatus|table|LAGRANGIAN DRIFTER DROGUE STATUS|CODE TABLE|0|0|3|CODE TABLE|0|1
+022061|seaState|table|STATE OF THE SEA|CODE TABLE|0|0|4|CODE TABLE|0|2
+022062|salinity|double|SALINITY|0/00|2|0|14|0/00|2|5
+022063|totalWaterDepth|long|TOTAL WATER DEPTH|m|0|0|14|m|0|5
+022064|salinity|double|SALINITY|0/00|3|0|17|0/00|3|6
+022065|waterPressure|long|WATER PRESSURE|Pa|-3|0|17|Pa|-3|6
+022066|waterConductivity|double|WATER CONDUCTIVITY|S/m|6|0|26|S/m|6|8
+022067|instrumentTypeForWaterTemperatureOrSalinityProfileMeasurement|table|INSTRUMENT TYPE FOR WATER TEMPERATURE/SALINITY PROFILE MEASUREMENT|CODE TABLE|0|0|10|CODE TABLE|0|4
+022068|waterTemperatureProfileRecorderTypes|table|WATER TEMPERATURE PROFILE RECORDER TYPES|CODE TABLE|0|0|7|CODE TABLE|0|3
+022069|spectralWaveDensity|double|SPECTRAL WAVE DENSITY|m2/Hz|3|0|22|m2/Hz|3|7
+022070|significantWaveHeight|double|SIGNIFICANT WAVE HEIGHT|m|2|0|13|m|2|4
+022071|spectralPeakWavePeriod|double|SPECTRAL PEAK WAVE PERIOD|s|1|0|9|s|1|3
+022072|spectralPeakWaveLength|long|SPECTRAL PEAK WAVE LENGTH|m|0|0|13|m|0|4
+022073|maximumWaveHeight|double|MAXIMUM WAVE HEIGHT|m|2|0|13|m|2|4
+022074|averageWavePeriod|double|AVERAGE WAVE PERIOD|s|1|0|9|s|1|3
+022075|averageWaveLength|long|AVERAGE WAVE LENGTH|m|0|0|13|m|0|4
+022076|directionFromWhichDominantWavesAreComing|long|DIRECTION FROM WHICH DOMINANT WAVES ARE COMING|deg|0|0|9|deg|0|3
+022077|directionalSpreadOfDominantWave|long|DIRECTIONAL SPREAD OF DOMINANT WAVE|deg|0|0|9|deg|0|3
+022078|durationOfWaveRecord|long|DURATION OF WAVE RECORD|s|0|0|12|s|0|4
+022079|lengthOfWaveRecord|long|LENGTH OF WAVE RECORD|m|0|0|16|m|0|5
+022080|wavebandCentralFrequency|double|WAVEBAND CENTRAL FREQUENCY|Hz|3|0|10|Hz|3|4
+022081|wavebandCentralWaveNumber|double|WAVEBAND CENTRAL WAVE NUMBER|/m|5|0|13|/m|5|4
+022082|maximumNonDirectionalSpectralWaveDensity|double|MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY|m2 s|2|0|20|m2 s|2|7
+022083|maximumNonDirectionalSpectralWaveNumber|double|MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE NUMBER|m3|2|0|20|m3|2|7
+022084|bandContainingMaximumNonDirectionalSpectralWaveDensity|long|BAND CONTAINING MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY|Numeric|0|0|7|Numeric|0|3
+022085|spectralWaveDensityRatio|long|SPECTRAL WAVE DENSITY RATIO|Numeric|0|0|7|Numeric|0|3
+022086|meanDirectionFromWhichWavesAreComing|long|MEAN DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3
+022087|principalDirectionFromWhichWavesAreComing|long|PRINCIPAL DIRECTION FROM WHICH WAVES ARE COMING|deg|0|0|9|deg|0|3
+022088|firstNormalizedPolarCoordinateFromFourierCoefficients|long|FIRST NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS|Numeric|2|0|7|Numeric|2|3
+022089|secondNormalizedPolarCoordinateFromFourierCoefficients|long|SECOND NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS|Numeric|2|0|7|Numeric|2|3
+022090|nonDirectionalSpectralEstimateByWaveFrequency|double|NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY|m2 s|2|0|20|m2 s|2|7
+022091|nonDirectionalSpectralEstimateByWaveNumber|double|NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER|m3|2|0|20|m3|2|7
+022092|directionalSpectralEstimateByWaveFrequency|double|DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY|m2 rad-1 s|2|0|20|m2 rad-1 s|2|7
+022093|directionalSpectralEstimateByWaveNumber|double|DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER|m4|2|0|20|m4|2|7
+022094|totalNumberOfWaveBands|long|TOTAL NUMBER OF WAVE BANDS|Numeric|0|0|7|Numeric|0|3
+022095|directionalSpreadOfIndividualWaves|long|DIRECTIONAL SPREAD OF INDIVIDUAL WAVES|deg|0|0|8|deg|0|3
+022096|spectralBandWidth|double|SPECTRAL BAND WIDTH|/s|3|0|4|/s|3|2
+022097|meanWavelength731MOfImageSpectrumAtLowWaveNumbers|long|MEAN WAVELENGTH > 731 M OF IMAGE SPECTRUM AT LOW WAVE NUMBERS|m|0|0|14|m|0|5
+022098|wavelengthSpreadWavelength731MAtLowWaveNumbers|long|WAVELENGTH SPREAD (WAVELENGTH > 731 M) AT LOW WAVE NUMBERS|m|0|0|14|m|0|5
+022099|meanDirectionAtLowWaveNumbersWavelength731M|long|MEAN DIRECTION AT LOW WAVE NUMBERS (WAVELENGTH > 731 M)|deg|0|0|9|deg|0|3
+022100|directionSpreadAtLowWaveNumbersWavelength731M|long|DIRECTION SPREAD AT LOW WAVE NUMBERS (WAVELENGTH > 731 M)|deg|0|0|9|deg|0|3
+022101|totalEnergyWavelength731mAtLowWaveNumbers|long|TOTAL ENERGY (WAVELENGTH > 731M) AT LOW WAVE NUMBERS|Numeric|0|0|31|Numeric|0|10
+022120|tideStationAutomatedWaterLevelCheck|table|TIDE STATION AUTOMATED WATER LEVEL CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022121|tideStationManualWaterLevelCheck|table|TIDE STATION MANUAL WATER LEVEL CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022122|automatedMeteorologicalDataCheck|table|TIDE STATION AUTOMATED METEOROLOGICAL DATA CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022123|tideStationManualMeteorologicalDataCheck|table|TIDE STATION MANUAL METEOROLOGICAL DATA CHECK|CODE TABLE|0|0|5|CODE TABLE|0|2
+022130|numberOfValidPointsForSpecificBand|long|NUMBER OF VALID POINTS FOR SPECIFIC BAND|Numeric|0|0|10|Numeric|0|4
+022131|rmsSpecificBandSignificantWaveHeight|double|RMS SPECIFIC BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022132|numberOfValidPointsForSpecificBandSignificantWaveHeight|long|NUMBER OF VALID POINTS FOR SPECIFIC BAND SIGNIFICANT WAVE HEIGHT|Numeric|0|0|10|Numeric|0|4
+022133|specificBandNetInstrumentCorrectionForSignificantWaveHeight|double|SPECIFIC BAND NET INSTRUMENT CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|m|3|4
+022134|numberOfValidPointsForSpecificBandBackscatter|long|NUMBER OF VALID POINTS FOR SPECIFIC BAND BACKSCATTER|Numeric|0|0|10|Numeric|0|4
+022141|seaSurfaceTemperature15DayRunningMean|double|SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN)|K|2|0|15|K|2|5
+022142|squareOfSignificantWaveHeight|double|SQUARE OF SIGNIFICANT WAVE HEIGHT|m2|3|-33554432|26|m2|3|8
+022143|stdOf20HzSwhSquared|double|STD OF 20 HZ SWH SQUARED|m2|3|-8388608|24|m2|3|8
+022144|numberOf20HzValidPointsForSwhSquared|long|NUMBER OF 20 HZ VALID POINTS FOR SWH SQUARED|Numeric|0|0|9|Numeric|0|3
+022145|stdOf20HzOceanRange|double|STD OF 20 HZ OCEAN RANGE|m|3|-33554432|31|m|3|10
+022146|ocogRange|double|OCOG RANGE|m|3|0|31|m|3|10
+022147|stdOf20HzOcogRange|double|STD OF 20 HZ OCOG RANGE|m|3|-8388608|31|m|3|10
+022148|numberOf20HzValidPointsForOceanRange|long|NUMBER OF 20 HZ VALID POINTS FOR OCEAN RANGE|Numeric|0|0|9|Numeric|0|3
+022149|20HzSignificantWaveHeightSquared|double|20 HZ SIGNIFICANT WAVE HEIGHT SQUARED|m2|3|-33554432|26|m2|3|8
+022150|numberOf18HzValidPointsForKuBand|long|NUMBER OF 18 HZ VALID POINTS FOR KU BAND|Numeric|0|0|10|Numeric|0|4
+022151|kuBandOceanRange|double|KU BAND OCEAN RANGE|m|3|0|31|m|3|10
+022152|stdOf18HzKuBandOceanRange|double|STD OF 18 HZ KU BAND OCEAN RANGE|m|3|0|16|m|3|5
+022153|numberOf18HzValidPointsForSBand|long|NUMBER OF 18 HZ VALID POINTS FOR S BAND|Numeric|0|0|10|Numeric|0|4
+022154|sBandOceanRange|double|S BAND OCEAN RANGE|m|3|0|31|m|3|10
+022155|stdOf18HzSBandOceanRange|double|STD OF 18 HZ S BAND OCEAN RANGE|m|3|0|16|m|3|5
+022156|kuBandSignificantWaveHeight|double|KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022157|stdOf18HzKuBandOceanRange|double|STD OF 18 HZ KU BAND OCEAN RANGE|m|3|0|16|m|3|5
+022158|sBandSignificantWaveHeight|double|S BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022159|stdOf18HzSBandSignificantWaveHeight|double|STD OF 18 HZ S BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022160|normalizedInverseWaveAge|long|NORMALIZED INVERSE WAVE AGE|Numeric|6|0|21|Numeric|6|7
+022161|waveSpectra|double|WAVE SPECTRA|m4|4|0|27|m4|4|9
+022162|rmsOf20HzKuBandOceanRange|double|RMS OF 20 HZ KU BAND OCEAN RANGE|m|3|0|16|m|3|5
+022163|numberOf20HzValidPointsForKuBand|long|NUMBER OF 20HZ VALID POINTS FOR KU BAND|Numeric|0|0|10|Numeric|0|4
+022164|rms20HzKuBandSignificantWaveHeight|double|RMS 20 HZ KU BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022165|numberOf20HzValidPointsForKuBandSignificantWaveHeight|long|NUMBER OF 20 HZ VALID POINTS FOR KU BAND SIGNIFICANT WAVE HEIGHT|Numeric|0|0|10|Numeric|0|4
+022166|kuBandNetInstrumentalCorrectionForSignificantWaveHeight|double|KU BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|m|3|4
+022167|numberOfValidPointsForKuBandBackscatter|long|NUMBER OF VALID POINTS FOR KU BAND BACKSCATTER|Numeric|0|0|10|Numeric|0|4
+022168|cBandOceanRange|double|C BAND OCEAN RANGE|m|3|0|31|m|3|10
+022169|rmsOfCBandOceanRange|double|RMS OF C BAND OCEAN RANGE|m|3|0|16|m|3|5
+022170|numberOf20HzValidPointsForCBand|long|NUMBER OF 20 HZ VALID POINTS FOR C BAND|Numeric|0|0|10|Numeric|0|4
+022171|cBandSignificantWaveHeight|double|C BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022172|rms20HzCBandSignificantWaveHeight|double|RMS 20 HZ C BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022173|numberOf20HzValidPointsForCBandSignificantWaveHeight|long|NUMBER OF 20 HZ VALID POINTS FOR C BAND SIGNIFICANT WAVE HEIGHT|Numeric|0|0|10|Numeric|0|4
+022174|cBandNetInstrumentalCorrectionForSignificantWaveHeight|double|C BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT|m|3|-1000|11|m|3|4
+022175|numberOfValidPointsForCBandBackscatter|long|NUMBER OF VALID POINTS FOR C BAND BACKSCATTER|Numeric|0|0|10|Numeric|0|4
+022177|heightOfXbtOrXctdLauncher|long|HEIGHT OF XBT/XCTD LAUNCHER|m|0|0|6|m|0|3
+022178|xbtOrXctdLauncherType|table|XBT/XCTD LAUNCHER TYPE|CODE TABLE|0|0|8|CODE TABLE|0|3
+022182|waterColumnHeight|double|WATER COLUMN HEIGHT|m|3|0|23|m|3|7
+022184|waterColumnHeightDeviationFromReferenceValue|double|WATER COLUMN HEIGHT DEVIATION FROM THE REFERENCE VALUE|m|3|-2000|12|m|3|4
+022185|bprTransmissionCount|long|BPR TRANSMISSION COUNT|Numeric|0|0|10|Numeric|0|3
+022188|dissolvedOxygen|double|DISSOLVED OXYGEN|umol/kg|3|0|19|umol/kg|3|6
+022189|specificBandOceanRange|double|SPECIFIC BAND OCEAN RANGE|m|3|0|31|m|3|10
+022190|specificBandSignificantWaveHeight|double|SPECIFIC BAND SIGNIFICANT WAVE HEIGHT|m|3|0|16|m|3|5
+022191|rmsOfSpecificBandOceanRange|double|RMS OF SPECIFIC BAND OCEAN RANGE|m|4|0|16|m|4|5
+023001|accidentEarlyNotificationArticleApplicable|table|ACCIDENT EARLY NOTIFICATION - ARTICLE APPLICABLE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023002|facilityInvolvedInIncident|table|ACTIVITY OR FACILITY INVOLVED IN INCIDENT|CODE TABLE|0|0|5|CODE TABLE|0|2
+023003|releaseType|table|TYPE OF RELEASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023004|countermeasuresTakenNearBorder|table|COUNTERMEASURES TAKEN NEAR BORDER|CODE TABLE|0|0|3|CODE TABLE|0|1
+023005|causeOfIncident|table|CAUSE OF INCIDENT|CODE TABLE|0|0|2|CODE TABLE|0|1
+023006|incidentSituation|table|INCIDENT SITUATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+023007|characteristicsOfRelease|table|CHARACTERISTICS OF RELEASE|CODE TABLE|0|0|3|CODE TABLE|0|1
+023008|stateOfCurrentRelease|table|STATE OF CURRENT RELEASE|CODE TABLE|0|0|2|CODE TABLE|0|1
+023009|stateOfExpectedRelease|table|STATE OF EXPECTED RELEASE|CODE TABLE|0|0|2|CODE TABLE|0|1
+023016|possibilityOfSignificantChemicalToxicHealthEffect|table|POSSIBILITY OF SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT|CODE TABLE|0|0|2|CODE TABLE|0|1
+023017|flowDischargeOfMajorRecipient|double|FLOW DISCHARGE OF MAJOR RECIPIENT|m3/s|6|0|20|m3/s|6|7
+023018|releaseBehaviourOverTime|table|RELEASE BEHAVIOUR OVER TIME|CODE TABLE|0|0|3|CODE TABLE|0|1
+023019|actualReleaseHeight|long|ACTUAL RELEASE HEIGHT|m|0|-15000|17|m|0|6
+023021|effectiveReleaseHeight|long|EFFECTIVE RELEASE HEIGHT|m|0|-15000|17|m|0|6
+023022|distanceOfReleasePointOrSiteOfIncident|long|DISTANCE OF RELEASE POINT OR SITE OF INCIDENT|m|0|0|24|m|0|8
+023023|mainTransportSpeedInAtmosphere|double|MAIN TRANSPORT SPEED IN THE ATMOSPHERE|m/s|1|0|12|m/s|1|4
+023024|mainTransportSpeedInWater|double|MAIN TRANSPORT SPEED IN WATER|m/s|2|0|13|m/s|2|4
+023025|mainTransportSpeedInGroundWater|double|MAIN TRANSPORT SPEED IN GROUND WATER|m/s|2|0|13|m/s|2|4
+023027|mainTransportDirectionInTheAtmosphere|long|MAIN TRANSPORT DIRECTION IN THE ATMOSPHERE|deg|0|0|9|deg|0|3
+023028|mainTransportDirectionInWater|long|MAIN TRANSPORT DIRECTION IN WATER|deg|0|0|9|deg|0|3
+023029|mainTransportDirectionInGroundWater|long|MAIN TRANSPORT DIRECTION IN GROUND WATER|deg|0|0|9|deg|0|3
+023031|possibilityPlume|table|POSSIBILITY THAT PLUME WILL ENCOUNTER PRECIPITATION IN STATE IN WHICH INCIDENT OCCURRED|CODE TABLE|0|0|2|CODE TABLE|0|1
+023032|plumeWillEncounterChangeInWindDirectionAndOrOrSpeedFlag|table|PLUME WILL ENCOUNTER CHANGE IN WIND DIRECTION AND/OR SPEED FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+023040|flowDischargeRiver|double|FLOW DISCHARGE - RIVER|m3/s|1|0|22|m3/s|1|7
+023041|flowDischargeWell|double|FLOW DISCHARGE - WELL|m3/s|3|0|16|m3/s|3|5
+024001|estimateOfAmountOfRadioactivityReleasedUpToSpecifiedTime|long|ESTIMATE OF AMOUNT OF RADIOACTIVITY RELEASED UP TO SPECIFIED TIME|Bq|-11|0|28|Bq|-11|9
+024002|estimatedMaximumPotentialRelease|long|ESTIMATED MAXIMUM POTENTIAL RELEASE|Bq|-11|0|28|Bq|-11|9
+024003|compositionOfRelease|table|COMPOSITION OF RELEASE|CODE TABLE|0|0|5|CODE TABLE|0|2
+024004|elementName|string|ELEMENT NAME|CCITT IA5|0|0|16|Character|0|2
+024005|isotopeMass|long|ISOTOPE MASS|Numeric|0|0|9|Numeric|0|3
+024011|dose|double|DOSE|mSv|2|0|32|mSv|2|10
+024012|trajectoryDoseDefinedLocationAndExpectedTimeOfArrival|double|TRAJECTORY DOSE (DEFINED LOCATION AND EXPECTED TIME OF ARRIVAL)|mSv|2|0|32|mSv|2|10
+024013|gammaDoseInAirAlongMainTransportPathDefinedLocationAndTimePeriod|double|GAMMA DOSE IN AIR ALONG THE MAIN TRANSPORT PATH (DEFINED LOCATION AND TIME PERIOD)|mSv|2|0|32|mSv|2|10
+024014|gammaRadiationDoseRate|double|GAMMA RADIATION DOSE RATE|nSv/h|1|0|14|nSv/h|1|4
+024021|airConcentrationOfNamedIsotopeTypeIncludingGrossBeta|double|AIR CONCENTRATION (OF NAMED ISOTOPE TYPE INCLUDING GROSS BETA)|Bq m-3|2|0|32|Bq m-3|2|10
+024022|concentrationInPrecipitationOfNamedIsotopeType|double|CONCENTRATION IN PRECIPITATION (OF NAMED ISOTOPE TYPE)|Bq/l|2|0|32|Bq/l|2|10
+024023|pulseRateOfBetaRadiation|double|PULSE RATE OF BETA RADIATION|/s|1|0|14|/s|1|4
+024024|pulseRateOfGammaRadiation|double|PULSE RATE OF GAMMA RADIATION|/s|1|0|14|/s|1|4
+025001|rangeGateLength|long|RANGE-GATE LENGTH|m|-1|0|6|m|-1|2
+025002|numberOfGatesAveraged|long|NUMBER OF GATES AVERAGED|Numeric|0|0|4|Numeric|0|2
+025003|numberOfIntegratedPulses|long|NUMBER OF INTEGRATED PULSES|Numeric|0|0|8|Numeric|0|3
+025004|echoProcessing|table|ECHO PROCESSING|CODE TABLE|0|0|2|CODE TABLE|0|1
+025005|echoIntegration|table|ECHO INTEGRATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025006|zToRConversion|table|Z TO R CONVERSION|CODE TABLE|0|0|3|CODE TABLE|0|1
+025007|zToRConversionFactor|long|Z TO R CONVERSION FACTOR|Numeric|0|0|12|Numeric|0|4
+025008|zToRConversionExponent|long|Z TO R CONVERSION EXPONENT|Numeric|2|0|9|Numeric|2|3
+025009|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025010|clutterTreatment|table|CLUTTER TREATMENT|CODE TABLE|0|0|4|CODE TABLE|0|2
+025011|groundOccultationCorrectionScreening|table|GROUND OCCULTATION CORRECTION (SCREENING)|CODE TABLE|0|0|2|CODE TABLE|0|1
+025012|rangeAttenuationCorrection|table|RANGE ATTENUATION CORRECTION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025013|brightBandCorrection|flag|BRIGHT-BAND CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025014|azimuthClutterCutOff|long|AZIMUTH CLUTTER CUT-OFF|Numeric|0|0|12|Numeric|0|4
+025015|radomeAttenuationCorrection|flag|RADOME ATTENUATION CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025016|clearAirAttenuationCorrection|double|CLEAR-AIR ATTENUATION CORRECTION|dB/m|5|0|6|dB/m|5|2
+025017|precipitationAttenuationCorrection|flag|PRECIPITATION ATTENUATION CORRECTION|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025018|aToZLawForAttenuationFactor|long|A TO Z LAW FOR ATTENUATION FACTOR|Numeric|7|0|6|Numeric|7|2
+025019|aToZLawForAttenuationExponent|long|A TO Z LAW FOR ATTENUATION EXPONENT|Numeric|2|0|7|Numeric|2|3
+025020|meanSpeedEstimation|table|MEAN SPEED ESTIMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025021|windComputationEnhancement|flag|WIND COMPUTATION ENHANCEMENT|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025022|ghrsstRejectionFlag|flag|GHRSST* REJECTION FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025023|ghrsstConfidenceFlag|flag|GHRSST CONFIDENCE FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025024|ghrsstDataQuality|table|GHRSST DATA QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+025025|batteryVoltage|double|BATTERY VOLTAGE|V|1|0|9|V|1|3
+025026|batteryVoltageLargeRange|double|BATTERY VOLTAGE (LARGE RANGE)|V|1|0|12|V|1|4
+025028|operatorOrManufacturerDefinedParameter|long|OPERATOR OR MANUFACTURER DEFINED PARAMETER|Numeric|1|-16384|15|Numeric|1|5
+025029|calibrationMethod|flag|CALIBRATION METHOD|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+025030|runningMeanSeaSurfaceTemperatureUsage|table|RUNNING MEAN SEA-SURFACE TEMPERATURE USAGE|CODE TABLE|0|0|2|CODE TABLE|0|1
+025031|nwpGeneratedVerticalProfileThinningMethod|table|NWP-GENERATED VERTICAL PROFILE THINNING METHOD|CODE TABLE|0|0|3|CODE TABLE|0|1
+025032|windProfilerModeInformation|table|WIND PROFILER MODE INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025033|windProfilerSubmodeInformation|table|WIND PROFILER SUBMODE INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+025034|windProfilerQualityControlTestResults|flag|WIND PROFILER QUALITY CONTROL TEST RESULTS|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025035|decisionMethodForPolarity|table|DECISION METHOD FOR POLARITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+025036|atmosphericsLocationMethod|table|ATMOSPHERICS LOCATION METHOD|CODE TABLE|0|0|4|CODE TABLE|0|2
+025037|sstBias|double|SST BIAS|K|2|-127|8|K|2|3
+025038|differenceBetweenSstAndAnalysis|double|DIFFERENCE BETWEEN SST AND ANALYSIS|K|1|-127|8|K|1|3
+025040|co2WindProductDerivation|table|CO2 WIND PRODUCT DERIVATION|CODE TABLE|0|0|4|CODE TABLE|0|2
+025041|movingPlatformDirectionReportingMethod|table|MOVING PLATFORM DIRECTION REPORTING METHOD|CODE TABLE|0|0|2|CODE TABLE|0|1
+025042|movingPlatformSpeedReportingMethod|table|MOVING PLATFORM SPEED REPORTING METHOD|CODE TABLE|0|0|2|CODE TABLE|0|1
+025043|waveSamplingIntervalTime|double|WAVE SAMPLING INTERVAL (TIME)|s|4|0|15|s|4|5
+025044|waveSamplingIntervalSpace|double|WAVE SAMPLING INTERVAL (SPACE)|m|2|0|14|m|2|5
+025045|hirsChannelCombination|flag|HIRS CHANNEL COMBINATION|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+025046|msuChannelCombination|flag|MSU CHANNEL COMBINATION|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+025047|ssuChannelCombination|flag|SSU CHANNEL COMBINATION|FLAG TABLE|0|0|4|FLAG TABLE|0|2
+025048|amsuAChannelCombination|flag|AMSU-A CHANNEL COMBINATION|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+025049|amsuBChannelCombination|flag|AMSU-B CHANNEL COMBINATION|FLAG TABLE|0|0|6|FLAG TABLE|0|2
+025050|principalComponentScore|long|PRINCIPAL COMPONENT SCORE|Numeric|4|-131072|18|Numeric|4|6
+025051|avhrrChannelCombination|flag|AVHRR CHANNEL COMBINATION|FLAG TABLE|0|0|7|FLAG TABLE|0|3
+025052|log10OfPrincipalComponentsNormalizedFitToData|long|LOG10 OF PRINCIPAL COMPONENTS NORMALIZED FIT TO DATA|Numeric|4|0|15|Numeric|4|5
+025053|observationQuality|flag|OBSERVATION QUALITY|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+025054|ssmisSubframeIdNumber|long|SSMIS SUBFRAME ID NUMBER|Numeric|0|0|5|Numeric|0|2
+025055|multiplexerHousekeeping|double|MULTIPLEXER HOUSEKEEPING|K|2|0|16|K|2|5
+025060|softwareIdentification|long|SOFTWARE IDENTIFICATION|Numeric|0|0|14|Numeric|0|5
+025061|softwareVersionNumber|string|SOFTWARE IDENTIFICATION AND VERSION NUMBER|CCITT IA5|0|0|96|Character|0|12
+025062|databaseIdentification|long|DATABASE IDENTIFICATION|Numeric|0|0|14|Numeric|0|5
+025063|SystemIdentifier|table|CENTRAL PROCESSOR OR SYSTEM IDENTIFIER|CODE TABLE|0|0|8|CODE TABLE|0|3
+025065|orientationCorrectionAzimuth|double|ORIENTATION CORRECTION (AZIMUTH)|deg|2|-1000|11|deg|2|4
+025066|orientationCorrectionElevation|double|ORIENTATION CORRECTION (ELEVATION)|deg|2|-1000|11|deg|2|4
+025067|radiosondeReleasePointPressureCorrection|long|RADIOSONDE RELEASE POINT PRESSURE CORRECTION|Pa|0|-8000|14|Pa|0|4
+025068|numberOfArchiveRecomputes|long|NUMBER OF ARCHIVE RECOMPUTES|Numeric|0|0|7|Numeric|0|3
+025069|flightLevelPressureCorrections|flag|FLIGHT LEVEL PRESSURE CORRECTIONS|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025070|majorFrameCount|long|MAJOR FRAME COUNT|Numeric|0|0|4|Numeric|0|2
+025071|frameCount|long|FRAME COUNT|Numeric|0|0|5|Numeric|0|2
+025075|satelliteAntennaCorrectionsVersionNumber|long|SATELLITE ANTENNA CORRECTIONS VERSION NUMBER|Numeric|0|0|5|Numeric|0|2
+025076|log10OfTemperatureRadianceCentralWaveNumberForAtovs|double|LOG10 OF (TEMPERATURE-RADIANCE CENTRAL WAVE NUMBER) FOR ATOVS|log (m-1)|8|0|30|log (m-1)|8|10
+025077|bandwidthCorrectionCoefficient1ForAtovs|long|BANDWIDTH CORRECTION COEFFICIENT 1 FOR ATOVS|Numeric|5|-100000|18|Numeric|5|7
+025078|bandwidthCorrectionCoefficient2ForAtovs|long|BANDWIDTH CORRECTION COEFFICIENT 2 FOR ATOVS|Numeric|5|0|17|Numeric|5|6
+025079|albedoRadianceSolarFilteredIrradianceForAtovs|double|ALBEDO-RADIANCE SOLAR FILTERED IRRADIANCE FOR ATOVS|W m-2|4|0|24|W m-2|4|8
+025080|albedoRadianceEquivalentFilterWidthForAtovs|double|ALBEDO-RADIANCE EQUIVALENT FILTER WIDTH FOR ATOVS|m|10|0|14|m|10|5
+025081|incidenceAngle|double|INCIDENCE ANGLE|deg|3|0|17|deg|3|6
+025082|azimuthAngle|double|AZIMUTH ANGLE|deg|3|0|19|deg|3|6
+025083|faradayRotationalAngle|double|FARADAY ROTATIONAL ANGLE|deg|3|0|19|deg|3|6
+025084|geometricRotationalAngle|double|GEOMETRIC ROTATIONAL ANGLE|deg|5|0|26|deg|5|8
+025085|fractionOfClearPixelsInHirsFov|long|FRACTION OF CLEAR PIXELS IN HIRS FOV|Numeric|0|0|7|Numeric|0|3
+025086|depthCorrectionIndicator|table|DEPTH CORRECTION INDICATOR|CODE TABLE|0|0|2|CODE TABLE|0|1
+025090|orbitStateFlag|table|ORBIT STATE FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+025091|structureConstantOfRefractionIndexCn2|double|STRUCTURE CONSTANT OF THE REFRACTION INDEX (CN2)|dB|3|-18192|13|dB|3|5
+025092|acousticPropagationVelocity|double|ACOUSTIC PROPAGATION VELOCITY|m/s|2|28000|14|m/s|2|5
+025093|rassComputationCorrection|flag|RASS COMPUTATION CORRECTION|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+025095|altimeterStateFlag|flag|ALTIMETER STATE FLAG|FLAG TABLE|0|0|2|FLAG TABLE|0|1
+025096|radiometerStateFlag|flag|RADIOMETER STATE FLAG|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+025097|threeDimensionalErrorEstimateOfNavigatorOrbit|table|THREE-DIMENSIONAL ERROR ESTIMATE OF THE NAVIGATOR ORBIT|CODE TABLE|0|0|4|CODE TABLE|0|2
+025098|altimeterDataQualityFlag|flag|ALTIMETER DATA QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025099|altimeterCorrectionQualityFlag|flag|ALTIMETER CORRECTION QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025100|xbtOrXctdFallRateEquationCoefficientA|long|XBT/XCTD FALL RATE EQUATION COEFFICIENT A|Numeric|5|0|20|Numeric|5|6
+025101|xbtOrXctdFallRateEquationCoefficientB|long|XBT/XCTD FALL RATE EQUATION COEFFICIENT B|Numeric|5|-500000|21|Numeric|5|6
+025102|numberOfMissingLinesExcludingDataGaps|long|NUMBER OF MISSING LINES EXCLUDING DATA GAPS|Numeric|0|0|8|Numeric|0|3
+025103|numberOfDirectionalBins|long|NUMBER OF DIRECTIONAL BINS|Numeric|0|0|8|Numeric|0|3
+025104|numberOfWavelengthBins|long|NUMBER OF WAVELENGTH BINS|Numeric|0|0|8|Numeric|0|3
+025105|firstDirectionalBin|double|FIRST DIRECTIONAL BIN|deg|3|0|19|deg|3|6
+025106|directionalBinStep|double|DIRECTIONAL BIN STEP|deg|3|0|19|deg|3|6
+025107|firstWavelengthBin|double|FIRST WAVELENGTH BIN|m|3|0|29|m|3|9
+025108|lastWavelengthBin|double|LAST WAVELENGTH BIN|m|3|0|29|m|3|9
+025110|imageProcessingSummary|flag|IMAGE PROCESSING SUMMARY|FLAG TABLE|0|0|10|FLAG TABLE|0|4
+025111|numberOfInputDataGaps|long|NUMBER OF INPUT DATA GAPS|Numeric|0|0|8|Numeric|0|3
+025112|bandSpecificAltimeterDataQualityFlag|flag|BAND SPECIFIC ALTIMETER DATA QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025113|bandSpecificAltimeterCorrectionQualityFlag|flag|BAND SPECIFIC ALTIMETER CORRECTION QUALITY FLAG|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+025120|ra2L2ProcessingFlag|table|RA2-L2-PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025121|ra2L2ProcessingQuality|long|RA2-L2-PROCESSING QUALITY|%|0|0|7|%|0|3
+025122|hardwareConfigurationForRf|table|HARDWARE CONFIGURATION FOR RF|CODE TABLE|0|0|2|CODE TABLE|0|1
+025123|hardwareConfigurationForHpa|table|HARDWARE CONFIGURATION FOR HPA|CODE TABLE|0|0|2|CODE TABLE|0|1
+025124|mwrL2ProcessingFlag|table|MWR-L2-PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025125|mwrL2ProcessingQuality|long|MWR-L2-PROCESSING QUALITY|%|0|0|7|%|0|3
+025126|modelDryTroposphericCorrection|double|MODEL DRY TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025127|invertedBarometerCorrection|double|INVERTED BAROMETER CORRECTION|m|3|-32768|16|m|3|5
+025128|modelWetTroposphericCorrection|double|MODEL WET TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025129|mwrDerivedWetTroposphericCorrection|double|MWR DERIVED WET TROPOSPHERIC CORRECTION|m|3|-32768|16|m|3|5
+025130|ra2IonosphericCorrectionOnKuBand|double|RA2 IONOSPHERIC CORRECTION ON KU BAND|m|3|-32768|16|m|3|5
+025131|ionosphericCorrectionFromDorisOnKuBand|double|IONOSPHERIC CORRECTION FROM DORIS ON KU BAND|m|3|-32768|16|m|3|5
+025132|ionosphericCorrectionFromModelOnKuBand|double|IONOSPHERIC CORRECTION FROM MODEL ON KU BAND|m|3|-32768|16|m|3|5
+025133|seaStateBiasCorrectionOnKuBand|double|SEA STATE BIAS CORRECTION ON KU BAND|m|3|-32768|16|m|3|5
+025134|ra2IonosphericCorrectionOnSBand|double|RA2 IONOSPHERIC CORRECTION ON S BAND|m|3|-32768|16|m|3|5
+025135|ionosphericCorrectionFromDorisOnSBand|double|IONOSPHERIC CORRECTION FROM DORIS ON S BAND|m|3|-32768|16|m|3|5
+025136|ionosphericCorrectionFromModelOnSBand|double|IONOSPHERIC CORRECTION FROM MODEL ON S BAND|m|3|-32768|16|m|3|5
+025137|seaStateBiasCorrectionOnSBand|double|SEA STATE BIAS CORRECTION ON S BAND|m|3|-32768|16|m|3|5
+025138|averageSignalToNoiseRatio|long|AVERAGE SIGNAL-TO-NOISE RATIO|Numeric|0|-2048|12|Numeric|0|4
+025140|startChannel|long|START CHANNEL|Numeric|0|0|14|Numeric|0|5
+025141|endChannel|long|END CHANNEL|Numeric|0|0|14|Numeric|0|5
+025142|channelScaleFactor|long|CHANNEL SCALE FACTOR|Numeric|0|0|6|Numeric|0|2
+025143|linearCoefficient|long|LINEAR COEFFICIENT|Numeric|6|-5000000|24|Numeric|6|8
+025150|methodOfTropicalCycloneIntensityAnalysisUsingSatelliteData|table|METHOD OF TROPICAL CYCLONE INTENSITY ANALYSIS USING SATELLITE DATA|CODE TABLE|0|0|4|CODE TABLE|0|2
+025160|kuBandNetInstrumentalCorrection|double|KU BAND NET INSTRUMENTAL CORRECTION|m|4|-120000|18|m|4|6
+025161|cBandNetInstrumentalCorrection|double|C BAND NET INSTRUMENTAL CORRECTION|m|4|-120000|18|m|4|6
+025162|seaStateBiasCorrectionOnCBand|double|SEA STATE BIAS CORRECTION ON C BAND|m|4|-6000|13|m|4|4
+025163|altimeterIonosphericCorrectionOnKuBand|double|ALTIMETER IONOSPHERIC CORRECTION ON KU BAND|m|3|-32768|16|m|3|5
+025164|radiometerWetTroposphericCorrection|double|RADIOMETER WET TROPOSPHERIC CORRECTION|m|4|-5000|13|m|4|4
+025165|ionosphericCorrectionFromModelOnSpecificBand|double|IONOSPHERIC CORRECTION FROM MODEL ON SPECIFIC BAND|m|4|-32768|16|m|4|5
+025166|seaStateBiasCorrectionOnSpecificBand|double|SEA STATE BIAS CORRECTION ON SPECIFIC BAND|m|4|-32768|16|m|4|5
+025167|specificBandNetInstrumentalCorrection|double|SPECIFIC BAND NET INSTRUMENTAL CORRECTION|m|4|-120000|18|m|4|6
+025170|samplingIntervalTime|long|SAMPLING INTERVAL (TIME)|s|0|0|10|s|0|4
+025171|sampleAveragingPeriod|long|SAMPLE AVERAGING PERIOD|s|0|0|10|s|0|4
+025172|numberOfSamples|long|NUMBER OF SAMPLES|Numeric|0|0|10|Numeric|0|4
+025174|smosInformationFlag|flag|SMOS INFORMATION FLAG|FLAG TABLE|0|0|14|FLAG TABLE|0|5
+025175|modifiedResidual|long|MODIFIED RESIDUAL|Numeric|2|0|13|Numeric|2|4
+025180|lrmPercent|double|LRM* PER CENT|%|2|0|16|%|2|5
+025181|l2ProcessingFlag|table|L2 PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025182|l1ProcessingFlag|table|L1 PROCESSING FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+025183|l1ProcessingQuality|double|L1 PROCESSING QUALITY|%|2|0|14|%|2|5
+025184|l2ProductStatus|table|L2 PRODUCT STATUS|CODE TABLE|0|0|2|CODE TABLE|0|1
+026001|principalTimeOfDailyReadingInUtcOfMaximumTemperature|double|PRINCIPAL TIME OF DAILY READING IN UTC OF MAXIMUM TEMPERATURE|h|1|0|12|h|1|3
+026002|principalTimeOfDailyReadingInUtcOfMinimumTemperature|double|PRINCIPAL TIME OF DAILY READING IN UTC OF MINIMUM TEMPERATURE|h|1|0|12|h|1|3
+026003|timeDifference|long|TIME DIFFERENCE|min|0|-1440|12|min|0|4
+026010|hoursIncluded|flag|HOURS INCLUDED|FLAG TABLE|0|0|26|FLAG TABLE|0|9
+026020|durationOfPrecipitation|long|DURATION OF PRECIPITATION|min|0|0|11|min|0|4
+026021|year|long|YEAR|a|0|0|12|a|0|4
+026022|month|long|MONTH|mon|0|0|4|mon|0|2
+026023|day|long|DAY|d|0|0|6|d|0|2
+026030|measurementIntegrationTime|double|MEASUREMENT INTEGRATION TIME|s|2|0|8|s|2|3
+027001|latitude|double|LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+027002|latitude|double|LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+027003|alternateLatitude|double|ALTERNATE LATITUDE (COARSE ACCURACY)|deg|2|-9000|15|deg|2|4
+027004|alternateLatitude|double|ALTERNATE LATITUDE (HIGH ACCURACY)|deg|5|-9000000|25|deg|5|7
+027010|footprintAxis1|long|FOOTPRINT AXIS 1|m|-1|0|14|m|-1|5
+027020|satelliteLocationCounter|long|SATELLITE LOCATION COUNTER|Numeric|0|0|16|Numeric|0|5
+027021|satelliteSublocationDimension|long|SATELLITE SUBLOCATION DIMENSION|Numeric|0|0|16|Numeric|0|5
+027031|DistanceFromEarthCentreInDirectionOf0DegreesLongitude|double|IN DIRECTION OF 0 DEGREES LONGITUDE, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10
+027080|viewingAzimuthAngle|double|VIEWING AZIMUTH ANGLE|deg|2|0|16|deg|0|5
+028001|longitude|double|LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+028002|longitude|double|LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+028003|alternateLongitude|double|ALTERNATE LONGITUDE (COARSE ACCURACY)|deg|2|-18000|16|deg|2|5
+028004|alternateLongitude|double|ALTERNATE LONGITUDE (HIGH ACCURACY)|deg|5|-18000000|26|deg|5|8
+028010|footprintAxis2|long|FOOTPRINT AXIS 2|m|-1|0|14|m|-1|5
+028031|DistanceFromEarthCentreInDirection90DegreesEast|double|IN DIRECTION 90 DEGREES EAST, DISTANCE FROM THE EARTH'S CENTRE|m|2|-1073741824|31|m|2|10
+029001|projectionType|table|PROJECTION TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+029002|coordinateGridType|table|COORDINATE GRID TYPE|CODE TABLE|0|0|3|CODE TABLE|0|1
+030001|pixelValue4Bits|long|PIXEL VALUE (4 BITS)|Numeric|0|0|4|Numeric|0|2
+030002|pixelValue8Bits|long|PIXEL VALUE (8 BITS)|Numeric|0|0|8|Numeric|0|3
+030004|pixelValue16Bits|long|PIXEL VALUE (16 BITS)|Numeric|0|0|16|Numeric|0|5
+030010|numberOfGridPoints|long|NUMBER OF GRID POINTS|Numeric|0|0|13|Numeric|0|4
+030021|numberOfPixelsPerRow|long|NUMBER OF PIXELS PER ROW|Numeric|0|0|12|Numeric|0|4
+030022|numberOfPixelsPerColumn|long|NUMBER OF PIXELS PER COLUMN|Numeric|0|0|12|Numeric|0|4
+030031|pictureType|table|PICTURE TYPE|CODE TABLE|0|0|4|CODE TABLE|0|2
+030032|combinationWithOtherData|flag|COMBINATION WITH OTHER DATA|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+030033|numberOfBinsAlongRadial|long|NUMBER OF BINS ALONG THE RADIAL|Numeric|0|0|12|Numeric|0|4
+030034|numberOfAzimuths|long|NUMBER OF AZIMUTHS|Numeric|0|0|12|Numeric|0|4
+031000|shortDelayedDescriptorReplicationFactor|long|SHORT DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|1|NA|0|0
+031001|delayedDescriptorReplicationFactor|long|DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|8|NA|0|0
+031002|extendedDelayedDescriptorReplicationFactor|long|EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR|Numeric|0|0|16|NA|0|0
+031011|delayedDescriptorAndDataRepetitionFactor|long|DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|8|NA|0|0
+031012|extendedDelayedDescriptorAndDataRepetitionFactor|long|EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR|Numeric|0|0|16|NA|0|0
+031021|associatedFieldSignificance|table|ASSOCIATED FIELD SIGNIFICANCE|CODE TABLE|0|0|6|NA|0|0
+031031|dataPresentIndicator|flag|DATA PRESENT INDICATOR|FLAG TABLE|0|0|1|NA|0|0
+033002|qualityInformation|table|QUALITY INFORMATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033003|qualityInformation|table|QUALITY INFORMATION|CODE TABLE|0|0|3|CODE TABLE|0|1
+033005|qualityInformationAwsData|flag|QUALITY INFORMATION (AWS DATA)|FLAG TABLE|0|0|30|FLAG TABLE|0|10
+033006|internalMeasurementStatusInformationAws|table|INTERNAL MEASUREMENT STATUS INFORMATION (AWS)|CODE TABLE|0|0|3|CODE TABLE|0|1
+033007|percentConfidence|long|PER CENT CONFIDENCE|%|0|0|7|%|0|3
+033015|dataQualityCheckIndicator|table|DATA QUALITY CHECK INDICATOR|CODE TABLE|0|0|6|CODE TABLE|0|2
+033020|qualityControlIndicationOfFollowingValue|table|QUALITY CONTROL INDICATION OF FOLLOWING VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+033021|qualityOfFollowingValue|table|QUALITY OF FOLLOWING VALUE|CODE TABLE|0|0|2|CODE TABLE|0|1
+033022|qualityOfBuoySatelliteTransmission|table|QUALITY OF BUOY SATELLITE TRANSMISSION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033023|qualityOfBuoyLocation|table|QUALITY OF BUOY LOCATION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033024|stationElevationQualityMarkForMobileStations|table|STATION ELEVATION QUALITY MARK (FOR MOBILE STATIONS)|CODE TABLE|0|0|4|CODE TABLE|0|2
+033025|acarsInterpolatedValuesIndicator|table|ACARS INTERPOLATED VALUES INDICATOR|CODE TABLE|0|0|3|CODE TABLE|0|1
+033026|moistureQuality|table|MOISTURE QUALITY|CODE TABLE|0|0|6|CODE TABLE|0|2
+033027|locationQualityClassRangeOfRadiusOf66Confidence|table|LOCATION QUALITY CLASS (RANGE OF RADIUS OF 66 % CONFIDENCE)|CODE TABLE|0|0|3|CODE TABLE|0|1
+033028|snapshotOverallQuality|table|SNAPSHOT OVERALL QUALITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+033030|scanLineStatusFlagsForAtovs|flag|SCAN LINE STATUS FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033031|scanLineQualityFlagsForAtovs|flag|SCAN LINE QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033032|channelQualityFlagsForAtovs|flag|CHANNEL QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033033|fieldOfViewQualityFlagsForAtovs|flag|FIELD OF VIEW QUALITY FLAGS FOR ATOVS|FLAG TABLE|0|0|24|FLAG TABLE|0|8
+033035|qualityControl|table|MANUAL/AUTOMATIC QUALITY CONTROL|CODE TABLE|0|0|4|CODE TABLE|0|2
+033036|nominalConfidenceThreshold|long|NOMINAL CONFIDENCE THRESHOLD|%|0|0|7|%|0|3
+033037|windCorrelationError|flag|WIND CORRELATION ERROR|FLAG TABLE|0|0|20|FLAG TABLE|0|7
+033038|qualityFlagsForGroundBasedGnssData|flag|QUALITY FLAGS FOR GROUND-BASED GNSS DATA|FLAG TABLE|0|0|10|FLAG TABLE|0|4
+033039|radioOccultationDataQualityFlags|flag|QUALITY FLAGS FOR RADIO OCCULTATION DATA|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+033040|confidenceInterval|long|CONFIDENCE INTERVAL|%|0|0|7|%|0|3
+033041|attributeOfFollowingValue|table|ATTRIBUTE OF FOLLOWING VALUE|CODE TABLE|0|0|2|CODE TABLE|0|1
+033042|typeOfLimitRepresentedByFollowingValue|table|TYPE OF LIMIT REPRESENTED BY FOLLOWING VALUE|CODE TABLE|0|0|3|CODE TABLE|0|1
+033043|astConfidence|flag|AST CONFIDENCE|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+033044|asarQualityInformation|flag|ASAR QUALITY INFORMATION|FLAG TABLE|0|0|15|FLAG TABLE|0|5
+033045|probabilityOfFollowingEvent|long|PROBABILITY OF FOLLOWING EVENT|%|0|0|7|%|0|3
+033046|conditionalProbability|long|CONDITIONAL PROBABILITY OF FOLLOWING EVENT WITH RESPECT TO SPECIFIED CONDITIONING EVENT|%|0|0|7|%|0|3
+033047|measurementConfidenceData|flag|MEASUREMENT CONFIDENCE DATA|FLAG TABLE|0|0|31|FLAG TABLE|0|11
+033048|confidenceMeasureOfSarInversion|table|CONFIDENCE MEASURE OF SAR INVERSION|CODE TABLE|0|0|2|CODE TABLE|0|1
+033049|confidenceMeasureOfWindRetrieval|table|CONFIDENCE MEASURE OF WIND RETRIEVAL|CODE TABLE|0|0|2|CODE TABLE|0|1
+033050|globalGtsppQualityFlag|table|GLOBAL GTSPP QUALITY FLAG|CODE TABLE|0|0|4|CODE TABLE|0|2
+033052|sBandOceanRetrackingQuality|flag|S BAND OCEAN RETRACKING QUALITY|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+033053|kuBandOceanRetrackingQuality|flag|KU BAND OCEAN RETRACKING QUALITY|FLAG TABLE|0|0|21|FLAG TABLE|0|7
+033060|gqisFlagQual|table|GQISFLAGQUAL - INDIVIDUAL IASI-SYSTEM QUALITY FLAG|CODE TABLE|0|0|2|CODE TABLE|0|1
+033061|gqisQualIndex|long|GQISQUALINDEX - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE (CONTRIBUTIONS FROM SPECTRAL AND RADIOMETRIC CALIBRATION)|%|0|0|7|%|0|3
+033062|gqisQualIndexLoc|long|GQISQUALINDEXLOC - INDICATOR FOR GEOMETRIC QUALITY INDEX|%|0|0|7|%|0|3
+033063|gqisQualIndexRad|long|GQISQUALINDEXRAD - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE (CONTRIBUTIONS FROM RADIOMETRIC CALIBRATION)|%|0|0|7|%|0|3
+033064|gqisQualIndexSpect|long|GQISQUALINDEXSPECT - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE (CONTRIBUTIONS FROM SPECTRAL CALIBRATION)|%|0|0|7|%|0|3
+033065|gqisSysTecQual|long|GQISSYSTECSONDQUAL - OUTPUT OF SYSTEM TEC (TECHNICAL EXPERTISE CENTRE) QUALITY FUNCTION|Numeric|0|0|24|Numeric|0|8
+033070|totalOzoneQuality|table|TOTAL OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033071|profileOzoneQuality|table|PROFILE OZONE QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033072|ozoneError|table|OZONE ERROR|CODE TABLE|0|0|5|CODE TABLE|0|2
+033075|scanLevelQualityFlags|flag|SCAN-LEVEL QUALITY FLAGS|FLAG TABLE|0|0|13|FLAG TABLE|0|5
+033076|calibrationQualityFlags|flag|CALIBRATION QUALITY FLAGS|FLAG TABLE|0|0|9|FLAG TABLE|0|3
+033077|fieldOfViewQualityFlags|flag|FIELD-OF-VIEW QUALITY FLAGS|FLAG TABLE|0|0|19|FLAG TABLE|0|7
+033078|geolocationQuality|table|GEOLOCATION QUALITY|CODE TABLE|0|0|4|CODE TABLE|0|2
+033079|granuleLevelQualityFlags|flag|GRANULE LEVEL QUALITY FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+033080|scanLevelQualityFlags|flag|SCAN LEVEL QUALITY FLAGS|FLAG TABLE|0|0|20|FLAG TABLE|0|7
+033081|channelDataQualityFlags|flag|CHANNEL DATA QUALITY FLAGS|FLAG TABLE|0|0|12|FLAG TABLE|0|4
+033082|geolocationQualityFlags|flag|GEOLOCATION QUALITY FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+033083|radianceDataQualityFlags|flag|RADIANCE DATA QUALITY FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+033084|pixelLevelQualityFlags|flag|PIXEL LEVEL QUALITY FLAGS|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+033085|aerosolOpticalThicknessQualityFlags|flag|AEROSOL OPTICAL THICKNESS QUALITY FLAGS|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+033086|qualityOfPixelLevelRetrieval|table|QUALITY OF PIXEL LEVEL RETRIEVAL|CODE TABLE|0|0|3|CODE TABLE|0|1
+033087|extentOfSatelliteWithinSouthAtlanticAnomalyBasedOnClimatologicalData|table|EXTENT OF SATELLITE WITHIN SOUTH ATLANTIC ANOMALY (BASED ON CLIMATOLOGICAL DATA)|CODE TABLE|0|0|4|CODE TABLE|0|1
+033088|ozoneTotalColumnQualityFlag|flag|OZONE TOTAL COLUMN QUALITY FLAG|FLAG TABLE|0|0|18|FLAG TABLE|0|6
+035000|fmAndRegionalCodeNumber|table|FM AND REGIONAL CODE NUMBER|CODE TABLE|0|0|10|CODE TABLE|0|3
+035001|timeFrameForMonitoring|table|TIME FRAME FOR MONITORING|CODE TABLE|0|0|3|CODE TABLE|0|1
+035011|numberOfReportsActuallyReceived|long|NUMBER OF REPORTS ACTUALLY RECEIVED|Numeric|0|0|14|Numeric|0|4
+035021|bulletinBeingMonitoredTtaaii|string|BULLETIN BEING MONITORED (TTAAII)|CCITT IA5|0|0|48|Character|0|6
+035022|bulletinBeingMonitoredYygggg|string|BULLETIN BEING MONITORED (YYGGGG)|CCITT IA5|0|0|48|Character|0|6
+035023|bulletinBeingMonitoredCccc|string|BULLETIN BEING MONITORED (CCCC)|CCITT IA5|0|0|32|Character|0|4
+035024|bulletinBeingMonitoredBbb|string|BULLETIN BEING MONITORED (BBB)|CCITT IA5|0|0|24|Character|0|3
+035030|discrepanciesInAvailabilityOfExpectedData|table|DISCREPANCIES IN THE AVAILABILITY OF EXPECTED DATA|CODE TABLE|0|0|4|CODE TABLE|0|1
+035031|qualifierOnMonitoringResults|table|QUALIFIER ON MONITORING RESULTS|CODE TABLE|0|0|7|CODE TABLE|0|2
+035032|causeOfMissingData|table|CAUSE OF MISSING DATA|CODE TABLE|0|0|4|CODE TABLE|0|1
+035033|observationAndCollectionDeficiencies|table|OBSERVATION AND COLLECTION DEFICIENCIES|CODE TABLE|0|0|7|CODE TABLE|0|2
+035034|statisticalTrendsForAvailabilityOfDataDuringSurveyPeriods|table|STATISTICAL TRENDS FOR AVAILABILITY OF DATA (DURING THE SURVEY PERIOD(S))|CODE TABLE|0|0|3|CODE TABLE|0|1
+035035|reasonForTermination|table|REASON FOR TERMINATION|CODE TABLE|0|0|5|CODE TABLE|0|2
+040001|surfaceSoilMoisture|double|SURFACE SOIL MOISTURE (MS)|%|1|0|10|%|1|4
+040002|estimatedErrorInSurfaceSoilMoisture|double|ESTIMATED ERROR IN SURFACE SOIL MOISTURE|%|1|0|10|%|1|4
+040003|meanSurfaceSoilMoisture|long|MEAN SURFACE SOIL MOISTURE|Numeric|3|0|10|Numeric|3|4
+040004|rainFallDetection|long|RAIN FALL DETECTION|Numeric|3|0|10|Numeric|3|4
+040005|soilMoistureCorrectionFlag|flag|SOIL MOISTURE CORRECTION FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040006|soilMoistureProcessingFlag|flag|SOIL MOISTURE PROCESSING FLAG|FLAG TABLE|0|0|16|FLAG TABLE|0|6
+040007|soilMoistureQuality|double|SOIL MOISTURE QUALITY|%|1|0|10|%|1|4
+040008|frozenLandSurfaceFraction|double|FROZEN LAND SURFACE FRACTION|%|1|0|10|%|1|4
+040009|inundationAndWetlandFraction|double|INUNDATION AND WETLAND FRACTION|%|1|0|10|%|1|4
+040010|topographicComplexity|double|TOPOGRAPHIC COMPLEXITY|%|1|0|10|%|1|4
+040011|interpolationFlag|flag|INTERPOLATION FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040012|radiometerDataQualityFlag|flag|RADIOMETER DATA QUALITY FLAG|FLAG TABLE|0|0|8|FLAG TABLE|0|3
+040013|radiometerBrightnessTemperatureInterpretationFlag|table|RADIOMETER BRIGHTNESS TEMPERATURE INTERPRETATION FLAG|CODE TABLE|0|0|3|CODE TABLE|0|1
+040014|highFrequencyFluctuationsOfSeaSurfaceTopographyCorrection|double|HIGH-FREQUENCY FLUCTUATIONS OF THE SEA-SURFACE TOPOGRAPHY CORRECTION|m|4|-3000|13|m|4|4
+040015|normalizedDifferentialVegetationIndex|long|NORMALIZED DIFFERENTIAL VEGETATION INDEX (NDVI)|Numeric|2|-100|8|Numeric|2|3
+040016|residualRmsInBand|long|RESIDUAL RMS IN BAND|Numeric|3|0|14|Numeric|3|5
+040017|nonNormalizedPrincipalComponentScore|long|NON-NORMALIZED PRINCIPAL COMPONENT SCORE|Numeric|0|-1073741824|31|Numeric|0|10
+040018|averageOfImagerMeasurements|double|GIACAVGIMAGIIS - AVERAGE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8
+040019|giacvarimagiisVarianceOfImagerMeasurements|double|GIACVARIMAGIIS - VARIANCE OF IMAGER MEASUREMENTS|W m-2 sr-1 m|6|0|24|W m-2 sr-1 m|6|8
+040020|gqisFlagQualDetailed|flag|GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM|FLAG TABLE|0|0|17|FLAG TABLE|0|6
+040021|fractionOfWeightedAvhrrPixelInIasiFovCoveredWithSnowOrIce|long|FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH SNOW/ICE|%|0|0|7|%|0|3
+040022|numberOfMissingBadOrFailedAvhrrPixels|long|NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS|Numeric|0|0|7|Numeric|0|3
+040023|auxiliaryAltimeterStateFlags|flag|AUXILIARY ALTIMETER STATE FLAGS|FLAG TABLE|0|0|5|FLAG TABLE|0|2
+040024|meteorologicalMapAvailability|table|METEOROLOGICAL MAP AVAILABILITY|CODE TABLE|0|0|3|CODE TABLE|0|1
+040025|interpolationFlagForMeanDiurnalTide|table|INTERPOLATION FLAG FOR MEAN DIURNAL TIDE|CODE TABLE|0|0|2|CODE TABLE|0|1
+040026|scoreQuantizationFactor|long|SCORE QUANTIZATION FACTOR|Numeric|2|0|16|Numeric|2|5
diff --git a/tests/ECC-197/sequence.def b/tests/ECC-197/sequence.def
new file mode 100644
index 0000000..7ee97ce
--- /dev/null
+++ b/tests/ECC-197/sequence.def
@@ -0,0 +1,38 @@
+"308014" = [101000, 031000, 301018, 003001, 301093, 208032, 001079, 208000, 302062, 302063, 101000, 031000, 302092, 101000, 031000, 306033,
+            101000, 031000, 306034, 101000, 031000, 306043]
+"301018" = [001114, 025185, 025186]
+"301093" = [ 301036, 007030, 007031 ]
+"302062" = [025188, 302001, 302093, 103000, 031000, 302053, 007032, 007033, 101000, 031000, 302004, 101000, 031001, 302005, 008002,
+            101000, 031000, 302055, 101000, 031000, 302056, 101000, 031000, 302021, 101000, 031000, 302024]
+"302063" = [ 302038, 101000, 031000, 302040, 101000, 031000, 302034, 007032, 101000, 031000, 302058, 101000, 031000, 302064]
+"301036" = [ 301003, 002001, 301011, 301012, 301023 ]
+"301003" = [ 001011, 001012, 001013 ]
+"301011" = [ 004001, 004002, 004003 ]
+"301012" = [ 004004, 004005 ]
+"301023" = [ 005002, 006002 ]
+"302001" = [ 010004, 010051, 010061, 010063 ]
+"302053" = [ 007032, 007033, 020001 ]
+"302004" = [ 020010, 008002, 020011, 020013, 020012, 020012, 020012 ]
+"302005" = [ 008002, 020011, 020012, 020013 ]
+"302055" = [ 020031, 020032, 020033, 020034, 020035, 020036, 020037, 020038 ]
+"302056" = [ 002038, 007063, 022043, 007063 ]
+"302021" = [ 022001, 022011, 022021 ]
+"302024" = [ 302022, 101002, 302023 ]
+"302038" = [ 020003, 004024, 020004, 020005 ]
+"302022" = [  022002, 022012, 022022 ]
+"302023" = [  022003, 022013, 022023 ]
+"302040" = [ 007032, 102002, 004024, 013011 ]
+"302034" = [ 007032, 013023 ]
+"302058" = [ 007032, 007033, 004024, 004024, 012111, 004024, 004024, 012112 ]
+"302064" = [ 007032, 007033, 002002, 008021, 004025, 011001, 011002, 008021, 103000, 031001, 004025, 011043, 011041 ]
+"306043" = [ 041001, 008043, 015028, 008043, 013080, 041005, 041003, 022188, 041002, 106000, 031000, 004024, 014002, 014002, 014012, 014004, 004024 ]
+"302092" = [ 011104, 001012, 001013, 010038, 010039, 011007, 011008 ]
+"302093" = [ 007032, 007033, 303099, 012101, 103000, 031000, 007032, 007033, 303099, 002039, 002097, 003024, 003021, 012102, 012103, 013003,
+             007032, 007033, 303099, 002039, 002097, 003021, 003024 ]
+"303099" = [003005, 003006, 003007, 002096, 003022, 003003, 003020, 003004, 003023, 003008, 003009 ]
+"302092" = [011104, 001012, 001013, 010038, 010039, 011007, 011008]
+"302062" = [025188, 302001, 302093, 103000, 031000, 302053, 007032, 007033, 101000, 031000, 302004, 101000, 031001, 302005, 008002,
+            101000, 031000, 302055, 101000, 031000, 302056, 101000, 031000, 302021, 101000, 031000, 302024]
+"306033" = [ 002033, 007063, 022064 ]
+"306043" = [ 041001, 008043, 015028, 008043, 013080, 041005, 041003, 022188, 041002, 106000, 031000, 004024, 014002, 014002, 014012, 014004, 004024 ]
+"306034" = [  002031, 003010, 002040, 022005, 022032 ]
diff --git a/tests/Makefile b/tests/Makefile
deleted file mode 100644
index 06ddb55..0000000
--- a/tests/Makefile
+++ /dev/null
@@ -1,1605 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# tests/Makefile.  Generated from Makefile.in by configure.
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/eccodes
-pkgincludedir = $(includedir)/eccodes
-pkglibdir = $(libdir)/eccodes
-pkglibexecdir = $(libexecdir)/eccodes
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = x86_64-suse-linux-gnu
-host_triplet = x86_64-suse-linux-gnu
-noinst_PROGRAMS = packing_check$(EXEEXT) gauss_sub$(EXEEXT) \
-	read_any$(EXEEXT) double_cmp$(EXEEXT) packing$(EXEEXT) \
-	pack_unpack$(EXEEXT) multi_from_message$(EXEEXT) \
-	julian$(EXEEXT) read_index$(EXEEXT) index$(EXEEXT) \
-	gribex_perf$(EXEEXT) jpeg_perf$(EXEEXT) ccsds_perf$(EXEEXT) \
-	so_perf$(EXEEXT) png_perf$(EXEEXT) bpv_limit$(EXEEXT) \
-	laplacian$(EXEEXT) unit_tests$(EXEEXT)
-subdir = tests
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/config/depcomp $(top_srcdir)/config/test-driver
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-bpv_limit_SOURCES = bpv_limit.c
-bpv_limit_OBJECTS = bpv_limit.$(OBJEXT)
-bpv_limit_LDADD = $(LDADD)
-am__DEPENDENCIES_1 =
-bpv_limit_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-am_ccsds_perf_OBJECTS = ccsds_perf.$(OBJEXT)
-ccsds_perf_OBJECTS = $(am_ccsds_perf_OBJECTS)
-ccsds_perf_LDADD = $(LDADD)
-ccsds_perf_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_double_cmp_OBJECTS = double_cmp.$(OBJEXT)
-double_cmp_OBJECTS = $(am_double_cmp_OBJECTS)
-double_cmp_LDADD = $(LDADD)
-double_cmp_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_gauss_sub_OBJECTS = gauss_sub.$(OBJEXT)
-gauss_sub_OBJECTS = $(am_gauss_sub_OBJECTS)
-gauss_sub_LDADD = $(LDADD)
-gauss_sub_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_gribex_perf_OBJECTS = gribex_perf.$(OBJEXT)
-gribex_perf_OBJECTS = $(am_gribex_perf_OBJECTS)
-gribex_perf_LDADD = $(LDADD)
-gribex_perf_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_index_OBJECTS = index.$(OBJEXT)
-index_OBJECTS = $(am_index_OBJECTS)
-index_LDADD = $(LDADD)
-index_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_jpeg_perf_OBJECTS = jpeg_perf.$(OBJEXT)
-jpeg_perf_OBJECTS = $(am_jpeg_perf_OBJECTS)
-jpeg_perf_LDADD = $(LDADD)
-jpeg_perf_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_julian_OBJECTS = julian.$(OBJEXT)
-julian_OBJECTS = $(am_julian_OBJECTS)
-julian_LDADD = $(LDADD)
-julian_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_laplacian_OBJECTS = laplacian.$(OBJEXT)
-laplacian_OBJECTS = $(am_laplacian_OBJECTS)
-laplacian_LDADD = $(LDADD)
-laplacian_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_multi_from_message_OBJECTS = multi_from_message.$(OBJEXT)
-multi_from_message_OBJECTS = $(am_multi_from_message_OBJECTS)
-multi_from_message_LDADD = $(LDADD)
-multi_from_message_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_pack_unpack_OBJECTS = pack_unpack.$(OBJEXT)
-pack_unpack_OBJECTS = $(am_pack_unpack_OBJECTS)
-pack_unpack_LDADD = $(LDADD)
-pack_unpack_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_packing_OBJECTS = packing.$(OBJEXT)
-packing_OBJECTS = $(am_packing_OBJECTS)
-packing_LDADD = $(LDADD)
-packing_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_packing_check_OBJECTS = packing_check.$(OBJEXT)
-packing_check_OBJECTS = $(am_packing_check_OBJECTS)
-packing_check_LDADD = $(LDADD)
-packing_check_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_png_perf_OBJECTS = png_perf.$(OBJEXT)
-png_perf_OBJECTS = $(am_png_perf_OBJECTS)
-png_perf_LDADD = $(LDADD)
-png_perf_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_read_any_OBJECTS = read_any.$(OBJEXT)
-read_any_OBJECTS = $(am_read_any_OBJECTS)
-read_any_LDADD = $(LDADD)
-read_any_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_read_index_OBJECTS = read_index.$(OBJEXT)
-read_index_OBJECTS = $(am_read_index_OBJECTS)
-read_index_LDADD = $(LDADD)
-read_index_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_so_perf_OBJECTS = so_perf.$(OBJEXT)
-so_perf_OBJECTS = $(am_so_perf_OBJECTS)
-so_perf_LDADD = $(LDADD)
-so_perf_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_unit_tests_OBJECTS = unit_tests.$(OBJEXT)
-unit_tests_OBJECTS = $(am_unit_tests_OBJECTS)
-unit_tests_LDADD = $(LDADD)
-unit_tests_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-AM_V_P = $(am__v_P_$(V))
-am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = bpv_limit.c $(ccsds_perf_SOURCES) $(double_cmp_SOURCES) \
-	$(gauss_sub_SOURCES) $(gribex_perf_SOURCES) $(index_SOURCES) \
-	$(jpeg_perf_SOURCES) $(julian_SOURCES) $(laplacian_SOURCES) \
-	$(multi_from_message_SOURCES) $(pack_unpack_SOURCES) \
-	$(packing_SOURCES) $(packing_check_SOURCES) \
-	$(png_perf_SOURCES) $(read_any_SOURCES) $(read_index_SOURCES) \
-	$(so_perf_SOURCES) $(unit_tests_SOURCES)
-DIST_SOURCES = bpv_limit.c $(ccsds_perf_SOURCES) $(double_cmp_SOURCES) \
-	$(gauss_sub_SOURCES) $(gribex_perf_SOURCES) $(index_SOURCES) \
-	$(jpeg_perf_SOURCES) $(julian_SOURCES) $(laplacian_SOURCES) \
-	$(multi_from_message_SOURCES) $(pack_unpack_SOURCES) \
-	$(packing_SOURCES) $(packing_check_SOURCES) \
-	$(png_perf_SOURCES) $(read_any_SOURCES) $(read_index_SOURCES) \
-	$(so_perf_SOURCES) $(unit_tests_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__tty_colors_dummy = \
-  mgn= red= grn= lgn= blu= brg= std=; \
-  am__color_tests=no
-am__tty_colors = { \
-  $(am__tty_colors_dummy); \
-  if test "X$(AM_COLOR_TESTS)" = Xno; then \
-    am__color_tests=no; \
-  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
-    am__color_tests=yes; \
-  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
-    am__color_tests=yes; \
-  fi; \
-  if test $$am__color_tests = yes; then \
-    red=''; \
-    grn=''; \
-    lgn=''; \
-    blu=''; \
-    mgn=''; \
-    brg=''; \
-    std=''; \
-  fi; \
-}
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__recheck_rx = ^[ 	]*:recheck:[ 	]*
-am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
-am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
-# A command that, given a newline-separated list of test names on the
-# standard input, print the name of the tests that are to be re-run
-# upon "make recheck".
-am__list_recheck_tests = $(AWK) '{ \
-  recheck = 1; \
-  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-    { \
-      if (rc < 0) \
-        { \
-          if ((getline line2 < ($$0 ".log")) < 0) \
-	    recheck = 0; \
-          break; \
-        } \
-      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
-        { \
-          recheck = 0; \
-          break; \
-        } \
-      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
-        { \
-          break; \
-        } \
-    }; \
-  if (recheck) \
-    print $$0; \
-  close ($$0 ".trs"); \
-  close ($$0 ".log"); \
-}'
-# A command that, given a newline-separated list of test names on the
-# standard input, create the global log from their .trs and .log files.
-am__create_global_log = $(AWK) ' \
-function fatal(msg) \
-{ \
-  print "fatal: making $@: " msg | "cat >&2"; \
-  exit 1; \
-} \
-function rst_section(header) \
-{ \
-  print header; \
-  len = length(header); \
-  for (i = 1; i <= len; i = i + 1) \
-    printf "="; \
-  printf "\n\n"; \
-} \
-{ \
-  copy_in_global_log = 1; \
-  global_test_result = "RUN"; \
-  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-    { \
-      if (rc < 0) \
-         fatal("failed to read from " $$0 ".trs"); \
-      if (line ~ /$(am__global_test_result_rx)/) \
-        { \
-          sub("$(am__global_test_result_rx)", "", line); \
-          sub("[ 	]*$$", "", line); \
-          global_test_result = line; \
-        } \
-      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
-        copy_in_global_log = 0; \
-    }; \
-  if (copy_in_global_log) \
-    { \
-      rst_section(global_test_result ": " $$0); \
-      while ((rc = (getline line < ($$0 ".log"))) != 0) \
-      { \
-        if (rc < 0) \
-          fatal("failed to read from " $$0 ".log"); \
-        print line; \
-      }; \
-      printf "\n"; \
-    }; \
-  close ($$0 ".trs"); \
-  close ($$0 ".log"); \
-}'
-# Restructured Text title.
-am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
-# Solaris 10 'make', and several other traditional 'make' implementations,
-# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
-# by disabling -e (using the XSI extension "set +e") if it's set.
-am__sh_e_setup = case $$- in *e*) set +e;; esac
-# Default flags passed to test drivers.
-am__common_driver_flags = \
-  --color-tests "$$am__color_tests" \
-  --enable-hard-errors "$$am__enable_hard_errors" \
-  --expect-failure "$$am__expect_failure"
-# To be inserted before the command running the test.  Creates the
-# directory for the log if needed.  Stores in $dir the directory
-# containing $f, in $tst the test, in $log the log.  Executes the
-# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
-# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
-# will run the test scripts (or their associated LOG_COMPILER, if
-# thy have one).
-am__check_pre = \
-$(am__sh_e_setup);					\
-$(am__vpath_adj_setup) $(am__vpath_adj)			\
-$(am__tty_colors);					\
-srcdir=$(srcdir); export srcdir;			\
-case "$@" in						\
-  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
-    *) am__odir=.;; 					\
-esac;							\
-test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
-  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
-if test -f "./$$f"; then dir=./;			\
-elif test -f "$$f"; then dir=;				\
-else dir="$(srcdir)/"; fi;				\
-tst=$$dir$$f; log='$@'; 				\
-if test -n '$(DISABLE_HARD_ERRORS)'; then		\
-  am__enable_hard_errors=no; 				\
-else							\
-  am__enable_hard_errors=yes; 				\
-fi; 							\
-case " $(XFAIL_TESTS) " in				\
-  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
-    am__expect_failure=yes;;				\
-  *)							\
-    am__expect_failure=no;;				\
-esac; 							\
-$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
-# A shell command to get the names of the tests scripts with any registered
-# extension removed (i.e., equivalently, the names of the test logs, with
-# the '.log' extension removed).  The result is saved in the shell variable
-# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
-# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
-# since that might cause problem with VPATH rewrites for suffix-less tests.
-# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
-am__set_TESTS_bases = \
-  bases='$(TEST_LOGS)'; \
-  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
-  bases=`echo $$bases`
-RECHECK_LOGS = $(TEST_LOGS)
-AM_RECURSIVE_TARGETS = check recheck
-TEST_SUITE_LOG = test-suite.log
-TEST_EXTENSIONS =  .test
-LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
-LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
-am__set_b = \
-  case '$@' in \
-    */*) \
-      case '$*' in \
-        */*) b='$*';; \
-          *) b=`echo '$@' | sed 's/\.log$$//'`; \
-       esac;; \
-    *) \
-      b='$*';; \
-  esac
-am__test_logs1 = $(TESTS:=.log)
-am__test_logs2 = $(am__test_logs1:.log=.log)
-TEST_LOGS = $(am__test_logs2:.test.log=.log)
-TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
-TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
-	$(TEST_LOG_FLAGS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing aclocal-1.13
-AEC_DIR = 
-AMTAR = $${TAR-tar}
-AM_DEFAULT_VERBOSITY = 1
-AR = ar
-AUTOCONF = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoconf
-AUTOHEADER = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoheader
-AUTOMAKE = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing automake-1.13
-AWK = gawk
-CC = gcc
-CCDEPMODE = depmode=gcc3
-CCSDS_TEST = 
-CFLAGS = -g -O2
-CPP = gcc -E
-CPPFLAGS = 
-CYGPATH_W = echo
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DEVEL_RULES = dummy.am
-DLLTOOL = false
-DSYMUTIL = 
-DUMPBIN = 
-ECCODES_AGE = 0
-ECCODES_CURRENT = 1
-ECCODES_DEFINITION_PATH = ${datarootdir}/eccodes/definitions
-ECCODES_MAIN_VERSION = 0.10.0
-ECCODES_MAJOR_VERSION = 0
-ECCODES_MINOR_VERSION = 10
-ECCODES_PATCH_VERSION = 0
-ECCODES_REVISION = 0
-ECCODES_SAMPLES_PATH = ${datarootdir}/eccodes/samples
-ECCODES_VERSION_STR = 0.10.0
-ECHO_C = 
-ECHO_N = -n
-ECHO_T = 
-EGREP = /usr/bin/grep -E
-EMOS_LIB = 
-EXEEXT = 
-F77 = gfortran
-F90_CHECK = examples/F90
-F90_MODULE_FLAG = -I
-FC = gfortran
-FCFLAGS = -g -O2
-FFLAGS = -g -O2
-FGREP = /usr/bin/grep -F
-FORTRAN_MOD = fortran
-GREP = /usr/bin/grep
-GRIB_API_INC = /tmp/masn/git/grib_api/eccodes/src
-GRIB_API_LIB = /tmp/masn/git/grib_api/eccodes/src/grib_api.a
-GRIB_DEVEL = 0
-IFS_SAMPLES_DIR = ${datarootdir}/eccodes/ifs_samples
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-JASPER_DIR = system
-JPEG_TEST = jpeg.sh
-LD = /usr/x86_64-suse-linux/bin/ld -m elf_x86_64
-LDFLAGS = 
-LEX = flex
-LEXLIB = -lfl
-LEX_OUTPUT_ROOT = lex.yy
-LIBOBJS = 
-LIBS = -lm -ljasper 
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LIBTOOL_DEPS = config/ltmain.sh
-LIB_AEC = 
-LIB_JASPER = -ljasper
-LIB_OPENJPEG = 
-LIB_PNG = 
-LINUX_DISTRIBUTION_NAME = openSUSE 13.1 (x86_64)
-LINUX_DISTRIBUTION_VERSION = 
-LIPO = 
-LN_S = ln -s
-LTLIBOBJS = 
-MAKEINFO = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing makeinfo
-MANIFEST_TOOL = :
-MKDIR_P = /usr/bin/mkdir -p
-NETCDF_LDFLAGS = 
-NM = /usr/bin/nm -B
-NMEDIT = 
-NUMPY_INCLUDE = /usr/local/apps/python/2.7.8-01/lib/python2.7/site-packages/numpy/core/include
-OBJDUMP = objdump
-OBJEXT = o
-OPENJPEG_DIR = system
-OTOOL = 
-OTOOL64 = 
-PACKAGE = eccodes
-PACKAGE_BUGREPORT = Software.Support at ecmwf.int
-PACKAGE_NAME = eccodes
-PACKAGE_STRING = eccodes  
-PACKAGE_TARNAME = eccodes
-PACKAGE_URL = 
-PACKAGE_VERSION = 0.10.0
-PATH_SEPARATOR = :
-PERL = 
-PERLDIR = perl
-PERL_INSTALL_OPTIONS = LIB=NONE/perl
-PERL_MAKE_OPTIONS = 
-PYTHON = /usr/local/apps/python/2.7.8-01/bin/python
-PYTHON_CFLAGS = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7 -fno-strict-aliasing -O3 -fpic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
-PYTHON_CHECK = examples/python
-PYTHON_CONFIG = /usr/local/apps/python/2.7.8-01/bin/python2.7-config
-PYTHON_DATA_HANDLER = numpy
-PYTHON_EXEC_PREFIX = ${exec_prefix}
-PYTHON_INCLUDES = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7
-PYTHON_LDFLAGS = -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic
-PYTHON_LIBS = -lpthread -ldl -lutil -lm -lpython2.7
-PYTHON_PLATFORM = linux2
-PYTHON_PREFIX = ${prefix}
-PYTHON_VERSION = 2.7
-RANLIB = ranlib
-RM = rm -f
-RPM_CONFIGURE_ARGS =  '--enable-python' '--disable-shared' 'CC=gcc' 'F77=gfortran' 'FC=gfortran'
-RPM_HOST_CPU = x86_64
-RPM_HOST_OS = linux-gnu
-RPM_HOST_VENDOR = suse
-RPM_RELEASE = 1
-SED = /usr/bin/sed
-SET_MAKE = 
-SHELL = /bin/sh
-STRIP = strip
-VERSION = 0.10.0
-WARN_PEDANTIC = -pedantic -Wall
-WERROR = 
-YACC = bison -y
-YFLAGS = 
-abs_builddir = /tmp/masn/git/grib_api/eccodes/tests
-abs_srcdir = /tmp/masn/git/grib_api/eccodes/tests
-abs_top_builddir = /tmp/masn/git/grib_api/eccodes
-abs_top_srcdir = /tmp/masn/git/grib_api/eccodes
-ac_ct_AR = ar
-ac_ct_CC = gcc
-ac_ct_DUMPBIN = 
-ac_ct_F77 = 
-ac_ct_FC = 
-am__include = include
-am__leading_dot = .
-am__quote = 
-am__tar = $${TAR-tar} chof - "$$tardir"
-am__untar = $${TAR-tar} xf -
-bindir = ${exec_prefix}/bin
-build = x86_64-suse-linux-gnu
-build_alias = 
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = suse
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-host = x86_64-suse-linux-gnu
-host_alias = 
-host_cpu = x86_64
-host_os = linux-gnu
-host_vendor = suse
-htmldir = ${docdir}
-includedir = ${prefix}/include
-infodir = ${datarootdir}/info
-install_sh = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localedir = ${datarootdir}/locale
-localstatedir = ${prefix}/var
-mandir = ${datarootdir}/man
-mkdir_p = $(MKDIR_P)
-oldincludedir = /usr/include
-pdfdir = ${docdir}
-pkgpyexecdir = ${pyexecdir}/eccodes
-pkgpythondir = ${pythondir}/eccodes
-prefix = /usr/local
-program_transform_name = s,x,x,
-psdir = ${docdir}
-pyexecdir = ${exec_prefix}/lib/python2.7/site-packages
-pythondir = ${prefix}/lib/python2.7/site-packages
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-srcdir = .
-sysconfdir = ${prefix}/etc
-target_alias = 
-top_build_prefix = ../
-top_builddir = ..
-top_srcdir = ..
-TESTS = definitions.sh calendar.sh \
-        bufrdc_desc_ref.sh bufrdc_ref.sh bufr_dump.sh bufr_filter.sh \
-        bufr_json.sh bufr_compare.sh bufr_copy.sh bufr_count.sh bufr_get.sh bufr_ls.sh bufr_set.sh \
-				gts_ls.sh \
-        ieee.sh grib1to2.sh \
-        unit_tests.sh \
-        grib2to1.sh badgrib.sh ls.sh filter.sh  \
-        multi.sh budg.sh gridType.sh concept.sh decimalPrecision.sh \
-        bitsPerValue.sh get_fail.sh missing.sh \
-        local.sh step.sh set.sh iterator.sh \
-        compare.sh level.sh index.sh \
-        bitmap.sh list.sh second_order.sh \
-        multi_from_message.sh change_scanning.sh \
-        julian.sh statistics.sh tigge.sh tigge_conversions.sh \
-        read_any.sh padding.sh lamb_az_eq_area.sh grib_to_netcdf.sh debug.sh \
-        jpeg.sh ccsds.sh
-
-multi_from_message_SOURCES = multi_from_message.c
-laplacian_SOURCES = laplacian.c
-packing_SOURCES = packing.c
-packing_check_SOURCES = packing_check.c
-read_any_SOURCES = read_any.c
-double_cmp_SOURCES = double_cmp.c
-pack_unpack_SOURCES = pack_unpack.c
-julian_SOURCES = julian.c
-unit_tests_SOURCES = unit_tests.c
-index_SOURCES = index.c
-read_index_SOURCES = read_index.c
-jpeg_perf_SOURCES = jpeg_perf.c
-so_perf_SOURCES = so_perf.c
-png_perf_SOURCES = png_perf.c
-ccsds_perf_SOURCES = ccsds_perf.c
-gribex_perf_SOURCES = gribex_perf.c
-gauss_sub_SOURCES = gauss_sub.c
-LDADD = $(top_builddir)/src/libeccodes.la $(EMOS_LIB)
-INCLUDES = -I$(top_builddir)/src
-EXTRA_DIST = $(TESTS) mf.rules filter_rules include.sh include.ctest.sh.in \
-             lamb_az_eq_area.ref CMakeLists.txt number_compare.pl
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu tests/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstPROGRAMS:
-	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
-
-bpv_limit$(EXEEXT): $(bpv_limit_OBJECTS) $(bpv_limit_DEPENDENCIES) $(EXTRA_bpv_limit_DEPENDENCIES) 
-	@rm -f bpv_limit$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(bpv_limit_OBJECTS) $(bpv_limit_LDADD) $(LIBS)
-
-ccsds_perf$(EXEEXT): $(ccsds_perf_OBJECTS) $(ccsds_perf_DEPENDENCIES) $(EXTRA_ccsds_perf_DEPENDENCIES) 
-	@rm -f ccsds_perf$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(ccsds_perf_OBJECTS) $(ccsds_perf_LDADD) $(LIBS)
-
-double_cmp$(EXEEXT): $(double_cmp_OBJECTS) $(double_cmp_DEPENDENCIES) $(EXTRA_double_cmp_DEPENDENCIES) 
-	@rm -f double_cmp$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(double_cmp_OBJECTS) $(double_cmp_LDADD) $(LIBS)
-
-gauss_sub$(EXEEXT): $(gauss_sub_OBJECTS) $(gauss_sub_DEPENDENCIES) $(EXTRA_gauss_sub_DEPENDENCIES) 
-	@rm -f gauss_sub$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(gauss_sub_OBJECTS) $(gauss_sub_LDADD) $(LIBS)
-
-gribex_perf$(EXEEXT): $(gribex_perf_OBJECTS) $(gribex_perf_DEPENDENCIES) $(EXTRA_gribex_perf_DEPENDENCIES) 
-	@rm -f gribex_perf$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(gribex_perf_OBJECTS) $(gribex_perf_LDADD) $(LIBS)
-
-index$(EXEEXT): $(index_OBJECTS) $(index_DEPENDENCIES) $(EXTRA_index_DEPENDENCIES) 
-	@rm -f index$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(index_OBJECTS) $(index_LDADD) $(LIBS)
-
-jpeg_perf$(EXEEXT): $(jpeg_perf_OBJECTS) $(jpeg_perf_DEPENDENCIES) $(EXTRA_jpeg_perf_DEPENDENCIES) 
-	@rm -f jpeg_perf$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(jpeg_perf_OBJECTS) $(jpeg_perf_LDADD) $(LIBS)
-
-julian$(EXEEXT): $(julian_OBJECTS) $(julian_DEPENDENCIES) $(EXTRA_julian_DEPENDENCIES) 
-	@rm -f julian$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(julian_OBJECTS) $(julian_LDADD) $(LIBS)
-
-laplacian$(EXEEXT): $(laplacian_OBJECTS) $(laplacian_DEPENDENCIES) $(EXTRA_laplacian_DEPENDENCIES) 
-	@rm -f laplacian$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(laplacian_OBJECTS) $(laplacian_LDADD) $(LIBS)
-
-multi_from_message$(EXEEXT): $(multi_from_message_OBJECTS) $(multi_from_message_DEPENDENCIES) $(EXTRA_multi_from_message_DEPENDENCIES) 
-	@rm -f multi_from_message$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(multi_from_message_OBJECTS) $(multi_from_message_LDADD) $(LIBS)
-
-pack_unpack$(EXEEXT): $(pack_unpack_OBJECTS) $(pack_unpack_DEPENDENCIES) $(EXTRA_pack_unpack_DEPENDENCIES) 
-	@rm -f pack_unpack$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(pack_unpack_OBJECTS) $(pack_unpack_LDADD) $(LIBS)
-
-packing$(EXEEXT): $(packing_OBJECTS) $(packing_DEPENDENCIES) $(EXTRA_packing_DEPENDENCIES) 
-	@rm -f packing$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(packing_OBJECTS) $(packing_LDADD) $(LIBS)
-
-packing_check$(EXEEXT): $(packing_check_OBJECTS) $(packing_check_DEPENDENCIES) $(EXTRA_packing_check_DEPENDENCIES) 
-	@rm -f packing_check$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(packing_check_OBJECTS) $(packing_check_LDADD) $(LIBS)
-
-png_perf$(EXEEXT): $(png_perf_OBJECTS) $(png_perf_DEPENDENCIES) $(EXTRA_png_perf_DEPENDENCIES) 
-	@rm -f png_perf$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(png_perf_OBJECTS) $(png_perf_LDADD) $(LIBS)
-
-read_any$(EXEEXT): $(read_any_OBJECTS) $(read_any_DEPENDENCIES) $(EXTRA_read_any_DEPENDENCIES) 
-	@rm -f read_any$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(read_any_OBJECTS) $(read_any_LDADD) $(LIBS)
-
-read_index$(EXEEXT): $(read_index_OBJECTS) $(read_index_DEPENDENCIES) $(EXTRA_read_index_DEPENDENCIES) 
-	@rm -f read_index$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(read_index_OBJECTS) $(read_index_LDADD) $(LIBS)
-
-so_perf$(EXEEXT): $(so_perf_OBJECTS) $(so_perf_DEPENDENCIES) $(EXTRA_so_perf_DEPENDENCIES) 
-	@rm -f so_perf$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(so_perf_OBJECTS) $(so_perf_LDADD) $(LIBS)
-
-unit_tests$(EXEEXT): $(unit_tests_OBJECTS) $(unit_tests_DEPENDENCIES) $(EXTRA_unit_tests_DEPENDENCIES) 
-	@rm -f unit_tests$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(unit_tests_OBJECTS) $(unit_tests_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-include ./$(DEPDIR)/bpv_limit.Po
-include ./$(DEPDIR)/ccsds_perf.Po
-include ./$(DEPDIR)/double_cmp.Po
-include ./$(DEPDIR)/gauss_sub.Po
-include ./$(DEPDIR)/gribex_perf.Po
-include ./$(DEPDIR)/index.Po
-include ./$(DEPDIR)/jpeg_perf.Po
-include ./$(DEPDIR)/julian.Po
-include ./$(DEPDIR)/laplacian.Po
-include ./$(DEPDIR)/multi_from_message.Po
-include ./$(DEPDIR)/pack_unpack.Po
-include ./$(DEPDIR)/packing.Po
-include ./$(DEPDIR)/packing_check.Po
-include ./$(DEPDIR)/png_perf.Po
-include ./$(DEPDIR)/read_any.Po
-include ./$(DEPDIR)/read_index.Po
-include ./$(DEPDIR)/so_perf.Po
-include ./$(DEPDIR)/unit_tests.Po
-
-.c.o:
-	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-#	$(AM_V_CC)source='$<' object='$@' libtool=no \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(COMPILE) -c $<
-
-.c.obj:
-	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-#	$(AM_V_CC)source='$<' object='$@' libtool=no \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-#	$(AM_V_CC)source='$<' object='$@' libtool=yes \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-# Recover from deleted '.trs' file; this should ensure that
-# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
-# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
-# to avoid problems with "make -n".
-.log.trs:
-	rm -f $< $@
-	$(MAKE) $(AM_MAKEFLAGS) $<
-
-# Leading 'am--fnord' is there to ensure the list of targets does not
-# expand to empty, as could happen e.g. with make check TESTS=''.
-am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
-am--force-recheck:
-	@:
-
-$(TEST_SUITE_LOG): $(TEST_LOGS)
-	@$(am__set_TESTS_bases); \
-	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
-	redo_bases=`for i in $$bases; do \
-	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
-	            done`; \
-	if test -n "$$redo_bases"; then \
-	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
-	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
-	  if $(am__make_dryrun); then :; else \
-	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
-	  fi; \
-	fi; \
-	if test -n "$$am__remaking_logs"; then \
-	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
-	       "recursion detected" >&2; \
-	else \
-	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
-	fi; \
-	if $(am__make_dryrun); then :; else \
-	  st=0;  \
-	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
-	  for i in $$redo_bases; do \
-	    test -f $$i.trs && test -r $$i.trs \
-	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
-	    test -f $$i.log && test -r $$i.log \
-	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
-	  done; \
-	  test $$st -eq 0 || exit 1; \
-	fi
-	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
-	ws='[ 	]'; \
-	results=`for b in $$bases; do echo $$b.trs; done`; \
-	test -n "$$results" || results=/dev/null; \
-	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
-	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
-	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
-	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
-	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
-	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
-	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
-	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
-	  success=true; \
-	else \
-	  success=false; \
-	fi; \
-	br='==================='; br=$$br$$br$$br$$br; \
-	result_count () \
-	{ \
-	    if test x"$$1" = x"--maybe-color"; then \
-	      maybe_colorize=yes; \
-	    elif test x"$$1" = x"--no-color"; then \
-	      maybe_colorize=no; \
-	    else \
-	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
-	    fi; \
-	    shift; \
-	    desc=$$1 count=$$2; \
-	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
-	      color_start=$$3 color_end=$$std; \
-	    else \
-	      color_start= color_end=; \
-	    fi; \
-	    echo "$${color_start}# $$desc $$count$${color_end}"; \
-	}; \
-	create_testsuite_report () \
-	{ \
-	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
-	  result_count $$1 "PASS: " $$pass  "$$grn"; \
-	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
-	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
-	  result_count $$1 "FAIL: " $$fail  "$$red"; \
-	  result_count $$1 "XPASS:" $$xpass "$$red"; \
-	  result_count $$1 "ERROR:" $$error "$$mgn"; \
-	}; \
-	{								\
-	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
-	    $(am__rst_title);						\
-	  create_testsuite_report --no-color;				\
-	  echo;								\
-	  echo ".. contents:: :depth: 2";				\
-	  echo;								\
-	  for b in $$bases; do echo $$b; done				\
-	    | $(am__create_global_log);					\
-	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
-	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
-	if $$success; then						\
-	  col="$$grn";							\
-	 else								\
-	  col="$$red";							\
-	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
-	fi;								\
-	echo "$${col}$$br$${std}"; 					\
-	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
-	echo "$${col}$$br$${std}"; 					\
-	create_testsuite_report --maybe-color;				\
-	echo "$$col$$br$$std";						\
-	if $$success; then :; else					\
-	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
-	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
-	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
-	  fi;								\
-	  echo "$$col$$br$$std";					\
-	fi;								\
-	$$success || exit 1
-
-check-TESTS:
-	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
-	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
-	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-	@set +e; $(am__set_TESTS_bases); \
-	log_list=`for i in $$bases; do echo $$i.log; done`; \
-	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
-	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
-	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
-	exit $$?;
-recheck: all 
-	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-	@set +e; $(am__set_TESTS_bases); \
-	bases=`for i in $$bases; do echo $$i; done \
-	         | $(am__list_recheck_tests)` || exit 1; \
-	log_list=`for i in $$bases; do echo $$i.log; done`; \
-	log_list=`echo $$log_list`; \
-	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
-	        am__force_recheck=am--force-recheck \
-	        TEST_LOGS="$$log_list"; \
-	exit $$?
-definitions.sh.log: definitions.sh
-	@p='definitions.sh'; \
-	b='definitions.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-calendar.sh.log: calendar.sh
-	@p='calendar.sh'; \
-	b='calendar.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufrdc_desc_ref.sh.log: bufrdc_desc_ref.sh
-	@p='bufrdc_desc_ref.sh'; \
-	b='bufrdc_desc_ref.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufrdc_ref.sh.log: bufrdc_ref.sh
-	@p='bufrdc_ref.sh'; \
-	b='bufrdc_ref.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_dump.sh.log: bufr_dump.sh
-	@p='bufr_dump.sh'; \
-	b='bufr_dump.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_filter.sh.log: bufr_filter.sh
-	@p='bufr_filter.sh'; \
-	b='bufr_filter.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_json.sh.log: bufr_json.sh
-	@p='bufr_json.sh'; \
-	b='bufr_json.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_compare.sh.log: bufr_compare.sh
-	@p='bufr_compare.sh'; \
-	b='bufr_compare.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_copy.sh.log: bufr_copy.sh
-	@p='bufr_copy.sh'; \
-	b='bufr_copy.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_count.sh.log: bufr_count.sh
-	@p='bufr_count.sh'; \
-	b='bufr_count.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_get.sh.log: bufr_get.sh
-	@p='bufr_get.sh'; \
-	b='bufr_get.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_ls.sh.log: bufr_ls.sh
-	@p='bufr_ls.sh'; \
-	b='bufr_ls.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_set.sh.log: bufr_set.sh
-	@p='bufr_set.sh'; \
-	b='bufr_set.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-gts_ls.sh.log: gts_ls.sh
-	@p='gts_ls.sh'; \
-	b='gts_ls.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-ieee.sh.log: ieee.sh
-	@p='ieee.sh'; \
-	b='ieee.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib1to2.sh.log: grib1to2.sh
-	@p='grib1to2.sh'; \
-	b='grib1to2.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-unit_tests.sh.log: unit_tests.sh
-	@p='unit_tests.sh'; \
-	b='unit_tests.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib2to1.sh.log: grib2to1.sh
-	@p='grib2to1.sh'; \
-	b='grib2to1.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-badgrib.sh.log: badgrib.sh
-	@p='badgrib.sh'; \
-	b='badgrib.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-ls.sh.log: ls.sh
-	@p='ls.sh'; \
-	b='ls.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-filter.sh.log: filter.sh
-	@p='filter.sh'; \
-	b='filter.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-multi.sh.log: multi.sh
-	@p='multi.sh'; \
-	b='multi.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-budg.sh.log: budg.sh
-	@p='budg.sh'; \
-	b='budg.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-gridType.sh.log: gridType.sh
-	@p='gridType.sh'; \
-	b='gridType.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-concept.sh.log: concept.sh
-	@p='concept.sh'; \
-	b='concept.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-decimalPrecision.sh.log: decimalPrecision.sh
-	@p='decimalPrecision.sh'; \
-	b='decimalPrecision.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bitsPerValue.sh.log: bitsPerValue.sh
-	@p='bitsPerValue.sh'; \
-	b='bitsPerValue.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-get_fail.sh.log: get_fail.sh
-	@p='get_fail.sh'; \
-	b='get_fail.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-missing.sh.log: missing.sh
-	@p='missing.sh'; \
-	b='missing.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-local.sh.log: local.sh
-	@p='local.sh'; \
-	b='local.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-step.sh.log: step.sh
-	@p='step.sh'; \
-	b='step.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-set.sh.log: set.sh
-	@p='set.sh'; \
-	b='set.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-iterator.sh.log: iterator.sh
-	@p='iterator.sh'; \
-	b='iterator.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-compare.sh.log: compare.sh
-	@p='compare.sh'; \
-	b='compare.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-level.sh.log: level.sh
-	@p='level.sh'; \
-	b='level.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-index.sh.log: index.sh
-	@p='index.sh'; \
-	b='index.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bitmap.sh.log: bitmap.sh
-	@p='bitmap.sh'; \
-	b='bitmap.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-list.sh.log: list.sh
-	@p='list.sh'; \
-	b='list.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-second_order.sh.log: second_order.sh
-	@p='second_order.sh'; \
-	b='second_order.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-multi_from_message.sh.log: multi_from_message.sh
-	@p='multi_from_message.sh'; \
-	b='multi_from_message.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-change_scanning.sh.log: change_scanning.sh
-	@p='change_scanning.sh'; \
-	b='change_scanning.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-julian.sh.log: julian.sh
-	@p='julian.sh'; \
-	b='julian.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-statistics.sh.log: statistics.sh
-	@p='statistics.sh'; \
-	b='statistics.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-tigge.sh.log: tigge.sh
-	@p='tigge.sh'; \
-	b='tigge.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-tigge_conversions.sh.log: tigge_conversions.sh
-	@p='tigge_conversions.sh'; \
-	b='tigge_conversions.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-read_any.sh.log: read_any.sh
-	@p='read_any.sh'; \
-	b='read_any.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-padding.sh.log: padding.sh
-	@p='padding.sh'; \
-	b='padding.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-lamb_az_eq_area.sh.log: lamb_az_eq_area.sh
-	@p='lamb_az_eq_area.sh'; \
-	b='lamb_az_eq_area.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_to_netcdf.sh.log: grib_to_netcdf.sh
-	@p='grib_to_netcdf.sh'; \
-	b='grib_to_netcdf.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-debug.sh.log: debug.sh
-	@p='debug.sh'; \
-	b='debug.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-jpeg.sh.log: jpeg.sh
-	@p='jpeg.sh'; \
-	b='jpeg.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-ccsds.sh.log: ccsds.sh
-	@p='ccsds.sh'; \
-	b='ccsds.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-.test.log:
-	@p='$<'; \
-	$(am__set_b); \
-	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-#.test$(EXEEXT).log:
-#	@p='$<'; \
-#	$(am__set_b); \
-#	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
-#	--log-file $$b.log --trs-file $$b.trs \
-#	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
-#	"$$tst" $(AM_TESTS_FD_REDIRECT)
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
-	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
-	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: check-am install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
-	ctags ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	recheck tags tags-am uninstall uninstall-am
-
-
-# First download all the necessary data for testing
-# Note: if download fails, no tests will be done
-$(TESTS): download_data
-download_data:
-	@$(top_srcdir)/data/download.sh $(top_srcdir)/data
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/tests/Makefile.am b/tests/Makefile.am
index e3c6b3d..bed4aaf 100755
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,19 +1,64 @@
-TESTS = definitions.sh calendar.sh \
-        bufrdc_desc_ref.sh bufrdc_ref.sh bufr_dump.sh bufr_filter.sh \
-        bufr_json.sh bufr_compare.sh bufr_copy.sh bufr_count.sh bufr_get.sh bufr_ls.sh bufr_set.sh \
-				gts_ls.sh \
-        ieee.sh grib1to2.sh \
+TESTS = definitions.sh \
+        calendar.sh \
+        bufrdc_desc_ref.sh \
+        bufrdc_ref.sh \
+        bufr_dump.sh \
+        bufr_filter.sh \
+        bufr_json.sh \
+        bufr_compare.sh \
+        bufr_copy.sh \
+        bufr_count.sh \
+        bufr_get.sh \
+        bufr_ls.sh \
+        bufr_set.sh \
+        bufr_change_edition.sh \
+        gts_ls.sh \
+        metar_ls.sh \
+        metar_dump.sh \
+        ieee.sh \
+        grib1to2.sh \
         unit_tests.sh \
-        grib2to1.sh badgrib.sh ls.sh filter.sh  \
-        multi.sh budg.sh gridType.sh concept.sh decimalPrecision.sh \
-        bitsPerValue.sh get_fail.sh missing.sh \
-        local.sh step.sh set.sh iterator.sh \
-        compare.sh level.sh index.sh \
-        bitmap.sh list.sh second_order.sh \
-        multi_from_message.sh change_scanning.sh \
-        julian.sh statistics.sh tigge.sh tigge_conversions.sh \
-        read_any.sh padding.sh lamb_az_eq_area.sh grib_to_netcdf.sh debug.sh \
-        jpeg.sh ccsds.sh
+        grib2to1.sh \
+        badgrib.sh \
+        ls.sh \
+        filter.sh  \
+        multi.sh \
+        budg.sh \
+        gridType.sh \
+        octahedral.sh \
+        global.sh \
+        concept.sh \
+        decimalPrecision.sh \
+        bitsPerValue.sh \
+        get_fail.sh \
+        missing.sh \
+        local.sh \
+        step.sh \
+        set.sh \
+        iterator.sh \
+        compare.sh \
+        level.sh \
+        index.sh \
+        bitmap.sh \
+        list.sh \
+        second_order.sh \
+        multi_from_message.sh \
+        change_scanning.sh \
+        julian.sh \
+        statistics.sh \
+        tigge.sh \
+        uerra.sh \
+        tigge_conversions.sh \
+        read_any.sh \
+        padding.sh \
+        lamb_az_eq_area.sh \
+        grib_to_netcdf.sh \
+        debug.sh \
+        jpeg.sh \
+        ccsds.sh \
+        md5.sh \
+        grib_util_set_spec.sh \
+        neg_fctime.sh
 
 # First download all the necessary data for testing
 # Note: if download fails, no tests will be done
@@ -24,7 +69,7 @@ download_data:
 noinst_PROGRAMS = packing_check gauss_sub read_any double_cmp packing pack_unpack \
                   multi_from_message julian read_index index gribex_perf\
                   jpeg_perf ccsds_perf so_perf png_perf bpv_limit laplacian \
-                  unit_tests
+                  unit_tests grib_util_set_spec
 
 multi_from_message_SOURCES = multi_from_message.c
 laplacian_SOURCES = laplacian.c
@@ -43,11 +88,12 @@ png_perf_SOURCES = png_perf.c
 ccsds_perf_SOURCES  = ccsds_perf.c
 gribex_perf_SOURCES = gribex_perf.c
 gauss_sub_SOURCES = gauss_sub.c
+grib_util_set_spec_SOURCES = grib_util_set_spec.c
 
 LDADD = $(top_builddir)/src/libeccodes.la $(EMOS_LIB)
 
 INCLUDES   = -I$(top_builddir)/src
 
-EXTRA_DIST = $(TESTS) mf.rules filter_rules include.sh include.ctest.sh.in \
+EXTRA_DIST = $(TESTS) mf.rules filter_rules include.sh include.ctest.sh.in utils.sh \
              lamb_az_eq_area.ref CMakeLists.txt number_compare.pl
 
diff --git a/tests/Makefile.in b/tests/Makefile.in
index a03782a..978bbd5 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -84,7 +84,8 @@ noinst_PROGRAMS = packing_check$(EXEEXT) gauss_sub$(EXEEXT) \
 	julian$(EXEEXT) read_index$(EXEEXT) index$(EXEEXT) \
 	gribex_perf$(EXEEXT) jpeg_perf$(EXEEXT) ccsds_perf$(EXEEXT) \
 	so_perf$(EXEEXT) png_perf$(EXEEXT) bpv_limit$(EXEEXT) \
-	laplacian$(EXEEXT) unit_tests$(EXEEXT)
+	laplacian$(EXEEXT) unit_tests$(EXEEXT) \
+	grib_util_set_spec$(EXEEXT)
 subdir = tests
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(top_srcdir)/config/depcomp $(top_srcdir)/config/test-driver
@@ -126,6 +127,11 @@ gauss_sub_OBJECTS = $(am_gauss_sub_OBJECTS)
 gauss_sub_LDADD = $(LDADD)
 gauss_sub_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
 	$(am__DEPENDENCIES_1)
+am_grib_util_set_spec_OBJECTS = grib_util_set_spec.$(OBJEXT)
+grib_util_set_spec_OBJECTS = $(am_grib_util_set_spec_OBJECTS)
+grib_util_set_spec_LDADD = $(LDADD)
+grib_util_set_spec_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
+	$(am__DEPENDENCIES_1)
 am_gribex_perf_OBJECTS = gribex_perf.$(OBJEXT)
 gribex_perf_OBJECTS = $(am_gribex_perf_OBJECTS)
 gribex_perf_LDADD = $(LDADD)
@@ -231,15 +237,17 @@ am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
 SOURCES = bpv_limit.c $(ccsds_perf_SOURCES) $(double_cmp_SOURCES) \
-	$(gauss_sub_SOURCES) $(gribex_perf_SOURCES) $(index_SOURCES) \
-	$(jpeg_perf_SOURCES) $(julian_SOURCES) $(laplacian_SOURCES) \
+	$(gauss_sub_SOURCES) $(grib_util_set_spec_SOURCES) \
+	$(gribex_perf_SOURCES) $(index_SOURCES) $(jpeg_perf_SOURCES) \
+	$(julian_SOURCES) $(laplacian_SOURCES) \
 	$(multi_from_message_SOURCES) $(pack_unpack_SOURCES) \
 	$(packing_SOURCES) $(packing_check_SOURCES) \
 	$(png_perf_SOURCES) $(read_any_SOURCES) $(read_index_SOURCES) \
 	$(so_perf_SOURCES) $(unit_tests_SOURCES)
 DIST_SOURCES = bpv_limit.c $(ccsds_perf_SOURCES) $(double_cmp_SOURCES) \
-	$(gauss_sub_SOURCES) $(gribex_perf_SOURCES) $(index_SOURCES) \
-	$(jpeg_perf_SOURCES) $(julian_SOURCES) $(laplacian_SOURCES) \
+	$(gauss_sub_SOURCES) $(grib_util_set_spec_SOURCES) \
+	$(gribex_perf_SOURCES) $(index_SOURCES) $(jpeg_perf_SOURCES) \
+	$(julian_SOURCES) $(laplacian_SOURCES) \
 	$(multi_from_message_SOURCES) $(pack_unpack_SOURCES) \
 	$(packing_SOURCES) $(packing_check_SOURCES) \
 	$(png_perf_SOURCES) $(read_any_SOURCES) $(read_index_SOURCES) \
@@ -659,22 +667,67 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-TESTS = definitions.sh calendar.sh \
-        bufrdc_desc_ref.sh bufrdc_ref.sh bufr_dump.sh bufr_filter.sh \
-        bufr_json.sh bufr_compare.sh bufr_copy.sh bufr_count.sh bufr_get.sh bufr_ls.sh bufr_set.sh \
-				gts_ls.sh \
-        ieee.sh grib1to2.sh \
+TESTS = definitions.sh \
+        calendar.sh \
+        bufrdc_desc_ref.sh \
+        bufrdc_ref.sh \
+        bufr_dump.sh \
+        bufr_filter.sh \
+        bufr_json.sh \
+        bufr_compare.sh \
+        bufr_copy.sh \
+        bufr_count.sh \
+        bufr_get.sh \
+        bufr_ls.sh \
+        bufr_set.sh \
+        bufr_change_edition.sh \
+        gts_ls.sh \
+        metar_ls.sh \
+        metar_dump.sh \
+        ieee.sh \
+        grib1to2.sh \
         unit_tests.sh \
-        grib2to1.sh badgrib.sh ls.sh filter.sh  \
-        multi.sh budg.sh gridType.sh concept.sh decimalPrecision.sh \
-        bitsPerValue.sh get_fail.sh missing.sh \
-        local.sh step.sh set.sh iterator.sh \
-        compare.sh level.sh index.sh \
-        bitmap.sh list.sh second_order.sh \
-        multi_from_message.sh change_scanning.sh \
-        julian.sh statistics.sh tigge.sh tigge_conversions.sh \
-        read_any.sh padding.sh lamb_az_eq_area.sh grib_to_netcdf.sh debug.sh \
-        jpeg.sh ccsds.sh
+        grib2to1.sh \
+        badgrib.sh \
+        ls.sh \
+        filter.sh  \
+        multi.sh \
+        budg.sh \
+        gridType.sh \
+        octahedral.sh \
+        global.sh \
+        concept.sh \
+        decimalPrecision.sh \
+        bitsPerValue.sh \
+        get_fail.sh \
+        missing.sh \
+        local.sh \
+        step.sh \
+        set.sh \
+        iterator.sh \
+        compare.sh \
+        level.sh \
+        index.sh \
+        bitmap.sh \
+        list.sh \
+        second_order.sh \
+        multi_from_message.sh \
+        change_scanning.sh \
+        julian.sh \
+        statistics.sh \
+        tigge.sh \
+        uerra.sh \
+        tigge_conversions.sh \
+        read_any.sh \
+        padding.sh \
+        lamb_az_eq_area.sh \
+        grib_to_netcdf.sh \
+        debug.sh \
+        jpeg.sh \
+        ccsds.sh \
+        md5.sh \
+        grib_util_set_spec.sh \
+        neg_fctime.sh
 
 multi_from_message_SOURCES = multi_from_message.c
 laplacian_SOURCES = laplacian.c
@@ -693,9 +746,10 @@ png_perf_SOURCES = png_perf.c
 ccsds_perf_SOURCES = ccsds_perf.c
 gribex_perf_SOURCES = gribex_perf.c
 gauss_sub_SOURCES = gauss_sub.c
+grib_util_set_spec_SOURCES = grib_util_set_spec.c
 LDADD = $(top_builddir)/src/libeccodes.la $(EMOS_LIB)
 INCLUDES = -I$(top_builddir)/src
-EXTRA_DIST = $(TESTS) mf.rules filter_rules include.sh include.ctest.sh.in \
+EXTRA_DIST = $(TESTS) mf.rules filter_rules include.sh include.ctest.sh.in utils.sh \
              lamb_az_eq_area.ref CMakeLists.txt number_compare.pl
 
 all: all-am
@@ -758,6 +812,10 @@ gauss_sub$(EXEEXT): $(gauss_sub_OBJECTS) $(gauss_sub_DEPENDENCIES) $(EXTRA_gauss
 	@rm -f gauss_sub$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gauss_sub_OBJECTS) $(gauss_sub_LDADD) $(LIBS)
 
+grib_util_set_spec$(EXEEXT): $(grib_util_set_spec_OBJECTS) $(grib_util_set_spec_DEPENDENCIES) $(EXTRA_grib_util_set_spec_DEPENDENCIES) 
+	@rm -f grib_util_set_spec$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(grib_util_set_spec_OBJECTS) $(grib_util_set_spec_LDADD) $(LIBS)
+
 gribex_perf$(EXEEXT): $(gribex_perf_OBJECTS) $(gribex_perf_DEPENDENCIES) $(EXTRA_gribex_perf_DEPENDENCIES) 
 	@rm -f gribex_perf$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gribex_perf_OBJECTS) $(gribex_perf_LDADD) $(LIBS)
@@ -824,6 +882,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ccsds_perf.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/double_cmp.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gauss_sub.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_util_set_spec.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gribex_perf.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/index.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/jpeg_perf.Po at am__quote@
@@ -1150,6 +1209,13 @@ bufr_set.sh.log: bufr_set.sh
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bufr_change_edition.sh.log: bufr_change_edition.sh
+	@p='bufr_change_edition.sh'; \
+	b='bufr_change_edition.sh'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 gts_ls.sh.log: gts_ls.sh
 	@p='gts_ls.sh'; \
 	b='gts_ls.sh'; \
@@ -1157,6 +1223,20 @@ gts_ls.sh.log: gts_ls.sh
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+metar_ls.sh.log: metar_ls.sh
+	@p='metar_ls.sh'; \
+	b='metar_ls.sh'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+metar_dump.sh.log: metar_dump.sh
+	@p='metar_dump.sh'; \
+	b='metar_dump.sh'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 ieee.sh.log: ieee.sh
 	@p='ieee.sh'; \
 	b='ieee.sh'; \
@@ -1227,6 +1307,20 @@ gridType.sh.log: gridType.sh
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+octahedral.sh.log: octahedral.sh
+	@p='octahedral.sh'; \
+	b='octahedral.sh'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+global.sh.log: global.sh
+	@p='global.sh'; \
+	b='global.sh'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 concept.sh.log: concept.sh
 	@p='concept.sh'; \
 	b='concept.sh'; \
@@ -1367,6 +1461,13 @@ tigge.sh.log: tigge.sh
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+uerra.sh.log: uerra.sh
+	@p='uerra.sh'; \
+	b='uerra.sh'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 tigge_conversions.sh.log: tigge_conversions.sh
 	@p='tigge_conversions.sh'; \
 	b='tigge_conversions.sh'; \
@@ -1423,6 +1524,27 @@ ccsds.sh.log: ccsds.sh
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+md5.sh.log: md5.sh
+	@p='md5.sh'; \
+	b='md5.sh'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+grib_util_set_spec.sh.log: grib_util_set_spec.sh
+	@p='grib_util_set_spec.sh'; \
+	b='grib_util_set_spec.sh'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+neg_fctime.sh.log: neg_fctime.sh
+	@p='neg_fctime.sh'; \
+	b='neg_fctime.sh'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 .test.log:
 	@p='$<'; \
 	$(am__set_b); \
diff --git a/tests/asca_139.t1.ref b/tests/asca_139.t1.ref
new file mode 100644
index 0000000..06ae996
--- /dev/null
+++ b/tests/asca_139.t1.ref
@@ -0,0 +1,253 @@
+/beamIdentifier=2/backscatter=-24.6 -24.78 -24.92 -25.05 -25.04 -24.72 -23.83 -22.57 
+-21.71 -21.76 -21.81 -20.97 -19.97 -19.01 -17.8 -16.22 
+-14.67 -13.26 -12.02 -11.01 -9.84 -7.31 -8.76 -10.13 
+-11.36 -12.58 -13.49 -13.87 -13.77 -13.44 -13.42 -13.58 
+-13.92 -14.6 -15.36 -16.22 -17.11 -17.98 -18.56 -18.58 
+-18.49 -18.45 -22.66 -22.99 -23.37 -23.85 -24.27 -24.57 
+-24.54 -24.17 -23.96 -24.47 -24.53 -23.11 -21.62 -20.27 
+-18.93 -17.42 -15.78 -14.13 -12.6 -11.35 -10.06 -7.38 
+-8.57 -9.82 -11.43 -12.88 -13.83 -14.25 -14.21 -14.16 
+-14.32 -14.44 -14.73 -15.21 -15.94 -17 -17.87 -18.64 
+-19.31 -19.52 -19.49 -19.32 -21.03 -21.35 -21.89 -22.54 
+-23.05 -23.63 -24.2 -24.67 -25.29 -26.17 -26.72 -25.84 
+-23.76 -21.4 -19.65 -18.37 -16.87 -15.2 -13.55 -12.06 
+-10.58 -7.89 -8.96 -10.3 -11.99 -13.2 -14 -14.65 
+-14.94 -15.08 -15.41 -15.63 -15.72 -15.86 -16.48 -17.61 
+-18.16 -18.4 -18.99 -19.69 -19.96 -19.66 -19.85 -20.1 
+-20.6 -21.03 -21.26 -21.69 -22.36 -23 -23.61 -24.14 
+-24.65 -25.15 -24.67 -22.61 -20.73 -19.69 -18.63 -16.96 
+-15.02 -13.19 -11.39 -8.81 -10.08 -11.44 -12.7 -13.62 
+-14.39 -15.05 -15.54 -16.06 -16.61 -16.72 -16.39 -16.03 
+-16.23 -16.78 -16.77 -16.88 -17.6 -18.42 -18.91 -18.69 
+-19.15 -19.34 -19.64 -19.75 -19.72 -19.93 -20.39 -20.92 
+-21.35 -21.57 -21.5 -21.6 -21.86 -21.37 -20.23 -19.44 
+-19.13 -18.31 -16.75 -14.67 -12.4 -9.59 -11.09 -12.25 
+-13.21 -14.16 -14.96 -15.52 -16.1 -16.9 -17.52 -17.55 
+-16.99 -16.1 -15.4 -15.06 -15 -15.41 -16.21 -16.92 
+-17.31 -17.15 -19.07 -19.1 -19.07 -18.98 -18.93 -18.97 
+-19.13 -19.43 -19.84 -20.11 -19.88 -19.75 -19.94 -19.76 
+-18.83 -17.94 -17.58 -17.15 -16.44 -14.97 -12.82 -9.96 
+-11.6 -12.72 -13.7 -14.73 -15.51 -16.07 -16.73 -17.52 
+-18.03 -17.81 -16.83 -15.45 -14.36 -13.91 -14.13 -14.77 
+-15.6 -16.27 -16.45 -16.26 -19.69 -19.74 -19.39 -19.17 
+-19.07 -18.92 -18.77 -18.74 -18.9 -19.14 -19.03 -18.89 
+-19.18 -19.33 -18.47 -17.42 -16.8 -16.13 -15.33 -14.26 
+-12.45 -9.94 -11.43 -12.69 -13.89 -14.97 -15.83 -16.45 
+-16.96 -17.36 -17.29 -16.41 -15.13 -14.08 -13.56 -13.51 
+-13.87 -14.48 -15.32 -16.01 -16.11 -16.02 -20.39 -20.83 
+-20.5 -20.14 -19.7 -19.13 -18.59 -18.05 -17.62 -17.48 
+-17.4 -17.47 -18.03 -18.48 -17.84 -16.89 -16.3 -15.7 
+-14.82 -13.58 -11.77 -9.62 -10.94 -12.35 -13.56 -14.61 
+-15.58 -16.04 -16.12 -16.02 -15.41 -14.46 -13.76 -13.49 
+-13.47 -13.62 -13.96 -14.41 -15.14 -15.77 -15.99 -16.05 
+-21.2 -21.87 -21.7 -21.21 -20.41 -19.52 -18.84 -18.06 
+-17.14 -16.49 -16.18 -16.34 -16.89 -17.24 -16.8 -16.03 
+-15.48 -14.93 -14.03 -12.78 -11.25 -9.42 -10.69 -11.98 
+-13.04 -13.99 -14.75 -14.93 -14.92 -14.78 -14.24 -13.68 
+-13.54 -13.65 -13.73 -13.91 -14.22 -14.69 -15.29 -15.82 
+-16.1 -16.25 -22.32 -22.84 -22.24 -21.41 -20.76 -20.11 
+-19.55 -18.73 -17.28 -16.02 -15.48 -15.76 -16.39 -16.55 
+-15.95 -15.21 -14.7 -14.23 -13.47 -12.46 -11.22 -9.44 
+-10.65 -11.82 -12.87 -13.61 -14.05 -14.21 -14.32 -14.25 
+-13.98 -13.76 -13.81 -13.97 -14.07 -14.27 -14.62 -15.1 
+-15.56 -15.99 -16.38 -16.86 -21.55 -21.83 -21.17 -20.33 
+-20.04 -19.78 -19.07 -18.06 -16.75 -15.59 -14.98 -15.03 
+-15.48 -15.56 -14.72 -13.86 -13.49 -13.36 -12.93 -11.95 
+-10.61 -9.38 -10.6 -11.77 -12.78 -13.4 -13.87 -14.2 
+-14.32 -14.19 -14.11 -14.08 -14.1 -14.28 -14.49 -14.78 
+-15.17 -15.59 -15.95 -16.31 -16.83 -17.54 -20.78 -20.86 
+-20.42 -19.88 -19.85 -19.68 -18.62 -17.29 -16.35 -15.91 
+-15.49 -14.96 -14.61 -14.36 -13.68 -12.73 -12.08 -11.71 
+-11.28 -10.29 -8.91 -9.25 -10.57 -11.78 -12.63 -13.3 
+-13.92 -14.4 -14.71 -14.71 -14.7 -14.69 -14.63 -14.7 
+-14.94 -15.33 -15.81 -16.24 -16.49 -16.77 -17.3 -17.87 
+-20.68 -20.42 -19.91 -19.75 -20.11 -20.17 -18.91 -17.28 
+-16.46 -16.6 -16.61 -15.7 -14.65 -14.01 -13.43 -12.57 
+-11.67 -10.91 -10.29 -9.26 -7.86 -9.39 -10.72 -11.83 
+-12.54 -13.26 -13.84 -14.36 -14.96 -15.33 -15.46 -15.48 
+-15.39 -15.28 -15.41 -15.79 -16.31 -16.74 -16.83 -17.06 
+-17.59 -18.11 -20.69 -20.29 -19.68 -19.6 -20.27 -20.84 
+-19.82 -18.15 -17.24 -17.3 -17.4 -16.57 -15.37 -14.52 
+-13.77 -12.92 -12.05 -11.19 -10.31 -9.14 -7.68 -9.55 
+-10.75 -11.81 -12.63 -13.42 -13.91 -14.31 -14.94 -15.52 
+-15.86 -15.96 -15.82 -15.69 -15.82 -16.13 -16.5 -16.8 
+-16.94 -17.24 -17.79 -18.35 -20.91 -20.45 -19.81 -19.44 
+-19.98 -20.72 -20.12 -18.95 -18.28 -18.08 -17.84 -17.3 
+-16.39 -15.52 -14.49 -13.48 -12.69 -11.77 -10.52 -9.08 
+-7.69 -9.6 -10.75 -11.83 -12.84 -13.64 -14.06 -14.45 
+-15.13 -15.82 -16.24 -16.27 -15.95 -15.87 -16.19 -16.57 
+-16.77 -16.93 -17.16 -17.6 -18.18 -18.62 -20.82 -20.13 
+-19.65 -19.25 -19.53 -19.97 -19.55 -18.86 -18.63 -18.44 
+-17.79 -17.32 -16.84 -16.07 -14.94 -13.94 -13.23 -12.3 
+-10.82 -9.19 -7.83 -9.63 -10.93 -12.02 -12.92 -13.56 
+-14.02 -14.6 -15.46 -16.29 -16.7 -16.61 -16.25 -16.24 
+-16.64 -17.1 -17.26 -17.4 -17.71 -18.18 -18.7 -18.99 
+-20.59 -19.8 -19.41 -19.23 -19.49 -19.61 -19.22 -18.79 
+-18.57 -18.23 -17.45 -16.9 -16.6 -16.08 -15.04 -14.14 
+-13.55 -12.74 -11.24 -9.62 -8.23 -9.57 -11.04 -12.15 
+-12.9 -13.5 -14.06 -14.68 -15.56 -16.37 -16.83 -16.95 
+-16.78 -16.84 -17.2 -17.61 -17.85 -18.05 -18.34 -18.64 
+-19.04 -19.28 -20.85 -20.06 -19.67 -19.57 -19.72 -19.43 
+-18.91 -18.59 -18.17 -17.6 -17.01 -16.62 -16.35 -15.89 
+-15.02 -14.2 -13.59 -12.84 -11.46 -9.94 -8.6 -9.26 
+-10.79 -11.87 -12.7 -13.49 -14.14 -14.71 -15.42 -16.08 
+-16.72 -17.24 -17.35 -17.48 -17.86 -18.33 -18.68 -18.93 
+-19.16 -19.34 -19.56 -19.55 -21.72 -20.86 -20.44 -20.34 
+-20.19 -19.46 -18.66 -18.15 -17.69 -17.21 -16.92 -16.69 
+-16.27 -15.67 -14.95 -14.11 -13.29 -12.56 -11.41 -9.93 
+-8.59 -8.83 -10.29 -11.46 -12.51 -13.43 -14.04 -14.63 
+-15.3 -15.93 -16.71 -17.47 -17.87 -18.09 -18.54 -19.16 
+-19.62 -19.99 -20.23 -20.3 -20.36 -19.93 -22.54 -21.65 
+-21.19 -21.05 -20.68 -19.62 -18.55 -17.87 -17.55 -17.31 
+-17.17 -16.98 -16.4 -15.69 -15 -14.08 -13.13 -12.42 
+-11.36 -9.9 -8.51 -8.7 -10.02 -11.15 -12.34 -13.37 
+-14.02 -14.7 -15.47 -16.17 -16.89 -17.67 -18.33 -18.74 
+-19.25 -19.98 -20.59 -21.06 -21.23 -21.17 -21.06 -20.25 
+-22.71 -21.9 -21.41 -21.11 -20.59 -19.5 -18.53 -18.04 
+-17.93 -17.7 -17.38 -17.18 -16.58 -15.74 -15.06 -14.15 
+-13.15 -12.34 -11.25 -9.82 -8.43 -8.86 -9.99 -10.98 
+-12.22 -13.41 -14.24 -14.98 -15.84 -16.56 -17.22 -18.01 
+-18.78 -19.35 -19.95 -20.72 -21.32 -21.74 -21.92 -22 
+-21.81 -20.83 -22.64 -22.06 -21.4 -20.8 -20.13 -19.19 
+-18.51 -18.36 -18.33 -17.98 -17.55 -17.26 -16.54 -15.58 
+-14.79 -13.84 -12.86 -11.98 -10.88 -9.6 -8.41 -8.96 
+-9.9 -10.91 -12.2 -13.36 -14.07 -14.76 -15.73 -16.62 
+-17.38 -18.22 -19.02 -19.67 -20.33 -21.05 -21.5 -21.73 
+-21.93 -22.16 -22.16 -21.57 -22.38 -22.08 -21.29 -20.51 
+-19.75 -18.91 -18.42 -18.31 -18.22 -17.9 -17.57 -17.26 
+-16.42 -15.44 -14.59 -13.62 -12.68 -11.82 -10.77 -9.59 
+-8.51 -8.91 -9.9 -11.01 -12.15 -13.07 -13.58 -14.16 
+-15.22 -16.33 -17.11 -17.92 -18.88 -19.76 -20.52 -21.11 
+-21.2 -21.11 -21.18 -21.46 -21.74 -21.83 -21.82 -21.8 
+-21.06 -20.28 -19.59 -18.88 -18.48 -18.23 -17.95 -17.68 
+-17.5 -17.25 -16.42 -15.44 -14.69 -13.83 -12.89 -11.93 
+-10.8 -9.52 -8.41 -8.94 -10.1 -11.2 -12.09 -12.88 
+-13.42 -14.01 -15.09 -16.17 -16.71 -17.32 -18.43 -19.68 
+-20.57 -21.07 -20.9 -20.54 -20.39 -20.6 -21.15 -21.9 
+-21.31 -21.32 -20.78 -20.08 -19.6 -19.13 -18.75 -18.38 
+-17.93 -17.59 -17.47 -17.28 -16.58 -15.63 -14.98 -14.22 
+-13.25 -12.11 -10.79 -9.41 -8.21 -9.05 -10.42 -11.48 
+-12.24 -12.96 -13.53 -14.23 -15.28 -16.05 -16.4 -16.99 
+-18.16 -19.51 -20.42 -20.89 -20.69 -20.24 -19.8 -19.8 
+-20.48 -21.79 -21.22 -20.9 -20.34 -19.79 -19.47 -19.14 
+-18.71 -18.3 -18.03 -17.86 -17.69 -17.4 -16.8 -15.84 
+-15.04 -14.25 -13.27 -12.11 -10.72 -9.3 -8.13 -9.07 
+-10.57 -11.64 -12.45 -13.12 -13.7 -14.52 -15.5 -15.97 
+-16.21 -16.87 -18.01 -19.19 -19.99 -20.43 -20.39 -19.98 
+-19.46 -19.43 -20.07 -21.44 -21.51 -20.73 -19.9 -19.48 
+-19.24 -18.94 -18.52 -18.11 -18.16 -18.31 -18.02 -17.41 
+-16.67 -15.75 -14.77 -13.85 -12.89 -11.82 -10.48 -9.11 
+-8.05 -8.82 -10.33 -11.58 -12.57 -13.3 -13.95 -14.88 
+-15.83 -16.28 -16.41 -16.99 -18.01 -18.92 -19.49 -19.84 
+-19.87 -19.55 -19.35 -19.51 -20.17 -21.42 -21.56 -20.75 
+-19.86 -19.47 -19.26 -18.94 -18.45 -18.03 -18.12 -18.26 
+-17.88 -17.1 -16.27 -15.44 -14.42 -13.47 -12.57 -11.52 
+-10.28 -9.02 -7.93 -8.63 -10.13 -11.37 -12.49 -13.42 
+-14.11 -14.93 -15.93 -16.63 -16.86 -17.36 -18.22 -18.95 
+-19.41 -19.63 -19.4 -19.16 -19.44 -19.95 -20.65 -21.68 
+-21.05 -20.56 -19.86 -19.47 -19.31 -19.01 -18.39 -17.94 
+-17.96 -17.93 -17.47 -16.74 -15.94 -15.14 -14.19 -13.37 
+-12.61 -11.59 -10.36 -9.12 -7.98 -8.64 -10.07 -11.22 
+-12.32 -13.36 -14.05 -14.76 -15.82 -16.65 -17.06 -17.58 
+-18.33 -19.14 -19.64 -19.63 -19.09 -18.91 -19.58 -20.51 
+-21.26 -21.93 -20.12 -19.88 -19.3 -18.93 -18.82 -18.58 
+-18.05 -17.66 -17.63 -17.55 -17.17 -16.48 -15.71 -14.96 
+-14.15 -13.5 -12.85 -11.82 -10.57 -9.43 -8.38 -8.95 
+-10.28 -11.39 -12.36 -13.25 -13.94 -14.65 -15.64 -16.43 
+-17.04 -17.78 -18.5 -19.18 -19.7 -19.72 -19.29 -19.25 
+-20.03 -21.15 -21.94 -22.42 -18.93 -18.86 -18.41 -18.03 
+-17.84 -17.6 -17.22 -16.91 -16.8 -16.72 -16.61 -16.24 
+-15.63 -14.95 -14.24 -13.69 -13.03 -11.94 -10.73 -9.66 
+-8.74 -9.57 -10.66 -11.63 -12.6 -13.42 -14.15 -14.94 
+-15.72 -16.37 -17.1 -18.04 -18.88 -19.46 -19.85 -19.89 
+-19.74 -19.86 -20.6 -21.72 -22.55 -22.87 -17.94 -17.98 
+-17.65 -17.3 -17.1 -16.91 -16.65 -16.35 -16.17 -16.04 
+-16 -15.99 -15.64 -15.02 -14.38 -13.83 -13.12 -12.07 
+-10.89 -9.7 -8.77 -10.03 -11.04 -12.04 -13.13 -14.02 
+-14.75 -15.61 -16.31 -16.76 -17.36 -18.37 -19.44 -20.11 
+-20.19 -20.01 -20.09 -20.44 -21.18 -22.2 -22.91 -23.02 
+-17.49 -17.44 -17.16 -16.96 -16.91 -16.8 -16.6 -16.26 
+-15.99 -15.78 -15.71 -15.76 -15.45 -14.9 -14.41 -13.9 
+-13.21 -12.16 -10.92 -9.73 -8.8 -9.93 -11.26 -12.49 
+-13.66 -14.71 -15.6 -16.45 -17.14 -17.47 -17.95 -18.86 
+-19.84 -20.46 -20.32 -19.95 -20.14 -20.87 -21.77 -22.57 
+-23.08 -23.14 -17.34 -17.11 -16.75 -16.59 -16.64 -16.68 
+-16.59 -16.3 -16 -15.74 -15.65 -15.6 -15.27 -14.78 
+-14.38 -14 -13.38 -12.37 -11.13 -9.93 -9.02 -9.6 
+-11.08 -12.53 -13.96 -15.27 -16.31 -17 -17.46 -17.74 
+-18.11 -18.86 -19.81 -20.49 -20.31 -19.76 -19.69 -20.43 
+-21.37 -22.29 -22.98 -23.06 -17.21 -16.95 -16.54 -16.23 
+-16.22 -16.37 -16.39 -16.18 -15.98 -15.8 -15.68 -15.55 
+-15.29 -14.84 -14.45 -14.08 -13.4 -12.52 -11.43 -10.18 
+-9.21 -9.25 -10.6 -12.02 -13.65 -15.16 -16.13 -16.6 
+-16.94 -17.23 -17.66 -18.51 -19.5 -20.26 -20.32 -19.79 
+-19.43 -19.77 -20.45 -21.39 -22.17 -22.19 -17.09 -16.87 
+-16.47 -16.13 -16.09 -16.3 -16.43 -16.21 -16.02 -15.87 
+-15.78 -15.69 -15.32 -14.83 -14.46 -13.96 -13.27 -12.43 
+-11.35 -10.17 -9.2 -8.97 -10.24 -11.52 -12.99 -14.29 
+-15.12 -15.66 -16.16 -16.59 -17.09 -17.84 -18.79 -19.82 
+-20.25 -19.85 -19.52 -19.63 -20.02 -20.79 -21.45 -21.5 
+-17.01 -16.85 -16.41 -16.06 -16.11 -16.52 -16.88 -16.73 
+-16.5 -16.29 -16.15 -15.99 -15.43 -14.84 -14.48 -13.91 
+-13.22 -12.38 -11.25 -10.17 -9.2 -8.91 -10.17 -11.29 
+-12.47 -13.55 -14.39 -15.02 -15.74 -16.36 -16.73 -17.26 
+-18.22 -19.41 -20.03 -19.89 -19.71 -19.64 -19.75 -20.34 
+-21.09 -21.27 -16.97 -16.91 -16.41 -15.95 -16.14 -16.9 
+-17.53 -17.55 -17.37 -17.04 -16.7 -16.38 -15.72 -15.01 
+-14.65 -14.09 -13.31 -12.46 -11.31 -10.22 -9.29 -9.01 
+-10.12 -11.16 -12.26 -13.28 -14.12 -14.74 -15.6 -16.34 
+-16.61 -17.06 -18.02 -19.14 -19.69 -19.82 -19.7 -19.46 
+-19.4 -19.91 -20.64 -21.02 -17.05 -16.98 -16.45 -15.99 
+-16.35 -17.31 -17.93 -17.97 -17.85 -17.48 -17.02 -16.72 
+-16.09 -15.3 -14.92 -14.37 -13.51 -12.53 -11.25 -10.06 
+-9.16 -9.13 -10.16 -11.21 -12.28 -13.27 -14 -14.6 
+-15.44 -16.11 -16.46 -17.11 -18.14 -18.87 -19.12 -19.48 
+-19.63 -19.51 -19.54 -19.96 -20.4 -20.69 -17.25 -17.07 
+-16.54 -16.24 -16.75 -17.62 -17.85 -17.7 -17.57 -17.29 
+-17.06 -16.96 -16.43 -15.72 -15.29 -14.74 -13.78 -12.65 
+-11.21 -9.83 -8.83 -9.3 -10.33 -11.4 -12.52 -13.55 
+-14.08 -14.4 -15.11 -15.9 -16.51 -17.34 -18.15 -18.45 
+-18.75 -19.3 -19.65 -19.78 -20.05 -20.48 -20.7 -20.66 
+-17.3 -16.95 -16.51 -16.43 -16.89 -17.35 -17.21 -16.88 
+-16.75 -16.6 -16.56 -16.68 -16.54 -15.99 -15.49 -14.99 
+-14.05 -12.84 -11.28 -9.77 -8.62 -9.49 -10.59 -11.7 
+-12.93 -14.07 -14.37 -14.34 -14.91 -15.83 -16.76 -17.73 
+-18.21 -18.49 -19.09 -19.54 -19.56 -19.77 -20.37 -20.92 
+-21.1 -20.87 -17.17 -16.54 -16.18 -16.28 -16.48 -16.56 
+-16.34 -16.12 -16.08 -15.91 -15.73 -15.8 -16 -15.87 
+-15.45 -14.94 -14.03 -12.8 -11.31 -9.78 -8.55 -9.49 
+-10.86 -12.06 -13.34 -14.46 -14.65 -14.63 -15.18 -15.99 
+-17 -18.07 -18.56 -19.11 -19.85 -19.95 -19.6 -19.88 
+-20.64 -21.1 -21.09 -20.87 -16.87 -16.07 -15.7 -15.73 
+-15.76 -15.71 -15.64 -15.62 -15.57 -15.31 -14.94 -14.84 
+-15.09 -15.44 -15.43 -14.86 -13.88 -12.75 -11.4 -9.87 
+-8.59 -9.49 -11.09 -12.41 -13.7 -14.67 -14.89 -15.21 
+-15.75 -16.29 -17.13 -18.14 -18.91 -19.71 -20.42 -20.34 
+-20.12 -20.53 -21.04 -21.2 -21.13 -21.06 -16.37 -15.53 
+-15.13 -15.02 -15.09 -15.23 -15.34 -15.33 -15.06 -14.62 
+-14.24 -14.06 -14.25 -14.85 -15.37 -14.96 -13.96 -12.9 
+-11.67 -10.14 -8.81 -9.42 -11.01 -12.39 -13.72 -14.72 
+-15.17 -15.7 -16.13 -16.48 -17.16 -18.09 -18.92 -19.68 
+-20.36 -20.54 -20.67 -21.05 -21.13 -21.05 -21.19 -21.41 
+-15.93 -15.1 -14.58 -14.32 -14.46 -14.94 -15.36 -15.21 
+-14.69 -14.15 -13.82 -13.62 -13.72 -14.35 -15.1 -15.15 
+-14.24 -13.13 -12.07 -10.71 -9.31 -9.31 -10.8 -12.18 
+-13.46 -14.63 -15.39 -15.98 -16.34 -16.63 -17.17 -17.98 
+-18.69 -19.15 -19.64 -20.16 -20.62 -20.91 -20.86 -20.86 
+-21.23 -21.53 -15.77 -15.12 -14.54 -14.11 -14.15 -14.69 
+-15.36 -15.23 -14.65 -14.17 -13.85 -13.63 -13.7 -14.22 
+-14.86 -15.17 -14.57 -13.61 -12.59 -11.24 -9.79 -9.4 
+-10.8 -12.1 -13.29 -14.53 -15.48 -16.05 -16.5 -16.92 
+-17.34 -17.85 -18.36 -18.75 -19.2 -19.87 -20.51 -20.87 
+-21.08 -21.41 -21.77 -21.81 -16.07 -15.58 -15.02 -14.45 
+-14.28 -14.69 -15.31 -15.28 -14.85 -14.44 -14.1 -13.9 
+-13.91 -14.17 -14.58 -14.97 -14.83 -14.12 -13.04 -11.65 
+-10.25 -9.53 -10.86 -12.12 -13.31 -14.48 -15.46 -16.09 
+-16.67 -17.15 -17.49 -17.81 -18.23 -18.82 -19.46 -20.13 
+-20.73 -21.31 -21.91 -22.32 -22.51 -22.5 -17.07 -16.57 
+-15.82 -15.01 -14.72 -15.09 -15.57 -15.55 -15.18 -14.78 
+-14.42 -14.16 -14.02 -14.07 -14.22 -14.58 -14.78 -14.39 
+-13.43 -12.14 -10.77 -9.61 -11.03 -12.33 -13.52 -14.62 
+-15.61 -16.33 -16.92 -17.39 -17.73 -18.1 -18.55 -19.22 
+-19.97 -20.6 -21.22 -21.94 -22.49 -22.73 -23.02 -23.36
+
diff --git a/tests/badgrib.sh b/tests/badgrib.sh
index d91cf48..da677f3 100755
--- a/tests/badgrib.sh
+++ b/tests/badgrib.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/bitmap.sh b/tests/bitmap.sh
index 7c15465..215eaea 100755
--- a/tests/bitmap.sh
+++ b/tests/bitmap.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/bits.c b/tests/bits.c
index 70d46d6..ddf1d28 100755
--- a/tests/bits.c
+++ b/tests/bits.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tests/bitsPerValue.sh b/tests/bitsPerValue.sh
index dc7bcbf..cbecdde 100755
--- a/tests/bitsPerValue.sh
+++ b/tests/bitsPerValue.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/bpv_limit.c b/tests/bpv_limit.c
index 46c0632..0530a66 100644
--- a/tests/bpv_limit.c
+++ b/tests/bpv_limit.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tests/bpv_limit.sh b/tests/bpv_limit.sh
index c6f09ce..d540247 100755
--- a/tests/bpv_limit.sh
+++ b/tests/bpv_limit.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/budg.sh b/tests/budg.sh
index a8aa2fc..5d920fa 100755
--- a/tests/budg.sh
+++ b/tests/budg.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/bufr_change_edition.sh b/tests/bufr_change_edition.sh
new file mode 100755
index 0000000..6eb6d06
--- /dev/null
+++ b/tests/bufr_change_edition.sh
@@ -0,0 +1,35 @@
+#!/bin/sh
+# Copyright 2005-2016 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.sh
+
+cd ${data_dir}/bufr
+
+#Define a common label for all the tmp files
+label="bufr_change_edition"
+
+fBufrTmp=${label}".bufr.tmp"
+
+bufr_files=`cat ${data_dir}/bufr/bufr_data_files.txt`
+
+for f in ${bufr_files}; do
+  if [ "$f" = "ias1_240.bufr" ]; then continue; fi
+  if [ "$f" = "bad.bufr" ]; then      continue; fi
+  
+  # Convert to BUFR edition 4
+  ${tools_dir}bufr_set -s editionNumber=4 $f $fBufrTmp
+  ${tools_dir}bufr_compare $f $fBufrTmp
+  
+  ed=`${tools_dir}bufr_get -w count=1 -p editionNumber $fBufrTmp`
+  [ "$ed" = "4" ]
+
+done
+
+rm -f $fBufrTmp
diff --git a/tests/bufr_compare.sh b/tests/bufr_compare.sh
index faa42a6..62e2224 100755
--- a/tests/bufr_compare.sh
+++ b/tests/bufr_compare.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -104,14 +104,24 @@ ${tools_dir}/bufr_compare -r ${fBufrInput1} ${fBufrInput2}>> $fLog
 #----------------------------------------------------
 ${tools_dir}bufr_set -s subCentre=12 aaen_55.bufr $fBufrTmp
 set +e
-${tools_dir}bufr_compare aaen_55.bufr $fBufrTmp >/dev/null
+${tools_dir}bufr_compare aaen_55.bufr $fBufrTmp
 status=$?
 set -e
 [ $status -eq 1 ]
 
+#----------------------------------------------------
+# Compare file with directory
+#----------------------------------------------------
+temp_dir=tempdir.bufr_compare
+mkdir -p $temp_dir
+infile=aaen_55.bufr
+cp $infile $temp_dir
+${tools_dir}bufr_compare $infile $temp_dir
+
+
 #Clean up
 rm -f $fLog 
 rm -f $fBufrTmp | true
 rm -f $fBufrInput1 | true
 rm -f $fBufrInput2 | true
-
+rm -rf $temp_dir
diff --git a/tests/bufr_copy.sh b/tests/bufr_copy.sh
index 4b26884..7efad26 100755
--- a/tests/bufr_copy.sh
+++ b/tests/bufr_copy.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/bufr_count.sh b/tests/bufr_count.sh
index a5da7af..380a5b3 100755
--- a/tests/bufr_count.sh
+++ b/tests/bufr_count.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/bufr_dump.sh b/tests/bufr_dump.sh
index fbe6a3a..79819ea 100755
--- a/tests/bufr_dump.sh
+++ b/tests/bufr_dump.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -10,10 +10,60 @@
 
 . ./include.sh
 
+#Define a common label for all the tmp files
+label="bufr_dump_test"
+
+#Create log file
+fLog=${label}".log"
+rm -f $fLog | true
+touch $fLog
+
+#Define tmp bufr files
+fJsonTmp=${label}".json.tmp"
+
+#==============================================
+# Testing bufr_dump -O
+#==============================================
+
 bufr_files=`cat ${data_dir}/bufr/bufr_data_files.txt`
 REDIRECT=/dev/null
 
 for file in ${bufr_files}
 do
-  ${tools_dir}bufr_dump -O ${data_dir}/bufr/$file 2> $REDIRECT > $REDIRECT
+  ${tools_dir}bufr_dump -O ${data_dir}/bufr/$file
 done
+
+#==============================================
+# Testing a malformed bufr file (see ECC-110)
+#==============================================
+
+echo "Test: malformed bufr file " >> $fLog
+
+rm -f $fJsonTmp | true
+
+fBufr=${data_dir}/bufr/"bad.bufr"
+fJsonRef=${data_dir}/bufr/"bad.bufr.json.ref"
+
+${tools_dir}bufr_dump -js $fBufr > $fJsonTmp
+
+diff $fJsonTmp $fJsonRef
+
+#==============================================
+# Testing change of scale (see ECC-111)
+#==============================================
+
+echo "Test: operator 207003 " >> $fLog
+
+rm -f $fJsonTmp | true
+
+fBufr=${data_dir}/bufr/"207003.bufr"
+fJsonRef=${data_dir}/bufr/"207003.bufr.json.ref"
+
+${tools_dir}bufr_dump -ja $fBufr > $fJsonTmp
+
+diff $fJsonTmp $fJsonRef
+
+#Clean up
+rm -f $fLog 
+rm -f $fJsonTmp | true
+
diff --git a/tests/bufr_filter.sh b/tests/bufr_filter.sh
index bee21c7..25b314b 100755
--- a/tests/bufr_filter.sh
+++ b/tests/bufr_filter.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -8,6 +8,7 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
+set -x
 . ./include.sh
 
 cd ${data_dir}/bufr
@@ -43,7 +44,7 @@ EOF
 bufr_files=`cat bufr_data_files.txt`
 for f in ${bufr_files} ; do
    echo "file: $f" >> $fLog
-   ${tools_dir}/bufr_filter $fRules $f >> $fLog
+   ${tools_dir}bufr_filter $fRules $f >> $fLog
 done
 
 #-----------------------------------------------------------
@@ -58,7 +59,7 @@ EOF
 f="syno_multi.bufr"
 echo "Test: dump SYNOP values" >> $fLog
 echo "file: $f" >> $fLog
-${tools_dir}/bufr_filter $fRules $f >> $fLog
+${tools_dir}bufr_filter $fRules $f >> $fLog
 
 #-----------------------------------------------------------
 # Test: filter SYNOP message according to conditions
@@ -79,7 +80,7 @@ rm -f $fBufrTmp | true
 f="syno_multi.bufr"
 echo "Test: filter SYNOP message according to conditions" >> $fLog
 echo "file: $f" >> $fLog
-${tools_dir}/bufr_filter $fRules $f >> $fLog
+${tools_dir}bufr_filter $fRules $f >> $fLog
 
 #Check if the resulting bufr message is the right one
 cat > $fRules <<EOF
@@ -88,7 +89,7 @@ transient statid=1000*blockNumber+stationNumber;
 print "[statid]";
 EOF
 
-[ `${tools_dir}/bufr_filter $fRules $fBufrTmp` = "1003" ] 
+[ `${tools_dir}bufr_filter $fRules $fBufrTmp` = "1003" ] 
 
 #-----------------------------------------------------------
 # Test: splitting according to keys 
@@ -108,7 +109,7 @@ EOF
 f="syno_multi.bufr"
 echo "Test: splitting according to keys" >> $fLog
 echo "file: $f" >> $fLog
-${tools_dir}/bufr_filter $fRules $f >> $fLog
+${tools_dir}bufr_filter $fRules $f >> $fLog
 
 #Check if the resulting files exist
 for statid  in 1 3 7 ; do
@@ -135,9 +136,9 @@ EOF
 f="syno_1.bufr"
 echo "Test: attributes" >> $fLog
 echo "file: $f" >> $fLog
-${tools_dir}/bufr_filter $fRules $f 2>> $fLog 1>> $fLog
+${tools_dir}bufr_filter $fRules $f 2>> $fLog 1>> $fLog
 
-${tools_dir}/bufr_filter $fRules $f 2>> ${f}.log 1>> ${f}.log
+${tools_dir}bufr_filter $fRules $f 2>> ${f}.log 1>> ${f}.log
 cat > ${f}.ref <<EOF
 pressure=100910 Pa
 pressure->code=010004
@@ -160,16 +161,16 @@ rm -f ${f}.ref ${f}.log
 #-----------------------------------------------------------
 cat > $fRules <<EOF
 set unpack=1;
-print "pressure=[pressure#4] [pressure#4->units]";
+print "pressure=[#4#pressure] [#4#pressure->units]";
 print "pressure=[pressure]";
 EOF
 
 f="temp_101.bufr"
 echo "Test: access element by rank" >> $fLog
 echo "file: $f" >> $fLog
-${tools_dir}/bufr_filter $fRules $f 2>> $fLog 1>> $fLog
+${tools_dir}bufr_filter $fRules $f 2>> $fLog 1>> $fLog
 
-${tools_dir}/bufr_filter $fRules $f 2>> ${f}.log 1>> ${f}.log
+${tools_dir}bufr_filter $fRules $f 2>> ${f}.log 1>> ${f}.log
 cat > ${f}.ref <<EOF
 pressure=98500 Pa
 pressure=102000 101800 100000 98500 96400 92500 92100 89700 
@@ -193,17 +194,17 @@ rm -f ${f}.ref ${f}.log
 #-----------------------------------------------------------
 cat > $fRules <<EOF
 set unpack=1;
-print "brightnessTemperature={[brightnessTemperature#2!',']}";
-print "brightnessTemperature->percentConfidence={[brightnessTemperature#2->percentConfidence!',']}";
-print "brightnessTemperature->firstOrderStatisticalValue={[brightnessTemperature#2->firstOrderStatisticalValue!',']}";
+print "brightnessTemperature={[#2#brightnessTemperature!',']}";
+print "brightnessTemperature->percentConfidence={[#2#brightnessTemperature->percentConfidence!',']}";
+print "brightnessTemperature->firstOrderStatisticalValue={[#2#brightnessTemperature->firstOrderStatisticalValue!',']}";
 EOF
 
 f="b005_89.bufr"
 echo "Test: access marker operators" >> $fLog
 echo "file: $f" >> $fLog
-${tools_dir}/bufr_filter $fRules $f 2>> $fLog 1>> $fLog
+${tools_dir}bufr_filter $fRules $f 2>> $fLog 1>> $fLog
 
-${tools_dir}/bufr_filter $fRules $f 2>> ${f}.log 1>> ${f}.log
+${tools_dir}bufr_filter $fRules $f 2>> ${f}.log 1>> ${f}.log
 cat > ${f}.ref <<EOF
 brightnessTemperature={-1e+100,290.8,-1e+100,289.7,289.5,289.5,289.4,287.5,
 287.4,288.3,288.2,-1e+100,-1e+100,-1e+100,-1e+100,-1e+100,
@@ -222,21 +223,21 @@ brightnessTemperature={-1e+100,290.8,-1e+100,289.7,289.5,289.5,289.4,287.5,
 291.6,291.4,291.4,291.4,-1e+100,291.3,291.3,290.8,
 291.8,290.8,291.3,291.9,291.9,292.5,292.6,290.8
 }
-brightnessTemperature->percentConfidence={4294967295,0,4294967295,55,50,83,83,1,
-0,17,0,4294967295,4294967295,4294967295,4294967295,4294967295,
-48,16,29,14,11,15,4294967295,39,
-21,0,0,4294967295,9,4,20,86,
+brightnessTemperature->percentConfidence={2147483647,0,2147483647,55,50,83,83,1,
+0,17,0,2147483647,2147483647,2147483647,2147483647,2147483647,
+48,16,29,14,11,15,2147483647,39,
+21,0,0,2147483647,9,4,20,86,
 71,96,96,68,0,0,0,96,
 0,95,66,57,96,88,95,0,
 97,76,94,90,92,94,89,77,
 6,48,10,4,10,23,59,45,
-94,3,9,58,64,4294967295,61,84,
+94,3,9,58,64,2147483647,61,84,
 85,27,6,47,39,65,0,0,
 5,48,3,45,71,26,5,71,
 64,67,57,88,90,0,96,98,
 99,89,86,97,71,50,55,82,
 95,83,51,97,97,86,59,87,
-77,46,1,0,4294967295,0,0,0,
+77,46,1,0,2147483647,0,0,0,
 0,0,2,0,1,0,1,0
 }
 brightnessTemperature->firstOrderStatisticalValue={-1e+100,0,-1e+100,0.7,0.6,0.5,0.6,0.3,
@@ -275,9 +276,9 @@ EOF
 f="temp_101.bufr"
 echo "Test: access marker operators 2" >> $fLog
 echo "file: $f" >> $fLog
-${tools_dir}/bufr_filter $fRules $f 2>> $fLog 1>> $fLog
+${tools_dir}bufr_filter $fRules $f 2>> $fLog 1>> $fLog
 
-${tools_dir}/bufr_filter $fRules $f 2>> ${f}.log 1>> ${f}.log
+${tools_dir}bufr_filter $fRules $f 2>> ${f}.log 1>> ${f}.log
 cat > ${f}.ref <<EOF
 pressure=102000 101800 100000 98500 96400 92500 92100 89700 
 88100 86100 85000 84400 79400 79000 78300 77300 
@@ -326,268 +327,15 @@ EOF
 f="asca_139.bufr"
 echo "Test: access by condition" >> $fLog
 echo "file: $f" >> $fLog
-${tools_dir}/bufr_filter $fRules $f 2>> $fLog 1>> $fLog
+${tools_dir}bufr_filter $fRules $f 2>> $fLog 1>> $fLog
 
-${tools_dir}/bufr_filter $fRules $f 2>> ${f}.log 1>> ${f}.log
-cat > ${f}.ref <<EOF
-/beamIdentifier=2/backscatter=-24.6 -24.78 -24.92 -25.05 -25.04 -24.72 -23.83 -22.57 
--21.71 -21.76 -21.81 -20.97 -19.97 -19.01 -17.8 -16.22 
--14.67 -13.26 -12.02 -11.01 -9.84 -7.31 -8.76 -10.13 
--11.36 -12.58 -13.49 -13.87 -13.77 -13.44 -13.42 -13.58 
--13.92 -14.6 -15.36 -16.22 -17.11 -17.98 -18.56 -18.58 
--18.49 -18.45 -22.66 -22.99 -23.37 -23.85 -24.27 -24.57 
--24.54 -24.17 -23.96 -24.47 -24.53 -23.11 -21.62 -20.27 
--18.93 -17.42 -15.78 -14.13 -12.6 -11.35 -10.06 -7.38 
--8.57 -9.82 -11.43 -12.88 -13.83 -14.25 -14.21 -14.16 
--14.32 -14.44 -14.73 -15.21 -15.94 -17 -17.87 -18.64 
--19.31 -19.52 -19.49 -19.32 -21.03 -21.35 -21.89 -22.54 
--23.05 -23.63 -24.2 -24.67 -25.29 -26.17 -26.72 -25.84 
--23.76 -21.4 -19.65 -18.37 -16.87 -15.2 -13.55 -12.06 
--10.58 -7.89 -8.96 -10.3 -11.99 -13.2 -14 -14.65 
--14.94 -15.08 -15.41 -15.63 -15.72 -15.86 -16.48 -17.61 
--18.16 -18.4 -18.99 -19.69 -19.96 -19.66 -19.85 -20.1 
--20.6 -21.03 -21.26 -21.69 -22.36 -23 -23.61 -24.14 
--24.65 -25.15 -24.67 -22.61 -20.73 -19.69 -18.63 -16.96 
--15.02 -13.19 -11.39 -8.81 -10.08 -11.44 -12.7 -13.62 
--14.39 -15.05 -15.54 -16.06 -16.61 -16.72 -16.39 -16.03 
--16.23 -16.78 -16.77 -16.88 -17.6 -18.42 -18.91 -18.69 
--19.15 -19.34 -19.64 -19.75 -19.72 -19.93 -20.39 -20.92 
--21.35 -21.57 -21.5 -21.6 -21.86 -21.37 -20.23 -19.44 
--19.13 -18.31 -16.75 -14.67 -12.4 -9.59 -11.09 -12.25 
--13.21 -14.16 -14.96 -15.52 -16.1 -16.9 -17.52 -17.55 
--16.99 -16.1 -15.4 -15.06 -15 -15.41 -16.21 -16.92 
--17.31 -17.15 -19.07 -19.1 -19.07 -18.98 -18.93 -18.97 
--19.13 -19.43 -19.84 -20.11 -19.88 -19.75 -19.94 -19.76 
--18.83 -17.94 -17.58 -17.15 -16.44 -14.97 -12.82 -9.96 
--11.6 -12.72 -13.7 -14.73 -15.51 -16.07 -16.73 -17.52 
--18.03 -17.81 -16.83 -15.45 -14.36 -13.91 -14.13 -14.77 
--15.6 -16.27 -16.45 -16.26 -19.69 -19.74 -19.39 -19.17 
--19.07 -18.92 -18.77 -18.74 -18.9 -19.14 -19.03 -18.89 
--19.18 -19.33 -18.47 -17.42 -16.8 -16.13 -15.33 -14.26 
--12.45 -9.94 -11.43 -12.69 -13.89 -14.97 -15.83 -16.45 
--16.96 -17.36 -17.29 -16.41 -15.13 -14.08 -13.56 -13.51 
--13.87 -14.48 -15.32 -16.01 -16.11 -16.02 -20.39 -20.83 
--20.5 -20.14 -19.7 -19.13 -18.59 -18.05 -17.62 -17.48 
--17.4 -17.47 -18.03 -18.48 -17.84 -16.89 -16.3 -15.7 
--14.82 -13.58 -11.77 -9.62 -10.94 -12.35 -13.56 -14.61 
--15.58 -16.04 -16.12 -16.02 -15.41 -14.46 -13.76 -13.49 
--13.47 -13.62 -13.96 -14.41 -15.14 -15.77 -15.99 -16.05 
--21.2 -21.87 -21.7 -21.21 -20.41 -19.52 -18.84 -18.06 
--17.14 -16.49 -16.18 -16.34 -16.89 -17.24 -16.8 -16.03 
--15.48 -14.93 -14.03 -12.78 -11.25 -9.42 -10.69 -11.98 
--13.04 -13.99 -14.75 -14.93 -14.92 -14.78 -14.24 -13.68 
--13.54 -13.65 -13.73 -13.91 -14.22 -14.69 -15.29 -15.82 
--16.1 -16.25 -22.32 -22.84 -22.24 -21.41 -20.76 -20.11 
--19.55 -18.73 -17.28 -16.02 -15.48 -15.76 -16.39 -16.55 
--15.95 -15.21 -14.7 -14.23 -13.47 -12.46 -11.22 -9.44 
--10.65 -11.82 -12.87 -13.61 -14.05 -14.21 -14.32 -14.25 
--13.98 -13.76 -13.81 -13.97 -14.07 -14.27 -14.62 -15.1 
--15.56 -15.99 -16.38 -16.86 -21.55 -21.83 -21.17 -20.33 
--20.04 -19.78 -19.07 -18.06 -16.75 -15.59 -14.98 -15.03 
--15.48 -15.56 -14.72 -13.86 -13.49 -13.36 -12.93 -11.95 
--10.61 -9.38 -10.6 -11.77 -12.78 -13.4 -13.87 -14.2 
--14.32 -14.19 -14.11 -14.08 -14.1 -14.28 -14.49 -14.78 
--15.17 -15.59 -15.95 -16.31 -16.83 -17.54 -20.78 -20.86 
--20.42 -19.88 -19.85 -19.68 -18.62 -17.29 -16.35 -15.91 
--15.49 -14.96 -14.61 -14.36 -13.68 -12.73 -12.08 -11.71 
--11.28 -10.29 -8.91 -9.25 -10.57 -11.78 -12.63 -13.3 
--13.92 -14.4 -14.71 -14.71 -14.7 -14.69 -14.63 -14.7 
--14.94 -15.33 -15.81 -16.24 -16.49 -16.77 -17.3 -17.87 
--20.68 -20.42 -19.91 -19.75 -20.11 -20.17 -18.91 -17.28 
--16.46 -16.6 -16.61 -15.7 -14.65 -14.01 -13.43 -12.57 
--11.67 -10.91 -10.29 -9.26 -7.86 -9.39 -10.72 -11.83 
--12.54 -13.26 -13.84 -14.36 -14.96 -15.33 -15.46 -15.48 
--15.39 -15.28 -15.41 -15.79 -16.31 -16.74 -16.83 -17.06 
--17.59 -18.11 -20.69 -20.29 -19.68 -19.6 -20.27 -20.84 
--19.82 -18.15 -17.24 -17.3 -17.4 -16.57 -15.37 -14.52 
--13.77 -12.92 -12.05 -11.19 -10.31 -9.14 -7.68 -9.55 
--10.75 -11.81 -12.63 -13.42 -13.91 -14.31 -14.94 -15.52 
--15.86 -15.96 -15.82 -15.69 -15.82 -16.13 -16.5 -16.8 
--16.94 -17.24 -17.79 -18.35 -20.91 -20.45 -19.81 -19.44 
--19.98 -20.72 -20.12 -18.95 -18.28 -18.08 -17.84 -17.3 
--16.39 -15.52 -14.49 -13.48 -12.69 -11.77 -10.52 -9.08 
--7.69 -9.6 -10.75 -11.83 -12.84 -13.64 -14.06 -14.45 
--15.13 -15.82 -16.24 -16.27 -15.95 -15.87 -16.19 -16.57 
--16.77 -16.93 -17.16 -17.6 -18.18 -18.62 -20.82 -20.13 
--19.65 -19.25 -19.53 -19.97 -19.55 -18.86 -18.63 -18.44 
--17.79 -17.32 -16.84 -16.07 -14.94 -13.94 -13.23 -12.3 
--10.82 -9.19 -7.83 -9.63 -10.93 -12.02 -12.92 -13.56 
--14.02 -14.6 -15.46 -16.29 -16.7 -16.61 -16.25 -16.24 
--16.64 -17.1 -17.26 -17.4 -17.71 -18.18 -18.7 -18.99 
--20.59 -19.8 -19.41 -19.23 -19.49 -19.61 -19.22 -18.79 
--18.57 -18.23 -17.45 -16.9 -16.6 -16.08 -15.04 -14.14 
--13.55 -12.74 -11.24 -9.62 -8.23 -9.57 -11.04 -12.15 
--12.9 -13.5 -14.06 -14.68 -15.56 -16.37 -16.83 -16.95 
--16.78 -16.84 -17.2 -17.61 -17.85 -18.05 -18.34 -18.64 
--19.04 -19.28 -20.85 -20.06 -19.67 -19.57 -19.72 -19.43 
--18.91 -18.59 -18.17 -17.6 -17.01 -16.62 -16.35 -15.89 
--15.02 -14.2 -13.59 -12.84 -11.46 -9.94 -8.6 -9.26 
--10.79 -11.87 -12.7 -13.49 -14.14 -14.71 -15.42 -16.08 
--16.72 -17.24 -17.35 -17.48 -17.86 -18.33 -18.68 -18.93 
--19.16 -19.34 -19.56 -19.55 -21.72 -20.86 -20.44 -20.34 
--20.19 -19.46 -18.66 -18.15 -17.69 -17.21 -16.92 -16.69 
--16.27 -15.67 -14.95 -14.11 -13.29 -12.56 -11.41 -9.93 
--8.59 -8.83 -10.29 -11.46 -12.51 -13.43 -14.04 -14.63 
--15.3 -15.93 -16.71 -17.47 -17.87 -18.09 -18.54 -19.16 
--19.62 -19.99 -20.23 -20.3 -20.36 -19.93 -22.54 -21.65 
--21.19 -21.05 -20.68 -19.62 -18.55 -17.87 -17.55 -17.31 
--17.17 -16.98 -16.4 -15.69 -15 -14.08 -13.13 -12.42 
--11.36 -9.9 -8.51 -8.7 -10.02 -11.15 -12.34 -13.37 
--14.02 -14.7 -15.47 -16.17 -16.89 -17.67 -18.33 -18.74 
--19.25 -19.98 -20.59 -21.06 -21.23 -21.17 -21.06 -20.25 
--22.71 -21.9 -21.41 -21.11 -20.59 -19.5 -18.53 -18.04 
--17.93 -17.7 -17.38 -17.18 -16.58 -15.74 -15.06 -14.15 
--13.15 -12.34 -11.25 -9.82 -8.43 -8.86 -9.99 -10.98 
--12.22 -13.41 -14.24 -14.98 -15.84 -16.56 -17.22 -18.01 
--18.78 -19.35 -19.95 -20.72 -21.32 -21.74 -21.92 -22 
--21.81 -20.83 -22.64 -22.06 -21.4 -20.8 -20.13 -19.19 
--18.51 -18.36 -18.33 -17.98 -17.55 -17.26 -16.54 -15.58 
--14.79 -13.84 -12.86 -11.98 -10.88 -9.6 -8.41 -8.96 
--9.9 -10.91 -12.2 -13.36 -14.07 -14.76 -15.73 -16.62 
--17.38 -18.22 -19.02 -19.67 -20.33 -21.05 -21.5 -21.73 
--21.93 -22.16 -22.16 -21.57 -22.38 -22.08 -21.29 -20.51 
--19.75 -18.91 -18.42 -18.31 -18.22 -17.9 -17.57 -17.26 
--16.42 -15.44 -14.59 -13.62 -12.68 -11.82 -10.77 -9.59 
--8.51 -8.91 -9.9 -11.01 -12.15 -13.07 -13.58 -14.16 
--15.22 -16.33 -17.11 -17.92 -18.88 -19.76 -20.52 -21.11 
--21.2 -21.11 -21.18 -21.46 -21.74 -21.83 -21.82 -21.8 
--21.06 -20.28 -19.59 -18.88 -18.48 -18.23 -17.95 -17.68 
--17.5 -17.25 -16.42 -15.44 -14.69 -13.83 -12.89 -11.93 
--10.8 -9.52 -8.41 -8.94 -10.1 -11.2 -12.09 -12.88 
--13.42 -14.01 -15.09 -16.17 -16.71 -17.32 -18.43 -19.68 
--20.57 -21.07 -20.9 -20.54 -20.39 -20.6 -21.15 -21.9 
--21.31 -21.32 -20.78 -20.08 -19.6 -19.13 -18.75 -18.38 
--17.93 -17.59 -17.47 -17.28 -16.58 -15.63 -14.98 -14.22 
--13.25 -12.11 -10.79 -9.41 -8.21 -9.05 -10.42 -11.48 
--12.24 -12.96 -13.53 -14.23 -15.28 -16.05 -16.4 -16.99 
--18.16 -19.51 -20.42 -20.89 -20.69 -20.24 -19.8 -19.8 
--20.48 -21.79 -21.22 -20.9 -20.34 -19.79 -19.47 -19.14 
--18.71 -18.3 -18.03 -17.86 -17.69 -17.4 -16.8 -15.84 
--15.04 -14.25 -13.27 -12.11 -10.72 -9.3 -8.13 -9.07 
--10.57 -11.64 -12.45 -13.12 -13.7 -14.52 -15.5 -15.97 
--16.21 -16.87 -18.01 -19.19 -19.99 -20.43 -20.39 -19.98 
--19.46 -19.43 -20.07 -21.44 -21.51 -20.73 -19.9 -19.48 
--19.24 -18.94 -18.52 -18.11 -18.16 -18.31 -18.02 -17.41 
--16.67 -15.75 -14.77 -13.85 -12.89 -11.82 -10.48 -9.11 
--8.05 -8.82 -10.33 -11.58 -12.57 -13.3 -13.95 -14.88 
--15.83 -16.28 -16.41 -16.99 -18.01 -18.92 -19.49 -19.84 
--19.87 -19.55 -19.35 -19.51 -20.17 -21.42 -21.56 -20.75 
--19.86 -19.47 -19.26 -18.94 -18.45 -18.03 -18.12 -18.26 
--17.88 -17.1 -16.27 -15.44 -14.42 -13.47 -12.57 -11.52 
--10.28 -9.02 -7.93 -8.63 -10.13 -11.37 -12.49 -13.42 
--14.11 -14.93 -15.93 -16.63 -16.86 -17.36 -18.22 -18.95 
--19.41 -19.63 -19.4 -19.16 -19.44 -19.95 -20.65 -21.68 
--21.05 -20.56 -19.86 -19.47 -19.31 -19.01 -18.39 -17.94 
--17.96 -17.93 -17.47 -16.74 -15.94 -15.14 -14.19 -13.37 
--12.61 -11.59 -10.36 -9.12 -7.98 -8.64 -10.07 -11.22 
--12.32 -13.36 -14.05 -14.76 -15.82 -16.65 -17.06 -17.58 
--18.33 -19.14 -19.64 -19.63 -19.09 -18.91 -19.58 -20.51 
--21.26 -21.93 -20.12 -19.88 -19.3 -18.93 -18.82 -18.58 
--18.05 -17.66 -17.63 -17.55 -17.17 -16.48 -15.71 -14.96 
--14.15 -13.5 -12.85 -11.82 -10.57 -9.43 -8.38 -8.95 
--10.28 -11.39 -12.36 -13.25 -13.94 -14.65 -15.64 -16.43 
--17.04 -17.78 -18.5 -19.18 -19.7 -19.72 -19.29 -19.25 
--20.03 -21.15 -21.94 -22.42 -18.93 -18.86 -18.41 -18.03 
--17.84 -17.6 -17.22 -16.91 -16.8 -16.72 -16.61 -16.24 
--15.63 -14.95 -14.24 -13.69 -13.03 -11.94 -10.73 -9.66 
--8.74 -9.57 -10.66 -11.63 -12.6 -13.42 -14.15 -14.94 
--15.72 -16.37 -17.1 -18.04 -18.88 -19.46 -19.85 -19.89 
--19.74 -19.86 -20.6 -21.72 -22.55 -22.87 -17.94 -17.98 
--17.65 -17.3 -17.1 -16.91 -16.65 -16.35 -16.17 -16.04 
--16 -15.99 -15.64 -15.02 -14.38 -13.83 -13.12 -12.07 
--10.89 -9.7 -8.77 -10.03 -11.04 -12.04 -13.13 -14.02 
--14.75 -15.61 -16.31 -16.76 -17.36 -18.37 -19.44 -20.11 
--20.19 -20.01 -20.09 -20.44 -21.18 -22.2 -22.91 -23.02 
--17.49 -17.44 -17.16 -16.96 -16.91 -16.8 -16.6 -16.26 
--15.99 -15.78 -15.71 -15.76 -15.45 -14.9 -14.41 -13.9 
--13.21 -12.16 -10.92 -9.73 -8.8 -9.93 -11.26 -12.49 
--13.66 -14.71 -15.6 -16.45 -17.14 -17.47 -17.95 -18.86 
--19.84 -20.46 -20.32 -19.95 -20.14 -20.87 -21.77 -22.57 
--23.08 -23.14 -17.34 -17.11 -16.75 -16.59 -16.64 -16.68 
--16.59 -16.3 -16 -15.74 -15.65 -15.6 -15.27 -14.78 
--14.38 -14 -13.38 -12.37 -11.13 -9.93 -9.02 -9.6 
--11.08 -12.53 -13.96 -15.27 -16.31 -17 -17.46 -17.74 
--18.11 -18.86 -19.81 -20.49 -20.31 -19.76 -19.69 -20.43 
--21.37 -22.29 -22.98 -23.06 -17.21 -16.95 -16.54 -16.23 
--16.22 -16.37 -16.39 -16.18 -15.98 -15.8 -15.68 -15.55 
--15.29 -14.84 -14.45 -14.08 -13.4 -12.52 -11.43 -10.18 
--9.21 -9.25 -10.6 -12.02 -13.65 -15.16 -16.13 -16.6 
--16.94 -17.23 -17.66 -18.51 -19.5 -20.26 -20.32 -19.79 
--19.43 -19.77 -20.45 -21.39 -22.17 -22.19 -17.09 -16.87 
--16.47 -16.13 -16.09 -16.3 -16.43 -16.21 -16.02 -15.87 
--15.78 -15.69 -15.32 -14.83 -14.46 -13.96 -13.27 -12.43 
--11.35 -10.17 -9.2 -8.97 -10.24 -11.52 -12.99 -14.29 
--15.12 -15.66 -16.16 -16.59 -17.09 -17.84 -18.79 -19.82 
--20.25 -19.85 -19.52 -19.63 -20.02 -20.79 -21.45 -21.5 
--17.01 -16.85 -16.41 -16.06 -16.11 -16.52 -16.88 -16.73 
--16.5 -16.29 -16.15 -15.99 -15.43 -14.84 -14.48 -13.91 
--13.22 -12.38 -11.25 -10.17 -9.2 -8.91 -10.17 -11.29 
--12.47 -13.55 -14.39 -15.02 -15.74 -16.36 -16.73 -17.26 
--18.22 -19.41 -20.03 -19.89 -19.71 -19.64 -19.75 -20.34 
--21.09 -21.27 -16.97 -16.91 -16.41 -15.95 -16.14 -16.9 
--17.53 -17.55 -17.37 -17.04 -16.7 -16.38 -15.72 -15.01 
--14.65 -14.09 -13.31 -12.46 -11.31 -10.22 -9.29 -9.01 
--10.12 -11.16 -12.26 -13.28 -14.12 -14.74 -15.6 -16.34 
--16.61 -17.06 -18.02 -19.14 -19.69 -19.82 -19.7 -19.46 
--19.4 -19.91 -20.64 -21.02 -17.05 -16.98 -16.45 -15.99 
--16.35 -17.31 -17.93 -17.97 -17.85 -17.48 -17.02 -16.72 
--16.09 -15.3 -14.92 -14.37 -13.51 -12.53 -11.25 -10.06 
--9.16 -9.13 -10.16 -11.21 -12.28 -13.27 -14 -14.6 
--15.44 -16.11 -16.46 -17.11 -18.14 -18.87 -19.12 -19.48 
--19.63 -19.51 -19.54 -19.96 -20.4 -20.69 -17.25 -17.07 
--16.54 -16.24 -16.75 -17.62 -17.85 -17.7 -17.57 -17.29 
--17.06 -16.96 -16.43 -15.72 -15.29 -14.74 -13.78 -12.65 
--11.21 -9.83 -8.83 -9.3 -10.33 -11.4 -12.52 -13.55 
--14.08 -14.4 -15.11 -15.9 -16.51 -17.34 -18.15 -18.45 
--18.75 -19.3 -19.65 -19.78 -20.05 -20.48 -20.7 -20.66 
--17.3 -16.95 -16.51 -16.43 -16.89 -17.35 -17.21 -16.88 
--16.75 -16.6 -16.56 -16.68 -16.54 -15.99 -15.49 -14.99 
--14.05 -12.84 -11.28 -9.77 -8.62 -9.49 -10.59 -11.7 
--12.93 -14.07 -14.37 -14.34 -14.91 -15.83 -16.76 -17.73 
--18.21 -18.49 -19.09 -19.54 -19.56 -19.77 -20.37 -20.92 
--21.1 -20.87 -17.17 -16.54 -16.18 -16.28 -16.48 -16.56 
--16.34 -16.12 -16.08 -15.91 -15.73 -15.8 -16 -15.87 
--15.45 -14.94 -14.03 -12.8 -11.31 -9.78 -8.55 -9.49 
--10.86 -12.06 -13.34 -14.46 -14.65 -14.63 -15.18 -15.99 
--17 -18.07 -18.56 -19.11 -19.85 -19.95 -19.6 -19.88 
--20.64 -21.1 -21.09 -20.87 -16.87 -16.07 -15.7 -15.73 
--15.76 -15.71 -15.64 -15.62 -15.57 -15.31 -14.94 -14.84 
--15.09 -15.44 -15.43 -14.86 -13.88 -12.75 -11.4 -9.87 
--8.59 -9.49 -11.09 -12.41 -13.7 -14.67 -14.89 -15.21 
--15.75 -16.29 -17.13 -18.14 -18.91 -19.71 -20.42 -20.34 
--20.12 -20.53 -21.04 -21.2 -21.13 -21.06 -16.37 -15.53 
--15.13 -15.02 -15.09 -15.23 -15.34 -15.33 -15.06 -14.62 
--14.24 -14.06 -14.25 -14.85 -15.37 -14.96 -13.96 -12.9 
--11.67 -10.14 -8.81 -9.42 -11.01 -12.39 -13.72 -14.72 
--15.17 -15.7 -16.13 -16.48 -17.16 -18.09 -18.92 -19.68 
--20.36 -20.54 -20.67 -21.05 -21.13 -21.05 -21.19 -21.41 
--15.93 -15.1 -14.58 -14.32 -14.46 -14.94 -15.36 -15.21 
--14.69 -14.15 -13.82 -13.62 -13.72 -14.35 -15.1 -15.15 
--14.24 -13.13 -12.07 -10.71 -9.31 -9.31 -10.8 -12.18 
--13.46 -14.63 -15.39 -15.98 -16.34 -16.63 -17.17 -17.98 
--18.69 -19.15 -19.64 -20.16 -20.62 -20.91 -20.86 -20.86 
--21.23 -21.53 -15.77 -15.12 -14.54 -14.11 -14.15 -14.69 
--15.36 -15.23 -14.65 -14.17 -13.85 -13.63 -13.7 -14.22 
--14.86 -15.17 -14.57 -13.61 -12.59 -11.24 -9.79 -9.4 
--10.8 -12.1 -13.29 -14.53 -15.48 -16.05 -16.5 -16.92 
--17.34 -17.85 -18.36 -18.75 -19.2 -19.87 -20.51 -20.87 
--21.08 -21.41 -21.77 -21.81 -16.07 -15.58 -15.02 -14.45 
--14.28 -14.69 -15.31 -15.28 -14.85 -14.44 -14.1 -13.9 
--13.91 -14.17 -14.58 -14.97 -14.83 -14.12 -13.04 -11.65 
--10.25 -9.53 -10.86 -12.12 -13.31 -14.48 -15.46 -16.09 
--16.67 -17.15 -17.49 -17.81 -18.23 -18.82 -19.46 -20.13 
--20.73 -21.31 -21.91 -22.32 -22.51 -22.5 -17.07 -16.57 
--15.82 -15.01 -14.72 -15.09 -15.57 -15.55 -15.18 -14.78 
--14.42 -14.16 -14.02 -14.07 -14.22 -14.58 -14.78 -14.39 
--13.43 -12.14 -10.77 -9.61 -11.03 -12.33 -13.52 -14.62 
--15.61 -16.33 -16.92 -17.39 -17.73 -18.1 -18.55 -19.22 
--19.97 -20.6 -21.22 -21.94 -22.49 -22.73 -23.02 -23.36
+rm -f ${f}.log
+${tools_dir}bufr_filter $fRules $f 2>> ${f}.log 1>> ${f}.log
 
-EOF
+REFERENCE_FILE="../../tests/asca_139.t1.ref"
+diff $REFERENCE_FILE ${f}.log
 
-diff ${f}.ref ${f}.log 
-
-rm -f ${f}.ref ${f}.log
+rm -f ${f}.log
 
 #-----------------------------------------------------------
 # Test:  access by condition 2
@@ -605,9 +353,9 @@ EOF
 f="temp_101.bufr"
 echo "Test: access by condition 2" >> $fLog
 echo "file: $f" >> $fLog
-${tools_dir}/bufr_filter $fRules $f 2>> $fLog 1>> $fLog
+${tools_dir}bufr_filter $fRules $f 2>> $fLog 1>> $fLog
 
-${tools_dir}/bufr_filter $fRules $f 2>> ${f}.log 1>> ${f}.log
+${tools_dir}bufr_filter $fRules $f 2>> ${f}.log 1>> ${f}.log
 cat > ${f}.ref <<EOF
 ----- /verticalSoundingSignificance=4/airTemperature -----
 272.1 269.5 268.1 267.9 266.7 266.1 264.9 264.9 
@@ -647,6 +395,73 @@ diff ${f}.ref ${f}.log
 rm -f ${f}.ref ${f}.log
 
 #-----------------------------------------------------------
+# Test: set unexpandedDescriptors big test
+#-----------------------------------------------------------
+fRulesReady="set_unexpandedDescriptors.filter"
+f="syno_1.bufr"
+testScript="set_unexpandedDescriptors_test.sh"
+testScript1="set_unexpandedDescriptors_test_1.sh"
+echo "Test: set unexpandedDescriptors big test" >> $fLog
+echo "file: $f" >> $fLog
+
+cat >$testScript <<EOF
+set -e
+
+EOF
+echo "set -x" > $testScript1
+chmod +x $testScript1
+
+${tools_dir}bufr_filter $fRulesReady $f 2>> $fLog 1>> $testScript
+
+sed -e "s:diff:${tools_dir}bufr_compare:" < $testScript >> $testScript1
+
+./$testScript1
+
+rm -f new_*bufr 
+rm -f $testScript $testScript1
+
+#-----------------------------------------------------------
+# Test:  packing   
+#-----------------------------------------------------------
+cat > $fRules <<EOF
+set unpack=1;
+set pack=1;
+write;
+EOF
+
+files=" 207003.bufr aaen_55.bufr aben_55.bufr ahws_139.bufr airc_142.bufr airc_144.bufr airs_57.bufr alws_139.bufr
+amda_144.bufr amsa_55.bufr amsb_55.bufr amse_55.bufr amsu_55.bufr amv2_87.bufr amv3_87.bufr asbh_139.bufr asbl_139.bufr
+asca_139.bufr asch_139.bufr ascs_139.bufr aseh_139.bufr asel_139.bufr ashs_139.bufr atap_55.bufr ateu_155.bufr atms_201.bufr
+atov_55.bufr avhm_87.bufr avhn_87.bufr avhr_58.bufr b002_95.bufr b002_96.bufr b003_56.bufr b004_145.bufr b005_87.bufr
+b005_89.bufr b006_96.bufr b007_31.bufr bssh_170.bufr bssh_176.bufr bssh_178.bufr bssh_180.bufr btem_109.bufr buoy_27.bufr
+cmwi_87.bufr cmwn_87.bufr cnow_28.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 gsd3_208.bufr gst4_26.bufr hirb_55.bufr hirs_55.bufr ias1_240.bufr iasi_241.bufr
+ifco_208.bufr ikco_217.bufr itrg_208.bufr itwt_233.bufr j2eo_216.bufr j2nb_216.bufr jaso_214.bufr kond_209.bufr maer_207.bufr
+meta_140.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
+new.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 ocea_131.bufr ocea_132.bufr ocea_133.bufr ocea_21.bufr pgps_110.bufr pilo_91.bufr rada_250.bufr rado_250.bufr
+s4kn_165.bufr sb19_206.bufr sbu8_206.bufr ship_11.bufr ship_12.bufr ship_13.bufr ship_14.bufr ship_19.bufr ship_9.bufr smin_49.bufr
+smis_49.bufr smiu_49.bufr smos_203.bufr sn4k_165.bufr soil_7.bufr ssbt_127.bufr stuk_7.bufr syno_1.bufr syno_2.bufr syno_3.bufr
+syno_4.bufr syno_multi.bufr synop_multi_subset.bufr temp_101.bufr temp_102.bufr temp_106.bufr tmr7_129.bufr tropical_cyclone.bufr
+tros_31.bufr wavb_134.bufr"
+
+
+for f in $files
+do
+  echo "Test: packing " >> $fLog
+  echo "file: $f" >> $fLog
+  ${tools_dir}bufr_filter -o ${f}.out $fRules $f 2>> $fLog 1>> $fLog
+
+  ${tools_dir}bufr_compare ${f}.out $f
+
+  rm -f ${f}.out
+done
+
+
+rm -f $fRules
+
+#-----------------------------------------------------------
 # Test:  get string
 #-----------------------------------------------------------
 cat > $fRules <<EOF
@@ -657,9 +472,9 @@ EOF
 f="ship_11.bufr"
 echo "Test: get string" >> $fLog
 echo "file: $f" >> $fLog
-${tools_dir}/bufr_filter $fRules $f 2>> $fLog 1>> $fLog
+${tools_dir}bufr_filter $fRules $f 2>> $fLog 1>> $fLog
 
-${tools_dir}/bufr_filter $fRules $f 2>> ${f}.log 1>> ${f}.log
+${tools_dir}bufr_filter $fRules $f 2>> ${f}.log 1>> ${f}.log
 cat > ${f}.ref <<EOF
 WYM9567
 EOF
@@ -669,19 +484,21 @@ diff ${f}.ref ${f}.log
 rm -f ${f}.ref ${f}.log
 
 #-----------------------------------------------------------
-# Test:  get string array
+# Test:  get string array and stringValues
 #-----------------------------------------------------------
 cat > $fRules <<EOF
 set unpack=1;
+print "[stringValues!1]";
+print "====";
 print "[stationOrSiteName!1]";
 EOF
 
 f="synop_multi_subset.bufr"
-echo "Test: get string array" >> $fLog
+echo "Test: get string array and stringValues" >> $fLog
 echo "file: $f" >> $fLog
-${tools_dir}/bufr_filter $fRules $f 2>> $fLog 1>> $fLog
+${tools_dir}bufr_filter $fRules $f 2>> $fLog 1>> $fLog
 
-${tools_dir}/bufr_filter $fRules $f 2>> ${f}.log 1>> ${f}.log
+${tools_dir}bufr_filter $fRules $f 2>> ${f}.log 1>> ${f}.log
 cat > ${f}.ref <<EOF
 TROMSO-HOLT          
 PASVIK               
@@ -696,6 +513,20 @@ SAERHEIM
 LANDVIK              
 SANDE-GALLEBERG     
 
+====
+TROMSO-HOLT          
+PASVIK               
+KVITHAMAR            
+FROSTA               
+FURUNESET            
+LOKEN I VOLBU        
+APELSVOLL            
+KISE                 
+FAVANG               
+SAERHEIM             
+LANDVIK              
+SANDE-GALLEBERG     
+
 EOF
 
 diff ${f}.ref ${f}.log 
@@ -717,7 +548,7 @@ set +e
 f="syno_1.bufr"
 echo "Test: nonexistent keys" >> $fLog
 echo "file: $f" >> $fLog
-${tools_dir}/bufr_filter $fRules $f 2>> $fLog 1>> $fLog
+${tools_dir}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
@@ -725,7 +556,7 @@ fi
 set -e
 
 # Now repeat with -f option (do not exit on error)
-${tools_dir}/bufr_filter -f $fRules $f 2>>$fLog 1>>$fLog
+${tools_dir}bufr_filter -f $fRules $f 2>>$fLog 1>>$fLog
 
 
 #-----------------------------------------------------------
@@ -743,7 +574,7 @@ set +e
 f="syno_1.bufr"
 echo "Test: not allowed key values" >> $fLog
 echo "file: $f" >> $fLog
-${tools_dir}/bufr_filter $fRules $f 2>> $fLog 1>> $fLog
+${tools_dir}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
@@ -751,7 +582,7 @@ fi
 set -e
 
 # Now repeat with -f option (do not exit on error)
-${tools_dir}/bufr_filter -f $fRules $f 2>>$fLog 1>>$fLog
+${tools_dir}bufr_filter -f $fRules $f 2>>$fLog 1>>$fLog
 
 
 #----------------------------------------------------
@@ -769,7 +600,7 @@ EOF
 f="syno_1.bufr"
 echo "Test: nformat specifier for integer keys" >> $fLog
 echo "file: $f" >> $fLog
-result=`${tools_dir}/bufr_filter  $fRules $f`
+result=`${tools_dir}bufr_filter  $fRules $f`
 #[ "$result" = "centre=098, height=    3" ]
 
 
@@ -792,7 +623,7 @@ rm -f $fBufrTmp | true
 f="syno_1.bufr"
 echo "Test: setting keys" >> $fLog
 echo "file: $f" >> $fLog
-#${tools_dir}/bufr_filter $fRules $f -o $fBufrTmp >> $fLog
+#${tools_dir}bufr_filter -o $fBufrTmp $fRules $f >> $fLog
 
 #Check if the resulting bufr message is the right one
 cat > $fRules <<EOF
@@ -800,9 +631,503 @@ set unpack=1;
 print "[typicalDate] [year] [airTemperatureAt2M%.1f]";
 EOF
 
-#[ `${tools_dir}/bufr_filter $fRules $fBufrTmp` = "20010511 2001 234.5" ]
+#[ `${tools_dir}bufr_filter $fRules $fBufrTmp` = "20010511 2001 234.5" ]
 
 #Clean up
 rm -f ${dSplit}/*
 rm -f $fLog $fRules 
 rm -f $fBufrTmp | true
+
+#-----------------------------------------------------------
+# Test: set unexpandedDescriptors no create new data
+#-----------------------------------------------------------
+f="syno_1.bufr"
+testScript="set_unexpandedDescriptors_test.sh"
+echo "Test: set unexpandedDescriptors no create new data" >> $fLog
+echo "file: $f" >> $fLog
+
+cat >$fRules <<EOF
+set unpack=1;
+set createNewData=0;
+set unexpandedDescriptors={307005,13023,13013,222000,101049,31031,1031,1032,101049,33007};
+write;
+
+EOF
+
+${tools_dir}bufr_filter -o ${f}.out $fRules $f 2>> $fLog 1>> $fLog
+${tools_dir}bufr_compare ${f}.out $f 2>> $fLog 1>> $fLog
+
+rm -f  ${f}.out 
+
+#-----------------------------------------------------------
+# Test: set BUFRTemplate
+#-----------------------------------------------------------
+f="temp_101.bufr"
+fOut="syno.bufr.out"
+fRef="syno.bufr.out.ref"
+echo "Test: set BUFRTemplate" >> $fLog
+echo "file: $f" >> $fLog
+
+cat >$fRules <<EOF
+set BufrTemplate="synopLand";
+write;
+EOF
+
+${tools_dir}bufr_filter -o $fOut $fRules $f 2>> $fLog 1>> $fLog
+${tools_dir}bufr_compare $fOut $fRef 2>> $fLog 1>> $fLog
+
+rm -f $fOut 
+
+fOut="airep.bufr.out"
+fRef="airep.bufr.out.ref"
+
+cat >$fRules <<EOF
+set BufrTemplate="aircraftReportWithSecondsAndPressure";
+write;
+EOF
+
+${tools_dir}bufr_filter -o $fOut $fRules $f 2>> $fLog 1>> $fLog
+${tools_dir}bufr_compare $fOut $fRef 2>> $fLog 1>> $fLog
+
+rm -f $fOut 
+
+#-----------------------------------------------------------
+# Test: set keys in data section
+#-----------------------------------------------------------
+f="syno_1.bufr"
+fout="311001.bufr"
+echo "Test: set keys in data section" >> $fLog
+echo "file: $f" >> $fLog
+
+cat >$fRules <<EOF
+set masterTablesVersionNumber=20;
+set localTablesVersionNumber=0;
+set compressedData=1;
+set numberOfSubsets=10;
+set unexpandedDescriptors={311001};
+
+set windSpeed={1,2,3,4,5,6,7,8,9,10};
+set windDirection={5,3,4,5,6,7,8,9,10,11};
+set aircraftFlightNumber={"ABCD","dfasd","qwerqwe","3241234","ywer","ABCD","dfasd","qwerqwe","3241234","erwe"};
+
+set pack=1;
+write;
+
+EOF
+
+${tools_dir}bufr_filter -o ${fout} $fRules $f 2>> $fLog 1>> $fLog
+${tools_dir}bufr_compare $fout ${fout}.ref 2>> $fLog 1>> $fLog
+
+#-----------------------------------------------------------
+# ECC-147
+#-----------------------------------------------------------
+cat > $fRules <<EOF
+set unpack=1;
+set relativeHumidity=27;
+set horizontalVisibility=1500;
+set pack=1;
+write;
+EOF
+
+f="syno_1.bufr"
+${tools_dir}bufr_filter -o ${f}.out $fRules $f
+# This part of the test is meant to fail
+set +e
+${tools_dir}bufr_compare ${f}.out $f
+status=$?
+set -e
+if [ $status -eq 0 ]; then
+  # compare should have failed and returned a non-zero exit code
+  exit 1
+fi
+# Now blacklist the failing keys and it should pass
+${tools_dir}bufr_compare -b relativeHumidity,horizontalVisibility ${f}.out $f
+
+rm -f ${f}.out 
+
+rm -f $fRules ${fout} $fLog
+#-----------------------------------------------------------
+# Test:  access subsets by condition 
+#-----------------------------------------------------------
+cat > $fRules <<EOF
+set unpack=1;
+print "stationId=[/subsetNumber=6/blockNumber!%.2d][/subsetNumber=6/stationNumber!%.3d]";
+print "latitude=[/subsetNumber=6/latitude]";
+print "longitude=[/subsetNumber=6/longitude]";
+print "airTemperature=[/subsetNumber=6/airTemperature]";
+print "--------";
+print "stationId=[/subsetNumber=9/blockNumber!%.2d][/subsetNumber=9/stationNumber!%.3d]";
+print "latitude=[/subsetNumber=9/latitude]";
+print "longitude=[/subsetNumber=9/longitude]";
+print "airTemperature=[/subsetNumber=9/airTemperature]";
+EOF
+
+f="synop_multi_subset.bufr"
+echo "Test: access subsets by condition" >> $fLog
+echo "file: $f" >> $fLog
+${tools_dir}bufr_filter $fRules $f 2>> $fLog 1>> $fLog
+
+${tools_dir}bufr_filter $fRules $f 2>> ${f}.log 1>> ${f}.log
+cat > ${f}.ref <<EOF
+stationId=01371
+latitude=61.122
+longitude=9.063
+airTemperature=265.35
+--------
+stationId=01387
+latitude=61.455
+longitude=10.1857
+airTemperature=267.55
+EOF
+
+diff ${f}.ref ${f}.log 
+
+rm -f ${f}.ref ${f}.log
+
+#-----------------------------------------------------------
+# Test:  access subsets and attribute by condition 
+#-----------------------------------------------------------
+cat > $fRules <<EOF
+set unpack=1;
+print "/subsetNumber=1/airTemperature->percentConfidence=[/subsetNumber=1/airTemperature->percentConfidence] [/subsetNumber=1/airTemperature->percentConfidence->units]";
+EOF
+
+f="amda_144.bufr"
+echo "Test: access subsets and attribute by condition" >> $fLog
+echo "file: $f" >> $fLog
+${tools_dir}bufr_filter $fRules $f 2>> $fLog 1>> $fLog
+
+${tools_dir}bufr_filter $fRules $f 2>> ${f}.log 1>> ${f}.log
+cat > ${f}.ref <<EOF
+/subsetNumber=1/airTemperature->percentConfidence=70 %
+EOF
+
+diff ${f}.ref ${f}.log 
+
+rm -f ${f}.ref ${f}.log
+rm -f $fLog $fRules
+#-----------------------------------------------------------
+# Test:  set key by rank                           
+#-----------------------------------------------------------
+cat > $fRules <<EOF
+set unpack=1;
+set #4#airTemperature = 300.1;
+print "#4#airTemperature=[#4#airTemperature]";
+EOF
+
+f="temp_101.bufr"
+echo "Test: set key by rank" >> $fLog
+echo "file: $f" >> $fLog
+${tools_dir}bufr_filter $fRules $f 2>> $fLog 1>> $fLog
+
+${tools_dir}bufr_filter $fRules $f 2>> ${f}.log 1>> ${f}.log
+cat > ${f}.ref <<EOF
+#4#airTemperature=300.1
+EOF
+
+diff ${f}.ref ${f}.log 
+
+rm -f ${f}.ref ${f}.log
+rm -f $fLog $fRules
+#-----------------------------------------------------------
+# Test:  initialise with given values of delayed replications
+#-----------------------------------------------------------
+cat > $fRules <<EOF
+set localTablesVersionNumber=0;
+set masterTablesVersionNumber=23;
+
+set inputDelayedDescriptorReplicationFactor = {2,3};
+print "inputDelayedDescriptorReplicationFactor=[inputDelayedDescriptorReplicationFactor]";
+set inputExtendedDelayedDescriptorReplicationFactor = {3,4};
+print "inputExtendedDelayedDescriptorReplicationFactor=[inputExtendedDelayedDescriptorReplicationFactor]";
+
+set numberOfSubsets=2;
+
+set unexpandedDescriptors={309052};
+
+print "/subsetNumber=1/delayedDescriptorReplicationFactor=[/subsetNumber=1/delayedDescriptorReplicationFactor]";
+print "/subsetNumber=1/extendedDelayedDescriptorReplicationFactor=[/subsetNumber=1/extendedDelayedDescriptorReplicationFactor]";
+
+print "/subsetNumber=2/delayedDescriptorReplicationFactor=[/subsetNumber=2/delayedDescriptorReplicationFactor]";
+print "/subsetNumber=2/extendedDelayedDescriptorReplicationFactor=[/subsetNumber=2/extendedDelayedDescriptorReplicationFactor]";
+
+set pressure={102400,50000,40000,30000,20000,15000,102400,50000,40000,30000,20000,15000};
+set pack=1;
+
+print "pressure={[pressure!12',']}";
+
+write;
+EOF
+
+f="syno_1.bufr"
+fOut="new_replication.bufr"
+echo "Test: initialise with given values of delayed replications" >> $fLog
+echo "file: $f" >> $fLog
+${tools_dir}bufr_filter -o ${fOut} $fRules $f 2>> $fLog 1>> $fLog
+
+${tools_dir}bufr_filter -o ${fOut} $fRules $f > ${fOut}.log
+
+cat > ${fOut}.log.ref <<EOF
+inputDelayedDescriptorReplicationFactor=2 3
+inputExtendedDelayedDescriptorReplicationFactor=3 4
+/subsetNumber=1/delayedDescriptorReplicationFactor=2
+/subsetNumber=1/extendedDelayedDescriptorReplicationFactor=3
+/subsetNumber=2/delayedDescriptorReplicationFactor=3
+/subsetNumber=2/extendedDelayedDescriptorReplicationFactor=4
+pressure={102400,50000,40000,30000,20000,15000,102400,50000,40000,30000,20000,15000
+}
+EOF
+
+diff ${fOut}.log.ref ${fOut}.log 
+${tools_dir}bufr_compare ${fOut} ${fOut}.ref
+
+rm -f ${fOut}.log
+rm -f $fLog $fRules ${fOut}
+#-----------------------------------------------------------
+# Test:  add section 2
+#-----------------------------------------------------------
+cat > $fRules <<EOF
+set bufrHeaderCentre=98;
+set section2Present=1;
+
+write;
+EOF
+
+f="vos308014_v3_26.bufr"
+if [ -f "$f" ]; then
+  fOut="vos308014_v3_26_sec_2.bufr"
+  echo "Test: initialise with given values of delayed replications" >> $fLog
+  echo "file: $f" >> $fLog
+  ${tools_dir}bufr_filter -o ${fOut} $fRules $f 2>> $fLog 1>> $fLog
+
+  ${tools_dir}bufr_ls ${fOut} > ${fOut}.log
+
+  cat > ${fOut}.log.ref <<EOF
+vos308014_v3_26_sec_2.bufr
+centre                     masterTablesVersionNumber  localTablesVersionNumber   rdbType                    rdbSubtype                 rdbtimeYear                rdbtimeMonth               typicalDate                typicalTime                numberOfSubsets            numberOfObservations       satelliteID                
+ecmf                       26                         0                          0                          0                          0                          0                          00000000                   000000                     40                         0                          0                         
+1 of 1 messages in vos308014_v3_26_sec_2.bufr
+
+1 of 1 total messages in 1 files
+EOF
+
+  diff ${fOut}.log.ref ${fOut}.log
+fi
+
+rm -f ${fOut}.log
+rm -f $fLog $fRules ${fOut}
+
+#-----------------------------------------------------------
+# Test:  extract subsets uncompressed data
+#-----------------------------------------------------------
+cat > $fRules <<EOF
+set unpack=1;
+
+set extractSubset=4;
+set doExtractSubsets=1;
+write;
+
+set extractSubset=2;
+set doExtractSubsets=1;
+write;
+
+set extractSubsetIntervalStart=3;
+set extractSubsetIntervalEnd=8;
+set doExtractSubsets=1;
+write;
+EOF
+
+f="synop_multi_subset.bufr"
+fOut="extract.bufr"
+
+echo "Test: extract subsets uncompressed data" >> $fLog
+echo "file: $f" >> $fLog
+${tools_dir}bufr_filter -o ${fOut} $fRules $f 2>> $fLog 1>> $fLog
+
+cat > ${fRules} <<EOF
+set unpack=1;
+print "stationNumber=[stationNumber!13]";
+EOF
+
+${tools_dir}bufr_filter $fRules $f $fOut > ${fOut}.log
+
+cat > ${fOut}.log.ref <<EOF
+stationNumber=27 84 270 272 308 371 381 382 387 413 464 485
+stationNumber=272
+stationNumber=84
+stationNumber=270 272 308 371 381 382
+EOF
+
+diff ${fOut}.log.ref ${fOut}.log 
+
+rm -f ${fOut}.log ${fOut}.log.ref
+rm -f $fLog $fRules ${fOut}
+
+#-----------------------------------------------------------
+# Test:  associatedField
+#-----------------------------------------------------------
+cat > $fRules <<EOF
+set unpack=1;
+
+print "/height=918/windDirection->associatedField=[/height=918/windDirection->associatedField]";
+print "/height=918/windDirection->associatedField->associatedFieldSignificance=[/height=918/windDirection->associatedField->associatedFieldSignificance]";
+EOF
+
+f="profiler_european.bufr"
+
+echo "Test: associatedField" >> $fLog
+echo "file: $f" >> $fLog
+${tools_dir}bufr_filter $fRules $f  > ${f}.log
+
+cat > ${f}.log.ref <<EOF
+/height=918/windDirection->associatedField=1
+/height=918/windDirection->associatedField->associatedFieldSignificance=21
+EOF
+
+diff ${f}.log.ref ${f}.log 
+
+rm -f ${f}.log ${f}.log.ref
+rm -f $fLog $fRules 
+
+#-----------------------------------------------------------
+# Test:  extract subsets compressed data
+#-----------------------------------------------------------
+cat > $fRules <<EOF
+set unpack=1;
+
+set extractSubset=10;
+set doExtractSubsets=1;
+write;
+
+set extractSubsetIntervalStart=3;
+set extractSubsetIntervalEnd=8;
+set doExtractSubsets=1;
+write;
+EOF
+
+f="g2nd_208.bufr"
+fOut="g2nd_208.bufr.out"
+
+echo "Test: extract subsets compressed data" >> $fLog
+echo "file: $f" >> $fLog
+${tools_dir}bufr_filter -o $fOut $fRules $f 2>> $fLog 1>> $fLog
+
+cat > ${fRules} <<EOF
+set unpack=1;
+print "=== message number [count]";
+print "numberOfSubsets=[numberOfSubsets]";
+print "solarElevation=[solarElevation!10]";
+print "fieldOfViewNumber=[fieldOfViewNumber!10]";
+print "orbitNumber=[orbitNumber!10]";
+print "casRegistryNumber=[casRegistryNumber!10]";
+EOF
+
+${tools_dir}bufr_filter $fRules $fOut  > ${f}.log
+
+cat > ${f}.log.ref <<EOF
+=== message number 1
+numberOfSubsets=1
+solarElevation=33.2
+fieldOfViewNumber=1
+orbitNumber=2147483647
+casRegistryNumber=10102-44-0
+=== message number 2
+numberOfSubsets=6
+solarElevation=29.71 29.23 37.21 36.78 36.34 35.46
+fieldOfViewNumber=2 2 0 0 0 1
+orbitNumber=2147483647
+casRegistryNumber=10102-44-0
+EOF
+
+diff ${f}.log.ref ${f}.log 
+
+rm -f ${f}.log ${f}.log.ref
+rm -f $fLog $fOut $fRules 
+
+#-----------------------------------------------------------
+# Test:  firstOrderStatistics
+#-----------------------------------------------------------
+cat > $fRules <<EOF
+set unpack=1;
+print "decimalScaleOfFollowingSignificands->firstOrderStatisticalValue=[/pressure=101325/decimalScaleOfFollowingSignificands->firstOrderStatisticalValue!10]";
+print "decimalScaleOfFollowingSignificands->firstOrderStatisticalValue->firstOrderStatisticalValue=[/pressure=101325/decimalScaleOfFollowingSignificands->firstOrderStatisticalValue->firstOrderStatisticalValue!10]";
+print "/firstOrderStatistics=9/decimalScaleOfFollowingSignificands=[/firstOrderStatistics=9/decimalScaleOfFollowingSignificands!10]";
+print "/firstOrderStatistics=14/decimalScaleOfFollowingSignificands=[/firstOrderStatistics=14/decimalScaleOfFollowingSignificands!10]";
+EOF
+
+f="gosat.bufr"
+
+echo "Test: firstOrderStatistics" >> $fLog
+echo "file: $f" >> $fLog
+${tools_dir}bufr_filter $fRules $f  > ${f}.log
+
+cat > ${f}.log.ref <<EOF
+decimalScaleOfFollowingSignificands->firstOrderStatisticalValue=-15 -15 -15 -15 -15 -15 -15 -15 -15 -15 
+-15 -15 -14 -14 -14 -15 -15 -15 -15 -15 
+-15 -15 -15 -15 -15 -15 -15 -15 -15 -15 
+-15 -15 -15 -15 -15 -15 -15
+decimalScaleOfFollowingSignificands->firstOrderStatisticalValue->firstOrderStatisticalValue=0
+/firstOrderStatistics=9/decimalScaleOfFollowingSignificands=-15 -15 -15 -15 -15 -15 -15 -15 -15 -15 
+-15 -15 -14 -14 -14 -15 -15 -15 -15 -15 
+-15 -15 -15 -15 -15 -15 -15 -15 -15 -15 
+-15 -15 -15 -15 -15 -15 -15
+/firstOrderStatistics=14/decimalScaleOfFollowingSignificands=0
+EOF
+
+diff ${f}.log.ref ${f}.log 
+
+rm -f ${f}.log ${f}.log.ref
+rm -f $fLog $fRules 
+
+#-----------------------------------------------------------
+# Test:  delayed replication compressed data
+#-----------------------------------------------------------
+cat > $fRules <<EOF
+set localTablesVersionNumber=1;
+set masterTablesVersionNumber=13;
+
+
+set inputDelayedDescriptorReplicationFactor = {5};
+set compressedData=1;
+set numberOfSubsets=2;
+
+set unexpandedDescriptors={312061};
+
+set #1#windSpeedAt10M={10,20};
+set #3#windSpeedAt10M={30,40};
+
+set pack=1;
+
+write;
+EOF
+
+f="asel_139.bufr"
+fOut="asel_139.bufr.out"
+
+echo "Test: delayed replication compressed data" >> $fLog
+echo "file: $f" >> $fLog
+${tools_dir}bufr_filter -o $fOut $fRules $f 2>> $fLog 1>> $fLog
+
+cat > ${fRules} <<EOF
+set unpack=1;
+
+print "delayedDescriptorReplicationFactor=[delayedDescriptorReplicationFactor]";
+print "#1#windSpeedAt10M=[#1#windSpeedAt10M]";
+print "#3#windSpeedAt10M=[#3#windSpeedAt10M]";
+print "#5#windSpeedAt10M=[#5#windSpeedAt10M]";
+EOF
+
+${tools_dir}bufr_filter $fRules $fOut  > ${f}.log
+
+cat > ${f}.log.ref <<EOF
+delayedDescriptorReplicationFactor=5
+#1#windSpeedAt10M=10 20
+#3#windSpeedAt10M=30 40
+#5#windSpeedAt10M=-1e+100
+EOF
+
+diff ${f}.log.ref ${f}.log 
+
+rm -f ${f}.log ${f}.log.ref
+rm -f $fLog $fOut $fRules 
+
diff --git a/tests/bufr_get.sh b/tests/bufr_get.sh
index 133f07e..02982d3 100755
--- a/tests/bufr_get.sh
+++ b/tests/bufr_get.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -38,7 +38,6 @@ f="aaen_55.bufr"
 
 #The reference is the same as for ls
 ref_get=$f".ls.ref"
-REDIRECT=/dev/null
 
 echo "Test: -p switch" >> $fLog
 echo "file: $f" >> $fLog
@@ -46,7 +45,7 @@ ${tools_dir}/bufr_get -p totalLength,bufrHeaderCentre,bufrHeaderSubCentre,master
 
 #Write the values into a file and compare with ref
 cat $fTmp | awk '{split($0,a," "); for (i=1; i<=8; i++) print a[i]}' > $res_get
-diff $ref_get $res_get >$REDIRECT 2> $REDIRECT
+diff $ref_get $res_get
 
 #Clean up
 rm -f $fLog
diff --git a/tests/bufr_json.sh b/tests/bufr_json.sh
index c3a1c68..8d58a59 100755
--- a/tests/bufr_json.sh
+++ b/tests/bufr_json.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -32,6 +32,14 @@ do
     json_xs < ${file}.json >$REDIRECT 2> $REDIRECT
   fi
 
+  rm -f ${file}.json | true
+
+  ${tools_dir}bufr_dump -ja $file 2> $REDIRECT > ${file}.json
+
+  if test "x$JSON_CHECK" != "x"; then
+    json_xs < ${file}.json >$REDIRECT 2> $REDIRECT
+  fi
+
   rm -f ${file}.json
 
   ${tools_dir}bufr_dump -jf $file 2> $REDIRECT > ${file}.json
diff --git a/tests/bufr_ls.sh b/tests/bufr_ls.sh
index 6b3a7c7..6cf1c18 100755
--- a/tests/bufr_ls.sh
+++ b/tests/bufr_ls.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -46,7 +46,7 @@ ${tools_dir}/bufr_ls -p totalLength,bufrHeaderCentre,bufrHeaderSubCentre,masterT
 
 #Write the values into a file and compare with ref
 awk NR==3 $fTmp | awk '{split($0,a," "); for (i=1; i<=8; i++) print a[i]}' > $res_ls
-diff $ref_ls $res_ls >$REDIRECT 2> $REDIRECT
+diff $ref_ls $res_ls
 
 rm -f $fLog $res_ls 
 rm -f $fTmp
diff --git a/tests/bufr_set.sh b/tests/bufr_set.sh
index eed22e8..d776819 100755
--- a/tests/bufr_set.sh
+++ b/tests/bufr_set.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/bufrdc_desc_ref.sh b/tests/bufrdc_desc_ref.sh
index 4c72dec..2a6b67b 100755
--- a/tests/bufrdc_desc_ref.sh
+++ b/tests/bufrdc_desc_ref.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -20,7 +20,6 @@ bufr_files=`cat ${data_dir}/bufr/bufr_data_files.txt`
 for bf in ${bufr_files}
 do
   file=${data_dir}/bufr/$bf
-  REDIRECT=/dev/null
 
   # Test descriptors: compare output of filter (res) with reference file (ref)
   res_desc=$file.desc.test
diff --git a/tests/bufrdc_ref.sh b/tests/bufrdc_ref.sh
index f5affe2..8aa436c 100755
--- a/tests/bufrdc_ref.sh
+++ b/tests/bufrdc_ref.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -8,16 +8,17 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
+set -x
 . ./include.sh
 
 REDIRECT=/dev/null
 
 cat > bufrdc_num_ref.filter<<EOF
-set subsetNumber=0;
 print "[numericValues!1%23.14e]";
 EOF
 
 bufr_files=`cat ${data_dir}/bufr/bufr_data_files.txt`
+
 for bf in ${bufr_files}
 do
   file=${data_dir}/bufr/$bf
@@ -30,6 +31,11 @@ do
 
   ${tools_dir}bufr_filter bufrdc_num_ref.filter $file 2> $REDIRECT > $res_num
 
+  # Exclude the BUFR file uegabe.bufr because its reference file is incorrect
+  if [ "$bf" = "uegabe.bufr" ]; then
+    continue
+  fi
+
   if [ -f "$ref_num" ]; then
     # Cannot use plain diff. We need to compare FLOAT NUMBERS with a tolerance
     perl number_compare.pl $ref_num $res_num >$REDIRECT 2> $REDIRECT
diff --git a/tests/calendar.sh b/tests/calendar.sh
index a0f7360..29af98c 100755
--- a/tests/calendar.sh
+++ b/tests/calendar.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -16,39 +16,29 @@ temp1=temp1.calendar.$$
 temp2=temp2.calendar.$$
 sample=$ECCODES_SAMPLES_PATH/GRIB2.tmpl
 
-########### Utility function ##############
-check_key_equals()
-{
-   file=$1
-   key=$2
-   val=$3
-   result=`${tools_dir}grib_get -p $key $file`
-   [ "$result" = "$val" ]
-}
-###########################################
 
 ${tools_dir}grib_set -s tablesVersion=13,setCalendarId=1,typeOfCalendar=0 $sample $temp1
-check_key_equals $temp1 calendarIdPresent 1
-check_key_equals $temp1 section1Length    24
-check_key_equals $temp1 calendarIdentificationTemplateNumber 0
-check_key_equals $temp1 typeOfCalendar    0
+grib_check_key_equals $temp1 calendarIdPresent 1
+grib_check_key_equals $temp1 section1Length    24
+grib_check_key_equals $temp1 calendarIdentificationTemplateNumber 0
+grib_check_key_equals $temp1 typeOfCalendar    0
 
 ${tools_dir}grib_set -s tablesVersion=13,setCalendarId=1,calendarIdentificationTemplateNumber=1 $sample $temp1
-check_key_equals $temp1 calendarIdPresent 1
-check_key_equals $temp1 section1Length    25
-check_key_equals $temp1 calendarIdentificationTemplateNumber 1
-check_key_equals $temp1 numberOfTensOfThousandsOfYearsOfOffset MISSING
+grib_check_key_equals $temp1 calendarIdPresent 1
+grib_check_key_equals $temp1 section1Length    25
+grib_check_key_equals $temp1 calendarIdentificationTemplateNumber 1
+grib_check_key_equals $temp1 numberOfTensOfThousandsOfYearsOfOffset MISSING
 
 ${tools_dir}grib_set -s tablesVersion=13,setCalendarId=1,calendarIdentificationTemplateNumber=2 $sample $temp1
-check_key_equals $temp1 calendarIdPresent 1
-check_key_equals $temp1 section1Length    26
-check_key_equals $temp1 calendarIdentificationTemplateNumber 2
-check_key_equals $temp1 typeOfCalendar    255
-check_key_equals $temp1 numberOfTensOfThousandsOfYearsOfOffset MISSING
+grib_check_key_equals $temp1 calendarIdPresent 1
+grib_check_key_equals $temp1 section1Length    26
+grib_check_key_equals $temp1 calendarIdentificationTemplateNumber 2
+grib_check_key_equals $temp1 typeOfCalendar    255
+grib_check_key_equals $temp1 numberOfTensOfThousandsOfYearsOfOffset MISSING
 
 # Remove the calendar section
 ${tools_dir}grib_set -s deleteCalendarId=1 $temp1 $temp2
-check_key_equals $temp2 section1Length    21
-check_key_equals $temp2 calendarIdPresent 0
+grib_check_key_equals $temp2 section1Length    21
+grib_check_key_equals $temp2 calendarIdPresent 0
 
 rm -f $temp1 $temp2
diff --git a/tests/ccsds.sh b/tests/ccsds.sh
index d622790..795526f 100755
--- a/tests/ccsds.sh
+++ b/tests/ccsds.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/ccsds_perf.c b/tests/ccsds_perf.c
index c0e59e3..8c9f847 100644
--- a/tests/ccsds_perf.c
+++ b/tests/ccsds_perf.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tests/change_scanning.sh b/tests/change_scanning.sh
index 3697c55..b3bdeaf 100755
--- a/tests/change_scanning.sh
+++ b/tests/change_scanning.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/check_gaussian_grids.sh b/tests/check_gaussian_grids.sh
new file mode 100755
index 0000000..cdde04a
--- /dev/null
+++ b/tests/check_gaussian_grids.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+# Copyright 2005-2016 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.sh
+
+# Check all sample GRIBs with a Gaussian grid
+samples_dir=$ECCODES_SAMPLES_PATH
+for gg in ${samples_dir}/reduced_gg_* ${samples_dir}/regular_gg_*; do
+   ${tools_dir}grib_check_gaussian_grid $gg >/dev/null
+   grib_check_key_equals $gg "global" 1
+done
diff --git a/tests/compare.sh b/tests/compare.sh
index 92ad691..3aa4a40 100755
--- a/tests/compare.sh
+++ b/tests/compare.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -8,7 +8,6 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-
 . ./include.sh
 
 REDIRECT=/dev/null
@@ -33,5 +32,12 @@ cat temp_comp.3 temp_comp.2 temp_comp.1 > temp_comp.321
 # Compare files in which the messages are not in the same order
 ${tools_dir}grib_compare -r temp_comp.123 temp_comp.321
 
+# GRIB-797: test last argument being a directory
+temp_dir=tempdir.grib_compare
+mkdir -p $temp_dir
+cp $infile $temp_dir
+${tools_dir}grib_compare $infile  $temp_dir
+rm -rf $temp_dir
+
 rm -f temp_comp.1 temp_comp.2 temp_comp.3 temp_comp.123 temp_comp.321
 rm -f $outfile || true
diff --git a/tests/concept.sh b/tests/concept.sh
index 09d16c4..0f5406f 100755
--- a/tests/concept.sh
+++ b/tests/concept.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/convert.sh b/tests/convert.sh
index 1d1ee1c..4a04004 100755
--- a/tests/convert.sh
+++ b/tests/convert.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/debug.sh b/tests/debug.sh
index e08168f..6452837 100755
--- a/tests/debug.sh
+++ b/tests/debug.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/decimalPrecision.sh b/tests/decimalPrecision.sh
index 0d1a041..3780fbd 100755
--- a/tests/decimalPrecision.sh
+++ b/tests/decimalPrecision.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/decode.c b/tests/decode.c
index 19f55f3..584c8d4 100755
--- a/tests/decode.c
+++ b/tests/decode.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tests/definitions.sh b/tests/definitions.sh
index 7ac37f3..ee0c802 100755
--- a/tests/definitions.sh
+++ b/tests/definitions.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -17,6 +17,6 @@ REDIRECT=/dev/null
 
 for file in `find $ECCODES_DEFINITION_PATH -name '*.def' -print`
 do
-  ${tools_dir}parser $file > $REDIRECT
+  ${tools_dir}codes_parser $file > $REDIRECT
 done
 
diff --git a/tests/double_cmp.c b/tests/double_cmp.c
index 71c59a5..ef4eff5 100644
--- a/tests/double_cmp.c
+++ b/tests/double_cmp.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tests/double_cmp.sh b/tests/double_cmp.sh
index f900893..d714376 100755
--- a/tests/double_cmp.sh
+++ b/tests/double_cmp.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/ecc-197.sh b/tests/ecc-197.sh
new file mode 100755
index 0000000..286ca21
--- /dev/null
+++ b/tests/ecc-197.sh
@@ -0,0 +1,38 @@
+#!/bin/sh
+# Copyright 2005-2016 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.sh
+
+# ---------------------------------------------------------
+# This is the test for the JIRA issue ECC-197.
+# It tests decoding a BUFR file which cannot be done unless
+# we extend the definitions to include extra files
+# ---------------------------------------------------------
+
+# Create a temporary directory which holds the tables etc
+TEMP_DIR=ecc-197-temp-dir.$$
+rm -rf $TEMP_DIR
+mkdir -p $TEMP_DIR/definitions/bufr/tables/0/wmo/26
+
+# Copy the definition files needed to decode BUFR file
+def_files="${proj_dir}/tests/ECC-197/*"
+for df in ${def_files}; do
+  cp -f $df $TEMP_DIR/definitions/bufr/tables/0/wmo/26
+done
+
+# Point ecCodes to look in this dir as well as standard one
+MY_DEFS=`pwd`/$TEMP_DIR/definitions
+export ECCODES_DEFINITION_PATH=$MY_DEFS:$ECCODES_DEFINITION_PATH
+
+# Now decode
+${tools_dir}bufr_dump ${data_dir}/bufr/vos308014_v3_26.bufr >/dev/null
+
+rm -rf $TEMP_DIR
+
diff --git a/tests/filter.sh b/tests/filter.sh
index 1c5aeca..7d7deb3 100755
--- a/tests/filter.sh
+++ b/tests/filter.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/fortran_interface.sh b/tests/fortran_interface.sh
index 68f7c9c..22f5ded 100755
--- a/tests/fortran_interface.sh
+++ b/tests/fortran_interface.sh
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/gauss_sub.c b/tests/gauss_sub.c
index d6a10b7..a5a3e79 100644
--- a/tests/gauss_sub.c
+++ b/tests/gauss_sub.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tests/get_fail.sh b/tests/get_fail.sh
index cdff1a2..e318541 100755
--- a/tests/get_fail.sh
+++ b/tests/get_fail.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/global.sh b/tests/global.sh
new file mode 100755
index 0000000..bcc3066
--- /dev/null
+++ b/tests/global.sh
@@ -0,0 +1,51 @@
+#!/bin/sh
+# Copyright 2005-2016 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.sh
+
+# Check Gaussian grids
+files_global="
+    reduced_gaussian_lsm.grib1
+    reduced_gaussian_model_level.grib1
+    reduced_gaussian_pressure_level.grib1
+    reduced_gaussian_pressure_level_constant.grib1
+    reduced_gaussian_surface.grib1
+    reference_ensemble_mean.grib1
+    reference_stdev.grib1
+    regular_gaussian_model_level.grib1
+    regular_gaussian_pressure_level.grib1
+    regular_gaussian_pressure_level_constant.grib1
+    regular_gaussian_surface.grib1
+    reduced_gaussian_model_level.grib2
+    reduced_gaussian_pressure_level.grib2
+    reduced_gaussian_pressure_level_constant.grib2
+    reduced_gaussian_surface.grib2
+    reduced_gaussian_surface_jpeg.grib2
+    regular_gaussian_model_level.grib2
+    regular_gaussian_pressure_level.grib2
+    regular_gaussian_pressure_level_constant.grib2
+    regular_gaussian_surface.grib2
+    tigge/tigge_ecmf_pl_gh.grib
+    tigge/tigge_sbsj_pl_q.grib
+"
+
+files_subarea="
+    reduced_gaussian_sub_area.grib1
+    reduced_gaussian_sub_area.grib2
+"
+
+for gg in $files_global; do
+    filepath=${data_dir}/$gg
+    grib_check_key_equals $filepath "global" 1
+done
+
+for gg in $files_subarea; do
+    filepath=${data_dir}/$gg
+    grib_check_key_equals $filepath "global" 0
+done
diff --git a/tests/grib1to2.sh b/tests/grib1to2.sh
index 5e8e312..10fbe62 100755
--- a/tests/grib1to2.sh
+++ b/tests/grib1to2.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/grib2to1.sh b/tests/grib2to1.sh
index b028a39..8b84f56 100755
--- a/tests/grib2to1.sh
+++ b/tests/grib2to1.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/grib_to_netcdf.sh b/tests/grib_to_netcdf.sh
index d98eb0c..b2ee4fd 100755
--- a/tests/grib_to_netcdf.sh
+++ b/tests/grib_to_netcdf.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -20,7 +20,7 @@ rm -f $tmp_out | true
 # we get a usage message otherwise we get a specific message. Note: In both cases
 # the command fails.
 ${tools_dir}grib_to_netcdf > $tmp_out
-grep 'GRIB API was not compiled with NETCDF enabled' $tmp_out > /dev/null
+grep 'ecCodes was not compiled with NETCDF enabled' $tmp_out > /dev/null
 if [ $? -eq 0 ]; then
   # Message was found
   skip_test=1
diff --git a/tests/grib_util_set_spec.c b/tests/grib_util_set_spec.c
new file mode 100644
index 0000000..53deeb7
--- /dev/null
+++ b/tests/grib_util_set_spec.c
@@ -0,0 +1,166 @@
+/*
+ * Copyright 2005-2016 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 <assert.h>
+
+#define STR_EQUAL(s1, s2) (strcmp((s1), (s2)) == 0)
+
+void test_reduced_gg(const char* input_filename, const char* output_filename)
+{
+    /* based on copy_spec_from_ksec */
+    int err = 0;
+    size_t slen = 32, inlen = 0, outlen = 0;
+    size_t size=0;
+    int set_spec_flags=0;
+    double* values = NULL;
+    FILE* in = NULL;
+    FILE* out = NULL;
+    const void* buffer = NULL;
+    char gridType[128] = {0,};
+
+    codes_handle *handle = 0;
+    codes_handle *finalh = 0;
+    grib_util_grid_spec spec={0,};
+    grib_util_packing_spec packing_spec={0,};
+
+    in = fopen(input_filename,"r");     assert(in);
+    handle = grib_handle_new_from_file(0,in,&err);    assert(handle);
+
+    CODES_CHECK(grib_get_string(handle, "gridType", gridType, &slen),0);
+    if (!STR_EQUAL(gridType, "reduced_gg")) {
+        grib_handle_delete(handle);
+        return;
+    }
+    out = fopen(output_filename,"w");   assert(out);
+
+    CODES_CHECK(grib_get_size(handle,"values",&inlen), 0);
+    values = (double*)malloc(sizeof(double)*inlen);
+    CODES_CHECK(grib_get_double_array(handle, "values", values,&inlen), 0);
+
+    spec.grid_type = GRIB_UTIL_GRID_SPEC_REDUCED_GG;
+    spec.N = 320;   /* hardcoded for now */
+    spec.Nj = 2 * spec.N;
+    outlen = inlen;
+    spec.iDirectionIncrementInDegrees = 1.5;
+    spec.jDirectionIncrementInDegrees = 1.5;
+    spec.latitudeOfFirstGridPointInDegrees  = 89.785;
+    spec.longitudeOfFirstGridPointInDegrees = 0.0;
+    spec.latitudeOfLastGridPointInDegrees   = -89.785;
+    spec.longitudeOfLastGridPointInDegrees  = 359.719;
+    spec.bitmapPresent = 0;
+
+    packing_spec.packing_type = GRIB_UTIL_PACKING_TYPE_GRID_SIMPLE;
+    packing_spec.bitsPerValue = 24;
+    packing_spec.accuracy=GRIB_UTIL_ACCURACY_USE_PROVIDED_BITS_PER_VALUES;
+    packing_spec.packing=GRIB_UTIL_PACKING_USE_PROVIDED;
+
+    finalh = grib_util_set_spec(
+            handle,
+            &spec,
+            &packing_spec,
+            set_spec_flags,
+            values,
+            outlen,
+            &err);
+    assert(finalh);
+    assert(err == 0);
+
+    /* Write out the message to the output file */
+    CODES_CHECK(grib_get_message(finalh, &buffer, &size),0);
+    if(fwrite(buffer,1,size,out) != size) {
+        assert(0);
+    }
+    grib_handle_delete(handle);
+    grib_handle_delete(finalh);
+    fclose(in);
+    fclose(out);
+}
+
+void test_regular_ll(const char* input_filename, const char* output_filename)
+{
+    /* based on copy_spec_from_ksec */
+    int err = 0;
+    size_t slen = 32, inlen = 0, outlen = 0;
+    size_t size=0;
+    int set_spec_flags=0;
+    double* values = NULL;
+    FILE* in = NULL;
+    FILE* out = NULL;
+    const void* buffer = NULL;
+    char gridType[128] = {0,};
+
+    codes_handle *handle = 0;
+    codes_handle *finalh = 0;
+    grib_util_grid_spec spec={0,};
+    grib_util_packing_spec packing_spec={0,};
+
+    in = fopen(input_filename,"r");     assert(in);
+    handle = codes_handle_new_from_file(0, in, PRODUCT_GRIB, &err);    assert(handle);
+
+    CODES_CHECK(grib_get_string(handle, "gridType", gridType, &slen),0);
+    if (!STR_EQUAL(gridType, "regular_ll")) {
+        grib_handle_delete(handle);
+        return;
+    }
+    out = fopen(output_filename,"w");   assert(out);
+
+    CODES_CHECK(codes_get_size(handle,"values",&inlen), 0);
+    values = (double*)malloc(sizeof(double)*inlen);
+    CODES_CHECK(codes_get_double_array(handle, "values", values,&inlen), 0);
+
+    spec.grid_type = GRIB_UTIL_GRID_SPEC_REGULAR_LL;
+    spec.Nj = 14;
+    spec.Ni = 17;
+    outlen = spec.Nj * spec.Ni;
+    spec.iDirectionIncrementInDegrees = 1.5;
+    spec.jDirectionIncrementInDegrees = 1.5;
+    spec.latitudeOfFirstGridPointInDegrees  = 60.0;
+    spec.longitudeOfFirstGridPointInDegrees = -9.0;
+    spec.latitudeOfLastGridPointInDegrees   = 40.5;
+    spec.longitudeOfLastGridPointInDegrees  = 15.0;
+    spec.bitmapPresent = 0;
+
+    packing_spec.packing_type = GRIB_UTIL_PACKING_TYPE_GRID_SIMPLE;
+    packing_spec.bitsPerValue = 24;
+    packing_spec.accuracy=GRIB_UTIL_ACCURACY_USE_PROVIDED_BITS_PER_VALUES;
+    packing_spec.packing=GRIB_UTIL_PACKING_USE_PROVIDED;
+
+    finalh = codes_grib_util_set_spec(
+            handle,
+            &spec,
+            &packing_spec,
+            set_spec_flags,
+            values,
+            outlen,
+            &err);
+    assert(finalh);
+    assert(err == 0);
+
+    /* Write out the message to the output file */
+    CODES_CHECK(codes_get_message(finalh, &buffer, &size),0);
+    if(fwrite(buffer,1,size,out) != size) {
+        assert(0);
+    }
+    codes_handle_delete(handle);
+    codes_handle_delete(finalh);
+    fclose(in);
+    fclose(out);
+}
+
+int main(int argc, char *argv[])
+{
+    const char *infile = argv[1];
+    const char *outfile = argv[2];
+
+    test_regular_ll(infile, outfile);
+    test_reduced_gg(infile, outfile);
+
+    return 0;
+}
diff --git a/tests/grib_util_set_spec.sh b/tests/grib_util_set_spec.sh
new file mode 100755
index 0000000..ed84aac
--- /dev/null
+++ b/tests/grib_util_set_spec.sh
@@ -0,0 +1,38 @@
+#!/bin/sh
+# Copyright 2005-2016 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.sh
+
+### Regular Lat/Lon Grid
+###########################################
+infile=../data/latlon.grib
+outfile=out.grib_util_set_spec.grib
+rm -f $outfile
+
+${test_dir}/grib_util_set_spec $infile $outfile > /dev/null
+
+res=`${tools_dir}grib_get -p Ni,Nj,numberOfValues,bitsPerValue $outfile`
+[ "$res" = "17 14 238 24" ]
+
+${tools_dir}grib_get_data $outfile > /dev/null
+
+### Reduced Gaussian Grid
+###########################################
+infile=$ECCODES_SAMPLES_PATH/reduced_gg_pl_320_grib2.tmpl
+outfile=out.grib_util_set_spec.grib
+rm -f $outfile
+
+${test_dir}/grib_util_set_spec $infile $outfile
+
+${tools_dir}grib_get_data $outfile > /dev/null
+
+
+### Clean up
+rm -f $outfile
diff --git a/tests/gribex_perf.c b/tests/gribex_perf.c
index fe30efa..efff5e0 100644
--- a/tests/gribex_perf.c
+++ b/tests/gribex_perf.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tests/gridType.sh b/tests/gridType.sh
index a463001..95360f5 100755
--- a/tests/gridType.sh
+++ b/tests/gridType.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -8,7 +8,6 @@
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 #
 
-
 . ./include.sh
 
 REDIRECT=/dev/null
@@ -23,10 +22,10 @@ if [ $gridType != "regular_gg" ]
 then
     echo "Unable to change from reduced_latlon to regular_gg"
     echo $gridType
-	exit 1
+    exit 1
 fi
 
-rm -f $tmpdata || true
+rm -f $tmpdata
 
 ${tools_dir}grib_set -s gridType=reduced_gg ${data_dir}/regular_gaussian_pressure_level.grib1 ${tmpdata} > $REDIRECT
 
@@ -35,7 +34,20 @@ if [ $gridType != "reduced_gg" ]
 then
     echo "Unable to change from regular_gg to reduced_gg"
     echo $gridType
-	exit 1
+    exit 1
 fi
 
-rm -f $tmpdata || true
+rm -f $tmpdata
+
+###########
+# gridName
+###########
+for f in $ECCODES_SAMPLES_PATH/regular_gg_ml_grib*tmpl; do
+    gname=`${tools_dir}grib_get -p gridName $f`
+    [ "$gname" = "F32" ]
+done
+for f in $ECCODES_SAMPLES_PATH/reduced_gg_pl_512_grib*.tmpl; do
+    gname=`${tools_dir}grib_get -p gridName $f`
+    [ "$gname" = "N512" ]
+done
+
diff --git a/tests/gts_ls.sh b/tests/gts_ls.sh
index b4a8ad0..a0b6c48 100755
--- a/tests/gts_ls.sh
+++ b/tests/gts_ls.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/ibm.c b/tests/ibm.c
index 71a4d77..df3fcf8 100755
--- a/tests/ibm.c
+++ b/tests/ibm.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tests/ieee.c b/tests/ieee.c
index fe75cd1..8ef7658 100755
--- a/tests/ieee.c
+++ b/tests/ieee.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tests/ieee.sh b/tests/ieee.sh
index f40edd5..faf64cc 100755
--- a/tests/ieee.sh
+++ b/tests/ieee.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -31,7 +31,7 @@ cat > w.filter <<EOF
 EOF
 
 cat > r.filter <<EOF
-print "[values]";
+print "[values%g]";
 EOF
 
 ${tools_dir}grib_filter -o $outsimple w.filter $infile 
@@ -39,6 +39,10 @@ ${tools_dir}grib_filter -o $outsimple w.filter $infile
 ${tools_dir}grib_filter r.filter $outsimple > $outsimple.txt
 diff $outsimple.txt ${data_dir}/ieee_test.good
 
+${tools_dir}grib_set -r -s packingType=grid_ieee $outsimple $out32
+${tools_dir}grib_filter r.filter $out32 > $out32.txt 
+diff $out32.txt ${data_dir}/ieee_test.good
+
 # Disabled for now. See GRIB-2 and GRIB-80
 #GRIB_IEEE_PACKING=32
 #export GRIB_IEEE_PACKING
@@ -59,17 +63,22 @@ rm -f w.filter $outsimple.txt
 ${tools_dir}grib_filter r.filter $shdata > $shdata.txt
 diff $shdata.txt $shdata.good
 
-GRIB_IEEE_PACKING=32
-export GRIB_IEEE_PACKING
+${tools_dir}grib_set -r -s packingType=grid_ieee $shdata ${shdata}_ieee
+${tools_dir}grib_filter r.filter ${shdata}_ieee > $shdata.txt
+diff $shdata.txt $shdata.good
+rm -f ${shdata}_ieee
+
+##########################
+#GRIB_IEEE_PACKING=32
+#export GRIB_IEEE_PACKING
 #${tools_dir}grib_copy -r $shdata ${shdata}_32
 #${tools_dir}grib_filter r.filter ${shdata}_32 > ${shdata}_32.txt
 #diff ${shdata}_32.txt ${shdata}_32.good
 
-GRIB_IEEE_PACKING=64
-export GRIB_IEEE_PACKING
+#GRIB_IEEE_PACKING=64
+#export GRIB_IEEE_PACKING
 #${tools_dir}grib_copy -r $shdata ${shdata}_64
 #${tools_dir}grib_filter r.filter ${shdata}_64 > ${shdata}_64.txt
 #diff ${shdata}_64.txt ${shdata}.good
 
 rm -f r.filter ${shdata}_64.txt ${shdata}_32.txt $shdata.txt
-
diff --git a/tests/include.sh b/tests/include.sh
index 0fcc52b..85bce9d 100644
--- a/tests/include.sh
+++ b/tests/include.sh
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -8,6 +8,8 @@
 #
 set -ea
 
+. ./utils.sh
+
 CMAKE_INCLUDE_FILE=include.ctest.sh
 if [ -f "$CMAKE_INCLUDE_FILE" ]; then
   # This is the config file for Cmake tests
@@ -32,11 +34,15 @@ else
   then
     cd ../
     cpath=`pwd`
+    proj_dir=$cpath
     ECCODES_DEFINITION_PATH=$cpath/definitions
     export ECCODES_DEFINITION_PATH
     ECCODES_SAMPLES_PATH=$cpath/samples
     export ECCODES_SAMPLES_PATH
     tools_dir=$cpath/tools/
+
+#tools_dir="valgrind --error-exitcode=1 -q $cpath/tools/"
+
     tigge_dir=$cpath/tigge/
     data_dir=$cpath/data
     test_dir=$cpath/tests
diff --git a/tests/index.c b/tests/index.c
index 2aa6c42..3218104 100644
--- a/tests/index.c
+++ b/tests/index.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -19,19 +19,17 @@ int main(int argc,char* argv[])
     grib_index* index=NULL;
     grib_handle* h=NULL;
     char* infile=NULL;
-    char* outfile=NULL;
     long *steps,*levels,*numbers; /* arrays */
     char** shortName=NULL;
     int i,j,k,l;
     size_t stepSize,levelSize,shortNameSize,numberSize;
-    long ostep,olevel,onumber;
-    char oshortName[200];
-    size_t lenshortName=200;
+    long oStep,oLevel,oNumber;
+    char oShortName[200];
+    size_t lenShortName=200;
     int ret=0,count=0;
 
     if (argc != 2) usage(argv[0]);
     infile=argv[1];
-    outfile=argv[2];
 
     printf("indexing...\n");
 
@@ -111,15 +109,15 @@ int main(int argc,char* argv[])
                     while ((h=grib_handle_new_from_index(index,&ret))!=NULL){
                         count++;
                         if (ret) {printf("error: %d\n",ret); exit(ret);}
-                        lenshortName=200;
-                        grib_get_string(h,"shortName",oshortName,&lenshortName);
-                        grib_get_long(h,"level",&olevel);
-                        grib_get_long(h,"number",&onumber);
-                        grib_get_long(h,"step",&ostep);
-                        printf("shortName=%s ",oshortName);
-                        printf("level=%ld ",olevel);
-                        printf("number=%ld ",onumber);
-                        printf("step=%ld \n",ostep);
+                        lenShortName=200;
+                        grib_get_string(h,"shortName",oShortName,&lenShortName);
+                        grib_get_long(h,"level",&oLevel);
+                        grib_get_long(h,"number",&oNumber);
+                        grib_get_long(h,"step",&oStep);
+                        printf("shortName=%s ",oShortName);
+                        printf("level=%ld ",oLevel);
+                        printf("number=%ld ",oNumber);
+                        printf("step=%ld \n",oStep);
                         grib_handle_delete(h);
                     }
                     if (ret && ret!=GRIB_END_OF_INDEX ) {printf("error: %s\n",grib_get_error_message(ret)); exit(ret);}
diff --git a/tests/index.sh b/tests/index.sh
index 5e0a5e1..70885e8 100755
--- a/tests/index.sh
+++ b/tests/index.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -29,10 +29,17 @@ diff index.out ${data_dir}/index.ok
 
 rm -f index.out out.gribidx
 
-# test grib_index_build
-#
+#-------------------------------
+# Test grib_index_build
+#-------------------------------
 tempIndex=temp.$$.ix
 ${tools_dir}grib_index_build -o $tempIndex ${infile} >/dev/null
 ${tools_dir}grib_dump -D ${tempIndex} > /dev/null
 
+${tools_dir}grib_index_build -k mars.levtype -o $tempIndex ${data_dir}/tigge_cf_ecmwf.grib2 |\
+   grep -q "mars.levtype = { sfc, pl, pv, pt }"
+
+${tools_dir}grib_index_build -k mars.levtype:i -o $tempIndex ${data_dir}/tigge_cf_ecmwf.grib2 |\
+   grep -q "mars.levtype = { 103, 1, 106, 100, 101, 8, 109, 107 }"
+
 rm -f $tempIndex
diff --git a/tests/index_orderby.c b/tests/index_orderby.c
index 8e6d83a..8d95606 100644
--- a/tests/index_orderby.c
+++ b/tests/index_orderby.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tests/iterator.sh b/tests/iterator.sh
index d7db332..7c607d2 100755
--- a/tests/iterator.sh
+++ b/tests/iterator.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/jpeg.sh b/tests/jpeg.sh
index 209c4d8..2971b2e 100755
--- a/tests/jpeg.sh
+++ b/tests/jpeg.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/jpeg_perf.c b/tests/jpeg_perf.c
index 3770e6e..b7e68a2 100644
--- a/tests/jpeg_perf.c
+++ b/tests/jpeg_perf.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tests/julian.c b/tests/julian.c
index d7a18b1..c54036d 100644
--- a/tests/julian.c
+++ b/tests/julian.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -59,12 +59,41 @@ void TestDateTime(const long year, const long month, const long day, const long
     }
 }
 
+void Test0()
+{
+    long year, month, day, hour, min, sec;
+    double jd;
+
+    printf("Test0...\n");
+    /* Test a specific date */
+    year  = 1801;
+    month = 1;
+    day   = 30;
+    hour  = 18;
+    min   = 26;
+    sec   = 24;
+
+    grib_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);
+
+    grib_julian_to_datetime(jd, &year, &month, &day, &hour,&min, &sec);
+    assert( year  == 1801 );
+    assert( month == 1 );
+    assert( day   == 30 );
+    assert( hour  == 18 );
+    assert( min   == 26 );
+    assert( sec   == 24 );
+    printf("%ld %ld %ld %ld:%ld:%ld -> %f\n",year,month,day,hour,min,sec,jd);
+}
+
 void Test1()
 {
     long year, month, day, hour, min, sec;
     double jd;
 
     /* Test a specific date */
+    printf("Test1...\n");
     year = 1957;
     month = 10;
     day = 4;
@@ -109,6 +138,7 @@ void Test2()
     last=sizeof(jds)/sizeof(double);
 
     printf("\n");
+    printf("Test2...\n");
     for (i=0;i<last;i++) {
         jd=jds[i];
         grib_julian_to_datetime(jd,&year,&month,&day,&hour,&minute,&second);
@@ -133,6 +163,7 @@ void Test2()
 void Test3()
 {
     long iyear, imnth, iday, ihr, imin, isec;
+    printf("Test3...\n");
     for (iyear=1950; iyear<=2015; iyear+=5) {
         for (imnth=1; imnth<=12; imnth+=1) {
             for (iday=1; iday<=28; iday+=1) {
@@ -150,8 +181,10 @@ void Test3()
 
 int main(int argc,char* argv[])
 {
+    Test0();
     Test1();
     Test2();
     Test3();
+    printf("All OK\n");
     return 0;
 }
diff --git a/tests/julian.sh b/tests/julian.sh
index 0a401ca..538feb4 100755
--- a/tests/julian.sh
+++ b/tests/julian.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -14,4 +14,5 @@ ${test_dir}/julian > ${data_dir}/julian.out
 
 diff ${data_dir}/julian.out ${data_dir}/julian.out.good
 
-rm -f ${data_dir}/julian.out | true
+rm -f ${data_dir}/julian.out
+
diff --git a/tests/lamb_az_eq_area.sh b/tests/lamb_az_eq_area.sh
index fac6dbd..6f122cf 100755
--- a/tests/lamb_az_eq_area.sh
+++ b/tests/lamb_az_eq_area.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/laplacian.c b/tests/laplacian.c
index c9cdfbe..cb2ae56 100644
--- a/tests/laplacian.c
+++ b/tests/laplacian.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tests/largefile.c b/tests/largefile.c
index 92757cb..188c91d 100644
--- a/tests/largefile.c
+++ b/tests/largefile.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tests/level.sh b/tests/level.sh
index ece0a30..c50101e 100755
--- a/tests/level.sh
+++ b/tests/level.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/list.sh b/tests/list.sh
index 89ebf31..e5c136d 100755
--- a/tests/list.sh
+++ b/tests/list.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/list_all_keys.ksh b/tests/list_all_keys.ksh
index cdd4de0..2d3d8f9 100755
--- a/tests/list_all_keys.ksh
+++ b/tests/list_all_keys.ksh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/local.sh b/tests/local.sh
index b38f78b..621954a 100755
--- a/tests/local.sh
+++ b/tests/local.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/ls.sh b/tests/ls.sh
index 8ca99c4..50a77e6 100755
--- a/tests/ls.sh
+++ b/tests/ls.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -12,7 +12,6 @@
 
 tempLog=temp.ls.log
 rm -f $tempLog
-workdir=`pwd`
 
 cd ${data_dir}
 infile=regular_gaussian_model_level.grib1
@@ -79,5 +78,13 @@ ${tools_dir}grib_ls -p uuidOfVGrid test_uuid.grib2 > /dev/null
 type=`${tools_dir}grib_get -wcount=1 -p typeOfLevel test_uuid.grib2`
 [ "$type" = "generalVertical" ]
 
-cd $workdir
+# GRIB-213 nearest with land-sea mask
+temp_ls=test.grib-213.temp
+${tools_dir}grib_ls -l 85,13,1,reduced_gaussian_lsm.grib1 reduced_gaussian_surface.grib1 >$temp_ls
+grep -q 'Point chosen #3 index=21 .* distance=11\.' $temp_ls
+
+${tools_dir}grib_ls -l 53,2,1,reduced_gaussian_lsm.grib1 reduced_gaussian_surface.grib1 >$temp_ls
+grep -q 'Point chosen #2 index=749 .* distance=204\.' $temp_ls
+
+rm -f $temp_ls
 
diff --git a/tests/md5.sh b/tests/md5.sh
new file mode 100755
index 0000000..6ce23e5
--- /dev/null
+++ b/tests/md5.sh
@@ -0,0 +1,29 @@
+#
+# 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.sh
+
+test_md5()
+{
+    file=$ECCODES_SAMPLES_PATH/$1
+    expected=$2
+
+    result=`${tools_dir}grib_get -p md5GridSection:s $file`
+    [ "$result" = "$expected" ]
+}
+
+#######################################################################
+# GRIB edition 1
+test_md5 "sh_sfc_grib1.tmpl"        "5b68b3d2c6e834fd501a123391b6b8a2"
+test_md5 "sh_pl_grib1.tmpl"         "5b68b3d2c6e834fd501a123391b6b8a2"
+test_md5 "gg_sfc_grib1.tmpl"        "97451fbe92a77bdeb4582fadc9b65e9d"
+
+# GRIB edition 2
+test_md5 "sh_sfc_grib2.tmpl"        "b10d32ebf4f91e52df0fc5d1deb57c3d"
+test_md5 "rotated_ll_pl_grib2.tmpl" "775bd4622d6becca2d2da9e308c97a7d"
+test_md5 "gg_sfc_grib2.tmpl"        "a63333bd3cb80563e66907bb66d82cda"
diff --git a/tests/metar_dump.sh b/tests/metar_dump.sh
new file mode 100755
index 0000000..fd1fd56
--- /dev/null
+++ b/tests/metar_dump.sh
@@ -0,0 +1,50 @@
+#!/bin/sh
+# Copyright 2005-2016 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.sh
+
+#Enter data dir
+cd ${data_dir}/metar
+
+#Define a common label for all the tmp files
+label="metar_dump_test"
+
+#Create log file
+fLog=${label}".log"
+rm -f $fLog
+touch $fLog
+
+#Define tmp file
+fTmp=${label}".tmp.txt"
+rm -f $fTmp
+
+#----------------------------------------------
+# Test default "dump" on all the metar data files
+#----------------------------------------------
+export METAR_YEAR=2015
+export METAR_MONTH=4
+metar_file=metar.txt
+f=$metar_file
+
+echo $f >> $fLog
+${tools_dir}/metar_dump $f >> $fLog
+
+#-------------------------------------------
+# Test "-p" switch
+#-------------------------------------------
+ref_dump=$f".dump.ref"
+res_dump=$f".dump.test"
+REDIRECT=/dev/null
+
+${tools_dir}/metar_dump $f 2> $REDIRECT > $res_dump
+
+diff $ref_dump $res_dump >$REDIRECT 2> $REDIRECT
+
+rm -f $fLog $res_dump 
diff --git a/tests/metar_ls.sh b/tests/metar_ls.sh
new file mode 100755
index 0000000..030cc5a
--- /dev/null
+++ b/tests/metar_ls.sh
@@ -0,0 +1,50 @@
+#!/bin/sh
+# Copyright 2005-2016 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.sh
+
+#Enter data dir
+cd ${data_dir}/metar
+
+#Define a common label for all the tmp files
+label="metar_ls_test"
+
+#Create log file
+fLog=${label}".log"
+rm -f $fLog
+touch $fLog
+
+#Define tmp file
+fTmp=${label}".tmp.txt"
+rm -f $fTmp
+
+#----------------------------------------------
+# Test default "ls" on all the metar data files
+#----------------------------------------------
+metar_file=metar.txt
+f=$metar_file
+export METAR_YEAR=2015
+export METAR_MONTH=4
+
+echo $f >> $fLog
+${tools_dir}metar_ls $f >> $fLog
+
+#-------------------------------------------
+# Test "-p" switch
+#-------------------------------------------
+ref_ls=$f".ls.ref"
+res_ls=$f".ls.test"
+REDIRECT=/dev/null
+
+${tools_dir}/metar_ls -pCCCC,latitude,longitude,dateTime,elevation,temperature,dewPointTemperature,qnh $f 2> $REDIRECT > $res_ls
+
+diff $ref_ls $res_ls >$REDIRECT 2> $REDIRECT
+
+rm -f $fLog $res_ls 
diff --git a/tests/missing.sh b/tests/missing.sh
index 25f051d..a19e1c1 100755
--- a/tests/missing.sh
+++ b/tests/missing.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/multi.sh b/tests/multi.sh
index 5bb49e1..247c657 100755
--- a/tests/multi.sh
+++ b/tests/multi.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/multi_from_message.c b/tests/multi_from_message.c
index d77791f..2d660c4 100644
--- a/tests/multi_from_message.c
+++ b/tests/multi_from_message.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tests/multi_from_message.sh b/tests/multi_from_message.sh
index bde8c30..33bf27e 100755
--- a/tests/multi_from_message.sh
+++ b/tests/multi_from_message.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/mybufrdc_ref.sh b/tests/mybufrdc_ref.sh
index 327e947..cd37f0c 100755
--- a/tests/mybufrdc_ref.sh
+++ b/tests/mybufrdc_ref.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/neg_fctime.sh b/tests/neg_fctime.sh
new file mode 100755
index 0000000..a505429
--- /dev/null
+++ b/tests/neg_fctime.sh
@@ -0,0 +1,66 @@
+#!/bin/sh
+# Copyright 2005-2016 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.sh
+
+REDIRECT=/dev/null
+
+temp=neg_fctime.temp.grib
+input=${data_dir}/sample.grib2
+
+
+############################
+# Check various grib2 PDTs
+sample2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl
+PDTs="0 1 2 3 8 9 10 11 12 13 14 45 46 47 48 53"
+for p in $PDTs; do
+  ${tools_dir}grib_set -s productDefinitionTemplateNumber=$p,forecastTime=-2 $sample2 $temp
+done
+
+
+############################
+
+# check input time and date
+grib_check_key_equals $input 'dataDate,dataTime' '20080206 1200'
+
+# Negative step in same day
+# --------------------------
+${tools_dir}grib_set -s forecastTime=-2 $input $temp
+grib_check_key_equals $temp 'validityDate,validityTime' '20080206 1000'
+
+${tools_dir}grib_set -s forecastTime=-11 $input $temp
+grib_check_key_equals $temp 'validityDate,validityTime' '20080206 100'
+
+${tools_dir}grib_set -s forecastTime=-12 $input $temp
+grib_check_key_equals $temp 'validityDate,validityTime' '20080206 0'
+
+
+# Negative step previous day
+# --------------------------
+${tools_dir}grib_set -s forecastTime=-13 $input $temp
+grib_check_key_equals $temp 'validityDate,validityTime' '20080205 2300'
+
+${tools_dir}grib_set -s forecastTime=-24 $input $temp
+grib_check_key_equals $temp 'validityDate,validityTime' '20080205 1200'
+
+${tools_dir}grib_set -s forecastTime=-33 $input $temp
+grib_check_key_equals $temp 'validityDate,validityTime' '20080205 300'
+
+# Negative step further back
+# --------------------------
+${tools_dir}grib_set -s forecastTime=-38 $input $temp
+grib_check_key_equals $temp 'validityDate,validityTime' '20080204 2200'
+
+${tools_dir}grib_set -s forecastTime=-185 $input $temp
+grib_check_key_equals $temp 'validityDate,validityTime' '20080129 1900'
+
+
+# Clean up
+rm -f $temp
diff --git a/tests/octahedral.sh b/tests/octahedral.sh
new file mode 100755
index 0000000..ec09b51
--- /dev/null
+++ b/tests/octahedral.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+# Copyright 2005-2016 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.sh
+
+REDIRECT=/dev/null
+
+this_test="octa_grid.test"
+temp=temp.$this_test
+
+input=${data_dir}/msl.octa.glob.grib1
+
+# Check 'global' key
+grib_check_key_equals $input "global,isOctahedral" "1 1"
+
+# Check numberOfDataPoints
+grib_check_key_equals $input "numberOfDataPoints,numberOfCodedValues" "6599680 6599680"
+
+# Iterator
+${tools_dir}grib_get_data $input > $temp
+numlines=`wc -l $temp | awk '{print $1}'`
+[ "$numlines" = "6599681" ]     # 1 + numberOfDataPoints
+
+rm -f $temp
diff --git a/tests/pack_unpack.c b/tests/pack_unpack.c
index fdaa6d3..c4cdea6 100644
--- a/tests/pack_unpack.c
+++ b/tests/pack_unpack.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tests/packing.c b/tests/packing.c
index 0241908..15a9c08 100644
--- a/tests/packing.c
+++ b/tests/packing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tests/packing_check.c b/tests/packing_check.c
index 9bcaae9..d818df9 100644
--- a/tests/packing_check.c
+++ b/tests/packing_check.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tests/padding.sh b/tests/padding.sh
index 2d66f99..3a55c3d 100755
--- a/tests/padding.sh
+++ b/tests/padding.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/png_perf.c b/tests/png_perf.c
index 1cc7b01..24fe063 100644
--- a/tests/png_perf.c
+++ b/tests/png_perf.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tests/read_any.c b/tests/read_any.c
index cfc92a4..dfece43 100644
--- a/tests/read_any.c
+++ b/tests/read_any.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tests/read_any.sh b/tests/read_any.sh
index 436fbe6..7d5b2cb 100755
--- a/tests/read_any.sh
+++ b/tests/read_any.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/read_index.c b/tests/read_index.c
index 7be0548..229a046 100644
--- a/tests/read_index.c
+++ b/tests/read_index.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -15,12 +15,10 @@ void usage(char* prog) {
   exit(1);
 }
 
-int main(int argc,char* argv[]) {
-  
+int main(int argc,char* argv[])
+{
   grib_index* index=NULL;
   grib_handle* h=NULL;
-  char* infile=NULL;
-  char* outfile=NULL;
   long *step,*level,*number;
   char** shortName=NULL;
   int i,j,k,l;
@@ -31,8 +29,6 @@ int main(int argc,char* argv[]) {
   int ret=0,count=0;
 
   if (argc != 2) usage(argv[0]);
-  infile=argv[1];
-  outfile=argv[2];
 
   printf("indexing...\n");
 
diff --git a/tests/second_order.sh b/tests/second_order.sh
index ed58044..d4bf4f9 100755
--- a/tests/second_order.sh
+++ b/tests/second_order.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -96,6 +96,9 @@ res=`${tools_dir}grib_get -l 33,88.5 $sec_ord_bmp`
 res=`${tools_dir}/grib_get -l 28.5,90 $sec_ord_bmp`
 [ "$res" = "3.51552 9999 5.26552 9999 " ]
 
+# GRIB-203 nearest on M-F second order boustrophedonic
+res=`${tools_dir}grib_get -w count=1 -l 0,0 lfpw.grib1`
+[ "$res" = "20560.7 20563.4 20554.7 20559.5 " ]
 
 rm -f $sec_ord_bmp
 rm -f test.filter
diff --git a/tests/set.sh b/tests/set.sh
index 129da18..939d3cd 100755
--- a/tests/set.sh
+++ b/tests/set.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/set_unexpandedDescriptors.filter b/tests/set_unexpandedDescriptors.filter
new file mode 100644
index 0000000..bb4d055
--- /dev/null
+++ b/tests/set_unexpandedDescriptors.filter
@@ -0,0 +1,700 @@
+set masterTablesVersionNumber=15;
+set localTablesVersionNumber=0;
+set compressedData=1;
+set unexpandedDescriptors={310060};
+write "new_207003.bufr";
+print "diff new_207003.bufr.ref new_207003.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310008};
+write "new_aaen_55.bufr";
+print "diff new_aaen_55.bufr.ref new_aaen_55.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310008};
+write "new_aben_55.bufr";
+print "diff new_aben_55.bufr.ref new_aben_55.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={312061};
+write "new_ahws_139.bufr";
+print "diff new_ahws_139.bufr.ref new_ahws_139.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={311001,222000,101018,31031,1031,1032,101018,33007};
+write "new_airc_142.bufr";
+print "diff new_airc_142.bufr.ref new_airc_142.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={311001,222000,101018,31031,1031,1032,101018,33007};
+write "new_airc_144.bufr";
+print "diff new_airc_144.bufr.ref new_airc_144.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310051,310052,101000,31002,310053,101004,310054,20010};
+write "new_airs_57.bufr";
+print "diff new_airs_57.bufr.ref new_airs_57.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={312061};
+write "new_alws_139.bufr";
+print "diff new_alws_139.bufr.ref new_alws_139.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={311001,12103,13002,222000,101020,31031,1031,1201,101020,33007};
+write "new_amda_144.bufr";
+print "diff new_amda_144.bufr.ref new_amda_144.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310008};
+write "new_amsa_55.bufr";
+print "diff new_amsa_55.bufr.ref new_amsa_55.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310008};
+write "new_amsb_55.bufr";
+print "diff new_amsb_55.bufr.ref new_amsb_55.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310008};
+write "new_amse_55.bufr";
+print "diff new_amse_55.bufr.ref new_amse_55.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310008};
+write "new_amsu_55.bufr";
+print "diff new_amsu_55.bufr.ref new_amsu_55.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310195,222000,236000,101103,31031,1031,1032,101004,33007,222000,237000,1031,1032,101004,33252,222000,237000,1031,1032,101004,
+33253,222000,237000,1031,1032,101004,33007,222000,237000,1031,1032,101004,33252,222000,237000,1031,1032,101004,33253,222000,
+237000,1031,1032,101004,33007,222000,237000,1031,1032,101004,33252,222000,237000,1031,1032,101004,33253};
+write "new_amv2_87.bufr";
+print "diff new_amv2_87.bufr.ref new_amv2_87.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310195,222000,236000,101103,31031,1031,1032,101004,33007,222000,237000,1031,1032,101004,33252,222000,237000,1031,1032,101004,
+33253,222000,237000,1031,1032,101004,33007,222000,237000,1031,1032,101004,33252,222000,237000,1031,1032,101004,33253,222000,
+237000,1031,1032,101004,33007,222000,237000,1031,1032,101004,33252,222000,237000,1031,1032,101004,33253};
+write "new_amv3_87.bufr";
+print "diff new_amv3_87.bufr.ref new_amv3_87.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={312061};
+write "new_asbh_139.bufr";
+print "diff new_asbh_139.bufr.ref new_asbh_139.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={312061};
+write "new_asbl_139.bufr";
+print "diff new_asbl_139.bufr.ref new_asbl_139.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={312061};
+write "new_asca_139.bufr";
+print "diff new_asca_139.bufr.ref new_asca_139.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={312061};
+write "new_asch_139.bufr";
+print "diff new_asch_139.bufr.ref new_asch_139.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={312061};
+write "new_ascs_139.bufr";
+print "diff new_ascs_139.bufr.ref new_ascs_139.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={312061};
+write "new_aseh_139.bufr";
+print "diff new_aseh_139.bufr.ref new_aseh_139.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={312061};
+write "new_asel_139.bufr";
+print "diff new_asel_139.bufr.ref new_asel_139.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={312061};
+write "new_ashs_139.bufr";
+print "diff new_ashs_139.bufr.ref new_ashs_139.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310008};
+write "new_atap_55.bufr";
+print "diff new_atap_55.bufr.ref new_atap_55.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310008};
+write "new_ateu_155.bufr";
+print "diff new_ateu_155.bufr.ref new_ateu_155.bufr"; 
+set masterTablesVersionNumber=15;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310061};
+write "new_atms_201.bufr";
+print "diff new_atms_201.bufr.ref new_atms_201.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310008};
+write "new_atov_55.bufr";
+print "diff new_atov_55.bufr.ref new_atov_55.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310195,222000,236000,101103,31031,1031,1032,101004,33007,222000,237000,1031,1032,101004,33252,222000,237000,1031,1032,101004,
+33253,222000,237000,1031,1032,101004,33007,222000,237000,1031,1032,101004,33252,222000,237000,1031,1032,101004,33253,222000,
+237000,1031,1032,101004,33007,222000,237000,1031,1032,101004,33252,222000,237000,1031,1032,101004,33253};
+write "new_avhm_87.bufr";
+print "diff new_avhm_87.bufr.ref new_avhm_87.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310014,222000,236000,101103,31031,1031,1032,101010,33007,222000,237000,1031,1032,101010,33007,222000,237000,1031,1032,101010,
+33007};
+write "new_avhn_87.bufr";
+print "diff new_avhn_87.bufr.ref new_avhn_87.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={310013,201133,5041,201000};
+write "new_avhr_58.bufr";
+print "diff new_avhr_58.bufr.ref new_avhr_58.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={1001,1002,5002,6002,7001,4001,4002,4003,4004,4005,8021,4025,11002,11001,10051,12001,13014,13003,25033,120036,
+7006,25032,25034,201116,8022,201000,11003,11004,201129,11050,201000,201116,8022,201000,201129,206008,21192,201000,11006,11051,
+120007,7006,25032,25034,201116,8022,201000,11003,11004,201129,11050,201000,201116,8022,201000,201129,206008,21192,201000,11006,
+11051};
+write "new_b002_95.bufr";
+print "diff new_b002_95.bufr.ref new_b002_95.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={301032,321021,25020,25021,8021,4025,101000,31001,321022};
+write "new_b002_96.bufr";
+print "diff new_b002_96.bufr.ref new_b002_96.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={4001,4002,4003,4004,4005,4006,1007,5040,5040,25071,5002,6002,5043,13038,8012,13039,8013,25045,25048,25049,
+2022,7022,7024,13016,15001,20011,8003,10004,22043,12061,7001,8003,7004,12001,8003,5042,12063,5042,12063,5042,
+12063,5042,12063,5042,12063,5042,12063,5042,12063,5042,12063,5042,12063,5042,12063,5042,12063,5042,12063,5042,
+12063,5042,12063,5042,12063,5042,12063,5042,12063,5042,12063,5042,12063,5042,12063,5042,12063,5042,12063,5042,
+12063,5042,12063,5042,12063,5042,12063,5042,12063,5042,12063,5042,12063,5042,12063,5042,12063,5042,12063,5042,
+12063,5042,12063,5042,12063,7004,12001,13002,7004,12001,13002,7004,12001,13002,7004,12001,13002,7004,12001,13002,
+7004,12001,13002,7004,12001,13002,7004,12001,13002,7004,12001,13002,7004,12001,13002,7004,12001,13002,7004,12001,
+13002,7004,12001,13002,7004,12001,13002,7004,12001,13002,7004,12001,13002,7004,12001,13002,7004,12001,13002,7004,
+12001,13002,7004,12001,13002,7004,12001,13002,7004,12001,13002,7004,12001,13002,7004,12001,13002,7004,12001,13002,
+7004,12001,13002,7004,12001,13002,7004,12001,13002,7004,12001,13002,7004,12001,13002,7004,12001,13002,7004,12001,
+13002,7004,12001,13002,7004,12001,13002,7004,12001,13002,7004,12001,13002,7004,12001,13002,7004,12001,13002,7004,
+12001,13002,7004,12001,13002};
+write "new_b003_56.bufr";
+print "diff new_b003_56.bufr.ref new_b003_56.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={1006,1008,2061,2062,2002,2005,2070,2063,2001,4001,4002,4003,4004,4005,5002,6002,8004,7004,8021,11001,
+11002,11031,11034,11035,12001,12003,13003,20041,222000,101028,31031,1031,1201,101028,33007};
+write "new_b004_145.bufr";
+print "diff new_b004_145.bufr.ref new_b004_145.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310195,222000,236000,101103,31031,1031,1032,101004,33007,222000,237000,1031,1032,101004,33252,222000,237000,1031,1032,101004,
+33253,222000,237000,1031,1032,101004,33007,222000,237000,1031,1032,101004,33252,222000,237000,1031,1032,101004,33253};
+write "new_b005_87.bufr";
+print "diff new_b005_87.bufr.ref new_b005_87.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={301032,2003,2101,2106,201132,202130,2121,202000,201000,201133,202129,25001,202000,201000,25020,25021,8021,4025,111000,31001,
+7007,204001,31021,11001,204000,11002,204001,31021,11006,204000,21030};
+write "new_b006_96.bufr";
+print "diff new_b006_96.bufr.ref new_b006_96.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={1033,1025,1027,301011,301012,301023,2041,19001,201130,19002,201000,19005,19006,19008,8005,10004,8005,10004,8005,11002,
+104008,5021,5021,19003,19009};
+write "new_b007_31.bufr";
+print "diff new_b007_31.bufr.ref new_b007_31.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={307080};
+write "new_bssh_170.bufr";
+print "diff new_bssh_170.bufr.ref new_bssh_170.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={307086};
+write "new_bssh_176.bufr";
+print "diff new_bssh_176.bufr.ref new_bssh_176.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={307091};
+write "new_bssh_178.bufr";
+print "diff new_bssh_178.bufr.ref new_bssh_178.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={308009};
+write "new_bssh_180.bufr";
+print "diff new_bssh_180.bufr.ref new_bssh_180.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={309052};
+write "new_btem_109.bufr";
+print "diff new_btem_109.bufr.ref new_btem_109.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={308008};
+write "new_buoy_27.bufr";
+print "diff new_buoy_27.bufr.ref new_buoy_27.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310195,222000,236000,101103,31031,1031,1032,101004,33007,222000,237000,1031,1032,101004,33252,222000,237000,1031,1032,101004,
+33253,222000,237000,1031,1032,101004,33007,222000,237000,1031,1032,101004,33252,222000,237000,1031,1032,101004,33253};
+write "new_cmwi_87.bufr";
+print "diff new_cmwi_87.bufr.ref new_cmwi_87.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310195,222000,236000,101103,31031,1031,1032,101004,33007,222000,237000,1031,1032,101004,33252,222000,237000,1031,1032,101004,
+33253,222000,237000,1031,1032,101004,33007,222000,237000,1031,1032,101004,33252,222000,237000,1031,1032,101004,33253};
+write "new_cmwn_87.bufr";
+print "diff new_cmwn_87.bufr.ref new_cmwn_87.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={1101,1102,1019,2001,4001,4002,4003,4004,4005,5001,6001,7030,7032,12101,7032,2177,20062,13013};
+write "new_cnow_28.bufr";
+print "diff new_cnow_28.bufr.ref new_cnow_28.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={1007,2019,301011,301013,301021,5040,201135,5041,201000,5043,20253,5196,2207,8075,21227,25207,40203,102005,2153,25081,
+102016,5042,12201};
+write "new_cori_156.bufr";
+print "diff new_cori_156.bufr.ref new_cori_156.bufr"; 
+set masterTablesVersionNumber=15;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310060};
+write "new_crit_202.bufr";
+print "diff new_crit_202.bufr.ref new_crit_202.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310195,222000,236000,101103,31031,1031,1032,101004,33007,222000,237000,1031,1032,101004,33252,222000,237000,1031,1032,101004,
+33253,222000,237000,1031,1032,101004,33007,222000,237000,1031,1032,101004,33252,222000,237000,1031,1032,101004,33253,222000,
+237000,1031,1032,101004,33007,222000,237000,1031,1032,101004,33252,222000,237000,1031,1032,101004,33253};
+write "new_emsg_87.bufr";
+print "diff new_emsg_87.bufr.ref new_emsg_87.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310195,222000,236000,101103,31031,1031,1032,101004,33007,222000,237000,1031,1032,101004,33252,222000,237000,1031,1032,101004,
+33253,222000,237000,1031,1032,101004,33007,222000,237000,1031,1032,101004,33252,222000,237000,1031,1032,101004,33253};
+write "new_euwv_87.bufr";
+print "diff new_euwv_87.bufr.ref new_euwv_87.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={1033,1034,1007,2019,5040,201136,5041,201000,5043,301011,301013,301021,7002,13040,7024,5021,7025,5022,104000,31001,
+5042,2153,2154,12063};
+write "new_fy3a_154.bufr";
+print "diff new_fy3a_154.bufr.ref new_fy3a_154.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={1033,1034,1007,2019,5040,201136,5041,201000,5043,301011,301013,301021,7002,13040,7024,5021,7025,5022,104000,31001,
+5042,2153,2154,12063};
+write "new_fy3b_154.bufr";
+print "diff new_fy3b_154.bufr.ref new_fy3b_154.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310195,222000,236000,101103,31031,1031,1032,101010,33007,222000,237000,1031,1032,101010,33007,222000,237000,1031,1032,101010,
+33007};
+write "new_go15_87.bufr";
+print "diff new_go15_87.bufr.ref new_go15_87.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310195,222000,236000,101103,31031,1031,1032,101010,33007,222000,237000,1031,1032,101010,33007,222000,237000,1031,1032,101010,
+33007,222000,237000,1031,1032,101010,33007};
+write "new_goee_87.bufr";
+print "diff new_goee_87.bufr.ref new_goee_87.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310195,222000,236000,101103,31031,1031,1032,101010,33007,222000,237000,1031,1032,101010,33007,222000,237000,1031,1032,101010,
+33007};
+write "new_goes_87.bufr";
+print "diff new_goes_87.bufr.ref new_goes_87.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={1211,2205,2206,4001,4002,4003,4004,4005,4006,5001,6001,7001,8225,22049,20249};
+write "new_grst_26.bufr";
+print "diff new_grst_26.bufr.ref new_grst_26.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={1211,2205,2206,4001,4002,4003,4004,4005,4006,5001,6001,7001,8225,22049,20249};
+write "new_gst4_26.bufr";
+print "diff new_gst4_26.bufr.ref new_gst4_26.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310008};
+write "new_hirb_55.bufr";
+print "diff new_hirb_55.bufr.ref new_hirb_55.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310008};
+write "new_hirs_55.bufr";
+print "diff new_hirs_55.bufr.ref new_hirs_55.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={340001};
+write "new_ias1_240.bufr";
+print "diff new_ias1_240.bufr.ref new_ias1_240.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={1007,1031,2019,2020,4001,4002,4003,4004,4005,202131,201138,4006,201000,202000,5001,6001,7024,5021,7025,5022,
+5043,5040,201133,5041,201000,201132,25070,201000,202126,7001,202000,33060,33061,33062,33063,33064,33065,101010,340002,104000,
+31002,201136,5042,201000,14046,2019,25051,101007,340004};
+write "new_iasi_241.bufr";
+print "diff new_iasi_241.bufr.ref new_iasi_241.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={1007,1031,2019,2020,4001,4002,4003,4004,4005,4006,5040,201133,5041,201000,5001,6001,5043,13038,8012,8013,
+2022,8065,40192,40193,40194,40195,40196,40197,40198,7024,5021,7025,5022,8003,10004,8049,12061,8049,202126,7001,
+202000,8003,107000,31001,202131,201138,7004,201000,202000,12101,13001};
+write "new_itwt_233.bufr";
+print "diff new_itwt_233.bufr.ref new_itwt_233.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={340005};
+write "new_j2eo_216.bufr";
+print "diff new_j2eo_216.bufr.ref new_j2eo_216.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={340005};
+write "new_j2nb_216.bufr";
+print "diff new_j2nb_216.bufr.ref new_j2nb_216.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={1007,25060,1033,2048,2048,5040,201134,7001,201000,202131,7005,202000,301011,301012,4007,5001,6001,8029,8074,8012,
+25095,25096,25097,204001,31021,22070,204000,8023,22070,21128,123002,8076,204001,31021,201129,21062,201000,204000,8023,21062,
+204001,31021,201134,7001,201000,204000,202131,7005,202000,8023,202131,7001,202000,21128,204001,31021,2173,204000,107003,201130,
+2121,201000,204001,31021,12163,204000,104002,2023,202129,11012,202000,13090,13091};
+write "new_jaso_214.bufr";
+print "diff new_jaso_214.bufr.ref new_jaso_214.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={307011,7006,10004,222000,101023,31031,1031,1032,101023,33007};
+write "new_meta_140.bufr";
+print "diff new_meta_140.bufr.ref new_meta_140.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310008};
+write "new_mhen_55.bufr";
+print "diff new_mhen_55.bufr.ref new_mhen_55.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310008};
+write "new_mhsa_55.bufr";
+print "diff new_mhsa_55.bufr.ref new_mhsa_55.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310008};
+write "new_mhsb_55.bufr";
+print "diff new_mhsb_55.bufr.ref new_mhsb_55.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310008};
+write "new_mhse_55.bufr";
+print "diff new_mhse_55.bufr.ref new_mhse_55.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310014,222000,236000,101103,31031,1031,1032,101010,33007,222000,237000,1031,1032,101010,33007,222000,237000,1031,1032,101010,
+33007};
+write "new_modi_87.bufr";
+print "diff new_modi_87.bufr.ref new_modi_87.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310014,222000,236000,101103,31031,1031,1032,101010,33007,222000,237000,1031,1032,101010,33007,222000,237000,1031,1032,101010,
+33007};
+write "new_modw_87.bufr";
+print "diff new_modw_87.bufr.ref new_modw_87.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310014,222000,236000,101103,31031,1031,1032,101010,33007,222000,237000,1031,1032,101010,33007,222000,237000,1031,1032,101010,
+33007};
+write "new_monw_87.bufr";
+print "diff new_monw_87.bufr.ref new_monw_87.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={309007,104000,31001,7004,8001,11061,11062,222000,101000,31002,31031,1031,1032,101000,31002,33007};
+write "new_mytemp.bufr";
+print "diff new_mytemp.bufr.ref new_mytemp.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={309007,104000,31001,7004,8001,11061,11062,222000,101000,31002,31031,1031,1032,101000,31002,33007};
+write "new_new.bufr";
+print "diff new_new.bufr.ref new_new.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={308003,10197,222000,101033,31031,1031,1201,101033,33007};
+write "new_ocea_131.bufr";
+print "diff new_ocea_131.bufr.ref new_ocea_131.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={315001,306002,222000,101037,31031,1031,1201,101037,33007};
+write "new_ocea_132.bufr";
+print "diff new_ocea_132.bufr.ref new_ocea_132.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={315002,222000,101014,31031,1031,1201,101014,33007};
+write "new_ocea_133.bufr";
+print "diff new_ocea_133.bufr.ref new_ocea_133.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={308003,10197,222000,101033,31031,1031,1201,101033,33007};
+write "new_ocea_21.bufr";
+print "diff new_ocea_21.bufr.ref new_ocea_21.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={307022};
+write "new_pgps_110.bufr";
+print "diff new_pgps_110.bufr.ref new_pgps_110.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={301001,2011,2012,301011,301012,301022,105000,31001,7004,8001,10003,11001,11002,222000,101000,31002,31031,1031,1032,101000,
+31002,33007};
+write "new_pilo_91.bufr";
+print "diff new_pilo_91.bufr.ref new_pilo_91.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={4001,4002,4003,4004,4005,5001,6001,7007,20065};
+write "new_s4kn_165.bufr";
+print "diff new_s4kn_165.bufr.ref new_s4kn_165.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={308004,12005,10197,222000,101034,31031,1031,1032,101034,33007};
+write "new_ship_11.bufr";
+print "diff new_ship_11.bufr.ref new_ship_11.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={308004,12005,10197,222000,101034,31031,1031,1032,101034,33007};
+write "new_ship_12.bufr";
+print "diff new_ship_12.bufr.ref new_ship_12.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={308004,12005,10197,222000,101034,31031,1031,1032,101034,33007};
+write "new_ship_13.bufr";
+print "diff new_ship_13.bufr.ref new_ship_13.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={308004,12005,10197,222000,101034,31031,1031,1032,101034,33007};
+write "new_ship_14.bufr";
+print "diff new_ship_14.bufr.ref new_ship_14.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={308004,12005,10197,222000,101034,31031,1031,1032,101034,33007};
+write "new_ship_19.bufr";
+print "diff new_ship_19.bufr.ref new_ship_19.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={308004,12005,10197,222000,101034,31031,1031,1032,101034,33007};
+write "new_ship_9.bufr";
+print "diff new_ship_9.bufr.ref new_ship_9.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310025};
+write "new_smin_49.bufr";
+print "diff new_smin_49.bufr.ref new_smin_49.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310025};
+write "new_smis_49.bufr";
+print "diff new_smis_49.bufr.ref new_smis_49.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={310025};
+write "new_smiu_49.bufr";
+print "diff new_smiu_49.bufr.ref new_smiu_49.bufr"; 
+set masterTablesVersionNumber=14;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={312070};
+write "new_smos_203.bufr";
+print "diff new_smos_203.bufr.ref new_smos_203.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={4001,4002,4003,4004,4005,5001,6001,7007,20065};
+write "new_sn4k_165.bufr";
+print "diff new_sn4k_165.bufr.ref new_sn4k_165.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={301031,102005,7061,12030,222000,101021,31031,1031,1201,101021,33007};
+write "new_soil_7.bufr";
+print "diff new_soil_7.bufr.ref new_soil_7.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={1007,5040,201132,5041,30193,201000,4001,4002,4003,4004,4005,4006,5001,6001,13202,8003,12063,12063,12063,12063,
+12063,12063,12063,5001,6001,13202,8003,12063,12063,5001,6001,13202,8003,12063,12063,5001,6001,13202,8003,12063,
+12063,8193,26193,26194,26195,26196,26197,26198,8193,26193,26194,26195,26196,26197,26198,8193,26193,26194,26195,26196,
+26197,26198};
+write "new_ssbt_127.bufr";
+print "diff new_ssbt_127.bufr.ref new_ssbt_127.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={301031,102005,7061,12030,222000,101021,31031,1031,1201,101021,33007};
+write "new_stuk_7.bufr";
+print "diff new_stuk_7.bufr.ref new_stuk_7.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={307005,13023,13013,222000,101049,31031,1031,1032,101049,33007};
+write "new_syno_1.bufr";
+print "diff new_syno_1.bufr.ref new_syno_1.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={307005,13023,13013,222000,101049,31031,1031,1032,101049,33007};
+write "new_syno_2.bufr";
+print "diff new_syno_2.bufr.ref new_syno_2.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={307005,13021,13013,222000,101049,31031,1031,1032,101049,33007};
+write "new_syno_3.bufr";
+print "diff new_syno_3.bufr.ref new_syno_3.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={307005,13021,13013,222000,101049,31031,1031,1032,101049,33007};
+write "new_syno_4.bufr";
+print "diff new_syno_4.bufr.ref new_syno_4.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={307005,13021,13013,222000,101049,31031,1031,1032,101049,33007};
+write "new_syno_multi.bufr";
+print "diff new_syno_multi.bufr.ref new_syno_multi.bufr"; 
+set masterTablesVersionNumber=14;
+set localTablesVersionNumber=0;
+set compressedData=0;
+set unexpandedDescriptors={307079,4025,11042};
+write "new_synop_multi_subset.bufr";
+print "diff new_synop_multi_subset.bufr.ref new_synop_multi_subset.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={309007,104000,31001,7004,8001,11061,11062,222000,101000,31002,31031,1031,1032,101000,31002,33007};
+write "new_temp_101.bufr";
+print "diff new_temp_101.bufr.ref new_temp_101.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={309196,222000,101000,31002,31031,1031,1032,101000,31002,33007};
+write "new_temp_102.bufr";
+print "diff new_temp_102.bufr.ref new_temp_102.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={309198,104000,31001,7004,8001,11061,11062,222000,101000,31002,31031,1031,1032,101000,31002,33007};
+write "new_temp_106.bufr";
+print "diff new_temp_106.bufr.ref new_temp_106.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=1;
+set unexpandedDescriptors={1007,5040,201133,5041,201000,30193,4001,4002,4003,4004,4005,4006,5002,6002,7001,7024,13202,8003,108009,2197,
+2198,2104,201132,202129,12063,201000,202000};
+write "new_tmr7_129.bufr";
+print "diff new_tmr7_129.bufr.ref new_tmr7_129.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={1033,1025,1027,301011,301012,301023,2041,19001,201130,19002,201000,19005,19006,19008,8005,10004,8005,10004,8005,11002,
+104008,5021,5021,19003,19009};
+write "new_tros_31.bufr";
+print "diff new_tros_31.bufr.ref new_tros_31.bufr"; 
+set masterTablesVersionNumber=13;
+set localTablesVersionNumber=1;
+set compressedData=0;
+set unexpandedDescriptors={308015};
+write "new_wavb_134.bufr";
+print "diff new_wavb_134.bufr.ref new_wavb_134.bufr"; 
diff --git a/tests/so_perf.c b/tests/so_perf.c
index aa7333c..5e309b1 100644
--- a/tests/so_perf.c
+++ b/tests/so_perf.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tests/statistics.sh b/tests/statistics.sh
index 35959b8..5543024 100755
--- a/tests/statistics.sh
+++ b/tests/statistics.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/step.sh b/tests/step.sh
index e162156..19ee02b 100755
--- a/tests/step.sh
+++ b/tests/step.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -73,5 +73,27 @@ hourEnd=$1; dayEnd=$2
 [ "$hourEnd" = "0" ]
 [ "$dayEnd"  = "6" ]
 
-rm -f $grib2File.p8tmp ${grib2File}.tmp | true
-rm -f x.grib
+
+# ECC-134 case-sensitivity
+grib1_sample=$ECCODES_SAMPLES_PATH/GRIB1.tmpl
+grib2_sample=$ECCODES_SAMPLES_PATH/GRIB2.tmpl
+temp=temp.step.$$.grib
+# M is for Month (code 3)
+${tools_dir}grib_set -s indicatorOfUnitOfTimeRange=M $grib1_sample $temp
+unit=`${tools_dir}grib_get -p unitOfTimeRange $temp`
+[ "$unit" = "3" ]
+${tools_dir}grib_set -s indicatorOfUnitOfTimeRange=M $grib2_sample $temp
+unit=`${tools_dir}grib_get -p indicatorOfUnitOfTimeRange $temp`
+[ "$unit" = "3" ]
+
+# m is for Minute (code 0)
+${tools_dir}grib_set -s indicatorOfUnitOfTimeRange=m $grib1_sample $temp
+unit=`${tools_dir}grib_get -p unitOfTimeRange $temp`
+[ "$unit" = "0" ]
+${tools_dir}grib_set -s indicatorOfUnitOfTimeRange=m $grib2_sample $temp
+unit=`${tools_dir}grib_get -p indicatorOfUnitOfTimeRange $temp`
+[ "$unit" = "0" ]
+
+rm -f $temp
+rm -f $grib2File.p8tmp ${grib2File}.tmp x.grib
+
diff --git a/tests/tigge.sh b/tests/tigge.sh
index 5e2bd9e..3a26fd2 100755
--- a/tests/tigge.sh
+++ b/tests/tigge.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/tigge_conversions.sh b/tests/tigge_conversions.sh
index 02e4e02..ae585bc 100755
--- a/tests/tigge_conversions.sh
+++ b/tests/tigge_conversions.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/timing.c b/tests/timing.c
index 99cd7b8..6374239 100644
--- a/tests/timing.c
+++ b/tests/timing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tests/tiny.sh b/tests/tiny.sh
index 301c4a2..ca9d5be 100755
--- a/tests/tiny.sh
+++ b/tests/tiny.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/uerra.sh b/tests/uerra.sh
new file mode 100755
index 0000000..5e82936
--- /dev/null
+++ b/tests/uerra.sh
@@ -0,0 +1,69 @@
+#!/bin/sh
+# Copyright 2005-2016 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.sh
+
+REDIRECT=/dev/null
+
+#set -eax
+grib2_sample=$ECCODES_SAMPLES_PATH/GRIB2.tmpl
+this_test=ecCodes-uerra
+tempSample=tempSample.${this_test}.grib2
+temp1=temp1.${this_test}.grib2
+temp2=temp2.${this_test}.grib2
+
+test_stream_and_type()
+{
+    utype=$1
+
+    if [ "$utype" = "oper" ]; then
+        pspd=8
+    elif [ "$utype" = "test" ]; then
+        pspd=9
+    fi
+
+    ${tools_dir}grib_set -s tablesVersion=15,productionStatusOfProcessedData=$pspd \
+                           $grib2_sample $tempSample
+
+    grib_check_key_equals $tempSample 'stream,mars.stream' 'oper oper'
+    
+    # Check mars model is not set
+    model=`${tools_dir}grib_get -f -p mars.model $tempSample`
+    [ "$model" = "not_found" ]
+
+    ${tools_dir}grib_set -s typeOfProcessedData=0 $tempSample $temp1
+    grib_check_key_equals $temp1 'mars.type' 'an'
+    ${tools_dir}grib_set -s typeOfProcessedData=2 $tempSample $temp1
+    grib_check_key_equals $temp1 'mars.type' 'fc'
+
+    ${tools_dir}grib_set -s marsStream=enda $tempSample $temp1    # ENSEMBLE
+    grib_check_key_exists $temp1 'perturbationNumber'
+
+    # All combinations
+    for mt in an fc; do
+        for ms in oper enda; do
+            echo "Testing stream=$ms type=$mt ..."
+            ${tools_dir}grib_set -s marsStream=$ms,marsType=$mt $tempSample $temp1
+            grib_check_key_equals $temp1 'mars.stream,mars.type' "$ms $mt"
+
+            # Param 228228 (accum) and 167 (instant)
+            ${tools_dir}grib_set -s stepType=accum,paramId=228228 $temp1 $temp2
+            grib_check_key_equals $temp2 'stream,type' "$ms $mt"
+
+            ${tools_dir}grib_set -s paramId=167                   $temp1 $temp2
+            grib_check_key_equals $temp2 'stream,type' "$ms $mt"
+        done
+    done
+}
+
+test_stream_and_type 'oper'
+test_stream_and_type 'test'
+
+rm -f $temp1 $temp2 $tempSample
diff --git a/tests/unit_tests.c b/tests/unit_tests.c
index 72941a0..eb44e9e 100644
--- a/tests/unit_tests.c
+++ b/tests/unit_tests.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -61,7 +61,7 @@ void test_gaussian_latitudes(int order)
     double* lats = (double*)malloc( sizeof(double)*num );
 
     ret = grib_get_gaussian_latitudes(order, lats);
-    assert(ret == GRIB_SUCCESS);
+    Assert(ret == GRIB_SUCCESS);
 
     lat1 = lats[0];
     lat2 = lats[num-1];
@@ -80,7 +80,7 @@ void test_gaussian_latitude_640()
 	const double tolerance = 1e-6;
 	double* lats = (double*)malloc( sizeof(double)*num );
 	ret = grib_get_gaussian_latitudes(order, lats);
-	assert(ret == GRIB_SUCCESS);
+	Assert(ret == GRIB_SUCCESS);
 
 	compare_doubles(lats[0], 89.892396, tolerance);
 	compare_doubles(lats[1], 89.753005, tolerance);
diff --git a/tests/unit_tests.sh b/tests/unit_tests.sh
index 42f7799..4cc2668 100755
--- a/tests/unit_tests.sh
+++ b/tests/unit_tests.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tests/utils.sh b/tests/utils.sh
new file mode 100644
index 0000000..269c89e
--- /dev/null
+++ b/tests/utils.sh
@@ -0,0 +1,33 @@
+# Copyright 2005-2016 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.
+#
+set -ea
+
+#
+# Utility functions for testing
+#
+
+# Check the key(s) in the given grib file have the expected value(s)
+# Assumes the file has only ONE message otherwise output goes on to
+# several lines
+grib_check_key_equals()
+{
+   file=$1
+   key=$2
+   val=$3
+   result=`${tools_dir}grib_get -p $key $file`
+   [ "$result" = "$val" ]
+}
+
+grib_check_key_exists()
+{
+   file=$1
+   key=$2
+   # grib_get will fail if the key is not found
+   $tools_dir/grib_get -p $key $file >/dev/null
+}
diff --git a/tests/values_to_ascii.c b/tests/values_to_ascii.c
index 2a9fa19..510cca5 100755
--- a/tests/values_to_ascii.c
+++ b/tests/values_to_ascii.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tigge/.deps/tigge_accumulations.Po b/tigge/.deps/tigge_accumulations.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tigge/.deps/tigge_accumulations.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tigge/.deps/tigge_check.Po b/tigge/.deps/tigge_check.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tigge/.deps/tigge_check.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tigge/.deps/tigge_name.Po b/tigge/.deps/tigge_name.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tigge/.deps/tigge_name.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tigge/.deps/tigge_split.Po b/tigge/.deps/tigge_split.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tigge/.deps/tigge_split.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tigge/Makefile b/tigge/Makefile
deleted file mode 100644
index 38847c3..0000000
--- a/tigge/Makefile
+++ /dev/null
@@ -1,726 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# tigge/Makefile.  Generated from Makefile.in by configure.
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/eccodes
-pkgincludedir = $(includedir)/eccodes
-pkglibdir = $(libdir)/eccodes
-pkglibexecdir = $(libexecdir)/eccodes
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = x86_64-suse-linux-gnu
-host_triplet = x86_64-suse-linux-gnu
-bin_PROGRAMS = tigge_check$(EXEEXT) tigge_name$(EXEEXT) \
-	tigge_accumulations$(EXEEXT) tigge_split$(EXEEXT)
-subdir = tigge
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/config/depcomp
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(bindir)"
-PROGRAMS = $(bin_PROGRAMS)
-am_tigge_accumulations_OBJECTS = tigge_accumulations.$(OBJEXT)
-tigge_accumulations_OBJECTS = $(am_tigge_accumulations_OBJECTS)
-tigge_accumulations_LDADD = $(LDADD)
-tigge_accumulations_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-am_tigge_check_OBJECTS = tigge_check.$(OBJEXT)
-tigge_check_OBJECTS = $(am_tigge_check_OBJECTS)
-tigge_check_LDADD = $(LDADD)
-tigge_check_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_tigge_name_OBJECTS = tigge_name.$(OBJEXT)
-tigge_name_OBJECTS = $(am_tigge_name_OBJECTS)
-tigge_name_LDADD = $(LDADD)
-tigge_name_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_tigge_split_OBJECTS = tigge_split.$(OBJEXT)
-tigge_split_OBJECTS = $(am_tigge_split_OBJECTS)
-tigge_split_LDADD = $(LDADD)
-tigge_split_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-AM_V_P = $(am__v_P_$(V))
-am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = $(tigge_accumulations_SOURCES) $(tigge_check_SOURCES) \
-	$(tigge_name_SOURCES) $(tigge_split_SOURCES)
-DIST_SOURCES = $(tigge_accumulations_SOURCES) $(tigge_check_SOURCES) \
-	$(tigge_name_SOURCES) $(tigge_split_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing aclocal-1.13
-AEC_DIR = 
-AMTAR = $${TAR-tar}
-AM_DEFAULT_VERBOSITY = 1
-AR = ar
-AUTOCONF = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoconf
-AUTOHEADER = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoheader
-AUTOMAKE = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing automake-1.13
-AWK = gawk
-CC = gcc
-CCDEPMODE = depmode=gcc3
-CCSDS_TEST = 
-CFLAGS = -g -O2
-CPP = gcc -E
-CPPFLAGS = 
-CYGPATH_W = echo
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DEVEL_RULES = dummy.am
-DLLTOOL = false
-DSYMUTIL = 
-DUMPBIN = 
-ECCODES_AGE = 0
-ECCODES_CURRENT = 1
-ECCODES_DEFINITION_PATH = ${datarootdir}/eccodes/definitions
-ECCODES_MAIN_VERSION = 0.10.0
-ECCODES_MAJOR_VERSION = 0
-ECCODES_MINOR_VERSION = 10
-ECCODES_PATCH_VERSION = 0
-ECCODES_REVISION = 0
-ECCODES_SAMPLES_PATH = ${datarootdir}/eccodes/samples
-ECCODES_VERSION_STR = 0.10.0
-ECHO_C = 
-ECHO_N = -n
-ECHO_T = 
-EGREP = /usr/bin/grep -E
-EMOS_LIB = 
-EXEEXT = 
-F77 = gfortran
-F90_CHECK = examples/F90
-F90_MODULE_FLAG = -I
-FC = gfortran
-FCFLAGS = -g -O2
-FFLAGS = -g -O2
-FGREP = /usr/bin/grep -F
-FORTRAN_MOD = fortran
-GREP = /usr/bin/grep
-GRIB_API_INC = /tmp/masn/git/grib_api/eccodes/src
-GRIB_API_LIB = /tmp/masn/git/grib_api/eccodes/src/grib_api.a
-GRIB_DEVEL = 0
-IFS_SAMPLES_DIR = ${datarootdir}/eccodes/ifs_samples
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-JASPER_DIR = system
-JPEG_TEST = jpeg.sh
-LD = /usr/x86_64-suse-linux/bin/ld -m elf_x86_64
-LDFLAGS = 
-LEX = flex
-LEXLIB = -lfl
-LEX_OUTPUT_ROOT = lex.yy
-LIBOBJS = 
-LIBS = -lm -ljasper 
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LIBTOOL_DEPS = config/ltmain.sh
-LIB_AEC = 
-LIB_JASPER = -ljasper
-LIB_OPENJPEG = 
-LIB_PNG = 
-LINUX_DISTRIBUTION_NAME = openSUSE 13.1 (x86_64)
-LINUX_DISTRIBUTION_VERSION = 
-LIPO = 
-LN_S = ln -s
-LTLIBOBJS = 
-MAKEINFO = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing makeinfo
-MANIFEST_TOOL = :
-MKDIR_P = /usr/bin/mkdir -p
-NETCDF_LDFLAGS = 
-NM = /usr/bin/nm -B
-NMEDIT = 
-NUMPY_INCLUDE = /usr/local/apps/python/2.7.8-01/lib/python2.7/site-packages/numpy/core/include
-OBJDUMP = objdump
-OBJEXT = o
-OPENJPEG_DIR = system
-OTOOL = 
-OTOOL64 = 
-PACKAGE = eccodes
-PACKAGE_BUGREPORT = Software.Support at ecmwf.int
-PACKAGE_NAME = eccodes
-PACKAGE_STRING = eccodes  
-PACKAGE_TARNAME = eccodes
-PACKAGE_URL = 
-PACKAGE_VERSION = 0.10.0
-PATH_SEPARATOR = :
-PERL = 
-PERLDIR = perl
-PERL_INSTALL_OPTIONS = LIB=NONE/perl
-PERL_MAKE_OPTIONS = 
-PYTHON = /usr/local/apps/python/2.7.8-01/bin/python
-PYTHON_CFLAGS = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7 -fno-strict-aliasing -O3 -fpic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
-PYTHON_CHECK = examples/python
-PYTHON_CONFIG = /usr/local/apps/python/2.7.8-01/bin/python2.7-config
-PYTHON_DATA_HANDLER = numpy
-PYTHON_EXEC_PREFIX = ${exec_prefix}
-PYTHON_INCLUDES = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7
-PYTHON_LDFLAGS = -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic
-PYTHON_LIBS = -lpthread -ldl -lutil -lm -lpython2.7
-PYTHON_PLATFORM = linux2
-PYTHON_PREFIX = ${prefix}
-PYTHON_VERSION = 2.7
-RANLIB = ranlib
-RM = rm -f
-RPM_CONFIGURE_ARGS =  '--enable-python' '--disable-shared' 'CC=gcc' 'F77=gfortran' 'FC=gfortran'
-RPM_HOST_CPU = x86_64
-RPM_HOST_OS = linux-gnu
-RPM_HOST_VENDOR = suse
-RPM_RELEASE = 1
-SED = /usr/bin/sed
-SET_MAKE = 
-SHELL = /bin/sh
-STRIP = strip
-VERSION = 0.10.0
-WARN_PEDANTIC = -pedantic -Wall
-WERROR = 
-YACC = bison -y
-YFLAGS = 
-abs_builddir = /tmp/masn/git/grib_api/eccodes/tigge
-abs_srcdir = /tmp/masn/git/grib_api/eccodes/tigge
-abs_top_builddir = /tmp/masn/git/grib_api/eccodes
-abs_top_srcdir = /tmp/masn/git/grib_api/eccodes
-ac_ct_AR = ar
-ac_ct_CC = gcc
-ac_ct_DUMPBIN = 
-ac_ct_F77 = 
-ac_ct_FC = 
-am__include = include
-am__leading_dot = .
-am__quote = 
-am__tar = $${TAR-tar} chof - "$$tardir"
-am__untar = $${TAR-tar} xf -
-bindir = ${exec_prefix}/bin
-build = x86_64-suse-linux-gnu
-build_alias = 
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = suse
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-host = x86_64-suse-linux-gnu
-host_alias = 
-host_cpu = x86_64
-host_os = linux-gnu
-host_vendor = suse
-htmldir = ${docdir}
-includedir = ${prefix}/include
-infodir = ${datarootdir}/info
-install_sh = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localedir = ${datarootdir}/locale
-localstatedir = ${prefix}/var
-mandir = ${datarootdir}/man
-mkdir_p = $(MKDIR_P)
-oldincludedir = /usr/include
-pdfdir = ${docdir}
-pkgpyexecdir = ${pyexecdir}/eccodes
-pkgpythondir = ${pythondir}/eccodes
-prefix = /usr/local
-program_transform_name = s,x,x,
-psdir = ${docdir}
-pyexecdir = ${exec_prefix}/lib/python2.7/site-packages
-pythondir = ${prefix}/lib/python2.7/site-packages
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-srcdir = .
-sysconfdir = ${prefix}/etc
-target_alias = 
-top_build_prefix = ../
-top_builddir = ..
-top_srcdir = ..
-AM_CFLAGS = -pedantic -Wall 
-tigge_check_SOURCES = tigge_check.c \
-                            tigge_check.h
-
-tigge_name_SOURCES = tigge_name.c
-tigge_split_SOURCES = tigge_split.c
-tigge_accumulations_SOURCES = tigge_accumulations.c
-INCLUDES = -I$(top_builddir)/src
-LDADD = $(top_builddir)/src/libeccodes.la
-DEPENDENCIES = $(LDADD)
-EXTRA_DIST = CMakeLists.txt
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tigge/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu tigge/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-binPROGRAMS: $(bin_PROGRAMS)
-	@$(NORMAL_INSTALL)
-	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
-	fi; \
-	for p in $$list; do echo "$$p $$p"; done | \
-	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p \
-	 || test -f $$p1 \
-	  ; then echo "$$p"; echo "$$p"; else :; fi; \
-	done | \
-	sed -e 'p;s,.*/,,;n;h' \
-	    -e 's|.*|.|' \
-	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
-	sed 'N;N;N;s,\n, ,g' | \
-	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
-	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
-	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
-	    else { print "f", $$3 "/" $$4, $$1; } } \
-	  END { for (d in files) print "f", d, files[d] }' | \
-	while read type dir files; do \
-	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
-	    test -z "$$files" || { \
-	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
-	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
-	    } \
-	; done
-
-uninstall-binPROGRAMS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
-	files=`for p in $$list; do echo "$$p"; done | \
-	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' \
-	`; \
-	test -n "$$list" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(bindir)" && rm -f $$files
-
-clean-binPROGRAMS:
-	@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
-
-tigge_accumulations$(EXEEXT): $(tigge_accumulations_OBJECTS) $(tigge_accumulations_DEPENDENCIES) $(EXTRA_tigge_accumulations_DEPENDENCIES) 
-	@rm -f tigge_accumulations$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(tigge_accumulations_OBJECTS) $(tigge_accumulations_LDADD) $(LIBS)
-
-tigge_check$(EXEEXT): $(tigge_check_OBJECTS) $(tigge_check_DEPENDENCIES) $(EXTRA_tigge_check_DEPENDENCIES) 
-	@rm -f tigge_check$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(tigge_check_OBJECTS) $(tigge_check_LDADD) $(LIBS)
-
-tigge_name$(EXEEXT): $(tigge_name_OBJECTS) $(tigge_name_DEPENDENCIES) $(EXTRA_tigge_name_DEPENDENCIES) 
-	@rm -f tigge_name$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(tigge_name_OBJECTS) $(tigge_name_LDADD) $(LIBS)
-
-tigge_split$(EXEEXT): $(tigge_split_OBJECTS) $(tigge_split_DEPENDENCIES) $(EXTRA_tigge_split_DEPENDENCIES) 
-	@rm -f tigge_split$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(tigge_split_OBJECTS) $(tigge_split_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-include ./$(DEPDIR)/tigge_accumulations.Po
-include ./$(DEPDIR)/tigge_check.Po
-include ./$(DEPDIR)/tigge_name.Po
-include ./$(DEPDIR)/tigge_split.Po
-
-.c.o:
-	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-#	$(AM_V_CC)source='$<' object='$@' libtool=no \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(COMPILE) -c $<
-
-.c.obj:
-	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-#	$(AM_V_CC)source='$<' object='$@' libtool=no \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-#	$(AM_V_CC)source='$<' object='$@' libtool=yes \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
-	for dir in "$(DESTDIR)$(bindir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-binPROGRAMS
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-binPROGRAMS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
-	clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
-	ctags ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-binPROGRAMS \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/tigge/jma.pl b/tigge/jma.pl
index 3273e4e..fa202c4 100755
--- a/tigge/jma.pl
+++ b/tigge/jma.pl
@@ -1,5 +1,5 @@
 #!/usr/bin/perl -I../perl/GRIB-API/blib/lib -I../perl/GRIB-API/blib/arch
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
diff --git a/tigge/tigge_accumulations.c b/tigge/tigge_accumulations.c
index db320a7..09676d4 100755
--- a/tigge/tigge_accumulations.c
+++ b/tigge/tigge_accumulations.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -131,14 +131,14 @@ void usage(const char *prog)
 
 void init_checks(grib_handle* h)
 {
-	int i;
+	size_t i;
 	for(i = 0; i < NUMBER(checks); i++)
 		GRIB_CHECK(grib_get_long(h,checks[i],&check_values[i]),checks[i]);
 }
 
 void do_checks(grib_handle* h)
 {
-	int i;
+	size_t i;
 	long val;
 	for(i = 0; i < NUMBER(checks); i++)
 	{
@@ -167,16 +167,15 @@ void output_field(grib_handle* h,FILE* f,long bits,double* values,size_t size,co
 	}
 }
 
-
 int main(int argc, const char *argv[])
 {
-	int i,j;
+	int i;
 	FILE *in,*out;
 	int e;
 	grib_handle *result = NULL,*h;
 	double* values = NULL;
 	double *tmp = NULL;
-	size_t size,count;
+	size_t size,count,j;
 
 	long step      = 0;
 	long startStep = 0;
diff --git a/tigge/tigge_check.c b/tigge/tigge_check.c
index 5ece491..e9efae4 100755
--- a/tigge/tigge_check.c
+++ b/tigge/tigge_check.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -58,6 +58,7 @@ static void statistical_process(grib_handle*,const parameter*,double,double);
 static void six_hourly(grib_handle*,const parameter*,double,double);
 static void three_hourly(grib_handle* h,const parameter* p,double min,double max);
 static void from_start(grib_handle*,const parameter*,double,double);
+static void daily_average(grib_handle*,const parameter*,double,double);
 static void given_level(grib_handle*,const parameter*,double,double);
 static void predefined_level(grib_handle*,const parameter*,double,double);
 static void predefined_thickness(grib_handle*,const parameter*,double,double);
@@ -86,6 +87,8 @@ const char* param = "unknown";
 int warnflg = 0;
 int zeroflg = 0;
 int is_lam =0;
+int is_s2s =0;
+int is_s2s_refcst =0;
 
 const char* good = NULL;
 const char* bad = NULL;
@@ -188,7 +191,7 @@ static int DBL_EQUAL(double d1, double d2, double tolerance)
 void gaussian_grid(grib_handle* h)
 {
     const double tolerance = 1.0/1000000.0; /* angular tolerance for grib2: micro degrees */
-    long n = get(h,"numberOfParallelsBetweenAPoleAndTheEquator");
+    long n = get(h,"numberOfParallelsBetweenAPoleAndTheEquator"); /* This is the key N */
     static double* values = NULL;
     static long last_n = 0;
     double north = dget(h,"latitudeOfFirstGridPointInDegrees");
@@ -226,23 +229,26 @@ void gaussian_grid(grib_handle* h)
     values[0] = rint(values[0]*1e6)/1e6;
 
     if ( !DBL_EQUAL(north, values[0], tolerance) || !DBL_EQUAL(south, -values[0], tolerance) )
-        printf("N=%ld n=%f s=%f v=%f n-v=%0.30f s-v=%0.30f\n",n,north,south,values[0],north-values[0],south+values[0]);
+        printf("N=%ld north=%f south=%f v(=gauss_lat[0])=%f north-v=%0.30f south-v=%0.30f\n",
+                n,north,south,values[0],north-values[0],south+values[0]);
 
     CHECK(DBL_EQUAL(north, values[0], tolerance));
     CHECK(DBL_EQUAL(south, -values[0], tolerance));
 
-    if(missing(h,"numberOfPointsAlongAParallel"))
+    if(missing(h,"numberOfPointsAlongAParallel"))   /* same as key Ni */
     {
-        double ee = 360.0 - 360.0/(4.0*n);
+        /* If missing, this is a REDUCED gaussian grid */
+        const long MAXIMUM_RESOLUTION = 320;
+        CHECK(get(h,"PLPresent"));
         CHECK(DBL_EQUAL(west, 0.0, tolerance));
-
-        if (!DBL_EQUAL(ee, east, tolerance))
-            printf("east %g %g %g\n",east,ee,ee-east);
-
-        CHECK(DBL_EQUAL(ee, east, tolerance));
+        if (n > MAXIMUM_RESOLUTION) {
+            printf("Gaussian number N (=%ld) cannot exceed %ld\n", n, MAXIMUM_RESOLUTION);
+            CHECK(n <= MAXIMUM_RESOLUTION);
+        }
     }
     else
     {
+        /* REGULAR gaussian grid */
         long west = get(h,"longitudeOfFirstGridPoint");
         long east = get(h,"longitudeOfLastGridPoint");
         long parallel = get(h,"numberOfPointsAlongAParallel");
@@ -260,14 +266,13 @@ void gaussian_grid(grib_handle* h)
     CHECK(ne(h,"Nj",0));
 
     if(get(h,"PLPresent")) {
-        size_t count;
+        size_t count, i, nPl;
         int e = grib_get_size(h,"pl",&count);
         double *pl;
-        int i;
-        long total;
+        double expected_lon2 = 0;
+        long total, max_pl = 0;
         long numberOfValues = get(h,"numberOfValues");
         long numberOfDataPoints = get(h,"numberOfDataPoints");
-        int nPl;
 
         if(e) {
             printf("%s, field %d [%s]: cannot number of pl: %s\n",file,field,param,grib_get_error_message(e));
@@ -285,20 +290,28 @@ void gaussian_grid(grib_handle* h)
             free(pl);
             error++;
             return;
-
         }
         if(nPl != count)
             printf("nPl=%ld count=%ld\n",(long)nPl,(long)count);
 
         CHECK(nPl == count);
-        CHECK(nPl == 2*n);
+        CHECK(nPl == (size_t)2*n);
 
         total = 0;
-        for(i = 0 ; i < count; i++)
+        max_pl = pl[0]; /* max elem of pl array = num points at equator */
+        for(i = 0 ; i < count; i++) {
             total += pl[i];
+            if (pl[i] > max_pl) max_pl = pl[i];
+        }
 
         free(pl);
 
+        /* Do not assume maximum of pl array is 4N! not true for octahedral */
+        expected_lon2 = 360.0 - 360.0/max_pl;
+        if (!DBL_EQUAL(expected_lon2, east, tolerance))
+            printf("east actual=%g expected=%g diff=%g\n",east, expected_lon2, expected_lon2-east);
+        CHECK(DBL_EQUAL(expected_lon2, east, tolerance));
+
         if(numberOfDataPoints != total)
             printf("GAUSS numberOfValues=%ld numberOfDataPoints=%ld sum(pl)=%ld\n",
                     numberOfValues,
@@ -355,15 +368,25 @@ static void point_in_time(grib_handle* h,const parameter* p,double min,double ma
         break;
 
     case 3: /* Control forecast products */
-        CHECK(eq(h,"productDefinitionTemplateNumber",1));
         CHECK(eq(h,"perturbationNumber",0));
         CHECK(ne(h,"numberOfForecastsInEnsemble",0));
+        if (is_s2s_refcst)
+            CHECK(eq(h,"productDefinitionTemplateNumber",60));
+        else if (is_s2s)
+            CHECK(eq(h,"productDefinitionTemplateNumber",60)||eq(h,"productDefinitionTemplateNumber",11)||eq(h,"productDefinitionTemplateNumber",1));
+        else
+            CHECK(eq(h,"productDefinitionTemplateNumber",1));
         break;
 
     case 4: /* Perturbed forecast products */
         CHECK(ne(h,"perturbationNumber",0));
         CHECK(ne(h,"numberOfForecastsInEnsemble",0));
-        CHECK(eq(h,"productDefinitionTemplateNumber",1));
+        if (is_s2s_refcst)
+            CHECK(eq(h,"productDefinitionTemplateNumber",60));
+        else if (is_s2s)
+            CHECK(eq(h,"productDefinitionTemplateNumber",60)||eq(h,"productDefinitionTemplateNumber",11)||eq(h,"productDefinitionTemplateNumber",1));
+        else
+            CHECK(eq(h,"productDefinitionTemplateNumber",1));
         if (is_lam) {
             CHECK(le(h,"perturbationNumber",get(h,"numberOfForecastsInEnsemble")));
         } else {
@@ -378,15 +401,31 @@ static void point_in_time(grib_handle* h,const parameter* p,double min,double ma
         break;
     }
 
-    if(get(h,"indicatorOfUnitOfTimeRange") == 11 || is_lam ) /*  six hours */
+    if (!is_lam)
     {
-        /* Six hourly is OK */
-        ;
+        if(get(h,"indicatorOfUnitOfTimeRange") == 11) /*  six hours */
+        {
+            /* Six hourly is OK */
+            ;
+        }
+        else
+        {
+            CHECK(eq(h,"indicatorOfUnitOfTimeRange",1));/* Hours */
+            CHECK((get(h,"forecastTime") % 6) == 0);  /* Every six hours */
+        }
     }
     else
     {
-        CHECK(eq(h,"indicatorOfUnitOfTimeRange",1));/* Hours */
-        CHECK((get(h,"forecastTime") % 6) == 0);  /* Every six hours */
+        if(get(h,"indicatorOfUnitOfTimeRange") == 10 ) /*  three hours */
+        {
+            /* Three hourly is OK */
+            ;
+        }
+        else
+        {
+            CHECK(eq(h,"indicatorOfUnitOfTimeRange",1));/* Hours */
+            CHECK((get(h,"forecastTime") % 3) == 0);  /* Every three hours */
+        }
     }
 
     check_range(h,p,min,max);
@@ -396,22 +435,45 @@ static void pressure_level(grib_handle* h,const parameter* p,double min,double m
 {
     long level = get(h,"level");
 
-    switch(level)
+    if (!is_s2s){
+        switch(level)
+        {
+        case 1000:
+        case  200:
+        case  250:
+        case  300:
+        case  500:
+        case  700:
+        case  850:
+        case  925:
+        case  50:
+            break;
+        default:
+            printf("%s, field %d [%s]: invalid pressure level %ld\n",file,field,param,level);
+            error++;
+            break;
+        }
+    }
+    else
     {
-    case 1000:
-    case  200:
-    case  250:
-    case  300:
-    case  500:
-    case  700:
-    case  850:
-    case  925:
-    case  50:
-        break;
-    default:
-        printf("%s, field %d [%s]: invalid pressure level %ld\n",file,field,param,level);
-        error++;
-        break;
+        switch(level)
+        {
+        case 1000:
+        case  925:
+        case  850:
+        case  700:
+        case  500:
+        case  300:
+        case  200:
+        case  100:
+        case  50:
+        case  10:
+            break;
+        default:
+            printf("%s, field %d [%s]: invalid pressure level %ld\n",file,field,param,level);
+            error++;
+            break;
+        }
     }
 }
 
@@ -454,11 +516,17 @@ static void statistical_process(grib_handle* h,const parameter* p,double min,dou
         break;
 
     case 3: /* Control forecast products */
-        CHECK(eq(h,"productDefinitionTemplateNumber",11));
+        if (!is_s2s_refcst)
+            CHECK(eq(h,"productDefinitionTemplateNumber",11));
+        else
+            CHECK(eq(h,"productDefinitionTemplateNumber",61));
         break;
 
     case 4: /* Perturbed forecast products */
-        CHECK(eq(h,"productDefinitionTemplateNumber",11));
+        if (!is_s2s_refcst)
+            CHECK(eq(h,"productDefinitionTemplateNumber",11));
+        else
+            CHECK(eq(h,"productDefinitionTemplateNumber",61));
         break;
 
     default:
@@ -500,7 +568,13 @@ static void statistical_process(grib_handle* h,const parameter* p,double min,dou
     CHECK(eq(h,"typeOfTimeIncrement",2));
     /*CHECK(eq(h,"indicatorOfUnitOfTimeForTheIncrementBetweenTheSuccessiveFieldsUsed",255));*/
 
-    CHECK(eq(h,"timeIncrementBetweenSuccessiveFields",0));
+    if (is_s2s)
+        if(get(h,"typeOfStatisticalProcessing") == 0)
+            CHECK(eq(h,"timeIncrementBetweenSuccessiveFields",1)||eq(h,"timeIncrementBetweenSuccessiveFields",4));
+        else
+            CHECK(eq(h,"timeIncrementBetweenSuccessiveFields",0));
+    else
+        CHECK(eq(h,"timeIncrementBetweenSuccessiveFields",0));
 
     {
         CHECK(eq(h,"minuteOfEndOfOverallTimeInterval",0));
@@ -514,7 +588,6 @@ static void statistical_process(grib_handle* h,const parameter* p,double min,dou
         {
             CHECK((get(h,"endStep") % 3) == 0);  /* Every three hours */
         }
-        CHECK(get(h,"endStep") <= 24*30);
     }
 
     if(get(h,"indicatorOfUnitForTimeRange") == 11)
@@ -580,6 +653,20 @@ static void from_start(grib_handle* h,const parameter* p,double min,double max)
     }
 }
 
+static void daily_average(grib_handle* h,const parameter* p,double min,double max)
+{
+    long step = get(h,"endStep");
+    CHECK(get(h,"startStep") == get(h,"endStep") - 24);
+    statistical_process(h,p,min,max);
+
+    if(step == 0)
+        CHECK(min == 0 && max == 0);
+    else
+    {
+        check_range(h,p,min,max);
+    }
+}
+
 static void given_level(grib_handle* h,const parameter* p,double min,double max)
 {
     CHECK(ne(h,"typeOfFirstFixedSurface",255));
@@ -739,9 +826,10 @@ void latlon_grid(grib_handle* h)
 
 void check_parameter(grib_handle* h,double min,double max)
 {
-    int i, err;
+    int err;
     int best = -1;
     int match = -1;
+    size_t i = 0;
 
     for(i = 0; i < NUMBER(parameters); i++)
     {
@@ -777,7 +865,15 @@ void check_parameter(grib_handle* h,double min,double max)
                 assert(!"Unknown key type");
             }
             j++;
-            /* printf("%s %ld val -> %d %d %ld %d\n",parameters[i].pairs[j].key,parameters[i].pairs[j].value,val,matches,j,best); */
+#if 0
+            printf("%s %s %ld val -> %d %d %d\n",
+                    parameters[i].pairs[j].key,
+                    parameters[i].pairs[j].value_string,
+                    val,
+                    matches,
+                    j,
+                    best);
+#endif
         }
 
         if(matches == j && matches > best)
@@ -824,7 +920,6 @@ void check_parameter(grib_handle* h,double min,double max)
     }
 }
 
-
 void verify(grib_handle* h)
 {
     double min = 0,max = 0;
@@ -834,11 +929,10 @@ void verify(grib_handle* h)
 
     if (valueflg)
     {
-
         size_t count, n;
         int e = grib_get_size(h,"values",&count);
         double *values;
-        int i;
+        size_t i;
         int bitmap = !eq(h,"bitMapIndicator",255);
 
         if(e) {
@@ -907,14 +1001,17 @@ void verify(grib_handle* h)
 
     CHECK(eq(h,"significanceOfReferenceTime",1)); /* Start of forecast */
 
-    /* Check if the date is OK */
-    {
-        long date = get(h,"date");
-        /* CHECK(date > 20060101); */
+    if (!is_s2s){
+        /* todo check for how many years back the reforecast is done? Is it coded in the grib??? */
+        /* Check if the date is OK */
+        {
+            long date = get(h,"date");
+            /* CHECK(date > 20060101); */
 
-        CHECK( (date / 10000)         == get(h,"year"));
-        CHECK( ((date % 10000) / 100) == get(h,"month"));
-        CHECK( ((date % 100))         == get(h,"day"));
+            CHECK( (date / 10000)         == get(h,"year"));
+            CHECK( ((date % 10000) / 100) == get(h,"month"));
+            CHECK( ((date % 100))         == get(h,"day"));
+        }
     }
 
     /* Only 00, 06 12 and 18 Cycle OK */
@@ -927,8 +1024,17 @@ void verify(grib_handle* h)
     }
     CHECK(eq(h,"minute",0));
     CHECK(eq(h,"second",0));
+    CHECK(ge(h,"startStep",0));
 
-    CHECK(eq(h,"productionStatusOfProcessedData",4)||eq(h,"productionStatusOfProcessedData",5)); /*  TIGGE Operational */
+    if (!is_s2s){
+        CHECK(eq(h,"productionStatusOfProcessedData",4)||eq(h,"productionStatusOfProcessedData",5)); /*  TIGGE prod||test */
+        CHECK(le(h,"endStep",30*24));
+    }
+    else
+    {
+        CHECK(eq(h,"productionStatusOfProcessedData",6)||eq(h,"productionStatusOfProcessedData",7)); /*  S2S prod||test */
+        CHECK(le(h,"endStep",100*24));
+    }
 
     if (!is_lam){
         CHECK((get(h,"step") % 6) == 0);
@@ -937,8 +1043,6 @@ void verify(grib_handle* h)
     {
         CHECK((get(h,"step") % 3) == 0);
     }
-    CHECK(ge(h,"startStep",0));
-    CHECK(le(h,"endStep",30*24));
 
     /* 2 = analysis or forecast , 3 = control forecast, 4 = perturbed forecast */
     CHECK(eq(h,"typeOfProcessedData",2)||eq(h,"typeOfProcessedData",3)||eq(h,"typeOfProcessedData",4));
@@ -957,11 +1061,10 @@ void verify(grib_handle* h)
         latlon_grid(h);
         break;
 
-    case 40:
+    case 40: /* gaussian grid (regular or reduced) */
         gaussian_grid(h);
         break;
 
-
     default:
         printf("%s, field %d [%s]: Unsupported gridDefinitionTemplateNumber %ld\n",
                 file,field,param,
@@ -981,6 +1084,13 @@ void verify(grib_handle* h)
 
     /* Check values */
     CHECK(eq(h,"typeOfOriginalFieldValues",0)); /* Floating point */
+
+    /* do not store empty values e.g. fluxes at step 0
+        todo ?? now it's allowed in the code here!
+        if(!missing(h,"typeOfStatisticalProcessing"))
+          CHECK(ne(h,"stepRange",0));*/
+
+
 }
 
 void validate(const char* path)
@@ -1054,13 +1164,15 @@ void scan(const char* name)
 
 void usage()
 {
-    printf("tigge_check [-w] [-v] [-z] [-g good] [-b bad] files ....\n");
+    printf("tigge_check [options] grib_file grib_file ...\n");
     printf("   -l: check local area model fields\n");
     printf("   -v: check value ranges\n");
-    printf("   -w: warning are treated as errors\n");
+    printf("   -w: warnings are treated as errors\n");
     printf("   -g: write good gribs\n");
     printf("   -b: write bad  gribs\n");
     printf("   -z: return 0 to calling shell\n");
+    printf("   -s: check s2s fields\n");
+    printf("   -r: check s2s reforecast fields\n");
     exit(1);
 }
 
@@ -1105,6 +1217,14 @@ int main(int argc,const char** argv)
                 is_lam=1;
                 break;
 
+            case 's':
+                is_s2s=1;
+                break;
+
+            case 'r':
+                is_s2s_refcst=1;
+                break;
+
             default:
                 usage();
                 break;
diff --git a/tigge/tigge_check.h b/tigge/tigge_check.h
index 39380a3..2a43aa9 100644
--- a/tigge/tigge_check.h
+++ b/tigge/tigge_check.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -8,6 +8,8 @@
  * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
  */
 
+/*todo limits for all radiative fluxes*/
+
 parameter parameters[] = {
    {
       "10_meter_u_velocity_sfc.glob",
@@ -18,6 +20,8 @@ parameter parameters[] = {
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
 
+         {"paramId", GRIB_TYPE_LONG, 165},
+
          {"discipline", GRIB_TYPE_LONG, 0},
          {"parameterCategory", GRIB_TYPE_LONG, 2},
          {"parameterNumber", GRIB_TYPE_LONG, 2},
@@ -60,12 +64,14 @@ parameter parameters[] = {
 /* 
    MOGREPS (origin = 1(mogreps-mo-eua))
    2014-01-10: minimum limit for 10_meter_u_velocity_sfc changed to <-100,5> because of 2014010715_00+0000
+   2014-31-03: maximum changed from <1,100> because of forecasts from 27-31.3...
+   2014-31-03: minimum & maximum changed for u,v components changed to reflect better small UK domain..
 */
    {
       "10_meter_u_velocity_sfc.lam.mogreps-mo-eua",
       -100,
-      5,
-      1,
+      10,
+      -10,
       100,
       {
          {"model", GRIB_TYPE_STRING, 0, "lam"},
@@ -98,6 +104,8 @@ parameter parameters[] = {
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
 
+         {"paramId", GRIB_TYPE_LONG, 166},
+
          {"discipline", GRIB_TYPE_LONG, 0},
          {"parameterCategory", GRIB_TYPE_LONG, 2},
          {"parameterNumber", GRIB_TYPE_LONG, 3},
@@ -140,12 +148,13 @@ parameter parameters[] = {
 /* 
    MOGREPS (origin = 1(mogreps-mo-eua))  set up for 10_meter_u_velocity_sfc
    2014-01-08: minimum limit for 10_meter_v_velocity_sfc changed to <-100,10> because of one early January forecast..
+   2014-31-03: minimum & maximum changed for u,v components changed to reflect better small UK domain..
 */
    {
       "10_meter_v_velocity_sfc.lam.mogreps-mo-eua",
       -100,
       10,
-      1,
+      -10,
       100,
       {
          {"model", GRIB_TYPE_STRING, 0, "lam"},
@@ -189,10 +198,13 @@ parameter parameters[] = {
       {&point_in_time, &predefined_thickness},
    },
 
+/*
+    2014-07-24: upper limit for cape minimum changed to <0,100> due to tigge_lam.LAEF_4tigge_08+0036.grib2, field 2 [convective_available_potential_energy_sfc.lam]: convective_available_potential_energy_sfc.lam minimum value 16.2219 is not in [0,10]
+*/
    {
       "convective_available_potential_energy_sfc.lam",
       0,
-      10,
+      100,
       0,
       17000,
       {
@@ -217,103 +229,68 @@ parameter parameters[] = {
    },
 
    {
-      "convective_inhibition_sfc.glob",
-      -60000,
+      "convective_available_potential_energy_sfc.lam.glameps-hirlamcons-eu",
+      -1000,
+      10,
       0,
-      -10,
-      5,
+      17000,
       {
-         {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"model", GRIB_TYPE_STRING, 0, "lam"},
+         {"suiteName", GRIB_TYPE_STRING, 9, "glameps-hirlamcons-eu"},
+
+         {"paramId", GRIB_TYPE_LONG, 59},
 
          {"discipline", GRIB_TYPE_LONG, 0},
          {"parameterCategory", GRIB_TYPE_LONG, 7},
-         {"parameterNumber", GRIB_TYPE_LONG, 7},
+         {"parameterNumber", GRIB_TYPE_LONG, 6},
 
          {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
+         {"scaledValueOfFirstFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
 
          {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 8},
+         {"scaleFactorOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
+         {"scaledValueOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
          {NULL, },
       },
       {&point_in_time, &predefined_thickness},
    },
 
    {
-      "convective_inhibition_sfc.lam",
+      "convective_inhibition_sfc.glob",
       -60000,
       0,
       -10,
       5,
       {
-         {"model", GRIB_TYPE_STRING, 0, "lam"},
-
-         {"paramId", GRIB_TYPE_LONG, 228001},
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
 
          {"discipline", GRIB_TYPE_LONG, 0},
          {"parameterCategory", GRIB_TYPE_LONG, 7},
          {"parameterNumber", GRIB_TYPE_LONG, 7},
 
          {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
-         {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-         {"scaledValueOfFirstFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
 
          {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 8},
-         {"scaleFactorOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-         {"scaledValueOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
          {NULL, },
       },
       {&point_in_time, &predefined_thickness},
    },
-   
 /* 
    eggr                  (centre=74, model=1) cin max ~ -30000
    aladinhuneps-omsz-eu  (origin=12) cin max ~ <-60000,1>
    aladinlaef-zamg-eu    (origin=)   cin max ~ <-...,1>
-*/
-/* 
    cosmodeeps-dwd-eu (origin=7)
+   2014-07-24: max upper limit change to <0, 4000> => tigge_lam.2014062818_slevels_lfff00000000.m011.grib2: convective_inhibition_sfc.lam.cosmodeeps-dwd-eu maximum value 3041.35 is not in [0,2000]
 */
-
-   {
-      "convective_inhibition_sfc.lam.cosmodeeps-dwd-eu",
-      0,
-      10,
-      0,
-      2000,
-      {
-         {"model", GRIB_TYPE_STRING, 0, "lam"},
-         {"suiteName", GRIB_TYPE_STRING, 7, "cosmodeeps-dwd-eu"},
-
-         {"paramId", GRIB_TYPE_LONG, 228001},
-
-         {"discipline", GRIB_TYPE_LONG, 0},
-         {"parameterCategory", GRIB_TYPE_LONG, 7},
-         {"parameterNumber", GRIB_TYPE_LONG, 7},
-
-         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
-         {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-         {"scaledValueOfFirstFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-
-         {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 8},
-         {"scaleFactorOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-         {"scaledValueOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-         {NULL, },
-      },
-      {&point_in_time, &predefined_thickness},
-   },
-
-/* 
-   cosmoleps-arpasimc-eu (origin=4)
-*/
-
    {
-      "convective_inhibition_sfc.lam.cosmoleps-arpasimc-eu",
-      -0.5,
-      10,
-      0,
-      2000,
+      "convective_inhibition_sfc.lam",
+      -60000,
+      1,
+      -10,
+      4000,
       {
          {"model", GRIB_TYPE_STRING, 0, "lam"},
-         {"suiteName", GRIB_TYPE_STRING, 4, "cosmoleps-arpasimc-eu"},
 
          {"paramId", GRIB_TYPE_LONG, 228001},
 
@@ -332,7 +309,7 @@ parameter parameters[] = {
       },
       {&point_in_time, &predefined_thickness},
    },
-
+   
    {
       "field_capacity_sfc",
       1e99,
@@ -356,23 +333,6 @@ parameter parameters[] = {
    },
 
    {
-      "geopotential_height_pl",
-      -810,
-      20000,
-      320,
-      22000,
-      {
-         {"model", GRIB_TYPE_STRING, 0, "glob"},
-         {"discipline", GRIB_TYPE_LONG, 0},
-         {"parameterCategory", GRIB_TYPE_LONG, 3},
-         {"parameterNumber", GRIB_TYPE_LONG, 5},
-         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 100},
-         {NULL, },
-      },
-      {&point_in_time, &given_level, &pressure_level},
-   },
-
-   {
       "land_sea_mask_sfc.glob",
       0,
       0,
@@ -381,6 +341,8 @@ parameter parameters[] = {
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
 
+         {"paramId", GRIB_TYPE_LONG, 172},
+
          {"discipline", GRIB_TYPE_LONG, 2},
          {"parameterCategory", GRIB_TYPE_LONG, 0},
          {"parameterNumber", GRIB_TYPE_LONG, 0},
@@ -423,7 +385,7 @@ parameter parameters[] = {
       -0.001,
       0,
       1,
-      1,
+      1.11,
       {
          {"model", GRIB_TYPE_STRING, 0, "lam"},
          {"suiteName", GRIB_TYPE_STRING, 11, "hirlam-dmi-eu"},
@@ -446,84 +408,6 @@ parameter parameters[] = {
       {&point_in_time, &predefined_level},
    },
 
-   {
-      "mean_sea_level_pressure_sfc.glob",
-      91000,
-      103000,
-      99000,
-      107000,
-      {
-         {"model", GRIB_TYPE_STRING, 0, "glob"},
-
-         {"discipline", GRIB_TYPE_LONG, 0},
-         {"parameterCategory", GRIB_TYPE_LONG, 3},
-         {"parameterNumber", GRIB_TYPE_LONG, 0},
-
-         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 101},
-         {NULL, },
-      },
-      {&point_in_time, &predefined_level},
-   },
-
-   {
-      "mean_sea_level_pressure_sfc.lam",
-      91000,
-      103000,
-      99000,
-      107000,
-      {
-         {"model", GRIB_TYPE_STRING, 0, "lam"},
-
-         {"paramId", GRIB_TYPE_LONG, 151},
-
-         {"discipline", GRIB_TYPE_LONG, 0},
-         {"parameterCategory", GRIB_TYPE_LONG, 3},
-         {"parameterNumber", GRIB_TYPE_LONG, 0},
-
-         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 101},
-         {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-         {"scaledValueOfFirstFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-
-         {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 255},
-         {"scaleFactorOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-         {"scaledValueOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-
-         {NULL, },
-      },
-      {&point_in_time, &predefined_level},
-   },
-
-/* 
-   MOGREPS (origin = 1(mogreps-mo-eua))
-   2014-02-06:21UTC mean_sea_level_pressure_sfc maximum value 98852 is not in [99000,107000]
-*/
-   {
-      "mean_sea_level_pressure_sfc.lam.mogreps-mo-eua",
-      91000,
-      103000,
-      98000,
-      107000,
-      {
-         {"model", GRIB_TYPE_STRING, 0, "lam"},
-         {"suiteName", GRIB_TYPE_STRING, 1, "mogreps-mo-eua"},
-
-        {"paramId", GRIB_TYPE_LONG, 151},
-
-         {"discipline", GRIB_TYPE_LONG, 0},
-         {"parameterCategory", GRIB_TYPE_LONG, 3},
-         {"parameterNumber", GRIB_TYPE_LONG, 0},
-
-         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 101},
-         {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-         {"scaledValueOfFirstFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-
-         {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 255},
-         {"scaleFactorOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-         {"scaledValueOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-         {NULL, },
-      },
-      {&point_in_time, &predefined_level},
-   },
 
    {
       "orography_sfc.glob",
@@ -534,6 +418,8 @@ parameter parameters[] = {
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
 
+         {"paramId", GRIB_TYPE_LONG, 228002},
+
          {"discipline", GRIB_TYPE_LONG, 0},
          {"parameterCategory", GRIB_TYPE_LONG, 3},
          {"parameterNumber", GRIB_TYPE_LONG, 5},
@@ -544,77 +430,19 @@ parameter parameters[] = {
       {&point_in_time, &predefined_level},
    },
 
-   {
-      "orography_sfc.lam",
-      -1300,
-      0,
-      2000,
-      8888,
-      {
-        {"model", GRIB_TYPE_STRING, 0, "lam"},
-
-        {"paramId", GRIB_TYPE_LONG, 228002},
-
-        {"discipline", GRIB_TYPE_LONG, 0},
-        {"parameterCategory", GRIB_TYPE_LONG, 3},
-        {"parameterNumber", GRIB_TYPE_LONG, 5},
-
-        {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
-        {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-        {"scaledValueOfFirstFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-
-        {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 255},
-        {"scaleFactorOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-        {"scaledValueOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-        {NULL, },
-      },
-      {&point_in_time, &predefined_level},
-   },
-
 /* 
    MOGREPS (origin = 1(mogreps-mo-eua))
    2014-01-08: limits for orog changed to <1000,8888>
 */
+
    {
-      "orography_sfc.lam.mogreps-mo-eua",
+      "orography_sfc.lam",
       -1300,
       0,
       1000,
       8888,
       {
         {"model", GRIB_TYPE_STRING, 0, "lam"},
-        {"suiteName", GRIB_TYPE_STRING, 1, "mogreps-mo-eua"},
-
-        {"paramId", GRIB_TYPE_LONG, 228002},
-
-        {"discipline", GRIB_TYPE_LONG, 0},
-        {"parameterCategory", GRIB_TYPE_LONG, 3},
-        {"parameterNumber", GRIB_TYPE_LONG, 5},
-
-        {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
-        {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-        {"scaledValueOfFirstFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-
-        {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 255},
-        {"scaleFactorOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-        {"scaledValueOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-         {NULL, },
-      },
-      {&point_in_time, &predefined_level},
-   },
-/* 
-   DMI-EPS (origin = 11(hirlam-dmi-eu))
-   2014-01-15: limits for orog changed to <1500,8888>
-*/
-   {
-      "orography_sfc.lam.hirlam-dmi-eu",
-      -1300,
-      0,
-      1800,
-      2500,
-      {
-        {"model", GRIB_TYPE_STRING, 0, "lam"},
-        {"suiteName", GRIB_TYPE_STRING, 11, "hirlam-dmi-eu"},
 
         {"paramId", GRIB_TYPE_LONG, 228002},
 
@@ -634,6 +462,7 @@ parameter parameters[] = {
       {&point_in_time, &predefined_level},
    },
 
+
    {
       "potential_temperature_pv",
       220,
@@ -673,8 +502,8 @@ parameter parameters[] = {
    {
       "skin_temperature_sfc",
       180,
-      210,
-      320,
+      230,
+      310,
       355,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
@@ -691,7 +520,7 @@ parameter parameters[] = {
       "snow_depth_water_equivalent_sfc",
       -4e-19,
       0,
-      12000,
+      10000,
       15000,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
@@ -706,12 +535,13 @@ parameter parameters[] = {
 
    {
       "snow_fall_water_equivalent_sfc",
-      -1e-9,
-      -1e-9,
-      3.5,
-      3.5,
+      -1.5e+6,
+       1.5e+6,
+      -1.5e+6,
+       1.5e+6,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"paramId", GRIB_TYPE_LONG, 228144},
          {"discipline", GRIB_TYPE_LONG, 0},
          {"parameterCategory", GRIB_TYPE_LONG, 1},
          {"parameterNumber", GRIB_TYPE_LONG, 53},
@@ -724,10 +554,10 @@ parameter parameters[] = {
 
    {
       "soil_moisture_sfc",
-      -1e-18,
+      -1e-19,
       0,
       450,
-      500,
+      800,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
          {"discipline", GRIB_TYPE_LONG, 2},
@@ -748,7 +578,7 @@ parameter parameters[] = {
       "soil_temperature_sfc",
       200,
       230,
-      310,
+      300,
       350,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
@@ -765,13 +595,16 @@ parameter parameters[] = {
       },
       {&point_in_time, &given_thickness},
    },
-
+/* 
+   S2S/CAWCR: specific_humidity_pl minimum value -0.0108485 is not in [-0.01,0.001]
+   s2s/ammc: warning: s2s.q_20150913_4.grib2, field 71 [specific_humidity_pl]: specific_humidity_pl maximum value 0.0511279 is not in [5e-05,0.05]
+*/
    {
       "specific_humidity_pl",
-      -1e-2,
-      1e-4,
-      0.0001,
-      0.050,
+      -2e-2,
+      1.e-3,
+      5e-5,
+      8e-2,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
          {"discipline", GRIB_TYPE_LONG, 0},
@@ -818,6 +651,11 @@ parameter parameters[] = {
       {&point_in_time, &given_level},
    },
 
+/* 
+warning: tigge_lam.20141019_00+045.mem009.grib2: surface_air_temperature_sfc.lam minimum value 219.508 is not in [220,290]
+mogreps in the past -> min <180, 290>
+*/
+
    {
       "surface_air_temperature_sfc.lam",
       180,
@@ -846,7 +684,7 @@ parameter parameters[] = {
    },
 
    {
-      "surface_air_temperature_sfc.lam.mogreps-mo-eua",
+      "surface_air_temperature_sfc.lam",
       180,
       290,
       270,
@@ -875,23 +713,24 @@ parameter parameters[] = {
 
 /* 
    cosmodeeps-dwd-eu (origin=7)
-   2014-01-08: minimum limit for surface_air_temperature_sfc changed to <140,290> 
+   2014-01-08: minimum limit for surface_air_dew_point_temperature_sfc changed to <160,290>
+   2014-11-06: glameps: tigge_lam.20141106_00+042.mem012.grib2, surface_air_dew_point_temperature_sfc.lam minimum value 128.003 is not in [160,290]
+     => [128.003,290]
 */
    {
-      "surface_air_temperature_sfc.lam.cosmodeeps-dwd-eu",
-      140,
+      "surface_air_dew_point_temperature_sfc.lam",
+      110,
       290,
       270,
       350,
       {
          {"model", GRIB_TYPE_STRING, 0, "lam"},
-         {"suiteName", GRIB_TYPE_STRING, 7, "cosmodeeps-dwd-eu"},
 
-         {"paramId", GRIB_TYPE_LONG, 167},
+         {"paramId", GRIB_TYPE_LONG, 168},
 
          {"discipline", GRIB_TYPE_LONG, 0},
          {"parameterCategory", GRIB_TYPE_LONG, 0},
-         {"parameterNumber", GRIB_TYPE_LONG, 0},
+         {"parameterNumber", GRIB_TYPE_LONG, 6},
 
          {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 103},
          {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0},
@@ -905,212 +744,179 @@ parameter parameters[] = {
       {&point_in_time, &given_level},
    },
 
+/* mogreps specific set up! => 1.5m instead of 2m measurements */
    {
-      "surface_air_dew_point_temperature_sfc.glob",
-      175,
+      "surface_air_dew_point_temperature_sfc.lam",
+      110,
       290,
       270,
       350,
       {
-         {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"model", GRIB_TYPE_STRING, 0, "lam"},
+         {"suiteName", GRIB_TYPE_STRING, 1, "mogreps-mo-eua"},
+
+         {"paramId", GRIB_TYPE_LONG, 168},
 
          {"discipline", GRIB_TYPE_LONG, 0},
          {"parameterCategory", GRIB_TYPE_LONG, 0},
          {"parameterNumber", GRIB_TYPE_LONG, 6},
 
          {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 103},
+         {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {"scaledValueOfFirstFixedSurface", GRIB_TYPE_LONG, 15},
+
+         {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 255},
+         {"scaleFactorOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
+         {"scaledValueOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
          {NULL, },
       },
       {&point_in_time, &given_level},
    },
-
+/* 
+   S2S/CAWCR: surface_air_maximum_temperature_sfc maximum value 359.388 is not in [300,330]
+s2s/kwbc/enfh: warning: s2s.z_s2s_c_rhmc_20150819000000_glob_prod_0006_000.sl.grib2, field 2 [surface_air_maximum_temperature_sfc]: surface_air_maximum_temperature_sfc minimum value 179.427 is not in [190,240]
+s2s/kwbc/enfh: warning: s2s.z_tigge_c_kwbc_20071002000000_ncep_prod_pf_sl_0006_001_0000_mx2t6.grib2, field 146 [surface_air_maximum_temperature_sfc]: surface_air_maximum_temperature_sfc minimum value 240.208 is not in [175,240]
+s2s/isac/enfo: warning: z_s2s_c_isac_201510190000_glob_prod_pf_0744_05.sl.grib2, field 513 [surface_air_maximum_temperature_sfc]: surface_air_maximum_temperature_sfc minimum value 245.143 is not in [175,245]
+s2s/lfpw/enfo: s2s.lfpw_mx2t6_2.grib2, field 3 [surface_air_maximum_temperature_sfc]: surface_air_maximum_temperature_sfc minimum value 167.434 is not in [175,250]
+*/
    {
-      "surface_air_dew_point_temperature_sfc.lam",
-      175,
-      290,
-      270,
-      350,
-      {
-         {"model", GRIB_TYPE_STRING, 0, "lam"},
-
-         {"paramId", GRIB_TYPE_LONG, 168},
-
-         {"discipline", GRIB_TYPE_LONG, 0},
-         {"parameterCategory", GRIB_TYPE_LONG, 0},
-         {"parameterNumber", GRIB_TYPE_LONG, 6},
-
-         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 103},
-         {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0},
-         {"scaledValueOfFirstFixedSurface", GRIB_TYPE_LONG, 2},
-
-         {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 255},
-         {"scaleFactorOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-         {"scaledValueOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-         {NULL, },
-      },
-      {&point_in_time, &given_level},
-   },
-
-   {
-      "surface_air_dew_point_temperature_sfc.lam.mogreps-mo-eua",
-      175,
-      290,
-      270,
-      350,
+      "surface_air_maximum_temperature_sfc",
+      160,
+      250,
+      300,
+      380,
       {
-         {"model", GRIB_TYPE_STRING, 0, "lam"},
-         {"suiteName", GRIB_TYPE_STRING, 1, "mogreps-mo-eua"},
-
-         {"paramId", GRIB_TYPE_LONG, 168},
-
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"paramId", GRIB_TYPE_LONG, 121},
          {"discipline", GRIB_TYPE_LONG, 0},
          {"parameterCategory", GRIB_TYPE_LONG, 0},
-         {"parameterNumber", GRIB_TYPE_LONG, 6},
-
+         {"parameterNumber", GRIB_TYPE_LONG, 0},
          {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 103},
-         {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
-         {"scaledValueOfFirstFixedSurface", GRIB_TYPE_LONG, 15},
-
-         {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 255},
-         {"scaleFactorOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-         {"scaledValueOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 2},
          {NULL, },
       },
-      {&point_in_time, &given_level},
+      {&six_hourly, &given_level},
    },
-
-/* 
-   cosmodeeps-dwd-eu (origin=7)
-   2014-01-08: minimum limit for surface_air_dew_point_temperature_sfc changed to <160,290>
+/*
+s2s_devel, ecmf, 20141222, 00UTC, test, enfo, real warning: s2s.2014122200.test.768.50.pf.sl.516.grib2, field 57 [surface_air_minimum_temperature_sfc]: surface_air_minimum_temperature_sfc maximum value 320.122 is not in [300,320]
+warning: s2s.z_tigge_c_kwbc_20090817000000_ncep_prod_pf_sl_0006_002_0000_mn2t6.grib2, field 100 [surface_air_minimum_temperature_sfc]: surface_air_minimum_temperature_sfc minimum value 188.577 is not in [190,240]
+s2s/kwbc/enfh: warning: s2s.z_s2s_c_rhmc_20150819000000_glob_prod_0006_000.sl.grib2, field 1 [surface_air_minimum_temperature_sfc]: surface_air_minimum_temperature_sfc minimum value 179.642 is not in [183,240]
+s2s/ammc/enfo: warning: s2s.mn2t6_20150917_24.grib2, field 1 [surface_air_minimum_temperature_sfc]: surface_air_minimum_temperature_sfc minimum value 167.556 is not in [175,240]
+s2s/isac/enfo: warning: z_s2s_c_isac_201510190000_glob_prod_pf_0744_24.sl.grib2, field 671 [surface_air_minimum_temperature_sfc]: surface_air_minimum_temperature_sfc minimum value 241.292 is not in [160,240]
 */
    {
-      "surface_air_dew_point_temperature_sfc.lam.cosmodeeps-dwd-eu",
+      "surface_air_minimum_temperature_sfc",
       160,
-      290,
-      270,
-      350,
-      {
-         {"model", GRIB_TYPE_STRING, 0, "lam"},
-         {"suiteName", GRIB_TYPE_STRING, 7, "cosmodeeps-dwd-eu"},
-
-         {"paramId", GRIB_TYPE_LONG, 168},
-
-         {"discipline", GRIB_TYPE_LONG, 0},
-         {"parameterCategory", GRIB_TYPE_LONG, 0},
-         {"parameterNumber", GRIB_TYPE_LONG, 6},
-
-         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 103},
-         {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0},
-         {"scaledValueOfFirstFixedSurface", GRIB_TYPE_LONG, 2},
-
-         {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 255},
-         {"scaleFactorOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-         {"scaledValueOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-         {NULL, },
-      },
-      {&point_in_time, &given_level},
-   },
-
-   {
-      "surface_air_maximum_temperature_sfc",
-      190,
-      230,
-      310,
-      330,
+      245,
+      300,
+      325,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"paramId", GRIB_TYPE_LONG, 122},
          {"discipline", GRIB_TYPE_LONG, 0},
          {"parameterCategory", GRIB_TYPE_LONG, 0},
          {"parameterNumber", GRIB_TYPE_LONG, 0},
          {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 103},
-         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 2},
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 3},
          {NULL, },
       },
       {&six_hourly, &given_level},
    },
 
+/*
+s2s/ammc: warning: s2s.mx2t6_20150910_4.grib2, field 200 [surface_air_maximum_temperature_sfc.ammc]: surface_air_maximum_temperature_sfc.ammc maximum value 1516.03 is not in [300,1500]
+s2s/ammc: warning: s2s.mx2t6_20151224_26.grib2, field 47 [surface_air_maximum_temperature_sfc.ammc]: surface_air_maximum_temperature_sfc.ammc maximum value 6963.63 is not in [300,5000]
+*/
    {
-      "surface_air_minimum_temperature_sfc",
-      190,
-      230,
-      310,
-      320,
+      "surface_air_maximum_temperature_sfc.ammc",
+      175,
+      240,
+      300,
+      10000,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"centre", GRIB_TYPE_STRING, 1, "ammc"},
+         {"paramId", GRIB_TYPE_LONG, 121},
          {"discipline", GRIB_TYPE_LONG, 0},
          {"parameterCategory", GRIB_TYPE_LONG, 0},
          {"parameterNumber", GRIB_TYPE_LONG, 0},
          {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 103},
-         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 3},
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 2},
          {NULL, },
       },
       {&six_hourly, &given_level},
    },
 
-
    {
-      "surface_pressure_sfc",
-      48000,
-      50500,
-      103000,
-      110000,
+      "time_integrated_top_net_thermal_radiation_sfc",
+      -1e+10,
+       1e+10,
+      -1e+10,
+       1e+10,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"paramId", GRIB_TYPE_LONG, 179},
          {"discipline", GRIB_TYPE_LONG, 0},
-         {"parameterCategory", GRIB_TYPE_LONG, 3},
-         {"parameterNumber", GRIB_TYPE_LONG, 0},
-         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {"parameterCategory", GRIB_TYPE_LONG, 5},
+         {"parameterNumber", GRIB_TYPE_LONG, 5},
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 1},
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 8},
          {NULL, },
       },
-      {&point_in_time, &predefined_level},
+      {&from_start, &predefined_level},
    },
 
    {
-      "temperature_pl",
-      185,
-      250,
-      230,
-      330,
+      "time_integrated_surface_latent_heat_flux_sfc",
+      -1e+10,
+       1e+10,
+      -1e+10,
+       1e+10,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"paramId", GRIB_TYPE_LONG, 147},
          {"discipline", GRIB_TYPE_LONG, 0},
          {"parameterCategory", GRIB_TYPE_LONG, 0},
-         {"parameterNumber", GRIB_TYPE_LONG, 0},
-         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 100},
+         {"parameterNumber", GRIB_TYPE_LONG, 10},
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 1},
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
          {NULL, },
       },
-      {&point_in_time, &given_level, &pressure_level},
+      {&from_start, &predefined_level},
    },
 
    {
-      "time_integrated_outgoing_long_wave_radiation_sfc",
-      -1.5e+6,
-      -1.5e+6,
-      -300000,
-      -300000,
+      "time_integrated_surface_net_solar_radiation_sfc",
+      -1e+10,
+       1e+10,
+      -1e+10,
+       1e+10,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"paramId", GRIB_TYPE_LONG, 176},
          {"discipline", GRIB_TYPE_LONG, 0},
-         {"parameterCategory", GRIB_TYPE_LONG, 5},
-         {"parameterNumber", GRIB_TYPE_LONG, 5},
-         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 8},
+         {"parameterCategory", GRIB_TYPE_LONG, 4},
+         {"parameterNumber", GRIB_TYPE_LONG, 9},
          {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 1},
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
          {NULL, },
       },
       {&from_start, &predefined_level},
    },
 
    {
-      "time_integrated_surface_latent_heat_flux_sfc",
-      -4e+6,
-      -4e+6,
-      700000,
-      700000,
+      "time_integrated_surface_net_solar_radiation_downwards_sfc",
+      -1e+10,
+       1e+10,
+      -1e+10,
+       1e+10,
+
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"paramId", GRIB_TYPE_LONG, 169},
          {"discipline", GRIB_TYPE_LONG, 0},
-         {"parameterCategory", GRIB_TYPE_LONG, 0},
-         {"parameterNumber", GRIB_TYPE_LONG, 10},
+         {"parameterCategory", GRIB_TYPE_LONG, 4},
+         {"parameterNumber", GRIB_TYPE_LONG, 7},
          {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
          {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 1},
          {NULL, },
@@ -1119,34 +925,36 @@ parameter parameters[] = {
    },
 
    {
-      "time_integrated_surface_net_solar_radiation_sfc",
-      0,
-      0,
-      4e+6,
-      4e+6,
+      "time_integrated_surface_net_thermal_radiation_sfc",
+      -1e+10,
+       1e+10,
+      -1e+10,
+       1e+10,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"paramId", GRIB_TYPE_LONG, 177},
          {"discipline", GRIB_TYPE_LONG, 0},
-         {"parameterCategory", GRIB_TYPE_LONG, 4},
-         {"parameterNumber", GRIB_TYPE_LONG, 9},
-         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {"parameterCategory", GRIB_TYPE_LONG, 5},
+         {"parameterNumber", GRIB_TYPE_LONG, 5},
          {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 1},
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
          {NULL, },
       },
       {&from_start, &predefined_level},
    },
 
    {
-      "time_integrated_surface_net_thermal_radiation_sfc",
-      -1.1e+6,
-      -1.1e+6,
-      700000,
-      700000,
+      "time_integrated_surface_net_thermal_radiation_downwards_sfc",
+      -1e+10,
+       1e+10,
+      -1e+10,
+       1e+10,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"paramId", GRIB_TYPE_LONG, 175},
          {"discipline", GRIB_TYPE_LONG, 0},
          {"parameterCategory", GRIB_TYPE_LONG, 5},
-         {"parameterNumber", GRIB_TYPE_LONG, 5},
+         {"parameterNumber", GRIB_TYPE_LONG, 3},
          {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
          {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 1},
          {NULL, },
@@ -1156,12 +964,13 @@ parameter parameters[] = {
 
    {
       "time_integrated_surface_sensible_heat_flux_sfc",
-      -3e+6,
-      -3e+6,
-      1.5e+6,
-      1.5e+6,
+      -1e+10,
+       1e+10,
+      -1e+10,
+       1e+10,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"paramId", GRIB_TYPE_LONG, 146},
          {"discipline", GRIB_TYPE_LONG, 0},
          {"parameterCategory", GRIB_TYPE_LONG, 0},
          {"parameterNumber", GRIB_TYPE_LONG, 11},
@@ -1192,9 +1001,9 @@ parameter parameters[] = {
 
    {
       "total_column_water_sfc",
-      0.1,
-      0.21,
-      75,
+      0.01,
+      0.3,
+      50,
       150,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
@@ -1225,27 +1034,6 @@ parameter parameters[] = {
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
 
-         {"discipline", GRIB_TYPE_LONG, 0},
-         {"parameterCategory", GRIB_TYPE_LONG, 1},
-         {"parameterNumber", GRIB_TYPE_LONG, 52},
-
-         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 1},
-
-         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
-         {NULL, },
-      },
-      {&from_start, &predefined_level},
-   },
-
-   {
-      "total_precipitation_sfc.lam",
-      -0.05,
-      0.1,
-      0.,
-      100.,
-      {
-         {"model", GRIB_TYPE_STRING, 0, "lam"},
-
          {"paramId", GRIB_TYPE_LONG, 228228},
 
          {"discipline", GRIB_TYPE_LONG, 0},
@@ -1255,30 +1043,25 @@ parameter parameters[] = {
          {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 1},
 
          {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
-         {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-         {"scaledValueOfFirstFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-
-         {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 255},
-         {"scaleFactorOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-         {"scaledValueOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
          {NULL, },
       },
       {&from_start, &predefined_level},
    },
 
 /*
-   cosmodeeps-dwd-eu (origin=7)
    2013-??-??: maximum changed to <0,133> because of cosmo-de boundary effects when coupled with IFS ..
- */
+   2014-07-16-18UTC: maximum changed to <0,200> because of GLAMEPS, v2 maximum value 170.646 (tigge_lam.20140716_18+003.mem025.grib2)
+   2014-08-06-09UTC: warning: tigge_lam.20140805_12+009.mem025.grib2:total_precipitation_sfc.lam maximum value 259.002 is not in [0,200]
+*/
+
    {
-      "total_precipitation_sfc.lam.cosmodeeps-dwd-eu",
+      "total_precipitation_sfc.lam",
       -0.05,
       0.1,
       0.,
-      133.,
+      300.,
       {
          {"model", GRIB_TYPE_STRING, 0, "lam"},
-         {"suiteName", GRIB_TYPE_STRING, 7, "cosmodeeps-dwd-eu"},
 
          {"paramId", GRIB_TYPE_LONG, 228228},
 
@@ -1324,12 +1107,16 @@ parameter parameters[] = {
       {&from_start, &predefined_level},
    },
 
+/*
+   2014-25-07: upper limit for max changed to <0,150> because of glameps => tigge_lam.20140724_18+003.mem026.grib2, large_scale_precipitation_sfc.lam maximum value 104.745 is not in [0,100]
+   2014-08-11: glameps-hirlamcons-eu, 20140808, 00UTC, test: tigge_lam.20140808_00+006.mem026.grib2, large_scale_precipitation_sfc.lam maximum value 186.24 is not in [0,150]
+*/
    {
       "large_scale_precipitation_sfc.lam",
       -0.05,
       0.1,
       0.0,
-      100.,
+      300.,
       {
          {"model", GRIB_TYPE_STRING, 0, "lam"},
 
@@ -1354,74 +1141,6 @@ parameter parameters[] = {
    },
 
    {
-      "u_velocity_pl",
-      -120,
-      -20,
-      20,
-      120,
-      {
-         {"model", GRIB_TYPE_STRING, 0, "glob"},
-         {"discipline", GRIB_TYPE_LONG, 0},
-         {"parameterCategory", GRIB_TYPE_LONG, 2},
-         {"parameterNumber", GRIB_TYPE_LONG, 2},
-         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 100},
-         {NULL, },
-      },
-      {&point_in_time, &given_level, &pressure_level},
-   },
-
-   {
-      "u_velocity_pv",
-      -120,
-      -30,
-      70,
-      120,
-      {
-         {"model", GRIB_TYPE_STRING, 0, "glob"},
-         {"discipline", GRIB_TYPE_LONG, 0},
-         {"parameterCategory", GRIB_TYPE_LONG, 2},
-         {"parameterNumber", GRIB_TYPE_LONG, 2},
-         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 109},
-         {NULL, },
-      },
-      {&point_in_time, &given_level, &potential_vorticity_level},
-   },
-
-   {
-      "v_velocity_pl",
-      -120,
-      -20,
-      20,
-      120,
-      {
-         {"model", GRIB_TYPE_STRING, 0, "glob"},
-         {"discipline", GRIB_TYPE_LONG, 0},
-         {"parameterCategory", GRIB_TYPE_LONG, 2},
-         {"parameterNumber", GRIB_TYPE_LONG, 3},
-         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 100},
-         {NULL, },
-      },
-      {&point_in_time, &given_level, &pressure_level},
-   },
-
-   {
-      "v_velocity_pv",
-      -120,
-      -50,
-      55,
-      120,
-      {
-         {"model", GRIB_TYPE_STRING, 0, "glob"},
-         {"discipline", GRIB_TYPE_LONG, 0},
-         {"parameterCategory", GRIB_TYPE_LONG, 2},
-         {"parameterNumber", GRIB_TYPE_LONG, 3},
-         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 109},
-         {NULL, },
-      },
-      {&point_in_time, &given_level, &potential_vorticity_level},
-   },
-
-   {
       "wilting_point_sfc",
       1e99,
       -1e99,
@@ -1468,12 +1187,16 @@ parameter parameters[] = {
       {&three_hourly, &given_level},
    },
 
+/* 
+   cosmoleps-arpasimc-eu 20140323, 12UTC, prod: tigge_lam.vmax_10m.9999.grib2, field 11 [maximum_wind_gust.lam]: maximum_wind_gust.lam maximum value 106.861 is not in [0,100] 
+*/
+
    {
       "maximum_wind_gust.lam",
       0,
-      10,
+      15,
       0,
-      100,
+      150,
       {
          {"model", GRIB_TYPE_STRING, 0, "lam"},
 
@@ -1497,14 +1220,26 @@ parameter parameters[] = {
       {&three_hourly, &given_level},
    },
 
+/* 
+   MOGREPS (origin = 1(mogreps-mo-eua))
+   2014-01-08 minimum limit for maximum_wind_gust changed to <0,12> because of mogreps data from 2014010203_03+0033
+   2014-01-10 maximum limit for maximum_wind_gust changed to <0,200> because of mogreps data from 2014010403_06+0033
+   2014-01-10 maximum limit for maximum_wind_gust changed to <0,333> because of mogreps data from 2014010821_11+0033
+   2014-01-27 minimum limit for maximum_wind_gust changed to <0,15> because of mogreps data from 2014012521_09+0018
+   2014-02-20 maximum limit for maximum_wind_gust changed to <0,500> because of mogreps data from 2014022009_02+0021
+   2014-12-08 warning: tigge_lam.tigge_mogreps-uk_2014120709_00+0018.grib2, field 4 [maximum_wind_gust.lam]: maximum_wind_gust.lam maximum value 607.375 is not in [0,500]
+  prod-mogreps-real-20150331-09 warning: tigge_lam.tigge_mogreps-uk_2015033109_10+0006.grib2, field 4 [maximum_wind_gust.lam]: maximum_wind_gust.lam minimum value 15.125 is not in [0,15]
+*/
+
    {
       "maximum_wind_gust.lam",
       0,
-      10,
+      20,
       0,
-      100,
+      800,
       {
          {"model", GRIB_TYPE_STRING, 0, "lam"},
+         {"suiteName", GRIB_TYPE_STRING, 1, "mogreps-mo-eua"},
 
          {"paramId", GRIB_TYPE_LONG, 228028},
 
@@ -1526,42 +1261,1053 @@ parameter parameters[] = {
       {&three_hourly, &given_level},
    },
 
+/*
+s2s_devel, ecmf, 20141006, 0UTC, test: field 663 [mean_sea_level_pressure_sfc.glob]: mean_sea_level_pressure_sfc.glob minimum value 90371.6 is not in [91000,103000]
+s2s_devel, ecmf: warning: s2s.128151.2014111700.test.sfc.pf.768.4.grib2, mean_sea_level_pressure_sfc maximum value 107435 is not in [98000,107000]
+tigge_lam.tigge_mogreps-uk_2014122709_03+0036.grib2, field 1: mean_sea_level_pressure_sfc minimum value 103069 is not in [90000,103000]
+warning: s2s.2015082000.prod.1104.50.pf.sl.648.grib2, field 335 [mean_sea_level_pressure_sfc]: mean_sea_level_pressure_sfc minimum value 89778 is not in [90000,104000]
+s2s/lfpw: warning: s2s.lfpw_msl_0.grib2, field 1 [mean_sea_level_pressure_sfc]: mean_sea_level_pressure_sfc minimum value 88258.8 is not in [89000,104000]
+*/
+   {
+      "mean_sea_level_pressure_sfc",
+      88000,
+      104000,
+      98000,
+      109000,
+      {
+         {"paramId", GRIB_TYPE_LONG, 151},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 3},
+         {"parameterNumber", GRIB_TYPE_LONG, 0},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 101},
+         {NULL, },
+      },
+      {&point_in_time, &predefined_level},
+   },
+
+/*
+s2s/lfpw: warning: s2s.lfpw_msl_0.grib2, field 1 [mean_sea_level_pressure_sfc]: mean_sea_level_pressure_sfc maximum value 120427 is not in [98000,109000] xxx should be fixed by provider!!
+*/
+   {
+      "mean_sea_level_pressure_sfc.lfpw",
+      85000,
+      104000,
+      98000,
+      121000,
+      {
+         {"paramId", GRIB_TYPE_LONG, 151},
+         {"centre", GRIB_TYPE_STRING, 1, "lfpw"},
+         {"step", GRIB_TYPE_LONG, 0},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 3},
+         {"parameterNumber", GRIB_TYPE_LONG, 0},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 101},
+         {NULL, },
+      },
+      {&point_in_time, &predefined_level},
+   },
+
+/*
+s2s_devel, ecmf, 20141229, 00UTC, test, enfh, real:    s2s.2014122900.test.768.10.pf.20131229.pl.720.grib2, field 450 [geopotential_height_pl]: geopotential_height_pl minimum value 30321.6 is not in [-850,30000]
+warning: s2s.2015082000.prod.1104.50.pf.pl.648.grib2, field 2241 [geopotential_height_pl]: geopotential_height_pl minimum value -876.714 is not in [-850,30500]
+s2s/lfpw: warning: s2s.lfpw_gh_1000.grib2, field 1 [geopotential_height_pl]: geopotential_height_pl minimum value -1199.08 is not in [-1000,30500]
+s2s/egrr: s2s.z_s2s_c_ukmo_20160102000000_glob_prod_pf_1440_002.rt.pl.grib2, field 1211 [geopotential_height_pl]: geopotential_height_pl minimum value 30506.8 is not in [-1300,30500]
+*/
+   {
+      "geopotential_height_pl",
+      -1300,
+      30600,
+      200,
+      35000,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 3},
+         {"parameterNumber", GRIB_TYPE_LONG, 5},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 100},
+         {NULL, },
+      },
+      {&point_in_time, &given_level, &pressure_level},
+   },
+
+/*
+warning: s2s.lfpw_t_10.grib2, field 61 [temperature_pl]: temperature_pl minimum value 159.934 is not in [160,260]
+*/
+
+   {
+      "temperature_pl",
+      150,
+      260,
+      200,
+      330,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+
+         {"paramId", GRIB_TYPE_LONG, 130},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 0},
+         {"parameterNumber", GRIB_TYPE_LONG, 0},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 100},
+         {NULL, },
+      },
+      {&point_in_time, &given_level, &pressure_level},
+   },
 /* 
-   MOGREPS (origin = 1(mogreps-mo-eua))
-   2014-01-08 minimum limit for maximum_wind_gust changed to <0,12> because of mogreps data from 2014010203_03+0033
-   2014-01-10 maximum limit for maximum_wind_gust changed to <0,200> because of mogreps data from 2014010403_06+0033
-   2014-01-10 maximum limit for maximum_wind_gust changed to <0,333> because of mogreps data from 2014010821_11+0033
-   2014-01-27 minimum limit for maximum_wind_gust changed to <0,15> because of mogreps data from 2014012521_09+0018
-   2014-02-20 maximum limit for maximum_wind_gust changed to <0,500> because of mogreps data from 2014022009_02+0021
+   S2S/ammc: warning: s2s.t_20150906_21.grib2, field 11 [temperature_pl]: temperature_pl minimum value 44.6657 is not in [50,260]
+   S2S/ammc: warning: s2s.t_20150906_24.grib2, field 321 [temperature_pl]: temperature_pl minimum value -48.9135 is not in [50,260]
+*/
+   {
+      "temperature_pl.ammc",
+      -100,
+      260,
+      200,
+      340,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+
+         {"paramId", GRIB_TYPE_LONG, 130},
+         {"centre", GRIB_TYPE_STRING, 1, "ammc"},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 0},
+         {"parameterNumber", GRIB_TYPE_LONG, 0},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 100},
+         {NULL, },
+      },
+      {&point_in_time, &given_level, &pressure_level},
+   },
+/* 
+   S2S/CAWCR: u_velocity_pl minimum value -137.331 is not in [-120,-10]
+   S2S/CAWCR: u_velocity_pl minimum value -8.77315 is not in [-120,-10]
+   s2s/ammc: warning: s2s.u_20150910_1.grib2, field 270 [u_velocity_pl]: u_velocity_pl minimum value -0.81584 is not in [-150,-1]
+   s2s/ammc: warning: s2s.u_20150906_28.grib2, field 430 [u_velocity_pl]: u_velocity_pl minimum value -1.09782 is not in [-150,-5]
+   s2s_devel, ecmf, 20150101, 00UTC, test, enfh, real: warning: s2s.2015010100.test.768.10.pf.20140101.pl.240.grib2, field 120 [u_velocity_pl]: u_velocity_pl maximum value 154.069 is not in [10,150]
+warning: s2s.z_tigge_c_kwbc_20020817000000_ncep_prod_pf_pl_0000_003_0010_u.grib2, field 3 [u_velocity_pl]: u_velocity_pl maximum value 170.9 is not in [10,170]
+   s2s/ammc: warning: s2s.u_20150913_31.grib2, field 550 [u_velocity_pl]: u_velocity_pl minimum value 0.352796 is not in [-150,-0.001]
+   s2s/ammc: warning: s2s.u_20151101_13.grib2, field 401 [u_velocity_pl]: u_velocity_pl minimum value -195.645 is not in [-180,1]
+*/
+   {
+      "u_velocity_pl",
+      -200,
+      1,
+      10,
+      200,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+
+         {"paramId", GRIB_TYPE_LONG, 131},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 2},
+         {"parameterNumber", GRIB_TYPE_LONG, 2},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 100},
+         {NULL, },
+      },
+      {&point_in_time, &given_level, &pressure_level},
+   },
+/* 
+   S2S/CAWCR: v_velocity_pl maximum value 8.54936 is not in [10,150]
+   S2S/CAWCR: v_velocity_pl minimum value -128.209 is not in [-120,-10]
+   ammc-s2s-enfo: warning: s2s.v_20160131_0.grib2, field 430 [v_velocity_pl]: v_velocity_pl minimum value -4.84592 is not in [-190,-5]
+*/
+
+   {
+      "v_velocity_pl",
+      -190,
+      -4,
+      4,
+      190,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+
+         {"paramId", GRIB_TYPE_LONG, 132},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 2},
+         {"parameterNumber", GRIB_TYPE_LONG, 3},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 100},
+         {NULL, },
+      },
+      {&point_in_time, &given_level, &pressure_level},
+   },
+
+   {
+      "u_velocity_pv",
+      -120,
+      -30,
+      70,
+      120,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 2},
+         {"parameterNumber", GRIB_TYPE_LONG, 2},
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 109},
+         {NULL, },
+      },
+      {&point_in_time, &given_level, &potential_vorticity_level},
+   },
+
+   {
+      "v_velocity_pv",
+      -120,
+      -50,
+      55,
+      120,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 2},
+         {"parameterNumber", GRIB_TYPE_LONG, 3},
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 109},
+         {NULL, },
+      },
+      {&point_in_time, &given_level, &potential_vorticity_level},
+   },
+/*
+   s2s_devel, ecmf, 20150101, 00UTC, test, enfh, warning: s2s.2015010100.test.768.10.pf.20020101.pl.0.grib2, field 372 [w_vertical_velocity_pl]: w_vertical_velocity_pl minimum value -5.02998 is not in [-5,0] 
+warning: s2s.z_tigge_c_kwbc_20150817000000_ncep_prod_pf_pl_0000_015_0500_w.grib2, field 3 [w_vertical_velocity_pl]: w_vertical_velocity_pl minimum value -7.25731 is not in [-6,0]
+  s2s/kwbc/enfo: warning: s2s.z_tigge_c_kwbc_20151114000000_ncep_prod_pf_pl_0000_011_0500_w.grib2, field 7 [w_vertical_velocity_pl]: w_vertical_velocity_pl minimum value -10.202 is not in [-10,0]
+
 */
    {
-      "maximum_wind_gust.lam.mogreps-mo-eua",
+      "w_vertical_velocity_pl",
+      -12,
       0,
-      15,
       0,
-      500,
+      12,
       {
-         {"model", GRIB_TYPE_STRING, 0, "lam"},
-         {"suiteName", GRIB_TYPE_STRING, 1, "mogreps-mo-eua"},
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
 
-         {"paramId", GRIB_TYPE_LONG, 228028},
+         {"paramId", GRIB_TYPE_LONG, 135},
 
          {"discipline", GRIB_TYPE_LONG, 0},
          {"parameterCategory", GRIB_TYPE_LONG, 2},
-         {"parameterNumber", GRIB_TYPE_LONG, 22},
+         {"parameterNumber", GRIB_TYPE_LONG, 8},
 
-         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 2},
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 100},
+         {NULL, },
+      },
+      {&point_in_time, &given_level, &pressure_level},
+   },
 
-         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 103},
-         {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0},
-         {"scaledValueOfFirstFixedSurface", GRIB_TYPE_LONG, 10},
+   {
+      "soil_type_sfc",
+      0,
+      1,
+      5,
+      10,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+
+         {"paramId", GRIB_TYPE_LONG, 43},
+
+         {"discipline", GRIB_TYPE_LONG, 2},
+         {"parameterCategory", GRIB_TYPE_LONG, 3},
+         {"parameterNumber", GRIB_TYPE_LONG, 0},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
 
-         {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 255},
-         {"scaleFactorOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
-         {"scaledValueOfSecondFixedSurface", GRIB_TYPE_STRING, 0, "missing"},
          {NULL, },
       },
-      {&three_hourly, &given_level},
+      {&point_in_time, &predefined_level},
+   },
+/*
+s2s_devel, ecmf, 20141229, 00UTC, test, enfh, real:  s2s.2014122900.test.768.10.pf.19941229.sl.168.grib2, field 21 [surface_pressure_sfc]: surface_pressure_sfc maximum value 102851 is not in [102900,110000]
+*/
+   {
+      "surface_pressure_sfc",
+      48000,
+      55000,
+      102500,
+      110000,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+
+         {"paramId", GRIB_TYPE_LONG, 134},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 3},
+         {"parameterNumber", GRIB_TYPE_LONG, 0},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {NULL, },
+      },
+      {&point_in_time, &predefined_level},
    },
 
-};
+/*todo limits*/
+   {
+      "eastward_turbulent_surface_stress_sfc",
+      -1.5e+6,
+       1.5e+6,
+      -1.5e+6,
+       1.5e+6,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+
+         {"paramId", GRIB_TYPE_LONG, 180},
+
+         {"discipline", GRIB_TYPE_LONG,0},
+         {"parameterCategory", GRIB_TYPE_LONG,2},
+         {"parameterNumber", GRIB_TYPE_LONG,38},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 1},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {NULL, },
+      },
+      {&from_start, &predefined_level},
+   },
+
+/*todo limits*/
+   {
+      "northward_turbulent_surface_stress_sfc",
+      -1.5e+6,
+       1.5e+6,
+      -1.5e+6,
+       1.5e+6,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+
+         {"paramId", GRIB_TYPE_LONG, 181},
+
+         {"discipline", GRIB_TYPE_LONG,0},
+         {"parameterCategory", GRIB_TYPE_LONG,2},
+         {"parameterNumber", GRIB_TYPE_LONG,37},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 1},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {NULL, },
+      },
+      {&from_start, &predefined_level},
+   },
+
+/*todo limits*/
+   {
+      "surface_runoff_sfc",
+      -1.5e+6,
+       1.5e+6,
+      -1.5e+6,
+       1.5e+6,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+
+         {"paramId", GRIB_TYPE_LONG, 174008},
+
+         {"discipline", GRIB_TYPE_LONG,2},
+         {"parameterCategory", GRIB_TYPE_LONG,0},
+         {"parameterNumber", GRIB_TYPE_LONG,34},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 1},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {NULL, },
+      },
+      {&from_start, &predefined_level},
+   },
+
+/*todo limits*/
+   {
+      "water_runoff_sfc",
+      -1.5e+6,
+       1.5e+6,
+      -1.5e+6,
+       1.5e+6,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+
+         {"paramId", GRIB_TYPE_LONG, 228205},
+
+         {"discipline", GRIB_TYPE_LONG,2},
+         {"parameterCategory", GRIB_TYPE_LONG,0},
+         {"parameterNumber", GRIB_TYPE_LONG,33},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 1},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {NULL, },
+      },
+      {&from_start, &predefined_level},
+   },
+
+   {
+      "sea_ice_cover_sfc.glob",
+      -1.5e+6,
+       1.5e+6,
+      -1.5e+6,
+       1.5e+6,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+
+         {"paramId", GRIB_TYPE_LONG, 31},
+
+         {"discipline", GRIB_TYPE_LONG, 10},
+         {"parameterCategory", GRIB_TYPE_LONG, 2},
+         {"parameterNumber", GRIB_TYPE_LONG, 0},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {NULL, },
+      },
+      {&point_in_time, &predefined_level},
+   },
+
+   {
+      "snow_density_sfc.glob",
+      -1.5e+6,
+       1.5e+6,
+      -1.5e+6,
+       1.5e+6,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+
+         {"paramId", GRIB_TYPE_LONG, 33},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 1},
+         {"parameterNumber", GRIB_TYPE_LONG, 61},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {NULL, },
+      },
+      {&point_in_time, &predefined_level},
+   },
+
+   {
+      "sea_surface_temperature_sfc.glob",
+      -1.5e+6,
+       1.5e+6,
+      -1.5e+6,
+       1.5e+6,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+
+         {"paramId", GRIB_TYPE_LONG, 34},
+
+         {"discipline", GRIB_TYPE_LONG, 10},
+         {"parameterCategory", GRIB_TYPE_LONG, 3},
+         {"parameterNumber", GRIB_TYPE_LONG, 0},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {NULL, },
+      },
+      {&point_in_time, &predefined_level},
+   },
+
+   {
+      "convective_available_potential_energy_sfc.glob.s2",
+      0,
+      10,
+      0,
+      17000,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"class", GRIB_TYPE_STRING, 0, "s2"},
+
+         {"paramId", GRIB_TYPE_LONG, 59},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 7},
+         {"parameterNumber", GRIB_TYPE_LONG, 6},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 0},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 8},
+         {NULL, },
+      },
+      {&daily_average, &predefined_thickness},
+   },
+/* 
+   S2S/CAWCR: total_column_water_sfc.glob minimum value 0.00832421 is not in [0.01,1]
+warning: s2s.z_tigge_c_kwbc_19990817000000_ncep_prod_cf_sl_0024_000_0000_tcw.grib2, field 33 [total_column_water_sfc.glob]: total_column_water_sfc.glob minimum value -0.168614 is not in [0.001,1]
+warning: s2s.z_tigge_c_kwbc_20090829000000_ncep_prod_pf_sl_0024_003_0000_tcw.grib2, field 11 [total_column_water_sfc.glob]: total_column_water_sfc.glob minimum value -2.00987 is not in [-2,1]
+  => [-2.00987,1]
+*/
+   {
+      "total_column_water_sfc.glob.s2",
+      -3.0,
+      1,
+      50,
+      150,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"class", GRIB_TYPE_STRING, 0, "s2"},
+
+         {"paramId", GRIB_TYPE_LONG, 136},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 1},
+         {"parameterNumber", GRIB_TYPE_LONG, 51},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 0},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 8},
+         {NULL, },
+      },
+      {&daily_average, &predefined_thickness},
+   },
+
+/*
+   s2s/rums warning: s2s.z_s2s_c_rhmc_20150819000000_glob_prod_0336_017.sl.grib2, field 4 [surface_air_temperature_sfc.glob]: surface_air_temperature_sfc.glob minimum value 177.17 is not in [180,290]
+s2s/ammc: warning: s2s.2t_20151224_26.grib2, field 12 [surface_air_temperature_sfc.glob.s2]: surface_air_temperature_sfc.glob.s2 maximum value 353.017 is not in [270,350]
+*/
+
+   {
+      "surface_air_temperature_sfc.glob.s2",
+      170,
+      290,
+      270,
+      360,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"class", GRIB_TYPE_STRING, 0, "s2"},
+
+         {"paramId", GRIB_TYPE_LONG, 167},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 0},
+         {"parameterNumber", GRIB_TYPE_LONG, 0},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 0},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 103},
+         {NULL, },
+      },
+      {&daily_average, &given_level},
+   },
+
+   {
+      "surface_air_dew_point_temperature_sfc",
+      30,
+      290,
+      270,
+      350,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+
+         {"paramId", GRIB_TYPE_LONG, 168},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 0},
+         {"parameterNumber", GRIB_TYPE_LONG, 6},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 103},
+         {NULL, },
+      },
+      {&point_in_time, &given_level},
+   },
+
+/* 
+   S2S/CAWCR: surface_air_dew_point_temperature_sfc.glob minimum value 32.4337 is not in [175,290]
+*/
+   {
+      "surface_air_dew_point_temperature_sfc.glob.s2",
+      30,
+      290,
+      270,
+      350,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"class", GRIB_TYPE_STRING, 0, "s2"},
+
+         {"paramId", GRIB_TYPE_LONG, 168},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 0},
+         {"parameterNumber", GRIB_TYPE_LONG, 6},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 0},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 103},
+         {NULL, },
+      },
+      {&daily_average, &given_level},
+   },
+/* 
+   S2S/CAWCR: skin_temperature_sfc.glob maximum value 309.28 is not in [310,355]
+s2s/kwbc/enfh: warning: s2s.z_s2s_c_rhmc_20150819000000_glob_prod_1464_000.sl.grib2, field 17 [skin_temperature_sfc.glob]: skin_temperature_sfc.glob minimum value 237.261 is not in [
+s2s/rums/enfo warning: s2s.z_s2s_c_rhmc_20150826000000_glob_prod_1392_003.sl.grib2, field 15 [skin_temperature_sfc.glob]: skin_temperature_sfc.glob minimum value 240.467 is not in [180,240]
+s2s/ammc/enfo warning: warning: s2s.skt_20150920_4.grib2, field 12 [skin_temperature_sfc.glob]: skin_temperature_sfc.glob minimum value 179.087 is not in [180,245]
+180,230]
+*/
+   {
+      "skin_temperature_sfc.glob.s2",
+      175,
+      245,
+      300,
+      355,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"class", GRIB_TYPE_STRING, 0, "s2"},
+
+         {"paramId", GRIB_TYPE_LONG, 235},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 0},
+         {"parameterNumber", GRIB_TYPE_LONG, 17},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 0},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {NULL, },
+      },
+      {&daily_average, &predefined_level},
+   },
+
+/* 
+   S2S/CAWCR: soil_moisture_top_20_cm_sfc.glob maximum value 150 is not in [450,800]
+warning: s2s.z_s2s_c_babj_20150817000000_glob_prod_cf_1440_000.sl.grib2, field 1641 [soil_moisture_top_20_cm_sfc.glob]: soil_moisture_top_20_cm_sfc.glob minimum value 59.5781 is not in [-1e-17,0]
+*/
+
+   {
+      "soil_moisture_top_20_cm_sfc.glob",
+      -1e-17,
+      70,
+      100,
+      1500,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+
+         {"paramId", GRIB_TYPE_LONG, 228086},
+
+         {"discipline", GRIB_TYPE_LONG, 2},
+         {"parameterCategory", GRIB_TYPE_LONG, 0},
+         {"parameterNumber", GRIB_TYPE_LONG, 22},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 0},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 106},
+         {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0},
+         {"scaledValueOfFirstFixedSurface", GRIB_TYPE_LONG, 0},
+
+         {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 106},
+         {"scaleFactorOfSecondFixedSurface", GRIB_TYPE_LONG, 1},
+         {"scaledValueOfSecondFixedSurface", GRIB_TYPE_LONG, 2},
+         {NULL, },
+      },
+/*    {&daily_average, &given_thickness, &has_bitmap},  todo bitmap?? */
+      {&daily_average, &given_thickness},
+   },
+
+/*
+warning: s2s.z_s2s_c_babj_20150901000000_glob_prod_pf_1440_002.sl.grib2, field 1621 [soil_moisture_top_100_cm_sfc.glob]: soil_moisture_top_100_cm_sfc.glob minimum value 60.1641 is not in [-1e-16,60]
+warning: s2s.z_s2s_c_babj_20150817000000_glob_prod_cf_1440_000.sl.grib2, field 1745 [soil_moisture_top_100_cm_sfc.glob]: soil_moisture_top_100_cm_sfc.glob maximum value 1382.83 is not in [450,800]
+warning: s2s.2015092100.prod.1104.10.pf.19980921.sl.48.grib2, field 220 [soil_moisture_top_100_cm_sfc.glob]: soil_moisture_top_100_cm_sfc.glob minimum value -1.07114e-16 is not in [-1e-16,60]
+s2s/rums warning: s2s.z_s2s_c_rhmc_20150819000000_glob_prod_1464_001.sl.grib2, field 17 [soil_moisture_top_100_cm_sfc.glob]: soil_moisture_top_100_cm_sfc.glob maximum value 413.812 is not in [450,1400]
+*/
+   {
+      "soil_moisture_top_100_cm_sfc.glob",
+      -1e-15,
+      70,
+      400,
+      1400,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+
+         {"paramId", GRIB_TYPE_LONG, 228087},
+
+         {"discipline", GRIB_TYPE_LONG, 2},
+         {"parameterCategory", GRIB_TYPE_LONG, 0},
+         {"parameterNumber", GRIB_TYPE_LONG, 22},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 0},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 106},
+         {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0},
+         {"scaledValueOfFirstFixedSurface", GRIB_TYPE_LONG, 0},
+
+         {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 106},
+         {"scaleFactorOfSecondFixedSurface", GRIB_TYPE_LONG, 1},
+         {"scaledValueOfSecondFixedSurface", GRIB_TYPE_LONG, 10},
+         {NULL, },
+      },
+/*    {&daily_average, &given_thickness, &has_bitmap},  todo bitmap?? */
+      {&daily_average, &given_thickness},
+   },
+/*
+s2s_devel/ecmf/enfh/rea: warning: s2s.2015011200.test.768.10.cf.20100112.sl.24.grib2, field 25 [soil_temperature_top_20_cm_sfc.glob]: soil_temperature_top_20_cm_sfc.glob minimum value 199.519 is not in [200,230]
+s2s_prod/ammc/enfo:warning: s2s.st20_20151004_4.grib2, field 61 [soil_temperature_top_20_cm_sfc.glob]: soil_temperature_top_20_cm_sfc.glob minimum value 231.081 is not in [180,230]
+*/
+   {
+      "soil_temperature_top_20_cm_sfc.glob",
+      180,
+      240,
+      300,
+      350,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+
+         {"paramId", GRIB_TYPE_LONG, 228095},
+
+         {"discipline", GRIB_TYPE_LONG, 2},
+         {"parameterCategory", GRIB_TYPE_LONG, 0},
+         {"parameterNumber", GRIB_TYPE_LONG, 2},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 0},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 106},
+         {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0},
+         {"scaledValueOfFirstFixedSurface", GRIB_TYPE_LONG, 0},
+
+         {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 106},
+         {"scaleFactorOfSecondFixedSurface", GRIB_TYPE_LONG, 1},
+         {"scaledValueOfSecondFixedSurface", GRIB_TYPE_LONG, 2},
+         {NULL, },
+      },
+      {&daily_average, &given_thickness},
+   },
+
+/*
+   s2s/rums warning: s2s.z_s2s_c_rhmc_20150819000000_glob_prod_0024_000.sl.grib2, field 26 [soil_temperature_top_20_cm_sfc.glob]: soil_temperature_top_20_cm_sfc.glob minimum value 0 is not in [180,230] xxx must be fiexed!!!
+   s2s/rums warning: warning: s2s.z_s2s_c_rhmc_20151021000000_glob_prod_0336_019.sl.grib2, field 24 [soil_temperature_top_20_cm_sfc.glob]: soil_temperature_top_20_cm_sfc.glob minimum value 238.514 is not in [0,230]
+*/
+   {
+      "soil_temperature_top_20_cm_sfc.glob.rums",
+      0,
+      250,
+      300,
+      350,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"centre", GRIB_TYPE_STRING, 1, "rums"},
+
+         {"paramId", GRIB_TYPE_LONG, 228095},
+
+         {"discipline", GRIB_TYPE_LONG, 2},
+         {"parameterCategory", GRIB_TYPE_LONG, 0},
+         {"parameterNumber", GRIB_TYPE_LONG, 2},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 0},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 106},
+         {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0},
+         {"scaledValueOfFirstFixedSurface", GRIB_TYPE_LONG, 0},
+
+         {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 106},
+         {"scaleFactorOfSecondFixedSurface", GRIB_TYPE_LONG, 1},
+         {"scaledValueOfSecondFixedSurface", GRIB_TYPE_LONG, 2},
+         {NULL, },
+      },
+      {&daily_average, &given_thickness},
+   },
+
+
+/* 
+   S2S/babj: warning: s2s.z_s2s_c_babj_20150908000000_glob_prod_cf_1440_000.sl.grib2, field 1816 [soil_temperature_top_100_cm_sfc.glob]: soil_temperature_top_100_cm_sfc.glob minimum value 199.941 is not in [200,240]
+*/
+   {
+      "soil_temperature_top_100_cm_sfc.glob",
+      190,
+      240,
+      300,
+      350,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+
+         {"paramId", GRIB_TYPE_LONG, 228096},
+
+         {"discipline", GRIB_TYPE_LONG, 2},
+         {"parameterCategory", GRIB_TYPE_LONG, 0},
+         {"parameterNumber", GRIB_TYPE_LONG, 2},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 0},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 106},
+         {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0},
+         {"scaledValueOfFirstFixedSurface", GRIB_TYPE_LONG, 0},
+
+         {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 106},
+         {"scaleFactorOfSecondFixedSurface", GRIB_TYPE_LONG, 1},
+         {"scaledValueOfSecondFixedSurface", GRIB_TYPE_LONG, 10},
+         {NULL, },
+      },
+      {&daily_average, &given_thickness},
+   },
+
+/* 
+   S2S/rums: warning: s2s.z_s2s_c_rhmc_20150819000000_glob_prod_0024_000.sl.grib2, field 25 [soil_temperature_top_100_cm_sfc.glob]: soil_temperature_top_100_cm_sfc.glob minimum value 0 is not in [200,240]  xxx must be fixed!!!
+   S2S/rums: warning: s2s.z_s2s_c_rhmc_20151021000000_glob_prod_0360_019.sl.grib2, field 23 [soil_temperature_top_100_cm_sfc.glob.s2.rums]: soil_temperature_top_100_cm_sfc.glob.s2.rums minimum value 240.084 is not in [0,240]
+*/
+   {
+      "soil_temperature_top_100_cm_sfc.glob.s2.rums",
+      0,
+      250,
+      300,
+      350,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"class", GRIB_TYPE_STRING, 0, "s2"},
+         {"centre", GRIB_TYPE_STRING, 1, "rums"},
+
+         {"paramId", GRIB_TYPE_LONG, 228096},
+
+         {"discipline", GRIB_TYPE_LONG, 2},
+         {"parameterCategory", GRIB_TYPE_LONG, 0},
+         {"parameterNumber", GRIB_TYPE_LONG, 2},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 0},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 106},
+         {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0},
+         {"scaledValueOfFirstFixedSurface", GRIB_TYPE_LONG, 0},
+
+         {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 106},
+         {"scaleFactorOfSecondFixedSurface", GRIB_TYPE_LONG, 1},
+         {"scaledValueOfSecondFixedSurface", GRIB_TYPE_LONG, 10},
+         {NULL, },
+      },
+      {&daily_average, &given_thickness},
+   },
+/* 
+   S2S/CAWCR: snow_depth_water_equivalent_sfc.glob maximum value 9066.25 is not in [10000,15000]
+warning: s2s.z_tigge_c_kwbc_19990817000000_ncep_prod_cf_sl_0024_000_0000_sd.grib2, field 19 [snow_depth_water_equivalent_sfc.glob]: snow_depth_water_equivalent_sfc.glob maximum value 219.94 is not in [9000,15000]
+  s2s/isac:warning: s2s.z_s2s_c_isac_201510190000_glob_prod_cf_0744_00.sl.grib2, field 25 [snow_depth_water_equivalent_sfc.glob]: snow_depth_water_equivalent_sfc.glob maximum value 118.824
+*/
+   {
+      "snow_depth_water_equivalent_sfc.glob.s2",
+      -4e-19,
+      0,
+      100,
+      15000,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"class", GRIB_TYPE_STRING, 0, "s2"},
+
+         {"paramId", GRIB_TYPE_LONG, 228141},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 0},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 1},
+         {"parameterNumber", GRIB_TYPE_LONG, 60},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {NULL, },
+      },
+      {&daily_average, &predefined_level},
+   },
+
+ /*
+warning: s2s.z_tigge_c_kwbc_20150817000000_ncep_prod_cf_sl_0024_000_0000_tcc.grib2, field 2 [total_cloud_cover_sfc.glob]: total_cloud_cover_sfc.glob maximum value 100.716 is not in [99.99,100.01]
+warning: s2s.z_s2s_c_babj_20150817000000_glob_prod_cf_1440_000.sl.grib2, field 2582 [total_cloud_cover_sfc.glob]: total_cloud_cover_sfc.glob maximum value 94.4214 is not in [99.99,100.01]
+warning: s2s.z_tigge_c_kwbc_20150817000000_ncep_prod_pf_sl_0024_009_0000_tcc.grib2, field 1 [total_cloud_cover_sfc.glob]: total_cloud_cover_sfc.glob maximum value 100.503 is not in [90,100.1]
+s2s/lfpw: warning: s2s.lfpw_tcc_0.grib2, field 60 [total_cloud_cover_sfc.glob]: total_cloud_cover_sfc.glob minimum value -0.0300206 is not in [0,5]
+ */
+   {
+      "total_cloud_cover_sfc.glob.s2",
+      -0.1,
+      5,
+      90.,
+      101.,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"class", GRIB_TYPE_STRING, 0, "s2"},
+
+         {"paramId", GRIB_TYPE_LONG, 228164},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 0},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 6},
+         {"parameterNumber", GRIB_TYPE_LONG, 1},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 8},
+         {NULL, },
+      },
+      {&daily_average, &predefined_thickness},
+   },
+
+ /*
+s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: total_cloud_cover_sfc.glob maximum value 128 is not in [90,101]
+ */
+   {
+      "total_cloud_cover_sfc.glob.s2.ammc",
+      -0.1,
+      5,
+      90.,
+      150.,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"class", GRIB_TYPE_STRING, 0, "s2"},
+         {"centre", GRIB_TYPE_STRING, 1, "ammc"},
+
+         {"paramId", GRIB_TYPE_LONG, 228164},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 0},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 6},
+         {"parameterNumber", GRIB_TYPE_LONG, 1},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 8},
+         {NULL, },
+      },
+      {&daily_average, &predefined_thickness},
+   },
+
+/*
+   s2s/lfpw warning: s2s.lfpw_tcc_0.grib2, field 1 [total_cloud_cover_sfc.glob]: total_cloud_cover_sfc.glob maximum value 75 is not in [90,101] xxx should be fixed by provider!!
+*/
+
+   {
+      "total_cloud_cover_sfc.glob.s2.lfpw",
+      -0.1,
+      5,
+      70.,
+      101.,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"class", GRIB_TYPE_STRING, 0, "s2"},
+         {"centre", GRIB_TYPE_STRING, 1, "lfpw"},
+         {"step", GRIB_TYPE_STRING, 1, "0-24"},
+
+         {"paramId", GRIB_TYPE_LONG, 228164},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 0},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 6},
+         {"parameterNumber", GRIB_TYPE_LONG, 1},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 8},
+         {NULL, },
+      },
+      {&daily_average, &predefined_thickness},
+   },
+
+   {
+      "convective_precipitation_sfc.glob",
+      -0.05,
+      0.1,
+      0.,
+      100.,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+
+         {"paramId", GRIB_TYPE_LONG, 228143},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 1},
+         {"parameterNumber", GRIB_TYPE_LONG, 37},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 1},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {NULL, },
+      },
+      {&from_start, &predefined_level},
+   },
+
+   {
+      "sea_ice_cover_sfc.glob.s2",
+      -1.5e+6,
+       1.5e+6,
+      -1.5e+6,
+       1.5e+6,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"class", GRIB_TYPE_STRING, 0, "s2"},
+
+         {"paramId", GRIB_TYPE_LONG, 31},
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 0},
+
+         {"discipline", GRIB_TYPE_LONG, 10},
+         {"parameterCategory", GRIB_TYPE_LONG, 2},
+         {"parameterNumber", GRIB_TYPE_LONG, 0},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {NULL, },
+      },
+      {&daily_average, &predefined_level},
+   },
+
+   {
+      "snow_density_sfc.glob.s2",
+      -1.5e+6,
+       1.5e+6,
+      -1.5e+6,
+       1.5e+6,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"class", GRIB_TYPE_STRING, 0, "s2"},
+
+         {"paramId", GRIB_TYPE_LONG, 33},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 0},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 1},
+         {"parameterNumber", GRIB_TYPE_LONG, 61},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {NULL, },
+      },
+      {&daily_average, &predefined_level},
+   },
+
+   {
+      "sea_surface_temperature_sfc.glob.s2",
+      -1.5e+6,
+       1.5e+6,
+      -1.5e+6,
+       1.5e+6,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"class", GRIB_TYPE_STRING, 0, "s2"},
+
+         {"paramId", GRIB_TYPE_LONG, 34},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 0},
+
+         {"discipline", GRIB_TYPE_LONG, 10},
+         {"parameterCategory", GRIB_TYPE_LONG, 3},
+         {"parameterNumber", GRIB_TYPE_LONG, 0},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {NULL, },
+      },
+      {&daily_average, &predefined_level},
+   },
+
+   {
+      "snow_albedo_sfc.glob",
+      -1.5e+6,
+       1.5e+6,
+      -1.5e+6,
+       1.5e+6,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+
+         {"paramId", GRIB_TYPE_LONG, 228032},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 0},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 19},
+         {"parameterNumber", GRIB_TYPE_LONG, 19},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {NULL, },
+      },
+      {&daily_average, &predefined_level},
+   },
+
+};
+
diff --git a/tigge/tigge_name.c b/tigge/tigge_name.c
index 8adbfe4..891cf21 100755
--- a/tigge/tigge_name.c
+++ b/tigge/tigge_name.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tigge/tigge_split.c b/tigge/tigge_split.c
index 6343a07..60f95cb 100755
--- a/tigge/tigge_split.c
+++ b/tigge/tigge_split.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/.deps/all_keys.Po b/tools/.deps/all_keys.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/all_keys.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/big2gribex.Po b/tools/.deps/big2gribex.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/big2gribex.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/bufr_compare.Po b/tools/.deps/bufr_compare.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/bufr_compare.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/bufr_copy.Po b/tools/.deps/bufr_copy.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/bufr_copy.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/bufr_dump.Po b/tools/.deps/bufr_dump.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/bufr_dump.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/bufr_filter.Po b/tools/.deps/bufr_filter.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/bufr_filter.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/bufr_get.Po b/tools/.deps/bufr_get.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/bufr_get.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/bufr_index_build.Po b/tools/.deps/bufr_index_build.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/bufr_index_build.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/bufr_ls.Po b/tools/.deps/bufr_ls.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/bufr_ls.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/bufr_set.Po b/tools/.deps/bufr_set.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/bufr_set.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/codes_count.Po b/tools/.deps/codes_count.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/codes_count.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/codes_info.Po b/tools/.deps/codes_info.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/codes_info.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/gaussian.Po b/tools/.deps/gaussian.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/gaussian.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/gg_sub_area_check.Po b/tools/.deps/gg_sub_area_check.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/gg_sub_area_check.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/grib2ppm.Po b/tools/.deps/grib2ppm.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/grib2ppm.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/grib_compare.Po b/tools/.deps/grib_compare.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/grib_compare.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/grib_copy.Po b/tools/.deps/grib_copy.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/grib_copy.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/grib_diff.Po b/tools/.deps/grib_diff.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/grib_diff.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/grib_dump.Po b/tools/.deps/grib_dump.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/grib_dump.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/grib_filter.Po b/tools/.deps/grib_filter.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/grib_filter.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/grib_get.Po b/tools/.deps/grib_get.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/grib_get.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/grib_get_data.Po b/tools/.deps/grib_get_data.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/grib_get_data.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/grib_histogram.Po b/tools/.deps/grib_histogram.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/grib_histogram.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/grib_index_build.Po b/tools/.deps/grib_index_build.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/grib_index_build.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/grib_ls.Po b/tools/.deps/grib_ls.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/grib_ls.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/grib_merge.Po b/tools/.deps/grib_merge.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/grib_merge.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/grib_options.Plo b/tools/.deps/grib_options.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/grib_options.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/grib_repair.Po b/tools/.deps/grib_repair.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/grib_repair.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/grib_set.Po b/tools/.deps/grib_set.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/grib_set.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/grib_to_json.Po b/tools/.deps/grib_to_json.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/grib_to_json.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/grib_to_netcdf.Po b/tools/.deps/grib_to_netcdf.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/grib_to_netcdf.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/grib_tools.Plo b/tools/.deps/grib_tools.Plo
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/grib_tools.Plo
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/gts_copy.Po b/tools/.deps/gts_copy.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/gts_copy.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/gts_dump.Po b/tools/.deps/gts_dump.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/gts_dump.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/gts_filter.Po b/tools/.deps/gts_filter.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/gts_filter.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/gts_ls.Po b/tools/.deps/gts_ls.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/gts_ls.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/list_keys.Po b/tools/.deps/list_keys.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/list_keys.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/mars_request.Po b/tools/.deps/mars_request.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/mars_request.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/parser.Po b/tools/.deps/parser.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/parser.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/.deps/xref.Po b/tools/.deps/xref.Po
deleted file mode 100644
index 9ce06a8..0000000
--- a/tools/.deps/xref.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
index 38936a8..4aa0ed1 100644
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
@@ -10,17 +10,19 @@ list( APPEND grib_tools_bins
              codes_info codes_count
              grib_histogram grib_filter grib_ls grib_dump grib_merge
              grib2ppm grib_set grib_get grib_get_data grib_copy
-             grib_compare parser grib_index_build
+             grib_compare codes_parser grib_index_build
              bufr_filter bufr_ls bufr_dump bufr_set bufr_get
              bufr_copy bufr_compare bufr_index_build
              gts_copy gts_dump gts_filter gts_ls
+             metar_dump metar_ls
              )
 
-list( APPEND grib_tools_bins_ECMWF_ONLY
+list( APPEND grib_tools_bins_EXTRA
              big2gribex
              gg_sub_area_check
              grib_repair
              grib_to_json
+             grib_check_gaussian_grid
              )
 
 # Install generic tools
@@ -31,17 +33,16 @@ foreach( tool ${grib_tools_bins} )
                             LIBS       grib_tools )
 endforeach()
 
-# Install tools specific to ECMWF
-# User must run cmake with -DECCODES_INSTALL_ECMWF_TOOLS
-########################################
-foreach( tool ${grib_tools_bins_ECMWF_ONLY} )
+# Install extra tools
+# User must run cmake with -DECCODES_INSTALL_EXTRA_TOOLS=ON
+foreach( tool ${grib_tools_bins_EXTRA} )
     ecbuild_add_executable( TARGET     ${tool}
                             SOURCES    ${tool}.c
-                            CONDITION  ECCODES_INSTALL_ECMWF_TOOLS
+                            CONDITION  ECCODES_INSTALL_EXTRA_TOOLS
                             LIBS       grib_tools )
 endforeach()
 
-# Count tools. Same source code, different executable names
+# grib_count/bufr_count tools. Same source code, different executable names
 ecbuild_add_executable( TARGET     grib_count
                         SOURCES    codes_count.c
                         LIBS       grib_tools  )
@@ -55,14 +56,15 @@ ecbuild_add_executable( TARGET     grib_to_netcdf
                         INCLUDES   ${NETCDF_INCLUDE_DIRS}
                         CONDITION  HAVE_NETCDF
                         LIBS       grib_tools ${NETCDF_LIBRARIES})
-# grib_list_keys
+
+
 ecbuild_add_executable( TARGET     grib_list_keys
                         SOURCES    list_keys.c
-                        CONDITION  ECCODES_INSTALL_ECMWF_TOOLS
+                        CONDITION  ECCODES_INSTALL_EXTRA_TOOLS
                         LIBS       grib_tools  )
 
 # grib1to2 script needs to be generated before installation
-if (ECCODES_INSTALL_ECMWF_TOOLS)
+if (ECCODES_INSTALL_EXTRA_TOOLS)
     configure_file( grib1to2.in  grib1to2 )
     install( FILES ${CMAKE_CURRENT_BINARY_DIR}/grib1to2
              DESTINATION ${INSTALL_BIN_DIR}
diff --git a/tools/Makefile b/tools/Makefile
deleted file mode 100644
index 99a46d3..0000000
--- a/tools/Makefile
+++ /dev/null
@@ -1,1302 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# tools/Makefile.  Generated from Makefile.in by configure.
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-
-
-
-
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/eccodes
-pkgincludedir = $(includedir)/eccodes
-pkglibdir = $(libdir)/eccodes
-pkglibexecdir = $(libexecdir)/eccodes
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = x86_64-suse-linux-gnu
-host_triplet = x86_64-suse-linux-gnu
-bin_PROGRAMS = grib_histogram$(EXEEXT) big2gribex$(EXEEXT) \
-	codes_info$(EXEEXT) codes_count$(EXEEXT) grib_filter$(EXEEXT) \
-	grib_ls$(EXEEXT) grib_dump$(EXEEXT) grib_merge$(EXEEXT) \
-	grib2ppm$(EXEEXT) grib_set$(EXEEXT) grib_get$(EXEEXT) \
-	grib_get_data$(EXEEXT) grib_copy$(EXEEXT) grib_repair$(EXEEXT) \
-	grib_compare$(EXEEXT) grib_list_keys$(EXEEXT) parser$(EXEEXT) \
-	grib_count$(EXEEXT) grib_index_build$(EXEEXT) \
-	grib1to2$(EXEEXT) gg_sub_area_check$(EXEEXT) \
-	grib_to_netcdf$(EXEEXT) grib_to_json$(EXEEXT) \
-	bufr_count$(EXEEXT) bufr_filter$(EXEEXT) bufr_ls$(EXEEXT) \
-	bufr_dump$(EXEEXT) bufr_set$(EXEEXT) bufr_get$(EXEEXT) \
-	bufr_copy$(EXEEXT) bufr_compare$(EXEEXT) \
-	bufr_index_build$(EXEEXT) gts_copy$(EXEEXT) gts_dump$(EXEEXT) \
-	gts_filter$(EXEEXT) gts_ls$(EXEEXT)
-noinst_PROGRAMS = gaussian$(EXEEXT) grib_diff$(EXEEXT) \
-	mars_request$(EXEEXT) xref$(EXEEXT) all_keys$(EXEEXT)
-subdir = tools
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(dist_bin_SCRIPTS) $(top_srcdir)/config/depcomp \
-	$(noinst_HEADERS)
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-libgrib_tools_la_LIBADD =
-am_libgrib_tools_la_OBJECTS = grib_tools.lo grib_options.lo
-libgrib_tools_la_OBJECTS = $(am_libgrib_tools_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"
-PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
-am_all_keys_OBJECTS = all_keys.$(OBJEXT)
-all_keys_OBJECTS = $(am_all_keys_OBJECTS)
-all_keys_LDADD = $(LDADD)
-all_keys_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_big2gribex_OBJECTS = big2gribex.$(OBJEXT)
-big2gribex_OBJECTS = $(am_big2gribex_OBJECTS)
-big2gribex_LDADD = $(LDADD)
-big2gribex_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_bufr_compare_OBJECTS = bufr_compare.$(OBJEXT)
-bufr_compare_OBJECTS = $(am_bufr_compare_OBJECTS)
-bufr_compare_LDADD = $(LDADD)
-bufr_compare_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_bufr_copy_OBJECTS = bufr_copy.$(OBJEXT)
-bufr_copy_OBJECTS = $(am_bufr_copy_OBJECTS)
-bufr_copy_LDADD = $(LDADD)
-bufr_copy_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_bufr_count_OBJECTS = codes_count.$(OBJEXT)
-bufr_count_OBJECTS = $(am_bufr_count_OBJECTS)
-bufr_count_LDADD = $(LDADD)
-bufr_count_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_bufr_dump_OBJECTS = bufr_dump.$(OBJEXT)
-bufr_dump_OBJECTS = $(am_bufr_dump_OBJECTS)
-bufr_dump_LDADD = $(LDADD)
-bufr_dump_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_bufr_filter_OBJECTS = bufr_filter.$(OBJEXT)
-bufr_filter_OBJECTS = $(am_bufr_filter_OBJECTS)
-bufr_filter_LDADD = $(LDADD)
-bufr_filter_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_bufr_get_OBJECTS = bufr_get.$(OBJEXT)
-bufr_get_OBJECTS = $(am_bufr_get_OBJECTS)
-bufr_get_LDADD = $(LDADD)
-bufr_get_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_bufr_index_build_OBJECTS = bufr_index_build.$(OBJEXT)
-bufr_index_build_OBJECTS = $(am_bufr_index_build_OBJECTS)
-bufr_index_build_LDADD = $(LDADD)
-bufr_index_build_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_bufr_ls_OBJECTS = bufr_ls.$(OBJEXT)
-bufr_ls_OBJECTS = $(am_bufr_ls_OBJECTS)
-bufr_ls_LDADD = $(LDADD)
-bufr_ls_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_bufr_set_OBJECTS = bufr_set.$(OBJEXT)
-bufr_set_OBJECTS = $(am_bufr_set_OBJECTS)
-bufr_set_LDADD = $(LDADD)
-bufr_set_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_codes_count_OBJECTS = codes_count.$(OBJEXT)
-codes_count_OBJECTS = $(am_codes_count_OBJECTS)
-codes_count_LDADD = $(LDADD)
-codes_count_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_codes_info_OBJECTS = codes_info.$(OBJEXT)
-codes_info_OBJECTS = $(am_codes_info_OBJECTS)
-codes_info_LDADD = $(LDADD)
-codes_info_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_gaussian_OBJECTS = gaussian.$(OBJEXT)
-gaussian_OBJECTS = $(am_gaussian_OBJECTS)
-gaussian_LDADD = $(LDADD)
-gaussian_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_gg_sub_area_check_OBJECTS = gg_sub_area_check.$(OBJEXT)
-gg_sub_area_check_OBJECTS = $(am_gg_sub_area_check_OBJECTS)
-gg_sub_area_check_LDADD = $(LDADD)
-gg_sub_area_check_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib1to2_OBJECTS =
-grib1to2_OBJECTS = $(am_grib1to2_OBJECTS)
-grib1to2_LDADD = $(LDADD)
-grib1to2_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib2ppm_OBJECTS = grib2ppm.$(OBJEXT)
-grib2ppm_OBJECTS = $(am_grib2ppm_OBJECTS)
-grib2ppm_LDADD = $(LDADD)
-grib2ppm_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_compare_OBJECTS = grib_compare.$(OBJEXT)
-grib_compare_OBJECTS = $(am_grib_compare_OBJECTS)
-grib_compare_LDADD = $(LDADD)
-grib_compare_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_copy_OBJECTS = grib_copy.$(OBJEXT)
-grib_copy_OBJECTS = $(am_grib_copy_OBJECTS)
-grib_copy_LDADD = $(LDADD)
-grib_copy_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_count_OBJECTS = codes_count.$(OBJEXT)
-grib_count_OBJECTS = $(am_grib_count_OBJECTS)
-grib_count_LDADD = $(LDADD)
-grib_count_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_diff_OBJECTS = grib_diff.$(OBJEXT)
-grib_diff_OBJECTS = $(am_grib_diff_OBJECTS)
-grib_diff_LDADD = $(LDADD)
-grib_diff_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_dump_OBJECTS = grib_dump.$(OBJEXT)
-grib_dump_OBJECTS = $(am_grib_dump_OBJECTS)
-grib_dump_LDADD = $(LDADD)
-grib_dump_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_filter_OBJECTS = grib_filter.$(OBJEXT)
-grib_filter_OBJECTS = $(am_grib_filter_OBJECTS)
-grib_filter_LDADD = $(LDADD)
-grib_filter_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_get_OBJECTS = grib_get.$(OBJEXT)
-grib_get_OBJECTS = $(am_grib_get_OBJECTS)
-grib_get_LDADD = $(LDADD)
-grib_get_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_get_data_OBJECTS = grib_get_data.$(OBJEXT)
-grib_get_data_OBJECTS = $(am_grib_get_data_OBJECTS)
-grib_get_data_LDADD = $(LDADD)
-grib_get_data_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_histogram_OBJECTS = grib_histogram.$(OBJEXT)
-grib_histogram_OBJECTS = $(am_grib_histogram_OBJECTS)
-grib_histogram_LDADD = $(LDADD)
-grib_histogram_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_index_build_OBJECTS = grib_index_build.$(OBJEXT)
-grib_index_build_OBJECTS = $(am_grib_index_build_OBJECTS)
-grib_index_build_LDADD = $(LDADD)
-grib_index_build_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_list_keys_OBJECTS = list_keys.$(OBJEXT)
-grib_list_keys_OBJECTS = $(am_grib_list_keys_OBJECTS)
-grib_list_keys_LDADD = $(LDADD)
-grib_list_keys_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_ls_OBJECTS = grib_ls.$(OBJEXT)
-grib_ls_OBJECTS = $(am_grib_ls_OBJECTS)
-grib_ls_LDADD = $(LDADD)
-grib_ls_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_merge_OBJECTS = grib_merge.$(OBJEXT)
-grib_merge_OBJECTS = $(am_grib_merge_OBJECTS)
-grib_merge_LDADD = $(LDADD)
-grib_merge_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_repair_OBJECTS = grib_repair.$(OBJEXT)
-grib_repair_OBJECTS = $(am_grib_repair_OBJECTS)
-grib_repair_LDADD = $(LDADD)
-grib_repair_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_set_OBJECTS = grib_set.$(OBJEXT)
-grib_set_OBJECTS = $(am_grib_set_OBJECTS)
-grib_set_LDADD = $(LDADD)
-grib_set_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_to_json_OBJECTS = grib_to_json.$(OBJEXT)
-grib_to_json_OBJECTS = $(am_grib_to_json_OBJECTS)
-grib_to_json_LDADD = $(LDADD)
-grib_to_json_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_to_netcdf_OBJECTS = grib_to_netcdf.$(OBJEXT)
-grib_to_netcdf_OBJECTS = $(am_grib_to_netcdf_OBJECTS)
-am__DEPENDENCIES_1 =
-grib_to_netcdf_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_1)
-am_gts_copy_OBJECTS = gts_copy.$(OBJEXT)
-gts_copy_OBJECTS = $(am_gts_copy_OBJECTS)
-gts_copy_LDADD = $(LDADD)
-gts_copy_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_gts_dump_OBJECTS = gts_dump.$(OBJEXT)
-gts_dump_OBJECTS = $(am_gts_dump_OBJECTS)
-gts_dump_LDADD = $(LDADD)
-gts_dump_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_gts_filter_OBJECTS = gts_filter.$(OBJEXT)
-gts_filter_OBJECTS = $(am_gts_filter_OBJECTS)
-gts_filter_LDADD = $(LDADD)
-gts_filter_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_gts_ls_OBJECTS = gts_ls.$(OBJEXT)
-gts_ls_OBJECTS = $(am_gts_ls_OBJECTS)
-gts_ls_LDADD = $(LDADD)
-gts_ls_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_mars_request_OBJECTS = mars_request.$(OBJEXT)
-mars_request_OBJECTS = $(am_mars_request_OBJECTS)
-mars_request_LDADD = $(LDADD)
-mars_request_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_parser_OBJECTS = parser.$(OBJEXT)
-parser_OBJECTS = $(am_parser_OBJECTS)
-parser_LDADD = $(LDADD)
-parser_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_xref_OBJECTS = xref.$(OBJEXT)
-xref_OBJECTS = $(am_xref_OBJECTS)
-xref_LDADD = $(LDADD)
-xref_DEPENDENCIES = libgrib_tools.la $(top_builddir)/src/libeccodes.la
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-SCRIPTS = $(dist_bin_SCRIPTS)
-AM_V_P = $(am__v_P_$(V))
-am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = $(libgrib_tools_la_SOURCES) $(all_keys_SOURCES) \
-	$(big2gribex_SOURCES) $(bufr_compare_SOURCES) \
-	$(bufr_copy_SOURCES) $(bufr_count_SOURCES) \
-	$(bufr_dump_SOURCES) $(bufr_filter_SOURCES) \
-	$(bufr_get_SOURCES) $(bufr_index_build_SOURCES) \
-	$(bufr_ls_SOURCES) $(bufr_set_SOURCES) $(codes_count_SOURCES) \
-	$(codes_info_SOURCES) $(gaussian_SOURCES) \
-	$(gg_sub_area_check_SOURCES) $(grib1to2_SOURCES) \
-	$(grib2ppm_SOURCES) $(grib_compare_SOURCES) \
-	$(grib_copy_SOURCES) $(grib_count_SOURCES) \
-	$(grib_diff_SOURCES) $(grib_dump_SOURCES) \
-	$(grib_filter_SOURCES) $(grib_get_SOURCES) \
-	$(grib_get_data_SOURCES) $(grib_histogram_SOURCES) \
-	$(grib_index_build_SOURCES) $(grib_list_keys_SOURCES) \
-	$(grib_ls_SOURCES) $(grib_merge_SOURCES) \
-	$(grib_repair_SOURCES) $(grib_set_SOURCES) \
-	$(grib_to_json_SOURCES) $(grib_to_netcdf_SOURCES) \
-	$(gts_copy_SOURCES) $(gts_dump_SOURCES) $(gts_filter_SOURCES) \
-	$(gts_ls_SOURCES) $(mars_request_SOURCES) $(parser_SOURCES) \
-	$(xref_SOURCES)
-DIST_SOURCES = $(libgrib_tools_la_SOURCES) $(all_keys_SOURCES) \
-	$(big2gribex_SOURCES) $(bufr_compare_SOURCES) \
-	$(bufr_copy_SOURCES) $(bufr_count_SOURCES) \
-	$(bufr_dump_SOURCES) $(bufr_filter_SOURCES) \
-	$(bufr_get_SOURCES) $(bufr_index_build_SOURCES) \
-	$(bufr_ls_SOURCES) $(bufr_set_SOURCES) $(codes_count_SOURCES) \
-	$(codes_info_SOURCES) $(gaussian_SOURCES) \
-	$(gg_sub_area_check_SOURCES) $(grib1to2_SOURCES) \
-	$(grib2ppm_SOURCES) $(grib_compare_SOURCES) \
-	$(grib_copy_SOURCES) $(grib_count_SOURCES) \
-	$(grib_diff_SOURCES) $(grib_dump_SOURCES) \
-	$(grib_filter_SOURCES) $(grib_get_SOURCES) \
-	$(grib_get_data_SOURCES) $(grib_histogram_SOURCES) \
-	$(grib_index_build_SOURCES) $(grib_list_keys_SOURCES) \
-	$(grib_ls_SOURCES) $(grib_merge_SOURCES) \
-	$(grib_repair_SOURCES) $(grib_set_SOURCES) \
-	$(grib_to_json_SOURCES) $(grib_to_netcdf_SOURCES) \
-	$(gts_copy_SOURCES) $(gts_dump_SOURCES) $(gts_filter_SOURCES) \
-	$(gts_ls_SOURCES) $(mars_request_SOURCES) $(parser_SOURCES) \
-	$(xref_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-HEADERS = $(noinst_HEADERS)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing aclocal-1.13
-AEC_DIR = 
-AMTAR = $${TAR-tar}
-AM_DEFAULT_VERBOSITY = 1
-AR = ar
-AUTOCONF = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoconf
-AUTOHEADER = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing autoheader
-AUTOMAKE = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing automake-1.13
-AWK = gawk
-CC = gcc
-CCDEPMODE = depmode=gcc3
-CCSDS_TEST = 
-CFLAGS = -g -O2
-CPP = gcc -E
-CPPFLAGS = 
-CYGPATH_W = echo
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DEVEL_RULES = dummy.am
-DLLTOOL = false
-DSYMUTIL = 
-DUMPBIN = 
-ECCODES_AGE = 0
-ECCODES_CURRENT = 1
-ECCODES_DEFINITION_PATH = ${datarootdir}/eccodes/definitions
-ECCODES_MAIN_VERSION = 0.10.0
-ECCODES_MAJOR_VERSION = 0
-ECCODES_MINOR_VERSION = 10
-ECCODES_PATCH_VERSION = 0
-ECCODES_REVISION = 0
-ECCODES_SAMPLES_PATH = ${datarootdir}/eccodes/samples
-ECCODES_VERSION_STR = 0.10.0
-ECHO_C = 
-ECHO_N = -n
-ECHO_T = 
-EGREP = /usr/bin/grep -E
-EMOS_LIB = 
-EXEEXT = 
-F77 = gfortran
-F90_CHECK = examples/F90
-F90_MODULE_FLAG = -I
-FC = gfortran
-FCFLAGS = -g -O2
-FFLAGS = -g -O2
-FGREP = /usr/bin/grep -F
-FORTRAN_MOD = fortran
-GREP = /usr/bin/grep
-GRIB_API_INC = /tmp/masn/git/grib_api/eccodes/src
-GRIB_API_LIB = /tmp/masn/git/grib_api/eccodes/src/grib_api.a
-GRIB_DEVEL = 0
-IFS_SAMPLES_DIR = ${datarootdir}/eccodes/ifs_samples
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-JASPER_DIR = system
-JPEG_TEST = jpeg.sh
-LD = /usr/x86_64-suse-linux/bin/ld -m elf_x86_64
-LDFLAGS = 
-LEX = flex
-LEXLIB = -lfl
-LEX_OUTPUT_ROOT = lex.yy
-LIBOBJS = 
-LIBS = -lm -ljasper 
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LIBTOOL_DEPS = config/ltmain.sh
-LIB_AEC = 
-LIB_JASPER = -ljasper
-LIB_OPENJPEG = 
-LIB_PNG = 
-LINUX_DISTRIBUTION_NAME = openSUSE 13.1 (x86_64)
-LINUX_DISTRIBUTION_VERSION = 
-LIPO = 
-LN_S = ln -s
-LTLIBOBJS = 
-MAKEINFO = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/missing makeinfo
-MANIFEST_TOOL = :
-MKDIR_P = /usr/bin/mkdir -p
-NETCDF_LDFLAGS = 
-NM = /usr/bin/nm -B
-NMEDIT = 
-NUMPY_INCLUDE = /usr/local/apps/python/2.7.8-01/lib/python2.7/site-packages/numpy/core/include
-OBJDUMP = objdump
-OBJEXT = o
-OPENJPEG_DIR = system
-OTOOL = 
-OTOOL64 = 
-PACKAGE = eccodes
-PACKAGE_BUGREPORT = Software.Support at ecmwf.int
-PACKAGE_NAME = eccodes
-PACKAGE_STRING = eccodes  
-PACKAGE_TARNAME = eccodes
-PACKAGE_URL = 
-PACKAGE_VERSION = 0.10.0
-PATH_SEPARATOR = :
-PERL = 
-PERLDIR = perl
-PERL_INSTALL_OPTIONS = LIB=NONE/perl
-PERL_MAKE_OPTIONS = 
-PYTHON = /usr/local/apps/python/2.7.8-01/bin/python
-PYTHON_CFLAGS = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7 -fno-strict-aliasing -O3 -fpic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
-PYTHON_CHECK = examples/python
-PYTHON_CONFIG = /usr/local/apps/python/2.7.8-01/bin/python2.7-config
-PYTHON_DATA_HANDLER = numpy
-PYTHON_EXEC_PREFIX = ${exec_prefix}
-PYTHON_INCLUDES = -I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7
-PYTHON_LDFLAGS = -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic
-PYTHON_LIBS = -lpthread -ldl -lutil -lm -lpython2.7
-PYTHON_PLATFORM = linux2
-PYTHON_PREFIX = ${prefix}
-PYTHON_VERSION = 2.7
-RANLIB = ranlib
-RM = rm -f
-RPM_CONFIGURE_ARGS =  '--enable-python' '--disable-shared' 'CC=gcc' 'F77=gfortran' 'FC=gfortran'
-RPM_HOST_CPU = x86_64
-RPM_HOST_OS = linux-gnu
-RPM_HOST_VENDOR = suse
-RPM_RELEASE = 1
-SED = /usr/bin/sed
-SET_MAKE = 
-SHELL = /bin/sh
-STRIP = strip
-VERSION = 0.10.0
-WARN_PEDANTIC = -pedantic -Wall
-WERROR = 
-YACC = bison -y
-YFLAGS = 
-abs_builddir = /tmp/masn/git/grib_api/eccodes/tools
-abs_srcdir = /tmp/masn/git/grib_api/eccodes/tools
-abs_top_builddir = /tmp/masn/git/grib_api/eccodes
-abs_top_srcdir = /tmp/masn/git/grib_api/eccodes
-ac_ct_AR = ar
-ac_ct_CC = gcc
-ac_ct_DUMPBIN = 
-ac_ct_F77 = 
-ac_ct_FC = 
-am__include = include
-am__leading_dot = .
-am__quote = 
-am__tar = $${TAR-tar} chof - "$$tardir"
-am__untar = $${TAR-tar} xf -
-bindir = ${exec_prefix}/bin
-build = x86_64-suse-linux-gnu
-build_alias = 
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = suse
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-host = x86_64-suse-linux-gnu
-host_alias = 
-host_cpu = x86_64
-host_os = linux-gnu
-host_vendor = suse
-htmldir = ${docdir}
-includedir = ${prefix}/include
-infodir = ${datarootdir}/info
-install_sh = ${SHELL} /tmp/masn/git/grib_api/eccodes/config/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localedir = ${datarootdir}/locale
-localstatedir = ${prefix}/var
-mandir = ${datarootdir}/man
-mkdir_p = $(MKDIR_P)
-oldincludedir = /usr/include
-pdfdir = ${docdir}
-pkgpyexecdir = ${pyexecdir}/eccodes
-pkgpythondir = ${pythondir}/eccodes
-prefix = /usr/local
-program_transform_name = s,x,x,
-psdir = ${docdir}
-pyexecdir = ${exec_prefix}/lib/python2.7/site-packages
-pythondir = ${prefix}/lib/python2.7/site-packages
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-srcdir = .
-sysconfdir = ${prefix}/etc
-target_alias = 
-top_build_prefix = ../
-top_builddir = ..
-top_srcdir = ..
-AM_CFLAGS = -pedantic -Wall  -DYYDEBUG
-AM_CPPFLAGS = -DECCODES_SAMPLES_PATH=\"$(ECCODES_SAMPLES_PATH)\" \
-	-DECCODES_DEFINITION_PATH=\"$(ECCODES_DEFINITION_PATH)\"
-
-AM_YFLAGS = -d
-noinst_LTLIBRARIES = libgrib_tools.la
-libgrib_tools_la_SOURCES = grib_tools.c \
-                        grib_options.c
-
-dist_bin_SCRIPTS = bufr_compare_dir
-
-#test_SOURCES   =  test.c
-
-#dumpload_SOURCES   =  dumpload.c loady.y loadl.l load.c dump.c load.h
-grib_merge_SOURCES = grib_merge.c
-grib_to_netcdf_SOURCES = grib_to_netcdf.c
-grib_to_json_SOURCES = grib_to_json.c
-grib_dump_SOURCES = grib_dump.c
-grib_count_SOURCES = codes_count.c
-bufr_count_SOURCES = codes_count.c
-codes_count_SOURCES = codes_count.c
-grib_histogram_SOURCES = grib_histogram.c
-parser_SOURCES = parser.c
-grib_list_keys_SOURCES = list_keys.c
-all_keys_SOURCES = all_keys.c
-grib2ppm_SOURCES = grib2ppm.c
-codes_info_SOURCES = codes_info.c
-grib_ls_SOURCES = grib_ls.c
-grib_copy_SOURCES = grib_copy.c
-grib_repair_SOURCES = grib_repair.c
-grib_filter_SOURCES = grib_filter.c
-grib_set_SOURCES = grib_set.c
-grib_index_build_SOURCES = grib_index_build.c
-grib_get_SOURCES = grib_get.c
-grib_get_data_SOURCES = grib_get_data.c
-grib_diff_SOURCES = grib_diff.c
-grib_compare_SOURCES = grib_compare.c 
-big2gribex_SOURCES = big2gribex.c
-mars_request_SOURCES = mars_request.c
-xref_SOURCES = xref.c
-#compile_SOURCES              =  compile.c
-gaussian_SOURCES = gaussian.c
-gg_sub_area_check_SOURCES = gg_sub_area_check.c
-grib1to2_SOURCES = grib1to2.in
-bufr_filter_SOURCES = bufr_filter.c
-bufr_ls_SOURCES = bufr_ls.c
-bufr_dump_SOURCES = bufr_dump.c
-bufr_set_SOURCES = bufr_set.c
-bufr_get_SOURCES = bufr_get.c
-bufr_copy_SOURCES = bufr_copy.c
-bufr_compare_SOURCES = bufr_compare.c
-bufr_index_build_SOURCES = bufr_index_build.c
-gts_copy_SOURCES = gts_copy.c
-gts_dump_SOURCES = gts_dump.c
-gts_filter_SOURCES = gts_filter.c
-#gts_get_SOURCES = gts_get.c
-gts_ls_SOURCES = gts_ls.c
-INCLUDES = -I$(top_builddir)/src
-LDADD = libgrib_tools.la $(top_builddir)/src/libeccodes.la
-DEPENDENCIES = $(LDADD)
-grib_to_netcdf_LDADD = $(LDADD) $(NETCDF_LDFLAGS) 
-CLEANFILES = libgrib_tools.la
-
-# wingetopt files are for Microsoft Windows Visual Studio support
-noinst_HEADERS = grib_tools.h wingetopt.h wingetopt.c
-EXTRA_DIST = CMakeLists.txt grib1to2.in
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu tools/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstLTLIBRARIES:
-	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-	@list='$(noinst_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-libgrib_tools.la: $(libgrib_tools_la_OBJECTS) $(libgrib_tools_la_DEPENDENCIES) $(EXTRA_libgrib_tools_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(LINK)  $(libgrib_tools_la_OBJECTS) $(libgrib_tools_la_LIBADD) $(LIBS)
-install-binPROGRAMS: $(bin_PROGRAMS)
-	@$(NORMAL_INSTALL)
-	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
-	fi; \
-	for p in $$list; do echo "$$p $$p"; done | \
-	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p \
-	 || test -f $$p1 \
-	  ; then echo "$$p"; echo "$$p"; else :; fi; \
-	done | \
-	sed -e 'p;s,.*/,,;n;h' \
-	    -e 's|.*|.|' \
-	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
-	sed 'N;N;N;s,\n, ,g' | \
-	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
-	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
-	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
-	    else { print "f", $$3 "/" $$4, $$1; } } \
-	  END { for (d in files) print "f", d, files[d] }' | \
-	while read type dir files; do \
-	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
-	    test -z "$$files" || { \
-	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
-	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
-	    } \
-	; done
-
-uninstall-binPROGRAMS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
-	files=`for p in $$list; do echo "$$p"; done | \
-	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' \
-	`; \
-	test -n "$$list" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(bindir)" && rm -f $$files
-
-clean-binPROGRAMS:
-	@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
-
-clean-noinstPROGRAMS:
-	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
-
-all_keys$(EXEEXT): $(all_keys_OBJECTS) $(all_keys_DEPENDENCIES) $(EXTRA_all_keys_DEPENDENCIES) 
-	@rm -f all_keys$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(all_keys_OBJECTS) $(all_keys_LDADD) $(LIBS)
-
-big2gribex$(EXEEXT): $(big2gribex_OBJECTS) $(big2gribex_DEPENDENCIES) $(EXTRA_big2gribex_DEPENDENCIES) 
-	@rm -f big2gribex$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(big2gribex_OBJECTS) $(big2gribex_LDADD) $(LIBS)
-
-bufr_compare$(EXEEXT): $(bufr_compare_OBJECTS) $(bufr_compare_DEPENDENCIES) $(EXTRA_bufr_compare_DEPENDENCIES) 
-	@rm -f bufr_compare$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(bufr_compare_OBJECTS) $(bufr_compare_LDADD) $(LIBS)
-
-bufr_copy$(EXEEXT): $(bufr_copy_OBJECTS) $(bufr_copy_DEPENDENCIES) $(EXTRA_bufr_copy_DEPENDENCIES) 
-	@rm -f bufr_copy$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(bufr_copy_OBJECTS) $(bufr_copy_LDADD) $(LIBS)
-
-bufr_count$(EXEEXT): $(bufr_count_OBJECTS) $(bufr_count_DEPENDENCIES) $(EXTRA_bufr_count_DEPENDENCIES) 
-	@rm -f bufr_count$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(bufr_count_OBJECTS) $(bufr_count_LDADD) $(LIBS)
-
-bufr_dump$(EXEEXT): $(bufr_dump_OBJECTS) $(bufr_dump_DEPENDENCIES) $(EXTRA_bufr_dump_DEPENDENCIES) 
-	@rm -f bufr_dump$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(bufr_dump_OBJECTS) $(bufr_dump_LDADD) $(LIBS)
-
-bufr_filter$(EXEEXT): $(bufr_filter_OBJECTS) $(bufr_filter_DEPENDENCIES) $(EXTRA_bufr_filter_DEPENDENCIES) 
-	@rm -f bufr_filter$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(bufr_filter_OBJECTS) $(bufr_filter_LDADD) $(LIBS)
-
-bufr_get$(EXEEXT): $(bufr_get_OBJECTS) $(bufr_get_DEPENDENCIES) $(EXTRA_bufr_get_DEPENDENCIES) 
-	@rm -f bufr_get$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(bufr_get_OBJECTS) $(bufr_get_LDADD) $(LIBS)
-
-bufr_index_build$(EXEEXT): $(bufr_index_build_OBJECTS) $(bufr_index_build_DEPENDENCIES) $(EXTRA_bufr_index_build_DEPENDENCIES) 
-	@rm -f bufr_index_build$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(bufr_index_build_OBJECTS) $(bufr_index_build_LDADD) $(LIBS)
-
-bufr_ls$(EXEEXT): $(bufr_ls_OBJECTS) $(bufr_ls_DEPENDENCIES) $(EXTRA_bufr_ls_DEPENDENCIES) 
-	@rm -f bufr_ls$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(bufr_ls_OBJECTS) $(bufr_ls_LDADD) $(LIBS)
-
-bufr_set$(EXEEXT): $(bufr_set_OBJECTS) $(bufr_set_DEPENDENCIES) $(EXTRA_bufr_set_DEPENDENCIES) 
-	@rm -f bufr_set$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(bufr_set_OBJECTS) $(bufr_set_LDADD) $(LIBS)
-
-codes_count$(EXEEXT): $(codes_count_OBJECTS) $(codes_count_DEPENDENCIES) $(EXTRA_codes_count_DEPENDENCIES) 
-	@rm -f codes_count$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(codes_count_OBJECTS) $(codes_count_LDADD) $(LIBS)
-
-codes_info$(EXEEXT): $(codes_info_OBJECTS) $(codes_info_DEPENDENCIES) $(EXTRA_codes_info_DEPENDENCIES) 
-	@rm -f codes_info$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(codes_info_OBJECTS) $(codes_info_LDADD) $(LIBS)
-
-gaussian$(EXEEXT): $(gaussian_OBJECTS) $(gaussian_DEPENDENCIES) $(EXTRA_gaussian_DEPENDENCIES) 
-	@rm -f gaussian$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(gaussian_OBJECTS) $(gaussian_LDADD) $(LIBS)
-
-gg_sub_area_check$(EXEEXT): $(gg_sub_area_check_OBJECTS) $(gg_sub_area_check_DEPENDENCIES) $(EXTRA_gg_sub_area_check_DEPENDENCIES) 
-	@rm -f gg_sub_area_check$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(gg_sub_area_check_OBJECTS) $(gg_sub_area_check_LDADD) $(LIBS)
-
-grib2ppm$(EXEEXT): $(grib2ppm_OBJECTS) $(grib2ppm_DEPENDENCIES) $(EXTRA_grib2ppm_DEPENDENCIES) 
-	@rm -f grib2ppm$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib2ppm_OBJECTS) $(grib2ppm_LDADD) $(LIBS)
-
-grib_compare$(EXEEXT): $(grib_compare_OBJECTS) $(grib_compare_DEPENDENCIES) $(EXTRA_grib_compare_DEPENDENCIES) 
-	@rm -f grib_compare$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_compare_OBJECTS) $(grib_compare_LDADD) $(LIBS)
-
-grib_copy$(EXEEXT): $(grib_copy_OBJECTS) $(grib_copy_DEPENDENCIES) $(EXTRA_grib_copy_DEPENDENCIES) 
-	@rm -f grib_copy$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_copy_OBJECTS) $(grib_copy_LDADD) $(LIBS)
-
-grib_count$(EXEEXT): $(grib_count_OBJECTS) $(grib_count_DEPENDENCIES) $(EXTRA_grib_count_DEPENDENCIES) 
-	@rm -f grib_count$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_count_OBJECTS) $(grib_count_LDADD) $(LIBS)
-
-grib_diff$(EXEEXT): $(grib_diff_OBJECTS) $(grib_diff_DEPENDENCIES) $(EXTRA_grib_diff_DEPENDENCIES) 
-	@rm -f grib_diff$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_diff_OBJECTS) $(grib_diff_LDADD) $(LIBS)
-
-grib_dump$(EXEEXT): $(grib_dump_OBJECTS) $(grib_dump_DEPENDENCIES) $(EXTRA_grib_dump_DEPENDENCIES) 
-	@rm -f grib_dump$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_dump_OBJECTS) $(grib_dump_LDADD) $(LIBS)
-
-grib_filter$(EXEEXT): $(grib_filter_OBJECTS) $(grib_filter_DEPENDENCIES) $(EXTRA_grib_filter_DEPENDENCIES) 
-	@rm -f grib_filter$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_filter_OBJECTS) $(grib_filter_LDADD) $(LIBS)
-
-grib_get$(EXEEXT): $(grib_get_OBJECTS) $(grib_get_DEPENDENCIES) $(EXTRA_grib_get_DEPENDENCIES) 
-	@rm -f grib_get$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_get_OBJECTS) $(grib_get_LDADD) $(LIBS)
-
-grib_get_data$(EXEEXT): $(grib_get_data_OBJECTS) $(grib_get_data_DEPENDENCIES) $(EXTRA_grib_get_data_DEPENDENCIES) 
-	@rm -f grib_get_data$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_get_data_OBJECTS) $(grib_get_data_LDADD) $(LIBS)
-
-grib_histogram$(EXEEXT): $(grib_histogram_OBJECTS) $(grib_histogram_DEPENDENCIES) $(EXTRA_grib_histogram_DEPENDENCIES) 
-	@rm -f grib_histogram$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_histogram_OBJECTS) $(grib_histogram_LDADD) $(LIBS)
-
-grib_index_build$(EXEEXT): $(grib_index_build_OBJECTS) $(grib_index_build_DEPENDENCIES) $(EXTRA_grib_index_build_DEPENDENCIES) 
-	@rm -f grib_index_build$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_index_build_OBJECTS) $(grib_index_build_LDADD) $(LIBS)
-
-grib_list_keys$(EXEEXT): $(grib_list_keys_OBJECTS) $(grib_list_keys_DEPENDENCIES) $(EXTRA_grib_list_keys_DEPENDENCIES) 
-	@rm -f grib_list_keys$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_list_keys_OBJECTS) $(grib_list_keys_LDADD) $(LIBS)
-
-grib_ls$(EXEEXT): $(grib_ls_OBJECTS) $(grib_ls_DEPENDENCIES) $(EXTRA_grib_ls_DEPENDENCIES) 
-	@rm -f grib_ls$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_ls_OBJECTS) $(grib_ls_LDADD) $(LIBS)
-
-grib_merge$(EXEEXT): $(grib_merge_OBJECTS) $(grib_merge_DEPENDENCIES) $(EXTRA_grib_merge_DEPENDENCIES) 
-	@rm -f grib_merge$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_merge_OBJECTS) $(grib_merge_LDADD) $(LIBS)
-
-grib_repair$(EXEEXT): $(grib_repair_OBJECTS) $(grib_repair_DEPENDENCIES) $(EXTRA_grib_repair_DEPENDENCIES) 
-	@rm -f grib_repair$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_repair_OBJECTS) $(grib_repair_LDADD) $(LIBS)
-
-grib_set$(EXEEXT): $(grib_set_OBJECTS) $(grib_set_DEPENDENCIES) $(EXTRA_grib_set_DEPENDENCIES) 
-	@rm -f grib_set$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_set_OBJECTS) $(grib_set_LDADD) $(LIBS)
-
-grib_to_json$(EXEEXT): $(grib_to_json_OBJECTS) $(grib_to_json_DEPENDENCIES) $(EXTRA_grib_to_json_DEPENDENCIES) 
-	@rm -f grib_to_json$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_to_json_OBJECTS) $(grib_to_json_LDADD) $(LIBS)
-
-grib_to_netcdf$(EXEEXT): $(grib_to_netcdf_OBJECTS) $(grib_to_netcdf_DEPENDENCIES) $(EXTRA_grib_to_netcdf_DEPENDENCIES) 
-	@rm -f grib_to_netcdf$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_to_netcdf_OBJECTS) $(grib_to_netcdf_LDADD) $(LIBS)
-
-gts_copy$(EXEEXT): $(gts_copy_OBJECTS) $(gts_copy_DEPENDENCIES) $(EXTRA_gts_copy_DEPENDENCIES) 
-	@rm -f gts_copy$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(gts_copy_OBJECTS) $(gts_copy_LDADD) $(LIBS)
-
-gts_dump$(EXEEXT): $(gts_dump_OBJECTS) $(gts_dump_DEPENDENCIES) $(EXTRA_gts_dump_DEPENDENCIES) 
-	@rm -f gts_dump$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(gts_dump_OBJECTS) $(gts_dump_LDADD) $(LIBS)
-
-gts_filter$(EXEEXT): $(gts_filter_OBJECTS) $(gts_filter_DEPENDENCIES) $(EXTRA_gts_filter_DEPENDENCIES) 
-	@rm -f gts_filter$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(gts_filter_OBJECTS) $(gts_filter_LDADD) $(LIBS)
-
-gts_ls$(EXEEXT): $(gts_ls_OBJECTS) $(gts_ls_DEPENDENCIES) $(EXTRA_gts_ls_DEPENDENCIES) 
-	@rm -f gts_ls$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(gts_ls_OBJECTS) $(gts_ls_LDADD) $(LIBS)
-
-mars_request$(EXEEXT): $(mars_request_OBJECTS) $(mars_request_DEPENDENCIES) $(EXTRA_mars_request_DEPENDENCIES) 
-	@rm -f mars_request$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(mars_request_OBJECTS) $(mars_request_LDADD) $(LIBS)
-
-parser$(EXEEXT): $(parser_OBJECTS) $(parser_DEPENDENCIES) $(EXTRA_parser_DEPENDENCIES) 
-	@rm -f parser$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(parser_OBJECTS) $(parser_LDADD) $(LIBS)
-
-xref$(EXEEXT): $(xref_OBJECTS) $(xref_DEPENDENCIES) $(EXTRA_xref_DEPENDENCIES) 
-	@rm -f xref$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(xref_OBJECTS) $(xref_LDADD) $(LIBS)
-install-dist_binSCRIPTS: $(dist_bin_SCRIPTS)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
-	done | \
-	sed -e 'p;s,.*/,,;n' \
-	    -e 'h;s|.*|.|' \
-	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
-	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
-	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
-	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
-	      if (++n[d] == $(am__install_max)) { \
-		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
-	    else { print "f", d "/" $$4, $$1 } } \
-	  END { for (d in files) print "f", d, files[d] }' | \
-	while read type dir files; do \
-	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
-	     test -z "$$files" || { \
-	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
-	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
-	     } \
-	; done
-
-uninstall-dist_binSCRIPTS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
-	files=`for p in $$list; do echo "$$p"; done | \
-	       sed -e 's,.*/,,;$(transform)'`; \
-	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-include ./$(DEPDIR)/all_keys.Po
-include ./$(DEPDIR)/big2gribex.Po
-include ./$(DEPDIR)/bufr_compare.Po
-include ./$(DEPDIR)/bufr_copy.Po
-include ./$(DEPDIR)/bufr_dump.Po
-include ./$(DEPDIR)/bufr_filter.Po
-include ./$(DEPDIR)/bufr_get.Po
-include ./$(DEPDIR)/bufr_index_build.Po
-include ./$(DEPDIR)/bufr_ls.Po
-include ./$(DEPDIR)/bufr_set.Po
-include ./$(DEPDIR)/codes_count.Po
-include ./$(DEPDIR)/codes_info.Po
-include ./$(DEPDIR)/gaussian.Po
-include ./$(DEPDIR)/gg_sub_area_check.Po
-include ./$(DEPDIR)/grib2ppm.Po
-include ./$(DEPDIR)/grib_compare.Po
-include ./$(DEPDIR)/grib_copy.Po
-include ./$(DEPDIR)/grib_diff.Po
-include ./$(DEPDIR)/grib_dump.Po
-include ./$(DEPDIR)/grib_filter.Po
-include ./$(DEPDIR)/grib_get.Po
-include ./$(DEPDIR)/grib_get_data.Po
-include ./$(DEPDIR)/grib_histogram.Po
-include ./$(DEPDIR)/grib_index_build.Po
-include ./$(DEPDIR)/grib_ls.Po
-include ./$(DEPDIR)/grib_merge.Po
-include ./$(DEPDIR)/grib_options.Plo
-include ./$(DEPDIR)/grib_repair.Po
-include ./$(DEPDIR)/grib_set.Po
-include ./$(DEPDIR)/grib_to_json.Po
-include ./$(DEPDIR)/grib_to_netcdf.Po
-include ./$(DEPDIR)/grib_tools.Plo
-include ./$(DEPDIR)/gts_copy.Po
-include ./$(DEPDIR)/gts_dump.Po
-include ./$(DEPDIR)/gts_filter.Po
-include ./$(DEPDIR)/gts_ls.Po
-include ./$(DEPDIR)/list_keys.Po
-include ./$(DEPDIR)/mars_request.Po
-include ./$(DEPDIR)/parser.Po
-include ./$(DEPDIR)/xref.Po
-
-.c.o:
-	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-#	$(AM_V_CC)source='$<' object='$@' libtool=no \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(COMPILE) -c $<
-
-.c.obj:
-	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-#	$(AM_V_CC)source='$<' object='$@' libtool=no \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-#	$(AM_V_CC)source='$<' object='$@' libtool=yes \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(HEADERS)
-installdirs:
-	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-binPROGRAMS clean-generic clean-libtool \
-	clean-noinstLTLIBRARIES clean-noinstPROGRAMS mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-binPROGRAMS install-dist_binSCRIPTS
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-binPROGRAMS uninstall-dist_binSCRIPTS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
-	clean-binPROGRAMS clean-generic clean-libtool \
-	clean-noinstLTLIBRARIES clean-noinstPROGRAMS cscopelist-am \
-	ctags ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-binPROGRAMS \
-	install-data install-data-am install-dist_binSCRIPTS \
-	install-dvi install-dvi-am install-exec install-exec-am \
-	install-html install-html-am install-info install-info-am \
-	install-man install-pdf install-pdf-am install-ps \
-	install-ps-am install-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
-	uninstall-am uninstall-binPROGRAMS uninstall-dist_binSCRIPTS
-
-
-grib1to2$(EXEEXT): grib1to2.in
-	rm -f grib1to2
-	sed "s|@CMAKE_INSTALL_PREFIX@/bin|$(bindir)|" grib1to2.in > grib1to2
-	chmod +x grib1to2
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/tools/Makefile.am b/tools/Makefile.am
index 98be29f..e605334 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -15,11 +15,12 @@ dist_bin_SCRIPTS = bufr_compare_dir
 bin_PROGRAMS = grib_histogram big2gribex \
                codes_info codes_count grib_filter grib_ls grib_dump grib_merge \
                grib2ppm grib_set grib_get grib_get_data grib_copy grib_repair \
-               grib_compare grib_list_keys parser grib_count grib_index_build grib1to2 \
+               grib_compare grib_list_keys codes_parser grib_count grib_index_build grib1to2 \
                gg_sub_area_check grib_to_netcdf grib_to_json \
                bufr_count bufr_filter bufr_ls bufr_dump bufr_set bufr_get \
                bufr_copy bufr_compare bufr_index_build \
-               gts_copy gts_dump gts_filter gts_ls
+               gts_copy gts_dump gts_filter gts_ls \
+							 metar_dump metar_ls
 
 noinst_PROGRAMS =  gaussian grib_diff mars_request xref all_keys #compile #dumpload grib_compare_old
 
@@ -35,7 +36,7 @@ grib_count_SOURCES            =  codes_count.c
 bufr_count_SOURCES            =  codes_count.c
 codes_count_SOURCES           =  codes_count.c
 grib_histogram_SOURCES        =  grib_histogram.c
-parser_SOURCES                =  parser.c
+codes_parser_SOURCES          =  codes_parser.c
 grib_list_keys_SOURCES        =  list_keys.c
 all_keys_SOURCES              =  all_keys.c
 grib2ppm_SOURCES              =  grib2ppm.c
@@ -73,6 +74,9 @@ gts_filter_SOURCES = gts_filter.c
 #gts_get_SOURCES = gts_get.c
 gts_ls_SOURCES = gts_ls.c
 
+metar_dump_SOURCES = metar_dump.c
+metar_ls_SOURCES = metar_ls.c
+
 INCLUDES =  -I$(top_builddir)/src
 
 LDADD = libgrib_tools.la $(top_builddir)/src/libeccodes.la
diff --git a/tools/Makefile.in b/tools/Makefile.in
index 09a0757..0321e47 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -86,15 +86,16 @@ bin_PROGRAMS = grib_histogram$(EXEEXT) big2gribex$(EXEEXT) \
 	grib_ls$(EXEEXT) grib_dump$(EXEEXT) grib_merge$(EXEEXT) \
 	grib2ppm$(EXEEXT) grib_set$(EXEEXT) grib_get$(EXEEXT) \
 	grib_get_data$(EXEEXT) grib_copy$(EXEEXT) grib_repair$(EXEEXT) \
-	grib_compare$(EXEEXT) grib_list_keys$(EXEEXT) parser$(EXEEXT) \
-	grib_count$(EXEEXT) grib_index_build$(EXEEXT) \
-	grib1to2$(EXEEXT) gg_sub_area_check$(EXEEXT) \
-	grib_to_netcdf$(EXEEXT) grib_to_json$(EXEEXT) \
-	bufr_count$(EXEEXT) bufr_filter$(EXEEXT) bufr_ls$(EXEEXT) \
-	bufr_dump$(EXEEXT) bufr_set$(EXEEXT) bufr_get$(EXEEXT) \
-	bufr_copy$(EXEEXT) bufr_compare$(EXEEXT) \
+	grib_compare$(EXEEXT) grib_list_keys$(EXEEXT) \
+	codes_parser$(EXEEXT) grib_count$(EXEEXT) \
+	grib_index_build$(EXEEXT) grib1to2$(EXEEXT) \
+	gg_sub_area_check$(EXEEXT) grib_to_netcdf$(EXEEXT) \
+	grib_to_json$(EXEEXT) bufr_count$(EXEEXT) bufr_filter$(EXEEXT) \
+	bufr_ls$(EXEEXT) bufr_dump$(EXEEXT) bufr_set$(EXEEXT) \
+	bufr_get$(EXEEXT) bufr_copy$(EXEEXT) bufr_compare$(EXEEXT) \
 	bufr_index_build$(EXEEXT) gts_copy$(EXEEXT) gts_dump$(EXEEXT) \
-	gts_filter$(EXEEXT) gts_ls$(EXEEXT)
+	gts_filter$(EXEEXT) gts_ls$(EXEEXT) metar_dump$(EXEEXT) \
+	metar_ls$(EXEEXT)
 noinst_PROGRAMS = gaussian$(EXEEXT) grib_diff$(EXEEXT) \
 	mars_request$(EXEEXT) xref$(EXEEXT) all_keys$(EXEEXT)
 subdir = tools
@@ -188,6 +189,11 @@ codes_info_OBJECTS = $(am_codes_info_OBJECTS)
 codes_info_LDADD = $(LDADD)
 codes_info_DEPENDENCIES = libgrib_tools.la \
 	$(top_builddir)/src/libeccodes.la
+am_codes_parser_OBJECTS = codes_parser.$(OBJEXT)
+codes_parser_OBJECTS = $(am_codes_parser_OBJECTS)
+codes_parser_LDADD = $(LDADD)
+codes_parser_DEPENDENCIES = libgrib_tools.la \
+	$(top_builddir)/src/libeccodes.la
 am_gaussian_OBJECTS = gaussian.$(OBJEXT)
 gaussian_OBJECTS = $(am_gaussian_OBJECTS)
 gaussian_LDADD = $(LDADD)
@@ -317,10 +323,15 @@ mars_request_OBJECTS = $(am_mars_request_OBJECTS)
 mars_request_LDADD = $(LDADD)
 mars_request_DEPENDENCIES = libgrib_tools.la \
 	$(top_builddir)/src/libeccodes.la
-am_parser_OBJECTS = parser.$(OBJEXT)
-parser_OBJECTS = $(am_parser_OBJECTS)
-parser_LDADD = $(LDADD)
-parser_DEPENDENCIES = libgrib_tools.la \
+am_metar_dump_OBJECTS = metar_dump.$(OBJEXT)
+metar_dump_OBJECTS = $(am_metar_dump_OBJECTS)
+metar_dump_LDADD = $(LDADD)
+metar_dump_DEPENDENCIES = libgrib_tools.la \
+	$(top_builddir)/src/libeccodes.la
+am_metar_ls_OBJECTS = metar_ls.$(OBJEXT)
+metar_ls_OBJECTS = $(am_metar_ls_OBJECTS)
+metar_ls_LDADD = $(LDADD)
+metar_ls_DEPENDENCIES = libgrib_tools.la \
 	$(top_builddir)/src/libeccodes.la
 am_xref_OBJECTS = xref.$(OBJEXT)
 xref_OBJECTS = $(am_xref_OBJECTS)
@@ -394,40 +405,42 @@ SOURCES = $(libgrib_tools_la_SOURCES) $(all_keys_SOURCES) \
 	$(bufr_dump_SOURCES) $(bufr_filter_SOURCES) \
 	$(bufr_get_SOURCES) $(bufr_index_build_SOURCES) \
 	$(bufr_ls_SOURCES) $(bufr_set_SOURCES) $(codes_count_SOURCES) \
-	$(codes_info_SOURCES) $(gaussian_SOURCES) \
-	$(gg_sub_area_check_SOURCES) $(grib1to2_SOURCES) \
-	$(grib2ppm_SOURCES) $(grib_compare_SOURCES) \
-	$(grib_copy_SOURCES) $(grib_count_SOURCES) \
-	$(grib_diff_SOURCES) $(grib_dump_SOURCES) \
-	$(grib_filter_SOURCES) $(grib_get_SOURCES) \
-	$(grib_get_data_SOURCES) $(grib_histogram_SOURCES) \
-	$(grib_index_build_SOURCES) $(grib_list_keys_SOURCES) \
-	$(grib_ls_SOURCES) $(grib_merge_SOURCES) \
-	$(grib_repair_SOURCES) $(grib_set_SOURCES) \
-	$(grib_to_json_SOURCES) $(grib_to_netcdf_SOURCES) \
-	$(gts_copy_SOURCES) $(gts_dump_SOURCES) $(gts_filter_SOURCES) \
-	$(gts_ls_SOURCES) $(mars_request_SOURCES) $(parser_SOURCES) \
-	$(xref_SOURCES)
+	$(codes_info_SOURCES) $(codes_parser_SOURCES) \
+	$(gaussian_SOURCES) $(gg_sub_area_check_SOURCES) \
+	$(grib1to2_SOURCES) $(grib2ppm_SOURCES) \
+	$(grib_compare_SOURCES) $(grib_copy_SOURCES) \
+	$(grib_count_SOURCES) $(grib_diff_SOURCES) \
+	$(grib_dump_SOURCES) $(grib_filter_SOURCES) \
+	$(grib_get_SOURCES) $(grib_get_data_SOURCES) \
+	$(grib_histogram_SOURCES) $(grib_index_build_SOURCES) \
+	$(grib_list_keys_SOURCES) $(grib_ls_SOURCES) \
+	$(grib_merge_SOURCES) $(grib_repair_SOURCES) \
+	$(grib_set_SOURCES) $(grib_to_json_SOURCES) \
+	$(grib_to_netcdf_SOURCES) $(gts_copy_SOURCES) \
+	$(gts_dump_SOURCES) $(gts_filter_SOURCES) $(gts_ls_SOURCES) \
+	$(mars_request_SOURCES) $(metar_dump_SOURCES) \
+	$(metar_ls_SOURCES) $(xref_SOURCES)
 DIST_SOURCES = $(libgrib_tools_la_SOURCES) $(all_keys_SOURCES) \
 	$(big2gribex_SOURCES) $(bufr_compare_SOURCES) \
 	$(bufr_copy_SOURCES) $(bufr_count_SOURCES) \
 	$(bufr_dump_SOURCES) $(bufr_filter_SOURCES) \
 	$(bufr_get_SOURCES) $(bufr_index_build_SOURCES) \
 	$(bufr_ls_SOURCES) $(bufr_set_SOURCES) $(codes_count_SOURCES) \
-	$(codes_info_SOURCES) $(gaussian_SOURCES) \
-	$(gg_sub_area_check_SOURCES) $(grib1to2_SOURCES) \
-	$(grib2ppm_SOURCES) $(grib_compare_SOURCES) \
-	$(grib_copy_SOURCES) $(grib_count_SOURCES) \
-	$(grib_diff_SOURCES) $(grib_dump_SOURCES) \
-	$(grib_filter_SOURCES) $(grib_get_SOURCES) \
-	$(grib_get_data_SOURCES) $(grib_histogram_SOURCES) \
-	$(grib_index_build_SOURCES) $(grib_list_keys_SOURCES) \
-	$(grib_ls_SOURCES) $(grib_merge_SOURCES) \
-	$(grib_repair_SOURCES) $(grib_set_SOURCES) \
-	$(grib_to_json_SOURCES) $(grib_to_netcdf_SOURCES) \
-	$(gts_copy_SOURCES) $(gts_dump_SOURCES) $(gts_filter_SOURCES) \
-	$(gts_ls_SOURCES) $(mars_request_SOURCES) $(parser_SOURCES) \
-	$(xref_SOURCES)
+	$(codes_info_SOURCES) $(codes_parser_SOURCES) \
+	$(gaussian_SOURCES) $(gg_sub_area_check_SOURCES) \
+	$(grib1to2_SOURCES) $(grib2ppm_SOURCES) \
+	$(grib_compare_SOURCES) $(grib_copy_SOURCES) \
+	$(grib_count_SOURCES) $(grib_diff_SOURCES) \
+	$(grib_dump_SOURCES) $(grib_filter_SOURCES) \
+	$(grib_get_SOURCES) $(grib_get_data_SOURCES) \
+	$(grib_histogram_SOURCES) $(grib_index_build_SOURCES) \
+	$(grib_list_keys_SOURCES) $(grib_ls_SOURCES) \
+	$(grib_merge_SOURCES) $(grib_repair_SOURCES) \
+	$(grib_set_SOURCES) $(grib_to_json_SOURCES) \
+	$(grib_to_netcdf_SOURCES) $(gts_copy_SOURCES) \
+	$(gts_dump_SOURCES) $(gts_filter_SOURCES) $(gts_ls_SOURCES) \
+	$(mars_request_SOURCES) $(metar_dump_SOURCES) \
+	$(metar_ls_SOURCES) $(xref_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -662,7 +675,7 @@ grib_count_SOURCES = codes_count.c
 bufr_count_SOURCES = codes_count.c
 codes_count_SOURCES = codes_count.c
 grib_histogram_SOURCES = grib_histogram.c
-parser_SOURCES = parser.c
+codes_parser_SOURCES = codes_parser.c
 grib_list_keys_SOURCES = list_keys.c
 all_keys_SOURCES = all_keys.c
 grib2ppm_SOURCES = grib2ppm.c
@@ -697,6 +710,8 @@ gts_dump_SOURCES = gts_dump.c
 gts_filter_SOURCES = gts_filter.c
 #gts_get_SOURCES = gts_get.c
 gts_ls_SOURCES = gts_ls.c
+metar_dump_SOURCES = metar_dump.c
+metar_ls_SOURCES = metar_ls.c
 INCLUDES = -I$(top_builddir)/src
 LDADD = libgrib_tools.la $(top_builddir)/src/libeccodes.la
 DEPENDENCIES = $(LDADD)
@@ -865,6 +880,10 @@ codes_info$(EXEEXT): $(codes_info_OBJECTS) $(codes_info_DEPENDENCIES) $(EXTRA_co
 	@rm -f codes_info$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(codes_info_OBJECTS) $(codes_info_LDADD) $(LIBS)
 
+codes_parser$(EXEEXT): $(codes_parser_OBJECTS) $(codes_parser_DEPENDENCIES) $(EXTRA_codes_parser_DEPENDENCIES) 
+	@rm -f codes_parser$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(codes_parser_OBJECTS) $(codes_parser_LDADD) $(LIBS)
+
 gaussian$(EXEEXT): $(gaussian_OBJECTS) $(gaussian_DEPENDENCIES) $(EXTRA_gaussian_DEPENDENCIES) 
 	@rm -f gaussian$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gaussian_OBJECTS) $(gaussian_LDADD) $(LIBS)
@@ -965,9 +984,13 @@ mars_request$(EXEEXT): $(mars_request_OBJECTS) $(mars_request_DEPENDENCIES) $(EX
 	@rm -f mars_request$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(mars_request_OBJECTS) $(mars_request_LDADD) $(LIBS)
 
-parser$(EXEEXT): $(parser_OBJECTS) $(parser_DEPENDENCIES) $(EXTRA_parser_DEPENDENCIES) 
-	@rm -f parser$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(parser_OBJECTS) $(parser_LDADD) $(LIBS)
+metar_dump$(EXEEXT): $(metar_dump_OBJECTS) $(metar_dump_DEPENDENCIES) $(EXTRA_metar_dump_DEPENDENCIES) 
+	@rm -f metar_dump$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(metar_dump_OBJECTS) $(metar_dump_LDADD) $(LIBS)
+
+metar_ls$(EXEEXT): $(metar_ls_OBJECTS) $(metar_ls_DEPENDENCIES) $(EXTRA_metar_ls_DEPENDENCIES) 
+	@rm -f metar_ls$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(metar_ls_OBJECTS) $(metar_ls_LDADD) $(LIBS)
 
 xref$(EXEEXT): $(xref_OBJECTS) $(xref_DEPENDENCIES) $(EXTRA_xref_DEPENDENCIES) 
 	@rm -f xref$(EXEEXT)
@@ -1026,6 +1049,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_set.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/codes_count.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/codes_info.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/codes_parser.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gaussian.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gg_sub_area_check.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib2ppm.Po at am__quote@
@@ -1052,7 +1076,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gts_ls.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/list_keys.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/mars_request.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/parser.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/metar_dump.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/metar_ls.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/xref.Po at am__quote@
 
 .c.o:
diff --git a/tools/all_keys.c b/tools/all_keys.c
index 6effb6d..d80609e 100755
--- a/tools/all_keys.c
+++ b/tools/all_keys.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/big2gribex.c b/tools/big2gribex.c
index a06f150..0f22b61 100644
--- a/tools/big2gribex.c
+++ b/tools/big2gribex.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/bufr_3to4.c b/tools/bufr_3to4.c
index a5e74b9..253438d 100644
--- a/tools/bufr_3to4.c
+++ b/tools/bufr_3to4.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/bufr_compare.c b/tools/bufr_compare.c
index 6986325..1d90d97 100644
--- a/tools/bufr_compare.c
+++ b/tools/bufr_compare.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -8,15 +8,8 @@
  * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
  */
 
-/*
- * C Implementation: bufr_compare
- *
- *
- */
-
 #include "grib_tools.h"
 
-
 GRIB_INLINE static int grib_inline_strcmp(const char* a,const char* b)
 {
     if (*a != *b) return 1;
@@ -87,21 +80,18 @@ static void write_message(grib_handle* h,const char* str)
     const void *m; size_t s;
     char fname[1024]={0,};
     FILE* fh=NULL;
-    int ioerr=0;
 
     grib_get_message(h,&m,&s);
     sprintf(fname,"%s_%d.bufr",str,write_count);
 
     fh= fopen(fname,"w");
     if(!fh) {
-        ioerr=errno;
         grib_context_log(h->context,(GRIB_LOG_ERROR)|(GRIB_LOG_PERROR),
                 "Error opening %s",fname);
         exit(GRIB_IO_PROBLEM);
     }
 
     if(fwrite(m,1,s,fh) != s) {
-        ioerr=errno;
         grib_context_log(h->context,(GRIB_LOG_ERROR)|(GRIB_LOG_PERROR),
                 "Error writing to %s",fname);
         exit(GRIB_IO_PROBLEM);
@@ -324,6 +314,25 @@ 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 */
+        struct stat s;
+        grib_tools_file* infile = options->infile; /* the 2nd file in comparison */
+        if (infile) {
+            int stat_val = stat(infile->name, &s);
+            if ( stat_val == 0 && S_ISDIR(s.st_mode)) {
+                /* Take the filename of the 1st file and append to dir */
+                char bufr[2048] = {0,};
+                /* options->infile_extra->name is the 1st file */
+                sprintf(bufr, "%s%c%s",
+                        infile->name,
+                        get_dir_separator_char(),
+                        extract_filename(options->infile_extra->name));
+                infile->name = strdup(bufr);
+            }
+        }
+    }
 
     return 0;
 }
@@ -549,7 +558,6 @@ static int compare_values(grib_runtime_options* options,grib_handle* h1,grib_han
     unsigned char *uval1 = NULL,*uval2 = NULL;
     double *dval1 = NULL, *dval2 = NULL;
     long *lval1 = NULL, *lval2 = NULL;
-    int failed=0;
     double maxdiff=0;
     double packingError1=0,packingError2=0;
     double value_tolerance=0;
@@ -733,6 +741,7 @@ static int compare_values(grib_runtime_options* options,grib_handle* h1,grib_han
         {
             printInfo(h1);
             printf("Different size for \"%s\"  [%ld]  [%ld]\n",name,(long)len1,(long)len2);
+            err1=GRIB_INTERNAL_ERROR;
             save_error(c,name);
         }
         if(err1 == GRIB_SUCCESS && err2 == GRIB_SUCCESS && len1==len2)
@@ -851,7 +860,6 @@ static int compare_values(grib_runtime_options* options,grib_handle* h1,grib_han
             if (verbose) printf("  (%d values) tolerance=%g\n",(int)len1,value_tolerance);
             for(i = 0; i < len1; i++) {
                 if((diff=compare_double(pv1++,pv2++,&value_tolerance))!=0) {
-                    failed=1;
                     countdiff++;
                     if (maxdiff < diff) {maxdiff=diff;imaxdiff=i;}
                     err1 = GRIB_VALUE_MISMATCH;
@@ -989,7 +997,7 @@ static int compare_all_dump_keys(grib_handle* h1,grib_handle* h2,grib_runtime_op
     {
         grib_accessor* xa=grib_keys_iterator_get_accessor(iter);
         name=grib_keys_iterator_get_name(iter);
-        /*printf("----- comparing %s\n",name);*/
+        /* printf("----- comparing %s\n",name); */
 
         if (blacklisted(name)) continue;
         if (xa==NULL || ( xa->flags & GRIB_ACCESSOR_FLAG_DUMP )==0 ) continue;
@@ -1096,10 +1104,10 @@ static int compare_handles(grib_handle* h1,grib_handle* h2,grib_runtime_options*
         GRIB_CHECK_NOLINE(grib_get_message(h2,&msg2,&size2),0);
         if (size1==size2 && !(memcmp_ret=memcmp(msg1,msg2,size1))) {
             return 0;
-        }
+        } 
 #if 0
-        else if (options->mode == MODE_BUFR ) {
-            int lcount=count;
+        else {
+            int lcount=count,ii;
             if (options->current_infile) lcount=options->current_infile->filter_handle_count;
             if (size1 != size2) {
                 printf("#%d different size: %d!=%d\n",lcount,(int)size1,(int)size2);
@@ -1163,3 +1171,9 @@ static int compare_handles(grib_handle* h1,grib_handle* h2,grib_runtime_options*
     }
     return err;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/bufr_copy.c b/tools/bufr_copy.c
index 335b18c..6c005f1 100644
--- a/tools/bufr_copy.c
+++ b/tools/bufr_copy.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -29,10 +29,10 @@ grib_option grib_options[]={
         {"p:",0,0,1,1,0},
         {"s:",0,0,0,1,0},
         {"P:",0,0,0,1,0},
-        {"w:","key[:{s/d/l}]=value,key[:{s/d/l}]=value,...","\n\t\tWhere clause."
+        {"w:","key[:{s/d/i}]=value,key[:{s/d/i}]=value,...","\n\t\tWhere clause."
                 "\n\t\tOnly BUFR messages matching the key/value constraints are "
-                "copied to the\n\t\toutput_bufr_file.\n\t\tFor each key a string (key:s) or a "
-                "double (key:d) or a long (key:l)\n\t\ttype can be defined. Default type "
+                "copied to the\n\t\toutput_bufr_file.\n\t\tFor each key a string (key:s), a "
+                "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},
@@ -116,3 +116,9 @@ int grib_tool_finalise_action(grib_runtime_options* options)
        fclose(options->outfile->file); */
     return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/bufr_dump.c b/tools/bufr_dump.c
index dff9d16..0488c3f 100644
--- a/tools/bufr_dump.c
+++ b/tools/bufr_dump.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -17,8 +17,8 @@
 
 grib_option grib_options[]={
         /*  {id, args, help}, on, command_line, value*/
-        {"j:","s/f","\n\t\tJSON mode (JavaScript Object Notation)."
-                    "\n\t\tOptions: s->structure, f->flat (only data)\n",1,1,"s"},
+        {"j:","s/f/a","\n\t\tJSON mode (JavaScript Object Notation)."
+                    "\n\t\tOptions: s->structure, f->flat (only data), a->all attributes\n",1,1,"s"},
         {"S",0,0,1,0,0},
         {"O",0,"Octet mode. WMO documentation style dump.\n",0,1,0},
         {"D",0,0,0,1,0},
@@ -26,6 +26,7 @@ grib_option grib_options[]={
         {"u",0,"Print only some values.\n",0,1,0},
         /*     {"C",0,0,0,1,0}, */
         {"t",0,0,0,1,0},
+        {"f",0,0,0,1,0},
         {"H",0,0,0,1,0},
         {"a",0,0,0,1,0},
         {"w:",0,0,0,1,0},
@@ -43,6 +44,7 @@ char* grib_tool_name="bufr_dump";
 char* grib_tool_usage="[options] file file ...";
 static int json=0;
 static char* json_option=0;
+static int first_handle=1;
 
 int grib_options_count=sizeof(grib_options)/sizeof(grib_option);
 
@@ -75,7 +77,7 @@ int grib_tool_init(grib_runtime_options* options)
     if (grib_options_on("j:")) {
         options->dump_mode = "json";
         json_option=grib_options_get_option("j:");
-        if (strlen(json_option)>1 || ( json_option[0] != 's' && json_option[0]!= 'f')) {
+        if (strlen(json_option)>1 || ( json_option[0] != 's' && json_option[0]!= 'f' && json_option[0]!= 'a')) {
           printf("wrong json option %s\n",json_option);
           exit(1);
         }
@@ -92,6 +94,7 @@ int grib_tool_init(grib_runtime_options* options)
 
     if  (grib_options_on("O")) {
         options->dump_mode = "wmo";
+        json=0;
         options->dump_flags = GRIB_DUMP_FLAG_CODED
                 | GRIB_DUMP_FLAG_OCTECT
                 | GRIB_DUMP_FLAG_VALUES
@@ -116,7 +119,6 @@ int grib_tool_init(grib_runtime_options* options)
     if (grib_options_on("d") && !grib_options_on("u"))
         options->dump_flags |= GRIB_DUMP_FLAG_ALL_DATA;
 
-    if (json) fprintf(stdout,"{ \"messages\" : [ \n");
 
     return 0;
 }
@@ -143,8 +145,6 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h)
 {
     long length=0;
     char tmp[1024];
-    char identifier[100];
-    size_t idlen=100;
     int i,err=0;
     grib_accessor* a=NULL;
     grib_accessors_list* al=NULL;
@@ -162,16 +162,40 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h)
 
     if (json) {
         if (options->handle_count>1) fprintf(stdout,",\n");
-        /* fprintf(stdout,"\"message%d\" : ",options->handle_count); */
+        if (json && first_handle) {
+          fprintf(stdout,"{ \"messages\" : [ \n");
+          first_handle=0;
+        }
         switch (json_option[0]) {
           case 'f':
-            grib_set_long(h,"unpack",2);
+            err=grib_set_long(h,"unpack",2);
+            if (err) {
+              fprintf(stdout,"\"ERROR: unable to unpack data section\"");
+              options->error=err;
+              return err;
+            }
             a=grib_find_accessor(h,"numericValues");
             al=accessor_bufr_data_array_get_dataAccessors(a);
+            options->dump_flags=GRIB_DUMP_FLAG_ALL_ATTRIBUTES;
             grib_dump_bufr_flat(al,h,stdout,options->dump_mode,options->dump_flags,0);
             break;
           case 's':
-            grib_set_long(h,"unpack",1);
+            err=grib_set_long(h,"unpack",1);
+            if (err) {
+              fprintf(stdout,"\"ERROR: unable to unpack data section\"");
+              options->error=err;
+              return err;
+            }
+            grib_dump_content(h,stdout,options->dump_mode,options->dump_flags,0);
+            break;
+          case 'a':
+            err=grib_set_long(h,"unpack",1);
+            if (err) {
+              fprintf(stdout,"\"ERROR: unable to unpack data section\"");
+              options->error=err;
+              return err;
+            }
+            options->dump_flags=GRIB_DUMP_FLAG_ALL_ATTRIBUTES;
             grib_dump_content(h,stdout,options->dump_mode,options->dump_flags,0);
             break;
           default :
@@ -182,10 +206,8 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h)
         sprintf(tmp,"MESSAGE %d ( length=%ld )",options->handle_count,length);
         if (!grib_options_on("C"))
             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);
-        }
+        grib_set_long(h,"unpack",1);
+        grib_dump_content(h,stdout,options->dump_mode,options->dump_flags,0);
     }
 
     if (!strcmp(options->dump_mode,"default"))
@@ -209,3 +231,17 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     if (json) fprintf(stdout,"\n]}\n");
     return 0;
 }
+
+int grib_no_handle_action(int err) {
+  if (json ){
+    if (first_handle) {
+      fprintf(dump_file,"{ \"messages\" : [ \n");
+      first_handle=0;
+    } else {
+      fprintf(dump_file,",\n");
+    }
+  }
+  fprintf(dump_file,"\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/bufr_filter.c b/tools/bufr_filter.c
index 4f3f3e2..e20dbef 100644
--- a/tools/bufr_filter.c
+++ b/tools/bufr_filter.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -31,7 +31,8 @@ grib_option grib_options[]={
         {"v",0,0,0,1,0}
 };
 char* grib_tool_description="Apply the rules defined in rules_file to each BUFR "
-        "message\n\tin the BUFR files provided as arguments.";
+   "message\n\tin the BUFR files provided as arguments.\n\t"
+   "If you specify '-' (a single dash) for the rules_file, the rules will be read from standard input.";
 char* grib_tool_name="bufr_filter";
 char* grib_tool_usage="[options] rules_file "
         "file file ...";
@@ -112,3 +113,9 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     grib_file_pool_clean();
     return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/bufr_filter.sh b/tools/bufr_filter.sh
new file mode 100755
index 0000000..a0d7a96
--- /dev/null
+++ b/tools/bufr_filter.sh
@@ -0,0 +1,302 @@
+#!/bin/sh
+set -e 
+
+echo "-# The bufr_filter processes sequentially all bufr messages contained in the input files and applies the rules to each of them. \\n"
+echo " Input messages can be written to the output by using the \"write\" statement. The write statement can be parameterised so that output "
+echo " is sent to multiple files depending on key values used in the output file name. \\n"
+echo " If we write a rules_file containing the only statement:\\n \\n"
+echo "\\verbatim"
+echo "write \"../data/split/[bufrHeaderCentre:l]_[dataCategory].bufr[editionNumber]\";"
+echo "\\endverbatim\\n"
+echo "Applying this rules_file to the \"../data/bufr/mutitype.bufr\" bufr file we obtain several files in the ../data/split directory containing "
+echo " messages split according to their key values\\n "
+echo "\\verbatim"
+
+if [[ -d ../data/split ]] 
+then
+    rm -f ../data/split/* 
+else
+    mkdir ../data/split
+fi
+
+cat ../data/bufr/syno_1.bufr ../data/bufr/goes_87.bufr ../data/bufr/gosat.bufr > ../data/split/multitype.bufr
+
+
+cat > rules_file <<EOF
+write "../data/split/[bufrHeaderCentre:l]_[dataCategory].bufr[editionNumber]";
+EOF
+
+echo ">bufr_filter rules_file ../data/bufr/multitype.bufr"
+echo ">ls ../data/split"
+
+./bufr_filter rules_file ../data/split/multitype.bufr
+ls ../data/split
+
+echo "\\endverbatim\\n"
+
+
+echo "-# The bufr <b>header</b> information can be accessed without unpacking the data. This rules_file: \\n"
+echo "\\verbatim"
+echo "print \"[bufrHeaderCentre] [bufrHeaderSubCentre] [masterTablesVersionNumber] [localTablesVersionNumber] [numberOfSubsets]\";"
+echo "\\endverbatim\\n"
+echo "will result in the following output: \\n"
+
+echo "\\verbatim"
+cat > rules_file <<EOF
+print "[bufrHeaderCentre] [bufrHeaderSubCentre] [masterTablesVersionNumber] [localTablesVersionNumber] [numberOfSubsets]";
+EOF
+
+echo ">bufr_filter rules_file ../data/bufr/syno_multi.bufr"
+
+./bufr_filter rules_file ../data/bufr/syno_multi.bufr
+
+echo "\\endverbatim\\n"
+
+# Unpack 
+
+echo "-# To print values from the data section the messages have to be <b>unpacked</b>. To do that we need to set key <i>unapack</i> to 1. This rules_file: \\n"
+
+echo "\\verbatim"
+echo "set unpack=1;"
+echo "print \"block=[blockNumber] station=[stationNumber] lat=[latitude] lon=[longitude] t2=[airTemperatureAt2M]\";"
+echo "\\endverbatim\\n"
+
+echo "will print out some data values from the specified SYNOP bufr messages."
+
+echo "\\verbatim"
+cat > rules_file <<EOF
+set unpack=1;
+print "block=[blockNumber] station=[stationNumber] lat=[latitude] lon=[longitude] t2=[airTemperatureAt2M]";
+EOF
+
+echo ">bufr_filter rules_file ../data/bufr/syno_multi.bufr"
+
+./bufr_filter rules_file ../data/bufr/syno_multi.bufr
+
+echo "\\endverbatim\\n"
+
+# Tranzient keys
+
+echo "-# bufr_filter allows defining new keys with the <b>transient</b> keyword. \\n"
+echo " We will further develop the previous example by creating a new key to combine the block number "
+echo " and the station number into the full WMO station id: \\n"
+
+echo "\\verbatim"
+echo "set unpack=1;"
+echo "transient statid=1000*blockNumber+stationNumber;"
+echo "print \"statid=[statid] lat=[latitude] lon=[longitude] t2=[airTemperatureAt2M]\";"
+echo "\\endverbatim\\n"
+
+echo "The result is:"
+
+echo "\\verbatim"
+cat > rules_file <<EOF
+set unpack=1;
+transient statid=1000*blockNumber+stationNumber;
+print "statid=[statid] lat=[latitude] lon=[longitude] t2=[airTemperatureAt2M]";
+EOF
+
+echo ">bufr_filter rules_file ../data/bufr/syno_multi.bufr"
+
+./bufr_filter rules_file ../data/bufr/syno_multi.bufr
+
+echo "\\endverbatim\\n"
+ 
+#Conditional statements
+
+echo "-# We can use <b>conditional statements</b> in bufr_filter. The syntax is: \\n"
+echo "\\verbatim"
+echo "if ( condition ) { block of rules } else { block of rules }"
+echo "\\endverbatim\\n"
+echo "The condition can be made using ==,!= and joining single block conditions with || and &&. \\n"
+echo "The statement can be any valid statement also another nested condition\\n"
+echo "The rules_file below shows how to filter only SYNOP messages with a specific station id:"
+
+echo "\\verbatim"
+echo "set unpack=1;"
+echo "transient statid=1000*blockNumber+stationNumber;"
+echo ""
+echo "if (dataCategory ==0 && statid == 1003) {"
+echo "  write out.bufr;"
+echo "}"        
+echo "\\endverbatim\\n"
+
+#Switch
+
+echo "-# The <b>switch</b> statement is an enhanced version of the if statement. Its syntax is the following:"
+echo "\\verbatim"
+echo "switch (key1,key2,...,keyn) {"
+echo "    case val11,val12,...,val1n:"
+echo "        # block of rules;"
+echo "    case val21,val22,...,val2n:"
+echo "        # block of rules;"
+echo "    default:"
+echo "        # [ block of rules ]"
+echo "}"
+echo "\\endverbatim\\n"
+echo "Each value of each key given as argument to the switch statement is matched against the values specified in the case statements.\\n"
+echo "If there is a match, then the block or rules corresponding to the matching case statement is executed.\\n"
+echo "Otherwise, the default case is executed. The default case is mandatory if the case statements do not cover all the possibilities.\\n"
+echo "The \"~\" operator can be used to match \"anything\".\\n\\n"
+
+
+# Attributes 
+ 
+echo "-# To access the keys' <b>attributes</b> use the -> operator. \\n"
+echo " The example below prints the attributes of key <i>pressure</i> from a SYNOP bufr message. \\n"
+
+echo "\\verbatim"
+echo "print \"pressure=[pressure] [pressure->units]\";"
+echo "print \"pressure->code=[pressure->code!06d]\";"
+echo "print \"pressure->scale=[pressure->scale]\";"
+echo "print \"pressure->reference=[pressure->reference]\";"
+echo "print \"pressure->width=[pressure->width]\";"
+echo "print \"pressure->percentConfidence=[pressure->percentConfidence] [pressure->percentConfidence->units]\";"
+echo "print \"pressure->percentConfidence->code=[pressure->percentConfidence->code!06d]\";"
+echo "print \"pressure->percentConfidence->scale=[pressure->percentConfidence->scale]\";"
+echo "print \"pressure->percentConfidence->reference=[pressure->percentConfidence->reference]\";"
+echo "print \"pressure->percentConfidence->width=[pressure->percentConfidence->width]\";"
+echo "\\endverbatim\\n"
+
+echo "The result is:"
+
+echo "\\verbatim"
+cat > rules_file <<EOF
+set unpack=1;
+print "pressure=[pressure] [pressure->units]";
+print "pressure->code=[pressure->code!06d]";
+print "pressure->scale=[pressure->scale]";
+print "pressure->reference=[pressure->reference]";
+print "pressure->width=[pressure->width]";
+print "pressure->percentConfidence=[pressure->percentConfidence] [pressure->percentConfidence->units]";
+print "pressure->percentConfidence->code=[pressure->percentConfidence->code!06d]";
+print "pressure->percentConfidence->scale=[pressure->percentConfidence->scale]";
+print "pressure->percentConfidence->reference=[pressure->percentConfidence->reference]";
+print "pressure->percentConfidence->width=[pressure->percentConfidence->width]";
+EOF
+
+echo ">bufr_filter rules_file ../data/bufr/syno_1.bufr"
+
+./bufr_filter rules_file ../data/bufr/syno_1.bufr
+
+echo "\\endverbatim\\n"
+
+# Access by rank
+
+echo "-# To <u>access keys by <b>rank</b></u> (i.e. by their occurrence in the message) use the # operator. \\n"
+echo " The example below prints the value from the 4th occurrence of key <i>pressure</i> from a TEMP bufr message. "
+echo " As a reference, we also print all the pressure values found in the message.\\n"
+
+echo "\\verbatim"
+echo "set unpack=1;"
+echo "print \"pressure=[#4#pressure] [#4#pressure->units]\";"
+echo "print \"pressure=[pressure]\";"
+echo "\\endverbatim\\n"
+
+echo "The result is:"
+
+echo "\\verbatim"
+cat > rules_file <<EOF
+set unpack=1;
+print "pressure=[#4#pressure] [#4#pressure->units]";
+print "pressure=[pressure]";
+EOF
+
+echo ">bufr_filter rules_file ../data/bufr/temp_101.bufr"
+
+./bufr_filter rules_file ../data/bufr/temp_101.bufr
+
+echo "\\endverbatim\\n"
+
+# Access by condition
+
+echo "-# It is possible to <u>access elements by <b>conditions</b></u> imposed on coordinate descriptors. \\n"
+echo " The example below prints the temperature values on temperature significant levels from a TEMP bufr message."
+echo " For temperature significant levels the key <i>verticalSoundingSignificance</i>=4 and this"
+echo " is what we use in the condition:  \\n"
+
+echo "\\verbatim"
+echo "set unpack=1;"
+echo "print \"[/verticalSoundingSignificance=4/airTemperature]\";"
+echo "\\endverbatim\\n"
+
+echo "The result is:"
+
+echo "\\verbatim"
+
+cat > rules_file <<EOF
+set unpack=1;
+print "[/verticalSoundingSignificance=4/airTemperature]";
+EOF
+
+echo ">bufr_filter rules_file ../data/bufr/temp_101.bufr"
+
+./bufr_filter rules_file ../data/bufr/temp_101.bufr
+
+echo "\\endverbatim\\n"
+
+
+# Access by condition 2
+
+echo "-# Another example for accessing keys by condition is to read scatterometer data."
+echo "File asca_139.bufr contains a single message with 2016 subsets in a compressed form."
+echo "In this case each subset has exactly the same structure: they store one location with"
+echo "several beams and one backscatter value in each beam. To print the backScatter values for beamIdentifier=2 from all the subsets" 
+echo "we can simply define the condition like this: \\n"
+
+echo "\\verbatim"
+echo "set unpack=1;"
+echo "print \"/beamIdentifier=2/backscatter=[/beamIdentifier=2/backscatter]\";"
+echo "\\endverbatim\\n"
+
+echo "The result is:"
+echo "\\verbatim"
+
+cat > rules_file <<EOF
+set unpack=1;
+print "/beamIdentifier=2/backscatter=[/beamIdentifier=2/backscatter]";
+EOF
+
+echo ">bufr_filter rules_file ../data/bufr/asca_139.bufr"
+
+./bufr_filter rules_file ../data/bufr/asca_139.bufr > tmp_file
+head tmp_file
+echo " and many more values ......"
+
+echo "\\endverbatim\\n"
+
+# Accessing subsets
+
+echo "-# Accessing keys by condition provides the means to read individual <b>subsets</b> from uncompressed data."
+echo "File synop_multi_subset.bufr contains a single message with several subsets in an uncompressed form."
+echo "To access a given subset we can simply use key <b>subsetNumber</b> in the filter condition. The example below shows" 
+echo "how to read the blockNumber, stationNumber and airTemperaturefor the first 3 subsets in the message: \\n"
+
+echo "\\verbatim"
+echo "set unpack=1;"
+echo "print \"subsetNumber=1 blockNumber=[/subsetNumber=1/blockNumber] stationNumber=[/subsetNumber=1/stationNumber] airTempearture=[/subsetNumber=1/airTemperature]\";"
+echo "print \"subsetNumber=2 blockNumber=[/subsetNumber=2/blockNumber] stationNumber=[/subsetNumber=2/stationNumber] airTempearture=[/subsetNumber=2/airTemperature]\";"
+echo "print \"subsetNumber=3 blockNumber=[/subsetNumber=3/blockNumber] stationNumber=[/subsetNumber=3/stationNumber] airTempearture=[/subsetNumber=3/airTemperature]\";"
+echo "\\endverbatim\\n"
+
+echo "The result is:"
+echo "\\verbatim"
+
+cat > rules_file <<EOF
+set unpack=1;
+print "subsetNumber=1 blockNumber=[/subsetNumber=1/blockNumber] stationNumber=[/subsetNumber=1/stationNumber] airTempearture=[/subsetNumber=1/airTemperature]";
+print "subsetNumber=2 blockNumber=[/subsetNumber=2/blockNumber] stationNumber=[/subsetNumber=2/stationNumber] airTempearture=[/subsetNumber=2/airTemperature]";
+print "subsetNumber=3 blockNumber=[/subsetNumber=3/blockNumber] stationNumber=[/subsetNumber=3/stationNumber] airTempearture=[/subsetNumber=3/airTemperature]";
+EOF
+
+echo ">bufr_filter rules_file ../data/bufr/synop_multi_subset.bufr"
+
+./bufr_filter rules_file ../data/bufr/synop_multi_subset.bufr > tmp_file
+head tmp_file
+
+echo "\\endverbatim\\n"
+
+rm -f rules_file || true
+rm -f tmp_file || true
+
+
diff --git a/tools/bufr_get.c b/tools/bufr_get.c
index bf81c8b..eb1ee14 100644
--- a/tools/bufr_get.c
+++ b/tools/bufr_get.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -213,3 +213,9 @@ int grib_tool_finalise_action(grib_runtime_options* options)
 
     return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/bufr_index_build.c b/tools/bufr_index_build.c
index 9112db1..8ceae96 100644
--- a/tools/bufr_index_build.c
+++ b/tools/bufr_index_build.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -147,3 +147,9 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     grib_index_delete(idx);
     return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/bufr_ls.c b/tools/bufr_ls.c
index 869f6e6..9164226 100644
--- a/tools/bufr_ls.c
+++ b/tools/bufr_ls.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -373,3 +373,9 @@ int grib_tool_finalise_action(grib_runtime_options* options)
 
     return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/bufr_set.c b/tools/bufr_set.c
index 22f1b0b..2814bf0 100644
--- a/tools/bufr_set.c
+++ b/tools/bufr_set.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -22,12 +22,12 @@ grib_option grib_options[]={
 /*     {"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/l}]=value,key[:{s/d/l}]=value,...",
+        {"w:","key[:{s/d/i}]=value,key[:{s/d/i}]=value,...",
                 "\n\t\tWhere clause.\n\t\tSet is only executed for grib messages matching all the "
                 "key/value constraints.\n\t\tIf a grib message does not match the constraints it is"
                 " copied unchanged\n\t\tto the output_grib_file. This behaviour can be changed "
-                "setting the option -S.\n\t\tFor each key a string (key:s) or a double (key:d) or"
-                " a long (key:l)\n\t\ttype can be defined. Default type is string.\n",0,1,0},
+                "setting the option -S.\n\t\tFor each key a string (key:s), a double (key:d) or"
+                " an integer (key:i)\n\t\ttype can be defined. Default type is string.\n",0,1,0},
         {"q",0,0,1,0,0},
         {"7",0,0,0,1,0},
         {"S",0,0,0,1,0},
@@ -167,3 +167,9 @@ int grib_tool_finalise_action(grib_runtime_options* options)
 
     return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/codes_count.c b/tools/codes_count.c
index 0f9532a..d0f82d5 100644
--- a/tools/codes_count.c
+++ b/tools/codes_count.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/codes_info.c b/tools/codes_info.c
index 3669711..9ef2a19 100644
--- a/tools/codes_info.c
+++ b/tools/codes_info.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -68,7 +68,7 @@ int main( int argc,char* argv[])
 #if GRIB_PTHREADS
         grib_context_log(grib_context_get_default(), GRIB_LOG_DEBUG, "PTHREADS enabled");
 #endif
-        if ((path=getenv("ECCODES_DEFINITION_PATH")) != NULL) {
+        if ((path=codes_getenv("ECCODES_DEFINITION_PATH")) != NULL) {
             printf("Definition files path from environment variable");
             printf(" ECCODES_DEFINITION_PATH=%s\n",path);
         } else {
@@ -77,7 +77,7 @@ int main( int argc,char* argv[])
         }
         printf("\n");
 
-        if ((path=getenv("ECCODES_SAMPLES_PATH")) != NULL) {
+        if ((path=codes_getenv("ECCODES_SAMPLES_PATH")) != NULL) {
             printf("SAMPLES path from environment variable");
             printf(" ECCODES_SAMPLES_PATH=%s\n",path);
         } else {
@@ -92,7 +92,7 @@ int main( int argc,char* argv[])
         printf("%d.%d.%d ",major,minor,revision);
 
     if (print_flags & INFO_PRINT_DEFINITION_PATH) {
-        if ((path=getenv("ECCODES_DEFINITION_PATH")) != NULL) {
+        if ((path=codes_getenv("ECCODES_DEFINITION_PATH")) != NULL) {
             printf("%s",path);
         } else {
             printf("%s",ECCODES_DEFINITION_PATH);
@@ -100,7 +100,7 @@ int main( int argc,char* argv[])
     }
 
     if (print_flags & INFO_PRINT_SAMPLES_PATH) {
-        if ((path=getenv("ECCODES_SAMPLES_PATH")) != NULL) {
+        if ((path=codes_getenv("ECCODES_SAMPLES_PATH")) != NULL) {
             printf("%s",path);
         } else {
             printf("%s",ECCODES_SAMPLES_PATH);
diff --git a/tools/codes_parser.c b/tools/codes_parser.c
new file mode 100755
index 0000000..b850091
--- /dev/null
+++ b/tools/codes_parser.c
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2005-2016 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[])
+{
+  int i = 0;
+  int fail = 0;
+
+  grib_context* c = grib_context_get_default();
+  grib_action* a=NULL;
+
+  for(i = 1; i < argc; i++){
+    printf("%s ... ",argv[i]);fflush(stdout);
+    if(!(a=grib_parse_file(c,argv[i])))
+    {
+      fail++;
+      printf("FAILED\n");
+      exit(1);
+    }
+    else
+    {
+      printf("OK\n");
+    }
+  }
+  return fail;
+}
diff --git a/tools/compile.c b/tools/compile.c
index 66e0d0d..3d9383f 100755
--- a/tools/compile.c
+++ b/tools/compile.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/dump.c b/tools/dump.c
index 942baab..b3401a7 100644
--- a/tools/dump.c
+++ b/tools/dump.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/dumpload.c b/tools/dumpload.c
index 642b7fd..64d3bf3 100644
--- a/tools/dumpload.c
+++ b/tools/dumpload.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/gaussian.c b/tools/gaussian.c
index bc62dbd..7b92b30 100644
--- a/tools/gaussian.c
+++ b/tools/gaussian.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/gg_sub_area_check.c b/tools/gg_sub_area_check.c
index 2f0c5e1..1c29a6c 100644
--- a/tools/gg_sub_area_check.c
+++ b/tools/gg_sub_area_check.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/grib2ppm.c b/tools/grib2ppm.c
index 40de6fd..4a6fffc 100644
--- a/tools/grib2ppm.c
+++ b/tools/grib2ppm.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/grib_2_request.c b/tools/grib_2_request.c
index 6e3d84c..8078a26 100644
--- a/tools/grib_2_request.c
+++ b/tools/grib_2_request.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/grib_add.c b/tools/grib_add.c
index eb19e67..9279e27 100644
--- a/tools/grib_add.c
+++ b/tools/grib_add.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/grib_check_gaussian_grid.c b/tools/grib_check_gaussian_grid.c
new file mode 100644
index 0000000..dbbad70
--- /dev/null
+++ b/tools/grib_check_gaussian_grid.c
@@ -0,0 +1,255 @@
+/*
+ * Copyright 2005-2016 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.
+ */
+
+/*
+ *
+ * Description: Check the geometry of a global GRIB field
+ *              which has a Gaussian Grid (reduced or regular)
+ *
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <stdarg.h>
+#include "eccodes.h"
+
+#define STR_EQUAL(s1, s2) (strcmp((s1), (s2)) == 0)
+
+int exit_on_error = 1; /* By default exit if any check fails */
+int error_count = 0;
+
+int DBL_EQUAL(double d1, double d2, double tolerance)
+{
+    return fabs(d1-d2) <= tolerance;
+}
+
+void usage(const char* prog)
+{
+    printf("usage: %s [-f] grib_file grib_file ...\n\n",prog);
+    printf("Check geometry of GRIB fields with a Gaussian Grid.\n");
+    printf("(The grid is assumed to be global)\n\n");
+    printf("Options:\n");
+    printf("-f  Do not exit on first error\n");
+    printf("\n");
+    exit(1);
+}
+
+/* Print an error message and die */
+void error(const char* fmt, ...)
+{
+    va_list list;
+    va_start(list,fmt);
+    vfprintf(stderr, fmt, list);
+    va_end(list);
+
+    ++error_count;
+    if (exit_on_error) {
+        exit(1);
+    }
+}
+
+double get_precision(long edition)
+{
+    if (edition == 1) return 1.0/1000.0;    /* milli degrees */
+    if (edition == 2) return 1.0/1000000.0; /* micro degrees */
+    assert(!"Invalid edition");
+    return 0.0;
+}
+
+int process_file(const char* filename)
+{
+    int err = 0, msg_num = 0;
+    codes_handle *h = NULL;
+
+    FILE* in = fopen(filename, "r");
+    if(!in) {
+        error("ERROR: unable to open input file %s\n",filename);
+    }
+
+    printf("Checking file %s\n", filename);
+
+    while ((h = codes_handle_new_from_file(0, in, PRODUCT_GRIB, &err)) != NULL )
+    {
+        int is_reduced = 0, is_regular = 0, grid_ok = 0;
+        long edition = 0, N = 0, Nj = 0, numberOfDataPoints;
+        size_t len = 0, sizeOfValuesArray = 0;
+        double *lats = NULL;
+        long *pl = NULL;
+        char gridType[128] = {0,};
+        double angular_tolerance, lat1, lon1, lat2, lon2, expected_lon2;
+        double iDirectionIncrementInDegrees;
+
+        if (err != CODES_SUCCESS) CODES_CHECK(err,0);
+        ++msg_num;
+        printf("\tProcessing GRIB message #%d\n", msg_num);
+
+        len = 32;
+        CODES_CHECK(codes_get_string(h,"gridType",gridType,&len),0);
+        is_regular = STR_EQUAL(gridType, "regular_gg");
+        is_reduced = STR_EQUAL(gridType, "reduced_gg");
+        grid_ok = is_regular || is_reduced;
+        if( !grid_ok ) {
+            /*error("ERROR: gridType should be Reduced or Regular Gaussian Grid!\n");*/
+            printf("\tWARNING: gridType should be Reduced or Regular Gaussian Grid! Ignoring\n");
+            codes_handle_delete(h);
+            continue;
+        }
+
+        CODES_CHECK(codes_get_long(h,"edition",&edition),0);
+        CODES_CHECK(codes_get_long(h,"N",&N),0);
+        CODES_CHECK(codes_get_long(h,"Nj",&Nj),0);
+        CODES_CHECK(codes_get_long(h,"numberOfDataPoints",&numberOfDataPoints),0);
+        CODES_CHECK(codes_get_double(h,"latitudeOfFirstGridPointInDegrees", &lat1),0);
+        CODES_CHECK(codes_get_double(h,"longitudeOfFirstGridPointInDegrees",&lon1),0);
+        CODES_CHECK(codes_get_double(h,"latitudeOfLastGridPointInDegrees",  &lat2),0);
+        CODES_CHECK(codes_get_double(h,"longitudeOfLastGridPointInDegrees", &lon2),0);
+        CODES_CHECK(codes_get_double(h,"iDirectionIncrementInDegrees",&iDirectionIncrementInDegrees),0);
+
+        angular_tolerance = get_precision(edition);
+
+        if (N <= 0) {
+            error("ERROR: N should be > 0!\n", N);
+        }
+        if ( Nj != 2*N ) {
+            error("ERROR: Nj is %ld but should be 2*N (%ld)!\n", Nj, 2*N);
+        }
+
+        if (lon1 != 0) {
+            error("ERROR: latitudeOfFirstGridPointInDegrees=%f but should be 0!\n", lon1);
+        }
+        expected_lon2 = 360.0 - 360.0/(4*N);
+
+        /* Check first and last latitudes */
+        if (lat1 != -lat2) {
+            error("First latitude must be = last latitude but opposite in sign: lat1=%f, lat2=%f\n",
+                    lat1, lat2);
+        }
+        /* Note: grib_get_gaussian_latitudes() assumes the 'lats' array has 2N elements! */
+        /*       So do not allocate Nj */
+        lats = (double*)malloc(sizeof(double)* 2*N);
+        CODES_CHECK(codes_get_gaussian_latitudes(N,lats), 0);
+
+        if (!DBL_EQUAL(lats[0], lat1, angular_tolerance)) {
+            error("First latitude %f must be %f\n", lat1, lats[0]);
+        }
+        if (!DBL_EQUAL(lats[Nj-1], lat2, angular_tolerance)) {
+            error("Last latitude %f must be %f\n", lat2, lats[Nj-1]);
+        }
+
+        if (is_reduced) {
+            int pl_sum = 0, max_pl = 0, is_missing_Ni = 0, is_missing_Di = 0;
+            size_t i = 0, pl_len = 0;
+            long is_octahedral = 0;
+            is_missing_Ni = codes_is_missing(h, "Ni", &err);
+            assert(err == CODES_SUCCESS);
+            is_missing_Di = codes_is_missing(h, "iDirectionIncrement", &err);
+            assert(err == CODES_SUCCESS);
+            if (!is_missing_Ni) {
+                error("ERROR: For a reduced gaussian grid Ni should be missing!\n");
+            }
+            if (!is_missing_Di) {
+                error("ERROR: For a reduced gaussian grid iDirectionIncrement should be missing!\n");
+            }
+
+            CODES_CHECK(codes_get_size(h, "pl", &pl_len),0);
+            assert(pl_len>0);
+            if (pl_len != 2*N) {
+                error("ERROR: Length of pl array is %ld but should be 2*N (%ld)!\n", pl_len, 2*N);
+            }
+            pl = (long*)malloc(pl_len*sizeof(long));
+            assert(pl);
+            CODES_CHECK(codes_get_long_array(h, "pl", pl, &pl_len),0);
+            max_pl = pl[0];
+
+            /* Check pl is symmetric */
+            for(i=0; i<pl_len/2; ++i) {
+                const long pl_start = pl[i];
+                const long pl_end = pl[pl_len-1-i];
+                if ( pl_start != pl_end ) {
+                    error("ERROR: pl array is not symmetric: pl[%ld]=%ld, pl[%ld]=%ld!\n",
+                            i, pl_start,  pl_len-1-i, pl_end);
+                }
+            }
+
+            /* Check sum of pl array and total number of points */
+            for(i=0; i<pl_len; ++i) {
+                pl_sum += pl[i];
+                if (pl[i] > max_pl) max_pl = pl[i];
+            }
+            if (pl_sum != numberOfDataPoints) {
+                error("ERROR: Sum of pl array %ld does not match numberOfDataPoints %ld!\n", pl_sum, numberOfDataPoints);
+            }
+            CODES_CHECK(codes_get_long(h,"isOctahedral",&is_octahedral),0);
+            if (is_octahedral) {
+                printf("\tThis is an Octahedral Gaussian grid!\n");
+                expected_lon2 = 360.0 - 360.0/max_pl;
+            }
+            free(pl);
+        }
+
+        if (fabs(lon2 - expected_lon2) > angular_tolerance) {
+            error("ERROR: longitudeOfLastGridPointInDegrees=%f but should be %f!\n", lon2, expected_lon2);
+        }
+
+        CODES_CHECK(codes_get_size(h, "values", &sizeOfValuesArray),0);
+        if (sizeOfValuesArray != numberOfDataPoints) {
+            error("Number of data points %d different from size of values array %d\n",
+                  numberOfDataPoints, sizeOfValuesArray);
+        }
+
+        free(lats);
+        codes_handle_delete(h);
+    }
+    fclose(in);
+    printf("\n");
+    return 0;
+}
+
+int main(int argc, char** argv)
+{
+    int i = 0;
+
+    if (argc < 2)
+    {
+        usage(argv[0]);
+        return 1;
+    }
+
+    for(i=1; i<argc; ++i)
+    {
+        const char* arg = argv[i];
+        if (STR_EQUAL(arg, "-f"))
+        {
+            if (argc < 3) {
+                usage(argv[0]);
+                return 1;
+            }
+            /* Process switches */
+            exit_on_error = 0;
+        }
+        else
+        {
+            /* We have a grib file */
+            process_file(arg);
+        }
+    }
+
+    printf("###############\n");
+    if (error_count == 0)
+    {
+        printf("ALL OK\n");
+    }
+    else
+    {
+        printf("Error count: %d\n", error_count);
+    }
+
+    return 0;
+}
diff --git a/tools/grib_cmp.c b/tools/grib_cmp.c
index 794de03..3deddd0 100644
--- a/tools/grib_cmp.c
+++ b/tools/grib_cmp.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/grib_compare.c b/tools/grib_compare.c
index a873654..0f5cda4 100644
--- a/tools/grib_compare.c
+++ b/tools/grib_compare.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -283,6 +283,26 @@ 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 */
+        struct stat s;
+        grib_tools_file* infile = options->infile; /* the 2nd file in comparison */
+        if (infile) {
+            int stat_val = stat(infile->name, &s);
+            if ( stat_val == 0 && S_ISDIR(s.st_mode)) {
+                /* Take the filename of the 1st file and append to dir */
+                char bufr[2048] = {0,};
+                /* options->infile_extra->name is the 1st file */
+                sprintf(bufr, "%s%c%s",
+                        infile->name, 
+                        get_dir_separator_char(),
+                        extract_filename(options->infile_extra->name));
+                infile->name = strdup(bufr);
+            }
+        }
+    }
+
     return 0;
 }
 
@@ -1079,3 +1099,9 @@ static int compare_handles(grib_handle* h1,grib_handle* h2,grib_runtime_options*
     }
     return err;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/grib_convert.c b/tools/grib_convert.c
index 75660bd..54bc958 100644
--- a/tools/grib_convert.c
+++ b/tools/grib_convert.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -202,3 +202,9 @@ void grib_tool_print_key_values(grib_runtime_options* options,grib_handle* h) {
 int grib_tool_finalise_action(grib_runtime_options* options) {
   return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/grib_copy.c b/tools/grib_copy.c
index 947cd80..e0842a2 100644
--- a/tools/grib_copy.c
+++ b/tools/grib_copy.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -28,23 +28,25 @@ grib_option grib_options[]={
         {"q",0,0,1,0,0},
         {"p:",0,0,1,1,0},
         {"P:",0,0,0,1,0},
-        {"w:","key[:{s/d/l}]=value,key[:{s/d/l}]=value,...","\n\t\tWhere clause."
-                "\n\t\tOnly grib messages matching the key/value constraints are "
-                "copied to the\n\t\toutput_grib_file.\n\t\tFor each key a string (key:s) or a "
-                "double (key:d) or a long (key:l)\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},
-                {"M",0,0,0,1,0},
-                {"U",0,0,1,0,0},
-                {"H",0,0,1,0,0},
-                {"T:",0,0,0,1,0},
-                {"S",0,0,1,0,0},
-                {"g",0,0,0,1,0},
-                {"G",0,0,0,1,0},
-                {"7",0,0,0,1,0},
-                {"v",0,0,0,1,0}
+        {"w:","key[:{s/d/i}]{=/!=}value,key[:{s/d/i}]=value,...","\n\t\tWhere clause."
+             "\n\t\tOnly grib messages matching the key/value constraints are "
+             "copied to the\n\t\toutput_grib_file."
+             "\n\t\tA valid constraint is of type key=value or key!=value."
+             "\n\t\tFor each key a string (key:s), a "
+             "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},
+        {"M",0,0,0,1,0},
+        {"U",0,0,1,0,0},
+        {"H",0,0,1,0,0},
+        {"T:",0,0,0,1,0},
+        {"S",0,0,1,0,0},
+        {"g",0,0,0,1,0},
+        {"G",0,0,0,1,0},
+        {"7",0,0,0,1,0},
+        {"v",0,0,0,1,0}
 };
 
 int grib_options_count=sizeof(grib_options)/sizeof(grib_option);
@@ -128,3 +130,9 @@ int grib_tool_finalise_action(grib_runtime_options* options)
        fclose(options->outfile->file); */
     return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/grib_corruption_check.c b/tools/grib_corruption_check.c
index b4a87ce..ffd6752 100644
--- a/tools/grib_corruption_check.c
+++ b/tools/grib_corruption_check.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/grib_count.c b/tools/grib_count.c
index ab238f8..3067835 100644
--- a/tools/grib_count.c
+++ b/tools/grib_count.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/grib_debug.c b/tools/grib_debug.c
index 2fce598..7e976a0 100644
--- a/tools/grib_debug.c
+++ b/tools/grib_debug.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -75,3 +75,9 @@ void grib_tool_print_key_values(grib_runtime_options* options,grib_handle* h) {
 int grib_tool_finalise_action(grib_runtime_options* options) {
   return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/grib_diff.c b/tools/grib_diff.c
index 0cf8147..aa4c85d 100644
--- a/tools/grib_diff.c
+++ b/tools/grib_diff.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/grib_distance.c b/tools/grib_distance.c
index 424dba9..b444bfd 100644
--- a/tools/grib_distance.c
+++ b/tools/grib_distance.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/grib_dump.c b/tools/grib_dump.c
index 2754ed7..4fd22c1 100644
--- a/tools/grib_dump.c
+++ b/tools/grib_dump.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -209,3 +209,9 @@ int grib_tool_finalise_action(grib_runtime_options* options)
 {
     return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/grib_dump.sh b/tools/grib_dump.sh
index e5f845a..2b0239d 100755
--- a/tools/grib_dump.sh
+++ b/tools/grib_dump.sh
@@ -16,9 +16,9 @@ echo "\\verbatim "
 echo "> grib_dump -D ../data/regular_latlon_surface.grib1"
 echo "\\endverbatim\\n"
 
-echo "-# To obtain a C code example from a grib file.\\n"
-echo "\\code "
-echo ">grib_dump -C ../data/regular_latlon_surface.grib1"
-./grib_dump -C ../data/regular_latlon_surface.grib1
-echo "\\endcode\\n"
+#echo "-# To obtain a C code example from a grib file.\\n"
+#echo "\\code "
+#echo ">grib_dump -C ../data/regular_latlon_surface.grib1"
+#./grib_dump -C ../data/regular_latlon_surface.grib1
+#echo "\\endcode\\n"
 
diff --git a/tools/grib_error.c b/tools/grib_error.c
index dc066eb..62b960e 100644
--- a/tools/grib_error.c
+++ b/tools/grib_error.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/grib_filter.c b/tools/grib_filter.c
index 5998721..ac5c747 100644
--- a/tools/grib_filter.c
+++ b/tools/grib_filter.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -32,7 +32,8 @@ grib_option grib_options[]={
     {"v",0,0,0,1,0}
 };
 char* grib_tool_description="Apply the rules defined in rules_file to each grib "
-        "message\n\tin the grib files provided as arguments.";
+   "message\n\tin the grib files provided as arguments.\n\t"
+   "If you specify '-' (a single dash) for the rules_file, the rules will be read from standard input.";
 char* grib_tool_name="grib_filter";
 char* grib_tool_usage="[options] rules_file "
         "grib_file grib_file ...";
@@ -113,3 +114,9 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     grib_file_pool_clean();
     return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/grib_filter.h b/tools/grib_filter.h
index ed7f85c..e36d447 100644
--- a/tools/grib_filter.h
+++ b/tools/grib_filter.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/grib_filter.sh b/tools/grib_filter.sh
index 63bd1f5..ec27bad 100755
--- a/tools/grib_filter.sh
+++ b/tools/grib_filter.sh
@@ -105,26 +105,26 @@ echo "\\endverbatim\\n"
 
 echo "-# The switch statement is an enhanced version of the if statement. Its syntax is the following:"
 echo "\\verbatim"
-echo "switch (key1,key2,...,keyn) {"
-echo "    case val11,val12,...,val1n:"
+echo "switch (key1) {"
+echo "    case val1:"
 echo "        # block of rules;"
-echo "    case val21,val22,...,val2n:"
+echo "    case val2:"
 echo "        # block of rules;"
 echo "    default:"
-echo "        # [ block of rules ]"
+echo "        # block of rules"
 echo "}"
 echo "\\endverbatim\\n"
 echo "Each value of each key given as argument to the switch statement is matched against the values specified in the case statements.\\n"
 echo "If there is a match, then the block or rules corresponding to the matching case statement is executed.\\n"
-echo "Otherwise, the default case is executed. The default case is mandatory, even if empty.\\n"
+echo "Otherwise, the default case is executed. The default case is mandatory if the case statements do not cover all the possibilities.\\n"
 echo "The \"~\" operator can be used to match \"anything\".\\n\\n"
 echo "Following is an example showing the use of the switch statement:\\n"
 echo "\\verbatim"
 echo "processing paramId=[paramId] [shortName] [stepType]";
-echo "switch (shortName,indicatorOfParameter) {"
-echo "    case "tp":"
+echo "switch (shortName) {"
+echo "    case "tp" :"
 echo "        set stepType="accum";"
-echo "    case ~,2 :"
+echo "    case "10u" :"
 echo "        set typeOfLevel="surface";"
 echo "    default:"
 echo "}"
diff --git a/tools/grib_gen.c b/tools/grib_gen.c
index 6448067..33530fb 100644
--- a/tools/grib_gen.c
+++ b/tools/grib_gen.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/grib_get.c b/tools/grib_get.c
index 35df966..4bb06fb 100644
--- a/tools/grib_get.c
+++ b/tools/grib_get.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -141,11 +141,12 @@ int grib_tool_init(grib_runtime_options* options)
         if (options->latlon_idx<0){
             min=0;
             options->latlon_idx=0;
-            for (i=1;i<4;i++)
+            for (i=1;i<4;i++) {
                 if (min>options->distances[i]) {
                     min = options->distances[i];
                     options->latlon_idx=i;
                 }
+            }
         }
     }
 
@@ -181,7 +182,7 @@ int grib_tool_new_handle_action(grib_runtime_options* options,grib_handle* h)
         int i;
         if (!n) n=grib_nearest_new(h,&err);
         GRIB_CHECK_NOLINE(err,0);
-        GRIB_CHECK_NOLINE(grib_nearest_find(n,h,lat,lon,mode,
+        GRIB_CHECK_NOLINE(grib_nearest_find(n,h,lat,lon,0,
                 options->lats,options->lons,options->values,
                 options->distances,options->indexes,&size),0);
         min=options->distances[0];
@@ -215,3 +216,9 @@ int grib_tool_finalise_action(grib_runtime_options* options)
 
     return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/grib_get_data.c b/tools/grib_get_data.c
index 4373496..f26c23e 100644
--- a/tools/grib_get_data.c
+++ b/tools/grib_get_data.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -278,3 +278,9 @@ static grib_values* get_key_values(grib_runtime_options* options,grib_handle* h)
     return options->print_keys;
 
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/grib_histogram.c b/tools/grib_histogram.c
index f117fd3..fcafaeb 100644
--- a/tools/grib_histogram.c
+++ b/tools/grib_histogram.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/grib_index_build.c b/tools/grib_index_build.c
index 80d385b..d342dbb 100644
--- a/tools/grib_index_build.c
+++ b/tools/grib_index_build.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -149,3 +149,9 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     grib_index_delete(idx);
     return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/grib_keys.c b/tools/grib_keys.c
index afe9ce7..42ac8be 100644
--- a/tools/grib_keys.c
+++ b/tools/grib_keys.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -181,3 +181,9 @@ void grib_tool_print_key_values(grib_runtime_options* options,grib_handle* h) {
 int grib_tool_finalise_action(grib_runtime_options* options) {
   return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/grib_ls.c b/tools/grib_ls.c
index 2b6e8d7..2cfaa67 100644
--- a/tools/grib_ls.c
+++ b/tools/grib_ls.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -119,12 +119,14 @@ int grib_tool_init(grib_runtime_options* options)
                 options->latlon_mask=strdup(p);
             }
         }
-
     }
 
     if (options->latlon && options->latlon_mask) {
         FILE* f=NULL;
         grib_handle* hh;
+        int idx=0, land_found=0;
+        double min_overall = 0.0;
+        int idx_overall = -1;
         f=fopen(options->latlon_mask,"r");
         if(!f) {
             perror(options->latlon_mask);
@@ -146,12 +148,24 @@ int grib_tool_init(grib_runtime_options* options)
         for (i=0;i<4;i++)
             if (max<options->distances[i]) {max=options->distances[i];}
         min=max;
+        min_overall=max;
+        /* See GRIB-213 */
         for (i=0;i<4;i++) {
+            if (min_overall >= options->distances[i]) { /* find overall min and index ignoring mask */
+                min_overall = options->distances[i];
+                idx_overall = i;
+            }
             if ((min >= options->distances[i]) && (options->mask_values[i] >= 0.5)) {
-                options->latlon_idx=i;
+                land_found=1; /* found at least one point which is land */
                 min = options->distances[i];
+                idx = i;
             }
         }
+        if (land_found) {
+            options->latlon_idx=idx;
+        } else {
+            options->latlon_idx=idx_overall; /* all points were sea, so pick the min overall */
+        }
 
         if (options->latlon_idx<0){
             min=0;
@@ -375,3 +389,10 @@ int grib_tool_finalise_action(grib_runtime_options* options)
 
     return 0;
 }
+
+int grib_no_handle_action(int err)
+{
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/grib_merge.c b/tools/grib_merge.c
index 1459f9c..e53885f 100644
--- a/tools/grib_merge.c
+++ b/tools/grib_merge.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2012 ECMWF.
+ * Copyright 2005-2016 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.
@@ -109,7 +109,6 @@ grib_handle* merge(grib_handle* h1,grib_handle* h2) {
     long i,j,iscan,jscan,Ni,Nj,idj,idi;
     long Ni1,Nj1,Ni2,Nj2;
     grib_handle* h=NULL;
-    grib_context* c;
     int err=0;
     /*
     int dump_flags=   GRIB_DUMP_FLAG_CODED 
@@ -118,7 +117,7 @@ grib_handle* merge(grib_handle* h1,grib_handle* h2) {
                     | GRIB_DUMP_FLAG_READ_ONLY;
 
     */
-    c=grib_context_get_default();
+
     /* same products? */
     if (grib_key_equal(h1,h2,"md5Product",GRIB_TYPE_STRING,&err)==0 && err==0) {
       return NULL;
@@ -243,30 +242,30 @@ grib_handle* merge(grib_handle* h1,grib_handle* h2) {
 
     grib_get_long(h,"numberOfPoints",&n);
     grib_get_double(h,"missingValue",&missingValue);
-    v=grib_context_malloc_clear(h->context,sizeof(double)*n);
+    v=(double*)grib_context_malloc_clear(h->context,sizeof(double)*n);
     for (i=0;i<n;i++) v[i]=1.0;
     sn=n;
     grib_set_double_array(h,"values",v,sn);
     for (i=0;i<n;i++) v[i]=missingValue;
-    lat=grib_context_malloc_clear(h->context,sizeof(double)*n);
-    lon=grib_context_malloc_clear(h->context,sizeof(double)*n);
+    lat=(double*)grib_context_malloc_clear(h->context,sizeof(double)*n);
+    lon=(double*)grib_context_malloc_clear(h->context,sizeof(double)*n);
     sn=n;
     grib_get_double_array(h,"latitudes",lat,&sn);
     grib_get_double_array(h,"longitudes",lon,&sn);
 
     grib_get_long(h1,"numberOfPoints",&n1);
-    v1=grib_context_malloc_clear(h->context,sizeof(double)*n1);
-    lat1=grib_context_malloc_clear(h->context,sizeof(double)*n1);
-    lon1=grib_context_malloc_clear(h->context,sizeof(double)*n1);
+    v1=(double*)grib_context_malloc_clear(h->context,sizeof(double)*n1);
+    lat1=(double*)grib_context_malloc_clear(h->context,sizeof(double)*n1);
+    lon1=(double*)grib_context_malloc_clear(h->context,sizeof(double)*n1);
     sn=n1;
     grib_get_double_array(h1,"latitudes",lat1,&sn);
     grib_get_double_array(h1,"longitudes",lon1,&sn);
     grib_get_double_array(h1,"values",v1,&sn);
 
     grib_get_long(h2,"numberOfPoints",&n2);
-    v2=grib_context_malloc_clear(h->context,sizeof(double)*n2);
-    lat2=grib_context_malloc_clear(h->context,sizeof(double)*n2);
-    lon2=grib_context_malloc_clear(h->context,sizeof(double)*n2);
+    v2=(double*)grib_context_malloc_clear(h->context,sizeof(double)*n2);
+    lat2=(double*)grib_context_malloc_clear(h->context,sizeof(double)*n2);
+    lon2=(double*)grib_context_malloc_clear(h->context,sizeof(double)*n2);
     sn=n2;
     grib_get_double_array(h2,"latitudes",lat2,&sn);
     grib_get_double_array(h2,"longitudes",lon2,&sn);
@@ -326,3 +325,9 @@ int grib_tool_finalise_action(grib_runtime_options* options) {
   }
   return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/grib_moments.c b/tools/grib_moments.c
index 696e80a..43a3679 100644
--- a/tools/grib_moments.c
+++ b/tools/grib_moments.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/grib_nearest_land.c b/tools/grib_nearest_land.c
index 9c07a30..ae0b8dc 100644
--- a/tools/grib_nearest_land.c
+++ b/tools/grib_nearest_land.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/grib_options.c b/tools/grib_options.c
index b6adb94..d761a31 100644
--- a/tools/grib_options.c
+++ b/tools/grib_options.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -30,9 +30,9 @@ grib_options_help grib_options_help_list[] ={
   {"B:","order by directive",
      "\n\t\tOrder by. The output will be ordered according to the order by directive."
      "\n\t\tOrder by example: \"step asc, centre desc\" (step ascending and centre descending)\n"},
-  {"c:","key[:l/d/s/n],key[:l/d/s/n],...",
+  {"c:","key[:i/d/s/n],key[:i/d/s/n],...",
    "\n\t\tOnly the listed keys or namespaces (:n) are compared. The optional letter after the colon is used "
-   "\n\t\tto force the type in the comparison: l->integer, d->float, s->string, n->namespace."
+   "\n\t\tto force the type in the comparison: i->integer, d->float, s->string, n->namespace."
    "\n\t\tSee -a option. Incompatible with -H option.\n"},
   {"d:","value",
    "\n\t\tSet all the data values to \"value\".\n"},
@@ -58,26 +58,26 @@ grib_options_help grib_options_help_list[] ={
    "\n\t\tOutput grib is written to output_grib_file."
    "\n\t\tIf an output grib file is required and -o is not used, the"
    " output grib is written to filtered.out\n"},
-  {"p:","key[:{s/d/l}],key[:{s/d/l}],...",
+  {"p:","key[:{s/d/i}],key[:{s/d/i}],...",
    "\n\t\tDeclaration of keys to print."
-   "\n\t\tFor each key a string (key:s) or a double (key:d) or a long (key:l)"
+   "\n\t\tFor each key a string (key:s), a double (key:d) or an integer (key:i)"
    "\n\t\ttype can be requested. Default type is string.\n"},
   {"q",0,"Quiet.\n"},
   {"r",0,"Repack data. Sometimes after setting some keys involving properties"
          "\n\t\tof the packing algorithm a repacking of data is needed."
          "\n\t\tThis repacking is performed setting this -r option.\n"},
-  {"s:","key[:{s/d/l}]=value,key[:{s/d/l}]=value,...",
+  {"s:","key[:{s/d/i}]=value,key[:{s/d/i}]=value,...",
    "\n\t\tKey/values to set."
-   "\n\t\tFor each key a string (key:s) or a double (key:d) or a long (key:l)"
+   "\n\t\tFor each key a string (key:s), a double (key:d) or an integer (key:i)"
    "\n\t\ttype can be defined. By default the native type is set.\n"},
   {"t",0,"Print type information.\n"},
-  {"w:","key[:{s/d/l}]{=/!=}value,key[:{s/d/l}]{=/!=}value,...",
+  {"w:","key[:{s/d/i}]{=/!=}value,key[:{s/d/i}]{=/!=}value,...",
    "\n\t\tWhere clause."
    "\n\t\tMessages are processed only if they match all the"
    " key/value constraints."
    "\n\t\tA valid constraint is of type key=value or key!=value."
-   "\n\t\tFor each key a string (key:s) or a double (key:d) or"
-   " a long (key:l)\n\t\ttype can be specified. Default type is string.\n"},
+   "\n\t\tFor each key a string (key:s), a double (key:d) or"
+   " an integer (key:i)\n\t\ttype can be specified. Default type is string.\n"},
   {"v",0,"Verbose.\n"},
   {"7",0,"Does not fail when the message has wrong length\n"},
   {"A:","absolute error\n",
@@ -87,7 +87,7 @@ grib_options_help grib_options_help_list[] ={
   {"H",0,"Print octet content in hexadecimal format.\n"},
   {"M",0,"Multi-field support off. Turn off support for multiple fields in single grib message.\n"},
   {"O",0,"Octet mode. WMO documentation style dump.\n"},
-  {"P:","key[:{s/d/l}],key[:{s/d/l}],...",
+  {"P:","key[:{s/d/i}],key[:{s/d/i}],...",
    "\n\t\tAs -p adding the declared keys to the default list.\n"},
   {"R:","key1=relative_error1,key2=relative_error2,...\n",
    "\tCompare floating point values using the relative error as tolerance."
@@ -95,12 +95,14 @@ grib_options_help grib_options_help_list[] ={
 "\n\t\tall=relative_error will compare all the floating point keys using relative_error. Default all=0.\n"},
   {"S",0,"Strict. Only grib messages matching all the constraints are copied to"
    "\n\t\tthe output file\n"},
-  {"T:","T | B | M | A","Message type. T->GTS, B->BUFR, M->METAR (Experimental),A->Any (Experimental). The input file is interpreted according to the message type.\n"},
+  {"T:","T | B | M | A","Message type. T->GTS, B->BUFR, M->METAR (Experimental),A->Any (Experimental).\n\t\t\tThe input file is interpreted according to the message type.\n"},
   {"V",0,"Version.\n"},
   {"W:","width","\n\t\tMinimum width of each column in output. Default is 10.\n"},
   {"X:","offset","\n\t\tInput file offset in bytes. Processing of the input file will start from \"offset\".\n"},
   {"x",0,"Fast parsing option, only headers are loaded.\n"},
-  {"k:","key1,key2,...","\n\t\tSpecify a list of keys to index on. By default the input files are indexed on the MARS keys.\n"}
+  {"k:","key1,key2,...","\n\t\tSpecify a list of keys to index on. By default the input files are indexed on the MARS keys."
+                        "\n\t\tFor each key a string (key:s) or a double (key:d) or an integer (key:i)"
+                        "\n\t\ttype can be requested.\n"}
 
 };
 
diff --git a/tools/grib_packing.c b/tools/grib_packing.c
index 8db74ba..d5fba54 100644
--- a/tools/grib_packing.c
+++ b/tools/grib_packing.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/grib_points.c b/tools/grib_points.c
index 53d1722..ebbb756 100644
--- a/tools/grib_points.c
+++ b/tools/grib_points.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -191,3 +191,9 @@ int grib_tool_finalise_action(grib_runtime_options* options) {
   }
   return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/grib_repair.c b/tools/grib_repair.c
index b6f3ca6..be4dcac 100644
--- a/tools/grib_repair.c
+++ b/tools/grib_repair.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -11,104 +11,101 @@
 #include "grib_api_internal.h"
 
 static void usage(const char* name) {
-	fprintf(stderr,"Usage: %s in out [bad]\n", name);
-	exit(1);
+    fprintf(stderr,"Usage: %s in out [bad]\n", name);
+    exit(1);
 }
 
 #define SIZE 50*1024*1024
 char buffer[SIZE];
 
-int main(int argc,char **argv) {
-
-	FILE* in, *out, *bad;
-	char *cin, *cout, *cbad;
-	
-	size_t data_len = SIZE;
-	long count = 0;
-	unsigned char *data;
-
-
-	if(argc != 3 && argc != 4) usage(argv[0]);
-
-	cin = argv[1];
-	in  = fopen(argv[1],"r");
-	if(!in) {
-		perror(argv[1]);
-		exit(1);
-	}
-
-	cout = argv[2];
-	out = fopen(argv[2],"w");
-	if(!out) {
-		perror(argv[2]);
-		exit(1);
-	}
-
-	if(argc == 4) {
-		cbad = argv[3];
-		bad = fopen(argv[3],"w");
-		if(!bad) {
-			perror(argv[3]);
-			exit(1);
-		}
-	}
-	else {
-		bad = out;
-		cbad = cout;
-	}
-
-	for(;;) {
-		size_t len = SIZE;
-		long ret = wmo_read_grib_from_file(in,buffer,&len);
-		if(ret == GRIB_END_OF_FILE && len == 0) 
-			break;
-
-		printf("GRIB %ld: size: %ld code: %ld (%s)\n", ++count, (long)len, ret, grib_get_error_message(ret));
-
-		switch(ret) {
-
-			case 0:
-				if(fwrite(buffer,1,len,out) != len) {
-					perror(cout);
-					exit(1);
-				}
-				break;
-			
-			case GRIB_WRONG_LENGTH:
-			case GRIB_PREMATURE_END_OF_FILE:
-				fseek(in,-4,SEEK_CUR);
-				memset(buffer + len - 4, '7', 4);
-				len = data_len = SIZE;
-				data      = (unsigned char*)&buffer[0];
-				ret = grib_read_any_from_memory(NULL, &data, &data_len, buffer, &len);
-				printf("   -> GRIB %ld: size: %ld code: %ld (%s)\n", count, (long)len, ret, grib_get_error_message(ret));
-				if(ret == 0) {
-				if(fwrite(buffer,1,len,bad) != len) {
-					perror(cbad);
-					exit(1);
-				}
-				}
-				break;
-		}
-	}
-
-	if(fclose(in)) {
-		perror(argv[1]);
-		exit(1);
-	}
-
-	if(fclose(out)) {
-		perror(argv[2]);
-		exit(1);
-	}
-
-	if(argc == 4) {
-		if(fclose(bad)) {
-			perror(argv[3]);
-			exit(1);
-		}
-	}
-
-	return 0;
+int main(int argc,char **argv)
+{
+    FILE* in, *out, *bad;
+    char *cout, *cbad;
+
+    size_t data_len = SIZE;
+    long count = 0;
+    unsigned char *data;
+
+    if(argc != 3 && argc != 4) usage(argv[0]);
+
+    in  = fopen(argv[1],"r");
+    if(!in) {
+        perror(argv[1]);
+        exit(1);
+    }
+
+    cout = argv[2];
+    out = fopen(argv[2],"w");
+    if(!out) {
+        perror(argv[2]);
+        exit(1);
+    }
+
+    if(argc == 4) {
+        cbad = argv[3];
+        bad = fopen(argv[3],"w");
+        if(!bad) {
+            perror(argv[3]);
+            exit(1);
+        }
+    }
+    else {
+        bad = out;
+        cbad = cout;
+    }
+
+    for(;;) {
+        size_t len = SIZE;
+        long ret = wmo_read_grib_from_file(in,buffer,&len);
+        if(ret == GRIB_END_OF_FILE && len == 0)
+            break;
+
+        printf("GRIB %ld: size: %ld code: %ld (%s)\n", ++count, (long)len, ret, grib_get_error_message(ret));
+
+        switch(ret) {
+
+        case 0:
+            if(fwrite(buffer,1,len,out) != len) {
+                perror(cout);
+                exit(1);
+            }
+            break;
+
+        case GRIB_WRONG_LENGTH:
+        case GRIB_PREMATURE_END_OF_FILE:
+            fseek(in,-4,SEEK_CUR);
+            memset(buffer + len - 4, '7', 4);   /* add in 7777 at end */
+            len = data_len = SIZE;
+            data = (unsigned char*)&buffer[0];
+            ret = grib_read_any_from_memory(NULL, &data, &data_len, buffer, &len);
+            printf("   -> GRIB %ld: size: %ld code: %ld (%s)\n", count, (long)len, ret, grib_get_error_message(ret));
+            if(ret == 0) {
+                if(fwrite(buffer,1,len,bad) != len) {
+                    perror(cbad);
+                    exit(1);
+                }
+            }
+            break;
+        }
+    }
+
+    if(fclose(in)) {
+        perror(argv[1]);
+        exit(1);
+    }
+
+    if(fclose(out)) {
+        perror(argv[2]);
+        exit(1);
+    }
+
+    if(argc == 4) {
+        if(fclose(bad)) {
+            perror(argv[3]);
+            exit(1);
+        }
+    }
+
+    return 0;
 }
-
diff --git a/tools/grib_set.c b/tools/grib_set.c
index 1bad8fb..b98919b 100644
--- a/tools/grib_set.c
+++ b/tools/grib_set.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -22,12 +22,14 @@ grib_option grib_options[]={
         /*{"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/l}]=value,key[:{s/d/l}]=value,...",
+        {"w:","key[:{s/d/i}]{=/!=}value,key[:{s/d/i}]=value,...",
                 "\n\t\tWhere clause.\n\t\tSet is only executed for grib messages matching all the "
                 "key/value constraints.\n\t\tIf a grib message does not match the constraints it is"
                 " copied unchanged\n\t\tto the output_grib_file. This behaviour can be changed "
-                "setting the option -S.\n\t\tFor each key a string (key:s) or a double (key:d) or"
-                " a long (key:l)\n\t\ttype can be defined. Default type is string.\n",0,1,0},
+                "setting the option -S."
+                "\n\t\tA valid constraint is of type key=value or key!=value."
+                "\n\t\tFor each key a string (key:s), a double (key:d) or"
+                " an integer (key:i)\n\t\ttype can be defined. Default type is string.\n",0,1,0},
         {"q",0,0,1,0,0},
         {"7",0,0,0,1,0},
         {"S",0,0,0,1,0},
@@ -100,7 +102,7 @@ int grib_tool_new_file_action(grib_runtime_options* options,grib_tools_file* fil
 
 int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h)
 {
-    int i=0;
+	size_t i=0;
     int err=0;
 
     if (!options->skip) {
@@ -168,3 +170,9 @@ int grib_tool_finalise_action(grib_runtime_options* options)
 
     return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/grib_to_json.c b/tools/grib_to_json.c
index 3f38dc9..bf288d5 100644
--- a/tools/grib_to_json.c
+++ b/tools/grib_to_json.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/grib_to_netcdf.c b/tools/grib_to_netcdf.c
index fa5261a..24d6cbe 100644
--- a/tools/grib_to_netcdf.c
+++ b/tools/grib_to_netcdf.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -1565,7 +1565,10 @@ static int _cube_position(const hypercube *h, const request *r, boolean remove_h
     return (ok == c) ? index : -1;
 }
 
-static void cube_indexes(const hypercube *h, request *r, int *indexes, int size)
+static void cube_indexes(
+        const hypercube *h, request *r,
+        char** times_array, size_t times_array_size,
+        int *indexes, int size)
 {
     request *cube = h->cube;
     int c = count_axis(h);
@@ -1592,11 +1595,28 @@ static void cube_indexes(const hypercube *h, request *r, int *indexes, int size)
         int k = 0;
         int count = count_values(cube, axis);
         int last = h->index_cache[i];
+        const boolean is_time_axis = (strcmp(axis, "time")==0);
+        if (is_time_axis) {
+            Assert(times_array);
+            Assert(times_array_size == count);
+        }
 
         for(k = 0; k < count; k++)
         {
             j = (k + last) % count;
-            w = get_value(cube, axis, j);
+            if (is_time_axis) {
+                /* GRIB-792: use fast lookup */
+                Assert( j >=0 && j < times_array_size );
+                w = times_array[j];
+                /* For testing:
+                 * Assert( strcmp(w, get_value(cube, axis, j))==0 );
+                 * */
+            }
+            else {
+                /* slow access method */
+                w = get_value(cube, axis, j);
+            }
+
             if(h->compare ? h->compare[i](w, v) : (w == v))
             {
                 index += j * n;
@@ -1767,7 +1787,7 @@ static hypercube *new_simple_hypercube_from_mars_request(const request *r)
 /* Todo:
  - BUILD A TEST SUITE !!
  - Print usage in log file
- - consider FCMONTH and CLimatolofy
+ - consider FCMONTH and Climatology
  - Build logic to create validationtime when only one of DATE or TIME or STEP have multiple values:
  for example: date=-1, time=12, step=24/48
  - parametrise the type of data for each axis (function fill_netcdf_dimensions & define_netcdf_dimensions)
@@ -1940,6 +1960,15 @@ static void validation_time(request *r)
     if(ndate)
     {
         const char* p = get_value(r, "date", 0);
+        const char* marsClass = get_value(r, "class", 0);
+        if (eq_string(marsClass, "s2")) {
+            /* S2S Data. See GRIB-699 and GRIB-762 */
+            const char* hdate = get_value(r, "hdate", 0);
+            grib_context_log(ctx, GRIB_LOG_DEBUG, "grib_to_netcdf: S2S Data");
+            if (hdate) {
+                p = hdate; /* This is a hindcast */
+            }
+        }
         if(is_number(p))
             date = atol(p);
         else
@@ -2070,7 +2099,6 @@ static void check_err(const int stat, const int line, const char *file)
 #define DIM_ID 1
 static int set_dimension(int ncid, const char *name, int n, int xtype, const char *units, const char *long_name)
 {
-
     int var_id = 0;
     int stat = 0;
     int dim_id = DIM_ID;
@@ -2146,6 +2174,8 @@ static int def_latlon(int ncid, fieldset *fs)
     /* g->purge_header = TRUE; */
     release_field(g);
 
+    (void)var_id; /* suppress gcc warning */
+
     return e;
 }
 
@@ -2378,29 +2408,33 @@ static int compute_scale(dataset_t *subset)
 static int nc_put_att_type(int ncid, int varid, const char *name, nc_type nctype, int n, double value)
 {
     int r = 0;
-    unsigned char val_uchar = (unsigned char) value;
-    short int val_short = (short int) value;
-    int val_int = (int) value;
-    float val_flt = (float) value;
-    double val_dbl = (double) value;
-
     switch(nctype)
     {
-    case NC_BYTE:
+    case NC_BYTE: {
+        unsigned char val_uchar = (unsigned char) value;
         r = nc_put_att_uchar(ncid, varid, name, nctype, n, &val_uchar);
         break;
-    case NC_SHORT:
+    }
+    case NC_SHORT: {
+        short int val_short = (short int) value;
         r = nc_put_att_short(ncid, varid, name, nctype, n, &val_short);
         break;
-    case NC_INT:
+    }
+    case NC_INT: {
+        int val_int = (int) value;
         r = nc_put_att_int(ncid, varid, name, nctype, n, &val_int);
         break;
-    case NC_FLOAT:
+    }
+    case NC_FLOAT: {
+        float val_flt = (float) value;
         r = nc_put_att_float(ncid, varid, name, nctype, n, &val_flt);
         break;
-    case NC_DOUBLE:
+    }
+    case NC_DOUBLE: {
+        double val_dbl = (double) value;
         r = nc_put_att_double(ncid, varid, name, nctype, n, &val_dbl);
         break;
+    }
     default:
         grib_context_log(ctx, GRIB_LOG_ERROR, "nc_put_att_type(...): Unknown netcdf type '%d'", nctype);
         break;
@@ -2602,6 +2636,38 @@ static void scale(double *vals, long n, void *data, dataset_t *g)
     }
 }
 
+/* Return array of strings which are the "time" values */
+static char** create_times_array(const request* cube, size_t* size)
+{
+    char** result = NULL;
+    const char *time_axis ="time"; /* special case */
+    parameter *the_param = find_parameter(cube, time_axis);
+    *size = 0;
+    if (the_param) {
+        size_t i=0, num_values=0;
+        value* va = NULL;
+
+        if(!the_param->count)
+            count_values(cube, time_axis);
+
+        /* Go thru all values to count how many there are */
+        va = the_param->values;
+        while(va) {
+            ++num_values;
+            va = va->next;
+        }
+        /* Create and populate array */
+        result = (char**) grib_context_malloc(ctx, sizeof(char*) * num_values);
+        va = the_param->values;
+        while(va) {
+            result[i++] = va->name;
+            va = va->next;
+        }
+        *size = num_values;
+    }
+    return result;
+}
+
 static int put_data(hypercube *h, int ncid, const char *name, dataset_t *subset)
 {
     int i = 0;
@@ -2610,6 +2676,8 @@ static int put_data(hypercube *h, int ncid, const char *name, dataset_t *subset)
     int naxis = count_axis(h);
     size_t start[NC_MAX_DIMS];
     size_t count[NC_MAX_DIMS];
+    char** times_array = NULL;
+    size_t times_array_size = 0;
     fieldset *fs = subset->fset;
     field *f = get_field(fs, 0, expand_mem);
 
@@ -2650,6 +2718,10 @@ static int put_data(hypercube *h, int ncid, const char *name, dataset_t *subset)
     stat = nc_inq_varid(ncid, name, &dataid);
     check_err(stat, __LINE__, __FILE__);
 
+    /* GRIB-792: Build fast array storing values for the "time" axis. */
+    /* This is for performance reasons */
+    times_array = create_times_array(h->cube, &times_array_size);
+
     for(i = 0; i < fs->count; i++)
     {
         field *g = get_field(fs, i, expand_mem);
@@ -2722,7 +2794,7 @@ static int put_data(hypercube *h, int ncid, const char *name, dataset_t *subset)
                 exit(1);
             }
 
-            cube_indexes(h, r, idx, idxsize);
+            cube_indexes(h, r, times_array, times_array_size, idx, idxsize);
             for(j = 0; j < naxis; ++j)
                 start[naxis - j - 1] = idx[j];
 
@@ -2735,7 +2807,9 @@ static int put_data(hypercube *h, int ncid, const char *name, dataset_t *subset)
         /* g->purge_header = TRUE; */
         release_field(g);
     }
+
     grib_context_free(ctx, vscaled);
+    grib_context_free(ctx, times_array);
     return 0;
 }
 
@@ -3793,13 +3867,14 @@ struct KindValue {
 int main(int argc, char *argv[])
 {
     int i, ret = 0;
+
     /* GRIB-413: Collect all program arguments into a string */
     for (i=0; i<argc; ++i) {
         strcat(argvString, argv[i]);
         if (i != argc-1) strcat(argvString, " ");
     }
-
     ret = grib_tool(argc, argv);
+
     return ret;
 }
 
@@ -4093,6 +4168,7 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     remove_param(data_r, (void *) user_r, "ignore");
     remove_param(data_r, (void *) user_r, "split");
     print_ignored_keys(stdout, user_r);
+
     dims = new_simple_hypercube_from_mars_request(data_r);
 
     /* In case there is only 1 DATE+TIME+STEP, set at least 1 time as axis */
@@ -4155,6 +4231,13 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
+int grib_no_handle_action(int err)
+{
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
+
 #else
 #include <stdio.h>
 #include <stdlib.h>
@@ -4163,9 +4246,7 @@ int main(int argc, char** argv)
     printf("\n");
     printf("grib_to_netcdf:\n");
     printf("\n");
-    printf(" GRIB API was not compiled with NETCDF enabled\n");
-    printf(" Please rerun configure with --with-netcdf=PATH_TO_NETCDF_INSTALLATION\n");
-    printf(" and re-install the software.\n");
+    printf(" ecCodes was not compiled with NETCDF enabled\n");
     printf("\n");
     exit(1);
 }
diff --git a/tools/grib_to_netcdf.sh b/tools/grib_to_netcdf.sh
new file mode 100755
index 0000000..afe77bc
--- /dev/null
+++ b/tools/grib_to_netcdf.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+set -e
+
+echo "-# Produce a NetCDF file from grib edition 1"
+echo "\\verbatim"
+echo ">grib_to_netcdf -o output.nc input.grib1"
+echo "\\endverbatim"
+
+echo "-# If your grib file has analysis and 6-hour forecast, then ignore keys 'type' and 'step'. Thus type=an/fc and step=00/06 will not be considered as netcdf dimensions."
+echo "\\verbatim"
+echo ">grib_to_netcdf -I type,step -o output.nc input.grib"
+echo "\\endverbatim"
+
+echo "-# Do not use time of validity. If time of validity is used, it means the 1D time coordinate is considered as date+time+step, otherwise 3 different dimensions are created."
+echo "-# The default behaviour is to use the time of validity."
+echo "\\verbatim"
+echo ">grib_to_netcdf -T -o output.nc input.grib"
+echo "\\endverbatim"
+
+echo "-# Produce NetCDF with data type of FLOAT (32bit floating point, for higher precision)."
+echo "-# Note these types were chosen to provide a reasonably wide range of trade-offs between data precision and number of bits required for each value"
+echo "\\verbatim"
+echo ">grib_to_netcdf -D NC_FLOAT -o output.nc input.grib"
+echo "\\endverbatim"
diff --git a/tools/grib_tools.c b/tools/grib_tools.c
index 7dbb7ad..67e0d4a 100644
--- a/tools/grib_tools.c
+++ b/tools/grib_tools.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -24,6 +24,12 @@
 #include "jasper/jasper.h"
 #endif
 
+#ifdef ENABLE_FLOATING_POINT_EXCEPTIONS
+#define _GNU_SOURCE
+#include <fenv.h>
+int feenableexcept(int excepts);
+#endif
+
 GRIB_INLINE static int grib_inline_strcmp(const char* a,const char* b) {
     if (*a != *b) return 1;
     while((*a!=0 && *b!=0) &&  *(a) == *(b) ) {a++;b++;}
@@ -139,6 +145,10 @@ int grib_tool(int argc, char **argv)
     grib_context* c=grib_context_get_default();
     options.context=c;
 
+#ifdef ENABLE_FLOATING_POINT_EXCEPTIONS
+    feenableexcept(FE_ALL_EXCEPT & ~FE_INEXACT);
+#endif
+
     if (getenv("DOXYGEN_USAGE") && argc==1 ) usage_doxygen();
 
     grib_get_runtime_options(argc,argv,&options);
@@ -218,8 +228,7 @@ static int grib_tool_with_orderby(grib_runtime_options* options)
         options->error=err;
 
         if (!h) {
-            fprintf(dump_file,"\t\t*** unable to read message ***\n");
-            if (options->fail || err==GRIB_WRONG_LENGTH) GRIB_CHECK_NOLINE(err,0);
+            grib_no_handle_action(err);
 
             failed=(grib_failed*)grib_context_malloc_clear(c,sizeof(grib_failed));
             failed->count=infile->handle_count;
@@ -263,6 +272,7 @@ char iobuf[1024*1024];
 static int grib_tool_without_orderby(grib_runtime_options* options)
 {
     int err=0;
+    /*int nofail=0;*/
     grib_failed *failed=NULL,*p=NULL;
     grib_handle* h=NULL;
     grib_context* c=NULL;
@@ -306,6 +316,7 @@ static int grib_tool_without_orderby(grib_runtime_options* options)
         infile->filter_handle_count=0;
 
         grib_tool_new_file_action(options,infile);
+        /*nofail=grib_options_on("f");*/
 
         while(!options->skip_all && ((h = grib_handle_new_from_file_x(c,infile->file,options->mode,
                 options->headers_only,&err))
@@ -315,8 +326,8 @@ static int grib_tool_without_orderby(grib_runtime_options* options)
             options->error=err;
 
             if (!h) {
-                fprintf(dump_file,"\t\t*** unreadable message ***\n");
-                if (options->fail ) GRIB_CHECK_NOLINE(err,0);
+                /* fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n"); */
+                grib_no_handle_action(err);
 
                 failed=(grib_failed*)grib_context_malloc_clear(c,sizeof(grib_failed));
                 failed->count=infile->handle_count;
@@ -367,7 +378,7 @@ static int grib_tool_without_orderby(grib_runtime_options* options)
 
     grib_tool_finalise_action(options);
 
-    return 0;
+    return options->error;
 }
 
 static int navigate(grib_field_tree* fields,grib_runtime_options* options)
@@ -564,7 +575,6 @@ static int scan(grib_context* c,grib_runtime_options* options,const char* dir) {
 static int process(grib_context* c,grib_runtime_options* options,const char* path) {
     struct stat s;
     int stat_val=0;
-    int ioerr=0;
 
 #ifndef ECCODES_ON_WINDOWS
     stat_val = lstat(path,&s);
@@ -573,7 +583,6 @@ static int process(grib_context* c,grib_runtime_options* options,const char* pat
 #endif
 
     if ( stat_val != 0 ) {
-        ioerr=errno;
         grib_context_log(c,(GRIB_LOG_ERROR) | (GRIB_LOG_PERROR),"Cannot stat %s",path);
         return GRIB_IO_PROBLEM;
     }
@@ -611,14 +620,12 @@ static void grib_print_header(grib_runtime_options* options,grib_handle* h)
     size_t strlenkey=0;
     int width;
     int written_to_dump = 0; /* boolean */
-    if (!options->print_keys || options->handle_count!=1)
+    if (options->handle_count!=1)
         return;
 
     grib_tools_set_print_keys(options,h,options->name_space);
 
-    if (options->print_keys
-            && options->verbose
-            && options->print_header) {
+    if (options->verbose && options->print_header) {
         int j=0;
         for (j=0;j<options->print_keys_count;j++) {
             strlenkey=strlen(options->print_keys[j].name);
@@ -944,7 +951,6 @@ void grib_tools_write_message(grib_runtime_options* options, grib_handle* h)
     size_t size;
     grib_file* of = NULL;
     int err = 0;
-    int ioerr = 0;
     char filename[1024] = { 0, };
     Assert(options->outfile!=NULL && options->outfile->name!=NULL);
 
@@ -961,7 +967,6 @@ void grib_tools_write_message(grib_runtime_options* options, grib_handle* h)
     of = grib_file_open(filename, "w", &err);
 
     if (!of || !of->handle) {
-        ioerr = errno;
         grib_context_log(h->context, (GRIB_LOG_ERROR) | (GRIB_LOG_PERROR),
                 "unable to open file %s\n", filename);
         exit(GRIB_IO_PROBLEM);
@@ -969,7 +974,6 @@ void grib_tools_write_message(grib_runtime_options* options, grib_handle* h)
 
     if (options->gts && h->gts_header) {
         if (fwrite(h->gts_header, 1, h->gts_header_len, of->handle) != h->gts_header_len) {
-            ioerr = errno;
             grib_context_log(h->context, (GRIB_LOG_ERROR) | (GRIB_LOG_PERROR),
                     "Error writing GTS header to %s", filename);
             exit(GRIB_IO_PROBLEM);
@@ -977,7 +981,6 @@ void grib_tools_write_message(grib_runtime_options* options, grib_handle* h)
     }
 
     if (fwrite(buffer, 1, size, of->handle) != size) {
-        ioerr = errno;
         grib_context_log(h->context, (GRIB_LOG_ERROR) | (GRIB_LOG_PERROR),
                 "Error writing to %s", filename);
         exit(GRIB_IO_PROBLEM);
@@ -986,7 +989,6 @@ void grib_tools_write_message(grib_runtime_options* options, grib_handle* h)
     if (options->gts && h->gts_header) {
         char gts_trailer[4] = { '\x0D', '\x0D', '\x0A', '\x03' };
         if (fwrite(gts_trailer, 1, 4, of->handle) != 4) {
-            ioerr = errno;
             grib_context_log(h->context, (GRIB_LOG_ERROR) | (GRIB_LOG_PERROR),
                     "Error writing GTS trailer to %s", filename);
             exit(GRIB_IO_PROBLEM);
@@ -1027,3 +1029,4 @@ void grib_tools_write_message(grib_runtime_options* options, grib_handle* h)
 #endif
 
 }
+
diff --git a/tools/grib_tools.h b/tools/grib_tools.h
index f0d6799..d850c05 100644
--- a/tools/grib_tools.h
+++ b/tools/grib_tools.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -194,6 +194,7 @@ int grib_get_runtime_options(int argc,char** argv,grib_runtime_options* options)
 int grib_process_runtime_options(grib_context* c,int argc,char** argv,grib_runtime_options* options);
 void grib_tools_write_message(grib_runtime_options* options, grib_handle* h);
 int grib_tool_new_filename_action(grib_runtime_options* options,const char* file); 
+int grib_no_handle_action(int err);
 
 #endif
 
diff --git a/tools/gts_copy.c b/tools/gts_copy.c
index 1de7d49..9c4dfc3 100644
--- a/tools/gts_copy.c
+++ b/tools/gts_copy.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2012 ECMWF.
+ * Copyright 2005-2016 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.
@@ -31,10 +31,10 @@ grib_option grib_options[]={
     {"q",0,0,1,0,0},
     {"p:",0,0,1,1,0},
     {"P:",0,0,0,1,0},
-    {"w:","key[:{s/d/l}]=value,key[:{s/d/l}]=value,...","\n\t\tWhere clause."
+    {"w:","key[:{s/d/i}]=value,key[:{s/d/i}]=value,...","\n\t\tWhere clause."
      "\n\t\tOnly grib messages matching the key/value constraints are "
-     "copied to the\n\t\toutput_grib_file.\n\t\tFor each key a string (key:s) or a "
-     "double (key:d) or a long (key:l)\n\t\ttype can be defined. Default type "
+     "copied to the\n\t\toutput_grib_file.\n\t\tFor each key a string (key:s), a "
+     "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},
@@ -120,3 +120,9 @@ int grib_tool_finalise_action(grib_runtime_options* options) {
 */
   return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/gts_dump.c b/tools/gts_dump.c
index 5561d05..1068472 100644
--- a/tools/gts_dump.c
+++ b/tools/gts_dump.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2012 ECMWF.
+ * Copyright 2005-2016 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.
@@ -155,3 +155,9 @@ void grib_tool_print_key_values(grib_runtime_options* options,grib_handle* h) {
 int grib_tool_finalise_action(grib_runtime_options* options) {
   return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/gts_filter.c b/tools/gts_filter.c
index 0bc1b23..d70843e 100644
--- a/tools/gts_filter.c
+++ b/tools/gts_filter.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2012 ECMWF.
+ * Copyright 2005-2016 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.
@@ -100,3 +100,9 @@ int grib_tool_finalise_action(grib_runtime_options* options) {
   grib_file_pool_clean();
   return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/gts_get.c b/tools/gts_get.c
index 49b7dcf..c90833a 100644
--- a/tools/gts_get.c
+++ b/tools/gts_get.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2012 ECMWF.
+ * Copyright 2005-2016 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.
@@ -210,3 +210,9 @@ int grib_tool_finalise_action(grib_runtime_options* options) {
   
   return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/gts_ls.c b/tools/gts_ls.c
index 7c86a6d..4710cc9 100644
--- a/tools/gts_ls.c
+++ b/tools/gts_ls.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2012 ECMWF.
+ * Copyright 2005-2016 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.
@@ -71,8 +71,8 @@ int grib_tool_before_getopt(grib_runtime_options* options) {
 }
 
 /*
-The options have been parsed and the structure 
-grib_runtime_options* options has been loaded. 
+The options have been parsed and the structure
+grib_runtime_options* options has been loaded.
 Initialization and startup can be done here
 */
 int grib_tool_init(grib_runtime_options* options) {
@@ -80,15 +80,15 @@ int grib_tool_init(grib_runtime_options* options) {
   size_t size=4;
   int ret=0;
   double min=0,max=0;
-  int i=0,idx=0;
+  int i=0;
   char* p=NULL;
   if (grib_options_on("j")) {
 	options->verbose=0;
 	json=1;
   }
-  
+
   if (options->latlon) {
-	  
+
     lat = strtod(options->latlon,&end);
     if (*end != ',') {
       printf("ERROR: wrong latitude value\n");
@@ -142,7 +142,7 @@ int grib_tool_init(grib_runtime_options* options) {
     options->latlon_idx=-1;
     max=options->distances[0];
     for (i=0;i<4;i++)
-      if (max<options->distances[i]) {max=options->distances[i];idx=i;}
+      if (max<options->distances[i]) {max=options->distances[i];}
     min=max;
     for (i=0;i<4;i++) {
       if ((min >= options->distances[i]) && (options->mask_values[i] >= 0.5)) {
@@ -348,3 +348,9 @@ int grib_tool_finalise_action(grib_runtime_options* options) {
   
   return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/list_keys.c b/tools/list_keys.c
index 55b6570..03066bc 100755
--- a/tools/list_keys.c
+++ b/tools/list_keys.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/load.c b/tools/load.c
index 194a207..3dc9efc 100644
--- a/tools/load.c
+++ b/tools/load.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/load.h b/tools/load.h
index 94e41fd..bd4be11 100644
--- a/tools/load.h
+++ b/tools/load.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/mars_request.c b/tools/mars_request.c
index 2fb626a..6a88b9b 100644
--- a/tools/mars_request.c
+++ b/tools/mars_request.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/metar_dump.c b/tools/metar_dump.c
index e53777a..a19c37b 100644
--- a/tools/metar_dump.c
+++ b/tools/metar_dump.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -168,3 +168,9 @@ void grib_tool_print_key_values(grib_runtime_options* options,grib_handle* h) {
 int grib_tool_finalise_action(grib_runtime_options* options) {
   return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/metar_filter.c b/tools/metar_filter.c
index 0fa4aff..737c470 100644
--- a/tools/metar_filter.c
+++ b/tools/metar_filter.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -100,3 +100,9 @@ int grib_tool_finalise_action(grib_runtime_options* options) {
   grib_file_pool_clean();
   return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/metar_get.c b/tools/metar_get.c
index a0e03a0..c6b8bb8 100644
--- a/tools/metar_get.c
+++ b/tools/metar_get.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -210,3 +210,9 @@ int grib_tool_finalise_action(grib_runtime_options* options) {
   
   return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/metar_ls.c b/tools/metar_ls.c
index f353bc9..13e58e9 100644
--- a/tools/metar_ls.c
+++ b/tools/metar_ls.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -80,7 +80,7 @@ int grib_tool_init(grib_runtime_options* options) {
   size_t size=4;
   int ret=0;
   double min=0,max=0;
-  int i=0,idx=0;
+  int i=0;
   char* p=NULL;
   if (grib_options_on("j")) {
 	options->verbose=0;
@@ -142,7 +142,7 @@ int grib_tool_init(grib_runtime_options* options) {
     options->latlon_idx=-1;
     max=options->distances[0];
     for (i=0;i<4;i++)
-      if (max<options->distances[i]) {max=options->distances[i];idx=i;}
+      if (max<options->distances[i]) {max=options->distances[i];}
     min=max;
     for (i=0;i<4;i++) {
       if ((min >= options->distances[i]) && (options->mask_values[i] >= 0.5)) {
@@ -348,3 +348,9 @@ int grib_tool_finalise_action(grib_runtime_options* options) {
   
   return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/parser.c b/tools/parser.c
deleted file mode 100755
index 4b69585..0000000
--- a/tools/parser.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 2005-2015 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[])
-{
-  int i = 0;
-  int fail = 0;
-
-  grib_context* c = grib_context_get_default();
-  grib_action* a=NULL;
-
-  for(i = 1; i < argc; i++){
-    printf("%s ... ",argv[i]);fflush(stdout);
-    if(!(a=grib_parse_file(c,argv[i])))
-    {
-      fail++;
-      printf("FAILED\n");
-      exit(1);
-    }
-    else
-    {
-      printf("OK\n");
-    }
-  }
-  return fail;
-}
diff --git a/tools/taf_dump.c b/tools/taf_dump.c
index 123e644..dc70f4a 100644
--- a/tools/taf_dump.c
+++ b/tools/taf_dump.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -167,3 +167,9 @@ void grib_tool_print_key_values(grib_runtime_options* options,grib_handle* h) {
 int grib_tool_finalise_action(grib_runtime_options* options) {
   return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/taf_filter.c b/tools/taf_filter.c
index 5e5f230..0a240bd 100644
--- a/tools/taf_filter.c
+++ b/tools/taf_filter.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -100,3 +100,9 @@ int grib_tool_finalise_action(grib_runtime_options* options) {
   grib_file_pool_clean();
   return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/taf_get.c b/tools/taf_get.c
index 272f660..47a01b5 100644
--- a/tools/taf_get.c
+++ b/tools/taf_get.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -210,3 +210,9 @@ int grib_tool_finalise_action(grib_runtime_options* options) {
   
   return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/taf_ls.c b/tools/taf_ls.c
index e3cb562..d6eb376 100644
--- a/tools/taf_ls.c
+++ b/tools/taf_ls.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
@@ -348,3 +348,9 @@ int grib_tool_finalise_action(grib_runtime_options* options) {
   
   return 0;
 }
+
+int grib_no_handle_action(int err) {
+  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+  return 0;
+}
+
diff --git a/tools/test.c b/tools/test.c
index 3062435..6db7374 100644
--- a/tools/test.c
+++ b/tools/test.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/wingetopt.c b/tools/wingetopt.c
index 7b8351a..14b9136 100644
--- a/tools/wingetopt.c
+++ b/tools/wingetopt.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/wingetopt.h b/tools/wingetopt.h
index 672ed2a..a778711 100644
--- a/tools/wingetopt.h
+++ b/tools/wingetopt.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tools/xref.c b/tools/xref.c
index d237351..c7854ba 100755
--- a/tools/xref.c
+++ b/tools/xref.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2015 ECMWF.
+ * Copyright 2005-2016 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.
diff --git a/tox.ini b/tox.ini
new file mode 100644
index 0000000..0a6b35b
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,2 @@
+[flake8]
+ignore = F403
diff --git a/version.sh b/version.sh
index d4409bf..6b0397a 100644
--- a/version.sh
+++ b/version.sh
@@ -1,4 +1,4 @@
-# Copyright 2005-2015 ECMWF.
+# Copyright 2005-2016 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.
@@ -14,7 +14,7 @@ PACKAGE_NAME='eccodes'
 
 # Package version
 ECCODES_MAJOR_VERSION=0
-ECCODES_MINOR_VERSION=10
+ECCODES_MINOR_VERSION=13
 ECCODES_REVISION_VERSION=0
 
 ECCODES_CURRENT=1
diff --git a/windows/msvc/grib_api_lib/grib_api_lib.vcproj b/windows/msvc/grib_api_lib/grib_api_lib.vcproj
index ee46c85..008a97b 100644
--- a/windows/msvc/grib_api_lib/grib_api_lib.vcproj
+++ b/windows/msvc/grib_api_lib/grib_api_lib.vcproj
@@ -385,6 +385,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\..\..\src\action_class_set_sarray.c"
+				>
+			</File>
+			<File
 				RelativePath="..\..\..\src\action_class_switch.c"
 				>
 			</File>
@@ -393,6 +397,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\..\..\src\action_class_transient_darray.c"
+				>
+			</File>
+			<File
 				RelativePath="..\..\..\src\action_class_trigger.c"
 				>
 			</File>
@@ -505,6 +513,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\..\..\src\grib_accessor_class_bufr_extract_subsets.c"
+				>
+			</File>
+			<File
 				RelativePath="..\..\..\src\grib_accessor_class_bufr_group.c"
 				>
 			</File>
@@ -513,6 +525,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\..\..\src\grib_accessor_class_bufr_string_values.c"
+				>
+			</File>
+			<File
 				RelativePath="..\..\..\src\grib_accessor_class_bufrdc_expanded_descriptors.c"
 				>
 			</File>
@@ -525,6 +541,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\..\..\src\grib_accessor_class_check_internal_version.c"
+				>
+			</File>
+			<File
 				RelativePath="..\..\..\src\grib_accessor_class_codeflag.c"
 				>
 			</File>
@@ -853,6 +873,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\..\..\src\grib_accessor_class_gaussian_grid_name.c"
+				>
+			</File>
+			<File
 				RelativePath="..\..\..\src\grib_accessor_class_gds_is_present.c"
 				>
 			</File>
@@ -1037,6 +1061,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\..\..\src\grib_accessor_class_octahedral_gaussian.c"
+				>
+			</File>
+			<File
 				RelativePath="..\..\..\src\grib_accessor_class_octect_number.c"
 				>
 			</File>
@@ -1049,6 +1077,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\..\..\src\grib_accessor_class_pack_bufr_values.c"
+				>
+			</File>
+			<File
 				RelativePath="..\..\..\src\grib_accessor_class_pad.c"
 				>
 			</File>
@@ -1073,6 +1105,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\..\..\src\grib_accessor_class_raw.c"
+				>
+			</File>
+			<File
 				RelativePath="..\..\..\src\grib_accessor_class_reference_value_error.c"
 				>
 			</File>
@@ -1197,6 +1233,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\..\..\src\grib_accessor_class_transient_darray.c"
+				>
+			</File>
+			<File
 				RelativePath="..\..\..\src\grib_accessor_class_uint16.c"
 				>
 			</File>
@@ -1265,6 +1305,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\..\..\src\grib_accessor_classes_hash.c"
+				>
+			</File>
+			<File
 				RelativePath="..\..\..\src\grib_api_version.c"
 				>
 			</File>

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/eccodes.git



More information about the debian-science-commits mailing list